aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorache <ache@ache.one>2019-11-16 01:51:47 +0100
committerache <ache@ache.one>2019-11-16 01:52:15 +0100
commit28ec068988ad78b840fa07f95aaf90b85fd87541 (patch)
tree9fd717ef723a2ba8033c11cee611ab7354f40665
parentBeautifuller (diff)
Update everything
-rw-r--r--package-lock.json9708
-rw-r--r--package.json44
-rw-r--r--public/css/katex.min.css2
-rw-r--r--public/index.html2
-rw-r--r--public/js/hmd.min.js4
-rw-r--r--tohtml.js2
6 files changed, 9736 insertions, 26 deletions
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..34ab2a3
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,9708 @@
+{
+ "name": "markdown-preview",
+ "version": "1.1.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@ava/babel-plugin-throws-helper": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-4.0.0.tgz",
+ "integrity": "sha512-3diBLIVBPPh3j4+hb5lo0I1D+S/O/VDJPI4Y502apBxmwEqjyXG4gTSPFUlm41sSZeZzMarT/Gzovw9kV7An0w==",
+ "dev": true
+ },
+ "@ava/babel-preset-stage-4": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-4.0.0.tgz",
+ "integrity": "sha512-lZEV1ZANzfzSYBU6WHSErsy7jLPbD1iIgAboASPMcKo7woVni5/5IKWeT0RxC8rY802MFktur3OKEw2JY1Tv2w==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
+ "@babel/plugin-proposal-dynamic-import": "^7.5.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
+ "@babel/plugin-transform-dotall-regex": "^7.4.4",
+ "@babel/plugin-transform-modules-commonjs": "^7.5.0"
+ }
+ },
+ "@ava/babel-preset-transform-test-files": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-6.0.0.tgz",
+ "integrity": "sha512-8eKhFzZp7Qcq1VLfoC75ggGT8nQs9q8fIxltU47yCB7Wi7Y8Qf6oqY1Bm0z04fIec24vEgr0ENhDHEOUGVDqnA==",
+ "dev": true,
+ "requires": {
+ "@ava/babel-plugin-throws-helper": "^4.0.0",
+ "babel-plugin-espower": "^3.0.1"
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/core": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz",
+ "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.7.2",
+ "@babel/helpers": "^7.7.0",
+ "@babel/parser": "^7.7.2",
+ "@babel/template": "^7.7.0",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.7.2",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "json5": "^2.1.0",
+ "lodash": "^4.17.13",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz",
+ "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.7.2",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.0.tgz",
+ "integrity": "sha512-k50CQxMlYTYo+GGyUGFwpxKVtxVJi9yh61sXZji3zYHccK9RYliZGSTOgci85T+r+0VFN2nWbGM04PIqwfrpMg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-create-regexp-features-plugin": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz",
+ "integrity": "sha512-pAil/ZixjTlrzNpjx+l/C/wJk002Wo7XbbZ8oujH/AoJ3Juv0iN/UTcPUHXKMFLqsfS0Hy6Aow8M31brUYBlQQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.6.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz",
+ "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.7.0",
+ "@babel/template": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz",
+ "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.0.tgz",
+ "integrity": "sha512-Dv3hLKIC1jyfTkClvyEkYP2OlkzNvWs5+Q8WgPbxM5LMeorons7iPP91JM+DU7tRbhqA1ZeooPaMFvQrn23RHw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.0.tgz",
+ "integrity": "sha512-rXEefBuheUYQyX4WjV19tuknrJFwyKw0HgzRwbkyTbB+Dshlq7eqkWbyjzToLrMZk/5wKVKdWFluiAsVkHXvuQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.7.0",
+ "@babel/helper-simple-access": "^7.7.0",
+ "@babel/helper-split-export-declaration": "^7.7.0",
+ "@babel/template": "^7.7.0",
+ "@babel/types": "^7.7.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
+ "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
+ "dev": true
+ },
+ "@babel/helper-regex": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz",
+ "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.0.tgz",
+ "integrity": "sha512-pHx7RN8X0UNHPB/fnuDnRXVZ316ZigkO8y8D835JlZ2SSdFKb6yH9MIYRU4fy/KPe5sPHDFOPvf8QLdbAGGiyw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.7.0",
+ "@babel/helper-wrap-function": "^7.7.0",
+ "@babel/template": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.0.tgz",
+ "integrity": "sha512-AJ7IZD7Eem3zZRuj5JtzFAptBw7pMlS3y8Qv09vaBWoFsle0d1kAn5Wq6Q9MyBXITPOKnxwkZKoAm4bopmv26g==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz",
+ "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.0.tgz",
+ "integrity": "sha512-sd4QjeMgQqzshSjecZjOp8uKfUtnpmCyQhKQrVJBBgeHAB/0FPi33h3AbVlVp07qQtMD4QgYSzaMI7VwncNK/w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.7.0",
+ "@babel/template": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz",
+ "integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+ "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz",
+ "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==",
+ "dev": true
+ },
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.0.tgz",
+ "integrity": "sha512-ot/EZVvf3mXtZq0Pd0+tSOfGWMizqmOohXmNZg6LNFjHOV+wOPv7BvVYh8oPR8LhpIP3ye8nNooKL50YRWxpYA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-remap-async-to-generator": "^7.7.0",
+ "@babel/plugin-syntax-async-generators": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-dynamic-import": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.0.tgz",
+ "integrity": "sha512-7poL3Xi+QFPC7sGAzEIbXUyYzGJwbc2+gSD0AkiC5k52kH2cqHdqxm5hNFfLW3cRSTcx9bN0Fl7/6zWcLLnKAQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
+ }
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz",
+ "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
+ "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.0.tgz",
+ "integrity": "sha512-3QQlF7hSBnSuM1hQ0pS3pmAbWLax/uGNCbPBND9y+oJ4Y776jsyujG2k0Sn2Aj2a0QwVOiOFL5QVPA7spjvzSA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz",
+ "integrity": "sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-simple-access": "^7.7.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/template": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz",
+ "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz",
+ "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.7.2",
+ "@babel/helper-function-name": "^7.7.0",
+ "@babel/helper-split-export-declaration": "^7.7.0",
+ "@babel/parser": "^7.7.2",
+ "@babel/types": "^7.7.2",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz",
+ "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@concordance/react": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@concordance/react/-/react-2.0.0.tgz",
+ "integrity": "sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1"
+ },
+ "dependencies": {
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ }
+ }
+ },
+ "@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
+ "dev": true,
+ "requires": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
+ "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "2.0.3",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
+ "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
+ "dev": true
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz",
+ "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.3",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@rollup/plugin-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.0.0.tgz",
+ "integrity": "sha512-Z65CtEVWv40+ri4CvmswyhtuUtki9yP5p0UJN/GyCKKyU4jRuDS9CG0ZuV7/XuS7zGkoajyE7E4XBEaC4GW62A==",
+ "dev": true,
+ "requires": {
+ "rollup-pluginutils": "^2.5.0"
+ }
+ },
+ "@sindresorhus/is": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+ "dev": true
+ },
+ "@szmarczak/http-timer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+ "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+ "dev": true,
+ "requires": {
+ "defer-to-connect": "^1.0.1"
+ }
+ },
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
+ "dev": true
+ },
+ "@types/estree": {
+ "version": "0.0.39",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+ "dev": true
+ },
+ "@types/events": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
+ "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
+ "dev": true
+ },
+ "@types/glob": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
+ "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
+ "dev": true,
+ "requires": {
+ "@types/events": "*",
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/minimatch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "12.12.8",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.8.tgz",
+ "integrity": "sha512-XLla8N+iyfjvsa0KKV+BP/iGSoTmwxsu5Ci5sM33z9TjohF72DEz95iNvD6pPmemvbQgxAv/909G73gUn8QR7w==",
+ "dev": true
+ },
+ "@types/normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==",
+ "dev": true
+ },
+ "@types/unist": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz",
+ "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ=="
+ },
+ "abstract-leveldown": {
+ "version": "0.12.4",
+ "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz",
+ "integrity": "sha1-KeGOYy5g5OIh1YECR4UqY9ey5BA=",
+ "dev": true,
+ "requires": {
+ "xtend": "~3.0.0"
+ },
+ "dependencies": {
+ "xtend": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz",
+ "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=",
+ "dev": true
+ }
+ }
+ },
+ "accepts": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "requires": {
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
+ }
+ },
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
+ "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
+ "dev": true
+ },
+ "aggregate-error": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
+ "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==",
+ "dev": true,
+ "requires": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ }
+ },
+ "ajv": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-align": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
+ "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "ansi-escapes": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz",
+ "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.5.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
+ },
+ "ansi-styles": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz",
+ "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==",
+ "dev": true,
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ },
+ "dependencies": {
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ }
+ }
+ },
+ "anymatch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+ "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-differ": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
+ "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+ },
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.7.0"
+ }
+ },
+ "array-iterate": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.3.tgz",
+ "integrity": "sha512-7MIv7HE9MuzfK6B2UnWv07oSHBLOaY1UUXAxZ07bIeRM+4IkPTlveMDs9MY//qvxPZPSvCn2XV4bmtQgSkVodg=="
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
+ "array-uniq": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-2.1.0.tgz",
+ "integrity": "sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ==",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+ "dev": true
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "ava": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/ava/-/ava-2.4.0.tgz",
+ "integrity": "sha512-CQWtzZZZeU2g4StojRv6MO9RIRi4sLxGSB9+3C3hv0ttUEG1tkJLTLyrBQeFS4WEeK12Z4ovE3f2iPVhSy8elA==",
+ "dev": true,
+ "requires": {
+ "@ava/babel-preset-stage-4": "^4.0.0",
+ "@ava/babel-preset-transform-test-files": "^6.0.0",
+ "@babel/core": "^7.6.0",
+ "@babel/generator": "^7.6.0",
+ "@concordance/react": "^2.0.0",
+ "ansi-escapes": "^4.2.1",
+ "ansi-styles": "^4.1.0",
+ "arr-flatten": "^1.1.0",
+ "array-union": "^2.1.0",
+ "array-uniq": "^2.1.0",
+ "arrify": "^2.0.1",
+ "bluebird": "^3.5.5",
+ "chalk": "^2.4.2",
+ "chokidar": "^3.0.2",
+ "chunkd": "^1.0.0",
+ "ci-parallel-vars": "^1.0.0",
+ "clean-stack": "^2.2.0",
+ "clean-yaml-object": "^0.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-truncate": "^2.0.0",
+ "code-excerpt": "^2.1.1",
+ "common-path-prefix": "^1.0.0",
+ "concordance": "^4.0.0",
+ "convert-source-map": "^1.6.0",
+ "currently-unhandled": "^0.4.1",
+ "debug": "^4.1.1",
+ "del": "^4.1.1",
+ "dot-prop": "^5.1.0",
+ "emittery": "^0.4.1",
+ "empower-core": "^1.2.0",
+ "equal-length": "^1.0.0",
+ "escape-string-regexp": "^2.0.0",
+ "esm": "^3.2.25",
+ "figures": "^3.0.0",
+ "find-up": "^4.1.0",
+ "get-port": "^5.0.0",
+ "globby": "^10.0.1",
+ "ignore-by-default": "^1.0.0",
+ "import-local": "^3.0.2",
+ "indent-string": "^4.0.0",
+ "is-ci": "^2.0.0",
+ "is-error": "^2.2.2",
+ "is-observable": "^2.0.0",
+ "is-plain-object": "^3.0.0",
+ "is-promise": "^2.1.0",
+ "lodash": "^4.17.15",
+ "loud-rejection": "^2.1.0",
+ "make-dir": "^3.0.0",
+ "matcher": "^2.0.0",
+ "md5-hex": "^3.0.1",
+ "meow": "^5.0.0",
+ "micromatch": "^4.0.2",
+ "ms": "^2.1.2",
+ "observable-to-promise": "^1.0.0",
+ "ora": "^3.4.0",
+ "package-hash": "^4.0.0",
+ "pkg-conf": "^3.1.0",
+ "plur": "^3.1.1",
+ "pretty-ms": "^5.0.0",
+ "require-precompiled": "^0.1.0",
+ "resolve-cwd": "^3.0.0",
+ "slash": "^3.0.0",
+ "source-map-support": "^0.5.13",
+ "stack-utils": "^1.0.2",
+ "strip-ansi": "^5.2.0",
+ "strip-bom-buf": "^2.0.0",
+ "supertap": "^1.0.0",
+ "supports-color": "^7.0.0",
+ "trim-off-newlines": "^1.0.1",
+ "trim-right": "^1.0.1",
+ "unique-temp-dir": "^1.0.0",
+ "update-notifier": "^3.0.1",
+ "write-file-atomic": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "pretty-ms": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-5.0.0.tgz",
+ "integrity": "sha512-94VRYjL9k33RzfKiGokPBPpsmloBYSf5Ri+Pq19zlsEcUKFob+admeXr5eFDRuPjFmEOcjJvPGdillYOJyvZ7Q==",
+ "dev": true,
+ "requires": {
+ "parse-ms": "^2.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+ "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "babel-plugin-espower": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz",
+ "integrity": "sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A==",
+ "dev": true,
+ "requires": {
+ "@babel/generator": "^7.0.0",
+ "@babel/parser": "^7.0.0",
+ "call-matcher": "^1.0.0",
+ "core-js": "^2.0.0",
+ "espower-location-detector": "^1.0.0",
+ "espurify": "^1.6.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "bail": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz",
+ "integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww=="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
+ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
+ "dev": true
+ },
+ "bl": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-0.8.2.tgz",
+ "integrity": "sha1-yba8oI0bwuoA/Ir7Txpf0eHGbk4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~1.0.26"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "bluebird": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz",
+ "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==",
+ "dev": true
+ },
+ "blueimp-md5": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.12.0.tgz",
+ "integrity": "sha512-zo+HIdIhzojv6F1siQPqPFROyVy7C50KzHv/k/Iz+BtvtVzSHXiMXOpq2wCfNkeBqdCv+V8XOV96tsEt2W/3rQ==",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "body-parser": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+ "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+ "requires": {
+ "bytes": "3.1.0",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
+ "on-finished": "~2.3.0",
+ "qs": "6.7.0",
+ "raw-body": "2.4.0",
+ "type-is": "~1.6.17"
+ }
+ },
+ "boxen": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz",
+ "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==",
+ "dev": true,
+ "requires": {
+ "ansi-align": "^3.0.0",
+ "camelcase": "^5.3.1",
+ "chalk": "^2.4.2",
+ "cli-boxes": "^2.2.0",
+ "string-width": "^3.0.0",
+ "term-size": "^1.2.0",
+ "type-fest": "^0.3.0",
+ "widest-line": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "dev": true
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-fs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browserify-fs/-/browserify-fs-1.0.0.tgz",
+ "integrity": "sha1-8HWqinKdTRcW0GZiDjhvzBMRqW8=",
+ "dev": true,
+ "requires": {
+ "level-filesystem": "^1.0.1",
+ "level-js": "^2.1.3",
+ "levelup": "^0.18.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.1",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.2",
+ "elliptic": "^6.0.0",
+ "inherits": "^2.0.1",
+ "parse-asn1": "^5.0.0"
+ }
+ },
+ "buf-compare": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz",
+ "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=",
+ "dev": true
+ },
+ "buffer-es6": {
+ "version": "4.9.3",
+ "resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz",
+ "integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ=",
+ "dev": true
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz",
+ "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "cacheable-request": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+ "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+ "dev": true,
+ "requires": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^3.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^4.1.0",
+ "responselike": "^1.0.2"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
+ "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true
+ }
+ }
+ },
+ "call-matcher": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz",
+ "integrity": "sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.0.0",
+ "deep-equal": "^1.0.0",
+ "espurify": "^1.6.0",
+ "estraverse": "^4.0.0"
+ }
+ },
+ "call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
+ "dev": true
+ },
+ "call-signature": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz",
+ "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=",
+ "dev": true
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
+ "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0",
+ "map-obj": "^2.0.0",
+ "quick-lru": "^1.0.0"
+ }
+ },
+ "ccount": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz",
+ "integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w=="
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "character-entities": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.3.tgz",
+ "integrity": "sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w=="
+ },
+ "character-entities-html4": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.3.tgz",
+ "integrity": "sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg=="
+ },
+ "character-entities-legacy": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz",
+ "integrity": "sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww=="
+ },
+ "character-reference-invalid": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz",
+ "integrity": "sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg=="
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz",
+ "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==",
+ "dev": true,
+ "requires": {
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "fsevents": "~2.1.1",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.2.0"
+ }
+ },
+ "chunkd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-1.0.0.tgz",
+ "integrity": "sha512-xx3Pb5VF9QaqCotolyZ1ywFBgyuJmu6+9dLiqBxgelEse9Xsr3yUlpoX3O4Oh11M00GT2kYMsRByTKIMJW2Lkg==",
+ "dev": true
+ },
+ "ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "dev": true
+ },
+ "ci-parallel-vars": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.0.tgz",
+ "integrity": "sha512-u6dx20FBXm+apMi+5x7UVm6EH7BL1gc4XrcnQewjcB7HWRcor/V5qWc3RG2HwpgDJ26gIi2DSEu3B7sXynAw/g==",
+ "dev": true
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "clean-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz",
+ "integrity": "sha1-jffHquUf02h06PjQW5GAvBGj/tc=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ }
+ }
+ },
+ "clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true
+ },
+ "clean-yaml-object": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz",
+ "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=",
+ "dev": true
+ },
+ "cli-boxes": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz",
+ "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "cli-spinners": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz",
+ "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==",
+ "dev": true
+ },
+ "cli-truncate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.0.0.tgz",
+ "integrity": "sha512-C4hp+8GCIFVsUUiXcw+ce+7wexVWImw8rQrgMBFsqerx9LvvcGlwm6sMjQYAEmV/Xb87xc1b5Ttx505MSpZVqg==",
+ "dev": true,
+ "requires": {
+ "slice-ansi": "^2.1.0",
+ "string-width": "^4.1.0"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "clone": {
+ "version": "0.1.19",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz",
+ "integrity": "sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU=",
+ "dev": true
+ },
+ "clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "co": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
+ "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g="
+ },
+ "code-excerpt": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz",
+ "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==",
+ "dev": true,
+ "requires": {
+ "convert-to-spaces": "^1.0.1"
+ }
+ },
+ "collapse-white-space": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.5.tgz",
+ "integrity": "sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ=="
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "comma-separated-tokens": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.7.tgz",
+ "integrity": "sha512-Jrx3xsP4pPv4AwJUDWY9wOXGtwPXARej6Xd99h4TUGotmf8APuquKMpK+dnD3UgyxK7OEWaisjZz+3b5jtL6xQ=="
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "common-path-prefix": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz",
+ "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "concordance": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/concordance/-/concordance-4.0.0.tgz",
+ "integrity": "sha512-l0RFuB8RLfCS0Pt2Id39/oCPykE01pyxgAFypWTlaGRgvLkZrtczZ8atEHpTeEIW+zYWXTBuA9cCSeEOScxReQ==",
+ "dev": true,
+ "requires": {
+ "date-time": "^2.1.0",
+ "esutils": "^2.0.2",
+ "fast-diff": "^1.1.2",
+ "js-string-escape": "^1.0.1",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.flattendeep": "^4.4.0",
+ "lodash.islength": "^4.0.1",
+ "lodash.merge": "^4.6.1",
+ "md5-hex": "^2.0.0",
+ "semver": "^5.5.1",
+ "well-known-symbols": "^2.0.0"
+ },
+ "dependencies": {
+ "md5-hex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz",
+ "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=",
+ "dev": true,
+ "requires": {
+ "md5-o-matic": "^0.1.1"
+ }
+ }
+ }
+ },
+ "configstore": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz",
+ "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^4.1.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "dependencies": {
+ "dot-prop": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ }
+ }
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
+ "content-disposition": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+ },
+ "convert-source-map": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+ "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "convert-to-spaces": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz",
+ "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=",
+ "dev": true
+ },
+ "cookie": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+ "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "core-assert": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz",
+ "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=",
+ "dev": true,
+ "requires": {
+ "buf-compare": "^1.0.0",
+ "is-error": "^2.2.0"
+ }
+ },
+ "core-js": {
+ "version": "2.6.10",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz",
+ "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "date-time": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz",
+ "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==",
+ "dev": true,
+ "requires": {
+ "time-zone": "^1.0.0"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decamelize-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+ "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+ "dev": true,
+ "requires": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ }
+ }
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "deep-equal": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
+ "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+ "dev": true,
+ "requires": {
+ "is-arguments": "^1.0.4",
+ "is-date-object": "^1.0.1",
+ "is-regex": "^1.0.4",
+ "object-is": "^1.0.1",
+ "object-keys": "^1.1.1",
+ "regexp.prototype.flags": "^1.2.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "deep-strict-equal": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz",
+ "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=",
+ "dev": true,
+ "requires": {
+ "core-assert": "^0.2.0"
+ }
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "dev": true,
+ "requires": {
+ "clone": "^1.0.2"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+ "dev": true
+ }
+ }
+ },
+ "defer-to-connect": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.0.tgz",
+ "integrity": "sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ==",
+ "dev": true
+ },
+ "deferred-leveldown": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz",
+ "integrity": "sha1-LO8fER4cV4cNi7uK8mUOWHzS9bQ=",
+ "dev": true,
+ "requires": {
+ "abstract-leveldown": "~0.12.1"
+ }
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "del": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
+ "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "globby": "^6.1.0",
+ "is-path-cwd": "^2.0.0",
+ "is-path-in-cwd": "^2.0.0",
+ "p-map": "^2.0.0",
+ "pify": "^4.0.1",
+ "rimraf": "^2.6.3"
+ },
+ "dependencies": {
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "del-cli": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/del-cli/-/del-cli-3.0.0.tgz",
+ "integrity": "sha512-J4HDC2mpcN5aopya4VdkyiFXZaqAoo7ua9VpKbciX3DDUSbtJbPMc3ivggJsAAgS6EqonmbenIiMhBGtJPW9FA==",
+ "dev": true,
+ "requires": {
+ "del": "^5.1.0",
+ "meow": "^5.0.0"
+ },
+ "dependencies": {
+ "del": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz",
+ "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==",
+ "dev": true,
+ "requires": {
+ "globby": "^10.0.1",
+ "graceful-fs": "^4.2.2",
+ "is-glob": "^4.0.1",
+ "is-path-cwd": "^2.2.0",
+ "is-path-inside": "^3.0.1",
+ "p-map": "^3.0.0",
+ "rimraf": "^3.0.0",
+ "slash": "^3.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz",
+ "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==",
+ "dev": true
+ },
+ "p-map": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "dev": true,
+ "requires": {
+ "aggregate-error": "^3.0.0"
+ }
+ },
+ "rimraf": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
+ "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "des.js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
+ "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "detab": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.2.tgz",
+ "integrity": "sha512-Q57yPrxScy816TTE1P/uLRXLDKjXhvYTbfxS/e6lPD+YrqghbsMlGB9nQzj/zVtSPaF0DFPSdO916EWO4sQUyQ==",
+ "requires": {
+ "repeat-string": "^1.5.4"
+ }
+ },
+ "detect-indent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
+ "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
+ "directory-tree": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/directory-tree/-/directory-tree-2.2.4.tgz",
+ "integrity": "sha512-2N43msQptKbi3WMfIs+U09yi6bfyKL+MWyj5VMj8t1F/Tx04bt1cn/EEIU3o1JBltlJk7NQnzOEuTNa/KQvbWA=="
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "dot-prop": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz",
+ "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^2.0.0"
+ }
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+ "dev": true
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "elliptic": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz",
+ "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
+ "emittery": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.4.1.tgz",
+ "integrity": "sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "empower-core": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-1.2.0.tgz",
+ "integrity": "sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==",
+ "dev": true,
+ "requires": {
+ "call-signature": "0.0.2",
+ "core-js": "^2.0.0"
+ }
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enhance-visitors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/enhance-visitors/-/enhance-visitors-1.0.0.tgz",
+ "integrity": "sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo=",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.13.1"
+ }
+ },
+ "env-editor": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.1.tgz",
+ "integrity": "sha512-suh+Vm00GnPQgXpmONTkcUT9LgBSL6sJrRnJxbykT0j+ONjzmIS+1U3ne467ArdZN/42/npp+GnhtwkLQ+vUjw==",
+ "dev": true
+ },
+ "equal-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz",
+ "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=",
+ "dev": true
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz",
+ "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.0",
+ "is-callable": "^1.1.4",
+ "is-regex": "^1.0.4",
+ "object-inspect": "^1.6.0",
+ "object-keys": "^1.1.1",
+ "string.prototype.trimleft": "^2.1.0",
+ "string.prototype.trimright": "^2.1.0"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+ "dev": true
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true
+ },
+ "eslint": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz",
+ "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^11.7.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
+ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-ast-utils": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-ast-utils/-/eslint-ast-utils-1.1.0.tgz",
+ "integrity": "sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==",
+ "dev": true,
+ "requires": {
+ "lodash.get": "^4.4.2",
+ "lodash.zip": "^4.2.0"
+ }
+ },
+ "eslint-config-prettier": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.5.0.tgz",
+ "integrity": "sha512-cjXp8SbO9VFGW/Z7mbTydqS9to8Z58E5aYhj3e1+Hx7lS9s6gL5ILKNpCqZAFOVYRcSkWPFYljHrEh8QFEK5EQ==",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^6.0.0"
+ },
+ "dependencies": {
+ "get-stdin": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
+ "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-config-xo": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.27.2.tgz",
+ "integrity": "sha512-qEuZP0zNQkWpOdNZvWnfY2GNp1AZ33uXgeOXl4DN5YVLHFvekHbeSM2FFZ8A489fp1rCCColVRlJsYMf28o4DA==",
+ "dev": true
+ },
+ "eslint-formatter-pretty": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-2.1.1.tgz",
+ "integrity": "sha512-gWfagucSWBn82WxzwFloBTLAcwYDgnpAfiV5pQfyAV5YpZikuLflRU8nc3Ts9wnNvLhwk4blzb42/C495Yw7BA==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.1.0",
+ "chalk": "^2.1.0",
+ "eslint-rule-docs": "^1.1.5",
+ "log-symbols": "^2.0.0",
+ "plur": "^3.0.1",
+ "string-width": "^2.0.0",
+ "supports-hyperlinks": "^1.0.1"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
+ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "resolve": "^1.5.0"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz",
+ "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.8",
+ "pkg-dir": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.1.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-ava": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-9.0.0.tgz",
+ "integrity": "sha512-mJqQ1wQ9pxBi5Pu+grrqjfuSLxiSSgnpa5p5vMdEpBqA9n9cUzSCv0xMZ/NkTMAj5ieOB3TWF8j+7C30Yiv4RA==",
+ "dev": true,
+ "requires": {
+ "deep-strict-equal": "^0.2.0",
+ "enhance-visitors": "^1.0.0",
+ "espree": "^6.0.0",
+ "espurify": "^2.0.0",
+ "import-modules": "^1.1.0",
+ "pkg-dir": "^4.2.0",
+ "resolve-from": "^5.0.0"
+ },
+ "dependencies": {
+ "espurify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/espurify/-/espurify-2.0.1.tgz",
+ "integrity": "sha512-7w/dUrReI/QbJFHRwfomTlkQOXaB1NuCrBRn5Y26HXn5gvh18/19AgLbayVrNxXQfkckvgrJloWyvZDuJ7dhEA==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-es": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz",
+ "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^1.4.2",
+ "regexpp": "^3.0.0"
+ },
+ "dependencies": {
+ "regexpp": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz",
+ "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-eslint-comments": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.1.2.tgz",
+ "integrity": "sha512-QexaqrNeteFfRTad96W+Vi4Zj1KFbkHHNMMaHZEYcovKav6gdomyGzaxSDSL3GoIyUOo078wRAdYlu1caiauIQ==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5",
+ "ignore": "^5.0.5"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.18.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz",
+ "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "contains-path": "^0.1.0",
+ "debug": "^2.6.9",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.3.2",
+ "eslint-module-utils": "^2.4.0",
+ "has": "^1.0.3",
+ "minimatch": "^3.0.4",
+ "object.values": "^1.1.0",
+ "read-pkg-up": "^2.0.0",
+ "resolve": "^1.11.0"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-no-use-extend-native": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.4.1.tgz",
+ "integrity": "sha512-tDkHM0kvxU0M2TpLRKGfFrpWXctFdTDY7VkiDTLYDaX90hMSJKkr/FiWThEXvKV0Dvffut2Z0B9Y7+h/k6suiA==",
+ "dev": true,
+ "requires": {
+ "is-get-set-prop": "^1.0.0",
+ "is-js-type": "^2.0.0",
+ "is-obj-prop": "^1.0.0",
+ "is-proto-prop": "^2.0.0"
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz",
+ "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-es": "^2.0.0",
+ "eslint-utils": "^1.4.2",
+ "ignore": "^5.1.1",
+ "minimatch": "^3.0.4",
+ "resolve": "^1.10.1",
+ "semver": "^6.1.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-prettier": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz",
+ "integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==",
+ "dev": true,
+ "requires": {
+ "prettier-linter-helpers": "^1.0.0"
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
+ "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==",
+ "dev": true
+ },
+ "eslint-plugin-unicorn": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-12.1.0.tgz",
+ "integrity": "sha512-DkPRrjaZaKa8GDjEyWGms/sqp2DcmVCcbwVi9WQXwN6+Sn0/joTC14SfA+BsCuxTaGPRm/7wa8NC8o5mNDyZpQ==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^2.0.0",
+ "clean-regexp": "^1.0.0",
+ "eslint-ast-utils": "^1.1.0",
+ "eslint-template-visitor": "^1.0.0",
+ "import-modules": "^2.0.0",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.defaultsdeep": "^4.6.1",
+ "lodash.kebabcase": "^4.1.1",
+ "lodash.snakecase": "^4.1.1",
+ "lodash.topairs": "^4.3.0",
+ "lodash.upperfirst": "^4.3.1",
+ "read-pkg-up": "^7.0.0",
+ "regexpp": "^3.0.0",
+ "reserved-words": "^0.1.2",
+ "safe-regex": "^2.0.2",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "import-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-2.0.0.tgz",
+ "integrity": "sha512-iczM/v9drffdNnABOKwj0f9G3cFDon99VcG1mxeBsdqnbd+vnQ5c2uAiCHNQITqFTOPaEvwg3VjoWCur0uHLEw==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
+ "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1",
+ "lines-and-columns": "^1.1.6"
+ }
+ },
+ "read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "requires": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true
+ }
+ }
+ },
+ "read-pkg-up": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.0.tgz",
+ "integrity": "sha512-t2ODkS/vTTcRlKwZiZsaLGb5iwfx9Urp924aGzVyboU6+7Z2i6eGr/G1Z4mjvwLLQV3uFOBKobNRGM3ux2PD/w==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
+ }
+ },
+ "regexpp": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz",
+ "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-rule-docs": {
+ "version": "1.1.165",
+ "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.165.tgz",
+ "integrity": "sha512-UIY9dDiCRx/GT9rVvE1ZWxWa4nUqzJ01NVk726rBkeldqWMUy1a1ZhVifrrK0TpEuf1q/y1LLrFLaUd5pE41kA==",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
+ "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-template-visitor": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-1.1.0.tgz",
+ "integrity": "sha512-Lmy6QVlmFiIGl5fPi+8ACnov3sare+0Ouf7deJAGGhmUfeWJ5fVarELUxZRpsZ9sHejiJUq8626d0dn9uvcZTw==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.1",
+ "multimap": "^1.0.2"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
+ "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
+ "dev": true
+ },
+ "esm": {
+ "version": "3.2.25",
+ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
+ "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
+ "dev": true
+ },
+ "espower-location-detector": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz",
+ "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=",
+ "dev": true,
+ "requires": {
+ "is-url": "^1.2.1",
+ "path-is-absolute": "^1.0.0",
+ "source-map": "^0.5.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "espree": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
+ "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.0",
+ "acorn-jsx": "^5.1.0",
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
+ "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
+ "dev": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "espurify": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz",
+ "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.0.0"
+ }
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "estree-walker": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "dependencies": {
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "express": {
+ "version": "4.17.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+ "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+ "requires": {
+ "accepts": "~1.3.7",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.19.0",
+ "content-disposition": "0.5.3",
+ "content-type": "~1.0.4",
+ "cookie": "0.4.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "~1.1.2",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.5",
+ "qs": "6.7.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.1.2",
+ "send": "0.17.1",
+ "serve-static": "1.14.1",
+ "setprototypeof": "1.1.1",
+ "statuses": "~1.5.0",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "fast-diff": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
+ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz",
+ "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.0",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.2"
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fastq": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz",
+ "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==",
+ "dev": true,
+ "requires": {
+ "reusify": "^1.0.0"
+ }
+ },
+ "fault": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.3.tgz",
+ "integrity": "sha512-sfFuP4X0hzrbGKjAUNXYvNqsZ5F6ohx/dZ9I0KQud/aiZNwg263r5L9yGB0clvXHCkzXh5W3t7RSHchggYIFmA==",
+ "requires": {
+ "format": "^0.2.2"
+ }
+ },
+ "figures": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz",
+ "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ }
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "find-cache-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.1.0.tgz",
+ "integrity": "sha512-zw+EFiNBNPgI2NTrKkDd1xd7q0cs6wr/iWnr/oUkI0yF9K9GqQ+riIt4aiyFaaqpaWbxPrJXHI+QvmNUQbX+0Q==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.0",
+ "pkg-dir": "^4.1.0"
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "flatted": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
+ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
+ "dev": true
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "foreach": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+ "dev": true
+ },
+ "format": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
+ "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs="
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+ },
+ "fs-extra": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
+ "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
+ "dev": true,
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "fwd-stream": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/fwd-stream/-/fwd-stream-1.0.4.tgz",
+ "integrity": "sha1-7Sgcq+1G/uz5Ie4y3ExQs3KsfPo=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~1.0.26-4"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "get-port": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.0.0.tgz",
+ "integrity": "sha512-imzMU0FjsZqNa6BqOjbbW6w5BivHIuQKopjpPqcnx0AVHJQKCxK1O+Ab3OrVXhrekqfVMjwA9ZYu062R+KcIsQ==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.3.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "dev": true
+ }
+ }
+ },
+ "get-set-props": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-set-props/-/get-set-props-0.1.0.tgz",
+ "integrity": "sha1-mYR1wXhEVobQsyJG2l3428++jqM=",
+ "dev": true
+ },
+ "get-stdin": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz",
+ "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
+ "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
+ "dev": true
+ },
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4"
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
+ "globby": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz",
+ "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.0.3",
+ "glob": "^7.1.3",
+ "ignore": "^5.1.1",
+ "merge2": "^1.2.3",
+ "slash": "^3.0.0"
+ }
+ },
+ "got": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+ "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+ "dev": true,
+ "requires": {
+ "@sindresorhus/is": "^0.14.0",
+ "@szmarczak/http-timer": "^1.1.2",
+ "cacheable-request": "^6.0.0",
+ "decompress-response": "^3.3.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^4.1.0",
+ "lowercase-keys": "^1.0.1",
+ "mimic-response": "^1.0.1",
+ "p-cancelable": "^1.0.0",
+ "to-readable-stream": "^1.0.0",
+ "url-parse-lax": "^3.0.0"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
+ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+ },
+ "has-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "has-yarn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
+ "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
+ "dev": true
+ },
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "hasha": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.1.0.tgz",
+ "integrity": "sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA==",
+ "dev": true,
+ "requires": {
+ "is-stream": "^2.0.0",
+ "type-fest": "^0.8.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ }
+ }
+ },
+ "hast-to-hyperscript": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-7.0.4.tgz",
+ "integrity": "sha512-vmwriQ2H0RPS9ho4Kkbf3n3lY436QKLq6VaGA1pzBh36hBi3tm1DO9bR+kaJIbpT10UqaANDkMjxvjVfr+cnOA==",
+ "requires": {
+ "comma-separated-tokens": "^1.0.0",
+ "property-information": "^5.3.0",
+ "space-separated-tokens": "^1.0.0",
+ "style-to-object": "^0.2.1",
+ "unist-util-is": "^3.0.0",
+ "web-namespaces": "^1.1.2"
+ }
+ },
+ "hast-util-embedded": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-1.0.4.tgz",
+ "integrity": "sha512-kfCMiRzYPWx9I6KYdW5DCS+WM6xRmAtfrPd2yEG+5cuwquEh0Qh2sV7CX0tbdes/nmm2lBTGLURh0GmRb2txgQ==",
+ "requires": {
+ "hast-util-is-element": "^1.0.0"
+ }
+ },
+ "hast-util-from-parse5": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.2.tgz",
+ "integrity": "sha512-YXFjoRS7ES7PEoLx6uihtSfKTO1s3z/tzGiV5cVpsUiihduogFXubNRCzTIW3yOOGO1nws9CxPq4MbwD39Uo+w==",
+ "requires": {
+ "ccount": "^1.0.3",
+ "hastscript": "^5.0.0",
+ "property-information": "^5.0.0",
+ "web-namespaces": "^1.1.2",
+ "xtend": "^4.0.1"
+ }
+ },
+ "hast-util-has-property": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-1.0.3.tgz",
+ "integrity": "sha512-tT3ffSnrBu38RKnjn27n9vi+h/CUEXCQP5O2mriji4NNI2QNnhAqefjOg5ORAyvVfJItn0SC2Sx4CHReZSYh3g=="
+ },
+ "hast-util-is-body-ok-link": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-1.0.2.tgz",
+ "integrity": "sha512-eSxO9rgtb7dfKxNa8NAFS3VEYWHXnJWVsoH/Z4jSsq1J2i4H1GkdJ43kXv++xuambrtI5XQwcAx6jeZVMjoBMQ==",
+ "requires": {
+ "hast-util-has-property": "^1.0.0",
+ "hast-util-is-element": "^1.0.0"
+ }
+ },
+ "hast-util-is-element": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.0.3.tgz",
+ "integrity": "sha512-C62CVn7jbjp89yOhhy7vrkSaB7Vk906Gtcw/Ihd+Iufnq+2pwOZjdPmpzpKLWJXPJBMDX3wXg4FqmdOayPcewA=="
+ },
+ "hast-util-parse-selector": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.3.tgz",
+ "integrity": "sha512-nxbeqjQNxsvo/uYYAw9kij6td05YVUlf1qti09rVfbWSLT5H6wo3c+USIwX6nzXWk5kFZzXnEqO82856r0aM2Q=="
+ },
+ "hast-util-phrasing": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-1.0.4.tgz",
+ "integrity": "sha512-3GlGZaR7X0brAHNB6TXY7tDzV1bFeSMptBlX0cgOMrw85dRSCF0A71TL83FgFk/oCvvBzeZQIHMIh/cOjnXioA==",
+ "requires": {
+ "hast-util-embedded": "^1.0.0",
+ "hast-util-has-property": "^1.0.0",
+ "hast-util-is-body-ok-link": "^1.0.0",
+ "hast-util-is-element": "^1.0.0"
+ }
+ },
+ "hast-util-raw": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-5.0.1.tgz",
+ "integrity": "sha512-iHo7G6BjRc/GU1Yun5CIEXjil0wVnIbz11C6k0JdDichSDMtYi2+NNtk6YN7EOP0JfPstX30d3pRLfaJv5CkdA==",
+ "requires": {
+ "hast-util-from-parse5": "^5.0.0",
+ "hast-util-to-parse5": "^5.0.0",
+ "html-void-elements": "^1.0.1",
+ "parse5": "^5.0.0",
+ "unist-util-position": "^3.0.0",
+ "web-namespaces": "^1.0.0",
+ "xtend": "^4.0.1",
+ "zwitch": "^1.0.0"
+ }
+ },
+ "hast-util-sanitize": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-2.0.1.tgz",
+ "integrity": "sha512-Hk9YC6+HURcdNuBFaPP5nX6xK6zPnm0Dr6QnU4hvvXoStzH5nLI1u71wux6u3fbEQk3/+kTEIcyxRtCA0jt9RA==",
+ "requires": {
+ "xtend": "^4.0.1"
+ }
+ },
+ "hast-util-to-html": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-6.0.2.tgz",
+ "integrity": "sha512-oiQzGHtjT6ZLhszCY89kCxGCo9O+YuPUHluv36fzp7Hv/E1W4428PgzcQAKlPUzbHAt3ELoPCSrYLWl8fQw7Ag==",
+ "requires": {
+ "ccount": "^1.0.0",
+ "comma-separated-tokens": "^1.0.1",
+ "hast-util-is-element": "^1.0.0",
+ "hast-util-whitespace": "^1.0.0",
+ "html-void-elements": "^1.0.0",
+ "property-information": "^5.2.0",
+ "space-separated-tokens": "^1.0.0",
+ "stringify-entities": "^2.0.0",
+ "unist-util-is": "^3.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "hast-util-to-parse5": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-5.1.1.tgz",
+ "integrity": "sha512-ivCeAd5FCXr7bapJIVsWMnx/EmbjkkW2TU2hd1prq+jGwiaUoK+FcpjyPNwsC5ogzCwWO669tOqIovGeLc/ntg==",
+ "requires": {
+ "hast-to-hyperscript": "^7.0.0",
+ "property-information": "^5.0.0",
+ "web-namespaces": "^1.0.0",
+ "xtend": "^4.0.1",
+ "zwitch": "^1.0.0"
+ }
+ },
+ "hast-util-to-text": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-1.0.1.tgz",
+ "integrity": "sha512-Xvp9fWiWVb4WaHc1E1g6dtyYlcVwyjRT0CC9oXtVUNhbmIB1gqRVBuBIFJgrFkYxdo+T3UIl5i5ipPGaPRnUOw==",
+ "requires": {
+ "hast-util-is-element": "^1.0.2",
+ "repeat-string": "^1.6.1",
+ "unist-util-find-after": "^2.0.3"
+ }
+ },
+ "hast-util-whitespace": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.3.tgz",
+ "integrity": "sha512-AlkYiLTTwPOyxZ8axq2/bCwRUPjIPBfrHkXuCR92B38b3lSdU22R5F/Z4DL6a2kxWpekWq1w6Nj48tWat6GeRA=="
+ },
+ "hastscript": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.1.tgz",
+ "integrity": "sha512-xHo1Hkcqd0LlWNuDL3/BxwhgAGp3d7uEvCMgCTrBY+zsOooPPH+8KAvW8PCgl+GB8H3H44nfSaF0A4BQ+4xlYg==",
+ "requires": {
+ "comma-separated-tokens": "^1.0.0",
+ "hast-util-parse-selector": "^2.0.0",
+ "property-information": "^5.0.0",
+ "space-separated-tokens": "^1.0.0"
+ }
+ },
+ "highlight.js": {
+ "version": "9.16.2",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.16.2.tgz",
+ "integrity": "sha512-feMUrVLZvjy0oC7FVJQcSQRqbBq9kwqnYE4+Kj9ZjbHh3g+BisiPgF49NyQbVLNdrL/qqZr3Ca9yOKwgn2i/tw=="
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
+ "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
+ "dev": true
+ },
+ "html-void-elements": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.4.tgz",
+ "integrity": "sha512-yMk3naGPLrfvUV9TdDbuYXngh/TpHbA6TrOw3HL9kS8yhwx7i309BReNg7CbAJXGE+UMJ6je5OqJ7lC63o6YuQ=="
+ },
+ "html-whitespace-sensitive-tag-names": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-1.0.1.tgz",
+ "integrity": "sha512-TMdAWVry7Ld0k2sLqpHkWsFAHmU+VZZq/nR4bfwfxThD8q3ibhrpRTywyQkEiunYiZXmJ6gRcJiLbZm+jbQPgQ=="
+ },
+ "http-cache-semantics": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz",
+ "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "idb-wrapper": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz",
+ "integrity": "sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
+ "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==",
+ "dev": true
+ },
+ "ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
+ "dev": true
+ },
+ "import-fresh": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ }
+ }
+ },
+ "import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+ "dev": true
+ },
+ "import-local": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
+ "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ }
+ },
+ "import-modules": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-1.1.0.tgz",
+ "integrity": "sha1-dI23nFzEK7lwHvq0JPiU5yYA6dw=",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "inline-style-parser": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
+ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
+ },
+ "inquirer": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz",
+ "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^2.4.2",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.15",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.4.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^5.1.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "ipaddr.js": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
+ "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
+ },
+ "irregular-plurals": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-2.0.0.tgz",
+ "integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw=="
+ },
+ "is": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/is/-/is-0.2.7.tgz",
+ "integrity": "sha1-OzSixI81mXLzUEKEkZOucmS2NWI=",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-alphabetical": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz",
+ "integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA=="
+ },
+ "is-alphanumeric": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz",
+ "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ="
+ },
+ "is-alphanumerical": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz",
+ "integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==",
+ "requires": {
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0"
+ }
+ },
+ "is-arguments": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
+ "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
+ "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
+ },
+ "is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^2.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-decimal": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz",
+ "integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ=="
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-empty": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz",
+ "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=",
+ "dev": true
+ },
+ "is-error": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz",
+ "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==",
+ "dev": true
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+ },
+ "is-get-set-prop": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-get-set-prop/-/is-get-set-prop-1.0.0.tgz",
+ "integrity": "sha1-JzGHfk14pqae3M5rudaLB3nnYxI=",
+ "dev": true,
+ "requires": {
+ "get-set-props": "^0.1.0",
+ "lowercase-keys": "^1.0.0"
+ }
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-hexadecimal": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz",
+ "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA=="
+ },
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "requires": {
+ "global-dirs": "^0.1.0",
+ "is-path-inside": "^1.0.0"
+ },
+ "dependencies": {
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.1"
+ }
+ }
+ }
+ },
+ "is-js-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-js-type/-/is-js-type-2.0.0.tgz",
+ "integrity": "sha1-c2FwBtZZtOtHKbunR9KHgt8PfiI=",
+ "dev": true,
+ "requires": {
+ "js-types": "^1.0.0"
+ }
+ },
+ "is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
+ "dev": true
+ },
+ "is-npm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-3.0.0.tgz",
+ "integrity": "sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true
+ },
+ "is-obj-prop": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj-prop/-/is-obj-prop-1.0.0.tgz",
+ "integrity": "sha1-s03nnEULjXxzqyzfZ9yHWtuF+A4=",
+ "dev": true,
+ "requires": {
+ "lowercase-keys": "^1.0.0",
+ "obj-props": "^1.0.0"
+ }
+ },
+ "is-object": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/is-object/-/is-object-0.1.2.tgz",
+ "integrity": "sha1-AO+8CIFsM8/ErIJR0TLhDcZQmNc=",
+ "dev": true
+ },
+ "is-observable": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-2.0.0.tgz",
+ "integrity": "sha512-fhBZv3eFKUbyHXZ1oHujdo2tZ+CNbdpdzzlENgCGZUC8keoGxUew2jYFLYcUB4qo7LDD03o4KK11m/QYD7kEjg==",
+ "dev": true
+ },
+ "is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+ "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^2.1.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
+ "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.2"
+ }
+ },
+ "is-plain-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.0.0.tgz",
+ "integrity": "sha512-EYisGhpgSCwspmIuRHGjROWTon2Xp8Z7U03Wubk/bTL5TTRC5R1rGVgyjzBrk9+ULdH6cRD06KRcw/xfqhVYKQ=="
+ },
+ "is-plain-object": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz",
+ "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==",
+ "dev": true,
+ "requires": {
+ "isobject": "^4.0.0"
+ }
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-proto-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-proto-prop/-/is-proto-prop-2.0.0.tgz",
+ "integrity": "sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg==",
+ "dev": true,
+ "requires": {
+ "lowercase-keys": "^1.0.0",
+ "proto-props": "^2.0.0"
+ }
+ },
+ "is-reference": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz",
+ "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "0.0.39"
+ }
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
+ "is-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
+ "dev": true
+ },
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.0"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-url": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-whitespace-character": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz",
+ "integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ=="
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-word-character": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz",
+ "integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A=="
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
+ "is-yarn-global": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
+ "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isbuffer": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/isbuffer/-/isbuffer-0.0.0.tgz",
+ "integrity": "sha1-OMFG2d9Si4v5sHAcPUPPEt8/w5s=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "isobject": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
+ "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==",
+ "dev": true
+ },
+ "jest-worker": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+ "dev": true,
+ "requires": {
+ "merge-stream": "^2.0.0",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "js-string-escape": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz",
+ "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-types": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/js-types/-/js-types-1.0.0.tgz",
+ "integrity": "sha1-0kLmSU7Vcq08koCfyL7X92h8vwM=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "json-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "json5": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
+ "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "katex": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.11.1.tgz",
+ "integrity": "sha512-5oANDICCTX0NqYIyAiFCCwjQ7ERu3DQG2JFHLbYOf+fXaMoH8eg/zOq5WSYJsKMi/QebW+Eh3gSM+oss1H/bww==",
+ "requires": {
+ "commander": "^2.19.0"
+ }
+ },
+ "keyv": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+ "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+ "dev": true,
+ "requires": {
+ "json-buffer": "3.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "latest-version": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
+ "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
+ "dev": true,
+ "requires": {
+ "package-json": "^6.3.0"
+ }
+ },
+ "level-blobs": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/level-blobs/-/level-blobs-0.1.7.tgz",
+ "integrity": "sha1-mrm5e7mfHtv594o0M+Ie1WOGva8=",
+ "dev": true,
+ "requires": {
+ "level-peek": "1.0.6",
+ "once": "^1.3.0",
+ "readable-stream": "^1.0.26-4"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "level-filesystem": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/level-filesystem/-/level-filesystem-1.2.0.tgz",
+ "integrity": "sha1-oArKmRnEpN+v3KaoEI0iWq3/Y7M=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.4.4",
+ "errno": "^0.1.1",
+ "fwd-stream": "^1.0.4",
+ "level-blobs": "^0.1.7",
+ "level-peek": "^1.0.6",
+ "level-sublevel": "^5.2.0",
+ "octal": "^1.0.0",
+ "once": "^1.3.0",
+ "xtend": "^2.2.0"
+ },
+ "dependencies": {
+ "xtend": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz",
+ "integrity": "sha1-7vax8ZjByN6vrYsXZaBNrUoBxak=",
+ "dev": true
+ }
+ }
+ },
+ "level-fix-range": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/level-fix-range/-/level-fix-range-1.0.2.tgz",
+ "integrity": "sha1-vxW5Fa422EcMgh6IPd95zRZCCCg=",
+ "dev": true
+ },
+ "level-hooks": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/level-hooks/-/level-hooks-4.5.0.tgz",
+ "integrity": "sha1-G5rmGSKTDzMF0aYfxNg8gQLA3ZM=",
+ "dev": true,
+ "requires": {
+ "string-range": "~1.2"
+ }
+ },
+ "level-js": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/level-js/-/level-js-2.2.4.tgz",
+ "integrity": "sha1-vAVfQYBjXUSJtWHJSG+jcOjBFpc=",
+ "dev": true,
+ "requires": {
+ "abstract-leveldown": "~0.12.0",
+ "idb-wrapper": "^1.5.0",
+ "isbuffer": "~0.0.0",
+ "ltgt": "^2.1.2",
+ "typedarray-to-buffer": "~1.0.0",
+ "xtend": "~2.1.2"
+ },
+ "dependencies": {
+ "object-keys": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
+ "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
+ "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
+ "dev": true,
+ "requires": {
+ "object-keys": "~0.4.0"
+ }
+ }
+ }
+ },
+ "level-peek": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/level-peek/-/level-peek-1.0.6.tgz",
+ "integrity": "sha1-vsUccqgu5GTTNkNMfIdsP8vM538=",
+ "dev": true,
+ "requires": {
+ "level-fix-range": "~1.0.2"
+ }
+ },
+ "level-sublevel": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/level-sublevel/-/level-sublevel-5.2.3.tgz",
+ "integrity": "sha1-dEwSxy0ucr543eO5tc2E1iGRQTo=",
+ "dev": true,
+ "requires": {
+ "level-fix-range": "2.0",
+ "level-hooks": ">=4.4.0 <5",
+ "string-range": "~1.2.1",
+ "xtend": "~2.0.4"
+ },
+ "dependencies": {
+ "level-fix-range": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/level-fix-range/-/level-fix-range-2.0.0.tgz",
+ "integrity": "sha1-xBfWIVlEIVGhnZojZ4aPFyTC1Ug=",
+ "dev": true,
+ "requires": {
+ "clone": "~0.1.9"
+ }
+ },
+ "object-keys": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.2.0.tgz",
+ "integrity": "sha1-zd7AKZiwkb5CvxA1rjLknxy26mc=",
+ "dev": true,
+ "requires": {
+ "foreach": "~2.0.1",
+ "indexof": "~0.0.1",
+ "is": "~0.2.6"
+ }
+ },
+ "xtend": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.0.6.tgz",
+ "integrity": "sha1-XqZXptukRwacLlnFihE4ywxebO4=",
+ "dev": true,
+ "requires": {
+ "is-object": "~0.1.2",
+ "object-keys": "~0.2.0"
+ }
+ }
+ }
+ },
+ "levelup": {
+ "version": "0.18.6",
+ "resolved": "https://registry.npmjs.org/levelup/-/levelup-0.18.6.tgz",
+ "integrity": "sha1-5qAcsIlhbI7MApHCqb0/DETj5es=",
+ "dev": true,
+ "requires": {
+ "bl": "~0.8.1",
+ "deferred-leveldown": "~0.2.0",
+ "errno": "~0.1.1",
+ "prr": "~0.0.0",
+ "readable-stream": "~1.0.26",
+ "semver": "~2.3.1",
+ "xtend": "~3.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "prr": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz",
+ "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "semver": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz",
+ "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz",
+ "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=",
+ "dev": true
+ }
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "line-column-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-2.0.0.tgz",
+ "integrity": "sha512-nz3A+vi4bElhwd62E9+Qk/f9BDYLSzD/4Hy1rir0I4GnMxSTezSymzANyph5N1PgRZ3sSbA+yR5hOuXxc71a0Q==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.4.1"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz",
+ "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==",
+ "dev": true
+ }
+ }
+ },
+ "lines-and-columns": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+ "dev": true
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
+ "dev": true
+ },
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+ "dev": true
+ },
+ "lodash.defaultsdeep": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
+ "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
+ "dev": true
+ },
+ "lodash.flattendeep": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
+ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
+ "dev": true
+ },
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "dev": true
+ },
+ "lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+ "dev": true
+ },
+ "lodash.islength": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.islength/-/lodash.islength-4.0.1.tgz",
+ "integrity": "sha1-Tpho1FJXXXUK/9NYyXlUPcIO1Xc=",
+ "dev": true
+ },
+ "lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=",
+ "dev": true
+ },
+ "lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "lodash.mergewith": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
+ "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
+ "dev": true
+ },
+ "lodash.snakecase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
+ "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=",
+ "dev": true
+ },
+ "lodash.topairs": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.topairs/-/lodash.topairs-4.3.0.tgz",
+ "integrity": "sha1-O23qo31g+xFnE8RsXxfqGQ7EjWQ=",
+ "dev": true
+ },
+ "lodash.upperfirst": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz",
+ "integrity": "sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984=",
+ "dev": true
+ },
+ "lodash.zip": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz",
+ "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ }
+ },
+ "longest-streak": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz",
+ "integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw=="
+ },
+ "loud-rejection": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-2.2.0.tgz",
+ "integrity": "sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ==",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "dev": true
+ },
+ "lowlight": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.13.0.tgz",
+ "integrity": "sha512-bFXLa+UO1eM3zieFAcNqf6rTQ1D5ERFv64/euQbbH/LT3U9XXwH6tOrgUAGWDsQ1QgN3ZhgOcv8p3/S+qKGdTQ==",
+ "requires": {
+ "fault": "^1.0.2",
+ "highlight.js": "~9.16.0"
+ }
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "ltgt": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz",
+ "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=",
+ "dev": true
+ },
+ "magic-string": {
+ "version": "0.25.4",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz",
+ "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==",
+ "dev": true,
+ "requires": {
+ "sourcemap-codec": "^1.4.4"
+ }
+ },
+ "make-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz",
+ "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
+ "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "markdown-escapes": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.3.tgz",
+ "integrity": "sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw=="
+ },
+ "markdown-table": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz",
+ "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q=="
+ },
+ "matcher": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-2.0.0.tgz",
+ "integrity": "sha512-nlmfSlgHBFx36j/Pl/KQPbIaqE8Zf0TqmSMjsuddHDg6PMSVgmyW9HpkLs0o0M1n2GIZ/S2BZBLIww/xjhiGng==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^2.0.0"
+ }
+ },
+ "md-attr-parser": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/md-attr-parser/-/md-attr-parser-1.3.0.tgz",
+ "integrity": "sha512-KTVlfU5Oxo/6kd0YZ2mLP3eWJj+5vzh5mBCxLo3yGl1fzHIgxmtadbE9tHb7TbUBi3XZbl+P0xKeGmakat135w=="
+ },
+ "md5-hex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz",
+ "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==",
+ "dev": true,
+ "requires": {
+ "blueimp-md5": "^2.10.0"
+ }
+ },
+ "md5-o-matic": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz",
+ "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=",
+ "dev": true
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "mdast-comment-marker": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.1.1.tgz",
+ "integrity": "sha512-TWZDaUtPLwKX1pzDIY48MkSUQRDwX/HqbTB4m3iYdL/zosi/Z6Xqfdv0C0hNVKvzrPjZENrpWDt4p4odeVO0Iw=="
+ },
+ "mdast-util-compact": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz",
+ "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==",
+ "requires": {
+ "unist-util-visit": "^1.1.0"
+ }
+ },
+ "mdast-util-definitions": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz",
+ "integrity": "sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA==",
+ "requires": {
+ "unist-util-visit": "^1.0.0"
+ }
+ },
+ "mdast-util-heading-style": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-1.0.5.tgz",
+ "integrity": "sha512-8zQkb3IUwiwOdUw6jIhnwM6DPyib+mgzQuHAe7j2Hy1rIarU4VUxe472bp9oktqULW3xqZE+Kz6OD4Gi7IA3vw=="
+ },
+ "mdast-util-to-hast": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-6.0.2.tgz",
+ "integrity": "sha512-GjcOimC9qHI0yNFAQdBesrZXzUkRdFleQlcoU8+TVNfDW6oLUazUx8MgUoTaUyCJzBOnE5AOgqhpURrSlf0QwQ==",
+ "requires": {
+ "collapse-white-space": "^1.0.0",
+ "detab": "^2.0.0",
+ "mdast-util-definitions": "^1.2.0",
+ "mdurl": "^1.0.1",
+ "trim": "0.0.1",
+ "trim-lines": "^1.0.0",
+ "unist-builder": "^1.0.1",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "mdast-util-to-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.7.tgz",
+ "integrity": "sha512-P+gdtssCoHOX+eJUrrC30Sixqao86ZPlVjR5NEAoy0U79Pfxb1Y0Gntei0+GrnQD4T04X9xA8tcugp90cSmNow=="
+ },
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "meow": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz",
+ "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0",
+ "yargs-parser": "^10.0.0"
+ },
+ "dependencies": {
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ }
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "merge2": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz",
+ "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==",
+ "dev": true
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+ },
+ "micromatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
+ "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.1",
+ "picomatch": "^2.0.5"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "mime-db": {
+ "version": "1.42.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
+ "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ=="
+ },
+ "mime-types": {
+ "version": "2.1.25",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz",
+ "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==",
+ "requires": {
+ "mime-db": "1.42.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "minimist-options": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
+ "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0"
+ },
+ "dependencies": {
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ }
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "multimap": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz",
+ "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==",
+ "dev": true
+ },
+ "multimatch": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz",
+ "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "^3.0.3",
+ "array-differ": "^3.0.0",
+ "array-union": "^2.1.0",
+ "arrify": "^2.0.1",
+ "minimatch": "^3.0.4"
+ }
+ },
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "negotiator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
+ "normalize-url": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
+ "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
+ "dev": true
+ },
+ "npm-path": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz",
+ "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==",
+ "requires": {
+ "which": "^1.2.10"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "npm-which": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz",
+ "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=",
+ "requires": {
+ "commander": "^2.9.0",
+ "npm-path": "^2.0.2",
+ "which": "^1.2.10"
+ }
+ },
+ "obj-props": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/obj-props/-/obj-props-1.2.0.tgz",
+ "integrity": "sha512-ZYpJyCe7O4rhNxB/2SZy8ADJww8RSRBdG36a4MWWq7JwILGJ1m61B90QJtxwDDNA0KzyR8V12Wikpjuux7Gl9Q==",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-inspect": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
+ "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
+ "dev": true
+ },
+ "object-is": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz",
+ "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "object.values": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
+ "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.12.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
+ "observable-to-promise": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-1.0.0.tgz",
+ "integrity": "sha512-cqnGUrNsE6vdVDTPAX9/WeVzwy/z37vdxupdQXU8vgTXRFH72KCZiZga8aca2ulRPIeem8W3vW9rQHBwfIl2WA==",
+ "dev": true,
+ "requires": {
+ "is-observable": "^2.0.0",
+ "symbol-observable": "^1.0.4"
+ }
+ },
+ "octal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/octal/-/octal-1.0.0.tgz",
+ "integrity": "sha1-Y+cWKmjvvrniE1iNWOmJ0eXEUws=",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
+ "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
+ "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "open-editor": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-2.0.1.tgz",
+ "integrity": "sha512-B3KdD7Pl8jYdpBSBBbdYaqVUI3whQjLl1G1+CvhNc8+d7GzKRUq+VuCIx1thxGiqD2oBGRvsZz7QWrBsFP2yVA==",
+ "dev": true,
+ "requires": {
+ "env-editor": "^0.4.0",
+ "line-column-path": "^2.0.0",
+ "open": "^6.2.0"
+ }
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "p-cancelable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+ "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-map": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
+ "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+ "dev": true
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "package-hash": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz",
+ "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.15",
+ "hasha": "^5.0.0",
+ "lodash.flattendeep": "^4.4.0",
+ "release-zalgo": "^1.0.0"
+ }
+ },
+ "package-json": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
+ "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
+ "dev": true,
+ "requires": {
+ "got": "^9.6.0",
+ "registry-auth-token": "^4.0.0",
+ "registry-url": "^5.0.0",
+ "semver": "^6.2.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
+ "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "parse-entities": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz",
+ "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==",
+ "requires": {
+ "character-entities": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "character-reference-invalid": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "parse-ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
+ "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
+ "dev": true
+ },
+ "parse5": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
+ "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+ },
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true
+ },
+ "pbkdf2": {
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "picomatch": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz",
+ "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==",
+ "dev": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-conf": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz",
+ "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0",
+ "load-json-file": "^5.2.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz",
+ "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.15",
+ "parse-json": "^4.0.0",
+ "pify": "^4.0.1",
+ "strip-bom": "^3.0.0",
+ "type-fest": "^0.3.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "dev": true
+ }
+ }
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ },
+ "plur": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/plur/-/plur-3.1.1.tgz",
+ "integrity": "sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==",
+ "requires": {
+ "irregular-plurals": "^2.0.0"
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+ "dev": true
+ },
+ "prettier": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
+ "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
+ "dev": true
+ },
+ "prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "requires": {
+ "fast-diff": "^1.1.2"
+ }
+ },
+ "process-es6": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/process-es6/-/process-es6-0.11.6.tgz",
+ "integrity": "sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "property-information": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.3.0.tgz",
+ "integrity": "sha512-IslotQn1hBCZDY7SaJ3zmCjVea219VTwmOk6Pu3z9haU9m4+T8GwaDubur+6NMHEU+Fjs/6/p66z6QULPkcL1w==",
+ "requires": {
+ "xtend": "^4.0.1"
+ }
+ },
+ "proto-props": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/proto-props/-/proto-props-2.0.0.tgz",
+ "integrity": "sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==",
+ "dev": true
+ },
+ "proxy-addr": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
+ "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
+ "requires": {
+ "forwarded": "~0.1.2",
+ "ipaddr.js": "1.9.0"
+ }
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
+ },
+ "quick-lru": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
+ "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+ },
+ "raw-body": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+ "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+ "requires": {
+ "bytes": "3.1.0",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ }
+ },
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ },
+ "dependencies": {
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "read-pkg-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz",
+ "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==",
+ "dev": true,
+ "requires": {
+ "picomatch": "^2.0.4"
+ }
+ },
+ "redent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
+ "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^3.0.0",
+ "strip-indent": "^2.0.0"
+ },
+ "dependencies": {
+ "indent-string": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "dev": true
+ }
+ }
+ },
+ "regenerate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
+ "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "dependencies": {
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ }
+ }
+ },
+ "regexp-tree": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.16.tgz",
+ "integrity": "sha512-nXWhGJLTWLNdhWF1uqoXQgAOgv8mQGpgXTOk8BWp08YMOKCtn74VoyOJ+AXZ68Dj50Myd+msYs+aGRBzWJ5dJA==",
+ "dev": true
+ },
+ "regexp.prototype.flags": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz",
+ "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
+ "regexpu-core": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz",
+ "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0",
+ "regenerate-unicode-properties": "^8.1.0",
+ "regjsgen": "^0.5.0",
+ "regjsparser": "^0.6.0",
+ "unicode-match-property-ecmascript": "^1.0.4",
+ "unicode-match-property-value-ecmascript": "^1.1.0"
+ }
+ },
+ "registry-auth-token": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz",
+ "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==",
+ "dev": true,
+ "requires": {
+ "rc": "^1.2.8",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "registry-url": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
+ "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
+ "dev": true,
+ "requires": {
+ "rc": "^1.2.8"
+ }
+ },
+ "regjsgen": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
+ "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz",
+ "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==",
+ "dev": true,
+ "requires": {
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ }
+ }
+ },
+ "rehype-format": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-3.0.0.tgz",
+ "integrity": "sha512-NOt2zPE1++TdhxccKvn4B34UTT9rETxgpc9/c3gRMwn6nVCPY1cM7bAEtAeEuOuMAlgBO9QuvpdncwbzTxgUoA==",
+ "requires": {
+ "hast-util-embedded": "^1.0.1",
+ "hast-util-phrasing": "^1.0.0",
+ "html-whitespace-sensitive-tag-names": "^1.0.0",
+ "rehype-minify-whitespace": "^3.0.0",
+ "repeat-string": "^1.5.4",
+ "unist-util-visit-parents": "^3.0.0"
+ },
+ "dependencies": {
+ "unist-util-is": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.1.tgz",
+ "integrity": "sha512-7NYjErP4LJtkEptPR22wO5RsCPnHZZrop7t2SoQzjvpFedCFer4WW8ujj9GI5DkUX7yVcffXLjoURf6h2QUv6Q=="
+ },
+ "unist-util-visit-parents": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.1.tgz",
+ "integrity": "sha512-umEOTkm6/y1gIqPrqet55mYqlvGXCia/v1FSc5AveLAI7jFmOAIbqiwcHcviLcusAkEQt1bq2hixCKO9ltMb2Q==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^4.0.0"
+ }
+ }
+ }
+ },
+ "rehype-katex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-2.0.0.tgz",
+ "integrity": "sha512-Fp3kbixgg6bNd04m5XfhJa2BX073lKFZ5TgBAkS5vLQD20ej2gCrQBUfhLgNqoQeoahi7JiRn4I0jKSA3484Sw==",
+ "requires": {
+ "hast-util-to-text": "^1.0.0",
+ "katex": "^0.11.0",
+ "rehype-parse": "^6.0.0",
+ "unified": "^8.0.0",
+ "unist-util-visit": "^2.0.0"
+ },
+ "dependencies": {
+ "unist-util-is": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.1.tgz",
+ "integrity": "sha512-7NYjErP4LJtkEptPR22wO5RsCPnHZZrop7t2SoQzjvpFedCFer4WW8ujj9GI5DkUX7yVcffXLjoURf6h2QUv6Q=="
+ },
+ "unist-util-visit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.1.tgz",
+ "integrity": "sha512-bEDa5S/O8WRDeI1mLaMoKuFFi89AjF+UAoMNxO+bbVdo06q+53Vhq4iiv1PenL6Rx1ZxIpXIzqZoc5HD2I1oMA==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^4.0.0",
+ "unist-util-visit-parents": "^3.0.0"
+ }
+ },
+ "unist-util-visit-parents": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.1.tgz",
+ "integrity": "sha512-umEOTkm6/y1gIqPrqet55mYqlvGXCia/v1FSc5AveLAI7jFmOAIbqiwcHcviLcusAkEQt1bq2hixCKO9ltMb2Q==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^4.0.0"
+ }
+ }
+ }
+ },
+ "rehype-minify-whitespace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-3.0.0.tgz",
+ "integrity": "sha512-Z5NIG9FxTeK2Ta+eTWCnTVPXu1qC58eCXZA3m/Z7PPinKw82KSR+12c2l1sLLSg27QZOmZrrd9piS8dsAVfliQ==",
+ "requires": {
+ "collapse-white-space": "^1.0.0",
+ "hast-util-embedded": "^1.0.0",
+ "hast-util-has-property": "^1.0.0",
+ "hast-util-is-body-ok-link": "^1.0.0",
+ "hast-util-is-element": "^1.0.0",
+ "html-whitespace-sensitive-tag-names": "^1.0.0",
+ "unist-util-is": "^4.0.0",
+ "unist-util-modify-children": "^1.0.0"
+ },
+ "dependencies": {
+ "unist-util-is": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.1.tgz",
+ "integrity": "sha512-7NYjErP4LJtkEptPR22wO5RsCPnHZZrop7t2SoQzjvpFedCFer4WW8ujj9GI5DkUX7yVcffXLjoURf6h2QUv6Q=="
+ }
+ }
+ },
+ "rehype-parse": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.2.tgz",
+ "integrity": "sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==",
+ "requires": {
+ "hast-util-from-parse5": "^5.0.0",
+ "parse5": "^5.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "rehype-raw": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-4.0.1.tgz",
+ "integrity": "sha512-g74dPCUWeB9EBfTfGF3lGOHSnZwFwN1ssc3Je9OwQO9f8yTkkAIrMqUVxT34h8zpi4ICU051tTLBZbOrzRWpxg==",
+ "requires": {
+ "hast-util-raw": "^5.0.0"
+ }
+ },
+ "rehype-stringify": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-6.0.1.tgz",
+ "integrity": "sha512-JfEPRDD4DiG7jet4md7sY07v6ACeb2x+9HWQtRPm2iA6/ic31hCv1SNBUtpolJASxQ/D8gicXiviW4TJKEMPKQ==",
+ "requires": {
+ "hast-util-to-html": "^6.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "release-zalgo": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
+ "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=",
+ "dev": true,
+ "requires": {
+ "es6-error": "^4.0.1"
+ }
+ },
+ "remark": {
+ "version": "11.0.2",
+ "resolved": "https://registry.npmjs.org/remark/-/remark-11.0.2.tgz",
+ "integrity": "sha512-bh+eJgn8wgmbHmIBOuwJFdTVRVpl3fcVP6HxmpPWO0ULGP9Qkh6INJh0N5Uy7GqlV7DQYGoqaKiEIpM5LLvJ8w==",
+ "requires": {
+ "remark-parse": "^7.0.0",
+ "remark-stringify": "^7.0.0",
+ "unified": "^8.2.0"
+ }
+ },
+ "remark-custom-blocks": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/remark-custom-blocks/-/remark-custom-blocks-2.4.2.tgz",
+ "integrity": "sha512-muyoRvKqTsrackpGiLE9GGC7YbMJeuv0CJQrUeXhZ21QWpmsj1nsB7QdwJHs/fKNbaCLS7Wj46xNGMktKuwABA==",
+ "requires": {
+ "space-separated-tokens": "^1.1.1"
+ }
+ },
+ "remark-highlight.js": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/remark-highlight.js/-/remark-highlight.js-5.1.1.tgz",
+ "integrity": "sha512-e8iD5SMw94rjAHxQTGdJn/RzNYt0zpQ6+nVJ1ZX9GqDWhgOm0pm+bVlABsTkZbtoM3GKQ187vbHQ+nTs4Fl9vQ==",
+ "requires": {
+ "lowlight": "^1.2.0",
+ "unist-util-visit": "^1.0.0"
+ }
+ },
+ "remark-html": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-10.0.0.tgz",
+ "integrity": "sha512-TbSQuedRFjAhXSk1NAbfaTqDK0jKAjfgn82D2ZYFFT8XpJ80uwXc8yVwK/Tl2eqboTMPxzNzCIss4kIucE5M8w==",
+ "requires": {
+ "hast-util-sanitize": "^2.0.0",
+ "hast-util-to-html": "^6.0.0",
+ "mdast-util-to-hast": "^6.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "remark-iframes": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/remark-iframes/-/remark-iframes-3.0.8.tgz",
+ "integrity": "sha512-KleBQQorAQHXtfoAyatzFrLBsyq/MDGcYvjymX93TpXy3C68fYm1FhtKewPg28ro3k8r0P1COOFBrZGwk7MQAg=="
+ },
+ "remark-kbd": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/remark-kbd/-/remark-kbd-1.0.20.tgz",
+ "integrity": "sha512-HTEGQZMlQHs8Y0rc2M6fS1pVt5HxfSmYThcMNNcdJBIOKE1z78cgEVTKqVJz8pAQGZYFwWieLpMm3w9XQug1hA==",
+ "requires": {
+ "is-whitespace-character": "^1.0.0"
+ }
+ },
+ "remark-line-input": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/remark-line-input/-/remark-line-input-0.6.0.tgz",
+ "integrity": "sha512-FPr14FTbINUDzAFORpEZToLEgrUinEsmjVeB4lSPwy/yEh8c4oVgExehv2XnBN7ou75U41FVPQTd5ibR8w3rFQ==",
+ "requires": {
+ "md-attr-parser": "^1.2.0"
+ }
+ },
+ "remark-lint": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-6.0.5.tgz",
+ "integrity": "sha512-o1I3ddm+KNsTxk60wWGI+p2yU1jB1gcm8jo2Sy6VhJ4ab2TrQIp1oQbp5xeLoFXYSh/NAqCpKjHkCM/BYpkFdQ==",
+ "requires": {
+ "remark-message-control": "^4.0.0"
+ }
+ },
+ "remark-lint-blockquote-indentation": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-1.0.3.tgz",
+ "integrity": "sha512-qK4C1l2VmeOVWEAkDYP0CaDtSFoaEBEo5l4oyz1kTkY7YB0Jh7llW2KjuhJz5IzMLmloKJzIyGwlu/odcwaHpg==",
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "plur": "^3.0.0",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-code-block-style": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-1.0.3.tgz",
+ "integrity": "sha512-DL+rudnd9ILP5YXm74tLpMzfWZLqziX7NwIwUhqRefaOyWwxgPPy7hbT59FJqcFc6E/zvDz+Oq4nR1BSV5kEdw==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-definition-case": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-1.0.4.tgz",
+ "integrity": "sha512-ebl8vYOab9iy1Mr29Wo/9CmqcYGRjCfBievIZts08efrxIElWz+jB8/n7C17fh8k0djiiS/Of6W+bfRD+kMXLA==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.4.0"
+ }
+ },
+ "remark-lint-definition-spacing": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-1.0.4.tgz",
+ "integrity": "sha512-UderghITmru72OXB5ErCFhVsY7up2wK/m1bUD3E2dm/TFn73/7WpykENt5UirCDT/aeyoHYl8QXUVL20rAc3XQ==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.4.0"
+ }
+ },
+ "remark-lint-emphasis-marker": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-1.0.3.tgz",
+ "integrity": "sha512-ea2tEVyhZvYxwj6AHsW2qzgEDLljcnzq5taZ3FJFL0KMZYZHfWaIU90H43jrW4seGEtmaP1bmoqJaTavJ2x5Jw==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-fenced-code-flag": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-1.0.3.tgz",
+ "integrity": "sha512-X8Oi6dhfqV9NI3cVg29myvT/NATDHVgRGCpnNz76w7VXwzhBvQtJr1MxZzuPxfWLox+ARCXF2rY9n9hbYFHYTg==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-fenced-code-marker": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-1.0.3.tgz",
+ "integrity": "sha512-JKnojSQ8JkwpIpbNm6wtKEfx8iiv8QIwNHFM06iTCHExMhXa4pJ3wb5M5f0wsWNHtoND3lrw6AcVPoZxEPnflg==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-file-extension": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-1.0.3.tgz",
+ "integrity": "sha512-P5gzsxKmuAVPN7Kq1W0f8Ss0cFKfu+OlezYJWXf+5qOa+9Y5GqHEUOobPnsmNFZrVMiM7JoqJN2C9ZjrUx3N6Q==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-final-definition": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-1.0.3.tgz",
+ "integrity": "sha512-QhbBYy99enfQDeUTElioCHrhgg+SgjMNRlru7/JlOguOufP6wn7AXgn2EVTrLZRoByY0VsNS2jCayXxUTzQ8KA==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-hard-break-spaces": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-1.0.4.tgz",
+ "integrity": "sha512-YM82UpgliZCZhGNmFxEe7ArfhqR5CplFf2bc0k0+8w3rKWKx7EJcGMar2NK410tIi40gGeWtH/pIEypPJFCCiA==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-heading-increment": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-1.0.3.tgz",
+ "integrity": "sha512-/KL4/7D2pNxP07KKgktjcIUS+ga8pYI2k9Q/V91pMfyfSC+RYuCGOLFVJSKV0Affr/4Eqnfhw+gJ9X2HAanNuw==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-heading-style": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-1.0.3.tgz",
+ "integrity": "sha512-ZUhMav0HHUxo5gzLqxQsOf2ZpP/I3m6EEK8q25/kqpCYnwm1uRJ5CQ40PDQx46pmKtVibIMzDmraYovxNG3ovw==",
+ "requires": {
+ "mdast-util-heading-style": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-link-title-style": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-1.0.4.tgz",
+ "integrity": "sha512-61/uH3zDTiozLJqgxp6rHGnVKTChC3UjL3Q0KQDBpprEOL4qLYjTn4fFKscVz776d0uUX6jczrW+GT4AFVOUgg==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1",
+ "vfile-location": "^2.0.1"
+ }
+ },
+ "remark-lint-list-item-content-indent": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-1.0.3.tgz",
+ "integrity": "sha512-ZSIGJG2/6jd1xj/xEoDlkcJBf2Ksw8U6vIGJO0IFIA3BLCbJm2EMWJxto2cfzRvXoACmAaxTJMqW8qatPExa4w==",
+ "requires": {
+ "plur": "^3.0.0",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-list-item-indent": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-1.0.4.tgz",
+ "integrity": "sha512-Sv0gVH6qP1/nFpbJuyyguB9sAD2o42StD2WbEZeUcEexXwRO4u/YaX0Pm5pMtCiEHyN+qyL6ShKBQMtgol9BeA==",
+ "requires": {
+ "plur": "^3.0.0",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-list-item-spacing": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-1.1.3.tgz",
+ "integrity": "sha512-QzDY0Qfk6m+Az0kmxP57OfswIH1WRdd6SIpQLaUEgsTlsbrJOiO0sJYkkOlFPsyJIfp7SV/FCbr+aYCbHF+kRQ==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-maximum-heading-length": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-1.0.3.tgz",
+ "integrity": "sha512-ybcDpR5VHBjtjzdry7AdSjLFwslPo6rdhIJK2+WfHgfeEjIYnlz1uMvp1Z98QMmjpB5JSN83Kzg5fH8/B7poUw==",
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-maximum-line-length": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-1.2.1.tgz",
+ "integrity": "sha512-CSxX1qc+rAqixk8eBrI+yBsUmD8YGfOezFeJWjJRuUaoOvs67oqCIU+I2HbwcUYY8/KnDxF1MCp+uCM0RkjKKw==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.4.0"
+ }
+ },
+ "remark-lint-no-auto-link-without-protocol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-1.0.3.tgz",
+ "integrity": "sha512-k+hg2mXnO4Q9WV+UShPLen5oThvFxcRVWkx2hviVd/nu3eiszBKH3o38csBwjeJoMG3l2ZhdUW8dlOBhq8670Q==",
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-blockquote-without-marker": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-2.0.3.tgz",
+ "integrity": "sha512-faDzKrA6aKidsRXG6gcIlCO8TexLxIxe+n9B3mdnl8mhZGgE0FfWTkIWVMj0IYps/xVsVMf45KxhXgc1wU9kwg==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1",
+ "vfile-location": "^2.0.1"
+ }
+ },
+ "remark-lint-no-consecutive-blank-lines": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-1.0.3.tgz",
+ "integrity": "sha512-2Ef7fPxrfLditA7sTo2Qfqd+xwh/luWl8GzILE5vcWIxLDqKk3dTLJkB5nP+7Cr4kqWJAwXnRkEDd77ehrRV3A==",
+ "requires": {
+ "plur": "^3.0.0",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-duplicate-headings": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-1.0.4.tgz",
+ "integrity": "sha512-QuPw+VG502Ctpd/jBjnBYuRXTg0ToP3D+dd3TYds4TRcdgaEFYTZfQ5zjK6XrxLMg0Hn9/WpXr4UqTlV4YZupA==",
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-stringify-position": "^2.0.0",
+ "unist-util-visit": "^1.1.1"
+ },
+ "dependencies": {
+ "unist-util-stringify-position": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.2.tgz",
+ "integrity": "sha512-nK5n8OGhZ7ZgUwoUbL8uiVRwAbZyzBsB/Ddrlbu6jwwubFza4oe15KlyEaLNMXQW1svOQq4xesUeqA85YrIUQA==",
+ "requires": {
+ "@types/unist": "^2.0.2"
+ }
+ }
+ }
+ },
+ "remark-lint-no-emphasis-as-heading": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-1.0.3.tgz",
+ "integrity": "sha512-HEmyeyKciUz95+CgpAH98RPR73jq5u5CZb2FOMSqgNl9B6FZXqVpq9F3txPqUw3nAqFYOAEnfiaoRgcqtioh0Q==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-file-name-articles": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-1.0.3.tgz",
+ "integrity": "sha512-YZDJDKUWZEmhrO6tHB0u0K0K2qJKxyg/kryr14OaRMvWLS62RgMn97sXPZ38XOSN7mOcCnl0k7/bClghJXx0sg==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-consecutive-dashes": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-1.0.3.tgz",
+ "integrity": "sha512-7f4vyXn/ca5lAguWWC3eu5hi8oZ7etX7aQlnTSgQZeslnJCbVJm6V6prFJKAzrqbBzMicUXr5pZLBDoXyTvHHw==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-irregular-characters": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-1.0.3.tgz",
+ "integrity": "sha512-b4xIy1Yi8qZpM2vnMN+6gEujagPGxUBAs1judv6xJQngkl5d5zT8VQZsYsTGHku4NWHjjh3b7vK5mr0/yp4JSg==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-mixed-case": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-1.0.3.tgz",
+ "integrity": "sha512-d7rJ4c8CzDbEbGafw2lllOY8k7pvnsO77t8cV4PHFylwQ3hmCdTHLuDvK87G3DaWCeKclp0PMyamfOgJWKMkPA==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-outer-dashes": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-1.0.4.tgz",
+ "integrity": "sha512-+bZvvme2Bm3Vp5L2iKuvGHYVmHKrTkkRt8JqJPGepuhvBvT4Q7+CgfKyMtC/hIjyl+IcuJQ2H0qPRzdicjy1wQ==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-heading-punctuation": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-1.0.3.tgz",
+ "integrity": "sha512-JQD05RjLS99ePBQ4Bed1uWsQTlIMBTcGgIgF6jFXSCEqhwnrIUDwk6S3MG1RZsKd3TLw2xuT/i+POpfBc2+1kQ==",
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-inline-padding": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-1.0.4.tgz",
+ "integrity": "sha512-u5rgbDkcfVv645YxxOwoGBBJbsHEwWm/XqnO8EhfKTxkfKOF4ZItG7Ajhj89EDaeXMkvCcB/avBl4bj50eJH3g==",
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.4.0"
+ }
+ },
+ "remark-lint-no-literal-urls": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-1.0.3.tgz",
+ "integrity": "sha512-H5quyMzl2kaewK+jYD1FI0G1SIinIsIp4DEyOUwIR+vYUoKwo0B4vvW0cmPpD1dgqqxHYx0B2B0JQQKFVWzGiw==",
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-multiple-toplevel-headings": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-1.0.4.tgz",
+ "integrity": "sha512-0wDddx6htN5sL9/rofesiQF0oEgwN5224UmueiDx0ZUlYrn6VS0/SS0X3WWxtXmyeqlExfWF3D/g89tNs7dcjw==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-stringify-position": "^2.0.0",
+ "unist-util-visit": "^1.1.1"
+ },
+ "dependencies": {
+ "unist-util-stringify-position": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.2.tgz",
+ "integrity": "sha512-nK5n8OGhZ7ZgUwoUbL8uiVRwAbZyzBsB/Ddrlbu6jwwubFza4oe15KlyEaLNMXQW1svOQq4xesUeqA85YrIUQA==",
+ "requires": {
+ "@types/unist": "^2.0.2"
+ }
+ }
+ }
+ },
+ "remark-lint-no-shell-dollars": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-1.0.3.tgz",
+ "integrity": "sha512-fT3lQMTjEkPryL+63qDP1NfrohP3tG5i3SkNWSSR4VLU6OSsSSXlHGQGjo0ag//+EPKHB5/9frB/YQ0gDEPRGQ==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-shortcut-reference-image": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-1.0.3.tgz",
+ "integrity": "sha512-CGm27X54kXp/5ehXejDTsZjqzK4uIhLGcrFzN3k/KjdwunQouEY92AARGrLSEuJ1hQx0bJsmnvr/hvQyWAfNJg==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-shortcut-reference-link": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-1.0.4.tgz",
+ "integrity": "sha512-FXdMJYqspZBhPlxYqfVgVluVXjxStg0RHJzqrk8G9wS8fCS62AE3reoaoiCahwoH1tfKcA+poktbKqDAmZo7Jg==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-table-indentation": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-1.0.4.tgz",
+ "integrity": "sha512-H4VGHcg1k8sTIbwazFYLNbDqpPR+M0aHHKDf+93b/xyd27Dp0ODQrMnQbls1Cls5qOAQnwAQbx+75wcpFxP3OQ==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.4.0"
+ }
+ },
+ "remark-lint-ordered-list-marker-style": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-1.0.3.tgz",
+ "integrity": "sha512-24TmW1eUa/2JlwprZg9jJ8LKLxNGKnlKiI5YOhN4taUp2yv8daqlV9vR54yfn/ZZQh6EQvbIX0jeVY9NYgQUtw==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-ordered-list-marker-value": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-1.0.3.tgz",
+ "integrity": "sha512-WQ9yLD8cI9DSk/CE+APKUT6ZeXp0/RzOnsYqzMxEa8n1QHSqRSF7hVEiisqNTG9+gV64OEE66e+m4c7RVSUADw==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-rule-style": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-1.0.3.tgz",
+ "integrity": "sha512-SJe7IFORYRdo8JUhMSdcTktVAUVNVp36YYl1ZD9CfHqQHWlFD+3vWYzJXOZfog/i+CyWf7Yi0WVYmQes+167dA==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-strong-marker": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-1.0.3.tgz",
+ "integrity": "sha512-PFkH282dCwfRsVEw9IxbYbaZBY4UcTuT2SN+lA3R0cBeocWnOySVw8YEm4sv9JfV8BLcQA5gc4tj66/U3KCScw==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-table-cell-padding": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-1.0.4.tgz",
+ "integrity": "sha512-AQWWtV1yca1PN27QaFRJbBK6Ro/bopv1XnVKxj/iMebhOU2D2FBJ8rXmMZXVMC3G9OB2WSzGgqH3nP6QY12LoA==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.4.0"
+ }
+ },
+ "remark-lint-table-pipe-alignment": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-1.0.3.tgz",
+ "integrity": "sha512-5fhEMcKqNjK6S/y7cVG0+iVqhmhXFW+awIuN7vOBhmDbZ3HF9rCCy20XiHoaG6FzrPJ+zfkjK/QZAbq2Vf58HA==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-table-pipes": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-1.0.3.tgz",
+ "integrity": "sha512-K9NnGZp6i0m/CaOH7ZT4Ymt2seyiRPcBIlNMMGXBm6gpy34KJDDxYqsNUrh+j7dR+Zg4rYAQLnr3BiSHvj+rbQ==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-unordered-list-marker-style": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-1.0.3.tgz",
+ "integrity": "sha512-0nn/Yscy5ImO4fqByrk/Ua02UwGx8LRu+0kdCbkVz4IxPO5qxTEfyccUQZR71zTdMJp1d2OeqyD9XtMaO4X7Ww==",
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-math": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-2.0.0.tgz",
+ "integrity": "sha512-eQ8LLVIKVJbvNj0HCuuYdaBpHEiv/AX+3nb1ErUSPMNFMzvjKXe+H450vr9bTii9Ih5lRX7Wx/7sDVLLCfXJpg=="
+ },
+ "remark-message-control": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-4.2.0.tgz",
+ "integrity": "sha512-WXH2t5ljTyhsXlK1zPBLF3iPHbXl58R94phPMreS1xcHWBZJt6Oiu8RtNjy1poZFb3PqKnbYLJeR/CWcZ1bTFw==",
+ "requires": {
+ "mdast-comment-marker": "^1.0.0",
+ "unified-message-control": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "remark-multiple-choice": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/remark-multiple-choice/-/remark-multiple-choice-0.1.0.tgz",
+ "integrity": "sha512-hC0kagffIv21wNe415sBQqac3cHTqHrZJN4MdhxJciKm5ianfxSwMikgZgXcsWPtgaKm62AViLhiVWsjbfegeA==",
+ "requires": {
+ "fs-extra": "^4.0.1",
+ "npm-which": "^3.0.1",
+ "unist-util-visit": "^1.1.3"
+ }
+ },
+ "remark-parse": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-7.0.2.tgz",
+ "integrity": "sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==",
+ "requires": {
+ "collapse-white-space": "^1.0.2",
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-whitespace-character": "^1.0.0",
+ "is-word-character": "^1.0.0",
+ "markdown-escapes": "^1.0.0",
+ "parse-entities": "^1.1.0",
+ "repeat-string": "^1.5.4",
+ "state-toggle": "^1.0.0",
+ "trim": "0.0.1",
+ "trim-trailing-lines": "^1.0.0",
+ "unherit": "^1.0.4",
+ "unist-util-remove-position": "^1.0.0",
+ "vfile-location": "^2.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "remark-preset-lint-markdown-style-guide": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-2.1.3.tgz",
+ "integrity": "sha512-H/jSoLvTY8abUcB+7/062I2oHevlHcHdrfRMP2RMh19QA1wmARgNEn3tZfdBXFq1TpzhevGgb6VwSdOjdU8NOQ==",
+ "requires": {
+ "remark-lint": "^6.0.0",
+ "remark-lint-blockquote-indentation": "^1.0.0",
+ "remark-lint-code-block-style": "^1.0.0",
+ "remark-lint-definition-case": "^1.0.0",
+ "remark-lint-definition-spacing": "^1.0.0",
+ "remark-lint-emphasis-marker": "^1.0.0",
+ "remark-lint-fenced-code-flag": "^1.0.0",
+ "remark-lint-fenced-code-marker": "^1.0.0",
+ "remark-lint-file-extension": "^1.0.0",
+ "remark-lint-final-definition": "^1.0.0",
+ "remark-lint-hard-break-spaces": "^1.0.0",
+ "remark-lint-heading-increment": "^1.0.0",
+ "remark-lint-heading-style": "^1.0.0",
+ "remark-lint-link-title-style": "^1.0.0",
+ "remark-lint-list-item-content-indent": "^1.0.0",
+ "remark-lint-list-item-indent": "^1.0.0",
+ "remark-lint-list-item-spacing": "^1.0.0",
+ "remark-lint-maximum-heading-length": "^1.0.0",
+ "remark-lint-maximum-line-length": "^1.0.0",
+ "remark-lint-no-auto-link-without-protocol": "^1.0.0",
+ "remark-lint-no-blockquote-without-marker": "^2.0.0",
+ "remark-lint-no-consecutive-blank-lines": "^1.0.0",
+ "remark-lint-no-duplicate-headings": "^1.0.0",
+ "remark-lint-no-emphasis-as-heading": "^1.0.0",
+ "remark-lint-no-file-name-articles": "^1.0.0",
+ "remark-lint-no-file-name-consecutive-dashes": "^1.0.0",
+ "remark-lint-no-file-name-irregular-characters": "^1.0.0",
+ "remark-lint-no-file-name-mixed-case": "^1.0.0",
+ "remark-lint-no-file-name-outer-dashes": "^1.0.0",
+ "remark-lint-no-heading-punctuation": "^1.0.0",
+ "remark-lint-no-inline-padding": "^1.0.0",
+ "remark-lint-no-literal-urls": "^1.0.0",
+ "remark-lint-no-multiple-toplevel-headings": "^1.0.0",
+ "remark-lint-no-shell-dollars": "^1.0.0",
+ "remark-lint-no-shortcut-reference-image": "^1.0.0",
+ "remark-lint-no-shortcut-reference-link": "^1.0.0",
+ "remark-lint-no-table-indentation": "^1.0.0",
+ "remark-lint-ordered-list-marker-style": "^1.0.0",
+ "remark-lint-ordered-list-marker-value": "^1.0.0",
+ "remark-lint-rule-style": "^1.0.0",
+ "remark-lint-strong-marker": "^1.0.0",
+ "remark-lint-table-cell-padding": "^1.0.0",
+ "remark-lint-table-pipe-alignment": "^1.0.0",
+ "remark-lint-table-pipes": "^1.0.0",
+ "remark-lint-unordered-list-marker-style": "^1.0.0"
+ }
+ },
+ "remark-rehype": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-5.0.0.tgz",
+ "integrity": "sha512-tgo+AeOotuh9FnGMkEPbE6C3OfdARqqSxT0H/KNGAiTwJLiDoRSm6x/ytqPZTyYSiQ/exbi/kx7k6uUvqYL1wQ==",
+ "requires": {
+ "mdast-util-to-hast": "^6.0.0"
+ }
+ },
+ "remark-select": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/remark-select/-/remark-select-1.0.0.tgz",
+ "integrity": "sha512-ycaKAGGxs2IOEeZkTgO8VmthrHUj3Mhfcq+3Sa4QOY9YrN84wzawjQIHAkGgktObxOT6KweJYlNrVrZ78RRQpA==",
+ "requires": {
+ "md-attr-parser": "^1.2.1"
+ }
+ },
+ "remark-stringify": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-7.0.4.tgz",
+ "integrity": "sha512-qck+8NeA1D0utk1ttKcWAoHRrJxERYQzkHDyn+pF5Z4whX1ug98uCNPPSeFgLSaNERRxnD6oxIug6DzZQth6Pg==",
+ "requires": {
+ "ccount": "^1.0.0",
+ "is-alphanumeric": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-whitespace-character": "^1.0.0",
+ "longest-streak": "^2.0.1",
+ "markdown-escapes": "^1.0.0",
+ "markdown-table": "^1.1.0",
+ "mdast-util-compact": "^1.0.0",
+ "parse-entities": "^1.0.2",
+ "repeat-string": "^1.5.4",
+ "state-toggle": "^1.0.0",
+ "stringify-entities": "^2.0.0",
+ "unherit": "^1.0.4",
+ "xtend": "^4.0.1"
+ }
+ },
+ "remark-text-input": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/remark-text-input/-/remark-text-input-0.7.1.tgz",
+ "integrity": "sha512-xv4dZiO1iW1KrkMcaYVlRlvtd28lYwXBjA0FH2ljqQKjp8idQH42JHOtI0fTlQhCpxVra0iqUQqvCLMMNWBnNw==",
+ "requires": {
+ "md-attr-parser": "^1.2.1"
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ },
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
+ },
+ "require-precompiled": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz",
+ "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=",
+ "dev": true
+ },
+ "reserved-words": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz",
+ "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^5.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+ "dev": true,
+ "requires": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "requires": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "rollup": {
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.27.0.tgz",
+ "integrity": "sha512-yaMna4MJ8LLEHhHl1ilgHakylf0LKeQctDxhngZLQ+W57GnXa5vtH7XKaK8zlAhNEhlWiH5YFVFt+QCDPUmNkw==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "*",
+ "@types/node": "*",
+ "acorn": "^7.1.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
+ "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
+ "dev": true
+ }
+ }
+ },
+ "rollup-plugin-commonjs": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz",
+ "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==",
+ "dev": true,
+ "requires": {
+ "estree-walker": "^0.6.1",
+ "is-reference": "^1.1.2",
+ "magic-string": "^0.25.2",
+ "resolve": "^1.11.0",
+ "rollup-pluginutils": "^2.8.1"
+ }
+ },
+ "rollup-plugin-node-builtins": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz",
+ "integrity": "sha1-JKH+1KQyV7a2Q3HYq8bOGrFFl+k=",
+ "dev": true,
+ "requires": {
+ "browserify-fs": "^1.0.0",
+ "buffer-es6": "^4.9.2",
+ "crypto-browserify": "^3.11.0",
+ "process-es6": "^0.11.2"
+ }
+ },
+ "rollup-plugin-node-globals": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.4.0.tgz",
+ "integrity": "sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.7.3",
+ "buffer-es6": "^4.9.3",
+ "estree-walker": "^0.5.2",
+ "magic-string": "^0.22.5",
+ "process-es6": "^0.11.6",
+ "rollup-pluginutils": "^2.3.1"
+ },
+ "dependencies": {
+ "estree-walker": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz",
+ "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==",
+ "dev": true
+ },
+ "magic-string": {
+ "version": "0.22.5",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
+ "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==",
+ "dev": true,
+ "requires": {
+ "vlq": "^0.2.2"
+ }
+ }
+ }
+ },
+ "rollup-plugin-node-resolve": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz",
+ "integrity": "sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "^2.0.0",
+ "is-module": "^1.0.0",
+ "resolve": "^1.1.6"
+ }
+ },
+ "rollup-plugin-uglify": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.3.tgz",
+ "integrity": "sha512-PIv3CfhZJlOG8C85N0GX+uK09TPggmAS6Nk6fpp2ELzDAV5VUhNzOURDU2j7+MwuRr0zq9IZttUTADc/jH8Gkg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "jest-worker": "^24.0.0",
+ "serialize-javascript": "^1.9.0",
+ "uglify-js": "^3.4.9"
+ }
+ },
+ "rollup-pluginutils": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
+ "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
+ "dev": true,
+ "requires": {
+ "estree-walker": "^0.6.1"
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "run-parallel": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
+ "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
+ "dev": true
+ },
+ "rxjs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
+ "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "safe-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz",
+ "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==",
+ "dev": true,
+ "requires": {
+ "regexp-tree": "~0.1.1"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "semver-diff": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "dev": true,
+ "requires": {
+ "semver": "^5.0.3"
+ }
+ },
+ "send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.7.2",
+ "mime": "1.6.0",
+ "ms": "2.1.1",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ }
+ }
+ },
+ "serialize-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
+ "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=",
+ "dev": true
+ },
+ "serialize-javascript": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz",
+ "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==",
+ "dev": true
+ },
+ "serve-static": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.17.1"
+ }
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ }
+ }
+ },
+ "sliced": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
+ "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "sort-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
+ "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.1",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
+ "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "sourcemap-codec": {
+ "version": "1.4.6",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz",
+ "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==",
+ "dev": true
+ },
+ "space-separated-tokens": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.4.tgz",
+ "integrity": "sha512-UyhMSmeIqZrQn2UdjYpxEkwY9JUrn8pP+7L4f91zRzOQuI8MF1FGLfYU9DKCYeLdo7LXMxwrX5zKFy7eeeVHuA=="
+ },
+ "spdx-correct": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "dev": true
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "stack-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz",
+ "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==",
+ "dev": true
+ },
+ "state-toggle": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.2.tgz",
+ "integrity": "sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw=="
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+ },
+ "string-range": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/string-range/-/string-range-1.2.2.tgz",
+ "integrity": "sha1-qJPtNH5yKZvIO++78qaSqNI51d0=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "string.prototype.trimleft": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
+ "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "function-bind": "^1.1.1"
+ }
+ },
+ "string.prototype.trimright": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
+ "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "function-bind": "^1.1.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "stringify-entities": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-2.0.0.tgz",
+ "integrity": "sha512-fqqhZzXyAM6pGD9lky/GOPq6V4X0SeTAFBl0iXb/BzOegl40gpf/bV3QQP7zULNYvjr6+Dx8SCaDULjVoOru0A==",
+ "requires": {
+ "character-entities-html4": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.2",
+ "is-hexadecimal": "^1.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "strip-bom-buf": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-2.0.0.tgz",
+ "integrity": "sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.1"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "style-to-object": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.2.3.tgz",
+ "integrity": "sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng==",
+ "requires": {
+ "inline-style-parser": "0.1.1"
+ }
+ },
+ "supertap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz",
+ "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "indent-string": "^3.2.0",
+ "js-yaml": "^3.10.0",
+ "serialize-error": "^2.1.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "supports-hyperlinks": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz",
+ "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^2.0.0",
+ "supports-color": "^5.0.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "symbol-observable": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
+ "dev": true
+ },
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+ "dev": true,
+ "requires": {
+ "execa": "^0.7.0"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "the-argv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/the-argv/-/the-argv-1.0.0.tgz",
+ "integrity": "sha1-AIRwUAVzDdhNt1UlPJMa45jblSI=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "time-zone": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz",
+ "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-readable-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+ "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+ "dev": true
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "dependencies": {
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ }
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+ },
+ "trim": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
+ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0="
+ },
+ "trim-lines": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.2.tgz",
+ "integrity": "sha512-3GOuyNeTqk3FAqc3jOJtw7FTjYl94XBR5aD9QnDbK/T4CA9sW/J0l9RoaRPE9wyPP7NF331qnHnvJFBJ+IDkmQ=="
+ },
+ "trim-newlines": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
+ "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
+ "dev": true
+ },
+ "trim-off-newlines": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
+ "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+ "trim-trailing-lines": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz",
+ "integrity": "sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q=="
+ },
+ "trough": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz",
+ "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q=="
+ },
+ "tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-fest": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz",
+ "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==",
+ "dev": true
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "typedarray-to-buffer": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz",
+ "integrity": "sha1-m7i6DoQfs/TPH+fCRenz+opf6Zw=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.6.9",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz",
+ "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==",
+ "dev": true,
+ "requires": {
+ "commander": "~2.20.3",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "uid2": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
+ "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=",
+ "dev": true
+ },
+ "unherit": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz",
+ "integrity": "sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==",
+ "requires": {
+ "inherits": "^2.0.1",
+ "xtend": "^4.0.1"
+ }
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+ "dev": true,
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "^1.0.4",
+ "unicode-property-aliases-ecmascript": "^1.0.4"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
+ "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
+ "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
+ "dev": true
+ },
+ "unified": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz",
+ "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==",
+ "requires": {
+ "bail": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^2.0.0",
+ "trough": "^1.0.0",
+ "vfile": "^4.0.0"
+ }
+ },
+ "unified-lint-rule": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.4.tgz",
+ "integrity": "sha512-q9wY6S+d38xRAuWQVOMjBQYi7zGyKkY23ciNafB8JFVmDroyKjtytXHCg94JnhBCXrNqpfojo3+8D+gmF4zxJQ==",
+ "requires": {
+ "wrapped": "^1.0.1"
+ }
+ },
+ "unified-message-control": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-1.0.4.tgz",
+ "integrity": "sha512-e1dEtN4Z/TvLn/qHm+xeZpzqhJTtfZusFErk336kkZVpqrJYiV9ptxq+SbRPFMlN0OkjDYHmVJ929KYjsMTo3g==",
+ "requires": {
+ "trim": "0.0.1",
+ "unist-util-visit": "^1.0.0",
+ "vfile-location": "^2.0.0"
+ }
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "^1.0.0"
+ }
+ },
+ "unique-temp-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz",
+ "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1",
+ "os-tmpdir": "^1.0.1",
+ "uid2": "0.0.3"
+ }
+ },
+ "unist-builder": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.4.tgz",
+ "integrity": "sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==",
+ "requires": {
+ "object-assign": "^4.1.0"
+ }
+ },
+ "unist-util-find-after": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-2.0.4.tgz",
+ "integrity": "sha512-zo0ShIr+E/aU9xSK7JC9Kb+WP9seTFCuqVYdo5+HJSjN009XMfhiA1FIExEKzdDP1UsgvKGleGlB/pSdTSqZww==",
+ "requires": {
+ "unist-util-is": "^3.0.0"
+ }
+ },
+ "unist-util-generated": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.5.tgz",
+ "integrity": "sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw=="
+ },
+ "unist-util-inspect": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-5.0.0.tgz",
+ "integrity": "sha512-gsw+mcgsyfV5DjSXARb9lPziDUZGhB2OE6Z8hfmJ3HIL+fUdBhYS8r8ByD8NN6/7aZyCEDa4M+n0Rn5SPPu9Gw==",
+ "dev": true,
+ "requires": {
+ "is-empty": "^1.0.0"
+ }
+ },
+ "unist-util-is": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz",
+ "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A=="
+ },
+ "unist-util-modify-children": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.5.tgz",
+ "integrity": "sha512-XeL5qqyoS3TEueCKEzHusWXE9JBDJPE4rl6LmcLOwlzv0RIZrcMNqKx02GSK3Ms4v45ldu+ltPxG42FBMVdPZw==",
+ "requires": {
+ "array-iterate": "^1.0.0"
+ }
+ },
+ "unist-util-position": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.4.tgz",
+ "integrity": "sha512-tWvIbV8goayTjobxDIr4zVTyG+Q7ragMSMeKC3xnPl9xzIc0+she8mxXLM3JVNDDsfARPbCd3XdzkyLdo7fF3g=="
+ },
+ "unist-util-remove-position": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz",
+ "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==",
+ "requires": {
+ "unist-util-visit": "^1.1.0"
+ }
+ },
+ "unist-util-stringify-position": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.2.tgz",
+ "integrity": "sha512-nK5n8OGhZ7ZgUwoUbL8uiVRwAbZyzBsB/Ddrlbu6jwwubFza4oe15KlyEaLNMXQW1svOQq4xesUeqA85YrIUQA==",
+ "requires": {
+ "@types/unist": "^2.0.2"
+ }
+ },
+ "unist-util-visit": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
+ "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==",
+ "requires": {
+ "unist-util-visit-parents": "^2.0.0"
+ }
+ },
+ "unist-util-visit-parents": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz",
+ "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==",
+ "requires": {
+ "unist-util-is": "^3.0.0"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "update-notifier": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz",
+ "integrity": "sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ==",
+ "dev": true,
+ "requires": {
+ "boxen": "^3.0.0",
+ "chalk": "^2.0.1",
+ "configstore": "^4.0.0",
+ "has-yarn": "^2.1.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^2.0.0",
+ "is-installed-globally": "^0.1.0",
+ "is-npm": "^3.0.0",
+ "is-yarn-global": "^0.3.0",
+ "latest-version": "^5.0.0",
+ "semver-diff": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ }
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url-parse-lax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+ "dev": true,
+ "requires": {
+ "prepend-http": "^2.0.0"
+ }
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+ },
+ "v8-compile-cache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
+ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+ },
+ "vfile": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.0.2.tgz",
+ "integrity": "sha512-yhoTU5cDMSsaeaMfJ5g0bUKYkYmZhAh9fn9TZicxqn+Cw4Z439il2v3oT9S0yjlpqlI74aFOQCt3nOV+pxzlkw==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "replace-ext": "1.0.0",
+ "unist-util-stringify-position": "^2.0.0",
+ "vfile-message": "^2.0.0"
+ }
+ },
+ "vfile-location": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz",
+ "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA=="
+ },
+ "vfile-message": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.2.tgz",
+ "integrity": "sha512-gNV2Y2fDvDOOqq8bEe7cF3DXU6QgV4uA9zMR2P8tix11l1r7zju3zry3wZ8sx+BEfuO6WQ7z2QzfWTvqHQiwsA==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^2.0.0"
+ }
+ },
+ "vfile-reporter": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.0.tgz",
+ "integrity": "sha512-8Is0XxFxWJUhPJdOg3CyZTqd3ICCWg6r304PuBl818ZG91h4FMS3Q+lrOPS+cs5/DZK3H0+AkJdH0J8JEwKtDA==",
+ "requires": {
+ "repeat-string": "^1.5.0",
+ "string-width": "^4.0.0",
+ "supports-color": "^6.0.0",
+ "unist-util-stringify-position": "^2.0.0",
+ "vfile-sort": "^2.1.2",
+ "vfile-statistics": "^1.1.0"
+ }
+ },
+ "vfile-sort": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.2.1.tgz",
+ "integrity": "sha512-5dt7xEhC44h0uRQKhbM2JAe0z/naHphIZlMOygtMBM9Nn0pZdaX5fshhwWit9wvsuP8t/wp43nTDRRErO1WK8g=="
+ },
+ "vfile-statistics": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.3.tgz",
+ "integrity": "sha512-CstaK/ebTz1W3Qp41Bt9Lj/2DmumFsCwC2sKahDNSPh0mPh7/UyMLCoU8ZBX34CRU0d61B4W41yIFsV0NKMZeA=="
+ },
+ "vlq": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
+ "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
+ "dev": true
+ },
+ "wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "dev": true,
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "web-namespaces": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.3.tgz",
+ "integrity": "sha512-r8sAtNmgR0WKOKOxzuSgk09JsHlpKlB+uHi937qypOu3PZ17UxPrierFKDye/uNHjNTTEshu5PId8rojIPj/tA=="
+ },
+ "well-known-symbols": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz",
+ "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "widest-line": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true
+ },
+ "wrapped": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz",
+ "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=",
+ "requires": {
+ "co": "3.1.0",
+ "sliced": "^1.0.1"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "write-file-atomic": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz",
+ "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ },
+ "dependencies": {
+ "typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "requires": {
+ "is-typedarray": "^1.0.0"
+ }
+ }
+ }
+ },
+ "write-json-file": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz",
+ "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=",
+ "dev": true,
+ "requires": {
+ "detect-indent": "^5.0.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "pify": "^3.0.0",
+ "sort-keys": "^2.0.0",
+ "write-file-atomic": "^2.0.0"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ }
+ }
+ },
+ "write-pkg": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz",
+ "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==",
+ "dev": true,
+ "requires": {
+ "sort-keys": "^2.0.0",
+ "write-json-file": "^2.2.0"
+ }
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "dev": true
+ },
+ "xo": {
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/xo/-/xo-0.25.3.tgz",
+ "integrity": "sha512-125on+kPp6oi+EfoAajJ58cGLxIurZqWrehhdqoApWXpano9GL5D0ElcSlbG7UeYAfmNSwKJGTxHoLsHLhrZqg==",
+ "dev": true,
+ "requires": {
+ "arrify": "^2.0.1",
+ "debug": "^4.1.0",
+ "eslint": "^6.4.0",
+ "eslint-config-prettier": "^6.3.0",
+ "eslint-config-xo": "^0.27.1",
+ "eslint-formatter-pretty": "^2.0.0",
+ "eslint-plugin-ava": "^9.0.0",
+ "eslint-plugin-eslint-comments": "^3.0.1",
+ "eslint-plugin-import": "^2.18.2",
+ "eslint-plugin-no-use-extend-native": "^0.4.0",
+ "eslint-plugin-node": "^10.0.0",
+ "eslint-plugin-prettier": "^3.1.1",
+ "eslint-plugin-promise": "^4.0.0",
+ "eslint-plugin-unicorn": "^12.0.0",
+ "find-cache-dir": "^3.0.0",
+ "get-stdin": "^7.0.0",
+ "globby": "^9.0.0",
+ "has-flag": "^4.0.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.mergewith": "^4.6.2",
+ "meow": "^5.0.0",
+ "multimatch": "^4.0.0",
+ "open-editor": "^2.0.1",
+ "path-exists": "^4.0.0",
+ "pkg-conf": "^3.1.0",
+ "prettier": "^1.15.2",
+ "resolve-cwd": "^3.0.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^6.3.0",
+ "slash": "^3.0.0",
+ "update-notifier": "^3.0.1",
+ "xo-init": "^0.7.0"
+ },
+ "dependencies": {
+ "@nodelib/fs.stat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "dir-glob": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
+ "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+ "dev": true,
+ "requires": {
+ "path-type": "^3.0.0"
+ }
+ },
+ "fast-glob": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
+ "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
+ "dev": true,
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.1.2",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.3",
+ "micromatch": "^3.1.10"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "globby": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz",
+ "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^1.0.2",
+ "dir-glob": "^2.2.2",
+ "fast-glob": "^2.2.6",
+ "glob": "^7.1.3",
+ "ignore": "^4.0.3",
+ "pify": "^4.0.1",
+ "slash": "^2.0.0"
+ },
+ "dependencies": {
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ }
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "xo-init": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/xo-init/-/xo-init-0.7.0.tgz",
+ "integrity": "sha512-mrrCKMu52vz0u2tiOl8DoG709pBtnSp58bb4/j58a4jeXjrb1gV7dxfOBjOlXitYtfW2QnlxxxfAojoFcpynDg==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.0",
+ "execa": "^0.9.0",
+ "has-yarn": "^1.0.0",
+ "minimist": "^1.1.3",
+ "path-exists": "^3.0.0",
+ "read-pkg-up": "^3.0.0",
+ "the-argv": "^1.0.0",
+ "write-pkg": "^3.1.0"
+ },
+ "dependencies": {
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "execa": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz",
+ "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "has-yarn": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz",
+ "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ },
+ "yargs-parser": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
+ "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ },
+ "zwitch": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.4.tgz",
+ "integrity": "sha512-YO803/X+13GNaZB7fVopjvHH0uWQKgJkgKnU1YCjxShjKGVuN9PPHHW8g+uFDpkHpSTNi3rCMKMewIcbC1BAYg=="
+ }
+ }
+}
diff --git a/package.json b/package.json
index 54e29a4..f702853 100644
--- a/package.json
+++ b/package.json
@@ -4,46 +4,48 @@
"description": "",
"main": "app.js",
"scripts": {
+ "pretest": "xo",
"start": "node app.js",
"build": "./node_modules/.bin/rollup -c"
},
"dependencies": {
"directory-tree": "^2.0.0",
"express": "^4.15.5",
- "rehype-format": "^2.2.0",
- "rehype-katex": "^1.0.0",
- "rehype-raw": "^2.0.0",
- "rehype-stringify": "^3.0.0",
- "remark": "^8.0.0",
+ "rehype-format": "3.x.x",
+ "rehype-katex": "2.x.x",
+ "rehype-raw": "4.x.x",
+ "rehype-stringify": "6.x.x",
+ "remark": "11.x.x",
"remark-custom-blocks": "^2.1.1",
"remark-highlight.js": "^5.0.0",
- "remark-html": "^6.0.1",
- "remark-iframes": "^3.0.1",
+ "remark-html": "10.x.x",
+ "remark-iframes": "3.x.x",
"remark-kbd": "^1.0.6",
- "remark-line-input": "^0.3.0",
- "remark-text-input": "^0.5.0",
- "remark-math": "^1.0.0",
+ "remark-line-input": "0.6.x",
+ "remark-text-input": "0.7.x",
+ "remark-math": "2.x.x",
"remark-multiple-choice": "^0.1.0",
- "remark-parse": "^5.0.0",
+ "remark-parse": "7.x.x",
"remark-preset-lint-markdown-style-guide": "^2.1.1",
- "remark-rehype": "^3.0.0",
+ "remark-rehype": "5.x.x",
"remark-select": "",
- "unified": "^6.1.6",
- "unist-util-inspect": "^4.1.2",
- "vfile-reporter": "^4.0.0"
+ "unified": "8.x.x",
+ "vfile-reporter": "6.x.x"
},
"author": "Titely",
"license": "",
"devDependencies": {
- "ava": "^0.25.0",
- "rollup": "^0.57.1",
- "rollup-plugin-commonjs": "^9.1.0",
- "rollup-plugin-json": "^2.3.0",
+ "ava": "2.4.x",
+ "unist-util-inspect": "5.x.x",
+ "rollup": "1.27.x",
+ "rollup-plugin-commonjs": "10.x.x",
+ "@rollup/plugin-json": "4.x.x",
"rollup-plugin-node-builtins": "^2.1.2",
"rollup-plugin-node-globals": "^1.2.0",
"rollup-plugin-node-resolve": "^3.3.0",
- "rollup-plugin-uglify": "^3.0.0",
- "xo": "^0.18.2"
+ "rollup-plugin-uglify": "6.0.x",
+ "del-cli": "3.x.x",
+ "xo": "0.25.x"
},
"xo": {
"space": true,
diff --git a/public/css/katex.min.css b/public/css/katex.min.css
index d6fb837..67d1493 100644
--- a/public/css/katex.min.css
+++ b/public/css/katex.min.css
@@ -1 +1 @@
-@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathrm{font-style:normal}.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right} \ No newline at end of file
+@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.11.0"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left}
diff --git a/public/index.html b/public/index.html
index 7f0e040..d76211f 100644
--- a/public/index.html
+++ b/public/index.html
@@ -10,7 +10,7 @@
<script src="js/qcm.js"></script>
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css" crossorigin="anonymous">
+ <link rel="stylesheet" type="text/css" href="css/katex.min.css" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="css/rainbow.css">
</head>
diff --git a/public/js/hmd.min.js b/public/js/hmd.min.js
index f00f411..547393f 100644
--- a/public/js/hmd.min.js
+++ b/public/js/hmd.min.js
@@ -1,2 +1,2 @@
-var hmd=function(){"use strict";var e=function(){for(var e={},n=0;n<arguments.length;n++){var r=arguments[n];for(var a in r)t.call(r,a)&&(e[a]=r[a])}return e},t=Object.prototype.hasOwnProperty;var n=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;var i=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var i,o,l=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var c in i=Object(arguments[s]))r.call(i,c)&&(l[c]=i[c]);if(n){o=n(i);for(var u=0;u<o.length;u++)a.call(i,o[u])&&(l[o[u]]=i[o[u]])}}return l},o=function(e,t,n){return null!=n||"object"==typeof t&&!Array.isArray(t)||(n=t,t={}),i({},t,{type:String(e)},null!=n&&(Array.isArray(n)?{children:n}:{value:String(n)}))},l=function e(t,n,r,a,i){var o=null!==a&&void 0!==a;var l=null!==r&&void 0!==r;var c=s(t);if(l&&("number"!=typeof r||r<0||r===1/0))throw new Error("Expected positive finite index or child node");if(o&&(!e(null,a)||!a.children))throw new Error("Expected parent node");if(!n||!n.type||"string"!=typeof n.type)return!1;if(o!==l)throw new Error("Expected both parent and index");return Boolean(c.call(i,n,r,a))};function s(e){if("string"==typeof e)return function(e){return function(t){return Boolean(t&&t.type===e)}}(e);if(null===e||void 0===e)return c;if("object"==typeof e)return("length"in e?function(e){var t=function(e){var t=[],n=e.length,r=-1;for(;++r<n;)t[r]=s(e[r]);return t}(e),n=t.length;return function(){var e=-1;for(;++e<n;)if(t[e].apply(this,arguments))return!0;return!1}}:function(e){return function(t){var n;for(n in e)if(t[n]!==e[n])return!1;return!0}})(e);if("function"==typeof e)return e;throw new Error("Expected function, string, or object as test")}function c(){return!0}var u=g,d=!0,p="skip",m=!1;function g(e,t,n,r){function a(e,i,o){var s;return i=i||(o?0:null),t&&e.type!==t&&!l(t,e,i,o||null)||(s=n(e,i,o||null)),s===m?s:e.children&&s!==p&&function(e,t){var n,i,o=r?-1:1,l=(r?e.length:-1)+o;for(;l>-1&&l<e.length;){if(n=e[l],(i=n&&a(n,l,t))===m)return i;l="number"==typeof i?i:l+o}return d}(e.children,e)===m?m:s}"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),a(e)}g.CONTINUE=d,g.SKIP=p,g.EXIT=m;"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function h(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function f(e,t){return e(t={exports:{}},t.exports),t.exports}var _=f(function(e,t){var n=t;function r(e){return function(t){var n=t&&t.position&&t.position[e]||{};return{line:n.line||null,column:n.column||null,offset:isNaN(n.offset)?null:n.offset}}}n.start=r("start"),n.end=r("end")}),E=function(e){var t=T(T(e).position),n=T(t.start),r=T(t.end);return!(n.line&&n.column&&r.line&&r.column)};function T(e){return e&&"object"==typeof e?e:{}}var b=function(e,t){return function(e){return function(t){var n=t&&A(t);return n&&v.call(e,n)?e[n]:null}}(function(e,t){var n={};if(!e||!e.type)throw new Error("mdast-util-definitions expected node");return u(e,"definition",t&&t.commonmark?function(e){var t=A(e.identifier);v.call(n,t)||(n[t]=e)}:function(e){n[A(e.identifier)]=e}),n}(e,t))},v={}.hasOwnProperty;function A(e){return e.toUpperCase()}var S=f(function(e,t){(t=e.exports=function(e){return e.replace(/^\s*|\s*$/g,"")}).left=function(e){return e.replace(/^\s*/,"")},t.right=function(e){return e.replace(/\s*$/,"")}}),y=(S.left,S.right,function(e,t){var n,r,a=t.children||[],i=a.length,o=[],l=-1;for(;++l<i;)(n=N(e,a[l],t))&&(l&&"break"===a[l-1].type&&(n.value&&(n.value=S.left(n.value)),(r=n.children&&n.children[0])&&r.value&&(r.value=S.left(r.value))),o=o.concat(n));return o});var N=function(e,t,n){var r=t&&t.type,a=C.call(e.handlers,r)?e.handlers[r]:null;if(!r)throw new Error("Expected node, got `"+t+"`");return("function"==typeof a?a:function(e,t){if(function(e){var t=e.data||{};if(C.call(t,"hName")||C.call(t,"hProperties")||C.call(t,"hChildren"))return!1;return"value"in e}(t))return e.augment(t,o("text",t.value));return e(t,"div",y(e,t))})(e,t,n)},C={}.hasOwnProperty;var O=function(e,t){return e(t,"hr")};var M=function(e,t){var n=[],r=-1,a=e.length;t&&n.push(o("text","\n"));for(;++r<a;)r&&n.push(o("text","\n")),n.push(e[r]);t&&0!==e.length&&n.push(o("text","\n"));return n};var x=function(e,t){var n={},r=t.ordered?"ol":"ul";"number"==typeof t.start&&1!==t.start&&(n.start=t.start);return e(t,r,n,M(y(e,t),!0))};var w=function(e){var t,n=e.footnotes,r=n.length,a=-1,i=[];if(!r)return null;for(;++a<r;)t=n[a],i[a]={type:"listItem",data:{hProperties:{id:"fn-"+t.identifier}},children:t.children.concat({type:"link",url:"#fnref-"+t.identifier,data:{hProperties:{className:["footnote-backref"]}},children:[{type:"text",value:"↩"}]}),position:t.position};return e(null,"div",{className:["footnotes"]},M([O(e),x(e,{type:"list",ordered:!0,children:i})],!0))};var R=function(e,t){return e(t,"blockquote",M(y(e,t),!0))};var D=function(e,t){return[e(t,"br"),o("text","\n")]};var I,k="",L=function(e,t){if("string"!=typeof e)throw new TypeError("expected a string");if(1===t)return e;if(2===t)return e+e;var n=e.length*t;if(I!==e||void 0===I)I=e,k="";else if(k.length>=n)return k.substr(0,n);for(;n>k.length&&t>1;)1&t&&(k+=e),t>>=1,e+=e;return k=(k+=e).substr(0,n)};var P=function(e,t){var n,r,a="string"==typeof e,i=a&&e.length,o=0,l=-1,s=-1,c=t||4,u=[];if(!a)throw new Error("detab expected string");for(;++l<i;)(n=e.charCodeAt(l))===B?(s+=r=c-(s+1)%c,u.push(e.slice(o,l)+L(" ",r)),o=l+1):n===F||n===U?s=-1:s++;return u.push(e.slice(o)),u.join("")},B=9,F=10,U=13;var H=function(e,t){var n=t.value?P(t.value+"\n"):"",r=t.lang&&t.lang.match(/^[^ \t]+(?=[ \t]|$)/),a={};r&&(a.className=["language-"+r]);return e(t.position,"pre",[e(t,"code",a,[o("text",n)])])};var G=function(e,t){return e(t,"del",y(e,t))};var q=function(e,t){return e(t,"em",y(e,t))};var z=function(e,t){var n=t.identifier;return e(t.position,"sup",{id:"fnref-"+n},[e(t,"a",{href:"#fn-"+n,className:["footnote-ref"]},[o("text",n)])])};var K=function(e,t){var n=[],r=1,a=e.footnotes,i=a.length,o=-1;for(;++o<i;)n[o]=a[o].identifier;for(;-1!==n.indexOf(String(r));)r++;return r=String(r),a.push({type:"footnoteDefinition",identifier:r,children:[{type:"paragraph",children:t.children}],position:t.position}),z(e,{type:"footnoteReference",identifier:r,position:t.position})};var j=function(e,t){return e(t,"h"+t.depth,y(e,t))};var V=function(e,t){return e.dangerous?e.augment(t,o("raw",t.value)):null};var $={};function W(e,t,n){var r,a,i,o,l,s="";for("string"!=typeof t&&(n=t,t=W.defaultChars),void 0===n&&(n=!0),l=function(e){var t,n,r=$[e];if(r)return r;for(r=$[e]=[],t=0;t<128;t++)n=String.fromCharCode(t),/^[0-9a-z]$/i.test(n)?r.push(n):r.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t<e.length;t++)r[e.charCodeAt(t)]=e[t];return r}(t),r=0,a=e.length;r<a;r++)if(i=e.charCodeAt(r),n&&37===i&&r+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(r+1,r+3)))s+=e.slice(r,r+3),r+=2;else if(i<128)s+=l[i];else if(i>=55296&&i<=57343){if(i>=55296&&i<=56319&&r+1<a&&(o=e.charCodeAt(r+1))>=56320&&o<=57343){s+=encodeURIComponent(e[r]+e[r+1]),r++;continue}s+="%EF%BF%BD"}else s+=encodeURIComponent(e[r]);return s}W.defaultChars=";/?:@&=+$,-_.!~*'()#",W.componentChars="-_.!~*'()";var Y=W,Q=function(e,t,n){var r=t.referenceType;if("collapsed"!==r&&"full"!==r&&!n)return"imageReference"===t.type?o("text","!["+t.alt+"]"):[o("text","[")].concat(y(e,t),o("text","]"))};var X=function(e){return String(e).replace(/\s+/g," ")};var Z=function(e){return String(e).replace(J,ee)},J=/[ \t]*\n+[ \t]*/g,ee="\n";var te={blockquote:R,break:D,code:H,delete:G,emphasis:q,footnoteReference:z,footnote:K,heading:j,html:V,imageReference:function(e,t){var n=e.definition(t.identifier),r={src:Y(n&&n.url||""),alt:t.alt};n&&null!==n.title&&void 0!==n.title&&(r.title=n.title);return Q(e,t,n)||e(t,"img",r)},image:function(e,t){var n={src:Y(t.url),alt:t.alt};null!==t.title&&void 0!==t.title&&(n.title=t.title);return e(t,"img",n)},inlineCode:function(e,t){return e(t,"code",[o("text",X(t.value))])},linkReference:function(e,t){var n=e.definition(t.identifier),r={href:Y(n&&n.url||"")};n&&null!==n.title&&void 0!==n.title&&(r.title=n.title);return Q(e,t,n)||e(t,"a",r,y(e,t))},link:function(e,t){var n={href:Y(t.url)};null!==t.title&&void 0!==t.title&&(n.title=t.title);return e(t,"a",n,y(e,t))},listItem:function(e,t,n){var r,a,i=t.children,l=i[0],s={},c=!1;n&&n.loose||1!==i.length||"paragraph"!==l.type||(c=!0);r=y(e,c?l:t),"boolean"==typeof t.checked&&(c||l&&"paragraph"===l.type||r.unshift(e(null,"p",[])),0!==(a=c?r:r[0].children).length&&a.unshift(o("text"," ")),a.unshift(e(null,"input",{type:"checkbox",checked:t.checked,disabled:!0})),s.className=["task-list-item"]);c||0===r.length||(r=M(r,!0));return e(t,"li",s,r)},list:x,paragraph:function(e,t){return e(t,"p",y(e,t))},root:function(e,t){return e.augment(t,o("root",M(y(e,t))))},strong:function(e,t){return e(t,"strong",y(e,t))},table:function(e,t){var n,r,a,i,o,l=t.children,s=l.length,c=t.align,u=c.length,d=[];for(;s--;){for(r=l[s].children,i=0===s?"th":"td",n=u,a=[];n--;)o=r[n],a[n]=e(o,i,{align:c[n]},o?M(y(e,o)):[]);d[s]=e(l[s],"tr",M(a,!0))}return e(t,"table",M([e(d[0].position,"thead",M([d[0]],!0)),e({start:_.start(d[1]),end:_.end(d[d.length-1])},"tbody",M(d.slice(1),!0))],!0))},text:function(e,t){return e.augment(t,o("text",Z(t.value)))},thematicBreak:O,toml:ne,yaml:ne,definition:ne,footnoteDefinition:ne};function ne(){return null}var re=function(t,n){var r=function(t,n){var r=n||{},a=r.allowDangerousHTML;return o.dangerous=a,o.definition=b(t,r),o.footnotes=[],o.augment=i,o.handlers=e(te,r.handlers||{}),u(t,"footnoteDefinition",function(e){o.footnotes.push(e)}),o;function i(t,n){var r,a;return t&&"data"in t&&(r=t.data,"element"===n.type&&r.hName&&(n.tagName=r.hName),"element"===n.type&&r.hProperties&&(n.properties=e(n.properties,r.hProperties)),n.children&&r.hChildren&&(n.children=r.hChildren)),a=t&&t.position?t:{position:t},E(a)||(n.position={start:_.start(a),end:_.end(a)}),n}function o(e,t,n,r){return(void 0===r||null===r)&&"object"==typeof n&&"length"in n&&(r=n,n={}),i(e,{type:"element",tagName:t,properties:n||{},children:r||[]})}}(t,n),a=N(r,t),i=w(r);a&&a.children&&i&&(a.children=a.children.concat(o("text","\n"),i));return a},ae=function(e,t){e&&!e.process&&(t=e,e=null);return e?function(e,t){return function(n,r,a){e.run(re(n,t),r,function(e){a(e)})}}(e,t):function(e){return function(t){return re(t,e)}}(t)};var ie=function(e){return le.test("number"==typeof e?oe(e):e.charAt(0))},oe=String.fromCharCode,le=/\s/;var se="|",ce="||";function ue(e,t){return e.indexOf(ce,t)}var de=function(){function e(e,t,n){if(this.options.gfm&&t.charAt(0)===se&&t.charAt(1)===se&&!t.startsWith(se.repeat(4))&&!ie(t.charAt(2))){var r="",a="",i="",o="",l=1,s=t.length,c=e.now();for(c.column+=2,c.offset+=2;++l<s;){if(!((r=t.charAt(l))!==se||a!==se||i&&ie(i)))return!!n||e(ce+o+ce)({type:"kbd",children:this.tokenizeInline(o,c),data:{hName:"kbd"}});o+=a,i=a,a=r}}}e.locator=ue;var t=this.Parser,n=t.prototype.inlineTokenizers,r=t.prototype.inlineMethods;n.kbd=e,r.splice(r.indexOf("text"),0,"kbd");var a=this.Compiler;a&&(a.prototype.visitors.kbd=function(e){return"||"+this.all(e).join("")+"||"})};function pe(e,t){return e.indexOf("$",t)}const me=/^\\\$/,ge=/^\$((?:\\\$|[^$])+)\$/,he=/^\$\$((?:\\\$|[^$])+)\$\$/;var fe=function(e){var t=String(e),n=t.length;for(;t.charAt(--n)===_e;);return t.slice(0,n+1)},_e="\n";var Ee="\n",Te="\t",be=" ",ve="$",Ae=2,Se=4,ye=function(e={}){(function(e){const t=this.Parser,n=t.prototype.blockTokenizers,r=t.prototype.blockMethods;n.math=function(e,t,n){for(var r,a,i,o,l,s,c,u,d,p,m=t.length+1,g=0,h="";g<m&&((i=t.charAt(g))===be||i===Te);)h+=i,g++;if(d=g,(i=t.charAt(g))!==ve)return;for(g++,a=i,r=1,h+=i;g<m&&(i=t.charAt(g))===a;)h+=i,r++,g++;if(r<Ae)return;for(;g<m&&(i=t.charAt(g))!==Ee;){if(i===ve)return;h+=i,g++}if(i=t.charAt(g),n)return!0;for((p=e.now()).column+=h.length,p.offset+=h.length,o=c=u=l=s="";g<m;)if(l+=c,s+=u,c=u="",(i=t.charAt(g))===Ee){for(l?(c+=i,u+=i):h+=i,o="",g++;g<m&&(i=t.charAt(g))===be;)o+=i,g++;if(c+=o,u+=o.slice(d),!(o.length>=Se)){for(o="";g<m&&(i=t.charAt(g))===a;)o+=i,g++;if(c+=o,u+=o,!(o.length<r)){for(o="";g<m&&(i=t.charAt(g))!==Ee;)c+=i,u+=i,g++;break}}}else l+=i,u+=i,g++;h+=l+c;const f=fe(s);return e(h)({type:"math",value:f,data:{hName:"div",hProperties:{className:"math"},hChildren:[{type:"text",value:f}]}})},r.splice(r.indexOf("fencedCode")+1,0,"math");const a=t.prototype.interruptParagraph,i=t.prototype.interruptList,o=t.prototype.interruptBlockquote;a.splice(a.indexOf("fencedCode")+1,0,["math"]),i.splice(i.indexOf("fencedCode")+1,0,["math"]),o.splice(o.indexOf("fencedCode")+1,0,["math"]);const l=this.Compiler;null!=l&&(l.prototype.visitors.math=function(e){return"$$\n"+e.value+"\n$$"})}).call(this,e),function(e){function t(t,n,r){let a=!0,i=he.exec(n);i||(i=ge.exec(n),a=!1);const o=me.exec(n);if(o)return!!r||t(o[0])({type:"text",value:"$"});if("\\$"===n.slice(-2))return t(n)({type:"text",value:n.slice(0,-2)+"$"});if(i){if(r)return!0;if(i[0].includes("`")&&n.slice(i[0].length).includes("`")){const e=n.slice(0,n.indexOf("`"));return t(e)({type:"text",value:e})}const o=i[1].trim();return t(i[0])({type:"inlineMath",value:o,data:{hName:"span",hProperties:{className:"inlineMath"+(a&&e.inlineMathDouble?" inlineMathDouble":"")},hChildren:[{type:"text",value:o}]}})}}t.locator=pe;const n=this.Parser,r=n.prototype.inlineTokenizers,a=n.prototype.inlineMethods;r.math=t,a.splice(a.indexOf("text"),0,"math");const i=this.Compiler;null!=i&&(i.prototype.visitors.inlineMath=function(e){return"$"+e.value+"$"})}.call(this,e)},Ne=f(function(e,t){!function(e){var t=[],n=Object.keys,r={},a={},i=/^(no-?highlight|plain|text)$/i,o=/\blang(?:uage)?-([\w-]+)\b/i,l=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,s="</span>",c={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function u(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function d(e){return e.nodeName.toLowerCase()}function p(e,t){var n=e&&e.exec(t);return n&&0===n.index}function m(e){return i.test(e)}function g(e){var t,n={},r=Array.prototype.slice.call(arguments,1);for(t in e)n[t]=e[t];return r.forEach(function(e){for(t in e)n[t]=e[t]}),n}function h(e){var t=[];return function e(n,r){for(var a=n.firstChild;a;a=a.nextSibling)3===a.nodeType?r+=a.nodeValue.length:1===a.nodeType&&(t.push({event:"start",offset:r,node:a}),r=e(a,r),d(a).match(/br|hr|img|input/)||t.push({event:"stop",offset:r,node:a}));return r}(e,0),t}function f(e){function t(e){return e&&e.source||e}function r(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}!function a(i,o){if(!i.compiled){if(i.compiled=!0,i.keywords=i.keywords||i.beginKeywords,i.keywords){var l={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");l[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof i.keywords?s("keyword",i.keywords):n(i.keywords).forEach(function(e){s(e,i.keywords[e])}),i.keywords=l}i.lexemesRe=r(i.lexemes||/\w+/,!0),o&&(i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")\\b"),i.begin||(i.begin=/\B|\b/),i.beginRe=r(i.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),i.end&&(i.endRe=r(i.end)),i.terminator_end=t(i.end)||"",i.endsWithParent&&o.terminator_end&&(i.terminator_end+=(i.end?"|":"")+o.terminator_end)),i.illegal&&(i.illegalRe=r(i.illegal)),null==i.relevance&&(i.relevance=1),i.contains||(i.contains=[]),i.contains=Array.prototype.concat.apply([],i.contains.map(function(e){return function(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return g(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[g(e)]||[e]}("self"===e?i:e)})),i.contains.forEach(function(e){a(e,i)}),i.starts&&a(i.starts,o);var c=i.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([i.terminator_end,i.illegal]).map(t).filter(Boolean);i.terminators=c.length?r(c.join("|"),!0):{exec:function(){return null}}}}(e)}function _(e,t,n,a){function i(e,t){var n=g.case_insensitive?t[0].toLowerCase():t[0];return e.keywords.hasOwnProperty(n)&&e.keywords[n]}function o(e,t,n,r){var a=r?"":c.classPrefix,i='<span class="'+a,o=n?"":s;return(i+=e+'">')+t+o}function l(){v+=null!=T.subLanguage?function(){var e="string"==typeof T.subLanguage;if(e&&!r[T.subLanguage])return u(S);var t=e?_(T.subLanguage,S,!0,b[T.subLanguage]):E(S,T.subLanguage.length?T.subLanguage:void 0);return T.relevance>0&&(y+=t.relevance),e&&(b[T.subLanguage]=t.top),o(t.language,t.value,!1,!0)}():function(){var e,t,n,r;if(!T.keywords)return u(S);for(r="",t=0,T.lexemesRe.lastIndex=0,n=T.lexemesRe.exec(S);n;)r+=u(S.substring(t,n.index)),(e=i(T,n))?(y+=e[1],r+=o(e[0],u(n[0]))):r+=u(n[0]),t=T.lexemesRe.lastIndex,n=T.lexemesRe.exec(S);return r+u(S.substr(t))}(),S=""}function d(e){v+=e.className?o(e.className,"",!0):"",T=Object.create(e,{parent:{value:T}})}function m(e,t){if(S+=e,null==t)return l(),0;var r=function(e,t){var n,r;for(n=0,r=t.contains.length;n<r;n++)if(p(t.contains[n].beginRe,e))return t.contains[n]}(t,T);if(r)return r.skip?S+=t:(r.excludeBegin&&(S+=t),l(),r.returnBegin||r.excludeBegin||(S=t)),d(r),r.returnBegin?0:t.length;var a=function e(t,n){if(p(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(T,t);if(a){var i=T;i.skip?S+=t:(i.returnEnd||i.excludeEnd||(S+=t),l(),i.excludeEnd&&(S=t));do{T.className&&(v+=s),T.skip||(y+=T.relevance),T=T.parent}while(T!==a.parent);return a.starts&&d(a.starts),i.returnEnd?0:t.length}if(function(e,t){return!n&&p(t.illegalRe,e)}(t,T))throw new Error('Illegal lexeme "'+t+'" for mode "'+(T.className||"<unnamed>")+'"');return S+=t,t.length||1}var g=A(e);if(!g)throw new Error('Unknown language: "'+e+'"');f(g);var h,T=a||g,b={},v="";for(h=T;h!==g;h=h.parent)h.className&&(v=o(h.className,"",!0)+v);var S="",y=0;try{for(var N,C,O=0;T.terminators.lastIndex=O,N=T.terminators.exec(t);)C=m(t.substring(O,N.index),N[0]),O=N.index+C;for(m(t.substr(O)),h=T;h.parent;h=h.parent)h.className&&(v+=s);return{relevance:y,value:v,language:e,top:T}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:u(t)};throw e}}function E(e,t){t=t||c.languages||n(r);var a={relevance:0,value:u(e)},i=a;return t.filter(A).forEach(function(t){var n=_(t,e,!1);n.language=t,n.relevance>i.relevance&&(i=n),n.relevance>a.relevance&&(i=a,a=n)}),i.language&&(a.second_best=i),a}function T(e){return c.tabReplace||c.useBR?e.replace(l,function(e,t){return c.useBR&&"\n"===e?"<br>":c.tabReplace?t.replace(/\t/g,c.tabReplace):""}):e}function b(e){var n,r,i,l,s,p=function(e){var t,n,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",n=o.exec(i))return A(n[1])?n[1]:"no-highlight";for(i=i.split(/\s+/),t=0,r=i.length;t<r;t++)if(m(a=i[t])||A(a))return a}(e);m(p)||(c.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):n=e,s=n.textContent,i=p?_(p,s,!0):E(s),(r=h(n)).length&&((l=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=i.value,i.value=function(e,n,r){var a=0,i="",o=[];function l(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset<n[0].offset?e:n:"start"===n[0].event?e:n:e.length?e:n}function s(e){i+="<"+d(e)+t.map.call(e.attributes,function(e){return" "+e.nodeName+'="'+u(e.value).replace('"',"&quot;")+'"'}).join("")+">"}function c(e){i+="</"+d(e)+">"}function p(e){("start"===e.event?s:c)(e.node)}for(;e.length||n.length;){var m=l();if(i+=u(r.substring(a,m[0].offset)),a=m[0].offset,m===e){o.reverse().forEach(c);do{p(m.splice(0,1)[0]),m=l()}while(m===e&&m.length&&m[0].offset===a);o.reverse().forEach(s)}else"start"===m[0].event?o.push(m[0].node):o.pop(),p(m.splice(0,1)[0])}return i+u(r.substr(a))}(r,h(l),s)),i.value=T(i.value),e.innerHTML=i.value,e.className=function(e,t,n){var r=t?a[t]:n,i=[e.trim()];return e.match(/\bhljs\b/)||i.push("hljs"),-1===e.indexOf(r)&&i.push(r),i.join(" ").trim()}(e.className,p,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("pre code");t.forEach.call(e,b)}}function A(e){return e=(e||"").toLowerCase(),r[e]||r[a[e]]}e.highlight=_,e.highlightAuto=E,e.fixMarkup=T,e.highlightBlock=b,e.configure=function(e){c=g(c,e)},e.initHighlighting=v,e.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",v,!1),addEventListener("load",v,!1)},e.registerLanguage=function(t,n){var i=r[t]=n(e);i.aliases&&i.aliases.forEach(function(e){a[e]=t})},e.listLanguages=function(){return n(r)},e.getLanguage=A,e.inherit=g,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var a=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return a.contains.push(e.PHRASAL_WORDS_MODE),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),a},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0}}(t)});function Ce(){}Ce.prototype=Ne;var Oe=new Ce,Me=Oe;Oe.highlight=function(e,t,n){var r=(n||{}).prefix;null!==r&&void 0!==r||(r=Re);return je(Ke(e,t,!0,r))},Oe.highlightAuto=ze,Oe.registerLanguage=function(e,t){var n=(Ge[e]=t(Oe)).aliases,r=n&&n.length,a=-1;He.push(e);for(;++a<r;)qe[n[a]]=e},Oe.getLanguage=We;var xe=Ne.inherit,we={}.hasOwnProperty,Re="hljs-",De="case_insensitive",Ie="cached_variants",ke="",Le=" ",Pe="|",Be="element",Fe="text",Ue="span",He=[],Ge={},qe={};function ze(e,t){var n,r,a,i,o=t||{},l=o.prefix,s=o.subset||He,c=s.length,u=-1;if(null!==l&&void 0!==l||(l=Re),"string"!=typeof e)throw new Error("Expected `string` for value, got `"+e+"`");for(r=je({}),n=je({});++u<c;)We(i=s[u])&&((a=je(Ke(i,e,!1,l))).language=i,a.relevance>r.relevance&&(r=a),a.relevance>n.relevance&&(r=n,n=a));return r.language&&(n.secondBest=r),n}function Ke(e,t,n,r,a){var i,o,l,s,c,u,d,p,m={},g=[],h=ke,f=0;if("string"!=typeof e)throw new Error("Expected `string` for name, got `"+e+"`");if("string"!=typeof t)throw new Error("Expected `string` for value, got `"+t+"`");if(i=We(e),l=o=a||i,s=p=[],!i)throw new Error("Unknown language: `"+e+"` is not registered");!function(e){function t(t,r){return new RegExp(n(t),"m"+(e[De]?"i":"")+(r?"g":""))}function n(e){return e&&e.source||e}!function r(a,i){var o={};var l;if(a.compiled)return;a.compiled=!0;a.keywords=a.keywords||a.beginKeywords;a.keywords&&("string"==typeof a.keywords?s("keyword",a.keywords):Object.keys(a.keywords).forEach(function(e){s(e,a.keywords[e])}),a.keywords=o);a.lexemesRe=t(a.lexemes||/\w+/,!0);i&&(a.beginKeywords&&(a.begin="\\b("+a.beginKeywords.split(Le).join(Pe)+")\\b"),a.begin||(a.begin=/\B|\b/),a.beginRe=t(a.begin),a.end||a.endsWithParent||(a.end=/\B|\b/),a.end&&(a.endRe=t(a.end)),a.terminatorEnd=n(a.end)||ke,a.endsWithParent&&i.terminatorEnd&&(a.terminatorEnd+=(a.end?Pe:ke)+i.terminatorEnd));a.illegal&&(a.illegalRe=t(a.illegal));void 0===a.relevance&&(a.relevance=1);a.contains||(a.contains=[]);a.contains=Array.prototype.concat.apply([],a.contains.map(function(e){return function(e){e.variants&&!e[Ie]&&(e[Ie]=e.variants.map(function(t){return xe(e,{variants:null},t)}));return e[Ie]||e.endsWithParent&&[xe(e)]||[e]}("self"===e?a:e)}));a.contains.forEach(function(e){r(e,a)});a.starts&&r(a.starts,i);l=a.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([a.terminatorEnd,a.illegal]).map(n).filter(Boolean);a.terminators=l.length?t(l.join(Pe),!0):{exec:$e};function s(t,n){var r,a,i,l;for(e[De]&&(n=n.toLowerCase()),r=n.split(Le),l=r.length,i=-1;++i<l;)a=r[i].split(Pe),o[a[0]]=[t,a[1]?Number(a[1]):1]}}(e)}(i);try{for(c=o.terminators.lastIndex=0,d=o.terminators.exec(t);d;)u=_(t.substring(c,d.index),d[0]),c=o.terminators.lastIndex=d.index+u,d=o.terminators.exec(t);for(_(t.substr(c)),l=o;l.parent;)l.className&&y(),l=l.parent;return{relevance:f,value:s,language:e,top:o}}catch(e){if(-1===e.message.indexOf("Illegal"))throw e;return{relevance:0,value:v(t,[])}}function _(e,t){var r,a,i;if(h+=e,void 0===t)return b(T(),s),0;if(r=function(e,t){var n=t.contains,r=n.length,a=-1;for(;++a<r;)if(Ve(n[a].beginRe,e))return n[a]}(t,o))return b(T(),s),E(r,t),r.returnBegin?0:t.length;if(a=function e(t,n){if(Ve(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(o,t)){(i=o).returnEnd||i.excludeEnd||(h+=t),b(T(),s);do{o.className&&y(),f+=o.relevance,o=o.parent}while(o!==a.parent);return i.excludeEnd&&v(t,s),h=ke,a.starts&&E(a.starts,ke),i.returnEnd?0:t.length}if(function(e,t){return!n&&Ve(t.illegalRe,e)}(t,o))throw new Error('Illegal lexeme "'+t+'" for mode "'+(o.className||"<unnamed>")+'"');return h+=t,t.length||1}function E(e,t){var n;e.className&&(n=A(e.className,[])),e.returnBegin?h=ke:e.excludeBegin?(v(t,s),h=ke):h=t,n&&(s.push(n),g.push(s),s=n.children),o=Object.create(e,{parent:{value:o}})}function T(){var e=void 0===o.subLanguage?function(){var e,t,n,r,a=[];if(!o.keywords)return v(h,a);e=0,o.lexemesRe.lastIndex=0,t=o.lexemesRe.exec(h);for(;t;)v(h.substring(e,t.index),a),(r=S(o,t))?(f+=r[1],n=A(r[0],[]),a.push(n),v(t[0],n.children)):v(t[0],a),e=o.lexemesRe.lastIndex,t=o.lexemesRe.exec(h);return v(h.substr(e),a),a}():function(){var e,t="string"==typeof o.subLanguage;if(t&&!Ge[o.subLanguage])return v(h,[]);e=t?Ke(o.subLanguage,h,!0,r,m[o.subLanguage]):ze(h,{subset:o.subLanguage.length?o.subLanguage:void 0,prefix:r});o.relevance>0&&(f+=e.relevance);t&&(m[o.subLanguage]=e.top);return[A(e.language,e.value,!0)]}();return h=ke,e}function b(e,t){for(var n,r=e.length,a=-1;++a<r;)(n=e[a]).type===Fe?v(n.value,t):t.push(n)}function v(e,t){var n;return e&&((n=t[t.length-1])&&n.type===Fe?n.value+=e:t.push(function(e){return{type:Fe,value:e}}(e))),t}function A(e,t,n){return{type:Be,tagName:Ue,properties:{className:[(n?ke:r)+e]},children:t}}function S(e,t){var n=t[0];return i[De]&&(n=n.toLowerCase()),we.call(e.keywords,n)&&e.keywords[n]}function y(){s=g.pop()||p}}function je(e){return{relevance:e.relevance||0,language:e.language||null,value:e.value||[]}}function Ve(e,t){var n=e&&e.exec(t);return n&&0===n.index}function $e(){return null}function We(e){return e=e.toLowerCase(),Ge[e]||Ge[qe[e]]}var Ye=function(e){var t="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+",n="далее возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ",r="null истина ложь неопределено",a=e.inherit(e.NUMBER_MODE),i={className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},o={begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},l=e.inherit(e.C_LINE_COMMENT_MODE);return{case_insensitive:!0,lexemes:t,keywords:{keyword:n,built_in:"разделительстраниц разделительстрок символтабуляции ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ",class:"webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц отображениевремениэлементовпланировщика типфайлаформатированногодокумента обходрезультатазапроса типзаписизапроса видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов доступкфайлу режимдиалогавыборафайла режимоткрытияфайла типизмеренияпостроителязапроса видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты",type:"comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив ",literal:r},contains:[{className:"meta",lexemes:t,begin:"#|&",end:"$",keywords:{"meta-keyword":n+"загрузитьизфайла вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент "},contains:[l]},{className:"function",lexemes:t,variants:[{begin:"процедура|функция",end:"\\)",keywords:"процедура функция"},{begin:"конецпроцедуры|конецфункции",keywords:"конецпроцедуры конецфункции"}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",lexemes:t,begin:t,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{keyword:"знач",literal:r},contains:[a,i,o]},l]},e.inherit(e.TITLE_MODE,{begin:t})]},l,{className:"symbol",begin:"~",end:";|:",excludeEnd:!0},a,i,o]}},Qe=function(e){var t="^[a-zA-Z][a-zA-Z0-9-]*",n="[!@#$^&',?+~`|:]",r=e.COMMENT(";","$"),a={begin:t+"\\s*=",returnBegin:!0,end:/=/,relevance:0,contains:[{className:"attribute",begin:t}]};return{illegal:n,keywords:["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"].join(" "),contains:[a,r,{className:"symbol",begin:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/},{className:"symbol",begin:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/},{className:"symbol",begin:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/},{className:"symbol",begin:/%[si]/},e.QUOTE_STRING_MODE,e.NUMBER_MODE]}},Xe=function(e){return{contains:[{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+\\b",relevance:0},{className:"string",begin:'"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)',end:'"',keywords:"GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE",illegal:"\\n",relevance:10},{className:"string",begin:/\[/,end:/\]/,illegal:"\\n"},{className:"string",begin:'"',end:'"',illegal:"\\n"}]}},Ze=function(e){var t={className:"rest_arg",begin:"[.]{3}",end:"[a-zA-Z_$][a-zA-Z0-9_$]*",relevance:10};return{aliases:["as"],keywords:{keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with",literal:"true false null undefined"},contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"class",beginKeywords:"package",end:"{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.TITLE_MODE]},{className:"meta",beginKeywords:"import include",end:";",keywords:{"meta-keyword":"import include"}},{className:"function",beginKeywords:"function",end:"[{;]",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t]},{begin:":\\s*([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)"}]},e.METHOD_GUARD],illegal:/#/}},Je=function(e){var t="[A-Za-z](_?[A-Za-z0-9.])*",n=e.COMMENT("--","$"),r={begin:"\\s+:\\s+",end:"\\s*(:=|;|\\)|=>|$)",illegal:"[]{}%#'\"",contains:[{beginKeywords:"loop for declare others",endsParent:!0},{className:"keyword",beginKeywords:"not null constant access function procedure in out aliased exception"},{className:"type",begin:t,endsParent:!0,relevance:0}]};return{case_insensitive:!0,keywords:{keyword:"abort else new return abs elsif not reverse abstract end accept entry select access exception of separate aliased exit or some all others subtype and for out synchronized array function overriding at tagged generic package task begin goto pragma terminate body private then if procedure type case in protected constant interface is raise use declare range delay limited record when delta loop rem while digits renames with do mod requeue xor",literal:"True False"},contains:[n,{className:"string",begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{className:"string",begin:/'.'/},{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"symbol",begin:"'"+t},{className:"title",begin:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?",end:"(is|$)",keywords:"package body",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},{begin:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+",end:"(\\bis|\\bwith|\\brenames|\\)\\s*;)",keywords:"overriding function procedure with is renames return",returnBegin:!0,contains:[n,{className:"title",begin:"(\\bwith\\s+)?\\b(function|procedure)\\s+",end:"(\\(|\\s+|$)",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},r,{className:"type",begin:"\\breturn\\s+",end:"(\\s+|;|$)",keywords:"return",excludeBegin:!0,excludeEnd:!0,endsParent:!0,illegal:"[]{}%#'\""}]},{className:"type",begin:"\\b(sub)?type\\s+",end:"\\s+",keywords:"type",excludeBegin:!0,illegal:"[]{}%#'\""},r]}},et=function(e){var t={className:"number",begin:"[\\$%]\\d+"};return{aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:"</?",end:">"},{className:"attribute",begin:/\w+/,relevance:0,keywords:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{end:/$/,relevance:0,keywords:{literal:"on off all"},contains:[{className:"meta",begin:"\\s\\[",end:"\\]$"},{className:"variable",begin:"[\\$%]\\{",end:"\\}",contains:["self",t]},t,e.QUOTE_STRING_MODE]}}],illegal:/\S/}},tt=function(e){var t=e.inherit(e.QUOTE_STRING_MODE,{illegal:""}),n={className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_NUMBER_MODE,t]},r=e.COMMENT("--","$"),a=[r,e.COMMENT("\\(\\*","\\*\\)",{contains:["self",r]}),e.HASH_COMMENT_MODE];return{aliases:["osascript"],keywords:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"},contains:[t,e.C_NUMBER_MODE,{className:"built_in",begin:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{className:"literal",begin:"\\b(text item delimiters|current application|missing value)\\b"},{className:"keyword",begin:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference)|POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{beginKeywords:"on",illegal:"[${=;\\n]",contains:[e.UNDERSCORE_TITLE_MODE,n]}].concat(a),illegal:"//|->|=>|\\[\\["}},nt=function(e){var t={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},n={className:"string",variants:[{begin:'(u8?|U)?L?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'(u8?|U)?R"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{begin:"'\\\\?.",end:"'",illegal:"."}]},r={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},a={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(n,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},i=e.IDENT_RE+"\\s*\\(",o={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},l=[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,n];return{aliases:["c","cc","h","c++","h++","hpp"],keywords:o,illegal:"</",contains:l.concat([a,{begin:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",end:">",keywords:o,contains:["self",t]},{begin:e.IDENT_RE+"::",keywords:o},{variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:o,contains:l.concat([{begin:/\(/,end:/\)/,keywords:o,contains:l.concat(["self"]),relevance:0}]),relevance:0},{className:"function",begin:"("+e.IDENT_RE+"[\\*&\\s]+)+"+i,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:o,illegal:/[^\w\s\*&]/,contains:[{begin:i,returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a]},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin:/</,end:/>/,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:a,strings:n,keywords:o}}},rt=function(e){var t=e.getLanguage("cpp").exports;return{keywords:{keyword:"boolean byte word string String array "+t.keywords.keyword,built_in:"setup loop while catch for if do goto try switch case else default break continue return KeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put",literal:"DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW"},contains:[t.preprocessor,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}},at=function(e){return{case_insensitive:!0,aliases:["arm"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?",end:"\\s"},e.COMMENT("[;@]","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"[=#]\\w+"}],relevance:0}]}},it=function(e){var t={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:"[A-Za-z0-9\\._:-]+",relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/},{begin:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],case_insensitive:!0,contains:[{className:"meta",begin:"<!DOCTYPE",end:">",relevance:10,contains:[{begin:"\\[",end:"\\]"}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0}]},{className:"tag",begin:"<style(?=\\s|>|$)",end:">",keywords:{name:"style"},contains:[t],starts:{end:"</style>",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:"<script(?=\\s|>|$)",end:">",keywords:{name:"script"},contains:[t],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml"]}},{className:"meta",variants:[{begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?\w+/,end:/\?>/}]},{className:"tag",begin:"</?",end:"/?>",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},t]}]}},ot=function(e){return{aliases:["adoc"],contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,5}) .+?( \\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{className:"bullet",begin:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol",begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{className:"strong",begin:"\\B\\*(?![\\*\\s])",end:"(\\n{2}|\\*)",contains:[{begin:"\\\\*\\w",relevance:0}]},{className:"emphasis",begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0}],relevance:0},{className:"emphasis",begin:"_(?![_\\s])",end:"(\\n{2}|_)",relevance:0},{className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{className:"code",begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]}},lt=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance";return{keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"aspect",end:/[{;=]/,excludeEnd:!0,illegal:/[:;"\[\]]/,contains:[{beginKeywords:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"},e.UNDERSCORE_TITLE_MODE,{begin:/\([^\)]*/,end:/[)]+/,keywords:t+" get set args call",excludeEnd:!1}]},{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,relevance:0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"pointcut after before around throwing returning",end:/[)]/,excludeEnd:!1,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE]}]},{begin:/[:]/,returnBegin:!0,end:/[{;]/,relevance:0,excludeEnd:!1,keywords:t,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",keywords:t+" get set args call",relevance:0},e.QUOTE_STRING_MODE]},{beginKeywords:"new throw",relevance:0},{className:"function",begin:/\w+ +\w+(\.)?\w+\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,returnBegin:!0,end:/[{;=]/,keywords:t,excludeEnd:!0,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,relevance:0,keywords:t,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}},st=function(e){var t={begin:"`[\\s\\S]"};return{case_insensitive:!0,aliases:["ahk"],keywords:{keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group",literal:"A|0 true false NOT AND OR",built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},contains:[{className:"built_in",begin:"A_[a-zA-Z0-9]+"},t,e.inherit(e.QUOTE_STRING_MODE,{contains:[t]}),e.COMMENT(";","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,{className:"number",begin:e.NUMBER_RE,relevance:0},{className:"subst",begin:"%(?=[a-zA-Z0-9#_$@])",end:"%",illegal:"[^a-zA-Z0-9#_$@]"},{className:"built_in",begin:"^\\s*\\w+\\s*,"},{className:"meta",begin:"^\\s*#w+",end:"$",relevance:0},{className:"symbol",contains:[t],variants:[{begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{begin:",\\s*,"}]}},ct=function(e){var t={variants:[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#cs","#ce"),e.COMMENT("#comments-start","#comments-end")]},n={begin:"\\$[A-z0-9_]+"},r={className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"ByRef Case Const ContinueCase ContinueLoop Default Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With",built_in:"Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait",literal:"True False And Null Not Or"},contains:[t,n,r,a,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",keywords:{"meta-keyword":"include"},end:"$",contains:[r,{className:"meta-string",variants:[{begin:"<",end:">"},{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]}]},r,t]},{className:"symbol",begin:"@[A-z0-9_]+"},{className:"function",beginKeywords:"Func",end:"$",illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[n,r,a]}]}]}},ut=function(e){return{case_insensitive:!0,lexemes:"\\.?"+e.IDENT_RE,keywords:{keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf",meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set"},contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),e.C_NUMBER_MODE,e.BINARY_NUMBER_MODE,{className:"number",begin:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"},{className:"symbol",begin:"^[A-Za-z0-9_.$]+:"},{className:"meta",begin:"#",end:"$"},{className:"subst",begin:"@[0-9]+"}]}},dt=function(e){return{keywords:{keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10"},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]}},pt=function(e){return{keywords:"false int abstract private char boolean static null if for true while long throw finally protected final return void enum else break new catch byte super case short default double public try this switch continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count order group by asc desc index hint like dispaly edit client server ttsbegin ttscommit str real date container anytype common div mod",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]}]}},mt=function(e){var t={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]};return{aliases:["sh","zsh"],lexemes:/\b-?[a-z\._]+\b/,keywords:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[{className:"meta",begin:/^#![^\n]+sh\s*$/,relevance:10},{className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},e.HASH_COMMENT_MODE,n,{className:"string",begin:/'/,end:/'/},t]}},gt=function(e){return{case_insensitive:!0,illegal:"^.",lexemes:"[a-zA-Z][a-zA-Z0-9_$%!#]*",keywords:{keyword:"ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO HEX$ IF|0 THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE WEND WIDTH WINDOW WRITE XOR"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("REM","$",{relevance:10}),e.COMMENT("'","$",{relevance:0}),{className:"symbol",begin:"^[0-9]+ ",relevance:10},{className:"number",begin:"\\b([0-9]+[0-9edED.]*[#!]?)",relevance:0},{className:"number",begin:"(&[hH][0-9a-fA-F]{1,4})"},{className:"number",begin:"(&[oO][0-7]{1,6})"}]}},ht=function(e){return{contains:[{className:"attribute",begin:/</,end:/>/},{begin:/::=/,starts:{end:/$/,contains:[{begin:/</,end:/>/},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}}]}},ft=function(e){var t={className:"literal",begin:"[\\+\\-]",relevance:0};return{aliases:["bf"],contains:[e.COMMENT("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{returnEnd:!0,relevance:0}),{className:"title",begin:"[\\[\\]]",relevance:0},{className:"string",begin:"[\\.,]",relevance:0},{begin:/\+\+|\-\-/,returnBegin:!0,contains:[t]},t]}},_t=function(e){var t="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},a={className:"string",begin:/(#\d+)+/},i={className:"function",beginKeywords:"procedure",end:/[:;]/,keywords:"procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[r,a]}].concat(n)},o={className:"class",begin:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)",returnBegin:!0,contains:[e.TITLE_MODE,i]};return{case_insensitive:!0,keywords:{keyword:t,literal:"false true"},illegal:/\/\*/,contains:[r,a,{className:"number",begin:"\\b\\d+(\\.\\d+)?(DT|D|T)",relevance:0},{className:"string",begin:'"',end:'"'},e.NUMBER_MODE,o,i]}},Et=function(e){return{aliases:["capnp"],keywords:{keyword:"struct enum interface union group import using const annotation extends in of on as with from fixed",built_in:"Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.HASH_COMMENT_MODE,{className:"meta",begin:/@0x[\w\d]{16};/,illegal:/\n/},{className:"symbol",begin:/@\d+\b/},{className:"class",beginKeywords:"struct enum",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"class",beginKeywords:"interface",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]}]}},Tt=function(e){var t="assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty",n={className:"subst",excludeBegin:!0,excludeEnd:!0,begin:/``/,end:/``/,keywords:t,relevance:10},r=[{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[n]},{className:"string",begin:"'",end:"'"},{className:"number",begin:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?",relevance:0}];return n.contains=r,{keywords:{keyword:t+" shared abstract formal default actual variable late native deprecatedfinal sealed annotation suppressWarnings small",meta:"doc by license see throws tagged"},illegal:"\\$[^01]|#[^0-9a-fA-F]",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),{className:"meta",begin:'@[a-z]\\w*(?:\\:"[^"]*")?'}].concat(r)}},bt=function(e){return{aliases:["clean","icl","dcl"],keywords:{keyword:"if let in with where case of class instance otherwise implementation definition system module from import qualified as special code inline foreign export ccall stdcall generic derive infix infixl infixr",literal:"True False"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{begin:"->|<-[|:]?|::|#!?|>>=|\\{\\||\\|\\}|:==|=:|\\.\\.|<>|`"}]}},vt=function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),o={className:"literal",begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},s={className:"comment",begin:"\\^"+t},c=e.COMMENT("\\^\\{","\\}"),u={className:"symbol",begin:"[:]{1,2}"+t},d={begin:"\\(",end:"\\)"},p={endsWithParent:!0,relevance:0},m={keywords:{"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},lexemes:t,className:"name",begin:t,starts:p},g=[d,a,s,c,i,u,l,r,o,n];return d.contains=[e.COMMENT("comment",""),m,p],p.contains=g,l.contains=g,c.contains=[l],{aliases:["clj"],illegal:/\S/,contains:[d,a,s,c,i,u,l,r,o]}},At=function(e){return{contains:[{className:"meta",begin:/^([\w.-]+|\s*#_)=>/,starts:{end:/$/,subLanguage:"clojure"}}]}},St=function(e){return{aliases:["cmake.in"],case_insensitive:!0,keywords:{keyword:"add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_minimum_required cmake_policy configure_file create_test_sourcelist define_property else elseif enable_language enable_testing endforeach endfunction endif endmacro endwhile execute_process export find_file find_library find_package find_path find_program fltk_wrap_ui foreach function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property if include include_directories include_external_msproject include_regular_expression install link_directories load_cache load_command macro mark_as_advanced message option output_required_files project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_link_libraries try_compile try_run unset variable_watch while build_name exec_program export_library_dependencies install_files install_programs install_targets link_libraries make_directory remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or equal less greater strless strgreater strequal matches"},contains:[{className:"variable",begin:"\\${",end:"}"},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]}},yt=function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},a=[e.BINARY_NUMBER_MODE,e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,r]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[r,e.HASH_COMMENT_MODE]},{begin:"//[gim]*",relevance:0},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{begin:"@"+n},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];r.contains=a;var i=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("###","###"),e.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,o]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[o]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}},Nt=function(e){return{keywords:{keyword:"_ as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies DependentDerive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with",built_in:"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("\\(\\*","\\*\\)"),e.C_NUMBER_MODE,{className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]}},Ct=function(e){return{case_insensitive:!0,aliases:["cos","cls"],keywords:"property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii",contains:[{className:"number",begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",relevance:0},{className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"comment",begin:/;/,end:"$",relevance:0},{className:"built_in",begin:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{className:"built_in",begin:/\$\$\$[a-zA-Z]+/},{className:"built_in",begin:/%[a-z]+(?:\.[a-z]+)*/},{className:"symbol",begin:/\^%?[a-zA-Z][\w]*/},{className:"keyword",begin:/##class|##super|#define|#dim/},{begin:/&sql\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,subLanguage:"sql"},{begin:/&(js|jscript|javascript)</,end:/>/,excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"},{begin:/&html<\s*</,end:/>\s*>/,subLanguage:"xml"}]}},Ot=function(e){var t="group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml";return{aliases:["crm","pcmk"],case_insensitive:!0,keywords:{keyword:"params meta operations op rule attributes utilization read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\ number string",literal:"Master Started Slave Stopped start promote demote stop monitor true false"},contains:[e.HASH_COMMENT_MODE,{beginKeywords:"node",starts:{end:"\\s*([\\w_-]+:)?",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*"}}},{beginKeywords:"primitive rsc_template",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*",starts:{end:"\\s*@?[\\w_][\\w_\\.:-]*"}}},{begin:"\\b("+t.split(" ").join("|")+")\\s+",keywords:t,starts:{className:"title",end:"[\\$\\w_][\\w_-]*"}},{beginKeywords:"property rsc_defaults op_defaults",starts:{className:"title",end:"\\s*([\\w_-]+:)?"}},e.QUOTE_STRING_MODE,{className:"meta",begin:"(ocf|systemd|service|lsb):[\\w_:-]+",relevance:0},{className:"number",begin:"\\b\\d+(\\.\\d+)?(ms|s|h|m)?",relevance:0},{className:"literal",begin:"[-]?(infinity|inf)",relevance:0},{className:"attr",begin:/([A-Za-z\$_\#][\w_-]+)=/,relevance:0},{className:"tag",begin:"</?",end:"/?>",relevance:0}]}},Mt=function(e){var t="(_[uif](8|16|32|64))?",n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\][=?]?",r={keyword:"abstract alias as as? asm begin break case class def do else elsif end ensure enum extend for fun if include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? return require select self sizeof struct super then type typeof union uninitialized unless until when while with yield __DIR__ __END_LINE__ __FILE__ __LINE__",literal:"false nil true"},a={className:"subst",begin:"#{",end:"}",keywords:r},i={className:"template-variable",variants:[{begin:"\\{\\{",end:"\\}\\}"},{begin:"\\{%",end:"%\\}"}],keywords:r};function o(e,t){var n=[{begin:e,end:t}];return n[0].contains=n,n}var l={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%w?\\(",end:"\\)",contains:o("\\(","\\)")},{begin:"%w?\\[",end:"\\]",contains:o("\\[","\\]")},{begin:"%w?{",end:"}",contains:o("{","}")},{begin:"%w?<",end:">",contains:o("<",">")},{begin:"%w?/",end:"/"},{begin:"%w?%",end:"%"},{begin:"%w?-",end:"-"},{begin:"%w?\\|",end:"\\|"},{begin:/<<-\w+$/,end:/^\s*\w+$/}],relevance:0},s=[i,l,{className:"string",variants:[{begin:"%q\\(",end:"\\)",contains:o("\\(","\\)")},{begin:"%q\\[",end:"\\]",contains:o("\\[","\\]")},{begin:"%q{",end:"}",contains:o("{","}")},{begin:"%q<",end:">",contains:o("<",">")},{begin:"%q/",end:"/"},{begin:"%q%",end:"%"},{begin:"%q-",end:"-"},{begin:"%q\\|",end:"\\|"},{begin:/<<-'\w+'$/,end:/^\s*\w+$/}],relevance:0},{begin:"(!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~)\\s*",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:"//[a-z]*",relevance:0},{begin:"/",end:"/[a-z]*"},{begin:"%r\\(",end:"\\)",contains:o("\\(","\\)")},{begin:"%r\\[",end:"\\]",contains:o("\\[","\\]")},{begin:"%r{",end:"}",contains:o("{","}")},{begin:"%r<",end:">",contains:o("<",">")},{begin:"%r/",end:"/"},{begin:"%r%",end:"%"},{begin:"%r-",end:"-"},{begin:"%r\\|",end:"\\|"}]}],relevance:0},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:"%r\\(",end:"\\)",contains:o("\\(","\\)")},{begin:"%r\\[",end:"\\]",contains:o("\\[","\\]")},{begin:"%r{",end:"}",contains:o("{","}")},{begin:"%r<",end:">",contains:o("<",">")},{begin:"%r/",end:"/"},{begin:"%r%",end:"%"},{begin:"%r-",end:"-"},{begin:"%r\\|",end:"\\|"}],relevance:0},{className:"meta",begin:"@\\[",end:"\\]",contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"})]},e.HASH_COMMENT_MODE,{className:"class",beginKeywords:"class module struct",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<"}]},{className:"class",beginKeywords:"lib enum union",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"})],relevance:10},{className:"function",beginKeywords:"def",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})]},{className:"function",beginKeywords:"fun macro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})],relevance:5},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":",contains:[l,{begin:n}],relevance:0},{className:"number",variants:[{begin:"\\b0b([01_]*[01])"+t},{begin:"\\b0o([0-7_]*[0-7])"+t},{begin:"\\b0x([A-Fa-f0-9_]*[A-Fa-f0-9])"+t},{begin:"\\b(([0-9][0-9_]*[0-9]|[0-9])(\\.[0-9_]*[0-9])?([eE][+-]?[0-9_]*[0-9])?)"+t}],relevance:0}];return a.contains=s,i.contains=s.slice(1),{aliases:["cr"],lexemes:"[a-zA-Z_]\\w*[!?=]?",keywords:r,contains:s}},xt=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},r=e.inherit(n,{illegal:/\n/}),a={className:"subst",begin:"{",end:"}",keywords:t},i=e.inherit(a,{illegal:/\n/}),o={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,i]},l={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},a]},s=e.inherit(l,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},i]});a.contains=[l,o,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],i.contains=[s,o,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[l,o,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}},wt=function(e){return{case_insensitive:!1,lexemes:"[a-zA-Z][a-zA-Z0-9_-]*",keywords:{keyword:"base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src"},contains:[{className:"string",begin:"'",end:"'"},{className:"attribute",begin:"^Content",end:":",excludeEnd:!0}]}},Rt=function(e){var t={begin:/[A-Z\_\.\-]+\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(font-face|page)",lexemes:"[a-z-]+",keywords:"font-face page"},{begin:"@",end:"[{;]",illegal:/:/,contains:[{className:"keyword",begin:/\w+/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,t]}]}},Dt=function(e){var t="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",r={className:"number",begin:"\\b"+t+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},a={className:"number",begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+t+"(i|[fF]i|Li))",relevance:0},i={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},o={className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'},l=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,{className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},o,{className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},a,r,i,{className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",begin:"#(line)",end:"$",relevance:5},{className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}},It=function(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```w*s*$",end:"^```s*$"},{begin:"`.+?`"},{begin:"^( {4}|\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}},kt=function(e){var t={className:"subst",begin:"\\$\\{",end:"}",keywords:"true false null this is new super"},n={className:"string",variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'",illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''",contains:[e.BACKSLASH_ESCAPE,t]},{begin:'"""',end:'"""',contains:[e.BACKSLASH_ESCAPE,t]},{begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t]},{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t]}]};t.contains=[e.C_NUMBER_MODE,n];return{keywords:{keyword:"assert async await break case catch class const continue default do else enum extends false final finally for if in is new null rethrow return super switch sync this throw true try var void while with yield abstract as dynamic export external factory get implements import library operator part set static typedef",built_in:"print Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set Stopwatch String StringBuffer StringSink Symbol Type Uri bool double int num document window querySelector querySelectorAll Element ElementList"},contains:[n,e.COMMENT("/\\*\\*","\\*/",{subLanguage:"markdown"}),e.COMMENT("///","$",{subLanguage:"markdown"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}},Lt=function(e){var t="exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs ",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"meta",variants:[{begin:/\{\$/,end:/\}/},{begin:/\(\*\$/,end:/\*\)/}]},a={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},i={className:"string",begin:/(#\d+)+/},o={begin:e.IDENT_RE+"\\s*=\\s*class\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE]},l={className:"function",beginKeywords:"function constructor destructor procedure",end:/[:;]/,keywords:"function constructor|10 destructor|10 procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[a,i,r].concat(n)},r].concat(n)};return{aliases:["dpr","dfm","pas","pascal","freepascal","lazarus","lpr","lfm"],case_insensitive:!0,keywords:t,illegal:/"|\$[G-Zg-z]|\/\*|<\/|\|/,contains:[a,i,e.NUMBER_MODE,o,l,r].concat(n)}},Pt=function(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/\*{5}/,end:/\*{5}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}},Bt=function(e){var t={begin:/\|[A-Za-z]+:?/,keywords:{name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{aliases:["jinja"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{%\s*comment\s*%}/,/\{%\s*endcomment\s*%}/),e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:{name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:[t]}]}},Ft=function(e){return{aliases:["bind","zone"],keywords:{keyword:"IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:/^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/},{className:"number",begin:"((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b"},{className:"number",begin:"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b"},e.inherit(e.NUMBER_MODE,{begin:/\b\d+[dhwm]?/})]}},Ut=function(e){return{aliases:["docker"],case_insensitive:!0,keywords:"from maintainer expose env arg user onbuild stopsignal",contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]\n/,subLanguage:"bash"}}],illegal:"</"}},Ht=function(e){var t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{aliases:["bat","cmd"],case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shiftsort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{className:"number",begin:"\\b\\d+",relevance:0},t]}},Gt=function(e){return{keywords:"dsconfig",contains:[{className:"keyword",begin:"^dsconfig",end:"\\s",excludeEnd:!0,relevance:10},{className:"built_in",begin:"(list|create|get|set|delete)-(\\w+)",end:"\\s",excludeEnd:!0,illegal:"!@#$%^&*()",relevance:10},{className:"built_in",begin:"--(\\w+)",end:"\\s",excludeEnd:!0},{className:"string",begin:/"/,end:/"/},{className:"string",begin:/'/,end:/'/},{className:"string",begin:"[\\w-?]+:\\w+",end:"\\W",relevance:0},{className:"string",begin:"\\w+-?\\w+",end:"\\W",relevance:0},e.HASH_COMMENT_MODE]}},qt=function(e){var t={className:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{begin:'((u8?|U)|L)?"'}),{begin:'(u8?|U)?R"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{begin:"'\\\\?.",end:"'",illegal:"."}]},n={className:"number",variants:[{begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef ifdef ifndef"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[e.inherit(t,{className:"meta-string"}),{className:"meta-string",begin:"<",end:">",illegal:"\\n"}]},t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},a={className:"variable",begin:"\\&[a-z\\d_]*\\b"},i={className:"meta-keyword",begin:"/[a-z][a-z\\d-]*/"},o={className:"symbol",begin:"^\\s*[a-zA-Z_][a-zA-Z\\d_]*:"},l={className:"params",begin:"<",end:">",contains:[n,a]},s={className:"class",begin:/[a-zA-Z_][a-zA-Z\d_@]*\s{/,end:/[{;=]/,returnBegin:!0,excludeEnd:!0};return{keywords:"",contains:[{className:"class",begin:"/\\s*{",end:"};",relevance:10,contains:[a,i,o,s,l,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t]},a,i,o,s,l,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t,r,{begin:e.IDENT_RE+"::",keywords:""}]}},zt=function(e){return{aliases:["dst"],case_insensitive:!0,subLanguage:"xml",contains:[{className:"template-tag",begin:/\{[#\/]/,end:/\}/,illegal:/;/,contains:[{className:"name",begin:/[a-zA-Z\.-]+/,starts:{endsWithParent:!0,relevance:0,contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{/,end:/\}/,illegal:/;/,keywords:"if eq ne lt lte gt gte select default math sep"}]}},Kt=function(e){var t=e.COMMENT(/\(\*/,/\*\)/);return{illegal:/\S/,contains:[t,{className:"attribute",begin:/^[ ]*[a-zA-Z][a-zA-Z-]*([\s-]+[a-zA-Z][a-zA-Z]*)*/},{begin:/=/,end:/;/,contains:[t,{className:"meta",begin:/\?.*\?/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]}},jt=function(e){var t="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?",n="and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote",r={className:"subst",begin:"#\\{",end:"}",lexemes:t,keywords:n},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},i={className:"function",beginKeywords:"def defp defmacro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:t,endsParent:!0})]},o=e.inherit(i,{className:"class",beginKeywords:"defimpl defmodule defprotocol defrecord",end:/\bdo\b|$|;/}),l=[a,e.HASH_COMMENT_MODE,o,i,{className:"symbol",begin:":(?!\\s)",contains:[a,{begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"}],relevance:0},{className:"symbol",begin:t+":",relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{className:"variable",begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{begin:"->"},{begin:"("+e.RE_STARTERS_RE+")\\s*",contains:[e.HASH_COMMENT_MODE,{className:"regexp",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}],relevance:0}];return r.contains=l,{lexemes:t,keywords:n,contains:l}},Vt=function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},r={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},t]};return{keywords:"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription",contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,r,{begin:"{",end:"}",contains:r.contains},t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"port",end:"$",keywords:"port",contains:[t]},e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,n,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}],illegal:/;/}},$t=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},r={className:"doctag",begin:"@[A-Za-z]+"},a={begin:"#<",end:">"},i=[e.COMMENT("#","$",{contains:[r]}),e.COMMENT("^\\=begin","^\\=end",{contains:[r],relevance:10}),e.COMMENT("^__END__","\\n$")],o={className:"subst",begin:"#\\{",end:"}",keywords:n},l={className:"string",contains:[e.BACKSLASH_ESCAPE,o],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},s={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[l,a,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(i)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),s].concat(i)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[l,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[a,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(i),relevance:0}].concat(i);o.contains=c,s.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:i.concat(u).concat(c)}},Wt=function(e){return{subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]}},Yt=function(e){return{keywords:{built_in:"spawn spawn_link self",keyword:"after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor"},contains:[{className:"meta",begin:"^[0-9]+> ",relevance:10},e.COMMENT("%","$"),{className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\?(::)?([A-Z]\\w*(::)?)+"},{begin:"->"},{begin:"ok"},{begin:"!"},{begin:"(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)",relevance:0},{begin:"[A-Z][a-zA-Z0-9_']*",relevance:0}]}},Qt=function(e){var t="[a-z'][a-zA-Z0-9_']*",n="("+t+":"+t+"|"+t+")",r={keyword:"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor",literal:"false true"},a=e.COMMENT("%","$"),i={className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},o={begin:"fun\\s+"+t+"/\\d+"},l={begin:n+"\\(",end:"\\)",returnBegin:!0,relevance:0,contains:[{begin:n,relevance:0},{begin:"\\(",end:"\\)",endsWithParent:!0,returnEnd:!0,relevance:0}]},s={begin:"{",end:"}",relevance:0},c={begin:"\\b_([A-Z][A-Za-z0-9_]*)?",relevance:0},u={begin:"[A-Z][a-zA-Z0-9_]*",relevance:0},d={begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0,returnBegin:!0,contains:[{begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0},{begin:"{",end:"}",relevance:0}]},p={beginKeywords:"fun receive if try case",end:"end",keywords:r};p.contains=[a,o,e.inherit(e.APOS_STRING_MODE,{className:""}),p,l,e.QUOTE_STRING_MODE,i,s,c,u,d];var m=[a,o,p,l,e.QUOTE_STRING_MODE,i,s,c,u,d];l.contains[1].contains=m,s.contains=m,d.contains[1].contains=m;var g={className:"params",begin:"\\(",end:"\\)",contains:m};return{aliases:["erl"],keywords:r,illegal:"(</|\\*=|\\+=|-=|/\\*|\\*/|\\(\\*|\\*\\))",contains:[{className:"function",begin:"^"+t+"\\s*\\(",end:"->",returnBegin:!0,illegal:"\\(|#|//|/\\*|\\\\|:|;",contains:[g,e.inherit(e.TITLE_MODE,{begin:t})],starts:{end:";|\\.",keywords:r,contains:m}},a,{begin:"^-",end:"\\.",relevance:0,excludeEnd:!0,returnBegin:!0,lexemes:"-"+e.IDENT_RE,keywords:"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",contains:[g]},i,e.QUOTE_STRING_MODE,d,c,u,s,{begin:/\.$/}]}},Xt=function(e){return{aliases:["xlsx","xls"],case_insensitive:!0,lexemes:/[a-zA-Z][\w\.]*/,keywords:{built_in:"ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF|0 IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST"},contains:[{begin:/^=/,end:/[^=]/,returnEnd:!0,illegal:/=/,relevance:10},{className:"symbol",begin:/\b[A-Z]{1,2}\d+\b/,end:/[^\d]/,excludeEnd:!0,relevance:0},{className:"symbol",begin:/[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,relevance:0},e.BACKSLASH_ESCAPE,e.QUOTE_STRING_MODE,{className:"number",begin:e.NUMBER_RE+"(%)?",relevance:0},e.COMMENT(/\bN\(/,/\)/,{excludeBegin:!0,excludeEnd:!0,illegal:/\n/})]}},Zt=function(e){return{contains:[{begin:/[^\u2401\u0001]+/,end:/[\u2401\u0001]/,excludeEnd:!0,returnBegin:!0,returnEnd:!1,contains:[{begin:/([^\u2401\u0001=]+)/,end:/=([^\u2401\u0001=]+)/,returnEnd:!0,returnBegin:!1,className:"attr"},{begin:/=/,end:/([\u2401\u0001])/,excludeEnd:!0,excludeBegin:!0,className:"string"}]}],case_insensitive:!0}},Jt=function(e){var t={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[{className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/}]};return{keywords:{literal:"true false",keyword:"case class def else enum if impl import in lat rel index let match namespace switch type yield with"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},{className:"string",variants:[{begin:'"',end:'"'}]},t,e.C_NUMBER_MODE]}},en=function(e){return{case_insensitive:!0,aliases:["f90","f95"],keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}},tn=function(e){var t={begin:"<",end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{aliases:["fs"],keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield",illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*","\\*\\)"),{className:"class",beginKeywords:"type",end:"\\(|=|$",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,t]},{className:"meta",begin:"\\[<",end:">\\]",relevance:10},{className:"symbol",begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE]},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),e.C_NUMBER_MODE]}},nn=function(e){var t={keyword:"abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes",literal:"eps inf na","built-in":"abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart"},n={className:"symbol",variants:[{begin:/\=[lgenxc]=/},{begin:/\$/}]},r={className:"comment",variants:[{begin:"'",end:"'"},{begin:'"',end:'"'}],illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},a={begin:"/",end:"/",keywords:t,contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},i={begin:/[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,excludeBegin:!0,end:"$",endsWithParent:!0,contains:[r,a,{className:"comment",begin:/([ ]*[a-z0-9&#*=?@>\\<:\-,()$\[\]_.{}!+%^]+)+/,relevance:0}]};return{aliases:["gms"],case_insensitive:!0,keywords:t,contains:[e.COMMENT(/^\$ontext/,/^\$offtext/),{className:"meta",begin:"^\\$[a-z0-9]+",end:"$",returnBegin:!0,contains:[{className:"meta-keyword",begin:"^\\$[a-z0-9]+"}]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{beginKeywords:"set sets parameter parameters variable variables scalar scalars equation equations",end:";",contains:[e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,a,i]},{beginKeywords:"table",end:";",returnBegin:!0,contains:[{beginKeywords:"table",end:"$",contains:[i]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},{className:"function",begin:/^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,returnBegin:!0,contains:[{className:"title",begin:/^[a-z0-9_]+/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0},n]},e.C_NUMBER_MODE,n]}},rn=function(e){var t={keyword:"and bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new not open or output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint",built_in:"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname threadBegin threadEnd threadEndFor threadFor threadJoin threadStat time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin strtrim sylvester",literal:"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS"},n={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[{className:"meta-string",begin:'"',end:'"',illegal:"\\n"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r=e.UNDERSCORE_IDENT_RE+"\\s*\\(?",a=[{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}];return{aliases:["gss"],case_insensitive:!0,keywords:t,illegal:"(\\{[%#]|[%#]\\})",contains:[e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("@","@"),n,{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{className:"function",beginKeywords:"proc keyword",end:";",excludeEnd:!0,keywords:t,contains:[{begin:r,returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE],relevance:0},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n].concat(a)},{className:"function",beginKeywords:"fn",end:";",excludeEnd:!0,keywords:t,contains:[{begin:r+e.IDENT_RE+"\\)?\\s*\\=\\s*",returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE],relevance:0},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE].concat(a)},{className:"function",begin:"\\bexternal (proc|keyword|fn)\\s+",end:";",excludeEnd:!0,keywords:t,contains:[{begin:r,returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE],relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function",begin:"\\bexternal (matrix|string|array|sparse matrix|struct "+e.IDENT_RE+")\\s+",end:";",excludeEnd:!0,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}},an=function(e){var t=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(/\(/,/\)/),e.inherit(e.C_NUMBER_MODE,{begin:"([-+]?([0-9]*\\.?[0-9]+\\.?))|"+e.C_NUMBER_RE}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"name",begin:"([G])([0-9]+\\.?[0-9]?)"},{className:"name",begin:"([M])([0-9]+\\.?[0-9]?)"},{className:"attr",begin:"(VC|VS|#)",end:"(\\d+)"},{className:"attr",begin:"(VZOFX|VZOFY|VZOFZ)"},{className:"built_in",begin:"(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)",end:"([-+]?([0-9]*\\.?[0-9]+\\.?))(\\])"},{className:"symbol",variants:[{begin:"N",end:"\\d+",illegal:"\\W"}]}];return{aliases:["nc"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:"IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR",contains:[{className:"meta",begin:"\\%"},{className:"meta",begin:"([O])([0-9]+)"}].concat(t)}},on=function(e){return{aliases:["feature"],keywords:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When",contains:[{className:"symbol",begin:"\\*",relevance:0},{className:"meta",begin:"@[^@\\s]+"},{begin:"\\|",end:"\\|\\w*$",contains:[{className:"string",begin:"[^|]+"}]},{className:"variable",begin:"<",end:">"},e.HASH_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},e.QUOTE_STRING_MODE]}},ln=function(e){return{keywords:{keyword:"break continue discard do else for if return while switch case default attribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly",type:"atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBufferiimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void",built_in:"gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow",literal:"true false"},illegal:'"',contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"}]}},sn=function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],keywords:t,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"`"}]},{className:"number",variants:[{begin:e.C_NUMBER_RE+"[dflsi]",relevance:1},e.C_NUMBER_MODE]},{begin:/:=/},{className:"function",beginKeywords:"func",end:/\s*\{/,excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,illegal:/["']/}]}]}},cn=function(e){return{keywords:{keyword:"println readln print import module function local return let var while for foreach times in case when match with break continue augment augmentation each find filter reduce if then else otherwise try catch finally raise throw orIfNull DynamicObject|10 DynamicVariable struct Observable map set vector list array",literal:"true false null"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}},un=function(e){return{case_insensitive:!0,keywords:{keyword:"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.REGEXP_MODE]}},dn=function(e){return{keywords:{literal:"true false null",keyword:"byte short char int long boolean float double void def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof"},contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},{className:"string",begin:"'''",end:"'''"},{className:"string",begin:"\\$/",end:"/\\$",relevance:10},e.APOS_STRING_MODE,{className:"regexp",begin:/~?\/[^\/\n]+\//,contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},e.BINARY_NUMBER_MODE,{className:"class",beginKeywords:"class interface trait enum",end:"{",illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{className:"string",begin:/[^\?]{0}[A-Za-z0-9_$]+ *:/},{begin:/\?/,end:/\:/},{className:"symbol",begin:"^\\s*[A-Za-z0-9_$]+:",relevance:0}],illegal:/#|<\//}},pn=function(e){return{case_insensitive:!0,contains:[{className:"meta",begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+"},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class",begin:"\\.[\\w-]+"},{begin:"{\\s*",end:"\\s*}",contains:[{begin:":\\w+\\s*=>",end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=",end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:"#{",starts:{end:"}",subLanguage:"ruby"}}]}},mn=function(e){var t={"builtin-name":"each in with if else unless bindattr action collection debugger log outlet template unbound view yield"};return{aliases:["hbs","html.hbs","html.handlebars"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT("{{!(--)?","(--)?}}"),{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[{className:"name",begin:/[a-zA-Z\.-]+/,keywords:t,starts:{endsWithParent:!0,relevance:0,contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,keywords:t}]}},gn=function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"meta",begin:"{-#",end:"#-}"},r={className:"meta",begin:"^#",end:"$"},a={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},i={begin:"\\(",end:"\\)",illegal:'"',contains:[n,r,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),t]};return{aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[i,t],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[i,t],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[a,i,t]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[n,a,i,{begin:"{",end:"}",contains:i.contains},t]},{beginKeywords:"default",end:"$",contains:[a,i,t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[a,e.QUOTE_STRING_MODE,t]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},n,r,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,a,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}]}},hn=function(e){return{aliases:["hx"],keywords:{keyword:"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while Int Float String Bool Dynamic Void Array ",built_in:"trace this",literal:"true false null _"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"},{className:"subst",begin:"\\$",end:"\\W}"}]},e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@:",end:"$"},{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end error"}},{className:"type",begin:":[ \t]*",end:"[^A-Za-z0-9_ \t\\->]",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:":[ \t]*",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"new *",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"class",beginKeywords:"enum",end:"\\{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"abstract",end:"[\\{$]",contains:[{className:"type",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"from +",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"to +",end:"\\W",excludeBegin:!0,excludeEnd:!0},e.TITLE_MODE],keywords:{keyword:"abstract from to"}},{className:"class",begin:"\\b(class|interface) +",end:"[\\{$]",excludeEnd:!0,keywords:"class interface",contains:[{className:"keyword",begin:"\\b(extends|implements) +",keywords:"extends implements",contains:[{className:"type",begin:e.IDENT_RE,relevance:0}]},e.TITLE_MODE]},{className:"function",beginKeywords:"function",end:"\\(",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE]}],illegal:/<\//}},fn=function(e){return{case_insensitive:!0,lexemes:/[\w\._]+/,keywords:"goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",begin:'{"',end:'"}',contains:[e.BACKSLASH_ESCAPE]},e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib"},contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),e.NUMBER_MODE,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"symbol",begin:"^\\*(\\w+|@)"},e.NUMBER_MODE,e.C_NUMBER_MODE]}},_n=function(e){var t="action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view",n=(e.QUOTE_STRING_MODE,{endsWithParent:!0,relevance:0,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE,{illegal:/\}\}/,begin:/[a-zA-Z0-9_]+=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[a-zA-Z0-9_]+/}]},e.NUMBER_MODE]});return{case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT("{{!(--)?","(--)?}}"),{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[{className:"name",begin:/[a-zA-Z\.\-]+/,keywords:{"builtin-name":t},starts:n}]},{className:"template-variable",begin:/\{\{[a-zA-Z][a-zA-Z\-]+/,end:/\}\}/,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE]}]}},En=function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],illegal:"\\S",contains:[{begin:"^"+t,end:"$",contains:[{className:"number",begin:"\\b\\d{3}\\b"}]},{begin:"^[A-Z]+ (.*?) "+t+"$",returnBegin:!0,end:"$",contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{begin:t},{className:"keyword",begin:"[A-Z]+"}]},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,illegal:"\\n|\\s|=",starts:{end:"$",relevance:0}},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}]}},Tn=function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),o={className:"literal",begin:/\b([Tt]rue|[Ff]alse|nil|None)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},s={className:"comment",begin:"\\^"+t},c=e.COMMENT("\\^\\{","\\}"),u={className:"symbol",begin:"[:]{1,2}"+t},d={begin:"\\(",end:"\\)"},p={endsWithParent:!0,relevance:0},m={keywords:{"builtin-name":"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . / // //= /= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile/calls profile/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~"},lexemes:t,className:"name",begin:t,starts:p},g=[d,a,s,c,i,u,l,r,o,n];return d.contains=[e.COMMENT("comment",""),m,p],p.contains=g,l.contains=g,{aliases:["hylang"],illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},d,a,s,c,i,u,l,r,o]}},bn=function(e){return{aliases:["i7"],case_insensitive:!0,keywords:{keyword:"thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule"},contains:[{className:"string",begin:'"',end:'"',relevance:0,contains:[{className:"subst",begin:"\\[",end:"\\]"}]},{className:"section",begin:/^(Volume|Book|Part|Chapter|Section|Table)\b/,end:"$"},{begin:/^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,end:":",contains:[{begin:"\\(This",end:"\\)"}]},{className:"comment",begin:"\\[",end:"\\]",contains:["self"]}]}},vn=function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]};return{aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT(";","$"),e.HASH_COMMENT_MODE,{className:"section",begin:/^\s*\[+/,end:/\]+/},{begin:/^[a-z0-9\[\]_-]+\s*=\s*/,end:"$",returnBegin:!0,contains:[{className:"attr",begin:/[a-z0-9\[\]_-]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[{className:"literal",begin:/\bon|off|true|false|yes|no\b/},{className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)}/}]},t,{className:"number",begin:/([\+\-]+)?[\d]+_[\d_]+/},e.NUMBER_MODE]}]}]}},An=function(e){return{case_insensitive:!0,keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),e.COMMENT("begin_doc","end_doc",{relevance:10}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}},Sn=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}},yn=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,a]};a.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,r,e.REGEXP_MODE];var o=a.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:o}]}]},{begin:/</,end:/(\/\w+|\w+\/)>/,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}},Nn=function(e){var t={className:"params",begin:/\(/,end:/\)/,contains:[{begin:/[\w-]+ *=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[\w-]+/}]}],relevance:0};return{aliases:["wildfly-cli"],lexemes:"[a-z-]+",keywords:{keyword:"alias batch cd clear command connect connection-factory connection-info data-source deploy deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias undeploy unset version xa-data-source",literal:"true false"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"params",begin:/--[\w\-=\/]+/},{className:"function",begin:/:[\w\-.]+/,relevance:0},{className:"string",begin:/\B(([\/.])[\w\-.\/=]+)+/},t]}},Cn=function(e){var t={literal:"true false null"},n=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],r={end:",",endsWithParent:!0,excludeEnd:!0,contains:n,keywords:t},a={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(r,{begin:/:/})],illegal:"\\S"},i={begin:"\\[",end:"\\]",contains:[e.inherit(r)],illegal:"\\S"};return n.splice(n.length,0,a,i),{contains:n,keywords:t,illegal:"\\S"}},On=function(e){var t={keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},n="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",r={lexemes:n,keywords:t,illegal:/<\//},a={className:"subst",begin:/\$\(/,end:/\)/,keywords:t},i={className:"variable",begin:"\\$"+n},o={className:"string",contains:[e.BACKSLASH_ESCAPE,a,i],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},l={className:"string",contains:[e.BACKSLASH_ESCAPE,a,i],begin:"`",end:"`"},s={className:"meta",begin:"@"+n};return r.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},o,l,s,{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],a.contains=r.contains,r},Mn=function(e){return{contains:[{className:"meta",begin:/^julia>/,relevance:10,starts:{end:/^(?![ ]{6})/,subLanguage:"julia"},aliases:["jldoctest"]}]}},xn=function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit initinterface annotation data sealed internal infix operator out by constructor super trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:"\\${",end:"}",contains:[e.APOS_STRING_MODE,e.C_NUMBER_MODE]},a={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},i={className:"string",variants:[{begin:'"""',end:'"""',contains:[a,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,a,r]}]},o={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},l={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(i,{className:"meta-string"})]}]};return{keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},n,o,l,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,o,l,i,e.C_NUMBER_MODE]},e.C_BLOCK_COMMENT_MODE]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},o,l]},i,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},e.C_NUMBER_MODE]}},wn=function(e){var t="\\]|\\?>",n={literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"},r=e.COMMENT("\x3c!--","--\x3e",{relevance:0}),a={className:"meta",begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[r]}},i={className:"meta",begin:"\\[/noprocess|<\\?(lasso(script)?|=)"},o={className:"symbol",begin:"'[a-zA-Z_][\\w.]*'"},l=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(e.C_NUMBER_MODE,{begin:e.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$][a-zA-Z_][\\w.]*"},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*",end:"[a-zA-Z_][\\w.]*",illegal:"\\W"},{className:"params",variants:[{begin:"-(?!infinity)[a-zA-Z_][\\w.]*",relevance:0},{begin:"(\\.\\.\\.)"}]},{begin:/(->|\.)\s*/,relevance:0,contains:[o]},{className:"class",beginKeywords:"define",returnEnd:!0,end:"\\(|=>",contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z_][\\w.]*(=(?!>))?|[-+*/%](?!>)"})]}];return{aliases:["ls","lassoscript"],case_insensitive:!0,lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[|<\\?(lasso(script)?|=)",returnEnd:!0,relevance:0,contains:[r]}},a,i,{className:"meta",begin:"\\[no_square_brackets",starts:{end:"\\[/no_square_brackets\\]",lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[noprocess\\]|<\\?(lasso(script)?|=)",returnEnd:!0,contains:[r]}},a,i].concat(l)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta",begin:"^#!",end:"lasso9$",relevance:10}].concat(l)}},Rn=function(e){return{contains:[{className:"attribute",begin:"^dn",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0},relevance:10},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0}},{className:"literal",begin:"^-",end:"$"},e.HASH_COMMENT_MODE]}},Dn=function(e){return{contains:[{className:"function",begin:"#+[A-Za-z_0-9]*\\(",end:" {",returnBegin:!0,excludeEnd:!0,contains:[{className:"keyword",begin:"#+"},{className:"title",begin:"[A-Za-z_][A-Za-z_0-9]*"},{className:"params",begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"string",begin:'"',end:'"'},{className:"variable",begin:"[A-Za-z_][A-Za-z_0-9]*"}]}]}]}},In=function(e){var t="([\\w-]+|@{[\\w-]+})",n=[],r=[],a=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},i=function(e,t,n){return{className:e,begin:t,relevance:n}},o={begin:"\\(",end:"\\)",contains:r,relevance:0};r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a("'"),a('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},i("number","#[0-9A-Fa-f]+\\b"),o,i("variable","@@?[\\w-]+",10),i("variable","@{[\\w-]+}"),i("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var l=r.concat({begin:"{",end:"}",contains:n}),s={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(r)},c={begin:t+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:t,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:r}}]},u={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:r,relevance:0}},d={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:l}},p={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:t,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,i("keyword","all\\b"),i("variable","@{[\\w-]+}"),i("selector-tag",t+"%?",0),i("selector-id","#"+t),i("selector-class","\\."+t,0),i("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:l},{begin:"!important"}]};return n.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,u,d,c,p),{case_insensitive:!0,illegal:"[=>'/<($\"]",contains:n}},kn=function(e){var t="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",n="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",r={className:"literal",begin:"\\b(t{1}|nil)\\b"},a={className:"number",variants:[{begin:n,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{begin:"#(c|C)\\("+n+" +"+n,end:"\\)"}]},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),o=e.COMMENT(";","$",{relevance:0}),l={begin:"\\*",end:"\\*"},s={className:"symbol",begin:"[:&]"+t},c={begin:t,relevance:0},u={begin:"\\|[^]*?\\|"},d={contains:[a,i,l,s,{begin:"\\(",end:"\\)",contains:["self",r,i,a,c]},c],variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{name:"quote"}},{begin:"'\\|[^]*?\\|"}]},p={variants:[{begin:"'"+t},{begin:"#'"+t+"(::"+t+")*"}]},m={begin:"\\(\\s*",end:"\\)"},g={endsWithParent:!0,relevance:0};return m.contains=[{className:"name",variants:[{begin:t},{begin:"\\|[^]*?\\|"}]},g],g.contains=[d,p,m,r,a,i,o,l,s,u,c],{illegal:/\S/,contains:[a,{className:"meta",begin:"^#!",end:"$"},r,i,o,d,p,m,c]}},Ln=function(e){var t={begin:"\\b[gtps][A-Z]+[A-Za-z0-9_\\-]*\\b|\\$_[A-Z]+",relevance:0},n=[e.C_BLOCK_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("--","$"),e.COMMENT("[^:]//","$")],r=e.inherit(e.TITLE_MODE,{variants:[{begin:"\\b_*rig[A-Z]+[A-Za-z0-9_\\-]*"},{begin:"\\b_[a-z0-9\\-]+"}]}),a=e.inherit(e.TITLE_MODE,{begin:"\\b([A-Za-z0-9_\\-]+)\\b"});return{case_insensitive:!1,keywords:{keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract union unload wait write"},contains:[t,{className:"keyword",begin:"\\bend\\sif\\b"},{className:"function",beginKeywords:"function",end:"$",contains:[t,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"function",begin:"\\bend\\s+",end:"$",keywords:"end",contains:[a,r],relevance:0},{beginKeywords:"command on",end:"$",contains:[t,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"meta",variants:[{begin:"<\\?(rev|lc|livecode)",relevance:10},{begin:"<\\?"},{begin:"\\?>"}]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r].concat(n),illegal:";$|^\\[|^=|&|{"}},Pn=function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger case default function var with then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super case default function var void const let enum export import native __hasProp __extends __slice __bind __indexOf",literal:"true false null undefined yes no on off it that void",built_in:"npm require console print module global window document"},n="[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*",r=e.inherit(e.TITLE_MODE,{begin:n}),a={className:"subst",begin:/#\{/,end:/}/,keywords:t},i={className:"subst",begin:/#[A-Za-z$_]/,end:/(?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,keywords:t},o=[e.BINARY_NUMBER_MODE,{className:"number",begin:"(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)",relevance:0,starts:{end:"(\\s*/)?",relevance:0}},{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,a,i]},{begin:/\\/,end:/(\s|$)/,excludeEnd:!0}]},{className:"regexp",variants:[{begin:"//",end:"//[gim]*",contains:[a,e.HASH_COMMENT_MODE]},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{begin:"@"+n},{begin:"``",end:"``",excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"}];a.contains=o;var l={className:"params",begin:"\\(",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{aliases:["ls"],keywords:t,illegal:/\/\*/,contains:o.concat([e.COMMENT("\\/\\*","\\*\\/"),e.HASH_COMMENT_MODE,{className:"function",contains:[r,l],returnBegin:!0,variants:[{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B\\->\\*?",end:"\\->\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?!?(\\(.*\\))?\\s*\\B[-~]{1,2}>\\*?",end:"[-~]{1,2}>\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B!?[-~]{1,2}>\\*?",end:"!?[-~]{1,2}>\\*?"}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[r]},r]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}},Bn=function(e){var t="([-a-zA-Z$._][\\w\\-$.]*)";return{keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[{className:"keyword",begin:"i\\d+"},e.COMMENT(";","\\n",{relevance:0}),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'"',end:'[^\\\\]"'}],relevance:0},{className:"title",variants:[{begin:"@"+t},{begin:"@\\d+"},{begin:"!"+t},{begin:"!\\d+"+t}]},{className:"symbol",variants:[{begin:"%"+t},{begin:"%\\d+"},{begin:"#\\d+"}]},{className:"number",variants:[{begin:"0[xX][a-fA-F0-9]+"},{begin:"-?\\d+(?:[.]\\d+)?(?:[eE][-+]?\\d+(?:[.]\\d+)?)?"}],relevance:0}]}},Fn=function(e){var t={className:"string",begin:'"',end:'"',contains:[{className:"subst",begin:/\\[tn"\\]/}]},n={className:"number",begin:e.C_NUMBER_RE};return{illegal:":",contains:[t,{className:"comment",variants:[e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/")]},n,{className:"section",variants:[{begin:"\\b(?:state|default)\\b"},{begin:"\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\b"}]},{className:"built_in",begin:"\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b"},{className:"literal",variants:[{begin:"\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b"},{begin:"\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_ON_REZ|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP|CREATOR|ATTACHED_POINT|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b"},{begin:"\\b(?:FALSE|TRUE)\\b"},{begin:"\\b(?:ZERO_ROTATION)\\b"},{begin:"\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\b"},{begin:"\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\b"}]},{className:"type",begin:"\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\b"}]}},Un=function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},n=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:n.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:n}].concat(n)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}},Hn=function(e){var t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t]},r={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[t]},a={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*[:+?]?=",illegal:"\\n",returnBegin:!0,contains:[{begin:"^"+e.UNDERSCORE_IDENT_RE,end:"[:+?]?=",excludeEnd:!0}]},i={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[t]};return{aliases:["mk","mak"],keywords:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",lexemes:/[\w-]+/,contains:[e.HASH_COMMENT_MODE,t,n,r,a,{className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{"meta-keyword":".PHONY"},lexemes:/[\.\w]+/},i]}},Gn=function(e){return{aliases:["mma"],lexemes:"(\\$|\\b)"+e.IDENT_RE+"\\b",keywords:"AbelianGroup Abort AbortKernels AbortProtect Above Abs Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Active ActiveItem ActiveStyle AcyclicGraphQ AddOnHelpPath AddTo AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AffineTransform After AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowedDimensions AllowGroupClose AllowInlineCells AllowKernelInitialization AllowReverseGroupClose AllowScriptLevelChange AlphaChannel AlternatingGroup AlternativeHypothesis Alternatives AmbientLight Analytic AnchoredSearch And AndersonDarlingTest AngerJ AngleBracket AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotation Annuity AnnuityDue Antialiasing Antisymmetric Apart ApartSquareFree Appearance AppearanceElements AppellF1 Append AppendTo Apply ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess ARProcess Array ArrayComponents ArrayDepth ArrayFlatten ArrayPad ArrayPlot ArrayQ ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads AspectRatio AspectRatioFixed Assert Assuming Assumptions AstronomicalData Asynchronous AsynchronousTaskObject AsynchronousTasks AtomQ Attributes AugmentedSymmetricPolynomial AutoAction AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords Axes AxesEdge AxesLabel AxesOrigin AxesStyle Axis BabyMonsterGroupB Back Background BackgroundTasksSettings Backslash Backsubstitution Backward Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseForm Baseline BaselinePosition BaseStyle BatesDistribution BattleLemarieWavelet Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized BetweennessCentrality BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms Booleans BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryStyle Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BubbleChart BubbleChart3D BubbleScale BubbleSizes BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteCount ByteOrdering C CachedValue CacheGraphics CalendarData CalendarType CallPacket CanberraDistance Cancel CancelButton CandlestickChart Cap CapForm CapitalDifferentialD CardinalBSplineBasis CarmichaelLambda Cases Cashflow Casoratian Catalan CatalanNumber Catch CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterDot CentralMoment CentralMomentGeneratingFunction CForm ChampernowneNumber ChanVeseBinarize Character CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop Circle CircleBox CircleDot CircleMinus CirclePlus CircleTimes CirculantGraph CityData Clear ClearAll ClearAttributes ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent ClusteringComponents CMYKColor Coarse Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorCombine ColorConvert ColorData ColorDataFunction ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorSpace Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CommonDefaultFormatTypes Commonest CommonestFilter CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledFunction Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries Composition CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath Congruent Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphQ ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray Constants ConstrainedMax ConstrainedMin ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFilename ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean Control ControlActive ControlAlignment ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateDialog CreateDirectory CreateDocument CreateIntermediateDirectories CreatePalette CreatePalettePacket CreateScheduledTask CreateTemporary CreateWindow CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossingDetect CrossMatrix Csc Csch CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrentImage CurrentlySpeakingPacket CurrentValue CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecomposition D DagumDistribution DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DataCompression DataDistribution DataRange DataReversed Date DateDelimiters DateDifference DateFunction DateList DateListLogPlot DateListPlot DatePattern DatePlus DateRange DateString DateTicksFormat DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayMatchQ DayName DayPlus DayRange DayRound DeBruijnGraph Debug DebugTag Decimal DeclareKnownSymbols DeclarePackage Decompose Decrement DedekindEta Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic Deinitialization Del Deletable Delete DeleteBorderComponents DeleteCases DeleteContents DeleteDirectory DeleteDuplicates DeleteFile DeleteSmallComponents DeleteWithContents DeletionWarning Delimiter DelimiterFlashTime DelimiterMatching Delimiters Denominator DensityGraphics DensityHistogram DensityPlot DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DescriptorStateSpace DesignMatrix Det DGaussianWavelet DiacriticalPositioning Diagonal DiagonalMatrix Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DifferenceDelta DifferenceOrder DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralGroup Dilation Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletCharacter DirichletConvolve DirichletDistribution DirichletL DirichletTransform DirichletWindow DisableConsolePrintPacket DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform Discriminant Disjunction Disk DiskBox DiskMatrix Dispatch DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentNotebook DominantColors DOSTextFormat Dot DotDashed DotEqual Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DSolve Dt DualLinearProgramming DualSystemsModel DumpGet DumpSave DuplicateFreeQ Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptions E EccentricityCentrality EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeCost EdgeCount EdgeCoverQ EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData Eliminate EliminationOrder EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EnableConsolePrintPacket Enabled Encode End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfFile EndOfLine EndOfString EndPackage EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entropy EntropyFilter Environment Epilog Equal EqualColumns EqualRows EqualTilde EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerE EulerGamma EulerianGraphQ EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluationCell EvaluationCompletionAction EvaluationElements EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpToTrig ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalCall ExternalDataCharacterEncoding Extract ExtractArchive ExtremeValueDistribution FaceForm FaceGrids FaceGridsStyle Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail FailureDistribution False FARIMAProcess FEDisableConsolePrintPacket FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket Fibonacci FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileDate FileExistsQ FileExtension FileFormat FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileType FilledCurve FilledCurveBox Filling FillingStyle FillingTransform FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindArgMax FindArgMin FindClique FindClusters FindCurvePath FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEulerianCycle FindFaces FindFile FindFit FindGeneratingFunction FindGeoLocation FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMaximum FindMaximumFlow FindMaxValue FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindPermutation FindPostmanTour FindProcessParameters FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindThreshold FindVertexCover FindVertexCut Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstPassageTimeDistribution FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FittedModel FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlatTopWindow FlipView Floor FlushPrintOutputPacket Fold FoldList Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrequencySamplingFilterKernel FresnelC FresnelS Friday FrobeniusNumber FrobeniusSolve FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullOptions FullSimplify Function FunctionExpand FunctionInterpolation FunctionSpace FussellVeselyImportance GaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins Gamma GammaDistribution GammaRegularized GapPenalty Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateConditions GeneratedCell GeneratedParameters GeneratingFunction Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDistance GeoGridPosition GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoPosition GeoPositionENU GeoPositionXYZ GeoProjectionData GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter Graph GraphAssortativity GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel GreatCircleDistance Greater GreaterEqual GreaterEqualLess GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterTilde Green Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain Gudermannian GumbelDistribution HaarWavelet HadamardMatrix HalfNormalDistribution HamiltonianGraphQ HammingDistance HammingWindow HankelH1 HankelH2 HankelMatrix HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash HashTable Haversine HazardFunction Head HeadCompose Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenSurface HighlightGraph HighlightImage HighpassFilter HigmanSimsGroupHS HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HitMissTransform HITSCentrality HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HotellingTSquareDistribution HoytDistribution HTMLSave Hue HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestData I Identity IdentityMatrix If IgnoreCase Im Image Image3D Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageAspectRatio ImageAssemble ImageCache ImageCacheValid ImageCapture ImageChannels ImageClip ImageColorSpace ImageCompose ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDataPacket ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDistance ImageEffect ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageForestingComponents ImageForwardTransformation ImageHistogram ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarkers ImageMeasurements ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImageQ ImageRangeCache ImageReflect ImageRegion ImageResize ImageResolution ImageRotate ImageRotated ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions Implies Import ImportAutoReplacements ImportString ImprovementImportance In IncidenceGraph IncidenceList IncidenceMatrix IncludeConstantBasis IncludeFileExtension IncludePods IncludeSingularTerm Increment Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentUnit IndependentVertexSetQ Indeterminate IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers Infinity Infix Information Inherited InheritScope Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InlineCounterAssignments InlineCounterIncrements InlineRules Inner Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionPointObject InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Install InstallService InString Integer IntegerDigits IntegerExponent IntegerLength IntegerPart IntegerPartitions IntegerQ Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction InterpretTemplate InterquartileRange Interrupt InterruptSettings Intersection Interval IntervalIntersection IntervalMemberQ IntervalUnion Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHaversine InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InversePermutation InverseRadon InverseSeries InverseSurvivalFunction InverseWaveletTransform InverseWeierstrassP InverseZTransform Invisible InvisibleApplication InvisibleTimes IrreduciblePolynomialQ IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcess JaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join Joined JoinedCurve JoinedCurveBox JoinForm JordanDecomposition JordanModelDecomposition K KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelMixtureDistribution KernelObject Kernels Ket Khinchin KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnightTourGraph KnotData KnownUnitQ KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter Label Labeled LabeledSlider LabelingFunction LabelStyle LaguerreL LambdaComponents LambertW LanczosWindow LandauDistribution Language LanguageCategory LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCM LeafCount LeapYearQ LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessFullEqual LessGreater LessLess LessSlantEqual LessTilde LetterCharacter LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox LinearFilter LinearFractionalTransform LinearModelFit LinearOffsetFunction LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBreak LinebreakAdjustments LineBreakChart LineBreakWithin LineColor LineForm LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRead LinkReadHeld LinkReadyQ Links LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot Listen ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalClusteringCoefficient LocalizeVariables LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestAscendingSequence LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow Loopback LoopFreeGraphQ LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LyapunovSolve LyonsGroupLy MachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules MangoldtLambda ManhattanDistance Manipulate Manipulator MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixPlot MatrixPower MatrixQ MatrixRank Max MaxBend MaxDetect MaxExtraBandwidths MaxExtraConditions MaxFeatures MaxFilter Maximize MaxIterations MaxMemoryUsed MaxMixtureKernels MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxValue MaxwellDistribution McLaughlinGroupMcL Mean MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter Median MedianDeviation MedianFilter Medium MeijerG MeixnerDistribution MemberQ MemoryConstrained MemoryInUse Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuPacket MenuSortingValue MenuStyle MenuView MergeDifferences Mesh MeshFunctions MeshRange MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation Method MethodOptions MexicanHatWavelet MeyerWavelet Min MinDetect MinFilter MinimalPolynomial MinimalStateSpaceModel Minimize Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingDataMethod MittagLefflerE MixedRadix MixedRadixQuantity MixtureDistribution Mod Modal Mode Modular ModularLambda Module Modulus MoebiusMu Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction Monday Monitor MonomialList MonomialOrder MonsterGroupM MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform Most MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovingAverage MovingMedian MoyalDistribution MultiedgeStyle MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistribution N NakagamiDistribution NameQ Names NamespaceBox Nand NArgMax NArgMin NBernoulliB NCache NDSolve NDSolveValue Nearest NearestFunction NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeMultinomialDistribution NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestList NestWhile NestWhileList NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextPrime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants None NonlinearModelFit NonlocalMeansFilter NonNegative NonPositive Nor NorlundB Norm Normal NormalDistribution NormalGrouping Normalize NormalizedSquaredEuclideanDistance NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde NotHumpDownHump NotHumpEqual NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms Null NullRecords NullSpace NullWords Number NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlot O ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OddQ Off Offset OLEData On ONanGroupON OneIdentity Opacity Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering Orderless OrnsteinUhlenbeckProcess Orthogonalize Out Outer OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OwenT OwnValues PackingMethod PaddedForm Padding PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageWidth PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParetoDistribution Part PartialCorrelationFunction PartialD ParticleData Partition PartitionsP PartitionsQ ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PerformanceGoal PeriodicInterpolation Periodogram PeriodogramArray PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PERTDistribution PetersenGraph PhaseMargins Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest Pink Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarGraphQ Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangePadding PlotRegion PlotStyle Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox PointBox PointFigureChart PointForm PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonBox PolygonBoxOptions PolygonHoleScale PolygonIntersections PolygonScale PolyhedronData PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position Positive PositiveDefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement PredictionRoot PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependTo PreserveImageOptions Previous PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitiveRoot PrincipalComponents PrincipalValue Print PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessEstimator ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptions QBinomial QFactorial QGamma QHypergeometricPFQ QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ Quantile QuantilePlot Quantity QuantityForm QuantityMagnitude QuantityQ QuantityUnit Quartics QuartileDeviation Quartiles QuartileSkewness QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainder RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Random RandomChoice RandomComplex RandomFunction RandomGraph RandomImage RandomInteger RandomPermutation RandomPrime RandomReal RandomSample RandomSeed RandomVariate RandomWalkProcess Range RangeFilter RangeSpecification RankedMax RankedMin Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios Raw RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadList ReadProtected Real RealBlockDiagonalForm RealDigits RealExponent Reals Reap Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate RegionBinarize RegionFunction RegionPlot RegionPlot3D RegularExpression Regularization Reinstall Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot Remove RemoveAlphaChannel RemoveAsynchronousTask Removed RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart Repeated RepeatedNull RepeatedString Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated Resampling Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask Residue Resolve Rest Resultant ResumePacket Return ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulerUnits Run RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilarity SameQ SameTest SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveDefinitions SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTaskActiveQ ScheduledTaskData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition Sec Sech SechDistribution SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemialgebraicComponentInstances SendMail Sequence SequenceAlignment SequenceForm SequenceHold SequenceLimit Series SeriesCoefficient SeriesData SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPrecision SetProperty SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share Sharpen ShearingMatrix ShearingTransform ShenCastanMatrix Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortUpArrow Show ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiegelTheta SiegelTukeyTest Sign Signature SignedRankTest SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution Skip SliceDistribution Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SocialMediaData Socket SokalSneathDissimilarity Solve SolveAlways SolveDelayed Sort SortBy Sound SoundAndGraphics SoundNote SoundVolume Sow Space SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution Speak SpeakTextPacket SpearmanRankTest SpearmanRho Spectrogram SpectrogramArray Specularity SpellingCorrection SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackInhibit StandardDeviation StandardDeviationFilter StandardForm Standardize StandbyDistribution Star StarGraph StartAsynchronousTask StartingStepSize StartOfLine StartOfString StartScheduledTask StartupSound StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringCount StringDrop StringExpression StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPosition StringQ StringReplace StringReplaceList StringReplacePart StringReverse StringRotateLeft StringRotateRight StringSkeleton StringSplit StringTake StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleBoxOptions StyleData StyleDefinitions StyleForm StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subset SubsetEqual Subsets SubStar Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde SuchThat Sum SumConvergence Sunday SuperDagger SuperMinus SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceColor SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SystemDialogInput SystemException SystemHelpPath SystemInformation SystemInformationData SystemOpen SystemOptions SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemStub Tab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeWhile Tally Tan Tanh TargetFunctions TargetUnits TautologyQ TelegraphProcess TemplateBox TemplateBoxOptions TemplateSlotSequence TemporalData Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCell TextClipboardType TextData TextForm TextJustification TextLine TextPacket TextParagraph TextRecognize TextRendering TextStyle Texture TextureCoordinateFunction TextureCoordinateScaling Therefore ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreeJSymbol Threshold Through Throw Thumbnail Thursday Ticks TicksStyle Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint Times TimesBy TimeSeriesForecast TimeSeriesInvertibility TimeUsed TimeValue TimeZone Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate ToDiscreteTimeModel ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform TopologicalSort ToRadicals ToRules ToString Total TotalHeight TotalVariationFilter TotalWidth TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField Translate TranslationTransform TransparentColor Transpose TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle TriangleWave TriangularDistribution Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean True TrueQ TruncatedDistribution TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow Tuples TuranGraph TuringMachine Transparent UnateQ Uncompress Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UndirectedEdge UndirectedGraph UndirectedGraphQ UndocumentedTestFEParserPacket UndocumentedTestGetSelectionPacket Unequal Unevaluated UniformDistribution UniformGraphDistribution UniformSumDistribution Uninstall Union UnionPlus Unique UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitTriangle UnitVector Unprotect UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpValues URL URLFetch URLFetchAsynchronous URLSave URLSaveAsynchronous UseGraphicsRange Using UsingFrontEnd V2Get ValidationLength Value ValueBox ValueBoxOptions ValueForm ValueQ ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerifyConvergence VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoigtDistribution VonMisesDistribution WaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeberE Wedge Wednesday WeibullDistribution WeierstrassHalfPeriods WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WilksW WilksWTest WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult Word WordBoundary WordCharacter WordData WordSearch WordSeparators WorkingPrecision Write WriteString Wronskian XMLElement XMLObject Xnor Xor Yellow YuleDissimilarity ZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZipfDistribution ZTest ZTransform $Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AssertFunction $Assumptions $AsynchronousTask $BaseDirectory $BatchInput $BatchOutput $BoxForms $ByteOrdering $Canceled $CharacterEncoding $CharacterEncodings $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $CreationDate $CurrentLink $DateStringFormat $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $Epilog $ExportFormats $Failed $FinancialDataSource $FormatType $FrontEnd $FrontEndSession $GeoLocation $HistoryLength $HomeDirectory $HTTPCookies $IgnoreEOF $ImagingDevices $ImportFormats $InitialDirectory $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $ModuleNumber $NetworkLicense $NewMessage $NewSymbol $Notebooks $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $PipeSupported $Post $Pre $PreferencesDirectory $PrePrint $PreRead $PrintForms $PrintLiteral $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $RandomState $RecursionLimit $ReleaseNumber $RootDirectory $ScheduledTask $ScriptCommandLine $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemWordLength $TemporaryDirectory $TemporaryPrefix $TextStyle $TimedOut $TimeUnit $TimeZone $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $Urgent $UserAddOnsDirectory $UserBaseDirectory $UserDocumentsDirectory $UserName $Version $VersionNumber",contains:[{className:"comment",begin:/\(\*/,end:/\*\)/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{begin:/\{/,end:/\}/,illegal:/:/}]}},qn=function(e){var t=[e.C_NUMBER_MODE,{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]}],n={relevance:0,contains:[{begin:/'['\.]*/}]};return{keywords:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson"},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}]},{begin:/[a-zA-Z_][a-zA-Z_0-9]*'['\.]*/,returnBegin:!0,relevance:0,contains:[{begin:/[a-zA-Z_][a-zA-Z_0-9]*/,relevance:0},n.contains[0]]},{begin:"\\[",end:"\\]",contains:t,relevance:0,starts:n},{begin:"\\{",end:/}/,contains:t,relevance:0,starts:n},{begin:/\)/,relevance:0,starts:n},e.COMMENT("^\\s*\\%\\{\\s*$","^\\s*\\%\\}\\s*$"),e.COMMENT("\\%","$")].concat(t)}},zn=function(e){return{lexemes:"[A-Za-z_%][0-9A-Za-z_%]*",keywords:{keyword:"if then else elseif for thru do while unless step in and or not",literal:"true false unknown inf minf ind und %e %i %pi %phi %gamma",built_in:" abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest",symbol:"_ __ %|0 %%|0"},contains:[{className:"comment",begin:"/\\*",end:"\\*/",contains:["self"]},e.QUOTE_STRING_MODE,{className:"number",relevance:0,variants:[{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b"},{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b",relevance:10},{begin:"\\b(\\.\\d+|\\d+\\.\\d+)\\b"},{begin:"\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b"}]}],illegal:/@/}},Kn=function(e){return{keywords:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",illegal:"</",contains:[e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"[\\$\\%\\@](\\^\\w\\b|#\\w+|[^\\s\\w{]|{\\w+}|\\w+)"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}},jn=function(e){var t=e.COMMENT("%","$"),n=e.inherit(e.APOS_STRING_MODE,{relevance:0}),r=e.inherit(e.QUOTE_STRING_MODE,{relevance:0});r.contains.push({className:"subst",begin:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",relevance:0});return{aliases:["m","moo"],keywords:{keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure",meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing",built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure"},contains:[{className:"built_in",variants:[{begin:"<=>"},{begin:"<=",relevance:0},{begin:"=>",relevance:0},{begin:"/\\\\"},{begin:"\\\\/"}]},{className:"built_in",variants:[{begin:":-\\|--\x3e"},{begin:"=",relevance:0}]},t,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"0'.\\|0[box][0-9a-fA-F]*"},e.NUMBER_MODE,n,r,{begin:/:-/}]}},Vn=function(e){return{case_insensitive:!0,aliases:["mips"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ",built_in:"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt "},contains:[{className:"keyword",begin:"\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(.hb)?|jr(.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs.[sd]|add.[sd]|alnv.ps|bc1[ft]l?|c.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et]).[sd]|(ceil|floor|round|trunc).[lw].[sd]|cfc1|cvt.d.[lsw]|cvt.l.[dsw]|cvt.ps.s|cvt.s.[dlw]|cvt.s.p[lu]|cvt.w.[dls]|div.[ds]|ldx?c1|luxc1|lwx?c1|madd.[sd]|mfc1|mov[fntz]?.[ds]|msub.[sd]|mth?c1|mul.[ds]|neg.[ds]|nmadd.[ds]|nmsub.[ds]|p[lu][lu].ps|recip.fmt|r?sqrt.[ds]|sdx?c1|sub.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)",end:"\\s"},e.COMMENT("[;#]","$"),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"0x[0-9a-f]+"},{begin:"\\b-?\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^\\s*[0-9]+:"},{begin:"[0-9]+[bf]"}],relevance:0}],illegal:"/"}},$n=function(e){return{keywords:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity",contains:[e.COMMENT("::","$")]}},Wn=function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",n={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:t},r={begin:"->{",end:"}"},a={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,n,a],o=[a,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),r,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return n.contains=o,r.contains=o,{aliases:["pl","pm"],lexemes:/[\w\.]+/,keywords:t,contains:o}},Yn=function(e){return{subLanguage:"xml",contains:[{className:"meta",begin:"^__(END|DATA)__$"},{begin:"^\\s*%{1,2}={0,2}",end:"$",subLanguage:"perl"},{begin:"<%{1,2}={0,2}",end:"={0,1}%>",subLanguage:"perl",excludeBegin:!0,excludeEnd:!0}]}},Qn=function(e){var t={className:"number",relevance:0,variants:[{begin:"[$][a-fA-F0-9]+"},e.NUMBER_MODE]};return{case_insensitive:!0,keywords:{keyword:"public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import",built_in:"DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI",literal:"true false null and or shl shr mod"},illegal:/\/\*/,contains:[e.COMMENT("#rem","#end"),e.COMMENT("'","$",{relevance:0}),{className:"function",beginKeywords:"function method",end:"[(=:]|$",illegal:/\n/,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"$",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{className:"built_in",begin:"\\b(self|super)\\b"},{className:"meta",begin:"\\s*#",end:"$",keywords:{"meta-keyword":"if else elseif endif end then"}},{className:"meta",begin:"^\\s*strict\\b"},{beginKeywords:"alias",end:"=",contains:[e.UNDERSCORE_TITLE_MODE]},e.QUOTE_STRING_MODE,t]}},Xn=function(e){var t={keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",literal:"true false nil",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},a=[e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"built_in",begin:"@__"+e.IDENT_RE},{begin:"@"+e.IDENT_RE},{begin:e.IDENT_RE+"\\\\"+e.IDENT_RE}];r.contains=a;var i=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["moon"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("--","$"),{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,o]},{begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[o]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{className:"name",begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}},Zn=function(e){return{case_insensitive:!0,contains:[{beginKeywords:"build create index delete drop explain infer|10 insert merge prepare select update upsert|10",end:/;/,endsWithParent:!0,keywords:{keyword:"all alter analyze and any array as asc begin between binary boolean break bucket build by call case cast cluster collate collection commit connect continue correlate cover create database dataset datastore declare decrement delete derived desc describe distinct do drop each element else end every except exclude execute exists explain fetch first flatten for force from function grant group gsi having if ignore ilike in include increment index infer inline inner insert intersect into is join key keys keyspace known last left let letting like limit lsm map mapping matched materialized merge minus namespace nest not number object offset on option or order outer over parse partition password path pool prepare primary private privilege procedure public raw realm reduce rename return returning revoke right role rollback satisfies schema select self semi set show some start statistics string system then to transaction trigger truncate under union unique unknown unnest unset update upsert use user using validate value valued values via view when where while with within work xor",literal:"true false null missing|5",built_in:"array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"symbol",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE],relevance:2},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE]}},Jn=function(e){var t={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},n={endsWithParent:!0,lexemes:"[a-z/_]+",keywords:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[t]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},t]};return{aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:n}],relevance:0}],illegal:"[^\\s\\}]"}},er=function(e){return{aliases:["nim"],keywords:{keyword:"addr and as asm bind block break case cast const continue converter discard distinct div do elif else end enum except export finally for from generic if import in include interface is isnot iterator let macro method mixin mod nil not notin object of or out proc ptr raise ref return shl shr static template try tuple type using var when while with without xor yield",literal:"shared guarded stdin stdout stderr result true false",built_in:"int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool char string cstring pointer expr stmt void auto any range array openarray varargs seq set clong culong cchar cschar cshort cint csize clonglong cfloat cdouble clongdouble cuchar cushort cuint culonglong cstringarray semistatic"},contains:[{className:"meta",begin:/{\./,end:/\.}/,relevance:10},{className:"string",begin:/[a-zA-Z]\w*"/,end:/"/,contains:[{begin:/""/}]},{className:"string",begin:/([a-zA-Z]\w*)?"""/,end:/"""/},e.QUOTE_STRING_MODE,{className:"type",begin:/\b[A-Z]\w+\b/,relevance:0},{className:"number",relevance:0,variants:[{begin:/\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},{begin:/\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/}]},e.HASH_COMMENT_MODE]}},tr=function(e){var t={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},n={className:"subst",begin:/\$\{/,end:/}/,keywords:t},r={className:"string",contains:[n],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}]},a=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/\S+/}]}];return n.contains=a,{aliases:["nixos"],keywords:t,contains:a}},nr=function(e){var t={className:"variable",begin:/\$+{[\w\.:-]+}/},n={className:"variable",begin:/\$+\w+/,illegal:/\(\){}/},r={className:"variable",begin:/\$+\([\w\^\.:-]+\)/},a={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"},{begin:"`",end:"`"}],illegal:/\n/,contains:[{className:"subst",begin:/\$(\\[nrt]|\$)/},{className:"variable",begin:/\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/},t,n,r]};return{case_insensitive:!1,keywords:{keyword:"Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText IntCmp IntCmpU IntFmt IntOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegStr WriteUninstaller XPStyle",literal:"admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib"},contains:[e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),{className:"function",beginKeywords:"Function PageEx Section SectionGroup",end:"$"},a,{className:"keyword",begin:/\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversionsystem|ifdef|ifmacrodef|ifmacrondef|ifndef|if|include|insertmacro|macroend|macro|makensis|packhdr|searchparse|searchreplace|tempfile|undef|verbose|warning)/},t,n,r,{className:"params",begin:"(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)"},{className:"class",begin:/\w+\:\:\w+/},e.NUMBER_MODE]}},rr=function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],keywords:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},lexemes:t,illegal:"</",contains:[{className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"}]},{className:"meta",begin:"#",end:"$",contains:[{className:"meta-string",variants:[{begin:'"',end:'"'},{begin:"<",end:">"}]}]},{className:"class",begin:"("+n.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:n,lexemes:t,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}},ar=function(e){return{aliases:["ml"],keywords:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}},ir=function(e){var t={className:"keyword",begin:"\\$(f[asn]|t|vp[rtd]|children)"},n={className:"number",begin:"\\b\\d+(\\.\\d+)?(e-?\\d+)?",relevance:0},r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),a={className:"function",beginKeywords:"module function",end:"\\=|\\{",contains:[{className:"params",begin:"\\(",end:"\\)",contains:["self",n,r,t,{className:"literal",begin:"false|true|PI|undef"}]},e.UNDERSCORE_TITLE_MODE]};return{aliases:["scad"],keywords:{keyword:"function module include use for intersection_for if else \\%",literal:"false true PI undef",built_in:"circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"meta",keywords:{"meta-keyword":"include use"},begin:"include|use <",end:">"},r,t,{begin:"[*!#%]",relevance:0},a]}},or=function(e){var t="abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained",n=e.COMMENT("{","}",{relevance:0}),r=e.COMMENT("\\(\\*","\\*\\)",{relevance:10}),a={className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},i={className:"string",begin:"(#\\d+)+"},o={className:"function",beginKeywords:"function constructor destructor procedure method",end:"[:;]",keywords:"function constructor|10 destructor|10 procedure|10 method|10",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",keywords:t,contains:[a,i]},n,r]};return{case_insensitive:!0,lexemes:/\.?\w+/,keywords:t,illegal:'("|\\$[G-Zg-z]|\\/\\*|</|=>|->)',contains:[n,r,e.C_LINE_COMMENT_MODE,a,i,e.NUMBER_MODE,o,{className:"class",begin:"=\\bclass\\b",end:"end;",keywords:t,contains:[a,i,n,r,e.C_LINE_COMMENT_MODE,o]}]}},lr=function(e){var t=e.COMMENT("{","}",{contains:["self"]});return{subLanguage:"xml",relevance:0,contains:[e.COMMENT("^#","$"),e.COMMENT("\\^rem{","}",{relevance:10,contains:[t]}),{className:"meta",begin:"^@(?:BASE|USE|CLASS|OPTIONS)$",relevance:10},{className:"title",begin:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{className:"variable",begin:"\\$\\{?[\\w\\-\\.\\:]+\\}?"},{className:"keyword",begin:"\\^[\\w\\-\\.\\:]+"},{className:"number",begin:"\\^#[0-9a-fA-F]+"},e.C_NUMBER_MODE]}},sr=function(e){return{aliases:["pf.conf"],lexemes:/[a-z0-9_<>-]+/,keywords:{built_in:"block match pass load anchor|5 antispoof|10 set table",keyword:"in out log quick on rdomain inet inet6 proto from port os to routeallow-opts divert-packet divert-reply divert-to flags group icmp-typeicmp6-type label once probability recieved-on rtable prio queuetos tag tagged user keep fragment for os dropaf-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robinsource-hash static-portdup-to reply-to route-toparent bandwidth default min max qlimitblock-policy debug fingerprints hostid limit loginterface optimizationreassemble ruleset-optimization basic none profile skip state-defaultsstate-policy timeoutconst counters persistno modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppysource-track global rule max-src-nodes max-src-states max-src-connmax-src-conn-rate overload flushscrub|5 max-mss min-ttl no-df|10 random-id",literal:"all any no-route self urpf-failed egress|5 unknown"},contains:[e.HASH_COMMENT_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"variable",begin:/\$[\w\d#@][\w\d_]*/},{className:"variable",begin:/<(?!\/)/,end:/>/}]}},cr=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},r={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,r,a]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},r,a]}},ur=function(e){var t={className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE]},n={className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},r={className:"type",begin:"\\b_?[A-Z][\\w]*",relevance:0},a={begin:e.IDENT_RE+"'",relevance:0};return{keywords:{keyword:"actor addressof and as be break class compile_error compile_intrinsicconsume continue delegate digestof do else elseif embed end errorfor fun if ifdef in interface is isnt lambda let match new not objector primitive recover repeat return struct then trait try type until use var where while with xor",meta:"iso val tag trn box ref",literal:"this false true"},contains:[{className:"class",beginKeywords:"class actor",end:"$",contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE]},{className:"function",beginKeywords:"new fun",end:"=>",contains:[e.TITLE_MODE,{begin:/\(/,end:/\)/,contains:[r,a,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},{begin:/:/,endsWithParent:!0,contains:[r]},e.C_LINE_COMMENT_MODE]},r,{className:"string",begin:'"""',end:'"""',relevance:10},t,n,a,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}},dr=function(e){var t={begin:"`[\\s\\S]",relevance:0},n={className:"variable",variants:[{begin:/\$[\w\d][\w\d_:]*/}]},r={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[t,n,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},a=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]});return{aliases:["ps"],lexemes:/-?[A-z\.\-]+/,case_insensitive:!0,keywords:{keyword:"if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch",built_in:"Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning Add-MDTPersistentDrive Disable-MDTMonitorService Enable-MDTMonitorService Get-MDTDeploymentShareStatistics Get-MDTMonitorData Get-MDTOperatingSystemCatalog Get-MDTPersistentDrive Import-MDTApplication Import-MDTDriver Import-MDTOperatingSystem Import-MDTPackage Import-MDTTaskSequence New-MDTDatabase Remove-MDTMonitorData Remove-MDTPersistentDrive Restore-MDTPersistentDrive Set-MDTMonitorData Test-MDTDeploymentShare Test-MDTMonitorData Update-MDTDatabaseSchema Update-MDTDeploymentShare Update-MDTLinkedDS Update-MDTMedia Update-MDTMedia Add-VamtProductKey Export-VamtData Find-VamtManagedMachine Get-VamtConfirmationId Get-VamtProduct Get-VamtProductKey Import-VamtData Initialize-VamtData Install-VamtConfirmationId Install-VamtProductActivation Install-VamtProductKey Update-VamtProduct",nomarkup:"-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace"},contains:[t,e.NUMBER_MODE,r,{className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},{className:"literal",begin:/\$(null|true|false)\b/},n,a]}},pr=function(e){return{keywords:{keyword:"BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI",title:"setup draw",built_in:"displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}},mr=function(e){return{contains:[e.C_NUMBER_MODE,{begin:"[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}",end:":",excludeEnd:!0},{begin:"(ncalls|tottime|cumtime)",end:"$",keywords:"ncalls tottime|10 cumtime|10 filename",relevance:10},{begin:"function calls",end:"$",contains:[e.C_NUMBER_MODE],relevance:10},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\(",end:"\\)$",excludeBegin:!0,excludeEnd:!0,relevance:0}]}},gr=function(e){var t={begin:/\(/,end:/\)/,relevance:0},n={begin:/\[/,end:/\]/},r={className:"comment",begin:/%/,end:/$/,contains:[e.PHRASAL_WORDS_MODE]},a={className:"string",begin:/`/,end:/`/,contains:[e.BACKSLASH_ESCAPE]},i=[{begin:/[a-z][A-Za-z0-9_]*/,relevance:0},{className:"symbol",variants:[{begin:/[A-Z][a-zA-Z0-9_]*/},{begin:/_[A-Za-z0-9_]*/}],relevance:0},t,{begin:/:-/},n,r,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,a,{className:"string",begin:/0\'(\\\'|.)/},{className:"string",begin:/0\'\\s/},e.C_NUMBER_MODE];return t.contains=i,n.contains=i,{contains:i.concat([{begin:/\.$/}])}},hr=function(e){return{keywords:{keyword:"package import option optional required repeated group",built_in:"double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,{className:"class",beginKeywords:"message enum service",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"function",beginKeywords:"rpc",end:/;/,excludeEnd:!0,keywords:"rpc returns"},{begin:/^\s*[A-Z_]+/,end:/\s*=/,excludeEnd:!0}]}},fr=function(e){var t=e.COMMENT("#","$"),n=e.inherit(e.TITLE_MODE,{begin:"([A-Za-z_]|::)(\\w|::)*"}),r={className:"variable",begin:"\\$([A-Za-z_]|::)(\\w|::)*"},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]};return{aliases:["pp"],contains:[t,r,a,{beginKeywords:"class",end:"\\{|;",illegal:/=/,contains:[n,t]},{beginKeywords:"define",end:/\{/,contains:[{className:"section",begin:e.IDENT_RE,endsParent:!0}]},{begin:e.IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\S/,contains:[{className:"keyword",begin:e.IDENT_RE},{begin:/\{/,end:/\}/,keywords:{keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"},relevance:0,contains:[a,t,{begin:"[a-zA-Z_]+\\s*=>",returnBegin:!0,end:"=>",contains:[{className:"attr",begin:e.IDENT_RE}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},r]}],relevance:0}]}},_r=function(e){return{aliases:["pb","pbi"],keywords:"And As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect Continue Data DataSection EndDataSection Debug DebugLevel Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndEnumeration EndIf EndImport EndInterface EndMacro EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration Extends FakeReturn For Next ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface Macro NewList Not Or ProcedureReturn Protected Prototype PrototypeC Read ReDim Repeat Until Restore Return Select Shared Static Step Structure StructureUnion Swap To Wend While With XIncludeFile XOr Procedure ProcedureC ProcedureCDLL ProcedureDLL Declare DeclareC DeclareCDLL DeclareDLL",contains:[e.COMMENT(";","$",{relevance:0}),{className:"function",begin:"\\b(Procedure|Declare)(C|CDLL|DLL)?\\b",end:"\\(",excludeEnd:!0,returnBegin:!0,contains:[{className:"keyword",begin:"(Procedure|Declare)(C|CDLL|DLL)?",excludeEnd:!0},{className:"type",begin:"\\.\\w*"},e.UNDERSCORE_TITLE_MODE]},{className:"string",begin:'(~)?"',end:'"',illegal:"\\n"},{className:"symbol",begin:"#[a-zA-Z_]\\w*\\$?"}]}},Er=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},a={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,r]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,r]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[r]},{begin:/(fr|rf|f)"/,end:/"/,contains:[r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},i={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},o={className:"params",begin:/\(/,end:/\)/,contains:["self",n,i,a]};return r.contains=[a,i,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,i,a,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,o,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}},Tr=function(e){return{aliases:["k","kdb"],keywords:{keyword:"do while select delete by update from",literal:"0b 1b",built_in:"neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum",type:"`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid"},lexemes:/(`?)[A-Za-z0-9_]+\b/,contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}},br=function(e){var t="[a-zA-Z_][a-zA-Z0-9\\._]*",n={className:"attribute",begin:"\\bid\\s*:",starts:{className:"string",end:t,returnEnd:!1}},r={begin:t+"\\s*:",returnBegin:!0,contains:[{className:"attribute",begin:t,end:"\\s*:",excludeEnd:!0,relevance:0}],relevance:0},a={begin:t+"\\s*{",end:"{",returnBegin:!0,relevance:0,contains:[e.inherit(e.TITLE_MODE,{begin:t})]};return{aliases:["qt"],case_insensitive:!1,keywords:{keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4dPromise"},contains:[{className:"meta",begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{begin:/</,end:/>\s*[);\]]/,relevance:0,subLanguage:"xml"}],relevance:0},{className:"keyword",begin:"\\bsignal\\b",starts:{className:"string",end:"(\\(|:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"keyword",begin:"\\bproperty\\b",starts:{className:"string",end:"(:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}],illegal:/\[|%/},{begin:"\\."+e.IDENT_RE,relevance:0},n,r,a],illegal:/#/}},vr=function(e){var t="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{contains:[e.HASH_COMMENT_MODE,{begin:t,lexemes:t,keywords:{keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}},Ar=function(e){return{keywords:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",illegal:"</",contains:[e.HASH_COMMENT_MODE,e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}},Sr=function(e){var t="[a-zA-Z-_][^\\n{]+\\{",n={className:"attribute",begin:/[a-zA-Z-_]+/,end:/\s*:/,excludeEnd:!0,starts:{end:";",relevance:0,contains:[{className:"variable",begin:/\.[a-zA-Z-_]+/},{className:"keyword",begin:/\(optional\)/}]}};return{aliases:["graph","instances"],case_insensitive:!0,keywords:"import",contains:[{begin:"^facet "+t,end:"}",keywords:"facet",contains:[n,e.HASH_COMMENT_MODE]},{begin:"^\\s*instance of "+t,end:"}",keywords:"name count channels instance-data instance-state instance of",illegal:/\S/,contains:["self",n,e.HASH_COMMENT_MODE]},{begin:"^"+t,end:"}",contains:[n,e.HASH_COMMENT_MODE]},e.HASH_COMMENT_MODE]}},yr=function(e){var t="foreach do while for if from to step else on-error and or not in",n="true false yes no nothing nil null",r={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]},i={className:"string",begin:/'/,end:/'/};return{aliases:["routeros","mikrotik"],case_insensitive:!0,lexemes:/:?[\w-]+/,keywords:{literal:n,keyword:t+" :"+t.split(" ").join(" :")+" :"+"global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime".split(" ").join(" :")},contains:[{variants:[{begin:/^@/,end:/$/},{begin:/\/\*/,end:/\*\//},{begin:/%%/,end:/$/},{begin:/^'/,end:/$/},{begin:/^\s*\/[\w-]+=/,end:/$/},{begin:/\/\//,end:/$/},{begin:/^\[\</,end:/\>\]$/},{begin:/<\//,end:/>/},{begin:/^facet /,end:/\}/},{begin:"^1\\.\\.(\\d+)$",end:/$/}],illegal:/./},e.COMMENT("^#","$"),a,i,r,{begin:/[\w-]+\=([^\s\{\}\[\]\(\)]+)/,relevance:0,returnBegin:!0,contains:[{className:"attribute",begin:/[^=]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[a,i,r,{className:"literal",begin:"\\b("+n.split(" ").join("|")+")\\b"},{begin:/("[^"]*"|[^\s\{\}\[\]]+)/}]}]},{className:"number",begin:/\*[0-9a-fA-F]+/},{begin:"\\b("+"add remove enable disable set get print export edit find run debug error info warning".split(" ").join("|")+")([\\s[(]|])",returnBegin:!0,contains:[{className:"builtin-name",begin:/\w+/}]},{className:"built_in",variants:[{begin:"(\\.\\./|/|\\s)(("+"traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firewall firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw".split(" ").join("|")+");?\\s)+",relevance:10},{begin:/\.\./}]}]}},Nr=function(e){return{keywords:{keyword:"float color point normal vector matrix while for if do return else break extern continue",built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"surface displacement light volume imager",end:"\\("},{beginKeywords:"illuminate illuminance gather",end:"\\("}]}},Cr=function(e){return{keywords:{keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING",built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"literal",variants:[{begin:"#\\s+[a-zA-Z\\ \\.]*",relevance:0},{begin:"#[a-zA-Z\\ \\.]+"}]}]}},Or=function(e){var t="([ui](8|16|32|64|128|size)|f(32|64))?",n="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{aliases:["rs"],keywords:{keyword:"alignof as be box break const continue crate do else enum extern false fn for if impl in let loop match mod mut offsetof once priv proc pub pure ref return self Self sizeof static struct super trait true type typeof unsafe unsized use virtual while where yield move default",literal:"true false Some None Ok Err",built_in:n},lexemes:e.IDENT_RE+"!?",illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"string",variants:[{begin:/r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:"number",variants:[{begin:"\\b0b([01_]+)"+t},{begin:"\\b0o([0-7_]+)"+t},{begin:"\\b0x([A-Fa-f0-9_]+)"+t},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+t}],relevance:0},{className:"function",beginKeywords:"fn",end:"(\\(|<)",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"meta",begin:"#\\!?\\[",end:"\\]",contains:[{className:"meta-string",begin:/"/,end:/"/}]},{className:"class",beginKeywords:"type",end:";",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"\\S"},{className:"class",beginKeywords:"trait enum struct union",end:"{",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"[\\w\\d]"},{begin:e.IDENT_RE+"::",keywords:{built_in:n}},{begin:"->"}]}},Mr=function(e){var t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},n={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[t],relevance:10}]},r={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},a={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},a]},o={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[a]};return{keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},r,o,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}},xr=function(e){var t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},r={className:"number",variants:[{begin:"(\\-|\\+)?\\d+([./]\\d+)?",relevance:0},{begin:"(\\-|\\+)?\\d+([./]\\d+)?[+\\-](\\-|\\+)?\\d+([./]\\d+)?i",relevance:0},{begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},a=e.QUOTE_STRING_MODE,i=[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#\\|","\\|#")],o={begin:t,relevance:0},l={className:"symbol",begin:"'"+t},s={endsWithParent:!0,relevance:0},c={variants:[{begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)",contains:["self",n,a,r,o,l]}]},u={className:"name",begin:t,lexemes:t,keywords:{"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"}},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}],contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{begin:/\(/,end:/\)/,endsParent:!0,contains:[o]}]},u,s]};return s.contains=[n,r,a,o,l,c,d].concat(i),{illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},r,a,l,c,d].concat(i)}},wr=function(e){var t=[e.C_NUMBER_MODE,{className:"string",begin:"'|\"",end:"'|\"",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]}];return{aliases:["sci"],lexemes:/%?\w+/,keywords:{keyword:"abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while",literal:"%f %F %t %T %pi %eps %inf %nan %e %i %z %s",built_in:"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix"},illegal:'("|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{begin:"[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",end:"",relevance:0},{begin:"\\[",end:"\\]'*[\\.']*",relevance:0,contains:t},e.COMMENT("//","$")].concat(t)}},Rr=function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},n={className:"number",begin:"#[0-9A-Fa-f]+"};e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE;return{case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,n,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@",end:"[{;]",keywords:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",contains:[t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n,e.CSS_NUMBER_MODE,{begin:"\\s[A-Za-z0-9_.-]+",relevance:0}]}]}},Dr=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}},Ir=function(e){var t=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"];return{aliases:["smali"],contains:[{className:"string",begin:'"',end:'"',relevance:0},e.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{begin:"\\s("+["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"].join("|")+")"}]},{className:"built_in",variants:[{begin:"\\s("+t.join("|")+")\\s"},{begin:"\\s("+t.join("|")+")((\\-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{begin:"\\s("+["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"].join("|")+")((\\-|/)[a-zA-Z0-9]+)*\\s",relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{begin:"[vp][0-9]+"}]}},kr=function(e){var t={className:"string",begin:"\\$.{1}"},n={className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{aliases:["st"],keywords:"self super nil true false thisContext",contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:"[a-z][a-zA-Z0-9_]*:",relevance:0},e.C_NUMBER_MODE,n,t,{begin:"\\|[ ]*[a-z][a-zA-Z0-9_]*([ ]+[a-z][a-zA-Z0-9_]*)*[ ]*\\|",returnBegin:!0,end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?[a-z][a-zA-Z0-9_]*"}]},{begin:"\\#\\(",end:"\\)",contains:[e.APOS_STRING_MODE,t,e.C_NUMBER_MODE,n]}]}},Lr=function(e){return{aliases:["ml"],keywords:{keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while",built_in:"array bool char exn int list option order real ref string substring vector unit word",literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}},Pr=function(e){var t=e.getLanguage("cpp").exports;return{aliases:["sqf"],case_insensitive:!0,keywords:{keyword:"case catch default do else exit exitWith for forEach from if switch then throw to try waitUntil while with",built_in:"abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem addWeaponPool addWeaponTurret agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airportSide AISFinishHeal alive all3DENEntities allControls allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSites allTurrets allUnits allUnitsUAV allVariables ammo and animate animateDoor animateSource animationNames animationPhase animationSourcePhase animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular blufor boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend canUnloadInCombat canVehicleCargo captive captiveNum cbChecked cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility civilian className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configNull configProperties configSourceAddonList configSourceMod configSourceModList connectTerminalToUAV controlNull controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlType ctrlVisible curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts diag_captureFrame diag_captureSlowFrame diag_codePerformance diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayNull displayParent displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle driver drop east echo edit3DENMissionAttributes editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAimPrecision enableAttack enableAudioFeature enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableStamina enableTeamSwitch enableUAVConnectability enableUAVWaypoints enableVehicleCargo endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagOwner flagSide flagTexture fleeing floor flyInHeight flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllHitPointsDamage getAllOwnedMines getAmmoCargo getAnimAimPrecision getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState getClientStateNumber getConnectedUAV getCustomAimingCoef getDammage getDescription getDir getDirVisual getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getFatigue getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs getMissionLayerEntities getModelInfo getMousePosition getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getRelDir getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents getSlingLoad getSpeed getStamina getStatValue getSuppression getTerrainHeightASL getText getUnitLoadout getUnitTrait getVariable getVehicleCargo getWeaponCargo getWeaponSway getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit grpNull gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in inArea inAreaArray incapacitatedState independent inflame inflamed inGameUISetEventHandler inheritsFrom initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDedicated isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUniformAllowed isVehicleCargo isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbCurSel lbData lbDelete lbIsSelected lbPicture lbSelection lbSetColor lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineBreak lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationNull locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual modParams moonIntensity moonPhase morale move move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberToDate objectCurators objectFromNetId objectParent objNull objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openDLCPage openMap openYoutubeVideo opfor or orderGetIn overcast overcastForecast owner param params parseNumber parseText parsingNamespace particlesQuality pi pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority private processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall remove3DENConnection remove3DENEventHandler remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponGlobal removeWeaponTurret requiredVersion resetCamShake resetSubgroupDirection resistance resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scriptNull scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer set3DENLinesVisible set3DENMissionAttributes set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setAirportSide setAmmo setAmmoCargo setAnimSpeedCoef setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTi setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDropInterval setEditorMode setEditorObjectScope setEffectCondition setFace setFaceAnimation setFatigue setFlagOwner setFlagSide setFlagTexture setFog setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect setPitch setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setShadowDistance setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits setTargetAge setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat setUserActionText setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId setVehicleLock setVehiclePosition setVehicleTiPars setVehicleVarName setVelocity setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side sideAmbientLife sideChat sideEmpty sideEnemy sideFriendly sideLogic sideRadio sideUnknown simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan targetKnowledge targetsAggregate targetsQuery taskAlwaysVisible taskChildren taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskNull taskParent taskResult taskState taskType teamMember teamMemberNull teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL text textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCount tvCurSel tvData tvDelete tvExpand tvPicture tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent useAudioTimeForMoves vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorMultiply vectorNormalized vectorUp vectorUpVisual vehicle vehicleCargoEnabled vehicleChat vehicleRadio vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD west WFSideText wind",literal:"true false nil"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.NUMBER_MODE,{className:"variable",begin:/\b_+[a-zA-Z_]\w*/},{className:"title",begin:/[a-zA-Z][a-zA-Z0-9]+_fnc_\w*/},{className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'",end:"'",contains:[{begin:"''",relevance:0}]}]},t.preprocessor],illegal:/#/}},Br=function(e){var t=e.COMMENT("--","$");return{case_insensitive:!0,illegal:/[<>{}*#]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",end:/;/,endsWithParent:!0,lexemes:/[\w\.]+/,keywords:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}]},{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t]},e.C_BLOCK_COMMENT_MODE,t]}},Fr=function(e){return{contains:[e.HASH_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE,lexemes:e.UNDERSCORE_IDENT_RE,keywords:{name:"for in while repeat until if then else",symbol:"bernoulli bernoulli_logit binomial binomial_logit beta_binomial hypergeometric categorical categorical_logit ordered_logistic neg_binomial neg_binomial_2 neg_binomial_2_log poisson poisson_log multinomial normal exp_mod_normal skew_normal student_t cauchy double_exponential logistic gumbel lognormal chi_square inv_chi_square scaled_inv_chi_square exponential inv_gamma weibull frechet rayleigh wiener pareto pareto_type_2 von_mises uniform multi_normal multi_normal_prec multi_normal_cholesky multi_gp multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet lkj_corr lkj_corr_cholesky wishart inv_wishart","selector-tag":"int real vector simplex unit_vector ordered positive_ordered row_vector matrix cholesky_factor_corr cholesky_factor_cov corr_matrix cov_matrix",title:"functions model data parameters quantities transformed generated",literal:"true false"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0}]}},Ur=function(e){return{aliases:["do","ado"],case_insensitive:!0,keywords:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize meqparse mer merg merge mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5",contains:[{className:"symbol",begin:/`[a-zA-Z0-9_]+'/},{className:"variable",begin:/\$\{?[a-zA-Z0-9_]+\}?/},{className:"string",variants:[{begin:'`"[^\r\n]*?"\''},{begin:'"[^\r\n"]*"'}]},{className:"built_in",variants:[{begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\(|$)"}]},e.COMMENT("^[ \t]*\\*.*$",!1),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}},Hr=function(e){return{aliases:["p21","step","stp"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:{keyword:"HEADER ENDSEC DATA"},contains:[{className:"meta",begin:"ISO-10303-21;",relevance:10},{className:"meta",begin:"END-ISO-10303-21;",relevance:10},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("/\\*\\*!","\\*/"),e.C_NUMBER_MODE,e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"'",end:"'"},{className:"symbol",variants:[{begin:"#",end:"\\d+",illegal:"\\W"}]}]}},Gr=function(e){var t={className:"variable",begin:"\\$"+e.IDENT_RE},n={className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"},r="[\\.\\s\\n\\[\\:,]";return{aliases:["styl"],case_insensitive:!1,keywords:"if else for in",illegal:"("+["\\?","(\\bReturn\\b)","(\\bEnd\\b)","(\\bend\\b)","(\\bdef\\b)",";","#\\s","\\*\\s","===\\s","\\|","%"].join("|")+")",contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{begin:"\\.[a-zA-Z][a-zA-Z0-9_-]*"+r,returnBegin:!0,contains:[{className:"selector-class",begin:"\\.[a-zA-Z][a-zA-Z0-9_-]*"}]},{begin:"\\#[a-zA-Z][a-zA-Z0-9_-]*"+r,returnBegin:!0,contains:[{className:"selector-id",begin:"\\#[a-zA-Z][a-zA-Z0-9_-]*"}]},{begin:"\\b("+["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"].join("|")+")"+r,returnBegin:!0,contains:[{className:"selector-tag",begin:"\\b[a-zA-Z][a-zA-Z0-9_-]*"}]},{begin:"&?:?:\\b("+["after","before","first-letter","first-line","active","first-child","focus","hover","lang","link","visited"].join("|")+")"+r},{begin:"@("+["charset","css","debug","extend","font-face","for","import","include","media","mixin","page","warn","while"].join("|")+")\\b"},t,e.CSS_NUMBER_MODE,e.NUMBER_MODE,{className:"function",begin:"^[a-zA-Z][a-zA-Z0-9_-]*\\(.*\\)",illegal:"[\\n]",returnBegin:!0,contains:[{className:"title",begin:"\\b[a-zA-Z][a-zA-Z0-9_-]*"},{className:"params",begin:/\(/,end:/\)/,contains:[n,t,e.APOS_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE]}]},{className:"attribute",begin:"\\b("+["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse().join("|")+")\\b",starts:{end:/;|$/,contains:[n,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/\./,relevance:0}}]}},qr=function(e){return{case_insensitive:!0,contains:[{className:"string",begin:"\\[\n(multipart)?",end:"\\]\n"},{className:"string",begin:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z"},{className:"string",begin:"(\\+|-)\\d+"},{className:"keyword",relevance:10,variants:[{begin:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?"},{begin:"^progress(:?)(\\s+)?(pop|push)?"},{begin:"^tags:"},{begin:"^time:"}]}]}},zr=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},a={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[a],{keywords:t,contains:[i,e.C_LINE_COMMENT_MODE,n,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},a,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin:/</,end:/>/},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",a,i,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}},Kr=function(e){return{contains:[{className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\(/,end:/\)/,contains:["self",{begin:/\\./}]}],relevance:10},{className:"keyword",begin:/\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,end:/\(/,excludeEnd:!0},{className:"variable",begin:/%[_a-zA-Z0-9:]*/,end:"%"},{className:"symbol",begin:/\\./}]}},jr=function(e){var t="[a-zA-Z_][\\w\\-]*",n={className:"attr",variants:[{begin:"^[ \\-]*"+t+":"},{begin:'^[ \\-]*"'+t+'":'},{begin:"^[ \\-]*'"+t+"':"}]},r={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]};return{case_insensitive:!0,aliases:["yml","YAML","yaml"],contains:[n,{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>] *$",returnEnd:!0,contains:r.contains,end:n.variants[0].begin},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!!"+e.UNDERSCORE_IDENT_RE},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"^ *-",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},e.C_NUMBER_MODE,r]}},Vr=function(e){return{case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"meta",variants:[{begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:"(s+)?---$",end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number",begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}]}]}},$r=function(e){return{aliases:["tk"],keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while",contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title",begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]",endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)",end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},{className:"number",variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]}},Wr=function(e){var t={className:"tag",begin:/\\/,relevance:0,contains:[{className:"name",variants:[{begin:/[a-zA-Zа-яА-я]+[*]?/},{begin:/[^a-zA-Zа-яА-я0-9]/}],starts:{endsWithParent:!0,relevance:0,contains:[{className:"string",variants:[{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/}]},{begin:/\s*=\s*/,endsWithParent:!0,relevance:0,contains:[{className:"number",begin:/-?\d*\.?\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/}]}]}}]};return{contains:[t,{className:"formula",contains:[t],relevance:0,variants:[{begin:/\$\$/,end:/\$\$/},{begin:/\$/,end:/\$/}]},e.COMMENT("%","$",{relevance:0})]}},Yr=function(e){return{keywords:{keyword:"namespace const typedef struct enum service exception void oneway set list map required optional",built_in:"bool byte i16 i32 i64 double string binary",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"struct enum service exception",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{begin:"\\b(set|list|map)\\s*<",end:">",keywords:"bool byte i16 i32 i64 double string binary",contains:["self"]}]}},Qr=function(e){var t={className:"number",begin:"[1-9][0-9]*",relevance:0},n={className:"symbol",begin:":[^\\]]+"};return{keywords:{keyword:"ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN SUBSTR FINDSTR VOFFSET PROG ATTR MN POS",literal:"ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET"},contains:[{className:"built_in",begin:"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER| TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[",end:"\\]",contains:["self",t,n]},{className:"built_in",begin:"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[",end:"\\]",contains:["self",t,e.QUOTE_STRING_MODE,n]},{className:"keyword",begin:"/(PROG|ATTR|MN|POS|END)\\b"},{className:"keyword",begin:"(CALL|RUN|POINT_LOGIC|LBL)\\b"},{className:"keyword",begin:"\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)"},{className:"number",begin:"\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b",relevance:0},e.COMMENT("//","[;$]"),e.COMMENT("!","[;$]"),e.COMMENT("--eg:","$"),e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"'"},e.C_NUMBER_MODE,{className:"variable",begin:"\\$[A-Za-z0-9_]+"}]}},Xr=function(e){var t="attribute block constant cycle date dump include max min parent random range source template_from_string",n={beginKeywords:t,keywords:{name:t},relevance:0,contains:[{className:"params",begin:"\\(",end:"\\)"}]},r={begin:/\|[A-Za-z_]+:?/,keywords:"abs batch capitalize convert_encoding date date_modify default escape first format join json_encode keys last length lower merge nl2br number_format raw replace reverse round slice sort split striptags title trim upper url_encode",contains:[n]},a="autoescape block do embed extends filter flush for if import include macro sandbox set spaceless use verbatim";return a=a+" "+a.split(" ").map(function(e){return"end"+e}).join(" "),{aliases:["craftcms"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:a,starts:{endsWithParent:!0,contains:[r,n],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:["self",r,n]}]}},Zr=function(e){var t={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"};return{aliases:["ts"],keywords:t,contains:[{className:"meta",begin:/^\s*['"]use strict['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+e.IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.IDENT_RE},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}]}],relevance:0},{className:"function",begin:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/["'\(]/}],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0,contains:["self",{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/["'\(]/}]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+e.IDENT_RE,relevance:0},{className:"meta",begin:"@[A-Za-z]+"}]}},Jr=function(e){return{keywords:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"},contains:[{className:"class",beginKeywords:"class interface namespace",end:"{",excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"^#",end:"$",relevance:2}]}},ea=function(e){return{aliases:["vb"],case_insensitive:!0,keywords:{keyword:"addhandler addressof alias and andalso aggregate ansi as assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor",built_in:"boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort",literal:"true false nothing"},illegal:"//|{|}|endif|gosub|variant|wend",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT("'","$",{returnBegin:!0,contains:[{className:"doctag",begin:"'''|\x3c!--|--\x3e",contains:[e.PHRASAL_WORDS_MODE]},{className:"doctag",begin:"</?",end:">",contains:[e.PHRASAL_WORDS_MODE]}]}),e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end region externalsource"}}]}},ta=function(e){return{aliases:["vbs"],case_insensitive:!0,keywords:{keyword:"call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto",built_in:"lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err",literal:"true false null nothing empty"},illegal:"//",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT(/'/,/$/,{relevance:0}),e.C_NUMBER_MODE]}},na=function(e){return{subLanguage:"xml",contains:[{begin:"<%",end:"%>",subLanguage:"vbscript"}]}},ra=function(e){return{aliases:["v","sv","svh"],case_insensitive:!1,keywords:{keyword:"accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import incdir include initial inout input inside instance int integer interconnect interface intersect join join_any join_none large let liblist library local localparam logic longint macromodule matches medium modport module nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor",literal:"null",built_in:"$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale $bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat $realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson $assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff $assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk $fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control $coverage_get $coverage_save $set_coverage_db_name $rose $stable $past $rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display $coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename $unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow $floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning $dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh $tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson $dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array $async$nand$array $async$or$array $async$nor$array $sync$and$array $sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf $async$and$plane $async$nand$plane $async$or$plane $async$nor$plane $sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system $display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo $write $readmemb $readmemh $writememh $value$plusargs $dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit $writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb $dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall $dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo $fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh $swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb $fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat $sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror"},lexemes:/[\w\$]+/,contains:[e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"number",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"\\b((\\d+'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\B(('(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\b([0-9_])+",relevance:0}]},{className:"variable",variants:[{begin:"#\\((?!parameter).+\\)"},{begin:"\\.\\w+",relevance:0}]},{className:"meta",begin:"`",end:"$",keywords:{"meta-keyword":"define __FILE__ __LINE__ begin_keywords celldefine default_nettype define else elsif end_keywords endcelldefine endif ifdef ifndef include line nounconnected_drive pragma resetall timescale unconnected_drive undef undefineall"},relevance:0}]}},aa=function(e){return{case_insensitive:!0,keywords:{keyword:"abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable vmode vprop vunit wait when while with xnor xor",built_in:"boolean bit character integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_logic std_logic_vector unsigned signed boolean_vector integer_vector std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signedreal_vector time_vector",literal:"false true note warning error failure line text side width"},illegal:"{",contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT("--","$"),e.QUOTE_STRING_MODE,{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'",contains:[e.BACKSLASH_ESCAPE]},{className:"symbol",begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[e.BACKSLASH_ESCAPE]}]}},ia=function(e){return{lexemes:/[!#@\w]+/,keywords:{keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank",built_in:"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp"},illegal:/;/,contains:[e.NUMBER_MODE,e.APOS_STRING_MODE,{className:"string",begin:/"(\\"|\n\\|[^"\n])*"/},e.COMMENT('"',"$"),{className:"variable",begin:/[bwtglsav]:[\w\d_]*/},{className:"function",beginKeywords:"function function!",end:"$",relevance:0,contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{className:"symbol",begin:/<[\w-]+>/}]}},oa=function(e){return{case_insensitive:!0,lexemes:"[.%]?"+e.IDENT_RE,keywords:{keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}},la=function(e){var t={keyword:"if then else do while until for loop import with is as where when by data constant integer real text name boolean symbol infix prefix postfix block tree",literal:"true false nil",built_in:"in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin acos atan exp expm1 log log2 log10 log1p pi at text_length text_range text_find text_replace contains page slide basic_slide title_slide title subtitle fade_in fade_out fade_at clear_color color line_color line_width texture_wrap texture_transform texture scale_?x scale_?y scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y rotate_?z? rectangle circle ellipse sphere path line_to move_to quad_to curve_to theme background contents locally time mouse_?x mouse_?y mouse_buttons ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts"},n={className:"string",begin:'"',end:'"',illegal:"\\n"},r={beginKeywords:"import",end:"$",keywords:t,contains:[n]},a={className:"function",begin:/[a-z][^\n]*->/,returnBegin:!0,end:/->/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,keywords:t}})]};return{aliases:["tao"],lexemes:/[a-zA-Z][a-zA-Z0-9_?]*/,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:"<<",end:">>"},a,r,{className:"number",begin:"[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?"},e.NUMBER_MODE]}},sa=function(e){var t={begin:"{",end:"}"},n=[{begin:/\$[a-zA-Z0-9\-]+/},{className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{className:"comment",begin:"\\(:",end:":\\)",relevance:10,contains:[{className:"doctag",begin:"@\\w+"}]},{className:"meta",begin:"%\\w+"},t];return t.contains=n,{aliases:["xpath","xq"],case_insensitive:!1,lexemes:/[a-zA-Z\$][a-zA-Z0-9_:\-]*/,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{keyword:"for let if while then else return where group by xquery encoding versionmodule namespace boundary-space preserve strip default collation base-uri orderingcopy-namespaces order declare import schema namespace function option in allowing emptyat tumbling window sliding window start when only end when previous next stable ascendingdescending empty greatest least some every satisfies switch case typeswitch try catch andor to union intersect instance of treat as castable cast map array delete insert intoreplace value rename copy modify update",literal:"false true xs:string xs:integer element item xs:date xs:datetime xs:float xs:double xs:decimal QName xs:anyURI xs:long xs:int xs:short xs:byte attribute"},contains:n}},ca=function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["zep"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var let while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally int uint long ulong char uchar double float bool boolean stringlikely unlikely",contains:[e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:"<<<['\"]?\\w+['\"]?$",end:"^\\w+;",contains:[e.BACKSLASH_ESCAPE]},{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_BLOCK_COMMENT_MODE,t,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},t,n]}},ua=f(function(e){var t=e.exports=Me;t.registerLanguage("1c",Ye),t.registerLanguage("abnf",Qe),t.registerLanguage("accesslog",Xe),t.registerLanguage("actionscript",Ze),t.registerLanguage("ada",Je),t.registerLanguage("apache",et),t.registerLanguage("applescript",tt),t.registerLanguage("cpp",nt),t.registerLanguage("arduino",rt),t.registerLanguage("armasm",at),t.registerLanguage("xml",it),t.registerLanguage("asciidoc",ot),t.registerLanguage("aspectj",lt),t.registerLanguage("autohotkey",st),t.registerLanguage("autoit",ct),t.registerLanguage("avrasm",ut),t.registerLanguage("awk",dt),t.registerLanguage("axapta",pt),t.registerLanguage("bash",mt),t.registerLanguage("basic",gt),t.registerLanguage("bnf",ht),t.registerLanguage("brainfuck",ft),t.registerLanguage("cal",_t),t.registerLanguage("capnproto",Et),t.registerLanguage("ceylon",Tt),t.registerLanguage("clean",bt),t.registerLanguage("clojure",vt),t.registerLanguage("clojure-repl",At),t.registerLanguage("cmake",St),t.registerLanguage("coffeescript",yt),t.registerLanguage("coq",Nt),t.registerLanguage("cos",Ct),t.registerLanguage("crmsh",Ot),t.registerLanguage("crystal",Mt),t.registerLanguage("cs",xt),t.registerLanguage("csp",wt),t.registerLanguage("css",Rt),t.registerLanguage("d",Dt),t.registerLanguage("markdown",It),t.registerLanguage("dart",kt),t.registerLanguage("delphi",Lt),t.registerLanguage("diff",Pt),t.registerLanguage("django",Bt),t.registerLanguage("dns",Ft),t.registerLanguage("dockerfile",Ut),t.registerLanguage("dos",Ht),t.registerLanguage("dsconfig",Gt),t.registerLanguage("dts",qt),t.registerLanguage("dust",zt),t.registerLanguage("ebnf",Kt),t.registerLanguage("elixir",jt),t.registerLanguage("elm",Vt),t.registerLanguage("ruby",$t),t.registerLanguage("erb",Wt),t.registerLanguage("erlang-repl",Yt),t.registerLanguage("erlang",Qt),t.registerLanguage("excel",Xt),t.registerLanguage("fix",Zt),t.registerLanguage("flix",Jt),t.registerLanguage("fortran",en),t.registerLanguage("fsharp",tn),t.registerLanguage("gams",nn),t.registerLanguage("gauss",rn),t.registerLanguage("gcode",an),t.registerLanguage("gherkin",on),t.registerLanguage("glsl",ln),t.registerLanguage("go",sn),t.registerLanguage("golo",cn),t.registerLanguage("gradle",un),t.registerLanguage("groovy",dn),t.registerLanguage("haml",pn),t.registerLanguage("handlebars",mn),t.registerLanguage("haskell",gn),t.registerLanguage("haxe",hn),t.registerLanguage("hsp",fn),t.registerLanguage("htmlbars",_n),t.registerLanguage("http",En),t.registerLanguage("hy",Tn),t.registerLanguage("inform7",bn),t.registerLanguage("ini",vn),t.registerLanguage("irpf90",An),t.registerLanguage("java",Sn),t.registerLanguage("javascript",yn),t.registerLanguage("jboss-cli",Nn),t.registerLanguage("json",Cn),t.registerLanguage("julia",On),t.registerLanguage("julia-repl",Mn),t.registerLanguage("kotlin",xn),t.registerLanguage("lasso",wn),t.registerLanguage("ldif",Rn),t.registerLanguage("leaf",Dn),t.registerLanguage("less",In),t.registerLanguage("lisp",kn),t.registerLanguage("livecodeserver",Ln),t.registerLanguage("livescript",Pn),t.registerLanguage("llvm",Bn),t.registerLanguage("lsl",Fn),t.registerLanguage("lua",Un),t.registerLanguage("makefile",Hn),t.registerLanguage("mathematica",Gn),t.registerLanguage("matlab",qn),t.registerLanguage("maxima",zn),t.registerLanguage("mel",Kn),t.registerLanguage("mercury",jn),t.registerLanguage("mipsasm",Vn),t.registerLanguage("mizar",$n),t.registerLanguage("perl",Wn),t.registerLanguage("mojolicious",Yn),t.registerLanguage("monkey",Qn),t.registerLanguage("moonscript",Xn),t.registerLanguage("n1ql",Zn),t.registerLanguage("nginx",Jn),t.registerLanguage("nimrod",er),t.registerLanguage("nix",tr),t.registerLanguage("nsis",nr),t.registerLanguage("objectivec",rr),t.registerLanguage("ocaml",ar),t.registerLanguage("openscad",ir),t.registerLanguage("oxygene",or),t.registerLanguage("parser3",lr),t.registerLanguage("pf",sr),t.registerLanguage("php",cr),t.registerLanguage("pony",ur),t.registerLanguage("powershell",dr),t.registerLanguage("processing",pr),t.registerLanguage("profile",mr),t.registerLanguage("prolog",gr),t.registerLanguage("protobuf",hr),t.registerLanguage("puppet",fr),t.registerLanguage("purebasic",_r),t.registerLanguage("python",Er),t.registerLanguage("q",Tr),t.registerLanguage("qml",br),t.registerLanguage("r",vr),t.registerLanguage("rib",Ar),t.registerLanguage("roboconf",Sr),t.registerLanguage("routeros",yr),t.registerLanguage("rsl",Nr),t.registerLanguage("ruleslanguage",Cr),t.registerLanguage("rust",Or),t.registerLanguage("scala",Mr),t.registerLanguage("scheme",xr),t.registerLanguage("scilab",wr),t.registerLanguage("scss",Rr),t.registerLanguage("shell",Dr),t.registerLanguage("smali",Ir),t.registerLanguage("smalltalk",kr),t.registerLanguage("sml",Lr),t.registerLanguage("sqf",Pr),t.registerLanguage("sql",Br),t.registerLanguage("stan",Fr),t.registerLanguage("stata",Ur),t.registerLanguage("step21",Hr),t.registerLanguage("stylus",Gr),t.registerLanguage("subunit",qr),t.registerLanguage("swift",zr),t.registerLanguage("taggerscript",Kr),t.registerLanguage("yaml",jr),t.registerLanguage("tap",Vr),t.registerLanguage("tcl",$r),t.registerLanguage("tex",Wr),t.registerLanguage("thrift",Yr),t.registerLanguage("tp",Qr),t.registerLanguage("twig",Xr),t.registerLanguage("typescript",Zr),t.registerLanguage("vala",Jr),t.registerLanguage("vbnet",ea),t.registerLanguage("vbscript",ta),t.registerLanguage("vbscript-html",na),t.registerLanguage("verilog",ra),t.registerLanguage("vhdl",aa),t.registerLanguage("vim",ia),t.registerLanguage("x86asm",oa),t.registerLanguage("xl",la),t.registerLanguage("xquery",sa),t.registerLanguage("zephir",ca)}),da=f(function(e,t){t.__esModule=!0,t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.include,a=e.exclude;function i(e){var r=e.lang;if(!(!r||t&&!~t.indexOf(r)||a&&~a.indexOf(r))){var i=e.data;i||(e.data=i={});try{i.hChildren=n.default.highlight(r,e.value).value}catch(t){i.hChildren=n.default.highlightAuto(e.value).value}i.hProperties=i.hProperties||{},i.hProperties.className=["hljs"].concat(i.hProperties.className||[],["language-"+r])}}return function(e){return(0,r.default)(e,"code",i)}};var n=a(ua),r=a(u);function a(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default});h(da);var pa=function(){return function(e,t,n){return function(e){u(e,"blockquote",(e,t,n)=>{const r=e.children[0];if("paragraph"===r.type&&"text"===r.children[0].type){const a=r.children[0];if(a.value.startsWith("!secret")){e.type="div",a.value=a.value.substr(7);let r="";a.value.indexOf("\n")>=0?(r=a.value.substr(0,a.value.indexOf("\n")),a.value=a.value.substr(a.value.indexOf("\n"))):(r=a.value,a.value="");const i={type:"special-box-secret",children:[e,{type:"summary",data:{hName:"summary",hChildren:[{type:"text",value:r||"Spoiler"}]}}],data:{hName:"details",hProperties:{className:"special-box secret"}}};return n.children.splice(t,1,i),e}if(a.value.startsWith("!information")||a.value.startsWith("!good")||a.value.startsWith("!bad")||a.value.startsWith("!comment")||a.value.startsWith("!attention")||a.value.startsWith("!question")){e.type="div",e.data={hName:"div",hProperties:{className:"special-box-content"}};let r="";a.value.indexOf("\n")>0?(r=a.value.substr(1,a.value.indexOf("\n")),a.value=a.value.substr(a.value.indexOf("\n"))):(r=a.value.substr(1),a.value="");const i={type:"special-box-div",children:[e],data:{hName:"div",hProperties:{className:`special-box ${r}`}}};return n.children.splice(t,1,i),e}}return e})}(e),"function"==typeof n?n(null,e,t):e}};var ma=function(){return function(e,t,n){return function(e){let t=0;u(e,"list",e=>{let n=!0,r=0;const a=[];return Array.from(e.children).forEach(e=>{e.children&&"paragraph"===e.children[0].type&&e.children[0].children&&e.children[0].children[0].value?"~!=".indexOf(e.children[0].children[0].value[0])<0&&(n=!1):n=!1}),n&&(Array.from(e.children).forEach(e=>{"paragraph"===e.children[0].type&&("~"===e.children[0].children[0].value[0]?a.push(.5):"!"===e.children[0].children[0].value[0]?a.push(0):a.push(1),e.children[0].children[0].value=`${e.children[0].children[0].value.slice(1)}\r`)}),e.type="mc",e.data={hName:"fieldset",hProperties:{className:"mc check",id:`mc_${t}`}},e.children=[{type:"list-item-mc",data:{hName:"ul"},children:e.children.map(e=>({type:"input-list-item",data:{hName:"li"},children:[{type:"input-list-input",data:{hName:"input",hProperties:{checked:e.checked,type:"checkbox",id:`mc_${t}_${r}`,className:"!~="[2*a[r]]}}},{type:"input-list-label",data:{hName:"label",hProperties:{for:`mc_${t}_${r++}`}},children:function(e){let t=[];return"paragraph"===e[0].type&&(t=e[0].children),t[0].value=t[0].value.trim(),"blockquote"===e[e.length-1].type&&(e[e.length-1].type="div",e[e.length-1].data={hName:"blockquote",hProperties:{className:"hiden_block_quote"}}),t=t.concat(e.slice(1))}(e.children)}]}))},{type:"field-button",data:{hName:"input",hProperties:{onclick:`check('mc_${t}',[${String(a)}])`,value:"Validate",type:"button"}}}],t++),e})}(e),"function"==typeof n?n(null,e,t):e}},ga={prop:{key:void 0,class:void 0,id:void 0},eaten:""};var ha=function(e,t){var n,r,a="",i=!1,o=!1,l={key:void 0,class:void 0,id:void 0},s="";void 0===t&&(t=0);var c=function(){return t>=e.length||"\n\r{}".indexOf(e[t])>-1?(i&&"}"!==e[t]&&(o=!0),!0):"}"===e[t]&&i},u="",d=function(n){for(u="";t<e.length&&"\n\r{}".indexOf(e.charAt(t))<0&&n.indexOf(e.charAt(t))>=0;)a+=e.charAt(t),u+=e.charAt(t),t++;return c()},p=function(r){for(u="";t<e.length&&"\n\r{}".indexOf(e.charAt(t))<0&&r.indexOf(e.charAt(t))<0;)a+=e.charAt(t),u+=e.charAt(t),t++;return s?n=u:s=u,c()},m=function(r){if(u="",e[t]!==r){for(;t<e.length&&(r!==e[t]||"\\"===e[t-1])&&"\n"!==e[t]&&"\r"!==e[t];)a+=e.charAt(t),u+=e.charAt(t),t++;return"\n"===e[t]||"\r"===e[t]||t>=e.length?(o=!0,!0):(s?n=u.replace(/\\"/g,'"'):s=u.replace(/\\"/g,'"'),c())}},g=function(e){return a+=e,t++,c()},h=function(){switch(r){case"id":l.id=l.id||s;break;case"class":l.class||(l.class=[]),l.class.indexOf(s)<0&&l.class.push(s);break;case"key":if(!s)return ga;"id"!==s&&"class"!==s&&(l[s]=n)}r=void 0,s="",n=void 0};for(d(" \t\v"),"{"===e[t]&&(g("{"),i=!0);!c()&&!d(" \t\v");){if("."===e.charAt(t)){if(r="class",g(".")){o=!0;break}}else if("#"===e.charAt(t)){if(r="id",g("#")){o=!0;break}}else r="key";if(p("=\t\b\v  ")||!s)break;if("="===e.charAt(t)&&"key"===r){if(g("="))break;if('"'===e.charAt(t)){if(g('"'))break;if(m('"'))break;if('"'!==e.charAt(t))return ga;if(g('"'))break}else if("'"===e.charAt(t)){if(g("'"))break;if(m("'"))break;if("'"!==e.charAt(t))return ga;if(g("'"))break}else if(p(" \t\n\r\v=}"))break}h()}if(h(),i){if(!(t<e.length&&"}"===e[t]))return ga;i=!1,g("}")}return o?ga:{prop:l,eaten:a}};const fa="[__",_a="__]";function Ea(e,t){return e.indexOf(fa,t)}var Ta=function(){function e(e,t,n){if(!this.options.gfm||!t.startsWith(fa))return;let r="",a=1;const i=t.length,o=e.now();for(o.column+=2,o.offset+=2;!t.startsWith(_a,a)&&++a<i;)if(r+=t.charAt(a),"\n"===t.charAt(a))return!0;let l="",s={key:void 0,class:void 0,id:void 0};if("{"===t.charAt(a+_a.length)){const e=ha(t,a+_a.length);l=e.eaten,s=e.prop}return!!n||("password"!==s.type&&(s.type="text"),s.placeholder=r.replace(/^_*/g,"").replace(/_*$/g,"")||void 0,!(a<i)||e(fa+r.slice(1)+_a.slice(1)+l)({type:"line-input",children:[],data:{hName:"input",hProperties:s}}))}e.locator=Ea;const t=this.Parser,n=t.prototype.inlineTokenizers,r=t.prototype.inlineMethods;n.input=e,r.splice(r.indexOf("url"),0,"input");const a=this.Compiler;a&&(a.prototype.visitors.lineinput=function(e){return`[__${this.all(e).join("")}__]`})};const ba="[",va=/(\| *[vV] *])({[^\n]*})?/;function Aa(e,t){return e.indexOf(ba,t)}var Sa=function(){let e="|v]";function t(t,n){if(!this.options.gfm||!n.startsWith(ba))return;let r="",a=1;const i=n.length,o=t.now();o.column+=2,o.offset+=2;let l=null;if(!((l=n.substr(1).match(va))&&a<i))return;r+=n.substr(1,l.index),e=l[1],a+=l.index+e.length;let s="",c={class:void 0,id:void 0};if("{"===n.charAt(a)){const e=ha(n,a);a+=(s=e.eaten).length,c=e.prop}return!(a<=i)||t(ba+r+e+s)({type:"select",children:[],data:{hName:"select",hProperties:c,hChildren:r.split("|").filter(e=>e).map(e=>{const t=e.trim();return{type:"element",tagName:"option",properties:{value:t},children:[{type:"text",value:t}]}})}})}t.locator=Aa;const n=this.Parser,r=n.prototype.inlineTokenizers,a=n.prototype.inlineMethods;r.select=t,a.splice(a.indexOf("url"),0,"select");const i=this.Compiler;i&&(i.prototype.visitors.lineselect=function(t){return ba+this.all(t).join("")+e})};const ya=/^(\[_+\n)/g,Na=/(_+])/g;function Ca(e,t){return e.indexOf(ya,t)}var Oa=function(){function e(e,t){if(!this.options.gfm||0!==t.search(ya))return;let n={class:void 0,id:void 0},r="";if(t.search(Na)>0){if(t.search(Na)+t.match(Na)[0].length<t.length&&"{"===t.charAt(t.search(Na)+t.match(Na)[0].length)){const e=ha(t,t.search(Na)+t.match(Na)[0].length);r=e.eaten,n=e.prop}let a=t.search(Na);return a!==t.match(ya)[0].length&&(a-=1),e(t.slice(0,t.search(Na)+t.match(Na)[0].length)+r)({type:"textarea",data:{hName:"TEXTAREA",hProperties:n,hChildren:[{type:"text",value:t.slice(t.match(ya)[0].length,a)}]}})}return!0}e.locator=Ca;const t=this.Parser,n=t.prototype.blockTokenizers,r=t.prototype.blockMethods;n.textinput=e,r.splice(r.indexOf("fencedCode")+1,0,"textinput");const a=this.Compiler;a&&(a.prototype.visitors.textinput=function(e){return`[__${this.all(e).join("")}__]`})},Ma={REPLACEMENT_CHARACTER:"�",CODE_POINTS:{EOF:-1,NULL:0,TABULATION:9,CARRIAGE_RETURN:13,LINE_FEED:10,FORM_FEED:12,SPACE:32,EXCLAMATION_MARK:33,QUOTATION_MARK:34,NUMBER_SIGN:35,AMPERSAND:38,APOSTROPHE:39,HYPHEN_MINUS:45,SOLIDUS:47,DIGIT_0:48,DIGIT_9:57,SEMICOLON:59,LESS_THAN_SIGN:60,EQUALS_SIGN:61,GREATER_THAN_SIGN:62,QUESTION_MARK:63,LATIN_CAPITAL_A:65,LATIN_CAPITAL_F:70,LATIN_CAPITAL_X:88,LATIN_CAPITAL_Z:90,GRAVE_ACCENT:96,LATIN_SMALL_A:97,LATIN_SMALL_F:102,LATIN_SMALL_X:120,LATIN_SMALL_Z:122,REPLACEMENT_CHARACTER:65533},CODE_POINT_SEQUENCES:{DASH_DASH_STRING:[45,45],DOCTYPE_STRING:[68,79,67,84,89,80,69],CDATA_START_STRING:[91,67,68,65,84,65,91],CDATA_END_STRING:[93,93,62],SCRIPT_STRING:[115,99,114,105,112,116],PUBLIC_STRING:[80,85,66,76,73,67],SYSTEM_STRING:[83,89,83,84,69,77]}},xa=f(function(e){var t=Ma.CODE_POINTS;var n=e.exports=function(){this.html=null,this.pos=-1,this.lastGapPos=-1,this.lastCharPos=-1,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=65536};n.prototype.dropParsedChunk=function(){this.pos>this.bufferWaterline&&(this.lastCharPos-=this.pos,this.html=this.html.substring(this.pos),this.pos=0,this.lastGapPos=-1,this.gapStack=[])},n.prototype._addGap=function(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos},n.prototype._processHighRangeCodePoint=function(e){if(this.pos!==this.lastCharPos){var n=this.html.charCodeAt(this.pos+1);a=n,(r=e)>=55296&&r<=56319&&a>=56320&&a<=57343&&(this.pos++,e=function(e,t){return 1024*(e-55296)+9216+t}(e,n),this._addGap())}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,t.EOF;var r,a;return e},n.prototype.write=function(e,t){this.html?this.html+=e:this.html=e,this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1,this.lastChunkWritten=t},n.prototype.insertHtmlAtCurrentPos=function(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1,this.html.length),this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1},n.prototype.advance=function(){if(this.pos++,this.pos>this.lastCharPos)return this.lastChunkWritten||(this.endOfChunkHit=!0),t.EOF;var e=this.html.charCodeAt(this.pos);return this.skipNextNewLine&&e===t.LINE_FEED?(this.skipNextNewLine=!1,this._addGap(),this.advance()):e===t.CARRIAGE_RETURN?(this.skipNextNewLine=!0,t.LINE_FEED):(this.skipNextNewLine=!1,e>=55296?this._processHighRangeCodePoint(e):e)},n.prototype.retreat=function(){this.pos===this.lastGapPos&&(this.lastGapPos=this.gapStack.pop(),this.pos--),this.pos--}}),wa=new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4e3,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,1e4,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13e3,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]),Ra=f(function(e){var t=Ma.CODE_POINTS,n=Ma.CODE_POINT_SEQUENCES,r={0:65533,13:13,128:8364,129:129,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,141:141,142:381,143:143,144:144,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,157:157,158:382,159:376},a="DATA_STATE";function i(e){return e===t.SPACE||e===t.LINE_FEED||e===t.TABULATION||e===t.FORM_FEED}function o(e){return e>=t.DIGIT_0&&e<=t.DIGIT_9}function l(e){return e>=t.LATIN_CAPITAL_A&&e<=t.LATIN_CAPITAL_Z}function s(e){return e>=t.LATIN_SMALL_A&&e<=t.LATIN_SMALL_Z}function c(e){return s(e)||l(e)}function u(e,n){return o(e)||n&&(e>=t.LATIN_CAPITAL_A&&e<=t.LATIN_CAPITAL_F||e>=t.LATIN_SMALL_A&&e<=t.LATIN_SMALL_F)}function d(e){return e+32}function p(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(e>>>10&1023|55296)+String.fromCharCode(56320|1023&e))}function m(e){return String.fromCharCode(d(e))}function g(e,t){for(var n=wa[++e],r=++e,a=r+n-1;r<=a;){var i=r+a>>>1,o=wa[i];if(o<t)r=i+1;else{if(!(o>t))return wa[i+n];a=i-1}}return-1}var h=e.exports=function(){this.preprocessor=new xa,this.tokenQueue=[],this.allowCDATA=!1,this.state=a,this.returnState="",this.tempBuff=[],this.additionalAllowedCp=void 0,this.lastStartTagName="",this.consumedAfterSnapshot=-1,this.active=!1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr=null};h.CHARACTER_TOKEN="CHARACTER_TOKEN",h.NULL_CHARACTER_TOKEN="NULL_CHARACTER_TOKEN",h.WHITESPACE_CHARACTER_TOKEN="WHITESPACE_CHARACTER_TOKEN",h.START_TAG_TOKEN="START_TAG_TOKEN",h.END_TAG_TOKEN="END_TAG_TOKEN",h.COMMENT_TOKEN="COMMENT_TOKEN",h.DOCTYPE_TOKEN="DOCTYPE_TOKEN",h.EOF_TOKEN="EOF_TOKEN",h.HIBERNATION_TOKEN="HIBERNATION_TOKEN",h.MODE={DATA:a,RCDATA:"RCDATA_STATE",RAWTEXT:"RAWTEXT_STATE",SCRIPT_DATA:"SCRIPT_DATA_STATE",PLAINTEXT:"PLAINTEXT_STATE"},h.getTokenAttr=function(e,t){for(var n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null},h.prototype.getNextToken=function(){for(;!this.tokenQueue.length&&this.active;){this._hibernationSnapshot();var e=this._consume();this._ensureHibernation()||this[this.state](e)}return this.tokenQueue.shift()},h.prototype.write=function(e,t){this.active=!0,this.preprocessor.write(e,t)},h.prototype.insertHtmlAtCurrentPos=function(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e)},h.prototype._hibernationSnapshot=function(){this.consumedAfterSnapshot=0},h.prototype._ensureHibernation=function(){if(this.preprocessor.endOfChunkHit){for(;this.consumedAfterSnapshot>0;this.consumedAfterSnapshot--)this.preprocessor.retreat();return this.active=!1,this.tokenQueue.push({type:h.HIBERNATION_TOKEN}),!0}return!1},h.prototype._consume=function(){return this.consumedAfterSnapshot++,this.preprocessor.advance()},h.prototype._unconsume=function(){this.consumedAfterSnapshot--,this.preprocessor.retreat()},h.prototype._unconsumeSeveral=function(e){for(;e--;)this._unconsume()},h.prototype._reconsumeInState=function(e){this.state=e,this._unconsume()},h.prototype._consumeSubsequentIfMatch=function(e,n,r){for(var a=0,i=!0,o=e.length,l=0,s=n,c=void 0;l<o;l++){if(l>0&&(s=this._consume(),a++),s===t.EOF){i=!1;break}if(s!==(c=e[l])&&(r||s!==d(c))){i=!1;break}}return i||this._unconsumeSeveral(a),i},h.prototype._lookahead=function(){var e=this._consume();return this._unconsume(),e},h.prototype.isTempBufferEqualToScriptString=function(){if(this.tempBuff.length!==n.SCRIPT_STRING.length)return!1;for(var e=0;e<this.tempBuff.length;e++)if(this.tempBuff[e]!==n.SCRIPT_STRING[e])return!1;return!0},h.prototype._createStartTagToken=function(){this.currentToken={type:h.START_TAG_TOKEN,tagName:"",selfClosing:!1,attrs:[]}},h.prototype._createEndTagToken=function(){this.currentToken={type:h.END_TAG_TOKEN,tagName:"",attrs:[]}},h.prototype._createCommentToken=function(){this.currentToken={type:h.COMMENT_TOKEN,data:""}},h.prototype._createDoctypeToken=function(e){this.currentToken={type:h.DOCTYPE_TOKEN,name:e,forceQuirks:!1,publicId:null,systemId:null}},h.prototype._createCharacterToken=function(e,t){this.currentCharacterToken={type:e,chars:t}},h.prototype._createAttr=function(e){this.currentAttr={name:e,value:""}},h.prototype._isDuplicateAttr=function(){return null!==h.getTokenAttr(this.currentToken,this.currentAttr.name)},h.prototype._leaveAttrName=function(e){this.state=e,this._isDuplicateAttr()||this.currentToken.attrs.push(this.currentAttr)},h.prototype._leaveAttrValue=function(e){this.state=e},h.prototype._isAppropriateEndTagToken=function(){return this.lastStartTagName===this.currentToken.tagName},h.prototype._emitCurrentToken=function(){this._emitCurrentCharacterToken(),this.currentToken.type===h.START_TAG_TOKEN&&(this.lastStartTagName=this.currentToken.tagName),this.tokenQueue.push(this.currentToken),this.currentToken=null},h.prototype._emitCurrentCharacterToken=function(){this.currentCharacterToken&&(this.tokenQueue.push(this.currentCharacterToken),this.currentCharacterToken=null)},h.prototype._emitEOFToken=function(){this._emitCurrentCharacterToken(),this.tokenQueue.push({type:h.EOF_TOKEN})},h.prototype._appendCharToCurrentCharacterToken=function(e,t){this.currentCharacterToken&&this.currentCharacterToken.type!==e&&this._emitCurrentCharacterToken(),this.currentCharacterToken?this.currentCharacterToken.chars+=t:this._createCharacterToken(e,t)},h.prototype._emitCodePoint=function(e){var n=h.CHARACTER_TOKEN;i(e)?n=h.WHITESPACE_CHARACTER_TOKEN:e===t.NULL&&(n=h.NULL_CHARACTER_TOKEN),this._appendCharToCurrentCharacterToken(n,p(e))},h.prototype._emitSeveralCodePoints=function(e){for(var t=0;t<e.length;t++)this._emitCodePoint(e[t])},h.prototype._emitChar=function(e){this._appendCharToCurrentCharacterToken(h.CHARACTER_TOKEN,e)},h.prototype._consumeNumericEntity=function(e){var n="",a=void 0;do{n+=p(this._consume()),a=this._lookahead()}while(a!==t.EOF&&u(a,e));this._lookahead()===t.SEMICOLON&&this._consume();var i,o=parseInt(n,e?16:10),l=r[o];return l||((i=o)>=55296&&i<=57343||i>1114111?t.REPLACEMENT_CHARACTER:o)},h.prototype._consumeNamedEntity=function(e){for(var n=null,r=0,a=null,i=0,l=!1,s=0;s>-1;){var u=wa[s],d=u<7;if(d&&1&u&&(n=2&u?[wa[++s],wa[++s]]:[wa[++s]],r=i,a===t.SEMICOLON)){l=!0;break}if(i++,(a=this._consume())===t.EOF)break;s=d?4&u?g(s,a):-1:a===u?++s:-1}if(n){if(!l&&(this._unconsumeSeveral(i-r),e)){var p=this._lookahead();if(p===t.EQUALS_SIGN||function(e){return c(e)||o(e)}(p))return this._unconsumeSeveral(r),null}return n}return this._unconsumeSeveral(i),null},h.prototype._consumeCharacterReference=function(e,n){if(i(e)||e===t.GREATER_THAN_SIGN||e===t.AMPERSAND||e===this.additionalAllowedCp||e===t.EOF)return this._unconsume(),null;if(e===t.NUMBER_SIGN){var r=!1,a=this._lookahead();return a!==t.LATIN_SMALL_X&&a!==t.LATIN_CAPITAL_X||(this._consume(),r=!0),(a=this._lookahead())!==t.EOF&&u(a,r)?[this._consumeNumericEntity(r)]:(this._unconsumeSeveral(r?2:1),null)}return this._unconsume(),this._consumeNamedEntity(n)};var f=h.prototype;f.DATA_STATE=function(e){this.preprocessor.dropParsedChunk(),e===t.AMPERSAND?this.state="CHARACTER_REFERENCE_IN_DATA_STATE":e===t.LESS_THAN_SIGN?this.state="TAG_OPEN_STATE":e===t.NULL?this._emitCodePoint(e):e===t.EOF?this._emitEOFToken():this._emitCodePoint(e)},f.CHARACTER_REFERENCE_IN_DATA_STATE=function(e){this.additionalAllowedCp=void 0;var t=this._consumeCharacterReference(e,!1);this._ensureHibernation()||(t?this._emitSeveralCodePoints(t):this._emitChar("&"),this.state=a)},f.RCDATA_STATE=function(e){this.preprocessor.dropParsedChunk(),e===t.AMPERSAND?this.state="CHARACTER_REFERENCE_IN_RCDATA_STATE":e===t.LESS_THAN_SIGN?this.state="RCDATA_LESS_THAN_SIGN_STATE":e===t.NULL?this._emitChar(Ma.REPLACEMENT_CHARACTER):e===t.EOF?this._emitEOFToken():this._emitCodePoint(e)},f.CHARACTER_REFERENCE_IN_RCDATA_STATE=function(e){this.additionalAllowedCp=void 0;var t=this._consumeCharacterReference(e,!1);this._ensureHibernation()||(t?this._emitSeveralCodePoints(t):this._emitChar("&"),this.state="RCDATA_STATE")},f.RAWTEXT_STATE=function(e){this.preprocessor.dropParsedChunk(),e===t.LESS_THAN_SIGN?this.state="RAWTEXT_LESS_THAN_SIGN_STATE":e===t.NULL?this._emitChar(Ma.REPLACEMENT_CHARACTER):e===t.EOF?this._emitEOFToken():this._emitCodePoint(e)},f.SCRIPT_DATA_STATE=function(e){this.preprocessor.dropParsedChunk(),e===t.LESS_THAN_SIGN?this.state="SCRIPT_DATA_LESS_THAN_SIGN_STATE":e===t.NULL?this._emitChar(Ma.REPLACEMENT_CHARACTER):e===t.EOF?this._emitEOFToken():this._emitCodePoint(e)},f.PLAINTEXT_STATE=function(e){this.preprocessor.dropParsedChunk(),e===t.NULL?this._emitChar(Ma.REPLACEMENT_CHARACTER):e===t.EOF?this._emitEOFToken():this._emitCodePoint(e)},f.TAG_OPEN_STATE=function(e){e===t.EXCLAMATION_MARK?this.state="MARKUP_DECLARATION_OPEN_STATE":e===t.SOLIDUS?this.state="END_TAG_OPEN_STATE":c(e)?(this._createStartTagToken(),this._reconsumeInState("TAG_NAME_STATE")):e===t.QUESTION_MARK?this._reconsumeInState("BOGUS_COMMENT_STATE"):(this._emitChar("<"),this._reconsumeInState(a))},f.END_TAG_OPEN_STATE=function(e){c(e)?(this._createEndTagToken(),this._reconsumeInState("TAG_NAME_STATE")):e===t.GREATER_THAN_SIGN?this.state=a:e===t.EOF?(this._reconsumeInState(a),this._emitChar("<"),this._emitChar("/")):this._reconsumeInState("BOGUS_COMMENT_STATE")},f.TAG_NAME_STATE=function(e){i(e)?this.state="BEFORE_ATTRIBUTE_NAME_STATE":e===t.SOLIDUS?this.state="SELF_CLOSING_START_TAG_STATE":e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):l(e)?this.currentToken.tagName+=m(e):e===t.NULL?this.currentToken.tagName+=Ma.REPLACEMENT_CHARACTER:e===t.EOF?this._reconsumeInState(a):this.currentToken.tagName+=p(e)},f.RCDATA_LESS_THAN_SIGN_STATE=function(e){e===t.SOLIDUS?(this.tempBuff=[],this.state="RCDATA_END_TAG_OPEN_STATE"):(this._emitChar("<"),this._reconsumeInState("RCDATA_STATE"))},f.RCDATA_END_TAG_OPEN_STATE=function(e){c(e)?(this._createEndTagToken(),this._reconsumeInState("RCDATA_END_TAG_NAME_STATE")):(this._emitChar("<"),this._emitChar("/"),this._reconsumeInState("RCDATA_STATE"))},f.RCDATA_END_TAG_NAME_STATE=function(e){if(l(e))this.currentToken.tagName+=m(e),this.tempBuff.push(e);else if(s(e))this.currentToken.tagName+=p(e),this.tempBuff.push(e);else{if(this._isAppropriateEndTagToken()){if(i(e))return void(this.state="BEFORE_ATTRIBUTE_NAME_STATE");if(e===t.SOLIDUS)return void(this.state="SELF_CLOSING_START_TAG_STATE");if(e===t.GREATER_THAN_SIGN)return this.state=a,void this._emitCurrentToken()}this._emitChar("<"),this._emitChar("/"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState("RCDATA_STATE")}},f.RAWTEXT_LESS_THAN_SIGN_STATE=function(e){e===t.SOLIDUS?(this.tempBuff=[],this.state="RAWTEXT_END_TAG_OPEN_STATE"):(this._emitChar("<"),this._reconsumeInState("RAWTEXT_STATE"))},f.RAWTEXT_END_TAG_OPEN_STATE=function(e){c(e)?(this._createEndTagToken(),this._reconsumeInState("RAWTEXT_END_TAG_NAME_STATE")):(this._emitChar("<"),this._emitChar("/"),this._reconsumeInState("RAWTEXT_STATE"))},f.RAWTEXT_END_TAG_NAME_STATE=function(e){if(l(e))this.currentToken.tagName+=m(e),this.tempBuff.push(e);else if(s(e))this.currentToken.tagName+=p(e),this.tempBuff.push(e);else{if(this._isAppropriateEndTagToken()){if(i(e))return void(this.state="BEFORE_ATTRIBUTE_NAME_STATE");if(e===t.SOLIDUS)return void(this.state="SELF_CLOSING_START_TAG_STATE");if(e===t.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=a)}this._emitChar("<"),this._emitChar("/"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState("RAWTEXT_STATE")}},f.SCRIPT_DATA_LESS_THAN_SIGN_STATE=function(e){e===t.SOLIDUS?(this.tempBuff=[],this.state="SCRIPT_DATA_END_TAG_OPEN_STATE"):e===t.EXCLAMATION_MARK?(this.state="SCRIPT_DATA_ESCAPE_START_STATE",this._emitChar("<"),this._emitChar("!")):(this._emitChar("<"),this._reconsumeInState("SCRIPT_DATA_STATE"))},f.SCRIPT_DATA_END_TAG_OPEN_STATE=function(e){c(e)?(this._createEndTagToken(),this._reconsumeInState("SCRIPT_DATA_END_TAG_NAME_STATE")):(this._emitChar("<"),this._emitChar("/"),this._reconsumeInState("SCRIPT_DATA_STATE"))},f.SCRIPT_DATA_END_TAG_NAME_STATE=function(e){if(l(e))this.currentToken.tagName+=m(e),this.tempBuff.push(e);else if(s(e))this.currentToken.tagName+=p(e),this.tempBuff.push(e);else{if(this._isAppropriateEndTagToken()){if(i(e))return void(this.state="BEFORE_ATTRIBUTE_NAME_STATE");if(e===t.SOLIDUS)return void(this.state="SELF_CLOSING_START_TAG_STATE");if(e===t.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=a)}this._emitChar("<"),this._emitChar("/"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState("SCRIPT_DATA_STATE")}},f.SCRIPT_DATA_ESCAPE_START_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_ESCAPE_START_DASH_STATE",this._emitChar("-")):this._reconsumeInState("SCRIPT_DATA_STATE")},f.SCRIPT_DATA_ESCAPE_START_DASH_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",this._emitChar("-")):this._reconsumeInState("SCRIPT_DATA_STATE")},f.SCRIPT_DATA_ESCAPED_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_ESCAPED_DASH_STATE",this._emitChar("-")):e===t.LESS_THAN_SIGN?this.state="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE":e===t.NULL?this._emitChar(Ma.REPLACEMENT_CHARACTER):e===t.EOF?this._reconsumeInState(a):this._emitCodePoint(e)},f.SCRIPT_DATA_ESCAPED_DASH_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",this._emitChar("-")):e===t.LESS_THAN_SIGN?this.state="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE":e===t.NULL?(this.state="SCRIPT_DATA_ESCAPED_STATE",this._emitChar(Ma.REPLACEMENT_CHARACTER)):e===t.EOF?this._reconsumeInState(a):(this.state="SCRIPT_DATA_ESCAPED_STATE",this._emitCodePoint(e))},f.SCRIPT_DATA_ESCAPED_DASH_DASH_STATE=function(e){e===t.HYPHEN_MINUS?this._emitChar("-"):e===t.LESS_THAN_SIGN?this.state="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE":e===t.GREATER_THAN_SIGN?(this.state="SCRIPT_DATA_STATE",this._emitChar(">")):e===t.NULL?(this.state="SCRIPT_DATA_ESCAPED_STATE",this._emitChar(Ma.REPLACEMENT_CHARACTER)):e===t.EOF?this._reconsumeInState(a):(this.state="SCRIPT_DATA_ESCAPED_STATE",this._emitCodePoint(e))},f.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE=function(e){e===t.SOLIDUS?(this.tempBuff=[],this.state="SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE"):c(e)?(this.tempBuff=[],this._emitChar("<"),this._reconsumeInState("SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE")):(this._emitChar("<"),this._reconsumeInState("SCRIPT_DATA_ESCAPED_STATE"))},f.SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE=function(e){c(e)?(this._createEndTagToken(),this._reconsumeInState("SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE")):(this._emitChar("<"),this._emitChar("/"),this._reconsumeInState("SCRIPT_DATA_ESCAPED_STATE"))},f.SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE=function(e){if(l(e))this.currentToken.tagName+=m(e),this.tempBuff.push(e);else if(s(e))this.currentToken.tagName+=p(e),this.tempBuff.push(e);else{if(this._isAppropriateEndTagToken()){if(i(e))return void(this.state="BEFORE_ATTRIBUTE_NAME_STATE");if(e===t.SOLIDUS)return void(this.state="SELF_CLOSING_START_TAG_STATE");if(e===t.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=a)}this._emitChar("<"),this._emitChar("/"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState("SCRIPT_DATA_ESCAPED_STATE")}},f.SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE=function(e){i(e)||e===t.SOLIDUS||e===t.GREATER_THAN_SIGN?(this.state=this.isTempBufferEqualToScriptString()?"SCRIPT_DATA_DOUBLE_ESCAPED_STATE":"SCRIPT_DATA_ESCAPED_STATE",this._emitCodePoint(e)):l(e)?(this.tempBuff.push(d(e)),this._emitCodePoint(e)):s(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState("SCRIPT_DATA_ESCAPED_STATE")},f.SCRIPT_DATA_DOUBLE_ESCAPED_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE",this._emitChar("-")):e===t.LESS_THAN_SIGN?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",this._emitChar("<")):e===t.NULL?this._emitChar(Ma.REPLACEMENT_CHARACTER):e===t.EOF?this._reconsumeInState(a):this._emitCodePoint(e)},f.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE",this._emitChar("-")):e===t.LESS_THAN_SIGN?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",this._emitChar("<")):e===t.NULL?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",this._emitChar(Ma.REPLACEMENT_CHARACTER)):e===t.EOF?this._reconsumeInState(a):(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",this._emitCodePoint(e))},f.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE=function(e){e===t.HYPHEN_MINUS?this._emitChar("-"):e===t.LESS_THAN_SIGN?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",this._emitChar("<")):e===t.GREATER_THAN_SIGN?(this.state="SCRIPT_DATA_STATE",this._emitChar(">")):e===t.NULL?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",this._emitChar(Ma.REPLACEMENT_CHARACTER)):e===t.EOF?this._reconsumeInState(a):(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",this._emitCodePoint(e))},f.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE=function(e){e===t.SOLIDUS?(this.tempBuff=[],this.state="SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE",this._emitChar("/")):this._reconsumeInState("SCRIPT_DATA_DOUBLE_ESCAPED_STATE")},f.SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE=function(e){i(e)||e===t.SOLIDUS||e===t.GREATER_THAN_SIGN?(this.state=this.isTempBufferEqualToScriptString()?"SCRIPT_DATA_ESCAPED_STATE":"SCRIPT_DATA_DOUBLE_ESCAPED_STATE",this._emitCodePoint(e)):l(e)?(this.tempBuff.push(d(e)),this._emitCodePoint(e)):s(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState("SCRIPT_DATA_DOUBLE_ESCAPED_STATE")},f.BEFORE_ATTRIBUTE_NAME_STATE=function(e){i(e)||(e===t.SOLIDUS||e===t.GREATER_THAN_SIGN||e===t.EOF?this._reconsumeInState("AFTER_ATTRIBUTE_NAME_STATE"):e===t.EQUALS_SIGN?(this._createAttr("="),this.state="ATTRIBUTE_NAME_STATE"):(this._createAttr(""),this._reconsumeInState("ATTRIBUTE_NAME_STATE")))},f.ATTRIBUTE_NAME_STATE=function(e){i(e)||e===t.SOLIDUS||e===t.GREATER_THAN_SIGN||e===t.EOF?(this._leaveAttrName("AFTER_ATTRIBUTE_NAME_STATE"),this._unconsume()):e===t.EQUALS_SIGN?this._leaveAttrName("BEFORE_ATTRIBUTE_VALUE_STATE"):l(e)?this.currentAttr.name+=m(e):e===t.QUOTATION_MARK||e===t.APOSTROPHE||e===t.LESS_THAN_SIGN?this.currentAttr.name+=p(e):e===t.NULL?this.currentAttr.name+=Ma.REPLACEMENT_CHARACTER:this.currentAttr.name+=p(e)},f.AFTER_ATTRIBUTE_NAME_STATE=function(e){i(e)||(e===t.SOLIDUS?this.state="SELF_CLOSING_START_TAG_STATE":e===t.EQUALS_SIGN?this.state="BEFORE_ATTRIBUTE_VALUE_STATE":e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):e===t.EOF?this._reconsumeInState(a):(this._createAttr(""),this._reconsumeInState("ATTRIBUTE_NAME_STATE")))},f.BEFORE_ATTRIBUTE_VALUE_STATE=function(e){i(e)||(e===t.QUOTATION_MARK?this.state="ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE":e===t.APOSTROPHE?this.state="ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE":this._reconsumeInState("ATTRIBUTE_VALUE_UNQUOTED_STATE"))},f.ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE=function(e){e===t.QUOTATION_MARK?this.state="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE":e===t.AMPERSAND?(this.additionalAllowedCp=t.QUOTATION_MARK,this.returnState=this.state,this.state="CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE"):e===t.NULL?this.currentAttr.value+=Ma.REPLACEMENT_CHARACTER:e===t.EOF?this._reconsumeInState(a):this.currentAttr.value+=p(e)},f.ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE=function(e){e===t.APOSTROPHE?this.state="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE":e===t.AMPERSAND?(this.additionalAllowedCp=t.APOSTROPHE,this.returnState=this.state,this.state="CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE"):e===t.NULL?this.currentAttr.value+=Ma.REPLACEMENT_CHARACTER:e===t.EOF?this._reconsumeInState(a):this.currentAttr.value+=p(e)},f.ATTRIBUTE_VALUE_UNQUOTED_STATE=function(e){i(e)?this._leaveAttrValue("BEFORE_ATTRIBUTE_NAME_STATE"):e===t.AMPERSAND?(this.additionalAllowedCp=t.GREATER_THAN_SIGN,this.returnState=this.state,this.state="CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE"):e===t.GREATER_THAN_SIGN?(this._leaveAttrValue(a),this._emitCurrentToken()):e===t.NULL?this.currentAttr.value+=Ma.REPLACEMENT_CHARACTER:e===t.QUOTATION_MARK||e===t.APOSTROPHE||e===t.LESS_THAN_SIGN||e===t.EQUALS_SIGN||e===t.GRAVE_ACCENT?this.currentAttr.value+=p(e):e===t.EOF?this._reconsumeInState(a):this.currentAttr.value+=p(e)},f.CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE=function(e){var t=this._consumeCharacterReference(e,!0);if(!this._ensureHibernation()){if(t)for(var n=0;n<t.length;n++)this.currentAttr.value+=p(t[n]);else this.currentAttr.value+="&";this.state=this.returnState}},f.AFTER_ATTRIBUTE_VALUE_QUOTED_STATE=function(e){i(e)?this._leaveAttrValue("BEFORE_ATTRIBUTE_NAME_STATE"):e===t.SOLIDUS?this._leaveAttrValue("SELF_CLOSING_START_TAG_STATE"):e===t.GREATER_THAN_SIGN?(this._leaveAttrValue(a),this._emitCurrentToken()):e===t.EOF?this._reconsumeInState(a):this._reconsumeInState("BEFORE_ATTRIBUTE_NAME_STATE")},f.SELF_CLOSING_START_TAG_STATE=function(e){e===t.GREATER_THAN_SIGN?(this.currentToken.selfClosing=!0,this.state=a,this._emitCurrentToken()):e===t.EOF?this._reconsumeInState(a):this._reconsumeInState("BEFORE_ATTRIBUTE_NAME_STATE")},f.BOGUS_COMMENT_STATE=function(){this._createCommentToken(),this._reconsumeInState("BOGUS_COMMENT_STATE_CONTINUATION")},f.BOGUS_COMMENT_STATE_CONTINUATION=function(e){for(;;){if(e===t.GREATER_THAN_SIGN){this.state=a;break}if(e===t.EOF){this._reconsumeInState(a);break}if(this.currentToken.data+=e===t.NULL?Ma.REPLACEMENT_CHARACTER:p(e),this._hibernationSnapshot(),e=this._consume(),this._ensureHibernation())return}this._emitCurrentToken()},f.MARKUP_DECLARATION_OPEN_STATE=function(e){var t=this._consumeSubsequentIfMatch(n.DASH_DASH_STRING,e,!0),r=!t&&this._consumeSubsequentIfMatch(n.DOCTYPE_STRING,e,!1),a=!t&&!r&&this.allowCDATA&&this._consumeSubsequentIfMatch(n.CDATA_START_STRING,e,!0);this._ensureHibernation()||(t?(this._createCommentToken(),this.state="COMMENT_START_STATE"):r?this.state="DOCTYPE_STATE":a?this.state="CDATA_SECTION_STATE":this._reconsumeInState("BOGUS_COMMENT_STATE"))},f.COMMENT_START_STATE=function(e){e===t.HYPHEN_MINUS?this.state="COMMENT_START_DASH_STATE":e===t.NULL?(this.currentToken.data+=Ma.REPLACEMENT_CHARACTER,this.state="COMMENT_STATE"):e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):e===t.EOF?(this._emitCurrentToken(),this._reconsumeInState(a)):(this.currentToken.data+=p(e),this.state="COMMENT_STATE")},f.COMMENT_START_DASH_STATE=function(e){e===t.HYPHEN_MINUS?this.state="COMMENT_END_STATE":e===t.NULL?(this.currentToken.data+="-",this.currentToken.data+=Ma.REPLACEMENT_CHARACTER,this.state="COMMENT_STATE"):e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):e===t.EOF?(this._emitCurrentToken(),this._reconsumeInState(a)):(this.currentToken.data+="-",this.currentToken.data+=p(e),this.state="COMMENT_STATE")},f.COMMENT_STATE=function(e){e===t.HYPHEN_MINUS?this.state="COMMENT_END_DASH_STATE":e===t.NULL?this.currentToken.data+=Ma.REPLACEMENT_CHARACTER:e===t.EOF?(this._emitCurrentToken(),this._reconsumeInState(a)):this.currentToken.data+=p(e)},f.COMMENT_END_DASH_STATE=function(e){e===t.HYPHEN_MINUS?this.state="COMMENT_END_STATE":e===t.NULL?(this.currentToken.data+="-",this.currentToken.data+=Ma.REPLACEMENT_CHARACTER,this.state="COMMENT_STATE"):e===t.EOF?(this._emitCurrentToken(),this._reconsumeInState(a)):(this.currentToken.data+="-",this.currentToken.data+=p(e),this.state="COMMENT_STATE")},f.COMMENT_END_STATE=function(e){e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):e===t.EXCLAMATION_MARK?this.state="COMMENT_END_BANG_STATE":e===t.HYPHEN_MINUS?this.currentToken.data+="-":e===t.NULL?(this.currentToken.data+="--",this.currentToken.data+=Ma.REPLACEMENT_CHARACTER,this.state="COMMENT_STATE"):e===t.EOF?(this._reconsumeInState(a),this._emitCurrentToken()):(this.currentToken.data+="--",this.currentToken.data+=p(e),this.state="COMMENT_STATE")},f.COMMENT_END_BANG_STATE=function(e){e===t.HYPHEN_MINUS?(this.currentToken.data+="--!",this.state="COMMENT_END_DASH_STATE"):e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):e===t.NULL?(this.currentToken.data+="--!",this.currentToken.data+=Ma.REPLACEMENT_CHARACTER,this.state="COMMENT_STATE"):e===t.EOF?(this._emitCurrentToken(),this._reconsumeInState(a)):(this.currentToken.data+="--!",this.currentToken.data+=p(e),this.state="COMMENT_STATE")},f.DOCTYPE_STATE=function(e){i(e)||(e===t.GREATER_THAN_SIGN?(this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=a):e===t.EOF?(this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):(this._createDoctypeToken(""),this._reconsumeInState("DOCTYPE_NAME_STATE")))},f.DOCTYPE_NAME_STATE=function(e){i(e)||e===t.GREATER_THAN_SIGN||e===t.EOF?this._reconsumeInState("AFTER_DOCTYPE_NAME_STATE"):l(e)?this.currentToken.name+=m(e):e===t.NULL?this.currentToken.name+=Ma.REPLACEMENT_CHARACTER:this.currentToken.name+=p(e)},f.AFTER_DOCTYPE_NAME_STATE=function(e){if(!i(e))if(e===t.GREATER_THAN_SIGN)this.state=a,this._emitCurrentToken();else{var r=this._consumeSubsequentIfMatch(n.PUBLIC_STRING,e,!1),o=!r&&this._consumeSubsequentIfMatch(n.SYSTEM_STRING,e,!1);this._ensureHibernation()||(r?this.state="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE":o?this.state="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE":(this.currentToken.forceQuirks=!0,this.state="BOGUS_DOCTYPE_STATE"))}},f.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE=function(e){i(e)||(e===t.QUOTATION_MARK?(this.currentToken.publicId="",this.state="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE"):e===t.APOSTROPHE?(this.currentToken.publicId="",this.state="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE"):(this.currentToken.forceQuirks=!0,this._reconsumeInState("BOGUS_DOCTYPE_STATE")))},f.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE=function(e){e===t.QUOTATION_MARK?this.state="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE":e===t.NULL?this.currentToken.publicId+=Ma.REPLACEMENT_CHARACTER:e===t.GREATER_THAN_SIGN?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=a):e===t.EOF?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):this.currentToken.publicId+=p(e)},f.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE=function(e){e===t.APOSTROPHE?this.state="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE":e===t.NULL?this.currentToken.publicId+=Ma.REPLACEMENT_CHARACTER:e===t.GREATER_THAN_SIGN?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=a):e===t.EOF?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):this.currentToken.publicId+=p(e)},f.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE=function(e){i(e)||(e===t.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=a):e===t.QUOTATION_MARK?(this.currentToken.systemId="",this.state="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE"):e===t.APOSTROPHE?(this.currentToken.systemId="",this.state="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE"):(this.currentToken.forceQuirks=!0,this._reconsumeInState("BOGUS_DOCTYPE_STATE")))},f.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE=function(e){i(e)||(e===t.QUOTATION_MARK?(this.currentToken.systemId="",this.state="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE"):e===t.APOSTROPHE?(this.currentToken.systemId="",this.state="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE"):(this.currentToken.forceQuirks=!0,this._reconsumeInState("BOGUS_DOCTYPE_STATE")))},f.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE=function(e){e===t.QUOTATION_MARK?this.state="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE":e===t.GREATER_THAN_SIGN?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=a):e===t.NULL?this.currentToken.systemId+=Ma.REPLACEMENT_CHARACTER:e===t.EOF?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):this.currentToken.systemId+=p(e)},f.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE=function(e){e===t.APOSTROPHE?this.state="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE":e===t.GREATER_THAN_SIGN?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=a):e===t.NULL?this.currentToken.systemId+=Ma.REPLACEMENT_CHARACTER:e===t.EOF?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):this.currentToken.systemId+=p(e)},f.AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE=function(e){i(e)||(e===t.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=a):e===t.EOF?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):this.state="BOGUS_DOCTYPE_STATE")},f.BOGUS_DOCTYPE_STATE=function(e){e===t.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=a):e===t.EOF&&(this._emitCurrentToken(),this._reconsumeInState(a))},f.CDATA_SECTION_STATE=function(e){for(;;){if(e===t.EOF){this._reconsumeInState(a);break}var r=this._consumeSubsequentIfMatch(n.CDATA_END_STRING,e,!0);if(this._ensureHibernation())break;if(r){this.state=a;break}if(this._emitCodePoint(e),this._hibernationSnapshot(),e=this._consume(),this._ensureHibernation())break}}}),Da=f(function(e,t){var n=t.NAMESPACES={HTML:"http://www.w3.org/1999/xhtml",MATHML:"http://www.w3.org/1998/Math/MathML",SVG:"http://www.w3.org/2000/svg",XLINK:"http://www.w3.org/1999/xlink",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"};t.ATTRS={TYPE:"type",ACTION:"action",ENCODING:"encoding",PROMPT:"prompt",NAME:"name",COLOR:"color",FACE:"face",SIZE:"size"},t.DOCUMENT_MODE={NO_QUIRKS:"no-quirks",QUIRKS:"quirks",LIMITED_QUIRKS:"limited-quirks"};var r=t.TAG_NAMES={A:"a",ADDRESS:"address",ANNOTATION_XML:"annotation-xml",APPLET:"applet",AREA:"area",ARTICLE:"article",ASIDE:"aside",B:"b",BASE:"base",BASEFONT:"basefont",BGSOUND:"bgsound",BIG:"big",BLOCKQUOTE:"blockquote",BODY:"body",BR:"br",BUTTON:"button",CAPTION:"caption",CENTER:"center",CODE:"code",COL:"col",COLGROUP:"colgroup",DD:"dd",DESC:"desc",DETAILS:"details",DIALOG:"dialog",DIR:"dir",DIV:"div",DL:"dl",DT:"dt",EM:"em",EMBED:"embed",FIELDSET:"fieldset",FIGCAPTION:"figcaption",FIGURE:"figure",FONT:"font",FOOTER:"footer",FOREIGN_OBJECT:"foreignObject",FORM:"form",FRAME:"frame",FRAMESET:"frameset",H1:"h1",H2:"h2",H3:"h3",H4:"h4",H5:"h5",H6:"h6",HEAD:"head",HEADER:"header",HGROUP:"hgroup",HR:"hr",HTML:"html",I:"i",IMG:"img",IMAGE:"image",INPUT:"input",IFRAME:"iframe",KEYGEN:"keygen",LABEL:"label",LI:"li",LINK:"link",LISTING:"listing",MAIN:"main",MALIGNMARK:"malignmark",MARQUEE:"marquee",MATH:"math",MENU:"menu",MENUITEM:"menuitem",META:"meta",MGLYPH:"mglyph",MI:"mi",MO:"mo",MN:"mn",MS:"ms",MTEXT:"mtext",NAV:"nav",NOBR:"nobr",NOFRAMES:"noframes",NOEMBED:"noembed",NOSCRIPT:"noscript",OBJECT:"object",OL:"ol",OPTGROUP:"optgroup",OPTION:"option",P:"p",PARAM:"param",PLAINTEXT:"plaintext",PRE:"pre",RB:"rb",RP:"rp",RT:"rt",RTC:"rtc",RUBY:"ruby",S:"s",SCRIPT:"script",SECTION:"section",SELECT:"select",SOURCE:"source",SMALL:"small",SPAN:"span",STRIKE:"strike",STRONG:"strong",STYLE:"style",SUB:"sub",SUMMARY:"summary",SUP:"sup",TABLE:"table",TBODY:"tbody",TEMPLATE:"template",TEXTAREA:"textarea",TFOOT:"tfoot",TD:"td",TH:"th",THEAD:"thead",TITLE:"title",TR:"tr",TRACK:"track",TT:"tt",U:"u",UL:"ul",SVG:"svg",VAR:"var",WBR:"wbr",XMP:"xmp"},a=t.SPECIAL_ELEMENTS=Object.create(null);a[n.HTML]=Object.create(null),a[n.HTML][r.ADDRESS]=!0,a[n.HTML][r.APPLET]=!0,a[n.HTML][r.AREA]=!0,a[n.HTML][r.ARTICLE]=!0,a[n.HTML][r.ASIDE]=!0,a[n.HTML][r.BASE]=!0,a[n.HTML][r.BASEFONT]=!0,a[n.HTML][r.BGSOUND]=!0,a[n.HTML][r.BLOCKQUOTE]=!0,a[n.HTML][r.BODY]=!0,a[n.HTML][r.BR]=!0,a[n.HTML][r.BUTTON]=!0,a[n.HTML][r.CAPTION]=!0,a[n.HTML][r.CENTER]=!0,a[n.HTML][r.COL]=!0,a[n.HTML][r.COLGROUP]=!0,a[n.HTML][r.DD]=!0,a[n.HTML][r.DETAILS]=!0,a[n.HTML][r.DIR]=!0,a[n.HTML][r.DIV]=!0,a[n.HTML][r.DL]=!0,a[n.HTML][r.DT]=!0,a[n.HTML][r.EMBED]=!0,a[n.HTML][r.FIELDSET]=!0,a[n.HTML][r.FIGCAPTION]=!0,a[n.HTML][r.FIGURE]=!0,a[n.HTML][r.FOOTER]=!0,a[n.HTML][r.FORM]=!0,a[n.HTML][r.FRAME]=!0,a[n.HTML][r.FRAMESET]=!0,a[n.HTML][r.H1]=!0,a[n.HTML][r.H2]=!0,a[n.HTML][r.H3]=!0,a[n.HTML][r.H4]=!0,a[n.HTML][r.H5]=!0,a[n.HTML][r.H6]=!0,a[n.HTML][r.HEAD]=!0,a[n.HTML][r.HEADER]=!0,a[n.HTML][r.HGROUP]=!0,a[n.HTML][r.HR]=!0,a[n.HTML][r.HTML]=!0,a[n.HTML][r.IFRAME]=!0,a[n.HTML][r.IMG]=!0,a[n.HTML][r.INPUT]=!0,a[n.HTML][r.LI]=!0,a[n.HTML][r.LINK]=!0,a[n.HTML][r.LISTING]=!0,a[n.HTML][r.MAIN]=!0,a[n.HTML][r.MARQUEE]=!0,a[n.HTML][r.MENU]=!0,a[n.HTML][r.META]=!0,a[n.HTML][r.NAV]=!0,a[n.HTML][r.NOEMBED]=!0,a[n.HTML][r.NOFRAMES]=!0,a[n.HTML][r.NOSCRIPT]=!0,a[n.HTML][r.OBJECT]=!0,a[n.HTML][r.OL]=!0,a[n.HTML][r.P]=!0,a[n.HTML][r.PARAM]=!0,a[n.HTML][r.PLAINTEXT]=!0,a[n.HTML][r.PRE]=!0,a[n.HTML][r.SCRIPT]=!0,a[n.HTML][r.SECTION]=!0,a[n.HTML][r.SELECT]=!0,a[n.HTML][r.SOURCE]=!0,a[n.HTML][r.STYLE]=!0,a[n.HTML][r.SUMMARY]=!0,a[n.HTML][r.TABLE]=!0,a[n.HTML][r.TBODY]=!0,a[n.HTML][r.TD]=!0,a[n.HTML][r.TEMPLATE]=!0,a[n.HTML][r.TEXTAREA]=!0,a[n.HTML][r.TFOOT]=!0,a[n.HTML][r.TH]=!0,a[n.HTML][r.THEAD]=!0,a[n.HTML][r.TITLE]=!0,a[n.HTML][r.TR]=!0,a[n.HTML][r.TRACK]=!0,a[n.HTML][r.UL]=!0,a[n.HTML][r.WBR]=!0,a[n.HTML][r.XMP]=!0,a[n.MATHML]=Object.create(null),a[n.MATHML][r.MI]=!0,a[n.MATHML][r.MO]=!0,a[n.MATHML][r.MN]=!0,a[n.MATHML][r.MS]=!0,a[n.MATHML][r.MTEXT]=!0,a[n.MATHML][r.ANNOTATION_XML]=!0,a[n.SVG]=Object.create(null),a[n.SVG][r.TITLE]=!0,a[n.SVG][r.FOREIGN_OBJECT]=!0,a[n.SVG][r.DESC]=!0}),Ia=(Da.NAMESPACES,Da.ATTRS,Da.DOCUMENT_MODE,Da.TAG_NAMES,Da.SPECIAL_ELEMENTS,f(function(e){var t=Da.TAG_NAMES,n=Da.NAMESPACES;function r(e){switch(e.length){case 1:return e===t.P;case 2:return e===t.RB||e===t.RP||e===t.RT||e===t.DD||e===t.DT||e===t.LI;case 3:return e===t.RTC;case 6:return e===t.OPTION;case 8:return e===t.OPTGROUP||e===t.MENUITEM}return!1}function a(e,r){switch(e.length){case 2:if(e===t.TD||e===t.TH)return r===n.HTML;if(e===t.MI||e===t.MO||e===t.MN||e===t.MS)return r===n.MATHML;break;case 4:if(e===t.HTML)return r===n.HTML;if(e===t.DESC)return r===n.SVG;break;case 5:if(e===t.TABLE)return r===n.HTML;if(e===t.MTEXT)return r===n.MATHML;if(e===t.TITLE)return r===n.SVG;break;case 6:return(e===t.APPLET||e===t.OBJECT)&&r===n.HTML;case 7:return(e===t.CAPTION||e===t.MARQUEE)&&r===n.HTML;case 8:return e===t.TEMPLATE&&r===n.HTML;case 13:return e===t.FOREIGN_OBJECT&&r===n.SVG;case 14:return e===t.ANNOTATION_XML&&r===n.MATHML}return!1}var i=e.exports=function(e,t){this.stackTop=-1,this.items=[],this.current=e,this.currentTagName=null,this.currentTmplContent=null,this.tmplCount=0,this.treeAdapter=t};i.prototype._indexOf=function(e){for(var t=-1,n=this.stackTop;n>=0;n--)if(this.items[n]===e){t=n;break}return t},i.prototype._isInTemplate=function(){return this.currentTagName===t.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===n.HTML},i.prototype._updateCurrentElement=function(){this.current=this.items[this.stackTop],this.currentTagName=this.current&&this.treeAdapter.getTagName(this.current),this.currentTmplContent=this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):null},i.prototype.push=function(e){this.items[++this.stackTop]=e,this._updateCurrentElement(),this._isInTemplate()&&this.tmplCount++},i.prototype.pop=function(){this.stackTop--,this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this._updateCurrentElement()},i.prototype.replace=function(e,t){var n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&this._updateCurrentElement()},i.prototype.insertAfter=function(e,t){var n=this._indexOf(e)+1;this.items.splice(n,0,t),n===++this.stackTop&&this._updateCurrentElement()},i.prototype.popUntilTagNamePopped=function(e){for(;this.stackTop>-1;){var t=this.currentTagName,r=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),t===e&&r===n.HTML)break}},i.prototype.popUntilElementPopped=function(e){for(;this.stackTop>-1;){var t=this.current;if(this.pop(),t===e)break}},i.prototype.popUntilNumberedHeaderPopped=function(){for(;this.stackTop>-1;){var e=this.currentTagName,r=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===t.H1||e===t.H2||e===t.H3||e===t.H4||e===t.H5||e===t.H6&&r===n.HTML)break}},i.prototype.popUntilTableCellPopped=function(){for(;this.stackTop>-1;){var e=this.currentTagName,r=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===t.TD||e===t.TH&&r===n.HTML)break}},i.prototype.popAllUpToHtmlElement=function(){this.stackTop=0,this._updateCurrentElement()},i.prototype.clearBackToTableContext=function(){for(;this.currentTagName!==t.TABLE&&this.currentTagName!==t.TEMPLATE&&this.currentTagName!==t.HTML||this.treeAdapter.getNamespaceURI(this.current)!==n.HTML;)this.pop()},i.prototype.clearBackToTableBodyContext=function(){for(;this.currentTagName!==t.TBODY&&this.currentTagName!==t.TFOOT&&this.currentTagName!==t.THEAD&&this.currentTagName!==t.TEMPLATE&&this.currentTagName!==t.HTML||this.treeAdapter.getNamespaceURI(this.current)!==n.HTML;)this.pop()},i.prototype.clearBackToTableRowContext=function(){for(;this.currentTagName!==t.TR&&this.currentTagName!==t.TEMPLATE&&this.currentTagName!==t.HTML||this.treeAdapter.getNamespaceURI(this.current)!==n.HTML;)this.pop()},i.prototype.remove=function(e){for(var t=this.stackTop;t>=0;t--)if(this.items[t]===e){this.items.splice(t,1),this.stackTop--,this._updateCurrentElement();break}},i.prototype.tryPeekProperlyNestedBodyElement=function(){var e=this.items[1];return e&&this.treeAdapter.getTagName(e)===t.BODY?e:null},i.prototype.contains=function(e){return this._indexOf(e)>-1},i.prototype.getCommonAncestor=function(e){var t=this._indexOf(e);return--t>=0?this.items[t]:null},i.prototype.isRootHtmlElementCurrent=function(){return 0===this.stackTop&&this.currentTagName===t.HTML},i.prototype.hasInScope=function(e){for(var t=this.stackTop;t>=0;t--){var r=this.treeAdapter.getTagName(this.items[t]),i=this.treeAdapter.getNamespaceURI(this.items[t]);if(r===e&&i===n.HTML)return!0;if(a(r,i))return!1}return!0},i.prototype.hasNumberedHeaderInScope=function(){for(var e=this.stackTop;e>=0;e--){var r=this.treeAdapter.getTagName(this.items[e]),i=this.treeAdapter.getNamespaceURI(this.items[e]);if((r===t.H1||r===t.H2||r===t.H3||r===t.H4||r===t.H5||r===t.H6)&&i===n.HTML)return!0;if(a(r,i))return!1}return!0},i.prototype.hasInListItemScope=function(e){for(var r=this.stackTop;r>=0;r--){var i=this.treeAdapter.getTagName(this.items[r]),o=this.treeAdapter.getNamespaceURI(this.items[r]);if(i===e&&o===n.HTML)return!0;if((i===t.UL||i===t.OL)&&o===n.HTML||a(i,o))return!1}return!0},i.prototype.hasInButtonScope=function(e){for(var r=this.stackTop;r>=0;r--){var i=this.treeAdapter.getTagName(this.items[r]),o=this.treeAdapter.getNamespaceURI(this.items[r]);if(i===e&&o===n.HTML)return!0;if(i===t.BUTTON&&o===n.HTML||a(i,o))return!1}return!0},i.prototype.hasInTableScope=function(e){for(var r=this.stackTop;r>=0;r--){var a=this.treeAdapter.getTagName(this.items[r]);if(this.treeAdapter.getNamespaceURI(this.items[r])===n.HTML){if(a===e)return!0;if(a===t.TABLE||a===t.TEMPLATE||a===t.HTML)return!1}}return!0},i.prototype.hasTableBodyContextInTableScope=function(){for(var e=this.stackTop;e>=0;e--){var r=this.treeAdapter.getTagName(this.items[e]);if(this.treeAdapter.getNamespaceURI(this.items[e])===n.HTML){if(r===t.TBODY||r===t.THEAD||r===t.TFOOT)return!0;if(r===t.TABLE||r===t.HTML)return!1}}return!0},i.prototype.hasInSelectScope=function(e){for(var r=this.stackTop;r>=0;r--){var a=this.treeAdapter.getTagName(this.items[r]);if(this.treeAdapter.getNamespaceURI(this.items[r])===n.HTML){if(a===e)return!0;if(a!==t.OPTION&&a!==t.OPTGROUP)return!1}}return!0},i.prototype.generateImpliedEndTags=function(){for(;r(this.currentTagName);)this.pop()},i.prototype.generateImpliedEndTagsWithExclusion=function(e){for(;r(this.currentTagName)&&this.currentTagName!==e;)this.pop()}})),ka=f(function(e){var t=e.exports=function(e){this.length=0,this.entries=[],this.treeAdapter=e,this.bookmark=null};t.MARKER_ENTRY="MARKER_ENTRY",t.ELEMENT_ENTRY="ELEMENT_ENTRY",t.prototype._getNoahArkConditionCandidates=function(e){var n=[];if(this.length>=3)for(var r=this.treeAdapter.getAttrList(e).length,a=this.treeAdapter.getTagName(e),i=this.treeAdapter.getNamespaceURI(e),o=this.length-1;o>=0;o--){var l=this.entries[o];if(l.type===t.MARKER_ENTRY)break;var s=l.element,c=this.treeAdapter.getAttrList(s);this.treeAdapter.getTagName(s)===a&&this.treeAdapter.getNamespaceURI(s)===i&&c.length===r&&n.push({idx:o,attrs:c})}return n.length<3?[]:n},t.prototype._ensureNoahArkCondition=function(e){var t=this._getNoahArkConditionCandidates(e),n=t.length;if(n){for(var r=this.treeAdapter.getAttrList(e),a=r.length,i=Object.create(null),o=0;o<a;o++){var l=r[o];i[l.name]=l.value}for(o=0;o<a;o++)for(var s=0;s<n;s++){var c=t[s].attrs[o];if(i[c.name]!==c.value&&(t.splice(s,1),n--),t.length<3)return}for(o=n-1;o>=2;o--)this.entries.splice(t[o].idx,1),this.length--}},t.prototype.insertMarker=function(){this.entries.push({type:t.MARKER_ENTRY}),this.length++},t.prototype.pushElement=function(e,n){this._ensureNoahArkCondition(e),this.entries.push({type:t.ELEMENT_ENTRY,element:e,token:n}),this.length++},t.prototype.insertElementAfterBookmark=function(e,n){for(var r=this.length-1;r>=0&&this.entries[r]!==this.bookmark;r--);this.entries.splice(r+1,0,{type:t.ELEMENT_ENTRY,element:e,token:n}),this.length++},t.prototype.removeEntry=function(e){for(var t=this.length-1;t>=0;t--)if(this.entries[t]===e){this.entries.splice(t,1),this.length--;break}},t.prototype.clearToLastMarker=function(){for(;this.length;){var e=this.entries.pop();if(this.length--,e.type===t.MARKER_ENTRY)break}},t.prototype.getElementEntryInScopeWithTagName=function(e){for(var n=this.length-1;n>=0;n--){var r=this.entries[n];if(r.type===t.MARKER_ENTRY)return null;if(this.treeAdapter.getTagName(r.element)===e)return r}return null},t.prototype.getElementEntry=function(e){for(var n=this.length-1;n>=0;n--){var r=this.entries[n];if(r.type===t.ELEMENT_ENTRY&&r.element===e)return r}return null}}),La=f(function(e){(e.exports=function(e){var t={},n=this._getOverriddenMethods(this,t);Object.keys(n).forEach(function(r){"function"==typeof n[r]&&(t[r]=e[r],e[r]=n[r])})}).prototype._getOverriddenMethods=function(){throw new Error("Not implemented")}}),Pa="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ba=[],Fa=[],Ua="undefined"!=typeof Uint8Array?Uint8Array:Array,Ha=!1;function Ga(){Ha=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)Ba[t]=e[t],Fa[e.charCodeAt(t)]=t;Fa["-".charCodeAt(0)]=62,Fa["_".charCodeAt(0)]=63}function qa(e,t,n){for(var r,a,i=[],o=t;o<n;o+=3)r=(e[o]<<16)+(e[o+1]<<8)+e[o+2],i.push(Ba[(a=r)>>18&63]+Ba[a>>12&63]+Ba[a>>6&63]+Ba[63&a]);return i.join("")}function za(e){var t;Ha||Ga();for(var n=e.length,r=n%3,a="",i=[],o=0,l=n-r;o<l;o+=16383)i.push(qa(e,o,o+16383>l?l:o+16383));return 1===r?(t=e[n-1],a+=Ba[t>>2],a+=Ba[t<<4&63],a+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],a+=Ba[t>>10],a+=Ba[t>>4&63],a+=Ba[t<<2&63],a+="="),i.push(a),i.join("")}function Ka(e,t,n,r,a){var i,o,l=8*a-r-1,s=(1<<l)-1,c=s>>1,u=-7,d=n?a-1:0,p=n?-1:1,m=e[t+d];for(d+=p,i=m&(1<<-u)-1,m>>=-u,u+=l;u>0;i=256*i+e[t+d],d+=p,u-=8);for(o=i&(1<<-u)-1,i>>=-u,u+=r;u>0;o=256*o+e[t+d],d+=p,u-=8);if(0===i)i=1-c;else{if(i===s)return o?NaN:1/0*(m?-1:1);o+=Math.pow(2,r),i-=c}return(m?-1:1)*o*Math.pow(2,i-r)}function ja(e,t,n,r,a,i){var o,l,s,c=8*i-a-1,u=(1<<c)-1,d=u>>1,p=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,m=r?0:i-1,g=r?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-o))<1&&(o--,s*=2),(t+=o+d>=1?p/s:p*Math.pow(2,1-d))*s>=2&&(o++,s/=2),o+d>=u?(l=0,o=u):o+d>=1?(l=(t*s-1)*Math.pow(2,a),o+=d):(l=t*Math.pow(2,d-1)*Math.pow(2,a),o=0));a>=8;e[n+m]=255&l,m+=g,l/=256,a-=8);for(o=o<<a|l,c+=a;c>0;e[n+m]=255&o,m+=g,o/=256,c-=8);e[n+m-g]|=128*h}var Va={}.toString,$a=Array.isArray||function(e){return"[object Array]"==Va.call(e)};function Wa(){return Qa.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function Ya(e,t){if(Wa()<t)throw new RangeError("Invalid typed array length");return Qa.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=Qa.prototype:(null===e&&(e=new Qa(t)),e.length=t),e}function Qa(e,t,n){if(!(Qa.TYPED_ARRAY_SUPPORT||this instanceof Qa))return new Qa(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return Ja(this,e)}return Xa(this,e,t,n)}function Xa(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);Qa.TYPED_ARRAY_SUPPORT?(e=t).__proto__=Qa.prototype:e=ei(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!Qa.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|ri(t,n),a=(e=Ya(e,r)).write(t,n);a!==r&&(e=e.slice(0,a));return e}(e,t,n):function(e,t){if(ni(t)){var n=0|ti(t.length);return 0===(e=Ya(e,n)).length?e:(t.copy(e,0,0,n),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?Ya(e,0):ei(e,t);if("Buffer"===t.type&&$a(t.data))return ei(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function Za(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function Ja(e,t){if(Za(t),e=Ya(e,t<0?0:0|ti(t)),!Qa.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function ei(e,t){var n=t.length<0?0:0|ti(t.length);e=Ya(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function ti(e){if(e>=Wa())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Wa().toString(16)+" bytes");return 0|e}function ni(e){return!(null==e||!e._isBuffer)}function ri(e,t){if(ni(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return xi(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return wi(e).length;default:if(r)return xi(e).length;t=(""+t).toLowerCase(),r=!0}}function ai(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function ii(e,t,n,r,a){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=a?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(a)return-1;n=e.length-1}else if(n<0){if(!a)return-1;n=0}if("string"==typeof t&&(t=Qa.from(t,r)),ni(t))return 0===t.length?-1:oi(e,t,n,r,a);if("number"==typeof t)return t&=255,Qa.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):oi(e,[t],n,r,a);throw new TypeError("val must be string, number or Buffer")}function oi(e,t,n,r,a){var i,o=1,l=e.length,s=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,l/=2,s/=2,n/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(a){var u=-1;for(i=n;i<l;i++)if(c(e,i)===c(t,-1===u?0:i-u)){if(-1===u&&(u=i),i-u+1===s)return u*o}else-1!==u&&(i-=i-u),u=-1}else for(n+s>l&&(n=l-s),i=n;i>=0;i--){for(var d=!0,p=0;p<s;p++)if(c(e,i+p)!==c(t,p)){d=!1;break}if(d)return i}return-1}function li(e,t,n,r){n=Number(n)||0;var a=e.length-n;r?(r=Number(r))>a&&(r=a):r=a;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var o=0;o<r;++o){var l=parseInt(t.substr(2*o,2),16);if(isNaN(l))return o;e[n+o]=l}return o}function si(e,t,n,r){return Ri(xi(t,e.length-n),e,n,r)}function ci(e,t,n,r){return Ri(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function ui(e,t,n,r){return ci(e,t,n,r)}function di(e,t,n,r){return Ri(wi(t),e,n,r)}function pi(e,t,n,r){return Ri(function(e,t){for(var n,r,a,i=[],o=0;o<e.length&&!((t-=2)<0);++o)n=e.charCodeAt(o),r=n>>8,a=n%256,i.push(a),i.push(r);return i}(t,e.length-n),e,n,r)}function mi(e,t,n){return 0===t&&n===e.length?za(e):za(e.slice(t,n))}function gi(e,t,n){n=Math.min(e.length,n);for(var r=[],a=t;a<n;){var i,o,l,s,c=e[a],u=null,d=c>239?4:c>223?3:c>191?2:1;if(a+d<=n)switch(d){case 1:c<128&&(u=c);break;case 2:128==(192&(i=e[a+1]))&&(s=(31&c)<<6|63&i)>127&&(u=s);break;case 3:i=e[a+1],o=e[a+2],128==(192&i)&&128==(192&o)&&(s=(15&c)<<12|(63&i)<<6|63&o)>2047&&(s<55296||s>57343)&&(u=s);break;case 4:i=e[a+1],o=e[a+2],l=e[a+3],128==(192&i)&&128==(192&o)&&128==(192&l)&&(s=(15&c)<<18|(63&i)<<12|(63&o)<<6|63&l)>65535&&s<1114112&&(u=s)}null===u?(u=65533,d=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),a+=d}return function(e){var t=e.length;if(t<=hi)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=hi));return n}(r)}Qa.TYPED_ARRAY_SUPPORT=void 0===Pa.TYPED_ARRAY_SUPPORT||Pa.TYPED_ARRAY_SUPPORT,Qa.poolSize=8192,Qa._augment=function(e){return e.__proto__=Qa.prototype,e},Qa.from=function(e,t,n){return Xa(null,e,t,n)},Qa.TYPED_ARRAY_SUPPORT&&(Qa.prototype.__proto__=Uint8Array.prototype,Qa.__proto__=Uint8Array),Qa.alloc=function(e,t,n){return function(e,t,n,r){return Za(t),t<=0?Ya(e,t):void 0!==n?"string"==typeof r?Ya(e,t).fill(n,r):Ya(e,t).fill(n):Ya(e,t)}(null,e,t,n)},Qa.allocUnsafe=function(e){return Ja(null,e)},Qa.allocUnsafeSlow=function(e){return Ja(null,e)},Qa.isBuffer=Di,Qa.compare=function(e,t){if(!ni(e)||!ni(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,a=0,i=Math.min(n,r);a<i;++a)if(e[a]!==t[a]){n=e[a],r=t[a];break}return n<r?-1:r<n?1:0},Qa.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Qa.concat=function(e,t){if(!$a(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Qa.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=Qa.allocUnsafe(t),a=0;for(n=0;n<e.length;++n){var i=e[n];if(!ni(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,a),a+=i.length}return r},Qa.byteLength=ri,Qa.prototype._isBuffer=!0,Qa.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)ai(this,t,t+1);return this},Qa.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)ai(this,t,t+3),ai(this,t+1,t+2);return this},Qa.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)ai(this,t,t+7),ai(this,t+1,t+6),ai(this,t+2,t+5),ai(this,t+3,t+4);return this},Qa.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?gi(this,0,e):function(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return Ei(this,t,n);case"utf8":case"utf-8":return gi(this,t,n);case"ascii":return fi(this,t,n);case"latin1":case"binary":return _i(this,t,n);case"base64":return mi(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ti(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},Qa.prototype.equals=function(e){if(!ni(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Qa.compare(this,e)},Qa.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},Qa.prototype.compare=function(e,t,n,r,a){if(!ni(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===a&&(a=this.length),t<0||n>e.length||r<0||a>this.length)throw new RangeError("out of range index");if(r>=a&&t>=n)return 0;if(r>=a)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,a>>>=0,this===e)return 0;for(var i=a-r,o=n-t,l=Math.min(i,o),s=this.slice(r,a),c=e.slice(t,n),u=0;u<l;++u)if(s[u]!==c[u]){i=s[u],o=c[u];break}return i<o?-1:o<i?1:0},Qa.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},Qa.prototype.indexOf=function(e,t,n){return ii(this,e,t,n,!0)},Qa.prototype.lastIndexOf=function(e,t,n){return ii(this,e,t,n,!1)},Qa.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var a=this.length-t;if((void 0===n||n>a)&&(n=a),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return li(this,e,t,n);case"utf8":case"utf-8":return si(this,e,t,n);case"ascii":return ci(this,e,t,n);case"latin1":case"binary":return ui(this,e,t,n);case"base64":return di(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return pi(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},Qa.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var hi=4096;function fi(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(127&e[a]);return r}function _i(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(e[a]);return r}function Ei(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var a="",i=t;i<n;++i)a+=Mi(e[i]);return a}function Ti(e,t,n){for(var r=e.slice(t,n),a="",i=0;i<r.length;i+=2)a+=String.fromCharCode(r[i]+256*r[i+1]);return a}function bi(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function vi(e,t,n,r,a,i){if(!ni(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||t<i)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function Ai(e,t,n,r){t<0&&(t=65535+t+1);for(var a=0,i=Math.min(e.length-n,2);a<i;++a)e[n+a]=(t&255<<8*(r?a:1-a))>>>8*(r?a:1-a)}function Si(e,t,n,r){t<0&&(t=4294967295+t+1);for(var a=0,i=Math.min(e.length-n,4);a<i;++a)e[n+a]=t>>>8*(r?a:3-a)&255}function yi(e,t,n,r,a,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function Ni(e,t,n,r,a){return a||yi(e,0,n,4),ja(e,t,n,r,23,4),n+4}function Ci(e,t,n,r,a){return a||yi(e,0,n,8),ja(e,t,n,r,52,8),n+8}Qa.prototype.slice=function(e,t){var n,r=this.length;if(e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),Qa.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=Qa.prototype;else{var a=t-e;n=new Qa(a,void 0);for(var i=0;i<a;++i)n[i]=this[i+e]}return n},Qa.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||bi(e,t,this.length);for(var r=this[e],a=1,i=0;++i<t&&(a*=256);)r+=this[e+i]*a;return r},Qa.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||bi(e,t,this.length);for(var r=this[e+--t],a=1;t>0&&(a*=256);)r+=this[e+--t]*a;return r},Qa.prototype.readUInt8=function(e,t){return t||bi(e,1,this.length),this[e]},Qa.prototype.readUInt16LE=function(e,t){return t||bi(e,2,this.length),this[e]|this[e+1]<<8},Qa.prototype.readUInt16BE=function(e,t){return t||bi(e,2,this.length),this[e]<<8|this[e+1]},Qa.prototype.readUInt32LE=function(e,t){return t||bi(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Qa.prototype.readUInt32BE=function(e,t){return t||bi(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Qa.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||bi(e,t,this.length);for(var r=this[e],a=1,i=0;++i<t&&(a*=256);)r+=this[e+i]*a;return r>=(a*=128)&&(r-=Math.pow(2,8*t)),r},Qa.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||bi(e,t,this.length);for(var r=t,a=1,i=this[e+--r];r>0&&(a*=256);)i+=this[e+--r]*a;return i>=(a*=128)&&(i-=Math.pow(2,8*t)),i},Qa.prototype.readInt8=function(e,t){return t||bi(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Qa.prototype.readInt16LE=function(e,t){t||bi(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},Qa.prototype.readInt16BE=function(e,t){t||bi(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},Qa.prototype.readInt32LE=function(e,t){return t||bi(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Qa.prototype.readInt32BE=function(e,t){return t||bi(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Qa.prototype.readFloatLE=function(e,t){return t||bi(e,4,this.length),Ka(this,e,!0,23,4)},Qa.prototype.readFloatBE=function(e,t){return t||bi(e,4,this.length),Ka(this,e,!1,23,4)},Qa.prototype.readDoubleLE=function(e,t){return t||bi(e,8,this.length),Ka(this,e,!0,52,8)},Qa.prototype.readDoubleBE=function(e,t){return t||bi(e,8,this.length),Ka(this,e,!1,52,8)},Qa.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||vi(this,e,t,n,Math.pow(2,8*n)-1,0);var a=1,i=0;for(this[t]=255&e;++i<n&&(a*=256);)this[t+i]=e/a&255;return t+n},Qa.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||vi(this,e,t,n,Math.pow(2,8*n)-1,0);var a=n-1,i=1;for(this[t+a]=255&e;--a>=0&&(i*=256);)this[t+a]=e/i&255;return t+n},Qa.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||vi(this,e,t,1,255,0),Qa.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},Qa.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||vi(this,e,t,2,65535,0),Qa.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):Ai(this,e,t,!0),t+2},Qa.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||vi(this,e,t,2,65535,0),Qa.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):Ai(this,e,t,!1),t+2},Qa.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||vi(this,e,t,4,4294967295,0),Qa.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):Si(this,e,t,!0),t+4},Qa.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||vi(this,e,t,4,4294967295,0),Qa.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Si(this,e,t,!1),t+4},Qa.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);vi(this,e,t,n,a-1,-a)}var i=0,o=1,l=0;for(this[t]=255&e;++i<n&&(o*=256);)e<0&&0===l&&0!==this[t+i-1]&&(l=1),this[t+i]=(e/o>>0)-l&255;return t+n},Qa.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);vi(this,e,t,n,a-1,-a)}var i=n-1,o=1,l=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===l&&0!==this[t+i+1]&&(l=1),this[t+i]=(e/o>>0)-l&255;return t+n},Qa.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||vi(this,e,t,1,127,-128),Qa.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},Qa.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||vi(this,e,t,2,32767,-32768),Qa.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):Ai(this,e,t,!0),t+2},Qa.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||vi(this,e,t,2,32767,-32768),Qa.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):Ai(this,e,t,!1),t+2},Qa.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||vi(this,e,t,4,2147483647,-2147483648),Qa.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):Si(this,e,t,!0),t+4},Qa.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||vi(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Qa.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Si(this,e,t,!1),t+4},Qa.prototype.writeFloatLE=function(e,t,n){return Ni(this,e,t,!0,n)},Qa.prototype.writeFloatBE=function(e,t,n){return Ni(this,e,t,!1,n)},Qa.prototype.writeDoubleLE=function(e,t,n){return Ci(this,e,t,!0,n)},Qa.prototype.writeDoubleBE=function(e,t,n){return Ci(this,e,t,!1,n)},Qa.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var a,i=r-n;if(this===e&&n<t&&t<r)for(a=i-1;a>=0;--a)e[a+t]=this[a+n];else if(i<1e3||!Qa.TYPED_ARRAY_SUPPORT)for(a=0;a<i;++a)e[a+t]=this[a+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+i),t);return i},Qa.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var a=e.charCodeAt(0);a<256&&(e=a)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!Qa.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var i;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i<n;++i)this[i]=e;else{var o=ni(e)?e:xi(new Qa(e,r).toString()),l=o.length;for(i=0;i<n-t;++i)this[i+t]=o[i%l]}return this};var Oi=/[^+\/0-9A-Za-z-_]/g;function Mi(e){return e<16?"0"+e.toString(16):e.toString(16)}function xi(e,t){var n;t=t||1/0;for(var r=e.length,a=null,i=[],o=0;o<r;++o){if((n=e.charCodeAt(o))>55295&&n<57344){if(!a){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&i.push(239,191,189);continue}a=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),a=n;continue}n=65536+(a-55296<<10|n-56320)}else a&&(t-=3)>-1&&i.push(239,191,189);if(a=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function wi(e){return function(e){var t,n,r,a,i,o;Ha||Ga();var l=e.length;if(l%4>0)throw new Error("Invalid string. Length must be a multiple of 4");i="="===e[l-2]?2:"="===e[l-1]?1:0,o=new Ua(3*l/4-i),r=i>0?l-4:l;var s=0;for(t=0,n=0;t<r;t+=4,n+=3)a=Fa[e.charCodeAt(t)]<<18|Fa[e.charCodeAt(t+1)]<<12|Fa[e.charCodeAt(t+2)]<<6|Fa[e.charCodeAt(t+3)],o[s++]=a>>16&255,o[s++]=a>>8&255,o[s++]=255&a;return 2===i?(a=Fa[e.charCodeAt(t)]<<2|Fa[e.charCodeAt(t+1)]>>4,o[s++]=255&a):1===i&&(a=Fa[e.charCodeAt(t)]<<10|Fa[e.charCodeAt(t+1)]<<4|Fa[e.charCodeAt(t+2)]>>2,o[s++]=a>>8&255,o[s++]=255&a),o}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(Oi,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function Ri(e,t,n,r){for(var a=0;a<r&&!(a+n>=t.length||a>=e.length);++a)t[a+n]=e[a];return a}function Di(e){return null!=e&&(!!e._isBuffer||Ii(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&Ii(e.slice(0,0))}(e))}function Ii(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function ki(){throw new Error("setTimeout has not been defined")}function Li(){throw new Error("clearTimeout has not been defined")}var Pi=ki,Bi=Li;function Fi(e){if(Pi===setTimeout)return setTimeout(e,0);if((Pi===ki||!Pi)&&setTimeout)return Pi=setTimeout,setTimeout(e,0);try{return Pi(e,0)}catch(t){try{return Pi.call(null,e,0)}catch(t){return Pi.call(this,e,0)}}}"function"==typeof Pa.setTimeout&&(Pi=setTimeout),"function"==typeof Pa.clearTimeout&&(Bi=clearTimeout);var Ui,Hi=[],Gi=!1,qi=-1;function zi(){Gi&&Ui&&(Gi=!1,Ui.length?Hi=Ui.concat(Hi):qi=-1,Hi.length&&Ki())}function Ki(){if(!Gi){var e=Fi(zi);Gi=!0;for(var t=Hi.length;t;){for(Ui=Hi,Hi=[];++qi<t;)Ui&&Ui[qi].run();qi=-1,t=Hi.length}Ui=null,Gi=!1,function(e){if(Bi===clearTimeout)return clearTimeout(e);if((Bi===Li||!Bi)&&clearTimeout)return Bi=clearTimeout,clearTimeout(e);try{Bi(e)}catch(t){try{return Bi.call(null,e)}catch(t){return Bi.call(this,e)}}}(e)}}function ji(e,t){this.fun=e,this.array=t}ji.prototype.run=function(){this.fun.apply(null,this.array)};function Vi(){}var $i=Vi,Wi=Vi,Yi=Vi,Qi=Vi,Xi=Vi,Zi=Vi,Ji=Vi;var eo=Pa.performance||{},to=eo.now||eo.mozNow||eo.msNow||eo.oNow||eo.webkitNow||function(){return(new Date).getTime()};var no=new Date;var ro={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];Hi.push(new ji(e,t)),1!==Hi.length||Gi||Fi(Ki)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:$i,addListener:Wi,once:Yi,off:Qi,removeListener:Xi,removeAllListeners:Zi,emit:Ji,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*to.call(eo),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-no)/1e3}},ao="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e},io=/%[sdj%]/g;function oo(e){if(!So(e)){for(var t=[],n=0;n<arguments.length;n++)t.push(po(arguments[n]));return t.join(" ")}n=1;for(var r=arguments,a=r.length,i=String(e).replace(io,function(e){if("%%"===e)return"%";if(n>=a)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}}),o=r[n];n<a;o=r[++n])bo(o)||!Oo(o)?i+=" "+o:i+=" "+po(o);return i}function lo(e,t){if(No(Pa.process))return function(){return lo(e,t).apply(this,arguments)};if(!0===ro.noDeprecation)return e;var n=!1;return function(){if(!n){if(ro.throwDeprecation)throw new Error(t);ro.traceDeprecation?console.trace(t):console.error(t),n=!0}return e.apply(this,arguments)}}var so,co={};function uo(e){if(No(so)&&(so=ro.env.NODE_DEBUG||""),e=e.toUpperCase(),!co[e])if(new RegExp("\\b"+e+"\\b","i").test(so)){co[e]=function(){var t=oo.apply(null,arguments);console.error("%s %d: %s",e,0,t)}}else co[e]=function(){};return co[e]}function po(e,t){var n={seen:[],stylize:go};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),To(t)?n.showHidden=t:t&&Bo(n,t),No(n.showHidden)&&(n.showHidden=!1),No(n.depth)&&(n.depth=2),No(n.colors)&&(n.colors=!1),No(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=mo),ho(n,e,n.depth)}function mo(e,t){var n=po.styles[t];return n?"["+po.colors[n][0]+"m"+e+"["+po.colors[n][1]+"m":e}function go(e,t){return e}function ho(e,t,n){if(e.customInspect&&t&&wo(t.inspect)&&t.inspect!==po&&(!t.constructor||t.constructor.prototype!==t)){var r=t.inspect(n,e);return So(r)||(r=ho(e,r,n)),r}var a=function(e,t){if(No(t))return e.stylize("undefined","undefined");if(So(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(Ao(t))return e.stylize(""+t,"number");if(To(t))return e.stylize(""+t,"boolean");if(bo(t))return e.stylize("null","null")}(e,t);if(a)return a;var i=Object.keys(t),o=function(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}(i);if(e.showHidden&&(i=Object.getOwnPropertyNames(t)),xo(t)&&(i.indexOf("message")>=0||i.indexOf("description")>=0))return fo(t);if(0===i.length){if(wo(t)){var l=t.name?": "+t.name:"";return e.stylize("[Function"+l+"]","special")}if(Co(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(Mo(t))return e.stylize(Date.prototype.toString.call(t),"date");if(xo(t))return fo(t)}var s,c="",u=!1,d=["{","}"];(Eo(t)&&(u=!0,d=["[","]"]),wo(t))&&(c=" [Function"+(t.name?": "+t.name:"")+"]");return Co(t)&&(c=" "+RegExp.prototype.toString.call(t)),Mo(t)&&(c=" "+Date.prototype.toUTCString.call(t)),xo(t)&&(c=" "+fo(t)),0!==i.length||u&&0!=t.length?n<0?Co(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),s=u?function(e,t,n,r,a){for(var i=[],o=0,l=t.length;o<l;++o)Fo(t,String(o))?i.push(_o(e,t,n,r,String(o),!0)):i.push("");return a.forEach(function(a){a.match(/^\d+$/)||i.push(_o(e,t,n,r,a,!0))}),i}(e,t,n,o,i):i.map(function(r){return _o(e,t,n,o,r,u)}),e.seen.pop(),function(e,t,n){if(e.reduce(function(e,t){return 0,t.indexOf("\n")>=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(s,c,d)):d[0]+c+d[1]}function fo(e){return"["+Error.prototype.toString.call(e)+"]"}function _o(e,t,n,r,a,i){var o,l,s;if((s=Object.getOwnPropertyDescriptor(t,a)||{value:t[a]}).get?l=s.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):s.set&&(l=e.stylize("[Setter]","special")),Fo(r,a)||(o="["+a+"]"),l||(e.seen.indexOf(s.value)<0?(l=bo(n)?ho(e,s.value,null):ho(e,s.value,n-1)).indexOf("\n")>-1&&(l=i?l.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+l.split("\n").map(function(e){return" "+e}).join("\n")):l=e.stylize("[Circular]","special")),No(o)){if(i&&a.match(/^\d+$/))return l;(o=JSON.stringify(""+a)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+l}function Eo(e){return Array.isArray(e)}function To(e){return"boolean"==typeof e}function bo(e){return null===e}function vo(e){return null==e}function Ao(e){return"number"==typeof e}function So(e){return"string"==typeof e}function yo(e){return"symbol"==typeof e}function No(e){return void 0===e}function Co(e){return Oo(e)&&"[object RegExp]"===Io(e)}function Oo(e){return"object"==typeof e&&null!==e}function Mo(e){return Oo(e)&&"[object Date]"===Io(e)}function xo(e){return Oo(e)&&("[object Error]"===Io(e)||e instanceof Error)}function wo(e){return"function"==typeof e}function Ro(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e}function Do(e){return Di(e)}function Io(e){return Object.prototype.toString.call(e)}function ko(e){return e<10?"0"+e.toString(10):e.toString(10)}po.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},po.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};var Lo=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Po(){var e,t;console.log("%s - %s",(e=new Date,t=[ko(e.getHours()),ko(e.getMinutes()),ko(e.getSeconds())].join(":"),[e.getDate(),Lo[e.getMonth()],t].join(" ")),oo.apply(null,arguments))}function Bo(e,t){if(!t||!Oo(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e}function Fo(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Uo={inherits:ao,_extend:Bo,log:Po,isBuffer:Do,isPrimitive:Ro,isFunction:wo,isError:xo,isDate:Mo,isObject:Oo,isRegExp:Co,isUndefined:No,isSymbol:yo,isString:So,isNumber:Ao,isNullOrUndefined:vo,isNull:bo,isBoolean:To,isArray:Eo,inspect:po,deprecate:lo,format:oo,debuglog:uo},Ho=Object.freeze({format:oo,deprecate:lo,debuglog:uo,inspect:po,isArray:Eo,isBoolean:To,isNull:bo,isNullOrUndefined:vo,isNumber:Ao,isString:So,isSymbol:yo,isUndefined:No,isRegExp:Co,isObject:Oo,isDate:Mo,isError:xo,isFunction:wo,isPrimitive:Ro,isBuffer:Do,log:Po,inherits:ao,_extend:Bo,default:Uo}),Go=Ho&&Uo||Ho,qo=f(function(e){var t=Go.inherits,n=Ma.CODE_POINTS,r=e.exports=function(e){return e.__locTracker||(e.__locTracker=this,La.call(this,e),this.preprocessor=e,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.col=-1,this.line=1),e.__locTracker};t(r,La),Object.defineProperty(r.prototype,"offset",{get:function(){return this.droppedBufferSize+this.preprocessor.pos}}),r.prototype._getOverriddenMethods=function(e,t){return{advance:function(){var r=t.advance.call(this);return e.isEol&&(e.isEol=!1,e.line++,e.lineStartPos=e.offset),r===n.LINE_FEED&&(e.isEol=!0),e.col=e.offset-e.lineStartPos+1,r},retreat:function(){t.retreat.call(this),e.isEol=!1,e.col=e.offset-e.lineStartPos+1},dropParsedChunk:function(){var n=this.pos;t.dropParsedChunk.call(this),e.droppedBufferSize+=n-this.pos}}}}),zo=f(function(e){var t=Go.inherits,n=e.exports=function(e){La.call(this,e),this.tokenizer=e,this.posTracker=new qo(e.preprocessor),this.currentAttrLocation=null,this.currentTokenLocation=null};t(n,La),n.prototype._getCurrentLocation=function(){return{line:this.posTracker.line,col:this.posTracker.col,startOffset:this.posTracker.offset,endOffset:-1}},n.prototype._attachCurrentAttrLocationInfo=function(){this.currentAttrLocation.endOffset=this.posTracker.offset;var e=this.tokenizer.currentToken,t=this.tokenizer.currentAttr;e.location.attrs||(e.location.attrs=Object.create(null)),e.location.attrs[t.name]=this.currentAttrLocation},n.prototype._getOverriddenMethods=function(e,t){var n={_createStartTagToken:function(){t._createStartTagToken.call(this),this.currentToken.location=e.currentTokenLocation},_createEndTagToken:function(){t._createEndTagToken.call(this),this.currentToken.location=e.currentTokenLocation},_createCommentToken:function(){t._createCommentToken.call(this),this.currentToken.location=e.currentTokenLocation},_createDoctypeToken:function(n){t._createDoctypeToken.call(this,n),this.currentToken.location=e.currentTokenLocation},_createCharacterToken:function(n,r){t._createCharacterToken.call(this,n,r),this.currentCharacterToken.location=e.currentTokenLocation},_createAttr:function(n){t._createAttr.call(this,n),e.currentAttrLocation=e._getCurrentLocation()},_leaveAttrName:function(n){t._leaveAttrName.call(this,n),e._attachCurrentAttrLocationInfo()},_leaveAttrValue:function(n){t._leaveAttrValue.call(this,n),e._attachCurrentAttrLocationInfo()},_emitCurrentToken:function(){this.currentCharacterToken&&(this.currentCharacterToken.location.endOffset=this.currentToken.location.startOffset),this.currentToken.location.endOffset=e.posTracker.offset+1,t._emitCurrentToken.call(this)},_emitCurrentCharacterToken:function(){this.currentCharacterToken&&-1===this.currentCharacterToken.location.endOffset&&(this.currentCharacterToken.location.endOffset=e.posTracker.offset),t._emitCurrentCharacterToken.call(this)}};return Object.keys(Ra.MODE).forEach(function(r){var a=Ra.MODE[r];n[a]=function(n){e.currentTokenLocation=e._getCurrentLocation(),t[a].call(this,n)}}),n}}),Ko=f(function(e){var t=Go.inherits,n=e.exports=function(e,t){La.call(this,e),this.onItemPop=t.onItemPop};t(n,La),n.prototype._getOverriddenMethods=function(e,t){return{pop:function(){e.onItemPop(this.current),t.pop.call(this)},popAllUpToHtmlElement:function(){for(var n=this.stackTop;n>0;n--)e.onItemPop(this.items[n]);t.popAllUpToHtmlElement.call(this)},remove:function(n){e.onItemPop(this.current),t.remove.call(this,n)}}}}),jo=f(function(e){var t=Go.inherits,n=Da.TAG_NAMES,r=e.exports=function(e){La.call(this,e),this.parser=e,this.posTracker=null,this.lastStartTagToken=null,this.lastFosterParentingLocation=null,this.currentToken=null};t(r,La),r.prototype._setStartLocation=function(e){this.lastStartTagToken?(e.__location=Object.create(this.lastStartTagToken.location),e.__location.startTag=this.lastStartTagToken.location):e.__location=null},r.prototype._setEndLocation=function(e,t){var n=e.__location;if(n)if(t.location){var r=t.location,a=this.parser.treeAdapter.getTagName(e);t.type===Ra.END_TAG_TOKEN&&a===t.tagName?(n.endTag=Object.create(r),n.endOffset=r.endOffset):n.endOffset=r.startOffset}else t.type===Ra.EOF_TOKEN&&(n.endOffset=this.posTracker.offset)},r.prototype._getOverriddenMethods=function(e,t){return{_bootstrap:function(n,r){t._bootstrap.call(this,n,r),e.lastStartTagToken=null,e.lastFosterParentingLocation=null,e.currentToken=null,e.posTracker=new qo(this.tokenizer.preprocessor),new zo(this.tokenizer),new Ko(this.openElements,{onItemPop:function(t){e._setEndLocation(t,e.currentToken)}})},_runParsingLoop:function(n){t._runParsingLoop.call(this,n);for(var r=this.openElements.stackTop;r>=0;r--)e._setEndLocation(this.openElements.items[r],e.currentToken)},_processTokenInForeignContent:function(n){e.currentToken=n,t._processTokenInForeignContent.call(this,n)},_processToken:function(r){if(e.currentToken=r,t._processToken.call(this,r),r.type===Ra.END_TAG_TOKEN&&(r.tagName===n.HTML||r.tagName===n.BODY&&this.openElements.hasInScope(n.BODY)))for(var a=this.openElements.stackTop;a>=0;a--){var i=this.openElements.items[a];if(this.treeAdapter.getTagName(i)===r.tagName){e._setEndLocation(i,r);break}}},_setDocumentType:function(e){t._setDocumentType.call(this,e);for(var n=this.treeAdapter.getChildNodes(this.document),r=n.length,a=0;a<r;a++){var i=n[a];if(this.treeAdapter.isDocumentTypeNode(i)){i.__location=e.location;break}}},_attachElementToTree:function(n){e._setStartLocation(n),e.lastStartTagToken=null,t._attachElementToTree.call(this,n)},_appendElement:function(n,r){e.lastStartTagToken=n,t._appendElement.call(this,n,r)},_insertElement:function(n,r){e.lastStartTagToken=n,t._insertElement.call(this,n,r)},_insertTemplate:function(n){e.lastStartTagToken=n,t._insertTemplate.call(this,n),this.treeAdapter.getTemplateContent(this.openElements.current).__location=null},_insertFakeRootElement:function(){t._insertFakeRootElement.call(this),this.openElements.current.__location=null},_appendCommentNode:function(e,n){t._appendCommentNode.call(this,e,n);var r=this.treeAdapter.getChildNodes(n);r[r.length-1].__location=e.location},_findFosterParentingLocation:function(){return e.lastFosterParentingLocation=t._findFosterParentingLocation.call(this),e.lastFosterParentingLocation},_insertCharacters:function(n){t._insertCharacters.call(this,n);var r=this._shouldFosterParentOnInsertion(),a=r&&e.lastFosterParentingLocation.parent||this.openElements.currentTmplContent||this.openElements.current,i=this.treeAdapter.getChildNodes(a),o=i[r&&e.lastFosterParentingLocation.beforeElement?i.indexOf(e.lastFosterParentingLocation.beforeElement)-1:i.length-1];o.__location?o.__location.endOffset=n.location.endOffset:o.__location=n.location}}}}),Vo=f(function(e,t){var n=Da.DOCUMENT_MODE;t.createDocument=function(){return{nodeName:"#document",mode:n.NO_QUIRKS,childNodes:[]}},t.createDocumentFragment=function(){return{nodeName:"#document-fragment",childNodes:[]}},t.createElement=function(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},t.createCommentNode=function(e){return{nodeName:"#comment",data:e,parentNode:null}};var r=function(e){return{nodeName:"#text",value:e,parentNode:null}},a=t.appendChild=function(e,t){e.childNodes.push(t),t.parentNode=e},i=t.insertBefore=function(e,t,n){var r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e};t.setTemplateContent=function(e,t){e.content=t},t.getTemplateContent=function(e){return e.content},t.setDocumentType=function(e,t,n,r){for(var i=null,o=0;o<e.childNodes.length;o++)if("#documentType"===e.childNodes[o].nodeName){i=e.childNodes[o];break}i?(i.name=t,i.publicId=n,i.systemId=r):a(e,{nodeName:"#documentType",name:t,publicId:n,systemId:r})},t.setDocumentMode=function(e,t){e.mode=t},t.getDocumentMode=function(e){return e.mode},t.detachNode=function(e){if(e.parentNode){var t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},t.insertText=function(e,t){if(e.childNodes.length){var n=e.childNodes[e.childNodes.length-1];if("#text"===n.nodeName)return void(n.value+=t)}a(e,r(t))},t.insertTextBefore=function(e,t,n){var a=e.childNodes[e.childNodes.indexOf(n)-1];a&&"#text"===a.nodeName?a.value+=t:i(e,r(t),n)},t.adoptAttributes=function(e,t){for(var n=[],r=0;r<e.attrs.length;r++)n.push(e.attrs[r].name);for(var a=0;a<t.length;a++)-1===n.indexOf(t[a].name)&&e.attrs.push(t[a])},t.getFirstChild=function(e){return e.childNodes[0]},t.getChildNodes=function(e){return e.childNodes},t.getParentNode=function(e){return e.parentNode},t.getAttrList=function(e){return e.attrs},t.getTagName=function(e){return e.tagName},t.getNamespaceURI=function(e){return e.namespaceURI},t.getTextNodeContent=function(e){return e.value},t.getCommentNodeContent=function(e){return e.data},t.getDocumentTypeNodeName=function(e){return e.name},t.getDocumentTypeNodePublicId=function(e){return e.publicId},t.getDocumentTypeNodeSystemId=function(e){return e.systemId},t.isTextNode=function(e){return"#text"===e.nodeName},t.isCommentNode=function(e){return"#comment"===e.nodeName},t.isDocumentTypeNode=function(e){return"#documentType"===e.nodeName},t.isElementNode=function(e){return!!e.tagName}}),$o=(Vo.createDocument,Vo.createDocumentFragment,Vo.createElement,Vo.createCommentNode,Vo.appendChild,Vo.insertBefore,Vo.setTemplateContent,Vo.getTemplateContent,Vo.setDocumentType,Vo.setDocumentMode,Vo.getDocumentMode,Vo.detachNode,Vo.insertText,Vo.insertTextBefore,Vo.adoptAttributes,Vo.getFirstChild,Vo.getChildNodes,Vo.getParentNode,Vo.getAttrList,Vo.getTagName,Vo.getNamespaceURI,Vo.getTextNodeContent,Vo.getCommentNodeContent,Vo.getDocumentTypeNodeName,Vo.getDocumentTypeNodePublicId,Vo.getDocumentTypeNodeSystemId,Vo.isTextNode,Vo.isCommentNode,Vo.isDocumentTypeNode,Vo.isElementNode,Da.DOCUMENT_MODE),Wo=["+//silmaril//dtd html pro v0r11 19970101//en","-//advasoft ltd//dtd html 3.0 aswedit + extensions//en","-//as//dtd html 3.0 aswedit + extensions//en","-//ietf//dtd html 2.0 level 1//en","-//ietf//dtd html 2.0 level 2//en","-//ietf//dtd html 2.0 strict level 1//en","-//ietf//dtd html 2.0 strict level 2//en","-//ietf//dtd html 2.0 strict//en","-//ietf//dtd html 2.0//en","-//ietf//dtd html 2.1e//en","-//ietf//dtd html 3.0//en","-//ietf//dtd html 3.0//en//","-//ietf//dtd html 3.2 final//en","-//ietf//dtd html 3.2//en","-//ietf//dtd html 3//en","-//ietf//dtd html level 0//en","-//ietf//dtd html level 0//en//2.0","-//ietf//dtd html level 1//en","-//ietf//dtd html level 1//en//2.0","-//ietf//dtd html level 2//en","-//ietf//dtd html level 2//en//2.0","-//ietf//dtd html level 3//en","-//ietf//dtd html level 3//en//3.0","-//ietf//dtd html strict level 0//en","-//ietf//dtd html strict level 0//en//2.0","-//ietf//dtd html strict level 1//en","-//ietf//dtd html strict level 1//en//2.0","-//ietf//dtd html strict level 2//en","-//ietf//dtd html strict level 2//en//2.0","-//ietf//dtd html strict level 3//en","-//ietf//dtd html strict level 3//en//3.0","-//ietf//dtd html strict//en","-//ietf//dtd html strict//en//2.0","-//ietf//dtd html strict//en//3.0","-//ietf//dtd html//en","-//ietf//dtd html//en//2.0","-//ietf//dtd html//en//3.0","-//metrius//dtd metrius presentational//en","-//microsoft//dtd internet explorer 2.0 html strict//en","-//microsoft//dtd internet explorer 2.0 html//en","-//microsoft//dtd internet explorer 2.0 tables//en","-//microsoft//dtd internet explorer 3.0 html strict//en","-//microsoft//dtd internet explorer 3.0 html//en","-//microsoft//dtd internet explorer 3.0 tables//en","-//netscape comm. corp.//dtd html//en","-//netscape comm. corp.//dtd strict html//en","-//o'reilly and associates//dtd html 2.0//en","-//o'reilly and associates//dtd html extended 1.0//en","-//spyglass//dtd html 2.0 extended//en","-//sq//dtd html 2.0 hotmetal + extensions//en","-//sun microsystems corp.//dtd hotjava html//en","-//sun microsystems corp.//dtd hotjava strict html//en","-//w3c//dtd html 3 1995-03-24//en","-//w3c//dtd html 3.2 draft//en","-//w3c//dtd html 3.2 final//en","-//w3c//dtd html 3.2//en","-//w3c//dtd html 3.2s draft//en","-//w3c//dtd html 4.0 frameset//en","-//w3c//dtd html 4.0 transitional//en","-//w3c//dtd html experimental 19960712//en","-//w3c//dtd html experimental 970421//en","-//w3c//dtd w3 html//en","-//w3o//dtd w3 html 3.0//en","-//w3o//dtd w3 html 3.0//en//","-//webtechs//dtd mozilla html 2.0//en","-//webtechs//dtd mozilla html//en"],Yo=Wo.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]),Qo=["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"],Xo=["-//W3C//DTD XHTML 1.0 Frameset//","-//W3C//DTD XHTML 1.0 Transitional//"],Zo=Xo.concat(["-//W3C//DTD HTML 4.01 Frameset//","-//W3C//DTD HTML 4.01 Transitional//"]);function Jo(e){var t=-1!==e.indexOf('"')?"'":'"';return t+e+t}function el(e,t){for(var n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return!0;return!1}var tl,nl,rl,al={getDocumentMode:function(e,t,n){if("html"!==e)return $o.QUIRKS;if(n&&"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"===n.toLowerCase())return $o.QUIRKS;if(null!==t){if(t=t.toLowerCase(),Qo.indexOf(t)>-1)return $o.QUIRKS;var r=null===n?Yo:Wo;if(el(t,r))return $o.QUIRKS;if(el(t,r=null===n?Xo:Zo))return $o.LIMITED_QUIRKS}return $o.NO_QUIRKS},serializeContent:function(e,t,n){var r="!DOCTYPE ";return e&&(r+=e),null!==t?r+=" PUBLIC "+Jo(t):null!==n&&(r+=" SYSTEM"),null!==n&&(r+=" "+Jo(n)),r}},il=f(function(e,t){var n=Da.TAG_NAMES,r=Da.NAMESPACES,a=Da.ATTRS,i={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},o={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},l={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:r.XLINK},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:r.XLINK},"xlink:href":{prefix:"xlink",name:"href",namespace:r.XLINK},"xlink:role":{prefix:"xlink",name:"role",namespace:r.XLINK},"xlink:show":{prefix:"xlink",name:"show",namespace:r.XLINK},"xlink:title":{prefix:"xlink",name:"title",namespace:r.XLINK},"xlink:type":{prefix:"xlink",name:"type",namespace:r.XLINK},"xml:base":{prefix:"xml",name:"base",namespace:r.XML},"xml:lang":{prefix:"xml",name:"lang",namespace:r.XML},"xml:space":{prefix:"xml",name:"space",namespace:r.XML},xmlns:{prefix:"",name:"xmlns",namespace:r.XMLNS},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:r.XMLNS}},s=t.SVG_TAG_NAMES_ADJUSTMENT_MAP={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},c=Object.create(null);c[n.B]=!0,c[n.BIG]=!0,c[n.BLOCKQUOTE]=!0,c[n.BODY]=!0,c[n.BR]=!0,c[n.CENTER]=!0,c[n.CODE]=!0,c[n.DD]=!0,c[n.DIV]=!0,c[n.DL]=!0,c[n.DT]=!0,c[n.EM]=!0,c[n.EMBED]=!0,c[n.H1]=!0,c[n.H2]=!0,c[n.H3]=!0,c[n.H4]=!0,c[n.H5]=!0,c[n.H6]=!0,c[n.HEAD]=!0,c[n.HR]=!0,c[n.I]=!0,c[n.IMG]=!0,c[n.LI]=!0,c[n.LISTING]=!0,c[n.MENU]=!0,c[n.META]=!0,c[n.NOBR]=!0,c[n.OL]=!0,c[n.P]=!0,c[n.PRE]=!0,c[n.RUBY]=!0,c[n.S]=!0,c[n.SMALL]=!0,c[n.SPAN]=!0,c[n.STRONG]=!0,c[n.STRIKE]=!0,c[n.SUB]=!0,c[n.SUP]=!0,c[n.TABLE]=!0,c[n.TT]=!0,c[n.U]=!0,c[n.UL]=!0,c[n.VAR]=!0,t.causesExit=function(e){var t=e.tagName;return!!(t===n.FONT&&(null!==Ra.getTokenAttr(e,a.COLOR)||null!==Ra.getTokenAttr(e,a.SIZE)||null!==Ra.getTokenAttr(e,a.FACE)))||c[t]},t.adjustTokenMathMLAttrs=function(e){for(var t=0;t<e.attrs.length;t++)if("definitionurl"===e.attrs[t].name){e.attrs[t].name="definitionURL";break}},t.adjustTokenSVGAttrs=function(e){for(var t=0;t<e.attrs.length;t++){var n=o[e.attrs[t].name];n&&(e.attrs[t].name=n)}},t.adjustTokenXMLAttrs=function(e){for(var t=0;t<e.attrs.length;t++){var n=l[e.attrs[t].name];n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace)}},t.adjustTokenSVGTagName=function(e){var t=s[e.tagName];t&&(e.tagName=t)},t.isIntegrationPoint=function(e,t,o,l){return!(l&&l!==r.HTML||!function(e,t,o){if(t===r.MATHML&&e===n.ANNOTATION_XML)for(var l=0;l<o.length;l++)if(o[l].name===a.ENCODING){var s=o[l].value.toLowerCase();return s===i.TEXT_HTML||s===i.APPLICATION_XML}return t===r.SVG&&(e===n.FOREIGN_OBJECT||e===n.DESC||e===n.TITLE)}(e,t,o))||!(l&&l!==r.MATHML||!function(e,t){return t===r.MATHML&&(e===n.MI||e===n.MO||e===n.MN||e===n.MS||e===n.MTEXT)}(e,t))}}),ol=(il.SVG_TAG_NAMES_ADJUSTMENT_MAP,il.causesExit,il.adjustTokenMathMLAttrs,il.adjustTokenSVGAttrs,il.adjustTokenXMLAttrs,il.adjustTokenSVGTagName,il.isIntegrationPoint,f(function(e){var t=Da.TAG_NAMES,n=Da.NAMESPACES,r=Da.ATTRS,a={locationInfo:!1,treeAdapter:Vo},i="hidden",o=8,l=3,s="BEFORE_HTML_MODE",c="BEFORE_HEAD_MODE",u="IN_HEAD_MODE",d="AFTER_HEAD_MODE",p="IN_BODY_MODE",m="TEXT_MODE",g="IN_TABLE_MODE",h="IN_TABLE_TEXT_MODE",f="IN_CAPTION_MODE",_="IN_COLUMN_GROUP_MODE",E="IN_TABLE_BODY_MODE",T="IN_ROW_MODE",b="IN_CELL_MODE",v="IN_SELECT_MODE",A="IN_SELECT_IN_TABLE_MODE",S="IN_TEMPLATE_MODE",y="AFTER_BODY_MODE",N="IN_FRAMESET_MODE",C="AFTER_FRAMESET_MODE",O="AFTER_AFTER_BODY_MODE",M="AFTER_AFTER_FRAMESET_MODE",x=Object.create(null);x[t.TR]=T,x[t.TBODY]=x[t.THEAD]=x[t.TFOOT]=E,x[t.CAPTION]=f,x[t.COLGROUP]=_,x[t.TABLE]=g,x[t.BODY]=p,x[t.FRAMESET]=N;var w=Object.create(null);w[t.CAPTION]=w[t.COLGROUP]=w[t.TBODY]=w[t.TFOOT]=w[t.THEAD]=g,w[t.COL]=_,w[t.TR]=E,w[t.TD]=w[t.TH]=T;var R=Object.create(null);R.INITIAL_MODE=Object.create(null),R.INITIAL_MODE[Ra.CHARACTER_TOKEN]=R.INITIAL_MODE[Ra.NULL_CHARACTER_TOKEN]=j,R.INITIAL_MODE[Ra.WHITESPACE_CHARACTER_TOKEN]=H,R.INITIAL_MODE[Ra.COMMENT_TOKEN]=G,R.INITIAL_MODE[Ra.DOCTYPE_TOKEN]=function(e,t){e._setDocumentType(t);var n=t.forceQuirks?Da.DOCUMENT_MODE.QUIRKS:al.getDocumentMode(t.name,t.publicId,t.systemId);e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=s},R.INITIAL_MODE[Ra.START_TAG_TOKEN]=R.INITIAL_MODE[Ra.END_TAG_TOKEN]=R.INITIAL_MODE[Ra.EOF_TOKEN]=j,R[s]=Object.create(null),R[s][Ra.CHARACTER_TOKEN]=R[s][Ra.NULL_CHARACTER_TOKEN]=V,R[s][Ra.WHITESPACE_CHARACTER_TOKEN]=H,R[s][Ra.COMMENT_TOKEN]=G,R[s][Ra.DOCTYPE_TOKEN]=H,R[s][Ra.START_TAG_TOKEN]=function(e,r){r.tagName===t.HTML?(e._insertElement(r,n.HTML),e.insertionMode=c):V(e,r)},R[s][Ra.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r!==t.HTML&&r!==t.HEAD&&r!==t.BODY&&r!==t.BR||V(e,n)},R[s][Ra.EOF_TOKEN]=V,R[c]=Object.create(null),R[c][Ra.CHARACTER_TOKEN]=R[c][Ra.NULL_CHARACTER_TOKEN]=$,R[c][Ra.WHITESPACE_CHARACTER_TOKEN]=H,R[c][Ra.COMMENT_TOKEN]=G,R[c][Ra.DOCTYPE_TOKEN]=H,R[c][Ra.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.HEAD?(e._insertElement(r,n.HTML),e.headElement=e.openElements.current,e.insertionMode=u):$(e,r)},R[c][Ra.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r!==t.HEAD&&r!==t.BODY&&r!==t.HTML&&r!==t.BR||$(e,n)},R[c][Ra.EOF_TOKEN]=$,R[u]=Object.create(null),R[u][Ra.CHARACTER_TOKEN]=R[u][Ra.NULL_CHARACTER_TOKEN]=Q,R[u][Ra.WHITESPACE_CHARACTER_TOKEN]=z,R[u][Ra.COMMENT_TOKEN]=G,R[u][Ra.DOCTYPE_TOKEN]=H,R[u][Ra.START_TAG_TOKEN]=W,R[u][Ra.END_TAG_TOKEN]=Y,R[u][Ra.EOF_TOKEN]=Q,R[d]=Object.create(null),R[d][Ra.CHARACTER_TOKEN]=R[d][Ra.NULL_CHARACTER_TOKEN]=X,R[d][Ra.WHITESPACE_CHARACTER_TOKEN]=z,R[d][Ra.COMMENT_TOKEN]=G,R[d][Ra.DOCTYPE_TOKEN]=H,R[d][Ra.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.BODY?(e._insertElement(r,n.HTML),e.framesetOk=!1,e.insertionMode=p):a===t.FRAMESET?(e._insertElement(r,n.HTML),e.insertionMode=N):a===t.BASE||a===t.BASEFONT||a===t.BGSOUND||a===t.LINK||a===t.META||a===t.NOFRAMES||a===t.SCRIPT||a===t.STYLE||a===t.TEMPLATE||a===t.TITLE?(e.openElements.push(e.headElement),W(e,r),e.openElements.remove(e.headElement)):a!==t.HEAD&&X(e,r)},R[d][Ra.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.BODY||r===t.HTML||r===t.BR?X(e,n):r===t.TEMPLATE&&Y(e,n)},R[d][Ra.EOF_TOKEN]=X,R[p]=Object.create(null),R[p][Ra.CHARACTER_TOKEN]=J,R[p][Ra.NULL_CHARACTER_TOKEN]=H,R[p][Ra.WHITESPACE_CHARACTER_TOKEN]=Z,R[p][Ra.COMMENT_TOKEN]=G,R[p][Ra.DOCTYPE_TOKEN]=H,R[p][Ra.START_TAG_TOKEN]=ue,R[p][Ra.END_TAG_TOKEN]=ge,R[p][Ra.EOF_TOKEN]=he,R[m]=Object.create(null),R[m][Ra.CHARACTER_TOKEN]=R[m][Ra.NULL_CHARACTER_TOKEN]=R[m][Ra.WHITESPACE_CHARACTER_TOKEN]=z,R[m][Ra.COMMENT_TOKEN]=R[m][Ra.DOCTYPE_TOKEN]=R[m][Ra.START_TAG_TOKEN]=H,R[m][Ra.END_TAG_TOKEN]=function(e,n){n.tagName===t.SCRIPT&&(e.pendingScript=e.openElements.current);e.openElements.pop(),e.insertionMode=e.originalInsertionMode},R[m][Ra.EOF_TOKEN]=function(e,t){e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e._processToken(t)},R[g]=Object.create(null),R[g][Ra.CHARACTER_TOKEN]=R[g][Ra.NULL_CHARACTER_TOKEN]=R[g][Ra.WHITESPACE_CHARACTER_TOKEN]=fe,R[g][Ra.COMMENT_TOKEN]=G,R[g][Ra.DOCTYPE_TOKEN]=H,R[g][Ra.START_TAG_TOKEN]=_e,R[g][Ra.END_TAG_TOKEN]=Ee,R[g][Ra.EOF_TOKEN]=he,R[h]=Object.create(null),R[h][Ra.CHARACTER_TOKEN]=function(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0},R[h][Ra.NULL_CHARACTER_TOKEN]=H,R[h][Ra.WHITESPACE_CHARACTER_TOKEN]=function(e,t){e.pendingCharacterTokens.push(t)},R[h][Ra.COMMENT_TOKEN]=R[h][Ra.DOCTYPE_TOKEN]=R[h][Ra.START_TAG_TOKEN]=R[h][Ra.END_TAG_TOKEN]=R[h][Ra.EOF_TOKEN]=function(e,t){var n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)Te(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t)},R[f]=Object.create(null),R[f][Ra.CHARACTER_TOKEN]=J,R[f][Ra.NULL_CHARACTER_TOKEN]=H,R[f][Ra.WHITESPACE_CHARACTER_TOKEN]=Z,R[f][Ra.COMMENT_TOKEN]=G,R[f][Ra.DOCTYPE_TOKEN]=H,R[f][Ra.START_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.CAPTION||r===t.COL||r===t.COLGROUP||r===t.TBODY||r===t.TD||r===t.TFOOT||r===t.TH||r===t.THEAD||r===t.TR?e.openElements.hasInTableScope(t.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=g,e._processToken(n)):ue(e,n)},R[f][Ra.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.CAPTION||r===t.TABLE?e.openElements.hasInTableScope(t.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=g,r===t.TABLE&&e._processToken(n)):r!==t.BODY&&r!==t.COL&&r!==t.COLGROUP&&r!==t.HTML&&r!==t.TBODY&&r!==t.TD&&r!==t.TFOOT&&r!==t.TH&&r!==t.THEAD&&r!==t.TR&&ge(e,n)},R[f][Ra.EOF_TOKEN]=he,R[_]=Object.create(null),R[_][Ra.CHARACTER_TOKEN]=R[_][Ra.NULL_CHARACTER_TOKEN]=be,R[_][Ra.WHITESPACE_CHARACTER_TOKEN]=z,R[_][Ra.COMMENT_TOKEN]=G,R[_][Ra.DOCTYPE_TOKEN]=H,R[_][Ra.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.COL?e._appendElement(r,n.HTML):a===t.TEMPLATE?W(e,r):be(e,r)},R[_][Ra.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.COLGROUP?e.openElements.currentTagName===t.COLGROUP&&(e.openElements.pop(),e.insertionMode=g):r===t.TEMPLATE?Y(e,n):r!==t.COL&&be(e,n)},R[_][Ra.EOF_TOKEN]=he,R[E]=Object.create(null),R[E][Ra.CHARACTER_TOKEN]=R[E][Ra.NULL_CHARACTER_TOKEN]=R[E][Ra.WHITESPACE_CHARACTER_TOKEN]=fe,R[E][Ra.COMMENT_TOKEN]=G,R[E][Ra.DOCTYPE_TOKEN]=H,R[E][Ra.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.TR?(e.openElements.clearBackToTableBodyContext(),e._insertElement(r,n.HTML),e.insertionMode=T):a===t.TH||a===t.TD?(e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(t.TR),e.insertionMode=T,e._processToken(r)):a===t.CAPTION||a===t.COL||a===t.COLGROUP||a===t.TBODY||a===t.TFOOT||a===t.THEAD?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=g,e._processToken(r)):_e(e,r)},R[E][Ra.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.TBODY||r===t.TFOOT||r===t.THEAD?e.openElements.hasInTableScope(r)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=g):r===t.TABLE?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=g,e._processToken(n)):(r!==t.BODY&&r!==t.CAPTION&&r!==t.COL&&r!==t.COLGROUP||r!==t.HTML&&r!==t.TD&&r!==t.TH&&r!==t.TR)&&Ee(e,n)},R[E][Ra.EOF_TOKEN]=he,R[T]=Object.create(null),R[T][Ra.CHARACTER_TOKEN]=R[T][Ra.NULL_CHARACTER_TOKEN]=R[T][Ra.WHITESPACE_CHARACTER_TOKEN]=fe,R[T][Ra.COMMENT_TOKEN]=G,R[T][Ra.DOCTYPE_TOKEN]=H,R[T][Ra.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.TH||a===t.TD?(e.openElements.clearBackToTableRowContext(),e._insertElement(r,n.HTML),e.insertionMode=b,e.activeFormattingElements.insertMarker()):a===t.CAPTION||a===t.COL||a===t.COLGROUP||a===t.TBODY||a===t.TFOOT||a===t.THEAD||a===t.TR?e.openElements.hasInTableScope(t.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=E,e._processToken(r)):_e(e,r)},R[T][Ra.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.TR?e.openElements.hasInTableScope(t.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=E):r===t.TABLE?e.openElements.hasInTableScope(t.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=E,e._processToken(n)):r===t.TBODY||r===t.TFOOT||r===t.THEAD?(e.openElements.hasInTableScope(r)||e.openElements.hasInTableScope(t.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=E,e._processToken(n)):(r!==t.BODY&&r!==t.CAPTION&&r!==t.COL&&r!==t.COLGROUP||r!==t.HTML&&r!==t.TD&&r!==t.TH)&&Ee(e,n)},R[T][Ra.EOF_TOKEN]=he,R[b]=Object.create(null),R[b][Ra.CHARACTER_TOKEN]=J,R[b][Ra.NULL_CHARACTER_TOKEN]=H,R[b][Ra.WHITESPACE_CHARACTER_TOKEN]=Z,R[b][Ra.COMMENT_TOKEN]=G,R[b][Ra.DOCTYPE_TOKEN]=H,R[b][Ra.START_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.CAPTION||r===t.COL||r===t.COLGROUP||r===t.TBODY||r===t.TD||r===t.TFOOT||r===t.TH||r===t.THEAD||r===t.TR?(e.openElements.hasInTableScope(t.TD)||e.openElements.hasInTableScope(t.TH))&&(e._closeTableCell(),e._processToken(n)):ue(e,n)},R[b][Ra.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.TD||r===t.TH?e.openElements.hasInTableScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=T):r===t.TABLE||r===t.TBODY||r===t.TFOOT||r===t.THEAD||r===t.TR?e.openElements.hasInTableScope(r)&&(e._closeTableCell(),e._processToken(n)):r!==t.BODY&&r!==t.CAPTION&&r!==t.COL&&r!==t.COLGROUP&&r!==t.HTML&&ge(e,n)},R[b][Ra.EOF_TOKEN]=he,R[v]=Object.create(null),R[v][Ra.CHARACTER_TOKEN]=z,R[v][Ra.NULL_CHARACTER_TOKEN]=H,R[v][Ra.WHITESPACE_CHARACTER_TOKEN]=z,R[v][Ra.COMMENT_TOKEN]=G,R[v][Ra.DOCTYPE_TOKEN]=H,R[v][Ra.START_TAG_TOKEN]=ve,R[v][Ra.END_TAG_TOKEN]=Ae,R[v][Ra.EOF_TOKEN]=he,R[A]=Object.create(null),R[A][Ra.CHARACTER_TOKEN]=z,R[A][Ra.NULL_CHARACTER_TOKEN]=H,R[A][Ra.WHITESPACE_CHARACTER_TOKEN]=z,R[A][Ra.COMMENT_TOKEN]=G,R[A][Ra.DOCTYPE_TOKEN]=H,R[A][Ra.START_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.CAPTION||r===t.TABLE||r===t.TBODY||r===t.TFOOT||r===t.THEAD||r===t.TR||r===t.TD||r===t.TH?(e.openElements.popUntilTagNamePopped(t.SELECT),e._resetInsertionMode(),e._processToken(n)):ve(e,n)},R[A][Ra.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.CAPTION||r===t.TABLE||r===t.TBODY||r===t.TFOOT||r===t.THEAD||r===t.TR||r===t.TD||r===t.TH?e.openElements.hasInTableScope(r)&&(e.openElements.popUntilTagNamePopped(t.SELECT),e._resetInsertionMode(),e._processToken(n)):Ae(e,n)},R[A][Ra.EOF_TOKEN]=he,R[S]=Object.create(null),R[S][Ra.CHARACTER_TOKEN]=J,R[S][Ra.NULL_CHARACTER_TOKEN]=H,R[S][Ra.WHITESPACE_CHARACTER_TOKEN]=Z,R[S][Ra.COMMENT_TOKEN]=G,R[S][Ra.DOCTYPE_TOKEN]=H,R[S][Ra.START_TAG_TOKEN]=function(e,n){var r=n.tagName;if(r===t.BASE||r===t.BASEFONT||r===t.BGSOUND||r===t.LINK||r===t.META||r===t.NOFRAMES||r===t.SCRIPT||r===t.STYLE||r===t.TEMPLATE||r===t.TITLE)W(e,n);else{var a=w[r]||p;e._popTmplInsertionMode(),e._pushTmplInsertionMode(a),e.insertionMode=a,e._processToken(n)}},R[S][Ra.END_TAG_TOKEN]=function(e,n){n.tagName===t.TEMPLATE&&Y(e,n)},R[S][Ra.EOF_TOKEN]=Se,R[y]=Object.create(null),R[y][Ra.CHARACTER_TOKEN]=R[y][Ra.NULL_CHARACTER_TOKEN]=ye,R[y][Ra.WHITESPACE_CHARACTER_TOKEN]=Z,R[y][Ra.COMMENT_TOKEN]=function(e,t){e._appendCommentNode(t,e.openElements.items[0])},R[y][Ra.DOCTYPE_TOKEN]=H,R[y][Ra.START_TAG_TOKEN]=function(e,n){n.tagName===t.HTML?ue(e,n):ye(e,n)},R[y][Ra.END_TAG_TOKEN]=function(e,n){n.tagName===t.HTML?e.fragmentContext||(e.insertionMode=O):ye(e,n)},R[y][Ra.EOF_TOKEN]=K,R[N]=Object.create(null),R[N][Ra.CHARACTER_TOKEN]=R[N][Ra.NULL_CHARACTER_TOKEN]=H,R[N][Ra.WHITESPACE_CHARACTER_TOKEN]=z,R[N][Ra.COMMENT_TOKEN]=G,R[N][Ra.DOCTYPE_TOKEN]=H,R[N][Ra.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.FRAMESET?e._insertElement(r,n.HTML):a===t.FRAME?e._appendElement(r,n.HTML):a===t.NOFRAMES&&W(e,r)},R[N][Ra.END_TAG_TOKEN]=function(e,n){n.tagName!==t.FRAMESET||e.openElements.isRootHtmlElementCurrent()||(e.openElements.pop(),e.fragmentContext||e.openElements.currentTagName===t.FRAMESET||(e.insertionMode=C))},R[N][Ra.EOF_TOKEN]=K,R[C]=Object.create(null),R[C][Ra.CHARACTER_TOKEN]=R[C][Ra.NULL_CHARACTER_TOKEN]=H,R[C][Ra.WHITESPACE_CHARACTER_TOKEN]=z,R[C][Ra.COMMENT_TOKEN]=G,R[C][Ra.DOCTYPE_TOKEN]=H,R[C][Ra.START_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.HTML?ue(e,n):r===t.NOFRAMES&&W(e,n)},R[C][Ra.END_TAG_TOKEN]=function(e,n){n.tagName===t.HTML&&(e.insertionMode=M)},R[C][Ra.EOF_TOKEN]=K,R[O]=Object.create(null),R[O][Ra.CHARACTER_TOKEN]=Ne,R[O][Ra.NULL_CHARACTER_TOKEN]=Ne,R[O][Ra.WHITESPACE_CHARACTER_TOKEN]=Z,R[O][Ra.COMMENT_TOKEN]=q,R[O][Ra.DOCTYPE_TOKEN]=H,R[O][Ra.START_TAG_TOKEN]=function(e,n){n.tagName===t.HTML?ue(e,n):Ne(e,n)},R[O][Ra.END_TAG_TOKEN]=Ne,R[O][Ra.EOF_TOKEN]=K,R[M]=Object.create(null),R[M][Ra.CHARACTER_TOKEN]=R[M][Ra.NULL_CHARACTER_TOKEN]=H,R[M][Ra.WHITESPACE_CHARACTER_TOKEN]=Z,R[M][Ra.COMMENT_TOKEN]=q,R[M][Ra.DOCTYPE_TOKEN]=H,R[M][Ra.START_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.HTML?ue(e,n):r===t.NOFRAMES&&W(e,n)},R[M][Ra.END_TAG_TOKEN]=H,R[M][Ra.EOF_TOKEN]=K;var D=e.exports=function(e){this.options=function(e,t){return[e,t=t||Object.create(null)].reduce(function(e,t){return Object.keys(t).forEach(function(n){e[n]=t[n]}),e},Object.create(null))}(a,e),this.treeAdapter=this.options.treeAdapter,this.pendingScript=null,this.options.locationInfo&&new jo(this)};function I(e,t){var n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagName)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):me(e,t),n}function k(e,t){for(var n=null,r=e.openElements.stackTop;r>=0;r--){var a=e.openElements.items[r];if(a===t.element)break;e._isSpecialElement(a)&&(n=a)}return n||(e.openElements.popUntilElementPopped(t.element),e.activeFormattingElements.removeEntry(t)),n}function L(e,t,n){for(var r=t,a=e.openElements.getCommonAncestor(t),i=0,o=a;o!==n;i++,o=a){a=e.openElements.getCommonAncestor(o);var s=e.activeFormattingElements.getElementEntry(o),c=s&&i>=l;!s||c?(c&&e.activeFormattingElements.removeEntry(s),e.openElements.remove(o)):(o=P(e,s),r===t&&(e.activeFormattingElements.bookmark=s),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(o,r),r=o)}return r}function P(e,t){var n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}function B(e,r,a){if(e._isElementCausesFosterParenting(r))e._fosterParentElement(a);else{var i=e.treeAdapter.getTagName(r),o=e.treeAdapter.getNamespaceURI(r);i===t.TEMPLATE&&o===n.HTML&&(r=e.treeAdapter.getTemplateContent(r)),e.treeAdapter.appendChild(r,a)}}function F(e,t,n){var r=e.treeAdapter.getNamespaceURI(n.element),a=n.token,i=e.treeAdapter.createElement(a.tagName,r,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,n.token),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i)}function U(e,t){for(var n,r=0;r<o&&(n=I(e,t));r++){var a=k(e,n);if(!a)break;e.activeFormattingElements.bookmark=n;var i=L(e,a,n.element),l=e.openElements.getCommonAncestor(n.element);e.treeAdapter.detachNode(i),B(e,l,i),F(e,a,n)}}function H(){}function G(e,t){e._appendCommentNode(t,e.openElements.currentTmplContent||e.openElements.current)}function q(e,t){e._appendCommentNode(t,e.document)}function z(e,t){e._insertCharacters(t)}function K(e){e.stopped=!0}function j(e,t){e.treeAdapter.setDocumentMode(e.document,Da.DOCUMENT_MODE.QUIRKS),e.insertionMode=s,e._processToken(t)}function V(e,t){e._insertFakeRootElement(),e.insertionMode=c,e._processToken(t)}function $(e,n){e._insertFakeElement(t.HEAD),e.headElement=e.openElements.current,e.insertionMode=u,e._processToken(n)}function W(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.BASE||a===t.BASEFONT||a===t.BGSOUND||a===t.LINK||a===t.META?e._appendElement(r,n.HTML):a===t.TITLE?e._switchToTextParsing(r,Ra.MODE.RCDATA):a===t.NOSCRIPT||a===t.NOFRAMES||a===t.STYLE?e._switchToTextParsing(r,Ra.MODE.RAWTEXT):a===t.SCRIPT?e._switchToTextParsing(r,Ra.MODE.SCRIPT_DATA):a===t.TEMPLATE?(e._insertTemplate(r,n.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=S,e._pushTmplInsertionMode(S)):a!==t.HEAD&&Q(e,r)}function Y(e,n){var r=n.tagName;r===t.HEAD?(e.openElements.pop(),e.insertionMode=d):r===t.BODY||r===t.BR||r===t.HTML?Q(e,n):r===t.TEMPLATE&&e.openElements.tmplCount>0&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode())}function Q(e,t){e.openElements.pop(),e.insertionMode=d,e._processToken(t)}function X(e,n){e._insertFakeElement(t.BODY),e.insertionMode=p,e._processToken(n)}function Z(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function J(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function ee(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML)}function te(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function ne(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,n.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function re(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,n.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function ae(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,n.HTML),e.framesetOk=!1}function ie(e,t){e._appendElement(t,n.HTML)}function oe(e,t){e._switchToTextParsing(t,Ra.MODE.RAWTEXT)}function le(e,r){e.openElements.currentTagName===t.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(r,n.HTML)}function se(e,r){e.openElements.hasInScope(t.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(r,n.HTML)}function ce(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,n.HTML)}function ue(e,a){var o=a.tagName;switch(o.length){case 1:o===t.I||o===t.S||o===t.B||o===t.U?ne(e,a):o===t.P?ee(e,a):o===t.A?function(e,r){var a=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.A);a&&(U(e,r),e.openElements.remove(a.element),e.activeFormattingElements.removeEntry(a)),e._reconstructActiveFormattingElements(),e._insertElement(r,n.HTML),e.activeFormattingElements.pushElement(e.openElements.current,r)}(e,a):ce(e,a);break;case 2:o===t.DL||o===t.OL||o===t.UL?ee(e,a):o===t.H1||o===t.H2||o===t.H3||o===t.H4||o===t.H5||o===t.H6?function(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement();var a=e.openElements.currentTagName;a!==t.H1&&a!==t.H2&&a!==t.H3&&a!==t.H4&&a!==t.H5&&a!==t.H6||e.openElements.pop(),e._insertElement(r,n.HTML)}(e,a):o===t.LI||o===t.DD||o===t.DT?function(e,r){e.framesetOk=!1;for(var a=r.tagName,i=e.openElements.stackTop;i>=0;i--){var o=e.openElements.items[i],l=e.treeAdapter.getTagName(o),s=null;if(a===t.LI&&l===t.LI?s=t.LI:a!==t.DD&&a!==t.DT||l!==t.DD&&l!==t.DT||(s=l),s){e.openElements.generateImpliedEndTagsWithExclusion(s),e.openElements.popUntilTagNamePopped(s);break}if(l!==t.ADDRESS&&l!==t.DIV&&l!==t.P&&e._isSpecialElement(o))break}e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML)}(e,a):o===t.EM||o===t.TT?ne(e,a):o===t.BR?ae(e,a):o===t.HR?function(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e.openElements.currentTagName===t.MENUITEM&&e.openElements.pop(),e._appendElement(r,n.HTML),e.framesetOk=!1}(e,a):o===t.RB?se(e,a):o===t.RT||o===t.RP?function(e,r){e.openElements.hasInScope(t.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(t.RTC),e._insertElement(r,n.HTML)}(e,a):o!==t.TH&&o!==t.TD&&o!==t.TR&&ce(e,a);break;case 3:o===t.DIV||o===t.DIR||o===t.NAV?ee(e,a):o===t.PRE?te(e,a):o===t.BIG?ne(e,a):o===t.IMG||o===t.WBR?ae(e,a):o===t.XMP?function(e,n){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(n,Ra.MODE.RAWTEXT)}(e,a):o===t.SVG?function(e,t){e._reconstructActiveFormattingElements(),il.adjustTokenSVGAttrs(t),il.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,n.SVG):e._insertElement(t,n.SVG)}(e,a):o===t.RTC?se(e,a):o!==t.COL&&ce(e,a);break;case 4:o===t.HTML?function(e,t){0===e.openElements.tmplCount&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}(e,a):o===t.BASE||o===t.LINK||o===t.META?W(e,a):o===t.BODY?function(e,t){var n=e.openElements.tryPeekProperlyNestedBodyElement();n&&0===e.openElements.tmplCount&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}(e,a):o===t.MAIN?ee(e,a):o===t.FORM?function(e,r){var a=e.openElements.tmplCount>0;e.formElement&&!a||(e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML),a||(e.formElement=e.openElements.current))}(e,a):o===t.CODE||o===t.FONT?ne(e,a):o===t.NOBR?function(e,r){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(t.NOBR)&&(U(e,r),e._reconstructActiveFormattingElements()),e._insertElement(r,n.HTML),e.activeFormattingElements.pushElement(e.openElements.current,r)}(e,a):o===t.AREA?ae(e,a):o===t.MATH?function(e,t){e._reconstructActiveFormattingElements(),il.adjustTokenMathMLAttrs(t),il.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,n.MATHML):e._insertElement(t,n.MATHML)}(e,a):o===t.MENU?function(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e.openElements.currentTagName===t.MENUITEM&&e.openElements.pop(),e._insertElement(r,n.HTML)}(e,a):o!==t.HEAD&&ce(e,a);break;case 5:o===t.STYLE||o===t.TITLE?W(e,a):o===t.ASIDE?ee(e,a):o===t.SMALL?ne(e,a):o===t.TABLE?function(e,r){e.treeAdapter.getDocumentMode(e.document)!==Da.DOCUMENT_MODE.QUIRKS&&e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML),e.framesetOk=!1,e.insertionMode=g}(e,a):o===t.EMBED?ae(e,a):o===t.INPUT?function(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,n.HTML);var a=Ra.getTokenAttr(t,r.TYPE);a&&a.toLowerCase()===i||(e.framesetOk=!1)}(e,a):o===t.PARAM||o===t.TRACK?ie(e,a):o===t.IMAGE?function(e,n){n.tagName=t.IMG,ae(e,n)}(e,a):o!==t.FRAME&&o!==t.TBODY&&o!==t.TFOOT&&o!==t.THEAD&&ce(e,a);break;case 6:o===t.SCRIPT?W(e,a):o===t.CENTER||o===t.FIGURE||o===t.FOOTER||o===t.HEADER||o===t.HGROUP?ee(e,a):o===t.BUTTON?function(e,r){e.openElements.hasInScope(t.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(r,n.HTML),e.framesetOk=!1}(e,a):o===t.STRIKE||o===t.STRONG?ne(e,a):o===t.APPLET||o===t.OBJECT?re(e,a):o===t.KEYGEN?ae(e,a):o===t.SOURCE?ie(e,a):o===t.IFRAME?function(e,t){e.framesetOk=!1,e._switchToTextParsing(t,Ra.MODE.RAWTEXT)}(e,a):o===t.SELECT?function(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,n.HTML),e.framesetOk=!1,e.insertionMode===g||e.insertionMode===f||e.insertionMode===E||e.insertionMode===T||e.insertionMode===b?e.insertionMode=A:e.insertionMode=v}(e,a):o===t.OPTION?le(e,a):ce(e,a);break;case 7:o===t.BGSOUND?W(e,a):o===t.DETAILS||o===t.ADDRESS||o===t.ARTICLE||o===t.SECTION||o===t.SUMMARY?ee(e,a):o===t.LISTING?te(e,a):o===t.MARQUEE?re(e,a):o===t.NOEMBED?oe(e,a):o!==t.CAPTION&&ce(e,a);break;case 8:o===t.BASEFONT?W(e,a):o===t.MENUITEM?function(e,r){e.openElements.currentTagName===t.MENUITEM&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(r,n.HTML)}(e,a):o===t.FRAMESET?function(e,t){var r=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&r&&(e.treeAdapter.detachNode(r),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,n.HTML),e.insertionMode=N)}(e,a):o===t.FIELDSET?ee(e,a):o===t.TEXTAREA?function(e,t){e._insertElement(t,n.HTML),e.skipNextNewLine=!0,e.tokenizer.state=Ra.MODE.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=m}(e,a):o===t.TEMPLATE?W(e,a):o===t.NOSCRIPT?oe(e,a):o===t.OPTGROUP?le(e,a):o!==t.COLGROUP&&ce(e,a);break;case 9:o===t.PLAINTEXT?function(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML),e.tokenizer.state=Ra.MODE.PLAINTEXT}(e,a):ce(e,a);break;case 10:o===t.BLOCKQUOTE||o===t.FIGCAPTION?ee(e,a):ce(e,a);break;default:ce(e,a)}}function de(e,t){var n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function pe(e,t){var n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function me(e,t){for(var n=t.tagName,r=e.openElements.stackTop;r>0;r--){var a=e.openElements.items[r];if(e.treeAdapter.getTagName(a)===n){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilElementPopped(a);break}if(e._isSpecialElement(a))break}}function ge(e,n){var r=n.tagName;switch(r.length){case 1:r===t.A||r===t.B||r===t.I||r===t.S||r===t.U?U(e,n):r===t.P?function(e){e.openElements.hasInButtonScope(t.P)||e._insertFakeElement(t.P),e._closePElement()}(e):me(e,n);break;case 2:r===t.DL||r===t.UL||r===t.OL?de(e,n):r===t.LI?function(e){e.openElements.hasInListItemScope(t.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(t.LI),e.openElements.popUntilTagNamePopped(t.LI))}(e):r===t.DD||r===t.DT?function(e,t){var n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}(e,n):r===t.H1||r===t.H2||r===t.H3||r===t.H4||r===t.H5||r===t.H6?function(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}(e):r===t.BR?function(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(t.BR),e.openElements.pop(),e.framesetOk=!1}(e):r===t.EM||r===t.TT?U(e,n):me(e,n);break;case 3:r===t.BIG?U(e,n):r===t.DIR||r===t.DIV||r===t.NAV?de(e,n):me(e,n);break;case 4:r===t.BODY?function(e){e.openElements.hasInScope(t.BODY)&&(e.insertionMode=y)}(e):r===t.HTML?function(e,n){e.openElements.hasInScope(t.BODY)&&(e.insertionMode=y,e._processToken(n))}(e,n):r===t.FORM?function(e){var n=e.openElements.tmplCount>0,r=e.formElement;n||(e.formElement=null),(r||n)&&e.openElements.hasInScope(t.FORM)&&(e.openElements.generateImpliedEndTags(),n?e.openElements.popUntilTagNamePopped(t.FORM):e.openElements.remove(r))}(e):r===t.CODE||r===t.FONT||r===t.NOBR?U(e,n):r===t.MAIN||r===t.MENU?de(e,n):me(e,n);break;case 5:r===t.ASIDE?de(e,n):r===t.SMALL?U(e,n):me(e,n);break;case 6:r===t.CENTER||r===t.FIGURE||r===t.FOOTER||r===t.HEADER||r===t.HGROUP?de(e,n):r===t.APPLET||r===t.OBJECT?pe(e,n):r===t.STRIKE||r===t.STRONG?U(e,n):me(e,n);break;case 7:r===t.ADDRESS||r===t.ARTICLE||r===t.DETAILS||r===t.SECTION||r===t.SUMMARY?de(e,n):r===t.MARQUEE?pe(e,n):me(e,n);break;case 8:r===t.FIELDSET?de(e,n):r===t.TEMPLATE?Y(e,n):me(e,n);break;case 10:r===t.BLOCKQUOTE||r===t.FIGCAPTION?de(e,n):me(e,n);break;default:me(e,n)}}function he(e,t){e.tmplInsertionModeStackTop>-1?Se(e,t):e.stopped=!0}function fe(e,n){var r=e.openElements.currentTagName;r===t.TABLE||r===t.TBODY||r===t.TFOOT||r===t.THEAD||r===t.TR?(e.pendingCharacterTokens=[],e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=h,e._processToken(n)):Te(e,n)}function _e(e,a){var o=a.tagName;switch(o.length){case 2:o===t.TD||o===t.TH||o===t.TR?function(e,n){e.openElements.clearBackToTableContext(),e._insertFakeElement(t.TBODY),e.insertionMode=E,e._processToken(n)}(e,a):Te(e,a);break;case 3:o===t.COL?function(e,n){e.openElements.clearBackToTableContext(),e._insertFakeElement(t.COLGROUP),e.insertionMode=_,e._processToken(n)}(e,a):Te(e,a);break;case 4:o===t.FORM?function(e,t){e.formElement||0!==e.openElements.tmplCount||(e._insertElement(t,n.HTML),e.formElement=e.openElements.current,e.openElements.pop())}(e,a):Te(e,a);break;case 5:o===t.TABLE?function(e,n){e.openElements.hasInTableScope(t.TABLE)&&(e.openElements.popUntilTagNamePopped(t.TABLE),e._resetInsertionMode(),e._processToken(n))}(e,a):o===t.STYLE?W(e,a):o===t.TBODY||o===t.TFOOT||o===t.THEAD?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,n.HTML),e.insertionMode=E}(e,a):o===t.INPUT?function(e,t){var a=Ra.getTokenAttr(t,r.TYPE);a&&a.toLowerCase()===i?e._appendElement(t,n.HTML):Te(e,t)}(e,a):Te(e,a);break;case 6:o===t.SCRIPT?W(e,a):Te(e,a);break;case 7:o===t.CAPTION?function(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,n.HTML),e.insertionMode=f}(e,a):Te(e,a);break;case 8:o===t.COLGROUP?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,n.HTML),e.insertionMode=_}(e,a):o===t.TEMPLATE?W(e,a):Te(e,a);break;default:Te(e,a)}}function Ee(e,n){var r=n.tagName;r===t.TABLE?e.openElements.hasInTableScope(t.TABLE)&&(e.openElements.popUntilTagNamePopped(t.TABLE),e._resetInsertionMode()):r===t.TEMPLATE?Y(e,n):r!==t.BODY&&r!==t.CAPTION&&r!==t.COL&&r!==t.COLGROUP&&r!==t.HTML&&r!==t.TBODY&&r!==t.TD&&r!==t.TFOOT&&r!==t.TH&&r!==t.THEAD&&r!==t.TR&&Te(e,n)}function Te(e,t){var n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,e._processTokenInBodyMode(t),e.fosterParentingEnabled=n}function be(e,n){e.openElements.currentTagName===t.COLGROUP&&(e.openElements.pop(),e.insertionMode=g,e._processToken(n))}function ve(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.OPTION?(e.openElements.currentTagName===t.OPTION&&e.openElements.pop(),e._insertElement(r,n.HTML)):a===t.OPTGROUP?(e.openElements.currentTagName===t.OPTION&&e.openElements.pop(),e.openElements.currentTagName===t.OPTGROUP&&e.openElements.pop(),e._insertElement(r,n.HTML)):a===t.INPUT||a===t.KEYGEN||a===t.TEXTAREA||a===t.SELECT?e.openElements.hasInSelectScope(t.SELECT)&&(e.openElements.popUntilTagNamePopped(t.SELECT),e._resetInsertionMode(),a!==t.SELECT&&e._processToken(r)):a!==t.SCRIPT&&a!==t.TEMPLATE||W(e,r)}function Ae(e,n){var r=n.tagName;if(r===t.OPTGROUP){var a=e.openElements.items[e.openElements.stackTop-1],i=a&&e.treeAdapter.getTagName(a);e.openElements.currentTagName===t.OPTION&&i===t.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagName===t.OPTGROUP&&e.openElements.pop()}else r===t.OPTION?e.openElements.currentTagName===t.OPTION&&e.openElements.pop():r===t.SELECT&&e.openElements.hasInSelectScope(t.SELECT)?(e.openElements.popUntilTagNamePopped(t.SELECT),e._resetInsertionMode()):r===t.TEMPLATE&&Y(e,n)}function Se(e,n){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(t.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode(),e._processToken(n)):e.stopped=!0}function ye(e,t){e.insertionMode=p,e._processToken(t)}function Ne(e,t){e.insertionMode=p,e._processToken(t)}D.prototype.parse=function(e){var t=this.treeAdapter.createDocument();return this._bootstrap(t,null),this.tokenizer.write(e,!0),this._runParsingLoop(null),t},D.prototype.parseFragment=function(e,r){r||(r=this.treeAdapter.createElement(t.TEMPLATE,n.HTML,[]));var a=this.treeAdapter.createElement("documentmock",n.HTML,[]);this._bootstrap(a,r),this.treeAdapter.getTagName(r)===t.TEMPLATE&&this._pushTmplInsertionMode(S),this._initTokenizerForFragmentParsing(),this._insertFakeRootElement(),this._resetInsertionMode(),this._findFormInFragmentContext(),this.tokenizer.write(e,!0),this._runParsingLoop(null);var i=this.treeAdapter.getFirstChild(a),o=this.treeAdapter.createDocumentFragment();return this._adoptNodes(i,o),o},D.prototype._bootstrap=function(e,t){this.tokenizer=new Ra(this.options),this.stopped=!1,this.insertionMode="INITIAL_MODE",this.originalInsertionMode="",this.document=e,this.fragmentContext=t,this.headElement=null,this.formElement=null,this.openElements=new Ia(this.document,this.treeAdapter),this.activeFormattingElements=new ka(this.treeAdapter),this.tmplInsertionModeStack=[],this.tmplInsertionModeStackTop=-1,this.currentTmplInsertionMode=null,this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1},D.prototype._runParsingLoop=function(e){for(;!this.stopped;){this._setupTokenizerCDATAMode();var t=this.tokenizer.getNextToken();if(t.type===Ra.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.type===Ra.WHITESPACE_CHARACTER_TOKEN&&"\n"===t.chars[0])){if(1===t.chars.length)continue;t.chars=t.chars.substr(1)}if(this._processInputToken(t),e&&this.pendingScript)break}},D.prototype.runParsingLoopForCurrentChunk=function(e,t){if(this._runParsingLoop(t),t&&this.pendingScript){var n=this.pendingScript;return this.pendingScript=null,void t(n)}e&&e()},D.prototype._setupTokenizerCDATAMode=function(){var e=this._getAdjustedCurrentElement();this.tokenizer.allowCDATA=e&&e!==this.document&&this.treeAdapter.getNamespaceURI(e)!==n.HTML&&!this._isIntegrationPoint(e)},D.prototype._switchToTextParsing=function(e,t){this._insertElement(e,n.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=m},D.prototype.switchToPlaintextParsing=function(){this.insertionMode=m,this.originalInsertionMode=p,this.tokenizer.state=Ra.MODE.PLAINTEXT},D.prototype._getAdjustedCurrentElement=function(){return 0===this.openElements.stackTop&&this.fragmentContext?this.fragmentContext:this.openElements.current},D.prototype._findFormInFragmentContext=function(){var e=this.fragmentContext;do{if(this.treeAdapter.getTagName(e)===t.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}while(e)},D.prototype._initTokenizerForFragmentParsing=function(){if(this.treeAdapter.getNamespaceURI(this.fragmentContext)===n.HTML){var e=this.treeAdapter.getTagName(this.fragmentContext);e===t.TITLE||e===t.TEXTAREA?this.tokenizer.state=Ra.MODE.RCDATA:e===t.STYLE||e===t.XMP||e===t.IFRAME||e===t.NOEMBED||e===t.NOFRAMES||e===t.NOSCRIPT?this.tokenizer.state=Ra.MODE.RAWTEXT:e===t.SCRIPT?this.tokenizer.state=Ra.MODE.SCRIPT_DATA:e===t.PLAINTEXT&&(this.tokenizer.state=Ra.MODE.PLAINTEXT)}},D.prototype._setDocumentType=function(e){this.treeAdapter.setDocumentType(this.document,e.name,e.publicId,e.systemId)},D.prototype._attachElementToTree=function(e){if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{var t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.appendChild(t,e)}},D.prototype._appendElement=function(e,t){var n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n)},D.prototype._insertElement=function(e,t){var n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n),this.openElements.push(n)},D.prototype._insertFakeElement=function(e){var t=this.treeAdapter.createElement(e,n.HTML,[]);this._attachElementToTree(t),this.openElements.push(t)},D.prototype._insertTemplate=function(e){var t=this.treeAdapter.createElement(e.tagName,n.HTML,e.attrs),r=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,r),this._attachElementToTree(t),this.openElements.push(t)},D.prototype._insertFakeRootElement=function(){var e=this.treeAdapter.createElement(t.HTML,n.HTML,[]);this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e)},D.prototype._appendCommentNode=function(e,t){var n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n)},D.prototype._insertCharacters=function(e){if(this._shouldFosterParentOnInsertion())this._fosterParentText(e.chars);else{var t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.insertText(t,e.chars)}},D.prototype._adoptNodes=function(e,t){for(;;){var n=this.treeAdapter.getFirstChild(e);if(!n)break;this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}},D.prototype._shouldProcessTokenInForeignContent=function(e){var r=this._getAdjustedCurrentElement();if(!r||r===this.document)return!1;var a=this.treeAdapter.getNamespaceURI(r);if(a===n.HTML)return!1;if(this.treeAdapter.getTagName(r)===t.ANNOTATION_XML&&a===n.MATHML&&e.type===Ra.START_TAG_TOKEN&&e.tagName===t.SVG)return!1;var i=e.type===Ra.CHARACTER_TOKEN||e.type===Ra.NULL_CHARACTER_TOKEN||e.type===Ra.WHITESPACE_CHARACTER_TOKEN;return(!(e.type===Ra.START_TAG_TOKEN&&e.tagName!==t.MGLYPH&&e.tagName!==t.MALIGNMARK)&&!i||!this._isIntegrationPoint(r,n.MATHML))&&((e.type!==Ra.START_TAG_TOKEN&&!i||!this._isIntegrationPoint(r,n.HTML))&&e.type!==Ra.EOF_TOKEN)},D.prototype._processToken=function(e){R[this.insertionMode][e.type](this,e)},D.prototype._processTokenInBodyMode=function(e){R[p][e.type](this,e)},D.prototype._processTokenInForeignContent=function(e){e.type===Ra.CHARACTER_TOKEN?function(e,t){e._insertCharacters(t),e.framesetOk=!1}(this,e):e.type===Ra.NULL_CHARACTER_TOKEN?function(e,t){t.chars=Ma.REPLACEMENT_CHARACTER,e._insertCharacters(t)}(this,e):e.type===Ra.WHITESPACE_CHARACTER_TOKEN?z(this,e):e.type===Ra.COMMENT_TOKEN?G(this,e):e.type===Ra.START_TAG_TOKEN?function(e,t){if(il.causesExit(t)&&!e.fragmentContext){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==n.HTML&&!e._isIntegrationPoint(e.openElements.current);)e.openElements.pop();e._processToken(t)}else{var r=e._getAdjustedCurrentElement(),a=e.treeAdapter.getNamespaceURI(r);a===n.MATHML?il.adjustTokenMathMLAttrs(t):a===n.SVG&&(il.adjustTokenSVGTagName(t),il.adjustTokenSVGAttrs(t)),il.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,a):e._insertElement(t,a)}}(this,e):e.type===Ra.END_TAG_TOKEN&&function(e,t){for(var r=e.openElements.stackTop;r>0;r--){var a=e.openElements.items[r];if(e.treeAdapter.getNamespaceURI(a)===n.HTML){e._processToken(t);break}if(e.treeAdapter.getTagName(a).toLowerCase()===t.tagName){e.openElements.popUntilElementPopped(a);break}}}(this,e)},D.prototype._processInputToken=function(e){this._shouldProcessTokenInForeignContent(e)?this._processTokenInForeignContent(e):this._processToken(e)},D.prototype._isIntegrationPoint=function(e,t){var n=this.treeAdapter.getTagName(e),r=this.treeAdapter.getNamespaceURI(e),a=this.treeAdapter.getAttrList(e);return il.isIntegrationPoint(n,r,a,t)},D.prototype._reconstructActiveFormattingElements=function(){var e=this.activeFormattingElements.length;if(e){var t=e,n=null;do{if(t--,(n=this.activeFormattingElements.entries[t]).type===ka.MARKER_ENTRY||this.openElements.contains(n.element)){t++;break}}while(t>0);for(var r=t;r<e;r++)n=this.activeFormattingElements.entries[r],this._insertElement(n.token,this.treeAdapter.getNamespaceURI(n.element)),n.element=this.openElements.current}},D.prototype._closeTableCell=function(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=T},D.prototype._closePElement=function(){this.openElements.generateImpliedEndTagsWithExclusion(t.P),this.openElements.popUntilTagNamePopped(t.P)},D.prototype._resetInsertionMode=function(){for(var e=this.openElements.stackTop,n=!1;e>=0;e--){var r=this.openElements.items[e];0===e&&(n=!0,this.fragmentContext&&(r=this.fragmentContext));var a=this.treeAdapter.getTagName(r),i=x[a];if(i){this.insertionMode=i;break}if(!(n||a!==t.TD&&a!==t.TH)){this.insertionMode=b;break}if(!n&&a===t.HEAD){this.insertionMode=u;break}if(a===t.SELECT){this._resetInsertionModeForSelect(e);break}if(a===t.TEMPLATE){this.insertionMode=this.currentTmplInsertionMode;break}if(a===t.HTML){this.insertionMode=this.headElement?d:c;break}if(n){this.insertionMode=p;break}}},D.prototype._resetInsertionModeForSelect=function(e){if(e>0)for(var n=e-1;n>0;n--){var r=this.openElements.items[n],a=this.treeAdapter.getTagName(r);if(a===t.TEMPLATE)break;if(a===t.TABLE)return void(this.insertionMode=A)}this.insertionMode=v},D.prototype._pushTmplInsertionMode=function(e){this.tmplInsertionModeStack.push(e),this.tmplInsertionModeStackTop++,this.currentTmplInsertionMode=e},D.prototype._popTmplInsertionMode=function(){this.tmplInsertionModeStack.pop(),this.tmplInsertionModeStackTop--,this.currentTmplInsertionMode=this.tmplInsertionModeStack[this.tmplInsertionModeStackTop]},D.prototype._isElementCausesFosterParenting=function(e){var n=this.treeAdapter.getTagName(e);return n===t.TABLE||n===t.TBODY||n===t.TFOOT||n===t.THEAD||n===t.TR},D.prototype._shouldFosterParentOnInsertion=function(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.current)},D.prototype._findFosterParentingLocation=function(){for(var e={parent:null,beforeElement:null},r=this.openElements.stackTop;r>=0;r--){var a=this.openElements.items[r],i=this.treeAdapter.getTagName(a),o=this.treeAdapter.getNamespaceURI(a);if(i===t.TEMPLATE&&o===n.HTML){e.parent=this.treeAdapter.getTemplateContent(a);break}if(i===t.TABLE){e.parent=this.treeAdapter.getParentNode(a),e.parent?e.beforeElement=a:e.parent=this.openElements.items[r-1];break}}return e.parent||(e.parent=this.openElements.items[0]),e},D.prototype._fosterParentElement=function(e){var t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)},D.prototype._fosterParentText=function(e){var t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertTextBefore(t.parent,e,t.beforeElement):this.treeAdapter.insertText(t.parent,e)},D.prototype._isSpecialElement=function(e){var t=this.treeAdapter.getTagName(e),n=this.treeAdapter.getNamespaceURI(e);return Da.SPECIAL_ELEMENTS[n][t]}})),ll=dl,sl={abbr:null,accept:256,acceptCharset:128,accessKey:128,action:null,allowFullScreen:9,allowTransparency:1,alt:null,as:null,async:8,autoComplete:128,autoFocus:8,autoPlay:8,capture:9,cellPadding:null,cellSpacing:null,challenge:1,charSet:1,checked:10,cite:null,className:129,cols:49,colSpan:null,command:null,content:null,contentEditable:null,contextMenu:1,controls:10,controlsList:128,coords:272,crossOrigin:null,data:null,dateTime:1,default:8,defer:8,dir:null,dirName:null,disabled:9,download:64,draggable:null,dropzone:128,encType:null,form:1,formAction:1,formEncType:1,formMethod:1,formNoValidate:8,formTarget:1,frameBorder:1,headers:128,height:49,hidden:9,high:16,href:null,hrefLang:null,htmlFor:128,httpEquiv:128,id:2,inputMode:1,is:1,isMap:8,keyParams:1,keyType:1,kind:null,label:null,lang:null,list:1,loop:10,low:16,manifest:1,marginHeight:16,marginWidth:16,max:null,maxLength:49,media:1,mediaGroup:null,menu:null,method:null,min:null,minLength:49,multiple:10,muted:10,name:null,nonce:null,noValidate:8,open:8,optimum:16,pattern:null,ping:128,placeholder:null,playsInline:8,poster:null,preload:null,profile:null,radioGroup:null,readOnly:10,referrerPolicy:null,rel:129,required:8,reversed:8,role:1,rows:49,rowSpan:48,sandbox:128,scope:null,scoped:8,scrolling:null,seamless:9,selected:10,shape:null,size:49,sizes:129,slot:null,sortable:8,sorted:128,span:48,spellCheck:null,src:null,srcDoc:2,srcLang:null,srcSet:257,start:16,step:null,style:null,summary:null,tabIndex:16,target:null,title:null,translate:null,type:null,typeMustMatch:8,useMap:null,value:2,volume:48,width:17,wmode:1,wrap:null,autoCapitalize:null,autoCorrect:null,autoSave:null,itemProp:129,itemScope:9,itemType:129,itemID:1,itemRef:129,property:null,results:null,security:1,unselectable:1,xmlLang:1,xmlBase:1},cl={xmlbase:"xml:base",xmllang:"xml:lang",classname:"class",htmlfor:"for",httpequiv:"http-equiv",acceptcharset:"accept-charset"},ul={};for(tl in dl.all=ul,sl)nl=ml(tl),nl=cl[nl]||nl,rl=sl[tl],ul[nl]={name:nl,propertyName:tl,mustUseAttribute:pl(rl,1),mustUseProperty:pl(rl,2),boolean:pl(rl,8),overloadedBoolean:pl(rl,64),numeric:pl(rl,16),positiveNumeric:pl(rl,48),commaSeparated:pl(rl,256),spaceSeparated:pl(rl,128)};function dl(e){var t=ml(e);return ul[cl[t]||t]}function pl(e,t){return(e&t)===t}function ml(e){return e.toLowerCase()}var gl=function(){var e=[].map.call(arguments,function(e){return e.trim()}).filter(function(e){return e.length}).join("-");return e.length?1===e.length?e.toLowerCase():/[_.\- ]+/.test(e)?(e=function(e){for(var t=!1,n=0;n<e.length;n++){var r=e.charAt(n);t&&/[a-zA-Z]/.test(r)&&r.toUpperCase()===r?(e=e.substr(0,n)+"-"+e.substr(n),t=!1,n++):t=r.toLowerCase()===r}return e}(e)).replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,function(e,t){return t.toUpperCase()}):e===e.toUpperCase()?e.toLowerCase():e[0]!==e[0].toLowerCase()?e[0].toLowerCase()+e.slice(1):e:""},hl=function(e){var t=function(e){var t=[],n=e.indexOf("\n");for(;-1!==n;)t.push(n+1),n=e.indexOf("\n",n+1);return t.push(e.length+1),t}(String(e));return{toPosition:function(e){return function(t){var n=-1,r=e.length;if(t<0)return{};for(;++n<r;)if(e[n]>t)return{line:n+1,column:t-(e[n-1]||0)+1,offset:t};return{}}}(t),toOffset:function(e){return function(t){var n=t&&t.line,r=t&&t.column;if(!isNaN(n)&&!isNaN(r)&&n-1 in e)return(e[n-2]||0)+r-1||0;return-1}}(t)}};var fl=function(e){var t,n,r,a,i=null,o=[],l=e||"",s="div",c=null,u=-1,d=l.length;t={type:"element",tagName:null,properties:{},children:[]},c=null;for(;++u<=d;)(n=l.charCodeAt(u))&&n!==_l&&n!==El||((r=l.slice(a,u))&&(c===_l?o.push(r):c===El?i=r:s=r),a=u+1,c=n);t.tagName=s,i&&(t.properties.id=i);0!==o.length&&(t.properties.className=o);return t},_l=".".charCodeAt(0),El="#".charCodeAt(0);var Tl=function(e){var t=S(String(e||vl));if(t===vl)return[];return t.split(Sl)},bl=function(e){return S(e.join(Al))},vl="",Al=" ",Sl=/[ \t\n\r\f]+/g;var yl={parse:Tl,stringify:bl},Nl=function(e){var t,n=[],r=String(e||xl),a=r.indexOf(Ol),i=0,o=!1;for(;!o;)-1===a&&(a=r.length,o=!0),!(t=S(r.slice(i,a)))&&o||n.push(t),i=a+1,a=r.indexOf(Ol,i);return n},Cl=function(e,t){var n=t||{},r=n.padLeft;e[e.length-1]===xl&&(e=e.concat(xl));return S(e.join((n.padRight?Ml:xl)+Ol+(r||void 0===r||null===r?Ml:xl)))},Ol=",",Ml=" ",xl="";var wl={parse:Nl,stringify:Cl},Rl=yl.parse,Dl=wl.parse,Il=function(e,t,n){var r,a=fl(e);t&&!n&&("string"==typeof t||"length"in t||function(e,t){var n=t.type;"string"==typeof n&&(n=n.toLowerCase());if("input"===e||!n||"string"!=typeof n)return!1;if("object"==typeof t.children&&"length"in t.children)return!0;if("button"===e)return"menu"!==n&&"submit"!==n&&"reset"!==n&&"button"!==n;return"value"in t}(a.tagName,t))&&(n=t,t=null);if(t)for(r in t)kl(a.properties,r,t[r]);(function e(t,n){var r,a;if(null!==n&&void 0!==n)if("string"!=typeof n&&"number"!=typeof n||(n={type:"text",value:String(n)}),"object"==typeof n&&"length"in n)for(r=-1,a=n.length;++r<a;)e(t,n[r]);else{if("object"!=typeof n||!("type"in n))throw new Error("Expected node, nodes, or string, got `"+n+"`");t.push(n)}})(a.children,n),"template"===a.tagName&&(a.content={type:"root",children:a.children},a.children=[]);return a};function kl(e,t,n){var r,a=ll(t)||{},i=n;if(null!==n&&void 0!==n&&n==n){if("style"===t){if("string"!=typeof n){for(r in i=[],n)i.push([r,n[r]].join(": "));i=i.join("; ")}}else a.spaceSeparated?(i="string"==typeof n?Rl(i):i,"class"===t&&e.className&&(i=e.className.concat(i))):a.commaSeparated&&(i="string"==typeof n?Dl(i):i);i=function e(t,n,r){var a=r;var i;var o;if("object"==typeof r&&"length"in r){for(o=r.length,i=-1,a=[];++i<o;)a[i]=e(t,n,r[i]);return a}t.numeric||t.positiveNumeric?isNaN(a)||""===a||(a=Number(a)):(t.boolean||t.overloadedBoolean)&&("string"!=typeof a||""!==a&&r.toLowerCase()!==n||(a=!0));return a}(a,t,i),e[a.propertyName||gl(t)]=i}}var Ll=function(e,t){var n,r=t||{};r.messages?(n=r,r={}):n=r.file;return Fl(e,{file:n,toPosition:n?hl(n).toPosition:null,verbose:r.verbose,location:!1})},Pl={}.hasOwnProperty,Bl={"#document":Ul,"#document-fragment":Ul,"#text":function(e){return{type:"text",value:e.value}},"#comment":function(e){return{type:"comment",value:e.data}},"#documentType":function(e){return{type:"doctype",name:e.name||"",public:e.publicId||null,system:e.systemId||null}}};function Fl(e,t){var n,r,a,i=Pl.call(Bl,e.nodeName)?Bl[e.nodeName]:Hl;return e.childNodes&&(n=function(e,t){var n=e.length,r=-1,a=[];for(;++r<n;)a[r]=Fl(e[r],t);return a}(e.childNodes,t)),r=i(e,n,t),e.__location&&t.toPosition&&(t.location=!0,(a=ql(e.__location,e,r,t))&&(r.position=a)),r}function Ul(e,t,n){var r,a="quirks"===e.mode||"limited-quirks"===e.mode,i={type:"root",children:t};return i.data={quirksMode:a},e.__location?n.toPosition&&(n.location=!0,r=e.__location):n.file&&n.location&&(r={startOffset:0,endOffset:String(n.file).length}),(r=r&&ql(r,e,i,n))&&(i.position=r),i}function Hl(e,t,n){for(var r,a,i,o={},l=e.attrs,s=l.length,c=-1;++c<s;)o[((r=l[c]).prefix?r.prefix+":":"")+r.name]=r.value;return a=Il(e.tagName,o,t),"template"===e.nodeName&&"content"in e&&(i=e.content,e.__location&&(i.__location={startOffset:e.__location.startTag.endOffset,endOffset:e.__location.endTag.startOffset}),a.content=Fl(e.content,n)),a}function Gl(e,t){return{start:e(t.startOffset),end:e(t.endOffset)}}function ql(e,t,n,r){var a,i,o=e.startOffset,l=e.endOffset,s=e.attrs||{},c={};for(a in s)c[(ll(a)||{}).propertyName||gl(a)]=Gl(r.toPosition,s[a]);if("element"!==n.type||e.endTag||((i=n.children[n.children.length-1])&&i.position?l=i.position.end?i.position.end.offset:null:e.startTag&&(l=e.startTag.endOffset)),r.verbose&&"element"===n.type&&(n.data={position:{opening:Gl(r.toPosition,e.startTag||e),closing:e.endTag?Gl(r.toPosition,e.endTag):null,properties:c}}),o="number"==typeof o?r.toPosition(o):null,l="number"==typeof l?r.toPosition(l):null,o||l)return{start:o,end:l}}var zl=f(function(e,t){var n=/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,r=/-[a-z\u00E0-\u00F6\u00F8-\u00FE]/g;e.exports=t=function(e){return e.replace(n,function(e){return"-"+e.toLowerCase()})},t.reverse=function(e){return e.replace(r,function(e){return e.slice(1).toUpperCase()})}}),Kl=(zl.reverse,Object.prototype.toString),jl=function(e){var t=Kl.call(e),n="[object Arguments]"===t;return n||(n="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===Kl.call(e.callee)),n},Vl=Object.prototype.hasOwnProperty,$l=Object.prototype.toString,Wl=Array.prototype.slice,Yl=Object.prototype.propertyIsEnumerable,Ql=!Yl.call({toString:null},"toString"),Xl=Yl.call(function(){},"prototype"),Zl=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],Jl=function(e){var t=e.constructor;return t&&t.prototype===e},es={$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},ts=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!es["$"+e]&&Vl.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{Jl(window[e])}catch(e){return!0}}catch(e){return!0}return!1}(),ns=function(e){var t=null!==e&&"object"==typeof e,n="[object Function]"===$l.call(e),r=jl(e),a=t&&"[object String]"===$l.call(e),i=[];if(!t&&!n&&!r)throw new TypeError("Object.keys called on a non-object");var o=Xl&&n;if(a&&e.length>0&&!Vl.call(e,0))for(var l=0;l<e.length;++l)i.push(String(l));if(r&&e.length>0)for(var s=0;s<e.length;++s)i.push(String(s));else for(var c in e)o&&"prototype"===c||!Vl.call(e,c)||i.push(String(c));if(Ql)for(var u=function(e){if("undefined"==typeof window||!ts)return Jl(e);try{return Jl(e)}catch(e){return!1}}(e),d=0;d<Zl.length;++d)u&&"constructor"===Zl[d]||!Vl.call(e,Zl[d])||i.push(Zl[d]);return i};ns.shim=function(){if(Object.keys){if(!function(){return 2===(Object.keys(arguments)||"").length}(1,2)){var e=Object.keys;Object.keys=function(t){return jl(t)?e(Wl.call(t)):e(t)}}}else Object.keys=ns;return Object.keys||ns};var rs=ns,as=Object.prototype.hasOwnProperty,is=Object.prototype.toString,os="function"==typeof Symbol&&"symbol"==typeof Symbol(),ls=Object.prototype.toString,ss=Object.defineProperty&&function(){var e={};try{for(var t in Object.defineProperty(e,"x",{enumerable:!1,value:e}),e)return!1;return e.x===e}catch(e){return!1}}(),cs=function(e,t,n,r){var a;t in e&&("function"!=typeof(a=r)||"[object Function]"!==ls.call(a)||!r())||(ss?Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n)},us=function(e,t){var n=arguments.length>2?arguments[2]:{},r=rs(t);os&&(r=r.concat(Object.getOwnPropertySymbols(t))),function(e,t,n){if("[object Function]"!==is.call(t))throw new TypeError("iterator must be a function");var r=e.length;if(r===+r)for(var a=0;a<r;a++)t.call(n,e[a],a,e);else for(var i in e)as.call(e,i)&&t.call(n,e[i],i,e)}(r,function(r){cs(e,r,t[r],n[r])})};us.supportsDescriptors=!!ss;var ds=us,ps=function(e){return e!=e},ms=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:ps};ds(ps,{getPolyfill:ms,implementation:ps,shim:function(){var e=ms();return ds(Number,{isNaN:e},{isNaN:function(){return Number.isNaN!==e}}),e}});var gs=ps,hs=function(e,t,n){var r,a;if("function"!=typeof e)throw new Error("h is not a function");r=function(e){var t=e&&e("div");return Boolean(t&&("_owner"in t||"_store"in t)&&null===t.key)}(e),a=function(e){try{return"VirtualNode"===e("div").type}catch(e){}return!1}(e),(null===n||void 0===n)&&(n=(!0===r||!0===a)&&"h-");if(l("root",t))t=1===t.children.length&&l("element",t.children[0])?t.children[0]:{type:"element",tagName:"div",properties:{},children:t.children};else if(!l("element",t))throw new Error("Expected root or element, not `"+(t&&t.type||t)+"`");return function e(t,n,r){var a=n.tagName;var i;var o;var s;var c;var u;var d;var p;var m;i=n.properties;o={};for(c in i)fs(o,c,i[c],r);!0===r.vdom&&(a=a.toUpperCase());!0===r.hyperscript&&o.id&&(a+="#"+o.id,delete o.id);!0!==r.hyperscript&&!0!==r.vdom||!o.className||(a+="."+yl.parse(o.className).join("."),delete o.className);"string"==typeof o.style&&(!0===r.vdom?(o.attributes||(o.attributes={}),o.attributes.style=o.style,delete o.style):!0===r.react&&(o.style=function(e){var t,n,r,a={},i=e.split(";"),o=i.length,l=-1;for(;++l<o;)t=i[l],-1!==(r=t.indexOf(":"))&&(n=_s(S(t.slice(0,r))),a[n]=S(t.slice(r+1)));return a}(o.style)));r.prefix&&(r.key++,o.key=r.prefix+r.key);u=[];s=n.children||[];d=s.length;p=-1;for(;++p<d;)m=s[p],l("element",m)?u.push(e(t,m,r)):l("text",m)&&u.push(m.value);return 0===u.length?t(a,o):t(a,o,u)}(e,t,{prefix:n,key:0,react:r,vdom:a,hyperscript:function(e){return Boolean(e&&e.context&&e.cleanup)}(e)})};function fs(e,t,n,r){var a,i=ll(t)||{};if(!(null===n||void 0===n||!1===n||gs(n)||i.boolean&&!n)){if(t=i.name||zl(t),null!==n&&"object"==typeof n&&"length"in n&&(n=(i.commaSeparated?wl:yl).stringify(n)),i.boolean&&!0===r.hyperscript&&(n=""),"class"!==i.name&&(i.mustUseAttribute||!i.name)&&(!0===r.vdom?a="attributes":!0===r.hyperscript&&(a="attrs"),a))return void 0===e[a]&&(e[a]={}),void(e[a][t]=n);e[i.propertyName||t]=n}}function _s(e){return"-ms-"===e.slice(0,4)&&(e="ms-"+e.slice(4)),e.replace(/-([a-z])/g,Es)}function Es(e,t){return t.toUpperCase()}const Ts="http://www.w3.org/1999/xhtml",bs="http://www.w3.org/1998/Math/MathML",vs="http://www.w3.org/2000/svg",As="http://www.w3.org/1999/xlink",Ss="http://www.w3.org/XML/1998/namespace",ys="http://www.w3.org/2000/xmlns/";var Ns={html:Ts,mathml:bs,svg:vs,xlink:As,xml:Ss,xmlns:ys},Cs=Object.freeze({html:Ts,mathml:bs,svg:vs,xlink:As,xml:Ss,xmlns:ys,default:Ns}),Os=function(e,t){var n=t||{};function r(t){var n=r.invalid,a=r.handlers;return t&&xs.call(t,e)&&(n=xs.call(a,t[e])?a[t[e]]:r.unknown),(n||Ms).apply(this,arguments)}return r.handlers=n.handlers||{},r.invalid=n.invalid,r.unknown=n.unknown,r},Ms=Function.prototype,xs={}.hasOwnProperty;var ws=Array.isArray,Rs=Object.prototype.toString,Ds=ws||function(e){return"[object Array]"===Rs.call(e)};var Is=function(e,t){var n=t||{},r=n.key,a=n.indices,i=n.gapless;"string"==typeof n&&(r=n);null==a&&(a=!0);return function(t){var n,o,l=[],s=t,c=-1;r&&(Ds(t)?s=null:t=s[r]);n=t.length;for(;++c<n;)o=a?e.call(this,t[c],c,s):e.call(this,t[c],s),i&&null==o||l.push(o);return l}};var ks=Cs&&Ns||Cs,Ls=qs,Ps={}.hasOwnProperty,Bs=Os("type"),Fs=Is(Bs,{key:"children",indices:!1}),Us=["__location","childNodes","content","parentNode","namespaceURI"];Bs.handlers.root=function(e){var t=e.data||{};return{nodeName:"#document",mode:Ps.call(t,"quirksMode")&&Boolean(t.quirksMode)?"quirks":"no-quirks",childNodes:Fs(e)}},Bs.handlers.element=function(t){var n=e(t);return n.children=[],hs(function(r,a){var i,o,l,s=[];for(l in a)o={name:l,value:a[l]},Ps.call(Gs,l)&&(o=e(o,Gs[l])),s.push(o);return"template"===r&&(delete(i=qs(n.content)).mode,i.nodeName="#document-fragment"),zs(t,{nodeName:t.tagName,tagName:t.tagName,attrs:s,childNodes:t.children?Fs(t):[]},i)},n)},Bs.handlers.text=function(e){return zs(e,{nodeName:"#text",value:e.value})},Bs.handlers.comment=function(e){return zs(e,{nodeName:"#comment",data:e.value})},Bs.handlers.doctype=function(e){return zs(e,{nodeName:"#documentType",name:e.name,publicId:e.public||null,systemId:e.system||null})};var Hs={math:ks.mathml,svg:ks.svg},Gs={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:ks.xlink},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:ks.xlink},"xlink:href":{prefix:"xlink",name:"href",namespace:ks.xlink},"xlink:role":{prefix:"xlink",name:"role",namespace:ks.xlink},"xlink:show":{prefix:"xlink",name:"show",namespace:ks.xlink},"xlink:title":{prefix:"xlink",name:"title",namespace:ks.xlink},"xlink:type":{prefix:"xlink",name:"type",namespace:ks.xlink},"xml:base":{prefix:"xml",name:"base",namespace:ks.xml},"xml:lang":{prefix:"xml",name:"lang",namespace:ks.xml},"xml:space":{prefix:"xml",name:"space",namespace:ks.xml},xmlns:{prefix:"",name:"xmlns",namespace:ks.xmlns},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:ks.xmlns}};function qs(e){return function e(t,n,r){var a=t.__location;var i=t.childNodes;var o=t.tagName;var l={};var s;var c;var u;for(u in t)-1===Us.indexOf(u)&&(l[u]=t[u]);Ps.call(Hs,o)&&(r=Hs[o]);Ps.call(l,"tagName")&&(l.namespaceURI=r);if(i)for(l.childNodes=i,s=i.length,c=-1;++c<s;)i[c]=e(i[c],l,r);"template"===o&&(l.content=e(t.content,null,r));n&&(l.parentNode=n);a&&(l.__location=a);return l}(Bs(e),null,ks.html)}function zs(e,t,n){return e.position&&e.position.start&&e.position.end&&(t.__location={line:e.position.start.line,col:e.position.start.column,startOffset:e.position.start.offset,endOffset:e.position.end.offset}),n&&(t.content=n),t}var Ks=["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","isindex","keygen","link","menuitem","meta","nextid","param","source","track","wbr"],js=Object.freeze({default:Ks}),Vs=js&&Ks||js,$s=function(e,t){var n,r,a=new ol({locationInfo:!0}),i=Os("type"),o=function(e){var t="root"===e.type?e.children[0]:e;if(t&&("doctype"===t.type||"html"===t.tagName))return tc;return nc}(e);if(i.handlers.root=function(e){u(e.children)},i.handlers.element=function(e){var t=-1!==Vs.indexOf(e.tagName);a._processToken(function(e){var t=_.start(e),n=_.end(e);return{type:Qs,tagName:e.tagName,selfClosing:!1,attrs:function(e){return Ls({type:"element",properties:e.properties}).attrs}(e),location:{line:t.line,col:t.column,startOffset:t.offset,endOffset:n.offset,attrs:{},startTag:{line:t.line,col:t.column,startOffset:t.offset,endOffset:n.offset}}}}(e),ks.html),u(e.children),t||a._processToken(function(e){var t=_.end(e);return{type:Xs,tagName:e.tagName,attrs:[],location:{line:t.line,col:t.column,startOffset:t.offset,endOffset:t.offset}}}(e))},i.handlers.text=function(e){var t=_.start(e);a._processToken({type:Ys,chars:e.value,location:{line:t.line,col:t.column,startOffset:t.offset,endOffset:_.end(e).offset}})},i.handlers.comment=function(e){var t=_.start(e);a._processToken({type:Js,data:e.value,location:{line:t.line,col:t.column,startOffset:t.offset,endOffset:_.end(e).offset}})},i.handlers.doctype=function(e){var t=Ls(e);a._processToken({type:ec,name:t.name,forceQuirks:!1,publicId:t.publicId,systemId:t.systemId})},i.handlers.raw=function(e){var t=_.start(e).offset;n.html=null,n.lastCharPos=-1,n.pos=-1,null!==t&&(n.__locTracker.droppedBufferSize=t),a.tokenizer.write(e.value),function(e){for(var t,n=e.tokenizer;!e.stopped;){if(e._setupTokenizerCDATAMode(),(t=n.getNextToken()).type===Zs){(t=n.currentCharacterToken||n.currentToken)&&e._processInputToken(t),n.currentToken=null,n.currentCharacterToken=null;break}e._processInputToken(t)}}(a)},i.unknown=rc,r=Ll(o===nc?(l={nodeName:"template",tagName:"template",attrs:[],namespaceURI:ks.html,childNodes:[]},s={nodeName:"documentmock",tagName:"documentmock",attrs:[],namespaceURI:ks.html,childNodes:[]},c={nodeName:"#document-fragment",childNodes:[]},a._bootstrap(s,l),a._pushTmplInsertionMode(Ws),a._initTokenizerForFragmentParsing(),a._insertFakeRootElement(),a._resetInsertionMode(),a._findFormInFragmentContext(),n=a.tokenizer.preprocessor,i(e),a._adoptNodes(s.childNodes[0],c),c):function(){var t=a.treeAdapter.createDocument();return a._bootstrap(t,null),i(e),t}(),t),"root"!==e.type&&1===r.children.length)return r.children[0];var l,s,c;return r;function u(e){var t=0,n=-1;for(e&&(t=e.length);++n<t;)i(e[n])}},Ws="IN_TEMPLATE_MODE",Ys="CHARACTER_TOKEN",Qs="START_TAG_TOKEN",Xs="END_TAG_TOKEN",Zs="HIBERNATION_TOKEN",Js="COMMENT_TOKEN",ec="DOCTYPE_TOKEN",tc="document",nc="fragment";function rc(e){throw new Error("Cannot compile `"+e.type+"` node")}var ac=function(){return $s};var ic=f(function(e,t){var n;n=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=63)}([function(e,t,n){var r=n(57),a=n.n(r),i=n(18),o=n.n(i),l=n(12),s=n(30),c=n(28),u=n(5),d=n(13),p=n(19),m=["\\imath","ı","\\jmath","ȷ","\\pounds","\\mathsterling","\\textsterling","£"],g=function(e,t,n){return c.a[n][e]&&c.a[n][e].replace&&(e=c.a[n][e].replace),{value:e,metrics:s.a.getCharacterMetrics(e,t,n)}},h=function(e,t,n,r,a){var i=g(e,t,n),o=i.metrics;e=i.value;var s=void 0;if(o){var c=o.italic;"text"===n&&(c=0),s=new l.a.symbolNode(e,o.height,o.depth,c,o.skew,o.width,a)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"'"),s=new l.a.symbolNode(e,0,0,0,0,0,a);if(r){s.maxFontSize=r.sizeMultiplier,r.style.isTight()&&s.classes.push("mtight");var u=r.getColor();u&&(s.style.color=u)}return s},f=function(e,t,n,r,a){if("mathord"===a){var i=_(e,t,n,r);return h(e,i.fontName,t,n,r.concat([i.fontClass]))}if("textord"===a){if("ams"===(c.a[t][e]&&c.a[t][e].font)){var o=b("amsrm",n.fontWeight,n.fontShape);return h(e,o,t,n,r.concat("amsrm",n.fontWeight,n.fontShape))}var l=b("textrm",n.fontWeight,n.fontShape);return h(e,l,t,n,r.concat(n.fontWeight,n.fontShape))}throw new Error("unexpected type: "+a+" in mathDefault")},_=function(e,t,n,r){return/[0-9]/.test(e.charAt(0))||u.a.contains(m,e)?{fontName:"Main-Italic",fontClass:"mainit"}:{fontName:"Math-Italic",fontClass:"mathit"}},E=function(e){var t=0,n=0,r=0,a=!0,i=!1,l=void 0;try{for(var s,c=o()(e.children);!(a=(s=c.next()).done);a=!0){var u=s.value;u.height>t&&(t=u.height),u.depth>n&&(n=u.depth),u.maxFontSize>r&&(r=u.maxFontSize)}}catch(e){i=!0,l=e}finally{try{!a&&c.return&&c.return()}finally{if(i)throw l}}e.height=t,e.depth=n,e.maxFontSize=r},T=function(e,t,n,r){var a=new l.a.span(e,t,n,r);return E(a),a},b=function(e,t,n){return v(e)+"-"+A(t,n)},v=function(e){var t="";switch(e){case"amsrm":t="AMS";break;case"textrm":t="Main";break;case"textsf":t="SansSerif";break;case"texttt":t="Typewriter";break;default:throw new Error("Invalid font provided: "+e)}return t},A=function(e,t){var n="";return"textbf"===e&&(n+="Bold"),"textit"===t&&(n+="Italic"),n||"Regular"},S={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},y={vec:["vec",.471,.714]};t.a={fontMap:S,makeSymbol:h,mathsym:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return n&&n.fontFamily&&"boldsymbol"===n.fontFamily&&g(e,"Main-Bold",t).metrics?h(e,"Main-Bold",t,n,r.concat(["mathbf"])):"\\"===e||"main"===c.a[t][e].font?h(e,"Main-Regular",t,n,r):h(e,"AMS-Regular",t,n,r.concat(["amsrm"]))},makeSpan:T,makeLineSpan:function(e,t){var n=t.fontMetrics().defaultRuleThickness,r=d.a.ruleSpan(e,n,t);return r.height=n,r.style.height=5*r.height+"em",r.maxFontSize=1,r},makeAnchor:function(e,t,n,r){var a=new l.a.anchor(e,t,n,r);return E(a),a},makeFragment:function(e){var t=new l.a.documentFragment(e);return E(t),t},makeVList:function(e,t){var n=function(e){if("individualShift"===e.positionType){for(var t=e.children,n=[t[0]],r=-t[0].shift-t[0].elem.depth,a=r,i=1;i<t.length;i++){var l=-t[i].shift-a-t[i].elem.depth,s=l-(t[i-1].elem.height+t[i-1].elem.depth);a+=l,n.push({type:"kern",size:s}),n.push(t[i])}return{children:n,depth:r}}var c=void 0;if("top"===e.positionType){var u=e.positionData,d=!0,p=!1,m=void 0;try{for(var g,h=o()(e.children);!(d=(g=h.next()).done);d=!0){var f=g.value;u-="kern"===f.type?f.size:f.elem.height+f.elem.depth}}catch(e){p=!0,m=e}finally{try{!d&&h.return&&h.return()}finally{if(p)throw m}}c=u}else if("bottom"===e.positionType)c=-e.positionData;else{var _=e.children[0];if("elem"!==_.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)c=-_.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");c=-_.elem.depth}}return{children:e.children,depth:c}}(e),r=n.children,a=n.depth,i=0,s=!0,c=!1,u=void 0;try{for(var d,p=o()(r);!(s=(d=p.next()).done);s=!0){var m=d.value;if("elem"===m.type){var g=m.elem;i=Math.max(i,g.maxFontSize,g.height)}}}catch(e){c=!0,u=e}finally{try{!s&&p.return&&p.return()}finally{if(c)throw u}}i+=2;var h=T(["pstrut"],[]);h.style.height=i+"em";var f=[],_=a,E=a,b=a,v=!0,A=!1,S=void 0;try{for(var y,N=o()(r);!(v=(y=N.next()).done);v=!0){var C=y.value;if("kern"===C.type)b+=C.size;else{var O=C.elem,M=C.wrapperClasses||[],x=C.wrapperStyle||{},w=T(M,[h,O],void 0,x);w.style.top=-i-b-O.depth+"em",C.marginLeft&&(w.style.marginLeft=C.marginLeft),C.marginRight&&(w.style.marginRight=C.marginRight),f.push(w),b+=O.height+O.depth}_=Math.min(_,b),E=Math.max(E,b)}}catch(e){A=!0,S=e}finally{try{!v&&N.return&&N.return()}finally{if(A)throw S}}var R=T(["vlist"],f);R.style.height=E+"em";var D=void 0;if(_<0){var I=T(["vlist"],[]);I.style.height=-_+"em";var k=T(["vlist-s"],[new l.a.symbolNode("​")]);D=[T(["vlist-r"],[R,k]),T(["vlist-r"],[I])]}else D=[T(["vlist-r"],[R])];var L=T(["vlist-t"],D);return 2===D.length&&L.classes.push("vlist-t2"),L.height=E,L.depth=-_,L},makeOrd:function(e,t,n){var r=e.mode,a=e.value,i=["mord"],o=t.fontFamily;if(o){var l=void 0,s=void 0;if("boldsymbol"===o){var c=function(e,t,n,r){return g(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(a,r);l=c.fontName,s=[c.fontClass]}else if("mathit"===o||u.a.contains(m,a)){var d=_(a,r,t,i);l=d.fontName,s=[d.fontClass]}else-1!==o.indexOf("math")||"math"===r?(l=S[o].fontName,s=[o]):(l=b(o,t.fontWeight,t.fontShape),s=[o,t.fontWeight,t.fontShape]);return g(a,l,r).metrics?h(a,l,r,t,i.concat(s)):f(a,r,t,i,n)}return f(a,r,t,i,n)},makeVerb:function(e,t){var n=e.value.body;return n=e.value.star?n.replace(/ /g,"␣"):n.replace(/ /g," ")},makeGlue:function(e,t){var n=T(["mord","rule"],[],t),r=Object(p.a)(e,t);return n.style.marginRight=r+"em",n},staticSvg:function(e,t){var n=a()(y[e],3),r=n[0],i=n[1],o=n[2],s=new l.a.pathNode(r),c=new l.a.svgNode([s],{width:i+"em",height:o+"em",style:"width:"+i+"em",viewBox:"0 0 "+1e3*i+" "+1e3*o,preserveAspectRatio:"xMinYMin"}),u=T(["overlay"],[c],t);return u.height=o,u.style.height=o+"em",u.style.width=i+"em",u},svgData:y,tryCombineChars:function(e){for(var t=0;t<e.length-1;t++)e[t].tryCombine(e[t+1])&&(e.splice(t+1,1),t--);return e},spacingFunctions:{"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}}}},function(e,t,n){var r=n(18),a=n.n(r),i=n(7),o=n.n(i),l=n(10),s=n.n(l),c=n(5),u=function(){function e(t,n){o()(this,e),this.type=t,this.attributes={},this.children=n||[]}return s()(e,[{key:"setAttribute",value:function(e,t){this.attributes[e]=t}},{key:"toNode",value:function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);var n=!0,r=!1,i=void 0;try{for(var o,l=a()(this.children);!(n=(o=l.next()).done);n=!0){var s=o.value;e.appendChild(s.toNode())}}catch(e){r=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(r)throw i}}return e}},{key:"toMarkup",value:function(){var e="<"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=c.a.escape(this.attributes[t]),e+='"');e+=">";for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+="</"+this.type+">"}},{key:"toText",value:function(){return"mspace"===this.type?"0.16667em"===this.attributes.width?" ":" ":this.children.map(function(e){return e.toText()}).join("")}}]),e}(),d=function(){function e(t){o()(this,e),this.text=t}return s()(e,[{key:"toNode",value:function(){return document.createTextNode(this.text)}},{key:"toMarkup",value:function(){return c.a.escape(this.text)}},{key:"toText",value:function(){return this.text}}]),e}();t.a={MathNode:u,TextNode:d}},function(e,t,n){n.d(t,"e",function(){return d}),n.d(t,"d",function(){return m}),n.d(t,"a",function(){return h}),n.d(t,"b",function(){return f}),t.c=function(e,t,n){var a=h(e,n),o=new i.a.MathNode("mrow",a),l=new i.a.MathNode("annotation",[new i.a.TextNode(t)]);l.setAttribute("encoding","application/x-tex");var s=new i.a.MathNode("semantics",[o,l]),c=new i.a.MathNode("math",[s]);return r.a.makeSpan(["katex-mathml"],[c])};var r=n(0),a=n(30),i=n(1),o=n(6),l=n(9),s=n(28),c=n(5),u=n(13),d=function(e,t){return s.a[t][e]&&s.a[t][e].replace&&(e=s.a[t][e].replace),new i.a.TextNode(e)},p=function(e,t){var n=t.fontFamily;if(!n)return null;var i=e.mode;if("mathit"===n)return"italic";if("boldsymbol"===n)return"bold-italic";var o=e.value;if(c.a.contains(["\\imath","\\jmath"],o))return null;s.a[i][o]&&s.a[i][o].replace&&(o=s.a[i][o].replace);var l=r.a.fontMap[n].fontName;return a.a.getCharacterMetrics(o,l,i)?r.a.fontMap[n].variant:null},m={},g={mi:"italic",mn:"normal",mtext:"normal"};m.mathord=function(e,t){var n=new i.a.MathNode("mi",[d(e.value,e.mode)]),r=p(e,t)||"italic";return r!==g[n.type]&&n.setAttribute("mathvariant",r),n},m.textord=function(e,t){var n=d(e.value,e.mode),r=p(e,t)||"normal",a=void 0;return a="text"===e.mode?new i.a.MathNode("mtext",[n]):/[0-9]/.test(e.value)?new i.a.MathNode("mn",[n]):"\\prime"===e.value?new i.a.MathNode("mo",[n]):new i.a.MathNode("mi",[n]),r!==g[a.type]&&a.setAttribute("mathvariant",r),a},m.bin=function(e,t){var n=new i.a.MathNode("mo",[d(e.value,e.mode)]),r=p(e,t);return"bold-italic"===r&&n.setAttribute("mathvariant",r),n},m.rel=function(e){return new i.a.MathNode("mo",[d(e.value,e.mode)])},m.open=function(e){return new i.a.MathNode("mo",[d(e.value,e.mode)])},m.close=function(e){return new i.a.MathNode("mo",[d(e.value,e.mode)])},m.inner=function(e){return new i.a.MathNode("mo",[d(e.value,e.mode)])},m.punct=function(e){var t=new i.a.MathNode("mo",[d(e.value,e.mode)]);return t.setAttribute("separator","true"),t},m.ordgroup=function(e,t){var n=h(e.value,t);return new i.a.MathNode("mrow",n)},m.supsub=function(e,t){var n=!1,r=void 0;e.value.base&&"horizBrace"===e.value.base.value.type&&!!e.value.sup===e.value.base.value.isOver&&(n=!0,r=e.value.base.value.isOver);var a=[f(e.value.base,t,!0)];e.value.sub&&a.push(f(e.value.sub,t,!0)),e.value.sup&&a.push(f(e.value.sup,t,!0));var o=void 0;if(n)o=r?"mover":"munder";else if(e.value.sub)if(e.value.sup){var s=e.value.base;o=s&&s.value.limits&&t.style===l.a.DISPLAY?"munderover":"msubsup"}else{var c=e.value.base;o=c&&c.value.limits&&t.style===l.a.DISPLAY?"munder":"msub"}else{var u=e.value.base;o=u&&u.value.limits&&t.style===l.a.DISPLAY?"mover":"msup"}return new i.a.MathNode(o,a)},m.spacing=function(e){var t=void 0;return"\\ "===e.value||"\\space"===e.value||" "===e.value||"~"===e.value?t=new i.a.MathNode("mtext",[new i.a.TextNode(" ")]):(t=new i.a.MathNode("mspace")).setAttribute("width",r.a.spacingFunctions[e.value].size),t},m.horizBrace=function(e,t){var n=u.a.mathMLnode(e.value.label);return new i.a.MathNode(e.value.isOver?"mover":"munder",[f(e.value.base,t),n])},m.xArrow=function(e,t){var n=u.a.mathMLnode(e.value.label),r=void 0,a=void 0;if(e.value.body){var o=f(e.value.body,t);e.value.below?(a=f(e.value.below,t),r=new i.a.MathNode("munderover",[n,a,o])):r=new i.a.MathNode("mover",[n,o])}else e.value.below?(a=f(e.value.below,t),r=new i.a.MathNode("munder",[n,a])):r=new i.a.MathNode("mover",[n]);return r},m.mclass=function(e,t){var n=h(e.value.value,t);return new i.a.MathNode("mstyle",n)},m.raisebox=function(e,t){var n=new i.a.MathNode("mpadded",[f(e.value.body,t)]),r=e.value.dy.value.number+e.value.dy.value.unit;return n.setAttribute("voffset",r),n};var h=function(e,t){for(var n=[],r=0;r<e.length;r++){var a=e[r];n.push(f(a,t))}return n},f=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e)return new i.a.MathNode("mrow");if(m[e.type]){var r=m[e.type](e,t);return n&&"mrow"===r.type&&1===r.children.length?r.children[0]:r}throw new o.a("Got group of unknown type: '"+e.type+"'")}},function(e,t,n){n.d(t,"a",function(){return i}),t.b=function(e){for(var t=e.type,n=e.names,o=e.props,l=e.handler,s=e.htmlBuilder,c=e.mathmlBuilder,u={numArgs:o.numArgs,argTypes:o.argTypes,greediness:void 0===o.greediness?1:o.greediness,allowedInText:!!o.allowedInText,allowedInMath:void 0===o.allowedInMath||o.allowedInMath,numOptionalArgs:o.numOptionalArgs||0,infix:!!o.infix,handler:l},d=0;d<n.length;++d)i[n[d]]=u;t&&(s&&(r.d[t]=s),c&&(a.d[t]=c))},n.d(t,"c",function(){return o});var r=n(4),a=n(2),i={};var o=function(e){return"ordgroup"===e.type?e.value:[e]}},function(e,t,n){n.d(t,"a",function(){return T}),n.d(t,"e",function(){return S}),n.d(t,"d",function(){return y}),n.d(t,"b",function(){return N}),t.c=function(e,t){e=JSON.parse(a()(e));var n=T(e,t,!0),r=h(["base"],n,t),i=h(["strut"]),o=h(["strut","bottom"]);i.style.height=r.height+"em",o.style.height=r.height+r.depth+"em",o.style.verticalAlign=-r.depth+"em";var l=h(["katex-html"],[i,o,r]);return l.setAttribute("aria-hidden","true"),l};var r=n(77),a=n.n(r),i=n(35),o=n.n(i),l=n(6),s=n(9),c=n(0),u=n(12),d=n(19),p=n(5),m=n(13),g=n(112),h=c.a.makeSpan,f=function(e,t){return e?p.a.contains(["mbin","mopen","mrel","mop","mpunct"],v(e,"right")):t},_=function(e,t){return e?p.a.contains(["mrel","mclose","mpunct"],v(e,"left")):t},E={display:s.a.DISPLAY,text:s.a.TEXT,script:s.a.SCRIPT,scriptscript:s.a.SCRIPTSCRIPT},T=function(e,t,n){for(var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[null,null],a=[],i=0;i<e.length;i++){var l=e[i],s=N(l,t);s instanceof u.a.documentFragment?a.push.apply(a,o()(s.children)):a.push(s)}for(var d=[r[0]&&h([r[0]],[],t)].concat(o()(a.filter(function(e){return e&&"mspace"!==e.classes[0]})),[r[1]&&h([r[1]],[],t)]),p=1;p<d.length-1;p++){var m=b(d[p],"left");"mbin"===m.classes[0]&&f(d[p-1],n)&&(m.classes[0]="mord");var T=b(d[p],"right");"mbin"===T.classes[0]&&_(d[p+1],n)&&(T.classes[0]="mord")}for(var S=[],y=0,C=0;C<a.length;C++)if(S.push(a[C]),"mspace"!==a[C].classes[0]&&y<d.length-1){0===y&&(S.pop(),C--);var O=v(d[y],"right"),M=v(d[y+1],"left");if(O&&M&&n){var x=A(d[y+1])?g.b[O][M]:g.a[O][M];if(x){var w=t;1===e.length&&("sizing"===e[0].type?w=t.havingSize(e[0].value.size):"styling"===e[0].type&&(w=t.havingStyle(E[e[0].value.style]))),S.push(c.a.makeGlue(x,w))}}y++}for(var R=0;R<S.length;R++)"̸"===S[R].value&&(S[R].style.position="absolute",S[R].style.paddingLeft="0.8em");return S},b=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"right";if((t instanceof u.a.documentFragment||t instanceof u.a.anchor)&&t.children.length){if("right"===n)return e(t.children[t.children.length-1]);if("left"===n)return e(t.children[0])}return t},v=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"right";return e?(e=b(e,t),p.a.contains(["mord","mop","mbin","mrel","mopen","mclose","mpunct","minner"],e.classes[0])?e.classes[0]:null):null},A=function(e){return e=b(e,"left"),p.a.contains(e.classes,"mtight")},S=function(e,t){var n=["nulldelimiter"].concat(e.baseSizingClasses());return h(t.concat(n))},y={mathord:function(e,t){return c.a.makeOrd(e,t,"mathord")},textord:function(e,t){return c.a.makeOrd(e,t,"textord")},bin:function(e,t){return c.a.mathsym(e.value,e.mode,t,["mbin"])},rel:function(e,t){return c.a.mathsym(e.value,e.mode,t,["mrel"])},open:function(e,t){return c.a.mathsym(e.value,e.mode,t,["mopen"])},close:function(e,t){return c.a.mathsym(e.value,e.mode,t,["mclose"])},inner:function(e,t){return c.a.mathsym(e.value,e.mode,t,["minner"])},punct:function(e,t){return c.a.mathsym(e.value,e.mode,t,["mpunct"])},ordgroup:function(e,t){return h(["mord"],T(e.value,t,!0),t)}};y.supsub=function(e,t){if(function(e,t){if(e.value.base){var n=e.value.base;return"op"===n.type?n.value.limits&&(t.style.size===s.a.DISPLAY.size||n.value.alwaysHandleSupSub):"accent"===n.type?p.a.isCharacterBox(n.value.base):"horizBrace"===n.type?!e.value.sub===n.value.isOver:null}return!1}(e,t))return y[e.value.base.type](e,t);var n=N(e.value.base,t),r=void 0,a=void 0,i=t.fontMetrics(),o=void 0,l=0,d=0;e.value.sup&&(o=t.havingStyle(t.style.sup()),r=N(e.value.sup,o,t),p.a.isCharacterBox(e.value.base)||(l=n.height-o.fontMetrics().supDrop*o.sizeMultiplier/t.sizeMultiplier)),e.value.sub&&(o=t.havingStyle(t.style.sub()),a=N(e.value.sub,o,t),p.a.isCharacterBox(e.value.base)||(d=n.depth+o.fontMetrics().subDrop*o.sizeMultiplier/t.sizeMultiplier));var m=void 0;m=t.style===s.a.DISPLAY?i.sup1:t.style.cramped?i.sup3:i.sup2;var g=t.sizeMultiplier,f=.5/i.ptPerEm/g+"em",_=void 0;if(e.value.sup)if(e.value.sub){l=Math.max(l,m,r.depth+.25*i.xHeight),d=Math.max(d,i.sub2);var E=i.defaultRuleThickness;if(l-r.depth-(a.height-d)<4*E){d=4*E-(l-r.depth)+a.height;var T=.8*i.xHeight-(l-r.depth);T>0&&(l+=T,d-=T)}var b=[{type:"elem",elem:a,shift:d,marginRight:f},{type:"elem",elem:r,shift:-l,marginRight:f}];n instanceof u.a.symbolNode&&(b[0].marginLeft=-n.italic+"em"),_=c.a.makeVList({positionType:"individualShift",children:b},t)}else l=Math.max(l,m,r.depth+.25*i.xHeight),_=c.a.makeVList({positionType:"shift",positionData:-l,children:[{type:"elem",elem:r,marginRight:f}]},t);else{d=Math.max(d,i.sub1,a.height-.8*i.xHeight);var A=[{type:"elem",elem:a,marginRight:f}];n instanceof u.a.symbolNode&&(A[0].marginLeft=-n.italic+"em"),_=c.a.makeVList({positionType:"shift",positionData:d,children:A},t)}var S=v(n)||"mord";return h([S],[n,h(["msupsub"],[_])],t)},y.spacing=function(e,t){return"\\ "===e.value||"\\space"===e.value||" "===e.value||"~"===e.value?"text"===e.mode?c.a.makeOrd(e,t,"textord"):h(["mspace"],[c.a.mathsym(e.value,e.mode,t)],t):h(["mspace",c.a.spacingFunctions[e.value].className],[],t)},y.horizBrace=function(e,t){var n=t.style,r="supsub"===e.type,a=void 0,i=void 0;r&&(e.value.sup?(i=t.havingStyle(n.sup()),a=N(e.value.sup,i,t)):(i=t.havingStyle(n.sub()),a=N(e.value.sub,i,t)),e=e.value.base);var o=N(e.value.base,t.havingBaseStyle(s.a.DISPLAY)),l=m.a.svgSpan(e,t),u=void 0;if(e.value.isOver?(u=c.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:l}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(u=c.a.makeVList({positionType:"bottom",positionData:o.depth+.1+l.height,children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),r){var d=h(["mord",e.value.isOver?"mover":"munder"],[u],t);u=e.value.isOver?c.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:d},{type:"kern",size:.2},{type:"elem",elem:a}]},t):c.a.makeVList({positionType:"bottom",positionData:d.depth+.2+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.2},{type:"elem",elem:d}]},t)}return h(["mord",e.value.isOver?"mover":"munder"],[u],t)},y.xArrow=function(e,t){var n=t.style,r=t.havingStyle(n.sup()),a=N(e.value.body,r,t);a.classes.push("x-arrow-pad");var i=void 0;e.value.below&&(r=t.havingStyle(n.sub()),(i=N(e.value.below,r,t)).classes.push("x-arrow-pad"));var o=m.a.svgSpan(e,t),l=-t.fontMetrics().axisHeight+.5*o.height,s=-t.fontMetrics().axisHeight-.5*o.height-.111;"\\xleftequilibrium"===e.value.label&&(s-=a.depth);var u=void 0;if(e.value.below){var d=-t.fontMetrics().axisHeight+i.height+.5*o.height+.111;u=c.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:o,shift:l},{type:"elem",elem:i,shift:d}]},t)}else u=c.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:o,shift:l}]},t);return u.children[0].children[0].children[1].classes.push("svg-align"),h(["mrel","x-arrow"],[u],t)},y.mclass=function(e,t){var n=T(e.value.value,t,!0);return h([e.value.mclass],n,t)},y.raisebox=function(e,t){var n=y.sizing({value:{value:[{type:"text",value:{body:e.value.value,font:"mathrm"}}],size:6}},t),r=Object(d.a)(e.value.dy.value,t);return c.a.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},t)};var N=function(e,t,n){if(!e)return h();if(y[e.type]){var r=y[e.type](e,t);if(n&&t.size!==n.size){r=h(t.sizingClasses(n),[r],t);var a=t.sizeMultiplier/n.sizeMultiplier;r.height*=a,r.depth*=a}return r}throw new l.a("Got group of unknown type: '"+e.type+"'")}},function(e,t,n){var r=Array.prototype.indexOf,a=function(e,t){if(null==e)return-1;if(r&&e.indexOf===r)return e.indexOf(t);for(var n=e.length,a=0;a<n;a++)if(e[a]===t)return a;return-1},i=/([A-Z])/g,o={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},l=/[&><"']/g;var s=void 0;if("undefined"!=typeof document){var c=document.createElement("span");s="textContent"in c?function(e,t){e.textContent=t}:function(e,t){e.innerText=t}}var u=function e(t){return!!t&&("ordgroup"===t.type?1===t.value.length?e(t.value[0]):t:"color"===t.type?1===t.value.value.length?e(t.value.value[0]):t:"font"===t.type?e(t.value.body):t)};t.a={contains:function(e,t){return-1!==a(e,t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(l,function(e){return o[e]})},hyphenate:function(e){return e.replace(i,"-$1").toLowerCase()},indexOf:a,setTextContent:s,clearNode:function(e){s(e,"")},getBaseElem:u,isCharacterBox:function(e){var t=u(e);return"mathord"===t.type||"textord"===t.type||"bin"===t.type||"rel"===t.type||"inner"===t.type||"open"===t.type||"close"===t.type||"punct"===t.type}}},function(e,t,n){var r=n(7),a=n.n(r),i=(n(14),n(27),function e(t,n){a()(this,e);var r="KaTeX parse error: "+t,i=void 0,o=n&&n.loc;if(o&&o.start<=o.end){var l=o.lexer.input;i=o.start;var s=o.end;i===l.length?r+=" at end of input: ":r+=" at position "+(i+1)+": ";var c=l.slice(i,s).replace(/[^]/g,"$&̲");r+=(i>15?"…"+l.slice(i-15,i):l.slice(0,i))+c+(s+15<l.length?l.slice(s,s+15)+"…":l.slice(s))}var u=new Error(r);return u.name="ParseError",u.__proto__=e.prototype,u.position=i,u});i.prototype.__proto__=Error.prototype,t.a=i},function(e,t,n){t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){var n=e.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(7),a=n.n(r),i=n(10),o=n.n(i),l=function(){function e(t,n,r){a()(this,e),this.id=t,this.size=n,this.cramped=r}return o()(e,[{key:"sup",value:function(){return s[c[this.id]]}},{key:"sub",value:function(){return s[u[this.id]]}},{key:"fracNum",value:function(){return s[d[this.id]]}},{key:"fracDen",value:function(){return s[p[this.id]]}},{key:"cramp",value:function(){return s[m[this.id]]}},{key:"text",value:function(){return s[g[this.id]]}},{key:"isTight",value:function(){return this.size>=2}}]),e}(),s=[new l(0,0,!1),new l(1,0,!0),new l(2,1,!1),new l(3,1,!0),new l(4,2,!1),new l(5,2,!0),new l(6,3,!1),new l(7,3,!0)],c=[4,5,4,5,6,7,6,7],u=[5,5,5,5,7,7,7,7],d=[2,3,4,5,6,7,6,7],p=[3,3,5,5,7,7,7,7],m=[1,1,3,3,5,5,7,7],g=[0,1,2,3,2,3,2,3];t.a={DISPLAY:s[0],TEXT:s[2],SCRIPT:s[4],SCRIPTSCRIPT:s[6]}},function(e,t,n){t.__esModule=!0;var r,a=n(73),i=(r=a)&&r.__esModule?r:{default:r};t.default=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),(0,i.default)(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}()},function(e,t,n){var r=n(52)("wks"),a=n(32),i=n(16).Symbol,o="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=o&&i[e]||(o?i:a)("Symbol."+e))}).store=r},function(e,t,n){var r=n(18),a=n.n(r),i=n(105),o=n.n(i),l=n(7),s=n.n(l),c=n(10),u=n.n(c),d=n(42),p=n(5),m=n(111),g=function(e){for(var t=(e=e.slice()).length-1;t>=0;t--)e[t]||e.splice(t,1);return e.join(" ")},h=function(){function e(t,n,r,a){if(s()(this,e),this.classes=t||[],this.children=n||[],this.height=0,this.depth=0,this.maxFontSize=0,this.style=o()({},a),this.attributes={},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}}return u()(e,[{key:"setAttribute",value:function(e,t){this.attributes[e]=t}},{key:"tryCombine",value:function(e){return!1}},{key:"toNode",value:function(){var e=document.createElement("span");for(var t in e.className=g(this.classes),this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e}},{key:"toMarkup",value:function(){var e="<span";this.classes.length&&(e+=' class="',e+=p.a.escape(g(this.classes)),e+='"');var t="";for(var n in this.style)this.style.hasOwnProperty(n)&&(t+=p.a.hyphenate(n)+":"+this.style[n]+";");for(var r in t&&(e+=' style="'+p.a.escape(t)+'"'),this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&(e+=" "+r+'="',e+=p.a.escape(this.attributes[r]),e+='"');e+=">";for(var a=0;a<this.children.length;a++)e+=this.children[a].toMarkup();return e+="</span>"}}]),e}(),f=function(){function e(t,n,r,a){s()(this,e),this.href=t,this.classes=n,this.children=r,this.height=0,this.depth=0,this.maxFontSize=0,this.style={},this.attributes={},a.style.isTight()&&this.classes.push("mtight");var i=a.getColor();i&&(this.style.color=i)}return u()(e,[{key:"setAttribute",value:function(e,t){this.attributes[e]=t}},{key:"tryCombine",value:function(e){return!1}},{key:"toNode",value:function(){var e=document.createElement("a");for(var t in e.setAttribute("href",this.href),this.classes.length&&(e.className=g(this.classes)),this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e}},{key:"toMarkup",value:function(){var e="<a";e+='href="'+(e+=p.a.escape(this.href))+'"',this.classes.length&&(e+=' class="'+p.a.escape(g(this.classes))+'"');var t="";for(var n in this.style)this.style.hasOwnProperty(n)&&(t+=p.a.hyphenate(n)+":"+this.style[n]+";");for(var r in t&&(e+=' style="'+p.a.escape(t)+'"'),this.attributes)"href"!==r&&Object.prototype.hasOwnProperty.call(this.attributes,r)&&(e+=" "+r+'="'+p.a.escape(this.attributes[r])+'"');e+=">";var i=!0,o=!1,l=void 0;try{for(var s,c=a()(this.children);!(i=(s=c.next()).done);i=!0){e+=s.value.toMarkup()}}catch(e){o=!0,l=e}finally{try{!i&&c.return&&c.return()}finally{if(o)throw l}}return e+="</a>"}}]),e}(),_=function(){function e(t){s()(this,e),this.children=t||[],this.height=0,this.depth=0,this.maxFontSize=0}return u()(e,[{key:"toNode",value:function(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e}},{key:"toMarkup",value:function(){for(var e="",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e}}]),e}(),E={"î":"ı̂","ï":"ı̈","í":"ı́","ì":"ı̀"},T=function(){function e(t,n,r,a,i,l,c,u){s()(this,e),this.value=t,this.height=n||0,this.depth=r||0,this.italic=a||0,this.skew=i||0,this.width=l||0,this.classes=c||[],this.style=o()({},u),this.maxFontSize=0;var p=Object(d.a)(this.value.charCodeAt(0));p&&this.classes.push(p+"_fallback"),/[îïíì]/.test(this.value)&&(this.value=E[this.value])}return u()(e,[{key:"tryCombine",value:function(t){if(!t||!(t instanceof e)||this.italic>0||g(this.classes)!==g(t.classes)||this.skew!==t.skew||this.maxFontSize!==t.maxFontSize)return!1;for(var n in this.style)if(this.style.hasOwnProperty(n)&&this.style[n]!==t.style[n])return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&this.style[r]!==t.style[r])return!1;return this.value+=t.value,this.height=Math.max(this.height,t.height),this.depth=Math.max(this.depth,t.depth),this.italic=t.italic,!0}},{key:"toNode",value:function(){var e=document.createTextNode(this.value),t=null;for(var n in this.italic>0&&((t=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((t=t||document.createElement("span")).className=g(this.classes)),this.style)this.style.hasOwnProperty(n)&&((t=t||document.createElement("span")).style[n]=this.style[n]);return t?(t.appendChild(e),t):e}},{key:"toMarkup",value:function(){var e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=p.a.escape(g(this.classes)),t+='"');var n="";for(var r in this.italic>0&&(n+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(r)&&(n+=p.a.hyphenate(r)+":"+this.style[r]+";");n&&(e=!0,t+=' style="'+p.a.escape(n)+'"');var a=p.a.escape(this.value);return e?(t+=">",t+=a,t+="</span>"):a}}]),e}(),b=function(){function e(t,n){s()(this,e),this.children=t||[],this.attributes=n||{},this.height=0,this.depth=0,this.maxFontSize=0}return u()(e,[{key:"toNode",value:function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e}},{key:"toMarkup",value:function(){var e="<svg";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");e+=">";for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+="</svg>"}}]),e}(),v=function(){function e(t,n){s()(this,e),this.pathName=t,this.alternate=n}return u()(e,[{key:"toNode",value:function(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",m.a.path[this.pathName]),e}},{key:"toMarkup",value:function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+m.a.path[this.pathName]+"'/>"}}]),e}(),A=function(){function e(t){s()(this,e),this.attributes=t||{}}return u()(e,[{key:"toNode",value:function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e}},{key:"toMarkup",value:function(){var e="<line";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");return e+="/>"}}]),e}();t.a={span:h,anchor:f,documentFragment:_,symbolNode:T,svgNode:b,pathNode:v,lineNode:A}},function(e,t,n){var r=n(57),a=n.n(r),i=n(12),o=n(0),l=n(1),s=n(5),c={widehat:"^",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⎵",overbrace:"⏞",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋"},u={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,667],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},d=function(e){return"ordgroup"===e.type?e.value.length:1};t.a={encloseSpan:function(e,t,n,r){var a=void 0,l=e.height+e.depth+2*n;if(/fbox|color/.test(t)){if(a=o.a.makeSpan(["stretchy",t],[],r),"fbox"===t){var s=r.color&&r.getColor();s&&(a.style.borderColor=s)}}else{var c=[];/^[bx]cancel$/.test(t)&&c.push(new i.a.lineNode({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&c.push(new i.a.lineNode({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var u=new i.a.svgNode(c,{width:"100%",height:l+"em"});a=o.a.makeSpan([],[u],r)}return a.height=l,a.style.height=l+"em",a},mathMLnode:function(e){var t=new l.a.MathNode("mo",[new l.a.TextNode(c[e.substr(1)])]);return t.setAttribute("stretchy","true"),t},ruleSpan:function(e,t,n){var r=void 0,a=void 0,l="stretchy";return"vertical-separator"===e?(r=new i.a.pathNode("vertSeparator"),a=new i.a.svgNode([r],{width:"0.25em",height:"400em",viewBox:"0 0 250 400000",preserveAspectRatio:"xMinYMin slice"}),l="vertical-separator"):(r=new i.a.pathNode("stdHorizRule"),a=new i.a.svgNode([r],{width:"400em",height:5*t+"em",viewBox:"0 0 400000 200",preserveAspectRatio:"xMinYMin slice"})),o.a.makeSpan([l],[a],n)},svgSpan:function(e,t){var n=function(){var n=4e5,r=e.value.label.substr(1);if(s.a.contains(["widehat","widetilde","utilde"],r)){var l=d(e.value.base),c=void 0,p=void 0,m=void 0;if(l>5)c="widehat"===r?420:312,n="widehat"===r?2364:2340,m="widehat"===r?.42:.34,p=("widehat"===r?"widehat":"tilde")+"4";else{var g=[1,1,2,2,3,3][l];"widehat"===r?(n=[0,1062,2364,2364,2364][g],c=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p="widehat"+g):(n=[0,600,1033,2339,2340][g],c=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var h=new i.a.pathNode(p),f=new i.a.svgNode([h],{width:"100%",height:m+"em",viewBox:"0 0 "+n+" "+c,preserveAspectRatio:"none"});return{span:o.a.makeSpan([],[f],t),minWidth:0,height:m}}var _=[],E=a()(u[r],4),T=E[0],b=E[1],v=E[2],A=E[3],S=v/1e3,y=T.length,N=void 0,C=void 0;if(1===y)N=["hide-tail"],C=[A];else if(2===y)N=["halfarrow-left","halfarrow-right"],C=["xMinYMin","xMaxYMin"];else{if(3!==y)throw new Error("Correct katexImagesData or update code here to support\n "+y+" children.");N=["brace-left","brace-center","brace-right"],C=["xMinYMin","xMidYMin","xMaxYMin"]}for(var O=0;O<y;O++){var M=new i.a.pathNode(T[O]),x=new i.a.svgNode([M],{width:"400em",height:S+"em",viewBox:"0 0 "+n+" "+v,preserveAspectRatio:C[O]+" slice"}),w=o.a.makeSpan([N[O]],[x],t);if(1===y)return{span:w,minWidth:b,height:S};w.style.height=S+"em",_.push(w)}return{span:o.a.makeSpan(["stretchy"],_,t),minWidth:b,height:S}}(),r=n.span,l=n.minWidth,c=n.height;return r.height=c,r.style.height=c+"em",l>0&&(r.style.minWidth=l+"em"),r}}},function(e,t,n){var r=n(7),a=n.n(r),i=n(31);t.a=function e(t,n,r,o,l){a()(this,e),this.type=t,this.value=n,this.mode=r,this.loc=i.a.range(o,l)}},function(e,t,n){var r=n(22),a=n(70),i=n(71),o=Object.defineProperty;t.f=n(23)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),a)try{return o(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){e.exports={}},function(e,t,n){e.exports={default:n(103),__esModule:!0}},function(e,t,n){n.d(t,"b",function(){return o}),n.d(t,"a",function(){return l});var r=n(6),a=(n(43),{pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375}),i={ex:!0,em:!0,mu:!0},o=function(e){return"string"!=typeof e&&(e=e.unit),e in a||e in i||"ex"===e},l=function(e,t){var n=void 0;if(e.unit in a)n=a[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)n=t.fontMetrics().cssEmPerMu;else{var i=void 0;if(i=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)n=i.fontMetrics().xHeight;else{if("em"!==e.unit)throw new r.a("Invalid unit: '"+e.unit+"'");n=i.fontMetrics().quad}i!==t&&(n*=i.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*n,t.maxSize)}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(20);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){e.exports=!n(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(16),a=n(8),i=n(47),o=n(26),l=function(e,t,n){var s,c,u,d=e&l.F,p=e&l.G,m=e&l.S,g=e&l.P,h=e&l.B,f=e&l.W,_=p?a:a[t]||(a[t]={}),E=_.prototype,T=p?r:m?r[t]:(r[t]||{}).prototype;for(s in p&&(n=t),n)(c=!d&&T&&void 0!==T[s])&&s in _||(u=c?T[s]:n[s],_[s]=p&&"function"!=typeof T[s]?n[s]:h&&c?i(u,r):f&&T[s]==u?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(u):g&&"function"==typeof u?i(Function.call,u):u,g&&((_.virtual||(_.virtual={}))[s]=u,e&l.R&&E&&!E[s]&&o(E,s,u)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,n){var r=n(15),a=n(33);e.exports=n(23)?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){n.d(t,"a",function(){return s});var r=n(7),a=n.n(r),i=n(10),o=n.n(i),l=n(31),s=function(){function e(t,n){a()(this,e),this.text=t,this.loc=n}return o()(e,[{key:"range",value:function(t,n){return new e(n,l.a.range(this,t))}}]),e}()},function(e,t,n){var r={math:{},text:{}};function a(e,t,n,a,i,o){r[e][i]={font:t,group:n,replace:a},o&&a&&(r[e][a]=r[e][i])}t.a=r;var i="math",o="text",l="main",s="ams",c="accent",u="bin",d="close",p="mathord",m="op",g="open",h="rel",f="spacing",_="textord";a(i,l,h,"≡","\\equiv",!0),a(i,l,h,"≺","\\prec",!0),a(i,l,h,"≻","\\succ",!0),a(i,l,h,"∼","\\sim",!0),a(i,l,h,"⊥","\\perp"),a(i,l,h,"⪯","\\preceq",!0),a(i,l,h,"⪰","\\succeq",!0),a(i,l,h,"≃","\\simeq",!0),a(i,l,h,"∣","\\mid",!0),a(i,l,h,"≪","\\ll"),a(i,l,h,"≫","\\gg",!0),a(i,l,h,"≍","\\asymp",!0),a(i,l,h,"∥","\\parallel"),a(i,l,h,"⋈","\\bowtie",!0),a(i,l,h,"⌣","\\smile",!0),a(i,l,h,"⊑","\\sqsubseteq",!0),a(i,l,h,"⊒","\\sqsupseteq",!0),a(i,l,h,"≐","\\doteq",!0),a(i,l,h,"⌢","\\frown",!0),a(i,l,h,"∋","\\ni",!0),a(i,l,h,"∝","\\propto",!0),a(i,l,h,"⊢","\\vdash",!0),a(i,l,h,"⊣","\\dashv",!0),a(i,l,h,"∋","\\owns"),a(i,l,"punct",".","\\ldotp"),a(i,l,"punct","⋅","\\cdotp"),a(i,l,_,"#","\\#"),a(o,l,_,"#","\\#"),a(i,l,_,"&","\\&"),a(o,l,_,"&","\\&"),a(i,l,_,"ℵ","\\aleph",!0),a(i,l,_,"∀","\\forall",!0),a(i,l,_,"ℏ","\\hbar"),a(i,l,_,"∃","\\exists",!0),a(i,l,_,"∇","\\nabla",!0),a(i,l,_,"♭","\\flat",!0),a(i,l,_,"ℓ","\\ell",!0),a(i,l,_,"♮","\\natural",!0),a(i,l,_,"♣","\\clubsuit",!0),a(i,l,_,"℘","\\wp",!0),a(i,l,_,"♯","\\sharp",!0),a(i,l,_,"♢","\\diamondsuit",!0),a(i,l,_,"ℜ","\\Re",!0),a(i,l,_,"♡","\\heartsuit",!0),a(i,l,_,"ℑ","\\Im",!0),a(i,l,_,"♠","\\spadesuit",!0),a(o,l,_,"§","\\S",!0),a(o,l,_,"¶","\\P",!0),a(i,l,_,"†","\\dag"),a(o,l,_,"†","\\dag"),a(o,l,_,"†","\\textdagger"),a(i,l,_,"‡","\\ddag"),a(o,l,_,"‡","\\ddag"),a(o,l,_,"†","\\textdaggerdbl"),a(i,l,d,"⎱","\\rmoustache"),a(i,l,g,"⎰","\\lmoustache"),a(i,l,d,"⟯","\\rgroup"),a(i,l,g,"⟮","\\lgroup"),a(i,l,u,"∓","\\mp",!0),a(i,l,u,"⊖","\\ominus",!0),a(i,l,u,"⊎","\\uplus",!0),a(i,l,u,"⊓","\\sqcap",!0),a(i,l,u,"∗","\\ast"),a(i,l,u,"⊔","\\sqcup",!0),a(i,l,u,"◯","\\bigcirc"),a(i,l,u,"∙","\\bullet"),a(i,l,u,"‡","\\ddagger"),a(i,l,u,"≀","\\wr",!0),a(i,l,u,"⨿","\\amalg"),a(i,l,u,"&","\\And"),a(i,l,h,"⟵","\\longleftarrow",!0),a(i,l,h,"⇐","\\Leftarrow",!0),a(i,l,h,"⟸","\\Longleftarrow",!0),a(i,l,h,"⟶","\\longrightarrow",!0),a(i,l,h,"⇒","\\Rightarrow",!0),a(i,l,h,"⟹","\\Longrightarrow",!0),a(i,l,h,"↔","\\leftrightarrow",!0),a(i,l,h,"⟷","\\longleftrightarrow",!0),a(i,l,h,"⇔","\\Leftrightarrow",!0),a(i,l,h,"⟺","\\Longleftrightarrow",!0),a(i,l,h,"↦","\\mapsto",!0),a(i,l,h,"⟼","\\longmapsto",!0),a(i,l,h,"↗","\\nearrow",!0),a(i,l,h,"↩","\\hookleftarrow",!0),a(i,l,h,"↪","\\hookrightarrow",!0),a(i,l,h,"↘","\\searrow",!0),a(i,l,h,"↼","\\leftharpoonup",!0),a(i,l,h,"⇀","\\rightharpoonup",!0),a(i,l,h,"↙","\\swarrow",!0),a(i,l,h,"↽","\\leftharpoondown",!0),a(i,l,h,"⇁","\\rightharpoondown",!0),a(i,l,h,"↖","\\nwarrow",!0),a(i,l,h,"⇌","\\rightleftharpoons",!0),a(i,s,h,"≮","\\nless",!0),a(i,s,h,"","\\nleqslant"),a(i,s,h,"","\\nleqq"),a(i,s,h,"⪇","\\lneq",!0),a(i,s,h,"≨","\\lneqq",!0),a(i,s,h,"","\\lvertneqq"),a(i,s,h,"⋦","\\lnsim",!0),a(i,s,h,"⪉","\\lnapprox",!0),a(i,s,h,"⊀","\\nprec",!0),a(i,s,h,"⋠","\\npreceq",!0),a(i,s,h,"⋨","\\precnsim",!0),a(i,s,h,"⪹","\\precnapprox",!0),a(i,s,h,"≁","\\nsim",!0),a(i,s,h,"","\\nshortmid"),a(i,s,h,"∤","\\nmid",!0),a(i,s,h,"⊬","\\nvdash",!0),a(i,s,h,"⊭","\\nvDash",!0),a(i,s,h,"⋪","\\ntriangleleft"),a(i,s,h,"⋬","\\ntrianglelefteq",!0),a(i,s,h,"⊊","\\subsetneq",!0),a(i,s,h,"","\\varsubsetneq"),a(i,s,h,"⫋","\\subsetneqq",!0),a(i,s,h,"","\\varsubsetneqq"),a(i,s,h,"≯","\\ngtr",!0),a(i,s,h,"","\\ngeqslant"),a(i,s,h,"","\\ngeqq"),a(i,s,h,"⪈","\\gneq",!0),a(i,s,h,"≩","\\gneqq",!0),a(i,s,h,"","\\gvertneqq"),a(i,s,h,"⋧","\\gnsim",!0),a(i,s,h,"⪊","\\gnapprox",!0),a(i,s,h,"⊁","\\nsucc",!0),a(i,s,h,"⋡","\\nsucceq",!0),a(i,s,h,"⋩","\\succnsim",!0),a(i,s,h,"⪺","\\succnapprox",!0),a(i,s,h,"≆","\\ncong",!0),a(i,s,h,"","\\nshortparallel"),a(i,s,h,"∦","\\nparallel",!0),a(i,s,h,"⊯","\\nVDash",!0),a(i,s,h,"⋫","\\ntriangleright"),a(i,s,h,"⋭","\\ntrianglerighteq",!0),a(i,s,h,"","\\nsupseteqq"),a(i,s,h,"⊋","\\supsetneq",!0),a(i,s,h,"","\\varsupsetneq"),a(i,s,h,"⫌","\\supsetneqq",!0),a(i,s,h,"","\\varsupsetneqq"),a(i,s,h,"⊮","\\nVdash",!0),a(i,s,h,"⪵","\\precneqq",!0),a(i,s,h,"⪶","\\succneqq",!0),a(i,s,h,"","\\nsubseteqq"),a(i,s,u,"⊴","\\unlhd"),a(i,s,u,"⊵","\\unrhd"),a(i,s,h,"↚","\\nleftarrow",!0),a(i,s,h,"↛","\\nrightarrow",!0),a(i,s,h,"⇍","\\nLeftarrow",!0),a(i,s,h,"⇏","\\nRightarrow",!0),a(i,s,h,"↮","\\nleftrightarrow",!0),a(i,s,h,"⇎","\\nLeftrightarrow",!0),a(i,s,h,"△","\\vartriangle"),a(i,s,_,"ℏ","\\hslash"),a(i,s,_,"▽","\\triangledown"),a(i,s,_,"◊","\\lozenge"),a(i,s,_,"Ⓢ","\\circledS"),a(i,s,_,"®","\\circledR"),a(o,s,_,"®","\\circledR"),a(i,s,_,"∡","\\measuredangle",!0),a(i,s,_,"∄","\\nexists"),a(i,s,_,"℧","\\mho"),a(i,s,_,"Ⅎ","\\Finv",!0),a(i,s,_,"⅁","\\Game",!0),a(i,s,_,"k","\\Bbbk"),a(i,s,_,"‵","\\backprime"),a(i,s,_,"▲","\\blacktriangle"),a(i,s,_,"▼","\\blacktriangledown"),a(i,s,_,"■","\\blacksquare"),a(i,s,_,"⧫","\\blacklozenge"),a(i,s,_,"★","\\bigstar"),a(i,s,_,"∢","\\sphericalangle",!0),a(i,s,_,"∁","\\complement",!0),a(i,s,_,"ð","\\eth",!0),a(i,s,_,"╱","\\diagup"),a(i,s,_,"╲","\\diagdown"),a(i,s,_,"□","\\square"),a(i,s,_,"□","\\Box"),a(i,s,_,"◊","\\Diamond"),a(i,s,_,"¥","\\yen",!0),a(i,s,_,"✓","\\checkmark",!0),a(o,s,_,"✓","\\checkmark"),a(i,s,_,"ℶ","\\beth",!0),a(i,s,_,"ℸ","\\daleth",!0),a(i,s,_,"ℷ","\\gimel",!0),a(i,s,_,"ϝ","\\digamma"),a(i,s,_,"ϰ","\\varkappa"),a(i,s,g,"┌","\\ulcorner"),a(i,s,d,"┐","\\urcorner"),a(i,s,g,"└","\\llcorner"),a(i,s,d,"┘","\\lrcorner"),a(i,s,h,"≦","\\leqq",!0),a(i,s,h,"⩽","\\leqslant"),a(i,s,h,"⪕","\\eqslantless",!0),a(i,s,h,"≲","\\lesssim"),a(i,s,h,"⪅","\\lessapprox"),a(i,s,h,"≊","\\approxeq",!0),a(i,s,u,"⋖","\\lessdot"),a(i,s,h,"⋘","\\lll"),a(i,s,h,"≶","\\lessgtr"),a(i,s,h,"⋚","\\lesseqgtr"),a(i,s,h,"⪋","\\lesseqqgtr"),a(i,s,h,"≑","\\doteqdot"),a(i,s,h,"≓","\\risingdotseq",!0),a(i,s,h,"≒","\\fallingdotseq",!0),a(i,s,h,"∽","\\backsim",!0),a(i,s,h,"⋍","\\backsimeq",!0),a(i,s,h,"⫅","\\subseteqq",!0),a(i,s,h,"⋐","\\Subset",!0),a(i,s,h,"⊏","\\sqsubset",!0),a(i,s,h,"≼","\\preccurlyeq",!0),a(i,s,h,"⋞","\\curlyeqprec",!0),a(i,s,h,"≾","\\precsim",!0),a(i,s,h,"⪷","\\precapprox",!0),a(i,s,h,"⊲","\\vartriangleleft"),a(i,s,h,"⊴","\\trianglelefteq"),a(i,s,h,"⊨","\\vDash"),a(i,s,h,"⊪","\\Vvdash",!0),a(i,s,h,"⌣","\\smallsmile"),a(i,s,h,"⌢","\\smallfrown"),a(i,s,h,"≏","\\bumpeq",!0),a(i,s,h,"≎","\\Bumpeq",!0),a(i,s,h,"≧","\\geqq",!0),a(i,s,h,"⩾","\\geqslant",!0),a(i,s,h,"⪖","\\eqslantgtr",!0),a(i,s,h,"≳","\\gtrsim",!0),a(i,s,h,"⪆","\\gtrapprox",!0),a(i,s,u,"⋗","\\gtrdot"),a(i,s,h,"⋙","\\ggg",!0),a(i,s,h,"≷","\\gtrless",!0),a(i,s,h,"⋛","\\gtreqless",!0),a(i,s,h,"⪌","\\gtreqqless",!0),a(i,s,h,"≖","\\eqcirc",!0),a(i,s,h,"≗","\\circeq",!0),a(i,s,h,"≜","\\triangleq",!0),a(i,s,h,"∼","\\thicksim"),a(i,s,h,"≈","\\thickapprox"),a(i,s,h,"⫆","\\supseteqq",!0),a(i,s,h,"⋑","\\Supset",!0),a(i,s,h,"⊐","\\sqsupset",!0),a(i,s,h,"≽","\\succcurlyeq",!0),a(i,s,h,"⋟","\\curlyeqsucc",!0),a(i,s,h,"≿","\\succsim",!0),a(i,s,h,"⪸","\\succapprox",!0),a(i,s,h,"⊳","\\vartriangleright"),a(i,s,h,"⊵","\\trianglerighteq"),a(i,s,h,"⊩","\\Vdash",!0),a(i,s,h,"∣","\\shortmid"),a(i,s,h,"∥","\\shortparallel"),a(i,s,h,"≬","\\between",!0),a(i,s,h,"⋔","\\pitchfork",!0),a(i,s,h,"∝","\\varpropto"),a(i,s,h,"◀","\\blacktriangleleft"),a(i,s,h,"∴","\\therefore",!0),a(i,s,h,"∍","\\backepsilon"),a(i,s,h,"▶","\\blacktriangleright"),a(i,s,h,"∵","\\because",!0),a(i,s,h,"⋘","\\llless"),a(i,s,h,"⋙","\\gggtr"),a(i,s,u,"⊲","\\lhd"),a(i,s,u,"⊳","\\rhd"),a(i,s,h,"≂","\\eqsim",!0),a(i,l,h,"⋈","\\Join"),a(i,s,h,"≑","\\Doteq",!0),a(i,s,u,"∔","\\dotplus",!0),a(i,s,u,"∖","\\smallsetminus"),a(i,s,u,"⋒","\\Cap",!0),a(i,s,u,"⋓","\\Cup",!0),a(i,s,u,"⩞","\\doublebarwedge",!0),a(i,s,u,"⊟","\\boxminus",!0),a(i,s,u,"⊞","\\boxplus",!0),a(i,s,u,"⋇","\\divideontimes",!0),a(i,s,u,"⋉","\\ltimes",!0),a(i,s,u,"⋊","\\rtimes",!0),a(i,s,u,"⋋","\\leftthreetimes",!0),a(i,s,u,"⋌","\\rightthreetimes",!0),a(i,s,u,"⋏","\\curlywedge",!0),a(i,s,u,"⋎","\\curlyvee",!0),a(i,s,u,"⊝","\\circleddash",!0),a(i,s,u,"⊛","\\circledast",!0),a(i,s,u,"⋅","\\centerdot"),a(i,s,u,"⊺","\\intercal",!0),a(i,s,u,"⋒","\\doublecap"),a(i,s,u,"⋓","\\doublecup"),a(i,s,u,"⊠","\\boxtimes",!0),a(i,s,h,"⇢","\\dashrightarrow",!0),a(i,s,h,"⇠","\\dashleftarrow",!0),a(i,s,h,"⇇","\\leftleftarrows",!0),a(i,s,h,"⇆","\\leftrightarrows",!0),a(i,s,h,"⇚","\\Lleftarrow",!0),a(i,s,h,"↞","\\twoheadleftarrow",!0),a(i,s,h,"↢","\\leftarrowtail",!0),a(i,s,h,"↫","\\looparrowleft",!0),a(i,s,h,"⇋","\\leftrightharpoons",!0),a(i,s,h,"↶","\\curvearrowleft",!0),a(i,s,h,"↺","\\circlearrowleft",!0),a(i,s,h,"↰","\\Lsh",!0),a(i,s,h,"⇈","\\upuparrows",!0),a(i,s,h,"↿","\\upharpoonleft",!0),a(i,s,h,"⇃","\\downharpoonleft",!0),a(i,s,h,"⊸","\\multimap",!0),a(i,s,h,"↭","\\leftrightsquigarrow",!0),a(i,s,h,"⇉","\\rightrightarrows",!0),a(i,s,h,"⇄","\\rightleftarrows",!0),a(i,s,h,"↠","\\twoheadrightarrow",!0),a(i,s,h,"↣","\\rightarrowtail",!0),a(i,s,h,"↬","\\looparrowright",!0),a(i,s,h,"↷","\\curvearrowright",!0),a(i,s,h,"↻","\\circlearrowright",!0),a(i,s,h,"↱","\\Rsh",!0),a(i,s,h,"⇊","\\downdownarrows",!0),a(i,s,h,"↾","\\upharpoonright",!0),a(i,s,h,"⇂","\\downharpoonright",!0),a(i,s,h,"⇝","\\rightsquigarrow",!0),a(i,s,h,"⇝","\\leadsto"),a(i,s,h,"⇛","\\Rrightarrow",!0),a(i,s,h,"↾","\\restriction"),a(i,l,_,"‘","`"),a(i,l,_,"$","\\$"),a(o,l,_,"$","\\$"),a(o,l,_,"$","\\textdollar"),a(i,l,_,"%","\\%"),a(o,l,_,"%","\\%"),a(i,l,_,"_","\\_"),a(o,l,_,"_","\\_"),a(o,l,_,"_","\\textunderscore"),a(i,l,_,"∠","\\angle",!0),a(i,l,_,"∞","\\infty",!0),a(i,l,_,"′","\\prime"),a(i,l,_,"△","\\triangle"),a(i,l,_,"Γ","\\Gamma",!0),a(i,l,_,"Δ","\\Delta",!0),a(i,l,_,"Θ","\\Theta",!0),a(i,l,_,"Λ","\\Lambda",!0),a(i,l,_,"Ξ","\\Xi",!0),a(i,l,_,"Π","\\Pi",!0),a(i,l,_,"Σ","\\Sigma",!0),a(i,l,_,"Υ","\\Upsilon",!0),a(i,l,_,"Φ","\\Phi",!0),a(i,l,_,"Ψ","\\Psi",!0),a(i,l,_,"Ω","\\Omega",!0),a(i,l,_,"¬","\\neg"),a(i,l,_,"¬","\\lnot"),a(i,l,_,"⊤","\\top"),a(i,l,_,"⊥","\\bot"),a(i,l,_,"∅","\\emptyset"),a(i,s,_,"∅","\\varnothing"),a(i,l,p,"α","\\alpha",!0),a(i,l,p,"β","\\beta",!0),a(i,l,p,"γ","\\gamma",!0),a(i,l,p,"δ","\\delta",!0),a(i,l,p,"ϵ","\\epsilon",!0),a(i,l,p,"ζ","\\zeta",!0),a(i,l,p,"η","\\eta",!0),a(i,l,p,"θ","\\theta",!0),a(i,l,p,"ι","\\iota",!0),a(i,l,p,"κ","\\kappa",!0),a(i,l,p,"λ","\\lambda",!0),a(i,l,p,"μ","\\mu",!0),a(i,l,p,"ν","\\nu",!0),a(i,l,p,"ξ","\\xi",!0),a(i,l,p,"ο","\\omicron",!0),a(i,l,p,"π","\\pi",!0),a(i,l,p,"ρ","\\rho",!0),a(i,l,p,"σ","\\sigma",!0),a(i,l,p,"τ","\\tau",!0),a(i,l,p,"υ","\\upsilon",!0),a(i,l,p,"ϕ","\\phi",!0),a(i,l,p,"χ","\\chi",!0),a(i,l,p,"ψ","\\psi",!0),a(i,l,p,"ω","\\omega",!0),a(i,l,p,"ε","\\varepsilon",!0),a(i,l,p,"ϑ","\\vartheta",!0),a(i,l,p,"ϖ","\\varpi",!0),a(i,l,p,"ϱ","\\varrho",!0),a(i,l,p,"ς","\\varsigma",!0),a(i,l,p,"φ","\\varphi",!0),a(i,l,u,"∗","*"),a(i,l,u,"+","+"),a(i,l,u,"−","-"),a(i,l,u,"⋅","\\cdot",!0),a(i,l,u,"∘","\\circ"),a(i,l,u,"÷","\\div",!0),a(i,l,u,"±","\\pm",!0),a(i,l,u,"×","\\times",!0),a(i,l,u,"∩","\\cap",!0),a(i,l,u,"∪","\\cup",!0),a(i,l,u,"∖","\\setminus"),a(i,l,u,"∧","\\land"),a(i,l,u,"∨","\\lor"),a(i,l,u,"∧","\\wedge",!0),a(i,l,u,"∨","\\vee",!0),a(i,l,_,"√","\\surd"),a(i,l,g,"(","("),a(i,l,g,"[","["),a(i,l,g,"⟨","\\langle",!0),a(i,l,g,"∣","\\lvert"),a(i,l,g,"∥","\\lVert"),a(i,l,d,")",")"),a(i,l,d,"]","]"),a(i,l,d,"?","?"),a(i,l,d,"!","!"),a(i,l,d,"⟩","\\rangle",!0),a(i,l,d,"∣","\\rvert"),a(i,l,d,"∥","\\rVert"),a(i,l,h,"=","="),a(i,l,h,"<","<"),a(i,l,h,">",">"),a(i,l,h,":",":"),a(i,l,h,"≈","\\approx",!0),a(i,l,h,"≅","\\cong",!0),a(i,l,h,"≥","\\ge"),a(i,l,h,"≥","\\geq",!0),a(i,l,h,"←","\\gets"),a(i,l,h,">","\\gt"),a(i,l,h,"∈","\\in",!0),a(i,l,h,"∉","\\notin",!0),a(i,l,h,"̸","\\not"),a(i,l,h,"⊂","\\subset",!0),a(i,l,h,"⊃","\\supset",!0),a(i,l,h,"⊆","\\subseteq",!0),a(i,l,h,"⊇","\\supseteq",!0),a(i,s,h,"⊈","\\nsubseteq",!0),a(i,s,h,"⊉","\\nsupseteq",!0),a(i,l,h,"⊨","\\models"),a(i,l,h,"←","\\leftarrow",!0),a(i,l,h,"≤","\\le"),a(i,l,h,"≤","\\leq",!0),a(i,l,h,"<","\\lt"),a(i,l,h,"≠","\\ne",!0),a(i,l,h,"≠","\\neq"),a(i,l,h,"→","\\rightarrow",!0),a(i,l,h,"→","\\to"),a(i,s,h,"≱","\\ngeq",!0),a(i,s,h,"≰","\\nleq",!0),a(i,l,f,null,"\\!"),a(i,l,f," ","\\ "),a(i,l,f," ","~"),a(i,l,f,null,"\\,"),a(i,l,f,null,"\\:"),a(i,l,f,null,"\\;"),a(i,l,f,null,"\\enspace"),a(i,l,f,null,"\\qquad"),a(i,l,f,null,"\\quad"),a(i,l,f," ","\\space"),a(i,l,f," ","\\nobreakspace"),a(o,l,f,null,"\\!"),a(o,l,f," ","\\ "),a(o,l,f," ","~"),a(o,l,f,null,"\\,"),a(o,l,f,null,"\\:"),a(o,l,f,null,"\\;"),a(o,l,f,null,"\\enspace"),a(o,l,f,null,"\\qquad"),a(o,l,f,null,"\\quad"),a(o,l,f," ","\\space"),a(o,l,f," ","\\nobreakspace"),a(i,l,"punct",",",","),a(i,l,"punct",";",";"),a(i,l,"punct",":","\\colon"),a(i,s,u,"⊼","\\barwedge",!0),a(i,s,u,"⊻","\\veebar",!0),a(i,l,u,"⊙","\\odot",!0),a(i,l,u,"⊕","\\oplus",!0),a(i,l,u,"⊗","\\otimes",!0),a(i,l,_,"∂","\\partial",!0),a(i,l,u,"⊘","\\oslash",!0),a(i,s,u,"⊚","\\circledcirc",!0),a(i,s,u,"⊡","\\boxdot",!0),a(i,l,u,"△","\\bigtriangleup"),a(i,l,u,"▽","\\bigtriangledown"),a(i,l,u,"†","\\dagger"),a(i,l,u,"⋄","\\diamond"),a(i,l,u,"⋆","\\star"),a(i,l,u,"◃","\\triangleleft"),a(i,l,u,"▹","\\triangleright"),a(i,l,g,"{","\\{"),a(o,l,_,"{","\\{"),a(o,l,_,"{","\\textbraceleft"),a(i,l,d,"}","\\}"),a(o,l,_,"}","\\}"),a(o,l,_,"}","\\textbraceright"),a(i,l,g,"{","\\lbrace"),a(i,l,d,"}","\\rbrace"),a(i,l,g,"[","\\lbrack"),a(i,l,d,"]","\\rbrack"),a(o,l,_,"<","\\textless"),a(o,l,_,">","\\textgreater"),a(i,l,g,"⌊","\\lfloor"),a(i,l,d,"⌋","\\rfloor"),a(i,l,g,"⌈","\\lceil"),a(i,l,d,"⌉","\\rceil"),a(i,l,_,"\\","\\backslash"),a(i,l,_,"∣","|"),a(i,l,_,"∣","\\vert"),a(o,l,_,"|","\\textbar"),a(i,l,_,"∥","\\|"),a(i,l,_,"∥","\\Vert"),a(o,l,_,"∥","\\textbardbl"),a(i,l,h,"↑","\\uparrow",!0),a(i,l,h,"⇑","\\Uparrow",!0),a(i,l,h,"↓","\\downarrow",!0),a(i,l,h,"⇓","\\Downarrow",!0),a(i,l,h,"↕","\\updownarrow",!0),a(i,l,h,"⇕","\\Updownarrow",!0),a(i,l,m,"∐","\\coprod"),a(i,l,m,"⋁","\\bigvee"),a(i,l,m,"⋀","\\bigwedge"),a(i,l,m,"⨄","\\biguplus"),a(i,l,m,"⋂","\\bigcap"),a(i,l,m,"⋃","\\bigcup"),a(i,l,m,"∫","\\int"),a(i,l,m,"∫","\\intop"),a(i,l,m,"∬","\\iint"),a(i,l,m,"∭","\\iiint"),a(i,l,m,"∏","\\prod"),a(i,l,m,"∑","\\sum"),a(i,l,m,"⨂","\\bigotimes"),a(i,l,m,"⨁","\\bigoplus"),a(i,l,m,"⨀","\\bigodot"),a(i,l,m,"∮","\\oint"),a(i,l,m,"⨆","\\bigsqcup"),a(i,l,m,"∫","\\smallint"),a(o,l,"inner","…","\\textellipsis"),a(i,l,"inner","…","\\mathellipsis"),a(o,l,"inner","…","\\ldots",!0),a(i,l,"inner","…","\\ldots",!0),a(i,l,"inner","⋯","\\@cdots",!0),a(i,l,"inner","⋱","\\ddots",!0),a(i,l,_,"⋮","\\vdots",!0),a(i,l,c,"ˊ","\\acute"),a(i,l,c,"ˋ","\\grave"),a(i,l,c,"¨","\\ddot"),a(i,l,c,"~","\\tilde"),a(i,l,c,"ˉ","\\bar"),a(i,l,c,"˘","\\breve"),a(i,l,c,"ˇ","\\check"),a(i,l,c,"^","\\hat"),a(i,l,c,"⃗","\\vec"),a(i,l,c,"˙","\\dot"),a(i,l,c,"˚","\\mathring"),a(i,l,p,"ı","\\imath",!0),a(i,l,p,"ȷ","\\jmath",!0),a(o,l,_,"ı","\\i",!0),a(o,l,_,"ȷ","\\j",!0),a(o,l,_,"ß","\\ss",!0),a(o,l,_,"æ","\\ae",!0),a(o,l,_,"æ","\\ae",!0),a(o,l,_,"œ","\\oe",!0),a(o,l,_,"ø","\\o",!0),a(o,l,_,"Æ","\\AE",!0),a(o,l,_,"Œ","\\OE",!0),a(o,l,_,"Ø","\\O",!0),a(o,l,c,"ˊ","\\'"),a(o,l,c,"ˋ","\\`"),a(o,l,c,"ˆ","\\^"),a(o,l,c,"˜","\\~"),a(o,l,c,"ˉ","\\="),a(o,l,c,"˘","\\u"),a(o,l,c,"˙","\\."),a(o,l,c,"˚","\\r"),a(o,l,c,"ˇ","\\v"),a(o,l,c,"¨",'\\"'),a(o,l,c,"˝","\\H"),a(o,l,_,"–","--"),a(o,l,_,"–","\\textendash"),a(o,l,_,"—","---"),a(o,l,_,"—","\\textemdash"),a(o,l,_,"‘","`"),a(o,l,_,"‘","\\textquoteleft"),a(o,l,_,"’","'"),a(o,l,_,"’","\\textquoteright"),a(o,l,_,"“","``"),a(o,l,_,"“","\\textquotedblleft"),a(o,l,_,"”","''"),a(o,l,_,"”","\\textquotedblright"),a(i,l,_,"°","\\degree"),a(o,l,_,"°","\\degree"),a(i,l,p,"£","\\pounds"),a(i,l,p,"£","\\mathsterling",!0),a(o,l,p,"£","\\pounds"),a(o,l,p,"£","\\textsterling",!0),a(i,s,_,"✠","\\maltese"),a(o,s,_,"✠","\\maltese"),a(o,l,f," ","\\ "),a(o,l,f," "," "),a(o,l,f," ","~");for(var E=0;E<'0123456789/@."'.length;E++){var T='0123456789/@."'.charAt(E);a(i,l,_,T,T)}for(var b=0;b<'0123456789!@*()-=+[]<>|";:?/.,'.length;b++){var v='0123456789!@*()-=+[]<>|";:?/.,'.charAt(b);a(o,l,_,v,v)}for(var A="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",S=0;S<A.length;S++){var y=A.charAt(S);a(i,l,p,y,y),a(o,l,_,y,y)}for(var N=0;N<"ÇÐÞçþ".length;N++){var C="ÇÐÞçþ".charAt(N);a(i,l,p,C,C),a(o,l,_,C,C)}a(o,l,_,"ð","ð"),a(o,l,_,"–","–"),a(o,l,_,"—","—"),a(o,l,_,"‘","‘"),a(o,l,_,"’","’"),a(o,l,_,"“","“"),a(o,l,_,"”","”")},function(e,t,n){var r=n(38);e.exports=function(e){return Object(r(e))}},function(e,t,n){var r=n(42),a=n(59),i={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2]},o={"Å":"A","Ç":"C","Ð":"D","Þ":"o","å":"a","ç":"c","ð":"d","þ":"o","А":"A","Б":"B","В":"B","Г":"F","Д":"A","Е":"E","Ж":"K","З":"3","И":"N","Й":"N","К":"K","Л":"N","М":"M","Н":"H","О":"O","П":"N","Р":"P","С":"C","Т":"T","У":"y","Ф":"O","Х":"X","Ц":"U","Ч":"h","Ш":"W","Щ":"W","Ъ":"B","Ы":"X","Ь":"B","Э":"3","Ю":"X","Я":"R","а":"a","б":"b","в":"a","г":"r","д":"y","е":"e","ж":"m","з":"e","и":"n","й":"n","к":"n","л":"n","м":"m","н":"n","о":"o","п":"n","р":"p","с":"c","т":"o","у":"y","ф":"b","х":"x","ц":"n","ч":"n","ш":"w","щ":"w","ъ":"a","ы":"m","ь":"a","э":"e","ю":"m","я":"r"},l={};t.a={getFontMetrics:function(e){var t=void 0;if(!l[t=e>=5?0:e>=3?1:2]){var n=l[t]={cssEmPerMu:i.quad[t]/18};for(var r in i)i.hasOwnProperty(r)&&(n[r]=i[r][t])}return l[t]},getCharacterMetrics:function(e,t,n){if(!a.a[t])throw new Error("Font metrics not found for font: "+t+".");var i=e.charCodeAt(0);e[0]in o&&(i=o[e[0]].charCodeAt(0));var l=a.a[t][i];if(l||"text"!==n||Object(r.b)(i)&&(l=a.a[t][77]),l)return{depth:l[0],height:l[1],italic:l[2],skew:l[3],width:l[4]}}}},function(e,t,n){var r=n(66),a=n.n(r),i=n(7),o=n.n(i),l=n(10),s=n.n(l),c=function(){function e(t,n,r){o()(this,e),this.lexer=t,this.start=n,this.end=r,a()(this)}return s()(e,null,[{key:"range",value:function(t,n){return n?t&&t.loc&&n.loc&&t.loc.lexer===n.loc.lexer?new e(t.loc.lexer,t.loc.start,n.loc.end):null:t&&t.loc}}]),e}();t.a=c},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(7),a=n.n(r),i=n(5);t.a=function e(t){a()(this,e),t=t||{},this.displayMode=i.a.deflt(t.displayMode,!1),this.throwOnError=i.a.deflt(t.throwOnError,!0),this.errorColor=i.a.deflt(t.errorColor,"#cc0000"),this.macros=t.macros||{},this.colorIsTextColor=i.a.deflt(t.colorIsTextColor,!1),this.maxSize=Math.max(0,i.a.deflt(t.maxSize,1/0))}},function(e,t,n){t.__esModule=!0;var r,a=n(79),i=(r=a)&&r.__esModule?r:{default:r};t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return(0,i.default)(e)}},function(e,t,n){var r=n(81)(!0);n(48)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(87),a=n(53);e.exports=Object.keys||function(e){return r(e,a)}},function(e,t,n){var r=n(49),a=n(38);e.exports=function(e){return r(a(e))}},function(e,t,n){var r=n(52)("keys"),a=n(32);e.exports=function(e){return r[e]||(r[e]=a(e))}},function(e,t,n){t.a=function(e){var t=!0,n=!1,r=void 0;try{for(var a,i=o()(l);!(t=(a=i.next()).done);t=!0){var s=a.value,c=!0,u=!1,d=void 0;try{for(var p,m=o()(s.blocks);!(c=(p=m.next()).done);c=!0){var g=p.value;if(e>=g[0]&&e<=g[1])return s.name}}catch(e){u=!0,d=e}finally{try{!c&&m.return&&m.return()}finally{if(u)throw d}}}}catch(e){n=!0,r=e}finally{try{!t&&i.return&&i.return()}finally{if(n)throw r}}return null},t.b=function(e){for(var t=0;t<s.length;t+=2)if(e>=s[t]&&e<=s[t+1])return!0;return!1};var r=n(35),a=n.n(r),i=n(18),o=n.n(i),l=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var s=[];l.forEach(function(e){return e.blocks.forEach(function(e){return s.push.apply(s,a()(e))})})},function(e,t,n){var r=n(7),a=n.n(r),i=n(10),o=n.n(i),l=n(30),s=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],c=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],u=function(e,t){return t.size<2?e:s[e-1][t.size-1]},d=function(){function e(t){a()(this,e),this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.fontFamily=t.fontFamily,this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=c[this.size-1],this.maxSize=t.maxSize,this._fontMetrics=void 0}return o()(e,[{key:"extend",value:function(t){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);return new e(n)}},{key:"havingStyle",value:function(e){return this.style===e?this:this.extend({style:e,size:u(this.textSize,e)})}},{key:"havingCrampedStyle",value:function(){return this.havingStyle(this.style.cramp())}},{key:"havingSize",value:function(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:c[e-1]})}},{key:"havingBaseStyle",value:function(t){t=t||this.style.text();var n=u(e.BASESIZE,t);return this.size===n&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:n})}},{key:"withColor",value:function(e){return this.extend({color:e})}},{key:"withPhantom",value:function(){return this.extend({phantom:!0})}},{key:"withFontFamily",value:function(e){return this.extend({fontFamily:e||this.fontFamily})}},{key:"withFontWeight",value:function(e){return this.extend({fontWeight:e})}},{key:"withFontShape",value:function(e){return this.extend({fontShape:e})}},{key:"sizingClasses",value:function(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}},{key:"baseSizingClasses",value:function(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]}},{key:"fontMetrics",value:function(){return this._fontMetrics||(this._fontMetrics=l.a.getFontMetrics(this.size)),this._fontMetrics}},{key:"getColor",value:function(){return this.phantom?"transparent":null!=this.color&&e.colorMap.hasOwnProperty(this.color)?e.colorMap[this.color]:this.color}}]),e}();d.BASESIZE=6,d.colorMap={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6","katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2","katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"},t.a=d},function(e,t,n){var r=n(6),a=n(9),i=n(12),o=n(0),l=n(30),s=n(28),c=n(5),u=function(e,t,n){return s.a.math[e]&&s.a.math[e].replace?l.a.getCharacterMetrics(s.a.math[e].replace,t,n):l.a.getCharacterMetrics(e,t,n)},d=function(e,t,n,r){var a=n.havingBaseStyle(t),i=o.a.makeSpan((r||[]).concat(a.sizingClasses(n)),[e],n);return i.delimSizeMultiplier=a.sizeMultiplier/n.sizeMultiplier,i.height*=i.delimSizeMultiplier,i.depth*=i.delimSizeMultiplier,i.maxFontSize=a.sizeMultiplier,i},p=function(e,t,n){var r=t.havingBaseStyle(n),a=(1-t.sizeMultiplier/r.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=a+"em",e.height-=a,e.depth+=a},m=function(e,t,n,r,i,l){var s=function(e,t,n,r){return o.a.makeSymbol(e,"Size"+t+"-Regular",n,r)}(e,t,i,r),c=d(o.a.makeSpan(["delimsizing","size"+t],[s],r),a.a.TEXT,r,l);return n&&p(c,r,a.a.TEXT),c},g=function(e,t,n){var r=void 0;return"Size1-Regular"===t?r="delim-size1":"Size4-Regular"===t&&(r="delim-size4"),{type:"elem",elem:o.a.makeSpan(["delimsizinginner",r],[o.a.makeSpan([],[o.a.makeSymbol(e,t,n)])])}},h=function(e,t,n,r,i,l){var s=void 0,c=void 0,p=void 0,m=void 0;s=p=m=e,c=null;var h="Size1-Regular";"\\uparrow"===e?p=m="⏐":"\\Uparrow"===e?p=m="‖":"\\downarrow"===e?s=p="⏐":"\\Downarrow"===e?s=p="‖":"\\updownarrow"===e?(s="\\uparrow",p="⏐",m="\\downarrow"):"\\Updownarrow"===e?(s="\\Uparrow",p="‖",m="\\Downarrow"):"["===e||"\\lbrack"===e?(s="⎡",p="⎢",m="⎣",h="Size4-Regular"):"]"===e||"\\rbrack"===e?(s="⎤",p="⎥",m="⎦",h="Size4-Regular"):"\\lfloor"===e?(p=s="⎢",m="⎣",h="Size4-Regular"):"\\lceil"===e?(s="⎡",p=m="⎢",h="Size4-Regular"):"\\rfloor"===e?(p=s="⎥",m="⎦",h="Size4-Regular"):"\\rceil"===e?(s="⎤",p=m="⎥",h="Size4-Regular"):"("===e?(s="⎛",p="⎜",m="⎝",h="Size4-Regular"):")"===e?(s="⎞",p="⎟",m="⎠",h="Size4-Regular"):"\\{"===e||"\\lbrace"===e?(s="⎧",c="⎨",m="⎩",p="⎪",h="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(s="⎫",c="⎬",m="⎭",p="⎪",h="Size4-Regular"):"\\lgroup"===e?(s="⎧",m="⎩",p="⎪",h="Size4-Regular"):"\\rgroup"===e?(s="⎫",m="⎭",p="⎪",h="Size4-Regular"):"\\lmoustache"===e?(s="⎧",m="⎭",p="⎪",h="Size4-Regular"):"\\rmoustache"===e&&(s="⎫",m="⎩",p="⎪",h="Size4-Regular");var f=u(s,h,i),_=f.height+f.depth,E=u(p,h,i),T=E.height+E.depth,b=u(m,h,i),v=b.height+b.depth,A=0,S=1;if(null!==c){var y=u(c,h,i);A=y.height+y.depth,S=2}var N=_+v+A,C=Math.ceil((t-N)/(S*T)),O=N+C*S*T,M=r.fontMetrics().axisHeight;n&&(M*=r.sizeMultiplier);var x=O/2-M,w=[];if(w.push(g(m,h,i)),null===c)for(var R=0;R<C;R++)w.push(g(p,h,i));else{for(var D=0;D<C;D++)w.push(g(p,h,i));w.push(g(c,h,i));for(var I=0;I<C;I++)w.push(g(p,h,i))}w.push(g(s,h,i));var k=r.havingBaseStyle(a.a.TEXT),L=o.a.makeVList({positionType:"bottom",positionData:x,children:w},k);return d(o.a.makeSpan(["delimsizing","mult"],[L],k),a.a.TEXT,r,l)},f=function(e,t,n,r){var a=void 0;"sqrtTall"===e&&(a="M702 80H400000v40H742v"+(n-54-80)+"l-4 4-4 4c-.667.7\n-2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1h-12l-28-84c-16.667-52-96.667\n-294.333-240-727l-212 -643 -85 170c-4-3.333-8.333-7.667-13 -13l-13-13l77-155\n 77-156c66 199.333 139 419.667 219 661 l218 661zM702 80H400000v40H742z");var l=new i.a.pathNode(e,a),s=new i.a.svgNode([l],{width:"400em",height:t+"em",viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return o.a.makeSpan(["hide-tail"],[s],r)},_=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"],E=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"],T=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],b=[0,1.2,1.8,2.4,3],v=[{type:"small",style:a.a.SCRIPTSCRIPT},{type:"small",style:a.a.SCRIPT},{type:"small",style:a.a.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],A=[{type:"small",style:a.a.SCRIPTSCRIPT},{type:"small",style:a.a.SCRIPT},{type:"small",style:a.a.TEXT},{type:"stack"}],S=[{type:"small",style:a.a.SCRIPTSCRIPT},{type:"small",style:a.a.SCRIPT},{type:"small",style:a.a.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],y=function(e,t,n,r){for(var a,i=Math.min(2,3-r.style.size);i<n.length&&"stack"!==n[i].type;i++){var o=u(e,"small"===(a=n[i]).type?"Main-Regular":"large"===a.type?"Size"+a.size+"-Regular":"stack"===a.type?"Size4-Regular":void 0,"math"),l=o.height+o.depth;if("small"===n[i].type&&(l*=r.havingBaseStyle(n[i].style).sizeMultiplier),l>t)return n[i]}return n[n.length-1]},N=function(e,t,n,r,a,i){"<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle");var l=void 0;l=c.a.contains(T,e)?v:c.a.contains(_,e)?S:A;var s=y(e,t,l,r);return"small"===s.type?function(e,t,n,r,a,i){var l=o.a.makeSymbol(e,"Main-Regular",a,r),s=d(l,t,r,i);return n&&p(s,r,t),s}(e,s.style,n,r,a,i):"large"===s.type?m(e,s.size,n,r,a,i):h(e,t,n,r,a,i)};t.a={sqrtImage:function(e,t){var n=y("\\surd",e,S,t),r=void 0,a=t.sizeMultiplier,i=0,o=0,l=0;"small"===n.type?(l=1080,o=1*(a=t.havingBaseStyle(n.style).sizeMultiplier/t.sizeMultiplier),(r=f("sqrtMain",i=1.08*a,l,t)).style.minWidth="0.853em",r.advanceWidth=.833*a):"large"===n.type?(l=1080*b[n.size],o=b[n.size]/a,i=(b[n.size]+.08)/a,(r=f("sqrtSize"+n.size,i,l,t)).style.minWidth="1.02em",r.advanceWidth=1/a):(i=e/a+.08,o=e/a,l=Math.floor(1e3*e)+80,(r=f("sqrtTall",i,l,t)).style.minWidth="0.742em",r.advanceWidth=1.056/a);return r.height=o,r.style.height=i+"em",{span:r,ruleWidth:t.fontMetrics().sqrtRuleThickness*a}},sizedDelim:function(e,t,n,a,i){if("<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),c.a.contains(_,e)||c.a.contains(T,e))return m(e,t,!1,n,a,i);if(c.a.contains(E,e))return h(e,b[t],!1,n,a,i);throw new r.a("Illegal delimiter: '"+e+"'")},customSizedDelim:N,leftRightDelim:function(e,t,n,r,a,i){var o=r.fontMetrics().axisHeight*r.sizeMultiplier,l=5/r.fontMetrics().ptPerEm,s=Math.max(t-o,n+o),c=Math.max(s/500*901,2*s-l);return N(e,c,!0,r,a,i)}}},function(e,t,n){var r=n(20),a=n(16).document,i=r(a)&&r(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},function(e,t,n){var r=n(25),a=n(8),i=n(24);e.exports=function(e,t){var n=(a.Object||{})[e]||Object[e],o={};o[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",o)}},function(e,t,n){var r=n(72);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,a){return e.call(t,n,r,a)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){var r=n(82),a=n(25),i=n(83),o=n(26),l=n(21),s=n(17),c=n(84),u=n(54),d=n(91),p=n(11)("iterator"),m=!([].keys&&"next"in[].keys()),g=function(){return this};e.exports=function(e,t,n,h,f,_,E){c(n,t,h);var T,b,v,A=function(e){if(!m&&e in C)return C[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},S=t+" Iterator",y="values"==f,N=!1,C=e.prototype,O=C[p]||C["@@iterator"]||f&&C[f],M=O||A(f),x=f?y?A("entries"):M:void 0,w="Array"==t&&C.entries||O;if(w&&(v=d(w.call(new e)))!==Object.prototype&&(u(v,S,!0),r||l(v,p)||o(v,p,g)),y&&O&&"values"!==O.name&&(N=!0,M=function(){return O.call(this)}),r&&!E||!m&&!N&&C[p]||o(C,p,M),s[t]=M,s[S]=g,f)if(T={values:y?M:A("values"),keys:_?M:A("keys"),entries:x},E)for(b in T)b in C||i(C,b,T[b]);else a(a.P+a.F*(m||N),t,T);return T}},function(e,t,n){var r=n(50);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(37),a=Math.min;e.exports=function(e){return e>0?a(r(e),9007199254740991):0}},function(e,t,n){var r=n(16),a=r["__core-js_shared__"]||(r["__core-js_shared__"]={});e.exports=function(e){return a[e]||(a[e]={})}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(15).f,a=n(21),i=n(11)("toStringTag");e.exports=function(e,t,n){e&&!a(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){var r=n(56),a=n(11)("iterator"),i=n(17);e.exports=n(8).getIteratorMethod=function(e){if(void 0!=e)return e[a]||e["@@iterator"]||i[r(e)]}},function(e,t,n){var r=n(50),a=n(11)("toStringTag"),i="Arguments"==r(function(){return arguments}());e.exports=function(e){var t,n,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),a))?n:i?r(t):"Object"==(o=r(t))&&"function"==typeof t.callee?"Arguments":o}},function(e,t,n){t.__esModule=!0;var r=i(n(97)),a=i(n(18));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(){return function(e,t){if(Array.isArray(e))return e;if((0,r.default)(Object(e)))return function(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var l,s=(0,a.default)(e);!(r=(l=s.next()).done)&&(n.push(l.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&s.return&&s.return()}finally{if(i)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t,n){n(99);for(var r=n(16),a=n(26),i=n(17),o=n(11)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],s=0;s<5;s++){var c=l[s],u=r[c],d=u&&u.prototype;d&&!d[o]&&a(d,o,c),i[c]=i.Array}},function(e,t,n){t.a={"AMS-Regular":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1187],8674:[-.064,.437,0,0,1167],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},"Fraktur-Regular":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],824:[.19444,.69444,0,0,0],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444]},"Main-BoldItalic":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,0],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,0],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],824:[.19444,.69444,0,0,0],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1015],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,889],8617:[.011,.511,0,0,1015],8618:[.011,.511,0,0,1015],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,889],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,667],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,666],8800:[.215,.716,0,0,666],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,692],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,847],8942:[.03,.9,0,0,121],8943:[-.19,.31,0,0,1015],8945:[-.1,.82,0,0,1015],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,301],9137:[.244,.744,0,0,301],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,184],10223:[.244,.744,0,0,184],10229:[.011,.511,0,0,1470],10230:[.011,.511,0,0,1469],10231:[.011,.511,0,0,1748],10232:[.024,.525,0,0,1497],10233:[.024,.525,0,0,1526],10234:[.024,.525,0,0,1746],10236:[.011,.511,0,0,1498],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778]},"Math-BoldItalic":{47:[.19444,.69444,0,0,0],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},"Math-Italic":{47:[.19444,.69444,0,0,0],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"Math-Regular":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"SansSerif-Bold":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],176:[0,.69444,0,0,.66667],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],733:[0,.69444,0,0,.5],771:[0,.67659,0,0,.5],776:[0,.67937,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},"Size1-Regular":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],176:[0,.61111,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}}},function(e,t,n){t.a=c;var r=n(0),a=n(3),i=n(1),o=n(5),l=n(4),s=n(2);function c(e,t,n){for(var a=l.a(e,t,!1),i=t.sizeMultiplier/n.sizeMultiplier,s=0;s<a.length;s++){var c=o.a.indexOf(a[s].classes,"sizing");c<0?Array.prototype.push.apply(a[s].classes,t.sizingClasses(n)):a[s].classes[c+1]==="reset-size"+t.size&&(a[s].classes[c+1]="reset-size"+n.size),a[s].height*=i,a[s].depth*=i}return r.a.makeFragment(a)}var u=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Object(a.b)({type:"sizing",names:u,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.breakOnTokenText,r=e.funcName,a=e.parser;a.consumeSpaces();var i=a.parseExpression(!1,n);return{type:"sizing",size:o.a.indexOf(u,r)+1,value:i}},htmlBuilder:function(e,t){var n=t.havingSize(e.value.size);return c(e.value.value,n,t)},mathmlBuilder:function(e,t){var n=t.havingSize(e.value.size),r=s.a(e.value.value,n),a=new i.a.MathNode("mstyle",r);return a.setAttribute("mathsize",n.sizeMultiplier+"em"),a}})},function(e,t,n){n.d(t,"a",function(){return i}),t.b=function(e){for(var t=e.type,n=e.names,o=e.props,l=e.handler,s=e.htmlBuilder,c=e.mathmlBuilder,u={numArgs:o.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:l},d=0;d<n.length;++d)i[n[d]]=u;s&&(r.d[t]=s);c&&(a.d[t]=c)};var r=n(4),a=n(2),i=(n(43),n(14),{})},function(e,t,n){n.d(t,"a",function(){return p}),n.d(t,"b",function(){return g});var r=n(7),a=n.n(r),i=n(10),o=n.n(i),l=n(145),s=n.n(l),c=n(6),u=n(31),d=n(27),p=new RegExp("[̀-ͯ]+$"),m=new RegExp("([ \r\n\t]+)|(%[^\n]*[\n]|[!-\\[\\]-‧‪-퟿豈-￿][̀-ͯ]*|[\ud800-\udbff][\udc00-\udfff][̀-ͯ]*|\\\\verb\\*([^]).*?\\3|\\\\verb([^*a-zA-Z]).*?\\4|\\\\[a-zA-Z@]+|\\\\[^\ud800-\udfff])"),g=new RegExp("^\\\\[a-zA-Z@]+"),h=new RegExp("^%[^\n]*[\n]"),f=function(){function e(t){a()(this,e),this.input=t,this.pos=0}return o()(e,[{key:"lex",value:function(){var e=this.input,t=this.pos;if(t===e.length)return new d.a("EOF",new u.a(this,t,t));var n=s()(m,e,t);if(null===n)throw new c.a("Unexpected character: '"+e[t]+"'",new d.a(e[t],new u.a(this,t,t+1)));var r=n[2]||" ",a=this.pos;this.pos+=n[0].length;var i=this.pos;return h.test(r)?this.lex():new d.a(r,new u.a(this,a,i))}}]),e}();t.c=f},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(64),a=(n.n(r),n(65));t.default=a.a},function(e,t){},function(e,t,n){var r=n(6),a=n(34),i=n(76),o=n(113),l=n(5),s=function(e,t,n){l.a.clearNode(t);var r=c(e,n).toNode();t.appendChild(r)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),s=function(){throw new r.a("KaTeX doesn't work in quirks mode.")});var c=function(e,t){var n=new a.a(t),r=Object(o.a)(e,n);return Object(i.b)(r,e,n)};t.a={render:s,renderToString:function(e,t){return c(e,t).toMarkup()},ParseError:r.a,__parse:function(e,t){var n=new a.a(t);return Object(o.a)(e,n)},__renderToDomTree:c,__renderToHTMLTree:function(e,t){var n=new a.a(t),r=Object(o.a)(e,n);return Object(i.a)(r,e,n)}}},function(e,t,n){e.exports={default:n(67),__esModule:!0}},function(e,t,n){n(68),e.exports=n(8).Object.freeze},function(e,t,n){var r=n(20),a=n(69).onFreeze;n(46)("freeze",function(e){return function(t){return e&&r(t)?e(a(t)):t}})},function(e,t,n){var r=n(32)("meta"),a=n(20),i=n(21),o=n(15).f,l=0,s=Object.isExtensible||function(){return!0},c=!n(24)(function(){return s(Object.preventExtensions({}))}),u=function(e){o(e,r,{value:{i:"O"+ ++l,w:{}}})},d=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!a(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!s(e))return"F";if(!t)return"E";u(e)}return e[r].i},getWeak:function(e,t){if(!i(e,r)){if(!s(e))return!0;if(!t)return!1;u(e)}return e[r].w},onFreeze:function(e){return c&&d.NEED&&s(e)&&!i(e,r)&&u(e),e}}},function(e,t,n){e.exports=!n(23)&&!n(24)(function(){return 7!=Object.defineProperty(n(45)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var r=n(20);e.exports=function(e,t){if(!r(e))return e;var n,a;if(t&&"function"==typeof(n=e.toString)&&!r(a=n.call(e)))return a;if("function"==typeof(n=e.valueOf)&&!r(a=n.call(e)))return a;if(!t&&"function"==typeof(n=e.toString)&&!r(a=n.call(e)))return a;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){e.exports={default:n(74),__esModule:!0}},function(e,t,n){n(75);var r=n(8).Object;e.exports=function(e,t,n){return r.defineProperty(e,t,n)}},function(e,t,n){var r=n(25);r(r.S+r.F*!n(23),"Object",{defineProperty:n(15).f})},function(e,t,n){n.d(t,"b",function(){return c}),n.d(t,"a",function(){return u});var r=n(4),a=n(2),i=n(0),o=n(43),l=(n(34),n(9)),s=function(e){return new o.a({style:e.displayMode?l.a.DISPLAY:l.a.TEXT,maxSize:e.maxSize})},c=function(e,t,n){var o=s(n),l=Object(a.c)(e,t,o),c=Object(r.c)(e,o),u=i.a.makeSpan(["katex"],[l,c]);return n.displayMode?i.a.makeSpan(["katex-display"],[u]):u},u=function(e,t,n){var a=s(n),o=Object(r.c)(e,a),l=i.a.makeSpan(["katex"],[o]);return n.displayMode?i.a.makeSpan(["katex-display"],[l]):l}},function(e,t,n){e.exports={default:n(78),__esModule:!0}},function(e,t,n){var r=n(8),a=r.JSON||(r.JSON={stringify:JSON.stringify});e.exports=function(e){return a.stringify.apply(a,arguments)}},function(e,t,n){e.exports={default:n(80),__esModule:!0}},function(e,t,n){n(36),n(92),e.exports=n(8).Array.from},function(e,t,n){var r=n(37),a=n(38);e.exports=function(e){return function(t,n){var i,o,l=String(a(t)),s=r(n),c=l.length;return s<0||s>=c?e?"":void 0:(i=l.charCodeAt(s))<55296||i>56319||s+1===c||(o=l.charCodeAt(s+1))<56320||o>57343?e?l.charAt(s):i:e?l.slice(s,s+2):o-56320+(i-55296<<10)+65536}}},function(e,t){e.exports=!0},function(e,t,n){e.exports=n(26)},function(e,t,n){var r=n(85),a=n(33),i=n(54),o={};n(26)(o,n(11)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(o,{next:a(1,n)}),i(e,t+" Iterator")}},function(e,t,n){var r=n(22),a=n(86),i=n(53),o=n(41)("IE_PROTO"),l=function(){},s=function(){var e,t=n(45)("iframe"),r=i.length;for(t.style.display="none",n(90).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),s=e.F;r--;)delete s.prototype[i[r]];return s()};e.exports=Object.create||function(e,t){var n;return null!==e?(l.prototype=r(e),n=new l,l.prototype=null,n[o]=e):n=s(),void 0===t?n:a(n,t)}},function(e,t,n){var r=n(15),a=n(22),i=n(39);e.exports=n(23)?Object.defineProperties:function(e,t){a(e);for(var n,o=i(t),l=o.length,s=0;l>s;)r.f(e,n=o[s++],t[n]);return e}},function(e,t,n){var r=n(21),a=n(40),i=n(88)(!1),o=n(41)("IE_PROTO");e.exports=function(e,t){var n,l=a(e),s=0,c=[];for(n in l)n!=o&&r(l,n)&&c.push(n);for(;t.length>s;)r(l,n=t[s++])&&(~i(c,n)||c.push(n));return c}},function(e,t,n){var r=n(40),a=n(51),i=n(89);e.exports=function(e){return function(t,n,o){var l,s=r(t),c=a(s.length),u=i(o,c);if(e&&n!=n){for(;c>u;)if((l=s[u++])!=l)return!0}else for(;c>u;u++)if((e||u in s)&&s[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var r=n(37),a=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?a(e+t,0):i(e,t)}},function(e,t,n){e.exports=n(16).document&&document.documentElement},function(e,t,n){var r=n(21),a=n(29),i=n(41)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=a(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},function(e,t,n){var r=n(47),a=n(25),i=n(29),o=n(93),l=n(94),s=n(51),c=n(95),u=n(55);a(a.S+a.F*!n(96)(function(e){}),"Array",{from:function(e){var t,n,a,d,p=i(e),m="function"==typeof this?this:Array,g=arguments.length,h=g>1?arguments[1]:void 0,f=void 0!==h,_=0,E=u(p);if(f&&(h=r(h,g>2?arguments[2]:void 0,2)),void 0==E||m==Array&&l(E))for(n=new m(t=s(p.length));t>_;_++)c(n,_,f?h(p[_],_):p[_]);else for(d=E.call(p),n=new m;!(a=d.next()).done;_++)c(n,_,f?o(d,h,[a.value,_],!0):a.value);return n.length=_,n}})},function(e,t,n){var r=n(22);e.exports=function(e,t,n,a){try{return a?t(r(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&r(i.call(e)),t}}},function(e,t,n){var r=n(17),a=n(11)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||i[a]===e)}},function(e,t,n){var r=n(15),a=n(33);e.exports=function(e,t,n){t in e?r.f(e,t,a(0,n)):e[t]=n}},function(e,t,n){var r=n(11)("iterator"),a=!1;try{[7][r]().return=function(){a=!0}}catch(e){}e.exports=function(e,t){if(!t&&!a)return!1;var n=!1;try{var i=[7],o=i[r]();o.next=function(){return{done:n=!0}},i[r]=function(){return o},e(i)}catch(e){}return n}},function(e,t,n){e.exports={default:n(98),__esModule:!0}},function(e,t,n){n(58),n(36),e.exports=n(102)},function(e,t,n){var r=n(100),a=n(101),i=n(17),o=n(40);e.exports=n(48)(Array,"Array",function(e,t){this._t=o(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,a(1)):a(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){var r=n(56),a=n(11)("iterator"),i=n(17);e.exports=n(8).isIterable=function(e){var t=Object(e);return void 0!==t[a]||"@@iterator"in t||i.hasOwnProperty(r(t))}},function(e,t,n){n(58),n(36),e.exports=n(104)},function(e,t,n){var r=n(22),a=n(55);e.exports=n(8).getIterator=function(e){var t=a(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return r(t.call(e))}},function(e,t,n){e.exports={default:n(106),__esModule:!0}},function(e,t,n){n(107),e.exports=n(8).Object.assign},function(e,t,n){var r=n(25);r(r.S+r.F,"Object",{assign:n(108)})},function(e,t,n){var r=n(39),a=n(109),i=n(110),o=n(29),l=n(49),s=Object.assign;e.exports=!s||n(24)(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=s({},e)[n]||Object.keys(s({},t)).join("")!=r})?function(e,t){for(var n=o(e),s=arguments.length,c=1,u=a.f,d=i.f;s>c;)for(var p,m=l(arguments[c++]),g=u?r(m).concat(u(m)):r(m),h=g.length,f=0;h>f;)d.call(m,p=g[f++])&&(n[p]=m[p]);return n}:s},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r={stdHorizRule:"M0 80H400000 v40H0z M0 80H400000 v40H0z",vertSeparator:"M100 0h50V400000h-50zM100 0h50V400000h-50z",sqrtMain:"M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,\n-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8,\n-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0,\n35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5,\n-221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467\ns-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422\ns-65,47,-65,47z M834 80H400000v40H845z",sqrtSize1:"M263,681c0.7,0,18,39.7,52,119c34,79.3,68.167,\n158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120c340,-704.7,510.7,-1060.3,512,-1067\nc4.7,-7.3,11,-11,19,-11H40000v40H1012.3s-271.3,567,-271.3,567c-38.7,80.7,-84,\n175,-136,283c-52,108,-89.167,185.3,-111.5,232c-22.3,46.7,-33.8,70.3,-34.5,71\nc-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1s-109,-253,-109,-253c-72.7,-168,-109.3,\n-252,-110,-252c-10.7,8,-22,16.7,-34,26c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26\ns76,-59,76,-59s76,-60,76,-60z M1001 80H40000v40H1012z",sqrtSize2:"M1001,80H400000v40H1013.1s-83.4,268,-264.1,840c-180.7,\n572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,\n-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744c-10,12,-21,25,-33,39s-32,39,-32,39\nc-6,-5.3,-15,-14,-27,-26s25,-30,25,-30c26.7,-32.7,52,-63,76,-91s52,-60,52,-60\ns208,722,208,722c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,\n-658.5c53.7,-170.3,84.5,-266.8,92.5,-289.5c4,-6.7,10,-10,18,-10z\nM1001 80H400000v40H1013z",sqrtSize3:"M424,2478c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,\n-342,-109.8,-513.3,-110.5,-514c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,\n25c-5.7,9.3,-9.8,16,-12.5,20s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,\n-13s76,-122,76,-122s77,-121,77,-121s209,968,209,968c0,-2,84.7,-361.7,254,-1079\nc169.3,-717.3,254.7,-1077.7,256,-1081c4,-6.7,10,-10,18,-10H400000v40H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M1001 80H400000v40H1014z",sqrtSize4:"M473,2793c339.3,-1799.3,509.3,-2700,510,-2702\nc3.3,-7.3,9.3,-11,18,-11H400000v40H1017.7s-90.5,478,-276.2,1466c-185.7,988,\n-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,\n-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200c0,-1.3,-5.3,8.7,-16,30c-10.7,\n21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26s76,-153,76,-153s77,-151,\n77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,606z\nM1001 80H400000v40H1017z",doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",baraboveleftarrow:"M1 500c30.67-18 59-41.833 85-71.5s45-61.17 57-94.5h23\nc15.33 0 23 .33 23 1 0 .67-5.33 12.67-16 36-16.67 34.67-39 67.33-67 98l-10 11\nh39904v40H96l9 10c27.33 30.67 50.67 65 70 103l14 33c0 .67-7.67 1-23 1h-22\nC116.67 596.33 69 540.67 1 500z M96 480 H400000 v40 H96z\nM1 147 H399905 v40 H1z M0 147 H399905 v40 H0z",rightarrowabovebar:"M400000 167c-70.67 42-118 97.67-142 167h-23c-15.33 0\n-23-.33-23-1 0-1.33 5.33-13.67 16-37 18-35.33 41.33-69 70-101l7-8h-39905\nv-40h39905c-389 0 0 0 0 0l-7-8c-28.67-32-52-65.67-70-101-10.67-23.33-16-35.67\n-16-37 0-.67 7.67-1 23-1h23c11.33 33.33 30 64.833 56 94.5s54.67 53.83 86 72.5z\nM0 147 H399905 v40 H0z M96 480 H400000 v40 H0z M96 480 H400000 v40 H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"};t.a={path:r}},function(e,t,n){n.d(t,"a",function(){return o}),n.d(t,"b",function(){return l});var r={number:3,unit:"mu"},a={number:4,unit:"mu"},i={number:5,unit:"mu"},o={mord:{mop:r,mbin:a,mrel:i,minner:r},mop:{mord:r,mop:r,mrel:i,minner:r},mbin:{mord:a,mop:a,mopen:a,minner:a},mrel:{mord:i,mop:i,mopen:i,minner:i},mopen:{},mclose:{mop:r,mbin:a,mrel:i,minner:r},mpunct:{mord:r,mop:r,mrel:i,mopen:r,mclose:r,mpunct:r,minner:r},minner:{mord:r,mop:r,mbin:a,mrel:i,mopen:r,mpunct:r,minner:r}},l={mord:{mop:r},mop:{mord:r,mop:r},mbin:{},mrel:{},mopen:{},mclose:{mop:r},mpunct:{},minner:{mop:r}}},function(e,t,n){var r=n(114);t.a=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");return new r.a(e,t).parse()}},function(e,t,n){var r=n(7),a=n.n(r),i=n(10),o=n.n(i),l=n(115),s=n(142),c=n(144),u=n(28),d=n(19),p=n(42),m=n(148),g=n.n(m),h=n(149),f=n(14),_=n(6),E=n(62);n(34),n(27);function T(e,t){return{type:"arg",result:e,token:t}}function b(e){if("$"===e.type)throw new _.a("Unexpected $",e.token);return e}var v=function(){function e(t,n){a()(this,e),this.mode="math",this.gullet=new c.a(t,n.macros,this.mode),n.colorIsTextColor&&(this.gullet.macros["\\color"]="\\textcolor"),this.settings=n,this.leftrightDepth=0}return o()(e,[{key:"expect",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.nextToken.text!==e)throw new _.a("Expected '"+e+"', got '"+this.nextToken.text+"'",this.nextToken);t&&this.consume()}},{key:"consume",value:function(){this.nextToken=this.gullet.expandNextToken()}},{key:"switchMode",value:function(e){this.mode=e,this.gullet.switchMode(e)}},{key:"parse",value:function(){this.consume();var e=this.parseInput();return e}},{key:"parseInput",value:function(){var e=this.parseExpression(!1);return this.expect("EOF",!1),e}},{key:"parseExpression",value:function(t,n){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.nextToken;if(-1!==e.endOfExpression.indexOf(a.text))break;if(n&&a.text===n)break;if(t&&l.a[a.text]&&l.a[a.text].infix)break;var i=this.parseAtom(n);if(!i){if(!this.settings.throwOnError&&"\\"===a.text[0]){var o=this.handleUnsupportedCmd();r.push(o);continue}break}r.push(i)}return this.handleInfixNodes(r)}},{key:"handleInfixNodes",value:function(e){for(var t=-1,n=void 0,r=0;r<e.length;r++){var a=e[r];if("infix"===a.type){if(-1!==t)throw new _.a("only one infix operator per group",a.value.token);t=r,n=a.value.replaceWith}}if(-1!==t&&n){var i=void 0,o=void 0,l=e.slice(0,t),s=e.slice(t+1);i=1===l.length&&"ordgroup"===l[0].type?l[0]:new f.a("ordgroup",l,this.mode),o=1===s.length&&"ordgroup"===s[0].type?s[0]:new f.a("ordgroup",s,this.mode);var c=this.callFunction(n,[i,o],[]);return[new f.a(c.type,c,this.mode)]}return e}},{key:"handleSupSubscript",value:function(t){var n=this.nextToken,r=n.text;this.consume(),this.consumeSpaces();var a=this.parseGroup();if(!a){if(this.settings.throwOnError||"\\"!==this.nextToken.text[0])throw new _.a("Expected group after '"+r+"'",n);return this.handleUnsupportedCmd()}var i=b(a);if("fn"===i.type){if(l.a[i.result].greediness>e.SUPSUB_GREEDINESS)return this.parseGivenFunction(a);throw new _.a("Got function '"+i.result+"' with no arguments as "+t,n)}return i.result}},{key:"handleUnsupportedCmd",value:function(){for(var e=this.nextToken.text,t=[],n=0;n<e.length;n++)t.push(new f.a("textord",e[n],"text"));var r=new f.a("text",{body:t,type:"text"},this.mode),a=new f.a("color",{color:this.settings.errorColor,value:[r],type:"color"},this.mode);return this.consume(),a}},{key:"parseAtom",value:function(e){var t=this.parseImplicitGroup(e);if("text"===this.mode)return t;for(var n=void 0,r=void 0;;){this.consumeSpaces();var a=this.nextToken;if("\\limits"===a.text||"\\nolimits"===a.text){if(!t||"op"!==t.type)throw new _.a("Limit controls must follow a math operator",a);var i="\\limits"===a.text;t.value.limits=i,t.value.alwaysHandleSupSub=!0,this.consume()}else if("^"===a.text){if(n)throw new _.a("Double superscript",a);n=this.handleSupSubscript("superscript")}else if("_"===a.text){if(r)throw new _.a("Double subscript",a);r=this.handleSupSubscript("subscript")}else{if("'"!==a.text)break;if(n)throw new _.a("Double superscript",a);var o=new f.a("textord","\\prime",this.mode),l=[o];for(this.consume();"'"===this.nextToken.text;)l.push(o),this.consume();"^"===this.nextToken.text&&l.push(this.handleSupSubscript("superscript")),n=new f.a("ordgroup",l,this.mode)}}return n||r?new f.a("supsub",{base:t,sup:n,sub:r},this.mode):t}},{key:"parseImplicitGroup",value:function(e){var t=this.parseSymbol();if(null==t)return this.parseFunction();if("arg"===t.type)return this.parseGivenFunction(t);var n=t.result;if("$"===n){if("math"===this.mode)throw new _.a("$ within math mode");var r=this.mode;this.switchMode("math"),this.consume();var a=this.parseExpression(!1,"$");return this.expect("$",!1),this.switchMode(r),this.consume(),new f.a("styling",{style:"text",value:a},"math")}if("\\begin"===n){var i=this.parseGivenFunction(t),o=i.value.name;if(!s.a.hasOwnProperty(o))throw new _.a("No such environment: "+o,i.value.nameGroup);var l=s.a[o],c=this.parseArguments("\\begin{"+o+"}",l),u=c.args,d=c.optArgs,p={mode:this.mode,envName:o,parser:this},m=l.handler(p,u,d);this.expect("\\end",!1);var g=this.nextToken,h=this.parseFunction();if(!h)throw new _.a("failed to parse function after \\end");if(h.value.name!==o)throw new _.a("Mismatch: \\begin{"+o+"} matched by \\end{"+h.value.name+"}",g);return m}return this.parseGivenFunction(t,e)}},{key:"parseFunction",value:function(){var e=this.parseGroup();return e?this.parseGivenFunction(e):null}},{key:"parseGivenFunction",value:function(e,t){if("fn"===(e=b(e)).type){var n=e.result,r=l.a[n];if("text"===this.mode&&!r.allowedInText)throw new _.a("Can't use function '"+n+"' in text mode",e.token);if("math"===this.mode&&!1===r.allowedInMath)throw new _.a("Can't use function '"+n+"' in math mode",e.token);var a=this.parseArguments(n,r),i=a.args,o=a.optArgs,s=e.token,c=this.callFunction(n,i,o,s,t);return new f.a(c.type,c,this.mode)}return e.result}},{key:"callFunction",value:function(e,t,n,r,a){var i={funcName:e,parser:this,token:r,breakOnTokenText:a},o=l.a[e];if(o&&o.handler)return o.handler(i,t,n);throw new _.a("No function handler for "+e)}},{key:"parseArguments",value:function(e,t){var n=t.numArgs+t.numOptionalArgs;if(0===n)return{args:[],optArgs:[]};for(var r=t.greediness,a=[],i=[],o=0;o<n;o++){var s=t.argTypes&&t.argTypes[o],c=o<t.numOptionalArgs;o>0&&!c&&this.consumeSpaces(),0!==o||c||"math"!==this.mode||this.consumeSpaces();var u=this.nextToken,d=s?this.parseGroupOfType(s,c):this.parseGroup(c);if(!d){if(c){i.push(null);continue}if(this.settings.throwOnError||"\\"!==this.nextToken.text[0])throw new _.a("Expected group after '"+e+"'",u);d=T(this.handleUnsupportedCmd(),u)}var p=void 0;if("fn"===(d=b(d)).type){if(!(l.a[d.result].greediness>r))throw new _.a("Got function '"+d.result+"' as argument to '"+e+"'",u);p=this.parseGivenFunction(d)}else p=d.result;(c?i:a).push(p)}return{args:a,optArgs:i}}},{key:"parseGroupOfType",value:function(e,t){return"original"===e&&(e=this.mode),"color"===e?this.parseColorGroup(t):"size"===e?this.parseSizeGroup(t):"url"===e?this.parseUrlGroup(t):this.parseGroup(t,e)}},{key:"consumeSpaces",value:function(){for(;" "===this.nextToken.text;)this.consume()}},{key:"parseStringGroup",value:function(e,t){if(t&&"["!==this.nextToken.text)return null;var n=this.mode;this.mode="text",this.expect(t?"[":"{");for(var r="",a=this.nextToken,i=a;this.nextToken.text!==(t?"]":"}");){if("EOF"===this.nextToken.text)throw new _.a("Unexpected end of input in "+e,a.range(this.nextToken,r));r+=(i=this.nextToken).text,this.consume()}return this.mode=n,this.expect(t?"]":"}"),a.range(i,r)}},{key:"parseStringGroupWithBalancedBraces",value:function(e,t){if(t&&"["!==this.nextToken.text)return null;var n=this.mode;this.mode="text",this.expect(t?"[":"{");for(var r="",a=0,i=this.nextToken,o=i;a>0||this.nextToken.text!==(t?"]":"}");){if("EOF"===this.nextToken.text)throw new _.a("Unexpected end of input in "+e,i.range(this.nextToken,r));if(r+=(o=this.nextToken).text,"{"===o.text)a+=1;else if("}"===o.text){if(a<=0)throw new _.a("Unbalanced brace of input in "+e,i.range(this.nextToken,r));a-=1}this.consume()}return this.mode=n,this.expect(t?"]":"}"),i.range(o,r)}},{key:"parseRegexGroup",value:function(e,t){var n=this.mode;this.mode="text";for(var r=this.nextToken,a=r,i="";"EOF"!==this.nextToken.text&&e.test(i+this.nextToken.text);)i+=(a=this.nextToken).text,this.consume();if(""===i)throw new _.a("Invalid "+t+": '"+r.text+"'",r);return this.mode=n,r.range(a,i)}},{key:"parseColorGroup",value:function(e){var t=this.parseStringGroup("color",e);if(!t)return null;var n=/^(#[a-f0-9]{3}|#[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!n)throw new _.a("Invalid color: '"+t.text+"'",t);return T(new f.a("color",n[0],this.mode),t)}},{key:"parseUrlGroup",value:function(e){var t=this.parseStringGroupWithBalancedBraces("url",e);if(!t)return null;var n=t.text.replace(/\\([#$%&~_^{}])/g,"$1");return T(new f.a("url",n,this.mode),t)}},{key:"parseSizeGroup",value:function(e){var t=void 0;if(!(t=e||"{"===this.nextToken.text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!n)throw new _.a("Invalid size: '"+t.text+"'",t);var r={number:+(n[1]+n[2]),unit:n[3]};if(!Object(d.b)(r))throw new _.a("Invalid unit: '"+r.unit+"'",t);return T(new f.a("size",r,this.mode),t)}},{key:"parseGroup",value:function(e,t){var n=this.mode,r=this.nextToken;if(this.nextToken.text===(e?"[":"{")){t&&this.switchMode(t),this.consume();var a=this.parseExpression(!1,e?"]":"}"),i=this.nextToken;return t&&this.switchMode(n),this.expect(e?"]":"}"),"text"===t&&this.formLigatures(a),T(new f.a("ordgroup",a,this.mode,r,i),r.range(i,r.text))}t&&this.switchMode(t);var o=e?null:this.parseSymbol();return t&&this.switchMode(n),o}},{key:"formLigatures",value:function(e){for(var t=e.length-1,n=0;n<t;++n){var r=e[n],a=r.value;"-"===a&&"-"===e[n+1].value&&(n+1<t&&"-"===e[n+2].value?(e.splice(n,3,new f.a("textord","---","text",r,e[n+2])),t-=2):(e.splice(n,2,new f.a("textord","--","text",r,e[n+1])),t-=1)),"'"!==a&&"`"!==a||e[n+1].value!==a||(e.splice(n,2,new f.a("textord",a+a,"text",r,e[n+1])),t-=1)}}},{key:"parseSymbol",value:function(){var e,t=this.nextToken,n=t.text;if(l.a[n])return this.consume(),{type:"fn",result:(e=t).text,token:e};if(/^\\verb[^a-zA-Z]/.test(n)){this.consume();var r=n.slice(5),a="*"===r.charAt(0);if(a&&(r=r.slice(1)),r.length<2||r.charAt(0)!==r.slice(-1))throw new _.a("\\verb assertion failed --\n please report what input caused this bug");return r=r.slice(1,-1),T(new f.a("verb",{body:r,star:a},"text"),t)}if("$"===n)return function(e){return{type:"$",result:"$",token:e}}(t);h.a.hasOwnProperty(n[0])&&!u.a[this.mode][n[0]]&&(n=h.a[n[0]]+n.substr(1));var i=E.a.exec(n);i&&("i"===(n=n.substring(0,i.index))?n="ı":"j"===n&&(n="ȷ"));var o=null;if(u.a[this.mode][n])o=new f.a(u.a[this.mode][n].group,n,this.mode,t);else{if("text"!==this.mode||!Object(p.b)(n.charCodeAt(0)))return null;o=new f.a("textord",n,this.mode,t)}if(this.consume(),i)for(var s=0;s<i[0].length;s++){var c=i[0][s];if(!g.a[c])throw new _.a("Unknown accent ' "+c+"'",t);var d=g.a[c][this.mode];if(!d)throw new _.a("Accent "+c+" unsupported in "+this.mode+" mode",t);o=new f.a("accent",{type:"accent",label:d,isStretchy:!1,isShifty:!0,base:o},this.mode,t)}return T(o,t)}}]),e}();v.endOfExpression=["}","\\end","\\right","&","\\\\","\\cr"],v.SUPSUB_GREEDINESS=1,t.a=v},function(e,t,n){var r=n(6),a=n(14),i=n(3),o=(n(116),n(117),n(118),n(119),n(120),n(121),n(122),n(123),n(124),n(125),n(126),n(127),n(128),n(129),n(130),n(131),n(60),n(132),n(133),n(137),n(138),n(139),n(140),n(141),i.a);t.a=o;var l=function(e,t,n){Object(i.b)({names:e,props:t,handler:n})};l(["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],{numArgs:1},function(e,t){var n=t[0];return{type:"mclass",mclass:"m"+e.funcName.substr(5),value:Object(i.c)(n)}}),l(["\\stackrel"],{numArgs:2},function(e,t){var n=t[0],r=t[1],o=new a.a("op",{type:"op",limits:!0,alwaysHandleSupSub:!0,symbol:!1,value:Object(i.c)(r)},r.mode);return{type:"mclass",mclass:"mrel",value:[new a.a("supsub",{base:o,sup:n,sub:null},n.mode)]}});var s={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint"};l(["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],{numArgs:0},function(e){return{type:"op",limits:!1,symbol:!1,body:e.funcName}}),l(["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:!0,symbol:!1,body:e.funcName}}),l(["\\int","\\iint","\\iiint","\\oint","∫","∬","∭","∮"],{numArgs:0},function(e){var t=e.funcName;return 1===t.length&&(t=s[t]),{type:"op",limits:!1,symbol:!0,body:t}}),l(["\\overbrace","\\underbrace"],{numArgs:1},function(e,t){var n=t[0];return{type:"horizBrace",label:e.funcName,isOver:/^\\over/.test(e.funcName),base:n}}),l(["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],{numArgs:1,numOptionalArgs:1},function(e,t,n){var r=n[0],a=t[0];return{type:"xArrow",label:e.funcName,body:a,below:r}}),l(["\\over","\\choose","\\atop"],{numArgs:0,infix:!0},function(e){var t=void 0;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}}),l(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t,n){return{type:"cr",size:n[0]}}),l(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var n=t[0];if("ordgroup"!==n.type)throw new r.a("Invalid environment name",n);for(var a="",i=0;i<n.value.length;++i)a+=n.value[i].value;return{type:"environment",name:a,nameGroup:n}}),l(["\\raisebox"],{numArgs:2,argTypes:["size","text"],allowedInText:!0},function(e,t){var n=t[0],r=t[1];return{type:"raisebox",dy:n,body:r,value:Object(i.c)(r)}})},function(e,t,n){var r=n(3),a=n(0),i=n(12),o=n(1),l=n(44),s=n(9),c=n(4),u=n(2);Object(r.b)({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,n){var r=n[0];return{type:"sqrt",body:t[0],index:r}},htmlBuilder:function(e,t){var n=c.b(e.value.body,t.havingCrampedStyle());0===n.height&&(n.height=t.fontMetrics().xHeight),n instanceof i.a.documentFragment&&(n=a.a.makeSpan([],[n],t));var r=t.fontMetrics().defaultRuleThickness,o=r;t.style.id<s.a.TEXT.id&&(o=t.fontMetrics().xHeight);var u=r+o/4,d=(n.height+n.depth+u+r)*t.sizeMultiplier,p=l.a.sqrtImage(d,t),m=p.span,g=p.ruleWidth,h=m.height-g;h>n.height+n.depth+u&&(u=(u+h-n.height-n.depth)/2);var f=m.height-n.height-u-g;n.style.paddingLeft=m.advanceWidth+"em";var _=a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+f)},{type:"elem",elem:m},{type:"kern",size:g}]},t);if(e.value.index){var E=t.havingStyle(s.a.SCRIPTSCRIPT),T=c.b(e.value.index,E,t),b=.6*(_.height-_.depth),v=a.a.makeVList({positionType:"shift",positionData:-b,children:[{type:"elem",elem:T}]},t),A=a.a.makeSpan(["root"],[v]);return a.a.makeSpan(["mord","sqrt"],[A,_],t)}return a.a.makeSpan(["mord","sqrt"],[_],t)},mathmlBuilder:function(e,t){return e.value.index?new o.a.MathNode("mroot",[u.b(e.value.body,t),u.b(e.value.index,t)]):new o.a.MathNode("msqrt",[u.b(e.value.body,t)])}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(6),l=n(4),s=n(2),c=function(e,t){var n=l.a(e.value.value,t.withColor(e.value.color),!1);return new a.a.makeFragment(n)},u=function(e,t){var n=s.a(e.value.value,t),r=new i.a.MathNode("mstyle",n);return r.setAttribute("mathcolor",e.value.color),r};Object(r.b)({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","original"]},handler:function(e,t){var n=t[0],a=t[1];return{type:"color",color:n.value,value:Object(r.c)(a)}},htmlBuilder:c,mathmlBuilder:u}),Object(r.b)({type:"color",names:["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],props:{numArgs:1,allowedInText:!0,greediness:3},handler:function(e,t){var n=t[0];return{type:"color",color:"katex-"+e.funcName.slice(1),value:Object(r.c)(n)}},htmlBuilder:c,mathmlBuilder:u}),Object(r.b)({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:["color"]},handler:function(e,t){var n=e.parser,r=e.breakOnTokenText,a=t[0];if(!a)throw new o.a("\\color not followed by color");var i=n.parseExpression(!0,r);return{type:"color",color:a.value,value:i}},htmlBuilder:c,mathmlBuilder:u})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(4),l=n(2),s={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},c={"\\textbf":"textbf"},u={"\\textit":"textit"};Object(r.b)({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textit"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(e,t){var n=t[0];return{type:"text",body:Object(r.c)(n),font:e.funcName}},htmlBuilder:function(e,t){var n=e.value.font,r=void 0;r=s[n]?t.withFontFamily(s[n]):c[n]?t.withFontWeight(c[n]):t.withFontShape(u[n]);var i=o.a(e.value.body,r,!0);return a.a.tryCombineChars(i),a.a.makeSpan(["mord","text"],i,r)},mathmlBuilder:function(e,t){for(var n=e.value.body,r=[],a=null,o=0;o<n.length;o++){var s=l.b(n[o],t);"mtext"===s.type&&null!=a?Array.prototype.push.apply(a.children,s.children):(r.push(s),"mtext"===s.type&&(a=s))}return 1===r.length?r[0]:new i.a.MathNode("mrow",r)}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(5),l=n(13),s=n(4),c=n(2),u=function(e,t){var n=s.b(e.value.body,t),r=e.value.label.substr(1),i=t.sizeMultiplier,c=void 0,u=0,d=/color/.test(r);if("sout"===r)(c=a.a.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/i,u=-.5*t.fontMetrics().xHeight;else{n.classes.push(/cancel/.test(r)?"cancel-pad":"boxpad");var p=0;p=/box/.test(r)?"colorbox"===r?.3:.34:o.a.isCharacterBox(e.value.body)?.2:0,c=l.a.encloseSpan(n,r,p,t),u=n.depth+p,d&&(c.style.backgroundColor=e.value.backgroundColor.value,"fcolorbox"===r&&(c.style.borderColor=e.value.borderColor.value))}var m=void 0;return m=d?a.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:u},{type:"elem",elem:n,shift:0}]},t):a.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:c,shift:u,wrapperClasses:/cancel/.test(r)?["svg-align"]:[]}]},t),/cancel/.test(r)?a.a.makeSpan(["mord","cancel-lap"],[m],t):a.a.makeSpan(["mord"],[m],t)},d=function(e,t){var n=new i.a.MathNode("menclose",[c.b(e.value.body,t)]);switch(e.value.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\colorbox":n.setAttribute("mathbackground",e.value.backgroundColor.value);break;case"\\fcolorbox":n.setAttribute("mathbackground",e.value.backgroundColor.value),n.setAttribute("notation","box");break;default:n.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return n};Object(r.b)({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(e,t,n){var r=t[0],a=t[1];return{type:"enclose",label:e.funcName,backgroundColor:r,body:a}},htmlBuilder:u,mathmlBuilder:d}),Object(r.b)({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(e,t,n){var r=t[0],a=t[1],i=t[2];return{type:"enclose",label:e.funcName,backgroundColor:a,borderColor:r,body:i}},htmlBuilder:u,mathmlBuilder:d}),Object(r.b)({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\fbox"],props:{numArgs:1},handler:function(e,t,n){var r=t[0];return{type:"enclose",label:e.funcName,body:r}},htmlBuilder:u,mathmlBuilder:d})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(4),l=n(2);Object(r.b)({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(e,t){return{type:"overline",body:t[0]}},htmlBuilder:function(e,t){var n=o.b(e.value.body,t.havingCrampedStyle()),r=a.a.makeLineSpan("overline-line",t),i=a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:r.height},{type:"elem",elem:r}]},t);return a.a.makeSpan(["mord","overline"],[i],t)},mathmlBuilder:function(e,t){var n=new i.a.MathNode("mo",[new i.a.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new i.a.MathNode("mover",[l.b(e.value.body,t),n]);return r.setAttribute("accent","true"),r}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(4),l=n(2);Object(r.b)({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",body:t[0]}},htmlBuilder:function(e,t){var n=o.b(e.value.body,t),r=a.a.makeLineSpan("underline-line",t),i=a.a.makeVList({positionType:"top",positionData:n.height,children:[{type:"elem",elem:r},{type:"kern",size:5*r.height},{type:"elem",elem:n}]},t);return a.a.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var n=new i.a.MathNode("mo",[new i.a.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new i.a.MathNode("munder",[l.b(e.value.body,t),n]);return r.setAttribute("accentunder","true"),r}})},function(e,t,n){var r=n(0),a=n(3),i=n(1),o=n(19);Object(a.b)({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(e,t,n){var r=n[0],a=t[0],i=t[1];return{type:"rule",shift:r&&r.value,width:a.value,height:i.value}},htmlBuilder:function(e,t){var n=r.a.makeSpan(["mord","rule"],[],t),a=0;e.value.shift&&(a=Object(o.a)(e.value.shift,t));var i=Object(o.a)(e.value.width,t),l=Object(o.a)(e.value.height,t);return n.style.borderRightWidth=i+"em",n.style.borderTopWidth=l+"em",n.style.bottom=a+"em",n.width=i,n.height=l+a,n.depth=-a,n.maxFontSize=1.125*l*t.sizeMultiplier,n},mathmlBuilder:function(e,t){return new i.a.MathNode("mrow")}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(19),l=n(6);Object(r.b)({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t){var n="m"===e.funcName[1],r="mu"===t[0].value.unit;if(n){if(r||"undefined"!=typeof console&&console.warn("In LaTeX, "+e.funcName+" supports only mu units, not "+t[0].value.unit+" units"),"math"!==e.parser.mode)throw new l.a("Can't use function '"+e.funcName+"' in text mode")}else r&&"undefined"!=typeof console&&console.warn("In LaTeX, "+e.funcName+" does not support mu units");return{type:"kern",dimension:t[0].value}},htmlBuilder:function(e,t){return a.a.makeGlue(e.value.dimension,t)},mathmlBuilder:function(e,t){var n=new i.a.MathNode("mspace"),r=Object(o.a)(e.value.dimension,t);return n.setAttribute("width",r+"em"),n}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(4),l=n(2);Object(r.b)({type:"phantom",names:["\\phantom"],props:{numArgs:1},handler:function(e,t){var n=t[0];return{type:"phantom",value:Object(r.c)(n)}},htmlBuilder:function(e,t){var n=o.a(e.value.value,t.withPhantom(),!1);return new a.a.makeFragment(n)},mathmlBuilder:function(e,t){var n=l.a(e.value.value,t);return new i.a.MathNode("mphantom",n)}}),Object(r.b)({type:"hphantom",names:["\\hphantom"],props:{numArgs:1},handler:function(e,t){var n=t[0];return{type:"hphantom",value:Object(r.c)(n),body:n}},htmlBuilder:function(e,t){var n=a.a.makeSpan([],[o.b(e.value.body,t.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r<n.children.length;r++)n.children[r].height=0,n.children[r].depth=0;return n=a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},t)},mathmlBuilder:function(e,t){var n=l.a(e.value.value,t),r=new i.a.MathNode("mphantom",n);return r.setAttribute("height","0px"),r}}),Object(r.b)({type:"vphantom",names:["\\vphantom"],props:{numArgs:1},handler:function(e,t){var n=t[0];return{type:"vphantom",value:Object(r.c)(n),body:n}},htmlBuilder:function(e,t){var n=a.a.makeSpan(["inner"],[o.b(e.value.body,t.withPhantom())]),r=a.a.makeSpan(["fix"],[]);return a.a.makeSpan(["mord","rlap"],[n,r],t)},mathmlBuilder:function(e,t){var n=l.a(e.value.value,t),r=new i.a.MathNode("mphantom",n);return r.setAttribute("width","0px"),r}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(9),l=n(4),s=n(2),c=function(e,t){var n=[];if("bmod"===e.value.modType?t.style.isTight()?n.push(a.a.makeSpan(["mspace","thickspace"],[],t)):n.push(a.a.makeSpan(["mspace","muspace"],[],t)):t.style.size===o.a.DISPLAY.size?n.push(a.a.makeSpan(["mspace","quad"],[],t)):"mod"===e.value.modType?n.push(a.a.makeSpan(["mspace","twelvemuspace"],[],t)):n.push(a.a.makeSpan(["mspace","eightmuspace"],[],t)),"pod"!==e.value.modType&&"pmod"!==e.value.modType||n.push(a.a.mathsym("(",e.mode)),"pod"!==e.value.modType){var r=[a.a.mathsym("m",e.mode),a.a.mathsym("o",e.mode),a.a.mathsym("d",e.mode)];"bmod"===e.value.modType?(n.push(a.a.makeSpan(["mbin"],r,t)),t.style.isTight()?n.push(a.a.makeSpan(["mspace","thickspace"],[],t)):n.push(a.a.makeSpan(["mspace","muspace"],[],t))):(Array.prototype.push.apply(n,r),n.push(a.a.makeSpan(["mspace","sixmuspace"],[],t)))}return e.value.value&&Array.prototype.push.apply(n,l.a(e.value.value,t,!1)),"pod"!==e.value.modType&&"pmod"!==e.value.modType||n.push(a.a.mathsym(")",e.mode)),a.a.makeFragment(n)},u=function(e,t){var n=[];if("pod"!==e.value.modType&&"pmod"!==e.value.modType||n.push(new i.a.MathNode("mo",[s.e("(",e.mode)])),"pod"!==e.value.modType&&n.push(new i.a.MathNode("mo",[s.e("mod",e.mode)])),e.value.value){var r=new i.a.MathNode("mspace");r.setAttribute("width","0.333333em"),n.push(r),n=n.concat(s.a(e.value.value,t))}return"pod"!==e.value.modType&&"pmod"!==e.value.modType||n.push(new i.a.MathNode("mo",[s.e(")",e.mode)])),new i.a.MathNode("mo",n)};Object(r.b)({type:"mod",names:["\\bmod"],props:{numArgs:0},handler:function(e,t){return{type:"mod",modType:"bmod",value:null}},htmlBuilder:c,mathmlBuilder:u}),Object(r.b)({type:"mod",names:["\\pod","\\pmod","\\mod"],props:{numArgs:1},handler:function(e,t){var n=t[0];return{type:"mod",modType:e.funcName.substr(1),value:Object(r.c)(n)}},htmlBuilder:c,mathmlBuilder:u})},function(e,t,n){var r=n(3),a=n(0),i=n(12),o=n(1),l=n(5),s=n(9),c=n(4),u=n(2),d=function(e,t){var n=void 0,r=void 0,o=!1;"supsub"===e.type&&(n=e.value.sup,r=e.value.sub,e=e.value.base,o=!0);var u=t.style,d=!1;u.size===s.a.DISPLAY.size&&e.value.symbol&&!l.a.contains(["\\smallint"],e.value.body)&&(d=!0);var p=void 0;if(e.value.symbol){var m=d?"Size2-Regular":"Size1-Regular";p=a.a.makeSymbol(e.value.body,m,"math",t,["mop","op-symbol",d?"large-op":"small-op"])}else if(e.value.value){var g=c.a(e.value.value,t,!0);1===g.length&&g[0]instanceof i.a.symbolNode?(p=g[0]).classes[0]="mop":p=a.a.makeSpan(["mop"],g,t)}else{for(var h=[],f=1;f<e.value.body.length;f++)h.push(a.a.mathsym(e.value.body[f],e.mode));p=a.a.makeSpan(["mop"],h,t)}var _=0,E=0;if(p instanceof i.a.symbolNode&&(_=(p.height-p.depth)/2-t.fontMetrics().axisHeight,E=p.italic),o){p=a.a.makeSpan([],[p]);var T=void 0,b=void 0;if(n){var v=c.b(n,t.havingStyle(u.sup()),t);b={elem:v,kern:Math.max(t.fontMetrics().bigOpSpacing1,t.fontMetrics().bigOpSpacing3-v.depth)}}if(r){var A=c.b(r,t.havingStyle(u.sub()),t);T={elem:A,kern:Math.max(t.fontMetrics().bigOpSpacing2,t.fontMetrics().bigOpSpacing4-A.height)}}var S=void 0;if(b&&T){var y=t.fontMetrics().bigOpSpacing5+T.elem.height+T.elem.depth+T.kern+p.depth+_;S=a.a.makeVList({positionType:"bottom",positionData:y,children:[{type:"kern",size:t.fontMetrics().bigOpSpacing5},{type:"elem",elem:T.elem,marginLeft:-E+"em"},{type:"kern",size:T.kern},{type:"elem",elem:p},{type:"kern",size:b.kern},{type:"elem",elem:b.elem,marginLeft:E+"em"},{type:"kern",size:t.fontMetrics().bigOpSpacing5}]},t)}else if(T){var N=p.height-_;S=a.a.makeVList({positionType:"top",positionData:N,children:[{type:"kern",size:t.fontMetrics().bigOpSpacing5},{type:"elem",elem:T.elem,marginLeft:-E+"em"},{type:"kern",size:T.kern},{type:"elem",elem:p}]},t)}else{if(!b)return p;var C=p.depth+_;S=a.a.makeVList({positionType:"bottom",positionData:C,children:[{type:"elem",elem:p},{type:"kern",size:b.kern},{type:"elem",elem:b.elem,marginLeft:E+"em"},{type:"kern",size:t.fontMetrics().bigOpSpacing5}]},t)}return a.a.makeSpan(["mop","op-limits"],[S],t)}return _&&(p.style.position="relative",p.style.top=_+"em"),p},p=function(e,t){var n=void 0;if(e.value.symbol)n=new o.a.MathNode("mo",[u.e(e.value.body,e.mode)]);else{if(!e.value.value){n=new o.a.MathNode("mi",[new o.a.TextNode(e.value.body.slice(1))]);var r=new o.a.MathNode("mo",[u.e("⁡","text")]);return new i.a.documentFragment([n,r])}n=new o.a.MathNode("mo",u.a(e.value.value,t))}return n},m={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcap","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};Object(r.b)({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:function(e,t){var n=e.funcName;return 1===n.length&&(n=m[n]),{type:"op",limits:!0,symbol:!0,body:n}},htmlBuilder:d,mathmlBuilder:p}),Object(r.b)({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function(e,t){var n=t[0];return{type:"op",limits:!1,symbol:!1,value:Object(r.c)(n)}},htmlBuilder:d,mathmlBuilder:p})},function(e,t,n){var r=n(18),a=n.n(r),i=n(3),o=n(0),l=n(1),s=n(12),c=n(4),u=n(2);Object(i.b)({type:"operatorname",names:["\\operatorname"],props:{numArgs:1},handler:function(e,t){var n=t[0];return{type:"operatorname",value:Object(i.c)(n)}},htmlBuilder:function(e,t){var n=[];if(e.value.value.length>0){var r="",i="",l=!0,u=!1,d=void 0;try{for(var p,m=a()(e.value.value);!(l=(p=m.next()).done);l=!0){var g=p.value;-1!=="*-/:".indexOf(g.value)&&(g.type="textord")}}catch(e){u=!0,d=e}finally{try{!l&&m.return&&m.return()}finally{if(u)throw d}}var h=c.a(e.value.value,t.withFontFamily("mathrm"),!0),f=!0,_=!1,E=void 0;try{for(var T,b=a()(h);!(f=(T=b.next()).done);f=!0){var v=T.value;v instanceof s.a.symbolNode?(r=(r=(r=v.value).replace(/\u2212/,"-")).replace(/\u2217/,"*"),i=/[\u0391-\u03D7]/.test(r)?"math":"text",n.push(o.a.mathsym(r,i))):n.push(v)}}catch(e){_=!0,E=e}finally{try{!f&&b.return&&b.return()}finally{if(_)throw E}}}return o.a.makeSpan(["mop"],n,t)},mathmlBuilder:function(e,t){var n=[];if(e.value.value.length>0){var r=u.a(e.value.value,t.withFontFamily("mathrm")).map(function(e){return e.toText()}).join("");r=(r=r.replace(/\u2212/g,"-")).replace(/\u2217/g,"*"),n=[new l.a.TextNode(r)]}var a=new l.a.MathNode("mi",n);a.setAttribute("mathvariant","normal");var i=new l.a.MathNode("mo",[u.e("⁡","text")]);return new s.a.documentFragment([a,i])}})},function(e,t,n){var r=n(3),a=n(0),i=n(44),o=n(1),l=n(9),s=n(4),c=n(2);Object(r.b)({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],props:{numArgs:2,greediness:2},handler:function(e,t){var n=t[0],r=t[1],a=void 0,i=null,o=null,l="auto";switch(e.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,i="(",o=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e.funcName){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text"}return{type:"genfrac",numer:n,denom:r,hasBarLine:a,leftDelim:i,rightDelim:o,size:l}},htmlBuilder:function(e,t){var n=t.style;"display"===e.value.size?n=l.a.DISPLAY:"text"===e.value.size&&(n=l.a.TEXT);var r=n.fracNum(),o=n.fracDen(),c=void 0;c=t.havingStyle(r);var u=s.b(e.value.numer,c,t);c=t.havingStyle(o);var d=s.b(e.value.denom,c,t),p=void 0,m=void 0,g=void 0;e.value.hasBarLine?(m=(p=a.a.makeLineSpan("frac-line",t)).height,g=p.height):(p=null,m=0,g=t.fontMetrics().defaultRuleThickness);var h=void 0,f=void 0,_=void 0;n.size===l.a.DISPLAY.size?(h=t.fontMetrics().num1,f=m>0?3*g:7*g,_=t.fontMetrics().denom1):(m>0?(h=t.fontMetrics().num2,f=g):(h=t.fontMetrics().num3,f=3*g),_=t.fontMetrics().denom2);var E=void 0;if(p){var T=t.fontMetrics().axisHeight;h-u.depth-(T+.5*m)<f&&(h+=f-(h-u.depth-(T+.5*m))),T-.5*m-(d.height-_)<f&&(_+=f-(T-.5*m-(d.height-_)));var b=-(T-.5*m);E=a.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:d,shift:_},{type:"elem",elem:p,shift:b+2*m},{type:"elem",elem:u,shift:-h}]},t)}else{var v=h-u.depth-(d.height-_);v<f&&(h+=.5*(f-v),_+=.5*(f-v)),E=a.a.makeVList({positionType:"individualShift",children:[{type:"elem",elem:d,shift:_},{type:"elem",elem:u,shift:-h}]},t)}c=t.havingStyle(n),E.height*=c.sizeMultiplier/t.sizeMultiplier,E.depth*=c.sizeMultiplier/t.sizeMultiplier;var A=void 0;A=n.size===l.a.DISPLAY.size?t.fontMetrics().delim1:t.fontMetrics().delim2;var S=void 0,y=void 0;return S=null==e.value.leftDelim?s.e(t,["mopen"]):i.a.customSizedDelim(e.value.leftDelim,A,!0,t.havingStyle(n),e.mode,["mopen"]),y=null==e.value.rightDelim?s.e(t,["mclose"]):i.a.customSizedDelim(e.value.rightDelim,A,!0,t.havingStyle(n),e.mode,["mclose"]),a.a.makeSpan(["mord"].concat(c.sizingClasses(t)),[S,a.a.makeSpan(["mfrac"],[E]),y],t)},mathmlBuilder:function(e,t){var n=new o.a.MathNode("mfrac",[c.b(e.value.numer,t),c.b(e.value.denom,t)]);if(e.value.hasBarLine||n.setAttribute("linethickness","0px"),null!=e.value.leftDelim||null!=e.value.rightDelim){var r=[];if(null!=e.value.leftDelim){var a=new o.a.MathNode("mo",[new o.a.TextNode(e.value.leftDelim)]);a.setAttribute("fence","true"),r.push(a)}if(r.push(n),null!=e.value.rightDelim){var i=new o.a.MathNode("mo",[new o.a.TextNode(e.value.rightDelim)]);i.setAttribute("fence","true"),r.push(i)}return new o.a.MathNode("mrow",r)}return n}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(4),l=n(2);Object(r.b)({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=t[0];return{type:"lap",alignment:e.funcName.slice(5),body:n}},htmlBuilder:function(e,t){var n=void 0;"clap"===e.value.alignment?(n=a.a.makeSpan([],[o.b(e.value.body,t)]),n=a.a.makeSpan(["inner"],[n],t)):n=a.a.makeSpan(["inner"],[o.b(e.value.body,t)]);var r=a.a.makeSpan(["fix"],[]);return a.a.makeSpan(["mord",e.value.alignment],[n,r],t)},mathmlBuilder:function(e,t){var n=new i.a.MathNode("mpadded",[l.b(e.value.body,t)]);if("rlap"!==e.value.alignment){var r="llap"===e.value.alignment?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(4),l=n(2);Object(r.b)({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,n){var r=!1,a=!1,i=n[0];if(i)for(var o="",l=0;l<i.value.length;++l)if("t"===(o=i.value[l].value))r=!0;else{if("b"!==o){r=!1,a=!1;break}a=!0}else r=!0,a=!0;return{type:"smash",body:t[0],smashHeight:r,smashDepth:a}},htmlBuilder:function(e,t){var n=a.a.makeSpan(["mord"],[o.b(e.value.body,t)]);if(!e.value.smashHeight&&!e.value.smashDepth)return n;if(e.value.smashHeight&&(n.height=0,n.children))for(var r=0;r<n.children.length;r++)n.children[r].height=0;if(e.value.smashDepth&&(n.depth=0,n.children))for(var i=0;i<n.children.length;i++)n.children[i].depth=0;return a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},t)},mathmlBuilder:function(e,t){var n=new i.a.MathNode("mpadded",[l.b(e.value.body,t)]);return e.value.smashHeight&&n.setAttribute("height","0px"),e.value.smashDepth&&n.setAttribute("depth","0px"),n}})},function(e,t,n){var r=n(0),a=n(3),i=n(44),o=n(1),l=n(6),s=n(5),c=n(4),u=n(2),d={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},p=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function m(e,t){if(s.a.contains(p,e.value))return e;throw new l.a("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}Object(a.b)({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(e,t){var n=m(t[0],e);return{type:"delimsizing",size:d[e.funcName].size,mclass:d[e.funcName].mclass,value:n.value}},htmlBuilder:function(e,t){var n=e.value.value;return"."===n?r.a.makeSpan([e.value.mclass]):i.a.sizedDelim(n,e.value.size,t,e.mode,[e.value.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.value.value&&t.push(u.e(e.value.value,e.mode));var n=new o.a.MathNode("mo",t);return"mopen"===e.value.mclass||"mclose"===e.value.mclass?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n}}),Object(a.b)({type:"leftright",names:["\\left","\\right"],props:{numArgs:1},handler:function(e,t){var n=m(t[0],e);if("\\left"===e.funcName){var r=e.parser;++r.leftrightDepth;var a=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=r.parseFunction();if(!i)throw new l.a("failed to parse function after \\right");return{type:"leftright",body:a,left:n.value,right:i.value.value}}return{type:"leftright",value:n.value}},htmlBuilder:function(e,t){for(var n=c.a(e.value.body,t,!0,[null,"mclose"]),a=0,o=0,l=!1,s=0;s<n.length;s++)n[s].isMiddle?l=!0:(a=Math.max(n[s].height,a),o=Math.max(n[s].depth,o));a*=t.sizeMultiplier,o*=t.sizeMultiplier;var u=void 0;if(u="."===e.value.left?c.e(t,["mopen"]):i.a.leftRightDelim(e.value.left,a,o,t,e.mode,["mopen"]),n.unshift(u),l)for(var d=1;d<n.length;d++){var p=n[d];p.isMiddle&&(n[d]=i.a.leftRightDelim(p.isMiddle.value,a,o,p.isMiddle.options,e.mode,[]))}var m=void 0;return m="."===e.value.right?c.e(t,["mclose"]):i.a.leftRightDelim(e.value.right,a,o,t,e.mode,["mclose"]),n.push(m),r.a.makeSpan(["minner"],n,t)},mathmlBuilder:function(e,t){var n=u.a(e.value.body,t);if("."!==e.value.left){var r=new o.a.MathNode("mo",[u.e(e.value.left,e.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if("."!==e.value.right){var a=new o.a.MathNode("mo",[u.e(e.value.right,e.mode)]);a.setAttribute("fence","true"),n.push(a)}return new o.a.MathNode("mrow",n)}}),Object(a.b)({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function(e,t){var n=m(t[0],e);if(!e.parser.leftrightDepth)throw new l.a("\\middle without preceding \\left",n);return{type:"middle",value:n.value}},htmlBuilder:function(e,t){var n=void 0;return"."===e.value.value?n=c.e(t,[]):(n=i.a.sizedDelim(e.value.value,1,t,e.mode,[])).isMiddle={value:e.value.value,options:t},n},mathmlBuilder:function(e,t){var n=new o.a.MathNode("mo",[u.e(e.value.middle,e.mode)]);return n.setAttribute("fence","true"),n}})},function(e,t,n){var r=n(3),a=n(1),i=n(9),o=n(60),l=n(2),s={display:i.a.DISPLAY,text:i.a.TEXT,script:i.a.SCRIPT,scriptscript:i.a.SCRIPTSCRIPT};Object(r.b)({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.breakOnTokenText,r=e.funcName,a=e.parser;a.consumeSpaces();var i=a.parseExpression(!0,n);return{type:"styling",style:r.slice(1,r.length-5),value:i}},htmlBuilder:function(e,t){var n=s[e.value.style],r=t.havingStyle(n);return Object(o.a)(e.value.value,r,t)},mathmlBuilder:function(e,t){var n={display:i.a.DISPLAY,text:i.a.TEXT,script:i.a.SCRIPT,scriptscript:i.a.SCRIPTSCRIPT}[e.value.style],r=t.havingStyle(n),o=l.a(e.value.value,r),s=new a.a.MathNode("mstyle",o),c={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.value.style];return s.setAttribute("scriptlevel",c[0]),s.setAttribute("displaystyle",c[1]),s}})},function(e,t,n){var r=n(134),a=n.n(r),i=n(3),o=n(14),l=n(4),s=n(2),c=function(e,t){var n=e.value.font;return l.b(e.value.body,t.withFontFamily(n))},u=function(e,t){var n=e.value.font;return s.b(e.value.body,t.withFontFamily(n))},d={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Object(i.b)({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\boldsymbol","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak","\\bm"],props:{numArgs:1,greediness:2},handler:function(e,t){var n=t[0],r=e.funcName;return r in d&&(r=d[r]),{type:"font",font:r.slice(1),body:n}},htmlBuilder:c,mathmlBuilder:u});var p={"\\rm":"mathrm","\\sf":"mathsf","\\tt":"mathtt","\\bf":"mathbf","\\it":"mathit"};Object(i.b)({type:"font",names:a()(p),props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=e.breakOnTokenText;n.consumeSpaces();var i=n.parseExpression(!0,a);return{type:"font",font:p[r],body:new o.a("ordgroup",i,n.mode)}},htmlBuilder:c,mathmlBuilder:u})},function(e,t,n){e.exports={default:n(135),__esModule:!0}},function(e,t,n){n(136),e.exports=n(8).Object.keys},function(e,t,n){var r=n(29),a=n(39);n(46)("keys",function(){return function(e){return a(r(e))}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(5),l=n(13),s=n(4),c=n(2),u=function(e,t){var n=e.value.base,r=void 0;if("supsub"===e.type){var i=e;n=(e=i.value.base).value.base,i.value.base=n,r=s.b(i,t)}var c=s.b(n,t.havingCrampedStyle()),u=0;if(e.value.isShifty&&o.a.isCharacterBox(n)){var d=o.a.getBaseElem(n);u=s.b(d,t.havingCrampedStyle()).skew}var p=Math.min(c.height,t.fontMetrics().xHeight),m=void 0;if(e.value.isStretchy)m=l.a.svgSpan(e,t),m=a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"elem",elem:m,wrapperClasses:["svg-align"],wrapperStyle:u>0?{width:"calc(100% - "+2*u+"em)",marginLeft:2*u+"em"}:void 0}]},t);else{var g=void 0,h=void 0;"\\vec"===e.value.label?(g=a.a.staticSvg("vec",t),h=a.a.svgData.vec[1]):((g=a.a.makeSymbol(e.value.label,"Main-Regular",e.mode,t)).italic=0,h=g.width);var f=-h/2;f+=u,(m=a.a.makeSpan(["accent-body"],[g])).style.left=f+"em",m=a.a.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:-p},{type:"elem",elem:m}]},t)}var _=a.a.makeSpan(["mord","accent"],[m],t);return r?(r.children[0]=_,r.height=Math.max(_.height,r.height),r.classes[0]="mord",r):_},d=function(e,t){var n=void 0;n=e.value.isStretchy?l.a.mathMLnode(e.value.label):new i.a.MathNode("mo",[c.e(e.value.label,e.mode)]);var r=new i.a.MathNode("mover",[c.b(e.value.base,t),n]);return r.setAttribute("accent","true"),r},p=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(e){return"\\"+e}).join("|"));Object(r.b)({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(e,t){var n=t[0],r=!p.test(e.funcName),a=!r||"\\widehat"===e.funcName||"\\widetilde"===e.funcName;return{type:"accent",label:e.funcName,isStretchy:r,isShifty:a,base:n}},htmlBuilder:u,mathmlBuilder:d}),Object(r.b)({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var n=t[0];return{type:"accent",label:e.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:u,mathmlBuilder:d})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(13),l=n(4),s=n(2);Object(r.b)({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(e,t){var n=t[0];return{type:"accentUnder",label:e.funcName,base:n}},htmlBuilder:function(e,t){var n=l.b(e.value.base,t),r=o.a.svgSpan(e,t),i="\\utilde"===e.value.label?.12:0,s=a.a.makeVList({positionType:"bottom",positionData:r.height+i,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:n}]},t);return a.a.makeSpan(["mord","accentunder"],[s],t)},mathmlBuilder:function(e,t){var n=o.a.mathMLnode(e.value.label),r=new i.a.MathNode("munder",[s.b(e.value.body,t),n]);return r.setAttribute("accentunder","true"),r}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(6);Object(r.b)({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,n){throw new o.a("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var n=a.a.makeVerb(e,t),r=[],i=t.havingStyle(t.style.text()),o=0;o<n.length;o++)if(" "===n[o]){var l=a.a.makeSpan(["mord","rule"],[],i);l.style.marginLeft="0.525em",r.push(l)}else r.push(a.a.makeSymbol(n[o],"Typewriter-Regular",e.mode,i,["mathtt"]));return a.a.tryCombineChars(r),a.a.makeSpan(["mord","text"].concat(i.sizingClasses(t)),r,i)},mathmlBuilder:function(e,t){var n=new i.a.TextNode(a.a.makeVerb(e,t)),r=new i.a.MathNode("mtext",[n]);return r.setAttribute("mathvariant",a.a.fontMap.mathtt.variant),r}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(4),l=n(2);Object(r.b)({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"]},handler:function(e,t){var n=t[1];return{type:"href",href:t[0].value,body:Object(r.c)(n)}},htmlBuilder:function(e,t){var n=o.a(e.value.body,t,!1),r=e.value.href;return new a.a.makeAnchor(r,[],n,t)},mathmlBuilder:function(e,t){var n=l.a(e.value.body,t),r=new i.a.MathNode("mrow",n);return r.setAttribute("href",e.value.href),r}})},function(e,t,n){var r=n(3),a=n(0),i=n(1),o=n(9),l=n(4),s=n(2),c=function(e,t){var n=t.style;return n.size===o.a.DISPLAY.size?e.value.display:n.size===o.a.TEXT.size?e.value.text:n.size===o.a.SCRIPT.size?e.value.script:n.size===o.a.SCRIPTSCRIPT.size?e.value.scriptscript:e.value.text};Object(r.b)({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(e,t){return{type:"mathchoice",display:Object(r.c)(t[0]),text:Object(r.c)(t[1]),script:Object(r.c)(t[2]),scriptscript:Object(r.c)(t[3])}},htmlBuilder:function(e,t){var n=c(e,t),r=l.a(n,t,!1);return new a.a.makeFragment(r)},mathmlBuilder:function(e,t){var n=c(e,t),r=s.a(n,t,!1);return new i.a.MathNode("mrow",r)}})},function(e,t,n){var r=n(61),a=(n(143),r.a);t.a=a},function(e,t,n){var r=n(0),a=n(61),i=n(1),o=n(6),l=n(14),s=n(19),c=n(5),u=n(13),d=n(4),p=n(2);function m(e,t,n){for(var r=[],a=[r],i=[];;){var s=e.parseExpression(!1,void 0);s=new l.a("ordgroup",s,e.mode),n&&(s=new l.a("styling",{style:n,value:[s]},e.mode)),r.push(s);var c=e.nextToken.text;if("&"===c)e.consume();else{if("\\end"===c){var u=a[a.length-1];a.length>1&&1===u.length&&0===u[0].value.value[0].value.length&&a.pop();break}if("\\\\"!==c&&"\\cr"!==c)throw new o.a("Expected & or \\\\ or \\end",e.nextToken);var d=e.parseFunction();if(!d)throw new o.a("Failed to parse function after "+c);i.push(d.value.size),r=[],a.push(r)}}return t.body=a,t.rowGaps=i,new l.a(t.type,t,e.mode)}function g(e){return"d"===e.substr(0,1)?"display":"text"}var h=function(e,t){var n=void 0,a=void 0,i=e.value.body.length,l=0,p=new Array(i),m=1/t.fontMetrics().ptPerEm,g=5*m,h=12*m,f=3*m,_=c.a.deflt(e.value.arraystretch,1)*h,E=.7*_,T=.3*_,b=0;for(n=0;n<e.value.body.length;++n){var v=e.value.body[n],A=E,S=T;l<v.length&&(l=v.length);var y=new Array(v.length);for(a=0;a<v.length;++a){var N=d.b(v[a],t);S<N.depth&&(S=N.depth),A<N.height&&(A=N.height),y[a]=N}var C=0;e.value.rowGaps[n]&&(C=Object(s.a)(e.value.rowGaps[n].value,t))>0&&(S<(C+=T)&&(S=C),C=0),e.value.addJot&&(S+=f),y.height=A,y.depth=S,b+=A,y.pos=b,b+=S+C,p[n]=y}var O=b/2+t.fontMetrics().axisHeight,M=e.value.cols||[],x=[],w=void 0,R=void 0;for(a=0,R=0;a<l||R<M.length;++a,++R){for(var D=M[R]||{},I=!0;"separator"===D.type;){if(I||((w=r.a.makeSpan(["arraycolsep"],[])).style.width=t.fontMetrics().doubleRuleSep+"em",x.push(w)),"|"!==D.separator)throw new o.a("Invalid separator type: "+D.separator);var k=u.a.ruleSpan("vertical-separator",.05,t);k.style.height=b+"em",k.style.verticalAlign=-(b-O)+"em",x.push(k),D=M[++R]||{},I=!1}if(!(a>=l)){var L=void 0;(a>0||e.value.hskipBeforeAndAfter)&&0!==(L=c.a.deflt(D.pregap,g))&&((w=r.a.makeSpan(["arraycolsep"],[])).style.width=L+"em",x.push(w));var P=[];for(n=0;n<i;++n){var B=p[n],F=B[a];if(F){var U=B.pos-O;F.depth=B.depth,F.height=B.height,P.push({type:"elem",elem:F,shift:U})}}P=r.a.makeVList({positionType:"individualShift",children:P},t),P=r.a.makeSpan(["col-align-"+(D.align||"c")],[P]),x.push(P),(a<l-1||e.value.hskipBeforeAndAfter)&&0!==(L=c.a.deflt(D.postgap,g))&&((w=r.a.makeSpan(["arraycolsep"],[])).style.width=L+"em",x.push(w))}}return p=r.a.makeSpan(["mtable"],x),r.a.makeSpan(["mord"],[p],t)},f=function(e,t){return new i.a.MathNode("mtable",e.value.body.map(function(e){return new i.a.MathNode("mtr",e.map(function(e){return new i.a.MathNode("mtd",[p.b(e,t)])}))}))},_=function(e,t){var n={type:"array",cols:[],addJot:!0};n=m(e.parser,n,"display");var r=void 0,a=0,i=new l.a("ordgroup",[],e.mode);if(t[0]&&t[0].value){for(var s="",c=0;c<t[0].value.length;c++)s+=t[0].value[c].value;r=Number(s),a=2*r}var u=!a;n.value.body.forEach(function(e){for(var t=1;t<e.length;t+=2){e[t].value.value[0].value.unshift(i)}if(u)a<e.length&&(a=e.length);else{var n=e.length/2;if(r<n)throw new o.a("Too many math in a row: expected "+r+", but got "+n,e)}});for(var d=0;d<a;++d){var p="r",g=0;d%2==1?p="l":d>0&&u&&(g=1),n.value.cols[d]={type:"align",align:p,pregap:g,postgap:0}}return n};Object(a.b)({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(e,t){var n=t[0],r={type:"array",cols:(n=n.value.map?n.value:[n]).map(function(e){var t=e.value;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};throw new o.a("Unknown column alignment: "+e.value,e)}),hskipBeforeAndAfter:!0};return r=m(e.parser,r,g(e.envName))},htmlBuilder:h,mathmlBuilder:f}),Object(a.b)({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName],n={type:"array",hskipBeforeAndAfter:!1};return n=m(e.parser,n,g(e.envName)),t&&(n=new l.a("leftright",{body:[n],left:t[0],right:t[1]},e.mode)),n},htmlBuilder:h,mathmlBuilder:f}),Object(a.b)({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(e){var t={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]};return t=m(e.parser,t,g(e.envName)),t=new l.a("leftright",{body:[t],left:"\\{",right:"."},e.mode)},htmlBuilder:h,mathmlBuilder:f}),Object(a.b)({type:"array",names:["aligned"],props:{numArgs:0},handler:_,htmlBuilder:h,mathmlBuilder:f}),Object(a.b)({type:"array",names:["gathered"],props:{numArgs:0},handler:function(e){var t={type:"array",cols:[{type:"align",align:"c"}],addJot:!0};return t=m(e.parser,t,"display")},htmlBuilder:h,mathmlBuilder:f}),Object(a.b)({type:"array",names:["alignedat"],props:{numArgs:1},handler:_,htmlBuilder:h,mathmlBuilder:f})},function(e,t,n){var r=n(35),a=n.n(r),i=n(7),o=n.n(i),l=n(10),s=n.n(l),c=n(62),u=n(27),d=n(146),p=n(6),m=n(147),g=n.n(m),h=function(){function e(t,n,r){o()(this,e),this.lexer=new c.c(t),this.macros=g()({},d.a,n),this.mode=r,this.stack=[]}return s()(e,[{key:"switchMode",value:function(e){this.mode=e}},{key:"future",value:function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}},{key:"popToken",value:function(){return this.future(),this.stack.pop()}},{key:"pushToken",value:function(e){this.stack.push(e)}},{key:"pushTokens",value:function(e){var t;(t=this.stack).push.apply(t,a()(e))}},{key:"consumeSpaces",value:function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}},{key:"consumeArgs",value:function(e){for(var t=[],n=0;n<e;++n){this.consumeSpaces();var r=this.popToken();if("{"===r.text){for(var a=[],i=1;0!==i;){var o=this.popToken();if(a.push(o),"{"===o.text)++i;else if("}"===o.text)--i;else if("EOF"===o.text)throw new p.a("End of input in macro argument",r)}a.pop(),a.reverse(),t[n]=a}else{if("EOF"===r.text)throw new p.a("End of input expecting macro argument");t[n]=[r]}}return t}},{key:"expandOnce",value:function(){var e=this.popToken(),t=e.text;if("\\"===t.charAt(0)&&c.b.test(t)&&this.consumeSpaces(),!this.macros.hasOwnProperty(t))return this.pushToken(e),e;var n=this._getExpansion(t),r=n.tokens,i=n.numArgs,o=r;if(i)for(var l=this.consumeArgs(i),s=(o=o.slice()).length-1;s>=0;--s){var u=o[s];if("#"===u.text){if(0===s)throw new p.a("Incomplete placeholder at end of macro body",u);if("#"===(u=o[--s]).text)o.splice(s+1,1);else{if(!/^[1-9]$/.test(u.text))throw new p.a("Not a valid argument number",u);var d;(d=o).splice.apply(d,[s,2].concat(a()(l[+u.text-1])))}}}return this.pushTokens(o),o}},{key:"expandAfterFuture",value:function(){return this.expandOnce(),this.future()}},{key:"expandNextToken",value:function(){for(;;){var e=this.expandOnce();if(e instanceof u.a){if("\\relax"!==e.text)return this.stack.pop();this.stack.pop()}}throw new Error}},{key:"_getExpansion",value:function(e){var t=this.macros[e],n="function"==typeof t?t(this):t;if("string"==typeof n){var r=0;if(-1!==n.indexOf("#"))for(var a=n.replace(/##/g,"");-1!==a.indexOf("#"+(r+1));)++r;for(var i=new c.c(n),o=[],l=i.lex();"EOF"!==l.text;)o.push(l),l=i.lex();o.reverse();var s={tokens:o,numArgs:r};return"function"!=typeof t&&(this.macros[e]=s),s}return n}}]),e}();t.a=h},function(e,t){e.exports=function(e,t,n){if(e.global||e.sticky)throw new Error("matchAt(...): Only non-global regexes are supported");var r=function(e){if(!e.__matchAtRelocatable){var t=e.source+"|()",n="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,n)}return e.__matchAtRelocatable}(e);r.lastIndex=n;var a=r.exec(t);return null==a[a.length-1]?(a.length=a.length-1,a):null}},function(e,t,n){var r=n(59),a=n(28),i=n(5),o=(n(27),{});function l(e,t){o[e]=t}t.a=o,l("\\@firstoftwo",function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}}),l("\\@secondoftwo",function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}}),l("\\@ifnextchar",function(e){var t=e.consumeArgs(3),n=e.future();return 1===t[0].length&&t[0][0].text===n.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}}),l("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),l("\\TextOrMath",function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}),l("\\bgroup","{"),l("\\egroup","}"),l("\\begingroup","{"),l("\\endgroup","}"),l("\\lq","`"),l("\\rq","'"),l("\\lbrack","["),l("\\rbrack","]"),l("\\aa","\\r a"),l("\\AA","\\r A"),l("ℂ","\\mathbb{C}"),l("ℍ","\\mathbb{H}"),l("ℕ","\\mathbb{N}"),l("ℙ","\\mathbb{P}"),l("ℚ","\\mathbb{Q}"),l("ℝ","\\mathbb{R}"),l("ℤ","\\mathbb{Z}"),l("·","\\cdotp"),l("\\llap","\\mathllap{\\textrm{#1}}"),l("\\rlap","\\mathrlap{\\textrm{#1}}"),l("\\clap","\\mathclap{\\textrm{#1}}"),l("\\varGamma","\\mathit{\\Gamma}"),l("\\varDelta","\\mathit{\\Delta}"),l("\\varTheta","\\mathit{\\Theta}"),l("\\varLambda","\\mathit{\\Lambda}"),l("\\varXi","\\mathit{\\Xi}"),l("\\varPi","\\mathit{\\Pi}"),l("\\varSigma","\\mathit{\\Sigma}"),l("\\varUpsilon","\\mathit{\\Upsilon}"),l("\\varPhi","\\mathit{\\Phi}"),l("\\varPsi","\\mathit{\\Psi}"),l("\\varOmega","\\mathit{\\Omega}"),l("\\overset","\\mathop{#2}\\limits^{#1}"),l("\\underset","\\mathop{#2}\\limits_{#1}"),l("\\boxed","\\fbox{\\displaystyle{#1}}"),l("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),l("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),l("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var s={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\implies":"\\dotsb","\\impliedby":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\iff":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\bmod":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};l("\\dots",function(e){var t="\\dotso",n=e.expandAfterFuture().text;return n in s?t=s[n]:"\\not"===n.substr(0,4)?t="\\dotsb":n in a.a.math&&i.a.contains(["bin","rel"],a.a.math[n].group)&&(t="\\dotsb"),t});var c={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};l("\\dotso",function(e){return e.future().text in c?"\\ldots\\,":"\\ldots"}),l("\\dotsc",function(e){var t=e.future().text;return t in c&&","!==t?"\\ldots\\,":"\\ldots"}),l("\\cdots",function(e){return e.future().text in c?"\\@cdots\\,":"\\@cdots"}),l("\\dotsb","\\cdots"),l("\\dotsm","\\cdots"),l("\\dotsi","\\!\\cdots"),l("\\dotsx","\\ldots\\,"),l("\\DOTSI","\\relax"),l("\\DOTSB","\\relax"),l("\\DOTSX","\\relax"),l("\\thinspace","\\,"),l("\\medspace","\\:"),l("\\thickspace","\\;"),l("\\TeX","\\textrm{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}");var u=r.a["Main-Regular"]["T".charCodeAt(0)][1]-.7*r.a["Main-Regular"]["A".charCodeAt(0)][1]+"em";l("\\LaTeX","\\textrm{L\\kern-.36em\\raisebox{"+u+"}{\\scriptsize A}\\kern-.15em\\TeX}"),l("\\KaTeX","\\textrm{K\\kern-.17em\\raisebox{"+u+"}{\\scriptsize A}\\kern-.15em\\TeX}"),l("\\hspace","\\@ifstar\\kern\\kern"),l("\\ordinarycolon",":"),l("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),l("\\dblcolon","\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon"),l("\\coloneqq","\\vcentcolon\\mathrel{\\mkern-1.2mu}="),l("\\Coloneqq","\\dblcolon\\mathrel{\\mkern-1.2mu}="),l("\\coloneq","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}"),l("\\Coloneq","\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}"),l("\\eqqcolon","=\\mathrel{\\mkern-1.2mu}\\vcentcolon"),l("\\Eqqcolon","=\\mathrel{\\mkern-1.2mu}\\dblcolon"),l("\\eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon"),l("\\Eqcolon","\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon"),l("\\colonapprox","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx"),l("\\Colonapprox","\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx"),l("\\colonsim","\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim"),l("\\Colonsim","\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim"),l("≔","\\coloneqq"),l("≕","\\eqqcolon"),l("⩴","\\Coloneqq"),l("\\ratio","\\vcentcolon"),l("\\coloncolon","\\dblcolon"),l("\\colonequals","\\coloneqq"),l("\\coloncolonequals","\\Coloneqq"),l("\\equalscolon","\\eqqcolon"),l("\\equalscoloncolon","\\Eqqcolon"),l("\\colonminus","\\coloneq"),l("\\coloncolonminus","\\Coloneq"),l("\\minuscolon","\\eqcolon"),l("\\minuscoloncolon","\\Eqcolon"),l("\\coloncolonapprox","\\Colonapprox"),l("\\coloncolonsim","\\Colonsim"),l("\\simcolon","\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon"),l("\\simcoloncolon","\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon"),l("\\approxcolon","\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon"),l("\\approxcoloncolon","\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon"),l("\\notni","\\not\\ni"),l("\\limsup","\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits"),l("\\liminf","\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits")},function(e,t,n){var r=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,o,l=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var c in n=Object(arguments[s]))a.call(n,c)&&(l[c]=n[c]);if(r){o=r(n);for(var u=0;u<o.length;u++)i.call(n,o[u])&&(l[o[u]]=n[o[u]])}}return l}},function(e,t){e.exports={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"}}},function(e,t,n){t.a={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"}}]).default},e.exports=n()});h(ic);var oc=Object.prototype.hasOwnProperty,lc=Object.prototype.toString,sc=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===lc.call(e)},cc=function(e){if(!e||"[object Object]"!==lc.call(e))return!1;var t,n=oc.call(e,"constructor"),r=e.constructor&&e.constructor.prototype&&oc.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||oc.call(e,t)},uc=function e(){var t,n,r,a,i,o,l=arguments[0],s=1,c=arguments.length,u=!1;for("boolean"==typeof l&&(u=l,l=arguments[1]||{},s=2),(null==l||"object"!=typeof l&&"function"!=typeof l)&&(l={});s<c;++s)if(null!=(t=arguments[s]))for(n in t)r=l[n],l!==(a=t[n])&&(u&&a&&(cc(a)||(i=sc(a)))?(i?(i=!1,o=r&&sc(r)?r:[]):o=r&&cc(r)?r:{},l[n]=e(u,o,a)):void 0!==a&&(l[n]=a));return l},dc=function(e){if(e)throw e};var pc={}.hasOwnProperty,mc=function(e){if(!e||"object"!=typeof e)return null;if(pc.call(e,"position")||pc.call(e,"type"))return hc(e.position);if(pc.call(e,"start")||pc.call(e,"end"))return hc(e);if(pc.call(e,"line")||pc.call(e,"column"))return gc(e);return null};function gc(e){return e&&"object"==typeof e||(e={}),fc(e.line)+":"+fc(e.column)}function hc(e){return e&&"object"==typeof e||(e={}),gc(e.start)+"-"+gc(e.end)}function fc(e){return e&&"number"==typeof e?e:1}var _c=bc;function Ec(){}Ec.prototype=Error.prototype,bc.prototype=new Ec;var Tc=bc.prototype;function bc(e,t,n){var r,a,i;"string"==typeof t&&(n=t,t=null),r=function(e){var t,n=[null,null];"string"==typeof e&&(-1===(t=e.indexOf(":"))?n[1]=e:(n[0]=e.slice(0,t),n[1]=e.slice(t+1)));return n}(n),a=mc(t)||"1:1",i={start:{line:null,column:null},end:{line:null,column:null}},t&&t.position&&(t=t.position),t&&(t.start?(i=t,t=t.start):i.start=t),e.stack&&(this.stack=e.stack,e=e.message),this.message=e,this.name=a,this.reason=e,this.line=t?t.line:null,this.column=t?t.column:null,this.location=i,this.source=r[0],this.ruleId=r[1]}function vc(e,t){for(var n=0,r=e.length-1;r>=0;r--){var a=e[r];"."===a?e.splice(r,1):".."===a?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}Tc.file="",Tc.name="",Tc.reason="",Tc.message="",Tc.stack="",Tc.fatal=null,Tc.column=null,Tc.line=null;var Ac=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,Sc=function(e){return Ac.exec(e).slice(1)};function yc(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var r=n>=0?arguments[n]:"/";if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return e=vc(Ic(e.split("/"),function(e){return!!e}),!t).join("/"),(t?"/":"")+e||"."}function Nc(e){var t=Cc(e),n="/"===kc(e,-1);return(e=vc(Ic(e.split("/"),function(e){return!!e}),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e}function Cc(e){return"/"===e.charAt(0)}function Oc(){return Nc(Ic(Array.prototype.slice.call(arguments,0),function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))}function Mc(e,t){function n(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=yc(e).substr(1),t=yc(t).substr(1);for(var r=n(e.split("/")),a=n(t.split("/")),i=Math.min(r.length,a.length),o=i,l=0;l<i;l++)if(r[l]!==a[l]){o=l;break}var s=[];for(l=o;l<r.length;l++)s.push("..");return(s=s.concat(a.slice(o))).join("/")}function xc(e){var t=Sc(e),n=t[0],r=t[1];return n||r?(r&&(r=r.substr(0,r.length-1)),n+r):"."}function wc(e,t){var n=Sc(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n}function Rc(e){return Sc(e)[3]}var Dc={extname:Rc,basename:wc,dirname:xc,sep:"/",delimiter:":",relative:Mc,join:Oc,isAbsolute:Cc,normalize:Nc,resolve:yc};function Ic(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}var kc="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)},Lc=Object.freeze({resolve:yc,normalize:Nc,isAbsolute:Cc,join:Oc,relative:Mc,sep:"/",delimiter:":",dirname:xc,basename:wc,extname:Rc,default:Dc}),Pc=Lc&&Dc||Lc;var Bc=function(e,t){if("string"!=typeof e)return e;if(0===e.length)return e;var n=Pc.basename(e,Pc.extname(e))+t;return Pc.join(Pc.dirname(e),n)},Fc=function(e){return null!=e&&(Uc(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&Uc(e.slice(0,0))}(e)||!!e._isBuffer)};function Uc(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var Hc=Kc,Gc={}.hasOwnProperty,qc=Kc.prototype;qc.toString=function(e){var t=this.contents||"";return Fc(t)?t.toString(e):String(t)};var zc=["history","path","basename","stem","extname","dirname"];function Kc(e){var t,n,r;if(e){if("string"==typeof e||Fc(e))e={contents:e};else if("message"in e&&"messages"in e)return e}else e={};if(!(this instanceof Kc))return new Kc(e);for(this.data={},this.messages=[],this.history=[],this.cwd=ro.cwd(),n=-1,r=zc.length;++n<r;)t=zc[n],Gc.call(e,t)&&(this[t]=e[t]);for(t in e)-1===zc.indexOf(t)&&(this[t]=e[t])}function jc(e,t){if(-1!==e.indexOf(Pc.sep))throw new Error("`"+t+"` cannot be a path: did not expect `"+Pc.sep+"`")}function Vc(e,t){if(!e)throw new Error("`"+t+"` cannot be empty")}function $c(e,t){if(!e)throw new Error("Setting `"+t+"` requires `path` to be set too")}Object.defineProperty(qc,"path",{get:function(){return this.history[this.history.length-1]},set:function(e){Vc(e,"path"),e!==this.path&&this.history.push(e)}}),Object.defineProperty(qc,"dirname",{get:function(){return"string"==typeof this.path?Pc.dirname(this.path):void 0},set:function(e){$c(this.path,"dirname"),this.path=Pc.join(e||"",this.basename)}}),Object.defineProperty(qc,"basename",{get:function(){return"string"==typeof this.path?Pc.basename(this.path):void 0},set:function(e){Vc(e,"basename"),jc(e,"basename"),this.path=Pc.join(this.dirname||"",e)}}),Object.defineProperty(qc,"extname",{get:function(){return"string"==typeof this.path?Pc.extname(this.path):void 0},set:function(e){var t=e||"";if(jc(t,"extname"),$c(this.path,"extname"),t){if("."!==t.charAt(0))throw new Error("`extname` must start with `.`");if(-1!==t.indexOf(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=Bc(this.path,t)}}),Object.defineProperty(qc,"stem",{get:function(){return"string"==typeof this.path?Pc.basename(this.path,this.extname):void 0},set:function(e){Vc(e,"stem"),jc(e,"stem"),this.path=Pc.join(this.dirname||"",e+(this.extname||""))}});var Wc=Hc,Yc=Hc.prototype;function Qc(e,t,n){var r=this.path,a=new _c(e,t,n);return r&&(a.name=r+":"+a.name,a.file=r),a.fatal=!1,this.messages.push(a),a}Yc.message=Qc,Yc.info=function(){var e=this.message.apply(this,arguments);return e.fatal=null,e},Yc.fail=function(){var e=this.message.apply(this,arguments);throw e.fatal=!0,e},Yc.warn=Qc;var Xc=function(){var e=[],t={};return t.run=function(){var t=-1,n=Zc.call(arguments,0,-1),r=arguments[arguments.length-1];if("function"!=typeof r)throw new Error("Expected function as last argument, not "+r);(function a(i){var o=e[++t],l=Zc.call(arguments,0),s=l.slice(1),c=n.length,u=-1;if(i)r(i);else{for(;++u<c;)null!==s[u]&&void 0!==s[u]||(s[u]=n[u]);n=s,o?function(e,t){var n;return function(){var t,i=Zc.call(arguments,0),o=e.length>i.length;o&&i.push(r);try{t=e.apply(null,i)}catch(e){if(o&&n)throw e;return r(e)}o||(t&&"function"==typeof t.then?t.then(a,r):t instanceof Error?r(t):a(t))};function r(){n||(n=!0,t.apply(null,arguments))}function a(e){r(null,e)}}(o,a).apply(null,n):r.apply(null,[null].concat(n))}}).apply(null,[null].concat(n))},t.use=function(n){if("function"!=typeof n)throw new Error("Expected `fn` to be a function, not "+n);return e.push(n),t},t},Zc=[].slice;var Jc=Object.prototype.toString,eu=function(e){return"[object String]"===Jc.call(e)};var tu=function(e){return"[object Function]"===Object.prototype.toString.call(e)},nu=Object.prototype.toString,ru=function(e){var t;return"[object Object]"===nu.call(e)&&(null===(t=Object.getPrototypeOf(e))||t===Object.getPrototypeOf({}))},au=function e(){var t=[];var n=Xc();var r={};var a=!1;var i=-1;o.data=function(e,t){if(eu(e))return 2===arguments.length?(du("data",a),r[e]=t,o):ou.call(r,e)&&r[e]||null;if(e)return du("data",a),r=e,o;return r};o.freeze=l;o.attachers=t;o.use=function(e){var n;if(du("use",a),null===e||void 0===e);else if(tu(e))c.apply(null,arguments);else{if("object"!=typeof e)throw new Error("Expected usable value, not `"+e+"`");"length"in e?s(e):i(e)}n&&(r.settings=uc(r.settings||{},n));return o;function i(e){s(e.plugins),e.settings&&(n=uc(n||{},e.settings))}function l(e){if(tu(e))c(e);else{if("object"!=typeof e)throw new Error("Expected usable value, not `"+e+"`");"length"in e?c.apply(null,e):i(e)}}function s(e){var t,n;if(null===e||void 0===e);else{if(!("object"==typeof e&&"length"in e))throw new Error("Expected a list of plugins, not `"+e+"`");for(t=e.length,n=-1;++n<t;)l(e[n])}}function c(e,n){var r=function(e){var n,r=t.length,a=-1;for(;++a<r;)if((n=t[a])[0]===e)return n}(e);r?(ru(r[1])&&ru(n)&&(n=uc(r[1],n)),r[1]=n):t.push(iu.call(arguments))}};o.parse=function(e){var t,n=Wc(e);if(l(),cu("parse",t=o.Parser),su(t))return new t(String(n),n).parse();return t(String(n),n)};o.stringify=function(e,t){var n,r=Wc(t);if(l(),uu("stringify",n=o.Compiler),pu(e),su(n))return new n(e,r).compile();return n(e,r)};o.run=s;o.runSync=function(e,t){var n,r=!1;return s(e,t,function(e,t){r=!0,dc(e),n=t}),mu("runSync","run",r),n};o.process=c;o.processSync=function(e){var t,n=!1;return l(),cu("processSync",o.Parser),uu("processSync",o.Compiler),c(t=Wc(e),function(e){n=!0,dc(e)}),mu("processSync","process",n),t};return o;function o(){for(var n=e(),a=t.length,i=-1;++i<a;)n.use.apply(null,t[i]);return n.data(uc(!0,{},r)),n}function l(){var e,r,l,s;if(a)return o;for(;++i<t.length;)e=t[i],r=e[0],l=e[1],s=null,!1!==l&&(!0===l&&(e[1]=void 0),s=r.apply(o,e.slice(1)),tu(s)&&n.use(s));return a=!0,i=1/0,o}function s(e,t,r){if(pu(e),l(),!r&&tu(t)&&(r=t,t=null),!r)return new Promise(a);function a(a,i){n.run(e,Wc(t),function(t,n,o){n=n||e,t?i(t):a?a(n):r(null,n,o)})}a(null,r)}function c(e,t){if(l(),cu("process",o.Parser),uu("process",o.Compiler),!t)return new Promise(n);function n(n,r){var a=Wc(e);lu.run(o,{file:a},function(e){e?r(e):n?n(a):t(null,a)})}n(null,t)}}().freeze(),iu=[].slice,ou={}.hasOwnProperty,lu=Xc().use(function(e,t){t.tree=e.parse(t.file)}).use(function(e,t,n){e.run(t.tree,t.file,function(e,r,a){e?n(e):(t.tree=r,t.file=a,n())})}).use(function(e,t){t.file.contents=e.stringify(t.tree,t.file)});function su(e){return tu(e)&&function(e){var t;for(t in e)return!0;return!1}(e.prototype)}function cu(e,t){if(!tu(t))throw new Error("Cannot `"+e+"` without `Parser`")}function uu(e,t){if(!tu(t))throw new Error("Cannot `"+e+"` without `Compiler`")}function du(e,t){if(t)throw new Error("Cannot invoke `"+e+"` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.")}function pu(e){if(!e||!eu(e.type))throw new Error("Expected node, got `"+e+"`")}function mu(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}var gu=Array.prototype.slice,hu=Object.prototype.toString,fu=(Function.prototype.bind||function(e){var t=this;if("function"!=typeof t||"[object Function]"!==hu.call(t))throw new TypeError("Function.prototype.bind called on incompatible "+t);for(var n,r=gu.call(arguments,1),a=Math.max(0,t.length-r.length),i=[],o=0;o<a;o++)i.push("$"+o);if(n=Function("binder","return function ("+i.join(",")+"){ return binder.apply(this,arguments); }")(function(){if(this instanceof n){var a=t.apply(this,r.concat(gu.call(arguments)));return Object(a)===a?a:this}return t.apply(e,r.concat(gu.call(arguments)))}),t.prototype){var l=function(){};l.prototype=t.prototype,n.prototype=new l,l.prototype=null}return n}).call(Function.call,Object.prototype.hasOwnProperty),_u=function(e,t){var n,r=t||{};r.messages?(n=r,r={}):n=r.file;return Tu(e,{file:n,toPosition:n?hl(n).toPosition:null,verbose:r.verbose,location:!1})},Eu={"#document":bu,"#document-fragment":bu,"#text":function(e){return{type:"text",value:e.value}},"#comment":function(e){return{type:"comment",value:e.data}},"#documentType":function(e){return{type:"doctype",name:e.name||"",public:e.publicId||null,system:e.systemId||null}}};function Tu(e,t){var n,r,a,i=fu(Eu,e.nodeName)?Eu[e.nodeName]:vu;return e.childNodes&&(n=function(e,t){var n=e.length,r=-1,a=[];for(;++r<n;)a[r]=Tu(e[r],t);return a}(e.childNodes,t)),r=i(e,n,t),e.__location&&t.toPosition&&(t.location=!0,(a=Su(e.__location,e,r,t))&&(r.position=a)),r}function bu(e,t,n){var r={type:"root",children:t,data:{quirksMode:e.quirksMode}};return n.file&&n.location&&(r.position=Su({startOffset:0,endOffset:String(n.file).length},e,r,n)),r}function vu(e,t){for(var n,r={},a=e.attrs,i=a.length,o=-1;++o<i;)r[((n=a[o]).prefix?n.prefix+":":"")+n.name]=n.value;return Il(e.tagName,r,t)}function Au(e,t){return{start:e(t.startOffset),end:e(t.endOffset)}}function Su(e,t,n,r){var a,i,o=e.startOffset,l=e.endOffset,s=e.attrs||{},c={};for(a in s)c[(ll(a)||{}).propertyName||gl(a)]=Au(r.toPosition,s[a]);if("element"!==n.type||e.endTag||((i=n.children[n.children.length-1])&&i.position?l=i.position.end?i.position.end.offset:null:e.startTag&&(l=e.startTag.endOffset)),r.verbose&&"element"===n.type&&(n.data={position:{opening:Au(r.toPosition,e.startTag||e),closing:e.endTag?Au(r.toPosition,e.endTag):null,properties:c}}),o="number"==typeof o?r.toPosition(o):null,l="number"==typeof l?r.toPosition(l):null,o||l)return{start:o,end:l}}var yu={REPLACEMENT_CHARACTER:"�",CODE_POINTS:{EOF:-1,NULL:0,TABULATION:9,CARRIAGE_RETURN:13,LINE_FEED:10,FORM_FEED:12,SPACE:32,EXCLAMATION_MARK:33,QUOTATION_MARK:34,NUMBER_SIGN:35,AMPERSAND:38,APOSTROPHE:39,HYPHEN_MINUS:45,SOLIDUS:47,DIGIT_0:48,DIGIT_9:57,SEMICOLON:59,LESS_THAN_SIGN:60,EQUALS_SIGN:61,GREATER_THAN_SIGN:62,QUESTION_MARK:63,LATIN_CAPITAL_A:65,LATIN_CAPITAL_F:70,LATIN_CAPITAL_X:88,LATIN_CAPITAL_Z:90,GRAVE_ACCENT:96,LATIN_SMALL_A:97,LATIN_SMALL_F:102,LATIN_SMALL_X:120,LATIN_SMALL_Z:122,REPLACEMENT_CHARACTER:65533},CODE_POINT_SEQUENCES:{DASH_DASH_STRING:[45,45],DOCTYPE_STRING:[68,79,67,84,89,80,69],CDATA_START_STRING:[91,67,68,65,84,65,91],CDATA_END_STRING:[93,93,62],SCRIPT_STRING:[115,99,114,105,112,116],PUBLIC_STRING:[80,85,66,76,73,67],SYSTEM_STRING:[83,89,83,84,69,77]}},Nu=f(function(e){var t=yu.CODE_POINTS;var n=e.exports=function(){this.html=null,this.pos=-1,this.lastGapPos=-1,this.lastCharPos=-1,this.droppedBufferSize=0,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=65536};Object.defineProperty(n.prototype,"sourcePos",{get:function(){return this.droppedBufferSize+this.pos}}),n.prototype.dropParsedChunk=function(){this.pos>this.bufferWaterline&&(this.lastCharPos-=this.pos,this.droppedBufferSize+=this.pos,this.html=this.html.substring(this.pos),this.pos=0,this.lastGapPos=-1,this.gapStack=[])},n.prototype._addGap=function(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos},n.prototype._processHighRangeCodePoint=function(e){if(this.pos!==this.lastCharPos){var n=this.html.charCodeAt(this.pos+1);a=n,(r=e)>=55296&&r<=56319&&a>=56320&&a<=57343&&(this.pos++,e=function(e,t){return 1024*(e-55296)+9216+t}(e,n),this._addGap())}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,t.EOF;var r,a;return e},n.prototype.write=function(e,t){this.html?this.html+=e:this.html=e,this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1,this.lastChunkWritten=t},n.prototype.insertHtmlAtCurrentPos=function(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1,this.html.length),this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1},n.prototype.advance=function(){if(this.pos++,this.pos>this.lastCharPos)return this.lastChunkWritten||(this.endOfChunkHit=!0),t.EOF;var e=this.html.charCodeAt(this.pos);return this.skipNextNewLine&&e===t.LINE_FEED?(this.skipNextNewLine=!1,this._addGap(),this.advance()):e===t.CARRIAGE_RETURN?(this.skipNextNewLine=!0,t.LINE_FEED):(this.skipNextNewLine=!1,e>=55296?this._processHighRangeCodePoint(e):e)},n.prototype.retreat=function(){this.pos===this.lastGapPos&&(this.lastGapPos=this.gapStack.pop(),this.pos--),this.pos--}}),Cu=yu.CODE_POINTS,Ou=function(e){var t=Object.getPrototypeOf(e),n=-1,r=-1,a=1,i=!1,o=[0],l=0,s=-1,c=1;function u(e){e.location={line:a,col:r,startOffset:n,endOffset:-1}}e._consume=function(){var e=t._consume.call(this);return i&&(i=!1,c++,o.push(this.preprocessor.sourcePos),l=this.preprocessor.sourcePos),e===Cu.LINE_FEED&&(i=!0),s=this.preprocessor.sourcePos-l+1,e},e._unconsume=function(){for(t._unconsume.call(this),i=!1;l>this.preprocessor.sourcePos&&o.length>1;)l=o.pop(),c--;s=this.preprocessor.sourcePos-l+1},e._createStartTagToken=function(){t._createStartTagToken.call(this),u(this.currentToken)},e._createEndTagToken=function(){t._createEndTagToken.call(this),u(this.currentToken)},e._createCommentToken=function(){t._createCommentToken.call(this),u(this.currentToken)},e._createDoctypeToken=function(e){t._createDoctypeToken.call(this,e),u(this.currentToken)},e._createCharacterToken=function(e,n){t._createCharacterToken.call(this,e,n),u(this.currentCharacterToken)},e._createAttr=function(e){t._createAttr.call(this,e),this.currentAttrLocation={line:c,col:s,startOffset:this.preprocessor.sourcePos,endOffset:-1}},e._leaveAttrName=function(e){t._leaveAttrName.call(this,e),this._attachCurrentAttrLocationInfo()},e._leaveAttrValue=function(e){t._leaveAttrValue.call(this,e),this._attachCurrentAttrLocationInfo()},e._attachCurrentAttrLocationInfo=function(){this.currentAttrLocation.endOffset=this.preprocessor.sourcePos,this.currentToken.location.attrs||(this.currentToken.location.attrs={}),this.currentToken.location.attrs[this.currentAttr.name]=this.currentAttrLocation},e._emitCurrentToken=function(){this.currentCharacterToken&&(this.currentCharacterToken.location.endOffset=this.currentToken.location.startOffset),this.currentToken.location.endOffset=this.preprocessor.sourcePos+1,t._emitCurrentToken.call(this)},e._emitCurrentCharacterToken=function(){this.currentCharacterToken&&-1===this.currentCharacterToken.location.endOffset&&(this.currentCharacterToken.location.endOffset=this.preprocessor.sourcePos),t._emitCurrentCharacterToken.call(this)},Object.keys(t.MODE).map(function(e){return t.MODE[e]}).forEach(function(i){e[i]=function(e){n=this.preprocessor.sourcePos,a=c,r=s,t[i].call(this,e)}})},Mu={65:{l:{69:{l:{108:{l:{105:{l:{103:{l:{59:{c:[198]}},c:[198]}}}}}}},77:{l:{80:{l:{59:{c:[38]}},c:[38]}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[193]}},c:[193]}}}}}}}}},98:{l:{114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[258]}}}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[194]}},c:[194]}}}}},121:{l:{59:{c:[1040]}}}}},102:{l:{114:{l:{59:{c:[120068]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[192]}},c:[192]}}}}}}}}},108:{l:{112:{l:{104:{l:{97:{l:{59:{c:[913]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[256]}}}}}}}}},110:{l:{100:{l:{59:{c:[10835]}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[260]}}}}}}},112:{l:{102:{l:{59:{c:[120120]}}}}}}},112:{l:{112:{l:{108:{l:{121:{l:{70:{l:{117:{l:{110:{l:{99:{l:{116:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8289]}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{110:{l:{103:{l:{59:{c:[197]}},c:[197]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119964]}}}}},115:{l:{105:{l:{103:{l:{110:{l:{59:{c:[8788]}}}}}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[195]}},c:[195]}}}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[196]}},c:[196]}}}}}}},66:{l:{97:{l:{99:{l:{107:{l:{115:{l:{108:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8726]}}}}}}}}}}}}}}},114:{l:{118:{l:{59:{c:[10983]}}},119:{l:{101:{l:{100:{l:{59:{c:[8966]}}}}}}}}}}},99:{l:{121:{l:{59:{c:[1041]}}}}},101:{l:{99:{l:{97:{l:{117:{l:{115:{l:{101:{l:{59:{c:[8757]}}}}}}}}}}},114:{l:{110:{l:{111:{l:{117:{l:{108:{l:{108:{l:{105:{l:{115:{l:{59:{c:[8492]}}}}}}}}}}}}}}}}},116:{l:{97:{l:{59:{c:[914]}}}}}}},102:{l:{114:{l:{59:{c:[120069]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120121]}}}}}}},114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[728]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8492]}}}}}}},117:{l:{109:{l:{112:{l:{101:{l:{113:{l:{59:{c:[8782]}}}}}}}}}}}}},67:{l:{72:{l:{99:{l:{121:{l:{59:{c:[1063]}}}}}}},79:{l:{80:{l:{89:{l:{59:{c:[169]}},c:[169]}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[262]}}}}}}}}},112:{l:{59:{c:[8914]},105:{l:{116:{l:{97:{l:{108:{l:{68:{l:{105:{l:{102:{l:{102:{l:{101:{l:{114:{l:{101:{l:{110:{l:{116:{l:{105:{l:{97:{l:{108:{l:{68:{l:{59:{c:[8517]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},121:{l:{108:{l:{101:{l:{121:{l:{115:{l:{59:{c:[8493]}}}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[268]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[199]}},c:[199]}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[264]}}}}}}},111:{l:{110:{l:{105:{l:{110:{l:{116:{l:{59:{c:[8752]}}}}}}}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[266]}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{108:{l:{97:{l:{59:{c:[184]}}}}}}}}}}},110:{l:{116:{l:{101:{l:{114:{l:{68:{l:{111:{l:{116:{l:{59:{c:[183]}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[8493]}}}}},104:{l:{105:{l:{59:{c:[935]}}}}},105:{l:{114:{l:{99:{l:{108:{l:{101:{l:{68:{l:{111:{l:{116:{l:{59:{c:[8857]}}}}}}},77:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[8854]}}}}}}}}}}},80:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8853]}}}}}}}}},84:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8855]}}}}}}}}}}}}}}}}}}}}},108:{l:{111:{l:{99:{l:{107:{l:{119:{l:{105:{l:{115:{l:{101:{l:{67:{l:{111:{l:{110:{l:{116:{l:{111:{l:{117:{l:{114:{l:{73:{l:{110:{l:{116:{l:{101:{l:{103:{l:{114:{l:{97:{l:{108:{l:{59:{c:[8754]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{101:{l:{67:{l:{117:{l:{114:{l:{108:{l:{121:{l:{68:{l:{111:{l:{117:{l:{98:{l:{108:{l:{101:{l:{81:{l:{117:{l:{111:{l:{116:{l:{101:{l:{59:{c:[8221]}}}}}}}}}}}}}}}}}}}}}}},81:{l:{117:{l:{111:{l:{116:{l:{101:{l:{59:{c:[8217]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{108:{l:{111:{l:{110:{l:{59:{c:[8759]},101:{l:{59:{c:[10868]}}}}}}}}},110:{l:{103:{l:{114:{l:{117:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8801]}}}}}}}}}}}}},105:{l:{110:{l:{116:{l:{59:{c:[8751]}}}}}}},116:{l:{111:{l:{117:{l:{114:{l:{73:{l:{110:{l:{116:{l:{101:{l:{103:{l:{114:{l:{97:{l:{108:{l:{59:{c:[8750]}}}}}}}}}}}}}}}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[8450]}}},114:{l:{111:{l:{100:{l:{117:{l:{99:{l:{116:{l:{59:{c:[8720]}}}}}}}}}}}}}}},117:{l:{110:{l:{116:{l:{101:{l:{114:{l:{67:{l:{108:{l:{111:{l:{99:{l:{107:{l:{119:{l:{105:{l:{115:{l:{101:{l:{67:{l:{111:{l:{110:{l:{116:{l:{111:{l:{117:{l:{114:{l:{73:{l:{110:{l:{116:{l:{101:{l:{103:{l:{114:{l:{97:{l:{108:{l:{59:{c:[8755]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{111:{l:{115:{l:{115:{l:{59:{c:[10799]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119966]}}}}}}},117:{l:{112:{l:{59:{c:[8915]},67:{l:{97:{l:{112:{l:{59:{c:[8781]}}}}}}}}}}}}},68:{l:{68:{l:{59:{c:[8517]},111:{l:{116:{l:{114:{l:{97:{l:{104:{l:{100:{l:{59:{c:[10513]}}}}}}}}}}}}}}},74:{l:{99:{l:{121:{l:{59:{c:[1026]}}}}}}},83:{l:{99:{l:{121:{l:{59:{c:[1029]}}}}}}},90:{l:{99:{l:{121:{l:{59:{c:[1039]}}}}}}},97:{l:{103:{l:{103:{l:{101:{l:{114:{l:{59:{c:[8225]}}}}}}}}},114:{l:{114:{l:{59:{c:[8609]}}}}},115:{l:{104:{l:{118:{l:{59:{c:[10980]}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[270]}}}}}}}}},121:{l:{59:{c:[1044]}}}}},101:{l:{108:{l:{59:{c:[8711]},116:{l:{97:{l:{59:{c:[916]}}}}}}}}},102:{l:{114:{l:{59:{c:[120071]}}}}},105:{l:{97:{l:{99:{l:{114:{l:{105:{l:{116:{l:{105:{l:{99:{l:{97:{l:{108:{l:{65:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[180]}}}}}}}}}}},68:{l:{111:{l:{116:{l:{59:{c:[729]}}},117:{l:{98:{l:{108:{l:{101:{l:{65:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[733]}}}}}}}}}}}}}}}}}}}}}}},71:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[96]}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[732]}}}}}}}}}}}}}}}}}}}}}}}}}}},109:{l:{111:{l:{110:{l:{100:{l:{59:{c:[8900]}}}}}}}}}}},102:{l:{102:{l:{101:{l:{114:{l:{101:{l:{110:{l:{116:{l:{105:{l:{97:{l:{108:{l:{68:{l:{59:{c:[8518]}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120123]}}}}},116:{l:{59:{c:[168]},68:{l:{111:{l:{116:{l:{59:{c:[8412]}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8784]}}}}}}}}}}}}},117:{l:{98:{l:{108:{l:{101:{l:{67:{l:{111:{l:{110:{l:{116:{l:{111:{l:{117:{l:{114:{l:{73:{l:{110:{l:{116:{l:{101:{l:{103:{l:{114:{l:{97:{l:{108:{l:{59:{c:[8751]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},68:{l:{111:{l:{116:{l:{59:{c:[168]}}},119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8659]}}}}}}}}}}}}}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8656]}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8660]}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[10980]}}}}}}}}}}}}},111:{l:{110:{l:{103:{l:{76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10232]}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10234]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10233]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8658]}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[8872]}}}}}}}}}}}}}}}}},85:{l:{112:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8657]}}}}}}}}}}},68:{l:{111:{l:{119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8661]}}}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{114:{l:{116:{l:{105:{l:{99:{l:{97:{l:{108:{l:{66:{l:{97:{l:{114:{l:{59:{c:[8741]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8595]},66:{l:{97:{l:{114:{l:{59:{c:[10515]}}}}}}},85:{l:{112:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8693]}}}}}}}}}}}}}}}}}}}}}}}}},66:{l:{114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[785]}}}}}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10576]}}}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10590]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8637]},66:{l:{97:{l:{114:{l:{59:{c:[10582]}}}}}}}}}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10591]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8641]},66:{l:{97:{l:{114:{l:{59:{c:[10583]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[8868]},65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8615]}}}}}}}}}}}}}}}}},97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8659]}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119967]}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[272]}}}}}}}}}}}}},69:{l:{78:{l:{71:{l:{59:{c:[330]}}}}},84:{l:{72:{l:{59:{c:[208]}},c:[208]}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[201]}},c:[201]}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[282]}}}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[202]}},c:[202]}}}}},121:{l:{59:{c:[1069]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[278]}}}}}}},102:{l:{114:{l:{59:{c:[120072]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[200]}},c:[200]}}}}}}}}},108:{l:{101:{l:{109:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8712]}}}}}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[274]}}}}}}},112:{l:{116:{l:{121:{l:{83:{l:{109:{l:{97:{l:{108:{l:{108:{l:{83:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9723]}}}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{114:{l:{121:{l:{83:{l:{109:{l:{97:{l:{108:{l:{108:{l:{83:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9643]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[280]}}}}}}},112:{l:{102:{l:{59:{c:[120124]}}}}}}},112:{l:{115:{l:{105:{l:{108:{l:{111:{l:{110:{l:{59:{c:[917]}}}}}}}}}}}}},113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10869]},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8770]}}}}}}}}}}}}}}},105:{l:{108:{l:{105:{l:{98:{l:{114:{l:{105:{l:{117:{l:{109:{l:{59:{c:[8652]}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8496]}}}}},105:{l:{109:{l:{59:{c:[10867]}}}}}}},116:{l:{97:{l:{59:{c:[919]}}}}},117:{l:{109:{l:{108:{l:{59:{c:[203]}},c:[203]}}}}},120:{l:{105:{l:{115:{l:{116:{l:{115:{l:{59:{c:[8707]}}}}}}}}},112:{l:{111:{l:{110:{l:{101:{l:{110:{l:{116:{l:{105:{l:{97:{l:{108:{l:{69:{l:{59:{c:[8519]}}}}}}}}}}}}}}}}}}}}}}}}},70:{l:{99:{l:{121:{l:{59:{c:[1060]}}}}},102:{l:{114:{l:{59:{c:[120073]}}}}},105:{l:{108:{l:{108:{l:{101:{l:{100:{l:{83:{l:{109:{l:{97:{l:{108:{l:{108:{l:{83:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9724]}}}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{114:{l:{121:{l:{83:{l:{109:{l:{97:{l:{108:{l:{108:{l:{83:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9642]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120125]}}}}},114:{l:{65:{l:{108:{l:{108:{l:{59:{c:[8704]}}}}}}}}},117:{l:{114:{l:{105:{l:{101:{l:{114:{l:{116:{l:{114:{l:{102:{l:{59:{c:[8497]}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8497]}}}}}}}}},71:{l:{74:{l:{99:{l:{121:{l:{59:{c:[1027]}}}}}}},84:{l:{59:{c:[62]}},c:[62]},97:{l:{109:{l:{109:{l:{97:{l:{59:{c:[915]},100:{l:{59:{c:[988]}}}}}}}}}}},98:{l:{114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[286]}}}}}}}}}}},99:{l:{101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[290]}}}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[284]}}}}}}},121:{l:{59:{c:[1043]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[288]}}}}}}},102:{l:{114:{l:{59:{c:[120074]}}}}},103:{l:{59:{c:[8921]}}},111:{l:{112:{l:{102:{l:{59:{c:[120126]}}}}}}},114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8805]},76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8923]}}}}}}}}}}}}}}}}}}},70:{l:{117:{l:{108:{l:{108:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8807]}}}}}}}}}}}}}}}}}}},71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[10914]}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8823]}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10878]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8819]}}}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119970]}}}}}}},116:{l:{59:{c:[8811]}}}}},72:{l:{65:{l:{82:{l:{68:{l:{99:{l:{121:{l:{59:{c:[1066]}}}}}}}}}}},97:{l:{99:{l:{101:{l:{107:{l:{59:{c:[711]}}}}}}},116:{l:{59:{c:[94]}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[292]}}}}}}}}},102:{l:{114:{l:{59:{c:[8460]}}}}},105:{l:{108:{l:{98:{l:{101:{l:{114:{l:{116:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8459]}}}}}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[8461]}}}}},114:{l:{105:{l:{122:{l:{111:{l:{110:{l:{116:{l:{97:{l:{108:{l:{76:{l:{105:{l:{110:{l:{101:{l:{59:{c:[9472]}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8459]}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[294]}}}}}}}}}}},117:{l:{109:{l:{112:{l:{68:{l:{111:{l:{119:{l:{110:{l:{72:{l:{117:{l:{109:{l:{112:{l:{59:{c:[8782]}}}}}}}}}}}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8783]}}}}}}}}}}}}}}}}}}},73:{l:{69:{l:{99:{l:{121:{l:{59:{c:[1045]}}}}}}},74:{l:{108:{l:{105:{l:{103:{l:{59:{c:[306]}}}}}}}}},79:{l:{99:{l:{121:{l:{59:{c:[1025]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[205]}},c:[205]}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[206]}},c:[206]}}}}},121:{l:{59:{c:[1048]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[304]}}}}}}},102:{l:{114:{l:{59:{c:[8465]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[204]}},c:[204]}}}}}}}}},109:{l:{59:{c:[8465]},97:{l:{99:{l:{114:{l:{59:{c:[298]}}}}},103:{l:{105:{l:{110:{l:{97:{l:{114:{l:{121:{l:{73:{l:{59:{c:[8520]}}}}}}}}}}}}}}}}},112:{l:{108:{l:{105:{l:{101:{l:{115:{l:{59:{c:[8658]}}}}}}}}}}}}},110:{l:{116:{l:{59:{c:[8748]},101:{l:{103:{l:{114:{l:{97:{l:{108:{l:{59:{c:[8747]}}}}}}}}},114:{l:{115:{l:{101:{l:{99:{l:{116:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8898]}}}}}}}}}}}}}}}}}}}}},118:{l:{105:{l:{115:{l:{105:{l:{98:{l:{108:{l:{101:{l:{67:{l:{111:{l:{109:{l:{109:{l:{97:{l:{59:{c:[8291]}}}}}}}}}}},84:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8290]}}}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[302]}}}}}}},112:{l:{102:{l:{59:{c:[120128]}}}}},116:{l:{97:{l:{59:{c:[921]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8464]}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[296]}}}}}}}}}}},117:{l:{107:{l:{99:{l:{121:{l:{59:{c:[1030]}}}}}}},109:{l:{108:{l:{59:{c:[207]}},c:[207]}}}}}}},74:{l:{99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[308]}}}}}}},121:{l:{59:{c:[1049]}}}}},102:{l:{114:{l:{59:{c:[120077]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120129]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119973]}}}}},101:{l:{114:{l:{99:{l:{121:{l:{59:{c:[1032]}}}}}}}}}}},117:{l:{107:{l:{99:{l:{121:{l:{59:{c:[1028]}}}}}}}}}}},75:{l:{72:{l:{99:{l:{121:{l:{59:{c:[1061]}}}}}}},74:{l:{99:{l:{121:{l:{59:{c:[1036]}}}}}}},97:{l:{112:{l:{112:{l:{97:{l:{59:{c:[922]}}}}}}}}},99:{l:{101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[310]}}}}}}}}},121:{l:{59:{c:[1050]}}}}},102:{l:{114:{l:{59:{c:[120078]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120130]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119974]}}}}}}}}},76:{l:{74:{l:{99:{l:{121:{l:{59:{c:[1033]}}}}}}},84:{l:{59:{c:[60]}},c:[60]},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[313]}}}}}}}}},109:{l:{98:{l:{100:{l:{97:{l:{59:{c:[923]}}}}}}}}},110:{l:{103:{l:{59:{c:[10218]}}}}},112:{l:{108:{l:{97:{l:{99:{l:{101:{l:{116:{l:{114:{l:{102:{l:{59:{c:[8466]}}}}}}}}}}}}}}}}},114:{l:{114:{l:{59:{c:[8606]}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[317]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[315]}}}}}}}}},121:{l:{59:{c:[1051]}}}}},101:{l:{102:{l:{116:{l:{65:{l:{110:{l:{103:{l:{108:{l:{101:{l:{66:{l:{114:{l:{97:{l:{99:{l:{107:{l:{101:{l:{116:{l:{59:{c:[10216]}}}}}}}}}}}}}}}}}}}}}}},114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8592]},66:{l:{97:{l:{114:{l:{59:{c:[8676]}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8646]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},67:{l:{101:{l:{105:{l:{108:{l:{105:{l:{110:{l:{103:{l:{59:{c:[8968]}}}}}}}}}}}}}}},68:{l:{111:{l:{117:{l:{98:{l:{108:{l:{101:{l:{66:{l:{114:{l:{97:{l:{99:{l:{107:{l:{101:{l:{116:{l:{59:{c:[10214]}}}}}}}}}}}}}}}}}}}}}}},119:{l:{110:{l:{84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10593]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8643]},66:{l:{97:{l:{114:{l:{59:{c:[10585]}}}}}}}}}}}}}}}}}}}}}}}}}}},70:{l:{108:{l:{111:{l:{111:{l:{114:{l:{59:{c:[8970]}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8596]}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10574]}}}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[8867]},65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8612]}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10586]}}}}}}}}}}}}}}}}},114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[8882]},66:{l:{97:{l:{114:{l:{59:{c:[10703]}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8884]}}}}}}}}}}}}}}}}}}}}}}}}}}},85:{l:{112:{l:{68:{l:{111:{l:{119:{l:{110:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10577]}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10592]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8639]},66:{l:{97:{l:{114:{l:{59:{c:[10584]}}}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8636]},66:{l:{97:{l:{114:{l:{59:{c:[10578]}}}}}}}}}}}}}}}}}}},97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8656]}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8660]}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{115:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8922]}}}}}}}}}}}}}}}}}}}}}}}}},70:{l:{117:{l:{108:{l:{108:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8806]}}}}}}}}}}}}}}}}}}},71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8822]}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[10913]}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10877]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8818]}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120079]}}}}},108:{l:{59:{c:[8920]},101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8666]}}}}}}}}}}}}}}}}}}},109:{l:{105:{l:{100:{l:{111:{l:{116:{l:{59:{c:[319]}}}}}}}}}}},111:{l:{110:{l:{103:{l:{76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10229]}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10231]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10230]}}}}}}}}}}}}}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10232]}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10234]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10233]}}}}}}}}}}}}}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[120131]}}}}},119:{l:{101:{l:{114:{l:{76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8601]}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8600]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8466]}}}}},104:{l:{59:{c:[8624]}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[321]}}}}}}}}}}},116:{l:{59:{c:[8810]}}}}},77:{l:{97:{l:{112:{l:{59:{c:[10501]}}}}},99:{l:{121:{l:{59:{c:[1052]}}}}},101:{l:{100:{l:{105:{l:{117:{l:{109:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8287]}}}}}}}}}}}}}}}}}}},108:{l:{108:{l:{105:{l:{110:{l:{116:{l:{114:{l:{102:{l:{59:{c:[8499]}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120080]}}}}},105:{l:{110:{l:{117:{l:{115:{l:{80:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8723]}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120132]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8499]}}}}}}},117:{l:{59:{c:[924]}}}}},78:{l:{74:{l:{99:{l:{121:{l:{59:{c:[1034]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[323]}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[327]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[325]}}}}}}}}},121:{l:{59:{c:[1053]}}}}},101:{l:{103:{l:{97:{l:{116:{l:{105:{l:{118:{l:{101:{l:{77:{l:{101:{l:{100:{l:{105:{l:{117:{l:{109:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8203]}}}}}}}}}}}}}}}}}}}}}}},84:{l:{104:{l:{105:{l:{99:{l:{107:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8203]}}}}}}}}}}}}}}},110:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8203]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{114:{l:{121:{l:{84:{l:{104:{l:{105:{l:{110:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8203]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{116:{l:{101:{l:{100:{l:{71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8811]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8810]}}}}}}}}}}}}}}}}}}}}}}}}},119:{l:{76:{l:{105:{l:{110:{l:{101:{l:{59:{c:[10]}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120081]}}}}},111:{l:{66:{l:{114:{l:{101:{l:{97:{l:{107:{l:{59:{c:[8288]}}}}}}}}}}},110:{l:{66:{l:{114:{l:{101:{l:{97:{l:{107:{l:{105:{l:{110:{l:{103:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[160]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[8469]}}}}},116:{l:{59:{c:[10988]},67:{l:{111:{l:{110:{l:{103:{l:{114:{l:{117:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8802]}}}}}}}}}}}}}}}}},117:{l:{112:{l:{67:{l:{97:{l:{112:{l:{59:{c:[8813]}}}}}}}}}}}}},68:{l:{111:{l:{117:{l:{98:{l:{108:{l:{101:{l:{86:{l:{101:{l:{114:{l:{116:{l:{105:{l:{99:{l:{97:{l:{108:{l:{66:{l:{97:{l:{114:{l:{59:{c:[8742]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},69:{l:{108:{l:{101:{l:{109:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8713]}}}}}}}}}}}}},113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8800]},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8770,824]}}}}}}}}}}}}}}}}}}},120:{l:{105:{l:{115:{l:{116:{l:{115:{l:{59:{c:[8708]}}}}}}}}}}}}},71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8815]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8817]}}}}}}}}}}},70:{l:{117:{l:{108:{l:{108:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8807,824]}}}}}}}}}}}}}}}}}}},71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8811,824]}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8825]}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10878,824]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8821]}}}}}}}}}}}}}}}}}}}}}}}}},72:{l:{117:{l:{109:{l:{112:{l:{68:{l:{111:{l:{119:{l:{110:{l:{72:{l:{117:{l:{109:{l:{112:{l:{59:{c:[8782,824]}}}}}}}}}}}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8783,824]}}}}}}}}}}}}}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{84:{l:{114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[8938]},66:{l:{97:{l:{114:{l:{59:{c:[10703,824]}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8940]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{115:{l:{59:{c:[8814]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8816]}}}}}}}}}}},71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8824]}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8810,824]}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10877,824]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8820]}}}}}}}}}}}}}}}}}}},78:{l:{101:{l:{115:{l:{116:{l:{101:{l:{100:{l:{71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[10914,824]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[10913,824]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},80:{l:{114:{l:{101:{l:{99:{l:{101:{l:{100:{l:{101:{l:{115:{l:{59:{c:[8832]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10927,824]}}}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8928]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},82:{l:{101:{l:{118:{l:{101:{l:{114:{l:{115:{l:{101:{l:{69:{l:{108:{l:{101:{l:{109:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8716]}}}}}}}}}}}}}}}}}}}}}}}}}}},105:{l:{103:{l:{104:{l:{116:{l:{84:{l:{114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[8939]},66:{l:{97:{l:{114:{l:{59:{c:[10704,824]}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8941]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},83:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{83:{l:{117:{l:{98:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8847,824]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8930]}}}}}}}}}}}}}}}}}}},112:{l:{101:{l:{114:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8848,824]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8931]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},117:{l:{98:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8834,8402]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8840]}}}}}}}}}}}}}}}}}}},99:{l:{99:{l:{101:{l:{101:{l:{100:{l:{115:{l:{59:{c:[8833]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10928,824]}}}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8929]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8831,824]}}}}}}}}}}}}}}}}}}}}}}},112:{l:{101:{l:{114:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8835,8402]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8841]}}}}}}}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8769]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8772]}}}}}}}}}}},70:{l:{117:{l:{108:{l:{108:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8775]}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8777]}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{114:{l:{116:{l:{105:{l:{99:{l:{97:{l:{108:{l:{66:{l:{97:{l:{114:{l:{59:{c:[8740]}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119977]}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[209]}},c:[209]}}}}}}}}},117:{l:{59:{c:[925]}}}}},79:{l:{69:{l:{108:{l:{105:{l:{103:{l:{59:{c:[338]}}}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[211]}},c:[211]}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[212]}},c:[212]}}}}},121:{l:{59:{c:[1054]}}}}},100:{l:{98:{l:{108:{l:{97:{l:{99:{l:{59:{c:[336]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120082]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[210]}},c:[210]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[332]}}}}}}},101:{l:{103:{l:{97:{l:{59:{c:[937]}}}}}}},105:{l:{99:{l:{114:{l:{111:{l:{110:{l:{59:{c:[927]}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120134]}}}}}}},112:{l:{101:{l:{110:{l:{67:{l:{117:{l:{114:{l:{108:{l:{121:{l:{68:{l:{111:{l:{117:{l:{98:{l:{108:{l:{101:{l:{81:{l:{117:{l:{111:{l:{116:{l:{101:{l:{59:{c:[8220]}}}}}}}}}}}}}}}}}}}}}}},81:{l:{117:{l:{111:{l:{116:{l:{101:{l:{59:{c:[8216]}}}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{59:{c:[10836]}}},115:{l:{99:{l:{114:{l:{59:{c:[119978]}}}}},108:{l:{97:{l:{115:{l:{104:{l:{59:{c:[216]}},c:[216]}}}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[213]}},c:[213]}}}}},109:{l:{101:{l:{115:{l:{59:{c:[10807]}}}}}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[214]}},c:[214]}}}}},118:{l:{101:{l:{114:{l:{66:{l:{97:{l:{114:{l:{59:{c:[8254]}}}}},114:{l:{97:{l:{99:{l:{101:{l:{59:{c:[9182]}}},107:{l:{101:{l:{116:{l:{59:{c:[9140]}}}}}}}}}}}}}}},80:{l:{97:{l:{114:{l:{101:{l:{110:{l:{116:{l:{104:{l:{101:{l:{115:{l:{105:{l:{115:{l:{59:{c:[9180]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},80:{l:{97:{l:{114:{l:{116:{l:{105:{l:{97:{l:{108:{l:{68:{l:{59:{c:[8706]}}}}}}}}}}}}}}},99:{l:{121:{l:{59:{c:[1055]}}}}},102:{l:{114:{l:{59:{c:[120083]}}}}},104:{l:{105:{l:{59:{c:[934]}}}}},105:{l:{59:{c:[928]}}},108:{l:{117:{l:{115:{l:{77:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[177]}}}}}}}}}}}}}}}}},111:{l:{105:{l:{110:{l:{99:{l:{97:{l:{114:{l:{101:{l:{112:{l:{108:{l:{97:{l:{110:{l:{101:{l:{59:{c:[8460]}}}}}}}}}}}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[8473]}}}}}}},114:{l:{59:{c:[10939]},101:{l:{99:{l:{101:{l:{100:{l:{101:{l:{115:{l:{59:{c:[8826]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10927]}}}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8828]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8830]}}}}}}}}}}}}}}}}}}}}}}},105:{l:{109:{l:{101:{l:{59:{c:[8243]}}}}}}},111:{l:{100:{l:{117:{l:{99:{l:{116:{l:{59:{c:[8719]}}}}}}}}},112:{l:{111:{l:{114:{l:{116:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8759]},97:{l:{108:{l:{59:{c:[8733]}}}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119979]}}}}},105:{l:{59:{c:[936]}}}}}}},81:{l:{85:{l:{79:{l:{84:{l:{59:{c:[34]}},c:[34]}}}}},102:{l:{114:{l:{59:{c:[120084]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[8474]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119980]}}}}}}}}},82:{l:{66:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10512]}}}}}}}}},69:{l:{71:{l:{59:{c:[174]}},c:[174]}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[340]}}}}}}}}},110:{l:{103:{l:{59:{c:[10219]}}}}},114:{l:{114:{l:{59:{c:[8608]},116:{l:{108:{l:{59:{c:[10518]}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[344]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[342]}}}}}}}}},121:{l:{59:{c:[1056]}}}}},101:{l:{59:{c:[8476]},118:{l:{101:{l:{114:{l:{115:{l:{101:{l:{69:{l:{108:{l:{101:{l:{109:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8715]}}}}}}}}}}}}},113:{l:{117:{l:{105:{l:{108:{l:{105:{l:{98:{l:{114:{l:{105:{l:{117:{l:{109:{l:{59:{c:[8651]}}}}}}}}}}}}}}}}}}}}}}},85:{l:{112:{l:{69:{l:{113:{l:{117:{l:{105:{l:{108:{l:{105:{l:{98:{l:{114:{l:{105:{l:{117:{l:{109:{l:{59:{c:[10607]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[8476]}}}}},104:{l:{111:{l:{59:{c:[929]}}}}},105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{110:{l:{103:{l:{108:{l:{101:{l:{66:{l:{114:{l:{97:{l:{99:{l:{107:{l:{101:{l:{116:{l:{59:{c:[10217]}}}}}}}}}}}}}}}}}}}}}}},114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8594]},66:{l:{97:{l:{114:{l:{59:{c:[8677]}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8644]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},67:{l:{101:{l:{105:{l:{108:{l:{105:{l:{110:{l:{103:{l:{59:{c:[8969]}}}}}}}}}}}}}}},68:{l:{111:{l:{117:{l:{98:{l:{108:{l:{101:{l:{66:{l:{114:{l:{97:{l:{99:{l:{107:{l:{101:{l:{116:{l:{59:{c:[10215]}}}}}}}}}}}}}}}}}}}}}}},119:{l:{110:{l:{84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10589]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8642]},66:{l:{97:{l:{114:{l:{59:{c:[10581]}}}}}}}}}}}}}}}}}}}}}}}}}}},70:{l:{108:{l:{111:{l:{111:{l:{114:{l:{59:{c:[8971]}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[8866]},65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8614]}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10587]}}}}}}}}}}}}}}}}},114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[8883]},66:{l:{97:{l:{114:{l:{59:{c:[10704]}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8885]}}}}}}}}}}}}}}}}}}}}}}}}}}},85:{l:{112:{l:{68:{l:{111:{l:{119:{l:{110:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10575]}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10588]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8638]},66:{l:{97:{l:{114:{l:{59:{c:[10580]}}}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8640]},66:{l:{97:{l:{114:{l:{59:{c:[10579]}}}}}}}}}}}}}}}}}}},97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8658]}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[8477]}}}}},117:{l:{110:{l:{100:{l:{73:{l:{109:{l:{112:{l:{108:{l:{105:{l:{101:{l:{115:{l:{59:{c:[10608]}}}}}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8667]}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8475]}}}}},104:{l:{59:{c:[8625]}}}}},117:{l:{108:{l:{101:{l:{68:{l:{101:{l:{108:{l:{97:{l:{121:{l:{101:{l:{100:{l:{59:{c:[10740]}}}}}}}}}}}}}}}}}}}}}}},83:{l:{72:{l:{67:{l:{72:{l:{99:{l:{121:{l:{59:{c:[1065]}}}}}}}}},99:{l:{121:{l:{59:{c:[1064]}}}}}}},79:{l:{70:{l:{84:{l:{99:{l:{121:{l:{59:{c:[1068]}}}}}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[346]}}}}}}}}}}},99:{l:{59:{c:[10940]},97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[352]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[350]}}}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[348]}}}}}}},121:{l:{59:{c:[1057]}}}}},102:{l:{114:{l:{59:{c:[120086]}}}}},104:{l:{111:{l:{114:{l:{116:{l:{68:{l:{111:{l:{119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8595]}}}}}}}}}}}}}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8592]}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8594]}}}}}}}}}}}}}}}}}}}}},85:{l:{112:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8593]}}}}}}}}}}}}}}}}}}}}}}},105:{l:{103:{l:{109:{l:{97:{l:{59:{c:[931]}}}}}}}}},109:{l:{97:{l:{108:{l:{108:{l:{67:{l:{105:{l:{114:{l:{99:{l:{108:{l:{101:{l:{59:{c:[8728]}}}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120138]}}}}}}},113:{l:{114:{l:{116:{l:{59:{c:[8730]}}}}},117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9633]},73:{l:{110:{l:{116:{l:{101:{l:{114:{l:{115:{l:{101:{l:{99:{l:{116:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8851]}}}}}}}}}}}}}}}}}}}}}}}}},83:{l:{117:{l:{98:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8847]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8849]}}}}}}}}}}}}}}}}}}},112:{l:{101:{l:{114:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8848]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8850]}}}}}}}}}}}}}}}}}}}}}}}}}}},85:{l:{110:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8852]}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119982]}}}}}}},116:{l:{97:{l:{114:{l:{59:{c:[8902]}}}}}}},117:{l:{98:{l:{59:{c:[8912]},115:{l:{101:{l:{116:{l:{59:{c:[8912]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8838]}}}}}}}}}}}}}}}}}}},99:{l:{99:{l:{101:{l:{101:{l:{100:{l:{115:{l:{59:{c:[8827]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10928]}}}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8829]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8831]}}}}}}}}}}}}}}}}}}}}},104:{l:{84:{l:{104:{l:{97:{l:{116:{l:{59:{c:[8715]}}}}}}}}}}}}},109:{l:{59:{c:[8721]}}},112:{l:{59:{c:[8913]},101:{l:{114:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8835]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8839]}}}}}}}}}}}}}}}}}}}}},115:{l:{101:{l:{116:{l:{59:{c:[8913]}}}}}}}}}}}}},84:{l:{72:{l:{79:{l:{82:{l:{78:{l:{59:{c:[222]}},c:[222]}}}}}}},82:{l:{65:{l:{68:{l:{69:{l:{59:{c:[8482]}}}}}}}}},83:{l:{72:{l:{99:{l:{121:{l:{59:{c:[1035]}}}}}}},99:{l:{121:{l:{59:{c:[1062]}}}}}}},97:{l:{98:{l:{59:{c:[9]}}},117:{l:{59:{c:[932]}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[356]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[354]}}}}}}}}},121:{l:{59:{c:[1058]}}}}},102:{l:{114:{l:{59:{c:[120087]}}}}},104:{l:{101:{l:{114:{l:{101:{l:{102:{l:{111:{l:{114:{l:{101:{l:{59:{c:[8756]}}}}}}}}}}}}},116:{l:{97:{l:{59:{c:[920]}}}}}}},105:{l:{99:{l:{107:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8287,8202]}}}}}}}}}}}}}}},110:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8201]}}}}}}}}}}}}}}}}},105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8764]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8771]}}}}}}}}}}},70:{l:{117:{l:{108:{l:{108:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8773]}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8776]}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120139]}}}}}}},114:{l:{105:{l:{112:{l:{108:{l:{101:{l:{68:{l:{111:{l:{116:{l:{59:{c:[8411]}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119983]}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[358]}}}}}}}}}}}}},85:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[218]}},c:[218]}}}}}}},114:{l:{114:{l:{59:{c:[8607]},111:{l:{99:{l:{105:{l:{114:{l:{59:{c:[10569]}}}}}}}}}}}}}}},98:{l:{114:{l:{99:{l:{121:{l:{59:{c:[1038]}}}}},101:{l:{118:{l:{101:{l:{59:{c:[364]}}}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[219]}},c:[219]}}}}},121:{l:{59:{c:[1059]}}}}},100:{l:{98:{l:{108:{l:{97:{l:{99:{l:{59:{c:[368]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120088]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[217]}},c:[217]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[362]}}}}}}}}},110:{l:{100:{l:{101:{l:{114:{l:{66:{l:{97:{l:{114:{l:{59:{c:[95]}}}}},114:{l:{97:{l:{99:{l:{101:{l:{59:{c:[9183]}}},107:{l:{101:{l:{116:{l:{59:{c:[9141]}}}}}}}}}}}}}}},80:{l:{97:{l:{114:{l:{101:{l:{110:{l:{116:{l:{104:{l:{101:{l:{115:{l:{105:{l:{115:{l:{59:{c:[9181]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},105:{l:{111:{l:{110:{l:{59:{c:[8899]},80:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8846]}}}}}}}}}}}}}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[370]}}}}}}},112:{l:{102:{l:{59:{c:[120140]}}}}}}},112:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8593]},66:{l:{97:{l:{114:{l:{59:{c:[10514]}}}}}}},68:{l:{111:{l:{119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8645]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},68:{l:{111:{l:{119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8597]}}}}}}}}}}}}}}}}}}},69:{l:{113:{l:{117:{l:{105:{l:{108:{l:{105:{l:{98:{l:{114:{l:{105:{l:{117:{l:{109:{l:{59:{c:[10606]}}}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[8869]},65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8613]}}}}}}}}}}}}}}}}},97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8657]}}}}}}}}}}},100:{l:{111:{l:{119:{l:{110:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8661]}}}}}}}}}}}}}}}}}}},112:{l:{101:{l:{114:{l:{76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8598]}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8599]}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{105:{l:{59:{c:[978]},108:{l:{111:{l:{110:{l:{59:{c:[933]}}}}}}}}}}}}},114:{l:{105:{l:{110:{l:{103:{l:{59:{c:[366]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119984]}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[360]}}}}}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[220]}},c:[220]}}}}}}},86:{l:{68:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8875]}}}}}}}}},98:{l:{97:{l:{114:{l:{59:{c:[10987]}}}}}}},99:{l:{121:{l:{59:{c:[1042]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8873]},108:{l:{59:{c:[10982]}}}}}}}}}}},101:{l:{101:{l:{59:{c:[8897]}}},114:{l:{98:{l:{97:{l:{114:{l:{59:{c:[8214]}}}}}}},116:{l:{59:{c:[8214]},105:{l:{99:{l:{97:{l:{108:{l:{66:{l:{97:{l:{114:{l:{59:{c:[8739]}}}}}}},76:{l:{105:{l:{110:{l:{101:{l:{59:{c:[124]}}}}}}}}},83:{l:{101:{l:{112:{l:{97:{l:{114:{l:{97:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10072]}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8768]}}}}}}}}}}}}}}}}}}}}},121:{l:{84:{l:{104:{l:{105:{l:{110:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8202]}}}}}}}}}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120089]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120141]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119985]}}}}}}},118:{l:{100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8874]}}}}}}}}}}}}},87:{l:{99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[372]}}}}}}}}},101:{l:{100:{l:{103:{l:{101:{l:{59:{c:[8896]}}}}}}}}},102:{l:{114:{l:{59:{c:[120090]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120142]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119986]}}}}}}}}},88:{l:{102:{l:{114:{l:{59:{c:[120091]}}}}},105:{l:{59:{c:[926]}}},111:{l:{112:{l:{102:{l:{59:{c:[120143]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119987]}}}}}}}}},89:{l:{65:{l:{99:{l:{121:{l:{59:{c:[1071]}}}}}}},73:{l:{99:{l:{121:{l:{59:{c:[1031]}}}}}}},85:{l:{99:{l:{121:{l:{59:{c:[1070]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[221]}},c:[221]}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[374]}}}}}}},121:{l:{59:{c:[1067]}}}}},102:{l:{114:{l:{59:{c:[120092]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120144]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119988]}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[376]}}}}}}}}},90:{l:{72:{l:{99:{l:{121:{l:{59:{c:[1046]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[377]}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[381]}}}}}}}}},121:{l:{59:{c:[1047]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[379]}}}}}}},101:{l:{114:{l:{111:{l:{87:{l:{105:{l:{100:{l:{116:{l:{104:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8203]}}}}}}}}}}}}}}}}}}}}}}}}},116:{l:{97:{l:{59:{c:[918]}}}}}}},102:{l:{114:{l:{59:{c:[8488]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[8484]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119989]}}}}}}}}},97:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[225]}},c:[225]}}}}}}}}},98:{l:{114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[259]}}}}}}}}}}},99:{l:{59:{c:[8766]},69:{l:{59:{c:[8766,819]}}},100:{l:{59:{c:[8767]}}},105:{l:{114:{l:{99:{l:{59:{c:[226]}},c:[226]}}}}},117:{l:{116:{l:{101:{l:{59:{c:[180]}},c:[180]}}}}},121:{l:{59:{c:[1072]}}}}},101:{l:{108:{l:{105:{l:{103:{l:{59:{c:[230]}},c:[230]}}}}}}},102:{l:{59:{c:[8289]},114:{l:{59:{c:[120094]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[224]}},c:[224]}}}}}}}}},108:{l:{101:{l:{102:{l:{115:{l:{121:{l:{109:{l:{59:{c:[8501]}}}}}}}}},112:{l:{104:{l:{59:{c:[8501]}}}}}}},112:{l:{104:{l:{97:{l:{59:{c:[945]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[257]}}}}},108:{l:{103:{l:{59:{c:[10815]}}}}}}},112:{l:{59:{c:[38]}},c:[38]}}},110:{l:{100:{l:{59:{c:[8743]},97:{l:{110:{l:{100:{l:{59:{c:[10837]}}}}}}},100:{l:{59:{c:[10844]}}},115:{l:{108:{l:{111:{l:{112:{l:{101:{l:{59:{c:[10840]}}}}}}}}}}},118:{l:{59:{c:[10842]}}}}},103:{l:{59:{c:[8736]},101:{l:{59:{c:[10660]}}},108:{l:{101:{l:{59:{c:[8736]}}}}},109:{l:{115:{l:{100:{l:{59:{c:[8737]},97:{l:{97:{l:{59:{c:[10664]}}},98:{l:{59:{c:[10665]}}},99:{l:{59:{c:[10666]}}},100:{l:{59:{c:[10667]}}},101:{l:{59:{c:[10668]}}},102:{l:{59:{c:[10669]}}},103:{l:{59:{c:[10670]}}},104:{l:{59:{c:[10671]}}}}}}}}}}},114:{l:{116:{l:{59:{c:[8735]},118:{l:{98:{l:{59:{c:[8894]},100:{l:{59:{c:[10653]}}}}}}}}}}},115:{l:{112:{l:{104:{l:{59:{c:[8738]}}}}},116:{l:{59:{c:[197]}}}}},122:{l:{97:{l:{114:{l:{114:{l:{59:{c:[9084]}}}}}}}}}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[261]}}}}}}},112:{l:{102:{l:{59:{c:[120146]}}}}}}},112:{l:{59:{c:[8776]},69:{l:{59:{c:[10864]}}},97:{l:{99:{l:{105:{l:{114:{l:{59:{c:[10863]}}}}}}}}},101:{l:{59:{c:[8778]}}},105:{l:{100:{l:{59:{c:[8779]}}}}},111:{l:{115:{l:{59:{c:[39]}}}}},112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[8776]},101:{l:{113:{l:{59:{c:[8778]}}}}}}}}}}}}}}},114:{l:{105:{l:{110:{l:{103:{l:{59:{c:[229]}},c:[229]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119990]}}}}},116:{l:{59:{c:[42]}}},121:{l:{109:{l:{112:{l:{59:{c:[8776]},101:{l:{113:{l:{59:{c:[8781]}}}}}}}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[227]}},c:[227]}}}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[228]}},c:[228]}}}}},119:{l:{99:{l:{111:{l:{110:{l:{105:{l:{110:{l:{116:{l:{59:{c:[8755]}}}}}}}}}}}}},105:{l:{110:{l:{116:{l:{59:{c:[10769]}}}}}}}}}}},98:{l:{78:{l:{111:{l:{116:{l:{59:{c:[10989]}}}}}}},97:{l:{99:{l:{107:{l:{99:{l:{111:{l:{110:{l:{103:{l:{59:{c:[8780]}}}}}}}}},101:{l:{112:{l:{115:{l:{105:{l:{108:{l:{111:{l:{110:{l:{59:{c:[1014]}}}}}}}}}}}}}}},112:{l:{114:{l:{105:{l:{109:{l:{101:{l:{59:{c:[8245]}}}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8765]},101:{l:{113:{l:{59:{c:[8909]}}}}}}}}}}}}}}},114:{l:{118:{l:{101:{l:{101:{l:{59:{c:[8893]}}}}}}},119:{l:{101:{l:{100:{l:{59:{c:[8965]},103:{l:{101:{l:{59:{c:[8965]}}}}}}}}}}}}}}},98:{l:{114:{l:{107:{l:{59:{c:[9141]},116:{l:{98:{l:{114:{l:{107:{l:{59:{c:[9142]}}}}}}}}}}}}}}},99:{l:{111:{l:{110:{l:{103:{l:{59:{c:[8780]}}}}}}},121:{l:{59:{c:[1073]}}}}},100:{l:{113:{l:{117:{l:{111:{l:{59:{c:[8222]}}}}}}}}},101:{l:{99:{l:{97:{l:{117:{l:{115:{l:{59:{c:[8757]},101:{l:{59:{c:[8757]}}}}}}}}}}},109:{l:{112:{l:{116:{l:{121:{l:{118:{l:{59:{c:[10672]}}}}}}}}}}},112:{l:{115:{l:{105:{l:{59:{c:[1014]}}}}}}},114:{l:{110:{l:{111:{l:{117:{l:{59:{c:[8492]}}}}}}}}},116:{l:{97:{l:{59:{c:[946]}}},104:{l:{59:{c:[8502]}}},119:{l:{101:{l:{101:{l:{110:{l:{59:{c:[8812]}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120095]}}}}},105:{l:{103:{l:{99:{l:{97:{l:{112:{l:{59:{c:[8898]}}}}},105:{l:{114:{l:{99:{l:{59:{c:[9711]}}}}}}},117:{l:{112:{l:{59:{c:[8899]}}}}}}},111:{l:{100:{l:{111:{l:{116:{l:{59:{c:[10752]}}}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10753]}}}}}}}}},116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[10754]}}}}}}}}}}}}},115:{l:{113:{l:{99:{l:{117:{l:{112:{l:{59:{c:[10758]}}}}}}}}},116:{l:{97:{l:{114:{l:{59:{c:[9733]}}}}}}}}},116:{l:{114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[9661]}}}}}}}}},117:{l:{112:{l:{59:{c:[9651]}}}}}}}}}}}}}}}}}}}}},117:{l:{112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10756]}}}}}}}}}}},118:{l:{101:{l:{101:{l:{59:{c:[8897]}}}}}}},119:{l:{101:{l:{100:{l:{103:{l:{101:{l:{59:{c:[8896]}}}}}}}}}}}}}}},107:{l:{97:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10509]}}}}}}}}}}},108:{l:{97:{l:{99:{l:{107:{l:{108:{l:{111:{l:{122:{l:{101:{l:{110:{l:{103:{l:{101:{l:{59:{c:[10731]}}}}}}}}}}}}}}},115:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9642]}}}}}}}}}}}}},116:{l:{114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[9652]},100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[9662]}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[9666]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[9656]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},110:{l:{107:{l:{59:{c:[9251]}}}}}}},107:{l:{49:{l:{50:{l:{59:{c:[9618]}}},52:{l:{59:{c:[9617]}}}}},51:{l:{52:{l:{59:{c:[9619]}}}}}}},111:{l:{99:{l:{107:{l:{59:{c:[9608]}}}}}}}}},110:{l:{101:{l:{59:{c:[61,8421]},113:{l:{117:{l:{105:{l:{118:{l:{59:{c:[8801,8421]}}}}}}}}}}},111:{l:{116:{l:{59:{c:[8976]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120147]}}}}},116:{l:{59:{c:[8869]},116:{l:{111:{l:{109:{l:{59:{c:[8869]}}}}}}}}},119:{l:{116:{l:{105:{l:{101:{l:{59:{c:[8904]}}}}}}}}},120:{l:{68:{l:{76:{l:{59:{c:[9559]}}},82:{l:{59:{c:[9556]}}},108:{l:{59:{c:[9558]}}},114:{l:{59:{c:[9555]}}}}},72:{l:{59:{c:[9552]},68:{l:{59:{c:[9574]}}},85:{l:{59:{c:[9577]}}},100:{l:{59:{c:[9572]}}},117:{l:{59:{c:[9575]}}}}},85:{l:{76:{l:{59:{c:[9565]}}},82:{l:{59:{c:[9562]}}},108:{l:{59:{c:[9564]}}},114:{l:{59:{c:[9561]}}}}},86:{l:{59:{c:[9553]},72:{l:{59:{c:[9580]}}},76:{l:{59:{c:[9571]}}},82:{l:{59:{c:[9568]}}},104:{l:{59:{c:[9579]}}},108:{l:{59:{c:[9570]}}},114:{l:{59:{c:[9567]}}}}},98:{l:{111:{l:{120:{l:{59:{c:[10697]}}}}}}},100:{l:{76:{l:{59:{c:[9557]}}},82:{l:{59:{c:[9554]}}},108:{l:{59:{c:[9488]}}},114:{l:{59:{c:[9484]}}}}},104:{l:{59:{c:[9472]},68:{l:{59:{c:[9573]}}},85:{l:{59:{c:[9576]}}},100:{l:{59:{c:[9516]}}},117:{l:{59:{c:[9524]}}}}},109:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[8863]}}}}}}}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8862]}}}}}}}}},116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8864]}}}}}}}}}}},117:{l:{76:{l:{59:{c:[9563]}}},82:{l:{59:{c:[9560]}}},108:{l:{59:{c:[9496]}}},114:{l:{59:{c:[9492]}}}}},118:{l:{59:{c:[9474]},72:{l:{59:{c:[9578]}}},76:{l:{59:{c:[9569]}}},82:{l:{59:{c:[9566]}}},104:{l:{59:{c:[9532]}}},108:{l:{59:{c:[9508]}}},114:{l:{59:{c:[9500]}}}}}}}}},112:{l:{114:{l:{105:{l:{109:{l:{101:{l:{59:{c:[8245]}}}}}}}}}}},114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[728]}}}}}}},118:{l:{98:{l:{97:{l:{114:{l:{59:{c:[166]}},c:[166]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119991]}}}}},101:{l:{109:{l:{105:{l:{59:{c:[8271]}}}}}}},105:{l:{109:{l:{59:{c:[8765]},101:{l:{59:{c:[8909]}}}}}}},111:{l:{108:{l:{59:{c:[92]},98:{l:{59:{c:[10693]}}},104:{l:{115:{l:{117:{l:{98:{l:{59:{c:[10184]}}}}}}}}}}}}}}},117:{l:{108:{l:{108:{l:{59:{c:[8226]},101:{l:{116:{l:{59:{c:[8226]}}}}}}}}},109:{l:{112:{l:{59:{c:[8782]},69:{l:{59:{c:[10926]}}},101:{l:{59:{c:[8783]},113:{l:{59:{c:[8783]}}}}}}}}}}}}},99:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[263]}}}}}}}}},112:{l:{59:{c:[8745]},97:{l:{110:{l:{100:{l:{59:{c:[10820]}}}}}}},98:{l:{114:{l:{99:{l:{117:{l:{112:{l:{59:{c:[10825]}}}}}}}}}}},99:{l:{97:{l:{112:{l:{59:{c:[10827]}}}}},117:{l:{112:{l:{59:{c:[10823]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[10816]}}}}}}},115:{l:{59:{c:[8745,65024]}}}}},114:{l:{101:{l:{116:{l:{59:{c:[8257]}}}}},111:{l:{110:{l:{59:{c:[711]}}}}}}}}},99:{l:{97:{l:{112:{l:{115:{l:{59:{c:[10829]}}}}},114:{l:{111:{l:{110:{l:{59:{c:[269]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[231]}},c:[231]}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[265]}}}}}}},117:{l:{112:{l:{115:{l:{59:{c:[10828]},115:{l:{109:{l:{59:{c:[10832]}}}}}}}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[267]}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[184]}},c:[184]}}}}},109:{l:{112:{l:{116:{l:{121:{l:{118:{l:{59:{c:[10674]}}}}}}}}}}},110:{l:{116:{l:{59:{c:[162]},101:{l:{114:{l:{100:{l:{111:{l:{116:{l:{59:{c:[183]}}}}}}}}}}}},c:[162]}}}}},102:{l:{114:{l:{59:{c:[120096]}}}}},104:{l:{99:{l:{121:{l:{59:{c:[1095]}}}}},101:{l:{99:{l:{107:{l:{59:{c:[10003]},109:{l:{97:{l:{114:{l:{107:{l:{59:{c:[10003]}}}}}}}}}}}}}}},105:{l:{59:{c:[967]}}}}},105:{l:{114:{l:{59:{c:[9675]},69:{l:{59:{c:[10691]}}},99:{l:{59:{c:[710]},101:{l:{113:{l:{59:{c:[8791]}}}}},108:{l:{101:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8634]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8635]}}}}}}}}}}}}}}}}}}}}},100:{l:{82:{l:{59:{c:[174]}}},83:{l:{59:{c:[9416]}}},97:{l:{115:{l:{116:{l:{59:{c:[8859]}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[8858]}}}}}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8861]}}}}}}}}}}}}}}}}},101:{l:{59:{c:[8791]}}},102:{l:{110:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10768]}}}}}}}}}}},109:{l:{105:{l:{100:{l:{59:{c:[10991]}}}}}}},115:{l:{99:{l:{105:{l:{114:{l:{59:{c:[10690]}}}}}}}}}}}}},108:{l:{117:{l:{98:{l:{115:{l:{59:{c:[9827]},117:{l:{105:{l:{116:{l:{59:{c:[9827]}}}}}}}}}}}}}}},111:{l:{108:{l:{111:{l:{110:{l:{59:{c:[58]},101:{l:{59:{c:[8788]},113:{l:{59:{c:[8788]}}}}}}}}}}},109:{l:{109:{l:{97:{l:{59:{c:[44]},116:{l:{59:{c:[64]}}}}}}},112:{l:{59:{c:[8705]},102:{l:{110:{l:{59:{c:[8728]}}}}},108:{l:{101:{l:{109:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8705]}}}}}}}}},120:{l:{101:{l:{115:{l:{59:{c:[8450]}}}}}}}}}}}}}}},110:{l:{103:{l:{59:{c:[8773]},100:{l:{111:{l:{116:{l:{59:{c:[10861]}}}}}}}}},105:{l:{110:{l:{116:{l:{59:{c:[8750]}}}}}}}}},112:{l:{102:{l:{59:{c:[120148]}}},114:{l:{111:{l:{100:{l:{59:{c:[8720]}}}}}}},121:{l:{59:{c:[169]},115:{l:{114:{l:{59:{c:[8471]}}}}}},c:[169]}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8629]}}}}}}},111:{l:{115:{l:{115:{l:{59:{c:[10007]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119992]}}}}},117:{l:{98:{l:{59:{c:[10959]},101:{l:{59:{c:[10961]}}}}},112:{l:{59:{c:[10960]},101:{l:{59:{c:[10962]}}}}}}}}},116:{l:{100:{l:{111:{l:{116:{l:{59:{c:[8943]}}}}}}}}},117:{l:{100:{l:{97:{l:{114:{l:{114:{l:{108:{l:{59:{c:[10552]}}},114:{l:{59:{c:[10549]}}}}}}}}}}},101:{l:{112:{l:{114:{l:{59:{c:[8926]}}}}},115:{l:{99:{l:{59:{c:[8927]}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8630]},112:{l:{59:{c:[10557]}}}}}}}}}}},112:{l:{59:{c:[8746]},98:{l:{114:{l:{99:{l:{97:{l:{112:{l:{59:{c:[10824]}}}}}}}}}}},99:{l:{97:{l:{112:{l:{59:{c:[10822]}}}}},117:{l:{112:{l:{59:{c:[10826]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8845]}}}}}}},111:{l:{114:{l:{59:{c:[10821]}}}}},115:{l:{59:{c:[8746,65024]}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8631]},109:{l:{59:{c:[10556]}}}}}}}}},108:{l:{121:{l:{101:{l:{113:{l:{112:{l:{114:{l:{101:{l:{99:{l:{59:{c:[8926]}}}}}}}}},115:{l:{117:{l:{99:{l:{99:{l:{59:{c:[8927]}}}}}}}}}}}}},118:{l:{101:{l:{101:{l:{59:{c:[8910]}}}}}}},119:{l:{101:{l:{100:{l:{103:{l:{101:{l:{59:{c:[8911]}}}}}}}}}}}}}}},114:{l:{101:{l:{110:{l:{59:{c:[164]}},c:[164]}}}}},118:{l:{101:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8630]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8631]}}}}}}}}}}}}}}}}}}}}}}}}}}},118:{l:{101:{l:{101:{l:{59:{c:[8910]}}}}}}},119:{l:{101:{l:{100:{l:{59:{c:[8911]}}}}}}}}},119:{l:{99:{l:{111:{l:{110:{l:{105:{l:{110:{l:{116:{l:{59:{c:[8754]}}}}}}}}}}}}},105:{l:{110:{l:{116:{l:{59:{c:[8753]}}}}}}}}},121:{l:{108:{l:{99:{l:{116:{l:{121:{l:{59:{c:[9005]}}}}}}}}}}}}},100:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8659]}}}}}}},72:{l:{97:{l:{114:{l:{59:{c:[10597]}}}}}}},97:{l:{103:{l:{103:{l:{101:{l:{114:{l:{59:{c:[8224]}}}}}}}}},108:{l:{101:{l:{116:{l:{104:{l:{59:{c:[8504]}}}}}}}}},114:{l:{114:{l:{59:{c:[8595]}}}}},115:{l:{104:{l:{59:{c:[8208]},118:{l:{59:{c:[8867]}}}}}}}}},98:{l:{107:{l:{97:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10511]}}}}}}}}}}},108:{l:{97:{l:{99:{l:{59:{c:[733]}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[271]}}}}}}}}},121:{l:{59:{c:[1076]}}}}},100:{l:{59:{c:[8518]},97:{l:{103:{l:{103:{l:{101:{l:{114:{l:{59:{c:[8225]}}}}}}}}},114:{l:{114:{l:{59:{c:[8650]}}}}}}},111:{l:{116:{l:{115:{l:{101:{l:{113:{l:{59:{c:[10871]}}}}}}}}}}}}},101:{l:{103:{l:{59:{c:[176]}},c:[176]},108:{l:{116:{l:{97:{l:{59:{c:[948]}}}}}}},109:{l:{112:{l:{116:{l:{121:{l:{118:{l:{59:{c:[10673]}}}}}}}}}}}}},102:{l:{105:{l:{115:{l:{104:{l:{116:{l:{59:{c:[10623]}}}}}}}}},114:{l:{59:{c:[120097]}}}}},104:{l:{97:{l:{114:{l:{108:{l:{59:{c:[8643]}}},114:{l:{59:{c:[8642]}}}}}}}}},105:{l:{97:{l:{109:{l:{59:{c:[8900]},111:{l:{110:{l:{100:{l:{59:{c:[8900]},115:{l:{117:{l:{105:{l:{116:{l:{59:{c:[9830]}}}}}}}}}}}}}}},115:{l:{59:{c:[9830]}}}}}}},101:{l:{59:{c:[168]}}},103:{l:{97:{l:{109:{l:{109:{l:{97:{l:{59:{c:[989]}}}}}}}}}}},115:{l:{105:{l:{110:{l:{59:{c:[8946]}}}}}}},118:{l:{59:{c:[247]},105:{l:{100:{l:{101:{l:{59:{c:[247]},111:{l:{110:{l:{116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8903]}}}}}}}}}}}}}}}},c:[247]}}}}},111:{l:{110:{l:{120:{l:{59:{c:[8903]}}}}}}}}}}},106:{l:{99:{l:{121:{l:{59:{c:[1106]}}}}}}},108:{l:{99:{l:{111:{l:{114:{l:{110:{l:{59:{c:[8990]}}}}}}},114:{l:{111:{l:{112:{l:{59:{c:[8973]}}}}}}}}}}},111:{l:{108:{l:{108:{l:{97:{l:{114:{l:{59:{c:[36]}}}}}}}}},112:{l:{102:{l:{59:{c:[120149]}}}}},116:{l:{59:{c:[729]},101:{l:{113:{l:{59:{c:[8784]},100:{l:{111:{l:{116:{l:{59:{c:[8785]}}}}}}}}}}},109:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[8760]}}}}}}}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8724]}}}}}}}}},115:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[8865]}}}}}}}}}}}}}}},117:{l:{98:{l:{108:{l:{101:{l:{98:{l:{97:{l:{114:{l:{119:{l:{101:{l:{100:{l:{103:{l:{101:{l:{59:{c:[8966]}}}}}}}}}}}}}}}}}}}}}}}}},119:{l:{110:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8595]}}}}}}}}}}},100:{l:{111:{l:{119:{l:{110:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{115:{l:{59:{c:[8650]}}}}}}}}}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8643]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8642]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{98:{l:{107:{l:{97:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10512]}}}}}}}}}}}}},99:{l:{111:{l:{114:{l:{110:{l:{59:{c:[8991]}}}}}}},114:{l:{111:{l:{112:{l:{59:{c:[8972]}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119993]}}},121:{l:{59:{c:[1109]}}}}},111:{l:{108:{l:{59:{c:[10742]}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[273]}}}}}}}}}}},116:{l:{100:{l:{111:{l:{116:{l:{59:{c:[8945]}}}}}}},114:{l:{105:{l:{59:{c:[9663]},102:{l:{59:{c:[9662]}}}}}}}}},117:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8693]}}}}}}},104:{l:{97:{l:{114:{l:{59:{c:[10607]}}}}}}}}},119:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[10662]}}}}}}}}}}}}},122:{l:{99:{l:{121:{l:{59:{c:[1119]}}}}},105:{l:{103:{l:{114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10239]}}}}}}}}}}}}}}}}},101:{l:{68:{l:{68:{l:{111:{l:{116:{l:{59:{c:[10871]}}}}}}},111:{l:{116:{l:{59:{c:[8785]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[233]}},c:[233]}}}}}}},115:{l:{116:{l:{101:{l:{114:{l:{59:{c:[10862]}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[283]}}}}}}}}},105:{l:{114:{l:{59:{c:[8790]},99:{l:{59:{c:[234]}},c:[234]}}}}},111:{l:{108:{l:{111:{l:{110:{l:{59:{c:[8789]}}}}}}}}},121:{l:{59:{c:[1101]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[279]}}}}}}},101:{l:{59:{c:[8519]}}},102:{l:{68:{l:{111:{l:{116:{l:{59:{c:[8786]}}}}}}},114:{l:{59:{c:[120098]}}}}},103:{l:{59:{c:[10906]},114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[232]}},c:[232]}}}}}}},115:{l:{59:{c:[10902]},100:{l:{111:{l:{116:{l:{59:{c:[10904]}}}}}}}}}}},108:{l:{59:{c:[10905]},105:{l:{110:{l:{116:{l:{101:{l:{114:{l:{115:{l:{59:{c:[9191]}}}}}}}}}}}}},108:{l:{59:{c:[8467]}}},115:{l:{59:{c:[10901]},100:{l:{111:{l:{116:{l:{59:{c:[10903]}}}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[275]}}}}}}},112:{l:{116:{l:{121:{l:{59:{c:[8709]},115:{l:{101:{l:{116:{l:{59:{c:[8709]}}}}}}},118:{l:{59:{c:[8709]}}}}}}}}},115:{l:{112:{l:{49:{l:{51:{l:{59:{c:[8196]}}},52:{l:{59:{c:[8197]}}}}},59:{c:[8195]}}}}}}},110:{l:{103:{l:{59:{c:[331]}}},115:{l:{112:{l:{59:{c:[8194]}}}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[281]}}}}}}},112:{l:{102:{l:{59:{c:[120150]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[8917]},115:{l:{108:{l:{59:{c:[10723]}}}}}}}}},108:{l:{117:{l:{115:{l:{59:{c:[10865]}}}}}}},115:{l:{105:{l:{59:{c:[949]},108:{l:{111:{l:{110:{l:{59:{c:[949]}}}}}}},118:{l:{59:{c:[1013]}}}}}}}}},113:{l:{99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[8790]}}}}}}},111:{l:{108:{l:{111:{l:{110:{l:{59:{c:[8789]}}}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8770]}}}}},108:{l:{97:{l:{110:{l:{116:{l:{103:{l:{116:{l:{114:{l:{59:{c:[10902]}}}}}}},108:{l:{101:{l:{115:{l:{115:{l:{59:{c:[10901]}}}}}}}}}}}}}}}}}}},117:{l:{97:{l:{108:{l:{115:{l:{59:{c:[61]}}}}}}},101:{l:{115:{l:{116:{l:{59:{c:[8799]}}}}}}},105:{l:{118:{l:{59:{c:[8801]},68:{l:{68:{l:{59:{c:[10872]}}}}}}}}}}},118:{l:{112:{l:{97:{l:{114:{l:{115:{l:{108:{l:{59:{c:[10725]}}}}}}}}}}}}}}},114:{l:{68:{l:{111:{l:{116:{l:{59:{c:[8787]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[10609]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8495]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8784]}}}}}}},105:{l:{109:{l:{59:{c:[8770]}}}}}}},116:{l:{97:{l:{59:{c:[951]}}},104:{l:{59:{c:[240]}},c:[240]}}},117:{l:{109:{l:{108:{l:{59:{c:[235]}},c:[235]}}},114:{l:{111:{l:{59:{c:[8364]}}}}}}},120:{l:{99:{l:{108:{l:{59:{c:[33]}}}}},105:{l:{115:{l:{116:{l:{59:{c:[8707]}}}}}}},112:{l:{101:{l:{99:{l:{116:{l:{97:{l:{116:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8496]}}}}}}}}}}}}}}}}},111:{l:{110:{l:{101:{l:{110:{l:{116:{l:{105:{l:{97:{l:{108:{l:{101:{l:{59:{c:[8519]}}}}}}}}}}}}}}}}}}}}}}}}},102:{l:{97:{l:{108:{l:{108:{l:{105:{l:{110:{l:{103:{l:{100:{l:{111:{l:{116:{l:{115:{l:{101:{l:{113:{l:{59:{c:[8786]}}}}}}}}}}}}}}}}}}}}}}}}},99:{l:{121:{l:{59:{c:[1092]}}}}},101:{l:{109:{l:{97:{l:{108:{l:{101:{l:{59:{c:[9792]}}}}}}}}}}},102:{l:{105:{l:{108:{l:{105:{l:{103:{l:{59:{c:[64259]}}}}}}}}},108:{l:{105:{l:{103:{l:{59:{c:[64256]}}}}},108:{l:{105:{l:{103:{l:{59:{c:[64260]}}}}}}}}},114:{l:{59:{c:[120099]}}}}},105:{l:{108:{l:{105:{l:{103:{l:{59:{c:[64257]}}}}}}}}},106:{l:{108:{l:{105:{l:{103:{l:{59:{c:[102,106]}}}}}}}}},108:{l:{97:{l:{116:{l:{59:{c:[9837]}}}}},108:{l:{105:{l:{103:{l:{59:{c:[64258]}}}}}}},116:{l:{110:{l:{115:{l:{59:{c:[9649]}}}}}}}}},110:{l:{111:{l:{102:{l:{59:{c:[402]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120151]}}}}},114:{l:{97:{l:{108:{l:{108:{l:{59:{c:[8704]}}}}}}},107:{l:{59:{c:[8916]},118:{l:{59:{c:[10969]}}}}}}}}},112:{l:{97:{l:{114:{l:{116:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10765]}}}}}}}}}}}}}}},114:{l:{97:{l:{99:{l:{49:{l:{50:{l:{59:{c:[189]}},c:[189]},51:{l:{59:{c:[8531]}}},52:{l:{59:{c:[188]}},c:[188]},53:{l:{59:{c:[8533]}}},54:{l:{59:{c:[8537]}}},56:{l:{59:{c:[8539]}}}}},50:{l:{51:{l:{59:{c:[8532]}}},53:{l:{59:{c:[8534]}}}}},51:{l:{52:{l:{59:{c:[190]}},c:[190]},53:{l:{59:{c:[8535]}}},56:{l:{59:{c:[8540]}}}}},52:{l:{53:{l:{59:{c:[8536]}}}}},53:{l:{54:{l:{59:{c:[8538]}}},56:{l:{59:{c:[8541]}}}}},55:{l:{56:{l:{59:{c:[8542]}}}}}}},115:{l:{108:{l:{59:{c:[8260]}}}}}}},111:{l:{119:{l:{110:{l:{59:{c:[8994]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119995]}}}}}}}}},103:{l:{69:{l:{59:{c:[8807]},108:{l:{59:{c:[10892]}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[501]}}}}}}}}},109:{l:{109:{l:{97:{l:{59:{c:[947]},100:{l:{59:{c:[989]}}}}}}}}},112:{l:{59:{c:[10886]}}}}},98:{l:{114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[287]}}}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[285]}}}}}}},121:{l:{59:{c:[1075]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[289]}}}}}}},101:{l:{59:{c:[8805]},108:{l:{59:{c:[8923]}}},113:{l:{59:{c:[8805]},113:{l:{59:{c:[8807]}}},115:{l:{108:{l:{97:{l:{110:{l:{116:{l:{59:{c:[10878]}}}}}}}}}}}}},115:{l:{59:{c:[10878]},99:{l:{99:{l:{59:{c:[10921]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[10880]},111:{l:{59:{c:[10882]},108:{l:{59:{c:[10884]}}}}}}}}}}},108:{l:{59:{c:[8923,65024]},101:{l:{115:{l:{59:{c:[10900]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120100]}}}}},103:{l:{59:{c:[8811]},103:{l:{59:{c:[8921]}}}}},105:{l:{109:{l:{101:{l:{108:{l:{59:{c:[8503]}}}}}}}}},106:{l:{99:{l:{121:{l:{59:{c:[1107]}}}}}}},108:{l:{59:{c:[8823]},69:{l:{59:{c:[10898]}}},97:{l:{59:{c:[10917]}}},106:{l:{59:{c:[10916]}}}}},110:{l:{69:{l:{59:{c:[8809]}}},97:{l:{112:{l:{59:{c:[10890]},112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10890]}}}}}}}}}}}}},101:{l:{59:{c:[10888]},113:{l:{59:{c:[10888]},113:{l:{59:{c:[8809]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8935]}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120152]}}}}}}},114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[96]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8458]}}}}},105:{l:{109:{l:{59:{c:[8819]},101:{l:{59:{c:[10894]}}},108:{l:{59:{c:[10896]}}}}}}}}},116:{l:{59:{c:[62]},99:{l:{99:{l:{59:{c:[10919]}}},105:{l:{114:{l:{59:{c:[10874]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8919]}}}}}}},108:{l:{80:{l:{97:{l:{114:{l:{59:{c:[10645]}}}}}}}}},113:{l:{117:{l:{101:{l:{115:{l:{116:{l:{59:{c:[10876]}}}}}}}}}}},114:{l:{97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10886]}}}}}}}}}}},114:{l:{114:{l:{59:{c:[10616]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8919]}}}}}}},101:{l:{113:{l:{108:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8923]}}}}}}}}},113:{l:{108:{l:{101:{l:{115:{l:{115:{l:{59:{c:[10892]}}}}}}}}}}}}}}},108:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8823]}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8819]}}}}}}}}}},c:[62]},118:{l:{101:{l:{114:{l:{116:{l:{110:{l:{101:{l:{113:{l:{113:{l:{59:{c:[8809,65024]}}}}}}}}}}}}}}},110:{l:{69:{l:{59:{c:[8809,65024]}}}}}}}}},104:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8660]}}}}}}},97:{l:{105:{l:{114:{l:{115:{l:{112:{l:{59:{c:[8202]}}}}}}}}},108:{l:{102:{l:{59:{c:[189]}}}}},109:{l:{105:{l:{108:{l:{116:{l:{59:{c:[8459]}}}}}}}}},114:{l:{100:{l:{99:{l:{121:{l:{59:{c:[1098]}}}}}}},114:{l:{59:{c:[8596]},99:{l:{105:{l:{114:{l:{59:{c:[10568]}}}}}}},119:{l:{59:{c:[8621]}}}}}}}}},98:{l:{97:{l:{114:{l:{59:{c:[8463]}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[293]}}}}}}}}},101:{l:{97:{l:{114:{l:{116:{l:{115:{l:{59:{c:[9829]},117:{l:{105:{l:{116:{l:{59:{c:[9829]}}}}}}}}}}}}}}},108:{l:{108:{l:{105:{l:{112:{l:{59:{c:[8230]}}}}}}}}},114:{l:{99:{l:{111:{l:{110:{l:{59:{c:[8889]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120101]}}}}},107:{l:{115:{l:{101:{l:{97:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10533]}}}}}}}}}}},119:{l:{97:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10534]}}}}}}}}}}}}}}},111:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8703]}}}}}}},109:{l:{116:{l:{104:{l:{116:{l:{59:{c:[8763]}}}}}}}}},111:{l:{107:{l:{108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8617]}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8618]}}}}}}}}}}}}}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[120153]}}}}},114:{l:{98:{l:{97:{l:{114:{l:{59:{c:[8213]}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119997]}}}}},108:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8463]}}}}}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[295]}}}}}}}}}}},121:{l:{98:{l:{117:{l:{108:{l:{108:{l:{59:{c:[8259]}}}}}}}}},112:{l:{104:{l:{101:{l:{110:{l:{59:{c:[8208]}}}}}}}}}}}}},105:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[237]}},c:[237]}}}}}}}}},99:{l:{59:{c:[8291]},105:{l:{114:{l:{99:{l:{59:{c:[238]}},c:[238]}}}}},121:{l:{59:{c:[1080]}}}}},101:{l:{99:{l:{121:{l:{59:{c:[1077]}}}}},120:{l:{99:{l:{108:{l:{59:{c:[161]}},c:[161]}}}}}}},102:{l:{102:{l:{59:{c:[8660]}}},114:{l:{59:{c:[120102]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[236]}},c:[236]}}}}}}}}},105:{l:{59:{c:[8520]},105:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10764]}}}}}}},110:{l:{116:{l:{59:{c:[8749]}}}}}}},110:{l:{102:{l:{105:{l:{110:{l:{59:{c:[10716]}}}}}}}}},111:{l:{116:{l:{97:{l:{59:{c:[8489]}}}}}}}}},106:{l:{108:{l:{105:{l:{103:{l:{59:{c:[307]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[299]}}}}},103:{l:{101:{l:{59:{c:[8465]}}},108:{l:{105:{l:{110:{l:{101:{l:{59:{c:[8464]}}}}}}}}},112:{l:{97:{l:{114:{l:{116:{l:{59:{c:[8465]}}}}}}}}}}},116:{l:{104:{l:{59:{c:[305]}}}}}}},111:{l:{102:{l:{59:{c:[8887]}}}}},112:{l:{101:{l:{100:{l:{59:{c:[437]}}}}}}}}},110:{l:{59:{c:[8712]},99:{l:{97:{l:{114:{l:{101:{l:{59:{c:[8453]}}}}}}}}},102:{l:{105:{l:{110:{l:{59:{c:[8734]},116:{l:{105:{l:{101:{l:{59:{c:[10717]}}}}}}}}}}}}},111:{l:{100:{l:{111:{l:{116:{l:{59:{c:[305]}}}}}}}}},116:{l:{59:{c:[8747]},99:{l:{97:{l:{108:{l:{59:{c:[8890]}}}}}}},101:{l:{103:{l:{101:{l:{114:{l:{115:{l:{59:{c:[8484]}}}}}}}}},114:{l:{99:{l:{97:{l:{108:{l:{59:{c:[8890]}}}}}}}}}}},108:{l:{97:{l:{114:{l:{104:{l:{107:{l:{59:{c:[10775]}}}}}}}}}}},112:{l:{114:{l:{111:{l:{100:{l:{59:{c:[10812]}}}}}}}}}}}}},111:{l:{99:{l:{121:{l:{59:{c:[1105]}}}}},103:{l:{111:{l:{110:{l:{59:{c:[303]}}}}}}},112:{l:{102:{l:{59:{c:[120154]}}}}},116:{l:{97:{l:{59:{c:[953]}}}}}}},112:{l:{114:{l:{111:{l:{100:{l:{59:{c:[10812]}}}}}}}}},113:{l:{117:{l:{101:{l:{115:{l:{116:{l:{59:{c:[191]}},c:[191]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119998]}}}}},105:{l:{110:{l:{59:{c:[8712]},69:{l:{59:{c:[8953]}}},100:{l:{111:{l:{116:{l:{59:{c:[8949]}}}}}}},115:{l:{59:{c:[8948]},118:{l:{59:{c:[8947]}}}}},118:{l:{59:{c:[8712]}}}}}}}}},116:{l:{59:{c:[8290]},105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[297]}}}}}}}}}}},117:{l:{107:{l:{99:{l:{121:{l:{59:{c:[1110]}}}}}}},109:{l:{108:{l:{59:{c:[239]}},c:[239]}}}}}}},106:{l:{99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[309]}}}}}}},121:{l:{59:{c:[1081]}}}}},102:{l:{114:{l:{59:{c:[120103]}}}}},109:{l:{97:{l:{116:{l:{104:{l:{59:{c:[567]}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120155]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119999]}}}}},101:{l:{114:{l:{99:{l:{121:{l:{59:{c:[1112]}}}}}}}}}}},117:{l:{107:{l:{99:{l:{121:{l:{59:{c:[1108]}}}}}}}}}}},107:{l:{97:{l:{112:{l:{112:{l:{97:{l:{59:{c:[954]},118:{l:{59:{c:[1008]}}}}}}}}}}},99:{l:{101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[311]}}}}}}}}},121:{l:{59:{c:[1082]}}}}},102:{l:{114:{l:{59:{c:[120104]}}}}},103:{l:{114:{l:{101:{l:{101:{l:{110:{l:{59:{c:[312]}}}}}}}}}}},104:{l:{99:{l:{121:{l:{59:{c:[1093]}}}}}}},106:{l:{99:{l:{121:{l:{59:{c:[1116]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120156]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[12e4]}}}}}}}}},108:{l:{65:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8666]}}}}}}},114:{l:{114:{l:{59:{c:[8656]}}}}},116:{l:{97:{l:{105:{l:{108:{l:{59:{c:[10523]}}}}}}}}}}},66:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10510]}}}}}}}}},69:{l:{59:{c:[8806]},103:{l:{59:{c:[10891]}}}}},72:{l:{97:{l:{114:{l:{59:{c:[10594]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[314]}}}}}}}}},101:{l:{109:{l:{112:{l:{116:{l:{121:{l:{118:{l:{59:{c:[10676]}}}}}}}}}}}}},103:{l:{114:{l:{97:{l:{110:{l:{59:{c:[8466]}}}}}}}}},109:{l:{98:{l:{100:{l:{97:{l:{59:{c:[955]}}}}}}}}},110:{l:{103:{l:{59:{c:[10216]},100:{l:{59:{c:[10641]}}},108:{l:{101:{l:{59:{c:[10216]}}}}}}}}},112:{l:{59:{c:[10885]}}},113:{l:{117:{l:{111:{l:{59:{c:[171]}},c:[171]}}}}},114:{l:{114:{l:{59:{c:[8592]},98:{l:{59:{c:[8676]},102:{l:{115:{l:{59:{c:[10527]}}}}}}},102:{l:{115:{l:{59:{c:[10525]}}}}},104:{l:{107:{l:{59:{c:[8617]}}}}},108:{l:{112:{l:{59:{c:[8619]}}}}},112:{l:{108:{l:{59:{c:[10553]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[10611]}}}}}}},116:{l:{108:{l:{59:{c:[8610]}}}}}}}}},116:{l:{59:{c:[10923]},97:{l:{105:{l:{108:{l:{59:{c:[10521]}}}}}}},101:{l:{59:{c:[10925]},115:{l:{59:{c:[10925,65024]}}}}}}}}},98:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10508]}}}}}}},98:{l:{114:{l:{107:{l:{59:{c:[10098]}}}}}}},114:{l:{97:{l:{99:{l:{101:{l:{59:{c:[123]}}},107:{l:{59:{c:[91]}}}}}}},107:{l:{101:{l:{59:{c:[10635]}}},115:{l:{108:{l:{100:{l:{59:{c:[10639]}}},117:{l:{59:{c:[10637]}}}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[318]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[316]}}}}}}},105:{l:{108:{l:{59:{c:[8968]}}}}}}},117:{l:{98:{l:{59:{c:[123]}}}}},121:{l:{59:{c:[1083]}}}}},100:{l:{99:{l:{97:{l:{59:{c:[10550]}}}}},113:{l:{117:{l:{111:{l:{59:{c:[8220]},114:{l:{59:{c:[8222]}}}}}}}}},114:{l:{100:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10599]}}}}}}}}},117:{l:{115:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10571]}}}}}}}}}}}}},115:{l:{104:{l:{59:{c:[8626]}}}}}}},101:{l:{59:{c:[8804]},102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8592]},116:{l:{97:{l:{105:{l:{108:{l:{59:{c:[8610]}}}}}}}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[8637]}}}}}}}}},117:{l:{112:{l:{59:{c:[8636]}}}}}}}}}}}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{115:{l:{59:{c:[8647]}}}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8596]},115:{l:{59:{c:[8646]}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{115:{l:{59:{c:[8651]}}}}}}}}}}}}}}}}},115:{l:{113:{l:{117:{l:{105:{l:{103:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8621]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},116:{l:{104:{l:{114:{l:{101:{l:{101:{l:{116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8907]}}}}}}}}}}}}}}}}}}}}}}}}},103:{l:{59:{c:[8922]}}},113:{l:{59:{c:[8804]},113:{l:{59:{c:[8806]}}},115:{l:{108:{l:{97:{l:{110:{l:{116:{l:{59:{c:[10877]}}}}}}}}}}}}},115:{l:{59:{c:[10877]},99:{l:{99:{l:{59:{c:[10920]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[10879]},111:{l:{59:{c:[10881]},114:{l:{59:{c:[10883]}}}}}}}}}}},103:{l:{59:{c:[8922,65024]},101:{l:{115:{l:{59:{c:[10899]}}}}}}},115:{l:{97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10885]}}}}}}}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8918]}}}}}}},101:{l:{113:{l:{103:{l:{116:{l:{114:{l:{59:{c:[8922]}}}}}}},113:{l:{103:{l:{116:{l:{114:{l:{59:{c:[10891]}}}}}}}}}}}}},103:{l:{116:{l:{114:{l:{59:{c:[8822]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8818]}}}}}}}}}}}}},102:{l:{105:{l:{115:{l:{104:{l:{116:{l:{59:{c:[10620]}}}}}}}}},108:{l:{111:{l:{111:{l:{114:{l:{59:{c:[8970]}}}}}}}}},114:{l:{59:{c:[120105]}}}}},103:{l:{59:{c:[8822]},69:{l:{59:{c:[10897]}}}}},104:{l:{97:{l:{114:{l:{100:{l:{59:{c:[8637]}}},117:{l:{59:{c:[8636]},108:{l:{59:{c:[10602]}}}}}}}}},98:{l:{108:{l:{107:{l:{59:{c:[9604]}}}}}}}}},106:{l:{99:{l:{121:{l:{59:{c:[1113]}}}}}}},108:{l:{59:{c:[8810]},97:{l:{114:{l:{114:{l:{59:{c:[8647]}}}}}}},99:{l:{111:{l:{114:{l:{110:{l:{101:{l:{114:{l:{59:{c:[8990]}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{100:{l:{59:{c:[10603]}}}}}}}}},116:{l:{114:{l:{105:{l:{59:{c:[9722]}}}}}}}}},109:{l:{105:{l:{100:{l:{111:{l:{116:{l:{59:{c:[320]}}}}}}}}},111:{l:{117:{l:{115:{l:{116:{l:{59:{c:[9136]},97:{l:{99:{l:{104:{l:{101:{l:{59:{c:[9136]}}}}}}}}}}}}}}}}}}},110:{l:{69:{l:{59:{c:[8808]}}},97:{l:{112:{l:{59:{c:[10889]},112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10889]}}}}}}}}}}}}},101:{l:{59:{c:[10887]},113:{l:{59:{c:[10887]},113:{l:{59:{c:[8808]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8934]}}}}}}}}},111:{l:{97:{l:{110:{l:{103:{l:{59:{c:[10220]}}}}},114:{l:{114:{l:{59:{c:[8701]}}}}}}},98:{l:{114:{l:{107:{l:{59:{c:[10214]}}}}}}},110:{l:{103:{l:{108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10229]}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10231]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},109:{l:{97:{l:{112:{l:{115:{l:{116:{l:{111:{l:{59:{c:[10236]}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10230]}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8619]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8620]}}}}}}}}}}}}}}}}}}}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[10629]}}}}},102:{l:{59:{c:[120157]}}},108:{l:{117:{l:{115:{l:{59:{c:[10797]}}}}}}}}},116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[10804]}}}}}}}}}}},119:{l:{97:{l:{115:{l:{116:{l:{59:{c:[8727]}}}}}}},98:{l:{97:{l:{114:{l:{59:{c:[95]}}}}}}}}},122:{l:{59:{c:[9674]},101:{l:{110:{l:{103:{l:{101:{l:{59:{c:[9674]}}}}}}}}},102:{l:{59:{c:[10731]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[40]},108:{l:{116:{l:{59:{c:[10643]}}}}}}}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8646]}}}}}}},99:{l:{111:{l:{114:{l:{110:{l:{101:{l:{114:{l:{59:{c:[8991]}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{59:{c:[8651]},100:{l:{59:{c:[10605]}}}}}}}}},109:{l:{59:{c:[8206]}}},116:{l:{114:{l:{105:{l:{59:{c:[8895]}}}}}}}}},115:{l:{97:{l:{113:{l:{117:{l:{111:{l:{59:{c:[8249]}}}}}}}}},99:{l:{114:{l:{59:{c:[120001]}}}}},104:{l:{59:{c:[8624]}}},105:{l:{109:{l:{59:{c:[8818]},101:{l:{59:{c:[10893]}}},103:{l:{59:{c:[10895]}}}}}}},113:{l:{98:{l:{59:{c:[91]}}},117:{l:{111:{l:{59:{c:[8216]},114:{l:{59:{c:[8218]}}}}}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[322]}}}}}}}}}}},116:{l:{59:{c:[60]},99:{l:{99:{l:{59:{c:[10918]}}},105:{l:{114:{l:{59:{c:[10873]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8918]}}}}}}},104:{l:{114:{l:{101:{l:{101:{l:{59:{c:[8907]}}}}}}}}},105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8905]}}}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10614]}}}}}}}}},113:{l:{117:{l:{101:{l:{115:{l:{116:{l:{59:{c:[10875]}}}}}}}}}}},114:{l:{80:{l:{97:{l:{114:{l:{59:{c:[10646]}}}}}}},105:{l:{59:{c:[9667]},101:{l:{59:{c:[8884]}}},102:{l:{59:{c:[9666]}}}}}}}},c:[60]},117:{l:{114:{l:{100:{l:{115:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10570]}}}}}}}}}}},117:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10598]}}}}}}}}}}}}},118:{l:{101:{l:{114:{l:{116:{l:{110:{l:{101:{l:{113:{l:{113:{l:{59:{c:[8808,65024]}}}}}}}}}}}}}}},110:{l:{69:{l:{59:{c:[8808,65024]}}}}}}}}},109:{l:{68:{l:{68:{l:{111:{l:{116:{l:{59:{c:[8762]}}}}}}}}},97:{l:{99:{l:{114:{l:{59:{c:[175]}},c:[175]}}},108:{l:{101:{l:{59:{c:[9794]}}},116:{l:{59:{c:[10016]},101:{l:{115:{l:{101:{l:{59:{c:[10016]}}}}}}}}}}},112:{l:{59:{c:[8614]},115:{l:{116:{l:{111:{l:{59:{c:[8614]},100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[8615]}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8612]}}}}}}}}},117:{l:{112:{l:{59:{c:[8613]}}}}}}}}}}}}},114:{l:{107:{l:{101:{l:{114:{l:{59:{c:[9646]}}}}}}}}}}},99:{l:{111:{l:{109:{l:{109:{l:{97:{l:{59:{c:[10793]}}}}}}}}},121:{l:{59:{c:[1084]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8212]}}}}}}}}},101:{l:{97:{l:{115:{l:{117:{l:{114:{l:{101:{l:{100:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[8737]}}}}}}}}}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120106]}}}}},104:{l:{111:{l:{59:{c:[8487]}}}}},105:{l:{99:{l:{114:{l:{111:{l:{59:{c:[181]}},c:[181]}}}}},100:{l:{59:{c:[8739]},97:{l:{115:{l:{116:{l:{59:{c:[42]}}}}}}},99:{l:{105:{l:{114:{l:{59:{c:[10992]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[183]}},c:[183]}}}}}}},110:{l:{117:{l:{115:{l:{59:{c:[8722]},98:{l:{59:{c:[8863]}}},100:{l:{59:{c:[8760]},117:{l:{59:{c:[10794]}}}}}}}}}}}}},108:{l:{99:{l:{112:{l:{59:{c:[10971]}}}}},100:{l:{114:{l:{59:{c:[8230]}}}}}}},110:{l:{112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8723]}}}}}}}}}}},111:{l:{100:{l:{101:{l:{108:{l:{115:{l:{59:{c:[8871]}}}}}}}}},112:{l:{102:{l:{59:{c:[120158]}}}}}}},112:{l:{59:{c:[8723]}}},115:{l:{99:{l:{114:{l:{59:{c:[120002]}}}}},116:{l:{112:{l:{111:{l:{115:{l:{59:{c:[8766]}}}}}}}}}}},117:{l:{59:{c:[956]},108:{l:{116:{l:{105:{l:{109:{l:{97:{l:{112:{l:{59:{c:[8888]}}}}}}}}}}}}},109:{l:{97:{l:{112:{l:{59:{c:[8888]}}}}}}}}}}},110:{l:{71:{l:{103:{l:{59:{c:[8921,824]}}},116:{l:{59:{c:[8811,8402]},118:{l:{59:{c:[8811,824]}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8653]}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8654]}}}}}}}}}}}}}}}}}}}}}}}}}}},108:{l:{59:{c:[8920,824]}}},116:{l:{59:{c:[8810,8402]},118:{l:{59:{c:[8810,824]}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8655]}}}}}}}}}}}}}}}}}}}}},86:{l:{68:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8879]}}}}}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8878]}}}}}}}}}}},97:{l:{98:{l:{108:{l:{97:{l:{59:{c:[8711]}}}}}}},99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[324]}}}}}}}}},110:{l:{103:{l:{59:{c:[8736,8402]}}}}},112:{l:{59:{c:[8777]},69:{l:{59:{c:[10864,824]}}},105:{l:{100:{l:{59:{c:[8779,824]}}}}},111:{l:{115:{l:{59:{c:[329]}}}}},112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[8777]}}}}}}}}}}},116:{l:{117:{l:{114:{l:{59:{c:[9838]},97:{l:{108:{l:{59:{c:[9838]},115:{l:{59:{c:[8469]}}}}}}}}}}}}}}},98:{l:{115:{l:{112:{l:{59:{c:[160]}},c:[160]}}},117:{l:{109:{l:{112:{l:{59:{c:[8782,824]},101:{l:{59:{c:[8783,824]}}}}}}}}}}},99:{l:{97:{l:{112:{l:{59:{c:[10819]}}},114:{l:{111:{l:{110:{l:{59:{c:[328]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[326]}}}}}}}}},111:{l:{110:{l:{103:{l:{59:{c:[8775]},100:{l:{111:{l:{116:{l:{59:{c:[10861,824]}}}}}}}}}}}}},117:{l:{112:{l:{59:{c:[10818]}}}}},121:{l:{59:{c:[1085]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8211]}}}}}}}}},101:{l:{59:{c:[8800]},65:{l:{114:{l:{114:{l:{59:{c:[8663]}}}}}}},97:{l:{114:{l:{104:{l:{107:{l:{59:{c:[10532]}}}}},114:{l:{59:{c:[8599]},111:{l:{119:{l:{59:{c:[8599]}}}}}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8784,824]}}}}}}},113:{l:{117:{l:{105:{l:{118:{l:{59:{c:[8802]}}}}}}}}},115:{l:{101:{l:{97:{l:{114:{l:{59:{c:[10536]}}}}}}},105:{l:{109:{l:{59:{c:[8770,824]}}}}}}},120:{l:{105:{l:{115:{l:{116:{l:{59:{c:[8708]},115:{l:{59:{c:[8708]}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120107]}}}}},103:{l:{69:{l:{59:{c:[8807,824]}}},101:{l:{59:{c:[8817]},113:{l:{59:{c:[8817]},113:{l:{59:{c:[8807,824]}}},115:{l:{108:{l:{97:{l:{110:{l:{116:{l:{59:{c:[10878,824]}}}}}}}}}}}}},115:{l:{59:{c:[10878,824]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8821]}}}}}}},116:{l:{59:{c:[8815]},114:{l:{59:{c:[8815]}}}}}}},104:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8654]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[8622]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[10994]}}}}}}}}},105:{l:{59:{c:[8715]},115:{l:{59:{c:[8956]},100:{l:{59:{c:[8954]}}}}},118:{l:{59:{c:[8715]}}}}},106:{l:{99:{l:{121:{l:{59:{c:[1114]}}}}}}},108:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8653]}}}}}}},69:{l:{59:{c:[8806,824]}}},97:{l:{114:{l:{114:{l:{59:{c:[8602]}}}}}}},100:{l:{114:{l:{59:{c:[8229]}}}}},101:{l:{59:{c:[8816]},102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8602]}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8622]}}}}}}}}}}}}}}}}}}}}}}}}},113:{l:{59:{c:[8816]},113:{l:{59:{c:[8806,824]}}},115:{l:{108:{l:{97:{l:{110:{l:{116:{l:{59:{c:[10877,824]}}}}}}}}}}}}},115:{l:{59:{c:[10877,824]},115:{l:{59:{c:[8814]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8820]}}}}}}},116:{l:{59:{c:[8814]},114:{l:{105:{l:{59:{c:[8938]},101:{l:{59:{c:[8940]}}}}}}}}}}},109:{l:{105:{l:{100:{l:{59:{c:[8740]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120159]}}}}},116:{l:{59:{c:[172]},105:{l:{110:{l:{59:{c:[8713]},69:{l:{59:{c:[8953,824]}}},100:{l:{111:{l:{116:{l:{59:{c:[8949,824]}}}}}}},118:{l:{97:{l:{59:{c:[8713]}}},98:{l:{59:{c:[8951]}}},99:{l:{59:{c:[8950]}}}}}}}}},110:{l:{105:{l:{59:{c:[8716]},118:{l:{97:{l:{59:{c:[8716]}}},98:{l:{59:{c:[8958]}}},99:{l:{59:{c:[8957]}}}}}}}}}},c:[172]}}},112:{l:{97:{l:{114:{l:{59:{c:[8742]},97:{l:{108:{l:{108:{l:{101:{l:{108:{l:{59:{c:[8742]}}}}}}}}}}},115:{l:{108:{l:{59:{c:[11005,8421]}}}}},116:{l:{59:{c:[8706,824]}}}}}}},111:{l:{108:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10772]}}}}}}}}}}},114:{l:{59:{c:[8832]},99:{l:{117:{l:{101:{l:{59:{c:[8928]}}}}}}},101:{l:{59:{c:[10927,824]},99:{l:{59:{c:[8832]},101:{l:{113:{l:{59:{c:[10927,824]}}}}}}}}}}}}},114:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8655]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[8603]},99:{l:{59:{c:[10547,824]}}},119:{l:{59:{c:[8605,824]}}}}}}}}},105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8603]}}}}}}}}}}}}}}}}}}},116:{l:{114:{l:{105:{l:{59:{c:[8939]},101:{l:{59:{c:[8941]}}}}}}}}}}},115:{l:{99:{l:{59:{c:[8833]},99:{l:{117:{l:{101:{l:{59:{c:[8929]}}}}}}},101:{l:{59:{c:[10928,824]}}},114:{l:{59:{c:[120003]}}}}},104:{l:{111:{l:{114:{l:{116:{l:{109:{l:{105:{l:{100:{l:{59:{c:[8740]}}}}}}},112:{l:{97:{l:{114:{l:{97:{l:{108:{l:{108:{l:{101:{l:{108:{l:{59:{c:[8742]}}}}}}}}}}}}}}}}}}}}}}}}},105:{l:{109:{l:{59:{c:[8769]},101:{l:{59:{c:[8772]},113:{l:{59:{c:[8772]}}}}}}}}},109:{l:{105:{l:{100:{l:{59:{c:[8740]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[8742]}}}}}}},113:{l:{115:{l:{117:{l:{98:{l:{101:{l:{59:{c:[8930]}}}}},112:{l:{101:{l:{59:{c:[8931]}}}}}}}}}}},117:{l:{98:{l:{59:{c:[8836]},69:{l:{59:{c:[10949,824]}}},101:{l:{59:{c:[8840]}}},115:{l:{101:{l:{116:{l:{59:{c:[8834,8402]},101:{l:{113:{l:{59:{c:[8840]},113:{l:{59:{c:[10949,824]}}}}}}}}}}}}}}},99:{l:{99:{l:{59:{c:[8833]},101:{l:{113:{l:{59:{c:[10928,824]}}}}}}}}},112:{l:{59:{c:[8837]},69:{l:{59:{c:[10950,824]}}},101:{l:{59:{c:[8841]}}},115:{l:{101:{l:{116:{l:{59:{c:[8835,8402]},101:{l:{113:{l:{59:{c:[8841]},113:{l:{59:{c:[10950,824]}}}}}}}}}}}}}}}}}}},116:{l:{103:{l:{108:{l:{59:{c:[8825]}}}}},105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[241]}},c:[241]}}}}}}},108:{l:{103:{l:{59:{c:[8824]}}}}},114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8938]},101:{l:{113:{l:{59:{c:[8940]}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8939]},101:{l:{113:{l:{59:{c:[8941]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},117:{l:{59:{c:[957]},109:{l:{59:{c:[35]},101:{l:{114:{l:{111:{l:{59:{c:[8470]}}}}}}},115:{l:{112:{l:{59:{c:[8199]}}}}}}}}},118:{l:{68:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8877]}}}}}}}}},72:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10500]}}}}}}}}},97:{l:{112:{l:{59:{c:[8781,8402]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8876]}}}}}}}}},103:{l:{101:{l:{59:{c:[8805,8402]}}},116:{l:{59:{c:[62,8402]}}}}},105:{l:{110:{l:{102:{l:{105:{l:{110:{l:{59:{c:[10718]}}}}}}}}}}},108:{l:{65:{l:{114:{l:{114:{l:{59:{c:[10498]}}}}}}},101:{l:{59:{c:[8804,8402]}}},116:{l:{59:{c:[60,8402]},114:{l:{105:{l:{101:{l:{59:{c:[8884,8402]}}}}}}}}}}},114:{l:{65:{l:{114:{l:{114:{l:{59:{c:[10499]}}}}}}},116:{l:{114:{l:{105:{l:{101:{l:{59:{c:[8885,8402]}}}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8764,8402]}}}}}}}}},119:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8662]}}}}}}},97:{l:{114:{l:{104:{l:{107:{l:{59:{c:[10531]}}}}},114:{l:{59:{c:[8598]},111:{l:{119:{l:{59:{c:[8598]}}}}}}}}}}},110:{l:{101:{l:{97:{l:{114:{l:{59:{c:[10535]}}}}}}}}}}}}},111:{l:{83:{l:{59:{c:[9416]}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[243]}},c:[243]}}}}}}},115:{l:{116:{l:{59:{c:[8859]}}}}}}},99:{l:{105:{l:{114:{l:{59:{c:[8858]},99:{l:{59:{c:[244]}},c:[244]}}}}},121:{l:{59:{c:[1086]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8861]}}}}}}},98:{l:{108:{l:{97:{l:{99:{l:{59:{c:[337]}}}}}}}}},105:{l:{118:{l:{59:{c:[10808]}}}}},111:{l:{116:{l:{59:{c:[8857]}}}}},115:{l:{111:{l:{108:{l:{100:{l:{59:{c:[10684]}}}}}}}}}}},101:{l:{108:{l:{105:{l:{103:{l:{59:{c:[339]}}}}}}}}},102:{l:{99:{l:{105:{l:{114:{l:{59:{c:[10687]}}}}}}},114:{l:{59:{c:[120108]}}}}},103:{l:{111:{l:{110:{l:{59:{c:[731]}}}}},114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[242]}},c:[242]}}}}}}},116:{l:{59:{c:[10689]}}}}},104:{l:{98:{l:{97:{l:{114:{l:{59:{c:[10677]}}}}}}},109:{l:{59:{c:[937]}}}}},105:{l:{110:{l:{116:{l:{59:{c:[8750]}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8634]}}}}}}},99:{l:{105:{l:{114:{l:{59:{c:[10686]}}}}},114:{l:{111:{l:{115:{l:{115:{l:{59:{c:[10683]}}}}}}}}}}},105:{l:{110:{l:{101:{l:{59:{c:[8254]}}}}}}},116:{l:{59:{c:[10688]}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[333]}}}}}}},101:{l:{103:{l:{97:{l:{59:{c:[969]}}}}}}},105:{l:{99:{l:{114:{l:{111:{l:{110:{l:{59:{c:[959]}}}}}}}}},100:{l:{59:{c:[10678]}}},110:{l:{117:{l:{115:{l:{59:{c:[8854]}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120160]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[10679]}}}}},101:{l:{114:{l:{112:{l:{59:{c:[10681]}}}}}}},108:{l:{117:{l:{115:{l:{59:{c:[8853]}}}}}}}}},114:{l:{59:{c:[8744]},97:{l:{114:{l:{114:{l:{59:{c:[8635]}}}}}}},100:{l:{59:{c:[10845]},101:{l:{114:{l:{59:{c:[8500]},111:{l:{102:{l:{59:{c:[8500]}}}}}}}}},102:{l:{59:{c:[170]}},c:[170]},109:{l:{59:{c:[186]}},c:[186]}}},105:{l:{103:{l:{111:{l:{102:{l:{59:{c:[8886]}}}}}}}}},111:{l:{114:{l:{59:{c:[10838]}}}}},115:{l:{108:{l:{111:{l:{112:{l:{101:{l:{59:{c:[10839]}}}}}}}}}}},118:{l:{59:{c:[10843]}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8500]}}}}},108:{l:{97:{l:{115:{l:{104:{l:{59:{c:[248]}},c:[248]}}}}}}},111:{l:{108:{l:{59:{c:[8856]}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[245]}},c:[245]}}}}},109:{l:{101:{l:{115:{l:{59:{c:[8855]},97:{l:{115:{l:{59:{c:[10806]}}}}}}}}}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[246]}},c:[246]}}}}},118:{l:{98:{l:{97:{l:{114:{l:{59:{c:[9021]}}}}}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[8741]},97:{l:{59:{c:[182]},108:{l:{108:{l:{101:{l:{108:{l:{59:{c:[8741]}}}}}}}}}},c:[182]},115:{l:{105:{l:{109:{l:{59:{c:[10995]}}}}},108:{l:{59:{c:[11005]}}}}},116:{l:{59:{c:[8706]}}}}}}},99:{l:{121:{l:{59:{c:[1087]}}}}},101:{l:{114:{l:{99:{l:{110:{l:{116:{l:{59:{c:[37]}}}}}}},105:{l:{111:{l:{100:{l:{59:{c:[46]}}}}}}},109:{l:{105:{l:{108:{l:{59:{c:[8240]}}}}}}},112:{l:{59:{c:[8869]}}},116:{l:{101:{l:{110:{l:{107:{l:{59:{c:[8241]}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120109]}}}}},104:{l:{105:{l:{59:{c:[966]},118:{l:{59:{c:[981]}}}}},109:{l:{109:{l:{97:{l:{116:{l:{59:{c:[8499]}}}}}}}}},111:{l:{110:{l:{101:{l:{59:{c:[9742]}}}}}}}}},105:{l:{59:{c:[960]},116:{l:{99:{l:{104:{l:{102:{l:{111:{l:{114:{l:{107:{l:{59:{c:[8916]}}}}}}}}}}}}}}},118:{l:{59:{c:[982]}}}}},108:{l:{97:{l:{110:{l:{99:{l:{107:{l:{59:{c:[8463]},104:{l:{59:{c:[8462]}}}}}}},107:{l:{118:{l:{59:{c:[8463]}}}}}}}}},117:{l:{115:{l:{59:{c:[43]},97:{l:{99:{l:{105:{l:{114:{l:{59:{c:[10787]}}}}}}}}},98:{l:{59:{c:[8862]}}},99:{l:{105:{l:{114:{l:{59:{c:[10786]}}}}}}},100:{l:{111:{l:{59:{c:[8724]}}},117:{l:{59:{c:[10789]}}}}},101:{l:{59:{c:[10866]}}},109:{l:{110:{l:{59:{c:[177]}},c:[177]}}},115:{l:{105:{l:{109:{l:{59:{c:[10790]}}}}}}},116:{l:{119:{l:{111:{l:{59:{c:[10791]}}}}}}}}}}}}},109:{l:{59:{c:[177]}}},111:{l:{105:{l:{110:{l:{116:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10773]}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[120161]}}}}},117:{l:{110:{l:{100:{l:{59:{c:[163]}},c:[163]}}}}}}},114:{l:{59:{c:[8826]},69:{l:{59:{c:[10931]}}},97:{l:{112:{l:{59:{c:[10935]}}}}},99:{l:{117:{l:{101:{l:{59:{c:[8828]}}}}}}},101:{l:{59:{c:[10927]},99:{l:{59:{c:[8826]},97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10935]}}}}}}}}}}}}},99:{l:{117:{l:{114:{l:{108:{l:{121:{l:{101:{l:{113:{l:{59:{c:[8828]}}}}}}}}}}}}}}},101:{l:{113:{l:{59:{c:[10927]}}}}},110:{l:{97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10937]}}}}}}}}}}}}},101:{l:{113:{l:{113:{l:{59:{c:[10933]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8936]}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8830]}}}}}}}}}}},105:{l:{109:{l:{101:{l:{59:{c:[8242]},115:{l:{59:{c:[8473]}}}}}}}}},110:{l:{69:{l:{59:{c:[10933]}}},97:{l:{112:{l:{59:{c:[10937]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8936]}}}}}}}}},111:{l:{100:{l:{59:{c:[8719]}}},102:{l:{97:{l:{108:{l:{97:{l:{114:{l:{59:{c:[9006]}}}}}}}}},108:{l:{105:{l:{110:{l:{101:{l:{59:{c:[8978]}}}}}}}}},115:{l:{117:{l:{114:{l:{102:{l:{59:{c:[8979]}}}}}}}}}}},112:{l:{59:{c:[8733]},116:{l:{111:{l:{59:{c:[8733]}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8830]}}}}}}},117:{l:{114:{l:{101:{l:{108:{l:{59:{c:[8880]}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120005]}}}}},105:{l:{59:{c:[968]}}}}},117:{l:{110:{l:{99:{l:{115:{l:{112:{l:{59:{c:[8200]}}}}}}}}}}}}},113:{l:{102:{l:{114:{l:{59:{c:[120110]}}}}},105:{l:{110:{l:{116:{l:{59:{c:[10764]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120162]}}}}}}},112:{l:{114:{l:{105:{l:{109:{l:{101:{l:{59:{c:[8279]}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120006]}}}}}}},117:{l:{97:{l:{116:{l:{101:{l:{114:{l:{110:{l:{105:{l:{111:{l:{110:{l:{115:{l:{59:{c:[8461]}}}}}}}}}}}}}}},105:{l:{110:{l:{116:{l:{59:{c:[10774]}}}}}}}}}}},101:{l:{115:{l:{116:{l:{59:{c:[63]},101:{l:{113:{l:{59:{c:[8799]}}}}}}}}}}},111:{l:{116:{l:{59:{c:[34]}},c:[34]}}}}}}},114:{l:{65:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8667]}}}}}}},114:{l:{114:{l:{59:{c:[8658]}}}}},116:{l:{97:{l:{105:{l:{108:{l:{59:{c:[10524]}}}}}}}}}}},66:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10511]}}}}}}}}},72:{l:{97:{l:{114:{l:{59:{c:[10596]}}}}}}},97:{l:{99:{l:{101:{l:{59:{c:[8765,817]}}},117:{l:{116:{l:{101:{l:{59:{c:[341]}}}}}}}}},100:{l:{105:{l:{99:{l:{59:{c:[8730]}}}}}}},101:{l:{109:{l:{112:{l:{116:{l:{121:{l:{118:{l:{59:{c:[10675]}}}}}}}}}}}}},110:{l:{103:{l:{59:{c:[10217]},100:{l:{59:{c:[10642]}}},101:{l:{59:{c:[10661]}}},108:{l:{101:{l:{59:{c:[10217]}}}}}}}}},113:{l:{117:{l:{111:{l:{59:{c:[187]}},c:[187]}}}}},114:{l:{114:{l:{59:{c:[8594]},97:{l:{112:{l:{59:{c:[10613]}}}}},98:{l:{59:{c:[8677]},102:{l:{115:{l:{59:{c:[10528]}}}}}}},99:{l:{59:{c:[10547]}}},102:{l:{115:{l:{59:{c:[10526]}}}}},104:{l:{107:{l:{59:{c:[8618]}}}}},108:{l:{112:{l:{59:{c:[8620]}}}}},112:{l:{108:{l:{59:{c:[10565]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[10612]}}}}}}},116:{l:{108:{l:{59:{c:[8611]}}}}},119:{l:{59:{c:[8605]}}}}}}},116:{l:{97:{l:{105:{l:{108:{l:{59:{c:[10522]}}}}}}},105:{l:{111:{l:{59:{c:[8758]},110:{l:{97:{l:{108:{l:{115:{l:{59:{c:[8474]}}}}}}}}}}}}}}}}},98:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10509]}}}}}}},98:{l:{114:{l:{107:{l:{59:{c:[10099]}}}}}}},114:{l:{97:{l:{99:{l:{101:{l:{59:{c:[125]}}},107:{l:{59:{c:[93]}}}}}}},107:{l:{101:{l:{59:{c:[10636]}}},115:{l:{108:{l:{100:{l:{59:{c:[10638]}}},117:{l:{59:{c:[10640]}}}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[345]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[343]}}}}}}},105:{l:{108:{l:{59:{c:[8969]}}}}}}},117:{l:{98:{l:{59:{c:[125]}}}}},121:{l:{59:{c:[1088]}}}}},100:{l:{99:{l:{97:{l:{59:{c:[10551]}}}}},108:{l:{100:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10601]}}}}}}}}}}},113:{l:{117:{l:{111:{l:{59:{c:[8221]},114:{l:{59:{c:[8221]}}}}}}}}},115:{l:{104:{l:{59:{c:[8627]}}}}}}},101:{l:{97:{l:{108:{l:{59:{c:[8476]},105:{l:{110:{l:{101:{l:{59:{c:[8475]}}}}}}},112:{l:{97:{l:{114:{l:{116:{l:{59:{c:[8476]}}}}}}}}},115:{l:{59:{c:[8477]}}}}}}},99:{l:{116:{l:{59:{c:[9645]}}}}},103:{l:{59:{c:[174]}},c:[174]}}},102:{l:{105:{l:{115:{l:{104:{l:{116:{l:{59:{c:[10621]}}}}}}}}},108:{l:{111:{l:{111:{l:{114:{l:{59:{c:[8971]}}}}}}}}},114:{l:{59:{c:[120111]}}}}},104:{l:{97:{l:{114:{l:{100:{l:{59:{c:[8641]}}},117:{l:{59:{c:[8640]},108:{l:{59:{c:[10604]}}}}}}}}},111:{l:{59:{c:[961]},118:{l:{59:{c:[1009]}}}}}}},105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8594]},116:{l:{97:{l:{105:{l:{108:{l:{59:{c:[8611]}}}}}}}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[8641]}}}}}}}}},117:{l:{112:{l:{59:{c:[8640]}}}}}}}}}}}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{115:{l:{59:{c:[8644]}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{115:{l:{59:{c:[8652]}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{115:{l:{59:{c:[8649]}}}}}}}}}}}}}}}}}}}}}}},115:{l:{113:{l:{117:{l:{105:{l:{103:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8605]}}}}}}}}}}}}}}}}}}}}},116:{l:{104:{l:{114:{l:{101:{l:{101:{l:{116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8908]}}}}}}}}}}}}}}}}}}}}}}}}}}},110:{l:{103:{l:{59:{c:[730]}}}}},115:{l:{105:{l:{110:{l:{103:{l:{100:{l:{111:{l:{116:{l:{115:{l:{101:{l:{113:{l:{59:{c:[8787]}}}}}}}}}}}}}}}}}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8644]}}}}}}},104:{l:{97:{l:{114:{l:{59:{c:[8652]}}}}}}},109:{l:{59:{c:[8207]}}}}},109:{l:{111:{l:{117:{l:{115:{l:{116:{l:{59:{c:[9137]},97:{l:{99:{l:{104:{l:{101:{l:{59:{c:[9137]}}}}}}}}}}}}}}}}}}},110:{l:{109:{l:{105:{l:{100:{l:{59:{c:[10990]}}}}}}}}},111:{l:{97:{l:{110:{l:{103:{l:{59:{c:[10221]}}}}},114:{l:{114:{l:{59:{c:[8702]}}}}}}},98:{l:{114:{l:{107:{l:{59:{c:[10215]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[10630]}}}}},102:{l:{59:{c:[120163]}}},108:{l:{117:{l:{115:{l:{59:{c:[10798]}}}}}}}}},116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[10805]}}}}}}}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[41]},103:{l:{116:{l:{59:{c:[10644]}}}}}}}}},112:{l:{111:{l:{108:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10770]}}}}}}}}}}}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8649]}}}}}}}}},115:{l:{97:{l:{113:{l:{117:{l:{111:{l:{59:{c:[8250]}}}}}}}}},99:{l:{114:{l:{59:{c:[120007]}}}}},104:{l:{59:{c:[8625]}}},113:{l:{98:{l:{59:{c:[93]}}},117:{l:{111:{l:{59:{c:[8217]},114:{l:{59:{c:[8217]}}}}}}}}}}},116:{l:{104:{l:{114:{l:{101:{l:{101:{l:{59:{c:[8908]}}}}}}}}},105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8906]}}}}}}}}},114:{l:{105:{l:{59:{c:[9657]},101:{l:{59:{c:[8885]}}},102:{l:{59:{c:[9656]}}},108:{l:{116:{l:{114:{l:{105:{l:{59:{c:[10702]}}}}}}}}}}}}}}},117:{l:{108:{l:{117:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10600]}}}}}}}}}}}}},120:{l:{59:{c:[8478]}}}}},115:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[347]}}}}}}}}}}},98:{l:{113:{l:{117:{l:{111:{l:{59:{c:[8218]}}}}}}}}},99:{l:{59:{c:[8827]},69:{l:{59:{c:[10932]}}},97:{l:{112:{l:{59:{c:[10936]}}},114:{l:{111:{l:{110:{l:{59:{c:[353]}}}}}}}}},99:{l:{117:{l:{101:{l:{59:{c:[8829]}}}}}}},101:{l:{59:{c:[10928]},100:{l:{105:{l:{108:{l:{59:{c:[351]}}}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[349]}}}}}}},110:{l:{69:{l:{59:{c:[10934]}}},97:{l:{112:{l:{59:{c:[10938]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8937]}}}}}}}}},112:{l:{111:{l:{108:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10771]}}}}}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8831]}}}}}}},121:{l:{59:{c:[1089]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8901]},98:{l:{59:{c:[8865]}}},101:{l:{59:{c:[10854]}}}}}}}}},101:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8664]}}}}}}},97:{l:{114:{l:{104:{l:{107:{l:{59:{c:[10533]}}}}},114:{l:{59:{c:[8600]},111:{l:{119:{l:{59:{c:[8600]}}}}}}}}}}},99:{l:{116:{l:{59:{c:[167]}},c:[167]}}},109:{l:{105:{l:{59:{c:[59]}}}}},115:{l:{119:{l:{97:{l:{114:{l:{59:{c:[10537]}}}}}}}}},116:{l:{109:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[8726]}}}}}}}}},110:{l:{59:{c:[8726]}}}}}}},120:{l:{116:{l:{59:{c:[10038]}}}}}}},102:{l:{114:{l:{59:{c:[120112]},111:{l:{119:{l:{110:{l:{59:{c:[8994]}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{59:{c:[9839]}}}}}}},99:{l:{104:{l:{99:{l:{121:{l:{59:{c:[1097]}}}}}}},121:{l:{59:{c:[1096]}}}}},111:{l:{114:{l:{116:{l:{109:{l:{105:{l:{100:{l:{59:{c:[8739]}}}}}}},112:{l:{97:{l:{114:{l:{97:{l:{108:{l:{108:{l:{101:{l:{108:{l:{59:{c:[8741]}}}}}}}}}}}}}}}}}}}}}}},121:{l:{59:{c:[173]}},c:[173]}}},105:{l:{103:{l:{109:{l:{97:{l:{59:{c:[963]},102:{l:{59:{c:[962]}}},118:{l:{59:{c:[962]}}}}}}}}},109:{l:{59:{c:[8764]},100:{l:{111:{l:{116:{l:{59:{c:[10858]}}}}}}},101:{l:{59:{c:[8771]},113:{l:{59:{c:[8771]}}}}},103:{l:{59:{c:[10910]},69:{l:{59:{c:[10912]}}}}},108:{l:{59:{c:[10909]},69:{l:{59:{c:[10911]}}}}},110:{l:{101:{l:{59:{c:[8774]}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10788]}}}}}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10610]}}}}}}}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8592]}}}}}}}}},109:{l:{97:{l:{108:{l:{108:{l:{115:{l:{101:{l:{116:{l:{109:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[8726]}}}}}}}}}}}}}}}}}}}}},115:{l:{104:{l:{112:{l:{59:{c:[10803]}}}}}}}}},101:{l:{112:{l:{97:{l:{114:{l:{115:{l:{108:{l:{59:{c:[10724]}}}}}}}}}}}}},105:{l:{100:{l:{59:{c:[8739]}}},108:{l:{101:{l:{59:{c:[8995]}}}}}}},116:{l:{59:{c:[10922]},101:{l:{59:{c:[10924]},115:{l:{59:{c:[10924,65024]}}}}}}}}},111:{l:{102:{l:{116:{l:{99:{l:{121:{l:{59:{c:[1100]}}}}}}}}},108:{l:{59:{c:[47]},98:{l:{59:{c:[10692]},97:{l:{114:{l:{59:{c:[9023]}}}}}}}}},112:{l:{102:{l:{59:{c:[120164]}}}}}}},112:{l:{97:{l:{100:{l:{101:{l:{115:{l:{59:{c:[9824]},117:{l:{105:{l:{116:{l:{59:{c:[9824]}}}}}}}}}}}}},114:{l:{59:{c:[8741]}}}}}}},113:{l:{99:{l:{97:{l:{112:{l:{59:{c:[8851]},115:{l:{59:{c:[8851,65024]}}}}}}},117:{l:{112:{l:{59:{c:[8852]},115:{l:{59:{c:[8852,65024]}}}}}}}}},115:{l:{117:{l:{98:{l:{59:{c:[8847]},101:{l:{59:{c:[8849]}}},115:{l:{101:{l:{116:{l:{59:{c:[8847]},101:{l:{113:{l:{59:{c:[8849]}}}}}}}}}}}}},112:{l:{59:{c:[8848]},101:{l:{59:{c:[8850]}}},115:{l:{101:{l:{116:{l:{59:{c:[8848]},101:{l:{113:{l:{59:{c:[8850]}}}}}}}}}}}}}}}}},117:{l:{59:{c:[9633]},97:{l:{114:{l:{101:{l:{59:{c:[9633]}}},102:{l:{59:{c:[9642]}}}}}}},102:{l:{59:{c:[9642]}}}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8594]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120008]}}}}},101:{l:{116:{l:{109:{l:{110:{l:{59:{c:[8726]}}}}}}}}},109:{l:{105:{l:{108:{l:{101:{l:{59:{c:[8995]}}}}}}}}},116:{l:{97:{l:{114:{l:{102:{l:{59:{c:[8902]}}}}}}}}}}},116:{l:{97:{l:{114:{l:{59:{c:[9734]},102:{l:{59:{c:[9733]}}}}}}},114:{l:{97:{l:{105:{l:{103:{l:{104:{l:{116:{l:{101:{l:{112:{l:{115:{l:{105:{l:{108:{l:{111:{l:{110:{l:{59:{c:[1013]}}}}}}}}}}}}}}},112:{l:{104:{l:{105:{l:{59:{c:[981]}}}}}}}}}}}}}}}}},110:{l:{115:{l:{59:{c:[175]}}}}}}}}},117:{l:{98:{l:{59:{c:[8834]},69:{l:{59:{c:[10949]}}},100:{l:{111:{l:{116:{l:{59:{c:[10941]}}}}}}},101:{l:{59:{c:[8838]},100:{l:{111:{l:{116:{l:{59:{c:[10947]}}}}}}}}},109:{l:{117:{l:{108:{l:{116:{l:{59:{c:[10945]}}}}}}}}},110:{l:{69:{l:{59:{c:[10955]}}},101:{l:{59:{c:[8842]}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10943]}}}}}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10617]}}}}}}}}},115:{l:{101:{l:{116:{l:{59:{c:[8834]},101:{l:{113:{l:{59:{c:[8838]},113:{l:{59:{c:[10949]}}}}}}},110:{l:{101:{l:{113:{l:{59:{c:[8842]},113:{l:{59:{c:[10955]}}}}}}}}}}}}},105:{l:{109:{l:{59:{c:[10951]}}}}},117:{l:{98:{l:{59:{c:[10965]}}},112:{l:{59:{c:[10963]}}}}}}}}},99:{l:{99:{l:{59:{c:[8827]},97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10936]}}}}}}}}}}}}},99:{l:{117:{l:{114:{l:{108:{l:{121:{l:{101:{l:{113:{l:{59:{c:[8829]}}}}}}}}}}}}}}},101:{l:{113:{l:{59:{c:[10928]}}}}},110:{l:{97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10938]}}}}}}}}}}}}},101:{l:{113:{l:{113:{l:{59:{c:[10934]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8937]}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8831]}}}}}}}}}}},109:{l:{59:{c:[8721]}}},110:{l:{103:{l:{59:{c:[9834]}}}}},112:{l:{49:{l:{59:{c:[185]}},c:[185]},50:{l:{59:{c:[178]}},c:[178]},51:{l:{59:{c:[179]}},c:[179]},59:{c:[8835]},69:{l:{59:{c:[10950]}}},100:{l:{111:{l:{116:{l:{59:{c:[10942]}}}}},115:{l:{117:{l:{98:{l:{59:{c:[10968]}}}}}}}}},101:{l:{59:{c:[8839]},100:{l:{111:{l:{116:{l:{59:{c:[10948]}}}}}}}}},104:{l:{115:{l:{111:{l:{108:{l:{59:{c:[10185]}}}}},117:{l:{98:{l:{59:{c:[10967]}}}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10619]}}}}}}}}},109:{l:{117:{l:{108:{l:{116:{l:{59:{c:[10946]}}}}}}}}},110:{l:{69:{l:{59:{c:[10956]}}},101:{l:{59:{c:[8843]}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10944]}}}}}}}}},115:{l:{101:{l:{116:{l:{59:{c:[8835]},101:{l:{113:{l:{59:{c:[8839]},113:{l:{59:{c:[10950]}}}}}}},110:{l:{101:{l:{113:{l:{59:{c:[8843]},113:{l:{59:{c:[10956]}}}}}}}}}}}}},105:{l:{109:{l:{59:{c:[10952]}}}}},117:{l:{98:{l:{59:{c:[10964]}}},112:{l:{59:{c:[10966]}}}}}}}}}}},119:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8665]}}}}}}},97:{l:{114:{l:{104:{l:{107:{l:{59:{c:[10534]}}}}},114:{l:{59:{c:[8601]},111:{l:{119:{l:{59:{c:[8601]}}}}}}}}}}},110:{l:{119:{l:{97:{l:{114:{l:{59:{c:[10538]}}}}}}}}}}},122:{l:{108:{l:{105:{l:{103:{l:{59:{c:[223]}},c:[223]}}}}}}}}},116:{l:{97:{l:{114:{l:{103:{l:{101:{l:{116:{l:{59:{c:[8982]}}}}}}}}},117:{l:{59:{c:[964]}}}}},98:{l:{114:{l:{107:{l:{59:{c:[9140]}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[357]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[355]}}}}}}}}},121:{l:{59:{c:[1090]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8411]}}}}}}},101:{l:{108:{l:{114:{l:{101:{l:{99:{l:{59:{c:[8981]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120113]}}}}},104:{l:{101:{l:{114:{l:{101:{l:{52:{l:{59:{c:[8756]}}},102:{l:{111:{l:{114:{l:{101:{l:{59:{c:[8756]}}}}}}}}}}}}},116:{l:{97:{l:{59:{c:[952]},115:{l:{121:{l:{109:{l:{59:{c:[977]}}}}}}},118:{l:{59:{c:[977]}}}}}}}}},105:{l:{99:{l:{107:{l:{97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[8776]}}}}}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8764]}}}}}}}}}}},110:{l:{115:{l:{112:{l:{59:{c:[8201]}}}}}}}}},107:{l:{97:{l:{112:{l:{59:{c:[8776]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8764]}}}}}}}}},111:{l:{114:{l:{110:{l:{59:{c:[254]}},c:[254]}}}}}}},105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[732]}}}}}}},109:{l:{101:{l:{115:{l:{59:{c:[215]},98:{l:{59:{c:[8864]},97:{l:{114:{l:{59:{c:[10801]}}}}}}},100:{l:{59:{c:[10800]}}}},c:[215]}}}}},110:{l:{116:{l:{59:{c:[8749]}}}}}}},111:{l:{101:{l:{97:{l:{59:{c:[10536]}}}}},112:{l:{59:{c:[8868]},98:{l:{111:{l:{116:{l:{59:{c:[9014]}}}}}}},99:{l:{105:{l:{114:{l:{59:{c:[10993]}}}}}}},102:{l:{59:{c:[120165]},111:{l:{114:{l:{107:{l:{59:{c:[10970]}}}}}}}}}}},115:{l:{97:{l:{59:{c:[10537]}}}}}}},112:{l:{114:{l:{105:{l:{109:{l:{101:{l:{59:{c:[8244]}}}}}}}}}}},114:{l:{97:{l:{100:{l:{101:{l:{59:{c:[8482]}}}}}}},105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[9653]},100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[9663]}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[9667]},101:{l:{113:{l:{59:{c:[8884]}}}}}}}}}}}}},113:{l:{59:{c:[8796]}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[9657]},101:{l:{113:{l:{59:{c:[8885]}}}}}}}}}}}}}}}}}}}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[9708]}}}}}}},101:{l:{59:{c:[8796]}}},109:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[10810]}}}}}}}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10809]}}}}}}}}},115:{l:{98:{l:{59:{c:[10701]}}}}},116:{l:{105:{l:{109:{l:{101:{l:{59:{c:[10811]}}}}}}}}}}},112:{l:{101:{l:{122:{l:{105:{l:{117:{l:{109:{l:{59:{c:[9186]}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120009]}}},121:{l:{59:{c:[1094]}}}}},104:{l:{99:{l:{121:{l:{59:{c:[1115]}}}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[359]}}}}}}}}}}},119:{l:{105:{l:{120:{l:{116:{l:{59:{c:[8812]}}}}}}},111:{l:{104:{l:{101:{l:{97:{l:{100:{l:{108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8606]}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8608]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},117:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8657]}}}}}}},72:{l:{97:{l:{114:{l:{59:{c:[10595]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[250]}},c:[250]}}}}}}},114:{l:{114:{l:{59:{c:[8593]}}}}}}},98:{l:{114:{l:{99:{l:{121:{l:{59:{c:[1118]}}}}},101:{l:{118:{l:{101:{l:{59:{c:[365]}}}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[251]}},c:[251]}}}}},121:{l:{59:{c:[1091]}}}}},100:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8645]}}}}}}},98:{l:{108:{l:{97:{l:{99:{l:{59:{c:[369]}}}}}}}}},104:{l:{97:{l:{114:{l:{59:{c:[10606]}}}}}}}}},102:{l:{105:{l:{115:{l:{104:{l:{116:{l:{59:{c:[10622]}}}}}}}}},114:{l:{59:{c:[120114]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[249]}},c:[249]}}}}}}}}},104:{l:{97:{l:{114:{l:{108:{l:{59:{c:[8639]}}},114:{l:{59:{c:[8638]}}}}}}},98:{l:{108:{l:{107:{l:{59:{c:[9600]}}}}}}}}},108:{l:{99:{l:{111:{l:{114:{l:{110:{l:{59:{c:[8988]},101:{l:{114:{l:{59:{c:[8988]}}}}}}}}}}},114:{l:{111:{l:{112:{l:{59:{c:[8975]}}}}}}}}},116:{l:{114:{l:{105:{l:{59:{c:[9720]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[363]}}}}}}},108:{l:{59:{c:[168]}},c:[168]}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[371]}}}}}}},112:{l:{102:{l:{59:{c:[120166]}}}}}}},112:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8593]}}}}}}}}}}},100:{l:{111:{l:{119:{l:{110:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8597]}}}}}}}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8639]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8638]}}}}}}}}}}}}}}}}}}}}}}}}},108:{l:{117:{l:{115:{l:{59:{c:[8846]}}}}}}},115:{l:{105:{l:{59:{c:[965]},104:{l:{59:{c:[978]}}},108:{l:{111:{l:{110:{l:{59:{c:[965]}}}}}}}}}}},117:{l:{112:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{115:{l:{59:{c:[8648]}}}}}}}}}}}}}}}}}}},114:{l:{99:{l:{111:{l:{114:{l:{110:{l:{59:{c:[8989]},101:{l:{114:{l:{59:{c:[8989]}}}}}}}}}}},114:{l:{111:{l:{112:{l:{59:{c:[8974]}}}}}}}}},105:{l:{110:{l:{103:{l:{59:{c:[367]}}}}}}},116:{l:{114:{l:{105:{l:{59:{c:[9721]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120010]}}}}}}},116:{l:{100:{l:{111:{l:{116:{l:{59:{c:[8944]}}}}}}},105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[361]}}}}}}}}},114:{l:{105:{l:{59:{c:[9653]},102:{l:{59:{c:[9652]}}}}}}}}},117:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8648]}}}}}}},109:{l:{108:{l:{59:{c:[252]}},c:[252]}}}}},119:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[10663]}}}}}}}}}}}}}}},118:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8661]}}}}}}},66:{l:{97:{l:{114:{l:{59:{c:[10984]},118:{l:{59:{c:[10985]}}}}}}}}},68:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8872]}}}}}}}}},97:{l:{110:{l:{103:{l:{114:{l:{116:{l:{59:{c:[10652]}}}}}}}}},114:{l:{101:{l:{112:{l:{115:{l:{105:{l:{108:{l:{111:{l:{110:{l:{59:{c:[1013]}}}}}}}}}}}}}}},107:{l:{97:{l:{112:{l:{112:{l:{97:{l:{59:{c:[1008]}}}}}}}}}}},110:{l:{111:{l:{116:{l:{104:{l:{105:{l:{110:{l:{103:{l:{59:{c:[8709]}}}}}}}}}}}}}}},112:{l:{104:{l:{105:{l:{59:{c:[981]}}}}},105:{l:{59:{c:[982]}}},114:{l:{111:{l:{112:{l:{116:{l:{111:{l:{59:{c:[8733]}}}}}}}}}}}}},114:{l:{59:{c:[8597]},104:{l:{111:{l:{59:{c:[1009]}}}}}}},115:{l:{105:{l:{103:{l:{109:{l:{97:{l:{59:{c:[962]}}}}}}}}},117:{l:{98:{l:{115:{l:{101:{l:{116:{l:{110:{l:{101:{l:{113:{l:{59:{c:[8842,65024]},113:{l:{59:{c:[10955,65024]}}}}}}}}}}}}}}}}},112:{l:{115:{l:{101:{l:{116:{l:{110:{l:{101:{l:{113:{l:{59:{c:[8843,65024]},113:{l:{59:{c:[10956,65024]}}}}}}}}}}}}}}}}}}}}},116:{l:{104:{l:{101:{l:{116:{l:{97:{l:{59:{c:[977]}}}}}}}}},114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8882]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8883]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},99:{l:{121:{l:{59:{c:[1074]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8866]}}}}}}}}},101:{l:{101:{l:{59:{c:[8744]},98:{l:{97:{l:{114:{l:{59:{c:[8891]}}}}}}},101:{l:{113:{l:{59:{c:[8794]}}}}}}},108:{l:{108:{l:{105:{l:{112:{l:{59:{c:[8942]}}}}}}}}},114:{l:{98:{l:{97:{l:{114:{l:{59:{c:[124]}}}}}}},116:{l:{59:{c:[124]}}}}}}},102:{l:{114:{l:{59:{c:[120115]}}}}},108:{l:{116:{l:{114:{l:{105:{l:{59:{c:[8882]}}}}}}}}},110:{l:{115:{l:{117:{l:{98:{l:{59:{c:[8834,8402]}}},112:{l:{59:{c:[8835,8402]}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120167]}}}}}}},112:{l:{114:{l:{111:{l:{112:{l:{59:{c:[8733]}}}}}}}}},114:{l:{116:{l:{114:{l:{105:{l:{59:{c:[8883]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120011]}}}}},117:{l:{98:{l:{110:{l:{69:{l:{59:{c:[10955,65024]}}},101:{l:{59:{c:[8842,65024]}}}}}}},112:{l:{110:{l:{69:{l:{59:{c:[10956,65024]}}},101:{l:{59:{c:[8843,65024]}}}}}}}}}}},122:{l:{105:{l:{103:{l:{122:{l:{97:{l:{103:{l:{59:{c:[10650]}}}}}}}}}}}}}}},119:{l:{99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[373]}}}}}}}}},101:{l:{100:{l:{98:{l:{97:{l:{114:{l:{59:{c:[10847]}}}}}}},103:{l:{101:{l:{59:{c:[8743]},113:{l:{59:{c:[8793]}}}}}}}}},105:{l:{101:{l:{114:{l:{112:{l:{59:{c:[8472]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120116]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120168]}}}}}}},112:{l:{59:{c:[8472]}}},114:{l:{59:{c:[8768]},101:{l:{97:{l:{116:{l:{104:{l:{59:{c:[8768]}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120012]}}}}}}}}},120:{l:{99:{l:{97:{l:{112:{l:{59:{c:[8898]}}}}},105:{l:{114:{l:{99:{l:{59:{c:[9711]}}}}}}},117:{l:{112:{l:{59:{c:[8899]}}}}}}},100:{l:{116:{l:{114:{l:{105:{l:{59:{c:[9661]}}}}}}}}},102:{l:{114:{l:{59:{c:[120117]}}}}},104:{l:{65:{l:{114:{l:{114:{l:{59:{c:[10234]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[10231]}}}}}}}}},105:{l:{59:{c:[958]}}},108:{l:{65:{l:{114:{l:{114:{l:{59:{c:[10232]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[10229]}}}}}}}}},109:{l:{97:{l:{112:{l:{59:{c:[10236]}}}}}}},110:{l:{105:{l:{115:{l:{59:{c:[8955]}}}}}}},111:{l:{100:{l:{111:{l:{116:{l:{59:{c:[10752]}}}}}}},112:{l:{102:{l:{59:{c:[120169]}}},108:{l:{117:{l:{115:{l:{59:{c:[10753]}}}}}}}}},116:{l:{105:{l:{109:{l:{101:{l:{59:{c:[10754]}}}}}}}}}}},114:{l:{65:{l:{114:{l:{114:{l:{59:{c:[10233]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[10230]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120013]}}}}},113:{l:{99:{l:{117:{l:{112:{l:{59:{c:[10758]}}}}}}}}}}},117:{l:{112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10756]}}}}}}}}},116:{l:{114:{l:{105:{l:{59:{c:[9651]}}}}}}}}},118:{l:{101:{l:{101:{l:{59:{c:[8897]}}}}}}},119:{l:{101:{l:{100:{l:{103:{l:{101:{l:{59:{c:[8896]}}}}}}}}}}}}},121:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[253]}},c:[253]}}}}},121:{l:{59:{c:[1103]}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[375]}}}}}}},121:{l:{59:{c:[1099]}}}}},101:{l:{110:{l:{59:{c:[165]}},c:[165]}}},102:{l:{114:{l:{59:{c:[120118]}}}}},105:{l:{99:{l:{121:{l:{59:{c:[1111]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120170]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120014]}}}}}}},117:{l:{99:{l:{121:{l:{59:{c:[1102]}}}}},109:{l:{108:{l:{59:{c:[255]}},c:[255]}}}}}}},122:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[378]}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[382]}}}}}}}}},121:{l:{59:{c:[1079]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[380]}}}}}}},101:{l:{101:{l:{116:{l:{114:{l:{102:{l:{59:{c:[8488]}}}}}}}}},116:{l:{97:{l:{59:{c:[950]}}}}}}},102:{l:{114:{l:{59:{c:[120119]}}}}},104:{l:{99:{l:{121:{l:{59:{c:[1078]}}}}}}},105:{l:{103:{l:{114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8669]}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120171]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120015]}}}}}}},119:{l:{106:{l:{59:{c:[8205]}}},110:{l:{106:{l:{59:{c:[8204]}}}}}}}}}},xu=f(function(e){var t=yu.CODE_POINTS,n=yu.CODE_POINT_SEQUENCES,r={0:65533,13:13,128:8364,129:129,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,141:141,142:381,143:143,144:144,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,157:157,158:382,159:376},a="DATA_STATE";function i(e){return e===t.SPACE||e===t.LINE_FEED||e===t.TABULATION||e===t.FORM_FEED}function o(e){return e>=t.DIGIT_0&&e<=t.DIGIT_9}function l(e){return e>=t.LATIN_CAPITAL_A&&e<=t.LATIN_CAPITAL_Z}function s(e){return e>=t.LATIN_SMALL_A&&e<=t.LATIN_SMALL_Z}function c(e){return s(e)||l(e)}function u(e,n){return o(e)||n&&(e>=t.LATIN_CAPITAL_A&&e<=t.LATIN_CAPITAL_F||e>=t.LATIN_SMALL_A&&e<=t.LATIN_SMALL_F)}function d(e){return e+32}function p(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(e>>>10&1023|55296)+String.fromCharCode(56320|1023&e))}function m(e){return String.fromCharCode(d(e))}var g=e.exports=function(e){this.preprocessor=new Nu,this.tokenQueue=[],this.allowCDATA=!1,this.state=a,this.returnState="",this.tempBuff=[],this.additionalAllowedCp=void 0,this.lastStartTagName="",this.consumedAfterSnapshot=-1,this.active=!1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr=null,e&&e.locationInfo&&Ou(this)};g.CHARACTER_TOKEN="CHARACTER_TOKEN",g.NULL_CHARACTER_TOKEN="NULL_CHARACTER_TOKEN",g.WHITESPACE_CHARACTER_TOKEN="WHITESPACE_CHARACTER_TOKEN",g.START_TAG_TOKEN="START_TAG_TOKEN",g.END_TAG_TOKEN="END_TAG_TOKEN",g.COMMENT_TOKEN="COMMENT_TOKEN",g.DOCTYPE_TOKEN="DOCTYPE_TOKEN",g.EOF_TOKEN="EOF_TOKEN",g.HIBERNATION_TOKEN="HIBERNATION_TOKEN",g.MODE=g.prototype.MODE={DATA:a,RCDATA:"RCDATA_STATE",RAWTEXT:"RAWTEXT_STATE",SCRIPT_DATA:"SCRIPT_DATA_STATE",PLAINTEXT:"PLAINTEXT_STATE"},g.getTokenAttr=function(e,t){for(var n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null},g.prototype.getNextToken=function(){for(;!this.tokenQueue.length&&this.active;){this._hibernationSnapshot();var e=this._consume();this._ensureHibernation()||this[this.state](e)}return this.tokenQueue.shift()},g.prototype.write=function(e,t){this.active=!0,this.preprocessor.write(e,t)},g.prototype.insertHtmlAtCurrentPos=function(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e)},g.prototype._hibernationSnapshot=function(){this.consumedAfterSnapshot=0},g.prototype._ensureHibernation=function(){if(this.preprocessor.endOfChunkHit){for(;this.consumedAfterSnapshot>0;this.consumedAfterSnapshot--)this.preprocessor.retreat();return this.active=!1,this.tokenQueue.push({type:g.HIBERNATION_TOKEN}),!0}return!1},g.prototype._consume=function(){return this.consumedAfterSnapshot++,this.preprocessor.advance()},g.prototype._unconsume=function(){this.consumedAfterSnapshot--,this.preprocessor.retreat()},g.prototype._unconsumeSeveral=function(e){for(;e--;)this._unconsume()},g.prototype._reconsumeInState=function(e){this.state=e,this._unconsume()},g.prototype._consumeSubsequentIfMatch=function(e,n,r){for(var a=0,i=!0,o=e.length,l=0,s=n,c=void 0;l<o;l++){if(l>0&&(s=this._consume(),a++),s===t.EOF){i=!1;break}if(s!==(c=e[l])&&(r||s!==d(c))){i=!1;break}}return i||this._unconsumeSeveral(a),i},g.prototype._lookahead=function(){var e=this._consume();return this._unconsume(),e},g.prototype.isTempBufferEqualToScriptString=function(){if(this.tempBuff.length!==n.SCRIPT_STRING.length)return!1;for(var e=0;e<this.tempBuff.length;e++)if(this.tempBuff[e]!==n.SCRIPT_STRING[e])return!1;return!0},g.prototype._createStartTagToken=function(){this.currentToken={type:g.START_TAG_TOKEN,tagName:"",selfClosing:!1,attrs:[]}},g.prototype._createEndTagToken=function(){this.currentToken={type:g.END_TAG_TOKEN,tagName:"",attrs:[]}},g.prototype._createCommentToken=function(){this.currentToken={type:g.COMMENT_TOKEN,data:""}},g.prototype._createDoctypeToken=function(e){this.currentToken={type:g.DOCTYPE_TOKEN,name:e,forceQuirks:!1,publicId:null,systemId:null}},g.prototype._createCharacterToken=function(e,t){this.currentCharacterToken={type:e,chars:t}},g.prototype._createAttr=function(e){this.currentAttr={name:e,value:""}},g.prototype._isDuplicateAttr=function(){return null!==g.getTokenAttr(this.currentToken,this.currentAttr.name)},g.prototype._leaveAttrName=function(e){this.state=e,this._isDuplicateAttr()||this.currentToken.attrs.push(this.currentAttr)},g.prototype._leaveAttrValue=function(e){this.state=e},g.prototype._isAppropriateEndTagToken=function(){return this.lastStartTagName===this.currentToken.tagName},g.prototype._emitCurrentToken=function(){this._emitCurrentCharacterToken(),this.currentToken.type===g.START_TAG_TOKEN&&(this.lastStartTagName=this.currentToken.tagName),this.tokenQueue.push(this.currentToken),this.currentToken=null},g.prototype._emitCurrentCharacterToken=function(){this.currentCharacterToken&&(this.tokenQueue.push(this.currentCharacterToken),this.currentCharacterToken=null)},g.prototype._emitEOFToken=function(){this._emitCurrentCharacterToken(),this.tokenQueue.push({type:g.EOF_TOKEN})},g.prototype._appendCharToCurrentCharacterToken=function(e,t){this.currentCharacterToken&&this.currentCharacterToken.type!==e&&this._emitCurrentCharacterToken(),this.currentCharacterToken?this.currentCharacterToken.chars+=t:this._createCharacterToken(e,t)},g.prototype._emitCodePoint=function(e){var n=g.CHARACTER_TOKEN;i(e)?n=g.WHITESPACE_CHARACTER_TOKEN:e===t.NULL&&(n=g.NULL_CHARACTER_TOKEN),this._appendCharToCurrentCharacterToken(n,p(e))},g.prototype._emitSeveralCodePoints=function(e){for(var t=0;t<e.length;t++)this._emitCodePoint(e[t])},g.prototype._emitChar=function(e){this._appendCharToCurrentCharacterToken(g.CHARACTER_TOKEN,e)},g.prototype._consumeNumericEntity=function(e){var n="",a=void 0;do{n+=p(this._consume()),a=this._lookahead()}while(a!==t.EOF&&u(a,e));this._lookahead()===t.SEMICOLON&&this._consume();var i,o=parseInt(n,e?16:10),l=r[o];return l||((i=o)>=55296&&i<=57343||i>1114111?t.REPLACEMENT_CHARACTER:o)},g.prototype._consumeNamedEntity=function(e,n){for(var r=null,a=0,i=e,l=Mu[i],s=1,u=!1;l&&i!==t.EOF;i=this._consume(),s++,l=l.l&&l.l[i])if(l.c&&(r=l.c,a=s,i===t.SEMICOLON)){u=!0;break}if(r){if(!u&&(this._unconsumeSeveral(s-a),n)){var d=this._lookahead();if(d===t.EQUALS_SIGN||function(e){return c(e)||o(e)}(d))return this._unconsumeSeveral(a),null}return r}return this._unconsumeSeveral(s),null},g.prototype._consumeCharacterReference=function(e,n){if(i(e)||e===t.GREATER_THAN_SIGN||e===t.AMPERSAND||e===this.additionalAllowedCp||e===t.EOF)return this._unconsume(),null;if(e===t.NUMBER_SIGN){var r=!1,a=this._lookahead();return a!==t.LATIN_SMALL_X&&a!==t.LATIN_CAPITAL_X||(this._consume(),r=!0),(a=this._lookahead())!==t.EOF&&u(a,r)?[this._consumeNumericEntity(r)]:(this._unconsumeSeveral(r?2:1),null)}return this._consumeNamedEntity(e,n)};var h=g.prototype;h.DATA_STATE=function(e){this.preprocessor.dropParsedChunk(),e===t.AMPERSAND?this.state="CHARACTER_REFERENCE_IN_DATA_STATE":e===t.LESS_THAN_SIGN?this.state="TAG_OPEN_STATE":e===t.NULL?this._emitCodePoint(e):e===t.EOF?this._emitEOFToken():this._emitCodePoint(e)},h.CHARACTER_REFERENCE_IN_DATA_STATE=function(e){this.additionalAllowedCp=void 0;var t=this._consumeCharacterReference(e,!1);this._ensureHibernation()||(t?this._emitSeveralCodePoints(t):this._emitChar("&"),this.state=a)},h.RCDATA_STATE=function(e){this.preprocessor.dropParsedChunk(),e===t.AMPERSAND?this.state="CHARACTER_REFERENCE_IN_RCDATA_STATE":e===t.LESS_THAN_SIGN?this.state="RCDATA_LESS_THAN_SIGN_STATE":e===t.NULL?this._emitChar(yu.REPLACEMENT_CHARACTER):e===t.EOF?this._emitEOFToken():this._emitCodePoint(e)},h.CHARACTER_REFERENCE_IN_RCDATA_STATE=function(e){this.additionalAllowedCp=void 0;var t=this._consumeCharacterReference(e,!1);this._ensureHibernation()||(t?this._emitSeveralCodePoints(t):this._emitChar("&"),this.state="RCDATA_STATE")},h.RAWTEXT_STATE=function(e){this.preprocessor.dropParsedChunk(),e===t.LESS_THAN_SIGN?this.state="RAWTEXT_LESS_THAN_SIGN_STATE":e===t.NULL?this._emitChar(yu.REPLACEMENT_CHARACTER):e===t.EOF?this._emitEOFToken():this._emitCodePoint(e)},h.SCRIPT_DATA_STATE=function(e){this.preprocessor.dropParsedChunk(),e===t.LESS_THAN_SIGN?this.state="SCRIPT_DATA_LESS_THAN_SIGN_STATE":e===t.NULL?this._emitChar(yu.REPLACEMENT_CHARACTER):e===t.EOF?this._emitEOFToken():this._emitCodePoint(e)},h.PLAINTEXT_STATE=function(e){this.preprocessor.dropParsedChunk(),e===t.NULL?this._emitChar(yu.REPLACEMENT_CHARACTER):e===t.EOF?this._emitEOFToken():this._emitCodePoint(e)},h.TAG_OPEN_STATE=function(e){e===t.EXCLAMATION_MARK?this.state="MARKUP_DECLARATION_OPEN_STATE":e===t.SOLIDUS?this.state="END_TAG_OPEN_STATE":c(e)?(this._createStartTagToken(),this._reconsumeInState("TAG_NAME_STATE")):e===t.QUESTION_MARK?this._reconsumeInState("BOGUS_COMMENT_STATE"):(this._emitChar("<"),this._reconsumeInState(a))},h.END_TAG_OPEN_STATE=function(e){c(e)?(this._createEndTagToken(),this._reconsumeInState("TAG_NAME_STATE")):e===t.GREATER_THAN_SIGN?this.state=a:e===t.EOF?(this._reconsumeInState(a),this._emitChar("<"),this._emitChar("/")):this._reconsumeInState("BOGUS_COMMENT_STATE")},h.TAG_NAME_STATE=function(e){i(e)?this.state="BEFORE_ATTRIBUTE_NAME_STATE":e===t.SOLIDUS?this.state="SELF_CLOSING_START_TAG_STATE":e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):l(e)?this.currentToken.tagName+=m(e):e===t.NULL?this.currentToken.tagName+=yu.REPLACEMENT_CHARACTER:e===t.EOF?this._reconsumeInState(a):this.currentToken.tagName+=p(e)},h.RCDATA_LESS_THAN_SIGN_STATE=function(e){e===t.SOLIDUS?(this.tempBuff=[],this.state="RCDATA_END_TAG_OPEN_STATE"):(this._emitChar("<"),this._reconsumeInState("RCDATA_STATE"))},h.RCDATA_END_TAG_OPEN_STATE=function(e){c(e)?(this._createEndTagToken(),this._reconsumeInState("RCDATA_END_TAG_NAME_STATE")):(this._emitChar("<"),this._emitChar("/"),this._reconsumeInState("RCDATA_STATE"))},h.RCDATA_END_TAG_NAME_STATE=function(e){if(l(e))this.currentToken.tagName+=m(e),this.tempBuff.push(e);else if(s(e))this.currentToken.tagName+=p(e),this.tempBuff.push(e);else{if(this._isAppropriateEndTagToken()){if(i(e))return void(this.state="BEFORE_ATTRIBUTE_NAME_STATE");if(e===t.SOLIDUS)return void(this.state="SELF_CLOSING_START_TAG_STATE");if(e===t.GREATER_THAN_SIGN)return this.state=a,void this._emitCurrentToken()}this._emitChar("<"),this._emitChar("/"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState("RCDATA_STATE")}},h.RAWTEXT_LESS_THAN_SIGN_STATE=function(e){e===t.SOLIDUS?(this.tempBuff=[],this.state="RAWTEXT_END_TAG_OPEN_STATE"):(this._emitChar("<"),this._reconsumeInState("RAWTEXT_STATE"))},h.RAWTEXT_END_TAG_OPEN_STATE=function(e){c(e)?(this._createEndTagToken(),this._reconsumeInState("RAWTEXT_END_TAG_NAME_STATE")):(this._emitChar("<"),this._emitChar("/"),this._reconsumeInState("RAWTEXT_STATE"))},h.RAWTEXT_END_TAG_NAME_STATE=function(e){if(l(e))this.currentToken.tagName+=m(e),this.tempBuff.push(e);else if(s(e))this.currentToken.tagName+=p(e),this.tempBuff.push(e);else{if(this._isAppropriateEndTagToken()){if(i(e))return void(this.state="BEFORE_ATTRIBUTE_NAME_STATE");if(e===t.SOLIDUS)return void(this.state="SELF_CLOSING_START_TAG_STATE");if(e===t.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=a)}this._emitChar("<"),this._emitChar("/"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState("RAWTEXT_STATE")}},h.SCRIPT_DATA_LESS_THAN_SIGN_STATE=function(e){e===t.SOLIDUS?(this.tempBuff=[],this.state="SCRIPT_DATA_END_TAG_OPEN_STATE"):e===t.EXCLAMATION_MARK?(this.state="SCRIPT_DATA_ESCAPE_START_STATE",this._emitChar("<"),this._emitChar("!")):(this._emitChar("<"),this._reconsumeInState("SCRIPT_DATA_STATE"))},h.SCRIPT_DATA_END_TAG_OPEN_STATE=function(e){c(e)?(this._createEndTagToken(),this._reconsumeInState("SCRIPT_DATA_END_TAG_NAME_STATE")):(this._emitChar("<"),this._emitChar("/"),this._reconsumeInState("SCRIPT_DATA_STATE"))},h.SCRIPT_DATA_END_TAG_NAME_STATE=function(e){if(l(e))this.currentToken.tagName+=m(e),this.tempBuff.push(e);else if(s(e))this.currentToken.tagName+=p(e),this.tempBuff.push(e);else{if(this._isAppropriateEndTagToken()){if(i(e))return void(this.state="BEFORE_ATTRIBUTE_NAME_STATE");if(e===t.SOLIDUS)return void(this.state="SELF_CLOSING_START_TAG_STATE");if(e===t.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=a)}this._emitChar("<"),this._emitChar("/"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState("SCRIPT_DATA_STATE")}},h.SCRIPT_DATA_ESCAPE_START_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_ESCAPE_START_DASH_STATE",this._emitChar("-")):this._reconsumeInState("SCRIPT_DATA_STATE")},h.SCRIPT_DATA_ESCAPE_START_DASH_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",this._emitChar("-")):this._reconsumeInState("SCRIPT_DATA_STATE")},h.SCRIPT_DATA_ESCAPED_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_ESCAPED_DASH_STATE",this._emitChar("-")):e===t.LESS_THAN_SIGN?this.state="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE":e===t.NULL?this._emitChar(yu.REPLACEMENT_CHARACTER):e===t.EOF?this._reconsumeInState(a):this._emitCodePoint(e)},h.SCRIPT_DATA_ESCAPED_DASH_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",this._emitChar("-")):e===t.LESS_THAN_SIGN?this.state="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE":e===t.NULL?(this.state="SCRIPT_DATA_ESCAPED_STATE",this._emitChar(yu.REPLACEMENT_CHARACTER)):e===t.EOF?this._reconsumeInState(a):(this.state="SCRIPT_DATA_ESCAPED_STATE",this._emitCodePoint(e))},h.SCRIPT_DATA_ESCAPED_DASH_DASH_STATE=function(e){e===t.HYPHEN_MINUS?this._emitChar("-"):e===t.LESS_THAN_SIGN?this.state="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE":e===t.GREATER_THAN_SIGN?(this.state="SCRIPT_DATA_STATE",this._emitChar(">")):e===t.NULL?(this.state="SCRIPT_DATA_ESCAPED_STATE",this._emitChar(yu.REPLACEMENT_CHARACTER)):e===t.EOF?this._reconsumeInState(a):(this.state="SCRIPT_DATA_ESCAPED_STATE",this._emitCodePoint(e))},h.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE=function(e){e===t.SOLIDUS?(this.tempBuff=[],this.state="SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE"):c(e)?(this.tempBuff=[],this._emitChar("<"),this._reconsumeInState("SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE")):(this._emitChar("<"),this._reconsumeInState("SCRIPT_DATA_ESCAPED_STATE"))},h.SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE=function(e){c(e)?(this._createEndTagToken(),this._reconsumeInState("SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE")):(this._emitChar("<"),this._emitChar("/"),this._reconsumeInState("SCRIPT_DATA_ESCAPED_STATE"))},h.SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE=function(e){if(l(e))this.currentToken.tagName+=m(e),this.tempBuff.push(e);else if(s(e))this.currentToken.tagName+=p(e),this.tempBuff.push(e);else{if(this._isAppropriateEndTagToken()){if(i(e))return void(this.state="BEFORE_ATTRIBUTE_NAME_STATE");if(e===t.SOLIDUS)return void(this.state="SELF_CLOSING_START_TAG_STATE");if(e===t.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=a)}this._emitChar("<"),this._emitChar("/"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState("SCRIPT_DATA_ESCAPED_STATE")}},h.SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE=function(e){i(e)||e===t.SOLIDUS||e===t.GREATER_THAN_SIGN?(this.state=this.isTempBufferEqualToScriptString()?"SCRIPT_DATA_DOUBLE_ESCAPED_STATE":"SCRIPT_DATA_ESCAPED_STATE",this._emitCodePoint(e)):l(e)?(this.tempBuff.push(d(e)),this._emitCodePoint(e)):s(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState("SCRIPT_DATA_ESCAPED_STATE")},h.SCRIPT_DATA_DOUBLE_ESCAPED_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE",this._emitChar("-")):e===t.LESS_THAN_SIGN?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",this._emitChar("<")):e===t.NULL?this._emitChar(yu.REPLACEMENT_CHARACTER):e===t.EOF?this._reconsumeInState(a):this._emitCodePoint(e)},h.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE=function(e){e===t.HYPHEN_MINUS?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE",this._emitChar("-")):e===t.LESS_THAN_SIGN?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",this._emitChar("<")):e===t.NULL?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",this._emitChar(yu.REPLACEMENT_CHARACTER)):e===t.EOF?this._reconsumeInState(a):(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",this._emitCodePoint(e))},h.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE=function(e){e===t.HYPHEN_MINUS?this._emitChar("-"):e===t.LESS_THAN_SIGN?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",this._emitChar("<")):e===t.GREATER_THAN_SIGN?(this.state="SCRIPT_DATA_STATE",this._emitChar(">")):e===t.NULL?(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",this._emitChar(yu.REPLACEMENT_CHARACTER)):e===t.EOF?this._reconsumeInState(a):(this.state="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",this._emitCodePoint(e))},h.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE=function(e){e===t.SOLIDUS?(this.tempBuff=[],this.state="SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE",this._emitChar("/")):this._reconsumeInState("SCRIPT_DATA_DOUBLE_ESCAPED_STATE")},h.SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE=function(e){i(e)||e===t.SOLIDUS||e===t.GREATER_THAN_SIGN?(this.state=this.isTempBufferEqualToScriptString()?"SCRIPT_DATA_ESCAPED_STATE":"SCRIPT_DATA_DOUBLE_ESCAPED_STATE",this._emitCodePoint(e)):l(e)?(this.tempBuff.push(d(e)),this._emitCodePoint(e)):s(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState("SCRIPT_DATA_DOUBLE_ESCAPED_STATE")},h.BEFORE_ATTRIBUTE_NAME_STATE=function(e){i(e)||(e===t.SOLIDUS||e===t.GREATER_THAN_SIGN||e===t.EOF?this._reconsumeInState("AFTER_ATTRIBUTE_NAME_STATE"):e===t.EQUALS_SIGN?(this._createAttr("="),this.state="ATTRIBUTE_NAME_STATE"):(this._createAttr(""),this._reconsumeInState("ATTRIBUTE_NAME_STATE")))},h.ATTRIBUTE_NAME_STATE=function(e){i(e)||e===t.SOLIDUS||e===t.GREATER_THAN_SIGN||e===t.EOF?(this._leaveAttrName("AFTER_ATTRIBUTE_NAME_STATE"),this._unconsume()):e===t.EQUALS_SIGN?this._leaveAttrName("BEFORE_ATTRIBUTE_VALUE_STATE"):l(e)?this.currentAttr.name+=m(e):e===t.QUOTATION_MARK||e===t.APOSTROPHE||e===t.LESS_THAN_SIGN?this.currentAttr.name+=p(e):e===t.NULL?this.currentAttr.name+=yu.REPLACEMENT_CHARACTER:this.currentAttr.name+=p(e)},h.AFTER_ATTRIBUTE_NAME_STATE=function(e){i(e)||(e===t.SOLIDUS?this.state="SELF_CLOSING_START_TAG_STATE":e===t.EQUALS_SIGN?this.state="BEFORE_ATTRIBUTE_VALUE_STATE":e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):e===t.EOF?this._reconsumeInState(a):(this._createAttr(""),this._reconsumeInState("ATTRIBUTE_NAME_STATE")))},h.BEFORE_ATTRIBUTE_VALUE_STATE=function(e){i(e)||(e===t.QUOTATION_MARK?this.state="ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE":e===t.APOSTROPHE?this.state="ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE":this._reconsumeInState("ATTRIBUTE_VALUE_UNQUOTED_STATE"))},h.ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE=function(e){e===t.QUOTATION_MARK?this.state="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE":e===t.AMPERSAND?(this.additionalAllowedCp=t.QUOTATION_MARK,this.returnState=this.state,this.state="CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE"):e===t.NULL?this.currentAttr.value+=yu.REPLACEMENT_CHARACTER:e===t.EOF?this._reconsumeInState(a):this.currentAttr.value+=p(e)},h.ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE=function(e){e===t.APOSTROPHE?this.state="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE":e===t.AMPERSAND?(this.additionalAllowedCp=t.APOSTROPHE,this.returnState=this.state,this.state="CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE"):e===t.NULL?this.currentAttr.value+=yu.REPLACEMENT_CHARACTER:e===t.EOF?this._reconsumeInState(a):this.currentAttr.value+=p(e)},h.ATTRIBUTE_VALUE_UNQUOTED_STATE=function(e){i(e)?this._leaveAttrValue("BEFORE_ATTRIBUTE_NAME_STATE"):e===t.AMPERSAND?(this.additionalAllowedCp=t.GREATER_THAN_SIGN,this.returnState=this.state,this.state="CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE"):e===t.GREATER_THAN_SIGN?(this._leaveAttrValue(a),this._emitCurrentToken()):e===t.NULL?this.currentAttr.value+=yu.REPLACEMENT_CHARACTER:e===t.QUOTATION_MARK||e===t.APOSTROPHE||e===t.LESS_THAN_SIGN||e===t.EQUALS_SIGN||e===t.GRAVE_ACCENT?this.currentAttr.value+=p(e):e===t.EOF?this._reconsumeInState(a):this.currentAttr.value+=p(e)},h.CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE=function(e){var t=this._consumeCharacterReference(e,!0);if(!this._ensureHibernation()){if(t)for(var n=0;n<t.length;n++)this.currentAttr.value+=p(t[n]);else this.currentAttr.value+="&";this.state=this.returnState}},h.AFTER_ATTRIBUTE_VALUE_QUOTED_STATE=function(e){i(e)?this._leaveAttrValue("BEFORE_ATTRIBUTE_NAME_STATE"):e===t.SOLIDUS?this._leaveAttrValue("SELF_CLOSING_START_TAG_STATE"):e===t.GREATER_THAN_SIGN?(this._leaveAttrValue(a),this._emitCurrentToken()):e===t.EOF?this._reconsumeInState(a):this._reconsumeInState("BEFORE_ATTRIBUTE_NAME_STATE")},h.SELF_CLOSING_START_TAG_STATE=function(e){e===t.GREATER_THAN_SIGN?(this.currentToken.selfClosing=!0,this.state=a,this._emitCurrentToken()):e===t.EOF?this._reconsumeInState(a):this._reconsumeInState("BEFORE_ATTRIBUTE_NAME_STATE")},h.BOGUS_COMMENT_STATE=function(){this._createCommentToken(),this._reconsumeInState("BOGUS_COMMENT_STATE_CONTINUATION")},h.BOGUS_COMMENT_STATE_CONTINUATION=function(e){for(;;){if(e===t.GREATER_THAN_SIGN){this.state=a;break}if(e===t.EOF){this._reconsumeInState(a);break}if(this.currentToken.data+=e===t.NULL?yu.REPLACEMENT_CHARACTER:p(e),this._hibernationSnapshot(),e=this._consume(),this._ensureHibernation())return}this._emitCurrentToken()},h.MARKUP_DECLARATION_OPEN_STATE=function(e){var t=this._consumeSubsequentIfMatch(n.DASH_DASH_STRING,e,!0),r=!t&&this._consumeSubsequentIfMatch(n.DOCTYPE_STRING,e,!1),a=!t&&!r&&this.allowCDATA&&this._consumeSubsequentIfMatch(n.CDATA_START_STRING,e,!0);this._ensureHibernation()||(t?(this._createCommentToken(),this.state="COMMENT_START_STATE"):r?this.state="DOCTYPE_STATE":a?this.state="CDATA_SECTION_STATE":this._reconsumeInState("BOGUS_COMMENT_STATE"))},h.COMMENT_START_STATE=function(e){e===t.HYPHEN_MINUS?this.state="COMMENT_START_DASH_STATE":e===t.NULL?(this.currentToken.data+=yu.REPLACEMENT_CHARACTER,this.state="COMMENT_STATE"):e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):e===t.EOF?(this._emitCurrentToken(),this._reconsumeInState(a)):(this.currentToken.data+=p(e),this.state="COMMENT_STATE")},h.COMMENT_START_DASH_STATE=function(e){e===t.HYPHEN_MINUS?this.state="COMMENT_END_STATE":e===t.NULL?(this.currentToken.data+="-",this.currentToken.data+=yu.REPLACEMENT_CHARACTER,this.state="COMMENT_STATE"):e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):e===t.EOF?(this._emitCurrentToken(),this._reconsumeInState(a)):(this.currentToken.data+="-",this.currentToken.data+=p(e),this.state="COMMENT_STATE")},h.COMMENT_STATE=function(e){e===t.HYPHEN_MINUS?this.state="COMMENT_END_DASH_STATE":e===t.NULL?this.currentToken.data+=yu.REPLACEMENT_CHARACTER:e===t.EOF?(this._emitCurrentToken(),this._reconsumeInState(a)):this.currentToken.data+=p(e)},h.COMMENT_END_DASH_STATE=function(e){e===t.HYPHEN_MINUS?this.state="COMMENT_END_STATE":e===t.NULL?(this.currentToken.data+="-",this.currentToken.data+=yu.REPLACEMENT_CHARACTER,this.state="COMMENT_STATE"):e===t.EOF?(this._emitCurrentToken(),this._reconsumeInState(a)):(this.currentToken.data+="-",this.currentToken.data+=p(e),this.state="COMMENT_STATE")},h.COMMENT_END_STATE=function(e){e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):e===t.EXCLAMATION_MARK?this.state="COMMENT_END_BANG_STATE":e===t.HYPHEN_MINUS?this.currentToken.data+="-":e===t.NULL?(this.currentToken.data+="--",this.currentToken.data+=yu.REPLACEMENT_CHARACTER,this.state="COMMENT_STATE"):e===t.EOF?(this._reconsumeInState(a),this._emitCurrentToken()):(this.currentToken.data+="--",this.currentToken.data+=p(e),this.state="COMMENT_STATE")},h.COMMENT_END_BANG_STATE=function(e){e===t.HYPHEN_MINUS?(this.currentToken.data+="--!",this.state="COMMENT_END_DASH_STATE"):e===t.GREATER_THAN_SIGN?(this.state=a,this._emitCurrentToken()):e===t.NULL?(this.currentToken.data+="--!",this.currentToken.data+=yu.REPLACEMENT_CHARACTER,this.state="COMMENT_STATE"):e===t.EOF?(this._emitCurrentToken(),this._reconsumeInState(a)):(this.currentToken.data+="--!",this.currentToken.data+=p(e),this.state="COMMENT_STATE")},h.DOCTYPE_STATE=function(e){i(e)||(e===t.GREATER_THAN_SIGN?(this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=a):e===t.EOF?(this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):(this._createDoctypeToken(""),this._reconsumeInState("DOCTYPE_NAME_STATE")))},h.DOCTYPE_NAME_STATE=function(e){i(e)||e===t.GREATER_THAN_SIGN||e===t.EOF?this._reconsumeInState("AFTER_DOCTYPE_NAME_STATE"):l(e)?this.currentToken.name+=m(e):e===t.NULL?this.currentToken.name+=yu.REPLACEMENT_CHARACTER:this.currentToken.name+=p(e)},h.AFTER_DOCTYPE_NAME_STATE=function(e){if(!i(e))if(e===t.GREATER_THAN_SIGN)this.state=a,this._emitCurrentToken();else{var r=this._consumeSubsequentIfMatch(n.PUBLIC_STRING,e,!1),o=!r&&this._consumeSubsequentIfMatch(n.SYSTEM_STRING,e,!1);this._ensureHibernation()||(r?this.state="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE":o?this.state="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE":(this.currentToken.forceQuirks=!0,this.state="BOGUS_DOCTYPE_STATE"))}},h.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE=function(e){i(e)||(e===t.QUOTATION_MARK?(this.currentToken.publicId="",this.state="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE"):e===t.APOSTROPHE?(this.currentToken.publicId="",this.state="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE"):(this.currentToken.forceQuirks=!0,this._reconsumeInState("BOGUS_DOCTYPE_STATE")))},h.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE=function(e){e===t.QUOTATION_MARK?this.state="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE":e===t.NULL?this.currentToken.publicId+=yu.REPLACEMENT_CHARACTER:e===t.GREATER_THAN_SIGN?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=a):e===t.EOF?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):this.currentToken.publicId+=p(e)},h.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE=function(e){e===t.APOSTROPHE?this.state="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE":e===t.NULL?this.currentToken.publicId+=yu.REPLACEMENT_CHARACTER:e===t.GREATER_THAN_SIGN?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=a):e===t.EOF?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):this.currentToken.publicId+=p(e)},h.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE=function(e){i(e)||(e===t.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=a):e===t.QUOTATION_MARK?(this.currentToken.systemId="",this.state="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE"):e===t.APOSTROPHE?(this.currentToken.systemId="",this.state="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE"):(this.currentToken.forceQuirks=!0,this._reconsumeInState("BOGUS_DOCTYPE_STATE")))},h.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE=function(e){i(e)||(e===t.QUOTATION_MARK?(this.currentToken.systemId="",this.state="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE"):e===t.APOSTROPHE?(this.currentToken.systemId="",this.state="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE"):(this.currentToken.forceQuirks=!0,this._reconsumeInState("BOGUS_DOCTYPE_STATE")))},h.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE=function(e){e===t.QUOTATION_MARK?this.state="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE":e===t.GREATER_THAN_SIGN?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=a):e===t.NULL?this.currentToken.systemId+=yu.REPLACEMENT_CHARACTER:e===t.EOF?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):this.currentToken.systemId+=p(e)},h.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE=function(e){e===t.APOSTROPHE?this.state="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE":e===t.GREATER_THAN_SIGN?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=a):e===t.NULL?this.currentToken.systemId+=yu.REPLACEMENT_CHARACTER:e===t.EOF?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):this.currentToken.systemId+=p(e)},h.AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE=function(e){i(e)||(e===t.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=a):e===t.EOF?(this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._reconsumeInState(a)):this.state="BOGUS_DOCTYPE_STATE")},h.BOGUS_DOCTYPE_STATE=function(e){e===t.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=a):e===t.EOF&&(this._emitCurrentToken(),this._reconsumeInState(a))},h.CDATA_SECTION_STATE=function(e){for(;;){if(e===t.EOF){this._reconsumeInState(a);break}var r=this._consumeSubsequentIfMatch(n.CDATA_END_STRING,e,!0);if(this._ensureHibernation())break;if(r){this.state=a;break}if(this._emitCodePoint(e),this._hibernationSnapshot(),e=this._consume(),this._ensureHibernation())break}}}),wu=f(function(e,t){var n=t.NAMESPACES={HTML:"http://www.w3.org/1999/xhtml",MATHML:"http://www.w3.org/1998/Math/MathML",SVG:"http://www.w3.org/2000/svg",XLINK:"http://www.w3.org/1999/xlink",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"};t.ATTRS={TYPE:"type",ACTION:"action",ENCODING:"encoding",PROMPT:"prompt",NAME:"name",COLOR:"color",FACE:"face",SIZE:"size"};var r=t.TAG_NAMES={A:"a",ADDRESS:"address",ANNOTATION_XML:"annotation-xml",APPLET:"applet",AREA:"area",ARTICLE:"article",ASIDE:"aside",B:"b",BASE:"base",BASEFONT:"basefont",BGSOUND:"bgsound",BIG:"big",BLOCKQUOTE:"blockquote",BODY:"body",BR:"br",BUTTON:"button",CAPTION:"caption",CENTER:"center",CODE:"code",COL:"col",COLGROUP:"colgroup",DD:"dd",DESC:"desc",DETAILS:"details",DIALOG:"dialog",DIR:"dir",DIV:"div",DL:"dl",DT:"dt",EM:"em",EMBED:"embed",FIELDSET:"fieldset",FIGCAPTION:"figcaption",FIGURE:"figure",FONT:"font",FOOTER:"footer",FOREIGN_OBJECT:"foreignObject",FORM:"form",FRAME:"frame",FRAMESET:"frameset",H1:"h1",H2:"h2",H3:"h3",H4:"h4",H5:"h5",H6:"h6",HEAD:"head",HEADER:"header",HGROUP:"hgroup",HR:"hr",HTML:"html",I:"i",IMG:"img",IMAGE:"image",INPUT:"input",IFRAME:"iframe",KEYGEN:"keygen",LABEL:"label",LI:"li",LINK:"link",LISTING:"listing",MAIN:"main",MALIGNMARK:"malignmark",MARQUEE:"marquee",MATH:"math",MENU:"menu",MENUITEM:"menuitem",META:"meta",MGLYPH:"mglyph",MI:"mi",MO:"mo",MN:"mn",MS:"ms",MTEXT:"mtext",NAV:"nav",NOBR:"nobr",NOFRAMES:"noframes",NOEMBED:"noembed",NOSCRIPT:"noscript",OBJECT:"object",OL:"ol",OPTGROUP:"optgroup",OPTION:"option",P:"p",PARAM:"param",PLAINTEXT:"plaintext",PRE:"pre",RB:"rb",RP:"rp",RT:"rt",RTC:"rtc",RUBY:"ruby",S:"s",SCRIPT:"script",SECTION:"section",SELECT:"select",SOURCE:"source",SMALL:"small",SPAN:"span",STRIKE:"strike",STRONG:"strong",STYLE:"style",SUB:"sub",SUMMARY:"summary",SUP:"sup",TABLE:"table",TBODY:"tbody",TEMPLATE:"template",TEXTAREA:"textarea",TFOOT:"tfoot",TD:"td",TH:"th",THEAD:"thead",TITLE:"title",TR:"tr",TRACK:"track",TT:"tt",U:"u",UL:"ul",SVG:"svg",VAR:"var",WBR:"wbr",XMP:"xmp"},a=t.SPECIAL_ELEMENTS={};a[n.HTML]={},a[n.HTML][r.ADDRESS]=!0,a[n.HTML][r.APPLET]=!0,a[n.HTML][r.AREA]=!0,a[n.HTML][r.ARTICLE]=!0,a[n.HTML][r.ASIDE]=!0,a[n.HTML][r.BASE]=!0,a[n.HTML][r.BASEFONT]=!0,a[n.HTML][r.BGSOUND]=!0,a[n.HTML][r.BLOCKQUOTE]=!0,a[n.HTML][r.BODY]=!0,a[n.HTML][r.BR]=!0,a[n.HTML][r.BUTTON]=!0,a[n.HTML][r.CAPTION]=!0,a[n.HTML][r.CENTER]=!0,a[n.HTML][r.COL]=!0,a[n.HTML][r.COLGROUP]=!0,a[n.HTML][r.DD]=!0,a[n.HTML][r.DETAILS]=!0,a[n.HTML][r.DIR]=!0,a[n.HTML][r.DIV]=!0,a[n.HTML][r.DL]=!0,a[n.HTML][r.DT]=!0,a[n.HTML][r.EMBED]=!0,a[n.HTML][r.FIELDSET]=!0,a[n.HTML][r.FIGCAPTION]=!0,a[n.HTML][r.FIGURE]=!0,a[n.HTML][r.FOOTER]=!0,a[n.HTML][r.FORM]=!0,a[n.HTML][r.FRAME]=!0,a[n.HTML][r.FRAMESET]=!0,a[n.HTML][r.H1]=!0,a[n.HTML][r.H2]=!0,a[n.HTML][r.H3]=!0,a[n.HTML][r.H4]=!0,a[n.HTML][r.H5]=!0,a[n.HTML][r.H6]=!0,a[n.HTML][r.HEAD]=!0,a[n.HTML][r.HEADER]=!0,a[n.HTML][r.HGROUP]=!0,a[n.HTML][r.HR]=!0,a[n.HTML][r.HTML]=!0,a[n.HTML][r.IFRAME]=!0,a[n.HTML][r.IMG]=!0,a[n.HTML][r.INPUT]=!0,a[n.HTML][r.LI]=!0,a[n.HTML][r.LINK]=!0,a[n.HTML][r.LISTING]=!0,a[n.HTML][r.MAIN]=!0,a[n.HTML][r.MARQUEE]=!0,a[n.HTML][r.MENU]=!0,a[n.HTML][r.META]=!0,a[n.HTML][r.NAV]=!0,a[n.HTML][r.NOEMBED]=!0,a[n.HTML][r.NOFRAMES]=!0,a[n.HTML][r.NOSCRIPT]=!0,a[n.HTML][r.OBJECT]=!0,a[n.HTML][r.OL]=!0,a[n.HTML][r.P]=!0,a[n.HTML][r.PARAM]=!0,a[n.HTML][r.PLAINTEXT]=!0,a[n.HTML][r.PRE]=!0,a[n.HTML][r.SCRIPT]=!0,a[n.HTML][r.SECTION]=!0,a[n.HTML][r.SELECT]=!0,a[n.HTML][r.SOURCE]=!0,a[n.HTML][r.STYLE]=!0,a[n.HTML][r.SUMMARY]=!0,a[n.HTML][r.TABLE]=!0,a[n.HTML][r.TBODY]=!0,a[n.HTML][r.TD]=!0,a[n.HTML][r.TEMPLATE]=!0,a[n.HTML][r.TEXTAREA]=!0,a[n.HTML][r.TFOOT]=!0,a[n.HTML][r.TH]=!0,a[n.HTML][r.THEAD]=!0,a[n.HTML][r.TITLE]=!0,a[n.HTML][r.TR]=!0,a[n.HTML][r.TRACK]=!0,a[n.HTML][r.UL]=!0,a[n.HTML][r.WBR]=!0,a[n.HTML][r.XMP]=!0,a[n.MATHML]={},a[n.MATHML][r.MI]=!0,a[n.MATHML][r.MO]=!0,a[n.MATHML][r.MN]=!0,a[n.MATHML][r.MS]=!0,a[n.MATHML][r.MTEXT]=!0,a[n.MATHML][r.ANNOTATION_XML]=!0,a[n.SVG]={},a[n.SVG][r.TITLE]=!0,a[n.SVG][r.FOREIGN_OBJECT]=!0,a[n.SVG][r.DESC]=!0}),Ru=(wu.NAMESPACES,wu.ATTRS,wu.TAG_NAMES,wu.SPECIAL_ELEMENTS,f(function(e){var t=wu.TAG_NAMES,n=wu.NAMESPACES;function r(e){switch(e.length){case 1:return e===t.P;case 2:return e===t.RB||e===t.RP||e===t.RT||e===t.DD||e===t.DT||e===t.LI;case 3:return e===t.RTC;case 6:return e===t.OPTION;case 8:return e===t.OPTGROUP||e===t.MENUITEM}return!1}function a(e,r){switch(e.length){case 2:if(e===t.TD||e===t.TH)return r===n.HTML;if(e===t.MI||e===t.MO||e===t.MN||e===t.MS)return r===n.MATHML;break;case 4:if(e===t.HTML)return r===n.HTML;if(e===t.DESC)return r===n.SVG;break;case 5:if(e===t.TABLE)return r===n.HTML;if(e===t.MTEXT)return r===n.MATHML;if(e===t.TITLE)return r===n.SVG;break;case 6:return(e===t.APPLET||e===t.OBJECT)&&r===n.HTML;case 7:return(e===t.CAPTION||e===t.MARQUEE)&&r===n.HTML;case 8:return e===t.TEMPLATE&&r===n.HTML;case 13:return e===t.FOREIGN_OBJECT&&r===n.SVG;case 14:return e===t.ANNOTATION_XML&&r===n.MATHML}return!1}var i=e.exports=function(e,t){this.stackTop=-1,this.items=[],this.current=e,this.currentTagName=null,this.currentTmplContent=null,this.tmplCount=0,this.treeAdapter=t};i.prototype._indexOf=function(e){for(var t=-1,n=this.stackTop;n>=0;n--)if(this.items[n]===e){t=n;break}return t},i.prototype._isInTemplate=function(){return this.currentTagName===t.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===n.HTML},i.prototype._updateCurrentElement=function(){this.current=this.items[this.stackTop],this.currentTagName=this.current&&this.treeAdapter.getTagName(this.current),this.currentTmplContent=this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):null},i.prototype.push=function(e){this.items[++this.stackTop]=e,this._updateCurrentElement(),this._isInTemplate()&&this.tmplCount++},i.prototype.pop=function(){this.stackTop--,this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this._updateCurrentElement()},i.prototype.replace=function(e,t){var n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&this._updateCurrentElement()},i.prototype.insertAfter=function(e,t){var n=this._indexOf(e)+1;this.items.splice(n,0,t),n===++this.stackTop&&this._updateCurrentElement()},i.prototype.popUntilTagNamePopped=function(e){for(;this.stackTop>-1;){var t=this.currentTagName,r=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),t===e&&r===n.HTML)break}},i.prototype.popUntilElementPopped=function(e){for(;this.stackTop>-1;){var t=this.current;if(this.pop(),t===e)break}},i.prototype.popUntilNumberedHeaderPopped=function(){for(;this.stackTop>-1;){var e=this.currentTagName,r=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===t.H1||e===t.H2||e===t.H3||e===t.H4||e===t.H5||e===t.H6&&r===n.HTML)break}},i.prototype.popUntilTableCellPopped=function(){for(;this.stackTop>-1;){var e=this.currentTagName,r=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===t.TD||e===t.TH&&r===n.HTML)break}},i.prototype.popAllUpToHtmlElement=function(){this.stackTop=0,this._updateCurrentElement()},i.prototype.clearBackToTableContext=function(){for(;this.currentTagName!==t.TABLE&&this.currentTagName!==t.TEMPLATE&&this.currentTagName!==t.HTML||this.treeAdapter.getNamespaceURI(this.current)!==n.HTML;)this.pop()},i.prototype.clearBackToTableBodyContext=function(){for(;this.currentTagName!==t.TBODY&&this.currentTagName!==t.TFOOT&&this.currentTagName!==t.THEAD&&this.currentTagName!==t.TEMPLATE&&this.currentTagName!==t.HTML||this.treeAdapter.getNamespaceURI(this.current)!==n.HTML;)this.pop()},i.prototype.clearBackToTableRowContext=function(){for(;this.currentTagName!==t.TR&&this.currentTagName!==t.TEMPLATE&&this.currentTagName!==t.HTML||this.treeAdapter.getNamespaceURI(this.current)!==n.HTML;)this.pop()},i.prototype.remove=function(e){for(var t=this.stackTop;t>=0;t--)if(this.items[t]===e){this.items.splice(t,1),this.stackTop--,this._updateCurrentElement();break}},i.prototype.tryPeekProperlyNestedBodyElement=function(){var e=this.items[1];return e&&this.treeAdapter.getTagName(e)===t.BODY?e:null},i.prototype.contains=function(e){return this._indexOf(e)>-1},i.prototype.getCommonAncestor=function(e){var t=this._indexOf(e);return--t>=0?this.items[t]:null},i.prototype.isRootHtmlElementCurrent=function(){return 0===this.stackTop&&this.currentTagName===t.HTML},i.prototype.hasInScope=function(e){for(var t=this.stackTop;t>=0;t--){var r=this.treeAdapter.getTagName(this.items[t]),i=this.treeAdapter.getNamespaceURI(this.items[t]);if(r===e&&i===n.HTML)return!0;if(a(r,i))return!1}return!0},i.prototype.hasNumberedHeaderInScope=function(){for(var e=this.stackTop;e>=0;e--){var r=this.treeAdapter.getTagName(this.items[e]),i=this.treeAdapter.getNamespaceURI(this.items[e]);if((r===t.H1||r===t.H2||r===t.H3||r===t.H4||r===t.H5||r===t.H6)&&i===n.HTML)return!0;if(a(r,i))return!1}return!0},i.prototype.hasInListItemScope=function(e){for(var r=this.stackTop;r>=0;r--){var i=this.treeAdapter.getTagName(this.items[r]),o=this.treeAdapter.getNamespaceURI(this.items[r]);if(i===e&&o===n.HTML)return!0;if((i===t.UL||i===t.OL)&&o===n.HTML||a(i,o))return!1}return!0},i.prototype.hasInButtonScope=function(e){for(var r=this.stackTop;r>=0;r--){var i=this.treeAdapter.getTagName(this.items[r]),o=this.treeAdapter.getNamespaceURI(this.items[r]);if(i===e&&o===n.HTML)return!0;if(i===t.BUTTON&&o===n.HTML||a(i,o))return!1}return!0},i.prototype.hasInTableScope=function(e){for(var r=this.stackTop;r>=0;r--){var a=this.treeAdapter.getTagName(this.items[r]);if(this.treeAdapter.getNamespaceURI(this.items[r])===n.HTML){if(a===e)return!0;if(a===t.TABLE||a===t.TEMPLATE||a===t.HTML)return!1}}return!0},i.prototype.hasTableBodyContextInTableScope=function(){for(var e=this.stackTop;e>=0;e--){var r=this.treeAdapter.getTagName(this.items[e]);if(this.treeAdapter.getNamespaceURI(this.items[e])===n.HTML){if(r===t.TBODY||r===t.THEAD||r===t.TFOOT)return!0;if(r===t.TABLE||r===t.HTML)return!1}}return!0},i.prototype.hasInSelectScope=function(e){for(var r=this.stackTop;r>=0;r--){var a=this.treeAdapter.getTagName(this.items[r]);if(this.treeAdapter.getNamespaceURI(this.items[r])===n.HTML){if(a===e)return!0;if(a!==t.OPTION&&a!==t.OPTGROUP)return!1}}return!0},i.prototype.generateImpliedEndTags=function(){for(;r(this.currentTagName);)this.pop()},i.prototype.generateImpliedEndTagsWithExclusion=function(e){for(;r(this.currentTagName)&&this.currentTagName!==e;)this.pop()}})),Du=f(function(e){var t=e.exports=function(e){this.length=0,this.entries=[],this.treeAdapter=e,this.bookmark=null};t.MARKER_ENTRY="MARKER_ENTRY",t.ELEMENT_ENTRY="ELEMENT_ENTRY",t.prototype._getNoahArkConditionCandidates=function(e){var n=[];if(this.length>=3)for(var r=this.treeAdapter.getAttrList(e).length,a=this.treeAdapter.getTagName(e),i=this.treeAdapter.getNamespaceURI(e),o=this.length-1;o>=0;o--){var l=this.entries[o];if(l.type===t.MARKER_ENTRY)break;var s=l.element,c=this.treeAdapter.getAttrList(s);this.treeAdapter.getTagName(s)===a&&this.treeAdapter.getNamespaceURI(s)===i&&c.length===r&&n.push({idx:o,attrs:c})}return n.length<3?[]:n},t.prototype._ensureNoahArkCondition=function(e){var t=this._getNoahArkConditionCandidates(e),n=t.length;if(n){for(var r=this.treeAdapter.getAttrList(e),a=r.length,i={},o=0;o<a;o++){var l=r[o];i[l.name]=l.value}for(o=0;o<a;o++)for(var s=0;s<n;s++){var c=t[s].attrs[o];if(i[c.name]!==c.value&&(t.splice(s,1),n--),t.length<3)return}for(o=n-1;o>=2;o--)this.entries.splice(t[o].idx,1),this.length--}},t.prototype.insertMarker=function(){this.entries.push({type:t.MARKER_ENTRY}),this.length++},t.prototype.pushElement=function(e,n){this._ensureNoahArkCondition(e),this.entries.push({type:t.ELEMENT_ENTRY,element:e,token:n}),this.length++},t.prototype.insertElementAfterBookmark=function(e,n){for(var r=this.length-1;r>=0&&this.entries[r]!==this.bookmark;r--);this.entries.splice(r+1,0,{type:t.ELEMENT_ENTRY,element:e,token:n}),this.length++},t.prototype.removeEntry=function(e){for(var t=this.length-1;t>=0;t--)if(this.entries[t]===e){this.entries.splice(t,1),this.length--;break}},t.prototype.clearToLastMarker=function(){for(;this.length;){var e=this.entries.pop();if(this.length--,e.type===t.MARKER_ENTRY)break}},t.prototype.getElementEntryInScopeWithTagName=function(e){for(var n=this.length-1;n>=0;n--){var r=this.entries[n];if(r.type===t.MARKER_ENTRY)return null;if(this.treeAdapter.getTagName(r.element)===e)return r}return null},t.prototype.getElementEntry=function(e){for(var n=this.length-1;n>=0;n--){var r=this.entries[n];if(r.type===t.ELEMENT_ENTRY&&r.element===e)return r}return null}}),Iu=wu.TAG_NAMES;function ku(e,t,n){var r=e.__location;if(r&&(r.startTag||(r.startTag={line:r.line,col:r.col,startOffset:r.startOffset,endOffset:r.endOffset},r.attrs&&(r.startTag.attrs=r.attrs)),t.location)){var a=t.location,i=n.getTagName(e),o=t.type===xu.END_TAG_TOKEN&&i===t.tagName;o&&(r.endTag={line:a.line,col:a.col,startOffset:a.startOffset,endOffset:a.endOffset}),r.endOffset=o?a.endOffset:a.startOffset}}var Lu=function(e){var t=Object.getPrototypeOf(e),n=e.treeAdapter,r=null,a=null,i=null;e._bootstrap=function(o,l){t._bootstrap.call(this,o,l),r=null,a=null,i=null,e.openElements.pop=function(){ku(this.current,i,n),Ru.prototype.pop.call(this)},e.openElements.popAllUpToHtmlElement=function(){for(var e=this.stackTop;e>0;e--)ku(this.items[e],i,n);Ru.prototype.popAllUpToHtmlElement.call(this)},e.openElements.remove=function(e){ku(e,i,n),Ru.prototype.remove.call(this,e)}},e._processTokenInForeignContent=function(e){i=e,t._processTokenInForeignContent.call(this,e)},e._processToken=function(e){if(i=e,t._processToken.call(this,e),e.type===xu.END_TAG_TOKEN&&(e.tagName===Iu.HTML||e.tagName===Iu.BODY&&this.openElements.hasInScope(Iu.BODY)))for(var r=this.openElements.stackTop;r>=0;r--){var a=this.openElements.items[r];if(this.treeAdapter.getTagName(a)===e.tagName){ku(a,e,n);break}}},e._setDocumentType=function(e){t._setDocumentType.call(this,e);for(var n=this.treeAdapter.getChildNodes(this.document),r=n.length,a=0;a<r;a++){var i=n[a];if(this.treeAdapter.isDocumentTypeNode(i)){i.__location=e.location;break}}},e._attachElementToTree=function(e){e.__location=r||null,r=null,t._attachElementToTree.call(this,e)},e._appendElement=function(e,n){r=e.location,t._appendElement.call(this,e,n)},e._insertElement=function(e,n){r=e.location,t._insertElement.call(this,e,n)},e._insertTemplate=function(e){r=e.location,t._insertTemplate.call(this,e),this.treeAdapter.getTemplateContent(this.openElements.current).__location=null},e._insertFakeRootElement=function(){t._insertFakeRootElement.call(this),this.openElements.current.__location=null},e._appendCommentNode=function(e,n){t._appendCommentNode.call(this,e,n);var r=this.treeAdapter.getChildNodes(n);r[r.length-1].__location=e.location},e._findFosterParentingLocation=function(){return a=t._findFosterParentingLocation.call(this)},e._insertCharacters=function(e){t._insertCharacters.call(this,e);var n=this._shouldFosterParentOnInsertion(),r=n&&a.parent||this.openElements.currentTmplContent||this.openElements.current,i=this.treeAdapter.getChildNodes(r),o=i[n&&a.beforeElement?i.indexOf(a.beforeElement)-1:i.length-1];o.__location?o.__location.endOffset=e.location.endOffset:o.__location=e.location}},Pu=f(function(e,t){t.createDocument=function(){return{nodeName:"#document",quirksMode:!1,childNodes:[]}},t.createDocumentFragment=function(){return{nodeName:"#document-fragment",quirksMode:!1,childNodes:[]}},t.createElement=function(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},t.createCommentNode=function(e){return{nodeName:"#comment",data:e,parentNode:null}};var n=function(e){return{nodeName:"#text",value:e,parentNode:null}},r=t.appendChild=function(e,t){e.childNodes.push(t),t.parentNode=e},a=t.insertBefore=function(e,t,n){var r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e};t.setTemplateContent=function(e,t){e.content=t},t.getTemplateContent=function(e){return e.content},t.setDocumentType=function(e,t,n,a){for(var i=null,o=0;o<e.childNodes.length;o++)if("#documentType"===e.childNodes[o].nodeName){i=e.childNodes[o];break}i?(i.name=t,i.publicId=n,i.systemId=a):r(e,{nodeName:"#documentType",name:t,publicId:n,systemId:a})},t.setQuirksMode=function(e){e.quirksMode=!0},t.isQuirksMode=function(e){return e.quirksMode},t.detachNode=function(e){if(e.parentNode){var t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},t.insertText=function(e,t){if(e.childNodes.length){var a=e.childNodes[e.childNodes.length-1];if("#text"===a.nodeName)return void(a.value+=t)}r(e,n(t))},t.insertTextBefore=function(e,t,r){var i=e.childNodes[e.childNodes.indexOf(r)-1];i&&"#text"===i.nodeName?i.value+=t:a(e,n(t),r)},t.adoptAttributes=function(e,t){for(var n=[],r=0;r<e.attrs.length;r++)n.push(e.attrs[r].name);for(var a=0;a<t.length;a++)-1===n.indexOf(t[a].name)&&e.attrs.push(t[a])},t.getFirstChild=function(e){return e.childNodes[0]},t.getChildNodes=function(e){return e.childNodes},t.getParentNode=function(e){return e.parentNode},t.getAttrList=function(e){return e.attrs},t.getTagName=function(e){return e.tagName},t.getNamespaceURI=function(e){return e.namespaceURI},t.getTextNodeContent=function(e){return e.value},t.getCommentNodeContent=function(e){return e.data},t.getDocumentTypeNodeName=function(e){return e.name},t.getDocumentTypeNodePublicId=function(e){return e.publicId},t.getDocumentTypeNodeSystemId=function(e){return e.systemId},t.isTextNode=function(e){return"#text"===e.nodeName},t.isCommentNode=function(e){return"#comment"===e.nodeName},t.isDocumentTypeNode=function(e){return"#documentType"===e.nodeName},t.isElementNode=function(e){return!!e.tagName}}),Bu=(Pu.createDocument,Pu.createDocumentFragment,Pu.createElement,Pu.createCommentNode,Pu.appendChild,Pu.insertBefore,Pu.setTemplateContent,Pu.getTemplateContent,Pu.setDocumentType,Pu.setQuirksMode,Pu.isQuirksMode,Pu.detachNode,Pu.insertText,Pu.insertTextBefore,Pu.adoptAttributes,Pu.getFirstChild,Pu.getChildNodes,Pu.getParentNode,Pu.getAttrList,Pu.getTagName,Pu.getNamespaceURI,Pu.getTextNodeContent,Pu.getCommentNodeContent,Pu.getDocumentTypeNodeName,Pu.getDocumentTypeNodePublicId,Pu.getDocumentTypeNodeSystemId,Pu.isTextNode,Pu.isCommentNode,Pu.isDocumentTypeNode,Pu.isElementNode,["+//silmaril//dtd html pro v0r11 19970101//en","-//advasoft ltd//dtd html 3.0 aswedit + extensions//en","-//as//dtd html 3.0 aswedit + extensions//en","-//ietf//dtd html 2.0 level 1//en","-//ietf//dtd html 2.0 level 2//en","-//ietf//dtd html 2.0 strict level 1//en","-//ietf//dtd html 2.0 strict level 2//en","-//ietf//dtd html 2.0 strict//en","-//ietf//dtd html 2.0//en","-//ietf//dtd html 2.1e//en","-//ietf//dtd html 3.0//en","-//ietf//dtd html 3.0//en//","-//ietf//dtd html 3.2 final//en","-//ietf//dtd html 3.2//en","-//ietf//dtd html 3//en","-//ietf//dtd html level 0//en","-//ietf//dtd html level 0//en//2.0","-//ietf//dtd html level 1//en","-//ietf//dtd html level 1//en//2.0","-//ietf//dtd html level 2//en","-//ietf//dtd html level 2//en//2.0","-//ietf//dtd html level 3//en","-//ietf//dtd html level 3//en//3.0","-//ietf//dtd html strict level 0//en","-//ietf//dtd html strict level 0//en//2.0","-//ietf//dtd html strict level 1//en","-//ietf//dtd html strict level 1//en//2.0","-//ietf//dtd html strict level 2//en","-//ietf//dtd html strict level 2//en//2.0","-//ietf//dtd html strict level 3//en","-//ietf//dtd html strict level 3//en//3.0","-//ietf//dtd html strict//en","-//ietf//dtd html strict//en//2.0","-//ietf//dtd html strict//en//3.0","-//ietf//dtd html//en","-//ietf//dtd html//en//2.0","-//ietf//dtd html//en//3.0","-//metrius//dtd metrius presentational//en","-//microsoft//dtd internet explorer 2.0 html strict//en","-//microsoft//dtd internet explorer 2.0 html//en","-//microsoft//dtd internet explorer 2.0 tables//en","-//microsoft//dtd internet explorer 3.0 html strict//en","-//microsoft//dtd internet explorer 3.0 html//en","-//microsoft//dtd internet explorer 3.0 tables//en","-//netscape comm. corp.//dtd html//en","-//netscape comm. corp.//dtd strict html//en","-//o'reilly and associates//dtd html 2.0//en","-//o'reilly and associates//dtd html extended 1.0//en","-//spyglass//dtd html 2.0 extended//en","-//sq//dtd html 2.0 hotmetal + extensions//en","-//sun microsystems corp.//dtd hotjava html//en","-//sun microsystems corp.//dtd hotjava strict html//en","-//w3c//dtd html 3 1995-03-24//en","-//w3c//dtd html 3.2 draft//en","-//w3c//dtd html 3.2 final//en","-//w3c//dtd html 3.2//en","-//w3c//dtd html 3.2s draft//en","-//w3c//dtd html 4.0 frameset//en","-//w3c//dtd html 4.0 transitional//en","-//w3c//dtd html experimental 19960712//en","-//w3c//dtd html experimental 970421//en","-//w3c//dtd w3 html//en","-//w3o//dtd w3 html 3.0//en","-//w3o//dtd w3 html 3.0//en//","-//webtechs//dtd mozilla html 2.0//en","-//webtechs//dtd mozilla html//en"]),Fu=["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],Uu=["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"];function Hu(e){var t=-1!==e.indexOf('"')?"'":'"';return t+e+t}var Gu={isQuirks:function(e,t,n){if("html"!==e)return!0;if(n&&"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"===n.toLowerCase())return!0;if(null!==t){if(t=t.toLowerCase(),Uu.indexOf(t)>-1)return!0;var r=Bu;null===n&&(r=r.concat(Fu));for(var a=0;a<r.length;a++)if(0===t.indexOf(r[a]))return!0}return!1},serializeContent:function(e,t,n){var r="!DOCTYPE ";return e&&(r+=e),null!==t?r+=" PUBLIC "+Hu(t):null!==n&&(r+=" SYSTEM"),null!==n&&(r+=" "+Hu(n)),r}},qu=f(function(e,t){var n=wu.TAG_NAMES,r=wu.NAMESPACES,a=wu.ATTRS,i={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},o={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},l={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:r.XLINK},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:r.XLINK},"xlink:href":{prefix:"xlink",name:"href",namespace:r.XLINK},"xlink:role":{prefix:"xlink",name:"role",namespace:r.XLINK},"xlink:show":{prefix:"xlink",name:"show",namespace:r.XLINK},"xlink:title":{prefix:"xlink",name:"title",namespace:r.XLINK},"xlink:type":{prefix:"xlink",name:"type",namespace:r.XLINK},"xml:base":{prefix:"xml",name:"base",namespace:r.XML},"xml:lang":{prefix:"xml",name:"lang",namespace:r.XML},"xml:space":{prefix:"xml",name:"space",namespace:r.XML},xmlns:{prefix:"",name:"xmlns",namespace:r.XMLNS},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:r.XMLNS}},s=t.SVG_TAG_NAMES_ADJUSTMENT_MAP={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},c={};c[n.B]=!0,c[n.BIG]=!0,c[n.BLOCKQUOTE]=!0,c[n.BODY]=!0,c[n.BR]=!0,c[n.CENTER]=!0,c[n.CODE]=!0,c[n.DD]=!0,c[n.DIV]=!0,c[n.DL]=!0,c[n.DT]=!0,c[n.EM]=!0,c[n.EMBED]=!0,c[n.H1]=!0,c[n.H2]=!0,c[n.H3]=!0,c[n.H4]=!0,c[n.H5]=!0,c[n.H6]=!0,c[n.HEAD]=!0,c[n.HR]=!0,c[n.I]=!0,c[n.IMG]=!0,c[n.LI]=!0,c[n.LISTING]=!0,c[n.MENU]=!0,c[n.META]=!0,c[n.NOBR]=!0,c[n.OL]=!0,c[n.P]=!0,c[n.PRE]=!0,c[n.RUBY]=!0,c[n.S]=!0,c[n.SMALL]=!0,c[n.SPAN]=!0,c[n.STRONG]=!0,c[n.STRIKE]=!0,c[n.SUB]=!0,c[n.SUP]=!0,c[n.TABLE]=!0,c[n.TT]=!0,c[n.U]=!0,c[n.UL]=!0,c[n.VAR]=!0,t.causesExit=function(e){var t=e.tagName;return!!(t===n.FONT&&(null!==xu.getTokenAttr(e,a.COLOR)||null!==xu.getTokenAttr(e,a.SIZE)||null!==xu.getTokenAttr(e,a.FACE)))||c[t]},t.adjustTokenMathMLAttrs=function(e){for(var t=0;t<e.attrs.length;t++)if("definitionurl"===e.attrs[t].name){e.attrs[t].name="definitionURL";break}},t.adjustTokenSVGAttrs=function(e){for(var t=0;t<e.attrs.length;t++){var n=o[e.attrs[t].name];n&&(e.attrs[t].name=n)}},t.adjustTokenXMLAttrs=function(e){for(var t=0;t<e.attrs.length;t++){var n=l[e.attrs[t].name];n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace)}},t.adjustTokenSVGTagName=function(e){var t=s[e.tagName];t&&(e.tagName=t)},t.isIntegrationPoint=function(e,t,o,l){return!(l&&l!==r.HTML||!function(e,t,o){if(t===r.MATHML&&e===n.ANNOTATION_XML)for(var l=0;l<o.length;l++)if(o[l].name===a.ENCODING){var s=o[l].value.toLowerCase();return s===i.TEXT_HTML||s===i.APPLICATION_XML}return t===r.SVG&&(e===n.FOREIGN_OBJECT||e===n.DESC||e===n.TITLE)}(e,t,o))||!(l&&l!==r.MATHML||!function(e,t){return t===r.MATHML&&(e===n.MI||e===n.MO||e===n.MN||e===n.MS||e===n.MTEXT)}(e,t))}}),zu=(qu.SVG_TAG_NAMES_ADJUSTMENT_MAP,qu.causesExit,qu.adjustTokenMathMLAttrs,qu.adjustTokenSVGAttrs,qu.adjustTokenXMLAttrs,qu.adjustTokenSVGTagName,qu.isIntegrationPoint,f(function(e){var t=wu.TAG_NAMES,n=wu.NAMESPACES,r=wu.ATTRS,a={locationInfo:!1,treeAdapter:Pu},i="hidden",o=8,l=3,s="BEFORE_HTML_MODE",c="BEFORE_HEAD_MODE",u="IN_HEAD_MODE",d="AFTER_HEAD_MODE",p="IN_BODY_MODE",m="TEXT_MODE",g="IN_TABLE_MODE",h="IN_TABLE_TEXT_MODE",f="IN_CAPTION_MODE",_="IN_COLUMN_GROUP_MODE",E="IN_TABLE_BODY_MODE",T="IN_ROW_MODE",b="IN_CELL_MODE",v="IN_SELECT_MODE",A="IN_SELECT_IN_TABLE_MODE",S="IN_TEMPLATE_MODE",y="AFTER_BODY_MODE",N="IN_FRAMESET_MODE",C="AFTER_FRAMESET_MODE",O="AFTER_AFTER_BODY_MODE",M="AFTER_AFTER_FRAMESET_MODE",x={};x[t.TR]=T,x[t.TBODY]=x[t.THEAD]=x[t.TFOOT]=E,x[t.CAPTION]=f,x[t.COLGROUP]=_,x[t.TABLE]=g,x[t.BODY]=p,x[t.FRAMESET]=N;var w={};w[t.CAPTION]=w[t.COLGROUP]=w[t.TBODY]=w[t.TFOOT]=w[t.THEAD]=g,w[t.COL]=_,w[t.TR]=E,w[t.TD]=w[t.TH]=T;var R={INITIAL_MODE:{}};R.INITIAL_MODE[xu.CHARACTER_TOKEN]=R.INITIAL_MODE[xu.NULL_CHARACTER_TOKEN]=j,R.INITIAL_MODE[xu.WHITESPACE_CHARACTER_TOKEN]=H,R.INITIAL_MODE[xu.COMMENT_TOKEN]=G,R.INITIAL_MODE[xu.DOCTYPE_TOKEN]=function(e,t){e._setDocumentType(t),(t.forceQuirks||Gu.isQuirks(t.name,t.publicId,t.systemId))&&e.treeAdapter.setQuirksMode(e.document);e.insertionMode=s},R.INITIAL_MODE[xu.START_TAG_TOKEN]=R.INITIAL_MODE[xu.END_TAG_TOKEN]=R.INITIAL_MODE[xu.EOF_TOKEN]=j,R[s]={},R[s][xu.CHARACTER_TOKEN]=R[s][xu.NULL_CHARACTER_TOKEN]=V,R[s][xu.WHITESPACE_CHARACTER_TOKEN]=H,R[s][xu.COMMENT_TOKEN]=G,R[s][xu.DOCTYPE_TOKEN]=H,R[s][xu.START_TAG_TOKEN]=function(e,r){r.tagName===t.HTML?(e._insertElement(r,n.HTML),e.insertionMode=c):V(e,r)},R[s][xu.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r!==t.HTML&&r!==t.HEAD&&r!==t.BODY&&r!==t.BR||V(e,n)},R[s][xu.EOF_TOKEN]=V,R[c]={},R[c][xu.CHARACTER_TOKEN]=R[c][xu.NULL_CHARACTER_TOKEN]=$,R[c][xu.WHITESPACE_CHARACTER_TOKEN]=H,R[c][xu.COMMENT_TOKEN]=G,R[c][xu.DOCTYPE_TOKEN]=H,R[c][xu.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.HEAD?(e._insertElement(r,n.HTML),e.headElement=e.openElements.current,e.insertionMode=u):$(e,r)},R[c][xu.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r!==t.HEAD&&r!==t.BODY&&r!==t.HTML&&r!==t.BR||$(e,n)},R[c][xu.EOF_TOKEN]=$,R[u]={},R[u][xu.CHARACTER_TOKEN]=R[u][xu.NULL_CHARACTER_TOKEN]=Q,R[u][xu.WHITESPACE_CHARACTER_TOKEN]=z,R[u][xu.COMMENT_TOKEN]=G,R[u][xu.DOCTYPE_TOKEN]=H,R[u][xu.START_TAG_TOKEN]=W,R[u][xu.END_TAG_TOKEN]=Y,R[u][xu.EOF_TOKEN]=Q,R[d]={},R[d][xu.CHARACTER_TOKEN]=R[d][xu.NULL_CHARACTER_TOKEN]=X,R[d][xu.WHITESPACE_CHARACTER_TOKEN]=z,R[d][xu.COMMENT_TOKEN]=G,R[d][xu.DOCTYPE_TOKEN]=H,R[d][xu.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.BODY?(e._insertElement(r,n.HTML),e.framesetOk=!1,e.insertionMode=p):a===t.FRAMESET?(e._insertElement(r,n.HTML),e.insertionMode=N):a===t.BASE||a===t.BASEFONT||a===t.BGSOUND||a===t.LINK||a===t.META||a===t.NOFRAMES||a===t.SCRIPT||a===t.STYLE||a===t.TEMPLATE||a===t.TITLE?(e.openElements.push(e.headElement),W(e,r),e.openElements.remove(e.headElement)):a!==t.HEAD&&X(e,r)},R[d][xu.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.BODY||r===t.HTML||r===t.BR?X(e,n):r===t.TEMPLATE&&Y(e,n)},R[d][xu.EOF_TOKEN]=X,R[p]={},R[p][xu.CHARACTER_TOKEN]=J,R[p][xu.NULL_CHARACTER_TOKEN]=H,R[p][xu.WHITESPACE_CHARACTER_TOKEN]=Z,R[p][xu.COMMENT_TOKEN]=G,R[p][xu.DOCTYPE_TOKEN]=H,R[p][xu.START_TAG_TOKEN]=ue,R[p][xu.END_TAG_TOKEN]=ge,R[p][xu.EOF_TOKEN]=he,R[m]={},R[m][xu.CHARACTER_TOKEN]=R[m][xu.NULL_CHARACTER_TOKEN]=R[m][xu.WHITESPACE_CHARACTER_TOKEN]=z,R[m][xu.COMMENT_TOKEN]=R[m][xu.DOCTYPE_TOKEN]=R[m][xu.START_TAG_TOKEN]=H,R[m][xu.END_TAG_TOKEN]=function(e,n){n.tagName===t.SCRIPT&&(e.pendingScript=e.openElements.current);e.openElements.pop(),e.insertionMode=e.originalInsertionMode},R[m][xu.EOF_TOKEN]=function(e,t){e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e._processToken(t)},R[g]={},R[g][xu.CHARACTER_TOKEN]=R[g][xu.NULL_CHARACTER_TOKEN]=R[g][xu.WHITESPACE_CHARACTER_TOKEN]=fe,R[g][xu.COMMENT_TOKEN]=G,R[g][xu.DOCTYPE_TOKEN]=H,R[g][xu.START_TAG_TOKEN]=_e,R[g][xu.END_TAG_TOKEN]=Ee,R[g][xu.EOF_TOKEN]=he,R[h]={},R[h][xu.CHARACTER_TOKEN]=function(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0},R[h][xu.NULL_CHARACTER_TOKEN]=H,R[h][xu.WHITESPACE_CHARACTER_TOKEN]=function(e,t){e.pendingCharacterTokens.push(t)},R[h][xu.COMMENT_TOKEN]=R[h][xu.DOCTYPE_TOKEN]=R[h][xu.START_TAG_TOKEN]=R[h][xu.END_TAG_TOKEN]=R[h][xu.EOF_TOKEN]=function(e,t){var n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)Te(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t)},R[f]={},R[f][xu.CHARACTER_TOKEN]=J,R[f][xu.NULL_CHARACTER_TOKEN]=H,R[f][xu.WHITESPACE_CHARACTER_TOKEN]=Z,R[f][xu.COMMENT_TOKEN]=G,R[f][xu.DOCTYPE_TOKEN]=H,R[f][xu.START_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.CAPTION||r===t.COL||r===t.COLGROUP||r===t.TBODY||r===t.TD||r===t.TFOOT||r===t.TH||r===t.THEAD||r===t.TR?e.openElements.hasInTableScope(t.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=g,e._processToken(n)):ue(e,n)},R[f][xu.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.CAPTION||r===t.TABLE?e.openElements.hasInTableScope(t.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=g,r===t.TABLE&&e._processToken(n)):r!==t.BODY&&r!==t.COL&&r!==t.COLGROUP&&r!==t.HTML&&r!==t.TBODY&&r!==t.TD&&r!==t.TFOOT&&r!==t.TH&&r!==t.THEAD&&r!==t.TR&&ge(e,n)},R[f][xu.EOF_TOKEN]=he,R[_]={},R[_][xu.CHARACTER_TOKEN]=R[_][xu.NULL_CHARACTER_TOKEN]=be,R[_][xu.WHITESPACE_CHARACTER_TOKEN]=z,R[_][xu.COMMENT_TOKEN]=G,R[_][xu.DOCTYPE_TOKEN]=H,R[_][xu.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.COL?e._appendElement(r,n.HTML):a===t.TEMPLATE?W(e,r):be(e,r)},R[_][xu.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.COLGROUP?e.openElements.currentTagName===t.COLGROUP&&(e.openElements.pop(),e.insertionMode=g):r===t.TEMPLATE?Y(e,n):r!==t.COL&&be(e,n)},R[_][xu.EOF_TOKEN]=he,R[E]={},R[E][xu.CHARACTER_TOKEN]=R[E][xu.NULL_CHARACTER_TOKEN]=R[E][xu.WHITESPACE_CHARACTER_TOKEN]=fe,R[E][xu.COMMENT_TOKEN]=G,R[E][xu.DOCTYPE_TOKEN]=H,R[E][xu.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.TR?(e.openElements.clearBackToTableBodyContext(),e._insertElement(r,n.HTML),e.insertionMode=T):a===t.TH||a===t.TD?(e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(t.TR),e.insertionMode=T,e._processToken(r)):a===t.CAPTION||a===t.COL||a===t.COLGROUP||a===t.TBODY||a===t.TFOOT||a===t.THEAD?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=g,e._processToken(r)):_e(e,r)},R[E][xu.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.TBODY||r===t.TFOOT||r===t.THEAD?e.openElements.hasInTableScope(r)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=g):r===t.TABLE?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=g,e._processToken(n)):(r!==t.BODY&&r!==t.CAPTION&&r!==t.COL&&r!==t.COLGROUP||r!==t.HTML&&r!==t.TD&&r!==t.TH&&r!==t.TR)&&Ee(e,n)},R[E][xu.EOF_TOKEN]=he,R[T]={},R[T][xu.CHARACTER_TOKEN]=R[T][xu.NULL_CHARACTER_TOKEN]=R[T][xu.WHITESPACE_CHARACTER_TOKEN]=fe,R[T][xu.COMMENT_TOKEN]=G,R[T][xu.DOCTYPE_TOKEN]=H,R[T][xu.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.TH||a===t.TD?(e.openElements.clearBackToTableRowContext(),e._insertElement(r,n.HTML),e.insertionMode=b,e.activeFormattingElements.insertMarker()):a===t.CAPTION||a===t.COL||a===t.COLGROUP||a===t.TBODY||a===t.TFOOT||a===t.THEAD||a===t.TR?e.openElements.hasInTableScope(t.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=E,e._processToken(r)):_e(e,r)},R[T][xu.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.TR?e.openElements.hasInTableScope(t.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=E):r===t.TABLE?e.openElements.hasInTableScope(t.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=E,e._processToken(n)):r===t.TBODY||r===t.TFOOT||r===t.THEAD?(e.openElements.hasInTableScope(r)||e.openElements.hasInTableScope(t.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=E,e._processToken(n)):(r!==t.BODY&&r!==t.CAPTION&&r!==t.COL&&r!==t.COLGROUP||r!==t.HTML&&r!==t.TD&&r!==t.TH)&&Ee(e,n)},R[T][xu.EOF_TOKEN]=he,R[b]={},R[b][xu.CHARACTER_TOKEN]=J,R[b][xu.NULL_CHARACTER_TOKEN]=H,R[b][xu.WHITESPACE_CHARACTER_TOKEN]=Z,R[b][xu.COMMENT_TOKEN]=G,R[b][xu.DOCTYPE_TOKEN]=H,R[b][xu.START_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.CAPTION||r===t.COL||r===t.COLGROUP||r===t.TBODY||r===t.TD||r===t.TFOOT||r===t.TH||r===t.THEAD||r===t.TR?(e.openElements.hasInTableScope(t.TD)||e.openElements.hasInTableScope(t.TH))&&(e._closeTableCell(),e._processToken(n)):ue(e,n)},R[b][xu.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.TD||r===t.TH?e.openElements.hasInTableScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=T):r===t.TABLE||r===t.TBODY||r===t.TFOOT||r===t.THEAD||r===t.TR?e.openElements.hasInTableScope(r)&&(e._closeTableCell(),e._processToken(n)):r!==t.BODY&&r!==t.CAPTION&&r!==t.COL&&r!==t.COLGROUP&&r!==t.HTML&&ge(e,n)},R[b][xu.EOF_TOKEN]=he,R[v]={},R[v][xu.CHARACTER_TOKEN]=z,R[v][xu.NULL_CHARACTER_TOKEN]=H,R[v][xu.WHITESPACE_CHARACTER_TOKEN]=z,R[v][xu.COMMENT_TOKEN]=G,R[v][xu.DOCTYPE_TOKEN]=H,R[v][xu.START_TAG_TOKEN]=ve,R[v][xu.END_TAG_TOKEN]=Ae,R[v][xu.EOF_TOKEN]=he,R[A]={},R[A][xu.CHARACTER_TOKEN]=z,R[A][xu.NULL_CHARACTER_TOKEN]=H,R[A][xu.WHITESPACE_CHARACTER_TOKEN]=z,R[A][xu.COMMENT_TOKEN]=G,R[A][xu.DOCTYPE_TOKEN]=H,R[A][xu.START_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.CAPTION||r===t.TABLE||r===t.TBODY||r===t.TFOOT||r===t.THEAD||r===t.TR||r===t.TD||r===t.TH?(e.openElements.popUntilTagNamePopped(t.SELECT),e._resetInsertionMode(),e._processToken(n)):ve(e,n)},R[A][xu.END_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.CAPTION||r===t.TABLE||r===t.TBODY||r===t.TFOOT||r===t.THEAD||r===t.TR||r===t.TD||r===t.TH?e.openElements.hasInTableScope(r)&&(e.openElements.popUntilTagNamePopped(t.SELECT),e._resetInsertionMode(),e._processToken(n)):Ae(e,n)},R[A][xu.EOF_TOKEN]=he,R[S]={},R[S][xu.CHARACTER_TOKEN]=J,R[S][xu.NULL_CHARACTER_TOKEN]=H,R[S][xu.WHITESPACE_CHARACTER_TOKEN]=Z,R[S][xu.COMMENT_TOKEN]=G,R[S][xu.DOCTYPE_TOKEN]=H,R[S][xu.START_TAG_TOKEN]=function(e,n){var r=n.tagName;if(r===t.BASE||r===t.BASEFONT||r===t.BGSOUND||r===t.LINK||r===t.META||r===t.NOFRAMES||r===t.SCRIPT||r===t.STYLE||r===t.TEMPLATE||r===t.TITLE)W(e,n);else{var a=w[r]||p;e._popTmplInsertionMode(),e._pushTmplInsertionMode(a),e.insertionMode=a,e._processToken(n)}},R[S][xu.END_TAG_TOKEN]=function(e,n){n.tagName===t.TEMPLATE&&Y(e,n)},R[S][xu.EOF_TOKEN]=Se,R[y]={},R[y][xu.CHARACTER_TOKEN]=R[y][xu.NULL_CHARACTER_TOKEN]=ye,R[y][xu.WHITESPACE_CHARACTER_TOKEN]=Z,R[y][xu.COMMENT_TOKEN]=function(e,t){e._appendCommentNode(t,e.openElements.items[0])},R[y][xu.DOCTYPE_TOKEN]=H,R[y][xu.START_TAG_TOKEN]=function(e,n){n.tagName===t.HTML?ue(e,n):ye(e,n)},R[y][xu.END_TAG_TOKEN]=function(e,n){n.tagName===t.HTML?e.fragmentContext||(e.insertionMode=O):ye(e,n)},R[y][xu.EOF_TOKEN]=K,R[N]={},R[N][xu.CHARACTER_TOKEN]=R[N][xu.NULL_CHARACTER_TOKEN]=H,R[N][xu.WHITESPACE_CHARACTER_TOKEN]=z,R[N][xu.COMMENT_TOKEN]=G,R[N][xu.DOCTYPE_TOKEN]=H,R[N][xu.START_TAG_TOKEN]=function(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.FRAMESET?e._insertElement(r,n.HTML):a===t.FRAME?e._appendElement(r,n.HTML):a===t.NOFRAMES&&W(e,r)},R[N][xu.END_TAG_TOKEN]=function(e,n){n.tagName!==t.FRAMESET||e.openElements.isRootHtmlElementCurrent()||(e.openElements.pop(),e.fragmentContext||e.openElements.currentTagName===t.FRAMESET||(e.insertionMode=C))},R[N][xu.EOF_TOKEN]=K,R[C]={},R[C][xu.CHARACTER_TOKEN]=R[C][xu.NULL_CHARACTER_TOKEN]=H,R[C][xu.WHITESPACE_CHARACTER_TOKEN]=z,R[C][xu.COMMENT_TOKEN]=G,R[C][xu.DOCTYPE_TOKEN]=H,R[C][xu.START_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.HTML?ue(e,n):r===t.NOFRAMES&&W(e,n)},R[C][xu.END_TAG_TOKEN]=function(e,n){n.tagName===t.HTML&&(e.insertionMode=M)},R[C][xu.EOF_TOKEN]=K,R[O]={},R[O][xu.CHARACTER_TOKEN]=Ne,R[O][xu.NULL_CHARACTER_TOKEN]=Ne,R[O][xu.WHITESPACE_CHARACTER_TOKEN]=Z,R[O][xu.COMMENT_TOKEN]=q,R[O][xu.DOCTYPE_TOKEN]=H,R[O][xu.START_TAG_TOKEN]=function(e,n){n.tagName===t.HTML?ue(e,n):Ne(e,n)},R[O][xu.END_TAG_TOKEN]=Ne,R[O][xu.EOF_TOKEN]=K,R[M]={},R[M][xu.CHARACTER_TOKEN]=R[M][xu.NULL_CHARACTER_TOKEN]=H,R[M][xu.WHITESPACE_CHARACTER_TOKEN]=Z,R[M][xu.COMMENT_TOKEN]=q,R[M][xu.DOCTYPE_TOKEN]=H,R[M][xu.START_TAG_TOKEN]=function(e,n){var r=n.tagName;r===t.HTML?ue(e,n):r===t.NOFRAMES&&W(e,n)},R[M][xu.END_TAG_TOKEN]=H,R[M][xu.EOF_TOKEN]=K;var D=e.exports=function(e){this.options=function(e,t){return[e,t=t||{}].reduce(function(e,t){return Object.keys(t).forEach(function(n){e[n]=t[n]}),e},{})}(a,e),this.treeAdapter=this.options.treeAdapter,this.pendingScript=null,this.options.locationInfo&&Lu(this)};function I(e,t){var n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagName)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):me(e,t),n}function k(e,t){for(var n=null,r=e.openElements.stackTop;r>=0;r--){var a=e.openElements.items[r];if(a===t.element)break;e._isSpecialElement(a)&&(n=a)}return n||(e.openElements.popUntilElementPopped(t.element),e.activeFormattingElements.removeEntry(t)),n}function L(e,t,n){for(var r=t,a=e.openElements.getCommonAncestor(t),i=0,o=a;o!==n;i++,o=a){a=e.openElements.getCommonAncestor(o);var s=e.activeFormattingElements.getElementEntry(o),c=s&&i>=l;!s||c?(c&&e.activeFormattingElements.removeEntry(s),e.openElements.remove(o)):(o=P(e,s),r===t&&(e.activeFormattingElements.bookmark=s),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(o,r),r=o)}return r}function P(e,t){var n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}function B(e,r,a){if(e._isElementCausesFosterParenting(r))e._fosterParentElement(a);else{var i=e.treeAdapter.getTagName(r),o=e.treeAdapter.getNamespaceURI(r);i===t.TEMPLATE&&o===n.HTML&&(r=e.treeAdapter.getTemplateContent(r)),e.treeAdapter.appendChild(r,a)}}function F(e,t,n){var r=e.treeAdapter.getNamespaceURI(n.element),a=n.token,i=e.treeAdapter.createElement(a.tagName,r,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,n.token),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i)}function U(e,t){for(var n,r=0;r<o&&(n=I(e,t));r++){var a=k(e,n);if(!a)break;e.activeFormattingElements.bookmark=n;var i=L(e,a,n.element),l=e.openElements.getCommonAncestor(n.element);e.treeAdapter.detachNode(i),B(e,l,i),F(e,a,n)}}function H(){}function G(e,t){e._appendCommentNode(t,e.openElements.currentTmplContent||e.openElements.current)}function q(e,t){e._appendCommentNode(t,e.document)}function z(e,t){e._insertCharacters(t)}function K(e){e.stopped=!0}function j(e,t){e.treeAdapter.setQuirksMode(e.document),e.insertionMode=s,e._processToken(t)}function V(e,t){e._insertFakeRootElement(),e.insertionMode=c,e._processToken(t)}function $(e,n){e._insertFakeElement(t.HEAD),e.headElement=e.openElements.current,e.insertionMode=u,e._processToken(n)}function W(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.BASE||a===t.BASEFONT||a===t.BGSOUND||a===t.LINK||a===t.META?e._appendElement(r,n.HTML):a===t.TITLE?e._switchToTextParsing(r,xu.MODE.RCDATA):a===t.NOSCRIPT||a===t.NOFRAMES||a===t.STYLE?e._switchToTextParsing(r,xu.MODE.RAWTEXT):a===t.SCRIPT?e._switchToTextParsing(r,xu.MODE.SCRIPT_DATA):a===t.TEMPLATE?(e._insertTemplate(r,n.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=S,e._pushTmplInsertionMode(S)):a!==t.HEAD&&Q(e,r)}function Y(e,n){var r=n.tagName;r===t.HEAD?(e.openElements.pop(),e.insertionMode=d):r===t.BODY||r===t.BR||r===t.HTML?Q(e,n):r===t.TEMPLATE&&e.openElements.tmplCount>0&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode())}function Q(e,t){e.openElements.pop(),e.insertionMode=d,e._processToken(t)}function X(e,n){e._insertFakeElement(t.BODY),e.insertionMode=p,e._processToken(n)}function Z(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function J(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function ee(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML)}function te(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function ne(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,n.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function re(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,n.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function ae(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,n.HTML),e.framesetOk=!1}function ie(e,t){e._appendElement(t,n.HTML)}function oe(e,t){e._switchToTextParsing(t,xu.MODE.RAWTEXT)}function le(e,r){e.openElements.currentTagName===t.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(r,n.HTML)}function se(e,r){e.openElements.hasInScope(t.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(r,n.HTML)}function ce(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,n.HTML)}function ue(e,a){var o=a.tagName;switch(o.length){case 1:o===t.I||o===t.S||o===t.B||o===t.U?ne(e,a):o===t.P?ee(e,a):o===t.A?function(e,r){var a=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.A);a&&(U(e,r),e.openElements.remove(a.element),e.activeFormattingElements.removeEntry(a)),e._reconstructActiveFormattingElements(),e._insertElement(r,n.HTML),e.activeFormattingElements.pushElement(e.openElements.current,r)}(e,a):ce(e,a);break;case 2:o===t.DL||o===t.OL||o===t.UL?ee(e,a):o===t.H1||o===t.H2||o===t.H3||o===t.H4||o===t.H5||o===t.H6?function(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement();var a=e.openElements.currentTagName;a!==t.H1&&a!==t.H2&&a!==t.H3&&a!==t.H4&&a!==t.H5&&a!==t.H6||e.openElements.pop(),e._insertElement(r,n.HTML)}(e,a):o===t.LI||o===t.DD||o===t.DT?function(e,r){e.framesetOk=!1;for(var a=r.tagName,i=e.openElements.stackTop;i>=0;i--){var o=e.openElements.items[i],l=e.treeAdapter.getTagName(o),s=null;if(a===t.LI&&l===t.LI?s=t.LI:a!==t.DD&&a!==t.DT||l!==t.DD&&l!==t.DT||(s=l),s){e.openElements.generateImpliedEndTagsWithExclusion(s),e.openElements.popUntilTagNamePopped(s);break}if(l!==t.ADDRESS&&l!==t.DIV&&l!==t.P&&e._isSpecialElement(o))break}e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML)}(e,a):o===t.EM||o===t.TT?ne(e,a):o===t.BR?ae(e,a):o===t.HR?function(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e.openElements.currentTagName===t.MENUITEM&&e.openElements.pop(),e._appendElement(r,n.HTML),e.framesetOk=!1}(e,a):o===t.RB?se(e,a):o===t.RT||o===t.RP?function(e,r){e.openElements.hasInScope(t.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(t.RTC),e._insertElement(r,n.HTML)}(e,a):o!==t.TH&&o!==t.TD&&o!==t.TR&&ce(e,a);break;case 3:o===t.DIV||o===t.DIR||o===t.NAV?ee(e,a):o===t.PRE?te(e,a):o===t.BIG?ne(e,a):o===t.IMG||o===t.WBR?ae(e,a):o===t.XMP?function(e,n){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(n,xu.MODE.RAWTEXT)}(e,a):o===t.SVG?function(e,t){e._reconstructActiveFormattingElements(),qu.adjustTokenSVGAttrs(t),qu.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,n.SVG):e._insertElement(t,n.SVG)}(e,a):o===t.RTC?se(e,a):o!==t.COL&&ce(e,a);break;case 4:o===t.HTML?function(e,t){0===e.openElements.tmplCount&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}(e,a):o===t.BASE||o===t.LINK||o===t.META?W(e,a):o===t.BODY?function(e,t){var n=e.openElements.tryPeekProperlyNestedBodyElement();n&&0===e.openElements.tmplCount&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}(e,a):o===t.MAIN?ee(e,a):o===t.FORM?function(e,r){var a=e.openElements.tmplCount>0;e.formElement&&!a||(e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML),a||(e.formElement=e.openElements.current))}(e,a):o===t.CODE||o===t.FONT?ne(e,a):o===t.NOBR?function(e,r){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(t.NOBR)&&(U(e,r),e._reconstructActiveFormattingElements()),e._insertElement(r,n.HTML),e.activeFormattingElements.pushElement(e.openElements.current,r)}(e,a):o===t.AREA?ae(e,a):o===t.MATH?function(e,t){e._reconstructActiveFormattingElements(),qu.adjustTokenMathMLAttrs(t),qu.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,n.MATHML):e._insertElement(t,n.MATHML)}(e,a):o===t.MENU?function(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e.openElements.currentTagName===t.MENUITEM&&e.openElements.pop(),e._insertElement(r,n.HTML)}(e,a):o!==t.HEAD&&ce(e,a);break;case 5:o===t.STYLE||o===t.TITLE?W(e,a):o===t.ASIDE?ee(e,a):o===t.SMALL?ne(e,a):o===t.TABLE?function(e,r){!e.treeAdapter.isQuirksMode(e.document)&&e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML),e.framesetOk=!1,e.insertionMode=g}(e,a):o===t.EMBED?ae(e,a):o===t.INPUT?function(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,n.HTML);var a=xu.getTokenAttr(t,r.TYPE);a&&a.toLowerCase()===i||(e.framesetOk=!1)}(e,a):o===t.PARAM||o===t.TRACK?ie(e,a):o===t.IMAGE?function(e,n){n.tagName=t.IMG,ae(e,n)}(e,a):o!==t.FRAME&&o!==t.TBODY&&o!==t.TFOOT&&o!==t.THEAD&&ce(e,a);break;case 6:o===t.SCRIPT?W(e,a):o===t.CENTER||o===t.FIGURE||o===t.FOOTER||o===t.HEADER||o===t.HGROUP?ee(e,a):o===t.BUTTON?function(e,r){e.openElements.hasInScope(t.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(r,n.HTML),e.framesetOk=!1}(e,a):o===t.STRIKE||o===t.STRONG?ne(e,a):o===t.APPLET||o===t.OBJECT?re(e,a):o===t.KEYGEN?ae(e,a):o===t.SOURCE?ie(e,a):o===t.IFRAME?function(e,t){e.framesetOk=!1,e._switchToTextParsing(t,xu.MODE.RAWTEXT)}(e,a):o===t.SELECT?function(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,n.HTML),e.framesetOk=!1,e.insertionMode===g||e.insertionMode===f||e.insertionMode===E||e.insertionMode===T||e.insertionMode===b?e.insertionMode=A:e.insertionMode=v}(e,a):o===t.OPTION?le(e,a):ce(e,a);break;case 7:o===t.BGSOUND?W(e,a):o===t.DETAILS||o===t.ADDRESS||o===t.ARTICLE||o===t.SECTION||o===t.SUMMARY?ee(e,a):o===t.LISTING?te(e,a):o===t.MARQUEE?re(e,a):o===t.NOEMBED?oe(e,a):o!==t.CAPTION&&ce(e,a);break;case 8:o===t.BASEFONT?W(e,a):o===t.MENUITEM?function(e,r){e.openElements.currentTagName===t.MENUITEM&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(r,n.HTML)}(e,a):o===t.FRAMESET?function(e,t){var r=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&r&&(e.treeAdapter.detachNode(r),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,n.HTML),e.insertionMode=N)}(e,a):o===t.FIELDSET?ee(e,a):o===t.TEXTAREA?function(e,t){e._insertElement(t,n.HTML),e.skipNextNewLine=!0,e.tokenizer.state=xu.MODE.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=m}(e,a):o===t.TEMPLATE?W(e,a):o===t.NOSCRIPT?oe(e,a):o===t.OPTGROUP?le(e,a):o!==t.COLGROUP&&ce(e,a);break;case 9:o===t.PLAINTEXT?function(e,r){e.openElements.hasInButtonScope(t.P)&&e._closePElement(),e._insertElement(r,n.HTML),e.tokenizer.state=xu.MODE.PLAINTEXT}(e,a):ce(e,a);break;case 10:o===t.BLOCKQUOTE||o===t.FIGCAPTION?ee(e,a):ce(e,a);break;default:ce(e,a)}}function de(e,t){var n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function pe(e,t){var n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function me(e,t){for(var n=t.tagName,r=e.openElements.stackTop;r>0;r--){var a=e.openElements.items[r];if(e.treeAdapter.getTagName(a)===n){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilElementPopped(a);break}if(e._isSpecialElement(a))break}}function ge(e,n){var r=n.tagName;switch(r.length){case 1:r===t.A||r===t.B||r===t.I||r===t.S||r===t.U?U(e,n):r===t.P?function(e){e.openElements.hasInButtonScope(t.P)||e._insertFakeElement(t.P),e._closePElement()}(e):me(e,n);break;case 2:r===t.DL||r===t.UL||r===t.OL?de(e,n):r===t.LI?function(e){e.openElements.hasInListItemScope(t.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(t.LI),e.openElements.popUntilTagNamePopped(t.LI))}(e):r===t.DD||r===t.DT?function(e,t){var n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}(e,n):r===t.H1||r===t.H2||r===t.H3||r===t.H4||r===t.H5||r===t.H6?function(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}(e):r===t.BR?function(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(t.BR),e.openElements.pop(),e.framesetOk=!1}(e):r===t.EM||r===t.TT?U(e,n):me(e,n);break;case 3:r===t.BIG?U(e,n):r===t.DIR||r===t.DIV||r===t.NAV?de(e,n):me(e,n);break;case 4:r===t.BODY?function(e){e.openElements.hasInScope(t.BODY)&&(e.insertionMode=y)}(e):r===t.HTML?function(e,n){e.openElements.hasInScope(t.BODY)&&(e.insertionMode=y,e._processToken(n))}(e,n):r===t.FORM?function(e){var n=e.openElements.tmplCount>0,r=e.formElement;n||(e.formElement=null),(r||n)&&e.openElements.hasInScope(t.FORM)&&(e.openElements.generateImpliedEndTags(),n?e.openElements.popUntilTagNamePopped(t.FORM):e.openElements.remove(r))}(e):r===t.CODE||r===t.FONT||r===t.NOBR?U(e,n):r===t.MAIN||r===t.MENU?de(e,n):me(e,n);break;case 5:r===t.ASIDE?de(e,n):r===t.SMALL?U(e,n):me(e,n);break;case 6:r===t.CENTER||r===t.FIGURE||r===t.FOOTER||r===t.HEADER||r===t.HGROUP?de(e,n):r===t.APPLET||r===t.OBJECT?pe(e,n):r===t.STRIKE||r===t.STRONG?U(e,n):me(e,n);break;case 7:r===t.ADDRESS||r===t.ARTICLE||r===t.DETAILS||r===t.SECTION||r===t.SUMMARY?de(e,n):r===t.MARQUEE?pe(e,n):me(e,n);break;case 8:r===t.FIELDSET?de(e,n):r===t.TEMPLATE?Y(e,n):me(e,n);break;case 10:r===t.BLOCKQUOTE||r===t.FIGCAPTION?de(e,n):me(e,n);break;default:me(e,n)}}function he(e,t){e.tmplInsertionModeStackTop>-1?Se(e,t):e.stopped=!0}function fe(e,n){var r=e.openElements.currentTagName;r===t.TABLE||r===t.TBODY||r===t.TFOOT||r===t.THEAD||r===t.TR?(e.pendingCharacterTokens=[],e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=h,e._processToken(n)):Te(e,n)}function _e(e,a){var o=a.tagName;switch(o.length){case 2:o===t.TD||o===t.TH||o===t.TR?function(e,n){e.openElements.clearBackToTableContext(),e._insertFakeElement(t.TBODY),e.insertionMode=E,e._processToken(n)}(e,a):Te(e,a);break;case 3:o===t.COL?function(e,n){e.openElements.clearBackToTableContext(),e._insertFakeElement(t.COLGROUP),e.insertionMode=_,e._processToken(n)}(e,a):Te(e,a);break;case 4:o===t.FORM?function(e,t){e.formElement||0!==e.openElements.tmplCount||(e._insertElement(t,n.HTML),e.formElement=e.openElements.current,e.openElements.pop())}(e,a):Te(e,a);break;case 5:o===t.TABLE?function(e,n){e.openElements.hasInTableScope(t.TABLE)&&(e.openElements.popUntilTagNamePopped(t.TABLE),e._resetInsertionMode(),e._processToken(n))}(e,a):o===t.STYLE?W(e,a):o===t.TBODY||o===t.TFOOT||o===t.THEAD?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,n.HTML),e.insertionMode=E}(e,a):o===t.INPUT?function(e,t){var a=xu.getTokenAttr(t,r.TYPE);a&&a.toLowerCase()===i?e._appendElement(t,n.HTML):Te(e,t)}(e,a):Te(e,a);break;case 6:o===t.SCRIPT?W(e,a):Te(e,a);break;case 7:o===t.CAPTION?function(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,n.HTML),e.insertionMode=f}(e,a):Te(e,a);break;case 8:o===t.COLGROUP?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,n.HTML),e.insertionMode=_}(e,a):o===t.TEMPLATE?W(e,a):Te(e,a);break;default:Te(e,a)}}function Ee(e,n){var r=n.tagName;r===t.TABLE?e.openElements.hasInTableScope(t.TABLE)&&(e.openElements.popUntilTagNamePopped(t.TABLE),e._resetInsertionMode()):r===t.TEMPLATE?Y(e,n):r!==t.BODY&&r!==t.CAPTION&&r!==t.COL&&r!==t.COLGROUP&&r!==t.HTML&&r!==t.TBODY&&r!==t.TD&&r!==t.TFOOT&&r!==t.TH&&r!==t.THEAD&&r!==t.TR&&Te(e,n)}function Te(e,t){var n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,e._processTokenInBodyMode(t),e.fosterParentingEnabled=n}function be(e,n){e.openElements.currentTagName===t.COLGROUP&&(e.openElements.pop(),e.insertionMode=g,e._processToken(n))}function ve(e,r){var a=r.tagName;a===t.HTML?ue(e,r):a===t.OPTION?(e.openElements.currentTagName===t.OPTION&&e.openElements.pop(),e._insertElement(r,n.HTML)):a===t.OPTGROUP?(e.openElements.currentTagName===t.OPTION&&e.openElements.pop(),e.openElements.currentTagName===t.OPTGROUP&&e.openElements.pop(),e._insertElement(r,n.HTML)):a===t.INPUT||a===t.KEYGEN||a===t.TEXTAREA||a===t.SELECT?e.openElements.hasInSelectScope(t.SELECT)&&(e.openElements.popUntilTagNamePopped(t.SELECT),e._resetInsertionMode(),a!==t.SELECT&&e._processToken(r)):a!==t.SCRIPT&&a!==t.TEMPLATE||W(e,r)}function Ae(e,n){var r=n.tagName;if(r===t.OPTGROUP){var a=e.openElements.items[e.openElements.stackTop-1],i=a&&e.treeAdapter.getTagName(a);e.openElements.currentTagName===t.OPTION&&i===t.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagName===t.OPTGROUP&&e.openElements.pop()}else r===t.OPTION?e.openElements.currentTagName===t.OPTION&&e.openElements.pop():r===t.SELECT&&e.openElements.hasInSelectScope(t.SELECT)?(e.openElements.popUntilTagNamePopped(t.SELECT),e._resetInsertionMode()):r===t.TEMPLATE&&Y(e,n)}function Se(e,n){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(t.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode(),e._processToken(n)):e.stopped=!0}function ye(e,t){e.insertionMode=p,e._processToken(t)}function Ne(e,t){e.insertionMode=p,e._processToken(t)}D.prototype.parse=function(e){var t=this.treeAdapter.createDocument();return this._bootstrap(t,null),this.tokenizer.write(e,!0),this._runParsingLoop(null,null),t},D.prototype.parseFragment=function(e,r){r||(r=this.treeAdapter.createElement(t.TEMPLATE,n.HTML,[]));var a=this.treeAdapter.createElement("documentmock",n.HTML,[]);this._bootstrap(a,r),this.treeAdapter.getTagName(r)===t.TEMPLATE&&this._pushTmplInsertionMode(S),this._initTokenizerForFragmentParsing(),this._insertFakeRootElement(),this._resetInsertionMode(),this._findFormInFragmentContext(),this.tokenizer.write(e,!0),this._runParsingLoop(null,null);var i=this.treeAdapter.getFirstChild(a),o=this.treeAdapter.createDocumentFragment();return this._adoptNodes(i,o),o},D.prototype._bootstrap=function(e,t){this.tokenizer=new xu(this.options),this.stopped=!1,this.insertionMode="INITIAL_MODE",this.originalInsertionMode="",this.document=e,this.fragmentContext=t,this.headElement=null,this.formElement=null,this.openElements=new Ru(this.document,this.treeAdapter),this.activeFormattingElements=new Du(this.treeAdapter),this.tmplInsertionModeStack=[],this.tmplInsertionModeStackTop=-1,this.currentTmplInsertionMode=null,this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1},D.prototype._runParsingLoop=function(e,t){for(;!this.stopped;){this._setupTokenizerCDATAMode();var n=this.tokenizer.getNextToken();if(n.type===xu.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,n.type===xu.WHITESPACE_CHARACTER_TOKEN&&"\n"===n.chars[0])){if(1===n.chars.length)continue;n.chars=n.chars.substr(1)}if(this._processInputToken(n),t&&this.pendingScript)break}if(t&&this.pendingScript){var r=this.pendingScript;return this.pendingScript=null,void t(r)}e&&e()},D.prototype._setupTokenizerCDATAMode=function(){var e=this._getAdjustedCurrentElement();this.tokenizer.allowCDATA=e&&e!==this.document&&this.treeAdapter.getNamespaceURI(e)!==n.HTML&&!this._isIntegrationPoint(e)},D.prototype._switchToTextParsing=function(e,t){this._insertElement(e,n.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=m},D.prototype._getAdjustedCurrentElement=function(){return 0===this.openElements.stackTop&&this.fragmentContext?this.fragmentContext:this.openElements.current},D.prototype._findFormInFragmentContext=function(){var e=this.fragmentContext;do{if(this.treeAdapter.getTagName(e)===t.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}while(e)},D.prototype._initTokenizerForFragmentParsing=function(){if(this.treeAdapter.getNamespaceURI(this.fragmentContext)===n.HTML){var e=this.treeAdapter.getTagName(this.fragmentContext);e===t.TITLE||e===t.TEXTAREA?this.tokenizer.state=xu.MODE.RCDATA:e===t.STYLE||e===t.XMP||e===t.IFRAME||e===t.NOEMBED||e===t.NOFRAMES||e===t.NOSCRIPT?this.tokenizer.state=xu.MODE.RAWTEXT:e===t.SCRIPT?this.tokenizer.state=xu.MODE.SCRIPT_DATA:e===t.PLAINTEXT&&(this.tokenizer.state=xu.MODE.PLAINTEXT)}},D.prototype._setDocumentType=function(e){this.treeAdapter.setDocumentType(this.document,e.name,e.publicId,e.systemId)},D.prototype._attachElementToTree=function(e){if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{var t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.appendChild(t,e)}},D.prototype._appendElement=function(e,t){var n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n)},D.prototype._insertElement=function(e,t){var n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n),this.openElements.push(n)},D.prototype._insertFakeElement=function(e){var t=this.treeAdapter.createElement(e,n.HTML,[]);this._attachElementToTree(t),this.openElements.push(t)},D.prototype._insertTemplate=function(e){var t=this.treeAdapter.createElement(e.tagName,n.HTML,e.attrs),r=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,r),this._attachElementToTree(t),this.openElements.push(t)},D.prototype._insertFakeRootElement=function(){var e=this.treeAdapter.createElement(t.HTML,n.HTML,[]);this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e)},D.prototype._appendCommentNode=function(e,t){var n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n)},D.prototype._insertCharacters=function(e){if(this._shouldFosterParentOnInsertion())this._fosterParentText(e.chars);else{var t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.insertText(t,e.chars)}},D.prototype._adoptNodes=function(e,t){for(;;){var n=this.treeAdapter.getFirstChild(e);if(!n)break;this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}},D.prototype._shouldProcessTokenInForeignContent=function(e){var r=this._getAdjustedCurrentElement();if(!r||r===this.document)return!1;var a=this.treeAdapter.getNamespaceURI(r);if(a===n.HTML)return!1;if(this.treeAdapter.getTagName(r)===t.ANNOTATION_XML&&a===n.MATHML&&e.type===xu.START_TAG_TOKEN&&e.tagName===t.SVG)return!1;var i=e.type===xu.CHARACTER_TOKEN||e.type===xu.NULL_CHARACTER_TOKEN||e.type===xu.WHITESPACE_CHARACTER_TOKEN;return(!(e.type===xu.START_TAG_TOKEN&&e.tagName!==t.MGLYPH&&e.tagName!==t.MALIGNMARK)&&!i||!this._isIntegrationPoint(r,n.MATHML))&&((e.type!==xu.START_TAG_TOKEN&&!i||!this._isIntegrationPoint(r,n.HTML))&&e.type!==xu.EOF_TOKEN)},D.prototype._processToken=function(e){R[this.insertionMode][e.type](this,e)},D.prototype._processTokenInBodyMode=function(e){R[p][e.type](this,e)},D.prototype._processTokenInForeignContent=function(e){e.type===xu.CHARACTER_TOKEN?function(e,t){e._insertCharacters(t),e.framesetOk=!1}(this,e):e.type===xu.NULL_CHARACTER_TOKEN?function(e,t){t.chars=yu.REPLACEMENT_CHARACTER,e._insertCharacters(t)}(this,e):e.type===xu.WHITESPACE_CHARACTER_TOKEN?z(this,e):e.type===xu.COMMENT_TOKEN?G(this,e):e.type===xu.START_TAG_TOKEN?function(e,t){if(qu.causesExit(t)&&!e.fragmentContext){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==n.HTML&&!e._isIntegrationPoint(e.openElements.current);)e.openElements.pop();e._processToken(t)}else{var r=e._getAdjustedCurrentElement(),a=e.treeAdapter.getNamespaceURI(r);a===n.MATHML?qu.adjustTokenMathMLAttrs(t):a===n.SVG&&(qu.adjustTokenSVGTagName(t),qu.adjustTokenSVGAttrs(t)),qu.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,a):e._insertElement(t,a)}}(this,e):e.type===xu.END_TAG_TOKEN&&function(e,t){for(var r=e.openElements.stackTop;r>0;r--){var a=e.openElements.items[r];if(e.treeAdapter.getNamespaceURI(a)===n.HTML){e._processToken(t);break}if(e.treeAdapter.getTagName(a).toLowerCase()===t.tagName){e.openElements.popUntilElementPopped(a);break}}}(this,e)},D.prototype._processInputToken=function(e){this._shouldProcessTokenInForeignContent(e)?this._processTokenInForeignContent(e):this._processToken(e)},D.prototype._isIntegrationPoint=function(e,t){var n=this.treeAdapter.getTagName(e),r=this.treeAdapter.getNamespaceURI(e),a=this.treeAdapter.getAttrList(e);return qu.isIntegrationPoint(n,r,a,t)},D.prototype._reconstructActiveFormattingElements=function(){var e=this.activeFormattingElements.length;if(e){var t=e,n=null;do{if(t--,(n=this.activeFormattingElements.entries[t]).type===Du.MARKER_ENTRY||this.openElements.contains(n.element)){t++;break}}while(t>0);for(var r=t;r<e;r++)n=this.activeFormattingElements.entries[r],this._insertElement(n.token,this.treeAdapter.getNamespaceURI(n.element)),n.element=this.openElements.current}},D.prototype._closeTableCell=function(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=T},D.prototype._closePElement=function(){this.openElements.generateImpliedEndTagsWithExclusion(t.P),this.openElements.popUntilTagNamePopped(t.P)},D.prototype._resetInsertionMode=function(){for(var e=this.openElements.stackTop,n=!1;e>=0;e--){var r=this.openElements.items[e];0===e&&(n=!0,this.fragmentContext&&(r=this.fragmentContext));var a=this.treeAdapter.getTagName(r),i=x[a];if(i){this.insertionMode=i;break}if(!(n||a!==t.TD&&a!==t.TH)){this.insertionMode=b;break}if(!n&&a===t.HEAD){this.insertionMode=u;break}if(a===t.SELECT){this._resetInsertionModeForSelect(e);break}if(a===t.TEMPLATE){this.insertionMode=this.currentTmplInsertionMode;break}if(a===t.HTML){this.insertionMode=this.headElement?d:c;break}if(n){this.insertionMode=p;break}}},D.prototype._resetInsertionModeForSelect=function(e){if(e>0)for(var n=e-1;n>0;n--){var r=this.openElements.items[n],a=this.treeAdapter.getTagName(r);if(a===t.TEMPLATE)break;if(a===t.TABLE)return void(this.insertionMode=A)}this.insertionMode=v},D.prototype._pushTmplInsertionMode=function(e){this.tmplInsertionModeStack.push(e),this.tmplInsertionModeStackTop++,this.currentTmplInsertionMode=e},D.prototype._popTmplInsertionMode=function(){this.tmplInsertionModeStack.pop(),this.tmplInsertionModeStackTop--,this.currentTmplInsertionMode=this.tmplInsertionModeStack[this.tmplInsertionModeStackTop]},D.prototype._isElementCausesFosterParenting=function(e){var n=this.treeAdapter.getTagName(e);return n===t.TABLE||n===t.TBODY||n===t.TFOOT||n===t.THEAD||n===t.TR},D.prototype._shouldFosterParentOnInsertion=function(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.current)},D.prototype._findFosterParentingLocation=function(){for(var e={parent:null,beforeElement:null},r=this.openElements.stackTop;r>=0;r--){var a=this.openElements.items[r],i=this.treeAdapter.getTagName(a),o=this.treeAdapter.getNamespaceURI(a);if(i===t.TEMPLATE&&o===n.HTML){e.parent=this.treeAdapter.getTemplateContent(a);break}if(i===t.TABLE){e.parent=this.treeAdapter.getParentNode(a),e.parent?e.beforeElement=a:e.parent=this.openElements.items[r-1];break}}return e.parent||(e.parent=this.openElements.items[0]),e},D.prototype._fosterParentElement=function(e){var t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)},D.prototype._fosterParentText=function(e){var t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertTextBefore(t.parent,e,t.beforeElement):this.treeAdapter.insertText(t.parent,e)},D.prototype._isSpecialElement=function(e){var t=this.treeAdapter.getTagName(e),n=this.treeAdapter.getNamespaceURI(e);return wu.SPECIAL_ELEMENTS[n][t]}})),Ku=function(t){var n=e(t,this.data("settings")),r="boolean"!=typeof n.position||n.position,a=new zu({locationInfo:r});this.Parser=function(e,t){var r=n.fragment?"parseFragment":"parse";return _u(a[r](String(t)),{file:t,verbose:n.verbose})}};function ju(e,t){return e.properties.className&&e.properties.className.includes(t)}function Vu(e,t){return e.tagName===t}var $u=function(e={}){return null==e.throwOnError&&(e.throwOnError=!1),null==e.errorColor&&(e.errorColor="#cc0000"),null==e.macros&&(e.macros={}),function(t,n){return u(t,"element",function(t){const r=Vu(t,"span")&&ju(t,"inlineMath"),a=e.inlineMathDoubleDisplay&&ju(t,"inlineMathDouble")||Vu(t,"div")&&ju(t,"math");if(r||a){let r;try{r=ic.renderToString(t.children[0].value,{displayMode:a,macros:e.macros})}catch(i){if(e.throwOnError)throw i;n.message(i.message,_.start(t));try{r=ic.renderToString(t.children[0].value,{displayMode:a,macros:e.macros,throwOnError:!1,errorColor:e.errorColor})}catch(n){r='<code class="katex" style="color: '+e.errorColor+'">'+t.children[0].value+"</code>"}}const o=(i=r,au().use(Ku,{fragment:!0,position:!1}).parse(i)).children[0];Object.assign(t.properties,{className:t.properties.className}),t.children=[o]}var i}),t}};var Wu=function(e,t){var n;if(!(null===t||void 0===t||"string"==typeof t||"object"==typeof t&&t.length))throw new Error("Expected `string` or `Array.<string>` for `tagNames`, not `"+t+"`");return!(!e||"object"!=typeof e||"element"!==e.type||"string"!=typeof e.tagName||null!==t&&void 0!==t&&(n=e.tagName,"string"==typeof t?n!==t:-1===t.indexOf(n)))},Yu=/[\ \t\n\f\r]/g;var Qu=function(e){var t;if(e&&"object"==typeof e&&"text"===e.type)t=e.value||"";else{if("string"!=typeof e)return!1;t=e}return""===t.replace(Yu,"")};function Xu(e){return function(t,n,r){var a,i=t&&t.children;if(n+=e,a=i&&i[n],!r)for(;a&&Qu(a);)a=i[n+=e];return a}}var Zu={before:Xu(-1),after:Xu(1)},Ju=Zu.after,ed=function(e,t){return Ju(e,-1,t)};var td=function(e,t){return e&&e.children&&e.children.indexOf(t)};var nd=function(e){return l("text",e)&&Qu(e.value.charAt(0))};var rd=function(e){return function(t,n,r){var a=t.tagName,i=!!ad.call(e,a)&&e[a];return!!i&&i(t,n,r)}},ad={}.hasOwnProperty;var id=Zu.after,od=rd({html:function(e,t,n){var r=id(n,t);return!r||!l("comment",r)},head:ld,body:function(e,t,n){var r=id(n,t);return!r||!l("comment",r)},p:function(e,t,n){var r=id(n,t);if(r)return Wu(r,["address","article","aside","blockquote","details","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","menu","nav","ol","p","pre","section","table","ul"]);return!n||!Wu(n,["a","audio","del","ins","map","noscript","video"])},li:function(e,t,n){var r=id(n,t);return!r||Wu(r,"li")},dt:function(e,t,n){var r=id(n,t);return r&&Wu(r,["dt","dd"])},dd:function(e,t,n){var r=id(n,t);return!r||Wu(r,["dt","dd"])},rt:sd,rp:sd,optgroup:function(e,t,n){var r=id(n,t);return!r||Wu(r,"optgroup")},option:function(e,t,n){var r=id(n,t);return!r||Wu(r,["option","optgroup"])},menuitem:function(e,t,n){var r=id(n,t);return!r||Wu(r,["menuitem","hr","menu"])},colgroup:ld,caption:ld,thead:function(e,t,n){var r=id(n,t);return r&&Wu(r,["tbody","tfoot"])},tbody:function(e,t,n){var r=id(n,t);return!r||Wu(r,["tbody","tfoot"])},tfoot:function(e,t,n){return!id(n,t)},tr:function(e,t,n){var r=id(n,t);return!r||Wu(r,"tr")},td:cd,th:cd});function ld(e,t,n){var r=id(n,t,!0);return!r||!l("comment",r)&&!nd(r)}function sd(e,t,n){var r=id(n,t);return!r||Wu(r,["rp","rt"])}function cd(e,t,n){var r=id(n,t);return!r||Wu(r,["td","th"])}var ud=Zu.before,dd={}.hasOwnProperty;var pd={opening:rd({html:function(e){var t=ed(e);return!t||!l("comment",t)},head:function(e){var t,n,r=e.children,a=r.length,i={},o=-1;for(;++o<a;)if(t=r[o],n=t.tagName,"element"===t.type&&("title"===n||"base"===n)){if(dd.call(i,n))return!1;i[n]=!0}return Boolean(a)},body:function(e){var t=ed(e,!0);return!t||!l("comment",t)&&!nd(t)&&!Wu(t,["meta","link","script","style","template"])},colgroup:function(e,t,n){var r=ud(n,t),a=ed(e,!0);if(Wu(r,"colgroup")&&od(r,td(n,r),n))return!1;return a&&Wu(a,"col")},tbody:function(e,t,n){var r=ud(n,t),a=ed(e);if(Wu(r,["thead","tbody"])&&od(r,td(n,r),n))return!1;return a&&Wu(a,"tr")}}),closing:od},md=function(e,t){var n=t&&t.children,r=n&&n.length,a=-1,i=[];for(;++a<r;)i[a]=np(e,n[a],a,t);return i.join("")};var gd={nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",fnof:"ƒ",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€"},hd=Object.freeze({nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",fnof:"ƒ",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€",default:gd});var fd={AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ"},_d=Object.freeze({AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ",default:fd}),Ed=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57};var Td=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90};var bd=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57};var vd=function(e){return Td(e)||bd(e)};var Ad=["cent","copy","divide","gt","lt","not","para","times"],Sd=Object.freeze({default:Ad}),yd=hd&&gd||hd,Nd=_d&&fd||_d,Cd=Sd&&Ad||Sd,Od=Id;Id.escape=function(e){return Id(e,{escapeOnly:!0,useNamedReferences:!0})};var Md={}.hasOwnProperty,xd=function(){var e,t={};for(e in yd)t[yd[e]]=e;return t}(),wd=Pd(['"',"'","<",">","&","`"]),Rd=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Dd=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;function Id(e,t){var n=t||{},r=n.subset,a=r?Pd(r):wd,i=n.escapeOnly,o=n.omitOptionalSemicolons;return e=e.replace(a,function(e,t,r){return kd(e,r.charAt(t+1),n)}),r||i?e:e.replace(Rd,function(e,t,n){return Ld(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)-56320+65536,n.charAt(t+2),o)}).replace(Dd,function(e,t,r){return kd(e,r.charAt(t+1),n)})}function kd(e,t,n){var r,a,i=n.useShortestReferences,o=n.omitOptionalSemicolons;return(i||n.useNamedReferences)&&Md.call(xd,e)&&(r=function(e,t,n,r){var a="&"+e;if(n&&Md.call(Nd,e)&&-1===Cd.indexOf(e)&&(!r||t&&"="!==t&&!vd(t)))return a;return a+";"}(xd[e],t,o,n.attribute)),!i&&r||(a=Ld(e.charCodeAt(0),t,o)),r&&(!i||r.length<a.length)?r:a}function Ld(e,t,n){var r="&#x"+e.toString(16).toUpperCase();return n&&t&&!Ed(t)?r:r+";"}function Pd(e){return new RegExp("["+e.join("")+"]","g")}var Bd=function(t,n,r,a){var i=n.value;return function(e){return e&&("script"===e.tagName||"style"===e.tagName)}(a)?i:Od(i,e(t.entities,{subset:["<","&"]}))};var Fd=function(e,t){var n,r=0;if(e=String(e),"string"!=typeof t||1!==t.length)throw new Error("Expected character");n=e.indexOf(t);for(;-1!==n;)r++,n=e.indexOf(t,n+1);return r};var Ud=yl.stringify,Hd=wl.stringify,Gd=function(e,t,n,r){var a=t.tagName,i=md(e,"template"===a?t.content:t),o=-1!==e.voids.indexOf(a.toLowerCase()),l=function(e,t){var n,r,a,i,o,l,s=[];for(n in t)null!=(r=t[n])&&(a=Xd(e,n,r))&&s.push(a);i=s.length,o=-1;for(;++o<i;)a=s[o],l=e.tight&&a.charAt(a.length-1),o!==i-1&&l!==jd&&l!==Vd&&(s[o]=a+Kd);return s.join(zd)}(e,t.properties),s=e.omit,c="";o=!i&&o,!l&&s&&s.opening(t,n,r)||(c=Wd+a+(l?Kd+l:zd),o&&e.close&&(e.tightClose&&l.charAt(l.length-1)!==Qd||(c+=Kd),c+=Qd),c+=Yd);c+=i,o||s&&s.closing(t,n,r)||(c+=Wd+Qd+a+Yd);return c},qd="data",zd="",Kd=" ",jd='"',Vd="'",$d="=",Wd="<",Yd=">",Qd="/";function Xd(t,n,r){var a,i=ll(n)||{};return null==r||"number"==typeof r&&isNaN(r)||!r&&i.boolean||!1===r&&i.overloadedBoolean?zd:(a=function(t,n){var r=(ll(n)||{}).name||zl(n);r.slice(0,qd.length)===qd&&/[0-9]/.test(r.charAt(qd.length))&&(r=qd+"-"+r.slice(4));return Od(r,e(t.entities,{subset:t.NAME}))}(t,n),r&&i.boolean||!0===r&&i.overloadedBoolean?a:a+function(t,n,r){var a,i=ll(n)||{},o=t.entities,l=t.quote,s=t.alternative;"object"==typeof r&&"length"in r&&(r=(i.commaSeparated?Hd:Ud)(r,{padLeft:!t.tightLists}));!(r=String(r))&&t.collapseEmpty||(a=r,t.unquoted&&(a=Od(r,e(o,{subset:t.UNQUOTED,attribute:!0}))),t.unquoted&&a===r||(s&&Fd(r,l)>Fd(r,s)&&(l=s),r=Od(r,e(o,{subset:l===Vd?t.SINGLE_QUOTED:t.DOUBLE_QUOTED,attribute:!0})),r=l+r+l),r=r?$d+r:r);return r}(t,n,r))}var Zd=function(e,t){var n=t.public,r=t.system,a="<!DOCTYPE";if(!t.name)return a+">";a+=" "+t.name,null!=n?a+=" PUBLIC "+Jd(n):null!=r&&(a+=" SYSTEM");null!=r&&(a+=" "+Jd(r));return a+">"};function Jd(e){var t=-1===e.indexOf('"')?'"':"'";return t+e+t}var ep=function(e,t){return"\x3c!--"+t.value+"--\x3e"};var tp=function(e,t){return e.dangerous?t.value:Bd(e,t)};var np=function(e,t,n,r){var a=t&&t.type;if(!a)throw new Error("Expected node, not `"+t+"`");if(!rp.call(ap,a))throw new Error("Cannot compile unknown node `"+a+"`");return ap[a](e,t,n,r)},rp={}.hasOwnProperty,ap={};ap.root=md,ap.text=Bd,ap.element=Gd,ap.doctype=Zd,ap.comment=ep,ap.raw=tp;var ip=function(e,t){var n=t||{},r=n.quote||op,a=n.quoteSmart,i=n.allowParseErrors,o=n.allowDangerousCharacters,l=r===op?lp:op,s=i?sp:cp,c=i?dp:pp,u=i?mp:gp,d=i?hp:fp;if(r!==op&&r!==lp)throw new Error("Invalid quote `"+r+"`, expected `"+lp+"` or `"+op+"`");return np({NAME:s.concat(o?[]:up),UNQUOTED:c.concat(o?[]:up),DOUBLE_QUOTED:d.concat(o?[]:up),SINGLE_QUOTED:u.concat(o?[]:up),omit:n.omitOptionalTags&&pd,quote:r,alternative:a?l:null,unquoted:Boolean(n.preferUnquoted),tight:n.tightAttributes,tightLists:n.tightCommaSeparatedLists,tightClose:n.tightSelfClosing,collapseEmpty:n.collapseEmptyAttributes,dangerous:n.allowDangerousHTML,voids:n.voids||Vs.concat(),entities:n.entities||{},close:n.closeSelfClosing},e)},op='"',lp="'",sp=["&"," ","\t","\n","\r","\f","/",">","="],cp=sp.concat("\0",op,lp,"<"),up=[op,lp,"`"],dp=["&"," ","\t","\n","\r","\f",">"],pp=dp.concat("\0",op,lp,"<","=","`"),mp=["&",lp],gp=mp.concat("\0"),hp=["&",op],fp=hp.concat("\0");var _p=ip,Ep=function(t){var n=e(t,this.data("settings"));this.Compiler=function(e){return _p(e,n)}};var Tp=f(function(e){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}),bp=function(t){var n,r,a;for(r in Tp(o,t),Tp(i,o),n=o.prototype)(a=n[r])&&"object"==typeof a&&(n[r]="concat"in a?a.concat():e(a));return o;function i(e){return t.apply(this,e)}function o(){return this instanceof o?t.apply(this,arguments):new i(arguments)}};var vp=function(e,t,n){return function(){var r=n||this,a=r[e];return r[e]=!t,function(){r[e]=a}}};var Ap=function(e,t){return function(n){var r,a=0,i=n.indexOf("\\"),o=e[t],l=[];for(;-1!==i;)l.push(n.slice(a,i)),a=i+1,(r=n.charAt(a))&&-1!==o.indexOf(r)||l.push("\\"),i=n.indexOf("\\",a);return l.push(n.slice(a)),l.join("")}};var Sp={AEli:"Æ",AElig:"Æ",AM:"&",AMP:"&",Aacut:"Á",Aacute:"Á",Abreve:"Ă",Acir:"Â",Acirc:"Â",Acy:"А",Afr:"𝔄",Agrav:"À",Agrave:"À",Alpha:"Α",Amacr:"Ā",And:"⩓",Aogon:"Ą",Aopf:"𝔸",ApplyFunction:"⁡",Arin:"Å",Aring:"Å",Ascr:"𝒜",Assign:"≔",Atild:"Ã",Atilde:"Ã",Aum:"Ä",Auml:"Ä",Backslash:"∖",Barv:"⫧",Barwed:"⌆",Bcy:"Б",Because:"∵",Bernoullis:"ℬ",Beta:"Β",Bfr:"𝔅",Bopf:"𝔹",Breve:"˘",Bscr:"ℬ",Bumpeq:"≎",CHcy:"Ч",COP:"©",COPY:"©",Cacute:"Ć",Cap:"⋒",CapitalDifferentialD:"ⅅ",Cayleys:"ℭ",Ccaron:"Č",Ccedi:"Ç",Ccedil:"Ç",Ccirc:"Ĉ",Cconint:"∰",Cdot:"Ċ",Cedilla:"¸",CenterDot:"·",Cfr:"ℭ",Chi:"Χ",CircleDot:"⊙",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",Colon:"∷",Colone:"⩴",Congruent:"≡",Conint:"∯",ContourIntegral:"∮",Copf:"ℂ",Coproduct:"∐",CounterClockwiseContourIntegral:"∳",Cross:"⨯",Cscr:"𝒞",Cup:"⋓",CupCap:"≍",DD:"ⅅ",DDotrahd:"⤑",DJcy:"Ђ",DScy:"Ѕ",DZcy:"Џ",Dagger:"‡",Darr:"↡",Dashv:"⫤",Dcaron:"Ď",Dcy:"Д",Del:"∇",Delta:"Δ",Dfr:"𝔇",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",Diamond:"⋄",DifferentialD:"ⅆ",Dopf:"𝔻",Dot:"¨",DotDot:"⃜",DotEqual:"≐",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",Downarrow:"⇓",Dscr:"𝒟",Dstrok:"Đ",ENG:"Ŋ",ET:"Ð",ETH:"Ð",Eacut:"É",Eacute:"É",Ecaron:"Ě",Ecir:"Ê",Ecirc:"Ê",Ecy:"Э",Edot:"Ė",Efr:"𝔈",Egrav:"È",Egrave:"È",Element:"∈",Emacr:"Ē",EmptySmallSquare:"◻",EmptyVerySmallSquare:"▫",Eogon:"Ę",Eopf:"𝔼",Epsilon:"Ε",Equal:"⩵",EqualTilde:"≂",Equilibrium:"⇌",Escr:"ℰ",Esim:"⩳",Eta:"Η",Eum:"Ë",Euml:"Ë",Exists:"∃",ExponentialE:"ⅇ",Fcy:"Ф",Ffr:"𝔉",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",Fopf:"𝔽",ForAll:"∀",Fouriertrf:"ℱ",Fscr:"ℱ",GJcy:"Ѓ",G:">",GT:">",Gamma:"Γ",Gammad:"Ϝ",Gbreve:"Ğ",Gcedil:"Ģ",Gcirc:"Ĝ",Gcy:"Г",Gdot:"Ġ",Gfr:"𝔊",Gg:"⋙",Gopf:"𝔾",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",Gt:"≫",HARDcy:"Ъ",Hacek:"ˇ",Hat:"^",Hcirc:"Ĥ",Hfr:"ℌ",HilbertSpace:"ℋ",Hopf:"ℍ",HorizontalLine:"─",Hscr:"ℋ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",IEcy:"Е",IJlig:"IJ",IOcy:"Ё",Iacut:"Í",Iacute:"Í",Icir:"Î",Icirc:"Î",Icy:"И",Idot:"İ",Ifr:"ℑ",Igrav:"Ì",Igrave:"Ì",Im:"ℑ",Imacr:"Ī",ImaginaryI:"ⅈ",Implies:"⇒",Int:"∬",Integral:"∫",Intersection:"⋂",InvisibleComma:"⁣",InvisibleTimes:"⁢",Iogon:"Į",Iopf:"𝕀",Iota:"Ι",Iscr:"ℐ",Itilde:"Ĩ",Iukcy:"І",Ium:"Ï",Iuml:"Ï",Jcirc:"Ĵ",Jcy:"Й",Jfr:"𝔍",Jopf:"𝕁",Jscr:"𝒥",Jsercy:"Ј",Jukcy:"Є",KHcy:"Х",KJcy:"Ќ",Kappa:"Κ",Kcedil:"Ķ",Kcy:"К",Kfr:"𝔎",Kopf:"𝕂",Kscr:"𝒦",LJcy:"Љ",L:"<",LT:"<",Lacute:"Ĺ",Lambda:"Λ",Lang:"⟪",Laplacetrf:"ℒ",Larr:"↞",Lcaron:"Ľ",Lcedil:"Ļ",Lcy:"Л",LeftAngleBracket:"⟨",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",LeftRightArrow:"↔",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",Leftarrow:"⇐",Leftrightarrow:"⇔",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",LessLess:"⪡",LessSlantEqual:"⩽",LessTilde:"≲",Lfr:"𝔏",Ll:"⋘",Lleftarrow:"⇚",Lmidot:"Ŀ",LongLeftArrow:"⟵",LongLeftRightArrow:"⟷",LongRightArrow:"⟶",Longleftarrow:"⟸",Longleftrightarrow:"⟺",Longrightarrow:"⟹",Lopf:"𝕃",LowerLeftArrow:"↙",LowerRightArrow:"↘",Lscr:"ℒ",Lsh:"↰",Lstrok:"Ł",Lt:"≪",Mcy:"М",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",MinusPlus:"∓",Mopf:"𝕄",Mscr:"ℳ",Mu:"Μ",NJcy:"Њ",Nacute:"Ń",Ncaron:"Ň",Ncedil:"Ņ",Ncy:"Н",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",Nfr:"𝔑",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",Nscr:"𝒩",Ntild:"Ñ",Ntilde:"Ñ",Nu:"Ν",OElig:"Œ",Oacut:"Ó",Oacute:"Ó",Ocir:"Ô",Ocirc:"Ô",Ocy:"О",Odblac:"Ő",Ofr:"𝔒",Ograv:"Ò",Ograve:"Ò",Omacr:"Ō",Omega:"Ω",Omicron:"Ο",Oopf:"𝕆",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",Or:"⩔",Oscr:"𝒪",Oslas:"Ø",Oslash:"Ø",Otild:"Õ",Otilde:"Õ",Otimes:"⨷",Oum:"Ö",Ouml:"Ö",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",PartialD:"∂",Pcy:"П",Pfr:"𝔓",Phi:"Φ",Pi:"Π",PlusMinus:"±",Poincareplane:"ℌ",Popf:"ℙ",Pr:"⪻",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",Prime:"″",Product:"∏",Proportion:"∷",Proportional:"∝",Pscr:"𝒫",Psi:"Ψ",QUO:'"',QUOT:'"',Qfr:"𝔔",Qopf:"ℚ",Qscr:"𝒬",RBarr:"⤐",RE:"®",REG:"®",Racute:"Ŕ",Rang:"⟫",Rarr:"↠",Rarrtl:"⤖",Rcaron:"Ř",Rcedil:"Ŗ",Rcy:"Р",Re:"ℜ",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",Rfr:"ℜ",Rho:"Ρ",RightAngleBracket:"⟩",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",Rightarrow:"⇒",Ropf:"ℝ",RoundImplies:"⥰",Rrightarrow:"⇛",Rscr:"ℛ",Rsh:"↱",RuleDelayed:"⧴",SHCHcy:"Щ",SHcy:"Ш",SOFTcy:"Ь",Sacute:"Ś",Sc:"⪼",Scaron:"Š",Scedil:"Ş",Scirc:"Ŝ",Scy:"С",Sfr:"𝔖",ShortDownArrow:"↓",ShortLeftArrow:"←",ShortRightArrow:"→",ShortUpArrow:"↑",Sigma:"Σ",SmallCircle:"∘",Sopf:"𝕊",Sqrt:"√",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",Sscr:"𝒮",Star:"⋆",Sub:"⋐",Subset:"⋐",SubsetEqual:"⊆",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",SuchThat:"∋",Sum:"∑",Sup:"⋑",Superset:"⊃",SupersetEqual:"⊇",Supset:"⋑",THOR:"Þ",THORN:"Þ",TRADE:"™",TSHcy:"Ћ",TScy:"Ц",Tab:"\t",Tau:"Τ",Tcaron:"Ť",Tcedil:"Ţ",Tcy:"Т",Tfr:"𝔗",Therefore:"∴",Theta:"Θ",ThickSpace:"  ",ThinSpace:" ",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",Topf:"𝕋",TripleDot:"⃛",Tscr:"𝒯",Tstrok:"Ŧ",Uacut:"Ú",Uacute:"Ú",Uarr:"↟",Uarrocir:"⥉",Ubrcy:"Ў",Ubreve:"Ŭ",Ucir:"Û",Ucirc:"Û",Ucy:"У",Udblac:"Ű",Ufr:"𝔘",Ugrav:"Ù",Ugrave:"Ù",Umacr:"Ū",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",Uopf:"𝕌",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",UpEquilibrium:"⥮",UpTee:"⊥",UpTeeArrow:"↥",Uparrow:"⇑",Updownarrow:"⇕",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",Upsilon:"Υ",Uring:"Ů",Uscr:"𝒰",Utilde:"Ũ",Uum:"Ü",Uuml:"Ü",VDash:"⊫",Vbar:"⫫",Vcy:"В",Vdash:"⊩",Vdashl:"⫦",Vee:"⋁",Verbar:"‖",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",Vopf:"𝕍",Vscr:"𝒱",Vvdash:"⊪",Wcirc:"Ŵ",Wedge:"⋀",Wfr:"𝔚",Wopf:"𝕎",Wscr:"𝒲",Xfr:"𝔛",Xi:"Ξ",Xopf:"𝕏",Xscr:"𝒳",YAcy:"Я",YIcy:"Ї",YUcy:"Ю",Yacut:"Ý",Yacute:"Ý",Ycirc:"Ŷ",Ycy:"Ы",Yfr:"𝔜",Yopf:"𝕐",Yscr:"𝒴",Yuml:"Ÿ",ZHcy:"Ж",Zacute:"Ź",Zcaron:"Ž",Zcy:"З",Zdot:"Ż",ZeroWidthSpace:"​",Zeta:"Ζ",Zfr:"ℨ",Zopf:"ℤ",Zscr:"𝒵",aacut:"á",aacute:"á",abreve:"ă",ac:"∾",acE:"∾̳",acd:"∿",acir:"â",acirc:"â",acut:"´",acute:"´",acy:"а",aeli:"æ",aelig:"æ",af:"⁡",afr:"𝔞",agrav:"à",agrave:"à",alefsym:"ℵ",aleph:"ℵ",alpha:"α",amacr:"ā",amalg:"⨿",am:"&",amp:"&",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",aopf:"𝕒",ap:"≈",apE:"⩰",apacir:"⩯",ape:"≊",apid:"≋",apos:"'",approx:"≈",approxeq:"≊",arin:"å",aring:"å",ascr:"𝒶",ast:"*",asymp:"≈",asympeq:"≍",atild:"ã",atilde:"ã",aum:"ä",auml:"ä",awconint:"∳",awint:"⨑",bNot:"⫭",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",barvee:"⊽",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",beta:"β",beth:"ℶ",between:"≬",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxDL:"╗",boxDR:"╔",boxDl:"╖",boxDr:"╓",boxH:"═",boxHD:"╦",boxHU:"╩",boxHd:"╤",boxHu:"╧",boxUL:"╝",boxUR:"╚",boxUl:"╜",boxUr:"╙",boxV:"║",boxVH:"╬",boxVL:"╣",boxVR:"╠",boxVh:"╫",boxVl:"╢",boxVr:"╟",boxbox:"⧉",boxdL:"╕",boxdR:"╒",boxdl:"┐",boxdr:"┌",boxh:"─",boxhD:"╥",boxhU:"╨",boxhd:"┬",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxuL:"╛",boxuR:"╘",boxul:"┘",boxur:"└",boxv:"│",boxvH:"╪",boxvL:"╡",boxvR:"╞",boxvh:"┼",boxvl:"┤",boxvr:"├",bprime:"‵",breve:"˘",brvba:"¦",brvbar:"¦",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",bumpeq:"≏",cacute:"ć",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",caps:"∩︀",caret:"⁁",caron:"ˇ",ccaps:"⩍",ccaron:"č",ccedi:"ç",ccedil:"ç",ccirc:"ĉ",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",cedi:"¸",cedil:"¸",cemptyv:"⦲",cen:"¢",cent:"¢",centerdot:"·",cfr:"𝔠",chcy:"ч",check:"✓",checkmark:"✓",chi:"χ",cir:"○",cirE:"⧃",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledR:"®",circledS:"Ⓢ",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",clubs:"♣",clubsuit:"♣",colon:":",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",conint:"∮",copf:"𝕔",coprod:"∐",cop:"©",copy:"©",copysr:"℗",crarr:"↵",cross:"✗",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",cupbrcap:"⩈",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curre:"¤",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dArr:"⇓",dHar:"⥥",dagger:"†",daleth:"ℸ",darr:"↓",dash:"‐",dashv:"⊣",dbkarow:"⤏",dblac:"˝",dcaron:"ď",dcy:"д",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",ddotseq:"⩷",de:"°",deg:"°",delta:"δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",dharl:"⇃",dharr:"⇂",diam:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",digamma:"ϝ",disin:"⋲",div:"÷",divid:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",dot:"˙",doteq:"≐",doteqdot:"≑",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",downarrow:"↓",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",dscy:"ѕ",dsol:"⧶",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",dzigrarr:"⟿",eDDot:"⩷",eDot:"≑",eacut:"é",eacute:"é",easter:"⩮",ecaron:"ě",ecir:"ê",ecirc:"ê",ecolon:"≕",ecy:"э",edot:"ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",eg:"⪚",egrav:"è",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",empty:"∅",emptyset:"∅",emptyv:"∅",emsp13:" ",emsp14:" ",emsp:" ",eng:"ŋ",ensp:" ",eogon:"ę",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",equals:"=",equest:"≟",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erDot:"≓",erarr:"⥱",escr:"ℯ",esdot:"≐",esim:"≂",eta:"η",et:"ð",eth:"ð",eum:"ë",euml:"ë",euro:"€",excl:"!",exist:"∃",expectation:"ℰ",exponentiale:"ⅇ",fallingdotseq:"≒",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",filig:"fi",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",forall:"∀",fork:"⋔",forkv:"⫙",fpartint:"⨍",frac1:"¼",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac3:"¾",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",gE:"≧",gEl:"⪌",gacute:"ǵ",gamma:"γ",gammad:"ϝ",gap:"⪆",gbreve:"ğ",gcirc:"ĝ",gcy:"г",gdot:"ġ",ge:"≥",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",gg:"≫",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",gl:"≷",glE:"⪒",gla:"⪥",glj:"⪤",gnE:"≩",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",grave:"`",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",g:">",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",hArr:"⇔",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",harr:"↔",harrcir:"⥈",harrw:"↭",hbar:"ℏ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",horbar:"―",hscr:"𝒽",hslash:"ℏ",hstrok:"ħ",hybull:"⁃",hyphen:"‐",iacut:"í",iacute:"í",ic:"⁣",icir:"î",icirc:"î",icy:"и",iecy:"е",iexc:"¡",iexcl:"¡",iff:"⇔",ifr:"𝔦",igrav:"ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",imacr:"ī",image:"ℑ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",intcal:"⊺",integers:"ℤ",intercal:"⊺",intlarhk:"⨗",intprod:"⨼",iocy:"ё",iogon:"į",iopf:"𝕚",iota:"ι",iprod:"⨼",iques:"¿",iquest:"¿",iscr:"𝒾",isin:"∈",isinE:"⋹",isindot:"⋵",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",iukcy:"і",ium:"ï",iuml:"ï",jcirc:"ĵ",jcy:"й",jfr:"𝔧",jmath:"ȷ",jopf:"𝕛",jscr:"𝒿",jsercy:"ј",jukcy:"є",kappa:"κ",kappav:"ϰ",kcedil:"ķ",kcy:"к",kfr:"𝔨",kgreen:"ĸ",khcy:"х",kjcy:"ќ",kopf:"𝕜",kscr:"𝓀",lAarr:"⇚",lArr:"⇐",lAtail:"⤛",lBarr:"⤎",lE:"≦",lEg:"⪋",lHar:"⥢",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",laqu:"«",laquo:"«",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",late:"⪭",lates:"⪭︀",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",lcedil:"ļ",lceil:"⌈",lcub:"{",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",leftarrow:"←",leftarrowtail:"↢",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",leftthreetimes:"⋋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",lessgtr:"≶",lesssim:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",lg:"≶",lgE:"⪑",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",ll:"≪",llarr:"⇇",llcorner:"⌞",llhard:"⥫",lltri:"◺",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnE:"≨",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",longleftrightarrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",l:"<",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltrPar:"⦖",ltri:"◃",ltrie:"⊴",ltrif:"◂",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",mDDot:"∺",mac:"¯",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",mdash:"—",measuredangle:"∡",mfr:"𝔪",mho:"℧",micr:"µ",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middo:"·",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",mp:"∓",mscr:"𝓂",mstpos:"∾",mu:"μ",multimap:"⊸",mumap:"⊸",nGg:"⋙̸",nGt:"≫⃒",nGtv:"≫̸",nLeftarrow:"⇍",nLeftrightarrow:"⇎",nLl:"⋘̸",nLt:"≪⃒",nLtv:"≪̸",nRightarrow:"⇏",nVDash:"⊯",nVdash:"⊮",nabla:"∇",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbs:" ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",ndash:"–",ne:"≠",neArr:"⇗",nearhk:"⤤",nearr:"↗",nearrow:"↗",nedot:"≐̸",nequiv:"≢",nesear:"⤨",nesim:"≂̸",nexist:"∄",nexists:"∄",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",ngsim:"≵",ngt:"≯",ngtr:"≯",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",nlArr:"⇍",nlE:"≦̸",nlarr:"↚",nldr:"‥",nle:"≰",nleftarrow:"↚",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nlsim:"≴",nlt:"≮",nltri:"⋪",nltrie:"⋬",nmid:"∤",nopf:"𝕟",no:"¬",not:"¬",notin:"∉",notinE:"⋹̸",notindot:"⋵̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntild:"ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",num:"#",numero:"№",numsp:" ",nvDash:"⊭",nvHarr:"⤄",nvap:"≍⃒",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwArr:"⇖",nwarhk:"⤣",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",oS:"Ⓢ",oacut:"ó",oacute:"ó",oast:"⊛",ocir:"ô",ocirc:"ô",ocy:"о",odash:"⊝",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",ofcir:"⦿",ofr:"𝔬",ogon:"˛",ograv:"ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",omega:"ω",omicron:"ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",opar:"⦷",operp:"⦹",oplus:"⊕",or:"∨",orarr:"↻",ord:"º",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oscr:"ℴ",oslas:"ø",oslash:"ø",osol:"⊘",otild:"õ",otilde:"õ",otimes:"⊗",otimesas:"⨶",oum:"ö",ouml:"ö",ovbar:"⌽",par:"¶",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",plusm:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",pointint:"⨕",popf:"𝕡",poun:"£",pound:"£",pr:"≺",prE:"⪳",prap:"⪷",prcue:"≼",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",primes:"ℙ",prnE:"⪵",prnap:"⪹",prnsim:"⋨",prod:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",psi:"ψ",puncsp:" ",qfr:"𝔮",qint:"⨌",qopf:"𝕢",qprime:"⁗",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quo:'"',quot:'"',rAarr:"⇛",rArr:"⇒",rAtail:"⤜",rBarr:"⤏",rHar:"⥤",race:"∽̱",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raqu:"»",raquo:"»",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",rarrw:"↝",ratail:"⤚",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",rcedil:"ŗ",rceil:"⌉",rcub:"}",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",re:"®",reg:"®",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",rhov:"ϱ",rightarrow:"→",rightarrowtail:"↣",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",rightthreetimes:"⋌",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",rsaquo:"›",rscr:"𝓇",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",ruluhar:"⥨",rx:"℞",sacute:"ś",sbquo:"‚",sc:"≻",scE:"⪴",scap:"⪸",scaron:"š",sccue:"≽",sce:"⪰",scedil:"ş",scirc:"ŝ",scnE:"⪶",scnap:"⪺",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",seArr:"⇘",searhk:"⤥",searr:"↘",searrow:"↘",sec:"§",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",sfrown:"⌢",sharp:"♯",shchcy:"щ",shcy:"ш",shortmid:"∣",shortparallel:"∥",sh:"­",shy:"­",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",subE:"⫅",subdot:"⪽",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",sum:"∑",sung:"♪",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supE:"⫆",supdot:"⪾",supdsub:"⫘",supe:"⊇",supedot:"⫄",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swArr:"⇙",swarhk:"⤦",swarr:"↙",swarrow:"↙",swnwar:"⤪",szli:"ß",szlig:"ß",target:"⌖",tau:"τ",tbrk:"⎴",tcaron:"ť",tcedil:"ţ",tcy:"т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",there4:"∴",therefore:"∴",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",thinsp:" ",thkap:"≈",thksim:"∼",thor:"þ",thorn:"þ",tilde:"˜",time:"×",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",tscy:"ц",tshcy:"ћ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uArr:"⇑",uHar:"⥣",uacut:"ú",uacute:"ú",uarr:"↑",ubrcy:"ў",ubreve:"ŭ",ucir:"û",ucirc:"û",ucy:"у",udarr:"⇅",udblac:"ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",ugrav:"ù",ugrave:"ù",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",um:"¨",uml:"¨",uogon:"ų",uopf:"𝕦",uparrow:"↑",updownarrow:"↕",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",upsi:"υ",upsih:"ϒ",upsilon:"υ",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",urtri:"◹",uscr:"𝓊",utdot:"⋰",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uum:"ü",uuml:"ü",uwangle:"⦧",vArr:"⇕",vBar:"⫨",vBarv:"⫩",vDash:"⊨",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vcy:"в",vdash:"⊢",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",vert:"|",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",vprop:"∝",vrtri:"⊳",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",vzigzag:"⦚",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",wedgeq:"≙",weierp:"℘",wfr:"𝔴",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacut:"ý",yacute:"ý",yacy:"я",ycirc:"ŷ",ycy:"ы",ye:"¥",yen:"¥",yfr:"𝔶",yicy:"ї",yopf:"𝕪",yscr:"𝓎",yucy:"ю",yum:"ÿ",yuml:"ÿ",zacute:"ź",zcaron:"ž",zcy:"з",zdot:"ż",zeetrf:"ℨ",zeta:"ζ",zfr:"𝔷",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",zscr:"𝓏",zwj:"‍",zwnj:"‌",Map:"⤅",in:"∈"},yp=Object.freeze({AEli:"Æ",AElig:"Æ",AM:"&",AMP:"&",Aacut:"Á",Aacute:"Á",Abreve:"Ă",Acir:"Â",Acirc:"Â",Acy:"А",Afr:"𝔄",Agrav:"À",Agrave:"À",Alpha:"Α",Amacr:"Ā",And:"⩓",Aogon:"Ą",Aopf:"𝔸",ApplyFunction:"⁡",Arin:"Å",Aring:"Å",Ascr:"𝒜",Assign:"≔",Atild:"Ã",Atilde:"Ã",Aum:"Ä",Auml:"Ä",Backslash:"∖",Barv:"⫧",Barwed:"⌆",Bcy:"Б",Because:"∵",Bernoullis:"ℬ",Beta:"Β",Bfr:"𝔅",Bopf:"𝔹",Breve:"˘",Bscr:"ℬ",Bumpeq:"≎",CHcy:"Ч",COP:"©",COPY:"©",Cacute:"Ć",Cap:"⋒",CapitalDifferentialD:"ⅅ",Cayleys:"ℭ",Ccaron:"Č",Ccedi:"Ç",Ccedil:"Ç",Ccirc:"Ĉ",Cconint:"∰",Cdot:"Ċ",Cedilla:"¸",CenterDot:"·",Cfr:"ℭ",Chi:"Χ",CircleDot:"⊙",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",Colon:"∷",Colone:"⩴",Congruent:"≡",Conint:"∯",ContourIntegral:"∮",Copf:"ℂ",Coproduct:"∐",CounterClockwiseContourIntegral:"∳",Cross:"⨯",Cscr:"𝒞",Cup:"⋓",CupCap:"≍",DD:"ⅅ",DDotrahd:"⤑",DJcy:"Ђ",DScy:"Ѕ",DZcy:"Џ",Dagger:"‡",Darr:"↡",Dashv:"⫤",Dcaron:"Ď",Dcy:"Д",Del:"∇",Delta:"Δ",Dfr:"𝔇",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",Diamond:"⋄",DifferentialD:"ⅆ",Dopf:"𝔻",Dot:"¨",DotDot:"⃜",DotEqual:"≐",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",Downarrow:"⇓",Dscr:"𝒟",Dstrok:"Đ",ENG:"Ŋ",ET:"Ð",ETH:"Ð",Eacut:"É",Eacute:"É",Ecaron:"Ě",Ecir:"Ê",Ecirc:"Ê",Ecy:"Э",Edot:"Ė",Efr:"𝔈",Egrav:"È",Egrave:"È",Element:"∈",Emacr:"Ē",EmptySmallSquare:"◻",EmptyVerySmallSquare:"▫",Eogon:"Ę",Eopf:"𝔼",Epsilon:"Ε",Equal:"⩵",EqualTilde:"≂",Equilibrium:"⇌",Escr:"ℰ",Esim:"⩳",Eta:"Η",Eum:"Ë",Euml:"Ë",Exists:"∃",ExponentialE:"ⅇ",Fcy:"Ф",Ffr:"𝔉",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",Fopf:"𝔽",ForAll:"∀",Fouriertrf:"ℱ",Fscr:"ℱ",GJcy:"Ѓ",G:">",GT:">",Gamma:"Γ",Gammad:"Ϝ",Gbreve:"Ğ",Gcedil:"Ģ",Gcirc:"Ĝ",Gcy:"Г",Gdot:"Ġ",Gfr:"𝔊",Gg:"⋙",Gopf:"𝔾",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",Gt:"≫",HARDcy:"Ъ",Hacek:"ˇ",Hat:"^",Hcirc:"Ĥ",Hfr:"ℌ",HilbertSpace:"ℋ",Hopf:"ℍ",HorizontalLine:"─",Hscr:"ℋ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",IEcy:"Е",IJlig:"IJ",IOcy:"Ё",Iacut:"Í",Iacute:"Í",Icir:"Î",Icirc:"Î",Icy:"И",Idot:"İ",Ifr:"ℑ",Igrav:"Ì",Igrave:"Ì",Im:"ℑ",Imacr:"Ī",ImaginaryI:"ⅈ",Implies:"⇒",Int:"∬",Integral:"∫",Intersection:"⋂",InvisibleComma:"⁣",InvisibleTimes:"⁢",Iogon:"Į",Iopf:"𝕀",Iota:"Ι",Iscr:"ℐ",Itilde:"Ĩ",Iukcy:"І",Ium:"Ï",Iuml:"Ï",Jcirc:"Ĵ",Jcy:"Й",Jfr:"𝔍",Jopf:"𝕁",Jscr:"𝒥",Jsercy:"Ј",Jukcy:"Є",KHcy:"Х",KJcy:"Ќ",Kappa:"Κ",Kcedil:"Ķ",Kcy:"К",Kfr:"𝔎",Kopf:"𝕂",Kscr:"𝒦",LJcy:"Љ",L:"<",LT:"<",Lacute:"Ĺ",Lambda:"Λ",Lang:"⟪",Laplacetrf:"ℒ",Larr:"↞",Lcaron:"Ľ",Lcedil:"Ļ",Lcy:"Л",LeftAngleBracket:"⟨",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",LeftRightArrow:"↔",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",Leftarrow:"⇐",Leftrightarrow:"⇔",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",LessLess:"⪡",LessSlantEqual:"⩽",LessTilde:"≲",Lfr:"𝔏",Ll:"⋘",Lleftarrow:"⇚",Lmidot:"Ŀ",LongLeftArrow:"⟵",LongLeftRightArrow:"⟷",LongRightArrow:"⟶",Longleftarrow:"⟸",Longleftrightarrow:"⟺",Longrightarrow:"⟹",Lopf:"𝕃",LowerLeftArrow:"↙",LowerRightArrow:"↘",Lscr:"ℒ",Lsh:"↰",Lstrok:"Ł",Lt:"≪",Mcy:"М",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",MinusPlus:"∓",Mopf:"𝕄",Mscr:"ℳ",Mu:"Μ",NJcy:"Њ",Nacute:"Ń",Ncaron:"Ň",Ncedil:"Ņ",Ncy:"Н",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",Nfr:"𝔑",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",Nscr:"𝒩",Ntild:"Ñ",Ntilde:"Ñ",Nu:"Ν",OElig:"Œ",Oacut:"Ó",Oacute:"Ó",Ocir:"Ô",Ocirc:"Ô",Ocy:"О",Odblac:"Ő",Ofr:"𝔒",Ograv:"Ò",Ograve:"Ò",Omacr:"Ō",Omega:"Ω",Omicron:"Ο",Oopf:"𝕆",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",Or:"⩔",Oscr:"𝒪",Oslas:"Ø",Oslash:"Ø",Otild:"Õ",Otilde:"Õ",Otimes:"⨷",Oum:"Ö",Ouml:"Ö",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",PartialD:"∂",Pcy:"П",Pfr:"𝔓",Phi:"Φ",Pi:"Π",PlusMinus:"±",Poincareplane:"ℌ",Popf:"ℙ",Pr:"⪻",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",Prime:"″",Product:"∏",Proportion:"∷",Proportional:"∝",Pscr:"𝒫",Psi:"Ψ",QUO:'"',QUOT:'"',Qfr:"𝔔",Qopf:"ℚ",Qscr:"𝒬",RBarr:"⤐",RE:"®",REG:"®",Racute:"Ŕ",Rang:"⟫",Rarr:"↠",Rarrtl:"⤖",Rcaron:"Ř",Rcedil:"Ŗ",Rcy:"Р",Re:"ℜ",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",Rfr:"ℜ",Rho:"Ρ",RightAngleBracket:"⟩",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",Rightarrow:"⇒",Ropf:"ℝ",RoundImplies:"⥰",Rrightarrow:"⇛",Rscr:"ℛ",Rsh:"↱",RuleDelayed:"⧴",SHCHcy:"Щ",SHcy:"Ш",SOFTcy:"Ь",Sacute:"Ś",Sc:"⪼",Scaron:"Š",Scedil:"Ş",Scirc:"Ŝ",Scy:"С",Sfr:"𝔖",ShortDownArrow:"↓",ShortLeftArrow:"←",ShortRightArrow:"→",ShortUpArrow:"↑",Sigma:"Σ",SmallCircle:"∘",Sopf:"𝕊",Sqrt:"√",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",Sscr:"𝒮",Star:"⋆",Sub:"⋐",Subset:"⋐",SubsetEqual:"⊆",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",SuchThat:"∋",Sum:"∑",Sup:"⋑",Superset:"⊃",SupersetEqual:"⊇",Supset:"⋑",THOR:"Þ",THORN:"Þ",TRADE:"™",TSHcy:"Ћ",TScy:"Ц",Tab:"\t",Tau:"Τ",Tcaron:"Ť",Tcedil:"Ţ",Tcy:"Т",Tfr:"𝔗",Therefore:"∴",Theta:"Θ",ThickSpace:"  ",ThinSpace:" ",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",Topf:"𝕋",TripleDot:"⃛",Tscr:"𝒯",Tstrok:"Ŧ",Uacut:"Ú",Uacute:"Ú",Uarr:"↟",Uarrocir:"⥉",Ubrcy:"Ў",Ubreve:"Ŭ",Ucir:"Û",Ucirc:"Û",Ucy:"У",Udblac:"Ű",Ufr:"𝔘",Ugrav:"Ù",Ugrave:"Ù",Umacr:"Ū",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",Uopf:"𝕌",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",UpEquilibrium:"⥮",UpTee:"⊥",UpTeeArrow:"↥",Uparrow:"⇑",Updownarrow:"⇕",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",Upsilon:"Υ",Uring:"Ů",Uscr:"𝒰",Utilde:"Ũ",Uum:"Ü",Uuml:"Ü",VDash:"⊫",Vbar:"⫫",Vcy:"В",Vdash:"⊩",Vdashl:"⫦",Vee:"⋁",Verbar:"‖",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",Vopf:"𝕍",Vscr:"𝒱",Vvdash:"⊪",Wcirc:"Ŵ",Wedge:"⋀",Wfr:"𝔚",Wopf:"𝕎",Wscr:"𝒲",Xfr:"𝔛",Xi:"Ξ",Xopf:"𝕏",Xscr:"𝒳",YAcy:"Я",YIcy:"Ї",YUcy:"Ю",Yacut:"Ý",Yacute:"Ý",Ycirc:"Ŷ",Ycy:"Ы",Yfr:"𝔜",Yopf:"𝕐",Yscr:"𝒴",Yuml:"Ÿ",ZHcy:"Ж",Zacute:"Ź",Zcaron:"Ž",Zcy:"З",Zdot:"Ż",ZeroWidthSpace:"​",Zeta:"Ζ",Zfr:"ℨ",Zopf:"ℤ",Zscr:"𝒵",aacut:"á",aacute:"á",abreve:"ă",ac:"∾",acE:"∾̳",acd:"∿",acir:"â",acirc:"â",acut:"´",acute:"´",acy:"а",aeli:"æ",aelig:"æ",af:"⁡",afr:"𝔞",agrav:"à",agrave:"à",alefsym:"ℵ",aleph:"ℵ",alpha:"α",amacr:"ā",amalg:"⨿",am:"&",amp:"&",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",aopf:"𝕒",ap:"≈",apE:"⩰",apacir:"⩯",ape:"≊",apid:"≋",apos:"'",approx:"≈",approxeq:"≊",arin:"å",aring:"å",ascr:"𝒶",ast:"*",asymp:"≈",asympeq:"≍",atild:"ã",atilde:"ã",aum:"ä",auml:"ä",awconint:"∳",awint:"⨑",bNot:"⫭",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",barvee:"⊽",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",beta:"β",beth:"ℶ",between:"≬",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxDL:"╗",boxDR:"╔",boxDl:"╖",boxDr:"╓",boxH:"═",boxHD:"╦",boxHU:"╩",boxHd:"╤",boxHu:"╧",boxUL:"╝",boxUR:"╚",boxUl:"╜",boxUr:"╙",boxV:"║",boxVH:"╬",boxVL:"╣",boxVR:"╠",boxVh:"╫",boxVl:"╢",boxVr:"╟",boxbox:"⧉",boxdL:"╕",boxdR:"╒",boxdl:"┐",boxdr:"┌",boxh:"─",boxhD:"╥",boxhU:"╨",boxhd:"┬",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxuL:"╛",boxuR:"╘",boxul:"┘",boxur:"└",boxv:"│",boxvH:"╪",boxvL:"╡",boxvR:"╞",boxvh:"┼",boxvl:"┤",boxvr:"├",bprime:"‵",breve:"˘",brvba:"¦",brvbar:"¦",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",bumpeq:"≏",cacute:"ć",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",caps:"∩︀",caret:"⁁",caron:"ˇ",ccaps:"⩍",ccaron:"č",ccedi:"ç",ccedil:"ç",ccirc:"ĉ",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",cedi:"¸",cedil:"¸",cemptyv:"⦲",cen:"¢",cent:"¢",centerdot:"·",cfr:"𝔠",chcy:"ч",check:"✓",checkmark:"✓",chi:"χ",cir:"○",cirE:"⧃",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledR:"®",circledS:"Ⓢ",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",clubs:"♣",clubsuit:"♣",colon:":",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",conint:"∮",copf:"𝕔",coprod:"∐",cop:"©",copy:"©",copysr:"℗",crarr:"↵",cross:"✗",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",cupbrcap:"⩈",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curre:"¤",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dArr:"⇓",dHar:"⥥",dagger:"†",daleth:"ℸ",darr:"↓",dash:"‐",dashv:"⊣",dbkarow:"⤏",dblac:"˝",dcaron:"ď",dcy:"д",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",ddotseq:"⩷",de:"°",deg:"°",delta:"δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",dharl:"⇃",dharr:"⇂",diam:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",digamma:"ϝ",disin:"⋲",div:"÷",divid:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",dot:"˙",doteq:"≐",doteqdot:"≑",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",downarrow:"↓",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",dscy:"ѕ",dsol:"⧶",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",dzigrarr:"⟿",eDDot:"⩷",eDot:"≑",eacut:"é",eacute:"é",easter:"⩮",ecaron:"ě",ecir:"ê",ecirc:"ê",ecolon:"≕",ecy:"э",edot:"ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",eg:"⪚",egrav:"è",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",empty:"∅",emptyset:"∅",emptyv:"∅",emsp13:" ",emsp14:" ",emsp:" ",eng:"ŋ",ensp:" ",eogon:"ę",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",equals:"=",equest:"≟",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erDot:"≓",erarr:"⥱",escr:"ℯ",esdot:"≐",esim:"≂",eta:"η",et:"ð",eth:"ð",eum:"ë",euml:"ë",euro:"€",excl:"!",exist:"∃",expectation:"ℰ",exponentiale:"ⅇ",fallingdotseq:"≒",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",filig:"fi",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",forall:"∀",fork:"⋔",forkv:"⫙",fpartint:"⨍",frac1:"¼",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac3:"¾",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",gE:"≧",gEl:"⪌",gacute:"ǵ",gamma:"γ",gammad:"ϝ",gap:"⪆",gbreve:"ğ",gcirc:"ĝ",gcy:"г",gdot:"ġ",ge:"≥",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",gg:"≫",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",gl:"≷",glE:"⪒",gla:"⪥",glj:"⪤",gnE:"≩",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",grave:"`",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",g:">",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",hArr:"⇔",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",harr:"↔",harrcir:"⥈",harrw:"↭",hbar:"ℏ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",horbar:"―",hscr:"𝒽",hslash:"ℏ",hstrok:"ħ",hybull:"⁃",hyphen:"‐",iacut:"í",iacute:"í",ic:"⁣",icir:"î",icirc:"î",icy:"и",iecy:"е",iexc:"¡",iexcl:"¡",iff:"⇔",ifr:"𝔦",igrav:"ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",imacr:"ī",image:"ℑ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",intcal:"⊺",integers:"ℤ",intercal:"⊺",intlarhk:"⨗",intprod:"⨼",iocy:"ё",iogon:"į",iopf:"𝕚",iota:"ι",iprod:"⨼",iques:"¿",iquest:"¿",iscr:"𝒾",isin:"∈",isinE:"⋹",isindot:"⋵",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",iukcy:"і",ium:"ï",iuml:"ï",jcirc:"ĵ",jcy:"й",jfr:"𝔧",jmath:"ȷ",jopf:"𝕛",jscr:"𝒿",jsercy:"ј",jukcy:"є",kappa:"κ",kappav:"ϰ",kcedil:"ķ",kcy:"к",kfr:"𝔨",kgreen:"ĸ",khcy:"х",kjcy:"ќ",kopf:"𝕜",kscr:"𝓀",lAarr:"⇚",lArr:"⇐",lAtail:"⤛",lBarr:"⤎",lE:"≦",lEg:"⪋",lHar:"⥢",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",laqu:"«",laquo:"«",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",late:"⪭",lates:"⪭︀",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",lcedil:"ļ",lceil:"⌈",lcub:"{",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",leftarrow:"←",leftarrowtail:"↢",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",leftthreetimes:"⋋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",lessgtr:"≶",lesssim:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",lg:"≶",lgE:"⪑",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",ll:"≪",llarr:"⇇",llcorner:"⌞",llhard:"⥫",lltri:"◺",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnE:"≨",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",longleftrightarrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",l:"<",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltrPar:"⦖",ltri:"◃",ltrie:"⊴",ltrif:"◂",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",mDDot:"∺",mac:"¯",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",mdash:"—",measuredangle:"∡",mfr:"𝔪",mho:"℧",micr:"µ",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middo:"·",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",mp:"∓",mscr:"𝓂",mstpos:"∾",mu:"μ",multimap:"⊸",mumap:"⊸",nGg:"⋙̸",nGt:"≫⃒",nGtv:"≫̸",nLeftarrow:"⇍",nLeftrightarrow:"⇎",nLl:"⋘̸",nLt:"≪⃒",nLtv:"≪̸",nRightarrow:"⇏",nVDash:"⊯",nVdash:"⊮",nabla:"∇",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbs:" ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",ndash:"–",ne:"≠",neArr:"⇗",nearhk:"⤤",nearr:"↗",nearrow:"↗",nedot:"≐̸",nequiv:"≢",nesear:"⤨",nesim:"≂̸",nexist:"∄",nexists:"∄",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",ngsim:"≵",ngt:"≯",ngtr:"≯",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",nlArr:"⇍",nlE:"≦̸",nlarr:"↚",nldr:"‥",nle:"≰",nleftarrow:"↚",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nlsim:"≴",nlt:"≮",nltri:"⋪",nltrie:"⋬",nmid:"∤",nopf:"𝕟",no:"¬",not:"¬",notin:"∉",notinE:"⋹̸",notindot:"⋵̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntild:"ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",num:"#",numero:"№",numsp:" ",nvDash:"⊭",nvHarr:"⤄",nvap:"≍⃒",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwArr:"⇖",nwarhk:"⤣",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",oS:"Ⓢ",oacut:"ó",oacute:"ó",oast:"⊛",ocir:"ô",ocirc:"ô",ocy:"о",odash:"⊝",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",ofcir:"⦿",ofr:"𝔬",ogon:"˛",ograv:"ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",omega:"ω",omicron:"ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",opar:"⦷",operp:"⦹",oplus:"⊕",or:"∨",orarr:"↻",ord:"º",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oscr:"ℴ",oslas:"ø",oslash:"ø",osol:"⊘",otild:"õ",otilde:"õ",otimes:"⊗",otimesas:"⨶",oum:"ö",ouml:"ö",ovbar:"⌽",par:"¶",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",plusm:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",pointint:"⨕",popf:"𝕡",poun:"£",pound:"£",pr:"≺",prE:"⪳",prap:"⪷",prcue:"≼",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",primes:"ℙ",prnE:"⪵",prnap:"⪹",prnsim:"⋨",prod:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",psi:"ψ",puncsp:" ",qfr:"𝔮",qint:"⨌",qopf:"𝕢",qprime:"⁗",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quo:'"',quot:'"',rAarr:"⇛",rArr:"⇒",rAtail:"⤜",rBarr:"⤏",rHar:"⥤",race:"∽̱",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raqu:"»",raquo:"»",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",rarrw:"↝",ratail:"⤚",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",rcedil:"ŗ",rceil:"⌉",rcub:"}",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",re:"®",reg:"®",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",rhov:"ϱ",rightarrow:"→",rightarrowtail:"↣",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",rightthreetimes:"⋌",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",rsaquo:"›",rscr:"𝓇",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",ruluhar:"⥨",rx:"℞",sacute:"ś",sbquo:"‚",sc:"≻",scE:"⪴",scap:"⪸",scaron:"š",sccue:"≽",sce:"⪰",scedil:"ş",scirc:"ŝ",scnE:"⪶",scnap:"⪺",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",seArr:"⇘",searhk:"⤥",searr:"↘",searrow:"↘",sec:"§",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",sfrown:"⌢",sharp:"♯",shchcy:"щ",shcy:"ш",shortmid:"∣",shortparallel:"∥",sh:"­",shy:"­",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",subE:"⫅",subdot:"⪽",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",sum:"∑",sung:"♪",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supE:"⫆",supdot:"⪾",supdsub:"⫘",supe:"⊇",supedot:"⫄",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swArr:"⇙",swarhk:"⤦",swarr:"↙",swarrow:"↙",swnwar:"⤪",szli:"ß",szlig:"ß",target:"⌖",tau:"τ",tbrk:"⎴",tcaron:"ť",tcedil:"ţ",tcy:"т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",there4:"∴",therefore:"∴",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",thinsp:" ",thkap:"≈",thksim:"∼",thor:"þ",thorn:"þ",tilde:"˜",time:"×",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",tscy:"ц",tshcy:"ћ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uArr:"⇑",uHar:"⥣",uacut:"ú",uacute:"ú",uarr:"↑",ubrcy:"ў",ubreve:"ŭ",ucir:"û",ucirc:"û",ucy:"у",udarr:"⇅",udblac:"ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",ugrav:"ù",ugrave:"ù",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",um:"¨",uml:"¨",uogon:"ų",uopf:"𝕦",uparrow:"↑",updownarrow:"↕",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",upsi:"υ",upsih:"ϒ",upsilon:"υ",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",urtri:"◹",uscr:"𝓊",utdot:"⋰",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uum:"ü",uuml:"ü",uwangle:"⦧",vArr:"⇕",vBar:"⫨",vBarv:"⫩",vDash:"⊨",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vcy:"в",vdash:"⊢",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",vert:"|",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",vprop:"∝",vrtri:"⊳",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",vzigzag:"⦚",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",wedgeq:"≙",weierp:"℘",wfr:"𝔴",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacut:"ý",yacute:"ý",yacy:"я",ycirc:"ŷ",ycy:"ы",ye:"¥",yen:"¥",yfr:"𝔶",yicy:"ї",yopf:"𝕪",yscr:"𝓎",yucy:"ю",yum:"ÿ",yuml:"ÿ",zacute:"ź",zcaron:"ž",zcy:"з",zdot:"ż",zeetrf:"ℨ",zeta:"ζ",zfr:"𝔷",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",zscr:"𝓏",zwj:"‍",zwnj:"‌",default:Sp}),Np={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},Cp=Object.freeze({default:Np}),Op=yp&&Sp||yp,Mp=Cp&&Np||Cp,xp=function(e,t){var n,r,a={};t||(t={});for(r in Vp)n=t[r],a[r]=null===n||void 0===n?Vp[r]:n;(a.position.indent||a.position.start)&&(a.indent=a.position.indent||[],a.position=a.position.start);return function(e,t){var n,r,a,i,o,l,s,c,u,d,p,m,g,h,f,_,E,T,b=t.additional,v=t.nonTerminated,A=t.text,S=t.reference,y=t.warning,N=t.textContext,C=t.referenceContext,O=t.warningContext,M=t.position,x=t.indent||[],w=e.length,R=0,D=-1,I=M.column||1,k=M.line||1,L=Kp,P=[];f=F(),s=y?function(e,t){var n=F();n.column+=t,n.offset+=t,y.call(O,sm[e],n,e)}:Dp,R--,w++;for(;++R<w;)if(i===Fp&&(I=x[D]||1),(i=U(R))!==Lp)i===Fp&&(k++,D++,I=0),i?(L+=i,I++):H();else{if((l=U(R+1))===jp||l===Fp||l===kp||l===Gp||l===qp||l===Lp||l===Kp||b&&l===b){L+=i,I++;continue}for(p=m=R+1,T=m,l!==Pp?g=$p:(T=++p,(l=U(T))===Up||l===Hp?(g=Wp,T=++p):g=Yp),n=Kp,d=Kp,a=Kp,h=Xp[g],T--;++T<w&&(l=U(T),h(l));)a+=l,g===$p&&wp.call(Nd,a)&&(n=a,d=Nd[a]);(r=U(T)===Bp)&&(T++,g===$p&&wp.call(Op,a)&&(n=a,d=Op[a])),E=1+T-m,(r||v)&&(a?g===$p?(r&&!d?s(nm,1):(n!==a&&(T=p+n.length,E=1+T-p,r=!1),r||(c=n?Zp:em,t.attribute?(l=U(T))===zp?(s(c,E),d=null):vd(l)?d=null:s(c,E):s(c,E))),o=d):(r||s(Jp,E),o=parseInt(a,Qp[g]),(B=o)>=55296&&B<=57343||B>1114111?(s(am,E),o=Ip):o in Mp?(s(rm,E),o=Mp[o]):(u=Kp,cm(o)&&s(rm,E),o>65535&&(u+=Rp((o-=65536)>>>10|55296),o=56320|1023&o),o=u+Rp(o))):g!==$p&&s(tm,E)),o?(H(),f=F(),R=T-1,I+=T-m+1,P.push(o),(_=F()).offset++,S&&S.call(C,o,{start:f,end:_},e.slice(m-1,T)),f=_):(a=e.slice(m-1,T),L+=a,I+=a.length,R=T-1)}var B;return P.join(Kp);function F(){return{line:k,column:I,offset:R+(M.offset||0)}}function U(t){return e.charAt(t)}function H(){L&&(P.push(L),A&&A.call(N,L,{start:f,end:F()}),L=Kp)}}(e,a)},wp={}.hasOwnProperty,Rp=String.fromCharCode,Dp=Function.prototype,Ip="�",kp="\f",Lp="&",Pp="#",Bp=";",Fp="\n",Up="x",Hp="X",Gp=" ",qp="<",zp="=",Kp="",jp="\t",Vp={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},$p="named",Wp="hexadecimal",Yp="decimal",Qp={};Qp[Wp]=16,Qp[Yp]=10;var Xp={};Xp[$p]=vd,Xp[Yp]=bd,Xp[Wp]=Ed;var Zp=1,Jp=2,em=3,tm=4,nm=5,rm=6,am=7,im="Numeric character references",om=" must be terminated by a semicolon",lm=" cannot be empty",sm={};function cm(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||65535==(65535&e)||65534==(65535&e)}sm[Zp]="Named character references"+om,sm[Jp]=im+om,sm[em]="Named character references"+lm,sm[tm]=im+lm,sm[nm]="Named character references must be known",sm[rm]=im+" cannot be disallowed",sm[am]=im+" cannot be outside the permissible Unicode range";var um=function(t){return a.raw=function(t,a,i){return xp(t,e(i,{position:n(a),warning:r}))},a;function n(e){for(var n=t.offset,r=e.line,a=[];++r&&r in n;)a.push((n[r]||0)+1);return{start:e,indent:a}}function r(e,n,r){3!==r&&t.file.message(e,n)}function a(e,a,i){xp(e,{position:n(a),warning:r,text:i,reference:i,textContext:t,referenceContext:t})}};var dm=function(e){return function(t,n){var r,a,i,o,l,s,c=this,u=c.offset,d=[],p=c[e+"Methods"],m=c[e+"Tokenizers"],g=n.line,h=n.column;if(!t)return d;T.now=_,T.file=c.file,f("");for(;t;){for(r=-1,a=p.length,l=!1;++r<a&&(o=p[r],!(i=m[o])||i.onlyAtStart&&!c.atStart||i.notInList&&c.inList||i.notInBlock&&c.inBlock||i.notInLink&&c.inLink||(s=t.length,i.apply(c,[T,t]),!(l=s!==t.length))););l||c.file.fail(new Error("Infinite loop"),T.now())}return c.eof=_(),d;function f(e){for(var t=-1,n=e.indexOf("\n");-1!==n;)g++,t=n,n=e.indexOf("\n",n+1);-1===t?h+=e.length:h=e.length-t,g in u&&(-1!==t?h+=u[g]:h<=u[g]&&(h=u[g]+1))}function _(){var e={line:g,column:h};return e.offset=c.toOffset(e),e}function E(){var e=_();return function(t,n){var r=t.position,a=r?r.start:e,i=[],o=r&&r.end.line,l=e.line;if(t.position=new function(e){this.start=e,this.end=_()}(a),r&&n&&r.indent){if(i=r.indent,o<l){for(;++o<l;)i.push((u[o]||0)+1);i.push(e.column)}n=i.concat(n)}return t.position.indent=n||[],t}}function T(e){var n=function(){var e=[],t=g+1;return function(){for(var n=g+1;t<n;)e.push((u[t]||0)+1),t++;return e}}(),r=E(),a=_();return function(e){t.substring(0,e.length)!==e&&c.file.fail(new Error("Incorrectly eaten value: please report this warning on http://git.io/vg5Ft"),_())}(e),i.reset=o,o.test=l,i.test=l,t=t.substring(e.length),f(e),n=n(),i;function i(e,t){return r(function(e,t){var n=t?t.children:d,r=n[n.length-1];r&&e.type===r.type&&e.type in pm&&mm(r)&&mm(e)&&(e=pm[e.type].call(c,r,e));e!==r&&n.push(e);c.atStart&&0!==d.length&&c.exitStart();return e}(r(e),t),n)}function o(){var n=i.apply(null,arguments);return g=a.line,h=a.column,t=e+t,n}function l(){var n=r({});return g=a.line,h=a.column,t=e+t,n.position}}}},pm={text:function(e,t){return e.value+=t.value,e},blockquote:function(e,t){if(this.options.commonmark)return t;return e.children=e.children.concat(t.children),e}};function mm(e){var t,n;return"text"!==e.type||!e.position||(t=e.position.start,n=e.position.end,t.line!==n.line||n.column-t.column===e.value.length)}var gm=Em,hm=["\\","`","*","{","}","[","]","(",")","#","+","-",".","!","_",">"],fm=hm.concat(["~","|"]),_m=fm.concat(["\n",'"',"$","%","&","'",",","/",":",";","<","=","?","@","^"]);function Em(e){var t=e||{};return t.commonmark?_m:t.gfm?fm:hm}Em.default=hm,Em.gfm=fm,Em.commonmark=_m;var Tm=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","pre","section","source","title","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],bm=Object.freeze({default:Tm}),vm={position:!0,gfm:!0,commonmark:!1,footnotes:!1,pedantic:!1,blocks:bm&&Tm||bm},Am=function(t){var n,r,a=this.options;if(null==t)t={};else{if("object"!=typeof t)throw new Error("Invalid value `"+t+"` for setting `options`");t=e(t)}for(n in vm){if(null==(r=t[n])&&(r=a[n]),"blocks"!==n&&"boolean"!=typeof r||"blocks"===n&&"object"!=typeof r)throw new Error("Invalid value `"+r+"` for setting `options."+n+"`");t[n]=r}return this.options=t,this.escape=gm(t),this};var Sm=function(e,t){return u(e,t?ym:Nm),e};function ym(e){delete e.position}function Nm(e){e.position=void 0}var Cm=function(){var t,n=String(this.file),r={line:1,column:1,offset:0},a=e(r);65279===(n=n.replace(Mm,Om)).charCodeAt(0)&&(n=n.slice(1),a.column++,a.offset++);t={type:"root",children:this.tokenizeBlock(n,a),position:{start:r,end:this.eof||e(r)}},this.options.position||Sm(t,!0);return t},Om="\n",Mm=/\r\n|\r/g;var xm=function(e,t,n){var r,a,i,o,l=t.charAt(0);if("\n"!==l)return;if(n)return!0;o=1,r=t.length,a=l,i="";for(;o<r&&(l=t.charAt(o),ie(l));)i+=l,"\n"===l&&(a+=i,i=""),o++;e(a)};var wm=function(e,t,n){var r,a,i,o=-1,l=t.length,s="",c="",u="",d="";for(;++o<l;)if(r=t.charAt(o),i)if(i=!1,s+=u,c+=d,u="",d="",r===Rm)u=r,d=r;else for(s+=r,c+=r;++o<l;){if(!(r=t.charAt(o))||r===Rm){d=r,u=r;break}s+=r,c+=r}else if(r===Im&&t.charAt(o+1)===r&&t.charAt(o+2)===r&&t.charAt(o+3)===r)u+=km,o+=3,i=!0;else if(r===Dm)u+=r,i=!0;else{for(a="";r===Dm||r===Im;)a+=r,r=t.charAt(++o);if(r!==Rm)break;u+=a+r,d+=r}if(c)return!!n||e(s)({type:"code",lang:null,value:fe(c)})},Rm="\n",Dm="\t",Im=" ",km=L(Im,4);var Lm=function(e,t,n){var r,a,i,o,l,s,c,u,d,p,m,g=this.options,h=t.length+1,f=0,_="";if(!g.gfm)return;for(;f<h&&((i=t.charAt(f))===Fm||i===Bm);)_+=i,f++;if(p=f,(i=t.charAt(f))!==Um&&i!==Hm)return;f++,a=i,r=1,_+=i;for(;f<h&&(i=t.charAt(f))===a;)_+=i,r++,f++;if(r<Gm)return;for(;f<h&&((i=t.charAt(f))===Fm||i===Bm);)_+=i,f++;o="",l="";for(;f<h&&(i=t.charAt(f))!==Pm&&i!==Um&&i!==Hm;)i===Fm||i===Bm?l+=i:(o+=l+i,l=""),f++;if((i=t.charAt(f))&&i!==Pm)return;if(n)return!0;(m=e.now()).column+=_.length,m.offset+=_.length,_+=o,o=this.decode.raw(this.unescape(o),m),l&&(_+=l);l="",u="",d="",s="",c="";for(;f<h;)if(i=t.charAt(f),s+=u,c+=d,u="",d="",i===Pm){for(s?(u+=i,d+=i):_+=i,l="",f++;f<h&&(i=t.charAt(f))===Fm;)l+=i,f++;if(u+=l,d+=l.slice(p),!(l.length>=qm)){for(l="";f<h&&(i=t.charAt(f))===a;)l+=i,f++;if(u+=l,d+=l,!(l.length<r)){for(l="";f<h&&((i=t.charAt(f))===Fm||i===Bm);)u+=i,d+=i,f++;if(!i||i===Pm)break}}}else s+=i,d+=i,f++;return e(_+=s+u)({type:"code",lang:o||null,value:fe(c)})},Pm="\n",Bm="\t",Fm=" ",Um="~",Hm="`",Gm=3,qm=4;var zm=function(e,t,n,r){var a,i,o,l,s,c,u=["pedantic","commonmark"],d=u.length,p=e.length,m=-1;for(;++m<p;){for(a=e[m],i=a[1]||{},o=a[0],l=-1,c=!1;++l<d;)if(void 0!==i[s=u[l]]&&i[s]!==n.options[s]){c=!0;break}if(!c&&t[o].apply(n,r))return!0}return!1};var Km=function(e,t,n){var r,a,i,o,l,s,c,u,d,p=this.offset,m=this.blockTokenizers,g=this.interruptBlockquote,h=e.now(),f=h.line,_=t.length,E=[],T=[],b=[],v=0;for(;v<_&&((a=t.charAt(v))===$m||a===Vm);)v++;if(t.charAt(v)!==Wm)return;if(n)return!0;v=0;for(;v<_;){for(o=t.indexOf(jm,v),c=v,u=!1,-1===o&&(o=_);v<_&&((a=t.charAt(v))===$m||a===Vm);)v++;if(t.charAt(v)===Wm?(v++,u=!0,t.charAt(v)===$m&&v++):v=c,l=t.slice(v,o),!u&&!S(l)){v=c;break}if(!u&&(i=t.slice(v),zm(g,m,this,[e,i,!0])))break;s=c===v?l:t.slice(c,o),b.push(v-c),E.push(s),T.push(l),v=o+1}v=-1,_=b.length,r=e(E.join(jm));for(;++v<_;)p[f]=(p[f]||0)+b[v],f++;return d=this.enterBlock(),T=this.tokenizeBlock(T.join(jm),h),d(),r({type:"blockquote",children:T})},jm="\n",Vm="\t",$m=" ",Wm=">";var Ym=function(e,t,n){var r,a,i,o=this.options,l=t.length+1,s=-1,c=e.now(),u="",d="";for(;++s<l;){if((r=t.charAt(s))!==Zm&&r!==Xm){s--;break}u+=r}i=0;for(;++s<=l;){if((r=t.charAt(s))!==Jm){s--;break}u+=r,i++}if(i>eg)return;if(!i||!o.pedantic&&t.charAt(s+1)===Jm)return;l=t.length+1,a="";for(;++s<l;){if((r=t.charAt(s))!==Zm&&r!==Xm){s--;break}a+=r}if(!o.pedantic&&0===a.length&&r&&r!==Qm)return;if(n)return!0;u+=a,a="",d="";for(;++s<l&&(r=t.charAt(s))&&r!==Qm;)if(r===Zm||r===Xm||r===Jm){for(;r===Zm||r===Xm;)a+=r,r=t.charAt(++s);for(;r===Jm;)a+=r,r=t.charAt(++s);for(;r===Zm||r===Xm;)a+=r,r=t.charAt(++s);s--}else d+=a+r,a="";return c.column+=u.length,c.offset+=u.length,e(u+=d+a)({type:"heading",depth:i,children:this.tokenizeInline(d,c)})},Qm="\n",Xm="\t",Zm=" ",Jm="#",eg=6;var tg=function(e,t,n){var r,a,i,o,l=-1,s=t.length+1,c="";for(;++l<s&&((r=t.charAt(l))===rg||r===ag);)c+=r;if(r!==ig&&r!==lg&&r!==og)return;a=r,c+=r,i=1,o="";for(;++l<s;)if((r=t.charAt(l))===a)i++,c+=o+a,o="";else{if(r!==ag)return i>=sg&&(!r||r===ng)?(c+=o,!!n||e(c)({type:"thematicBreak"})):void 0;o+=r}},ng="\n",rg="\t",ag=" ",ig="*",og="_",lg="-",sg=3;var cg=function(e){var t,n=0,r=0,a=e.charAt(n),i={};for(;a in ug;)t=ug[a],r+=t,t>1&&(r=Math.floor(r/t)*t),i[r]=n,a=e.charAt(++n);return{indent:r,stops:i}},ug={" ":1,"\t":4};var dg=function(e,t){var n,r,a,i,o=e.split(mg),l=o.length+1,s=1/0,c=[];o.unshift(L(pg,t)+"!");for(;l--;)if(r=cg(o[l]),c[l]=r.stops,0!==S(o[l]).length){if(!r.indent){s=1/0;break}r.indent>0&&r.indent<s&&(s=r.indent)}if(s!==1/0)for(l=o.length;l--;){for(a=c[l],n=s;n&&!(n in a);)n--;i=0!==S(o[l]).length&&s&&n!==s?gg:"",o[l]=i+o[l].slice(n in a?a[n]+1:0)}return o.shift(),o.join(mg)},pg=" ",mg="\n",gg="\t";var hg=function(e,t,n){var r,a,i,o,l,s,c,u,d,p,m,g,h,f,_,E,T,b,v,A,y,N,C,O,M=this.options.commonmark,x=this.options.pedantic,w=this.blockTokenizers,R=this.interruptList,D=0,I=t.length,k=null,L=0;for(;D<I;){if((o=t.charAt(D))===vg)L+=Sg-L%Sg;else{if(o!==Tg)break;L++}D++}if(L>=Sg)return;if(o=t.charAt(D),r=M?Rg:wg,!0===xg[o])l=o,i=!1;else{for(i=!0,a="";D<I&&(o=t.charAt(D),bd(o));)a+=o,D++;if(o=t.charAt(D),!a||!0!==r[o])return;k=parseInt(a,10),l=o}if((o=t.charAt(++D))!==Tg&&o!==vg)return;if(n)return!0;D=0,f=[],_=[],E=[];for(;D<I;){for(s=t.indexOf(bg,D),c=D,u=!1,O=!1,-1===s&&(s=I),C=D+Sg,L=0;D<I;){if((o=t.charAt(D))===vg)L+=Sg-L%Sg;else{if(o!==Tg)break;L++}D++}if(L>=Sg&&(O=!0),T&&L>=T.indent&&(O=!0),o=t.charAt(D),d=null,!O){if(!0===xg[o])d=o,D++,L++;else{for(a="";D<I&&(o=t.charAt(D),bd(o));)a+=o,D++;o=t.charAt(D),D++,a&&!0===r[o]&&(d=o,L+=a.length+1)}if(d)if((o=t.charAt(D))===vg)L+=Sg-L%Sg,D++;else if(o===Tg){for(C=D+Sg;D<C&&t.charAt(D)===Tg;)D++,L++;D===C&&t.charAt(D)===Tg&&(D-=Sg-1,L-=Sg-1)}else o!==bg&&""!==o&&(d=null)}if(d){if(!x&&l!==d)break;u=!0}else M||O||t.charAt(c)!==Tg?M&&T&&(O=L>=T.indent||L>Sg):O=!0,u=!1,D=c;if(m=t.slice(c,s),p=c===D?m:t.slice(D,s),(d===fg||d===_g||d===Eg)&&w.thematicBreak.call(this,e,m,!0))break;if(g=h,h=!S(p).length,O&&T)T.value=T.value.concat(E,m),_=_.concat(E,m),E=[];else if(u)0!==E.length&&(T.value.push(""),T.trail=E.concat()),T={value:[m],indent:L,trail:[]},f.push(T),_=_.concat(E,m),E=[];else if(h){if(g)break;E.push(m)}else{if(g)break;if(zm(R,w,this,[e,m,!0]))break;T.value=T.value.concat(E,m),_=_.concat(E,m),E=[]}D=s+1}y=e(_.join(bg)).reset({type:"list",ordered:i,start:k,loose:null,children:[]}),b=this.enterList(),v=this.enterBlock(),A=!1,D=-1,I=f.length;for(;++D<I;)T=f[D].value.join(bg),N=e.now(),(T=e(T)(Dg(this,T,N),y)).loose&&(A=!0),T=f[D].trail.join(bg),D!==I-1&&(T+=bg),e(T);return b(),v(),y.loose=A,y},fg="*",_g="_",Eg="-",Tg=" ",bg="\n",vg="\t",Ag="x",Sg=4,yg=/\n\n(?!\s*$)/,Ng=/^\[([ \t]|x|X)][ \t]/,Cg=/^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/,Og=/^([ \t]*)([*+-]|\d+[.)])([ \t]+)/,Mg=/^( {1,4}|\t)?/gm,xg={};xg[fg]=!0,xg["+"]=!0,xg[Eg]=!0;var wg={".":!0},Rg={};function Dg(e,t,n){var r,a,i=e.offset,o=null;return t=(e.options.pedantic?Ig:kg).apply(null,arguments),e.options.gfm&&(r=t.match(Ng))&&(a=r[0].length,o=r[1].toLowerCase()===Ag,i[n.line]+=a,t=t.slice(a)),{type:"listItem",loose:yg.test(t)||t.charAt(t.length-1)===bg,checked:o,children:e.tokenizeBlock(t,n)}}function Ig(e,t,n){var r=e.offset,a=n.line;return t=t.replace(Og,i),a=n.line,t.replace(Mg,i);function i(e){return r[a]=(r[a]||0)+e.length,a++,""}}function kg(e,t,n){var r,a,i,o,l,s,c,u=e.offset,d=n.line;for(o=(t=t.replace(Cg,function(e,t,n,o,l){a=t+n+o,i=l,Number(n)<10&&a.length%2==1&&(n=Tg+n);return(r=t+L(Tg,n.length)+o)+i})).split(bg),(l=dg(t,cg(r).indent).split(bg))[0]=i,u[d]=(u[d]||0)+a.length,d++,s=0,c=o.length;++s<c;)u[d]=(u[d]||0)+o[s].length-l[s].length,d++;return l.join(bg)}Rg["."]=!0,Rg[")"]=!0;var Lg=function(e,t,n){var r,a,i,o,l,s=e.now(),c=t.length,u=-1,d="";for(;++u<c;){if((i=t.charAt(u))!==Fg||u>=Ug){u--;break}d+=i}r="",a="";for(;++u<c;){if((i=t.charAt(u))===Pg){u--;break}i===Fg||i===Bg?a+=i:(r+=a+i,a="")}if(s.column+=d.length,s.offset+=d.length,d+=r+a,i=t.charAt(++u),o=t.charAt(++u),i!==Pg||!Hg[o])return;d+=i,a=o,l=Hg[o];for(;++u<c;){if((i=t.charAt(u))!==o){if(i!==Pg)return;u--;break}a+=i}if(n)return!0;return e(d+a)({type:"heading",depth:l,children:this.tokenizeInline(r,s)})},Pg="\n",Bg="\t",Fg=" ",Ug=3,Hg={};Hg["="]=1,Hg["-"]=2;var Gg="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",qg="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",zg={openCloseTag:new RegExp("^(?:"+Gg+"|"+qg+")"),tag:new RegExp("^(?:"+Gg+"|"+qg+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|<![A-Za-z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)")},Kg=zg.openCloseTag,jg=function(e,t,n){var r,a,i,o,l,s,c,u=this.options.blocks,d=t.length,p=0,m=[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Za-z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+u.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(Kg.source+"\\s*$"),/^$/,!1]];for(;p<d&&((o=t.charAt(p))===Vg||o===$g);)p++;if(t.charAt(p)!==Yg)return;r=-1===(r=t.indexOf(Wg,p+1))?d:r,a=t.slice(p,r),i=-1,l=m.length;for(;++i<l;)if(m[i][0].test(a)){s=m[i];break}if(!s)return;if(n)return s[2];if(p=r,!s[1].test(a))for(;p<d;){if(r=-1===(r=t.indexOf(Wg,p+1))?d:r,a=t.slice(p+1,r),s[1].test(a)){a&&(p=r);break}p=r}return c=t.slice(0,p),e(c)({type:"html",value:c})},Vg="\t",$g=" ",Wg="\n",Yg="<";var Qg=function(e){return X(e).toLowerCase()};var Xg=lh;lh.notInList=!0,lh.notInBlock=!0;var Zg="\\",Jg="\n",eh="\t",th=" ",nh="[",rh="]",ah="^",ih=":",oh=/^( {4}|\t)?/gm;function lh(e,t,n){var r,a,i,o,l,s,c,u,d,p,m,g,h=this.offset;if(this.options.footnotes){for(r=0,a=t.length,i="",o=e.now(),l=o.line;r<a&&(d=t.charAt(r),ie(d));)i+=d,r++;if(t.charAt(r)===nh&&t.charAt(r+1)===ah){for(r=(i+=nh+ah).length,c="";r<a&&(d=t.charAt(r))!==rh;)d===Zg&&(c+=d,r++,d=t.charAt(r)),c+=d,r++;if(c&&t.charAt(r)===rh&&t.charAt(r+1)===ih){if(n)return!0;for(p=Qg(c),r=(i+=c+rh+ih).length;r<a&&((d=t.charAt(r))===eh||d===th);)i+=d,r++;for(o.column+=i.length,o.offset+=i.length,c="",s="",u="";r<a;){if((d=t.charAt(r))===Jg){for(u=d,r++;r<a&&(d=t.charAt(r))===Jg;)u+=d,r++;for(c+=u,u="";r<a&&(d=t.charAt(r))===th;)u+=d,r++;if(0===u.length)break;c+=u}c&&(s+=c,c=""),s+=d,r++}return i+=s,s=s.replace(oh,function(e){return h[l]=(h[l]||0)+e.length,l++,""}),m=e(i),g=this.enterBlock(),s=this.tokenizeBlock(s,o),g(),m({type:"footnoteDefinition",identifier:p,children:s})}}}}var sh=Ah;Ah.notInList=!0,Ah.notInBlock=!0;var ch='"',uh="'",dh="\\",ph="\n",mh="\t",gh=" ",hh="[",fh="]",_h="(",Eh=")",Th=":",bh="<",vh=">";function Ah(e,t,n){for(var r,a,i,o,l,s,c,u,d=this.options.commonmark,p=0,m=t.length,g="";p<m&&((o=t.charAt(p))===gh||o===mh);)g+=o,p++;if((o=t.charAt(p))===hh){for(p++,g+=o,i="";p<m&&(o=t.charAt(p))!==fh;)o===dh&&(i+=o,p++,o=t.charAt(p)),i+=o,p++;if(i&&t.charAt(p)===fh&&t.charAt(p+1)===Th){for(s=i,p=(g+=i+fh+Th).length,i="";p<m&&((o=t.charAt(p))===mh||o===gh||o===ph);)g+=o,p++;if(i="",r=g,(o=t.charAt(p))===bh){for(p++;p<m&&Sh(o=t.charAt(p));)i+=o,p++;if((o=t.charAt(p))===Sh.delimiter)g+=bh+i+o,p++;else{if(d)return;p-=i.length+1,i=""}}if(!i){for(;p<m&&yh(o=t.charAt(p));)i+=o,p++;g+=i}if(i){for(c=i,i="";p<m&&((o=t.charAt(p))===mh||o===gh||o===ph);)i+=o,p++;if(l=null,(o=t.charAt(p))===ch?l=ch:o===uh?l=uh:o===_h&&(l=Eh),l){if(!i)return;for(p=(g+=i+o).length,i="";p<m&&(o=t.charAt(p))!==l;){if(o===ph){if(p++,(o=t.charAt(p))===ph||o===l)return;i+=ph}i+=o,p++}if((o=t.charAt(p))!==l)return;a=g,g+=i+o,p++,u=i,i=""}else i="",p=g.length;for(;p<m&&((o=t.charAt(p))===mh||o===gh);)g+=o,p++;return(o=t.charAt(p))&&o!==ph?void 0:!!n||(r=e(r).test().end,c=this.decode.raw(this.unescape(c),r,{nonTerminated:!1}),u&&(a=e(a).test().end,u=this.decode.raw(this.unescape(u),a)),e(g)({type:"definition",identifier:Qg(s),title:u||null,url:c}))}}}}function Sh(e){return e!==vh&&e!==hh&&e!==fh}function yh(e){return e!==hh&&e!==fh&&!ie(e)}Sh.delimiter=vh;var Nh=function(e,t,n){var r,a,i,o,l,s,c,u,d,p,m,g,h,f,_,E,T,b,v,A,S,y,N,C;if(!this.options.gfm)return;r=0,b=0,s=t.length+1,c=[];for(;r<s;){if(y=t.indexOf(Dh,r),N=t.indexOf(xh,r+1),-1===y&&(y=t.length),-1===N||N>y){if(b<Lh)return;break}c.push(t.slice(r,y)),b++,r=y+1}o=c.join(Dh),a=c.splice(1,1)[0]||[],r=0,s=a.length,b--,i=!1,m=[];for(;r<s;){if((d=a.charAt(r))===xh){if(p=null,!1===i){if(!1===C)return}else m.push(i),i=!1;C=!1}else if(d===Mh)p=!0,i=i||Uh;else if(d===wh)i=i===Ph?Bh:p&&i===Uh?Fh:Ph;else if(!ie(d))return;r++}!1!==i&&m.push(i);if(m.length<kh)return;if(n)return!0;T=-1,A=[],S=e(o).reset({type:"table",align:m,children:A});for(;++T<b;){for(v=c[T],l={type:"tableRow",children:[]},T&&e(Dh),e(v).reset(l,S),s=v.length+1,r=0,u="",g="",h=!0,f=null,_=null;r<s;)if((d=v.charAt(r))!==Ih&&d!==Rh){if(""===d||d===xh)if(h)e(d);else{if(d&&_){u+=d,r++;continue}!g&&!d||h||(o=g,u.length>1&&(d?(o+=u.slice(0,u.length-1),u=u.charAt(u.length-1)):(o+=u,u="")),E=e.now(),e(o)({type:"tableCell",children:this.tokenizeInline(g,E)},l)),e(u+d),u="",g=""}else if(u&&(g+=u,u=""),g+=d,d===Ch&&r!==s-2&&(g+=v.charAt(r+1),r++),d===Oh){for(f=1;v.charAt(r+1)===d;)g+=d,r++,f++;_?f>=_&&(_=0):_=f}h=!1,r++}else g?u+=d:e(d),r++;T||e(Dh+a)}return S},Ch="\\",Oh="`",Mh="-",xh="|",wh=":",Rh=" ",Dh="\n",Ih="\t",kh=1,Lh=2,Ph="left",Bh="center",Fh="right",Uh=null;var Hh=function(e,t,n){var r,a,i,o,l,s=this.options,c=s.commonmark,u=s.gfm,d=this.blockTokenizers,p=this.interruptParagraph,m=t.indexOf(Gh),g=t.length;for(;m<g;){if(-1===m){m=g;break}if(t.charAt(m+1)===Gh)break;if(c){for(o=0,r=m+1;r<g;){if((i=t.charAt(r))===qh){o=Kh;break}if(i!==zh)break;o++,r++}if(o>=Kh){m=t.indexOf(Gh,m+1);continue}}if(a=t.slice(m+1),zm(p,d,this,[e,a,!0]))break;if(d.list.call(this,e,a,!0)&&(this.inList||c||u&&!bd(S.left(a).charAt(0))))break;if(r=m,-1!==(m=t.indexOf(Gh,m+1))&&""===S(t.slice(r,m))){m=r;break}}if(a=t.slice(0,m),""===S(a))return e(a),null;if(n)return!0;return l=e.now(),a=fe(a),e(a)({type:"paragraph",children:this.tokenizeInline(a,l)})},Gh="\n",qh="\t",zh=" ",Kh=4;var jh=function(e,t){return e.indexOf("\\",t)};var Vh=$h;function $h(e,t,n){var r,a;if("\\"===t.charAt(0)&&(r=t.charAt(1),-1!==this.escape.indexOf(r)))return!!n||(a="\n"===r?{type:"break"}:{type:"text",value:r},e("\\"+r)(a))}$h.locator=jh;var Wh=function(e,t){return e.indexOf("<",t)};var Yh=nf;nf.locator=Wh,nf.notInLink=!0;var Qh="<",Xh=">",Zh="@",Jh="/",ef="mailto:",tf=ef.length;function nf(e,t,n){var r,a,i,o,l,s,c,u,d,p,m;if(t.charAt(0)===Qh){for(this,r="",a=t.length,i=0,o="",s=!1,c="",i++,r=Qh;i<a&&(l=t.charAt(i),!(ie(l)||l===Xh||l===Zh||":"===l&&t.charAt(i+1)===Jh));)o+=l,i++;if(o){if(c+=o,o="",c+=l=t.charAt(i),i++,l===Zh)s=!0;else{if(":"!==l||t.charAt(i+1)!==Jh)return;c+=Jh,i++}for(;i<a&&(l=t.charAt(i),!ie(l)&&l!==Xh);)o+=l,i++;if(l=t.charAt(i),o&&l===Xh)return!!n||(d=c+=o,r+=c+l,(u=e.now()).column++,u.offset++,s&&(c.slice(0,tf).toLowerCase()===ef?(d=d.substr(tf),u.column+=tf,u.offset+=tf):c=ef+c),p=this.inlineTokenizers,this.inlineTokenizers={text:p.text},m=this.enterLink(),d=this.tokenizeInline(d,u),this.inlineTokenizers=p,m(),e(r)({type:"link",title:null,url:xp(c,{nonTerminated:!1}),children:d}))}}}var rf=function(e,t){var n,r=af.length,a=-1,i=-1;if(!this.options.gfm)return-1;for(;++a<r;)-1!==(n=e.indexOf(af[a],t))&&(n<i||-1===i)&&(i=n);return i},af=["https://","http://","mailto:"];var of=ff;ff.locator=rf,ff.notInLink=!0;var lf="[",sf="]",cf="(",uf=")",df="<",pf="@",mf="mailto:",gf=["http://","https://",mf],hf=gf.length;function ff(e,t,n){var r,a,i,o,l,s,c,u,d,p,m,g;if(this.options.gfm){for(r="",o=-1,u=hf;++o<u;)if(s=gf[o],(c=t.slice(0,s.length)).toLowerCase()===s){r=c;break}if(r){for(o=r.length,u=t.length,d="",p=0;o<u&&(i=t.charAt(o),!ie(i)&&i!==df)&&("."!==i&&","!==i&&":"!==i&&";"!==i&&'"'!==i&&"'"!==i&&")"!==i&&"]"!==i||(m=t.charAt(o+1))&&!ie(m))&&(i!==cf&&i!==lf||p++,i!==uf&&i!==sf||!(--p<0));)d+=i,o++;if(d){if(a=r+=d,s===mf){if(-1===(l=d.indexOf(pf))||l===u-1)return;a=a.substr(mf.length)}return!!n||(g=this.enterLink(),a=this.tokenizeInline(a,e.now()),g(),e(r)({type:"link",title:null,url:xp(r,{nonTerminated:!1}),children:a}))}}}}var _f=zg.tag,Ef=vf;vf.locator=Wh;var Tf=/^<a /i,bf=/^<\/a>/i;function vf(e,t,n){var r,a,i=t.length;if(!("<"!==t.charAt(0)||i<3)&&(r=t.charAt(1),(Td(r)||"?"===r||"!"===r||"/"===r)&&(a=t.match(_f))))return!!n||(a=a[0],!this.inLink&&Tf.test(a)?this.inLink=!0:this.inLink&&bf.test(a)&&(this.inLink=!1),e(a)({type:"html",value:a}))}var Af=function(e,t){var n=e.indexOf("[",t),r=e.indexOf("![",t);if(-1===r)return n;return n<r?n:r};var Sf=Lf;Lf.locator=Af;var yf={}.hasOwnProperty,Nf="\\",Cf="[",Of="]",Mf="(",xf=")",wf="<",Rf=">",Df="`",If={'"':'"',"'":"'"},kf={};function Lf(e,t,n){var r,a,i,o,l,s,c,u,d,p,m,g,h,f,_,E,T,b,v,A="",S=0,y=t.charAt(0),N=this.options.pedantic,C=this.options.commonmark,O=this.options.gfm;if("!"===y&&(d=!0,A=y,y=t.charAt(++S)),y===Cf&&(d||!this.inLink)){for(A+=y,_="",S++,g=t.length,f=0,(T=e.now()).column+=S,T.offset+=S;S<g;){if(s=y=t.charAt(S),y===Df){for(a=1;t.charAt(S+1)===Df;)s+=y,S++,a++;i?a>=i&&(i=0):i=a}else if(y===Nf)S++,s+=t.charAt(S);else if(i&&!O||y!==Cf){if((!i||O)&&y===Of){if(!f){if(!N)for(;S<g&&(y=t.charAt(S+1),ie(y));)s+=y,S++;if(t.charAt(S+1)!==Mf)return;s+=Mf,r=!0,S++;break}f--}}else f++;_+=s,s="",S++}if(r){for(p=_,A+=_+s,S++;S<g&&(y=t.charAt(S),ie(y));)A+=y,S++;if(y=t.charAt(S),u=C?kf:If,_="",o=A,y===wf){for(S++,o+=wf;S<g&&(y=t.charAt(S))!==Rf;){if(C&&"\n"===y)return;_+=y,S++}if(t.charAt(S)!==Rf)return;A+=wf+_+Rf,E=_,S++}else{for(y=null,s="";S<g&&(y=t.charAt(S),!s||!yf.call(u,y));){if(ie(y)){if(!N)break;s+=y}else{if(y===Mf)f++;else if(y===xf){if(0===f)break;f--}_+=s,s="",y===Nf&&(_+=Nf,y=t.charAt(++S)),_+=y}S++}E=_,S=(A+=_).length}for(_="";S<g&&(y=t.charAt(S),ie(y));)_+=y,S++;if(y=t.charAt(S),A+=_,_&&yf.call(u,y))if(S++,A+=y,_="",m=u[y],l=A,C){for(;S<g&&(y=t.charAt(S))!==m;)y===Nf&&(_+=Nf,y=t.charAt(++S)),S++,_+=y;if((y=t.charAt(S))!==m)return;for(h=_,A+=_+y,S++;S<g&&(y=t.charAt(S),ie(y));)A+=y,S++}else for(s="";S<g;){if((y=t.charAt(S))===m)c&&(_+=m+s,s=""),c=!0;else if(c){if(y===xf){A+=_+m+s,h=_;break}ie(y)?s+=y:(_+=m+s+y,s="",c=!1)}else _+=y;S++}if(t.charAt(S)===xf)return!!n||(A+=xf,E=this.decode.raw(this.unescape(E),e(o).test().end,{nonTerminated:!1}),h&&(l=e(l).test().end,h=this.decode.raw(this.unescape(h),l)),v={type:d?"image":"link",title:h||null,url:E},d?v.alt=this.decode.raw(this.unescape(p),T)||null:(b=this.enterLink(),v.children=this.tokenizeInline(p,T),b()),e(A)(v))}}}kf['"']='"',kf["'"]="'",kf[Mf]=xf;var Pf=$f;$f.locator=Af;var Bf="link",Ff="image",Uf="footnote",Hf="shortcut",Gf="collapsed",qf="full",zf="^",Kf="\\",jf="[",Vf="]";function $f(e,t,n){var r,a,i,o,l,s,c,u,d=t.charAt(0),p=0,m=t.length,g="",h="",f=Bf,_=Hf;if("!"===d&&(f=Ff,h=d,d=t.charAt(++p)),d===jf){if(p++,h+=d,s="",this.options.footnotes&&t.charAt(p)===zf){if(f===Ff)return;h+=zf,p++,f=Uf}for(u=0;p<m;){if((d=t.charAt(p))===jf)c=!0,u++;else if(d===Vf){if(!u)break;u--}d===Kf&&(s+=Kf,d=t.charAt(++p)),s+=d,p++}if(g=s,r=s,(d=t.charAt(p))===Vf){for(p++,g+=d,s="";p<m&&(d=t.charAt(p),ie(d));)s+=d,p++;if(d=t.charAt(p),f!==Uf&&d===jf){for(a="",s+=d,p++;p<m&&(d=t.charAt(p))!==jf&&d!==Vf;)d===Kf&&(a+=Kf,d=t.charAt(++p)),a+=d,p++;(d=t.charAt(p))===Vf?(_=a?qf:Gf,s+=a+d,p++):a="",g+=s,s=""}else{if(!r)return;a=r}if(_===qf||!c)return g=h+g,f===Bf&&this.inLink?null:!!n||(f===Uf&&-1!==r.indexOf(" ")?e(g)({type:"footnote",children:this.tokenizeInline(r,e.now())}):((i=e.now()).column+=h.length,i.offset+=h.length,o={type:f+"Reference",identifier:Qg(a=_===qf?a:r)},f!==Bf&&f!==Ff||(o.referenceType=_),f===Bf?(l=this.enterLink(),o.children=this.tokenizeInline(r,i),l()):f===Ff&&(o.alt=this.decode.raw(this.unescape(r),i)||null),e(g)(o)))}}}var Wf=function(e,t){var n=e.indexOf("**",t),r=e.indexOf("__",t);if(-1===r)return n;if(-1===n)return r;return r<n?r:n};var Yf=Zf;Zf.locator=Wf;var Qf="*",Xf="_";function Zf(e,t,n){var r,a,i,o,l,s,c,u=0,d=t.charAt(u);if(!(d!==Qf&&d!==Xf||t.charAt(++u)!==d||(a=this.options.pedantic,l=(i=d)+i,s=t.length,u++,o="",d="",a&&ie(t.charAt(u)))))for(;u<s;){if(c=d,!((d=t.charAt(u))!==i||t.charAt(u+1)!==i||a&&ie(c))&&(d=t.charAt(u+2))!==i){if(!S(o))return;return!!n||((r=e.now()).column+=2,r.offset+=2,e(l+o+l)({type:"strong",children:this.tokenizeInline(o,r)}))}a||"\\"!==d||(o+=d,d=t.charAt(++u)),o+=d,u++}}var Jf=function(e){return t_.test("number"==typeof e?e_(e):e.charAt(0))},e_=String.fromCharCode,t_=/\w/;var n_=function(e,t){var n=e.indexOf("*",t),r=e.indexOf("_",t);if(-1===r)return n;if(-1===n)return r;return r<n?r:n};var r_=o_;o_.locator=n_;var a_="*",i_="_";function o_(e,t,n){var r,a,i,o,l,s,c,u=0,d=t.charAt(u);if(!(d!==a_&&d!==i_||(a=this.options.pedantic,l=d,i=d,s=t.length,u++,o="",d="",a&&ie(t.charAt(u)))))for(;u<s;){if(c=d,!((d=t.charAt(u))!==i||a&&ie(c))){if((d=t.charAt(++u))!==i){if(!S(o)||c===i)return;if(!a&&i===i_&&Jf(d)){o+=i;continue}return!!n||((r=e.now()).column++,r.offset++,e(l+o+i)({type:"emphasis",children:this.tokenizeInline(o,r)}))}o+=i}a||"\\"!==d||(o+=d,d=t.charAt(++u)),o+=d,u++}}var l_=function(e,t){return e.indexOf("~~",t)};var s_=d_;d_.locator=l_;var c_="~",u_="~~";function d_(e,t,n){var r,a,i,o="",l="",s="",c="";if(this.options.gfm&&t.charAt(0)===c_&&t.charAt(1)===c_&&!ie(t.charAt(2)))for(r=1,a=t.length,(i=e.now()).column+=2,i.offset+=2;++r<a;){if(!((o=t.charAt(r))!==c_||l!==c_||s&&ie(s)))return!!n||e(u_+c+u_)({type:"delete",children:this.tokenizeInline(c,i)});c+=l,s=l,l=o}}var p_=function(e,t){return e.indexOf("`",t)};var m_=h_;h_.locator=p_;var g_="`";function h_(e,t,n){for(var r,a,i,o,l,s,c,u,d=t.length,p=0,m="",g="";p<d&&t.charAt(p)===g_;)m+=g_,p++;if(m){for(l=m,o=p,m="",u=t.charAt(p),i=0;p<d;){if(s=u,u=t.charAt(p+1),s===g_?(i++,g+=s):(i=0,m+=s),i&&u!==g_){if(i===o){l+=m+g,c=!0;break}m+=g,g=""}p++}if(!c){if(o%2!=0)return;m=""}if(n)return!0;for(r="",a="",d=m.length,p=-1;++p<d;)s=m.charAt(p),ie(s)?a+=s:(a&&(r&&(r+=a),a=""),r+=s);return e(l)({type:"inlineCode",value:r})}}var f_=function(e,t){var n=e.indexOf("\n",t);for(;n>t&&" "===e.charAt(n-1);)n--;return n};var __=T_;T_.locator=f_;var E_=2;function T_(e,t,n){for(var r,a=t.length,i=-1,o="";++i<a;){if("\n"===(r=t.charAt(i))){if(i<E_)return;return!!n||e(o+=r)({type:"break"})}if(" "!==r)return;o+=r}}var b_=function(e,t,n){var r,a,i,o,l,s,c,u,d,p;if(n)return!0;r=this.inlineMethods,o=r.length,a=this.inlineTokenizers,i=-1,d=t.length;for(;++i<o;)"text"!==(u=r[i])&&a[u]&&((c=a[u].locator)||e.file.fail("Missing locator: `"+u+"`"),-1!==(s=c.call(this,t,1))&&s<d&&(d=s));l=t.slice(0,d),p=e.now(),this.decode(l,p,function(t,n,r){e(r||t)({type:"text",value:t})})};var v_=A_;function A_(t,n){this.file=n,this.offset={},this.options=e(this.options),this.setOptions({}),this.inList=!1,this.inBlock=!1,this.inLink=!1,this.atStart=!0,this.toOffset=hl(n).toOffset,this.unescape=Ap(this,"escape"),this.decode=um(this)}var S_=A_.prototype;function y_(e){var t,n=[];for(t in e)n.push(t);return n}S_.setOptions=Am,S_.parse=Cm,S_.options=vm,S_.exitStart=vp("atStart",!0),S_.enterList=vp("inList",!1),S_.enterLink=vp("inLink",!1),S_.enterBlock=vp("inBlock",!1),S_.interruptParagraph=[["thematicBreak"],["atxHeading"],["fencedCode"],["blockquote"],["html"],["setextHeading",{commonmark:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],S_.interruptList=[["atxHeading",{pedantic:!1}],["fencedCode",{pedantic:!1}],["thematicBreak",{pedantic:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],S_.interruptBlockquote=[["indentedCode",{commonmark:!0}],["fencedCode",{commonmark:!0}],["atxHeading",{commonmark:!0}],["setextHeading",{commonmark:!0}],["thematicBreak",{commonmark:!0}],["html",{commonmark:!0}],["list",{commonmark:!0}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],S_.blockTokenizers={newline:xm,indentedCode:wm,fencedCode:Lm,blockquote:Km,atxHeading:Ym,thematicBreak:tg,list:hg,setextHeading:Lg,html:jg,footnote:Xg,definition:sh,table:Nh,paragraph:Hh},S_.inlineTokenizers={escape:Vh,autoLink:Yh,url:of,html:Ef,link:Sf,reference:Pf,strong:Yf,emphasis:r_,deletion:s_,code:m_,break:__,text:b_},S_.blockMethods=y_(S_.blockTokenizers),S_.inlineMethods=y_(S_.inlineTokenizers),S_.tokenizeBlock=dm("block"),S_.tokenizeInline=dm("inline"),S_.tokenizeFactory=dm;var N_=C_;function C_(t){var n=bp(v_);n.prototype.options=e(n.prototype.options,this.data("settings"),t),this.Parser=n}C_.Parser=v_;var O_=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,l=e[Symbol.iterator]();!(r=(o=l.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{!r&&l.return&&l.return()}finally{if(a)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();function M_(e){return e.replace(/[-[]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var x_="\n",w_="|",R_=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(e).map(M_).join("|");if(!t)throw new Error("remark-custom-blocks needs to be passed a configuration object as option");var n=new RegExp("\\[\\[("+t+")(?: *\\| *(.*))?\\]\\]\n");var r=this.Parser,a=r.prototype.blockTokenizers,i=r.prototype.blockMethods;a.customBlocks=function(t,r,a){var i=t.now(),o=n.exec(r);if(o&&0===o.index){var l=O_(o,3),s=l[0],c=l[1],u=l[2];if(a)return!0;for(var d=[],p=[],m=0;-1!==(m=r.indexOf(x_));){var g=r.indexOf(x_,m+1),h=-1!==g?r.slice(m+1,g):r.slice(m+1);if(h[0]!==w_)break;var f=h.slice(h.startsWith(w_+" ")?2:1);d.push(h),p.push(f),r=r.slice(m+1)}var _=p.join(x_),E=s+d.join(x_),T=e[c],b=T.title&&["optional","required"].includes(T.title);if((!T.title||"required"!==T.title||u)&&(b||!u)){var v=t(E),A=this.enterBlock(),S={type:c+"CustomBlockBody",data:{hName:"div",hProperties:{className:"custom-block-body"}},children:this.tokenizeBlock(_,i)};A();var y=[S];if(b&&u){var N={type:c+"CustomBlockHeading",data:{hName:"div",hProperties:{className:"custom-block-heading"}},children:this.tokenizeInline(u,i)};y.unshift(N)}var C=yl.parse(T.classes||"");return v({type:c+"CustomBlock",children:y,data:{hName:"div",hProperties:{className:["custom-block"].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(C))}}})}}},i.splice(i.indexOf("fencedCode")+1,0,"customBlocks");var o=r.prototype.interruptParagraph,l=r.prototype.interruptList,s=r.prototype.interruptBlockquote;o.splice(o.indexOf("fencedCode")+1,0,["customBlocks"]),l.splice(l.indexOf("fencedCode")+1,0,["customBlocks"]),s.splice(s.indexOf("fencedCode")+1,0,["customBlocks"])},D_=2147483647,I_=36,k_=1,L_=26,P_=38,B_=700,F_=72,U_=128,H_="-",G_=/[^\x20-\x7E]/,q_=/[\x2E\u3002\uFF0E\uFF61]/g,z_={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},K_=I_-k_,j_=Math.floor,V_=String.fromCharCode;function $_(e){throw new RangeError(z_[e])}function W_(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function Y_(e,t,n){var r=0;for(e=n?j_(e/B_):e>>1,e+=j_(e/t);e>K_*L_>>1;r+=I_)e=j_(e/K_);return j_(r+(K_+1)*e/(e+P_))}function Q_(e){return function(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]);var a=function(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}((e=e.replace(q_,".")).split("."),t).join(".");return r+a}(e,function(e){return G_.test(e)?"xn--"+function(e){var t,n,r,a,i,o,l,s,c,u,d,p,m,g,h,f=[];for(p=(e=function(e){for(var t,n,r=[],a=0,i=e.length;a<i;)(t=e.charCodeAt(a++))>=55296&&t<=56319&&a<i?56320==(64512&(n=e.charCodeAt(a++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),a--):r.push(t);return r}(e)).length,t=U_,n=0,i=F_,o=0;o<p;++o)(d=e[o])<128&&f.push(V_(d));for(r=a=f.length,a&&f.push(H_);r<p;){for(l=D_,o=0;o<p;++o)(d=e[o])>=t&&d<l&&(l=d);for(l-t>j_((D_-n)/(m=r+1))&&$_("overflow"),n+=(l-t)*m,t=l,o=0;o<p;++o)if((d=e[o])<t&&++n>D_&&$_("overflow"),d==t){for(s=n,c=I_;!(s<(u=c<=i?k_:c>=i+L_?L_:c-i));c+=I_)h=s-u,g=I_-u,f.push(V_(W_(u+h%g,0))),s=j_(h/g);f.push(V_(W_(s,0))),i=Y_(n,m,r==a),n=0,++r}++n,++t}return f.join("")}(e):e})}function X_(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Z_=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function J_(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}}function eE(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var tE=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t};function nE(e,t,n,r){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var i=/\+/g;e=e.split(t);var o=1e3;r&&"number"==typeof r.maxKeys&&(o=r.maxKeys);var l=e.length;o>0&&l>o&&(l=o);for(var s=0;s<l;++s){var c,u,d,p,m=e[s].replace(i,"%20"),g=m.indexOf(n);g>=0?(c=m.substr(0,g),u=m.substr(g+1)):(c=m,u=""),d=decodeURIComponent(c),p=decodeURIComponent(u),X_(a,d)?Z_(a[d])?a[d].push(p):a[d]=[a[d],p]:a[d]=p}return a}var rE={parse:EE,resolve:AE,resolveObject:SE,format:bE,Url:aE};function aE(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var iE=/^([a-z0-9.+-]+:)/i,oE=/:[0-9]*$/,lE=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,sE=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),cE=["'"].concat(sE),uE=["%","/","?",";","#"].concat(cE),dE=["/","?","#"],pE=255,mE=/^[+a-z0-9A-Z_-]{0,63}$/,gE=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,hE={javascript:!0,"javascript:":!0},fE={javascript:!0,"javascript:":!0},_E={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function EE(e,t,n){if(e&&Oo(e)&&e instanceof aE)return e;var r=new aE;return r.parse(e,t,n),r}function TE(e,t,n,r){if(!So(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var a=t.indexOf("?"),i=-1!==a&&a<t.indexOf("#")?"?":"#",o=t.split(i);o[0]=o[0].replace(/\\/g,"/");var l=t=o.join(i);if(l=l.trim(),!r&&1===t.split("#").length){var s=lE.exec(l);if(s)return e.path=l,e.href=l,e.pathname=s[1],s[2]?(e.search=s[2],e.query=n?nE(e.search.substr(1)):e.search.substr(1)):n&&(e.search="",e.query={}),e}var c,u,d,p,m=iE.exec(l);if(m){var g=(m=m[0]).toLowerCase();e.protocol=g,l=l.substr(m.length)}if(r||m||l.match(/^\/\/[^@\/]+@[^@\/]+/)){var h="//"===l.substr(0,2);!h||m&&fE[m]||(l=l.substr(2),e.slashes=!0)}if(!fE[m]&&(h||m&&!_E[m])){var f,_,E=-1;for(c=0;c<dE.length;c++)-1!==(u=l.indexOf(dE[c]))&&(-1===E||u<E)&&(E=u);for(-1!==(_=-1===E?l.lastIndexOf("@"):l.lastIndexOf("@",E))&&(f=l.slice(0,_),l=l.slice(_+1),e.auth=decodeURIComponent(f)),E=-1,c=0;c<uE.length;c++)-1!==(u=l.indexOf(uE[c]))&&(-1===E||u<E)&&(E=u);-1===E&&(E=l.length),e.host=l.slice(0,E),l=l.slice(E),yE(e),e.hostname=e.hostname||"";var T="["===e.hostname[0]&&"]"===e.hostname[e.hostname.length-1];if(!T){var b=e.hostname.split(/\./);for(c=0,d=b.length;c<d;c++){var v=b[c];if(v&&!v.match(mE)){for(var A="",S=0,y=v.length;S<y;S++)v.charCodeAt(S)>127?A+="x":A+=v[S];if(!A.match(mE)){var N=b.slice(0,c),C=b.slice(c+1),O=v.match(gE);O&&(N.push(O[1]),C.unshift(O[2])),C.length&&(l="/"+C.join(".")+l),e.hostname=N.join(".");break}}}}e.hostname.length>pE?e.hostname="":e.hostname=e.hostname.toLowerCase(),T||(e.hostname=Q_(e.hostname)),p=e.port?":"+e.port:"";var M=e.hostname||"";e.host=M+p,e.href+=e.host,T&&(e.hostname=e.hostname.substr(1,e.hostname.length-2),"/"!==l[0]&&(l="/"+l))}if(!hE[g])for(c=0,d=cE.length;c<d;c++){var x=cE[c];if(-1!==l.indexOf(x)){var w=encodeURIComponent(x);w===x&&(w=escape(x)),l=l.split(x).join(w)}}var R=l.indexOf("#");-1!==R&&(e.hash=l.substr(R),l=l.slice(0,R));var D=l.indexOf("?");if(-1!==D?(e.search=l.substr(D),e.query=l.substr(D+1),n&&(e.query=nE(e.query)),l=l.slice(0,D)):n&&(e.search="",e.query={}),l&&(e.pathname=l),_E[g]&&e.hostname&&!e.pathname&&(e.pathname="/"),e.pathname||e.search){p=e.pathname||"";var I=e.search||"";e.path=p+I}return e.href=vE(e),e}function bE(e){return So(e)&&(e=TE({},e)),vE(e)}function vE(e){var t=e.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var n,r,a,i,o=e.protocol||"",l=e.pathname||"",s=e.hash||"",c=!1,u="";e.host?c=t+e.host:e.hostname&&(c=t+(-1===e.hostname.indexOf(":")?e.hostname:"["+this.hostname+"]"),e.port&&(c+=":"+e.port)),e.query&&Oo(e.query)&&Object.keys(e.query).length&&(n=e.query,r=r||"&",a=a||"=",null===n&&(n=void 0),u="object"==typeof n?eE(tE(n),function(e){var t=encodeURIComponent(J_(e))+a;return Z_(n[e])?eE(n[e],function(e){return t+encodeURIComponent(J_(e))}).join(r):t+encodeURIComponent(J_(n[e]))}).join(r):i?encodeURIComponent(J_(i))+a+encodeURIComponent(J_(n)):"");var d=e.search||u&&"?"+u||"";return o&&":"!==o.substr(-1)&&(o+=":"),e.slashes||(!o||_E[o])&&!1!==c?(c="//"+(c||""),l&&"/"!==l.charAt(0)&&(l="/"+l)):c||(c=""),s&&"#"!==s.charAt(0)&&(s="#"+s),d&&"?"!==d.charAt(0)&&(d="?"+d),o+c+(l=l.replace(/[?#]/g,function(e){return encodeURIComponent(e)}))+(d=d.replace("#","%23"))+s}function AE(e,t){return EE(e,!1,!0).resolve(t)}function SE(e,t){return e?EE(e,!1,!0).resolveObject(t):t}function yE(e){var t=e.host,n=oE.exec(t);n&&(":"!==(n=n[0])&&(e.port=n.substr(1)),t=t.substr(0,t.length-n.length)),t&&(e.hostname=t)}aE.prototype.parse=function(e,t,n){return TE(this,e,t,n)},aE.prototype.format=function(){return vE(this)},aE.prototype.resolve=function(e){return this.resolveObject(EE(e,!1,!0)).format()},aE.prototype.resolveObject=function(e){if(So(e)){var t=new aE;t.parse(e,!1,!0),e=t}for(var n,r=new aE,a=Object.keys(this),i=0;i<a.length;i++){var o=a[i];r[o]=this[o]}if(r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var l=Object.keys(e),s=0;s<l.length;s++){var c=l[s];"protocol"!==c&&(r[c]=e[c])}return _E[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!_E[e.protocol]){for(var u=Object.keys(e),d=0;d<u.length;d++){var p=u[d];r[p]=e[p]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||fE[e.protocol])r.pathname=e.pathname;else{for(n=(e.pathname||"").split("/");n.length&&!(e.host=n.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==n[0]&&n.unshift(""),n.length<2&&n.unshift(""),r.pathname=n.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",g=r.search||"";r.path=m+g}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var h,f=r.pathname&&"/"===r.pathname.charAt(0),_=e.host||e.pathname&&"/"===e.pathname.charAt(0),E=_||f||r.host&&e.pathname,T=E,b=r.pathname&&r.pathname.split("/")||[],v=r.protocol&&!_E[r.protocol];if(n=e.pathname&&e.pathname.split("/")||[],v&&(r.hostname="",r.port=null,r.host&&(""===b[0]?b[0]=r.host:b.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===n[0]?n[0]=e.host:n.unshift(e.host)),e.host=null),E=E&&(""===n[0]||""===b[0])),_)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,b=n;else if(n.length)b||(b=[]),b.pop(),b=b.concat(n),r.search=e.search,r.query=e.query;else if(!vo(e.search))return v&&(r.hostname=r.host=b.shift(),(h=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=h.shift(),r.host=r.hostname=h.shift())),r.search=e.search,r.query=e.query,bo(r.pathname)&&bo(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!b.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var A=b.slice(-1)[0],S=(r.host||e.host||b.length>1)&&("."===A||".."===A)||""===A,y=0,N=b.length;N>=0;N--)"."===(A=b[N])?b.splice(N,1):".."===A?(b.splice(N,1),y++):y&&(b.splice(N,1),y--);if(!E&&!T)for(;y--;y)b.unshift("..");!E||""===b[0]||b[0]&&"/"===b[0].charAt(0)||b.unshift(""),S&&"/"!==b.join("/").substr(-1)&&b.push("");var C=""===b[0]||b[0]&&"/"===b[0].charAt(0);return v&&(r.hostname=r.host=C?"":b.length?b.shift():"",(h=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=h.shift(),r.host=r.hostname=h.shift())),(E=E||r.host&&b.length)&&!C&&b.unshift(""),b.length?r.pathname=b.join("/"):(r.pathname=null,r.path=null),bo(r.pathname)&&bo(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},aE.prototype.parseHost=function(){return yE(this)};var NE=Object.freeze({parse:EE,resolve:AE,resolveObject:SE,format:bE,default:rE,Url:aE}),CE=NE&&rE||NE,OE=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,l=e[Symbol.iterator]();!(r=(o=l.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{!r&&l.return&&l.return()}finally{if(a)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),ME="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},xE=CE.format,wE=CE.parse,RE=CE.URLSearchParams,DE=function(e){if("object"!==(void 0===e?"undefined":ME(e))||!Object.keys(e).length)throw new Error("remark-iframes needs to be passed a configuration object as option");var t=this.Parser,n=t.prototype.blockTokenizers,r=t.prototype.blockMethods;n.iframes=function(t,n,r){if(n.startsWith("!(http")){for(var a="",i="",o=["!","(",")"],l=0;l<n.length&&")"!==n[l-1];l++)a+=n[l],o.includes(n[l])||(i+=n[l]);if(r)return!0;var s=function(t){var n=wE(t).hostname;return e[n]}(i);if(!s||!0===s.disabled||s.match&&s.match instanceof RegExp&&!s.match.test(i))return t(a)({type:"paragraph",children:[{type:"text",value:a}]});var c=function(e,t){var n=t,r=wE(n);if(e.droppedQueryParameters&&r.search){var a=new RE(r.search);e.droppedQueryParameters.forEach(function(e){return a.delete(e)}),r.search=a.toString(),n=xE(r)}return e.replace&&e.replace.length&&(e.replace.forEach(function(e){var t=OE(e,2),a=t[0],i=t[1];a&&i&&(n=n.replace(a,i)),r=wE(n)}),n=xE(r)),e.removeFileName&&(r.pathname=r.pathname.substring(0,r.pathname.lastIndexOf("/")),n=xE(r)),e.removeAfter&&n.includes(e.removeAfter)&&(n=n.substring(0,n.indexOf(e.removeAfter))),e.append&&(n+=e.append),n}(s,i),u=function(e,t){var n="",r=e.thumbnail;return r&&r.format&&(n=r.format,Object.keys(r).filter(function(e){return"format"!==e}).forEach(function(e){var a=new RegExp("{"+e+"}","g"),i=new RegExp(r[e]).exec(t);i&&(n=n.replace(a,i[1]))})),n}(s,c);t(a)({type:"iframe",src:i,data:{hName:s.tag,hProperties:{src:c,width:s.width,height:s.height,allowfullscreen:!0,frameborder:"0"},thumbnail:u}})}},r.splice(r.indexOf("blockquote")+1,0,"iframes");var a=this.Compiler;if(a){var i=a.prototype.visitors;if(!i)return;i.iframe=function(e){return"!("+e.src+")"}}};return function(e,t){au().use(N_).use(Ta).use(Oa).use(Sa).use(ma).use(ye).use(de).use(pa).use(R_,{information:{classes:"special-box information",title:"optional"},comment:{classes:"special-box comment",title:"optional"},attention:{classes:"special-box attention",title:"optional"},question:{classes:"special-box question",title:"optional"},good:{classes:"special-box good"},secret:{classes:"special-box secret",title:"optional"},bad:{classes:"special-box bad"}}).use(da).use(DE,{"www.youtube.com":{tag:"IFRAME",width:560,height:315,disabled:!1,replace:[["watch?v=","embed/"],["http://","https://"]],thumbnail:{format:"http://img.youtube.com/vi/{id}/0.jpg",id:".+/(.+)$"},removeAfter:"&"}}).use(ae,{allowDangerousHTML:!0}).use($u).use(ac).use(Ep).process(e,t)}}();
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1kLm1pbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3h0ZW5kL2ltbXV0YWJsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LWJ1aWxkZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1pcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtcG9zaXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1nZW5lcmF0ZWQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC1kZWZpbml0aW9ucy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmltL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvYWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvb25lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvdGhlbWF0aWMtYnJlYWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi93cmFwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGlzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcmVoeXBlL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2Zvb3Rlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcmVoeXBlL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2Jsb2NrcXVvdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZXBlYXQtc3RyaW5nL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RldGFiL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcmVoeXBlL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2RlbGV0ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcmVoeXBlL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2VtcGhhc2lzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvZm9vdG5vdGUtcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvZm9vdG5vdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9oZWFkaW5nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZHVybC9lbmNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9mYWlsc2FmZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9jb2xsYXBzZS13aGl0ZS1zcGFjZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmltLWxpbmVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9pbWFnZS1yZWZlcmVuY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9pbWFnZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcmVoeXBlL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2lubGluZS1jb2RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGluay1yZWZlcmVuY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9saW5rLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGlzdC1pdGVtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvcGFyYWdyYXBoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvcm9vdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcmVoeXBlL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3N0cm9uZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcmVoeXBlL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3RhYmxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1yZWh5cGUvbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvdGV4dC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcmVoeXBlL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcmVoeXBlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1rYmQvZGlzdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbWF0aC9pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHJpbS10cmFpbGluZy1saW5lcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbWF0aC9ibG9jay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbWF0aC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2hpZ2hsaWdodC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9sb3dsaWdodC9saWIvY29yZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy8xYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hYm5mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FjY2Vzc2xvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY3Rpb25zY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYWRhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FwYWNoZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcHBsZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcHAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXJkdWluby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcm1hc20uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FzY2lpZG9jLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FzcGVjdGouanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXV0b2hvdGtleS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hdXRvaXQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXZyYXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F3ay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9heGFwdGEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYmFzaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9iYXNpYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ibmYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYnJhaW5mdWNrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NhbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jYXBucHJvdG8uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2V5bG9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NsZWFuLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nsb2p1cmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2xvanVyZS1yZXBsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NtYWtlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NvZmZlZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb3EuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NybXNoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NyeXN0YWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3NwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nzcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hcmtkb3duLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RhcnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZGVscGhpLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RpZmYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZGphbmdvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Rucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kb2NrZXJmaWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Rvcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kc2NvbmZpZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kdHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHVzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lYm5mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VsaXhpci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbG0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnVieS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lcmIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJsYW5nLXJlcGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJsYW5nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2V4Y2VsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZpeC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9mbGl4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZvcnRyYW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZnNoYXJwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dhbXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2F1c3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2NvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2hlcmtpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbHNsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dvbG8uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3JhZGxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dyb292eS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYW1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbmRsZWJhcnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaGFza2VsbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYXhlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hzcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9odG1sYmFycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9odHRwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2luZm9ybTcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaW5pLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2lycGY5MC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2phdmFzY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamJvc3MtY2xpLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2pzb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvanVsaWEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvanVsaWEtcmVwbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9rb3RsaW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGFzc28uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGRpZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sZWFmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xlc3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGlzcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9saXZlY29kZXNlcnZlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9saXZlc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xsdm0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbHNsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2x1YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYWtlZmlsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXRoZW1hdGljYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXRsYWIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF4aW1hLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21lbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tZXJjdXJ5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21pcHNhc20uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWl6YXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGVybC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tb2pvbGljaW91cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tb25rZXkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9vbnNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uMXFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25naW54LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25pbXJvZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uaXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbnNpcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vYmplY3RpdmVjLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL29jYW1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL29wZW5zY2FkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL294eWdlbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGFyc2VyMy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9waHAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcG9ueS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wb3dlcnNoZWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb2Nlc3NpbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvZmlsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9sb2cuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvdG9idWYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHVwcGV0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3B1cmViYXNpYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9weXRob24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9xbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yaWIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcm9ib2NvbmYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcm91dGVyb3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnNsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1bGVzbGFuZ3VhZ2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnVzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2FsYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2hlbWUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2NpbGFiLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Njc3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2hlbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21hbGkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21hbGx0YWxrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zcWYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3FsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N0YW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3RhdGEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3RlcDIxLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N0eWx1cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdWJ1bml0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N3aWZ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RhZ2dlcnNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy95YW1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RhcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90Y2wuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RocmlmdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90cC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90d2lnLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R5cGVzY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmFsYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92Ym5ldC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YnNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YnNjcmlwdC1odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zlcmlsb2cuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmhkbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92aW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveDg2YXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3hsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3hxdWVyeS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy96ZXBoaXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbG93bGlnaHQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLWhpZ2hsaWdodC5qcy9kaXN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1zcGVjaWFsLWJveC9hcHAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW11bHRpcGxlLWNob2ljZS9hcHAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWQtYXR0ci1wYXJzZXIvZGlzdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbGluZS1pbnB1dC9hcHAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXNlbGVjdC9hcHAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXRleHQtaW5wdXQvYXBwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1yYXcvbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvY29tbW9uL3VuaWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXJhdy9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvcHJlcHJvY2Vzc29yLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1yYXcvbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvdG9rZW5pemVyL25hbWVkX2VudGl0eV9kYXRhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1yYXcvbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvdG9rZW5pemVyL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1yYXcvbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvY29tbW9uL2h0bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXJhdy9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvb3Blbl9lbGVtZW50X3N0YWNrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1yYXcvbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvcGFyc2VyL2Zvcm1hdHRpbmdfZWxlbWVudF9saXN0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1yYXcvbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvdXRpbHMvbWl4aW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWdsb2JhbHMvc3JjL2dsb2JhbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9idWZmZXItZXM2L2Jhc2U2NC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9idWZmZXItZXM2L2llZWU3NTQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnVmZmVyLWVzNi9pc0FycmF5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2J1ZmZlci1lczYvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy1lczYvYnJvd3Nlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yb2xsdXAtcGx1Z2luLW5vZGUtYnVpbHRpbnMvc3JjL2VzNi9pbmhlcml0cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yb2xsdXAtcGx1Z2luLW5vZGUtYnVpbHRpbnMvc3JjL2VzNi91dGlsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1yYXcvbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9wb3NpdGlvbl90cmFja2luZy9wcmVwcm9jZXNzb3JfbWl4aW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXJhdy9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL2xvY2F0aW9uX2luZm8vdG9rZW5pemVyX21peGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1yYXcvbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9sb2NhdGlvbl9pbmZvL29wZW5fZWxlbWVudF9zdGFja19taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtcmF3L25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvbG9jYXRpb25faW5mby9wYXJzZXJfbWl4aW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXJhdy9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90cmVlX2FkYXB0ZXJzL2RlZmF1bHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXJhdy9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vZG9jdHlwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtcmF3L25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9mb3JlaWduX2NvbnRlbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXJhdy9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXJhdy9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi91dGlscy9tZXJnZV9vcHRpb25zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2NhbWVsY2FzZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy92ZmlsZS1sb2NhdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtcGFyc2Utc2VsZWN0b3IvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3BhY2Utc2VwYXJhdGVkLXRva2Vucy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9jb21tYS1zZXBhcmF0ZWQtdG9rZW5zL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3RzY3JpcHQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXJhdy9ub2RlX21vZHVsZXMvaGFzdC11dGlsLWZyb20tcGFyc2U1L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2tlYmFiLWNhc2UvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvb2JqZWN0LWtleXMvaXNBcmd1bWVudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvb2JqZWN0LWtleXMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm9yZWFjaC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kZWZpbmUtcHJvcGVydGllcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy1uYW4vaW1wbGVtZW50YXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtbmFuL3BvbHlmaWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2lzLW5hbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy1uYW4vc2hpbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXRvLWh5cGVyc2NyaXB0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3p3aXRjaC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy94LWlzLWFycmF5L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21hcHovaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLXBhcnNlNS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtcmF3L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlaHlwZS1yYXcvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMva2F0ZXgvZGlzdC9rYXRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9leHRlbmQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYmFpbC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXN0cmluZ2lmeS1wb3NpdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy92ZmlsZS1tZXNzYWdlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JvbGx1cC1wbHVnaW4tbm9kZS1idWlsdGlucy9zcmMvZXM2L3BhdGguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVwbGFjZS1leHQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtYnVmZmVyL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3ZmaWxlL2NvcmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHJvdWdoL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3gtaXMtc3RyaW5nL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3gtaXMtZnVuY3Rpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtcGxhaW4tb2JqL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaWZpZWQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZnVuY3Rpb24tYmluZC9pbXBsZW1lbnRhdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mdW5jdGlvbi1iaW5kL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhcy9zcmMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLWZyb20tcGFyc2U1L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvY29tbW9uL3VuaWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvcHJlcHJvY2Vzc29yLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvbG9jYXRpb25faW5mby90b2tlbml6ZXJfbWl4aW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvbmFtZWRfZW50aXR5X3RyaWUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3BhcnNlci9vcGVuX2VsZW1lbnRfc3RhY2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvZm9ybWF0dGluZ19lbGVtZW50X2xpc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9sb2NhdGlvbl9pbmZvL3BhcnNlcl9taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9kb2N0eXBlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvY29tbW9uL2ZvcmVpZ25fY29udGVudC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3BhcnNlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9tZXJnZV9vcHRpb25zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlaHlwZS1wYXJzZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWh5cGUta2F0ZXgvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLWlzLWVsZW1lbnQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXdoaXRlc3BhY2UvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvc2libGluZ3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvZmlyc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvcGxhY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvd2hpdGUtc3BhY2UtbGVmdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvb21pc3Npb24vb21pc3Npb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL2Nsb3NpbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL29wZW5pbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9hbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtaGV4YWRlY2ltYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtYWxwaGFiZXRpY2FsL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2lzLWRlY2ltYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtYWxwaGFudW1lcmljYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3RyaW5naWZ5LWVudGl0aWVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi90ZXh0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Njb3VudC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvZWxlbWVudC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvZG9jdHlwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvY29tbWVudC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvcmF3LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9vbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlaHlwZS1zdHJpbmdpZnkvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHNfYnJvd3Nlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmhlcml0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N0YXRlLXRvZ2dsZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3VuZXNjYXBlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlLWVudGl0aWVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvZGVjb2RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWVzY2FwZXMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9kZWZhdWx0cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3NldC1vcHRpb25zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtcmVtb3ZlLXBvc2l0aW9uL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvcGFyc2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9uZXdsaW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmRlbnRlZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2NvZGUtZmVuY2VkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9pbnRlcnJ1cHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9ibG9ja3F1b3RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1hdHguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS90aGVtYXRpYy1icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3V0aWwvZ2V0LWluZGVudGF0aW9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9yZW1vdmUtaW5kZW50YXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9saXN0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1zZXRleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91dGlsL2h0bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9odG1sLWJsb2NrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9ub3JtYWxpemUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9mb290bm90ZS1kZWZpbml0aW9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZGVmaW5pdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RhYmxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvcGFyYWdyYXBoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2VzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS90YWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9hdXRvLWxpbmsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaHRtbC1pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvbGluay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2xpbmsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9yZWZlcmVuY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvc3Ryb25nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvc3Ryb25nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2lzLXdvcmQtY2hhcmFjdGVyL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VtcGhhc2lzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZW1waGFzaXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvZGVsZXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZGVsZXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2NvZGUtaW5saW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvYnJlYWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9wYXJzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1jdXN0b20tYmxvY2tzL2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcHVueWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1pZnJhbWVzL2Rpc3QvaW5kZXguanMiLCIuLi8uLi90b2h0bWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBleHRlbmRcblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gZXh0ZW5kKCkge1xuICAgIHZhciB0YXJnZXQgPSB7fVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRcbn1cbiIsIi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ldy13cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0bztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB1ICh0eXBlLCBwcm9wcywgdmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwgJiYgKHR5cGVvZiBwcm9wcyAhPSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHByb3BzKSkpIHtcbiAgICB2YWx1ZSA9IHByb3BzO1xuICAgIHByb3BzID0ge307XG4gIH1cblxuICByZXR1cm4gYXNzaWduKHt9LCBwcm9wcywgeyB0eXBlOiBTdHJpbmcodHlwZSkgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZSAhPSBudWxsICYmIChBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjaGlsZHJlbjogdmFsdWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyB2YWx1ZTogU3RyaW5nKHZhbHVlKSB9KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtcGFyYW1zICovXG5cbi8qIEV4cG9zZS4gKi9cbm1vZHVsZS5leHBvcnRzID0gaXM7XG5cbi8qIEFzc2VydCBpZiBgdGVzdGAgcGFzc2VzIGZvciBgbm9kZWAuXG4gKiBXaGVuIGEgYHBhcmVudGAgbm9kZSBpcyBrbm93biB0aGUgYGluZGV4YCBvZiBub2RlICovXG5mdW5jdGlvbiBpcyh0ZXN0LCBub2RlLCBpbmRleCwgcGFyZW50LCBjb250ZXh0KSB7XG4gIHZhciBoYXNQYXJlbnQgPSBwYXJlbnQgIT09IG51bGwgJiYgcGFyZW50ICE9PSB1bmRlZmluZWQ7XG4gIHZhciBoYXNJbmRleCA9IGluZGV4ICE9PSBudWxsICYmIGluZGV4ICE9PSB1bmRlZmluZWQ7XG4gIHZhciBjaGVjayA9IGNvbnZlcnQodGVzdCk7XG5cbiAgaWYgKFxuICAgIGhhc0luZGV4ICYmXG4gICAgKHR5cGVvZiBpbmRleCAhPT0gJ251bWJlcicgfHwgaW5kZXggPCAwIHx8IGluZGV4ID09PSBJbmZpbml0eSlcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBwb3NpdGl2ZSBmaW5pdGUgaW5kZXggb3IgY2hpbGQgbm9kZScpO1xuICB9XG5cbiAgaWYgKGhhc1BhcmVudCAmJiAoIWlzKG51bGwsIHBhcmVudCkgfHwgIXBhcmVudC5jaGlsZHJlbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHBhcmVudCBub2RlJyk7XG4gIH1cblxuICBpZiAoIW5vZGUgfHwgIW5vZGUudHlwZSB8fCB0eXBlb2Ygbm9kZS50eXBlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChoYXNQYXJlbnQgIT09IGhhc0luZGV4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBib3RoIHBhcmVudCBhbmQgaW5kZXgnKTtcbiAgfVxuXG4gIHJldHVybiBCb29sZWFuKGNoZWNrLmNhbGwoY29udGV4dCwgbm9kZSwgaW5kZXgsIHBhcmVudCkpO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0KHRlc3QpIHtcbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0eXBlRmFjdG9yeSh0ZXN0KTtcbiAgfVxuXG4gIGlmICh0ZXN0ID09PSBudWxsIHx8IHRlc3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBvaztcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gKCdsZW5ndGgnIGluIHRlc3QgPyBhbnlGYWN0b3J5IDogbWF0Y2hlc0ZhY3RvcnkpKHRlc3QpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHRlc3Q7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGZ1bmN0aW9uLCBzdHJpbmcsIG9yIG9iamVjdCBhcyB0ZXN0Jyk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRBbGwodGVzdHMpIHtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgdmFyIGxlbmd0aCA9IHRlc3RzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gLTE7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRzW2luZGV4XSA9IGNvbnZlcnQodGVzdHNbaW5kZXhdKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKiBVdGlsaXR5IGFzc2VydCBlYWNoIHByb3BlcnR5IGluIGB0ZXN0YCBpcyByZXByZXNlbnRlZFxuICogaW4gYG5vZGVgLCBhbmQgZWFjaCB2YWx1ZXMgYXJlIHN0cmljdGx5IGVxdWFsLiAqL1xuZnVuY3Rpb24gbWF0Y2hlc0ZhY3RvcnkodGVzdCkge1xuICByZXR1cm4gbWF0Y2hlcztcblxuICBmdW5jdGlvbiBtYXRjaGVzKG5vZGUpIHtcbiAgICB2YXIga2V5O1xuXG4gICAgZm9yIChrZXkgaW4gdGVzdCkge1xuICAgICAgaWYgKG5vZGVba2V5XSAhPT0gdGVzdFtrZXldKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhbnlGYWN0b3J5KHRlc3RzKSB7XG4gIHZhciBjaGVja3MgPSBjb252ZXJ0QWxsKHRlc3RzKTtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrcy5sZW5ndGg7XG5cbiAgcmV0dXJuIG1hdGNoZXM7XG5cbiAgZnVuY3Rpb24gbWF0Y2hlcygpIHtcbiAgICB2YXIgaW5kZXggPSAtMTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY2hlY2tzW2luZGV4XS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKiBVdGlsaXR5IHRvIGNvbnZlcnQgYSBzdHJpbmcgaW50byBhIGZ1bmN0aW9uIHdoaWNoIGNoZWNrc1xuICogYSBnaXZlbiBub2Rl4oCZcyB0eXBlIGZvciBzYWlkIHN0cmluZy4gKi9cbmZ1bmN0aW9uIHR5cGVGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIHR5cGU7XG5cbiAgZnVuY3Rpb24gdHlwZShub2RlKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4obm9kZSAmJiBub2RlLnR5cGUgPT09IHRlc3QpO1xuICB9XG59XG5cbi8qIFV0aWxpdHkgdG8gcmV0dXJuIHRydWUuICovXG5mdW5jdGlvbiBvaygpIHtcbiAgcmV0dXJuIHRydWU7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gdmlzaXQ7XG5cbnZhciBpcyA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtaXMnKTtcblxudmFyIENPTlRJTlVFID0gdHJ1ZTtcbnZhciBTS0lQID0gJ3NraXAnO1xudmFyIEVYSVQgPSBmYWxzZTtcblxudmlzaXQuQ09OVElOVUUgPSBDT05USU5VRTtcbnZpc2l0LlNLSVAgPSBTS0lQO1xudmlzaXQuRVhJVCA9IEVYSVQ7XG5cbmZ1bmN0aW9uIHZpc2l0KHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3I7XG4gICAgdmlzaXRvciA9IHRlc3Q7XG4gICAgdGVzdCA9IG51bGw7XG4gIH1cblxuICBvbmUodHJlZSk7XG5cbiAgLyogVmlzaXQgYSBzaW5nbGUgbm9kZS4gKi9cbiAgZnVuY3Rpb24gb25lKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgICB2YXIgcmVzdWx0O1xuXG4gICAgaW5kZXggPSBpbmRleCB8fCAocGFyZW50ID8gMCA6IG51bGwpO1xuXG4gICAgaWYgKCF0ZXN0IHx8IG5vZGUudHlwZSA9PT0gdGVzdCB8fCBpcyh0ZXN0LCBub2RlLCBpbmRleCwgcGFyZW50IHx8IG51bGwpKSB7XG4gICAgICByZXN1bHQgPSB2aXNpdG9yKG5vZGUsIGluZGV4LCBwYXJlbnQgfHwgbnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9PT0gRVhJVCkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5jaGlsZHJlbiAmJiByZXN1bHQgIT09IFNLSVApIHtcbiAgICAgIHJldHVybiBhbGwobm9kZS5jaGlsZHJlbiwgbm9kZSkgPT09IEVYSVQgPyBFWElUIDogcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiBWaXNpdCBjaGlsZHJlbiBpbiBgcGFyZW50YC4gKi9cbiAgZnVuY3Rpb24gYWxsKGNoaWxkcmVuLCBwYXJlbnQpIHtcbiAgICB2YXIgc3RlcCA9IHJldmVyc2UgPyAtMSA6IDE7XG4gICAgdmFyIGluZGV4ID0gKHJldmVyc2UgPyBjaGlsZHJlbi5sZW5ndGggOiAtMSkgKyBzdGVwO1xuICAgIHZhciBjaGlsZDtcbiAgICB2YXIgcmVzdWx0O1xuXG4gICAgd2hpbGUgKGluZGV4ID4gLTEgJiYgaW5kZXggPCBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baW5kZXhdO1xuICAgICAgcmVzdWx0ID0gY2hpbGQgJiYgb25lKGNoaWxkLCBpbmRleCwgcGFyZW50KTtcblxuICAgICAgaWYgKHJlc3VsdCA9PT0gRVhJVCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHR5cGVvZiByZXN1bHQgPT09ICdudW1iZXInID8gcmVzdWx0IDogaW5kZXggKyBzdGVwO1xuICAgIH1cblxuICAgIHJldHVybiBDT05USU5VRTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBFeHBvc2UuICovXG52YXIgcG9zaXRpb24gPSBleHBvcnRzO1xuXG5wb3NpdGlvbi5zdGFydCA9IHBvc2l0aW9uRmFjdG9yeSgnc3RhcnQnKTtcbnBvc2l0aW9uLmVuZCA9IHBvc2l0aW9uRmFjdG9yeSgnZW5kJyk7XG5cbi8qIEZhY3RvcnkgdG8gZ2V0IGEgcG9zaXRpb24gYXQgYHR5cGVgLiAqL1xuZnVuY3Rpb24gcG9zaXRpb25GYWN0b3J5KHR5cGUpIHtcbiAgcmV0dXJuIHBvcztcblxuICAvKiBHZXQgYSBwb3NpdGlvbiBpbiBgbm9kZWAgYXQgYSBib3VuZCBgdHlwZWAuICovXG4gIGZ1bmN0aW9uIHBvcyhub2RlKSB7XG4gICAgdmFyIHBvcyA9IChub2RlICYmIG5vZGUucG9zaXRpb24gJiYgbm9kZS5wb3NpdGlvblt0eXBlXSkgfHwge307XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogcG9zLmxpbmUgfHwgbnVsbCxcbiAgICAgIGNvbHVtbjogcG9zLmNvbHVtbiB8fCBudWxsLFxuICAgICAgb2Zmc2V0OiBpc05hTihwb3Mub2Zmc2V0KSA/IG51bGwgOiBwb3Mub2Zmc2V0XG4gICAgfTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBFeHBvc2UuICovXG5tb2R1bGUuZXhwb3J0cyA9IGdlbmVyYXRlZDtcblxuLyogRGV0ZWN0IGlmIGEgbm9kZSB3YXMgYXZhaWxhYmxlIGluIHRoZSBvcmlnaW5hbCBkb2N1bWVudC4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZChub2RlKSB7XG4gIHZhciBwb3NpdGlvbiA9IG9wdGlvbmFsKG9wdGlvbmFsKG5vZGUpLnBvc2l0aW9uKTtcbiAgdmFyIHN0YXJ0ID0gb3B0aW9uYWwocG9zaXRpb24uc3RhcnQpO1xuICB2YXIgZW5kID0gb3B0aW9uYWwocG9zaXRpb24uZW5kKTtcblxuICByZXR1cm4gIXN0YXJ0LmxpbmUgfHwgIXN0YXJ0LmNvbHVtbiB8fCAhZW5kLmxpbmUgfHwgIWVuZC5jb2x1bW47XG59XG5cbi8qIFJldHVybiBgdmFsdWVgIGlmIGl04oCZcyBhbiBvYmplY3QsIGFuIGVtcHR5IG9iamVjdFxuICogb3RoZXJ3aXNlLiAqL1xuZnVuY3Rpb24gb3B0aW9uYWwodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZSA6IHt9O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RGVmaW5pdGlvbkZhY3Rvcnk7XG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuLyogR2V0IGEgZGVmaW5pdGlvbiBpbiBgbm9kZWAgYnkgYGlkZW50aWZpZXJgLiAqL1xuZnVuY3Rpb24gZ2V0RGVmaW5pdGlvbkZhY3Rvcnkobm9kZSwgb3B0aW9ucykge1xuICByZXR1cm4gZ2V0dGVyRmFjdG9yeShnYXRoZXIobm9kZSwgb3B0aW9ucykpO1xufVxuXG4vKiBHYXRoZXIgYWxsIGRlZmluaXRpb25zIGluIGBub2RlYCAqL1xuZnVuY3Rpb24gZ2F0aGVyKG5vZGUsIG9wdGlvbnMpIHtcbiAgdmFyIGNhY2hlID0ge307XG5cbiAgaWYgKCFub2RlIHx8ICFub2RlLnR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21kYXN0LXV0aWwtZGVmaW5pdGlvbnMgZXhwZWN0ZWQgbm9kZScpO1xuICB9XG5cbiAgdmlzaXQobm9kZSwgJ2RlZmluaXRpb24nLCBvcHRpb25zICYmIG9wdGlvbnMuY29tbW9ubWFyayA/IGNvbW1vbm1hcmsgOiBub3JtYWwpO1xuXG4gIHJldHVybiBjYWNoZTtcblxuICBmdW5jdGlvbiBjb21tb25tYXJrKGRlZmluaXRpb24pIHtcbiAgICB2YXIgaWQgPSBub3JtYWxpc2UoZGVmaW5pdGlvbi5pZGVudGlmaWVyKTtcbiAgICBpZiAoIW93bi5jYWxsKGNhY2hlLCBpZCkpIHtcbiAgICAgIGNhY2hlW2lkXSA9IGRlZmluaXRpb247XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbm9ybWFsKGRlZmluaXRpb24pIHtcbiAgICBjYWNoZVtub3JtYWxpc2UoZGVmaW5pdGlvbi5pZGVudGlmaWVyKV0gPSBkZWZpbml0aW9uO1xuICB9XG59XG5cbi8qIEZhY3RvcnkgdG8gZ2V0IGEgbm9kZSBmcm9tIHRoZSBnaXZlbiBkZWZpbml0aW9uLWNhY2hlLiAqL1xuZnVuY3Rpb24gZ2V0dGVyRmFjdG9yeShjYWNoZSkge1xuICByZXR1cm4gZ2V0dGVyO1xuXG4gIC8qIEdldCBhIG5vZGUgZnJvbSB0aGUgYm91bmQgZGVmaW5pdGlvbi1jYWNoZS4gKi9cbiAgZnVuY3Rpb24gZ2V0dGVyKGlkZW50aWZpZXIpIHtcbiAgICB2YXIgaWQgPSBpZGVudGlmaWVyICYmIG5vcm1hbGlzZShpZGVudGlmaWVyKTtcbiAgICByZXR1cm4gaWQgJiYgb3duLmNhbGwoY2FjaGUsIGlkKSA/IGNhY2hlW2lkXSA6IG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXNlKGlkZW50aWZpZXIpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXIudG9VcHBlckNhc2UoKTtcbn1cbiIsIlxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gdHJpbTtcblxuZnVuY3Rpb24gdHJpbShzdHIpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMqfFxccyokL2csICcnKTtcbn1cblxuZXhwb3J0cy5sZWZ0ID0gZnVuY3Rpb24oc3RyKXtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzKi8sICcnKTtcbn07XG5cbmV4cG9ydHMucmlnaHQgPSBmdW5jdGlvbihzdHIpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xccyokLywgJycpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBhbGw7XG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpO1xudmFyIG9uZSA9IHJlcXVpcmUoJy4vb25lJyk7XG5cbi8qIFRyYW5zZm9ybSB0aGUgY2hpbGRyZW4gb2YgYHBhcmVudGAuICovXG5mdW5jdGlvbiBhbGwoaCwgcGFyZW50KSB7XG4gIHZhciBub2RlcyA9IHBhcmVudC5jaGlsZHJlbiB8fCBbXTtcbiAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aDtcbiAgdmFyIHZhbHVlcyA9IFtdO1xuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIHJlc3VsdDtcbiAgdmFyIGhlYWQ7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHQgPSBvbmUoaCwgbm9kZXNbaW5kZXhdLCBwYXJlbnQpO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgaWYgKGluZGV4ICYmIG5vZGVzW2luZGV4IC0gMV0udHlwZSA9PT0gJ2JyZWFrJykge1xuICAgICAgICBpZiAocmVzdWx0LnZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdHJpbS5sZWZ0KHJlc3VsdC52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBoZWFkID0gcmVzdWx0LmNoaWxkcmVuICYmIHJlc3VsdC5jaGlsZHJlblswXTtcblxuICAgICAgICBpZiAoaGVhZCAmJiBoZWFkLnZhbHVlKSB7XG4gICAgICAgICAgaGVhZC52YWx1ZSA9IHRyaW0ubGVmdChoZWFkLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KHJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlcztcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBvbmU7XG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpO1xudmFyIGFsbCA9IHJlcXVpcmUoJy4vYWxsJyk7XG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuLyogVHJhbnNmb3JtIGFuIHVua25vd24gbm9kZS4gKi9cbmZ1bmN0aW9uIHVua25vd24oaCwgbm9kZSkge1xuICBpZiAodGV4dChub2RlKSkge1xuICAgIHJldHVybiBoLmF1Z21lbnQobm9kZSwgdSgndGV4dCcsIG5vZGUudmFsdWUpKTtcbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsICdkaXYnLCBhbGwoaCwgbm9kZSkpO1xufVxuXG4vKiBWaXNpdCBhIG5vZGUuICovXG5mdW5jdGlvbiBvbmUoaCwgbm9kZSwgcGFyZW50KSB7XG4gIHZhciB0eXBlID0gbm9kZSAmJiBub2RlLnR5cGU7XG4gIHZhciBmbiA9IG93bi5jYWxsKGguaGFuZGxlcnMsIHR5cGUpID8gaC5oYW5kbGVyc1t0eXBlXSA6IG51bGw7XG5cbiAgLyogRmFpbCBvbiBub24tbm9kZXMuICovXG4gIGlmICghdHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgbm9kZSwgZ290IGAnICsgbm9kZSArICdgJyk7XG4gIH1cblxuICByZXR1cm4gKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyA/IGZuIDogdW5rbm93bikoaCwgbm9kZSwgcGFyZW50KTtcbn1cblxuLyogQ2hlY2sgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIHJlbmRlcmVyZWQgYSB0ZXh0IG5vZGUuICovXG5mdW5jdGlvbiB0ZXh0KG5vZGUpIHtcbiAgdmFyIGRhdGEgPSBub2RlLmRhdGEgfHwge307XG5cbiAgaWYgKG93bi5jYWxsKGRhdGEsICdoTmFtZScpIHx8IG93bi5jYWxsKGRhdGEsICdoUHJvcGVydGllcycpIHx8IG93bi5jYWxsKGRhdGEsICdoQ2hpbGRyZW4nKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAndmFsdWUnIGluIG5vZGU7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gdGhlbWF0aWNCcmVhaztcblxuLyogVHJhbnNmb3JtIGEgdGhlbWF0aWMgYnJlYWsgLyBob3Jpem9udGFsIHJ1bGUuICovXG5mdW5jdGlvbiB0aGVtYXRpY0JyZWFrKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2hyJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcDtcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJyk7XG5cbi8qIFdyYXAgYG5vZGVzYCB3aXRoIG5ld2xpbmVzIGJldHdlZW4gZWFjaCBlbnRyeS5cbiAqIE9wdGlvbmFsbHkgYWRkcyBuZXdsaW5lcyBhdCB0aGUgc3RhcnQgYW5kIGVuZC4gKi9cbmZ1bmN0aW9uIHdyYXAobm9kZXMsIGxvb3NlKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBsZW5ndGggPSBub2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGxvb3NlKSB7XG4gICAgcmVzdWx0LnB1c2godSgndGV4dCcsICdcXG4nKSk7XG4gIH1cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChpbmRleCkge1xuICAgICAgcmVzdWx0LnB1c2godSgndGV4dCcsICdcXG4nKSk7XG4gICAgfVxuXG4gICAgcmVzdWx0LnB1c2gobm9kZXNbaW5kZXhdKTtcbiAgfVxuXG4gIGlmIChsb29zZSAmJiBub2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICByZXN1bHQucHVzaCh1KCd0ZXh0JywgJ1xcbicpKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdDtcblxudmFyIHdyYXAgPSByZXF1aXJlKCcuLi93cmFwJyk7XG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJyk7XG5cbi8qIFRyYW5zZm9ybSBhIGxpc3QuICovXG5mdW5jdGlvbiBsaXN0KGgsIG5vZGUpIHtcbiAgdmFyIHByb3BzID0ge307XG4gIHZhciBuYW1lID0gbm9kZS5vcmRlcmVkID8gJ29sJyA6ICd1bCc7XG5cbiAgaWYgKHR5cGVvZiBub2RlLnN0YXJ0ID09PSAnbnVtYmVyJyAmJiBub2RlLnN0YXJ0ICE9PSAxKSB7XG4gICAgcHJvcHMuc3RhcnQgPSBub2RlLnN0YXJ0O1xuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgbmFtZSwgcHJvcHMsIHdyYXAoYWxsKGgsIG5vZGUpLCB0cnVlKSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2VuZXJhdGVGb290bm90ZXM7XG5cbnZhciB0aGVtYXRpY0JyZWFrID0gcmVxdWlyZSgnLi9oYW5kbGVycy90aGVtYXRpYy1icmVhaycpO1xudmFyIGxpc3QgPSByZXF1aXJlKCcuL2hhbmRsZXJzL2xpc3QnKTtcbnZhciB3cmFwID0gcmVxdWlyZSgnLi93cmFwJyk7XG5cbi8qIFRyYW5zZm9ybSBhbGwgZm9vdG5vdGUgZGVmaW5pdGlvbnMsIGlmIGFueS4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlRm9vdG5vdGVzKGgpIHtcbiAgdmFyIGZvb3Rub3RlcyA9IGguZm9vdG5vdGVzO1xuICB2YXIgbGVuZ3RoID0gZm9vdG5vdGVzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBsaXN0SXRlbXMgPSBbXTtcbiAgdmFyIGRlZjtcblxuICBpZiAoIWxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBkZWYgPSBmb290bm90ZXNbaW5kZXhdO1xuXG4gICAgbGlzdEl0ZW1zW2luZGV4XSA9IHtcbiAgICAgIHR5cGU6ICdsaXN0SXRlbScsXG4gICAgICBkYXRhOiB7aFByb3BlcnRpZXM6IHtpZDogJ2ZuLScgKyBkZWYuaWRlbnRpZmllcn19LFxuICAgICAgY2hpbGRyZW46IGRlZi5jaGlsZHJlbi5jb25jYXQoe1xuICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgIHVybDogJyNmbnJlZi0nICsgZGVmLmlkZW50aWZpZXIsXG4gICAgICAgIGRhdGE6IHtoUHJvcGVydGllczoge2NsYXNzTmFtZTogWydmb290bm90ZS1iYWNrcmVmJ119fSxcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgIHZhbHVlOiAn4oapJ1xuICAgICAgICB9XVxuICAgICAgfSksXG4gICAgICBwb3NpdGlvbjogZGVmLnBvc2l0aW9uXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBoKG51bGwsICdkaXYnLCB7XG4gICAgY2xhc3NOYW1lOiBbJ2Zvb3Rub3RlcyddXG4gIH0sIHdyYXAoW1xuICAgIHRoZW1hdGljQnJlYWsoaCksXG4gICAgbGlzdChoLCB7XG4gICAgICB0eXBlOiAnbGlzdCcsXG4gICAgICBvcmRlcmVkOiB0cnVlLFxuICAgICAgY2hpbGRyZW46IGxpc3RJdGVtc1xuICAgIH0pXG4gIF0sIHRydWUpKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBibG9ja3F1b3RlO1xuXG52YXIgd3JhcCA9IHJlcXVpcmUoJy4uL3dyYXAnKTtcbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKTtcblxuLyogVHJhbnNmb3JtIGEgYmxvY2sgcXVvdGUuICovXG5mdW5jdGlvbiBibG9ja3F1b3RlKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2Jsb2NrcXVvdGUnLCB3cmFwKGFsbChoLCBub2RlKSwgdHJ1ZSkpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGhhcmRCcmVhaztcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJyk7XG5cbi8qIFRyYW5zZm9ybSBhbiBpbmxpbmUgYnJlYWsuICovXG5mdW5jdGlvbiBoYXJkQnJlYWsoaCwgbm9kZSkge1xuICByZXR1cm4gW2gobm9kZSwgJ2JyJyksIHUoJ3RleHQnLCAnXFxuJyldO1xufVxuIiwiLyohXG4gKiByZXBlYXQtc3RyaW5nIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9yZXBlYXQtc3RyaW5nPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE1LCBKb24gU2NobGlua2VydC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogUmVzdWx0cyBjYWNoZVxuICovXG5cbnZhciByZXMgPSAnJztcbnZhciBjYWNoZTtcblxuLyoqXG4gKiBFeHBvc2UgYHJlcGVhdGBcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcGVhdDtcblxuLyoqXG4gKiBSZXBlYXQgdGhlIGdpdmVuIGBzdHJpbmdgIHRoZSBzcGVjaWZpZWQgYG51bWJlcmBcbiAqIG9mIHRpbWVzLlxuICpcbiAqICoqRXhhbXBsZToqKlxuICpcbiAqIGBgYGpzXG4gKiB2YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpO1xuICogcmVwZWF0KCdBJywgNSk7XG4gKiAvLz0+IEFBQUFBXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYHN0cmluZ2AgVGhlIHN0cmluZyB0byByZXBlYXRcbiAqIEBwYXJhbSB7TnVtYmVyfSBgbnVtYmVyYCBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtTdHJpbmd9IFJlcGVhdGVkIHN0cmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiByZXBlYXQoc3RyLCBudW0pIHtcbiAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIC8vIGNvdmVyIGNvbW1vbiwgcXVpY2sgdXNlIGNhc2VzXG4gIGlmIChudW0gPT09IDEpIHJldHVybiBzdHI7XG4gIGlmIChudW0gPT09IDIpIHJldHVybiBzdHIgKyBzdHI7XG5cbiAgdmFyIG1heCA9IHN0ci5sZW5ndGggKiBudW07XG4gIGlmIChjYWNoZSAhPT0gc3RyIHx8IHR5cGVvZiBjYWNoZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjYWNoZSA9IHN0cjtcbiAgICByZXMgPSAnJztcbiAgfSBlbHNlIGlmIChyZXMubGVuZ3RoID49IG1heCkge1xuICAgIHJldHVybiByZXMuc3Vic3RyKDAsIG1heCk7XG4gIH1cblxuICB3aGlsZSAobWF4ID4gcmVzLmxlbmd0aCAmJiBudW0gPiAxKSB7XG4gICAgaWYgKG51bSAmIDEpIHtcbiAgICAgIHJlcyArPSBzdHI7XG4gICAgfVxuXG4gICAgbnVtID4+PSAxO1xuICAgIHN0ciArPSBzdHI7XG4gIH1cblxuICByZXMgKz0gc3RyO1xuICByZXMgPSByZXMuc3Vic3RyKDAsIG1heCk7XG4gIHJldHVybiByZXM7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZGV0YWI7XG5cbnZhciByZXBlYXQgPSByZXF1aXJlKCdyZXBlYXQtc3RyaW5nJyk7XG5cbnZhciBUQUIgPSAweDA5O1xudmFyIExGID0gMHgwQTtcbnZhciBDUiA9IDB4MEQ7XG5cbi8qIFJlcGxhY2UgdGFicyB3aXRoIHNwYWNlcywgYmVpbmcgc21hcnQgYWJvdXQgd2hpY2hcbiAqIGNvbHVtbiB0aGUgdGFiIGlzIGF0IGFuZCB3aGljaCBzaXplIHNob3VsZCBiZSB1c2VkLiAqL1xuZnVuY3Rpb24gZGV0YWIodmFsdWUsIHNpemUpIHtcbiAgdmFyIHN0cmluZyA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG4gIHZhciBsZW5ndGggPSBzdHJpbmcgJiYgdmFsdWUubGVuZ3RoO1xuICB2YXIgc3RhcnQgPSAwO1xuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGNvbHVtbiA9IC0xO1xuICB2YXIgdGFiU2l6ZSA9IHNpemUgfHwgNDtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgdmFyIGNvZGU7XG4gIHZhciBhZGQ7XG5cbiAgaWYgKCFzdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RldGFiIGV4cGVjdGVkIHN0cmluZycpO1xuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleCk7XG5cbiAgICBpZiAoY29kZSA9PT0gVEFCKSB7XG4gICAgICBhZGQgPSB0YWJTaXplIC0gKChjb2x1bW4gKyAxKSAlIHRhYlNpemUpO1xuICAgICAgY29sdW1uICs9IGFkZDtcbiAgICAgIHJlc3VsdHMucHVzaCh2YWx1ZS5zbGljZShzdGFydCwgaW5kZXgpICsgcmVwZWF0KCcgJywgYWRkKSk7XG4gICAgICBzdGFydCA9IGluZGV4ICsgMTtcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IExGIHx8IGNvZGUgPT09IENSKSB7XG4gICAgICBjb2x1bW4gPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sdW1uKys7XG4gICAgfVxuICB9XG5cbiAgcmVzdWx0cy5wdXNoKHZhbHVlLnNsaWNlKHN0YXJ0KSk7XG5cbiAgcmV0dXJuIHJlc3VsdHMuam9pbignJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gY29kZTtcblxudmFyIGRldGFiID0gcmVxdWlyZSgnZGV0YWInKTtcbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpO1xuXG4vKiBUcmFuc2Zvcm0gYSBjb2RlIGJsb2NrLiAqL1xuZnVuY3Rpb24gY29kZShoLCBub2RlKSB7XG4gIHZhciB2YWx1ZSA9IG5vZGUudmFsdWUgPyBkZXRhYihub2RlLnZhbHVlICsgJ1xcbicpIDogJyc7XG4gIHZhciBsYW5nID0gbm9kZS5sYW5nICYmIG5vZGUubGFuZy5tYXRjaCgvXlteIFxcdF0rKD89WyBcXHRdfCQpLyk7XG4gIHZhciBwcm9wcyA9IHt9O1xuXG4gIGlmIChsYW5nKSB7XG4gICAgcHJvcHMuY2xhc3NOYW1lID0gWydsYW5ndWFnZS0nICsgbGFuZ107XG4gIH1cblxuICByZXR1cm4gaChub2RlLnBvc2l0aW9uLCAncHJlJywgW1xuICAgIGgobm9kZSwgJ2NvZGUnLCBwcm9wcywgW3UoJ3RleHQnLCB2YWx1ZSldKVxuICBdKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpa2V0aHJvdWdoO1xuXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJyk7XG5cbi8qIFRyYW5zZm9ybSBkZWxldGlvbnMuICovXG5mdW5jdGlvbiBzdHJpa2V0aHJvdWdoKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2RlbCcsIGFsbChoLCBub2RlKSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZW1waGFzaXM7XG5cbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKTtcblxuLyogVHJhbnNmb3JtIGVtcGhhc2lzLiAqL1xuZnVuY3Rpb24gZW1waGFzaXMoaCwgbm9kZSkge1xuICByZXR1cm4gaChub2RlLCAnZW0nLCBhbGwoaCwgbm9kZSkpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZvb3Rub3RlUmVmZXJlbmNlO1xuXG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKTtcblxuLyogVHJhbnNmb3JtIGEgcmVmZXJlbmNlIHRvIGEgZm9vdG5vdGUuICovXG5mdW5jdGlvbiBmb290bm90ZVJlZmVyZW5jZShoLCBub2RlKSB7XG4gIHZhciBpZGVudGlmaWVyID0gbm9kZS5pZGVudGlmaWVyO1xuXG4gIHJldHVybiBoKG5vZGUucG9zaXRpb24sICdzdXAnLCB7aWQ6ICdmbnJlZi0nICsgaWRlbnRpZmllcn0sIFtcbiAgICBoKG5vZGUsICdhJywge1xuICAgICAgaHJlZjogJyNmbi0nICsgaWRlbnRpZmllcixcbiAgICAgIGNsYXNzTmFtZTogWydmb290bm90ZS1yZWYnXVxuICAgIH0sIFt1KCd0ZXh0JywgaWRlbnRpZmllcildKVxuICBdKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmb290bm90ZTtcblxudmFyIGZvb3Rub3RlUmVmZXJlbmNlID0gcmVxdWlyZSgnLi9mb290bm90ZS1yZWZlcmVuY2UnKTtcblxuLyogVHJhbnNmb3JtIGFuIGlubGluZSBmb290bm90ZS4gKi9cbmZ1bmN0aW9uIGZvb3Rub3RlKGgsIG5vZGUpIHtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG4gIHZhciBpZGVudGlmaWVyID0gMTtcbiAgdmFyIGZvb3Rub3RlcyA9IGguZm9vdG5vdGVzO1xuICB2YXIgbGVuZ3RoID0gZm9vdG5vdGVzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gLTE7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZGVudGlmaWVyc1tpbmRleF0gPSBmb290bm90ZXNbaW5kZXhdLmlkZW50aWZpZXI7XG4gIH1cblxuICB3aGlsZSAoaWRlbnRpZmllcnMuaW5kZXhPZihTdHJpbmcoaWRlbnRpZmllcikpICE9PSAtMSkge1xuICAgIGlkZW50aWZpZXIrKztcbiAgfVxuXG4gIGlkZW50aWZpZXIgPSBTdHJpbmcoaWRlbnRpZmllcik7XG5cbiAgZm9vdG5vdGVzLnB1c2goe1xuICAgIHR5cGU6ICdmb290bm90ZURlZmluaXRpb24nLFxuICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgY2hpbGRyZW46IFt7XG4gICAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICAgIGNoaWxkcmVuOiBub2RlLmNoaWxkcmVuXG4gICAgfV0sXG4gICAgcG9zaXRpb246IG5vZGUucG9zaXRpb25cbiAgfSk7XG5cbiAgcmV0dXJuIGZvb3Rub3RlUmVmZXJlbmNlKGgsIHtcbiAgICB0eXBlOiAnZm9vdG5vdGVSZWZlcmVuY2UnLFxuICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgcG9zaXRpb246IG5vZGUucG9zaXRpb25cbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaGVhZGluZztcblxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpO1xuXG4vKiBUcmFuc2Zvcm0gYSBoZWFkaW5nLiAqL1xuZnVuY3Rpb24gaGVhZGluZyhoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdoJyArIG5vZGUuZGVwdGgsIGFsbChoLCBub2RlKSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaHRtbDtcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJyk7XG5cbi8qIFJldHVybiBlaXRoZXIgYSBgcmF3YCBub2RlLCBpbiBkYW5nZXJvdXMgbW9kZSwgb3JcbiAqIG5vdGhpbmcuICovXG5mdW5jdGlvbiBodG1sKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGguZGFuZ2Vyb3VzID8gaC5hdWdtZW50KG5vZGUsIHUoJ3JhdycsIG5vZGUudmFsdWUpKSA6IG51bGw7XG59XG4iLCJcbid1c2Ugc3RyaWN0JztcblxuXG52YXIgZW5jb2RlQ2FjaGUgPSB7fTtcblxuXG4vLyBDcmVhdGUgYSBsb29rdXAgYXJyYXkgd2hlcmUgYW55dGhpbmcgYnV0IGNoYXJhY3RlcnMgaW4gYGNoYXJzYCBzdHJpbmdcbi8vIGFuZCBhbHBoYW51bWVyaWMgY2hhcnMgaXMgcGVyY2VudC1lbmNvZGVkLlxuLy9cbmZ1bmN0aW9uIGdldEVuY29kZUNhY2hlKGV4Y2x1ZGUpIHtcbiAgdmFyIGksIGNoLCBjYWNoZSA9IGVuY29kZUNhY2hlW2V4Y2x1ZGVdO1xuICBpZiAoY2FjaGUpIHsgcmV0dXJuIGNhY2hlOyB9XG5cbiAgY2FjaGUgPSBlbmNvZGVDYWNoZVtleGNsdWRlXSA9IFtdO1xuXG4gIGZvciAoaSA9IDA7IGkgPCAxMjg7IGkrKykge1xuICAgIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcblxuICAgIGlmICgvXlswLTlhLXpdJC9pLnRlc3QoY2gpKSB7XG4gICAgICAvLyBhbHdheXMgYWxsb3cgdW5lbmNvZGVkIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzXG4gICAgICBjYWNoZS5wdXNoKGNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUucHVzaCgnJScgKyAoJzAnICsgaS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkuc2xpY2UoLTIpKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZXhjbHVkZS5sZW5ndGg7IGkrKykge1xuICAgIGNhY2hlW2V4Y2x1ZGUuY2hhckNvZGVBdChpKV0gPSBleGNsdWRlW2ldO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlO1xufVxuXG5cbi8vIEVuY29kZSB1bnNhZmUgY2hhcmFjdGVycyB3aXRoIHBlcmNlbnQtZW5jb2RpbmcsIHNraXBwaW5nIGFscmVhZHlcbi8vIGVuY29kZWQgc2VxdWVuY2VzLlxuLy9cbi8vICAtIHN0cmluZyAgICAgICAtIHN0cmluZyB0byBlbmNvZGVcbi8vICAtIGV4Y2x1ZGUgICAgICAtIGxpc3Qgb2YgY2hhcmFjdGVycyB0byBpZ25vcmUgKGluIGFkZGl0aW9uIHRvIGEtekEtWjAtOSlcbi8vICAtIGtlZXBFc2NhcGVkICAtIGRvbid0IGVuY29kZSAnJScgaW4gYSBjb3JyZWN0IGVzY2FwZSBzZXF1ZW5jZSAoZGVmYXVsdDogdHJ1ZSlcbi8vXG5mdW5jdGlvbiBlbmNvZGUoc3RyaW5nLCBleGNsdWRlLCBrZWVwRXNjYXBlZCkge1xuICB2YXIgaSwgbCwgY29kZSwgbmV4dENvZGUsIGNhY2hlLFxuICAgICAgcmVzdWx0ID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBleGNsdWRlICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGVuY29kZShzdHJpbmcsIGtlZXBFc2NhcGVkKVxuICAgIGtlZXBFc2NhcGVkICA9IGV4Y2x1ZGU7XG4gICAgZXhjbHVkZSA9IGVuY29kZS5kZWZhdWx0Q2hhcnM7XG4gIH1cblxuICBpZiAodHlwZW9mIGtlZXBFc2NhcGVkID09PSAndW5kZWZpbmVkJykge1xuICAgIGtlZXBFc2NhcGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGNhY2hlID0gZ2V0RW5jb2RlQ2FjaGUoZXhjbHVkZSk7XG5cbiAgZm9yIChpID0gMCwgbCA9IHN0cmluZy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cbiAgICBpZiAoa2VlcEVzY2FwZWQgJiYgY29kZSA9PT0gMHgyNSAvKiAlICovICYmIGkgKyAyIDwgbCkge1xuICAgICAgaWYgKC9eWzAtOWEtZl17Mn0kL2kudGVzdChzdHJpbmcuc2xpY2UoaSArIDEsIGkgKyAzKSkpIHtcbiAgICAgICAgcmVzdWx0ICs9IHN0cmluZy5zbGljZShpLCBpICsgMyk7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPCAxMjgpIHtcbiAgICAgIHJlc3VsdCArPSBjYWNoZVtjb2RlXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjb2RlID49IDB4RDgwMCAmJiBjb2RlIDw9IDB4REZGRikge1xuICAgICAgaWYgKGNvZGUgPj0gMHhEODAwICYmIGNvZGUgPD0gMHhEQkZGICYmIGkgKyAxIDwgbCkge1xuICAgICAgICBuZXh0Q29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgICAgICAgaWYgKG5leHRDb2RlID49IDB4REMwMCAmJiBuZXh0Q29kZSA8PSAweERGRkYpIHtcbiAgICAgICAgICByZXN1bHQgKz0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ1tpXSArIHN0cmluZ1tpICsgMV0pO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0ICs9ICclRUYlQkYlQkQnO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzdWx0ICs9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZW5jb2RlLmRlZmF1bHRDaGFycyAgID0gXCI7Lz86QCY9KyQsLV8uIX4qJygpI1wiO1xuZW5jb2RlLmNvbXBvbmVudENoYXJzID0gXCItXy4hfionKClcIjtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGVuY29kZTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmYWlsc2FmZTtcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJyk7XG52YXIgYWxsID0gcmVxdWlyZSgnLi9hbGwnKTtcblxuLyogUmV0dXJuIHRoZSBjb250ZW50IG9mIGEgcmVmZXJlbmNlIHdpdGhvdXQgZGVmaW5pdGlvblxuICogYXMgbWFya2Rvd24uICovXG5mdW5jdGlvbiBmYWlsc2FmZShoLCBub2RlLCBkZWZpbml0aW9uKSB7XG4gIHZhciBzdWJ0eXBlID0gbm9kZS5yZWZlcmVuY2VUeXBlO1xuXG4gIGlmIChzdWJ0eXBlICE9PSAnY29sbGFwc2VkJyAmJiBzdWJ0eXBlICE9PSAnZnVsbCcgJiYgIWRlZmluaXRpb24pIHtcbiAgICBpZiAobm9kZS50eXBlID09PSAnaW1hZ2VSZWZlcmVuY2UnKSB7XG4gICAgICByZXR1cm4gdSgndGV4dCcsICchWycgKyBub2RlLmFsdCArICddJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFt1KCd0ZXh0JywgJ1snKV0uY29uY2F0KGFsbChoLCBub2RlKSwgdSgndGV4dCcsICddJykpO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gY29sbGFwc2U7XG5cbi8qIGNvbGxhcHNlKCcgXFx0XFxuYmFyIFxcbmJhelxcdCcpOyAvLyAnIGJhciBiYXogJyAqL1xuZnVuY3Rpb24gY29sbGFwc2UodmFsdWUpIHtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSkucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRyaW1MaW5lcztcblxudmFyIHdzID0gL1sgXFx0XSpcXG4rWyBcXHRdKi9nO1xudmFyIG5ld2xpbmUgPSAnXFxuJztcblxuZnVuY3Rpb24gdHJpbUxpbmVzKHZhbHVlKSB7XG4gIHJldHVybiBTdHJpbmcodmFsdWUpLnJlcGxhY2Uod3MsIG5ld2xpbmUpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYmxvY2txdW90ZTogcmVxdWlyZSgnLi9ibG9ja3F1b3RlJyksXG4gIGJyZWFrOiByZXF1aXJlKCcuL2JyZWFrJyksXG4gIGNvZGU6IHJlcXVpcmUoJy4vY29kZScpLFxuICBkZWxldGU6IHJlcXVpcmUoJy4vZGVsZXRlJyksXG4gIGVtcGhhc2lzOiByZXF1aXJlKCcuL2VtcGhhc2lzJyksXG4gIGZvb3Rub3RlUmVmZXJlbmNlOiByZXF1aXJlKCcuL2Zvb3Rub3RlLXJlZmVyZW5jZScpLFxuICBmb290bm90ZTogcmVxdWlyZSgnLi9mb290bm90ZScpLFxuICBoZWFkaW5nOiByZXF1aXJlKCcuL2hlYWRpbmcnKSxcbiAgaHRtbDogcmVxdWlyZSgnLi9odG1sJyksXG4gIGltYWdlUmVmZXJlbmNlOiByZXF1aXJlKCcuL2ltYWdlLXJlZmVyZW5jZScpLFxuICBpbWFnZTogcmVxdWlyZSgnLi9pbWFnZScpLFxuICBpbmxpbmVDb2RlOiByZXF1aXJlKCcuL2lubGluZS1jb2RlJyksXG4gIGxpbmtSZWZlcmVuY2U6IHJlcXVpcmUoJy4vbGluay1yZWZlcmVuY2UnKSxcbiAgbGluazogcmVxdWlyZSgnLi9saW5rJyksXG4gIGxpc3RJdGVtOiByZXF1aXJlKCcuL2xpc3QtaXRlbScpLFxuICBsaXN0OiByZXF1aXJlKCcuL2xpc3QnKSxcbiAgcGFyYWdyYXBoOiByZXF1aXJlKCcuL3BhcmFncmFwaCcpLFxuICByb290OiByZXF1aXJlKCcuL3Jvb3QnKSxcbiAgc3Ryb25nOiByZXF1aXJlKCcuL3N0cm9uZycpLFxuICB0YWJsZTogcmVxdWlyZSgnLi90YWJsZScpLFxuICB0ZXh0OiByZXF1aXJlKCcuL3RleHQnKSxcbiAgdGhlbWF0aWNCcmVhazogcmVxdWlyZSgnLi90aGVtYXRpYy1icmVhaycpLFxuICB0b21sOiBpZ25vcmUsXG4gIHlhbWw6IGlnbm9yZSxcbiAgZGVmaW5pdGlvbjogaWdub3JlLFxuICBmb290bm90ZURlZmluaXRpb246IGlnbm9yZVxufTtcblxuLyogUmV0dXJuIG5vdGhpbmcgZm9yIG5vZGVzIHdoaWNoIGFyZSBpZ25vcmVkLiAqL1xuZnVuY3Rpb24gaWdub3JlKCkge1xuICByZXR1cm4gbnVsbDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBpbWFnZVJlZmVyZW5jZTtcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJ21kdXJsL2VuY29kZScpO1xudmFyIGZhaWxzYWZlID0gcmVxdWlyZSgnLi4vZmFpbHNhZmUnKTtcblxuLyogVHJhbnNmb3JtIGEgcmVmZXJlbmNlIHRvIGFuIGltYWdlLiAqL1xuZnVuY3Rpb24gaW1hZ2VSZWZlcmVuY2UoaCwgbm9kZSkge1xuICB2YXIgZGVmID0gaC5kZWZpbml0aW9uKG5vZGUuaWRlbnRpZmllcik7XG4gIHZhciBwcm9wcyA9IHtzcmM6IG5vcm1hbGl6ZSgoZGVmICYmIGRlZi51cmwpIHx8ICcnKSwgYWx0OiBub2RlLmFsdH07XG5cbiAgaWYgKGRlZiAmJiBkZWYudGl0bGUgIT09IG51bGwgJiYgZGVmLnRpdGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBwcm9wcy50aXRsZSA9IGRlZi50aXRsZTtcbiAgfVxuXG4gIHJldHVybiBmYWlsc2FmZShoLCBub2RlLCBkZWYpIHx8IGgobm9kZSwgJ2ltZycsIHByb3BzKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJ21kdXJsL2VuY29kZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGltYWdlO1xuXG4vKiBUcmFuc2Zvcm0gYW4gaW1hZ2UuICovXG5mdW5jdGlvbiBpbWFnZShoLCBub2RlKSB7XG4gIHZhciBwcm9wcyA9IHtzcmM6IG5vcm1hbGl6ZShub2RlLnVybCksIGFsdDogbm9kZS5hbHR9O1xuXG4gIGlmIChub2RlLnRpdGxlICE9PSBudWxsICYmIG5vZGUudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gbm9kZS50aXRsZTtcbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsICdpbWcnLCBwcm9wcyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaW5saW5lQ29kZTtcblxudmFyIGNvbGxhcHNlID0gcmVxdWlyZSgnY29sbGFwc2Utd2hpdGUtc3BhY2UnKTtcbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpO1xuXG4vKiBUcmFuc2Zvcm0gaW5saW5lIGNvZGUuICovXG5mdW5jdGlvbiBpbmxpbmVDb2RlKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2NvZGUnLCBbdSgndGV4dCcsIGNvbGxhcHNlKG5vZGUudmFsdWUpKV0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxpbmtSZWZlcmVuY2U7XG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdtZHVybC9lbmNvZGUnKTtcbnZhciBmYWlsc2FmZSA9IHJlcXVpcmUoJy4uL2ZhaWxzYWZlJyk7XG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJyk7XG5cbi8qIFRyYW5zZm9ybSBhIHJlZmVyZW5jZSB0byBhIGxpbmsuICovXG5mdW5jdGlvbiBsaW5rUmVmZXJlbmNlKGgsIG5vZGUpIHtcbiAgdmFyIGRlZiA9IGguZGVmaW5pdGlvbihub2RlLmlkZW50aWZpZXIpO1xuICB2YXIgcHJvcHMgPSB7aHJlZjogbm9ybWFsaXplKChkZWYgJiYgZGVmLnVybCkgfHwgJycpfTtcblxuICBpZiAoZGVmICYmIGRlZi50aXRsZSAhPT0gbnVsbCAmJiBkZWYudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gZGVmLnRpdGxlO1xuICB9XG5cbiAgcmV0dXJuIGZhaWxzYWZlKGgsIG5vZGUsIGRlZikgfHwgaChub2RlLCAnYScsIHByb3BzLCBhbGwoaCwgbm9kZSkpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbm9ybWFsaXplID0gcmVxdWlyZSgnbWR1cmwvZW5jb2RlJyk7XG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbGluaztcblxuLyogVHJhbnNmb3JtIGEgbGluay4gKi9cbmZ1bmN0aW9uIGxpbmsoaCwgbm9kZSkge1xuICB2YXIgcHJvcHMgPSB7aHJlZjogbm9ybWFsaXplKG5vZGUudXJsKX07XG5cbiAgaWYgKG5vZGUudGl0bGUgIT09IG51bGwgJiYgbm9kZS50aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvcHMudGl0bGUgPSBub2RlLnRpdGxlO1xuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgJ2EnLCBwcm9wcywgYWxsKGgsIG5vZGUpKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0SXRlbTtcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJyk7XG52YXIgd3JhcCA9IHJlcXVpcmUoJy4uL3dyYXAnKTtcbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKTtcblxuLyogVHJhbnNmb3JtIGEgbGlzdC1pdGVtLiAqL1xuZnVuY3Rpb24gbGlzdEl0ZW0oaCwgbm9kZSwgcGFyZW50KSB7XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XG4gIHZhciBoZWFkID0gY2hpbGRyZW5bMF07XG4gIHZhciBwcm9wcyA9IHt9O1xuICB2YXIgc2luZ2xlID0gZmFsc2U7XG4gIHZhciByZXN1bHQ7XG4gIHZhciBjb250YWluZXI7XG5cbiAgaWYgKCghcGFyZW50IHx8ICFwYXJlbnQubG9vc2UpICYmIGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBoZWFkLnR5cGUgPT09ICdwYXJhZ3JhcGgnKSB7XG4gICAgc2luZ2xlID0gdHJ1ZTtcbiAgfVxuXG4gIHJlc3VsdCA9IGFsbChoLCBzaW5nbGUgPyBoZWFkIDogbm9kZSk7XG5cbiAgaWYgKHR5cGVvZiBub2RlLmNoZWNrZWQgPT09ICdib29sZWFuJykge1xuICAgIGlmICghc2luZ2xlICYmICghaGVhZCB8fCBoZWFkLnR5cGUgIT09ICdwYXJhZ3JhcGgnKSkge1xuICAgICAgcmVzdWx0LnVuc2hpZnQoaChudWxsLCAncCcsIFtdKSk7XG4gICAgfVxuXG4gICAgY29udGFpbmVyID0gc2luZ2xlID8gcmVzdWx0IDogcmVzdWx0WzBdLmNoaWxkcmVuO1xuXG4gICAgaWYgKGNvbnRhaW5lci5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnRhaW5lci51bnNoaWZ0KHUoJ3RleHQnLCAnICcpKTtcbiAgICB9XG5cbiAgICBjb250YWluZXIudW5zaGlmdChoKG51bGwsICdpbnB1dCcsIHtcbiAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICBjaGVja2VkOiBub2RlLmNoZWNrZWQsXG4gICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgIH0pKTtcblxuICAgIC8qIEFjY29yZGluZyB0byBnaXRodWItbWFya2Rvd24tY3NzLCB0aGlzIGNsYXNzIGhpZGVzIGJ1bGxldC4gKi9cbiAgICBwcm9wcy5jbGFzc05hbWUgPSBbJ3Rhc2stbGlzdC1pdGVtJ107XG4gIH1cblxuICBpZiAoIXNpbmdsZSAmJiByZXN1bHQubGVuZ3RoICE9PSAwKSB7XG4gICAgcmVzdWx0ID0gd3JhcChyZXN1bHQsIHRydWUpO1xuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgJ2xpJywgcHJvcHMsIHJlc3VsdCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyYWdyYXBoO1xuXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJyk7XG5cbi8qIFRyYW5zZm9ybSBhIHBhcmFncmFwaC4gKi9cbmZ1bmN0aW9uIHBhcmFncmFwaChoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdwJywgYWxsKGgsIG5vZGUpKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSByb290O1xuXG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKTtcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpO1xudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpO1xuXG4vKiBUcmFuc2Zvcm0gYSBgcm9vdGAuICovXG5mdW5jdGlvbiByb290KGgsIG5vZGUpIHtcbiAgcmV0dXJuIGguYXVnbWVudChub2RlLCB1KCdyb290Jywgd3JhcChhbGwoaCwgbm9kZSkpKSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gc3Ryb25nO1xuXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJyk7XG5cbi8qIFRyYW5zZm9ybSBpbXBvcnRhbmNlLiAqL1xuZnVuY3Rpb24gc3Ryb25nKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ3N0cm9uZycsIGFsbChoLCBub2RlKSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gdGFibGU7XG5cbnZhciBwb3NpdGlvbiA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtcG9zaXRpb24nKTtcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpO1xudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpO1xuXG4vKiBUcmFuc2Zvcm0gYSB0YWJsZS4gKi9cbmZ1bmN0aW9uIHRhYmxlKGgsIG5vZGUpIHtcbiAgdmFyIHJvd3MgPSBub2RlLmNoaWxkcmVuO1xuICB2YXIgaW5kZXggPSByb3dzLmxlbmd0aDtcbiAgdmFyIGFsaWduID0gbm9kZS5hbGlnbjtcbiAgdmFyIGFsaWduTGVuZ3RoID0gYWxpZ24ubGVuZ3RoO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBwb3M7XG4gIHZhciByb3c7XG4gIHZhciBvdXQ7XG4gIHZhciBuYW1lO1xuICB2YXIgY2VsbDtcblxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHJvdyA9IHJvd3NbaW5kZXhdLmNoaWxkcmVuO1xuICAgIG5hbWUgPSBpbmRleCA9PT0gMCA/ICd0aCcgOiAndGQnO1xuICAgIHBvcyA9IGFsaWduTGVuZ3RoO1xuICAgIG91dCA9IFtdO1xuXG4gICAgd2hpbGUgKHBvcy0tKSB7XG4gICAgICBjZWxsID0gcm93W3Bvc107XG4gICAgICBvdXRbcG9zXSA9IGgoY2VsbCwgbmFtZSwge1xuICAgICAgICBhbGlnbjogYWxpZ25bcG9zXVxuICAgICAgfSwgY2VsbCA/IHdyYXAoYWxsKGgsIGNlbGwpKSA6IFtdKTtcbiAgICB9XG5cbiAgICByZXN1bHRbaW5kZXhdID0gaChyb3dzW2luZGV4XSwgJ3RyJywgd3JhcChvdXQsIHRydWUpKTtcbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsICd0YWJsZScsIHdyYXAoW1xuICAgIGgocmVzdWx0WzBdLnBvc2l0aW9uLCAndGhlYWQnLCB3cmFwKFtyZXN1bHRbMF1dLCB0cnVlKSksXG4gICAgaCh7XG4gICAgICBzdGFydDogcG9zaXRpb24uc3RhcnQocmVzdWx0WzFdKSxcbiAgICAgIGVuZDogcG9zaXRpb24uZW5kKHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0pXG4gICAgfSwgJ3Rib2R5Jywgd3JhcChyZXN1bHQuc2xpY2UoMSksIHRydWUpKVxuICBdLCB0cnVlKSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gdGV4dDtcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJyk7XG52YXIgdHJpbUxpbmVzID0gcmVxdWlyZSgndHJpbS1saW5lcycpO1xuXG4vKiBUcmFuc2Zvcm0gdGV4dC4gKi9cbmZ1bmN0aW9uIHRleHQoaCwgbm9kZSkge1xuICByZXR1cm4gaC5hdWdtZW50KG5vZGUsIHUoJ3RleHQnLCB0cmltTGluZXMobm9kZS52YWx1ZSkpKTtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvaW5kZXguanMnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB0b0hBU1Q7XG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJyk7XG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKTtcbnZhciB2aXNpdCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtdmlzaXQnKTtcbnZhciBwb3NpdGlvbiA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtcG9zaXRpb24nKTtcbnZhciBnZW5lcmF0ZWQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWdlbmVyYXRlZCcpO1xudmFyIGRlZmluaXRpb25zID0gcmVxdWlyZSgnbWRhc3QtdXRpbC1kZWZpbml0aW9ucycpO1xudmFyIG9uZSA9IHJlcXVpcmUoJy4vb25lJyk7XG52YXIgZm9vdGVyID0gcmVxdWlyZSgnLi9mb290ZXInKTtcbnZhciBoYW5kbGVycyA9IHJlcXVpcmUoJy4vaGFuZGxlcnMnKTtcblxuLyogRmFjdG9yeSB0byB0cmFuc2Zvcm0uICovXG5mdW5jdGlvbiBmYWN0b3J5KHRyZWUsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGRhbmdlcm91cyA9IHNldHRpbmdzLmFsbG93RGFuZ2Vyb3VzSFRNTDtcblxuICBoLmRhbmdlcm91cyA9IGRhbmdlcm91cztcbiAgaC5kZWZpbml0aW9uID0gZGVmaW5pdGlvbnModHJlZSwgc2V0dGluZ3MpO1xuICBoLmZvb3Rub3RlcyA9IFtdO1xuICBoLmF1Z21lbnQgPSBhdWdtZW50O1xuICBoLmhhbmRsZXJzID0geHRlbmQoaGFuZGxlcnMsIChzZXR0aW5ncy5oYW5kbGVycyB8fCB7fSkpO1xuXG4gIHZpc2l0KHRyZWUsICdmb290bm90ZURlZmluaXRpb24nLCB2aXNpdG9yKTtcblxuICByZXR1cm4gaDtcblxuICAvKiBGaW5hbGlzZSB0aGUgY3JlYXRlZCBgcmlnaHRgLCBhIEhBU1Qgbm9kZSwgZnJvbVxuICAgKiBgbGVmdGAsIGFuIE1EQVNUIG5vZGUuICAgKi9cbiAgZnVuY3Rpb24gYXVnbWVudChsZWZ0LCByaWdodCkge1xuICAgIHZhciBkYXRhO1xuICAgIHZhciBjdHg7XG5cbiAgICAvKiBIYW5kbGUgYGRhdGEuaE5hbWVgLCBgZGF0YS5oUHJvcGVydGllcywgYGhDaGlsZHJlbmAuICovXG4gICAgaWYgKGxlZnQgJiYgJ2RhdGEnIGluIGxlZnQpIHtcbiAgICAgIGRhdGEgPSBsZWZ0LmRhdGE7XG5cbiAgICAgIGlmIChyaWdodC50eXBlID09PSAnZWxlbWVudCcgJiYgZGF0YS5oTmFtZSkge1xuICAgICAgICByaWdodC50YWdOYW1lID0gZGF0YS5oTmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0LnR5cGUgPT09ICdlbGVtZW50JyAmJiBkYXRhLmhQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHJpZ2h0LnByb3BlcnRpZXMgPSB4dGVuZChyaWdodC5wcm9wZXJ0aWVzLCBkYXRhLmhQcm9wZXJ0aWVzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0LmNoaWxkcmVuICYmIGRhdGEuaENoaWxkcmVuKSB7XG4gICAgICAgIHJpZ2h0LmNoaWxkcmVuID0gZGF0YS5oQ2hpbGRyZW47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY3R4ID0gbGVmdCAmJiBsZWZ0LnBvc2l0aW9uID8gbGVmdCA6IHtwb3NpdGlvbjogbGVmdH07XG5cbiAgICBpZiAoIWdlbmVyYXRlZChjdHgpKSB7XG4gICAgICByaWdodC5wb3NpdGlvbiA9IHtcbiAgICAgICAgc3RhcnQ6IHBvc2l0aW9uLnN0YXJ0KGN0eCksXG4gICAgICAgIGVuZDogcG9zaXRpb24uZW5kKGN0eClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9XG5cbiAgLyogQ3JlYXRlIGFuIGVsZW1lbnQgZm9yIGEgYG5vZGVgLiAqL1xuICBmdW5jdGlvbiBoKG5vZGUsIHRhZ05hbWUsIHByb3BzLCBjaGlsZHJlbikge1xuICAgIGlmIChcbiAgICAgIChjaGlsZHJlbiA9PT0gdW5kZWZpbmVkIHx8IGNoaWxkcmVuID09PSBudWxsKSAmJlxuICAgICAgdHlwZW9mIHByb3BzID09PSAnb2JqZWN0JyAmJlxuICAgICAgJ2xlbmd0aCcgaW4gcHJvcHNcbiAgICApIHtcbiAgICAgIGNoaWxkcmVuID0gcHJvcHM7XG4gICAgICBwcm9wcyA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBhdWdtZW50KG5vZGUsIHtcbiAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgIHRhZ05hbWU6IHRhZ05hbWUsXG4gICAgICBwcm9wZXJ0aWVzOiBwcm9wcyB8fCB7fSxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiB8fCBbXVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdmlzaXRvcihkZWZpbml0aW9uKSB7XG4gICAgaC5mb290bm90ZXMucHVzaChkZWZpbml0aW9uKTtcbiAgfVxufVxuXG4vKiBUcmFuc2Zvcm0gYHRyZWVgLCB3aGljaCBpcyBhbiBNREFTVCBub2RlLCB0byBhIEhBU1Qgbm9kZS4gKi9cbmZ1bmN0aW9uIHRvSEFTVCh0cmVlLCBvcHRpb25zKSB7XG4gIHZhciBoID0gZmFjdG9yeSh0cmVlLCBvcHRpb25zKTtcbiAgdmFyIG5vZGUgPSBvbmUoaCwgdHJlZSk7XG4gIHZhciBmb290bm90ZXMgPSBmb290ZXIoaCk7XG5cbiAgaWYgKG5vZGUgJiYgbm9kZS5jaGlsZHJlbiAmJiBmb290bm90ZXMpIHtcbiAgICBub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5jb25jYXQodSgndGV4dCcsICdcXG4nKSwgZm9vdG5vdGVzKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbWRhc3QyaGFzdCA9IHJlcXVpcmUoJ21kYXN0LXV0aWwtdG8taGFzdCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlbWFyazJyZWh5cGU7XG5cbi8qIEF0dGFjaGVyLlxuICogSWYgYSBkZXN0aW5hdGlvbiBpcyBnaXZlbiwgcnVucyB0aGUgZGVzdGluYXRpb24gd2l0aFxuICogdGhlIG5ldyBIQVNUIHRyZWUgKGJyaWRnZS1tb2RlKS5cbiAqIFdpdGhvdXQgZGVzdGluYXRpb24sIHJldHVybnMgdGhlIEhBU1QgdHJlZTogZnVydGhlclxuICogcGx1Zy1pbnMgcnVuIG9uIHRoYXQgdHJlZSAobXV0YXRlLW1vZGUpLiAqL1xuZnVuY3Rpb24gcmVtYXJrMnJlaHlwZShkZXN0aW5hdGlvbiwgb3B0aW9ucykge1xuICBpZiAoZGVzdGluYXRpb24gJiYgIWRlc3RpbmF0aW9uLnByb2Nlc3MpIHtcbiAgICBvcHRpb25zID0gZGVzdGluYXRpb247XG4gICAgZGVzdGluYXRpb24gPSBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGRlc3RpbmF0aW9uID8gYnJpZGdlKGRlc3RpbmF0aW9uLCBvcHRpb25zKSA6IG11dGF0ZShvcHRpb25zKTtcbn1cblxuLyogQnJpZGdlLW1vZGUuICBSdW5zIHRoZSBkZXN0aW5hdGlvbiB3aXRoIHRoZSBuZXcgSEFTVFxuICogdHJlZS4gKi9cbmZ1bmN0aW9uIGJyaWRnZShkZXN0aW5hdGlvbiwgb3B0aW9ucykge1xuICByZXR1cm4gdHJhbnNmb3JtZXI7XG4gIGZ1bmN0aW9uIHRyYW5zZm9ybWVyKG5vZGUsIGZpbGUsIG5leHQpIHtcbiAgICBkZXN0aW5hdGlvbi5ydW4obWRhc3QyaGFzdChub2RlLCBvcHRpb25zKSwgZmlsZSwgZG9uZSk7XG4gICAgZnVuY3Rpb24gZG9uZShlcnIpIHtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9XG4gIH1cbn1cblxuLyogTXV0YXRlLW1vZGUuICBGdXJ0aGVyIHRyYW5zZm9ybWVycyBydW4gb24gdGhlIEhBU1QgdHJlZS4gKi9cbmZ1bmN0aW9uIG11dGF0ZShvcHRpb25zKSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lcjtcbiAgZnVuY3Rpb24gdHJhbnNmb3JtZXIobm9kZSkge1xuICAgIHJldHVybiBtZGFzdDJoYXN0KG5vZGUsIG9wdGlvbnMpO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gd2hpdGVzcGFjZTtcblxudmFyIGZyb21Db2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbnZhciByZSA9IC9cXHMvO1xuXG4vKiBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXJcbiAqIGNvZGUgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgaXMgYSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4gKi9cbmZ1bmN0aW9uIHdoaXRlc3BhY2UoY2hhcmFjdGVyKSB7XG4gIHJldHVybiByZS50ZXN0KFxuICAgIHR5cGVvZiBjaGFyYWN0ZXIgPT09ICdudW1iZXInID8gZnJvbUNvZGUoY2hhcmFjdGVyKSA6IGNoYXJhY3Rlci5jaGFyQXQoMClcbiAgKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpO1xuXG52YXIgQ19QSVBFID0gJ3wnO1xudmFyIERPVUJMRSA9ICd8fCc7XG5cbmZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKERPVUJMRSwgZnJvbUluZGV4KTtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBwbHVnaW4oKSB7XG4gIGZ1bmN0aW9uIGlubGluZVRva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5nZm0gfHwgdmFsdWUuY2hhckF0KDApICE9PSBDX1BJUEUgfHwgdmFsdWUuY2hhckF0KDEpICE9PSBDX1BJUEUgfHwgdmFsdWUuc3RhcnRzV2l0aChDX1BJUEUucmVwZWF0KDQpKSB8fCB3aGl0ZXNwYWNlKHZhbHVlLmNoYXJBdCgyKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY2hhcmFjdGVyID0gJyc7XG4gICAgdmFyIHByZXZpb3VzID0gJyc7XG4gICAgdmFyIHByZWNlZGluZyA9ICcnO1xuICAgIHZhciBzdWJ2YWx1ZSA9ICcnO1xuICAgIHZhciBpbmRleCA9IDE7XG4gICAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICB2YXIgbm93ID0gZWF0Lm5vdygpO1xuICAgIG5vdy5jb2x1bW4gKz0gMjtcbiAgICBub3cub2Zmc2V0ICs9IDI7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gQ19QSVBFICYmIHByZXZpb3VzID09PSBDX1BJUEUgJiYgKCFwcmVjZWRpbmcgfHwgIXdoaXRlc3BhY2UocHJlY2VkaW5nKSkpIHtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICAgIGlmIChzaWxlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAgIHJldHVybiBlYXQoRE9VQkxFICsgc3VidmFsdWUgKyBET1VCTEUpKHtcbiAgICAgICAgICB0eXBlOiAna2JkJyxcbiAgICAgICAgICBjaGlsZHJlbjogdGhpcy50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KSxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBoTmFtZTogJ2tiZCdcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBzdWJ2YWx1ZSArPSBwcmV2aW91cztcbiAgICAgIHByZWNlZGluZyA9IHByZXZpb3VzO1xuICAgICAgcHJldmlvdXMgPSBjaGFyYWN0ZXI7XG4gICAgfVxuICB9XG4gIGlubGluZVRva2VuaXplci5sb2NhdG9yID0gbG9jYXRvcjtcblxuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7XG5cbiAgLy8gSW5qZWN0IGlubGluZVRva2VuaXplclxuICB2YXIgaW5saW5lVG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuaW5saW5lVG9rZW5pemVycztcbiAgdmFyIGlubGluZU1ldGhvZHMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZU1ldGhvZHM7XG4gIGlubGluZVRva2VuaXplcnMua2JkID0gaW5saW5lVG9rZW5pemVyO1xuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3RleHQnKSwgMCwgJ2tiZCcpO1xuXG4gIHZhciBDb21waWxlciA9IHRoaXMuQ29tcGlsZXI7XG5cbiAgLy8gU3RyaW5naWZ5XG4gIGlmIChDb21waWxlcikge1xuICAgIHZhciB2aXNpdG9ycyA9IENvbXBpbGVyLnByb3RvdHlwZS52aXNpdG9ycztcbiAgICB2aXNpdG9ycy5rYmQgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuICd8fCcgKyB0aGlzLmFsbChub2RlKS5qb2luKCcnKSArICd8fCc7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBsdWdpbjsiLCJmdW5jdGlvbiBsb2NhdG9yICh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZS5pbmRleE9mKCckJywgZnJvbUluZGV4KVxufVxuXG5jb25zdCBFU0NBUEVEX0lOTElORV9NQVRIID0gL15cXFxcXFwkL1xuY29uc3QgSU5MSU5FX01BVEggPSAvXlxcJCgoPzpcXFxcXFwkfFteJF0pKylcXCQvXG5jb25zdCBJTkxJTkVfTUFUSF9ET1VCTEUgPSAvXlxcJFxcJCgoPzpcXFxcXFwkfFteJF0pKylcXCRcXCQvXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5saW5lUGx1Z2luIChvcHRzKSB7XG4gIGZ1bmN0aW9uIGlubGluZVRva2VuaXplciAoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gICAgbGV0IGlzRG91YmxlID0gdHJ1ZVxuICAgIGxldCBtYXRjaCA9IElOTElORV9NQVRIX0RPVUJMRS5leGVjKHZhbHVlKVxuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIG1hdGNoID0gSU5MSU5FX01BVEguZXhlYyh2YWx1ZSlcbiAgICAgIGlzRG91YmxlID0gZmFsc2VcbiAgICB9XG4gICAgY29uc3QgZXNjYXBlZCA9IEVTQ0FQRURfSU5MSU5FX01BVEguZXhlYyh2YWx1ZSlcblxuICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gZWF0KGVzY2FwZWRbMF0pKHtcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICB2YWx1ZTogJyQnXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh2YWx1ZS5zbGljZSgtMikgPT09ICdcXFxcJCcpIHtcbiAgICAgIHJldHVybiBlYXQodmFsdWUpKHtcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuc2xpY2UoMCwgLTIpICsgJyQnXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBlbmRpbmdEb2xsYXJJbkJhY2t0aWNrcyA9IG1hdGNoWzBdLmluY2x1ZGVzKCdgJykgJiYgdmFsdWUuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKS5pbmNsdWRlcygnYCcpXG4gICAgICBpZiAoZW5kaW5nRG9sbGFySW5CYWNrdGlja3MpIHtcbiAgICAgICAgY29uc3QgdG9FYXQgPSB2YWx1ZS5zbGljZSgwLCB2YWx1ZS5pbmRleE9mKCdgJykpXG4gICAgICAgIHJldHVybiBlYXQodG9FYXQpKHtcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdmFsdWU6IHRvRWF0XG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyaW1tZWRDb250ZW50ID0gbWF0Y2hbMV0udHJpbSgpXG5cbiAgICAgIHJldHVybiBlYXQobWF0Y2hbMF0pKHtcbiAgICAgICAgdHlwZTogJ2lubGluZU1hdGgnLFxuICAgICAgICB2YWx1ZTogdHJpbW1lZENvbnRlbnQsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoTmFtZTogJ3NwYW4nLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdpbmxpbmVNYXRoJyArIChpc0RvdWJsZSAmJiBvcHRzLmlubGluZU1hdGhEb3VibGUgPyAnIGlubGluZU1hdGhEb3VibGUnIDogJycpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBoQ2hpbGRyZW46IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB2YWx1ZTogdHJpbW1lZENvbnRlbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG4gIGlubGluZVRva2VuaXplci5sb2NhdG9yID0gbG9jYXRvclxuXG4gIGNvbnN0IFBhcnNlciA9IHRoaXMuUGFyc2VyXG5cbiAgLy8gSW5qZWN0IGlubGluZVRva2VuaXplclxuICBjb25zdCBpbmxpbmVUb2tlbml6ZXJzID0gUGFyc2VyLnByb3RvdHlwZS5pbmxpbmVUb2tlbml6ZXJzXG4gIGNvbnN0IGlubGluZU1ldGhvZHMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZU1ldGhvZHNcbiAgaW5saW5lVG9rZW5pemVycy5tYXRoID0gaW5saW5lVG9rZW5pemVyXG4gIGlubGluZU1ldGhvZHMuc3BsaWNlKGlubGluZU1ldGhvZHMuaW5kZXhPZigndGV4dCcpLCAwLCAnbWF0aCcpXG5cbiAgY29uc3QgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyXG5cbiAgLy8gU3RyaW5naWZ5IGZvciBtYXRoIGlubGluZVxuICBpZiAoQ29tcGlsZXIgIT0gbnVsbCkge1xuICAgIGNvbnN0IHZpc2l0b3JzID0gQ29tcGlsZXIucHJvdG90eXBlLnZpc2l0b3JzXG4gICAgdmlzaXRvcnMuaW5saW5lTWF0aCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gJyQnICsgbm9kZS52YWx1ZSArICckJ1xuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRyaW1UcmFpbGluZ0xpbmVzO1xuXG52YXIgbGluZSA9ICdcXG4nO1xuXG4vKiBSZW1vdmUgZmluYWwgbmV3bGluZSBjaGFyYWN0ZXJzIGZyb20gYHZhbHVlYC4gKi9cbmZ1bmN0aW9uIHRyaW1UcmFpbGluZ0xpbmVzKHZhbHVlKSB7XG4gIHZhciB2YWwgPSBTdHJpbmcodmFsdWUpO1xuICB2YXIgaW5kZXggPSB2YWwubGVuZ3RoO1xuXG4gIHdoaWxlICh2YWwuY2hhckF0KC0taW5kZXgpID09PSBsaW5lKSB7IC8qIGVtcHR5ICovIH1cblxuICByZXR1cm4gdmFsLnNsaWNlKDAsIGluZGV4ICsgMSk7XG59XG4iLCJ2YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0tdHJhaWxpbmctbGluZXMnKVxuXG52YXIgQ19ORVdMSU5FID0gJ1xcbidcbnZhciBDX1RBQiA9ICdcXHQnXG52YXIgQ19TUEFDRSA9ICcgJ1xudmFyIENfRE9MTEFSID0gJyQnXG5cbnZhciBNSU5fRkVOQ0VfQ09VTlQgPSAyXG52YXIgQ09ERV9JTkRFTlRfQ09VTlQgPSA0XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmxvY2tQbHVnaW4gKG9wdHMpIHtcbiAgZnVuY3Rpb24gYmxvY2tUb2tlbml6ZXIgKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxXG4gICAgdmFyIGluZGV4ID0gMFxuICAgIHZhciBzdWJ2YWx1ZSA9ICcnXG4gICAgdmFyIGZlbmNlQ291bnRcbiAgICB2YXIgbWFya2VyXG4gICAgdmFyIGNoYXJhY3RlclxuICAgIHZhciBxdWV1ZVxuICAgIHZhciBjb250ZW50XG4gICAgdmFyIGV4ZGVudGVkQ29udGVudFxuICAgIHZhciBjbG9zaW5nXG4gICAgdmFyIGV4ZGVudGVkQ2xvc2luZ1xuICAgIHZhciBpbmRlbnRcbiAgICB2YXIgbm93XG5cbiAgICAvKiBFYXQgaW5pdGlhbCBzcGFjaW5nLiAqL1xuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBDX1NQQUNFICYmIGNoYXJhY3RlciAhPT0gQ19UQUIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaW5kZW50ID0gaW5kZXhcblxuICAgIC8qIEVhdCB0aGUgZmVuY2UuICovXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gQ19ET0xMQVIpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGluZGV4KytcbiAgICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgICBmZW5jZUNvdW50ID0gMVxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGZlbmNlQ291bnQrK1xuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGlmIChmZW5jZUNvdW50IDwgTUlOX0ZFTkNFX0NPVU5UKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvKiBFYXQgZXZlcnl0aGluZyBhZnRlciB0aGUgZmVuY2UuICovXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IENfTkVXTElORSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gQ19ET0xMQVIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChzaWxlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgbm93ID0gZWF0Lm5vdygpXG4gICAgbm93LmNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgICBub3cub2Zmc2V0ICs9IHN1YnZhbHVlLmxlbmd0aFxuXG4gICAgcXVldWUgPSBjbG9zaW5nID0gZXhkZW50ZWRDbG9zaW5nID0gY29udGVudCA9IGV4ZGVudGVkQ29udGVudCA9ICcnXG5cbiAgICAvKiBFYXQgY29udGVudC4gKi9cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgICAgIGNvbnRlbnQgKz0gY2xvc2luZ1xuICAgICAgZXhkZW50ZWRDb250ZW50ICs9IGV4ZGVudGVkQ2xvc2luZ1xuICAgICAgY2xvc2luZyA9IGV4ZGVudGVkQ2xvc2luZyA9ICcnXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IENfTkVXTElORSkge1xuICAgICAgICBjb250ZW50ICs9IGNoYXJhY3RlclxuICAgICAgICBleGRlbnRlZENsb3NpbmcgKz0gY2hhcmFjdGVyXG4gICAgICAgIGluZGV4KytcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLyogQWRkIHRoZSBuZXdsaW5lIHRvIGBzdWJ2YWx1ZWAgaWYgaXRzIHRoZSBmaXJzdFxuICAgICAgKiBjaGFyYWN0ZXIuICBPdGhlcndpc2UsIGFkZCBpdCB0byB0aGUgYGNsb3NpbmdgXG4gICAgICAqIHF1ZXVlLiAqL1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgY2xvc2luZyArPSBjaGFyYWN0ZXJcbiAgICAgICAgZXhkZW50ZWRDbG9zaW5nICs9IGNoYXJhY3RlclxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlID0gJydcbiAgICAgIGluZGV4KytcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyICE9PSBDX1NQQUNFKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICBpbmRleCsrXG4gICAgICB9XG5cbiAgICAgIGNsb3NpbmcgKz0gcXVldWVcbiAgICAgIGV4ZGVudGVkQ2xvc2luZyArPSBxdWV1ZS5zbGljZShpbmRlbnQpXG5cbiAgICAgIGlmIChxdWV1ZS5sZW5ndGggPj0gQ09ERV9JTkRFTlRfQ09VTlQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgcXVldWUgPSAnJ1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuXG4gICAgICBjbG9zaW5nICs9IHF1ZXVlXG4gICAgICBleGRlbnRlZENsb3NpbmcgKz0gcXVldWVcblxuICAgICAgaWYgKHF1ZXVlLmxlbmd0aCA8IGZlbmNlQ291bnQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgcXVldWUgPSAnJ1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IENfTkVXTElORSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBjbG9zaW5nICs9IGNoYXJhY3RlclxuICAgICAgICBleGRlbnRlZENsb3NpbmcgKz0gY2hhcmFjdGVyXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjb250ZW50ICsgY2xvc2luZ1xuICAgIGNvbnN0IHRyaW1tZWRDb250ZW50ID0gdHJpbShleGRlbnRlZENvbnRlbnQpXG4gICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgICAgdHlwZTogJ21hdGgnLFxuICAgICAgdmFsdWU6IHRyaW1tZWRDb250ZW50LFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogJ2RpdicsXG4gICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnbWF0aCdcbiAgICAgICAgfSxcbiAgICAgICAgaENoaWxkcmVuOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgdmFsdWU6IHRyaW1tZWRDb250ZW50XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IFBhcnNlciA9IHRoaXMuUGFyc2VyXG5cbiAgLy8gSW5qZWN0IGJsb2NrVG9rZW5pemVyXG4gIGNvbnN0IGJsb2NrVG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tUb2tlbml6ZXJzXG4gIGNvbnN0IGJsb2NrTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tNZXRob2RzXG4gIGJsb2NrVG9rZW5pemVycy5tYXRoID0gYmxvY2tUb2tlbml6ZXJcbiAgYmxvY2tNZXRob2RzLnNwbGljZShibG9ja01ldGhvZHMuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgJ21hdGgnKVxuXG4gIC8vIEluamVjdCBtYXRoIHRvIGludGVycnVwdCBydWxlc1xuICBjb25zdCBpbnRlcnJ1cHRQYXJhZ3JhcGggPSBQYXJzZXIucHJvdG90eXBlLmludGVycnVwdFBhcmFncmFwaFxuICBjb25zdCBpbnRlcnJ1cHRMaXN0ID0gUGFyc2VyLnByb3RvdHlwZS5pbnRlcnJ1cHRMaXN0XG4gIGNvbnN0IGludGVycnVwdEJsb2NrcXVvdGUgPSBQYXJzZXIucHJvdG90eXBlLmludGVycnVwdEJsb2NrcXVvdGVcbiAgaW50ZXJydXB0UGFyYWdyYXBoLnNwbGljZShpbnRlcnJ1cHRQYXJhZ3JhcGguaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydtYXRoJ10pXG4gIGludGVycnVwdExpc3Quc3BsaWNlKGludGVycnVwdExpc3QuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydtYXRoJ10pXG4gIGludGVycnVwdEJsb2NrcXVvdGUuc3BsaWNlKGludGVycnVwdEJsb2NrcXVvdGUuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydtYXRoJ10pXG5cbiAgY29uc3QgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyXG5cbiAgLy8gU3RyaW5naWZ5IGZvciBtYXRoIGJsb2NrXG4gIGlmIChDb21waWxlciAhPSBudWxsKSB7XG4gICAgY29uc3QgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnNcbiAgICB2aXNpdG9ycy5tYXRoID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiAnJCRcXG4nICsgbm9kZS52YWx1ZSArICdcXG4kJCdcbiAgICB9XG4gIH1cbn1cbiIsImNvbnN0IGlubGluZVBsdWdpbiA9IHJlcXVpcmUoJy4vaW5saW5lJylcbmNvbnN0IGJsb2NrUGx1Z2luID0gcmVxdWlyZSgnLi9ibG9jaycpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWF0aFBsdWdpbiAob3B0cyA9IHt9KSB7XG4gIGJsb2NrUGx1Z2luLmNhbGwodGhpcywgb3B0cylcbiAgaW5saW5lUGx1Z2luLmNhbGwodGhpcywgb3B0cylcbn1cbiIsIi8qXG5TeW50YXggaGlnaGxpZ2h0aW5nIHdpdGggbGFuZ3VhZ2UgYXV0b2RldGVjdGlvbi5cbmh0dHBzOi8vaGlnaGxpZ2h0anMub3JnL1xuKi9cblxuKGZ1bmN0aW9uKGZhY3RvcnkpIHtcblxuICAvLyBGaW5kIHRoZSBnbG9iYWwgb2JqZWN0IGZvciBleHBvcnQgdG8gYm90aCB0aGUgYnJvd3NlciBhbmQgd2ViIHdvcmtlcnMuXG4gIHZhciBnbG9iYWxPYmplY3QgPSB0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JyAmJiB3aW5kb3cgfHxcbiAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzZWxmID09PSAnb2JqZWN0JyAmJiBzZWxmO1xuXG4gIC8vIFNldHVwIGhpZ2hsaWdodC5qcyBmb3IgZGlmZmVyZW50IGVudmlyb25tZW50cy4gRmlyc3QgaXMgTm9kZS5qcyBvclxuICAvLyBDb21tb25KUy5cbiAgaWYodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgZmFjdG9yeShleHBvcnRzKTtcbiAgfSBlbHNlIGlmKGdsb2JhbE9iamVjdCkge1xuICAgIC8vIEV4cG9ydCBobGpzIGdsb2JhbGx5IGV2ZW4gd2hlbiB1c2luZyBBTUQgZm9yIGNhc2VzIHdoZW4gdGhpcyBzY3JpcHRcbiAgICAvLyBpcyBsb2FkZWQgd2l0aCBvdGhlcnMgdGhhdCBtYXkgc3RpbGwgZXhwZWN0IGEgZ2xvYmFsIGhsanMuXG4gICAgZ2xvYmFsT2JqZWN0LmhsanMgPSBmYWN0b3J5KHt9KTtcblxuICAgIC8vIEZpbmFsbHkgcmVnaXN0ZXIgdGhlIGdsb2JhbCBobGpzIHdpdGggQU1ELlxuICAgIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgZGVmaW5lKFtdLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5obGpzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn0oZnVuY3Rpb24oaGxqcykge1xuICAvLyBDb252ZW5pZW5jZSB2YXJpYWJsZXMgZm9yIGJ1aWxkLWluIG9iamVjdHNcbiAgdmFyIEFycmF5UHJvdG8gPSBbXSxcbiAgICAgIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cztcblxuICAvLyBHbG9iYWwgaW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgd2l0aGluIHRoZSBoaWdobGlnaHQuanMgbGlicmFyeS5cbiAgdmFyIGxhbmd1YWdlcyA9IHt9LFxuICAgICAgYWxpYXNlcyAgID0ge307XG5cbiAgLy8gUmVndWxhciBleHByZXNzaW9ucyB1c2VkIHRocm91Z2hvdXQgdGhlIGhpZ2hsaWdodC5qcyBsaWJyYXJ5LlxuICB2YXIgbm9IaWdobGlnaHRSZSAgICA9IC9eKG5vLT9oaWdobGlnaHR8cGxhaW58dGV4dCkkL2ksXG4gICAgICBsYW5ndWFnZVByZWZpeFJlID0gL1xcYmxhbmcoPzp1YWdlKT8tKFtcXHctXSspXFxiL2ksXG4gICAgICBmaXhNYXJrdXBSZSAgICAgID0gLygoXig8W14+XSs+fFxcdHwpK3woPzpcXG4pKSkvZ207XG5cbiAgdmFyIHNwYW5FbmRUYWcgPSAnPC9zcGFuPic7XG5cbiAgLy8gR2xvYmFsIG9wdGlvbnMgdXNlZCB3aGVuIHdpdGhpbiBleHRlcm5hbCBBUElzLiBUaGlzIGlzIG1vZGlmaWVkIHdoZW5cbiAgLy8gY2FsbGluZyB0aGUgYGhsanMuY29uZmlndXJlYCBmdW5jdGlvbi5cbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAgY2xhc3NQcmVmaXg6ICdobGpzLScsXG4gICAgdGFiUmVwbGFjZTogbnVsbCxcbiAgICB1c2VCUjogZmFsc2UsXG4gICAgbGFuZ3VhZ2VzOiB1bmRlZmluZWRcbiAgfTtcblxuXG4gIC8qIFV0aWxpdHkgZnVuY3Rpb25zICovXG5cbiAgZnVuY3Rpb24gZXNjYXBlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRhZyhub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRlc3RSZShyZSwgbGV4ZW1lKSB7XG4gICAgdmFyIG1hdGNoID0gcmUgJiYgcmUuZXhlYyhsZXhlbWUpO1xuICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaC5pbmRleCA9PT0gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzTm90SGlnaGxpZ2h0ZWQobGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gbm9IaWdobGlnaHRSZS50ZXN0KGxhbmd1YWdlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJsb2NrTGFuZ3VhZ2UoYmxvY2spIHtcbiAgICB2YXIgaSwgbWF0Y2gsIGxlbmd0aCwgX2NsYXNzO1xuICAgIHZhciBjbGFzc2VzID0gYmxvY2suY2xhc3NOYW1lICsgJyAnO1xuXG4gICAgY2xhc3NlcyArPSBibG9jay5wYXJlbnROb2RlID8gYmxvY2sucGFyZW50Tm9kZS5jbGFzc05hbWUgOiAnJztcblxuICAgIC8vIGxhbmd1YWdlLSogdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG5vbi1wcmVmaXhlZCBjbGFzcyBuYW1lcy5cbiAgICBtYXRjaCA9IGxhbmd1YWdlUHJlZml4UmUuZXhlYyhjbGFzc2VzKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBnZXRMYW5ndWFnZShtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICduby1oaWdobGlnaHQnO1xuICAgIH1cblxuICAgIGNsYXNzZXMgPSBjbGFzc2VzLnNwbGl0KC9cXHMrLyk7XG5cbiAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBjbGFzc2VzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBfY2xhc3MgPSBjbGFzc2VzW2ldXG5cbiAgICAgIGlmIChpc05vdEhpZ2hsaWdodGVkKF9jbGFzcykgfHwgZ2V0TGFuZ3VhZ2UoX2NsYXNzKSkge1xuICAgICAgICByZXR1cm4gX2NsYXNzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaGVyaXQocGFyZW50KSB7ICAvLyBpbmhlcml0KHBhcmVudCwgb3ZlcnJpZGVfb2JqLCBvdmVycmlkZV9vYmosIC4uLilcbiAgICB2YXIga2V5O1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICB2YXIgb2JqZWN0cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgICBmb3IgKGtleSBpbiBwYXJlbnQpXG4gICAgICByZXN1bHRba2V5XSA9IHBhcmVudFtrZXldO1xuICAgIG9iamVjdHMuZm9yRWFjaChmdW5jdGlvbihvYmopIHtcbiAgICAgIGZvciAoa2V5IGluIG9iailcbiAgICAgICAgcmVzdWx0W2tleV0gPSBvYmpba2V5XTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyogU3RyZWFtIG1lcmdpbmcgKi9cblxuICBmdW5jdGlvbiBub2RlU3RyZWFtKG5vZGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgKGZ1bmN0aW9uIF9ub2RlU3RyZWFtKG5vZGUsIG9mZnNldCkge1xuICAgICAgZm9yICh2YXIgY2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQ7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nKSB7XG4gICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gMylcbiAgICAgICAgICBvZmZzZXQgKz0gY2hpbGQubm9kZVZhbHVlLmxlbmd0aDtcbiAgICAgICAgZWxzZSBpZiAoY2hpbGQubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICBldmVudDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICAgICAgbm9kZTogY2hpbGRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvZmZzZXQgPSBfbm9kZVN0cmVhbShjaGlsZCwgb2Zmc2V0KTtcbiAgICAgICAgICAvLyBQcmV2ZW50IHZvaWQgZWxlbWVudHMgZnJvbSBoYXZpbmcgYW4gZW5kIHRhZyB0aGF0IHdvdWxkIGFjdHVhbGx5XG4gICAgICAgICAgLy8gZG91YmxlIHRoZW0gaW4gdGhlIG91dHB1dC4gVGhlcmUgYXJlIG1vcmUgdm9pZCBlbGVtZW50cyBpbiBIVE1MXG4gICAgICAgICAgLy8gYnV0IHdlIGxpc3Qgb25seSB0aG9zZSByZWFsaXN0aWNhbGx5IGV4cGVjdGVkIGluIGNvZGUgZGlzcGxheS5cbiAgICAgICAgICBpZiAoIXRhZyhjaGlsZCkubWF0Y2goL2JyfGhyfGltZ3xpbnB1dC8pKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgIGV2ZW50OiAnc3RvcCcsXG4gICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICAgICAgICBub2RlOiBjaGlsZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH0pKG5vZGUsIDApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBtZXJnZVN0cmVhbXMob3JpZ2luYWwsIGhpZ2hsaWdodGVkLCB2YWx1ZSkge1xuICAgIHZhciBwcm9jZXNzZWQgPSAwO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgbm9kZVN0YWNrID0gW107XG5cbiAgICBmdW5jdGlvbiBzZWxlY3RTdHJlYW0oKSB7XG4gICAgICBpZiAoIW9yaWdpbmFsLmxlbmd0aCB8fCAhaGlnaGxpZ2h0ZWQubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbC5sZW5ndGggPyBvcmlnaW5hbCA6IGhpZ2hsaWdodGVkO1xuICAgICAgfVxuICAgICAgaWYgKG9yaWdpbmFsWzBdLm9mZnNldCAhPT0gaGlnaGxpZ2h0ZWRbMF0ub2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiAob3JpZ2luYWxbMF0ub2Zmc2V0IDwgaGlnaGxpZ2h0ZWRbMF0ub2Zmc2V0KSA/IG9yaWdpbmFsIDogaGlnaGxpZ2h0ZWQ7XG4gICAgICB9XG5cbiAgICAgIC8qXG4gICAgICBUbyBhdm9pZCBzdGFydGluZyB0aGUgc3RyZWFtIGp1c3QgYmVmb3JlIGl0IHNob3VsZCBzdG9wIHRoZSBvcmRlciBpc1xuICAgICAgZW5zdXJlZCB0aGF0IG9yaWdpbmFsIGFsd2F5cyBzdGFydHMgZmlyc3QgYW5kIGNsb3NlcyBsYXN0OlxuXG4gICAgICBpZiAoZXZlbnQxID09ICdzdGFydCcgJiYgZXZlbnQyID09ICdzdGFydCcpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbDtcbiAgICAgIGlmIChldmVudDEgPT0gJ3N0YXJ0JyAmJiBldmVudDIgPT0gJ3N0b3AnKVxuICAgICAgICByZXR1cm4gaGlnaGxpZ2h0ZWQ7XG4gICAgICBpZiAoZXZlbnQxID09ICdzdG9wJyAmJiBldmVudDIgPT0gJ3N0YXJ0JylcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsO1xuICAgICAgaWYgKGV2ZW50MSA9PSAnc3RvcCcgJiYgZXZlbnQyID09ICdzdG9wJylcbiAgICAgICAgcmV0dXJuIGhpZ2hsaWdodGVkO1xuXG4gICAgICAuLi4gd2hpY2ggaXMgY29sbGFwc2VkIHRvOlxuICAgICAgKi9cbiAgICAgIHJldHVybiBoaWdobGlnaHRlZFswXS5ldmVudCA9PT0gJ3N0YXJ0JyA/IG9yaWdpbmFsIDogaGlnaGxpZ2h0ZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb3Blbihub2RlKSB7XG4gICAgICBmdW5jdGlvbiBhdHRyX3N0cihhKSB7cmV0dXJuICcgJyArIGEubm9kZU5hbWUgKyAnPVwiJyArIGVzY2FwZShhLnZhbHVlKS5yZXBsYWNlKCdcIicsICcmcXVvdDsnKSArICdcIic7fVxuICAgICAgcmVzdWx0ICs9ICc8JyArIHRhZyhub2RlKSArIEFycmF5UHJvdG8ubWFwLmNhbGwobm9kZS5hdHRyaWJ1dGVzLCBhdHRyX3N0cikuam9pbignJykgKyAnPic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xvc2Uobm9kZSkge1xuICAgICAgcmVzdWx0ICs9ICc8LycgKyB0YWcobm9kZSkgKyAnPic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyKGV2ZW50KSB7XG4gICAgICAoZXZlbnQuZXZlbnQgPT09ICdzdGFydCcgPyBvcGVuIDogY2xvc2UpKGV2ZW50Lm5vZGUpO1xuICAgIH1cblxuICAgIHdoaWxlIChvcmlnaW5hbC5sZW5ndGggfHwgaGlnaGxpZ2h0ZWQubGVuZ3RoKSB7XG4gICAgICB2YXIgc3RyZWFtID0gc2VsZWN0U3RyZWFtKCk7XG4gICAgICByZXN1bHQgKz0gZXNjYXBlKHZhbHVlLnN1YnN0cmluZyhwcm9jZXNzZWQsIHN0cmVhbVswXS5vZmZzZXQpKTtcbiAgICAgIHByb2Nlc3NlZCA9IHN0cmVhbVswXS5vZmZzZXQ7XG4gICAgICBpZiAoc3RyZWFtID09PSBvcmlnaW5hbCkge1xuICAgICAgICAvKlxuICAgICAgICBPbiBhbnkgb3BlbmluZyBvciBjbG9zaW5nIHRhZyBvZiB0aGUgb3JpZ2luYWwgbWFya3VwIHdlIGZpcnN0IGNsb3NlXG4gICAgICAgIHRoZSBlbnRpcmUgaGlnaGxpZ2h0ZWQgbm9kZSBzdGFjaywgdGhlbiByZW5kZXIgdGhlIG9yaWdpbmFsIHRhZyBhbG9uZ1xuICAgICAgICB3aXRoIGFsbCB0aGUgZm9sbG93aW5nIG9yaWdpbmFsIHRhZ3MgYXQgdGhlIHNhbWUgb2Zmc2V0IGFuZCB0aGVuXG4gICAgICAgIHJlb3BlbiBhbGwgdGhlIHRhZ3Mgb24gdGhlIGhpZ2hsaWdodGVkIHN0YWNrLlxuICAgICAgICAqL1xuICAgICAgICBub2RlU3RhY2sucmV2ZXJzZSgpLmZvckVhY2goY2xvc2UpO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgcmVuZGVyKHN0cmVhbS5zcGxpY2UoMCwgMSlbMF0pO1xuICAgICAgICAgIHN0cmVhbSA9IHNlbGVjdFN0cmVhbSgpO1xuICAgICAgICB9IHdoaWxlIChzdHJlYW0gPT09IG9yaWdpbmFsICYmIHN0cmVhbS5sZW5ndGggJiYgc3RyZWFtWzBdLm9mZnNldCA9PT0gcHJvY2Vzc2VkKTtcbiAgICAgICAgbm9kZVN0YWNrLnJldmVyc2UoKS5mb3JFYWNoKG9wZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN0cmVhbVswXS5ldmVudCA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIG5vZGVTdGFjay5wdXNoKHN0cmVhbVswXS5ub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlU3RhY2sucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKHN0cmVhbS5zcGxpY2UoMCwgMSlbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0ICsgZXNjYXBlKHZhbHVlLnN1YnN0cihwcm9jZXNzZWQpKTtcbiAgfVxuXG4gIC8qIEluaXRpYWxpemF0aW9uICovXG5cbiAgZnVuY3Rpb24gZXhwYW5kX21vZGUobW9kZSkge1xuICAgIGlmIChtb2RlLnZhcmlhbnRzICYmICFtb2RlLmNhY2hlZF92YXJpYW50cykge1xuICAgICAgbW9kZS5jYWNoZWRfdmFyaWFudHMgPSBtb2RlLnZhcmlhbnRzLm1hcChmdW5jdGlvbih2YXJpYW50KSB7XG4gICAgICAgIHJldHVybiBpbmhlcml0KG1vZGUsIHt2YXJpYW50czogbnVsbH0sIHZhcmlhbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBtb2RlLmNhY2hlZF92YXJpYW50cyB8fCAobW9kZS5lbmRzV2l0aFBhcmVudCAmJiBbaW5oZXJpdChtb2RlKV0pIHx8IFttb2RlXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXBpbGVMYW5ndWFnZShsYW5ndWFnZSkge1xuXG4gICAgZnVuY3Rpb24gcmVTdHIocmUpIHtcbiAgICAgICAgcmV0dXJuIChyZSAmJiByZS5zb3VyY2UpIHx8IHJlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxhbmdSZSh2YWx1ZSwgZ2xvYmFsKSB7XG4gICAgICByZXR1cm4gbmV3IFJlZ0V4cChcbiAgICAgICAgcmVTdHIodmFsdWUpLFxuICAgICAgICAnbScgKyAobGFuZ3VhZ2UuY2FzZV9pbnNlbnNpdGl2ZSA/ICdpJyA6ICcnKSArIChnbG9iYWwgPyAnZycgOiAnJylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcGlsZU1vZGUobW9kZSwgcGFyZW50KSB7XG4gICAgICBpZiAobW9kZS5jb21waWxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbW9kZS5jb21waWxlZCA9IHRydWU7XG5cbiAgICAgIG1vZGUua2V5d29yZHMgPSBtb2RlLmtleXdvcmRzIHx8IG1vZGUuYmVnaW5LZXl3b3JkcztcbiAgICAgIGlmIChtb2RlLmtleXdvcmRzKSB7XG4gICAgICAgIHZhciBjb21waWxlZF9rZXl3b3JkcyA9IHt9O1xuXG4gICAgICAgIHZhciBmbGF0dGVuID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBzdHIpIHtcbiAgICAgICAgICBpZiAobGFuZ3VhZ2UuY2FzZV9pbnNlbnNpdGl2ZSkge1xuICAgICAgICAgICAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0ci5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24oa3cpIHtcbiAgICAgICAgICAgIHZhciBwYWlyID0ga3cuc3BsaXQoJ3wnKTtcbiAgICAgICAgICAgIGNvbXBpbGVkX2tleXdvcmRzW3BhaXJbMF1dID0gW2NsYXNzTmFtZSwgcGFpclsxXSA/IE51bWJlcihwYWlyWzFdKSA6IDFdO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0eXBlb2YgbW9kZS5rZXl3b3JkcyA9PT0gJ3N0cmluZycpIHsgLy8gc3RyaW5nXG4gICAgICAgICAgZmxhdHRlbigna2V5d29yZCcsIG1vZGUua2V5d29yZHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9iamVjdEtleXMobW9kZS5rZXl3b3JkcykuZm9yRWFjaChmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBmbGF0dGVuKGNsYXNzTmFtZSwgbW9kZS5rZXl3b3Jkc1tjbGFzc05hbWVdKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBtb2RlLmtleXdvcmRzID0gY29tcGlsZWRfa2V5d29yZHM7XG4gICAgICB9XG4gICAgICBtb2RlLmxleGVtZXNSZSA9IGxhbmdSZShtb2RlLmxleGVtZXMgfHwgL1xcdysvLCB0cnVlKTtcblxuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBpZiAobW9kZS5iZWdpbktleXdvcmRzKSB7XG4gICAgICAgICAgbW9kZS5iZWdpbiA9ICdcXFxcYignICsgbW9kZS5iZWdpbktleXdvcmRzLnNwbGl0KCcgJykuam9pbignfCcpICsgJylcXFxcYic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb2RlLmJlZ2luKVxuICAgICAgICAgIG1vZGUuYmVnaW4gPSAvXFxCfFxcYi87XG4gICAgICAgIG1vZGUuYmVnaW5SZSA9IGxhbmdSZShtb2RlLmJlZ2luKTtcbiAgICAgICAgaWYgKCFtb2RlLmVuZCAmJiAhbW9kZS5lbmRzV2l0aFBhcmVudClcbiAgICAgICAgICBtb2RlLmVuZCA9IC9cXEJ8XFxiLztcbiAgICAgICAgaWYgKG1vZGUuZW5kKVxuICAgICAgICAgIG1vZGUuZW5kUmUgPSBsYW5nUmUobW9kZS5lbmQpO1xuICAgICAgICBtb2RlLnRlcm1pbmF0b3JfZW5kID0gcmVTdHIobW9kZS5lbmQpIHx8ICcnO1xuICAgICAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCAmJiBwYXJlbnQudGVybWluYXRvcl9lbmQpXG4gICAgICAgICAgbW9kZS50ZXJtaW5hdG9yX2VuZCArPSAobW9kZS5lbmQgPyAnfCcgOiAnJykgKyBwYXJlbnQudGVybWluYXRvcl9lbmQ7XG4gICAgICB9XG4gICAgICBpZiAobW9kZS5pbGxlZ2FsKVxuICAgICAgICBtb2RlLmlsbGVnYWxSZSA9IGxhbmdSZShtb2RlLmlsbGVnYWwpO1xuICAgICAgaWYgKG1vZGUucmVsZXZhbmNlID09IG51bGwpXG4gICAgICAgIG1vZGUucmVsZXZhbmNlID0gMTtcbiAgICAgIGlmICghbW9kZS5jb250YWlucykge1xuICAgICAgICBtb2RlLmNvbnRhaW5zID0gW107XG4gICAgICB9XG4gICAgICBtb2RlLmNvbnRhaW5zID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgbW9kZS5jb250YWlucy5tYXAoZnVuY3Rpb24oYykge1xuICAgICAgICByZXR1cm4gZXhwYW5kX21vZGUoYyA9PT0gJ3NlbGYnID8gbW9kZSA6IGMpXG4gICAgICB9KSk7XG4gICAgICBtb2RlLmNvbnRhaW5zLmZvckVhY2goZnVuY3Rpb24oYykge2NvbXBpbGVNb2RlKGMsIG1vZGUpO30pO1xuXG4gICAgICBpZiAobW9kZS5zdGFydHMpIHtcbiAgICAgICAgY29tcGlsZU1vZGUobW9kZS5zdGFydHMsIHBhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0ZXJtaW5hdG9ycyA9XG4gICAgICAgIG1vZGUuY29udGFpbnMubWFwKGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgICByZXR1cm4gYy5iZWdpbktleXdvcmRzID8gJ1xcXFwuPygnICsgYy5iZWdpbiArICcpXFxcXC4/JyA6IGMuYmVnaW47XG4gICAgICAgIH0pXG4gICAgICAgIC5jb25jYXQoW21vZGUudGVybWluYXRvcl9lbmQsIG1vZGUuaWxsZWdhbF0pXG4gICAgICAgIC5tYXAocmVTdHIpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgICBtb2RlLnRlcm1pbmF0b3JzID0gdGVybWluYXRvcnMubGVuZ3RoID8gbGFuZ1JlKHRlcm1pbmF0b3JzLmpvaW4oJ3wnKSwgdHJ1ZSkgOiB7ZXhlYzogZnVuY3Rpb24oLypzKi8pIHtyZXR1cm4gbnVsbDt9fTtcbiAgICB9XG5cbiAgICBjb21waWxlTW9kZShsYW5ndWFnZSk7XG4gIH1cblxuICAvKlxuICBDb3JlIGhpZ2hsaWdodGluZyBmdW5jdGlvbi4gQWNjZXB0cyBhIGxhbmd1YWdlIG5hbWUsIG9yIGFuIGFsaWFzLCBhbmQgYVxuICBzdHJpbmcgd2l0aCB0aGUgY29kZSB0byBoaWdobGlnaHQuIFJldHVybnMgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZ1xuICBwcm9wZXJ0aWVzOlxuXG4gIC0gcmVsZXZhbmNlIChpbnQpXG4gIC0gdmFsdWUgKGFuIEhUTUwgc3RyaW5nIHdpdGggaGlnaGxpZ2h0aW5nIG1hcmt1cClcblxuICAqL1xuICBmdW5jdGlvbiBoaWdobGlnaHQobmFtZSwgdmFsdWUsIGlnbm9yZV9pbGxlZ2FscywgY29udGludWF0aW9uKSB7XG5cbiAgICBmdW5jdGlvbiBzdWJNb2RlKGxleGVtZSwgbW9kZSkge1xuICAgICAgdmFyIGksIGxlbmd0aDtcblxuICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gbW9kZS5jb250YWlucy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGVzdFJlKG1vZGUuY29udGFpbnNbaV0uYmVnaW5SZSwgbGV4ZW1lKSkge1xuICAgICAgICAgIHJldHVybiBtb2RlLmNvbnRhaW5zW2ldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW5kT2ZNb2RlKG1vZGUsIGxleGVtZSkge1xuICAgICAgaWYgKHRlc3RSZShtb2RlLmVuZFJlLCBsZXhlbWUpKSB7XG4gICAgICAgIHdoaWxlIChtb2RlLmVuZHNQYXJlbnQgJiYgbW9kZS5wYXJlbnQpIHtcbiAgICAgICAgICBtb2RlID0gbW9kZS5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vZGU7XG4gICAgICB9XG4gICAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCkge1xuICAgICAgICByZXR1cm4gZW5kT2ZNb2RlKG1vZGUucGFyZW50LCBsZXhlbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWxsZWdhbChsZXhlbWUsIG1vZGUpIHtcbiAgICAgIHJldHVybiAhaWdub3JlX2lsbGVnYWxzICYmIHRlc3RSZShtb2RlLmlsbGVnYWxSZSwgbGV4ZW1lKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrZXl3b3JkTWF0Y2gobW9kZSwgbWF0Y2gpIHtcbiAgICAgIHZhciBtYXRjaF9zdHIgPSBsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlID8gbWF0Y2hbMF0udG9Mb3dlckNhc2UoKSA6IG1hdGNoWzBdO1xuICAgICAgcmV0dXJuIG1vZGUua2V5d29yZHMuaGFzT3duUHJvcGVydHkobWF0Y2hfc3RyKSAmJiBtb2RlLmtleXdvcmRzW21hdGNoX3N0cl07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcGFuKGNsYXNzbmFtZSwgaW5zaWRlU3BhbiwgbGVhdmVPcGVuLCBub1ByZWZpeCkge1xuICAgICAgdmFyIGNsYXNzUHJlZml4ID0gbm9QcmVmaXggPyAnJyA6IG9wdGlvbnMuY2xhc3NQcmVmaXgsXG4gICAgICAgICAgb3BlblNwYW4gICAgPSAnPHNwYW4gY2xhc3M9XCInICsgY2xhc3NQcmVmaXgsXG4gICAgICAgICAgY2xvc2VTcGFuICAgPSBsZWF2ZU9wZW4gPyAnJyA6IHNwYW5FbmRUYWdcblxuICAgICAgb3BlblNwYW4gKz0gY2xhc3NuYW1lICsgJ1wiPic7XG5cbiAgICAgIHJldHVybiBvcGVuU3BhbiArIGluc2lkZVNwYW4gKyBjbG9zZVNwYW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0tleXdvcmRzKCkge1xuICAgICAgdmFyIGtleXdvcmRfbWF0Y2gsIGxhc3RfaW5kZXgsIG1hdGNoLCByZXN1bHQ7XG5cbiAgICAgIGlmICghdG9wLmtleXdvcmRzKVxuICAgICAgICByZXR1cm4gZXNjYXBlKG1vZGVfYnVmZmVyKTtcblxuICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICBsYXN0X2luZGV4ID0gMDtcbiAgICAgIHRvcC5sZXhlbWVzUmUubGFzdEluZGV4ID0gMDtcbiAgICAgIG1hdGNoID0gdG9wLmxleGVtZXNSZS5leGVjKG1vZGVfYnVmZmVyKTtcblxuICAgICAgd2hpbGUgKG1hdGNoKSB7XG4gICAgICAgIHJlc3VsdCArPSBlc2NhcGUobW9kZV9idWZmZXIuc3Vic3RyaW5nKGxhc3RfaW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgIGtleXdvcmRfbWF0Y2ggPSBrZXl3b3JkTWF0Y2godG9wLCBtYXRjaCk7XG4gICAgICAgIGlmIChrZXl3b3JkX21hdGNoKSB7XG4gICAgICAgICAgcmVsZXZhbmNlICs9IGtleXdvcmRfbWF0Y2hbMV07XG4gICAgICAgICAgcmVzdWx0ICs9IGJ1aWxkU3BhbihrZXl3b3JkX21hdGNoWzBdLCBlc2NhcGUobWF0Y2hbMF0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgKz0gZXNjYXBlKG1hdGNoWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0X2luZGV4ID0gdG9wLmxleGVtZXNSZS5sYXN0SW5kZXg7XG4gICAgICAgIG1hdGNoID0gdG9wLmxleGVtZXNSZS5leGVjKG1vZGVfYnVmZmVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQgKyBlc2NhcGUobW9kZV9idWZmZXIuc3Vic3RyKGxhc3RfaW5kZXgpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzU3ViTGFuZ3VhZ2UoKSB7XG4gICAgICB2YXIgZXhwbGljaXQgPSB0eXBlb2YgdG9wLnN1Ykxhbmd1YWdlID09PSAnc3RyaW5nJztcbiAgICAgIGlmIChleHBsaWNpdCAmJiAhbGFuZ3VhZ2VzW3RvcC5zdWJMYW5ndWFnZV0pIHtcbiAgICAgICAgcmV0dXJuIGVzY2FwZShtb2RlX2J1ZmZlcik7XG4gICAgICB9XG5cbiAgICAgIHZhciByZXN1bHQgPSBleHBsaWNpdCA/XG4gICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0KHRvcC5zdWJMYW5ndWFnZSwgbW9kZV9idWZmZXIsIHRydWUsIGNvbnRpbnVhdGlvbnNbdG9wLnN1Ykxhbmd1YWdlXSkgOlxuICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodEF1dG8obW9kZV9idWZmZXIsIHRvcC5zdWJMYW5ndWFnZS5sZW5ndGggPyB0b3Auc3ViTGFuZ3VhZ2UgOiB1bmRlZmluZWQpO1xuXG4gICAgICAvLyBDb3VudGluZyBlbWJlZGRlZCBsYW5ndWFnZSBzY29yZSB0b3dhcmRzIHRoZSBob3N0IGxhbmd1YWdlIG1heSBiZSBkaXNhYmxlZFxuICAgICAgLy8gd2l0aCB6ZXJvaW5nIHRoZSBjb250YWluaW5nIG1vZGUgcmVsZXZhbmNlLiBVc2VjYXNlIGluIHBvaW50IGlzIE1hcmtkb3duIHRoYXRcbiAgICAgIC8vIGFsbG93cyBYTUwgZXZlcnl3aGVyZSBhbmQgbWFrZXMgZXZlcnkgWE1MIHNuaXBwZXQgdG8gaGF2ZSBhIG11Y2ggbGFyZ2VyIE1hcmtkb3duXG4gICAgICAvLyBzY29yZS5cbiAgICAgIGlmICh0b3AucmVsZXZhbmNlID4gMCkge1xuICAgICAgICByZWxldmFuY2UgKz0gcmVzdWx0LnJlbGV2YW5jZTtcbiAgICAgIH1cbiAgICAgIGlmIChleHBsaWNpdCkge1xuICAgICAgICBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0gPSByZXN1bHQudG9wO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJ1aWxkU3BhbihyZXN1bHQubGFuZ3VhZ2UsIHJlc3VsdC52YWx1ZSwgZmFsc2UsIHRydWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NCdWZmZXIoKSB7XG4gICAgICByZXN1bHQgKz0gKHRvcC5zdWJMYW5ndWFnZSAhPSBudWxsID8gcHJvY2Vzc1N1Ykxhbmd1YWdlKCkgOiBwcm9jZXNzS2V5d29yZHMoKSk7XG4gICAgICBtb2RlX2J1ZmZlciA9ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TmV3TW9kZShtb2RlKSB7XG4gICAgICByZXN1bHQgKz0gbW9kZS5jbGFzc05hbWU/IGJ1aWxkU3Bhbihtb2RlLmNsYXNzTmFtZSwgJycsIHRydWUpOiAnJztcbiAgICAgIHRvcCA9IE9iamVjdC5jcmVhdGUobW9kZSwge3BhcmVudDoge3ZhbHVlOiB0b3B9fSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0xleGVtZShidWZmZXIsIGxleGVtZSkge1xuXG4gICAgICBtb2RlX2J1ZmZlciArPSBidWZmZXI7XG5cbiAgICAgIGlmIChsZXhlbWUgPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzQnVmZmVyKCk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmV3X21vZGUgPSBzdWJNb2RlKGxleGVtZSwgdG9wKTtcbiAgICAgIGlmIChuZXdfbW9kZSkge1xuICAgICAgICBpZiAobmV3X21vZGUuc2tpcCkge1xuICAgICAgICAgIG1vZGVfYnVmZmVyICs9IGxleGVtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobmV3X21vZGUuZXhjbHVkZUJlZ2luKSB7XG4gICAgICAgICAgICBtb2RlX2J1ZmZlciArPSBsZXhlbWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByb2Nlc3NCdWZmZXIoKTtcbiAgICAgICAgICBpZiAoIW5ld19tb2RlLnJldHVybkJlZ2luICYmICFuZXdfbW9kZS5leGNsdWRlQmVnaW4pIHtcbiAgICAgICAgICAgIG1vZGVfYnVmZmVyID0gbGV4ZW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGFydE5ld01vZGUobmV3X21vZGUsIGxleGVtZSk7XG4gICAgICAgIHJldHVybiBuZXdfbW9kZS5yZXR1cm5CZWdpbiA/IDAgOiBsZXhlbWUubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICB2YXIgZW5kX21vZGUgPSBlbmRPZk1vZGUodG9wLCBsZXhlbWUpO1xuICAgICAgaWYgKGVuZF9tb2RlKSB7XG4gICAgICAgIHZhciBvcmlnaW4gPSB0b3A7XG4gICAgICAgIGlmIChvcmlnaW4uc2tpcCkge1xuICAgICAgICAgIG1vZGVfYnVmZmVyICs9IGxleGVtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIShvcmlnaW4ucmV0dXJuRW5kIHx8IG9yaWdpbi5leGNsdWRlRW5kKSkge1xuICAgICAgICAgICAgbW9kZV9idWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwcm9jZXNzQnVmZmVyKCk7XG4gICAgICAgICAgaWYgKG9yaWdpbi5leGNsdWRlRW5kKSB7XG4gICAgICAgICAgICBtb2RlX2J1ZmZlciA9IGxleGVtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZG8ge1xuICAgICAgICAgIGlmICh0b3AuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gc3BhbkVuZFRhZztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCF0b3Auc2tpcCkge1xuICAgICAgICAgICAgcmVsZXZhbmNlICs9IHRvcC5yZWxldmFuY2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRvcCA9IHRvcC5wYXJlbnQ7XG4gICAgICAgIH0gd2hpbGUgKHRvcCAhPT0gZW5kX21vZGUucGFyZW50KTtcbiAgICAgICAgaWYgKGVuZF9tb2RlLnN0YXJ0cykge1xuICAgICAgICAgIHN0YXJ0TmV3TW9kZShlbmRfbW9kZS5zdGFydHMsICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JpZ2luLnJldHVybkVuZCA/IDAgOiBsZXhlbWUubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNJbGxlZ2FsKGxleGVtZSwgdG9wKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGxleGVtZSBcIicgKyBsZXhlbWUgKyAnXCIgZm9yIG1vZGUgXCInICsgKHRvcC5jbGFzc05hbWUgfHwgJzx1bm5hbWVkPicpICsgJ1wiJyk7XG5cbiAgICAgIC8qXG4gICAgICBQYXJzZXIgc2hvdWxkIG5vdCByZWFjaCB0aGlzIHBvaW50IGFzIGFsbCB0eXBlcyBvZiBsZXhlbWVzIHNob3VsZCBiZSBjYXVnaHRcbiAgICAgIGVhcmxpZXIsIGJ1dCBpZiBpdCBkb2VzIGR1ZSB0byBzb21lIGJ1ZyBtYWtlIHN1cmUgaXQgYWR2YW5jZXMgYXQgbGVhc3Qgb25lXG4gICAgICBjaGFyYWN0ZXIgZm9yd2FyZCB0byBwcmV2ZW50IGluZmluaXRlIGxvb3BpbmcuXG4gICAgICAqL1xuICAgICAgbW9kZV9idWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgcmV0dXJuIGxleGVtZS5sZW5ndGggfHwgMTtcbiAgICB9XG5cbiAgICB2YXIgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZShuYW1lKTtcbiAgICBpZiAoIWxhbmd1YWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGFuZ3VhZ2U6IFwiJyArIG5hbWUgKyAnXCInKTtcbiAgICB9XG5cbiAgICBjb21waWxlTGFuZ3VhZ2UobGFuZ3VhZ2UpO1xuICAgIHZhciB0b3AgPSBjb250aW51YXRpb24gfHwgbGFuZ3VhZ2U7XG4gICAgdmFyIGNvbnRpbnVhdGlvbnMgPSB7fTsgLy8ga2VlcCBjb250aW51YXRpb25zIGZvciBzdWItbGFuZ3VhZ2VzXG4gICAgdmFyIHJlc3VsdCA9ICcnLCBjdXJyZW50O1xuICAgIGZvcihjdXJyZW50ID0gdG9wOyBjdXJyZW50ICE9PSBsYW5ndWFnZTsgY3VycmVudCA9IGN1cnJlbnQucGFyZW50KSB7XG4gICAgICBpZiAoY3VycmVudC5jbGFzc05hbWUpIHtcbiAgICAgICAgcmVzdWx0ID0gYnVpbGRTcGFuKGN1cnJlbnQuY2xhc3NOYW1lLCAnJywgdHJ1ZSkgKyByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBtb2RlX2J1ZmZlciA9ICcnO1xuICAgIHZhciByZWxldmFuY2UgPSAwO1xuICAgIHRyeSB7XG4gICAgICB2YXIgbWF0Y2gsIGNvdW50LCBpbmRleCA9IDA7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB0b3AudGVybWluYXRvcnMubGFzdEluZGV4ID0gaW5kZXg7XG4gICAgICAgIG1hdGNoID0gdG9wLnRlcm1pbmF0b3JzLmV4ZWModmFsdWUpO1xuICAgICAgICBpZiAoIW1hdGNoKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjb3VudCA9IHByb2Nlc3NMZXhlbWUodmFsdWUuc3Vic3RyaW5nKGluZGV4LCBtYXRjaC5pbmRleCksIG1hdGNoWzBdKTtcbiAgICAgICAgaW5kZXggPSBtYXRjaC5pbmRleCArIGNvdW50O1xuICAgICAgfVxuICAgICAgcHJvY2Vzc0xleGVtZSh2YWx1ZS5zdWJzdHIoaW5kZXgpKTtcbiAgICAgIGZvcihjdXJyZW50ID0gdG9wOyBjdXJyZW50LnBhcmVudDsgY3VycmVudCA9IGN1cnJlbnQucGFyZW50KSB7IC8vIGNsb3NlIGRhbmdsaW5nIG1vZGVzXG4gICAgICAgIGlmIChjdXJyZW50LmNsYXNzTmFtZSkge1xuICAgICAgICAgIHJlc3VsdCArPSBzcGFuRW5kVGFnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZWxldmFuY2U6IHJlbGV2YW5jZSxcbiAgICAgICAgdmFsdWU6IHJlc3VsdCxcbiAgICAgICAgbGFuZ3VhZ2U6IG5hbWUsXG4gICAgICAgIHRvcDogdG9wXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLm1lc3NhZ2UgJiYgZS5tZXNzYWdlLmluZGV4T2YoJ0lsbGVnYWwnKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgdmFsdWU6IGVzY2FwZSh2YWx1ZSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLypcbiAgSGlnaGxpZ2h0aW5nIHdpdGggbGFuZ3VhZ2UgZGV0ZWN0aW9uLiBBY2NlcHRzIGEgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG9cbiAgaGlnaGxpZ2h0LiBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcblxuICAtIGxhbmd1YWdlIChkZXRlY3RlZCBsYW5ndWFnZSlcbiAgLSByZWxldmFuY2UgKGludClcbiAgLSB2YWx1ZSAoYW4gSFRNTCBzdHJpbmcgd2l0aCBoaWdobGlnaHRpbmcgbWFya3VwKVxuICAtIHNlY29uZF9iZXN0IChvYmplY3Qgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgZm9yIHNlY29uZC1iZXN0IGhldXJpc3RpY2FsbHlcbiAgICBkZXRlY3RlZCBsYW5ndWFnZSwgbWF5IGJlIGFic2VudClcblxuICAqL1xuICBmdW5jdGlvbiBoaWdobGlnaHRBdXRvKHRleHQsIGxhbmd1YWdlU3Vic2V0KSB7XG4gICAgbGFuZ3VhZ2VTdWJzZXQgPSBsYW5ndWFnZVN1YnNldCB8fCBvcHRpb25zLmxhbmd1YWdlcyB8fCBvYmplY3RLZXlzKGxhbmd1YWdlcyk7XG4gICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIHZhbHVlOiBlc2NhcGUodGV4dClcbiAgICB9O1xuICAgIHZhciBzZWNvbmRfYmVzdCA9IHJlc3VsdDtcbiAgICBsYW5ndWFnZVN1YnNldC5maWx0ZXIoZ2V0TGFuZ3VhZ2UpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgdmFyIGN1cnJlbnQgPSBoaWdobGlnaHQobmFtZSwgdGV4dCwgZmFsc2UpO1xuICAgICAgY3VycmVudC5sYW5ndWFnZSA9IG5hbWU7XG4gICAgICBpZiAoY3VycmVudC5yZWxldmFuY2UgPiBzZWNvbmRfYmVzdC5yZWxldmFuY2UpIHtcbiAgICAgICAgc2Vjb25kX2Jlc3QgPSBjdXJyZW50O1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnQucmVsZXZhbmNlID4gcmVzdWx0LnJlbGV2YW5jZSkge1xuICAgICAgICBzZWNvbmRfYmVzdCA9IHJlc3VsdDtcbiAgICAgICAgcmVzdWx0ID0gY3VycmVudDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoc2Vjb25kX2Jlc3QubGFuZ3VhZ2UpIHtcbiAgICAgIHJlc3VsdC5zZWNvbmRfYmVzdCA9IHNlY29uZF9iZXN0O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLypcbiAgUG9zdC1wcm9jZXNzaW5nIG9mIHRoZSBoaWdobGlnaHRlZCBtYXJrdXA6XG5cbiAgLSByZXBsYWNlIFRBQnMgd2l0aCBzb21ldGhpbmcgbW9yZSB1c2VmdWxcbiAgLSByZXBsYWNlIHJlYWwgbGluZS1icmVha3Mgd2l0aCAnPGJyPicgZm9yIG5vbi1wcmUgY29udGFpbmVyc1xuXG4gICovXG4gIGZ1bmN0aW9uIGZpeE1hcmt1cCh2YWx1ZSkge1xuICAgIHJldHVybiAhKG9wdGlvbnMudGFiUmVwbGFjZSB8fCBvcHRpb25zLnVzZUJSKVxuICAgICAgPyB2YWx1ZVxuICAgICAgOiB2YWx1ZS5yZXBsYWNlKGZpeE1hcmt1cFJlLCBmdW5jdGlvbihtYXRjaCwgcDEpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy51c2VCUiAmJiBtYXRjaCA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgIHJldHVybiAnPGJyPic7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnRhYlJlcGxhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBwMS5yZXBsYWNlKC9cXHQvZywgb3B0aW9ucy50YWJSZXBsYWNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZENsYXNzTmFtZShwcmV2Q2xhc3NOYW1lLCBjdXJyZW50TGFuZywgcmVzdWx0TGFuZykge1xuICAgIHZhciBsYW5ndWFnZSA9IGN1cnJlbnRMYW5nID8gYWxpYXNlc1tjdXJyZW50TGFuZ10gOiByZXN1bHRMYW5nLFxuICAgICAgICByZXN1bHQgICA9IFtwcmV2Q2xhc3NOYW1lLnRyaW0oKV07XG5cbiAgICBpZiAoIXByZXZDbGFzc05hbWUubWF0Y2goL1xcYmhsanNcXGIvKSkge1xuICAgICAgcmVzdWx0LnB1c2goJ2hsanMnKTtcbiAgICB9XG5cbiAgICBpZiAocHJldkNsYXNzTmFtZS5pbmRleE9mKGxhbmd1YWdlKSA9PT0gLTEpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGxhbmd1YWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKS50cmltKCk7XG4gIH1cblxuICAvKlxuICBBcHBsaWVzIGhpZ2hsaWdodGluZyB0byBhIERPTSBub2RlIGNvbnRhaW5pbmcgY29kZS4gQWNjZXB0cyBhIERPTSBub2RlIGFuZFxuICB0d28gb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgZml4TWFya3VwLlxuICAqL1xuICBmdW5jdGlvbiBoaWdobGlnaHRCbG9jayhibG9jaykge1xuICAgIHZhciBub2RlLCBvcmlnaW5hbFN0cmVhbSwgcmVzdWx0LCByZXN1bHROb2RlLCB0ZXh0O1xuICAgIHZhciBsYW5ndWFnZSA9IGJsb2NrTGFuZ3VhZ2UoYmxvY2spO1xuXG4gICAgaWYgKGlzTm90SGlnaGxpZ2h0ZWQobGFuZ3VhZ2UpKVxuICAgICAgICByZXR1cm47XG5cbiAgICBpZiAob3B0aW9ucy51c2VCUikge1xuICAgICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdkaXYnKTtcbiAgICAgIG5vZGUuaW5uZXJIVE1MID0gYmxvY2suaW5uZXJIVE1MLnJlcGxhY2UoL1xcbi9nLCAnJykucmVwbGFjZSgvPGJyWyBcXC9dKj4vZywgJ1xcbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlID0gYmxvY2s7XG4gICAgfVxuICAgIHRleHQgPSBub2RlLnRleHRDb250ZW50O1xuICAgIHJlc3VsdCA9IGxhbmd1YWdlID8gaGlnaGxpZ2h0KGxhbmd1YWdlLCB0ZXh0LCB0cnVlKSA6IGhpZ2hsaWdodEF1dG8odGV4dCk7XG5cbiAgICBvcmlnaW5hbFN0cmVhbSA9IG5vZGVTdHJlYW0obm9kZSk7XG4gICAgaWYgKG9yaWdpbmFsU3RyZWFtLmxlbmd0aCkge1xuICAgICAgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdkaXYnKTtcbiAgICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gcmVzdWx0LnZhbHVlO1xuICAgICAgcmVzdWx0LnZhbHVlID0gbWVyZ2VTdHJlYW1zKG9yaWdpbmFsU3RyZWFtLCBub2RlU3RyZWFtKHJlc3VsdE5vZGUpLCB0ZXh0KTtcbiAgICB9XG4gICAgcmVzdWx0LnZhbHVlID0gZml4TWFya3VwKHJlc3VsdC52YWx1ZSk7XG5cbiAgICBibG9jay5pbm5lckhUTUwgPSByZXN1bHQudmFsdWU7XG4gICAgYmxvY2suY2xhc3NOYW1lID0gYnVpbGRDbGFzc05hbWUoYmxvY2suY2xhc3NOYW1lLCBsYW5ndWFnZSwgcmVzdWx0Lmxhbmd1YWdlKTtcbiAgICBibG9jay5yZXN1bHQgPSB7XG4gICAgICBsYW5ndWFnZTogcmVzdWx0Lmxhbmd1YWdlLFxuICAgICAgcmU6IHJlc3VsdC5yZWxldmFuY2VcbiAgICB9O1xuICAgIGlmIChyZXN1bHQuc2Vjb25kX2Jlc3QpIHtcbiAgICAgIGJsb2NrLnNlY29uZF9iZXN0ID0ge1xuICAgICAgICBsYW5ndWFnZTogcmVzdWx0LnNlY29uZF9iZXN0Lmxhbmd1YWdlLFxuICAgICAgICByZTogcmVzdWx0LnNlY29uZF9iZXN0LnJlbGV2YW5jZVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKlxuICBVcGRhdGVzIGhpZ2hsaWdodC5qcyBnbG9iYWwgb3B0aW9ucyB3aXRoIHZhbHVlcyBwYXNzZWQgaW4gdGhlIGZvcm0gb2YgYW4gb2JqZWN0LlxuICAqL1xuICBmdW5jdGlvbiBjb25maWd1cmUodXNlcl9vcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IGluaGVyaXQob3B0aW9ucywgdXNlcl9vcHRpb25zKTtcbiAgfVxuXG4gIC8qXG4gIEFwcGxpZXMgaGlnaGxpZ2h0aW5nIHRvIGFsbCA8cHJlPjxjb2RlPi4uPC9jb2RlPjwvcHJlPiBibG9ja3Mgb24gYSBwYWdlLlxuICAqL1xuICBmdW5jdGlvbiBpbml0SGlnaGxpZ2h0aW5nKCkge1xuICAgIGlmIChpbml0SGlnaGxpZ2h0aW5nLmNhbGxlZClcbiAgICAgIHJldHVybjtcbiAgICBpbml0SGlnaGxpZ2h0aW5nLmNhbGxlZCA9IHRydWU7XG5cbiAgICB2YXIgYmxvY2tzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlIGNvZGUnKTtcbiAgICBBcnJheVByb3RvLmZvckVhY2guY2FsbChibG9ja3MsIGhpZ2hsaWdodEJsb2NrKTtcbiAgfVxuXG4gIC8qXG4gIEF0dGFjaGVzIGhpZ2hsaWdodGluZyB0byB0aGUgcGFnZSBsb2FkIGV2ZW50LlxuICAqL1xuICBmdW5jdGlvbiBpbml0SGlnaGxpZ2h0aW5nT25Mb2FkKCkge1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBpbml0SGlnaGxpZ2h0aW5nLCBmYWxzZSk7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGluaXRIaWdobGlnaHRpbmcsIGZhbHNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlZ2lzdGVyTGFuZ3VhZ2UobmFtZSwgbGFuZ3VhZ2UpIHtcbiAgICB2YXIgbGFuZyA9IGxhbmd1YWdlc1tuYW1lXSA9IGxhbmd1YWdlKGhsanMpO1xuICAgIGlmIChsYW5nLmFsaWFzZXMpIHtcbiAgICAgIGxhbmcuYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKGFsaWFzKSB7YWxpYXNlc1thbGlhc10gPSBuYW1lO30pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RMYW5ndWFnZXMoKSB7XG4gICAgcmV0dXJuIG9iamVjdEtleXMobGFuZ3VhZ2VzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExhbmd1YWdlKG5hbWUpIHtcbiAgICBuYW1lID0gKG5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGxhbmd1YWdlc1tuYW1lXSB8fCBsYW5ndWFnZXNbYWxpYXNlc1tuYW1lXV07XG4gIH1cblxuICAvKiBJbnRlcmZhY2UgZGVmaW5pdGlvbiAqL1xuXG4gIGhsanMuaGlnaGxpZ2h0ID0gaGlnaGxpZ2h0O1xuICBobGpzLmhpZ2hsaWdodEF1dG8gPSBoaWdobGlnaHRBdXRvO1xuICBobGpzLmZpeE1hcmt1cCA9IGZpeE1hcmt1cDtcbiAgaGxqcy5oaWdobGlnaHRCbG9jayA9IGhpZ2hsaWdodEJsb2NrO1xuICBobGpzLmNvbmZpZ3VyZSA9IGNvbmZpZ3VyZTtcbiAgaGxqcy5pbml0SGlnaGxpZ2h0aW5nID0gaW5pdEhpZ2hsaWdodGluZztcbiAgaGxqcy5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkID0gaW5pdEhpZ2hsaWdodGluZ09uTG9hZDtcbiAgaGxqcy5yZWdpc3Rlckxhbmd1YWdlID0gcmVnaXN0ZXJMYW5ndWFnZTtcbiAgaGxqcy5saXN0TGFuZ3VhZ2VzID0gbGlzdExhbmd1YWdlcztcbiAgaGxqcy5nZXRMYW5ndWFnZSA9IGdldExhbmd1YWdlO1xuICBobGpzLmluaGVyaXQgPSBpbmhlcml0O1xuXG4gIC8vIENvbW1vbiByZWdleHBzXG4gIGhsanMuSURFTlRfUkUgPSAnW2EtekEtWl1cXFxcdyonO1xuICBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgPSAnW2EtekEtWl9dXFxcXHcqJztcbiAgaGxqcy5OVU1CRVJfUkUgPSAnXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCspPyc7XG4gIGhsanMuQ19OVU1CRVJfUkUgPSAnKC0/KShcXFxcYjBbeFhdW2EtZkEtRjAtOV0rfChcXFxcYlxcXFxkKyhcXFxcLlxcXFxkKik/fFxcXFwuXFxcXGQrKShbZUVdWy0rXT9cXFxcZCspPyknOyAvLyAweC4uLiwgMC4uLiwgZGVjaW1hbCwgZmxvYXRcbiAgaGxqcy5CSU5BUllfTlVNQkVSX1JFID0gJ1xcXFxiKDBiWzAxXSspJzsgLy8gMGIuLi5cbiAgaGxqcy5SRV9TVEFSVEVSU19SRSA9ICchfCE9fCE9PXwlfCU9fCZ8JiZ8Jj18XFxcXCp8XFxcXCo9fFxcXFwrfFxcXFwrPXwsfC18LT18Lz18L3w6fDt8PDx8PDw9fDw9fDx8PT09fD09fD18Pj4+PXw+Pj18Pj18Pj4+fD4+fD58XFxcXD98XFxcXFt8XFxcXHt8XFxcXCh8XFxcXF58XFxcXF49fFxcXFx8fFxcXFx8PXxcXFxcfFxcXFx8fH4nO1xuXG4gIC8vIENvbW1vbiBtb2Rlc1xuICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgPSB7XG4gICAgYmVnaW46ICdcXFxcXFxcXFtcXFxcc1xcXFxTXScsIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLkFQT1NfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgfTtcbiAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgfTtcbiAgaGxqcy5QSFJBU0FMX1dPUkRTX01PREUgPSB7XG4gICAgYmVnaW46IC9cXGIoYXxhbnx0aGV8YXJlfEknbXxpc24ndHxkb24ndHxkb2Vzbid0fHdvbid0fGJ1dHxqdXN0fHNob3VsZHxwcmV0dHl8c2ltcGx5fGVub3VnaHxnb25uYXxnb2luZ3x3dGZ8c298c3VjaHx3aWxsfHlvdXx5b3VyfHRoZXl8bGlrZXxtb3JlKVxcYi9cbiAgfTtcbiAgaGxqcy5DT01NRU5UID0gZnVuY3Rpb24gKGJlZ2luLCBlbmQsIGluaGVyaXRzKSB7XG4gICAgdmFyIG1vZGUgPSBobGpzLmluaGVyaXQoXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICBiZWdpbjogYmVnaW4sIGVuZDogZW5kLFxuICAgICAgICBjb250YWluczogW11cbiAgICAgIH0sXG4gICAgICBpbmhlcml0cyB8fCB7fVxuICAgICk7XG4gICAgbW9kZS5jb250YWlucy5wdXNoKGhsanMuUEhSQVNBTF9XT1JEU19NT0RFKTtcbiAgICBtb2RlLmNvbnRhaW5zLnB1c2goe1xuICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgIGJlZ2luOiAnKD86VE9ET3xGSVhNRXxOT1RFfEJVR3xYWFgpOicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9KTtcbiAgICByZXR1cm4gbW9kZTtcbiAgfTtcbiAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFID0gaGxqcy5DT01NRU5UKCcvLycsICckJyk7XG4gIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJy9cXFxcKicsICdcXFxcKi8nKTtcbiAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnIycsICckJyk7XG4gIGhsanMuTlVNQkVSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogaGxqcy5OVU1CRVJfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGhsanMuQ19OVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBobGpzLkJJTkFSWV9OVU1CRVJfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGhsanMuQ1NTX05VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IGhsanMuTlVNQkVSX1JFICsgJygnICtcbiAgICAgICclfGVtfGV4fGNofHJlbScgICtcbiAgICAgICd8dnd8dmh8dm1pbnx2bWF4JyArXG4gICAgICAnfGNtfG1tfGlufHB0fHBjfHB4JyArXG4gICAgICAnfGRlZ3xncmFkfHJhZHx0dXJuJyArXG4gICAgICAnfHN8bXMnICtcbiAgICAgICd8SHp8a0h6JyArXG4gICAgICAnfGRwaXxkcGNtfGRwcHgnICtcbiAgICAgICcpPycsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGhsanMuUkVHRVhQX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICBiZWdpbjogL1xcLy8sIGVuZDogL1xcL1tnaW11eV0qLyxcbiAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcWy8sIGVuZDogL1xcXS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBobGpzLlRJVExFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiBobGpzLklERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5NRVRIT0RfR1VBUkQgPSB7XG4gICAgLy8gZXhjbHVkZXMgbWV0aG9kIG5hbWVzIGZyb20ga2V5d29yZCBwcm9jZXNzaW5nXG4gICAgYmVnaW46ICdcXFxcLlxcXFxzKicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgcmV0dXJuIGhsanM7XG59KSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoaWdoID0gcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9oaWdobGlnaHQuanMnKTtcblxuLyogVGhlIGxvd2xpZ2h0IGludGVyZmFjZSwgd2hpY2ggaGFzIHRvIGJlIGNvbXBhdGlibGVcbiAqIHdpdGggaGlnaGxpZ2h0LmpzLCBhcyB0aGlzIG9iamVjdCBpcyBwYXNzZWQgdG9cbiAqIGhpZ2hsaWdodC5qcyBzeW50YXhlcy4gKi9cblxuZnVuY3Rpb24gSGlnaCgpIHt9XG5cbkhpZ2gucHJvdG90eXBlID0gaGlnaDtcblxuLyogRXhwb3NlLiAqL1xudmFyIGxvdyA9IG5ldyBIaWdoKCk7IC8vIEhhIVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxvdztcblxubG93LmhpZ2hsaWdodCA9IGhpZ2hsaWdodDtcbmxvdy5oaWdobGlnaHRBdXRvID0gYXV0b0hpZ2hsaWdodDtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlID0gcmVnaXN0ZXJMYW5ndWFnZTtcbmxvdy5nZXRMYW5ndWFnZSA9IGdldExhbmd1YWdlO1xuXG52YXIgaW5oZXJpdCA9IGhpZ2guaW5oZXJpdDtcbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIERFRkFVTFRfUFJFRklYID0gJ2hsanMtJztcbnZhciBLRVlfSU5TRU5TSVRJVkUgPSAnY2FzZV9pbnNlbnNpdGl2ZSc7XG52YXIgS0VZX0NBQ0hFRF9WQVJJQU5UUyA9ICdjYWNoZWRfdmFyaWFudHMnO1xudmFyIEVNUFRZID0gJyc7XG5cbnZhciBDX1NQQUNFID0gJyAnO1xudmFyIENfUElQRSA9ICd8JztcblxudmFyIFRfRUxFTUVOVCA9ICdlbGVtZW50JztcbnZhciBUX1RFWFQgPSAndGV4dCc7XG52YXIgVF9TUEFOID0gJ3NwYW4nO1xuXG4vKiBNYXBzIG9mIHN5bnRheGVzLiAqL1xudmFyIGxhbmd1YWdlTmFtZXMgPSBbXTtcbnZhciBsYW5ndWFnZXMgPSB7fTtcbnZhciBhbGlhc2VzID0ge307XG5cbi8qIEhpZ2hsaWdodGluZyB3aXRoIGxhbmd1YWdlIGRldGVjdGlvbi4gIEFjY2VwdHMgYSBzdHJpbmdcbiAqIHdpdGggdGhlIGNvZGUgdG8gaGlnaGxpZ2h0LiAgUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGVcbiAqIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqIC0gbGFuZ3VhZ2UgKGRldGVjdGVkIGxhbmd1YWdlKVxuICogLSByZWxldmFuY2UgKGludClcbiAqIC0gdmFsdWUgKGFuIEhUTUwgc3RyaW5nIHdpdGggaGlnaGxpZ2h0aW5nIG1hcmt1cClcbiAqIC0gc2Vjb25kQmVzdCAob2JqZWN0IHdpdGggdGhlIHNhbWUgc3RydWN0dXJlIGZvclxuICogICBzZWNvbmQtYmVzdCBoZXVyaXN0aWNhbGx5IGRldGVjdGVkIGxhbmd1YWdlLCBtYXlcbiAqICAgYmUgYWJzZW50KSAqL1xuZnVuY3Rpb24gYXV0b0hpZ2hsaWdodCh2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgcHJlZml4ID0gc2V0dGluZ3MucHJlZml4O1xuICB2YXIgc3Vic2V0ID0gc2V0dGluZ3Muc3Vic2V0IHx8IGxhbmd1YWdlTmFtZXM7XG4gIHZhciBsZW5ndGggPSBzdWJzZXQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIHJlc3VsdDtcbiAgdmFyIHNlY29uZEJlc3Q7XG4gIHZhciBjdXJyZW50O1xuICB2YXIgbmFtZTtcblxuICBpZiAocHJlZml4ID09PSBudWxsIHx8IHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcHJlZml4ID0gREVGQVVMVF9QUkVGSVg7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYHN0cmluZ2AgZm9yIHZhbHVlLCBnb3QgYCcgKyB2YWx1ZSArICdgJyk7XG4gIH1cblxuICBzZWNvbmRCZXN0ID0gbm9ybWFsaXplKHt9KTtcbiAgcmVzdWx0ID0gbm9ybWFsaXplKHt9KTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIG5hbWUgPSBzdWJzZXRbaW5kZXhdO1xuXG4gICAgaWYgKCFnZXRMYW5ndWFnZShuYW1lKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY3VycmVudCA9IG5vcm1hbGl6ZShjb3JlSGlnaGxpZ2h0KG5hbWUsIHZhbHVlLCBmYWxzZSwgcHJlZml4KSk7XG5cbiAgICBjdXJyZW50Lmxhbmd1YWdlID0gbmFtZTtcblxuICAgIGlmIChjdXJyZW50LnJlbGV2YW5jZSA+IHNlY29uZEJlc3QucmVsZXZhbmNlKSB7XG4gICAgICBzZWNvbmRCZXN0ID0gY3VycmVudDtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudC5yZWxldmFuY2UgPiByZXN1bHQucmVsZXZhbmNlKSB7XG4gICAgICBzZWNvbmRCZXN0ID0gcmVzdWx0O1xuICAgICAgcmVzdWx0ID0gY3VycmVudDtcbiAgICB9XG4gIH1cblxuICBpZiAoc2Vjb25kQmVzdC5sYW5ndWFnZSkge1xuICAgIHJlc3VsdC5zZWNvbmRCZXN0ID0gc2Vjb25kQmVzdDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qIEhpZ2hsaWdodGluZyBgdmFsdWVgIGluIHRoZSBsYW5ndWFnZSBgbGFuZ3VhZ2VgLiAqL1xuZnVuY3Rpb24gaGlnaGxpZ2h0KGxhbmd1YWdlLCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgcHJlZml4ID0gc2V0dGluZ3MucHJlZml4O1xuXG4gIGlmIChwcmVmaXggPT09IG51bGwgfHwgcHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICBwcmVmaXggPSBERUZBVUxUX1BSRUZJWDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemUoY29yZUhpZ2hsaWdodChsYW5ndWFnZSwgdmFsdWUsIHRydWUsIHByZWZpeCkpO1xufVxuXG4vKiBSZWdpc3RlciBhIGxhbmd1YWdlLiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJMYW5ndWFnZShuYW1lLCBzeW50YXgpIHtcbiAgdmFyIGxhbmcgPSBsYW5ndWFnZXNbbmFtZV0gPSBzeW50YXgobG93KTtcbiAgdmFyIHZhbHVlcyA9IGxhbmcuYWxpYXNlcztcbiAgdmFyIGxlbmd0aCA9IHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAtMTtcblxuICBsYW5ndWFnZU5hbWVzLnB1c2gobmFtZSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhbGlhc2VzW3ZhbHVlc1tpbmRleF1dID0gbmFtZTtcbiAgfVxufVxuXG4vKiBDb3JlIGhpZ2hsaWdodGluZyBmdW5jdGlvbi4gIEFjY2VwdHMgYSBsYW5ndWFnZSBuYW1lLCBvclxuICogYW4gYWxpYXMsIGFuZCBhIHN0cmluZyB3aXRoIHRoZSBjb2RlIHRvIGhpZ2hsaWdodC5cbiAqIFJldHVybnMgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOiAqL1xuZnVuY3Rpb24gY29yZUhpZ2hsaWdodChuYW1lLCB2YWx1ZSwgaWdub3JlLCBwcmVmaXgsIGNvbnRpbnVhdGlvbikge1xuICB2YXIgY29udGludWF0aW9ucyA9IHt9O1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIG1vZGVCdWZmZXIgPSBFTVBUWTtcbiAgdmFyIHJlbGV2YW5jZSA9IDA7XG4gIHZhciBsYW5ndWFnZTtcbiAgdmFyIHRvcDtcbiAgdmFyIGN1cnJlbnQ7XG4gIHZhciBjdXJyZW50Q2hpbGRyZW47XG4gIHZhciBvZmZzZXQ7XG4gIHZhciBjb3VudDtcbiAgdmFyIG1hdGNoO1xuICB2YXIgY2hpbGRyZW47XG5cbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYHN0cmluZ2AgZm9yIG5hbWUsIGdvdCBgJyArIG5hbWUgKyAnYCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGBzdHJpbmdgIGZvciB2YWx1ZSwgZ290IGAnICsgdmFsdWUgKyAnYCcpO1xuICB9XG5cbiAgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZShuYW1lKTtcbiAgY3VycmVudCA9IHRvcCA9IGNvbnRpbnVhdGlvbiB8fCBsYW5ndWFnZTtcbiAgY3VycmVudENoaWxkcmVuID0gY2hpbGRyZW4gPSBbXTtcblxuICBpZiAoIWxhbmd1YWdlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxhbmd1YWdlOiBgJyArIG5hbWUgKyAnYCBpcyBub3QgcmVnaXN0ZXJlZCcpO1xuICB9XG5cbiAgY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKTtcblxuICB0cnkge1xuICAgIG9mZnNldCA9IHRvcC50ZXJtaW5hdG9ycy5sYXN0SW5kZXggPSAwO1xuICAgIG1hdGNoID0gdG9wLnRlcm1pbmF0b3JzLmV4ZWModmFsdWUpO1xuXG4gICAgd2hpbGUgKG1hdGNoKSB7XG4gICAgICBjb3VudCA9IHByb2Nlc3NMZXhlbWUodmFsdWUuc3Vic3RyaW5nKG9mZnNldCwgbWF0Y2guaW5kZXgpLCBtYXRjaFswXSk7XG4gICAgICBvZmZzZXQgPSB0b3AudGVybWluYXRvcnMubGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBjb3VudDtcbiAgICAgIG1hdGNoID0gdG9wLnRlcm1pbmF0b3JzLmV4ZWModmFsdWUpO1xuICAgIH1cblxuICAgIHByb2Nlc3NMZXhlbWUodmFsdWUuc3Vic3RyKG9mZnNldCkpO1xuICAgIGN1cnJlbnQgPSB0b3A7XG5cbiAgICB3aGlsZSAoY3VycmVudC5wYXJlbnQpIHtcbiAgICAgIGlmIChjdXJyZW50LmNsYXNzTmFtZSkge1xuICAgICAgICBwb3AoKTtcbiAgICAgIH1cblxuICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZWxldmFuY2U6IHJlbGV2YW5jZSxcbiAgICAgIHZhbHVlOiBjdXJyZW50Q2hpbGRyZW4sXG4gICAgICBsYW5ndWFnZTogbmFtZSxcbiAgICAgIHRvcDogdG9wXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gQ2F0Y2gtYWxsICAqL1xuICAgIGlmIChlcnIubWVzc2FnZS5pbmRleE9mKCdJbGxlZ2FsJykgPT09IC0xKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtyZWxldmFuY2U6IDAsIHZhbHVlOiBhZGRUZXh0KHZhbHVlLCBbXSl9O1xuICB9XG5cbiAgLyogUHJvY2VzcyBhIGxleGVtZS4gIFJldHVybnMgbmV4dCBwb3NpdGlvbi4gKi9cbiAgZnVuY3Rpb24gcHJvY2Vzc0xleGVtZShidWZmZXIsIGxleGVtZSkge1xuICAgIHZhciBuZXdNb2RlO1xuICAgIHZhciBlbmRNb2RlO1xuICAgIHZhciBvcmlnaW47XG5cbiAgICBtb2RlQnVmZmVyICs9IGJ1ZmZlcjtcblxuICAgIGlmIChsZXhlbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkU2libGluZ3MocHJvY2Vzc0J1ZmZlcigpLCBjdXJyZW50Q2hpbGRyZW4pO1xuXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBuZXdNb2RlID0gc3ViTW9kZShsZXhlbWUsIHRvcCk7XG5cbiAgICBpZiAobmV3TW9kZSkge1xuICAgICAgYWRkU2libGluZ3MocHJvY2Vzc0J1ZmZlcigpLCBjdXJyZW50Q2hpbGRyZW4pO1xuXG4gICAgICBzdGFydE5ld01vZGUobmV3TW9kZSwgbGV4ZW1lKTtcblxuICAgICAgcmV0dXJuIG5ld01vZGUucmV0dXJuQmVnaW4gPyAwIDogbGV4ZW1lLmxlbmd0aDtcbiAgICB9XG5cbiAgICBlbmRNb2RlID0gZW5kT2ZNb2RlKHRvcCwgbGV4ZW1lKTtcblxuICAgIGlmIChlbmRNb2RlKSB7XG4gICAgICBvcmlnaW4gPSB0b3A7XG5cbiAgICAgIGlmICghKG9yaWdpbi5yZXR1cm5FbmQgfHwgb3JpZ2luLmV4Y2x1ZGVFbmQpKSB7XG4gICAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgfVxuXG4gICAgICBhZGRTaWJsaW5ncyhwcm9jZXNzQnVmZmVyKCksIGN1cnJlbnRDaGlsZHJlbik7XG5cbiAgICAgIC8qIENsb3NlIG9wZW4gbW9kZXMuICovXG4gICAgICBkbyB7XG4gICAgICAgIGlmICh0b3AuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgcG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZWxldmFuY2UgKz0gdG9wLnJlbGV2YW5jZTtcbiAgICAgICAgdG9wID0gdG9wLnBhcmVudDtcbiAgICAgIH0gd2hpbGUgKHRvcCAhPT0gZW5kTW9kZS5wYXJlbnQpO1xuXG4gICAgICBpZiAob3JpZ2luLmV4Y2x1ZGVFbmQpIHtcbiAgICAgICAgYWRkVGV4dChsZXhlbWUsIGN1cnJlbnRDaGlsZHJlbik7XG4gICAgICB9XG5cbiAgICAgIG1vZGVCdWZmZXIgPSBFTVBUWTtcblxuICAgICAgaWYgKGVuZE1vZGUuc3RhcnRzKSB7XG4gICAgICAgIHN0YXJ0TmV3TW9kZShlbmRNb2RlLnN0YXJ0cywgRU1QVFkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luLnJldHVybkVuZCA/IDAgOiBsZXhlbWUubGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChpc0lsbGVnYWwobGV4ZW1lLCB0b3ApKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJbGxlZ2FsIGxleGVtZSBcIicgKyBsZXhlbWUgKyAnXCIgZm9yIG1vZGUgXCInICtcbiAgICAgICAgKHRvcC5jbGFzc05hbWUgfHwgJzx1bm5hbWVkPicpICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiBQYXJzZXIgc2hvdWxkIG5vdCByZWFjaCB0aGlzIHBvaW50IGFzIGFsbFxuICAgICAqIHR5cGVzIG9mIGxleGVtZXMgc2hvdWxkIGJlIGNhdWdodCBlYXJsaWVyLFxuICAgICAqIGJ1dCBpZiBpdCBkb2VzIGR1ZSB0byBzb21lIGJ1ZyBtYWtlIHN1cmUgaXRcbiAgICAgKiBhZHZhbmNlcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGZvcndhcmQgdG9cbiAgICAgKiBwcmV2ZW50IGluZmluaXRlIGxvb3BpbmcuICovXG4gICAgbW9kZUJ1ZmZlciArPSBsZXhlbWU7XG5cbiAgICByZXR1cm4gbGV4ZW1lLmxlbmd0aCB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyAxO1xuICB9XG5cbiAgLyogU3RhcnQgYSBuZXcgbW9kZSB3aXRoIGEgYGxleGVtZWAgdG8gcHJvY2Vzcy4gKi9cbiAgZnVuY3Rpb24gc3RhcnROZXdNb2RlKG1vZGUsIGxleGVtZSkge1xuICAgIHZhciBub2RlO1xuXG4gICAgaWYgKG1vZGUuY2xhc3NOYW1lKSB7XG4gICAgICBub2RlID0gYnVpbGQobW9kZS5jbGFzc05hbWUsIFtdKTtcbiAgICB9XG5cbiAgICBpZiAobW9kZS5yZXR1cm5CZWdpbikge1xuICAgICAgbW9kZUJ1ZmZlciA9IEVNUFRZO1xuICAgIH0gZWxzZSBpZiAobW9kZS5leGNsdWRlQmVnaW4pIHtcbiAgICAgIGFkZFRleHQobGV4ZW1lLCBjdXJyZW50Q2hpbGRyZW4pO1xuXG4gICAgICBtb2RlQnVmZmVyID0gRU1QVFk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1vZGVCdWZmZXIgPSBsZXhlbWU7XG4gICAgfVxuXG4gICAgLyogRW50ZXIgYSBuZXcgbW9kZS4gKi9cbiAgICBpZiAobm9kZSkge1xuICAgICAgY3VycmVudENoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICBzdGFjay5wdXNoKGN1cnJlbnRDaGlsZHJlbik7XG4gICAgICBjdXJyZW50Q2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuICAgIH1cblxuICAgIHRvcCA9IE9iamVjdC5jcmVhdGUobW9kZSwge3BhcmVudDoge3ZhbHVlOiB0b3B9fSk7XG4gIH1cblxuICAvKiBQcm9jZXNzIHRoZSBidWZmZXIuICovXG4gIGZ1bmN0aW9uIHByb2Nlc3NCdWZmZXIoKSB7XG4gICAgdmFyIHJlc3VsdCA9IHRvcC5zdWJMYW5ndWFnZSA9PT0gdW5kZWZpbmVkID8gcHJvY2Vzc0tleXdvcmRzKCkgOiBwcm9jZXNzU3ViTGFuZ3VhZ2UoKTtcbiAgICBtb2RlQnVmZmVyID0gRU1QVFk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qIFByb2Nlc3MgYSBzdWJsYW5ndWFnZSAocmV0dXJucyBhIGxpc3Qgb2Ygbm9kZXMpLiAqL1xuICBmdW5jdGlvbiBwcm9jZXNzU3ViTGFuZ3VhZ2UoKSB7XG4gICAgdmFyIGV4cGxpY2l0ID0gdHlwZW9mIHRvcC5zdWJMYW5ndWFnZSA9PT0gJ3N0cmluZyc7XG4gICAgdmFyIHN1YnZhbHVlO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gc3VwcG9ydCBub24tbG9hZGVkIHN1Ymxhbmd1YWdlcyAqL1xuICAgIGlmIChleHBsaWNpdCAmJiAhbGFuZ3VhZ2VzW3RvcC5zdWJMYW5ndWFnZV0pIHtcbiAgICAgIHJldHVybiBhZGRUZXh0KG1vZGVCdWZmZXIsIFtdKTtcbiAgICB9XG5cbiAgICBpZiAoZXhwbGljaXQpIHtcbiAgICAgIHN1YnZhbHVlID0gY29yZUhpZ2hsaWdodChcbiAgICAgICAgdG9wLnN1Ykxhbmd1YWdlLFxuICAgICAgICBtb2RlQnVmZmVyLFxuICAgICAgICB0cnVlLFxuICAgICAgICBwcmVmaXgsXG4gICAgICAgIGNvbnRpbnVhdGlvbnNbdG9wLnN1Ykxhbmd1YWdlXVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3VidmFsdWUgPSBhdXRvSGlnaGxpZ2h0KG1vZGVCdWZmZXIsIHtcbiAgICAgICAgc3Vic2V0OiB0b3Auc3ViTGFuZ3VhZ2UubGVuZ3RoID8gdG9wLnN1Ykxhbmd1YWdlIDogdW5kZWZpbmVkLFxuICAgICAgICBwcmVmaXg6IHByZWZpeFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyogQ291bnRpbmcgZW1iZWRkZWQgbGFuZ3VhZ2Ugc2NvcmUgdG93YXJkcyB0aGVcbiAgICAgKiBob3N0IGxhbmd1YWdlIG1heSBiZSBkaXNhYmxlZCB3aXRoIHplcm9pbmcgdGhlXG4gICAgICogY29udGFpbmluZyBtb2RlIHJlbGV2YW5jZS4gIFVzZWNhc2UgaW4gcG9pbnQgaXNcbiAgICAgKiBNYXJrZG93biB0aGF0IGFsbG93cyBYTUwgZXZlcnl3aGVyZSBhbmQgbWFrZXNcbiAgICAgKiBldmVyeSBYTUwgc25pcHBldCB0byBoYXZlIGEgbXVjaCBsYXJnZXIgTWFya2Rvd25cbiAgICAgKiBzY29yZS4gKi9cbiAgICBpZiAodG9wLnJlbGV2YW5jZSA+IDApIHtcbiAgICAgIHJlbGV2YW5jZSArPSBzdWJ2YWx1ZS5yZWxldmFuY2U7XG4gICAgfVxuXG4gICAgaWYgKGV4cGxpY2l0KSB7XG4gICAgICBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0gPSBzdWJ2YWx1ZS50b3A7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtidWlsZChzdWJ2YWx1ZS5sYW5ndWFnZSwgc3VidmFsdWUudmFsdWUsIHRydWUpXTtcbiAgfVxuXG4gIC8qIFByb2Nlc3Mga2V5d29yZHMuIFJldHVybnMgbm9kZXMuICovXG4gIGZ1bmN0aW9uIHByb2Nlc3NLZXl3b3JkcygpIHtcbiAgICB2YXIgbm9kZXMgPSBbXTtcbiAgICB2YXIgbGFzdEluZGV4O1xuICAgIHZhciBrZXl3b3JkO1xuICAgIHZhciBub2RlO1xuICAgIHZhciBzdWJtYXRjaDtcblxuICAgIGlmICghdG9wLmtleXdvcmRzKSB7XG4gICAgICByZXR1cm4gYWRkVGV4dChtb2RlQnVmZmVyLCBub2Rlcyk7XG4gICAgfVxuXG4gICAgbGFzdEluZGV4ID0gMDtcblxuICAgIHRvcC5sZXhlbWVzUmUubGFzdEluZGV4ID0gMDtcblxuICAgIGtleXdvcmQgPSB0b3AubGV4ZW1lc1JlLmV4ZWMobW9kZUJ1ZmZlcik7XG5cbiAgICB3aGlsZSAoa2V5d29yZCkge1xuICAgICAgYWRkVGV4dChtb2RlQnVmZmVyLnN1YnN0cmluZyhsYXN0SW5kZXgsIGtleXdvcmQuaW5kZXgpLCBub2Rlcyk7XG5cbiAgICAgIHN1Ym1hdGNoID0ga2V5d29yZE1hdGNoKHRvcCwga2V5d29yZCk7XG5cbiAgICAgIGlmIChzdWJtYXRjaCkge1xuICAgICAgICByZWxldmFuY2UgKz0gc3VibWF0Y2hbMV07XG5cbiAgICAgICAgbm9kZSA9IGJ1aWxkKHN1Ym1hdGNoWzBdLCBbXSk7XG5cbiAgICAgICAgbm9kZXMucHVzaChub2RlKTtcblxuICAgICAgICBhZGRUZXh0KGtleXdvcmRbMF0sIG5vZGUuY2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkVGV4dChrZXl3b3JkWzBdLCBub2Rlcyk7XG4gICAgICB9XG5cbiAgICAgIGxhc3RJbmRleCA9IHRvcC5sZXhlbWVzUmUubGFzdEluZGV4O1xuICAgICAga2V5d29yZCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlQnVmZmVyKTtcbiAgICB9XG5cbiAgICBhZGRUZXh0KG1vZGVCdWZmZXIuc3Vic3RyKGxhc3RJbmRleCksIG5vZGVzKTtcblxuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIC8qIEFkZCBzaWJsaW5ncy4gKi9cbiAgZnVuY3Rpb24gYWRkU2libGluZ3Moc2libGluZ3MsIG5vZGVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IHNpYmxpbmdzLmxlbmd0aDtcbiAgICB2YXIgaW5kZXggPSAtMTtcbiAgICB2YXIgc2libGluZztcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBzaWJsaW5nID0gc2libGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAoc2libGluZy50eXBlID09PSBUX1RFWFQpIHtcbiAgICAgICAgYWRkVGV4dChzaWJsaW5nLnZhbHVlLCBub2Rlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2Rlcy5wdXNoKHNpYmxpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qIEFkZCBhIHRleHQuICovXG4gIGZ1bmN0aW9uIGFkZFRleHQodmFsdWUsIG5vZGVzKSB7XG4gICAgdmFyIHRhaWw7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRhaWwgPSBub2Rlc1tub2Rlcy5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKHRhaWwgJiYgdGFpbC50eXBlID09PSBUX1RFWFQpIHtcbiAgICAgICAgdGFpbC52YWx1ZSArPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVzLnB1c2goYnVpbGRUZXh0KHZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG5cbiAgLyogQnVpbGQgYSB0ZXh0LiAqL1xuICBmdW5jdGlvbiBidWlsZFRleHQodmFsdWUpIHtcbiAgICByZXR1cm4ge3R5cGU6IFRfVEVYVCwgdmFsdWU6IHZhbHVlfTtcbiAgfVxuXG4gIC8qIEJ1aWxkIGEgc3Bhbi4gKi9cbiAgZnVuY3Rpb24gYnVpbGQobmFtZSwgY29udGVudHMsIG5vUHJlZml4KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRfRUxFTUVOVCxcbiAgICAgIHRhZ05hbWU6IFRfU1BBTixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiBbKG5vUHJlZml4ID8gRU1QVFkgOiBwcmVmaXgpICsgbmFtZV1cbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogY29udGVudHNcbiAgICB9O1xuICB9XG5cbiAgLyogQ2hlY2sgaWYgdGhlIGZpcnN0IHdvcmQgaW4gYGtleXdvcmRzYCBpcyBhIGtleXdvcmQuICovXG4gIGZ1bmN0aW9uIGtleXdvcmRNYXRjaChtb2RlLCBrZXl3b3Jkcykge1xuICAgIHZhciBrZXl3b3JkID0ga2V5d29yZHNbMF07XG5cbiAgICBpZiAobGFuZ3VhZ2VbS0VZX0lOU0VOU0lUSVZFXSkge1xuICAgICAga2V5d29yZCA9IGtleXdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3duLmNhbGwobW9kZS5rZXl3b3Jkcywga2V5d29yZCkgJiYgbW9kZS5rZXl3b3Jkc1trZXl3b3JkXTtcbiAgfVxuXG4gIC8qIENoZWNrIGlmIGBsZXhlbWVgIGlzIGlsbGVnYWwgYWNjb3JkaW5nIHRvIGBtb2RlYC4gKi9cbiAgZnVuY3Rpb24gaXNJbGxlZ2FsKGxleGVtZSwgbW9kZSkge1xuICAgIHJldHVybiAhaWdub3JlICYmIHRlc3QobW9kZS5pbGxlZ2FsUmUsIGxleGVtZSk7XG4gIH1cblxuICAvKiBDaGVjayBpZiBgbGV4ZW1lYCBlbmRzIGBtb2RlYC4gKi9cbiAgZnVuY3Rpb24gZW5kT2ZNb2RlKG1vZGUsIGxleGVtZSkge1xuICAgIGlmICh0ZXN0KG1vZGUuZW5kUmUsIGxleGVtZSkpIHtcbiAgICAgIHdoaWxlIChtb2RlLmVuZHNQYXJlbnQgJiYgbW9kZS5wYXJlbnQpIHtcbiAgICAgICAgbW9kZSA9IG1vZGUucGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1vZGU7XG4gICAgfVxuXG4gICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQpIHtcbiAgICAgIHJldHVybiBlbmRPZk1vZGUobW9kZS5wYXJlbnQsIGxleGVtZSk7XG4gICAgfVxuICB9XG5cbiAgLyogQ2hlY2sgYSBzdWItbW9kZS4gKi9cbiAgZnVuY3Rpb24gc3ViTW9kZShsZXhlbWUsIG1vZGUpIHtcbiAgICB2YXIgdmFsdWVzID0gbW9kZS5jb250YWlucztcbiAgICB2YXIgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcbiAgICB2YXIgaW5kZXggPSAtMTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAodGVzdCh2YWx1ZXNbaW5kZXhdLmJlZ2luUmUsIGxleGVtZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlc1tpbmRleF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyogRXhpdCB0aGUgY3VycmVudCBjb250ZXh0LiAqL1xuICBmdW5jdGlvbiBwb3AoKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgLSByZW1vdmVkIGluIGhsanMgOS4zICovXG4gICAgY3VycmVudENoaWxkcmVuID0gc3RhY2sucG9wKCkgfHwgY2hpbGRyZW47XG4gIH1cbn1cblxuZnVuY3Rpb24gZXhwYW5kTW9kZShtb2RlKSB7XG4gIGlmIChtb2RlLnZhcmlhbnRzICYmICFtb2RlW0tFWV9DQUNIRURfVkFSSUFOVFNdKSB7XG4gICAgbW9kZVtLRVlfQ0FDSEVEX1ZBUklBTlRTXSA9IG1vZGUudmFyaWFudHMubWFwKGZ1bmN0aW9uICh2YXJpYW50KSB7XG4gICAgICByZXR1cm4gaW5oZXJpdChtb2RlLCB7dmFyaWFudHM6IG51bGx9LCB2YXJpYW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtb2RlW0tFWV9DQUNIRURfVkFSSUFOVFNdIHx8IChtb2RlLmVuZHNXaXRoUGFyZW50ICYmIFtpbmhlcml0KG1vZGUpXSkgfHwgW21vZGVdO1xufVxuXG4vKiBDb21waWxlIGEgbGFuZ3VhZ2UuICovXG5mdW5jdGlvbiBjb21waWxlTGFuZ3VhZ2UobGFuZ3VhZ2UpIHtcbiAgY29tcGlsZU1vZGUobGFuZ3VhZ2UpO1xuXG4gIC8qIENvbXBpbGUgYSBsYW5ndWFnZSBtb2RlLCBvcHRpb25hbGx5IHdpdGggYSBwYXJlbnQuICovXG4gIGZ1bmN0aW9uIGNvbXBpbGVNb2RlKG1vZGUsIHBhcmVudCkge1xuICAgIHZhciBjb21waWxlZEtleXdvcmRzID0ge307XG4gICAgdmFyIHRlcm1pbmF0b3JzO1xuXG4gICAgaWYgKG1vZGUuY29tcGlsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBtb2RlLmNvbXBpbGVkID0gdHJ1ZTtcblxuICAgIG1vZGUua2V5d29yZHMgPSBtb2RlLmtleXdvcmRzIHx8IG1vZGUuYmVnaW5LZXl3b3JkcztcblxuICAgIGlmIChtb2RlLmtleXdvcmRzKSB7XG4gICAgICBpZiAodHlwZW9mIG1vZGUua2V5d29yZHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGZsYXR0ZW4oJ2tleXdvcmQnLCBtb2RlLmtleXdvcmRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG1vZGUua2V5d29yZHMpLmZvckVhY2goZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuICAgICAgICAgIGZsYXR0ZW4oY2xhc3NOYW1lLCBtb2RlLmtleXdvcmRzW2NsYXNzTmFtZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgbW9kZS5rZXl3b3JkcyA9IGNvbXBpbGVkS2V5d29yZHM7XG4gICAgfVxuXG4gICAgbW9kZS5sZXhlbWVzUmUgPSBsYW5nUmUobW9kZS5sZXhlbWVzIHx8IC9cXHcrLywgdHJ1ZSk7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBpZiAobW9kZS5iZWdpbktleXdvcmRzKSB7XG4gICAgICAgIG1vZGUuYmVnaW4gPSAnXFxcXGIoJyArIG1vZGUuYmVnaW5LZXl3b3Jkcy5zcGxpdChDX1NQQUNFKS5qb2luKENfUElQRSkgKyAnKVxcXFxiJztcbiAgICAgIH1cblxuICAgICAgaWYgKCFtb2RlLmJlZ2luKSB7XG4gICAgICAgIG1vZGUuYmVnaW4gPSAvXFxCfFxcYi87XG4gICAgICB9XG5cbiAgICAgIG1vZGUuYmVnaW5SZSA9IGxhbmdSZShtb2RlLmJlZ2luKTtcblxuICAgICAgaWYgKCFtb2RlLmVuZCAmJiAhbW9kZS5lbmRzV2l0aFBhcmVudCkge1xuICAgICAgICBtb2RlLmVuZCA9IC9cXEJ8XFxiLztcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUuZW5kKSB7XG4gICAgICAgIG1vZGUuZW5kUmUgPSBsYW5nUmUobW9kZS5lbmQpO1xuICAgICAgfVxuXG4gICAgICBtb2RlLnRlcm1pbmF0b3JFbmQgPSBzb3VyY2UobW9kZS5lbmQpIHx8IEVNUFRZO1xuXG4gICAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCAmJiBwYXJlbnQudGVybWluYXRvckVuZCkge1xuICAgICAgICBtb2RlLnRlcm1pbmF0b3JFbmQgKz0gKG1vZGUuZW5kID8gQ19QSVBFIDogRU1QVFkpICsgcGFyZW50LnRlcm1pbmF0b3JFbmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUuaWxsZWdhbCkge1xuICAgICAgbW9kZS5pbGxlZ2FsUmUgPSBsYW5nUmUobW9kZS5pbGxlZ2FsKTtcbiAgICB9XG5cbiAgICBpZiAobW9kZS5yZWxldmFuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZS5yZWxldmFuY2UgPSAxO1xuICAgIH1cblxuICAgIGlmICghbW9kZS5jb250YWlucykge1xuICAgICAgbW9kZS5jb250YWlucyA9IFtdO1xuICAgIH1cblxuICAgIG1vZGUuY29udGFpbnMgPSBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBtb2RlLmNvbnRhaW5zLm1hcChmdW5jdGlvbiAoYykge1xuICAgICAgcmV0dXJuIGV4cGFuZE1vZGUoYyA9PT0gJ3NlbGYnID8gbW9kZSA6IGMpO1xuICAgIH0pKTtcblxuICAgIG1vZGUuY29udGFpbnMuZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgY29tcGlsZU1vZGUoYywgbW9kZSk7XG4gICAgfSk7XG5cbiAgICBpZiAobW9kZS5zdGFydHMpIHtcbiAgICAgIGNvbXBpbGVNb2RlKG1vZGUuc3RhcnRzLCBwYXJlbnQpO1xuICAgIH1cblxuICAgIHRlcm1pbmF0b3JzID1cbiAgICAgIG1vZGUuY29udGFpbnMubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIHJldHVybiBjLmJlZ2luS2V5d29yZHMgPyAnXFxcXC4/KCcgKyBjLmJlZ2luICsgJylcXFxcLj8nIDogYy5iZWdpbjtcbiAgICAgIH0pXG4gICAgICAuY29uY2F0KFttb2RlLnRlcm1pbmF0b3JFbmQsIG1vZGUuaWxsZWdhbF0pXG4gICAgICAubWFwKHNvdXJjZSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBtb2RlLnRlcm1pbmF0b3JzID0gdGVybWluYXRvcnMubGVuZ3RoID9cbiAgICAgIGxhbmdSZSh0ZXJtaW5hdG9ycy5qb2luKENfUElQRSksIHRydWUpIDpcbiAgICAgIHtleGVjOiBleGVjTm9vcH07XG5cbiAgICAvKiBGbGF0dGVuIGEgY2xhc3NuYW1lLiAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW4oY2xhc3NOYW1lLCB2YWx1ZSkge1xuICAgICAgdmFyIHBhaXJzO1xuICAgICAgdmFyIHBhaXI7XG4gICAgICB2YXIgaW5kZXg7XG4gICAgICB2YXIgbGVuZ3RoO1xuXG4gICAgICBpZiAobGFuZ3VhZ2VbS0VZX0lOU0VOU0lUSVZFXSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG5cbiAgICAgIHBhaXJzID0gdmFsdWUuc3BsaXQoQ19TUEFDRSk7XG4gICAgICBsZW5ndGggPSBwYWlycy5sZW5ndGg7XG4gICAgICBpbmRleCA9IC0xO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBwYWlyID0gcGFpcnNbaW5kZXhdLnNwbGl0KENfUElQRSk7XG5cbiAgICAgICAgY29tcGlsZWRLZXl3b3Jkc1twYWlyWzBdXSA9IFtcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgcGFpclsxXSA/IE51bWJlcihwYWlyWzFdKSA6IDFcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiBDcmVhdGUgYSByZWdleCBmb3IgYHZhbHVlYC4gKi9cbiAgZnVuY3Rpb24gbGFuZ1JlKHZhbHVlLCBnbG9iYWwpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChcbiAgICAgIHNvdXJjZSh2YWx1ZSksXG4gICAgICAnbScgKyAobGFuZ3VhZ2VbS0VZX0lOU0VOU0lUSVZFXSA/ICdpJyA6ICcnKSArXG4gICAgICAoZ2xvYmFsID8gJ2cnIDogJycpXG4gICAgKTtcbiAgfVxuXG4gIC8qIEdldCB0aGUgc291cmNlIG9mIGFuIGV4cHJlc3Npb24gb3Igc3RyaW5nLiAqL1xuICBmdW5jdGlvbiBzb3VyY2UocmUpIHtcbiAgICByZXR1cm4gKHJlICYmIHJlLnNvdXJjZSkgfHwgcmU7XG4gIH1cbn1cblxuLyogTm9ybWFsaXplIGEgc3ludGF4IHJlc3VsdC4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZShyZXN1bHQpIHtcbiAgcmV0dXJuIHtcbiAgICByZWxldmFuY2U6IHJlc3VsdC5yZWxldmFuY2UgfHwgMCxcbiAgICBsYW5ndWFnZTogcmVzdWx0Lmxhbmd1YWdlIHx8IG51bGwsXG4gICAgdmFsdWU6IHJlc3VsdC52YWx1ZSB8fCBbXVxuICB9O1xufVxuXG4vKiBDaGVjayBpZiBgZXhwcmVzc2lvbmAgbWF0Y2hlcyBgbGV4ZW1lYC4gKi9cbmZ1bmN0aW9uIHRlc3QoZXhwcmVzc2lvbiwgbGV4ZW1lKSB7XG4gIHZhciBtYXRjaCA9IGV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi5leGVjKGxleGVtZSk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaC5pbmRleCA9PT0gMDtcbn1cblxuLyogTm8tb3AgZXhlYy4gKi9cbmZ1bmN0aW9uIGV4ZWNOb29wKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuLyogR2V0IGEgbGFuZ3VhZ2UgYnkgYG5hbWVgLiAqL1xuZnVuY3Rpb24gZ2V0TGFuZ3VhZ2UobmFtZSkge1xuICBuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIHJldHVybiBsYW5ndWFnZXNbbmFtZV0gfHwgbGFuZ3VhZ2VzW2FsaWFzZXNbbmFtZV1dO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKXtcblxuICAvLyDQvtCx0YnQuNC5INC/0LDRgtGC0LXRgNC9INC00LvRjyDQvtC/0YDQtdC00LXQu9C10L3QuNGPINC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0L7QslxuICB2YXIgVU5ERVJTQ09SRV9JREVOVF9SRSA9ICdbQS1aYS160JAt0K/QsC3Rj9GR0IFfXVtBLVphLXrQkC3Qr9CwLdGP0ZHQgV8wLTldKyc7XG4gIFxuICAvLyB2NyDRg9C90LjQutCw0LvRjNC90YvQtSDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAsINC+0YLRgdGD0YLRgdGC0LLRg9GO0YnQuNC1INCyIHY4ID09PiBrZXl3b3JkXG4gIHZhciB2N19rZXl3b3JkcyA9XG4gICfQtNCw0LvQtdC1ICc7XG5cbiAgLy8gdjgg0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwID09PiBrZXl3b3JkXG4gIHZhciB2OF9rZXl3b3JkcyA9XG4gICfQstC+0LfQstGA0LDRgiDQstGL0LfQstCw0YLRjNC40YHQutC70Y7Rh9C10L3QuNC1INCy0YvQv9C+0LvQvdC40YLRjCDQtNC70Y8g0LXRgdC70Lgg0Lgg0LjQtyDQuNC70Lgg0LjQvdCw0YfQtSDQuNC90LDRh9C10LXRgdC70Lgg0LjRgdC60LvRjtGH0LXQvdC40LUg0LrQsNC20LTQvtCz0L4g0LrQvtC90LXRhtC10YHQu9C4ICcgK1xuICAn0LrQvtC90LXRhtC/0L7Qv9GL0YLQutC4INC60L7QvdC10YbRhtC40LrQu9CwINC90LUg0L3QvtCy0YvQuSDQv9C10YDQtdC50YLQuCDQv9C10YDQtdC8INC/0L4g0L/QvtC60LAg0L/QvtC/0YvRgtC60LAg0L/RgNC10YDQstCw0YLRjCDQv9GA0L7QtNC+0LvQttC40YLRjCDRgtC+0LPQtNCwINGG0LjQutC7INGN0LrRgdC/0L7RgNGCICc7XG5cbiAgLy8ga2V5d29yZCA6INC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsFxuICB2YXIgS0VZV09SRCA9IHY3X2tleXdvcmRzICsgdjhfa2V5d29yZHM7XG4gIFxuICAvLyB2NyDRg9C90LjQutCw0LvRjNC90YvQtSDQtNC40YDQtdC60YLQuNCy0YssINC+0YLRgdGD0YLRgdGC0LLRg9GO0YnQuNC1INCyIHY4ID09PiBtZXRhLWtleXdvcmRcbiAgdmFyIHY3X21ldGFfa2V5d29yZHMgPVxuICAn0LfQsNCz0YDRg9C30LjRgtGM0LjQt9GE0LDQudC70LAgJztcblxuICAvLyB2OCDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAg0LIg0LjQvdGB0YLRgNGD0LrRhtC40Y/RhSDQv9GA0LXQv9GA0L7RhtC10YHRgdC+0YDQsCwg0LTQuNGA0LXQutGC0LjQstCw0YUg0LrQvtC80L/QuNC70Y/RhtC40LgsINCw0L3QvdC+0YLQsNGG0LjRj9GFID09PiBtZXRhLWtleXdvcmRcbiAgdmFyIHY4X21ldGFfa2V5d29yZHMgPVxuICAn0LLQtdCx0LrQu9C40LXQvdGCINCy0LzQtdGB0YLQviDQstC90LXRiNC90LXQtdGB0L7QtdC00LjQvdC10L3QuNC1INC60LvQuNC10L3RgiDQutC+0L3QtdGG0L7QsdC70LDRgdGC0Lgg0LzQvtCx0LjQu9GM0L3QvtC10L/RgNC40LvQvtC20LXQvdC40LXQutC70LjQtdC90YIg0LzQvtCx0LjQu9GM0L3QvtC10L/RgNC40LvQvtC20LXQvdC40LXRgdC10YDQstC10YAgJyArXG4gICfQvdCw0LrQu9C40LXQvdGC0LUg0L3QsNC60LvQuNC10L3RgtC10L3QsNGB0LXRgNCy0LXRgNC1INC90LDQutC70LjQtdC90YLQtdC90LDRgdC10YDQstC10YDQtdCx0LXQt9C60L7QvdGC0LXQutGB0YLQsCDQvdCw0YHQtdGA0LLQtdGA0LUg0L3QsNGB0LXRgNCy0LXRgNC10LHQtdC30LrQvtC90YLQtdC60YHRgtCwINC+0LHQu9Cw0YHRgtGMINC/0LXRgNC10LQgJyArXG4gICfQv9C+0YHQu9C1INGB0LXRgNCy0LXRgCDRgtC+0LvRgdGC0YvQudC60LvQuNC10L3RgtC+0LHRi9GH0L3QvtC10L/RgNC40LvQvtC20LXQvdC40LUg0YLQvtC70YHRgtGL0LnQutC70LjQtdC90YLRg9C/0YDQsNCy0LvRj9C10LzQvtC10L/RgNC40LvQvtC20LXQvdC40LUg0YLQvtC90LrQuNC50LrQu9C40LXQvdGCICc7XG5cbiAgLy8gbWV0YS1rZXl3b3JkIDog0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwINCyINC40L3RgdGC0YDRg9C60YbQuNGP0YUg0L/RgNC10L/RgNC+0YbQtdGB0YHQvtGA0LAsINC00LjRgNC10LrRgtC40LLQsNGFINC60L7QvNC/0LjQu9GP0YbQuNC4LCDQsNC90L3QvtGC0LDRhtC40Y/RhVxuICB2YXIgTUVUQUtFWVdPUkQgPSB2N19tZXRhX2tleXdvcmRzICsgdjhfbWV0YV9rZXl3b3JkcztcblxuICAvLyB2NyDRgdC40YHRgtC10LzQvdGL0LUg0LrQvtC90YHRgtCw0L3RgtGLID09PiBidWlsdF9pblxuICB2YXIgdjdfc3lzdGVtX2NvbnN0YW50cyA9XG4gICfRgNCw0LfQtNC10LvQuNGC0LXQu9GM0YHRgtGA0LDQvdC40YYg0YDQsNC30LTQtdC70LjRgtC10LvRjNGB0YLRgNC+0Log0YHQuNC80LLQvtC70YLQsNCx0YPQu9GP0YbQuNC4ICc7XG4gIFxuICAvLyB2NyDRg9C90LjQutCw0LvRjNC90YvQtSDQvNC10YLQvtC00Ysg0LPQu9C+0LHQsNC70YzQvdC+0LPQviDQutC+0L3RgtC10LrRgdGC0LAsINC+0YLRgdGD0YLRgdGC0LLRg9GO0YnQuNC1INCyIHY4ID09PiBidWlsdF9pblxuICB2YXIgdjdfZ2xvYmFsX2NvbnRleHRfbWV0aG9kcyA9XG4gICdhbnNpdG9vZW0gb2VtdG9hbnNpINCy0LLQtdGB0YLQuNCy0LjQtNGB0YPQsdC60L7QvdGC0L4g0LLQstC10YHRgtC40L/QtdGA0LXRh9C40YHQu9C10L3QuNC1INCy0LLQtdGB0YLQuNC/0LXRgNC40L7QtCDQstCy0LXRgdGC0LjQv9C70LDQvdGB0YfQtdGC0L7QsiDQstGL0LHRgNCw0L3QvdGL0LnQv9C70LDQvdGB0YfQtdGC0L7QsiAnICtcbiAgJ9C00LDRgtCw0LPQvtC0INC00LDRgtCw0LzQtdGB0Y/RhiDQtNCw0YLQsNGH0LjRgdC70L4g0LfQsNCz0L7Qu9C+0LLQvtC60YHQuNGB0YLQtdC80Ysg0LfQvdCw0YfQtdC90LjQtdCy0YHRgtGA0L7QutGDINC30L3QsNGH0LXQvdC40LXQuNC30YHRgtGA0L7QutC4INC60LDRgtCw0LvQvtCz0LjQsSDQutCw0YLQsNC70L7Qs9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyAnICtcbiAgJ9C60L7QtNGB0LjQvNCyINC60L7QvdCz0L7QtNCwINC60L7QvdC10YbQv9C10YDQuNC+0LTQsNCx0Lgg0LrQvtC90LXRhtGA0LDRgdGB0YfQuNGC0LDQvdC90L7Qs9C+0L/QtdGA0LjQvtC00LDQsdC4INC60L7QvdC10YbRgdGC0LDQvdC00LDRgNGC0L3QvtCz0L7QuNC90YLQtdGA0LLQsNC70LAg0LrQvtC90LrQstCw0YDRgtCw0LvQsCDQutC+0L3QvNC10YHRj9GG0LAgJyArXG4gICfQutC+0L3QvdC10LTQtdC70Lgg0LvQvtCzINC70L7QszEwINC80LDQutGB0LjQvNCw0LvRjNC90L7QtdC60L7Qu9C40YfQtdGB0YLQstC+0YHRg9Cx0LrQvtC90YLQviDQvdCw0LfQstCw0L3QuNC10LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsNC30LLQsNC90LjQtdC90LDQsdC+0YDQsNC/0YDQsNCyINC90LDQt9C90LDRh9C40YLRjNCy0LjQtCAnICtcbiAgJ9C90LDQt9C90LDRh9C40YLRjNGB0YfQtdGCINC90LDQudGC0LjRgdGB0YvQu9C60Lgg0L3QsNGH0LDQu9C+0L/QtdGA0LjQvtC00LDQsdC4INC90LDRh9Cw0LvQvtGB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtC40L3RgtC10YDQstCw0LvQsCDQvdCw0YfQs9C+0LTQsCDQvdCw0YfQutCy0LDRgNGC0LDQu9CwINC90LDRh9C80LXRgdGP0YbQsCAnICtcbiAgJ9C90LDRh9C90LXQtNC10LvQuCDQvdC+0LzQtdGA0LTQvdGP0LPQvtC00LAg0L3QvtC80LXRgNC00L3Rj9C90LXQtNC10LvQuCDQvdC+0LzQtdGA0L3QtdC00LXQu9C40LPQvtC00LAg0L7QsdGA0LDQsdC+0YLQutCw0L7QttC40LTQsNC90LjRjyDQvtGB0L3QvtCy0L3QvtC50LbRg9GA0L3QsNC70YDQsNGB0YfQtdGC0L7QsiAnICtcbiAgJ9C+0YHQvdC+0LLQvdC+0LnQv9C70LDQvdGB0YfQtdGC0L7QsiDQvtGB0L3QvtCy0L3QvtC50Y/Qt9GL0Log0L7Rh9C40YHRgtC40YLRjNC+0LrQvdC+0YHQvtC+0LHRidC10L3QuNC5INC/0LXRgNC40L7QtNGB0YLRgCDQv9C+0LvRg9GH0LjRgtGM0LLRgNC10LzRj9GC0LAg0L/QvtC70YPRh9C40YLRjNC00LDRgtGD0YLQsCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQtNC+0LrRg9C80LXQvdGC0YLQsCDQv9C+0LvRg9GH0LjRgtGM0LfQvdCw0YfQtdC90LjRj9C+0YLQsdC+0YDQsCDQv9C+0LvRg9GH0LjRgtGM0L/QvtC30LjRhtC40Y7RgtCwINC/0L7Qu9GD0YfQuNGC0YzQv9GD0YHRgtC+0LXQt9C90LDRh9C10L3QuNC1INC/0L7Qu9GD0YfQuNGC0YzRgtCwICcgK1xuICAn0L/RgNC10YTQuNC60YHQsNCy0YLQvtC90YPQvNC10YDQsNGG0LjQuCDQv9GA0L7Qv9C40YHRjCDQv9GD0YHRgtC+0LXQt9C90LDRh9C10L3QuNC1INGA0LDQt9C8INGA0LDQt9C+0LHRgNCw0YLRjNC/0L7Qt9C40YbQuNGO0LTQvtC60YPQvNC10L3RgtCwINGA0LDRgdGB0YfQuNGC0LDRgtGM0YDQtdCz0LjRgdGC0YDRi9C90LAgJyArXG4gICfRgNCw0YHRgdGH0LjRgtCw0YLRjNGA0LXQs9C40YHRgtGA0YvQv9C+INGB0LjQvNCyINGB0L7Qt9C00LDRgtGM0L7QsdGK0LXQutGCINGB0YLQsNGC0YPRgdCy0L7Qt9Cy0YDQsNGC0LAg0YHRgtGA0LrQvtC70LjRh9C10YHRgtCy0L7RgdGC0YDQvtC6INGB0YTQvtGA0LzQuNGA0L7QstCw0YLRjNC/0L7Qt9C40YbQuNGO0LTQvtC60YPQvNC10L3RgtCwICcgK1xuICAn0YHRh9C10YLQv9C+0LrQvtC00YMg0YLQtdC60YPRidC10LXQstGA0LXQvNGPINGC0LjQv9C30L3QsNGH0LXQvdC40Y8g0YLQuNC/0LfQvdCw0YfQtdC90LjRj9GB0YLRgCDRg9GB0YLQsNC90L7QstC40YLRjNGC0LDQvdCwINGD0YHRgtCw0L3QvtCy0LjRgtGM0YLQsNC/0L4g0YTQuNC60YHRiNCw0LHQu9C+0L0g0YjQsNCx0LvQvtC9ICc7XG4gIFxuICAvLyB2OCDQvNC10YLQvtC00Ysg0LPQu9C+0LHQsNC70YzQvdC+0LPQviDQutC+0L3RgtC10LrRgdGC0LAgPT0+IGJ1aWx0X2luXG4gIHZhciB2OF9nbG9iYWxfY29udGV4dF9tZXRob2RzID1cbiAgJ2Fjb3MgYXNpbiBhdGFuIGJhc2U2NNC30L3QsNGH0LXQvdC40LUgYmFzZTY00YHRgtGA0L7QutCwIGNvcyBleHAgbG9nIGxvZzEwIHBvdyBzaW4gc3FydCB0YW4geG1s0LfQvdCw0YfQtdC90LjQtSB4bWzRgdGC0YDQvtC60LAgJyArXG4gICd4bWzRgtC40L8geG1s0YLQuNC/0LfQvdGHINCw0LrRgtC40LLQvdC+0LXQvtC60L3QviDQsdC10LfQvtC/0LDRgdC90YvQudGA0LXQttC40Lwg0LHQtdC30L7Qv9Cw0YHQvdGL0LnRgNC10LbQuNC80YDQsNC30LTQtdC70LXQvdC40Y/QtNCw0L3QvdGL0YUg0LHRg9C70LXQstC+INCy0LLQtdGB0YLQuNC00LDRgtGDINCy0LLQtdGB0YLQuNC30L3QsNGH0LXQvdC40LUgJyArXG4gICfQstCy0LXRgdGC0LjRgdGC0YDQvtC60YMg0LLQstC10YHRgtC40YfQuNGB0LvQviDQstC+0LfQvNC+0LbQvdC+0YHRgtGM0YfRgtC10L3QuNGPeG1sINCy0L7Qv9GA0L7RgSDQstC+0YHRgdGC0LDQvdC+0LLQuNGC0YzQt9C90LDRh9C10L3QuNC1INCy0YDQtdCzINCy0YvQs9GA0YPQt9C40YLRjNC20YPRgNC90LDQu9GA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfQstGL0L/QvtC70L3QuNGC0YzQvtCx0YDQsNCx0L7RgtC60YPQvtC/0L7QstC10YnQtdC90LjRjyDQstGL0L/QvtC70L3QuNGC0YzQv9GA0L7QstC10YDQutGD0L/RgNCw0LLQtNC+0YHRgtGD0L/QsCDQstGL0YfQuNGB0LvQuNGC0Ywg0LPQvtC0INC00LDQvdC90YvQtdGE0L7RgNC80YvQstC30L3QsNGH0LXQvdC40LUg0LTQsNGC0LAg0LTQtdC90Ywg0LTQtdC90YzQs9C+0LTQsCAnICtcbiAgJ9C00LXQvdGM0L3QtdC00LXQu9C4INC00L7QsdCw0LLQuNGC0YzQvNC10YHRj9GGINC30LDQsdC70L7QutC40YDQvtCy0LDRgtGM0LTQsNC90L3Ri9C10LTQu9GP0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDQt9Cw0LHQu9C+0LrQuNGA0L7QstCw0YLRjNGA0LDQsdC+0YLRg9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQt9Cw0LLQtdGA0YjQuNGC0YzRgNCw0LHQvtGC0YPRgdC40YHRgtC10LzRiyAnICtcbiAgJ9C30LDQs9GA0YPQt9C40YLRjNCy0L3QtdGI0L3RjtGO0LrQvtC80L/QvtC90LXQvdGC0YMg0LfQsNC60YDRi9GC0YzRgdC/0YDQsNCy0LrRgyDQt9Cw0L/QuNGB0LDRgtGManNvbiDQt9Cw0L/QuNGB0LDRgtGMeG1sINC30LDQv9C40YHQsNGC0YzQtNCw0YLRg2pzb24g0LfQsNC/0LjRgdGM0LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4ICcgK1xuICAn0LfQsNC/0L7Qu9C90LjRgtGM0LfQvdCw0YfQtdC90LjRj9GB0LLQvtC50YHRgtCyINC30LDQv9GA0L7RgdC40YLRjNGA0LDQt9GA0LXRiNC10L3QuNC10L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC30LDQv9GD0YHRgtC40YLRjNC/0YDQuNC70L7QttC10L3QuNC1INC30LDQv9GD0YHRgtC40YLRjNGB0LjRgdGC0LXQvNGDINC30LDRhNC40LrRgdC40YDQvtCy0LDRgtGM0YLRgNCw0L3Qt9Cw0LrRhtC40Y4gJyArXG4gICfQt9C90LDRh9C10L3QuNC10LLQtNCw0L3QvdGL0LXRhNC+0YDQvNGLINC30L3QsNGH0LXQvdC40LXQstGB0YLRgNC+0LrRg9Cy0L3Rg9GC0YAg0LfQvdCw0YfQtdC90LjQtdCy0YTQsNC50Lsg0LfQvdCw0YfQtdC90LjQtdC30LDQv9C+0LvQvdC10L3QviDQt9C90LDRh9C10L3QuNC10LjQt9GB0YLRgNC+0LrQuNCy0L3Rg9GC0YAg0LfQvdCw0YfQtdC90LjQtdC40LfRhNCw0LnQu9CwICcgK1xuICAn0LjQt3htbNGC0LjQv9CwINC40LzQv9C+0YDRgtC80L7QtNC10LvQuHhkdG8g0LjQvNGP0LrQvtC80L/RjNGO0YLQtdGA0LAg0LjQvNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC40L3QuNGG0LjQsNC70LjQt9C40YDQvtCy0LDRgtGM0L/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdGL0LXQtNCw0L3QvdGL0LUg0LjQvdGE0L7RgNC80LDRhtC40Y/QvtCx0L7RiNC40LHQutC1ICcgK1xuICAn0LrQsNGC0LDQu9C+0LPQsdC40LHQu9C40L7RgtC10LrQuNC80L7QsdC40LvRjNC90L7Qs9C+0YPRgdGC0YDQvtC50YHRgtCy0LAg0LrQsNGC0LDQu9C+0LPQstGA0LXQvNC10L3QvdGL0YXRhNCw0LnQu9C+0LIg0LrQsNGC0LDQu9C+0LPQtNC+0LrRg9C80LXQvdGC0L7QsiDQutCw0YLQsNC70L7Qs9C/0YDQvtCz0YDQsNC80LzRiyDQutC+0LTQuNGA0L7QstCw0YLRjNGB0YLRgNC+0LrRgyAnICtcbiAgJ9C60L7QtNC70L7QutCw0LvQuNC30LDRhtC40LjQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0LrQvtC00YHQuNC80LLQvtC70LAg0LrQvtC80LDQvdC00LDRgdC40YHRgtC10LzRiyDQutC+0L3QtdGG0LPQvtC00LAg0LrQvtC90LXRhtC00L3RjyDQutC+0L3QtdGG0LrQstCw0YDRgtCw0LvQsCDQutC+0L3QtdGG0LzQtdGB0Y/RhtCwINC60L7QvdC10YbQvNC40L3Rg9GC0YsgJyArXG4gICfQutC+0L3QtdGG0L3QtdC00LXQu9C4INC60L7QvdC10YbRh9Cw0YHQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/QsdCw0LfRi9C00LDQvdC90YvRhdC40LfQvNC10L3QtdC90LDQtNC40L3QsNC80LjRh9C10YHQutC4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9C40LfQvNC10L3QtdC90LAg0LrQvtC/0LjRgNC+0LLQsNGC0YzQtNCw0L3QvdGL0LXRhNC+0YDQvNGLICcgK1xuICAn0LrQvtC/0LjRgNC+0LLQsNGC0YzRhNCw0LnQuyDQutGA0LDRgtC60L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10L7RiNC40LHQutC4INC70LXQsiDQvNCw0LrRgSDQvNC10YHRgtC90L7QtdCy0YDQtdC80Y8g0LzQtdGB0Y/RhiDQvNC40L0g0LzQuNC90YPRgtCwINC80L7QvdC+0L/QvtC70YzQvdGL0LnRgNC10LbQuNC8INC90LDQudGC0LggJyArXG4gICfQvdCw0LnRgtC40L3QtdC00L7Qv9GD0YHRgtC40LzRi9C10YHQuNC80LLQvtC70Yt4bWwg0L3QsNC50YLQuNC+0LrQvdC+0L/QvtC90LDQstC40LPQsNGG0LjQvtC90L3QvtC50YHRgdGL0LvQutC1INC90LDQudGC0LjQv9C+0LzQtdGH0LXQvdC90YvQtdC90LDRg9C00LDQu9C10L3QuNC1INC90LDQudGC0LjQv9C+0YHRgdGL0LvQutCw0Lwg0L3QsNC50YLQuNGE0LDQudC70YsgJyArXG4gICfQvdCw0YfQsNC70L7Qs9C+0LTQsCDQvdCw0YfQsNC70L7QtNC90Y8g0L3QsNGH0LDQu9C+0LrQstCw0YDRgtCw0LvQsCDQvdCw0YfQsNC70L7QvNC10YHRj9GG0LAg0L3QsNGH0LDQu9C+0LzQuNC90YPRgtGLINC90LDRh9Cw0LvQvtC90LXQtNC10LvQuCDQvdCw0YfQsNC70L7Rh9Cw0YHQsCDQvdCw0YfQsNGC0YzQt9Cw0L/RgNC+0YHRgNCw0LfRgNC10YjQtdC90LjRj9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyAnICtcbiAgJ9C90LDRh9Cw0YLRjNC30LDQv9GD0YHQutC/0YDQuNC70L7QttC10L3QuNGPINC90LDRh9Cw0YLRjNC60L7Qv9C40YDQvtCy0LDQvdC40LXRhNCw0LnQu9CwINC90LDRh9Cw0YLRjNC/0LXRgNC10LzQtdGJ0LXQvdC40LXRhNCw0LnQu9CwINC90LDRh9Cw0YLRjNC/0L7QtNC60LvRjtGH0LXQvdC40LXQstC90LXRiNC90LXQudC60L7QvNC/0L7QvdC10L3RgtGLICcgK1xuICAn0L3QsNGH0LDRgtGM0L/QvtC00LrQu9GO0YfQtdC90LjQtdGA0LDRgdGI0LjRgNC10L3QuNGP0YDQsNCx0L7RgtGL0YHQutGA0LjQv9GC0L7Qs9GA0LDRhNC40LXQuSDQvdCw0YfQsNGC0YzQv9C+0LTQutC70Y7Rh9C10L3QuNC10YDQsNGB0YjQuNGA0LXQvdC40Y/RgNCw0LHQvtGC0YvRgdGE0LDQudC70LDQvNC4INC90LDRh9Cw0YLRjNC/0L7QuNGB0LrRhNCw0LnQu9C+0LIgJyArXG4gICfQvdCw0YfQsNGC0YzQv9C+0LvRg9GH0LXQvdC40LXQutCw0YLQsNC70L7Qs9Cw0LLRgNC10LzQtdC90L3Ri9GF0YTQsNC50LvQvtCyINC90LDRh9Cw0YLRjNC/0L7Qu9GD0YfQtdC90LjQtdC60LDRgtCw0LvQvtCz0LDQtNC+0LrRg9C80LXQvdGC0L7QsiDQvdCw0YfQsNGC0YzQv9C+0LvRg9GH0LXQvdC40LXRgNCw0LHQvtGH0LXQs9C+0LrQsNGC0LDQu9C+0LPQsNC00LDQvdC90YvRhdC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyAnICtcbiAgJ9C90LDRh9Cw0YLRjNC/0L7Qu9GD0YfQtdC90LjQtdGE0LDQudC70L7QsiDQvdCw0YfQsNGC0YzQv9C+0LzQtdGJ0LXQvdC40LXRhNCw0LnQu9CwINC90LDRh9Cw0YLRjNC/0L7QvNC10YnQtdC90LjQtdGE0LDQudC70L7QsiDQvdCw0YfQsNGC0YzRgdC+0LfQtNCw0L3QuNC10LTQstC+0LjRh9C90YvRhdC00LDQvdC90YvRhdC40LfRhNCw0LnQu9CwINC90LDRh9Cw0YLRjNGB0L7Qt9C00LDQvdC40LXQutCw0YLQsNC70L7Qs9CwICcgK1xuICAn0L3QsNGH0LDRgtGM0YLRgNCw0L3Qt9Cw0LrRhtC40Y4g0L3QsNGH0LDRgtGM0YPQtNCw0LvQtdC90LjQtdGE0LDQudC70L7QsiDQvdCw0YfQsNGC0YzRg9GB0YLQsNC90L7QstC60YPQstC90LXRiNC90LXQudC60L7QvNC/0L7QvdC10L3RgtGLINC90LDRh9Cw0YLRjNGD0YHRgtCw0L3QvtCy0LrRg9GA0LDRgdGI0LjRgNC10L3QuNGP0YDQsNCx0L7RgtGL0YHQutGA0LjQv9GC0L7Qs9GA0LDRhNC40LXQuSAnICtcbiAgJ9C90LDRh9Cw0YLRjNGD0YHRgtCw0L3QvtCy0LrRg9GA0LDRgdGI0LjRgNC10L3QuNGP0YDQsNCx0L7RgtGL0YHRhNCw0LnQu9Cw0LzQuCDQvdC10LTQtdC70Y/Qs9C+0LTQsCDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLRjNC30LDQstC10YDRiNC10L3QuNGP0YHQvtC10LTQuNC90LXQvdC40Y8g0L3QvtC80LXRgNGB0LXQsNC90YHQsNC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyAnICtcbiAgJ9C90L7QvNC10YDRgdC+0LXQtNC40L3QtdC90LjRj9C40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQvdGA0LXQsyDQvdGB0YLRgCDQvtCx0L3QvtCy0LjRgtGM0LjQvdGC0LXRgNGE0LXQudGBINC+0LHQvdC+0LLQuNGC0YzQvdGD0LzQtdGA0LDRhtC40Y7QvtCx0YrQtdC60YLQvtCyINC+0LHQvdC+0LLQuNGC0YzQv9C+0LLRgtC+0YDQvdC+0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C10LfQvdCw0YfQtdC90LjRjyAnICtcbiAgJ9C+0LHRgNCw0LHQvtGC0LrQsNC/0YDQtdGA0YvQstCw0L3QuNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC+0LHRitC10LTQuNC90LjRgtGM0YTQsNC50LvRiyDQvtC60YAg0L7Qv9C40YHQsNC90LjQtdC+0YjQuNCx0LrQuCDQvtC/0L7QstC10YHRgtC40YLRjCDQvtC/0L7QstC10YHRgtC40YLRjNC+0LHQuNC30LzQtdC90LXQvdC40LggJyArXG4gICfQvtGC0LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC30LDQv9GA0L7RgdCw0L3QsNGB0YLRgNC+0LXQutC60LvQuNC10L3RgtCw0LvQuNGG0LXQvdC30LjRgNC+0LLQsNC90LjRjyDQvtGC0LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC+0LbQuNC00LDQvdC40Y8g0L7RgtC60LvRjtGH0LjRgtGM0L7QsdGA0LDQsdC+0YLRh9C40LrQvtC/0L7QstC10YnQtdC90LjRjyAnICtcbiAgJ9C+0YLQutGA0YvRgtGM0LfQvdCw0YfQtdC90LjQtSDQvtGC0LrRgNGL0YLRjNC40L3QtNC10LrRgdGB0L/RgNCw0LLQutC4INC+0YLQutGA0YvRgtGM0YHQvtC00LXRgNC20LDQvdC40LXRgdC/0YDQsNCy0LrQuCDQvtGC0LrRgNGL0YLRjNGB0L/RgNCw0LLQutGDINC+0YLQutGA0YvRgtGM0YTQvtGA0LzRgyDQvtGC0LrRgNGL0YLRjNGE0L7RgNC80YPQvNC+0LTQsNC70YzQvdC+ICcgK1xuICAn0L7RgtC80LXQvdC40YLRjNGC0YDQsNC90LfQsNC60YbQuNGOINC+0YfQuNGB0YLQuNGC0YzQttGD0YDQvdCw0LvRgNC10LPQuNGB0YLRgNCw0YbQuNC4INC+0YfQuNGB0YLQuNGC0YzQvdCw0YHRgtGA0L7QudC60LjQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L7Rh9C40YHRgtC40YLRjNGB0L7QvtCx0YnQtdC90LjRjyDQv9Cw0YDQsNC80LXRgtGA0YvQtNC+0YHRgtGD0L/QsCAnICtcbiAgJ9C/0LXRgNC10LnRgtC40L/QvtC90LDQstC40LPQsNGG0LjQvtC90L3QvtC50YHRgdGL0LvQutC1INC/0LXRgNC10LzQtdGB0YLQuNGC0YzRhNCw0LnQuyDQv9C+0LTQutC70Y7Rh9C40YLRjNCy0L3QtdGI0L3RjtGO0LrQvtC80L/QvtC90LXQvdGC0YMgJyArXG4gICfQv9C+0LTQutC70Y7Rh9C40YLRjNC+0LHRgNCw0LHQvtGC0YfQuNC60LfQsNC/0YDQvtGB0LDQvdCw0YHRgtGA0L7QtdC60LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPINC/0L7QtNC60LvRjtGH0LjRgtGM0L7QsdGA0LDQsdC+0YLRh9C40LrQvtC20LjQtNCw0L3QuNGPINC/0L7QtNC60LvRjtGH0LjRgtGM0L7QsdGA0LDQsdC+0YLRh9C40LrQvtC/0L7QstC10YnQtdC90LjRjyAnICtcbiAgJ9C/0L7QtNC60LvRjtGH0LjRgtGM0YDQsNGB0YjQuNGA0LXQvdC40LXRgNCw0LHQvtGC0YvRgdC60YDQuNC/0YLQvtCz0YDQsNGE0LjQtdC5INC/0L7QtNC60LvRjtGH0LjRgtGM0YDQsNGB0YjQuNGA0LXQvdC40LXRgNCw0LHQvtGC0YvRgdGE0LDQudC70LDQvNC4INC/0L7QtNGA0L7QsdC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10L7RiNC40LHQutC4ICcgK1xuICAn0L/QvtC60LDQt9Cw0YLRjNCy0LLQvtC00LTQsNGC0Ysg0L/QvtC60LDQt9Cw0YLRjNCy0LLQvtC00LfQvdCw0YfQtdC90LjRjyDQv9C+0LrQsNC30LDRgtGM0LLQstC+0LTRgdGC0YDQvtC60Lgg0L/QvtC60LDQt9Cw0YLRjNCy0LLQvtC00YfQuNGB0LvQsCDQv9C+0LrQsNC30LDRgtGM0LLQvtC/0YDQvtGBINC/0L7QutCw0LfQsNGC0YzQt9C90LDRh9C10L3QuNC1ICcgK1xuICAn0L/QvtC60LDQt9Cw0YLRjNC40L3RhNC+0YDQvNCw0YbQuNGO0L7QsdC+0YjQuNCx0LrQtSDQv9C+0LrQsNC30LDRgtGM0L3QsNC60LDRgNGC0LUg0L/QvtC60LDQt9Cw0YLRjNC+0L/QvtCy0LXRidC10L3QuNC10L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC/0L7QutCw0LfQsNGC0YzQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1INC/0L7Qu9C90L7QtdC40LzRj9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0Yxjb23QvtCx0YrQtdC60YIg0L/QvtC70YPRh9C40YLRjHhtbNGC0LjQvyDQv9C+0LvRg9GH0LjRgtGM0LDQtNGA0LXRgdC/0L7QvNC10YHRgtC+0L/QvtC70L7QttC10L3QuNGOINC/0L7Qu9GD0YfQuNGC0YzQsdC70L7QutC40YDQvtCy0LrRg9GB0LXQsNC90YHQvtCyINC/0L7Qu9GD0YfQuNGC0YzQstGA0LXQvNGP0LfQsNCy0LXRgNGI0LXQvdC40Y/RgdC/0Y/RidC10LPQvtGB0LXQsNC90YHQsCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQstGA0LXQvNGP0LfQsNGB0YvQv9Cw0L3QuNGP0L/QsNGB0YHQuNCy0L3QvtCz0L7RgdC10LDQvdGB0LAg0L/QvtC70YPRh9C40YLRjNCy0YDQtdC80Y/QvtC20LjQtNCw0L3QuNGP0LHQu9C+0LrQuNGA0L7QstC60LjQtNCw0L3QvdGL0YUg0L/QvtC70YPRh9C40YLRjNC00LDQvdC90YvQtdCy0YvQsdC+0YDQsCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C50L/QsNGA0LDQvNC10YLRgNC60LvQuNC10L3RgtCw0LvQuNGG0LXQvdC30LjRgNC+0LLQsNC90LjRjyDQv9C+0LvRg9GH0LjRgtGM0LTQvtC/0YPRgdGC0LjQvNGL0LXQutC+0LTRi9C70L7QutCw0LvQuNC30LDRhtC40Lgg0L/QvtC70YPRh9C40YLRjNC00L7Qv9GD0YHRgtC40LzRi9C10YfQsNGB0L7QstGL0LXQv9C+0Y/RgdCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC30LDQs9C+0LvQvtCy0L7QutC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDQv9C+0LvRg9GH0LjRgtGM0LfQsNCz0L7Qu9C+0LLQvtC60YHQuNGB0YLQtdC80Ysg0L/QvtC70YPRh9C40YLRjNC30L3QsNGH0LXQvdC40Y/QvtGC0LHQvtGA0LDQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QvtC70YPRh9C40YLRjNC40LfQstGA0LXQvNC10L3QvdC+0LPQvtGF0YDQsNC90LjQu9C40YnQsCDQv9C+0LvRg9GH0LjRgtGM0LjQvNGP0LLRgNC10LzQtdC90L3QvtCz0L7RhNCw0LnQu9CwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC40LzRj9C60LvQuNC10L3RgtCw0LvQuNGG0LXQvdC30LjRgNC+0LLQsNC90LjRjyDQv9C+0LvRg9GH0LjRgtGM0LjQvdGE0L7RgNC80LDRhtC40Y7RjdC60YDQsNC90L7QstC60LvQuNC10L3RgtCwINC/0L7Qu9GD0YfQuNGC0YzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGB0L7QsdGL0YLQuNGP0LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INC/0L7Qu9GD0YfQuNGC0YzQutGA0LDRgtC60LjQudC30LDQs9C+0LvQvtCy0L7QutC/0YDQuNC70L7QttC10L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzQvNCw0LrQtdGC0L7RhNC+0YDQvNC70LXQvdC40Y8gJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LzQsNGB0LrRg9Cy0YHQtdGE0LDQudC70Ysg0L/QvtC70YPRh9C40YLRjNC80LDRgdC60YPQstGB0LXRhNCw0LnQu9GL0LrQu9C40LXQvdGC0LAg0L/QvtC70YPRh9C40YLRjNC80LDRgdC60YPQstGB0LXRhNCw0LnQu9GL0YHQtdGA0LLQtdGA0LAg0L/QvtC70YPRh9C40YLRjNC80LXRgdGC0L7Qv9C+0LvQvtC20LXQvdC40LXQv9C+0LDQtNGA0LXRgdGDICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC80LjQvdC40LzQsNC70YzQvdGD0Y7QtNC70LjQvdGD0L/QsNGA0L7Qu9C10LnQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDQv9C+0LvRg9GH0LjRgtGM0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdGD0Y7RgdGB0YvQu9C60YMg0L/QvtC70YPRh9C40YLRjNC90LDQstC40LPQsNGG0LjQvtC90L3Rg9GO0YHRgdGL0LvQutGD0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC+0LHQvdC+0LLQu9C10L3QuNC10LrQvtC90YTQuNCz0YPRgNCw0YbQuNC40LHQsNC30YvQtNCw0L3QvdGL0YUg0L/QvtC70YPRh9C40YLRjNC+0LHQvdC+0LLQu9C10L3QuNC10L/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdGL0YXQtNCw0L3QvdGL0YXQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0L/QvtC70YPRh9C40YLRjNC+0LHRidC40LnQvNCw0LrQtdGCICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC+0LHRidGD0Y7RhNC+0YDQvNGDINC/0L7Qu9GD0YfQuNGC0YzQvtC60L3QsCDQv9C+0LvRg9GH0LjRgtGM0L7Qv9C10YDQsNGC0LjQstC90YPRjtC+0YLQvNC10YLQutGD0LLRgNC10LzQtdC90Lgg0L/QvtC70YPRh9C40YLRjNC+0YLQutC70Y7Rh9C10L3QuNC10LHQtdC30L7Qv9Cw0YHQvdC+0LPQvtGA0LXQttC40LzQsCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQv9Cw0YDQsNC80LXRgtGA0YvRhNGD0L3QutGG0LjQvtC90LDQu9GM0L3Ri9GF0L7Qv9GG0LjQudC40L3RgtC10YDRhNC10LnRgdCwINC/0L7Qu9GD0YfQuNGC0YzQv9C+0LvQvdC+0LXQuNC80Y/Qv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90L7Qs9C+0LfQvdCw0YfQtdC90LjRjyAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjRj9C90LDQstC40LPQsNGG0LjQvtC90L3Ri9GF0YHRgdGL0LvQvtC6INC/0L7Qu9GD0YfQuNGC0YzQv9GA0L7QstC10YDQutGD0YHQu9C+0LbQvdC+0YHRgtC40L/QsNGA0L7Qu9C10LnQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDQv9C+0LvRg9GH0LjRgtGM0YDQsNC30LTQtdC70LjRgtC10LvRjNC/0YPRgtC4ICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNGA0LDQt9C00LXQu9C40YLQtdC70YzQv9GD0YLQuNC60LvQuNC10L3RgtCwINC/0L7Qu9GD0YfQuNGC0YzRgNCw0LfQtNC10LvQuNGC0LXQu9GM0L/Rg9GC0LjRgdC10YDQstC10YDQsCDQv9C+0LvRg9GH0LjRgtGM0YHQtdCw0L3RgdGL0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNGB0LrQvtGA0L7RgdGC0YzQutC70LjQtdC90YLRgdC60L7Qs9C+0YHQvtC10LTQuNC90LXQvdC40Y8g0L/QvtC70YPRh9C40YLRjNGB0L7QtdC00LjQvdC10L3QuNGP0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC/0L7Qu9GD0YfQuNGC0YzRgdC+0L7QsdGJ0LXQvdC40Y/Qv9C+0LvRjNC30L7QstCw0YLQtdC70Y4gJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0YHQvtC+0YLQstC10YLRgdGC0LLQuNC10L7QsdGK0LXQutGC0LDQuNGE0L7RgNC80Ysg0L/QvtC70YPRh9C40YLRjNGB0L7RgdGC0LDQstGB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtC40L3RgtC10YDRhNC10LnRgdCwb2RhdGEg0L/QvtC70YPRh9C40YLRjNGB0YLRgNGD0LrRgtGD0YDRg9GF0YDQsNC90LXQvdC40Y/QsdCw0LfRi9C00LDQvdC90YvRhSAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzRgtC10LrRg9GJ0LjQudGB0LXQsNC90YHQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0L/QvtC70YPRh9C40YLRjNGE0LDQudC7INC/0L7Qu9GD0YfQuNGC0YzRhNCw0LnQu9GLINC/0L7Qu9GD0YfQuNGC0YzRhNC+0YDQvNGDINC/0L7Qu9GD0YfQuNGC0YzRhNGD0L3QutGG0LjQvtC90LDQu9GM0L3Rg9GO0L7Qv9GG0LjRjiAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzRhNGD0L3QutGG0LjQvtC90LDQu9GM0L3Rg9GO0L7Qv9GG0LjRjtC40L3RgtC10YDRhNC10LnRgdCwINC/0L7Qu9GD0YfQuNGC0YzRh9Cw0YHQvtCy0L7QudC/0L7Rj9GB0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQuNC+0YEg0L/QvtC80LXRgdGC0LjRgtGM0LLQvtCy0YDQtdC80LXQvdC90L7QtdGF0YDQsNC90LjQu9C40YnQtSAnICtcbiAgJ9C/0L7QvNC10YHRgtC40YLRjNGE0LDQudC7INC/0L7QvNC10YHRgtC40YLRjNGE0LDQudC70Ysg0L/RgNCw0LIg0L/RgNCw0LLQvtC00L7RgdGC0YPQv9CwINC/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3QvtC10LfQvdCw0YfQtdC90LjQtSDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC60L7QtNCw0LvQvtC60LDQu9C40LfQsNGG0LjQuCDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC/0LXRgNC40L7QtNCwICcgK1xuICAn0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQv9GA0LDQstCwINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10L/RgNC40LvQvtC20LXQvdC40Y8g0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXRgdC+0LHRi9GC0LjRj9C20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdGH0LDRgdC+0LLQvtCz0L7Qv9C+0Y/RgdCwINC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LUgJyArXG4gICfQv9GA0LXQutGA0LDRgtC40YLRjNGA0LDQsdC+0YLRg9GB0LjRgdGC0LXQvNGLINC/0YDQuNCy0LjQu9C10LPQuNGA0L7QstCw0L3QvdGL0LnRgNC10LbQuNC8INC/0YDQvtC00L7Qu9C20LjRgtGM0LLRi9C30L7QsiDQv9GA0L7Rh9C40YLQsNGC0Yxqc29uINC/0YDQvtGH0LjRgtCw0YLRjHhtbCDQv9GA0L7Rh9C40YLQsNGC0YzQtNCw0YLRg2pzb24g0L/Rg9GB0YLQsNGP0YHRgtGA0L7QutCwICcgK1xuICAn0YDQsNCx0L7Rh9C40LnQutCw0YLQsNC70L7Qs9C00LDQvdC90YvRhdC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRgNCw0LfQsdC70L7QutC40YDQvtCy0LDRgtGM0LTQsNC90L3Ri9C10LTQu9GP0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDRgNCw0LfQtNC10LvQuNGC0YzRhNCw0LnQuyDRgNCw0LfQvtGA0LLQsNGC0YzRgdC+0LXQtNC40L3QtdC90LjQtdGB0LLQvdC10YjQvdC40LzQuNGB0YLQvtGH0L3QuNC60L7QvNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LDRgdC60L7QtNC40YDQvtCy0LDRgtGM0YHRgtGA0L7QutGDINGA0L7Qu9GM0LTQvtGB0YLRg9C/0L3QsCDRgdC10LrRg9C90LTQsCDRgdC40LPQvdCw0Lsg0YHQuNC80LLQvtC7INGB0LrQvtC/0LjRgNC+0LLQsNGC0YzQttGD0YDQvdCw0LvRgNC10LPQuNGB0YLRgNCw0YbQuNC4INGB0LzQtdGJ0LXQvdC40LXQu9C10YLQvdC10LPQvtCy0YDQtdC80LXQvdC4ICcgK1xuICAn0YHQvNC10YnQtdC90LjQtdGB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtCy0YDQtdC80LXQvdC4INGB0L7QtdC00LjQvdC40YLRjNCx0YPRhNC10YDRi9C00LLQvtC40YfQvdGL0YXQtNCw0L3QvdGL0YUg0YHQvtC30LTQsNGC0YzQutCw0YLQsNC70L7QsyDRgdC+0LfQtNCw0YLRjNGE0LDQsdGA0LjQutGDeGR0byDRgdC+0LrRgNC7INGB0L7QutGA0LvQvyDRgdC+0LrRgNC/INGB0L7QvtCx0YnQuNGC0YwgJyArXG4gICfRgdC+0YHRgtC+0Y/QvdC40LUg0YHQvtGF0YDQsNC90LjRgtGM0LfQvdCw0YfQtdC90LjQtSDRgdC+0YXRgNCw0L3QuNGC0YzQvdCw0YHRgtGA0L7QudC60LjQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0YHRgNC10LQg0YHRgtGA0LTQu9C40L3QsCDRgdGC0YDQt9Cw0LrQsNC90YfQuNCy0LDQtdGC0YHRj9C90LAg0YHRgtGA0LfQsNC80LXQvdC40YLRjCDRgdGC0YDQvdCw0LnRgtC4INGB0YLRgNC90LDRh9C40L3QsNC10YLRgdGP0YEgJyArXG4gICfRgdGC0YDQvtC60LAg0YHRgtGA0L7QutCw0YHQvtC10LTQuNC90LXQvdC40Y/QuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0YHRgtGA0L/QvtC70YPRh9C40YLRjNGB0YLRgNC+0LrRgyDRgdGC0YDRgNCw0LfQtNC10LvQuNGC0Ywg0YHRgtGA0YHQvtC10LTQuNC90LjRgtGMINGB0YLRgNGB0YDQsNCy0L3QuNGC0Ywg0YHRgtGA0YfQuNGB0LvQvtCy0YXQvtC20LTQtdC90LjQuSAnK1xuICAn0YHRgtGA0YfQuNGB0LvQvtGB0YLRgNC+0Log0YHRgtGA0YjQsNCx0LvQvtC9INGC0LXQutGD0YnQsNGP0LTQsNGC0LAg0YLQtdC60YPRidCw0Y/QtNCw0YLQsNGB0LXQsNC90YHQsCDRgtC10LrRg9GJ0LDRj9GD0L3QuNCy0LXRgNGB0LDQu9GM0L3QsNGP0LTQsNGC0LAg0YLQtdC60YPRidCw0Y/Rg9C90LjQstC10YDRgdCw0LvRjNC90LDRj9C00LDRgtCw0LLQvNC40LvQu9C40YHQtdC60YPQvdC00LDRhSAnICtcbiAgJ9GC0LXQutGD0YnQuNC50LLQsNGA0LjQsNC90YLQuNC90YLQtdGA0YTQtdC50YHQsNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDRgtC10LrRg9GJ0LjQudCy0LDRgNC40LDQvdGC0L7RgdC90L7QstC90L7Qs9C+0YjRgNC40YTRgtCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINGC0LXQutGD0YnQuNC50LrQvtC00LvQvtC60LDQu9C40LfQsNGG0LjQuCAnICtcbiAgJ9GC0LXQutGD0YnQuNC50YDQtdC20LjQvNC30LDQv9GD0YHQutCwINGC0LXQutGD0YnQuNC50Y/Qt9GL0Log0YLQtdC60YPRidC40LnRj9C30YvQutGB0LjRgdGC0LXQvNGLINGC0LjQvyDRgtC40L/Qt9C90Ycg0YLRgNCw0L3Qt9Cw0LrRhtC40Y/QsNC60YLQuNCy0L3QsCDRgtGA0LXQsyDRg9C00LDQu9C40YLRjNC00LDQvdC90YvQtdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyAnICtcbiAgJ9GD0LTQsNC70LjRgtGM0LjQt9Cy0YDQtdC80LXQvdC90L7Qs9C+0YXRgNCw0L3QuNC70LjRidCwINGD0LTQsNC70LjRgtGM0L7QsdGK0LXQutGC0Ysg0YPQtNCw0LvQuNGC0YzRhNCw0LnQu9GLINGD0L3QuNCy0LXRgNGB0LDQu9GM0L3QvtC10LLRgNC10LzRjyDRg9GB0YLQsNC90L7QstC40YLRjNCx0LXQt9C+0L/QsNGB0L3Ri9C50YDQtdC20LjQvCAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0LHQtdC30L7Qv9Cw0YHQvdGL0LnRgNC10LbQuNC80YDQsNC30LTQtdC70LXQvdC40Y/QtNCw0L3QvdGL0YUg0YPRgdGC0LDQvdC+0LLQuNGC0YzQsdC70L7QutC40YDQvtCy0LrRg9GB0LXQsNC90YHQvtCyINGD0YHRgtCw0L3QvtCy0LjRgtGM0LLQvdC10YjQvdGO0Y7QutC+0LzQv9C+0L3QtdC90YLRgyAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0LLRgNC10LzRj9C30LDQstC10YDRiNC10L3QuNGP0YHQv9GP0YnQtdCz0L7RgdC10LDQvdGB0LAg0YPRgdGC0LDQvdC+0LLQuNGC0YzQstGA0LXQvNGP0LfQsNGB0YvQv9Cw0L3QuNGP0L/QsNGB0YHQuNCy0L3QvtCz0L7RgdC10LDQvdGB0LAg0YPRgdGC0LDQvdC+0LLQuNGC0YzQstGA0LXQvNGP0L7QttC40LTQsNC90LjRj9Cx0LvQvtC60LjRgNC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQt9Cw0LPQvtC70L7QstC+0LrQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0YPRgdGC0LDQvdC+0LLQuNGC0YzQt9Cw0LPQvtC70L7QstC+0LrRgdC40YHRgtC10LzRiyDRg9GB0YLQsNC90L7QstC40YLRjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4ICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGB0L7QsdGL0YLQuNGP0LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INGD0YHRgtCw0L3QvtCy0LjRgtGM0LrRgNCw0YLQutC40LnQt9Cw0LPQvtC70L7QstC+0LrQv9GA0LjQu9C+0LbQtdC90LjRjyAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0LzQuNC90LjQvNCw0LvRjNC90YPRjtC00LvQuNC90YPQv9Cw0YDQvtC70LXQudC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INGD0YHRgtCw0L3QvtCy0LjRgtGM0LzQvtC90L7Qv9C+0LvRjNC90YvQudGA0LXQttC40Lwg0YPRgdGC0LDQvdC+0LLQuNGC0YzQvdCw0YHRgtGA0L7QudC60LjQutC70LjQtdC90YLQsNC70LjRhtC10L3Qt9C40YDQvtCy0LDQvdC40Y8gJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNC+0LHQvdC+0LLQu9C10L3QuNC10L/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdGL0YXQtNCw0L3QvdGL0YXQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0YPRgdGC0LDQvdC+0LLQuNGC0YzQvtGC0LrQu9GO0YfQtdC90LjQtdCx0LXQt9C+0L/QsNGB0L3QvtCz0L7RgNC10LbQuNC80LAgJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNC/0LDRgNCw0LzQtdGC0YDRi9GE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGL0YXQvtC/0YbQuNC50LjQvdGC0LXRgNGE0LXQudGB0LAg0YPRgdGC0LDQvdC+0LLQuNGC0YzQv9GA0LjQstC40LvQtdCz0LjRgNC+0LLQsNC90L3Ri9C50YDQtdC20LjQvCAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0L/RgNC+0LLQtdGA0LrRg9GB0LvQvtC20L3QvtGB0YLQuNC/0LDRgNC+0LvQtdC50L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0YPRgdGC0LDQvdC+0LLQuNGC0YzRgNCw0YHRiNC40YDQtdC90LjQtdGA0LDQsdC+0YLRi9GB0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC10LkgJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNGA0LDRgdGI0LjRgNC10L3QuNC10YDQsNCx0L7RgtGL0YHRhNCw0LnQu9Cw0LzQuCDRg9GB0YLQsNC90L7QstC40YLRjNGB0L7QtdC00LjQvdC10L3QuNC10YHQstC90LXRiNC90LjQvNC40YHRgtC+0YfQvdC40LrQvtC80LTQsNC90L3Ri9GFINGD0YHRgtCw0L3QvtCy0LjRgtGM0YHQvtC+0YLQstC10YLRgdGC0LLQuNC10L7QsdGK0LXQutGC0LDQuNGE0L7RgNC80YsgJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNGB0L7RgdGC0LDQstGB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtC40L3RgtC10YDRhNC10LnRgdCwb2RhdGEg0YPRgdGC0LDQvdC+0LLQuNGC0YzRh9Cw0YHQvtCy0L7QudC/0L7Rj9GB0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINGD0YHRgtCw0L3QvtCy0LjRgtGM0YfQsNGB0L7QstC+0LnQv9C+0Y/RgdGB0LXQsNC90YHQsCAnICtcbiAgJ9GE0L7RgNC80LDRgiDRhtC10Lsg0YfQsNGBINGH0LDRgdC+0LLQvtC50L/QvtGP0YEg0YfQsNGB0L7QstC+0LnQv9C+0Y/RgdGB0LXQsNC90YHQsCDRh9C40YHQu9C+INGH0LjRgdC70L7Qv9GA0L7Qv9C40YHRjNGOINGN0YLQvtCw0LTRgNC10YHQstGA0LXQvNC10L3QvdC+0LPQvtGF0YDQsNC90LjQu9C40YnQsCAnO1xuXG4gIC8vIHY4INGB0LLQvtC50YHRgtCy0LAg0LPQu9C+0LHQsNC70YzQvdC+0LPQviDQutC+0L3RgtC10LrRgdGC0LAgPT0+IGJ1aWx0X2luXG4gIHZhciB2OF9nbG9iYWxfY29udGV4dF9wcm9wZXJ0eSA9XG4gICd3c9GB0YHRi9C70LrQuCDQsdC40LHQu9C40L7RgtC10LrQsNC60LDRgNGC0LjQvdC+0Log0LHQuNCx0LvQuNC+0YLQtdC60LDQvNCw0LrQtdGC0L7QstC+0YTQvtGA0LzQu9C10L3QuNGP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LHQuNCx0LvQuNC+0YLQtdC60LDRgdGC0LjQu9C10Lkg0LHQuNC30L3QtdGB0L/RgNC+0YbQtdGB0YHRiyAnICtcbiAgJ9Cy0L3QtdGI0L3QuNC10LjRgdGC0L7Rh9C90LjQutC40LTQsNC90L3Ri9GFINCy0L3QtdGI0L3QuNC10L7QsdGA0LDQsdC+0YLQutC4INCy0L3QtdGI0L3QuNC10L7RgtGH0LXRgtGLINCy0YHRgtGA0L7QtdC90L3Ri9C10L/QvtC60YPQv9C60Lgg0LPQu9Cw0LLQvdGL0LnQuNC90YLQtdGA0YTQtdC50YEg0LPQu9Cw0LLQvdGL0LnRgdGC0LjQu9GMICcgK1xuICAn0LTQvtC60YPQvNC10L3RgtGLINC00L7RgdGC0LDQstC70Y/QtdC80YvQtdGD0LLQtdC00L7QvNC70LXQvdC40Y8g0LbRg9GA0L3QsNC70YvQtNC+0LrRg9C80LXQvdGC0L7QsiDQt9Cw0LTQsNGH0Lgg0LjQvdGE0L7RgNC80LDRhtC40Y/QvtCx0LjQvdGC0LXRgNC90LXRgtGB0L7QtdC00LjQvdC10L3QuNC4INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YDQsNCx0L7Rh9C10LnQtNCw0YLRiyAnICtcbiAgJ9C40YHRgtC+0YDQuNGP0YDQsNCx0L7RgtGL0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC60L7QvdGB0YLQsNC90YLRiyDQutGA0LjRgtC10YDQuNC40L7RgtCx0L7RgNCwINC80LXRgtCw0LTQsNC90L3Ri9C1INC+0LHRgNCw0LHQvtGC0LrQuCDQvtGC0L7QsdGA0LDQttC10L3QuNC10YDQtdC60LvQsNC80Ysg0L7RgtC/0YDQsNCy0LrQsNC00L7RgdGC0LDQstC70Y/QtdC80YvRhdGD0LLQtdC00L7QvNC70LXQvdC40LkgJyArXG4gICfQvtGC0YfQtdGC0Ysg0L/QsNC90LXQu9GM0LfQsNC00LDRh9C+0YEg0L/QsNGA0LDQvNC10YLRgNC30LDQv9GD0YHQutCwINC/0LDRgNCw0LzQtdGC0YDRi9GB0LXQsNC90YHQsCDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8g0L/Qu9Cw0L3Ri9Cy0LjQtNC+0LLRgNCw0YHRh9C10YLQsCDQv9C70LDQvdGL0LLQuNC00L7QstGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC6ICcgK1xuICAn0L/Qu9Cw0L3Ri9C+0LHQvNC10L3QsCDQv9C70LDQvdGL0YHRh9C10YLQvtCyINC/0L7Qu9C90L7RgtC10LrRgdGC0L7QstGL0LnQv9C+0LjRgdC6INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQuNC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0Lgg0L/RgNC+0LLQtdGA0LrQsNCy0YHRgtGA0L7QtdC90L3Ri9GF0L/QvtC60YPQv9C+0LogJyArXG4gICfRgNCw0LHQvtGH0LDRj9C00LDRgtCwINGA0LDRgdGI0LjRgNC10L3QuNGP0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INGA0LXQs9C40YHRgtGA0YvQsdGD0YXQs9Cw0LvRgtC10YDQuNC4INGA0LXQs9C40YHRgtGA0YvQvdCw0LrQvtC/0LvQtdC90LjRjyDRgNC10LPQuNGB0YLRgNGL0YDQsNGB0YfQtdGC0LAg0YDQtdCz0LjRgdGC0YDRi9GB0LLQtdC00LXQvdC40LkgJyArXG4gICfRgNC10LPQu9Cw0LzQtdC90YLQvdGL0LXQt9Cw0LTQsNC90LjRjyDRgdC10YDQuNCw0LvQuNC30LDRgtC+0YB4ZHRvINGB0L/RgNCw0LLQvtGH0L3QuNC60Lgg0YHRgNC10LTRgdGC0LLQsNCz0LXQvtC/0L7Qt9C40YbQuNC+0L3QuNGA0L7QstCw0L3QuNGPINGB0YDQtdC00YHRgtCy0LDQutGA0LjQv9GC0L7Qs9GA0LDRhNC40Lgg0YHRgNC10LTRgdGC0LLQsNC80YPQu9GM0YLQuNC80LXQtNC40LAgJyArXG4gICfRgdGA0LXQtNGB0YLQstCw0L7RgtC+0LHRgNCw0LbQtdC90LjRj9GA0LXQutC70LDQvNGLINGB0YDQtdC00YHRgtCy0LDQv9C+0YfRgtGLINGB0YDQtdC00YHRgtCy0LDRgtC10LvQtdGE0L7QvdC40Lgg0YTQsNCx0YDQuNC60LB4ZHRvINGE0LDQudC70L7QstGL0LXQv9C+0YLQvtC60Lgg0YTQvtC90L7QstGL0LXQt9Cw0LTQsNC90LjRjyDRhdGA0LDQvdC40LvQuNGJ0LDQvdCw0YHRgtGA0L7QtdC6ICcgK1xuICAn0YXRgNCw0L3QuNC70LjRidC10LLQsNGA0LjQsNC90YLQvtCy0L7RgtGH0LXRgtC+0LIg0YXRgNCw0L3QuNC70LjRidC10L3QsNGB0YLRgNC+0LXQutC00LDQvdC90YvRhdGE0L7RgNC8INGF0YDQsNC90LjQu9C40YnQtdC+0LHRidC40YXQvdCw0YHRgtGA0L7QtdC6INGF0YDQsNC90LjQu9C40YnQtdC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNGF0L3QsNGB0YLRgNC+0LXQutC00LjQvdCw0LzQuNGH0LXRgdC60LjRhdGB0L/QuNGB0LrQvtCyICcgK1xuICAn0YXRgNCw0L3QuNC70LjRidC10L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40YXQvdCw0YHRgtGA0L7QtdC60L7RgtGH0LXRgtC+0LIg0YXRgNCw0L3QuNC70LjRidC10YHQuNGB0YLQtdC80L3Ri9GF0L3QsNGB0YLRgNC+0LXQuiAnO1xuXG4gIC8vIGJ1aWx0X2luIDog0LLRgdGC0YDQvtC10L3QvdGL0LUg0LjQu9C4INCx0LjQsdC70LjQvtGC0LXRh9C90YvQtSDQvtCx0YrQtdC60YLRiyAo0LrQvtC90YHRgtCw0L3RgtGLLCDQutC70LDRgdGB0YssINGE0YPQvdC60YbQuNC4KVxuICB2YXIgQlVJTFRJTiA9XG4gIHY3X3N5c3RlbV9jb25zdGFudHMgK1xuICB2N19nbG9iYWxfY29udGV4dF9tZXRob2RzICsgdjhfZ2xvYmFsX2NvbnRleHRfbWV0aG9kcyArXG4gIHY4X2dsb2JhbF9jb250ZXh0X3Byb3BlcnR5O1xuICBcbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC90LDQsdC+0YDRiyDQt9C90LDRh9C10L3QuNC5ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX3NldHNfb2ZfdmFsdWVzID1cbiAgJ3dlYtGG0LLQtdGC0LAgd2luZG93c9GG0LLQtdGC0LAgd2luZG93c9GI0YDQuNGE0YLRiyDQsdC40LHQu9C40L7RgtC10LrQsNC60LDRgNGC0LjQvdC+0Log0YDQsNC80LrQuNGB0YLQuNC70Y8g0YHQuNC80LLQvtC70Ysg0YbQstC10YLQsNGB0YLQuNC70Y8g0YjRgNC40YTRgtGL0YHRgtC40LvRjyAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQuNC90YLQtdGA0YTQtdC50YHQvdGL0LUgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfaW50ZXJmYWNlID1cbiAgJ9Cw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LXRgdC+0YXRgNCw0L3QtdC90LjQtdC00LDQvdC90YvRhdGE0L7RgNC80YvQstC90LDRgdGC0YDQvtC50LrQsNGFINCw0LLRgtC+0L3Rg9C80LXRgNCw0YbQuNGP0LLRhNC+0YDQvNC1INCw0LLRgtC+0YDQsNC30LTQstC40LbQtdC90LjQtdGB0LXRgNC40LkgJyArXG4gICfQsNC90LjQvNCw0YbQuNGP0LTQuNCw0LPRgNCw0LzQvNGLINCy0LDRgNC40LDQvdGC0LLRi9GA0LDQstC90LjQstCw0L3QuNGP0Y3Qu9C10LzQtdC90YLQvtCy0LjQt9Cw0LPQvtC70L7QstC60L7QsiDQstCw0YDQuNCw0L3RgtGD0L/RgNCw0LLQu9C10L3QuNGP0LLRi9GB0L7RgtC+0LnRgtCw0LHQu9C40YbRiyAnICtcbiAgJ9Cy0LXRgNGC0LjQutCw0LvRjNC90LDRj9C/0YDQvtC60YDRg9GC0LrQsNGE0L7RgNC80Ysg0LLQtdGA0YLQuNC60LDQu9GM0L3QvtC10L/QvtC70L7QttC10L3QuNC1INCy0LXRgNGC0LjQutCw0LvRjNC90L7QtdC/0L7Qu9C+0LbQtdC90LjQtdGN0LvQtdC80LXQvdGC0LAg0LLQuNC00LPRgNGD0L/Qv9GL0YTQvtGA0LzRiyAnICtcbiAgJ9Cy0LjQtNC00LXQutC+0YDQsNGG0LjQuNGE0L7RgNC80Ysg0LLQuNC00LTQvtC/0L7Qu9C90LXQvdC40Y/RjdC70LXQvNC10L3RgtCw0YTQvtGA0LzRiyDQstC40LTQuNC30LzQtdC90LXQvdC40Y/QtNCw0L3QvdGL0YUg0LLQuNC00LrQvdC+0L/QutC40YTQvtGA0LzRiyDQstC40LTQv9C10YDQtdC60LvRjtGH0LDRgtC10LvRjyAnICtcbiAgJ9Cy0LjQtNC/0L7QtNC/0LjRgdC10LnQutC00LjQsNCz0YDQsNC80LzQtSDQstC40LTQv9C+0LvRj9GE0L7RgNC80Ysg0LLQuNC00YTQu9Cw0LbQutCwINCy0LvQuNGP0L3QuNC10YDQsNC30LzQtdGA0LDQvdCw0L/Rg9C30YvRgNC10LrQtNC40LDQs9GA0LDQvNC80Ysg0LPQvtGA0LjQt9C+0L3RgtCw0LvRjNC90L7QtdC/0L7Qu9C+0LbQtdC90LjQtSAnICtcbiAgJ9Cz0L7RgNC40LfQvtC90YLQsNC70YzQvdC+0LXQv9C+0LvQvtC20LXQvdC40LXRjdC70LXQvNC10L3RgtCwINCz0YDRg9C/0L/QuNGA0L7QstC60LDQutC+0LvQvtC90L7QuiDQs9GA0YPQv9C/0LjRgNC+0LLQutCw0L/QvtC00YfQuNC90LXQvdC90YvRhdGN0LvQtdC80LXQvdGC0L7QstGE0L7RgNC80YsgJyArXG4gICfQs9GA0YPQv9C/0YvQuNGN0LvQtdC80LXQvdGC0Ysg0LTQtdC50YHRgtCy0LjQtdC/0LXRgNC10YLQsNGB0LrQuNCy0LDQvdC40Y8g0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQudGA0LXQttC40LzQvtGC0L7QsdGA0LDQttC10L3QuNGPINC00L7Qv9GD0YHRgtC40LzRi9C10LTQtdC50YHRgtCy0LjRj9C/0LXRgNC10YLQsNGB0LrQuNCy0LDQvdC40Y8gJyArXG4gICfQuNC90YLQtdGA0LLQsNC70LzQtdC20LTRg9GN0LvQtdC80LXQvdGC0LDQvNC40YTQvtGA0LzRiyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCy0YvQstC+0LTQsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC/0L7Qu9C+0YHRi9C/0YDQvtC60YDRg9GC0LrQuCAnICtcbiAgJ9C40YHQv9C+0LvRjNC30YPQtdC80L7QtdC30L3QsNGH0LXQvdC40LXRgtC+0YfQutC40LHQuNGA0LbQtdCy0L7QudC00LjQsNCz0YDQsNC80LzRiyDQuNGB0YLQvtGA0LjRj9Cy0YvQsdC+0YDQsNC/0YDQuNCy0LLQvtC00LUg0LjRgdGC0L7Rh9C90LjQutC30L3QsNGH0LXQvdC40LnQvtGB0LjRgtC+0YfQtdC60LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0LjRgdGC0L7Rh9C90LjQutC30L3QsNGH0LXQvdC40Y/RgNCw0LfQvNC10YDQsNC/0YPQt9GL0YDRjNC60LDQtNC40LDQs9GA0LDQvNC80Ysg0LrQsNGC0LXQs9C+0YDQuNGP0LPRgNGD0L/Qv9GL0LrQvtC80LDQvdC0INC80LDQutGB0LjQvNGD0LzRgdC10YDQuNC5INC90LDRh9Cw0LvRjNC90L7QtdC+0YLQvtCx0YDQsNC20LXQvdC40LXQtNC10YDQtdCy0LAgJyArXG4gICfQvdCw0YfQsNC70YzQvdC+0LXQvtGC0L7QsdGA0LDQttC10L3QuNC10YHQv9C40YHQutCwINC+0LHQvdC+0LLQu9C10L3QuNC10YLQtdC60YHRgtCw0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDQvtGA0LjQtdC90YLQsNGG0LjRj9C00LXQvdC00YDQvtCz0YDQsNC80LzRiyDQvtGA0LjQtdC90YLQsNGG0LjRj9C00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C+0YDQuNC10L3RgtCw0YbQuNGP0LzQtdGC0L7QutC00LjQsNCz0YDQsNC80LzRiyDQvtGA0LjQtdC90YLQsNGG0LjRj9C80LXRgtC+0LrRgdCy0L7QtNC90L7QudC00LjQsNCz0YDQsNC80LzRiyDQvtGA0LjQtdC90YLQsNGG0LjRj9GN0LvQtdC80LXQvdGC0LDRhNC+0YDQvNGLINC+0YLQvtCx0YDQsNC20LXQvdC40LXQstC00LjQsNCz0YDQsNC80LzQtSAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQstC70LXQs9C10L3QtNC10LTQuNCw0LPRgNCw0LzQvNGLINC+0YLQvtCx0YDQsNC20LXQvdC40LXQs9GA0YPQv9C/0YvQutC90L7Qv9C+0Log0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC30LDQs9C+0LvQvtCy0LrQsNGI0LrQsNC70YvQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10LfQvdCw0YfQtdC90LjQudGB0LLQvtC00L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLINC+0YLQvtCx0YDQsNC20LXQvdC40LXQt9C90LDRh9C10L3QuNGP0LjQt9C80LXRgNC40YLQtdC70YzQvdC+0LnQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10LjQvdGC0LXRgNCy0LDQu9Cw0LTQuNCw0LPRgNCw0LzQvNGL0LPQsNC90YLQsCDQvtGC0L7QsdGA0LDQttC10L3QuNC10LrQvdC+0L/QutC4INC+0YLQvtCx0YDQsNC20LXQvdC40LXQutC90L7Qv9C60LjQstGL0LHQvtGA0LAg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC+0LHRgdGD0LbQtNC10L3QuNC50YTQvtGA0LzRiyAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQvtCx0YvRh9C90L7QudCz0YDRg9C/0L/RiyDQvtGC0L7QsdGA0LDQttC10L3QuNC10L7RgtGA0LjRhtCw0YLQtdC70YzQvdGL0YXQt9C90LDRh9C10L3QuNC50L/Rg9C30YvRgNGM0LrQvtCy0L7QudC00LjQsNCz0YDQsNC80LzRiyDQvtGC0L7QsdGA0LDQttC10L3QuNC10L/QsNC90LXQu9C40L/QvtC40YHQutCwICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC/0L7QtNGB0LrQsNC30LrQuCDQvtGC0L7QsdGA0LDQttC10L3QuNC10L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjRj9C/0YDQuNGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Lgg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGA0LDQt9C80LXRgtC60LjQv9C+0LvQvtGB0YvRgNC10LPRg9C70LjRgNC+0LLQsNC90LjRjyAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXRgdGC0YDQsNC90LjRhtGE0L7RgNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGC0LDQsdC70LjRhtGLINC+0YLQvtCx0YDQsNC20LXQvdC40LXRgtC10LrRgdGC0LDQt9C90LDRh9C10L3QuNGP0LTQuNCw0LPRgNCw0LzQvNGL0LPQsNC90YLQsCAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXRg9C/0YDQsNCy0LvQtdC90LjRj9C+0LHRi9GH0L3QvtC50LPRgNGD0L/Qv9GLINC+0YLQvtCx0YDQsNC20LXQvdC40LXRhNC40LPRg9GA0YvQutC90L7Qv9C60Lgg0L/QsNC70LjRgtGA0LDRhtCy0LXRgtC+0LLQtNC40LDQs9GA0LDQvNC80Ysg0L/QvtCy0LXQtNC10L3QuNC10L7QsdGL0YfQvdC+0LnQs9GA0YPQv9C/0YsgJyArXG4gICfQv9C+0LTQtNC10YDQttC60LDQvNCw0YHRiNGC0LDQsdCw0LTQtdC90LTRgNC+0LPRgNCw0LzQvNGLINC/0L7QtNC00LXRgNC20LrQsNC80LDRgdGI0YLQsNCx0LDQtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwINC/0L7QtNC00LXRgNC20LrQsNC80LDRgdGI0YLQsNCx0LDRgdCy0L7QtNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C/0L7QuNGB0LrQstGC0LDQsdC70LjRhtC10L/RgNC40LLQstC+0LTQtSDQv9C+0LvQvtC20LXQvdC40LXQt9Cw0LPQvtC70L7QstC60LDRjdC70LXQvNC10L3RgtCw0YTQvtGA0LzRiyDQv9C+0LvQvtC20LXQvdC40LXQutCw0YDRgtC40L3QutC40LrQvdC+0L/QutC40YTQvtGA0LzRiyAnICtcbiAgJ9C/0L7Qu9C+0LbQtdC90LjQtdC60LDRgNGC0LjQvdC60LjRjdC70LXQvNC10L3RgtCw0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0L/QvtC70L7QttC10L3QuNC10LrQvtC80LDQvdC00L3QvtC50L/QsNC90LXQu9C40YTQvtGA0LzRiyDQv9C+0LvQvtC20LXQvdC40LXQutC+0LzQsNC90LTQvdC+0LnQv9Cw0L3QtdC70LjRjdC70LXQvNC10L3RgtCw0YTQvtGA0LzRiyAnICtcbiAgJ9C/0L7Qu9C+0LbQtdC90LjQtdC+0L/QvtGA0L3QvtC50YLQvtGH0LrQuNC+0YLRgNC40YHQvtCy0LrQuCDQv9C+0LvQvtC20LXQvdC40LXQv9C+0LTQv9C40YHQtdC50LrQtNC40LDQs9GA0LDQvNC80LUg0L/QvtC70L7QttC10L3QuNC10L/QvtC00L/QuNGB0LXQudGI0LrQsNC70YvQt9C90LDRh9C10L3QuNC50LjQt9C80LXRgNC40YLQtdC70YzQvdC+0LnQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfQv9C+0LvQvtC20LXQvdC40LXRgdC+0YHRgtC+0Y/QvdC40Y/Qv9GA0L7RgdC80L7RgtGA0LAg0L/QvtC70L7QttC10L3QuNC10YHRgtGA0L7QutC40L/QvtC40YHQutCwINC/0L7Qu9C+0LbQtdC90LjQtdGC0LXQutGB0YLQsNGB0L7QtdC00LjQvdC40YLQtdC70YzQvdC+0LnQu9C40L3QuNC4INC/0L7Qu9C+0LbQtdC90LjQtdGD0L/RgNCw0LLQu9C10L3QuNGP0L/QvtC40YHQutC+0LwgJyArXG4gICfQv9C+0LvQvtC20LXQvdC40LXRiNC60LDQu9GL0LLRgNC10LzQtdC90Lgg0L/QvtGA0Y/QtNC+0LrQvtGC0L7QsdGA0LDQttC10L3QuNGP0YLQvtGH0LXQutCz0L7RgNC40LfQvtC90YLQsNC70YzQvdC+0LnQs9C40YHRgtC+0LPRgNCw0LzQvNGLINC/0L7RgNGP0LTQvtC60YHQtdGA0LjQudCy0LvQtdCz0LXQvdC00LXQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfRgNCw0LfQvNC10YDQutCw0YDRgtC40L3QutC4INGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdC30LDQs9C+0LvQvtCy0LrQsNGI0LrQsNC70YvQtNC40LDQs9GA0LDQvNC80Ysg0YDQsNGB0YLRj9Cz0LjQstCw0L3QuNC10L/QvtCy0LXRgNGC0LjQutCw0LvQuNC00LjQsNCz0YDQsNC80LzRi9Cz0LDQvdGC0LAgJyArXG4gICfRgNC10LbQuNC80LDQstGC0L7QvtGC0L7QsdGA0LDQttC10L3QuNGP0YHQvtGB0YLQvtGP0L3QuNGPINGA0LXQttC40LzQstCy0L7QtNCw0YHRgtGA0L7QutGC0LDQsdC70LjRhtGLINGA0LXQttC40LzQstGL0LHQvtGA0LDQvdC10LfQsNC/0L7Qu9C90LXQvdC90L7Qs9C+INGA0LXQttC40LzQstGL0LTQtdC70LXQvdC40Y/QtNCw0YLRiyAnICtcbiAgJ9GA0LXQttC40LzQstGL0LTQtdC70LXQvdC40Y/RgdGC0YDQvtC60LjRgtCw0LHQu9C40YbRiyDRgNC10LbQuNC80LLRi9C00LXQu9C10L3QuNGP0YLQsNCx0LvQuNGG0Ysg0YDQtdC20LjQvNC40LfQvNC10L3QtdC90LjRj9GA0LDQt9C80LXRgNCwINGA0LXQttC40LzQuNC30LzQtdC90LXQvdC40Y/RgdCy0Y/Qt9Cw0L3QvdC+0LPQvtC30L3QsNGH0LXQvdC40Y8gJyArXG4gICfRgNC10LbQuNC80LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/QtNC40LDQu9C+0LPQsNC/0LXRh9Cw0YLQuCDRgNC10LbQuNC80LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/Qv9Cw0YDQsNC80LXRgtGA0LDQutC+0LzQsNC90LTRiyDRgNC10LbQuNC80LzQsNGB0YjRgtCw0LHQuNGA0L7QstCw0L3QuNGP0L/RgNC+0YHQvNC+0YLRgNCwICcgK1xuICAn0YDQtdC20LjQvNC+0YHQvdC+0LLQvdC+0LPQvtC+0LrQvdCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINGA0LXQttC40LzQvtGC0LrRgNGL0YLQuNGP0L7QutC90LDRhNC+0YDQvNGLINGA0LXQttC40LzQvtGC0L7QsdGA0LDQttC10L3QuNGP0LLRi9C00LXQu9C10L3QuNGPICcgK1xuICAn0YDQtdC20LjQvNC+0YLQvtCx0YDQsNC20LXQvdC40Y/Qs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgNC10LbQuNC80L7RgtC+0LHRgNCw0LbQtdC90LjRj9C30L3QsNGH0LXQvdC40LnRgdC10YDQuNC4INGA0LXQttC40LzQvtGC0YDQuNGB0L7QstC60LjRgdC10YLQutC40LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80YsgJyArXG4gICfRgNC10LbQuNC80L/QvtC70YPQv9GA0L7Qt9GA0LDRh9C90L7RgdGC0LjQtNC40LDQs9GA0LDQvNC80Ysg0YDQtdC20LjQvNC/0YDQvtCx0LXQu9C+0LLQtNC40LDQs9GA0LDQvNC80Ysg0YDQtdC20LjQvNGA0LDQt9C80LXRidC10L3QuNGP0L3QsNGB0YLRgNCw0L3QuNGG0LUg0YDQtdC20LjQvNGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y/QutC+0LvQvtC90LrQuCAnICtcbiAgJ9GA0LXQttC40LzRgdCz0LvQsNC20LjQstCw0L3QuNGP0LTQuNCw0LPRgNCw0LzQvNGLINGA0LXQttC40LzRgdCz0LvQsNC20LjQstCw0L3QuNGP0LjQvdC00LjQutCw0YLQvtGA0LAg0YDQtdC20LjQvNGB0L/QuNGB0LrQsNC30LDQtNCw0Ycg0YHQutCy0L7Qt9C90L7QtdCy0YvRgNCw0LLQvdC40LLQsNC90LjQtSAnICtcbiAgJ9GB0L7RhdGA0LDQvdC10L3QuNC10LTQsNC90L3Ri9GF0YTQvtGA0LzRi9Cy0L3QsNGB0YLRgNC+0LnQutCw0YUg0YHQv9C+0YHQvtCx0LfQsNC/0L7Qu9C90LXQvdC40Y/RgtC10LrRgdGC0LDQt9Cw0LPQvtC70L7QstC60LDRiNC60LDQu9GL0LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YHQv9C+0YHQvtCx0L7Qv9GA0LXQtNC10LvQtdC90LjRj9C+0LPRgNCw0L3QuNGH0LjQstCw0Y7RidC10LPQvtC30L3QsNGH0LXQvdC40Y/QtNC40LDQs9GA0LDQvNC80Ysg0YHRgtCw0L3QtNCw0YDRgtC90LDRj9Cz0YDRg9C/0L/QsNC60L7QvNCw0L3QtCDRgdGC0LDQvdC00LDRgNGC0L3QvtC10L7RhNC+0YDQvNC70LXQvdC40LUgJyArXG4gICfRgdGC0LDRgtGD0YHQvtC/0L7QstC10YnQtdC90LjRj9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRgdGC0LjQu9GM0YHRgtGA0LXQu9C60Lgg0YLQuNC/0LDQv9C/0YDQvtC60YHQuNC80LDRhtC40LjQu9C40L3QuNC40YLRgNC10L3QtNCw0LTQuNCw0LPRgNCw0LzQvNGLINGC0LjQv9C00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GC0LjQv9C10LTQuNC90LjRhtGL0YjQutCw0LvRi9Cy0YDQtdC80LXQvdC4INGC0LjQv9C40LzQv9C+0YDRgtCw0YHQtdGA0LjQudGB0LvQvtGP0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0LvQuNC90LjQuNCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGC0LjQv9C70LjQvdC40LjQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfRgtC40L/QvNCw0YDQutC10YDQsNCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGC0LjQv9C80LDRgNC60LXRgNCw0LTQuNCw0LPRgNCw0LzQvNGLINGC0LjQv9C+0LHQu9Cw0YHRgtC40L7RhNC+0YDQvNC70LXQvdC40Y8gJyArXG4gICfRgtC40L/QvtGA0LPQsNC90LjQt9Cw0YbQuNC40LjRgdGC0L7Rh9C90LjQutCw0LTQsNC90L3Ri9GF0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0L7RgtC+0LHRgNCw0LbQtdC90LjRj9GB0LXRgNC40LjRgdC70L7Rj9Cz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLICcgK1xuICAn0YLQuNC/0L7RgtC+0LHRgNCw0LbQtdC90LjRj9GC0L7Rh9C10YfQvdC+0LPQvtC+0LHRitC10LrRgtCw0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0L7RgtC+0LHRgNCw0LbQtdC90LjRj9GI0LrQsNC70YvRjdC70LXQvNC10L3RgtCw0LvQtdCz0LXQvdC00YvQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyAnICtcbiAgJ9GC0LjQv9C/0L7QuNGB0LrQsNC+0LHRitC10LrRgtC+0LLQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/Qv9GA0L7QtdC60YbQuNC40LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0YDQsNC30LzQtdGJ0LXQvdC40Y/QuNC30LzQtdGA0LXQvdC40LkgJyArXG4gICfRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9GA0LXQutCy0LjQt9C40YLQvtCy0LjQt9C80LXRgNC10L3QuNC5INGC0LjQv9GA0LDQvNC60LjRjdC70LXQvNC10L3RgtCw0YPQv9GA0LDQstC70LXQvdC40Y8g0YLQuNC/0YHQstC+0LTQvdC+0LnQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfRgtC40L/RgdCy0Y/Qt9C40LTQuNCw0LPRgNCw0LzQvNGL0LPQsNC90YLQsCDRgtC40L/RgdC+0LXQtNC40L3QtdC90LjRj9C30L3QsNGH0LXQvdC40LnQv9C+0YHQtdGA0LjRj9C80LTQuNCw0LPRgNCw0LzQvNGLINGC0LjQv9GB0L7QtdC00LjQvdC10L3QuNGP0YLQvtGH0LXQutC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GC0LjQv9GB0L7QtdC00LjQvdC40YLQtdC70YzQvdC+0LnQu9C40L3QuNC4INGC0LjQv9GB0YLQvtGA0L7QvdGL0Y3Qu9C10LzQtdC90YLQsNCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGC0LjQv9GE0L7RgNC80YvQvtGC0YfQtdGC0LAg0YLQuNC/0YjQutCw0LvRi9GA0LDQtNCw0YDQvdC+0LnQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfRhNCw0LrRgtC+0YDQu9C40L3QuNC40YLRgNC10L3QtNCw0LTQuNCw0LPRgNCw0LzQvNGLINGE0LjQs9GD0YDQsNC60L3QvtC/0LrQuCDRhNC40LPRg9GA0YvQs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRhNC40LrRgdCw0YbQuNGP0LLRgtCw0LHQu9C40YbQtSDRhNC+0YDQvNCw0YLQtNC90Y/RiNC60LDQu9GL0LLRgNC10LzQtdC90LggJyArXG4gICfRhNC+0YDQvNCw0YLQutCw0YDRgtC40L3QutC4INGI0LjRgNC40L3QsNC/0L7QtNGH0LjQvdC10L3QvdGL0YXRjdC70LXQvNC10L3RgtC+0LLRhNC+0YDQvNGLICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINGB0LLQvtC50YHRgtCy0LAg0L/RgNC40LrQu9Cw0LTQvdGL0YUg0L7QsdGK0LXQutGC0L7QsiA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19vYmplY3RzX3Byb3BlcnRpZXMgPVxuICAn0LLQuNC00LTQstC40LbQtdC90LjRj9Cx0YPRhdCz0LDQu9GC0LXRgNC40Lgg0LLQuNC00LTQstC40LbQtdC90LjRj9C90LDQutC+0L/Qu9C10L3QuNGPINCy0LjQtNC/0LXRgNC40L7QtNCw0YDQtdCz0LjRgdGC0YDQsNGA0LDRgdGH0LXRgtCwINCy0LjQtNGB0YfQtdGC0LAg0LLQuNC00YLQvtGH0LrQuNC80LDRgNGI0YDRg9GC0LDQsdC40LfQvdC10YHQv9GA0L7RhtC10YHRgdCwICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQsNCz0YDQtdCz0LDRgtCw0YDQtdCz0LjRgdGC0YDQsNC90LDQutC+0L/Qu9C10L3QuNGPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LPRgNGD0L/Qv9C40Y3Qu9C10LzQtdC90YLQvtCyINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YDQtdC20LjQvNCw0L/RgNC+0LLQtdC00LXQvdC40Y8gJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGB0YDQtdC30LAg0L/QtdGA0LjQvtC00LjRh9C90L7RgdGC0YzQsNCz0YDQtdCz0LDRgtCw0YDQtdCz0LjRgdGC0YDQsNC90LDQutC+0L/Qu9C10L3QuNGPINGA0LXQttC40LzQsNCy0YLQvtCy0YDQtdC80Y8g0YDQtdC20LjQvNC30LDQv9C40YHQuNC00L7QutGD0LzQtdC90YLQsCDRgNC10LbQuNC80L/RgNC+0LLQtdC00LXQvdC40Y/QtNC+0LrRg9C80LXQvdGC0LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0L/Qu9Cw0L3RiyDQvtCx0LzQtdC90LAgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZXhjaGFuZ2VfcGxhbnMgPVxuICAn0LDQstGC0L7RgNC10LPQuNGB0YLRgNCw0YbQuNGP0LjQt9C80LXQvdC10L3QuNC5INC00L7Qv9GD0YHRgtC40LzRi9C50L3QvtC80LXRgNGB0L7QvtCx0YnQtdC90LjRjyDQvtGC0L/RgNCw0LLQutCw0Y3Qu9C10LzQtdC90YLQsNC00LDQvdC90YvRhSDQv9C+0LvRg9GH0LXQvdC40LXRjdC70LXQvNC10L3RgtCw0LTQsNC90L3Ri9GFICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINGC0LDQsdC70LjRh9C90YvQuSDQtNC+0LrRg9C80LXQvdGCID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3RhYnVsYXJfZG9jdW1lbnQgPVxuICAn0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNCw0YHRiNC40YTRgNC+0LLQutC40YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0L7RgNC40LXQvdGC0LDRhtC40Y/RgdGC0YDQsNC90LjRhtGLINC/0L7Qu9C+0LbQtdC90LjQtdC40YLQvtCz0L7QstC60L7Qu9C+0L3QvtC60YHQstC+0LTQvdC+0LnRgtCw0LHQu9C40YbRiyAnICtcbiAgJ9C/0L7Qu9C+0LbQtdC90LjQtdC40YLQvtCz0L7QstGB0YLRgNC+0LrRgdCy0L7QtNC90L7QudGC0LDQsdC70LjRhtGLINC/0L7Qu9C+0LbQtdC90LjQtdGC0LXQutGB0YLQsNC+0YLQvdC+0YHQuNGC0LXQu9GM0L3QvtC60LDRgNGC0LjQvdC60Lgg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10LfQsNCz0L7Qu9C+0LLQutCw0LPRgNGD0L/Qv9C40YDQvtCy0LrQuNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwICcgK1xuICAn0YHQv9C+0YHQvtCx0YfRgtC10L3QuNGP0LfQvdCw0YfQtdC90LjQudGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9C00LLRg9GB0YLQvtGA0L7QvdC90LXQudC/0LXRh9Cw0YLQuCDRgtC40L/Qt9Cw0L/QvtC70L3QtdC90LjRj9C+0LHQu9Cw0YHRgtC40YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgtC40L/QutGD0YDRgdC+0YDQvtCy0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0LvQuNC90LjQuNGA0LjRgdGD0L3QutCw0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0LvQuNC90LjQuNGP0YfQtdC50LrQuNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwICcgK1xuICAn0YLQuNC/0L3QsNC/0YDQsNCy0LvQtdC90LjRj9C/0LXRgNC10YXQvtC00LDRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0LLRi9C00LXQu9C10L3QuNGP0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0L7RgtC+0LHRgNCw0LbQtdC90LjRj9C70LjQvdC40LnRgdCy0L7QtNC90L7QudGC0LDQsdC70LjRhtGLICcgK1xuICAn0YLQuNC/0YDQsNC30LzQtdGJ0LXQvdC40Y/RgtC10LrRgdGC0LDRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/RgNC40YHRg9C90LrQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9GB0LzQtdGJ0LXQvdC40Y/RgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCAnICtcbiAgJ9GC0LjQv9GD0LfQvtGA0LDRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/RhNCw0LnQu9Cw0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQvtGH0L3QvtGB0YLRjNC/0LXRh9Cw0YLQuCDRh9C10YDQtdC00L7QstCw0L3QuNC10YDQsNGB0L/QvtC70L7QttC10L3QuNGP0YHRgtGA0LDQvdC40YYgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0L/Qu9Cw0L3QuNGA0L7QstGJ0LjQuiA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19zaGVkdWxlciA9XG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10LLRgNC10LzQtdC90LjRjdC70LXQvNC10L3RgtC+0LLQv9C70LDQvdC40YDQvtCy0YnQuNC60LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90L3Ri9C5INC00L7QutGD0LzQtdC90YIgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZm9ybWF0dGVkX2RvY3VtZW50ID1cbiAgJ9GC0LjQv9GE0LDQudC70LDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQt9Cw0L/RgNC+0YEgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfcXVlcnkgPVxuICAn0L7QsdGF0L7QtNGA0LXQt9GD0LvRjNGC0LDRgtCw0LfQsNC/0YDQvtGB0LAg0YLQuNC/0LfQsNC/0LjRgdC40LfQsNC/0YDQvtGB0LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0L/QvtGB0YLRgNC+0LjRgtC10LvRjCDQvtGC0YfQtdGC0LAgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfcmVwb3J0X2J1aWxkZXIgPVxuICAn0LLQuNC00LfQsNC/0L7Qu9C90LXQvdC40Y/RgNCw0YHRiNC40YTRgNC+0LLQutC40L/QvtGB0YLRgNC+0LjRgtC10LvRj9C+0YLRh9C10YLQsCDRgtC40L/QtNC+0LHQsNCy0LvQtdC90LjRj9C/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC5INGC0LjQv9C40LfQvNC10YDQtdC90LjRj9C/0L7RgdGC0YDQvtC40YLQtdC70Y/QvtGC0YfQtdGC0LAg0YLQuNC/0YDQsNC30LzQtdGJ0LXQvdC40Y/QuNGC0L7Qs9C+0LIgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YDQsNCx0L7RgtCwINGBINGE0LDQudC70LDQvNC4ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2ZpbGVzID1cbiAgJ9C00L7RgdGC0YPQv9C60YTQsNC50LvRgyDRgNC10LbQuNC80LTQuNCw0LvQvtCz0LDQstGL0LHQvtGA0LDRhNCw0LnQu9CwINGA0LXQttC40LzQvtGC0LrRgNGL0YLQuNGP0YTQsNC50LvQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C+0YHRgtGA0L7QuNGC0LXQu9GMINC30LDQv9GA0L7RgdCwID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3F1ZXJ5X2J1aWxkZXIgPVxuICAn0YLQuNC/0LjQt9C80LXRgNC10L3QuNGP0L/QvtGB0YLRgNC+0LjRgtC10LvRj9C30LDQv9GA0L7RgdCwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINCw0L3QsNC70LjQtyDQtNCw0L3QvdGL0YUgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZGF0YV9hbmFseXNpcyA9XG4gICfQstC40LTQtNCw0L3QvdGL0YXQsNC90LDQu9C40LfQsCDQvNC10YLQvtC00LrQu9Cw0YHRgtC10YDQuNC30LDRhtC40Lgg0YLQuNC/0LXQtNC40L3QuNGG0YvQuNC90YLQtdGA0LLQsNC70LDQstGA0LXQvNC10L3QuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFINGC0LjQv9C30LDQv9C+0LvQvdC10L3QuNGP0YLQsNCx0LvQuNGG0YvRgNC10LfRg9C70YzRgtCw0YLQsNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFICcgK1xuICAn0YLQuNC/0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/Rh9C40YHQu9C+0LLRi9GF0LfQvdCw0YfQtdC90LjQudCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFINGC0LjQv9C40YHRgtC+0YfQvdC40LrQsNC00LDQvdC90YvRhdC/0L7QuNGB0LrQsNCw0YHRgdC+0YbQuNCw0YbQuNC5INGC0LjQv9C60L7Qu9C+0L3QutC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YXQtNC10YDQtdCy0L7RgNC10YjQtdC90LjQuSAnICtcbiAgJ9GC0LjQv9C60L7Qu9C+0L3QutC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YXQutC70LDRgdGC0LXRgNC40LfQsNGG0LjRjyDRgtC40L/QutC+0LvQvtC90LrQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GF0L7QsdGJ0LDRj9GB0YLQsNGC0LjRgdGC0LjQutCwINGC0LjQv9C60L7Qu9C+0L3QutC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YXQv9C+0LjRgdC60LDRgdGB0L7RhtC40LDRhtC40LkgJyArXG4gICfRgtC40L/QutC+0LvQvtC90LrQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GF0L/QvtC40YHQutC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLQtdC5INGC0LjQv9C60L7Qu9C+0L3QutC40LzQvtC00LXQu9C40L/RgNC+0LPQvdC+0LfQsCDRgtC40L/QvNC10YDRi9GA0LDRgdGB0YLQvtGP0L3QuNGP0LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUgJyArXG4gICfRgtC40L/QvtGC0YHQtdGH0LXQvdC40Y/Qv9GA0LDQstC40LvQsNGB0YHQvtGG0LjQsNGG0LjQuCDRgtC40L/Qv9C+0LvRj9Cw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFINGC0LjQv9GB0YLQsNC90LTQsNGA0YLQuNC30LDRhtC40LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSDRgtC40L/Rg9C/0L7RgNGP0LTQvtGH0LjQstCw0L3QuNGP0L/RgNCw0LLQuNC70LDRgdGB0L7RhtC40LDRhtC40LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9GD0L/QvtGA0Y/QtNC+0YfQuNCy0LDQvdC40Y/RiNCw0LHQu9C+0L3QvtCy0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC10LnQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSDRgtC40L/Rg9C/0YDQvtGJ0LXQvdC40Y/QtNC10YDQtdCy0LDRgNC10YjQtdC90LjQuSAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSB4bWwsIGpzb24sIHhzLCBkb20sIHhkdG8sIHdlYi3RgdC10YDQstC40YHRiyA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc194bWxfanNvbl94c19kb21feGR0b193cyA9XG4gICd3c9C90LDQv9GA0LDQstC70LXQvdC40LXQv9Cw0YDQsNC80LXRgtGA0LAg0LLQsNGA0LjQsNC90YJ4cGF0aHhzINCy0LDRgNC40LDQvdGC0LfQsNC/0LjRgdC40LTQsNGC0Ytqc29uINCy0LDRgNC40LDQvdGC0L/RgNC+0YHRgtC+0LPQvtGC0LjQv9CweHMg0LLQuNC00LPRgNGD0L/Qv9GL0LzQvtC00LXQu9C4eHMg0LLQuNC00YTQsNGB0LXRgtCweGR0byAnICtcbiAgJ9C00LXQudGB0YLQstC40LXQv9C+0YHRgtGA0L7QuNGC0LXQu9GPZG9tINC30LDQstC10YDRiNC10L3QvdC+0YHRgtGM0L/RgNC+0YHRgtC+0LPQvtGC0LjQv9CweHMg0LfQsNCy0LXRgNGI0LXQvdC90L7RgdGC0YzRgdC+0YHRgtCw0LLQvdC+0LPQvtGC0LjQv9CweHMg0LfQsNCy0LXRgNGI0LXQvdC90L7RgdGC0YzRgdGF0LXQvNGLeHMg0LfQsNC/0YDQtdGJ0LXQvdC90YvQtdC/0L7QtNGB0YLQsNC90L7QstC60Lh4cyAnICtcbiAgJ9C40YHQutC70Y7Rh9C10L3QuNGP0LPRgNGD0L/Qv9C/0L7QtNGB0YLQsNC90L7QstC60Lh4cyDQutCw0YLQtdCz0L7RgNC40Y/QuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9Cw0YLRgNC40LHRg9GC0LB4cyDQutCw0YLQtdCz0L7RgNC40Y/QvtCz0YDQsNC90LjRh9C10L3QuNGP0LjQtNC10L3RgtC40YfQvdC+0YHRgtC4eHMg0LrQsNGC0LXQs9C+0YDQuNGP0L7Qs9GA0LDQvdC40YfQtdC90LjRj9C/0YDQvtGB0YLRgNCw0L3RgdGC0LLQuNC80LXQvXhzICcgK1xuICAn0LzQtdGC0L7QtNC90LDRgdC70LXQtNC+0LLQsNC90LjRj3hzINC80L7QtNC10LvRjNGB0L7QtNC10YDQttC40LzQvtCz0L54cyDQvdCw0LfQvdCw0YfQtdC90LjQtdGC0LjQv9CweG1sINC90LXQtNC+0L/Rg9GB0YLQuNC80YvQtdC/0L7QtNGB0YLQsNC90L7QstC60Lh4cyDQvtCx0YDQsNCx0L7RgtC60LDQv9GA0L7QsdC10LvRjNC90YvRhdGB0LjQvNCy0L7Qu9C+0LJ4cyDQvtCx0YDQsNCx0L7RgtC60LDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+eHMgJyArXG4gICfQvtCz0YDQsNC90LjRh9C10L3QuNC10LfQvdCw0YfQtdC90LjRj3hzINC/0LDRgNCw0LzQtdGC0YDRi9C+0YLQsdC+0YDQsNGD0LfQu9C+0LJkb20g0L/QtdGA0LXQvdC+0YHRgdGC0YDQvtC6anNvbiDQv9C+0LfQuNGG0LjRj9Cy0LTQvtC60YPQvNC10L3RgtC1ZG9tINC/0YDQvtCx0LXQu9GM0L3Ri9C10YHQuNC80LLQvtC70Yt4bWwg0YLQuNC/0LDRgtGA0LjQsdGD0YLQsHhtbCDRgtC40L/Qt9C90LDRh9C10L3QuNGPanNvbiAnICtcbiAgJ9GC0LjQv9C60LDQvdC+0L3QuNGH0LXRgdC60L7Qs9C+eG1sINGC0LjQv9C60L7QvNC/0L7QvdC10L3RgtGLeHMg0YLQuNC/0L/RgNC+0LLQtdGA0LrQuHhtbCDRgtC40L/RgNC10LfRg9C70YzRgtCw0YLQsGRvbXhwYXRoINGC0LjQv9GD0LfQu9CwZG9tINGC0LjQv9GD0LfQu9CweG1sINGE0L7RgNC80LB4bWwg0YTQvtGA0LzQsNC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNGPeHMgJyArXG4gICfRhNC+0YDQvNCw0YLQtNCw0YLRi2pzb24g0Y3QutGA0LDQvdC40YDQvtCy0LDQvdC40LXRgdC40LzQstC+0LvQvtCyanNvbiAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgdC40YHRgtC10LzQsCDQutC+0LzQv9C+0L3QvtCy0LrQuCDQtNCw0L3QvdGL0YUgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZGF0YV9jb21wb3NpdGlvbl9zeXN0ZW0gPVxuICAn0LLQuNC00YHRgNCw0LLQvdC10L3QuNGP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LTQtdC50YHRgtCy0LjQtdC+0LHRgNCw0LHQvtGC0LrQuNGA0LDRgdGI0LjRhNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQvdCw0L/RgNCw0LLQu9C10L3QuNC10YHQvtGA0YLQuNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdCy0LvQvtC20LXQvdC90YvRhdGN0LvQtdC80LXQvdGC0L7QstGA0LXQt9GD0LvRjNGC0LDRgtCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10LjRgtC+0LPQvtCy0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YDQsNGB0L/QvtC70L7QttC10L3QuNC10L/QvtC70LXQudCz0YDRg9C/0L/QuNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQv9C+0LvRj9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdGA0LXQutCy0LjQt9C40YLQvtCy0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXRgNC10YHRg9GA0YHQvtCy0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0LHRg9GF0LPQsNC70YLQtdGA0YHQutC+0LPQvtC+0YHRgtCw0YLQutCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0LLRi9Cy0L7QtNCw0YLQtdC60YHRgtCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgtC40L/Qs9GA0YPQv9C/0LjRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0LPRgNGD0L/Qv9GL0Y3Qu9C10LzQtdC90YLQvtCy0L7RgtCx0L7RgNCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0LTQvtC/0L7Qu9C90LXQvdC40Y/Qv9C10YDQuNC+0LTQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YLQuNC/0LfQsNCz0L7Qu9C+0LLQutCw0L/QvtC70LXQudC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9C80LDQutC10YLQsNCz0YDRg9C/0L/QuNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QvNCw0LrQtdGC0LDQvtCx0LvQsNGB0YLQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9C+0YHRgtCw0YLQutCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgtC40L/Qv9C10YDQuNC+0LTQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9GA0LDQt9C80LXRidC10L3QuNGP0YLQtdC60YHRgtCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0YHQstGP0LfQuNC90LDQsdC+0YDQvtCy0LTQsNC90L3Ri9GF0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0Y3Qu9C10LzQtdC90YLQsNGA0LXQt9GD0LvRjNGC0LDRgtCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQu9C10LPQtdC90LTRi9C00LjQsNCz0YDQsNC80LzRi9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9C/0YDQuNC80LXQvdC10L3QuNGP0L7RgtCx0L7RgNCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YDQtdC20LjQvNC+0YLQvtCx0YDQsNC20LXQvdC40Y/RjdC70LXQvNC10L3RgtCw0L3QsNGB0YLRgNC+0LnQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgNC10LbQuNC80L7RgtC+0LHRgNCw0LbQtdC90LjRj9C90LDRgdGC0YDQvtC10LrQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgdC+0YHRgtC+0Y/QvdC40LXRjdC70LXQvNC10L3RgtCw0L3QsNGB0YLRgNC+0LnQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YHQv9C+0YHQvtCx0LLQvtGB0YHRgtCw0L3QvtCy0LvQtdC90LjRj9C90LDRgdGC0YDQvtC10LrQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LXQttC40LzQutC+0LzQv9C+0L3QvtCy0LrQuNGA0LXQt9GD0LvRjNGC0LDRgtCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L/QsNGA0LDQvNC10YLRgNCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LDQstGC0L7Qv9C+0LfQuNGG0LjRj9GA0LXRgdGD0YDRgdC+0LLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnK1xuICAn0LLQsNGA0LjQsNC90YLQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9Cz0YDRg9C/0L/QuNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXRgNC10YHRg9GA0YHQvtCy0LLQtNC40LDQs9GA0LDQvNC80LXQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRhNC40LrRgdCw0YbQuNGP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGD0YHQu9C+0LLQvdC+0LPQvtC+0YTQvtGA0LzQu9C10L3QuNGP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0L/QvtGH0YLQsCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19lbWFpbCA9XG4gICfQstCw0LbQvdC+0YHRgtGM0LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0L7QstC+0LPQvtGB0L7QvtCx0YnQtdC90LjRjyDQvtCx0YDQsNCx0L7RgtC60LDRgtC10LrRgdGC0LDQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7Qs9C+0YHQvtC+0LHRidC10L3QuNGPINGB0L/QvtGB0L7QsdC60L7QtNC40YDQvtCy0LDQvdC40Y/QuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7Qs9C+0LLQu9C+0LbQtdC90LjRjyAnICtcbiAgJ9GB0L/QvtGB0L7QsdC60L7QtNC40YDQvtCy0LDQvdC40Y/QvdC1YXNjaWnRgdC40LzQstC+0LvQvtCy0LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0L7QstC+0LPQvtGB0L7QvtCx0YnQtdC90LjRjyDRgtC40L/RgtC10LrRgdGC0LDQv9C+0YfRgtC+0LLQvtCz0L7RgdC+0L7QsdGJ0LXQvdC40Y8g0L/RgNC+0YLQvtC60L7Qu9C40L3RgtC10YDQvdC10YLQv9C+0YfRgtGLICcgK1xuICAn0YHRgtCw0YLRg9GB0YDQsNC30LHQvtGA0LDQv9C+0YfRgtC+0LLQvtCz0L7RgdC+0L7QsdGJ0LXQvdC40Y8gJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0LbRg9GA0L3QsNC7INGA0LXQs9C40YHRgtGA0LDRhtC40LggPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfbG9nYm9vayA9XG4gICfRgNC10LbQuNC80YLRgNCw0L3Qt9Cw0LrRhtC40LjQt9Cw0L/QuNGB0LjQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0YHRgtCw0YLRg9GB0YLRgNCw0L3Qt9Cw0LrRhtC40LjQt9Cw0L/QuNGB0LjQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0YPRgNC+0LLQtdC90YzQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0LrRgNC40L/RgtC+0LPRgNCw0YTQuNGPID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2NyeXB0b2dyYXBoeSA9XG4gICfRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXRhdGA0LDQvdC40LvQuNGJ0LDRgdC10YDRgtC40YTQuNC60LDRgtC+0LLQutGA0LjQv9GC0L7Qs9GA0LDRhNC40Lgg0YDQtdC20LjQvNCy0LrQu9GO0YfQtdC90LjRj9GB0LXRgNGC0LjRhNC40LrQsNGC0L7QstC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDRgNC10LbQuNC80L/RgNC+0LLQtdGA0LrQuNGB0LXRgNGC0LjRhNC40LrQsNGC0LDQutGA0LjQv9GC0L7Qs9GA0LDRhNC40LggJyArXG4gICfRgtC40L/RhdGA0LDQvdC40LvQuNGJ0LDRgdC10YDRgtC40YTQuNC60LDRgtC+0LLQutGA0LjQv9GC0L7Qs9GA0LDRhNC40LggJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0gWklQID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3ppcCA9XG4gICfQutC+0LTQuNGA0L7QstC60LDQuNC80LXQvdGE0LDQudC70L7QstCyemlw0YTQsNC50LvQtSDQvNC10YLQvtC00YHQttCw0YLQuNGPemlwINC80LXRgtC+0LTRiNC40YTRgNC+0LLQsNC90LjRj3ppcCDRgNC10LbQuNC80LLQvtGB0YHRgtCw0L3QvtCy0LvQtdC90LjRj9C/0YPRgtC10LnRhNCw0LnQu9C+0LJ6aXAg0YDQtdC20LjQvNC+0LHRgNCw0LHQvtGC0LrQuNC/0L7QtNC60LDRgtCw0LvQvtCz0L7QsnppcCAnICtcbiAgJ9GA0LXQttC40LzRgdC+0YXRgNCw0L3QtdC90LjRj9C/0YPRgtC10Ll6aXAg0YPRgNC+0LLQtdC90YzRgdC20LDRgtC40Y96aXAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0gXG4gIC8vINCR0LvQvtC60LjRgNC+0LLQutCwINC00LDQvdC90YvRhSwg0KTQvtC90L7QstGL0LUg0LfQsNC00LDQvdC40Y8sINCQ0LLRgtC+0LzQsNGC0LjQt9C40YDQvtCy0LDQvdC90L7QtSDRgtC10YHRgtC40YDQvtCy0LDQvdC40LUsXG4gIC8vINCU0L7RgdGC0LDQstC70Y/QtdC80YvQtSDRg9Cy0LXQtNC+0LzQu9C10L3QuNGPLCDQktGB0YLRgNC+0LXQvdC90YvQtSDQv9C+0LrRg9C/0LrQuCwg0JjQvdGC0LXRgNC90LXRgiwg0KDQsNCx0L7RgtCwINGBINC00LLQvtC40YfQvdGL0LzQuCDQtNCw0L3QvdGL0LzQuCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19vdGhlciA9XG4gICfQt9Cy0YPQutC+0LLQvtC10L7Qv9C+0LLQtdGJ0LXQvdC40LUg0L3QsNC/0YDQsNCy0LvQtdC90LjQtdC/0LXRgNC10YXQvtC00LDQutGB0YLRgNC+0LrQtSDQv9C+0LfQuNGG0LjRj9Cy0L/QvtGC0L7QutC1INC/0L7RgNGP0LTQvtC60LHQsNC50YLQvtCyINGA0LXQttC40LzQsdC70L7QutC40YDQvtCy0LrQuNC00LDQvdC90YvRhSDRgNC10LbQuNC80YPQv9GA0LDQstC70LXQvdC40Y/QsdC70L7QutC40YDQvtCy0LrQvtC50LTQsNC90L3Ri9GFICcgK1xuICAn0YHQtdGA0LLQuNGB0LLRgdGC0YDQvtC10L3QvdGL0YXQv9C+0LrRg9C/0L7QuiDRgdC+0YHRgtC+0Y/QvdC40LXRhNC+0L3QvtCy0L7Qs9C+0LfQsNC00LDQvdC40Y8g0YLQuNC/0L/QvtC00L/QuNGB0YfQuNC60LDQtNC+0YHRgtCw0LLQu9GP0LXQvNGL0YXRg9Cy0LXQtNC+0LzQu9C10L3QuNC5INGD0YDQvtCy0LXQvdGM0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/Qt9Cw0YnQuNGJ0LXQvdC90L7Qs9C+0YHQvtC10LTQuNC90LXQvdC40Y9mdHAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YHRhdC10LzQsCDQt9Cw0L/RgNC+0YHQsCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19yZXF1ZXN0X3NjaGVtYSA9XG4gICfQvdCw0L/RgNCw0LLQu9C10L3QuNC10L/QvtGA0Y/QtNC60LDRgdGF0LXQvNGL0LfQsNC/0YDQvtGB0LAg0YLQuNC/0LTQvtC/0L7Qu9C90LXQvdC40Y/Qv9C10YDQuNC+0LTQsNC80LjRgdGF0LXQvNGL0LfQsNC/0YDQvtGB0LAg0YLQuNC/0LrQvtC90YLRgNC+0LvRjNC90L7QudGC0L7Rh9C60LjRgdGF0LXQvNGL0LfQsNC/0YDQvtGB0LAg0YLQuNC/0L7QsdGK0LXQtNC40L3QtdC90LjRj9GB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCAnICtcbiAgJ9GC0LjQv9C/0LDRgNCw0LzQtdGC0YDQsNC00L7RgdGC0YPQv9C90L7QudGC0LDQsdC70LjRhtGL0YHRhdC10LzRi9C30LDQv9GA0L7RgdCwINGC0LjQv9GB0L7QtdC00LjQvdC10L3QuNGP0YHRhdC10LzRi9C30LDQv9GA0L7RgdCwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINGB0LLQvtC50YHRgtCy0LAg0L7QsdGK0LXQutGC0L7QsiDQvNC10YLQsNC00LDQvdC90YvRhSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19wcm9wZXJ0aWVzX29mX21ldGFkYXRhX29iamVjdHMgPVxuICAnaHR0cNC80LXRgtC+0LQg0LDQstGC0L7QuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC+0LHRidC10LPQvtGA0LXQutCy0LjQt9C40YLQsCDQsNCy0YLQvtC/0YDQtdGE0LjQutGB0L3QvtC80LXRgNCw0LfQsNC00LDRh9C4INCy0LDRgNC40LDQvdGC0LLRgdGC0YDQvtC10L3QvdC+0LPQvtGP0LfRi9C60LAg0LLQuNC00LjQtdGA0LDRgNGF0LjQuCDQstC40LTRgNC10LPQuNGB0YLRgNCw0L3QsNC60L7Qv9C70LXQvdC40Y8gJyArXG4gICfQstC40LTRgtCw0LHQu9C40YbRi9Cy0L3QtdGI0L3QtdCz0L7QuNGB0YLQvtGH0L3QuNC60LDQtNCw0L3QvdGL0YUg0LfQsNC/0LjRgdGM0LTQstC40LbQtdC90LjQudC/0YDQuNC/0YDQvtCy0LXQtNC10L3QuNC4INC30LDQv9C+0LvQvdC10L3QuNC10L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC10Lkg0LjQvdC00LXQutGB0LjRgNC+0LLQsNC90LjQtSAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LHQsNC30YvQv9C70LDQvdCw0LLQuNC00L7QstGA0LDRgdGH0LXRgtCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LHRi9GB0YLRgNC+0LPQvtCy0YvQsdC+0YDQsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC+0LHRidC10LPQvtGA0LXQutCy0LjQt9C40YLQsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC/0L7QtNGH0LjQvdC10L3QuNGPICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L7Qv9C+0LjRgdC60LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNCw0LfQtNC10LvRj9C10LzRi9GF0LTQsNC90L3Ri9GF0L7QsdGJ0LXQs9C+0YDQtdC60LLQuNC30LjRgtCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YDQtdC60LLQuNC30LjRgtCwICcgK1xuICAn0L3QsNC30L3QsNGH0LXQvdC40LXQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C/0YDQuNC70L7QttC10L3QuNGPINC90LDQt9C90LDRh9C10L3QuNC10YDQsNGB0YjQuNGA0LXQvdC40Y/QutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L3QsNC/0YDQsNCy0LvQtdC90LjQtdC/0LXRgNC10LTQsNGH0Lgg0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvRhdC00LDQvdC90YvRhSAnICtcbiAgJ9C+0L/QtdGA0LDRgtC40LLQvdC+0LXQv9GA0L7QstC10LTQtdC90LjQtSDQvtGB0L3QvtCy0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQstC40LTQsNGA0LDRgdGH0LXRgtCwINC+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdCy0LjQtNCw0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40LrQuCDQvtGB0L3QvtCy0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQt9Cw0LTQsNGH0LggJyArXG4gICfQvtGB0L3QvtCy0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQv9C70LDQvdCw0L7QsdC80LXQvdCwINC+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdGB0L/RgNCw0LLQvtGH0L3QuNC60LAg0L7RgdC90L7QstC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10YHRh9C10YLQsCDQv9C10YDQtdC80LXRidC10L3QuNC10LPRgNCw0L3QuNGG0YvQv9GA0LjQv9GA0L7QstC10LTQtdC90LjQuCAnICtcbiAgJ9C/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0L3QvtC80LXRgNCw0LHQuNC30L3QtdGB0L/RgNC+0YbQtdGB0YHQsCDQv9C10YDQuNC+0LTQuNGH0L3QvtGB0YLRjNC90L7QvNC10YDQsNC00L7QutGD0LzQtdC90YLQsCDQv9C10YDQuNC+0LTQuNGH0L3QvtGB0YLRjNGA0LXQs9C40YHRgtGA0LDRgNCw0YHRh9C10YLQsCDQv9C10YDQuNC+0LTQuNGH0L3QvtGB0YLRjNGA0LXQs9C40YHRgtGA0LDRgdCy0LXQtNC10L3QuNC5ICcgK1xuICAn0L/QvtCy0YLQvtGA0L3QvtC10LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQstC+0LfQstGA0LDRidCw0LXQvNGL0YXQt9C90LDRh9C10L3QuNC5INC/0L7Qu9C90L7RgtC10LrRgdGC0L7QstGL0LnQv9C+0LjRgdC60L/RgNC40LLQstC+0LTQtdC/0L7RgdGC0YDQvtC60LUg0L/RgNC40L3QsNC00LvQtdC20L3QvtGB0YLRjNC+0LHRitC10LrRgtCwINC/0YDQvtCy0LXQtNC10L3QuNC1ICcgK1xuICAn0YDQsNC30LTQtdC70LXQvdC40LXQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC40L7QsdGJ0LXQs9C+0YDQtdC60LLQuNC30LjRgtCwINGA0LDQt9C00LXQu9C10L3QuNC10LTQsNC90L3Ri9GF0L7QsdGJ0LXQs9C+0YDQtdC60LLQuNC30LjRgtCwINGA0LDQt9C00LXQu9C10L3QuNC10YDQsNGB0YjQuNGA0LXQvdC40LnQutC+0L3RhNC40LPRg9GA0LDRhtC40LjQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAgJytcbiAgJ9GA0LXQttC40LzQsNCy0YLQvtC90YPQvNC10YDQsNGG0LjQuNC+0LHRitC10LrRgtC+0LIg0YDQtdC20LjQvNC30LDQv9C40YHQuNGA0LXQs9C40YHRgtGA0LAg0YDQtdC20LjQvNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0LzQvtC00LDQu9GM0L3QvtGB0YLQuCAnICtcbiAgJ9GA0LXQttC40LzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9GB0LjQvdGF0YDQvtC90L3Ri9GF0LLRi9C30L7QstC+0LLRgNCw0YHRiNC40YDQtdC90LjQudC/0LvQsNGC0YTQvtGA0LzRi9C40LLQvdC10YjQvdC40YXQutC+0LzQv9C+0L3QtdC90YIg0YDQtdC20LjQvNC/0L7QstGC0L7RgNC90L7Qs9C+0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/RgdC10LDQvdGB0L7QsiAnICtcbiAgJ9GA0LXQttC40LzQv9C+0LvRg9GH0LXQvdC40Y/QtNCw0L3QvdGL0YXQstGL0LHQvtGA0LDQv9GA0LjQstCy0L7QtNC10L/QvtGB0YLRgNC+0LrQtSDRgNC10LbQuNC80YHQvtCy0LzQtdGB0YLQuNC80L7RgdGC0Lgg0YDQtdC20LjQvNGB0L7QstC80LXRgdGC0LjQvNC+0YHRgtC40LjQvdGC0LXRgNGE0LXQudGB0LAgJyArXG4gICfRgNC10LbQuNC80YPQv9GA0LDQstC70LXQvdC40Y/QsdC70L7QutC40YDQvtCy0LrQvtC50LTQsNC90L3Ri9GF0L/QvtGD0LzQvtC70YfQsNC90LjRjiDRgdC10YDQuNC40LrQvtC00L7QstC/0LvQsNC90LDQstC40LTQvtCy0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0YHQtdGA0LjQuNC60L7QtNC+0LLQv9C70LDQvdCw0YHRh9C10YLQvtCyICcgK1xuICAn0YHQtdGA0LjQuNC60L7QtNC+0LLRgdC/0YDQsNCy0L7Rh9C90LjQutCwINGB0L7Qt9C00LDQvdC40LXQv9GA0LjQstCy0L7QtNC1INGB0L/QvtGB0L7QsdCy0YvQsdC+0YDQsCDRgdC/0L7RgdC+0LHQv9C+0LjRgdC60LDRgdGC0YDQvtC60LjQv9GA0LjQstCy0L7QtNC10L/QvtGB0YLRgNC+0LrQtSDRgdC/0L7RgdC+0LHRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPICcgK1xuICAn0YLQuNC/0LTQsNC90L3Ri9GF0YLQsNCx0LvQuNGG0YvQstC90LXRiNC90LXQs9C+0LjRgdGC0L7Rh9C90LjQutCw0LTQsNC90L3Ri9GFINGC0LjQv9C60L7QtNCw0L/Qu9Cw0L3QsNCy0LjQtNC+0LLRgNCw0YHRh9C10YLQsCDRgtC40L/QutC+0LTQsNGB0L/RgNCw0LLQvtGH0L3QuNC60LAg0YLQuNC/0LzQsNC60LXRgtCwINGC0LjQv9C90L7QvNC10YDQsNCx0LjQt9C90LXRgdC/0YDQvtGG0LXRgdGB0LAgJyArXG4gICfRgtC40L/QvdC+0LzQtdGA0LDQtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0L3QvtC80LXRgNCw0LfQsNC00LDRh9C4INGC0LjQv9GE0L7RgNC80Ysg0YPQtNCw0LvQtdC90LjQtdC00LLQuNC20LXQvdC40LkgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YDQsNC30L3Ri9C1ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2RpZmZlcmVudHMgPVxuICAn0LLQsNC20L3QvtGB0YLRjNC/0YDQvtCx0LvQtdC80YvQv9GA0LjQvNC10L3QtdC90LjRj9GA0LDRgdGI0LjRgNC10L3QuNGP0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCy0LDRgNC40LDQvdGC0LjQvdGC0LXRgNGE0LXQudGB0LDQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0LLQsNGA0LjQsNC90YLQvNCw0YHRiNGC0LDQsdCw0YTQvtGA0LzQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8gJyArXG4gICfQstCw0YDQuNCw0L3RgtC+0YHQvdC+0LLQvdC+0LPQvtGI0YDQuNGE0YLQsNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDQstCw0YDQuNCw0L3RgtGB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtC/0LXRgNC40L7QtNCwINCy0LDRgNC40LDQvdGC0YHRgtCw0L3QtNCw0YDRgtC90L7QudC00LDRgtGL0L3QsNGH0LDQu9CwINCy0LjQtNCz0YDQsNC90LjRhtGLINCy0LjQtNC60LDRgNGC0LjQvdC60LggJyArXG4gICfQstC40LTQvtGC0L7QsdGA0LDQttC10L3QuNGP0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+0L/QvtC40YHQutCwINCy0LjQtNGA0LDQvNC60Lgg0LLQuNC00YHRgNCw0LLQvdC10L3QuNGPINCy0LjQtNGG0LLQtdGC0LAg0LLQuNC00YfQuNGB0LvQvtCy0L7Qs9C+0LfQvdCw0YfQtdC90LjRjyDQstC40LTRiNGA0LjRhNGC0LAg0LTQvtC/0YPRgdGC0LjQvNCw0Y/QtNC70LjQvdCwINC00L7Qv9GD0YHRgtC40LzRi9C50LfQvdCw0LogJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtWJ5dGVvcmRlcm1hcmsg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvNC10YLQsNC00LDQvdC90YvRhdC/0L7Qu9C90L7RgtC10LrRgdGC0L7QstC+0LPQvtC/0L7QuNGB0LrQsCDQuNGB0YLQvtGH0L3QuNC60YDQsNGB0YjQuNGA0LXQvdC40LnQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LrQu9Cw0LLQuNGI0LAg0LrQvtC00LLQvtC30LLRgNCw0YLQsNC00LjQsNC70L7Qs9CwICcgK1xuICAn0LrQvtC00LjRgNC+0LLQutCweGJhc2Ug0LrQvtC00LjRgNC+0LLQutCw0YLQtdC60YHRgtCwINC90LDQv9GA0LDQstC70LXQvdC40LXQv9C+0LjRgdC60LAg0L3QsNC/0YDQsNCy0LvQtdC90LjQtdGB0L7RgNGC0LjRgNC+0LLQutC4INC+0LHQvdC+0LLQu9C10L3QuNC10L/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdGL0YXQtNCw0L3QvdGL0YUg0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LjQuNC30LzQtdC90LXQvdC40LjQtNCw0L3QvdGL0YUgJyArXG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10L/QsNC90LXQu9C40YDQsNC30LTQtdC70L7QsiDQv9GA0L7QstC10YDQutCw0LfQsNC/0L7Qu9C90LXQvdC40Y8g0YDQtdC20LjQvNC00LjQsNC70L7Qs9Cw0LLQvtC/0YDQvtGBINGA0LXQttC40LzQt9Cw0L/Rg9GB0LrQsNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDRgNC10LbQuNC80L7QutGA0YPQs9C70LXQvdC40Y8g0YDQtdC20LjQvNC+0YLQutGA0YvRgtC40Y/RhNC+0YDQvNC/0YDQuNC70L7QttC10L3QuNGPICcgK1xuICAn0YDQtdC20LjQvNC/0L7Qu9C90L7RgtC10LrRgdGC0L7QstC+0LPQvtC/0L7QuNGB0LrQsCDRgdC60L7RgNC+0YHRgtGM0LrQu9C40LXQvdGC0YHQutC+0LPQvtGB0L7QtdC00LjQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjQtdCy0L3QtdGI0L3QtdCz0L7QuNGB0YLQvtGH0L3QuNC60LDQtNCw0L3QvdGL0YUg0YHQvtGB0YLQvtGP0L3QuNC10L7QsdC90L7QstC70LXQvdC40Y/QutC+0L3RhNC40LPRg9GA0LDRhtC40LjQsdCw0LfRi9C00LDQvdC90YvRhSAnICtcbiAgJ9GB0L/QvtGB0L7QsdCy0YvQsdC+0YDQsNGB0LXRgNGC0LjRhNC40LrQsNGC0LB3aW5kb3dzINGB0L/QvtGB0L7QsdC60L7QtNC40YDQvtCy0LDQvdC40Y/RgdGC0YDQvtC60Lgg0YHRgtCw0YLRg9GB0YHQvtC+0LHRidC10L3QuNGPINGC0LjQv9Cy0L3QtdGI0L3QtdC50LrQvtC80L/QvtC90LXQvdGC0Ysg0YLQuNC/0L/Qu9Cw0YLRhNC+0YDQvNGLINGC0LjQv9C/0L7QstC10LTQtdC90LjRj9C60LvQsNCy0LjRiNC4ZW50ZXIgJyArXG4gICfRgtC40L/RjdC70LXQvNC10L3RgtCw0LjQvdGE0L7RgNC80LDRhtC40LjQvtCy0YvQv9C+0LvQvdC10L3QuNC40L7QsdC90L7QstC70LXQvdC40Y/QutC+0L3RhNC40LPRg9GA0LDRhtC40LjQsdCw0LfRi9C00LDQvdC90YvRhSDRg9GA0L7QstC10L3RjNC40LfQvtC70Y/RhtC40LjRgtGA0LDQvdC30LDQutGG0LjQuSDRhdC10YjRhNGD0L3QutGG0LjRjyDRh9Cw0YHRgtC40LTQsNGC0YsnO1xuXG4gIC8vIGNsYXNzOiDQstGB0YLRgNC+0LXQvdC90YvQtSDQvdCw0LHQvtGA0Ysg0LfQvdCw0YfQtdC90LjQuSwg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAo0YHQvtC00LXRgNC20LDRgiDQtNC+0YfQtdGA0L3QuNC1INC30L3QsNGH0LXQvdC40Y8sINC+0LHRgNCw0YnQtdC90LjRjyDQuiDQutC+0YLQvtGA0YvQvCDRh9C10YDQtdC3INGA0LDQt9GL0LzQtdC90L7QstCw0L3QuNC1KVxuICB2YXIgQ0xBU1MgPVxuICB2OF9zeXN0ZW1fc2V0c19vZl92YWx1ZXMgK1xuICB2OF9zeXN0ZW1fZW51bXNfaW50ZXJmYWNlICtcbiAgdjhfc3lzdGVtX2VudW1zX29iamVjdHNfcHJvcGVydGllcyArXG4gIHY4X3N5c3RlbV9lbnVtc19leGNoYW5nZV9wbGFucyArXG4gIHY4X3N5c3RlbV9lbnVtc190YWJ1bGFyX2RvY3VtZW50ICtcbiAgdjhfc3lzdGVtX2VudW1zX3NoZWR1bGVyICtcbiAgdjhfc3lzdGVtX2VudW1zX2Zvcm1hdHRlZF9kb2N1bWVudCArXG4gIHY4X3N5c3RlbV9lbnVtc19xdWVyeSArXG4gIHY4X3N5c3RlbV9lbnVtc19yZXBvcnRfYnVpbGRlciArXG4gIHY4X3N5c3RlbV9lbnVtc19maWxlcyArXG4gIHY4X3N5c3RlbV9lbnVtc19xdWVyeV9idWlsZGVyICtcbiAgdjhfc3lzdGVtX2VudW1zX2RhdGFfYW5hbHlzaXMgK1xuICB2OF9zeXN0ZW1fZW51bXNfeG1sX2pzb25feHNfZG9tX3hkdG9fd3MgK1xuICB2OF9zeXN0ZW1fZW51bXNfZGF0YV9jb21wb3NpdGlvbl9zeXN0ZW0gK1xuICB2OF9zeXN0ZW1fZW51bXNfZW1haWwgK1xuICB2OF9zeXN0ZW1fZW51bXNfbG9nYm9vayArXG4gIHY4X3N5c3RlbV9lbnVtc19jcnlwdG9ncmFwaHkgK1xuICB2OF9zeXN0ZW1fZW51bXNfemlwICtcbiAgdjhfc3lzdGVtX2VudW1zX290aGVyICtcbiAgdjhfc3lzdGVtX2VudW1zX3JlcXVlc3Rfc2NoZW1hICtcbiAgdjhfc3lzdGVtX2VudW1zX3Byb3BlcnRpZXNfb2ZfbWV0YWRhdGFfb2JqZWN0cyArXG4gIHY4X3N5c3RlbV9lbnVtc19kaWZmZXJlbnRzO1xuXG4gIC8vIHY4INC+0LHRidC40LUg0L7QsdGK0LXQutGC0YsgKNGDINC+0LHRitC10LrRgtC+0LIg0LXRgdGC0Ywg0LrQvtC90YHRgtGA0YPQutGC0L7RgCwg0Y3QutC30LXQvNC/0LvRj9GA0Ysg0YHQvtC30LTQsNGO0YLRgdGPINC80LXRgtC+0LTQvtC8INCd0J7QktCr0JkpID09PiB0eXBlXG4gIHZhciB2OF9zaGFyZWRfb2JqZWN0ID1cbiAgJ2NvbdC+0LHRitC10LrRgiBmdHDRgdC+0LXQtNC40L3QtdC90LjQtSBodHRw0LfQsNC/0YDQvtGBIGh0dHDRgdC10YDQstC40YHQvtGC0LLQtdGCIGh0dHDRgdC+0LXQtNC40L3QtdC90LjQtSB3c9C+0L/RgNC10LTQtdC70LXQvdC40Y8gd3PQv9GA0L7QutGB0LggeGJhc2Ug0LDQvdCw0LvQuNC30LTQsNC90L3Ri9GFINCw0L3QvdC+0YLQsNGG0LjRj3hzICcgK1xuICAn0LHQu9C+0LrQuNGA0L7QstC60LDQtNCw0L3QvdGL0YUg0LHRg9GE0LXRgNC00LLQvtC40YfQvdGL0YXQtNCw0L3QvdGL0YUg0LLQutC70Y7Rh9C10L3QuNC1eHMg0LLRi9GA0LDQttC10L3QuNC10LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LPQtdC90LXRgNCw0YLQvtGA0YHQu9GD0YfQsNC50L3Ri9GF0YfQuNGB0LXQuyDQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQsNGP0YHRhdC10LzQsCAnICtcbiAgJ9Cz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC40LXQutC+0L7RgNC00LjQvdCw0YLRiyDQs9GA0LDRhNC40YfQtdGB0LrQsNGP0YHRhdC10LzQsCDQs9GA0YPQv9C/0LDQvNC+0LTQtdC70Lh4cyDQtNCw0L3QvdGL0LXRgNCw0YHRiNC40YTRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LTQstC+0LjRh9C90YvQtdC00LDQvdC90YvQtSDQtNC10L3QtNGA0L7Qs9GA0LDQvNC80LAgJyArXG4gICfQtNC40LDQs9GA0LDQvNC80LAg0LTQuNCw0LPRgNCw0LzQvNCw0LPQsNC90YLQsCDQtNC40LDQu9C+0LPQstGL0LHQvtGA0LDRhNCw0LnQu9CwINC00LjQsNC70L7Qs9Cy0YvQsdC+0YDQsNGG0LLQtdGC0LAg0LTQuNCw0LvQvtCz0LLRi9Cx0L7RgNCw0YjRgNC40YTRgtCwINC00LjQsNC70L7Qs9GA0LDRgdC/0LjRgdCw0L3QuNGP0YDQtdCz0LvQsNC80LXQvdGC0L3QvtCz0L7Qt9Cw0LTQsNC90LjRjyAnICtcbiAgJ9C00LjQsNC70L7Qs9GA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y/RgdGC0LDQvdC00LDRgNGC0L3QvtCz0L7Qv9C10YDQuNC+0LTQsCDQtNC40LDQv9Cw0LfQvtC9INC00L7QutGD0LzQtdC90YJkb20g0LTQvtC60YPQvNC10L3Rgmh0bWwg0LTQvtC60YPQvNC10L3RgtCw0YbQuNGPeHMg0LTQvtGB0YLQsNCy0LvRj9C10LzQvtC10YPQstC10LTQvtC80LvQtdC90LjQtSAnICtcbiAgJ9C30LDQv9C40YHRjGRvbSDQt9Cw0L/QuNGB0YxmYXN0aW5mb3NldCDQt9Cw0L/QuNGB0YxodG1sINC30LDQv9C40YHRjGpzb24g0LfQsNC/0LjRgdGMeG1sINC30LDQv9C40YHRjHppcNGE0LDQudC70LAg0LfQsNC/0LjRgdGM0LTQsNC90L3Ri9GFINC30LDQv9C40YHRjNGC0LXQutGB0YLQsCDQt9Cw0L/QuNGB0YzRg9C30LvQvtCyZG9tICcgK1xuICAn0LfQsNC/0YDQvtGBINC30LDRidC40YnQtdC90L3QvtC10YHQvtC10LTQuNC90LXQvdC40LVvcGVuc3NsINC30L3QsNGH0LXQvdC40Y/Qv9C+0LvQtdC50YDQsNGB0YjQuNGE0YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC40LfQstC70LXRh9C10L3QuNC10YLQtdC60YHRgtCwINC40LzQv9C+0YDRgnhzINC40L3RgtC10YDQvdC10YLQv9C+0YfRgtCwICcgK1xuICAn0LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0L7QstC+0LXRgdC+0L7QsdGJ0LXQvdC40LUg0LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0L7QstGL0LnQv9GA0L7RhNC40LvRjCDQuNC90YLQtdGA0L3QtdGC0L/RgNC+0LrRgdC4INC40L3RgtC10YDQvdC10YLRgdC+0LXQtNC40L3QtdC90LjQtSDQuNC90YTQvtGA0LzQsNGG0LjRj9C00LvRj9C/0YDQuNC70L7QttC10L3QuNGPeHMgJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCw0YLRgNC40LHRg9GC0LB4cyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGB0L7QsdGL0YLQuNGP0LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INC40YHRgtC+0YfQvdC40LrQtNC+0YHRgtGD0L/QvdGL0YXQvdCw0YHRgtGA0L7QtdC60LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQuNGC0LXRgNCw0YLQvtGA0YPQt9C70L7QsmRvbSDQutCw0YDRgtC40L3QutCwINC60LLQsNC70LjRhNC40LrQsNGC0L7RgNGL0LTQsNGC0Ysg0LrQstCw0LvQuNGE0LjQutCw0YLQvtGA0YvQtNCy0L7QuNGH0L3Ri9GF0LTQsNC90L3Ri9GFINC60LLQsNC70LjRhNC40LrQsNGC0L7RgNGL0YHRgtGA0L7QutC4INC60LLQsNC70LjRhNC40LrQsNGC0L7RgNGL0YfQuNGB0LvQsCAnICtcbiAgJ9C60L7QvNC/0L7QvdC+0LLRidC40LrQvNCw0LrQtdGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQutC+0LzQv9C+0L3QvtCy0YnQuNC60L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC60L7QvdGB0YLRgNGD0LrRgtC+0YDQvNCw0LrQtdGC0LDQvtGE0L7RgNC80LvQtdC90LjRj9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0LrQvtC90YHRgtGA0YPQutGC0L7RgNC90LDRgdGC0YDQvtC10LrQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQutC+0L3RgdGC0YDRg9C60YLQvtGA0YTQvtGA0LzQsNGC0L3QvtC50YHRgtGA0L7QutC4INC70LjQvdC40Y8g0LzQsNC60LXRgtC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC80LDQutC10YLQvtCx0LvQsNGB0YLQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0LzQsNC60LXRgtC+0YTQvtGA0LzQu9C10L3QuNGP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LzQsNGB0LrQsHhzINC80LXQvdC10LTQttC10YDQutGA0LjQv9GC0L7Qs9GA0LDRhNC40Lgg0L3QsNCx0L7RgNGB0YXQtdC8eG1sINC90LDRgdGC0YDQvtC50LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC90LDRgdGC0YDQvtC50LrQuNGB0LXRgNC40LDQu9C40LfQsNGG0LjQuGpzb24gJyArXG4gICfQvtCx0YDQsNCx0L7RgtC60LDQutCw0YDRgtC40L3QvtC6INC+0LHRgNCw0LHQvtGC0LrQsNGA0LDRgdGI0LjRhNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQvtCx0YXQvtC00LTQtdGA0LXQstCwZG9tINC+0LHRitGP0LLQu9C10L3QuNC10LDRgtGA0LjQsdGD0YLQsHhzINC+0LHRitGP0LLQu9C10L3QuNC10L3QvtGC0LDRhtC40Lh4cyAnICtcbiAgJ9C+0LHRitGP0LLQu9C10L3QuNC10Y3Qu9C10LzQtdC90YLQsHhzINC+0L/QuNGB0LDQvdC40LXQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9GB0L7QsdGL0YLQuNGP0LTQvtGB0YLRg9C/0LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4ICcgK1xuICAn0L7Qv9C40YHQsNC90LjQtdC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0YHQvtCx0YvRgtC40Y/QvtGC0LrQsNC30LLQtNC+0YHRgtGD0L/QtdC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDQvtC/0LjRgdCw0L3QuNC10L7QsdGA0LDQsdC+0YLQutC40YDQsNGB0YjQuNGE0YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0L7Qv9C40YHQsNC90LjQtdC/0LXRgNC10LTQsNCy0LDQtdC80L7Qs9C+0YTQsNC50LvQsCDQvtC/0LjRgdCw0L3QuNC10YLQuNC/0L7QsiDQvtC/0YDQtdC00LXQu9C10L3QuNC10LPRgNGD0L/Qv9GL0LDRgtGA0LjQsdGD0YLQvtCyeHMg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdCz0YDRg9C/0L/Ri9C80L7QtNC10LvQuHhzICcgK1xuICAn0L7Qv9GA0LXQtNC10LvQtdC90LjQtdC+0LPRgNCw0L3QuNGH0LXQvdC40Y/QuNC00LXQvdGC0LjRh9C90L7RgdGC0Lh4cyDQvtC/0YDQtdC00LXQu9C10L3QuNC10L/RgNC+0YHRgtC+0LPQvtGC0LjQv9CweHMg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdGB0L7RgdGC0LDQstC90L7Qs9C+0YLQuNC/0LB4cyDQvtC/0YDQtdC00LXQu9C10L3QuNC10YLQuNC/0LDQtNC+0LrRg9C80LXQvdGC0LBkb20gJyArXG4gICfQvtC/0YDQtdC00LXQu9C10L3QuNGPeHBhdGh4cyDQvtGC0LHQvtGA0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0L/QsNC60LXRgtC+0YLQvtCx0YDQsNC20LDQtdC80YvRhdC00L7QutGD0LzQtdC90YLQvtCyINC/0LDRgNCw0LzQtdGC0YDQstGL0LHQvtGA0LAg0L/QsNGA0LDQvNC10YLRgNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0L/QsNGA0LDQvNC10YLRgNGL0LfQsNC/0LjRgdC4anNvbiDQv9Cw0YDQsNC80LXRgtGA0YvQt9Cw0L/QuNGB0Lh4bWwg0L/QsNGA0LDQvNC10YLRgNGL0YfRgtC10L3QuNGPeG1sINC/0LXRgNC10L7Qv9GA0LXQtNC10LvQtdC90LjQtXhzINC/0LvQsNC90LjRgNC+0LLRidC40Log0L/QvtC70LXQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSAnICtcbiAgJ9C/0L7Qu9C10LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0L/QvtGB0YLRgNC+0LjRgtC10LvRjGRvbSDQv9C+0YHRgtGA0L7QuNGC0LXQu9GM0LfQsNC/0YDQvtGB0LAg0L/QvtGB0YLRgNC+0LjRgtC10LvRjNC+0YLRh9C10YLQsCDQv9C+0YHRgtGA0L7QuNGC0LXQu9GM0L7RgtGH0LXRgtCw0LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUgJyArXG4gICfQv9C+0YHRgtGA0L7QuNGC0LXQu9GM0YHRhdC10Lx4bWwg0L/QvtGC0L7QuiDQv9C+0YLQvtC60LLQv9Cw0LzRj9GC0Lgg0L/QvtGH0YLQsCDQv9C+0YfRgtC+0LLQvtC10YHQvtC+0LHRidC10L3QuNC1INC/0YDQtdC+0LHRgNCw0LfQvtCy0LDQvdC40LV4c2wg0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjQtdC60LrQsNC90L7QvdC40YfQtdGB0LrQvtC80YN4bWwgJyArXG4gICfQv9GA0L7RhtC10YHRgdC+0YDQstGL0LLQvtC00LDRgNC10LfRg9C70YzRgtCw0YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GF0LLQutC+0LvQu9C10LrRhtC40Y7Qt9C90LDRh9C10L3QuNC5INC/0YDQvtGG0LXRgdGB0L7RgNCy0YvQstC+0LTQsNGA0LXQt9GD0LvRjNGC0LDRgtCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YXQstGC0LDQsdC70LjRh9C90YvQudC00L7QutGD0LzQtdC90YIgJyArXG4gICfQv9GA0L7RhtC10YHRgdC+0YDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNCw0LfRi9C80LXQvdC+0LLQsNGC0LXQu9GM0L/RgNC+0YHRgtGA0LDQvdGB0YLQstC40LzQtdC9ZG9tINGA0LDQvNC60LAg0YDQsNGB0L/QuNGB0LDQvdC40LXRgNC10LPQu9Cw0LzQtdC90YLQvdC+0LPQvtC30LDQtNCw0L3QuNGPINGA0LDRgdGI0LjRgNC10L3QvdC+0LXQuNC80Y94bWwgJyArXG4gICfRgNC10LfRg9C70YzRgtCw0YLRh9GC0LXQvdC40Y/QtNCw0L3QvdGL0YUg0YHQstC+0LTQvdCw0Y/QtNC40LDQs9GA0LDQvNC80LAg0YHQstGP0LfRjNC/0LDRgNCw0LzQtdGC0YDQsNCy0YvQsdC+0YDQsCDRgdCy0Y/Qt9GM0L/QvtGC0LjQv9GDINGB0LLRj9C30YzQv9C+0YLQuNC/0YPQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgdC10YDQuNCw0LvQuNC30LDRgtC+0YB4ZHRvICcgK1xuICAn0YHQtdGA0YLQuNGE0LjQutCw0YLQutC70LjQtdC90YLQsHdpbmRvd3Mg0YHQtdGA0YLQuNGE0LjQutCw0YLQutC70LjQtdC90YLQsNGE0LDQudC7INGB0LXRgNGC0LjRhNC40LrQsNGC0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC4INGB0LXRgNGC0LjRhNC40LrQsNGC0YvRg9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNGF0YbQtdC90YLRgNC+0LJ3aW5kb3dzICcgK1xuICAn0YHQtdGA0YLQuNGE0LjQutCw0YLRi9GD0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40YXRhtC10L3RgtGA0L7QstGE0LDQudC7INGB0LbQsNGC0LjQtdC00LDQvdC90YvRhSDRgdC40YHRgtC10LzQvdCw0Y/QuNC90YTQvtGA0LzQsNGG0LjRjyDRgdC+0L7QsdGJ0LXQvdC40LXQv9C+0LvRjNC30L7QstCw0YLQtdC70Y4g0YHQvtGH0LXRgtCw0L3QuNC10LrQu9Cw0LLQuNGIICcgK1xuICAn0YHRgNCw0LLQvdC10L3QuNC10LfQvdCw0YfQtdC90LjQuSDRgdGC0LDQvdC00LDRgNGC0L3QsNGP0LTQsNGC0LDQvdCw0YfQsNC70LAg0YHRgtCw0L3QtNCw0YDRgtC90YvQudC/0LXRgNC40L7QtCDRgdGF0LXQvNCweG1sINGB0YXQtdC80LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtCw0LHQu9C40YfQvdGL0LnQtNC+0LrRg9C80LXQvdGCICcgK1xuICAn0YLQtdC60YHRgtC+0LLRi9C50LTQvtC60YPQvNC10L3RgiDRgtC10YHRgtC40YDRg9C10LzQvtC10L/RgNC40LvQvtC20LXQvdC40LUg0YLQuNC/0LTQsNC90L3Ri9GFeG1sINGD0L3QuNC60LDQu9GM0L3Ri9C50LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YTQsNCx0YDQuNC60LB4ZHRvINGE0LDQudC7INGE0LDQudC70L7QstGL0LnQv9C+0YLQvtC6ICcgK1xuICAn0YTQsNGB0LXRgtC00LvQuNC90Yt4cyDRhNCw0YHQtdGC0LrQvtC70LjRh9C10YHRgtCy0LDRgNCw0LfRgNGP0LTQvtCy0LTRgNC+0LHQvdC+0LnRh9Cw0YHRgtC4eHMg0YTQsNGB0LXRgtC80LDQutGB0LjQvNCw0LvRjNC90L7Qs9C+0LLQutC70Y7Rh9Cw0Y7RidC10LPQvtC30L3QsNGH0LXQvdC40Y94cyAnICtcbiAgJ9GE0LDRgdC10YLQvNCw0LrRgdC40LzQsNC70YzQvdC+0LPQvtC40YHQutC70Y7Rh9Cw0Y7RidC10LPQvtC30L3QsNGH0LXQvdC40Y94cyDRhNCw0YHQtdGC0LzQsNC60YHQuNC80LDQu9GM0L3QvtC50LTQu9C40L3Ri3hzINGE0LDRgdC10YLQvNC40L3QuNC80LDQu9GM0L3QvtCz0L7QstC60LvRjtGH0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj3hzICcgK1xuICAn0YTQsNGB0LXRgtC80LjQvdC40LzQsNC70YzQvdC+0LPQvtC40YHQutC70Y7Rh9Cw0Y7RidC10LPQvtC30L3QsNGH0LXQvdC40Y94cyDRhNCw0YHQtdGC0LzQuNC90LjQvNCw0LvRjNC90L7QudC00LvQuNC90Yt4cyDRhNCw0YHQtdGC0L7QsdGA0LDQt9GG0LB4cyDRhNCw0YHQtdGC0L7QsdGJ0LXQs9C+0LrQvtC70LjRh9C10YHRgtCy0LDRgNCw0LfRgNGP0LTQvtCyeHMgJyArXG4gICfRhNCw0YHQtdGC0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPeHMg0YTQsNGB0LXRgtC/0YDQvtCx0LXQu9GM0L3Ri9GF0YHQuNC80LLQvtC70L7QsnhzINGE0LjQu9GM0YLRgNGD0LfQu9C+0LJkb20g0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90L3QsNGP0YHRgtGA0L7QutCwINGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC90YvQudC00L7QutGD0LzQtdC90YIgJyArXG4gICfRhNGA0LDQs9C80LXQvdGCeHMg0YXQtdGI0LjRgNC+0LLQsNC90LjQtdC00LDQvdC90YvRhSDRhdGA0LDQvdC40LvQuNGJ0LXQt9C90LDRh9C10L3QuNGPINGG0LLQtdGCINGH0YLQtdC90LjQtWZhc3RpbmZvc2V0INGH0YLQtdC90LjQtWh0bWwg0YfRgtC10L3QuNC1anNvbiDRh9GC0LXQvdC40LV4bWwg0YfRgtC10L3QuNC1emlw0YTQsNC50LvQsCAnICtcbiAgJ9GH0YLQtdC90LjQtdC00LDQvdC90YvRhSDRh9GC0LXQvdC40LXRgtC10LrRgdGC0LAg0YfRgtC10L3QuNC10YPQt9C70L7QsmRvbSDRiNGA0LjRhNGCINGN0LvQtdC80LXQvdGC0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnO1xuXG4gIC8vIHY4INGD0L3QuNCy0LXRgNGB0LDQu9GM0L3Ri9C1INC60L7Qu9C70LXQutGG0LjQuCDQt9C90LDRh9C10L3QuNC5ID09PiB0eXBlXG4gIHZhciB2OF91bml2ZXJzYWxfY29sbGVjdGlvbiA9XG4gICdjb21zYWZlYXJyYXkg0LTQtdGA0LXQstC+0LfQvdCw0YfQtdC90LjQuSDQvNCw0YHRgdC40LIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNC1INGB0L/QuNGB0L7QutC30L3QsNGH0LXQvdC40Lkg0YHRgtGA0YPQutGC0YPRgNCwINGC0LDQsdC70LjRhtCw0LfQvdCw0YfQtdC90LjQuSDRhNC40LrRgdC40YDQvtCy0LDQvdC90LDRj9GB0YLRgNGD0LrRgtGD0YDQsCAnICtcbiAgJ9GE0LjQutGB0LjRgNC+0LLQsNC90L3QvtC10YHQvtC+0YLQstC10YLRgdGC0LLQuNC1INGE0LjQutGB0LjRgNC+0LLQsNC90L3Ri9C50LzQsNGB0YHQuNCyICc7XG5cbiAgLy8gdHlwZSA6INCy0YHRgtGA0L7QtdC90L3Ri9C1INGC0LjQv9GLXG4gIHZhciBUWVBFID1cbiAgdjhfc2hhcmVkX29iamVjdCArXG4gIHY4X3VuaXZlcnNhbF9jb2xsZWN0aW9uO1xuXG4gIC8vIGxpdGVyYWwgOiDQv9GA0LjQvNC40YLQuNCy0L3Ri9C1INGC0LjQv9GLXG4gIHZhciBMSVRFUkFMID0gJ251bGwg0LjRgdGC0LjQvdCwINC70L7QttGMINC90LXQvtC/0YDQtdC00LXQu9C10L3Qvic7XG4gIFxuICAvLyBudW1iZXIgOiDRh9C40YHQu9CwXG4gIHZhciBOVU1CRVJTID0gaGxqcy5pbmhlcml0KGhsanMuTlVNQkVSX01PREUpO1xuXG4gIC8vIHN0cmluZyA6INGB0YLRgNC+0LrQuFxuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCJ8XFxcXHwnLCBlbmQ6ICdcInwkJyxcbiAgICBjb250YWluczogW3tiZWdpbjogJ1wiXCInfV1cbiAgfTtcblxuICAvLyBudW1iZXIgOiDQtNCw0YLRi1xuICB2YXIgREFURSA9IHtcbiAgICBiZWdpbjogXCInXCIsIGVuZDogXCInXCIsIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxkezR9KFtcXFxcLlxcXFxcXFxcLzotXT9cXFxcZHsyfSl7MCw1fSdcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIFxuICAvLyBjb21tZW50IDog0LrQvtC80LzQtdC90YLQsNGA0LjQuFxuICB2YXIgQ09NTUVOVFMgPSBobGpzLmluaGVyaXQoaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFKTtcbiAgXG4gIC8vIG1ldGEgOiDQuNC90YHRgtGA0YPQutGG0LjQuCDQv9GA0LXQv9GA0L7RhtC10YHRgdC+0YDQsCwg0LTQuNGA0LXQutGC0LjQstGLINC60L7QvNC/0LjQu9GP0YbQuNC4XG4gIHZhciBNRVRBID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgYmVnaW46ICcjfCYnLCBlbmQ6ICckJyxcbiAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiBLRVlXT1JEICsgTUVUQUtFWVdPUkR9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT01NRU5UU1xuICAgIF1cbiAgfTtcbiAgXG4gIC8vIHN5bWJvbCA6INC80LXRgtC60LAgZ290b1xuICB2YXIgU1lNQk9MID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICd+JywgZW5kOiAnO3w6JywgZXhjbHVkZUVuZDogdHJ1ZVxuICB9OyAgXG4gIFxuICAvLyBmdW5jdGlvbiA6INC+0LHRitGP0LLQu9C10L3QuNC1INC/0YDQvtGG0LXQtNGD0YAg0Lgg0YTRg9C90LrRhtC40LlcbiAgdmFyIEZVTkNUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICfQv9GA0L7RhtC10LTRg9GA0LB80YTRg9C90LrRhtC40Y8nLCBlbmQ6ICdcXFxcKScsIGtleXdvcmRzOiAn0L/RgNC+0YbQtdC00YPRgNCwINGE0YPQvdC60YbQuNGPJ30sXG4gICAgICB7YmVnaW46ICfQutC+0L3QtdGG0L/RgNC+0YbQtdC00YPRgNGLfNC60L7QvdC10YbRhNGD0L3QutGG0LjQuCcsIGtleXdvcmRzOiAn0LrQvtC90LXRhtC/0YDQvtGG0LXQtNGD0YDRiyDQutC+0L3QtdGG0YTRg9C90LrRhtC40LgnfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJywgZW5kc1BhcmVudCA6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICAgICAgICBiZWdpbjogVU5ERVJTQ09SRV9JREVOVF9SRSwgZW5kOiAnLCcsIGV4Y2x1ZGVFbmQ6IHRydWUsIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgICAga2V5d29yZDogJ9C30L3QsNGHJyxcbiAgICAgICAgICAgICAgbGl0ZXJhbDogTElURVJBTFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgICAgIFNUUklOR1MsXG4gICAgICAgICAgICAgIERBVEVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIENPTU1FTlRTXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IFVOREVSU0NPUkVfSURFTlRfUkV9KVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogS0VZV09SRCxcbiAgICAgIGJ1aWx0X2luOiBCVUlMVElOLFxuICAgICAgY2xhc3M6IENMQVNTLFxuICAgICAgdHlwZTogVFlQRSxcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBNRVRBLFxuICAgICAgRlVOQ1RJT04sXG4gICAgICBDT01NRU5UUyxcbiAgICAgIFNZTUJPTCxcbiAgICAgIE5VTUJFUlMsXG4gICAgICBTVFJJTkdTLFxuICAgICAgREFURVxuICAgIF0gIFxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHZhciByZWdleGVzID0ge1xuICAgICAgICBydWxlRGVjbGFyYXRpb246IFwiXlthLXpBLVpdW2EtekEtWjAtOS1dKlwiLFxuICAgICAgICB1bmV4cGVjdGVkQ2hhcnM6IFwiWyFAIyReJicsPyt+YHw6XVwiXG4gICAgfTtcblxuICAgIHZhciBrZXl3b3JkcyA9IFtcbiAgICAgICAgXCJBTFBIQVwiLFxuICAgICAgICBcIkJJVFwiLFxuICAgICAgICBcIkNIQVJcIixcbiAgICAgICAgXCJDUlwiLFxuICAgICAgICBcIkNSTEZcIixcbiAgICAgICAgXCJDVExcIixcbiAgICAgICAgXCJESUdJVFwiLFxuICAgICAgICBcIkRRVU9URVwiLFxuICAgICAgICBcIkhFWERJR1wiLFxuICAgICAgICBcIkhUQUJcIixcbiAgICAgICAgXCJMRlwiLFxuICAgICAgICBcIkxXU1BcIixcbiAgICAgICAgXCJPQ1RFVFwiLFxuICAgICAgICBcIlNQXCIsXG4gICAgICAgIFwiVkNIQVJcIixcbiAgICAgICAgXCJXU1BcIlxuICAgIF07XG5cbiAgICB2YXIgY29tbWVudE1vZGUgPSBobGpzLkNPTU1FTlQoXCI7XCIsIFwiJFwiKTtcblxuICAgIHZhciB0ZXJtaW5hbEJpbmFyeU1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC8lYlswLTFdKygtWzAtMV0rfChcXC5bMC0xXSspKyl7MCwxfS9cbiAgICB9O1xuXG4gICAgdmFyIHRlcm1pbmFsRGVjaW1hbE1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC8lZFswLTldKygtWzAtOV0rfChcXC5bMC05XSspKyl7MCwxfS9cbiAgICB9O1xuXG4gICAgdmFyIHRlcm1pbmFsSGV4YWRlY2ltYWxNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwic3ltYm9sXCIsXG4gICAgICAgIGJlZ2luOiAvJXhbMC05QS1GXSsoLVswLTlBLUZdK3woXFwuWzAtOUEtRl0rKSspezAsMX0vLFxuICAgIH07XG5cbiAgICB2YXIgY2FzZVNlbnNpdGl2aXR5SW5kaWNhdG9yTW9kZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInN5bWJvbFwiLFxuICAgICAgICBiZWdpbjogLyVbc2ldL1xuICAgIH07XG5cbiAgICB2YXIgcnVsZURlY2xhcmF0aW9uTW9kZSA9IHtcbiAgICAgICAgYmVnaW46IHJlZ2V4ZXMucnVsZURlY2xhcmF0aW9uICsgJ1xcXFxzKj0nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZW5kOiAvPS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFt7Y2xhc3NOYW1lOiBcImF0dHJpYnV0ZVwiLCBiZWdpbjogcmVnZXhlcy5ydWxlRGVjbGFyYXRpb259XVxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWxsZWdhbDogcmVnZXhlcy51bmV4cGVjdGVkQ2hhcnMsXG4gICAgICBrZXl3b3Jkczoga2V5d29yZHMuam9pbihcIiBcIiksXG4gICAgICBjb250YWluczogW1xuICAgICAgICAgIHJ1bGVEZWNsYXJhdGlvbk1vZGUsXG4gICAgICAgICAgY29tbWVudE1vZGUsXG4gICAgICAgICAgdGVybWluYWxCaW5hcnlNb2RlLFxuICAgICAgICAgIHRlcm1pbmFsRGVjaW1hbE1vZGUsXG4gICAgICAgICAgdGVybWluYWxIZXhhZGVjaW1hbE1vZGUsXG4gICAgICAgICAgY2FzZVNlbnNpdGl2aXR5SW5kaWNhdG9yTW9kZSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICAgIF1cbiAgICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgLy8gSVBcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYlxcXFxkezEsM31cXFxcLlxcXFxkezEsM31cXFxcLlxcXFxkezEsM31cXFxcLlxcXFxkezEsM30oOlxcXFxkezEsNX0pP1xcXFxiJ1xuICAgICAgfSxcbiAgICAgIC8vIE90aGVyIG51bWJlcnNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYlxcXFxkK1xcXFxiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gUmVxdWVzdHNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIihHRVR8UE9TVHxIRUFEfFBVVHxERUxFVEV8Q09OTkVDVHxPUFRJT05TfFBBVENIfFRSQUNFKScsIGVuZDogJ1wiJyxcbiAgICAgICAga2V5d29yZHM6ICdHRVQgUE9TVCBIRUFEIFBVVCBERUxFVEUgQ09OTkVDVCBPUFRJT05TIFBBVENIIFRSQUNFJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIERhdGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvXFxbLywgZW5kOiAvXFxdLyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgfSxcbiAgICAgIC8vIFN0cmluZ3NcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSA9ICdbYS16QS1aXyRdW2EtekEtWjAtOV8kXSonO1xuICB2YXIgSURFTlRfRlVOQ19SRVRVUk5fVFlQRV9SRSA9ICcoWypdfFthLXpBLVpfJF1bYS16QS1aMC05XyRdKiknO1xuXG4gIHZhciBBUzNfUkVTVF9BUkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdyZXN0X2FyZycsXG4gICAgYmVnaW46ICdbLl17M30nLCBlbmQ6IElERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMTBcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnYXMnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2FzIGJyZWFrIGNhc2UgY2F0Y2ggY2xhc3MgY29uc3QgY29udGludWUgZGVmYXVsdCBkZWxldGUgZG8gZHluYW1pYyBlYWNoICcgK1xuICAgICAgICAnZWxzZSBleHRlbmRzIGZpbmFsIGZpbmFsbHkgZm9yIGZ1bmN0aW9uIGdldCBpZiBpbXBsZW1lbnRzIGltcG9ydCBpbiBpbmNsdWRlICcgK1xuICAgICAgICAnaW5zdGFuY2VvZiBpbnRlcmZhY2UgaW50ZXJuYWwgaXMgbmFtZXNwYWNlIG5hdGl2ZSBuZXcgb3ZlcnJpZGUgcGFja2FnZSBwcml2YXRlICcgK1xuICAgICAgICAncHJvdGVjdGVkIHB1YmxpYyByZXR1cm4gc2V0IHN0YXRpYyBzdXBlciBzd2l0Y2ggdGhpcyB0aHJvdyB0cnkgdHlwZW9mIHVzZSB2YXIgdm9pZCAnICtcbiAgICAgICAgJ3doaWxlIHdpdGgnLFxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3BhY2thZ2UnLCBlbmQ6ICd7JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlRJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW1wb3J0IGluY2x1ZGUnLCBlbmQ6ICc7JyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2ltcG9ydCBpbmNsdWRlJ31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnW3s7XScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcUycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIEFTM19SRVNUX0FSR19NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJzpcXFxccyonICsgSURFTlRfRlVOQ19SRVRVUk5fVFlQRV9SRVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuTUVUSE9EX0dVQVJEXG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvIy9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBXZSB0cnkgdG8gc3VwcG9ydCBmdWxsIEFkYTIwMTJcbi8vXG4vLyBXZSBoaWdobGlnaHQgYWxsIGFwcGVhcmFuY2VzIG9mIHR5cGVzLCBrZXl3b3JkcywgbGl0ZXJhbHMgKHN0cmluZywgY2hhciwgbnVtYmVyLCBib29sKVxuLy8gYW5kIHRpdGxlcyAodXNlciBkZWZpbmVkIGZ1bmN0aW9uL3Byb2NlZHVyZS9wYWNrYWdlKVxuLy8gQ1NTIGNsYXNzZXMgYXJlIHNldCBhY2NvcmRpbmdseVxuLy9cbi8vIExhbmd1YWdlcyBjYXVzaW5nIHByb2JsZW1zIGZvciBsYW5ndWFnZSBkZXRlY3Rpb246XG4vLyB4bWwgKGJyb2tlbiBieSBGb28gOiBCYXIgdHlwZSksIGVsbSAoYnJva2VuIGJ5IEZvbyA6IEJhciB0eXBlKSwgdmJzY3JpcHQtaHRtbCAoYnJva2VuIGJ5IGJvZHkga2V5d29yZClcbi8vIHNxbCAoYWRhIGRlZmF1bHQudHh0IGhhcyBhIGxvdCBvZiBzcWwga2V5d29yZHMpXG5cbmZ1bmN0aW9uKGhsanMpIHtcbiAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIEFkYSBudW1lcmljIGxpdGVyYWxzLlxuICAgIC8vIHN0b2xlbiBmb3JtIHRoZSBWSERMIGhpZ2hsaWdodGVyXG5cbiAgICAvLyBEZWNpbWFsIGxpdGVyYWw6XG4gICAgdmFyIElOVEVHRVJfUkUgPSAnXFxcXGQoX3xcXFxcZCkqJztcbiAgICB2YXIgRVhQT05FTlRfUkUgPSAnW2VFXVstK10/JyArIElOVEVHRVJfUkU7XG4gICAgdmFyIERFQ0lNQUxfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnKFxcXFwuJyArIElOVEVHRVJfUkUgKyAnKT8nICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuXG4gICAgLy8gQmFzZWQgbGl0ZXJhbDpcbiAgICB2YXIgQkFTRURfSU5URUdFUl9SRSA9ICdcXFxcdysnO1xuICAgIHZhciBCQVNFRF9MSVRFUkFMX1JFID0gSU5URUdFUl9SRSArICcjJyArIEJBU0VEX0lOVEVHRVJfUkUgKyAnKFxcXFwuJyArIEJBU0VEX0lOVEVHRVJfUkUgKyAnKT8nICsgJyMnICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuXG4gICAgdmFyIE5VTUJFUl9SRSA9ICdcXFxcYignICsgQkFTRURfTElURVJBTF9SRSArICd8JyArIERFQ0lNQUxfTElURVJBTF9SRSArICcpJztcblxuICAgIC8vIElkZW50aWZpZXIgcmVnZXhcbiAgICB2YXIgSURfUkVHRVggPSAnW0EtWmEtel0oXz9bQS1aYS16MC05Ll0pKic7XG5cbiAgICAvLyBiYWQgY2hhcnMsIG9ubHkgYWxsb3dlZCBpbiBsaXRlcmFsc1xuICAgIHZhciBCQURfQ0hBUlMgPSAnW117fSUjXFwnXFxcIidcblxuICAgIC8vIEFkYSBkb2Vzbid0IGhhdmUgYmxvY2sgY29tbWVudHMsIG9ubHkgbGluZSBjb21tZW50c1xuICAgIHZhciBDT01NRU5UUyA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuXG4gICAgLy8gdmFyaWFibGUgZGVjbGFyYXRpb25zIG9mIHRoZSBmb3JtXG4gICAgLy8gRm9vIDogQmFyIDo9IEJhejtcbiAgICAvLyB3aGVyZSBvbmx5IEJhciB3aWxsIGJlIGhpZ2hsaWdodGVkXG4gICAgdmFyIFZBUl9ERUNMUyA9IHtcbiAgICAgICAgLy8gVE9ETzogVGhlc2Ugc3BhY2VzIGFyZSBub3QgcmVxdWlyZWQgYnkgdGhlIEFkYSBzeW50YXhcbiAgICAgICAgLy8gaG93ZXZlciwgSSBoYXZlIHlldCB0byBzZWUgaGFuZHdyaXR0ZW4gQWRhIGNvZGUgd2hlcmVcbiAgICAgICAgLy8gc29tZW9uZSBkb2VzIG5vdCBwdXQgc3BhY2VzIGFyb3VuZCA6XG4gICAgICAgIGJlZ2luOiAnXFxcXHMrOlxcXFxzKycsIGVuZDogJ1xcXFxzKig6PXw7fFxcXFwpfD0+fCQpJyxcbiAgICAgICAgLy8gZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIC8vIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gd29ya2Fyb3VuZCB0byBhdm9pZCBoaWdobGlnaHRpbmdcbiAgICAgICAgICAgICAgICAvLyBuYW1lZCBsb29wcyBhbmQgZGVjbGFyZSBibG9ja3NcbiAgICAgICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnbG9vcCBmb3IgZGVjbGFyZSBvdGhlcnMnLFxuICAgICAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIHByb3Blcmx5IGhpZ2hsaWdodCBhbGwgbW9kaWZpZXJzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ25vdCBudWxsIGNvbnN0YW50IGFjY2VzcyBmdW5jdGlvbiBwcm9jZWR1cmUgaW4gb3V0IGFsaWFzZWQgZXhjZXB0aW9uJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogSURfUkVHRVgsXG4gICAgICAgICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAgICAgJ2Fib3J0IGVsc2UgbmV3IHJldHVybiBhYnMgZWxzaWYgbm90IHJldmVyc2UgYWJzdHJhY3QgZW5kICcgK1xuICAgICAgICAgICAgICAgICdhY2NlcHQgZW50cnkgc2VsZWN0IGFjY2VzcyBleGNlcHRpb24gb2Ygc2VwYXJhdGUgYWxpYXNlZCBleGl0IG9yIHNvbWUgJyArXG4gICAgICAgICAgICAgICAgJ2FsbCBvdGhlcnMgc3VidHlwZSBhbmQgZm9yIG91dCBzeW5jaHJvbml6ZWQgYXJyYXkgZnVuY3Rpb24gb3ZlcnJpZGluZyAnICtcbiAgICAgICAgICAgICAgICAnYXQgdGFnZ2VkIGdlbmVyaWMgcGFja2FnZSB0YXNrIGJlZ2luIGdvdG8gcHJhZ21hIHRlcm1pbmF0ZSAnICtcbiAgICAgICAgICAgICAgICAnYm9keSBwcml2YXRlIHRoZW4gaWYgcHJvY2VkdXJlIHR5cGUgY2FzZSBpbiBwcm90ZWN0ZWQgY29uc3RhbnQgaW50ZXJmYWNlICcgK1xuICAgICAgICAgICAgICAgICdpcyByYWlzZSB1c2UgZGVjbGFyZSByYW5nZSBkZWxheSBsaW1pdGVkIHJlY29yZCB3aGVuIGRlbHRhIGxvb3AgcmVtIHdoaWxlICcgK1xuICAgICAgICAgICAgICAgICdkaWdpdHMgcmVuYW1lcyB3aXRoIGRvIG1vZCByZXF1ZXVlIHhvcicsXG4gICAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgICAgICdUcnVlIEZhbHNlJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIENPTU1FTlRTLFxuICAgICAgICAgICAgLy8gc3RyaW5ncyBcImZvb2JhclwiXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAvXCJcIi8sIHJlbGV2YW5jZTogMH1dXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gY2hhcmFjdGVycyAnJ1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBsaXRlcmFscyBhbHdheXMgY29udGFpbiBvbmUgY2hhclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46IC8nLicvXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIG51bWJlciBsaXRlcmFsc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46IE5VTUJFUl9SRSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gQXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICAgICAgYmVnaW46IFwiJ1wiICsgSURfUkVHRVgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIHBhY2thZ2UgZGVmaW5pdGlvbiwgbWF5YmUgaW5zaWRlIGdlbmVyaWNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGJ3aXRoXFxcXHMrKT8oXFxcXGJwcml2YXRlXFxcXHMrKT9cXFxcYnBhY2thZ2VcXFxccysoXFxcXGJib2R5XFxcXHMrKT8nLCBlbmQ6ICcoaXN8JCknLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiAncGFja2FnZSBib2R5JyxcbiAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24vcHJvY2VkdXJlIGRlY2xhcmF0aW9uL2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAvLyBtYXliZSBpbnNpZGUgZ2VuZXJpY1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnKFxcXFxiKHdpdGh8b3ZlcnJpZGluZylcXFxccyspP1xcXFxiKGZ1bmN0aW9ufHByb2NlZHVyZSlcXFxccysnLCBlbmQ6ICcoXFxcXGJpc3xcXFxcYndpdGh8XFxcXGJyZW5hbWVzfFxcXFwpXFxcXHMqOyknLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiAnb3ZlcnJpZGluZyBmdW5jdGlvbiBwcm9jZWR1cmUgd2l0aCBpcyByZW5hbWVzIHJldHVybicsXG4gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZS1tYXRjaCB0aGUgJ2Z1bmN0aW9uJyBrZXl3b3JkLCBzbyB0aGF0XG4gICAgICAgICAgICAgICAgLy8gdGhlIHRpdGxlIG1vZGUgYmVsb3cgbWF0Y2hlcyBvbmx5IGV4YWN0bHkgb25jZVxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgQ09NTUVOVFMsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5hbWUgb2YgdGhlIGZ1bmN0aW9uL3Byb2NlZHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGJ3aXRoXFxcXHMrKT9cXFxcYihmdW5jdGlvbnxwcm9jZWR1cmUpXFxcXHMrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogJyhcXFxcKHxcXFxccyt8JCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlsbGVnYWw6IEJBRF9DSEFSU1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAvLyAnc2VsZidcbiAgICAgICAgICAgICAgICAgICAgLy8gLy8gcGFyYW1ldGVyIHR5cGVzXG4gICAgICAgICAgICAgICAgICAgIFZBUl9ERUNMUyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYnJldHVyblxcXFxzKycsIGVuZDogJyhcXFxccyt8O3wkKScsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogJ3JldHVybicsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGRvbmUgd2l0aCBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlNcblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gbmV3IHR5cGUgZGVjbGFyYXRpb25zXG4gICAgICAgICAgICAgICAgLy8gbWF5YmUgaW5zaWRlIGdlbmVyaWNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKHN1Yik/dHlwZVxcXFxzKycsIGVuZDogJ1xcXFxzKycsXG4gICAgICAgICAgICAgICAga2V5d29yZHM6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogQkFEX0NIQVJTXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvLyBzZWUgY29tbWVudCBhYm92ZSB0aGUgZGVmaW5pdGlvblxuICAgICAgICAgICAgVkFSX0RFQ0xTLFxuXG4gICAgICAgICAgICAvLyBubyBtYXJrdXBcbiAgICAgICAgICAgIC8vIHJlbGV2YW5jZSBib29zdGVycyBmb3Igc21hbGwgc25pcHBldHNcbiAgICAgICAgICAgIC8vIHtiZWdpbjogJ1xcXFxzKj0+XFxcXHMqJ30sXG4gICAgICAgICAgICAvLyB7YmVnaW46ICdcXFxccyo6PVxcXFxzKid9LFxuICAgICAgICAgICAgLy8ge2JlZ2luOiAnXFxcXHMrOj1cXFxccysnfSxcbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgTlVNQkVSID0ge2NsYXNzTmFtZTogJ251bWJlcicsIGJlZ2luOiAnW1xcXFwkJV1cXFxcZCsnfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2FwYWNoZWNvbmYnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge2NsYXNzTmFtZTogJ3NlY3Rpb24nLCBiZWdpbjogJzwvPycsIGVuZDogJz4nfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAvLyBrZXl3b3JkcyBhcmVu4oCZdCBuZWVkZWQgZm9yIGhpZ2hsaWdodGluZyBwZXIgc2UsIHRoZXkgb25seSBib29zdCByZWxldmFuY2VcbiAgICAgICAgLy8gZm9yIGEgdmVyeSBnZW5lcmFsbHkgZGVmaW5lZCBtb2RlIChzdGFydHMgd2l0aCBhIHdvcmQsIGVuZHMgd2l0aCBsaW5lLWVuZFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIG5vbWFya3VwOlxuICAgICAgICAgICAgJ29yZGVyIGRlbnkgYWxsb3cgc2V0ZW52IHJld3JpdGVydWxlIHJld3JpdGVlbmdpbmUgcmV3cml0ZWNvbmQgZG9jdW1lbnRyb290ICcgK1xuICAgICAgICAgICAgJ3NldGhhbmRsZXIgZXJyb3Jkb2N1bWVudCBsb2FkbW9kdWxlIG9wdGlvbnMgaGVhZGVyIGxpc3RlbiBzZXJ2ZXJyb290ICcgK1xuICAgICAgICAgICAgJ3NlcnZlcm5hbWUnXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogLyQvLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgbGl0ZXJhbDogJ29uIG9mZiBhbGwnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdcXFxcc1xcXFxbJywgZW5kOiAnXFxcXF0kJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICAgICAgICBiZWdpbjogJ1tcXFxcJCVdXFxcXHsnLCBlbmQ6ICdcXFxcfScsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBOVU1CRVJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTlVNQkVSLFxuICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogL1xcUy9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkcgPSBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6ICcnfSk7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBobGpzLkNfTlVNQkVSX01PREUsIFNUUklOR11cbiAgfTtcbiAgdmFyIENPTU1FTlRfTU9ERV8xID0gaGxqcy5DT01NRU5UKCctLScsICckJyk7XG4gIHZhciBDT01NRU5UX01PREVfMiA9IGhsanMuQ09NTUVOVChcbiAgICAnXFxcXChcXFxcKicsXG4gICAgJ1xcXFwqXFxcXCknLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBDT01NRU5UX01PREVfMV0gLy9hbGxvdyBuZXN0aW5nXG4gICAgfVxuICApO1xuICB2YXIgQ09NTUVOVFMgPSBbXG4gICAgQ09NTUVOVF9NT0RFXzEsXG4gICAgQ09NTUVOVF9NT0RFXzIsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICBdO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydvc2FzY3JpcHQnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2Fib3V0IGFib3ZlIGFmdGVyIGFnYWluc3QgYW5kIGFyb3VuZCBhcyBhdCBiYWNrIGJlZm9yZSBiZWdpbm5pbmcgJyArXG4gICAgICAgICdiZWhpbmQgYmVsb3cgYmVuZWF0aCBiZXNpZGUgYmV0d2VlbiBidXQgYnkgY29uc2lkZXJpbmcgJyArXG4gICAgICAgICdjb250YWluIGNvbnRhaW5zIGNvbnRpbnVlIGNvcHkgZGl2IGRvZXMgZWlnaHRoIGVsc2UgZW5kIGVxdWFsICcgK1xuICAgICAgICAnZXF1YWxzIGVycm9yIGV2ZXJ5IGV4aXQgZmlmdGggZmlyc3QgZm9yIGZvdXJ0aCBmcm9tIGZyb250ICcgK1xuICAgICAgICAnZ2V0IGdpdmVuIGdsb2JhbCBpZiBpZ25vcmluZyBpbiBpbnRvIGlzIGl0IGl0cyBsYXN0IGxvY2FsIG1lICcgK1xuICAgICAgICAnbWlkZGxlIG1vZCBteSBuaW50aCBub3Qgb2Ygb24gb250byBvciBvdmVyIHByb3AgcHJvcGVydHkgcHV0IHJlZiAnICtcbiAgICAgICAgJ3JlZmVyZW5jZSByZXBlYXQgcmV0dXJuaW5nIHNjcmlwdCBzZWNvbmQgc2V0IHNldmVudGggc2luY2UgJyArXG4gICAgICAgICdzaXh0aCBzb21lIHRlbGwgdGVudGggdGhhdCB0aGV8MCB0aGVuIHRoaXJkIHRocm91Z2ggdGhydSAnICtcbiAgICAgICAgJ3RpbWVvdXQgdGltZXMgdG8gdHJhbnNhY3Rpb24gdHJ5IHVudGlsIHdoZXJlIHdoaWxlIHdob3NlIHdpdGggJyArXG4gICAgICAgICd3aXRob3V0JyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdBcHBsZVNjcmlwdCBmYWxzZSBsaW5lZmVlZCByZXR1cm4gcGkgcXVvdGUgcmVzdWx0IHNwYWNlIHRhYiB0cnVlJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnYWxpYXMgYXBwbGljYXRpb24gYm9vbGVhbiBjbGFzcyBjb25zdGFudCBkYXRlIGZpbGUgaW50ZWdlciBsaXN0ICcgK1xuICAgICAgICAnbnVtYmVyIHJlYWwgcmVjb3JkIHN0cmluZyB0ZXh0ICcgK1xuICAgICAgICAnYWN0aXZhdGUgYmVlcCBjb3VudCBkZWxheSBsYXVuY2ggbG9nIG9mZnNldCByZWFkIHJvdW5kICcgK1xuICAgICAgICAncnVuIHNheSBzdW1tYXJpemUgd3JpdGUgJyArXG4gICAgICAgICdjaGFyYWN0ZXIgY2hhcmFjdGVycyBjb250ZW50cyBkYXkgZnJvbnRtb3N0IGlkIGl0ZW0gbGVuZ3RoICcgK1xuICAgICAgICAnbW9udGggbmFtZSBwYXJhZ3JhcGggcGFyYWdyYXBocyByZXN0IHJldmVyc2UgcnVubmluZyB0aW1lIHZlcnNpb24gJyArXG4gICAgICAgICd3ZWVrZGF5IHdvcmQgd29yZHMgeWVhcidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBTVFJJTkcsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgJ1xcXFxiKGNsaXBib2FyZCBpbmZvfHRoZSBjbGlwYm9hcmR8aW5mbyBmb3J8bGlzdCAoZGlza3N8Zm9sZGVyKXwnICtcbiAgICAgICAgICAnbW91bnQgdm9sdW1lfHBhdGggdG98KGNsb3NlfG9wZW4gZm9yKSBhY2Nlc3N8KGdldHxzZXQpIGVvZnwnICtcbiAgICAgICAgICAnY3VycmVudCBkYXRlfGRvIHNoZWxsIHNjcmlwdHxnZXQgdm9sdW1lIHNldHRpbmdzfHJhbmRvbSBudW1iZXJ8JyArXG4gICAgICAgICAgJ3NldCB2b2x1bWV8c3lzdGVtIGF0dHJpYnV0ZXxzeXN0ZW0gaW5mb3x0aW1lIHRvIEdNVHwnICtcbiAgICAgICAgICAnKGxvYWR8cnVufHN0b3JlKSBzY3JpcHR8c2NyaXB0aW5nIGNvbXBvbmVudHN8JyArXG4gICAgICAgICAgJ0FTQ0lJIChjaGFyYWN0ZXJ8bnVtYmVyKXxsb2NhbGl6ZWQgc3RyaW5nfCcgK1xuICAgICAgICAgICdjaG9vc2UgKGFwcGxpY2F0aW9ufGNvbG9yfGZpbGV8ZmlsZSBuYW1lfCcgK1xuICAgICAgICAgICdmb2xkZXJ8ZnJvbSBsaXN0fHJlbW90ZSBhcHBsaWNhdGlvbnxVUkwpfCcgK1xuICAgICAgICAgICdkaXNwbGF5IChhbGVydHxkaWFsb2cpKVxcXFxifF5cXFxccypyZXR1cm5cXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICBiZWdpbjpcbiAgICAgICAgICAnXFxcXGIodGV4dCBpdGVtIGRlbGltaXRlcnN8Y3VycmVudCBhcHBsaWNhdGlvbnxtaXNzaW5nIHZhbHVlKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOlxuICAgICAgICAgICdcXFxcYihhcGFydCBmcm9tfGFzaWRlIGZyb218aW5zdGVhZCBvZnxvdXQgb2Z8Z3JlYXRlciB0aGFufCcgK1xuICAgICAgICAgIFwiaXNuJ3R8KGRvZXNuJ3R8ZG9lcyBub3QpIChlcXVhbHxjb21lIGJlZm9yZXxjb21lIGFmdGVyfGNvbnRhaW4pfFwiICtcbiAgICAgICAgICAnKGdyZWF0ZXJ8bGVzcykgdGhhbiggb3IgZXF1YWwpP3woc3RhcnRzP3xlbmRzfGJlZ2lucz8pIHdpdGh8JyArXG4gICAgICAgICAgJ2NvbnRhaW5lZCBieXxjb21lcyAoYmVmb3JlfGFmdGVyKXxhIChyZWZ8cmVmZXJlbmNlKXxQT1NJWCBmaWxlfCcgK1xuICAgICAgICAgICdQT1NJWCBwYXRofChkYXRlfHRpbWUpIHN0cmluZ3xxdW90ZWQgZm9ybSlcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdvbicsXG4gICAgICAgIGlsbGVnYWw6ICdbJHs9O1xcXFxuXScsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsIFBBUkFNU11cbiAgICAgIH1cbiAgICBdLmNvbmNhdChDT01NRU5UUyksXG4gICAgaWxsZWdhbDogJy8vfC0+fD0+fFxcXFxbXFxcXFsnXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ1BQX1BSSU1JVElWRV9UWVBFUyA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ1xcXFxiW2EtelxcXFxkX10qX3RcXFxcYidcbiAgfTtcblxuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKHU4P3xVKT9MP1wiJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKHU4P3xVKT9SXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCdcXFxcXFxcXD8uJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJy4nXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBOVU1CRVJTID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwYlswMVxcJ10rKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pXFxcXGIoW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKHV8VXxsfEx8dWx8VUx8ZnxGfGJ8QiknIH0sXG4gICAgICB7IGJlZ2luOiAnKC0/KShcXFxcYjBbeFhdW2EtZkEtRjAtOVxcJ10rfChcXFxcYltcXFxcZFxcJ10rKFxcXFwuW1xcXFxkXFwnXSopP3xcXFxcLltcXFxcZFxcJ10rKShbZUVdWy0rXT9bXFxcXGRcXCddKyk/KScgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFBSRVBST0NFU1NPUiA9ICAgICAgIHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogLyNcXHMqW2Etel0rXFxiLywgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgICdtZXRhLWtleXdvcmQnOlxuICAgICAgICAnaWYgZWxzZSBlbGlmIGVuZGlmIGRlZmluZSB1bmRlZiB3YXJuaW5nIGVycm9yIGxpbmUgJyArXG4gICAgICAgICdwcmFnbWEgaWZkZWYgaWZuZGVmIGluY2x1ZGUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXFxcXG4vLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoU1RSSU5HUywge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJ30pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgIGJlZ2luOiAvPFteXFxuPl0qPi8sIGVuZDogLyQvLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG5cbiAgdmFyIEZVTkNUSU9OX1RJVExFID0gaGxqcy5JREVOVF9SRSArICdcXFxccypcXFxcKCc7XG5cbiAgdmFyIENQUF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOiAnaW50IGZsb2F0IHdoaWxlIHByaXZhdGUgY2hhciBjYXRjaCBpbXBvcnQgbW9kdWxlIGV4cG9ydCB2aXJ0dWFsIG9wZXJhdG9yIHNpemVvZiAnICtcbiAgICAgICdkeW5hbWljX2Nhc3R8MTAgdHlwZWRlZiBjb25zdF9jYXN0fDEwIGNvbnN0IGZvciBzdGF0aWNfY2FzdHwxMCB1bmlvbiBuYW1lc3BhY2UgJyArXG4gICAgICAndW5zaWduZWQgbG9uZyB2b2xhdGlsZSBzdGF0aWMgcHJvdGVjdGVkIGJvb2wgdGVtcGxhdGUgbXV0YWJsZSBpZiBwdWJsaWMgZnJpZW5kICcgK1xuICAgICAgJ2RvIGdvdG8gYXV0byB2b2lkIGVudW0gZWxzZSBicmVhayBleHRlcm4gdXNpbmcgYXNtIGNhc2UgdHlwZWlkICcgK1xuICAgICAgJ3Nob3J0IHJlaW50ZXJwcmV0X2Nhc3R8MTAgZGVmYXVsdCBkb3VibGUgcmVnaXN0ZXIgZXhwbGljaXQgc2lnbmVkIHR5cGVuYW1lIHRyeSB0aGlzICcgK1xuICAgICAgJ3N3aXRjaCBjb250aW51ZSBpbmxpbmUgZGVsZXRlIGFsaWdub2YgY29uc3RleHByIGRlY2x0eXBlICcgK1xuICAgICAgJ25vZXhjZXB0IHN0YXRpY19hc3NlcnQgdGhyZWFkX2xvY2FsIHJlc3RyaWN0IF9Cb29sIGNvbXBsZXggX0NvbXBsZXggX0ltYWdpbmFyeSAnICtcbiAgICAgICdhdG9taWNfYm9vbCBhdG9taWNfY2hhciBhdG9taWNfc2NoYXIgJyArXG4gICAgICAnYXRvbWljX3VjaGFyIGF0b21pY19zaG9ydCBhdG9taWNfdXNob3J0IGF0b21pY19pbnQgYXRvbWljX3VpbnQgYXRvbWljX2xvbmcgYXRvbWljX3Vsb25nIGF0b21pY19sbG9uZyAnICtcbiAgICAgICdhdG9taWNfdWxsb25nIG5ldyB0aHJvdyByZXR1cm4gJyArXG4gICAgICAnYW5kIG9yIG5vdCcsXG4gICAgYnVpbHRfaW46ICdzdGQgc3RyaW5nIGNpbiBjb3V0IGNlcnIgY2xvZyBzdGRpbiBzdGRvdXQgc3RkZXJyIHN0cmluZ3N0cmVhbSBpc3RyaW5nc3RyZWFtIG9zdHJpbmdzdHJlYW0gJyArXG4gICAgICAnYXV0b19wdHIgZGVxdWUgbGlzdCBxdWV1ZSBzdGFjayB2ZWN0b3IgbWFwIHNldCBiaXRzZXQgbXVsdGlzZXQgbXVsdGltYXAgdW5vcmRlcmVkX3NldCAnICtcbiAgICAgICd1bm9yZGVyZWRfbWFwIHVub3JkZXJlZF9tdWx0aXNldCB1bm9yZGVyZWRfbXVsdGltYXAgYXJyYXkgc2hhcmVkX3B0ciBhYm9ydCBhYnMgYWNvcyAnICtcbiAgICAgICdhc2luIGF0YW4yIGF0YW4gY2FsbG9jIGNlaWwgY29zaCBjb3MgZXhpdCBleHAgZmFicyBmbG9vciBmbW9kIGZwcmludGYgZnB1dHMgZnJlZSBmcmV4cCAnICtcbiAgICAgICdmc2NhbmYgaXNhbG51bSBpc2FscGhhIGlzY250cmwgaXNkaWdpdCBpc2dyYXBoIGlzbG93ZXIgaXNwcmludCBpc3B1bmN0IGlzc3BhY2UgaXN1cHBlciAnICtcbiAgICAgICdpc3hkaWdpdCB0b2xvd2VyIHRvdXBwZXIgbGFicyBsZGV4cCBsb2cxMCBsb2cgbWFsbG9jIHJlYWxsb2MgbWVtY2hyIG1lbWNtcCBtZW1jcHkgbWVtc2V0IG1vZGYgcG93ICcgK1xuICAgICAgJ3ByaW50ZiBwdXRjaGFyIHB1dHMgc2NhbmYgc2luaCBzaW4gc25wcmludGYgc3ByaW50ZiBzcXJ0IHNzY2FuZiBzdHJjYXQgc3RyY2hyIHN0cmNtcCAnICtcbiAgICAgICdzdHJjcHkgc3RyY3NwbiBzdHJsZW4gc3RybmNhdCBzdHJuY21wIHN0cm5jcHkgc3RycGJyayBzdHJyY2hyIHN0cnNwbiBzdHJzdHIgdGFuaCB0YW4gJyArXG4gICAgICAndmZwcmludGYgdnByaW50ZiB2c3ByaW50ZiBlbmRsIGluaXRpYWxpemVyX2xpc3QgdW5pcXVlX3B0cicsXG4gICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbHB0ciBOVUxMJ1xuICB9O1xuXG4gIHZhciBFWFBSRVNTSU9OX0NPTlRBSU5TID0gW1xuICAgIENQUF9QUklNSVRJVkVfVFlQRVMsXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgTlVNQkVSUyxcbiAgICBTVFJJTkdTXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2MnLCAnY2MnLCAnaCcsICdjKysnLCAnaCsrJywgJ2hwcCddLFxuICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoW1xuICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKGRlcXVlfGxpc3R8cXVldWV8c3RhY2t8dmVjdG9yfG1hcHxzZXR8Yml0c2V0fG11bHRpc2V0fG11bHRpbWFwfHVub3JkZXJlZF9tYXB8dW5vcmRlcmVkX3NldHx1bm9yZGVyZWRfbXVsdGlzZXR8dW5vcmRlcmVkX211bHRpbWFwfGFycmF5KVxcXFxzKjwnLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZicsIENQUF9QUklNSVRJVkVfVFlQRVNdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OicsXG4gICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFRoaXMgbW9kZSBjb3ZlcnMgZXhwcmVzc2lvbiBjb250ZXh0IHdoZXJlIHdlIGNhbid0IGV4cGVjdCBhIGZ1bmN0aW9uXG4gICAgICAgIC8vIGRlZmluaXRpb24gYW5kIHNob3VsZG4ndCBoaWdobGlnaHQgYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlIG9uZTpcbiAgICAgICAgLy8gYHJldHVybiBzb21lKClgLCBgZWxzZSBpZigpYCwgYCh4KnN1bSgxLCAyKSlgXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAvPS8sIGVuZDogLzsvfSxcbiAgICAgICAgICB7YmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvfSxcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ25ldyB0aHJvdyByZXR1cm4gZWxzZScsIGVuZDogLzsvfVxuICAgICAgICBdLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgICAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoWydzZWxmJ10pLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdKSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLklERU5UX1JFICsgJ1tcXFxcKiZcXFxcc10rKSsnICsgRlVOQ1RJT05fVElUTEUsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcd1xcc1xcKiZdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogRlVOQ1RJT05fVElUTEUsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlRJVExFX01PREVdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HUyxcbiAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgQ1BQX1BSSU1JVElWRV9UWVBFU1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgUFJFUFJPQ0VTU09SXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIHN0cnVjdCcsIGVuZDogL1t7OzpdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW46IC88LywgZW5kOiAvPi8sIGNvbnRhaW5zOiBbJ3NlbGYnXX0sIC8vIHNraXAgZ2VuZXJpYyBzdHVmZlxuICAgICAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXSksXG4gICAgZXhwb3J0czoge1xuICAgICAgcHJlcHJvY2Vzc29yOiBQUkVQUk9DRVNTT1IsXG4gICAgICBzdHJpbmdzOiBTVFJJTkdTLFxuICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEU1xuICAgIH1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDUFAgPSBobGpzLmdldExhbmd1YWdlKCdjcHAnKS5leHBvcnRzO1xuXHRyZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYm9vbGVhbiBieXRlIHdvcmQgc3RyaW5nIFN0cmluZyBhcnJheSAnICsgQ1BQLmtleXdvcmRzLmtleXdvcmQsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3NldHVwIGxvb3Agd2hpbGUgY2F0Y2ggZm9yIGlmIGRvIGdvdG8gdHJ5IHN3aXRjaCBjYXNlIGVsc2UgJyArXG4gICAgICAgICdkZWZhdWx0IGJyZWFrIGNvbnRpbnVlIHJldHVybiAnICtcbiAgICAgICAgJ0tleWJvYXJkQ29udHJvbGxlciBNb3VzZUNvbnRyb2xsZXIgU29mdHdhcmVTZXJpYWwgJyArXG4gICAgICAgICdFdGhlcm5ldFNlcnZlciBFdGhlcm5ldENsaWVudCBMaXF1aWRDcnlzdGFsICcgK1xuICAgICAgICAnUm9ib3RDb250cm9sIEdTTVZvaWNlQ2FsbCBFdGhlcm5ldFVEUCBFc3Bsb3JhVEZUICcgK1xuICAgICAgICAnSHR0cENsaWVudCBSb2JvdE1vdG9yIFdpRmlDbGllbnQgR1NNU2Nhbm5lciAnICtcbiAgICAgICAgJ0ZpbGVTeXN0ZW0gU2NoZWR1bGVyIEdTTVNlcnZlciBZdW5DbGllbnQgWXVuU2VydmVyICcgK1xuICAgICAgICAnSVBBZGRyZXNzIEdTTUNsaWVudCBHU01Nb2RlbSBLZXlib2FyZCBFdGhlcm5ldCAnICtcbiAgICAgICAgJ0NvbnNvbGUgR1NNQmFuZCBFc3Bsb3JhIFN0ZXBwZXIgUHJvY2VzcyAnICtcbiAgICAgICAgJ1dpRmlVRFAgR1NNX1NNUyBNYWlsYm94IFVTQkhvc3QgRmlybWF0YSBQSW1hZ2UgJyArXG4gICAgICAgICdDbGllbnQgU2VydmVyIEdTTVBJTiBGaWxlSU8gQnJpZGdlIFNlcmlhbCAnICtcbiAgICAgICAgJ0VFUFJPTSBTdHJlYW0gTW91c2UgQXVkaW8gU2Vydm8gRmlsZSBUYXNrICcgK1xuICAgICAgICAnR1BSUyBXaUZpIFdpcmUgVEZUIEdTTSBTUEkgU0QgJyArXG4gICAgICAgICdydW5TaGVsbENvbW1hbmRBc3luY2hyb25vdXNseSBhbmFsb2dXcml0ZVJlc29sdXRpb24gJyArXG4gICAgICAgICdyZXRyaWV2ZUNhbGxpbmdOdW1iZXIgcHJpbnRGaXJtd2FyZVZlcnNpb24gJyArXG4gICAgICAgICdhbmFsb2dSZWFkUmVzb2x1dGlvbiBzZW5kRGlnaXRhbFBvcnRQYWlyICcgK1xuICAgICAgICAnbm9MaXN0ZW5PbkxvY2FsaG9zdCByZWFkSm95c3RpY2tCdXR0b24gc2V0RmlybXdhcmVWZXJzaW9uICcgK1xuICAgICAgICAncmVhZEpveXN0aWNrU3dpdGNoIHNjcm9sbERpc3BsYXlSaWdodCBnZXRWb2ljZUNhbGxTdGF0dXMgJyArXG4gICAgICAgICdzY3JvbGxEaXNwbGF5TGVmdCB3cml0ZU1pY3Jvc2Vjb25kcyBkZWxheU1pY3Jvc2Vjb25kcyAnICtcbiAgICAgICAgJ2JlZ2luVHJhbnNtaXNzaW9uIGdldFNpZ25hbFN0cmVuZ3RoIHJ1bkFzeW5jaHJvbm91c2x5ICcgK1xuICAgICAgICAnZ2V0QXN5bmNocm9ub3VzbHkgbGlzdGVuT25Mb2NhbGhvc3QgZ2V0Q3VycmVudENhcnJpZXIgJyArXG4gICAgICAgICdyZWFkQWNjZWxlcm9tZXRlciBtZXNzYWdlQXZhaWxhYmxlIHNlbmREaWdpdGFsUG9ydHMgJyArXG4gICAgICAgICdsaW5lRm9sbG93Q29uZmlnIGNvdW50cnlOYW1lV3JpdGUgcnVuU2hlbGxDb21tYW5kICcgK1xuICAgICAgICAncmVhZFN0cmluZ1VudGlsIHJld2luZERpcmVjdG9yeSByZWFkVGVtcGVyYXR1cmUgJyArXG4gICAgICAgICdzZXRDbG9ja0RpdmlkZXIgcmVhZExpZ2h0U2Vuc29yIGVuZFRyYW5zbWlzc2lvbiAnICtcbiAgICAgICAgJ2FuYWxvZ1JlZmVyZW5jZSBkZXRhY2hJbnRlcnJ1cHQgY291bnRyeU5hbWVSZWFkICcgK1xuICAgICAgICAnYXR0YWNoSW50ZXJydXB0IGVuY3J5cHRpb25UeXBlIHJlYWRCeXRlc1VudGlsICcgK1xuICAgICAgICAncm9ib3ROYW1lV3JpdGUgcmVhZE1pY3JvcGhvbmUgcm9ib3ROYW1lUmVhZCBjaXR5TmFtZVdyaXRlICcgK1xuICAgICAgICAndXNlck5hbWVXcml0ZSByZWFkSm95c3RpY2tZIHJlYWRKb3lzdGlja1ggbW91c2VSZWxlYXNlZCAnICtcbiAgICAgICAgJ29wZW5OZXh0RmlsZSBzY2FuTmV0d29ya3Mgbm9JbnRlcnJ1cHRzIGRpZ2l0YWxXcml0ZSAnICtcbiAgICAgICAgJ2JlZ2luU3BlYWtlciBtb3VzZVByZXNzZWQgaXNBY3Rpb25Eb25lIG1vdXNlRHJhZ2dlZCAnICtcbiAgICAgICAgJ2Rpc3BsYXlMb2dvcyBub0F1dG9zY3JvbGwgYWRkUGFyYW1ldGVyIHJlbW90ZU51bWJlciAnICtcbiAgICAgICAgJ2dldE1vZGlmaWVycyBrZXlib2FyZFJlYWQgdXNlck5hbWVSZWFkIHdhaXRDb250aW51ZSAnICtcbiAgICAgICAgJ3Byb2Nlc3NJbnB1dCBwYXJzZUNvbW1hbmQgcHJpbnRWZXJzaW9uIHJlYWROZXR3b3JrcyAnICtcbiAgICAgICAgJ3dyaXRlTWVzc2FnZSBibGlua1ZlcnNpb24gY2l0eU5hbWVSZWFkIHJlYWRNZXNzYWdlICcgK1xuICAgICAgICAnc2V0RGF0YU1vZGUgcGFyc2VQYWNrZXQgaXNMaXN0ZW5pbmcgc2V0Qml0T3JkZXIgJyArXG4gICAgICAgICdiZWdpblBhY2tldCBpc0RpcmVjdG9yeSBtb3RvcnNXcml0ZSBkcmF3Q29tcGFzcyAnICtcbiAgICAgICAgJ2RpZ2l0YWxSZWFkIGNsZWFyU2NyZWVuIHNlcmlhbEV2ZW50IHJpZ2h0VG9MZWZ0ICcgK1xuICAgICAgICAnc2V0VGV4dFNpemUgbGVmdFRvUmlnaHQgcmVxdWVzdEZyb20ga2V5UmVsZWFzZWQgJyArXG4gICAgICAgICdjb21wYXNzUmVhZCBhbmFsb2dXcml0ZSBpbnRlcnJ1cHRzIFdpRmlTZXJ2ZXIgJyArXG4gICAgICAgICdkaXNjb25uZWN0IHBsYXlNZWxvZHkgcGFyc2VGbG9hdCBhdXRvc2Nyb2xsICcgK1xuICAgICAgICAnZ2V0UElOVXNlZCBzZXRQSU5Vc2VkIHNldFRpbWVvdXQgc2VuZEFuYWxvZyAnICtcbiAgICAgICAgJ3JlYWRTbGlkZXIgYW5hbG9nUmVhZCBiZWdpbldyaXRlIGNyZWF0ZUNoYXIgJyArXG4gICAgICAgICdtb3RvcnNTdG9wIGtleVByZXNzZWQgdGVtcG9Xcml0ZSByZWFkQnV0dG9uICcgK1xuICAgICAgICAnc3VibmV0TWFzayBkZWJ1Z1ByaW50IG1hY0FkZHJlc3Mgd3JpdGVHcmVlbiAnICtcbiAgICAgICAgJ3JhbmRvbVNlZWQgYXR0YWNoR1BSUyByZWFkU3RyaW5nIHNlbmRTdHJpbmcgJyArXG4gICAgICAgICdyZW1vdGVQb3J0IHJlbGVhc2VBbGwgbW91c2VNb3ZlZCBiYWNrZ3JvdW5kICcgK1xuICAgICAgICAnZ2V0WENoYW5nZSBnZXRZQ2hhbmdlIGFuc3dlckNhbGwgZ2V0UmVzdWx0ICcgK1xuICAgICAgICAndm9pY2VDYWxsIGVuZFBhY2tldCBjb25zdHJhaW4gZ2V0U29ja2V0IHdyaXRlSlNPTiAnICtcbiAgICAgICAgJ2dldEJ1dHRvbiBhdmFpbGFibGUgY29ubmVjdGVkIGZpbmRVbnRpbCByZWFkQnl0ZXMgJyArXG4gICAgICAgICdleGl0VmFsdWUgcmVhZEdyZWVuIHdyaXRlQmx1ZSBzdGFydExvb3AgSVBBZGRyZXNzICcgK1xuICAgICAgICAnaXNQcmVzc2VkIHNlbmRTeXNleCBwYXVzZU1vZGUgZ2F0ZXdheUlQIHNldEN1cnNvciAnICtcbiAgICAgICAgJ2dldE9lbUtleSB0dW5lV3JpdGUgbm9EaXNwbGF5IGxvYWRJbWFnZSBzd2l0Y2hQSU4gJyArXG4gICAgICAgICdvblJlcXVlc3Qgb25SZWNlaXZlIGNoYW5nZVBJTiBwbGF5RmlsZSBub0J1ZmZlciAnICtcbiAgICAgICAgJ3BhcnNlSW50IG92ZXJmbG93IGNoZWNrUElOIGtub2JSZWFkIGJlZ2luVEZUICcgK1xuICAgICAgICAnYml0Q2xlYXIgdXBkYXRlSVIgYml0V3JpdGUgcG9zaXRpb24gd3JpdGVSR0IgJyArXG4gICAgICAgICdoaWdoQnl0ZSB3cml0ZVJlZCBzZXRTcGVlZCByZWFkQmx1ZSBub1N0cm9rZSAnICtcbiAgICAgICAgJ3JlbW90ZUlQIHRyYW5zZmVyIHNodXRkb3duIGhhbmdDYWxsIGJlZ2luU01TICcgK1xuICAgICAgICAnZW5kV3JpdGUgYXR0YWNoZWQgbWFpbnRhaW4gbm9DdXJzb3IgY2hlY2tSZWcgJyArXG4gICAgICAgICdjaGVja1BVSyBzaGlmdE91dCBpc1ZhbGlkIHNoaWZ0SW4gcHVsc2VJbiAnICtcbiAgICAgICAgJ2Nvbm5lY3QgcHJpbnRsbiBsb2NhbElQIHBpbk1vZGUgZ2V0SU1FSSAnICtcbiAgICAgICAgJ2Rpc3BsYXkgbm9CbGluayBwcm9jZXNzIGdldEJhbmQgcnVubmluZyBiZWdpblNEICcgK1xuICAgICAgICAnZHJhd0JNUCBsb3dCeXRlIHNldEJhbmQgcmVsZWFzZSBiaXRSZWFkIHByZXBhcmUgJyArXG4gICAgICAgICdwb2ludFRvIHJlYWRSZWQgc2V0TW9kZSBub0ZpbGwgcmVtb3ZlIGxpc3RlbiAnICtcbiAgICAgICAgJ3N0cm9rZSBkZXRhY2ggYXR0YWNoIG5vVG9uZSBleGlzdHMgYnVmZmVyICcgK1xuICAgICAgICAnaGVpZ2h0IGJpdFNldCBjaXJjbGUgY29uZmlnIGN1cnNvciByYW5kb20gJyArXG4gICAgICAgICdJUnJlYWQgc2V0RE5TIGVuZFNNUyBnZXRLZXkgbWljcm9zICcgK1xuICAgICAgICAnbWlsbGlzIGJlZ2luIHByaW50IHdyaXRlIHJlYWR5IGZsdXNoIHdpZHRoICcgK1xuICAgICAgICAnaXNQSU4gYmxpbmsgY2xlYXIgcHJlc3MgbWtkaXIgcm1kaXIgY2xvc2UgJyArXG4gICAgICAgICdwb2ludCB5aWVsZCBpbWFnZSBCU1NJRCBjbGljayBkZWxheSAnICtcbiAgICAgICAgJ3JlYWQgdGV4dCBtb3ZlIHBlZWsgYmVlcCByZWN0IGxpbmUgb3BlbiAnICtcbiAgICAgICAgJ3NlZWsgZmlsbCBzaXplIHR1cm4gc3RvcCBob21lIGZpbmQgJyArXG4gICAgICAgICdzdGVwIHRvbmUgc3FydCBSU1NJIFNTSUQgJyArXG4gICAgICAgICdlbmQgYml0IHRhbiBjb3Mgc2luIHBvdyBtYXAgYWJzIG1heCAnICtcbiAgICAgICAgJ21pbiBnZXQgcnVuIHB1dCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnRElHSVRBTF9NRVNTQUdFIEZJUk1BVEFfU1RSSU5HIEFOQUxPR19NRVNTQUdFICcgK1xuICAgICAgICAnUkVQT1JUX0RJR0lUQUwgUkVQT1JUX0FOQUxPRyBJTlBVVF9QVUxMVVAgJyArXG4gICAgICAgICdTRVRfUElOX01PREUgSU5URVJOQUwyVjU2IFNZU1RFTV9SRVNFVCBMRURfQlVJTFRJTiAnICtcbiAgICAgICAgJ0lOVEVSTkFMMVYxIFNZU0VYX1NUQVJUIElOVEVSTkFMIEVYVEVSTkFMICcgK1xuICAgICAgICAnREVGQVVMVCBPVVRQVVQgSU5QVVQgSElHSCBMT1cnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgQ1BQLnByZXByb2Nlc3NvcixcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICAvL2xvY2FsIGxhYmVsczogJT9bRkJdP1tBVF0/XFxkezEsMn1cXHcrXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbJ2FybSddLFxuICAgIGxleGVtZXM6ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbWV0YTpcbiAgICAgICAgLy9HTlUgcHJlcHJvY3NcbiAgICAgICAgJy4yYnl0ZSAuNGJ5dGUgLmFsaWduIC5hc2NpaSAuYXNjaXogLmJhbGlnbiAuYnl0ZSAuY29kZSAuZGF0YSAuZWxzZSAuZW5kIC5lbmRpZiAuZW5kbSAuZW5kciAuZXF1IC5lcnIgLmV4aXRtIC5leHRlcm4gLmdsb2JhbCAuaHdvcmQgLmlmIC5pZmRlZiAuaWZuZGVmIC5pbmNsdWRlIC5pcnAgLmxvbmcgLm1hY3JvIC5yZXB0IC5yZXEgLnNlY3Rpb24gLnNldCAuc2tpcCAuc3BhY2UgLnRleHQgLndvcmQgLmFybSAudGh1bWIgLmNvZGUxNiAuY29kZTMyIC5mb3JjZV90aHVtYiAudGh1bWJfZnVuYyAubHRvcmcgJytcbiAgICAgICAgLy9BUk0gZGlyZWN0aXZlc1xuICAgICAgICAnQUxJQVMgQUxJR04gQVJNIEFSRUEgQVNTRVJUIEFUVFIgQ04gQ09ERSBDT0RFMTYgQ09ERTMyIENPTU1PTiBDUCBEQVRBIERDQiBEQ0QgRENEVSBEQ0RPIERDRkQgRENGRFUgRENJIERDUSBEQ1FVIERDVyBEQ1dVIEROIEVMSUYgRUxTRSBFTkQgRU5ERlVOQyBFTkRJRiBFTkRQIEVOVFJZIEVRVSBFWFBPUlQgRVhQT1JUQVMgRVhURVJOIEZJRUxEIEZJTEwgRlVOQ1RJT04gR0JMQSBHQkxMIEdCTFMgR0VUIEdMT0JBTCBJRiBJTVBPUlQgSU5DQklOIElOQ0xVREUgSU5GTyBLRUVQIExDTEEgTENMTCBMQ0xTIExUT1JHIE1BQ1JPIE1BUCBNRU5EIE1FWElUIE5PRlAgT1BUIFBSRVNFUlZFOCBQUk9DIFFOIFJFQURPTkxZIFJFTE9DIFJFUVVJUkUgUkVRVUlSRTggUkxJU1QgRk4gUk9VVCBTRVRBIFNFVEwgU0VUUyBTTiBTUEFDRSBTVUJUIFRIVU1CIFRIVU1CWCBUVEwgV0hJTEUgV0VORCAnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdyMCByMSByMiByMyByNCByNSByNiByNyByOCByOSByMTAgcjExIHIxMiByMTMgcjE0IHIxNSAnKyAvL3N0YW5kYXJkIHJlZ2lzdGVyc1xuICAgICAgICAncGMgbHIgc3AgaXAgc2wgc2IgZnAgJysgLy90eXBpY2FsIHJlZ3MgcGx1cyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgICdhMSBhMiBhMyBhNCB2MSB2MiB2MyB2NCB2NSB2NiB2NyB2OCBmMCBmMSBmMiBmMyBmNCBmNSBmNiBmNyAnKyAvL21vcmUgcmVncyBhbmQgZnBcbiAgICAgICAgJ3AwIHAxIHAyIHAzIHA0IHA1IHA2IHA3IHA4IHA5IHAxMCBwMTEgcDEyIHAxMyBwMTQgcDE1ICcrIC8vY29wcm9jZXNzb3IgcmVnc1xuICAgICAgICAnYzAgYzEgYzIgYzMgYzQgYzUgYzYgYzcgYzggYzkgYzEwIGMxMSBjMTIgYzEzIGMxNCBjMTUgJysgLy9tb3JlIGNvcHJvY1xuICAgICAgICAncTAgcTEgcTIgcTMgcTQgcTUgcTYgcTcgcTggcTkgcTEwIHExMSBxMTIgcTEzIHExNCBxMTUgJysgLy9hZHZhbmNlZCBTSU1EIE5FT04gcmVnc1xuXG4gICAgICAgIC8vcHJvZ3JhbSBzdGF0dXMgcmVnaXN0ZXJzXG4gICAgICAgICdjcHNyX2MgY3Bzcl94IGNwc3JfcyBjcHNyX2YgY3Bzcl9jeCBjcHNyX2N4cyBjcHNyX3hzIGNwc3JfeHNmIGNwc3Jfc2YgY3Bzcl9jeHNmICcrXG4gICAgICAgICdzcHNyX2Mgc3Bzcl94IHNwc3JfcyBzcHNyX2Ygc3Bzcl9jeCBzcHNyX2N4cyBzcHNyX3hzIHNwc3JfeHNmIHNwc3Jfc2Ygc3Bzcl9jeHNmICcrXG5cbiAgICAgICAgLy9ORU9OIGFuZCBWRlAgcmVnaXN0ZXJzXG4gICAgICAgICdzMCBzMSBzMiBzMyBzNCBzNSBzNiBzNyBzOCBzOSBzMTAgczExIHMxMiBzMTMgczE0IHMxNSAnK1xuICAgICAgICAnczE2IHMxNyBzMTggczE5IHMyMCBzMjEgczIyIHMyMyBzMjQgczI1IHMyNiBzMjcgczI4IHMyOSBzMzAgczMxICcrXG4gICAgICAgICdkMCBkMSBkMiBkMyBkNCBkNSBkNiBkNyBkOCBkOSBkMTAgZDExIGQxMiBkMTMgZDE0IGQxNSAnK1xuICAgICAgICAnZDE2IGQxNyBkMTggZDE5IGQyMCBkMjEgZDIyIGQyMyBkMjQgZDI1IGQyNiBkMjcgZDI4IGQyOSBkMzAgZDMxICcgK1xuXG4gICAgICAgICd7UEN9IHtWQVJ9IHtUUlVFfSB7RkFMU0V9IHtPUFR9IHtDT05GSUd9IHtFTkRJQU59IHtDT0RFU0laRX0ge0NQVX0ge0ZQVX0ge0FSQ0hJVEVDVFVSRX0ge1BDU1RPUkVPRkZTRVR9IHtBUk1BU01fVkVSU0lPTn0ge0lOVEVSfSB7Uk9QSX0ge1JXUEl9IHtTV1NUfSB7Tk9TV1NUfSAuIEAnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYignKyAgICAgLy9tbmVtb25pY3NcbiAgICAgICAgICAgICdhZGN8JytcbiAgICAgICAgICAgICcocWQ/fHNoP3x1W3FoXT8pP2FkZCg4fDE2KT98dXNhZGE/OHwocXxzaD98dVtxaF0/KT8oYXN8c2EpeHwnK1xuICAgICAgICAgICAgJ2FuZHxhZHJsP3xzYmN8cnNbYmNdfGFzcnxiW2x4XT98Ymx4fGJ4anxjYm4/enx0YltiaF18YmljfCcrXG4gICAgICAgICAgICAnYmZjfGJmaXxbc3VdYmZ4fGJrcHR8Y2RwMj98Y2x6fGNscmV4fGNtcHxjbW58Y3BzaVtlZF18Y3BzfCcrXG4gICAgICAgICAgICAnc2V0ZW5kfGRiZ3xkbWJ8ZHNifGVvcnxpc2J8aXRbdGVdezAsM318bHNsfGxzcnxyb3J8cnJ4fCcrXG4gICAgICAgICAgICAnbGRtKChbaWRdW2FiXSl8Zltkc10pP3xsZHIoKHN8ZXgpP1tiaGRdKT98bW92dD98bXZufG1yYXxtYXJ8JytcbiAgICAgICAgICAgICdtdWx8W3VzXW11bGx8c211bFtid3RdW2J0XXxzbXVbYXNdZHxzbW11bHxzbW1sYXwnK1xuICAgICAgICAgICAgJ21sYXx1bWxhYWx8c21sYWw/KFt3YnRdW2J0XXxkKXxtbHN8c21sc2w/W2RzXXxzbWN8c3ZjfHNldnwnK1xuICAgICAgICAgICAgJ21pYShbYnRdezJ9fHBoKT98bXJyP2MyP3xtY3JyMj98bXJzfG1zcnxvcnJ8b3JufHBraCh0YnxidCl8cmJpdHwnK1xuICAgICAgICAgICAgJ3JldigxNnxzaCk/fHNlbHxbc3Vdc2F0KDE2KT98bm9wfHBvcHxwdXNofHJmZShbaWRdW2FiXSk/fCcrXG4gICAgICAgICAgICAnc3RtKFtpZF1bYWJdKT98c3RyKGV4KT9bYmhkXT98KHFkPyk/c3VifChzaD98cXx1W3FoXT8pP3N1Yig4fDE2KXwnK1xuICAgICAgICAgICAgJ1tzdV14dChhP2h8YT9iKDE2KT8pfHNycyhbaWRdW2FiXSk/fHN3cGI/fHN3aXxzbWl8dHN0fHRlcXwnK1xuICAgICAgICAgICAgJ3dmZXx3Zml8eWllbGQnK1xuICAgICAgICAnKScrXG4gICAgICAgICcoZXF8bmV8Y3N8Y2N8bWl8cGx8dnN8dmN8aGl8bHN8Z2V8bHR8Z3R8bGV8YWx8aHN8bG8pPycrIC8vY29uZGl0aW9uIGNvZGVzXG4gICAgICAgICdbc3B0cnhdPycgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbGVnYWwgcG9zdGZpeGVzXG4gICAgICAgIGVuZDogJ1xcXFxzJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnWztAXScsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJyxcbiAgICAgICAgZW5kOiAnW15cXFxcXFxcXF1cXCcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcfCcsIGVuZDogJ1xcXFx8JyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge2JlZ2luOiAnWyMkPV0/MHhbMC05YS1mXSsnfSwgLy9oZXhcbiAgICAgICAgICAgIHtiZWdpbjogJ1sjJD1dPzBiWzAxXSsnfSwgICAgIC8vYmluXG4gICAgICAgICAgICB7YmVnaW46ICdbIyQ9XVxcXFxkKyd9LCAgICAgICAgLy9saXRlcmFsXG4gICAgICAgICAgICB7YmVnaW46ICdcXFxcYlxcXFxkKyd9ICAgICAgICAgICAvL2JhcmUgbnVtYmVyXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJ15bYS16X1xcXFwuXFxcXCRdW2EtejAtOV9cXFxcLlxcXFwkXSsnfSwgLy9BUk0gc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdeXFxcXHMqW2Etel9cXFxcLlxcXFwkXVthLXowLTlfXFxcXC5cXFxcJF0rOid9LCAvL0dOVSBBUk0gc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdbPSNdXFxcXHcrJyB9ICAvL2xhYmVsIHJlZmVyZW5jZVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgWE1MX0lERU5UX1JFID0gJ1tBLVphLXowLTlcXFxcLl86LV0rJztcbiAgdmFyIFRBR19JTlRFUk5BTFMgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgaWxsZWdhbDogLzwvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgYmVnaW46IFhNTF9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLz1cXHMqLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAgICAgICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAgICAgICAgICB7YmVnaW46IC9bXlxcc1wiJz08PmBdKy99XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaHRtbCcsICd4aHRtbCcsICdyc3MnLCAnYXRvbScsICd4amInLCAneHNkJywgJ3hzbCcsICdwbGlzdCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnPCFET0NUWVBFJywgZW5kOiAnPicsXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXSd9XVxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzwhLS0nLFxuICAgICAgICAnLS0+JyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8XFxcXCFcXFxcW0NEQVRBXFxcXFsnLCBlbmQ6ICdcXFxcXVxcXFxdPicsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvPFxcPyhwaHApPy8sIGVuZDogL1xcPz4vLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3BocCcsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnL1xcXFwqJywgZW5kOiAnXFxcXCovJywgc2tpcDogdHJ1ZX1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0YWcnLFxuICAgICAgICAvKlxuICAgICAgICBUaGUgbG9va2FoZWFkIHBhdHRlcm4gKD89Li4uKSBlbnN1cmVzIHRoYXQgJ2JlZ2luJyBvbmx5IG1hdGNoZXNcbiAgICAgICAgJzxzdHlsZScgYXMgYSBzaW5nbGUgd29yZCwgZm9sbG93ZWQgYnkgYSB3aGl0ZXNwYWNlIG9yIGFuXG4gICAgICAgIGVuZGluZyBicmFrZXQuIFRoZSAnJCcgaXMgbmVlZGVkIGZvciB0aGUgbGV4ZW1lIHRvIGJlIHJlY29nbml6ZWRcbiAgICAgICAgYnkgaGxqcy5zdWJNb2RlKCkgdGhhdCB0ZXN0cyBsZXhlbWVzIG91dHNpZGUgdGhlIHN0cmVhbS5cbiAgICAgICAgKi9cbiAgICAgICAgYmVnaW46ICc8c3R5bGUoPz1cXFxcc3w+fCQpJywgZW5kOiAnPicsXG4gICAgICAgIGtleXdvcmRzOiB7bmFtZTogJ3N0eWxlJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbVEFHX0lOVEVSTkFMU10sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJzwvc3R5bGU+JywgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgIHN1Ykxhbmd1YWdlOiBbJ2NzcycsICd4bWwnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0YWcnLFxuICAgICAgICAvLyBTZWUgdGhlIGNvbW1lbnQgaW4gdGhlIDxzdHlsZSB0YWcgYWJvdXQgdGhlIGxvb2thaGVhZCBwYXR0ZXJuXG4gICAgICAgIGJlZ2luOiAnPHNjcmlwdCg/PVxcXFxzfD58JCknLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAnc2NyaXB0J30sXG4gICAgICAgIGNvbnRhaW5zOiBbVEFHX0lOVEVSTkFMU10sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcPFxcL3NjcmlwdFxcPicsIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogWydhY3Rpb25zY3JpcHQnLCAnamF2YXNjcmlwdCcsICdoYW5kbGViYXJzJywgJ3htbCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogLzxcXD94bWwvLCBlbmQ6IC9cXD8+LywgcmVsZXZhbmNlOiAxMH0sXG4gICAgICAgICAge2JlZ2luOiAvPFxcP1xcdysvLCBlbmQ6IC9cXD8+L31cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICAgICAgYmVnaW46ICc8Lz8nLCBlbmQ6ICcvPz4nLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLCBiZWdpbjogL1teXFwvPjxcXHNdKy8sIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgVEFHX0lOVEVSTkFMU1xuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2Fkb2MnXSxcbiAgICBjb250YWluczogW1xuICAgICAgLy8gYmxvY2sgY29tbWVudFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnXi97NCx9XFxcXG4nLFxuICAgICAgICAnXFxcXG4vezQsfSQnLFxuICAgICAgICAvLyBjYW4gYWxzbyBiZSBkb25lIGFzLi4uXG4gICAgICAgIC8vJ14vezQsfSQnLFxuICAgICAgICAvLydeL3s0LH0kJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIC8vIGxpbmUgY29tbWVudFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnXi8vJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICAvLyB0aXRsZVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwuXFxcXHcuKiQnXG4gICAgICB9LFxuICAgICAgLy8gZXhhbXBsZSwgYWRtb25pdGlvbiAmIHNpZGViYXIgYmxvY2tzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXls9XFxcXCpdezQsfVxcXFxuJyxcbiAgICAgICAgZW5kOiAnXFxcXG5eWz1cXFxcKl17NCx9JCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBoZWFkaW5nc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMCxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICdeKD17MSw1fSkgLis/KCBcXFxcMSk/JCd9LFxuICAgICAgICAgIHtiZWdpbjogJ15bXlxcXFxbXFxcXF1cXFxcbl0rP1xcXFxuWz1cXFxcLX5cXFxcXlxcXFwrXXsyLH0kJ30sXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBkb2N1bWVudCBhdHRyaWJ1dGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ146Lis/OicsXG4gICAgICAgIGVuZDogJ1xcXFxzJyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIGJsb2NrIGF0dHJpYnV0ZXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxbLis/XFxcXF0kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gcXVvdGVibG9ja3NcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncXVvdGUnLFxuICAgICAgICBiZWdpbjogJ15fezQsfVxcXFxuJyxcbiAgICAgICAgZW5kOiAnXFxcXG5fezQsfSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gbGlzdGluZyBhbmQgbGl0ZXJhbCBibG9ja3NcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29kZScsXG4gICAgICAgIGJlZ2luOiAnXltcXFxcLVxcXFwuXXs0LH1cXFxcbicsXG4gICAgICAgIGVuZDogJ1xcXFxuW1xcXFwtXFxcXC5dezQsfSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gcGFzc3Rocm91Z2ggYmxvY2tzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXlxcXFwrezQsfVxcXFxuJyxcbiAgICAgICAgZW5kOiAnXFxcXG5cXFxcK3s0LH0kJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJzwnLCBlbmQ6ICc+JyxcbiAgICAgICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIGxpc3RzIChjYW4gb25seSBjYXB0dXJlIGluZGljYXRvcnMpXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1bGxldCcsXG4gICAgICAgIGJlZ2luOiAnXihcXFxcKit8XFxcXC0rfFxcXFwuK3xbXlxcXFxuXSs/OjopXFxcXHMrJ1xuICAgICAgfSxcbiAgICAgIC8vIGFkbW9uaXRpb25cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdeKE5PVEV8VElQfElNUE9SVEFOVHxXQVJOSU5HfENBVVRJT04pOlxcXFxzKycsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgc3Ryb25nXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cm9uZycsXG4gICAgICAgIC8vIG11c3Qgbm90IGZvbGxvdyBhIHdvcmQgY2hhcmFjdGVyIG9yIGJlIGZvbGxvd2VkIGJ5IGFuIGFzdGVyaXNrIG9yIHNwYWNlXG4gICAgICAgIGJlZ2luOiAnXFxcXEJcXFxcKig/IVtcXFxcKlxcXFxzXSknLFxuICAgICAgICBlbmQ6ICcoXFxcXG57Mn18XFxcXCopJyxcbiAgICAgICAgLy8gYWxsb3cgZXNjYXBlZCBhc3RlcmlzayBmb2xsb3dlZCBieSB3b3JkIGNoYXJcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxcXFxcKlxcXFx3JyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGlubGluZSBlbXBoYXNpc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdlbXBoYXNpcycsXG4gICAgICAgIC8vIG11c3Qgbm90IGZvbGxvdyBhIHdvcmQgY2hhcmFjdGVyIG9yIGJlIGZvbGxvd2VkIGJ5IGEgc2luZ2xlIHF1b3RlIG9yIHNwYWNlXG4gICAgICAgIGJlZ2luOiAnXFxcXEJcXCcoPyFbXFwnXFxcXHNdKScsXG4gICAgICAgIGVuZDogJyhcXFxcbnsyfXxcXCcpJyxcbiAgICAgICAgLy8gYWxsb3cgZXNjYXBlZCBzaW5nbGUgcXVvdGUgZm9sbG93ZWQgYnkgd29yZCBjaGFyXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcXFxcXFxcJ1xcXFx3JyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIGVtcGhhc2lzIChhbHQpXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2VtcGhhc2lzJyxcbiAgICAgICAgLy8gbXVzdCBub3QgZm9sbG93IGEgd29yZCBjaGFyYWN0ZXIgb3IgYmUgZm9sbG93ZWQgYnkgYW4gdW5kZXJsaW5lIG9yIHNwYWNlXG4gICAgICAgIGJlZ2luOiAnXyg/IVtfXFxcXHNdKScsXG4gICAgICAgIGVuZDogJyhcXFxcbnsyfXxfKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGlubGluZSBzbWFydCBxdW90ZXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IFwiYGAuKz8nJ1wifSxcbiAgICAgICAgICB7YmVnaW46IFwiYC4rPydcIn1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGlubGluZSBjb2RlIHNuaXBwZXRzIChUT0RPIHNob3VsZCBnZXQgc2FtZSB0cmVhdG1lbnQgYXMgc3Ryb25nIGFuZCBlbXBoYXNpcylcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29kZScsXG4gICAgICAgIGJlZ2luOiAnKGAuKz9gfFxcXFwrLis/XFxcXCspJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gaW5kZW50ZWQgbGl0ZXJhbCBibG9ja1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb2RlJyxcbiAgICAgICAgYmVnaW46ICdeWyBcXFxcdF0nLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gaG9yaXpvbnRhbCBydWxlc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ15cXCd7Myx9WyBcXFxcdF0qJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBpbWFnZXMgYW5kIGxpbmtzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKGxpbms6KT8oaHR0cHxodHRwc3xmdHB8ZmlsZXxpcmN8aW1hZ2U6Pyk6XFxcXFMrXFxcXFsuKj9cXFxcXScsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnKGxpbmt8aW1hZ2U6Pyk6JyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbGluaycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFx3JyxcbiAgICAgICAgICAgIGVuZDogJ1teXFxcXFtdKycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxbJyxcbiAgICAgICAgICAgIGVuZDogJ1xcXFxdJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZmFsc2Ugc3luY2hyb25pemVkIGludCBhYnN0cmFjdCBmbG9hdCBwcml2YXRlIGNoYXIgYm9vbGVhbiBzdGF0aWMgbnVsbCBpZiBjb25zdCAnICtcbiAgICAnZm9yIHRydWUgd2hpbGUgbG9uZyB0aHJvdyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHJldHVybiB2b2lkICcgK1xuICAgICdlbnVtIGVsc2UgZXh0ZW5kcyBpbXBsZW1lbnRzIGJyZWFrIHRyYW5zaWVudCBuZXcgY2F0Y2ggaW5zdGFuY2VvZiBieXRlIHN1cGVyIHZvbGF0aWxlIGNhc2UgJyArXG4gICAgJ2Fzc2VydCBzaG9ydCBwYWNrYWdlIGRlZmF1bHQgZG91YmxlIHB1YmxpYyB0cnkgdGhpcyBzd2l0Y2ggY29udGludWUgdGhyb3dzIHByaXZpbGVnZWQgJyArXG4gICAgJ2FzcGVjdE9mIGFkdmljZWV4ZWN1dGlvbiBwcm9jZWVkIGNmbG93YmVsb3cgY2Zsb3cgaW5pdGlhbGl6YXRpb24gcHJlaW5pdGlhbGl6YXRpb24gJyArXG4gICAgJ3N0YXRpY2luaXRpYWxpemF0aW9uIHdpdGhpbmNvZGUgdGFyZ2V0IHdpdGhpbiBleGVjdXRpb24gZ2V0V2l0aGluVHlwZU5hbWUgaGFuZGxlciAnICtcbiAgICAndGhpc0pvaW5Qb2ludCB0aGlzSm9pblBvaW50U3RhdGljUGFydCB0aGlzRW5jbG9zaW5nSm9pblBvaW50U3RhdGljUGFydCBkZWNsYXJlIHBhcmVudHMgJytcbiAgICAnd2FybmluZyBlcnJvciBzb2Z0IHByZWNlZGVuY2UgdGhpc0FzcGVjdEluc3RhbmNlJztcbiAgdmFyIFNIT1JUS0VZUyA9ICdnZXQgc2V0IGFyZ3MgY2FsbCc7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHMgOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsIDogLzxcXC98Iy8sXG4gICAgY29udGFpbnMgOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXCpcXFxcKicsXG4gICAgICAgICdcXFxcKi8nLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlIDogMCxcbiAgICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLy8gZWF0IHVwIEAncyBpbiBlbWFpbHMgdG8gcHJldmVudCB0aGVtIHRvIGJlIHJlY29nbml6ZWQgYXMgZG9jdGFnc1xuICAgICAgICAgICAgICBiZWdpbjogL1xcdytALywgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWUgOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgYmVnaW4gOiAnQFtBLVphLXpdKydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lIDogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkcyA6ICdhc3BlY3QnLFxuICAgICAgICBlbmQgOiAvW3s7PV0vLFxuICAgICAgICBleGNsdWRlRW5kIDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbCA6IC9bOjtcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzIDogJ2V4dGVuZHMgaW1wbGVtZW50cyBwZXJ0eXBld2l0aGluIHBlcnRoaXMgcGVydGFyZ2V0IHBlcmNmbG93YmVsb3cgcGVyY2Zsb3cgaXNzaW5nbGV0b24nXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbiA6IC9cXChbXlxcKV0qLyxcbiAgICAgICAgICAgIGVuZCA6IC9bKV0rLyxcbiAgICAgICAgICAgIGtleXdvcmRzIDogS0VZV09SRFMgKyAnICcgKyBTSE9SVEtFWVMsXG4gICAgICAgICAgICBleGNsdWRlRW5kIDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZSA6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHMgOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgZW5kIDogL1t7Oz1dLyxcbiAgICAgICAgZXhjbHVkZUVuZCA6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAga2V5d29yZHMgOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgaWxsZWdhbCA6IC9bOlwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzIDogJ2V4dGVuZHMgaW1wbGVtZW50cyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIEFzcGVjdEogQ29uc3RydWN0c1xuICAgICAgICBiZWdpbktleXdvcmRzIDogJ3BvaW50Y3V0IGFmdGVyIGJlZm9yZSBhcm91bmQgdGhyb3dpbmcgcmV0dXJuaW5nJyxcbiAgICAgICAgZW5kIDogL1spXS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQgOiBmYWxzZSxcbiAgICAgICAgaWxsZWdhbCA6IC9bXCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW4gOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLFxuICAgICAgICAgICAgcmV0dXJuQmVnaW4gOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnMgOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbiA6IC9bOl0vLFxuICAgICAgICByZXR1cm5CZWdpbiA6IHRydWUsXG4gICAgICAgIGVuZCA6IC9beztdLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBleGNsdWRlRW5kIDogZmFsc2UsXG4gICAgICAgIGtleXdvcmRzIDogS0VZV09SRFMsXG4gICAgICAgIGlsbGVnYWwgOiAvW1wiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luIDogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKlxcXFwoJyxcbiAgICAgICAgICAgIGtleXdvcmRzIDogS0VZV09SRFMgKyAnICcgKyBTSE9SVEtFWVMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGhpcyBwcmV2ZW50cyAnbmV3IE5hbWUoLi4uKSwgb3IgdGhyb3cgLi4uJyBmcm9tIGJlaW5nIHJlY29nbml6ZWQgYXMgYSBmdW5jdGlvbiBkZWZpbml0aW9uXG4gICAgICAgIGJlZ2luS2V5d29yZHMgOiAnbmV3IHRocm93JyxcbiAgICAgICAgcmVsZXZhbmNlIDogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGhlIGZ1bmN0aW9uIGNsYXNzIGlzIGEgYml0IGRpZmZlcmVudCBmb3IgQXNwZWN0SiBjb21wYXJlZCB0byB0aGUgSmF2YSBsYW5ndWFnZVxuICAgICAgICBjbGFzc05hbWUgOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbiA6IC9cXHcrICtcXHcrKFxcLik/XFx3K1xccypcXChbXlxcKV0qXFwpXFxzKigodGhyb3dzKVtcXHdcXHMsXSspP1tcXHs7XS8sXG4gICAgICAgIHJldHVybkJlZ2luIDogdHJ1ZSxcbiAgICAgICAgZW5kIDogL1t7Oz1dLyxcbiAgICAgICAga2V5d29yZHMgOiBLRVlXT1JEUyxcbiAgICAgICAgZXhjbHVkZUVuZCA6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luIDogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKlxcXFwoJyxcbiAgICAgICAgICAgIHJldHVybkJlZ2luIDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zIDogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lIDogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbiA6IC9cXCgvLCBlbmQgOiAvXFwpLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGtleXdvcmRzIDogS0VZV09SRFMsXG4gICAgICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIC8vIGFubm90YXRpb24gaXMgYWxzbyB1c2VkIGluIHRoaXMgbGFuZ3VhZ2VcbiAgICAgICAgY2xhc3NOYW1lIDogJ21ldGEnLFxuICAgICAgICBiZWdpbiA6ICdAW0EtWmEtel0rJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBCQUNLVElDS19FU0NBUEUgPSB7XG4gICAgYmVnaW46ICdgW1xcXFxzXFxcXFNdJ1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbICdhaGsnIF0sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6ICdCcmVhayBDb250aW51ZSBDcml0aWNhbCBFeGl0IEV4aXRBcHAgR29zdWIgR290byBOZXcgT25FeGl0IFBhdXNlIHJldHVybiBTZXRCYXRjaExpbmVzIFNldFRpbWVyIFN1c3BlbmQgVGhyZWFkIFRocm93IFVudGlsIGFoa19pZCBhaGtfY2xhc3MgYWhrX3BpZCBhaGtfZXhlIGFoa19ncm91cCcsXG4gICAgICBsaXRlcmFsOiAnQXwwIHRydWUgZmFsc2UgTk9UIEFORCBPUicsXG4gICAgICBidWlsdF9pbjogJ0NvbVNwZWMgQ2xpcGJvYXJkIENsaXBib2FyZEFsbCBFcnJvckxldmVsJyxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdBX1thLXpBLVowLTldKydcbiAgICAgIH0sXG4gICAgICBCQUNLVElDS19FU0NBUEUsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NvbnRhaW5zOiBbQkFDS1RJQ0tfRVNDQVBFXX0pLFxuICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogaGxqcy5OVU1CRVJfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLCAvLyBGSVhFRFxuICAgICAgICBiZWdpbjogJyUoPz1bYS16QS1aMC05I18kQF0pJywgZW5kOiAnJScsXG4gICAgICAgIGlsbGVnYWw6ICdbXmEtekEtWjAtOSNfJEBdJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogJ15cXFxccypcXFxcdytcXFxccyosJ1xuICAgICAgICAvL0kgZG9uJ3QgcmVhbGx5IGtub3cgaWYgdGhpcyBpcyB0b3RhbGx5IHJlbGV2YW50XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKiNcXHcrJywgZW5kOickJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBjb250YWluczogW0JBQ0tUSUNLX0VTQ0FQRV0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnXlteXFxcXG5cIjtdKzo6KD8hPSknfSxcbiAgICAgICAgICB7YmVnaW46ICdeW15cXFxcblwiO10rOig/IT0pJywgcmVsZXZhbmNlOiAwfSAvLyB6ZXJvIHJlbGV2YW5jZSBhcyBpdCBjYXRjaGVzIGEgbG90IG9mIHRoaW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvbGxvd2VkIGJ5IGEgc2luZ2xlICc6JyBpbiBtYW55IGxhbmd1YWdlc1xuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBjb25zZWN1dGl2ZSBjb21tYXMsIG5vdCBmb3IgaGlnaGxpZ2h0aW5nIGJ1dCBqdXN0IGZvciByZWxldmFuY2VcbiAgICAgICAgYmVnaW46ICcsXFxcXHMqLCdcbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgdmFyIEtFWVdPUkRTID0gJ0J5UmVmIENhc2UgQ29uc3QgQ29udGludWVDYXNlIENvbnRpbnVlTG9vcCAnICtcbiAgICAgICAgJ0RlZmF1bHQgRGltIERvIEVsc2UgRWxzZUlmIEVuZEZ1bmMgRW5kSWYgRW5kU2VsZWN0ICcgK1xuICAgICAgICAnRW5kU3dpdGNoIEVuZFdpdGggRW51bSBFeGl0IEV4aXRMb29wIEZvciBGdW5jICcgK1xuICAgICAgICAnR2xvYmFsIElmIEluIExvY2FsIE5leHQgUmVEaW0gUmV0dXJuIFNlbGVjdCBTdGF0aWMgJyArXG4gICAgICAgICdTdGVwIFN3aXRjaCBUaGVuIFRvIFVudGlsIFZvbGF0aWxlIFdFbmQgV2hpbGUgV2l0aCcsXG5cbiAgICAgICAgTElURVJBTCA9ICdUcnVlIEZhbHNlIEFuZCBOdWxsIE5vdCBPcicsXG5cbiAgICAgICAgQlVJTFRfSU4gPVxuICAgICAgICAgICdBYnMgQUNvcyBBZGxpYlJlZ2lzdGVyIEFkbGliVW5SZWdpc3RlciBBc2MgQXNjVyBBU2luIEFzc2lnbiBBVGFuIEF1dG9JdFNldE9wdGlvbiBBdXRvSXRXaW5HZXRUaXRsZSBBdXRvSXRXaW5TZXRUaXRsZSBCZWVwIEJpbmFyeSBCaW5hcnlMZW4gQmluYXJ5TWlkIEJpbmFyeVRvU3RyaW5nIEJpdEFORCBCaXROT1QgQml0T1IgQml0Um90YXRlIEJpdFNoaWZ0IEJpdFhPUiBCbG9ja0lucHV0IEJyZWFrIENhbGwgQ0RUcmF5IENlaWxpbmcgQ2hyIENoclcgQ2xpcEdldCBDbGlwUHV0IENvbnNvbGVSZWFkIENvbnNvbGVXcml0ZSBDb25zb2xlV3JpdGVFcnJvciBDb250cm9sQ2xpY2sgQ29udHJvbENvbW1hbmQgQ29udHJvbERpc2FibGUgQ29udHJvbEVuYWJsZSBDb250cm9sRm9jdXMgQ29udHJvbEdldEZvY3VzIENvbnRyb2xHZXRIYW5kbGUgQ29udHJvbEdldFBvcyBDb250cm9sR2V0VGV4dCBDb250cm9sSGlkZSBDb250cm9sTGlzdFZpZXcgQ29udHJvbE1vdmUgQ29udHJvbFNlbmQgQ29udHJvbFNldFRleHQgQ29udHJvbFNob3cgQ29udHJvbFRyZWVWaWV3IENvcyBEZWMgRGlyQ29weSBEaXJDcmVhdGUgRGlyR2V0U2l6ZSBEaXJNb3ZlIERpclJlbW92ZSBEbGxDYWxsIERsbENhbGxBZGRyZXNzIERsbENhbGxiYWNrRnJlZSBEbGxDYWxsYmFja0dldFB0ciBEbGxDYWxsYmFja1JlZ2lzdGVyIERsbENsb3NlIERsbE9wZW4gRGxsU3RydWN0Q3JlYXRlIERsbFN0cnVjdEdldERhdGEgRGxsU3RydWN0R2V0UHRyIERsbFN0cnVjdEdldFNpemUgRGxsU3RydWN0U2V0RGF0YSBEcml2ZUdldERyaXZlIERyaXZlR2V0RmlsZVN5c3RlbSBEcml2ZUdldExhYmVsIERyaXZlR2V0U2VyaWFsIERyaXZlR2V0VHlwZSBEcml2ZU1hcEFkZCBEcml2ZU1hcERlbCBEcml2ZU1hcEdldCBEcml2ZVNldExhYmVsIERyaXZlU3BhY2VGcmVlIERyaXZlU3BhY2VUb3RhbCBEcml2ZVN0YXR1cyBFbnZHZXQgRW52U2V0IEVudlVwZGF0ZSBFdmFsIEV4ZWN1dGUgRXhwIEZpbGVDaGFuZ2VEaXIgRmlsZUNsb3NlIEZpbGVDb3B5IEZpbGVDcmVhdGVOVEZTTGluayBGaWxlQ3JlYXRlU2hvcnRjdXQgRmlsZURlbGV0ZSBGaWxlRXhpc3RzIEZpbGVGaW5kRmlyc3RGaWxlIEZpbGVGaW5kTmV4dEZpbGUgRmlsZUZsdXNoIEZpbGVHZXRBdHRyaWIgRmlsZUdldEVuY29kaW5nIEZpbGVHZXRMb25nTmFtZSBGaWxlR2V0UG9zIEZpbGVHZXRTaG9ydGN1dCBGaWxlR2V0U2hvcnROYW1lIEZpbGVHZXRTaXplIEZpbGVHZXRUaW1lIEZpbGVHZXRWZXJzaW9uIEZpbGVJbnN0YWxsIEZpbGVNb3ZlIEZpbGVPcGVuIEZpbGVPcGVuRGlhbG9nIEZpbGVSZWFkIEZpbGVSZWFkTGluZSBGaWxlUmVhZFRvQXJyYXkgRmlsZVJlY3ljbGUgRmlsZVJlY3ljbGVFbXB0eSBGaWxlU2F2ZURpYWxvZyBGaWxlU2VsZWN0Rm9sZGVyIEZpbGVTZXRBdHRyaWIgRmlsZVNldEVuZCBGaWxlU2V0UG9zIEZpbGVTZXRUaW1lIEZpbGVXcml0ZSBGaWxlV3JpdGVMaW5lIEZsb29yIEZ0cFNldFByb3h5IEZ1bmNOYW1lIEdVSUNyZWF0ZSBHVUlDdHJsQ3JlYXRlQXZpIEdVSUN0cmxDcmVhdGVCdXR0b24gR1VJQ3RybENyZWF0ZUNoZWNrYm94IEdVSUN0cmxDcmVhdGVDb21ibyBHVUlDdHJsQ3JlYXRlQ29udGV4dE1lbnUgR1VJQ3RybENyZWF0ZURhdGUgR1VJQ3RybENyZWF0ZUR1bW15IEdVSUN0cmxDcmVhdGVFZGl0IEdVSUN0cmxDcmVhdGVHcmFwaGljIEdVSUN0cmxDcmVhdGVHcm91cCBHVUlDdHJsQ3JlYXRlSWNvbiBHVUlDdHJsQ3JlYXRlSW5wdXQgR1VJQ3RybENyZWF0ZUxhYmVsIEdVSUN0cmxDcmVhdGVMaXN0IEdVSUN0cmxDcmVhdGVMaXN0VmlldyBHVUlDdHJsQ3JlYXRlTGlzdFZpZXdJdGVtIEdVSUN0cmxDcmVhdGVNZW51IEdVSUN0cmxDcmVhdGVNZW51SXRlbSBHVUlDdHJsQ3JlYXRlTW9udGhDYWwgR1VJQ3RybENyZWF0ZU9iaiBHVUlDdHJsQ3JlYXRlUGljIEdVSUN0cmxDcmVhdGVQcm9ncmVzcyBHVUlDdHJsQ3JlYXRlUmFkaW8gR1VJQ3RybENyZWF0ZVNsaWRlciBHVUlDdHJsQ3JlYXRlVGFiIEdVSUN0cmxDcmVhdGVUYWJJdGVtIEdVSUN0cmxDcmVhdGVUcmVlVmlldyBHVUlDdHJsQ3JlYXRlVHJlZVZpZXdJdGVtIEdVSUN0cmxDcmVhdGVVcGRvd24gR1VJQ3RybERlbGV0ZSBHVUlDdHJsR2V0SGFuZGxlIEdVSUN0cmxHZXRTdGF0ZSBHVUlDdHJsUmVhZCBHVUlDdHJsUmVjdk1zZyBHVUlDdHJsUmVnaXN0ZXJMaXN0Vmlld1NvcnQgR1VJQ3RybFNlbmRNc2cgR1VJQ3RybFNlbmRUb0R1bW15IEdVSUN0cmxTZXRCa0NvbG9yIEdVSUN0cmxTZXRDb2xvciBHVUlDdHJsU2V0Q3Vyc29yIEdVSUN0cmxTZXREYXRhIEdVSUN0cmxTZXREZWZCa0NvbG9yIEdVSUN0cmxTZXREZWZDb2xvciBHVUlDdHJsU2V0Rm9udCBHVUlDdHJsU2V0R3JhcGhpYyBHVUlDdHJsU2V0SW1hZ2UgR1VJQ3RybFNldExpbWl0IEdVSUN0cmxTZXRPbkV2ZW50IEdVSUN0cmxTZXRQb3MgR1VJQ3RybFNldFJlc2l6aW5nIEdVSUN0cmxTZXRTdGF0ZSBHVUlDdHJsU2V0U3R5bGUgR1VJQ3RybFNldFRpcCBHVUlEZWxldGUgR1VJR2V0Q3Vyc29ySW5mbyBHVUlHZXRNc2cgR1VJR2V0U3R5bGUgR1VJUmVnaXN0ZXJNc2cgR1VJU2V0QWNjZWxlcmF0b3JzIEdVSVNldEJrQ29sb3IgR1VJU2V0Q29vcmQgR1VJU2V0Q3Vyc29yIEdVSVNldEZvbnQgR1VJU2V0SGVscCBHVUlTZXRJY29uIEdVSVNldE9uRXZlbnQgR1VJU2V0U3RhdGUgR1VJU2V0U3R5bGUgR1VJU3RhcnRHcm91cCBHVUlTd2l0Y2ggSGV4IEhvdEtleVNldCBIdHRwU2V0UHJveHkgSHR0cFNldFVzZXJBZ2VudCBIV25kIEluZXRDbG9zZSBJbmV0R2V0IEluZXRHZXRJbmZvIEluZXRHZXRTaXplIEluZXRSZWFkIEluaURlbGV0ZSBJbmlSZWFkIEluaVJlYWRTZWN0aW9uIEluaVJlYWRTZWN0aW9uTmFtZXMgSW5pUmVuYW1lU2VjdGlvbiBJbmlXcml0ZSBJbmlXcml0ZVNlY3Rpb24gSW5wdXRCb3ggSW50IElzQWRtaW4gSXNBcnJheSBJc0JpbmFyeSBJc0Jvb2wgSXNEZWNsYXJlZCBJc0RsbFN0cnVjdCBJc0Zsb2F0IElzRnVuYyBJc0hXbmQgSXNJbnQgSXNLZXl3b3JkIElzTnVtYmVyIElzT2JqIElzUHRyIElzU3RyaW5nIExvZyBNZW1HZXRTdGF0cyBNb2QgTW91c2VDbGljayBNb3VzZUNsaWNrRHJhZyBNb3VzZURvd24gTW91c2VHZXRDdXJzb3IgTW91c2VHZXRQb3MgTW91c2VNb3ZlIE1vdXNlVXAgTW91c2VXaGVlbCBNc2dCb3ggTnVtYmVyIE9iakNyZWF0ZSBPYmpDcmVhdGVJbnRlcmZhY2UgT2JqRXZlbnQgT2JqR2V0IE9iak5hbWUgT25BdXRvSXRFeGl0UmVnaXN0ZXIgT25BdXRvSXRFeGl0VW5SZWdpc3RlciBQaW5nIFBpeGVsQ2hlY2tzdW0gUGl4ZWxHZXRDb2xvciBQaXhlbFNlYXJjaCBQcm9jZXNzQ2xvc2UgUHJvY2Vzc0V4aXN0cyBQcm9jZXNzR2V0U3RhdHMgUHJvY2Vzc0xpc3QgUHJvY2Vzc1NldFByaW9yaXR5IFByb2Nlc3NXYWl0IFByb2Nlc3NXYWl0Q2xvc2UgUHJvZ3Jlc3NPZmYgUHJvZ3Jlc3NPbiBQcm9ncmVzc1NldCBQdHIgUmFuZG9tIFJlZ0RlbGV0ZSBSZWdFbnVtS2V5IFJlZ0VudW1WYWwgUmVnUmVhZCBSZWdXcml0ZSBSb3VuZCBSdW4gUnVuQXMgUnVuQXNXYWl0IFJ1bldhaXQgU2VuZCBTZW5kS2VlcEFjdGl2ZSBTZXRFcnJvciBTZXRFeHRlbmRlZCBTaGVsbEV4ZWN1dGUgU2hlbGxFeGVjdXRlV2FpdCBTaHV0ZG93biBTaW4gU2xlZXAgU291bmRQbGF5IFNvdW5kU2V0V2F2ZVZvbHVtZSBTcGxhc2hJbWFnZU9uIFNwbGFzaE9mZiBTcGxhc2hUZXh0T24gU3FydCBTUmFuZG9tIFN0YXR1c2JhckdldFRleHQgU3RkZXJyUmVhZCBTdGRpbldyaXRlIFN0ZGlvQ2xvc2UgU3Rkb3V0UmVhZCBTdHJpbmcgU3RyaW5nQWRkQ1IgU3RyaW5nQ29tcGFyZSBTdHJpbmdGb3JtYXQgU3RyaW5nRnJvbUFTQ0lJQXJyYXkgU3RyaW5nSW5TdHIgU3RyaW5nSXNBbE51bSBTdHJpbmdJc0FscGhhIFN0cmluZ0lzQVNDSUkgU3RyaW5nSXNEaWdpdCBTdHJpbmdJc0Zsb2F0IFN0cmluZ0lzSW50IFN0cmluZ0lzTG93ZXIgU3RyaW5nSXNTcGFjZSBTdHJpbmdJc1VwcGVyIFN0cmluZ0lzWERpZ2l0IFN0cmluZ0xlZnQgU3RyaW5nTGVuIFN0cmluZ0xvd2VyIFN0cmluZ01pZCBTdHJpbmdSZWdFeHAgU3RyaW5nUmVnRXhwUmVwbGFjZSBTdHJpbmdSZXBsYWNlIFN0cmluZ1JldmVyc2UgU3RyaW5nUmlnaHQgU3RyaW5nU3BsaXQgU3RyaW5nU3RyaXBDUiBTdHJpbmdTdHJpcFdTIFN0cmluZ1RvQVNDSUlBcnJheSBTdHJpbmdUb0JpbmFyeSBTdHJpbmdUcmltTGVmdCBTdHJpbmdUcmltUmlnaHQgU3RyaW5nVXBwZXIgVGFuIFRDUEFjY2VwdCBUQ1BDbG9zZVNvY2tldCBUQ1BDb25uZWN0IFRDUExpc3RlbiBUQ1BOYW1lVG9JUCBUQ1BSZWN2IFRDUFNlbmQgVENQU2h1dGRvd24sIFVEUFNodXRkb3duIFRDUFN0YXJ0dXAsIFVEUFN0YXJ0dXAgVGltZXJEaWZmIFRpbWVySW5pdCBUb29sVGlwIFRyYXlDcmVhdGVJdGVtIFRyYXlDcmVhdGVNZW51IFRyYXlHZXRNc2cgVHJheUl0ZW1EZWxldGUgVHJheUl0ZW1HZXRIYW5kbGUgVHJheUl0ZW1HZXRTdGF0ZSBUcmF5SXRlbUdldFRleHQgVHJheUl0ZW1TZXRPbkV2ZW50IFRyYXlJdGVtU2V0U3RhdGUgVHJheUl0ZW1TZXRUZXh0IFRyYXlTZXRDbGljayBUcmF5U2V0SWNvbiBUcmF5U2V0T25FdmVudCBUcmF5U2V0UGF1c2VJY29uIFRyYXlTZXRTdGF0ZSBUcmF5U2V0VG9vbFRpcCBUcmF5VGlwIFVCb3VuZCBVRFBCaW5kIFVEUENsb3NlU29ja2V0IFVEUE9wZW4gVURQUmVjdiBVRFBTZW5kIFZhckdldFR5cGUgV2luQWN0aXZhdGUgV2luQWN0aXZlIFdpbkNsb3NlIFdpbkV4aXN0cyBXaW5GbGFzaCBXaW5HZXRDYXJldFBvcyBXaW5HZXRDbGFzc0xpc3QgV2luR2V0Q2xpZW50U2l6ZSBXaW5HZXRIYW5kbGUgV2luR2V0UG9zIFdpbkdldFByb2Nlc3MgV2luR2V0U3RhdGUgV2luR2V0VGV4dCBXaW5HZXRUaXRsZSBXaW5LaWxsIFdpbkxpc3QgV2luTWVudVNlbGVjdEl0ZW0gV2luTWluaW1pemVBbGwgV2luTWluaW1pemVBbGxVbmRvIFdpbk1vdmUgV2luU2V0T25Ub3AgV2luU2V0U3RhdGUgV2luU2V0VGl0bGUgV2luU2V0VHJhbnMgV2luV2FpdCcsXG5cbiAgICAgICAgQ09NTUVOVCA9IHtcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAgICAgICAgICBobGpzLkNPTU1FTlQoJyNjcycsICcjY2UnKSxcbiAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCcjY29tbWVudHMtc3RhcnQnLCAnI2NvbW1lbnRzLWVuZCcpXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG5cbiAgICAgICAgVkFSSUFCTEUgPSB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwkW0EtejAtOV9dKydcbiAgICAgICAgfSxcblxuICAgICAgICBTVFJJTkcgPSB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFt7XG4gICAgICAgICAgICAgICAgYmVnaW46IC9cIi8sXG4gICAgICAgICAgICAgICAgZW5kOiAvXCIvLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1wiXCIvLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAvJy8sXG4gICAgICAgICAgICAgICAgZW5kOiAvJy8sXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvJycvLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgfV1cbiAgICAgICAgfSxcblxuICAgICAgICBOVU1CRVIgPSB7XG4gICAgICAgICAgICB2YXJpYW50czogW2hsanMuQklOQVJZX05VTUJFUl9NT0RFLCBobGpzLkNfTlVNQkVSX01PREVdXG4gICAgICAgIH0sXG5cbiAgICAgICAgUFJFUFJPQ0VTU09SID0ge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICBiZWdpbjogJyMnLFxuICAgICAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnY29tbWVudHMgaW5jbHVkZSBpbmNsdWRlLW9uY2UgTm9UcmF5SWNvbiBPbkF1dG9JdFN0YXJ0UmVnaXN0ZXIgcHJhZ21hIGNvbXBpbGUgUmVxdWlyZUFkbWluJ30sXG4gICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXFxcXFxuLyxcbiAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpbmNsdWRlJ30sXG4gICAgICAgICAgICAgICAgICAgIGVuZDogJyQnLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogJzwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6ICc+J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cIi8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogL1wiLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1wiXCIvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogLycvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogLycnLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgICBDT01NRU5UXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG5cbiAgICAgICAgQ09OU1RBTlQgPSB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgLy8gYmVnaW46ICdAJyxcbiAgICAgICAgICAgIC8vIGVuZDogJyQnLFxuICAgICAgICAgICAgLy8ga2V5d29yZHM6ICdBcHBEYXRhQ29tbW9uRGlyIEFwcERhdGFEaXIgQXV0b0l0RXhlIEF1dG9JdFBJRCBBdXRvSXRWZXJzaW9uIEF1dG9JdFg2NCBDT01fRXZlbnRPYmogQ29tbW9uRmlsZXNEaXIgQ29tcGlsZWQgQ29tcHV0ZXJOYW1lIENvbVNwZWMgQ1BVQXJjaCBDUiBDUkxGIERlc2t0b3BDb21tb25EaXIgRGVza3RvcERlcHRoIERlc2t0b3BEaXIgRGVza3RvcEhlaWdodCBEZXNrdG9wUmVmcmVzaCBEZXNrdG9wV2lkdGggRG9jdW1lbnRzQ29tbW9uRGlyIGVycm9yIGV4aXRDb2RlIGV4aXRNZXRob2QgZXh0ZW5kZWQgRmF2b3JpdGVzQ29tbW9uRGlyIEZhdm9yaXRlc0RpciBHVUlfQ3RybEhhbmRsZSBHVUlfQ3RybElkIEdVSV9EcmFnRmlsZSBHVUlfRHJhZ0lkIEdVSV9Ecm9wSWQgR1VJX1dpbkhhbmRsZSBIb21lRHJpdmUgSG9tZVBhdGggSG9tZVNoYXJlIEhvdEtleVByZXNzZWQgSE9VUiBJUEFkZHJlc3MxIElQQWRkcmVzczIgSVBBZGRyZXNzMyBJUEFkZHJlc3M0IEtCTGF5b3V0IExGIExvY2FsQXBwRGF0YURpciBMb2dvbkROU0RvbWFpbiBMb2dvbkRvbWFpbiBMb2dvblNlcnZlciBNREFZIE1JTiBNT04gTVNFQyBNVUlMYW5nIE15RG9jdW1lbnRzRGlyIE51bVBhcmFtcyBPU0FyY2ggT1NCdWlsZCBPU0xhbmcgT1NTZXJ2aWNlUGFjayBPU1R5cGUgT1NWZXJzaW9uIFByb2dyYW1GaWxlc0RpciBQcm9ncmFtc0NvbW1vbkRpciBQcm9ncmFtc0RpciBTY3JpcHREaXIgU2NyaXB0RnVsbFBhdGggU2NyaXB0TGluZU51bWJlciBTY3JpcHROYW1lIFNFQyBTdGFydE1lbnVDb21tb25EaXIgU3RhcnRNZW51RGlyIFN0YXJ0dXBDb21tb25EaXIgU3RhcnR1cERpciBTV19ESVNBQkxFIFNXX0VOQUJMRSBTV19ISURFIFNXX0xPQ0sgU1dfTUFYSU1JWkUgU1dfTUlOSU1JWkUgU1dfUkVTVE9SRSBTV19TSE9XIFNXX1NIT1dERUZBVUxUIFNXX1NIT1dNQVhJTUlaRUQgU1dfU0hPV01JTklNSVpFRCBTV19TSE9XTUlOTk9BQ1RJVkUgU1dfU0hPV05BIFNXX1NIT1dOT0FDVElWQVRFIFNXX1NIT1dOT1JNQUwgU1dfVU5MT0NLIFN5c3RlbURpciBUQUIgVGVtcERpciBUUkFZX0lEIFRyYXlJY29uRmxhc2hpbmcgVHJheUljb25WaXNpYmxlIFVzZXJOYW1lIFVzZXJQcm9maWxlRGlyIFdEQVkgV2luZG93c0RpciBXb3JraW5nRGlyIFlEQVkgWUVBUicsXG4gICAgICAgICAgICAvLyByZWxldmFuY2U6IDVcbiAgICAgICAgICAgIGJlZ2luOiAnQFtBLXowLTlfXSsnXG4gICAgICAgIH0sXG5cbiAgICAgICAgRlVOQ1RJT04gPSB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnRnVuYycsXG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcJHxcXFxcW3wlJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsXG4gICAgICAgICAgICAgICAgICAgIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICAgICAgICAgICAgTlVNQkVSXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGtleXdvcmQ6IEtFWVdPUkRTLFxuICAgICAgICAgICAgYnVpbHRfaW46IEJVSUxUX0lOLFxuICAgICAgICAgICAgbGl0ZXJhbDogTElURVJBTFxuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgQ09NTUVOVCxcbiAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgTlVNQkVSLFxuICAgICAgICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAgICAgICAgQ09OU1RBTlQsXG4gICAgICAgICAgICBGVU5DVElPTlxuICAgICAgICBdXG4gICAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgLyogbW5lbW9uaWMgKi9cbiAgICAgICAgJ2FkYyBhZGQgYWRpdyBhbmQgYW5kaSBhc3IgYmNsciBibGQgYnJiYyBicmJzIGJyY2MgYnJjcyBicmVhayBicmVxIGJyZ2UgYnJoYyBicmhzICcgK1xuICAgICAgICAnYnJpZCBicmllIGJybG8gYnJsdCBicm1pIGJybmUgYnJwbCBicnNoIGJydGMgYnJ0cyBicnZjIGJydnMgYnNldCBic3QgY2FsbCBjYmkgY2JyICcgK1xuICAgICAgICAnY2xjIGNsaCBjbGkgY2xuIGNsciBjbHMgY2x0IGNsdiBjbHogY29tIGNwIGNwYyBjcGkgY3BzZSBkZWMgZWljYWxsIGVpam1wIGVscG0gZW9yICcgK1xuICAgICAgICAnZm11bCBmbXVscyBmbXVsc3UgaWNhbGwgaWptcCBpbiBpbmMgam1wIGxkIGxkZCBsZGkgbGRzIGxwbSBsc2wgbHNyIG1vdiBtb3Z3IG11bCAnICtcbiAgICAgICAgJ211bHMgbXVsc3UgbmVnIG5vcCBvciBvcmkgb3V0IHBvcCBwdXNoIHJjYWxsIHJldCByZXRpIHJqbXAgcm9sIHJvciBzYmMgc2JyIHNicmMgc2JycyAnICtcbiAgICAgICAgJ3NlYyBzZWggc2JpIHNiY2kgc2JpYyBzYmlzIHNiaXcgc2VpIHNlbiBzZXIgc2VzIHNldCBzZXYgc2V6IHNsZWVwIHNwbSBzdCBzdGQgc3RzIHN1YiAnICtcbiAgICAgICAgJ3N1Ymkgc3dhcCB0c3Qgd2RyJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAvKiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzICovXG4gICAgICAgICdyMCByMSByMiByMyByNCByNSByNiByNyByOCByOSByMTAgcjExIHIxMiByMTMgcjE0IHIxNSByMTYgcjE3IHIxOCByMTkgcjIwIHIyMSByMjIgJyArXG4gICAgICAgICdyMjMgcjI0IHIyNSByMjYgcjI3IHIyOCByMjkgcjMwIHIzMSB4fDAgeGggeGwgeXwwIHloIHlsIHp8MCB6aCB6bCAnICtcbiAgICAgICAgLyogSU8gUmVnaXN0ZXJzIChBVE1lZ2ExMjgpICovXG4gICAgICAgICd1Y3NyMWMgdWRyMSB1Y3NyMWEgdWNzcjFiIHVicnIxbCB1YnJyMWggdWNzcjBjIHVicnIwaCB0Y2NyM2MgdGNjcjNhIHRjY3IzYiB0Y250M2ggJyArXG4gICAgICAgICd0Y250M2wgb2NyM2FoIG9jcjNhbCBvY3IzYmggb2NyM2JsIG9jcjNjaCBvY3IzY2wgaWNyM2ggaWNyM2wgZXRpbXNrIGV0aWZyIHRjY3IxYyAnICtcbiAgICAgICAgJ29jcjFjaCBvY3IxY2wgdHdjciB0d2RyIHR3YXIgdHdzciB0d2JyIG9zY2NhbCB4bWNyYSB4bWNyYiBlaWNyYSBzcG1jc3Igc3BtY3IgcG9ydGcgJyArXG4gICAgICAgICdkZHJnIHBpbmcgcG9ydGYgZGRyZiBzcmVnIHNwaCBzcGwgeGRpdiByYW1weiBlaWNyYiBlaW1zayBnaW1zayBnaWNyIGVpZnIgZ2lmciB0aW1zayAnICtcbiAgICAgICAgJ3RpZnIgbWN1Y3IgbWN1Y3NyIHRjY3IwIHRjbnQwIG9jcjAgYXNzciB0Y2NyMWEgdGNjcjFiIHRjbnQxaCB0Y250MWwgb2NyMWFoIG9jcjFhbCAnICtcbiAgICAgICAgJ29jcjFiaCBvY3IxYmwgaWNyMWggaWNyMWwgdGNjcjIgdGNudDIgb2NyMiBvY2RyIHdkdGNyIHNmaW9yIGVlYXJoIGVlYXJsIGVlZHIgZWVjciAnICtcbiAgICAgICAgJ3BvcnRhIGRkcmEgcGluYSBwb3J0YiBkZHJiIHBpbmIgcG9ydGMgZGRyYyBwaW5jIHBvcnRkIGRkcmQgcGluZCBzcGRyIHNwc3Igc3BjciB1ZHIwICcgK1xuICAgICAgICAndWNzcjBhIHVjc3IwYiB1YnJyMGwgYWNzciBhZG11eCBhZGNzciBhZGNoIGFkY2wgcG9ydGUgZGRyZSBwaW5lIHBpbmYnLFxuICAgICAgbWV0YTpcbiAgICAgICAgJy5ieXRlIC5jc2VnIC5kYiAuZGVmIC5kZXZpY2UgLmRzZWcgLmR3IC5lbmRtYWNybyAuZXF1IC5lc2VnIC5leGl0IC5pbmNsdWRlIC5saXN0ICcgK1xuICAgICAgICAnLmxpc3RtYWMgLm1hY3JvIC5ub2xpc3QgLm9yZyAuc2V0J1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICc7JyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsIC8vIDB4Li4uLCBkZWNpbWFsLCBmbG9hdFxuICAgICAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUsIC8vIDBiLi4uXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoXFxcXCRbYS16QS1aMC05XSt8MG9bMC03XSspJyAvLyAkLi4uLCAwby4uLlxuICAgICAgfSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnW15cXFxcXFxcXF1cXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnW15cXFxcXFxcXF1bXlxcJ10nXG4gICAgICB9LFxuICAgICAge2NsYXNzTmFtZTogJ3N5bWJvbCcsICBiZWdpbjogJ15bQS1aYS16MC05Xy4kXSs6J30sXG4gICAgICB7Y2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIycsIGVuZDogJyQnfSxcbiAgICAgIHsgIC8vINC/0L7QtNGB0YLQsNC90L7QstC60LAg0LIgwqsubWFjcm/Cu1xuICAgICAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgICAgIGJlZ2luOiAnQFswLTldKydcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRbXFx3XFxkI0BdW1xcd1xcZF9dKi99LFxuICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICBdXG4gIH07XG4gIHZhciBLRVlXT1JEUyA9ICdCRUdJTiBFTkQgaWYgZWxzZSB3aGlsZSBkbyBmb3IgaW4gYnJlYWsgY29udGludWUgZGVsZXRlIG5leHQgbmV4dGZpbGUgZnVuY3Rpb24gZnVuYyBleGl0fDEwJztcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/JycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxiKT9yP1wiXCJcIi8sIGVuZDogL1wiXCJcIi8sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8cnx1ciknLywgZW5kOiAvJy8sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8cnx1cilcIi8sIGVuZDogL1wiLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oYnxiciknLywgZW5kOiAvJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKGJ8YnIpXCIvLCBlbmQ6IC9cIi9cbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgXVxuICB9O1xuICByZXR1cm4ge1xuXHQga2V5d29yZHM6IHtcblx0ICAga2V5d29yZDogS0VZV09SRFNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIFNUUklORyxcbiAgICAgIGhsanMuUkVHRVhQX01PREUsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogJ2ZhbHNlIGludCBhYnN0cmFjdCBwcml2YXRlIGNoYXIgYm9vbGVhbiBzdGF0aWMgbnVsbCBpZiBmb3IgdHJ1ZSAnICtcbiAgICAgICd3aGlsZSBsb25nIHRocm93IGZpbmFsbHkgcHJvdGVjdGVkIGZpbmFsIHJldHVybiB2b2lkIGVudW0gZWxzZSAnICtcbiAgICAgICdicmVhayBuZXcgY2F0Y2ggYnl0ZSBzdXBlciBjYXNlIHNob3J0IGRlZmF1bHQgZG91YmxlIHB1YmxpYyB0cnkgdGhpcyBzd2l0Y2ggJyArXG4gICAgICAnY29udGludWUgcmV2ZXJzZSBmaXJzdGZhc3QgZmlyc3Rvbmx5IGZvcnVwZGF0ZSBub2ZldGNoIHN1bSBhdmcgbWlub2YgbWF4b2YgY291bnQgJyArXG4gICAgICAnb3JkZXIgZ3JvdXAgYnkgYXNjIGRlc2MgaW5kZXggaGludCBsaWtlIGRpc3BhbHkgZWRpdCBjbGllbnQgc2VydmVyIHR0c2JlZ2luICcgK1xuICAgICAgJ3R0c2NvbW1pdCBzdHIgcmVhbCBkYXRlIGNvbnRhaW5lciBhbnl0eXBlIGNvbW1vbiBkaXYgbW9kJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICc6JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVkFSID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXFwkW1xcd1xcZCNAXVtcXHdcXGRfXSovfSxcbiAgICAgIHtiZWdpbjogL1xcJFxceyguKj8pfS99XG4gICAgXVxuICB9O1xuICB2YXIgUVVPVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgVkFSLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvXFwkXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgQVBPU19TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLCBlbmQ6IC8nL1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydzaCcsICd6c2gnXSxcbiAgICBsZXhlbWVzOiAvXFxiLT9bYS16XFwuX10rXFxiLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2lmIHRoZW4gZWxzZSBlbGlmIGZpIGZvciB3aGlsZSBpbiBkbyBkb25lIGNhc2UgZXNhYyBmdW5jdGlvbicsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLy8gU2hlbGwgYnVpbHQtaW5zXG4gICAgICAgIC8vIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iYXNoL21hbnVhbC9odG1sX25vZGUvU2hlbGwtQnVpbHRpbi1Db21tYW5kcy5odG1sXG4gICAgICAgICdicmVhayBjZCBjb250aW51ZSBldmFsIGV4ZWMgZXhpdCBleHBvcnQgZ2V0b3B0cyBoYXNoIHB3ZCByZWFkb25seSByZXR1cm4gc2hpZnQgdGVzdCB0aW1lcyAnICtcbiAgICAgICAgJ3RyYXAgdW1hc2sgdW5zZXQgJyArXG4gICAgICAgIC8vIEJhc2ggYnVpbHQtaW5zXG4gICAgICAgICdhbGlhcyBiaW5kIGJ1aWx0aW4gY2FsbGVyIGNvbW1hbmQgZGVjbGFyZSBlY2hvIGVuYWJsZSBoZWxwIGxldCBsb2NhbCBsb2dvdXQgbWFwZmlsZSBwcmludGYgJyArXG4gICAgICAgICdyZWFkIHJlYWRhcnJheSBzb3VyY2UgdHlwZSB0eXBlc2V0IHVsaW1pdCB1bmFsaWFzICcgK1xuICAgICAgICAvLyBTaGVsbCBtb2RpZmllcnNcbiAgICAgICAgJ3NldCBzaG9wdCAnICtcbiAgICAgICAgLy8gWnNoIGJ1aWx0LWluc1xuICAgICAgICAnYXV0b2xvYWQgYmcgYmluZGtleSBieWUgY2FwIGNoZGlyIGNsb25lIGNvbXBhcmd1bWVudHMgY29tcGNhbGwgY29tcGN0bCBjb21wZGVzY3JpYmUgY29tcGZpbGVzICcgK1xuICAgICAgICAnY29tcGdyb3VwcyBjb21wcXVvdGUgY29tcHRhZ3MgY29tcHRyeSBjb21wdmFsdWVzIGRpcnMgZGlzYWJsZSBkaXNvd24gZWNob3RjIGVjaG90aSBlbXVsYXRlICcgK1xuICAgICAgICAnZmMgZmcgZmxvYXQgZnVuY3Rpb25zIGdldGNhcCBnZXRsbiBoaXN0b3J5IGludGVnZXIgam9icyBraWxsIGxpbWl0IGxvZyBub2dsb2IgcG9wZCBwcmludCAnICtcbiAgICAgICAgJ3B1c2hkIHB1c2hsbiByZWhhc2ggc2NoZWQgc2V0Y2FwIHNldG9wdCBzdGF0IHN1c3BlbmQgdHR5Y3RsIHVuZnVuY3Rpb24gdW5oYXNoIHVubGltaXQgJyArXG4gICAgICAgICd1bnNldG9wdCB2YXJlZCB3YWl0IHdoZW5jZSB3aGVyZSB3aGljaCB6Y29tcGlsZSB6Zm9ybWF0IHpmdHAgemxlIHptb2Rsb2FkIHpwYXJzZW9wdHMgenByb2YgJyArXG4gICAgICAgICd6cHR5IHpyZWdleHBhcnNlIHpzb2NrZXQgenN0eWxlIHp0Y3AnLFxuICAgICAgXzpcbiAgICAgICAgJy1uZSAtZXEgLWx0IC1ndCAtZiAtZCAtZSAtcyAtbCAtYScgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL14jIVteXFxuXStzaFxccyokLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogL1xcd1tcXHdcXGRfXSpcXHMqXFwoXFxzKlxcKVxccypcXHsvLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IC9cXHdbXFx3XFxkX10qL30pXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIFFVT1RFX1NUUklORyxcbiAgICAgIEFQT1NfU1RSSU5HLFxuICAgICAgVkFSXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdeXFwuJyxcbiAgICAvLyBTdXBwb3J0IGV4cGxpY2l0ZWx5IHR5cGVkIHZhcmlhYmxlcyB0aGF0IGVuZCB3aXRoICQlISBvciAjLlxuICAgIGxleGVtZXM6ICdbYS16QS1aXVthLXpBLVowLTlfXFwkXFwlXFwhXFwjXSonLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgJ0FCUyBBU0MgQU5EIEFUTiBBVVRPfDAgQkVFUCBCTE9BRHwxMCBCU0FWRXwxMCBDQUxMIENBTExTIENEQkwgQ0hBSU4gQ0hESVIgQ0hSJHwxMCBDSU5UIENJUkNMRSAnICtcbiAgICAgICAgICAnQ0xFQVIgQ0xPU0UgQ0xTIENPTE9SIENPTSBDT01NT04gQ09OVCBDT1MgQ1NORyBDU1JMSU4gQ1ZEIENWSSBDVlMgREFUQSBEQVRFJCAnICtcbiAgICAgICAgICAnREVGREJMIERFRklOVCBERUZTTkcgREVGU1RSIERFRnwwIFNFRyBVU1IgREVMRVRFIERJTSBEUkFXIEVESVQgRU5EIEVOVklST04gRU5WSVJPTiQgJyArXG4gICAgICAgICAgJ0VPRiBFUVYgRVJBU0UgRVJERVYgRVJERVYkIEVSTCBFUlIgRVJST1IgRVhQIEZJRUxEIEZJTEVTIEZJWCBGT1J8MCBGUkUgR0VUIEdPU1VCfDEwIEdPVE8gJyArXG4gICAgICAgICAgJ0hFWCQgSUZ8MCBUSEVOIEVMU0V8MCBJTktFWSQgSU5QIElOUFVUIElOUFVUIyBJTlBVVCQgSU5TVFIgSU1QIElOVCBJT0NUTCBJT0NUTCQgS0VZIE9OICcgK1xuICAgICAgICAgICdPRkYgTElTVCBLSUxMIExFRlQkIExFTiBMRVQgTElORSBMTElTVCBMT0FEIExPQyBMT0NBVEUgTE9GIExPRyBMUFJJTlQgVVNJTkcgTFNFVCAnICtcbiAgICAgICAgICAnTUVSR0UgTUlEJCBNS0RJUiBNS0QkIE1LSSQgTUtTJCBNT0QgTkFNRSBORVcgTkVYVCBOT0lTRSBOT1QgT0NUJCBPTiBPUiBQRU4gUExBWSBTVFJJRyBPUEVOIE9QVElPTiAnICtcbiAgICAgICAgICAnQkFTRSBPVVQgUEFJTlQgUEFMRVRURSBQQ09QWSBQRUVLIFBNQVAgUE9JTlQgUE9LRSBQT1MgUFJJTlQgUFJJTlRdIFBTRVQgUFJFU0VUICcgK1xuICAgICAgICAgICdQVVQgUkFORE9NSVpFIFJFQUQgUkVNIFJFTlVNIFJFU0VUfDAgUkVTVE9SRSBSRVNVTUUgUkVUVVJOfDAgUklHSFQkIFJNRElSIFJORCBSU0VUICcgK1xuICAgICAgICAgICdSVU4gU0FWRSBTQ1JFRU4gU0dOIFNIRUxMIFNJTiBTT1VORCBTUEFDRSQgU1BDIFNRUiBTVEVQIFNUSUNLIFNUT1AgU1RSJCBTVFJJTkckIFNXQVAgJyArXG4gICAgICAgICAgJ1NZU1RFTSBUQUIgVEFOIFRJTUUkIFRJTUVSIFRST0ZGIFRST04gVE8gVVNSIFZBTCBWQVJQVFIgVkFSUFRSJCBWSUVXIFdBSVQgV0hJTEUgJyArXG4gICAgICAgICAgJ1dFTkQgV0lEVEggV0lORE9XIFdSSVRFIFhPUidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCdSRU0nLCAnJCcsIHtyZWxldmFuY2U6IDEwfSksXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcJycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICAvLyBNYXRjaCBsaW5lIG51bWJlcnNcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdeWzAtOV0rXFwgJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gTWF0Y2ggdHlwZWQgbnVtZXJpYyBjb25zdGFudHMgKDEwMDAsIDEyLjM0ISwgMS4yZTUsIDEuNSMsIDEuMkQyKVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKFswLTldK1swLTllZEVEXFwuXSpbI1xcIV0/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gTWF0Y2ggaGV4YWRlY2ltYWwgbnVtYmVycyAoJkh4eHh4KVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJyhcXCZbaEhdWzAtOWEtZkEtRl17MSw0fSknXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBNYXRjaCBvY3RhbCBudW1iZXJzICgmT3h4eHh4eClcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoXFwmW29PXVswLTddezEsNn0pJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKXtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgLy8gQXR0cmlidXRlXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAvPC8sIGVuZDogLz4vXG4gICAgICB9LFxuICAgICAgLy8gU3BlY2lmaWNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC86Oj0vLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIENvbW1vblxuICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcyl7XG4gIHZhciBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgIGJlZ2luOiAnW1xcXFwrXFxcXC1dJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2JmJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1teXFxcXFtcXFxcXVxcXFwuLFxcXFwrXFxcXC08PiBcXHJcXG5dJyxcbiAgICAgICAgJ1tcXFxcW1xcXFxdXFxcXC4sXFxcXCtcXFxcLTw+IFxcclxcbl0nLFxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiAnW1xcXFxbXFxcXF1dJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1tcXFxcLixdJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyB0aGlzIG1vZGUgd29ya3MgYXMgdGhlIG9ubHkgcmVsZXZhbmNlIGNvdW50ZXJcbiAgICAgICAgYmVnaW46IC9cXCtcXCt8XFwtXFwtLywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbTElURVJBTF1cbiAgICAgIH0sXG4gICAgICBMSVRFUkFMXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZGl2IG1vZCBpbiBhbmQgb3Igbm90IHhvciBhc3NlcnRlcnJvciBiZWdpbiBjYXNlIGRvIGRvd250byBlbHNlIGVuZCBleGl0IGZvciBpZiBvZiByZXBlYXQgdGhlbiB0byAnICtcbiAgICAndW50aWwgd2hpbGUgd2l0aCB2YXInO1xuICB2YXIgTElURVJBTFMgPSAnZmFsc2UgdHJ1ZSc7XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAvXFx7LyxcbiAgICAgIC9cXH0vLFxuICAgICAge1xuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVChcbiAgICAgIC9cXChcXCovLFxuICAgICAgL1xcKlxcKS8sXG4gICAgICB7XG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH1cbiAgICApXG4gIF07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLCBlbmQ6IC8nLyxcbiAgICBjb250YWluczogW3tiZWdpbjogLycnL31dXG4gIH07XG4gIHZhciBDSEFSX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCBiZWdpbjogLygjXFxkKykrL1xuICB9O1xuICB2YXIgREFURSA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8oRFR8RHxUKScsXG4gICAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIERCTF9RVU9URURfVkFSSUFCTEUgPSB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyBub3QgYSBzdHJpbmcgdGVjaG5pY2FsbHkgYnV0IG1ha2VzIHNlbnNlIHRvIGJlIGhpZ2hsaWdodGVkIGluIHRoZSBzYW1lIHN0eWxlXG4gICAgICBiZWdpbjogJ1wiJyxcbiAgICAgIGVuZDogJ1wiJ1xuICB9O1xuXG4gIHZhciBQUk9DRURVUkUgPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGJlZ2luS2V5d29yZHM6ICdwcm9jZWR1cmUnLCBlbmQ6IC9bOjtdLyxcbiAgICBrZXl3b3JkczogJ3Byb2NlZHVyZXwxMCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCBDSEFSX1NUUklOR11cbiAgICAgIH1cbiAgICBdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICB9O1xuXG4gIHZhciBPQkpFQ1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luOiAnT0JKRUNUIChUYWJsZXxGb3JtfFJlcG9ydHxEYXRhcG9ydHxDb2RldW5pdHxYTUxwb3J0fE1lbnVTdWl0ZXxQYWdlfFF1ZXJ5KSAoXFxcXGQrKSAoW15cXFxcclxcXFxuXSspJyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICBQUk9DRURVUkVcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7IGtleXdvcmQ6IEtFWVdPUkRTLCBsaXRlcmFsOiBMSVRFUkFMUyB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBTVFJJTkcsIENIQVJfU1RSSU5HLFxuICAgICAgREFURSwgREJMX1FVT1RFRF9WQVJJQUJMRSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBPQkpFQ1QsXG4gICAgICBQUk9DRURVUkVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY2FwbnAnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ3N0cnVjdCBlbnVtIGludGVyZmFjZSB1bmlvbiBncm91cCBpbXBvcnQgdXNpbmcgY29uc3QgYW5ub3RhdGlvbiBleHRlbmRzIGluIG9mIG9uIGFzIHdpdGggZnJvbSBmaXhlZCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ1ZvaWQgQm9vbCBJbnQ4IEludDE2IEludDMyIEludDY0IFVJbnQ4IFVJbnQxNiBVSW50MzIgVUludDY0IEZsb2F0MzIgRmxvYXQ2NCAnICtcbiAgICAgICAgJ1RleHQgRGF0YSBBbnlQb2ludGVyIEFueVN0cnVjdCBDYXBhYmlsaXR5IExpc3QnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9AMHhbXFx3XFxkXXsxNn07LyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvQFxcZCtcXGIvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdzdHJ1Y3QgZW51bScsIGVuZDogL1xcey8sXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICAgIHN0YXJ0czoge2VuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlfSAvLyBoYWNrOiBlYXRpbmcgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgdGl0bGVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbnRlcmZhY2UnLCBlbmQ6IC9cXHsvLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgICBzdGFydHM6IHtlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZX0gLy8gaGFjazogZWF0aW5nIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHRpdGxlXG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIDIuMy4gSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4gIHZhciBLRVlXT1JEUyA9XG4gICAgJ2Fzc2VtYmx5IG1vZHVsZSBwYWNrYWdlIGltcG9ydCBhbGlhcyBjbGFzcyBpbnRlcmZhY2Ugb2JqZWN0IGdpdmVuIHZhbHVlICcgK1xuICAgICdhc3NpZ24gdm9pZCBmdW5jdGlvbiBuZXcgb2YgZXh0ZW5kcyBzYXRpc2ZpZXMgYWJzdHJhY3RzIGluIG91dCByZXR1cm4gJyArXG4gICAgJ2JyZWFrIGNvbnRpbnVlIHRocm93IGFzc2VydCBkeW5hbWljIGlmIGVsc2Ugc3dpdGNoIGNhc2UgZm9yIHdoaWxlIHRyeSAnICtcbiAgICAnY2F0Y2ggZmluYWxseSB0aGVuIGxldCB0aGlzIG91dGVyIHN1cGVyIGlzIGV4aXN0cyBub25lbXB0eSc7XG4gIC8vIDcuNC4xIERlY2xhcmF0aW9uIE1vZGlmaWVyc1xuICB2YXIgREVDTEFSQVRJT05fTU9ESUZJRVJTID1cbiAgICAnc2hhcmVkIGFic3RyYWN0IGZvcm1hbCBkZWZhdWx0IGFjdHVhbCB2YXJpYWJsZSBsYXRlIG5hdGl2ZSBkZXByZWNhdGVkJyArXG4gICAgJ2ZpbmFsIHNlYWxlZCBhbm5vdGF0aW9uIHN1cHByZXNzV2FybmluZ3Mgc21hbGwnO1xuICAvLyA3LjQuMiBEb2N1bWVudGF0aW9uXG4gIHZhciBET0NVTUVOVEFUSU9OID1cbiAgICAnZG9jIGJ5IGxpY2Vuc2Ugc2VlIHRocm93cyB0YWdnZWQnO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLCBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgYmVnaW46IC9gYC8sIGVuZDogL2BgLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuICB2YXIgRVhQUkVTU0lPTlMgPSBbXG4gICAge1xuICAgICAgLy8gdmVyYmF0aW0gc3RyaW5nXG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcIlwiXCInLFxuICAgICAgZW5kOiAnXCJcIlwiJyxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIHN0cmluZyBsaXRlcmFsIG9yIHRlbXBsYXRlXG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgIGNvbnRhaW5zOiBbU1VCU1RdXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBjaGFyYWN0ZXIgbGl0ZXJhbFxuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiBcIidcIixcbiAgICAgIGVuZDogXCInXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIG51bWVyaWMgbGl0ZXJhbFxuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnI1swLTlhLWZBLUZfXSt8XFxcXCRbMDFfXSt8WzAtOV9dKyg/OlxcXFwuWzAtOV9dKD86W2VFXVsrLV0/XFxcXGQrKT8pP1trTUdUUG11bnBmXT8nLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IEVYUFJFU1NJT05TO1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTICsgJyAnICsgREVDTEFSQVRJT05fTU9ESUZJRVJTLFxuICAgICAgbWV0YTogRE9DVU1FTlRBVElPTlxuICAgIH0sXG4gICAgaWxsZWdhbDogJ1xcXFwkW14wMV18I1teMC05YS1mQS1GXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycsIHtjb250YWluczogWydzZWxmJ119KSxcbiAgICAgIHtcbiAgICAgICAgLy8gY29tcGlsZXIgYW5ub3RhdGlvblxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdAW2Etel1cXFxcdyooPzpcXFxcOlxcXCJbXlxcXCJdKlxcXCIpPydcbiAgICAgIH1cbiAgICBdLmNvbmNhdChFWFBSRVNTSU9OUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjbGVhbicsJ2ljbCcsJ2RjbCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaWYgbGV0IGluIHdpdGggd2hlcmUgY2FzZSBvZiBjbGFzcyBpbnN0YW5jZSBvdGhlcndpc2UgJyArXG4gICAgICAgICdpbXBsZW1lbnRhdGlvbiBkZWZpbml0aW9uIHN5c3RlbSBtb2R1bGUgZnJvbSBpbXBvcnQgcXVhbGlmaWVkIGFzICcgK1xuICAgICAgICAnc3BlY2lhbCBjb2RlIGlubGluZSBmb3JlaWduIGV4cG9ydCBjY2FsbCBzdGRjYWxsIGdlbmVyaWMgZGVyaXZlICcgK1xuICAgICAgICAnaW5maXggaW5maXhsIGluZml4cicsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnVHJ1ZSBGYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuXG4gICAgICB7YmVnaW46ICctPnw8LVt8Ol0/fDo6fCMhP3w+Pj18XFxcXHtcXFxcfHxcXFxcfFxcXFx9fDo9PXw9OnxcXFxcLlxcXFwufDw+fGAnfSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBrZXl3b3JkcyA9IHtcbiAgICAnYnVpbHRpbi1uYW1lJzpcbiAgICAgIC8vIENsb2p1cmUga2V5d29yZHNcbiAgICAgICdkZWYgZGVmb25jZSBjb25kIGFwcGx5IGlmLW5vdCBpZi1sZXQgaWYgbm90IG5vdD0gPSA8ID4gPD0gPj0gPT0gKyAvICogLSByZW0gJytcbiAgICAgICdxdW90IG5lZz8gcG9zPyBkZWxheT8gc3ltYm9sPyBrZXl3b3JkPyB0cnVlPyBmYWxzZT8gaW50ZWdlcj8gZW1wdHk/IGNvbGw/IGxpc3Q/ICcrXG4gICAgICAnc2V0PyBpZm4/IGZuPyBhc3NvY2lhdGl2ZT8gc2VxdWVudGlhbD8gc29ydGVkPyBjb3VudGVkPyByZXZlcnNpYmxlPyBudW1iZXI/IGRlY2ltYWw/ICcrXG4gICAgICAnY2xhc3M/IGRpc3RpbmN0PyBpc2E/IGZsb2F0PyByYXRpb25hbD8gcmVkdWNlZD8gcmF0aW8/IG9kZD8gZXZlbj8gY2hhcj8gc2VxPyB2ZWN0b3I/ICcrXG4gICAgICAnc3RyaW5nPyBtYXA/IG5pbD8gY29udGFpbnM/IHplcm8/IGluc3RhbmNlPyBub3QtZXZlcnk/IG5vdC1hbnk/IGxpYnNwZWM/IC0+IC0+PiAuLiAuICcrXG4gICAgICAnaW5jIGNvbXBhcmUgZG8gZG90aW1lcyBtYXBjYXQgdGFrZSByZW1vdmUgdGFrZS13aGlsZSBkcm9wIGxldGZuIGRyb3AtbGFzdCB0YWtlLWxhc3QgJytcbiAgICAgICdkcm9wLXdoaWxlIHdoaWxlIGludGVybiBjb25kcCBjYXNlIHJlZHVjZWQgY3ljbGUgc3BsaXQtYXQgc3BsaXQtd2l0aCByZXBlYXQgcmVwbGljYXRlICcrXG4gICAgICAnaXRlcmF0ZSByYW5nZSBtZXJnZSB6aXBtYXAgZGVjbGFyZSBsaW5lLXNlcSBzb3J0IGNvbXBhcmF0b3Igc29ydC1ieSBkb3J1biBkb2FsbCBudGhuZXh0ICcrXG4gICAgICAnbnRocmVzdCBwYXJ0aXRpb24gZXZhbCBkb3NlcSBhd2FpdCBhd2FpdC1mb3IgbGV0IGFnZW50IGF0b20gc2VuZCBzZW5kLW9mZiByZWxlYXNlLXBlbmRpbmctc2VuZHMgJytcbiAgICAgICdhZGQtd2F0Y2ggbWFwdiBmaWx0ZXJ2IHJlbW92ZS13YXRjaCBhZ2VudC1lcnJvciByZXN0YXJ0LWFnZW50IHNldC1lcnJvci1oYW5kbGVyIGVycm9yLWhhbmRsZXIgJytcbiAgICAgICdzZXQtZXJyb3ItbW9kZSEgZXJyb3ItbW9kZSBzaHV0ZG93bi1hZ2VudHMgcXVvdGUgdmFyIGZuIGxvb3AgcmVjdXIgdGhyb3cgdHJ5IG1vbml0b3ItZW50ZXIgJytcbiAgICAgICdtb25pdG9yLWV4aXQgZGVmbWFjcm8gZGVmbiBkZWZuLSBtYWNyb2V4cGFuZCBtYWNyb2V4cGFuZC0xIGZvciBkb3N5bmMgYW5kIG9yICcrXG4gICAgICAnd2hlbiB3aGVuLW5vdCB3aGVuLWxldCBjb21wIGp1eHQgcGFydGlhbCBzZXF1ZW5jZSBtZW1vaXplIGNvbnN0YW50bHkgY29tcGxlbWVudCBpZGVudGl0eSBhc3NlcnQgJytcbiAgICAgICdwZWVrIHBvcCBkb3RvIHByb3h5IGRlZnN0cnVjdCBmaXJzdCByZXN0IGNvbnMgZGVmcHJvdG9jb2wgY2FzdCBjb2xsIGRlZnR5cGUgZGVmcmVjb3JkIGxhc3QgYnV0bGFzdCAnK1xuICAgICAgJ3NpZ3MgcmVpZnkgc2Vjb25kIGZmaXJzdCBmbmV4dCBuZmlyc3Qgbm5leHQgZGVmbXVsdGkgZGVmbWV0aG9kIG1ldGEgd2l0aC1tZXRhIG5zIGluLW5zIGNyZWF0ZS1ucyBpbXBvcnQgJytcbiAgICAgICdyZWZlciBrZXlzIHNlbGVjdC1rZXlzIHZhbHMga2V5IHZhbCByc2VxIG5hbWUgbmFtZXNwYWNlIHByb21pc2UgaW50byB0cmFuc2llbnQgcGVyc2lzdGVudCEgY29uaiEgJytcbiAgICAgICdhc3NvYyEgZGlzc29jISBwb3AhIGRpc2ohIHVzZSBjbGFzcyB0eXBlIG51bSBmbG9hdCBkb3VibGUgc2hvcnQgYnl0ZSBib29sZWFuIGJpZ2ludCBiaWdpbnRlZ2VyICcrXG4gICAgICAnYmlnZGVjIHByaW50LW1ldGhvZCBwcmludC1kdXAgdGhyb3ctaWYgcHJpbnRmIGZvcm1hdCBsb2FkIGNvbXBpbGUgZ2V0LWluIHVwZGF0ZS1pbiBwciBwci1vbiBuZXdsaW5lICcrXG4gICAgICAnZmx1c2ggcmVhZCBzbHVycCByZWFkLWxpbmUgc3VidmVjIHdpdGgtb3BlbiBtZW1mbiB0aW1lIHJlLWZpbmQgcmUtZ3JvdXBzIHJhbmQtaW50IHJhbmQgbW9kIGxvY2tpbmcgJytcbiAgICAgICdhc3NlcnQtdmFsaWQtZmRlY2wgYWxpYXMgcmVzb2x2ZSByZWYgZGVyZWYgcmVmc2V0IHN3YXAhIHJlc2V0ISBzZXQtdmFsaWRhdG9yISBjb21wYXJlLWFuZC1zZXQhIGFsdGVyLW1ldGEhICcrXG4gICAgICAncmVzZXQtbWV0YSEgY29tbXV0ZSBnZXQtdmFsaWRhdG9yIGFsdGVyIHJlZi1zZXQgcmVmLWhpc3RvcnktY291bnQgcmVmLW1pbi1oaXN0b3J5IHJlZi1tYXgtaGlzdG9yeSBlbnN1cmUgc3luYyBpbyEgJytcbiAgICAgICduZXcgbmV4dCBjb25qIHNldCEgdG8tYXJyYXkgZnV0dXJlIGZ1dHVyZS1jYWxsIGludG8tYXJyYXkgYXNldCBnZW4tY2xhc3MgcmVkdWNlIG1hcCBmaWx0ZXIgZmluZCBlbXB0eSAnK1xuICAgICAgJ2hhc2gtbWFwIGhhc2gtc2V0IHNvcnRlZC1tYXAgc29ydGVkLW1hcC1ieSBzb3J0ZWQtc2V0IHNvcnRlZC1zZXQtYnkgdmVjIHZlY3RvciBzZXEgZmxhdHRlbiByZXZlcnNlIGFzc29jIGRpc3NvYyBsaXN0ICcrXG4gICAgICAnZGlzaiBnZXQgdW5pb24gZGlmZmVyZW5jZSBpbnRlcnNlY3Rpb24gZXh0ZW5kIGV4dGVuZC10eXBlIGV4dGVuZC1wcm90b2NvbCBpbnQgbnRoIGRlbGF5IGNvdW50IGNvbmNhdCBjaHVuayBjaHVuay1idWZmZXIgJytcbiAgICAgICdjaHVuay1hcHBlbmQgY2h1bmstZmlyc3QgY2h1bmstcmVzdCBtYXggbWluIGRlYyB1bmNoZWNrZWQtaW5jLWludCB1bmNoZWNrZWQtaW5jIHVuY2hlY2tlZC1kZWMtaW5jIHVuY2hlY2tlZC1kZWMgdW5jaGVja2VkLW5lZ2F0ZSAnK1xuICAgICAgJ3VuY2hlY2tlZC1hZGQtaW50IHVuY2hlY2tlZC1hZGQgdW5jaGVja2VkLXN1YnRyYWN0LWludCB1bmNoZWNrZWQtc3VidHJhY3QgY2h1bmstbmV4dCBjaHVuay1jb25zIGNodW5rZWQtc2VxPyBwcm4gdmFyeS1tZXRhICcrXG4gICAgICAnbGF6eS1zZXEgc3ByZWFkIGxpc3QqIHN0ciBmaW5kLWtleXdvcmQga2V5d29yZCBzeW1ib2wgZ2Vuc3ltIGZvcmNlIHJhdGlvbmFsaXplJ1xuICAgfTtcblxuICB2YXIgU1lNQk9MU1RBUlQgPSAnYS16QS1aX1xcXFwtIS4/Kyo9PD4mI1xcJyc7XG4gIHZhciBTWU1CT0xfUkUgPSAnWycgKyBTWU1CT0xTVEFSVCArICddWycgKyBTWU1CT0xTVEFSVCArICcwLTkvOzpdKic7XG4gIHZhciBTSU1QTEVfTlVNQkVSX1JFID0gJ1stK10/XFxcXGQrKFxcXFwuXFxcXGQrKT8nO1xuXG4gIHZhciBTWU1CT0wgPSB7XG4gICAgYmVnaW46IFNZTUJPTF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogU0lNUExFX05VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pO1xuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnOycsXG4gICAgJyQnLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46IC9cXGIodHJ1ZXxmYWxzZXxuaWwpXFxiL1xuICB9O1xuICB2YXIgQ09MTEVDVElPTiA9IHtcbiAgICBiZWdpbjogJ1tcXFxcW1xcXFx7XScsIGVuZDogJ1tcXFxcXVxcXFx9XSdcbiAgfTtcbiAgdmFyIEhJTlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgYmVnaW46ICdcXFxcXicgKyBTWU1CT0xfUkVcbiAgfTtcbiAgdmFyIEhJTlRfQ09MID0gaGxqcy5DT01NRU5UKCdcXFxcXlxcXFx7JywgJ1xcXFx9Jyk7XG4gIHZhciBLRVkgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1s6XXsxLDJ9JyArIFNZTUJPTF9SRVxuICB9O1xuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgTkFNRSA9IHtcbiAgICBrZXl3b3Jkczoga2V5d29yZHMsXG4gICAgbGV4ZW1lczogU1lNQk9MX1JFLFxuICAgIGNsYXNzTmFtZTogJ25hbWUnLCBiZWdpbjogU1lNQk9MX1JFLFxuICAgIHN0YXJ0czogQk9EWVxuICB9O1xuICB2YXIgREVGQVVMVF9DT05UQUlOUyA9IFtMSVNULCBTVFJJTkcsIEhJTlQsIEhJTlRfQ09MLCBDT01NRU5ULCBLRVksIENPTExFQ1RJT04sIE5VTUJFUiwgTElURVJBTCwgU1lNQk9MXTtcblxuICBMSVNULmNvbnRhaW5zID0gW2hsanMuQ09NTUVOVCgnY29tbWVudCcsICcnKSwgTkFNRSwgQk9EWV07XG4gIEJPRFkuY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuICBDT0xMRUNUSU9OLmNvbnRhaW5zID0gREVGQVVMVF9DT05UQUlOUztcbiAgSElOVF9DT0wuY29udGFpbnMgPSBbQ09MTEVDVElPTl07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NsaiddLFxuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbTElTVCwgU1RSSU5HLCBISU5ULCBISU5UX0NPTCwgQ09NTUVOVCwgS0VZLCBDT0xMRUNUSU9OLCBOVU1CRVIsIExJVEVSQUxdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXihbXFx3Li1dK3xcXHMqI18pPT4vLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ2Nsb2p1cmUnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjbWFrZS5pbiddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhZGRfY3VzdG9tX2NvbW1hbmQgYWRkX2N1c3RvbV90YXJnZXQgYWRkX2RlZmluaXRpb25zIGFkZF9kZXBlbmRlbmNpZXMgJyArXG4gICAgICAgICdhZGRfZXhlY3V0YWJsZSBhZGRfbGlicmFyeSBhZGRfc3ViZGlyZWN0b3J5IGFkZF90ZXN0IGF1eF9zb3VyY2VfZGlyZWN0b3J5ICcgK1xuICAgICAgICAnYnJlYWsgYnVpbGRfY29tbWFuZCBjbWFrZV9taW5pbXVtX3JlcXVpcmVkIGNtYWtlX3BvbGljeSBjb25maWd1cmVfZmlsZSAnICtcbiAgICAgICAgJ2NyZWF0ZV90ZXN0X3NvdXJjZWxpc3QgZGVmaW5lX3Byb3BlcnR5IGVsc2UgZWxzZWlmIGVuYWJsZV9sYW5ndWFnZSBlbmFibGVfdGVzdGluZyAnICtcbiAgICAgICAgJ2VuZGZvcmVhY2ggZW5kZnVuY3Rpb24gZW5kaWYgZW5kbWFjcm8gZW5kd2hpbGUgZXhlY3V0ZV9wcm9jZXNzIGV4cG9ydCBmaW5kX2ZpbGUgJyArXG4gICAgICAgICdmaW5kX2xpYnJhcnkgZmluZF9wYWNrYWdlIGZpbmRfcGF0aCBmaW5kX3Byb2dyYW0gZmx0a193cmFwX3VpIGZvcmVhY2ggZnVuY3Rpb24gJyArXG4gICAgICAgICdnZXRfY21ha2VfcHJvcGVydHkgZ2V0X2RpcmVjdG9yeV9wcm9wZXJ0eSBnZXRfZmlsZW5hbWVfY29tcG9uZW50IGdldF9wcm9wZXJ0eSAnICtcbiAgICAgICAgJ2dldF9zb3VyY2VfZmlsZV9wcm9wZXJ0eSBnZXRfdGFyZ2V0X3Byb3BlcnR5IGdldF90ZXN0X3Byb3BlcnR5IGlmIGluY2x1ZGUgJyArXG4gICAgICAgICdpbmNsdWRlX2RpcmVjdG9yaWVzIGluY2x1ZGVfZXh0ZXJuYWxfbXNwcm9qZWN0IGluY2x1ZGVfcmVndWxhcl9leHByZXNzaW9uIGluc3RhbGwgJyArXG4gICAgICAgICdsaW5rX2RpcmVjdG9yaWVzIGxvYWRfY2FjaGUgbG9hZF9jb21tYW5kIG1hY3JvIG1hcmtfYXNfYWR2YW5jZWQgbWVzc2FnZSBvcHRpb24gJyArXG4gICAgICAgICdvdXRwdXRfcmVxdWlyZWRfZmlsZXMgcHJvamVjdCBxdF93cmFwX2NwcCBxdF93cmFwX3VpIHJlbW92ZV9kZWZpbml0aW9ucyByZXR1cm4gJyArXG4gICAgICAgICdzZXBhcmF0ZV9hcmd1bWVudHMgc2V0IHNldF9kaXJlY3RvcnlfcHJvcGVydGllcyBzZXRfcHJvcGVydHkgJyArXG4gICAgICAgICdzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMgc2V0X3RhcmdldF9wcm9wZXJ0aWVzIHNldF90ZXN0c19wcm9wZXJ0aWVzIHNpdGVfbmFtZSAnICtcbiAgICAgICAgJ3NvdXJjZV9ncm91cCBzdHJpbmcgdGFyZ2V0X2xpbmtfbGlicmFyaWVzIHRyeV9jb21waWxlIHRyeV9ydW4gdW5zZXQgdmFyaWFibGVfd2F0Y2ggJyArXG4gICAgICAgICd3aGlsZSBidWlsZF9uYW1lIGV4ZWNfcHJvZ3JhbSBleHBvcnRfbGlicmFyeV9kZXBlbmRlbmNpZXMgaW5zdGFsbF9maWxlcyAnICtcbiAgICAgICAgJ2luc3RhbGxfcHJvZ3JhbXMgaW5zdGFsbF90YXJnZXRzIGxpbmtfbGlicmFyaWVzIG1ha2VfZGlyZWN0b3J5IHJlbW92ZSBzdWJkaXJfZGVwZW5kcyAnICtcbiAgICAgICAgJ3N1YmRpcnMgdXNlX21hbmdsZWRfbWVzYSB1dGlsaXR5X3NvdXJjZSB2YXJpYWJsZV9yZXF1aXJlcyB3cml0ZV9maWxlICcgK1xuICAgICAgICAncXQ1X3VzZV9tb2R1bGVzIHF0NV91c2VfcGFja2FnZSBxdDVfd3JhcF9jcHAgb24gb2ZmIHRydWUgZmFsc2UgYW5kIG9yICcgK1xuICAgICAgICAnZXF1YWwgbGVzcyBncmVhdGVyIHN0cmxlc3Mgc3RyZ3JlYXRlciBzdHJlcXVhbCBtYXRjaGVzJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFwkeycsIGVuZDogJ30nXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAvLyBKUyBrZXl3b3Jkc1xuICAgICAgJ2luIGlmIGZvciB3aGlsZSBmaW5hbGx5IG5ldyBkbyByZXR1cm4gZWxzZSBicmVhayBjYXRjaCBpbnN0YW5jZW9mIHRocm93IHRyeSB0aGlzICcgK1xuICAgICAgJ3N3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlIGRlYnVnZ2VyIHN1cGVyIHlpZWxkIGltcG9ydCBleHBvcnQgZnJvbSBhcyBkZWZhdWx0IGF3YWl0ICcgK1xuICAgICAgLy8gQ29mZmVlIGtleXdvcmRzXG4gICAgICAndGhlbiB1bmxlc3MgdW50aWwgbG9vcCBvZiBieSB3aGVuIGFuZCBvciBpcyBpc250IG5vdCcsXG4gICAgbGl0ZXJhbDpcbiAgICAgIC8vIEpTIGxpdGVyYWxzXG4gICAgICAndHJ1ZSBmYWxzZSBudWxsIHVuZGVmaW5lZCAnICtcbiAgICAgIC8vIENvZmZlZSBsaXRlcmFsc1xuICAgICAgJ3llcyBubyBvbiBvZmYnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ25wbSByZXF1aXJlIGNvbnNvbGUgcHJpbnQgbW9kdWxlIGdsb2JhbCB3aW5kb3cgZG9jdW1lbnQnXG4gIH07XG4gIHZhciBKU19JREVOVF9SRSA9ICdbQS1aYS16JF9dWzAtOUEtWmEteiRfXSonO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvI1xcey8sIGVuZDogL30vLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICB9O1xuICB2YXIgRVhQUkVTU0lPTlMgPSBbXG4gICAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUsXG4gICAgaGxqcy5pbmhlcml0KGhsanMuQ19OVU1CRVJfTU9ERSwge3N0YXJ0czoge2VuZDogJyhcXFxccyovKT8nLCByZWxldmFuY2U6IDB9fSksIC8vIGEgbnVtYmVyIHRyaWVzIHRvIGVhdCB0aGUgZm9sbG93aW5nIHNsYXNoIHRvIHByZXZlbnQgdHJlYXRpbmcgaXQgYXMgYSByZWdleHBcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJy8sIGVuZDogLycvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIlwiXCIvLCBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnLy8vJywgZW5kOiAnLy8vJyxcbiAgICAgICAgICBjb250YWluczogW1NVQlNULCBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICcvL1tnaW1dKicsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyByZWdleCBjYW4ndCBzdGFydCB3aXRoIHNwYWNlIHRvIHBhcnNlIHggLyAyIC8gMyBhcyB0d28gZGl2aXNpb25zXG4gICAgICAgICAgLy8gcmVnZXggY2FuJ3Qgc3RhcnQgd2l0aCAqLCBhbmQgaXQgc3VwcG9ydHMgYW4gXCJpbGxlZ2FsXCIgaW4gdGhlIG1haW4gbW9kZVxuICAgICAgICAgIGJlZ2luOiAvXFwvKD8hWyAqXSkoXFxcXFxcL3wuKSo/XFwvW2dpbV0qKD89XFxXfCQpL1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJ0AnICsgSlNfSURFTlRfUkUgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICB9LFxuICAgIHtcbiAgICAgIHN1Ykxhbmd1YWdlOiAnamF2YXNjcmlwdCcsXG4gICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICB2YXJpYW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgYGAnLCBlbmQ6ICdgYGAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gRVhQUkVTU0lPTlM7XG5cbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBKU19JREVOVF9SRX0pO1xuICB2YXIgUEFSQU1TX1JFID0gJyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCWy09XT4nO1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKFteXFxcXChdJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgLyogV2UgbmVlZCBhbm90aGVyIGNvbnRhaW5lZCBuYW1lbGVzcyBtb2RlIHRvIG5vdCBoYXZlIGV2ZXJ5IG5lc3RlZFxuICAgIHBhaXIgb2YgcGFyZW5zIHRvIGJlIGNhbGxlZCBcInBhcmFtc1wiICovXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICBjb250YWluczogWydzZWxmJ10uY29uY2F0KEVYUFJFU1NJT05TKVxuICAgIH1dXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NvZmZlZScsICdjc29uJywgJ2ljZWQnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05TLmNvbmNhdChbXG4gICAgICBobGpzLkNPTU1FTlQoJyMjIycsICcjIyMnKSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqJyArIEpTX0lERU5UX1JFICsgJ1xcXFxzKj1cXFxccyonICsgUEFSQU1TX1JFLCBlbmQ6ICdbLT1dPicsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1RJVExFLCBQQVJBTVNdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBhbm9ueW1vdXMgZnVuY3Rpb24gc3RhcnRcbiAgICAgICAgYmVnaW46IC9bOlxcKCw9XVxccyovLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgYmVnaW46IFBBUkFNU19SRSwgZW5kOiAnWy09XT4nLFxuICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW1BBUkFNU11cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIGlsbGVnYWw6IC9bOj1cIlxcW1xcXV0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdleHRlbmRzJyxcbiAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgICAgICBjb250YWluczogW1RJVExFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgVElUTEVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IEpTX0lERU5UX1JFICsgJzonLCBlbmQ6ICc6JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdfIGFzIGF0IGNvZml4IGVsc2UgZW5kIGV4aXN0cyBleGlzdHMyIGZpeCBmb3IgZm9yYWxsIGZ1biBpZiBJRiBpbiBsZXQgJyArXG4gICAgICAgICdtYXRjaCBtb2QgUHJvcCByZXR1cm4gU2V0IHRoZW4gVHlwZSB1c2luZyB3aGVyZSB3aXRoICcgK1xuICAgICAgICAnQWJvcnQgQWJvdXQgQWRkIEFkbWl0IEFkbWl0dGVkIEFsbCBBcmd1bWVudHMgQXNzdW1wdGlvbnMgQXhpb20gQmFjayBCYWNrVG8gJyArXG4gICAgICAgICdCYWNrdHJhY2sgQmluZCBCbGFja2xpc3QgQ2Fub25pY2FsIENkIENoZWNrIENsYXNzIENsYXNzZXMgQ2xvc2UgQ29lcmNpb24gJyArXG4gICAgICAgICdDb2VyY2lvbnMgQ29GaXhwb2ludCBDb0luZHVjdGl2ZSBDb2xsZWN0aW9uIENvbWJpbmVkIENvbXB1dGUgQ29uamVjdHVyZSAnICtcbiAgICAgICAgJ0NvbmplY3R1cmVzIENvbnN0YW50IGNvbnN0ciBDb25zdHJhaW50IENvbnN0cnVjdG9ycyBDb250ZXh0IENvcm9sbGFyeSAnICtcbiAgICAgICAgJ0NyZWF0ZUhpbnREYiBDdXQgRGVjbGFyZSBEZWZpbmVkIERlZmluaXRpb24gRGVsaW1pdCBEZXBlbmRlbmNpZXMgRGVwZW5kZW50JyArXG4gICAgICAgICdEZXJpdmUgRHJvcCBlYXV0byBFbmQgRXF1YWxpdHkgRXZhbCBFeGFtcGxlIEV4aXN0ZW50aWFsIEV4aXN0ZW50aWFscyAnICtcbiAgICAgICAgJ0V4aXN0aW5nIEV4cG9ydCBleHBvcnRpbmcgRXh0ZXJuIEV4dHJhY3QgRXh0cmFjdGlvbiBGYWN0IEZpZWxkIEZpZWxkcyBGaWxlICcgK1xuICAgICAgICAnRml4cG9pbnQgRm9jdXMgZm9yIEZyb20gRnVuY3Rpb24gRnVuY3Rpb25hbCBHZW5lcmFsaXphYmxlIEdsb2JhbCBHb2FsIEdyYWIgJyArXG4gICAgICAgICdHcmFtbWFyIEdyYXBoIEd1YXJkZWQgSGVhcCBIaW50IEhpbnREYiBIaW50cyBIeXBvdGhlc2VzIEh5cG90aGVzaXMgaWRlbnQgJyArXG4gICAgICAgICdJZGVudGl0eSBJZiBJbW1lZGlhdGUgSW1wbGljaXQgSW1wb3J0IEluY2x1ZGUgSW5kdWN0aXZlIEluZml4IEluZm8gSW5pdGlhbCAnICtcbiAgICAgICAgJ0lubGluZSBJbnNwZWN0IEluc3RhbmNlIEluc3RhbmNlcyBJbnRybyBJbnRyb3MgSW52ZXJzaW9uIEludmVyc2lvbl9jbGVhciAnICtcbiAgICAgICAgJ0xhbmd1YWdlIExlZnQgTGVtbWEgTGV0IExpYnJhcmllcyBMaWJyYXJ5IExvYWQgTG9hZFBhdGggTG9jYWwgTG9jYXRlIEx0YWMgTUwgJyArXG4gICAgICAgICdNb2RlIE1vZHVsZSBNb2R1bGVzIE1vbm9tb3JwaGljIE1vcnBoaXNtIE5leHQgTm9JbmxpbmUgTm90YXRpb24gT2JsaWdhdGlvbiAnICtcbiAgICAgICAgJ09ibGlnYXRpb25zIE9wYXF1ZSBPcGVuIE9wdGltaXplIE9wdGlvbnMgUGFyYW1ldGVyIFBhcmFtZXRlcnMgUGFyYW1ldHJpYyAnICtcbiAgICAgICAgJ1BhdGggUGF0aHMgcGF0dGVybiBQb2x5bW9ycGhpYyBQcmV0ZXJtIFByaW50IFByaW50aW5nIFByb2dyYW0gUHJvamVjdGlvbnMgJyArXG4gICAgICAgICdQcm9vZiBQcm9wb3NpdGlvbiBQd2QgUWVkIFF1aXQgUmVjIFJlY29yZCBSZWN1cnNpdmUgUmVkaXJlY3QgUmVsYXRpb24gUmVtYXJrICcgK1xuICAgICAgICAnUmVtb3ZlIFJlcXVpcmUgUmVzZXJ2ZWQgUmVzZXQgUmVzb2x2ZSBSZXN0YXJ0IFJld3JpdGUgUmlnaHQgUmluZyBSaW5ncyBTYXZlICcgK1xuICAgICAgICAnU2NoZW1lIFNjb3BlIFNjb3BlcyBTY3JpcHQgU2VhcmNoIFNlYXJjaEFib3V0IFNlYXJjaEhlYWQgU2VhcmNoUGF0dGVybiAnICtcbiAgICAgICAgJ1NlYXJjaFJld3JpdGUgU2VjdGlvbiBTZXBhcmF0ZSBTZXQgU2V0b2lkIFNob3cgU29sdmUgU29ydGVkIFN0ZXAgU3RyYXRlZ2llcyAnICtcbiAgICAgICAgJ1N0cmF0ZWd5IFN0cnVjdHVyZSBTdWJDbGFzcyBUYWJsZSBUYWJsZXMgVGFjdGljIFRlcm0gVGVzdCBUaGVvcmVtIFRpbWUgJyArXG4gICAgICAgICdUaW1lb3V0IFRyYW5zcGFyZW50IFR5cGUgVHlwZWNsYXNzZXMgVHlwZXMgVW5kZWxpbWl0IFVuZG8gVW5mb2N1cyBVbmZvY3VzZWQgJyArXG4gICAgICAgICdVbmZvbGQgVW5pdmVyc2UgVW5pdmVyc2VzIFVuc2V0IFVuc2hlbHZlIHVzaW5nIFZhcmlhYmxlIFZhcmlhYmxlcyBWYXJpYW50ICcgK1xuICAgICAgICAnVmVyYm9zZSBWaXNpYmlsaXR5IHdoZXJlIHdpdGgnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdhYnN0cmFjdCBhYnN1cmQgYWRtaXQgYWZ0ZXIgYXBwbHkgYXMgYXNzZXJ0IGFzc3VtcHRpb24gYXQgYXV0byBhdXRvcmV3cml0ZSAnICtcbiAgICAgICAgJ2F1dG91bmZvbGQgYmVmb3JlIGJvdHRvbSBidGF1dG8gYnkgY2FzZSBjYXNlX2VxIGNibiBjYnYgY2hhbmdlICcgK1xuICAgICAgICAnY2xhc3NpY2FsX2xlZnQgY2xhc3NpY2FsX3JpZ2h0IGNsZWFyIGNsZWFyYm9keSBjb2ZpeCBjb21wYXJlIGNvbXB1dGUgJyArXG4gICAgICAgICdjb25ncnVlbmNlIGNvbnN0cl9lcSBjb25zdHJ1Y3RvciBjb250cmFkaWN0IGNvbnRyYWRpY3Rpb24gY3V0IGN1dHJld3JpdGUgJyArXG4gICAgICAgICdjeWNsZSBkZWNpZGUgZGVjb21wb3NlIGRlcGVuZGVudCBkZXN0cnVjdCBkZXN0cnVjdGlvbiBkaW50dWl0aW9uICcgK1xuICAgICAgICAnZGlzY3JpbWluYXRlIGRpc2NyUiBkbyBkb3VibGUgZHRhdXRvIGVhcHBseSBlYXNzdW1wdGlvbiBlYXV0byBlY2FzZSAnICtcbiAgICAgICAgJ2Vjb25zdHJ1Y3RvciBlZGVzdHJ1Y3QgZWRpc2NyaW1pbmF0ZSBlZWxpbSBlZXhhY3QgZWV4aXN0cyBlaW5kdWN0aW9uICcgK1xuICAgICAgICAnZWluamVjdGlvbiBlbGVmdCBlbGltIGVsaW10eXBlIGVub3VnaCBlcXVhbGl0eSBlcmV3cml0ZSBlcmlnaHQgJyArXG4gICAgICAgICdlc2ltcGxpZnlfZXEgZXNwbGl0IGV2YXIgZXhhY3QgZXhhY3RseV9vbmNlIGV4ZmFsc28gZXhpc3RzIGZfZXF1YWwgZmFpbCAnICtcbiAgICAgICAgJ2ZpZWxkIGZpZWxkX3NpbXBsaWZ5IGZpZWxkX3NpbXBsaWZ5X2VxIGZpcnN0IGZpcnN0b3JkZXIgZml4IGZvbGQgZm91cmllciAnICtcbiAgICAgICAgJ2Z1bmN0aW9uYWwgZ2VuZXJhbGl6ZSBnZW5lcmFsaXppbmcgZ2ZhaWwgZ2l2ZV91cCBoYXNfZXZhciBobmYgaWR0YWMgaW4gJyArXG4gICAgICAgICdpbmR1Y3Rpb24gaW5qZWN0aW9uIGluc3RhbnRpYXRlIGludHJvIGludHJvX3BhdHRlcm4gaW50cm9zIGludHVpdGlvbiAnICtcbiAgICAgICAgJ2ludmVyc2lvbiBpbnZlcnNpb25fY2xlYXIgaXNfZXZhciBpc192YXIgbGFwcGx5IGxhenkgbGVmdCBsaWEgbHJhIG1vdmUgJyArXG4gICAgICAgICduYXRpdmVfY29tcHV0ZSBuaWEgbnNhdHogb21lZ2Egb25jZSBwYXR0ZXJuIHBvc2UgcHJvZ3Jlc3MgcHJvb2YgcHNhdHogcXVvdGUgJyArXG4gICAgICAgICdyZWNvcmQgcmVkIHJlZmluZSByZWZsZXhpdml0eSByZW1lbWJlciByZW5hbWUgcmVwZWF0IHJlcGxhY2UgcmV2ZXJ0ICcgK1xuICAgICAgICAncmV2Z29hbHMgcmV3cml0ZSByZXdyaXRlX3N0cmF0IHJpZ2h0IHJpbmcgcmluZ19zaW1wbGlmeSBydGF1dG8gc2V0ICcgK1xuICAgICAgICAnc2V0b2lkX3JlZmxleGl2aXR5IHNldG9pZF9yZXBsYWNlIHNldG9pZF9yZXdyaXRlIHNldG9pZF9zeW1tZXRyeSAnICtcbiAgICAgICAgJ3NldG9pZF90cmFuc2l0aXZpdHkgc2hlbHZlIHNoZWx2ZV91bmlmaWFibGUgc2ltcGwgc2ltcGxlIHNpbXBsaWZ5X2VxIHNvbHZlICcgK1xuICAgICAgICAnc3BlY2lhbGl6ZSBzcGxpdCBzcGxpdF9SYWJzIHNwbGl0X1JtdWx0IHN0ZXBsIHN0ZXByIHN1YnN0IHN1bSBzd2FwICcgK1xuICAgICAgICAnc3ltbWV0cnkgdGFjdGljIHRhdXRvIHRpbWUgdGltZW91dCB0b3AgdHJhbnNpdGl2aXR5IHRyaXZpYWwgdHJ5IHRyeWlmICcgK1xuICAgICAgICAndW5mb2xkIHVuaWZ5IHVudGlsIHVzaW5nIHZtX2NvbXB1dGUgd2l0aCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCdcXFxcKFxcXFwqJywgJ1xcXFwqXFxcXCknKSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgYmVnaW46ICdcXFxcfFxcXFxzKicsXG4gICAgICAgIGVuZDogJ1xcXFx3KydcbiAgICAgIH0sXG4gICAgICB7YmVnaW46IC9bLT1dPi99IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNvcyAoaGxqcykge1xuXG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgY29udGFpbnM6IFt7IC8vIGVzY2FwZWRcbiAgICAgICAgICBiZWdpbjogXCJcXFwiXFxcIlwiLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTlVNQkVSUyA9IHtcbiAgICBjbGFzc05hbWU6IFwibnVtYmVyXCIsXG4gICAgYmVnaW46IFwiXFxcXGIoXFxcXGQrKFxcXFwuXFxcXGQqKT98XFxcXC5cXFxcZCspXCIsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIENPU19LRVlXT1JEUyA9XG4gICAgJ3Byb3BlcnR5IHBhcmFtZXRlciBjbGFzcyBjbGFzc21ldGhvZCBjbGllbnRtZXRob2QgZXh0ZW5kcyBhcyBicmVhayAnICtcbiAgICAnY2F0Y2ggY2xvc2UgY29udGludWUgZG8gZHwwIGVsc2UgZWxzZWlmIGZvciBnb3RvIGhhbHQgaGFuZyBofDAgaWYgam9iICcgK1xuICAgICdqfDAga2lsbCBrfDAgbG9jayBsfDAgbWVyZ2UgbmV3IG9wZW4gcXVpdCBxfDAgcmVhZCByfDAgcmV0dXJuIHNldCBzfDAgJyArXG4gICAgJ3Rjb21taXQgdGhyb3cgdHJvbGxiYWNrIHRyeSB0c3RhcnQgdXNlIHZpZXcgd2hpbGUgd3JpdGUgd3wwIHhlY3V0ZSB4fDAgJyArXG4gICAgJ3praWxsIHpuc3BhY2Ugem4genRyYXAgendyaXRlIHp3IHp6ZHVtcCB6endyaXRlIHByaW50IHpicmVhayB6aW5zZXJ0ICcgK1xuICAgICd6bG9hZCB6cHJpbnQgenJlbW92ZSB6c2F2ZSB6enByaW50IG12IG12Y2FsbCBtdmNydCBtdmRpbSBtdnByaW50IHpxdWl0ICcgK1xuICAgICd6c3luYyBhc2NpaSc7XG5cbiAgICAvLyByZWdpc3RlcmVkIGZ1bmN0aW9uIC0gbm8gbmVlZCBpbiB0aGVtIGR1ZSB0byBhbGwgZnVuY3Rpb25zIGFyZSBoaWdobGlnaHRlZCxcbiAgICAvLyBidXQgSSdsbCBqdXN0IGxlYXZlIHRoaXMgaGVyZS5cblxuICAgIC8vXCIkYml0XCIsIFwiJGJpdGNvdW50XCIsXG4gICAgLy9cIiRiaXRmaW5kXCIsIFwiJGJpdGxvZ2ljXCIsIFwiJGNhc2VcIiwgXCIkY2hhclwiLCBcIiRjbGFzc21ldGhvZFwiLCBcIiRjbGFzc25hbWVcIixcbiAgICAvL1wiJGNvbXBpbGVcIiwgXCIkZGF0YVwiLCBcIiRkZWNpbWFsXCIsIFwiJGRvdWJsZVwiLCBcIiRleHRyYWN0XCIsIFwiJGZhY3RvclwiLFxuICAgIC8vXCIkZmluZFwiLCBcIiRmbnVtYmVyXCIsIFwiJGdldFwiLCBcIiRpbmNyZW1lbnRcIiwgXCIkaW51bWJlclwiLCBcIiRpc29iamVjdFwiLFxuICAgIC8vXCIkaXN2YWxpZGRvdWJsZVwiLCBcIiRpc3ZhbGlkbnVtXCIsIFwiJGp1c3RpZnlcIiwgXCIkbGVuZ3RoXCIsIFwiJGxpc3RcIixcbiAgICAvL1wiJGxpc3RidWlsZFwiLCBcIiRsaXN0ZGF0YVwiLCBcIiRsaXN0ZmluZFwiLCBcIiRsaXN0ZnJvbXN0cmluZ1wiLCBcIiRsaXN0Z2V0XCIsXG4gICAgLy9cIiRsaXN0bGVuZ3RoXCIsIFwiJGxpc3RuZXh0XCIsIFwiJGxpc3RzYW1lXCIsIFwiJGxpc3R0b3N0cmluZ1wiLCBcIiRsaXN0dmFsaWRcIixcbiAgICAvL1wiJGxvY2F0ZVwiLCBcIiRtYXRjaFwiLCBcIiRtZXRob2RcIiwgXCIkbmFtZVwiLCBcIiRuY29udmVydFwiLCBcIiRuZXh0XCIsXG4gICAgLy9cIiRub3JtYWxpemVcIiwgXCIkbm93XCIsIFwiJG51bWJlclwiLCBcIiRvcmRlclwiLCBcIiRwYXJhbWV0ZXJcIiwgXCIkcGllY2VcIixcbiAgICAvL1wiJHByZWZldGNob2ZmXCIsIFwiJHByZWZldGNob25cIiwgXCIkcHJvcGVydHlcIiwgXCIkcWxlbmd0aFwiLCBcIiRxc3Vic2NyaXB0XCIsXG4gICAgLy9cIiRxdWVyeVwiLCBcIiRyYW5kb21cIiwgXCIkcmVwbGFjZVwiLCBcIiRyZXZlcnNlXCIsIFwiJHNjb252ZXJ0XCIsIFwiJHNlbGVjdFwiLFxuICAgIC8vXCIkc29ydGJlZ2luXCIsIFwiJHNvcnRlbmRcIiwgXCIkc3RhY2tcIiwgXCIkdGV4dFwiLCBcIiR0cmFuc2xhdGVcIiwgXCIkdmlld1wiLFxuICAgIC8vXCIkd2FzY2lpXCIsIFwiJHdjaGFyXCIsIFwiJHdleHRyYWN0XCIsIFwiJHdmaW5kXCIsIFwiJHdpc3dpZGVcIiwgXCIkd2xlbmd0aFwiLFxuICAgIC8vXCIkd3JldmVyc2VcIiwgXCIkeGVjdXRlXCIsIFwiJHphYnNcIiwgXCIkemFyY2Nvc1wiLCBcIiR6YXJjc2luXCIsIFwiJHphcmN0YW5cIixcbiAgICAvL1wiJHpjb3NcIiwgXCIkemNvdFwiLCBcIiR6Y3NjXCIsIFwiJHpkYXRlXCIsIFwiJHpkYXRlaFwiLCBcIiR6ZGF0ZXRpbWVcIixcbiAgICAvL1wiJHpkYXRldGltZWhcIiwgXCIkemV4cFwiLCBcIiR6aGV4XCIsIFwiJHpsblwiLCBcIiR6bG9nXCIsIFwiJHpwb3dlclwiLCBcIiR6c2VjXCIsXG4gICAgLy9cIiR6c2luXCIsIFwiJHpzcXJcIiwgXCIkenRhblwiLCBcIiR6dGltZVwiLCBcIiR6dGltZWhcIiwgXCIkemJvb2xlYW5cIixcbiAgICAvL1wiJHpjb252ZXJ0XCIsIFwiJHpjcmNcIiwgXCIkemN5Y1wiLCBcIiR6ZGFzY2lpXCIsIFwiJHpkY2hhclwiLCBcIiR6ZlwiLFxuICAgIC8vXCIkemlzd2lkZVwiLCBcIiR6bGFzY2lpXCIsIFwiJHpsY2hhclwiLCBcIiR6bmFtZVwiLCBcIiR6cG9zaXRpb25cIiwgXCIkenFhc2NpaVwiLFxuICAgIC8vXCIkenFjaGFyXCIsIFwiJHpzZWFyY2hcIiwgXCIkenNlZWtcIiwgXCIkenN0cmlwXCIsIFwiJHp3YXNjaWlcIiwgXCIkendjaGFyXCIsXG4gICAgLy9cIiR6d2lkdGhcIiwgXCIkendwYWNrXCIsIFwiJHp3YnBhY2tcIiwgXCIkend1bnBhY2tcIiwgXCIkendidW5wYWNrXCIsIFwiJHp6ZW5rYWt1XCIsXG4gICAgLy9cIiRjaGFuZ2VcIiwgXCIkbXZcIiwgXCIkbXZhdFwiLCBcIiRtdmZtdFwiLCBcIiRtdmZtdHNcIiwgXCIkbXZpY29udlwiLFxuICAgIC8vXCIkbXZpY29udnNcIiwgXCIkbXZpbm1hdFwiLCBcIiRtdmxvdmVyXCIsIFwiJG12b2NvbnZcIiwgXCIkbXZvY29udnNcIiwgXCIkbXZyYWlzZVwiLFxuICAgIC8vXCIkbXZ0cmFuc1wiLCBcIiRtdnZcIiwgXCIkbXZuYW1lXCIsIFwiJHpiaXRhbmRcIiwgXCIkemJpdGNvdW50XCIsIFwiJHpiaXRmaW5kXCIsXG4gICAgLy9cIiR6Yml0Z2V0XCIsIFwiJHpiaXRsZW5cIiwgXCIkemJpdG5vdFwiLCBcIiR6Yml0b3JcIiwgXCIkemJpdHNldFwiLCBcIiR6Yml0c3RyXCIsXG4gICAgLy9cIiR6Yml0eG9yXCIsIFwiJHppbmNyZW1lbnRcIiwgXCIkem5leHRcIiwgXCIkem9yZGVyXCIsIFwiJHpwcmV2aW91c1wiLCBcIiR6c29ydFwiLFxuICAgIC8vXCJkZXZpY2VcIiwgXCIkZWNvZGVcIiwgXCIkZXN0YWNrXCIsIFwiJGV0cmFwXCIsIFwiJGhhbHRcIiwgXCIkaG9yb2xvZ1wiLFxuICAgIC8vXCIkaW9cIiwgXCIkam9iXCIsIFwiJGtleVwiLCBcIiRuYW1lc3BhY2VcIiwgXCIkcHJpbmNpcGFsXCIsIFwiJHF1aXRcIiwgXCIkcm9sZXNcIixcbiAgICAvL1wiJHN0b3JhZ2VcIiwgXCIkc3lzdGVtXCIsIFwiJHRlc3RcIiwgXCIkdGhpc1wiLCBcIiR0bGV2ZWxcIiwgXCIkdXNlcm5hbWVcIixcbiAgICAvL1wiJHhcIiwgXCIkeVwiLCBcIiR6YVwiLCBcIiR6YlwiLCBcIiR6Y2hpbGRcIiwgXCIkemVvZlwiLCBcIiR6ZW9zXCIsIFwiJHplcnJvclwiLFxuICAgIC8vXCIkemhvcm9sb2dcIiwgXCIkemlvXCIsIFwiJHpqb2JcIiwgXCIkem1vZGVcIiwgXCIkem5zcGFjZVwiLCBcIiR6cGFyZW50XCIsIFwiJHpwaVwiLFxuICAgIC8vXCIkenBvc1wiLCBcIiR6cmVmZXJlbmNlXCIsIFwiJHpzdG9yYWdlXCIsIFwiJHp0aW1lc3RhbXBcIiwgXCIkenRpbWV6b25lXCIsXG4gICAgLy9cIiR6dHJhcFwiLCBcIiR6dmVyc2lvblwiXG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFtcImNvc1wiLCBcImNsc1wiXSxcbiAgICBrZXl3b3JkczogQ09TX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOVU1CRVJTLFxuICAgICAgU1RSSU5HUyxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJjb21tZW50XCIsXG4gICAgICAgIGJlZ2luOiAvOy8sIGVuZDogXCIkXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLy8gRnVuY3Rpb25zIGFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOiB3cml0ZSAkenRpbWUoNjAqNjAqMyksICQkbXlGdW5jKDEwKSwgJCReVmFsKDEpXG4gICAgICAgIGNsYXNzTmFtZTogXCJidWlsdF9pblwiLFxuICAgICAgICBiZWdpbjogLyg/OlxcJFxcJD98XFwuXFwuKVxcXj9bYS16QS1aXSsvXG4gICAgICB9LFxuICAgICAgeyAvLyBNYWNybyBjb21tYW5kOiBxdWl0ICQkJE9LXG4gICAgICAgIGNsYXNzTmFtZTogXCJidWlsdF9pblwiLFxuICAgICAgICBiZWdpbjogL1xcJFxcJFxcJFthLXpBLVpdKy9cbiAgICAgIH0sXG4gICAgICB7IC8vIFNwZWNpYWwgKGdsb2JhbCkgdmFyaWFibGVzOiB3cml0ZSAlcmVxdWVzdC5Db250ZW50OyBCdWlsdC1pbiBjbGFzc2VzOiAlTGlicmFyeS5JbnRlZ2VyXG4gICAgICAgIGNsYXNzTmFtZTogXCJidWlsdF9pblwiLFxuICAgICAgICBiZWdpbjogLyVbYS16XSsoPzpcXC5bYS16XSspKi9cbiAgICAgIH0sXG4gICAgICB7IC8vIEdsb2JhbCB2YXJpYWJsZTogc2V0IF5nbG9iYWxOYW1lID0gMTIgd3JpdGUgXmdsb2JhbE5hbWVcbiAgICAgICAgY2xhc3NOYW1lOiBcInN5bWJvbFwiLFxuICAgICAgICBiZWdpbjogL1xcXiU/W2EtekEtWl1bXFx3XSovXG4gICAgICB9LFxuICAgICAgeyAvLyBTb21lIGNvbnRyb2wgY29uc3RydWN0aW9uczogZG8gIyNjbGFzcyhQYWNrYWdlLkNsYXNzTmFtZSkuTWV0aG9kKCksICMjc3VwZXIoKVxuICAgICAgICBjbGFzc05hbWU6IFwia2V5d29yZFwiLFxuICAgICAgICBiZWdpbjogLyMjY2xhc3N8IyNzdXBlcnwjZGVmaW5lfCNkaW0vXG4gICAgICB9LFxuXG4gICAgICAvLyBzdWItbGFuZ3VhZ2VzOiBhcmUgbm90IGZ1bGx5IHN1cHBvcnRlZCBieSBobGpzIGJ5IDExLzE1LzIwMTVcbiAgICAgIC8vIGxlZnQgZm9yIHRoZSBmdXR1cmUgaW1wbGVtZW50YXRpb24uXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvJnNxbFxcKC8sICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6IFwic3FsXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvJihqc3xqc2NyaXB0fGphdmFzY3JpcHQpPC8sIGVuZDogLz4vLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiBcImphdmFzY3JpcHRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGhpcyBicmFrZXMgZmlyc3QgYW5kIGxhc3QgdGFnLCBidXQgdGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZW1iZWQgYSB2YWxpZCBodG1sXG4gICAgICAgIGJlZ2luOiAvJmh0bWw8XFxzKjwvLCBlbmQ6IC8+XFxzKj4vLFxuICAgICAgICBzdWJMYW5ndWFnZTogXCJ4bWxcIlxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBSRVNPVVJDRVMgPSAncHJpbWl0aXZlIHJzY190ZW1wbGF0ZSc7XG5cbiAgdmFyIENPTU1BTkRTID0gJ2dyb3VwIGNsb25lIG1zIG1hc3RlciBsb2NhdGlvbiBjb2xvY2F0aW9uIG9yZGVyIGZlbmNpbmdfdG9wb2xvZ3kgJyArXG4gICAgICAncnNjX3RpY2tldCBhY2xfdGFyZ2V0IGFjbF9ncm91cCB1c2VyIHJvbGUgJyArXG4gICAgICAndGFnIHhtbCc7XG5cbiAgdmFyIFBST1BFUlRZX1NFVFMgPSAncHJvcGVydHkgcnNjX2RlZmF1bHRzIG9wX2RlZmF1bHRzJztcblxuICB2YXIgS0VZV09SRFMgPSAncGFyYW1zIG1ldGEgb3BlcmF0aW9ucyBvcCBydWxlIGF0dHJpYnV0ZXMgdXRpbGl6YXRpb24nO1xuXG4gIHZhciBPUEVSQVRPUlMgPSAncmVhZCB3cml0ZSBkZW55IGRlZmluZWQgbm90X2RlZmluZWQgaW5fcmFuZ2UgZGF0ZSBzcGVjIGluICcgK1xuICAgICAgJ3JlZiByZWZlcmVuY2UgYXR0cmlidXRlIHR5cGUgeHBhdGggdmVyc2lvbiBhbmQgb3IgbHQgZ3QgdGFnICcgK1xuICAgICAgJ2x0ZSBndGUgZXEgbmUgXFxcXCc7XG5cbiAgdmFyIFRZUEVTID0gJ251bWJlciBzdHJpbmcnO1xuXG4gIHZhciBMSVRFUkFMUyA9ICdNYXN0ZXIgU3RhcnRlZCBTbGF2ZSBTdG9wcGVkIHN0YXJ0IHByb21vdGUgZGVtb3RlIHN0b3AgbW9uaXRvciB0cnVlIGZhbHNlJztcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY3JtJywgJ3BjbWsnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyArICcgJyArIE9QRVJBVE9SUyArICcgJyArIFRZUEVTLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnbm9kZScsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcXFxzKihbXFxcXHdfLV0rOik/JyxcbiAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgIGVuZDogJ1xcXFxzKltcXFxcJFxcXFx3X11bXFxcXHdfLV0qJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogUkVTT1VSQ0VTLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgZW5kOiAnXFxcXHMqW1xcXFwkXFxcXHdfXVtcXFxcd18tXSonLFxuICAgICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgICAgZW5kOiAnXFxcXHMqQD9bXFxcXHdfXVtcXFxcd19cXFxcLjotXSonXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBDT01NQU5EUy5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcpXFxcXHMrJyxcbiAgICAgICAga2V5d29yZHM6IENPTU1BTkRTLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgZW5kOiAnW1xcXFwkXFxcXHdfXVtcXFxcd18tXSonXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6IFBST1BFUlRZX1NFVFMsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICBlbmQ6ICdcXFxccyooW1xcXFx3Xy1dKzopPydcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyhvY2Z8c3lzdGVtZHxzZXJ2aWNlfGxzYik6W1xcXFx3XzotXSsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCspPyhtc3xzfGh8bSk/JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46ICdbLV0/KGluZmluaXR5fGluZiknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICBiZWdpbjogLyhbQS1aYS16XFwkX1xcI11bXFx3Xy1dKyk9LyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0YWcnLFxuICAgICAgICBiZWdpbjogJzwvPycsXG4gICAgICAgIGVuZDogJy8/PicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBOVU1fU1VGRklYID0gJyhfW3VpZl0oOHwxNnwzMnw2NCkpPyc7XG4gIHZhciBDUllTVEFMX0lERU5UX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dPyc7XG4gIHZhciBSRV9TVEFSVEVSID0gJyE9fCE9PXwlfCU9fCZ8JiZ8Jj18XFxcXCp8XFxcXCo9fFxcXFwrfFxcXFwrPXwsfC18LT18Lz18L3w6fDt8PDx8PDw9fDw9fDx8PT09fD09fD18Pj4+PXw+Pj18Pj18Pj4+fCcgK1xuICAgICc+Pnw+fFxcXFxbfFxcXFx7fFxcXFwofFxcXFxefFxcXFxePXxcXFxcfHxcXFxcfD18XFxcXHxcXFxcfHx+JztcbiAgdmFyIENSWVNUQUxfTUVUSE9EX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dP3xbLSt+XVxcXFxAfDw8fD4+fD1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfmB8XXxcXFxcW1xcXFxdWz0/XT8nO1xuICB2YXIgQ1JZU1RBTF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2Fic3RyYWN0IGFsaWFzIGFzIGFzPyBhc20gYmVnaW4gYnJlYWsgY2FzZSBjbGFzcyBkZWYgZG8gZWxzZSBlbHNpZiBlbmQgZW5zdXJlIGVudW0gZXh0ZW5kIGZvciBmdW4gaWYgJyArXG4gICAgICAnaW5jbHVkZSBpbnN0YW5jZV9zaXplb2YgaXNfYT8gbGliIG1hY3JvIG1vZHVsZSBuZXh0IG5pbD8gb2Ygb3V0IHBvaW50ZXJvZiBwcml2YXRlIHByb3RlY3RlZCByZXNjdWUgcmVzcG9uZHNfdG8/ICcgK1xuICAgICAgJ3JldHVybiByZXF1aXJlIHNlbGVjdCBzZWxmIHNpemVvZiBzdHJ1Y3Qgc3VwZXIgdGhlbiB0eXBlIHR5cGVvZiB1bmlvbiB1bmluaXRpYWxpemVkIHVubGVzcyB1bnRpbCB3aGVuIHdoaWxlIHdpdGggeWllbGQgJyArXG4gICAgICAnX19ESVJfXyBfX0VORF9MSU5FX18gX19GSUxFX18gX19MSU5FX18nLFxuICAgIGxpdGVyYWw6ICdmYWxzZSBuaWwgdHJ1ZSdcbiAgfTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJyN7JywgZW5kOiAnfScsXG4gICAga2V5d29yZHM6IENSWVNUQUxfS0VZV09SRFNcbiAgfTtcbiAgdmFyIEVYUEFOU0lPTiA9IHtcbiAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcXFx7XFxcXHsnLCBlbmQ6ICdcXFxcfVxcXFx9J30sXG4gICAgICB7YmVnaW46ICdcXFxceyUnLCBlbmQ6ICclXFxcXH0nfVxuICAgIF0sXG4gICAga2V5d29yZHM6IENSWVNUQUxfS0VZV09SRFNcbiAgfTtcblxuICBmdW5jdGlvbiByZWN1cnNpdmVQYXJlbihiZWdpbiwgZW5kKSB7XG4gICAgdmFyXG4gICAgY29udGFpbnMgPSBbe2JlZ2luOiBiZWdpbiwgZW5kOiBlbmR9XTtcbiAgICBjb250YWluc1swXS5jb250YWlucyA9IGNvbnRhaW5zO1xuICAgIHJldHVybiBjb250YWlucztcbiAgfVxuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvJy8sIGVuZDogLycvfSxcbiAgICAgIHtiZWdpbjogL1wiLywgZW5kOiAvXCIvfSxcbiAgICAgIHtiZWdpbjogL2AvLCBlbmQ6IC9gL30sXG4gICAgICB7YmVnaW46ICcldz9cXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcKCcsICdcXFxcKScpfSxcbiAgICAgIHtiZWdpbjogJyV3P1xcXFxbJywgZW5kOiAnXFxcXF0nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ1xcXFxbJywgJ1xcXFxdJyl9LFxuICAgICAge2JlZ2luOiAnJXc/eycsIGVuZDogJ30nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ3snLCAnfScpfSxcbiAgICAgIHtiZWdpbjogJyV3PzwnLCBlbmQ6ICc+JywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCc8JywgJz4nKX0sXG4gICAgICB7YmVnaW46ICcldz8vJywgZW5kOiAnLyd9LFxuICAgICAge2JlZ2luOiAnJXc/JScsIGVuZDogJyUnfSxcbiAgICAgIHtiZWdpbjogJyV3Py0nLCBlbmQ6ICctJ30sXG4gICAgICB7YmVnaW46ICcldz9cXFxcfCcsIGVuZDogJ1xcXFx8J30sXG4gICAgICB7YmVnaW46IC88PC1cXHcrJC8sIGVuZDogL15cXHMqXFx3KyQvfSxcbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgfTtcbiAgdmFyIFFfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJyVxXFxcXCgnLCBlbmQ6ICdcXFxcKScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbignXFxcXCgnLCAnXFxcXCknKX0sXG4gICAgICB7YmVnaW46ICclcVxcXFxbJywgZW5kOiAnXFxcXF0nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ1xcXFxbJywgJ1xcXFxdJyl9LFxuICAgICAge2JlZ2luOiAnJXF7JywgZW5kOiAnfScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbigneycsICd9Jyl9LFxuICAgICAge2JlZ2luOiAnJXE8JywgZW5kOiAnPicsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbignPCcsICc+Jyl9LFxuICAgICAge2JlZ2luOiAnJXEvJywgZW5kOiAnLyd9LFxuICAgICAge2JlZ2luOiAnJXElJywgZW5kOiAnJSd9LFxuICAgICAge2JlZ2luOiAnJXEtJywgZW5kOiAnLSd9LFxuICAgICAge2JlZ2luOiAnJXFcXFxcfCcsIGVuZDogJ1xcXFx8J30sXG4gICAgICB7YmVnaW46IC88PC0nXFx3KyckLywgZW5kOiAvXlxccypcXHcrJC99LFxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuICB2YXIgUkVHRVhQID0ge1xuICAgIGJlZ2luOiAnKCcgKyBSRV9TVEFSVEVSICsgJylcXFxccyonLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnLy9bYS16XSonLCByZWxldmFuY2U6IDB9LFxuICAgICAgICAgIHtiZWdpbjogJy8nLCBlbmQ6ICcvW2Etel0qJ30sXG4gICAgICAgICAge2JlZ2luOiAnJXJcXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcKCcsICdcXFxcKScpfSxcbiAgICAgICAgICB7YmVnaW46ICclclxcXFxbJywgZW5kOiAnXFxcXF0nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ1xcXFxbJywgJ1xcXFxdJyl9LFxuICAgICAgICAgIHtiZWdpbjogJyVyeycsIGVuZDogJ30nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ3snLCAnfScpfSxcbiAgICAgICAgICB7YmVnaW46ICclcjwnLCBlbmQ6ICc+JywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCc8JywgJz4nKX0sXG4gICAgICAgICAge2JlZ2luOiAnJXIvJywgZW5kOiAnLyd9LFxuICAgICAgICAgIHtiZWdpbjogJyVyJScsIGVuZDogJyUnfSxcbiAgICAgICAgICB7YmVnaW46ICclci0nLCBlbmQ6ICctJ30sXG4gICAgICAgICAge2JlZ2luOiAnJXJcXFxcfCcsIGVuZDogJ1xcXFx8J30sXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgUkVHRVhQMiA9IHtcbiAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJyVyXFxcXCgnLCBlbmQ6ICdcXFxcKScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbignXFxcXCgnLCAnXFxcXCknKX0sXG4gICAgICB7YmVnaW46ICclclxcXFxbJywgZW5kOiAnXFxcXF0nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ1xcXFxbJywgJ1xcXFxdJyl9LFxuICAgICAge2JlZ2luOiAnJXJ7JywgZW5kOiAnfScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbigneycsICd9Jyl9LFxuICAgICAge2JlZ2luOiAnJXI8JywgZW5kOiAnPicsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbignPCcsICc+Jyl9LFxuICAgICAge2JlZ2luOiAnJXIvJywgZW5kOiAnLyd9LFxuICAgICAge2JlZ2luOiAnJXIlJywgZW5kOiAnJSd9LFxuICAgICAge2JlZ2luOiAnJXItJywgZW5kOiAnLSd9LFxuICAgICAge2JlZ2luOiAnJXJcXFxcfCcsIGVuZDogJ1xcXFx8J30sXG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIEFUVFJJQlVURSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ0BcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdtZXRhLXN0cmluZyd9KVxuICAgIF1cbiAgfTtcbiAgdmFyIENSWVNUQUxfREVGQVVMVF9DT05UQUlOUyA9IFtcbiAgICBFWFBBTlNJT04sXG4gICAgU1RSSU5HLFxuICAgIFFfU1RSSU5HLFxuICAgIFJFR0VYUCxcbiAgICBSRUdFWFAyLFxuICAgIEFUVFJJQlVURSxcbiAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBtb2R1bGUgc3RydWN0JywgZW5kOiAnJHw7JyxcbiAgICAgIGlsbGVnYWw6IC89LyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJ1tBLVphLXpfXVxcXFx3Kig6OlxcXFx3KykqKFxcXFw/fFxcXFwhKT8nfSksXG4gICAgICAgIHtiZWdpbjogJzwnfSAvLyByZWxldmFuY2UgYm9vc3RlciBmb3IgaW5oZXJpdGFuY2VcbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdsaWIgZW51bSB1bmlvbicsIGVuZDogJyR8OycsXG4gICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdbQS1aYS16X11cXFxcdyooOjpcXFxcdyspKihcXFxcP3xcXFxcISk/J30pLFxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWYnLCBlbmQ6IC9cXEJcXGIvLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgIGJlZ2luOiBDUllTVEFMX01FVEhPRF9SRSxcbiAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICBiZWdpbktleXdvcmRzOiAnZnVuIG1hY3JvJywgZW5kOiAvXFxCXFxiLyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICBiZWdpbjogQ1JZU1RBTF9NRVRIT0RfUkUsXG4gICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogNVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnKFxcXFwhfFxcXFw/KT86JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiAnOicsXG4gICAgICBjb250YWluczogW1NUUklORywge2JlZ2luOiBDUllTVEFMX01FVEhPRF9SRX1dLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgeyBiZWdpbjogJ1xcXFxiMGIoWzAxX10qWzAxXSknICsgTlVNX1NVRkZJWCB9LFxuICAgICAgICB7IGJlZ2luOiAnXFxcXGIwbyhbMC03X10qWzAtN10pJyArIE5VTV9TVUZGSVggfSxcbiAgICAgICAgeyBiZWdpbjogJ1xcXFxiMHgoW0EtRmEtZjAtOV9dKltBLUZhLWYwLTldKScgKyBOVU1fU1VGRklYIH0sXG4gICAgICAgIHsgYmVnaW46ICdcXFxcYigoWzAtOV1bMC05X10qWzAtOV18WzAtOV0pKFxcXFwuWzAtOV9dKlswLTldKT8oW2VFXVsrLV0/WzAtOV9dKlswLTldKT8pJyArIE5VTV9TVUZGSVh9XG4gICAgICBdLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IENSWVNUQUxfREVGQVVMVF9DT05UQUlOUztcbiAgRVhQQU5TSU9OLmNvbnRhaW5zID0gQ1JZU1RBTF9ERUZBVUxUX0NPTlRBSU5TLnNsaWNlKDEpOyAvLyB3aXRob3V0IEVYUEFOU0lPTlxuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjciddLFxuICAgIGxleGVtZXM6IENSWVNUQUxfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IENSWVNUQUxfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IENSWVNUQUxfREVGQVVMVF9DT05UQUlOU1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAvLyBOb3JtYWwga2V5d29yZHMuXG4gICAgICAnYWJzdHJhY3QgYXMgYmFzZSBib29sIGJyZWFrIGJ5dGUgY2FzZSBjYXRjaCBjaGFyIGNoZWNrZWQgY29uc3QgY29udGludWUgZGVjaW1hbCAnICtcbiAgICAgICdkZWZhdWx0IGRlbGVnYXRlIGRvIGRvdWJsZSBlbnVtIGV2ZW50IGV4cGxpY2l0IGV4dGVybiBmaW5hbGx5IGZpeGVkIGZsb2F0ICcgK1xuICAgICAgJ2ZvciBmb3JlYWNoIGdvdG8gaWYgaW1wbGljaXQgaW4gaW50IGludGVyZmFjZSBpbnRlcm5hbCBpcyBsb2NrIGxvbmcgbmFtZW9mICcgK1xuICAgICAgJ29iamVjdCBvcGVyYXRvciBvdXQgb3ZlcnJpZGUgcGFyYW1zIHByaXZhdGUgcHJvdGVjdGVkIHB1YmxpYyByZWFkb25seSByZWYgc2J5dGUgJyArXG4gICAgICAnc2VhbGVkIHNob3J0IHNpemVvZiBzdGFja2FsbG9jIHN0YXRpYyBzdHJpbmcgc3RydWN0IHN3aXRjaCB0aGlzIHRyeSB0eXBlb2YgJyArXG4gICAgICAndWludCB1bG9uZyB1bmNoZWNrZWQgdW5zYWZlIHVzaG9ydCB1c2luZyB2aXJ0dWFsIHZvaWQgdm9sYXRpbGUgd2hpbGUgJyArXG4gICAgICAvLyBDb250ZXh0dWFsIGtleXdvcmRzLlxuICAgICAgJ2FkZCBhbGlhcyBhc2NlbmRpbmcgYXN5bmMgYXdhaXQgYnkgZGVzY2VuZGluZyBkeW5hbWljIGVxdWFscyBmcm9tIGdldCBnbG9iYWwgZ3JvdXAgaW50byBqb2luICcgK1xuICAgICAgJ2xldCBvbiBvcmRlcmJ5IHBhcnRpYWwgcmVtb3ZlIHNlbGVjdCBzZXQgdmFsdWUgdmFyIHdoZXJlIHlpZWxkJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ251bGwgZmFsc2UgdHJ1ZSdcbiAgfTtcblxuICB2YXIgVkVSQkFUSU1fU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdAXCInLCBlbmQ6ICdcIicsXG4gICAgY29udGFpbnM6IFt7YmVnaW46ICdcIlwiJ31dXG4gIH07XG4gIHZhciBWRVJCQVRJTV9TVFJJTkdfTk9fTEYgPSBobGpzLmluaGVyaXQoVkVSQkFUSU1fU1RSSU5HLCB7aWxsZWdhbDogL1xcbi99KTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgdmFyIFNVQlNUX05PX0xGID0gaGxqcy5pbmhlcml0KFNVQlNULCB7aWxsZWdhbDogL1xcbi99KTtcbiAgdmFyIElOVEVSUE9MQVRFRF9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1xcJFwiLywgZW5kOiAnXCInLFxuICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAne3snfSwge2JlZ2luOiAnfX0nfSwgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF9OT19MRl1cbiAgfTtcbiAgdmFyIElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1xcJEBcIi8sIGVuZDogJ1wiJyxcbiAgICBjb250YWluczogW3tiZWdpbjogJ3t7J30sIHtiZWdpbjogJ319J30sIHtiZWdpbjogJ1wiXCInfSwgU1VCU1RdXG4gIH07XG4gIHZhciBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HX05PX0xGID0gaGxqcy5pbmhlcml0KElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkcsIHtcbiAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICBjb250YWluczogW3tiZWdpbjogJ3t7J30sIHtiZWdpbjogJ319J30sIHtiZWdpbjogJ1wiXCInfSwgU1VCU1RfTk9fTEZdXG4gIH0pO1xuICBTVUJTVC5jb250YWlucyA9IFtcbiAgICBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLFxuICAgIElOVEVSUE9MQVRFRF9TVFJJTkcsXG4gICAgVkVSQkFUSU1fU1RSSU5HLFxuICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gIF07XG4gIFNVQlNUX05PX0xGLmNvbnRhaW5zID0gW1xuICAgIElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkdfTk9fTEYsXG4gICAgSU5URVJQT0xBVEVEX1NUUklORyxcbiAgICBWRVJCQVRJTV9TVFJJTkdfTk9fTEYsXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLCB7aWxsZWdhbDogL1xcbi99KVxuICBdO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLFxuICAgICAgSU5URVJQT0xBVEVEX1NUUklORyxcbiAgICAgIFZFUkJBVElNX1NUUklORyxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRZUEVfSURFTlRfUkUgPSBobGpzLklERU5UX1JFICsgJyg8JyArIGhsanMuSURFTlRfUkUgKyAnKFxcXFxzKixcXFxccyonICsgaGxqcy5JREVOVF9SRSArICcpKj4pPyhcXFxcW1xcXFxdKT8nO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjc2hhcnAnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLzo6LyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnLy8vJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBiZWdpbjogJy8vLycsIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYmVnaW46ICc8IS0tfC0tPidcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAnPC8/JywgZW5kOiAnPidcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgJ21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsaWYgZW5kaWYgZGVmaW5lIHVuZGVmIHdhcm5pbmcgZXJyb3IgbGluZSByZWdpb24gZW5kcmVnaW9uIHByYWdtYSBjaGVja3N1bSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFNUUklORyxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsIGVuZDogL1t7Oz1dLyxcbiAgICAgICAgaWxsZWdhbDogL1teXFxzOl0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmFtZXNwYWNlJywgZW5kOiAvW3s7PV0vLFxuICAgICAgICBpbGxlZ2FsOiAvW15cXHM6XS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAnW2EtekEtWl0oXFxcXC4/XFxcXHcpKid9KSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBbQXR0cmlidXRlcyhcIlwiKV1cbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKlxcXFxbJywgZXhjbHVkZUJlZ2luOiB0cnVlLCBlbmQ6ICdcXFxcXScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJywgYmVnaW46IC9cIi8sIGVuZDogL1wiL31cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gRXhwcmVzc2lvbiBrZXl3b3JkcyBwcmV2ZW50ICdrZXl3b3JkIE5hbWUoLi4uKScgZnJvbSBiZWluZ1xuICAgICAgICAvLyByZWNvZ25pemVkIGFzIGEgZnVuY3Rpb24gZGVmaW5pdGlvblxuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmV3IHJldHVybiB0aHJvdyBhd2FpdCBlbHNlJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnKCcgKyBUWVBFX0lERU5UX1JFICsgJ1xcXFxzKykrJyArIGhsanMuSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZW5kOiAvW3s7PV0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5USVRMRV9NT0RFXSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAgbGV4ZW1lczogJ1thLXpBLVpdW2EtekEtWjAtOV8tXSonLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYmFzZS11cmkgY2hpbGQtc3JjIGNvbm5lY3Qtc3JjIGRlZmF1bHQtc3JjIGZvbnQtc3JjIGZvcm0tYWN0aW9uJyArXG4gICAgICAgICcgZnJhbWUtYW5jZXN0b3JzIGZyYW1lLXNyYyBpbWctc3JjIG1lZGlhLXNyYyBvYmplY3Qtc3JjIHBsdWdpbi10eXBlcycgK1xuICAgICAgICAnIHJlcG9ydC11cmkgc2FuZGJveCBzY3JpcHQtc3JjIHN0eWxlLXNyYycsIFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46IFwiJ1wiLCBlbmQ6IFwiJ1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgYmVnaW46ICdeQ29udGVudCcsIGVuZDogJzonLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVotXVthLXpBLVowLTlfLV0qJztcbiAgdmFyIFJVTEUgPSB7XG4gICAgYmVnaW46IC9bQS1aXFxfXFwuXFwtXStcXHMqOi8sIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICc7JywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46IC9cXFMvLCBlbmQ6ICc6JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmVnaW46IC9bXFx3LV0rXFwoLywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICAgICAgICAgICAgYmVnaW46IC9bXFx3LV0rL1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJywgYmVnaW46ICcjWzAtOUEtRmEtZl0rJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIWltcG9ydGFudCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9bPVxcL3wnXFwkXS8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJywgYmVnaW46IC8jW0EtWmEtejAtOV8tXSsvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsIGJlZ2luOiAvXFwuW0EtWmEtejAtOV8tXSsvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1hdHRyJyxcbiAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICBpbGxlZ2FsOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLXBzZXVkbycsXG4gICAgICAgIGJlZ2luOiAvOig6KT9bYS16QS1aMC05XFxfXFwtXFwrXFwoXFwpXCInLl0rL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdAKGZvbnQtZmFjZXxwYWdlKScsXG4gICAgICAgIGxleGVtZXM6ICdbYS16LV0rJyxcbiAgICAgICAga2V5d29yZHM6ICdmb250LWZhY2UgcGFnZSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnQCcsIGVuZDogJ1t7O10nLCAvLyBhdF9ydWxlIGVhdGluZyBmaXJzdCBcIntcIiBpcyBhIGdvb2QgdGhpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgaXQgZG9lc27igJl0IGxldCBpdCB0byBiZSBwYXJzZWQgYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgcnVsZSBzZXQgYnV0IGluc3RlYWQgZHJvcHMgcGFyc2VyIGludG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBkZWZhdWx0IG1vZGUgd2hpY2ggaXMgaG93IGl0IHNob3VsZCBiZS5cbiAgICAgICAgaWxsZWdhbDogLzovLCAvLyBicmVhayBvbiBMZXNzIHZhcmlhYmxlcyBAdmFyOiAuLi5cbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFx3Ky9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFxzLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci10YWcnLCBiZWdpbjogSURFTlRfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgUlVMRSxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvKipcbiAqIEtub3duIGlzc3VlczpcbiAqXG4gKiAtIGludmFsaWQgaGV4IHN0cmluZyBsaXRlcmFscyB3aWxsIGJlIHJlY29nbml6ZWQgYXMgYSBkb3VibGUgcXVvdGVkIHN0cmluZ3NcbiAqICAgYnV0ICd4JyBhdCB0aGUgYmVnaW5uaW5nIG9mIHN0cmluZyB3aWxsIG5vdCBiZSBtYXRjaGVkXG4gKlxuICogLSBkZWxpbWl0ZWQgc3RyaW5nIGxpdGVyYWxzIGFyZSBub3QgY2hlY2tlZCBmb3IgbWF0Y2hpbmcgZW5kIGRlbGltaXRlclxuICogICAobm90IHBvc3NpYmxlIHRvIGRvIHdpdGgganMgcmVnZXhwKVxuICpcbiAqIC0gY29udGVudCBvZiB0b2tlbiBzdHJpbmcgaXMgY29sb3JlZCBhcyBhIHN0cmluZyAoaS5lLiBubyBrZXl3b3JkIGNvbG9yaW5nIGluc2lkZSBhIHRva2VuIHN0cmluZylcbiAqICAgYWxzbywgY29udGVudCBvZiB0b2tlbiBzdHJpbmcgaXMgbm90IHZhbGlkYXRlZCB0byBjb250YWluIG9ubHkgdmFsaWQgRCB0b2tlbnNcbiAqXG4gKiAtIHNwZWNpYWwgdG9rZW4gc2VxdWVuY2UgcnVsZSBpcyBub3Qgc3RyaWN0bHkgZm9sbG93aW5nIEQgZ3JhbW1hciAoYW55dGhpbmcgZm9sbG93aW5nICNsaW5lXG4gKiAgIHVwIHRvIHRoZSBlbmQgb2YgbGluZSBpcyBtYXRjaGVkIGFzIHNwZWNpYWwgdG9rZW4gc2VxdWVuY2UpXG4gKi9cblxuZnVuY3Rpb24oaGxqcykge1xuICAvKipcbiAgICogTGFuZ3VhZ2Uga2V5d29yZHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWJzdHJhY3QgYWxpYXMgYWxpZ24gYXNtIGFzc2VydCBhdXRvIGJvZHkgYnJlYWsgYnl0ZSBjYXNlIGNhc3QgY2F0Y2ggY2xhc3MgJyArXG4gICAgICAnY29uc3QgY29udGludWUgZGVidWcgZGVmYXVsdCBkZWxldGUgZGVwcmVjYXRlZCBkbyBlbHNlIGVudW0gZXhwb3J0IGV4dGVybiBmaW5hbCAnICtcbiAgICAgICdmaW5hbGx5IGZvciBmb3JlYWNoIGZvcmVhY2hfcmV2ZXJzZXwxMCBnb3RvIGlmIGltbXV0YWJsZSBpbXBvcnQgaW4gaW5vdXQgaW50ICcgK1xuICAgICAgJ2ludGVyZmFjZSBpbnZhcmlhbnQgaXMgbGF6eSBtYWNybyBtaXhpbiBtb2R1bGUgbmV3IG5vdGhyb3cgb3V0IG92ZXJyaWRlIHBhY2thZ2UgJyArXG4gICAgICAncHJhZ21hIHByaXZhdGUgcHJvdGVjdGVkIHB1YmxpYyBwdXJlIHJlZiByZXR1cm4gc2NvcGUgc2hhcmVkIHN0YXRpYyBzdHJ1Y3QgJyArXG4gICAgICAnc3VwZXIgc3dpdGNoIHN5bmNocm9uaXplZCB0ZW1wbGF0ZSB0aGlzIHRocm93IHRyeSB0eXBlZGVmIHR5cGVpZCB0eXBlb2YgdW5pb24gJyArXG4gICAgICAndW5pdHRlc3QgdmVyc2lvbiB2b2lkIHZvbGF0aWxlIHdoaWxlIHdpdGggX19GSUxFX18gX19MSU5FX18gX19nc2hhcmVkfDEwICcgK1xuICAgICAgJ19fdGhyZWFkIF9fdHJhaXRzIF9fREFURV9fIF9fRU9GX18gX19USU1FX18gX19USU1FU1RBTVBfXyBfX1ZFTkRPUl9fIF9fVkVSU0lPTl9fJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdib29sIGNkb3VibGUgY2VudCBjZmxvYXQgY2hhciBjcmVhbCBkY2hhciBkZWxlZ2F0ZSBkb3VibGUgZHN0cmluZyBmbG9hdCBmdW5jdGlvbiAnICtcbiAgICAgICdpZG91YmxlIGlmbG9hdCBpcmVhbCBsb25nIHJlYWwgc2hvcnQgc3RyaW5nIHVieXRlIHVjZW50IHVpbnQgdWxvbmcgdXNob3J0IHdjaGFyICcgK1xuICAgICAgJ3dzdHJpbmcnLFxuICAgIGxpdGVyYWw6XG4gICAgICAnZmFsc2UgbnVsbCB0cnVlJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgbGl0ZXJhbCByZWdleHBzXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICB2YXIgZGVjaW1hbF9pbnRlZ2VyX3JlID0gJygwfFsxLTldW1xcXFxkX10qKScsXG4gICAgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlID0gJygwfFsxLTldW1xcXFxkX10qfFxcXFxkW1xcXFxkX10qfFtcXFxcZF9dKz9cXFxcZCknLFxuICAgIGJpbmFyeV9pbnRlZ2VyX3JlID0gJzBbYkJdWzAxX10rJyxcbiAgICBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgPSAnKFtcXFxcZGEtZkEtRl1bXFxcXGRhLWZBLUZfXSp8X1tcXFxcZGEtZkEtRl1bXFxcXGRhLWZBLUZfXSopJyxcbiAgICBoZXhhZGVjaW1hbF9pbnRlZ2VyX3JlID0gJzBbeFhdJyArIGhleGFkZWNpbWFsX2RpZ2l0c19yZSxcblxuICAgIGRlY2ltYWxfZXhwb25lbnRfcmUgPSAnKFtlRV1bKy1dPycgKyBkZWNpbWFsX2ludGVnZXJfbm9zdXNfcmUgKyAnKScsXG4gICAgZGVjaW1hbF9mbG9hdF9yZSA9ICcoJyArIGRlY2ltYWxfaW50ZWdlcl9ub3N1c19yZSArICcoXFxcXC5cXFxcZCp8JyArIGRlY2ltYWxfZXhwb25lbnRfcmUgKyAnKXwnICtcbiAgICAgICAgICAgICAgICAnXFxcXGQrXFxcXC4nICsgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlICsgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlICsgJ3wnICtcbiAgICAgICAgICAgICAgICAnXFxcXC4nICsgZGVjaW1hbF9pbnRlZ2VyX3JlICsgZGVjaW1hbF9leHBvbmVudF9yZSArICc/JyArXG4gICAgICAgICAgICAgICcpJyxcbiAgICBoZXhhZGVjaW1hbF9mbG9hdF9yZSA9ICcoMFt4WF0oJyArXG4gICAgICAgICAgICAgICAgICBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgKyAnXFxcXC4nICsgaGV4YWRlY2ltYWxfZGlnaXRzX3JlICsgJ3wnK1xuICAgICAgICAgICAgICAgICAgJ1xcXFwuPycgKyBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgK1xuICAgICAgICAgICAgICAgICAnKVtwUF1bKy1dPycgKyBkZWNpbWFsX2ludGVnZXJfbm9zdXNfcmUgKyAnKScsXG5cbiAgICBpbnRlZ2VyX3JlID0gJygnICtcbiAgICAgIGRlY2ltYWxfaW50ZWdlcl9yZSArICd8JyArXG4gICAgICBiaW5hcnlfaW50ZWdlcl9yZSAgKyAnfCcgK1xuICAgICAgIGhleGFkZWNpbWFsX2ludGVnZXJfcmUgICArXG4gICAgJyknLFxuXG4gICAgZmxvYXRfcmUgPSAnKCcgK1xuICAgICAgaGV4YWRlY2ltYWxfZmxvYXRfcmUgKyAnfCcgK1xuICAgICAgZGVjaW1hbF9mbG9hdF9yZSAgK1xuICAgICcpJztcblxuICAvKipcbiAgICogRXNjYXBlIHNlcXVlbmNlIHN1cHBvcnRlZCBpbiBEIHN0cmluZyBhbmQgY2hhcmFjdGVyIGxpdGVyYWxzXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICB2YXIgZXNjYXBlX3NlcXVlbmNlX3JlID0gJ1xcXFxcXFxcKCcgK1xuICAgICAgICAgICAgICAnW1xcJ1wiXFxcXD9cXFxcXFxcXGFiZm5ydHZdfCcgKyAgLy8gY29tbW9uIGVzY2FwZXNcbiAgICAgICAgICAgICAgJ3VbXFxcXGRBLUZhLWZdezR9fCcgKyAgICAgLy8gZm91ciBoZXggZGlnaXQgdW5pY29kZSBjb2RlcG9pbnRcbiAgICAgICAgICAgICAgJ1swLTddezEsM318JyArICAgICAgIC8vIG9uZSB0byB0aHJlZSBvY3RhbCBkaWdpdCBhc2NpaSBjaGFyIGNvZGVcbiAgICAgICAgICAgICAgJ3hbXFxcXGRBLUZhLWZdezJ9fCcgKyAgICAvLyB0d28gaGV4IGRpZ2l0IGFzY2lpIGNoYXIgY29kZVxuICAgICAgICAgICAgICAnVVtcXFxcZEEtRmEtZl17OH0nICsgICAgICAvLyBlaWdodCBoZXggZGlnaXQgdW5pY29kZSBjb2RlcG9pbnRcbiAgICAgICAgICAgICAgJyl8JyArXG4gICAgICAgICAgICAgICcmW2EtekEtWlxcXFxkXXsyLH07JzsgICAgICAvLyBuYW1lZCBjaGFyYWN0ZXIgZW50aXR5XG5cbiAgLyoqXG4gICAqIEQgaW50ZWdlciBudW1iZXIgbGl0ZXJhbHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0lOVEVHRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgYmVnaW46ICdcXFxcYicgKyBpbnRlZ2VyX3JlICsgJyhMfHV8VXxMdXxMVXx1THxVTCk/JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIC8qKlxuICAgKiBbRF9GTE9BVF9NT0RFIGRlc2NyaXB0aW9uXVxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfRkxPQVRfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnXFxcXGIoJyArXG4gICAgICAgIGZsb2F0X3JlICsgJyhbZkZdfEx8aXxbZkZdaXxMaSk/fCcgK1xuICAgICAgICBpbnRlZ2VyX3JlICsgJyhpfFtmRl1pfExpKScgK1xuICAgICAgJyknLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIC8qKlxuICAgKiBEIGNoYXJhY3RlciBsaXRlcmFsXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9DSEFSQUNURVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFwnKCcgKyBlc2NhcGVfc2VxdWVuY2VfcmUgKyAnfC4pJywgZW5kOiAnXFwnJyxcbiAgICBpbGxlZ2FsOiAnLidcbiAgfTtcblxuICAvKipcbiAgICogRCBzdHJpbmcgZXNjYXBlIHNlcXVlbmNlXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9FU0NBUEVfU0VRVUVOQ0UgPSB7XG4gICAgYmVnaW46IGVzY2FwZV9zZXF1ZW5jZV9yZSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvKipcbiAgICogRCBkb3VibGUgcXVvdGVkIHN0cmluZyBsaXRlcmFsXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbRF9FU0NBUEVfU0VRVUVOQ0VdLFxuICAgIGVuZDogJ1wiW2N3ZF0/J1xuICB9O1xuXG4gIC8qKlxuICAgKiBEIHd5c2l3eWcgYW5kIGRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX1dZU0lXWUdfREVMSU1JVEVEX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdbcnFdXCInLFxuICAgIGVuZDogJ1wiW2N3ZF0/JyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBhbHRlcm5hdGUgd3lzaXd5ZyBzdHJpbmcgbGl0ZXJhbFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfQUxURVJOQVRFX1dZU0lXWUdfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ2AnLFxuICAgIGVuZDogJ2BbY3dkXT8nXG4gIH07XG5cbiAgLyoqXG4gICAqIEQgaGV4YWRlY2ltYWwgc3RyaW5nIGxpdGVyYWxcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0hFWF9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAneFwiW1xcXFxkYS1mQS1GXFxcXHNcXFxcblxcXFxyXSpcIltjd2RdPycsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIC8qKlxuICAgKiBEIGRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfVE9LRU5fU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ3FcIlxcXFx7JyxcbiAgICBlbmQ6ICdcXFxcfVwiJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYXNoYmFuZyBzdXBwb3J0XG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9IQVNIQkFOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMhJyxcbiAgICBlbmQ6ICckJyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBzcGVjaWFsIHRva2VuIHNlcXVlbmNlXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9TUEVDSUFMX1RPS0VOX1NFUVVFTkNFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICcjKGxpbmUpJyxcbiAgICBlbmQ6ICckJyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9BVFRSSUJVVEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ0BbYS16QS1aX11bYS16QS1aX1xcXFxkXSonXG4gIH07XG5cbiAgLyoqXG4gICAqIEQgbmVzdGluZyBjb21tZW50XG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9ORVNUSU5HX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVChcbiAgICAnXFxcXC9cXFxcKycsXG4gICAgJ1xcXFwrXFxcXC8nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXSxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IERfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgRF9ORVNUSU5HX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgRF9IRVhfU1RSSU5HX01PREUsXG4gICAgICAgIERfU1RSSU5HX01PREUsXG4gICAgICAgIERfV1lTSVdZR19ERUxJTUlURURfU1RSSU5HX01PREUsXG4gICAgICAgIERfQUxURVJOQVRFX1dZU0lXWUdfU1RSSU5HX01PREUsXG4gICAgICAgIERfVE9LRU5fU1RSSU5HX01PREUsXG4gICAgICAgIERfRkxPQVRfTU9ERSxcbiAgICAgICAgRF9JTlRFR0VSX01PREUsXG4gICAgICAgIERfQ0hBUkFDVEVSX01PREUsXG4gICAgICAgIERfSEFTSEJBTkdfTU9ERSxcbiAgICAgICAgRF9TUEVDSUFMX1RPS0VOX1NFUVVFTkNFX01PREUsXG4gICAgICAgIERfQVRUUklCVVRFX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbWQnLCAnbWtkb3duJywgJ21rZCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBoaWdobGlnaHQgaGVhZGVyc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXiN7MSw2fScsIGVuZDogJyQnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ14uKz9cXFxcbls9LV17Mix9JCcgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIGh0bWxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8JywgZW5kOiAnPicsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gbGlzdHMgKGluZGljYXRvcnMgb25seSlcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVsbGV0JyxcbiAgICAgICAgYmVnaW46ICdeKFsqKy1dfChcXFxcZCtcXFxcLikpXFxcXHMrJ1xuICAgICAgfSxcbiAgICAgIC8vIHN0cm9uZyBzZWdtZW50c1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJvbmcnLFxuICAgICAgICBiZWdpbjogJ1sqX117Mn0uKz9bKl9dezJ9J1xuICAgICAgfSxcbiAgICAgIC8vIGVtcGhhc2lzIHNlZ21lbnRzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2VtcGhhc2lzJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXCouKz9cXFxcKicgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXy4rP18nXG4gICAgICAgICAgLCByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBibG9ja3F1b3Rlc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdxdW90ZScsXG4gICAgICAgIGJlZ2luOiAnXj5cXFxccysnLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIC8vIGNvZGUgc25pcHBldHNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29kZScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdeYGBgXFx3KlxccyokJywgZW5kOiAnXmBgYFxccyokJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdgLis/YCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXiggezR9fFxcdCknLCBlbmQ6ICckJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGhvcml6b250YWwgcnVsZXNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeWy1cXFxcKl17Myx9JywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICAvLyB1c2luZyBsaW5rcyAtIHRpdGxlIGFuZCBsaW5rXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXFsuKz9cXFxcXVtcXFxcKFxcXFxbXS4qP1tcXFxcKVxcXFxdXScsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXF1cXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXF1cXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9eXFxbW15cXG5dK1xcXTovLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rJyxcbiAgICAgICAgICAgIGJlZ2luOiAvOlxccyovLCBlbmQ6IC8kLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ30nLFxuICAgIGtleXdvcmRzOiAndHJ1ZSBmYWxzZSBudWxsIHRoaXMgaXMgbmV3IHN1cGVyJ1xuICB9O1xuXG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcXCdcXCdcXCcnLCBlbmQ6ICdcXCdcXCdcXCcnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCdcXCdcXCcnLCBlbmQ6ICdcXCdcXCdcXCcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgU1VCU1QuY29udGFpbnMgPSBbXG4gICAgaGxqcy5DX05VTUJFUl9NT0RFLCBTVFJJTkdcbiAgXTtcblxuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDogJ2Fzc2VydCBhc3luYyBhd2FpdCBicmVhayBjYXNlIGNhdGNoIGNsYXNzIGNvbnN0IGNvbnRpbnVlIGRlZmF1bHQgZG8gZWxzZSBlbnVtIGV4dGVuZHMgZmFsc2UgZmluYWwgJyArXG4gICAgICAnZmluYWxseSBmb3IgaWYgaW4gaXMgbmV3IG51bGwgcmV0aHJvdyByZXR1cm4gc3VwZXIgc3dpdGNoIHN5bmMgdGhpcyB0aHJvdyB0cnVlIHRyeSB2YXIgdm9pZCB3aGlsZSB3aXRoIHlpZWxkICcgK1xuICAgICAgJ2Fic3RyYWN0IGFzIGR5bmFtaWMgZXhwb3J0IGV4dGVybmFsIGZhY3RvcnkgZ2V0IGltcGxlbWVudHMgaW1wb3J0IGxpYnJhcnkgb3BlcmF0b3IgcGFydCBzZXQgc3RhdGljIHR5cGVkZWYnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgLy8gZGFydDpjb3JlXG4gICAgICAncHJpbnQgQ29tcGFyYWJsZSBEYXRlVGltZSBEdXJhdGlvbiBGdW5jdGlvbiBJdGVyYWJsZSBJdGVyYXRvciBMaXN0IE1hcCBNYXRjaCBOdWxsIE9iamVjdCBQYXR0ZXJuIFJlZ0V4cCBTZXQgJyArXG4gICAgICAnU3RvcHdhdGNoIFN0cmluZyBTdHJpbmdCdWZmZXIgU3RyaW5nU2luayBTeW1ib2wgVHlwZSBVcmkgYm9vbCBkb3VibGUgaW50IG51bSAnICtcbiAgICAgIC8vIGRhcnQ6aHRtbFxuICAgICAgJ2RvY3VtZW50IHdpbmRvdyBxdWVyeVNlbGVjdG9yIHF1ZXJ5U2VsZWN0b3JBbGwgRWxlbWVudCBFbGVtZW50TGlzdCdcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnL1xcXFwqXFxcXConLFxuICAgICAgICAnXFxcXCovJyxcbiAgICAgICAge1xuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnbWFya2Rvd24nXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvLy8nLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ21hcmtkb3duJ1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cydcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJz0+JyAvLyBObyBtYXJrdXAsIGp1c3QgYSByZWxldmFuY2UgYm9vc3RlclxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZXhwb3J0cyByZWdpc3RlciBmaWxlIHNobCBhcnJheSByZWNvcmQgcHJvcGVydHkgZm9yIG1vZCB3aGlsZSBzZXQgYWxseSBsYWJlbCB1c2VzIHJhaXNlIG5vdCAnICtcbiAgICAnc3RvcmVkIGNsYXNzIHNhZmVjYWxsIHZhciBpbnRlcmZhY2Ugb3IgcHJpdmF0ZSBzdGF0aWMgZXhpdCBpbmRleCBpbmhlcml0ZWQgdG8gZWxzZSBzdGRjYWxsICcgK1xuICAgICdvdmVycmlkZSBzaHIgYXNtIGZhciByZXNvdXJjZXN0cmluZyBmaW5hbGl6YXRpb24gcGFja2VkIHZpcnR1YWwgb3V0IGFuZCBwcm90ZWN0ZWQgbGlicmFyeSBkbyAnICtcbiAgICAneG9yd3JpdGUgZ290byBuZWFyIGZ1bmN0aW9uIGVuZCBkaXYgb3ZlcmxvYWQgb2JqZWN0IHVuaXQgYmVnaW4gc3RyaW5nIG9uIGlubGluZSByZXBlYXQgdW50aWwgJyArXG4gICAgJ2Rlc3RydWN0b3Igd3JpdGUgbWVzc2FnZSBwcm9ncmFtIHdpdGggcmVhZCBpbml0aWFsaXphdGlvbiBleGNlcHQgZGVmYXVsdCBuaWwgaWYgY2FzZSBjZGVjbCBpbiAnICtcbiAgICAnZG93bnRvIHRocmVhZHZhciBvZiB0cnkgcGFzY2FsIGNvbnN0IGV4dGVybmFsIGNvbnN0cnVjdG9yIHR5cGUgcHVibGljIHRoZW4gaW1wbGVtZW50YXRpb24gJyArXG4gICAgJ2ZpbmFsbHkgcHVibGlzaGVkIHByb2NlZHVyZSBhYnNvbHV0ZSByZWludHJvZHVjZSBvcGVyYXRvciBhcyBpcyBhYnN0cmFjdCBhbGlhcyBhc3NlbWJsZXIgJyArXG4gICAgJ2JpdHBhY2tlZCBicmVhayBjb250aW51ZSBjcHBkZWNsIGN2YXIgZW51bWVyYXRvciBleHBlcmltZW50YWwgcGxhdGZvcm0gZGVwcmVjYXRlZCAnICtcbiAgICAndW5pbXBsZW1lbnRlZCBkeW5hbWljIGV4cG9ydCBmYXIxNiBmb3J3YXJkIGdlbmVyaWMgaGVscGVyIGltcGxlbWVudHMgaW50ZXJydXB0IGlvY2hlY2tzICcgK1xuICAgICdsb2NhbCBuYW1lIG5vZGVmYXVsdCBub3JldHVybiBub3N0YWNrZnJhbWUgb2xkZnBjY2FsbCBvdGhlcndpc2Ugc2F2ZXJlZ2lzdGVycyBzb2Z0ZmxvYXQgJyArXG4gICAgJ3NwZWNpYWxpemUgc3RyaWN0IHVuYWxpZ25lZCB2YXJhcmdzICc7XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoL1xcey8sIC9cXH0vLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgaGxqcy5DT01NRU5UKC9cXChcXCovLCAvXFwqXFwpLywge3JlbGV2YW5jZTogMTB9KVxuICBdO1xuICB2YXIgRElSRUNUSVZFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXHtcXCQvLCBlbmQ6IC9cXH0vfSxcbiAgICAgIHtiZWdpbjogL1xcKFxcKlxcJC8sIGVuZDogL1xcKlxcKS99XG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy8sXG4gICAgY29udGFpbnM6IFt7YmVnaW46IC8nJy99XVxuICB9O1xuICB2YXIgQ0hBUl9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46IC8oI1xcZCspKy9cbiAgfTtcbiAgdmFyIENMQVNTID0ge1xuICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxzKj1cXFxccypjbGFzc1xcXFxzKlxcXFwoJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgIF1cbiAgfTtcbiAgdmFyIEZVTkNUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24gY29uc3RydWN0b3IgZGVzdHJ1Y3RvciBwcm9jZWR1cmUnLCBlbmQ6IC9bOjtdLyxcbiAgICBrZXl3b3JkczogJ2Z1bmN0aW9uIGNvbnN0cnVjdG9yfDEwIGRlc3RydWN0b3J8MTAgcHJvY2VkdXJlfDEwJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtTVFJJTkcsIENIQVJfU1RSSU5HLCBESVJFQ1RJVkVdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICAgICAgfSxcbiAgICAgIERJUkVDVElWRVxuICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydkcHInLCAnZGZtJywgJ3BhcycsICdwYXNjYWwnLCAnZnJlZXBhc2NhbCcsICdsYXphcnVzJywgJ2xwcicsICdsZm0nXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXCJ8XFwkW0ctWmctel18XFwvXFwqfDxcXC98XFx8LyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLCBDSEFSX1NUUklORyxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBDTEFTUyxcbiAgICAgIEZVTkNUSU9OLFxuICAgICAgRElSRUNUSVZFXG4gICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwYXRjaCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL15AQCArXFwtXFxkKyxcXGQrICtcXCtcXGQrLFxcZCsgK0BAJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXCpcXCpcXCogK1xcZCssXFxkKyArXFwqXFwqXFwqXFwqJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXC1cXC1cXC0gK1xcZCssXFxkKyArXFwtXFwtXFwtXFwtJC99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL0luZGV4OiAvLCBlbmQ6IC8kL30sXG4gICAgICAgICAge2JlZ2luOiAvPXszLH0vLCBlbmQ6IC8kL30sXG4gICAgICAgICAge2JlZ2luOiAvXlxcLXszfS8sIGVuZDogLyQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwqezN9IC8sIGVuZDogLyQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwrezN9LywgZW5kOiAvJC99LFxuICAgICAgICAgIHtiZWdpbjogL1xcKns1fS8sIGVuZDogL1xcKns1fSQvfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhZGRpdGlvbicsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwrJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2RlbGV0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXC0nLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYWRkaXRpb24nLFxuICAgICAgICBiZWdpbjogJ15cXFxcIScsIGVuZDogJyQnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEZJTFRFUiA9IHtcbiAgICBiZWdpbjogL1xcfFtBLVphLXpdKzo/LyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbmFtZTpcbiAgICAgICAgJ3RydW5jYXRld29yZHMgcmVtb3ZldGFncyBsaW5lYnJlYWtzYnIgeWVzbm8gZ2V0X2RpZ2l0IHRpbWVzaW5jZSByYW5kb20gc3RyaXB0YWdzICcgK1xuICAgICAgICAnZmlsZXNpemVmb3JtYXQgZXNjYXBlIGxpbmVicmVha3MgbGVuZ3RoX2lzIGxqdXN0IHJqdXN0IGN1dCB1cmxpemUgZml4X2FtcGVyc2FuZHMgJyArXG4gICAgICAgICd0aXRsZSBmbG9hdGZvcm1hdCBjYXBmaXJzdCBwcHJpbnQgZGl2aXNpYmxlYnkgYWRkIG1ha2VfbGlzdCB1bm9yZGVyZWRfbGlzdCB1cmxlbmNvZGUgJyArXG4gICAgICAgICd0aW1ldW50aWwgdXJsaXpldHJ1bmMgd29yZGNvdW50IHN0cmluZ2Zvcm1hdCBsaW5lbnVtYmVycyBzbGljZSBkYXRlIGRpY3Rzb3J0ICcgK1xuICAgICAgICAnZGljdHNvcnRyZXZlcnNlZCBkZWZhdWx0X2lmX25vbmUgcGx1cmFsaXplIGxvd2VyIGpvaW4gY2VudGVyIGRlZmF1bHQgJyArXG4gICAgICAgICd0cnVuY2F0ZXdvcmRzX2h0bWwgdXBwZXIgbGVuZ3RoIHBob25lMm51bWVyaWMgd29yZHdyYXAgdGltZSBhZGRzbGFzaGVzIHNsdWdpZnkgZmlyc3QgJyArXG4gICAgICAgICdlc2NhcGVqcyBmb3JjZV9lc2NhcGUgaXJpZW5jb2RlIGxhc3Qgc2FmZSBzYWZlc2VxIHRydW5jYXRlY2hhcnMgbG9jYWxpemUgdW5sb2NhbGl6ZSAnICtcbiAgICAgICAgJ2xvY2FsdGltZSB1dGMgdGltZXpvbmUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnamluamEnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKC9cXHslXFxzKmNvbW1lbnRcXHMqJX0vLCAvXFx7JVxccyplbmRjb21tZW50XFxzKiV9LyksXG4gICAgICBobGpzLkNPTU1FTlQoL1xceyMvLCAvI30vKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHslLywgZW5kOiAvJX0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgJ2NvbW1lbnQgZW5kY29tbWVudCBsb2FkIHRlbXBsYXRldGFnIGlmY2hhbmdlZCBlbmRpZmNoYW5nZWQgaWYgZW5kaWYgZmlyc3RvZiBmb3IgJyArXG4gICAgICAgICAgICAgICAgJ2VuZGZvciBpZm5vdGVxdWFsIGVuZGlmbm90ZXF1YWwgd2lkdGhyYXRpbyBleHRlbmRzIGluY2x1ZGUgc3BhY2VsZXNzICcgK1xuICAgICAgICAgICAgICAgICdlbmRzcGFjZWxlc3MgcmVncm91cCBpZmVxdWFsIGVuZGlmZXF1YWwgc3NpIG5vdyB3aXRoIGN5Y2xlIHVybCBmaWx0ZXIgJyArXG4gICAgICAgICAgICAgICAgJ2VuZGZpbHRlciBkZWJ1ZyBibG9jayBlbmRibG9jayBlbHNlIGF1dG9lc2NhcGUgZW5kYXV0b2VzY2FwZSBjc3JmX3Rva2VuIGVtcHR5IGVsaWYgJyArXG4gICAgICAgICAgICAgICAgJ2VuZHdpdGggc3RhdGljIHRyYW5zIGJsb2NrdHJhbnMgZW5kYmxvY2t0cmFucyBnZXRfc3RhdGljX3ByZWZpeCBnZXRfbWVkaWFfcHJlZml4ICcgK1xuICAgICAgICAgICAgICAgICdwbHVyYWwgZ2V0X2N1cnJlbnRfbGFuZ3VhZ2UgbGFuZ3VhZ2UgZ2V0X2F2YWlsYWJsZV9sYW5ndWFnZXMgJyArXG4gICAgICAgICAgICAgICAgJ2dldF9jdXJyZW50X2xhbmd1YWdlX2JpZGkgZ2V0X2xhbmd1YWdlX2luZm8gZ2V0X2xhbmd1YWdlX2luZm9fbGlzdCBsb2NhbGl6ZSAnICtcbiAgICAgICAgICAgICAgICAnZW5kbG9jYWxpemUgbG9jYWx0aW1lIGVuZGxvY2FsdGltZSB0aW1lem9uZSBlbmR0aW1lem9uZSBnZXRfY3VycmVudF90aW1lem9uZSAnICtcbiAgICAgICAgICAgICAgICAndmVyYmF0aW0nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICBrZXl3b3JkczogJ2luIGJ5IGFzJyxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtGSUxURVJdLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHsvLCBlbmQ6IC99fS8sXG4gICAgICAgIGNvbnRhaW5zOiBbRklMVEVSXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydiaW5kJywgJ3pvbmUnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ0lOIEEgQUFBQSBBRlNEQiBBUEwgQ0FBIENETlNLRVkgQ0RTIENFUlQgQ05BTUUgREhDSUQgRExWIEROQU1FIEROU0tFWSBEUyBISVAgSVBTRUNLRVkgS0VZIEtYICcgK1xuICAgICAgICAnTE9DIE1YIE5BUFRSIE5TIE5TRUMgTlNFQzMgTlNFQzNQQVJBTSBQVFIgUlJTSUcgUlAgU0lHIFNPQSBTUlYgU1NIRlAgVEEgVEtFWSBUTFNBIFRTSUcgVFhUJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eXFwkKFRUTHxHRU5FUkFURXxJTkNMVURFfE9SSUdJTilcXGIvXG4gICAgICB9LFxuICAgICAgLy8gSVB2NlxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJygoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKShcXFxcLigyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIC8vIElQdjRcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXFxcYidcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5OVU1CRVJfTU9ERSwge2JlZ2luOiAvXFxiXFxkK1tkaHdtXT8vfSlcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZG9ja2VyJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogJ2Zyb20gbWFpbnRhaW5lciBleHBvc2UgZW52IGFyZyB1c2VyIG9uYnVpbGQgc3RvcHNpZ25hbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3J1biBjbWQgZW50cnlwb2ludCB2b2x1bWUgYWRkIGNvcHkgd29ya2RpciBsYWJlbCBoZWFsdGhjaGVjayBzaGVsbCcsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogL1teXFxcXF1cXG4vLFxuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnYmFzaCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogJzwvJ1xuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAvXlxccypAP3JlbVxcYi8sIC8kLyxcbiAgICB7XG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfVxuICApO1xuICB2YXIgTEFCRUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ15cXFxccypbQS1aYS16Ll8/XVtBLVphLXowLTlfJCNAfi4/XSooOnxcXFxccytsYWJlbCknLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnYmF0JywgJ2NtZCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdpZiBlbHNlIGdvdG8gZm9yIGluIGRvIGNhbGwgZXhpdCBub3QgZXhpc3QgZXJyb3JsZXZlbCBkZWZpbmVkICcgK1xuICAgICAgICAnZXF1IG5lcSBsc3MgbGVxIGd0ciBnZXEnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdwcm4gbnVsIGxwdDMgbHB0MiBscHQxIGNvbiBjb200IGNvbTMgY29tMiBjb20xIGF1eCAnICtcbiAgICAgICAgJ3NoaWZ0IGNkIGRpciBlY2hvIHNldGxvY2FsIGVuZGxvY2FsIHNldCBwYXVzZSBjb3B5ICcgK1xuICAgICAgICAnYXBwZW5kIGFzc29jIGF0IGF0dHJpYiBicmVhayBjYWNscyBjZCBjaGNwIGNoZGlyIGNoa2RzayBjaGtudGZzIGNscyBjbWQgY29sb3IgJyArXG4gICAgICAgICdjb21wIGNvbXBhY3QgY29udmVydCBkYXRlIGRpciBkaXNrY29tcCBkaXNrY29weSBkb3NrZXkgZXJhc2UgZnMgJyArXG4gICAgICAgICdmaW5kIGZpbmRzdHIgZm9ybWF0IGZ0eXBlIGdyYWZ0YWJsIGhlbHAga2V5YiBsYWJlbCBtZCBta2RpciBtb2RlIG1vcmUgbW92ZSBwYXRoICcgK1xuICAgICAgICAncGF1c2UgcHJpbnQgcG9wZCBwdXNoZCBwcm9tdCByZCByZWNvdmVyIHJlbSByZW5hbWUgcmVwbGFjZSByZXN0b3JlIHJtZGlyIHNoaWZ0JyArXG4gICAgICAgICdzb3J0IHN0YXJ0IHN1YnN0IHRpbWUgdGl0bGUgdHJlZSB0eXBlIHZlciB2ZXJpZnkgdm9sICcgK1xuICAgICAgICAvLyB3aW51dGlsc1xuICAgICAgICAncGluZyBuZXQgaXBjb25maWcgdGFza2tpbGwgeGNvcHkgcmVuIGRlbCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJywgYmVnaW46IC8lJVteIF18JVteIF0rPyV8IVteIF0rPyEvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiBMQUJFTC5iZWdpbiwgZW5kOiAnZ290bzplb2YnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJyhbX2EtekEtWl1cXFxcdypcXFxcLikqKFtfYS16QS1aXVxcXFx3KjopP1tfYS16QS1aXVxcXFx3Kid9KSxcbiAgICAgICAgICBDT01NRU5UXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsIGJlZ2luOiAnXFxcXGJcXFxcZCsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBDT01NRU5UXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFFVT1RFRF9QUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi9cbiAgfTtcbiAgdmFyIEFQT1NfUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLCBlbmQ6IC8nL1xuICB9O1xuICB2YXIgVU5RVU9URURfUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1tcXFxcdy0/XSs6XFxcXHcrJywgZW5kOiAnXFxcXFcnLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgVkFMVUVMRVNTX1BST1BFUlRZID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXFxcdystP1xcXFx3KycsIGVuZDogJ1xcXFxXJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiAnZHNjb25maWcnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJ15kc2NvbmZpZycsIGVuZDogJ1xcXFxzJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogJyhsaXN0fGNyZWF0ZXxnZXR8c2V0fGRlbGV0ZSktKFxcXFx3KyknLCBlbmQ6ICdcXFxccycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICchQCMkJV4mKigpJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogJy0tKFxcXFx3KyknLCBlbmQ6ICdcXFxccycsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICBRVU9URURfUFJPUEVSVFksXG4gICAgICBBUE9TX1BST1BFUlRZLFxuICAgICAgVU5RVU9URURfUFJPUEVSVFksXG4gICAgICBWQUxVRUxFU1NfUFJPUEVSVFksXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNUUklOR1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHsgYmVnaW46ICcoKHU4P3xVKXxMKT9cIicgfSksXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKHU4P3xVKT9SXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCdcXFxcXFxcXD8uJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJy4nXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBOVU1CRVJTID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcYihcXFxcZCsoXFxcXC5cXFxcZCopP3xcXFxcLlxcXFxkKykodXxVfGx8THx1bHxVTHxmfEYpJyB9LFxuICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgUFJFUFJPQ0VTU09SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsaWYgZW5kaWYgZGVmaW5lIHVuZGVmIGlmZGVmIGlmbmRlZid9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxcXFxcbi8sIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2luY2x1ZGUnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2luY2x1ZGUnfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoU1RSSU5HUywge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJ30pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEtc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnPCcsIGVuZDogJz4nLFxuICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFNUUklOR1MsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHZhciBEVFNfUkVGRVJFTkNFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogJ1xcXFwmW2EtelxcXFxkX10qXFxcXGInXG4gIH07XG5cbiAgdmFyIERUU19LRVlXT1JEID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEta2V5d29yZCcsXG4gICAgYmVnaW46ICcvW2Etel1bYS16XFxcXGQtXSovJ1xuICB9O1xuXG4gIHZhciBEVFNfTEFCRUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ15cXFxccypbYS16QS1aX11bYS16QS1aXFxcXGRfXSo6J1xuICB9O1xuXG4gIHZhciBEVFNfQ0VMTF9QUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAnPCcsXG4gICAgZW5kOiAnPicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIE5VTUJFUlMsXG4gICAgICBEVFNfUkVGRVJFTkNFXG4gICAgXVxuICB9O1xuXG4gIHZhciBEVFNfTk9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgYmVnaW46IC9bYS16QS1aX11bYS16QS1aXFxkX0BdKlxcc3svLFxuICAgIGVuZDogL1t7Oz1dLyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBleGNsdWRlRW5kOiB0cnVlXG4gIH07XG5cbiAgdmFyIERUU19ST09UX05PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luOiAnL1xcXFxzKnsnLFxuICAgIGVuZDogJ307JyxcbiAgICByZWxldmFuY2U6IDEwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBEVFNfUkVGRVJFTkNFLFxuICAgICAgRFRTX0tFWVdPUkQsXG4gICAgICBEVFNfTEFCRUwsXG4gICAgICBEVFNfTk9ERSxcbiAgICAgIERUU19DRUxMX1BST1BFUlRZLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE5VTUJFUlMsXG4gICAgICBTVFJJTkdTXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IFwiXCIsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIERUU19ST09UX05PREUsXG4gICAgICBEVFNfUkVGRVJFTkNFLFxuICAgICAgRFRTX0tFWVdPUkQsXG4gICAgICBEVFNfTEFCRUwsXG4gICAgICBEVFNfTk9ERSxcbiAgICAgIERUU19DRUxMX1BST1BFUlRZLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE5VTUJFUlMsXG4gICAgICBTVFJJTkdTLFxuICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OicsXG4gICAgICAgIGtleXdvcmRzOiBcIlwiXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEVYUFJFU1NJT05fS0VZV09SRFMgPSAnaWYgZXEgbmUgbHQgbHRlIGd0IGd0ZSBzZWxlY3QgZGVmYXVsdCBtYXRoIHNlcCc7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydkc3QnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1sjXFwvXS8sIGVuZDogL1xcfS8sIGlsbGVnYWw6IC87LyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgIGJlZ2luOiAvW2EtekEtWlxcLi1dKy8sXG4gICAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHsvLCBlbmQ6IC9cXH0vLCBpbGxlZ2FsOiAvOy8sXG4gICAgICAgIGtleXdvcmRzOiBFWFBSRVNTSU9OX0tFWVdPUkRTXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICB2YXIgY29tbWVudE1vZGUgPSBobGpzLkNPTU1FTlQoL1xcKFxcKi8sIC9cXCpcXCkvKTtcblxuICAgIHZhciBub25UZXJtaW5hbE1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJhdHRyaWJ1dGVcIixcbiAgICAgICAgYmVnaW46IC9eWyBdKlthLXpBLVpdW2EtekEtWi1dKihbXFxzLV0rW2EtekEtWl1bYS16QS1aXSopKi9cbiAgICB9O1xuXG4gICAgdmFyIHNwZWNpYWxTZXF1ZW5jZU1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJtZXRhXCIsXG4gICAgICAgIGJlZ2luOiAvXFw/LipcXD8vXG4gICAgfTtcblxuICAgIHZhciBydWxlQm9keU1vZGUgPSB7XG4gICAgICAgIGJlZ2luOiAvPS8sIGVuZDogLzsvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgY29tbWVudE1vZGUsXG4gICAgICAgICAgICBzcGVjaWFsU2VxdWVuY2VNb2RlLFxuICAgICAgICAgICAgLy8gdGVybWluYWxzXG4gICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgXVxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIGNvbW1lbnRNb2RlLFxuICAgICAgICAgICAgbm9uVGVybWluYWxNb2RlLFxuICAgICAgICAgICAgcnVsZUJvZHlNb2RlXG4gICAgICAgIF1cbiAgICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEVMSVhJUl9JREVOVF9SRSA9ICdbYS16QS1aX11bYS16QS1aMC05X10qKFxcXFwhfFxcXFw/KT8nO1xuICB2YXIgRUxJWElSX01FVEhPRF9SRSA9ICdbYS16QS1aX11cXFxcdypbIT89XT98Wy0rfl1cXFxcQHw8PHw+Pnw9fnw9PT0/fDw9PnxbPD5dPT98XFxcXCpcXFxcKnxbLS8rJV4mKn5gfF18XFxcXFtcXFxcXT0/JztcbiAgdmFyIEVMSVhJUl9LRVlXT1JEUyA9XG4gICAgJ2FuZCBmYWxzZSB0aGVuIGRlZmluZWQgbW9kdWxlIGluIHJldHVybiByZWRvIHJldHJ5IGVuZCBmb3IgdHJ1ZSBzZWxmIHdoZW4gJyArXG4gICAgJ25leHQgdW50aWwgZG8gYmVnaW4gdW5sZXNzIG5pbCBicmVhayBub3QgY2FzZSBjb25kIGFsaWFzIHdoaWxlIGVuc3VyZSBvciAnICtcbiAgICAnaW5jbHVkZSB1c2UgYWxpYXMgZm4gcXVvdGUnO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnI1xcXFx7JywgZW5kOiAnfScsXG4gICAgbGV4ZW1lczogRUxJWElSX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBFTElYSVJfS0VZV09SRFNcbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2RlZiBkZWZwIGRlZm1hY3JvJywgZW5kOiAvXFxCXFxiLywgLy8gdGhlIG1vZGUgaXMgZW5kZWQgYnkgdGhlIHRpdGxlXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgYmVnaW46IEVMSVhJUl9JREVOVF9SRSxcbiAgICAgICAgZW5kc1BhcmVudDogdHJ1ZVxuICAgICAgfSlcbiAgICBdXG4gIH07XG4gIHZhciBDTEFTUyA9IGhsanMuaW5oZXJpdChGVU5DVElPTiwge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZGVmaW1wbCBkZWZtb2R1bGUgZGVmcHJvdG9jb2wgZGVmcmVjb3JkJywgZW5kOiAvXFxiZG9cXGJ8JHw7L1xuICB9KTtcbiAgdmFyIEVMSVhJUl9ERUZBVUxUX0NPTlRBSU5TID0gW1xuICAgIFNUUklORyxcbiAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgIENMQVNTLFxuICAgIEZVTkNUSU9OLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogJzooPyFcXFxccyknLFxuICAgICAgY29udGFpbnM6IFtTVFJJTkcsIHtiZWdpbjogRUxJWElSX01FVEhPRF9SRX1dLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgYmVnaW46IEVMSVhJUl9JREVOVF9SRSArICc6JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMFswLTdfXSspfChcXFxcYjB4WzAtOWEtZkEtRl9dKyl8KFxcXFxiWzEtOV1bMC05X10qKFxcXFwuWzAtOV9dKyk/KXxbMF9dXFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICBiZWdpbjogJyhcXFxcJFxcXFxXKXwoKFxcXFwkfFxcXFxAXFxcXEA/KShcXFxcdyspKSdcbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnLT4nXG4gICAgfSxcbiAgICB7IC8vIHJlZ2V4cCBjb250YWluZXJcbiAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJylcXFxccyonLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAnLycsIGVuZDogJy9bYS16XSonXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWdpbjogJyVyXFxcXFsnLCBlbmQ6ICdcXFxcXVthLXpdKidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gRUxJWElSX0RFRkFVTFRfQ09OVEFJTlM7XG5cbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiBFTElYSVJfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IEVMSVhJUl9LRVlXT1JEUyxcbiAgICBjb250YWluczogRUxJWElSX0RFRkFVTFRfQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDT01NRU5UID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJy0tJywgJyQnKSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ3stJyxcbiAgICAgICAgJy19JyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgICB9XG4gICAgICApXG4gICAgXVxuICB9O1xuXG4gIHZhciBDT05TVFJVQ1RPUiA9IHtcbiAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHdcXCddKicsIC8vIFRPRE86IG90aGVyIGNvbnN0cnVjdG9ycyAoYnVpbHQtaW4sIGluZml4KS5cbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGlsbGVnYWw6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtjbGFzc05hbWU6ICd0eXBlJywgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XSooXFxcXCgoXFxcXC5cXFxcLnwsfFxcXFx3KylcXFxcKSk/J30sXG4gICAgICBDT01NRU5UXG4gICAgXVxuICB9O1xuXG4gIHZhciBSRUNPUkQgPSB7XG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgY29udGFpbnM6IExJU1QuY29udGFpbnNcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOlxuICAgICAgJ2xldCBpbiBpZiB0aGVuIGVsc2UgY2FzZSBvZiB3aGVyZSBtb2R1bGUgaW1wb3J0IGV4cG9zaW5nICcgK1xuICAgICAgJ3R5cGUgYWxpYXMgYXMgaW5maXggaW5maXhsIGluZml4ciBwb3J0IGVmZmVjdCBjb21tYW5kIHN1YnNjcmlwdGlvbicsXG4gICAgY29udGFpbnM6IFtcblxuICAgICAgLy8gVG9wLWxldmVsIGNvbnN0cnVjdGlvbnMuXG5cbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3BvcnQgZWZmZWN0IG1vZHVsZScsIGVuZDogJ2V4cG9zaW5nJyxcbiAgICAgICAga2V5d29yZHM6ICdwb3J0IGVmZmVjdCBtb2R1bGUgd2hlcmUgY29tbWFuZCBzdWJzY3JpcHRpb24gZXhwb3NpbmcnLFxuICAgICAgICBjb250YWluczogW0xJU1QsIENPTU1FTlRdLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXFdcXFxcLnw7J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdpbXBvcnQnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdpbXBvcnQgYXMgZXhwb3NpbmcnLFxuICAgICAgICBjb250YWluczogW0xJU1QsIENPTU1FTlRdLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXFdcXFxcLnw7J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICd0eXBlJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAndHlwZSBhbGlhcycsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIExJU1QsIFJFQ09SRCwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbmZpeCBpbmZpeGwgaW5maXhyJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5DX05VTUJFUl9NT0RFLCBDT01NRU5UXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdwb3J0JywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAncG9ydCcsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09NTUVOVF1cbiAgICAgIH0sXG5cbiAgICAgIC8vIExpdGVyYWxzIGFuZCBuYW1lcy5cblxuICAgICAgLy8gVE9ETzogY2hhcmFjdGVycy5cbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBDT05TVFJVQ1RPUixcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJ15bX2Etel1bXFxcXHdcXCddKid9KSxcbiAgICAgIENPTU1FTlQsXG5cbiAgICAgIHtiZWdpbjogJy0+fDwtJ30gLy8gTm8gbWFya3VwLCByZWxldmFuY2UgYm9vc3RlclxuICAgIF0sXG4gICAgaWxsZWdhbDogLzsvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUlVCWV9NRVRIT0RfUkUgPSAnW2EtekEtWl9dXFxcXHcqWyE/PV0/fFstK35dXFxcXEB8PDx8Pj58PX58PT09P3w8PT58Wzw+XT0/fFxcXFwqXFxcXCp8Wy0vKyVeJip+YHxdfFxcXFxbXFxcXF09Pyc7XG4gIHZhciBSVUJZX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYW5kIHRoZW4gZGVmaW5lZCBtb2R1bGUgaW4gcmV0dXJuIHJlZG8gaWYgQkVHSU4gcmV0cnkgZW5kIGZvciBzZWxmIHdoZW4gJyArXG4gICAgICAnbmV4dCB1bnRpbCBkbyBiZWdpbiB1bmxlc3MgRU5EIHJlc2N1ZSBlbHNlIGJyZWFrIHVuZGVmIG5vdCBzdXBlciBjbGFzcyBjYXNlICcgK1xuICAgICAgJ3JlcXVpcmUgeWllbGQgYWxpYXMgd2hpbGUgZW5zdXJlIGVsc2lmIG9yIGluY2x1ZGUgYXR0cl9yZWFkZXIgYXR0cl93cml0ZXIgYXR0cl9hY2Nlc3NvcicsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlIG5pbCdcbiAgfTtcbiAgdmFyIFlBUkRPQ1RBRyA9IHtcbiAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgfTtcbiAgdmFyIElSQl9PQkpFQ1QgPSB7XG4gICAgYmVnaW46ICcjPCcsIGVuZDogJz4nXG4gIH07XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ09NTUVOVChcbiAgICAgICcjJyxcbiAgICAgICckJyxcbiAgICAgIHtcbiAgICAgICAgY29udGFpbnM6IFtZQVJET0NUQUddXG4gICAgICB9XG4gICAgKSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAnXlxcXFw9YmVnaW4nLFxuICAgICAgJ15cXFxcPWVuZCcsXG4gICAgICB7XG4gICAgICAgIGNvbnRhaW5zOiBbWUFSRE9DVEFHXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfVxuICAgICksXG4gICAgaGxqcy5DT01NRU5UKCdeX19FTkRfXycsICdcXFxcbiQnKVxuICBdO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnI1xcXFx7JywgZW5kOiAnfScsXG4gICAga2V5d29yZHM6IFJVQllfS0VZV09SRFNcbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogLycvLCBlbmQ6IC8nL30sXG4gICAgICB7YmVnaW46IC9cIi8sIGVuZDogL1wiL30sXG4gICAgICB7YmVnaW46IC9gLywgZW5kOiAvYC99LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/XFxcXCgnLCBlbmQ6ICdcXFxcKSd9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/XFxcXFsnLCBlbmQ6ICdcXFxcXSd9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/eycsIGVuZDogJ30nfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdPzwnLCBlbmQ6ICc+J30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT8vJywgZW5kOiAnLyd9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/JScsIGVuZDogJyUnfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdPy0nLCBlbmQ6ICctJ30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT9cXFxcfCcsIGVuZDogJ1xcXFx8J30sXG4gICAgICB7XG4gICAgICAgIC8vIFxcQiBpbiB0aGUgYmVnaW5uaW5nIHN1cHByZXNzZXMgcmVjb2duaXRpb24gb2YgPy1zZXF1ZW5jZXMgd2hlcmUgP1xuICAgICAgICAvLyBpcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYSBwcmVjZWRpbmcgaWRlbnRpZmllciwgYXMgaW46IGBmdW5jPzRgXG4gICAgICAgIGJlZ2luOiAvXFxCXFw/KFxcXFxcXGR7MSwzfXxcXFxceFtBLUZhLWYwLTldezEsMn18XFxcXHVbQS1GYS1mMC05XXs0fXxcXFxcP1xcUylcXGIvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLzw8KC0/KVxcdyskLywgZW5kOiAvXlxccypcXHcrJC8sXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJywgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICBrZXl3b3JkczogUlVCWV9LRVlXT1JEU1xuICB9O1xuXG4gIHZhciBSVUJZX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgU1RSSU5HLFxuICAgIElSQl9PQkpFQ1QsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIG1vZHVsZScsIGVuZDogJyR8OycsXG4gICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdbQS1aYS16X11cXFxcdyooOjpcXFxcdyspKihcXFxcP3xcXFxcISk/J30pLFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICc8XFxcXHMqJyxcbiAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLklERU5UX1JFICsgJzo6KT8nICsgaGxqcy5JREVOVF9SRVxuICAgICAgICAgIH1dXG4gICAgICAgIH1cbiAgICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICBiZWdpbktleXdvcmRzOiAnZGVmJywgZW5kOiAnJHw7JyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogUlVCWV9NRVRIT0RfUkV9KSxcbiAgICAgICAgUEFSQU1TXG4gICAgICBdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gc3dhbGxvdyBuYW1lc3BhY2UgcXVhbGlmaWVycyBiZWZvcmUgc3ltYm9sc1xuICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnOjonXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICcoXFxcXCF8XFxcXD8pPzonLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgYmVnaW46ICc6KD8hXFxcXHMpJyxcbiAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCB7YmVnaW46IFJVQllfTUVUSE9EX1JFfV0sXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJyhcXFxcYjBbMC03X10rKXwoXFxcXGIweFswLTlhLWZBLUZfXSspfChcXFxcYlsxLTldWzAtOV9dKihcXFxcLlswLTlfXSspPyl8WzBfXVxcXFxiJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICcoXFxcXCRcXFxcVyl8KChcXFxcJHxcXFxcQFxcXFxAPykoXFxcXHcrKSknIC8vIHZhcmlhYmxlc1xuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgIGJlZ2luOiAvXFx8LywgZW5kOiAvXFx8LyxcbiAgICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTXG4gICAgfSxcbiAgICB7IC8vIHJlZ2V4cCBjb250YWluZXJcbiAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3x1bmxlc3MpXFxcXHMqJyxcbiAgICAgIGtleXdvcmRzOiAndW5sZXNzJyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIElSQl9PQkpFQ1QsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJy8nLCBlbmQ6ICcvW2Etel0qJ30sXG4gICAgICAgICAgICB7YmVnaW46ICclcnsnLCBlbmQ6ICd9W2Etel0qJ30sXG4gICAgICAgICAgICB7YmVnaW46ICclclxcXFwoJywgZW5kOiAnXFxcXClbYS16XSonfSxcbiAgICAgICAgICAgIHtiZWdpbjogJyVyIScsIGVuZDogJyFbYS16XSonfSxcbiAgICAgICAgICAgIHtiZWdpbjogJyVyXFxcXFsnLCBlbmQ6ICdcXFxcXVthLXpdKid9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICBdLmNvbmNhdChDT01NRU5UX01PREVTKSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUyk7XG5cbiAgU1VCU1QuY29udGFpbnMgPSBSVUJZX0RFRkFVTFRfQ09OVEFJTlM7XG4gIFBBUkFNUy5jb250YWlucyA9IFJVQllfREVGQVVMVF9DT05UQUlOUztcblxuICB2YXIgU0lNUExFX1BST01QVCA9IFwiWz4/XT5cIjtcbiAgdmFyIERFRkFVTFRfUFJPTVBUID0gXCJbXFxcXHcjXStcXFxcKFxcXFx3K1xcXFwpOlxcXFxkKzpcXFxcZCs+XCI7XG4gIHZhciBSVk1fUFJPTVBUID0gXCIoXFxcXHcrLSk/XFxcXGQrXFxcXC5cXFxcZCtcXFxcLlxcXFxkKHBcXFxcZCspP1tePl0rPlwiO1xuXG4gIHZhciBJUkJfREVGQVVMVCA9IFtcbiAgICB7XG4gICAgICBiZWdpbjogL15cXHMqPT4vLFxuICAgICAgc3RhcnRzOiB7XG4gICAgICAgIGVuZDogJyQnLCBjb250YWluczogUlVCWV9ERUZBVUxUX0NPTlRBSU5TXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgIGJlZ2luOiAnXignK1NJTVBMRV9QUk9NUFQrXCJ8XCIrREVGQVVMVF9QUk9NUFQrJ3wnK1JWTV9QUk9NUFQrJyknLFxuICAgICAgc3RhcnRzOiB7XG4gICAgICAgIGVuZDogJyQnLCBjb250YWluczogUlVCWV9ERUZBVUxUX0NPTlRBSU5TXG4gICAgICB9XG4gICAgfVxuICBdO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydyYicsICdnZW1zcGVjJywgJ3BvZHNwZWMnLCAndGhvcicsICdpcmInXSxcbiAgICBrZXl3b3JkczogUlVCWV9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogQ09NTUVOVF9NT0RFUy5jb25jYXQoSVJCX0RFRkFVTFQpLmNvbmNhdChSVUJZX0RFRkFVTFRfQ09OVEFJTlMpXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCc8JSMnLCAnJT4nKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8JVslPS1dPycsIGVuZDogJ1slLV0/JT4nLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3J1YnknLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3NwYXduIHNwYXduX2xpbmsgc2VsZicsXG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYWZ0ZXIgYW5kIGFuZGFsc298MTAgYmFuZCBiZWdpbiBibm90IGJvciBic2wgYnNyIGJ4b3IgY2FzZSBjYXRjaCBjb25kIGRpdiBlbmQgZnVuIGlmICcgK1xuICAgICAgICAnbGV0IG5vdCBvZiBvciBvcmVsc2V8MTAgcXVlcnkgcmVjZWl2ZSByZW0gdHJ5IHdoZW4geG9yJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnXlswLTldKz4gJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnJScsICckJyksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoXFxcXGQrI1thLWZBLUYwLTldK3xcXFxcZCsoXFxcXC5cXFxcZCspPyhbZUVdWy0rXT9cXFxcZCspPyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFw/KDo6KT8oW0EtWl1cXFxcdyooOjopPykrJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICctPidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnb2snXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyEnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyhcXFxcYlthLXpcXCddW2EtekEtWjAtOV9cXCddKjpbYS16XFwnXVthLXpBLVowLTlfXFwnXSopfChcXFxcYlthLXpcXCddW2EtekEtWjAtOV9cXCddKiknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW0EtWl1bYS16QS1aMC05X1xcJ10qJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEJBU0lDX0FUT01fUkUgPSAnW2EtelxcJ11bYS16QS1aMC05X1xcJ10qJztcbiAgdmFyIEZVTkNUSU9OX05BTUVfUkUgPSAnKCcgKyBCQVNJQ19BVE9NX1JFICsgJzonICsgQkFTSUNfQVRPTV9SRSArICd8JyArIEJBU0lDX0FUT01fUkUgKyAnKSc7XG4gIHZhciBFUkxBTkdfUkVTRVJWRUQgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhZnRlciBhbmQgYW5kYWxzb3wxMCBiYW5kIGJlZ2luIGJub3QgYm9yIGJzbCBienIgYnhvciBjYXNlIGNhdGNoIGNvbmQgZGl2IGVuZCBmdW4gaWYgJyArXG4gICAgICAnbGV0IG5vdCBvZiBvcmVsc2V8MTAgcXVlcnkgcmVjZWl2ZSByZW0gdHJ5IHdoZW4geG9yJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ2ZhbHNlIHRydWUnXG4gIH07XG5cbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoJyUnLCAnJCcpO1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46ICdcXFxcYihcXFxcZCsjW2EtZkEtRjAtOV0rfFxcXFxkKyhcXFxcLlxcXFxkKyk/KFtlRV1bLStdP1xcXFxkKyk/KScsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBOQU1FRF9GVU4gPSB7XG4gICAgYmVnaW46ICdmdW5cXFxccysnICsgQkFTSUNfQVRPTV9SRSArICcvXFxcXGQrJ1xuICB9O1xuICB2YXIgRlVOQ1RJT05fQ0FMTCA9IHtcbiAgICBiZWdpbjogRlVOQ1RJT05fTkFNRV9SRSArICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IEZVTkNUSU9OX05BTUVfUkUsIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIC8vIFwiY29udGFpbnNcIiBkZWZpbmVkIGxhdGVyXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgVFVQTEUgPSB7XG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgcmVsZXZhbmNlOiAwXG4gICAgLy8gXCJjb250YWluc1wiIGRlZmluZWQgbGF0ZXJcbiAgfTtcbiAgdmFyIFZBUjEgPSB7XG4gICAgYmVnaW46ICdcXFxcYl8oW0EtWl1bQS1aYS16MC05X10qKT8nLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgVkFSMiA9IHtcbiAgICBiZWdpbjogJ1tBLVpdW2EtekEtWjAtOV9dKicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBSRUNPUkRfQUNDRVNTID0ge1xuICAgIGJlZ2luOiAnIycgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnIycgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAvLyBcImNvbnRhaW5zXCIgZGVmaW5lZCBsYXRlclxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgQkxPQ0tfU1RBVEVNRU5UUyA9IHtcbiAgICBiZWdpbktleXdvcmRzOiAnZnVuIHJlY2VpdmUgaWYgdHJ5IGNhc2UnLCBlbmQ6ICdlbmQnLFxuICAgIGtleXdvcmRzOiBFUkxBTkdfUkVTRVJWRURcbiAgfTtcbiAgQkxPQ0tfU1RBVEVNRU5UUy5jb250YWlucyA9IFtcbiAgICBDT01NRU5ULFxuICAgIE5BTUVEX0ZVTixcbiAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnJ30pLFxuICAgIEJMT0NLX1NUQVRFTUVOVFMsXG4gICAgRlVOQ1RJT05fQ0FMTCxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIE5VTUJFUixcbiAgICBUVVBMRSxcbiAgICBWQVIxLCBWQVIyLFxuICAgIFJFQ09SRF9BQ0NFU1NcbiAgXTtcblxuICB2YXIgQkFTSUNfTU9ERVMgPSBbXG4gICAgQ09NTUVOVCxcbiAgICBOQU1FRF9GVU4sXG4gICAgQkxPQ0tfU1RBVEVNRU5UUyxcbiAgICBGVU5DVElPTl9DQUxMLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgTlVNQkVSLFxuICAgIFRVUExFLFxuICAgIFZBUjEsIFZBUjIsXG4gICAgUkVDT1JEX0FDQ0VTU1xuICBdO1xuICBGVU5DVElPTl9DQUxMLmNvbnRhaW5zWzFdLmNvbnRhaW5zID0gQkFTSUNfTU9ERVM7XG4gIFRVUExFLmNvbnRhaW5zID0gQkFTSUNfTU9ERVM7XG4gIFJFQ09SRF9BQ0NFU1MuY29udGFpbnNbMV0uY29udGFpbnMgPSBCQVNJQ19NT0RFUztcblxuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICBjb250YWluczogQkFTSUNfTU9ERVNcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2VybCddLFxuICAgIGtleXdvcmRzOiBFUkxBTkdfUkVTRVJWRUQsXG4gICAgaWxsZWdhbDogJyg8L3xcXFxcKj18XFxcXCs9fC09fC9cXFxcKnxcXFxcKi98XFxcXChcXFxcKnxcXFxcKlxcXFwpKScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ14nICsgQkFTSUNfQVRPTV9SRSArICdcXFxccypcXFxcKCcsIGVuZDogJy0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcKHwjfC8vfC9cXFxcKnxcXFxcXFxcXHw6fDsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IEJBU0lDX0FUT01fUkV9KVxuICAgICAgICBdLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6ICc7fFxcXFwuJyxcbiAgICAgICAgICBrZXl3b3JkczogRVJMQU5HX1JFU0VSVkVELFxuICAgICAgICAgIGNvbnRhaW5zOiBCQVNJQ19NT0RFU1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgQ09NTUVOVCxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeLScsIGVuZDogJ1xcXFwuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgbGV4ZW1lczogJy0nICsgaGxqcy5JREVOVF9SRSxcbiAgICAgICAga2V5d29yZHM6XG4gICAgICAgICAgJy1tb2R1bGUgLXJlY29yZCAtdW5kZWYgLWV4cG9ydCAtaWZkZWYgLWlmbmRlZiAtYXV0aG9yIC1jb3B5cmlnaHQgLWRvYyAtdnNuICcgK1xuICAgICAgICAgICctaW1wb3J0IC1pbmNsdWRlIC1pbmNsdWRlX2xpYiAtY29tcGlsZSAtZGVmaW5lIC1lbHNlIC1lbmRpZiAtZmlsZSAtYmVoYXZpb3VyICcgK1xuICAgICAgICAgICctYmVoYXZpb3IgLXNwZWMnLFxuICAgICAgICBjb250YWluczogW1BBUkFNU11cbiAgICAgIH0sXG4gICAgICBOVU1CRVIsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgUkVDT1JEX0FDQ0VTUyxcbiAgICAgIFZBUjEsIFZBUjIsXG4gICAgICBUVVBMRSxcbiAgICAgIHtiZWdpbjogL1xcLiQvfSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd4bHN4JywgJ3hscyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogL1thLXpBLVpdW1xcd1xcLl0qLyxcbiAgICAvLyBidWlsdC1pbiBmdW5jdGlvbnMgaW1wb3J0ZWQgZnJvbSBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA1MTMwNDI3MTAvaHR0cHM6Ly9zdXBwb3J0Lm9mZmljZS5jb20vZW4tdXMvYXJ0aWNsZS9FeGNlbC1mdW5jdGlvbnMtYWxwaGFiZXRpY2FsLWIzOTQ0NTcyLTI1NWQtNGVmYi1iYjk2LWM2ZDkwMDMzZTE4OFxuICAgIGtleXdvcmRzOiB7XG4gICAgICAgIGJ1aWx0X2luOiAnQUJTIEFDQ1JJTlQgQUNDUklOVE0gQUNPUyBBQ09TSCBBQ09UIEFDT1RIIEFHR1JFR0FURSBBRERSRVNTIEFNT1JERUdSQyBBTU9STElOQyBBTkQgQVJBQklDIEFSRUFTIEFTQyBBU0lOIEFTSU5IIEFUQU4gQVRBTjIgQVRBTkggQVZFREVWIEFWRVJBR0UgQVZFUkFHRUEgQVZFUkFHRUlGIEFWRVJBR0VJRlMgQkFIVFRFWFQgQkFTRSBCRVNTRUxJIEJFU1NFTEogQkVTU0VMSyBCRVNTRUxZIEJFVEFESVNUIEJFVEEuRElTVCBCRVRBSU5WIEJFVEEuSU5WIEJJTjJERUMgQklOMkhFWCBCSU4yT0NUIEJJTk9NRElTVCBCSU5PTS5ESVNUIEJJTk9NLkRJU1QuUkFOR0UgQklOT00uSU5WIEJJVEFORCBCSVRMU0hJRlQgQklUT1IgQklUUlNISUZUIEJJVFhPUiBDQUxMIENFSUxJTkcgQ0VJTElORy5NQVRIIENFSUxJTkcuUFJFQ0lTRSBDRUxMIENIQVIgQ0hJRElTVCBDSElJTlYgQ0hJVEVTVCBDSElTUS5ESVNUIENISVNRLkRJU1QuUlQgQ0hJU1EuSU5WIENISVNRLklOVi5SVCBDSElTUS5URVNUIENIT09TRSBDTEVBTiBDT0RFIENPTFVNTiBDT0xVTU5TIENPTUJJTiBDT01CSU5BIENPTVBMRVggQ09OQ0FUIENPTkNBVEVOQVRFIENPTkZJREVOQ0UgQ09ORklERU5DRS5OT1JNIENPTkZJREVOQ0UuVCBDT05WRVJUIENPUlJFTCBDT1MgQ09TSCBDT1QgQ09USCBDT1VOVCBDT1VOVEEgQ09VTlRCTEFOSyBDT1VOVElGIENPVU5USUZTIENPVVBEQVlCUyBDT1VQREFZUyBDT1VQREFZU05DIENPVVBOQ0QgQ09VUE5VTSBDT1VQUENEIENPVkFSIENPVkFSSUFOQ0UuUCBDT1ZBUklBTkNFLlMgQ1JJVEJJTk9NIENTQyBDU0NIIENVQkVLUElNRU1CRVIgQ1VCRU1FTUJFUiBDVUJFTUVNQkVSUFJPUEVSVFkgQ1VCRVJBTktFRE1FTUJFUiBDVUJFU0VUIENVQkVTRVRDT1VOVCBDVUJFVkFMVUUgQ1VNSVBNVCBDVU1QUklOQyBEQVRFIERBVEVESUYgREFURVZBTFVFIERBVkVSQUdFIERBWSBEQVlTIERBWVMzNjAgREIgREJDUyBEQ09VTlQgRENPVU5UQSBEREIgREVDMkJJTiBERUMySEVYIERFQzJPQ1QgREVDSU1BTCBERUdSRUVTIERFTFRBIERFVlNRIERHRVQgRElTQyBETUFYIERNSU4gRE9MTEFSIERPTExBUkRFIERPTExBUkZSIERQUk9EVUNUIERTVERFViBEU1RERVZQIERTVU0gRFVSQVRJT04gRFZBUiBEVkFSUCBFREFURSBFRkZFQ1QgRU5DT0RFVVJMIEVPTU9OVEggRVJGIEVSRi5QUkVDSVNFIEVSRkMgRVJGQy5QUkVDSVNFIEVSUk9SLlRZUEUgRVVST0NPTlZFUlQgRVZFTiBFWEFDVCBFWFAgRVhQT04uRElTVCBFWFBPTkRJU1QgRkFDVCBGQUNURE9VQkxFIEZBTFNFfDAgRi5ESVNUIEZESVNUIEYuRElTVC5SVCBGSUxURVJYTUwgRklORCBGSU5EQiBGLklOViBGLklOVi5SVCBGSU5WIEZJU0hFUiBGSVNIRVJJTlYgRklYRUQgRkxPT1IgRkxPT1IuTUFUSCBGTE9PUi5QUkVDSVNFIEZPUkVDQVNUIEZPUkVDQVNULkVUUyBGT1JFQ0FTVC5FVFMuQ09ORklOVCBGT1JFQ0FTVC5FVFMuU0VBU09OQUxJVFkgRk9SRUNBU1QuRVRTLlNUQVQgRk9SRUNBU1QuTElORUFSIEZPUk1VTEFURVhUIEZSRVFVRU5DWSBGLlRFU1QgRlRFU1QgRlYgRlZTQ0hFRFVMRSBHQU1NQSBHQU1NQS5ESVNUIEdBTU1BRElTVCBHQU1NQS5JTlYgR0FNTUFJTlYgR0FNTUFMTiBHQU1NQUxOLlBSRUNJU0UgR0FVU1MgR0NEIEdFT01FQU4gR0VTVEVQIEdFVFBJVk9UREFUQSBHUk9XVEggSEFSTUVBTiBIRVgyQklOIEhFWDJERUMgSEVYMk9DVCBITE9PS1VQIEhPVVIgSFlQRVJMSU5LIEhZUEdFT00uRElTVCBIWVBHRU9NRElTVCBJRnwwIElGRVJST1IgSUZOQSBJRlMgSU1BQlMgSU1BR0lOQVJZIElNQVJHVU1FTlQgSU1DT05KVUdBVEUgSU1DT1MgSU1DT1NIIElNQ09UIElNQ1NDIElNQ1NDSCBJTURJViBJTUVYUCBJTUxOIElNTE9HMTAgSU1MT0cyIElNUE9XRVIgSU1QUk9EVUNUIElNUkVBTCBJTVNFQyBJTVNFQ0ggSU1TSU4gSU1TSU5IIElNU1FSVCBJTVNVQiBJTVNVTSBJTVRBTiBJTkRFWCBJTkRJUkVDVCBJTkZPIElOVCBJTlRFUkNFUFQgSU5UUkFURSBJUE1UIElSUiBJU0JMQU5LIElTRVJSIElTRVJST1IgSVNFVkVOIElTRk9STVVMQSBJU0xPR0lDQUwgSVNOQSBJU05PTlRFWFQgSVNOVU1CRVIgSVNPREQgSVNSRUYgSVNURVhUIElTTy5DRUlMSU5HIElTT1dFRUtOVU0gSVNQTVQgSklTIEtVUlQgTEFSR0UgTENNIExFRlQgTEVGVEIgTEVOIExFTkIgTElORVNUIExOIExPRyBMT0cxMCBMT0dFU1QgTE9HSU5WIExPR05PUk0uRElTVCBMT0dOT1JNRElTVCBMT0dOT1JNLklOViBMT09LVVAgTE9XRVIgTUFUQ0ggTUFYIE1BWEEgTUFYSUZTIE1ERVRFUk0gTURVUkFUSU9OIE1FRElBTiBNSUQgTUlEQnMgTUlOIE1JTklGUyBNSU5BIE1JTlVURSBNSU5WRVJTRSBNSVJSIE1NVUxUIE1PRCBNT0RFIE1PREUuTVVMVCBNT0RFLlNOR0wgTU9OVEggTVJPVU5EIE1VTFRJTk9NSUFMIE1VTklUIE4gTkEgTkVHQklOT00uRElTVCBORUdCSU5PTURJU1QgTkVUV09SS0RBWVMgTkVUV09SS0RBWVMuSU5UTCBOT01JTkFMIE5PUk0uRElTVCBOT1JNRElTVCBOT1JNSU5WIE5PUk0uSU5WIE5PUk0uUy5ESVNUIE5PUk1TRElTVCBOT1JNLlMuSU5WIE5PUk1TSU5WIE5PVCBOT1cgTlBFUiBOUFYgTlVNQkVSVkFMVUUgT0NUMkJJTiBPQ1QyREVDIE9DVDJIRVggT0REIE9EREZQUklDRSBPRERGWUlFTEQgT0RETFBSSUNFIE9ERExZSUVMRCBPRkZTRVQgT1IgUERVUkFUSU9OIFBFQVJTT04gUEVSQ0VOVElMRS5FWEMgUEVSQ0VOVElMRS5JTkMgUEVSQ0VOVElMRSBQRVJDRU5UUkFOSy5FWEMgUEVSQ0VOVFJBTksuSU5DIFBFUkNFTlRSQU5LIFBFUk1VVCBQRVJNVVRBVElPTkEgUEhJIFBIT05FVElDIFBJIFBNVCBQT0lTU09OLkRJU1QgUE9JU1NPTiBQT1dFUiBQUE1UIFBSSUNFIFBSSUNFRElTQyBQUklDRU1BVCBQUk9CIFBST0RVQ1QgUFJPUEVSIFBWIFFVQVJUSUxFIFFVQVJUSUxFLkVYQyBRVUFSVElMRS5JTkMgUVVPVElFTlQgUkFESUFOUyBSQU5EIFJBTkRCRVRXRUVOIFJBTksuQVZHIFJBTksuRVEgUkFOSyBSQVRFIFJFQ0VJVkVEIFJFR0lTVEVSLklEIFJFUExBQ0UgUkVQTEFDRUIgUkVQVCBSSUdIVCBSSUdIVEIgUk9NQU4gUk9VTkQgUk9VTkRET1dOIFJPVU5EVVAgUk9XIFJPV1MgUlJJIFJTUSBSVEQgU0VBUkNIIFNFQVJDSEIgU0VDIFNFQ0ggU0VDT05EIFNFUklFU1NVTSBTSEVFVCBTSEVFVFMgU0lHTiBTSU4gU0lOSCBTS0VXIFNLRVcuUCBTTE4gU0xPUEUgU01BTEwgU1FMLlJFUVVFU1QgU1FSVCBTUVJUUEkgU1RBTkRBUkRJWkUgU1RERVYgU1RERVYuUCBTVERFVi5TIFNUREVWQSBTVERFVlAgU1RERVZQQSBTVEVZWCBTVUJTVElUVVRFIFNVQlRPVEFMIFNVTSBTVU1JRiBTVU1JRlMgU1VNUFJPRFVDVCBTVU1TUSBTVU1YMk1ZMiBTVU1YMlBZMiBTVU1YTVkyIFNXSVRDSCBTWUQgVCBUQU4gVEFOSCBUQklMTEVRIFRCSUxMUFJJQ0UgVEJJTExZSUVMRCBULkRJU1QgVC5ESVNULjJUIFQuRElTVC5SVCBURElTVCBURVhUIFRFWFRKT0lOIFRJTUUgVElNRVZBTFVFIFQuSU5WIFQuSU5WLjJUIFRJTlYgVE9EQVkgVFJBTlNQT1NFIFRSRU5EIFRSSU0gVFJJTU1FQU4gVFJVRXwwIFRSVU5DIFQuVEVTVCBUVEVTVCBUWVBFIFVOSUNIQVIgVU5JQ09ERSBVUFBFUiBWQUxVRSBWQVIgVkFSLlAgVkFSLlMgVkFSQSBWQVJQIFZBUlBBIFZEQiBWTE9PS1VQIFdFQlNFUlZJQ0UgV0VFS0RBWSBXRUVLTlVNIFdFSUJVTEwgV0VJQlVMTC5ESVNUIFdPUktEQVkgV09SS0RBWS5JTlRMIFhJUlIgWE5QViBYT1IgWUVBUiBZRUFSRlJBQyBZSUVMRCBZSUVMRERJU0MgWUlFTERNQVQgWi5URVNUIFpURVNUJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgLyogbWF0Y2hlcyBhIGJlZ2lubmluZyBlcXVhbCBzaWduIGZvdW5kIGluIEV4Y2VsIGZvcm11bGEgZXhhbXBsZXMgKi8gXG4gICAgICAgIGJlZ2luOiAvXj0vLFxuICAgICAgICBlbmQ6IC9bXj1dLywgcmV0dXJuRW5kOiB0cnVlLCBpbGxlZ2FsOiAvPS8sIC8qIG9ubHkgYWxsb3cgc2luZ2xlIGVxdWFsIHNpZ24gYXQgZnJvbnQgb2YgbGluZSAqL1xuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLyogdGVjaG5pY2FsbHksIHRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gMiBsZXR0ZXJzIGluIGNvbHVtbiBuYW1lcywgYnV0IHRoaXMgcHJldmVudHMgY29uZmxpY3Qgd2l0aCBzb21lIGtleXdvcmRzICovXG4gICAgICB7XG4gICAgICAgIC8qIG1hdGNoZXMgYSByZWZlcmVuY2UgdG8gYSBzaW5nbGUgY2VsbCAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogL1xcYltBLVpdezEsMn1cXGQrXFxiLyxcbiAgICAgICAgZW5kOiAvW15cXGRdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvKiBtYXRjaGVzIGEgcmVmZXJlbmNlIHRvIGEgcmFuZ2Ugb2YgY2VsbHMgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46IC9bQS1aXXswLDJ9XFxkKjpbQS1aXXswLDJ9XFxkKi8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBobGpzLk5VTUJFUl9SRSArICcoJSk/JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLyogRXhjZWwgZm9ybXVsYSBjb21tZW50cyBhcmUgZG9uZSBieSBwdXR0aW5nIHRoZSBjb21tZW50IGluIGEgZnVuY3Rpb24gY2FsbCB0byBOKCkgKi9cbiAgICAgIGhsanMuQ09NTUVOVCgvXFxiTlxcKC8sL1xcKS8sXG4gICAgICB7XG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogL1xcbi9cbiAgICAgIH0pXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgIHtcbiAgICAgIGJlZ2luOiAvW15cXHUyNDAxXFx1MDAwMV0rLyxcbiAgICAgIGVuZDogL1tcXHUyNDAxXFx1MDAwMV0vLFxuICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKFteXFx1MjQwMVxcdTAwMDE9XSspLyxcbiAgICAgICAgZW5kOiAvPShbXlxcdTI0MDFcXHUwMDAxPV0rKS8sXG4gICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgcmV0dXJuQmVnaW46IGZhbHNlLFxuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC89LyxcbiAgICAgICAgZW5kOiAvKFtcXHUyNDAxXFx1MDAwMV0pLyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnXG4gICAgICB9XVxuICAgIH1dLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWVcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuXG4gICAgdmFyIENIQVIgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvJygufFxcXFxbeFh1VV1bYS16QS1aMC05XSspJy9cbiAgICB9O1xuXG4gICAgdmFyIFNUUklORyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgdmFyIE5BTUUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46IC9bXjAtOVxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjtdW15cXG5cXHQgXCInKCksLmB7fVxcW1xcXTo7XSt8W14wLTlcXG5cXHQgXCInKCksLmB7fVxcW1xcXTo7PV0vXG4gICAgfTtcblxuICAgIHZhciBNRVRIT0QgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2RlZicsXG4gICAgICAgIGVuZDogL1s6PXtcXFsoXFxuO10vLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW05BTUVdXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZScsXG4gICAgICAgICAgICBrZXl3b3JkOiAnY2FzZSBjbGFzcyBkZWYgZWxzZSBlbnVtIGlmIGltcGwgaW1wb3J0IGluIGxhdCByZWwgaW5kZXggbGV0IG1hdGNoIG5hbWVzcGFjZSBzd2l0Y2ggdHlwZSB5aWVsZCB3aXRoJ1xuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIENIQVIsXG4gICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICBNRVRIT0QsXG4gICAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICB9O1xuXG4gIHZhciBGX0tFWVdPUkRTID0ge1xuICAgIGxpdGVyYWw6ICcuRmFsc2UuIC5UcnVlLicsXG4gICAga2V5d29yZDogJ2tpbmQgZG8gd2hpbGUgcHJpdmF0ZSBjYWxsIGludHJpbnNpYyB3aGVyZSBlbHNld2hlcmUgJyArXG4gICAgICAndHlwZSBlbmR0eXBlIGVuZG1vZHVsZSBlbmRzZWxlY3QgZW5kaW50ZXJmYWNlIGVuZCBlbmRkbyBlbmRpZiBpZiBmb3JhbGwgZW5kZm9yYWxsIG9ubHkgY29udGFpbnMgZGVmYXVsdCByZXR1cm4gc3RvcCB0aGVuICcgK1xuICAgICAgJ3B1YmxpYyBzdWJyb3V0aW5lfDEwIGZ1bmN0aW9uIHByb2dyYW0gLmFuZC4gLm9yLiAubm90LiAubGUuIC5lcS4gLmdlLiAuZ3QuIC5sdC4gJyArXG4gICAgICAnZ290byBzYXZlIGVsc2UgdXNlIG1vZHVsZSBzZWxlY3QgY2FzZSAnICtcbiAgICAgICdhY2Nlc3MgYmxhbmsgZGlyZWN0IGV4aXN0IGZpbGUgZm10IGZvcm0gZm9ybWF0dGVkIGlvc3RhdCBuYW1lIG5hbWVkIG5leHRyZWMgbnVtYmVyIG9wZW5lZCByZWMgcmVjbCBzZXF1ZW50aWFsIHN0YXR1cyB1bmZvcm1hdHRlZCB1bml0ICcgK1xuICAgICAgJ2NvbnRpbnVlIGZvcm1hdCBwYXVzZSBjeWNsZSBleGl0ICcgK1xuICAgICAgJ2NfbnVsbF9jaGFyIGNfYWxlcnQgY19iYWNrc3BhY2UgY19mb3JtX2ZlZWQgZmx1c2ggd2FpdCBkZWNpbWFsIHJvdW5kIGlvbXNnICcgK1xuICAgICAgJ3N5bmNocm9ub3VzIG5vcGFzcyBub25fb3ZlcnJpZGFibGUgcGFzcyBwcm90ZWN0ZWQgdm9sYXRpbGUgYWJzdHJhY3QgZXh0ZW5kcyBpbXBvcnQgJyArXG4gICAgICAnbm9uX2ludHJpbnNpYyB2YWx1ZSBkZWZlcnJlZCBnZW5lcmljIGZpbmFsIGVudW1lcmF0b3IgY2xhc3MgYXNzb2NpYXRlIGJpbmQgZW51bSAnICtcbiAgICAgICdjX2ludCBjX3Nob3J0IGNfbG9uZyBjX2xvbmdfbG9uZyBjX3NpZ25lZF9jaGFyIGNfc2l6ZV90IGNfaW50OF90IGNfaW50MTZfdCBjX2ludDMyX3QgY19pbnQ2NF90IGNfaW50X2xlYXN0OF90IGNfaW50X2xlYXN0MTZfdCAnICtcbiAgICAgICdjX2ludF9sZWFzdDMyX3QgY19pbnRfbGVhc3Q2NF90IGNfaW50X2Zhc3Q4X3QgY19pbnRfZmFzdDE2X3QgY19pbnRfZmFzdDMyX3QgY19pbnRfZmFzdDY0X3QgY19pbnRtYXhfdCBDX2ludHB0cl90IGNfZmxvYXQgY19kb3VibGUgJyArXG4gICAgICAnY19sb25nX2RvdWJsZSBjX2Zsb2F0X2NvbXBsZXggY19kb3VibGVfY29tcGxleCBjX2xvbmdfZG91YmxlX2NvbXBsZXggY19ib29sIGNfY2hhciBjX251bGxfcHRyIGNfbnVsbF9mdW5wdHIgJyArXG4gICAgICAnY19uZXdfbGluZSBjX2NhcnJpYWdlX3JldHVybiBjX2hvcml6b250YWxfdGFiIGNfdmVydGljYWxfdGFiIGlzb19jX2JpbmRpbmcgY19sb2MgY19mdW5sb2MgY19hc3NvY2lhdGVkICBjX2ZfcG9pbnRlciAnICtcbiAgICAgICdjX3B0ciBjX2Z1bnB0ciBpc29fZm9ydHJhbl9lbnYgY2hhcmFjdGVyX3N0b3JhZ2Vfc2l6ZSBlcnJvcl91bml0IGZpbGVfc3RvcmFnZV9zaXplIGlucHV0X3VuaXQgaW9zdGF0X2VuZCBpb3N0YXRfZW9yICcgK1xuICAgICAgJ251bWVyaWNfc3RvcmFnZV9zaXplIG91dHB1dF91bml0IGNfZl9wcm9jcG9pbnRlciBpZWVlX2FyaXRobWV0aWMgaWVlZV9zdXBwb3J0X3VuZGVyZmxvd19jb250cm9sICcgK1xuICAgICAgJ2llZWVfZ2V0X3VuZGVyZmxvd19tb2RlIGllZWVfc2V0X3VuZGVyZmxvd19tb2RlIG5ld3VuaXQgY29udGlndW91cyByZWN1cnNpdmUgJyArXG4gICAgICAncGFkIHBvc2l0aW9uIGFjdGlvbiBkZWxpbSByZWFkd3JpdGUgZW9yIGFkdmFuY2Ugbm1sIGludGVyZmFjZSBwcm9jZWR1cmUgbmFtZWxpc3QgaW5jbHVkZSBzZXF1ZW5jZSBlbGVtZW50YWwgcHVyZSAnICtcbiAgICAgICdpbnRlZ2VyIHJlYWwgY2hhcmFjdGVyIGNvbXBsZXggbG9naWNhbCBkaW1lbnNpb24gYWxsb2NhdGFibGV8MTAgcGFyYW1ldGVyICcgK1xuICAgICAgJ2V4dGVybmFsIGltcGxpY2l0fDEwIG5vbmUgZG91YmxlIHByZWNpc2lvbiBhc3NpZ24gaW50ZW50IG9wdGlvbmFsIHBvaW50ZXIgJyArXG4gICAgICAndGFyZ2V0IGluIG91dCBjb21tb24gZXF1aXZhbGVuY2UgZGF0YScsXG4gICAgYnVpbHRfaW46ICdhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50ICcgK1xuICAgICAgJ2Rsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgJyArXG4gICAgICAnYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hICcgK1xuICAgICAgJ2lxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgJyArXG4gICAgICAncW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgJyArXG4gICAgICAnbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgJyArXG4gICAgICAnYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgJyArXG4gICAgICAnZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCAnICtcbiAgICAgICdtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0ICcgK1xuICAgICAgJ3JhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kICcgK1xuICAgICAgJ3NldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgJyArXG4gICAgICAnZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kICcgK1xuICAgICAgJ2llZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgJyArXG4gICAgICAnaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mJyAgK1xuICAgICAgJ2Fjb3NoIGFzaW5oIGF0YW5oIGJlc3NlbF9qMCBiZXNzZWxfajEgYmVzc2VsX2puIGJlc3NlbF95MCBiZXNzZWxfeTEgYmVzc2VsX3luIGVyZiBlcmZjIGVyZmNfc2NhbGVkIGdhbW1hIGxvZ19nYW1tYSBoeXBvdCBub3JtMiAnICtcbiAgICAgICdhdG9taWNfZGVmaW5lIGF0b21pY19yZWYgZXhlY3V0ZV9jb21tYW5kX2xpbmUgbGVhZHogdHJhaWx6IHN0b3JhZ2Vfc2l6ZSBtZXJnZV9iaXRzICcgK1xuICAgICAgJ2JnZSBiZ3QgYmxlIGJsdCBkc2hpZnRsIGRzaGlmdHIgZmluZGxvYyBpYWxsIGlhbnkgaXBhcml0eSBpbWFnZV9pbmRleCBsY29ib3VuZCB1Y29ib3VuZCBtYXNrbCBtYXNrciAnICtcbiAgICAgICdudW1faW1hZ2VzIHBhcml0eSBwb3BjbnQgcG9wcGFyIHNoaWZ0YSBzaGlmdGwgc2hpZnRyIHRoaXNfaW1hZ2UnXG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbJ2Y5MCcsICdmOTUnXSxcbiAgICBrZXl3b3JkczogRl9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ3N0cmluZycsIHJlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtJyxcbiAgICAgICAgaWxsZWdhbDogJ1skez1cXFxcbl0nLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCBQQVJBTVNdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCchJywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnKD89XFxcXGJ8XFxcXCt8XFxcXC18XFxcXC4pKD89XFxcXC5cXFxcZHxcXFxcZCkoPzpcXFxcZCspPyg/OlxcXFwuP1xcXFxkKikoPzpbZGVdWystXT9cXFxcZCspP1xcXFxiXFxcXC4/JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFRZUEVQQVJBTSA9IHtcbiAgICBiZWdpbjogJzwnLCBlbmQ6ICc+JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAvJ1thLXpBLVowLTlfXSsvfSlcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2ZzJ10sXG4gICAga2V5d29yZHM6XG4gICAgICAnYWJzdHJhY3QgYW5kIGFzIGFzc2VydCBiYXNlIGJlZ2luIGNsYXNzIGRlZmF1bHQgZGVsZWdhdGUgZG8gZG9uZSAnICtcbiAgICAgICdkb3duY2FzdCBkb3dudG8gZWxpZiBlbHNlIGVuZCBleGNlcHRpb24gZXh0ZXJuIGZhbHNlIGZpbmFsbHkgZm9yICcgK1xuICAgICAgJ2Z1biBmdW5jdGlvbiBnbG9iYWwgaWYgaW4gaW5oZXJpdCBpbmxpbmUgaW50ZXJmYWNlIGludGVybmFsIGxhenkgbGV0ICcgK1xuICAgICAgJ21hdGNoIG1lbWJlciBtb2R1bGUgbXV0YWJsZSBuYW1lc3BhY2UgbmV3IG51bGwgb2Ygb3BlbiBvciAnICtcbiAgICAgICdvdmVycmlkZSBwcml2YXRlIHB1YmxpYyByZWMgcmV0dXJuIHNpZyBzdGF0aWMgc3RydWN0IHRoZW4gdG8gJyArXG4gICAgICAndHJ1ZSB0cnkgdHlwZSB1cGNhc3QgdXNlIHZhbCB2b2lkIHdoZW4gd2hpbGUgd2l0aCB5aWVsZCcsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgLy8gbW9uYWQgYnVpbGRlciBrZXl3b3JkcyAobWF0Y2hlcyBiZWZvcmUgbm9uLWJhbmcga3dzKVxuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46IC9cXGIoeWllbGR8cmV0dXJufGxldHxkbykhL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdAXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdcXFxcKFxcXFwqJywgJ1xcXFwqXFxcXCknKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAndHlwZScsIGVuZDogJ1xcXFwofD18JCcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAgVFlQRVBBUkFNXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ1xcXFxbPCcsIGVuZDogJz5cXFxcXScsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXEIoXFwnW0EtWmEtel0pXFxcXGInLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAgJ2tleXdvcmQnOlxuICAgICAgJ2Fib3J0IGFjcm9ueW0gYWNyb255bXMgYWxpYXMgYWxsIGFuZCBhc3NpZ24gYmluYXJ5IGNhcmQgZGlhZyBkaXNwbGF5ICcgK1xuICAgICAgJ2Vsc2UgZXEgZmlsZSBmaWxlcyBmb3IgZnJlZSBnZSBndCBpZiBpbnRlZ2VyIGxlIGxvb3AgbHQgbWF4aW1pemluZyAnICtcbiAgICAgICdtaW5pbWl6aW5nIG1vZGVsIG1vZGVscyBuZSBuZWdhdGl2ZSBubyBub3Qgb3B0aW9uIG9wdGlvbnMgb3Igb3JkICcgK1xuICAgICAgJ3Bvc2l0aXZlIHByb2QgcHV0IHB1dHBhZ2UgcHV0dGwgcmVwZWF0IHNhbWVhcyBzZW1pY29udCBzZW1paW50IHNtYXggJyArXG4gICAgICAnc21pbiBzb2x2ZSBzb3MxIHNvczIgc3VtIHN5c3RlbSB0YWJsZSB0aGVuIHVudGlsIHVzaW5nIHdoaWxlIHhvciB5ZXMnLFxuICAgICdsaXRlcmFsJzogJ2VwcyBpbmYgbmEnLFxuICAgICdidWlsdC1pbic6XG4gICAgICAnYWJzIGFyY2NvcyBhcmNzaW4gYXJjdGFuIGFyY3RhbjIgQmV0YSBiZXRhUmVnIGJpbm9taWFsIGNlaWwgY2VudHJvcHkgJyArXG4gICAgICAnY29zIGNvc2ggY3ZQb3dlciBkaXYgZGl2MCBlRGlzdCBlbnRyb3B5IGVycm9yZiBleGVjU2VlZCBleHAgZmFjdCAnICtcbiAgICAgICdmbG9vciBmcmFjIGdhbW1hIGdhbW1hUmVnIGxvZyBsb2dCZXRhIGxvZ0dhbW1hIGxvZzEwIGxvZzIgbWFwVmFsIG1heCAnICtcbiAgICAgICdtaW4gbW9kIG5jcENNIG5jcEYgbmNwVlVwb3cgbmNwVlVzaW4gbm9ybWFsIHBpIHBvbHkgcG93ZXIgJyArXG4gICAgICAncmFuZEJpbm9taWFsIHJhbmRMaW5lYXIgcmFuZFRyaWFuZ2xlIHJvdW5kIHJQb3dlciBzaWdtb2lkIHNpZ24gJyArXG4gICAgICAnc2lnblBvd2VyIHNpbiBzaW5oIHNsZXhwIHNsbG9nMTAgc2xyZWMgc3FleHAgc3Fsb2cxMCBzcXIgc3FyZWMgc3FydCAnICtcbiAgICAgICd0YW4gdGFuaCB0cnVuYyB1bmlmb3JtIHVuaWZvcm1JbnQgdmNQb3dlciBib29sX2FuZCBib29sX2VxdiBib29sX2ltcCAnICtcbiAgICAgICdib29sX25vdCBib29sX29yIGJvb2xfeG9yIGlmVGhlbiByZWxfZXEgcmVsX2dlIHJlbF9ndCByZWxfbGUgcmVsX2x0ICcgK1xuICAgICAgJ3JlbF9uZSBnZGF5IGdkb3cgZ2hvdXIgZ2xlYXAgZ21pbGxpc2VjIGdtaW51dGUgZ21vbnRoIGdzZWNvbmQgZ3llYXIgJyArXG4gICAgICAnamRhdGUgam5vdyBqc3RhcnQganRpbWUgZXJyb3JMZXZlbCBleGVjRXJyb3IgZ2Ftc1JlbGVhc2UgZ2Ftc1ZlcnNpb24gJyArXG4gICAgICAnaGFuZGxlQ29sbGVjdCBoYW5kbGVEZWxldGUgaGFuZGxlU3RhdHVzIGhhbmRsZVN1Ym1pdCBoZWFwRnJlZSAnICtcbiAgICAgICdoZWFwTGltaXQgaGVhcFNpemUgam9iSGFuZGxlIGpvYktpbGwgam9iU3RhdHVzIGpvYlRlcm1pbmF0ZSAnICtcbiAgICAgICdsaWNlbnNlTGV2ZWwgbGljZW5zZVN0YXR1cyBtYXhFeGVjRXJyb3Igc2xlZXAgdGltZUNsb3NlIHRpbWVDb21wICcgK1xuICAgICAgJ3RpbWVFbGFwc2VkIHRpbWVFeGVjIHRpbWVTdGFydCdcbiAgfTtcbiAgdmFyIFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgfTtcbiAgdmFyIFNZTUJPTFMgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXFw9W2xnZW54Y109L30sXG4gICAgICB7YmVnaW46IC9cXCQvfSxcbiAgICBdXG4gIH07XG4gIHZhciBRU1RSID0geyAvLyBPbmUtbGluZSBxdW90ZWQgY29tbWVudCBzdHJpbmdcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFwnJywgZW5kOiAnXFwnJ30sXG4gICAgICB7YmVnaW46ICdcIicsIGVuZDogJ1wiJ30sXG4gICAgXSxcbiAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICB9O1xuICB2YXIgQVNTSUdOTUVOVCA9IHtcbiAgICBiZWdpbjogJy8nLFxuICAgIGVuZDogJy8nLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgUVNUUixcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgIF0sXG4gIH07XG4gIHZhciBERVNDVEVYVCA9IHsgLy8gUGFyYW1ldGVyL3NldC92YXJpYWJsZSBkZXNjcmlwdGlvbiB0ZXh0XG4gICAgYmVnaW46IC9bYS16XVthLXowLTlfXSooXFwoW2EtejAtOV8sIF0qXFwpKT9bIFxcdF0rLyxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgZW5kOiAnJCcsXG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFFTVFIsXG4gICAgICBBU1NJR05NRU5ULFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46IC8oWyBdKlthLXowLTkmIyo9P0A+XFxcXDw6XFwtLCgpJFxcW1xcXV8ue30hKyVeXSspKy8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydnbXMnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKC9eXFwkb250ZXh0LywgL15cXCRvZmZ0ZXh0LyksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15cXFxcJFthLXowLTldKycsXG4gICAgICAgIGVuZDogJyQnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLWtleXdvcmQnLFxuICAgICAgICAgICAgYmVnaW46ICdeXFxcXCRbYS16MC05XSsnLFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXlxcXFwqJywgJyQnKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgLy8gRGVjbGFyYXRpb25zXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6XG4gICAgICAgICAgJ3NldCBzZXRzIHBhcmFtZXRlciBwYXJhbWV0ZXJzIHZhcmlhYmxlIHZhcmlhYmxlcyAnICtcbiAgICAgICAgICAnc2NhbGFyIHNjYWxhcnMgZXF1YXRpb24gZXF1YXRpb25zJyxcbiAgICAgICAgZW5kOiAnOycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXConLCAnJCcpLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIEFTU0lHTk1FTlQsXG4gICAgICAgICAgREVTQ1RFWFQsXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IC8vIHRhYmxlIGVudmlyb25tZW50XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd0YWJsZScsXG4gICAgICAgIGVuZDogJzsnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IC8vIHRhYmxlIGhlYWRlciByb3dcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICd0YWJsZScsXG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbREVTQ1RFWFRdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXConLCAnJCcpLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAvLyBUYWJsZSBkb2VzIG5vdCBjb250YWluIERFU0NURVhUIG9yIEFTU0lHTk1FTlRcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb25zXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46IC9eW2Etel1bYS16MC05XyxcXC0rJyAoKSRdK1xcLnsyfS8sXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7IC8vIEZ1bmN0aW9uIHRpdGxlXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXlthLXowLTlfXSsvLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBQQVJBTVMsXG4gICAgICAgICAgICAgIFNZTUJPTFMsXG4gICAgICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIFNZTUJPTFMsXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6ICdhbmQgYm9vbCBicmVhayBjYWxsIGNhbGxleGUgY2hlY2tpbnRlcnJ1cHQgY2xlYXIgY2xlYXJnIGNsb3NlYWxsIGNscyBjb21sb2cgY29tcGlsZSAnICtcbiAgICAgICAgICAgICAgJ2NvbnRpbnVlIGNyZWF0ZSBkZWJ1ZyBkZWNsYXJlIGRlbGV0ZSBkaXNhYmxlIGRsaWJyYXJ5IGRsbGNhbGwgZG8gZG9zIGVkIGVkaXQgZWxzZSAnICtcbiAgICAgICAgICAgICAgJ2Vsc2VpZiBlbmFibGUgZW5kIGVuZGZvciBlbmRpZiBlbmRwIGVuZG8gZXJyb3Jsb2cgZXJyb3Jsb2dhdCBleHByIGV4dGVybmFsIGZuICcgK1xuICAgICAgICAgICAgICAnZm9yIGZvcm1hdCBnb3RvIGdvc3ViIGdyYXBoIGlmIGtleXdvcmQgbGV0IGxpYiBsaWJyYXJ5IGxpbmUgbG9hZCBsb2FkYXJyYXkgbG9hZGV4ZSAnICtcbiAgICAgICAgICAgICAgJ2xvYWRmIGxvYWRrIGxvYWRtIGxvYWRwIGxvYWRzIGxvYWR4IGxvY2FsIGxvY2F0ZSBsb29wbmV4dGluZGV4IGxwcmludCBscHdpZHRoIGxzaG93ICcgK1xuICAgICAgICAgICAgICAnbWF0cml4IG1zeW0gbmRwY2xleCBuZXcgbm90IG9wZW4gb3Igb3V0cHV0IG91dHdpZHRoIHBsb3QgcGxvdHN5bSBwb3AgcHJjc24gcHJpbnQgJyArXG4gICAgICAgICAgICAgICdwcmludGRvcyBwcm9jIHB1c2ggcmV0cCByZXR1cm4gcm5kY29uIHJuZG1vZCBybmRtdWx0IHJuZHNlZWQgcnVuIHNhdmUgc2F2ZWFsbCBzY3JlZW4gJyArXG4gICAgICAgICAgICAgICdzY3JvbGwgc2V0YXJyYXkgc2hvdyBzcGFyc2Ugc3RvcCBzdHJpbmcgc3RydWN0IHN5c3RlbSB0cmFjZSB0cmFwIHRocmVhZGZvciAnICtcbiAgICAgICAgICAgICAgJ3RocmVhZGVuZGZvciB0aHJlYWRiZWdpbiB0aHJlYWRqb2luIHRocmVhZHN0YXQgdGhyZWFkZW5kIHVudGlsIHVzZSB3aGlsZSB3aW5wcmludCcsXG4gICAgYnVpbHRfaW46ICdhYnMgYWNmIGFjb25jYXQgYWV5ZSBhbWF4IGFtZWFuIEFtZXJpY2FuQmlub21DYWxsIEFtZXJpY2FuQmlub21DYWxsX0dyZWVrcyBBbWVyaWNhbkJpbm9tQ2FsbF9JbXBWb2wgJyArXG4gICAgICAgICAgICAgICdBbWVyaWNhbkJpbm9tUHV0IEFtZXJpY2FuQmlub21QdXRfR3JlZWtzIEFtZXJpY2FuQmlub21QdXRfSW1wVm9sIEFtZXJpY2FuQlNDYWxsIEFtZXJpY2FuQlNDYWxsX0dyZWVrcyAnICtcbiAgICAgICAgICAgICAgJ0FtZXJpY2FuQlNDYWxsX0ltcFZvbCBBbWVyaWNhbkJTUHV0IEFtZXJpY2FuQlNQdXRfR3JlZWtzIEFtZXJpY2FuQlNQdXRfSW1wVm9sIGFtaW4gYW11bHQgYW5ub3RhdGlvbkdldERlZmF1bHRzICcgK1xuICAgICAgICAgICAgICAnYW5ub3RhdGlvblNldEJrZCBhbm5vdGF0aW9uU2V0Rm9udCBhbm5vdGF0aW9uU2V0TGluZUNvbG9yIGFubm90YXRpb25TZXRMaW5lU3R5bGUgYW5ub3RhdGlvblNldExpbmVUaGlja25lc3MgJyArXG4gICAgICAgICAgICAgICdhbm51YWxUcmFkaW5nRGF5cyBhcmNjb3MgYXJjc2luIGFyZXNoYXBlIGFycmF5YWxsb2MgYXJyYXlpbmRleCBhcnJheWluaXQgYXJyYXl0b21hdCBhc2NpaWxvYWQgYXNjbGFiZWwgYXN0ZCAnICtcbiAgICAgICAgICAgICAgJ2FzdGRzIGFzdW0gYXRhbiBhdGFuMiBhdHJhbnNwb3NlIGF4bWFyZ2luIGJhbGFuY2UgYmFuZCBiYW5kY2hvbCBiYW5kY2hvbHNvbCBiYW5kbHRzb2wgYmFuZHJ2IGJhbmRzb2xwZCBiYXIgJyArXG4gICAgICAgICAgICAgICdiYXNlMTAgYmVnd2luZCBiZXNzZWxqIGJlc3NlbHkgYmV0YSBib3ggYm94Y294IGNkZkJldGEgY2RmQmV0YUludiBjZGZCaW5vbWlhbCBjZGZCaW5vbWlhbEludiBjZGZCdm4gY2RmQnZuMiAnICtcbiAgICAgICAgICAgICAgJ2NkZkJ2bjJlIGNkZkNhdWNoeSBjZGZDYXVjaHlJbnYgY2RmQ2hpYyBjZGZDaGlpIGNkZkNoaW5jIGNkZkNoaW5jSW52IGNkZkV4cCBjZGZFeHBJbnYgY2RmRmMgY2RmRm5jIGNkZkZuY0ludiAnICtcbiAgICAgICAgICAgICAgJ2NkZkdhbSBjZGZHZW5QYXJldG8gY2RmSHlwZXJHZW8gY2RmTGFwbGFjZSBjZGZMYXBsYWNlSW52IGNkZkxvZ2lzdGljIGNkZkxvZ2lzdGljSW52IGNkZm1Db250cm9sQ3JlYXRlIGNkZk12biAnICtcbiAgICAgICAgICAgICAgJ2NkZk12bjJlIGNkZk12bmNlIGNkZk12bmUgY2RmTXZ0MmUgY2RmTXZ0Y2UgY2RmTXZ0ZSBjZGZOIGNkZk4yIGNkZk5jIGNkZk5lZ0Jpbm9taWFsIGNkZk5lZ0Jpbm9taWFsSW52IGNkZk5pICcgK1xuICAgICAgICAgICAgICAnY2RmUG9pc3NvbiBjZGZQb2lzc29uSW52IGNkZlJheWxlaWdoIGNkZlJheWxlaWdoSW52IGNkZlRjIGNkZlRjaSBjZGZUbmMgY2RmVHZuIGNkZldlaWJ1bGwgY2RmV2VpYnVsbEludiBjZGlyICcgK1xuICAgICAgICAgICAgICAnY2VpbCBDaGFuZ2VEaXIgY2hkaXIgY2hpQmFyU3F1YXJlIGNob2wgY2hvbGRuIGNob2xzb2wgY2hvbHVwIGNocnMgY2xvc2UgY29kZSBjb2xzIGNvbHNmIGNvbWJpbmF0ZSBjb21iaW5hdGVkICcgK1xuICAgICAgICAgICAgICAnY29tcGxleCBjb24gY29uZCBjb25qIGNvbnMgQ29uU2NvcmUgY29udG91ciBjb252IGNvbnZlcnRzYXRvc3RyIGNvbnZlcnRzdHJ0b3NhIGNvcnJtIGNvcnJtcyBjb3JydmMgY29ycnggY29ycnhzICcgK1xuICAgICAgICAgICAgICAnY29zIGNvc2ggY291bnRzIGNvdW50d3RzIGNyb3NzcHJkIGNyb3V0IGNyb3V0cCBjc3Jjb2wgY3NybGluIGNzdlJlYWRNIGNzdlJlYWRTQSBjdW1wcm9kYyBjdW1zdW1jIGN1cnZlIGN2dG9zICcgK1xuICAgICAgICAgICAgICAnZGF0YWNyZWF0ZSBkYXRhY3JlYXRlY29tcGxleCBkYXRhbGlzdCBkYXRhbG9hZCBkYXRhbG9vcCBkYXRhb3BlbiBkYXRhc2F2ZSBkYXRlIGRhdGVzdHIgZGF0ZXN0cmluZyBkYXRlc3RyeW1kICcgK1xuICAgICAgICAgICAgICAnZGF5aW55ciBkYXlvZndlZWsgZGJBZGREYXRhYmFzZSBkYkNsb3NlIGRiQ29tbWl0IGRiQ3JlYXRlUXVlcnkgZGJFeGVjUXVlcnkgZGJHZXRDb25uZWN0T3B0aW9ucyBkYkdldERhdGFiYXNlTmFtZSAnICtcbiAgICAgICAgICAgICAgJ2RiR2V0RHJpdmVyTmFtZSBkYkdldERyaXZlcnMgZGJHZXRIb3N0TmFtZSBkYkdldExhc3RFcnJvck51bSBkYkdldExhc3RFcnJvclRleHQgZGJHZXROdW1lcmljYWxQcmVjUG9saWN5ICcgK1xuICAgICAgICAgICAgICAnZGJHZXRQYXNzd29yZCBkYkdldFBvcnQgZGJHZXRUYWJsZUhlYWRlcnMgZGJHZXRUYWJsZXMgZGJHZXRVc2VyTmFtZSBkYkhhc0ZlYXR1cmUgZGJJc0RyaXZlckF2YWlsYWJsZSBkYklzT3BlbiAnICtcbiAgICAgICAgICAgICAgJ2RiSXNPcGVuRXJyb3IgZGJPcGVuIGRiUXVlcnlCaW5kVmFsdWUgZGJRdWVyeUNsZWFyIGRiUXVlcnlDb2xzIGRiUXVlcnlFeGVjUHJlcGFyZWQgZGJRdWVyeUZldGNoQWxsTSBkYlF1ZXJ5RmV0Y2hBbGxTQSAnICtcbiAgICAgICAgICAgICAgJ2RiUXVlcnlGZXRjaE9uZU0gZGJRdWVyeUZldGNoT25lU0EgZGJRdWVyeUZpbmlzaCBkYlF1ZXJ5R2V0Qm91bmRWYWx1ZSBkYlF1ZXJ5R2V0Qm91bmRWYWx1ZXMgZGJRdWVyeUdldEZpZWxkICcgK1xuICAgICAgICAgICAgICAnZGJRdWVyeUdldExhc3RFcnJvck51bSBkYlF1ZXJ5R2V0TGFzdEVycm9yVGV4dCBkYlF1ZXJ5R2V0TGFzdEluc2VydElEIGRiUXVlcnlHZXRMYXN0UXVlcnkgZGJRdWVyeUdldFBvc2l0aW9uICcgK1xuICAgICAgICAgICAgICAnZGJRdWVyeUlzQWN0aXZlIGRiUXVlcnlJc0ZvcndhcmRPbmx5IGRiUXVlcnlJc051bGwgZGJRdWVyeUlzU2VsZWN0IGRiUXVlcnlJc1ZhbGlkIGRiUXVlcnlQcmVwYXJlIGRiUXVlcnlSb3dzICcgK1xuICAgICAgICAgICAgICAnZGJRdWVyeVNlZWsgZGJRdWVyeVNlZWtGaXJzdCBkYlF1ZXJ5U2Vla0xhc3QgZGJRdWVyeVNlZWtOZXh0IGRiUXVlcnlTZWVrUHJldmlvdXMgZGJRdWVyeVNldEZvcndhcmRPbmx5ICcgK1xuICAgICAgICAgICAgICAnZGJSZW1vdmVEYXRhYmFzZSBkYlJvbGxiYWNrIGRiU2V0Q29ubmVjdE9wdGlvbnMgZGJTZXREYXRhYmFzZU5hbWUgZGJTZXRIb3N0TmFtZSBkYlNldE51bWVyaWNhbFByZWNQb2xpY3kgJyArXG4gICAgICAgICAgICAgICdkYlNldFBvcnQgZGJTZXRVc2VyTmFtZSBkYlRyYW5zYWN0aW9uIERlbGV0ZUZpbGUgZGVsaWYgZGVscm93cyBkZW5zZVRvU3AgZGVuc2VUb1NwUkUgZGVuVG9aZXJvIGRlc2lnbiBkZXQgZGV0bCAnICtcbiAgICAgICAgICAgICAgJ2RmZnQgZGZmdGkgZGlhZyBkaWFncnYgZGlnYW1tYSBkb3N3aW4gRE9TV2luQ2xvc2VhbGwgRE9TV2luT3BlbiBkb3RmZXEgZG90ZmVxbXQgZG90ZmdlIGRvdGZnZW10IGRvdGZndCBkb3RmZ3RtdCAnICtcbiAgICAgICAgICAgICAgJ2RvdGZsZSBkb3RmbGVtdCBkb3RmbHQgZG90Zmx0bXQgZG90Zm5lIGRvdGZuZW10IGRyYXcgZHJvcCBkc0NyZWF0ZSBkc3RhdCBkc3RhdG10IGRzdGF0bXRDb250cm9sQ3JlYXRlIGR0ZGF0ZSBkdGRheSAnICtcbiAgICAgICAgICAgICAgJ2R0dGltZSBkdHRvZHR2IGR0dG9zdHIgZHR0b3V0YyBkdHZub3JtYWwgZHR2dG9kdCBkdHZ0b3V0YyBkdW1teSBkdW1teWJyIGR1bW15ZG4gZWlnIGVpZ2ggZWlnaHYgZWlndiBlbGFwc2VkVHJhZGluZ0RheXMgJyArXG4gICAgICAgICAgICAgICdlbmR3aW5kIGVudmdldCBlb2YgZXFTb2x2ZSBlcVNvbHZlbXQgZXFTb2x2ZW10Q29udHJvbENyZWF0ZSBlcVNvbHZlbXRPdXRDcmVhdGUgZXFTb2x2ZXNldCBlcmYgZXJmYyBlcmZjY3BseCBlcmZjcGx4IGVycm9yICcgK1xuICAgICAgICAgICAgICAnZXRkYXlzIGV0aHNlYyBldHN0ciBFdXJvcGVhbkJpbm9tQ2FsbCBFdXJvcGVhbkJpbm9tQ2FsbF9HcmVla3MgRXVyb3BlYW5CaW5vbUNhbGxfSW1wVm9sIEV1cm9wZWFuQmlub21QdXQgJyArXG4gICAgICAgICAgICAgICdFdXJvcGVhbkJpbm9tUHV0X0dyZWVrcyBFdXJvcGVhbkJpbm9tUHV0X0ltcFZvbCBFdXJvcGVhbkJTQ2FsbCBFdXJvcGVhbkJTQ2FsbF9HcmVla3MgRXVyb3BlYW5CU0NhbGxfSW1wVm9sICcgK1xuICAgICAgICAgICAgICAnRXVyb3BlYW5CU1B1dCBFdXJvcGVhbkJTUHV0X0dyZWVrcyBFdXJvcGVhbkJTUHV0X0ltcFZvbCBleGN0c21wbCBleGVjIGV4ZWNiZyBleHAgZXh0ZXJuIGV5ZSBmY2hlY2tlcnIgZmNsZWFyZXJyIGZlcSAnICtcbiAgICAgICAgICAgICAgJ2ZlcW10IGZmbHVzaCBmZnQgZmZ0aSBmZnRtIGZmdG1pIGZmdG4gZmdlIGZnZW10IGZnZXRzIGZnZXRzYSBmZ2V0c2F0IGZnZXRzdCBmZ3QgZmd0bXQgZmlsZWluZm8gZmlsZXNhIGZsZSBmbGVtdCAnICtcbiAgICAgICAgICAgICAgJ2Zsb29yIGZsdCBmbHRtdCBmbW9kIGZuZSBmbmVtdCBmb250cyBmb3BlbiBmb3JtYXRjdiBmb3JtYXRudiBmcHV0cyBmcHV0c3QgZnNlZWsgZnN0cmVycm9yIGZ0ZWxsIGZ0b2N2IGZ0b3MgZnRvc3RyQyAnICtcbiAgICAgICAgICAgICAgJ2dhbW1hIGdhbW1hY3BseCBnYW1tYWlpIGdhdXNzZXQgZ2RhQXBwZW5kIGdkYUNyZWF0ZSBnZGFEU3RhdCBnZGFEU3RhdE1hdCBnZGFHZXRJbmRleCBnZGFHZXROYW1lIGdkYUdldE5hbWVzIGdkYUdldE9yZGVycyAnICtcbiAgICAgICAgICAgICAgJ2dkYUdldFR5cGUgZ2RhR2V0VHlwZXMgZ2RhR2V0VmFySW5mbyBnZGFJc0NwbHggZ2RhTG9hZCBnZGFQYWNrIGdkYVJlYWQgZ2RhUmVhZEJ5SW5kZXggZ2RhUmVhZFNvbWUgZ2RhUmVhZFNwYXJzZSAnICtcbiAgICAgICAgICAgICAgJ2dkYVJlYWRTdHJ1Y3QgZ2RhUmVwb3J0VmFySW5mbyBnZGFTYXZlIGdkYVVwZGF0ZSBnZGFVcGRhdGVBbmRQYWNrIGdkYVZhcnMgZ2RhV3JpdGUgZ2RhV3JpdGUzMiBnZGFXcml0ZVNvbWUgZ2V0YXJyYXkgJyArXG4gICAgICAgICAgICAgICdnZXRkaW1zIGdldGYgZ2V0R0FVU1Nob21lIGdldG1hdHJpeCBnZXRtYXRyaXg0RCBnZXRuYW1lIGdldG5hbWVmIGdldE5leHRUcmFkaW5nRGF5IGdldE5leHRXZWVrRGF5IGdldG5yIGdldG9yZGVycyAnICtcbiAgICAgICAgICAgICAgJ2dldHBhdGggZ2V0UHJldmlvdXNUcmFkaW5nRGF5IGdldFByZXZpb3VzV2Vla0RheSBnZXRSb3cgZ2V0c2NhbGFyM0QgZ2V0c2NhbGFyNEQgZ2V0VHJSb3cgZ2V0d2luZCBnbG0gZ3JhZGNwbHggZ3JhZE1UICcgK1xuICAgICAgICAgICAgICAnZ3JhZE1UbSBncmFkTVRUIGdyYWRNVFRtIGdyYWRwIGdyYXBocHJ0IGdyYXBoc2V0IGhhc2ltYWcgaGVhZGVyIGhlYWRlcm10IGhlc3MgaGVzc01UIGhlc3NNVGcgaGVzc01UZ3cgaGVzc01UbSAnICtcbiAgICAgICAgICAgICAgJ2hlc3NNVG13IGhlc3NNVFQgaGVzc01UVGcgaGVzc01UVGd3IGhlc3NNVFRtIGhlc3NNVHcgaGVzc3AgaGlzdCBoaXN0ZiBoaXN0cCBoc2VjIGltYWcgaW5kY3YgaW5kZXhjYXQgaW5kaWNlcyBpbmRpY2VzMiAnICtcbiAgICAgICAgICAgICAgJ2luZGljZXNmIGluZGljZXNmbiBpbmRudiBpbmRzYXYgaW50ZWdyYXRlMWQgaW50ZWdyYXRlQ29udHJvbENyZWF0ZSBpbnRncmF0MiBpbnRncmF0MyBpbnRocDEgaW50aHAyIGludGhwMyBpbnRocDQgJyArXG4gICAgICAgICAgICAgICdpbnRocENvbnRyb2xDcmVhdGUgaW50cXVhZDEgaW50cXVhZDIgaW50cXVhZDMgaW50cmxlYXYgaW50cmxlYXZzYSBpbnRyc2VjdCBpbnRzaW1wIGludiBpbnZwZCBpbnZzd3AgaXNjcGx4IGlzY3BseGYgJyArXG4gICAgICAgICAgICAgICdpc2RlbiBpc2luZm5hbm1pc3MgaXNtaXNzIGtleSBrZXlhdiBrZXl3IGxhZyBsYWcxIGxhZ24gbGFwRWlnaGIgbGFwRWlnaGkgbGFwRWlnaHZiIGxhcEVpZ2h2aSBsYXBnRWlnIGxhcGdFaWdoIGxhcGdFaWdodiAnICtcbiAgICAgICAgICAgICAgJ2xhcGdFaWd2IGxhcGdTY2h1ciBsYXBnU3ZkY3N0IGxhcGdTdmRzIGxhcGdTdmRzdCBsYXBTdmRjdXN2IGxhcFN2ZHMgbGFwU3ZkdXN2IGxkbHAgbGRsc29sIGxpblNvbHZlIGxpc3R3aXNlIGxuIGxuY2RmYnZuICcgK1xuICAgICAgICAgICAgICAnbG5jZGZidm4yIGxuY2RmbXZuIGxuY2RmbiBsbmNkZm4yIGxuY2RmbmMgbG5mYWN0IGxuZ2FtbWFjcGx4IGxucGRmbXZuIGxucGRmbXZ0IGxucGRmbiBsbnBkZnQgbG9hZGQgbG9hZHN0cnVjdCBsb2Fkd2luZCAnICtcbiAgICAgICAgICAgICAgJ2xvZXNzIGxvZXNzbXQgbG9lc3NtdENvbnRyb2xDcmVhdGUgbG9nIGxvZ2xvZyBsb2d4IGxvZ3kgbG93ZXIgbG93bWF0IGxvd21hdDEgbHRyaXNvbCBsdSBsdXNvbCBtYWNoRXBzaWxvbiBtYWtlIG1ha2V2YXJzICcgK1xuICAgICAgICAgICAgICAnbWFrZXdpbmQgbWFyZ2luIG1hdGFsbG9jIG1hdGluaXQgbWF0dG9hcnJheSBtYXhieXRlcyBtYXhjIG1heGluZGMgbWF4diBtYXh2ZWMgbWJlc3NlbGVpIG1iZXNzZWxlaTAgbWJlc3NlbGVpMSBtYmVzc2VsaSAnICtcbiAgICAgICAgICAgICAgJ21iZXNzZWxpMCBtYmVzc2VsaTEgbWVhbmMgbWVkaWFuIG1lcmdlYnkgbWVyZ2V2YXIgbWluYyBtaW5pbmRjIG1pbnYgbWlzcyBtaXNzZXggbWlzc3J2IG1vbWVudCBtb21lbnRkIG1vdmluZ2F2ZSAnICtcbiAgICAgICAgICAgICAgJ21vdmluZ2F2ZUV4cHdndCBtb3ZpbmdhdmVXZ3QgbmV4dGluZGV4IG5leHRuIG5leHRuZXZuIG5leHR3aW5kIG50b3MgbnVsbCBudWxsMSBudW1Db21iaW5hdGlvbnMgb2xzIG9sc210IG9sc210Q29udHJvbENyZWF0ZSAnICtcbiAgICAgICAgICAgICAgJ29sc3FyIG9sc3FyMiBvbHNxcm10IG9uZXMgb3B0biBvcHRuZXZuIG9ydGggb3V0dHlwIHBhY2YgcGFja2VkVG9TcCBwYWNrciBwYXJzZSBwYXVzZSBwZGZDYXVjaHkgcGRmQ2hpIHBkZkV4cCBwZGZHZW5QYXJldG8gJyArXG4gICAgICAgICAgICAgICdwZGZIeXBlckdlbyBwZGZMYXBsYWNlIHBkZkxvZ2lzdGljIHBkZm4gcGRmUG9pc3NvbiBwZGZSYXlsZWlnaCBwZGZXZWlidWxsIHBpIHBpbnYgcGludm10IHBsb3RBZGRBcnJvdyBwbG90QWRkQmFyIHBsb3RBZGRCb3ggJyArXG4gICAgICAgICAgICAgICdwbG90QWRkSGlzdCBwbG90QWRkSGlzdEYgcGxvdEFkZEhpc3RQIHBsb3RBZGRQb2xhciBwbG90QWRkU2NhdHRlciBwbG90QWRkU2hhcGUgcGxvdEFkZFRleHRib3ggcGxvdEFkZFRTIHBsb3RBZGRYWSBwbG90QXJlYSAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RCYXIgcGxvdEJveCBwbG90Q2xlYXJMYXlvdXQgcGxvdENvbnRvdXIgcGxvdEN1c3RvbUxheW91dCBwbG90R2V0RGVmYXVsdHMgcGxvdEhpc3QgcGxvdEhpc3RGIHBsb3RIaXN0UCBwbG90TGF5b3V0ICcgK1xuICAgICAgICAgICAgICAncGxvdExvZ0xvZyBwbG90TG9nWCBwbG90TG9nWSBwbG90T3BlbldpbmRvdyBwbG90UG9sYXIgcGxvdFNhdmUgcGxvdFNjYXR0ZXIgcGxvdFNldEF4ZXNQZW4gcGxvdFNldEJhciBwbG90U2V0QmFyRmlsbCAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RTZXRCYXJTdGFja2VkIHBsb3RTZXRCa2RDb2xvciBwbG90U2V0RmlsbCBwbG90U2V0R3JpZCBwbG90U2V0TGVnZW5kIHBsb3RTZXRMaW5lQ29sb3IgcGxvdFNldExpbmVTdHlsZSBwbG90U2V0TGluZVN5bWJvbCAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RTZXRMaW5lVGhpY2tuZXNzIHBsb3RTZXROZXdXaW5kb3cgcGxvdFNldFRpdGxlIHBsb3RTZXRXaGljaFlBeGlzIHBsb3RTZXRYQXhpc1Nob3cgcGxvdFNldFhMYWJlbCBwbG90U2V0WFJhbmdlICcgK1xuICAgICAgICAgICAgICAncGxvdFNldFhUaWNJbnRlcnZhbCBwbG90U2V0WFRpY0xhYmVsIHBsb3RTZXRZQXhpc1Nob3cgcGxvdFNldFlMYWJlbCBwbG90U2V0WVJhbmdlIHBsb3RTZXRaQXhpc1Nob3cgcGxvdFNldFpMYWJlbCAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RTdXJmYWNlIHBsb3RUUyBwbG90WFkgcG9sYXIgcG9seWNoYXIgcG9seWV2YWwgcG9seWdhbW1hIHBvbHlpbnQgcG9seW1ha2UgcG9seW1hdCBwb2x5bXJvb3QgcG9seW11bHQgcG9seXJvb3QgJyArXG4gICAgICAgICAgICAgICdwcWd3aW4gcHJldmlvdXNpbmRleCBwcmluY29tcCBwcmludGZtIHByaW50Zm10IHByb2RjIHBzaSBwdXRhcnJheSBwdXRmIHB1dHZhbHMgcHZDcmVhdGUgcHZHZXRJbmRleCBwdkdldFBhck5hbWVzICcgK1xuICAgICAgICAgICAgICAncHZHZXRQYXJWZWN0b3IgcHZMZW5ndGggcHZMaXN0IHB2UGFjayBwdlBhY2tpIHB2UGFja20gcHZQYWNrbWkgcHZQYWNrcyBwdlBhY2tzaSBwdlBhY2tzbSBwdlBhY2tzbWkgcHZQdXRQYXJWZWN0b3IgJyArXG4gICAgICAgICAgICAgICdwdlRlc3QgcHZVbnBhY2sgUU5ld3RvbiBRTmV3dG9ubXQgUU5ld3Rvbm10Q29udHJvbENyZWF0ZSBRTmV3dG9ubXRPdXRDcmVhdGUgUU5ld3RvblNldCBRUHJvZyBRUHJvZ210IFFQcm9nbXRJbkNyZWF0ZSAnICtcbiAgICAgICAgICAgICAgJ3FxciBxcXJlIHFxcmVwIHFyIHFyZSBxcmVwIHFyc29sIHFydHNvbCBxdHlyIHF0eXJlIHF0eXJlcCBxdWFudGlsZSBxdWFudGlsZWQgcXlyIHF5cmUgcXlyZXAgcXogcmFuayByYW5raW5keCByZWFkciAnICtcbiAgICAgICAgICAgICAgJ3JlYWwgcmVjbGFzc2lmeSByZWNsYXNzaWZ5Q3V0cyByZWNvZGUgcmVjc2VyYXIgcmVjc2VyY3AgcmVjc2VycmMgcmVydW4gcmVzY2FsZSByZXNoYXBlIHJldHMgcmV2IHJmZnQgcmZmdGkgcmZmdGlwIHJmZnRuICcgK1xuICAgICAgICAgICAgICAncmZmdG5wIHJmZnRwIHJuZEJlcm5vdWxsaSBybmRCZXRhIHJuZEJpbm9taWFsIHJuZENhdWNoeSBybmRDaGlTcXVhcmUgcm5kQ29uIHJuZENyZWF0ZVN0YXRlIHJuZEV4cCBybmRHYW1tYSBybmRHZW8gcm5kR3VtYmVsICcgK1xuICAgICAgICAgICAgICAncm5kSHlwZXJHZW8gcm5kaSBybmRLTWJldGEgcm5kS01nYW0gcm5kS01pIHJuZEtNbiBybmRLTW5iIHJuZEtNcCBybmRLTXUgcm5kS012bSBybmRMYXBsYWNlIHJuZExDYmV0YSBybmRMQ2dhbSBybmRMQ2kgcm5kTENuICcgK1xuICAgICAgICAgICAgICAncm5kTENuYiBybmRMQ3Agcm5kTEN1IHJuZExDdm0gcm5kTG9nTm9ybSBybmRNVHUgcm5kTVZuIHJuZE1WdCBybmRuIHJuZG5iIHJuZE5lZ0Jpbm9taWFsIHJuZHAgcm5kUG9pc3NvbiBybmRSYXlsZWlnaCAnICtcbiAgICAgICAgICAgICAgJ3JuZFN0YXRlU2tpcCBybmR1IHJuZHZtIHJuZFdlaWJ1bGwgcm5kV2lzaGFydCByb3RhdGVyIHJvdW5kIHJvd3Mgcm93c2YgcnJlZiBzYW1wbGVEYXRhIHNhdG9zdHJDIHNhdmVkIHNhdmVTdHJ1Y3Qgc2F2ZXdpbmQgJyArXG4gICAgICAgICAgICAgICdzY2FsZSBzY2FsZTNkIHNjYWxlcnIgc2NhbGluZm5hbm1pc3Mgc2NhbG1pc3Mgc2NodG9jIHNjaHVyIHNlYXJjaHNvdXJjZXBhdGggc2Vla3Igc2VsZWN0IHNlbGlmIHNlcWEgc2VxbSBzZXRkaWYgc2V0ZGlmc2EgJyArXG4gICAgICAgICAgICAgICdzZXR2YXJzIHNldHZ3cm1vZGUgc2V0d2luZCBzaGVsbCBzaGlmdHIgc2luIHNpbmdsZWluZGV4IHNpbmggc2xlZXAgc29scGQgc29ydGMgc29ydGNjIHNvcnRkIHNvcnRoYyBzb3J0aGNjIHNvcnRpbmQgJyArXG4gICAgICAgICAgICAgICdzb3J0aW5kYyBzb3J0bWMgc29ydHIgc29ydHJjIHNwQmljb25qR3JhZFNvbCBzcENob2wgc3BDb25qR3JhZFNvbCBzcENyZWF0ZSBzcERlbnNlU3VibWF0IHNwRGlhZ1J2TWF0IHNwRWlndiBzcEV5ZSBzcExETCAnICtcbiAgICAgICAgICAgICAgJ3NwbGluZSBzcExVIHNwTnVtTlpFIHNwT25lcyBzcHJlYWRTaGVldFJlYWRNIHNwcmVhZFNoZWV0UmVhZFNBIHNwcmVhZFNoZWV0V3JpdGUgc3BTY2FsZSBzcFN1Ym1hdCBzcFRvRGVuc2Ugc3BUclREZW5zZSAnICtcbiAgICAgICAgICAgICAgJ3NwVFNjYWxhciBzcFplcm9zIHNxcFNvbHZlIHNxcFNvbHZlTVQgc3FwU29sdmVNVENvbnRyb2xDcmVhdGUgc3FwU29sdmVNVGxhZ3JhbmdlQ3JlYXRlIHNxcFNvbHZlTVRvdXRDcmVhdGUgc3FwU29sdmVTZXQgJyArXG4gICAgICAgICAgICAgICdzcXJ0IHN0YXRlbWVudHMgc3RkYyBzdGRzYyBzdG9jdiBzdG9mIHN0cmNvbWJpbmUgc3RyaW5keCBzdHJsZW4gc3RycHV0IHN0cnJpbmR4IHN0cnNlY3Qgc3Ryc3BsaXQgc3Ryc3BsaXRQYWQgc3RydG9kdCAnICtcbiAgICAgICAgICAgICAgJ3N0cnRvZiBzdHJ0b2ZjcGx4IHN0cnRyaW1sIHN0cnRyaW1yIHN0cnRydW5jIHN0cnRydW5jbCBzdHJ0cnVuY3BhZCBzdHJ0cnVuY3Igc3VibWF0IHN1YnNjYXQgc3Vic3R1dGUgc3VidmVjIHN1bWMgc3VtciAnICtcbiAgICAgICAgICAgICAgJ3N1cmZhY2Ugc3ZkIHN2ZDEgc3ZkMiBzdmRjdXN2IHN2ZHMgc3ZkdXN2IHN5c3N0YXRlIHRhYiB0YW4gdGFuaCB0ZW1wbmFtZSB0aHJlYWRCZWdpbiB0aHJlYWRFbmQgdGhyZWFkRW5kRm9yIHRocmVhZEZvciAnICtcbiAgICAgICAgICAgICAgJ3RocmVhZEpvaW4gdGhyZWFkU3RhdCB0aW1lIHRpbWVkdCB0aW1lc3RyIHRpbWV1dGMgdGl0bGUgdGtmMmVwcyB0a2YycHMgdG9jYXJ0IHRvZGF5ZHQgdG9lcGxpdHogdG9rZW4gdG9wb2xhciB0cmFwY2hrICcgK1xuICAgICAgICAgICAgICAndHJpZ2FtbWEgdHJpbXIgdHJ1bmMgdHlwZSB0eXBlY3YgdHlwZWYgdW5pb24gdW5pb25zYSB1bmlxaW5keCB1bmlxaW5keHNhIHVuaXF1ZSB1bmlxdWVzYSB1cG1hdCB1cG1hdDEgdXBwZXIgdXRjdG9kdCAnICtcbiAgICAgICAgICAgICAgJ3V0Y3RvZHR2IHV0cmlzb2wgdmFscyB2YXJDb3ZNUyB2YXJDb3ZYUyB2YXJnZXQgdmFyZ2V0bCB2YXJtYWxsIHZhcm1hcmVzIHZhcnB1dCB2YXJwdXRsIHZhcnR5cGVmIHZjbSB2Y21zIHZjeCB2Y3hzICcgK1xuICAgICAgICAgICAgICAndmVjIHZlY2ggdmVjciB2ZWN0b3IgdmdldCB2aWV3IHZpZXd4eXogdmxpc3Qgdm5hbWVjdiB2b2x1bWUgdnB1dCB2cmVhZCB2dHlwZWN2IHdhaXQgd2FpdGMgd2Fsa2luZGV4IHdoZXJlIHdpbmRvdyAnICtcbiAgICAgICAgICAgICAgJ3dyaXRlciB4bGFiZWwgeGxzR2V0U2hlZXRDb3VudCB4bHNHZXRTaGVldFNpemUgeGxzR2V0U2hlZXRUeXBlcyB4bHNNYWtlUmFuZ2UgeGxzUmVhZE0geGxzUmVhZFNBIHhsc1dyaXRlIHhsc1dyaXRlTSAnICtcbiAgICAgICAgICAgICAgJ3hsc1dyaXRlU0EgeHBuZCB4dGljcyB4eSB4eXogeWxhYmVsIHl0aWNzIHplcm9zIHpldGEgemxhYmVsIHp0aWNzIGNkZkVtcGlyaWNhbCBkb3QgaDVjcmVhdGUgaDVvcGVuIGg1cmVhZCBoNXJlYWRBdHRyaWJ1dGUgJyArXG4gICAgICAgICAgICAgICdoNXdyaXRlIGg1d3JpdGVBdHRyaWJ1dGUgbGRsIHBsb3RBZGRFcnJvckJhciBwbG90QWRkU3VyZmFjZSBwbG90Q0RGRW1waXJpY2FsIHBsb3RTZXRDb2xvcm1hcCBwbG90U2V0Q29udG91ckxhYmVscyAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RTZXRMZWdlbmRGb250IHBsb3RTZXRUZXh0SW50ZXJwcmV0ZXIgcGxvdFNldFhUaWNDb3VudCBwbG90U2V0WVRpY0NvdW50IHBsb3RTZXRaTGV2ZWxzIHBvd2VybSBzdHJqb2luIHN0cnRyaW0gc3lsdmVzdGVyJyxcbiAgICBsaXRlcmFsOiAnREJfQUZURVJfTEFTVF9ST1cgREJfQUxMX1RBQkxFUyBEQl9CQVRDSF9PUEVSQVRJT05TIERCX0JFRk9SRV9GSVJTVF9ST1cgREJfQkxPQiBEQl9FVkVOVF9OT1RJRklDQVRJT05TICcgK1xuICAgICAgICAgICAgICdEQl9GSU5JU0hfUVVFUlkgREJfSElHSF9QUkVDSVNJT04gREJfTEFTVF9JTlNFUlRfSUQgREJfTE9XX1BSRUNJU0lPTl9ET1VCTEUgREJfTE9XX1BSRUNJU0lPTl9JTlQzMiAnICtcbiAgICAgICAgICAgICAnREJfTE9XX1BSRUNJU0lPTl9JTlQ2NCBEQl9MT1dfUFJFQ0lTSU9OX05VTUJFUlMgREJfTVVMVElQTEVfUkVTVUxUX1NFVFMgREJfTkFNRURfUExBQ0VIT0xERVJTICcgK1xuICAgICAgICAgICAgICdEQl9QT1NJVElPTkFMX1BMQUNFSE9MREVSUyBEQl9QUkVQQVJFRF9RVUVSSUVTIERCX1FVRVJZX1NJWkUgREJfU0lNUExFX0xPQ0tJTkcgREJfU1lTVEVNX1RBQkxFUyBEQl9UQUJMRVMgJyArXG4gICAgICAgICAgICAgJ0RCX1RSQU5TQUNUSU9OUyBEQl9VTklDT0RFIERCX1ZJRVdTJ1xuICB9O1xuXG4gIHZhciBQUkVQUk9DRVNTT1IgPVxuICB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICcjJywgZW5kOiAnJCcsXG4gICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2RlZmluZSBkZWZpbmVjc3wxMCB1bmRlZiBpZmRlZiBpZm5kZWYgaWZsaWdodCBpZmRsbGNhbGwgaWZtYWMgaWZvczJ3aW4gaWZ1bml4IGVsc2UgZW5kaWYgbGluZXNvbiBsaW5lc29mZiBzcmNmaWxlIHNyY2xpbmUnfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXFxcXG4vLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbmNsdWRlJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpbmNsdWRlJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHZhciBGVU5DVElPTl9USVRMRSA9IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKD8nO1xuICB2YXIgUEFSU0VfUEFSQU1TID0gW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgXVxuICAgIH1cbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ3NzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSwgLy8gbGFuZ3VhZ2UgaXMgY2FzZS1pbnNlbnNpdGl2ZVxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAnKFxcXFx7WyUjXXxbJSNdXFxcXH0pJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnQCcsICdAJyksXG4gICAgICBQUkVQUk9DRVNTT1IsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAncHJvYyBrZXl3b3JkJyxcbiAgICAgICAgZW5kOiAnOycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogRlVOQ1RJT05fVElUTEUsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV0sXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBQUkVQUk9DRVNTT1JcbiAgICAgICAgXS5jb25jYXQoUEFSU0VfUEFSQU1TKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZm4nLFxuICAgICAgICBlbmQ6ICc7JyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBGVU5DVElPTl9USVRMRSArIGhsanMuSURFTlRfUkUgKyAnXFxcXCk/XFxcXHMqXFxcXD1cXFxccyonLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXS5jb25jYXQoUEFSU0VfUEFSQU1TKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiZXh0ZXJuYWwgKHByb2N8a2V5d29yZHxmbilcXFxccysnLFxuICAgICAgICBlbmQ6ICc7JyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBGVU5DVElPTl9USVRMRSwgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiZXh0ZXJuYWwgKG1hdHJpeHxzdHJpbmd8YXJyYXl8c3BhcnNlIG1hdHJpeHxzdHJ1Y3QgJyArIGhsanMuSURFTlRfUkUgKyAnKVxcXFxzKycsXG4gICAgICAgIGVuZDogJzsnLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgdmFyIEdDT0RFX0lERU5UX1JFID0gJ1tBLVpfXVtBLVowLTlfLl0qJztcbiAgICB2YXIgR0NPREVfQ0xPU0VfUkUgPSAnXFxcXCUnO1xuICAgIHZhciBHQ09ERV9LRVlXT1JEUyA9XG4gICAgICAnSUYgRE8gV0hJTEUgRU5EV0hJTEUgQ0FMTCBFTkRJRiBTVUIgRU5EU1VCIEdPVE8gUkVQRUFUIEVORFJFUEVBVCAnICtcbiAgICAgICdFUSBMVCBHVCBORSBHRSBMRSBPUiBYT1InO1xuICAgIHZhciBHQ09ERV9TVEFSVCA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnKFtPXSkoWzAtOV0rKSdcbiAgICB9O1xuICAgIHZhciBHQ09ERV9DT0RFID0gW1xuICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuQ09NTUVOVCgvXFwoLywgL1xcKS8pLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5DX05VTUJFUl9NT0RFLCB7YmVnaW46ICcoWy0rXT8oWzAtOV0qXFxcXC4/WzAtOV0rXFxcXC4/KSl8JyArIGhsanMuQ19OVU1CRVJfUkV9KSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46ICcoW0ddKShbMC05XStcXFxcLj9bMC05XT8pJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFtNXSkoWzAtOV0rXFxcXC4/WzAtOV0/KSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICBiZWdpbjogJyhWQ3xWU3wjKScsXG4gICAgICAgICAgICBlbmQ6ICcoXFxcXGQrKSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICBiZWdpbjogJyhWWk9GWHxWWk9GWXxWWk9GWiknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKEFUQU58QUJTfEFDT1N8QVNJTnxTSU58Q09TfEVYUHxGSVh8RlVQfFJPVU5EfExOfFRBTikoXFxcXFspJyxcbiAgICAgICAgICAgIGVuZDogJyhbLStdPyhbMC05XSpcXFxcLj9bMC05XStcXFxcLj8pKShcXFxcXSknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdOJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFxXJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhbGlhc2VzOiBbJ25jJ10sXG4gICAgICAgIC8vIFNvbWUgaW1wbGVtZW50YXRpb25zIChDTkMgY29udHJvbHMpIG9mIEctY29kZSBhcmUgaW50ZXJvcGVyYWJsZSB3aXRoIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlIGxldHRlcnMgc2VhbWxlc3NseS5cbiAgICAgICAgLy8gSG93ZXZlciwgbW9zdCBwcmVmZXIgYWxsIHVwcGVyY2FzZSBhbmQgdXBwZXJjYXNlIGlzIGN1c3RvbWFyeS5cbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAgbGV4ZW1lczogR0NPREVfSURFTlRfUkUsXG4gICAgICAgIGtleXdvcmRzOiBHQ09ERV9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogR0NPREVfQ0xPU0VfUkVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBHQ09ERV9TVEFSVFxuICAgICAgICBdLmNvbmNhdChHQ09ERV9DT0RFKVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2ZlYXR1cmUnXSxcbiAgICBrZXl3b3JkczogJ0ZlYXR1cmUgQmFja2dyb3VuZCBBYmlsaXR5IEJ1c2luZXNzXFwgTmVlZCBTY2VuYXJpbyBTY2VuYXJpb3MgU2NlbmFyaW9cXCBPdXRsaW5lIFNjZW5hcmlvXFwgVGVtcGxhdGUgRXhhbXBsZXMgR2l2ZW4gQW5kIFRoZW4gQnV0IFdoZW4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXConLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ0BbXkBcXFxcc10rJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcfCcsIGVuZDogJ1xcXFx8XFxcXHcqJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnW158XSsnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAnPCcsIGVuZDogJz4nXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIFN0YXRlbWVudHNcbiAgICAgICAgJ2JyZWFrIGNvbnRpbnVlIGRpc2NhcmQgZG8gZWxzZSBmb3IgaWYgcmV0dXJuIHdoaWxlIHN3aXRjaCBjYXNlIGRlZmF1bHQgJyArXG4gICAgICAgIC8vIFF1YWxpZmllcnNcbiAgICAgICAgJ2F0dHJpYnV0ZSBiaW5kaW5nIGJ1ZmZlciBjY3cgY2VudHJvaWQgY2VudHJvaWQgdmFyeWluZyBjb2hlcmVudCBjb2x1bW5fbWFqb3IgY29uc3QgY3cgJyArXG4gICAgICAgICdkZXB0aF9hbnkgZGVwdGhfZ3JlYXRlciBkZXB0aF9sZXNzIGRlcHRoX3VuY2hhbmdlZCBlYXJseV9mcmFnbWVudF90ZXN0cyBlcXVhbF9zcGFjaW5nICcgK1xuICAgICAgICAnZmxhdCBmcmFjdGlvbmFsX2V2ZW5fc3BhY2luZyBmcmFjdGlvbmFsX29kZF9zcGFjaW5nIGhpZ2hwIGluIGluZGV4IGlub3V0IGludmFyaWFudCAnICtcbiAgICAgICAgJ2ludm9jYXRpb25zIGlzb2xpbmVzIGxheW91dCBsaW5lX3N0cmlwIGxpbmVzIGxpbmVzX2FkamFjZW5jeSBsb2NhbF9zaXplX3ggbG9jYWxfc2l6ZV95ICcgK1xuICAgICAgICAnbG9jYWxfc2l6ZV96IGxvY2F0aW9uIGxvd3AgbWF4X3ZlcnRpY2VzIG1lZGl1bXAgbm9wZXJzcGVjdGl2ZSBvZmZzZXQgb3JpZ2luX3VwcGVyX2xlZnQgJyArXG4gICAgICAgICdvdXQgcGFja2VkIHBhdGNoIHBpeGVsX2NlbnRlcl9pbnRlZ2VyIHBvaW50X21vZGUgcG9pbnRzIHByZWNpc2UgcHJlY2lzaW9uIHF1YWRzIHIxMWZfZzExZl9iMTBmICcrXG4gICAgICAgICdyMTYgcjE2X3Nub3JtIHIxNmYgcjE2aSByMTZ1aSByMzJmIHIzMmkgcjMydWkgcjggcjhfc25vcm0gcjhpIHI4dWkgcmVhZG9ubHkgcmVzdHJpY3QgJyArXG4gICAgICAgICdyZzE2IHJnMTZfc25vcm0gcmcxNmYgcmcxNmkgcmcxNnVpIHJnMzJmIHJnMzJpIHJnMzJ1aSByZzggcmc4X3Nub3JtIHJnOGkgcmc4dWkgcmdiMTBfYTIgJyArXG4gICAgICAgICdyZ2IxMF9hMnVpIHJnYmExNiByZ2JhMTZfc25vcm0gcmdiYTE2ZiByZ2JhMTZpIHJnYmExNnVpIHJnYmEzMmYgcmdiYTMyaSByZ2JhMzJ1aSByZ2JhOCAnICtcbiAgICAgICAgJ3JnYmE4X3Nub3JtIHJnYmE4aSByZ2JhOHVpIHJvd19tYWpvciBzYW1wbGUgc2hhcmVkIHNtb290aCBzdGQxNDAgc3RkNDMwIHN0cmVhbSB0cmlhbmdsZV9zdHJpcCAnICtcbiAgICAgICAgJ3RyaWFuZ2xlcyB0cmlhbmdsZXNfYWRqYWNlbmN5IHVuaWZvcm0gdmFyeWluZyB2ZXJ0aWNlcyB2b2xhdGlsZSB3cml0ZW9ubHknLFxuICAgICAgdHlwZTpcbiAgICAgICAgJ2F0b21pY191aW50IGJvb2wgYnZlYzIgYnZlYzMgYnZlYzQgZG1hdDIgZG1hdDJ4MiBkbWF0MngzIGRtYXQyeDQgZG1hdDMgZG1hdDN4MiBkbWF0M3gzICcgK1xuICAgICAgICAnZG1hdDN4NCBkbWF0NCBkbWF0NHgyIGRtYXQ0eDMgZG1hdDR4NCBkb3VibGUgZHZlYzIgZHZlYzMgZHZlYzQgZmxvYXQgaWltYWdlMUQgaWltYWdlMURBcnJheSAnICtcbiAgICAgICAgJ2lpbWFnZTJEIGlpbWFnZTJEQXJyYXkgaWltYWdlMkRNUyBpaW1hZ2UyRE1TQXJyYXkgaWltYWdlMkRSZWN0IGlpbWFnZTNEIGlpbWFnZUJ1ZmZlcicgK1xuICAgICAgICAnaWltYWdlQ3ViZSBpaW1hZ2VDdWJlQXJyYXkgaW1hZ2UxRCBpbWFnZTFEQXJyYXkgaW1hZ2UyRCBpbWFnZTJEQXJyYXkgaW1hZ2UyRE1TIGltYWdlMkRNU0FycmF5ICcgK1xuICAgICAgICAnaW1hZ2UyRFJlY3QgaW1hZ2UzRCBpbWFnZUJ1ZmZlciBpbWFnZUN1YmUgaW1hZ2VDdWJlQXJyYXkgaW50IGlzYW1wbGVyMUQgaXNhbXBsZXIxREFycmF5ICcgK1xuICAgICAgICAnaXNhbXBsZXIyRCBpc2FtcGxlcjJEQXJyYXkgaXNhbXBsZXIyRE1TIGlzYW1wbGVyMkRNU0FycmF5IGlzYW1wbGVyMkRSZWN0IGlzYW1wbGVyM0QgJyArXG4gICAgICAgICdpc2FtcGxlckJ1ZmZlciBpc2FtcGxlckN1YmUgaXNhbXBsZXJDdWJlQXJyYXkgaXZlYzIgaXZlYzMgaXZlYzQgbWF0MiBtYXQyeDIgbWF0MngzICcgK1xuICAgICAgICAnbWF0Mng0IG1hdDMgbWF0M3gyIG1hdDN4MyBtYXQzeDQgbWF0NCBtYXQ0eDIgbWF0NHgzIG1hdDR4NCBzYW1wbGVyMUQgc2FtcGxlcjFEQXJyYXkgJyArXG4gICAgICAgICdzYW1wbGVyMURBcnJheVNoYWRvdyBzYW1wbGVyMURTaGFkb3cgc2FtcGxlcjJEIHNhbXBsZXIyREFycmF5IHNhbXBsZXIyREFycmF5U2hhZG93ICcgK1xuICAgICAgICAnc2FtcGxlcjJETVMgc2FtcGxlcjJETVNBcnJheSBzYW1wbGVyMkRSZWN0IHNhbXBsZXIyRFJlY3RTaGFkb3cgc2FtcGxlcjJEU2hhZG93IHNhbXBsZXIzRCAnICtcbiAgICAgICAgJ3NhbXBsZXJCdWZmZXIgc2FtcGxlckN1YmUgc2FtcGxlckN1YmVBcnJheSBzYW1wbGVyQ3ViZUFycmF5U2hhZG93IHNhbXBsZXJDdWJlU2hhZG93ICcgK1xuICAgICAgICAnaW1hZ2UxRCB1aW1hZ2UxREFycmF5IHVpbWFnZTJEIHVpbWFnZTJEQXJyYXkgdWltYWdlMkRNUyB1aW1hZ2UyRE1TQXJyYXkgdWltYWdlMkRSZWN0ICcgK1xuICAgICAgICAndWltYWdlM0QgdWltYWdlQnVmZmVyIHVpbWFnZUN1YmUgdWltYWdlQ3ViZUFycmF5IHVpbnQgdXNhbXBsZXIxRCB1c2FtcGxlcjFEQXJyYXkgJyArXG4gICAgICAgICd1c2FtcGxlcjJEIHVzYW1wbGVyMkRBcnJheSB1c2FtcGxlcjJETVMgdXNhbXBsZXIyRE1TQXJyYXkgdXNhbXBsZXIyRFJlY3QgdXNhbXBsZXIzRCAnICtcbiAgICAgICAgJ3NhbXBsZXJCdWZmZXIgdXNhbXBsZXJDdWJlIHVzYW1wbGVyQ3ViZUFycmF5IHV2ZWMyIHV2ZWMzIHV2ZWM0IHZlYzIgdmVjMyB2ZWM0IHZvaWQnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vIENvbnN0YW50c1xuICAgICAgICAnZ2xfTWF4QXRvbWljQ291bnRlckJpbmRpbmdzIGdsX01heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplIGdsX01heENsaXBEaXN0YW5jZXMgZ2xfTWF4Q2xpcFBsYW5lcyAnICtcbiAgICAgICAgJ2dsX01heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4Q29tYmluZWRBdG9taWNDb3VudGVycyBnbF9NYXhDb21iaW5lZEltYWdlVW5pZm9ybXMgJyArXG4gICAgICAgICdnbF9NYXhDb21iaW5lZEltYWdlVW5pdHNBbmRGcmFnbWVudE91dHB1dHMgZ2xfTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyBnbF9NYXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZlcnMgJyArXG4gICAgICAgICdnbF9NYXhDb21wdXRlQXRvbWljQ291bnRlcnMgZ2xfTWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMgZ2xfTWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4Q29tcHV0ZVVuaWZvcm1Db21wb25lbnRzIGdsX01heENvbXB1dGVXb3JrR3JvdXBDb3VudCBnbF9NYXhDb21wdXRlV29ya0dyb3VwU2l6ZSAnICtcbiAgICAgICAgJ2dsX01heERyYXdCdWZmZXJzIGdsX01heEZyYWdtZW50QXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4RnJhZ21lbnRBdG9taWNDb3VudGVycyAnICtcbiAgICAgICAgJ2dsX01heEZyYWdtZW50SW1hZ2VVbmlmb3JtcyBnbF9NYXhGcmFnbWVudElucHV0Q29tcG9uZW50cyBnbF9NYXhGcmFnbWVudElucHV0VmVjdG9ycyAnICtcbiAgICAgICAgJ2dsX01heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMgZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyBnbF9NYXhHZW9tZXRyeUF0b21pY0NvdW50ZXJCdWZmZXJzICcgK1xuICAgICAgICAnZ2xfTWF4R2VvbWV0cnlBdG9taWNDb3VudGVycyBnbF9NYXhHZW9tZXRyeUltYWdlVW5pZm9ybXMgZ2xfTWF4R2VvbWV0cnlJbnB1dENvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhHZW9tZXRyeU91dHB1dENvbXBvbmVudHMgZ2xfTWF4R2VvbWV0cnlPdXRwdXRWZXJ0aWNlcyBnbF9NYXhHZW9tZXRyeVRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4R2VvbWV0cnlUb3RhbE91dHB1dENvbXBvbmVudHMgZ2xfTWF4R2VvbWV0cnlVbmlmb3JtQ29tcG9uZW50cyBnbF9NYXhHZW9tZXRyeVZhcnlpbmdDb21wb25lbnRzICcgK1xuICAgICAgICAnZ2xfTWF4SW1hZ2VTYW1wbGVzIGdsX01heEltYWdlVW5pdHMgZ2xfTWF4TGlnaHRzIGdsX01heFBhdGNoVmVydGljZXMgZ2xfTWF4UHJvZ3JhbVRleGVsT2Zmc2V0ICcgK1xuICAgICAgICAnZ2xfTWF4VGVzc0NvbnRyb2xBdG9taWNDb3VudGVyQnVmZmVycyBnbF9NYXhUZXNzQ29udHJvbEF0b21pY0NvdW50ZXJzIGdsX01heFRlc3NDb250cm9sSW1hZ2VVbmlmb3JtcyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NDb250cm9sSW5wdXRDb21wb25lbnRzIGdsX01heFRlc3NDb250cm9sT3V0cHV0Q29tcG9uZW50cyBnbF9NYXhUZXNzQ29udHJvbFRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4VGVzc0NvbnRyb2xUb3RhbE91dHB1dENvbXBvbmVudHMgZ2xfTWF4VGVzc0NvbnRyb2xVbmlmb3JtQ29tcG9uZW50cyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NFdmFsdWF0aW9uQXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4VGVzc0V2YWx1YXRpb25BdG9taWNDb3VudGVycyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NFdmFsdWF0aW9uSW1hZ2VVbmlmb3JtcyBnbF9NYXhUZXNzRXZhbHVhdGlvbklucHV0Q29tcG9uZW50cyBnbF9NYXhUZXNzRXZhbHVhdGlvbk91dHB1dENvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzRXZhbHVhdGlvblRleHR1cmVJbWFnZVVuaXRzIGdsX01heFRlc3NFdmFsdWF0aW9uVW5pZm9ybUNvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzR2VuTGV2ZWwgZ2xfTWF4VGVzc1BhdGNoQ29tcG9uZW50cyBnbF9NYXhUZXh0dXJlQ29vcmRzIGdsX01heFRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4VGV4dHVyZVVuaXRzIGdsX01heFZhcnlpbmdDb21wb25lbnRzIGdsX01heFZhcnlpbmdGbG9hdHMgZ2xfTWF4VmFyeWluZ1ZlY3RvcnMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhBdG9taWNDb3VudGVyQnVmZmVycyBnbF9NYXhWZXJ0ZXhBdG9taWNDb3VudGVycyBnbF9NYXhWZXJ0ZXhBdHRyaWJzIGdsX01heFZlcnRleEltYWdlVW5pZm9ybXMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhPdXRwdXRDb21wb25lbnRzIGdsX01heFZlcnRleE91dHB1dFZlY3RvcnMgZ2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyBnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyBnbF9NYXhWaWV3cG9ydHMgZ2xfTWluUHJvZ3JhbVRleGVsT2Zmc2V0ICcgK1xuICAgICAgICAvLyBWYXJpYWJsZXNcbiAgICAgICAgJ2dsX0JhY2tDb2xvciBnbF9CYWNrTGlnaHRNb2RlbFByb2R1Y3QgZ2xfQmFja0xpZ2h0UHJvZHVjdCBnbF9CYWNrTWF0ZXJpYWwgJyArXG4gICAgICAgICdnbF9CYWNrU2Vjb25kYXJ5Q29sb3IgZ2xfQ2xpcERpc3RhbmNlIGdsX0NsaXBQbGFuZSBnbF9DbGlwVmVydGV4IGdsX0NvbG9yICcgK1xuICAgICAgICAnZ2xfRGVwdGhSYW5nZSBnbF9FeWVQbGFuZVEgZ2xfRXllUGxhbmVSIGdsX0V5ZVBsYW5lUyBnbF9FeWVQbGFuZVQgZ2xfRm9nIGdsX0ZvZ0Nvb3JkICcgK1xuICAgICAgICAnZ2xfRm9nRnJhZ0Nvb3JkIGdsX0ZyYWdDb2xvciBnbF9GcmFnQ29vcmQgZ2xfRnJhZ0RhdGEgZ2xfRnJhZ0RlcHRoIGdsX0Zyb250Q29sb3IgJyArXG4gICAgICAgICdnbF9Gcm9udEZhY2luZyBnbF9Gcm9udExpZ2h0TW9kZWxQcm9kdWN0IGdsX0Zyb250TGlnaHRQcm9kdWN0IGdsX0Zyb250TWF0ZXJpYWwgJyArXG4gICAgICAgICdnbF9Gcm9udFNlY29uZGFyeUNvbG9yIGdsX0dsb2JhbEludm9jYXRpb25JRCBnbF9JbnN0YW5jZUlEIGdsX0ludm9jYXRpb25JRCBnbF9MYXllciBnbF9MaWdodE1vZGVsICcgK1xuICAgICAgICAnZ2xfTGlnaHRTb3VyY2UgZ2xfTG9jYWxJbnZvY2F0aW9uSUQgZ2xfTG9jYWxJbnZvY2F0aW9uSW5kZXggZ2xfTW9kZWxWaWV3TWF0cml4ICcgK1xuICAgICAgICAnZ2xfTW9kZWxWaWV3TWF0cml4SW52ZXJzZSBnbF9Nb2RlbFZpZXdNYXRyaXhJbnZlcnNlVHJhbnNwb3NlIGdsX01vZGVsVmlld01hdHJpeFRyYW5zcG9zZSAnICtcbiAgICAgICAgJ2dsX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeEludmVyc2UgZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeEludmVyc2VUcmFuc3Bvc2UgJyArXG4gICAgICAgICdnbF9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4VHJhbnNwb3NlIGdsX011bHRpVGV4Q29vcmQwIGdsX011bHRpVGV4Q29vcmQxIGdsX011bHRpVGV4Q29vcmQyICcgK1xuICAgICAgICAnZ2xfTXVsdGlUZXhDb29yZDMgZ2xfTXVsdGlUZXhDb29yZDQgZ2xfTXVsdGlUZXhDb29yZDUgZ2xfTXVsdGlUZXhDb29yZDYgZ2xfTXVsdGlUZXhDb29yZDcgJyArXG4gICAgICAgICdnbF9Ob3JtYWwgZ2xfTm9ybWFsTWF0cml4IGdsX05vcm1hbFNjYWxlIGdsX051bVNhbXBsZXMgZ2xfTnVtV29ya0dyb3VwcyBnbF9PYmplY3RQbGFuZVEgJyArXG4gICAgICAgICdnbF9PYmplY3RQbGFuZVIgZ2xfT2JqZWN0UGxhbmVTIGdsX09iamVjdFBsYW5lVCBnbF9QYXRjaFZlcnRpY2VzSW4gZ2xfUG9pbnQgZ2xfUG9pbnRDb29yZCAnICtcbiAgICAgICAgJ2dsX1BvaW50U2l6ZSBnbF9Qb3NpdGlvbiBnbF9QcmltaXRpdmVJRCBnbF9QcmltaXRpdmVJREluIGdsX1Byb2plY3Rpb25NYXRyaXggZ2xfUHJvamVjdGlvbk1hdHJpeEludmVyc2UgJyArXG4gICAgICAgICdnbF9Qcm9qZWN0aW9uTWF0cml4SW52ZXJzZVRyYW5zcG9zZSBnbF9Qcm9qZWN0aW9uTWF0cml4VHJhbnNwb3NlIGdsX1NhbXBsZUlEIGdsX1NhbXBsZU1hc2sgJyArXG4gICAgICAgICdnbF9TYW1wbGVNYXNrSW4gZ2xfU2FtcGxlUG9zaXRpb24gZ2xfU2Vjb25kYXJ5Q29sb3IgZ2xfVGVzc0Nvb3JkIGdsX1Rlc3NMZXZlbElubmVyIGdsX1Rlc3NMZXZlbE91dGVyICcgK1xuICAgICAgICAnZ2xfVGV4Q29vcmQgZ2xfVGV4dHVyZUVudkNvbG9yIGdsX1RleHR1cmVNYXRyaXggZ2xfVGV4dHVyZU1hdHJpeEludmVyc2UgZ2xfVGV4dHVyZU1hdHJpeEludmVyc2VUcmFuc3Bvc2UgJyArXG4gICAgICAgICdnbF9UZXh0dXJlTWF0cml4VHJhbnNwb3NlIGdsX1ZlcnRleCBnbF9WZXJ0ZXhJRCBnbF9WaWV3cG9ydEluZGV4IGdsX1dvcmtHcm91cElEIGdsX1dvcmtHcm91cFNpemUgZ2xfaW4gZ2xfb3V0ICcgK1xuICAgICAgICAvLyBGdW5jdGlvbnNcbiAgICAgICAgJ0VtaXRTdHJlYW1WZXJ0ZXggRW1pdFZlcnRleCBFbmRQcmltaXRpdmUgRW5kU3RyZWFtUHJpbWl0aXZlIGFicyBhY29zIGFjb3NoIGFsbCBhbnkgYXNpbiAnICtcbiAgICAgICAgJ2FzaW5oIGF0YW4gYXRhbmggYXRvbWljQWRkIGF0b21pY0FuZCBhdG9taWNDb21wU3dhcCBhdG9taWNDb3VudGVyIGF0b21pY0NvdW50ZXJEZWNyZW1lbnQgJyArXG4gICAgICAgICdhdG9taWNDb3VudGVySW5jcmVtZW50IGF0b21pY0V4Y2hhbmdlIGF0b21pY01heCBhdG9taWNNaW4gYXRvbWljT3IgYXRvbWljWG9yIGJhcnJpZXIgJyArXG4gICAgICAgICdiaXRDb3VudCBiaXRmaWVsZEV4dHJhY3QgYml0ZmllbGRJbnNlcnQgYml0ZmllbGRSZXZlcnNlIGNlaWwgY2xhbXAgY29zIGNvc2ggY3Jvc3MgJyArXG4gICAgICAgICdkRmR4IGRGZHkgZGVncmVlcyBkZXRlcm1pbmFudCBkaXN0YW5jZSBkb3QgZXF1YWwgZXhwIGV4cDIgZmFjZWZvcndhcmQgZmluZExTQiBmaW5kTVNCICcgK1xuICAgICAgICAnZmxvYXRCaXRzVG9JbnQgZmxvYXRCaXRzVG9VaW50IGZsb29yIGZtYSBmcmFjdCBmcmV4cCBmdHJhbnNmb3JtIGZ3aWR0aCBncmVhdGVyVGhhbiAnICtcbiAgICAgICAgJ2dyZWF0ZXJUaGFuRXF1YWwgZ3JvdXBNZW1vcnlCYXJyaWVyIGltYWdlQXRvbWljQWRkIGltYWdlQXRvbWljQW5kIGltYWdlQXRvbWljQ29tcFN3YXAgJyArXG4gICAgICAgICdpbWFnZUF0b21pY0V4Y2hhbmdlIGltYWdlQXRvbWljTWF4IGltYWdlQXRvbWljTWluIGltYWdlQXRvbWljT3IgaW1hZ2VBdG9taWNYb3IgaW1hZ2VMb2FkICcgK1xuICAgICAgICAnaW1hZ2VTaXplIGltYWdlU3RvcmUgaW11bEV4dGVuZGVkIGludEJpdHNUb0Zsb2F0IGludGVycG9sYXRlQXRDZW50cm9pZCBpbnRlcnBvbGF0ZUF0T2Zmc2V0ICcgK1xuICAgICAgICAnaW50ZXJwb2xhdGVBdFNhbXBsZSBpbnZlcnNlIGludmVyc2VzcXJ0IGlzaW5mIGlzbmFuIGxkZXhwIGxlbmd0aCBsZXNzVGhhbiBsZXNzVGhhbkVxdWFsIGxvZyAnICtcbiAgICAgICAgJ2xvZzIgbWF0cml4Q29tcE11bHQgbWF4IG1lbW9yeUJhcnJpZXIgbWVtb3J5QmFycmllckF0b21pY0NvdW50ZXIgbWVtb3J5QmFycmllckJ1ZmZlciAnICtcbiAgICAgICAgJ21lbW9yeUJhcnJpZXJJbWFnZSBtZW1vcnlCYXJyaWVyU2hhcmVkIG1pbiBtaXggbW9kIG1vZGYgbm9pc2UxIG5vaXNlMiBub2lzZTMgbm9pc2U0ICcgK1xuICAgICAgICAnbm9ybWFsaXplIG5vdCBub3RFcXVhbCBvdXRlclByb2R1Y3QgcGFja0RvdWJsZTJ4MzIgcGFja0hhbGYyeDE2IHBhY2tTbm9ybTJ4MTYgcGFja1Nub3JtNHg4ICcgK1xuICAgICAgICAncGFja1Vub3JtMngxNiBwYWNrVW5vcm00eDggcG93IHJhZGlhbnMgcmVmbGVjdCByZWZyYWN0IHJvdW5kIHJvdW5kRXZlbiBzaGFkb3cxRCBzaGFkb3cxRExvZCAnICtcbiAgICAgICAgJ3NoYWRvdzFEUHJvaiBzaGFkb3cxRFByb2pMb2Qgc2hhZG93MkQgc2hhZG93MkRMb2Qgc2hhZG93MkRQcm9qIHNoYWRvdzJEUHJvakxvZCBzaWduIHNpbiBzaW5oICcgK1xuICAgICAgICAnc21vb3Roc3RlcCBzcXJ0IHN0ZXAgdGFuIHRhbmggdGV4ZWxGZXRjaCB0ZXhlbEZldGNoT2Zmc2V0IHRleHR1cmUgdGV4dHVyZTFEIHRleHR1cmUxRExvZCAnICtcbiAgICAgICAgJ3RleHR1cmUxRFByb2ogdGV4dHVyZTFEUHJvakxvZCB0ZXh0dXJlMkQgdGV4dHVyZTJETG9kIHRleHR1cmUyRFByb2ogdGV4dHVyZTJEUHJvakxvZCAnICtcbiAgICAgICAgJ3RleHR1cmUzRCB0ZXh0dXJlM0RMb2QgdGV4dHVyZTNEUHJvaiB0ZXh0dXJlM0RQcm9qTG9kIHRleHR1cmVDdWJlIHRleHR1cmVDdWJlTG9kICcgK1xuICAgICAgICAndGV4dHVyZUdhdGhlciB0ZXh0dXJlR2F0aGVyT2Zmc2V0IHRleHR1cmVHYXRoZXJPZmZzZXRzIHRleHR1cmVHcmFkIHRleHR1cmVHcmFkT2Zmc2V0ICcgK1xuICAgICAgICAndGV4dHVyZUxvZCB0ZXh0dXJlTG9kT2Zmc2V0IHRleHR1cmVPZmZzZXQgdGV4dHVyZVByb2ogdGV4dHVyZVByb2pHcmFkIHRleHR1cmVQcm9qR3JhZE9mZnNldCAnICtcbiAgICAgICAgJ3RleHR1cmVQcm9qTG9kIHRleHR1cmVQcm9qTG9kT2Zmc2V0IHRleHR1cmVQcm9qT2Zmc2V0IHRleHR1cmVRdWVyeUxldmVscyB0ZXh0dXJlUXVlcnlMb2QgJyArXG4gICAgICAgICd0ZXh0dXJlU2l6ZSB0cmFuc3Bvc2UgdHJ1bmMgdWFkZENhcnJ5IHVpbnRCaXRzVG9GbG9hdCB1bXVsRXh0ZW5kZWQgdW5wYWNrRG91YmxlMngzMiAnICtcbiAgICAgICAgJ3VucGFja0hhbGYyeDE2IHVucGFja1Nub3JtMngxNiB1bnBhY2tTbm9ybTR4OCB1bnBhY2tVbm9ybTJ4MTYgdW5wYWNrVW5vcm00eDggdXN1YkJvcnJvdycsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGlsbGVnYWw6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBHT19LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2JyZWFrIGRlZmF1bHQgZnVuYyBpbnRlcmZhY2Ugc2VsZWN0IGNhc2UgbWFwIHN0cnVjdCBjaGFuIGVsc2UgZ290byBwYWNrYWdlIHN3aXRjaCAnICtcbiAgICAgICdjb25zdCBmYWxsdGhyb3VnaCBpZiByYW5nZSB0eXBlIGNvbnRpbnVlIGZvciBpbXBvcnQgcmV0dXJuIHZhciBnbyBkZWZlciAnICtcbiAgICAgICdib29sIGJ5dGUgY29tcGxleDY0IGNvbXBsZXgxMjggZmxvYXQzMiBmbG9hdDY0IGludDggaW50MTYgaW50MzIgaW50NjQgc3RyaW5nIHVpbnQ4ICcgK1xuICAgICAgJ3VpbnQxNiB1aW50MzIgdWludDY0IGludCB1aW50IHVpbnRwdHIgcnVuZScsXG4gICAgbGl0ZXJhbDpcbiAgICAgICAndHJ1ZSBmYWxzZSBpb3RhIG5pbCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnYXBwZW5kIGNhcCBjbG9zZSBjb21wbGV4IGNvcHkgaW1hZyBsZW4gbWFrZSBuZXcgcGFuaWMgcHJpbnQgcHJpbnRsbiByZWFsIHJlY292ZXIgZGVsZXRlJ1xuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ29sYW5nJ10sXG4gICAga2V5d29yZHM6IEdPX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICB7YmVnaW46ICdcXCcnLCBlbmQ6ICdbXlxcXFxcXFxcXVxcJyd9LFxuICAgICAgICAgIHtiZWdpbjogJ2AnLCBlbmQ6ICdgJ30sXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiBobGpzLkNfTlVNQkVSX1JFICsgJ1tkZmxzaV0nLCByZWxldmFuY2U6IDF9LFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLzo9LyAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuYycsIGVuZDogL1xccypcXHsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAga2V5d29yZHM6IEdPX0tFWVdPUkRTLFxuICAgICAgICAgICAgaWxsZWdhbDogL1tcIiddL1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgJ3ByaW50bG4gcmVhZGxuIHByaW50IGltcG9ydCBtb2R1bGUgZnVuY3Rpb24gbG9jYWwgcmV0dXJuIGxldCB2YXIgJyArXG4gICAgICAgICAgJ3doaWxlIGZvciBmb3JlYWNoIHRpbWVzIGluIGNhc2Ugd2hlbiBtYXRjaCB3aXRoIGJyZWFrIGNvbnRpbnVlICcgK1xuICAgICAgICAgICdhdWdtZW50IGF1Z21lbnRhdGlvbiBlYWNoIGZpbmQgZmlsdGVyIHJlZHVjZSAnICtcbiAgICAgICAgICAnaWYgdGhlbiBlbHNlIG90aGVyd2lzZSB0cnkgY2F0Y2ggZmluYWxseSByYWlzZSB0aHJvdyBvcklmTnVsbCAnICtcbiAgICAgICAgICAnRHluYW1pY09iamVjdHwxMCBEeW5hbWljVmFyaWFibGUgc3RydWN0IE9ic2VydmFibGUgbWFwIHNldCB2ZWN0b3IgbGlzdCBhcnJheScsXG4gICAgICAgIGxpdGVyYWw6XG4gICAgICAgICAgJ3RydWUgZmFsc2UgbnVsbCdcbiAgICAgIH0sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAndGFzayBwcm9qZWN0IGFsbHByb2plY3RzIHN1YnByb2plY3RzIGFydGlmYWN0cyBidWlsZHNjcmlwdCBjb25maWd1cmF0aW9ucyAnICtcbiAgICAgICAgJ2RlcGVuZGVuY2llcyByZXBvc2l0b3JpZXMgc291cmNlU2V0cyBkZXNjcmlwdGlvbiBkZWxldGUgZnJvbSBpbnRvIGluY2x1ZGUgJyArXG4gICAgICAgICdleGNsdWRlIHNvdXJjZSBjbGFzc3BhdGggZGVzdGluYXRpb25EaXIgaW5jbHVkZXMgb3B0aW9ucyBzb3VyY2VDb21wYXRpYmlsaXR5ICcgK1xuICAgICAgICAndGFyZ2V0Q29tcGF0aWJpbGl0eSBncm91cCBmbGF0RGlyIGRvTGFzdCBkb0ZpcnN0IGZsYXR0ZW4gdG9kaXIgZnJvbWRpciBhbnQgJyArXG4gICAgICAgICdkZWYgYWJzdHJhY3QgYnJlYWsgY2FzZSBjYXRjaCBjb250aW51ZSBkZWZhdWx0IGRvIGVsc2UgZXh0ZW5kcyBmaW5hbCBmaW5hbGx5ICcgK1xuICAgICAgICAnZm9yIGlmIGltcGxlbWVudHMgaW5zdGFuY2VvZiBuYXRpdmUgbmV3IHByaXZhdGUgcHJvdGVjdGVkIHB1YmxpYyByZXR1cm4gc3RhdGljICcgK1xuICAgICAgICAnc3dpdGNoIHN5bmNocm9uaXplZCB0aHJvdyB0aHJvd3MgdHJhbnNpZW50IHRyeSB2b2xhdGlsZSB3aGlsZSBzdHJpY3RmcCBwYWNrYWdlICcgK1xuICAgICAgICAnaW1wb3J0IGZhbHNlIG51bGwgc3VwZXIgdGhpcyB0cnVlIGFudGxydGFzayBjaGVja3N0eWxlIGNvZGVuYXJjIGNvcHkgYm9vbGVhbiAnICtcbiAgICAgICAgJ2J5dGUgY2hhciBjbGFzcyBkb3VibGUgZmxvYXQgaW50IGludGVyZmFjZSBsb25nIHNob3J0IHZvaWQgY29tcGlsZSBydW5UaW1lICcgK1xuICAgICAgICAnZmlsZSBmaWxlVHJlZSBhYnMgYW55IGFwcGVuZCBhc0xpc3QgYXNXcml0YWJsZSBjYWxsIGNvbGxlY3QgY29tcGFyZVRvIGNvdW50ICcgK1xuICAgICAgICAnZGl2IGR1bXAgZWFjaCBlYWNoQnl0ZSBlYWNoRmlsZSBlYWNoTGluZSBldmVyeSBmaW5kIGZpbmRBbGwgZmxhdHRlbiBnZXRBdCAnICtcbiAgICAgICAgJ2dldEVyciBnZXRJbiBnZXRPdXQgZ2V0VGV4dCBncmVwIGltbXV0YWJsZSBpbmplY3QgaW5zcGVjdCBpbnRlcnNlY3QgaW52b2tlTWV0aG9kcyAnICtcbiAgICAgICAgJ2lzQ2FzZSBqb2luIGxlZnRTaGlmdCBtaW51cyBtdWx0aXBseSBuZXdJbnB1dFN0cmVhbSBuZXdPdXRwdXRTdHJlYW0gbmV3UHJpbnRXcml0ZXIgJyArXG4gICAgICAgICduZXdSZWFkZXIgbmV3V3JpdGVyIG5leHQgcGx1cyBwb3AgcG93ZXIgcHJldmlvdXMgcHJpbnQgcHJpbnRsbiBwdXNoIHB1dEF0IHJlYWQgJyArXG4gICAgICAgICdyZWFkQnl0ZXMgcmVhZExpbmVzIHJldmVyc2UgcmV2ZXJzZUVhY2ggcm91bmQgc2l6ZSBzb3J0IHNwbGl0RWFjaExpbmUgc3RlcCBzdWJNYXAgJyArXG4gICAgICAgICd0aW1lcyB0b0ludGVnZXIgdG9MaXN0IHRva2VuaXplIHVwdG8gd2FpdEZvck9yS2lsbCB3aXRoUHJpbnRXcml0ZXIgd2l0aFJlYWRlciAnICtcbiAgICAgICAgJ3dpdGhTdHJlYW0gd2l0aFdyaXRlciB3aXRoV3JpdGVyQXBwZW5kIHdyaXRlIHdyaXRlTGluZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLlJFR0VYUF9NT0RFXG5cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGxpdGVyYWwgOiAndHJ1ZSBmYWxzZSBudWxsJyxcbiAgICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAnYnl0ZSBzaG9ydCBjaGFyIGludCBsb25nIGJvb2xlYW4gZmxvYXQgZG91YmxlIHZvaWQgJyArXG4gICAgICAgICAgICAvLyBncm9vdnkgc3BlY2lmaWMga2V5d29yZHNcbiAgICAgICAgICAgICdkZWYgYXMgaW4gYXNzZXJ0IHRyYWl0ICcgK1xuICAgICAgICAgICAgLy8gY29tbW9uIGtleXdvcmRzIHdpdGggSmF2YVxuICAgICAgICAgICAgJ3N1cGVyIHRoaXMgYWJzdHJhY3Qgc3RhdGljIHZvbGF0aWxlIHRyYW5zaWVudCBwdWJsaWMgcHJpdmF0ZSBwcm90ZWN0ZWQgc3luY2hyb25pemVkIGZpbmFsICcgK1xuICAgICAgICAgICAgJ2NsYXNzIGludGVyZmFjZSBlbnVtIGlmIGVsc2UgZm9yIHdoaWxlIHN3aXRjaCBjYXNlIGJyZWFrIGRlZmF1bHQgY29udGludWUgJyArXG4gICAgICAgICAgICAndGhyb3cgdGhyb3dzIHRyeSBjYXRjaCBmaW5hbGx5IGltcGxlbWVudHMgZXh0ZW5kcyBuZXcgaW1wb3J0IHBhY2thZ2UgcmV0dXJuIGluc3RhbmNlb2YnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgICAgICAgICAnL1xcXFwqXFxcXConLFxuICAgICAgICAgICAgICAgICdcXFxcKi8nLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlIDogMCxcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYXQgdXAgQCdzIGluIGVtYWlscyB0byBwcmV2ZW50IHRoZW0gdG8gYmUgcmVjb2duaXplZCBhcyBkb2N0YWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFx3K0AvLCByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lIDogJ2RvY3RhZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luIDogJ0BbQS1aYS16XSsnXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogXCInJydcIiwgZW5kOiBcIicnJ1wiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46IFwiXFxcXCQvXCIsIGVuZDogXCIvXFxcXCRcIixcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgICAgICAgICAgYmVnaW46IC9+P1xcL1teXFwvXFxuXStcXC8vLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBcIl4jIS91c3IvYmluL2VudlwiLCBlbmQ6ICckJyxcbiAgICAgICAgICAgICAgICBpbGxlZ2FsOiAnXFxuJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlIHRyYWl0IGVudW0nLCBlbmQ6ICd7JyxcbiAgICAgICAgICAgICAgICBpbGxlZ2FsOiAnOicsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge2JlZ2luS2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnfSxcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGhpZ2hsaWdodCBtYXAga2V5cyBhbmQgbmFtZWQgcGFyYW1ldGVycyBhcyBzdHJpbmdzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46IC9bXlxcP117MH1bQS1aYS16MC05XyRdKyAqOi9cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gY2F0Y2ggbWlkZGxlIGVsZW1lbnQgb2YgdGhlIHRlcm5hcnkgb3BlcmF0b3JcbiAgICAgICAgICAgICAgICAvLyB0byBhdm9pZCBoaWdobGlnaHQgaXQgYXMgYSBsYWJlbCwgbmFtZWQgcGFyYW1ldGVyLCBvciBtYXAga2V5XG4gICAgICAgICAgICAgICAgYmVnaW46IC9cXD8vLCBlbmQ6IC9cXDovXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGhpZ2hsaWdodCBsYWJlbGVkIHN0YXRlbWVudHNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLCBiZWdpbjogJ15cXFxccypbQS1aYS16MC05XyRdKzonLFxuICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAvI3w8XFwvL1xuICAgIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBUT0RPIHN1cHBvcnQgZmlsdGVyIHRhZ3MgbGlrZSA6amF2YXNjcmlwdCwgc3VwcG9ydCBpbmxpbmUgSFRNTFxuZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXiEhISggKDV8MVxcXFwuMXxTdHJpY3R8RnJhbWVzZXR8QmFzaWN8TW9iaWxlfFJERmF8WE1MXFxcXGIuKikpPyQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gRklYTUUgdGhlc2UgY29tbWVudHMgc2hvdWxkIGJlIGFsbG93ZWQgdG8gc3BhbiBpbmRlbnRlZCBsaW5lc1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnXlxcXFxzKighPSN8PSN8LSN8LykuKiQnLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ15cXFxccyooLXw9fCE9KSg/ISMpJyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnXFxcXG4nLFxuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAncnVieSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqJScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItdGFnJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHcrJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItaWQnLFxuICAgICAgICAgICAgYmVnaW46ICcjW1xcXFx3LV0rJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItY2xhc3MnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcLltcXFxcdy1dKydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAne1xcXFxzKicsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccyp9JyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJzpcXFxcdytcXFxccyo9PicsXG4gICAgICAgICAgICAgICAgZW5kOiAnLFxcXFxzKycsXG4gICAgICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnOlxcXFx3KydcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFx3KycsXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcKFxcXFxzKicsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccypcXFxcKScsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHcrXFxcXHMqPScsXG4gICAgICAgICAgICAgICAgZW5kOiAnXFxcXHMrJyxcbiAgICAgICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcdysnLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFx3KycsXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqWz1+XVxcXFxzKidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnI3snLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6ICd9JyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ3J1YnknXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRfSU5TID0geydidWlsdGluLW5hbWUnOiAnZWFjaCBpbiB3aXRoIGlmIGVsc2UgdW5sZXNzIGJpbmRhdHRyIGFjdGlvbiBjb2xsZWN0aW9uIGRlYnVnZ2VyIGxvZyBvdXRsZXQgdGVtcGxhdGUgdW5ib3VuZCB2aWV3IHlpZWxkJ307XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydoYnMnLCAnaHRtbC5oYnMnLCAnaHRtbC5oYW5kbGViYXJzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICBobGpzLkNPTU1FTlQoJ3t7ISgtLSk/JywgJygtLSk/fX0nKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHtbI1xcL10vLCBlbmQ6IC9cXH1cXH0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46IC9bYS16QS1aXFwuLV0rLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBCVUlMVF9JTlMsXG4gICAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHsvLCBlbmQ6IC9cXH1cXH0vLFxuICAgICAgICBrZXl3b3JkczogQlVJTFRfSU5TXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlQgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAney0nLFxuICAgICAgICAnLX0nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdXG4gIH07XG5cbiAgdmFyIFBSQUdNQSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ3stIycsIGVuZDogJyMtfSdcbiAgfTtcblxuICB2YXIgUFJFUFJPQ0VTU09SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMnLCBlbmQ6ICckJ1xuICB9O1xuXG4gIHZhciBDT05TVFJVQ1RPUiA9IHtcbiAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHdcXCddKicsIC8vIFRPRE86IG90aGVyIGNvbnN0cnVjdG9ycyAoYnVpbGQtaW4sIGluZml4KS5cbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGlsbGVnYWw6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFBSQUdNQSxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtjbGFzc05hbWU6ICd0eXBlJywgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XSooXFxcXCgoXFxcXC5cXFxcLnwsfFxcXFx3KylcXFxcKSk/J30sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdbX2Etel1bXFxcXHdcXCddKid9KSxcbiAgICAgIENPTU1FTlRcbiAgICBdXG4gIH07XG5cbiAgdmFyIFJFQ09SRCA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICBjb250YWluczogTElTVC5jb250YWluc1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydocyddLFxuICAgIGtleXdvcmRzOlxuICAgICAgJ2xldCBpbiBpZiB0aGVuIGVsc2UgY2FzZSBvZiB3aGVyZSBkbyBtb2R1bGUgaW1wb3J0IGhpZGluZyAnICtcbiAgICAgICdxdWFsaWZpZWQgdHlwZSBkYXRhIG5ld3R5cGUgZGVyaXZpbmcgY2xhc3MgaW5zdGFuY2UgYXMgZGVmYXVsdCAnICtcbiAgICAgICdpbmZpeCBpbmZpeGwgaW5maXhyIGZvcmVpZ24gZXhwb3J0IGNjYWxsIHN0ZGNhbGwgY3BsdXNwbHVzICcgK1xuICAgICAgJ2p2bSBkb3RuZXQgc2FmZSB1bnNhZmUgZmFtaWx5IGZvcmFsbCBtZG8gcHJvYyByZWMnLFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIC8vIFRvcC1sZXZlbCBjb25zdHJ1Y3Rpb25zLlxuXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdtb2R1bGUnLCBlbmQ6ICd3aGVyZScsXG4gICAgICAgIGtleXdvcmRzOiAnbW9kdWxlIHdoZXJlJyxcbiAgICAgICAgY29udGFpbnM6IFtMSVNULCBDT01NRU5UXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxXXFxcXC58OydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGJpbXBvcnRcXFxcYicsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ2ltcG9ydCBxdWFsaWZpZWQgYXMgaGlkaW5nJyxcbiAgICAgICAgY29udGFpbnM6IFtMSVNULCBDT01NRU5UXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxXXFxcXC58OydcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbjogJ14oXFxcXHMqKT8oY2xhc3N8aW5zdGFuY2UpXFxcXGInLCBlbmQ6ICd3aGVyZScsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgZmFtaWx5IGluc3RhbmNlIHdoZXJlJyxcbiAgICAgICAgY29udGFpbnM6IFtDT05TVFJVQ1RPUiwgTElTVCwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihkYXRhfChuZXcpP3R5cGUpXFxcXGInLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdkYXRhIGZhbWlseSB0eXBlIG5ld3R5cGUgZGVyaXZpbmcnLFxuICAgICAgICBjb250YWluczogW1BSQUdNQSwgQ09OU1RSVUNUT1IsIExJU1QsIFJFQ09SRCwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWZhdWx0JywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIExJU1QsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW5maXggaW5maXhsIGluZml4cicsIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW2hsanMuQ19OVU1CRVJfTU9ERSwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGJmb3JlaWduXFxcXGInLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdmb3JlaWduIGltcG9ydCBleHBvcnQgY2NhbGwgc3RkY2FsbCBjcGx1c3BsdXMganZtICcgK1xuICAgICAgICAgICAgICAgICAgJ2RvdG5ldCBzYWZlIHVuc2FmZScsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIGhsanMuUVVPVEVfU1RSSU5HX01PREUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjIVxcXFwvdXNyXFxcXC9iaW5cXFxcL2VudlxcIHJ1bmhhc2tlbGwnLCBlbmQ6ICckJ1xuICAgICAgfSxcblxuICAgICAgLy8gXCJXaGl0ZXNwYWNlc1wiLlxuXG4gICAgICBQUkFHTUEsXG4gICAgICBQUkVQUk9DRVNTT1IsXG5cbiAgICAgIC8vIExpdGVyYWxzIGFuZCBuYW1lcy5cblxuICAgICAgLy8gVE9ETzogY2hhcmFjdGVycy5cbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBDT05TVFJVQ1RPUixcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJ15bX2Etel1bXFxcXHdcXCddKid9KSxcblxuICAgICAgQ09NTUVOVCxcblxuICAgICAge2JlZ2luOiAnLT58PC0nfSAvLyBObyBtYXJrdXAsIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVpfJF1bYS16QS1aMC05XyRdKic7XG4gIHZhciBJREVOVF9GVU5DX1JFVFVSTl9UWVBFX1JFID0gJyhbKl18W2EtekEtWl8kXVthLXpBLVowLTlfJF0qKSc7XG5cbiAgdmFyIEhBWEVfQkFTSUNfVFlQRVMgPSAnSW50IEZsb2F0IFN0cmluZyBCb29sIER5bmFtaWMgVm9pZCBBcnJheSAnO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydoeCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYnJlYWsgY2FzZSBjYXN0IGNhdGNoIGNvbnRpbnVlIGRlZmF1bHQgZG8gZHluYW1pYyBlbHNlIGVudW0gZXh0ZXJuICcgK1xuICAgICAgICAgICAgICAgJ2ZvciBmdW5jdGlvbiBoZXJlIGlmIGltcG9ydCBpbiBpbmxpbmUgbmV2ZXIgbmV3IG92ZXJyaWRlIHBhY2thZ2UgcHJpdmF0ZSBnZXQgc2V0ICcgK1xuICAgICAgICAgICAgICAgJ3B1YmxpYyByZXR1cm4gc3RhdGljIHN1cGVyIHN3aXRjaCB0aGlzIHRocm93IHRyYWNlIHRyeSB0eXBlZGVmIHVudHlwZWQgdXNpbmcgdmFyIHdoaWxlICcgK1xuICAgICAgICAgICAgICAgSEFYRV9CQVNJQ19UWVBFUyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAndHJhY2UgdGhpcycsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBudWxsIF8nXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgeyBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyBpbnRlcnBvbGF0ZS1hYmxlIHN0cmluZ3NcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3N1YnN0JywgLy8gaW50ZXJwb2xhdGlvblxuICAgICAgICAgICAgYmVnaW46ICdcXFxcJFxcXFx7JywgZW5kOiAnXFxcXH0nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3N1YnN0JywgLy8gaW50ZXJwb2xhdGlvblxuICAgICAgICAgICAgYmVnaW46ICdcXFxcJCcsIGVuZDogJ1xcXFxXfSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnbWV0YScsIC8vIGNvbXBpbGVyIG1ldGFcbiAgICAgICAgYmVnaW46ICdAOicsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdtZXRhJywgLy8gY29tcGlsZXIgY29uZGl0aW9uYWxzXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbHNlaWYgZW5kIGVycm9yJ31cbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ3R5cGUnLCAvLyBmdW5jdGlvbiB0eXBlc1xuICAgICAgICBiZWdpbjogJzpbIFxcdF0qJywgZW5kOiAnW15BLVphLXowLTlfIFxcdFxcXFwtPl0nLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsIC8vIHR5cGVzXG4gICAgICAgIGJlZ2luOiAnOlsgXFx0XSonLCBlbmQ6ICdcXFxcVycsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsIC8vIGluc3RhbnRpYXRpb25cbiAgICAgICAgYmVnaW46ICduZXcgKicsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdjbGFzcycsIC8vIGVudW1zXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdlbnVtJywgZW5kOiAnXFxcXHsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdjbGFzcycsIC8vIGFic3RyYWN0c1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnYWJzdHJhY3QnLCBlbmQ6ICdbXFxcXHskXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogJ2Zyb20gKycsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAndG8gKycsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF0sXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAga2V5d29yZDogJ2Fic3RyYWN0IGZyb20gdG8nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ2NsYXNzJywgLy8gY2xhc3Nlc1xuICAgICAgICBiZWdpbjogJ1xcXFxiKGNsYXNzfGludGVyZmFjZSkgKycsIGVuZDogJ1tcXFxceyRdJywgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihleHRlbmRzfGltcGxlbWVudHMpICsnLFxuICAgICAgICAgICAga2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFLFxuICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlRJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICdcXFxcKCcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcUycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC88XFwvL1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IC9bXFx3XFwuX10rLyxcbiAgICBrZXl3b3JkczogJ2dvdG8gZ29zdWIgcmV0dXJuIGJyZWFrIHJlcGVhdCBsb29wIGNvbnRpbnVlIHdhaXQgYXdhaXQgZGltIHNkaW0gZm9yZWFjaCBkaW10eXBlIGR1cCBkdXBwdHIgZW5kIHN0b3AgbmV3bW9kIGRlbG1vZCBtcmVmIHJ1biBleGdvdG8gb24gbWNhbGwgYXNzZXJ0IGxvZ21lcyBuZXdsYWIgcmVzdW1lIHlpZWxkIG9uZXhpdCBvbmVycm9yIG9ua2V5IG9uY2xpY2sgb25jbWQgZXhpc3QgZGVsZXRlIG1rZGlyIGNoZGlyIGRpcmxpc3QgYmxvYWQgYnNhdmUgYmNvcHkgbWVtZmlsZSBpZiBlbHNlIHBva2Ugd3Bva2UgbHBva2UgZ2V0c3RyIGNoZHBtIG1lbWV4cGFuZCBtZW1jcHkgbWVtc2V0IG5vdGVzZWwgbm90ZWFkZCBub3RlZGVsIG5vdGVsb2FkIG5vdGVzYXZlIHJhbmRvbWl6ZSBub3RldW5zZWwgbm90ZWdldCBzcGxpdCBzdHJyZXAgc2V0ZWFzZSBidXR0b24gY2hnZGlzcCBleGVjIGRpYWxvZyBtbWxvYWQgbW1wbGF5IG1tc3RvcCBtY2kgcHNldCBwZ2V0IHN5c2NvbG9yIG1lcyBwcmludCB0aXRsZSBwb3MgY2lyY2xlIGNscyBmb250IHN5c2ZvbnQgb2Jqc2l6ZSBwaWNsb2FkIGNvbG9yIHBhbGNvbG9yIHBhbGV0dGUgcmVkcmF3IHdpZHRoIGdzZWwgZ2NvcHkgZ3pvb20gZ21vZGUgYm1wc2F2ZSBoc3Zjb2xvciBnZXRrZXkgbGlzdGJveCBjaGtib3ggY29tYm94IGlucHV0IG1lc2JveCBidWZmZXIgc2NyZWVuIGJnc2NyIG1vdXNlIG9ianNlbCBncm9sbCBsaW5lIGNscm9iaiBib3hmIG9ianBybSBvYmptb2RlIHN0aWNrIGdyZWN0IGdyb3RhdGUgZ3NxdWFyZSBncmFkZiBvYmppbWFnZSBvYmpza2lwIG9iamVuYWJsZSBjZWxsb2FkIGNlbGRpdiBjZWxwdXQgbmV3Y29tIHF1ZXJ5Y29tIGRlbGNvbSBjbnZzdG93IGNvbXJlcyBheG9iaiB3aW5vYmogc2VuZG1zZyBjb21ldmVudCBjb21ldmFyZyBzYXJyYXljb252IGNhbGxmdW5jIGNudnd0b3MgY29tZXZkaXNwIGxpYnB0ciBzeXN0ZW0gaHNwc3RhdCBoc3B2ZXIgc3RhdCBjbnQgZXJyIHN0cnNpemUgbG9vcGxldiBzdWJsZXYgaXBhcmFtIHdwYXJhbSBscGFyYW0gcmVmc3RyIHJlZmR2YWwgaW50IHJuZCBzdHJsZW4gbGVuZ3RoIGxlbmd0aDIgbGVuZ3RoMyBsZW5ndGg0IHZhcnR5cGUgZ2V0dGltZSBwZWVrIHdwZWVrIGxwZWVrIHZhcnB0ciB2YXJ1c2Ugbm90ZWluZm8gaW5zdHIgYWJzIGxpbWl0IGdldGVhc2Ugc3RyIHN0cm1pZCBzdHJmIGdldHBhdGggc3RydHJpbSBzaW4gY29zIHRhbiBhdGFuIHNxcnQgZG91YmxlIGFic2YgZXhwZiBsb2dmIGxpbWl0ZiBwb3dmIGdldGVhc2VmIG1vdXNleCBtb3VzZXkgbW91c2V3IGh3bmQgaGluc3RhbmNlIGhkYyBnaW5mbyBvYmppbmZvIGRpcmluZm8gc3lzaW5mbyB0aGlzbW9kIF9faHNwdmVyX18gX19oc3AzMF9fIF9fZGF0ZV9fIF9fdGltZV9fIF9fbGluZV9fIF9fZmlsZV9fIF9kZWJ1ZyBfX2hzcGRlZl9fIGFuZCBvciB4b3Igbm90IHNjcmVlbl9ub3JtYWwgc2NyZWVuX3BhbGV0dGUgc2NyZWVuX2hpZGUgc2NyZWVuX2ZpeGVkc2l6ZSBzY3JlZW5fdG9vbCBzY3JlZW5fZnJhbWUgZ21vZGVfZ2RpIGdtb2RlX21lbSBnbW9kZV9yZ2IwIGdtb2RlX2FscGhhIGdtb2RlX3JnYjBhbHBoYSBnbW9kZV9hZGQgZ21vZGVfc3ViIGdtb2RlX3BpeGVsYSBnaW5mb19teCBnaW5mb19teSBnaW5mb19hY3QgZ2luZm9fc2VsIGdpbmZvX3d4MSBnaW5mb193eTEgZ2luZm9fd3gyIGdpbmZvX3d5MiBnaW5mb192eCBnaW5mb192eSBnaW5mb19zaXpleCBnaW5mb19zaXpleSBnaW5mb193aW54IGdpbmZvX3dpbnkgZ2luZm9fbWVzeCBnaW5mb19tZXN5IGdpbmZvX3IgZ2luZm9fZyBnaW5mb19iIGdpbmZvX3BhbHVzZSBnaW5mb19kaXNweCBnaW5mb19kaXNweSBnaW5mb19jeCBnaW5mb19jeSBnaW5mb19pbnRpZCBnaW5mb19uZXdpZCBnaW5mb19zeCBnaW5mb19zeSBvYmppbmZvX21vZGUgb2JqaW5mb19ibXNjciBvYmppbmZvX2h3bmQgbm90ZW1heCBub3Rlc2l6ZSBkaXJfY3VyIGRpcl9leGUgZGlyX3dpbiBkaXJfc3lzIGRpcl9jbWRsaW5lIGRpcl9kZXNrdG9wIGRpcl9teWRvYyBkaXJfdHYgZm9udF9ub3JtYWwgZm9udF9ib2xkIGZvbnRfaXRhbGljIGZvbnRfdW5kZXJsaW5lIGZvbnRfc3RyaWtlb3V0IGZvbnRfYW50aWFsaWFzIG9iam1vZGVfbm9ybWFsIG9iam1vZGVfZ3VpZm9udCBvYmptb2RlX3VzZWZvbnQgZ3NxdWFyZV9ncmFkIG1zZ290aGljIG1zbWluY2hvIGRvIHVudGlsIHdoaWxlIHdlbmQgZm9yIG5leHQgX2JyZWFrIF9jb250aW51ZSBzd2l0Y2ggY2FzZSBkZWZhdWx0IHN3YnJlYWsgc3dlbmQgZGRpbSBsZGltIGFsbG9jIG1fcGkgcmFkMmRlZyBkZWcycmFkIGVhc2VfbGluZWFyIGVhc2VfcXVhZF9pbiBlYXNlX3F1YWRfb3V0IGVhc2VfcXVhZF9pbm91dCBlYXNlX2N1YmljX2luIGVhc2VfY3ViaWNfb3V0IGVhc2VfY3ViaWNfaW5vdXQgZWFzZV9xdWFydGljX2luIGVhc2VfcXVhcnRpY19vdXQgZWFzZV9xdWFydGljX2lub3V0IGVhc2VfYm91bmNlX2luIGVhc2VfYm91bmNlX291dCBlYXNlX2JvdW5jZV9pbm91dCBlYXNlX3NoYWtlX2luIGVhc2Vfc2hha2Vfb3V0IGVhc2Vfc2hha2VfaW5vdXQgZWFzZV9sb29wJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG5cbiAgICAgIHtcbiAgICAgICAgLy8gbXVsdGktbGluZSBzdHJpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICd7XCInLCBlbmQ6ICdcIn0nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG5cbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuXG4gICAgICB7XG4gICAgICAgIC8vIHByZS1wcm9jZXNzb3JcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnYWRkaW9uIGNmdW5jIGNtZCBjbXBvcHQgY29tZnVuYyBjb25zdCBkZWZjZnVuYyBkZWZmdW5jIGRlZmluZSBlbHNlIGVuZGlmIGVudW0gZXBhY2sgZnVuYyBnbG9iYWwgaWYgaWZkZWYgaWZuZGVmIGluY2x1ZGUgbW9kY2Z1bmMgbW9kZnVuYyBtb2Rpbml0IG1vZHRlcm0gbW9kdWxlIHBhY2sgcGFja29wdCByZWdjbWQgcnVudGltZSB1bmRlZiB1c2Vjb20gdXNlbGliJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdtZXRhLXN0cmluZyd9KSxcbiAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIC8vIGxhYmVsXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwqKFxcXFx3K3xAKSdcbiAgICAgIH0sXG5cbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRfSU5TID0gJ2FjdGlvbiBjb2xsZWN0aW9uIGNvbXBvbmVudCBjb25jYXQgZGVidWdnZXIgZWFjaCBlYWNoLWluIGVsc2UgZ2V0IGhhc2ggaWYgaW5wdXQgbGluay10byBsb2MgbG9nIG11dCBvdXRsZXQgcGFydGlhbCBxdWVyeS1wYXJhbXMgcmVuZGVyIHRleHRhcmVhIHVuYm91bmQgdW5sZXNzIHdpdGggeWllbGQgdmlldyc7XG5cbiAgdmFyIEFUVFJfQVNTSUdOTUVOVCA9IHtcbiAgICBpbGxlZ2FsOiAvXFx9XFx9LyxcbiAgICBiZWdpbjogL1thLXpBLVowLTlfXSs9LyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsIGJlZ2luOiAvW2EtekEtWjAtOV9dKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNVQl9FWFBSID0ge1xuICAgIGlsbGVnYWw6IC9cXH1cXH0vLFxuICAgIGJlZ2luOiAvXFwpLywgZW5kOiAvXFwpLyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1thLXpBLVpcXC5cXC1dKy8sXG4gICAgICAgIGtleXdvcmRzOiB7YnVpbHRfaW46IEJVSUxUX0lOU30sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLCByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBUQUdfSU5OQVJEUyA9IHtcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgcmVsZXZhbmNlOiAwLFxuICAgIGtleXdvcmRzOiB7a2V5d29yZDogJ2FzJywgYnVpbHRfaW46IEJVSUxUX0lOU30sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBBVFRSX0FTU0lHTk1FTlQsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgne3shKC0tKT8nLCAnKC0tKT99fScpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1sjXFwvXS8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogL1thLXpBLVpcXC5cXC1dKy8sXG4gICAgICAgICAgICBrZXl3b3JkczogeydidWlsdGluLW5hbWUnOiBCVUlMVF9JTlN9LFxuICAgICAgICAgICAgc3RhcnRzOiBUQUdfSU5OQVJEU1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xce1xce1thLXpBLVpdW2EtekEtWlxcLV0rLywgZW5kOiAvXFx9XFx9LyxcbiAgICAgICAga2V5d29yZHM6IHtrZXl3b3JkOiAnYXMnLCBidWlsdF9pbjogQlVJTFRfSU5TfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVkVSU0lPTiA9ICdIVFRQL1swLTlcXFxcLl0rJztcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2h0dHBzJ10sXG4gICAgaWxsZWdhbDogJ1xcXFxTJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ14nICsgVkVSU0lPTiwgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbe2NsYXNzTmFtZTogJ251bWJlcicsIGJlZ2luOiAnXFxcXGJcXFxcZHszfVxcXFxiJ31dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ15bQS1aXSsgKC4qPykgJyArIFZFUlNJT04gKyAnJCcsIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICcgJywgZW5kOiAnICcsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBWRVJTSU9OXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiAnW0EtWl0rJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHcnLCBlbmQ6ICc6ICcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbnxcXFxcc3w9JyxcbiAgICAgICAgc3RhcnRzOiB7ZW5kOiAnJCcsIHJlbGV2YW5jZTogMH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXG5cXFxcbicsXG4gICAgICAgIHN0YXJ0czoge3N1Ykxhbmd1YWdlOiBbXSwgZW5kc1dpdGhQYXJlbnQ6IHRydWV9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGtleXdvcmRzID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgLy8ga2V5d29yZHNcbiAgICAgICchPSAlICU9ICYgJj0gKiAqKiAqKj0gKj0gKm1hcCAnICtcbiAgICAgICcrICs9ICwgLS1idWlsZC1jbGFzcy0tIC0taW1wb3J0LS0gLT0gLiAvIC8vIC8vPSAnICtcbiAgICAgICcvPSA8IDw8IDw8PSA8PSA9ID4gPj0gPj4gPj49ICcgK1xuICAgICAgJ0AgQD0gXiBePSBhYnMgYWNjdW11bGF0ZSBhbGwgYW5kIGFueSBhcC1jb21wb3NlICcgK1xuICAgICAgJ2FwLWRvdGltZXMgYXAtZWFjaCBhcC1lYWNoLXdoaWxlIGFwLWZpbHRlciBhcC1maXJzdCBhcC1pZiBhcC1sYXN0IGFwLW1hcCBhcC1tYXAtd2hlbiBhcC1waXBlICcgK1xuICAgICAgJ2FwLXJlZHVjZSBhcC1yZWplY3QgYXBwbHkgYXMtPiBhc2NpaSBhc3NlcnQgYXNzb2MgYmluIGJyZWFrIGJ1dGxhc3QgJyArXG4gICAgICAnY2FsbGFibGUgY2FsbGluZy1tb2R1bGUtbmFtZSBjYXIgY2FzZSBjZHIgY2hhaW4gY2hyIGNvbGw/IGNvbWJpbmF0aW9ucyBjb21waWxlICcgK1xuICAgICAgJ2NvbXByZXNzIGNvbmQgY29ucyBjb25zPyBjb250aW51ZSBjb3VudCBjdXJyeSBjdXQgY3ljbGUgZGVjICcgK1xuICAgICAgJ2RlZiBkZWZhdWx0LW1ldGhvZCBkZWZjbGFzcyBkZWZtYWNybyBkZWZtYWNyby1hbGlhcyBkZWZtYWNyby9nISBkZWZtYWluIGRlZm1ldGhvZCBkZWZtdWx0aSBkZWZuICcgK1xuICAgICAgJ2RlZm4tYWxpYXMgZGVmbmMgZGVmbnIgZGVmcmVhZGVyIGRlZnNlcSBkZWwgZGVsYXR0ciBkZWxldGUtcm91dGUgZGljdC1jb21wIGRpciAnICtcbiAgICAgICdkaXNhc3NlbWJsZSBkaXNwYXRjaC1yZWFkZXItbWFjcm8gZGlzdGluY3QgZGl2bW9kIGRvIGRvdG8gZHJvcCBkcm9wLWxhc3QgZHJvcC13aGlsZSBlbXB0eT8gJyArXG4gICAgICAnZW5kLXNlcXVlbmNlIGV2YWwgZXZhbC1hbmQtY29tcGlsZSBldmFsLXdoZW4tY29tcGlsZSBldmVuPyBldmVyeT8gZXhjZXB0IGV4ZWMgZmlsdGVyIGZpcnN0ICcgK1xuICAgICAgJ2ZsYXR0ZW4gZmxvYXQ/IGZuIGZuYyBmbnIgZm9yIGZvciogZm9ybWF0IGZyYWN0aW9uIGdlbmV4cHIgJyArXG4gICAgICAnZ2Vuc3ltIGdldCBnZXRhdHRyIGdsb2JhbCBnbG9iYWxzIGdyb3VwLWJ5IGhhc2F0dHIgaGFzaCBoZXggaWQgJyArXG4gICAgICAnaWRlbnRpdHkgaWYgaWYqIGlmLW5vdCBpZi1weXRob24yIGltcG9ydCBpbiBpbmMgaW5wdXQgaW5zdGFuY2U/ICcgK1xuICAgICAgJ2ludGVnZXIgaW50ZWdlci1jaGFyPyBpbnRlZ2VyPyBpbnRlcmxlYXZlIGludGVycG9zZSBpcyBpcy1jb2xsIGlzLWNvbnMgaXMtZW1wdHkgaXMtZXZlbiAnICtcbiAgICAgICdpcy1ldmVyeSBpcy1mbG9hdCBpcy1pbnN0YW5jZSBpcy1pbnRlZ2VyIGlzLWludGVnZXItY2hhciBpcy1pdGVyYWJsZSBpcy1pdGVyYXRvciBpcy1rZXl3b3JkIGlzLW5lZyBpcy1ub25lICcgK1xuICAgICAgJ2lzLW5vdCBpcy1udW1lcmljIGlzLW9kZCBpcy1wb3MgaXMtc3RyaW5nIGlzLXN5bWJvbCBpcy16ZXJvIGlzaW5zdGFuY2UgaXNsaWNlIGlzc3ViY2xhc3MgJyArXG4gICAgICAnaXRlciBpdGVyYWJsZT8gaXRlcmF0ZSBpdGVyYXRvcj8ga2V5d29yZCBrZXl3b3JkPyBsYW1iZGEgbGFzdCBsZW4gbGV0ICcgK1xuICAgICAgJ2xpZiBsaWYtbm90IGxpc3QqIGxpc3QtY29tcCBsb2NhbHMgbG9vcCBtYWNyby1lcnJvciBtYWNyb2V4cGFuZCBtYWNyb2V4cGFuZC0xIG1hY3JvZXhwYW5kLWFsbCAnICtcbiAgICAgICdtYXAgbWF4IG1lcmdlLXdpdGggbWV0aG9kLWRlY29yYXRvciBtaW4gbXVsdGktZGVjb3JhdG9yIG11bHRpY29tYmluYXRpb25zIG5hbWUgbmVnPyBuZXh0ICcgK1xuICAgICAgJ25vbmU/IG5vbmxvY2FsIG5vdCBub3QtaW4gbm90PyBudGggbnVtZXJpYz8gb2N0IG9kZD8gb3BlbiAnICtcbiAgICAgICdvciBvcmQgcGFydGl0aW9uIHBlcm11dGF0aW9ucyBwb3M/IHBvc3Qtcm91dGUgcG9zdHdhbGsgcG93IHByZXdhbGsgcHJpbnQgJyArXG4gICAgICAncHJvZHVjdCBwcm9maWxlL2NhbGxzIHByb2ZpbGUvY3B1IHB1dC1yb3V0ZSBxdWFzaXF1b3RlIHF1b3RlIHJhaXNlIHJhbmdlIHJlYWQgcmVhZC1zdHIgJyArXG4gICAgICAncmVjdXJzaXZlLXJlcGxhY2UgcmVkdWNlIHJlbW92ZSByZXBlYXQgcmVwZWF0ZWRseSByZXByIHJlcXVpcmUgcmVzdCByb3VuZCByb3V0ZSAnICtcbiAgICAgICdyb3V0ZS13aXRoLW1ldGhvZHMgcndtIHNlY29uZCBzZXEgc2V0LWNvbXAgc2V0YXR0ciBzZXR2IHNvbWUgc29ydGVkIHN0cmluZyAnICtcbiAgICAgICdzdHJpbmc/IHN1bSBzd2l0Y2ggc3ltYm9sPyB0YWtlIHRha2UtbnRoIHRha2Utd2hpbGUgdGVlIHRyeSB1bmxlc3MgJyArXG4gICAgICAndW5xdW90ZSB1bnF1b3RlLXNwbGljaW5nIHZhcnMgd2FsayB3aGVuIHdoaWxlIHdpdGggd2l0aCogd2l0aC1kZWNvcmF0b3Igd2l0aC1nZW5zeW1zICcgK1xuICAgICAgJ3hpIHhvciB5aWVsZCB5aWVsZC1mcm9tIHplcm8/IHppcCB6aXAtbG9uZ2VzdCB8IHw9IH4nXG4gICB9O1xuXG4gIHZhciBTWU1CT0xTVEFSVCA9ICdhLXpBLVpfXFxcXC0hLj8rKj08PiYjXFwnJztcbiAgdmFyIFNZTUJPTF9SRSA9ICdbJyArIFNZTUJPTFNUQVJUICsgJ11bJyArIFNZTUJPTFNUQVJUICsgJzAtOS87Ol0qJztcbiAgdmFyIFNJTVBMRV9OVU1CRVJfUkUgPSAnWy0rXT9cXFxcZCsoXFxcXC5cXFxcZCspPyc7XG5cbiAgdmFyIFNIRUJBTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdeIyEnLCBlbmQ6ICckJ1xuICB9O1xuXG4gIHZhciBTWU1CT0wgPSB7XG4gICAgYmVnaW46IFNZTUJPTF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogU0lNUExFX05VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pO1xuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnOycsXG4gICAgJyQnLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46IC9cXGIoW1R0XXJ1ZXxbRmZdYWxzZXxuaWx8Tm9uZSlcXGIvXG4gIH07XG4gIHZhciBDT0xMRUNUSU9OID0ge1xuICAgIGJlZ2luOiAnW1xcXFxbXFxcXHtdJywgZW5kOiAnW1xcXFxdXFxcXH1dJ1xuICB9O1xuICB2YXIgSElOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogJ1xcXFxeJyArIFNZTUJPTF9SRVxuICB9O1xuICB2YXIgSElOVF9DT0wgPSBobGpzLkNPTU1FTlQoJ1xcXFxeXFxcXHsnLCAnXFxcXH0nKTtcbiAgdmFyIEtFWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzpdezEsMn0nICsgU1lNQk9MX1JFXG4gIH07XG4gIHZhciBMSVNUID0ge1xuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSdcbiAgfTtcbiAgdmFyIEJPRFkgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBOQU1FID0ge1xuICAgIGtleXdvcmRzOiBrZXl3b3JkcyxcbiAgICBsZXhlbWVzOiBTWU1CT0xfUkUsXG4gICAgY2xhc3NOYW1lOiAnbmFtZScsIGJlZ2luOiBTWU1CT0xfUkUsXG4gICAgc3RhcnRzOiBCT0RZXG4gIH07XG4gIHZhciBERUZBVUxUX0NPTlRBSU5TID0gW0xJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMLCBTWU1CT0xdO1xuXG4gIExJU1QuY29udGFpbnMgPSBbaGxqcy5DT01NRU5UKCdjb21tZW50JywgJycpLCBOQU1FLCBCT0RZXTtcbiAgQk9EWS5jb250YWlucyA9IERFRkFVTFRfQ09OVEFJTlM7XG4gIENPTExFQ1RJT04uY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydoeWxhbmcnXSxcbiAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICBjb250YWluczogW1NIRUJBTkcsIExJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RBUlRfQlJBQ0tFVCA9ICdcXFxcWyc7XG4gIHZhciBFTkRfQlJBQ0tFVCA9ICdcXFxcXSc7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydpNyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIC8vIFNvbWUga2V5d29yZHMgbW9yZSBvciBsZXNzIHVuaXF1ZSB0byBJNywgZm9yIHJlbGV2YW5jZS5cbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIGtpbmQ6XG4gICAgICAgICd0aGluZyByb29tIHBlcnNvbiBtYW4gd29tYW4gYW5pbWFsIGNvbnRhaW5lciAnICtcbiAgICAgICAgJ3N1cHBvcnRlciBiYWNrZHJvcCBkb29yICcgK1xuICAgICAgICAvLyBjaGFyYWN0ZXJpc3RpYzpcbiAgICAgICAgJ3NjZW5lcnkgb3BlbiBjbG9zZWQgbG9ja2VkIGluc2lkZSBnZW5kZXIgJyArXG4gICAgICAgIC8vIHZlcmI6XG4gICAgICAgICdpcyBhcmUgc2F5IHVuZGVyc3RhbmQgJyArXG4gICAgICAgIC8vIG1pc2Mga2V5d29yZDpcbiAgICAgICAgJ2tpbmQgb2YgcnVsZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgICAgICAgICBiZWdpbjogU1RBUlRfQlJBQ0tFVCwgZW5kOiBFTkRfQlJBQ0tFVFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIGJlZ2luOiAvXihWb2x1bWV8Qm9va3xQYXJ0fENoYXB0ZXJ8U2VjdGlvbnxUYWJsZSlcXGIvLFxuICAgICAgICBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gUnVsZSBkZWZpbml0aW9uXG4gICAgICAgIC8vIFRoaXMgaXMgaGVyZSBmb3IgcmVsZXZhbmNlLlxuICAgICAgICBiZWdpbjogL14oQ2hlY2t8Q2Fycnkgb3V0fFJlcG9ydHxJbnN0ZWFkIG9mfFRvfFJ1bGV8V2hlbnxCZWZvcmV8QWZ0ZXIpXFxiLyxcbiAgICAgICAgZW5kOiAnOicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy9SdWxlIG5hbWVcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXChUaGlzJywgZW5kOiAnXFxcXCknXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46IFNUQVJUX0JSQUNLRVQsIGVuZDogRU5EX0JSQUNLRVQsXG4gICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiBcInN0cmluZ1wiLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogXCInJydcIiwgZW5kOiBcIicnJ1wiLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LCB7XG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSwge1xuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInXG4gICAgICB9LCB7XG4gICAgICAgIGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIlxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RvbWwnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJzsnLCAnJCcpLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIGJlZ2luOiAvXlxccypcXFsrLywgZW5kOiAvXFxdKy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXlthLXowLTlcXFtcXF1fLV0rXFxzKj1cXHMqLywgZW5kOiAnJCcsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgYmVnaW46IC9bYS16MC05XFxbXFxdXy1dKy9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvPS8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXFxib258b2ZmfHRydWV8ZmFsc2V8eWVzfG5vXFxiL1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICB7YmVnaW46IC9cXCRbXFx3XFxkXCJdW1xcd1xcZF9dKi99LFxuICAgICAgICAgICAgICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46IC8oW1xcK1xcLV0rKT9bXFxkXStfW1xcZF9dKy9cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG5cbiAgdmFyIEZfS0VZV09SRFMgPSB7XG4gICAgbGl0ZXJhbDogJy5GYWxzZS4gLlRydWUuJyxcbiAgICBrZXl3b3JkOiAna2luZCBkbyB3aGlsZSBwcml2YXRlIGNhbGwgaW50cmluc2ljIHdoZXJlIGVsc2V3aGVyZSAnICtcbiAgICAgICd0eXBlIGVuZHR5cGUgZW5kbW9kdWxlIGVuZHNlbGVjdCBlbmRpbnRlcmZhY2UgZW5kIGVuZGRvIGVuZGlmIGlmIGZvcmFsbCBlbmRmb3JhbGwgb25seSBjb250YWlucyBkZWZhdWx0IHJldHVybiBzdG9wIHRoZW4gJyArXG4gICAgICAncHVibGljIHN1YnJvdXRpbmV8MTAgZnVuY3Rpb24gcHJvZ3JhbSAuYW5kLiAub3IuIC5ub3QuIC5sZS4gLmVxLiAuZ2UuIC5ndC4gLmx0LiAnICtcbiAgICAgICdnb3RvIHNhdmUgZWxzZSB1c2UgbW9kdWxlIHNlbGVjdCBjYXNlICcgK1xuICAgICAgJ2FjY2VzcyBibGFuayBkaXJlY3QgZXhpc3QgZmlsZSBmbXQgZm9ybSBmb3JtYXR0ZWQgaW9zdGF0IG5hbWUgbmFtZWQgbmV4dHJlYyBudW1iZXIgb3BlbmVkIHJlYyByZWNsIHNlcXVlbnRpYWwgc3RhdHVzIHVuZm9ybWF0dGVkIHVuaXQgJyArXG4gICAgICAnY29udGludWUgZm9ybWF0IHBhdXNlIGN5Y2xlIGV4aXQgJyArXG4gICAgICAnY19udWxsX2NoYXIgY19hbGVydCBjX2JhY2tzcGFjZSBjX2Zvcm1fZmVlZCBmbHVzaCB3YWl0IGRlY2ltYWwgcm91bmQgaW9tc2cgJyArXG4gICAgICAnc3luY2hyb25vdXMgbm9wYXNzIG5vbl9vdmVycmlkYWJsZSBwYXNzIHByb3RlY3RlZCB2b2xhdGlsZSBhYnN0cmFjdCBleHRlbmRzIGltcG9ydCAnICtcbiAgICAgICdub25faW50cmluc2ljIHZhbHVlIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvciBjbGFzcyBhc3NvY2lhdGUgYmluZCBlbnVtICcgK1xuICAgICAgJ2NfaW50IGNfc2hvcnQgY19sb25nIGNfbG9uZ19sb25nIGNfc2lnbmVkX2NoYXIgY19zaXplX3QgY19pbnQ4X3QgY19pbnQxNl90IGNfaW50MzJfdCBjX2ludDY0X3QgY19pbnRfbGVhc3Q4X3QgY19pbnRfbGVhc3QxNl90ICcgK1xuICAgICAgJ2NfaW50X2xlYXN0MzJfdCBjX2ludF9sZWFzdDY0X3QgY19pbnRfZmFzdDhfdCBjX2ludF9mYXN0MTZfdCBjX2ludF9mYXN0MzJfdCBjX2ludF9mYXN0NjRfdCBjX2ludG1heF90IENfaW50cHRyX3QgY19mbG9hdCBjX2RvdWJsZSAnICtcbiAgICAgICdjX2xvbmdfZG91YmxlIGNfZmxvYXRfY29tcGxleCBjX2RvdWJsZV9jb21wbGV4IGNfbG9uZ19kb3VibGVfY29tcGxleCBjX2Jvb2wgY19jaGFyIGNfbnVsbF9wdHIgY19udWxsX2Z1bnB0ciAnICtcbiAgICAgICdjX25ld19saW5lIGNfY2FycmlhZ2VfcmV0dXJuIGNfaG9yaXpvbnRhbF90YWIgY192ZXJ0aWNhbF90YWIgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyICcgK1xuICAgICAgJ2NfcHRyIGNfZnVucHRyIGlzb19mb3J0cmFuX2VudiBjaGFyYWN0ZXJfc3RvcmFnZV9zaXplIGVycm9yX3VuaXQgZmlsZV9zdG9yYWdlX3NpemUgaW5wdXRfdW5pdCBpb3N0YXRfZW5kIGlvc3RhdF9lb3IgJyArXG4gICAgICAnbnVtZXJpY19zdG9yYWdlX3NpemUgb3V0cHV0X3VuaXQgY19mX3Byb2Nwb2ludGVyIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgJyArXG4gICAgICAnaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgbmV3dW5pdCBjb250aWd1b3VzIHJlY3Vyc2l2ZSAnICtcbiAgICAgICdwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZSBlb3IgYWR2YW5jZSBubWwgaW50ZXJmYWNlIHByb2NlZHVyZSBuYW1lbGlzdCBpbmNsdWRlIHNlcXVlbmNlIGVsZW1lbnRhbCBwdXJlICcgK1xuICAgICAgJ2ludGVnZXIgcmVhbCBjaGFyYWN0ZXIgY29tcGxleCBsb2dpY2FsIGRpbWVuc2lvbiBhbGxvY2F0YWJsZXwxMCBwYXJhbWV0ZXIgJyArXG4gICAgICAnZXh0ZXJuYWwgaW1wbGljaXR8MTAgbm9uZSBkb3VibGUgcHJlY2lzaW9uIGFzc2lnbiBpbnRlbnQgb3B0aW9uYWwgcG9pbnRlciAnICtcbiAgICAgICd0YXJnZXQgaW4gb3V0IGNvbW1vbiBlcXVpdmFsZW5jZSBkYXRhICcgK1xuICAgICAgLy8gSVJQRjkwIHNwZWNpYWwga2V5d29yZHNcbiAgICAgICdiZWdpbl9wcm92aWRlciAmYmVnaW5fcHJvdmlkZXIgZW5kX3Byb3ZpZGVyIGJlZ2luX3NoZWxsIGVuZF9zaGVsbCBiZWdpbl90ZW1wbGF0ZSBlbmRfdGVtcGxhdGUgc3Vic3QgYXNzZXJ0IHRvdWNoICcgK1xuICAgICAgJ3NvZnRfdG91Y2ggcHJvdmlkZSBub19kZXAgZnJlZSBpcnBfaWYgaXJwX2Vsc2UgaXJwX2VuZGlmIGlycF93cml0ZSBpcnBfcmVhZCcsXG4gICAgYnVpbHRfaW46ICdhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50ICcgK1xuICAgICAgJ2Rsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgJyArXG4gICAgICAnYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hICcgK1xuICAgICAgJ2lxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgJyArXG4gICAgICAncW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgJyArXG4gICAgICAnbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgJyArXG4gICAgICAnYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgJyArXG4gICAgICAnZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCAnICtcbiAgICAgICdtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0ICcgK1xuICAgICAgJ3JhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kICcgK1xuICAgICAgJ3NldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgJyArXG4gICAgICAnZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kICcgK1xuICAgICAgJ2llZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgJyArXG4gICAgICAnaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mJyAgK1xuICAgICAgJ2Fjb3NoIGFzaW5oIGF0YW5oIGJlc3NlbF9qMCBiZXNzZWxfajEgYmVzc2VsX2puIGJlc3NlbF95MCBiZXNzZWxfeTEgYmVzc2VsX3luIGVyZiBlcmZjIGVyZmNfc2NhbGVkIGdhbW1hIGxvZ19nYW1tYSBoeXBvdCBub3JtMiAnICtcbiAgICAgICdhdG9taWNfZGVmaW5lIGF0b21pY19yZWYgZXhlY3V0ZV9jb21tYW5kX2xpbmUgbGVhZHogdHJhaWx6IHN0b3JhZ2Vfc2l6ZSBtZXJnZV9iaXRzICcgK1xuICAgICAgJ2JnZSBiZ3QgYmxlIGJsdCBkc2hpZnRsIGRzaGlmdHIgZmluZGxvYyBpYWxsIGlhbnkgaXBhcml0eSBpbWFnZV9pbmRleCBsY29ib3VuZCB1Y29ib3VuZCBtYXNrbCBtYXNrciAnICtcbiAgICAgICdudW1faW1hZ2VzIHBhcml0eSBwb3BjbnQgcG9wcGFyIHNoaWZ0YSBzaGlmdGwgc2hpZnRyIHRoaXNfaW1hZ2UgJyArXG4gICAgICAvLyBJUlBGOTAgc3BlY2lhbCBidWlsdF9pbnNcbiAgICAgICdJUlBfQUxJR04gaXJwX2hlcmUnXG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogRl9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ3N0cmluZycsIHJlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtJyxcbiAgICAgICAgaWxsZWdhbDogJ1skez1cXFxcbl0nLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCBQQVJBTVNdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCchJywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLkNPTU1FTlQoJ2JlZ2luX2RvYycsICdlbmRfZG9jJywge3JlbGV2YW5jZTogMTB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoPz1cXFxcYnxcXFxcK3xcXFxcLXxcXFxcLikoPz1cXFxcLlxcXFxkfFxcXFxkKSg/OlxcXFxkKyk/KD86XFxcXC4/XFxcXGQqKSg/OltkZV1bKy1dP1xcXFxkKyk/XFxcXGJcXFxcLj8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSkFWQV9JREVOVF9SRSA9ICdbXFx1MDBDMC1cXHUwMkI4YS16QS1aXyRdW1xcdTAwQzAtXFx1MDJCOGEtekEtWl8kMC05XSonO1xuICB2YXIgR0VORVJJQ19JREVOVF9SRSA9IEpBVkFfSURFTlRfUkUgKyAnKDwnICsgSkFWQV9JREVOVF9SRSArICcoXFxcXHMqLFxcXFxzKicgKyBKQVZBX0lERU5UX1JFICsgJykqPik/JztcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZmFsc2Ugc3luY2hyb25pemVkIGludCBhYnN0cmFjdCBmbG9hdCBwcml2YXRlIGNoYXIgYm9vbGVhbiBzdGF0aWMgbnVsbCBpZiBjb25zdCAnICtcbiAgICAnZm9yIHRydWUgd2hpbGUgbG9uZyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHZvaWQgJyArXG4gICAgJ2VudW0gZWxzZSBicmVhayB0cmFuc2llbnQgY2F0Y2ggaW5zdGFuY2VvZiBieXRlIHN1cGVyIHZvbGF0aWxlIGNhc2UgYXNzZXJ0IHNob3J0ICcgK1xuICAgICdwYWNrYWdlIGRlZmF1bHQgZG91YmxlIHB1YmxpYyB0cnkgdGhpcyBzd2l0Y2ggY29udGludWUgdGhyb3dzIHByb3RlY3RlZCBwdWJsaWMgcHJpdmF0ZSAnICtcbiAgICAnbW9kdWxlIHJlcXVpcmVzIGV4cG9ydHMgZG8nO1xuXG4gIC8vIGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvdGVjaG5vdGVzL2d1aWRlcy9sYW5ndWFnZS91bmRlcnNjb3Jlcy1saXRlcmFscy5odG1sXG4gIHZhciBKQVZBX05VTUJFUl9SRSA9ICdcXFxcYicgK1xuICAgICcoJyArXG4gICAgICAnMFtiQl0oWzAxXStbMDFfXStbMDFdK3xbMDFdKyknICsgLy8gMGIuLi5cbiAgICAgICd8JyArXG4gICAgICAnMFt4WF0oW2EtZkEtRjAtOV0rW2EtZkEtRjAtOV9dK1thLWZBLUYwLTldK3xbYS1mQS1GMC05XSspJyArIC8vIDB4Li4uXG4gICAgICAnfCcgK1xuICAgICAgJygnICtcbiAgICAgICAgJyhbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKShcXFxcLihbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKSk/JyArXG4gICAgICAgICd8JyArXG4gICAgICAgICdcXFxcLihbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKScgK1xuICAgICAgJyknICtcbiAgICAgICcoW2VFXVstK10/XFxcXGQrKT8nICsgLy8gb2N0YWwsIGRlY2ltYWwsIGZsb2F0XG4gICAgJyknICtcbiAgICAnW2xMZkZdPyc7XG4gIHZhciBKQVZBX05VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IEpBVkFfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydqc3AnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLzxcXC98Iy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2UgOiAwLFxuICAgICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAvLyBlYXQgdXAgQCdzIGluIGVtYWlscyB0byBwcmV2ZW50IHRoZW0gdG8gYmUgcmVjb2duaXplZCBhcyBkb2N0YWdzXG4gICAgICAgICAgICAgIGJlZ2luOiAvXFx3K0AvLCByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbiA6ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6IC9bezs9XS8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgaWxsZWdhbDogL1s6XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIEV4cHJlc3Npb24ga2V5d29yZHMgcHJldmVudCAna2V5d29yZCBOYW1lKC4uLiknIGZyb20gYmVpbmdcbiAgICAgICAgLy8gcmVjb2duaXplZCBhcyBhIGZ1bmN0aW9uIGRlZmluaXRpb25cbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25ldyB0aHJvdyByZXR1cm4gZWxzZScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJygnICsgR0VORVJJQ19JREVOVF9SRSArICdcXFxccyspKycgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvW3s7PV0vLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIEpBVkFfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1tBLVphLXokX11bMC05QS1aYS16JF9dKic7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2luIG9mIGlmIGZvciB3aGlsZSBmaW5hbGx5IHZhciBuZXcgZnVuY3Rpb24gZG8gcmV0dXJuIHZvaWQgZWxzZSBicmVhayBjYXRjaCAnICtcbiAgICAgICdpbnN0YW5jZW9mIHdpdGggdGhyb3cgY2FzZSBkZWZhdWx0IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlICcgK1xuICAgICAgJ2xldCB5aWVsZCBjb25zdCBleHBvcnQgc3VwZXIgZGVidWdnZXIgYXMgYXN5bmMgYXdhaXQgc3RhdGljICcgK1xuICAgICAgLy8gRUNNQVNjcmlwdCA2IG1vZHVsZXMgaW1wb3J0XG4gICAgICAnaW1wb3J0IGZyb20gYXMnXG4gICAgLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBudWxsIHVuZGVmaW5lZCBOYU4gSW5maW5pdHknLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2V2YWwgaXNGaW5pdGUgaXNOYU4gcGFyc2VGbG9hdCBwYXJzZUludCBkZWNvZGVVUkkgZGVjb2RlVVJJQ29tcG9uZW50ICcgK1xuICAgICAgJ2VuY29kZVVSSSBlbmNvZGVVUklDb21wb25lbnQgZXNjYXBlIHVuZXNjYXBlIE9iamVjdCBGdW5jdGlvbiBCb29sZWFuIEVycm9yICcgK1xuICAgICAgJ0V2YWxFcnJvciBJbnRlcm5hbEVycm9yIFJhbmdlRXJyb3IgUmVmZXJlbmNlRXJyb3IgU3RvcEl0ZXJhdGlvbiBTeW50YXhFcnJvciAnICtcbiAgICAgICdUeXBlRXJyb3IgVVJJRXJyb3IgTnVtYmVyIE1hdGggRGF0ZSBTdHJpbmcgUmVnRXhwIEFycmF5IEZsb2F0MzJBcnJheSAnICtcbiAgICAgICdGbG9hdDY0QXJyYXkgSW50MTZBcnJheSBJbnQzMkFycmF5IEludDhBcnJheSBVaW50MTZBcnJheSBVaW50MzJBcnJheSAnICtcbiAgICAgICdVaW50OEFycmF5IFVpbnQ4Q2xhbXBlZEFycmF5IEFycmF5QnVmZmVyIERhdGFWaWV3IEpTT04gSW50bCBhcmd1bWVudHMgcmVxdWlyZSAnICtcbiAgICAgICdtb2R1bGUgY29uc29sZSB3aW5kb3cgZG9jdW1lbnQgU3ltYm9sIFNldCBNYXAgV2Vha1NldCBXZWFrTWFwIFByb3h5IFJlZmxlY3QgJyArXG4gICAgICAnUHJvbWlzZSdcbiAgfTtcbiAgdmFyIEVYUFJFU1NJT05TO1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwW2JCXVswMV0rKScgfSxcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwW29PXVswLTddKyknIH0sXG4gICAgICB7IGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFIH1cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ1xcXFx9JyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtdICAvLyBkZWZpbmVkIGxhdGVyXG4gIH07XG4gIHZhciBURU1QTEFURV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgU1VCU1RcbiAgICBdXG4gIH07XG4gIFNVQlNULmNvbnRhaW5zID0gW1xuICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIFRFTVBMQVRFX1NUUklORyxcbiAgICBOVU1CRVIsXG4gICAgaGxqcy5SRUdFWFBfTU9ERVxuICBdXG4gIHZhciBQQVJBTVNfQ09OVEFJTlMgPSBTVUJTVC5jb250YWlucy5jb25jYXQoW1xuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFXG4gIF0pO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydqcycsICdqc3gnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSAoc3RyaWN0fGFzbSlbJ1wiXS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL14jIS8sIGVuZDogLyQvXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIFRFTVBMQVRFX1NUUklORyxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBOVU1CRVIsXG4gICAgICB7IC8vIG9iamVjdCBhdHRyIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogL1t7LF1cXHMqLywgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBJREVOVF9SRSArICdcXFxccyo6JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW3tjbGFzc05hbWU6ICdhdHRyJywgYmVnaW46IElERU5UX1JFLCByZWxldmFuY2U6IDB9XVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgLy8gXCJ2YWx1ZVwiIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogJygnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIoY2FzZXxyZXR1cm58dGhyb3cpXFxcXGIpXFxcXHMqJyxcbiAgICAgICAga2V5d29yZHM6ICdyZXR1cm4gdGhyb3cgY2FzZScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogJyhcXFxcKC4qP1xcXFwpfCcgKyBJREVOVF9SRSArICcpXFxcXHMqPT4nLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGVuZDogJ1xcXFxzKj0+JyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiBJREVOVF9SRVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXChcXHMqXFwpLyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBQQVJBTVNfQ09OVEFJTlNcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgLy8gRTRYIC8gSlNYXG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8oXFwvXFx3K3xcXHcrXFwvKT4vLFxuICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge2JlZ2luOiAvPFxcdytcXHMqXFwvPi8sIHNraXA6IHRydWV9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC88XFx3Ky8sIGVuZDogLyhcXC9cXHcrfFxcdytcXC8pPi8sIHNraXA6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtiZWdpbjogLzxcXHcrXFxzKlxcLz4vLCBza2lwOiB0cnVlfSxcbiAgICAgICAgICAgICAgICAgICdzZWxmJ1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBJREVOVF9SRX0pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05UQUlOU1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogL1xcW3wlL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbKC5dLyAvLyByZWxldmFuY2UgYm9vc3RlciBmb3IgYSBwYXR0ZXJuIGNvbW1vbiB0byBKUyBsaWJzOiBgJChzb21ldGhpbmcpYCBhbmQgYCQuc29tZXRoaW5nYFxuICAgICAgfSxcbiAgICAgIGhsanMuTUVUSE9EX0dVQVJELFxuICAgICAgeyAvLyBFUzYgY2xhc3NcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLCBlbmQ6IC9bezs9XS8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6IC9bOlwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2JlZ2luS2V5d29yZHM6ICdleHRlbmRzJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NvbnN0cnVjdG9yJywgZW5kOiAvXFx7LywgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMoPyEhKS9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuICB2YXIgUEFSQU0gPSB7XG4gICAgYmVnaW46IC9bXFx3LV0rICo9LywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbe2NsYXNzTmFtZTogJ2F0dHInLCBiZWdpbjogL1tcXHctXSsvfV1cbiAgfTtcbiAgdmFyIFBBUkFNU0JMT0NLID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFtQQVJBTV0sXG4gICAgcmVsZXZhbmNlIDogMFxuICB9O1xuICB2YXIgT1BFUkFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbjogLzpbXFx3XFwtLl0rLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFBBVEggPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1xcQigoW1xcLy5dKVtcXHdcXC0uXFwvPV0rKSsvLFxuICB9O1xuICB2YXIgQ09NTUFORF9QQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogLy0tW1xcd1xcLT1cXC9dKy8sXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd3aWxkZmx5LWNsaSddLFxuICAgIGxleGVtZXM6ICdbYS16XFwtXSsnLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYWxpYXMgYmF0Y2ggY2QgY2xlYXIgY29tbWFuZCBjb25uZWN0IGNvbm5lY3Rpb24tZmFjdG9yeSBjb25uZWN0aW9uLWluZm8gZGF0YS1zb3VyY2UgZGVwbG95ICcgK1xuICAgICAgJ2RlcGxveW1lbnQtaW5mbyBkZXBsb3ltZW50LW92ZXJsYXkgZWNobyBlY2hvLWRtciBoZWxwIGhpc3RvcnkgaWYgamRiYy1kcml2ZXItaW5mbyBqbXMtcXVldWV8MjAgam1zLXRvcGljfDIwIGxzICcgK1xuICAgICAgJ3BhdGNoIHB3ZCBxdWl0IHJlYWQtYXR0cmlidXRlIHJlYWQtb3BlcmF0aW9uIHJlbG9hZCByb2xsb3V0LXBsYW4gcnVuLWJhdGNoIHNldCBzaHV0ZG93biB0cnkgdW5hbGlhcyAnICtcbiAgICAgICd1bmRlcGxveSB1bnNldCB2ZXJzaW9uIHhhLWRhdGEtc291cmNlJywgLy8gbW9kdWxlXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIENPTU1BTkRfUEFSQU1TLFxuICAgICAgT1BFUkFUSU9OLFxuICAgICAgUEFUSCxcbiAgICAgIFBBUkFNU0JMT0NLXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgTElURVJBTFMgPSB7bGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbCd9O1xuICB2YXIgVFlQRVMgPSBbXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgXTtcbiAgdmFyIFZBTFVFX0NPTlRBSU5FUiA9IHtcbiAgICBlbmQ6ICcsJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgY29udGFpbnM6IFRZUEVTLFxuICAgIGtleXdvcmRzOiBMSVRFUkFMU1xuICB9O1xuICB2YXIgT0JKRUNUID0ge1xuICAgIGJlZ2luOiAneycsIGVuZDogJ30nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICB9LFxuICAgICAgaGxqcy5pbmhlcml0KFZBTFVFX0NPTlRBSU5FUiwge2JlZ2luOiAvOi99KVxuICAgIF0sXG4gICAgaWxsZWdhbDogJ1xcXFxTJ1xuICB9O1xuICB2YXIgQVJSQVkgPSB7XG4gICAgYmVnaW46ICdcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICBjb250YWluczogW2hsanMuaW5oZXJpdChWQUxVRV9DT05UQUlORVIpXSwgLy8gaW5oZXJpdCBpcyBhIHdvcmthcm91bmQgZm9yIGEgYnVnIHRoYXQgbWFrZXMgc2hhcmVkIG1vZGVzIHdpdGggZW5kc1dpdGhQYXJlbnQgY29tcGlsZSBvbmx5IHRoZSBlbmRpbmcgb2Ygb25lIG9mIHRoZSBwYXJlbnRzXG4gICAgaWxsZWdhbDogJ1xcXFxTJ1xuICB9O1xuICBUWVBFUy5zcGxpY2UoVFlQRVMubGVuZ3RoLCAwLCBPQkpFQ1QsIEFSUkFZKTtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogVFlQRVMsXG4gICAga2V5d29yZHM6IExJVEVSQUxTLFxuICAgIGlsbGVnYWw6ICdcXFxcUydcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIFNpbmNlIHRoZXJlIGFyZSBudW1lcm91cyBzcGVjaWFsIG5hbWVzIGluIEp1bGlhLCBpdCBpcyB0b28gbXVjaCB0cm91YmxlXG4gIC8vIHRvIG1haW50YWluIHRoZW0gYnkgaGFuZC4gSGVuY2UgdGhlc2UgbmFtZXMgKGkuZS4ga2V5d29yZHMsIGxpdGVyYWxzIGFuZFxuICAvLyBidWlsdC1pbnMpIGFyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEp1bGlhIHYwLjYgaXRzZWxmIHRocm91Z2hcbiAgLy8gdGhlIGZvbGxvd2luZyBzY3JpcHRzIGZvciBlYWNoLlxuXG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICAvLyAjIGtleXdvcmQgZ2VuZXJhdG9yLCBtdWx0aS13b3JkIGtleXdvcmRzIGhhbmRsZWQgbWFudWFsbHkgYmVsb3dcbiAgICAvLyBmb3JlYWNoKHByaW50bG4sIFtcImluXCIsIFwiaXNhXCIsIFwid2hlcmVcIl0pXG4gICAgLy8gZm9yIGt3IGluIEJhc2UuUkVQTENvbXBsZXRpb25zLmNvbXBsZXRlX2tleXdvcmQoXCJcIilcbiAgICAvLyAgICAgaWYgIShjb250YWlucyhrdywgXCIgXCIpIHx8IGt3ID09IFwic3RydWN0XCIpXG4gICAgLy8gICAgICAgICBwcmludGxuKGt3KVxuICAgIC8vICAgICBlbmRcbiAgICAvLyBlbmRcbiAgICBrZXl3b3JkOlxuICAgICAgJ2luIGlzYSB3aGVyZSAnICtcbiAgICAgICdiYXJlbW9kdWxlIGJlZ2luIGJyZWFrIGNhdGNoIGNjYWxsIGNvbnN0IGNvbnRpbnVlIGRvIGVsc2UgZWxzZWlmIGVuZCBleHBvcnQgZmFsc2UgZmluYWxseSBmb3IgZnVuY3Rpb24gJyArXG4gICAgICAnZ2xvYmFsIGlmIGltcG9ydCBpbXBvcnRhbGwgbGV0IGxvY2FsIG1hY3JvIG1vZHVsZSBxdW90ZSByZXR1cm4gdHJ1ZSB0cnkgdXNpbmcgd2hpbGUgJyArXG4gICAgICAvLyBsZWdhY3ksIHRvIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIG5leHQgcmVsZWFzZVxuICAgICAgJ3R5cGUgaW1tdXRhYmxlIGFic3RyYWN0IGJpdHN0eXBlIHR5cGVhbGlhcyAnLFxuXG4gICAgLy8gIyBsaXRlcmFsIGdlbmVyYXRvclxuICAgIC8vIHByaW50bG4oXCJ0cnVlXCIpXG4gICAgLy8gcHJpbnRsbihcImZhbHNlXCIpXG4gICAgLy8gZm9yIG5hbWUgaW4gQmFzZS5SRVBMQ29tcGxldGlvbnMuY29tcGxldGlvbnMoXCJcIiwgMClbMV1cbiAgICAvLyAgICAgdHJ5XG4gICAgLy8gICAgICAgICB2ID0gZXZhbChTeW1ib2wobmFtZSkpXG4gICAgLy8gICAgICAgICBpZiAhKHYgaXNhIEZ1bmN0aW9uIHx8IHYgaXNhIFR5cGUgfHwgdiBpc2EgVHlwZVZhciB8fCB2IGlzYSBNb2R1bGUgfHwgdiBpc2EgQ29sb24pXG4gICAgLy8gICAgICAgICAgICAgcHJpbnRsbihuYW1lKVxuICAgIC8vICAgICAgICAgZW5kXG4gICAgLy8gICAgIGVuZFxuICAgIC8vIGVuZFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSAnICtcbiAgICAgICdBUkdTIENfTlVMTCBEZXZOdWxsIEVORElBTl9CT00gRU5WIEkgSW5mIEluZjE2IEluZjMyIEluZjY0IEluc2VydGlvblNvcnQgSlVMSUFfSE9NRSBMT0FEX1BBVEggTWVyZ2VTb3J0ICcgK1xuICAgICAgJ05hTiBOYU4xNiBOYU4zMiBOYU42NCBQUk9HUkFNX0ZJTEUgUXVpY2tTb3J0IFJvdW5kRG93biBSb3VuZEZyb21aZXJvIFJvdW5kTmVhcmVzdCBSb3VuZE5lYXJlc3RUaWVzQXdheSAnICtcbiAgICAgICdSb3VuZE5lYXJlc3RUaWVzVXAgUm91bmRUb1plcm8gUm91bmRVcCBTVERFUlIgU1RESU4gU1RET1VUIFZFUlNJT04gY2F0YWxhbiBlfDAgZXV8MCBldWxlcmdhbW1hIGdvbGRlbiBpbSAnICtcbiAgICAgICdub3RoaW5nIHBpIM6zIM+AIM+GICcsXG5cbiAgICAvLyAjIGJ1aWx0X2luIGdlbmVyYXRvcjpcbiAgICAvLyBmb3IgbmFtZSBpbiBCYXNlLlJFUExDb21wbGV0aW9ucy5jb21wbGV0aW9ucyhcIlwiLCAwKVsxXVxuICAgIC8vICAgICB0cnlcbiAgICAvLyAgICAgICAgIHYgPSBldmFsKFN5bWJvbChuYW1lKSlcbiAgICAvLyAgICAgICAgIGlmIHYgaXNhIFR5cGUgfHwgdiBpc2EgVHlwZVZhclxuICAgIC8vICAgICAgICAgICAgIHByaW50bG4obmFtZSlcbiAgICAvLyAgICAgICAgIGVuZFxuICAgIC8vICAgICBlbmRcbiAgICAvLyBlbmRcbiAgICBidWlsdF9pbjpcbiAgICAgICdBTlkgQWJzdHJhY3RBcnJheSBBYnN0cmFjdENoYW5uZWwgQWJzdHJhY3RGbG9hdCBBYnN0cmFjdE1hdHJpeCBBYnN0cmFjdFJORyBBYnN0cmFjdFNlcmlhbGl6ZXIgQWJzdHJhY3RTZXQgJyArXG4gICAgICAnQWJzdHJhY3RTcGFyc2VBcnJheSBBYnN0cmFjdFNwYXJzZU1hdHJpeCBBYnN0cmFjdFNwYXJzZVZlY3RvciBBYnN0cmFjdFN0cmluZyBBYnN0cmFjdFVuaXRSYW5nZSBBYnN0cmFjdFZlY09yTWF0ICcgK1xuICAgICAgJ0Fic3RyYWN0VmVjdG9yIEFueSBBcmd1bWVudEVycm9yIEFycmF5IEFzc2VydGlvbkVycm9yIEFzc29jaWF0aXZlIEJhc2U2NERlY29kZVBpcGUgQmFzZTY0RW5jb2RlUGlwZSBCaWRpYWdvbmFsICcrXG4gICAgICAnQmlnRmxvYXQgQmlnSW50IEJpdEFycmF5IEJpdE1hdHJpeCBCaXRWZWN0b3IgQm9vbCBCb3VuZHNFcnJvciBCdWZmZXJTdHJlYW0gQ2FjaGluZ1Bvb2wgQ2FwdHVyZWRFeGNlcHRpb24gJyArXG4gICAgICAnQ2FydGVzaWFuSW5kZXggQ2FydGVzaWFuUmFuZ2UgQ2NoYXIgQ2RvdWJsZSBDZmxvYXQgQ2hhbm5lbCBDaGFyIENpbnQgQ2ludG1heF90IENsb25nIENsb25nbG9uZyBDbHVzdGVyTWFuYWdlciAnICtcbiAgICAgICdDbWQgQ29kZUluZm8gQ29sb24gQ29tcGxleCBDb21wbGV4MTI4IENvbXBsZXgzMiBDb21wbGV4NjQgQ29tcG9zaXRlRXhjZXB0aW9uIENvbmRpdGlvbiBDb25qQXJyYXkgQ29uak1hdHJpeCAnICtcbiAgICAgICdDb25qVmVjdG9yIENwdHJkaWZmX3QgQ3Nob3J0IENzaXplX3QgQ3NzaXplX3QgQ3N0cmluZyBDdWNoYXIgQ3VpbnQgQ3VpbnRtYXhfdCBDdWxvbmcgQ3Vsb25nbG9uZyBDdXNob3J0IEN3Y2hhcl90ICcgK1xuICAgICAgJ0N3c3RyaW5nIERhdGFUeXBlIERhdGUgRGF0ZUZvcm1hdCBEYXRlVGltZSBEZW5zZUFycmF5IERlbnNlTWF0cml4IERlbnNlVmVjT3JNYXQgRGVuc2VWZWN0b3IgRGlhZ29uYWwgRGljdCAnICtcbiAgICAgICdEaW1lbnNpb25NaXNtYXRjaCBEaW1zIERpcmVjdEluZGV4U3RyaW5nIERpc3BsYXkgRGl2aWRlRXJyb3IgRG9tYWluRXJyb3IgRU9GRXJyb3IgRWFjaExpbmUgRW51bSBFbnVtZXJhdGUgJyArXG4gICAgICAnRXJyb3JFeGNlcHRpb24gRXhjZXB0aW9uIEV4cG9uZW50aWFsQmFja09mZiBFeHByIEZhY3Rvcml6YXRpb24gRmlsZU1vbml0b3IgRmxvYXQxNiBGbG9hdDMyIEZsb2F0NjQgRnVuY3Rpb24gJyArXG4gICAgICAnRnV0dXJlIEdsb2JhbFJlZiBHb3RvTm9kZSBIVE1MIEhlcm1pdGlhbiBJTyBJT0J1ZmZlciBJT0NvbnRleHQgSU9TdHJlYW0gSVBBZGRyIElQdjQgSVB2NiBJbmRleENhcnRlc2lhbiBJbmRleExpbmVhciAnICtcbiAgICAgICdJbmRleFN0eWxlIEluZXhhY3RFcnJvciBJbml0RXJyb3IgSW50IEludDEyOCBJbnQxNiBJbnQzMiBJbnQ2NCBJbnQ4IEludFNldCBJbnRlZ2VyIEludGVycnVwdEV4Y2VwdGlvbiAnICtcbiAgICAgICdJbnZhbGlkU3RhdGVFeGNlcHRpb24gSXJyYXRpb25hbCBLZXlFcnJvciBMYWJlbE5vZGUgTGluU3BhY2UgTGluZU51bWJlck5vZGUgTG9hZEVycm9yIExvd2VyVHJpYW5ndWxhciBNSU1FIE1hdHJpeCAnICtcbiAgICAgICdNZXJzZW5uZVR3aXN0ZXIgTWV0aG9kIE1ldGhvZEVycm9yIE1ldGhvZFRhYmxlIE1vZHVsZSBOVHVwbGUgTmV3dmFyTm9kZSBOdWxsRXhjZXB0aW9uIE51bGxhYmxlIE51bWJlciBPYmplY3RJZERpY3QgJyArXG4gICAgICAnT3JkaW5hbFJhbmdlIE91dE9mTWVtb3J5RXJyb3IgT3ZlcmZsb3dFcnJvciBQYWlyIFBhcnNlRXJyb3IgUGFydGlhbFF1aWNrU29ydCBQZXJtdXRlZERpbXNBcnJheSBQaXBlICcgK1xuICAgICAgJ1BvbGxpbmdGaWxlV2F0Y2hlciBQcm9jZXNzRXhpdGVkRXhjZXB0aW9uIFB0ciBRdW90ZU5vZGUgUmFuZG9tRGV2aWNlIFJhbmdlIFJhbmdlSW5kZXggUmF0aW9uYWwgUmF3RkQgJyArXG4gICAgICAnUmVhZE9ubHlNZW1vcnlFcnJvciBSZWFsIFJlZW50cmFudExvY2sgUmVmIFJlZ2V4IFJlZ2V4TWF0Y2ggUmVtb3RlQ2hhbm5lbCBSZW1vdGVFeGNlcHRpb24gUmV2U3RyaW5nIFJvdW5kaW5nTW9kZSAnICtcbiAgICAgICdSb3dWZWN0b3IgU1NBVmFsdWUgU2VnbWVudGF0aW9uRmF1bHQgU2VyaWFsaXphdGlvblN0YXRlIFNldCBTaGFyZWRBcnJheSBTaGFyZWRNYXRyaXggU2hhcmVkVmVjdG9yIFNpZ25lZCAnICtcbiAgICAgICdTaW1wbGVWZWN0b3IgU2xvdCBTbG90TnVtYmVyIFNwYXJzZU1hdHJpeENTQyBTcGFyc2VWZWN0b3IgU3RhY2tGcmFtZSBTdGFja092ZXJmbG93RXJyb3IgU3RhY2tUcmFjZSBTdGVwUmFuZ2UgJyArXG4gICAgICAnU3RlcFJhbmdlTGVuIFN0cmlkZWRBcnJheSBTdHJpZGVkTWF0cml4IFN0cmlkZWRWZWNPck1hdCBTdHJpZGVkVmVjdG9yIFN0cmluZyBTdWJBcnJheSBTdWJTdHJpbmcgU3ltVHJpZGlhZ29uYWwgJyArXG4gICAgICAnU3ltYm9sIFN5bW1ldHJpYyBTeXN0ZW1FcnJvciBUQ1BTb2NrZXQgVGFzayBUZXh0IFRleHREaXNwbGF5IFRpbWVyIFRyaWRpYWdvbmFsIFR1cGxlIFR5cGUgVHlwZUVycm9yIFR5cGVNYXBFbnRyeSAnICtcbiAgICAgICdUeXBlTWFwTGV2ZWwgVHlwZU5hbWUgVHlwZVZhciBUeXBlZFNsb3QgVURQU29ja2V0IFVJbnQgVUludDEyOCBVSW50MTYgVUludDMyIFVJbnQ2NCBVSW50OCBVbmRlZlJlZkVycm9yIFVuZGVmVmFyRXJyb3IgJyArXG4gICAgICAnVW5pY29kZUVycm9yIFVuaWZvcm1TY2FsaW5nIFVuaW9uIFVuaW9uQWxsIFVuaXRSYW5nZSBVbnNpZ25lZCBVcHBlclRyaWFuZ3VsYXIgVmFsIFZhcmFyZyBWZWNFbGVtZW50IFZlY09yTWF0IFZlY3RvciAnICtcbiAgICAgICdWZXJzaW9uTnVtYmVyIFZvaWQgV2Vha0tleURpY3QgV2Vha1JlZiBXb3JrZXJDb25maWcgV29ya2VyUG9vbCAnXG4gIH07XG5cbiAgLy8gcmVmOiBodHRwOi8vanVsaWEucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC9tYW51YWwvdmFyaWFibGVzLyNhbGxvd2VkLXZhcmlhYmxlLW5hbWVzXG4gIHZhciBWQVJJQUJMRV9OQU1FX1JFID0gJ1tBLVphLXpfXFxcXHUwMEExLVxcXFx1RkZGRl1bQS1aYS16XzAtOVxcXFx1MDBBMS1cXFxcdUZGRkZdKic7XG5cbiAgLy8gcGxhY2Vob2xkZXIgZm9yIHJlY3Vyc2l2ZSBzZWxmLXJlZmVyZW5jZVxuICB2YXIgREVGQVVMVCA9IHtcbiAgICBsZXhlbWVzOiBWQVJJQUJMRV9OQU1FX1JFLCBrZXl3b3JkczogS0VZV09SRFMsIGlsbGVnYWw6IC88XFwvL1xuICB9O1xuXG4gIC8vIHJlZjogaHR0cDovL2p1bGlhLnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvbWFudWFsL2ludGVnZXJzLWFuZC1mbG9hdGluZy1wb2ludC1udW1iZXJzL1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgLy8gc3VwcG9ydGVkIG51bWVyaWMgbGl0ZXJhbHM6XG4gICAgLy8gICogYmluYXJ5IGxpdGVyYWwgKGUuZy4gMHgxMClcbiAgICAvLyAgKiBvY3RhbCBsaXRlcmFsIChlLmcuIDBvNzY1NDMyMTApXG4gICAgLy8gICogaGV4YWRlY2ltYWwgbGl0ZXJhbCAoZS5nLiAweGZlZGNiYTg3NjU0MzIxMClcbiAgICAvLyAgKiBoZXhhZGVjaW1hbCBmbG9hdGluZyBwb2ludCBsaXRlcmFsIChlLmcuIDB4MXAwLCAweDEuMnAyKVxuICAgIC8vICAqIGRlY2ltYWwgbGl0ZXJhbCAoZS5nLiA5ODc2NTQzMjEwLCAxMDBfMDAwXzAwMClcbiAgICAvLyAgKiBmbG9hdGluZyBwb2ludGUgbGl0ZXJhbCAoZS5nLiAxLjIsIDEuMmYsIC4yLCAxLiwgMS4yZTEwLCAxLjJlLTEwKVxuICAgIGJlZ2luOiAvKFxcYjB4W1xcZF9dKihcXC5bXFxkX10qKT98MHhcXC5cXGRbXFxkX10qKXBbLStdP1xcZCt8XFxiMFtib3hdW2EtZkEtRjAtOV1bYS1mQS1GMC05X10qfChcXGJcXGRbXFxkX10qKFxcLltcXGRfXSopP3xcXC5cXGRbXFxkX10qKShbZUVmRl1bLStdP1xcZCspPy8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIENIQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycoLnxcXFxcW3hYdVVdW2EtekEtWjAtOV0rKScvXG4gIH07XG5cbiAgdmFyIElOVEVSUE9MQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvXFwkXFwoLywgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcblxuICB2YXIgSU5URVJQT0xBVEVEX1ZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogJ1xcXFwkJyArIFZBUklBQkxFX05BTUVfUkVcbiAgfTtcblxuICAvLyBUT0RPOiBuZWF0bHkgZXNjYXBlIG5vcm1hbCBjb2RlIGluIHN0cmluZyBsaXRlcmFsXG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgSU5URVJQT0xBVElPTiwgSU5URVJQT0xBVEVEX1ZBUklBQkxFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogL1xcdypcIlwiXCIvLCBlbmQ6IC9cIlwiXCJcXHcqLywgcmVsZXZhbmNlOiAxMCB9LFxuICAgICAgeyBiZWdpbjogL1xcdypcIi8sIGVuZDogL1wiXFx3Ki8gfVxuICAgIF1cbiAgfTtcblxuICB2YXIgQ09NTUFORCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBJTlRFUlBPTEFUSU9OLCBJTlRFUlBPTEFURURfVkFSSUFCTEVdLFxuICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnXG4gIH07XG5cbiAgdmFyIE1BQ1JPQ0FMTCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ0AnICsgVkFSSUFCTEVfTkFNRV9SRVxuICB9O1xuXG4gIHZhciBDT01NRU5UID0ge1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnIz0nLCBlbmQ6ICc9IycsIHJlbGV2YW5jZTogMTAgfSxcbiAgICAgIHsgYmVnaW46ICcjJywgZW5kOiAnJCcgfVxuICAgIF1cbiAgfTtcblxuICBERUZBVUxULmNvbnRhaW5zID0gW1xuICAgIE5VTUJFUixcbiAgICBDSEFSLFxuICAgIFNUUklORyxcbiAgICBDT01NQU5ELFxuICAgIE1BQ1JPQ0FMTCxcbiAgICBDT01NRU5ULFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICBiZWdpbjpcbiAgICAgICAgJ1xcXFxiKCgoYWJzdHJhY3R8cHJpbWl0aXZlKVxcXFxzKyl0eXBlfChtdXRhYmxlXFxcXHMrKT9zdHJ1Y3QpXFxcXGInXG4gICAgfSxcbiAgICB7YmVnaW46IC88Oi99ICAvLyByZWxldmFuY2UgYm9vc3RlclxuICBdO1xuICBJTlRFUlBPTEFUSU9OLmNvbnRhaW5zID0gREVGQVVMVC5jb250YWlucztcblxuICByZXR1cm4gREVGQVVMVDtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXmp1bGlhPi8sXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIC8vIGVuZCB0aGUgaGlnaGxpZ2h0aW5nIGlmIHdlIGFyZSBvbiBhIG5ldyBsaW5lIGFuZCB0aGUgbGluZSBkb2VzIG5vdCBoYXZlIGF0XG4gICAgICAgICAgLy8gbGVhc3Qgc2l4IHNwYWNlcyBpbiB0aGUgYmVnaW5uaW5nXG4gICAgICAgICAgZW5kOiAvXig/IVsgXXs2fSkvLFxuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnanVsaWEnXG4gICAgICB9LFxuICAgICAgLy8gamxkb2N0ZXN0IE1hcmtkb3duIGJsb2NrcyBhcmUgdXNlZCBpbiB0aGUgSnVsaWEgbWFudWFsIGFuZCBwYWNrYWdlIGRvY3MgaW5kaWNhdGVcbiAgICAgIC8vIGNvZGUgc25pcHBldHMgdGhhdCBzaG91bGQgYmUgdmVyaWZpZWQgd2hlbiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBidWlsdC4gVGhleSBjYW4gYmVcbiAgICAgIC8vIGVpdGhlciBSRVBMLWxpa2Ugb3Igc2NyaXB0LWxpa2UsIGJ1dCBhcmUgdXN1YWxseSBSRVBMLWxpa2UgYW5kIHRoZXJlZm9yZSB3ZSBhcHBseVxuICAgICAgLy8ganVsaWEtcmVwbCBoaWdobGlnaHRpbmcgdG8gdGhlbS4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gRG9jdW1lbnRlcidzXG4gICAgICAvLyBtYW51YWw6IGh0dHBzOi8vanVsaWFkb2NzLmdpdGh1Yi5pby9Eb2N1bWVudGVyLmpsL2xhdGVzdC9tYW4vZG9jdGVzdHMuaHRtbFxuICAgICAgYWxpYXNlczogWydqbGRvY3Rlc3QnXVxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWJzdHJhY3QgYXMgdmFsIHZhciB2YXJhcmcgZ2V0IHNldCBjbGFzcyBvYmplY3Qgb3BlbiBwcml2YXRlIHByb3RlY3RlZCBwdWJsaWMgbm9pbmxpbmUgJyArXG4gICAgICAnY3Jvc3NpbmxpbmUgZHluYW1pYyBmaW5hbCBlbnVtIGlmIGVsc2UgZG8gd2hpbGUgZm9yIHdoZW4gdGhyb3cgdHJ5IGNhdGNoIGZpbmFsbHkgJyArXG4gICAgICAnaW1wb3J0IHBhY2thZ2UgaXMgaW4gZnVuIG92ZXJyaWRlIGNvbXBhbmlvbiByZWlmaWVkIGlubGluZSBsYXRlaW5pdCBpbml0JyArXG4gICAgICAnaW50ZXJmYWNlIGFubm90YXRpb24gZGF0YSBzZWFsZWQgaW50ZXJuYWwgaW5maXggb3BlcmF0b3Igb3V0IGJ5IGNvbnN0cnVjdG9yIHN1cGVyICcgK1xuICAgICAgLy8gdG8gYmUgZGVsZXRlZCBzb29uXG4gICAgICAndHJhaXQgdm9sYXRpbGUgdHJhbnNpZW50IG5hdGl2ZSBkZWZhdWx0JyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdCeXRlIFNob3J0IENoYXIgSW50IExvbmcgQm9vbGVhbiBGbG9hdCBEb3VibGUgVm9pZCBVbml0IE5vdGhpbmcnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBudWxsJ1xuICB9O1xuICB2YXIgS0VZV09SRFNfV0lUSF9MQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogL1xcYihicmVha3xjb250aW51ZXxyZXR1cm58dGhpcylcXGIvLFxuICAgIHN0YXJ0czoge1xuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgYmVnaW46IC9AXFx3Ky9cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfTtcbiAgdmFyIExBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnQCdcbiAgfTtcblxuICAvLyBmb3Igc3RyaW5nIHRlbXBsYXRlc1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnXFxcXCR7JywgZW5kOiAnfScsIGNvbnRhaW5zOiBbaGxqcy5BUE9TX1NUUklOR19NT0RFLCBobGpzLkNfTlVNQkVSX01PREVdXG4gIH07XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsIGJlZ2luOiAnXFxcXCQnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbVkFSSUFCTEUsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIC8vIENhbid0IHVzZSBidWlsdC1pbiBtb2RlcyBlYXNpbHksIGFzIHdlIHdhbnQgdG8gdXNlIFNUUklORyBpbiB0aGUgbWV0YVxuICAgICAgLy8gY29udGV4dCBhcyAnbWV0YS1zdHJpbmcnIGFuZCB0aGVyZSdzIG5vIHN5bnRheCB0byByZW1vdmUgZXhwbGljaXRseSBzZXRcbiAgICAgIC8vIGNsYXNzTmFtZXMgaW4gYnVpbHQtaW4gbW9kZXMuXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJJQUJMRSwgU1VCU1RdXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBBTk5PVEFUSU9OX1VTRV9TSVRFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJ0AoPzpmaWxlfHByb3BlcnR5fGZpZWxkfGdldHxzZXR8cmVjZWl2ZXJ8cGFyYW18c2V0cGFyYW18ZGVsZWdhdGUpXFxcXHMqOig/OlxcXFxzKicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnKT8nXG4gIH07XG4gIHZhciBBTk5PVEFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJ0AnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoU1RSSU5HLCB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnfSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWlucyA6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2UgOiAwLFxuICAgICAgICAgIGNvbnRhaW5zIDogW3tcbiAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgYmVnaW4gOiAnQFtBLVphLXpdKydcbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIEtFWVdPUkRTX1dJVEhfTEFCRUwsXG4gICAgICBMQUJFTCxcbiAgICAgIEFOTk9UQVRJT05fVVNFX1NJVEUsXG4gICAgICBBTk5PVEFUSU9OLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW4nLCBlbmQ6ICdbKF18JCcsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGlsbGVnYWw6IC9mdW5cXHMrKDwuKj4pP1teXFxzXFwoXSsoXFxzK1teXFxzXFwoXSspXFxzKj0vLFxuICAgICAgICByZWxldmFuY2U6IDUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46IC88LywgZW5kOiAvPi8sIGtleXdvcmRzOiAncmVpZmllZCcsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAvOi8sIGVuZDogL1s9LFxcL10vLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAge2NsYXNzTmFtZTogJ3R5cGUnLCBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFfSxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIEFOTk9UQVRJT05fVVNFX1NJVEUsXG4gICAgICAgICAgICAgIEFOTk9UQVRJT04sXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSB0cmFpdCcsIGVuZDogL1s6XFx7KF18JC8sIC8vIHJlbW92ZSAndHJhaXQnIHdoZW4gcmVtb3ZlZCBmcm9tIEtFWVdPUkRTXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdleHRlbmRzIGltcGxlbWVudHMnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAncHVibGljIHByb3RlY3RlZCBpbnRlcm5hbCBwcml2YXRlIGNvbnN0cnVjdG9yJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+LywgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAvWyw6XVxccyovLCBlbmQ6IC9bPFxcKCxdfCQvLCBleGNsdWRlQmVnaW46IHRydWUsIHJldHVybkVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgQU5OT1RBVElPTl9VU0VfU0lURSxcbiAgICAgICAgICBBTk5PVEFUSU9OXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogXCJeIyEvdXNyL2Jpbi9lbnZcIiwgZW5kOiAnJCcsXG4gICAgICAgIGlsbGVnYWw6ICdcXG4nXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIExBU1NPX0lERU5UX1JFID0gJ1thLXpBLVpfXVtcXFxcdy5dKic7XG4gIHZhciBMQVNTT19BTkdMRV9SRSA9ICc8XFxcXD8obGFzc28oc2NyaXB0KT98PSknO1xuICB2YXIgTEFTU09fQ0xPU0VfUkUgPSAnXFxcXF18XFxcXD8+JztcbiAgdmFyIExBU1NPX0tFWVdPUkRTID0ge1xuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBub25lIG1pbmltYWwgZnVsbCBhbGwgdm9pZCBhbmQgb3Igbm90ICcgK1xuICAgICAgJ2J3IG5idyBldyBuZXcgY24gbmNuIGx0IGx0ZSBndCBndGUgZXEgbmVxIHJ4IG5yeCBmdCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnYXJyYXkgZGF0ZSBkZWNpbWFsIGR1cmF0aW9uIGludGVnZXIgbWFwIHBhaXIgc3RyaW5nIHRhZyB4bWwgbnVsbCAnICtcbiAgICAgICdib29sZWFuIGJ5dGVzIGtleXdvcmQgbGlzdCBsb2NhbGUgcXVldWUgc2V0IHN0YWNrIHN0YXRpY2FycmF5ICcgK1xuICAgICAgJ2xvY2FsIHZhciB2YXJpYWJsZSBnbG9iYWwgZGF0YSBzZWxmIGluaGVyaXRlZCBjdXJyZW50Y2FwdHVyZSBnaXZlbmJsb2NrJyxcbiAgICBrZXl3b3JkOlxuICAgICAgJ2NhY2hlIGRhdGFiYXNlX25hbWVzIGRhdGFiYXNlX3NjaGVtYW5hbWVzIGRhdGFiYXNlX3RhYmxlbmFtZXMgJyArXG4gICAgICAnZGVmaW5lX3RhZyBkZWZpbmVfdHlwZSBlbWFpbF9iYXRjaCBlbmNvZGVfc2V0IGh0bWxfY29tbWVudCBoYW5kbGUgJyArXG4gICAgICAnaGFuZGxlX2Vycm9yIGhlYWRlciBpZiBpbmxpbmUgaXRlcmF0ZSBsamF4X3RhcmdldCBsaW5rICcgK1xuICAgICAgJ2xpbmtfY3VycmVudGFjdGlvbiBsaW5rX2N1cnJlbnRncm91cCBsaW5rX2N1cnJlbnRyZWNvcmQgbGlua19kZXRhaWwgJyArXG4gICAgICAnbGlua19maXJzdGdyb3VwIGxpbmtfZmlyc3RyZWNvcmQgbGlua19sYXN0Z3JvdXAgbGlua19sYXN0cmVjb3JkICcgK1xuICAgICAgJ2xpbmtfbmV4dGdyb3VwIGxpbmtfbmV4dHJlY29yZCBsaW5rX3ByZXZncm91cCBsaW5rX3ByZXZyZWNvcmQgbG9nICcgK1xuICAgICAgJ2xvb3AgbmFtZXNwYWNlX3VzaW5nIG91dHB1dF9ub25lIHBvcnRhbCBwcml2YXRlIHByb3RlY3QgcmVjb3JkcyAnICtcbiAgICAgICdyZWZlcmVyIHJlZmVycmVyIHJlcGVhdGluZyByZXN1bHRzZXQgcm93cyBzZWFyY2hfYXJncyAnICtcbiAgICAgICdzZWFyY2hfYXJndW1lbnRzIHNlbGVjdCBzb3J0X2FyZ3Mgc29ydF9hcmd1bWVudHMgdGhyZWFkX2F0b21pYyAnICtcbiAgICAgICd2YWx1ZV9saXN0IHdoaWxlIGFib3J0IGNhc2UgZWxzZSBmYWlsX2lmIGZhaWxfaWZub3QgZmFpbCBpZl9lbXB0eSAnICtcbiAgICAgICdpZl9mYWxzZSBpZl9udWxsIGlmX3RydWUgbG9vcF9hYm9ydCBsb29wX2NvbnRpbnVlIGxvb3BfY291bnQgcGFyYW1zICcgK1xuICAgICAgJ3BhcmFtc191cCByZXR1cm4gcmV0dXJuX3ZhbHVlIHJ1bl9jaGlsZHJlbiBzb2FwX2RlZmluZXRhZyAnICtcbiAgICAgICdzb2FwX2xhc3RyZXF1ZXN0IHNvYXBfbGFzdHJlc3BvbnNlIHRhZ19uYW1lIGFzY2VuZGluZyBhdmVyYWdlIGJ5ICcgK1xuICAgICAgJ2RlZmluZSBkZXNjZW5kaW5nIGRvIGVxdWFscyBmcm96ZW4gZ3JvdXAgaGFuZGxlX2ZhaWx1cmUgaW1wb3J0IGluICcgK1xuICAgICAgJ2ludG8gam9pbiBsZXQgbWF0Y2ggbWF4IG1pbiBvbiBvcmRlciBwYXJlbnQgcHJvdGVjdGVkIHByb3ZpZGUgcHVibGljICcgK1xuICAgICAgJ3JlcXVpcmUgcmV0dXJuaG9tZSBza2lwIHNwbGl0X3RocmVhZCBzdW0gdGFrZSB0aHJlYWQgdG8gdHJhaXQgdHlwZSAnICtcbiAgICAgICd3aGVyZSB3aXRoIHlpZWxkIHlpZWxkaG9tZSdcbiAgfTtcbiAgdmFyIEhUTUxfQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnPCEtLScsXG4gICAgJy0tPicsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgTEFTU09fTk9QUk9DRVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXFxcXFtub3Byb2Nlc3NcXFxcXScsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdcXFxcWy9ub3Byb2Nlc3NcXFxcXScsXG4gICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICBjb250YWluczogW0hUTUxfQ09NTUVOVF1cbiAgICB9XG4gIH07XG4gIHZhciBMQVNTT19TVEFSVCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ1xcXFxbL25vcHJvY2Vzc3wnICsgTEFTU09fQU5HTEVfUkVcbiAgfTtcbiAgdmFyIExBU1NPX0RBVEFNRU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1xcJycgKyBMQVNTT19JREVOVF9SRSArICdcXCcnXG4gIH07XG4gIHZhciBMQVNTT19DT0RFID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfTlVNQkVSX01PREUsIHtiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICd8KC0/aW5maW5pdHl8TmFOKVxcXFxiJ30pLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnXG4gICAgfSxcbiAgICB7IC8vIHZhcmlhYmxlc1xuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnWyMkXScgKyBMQVNTT19JREVOVF9SRVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICBpbGxlZ2FsOiAnXFxcXFcnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgYmVnaW46ICc6OlxcXFxzKicsIGVuZDogTEFTU09fSURFTlRfUkUsXG4gICAgICBpbGxlZ2FsOiAnXFxcXFcnXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnLSg/IWluZmluaXR5KScgKyBMQVNTT19JREVOVF9SRSxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnKFxcXFwuXFxcXC5cXFxcLiknXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAvKC0+fFxcLilcXHMqLyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbTEFTU09fREFUQU1FTUJFUl1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWZpbmUnLFxuICAgICAgcmV0dXJuRW5kOiB0cnVlLCBlbmQ6ICdcXFxcKHw9PicsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IExBU1NPX0lERU5UX1JFICsgJyg9KD8hPikpP3xbLSsqLyVdKD8hPiknfSlcbiAgICAgIF1cbiAgICB9XG4gIF07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydscycsICdsYXNzb3NjcmlwdCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogTEFTU09fSURFTlRfUkUgKyAnfCZbbGdddDsnLFxuICAgIGtleXdvcmRzOiBMQVNTT19LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IExBU1NPX0NMT1NFX1JFLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHN0YXJ0czogeyAvLyBtYXJrdXBcbiAgICAgICAgICBlbmQ6ICdcXFxcW3wnICsgTEFTU09fQU5HTEVfUkUsXG4gICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBjb250YWluczogW0hUTUxfQ09NTUVOVF1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIExBU1NPX05PUFJPQ0VTUyxcbiAgICAgIExBU1NPX1NUQVJULFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdcXFxcW25vX3NxdWFyZV9icmFja2V0cycsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcXFxbL25vX3NxdWFyZV9icmFja2V0c1xcXFxdJywgLy8gbm90IGltcGxlbWVudGVkIGluIHRoZSBsYW5ndWFnZVxuICAgICAgICAgIGxleGVtZXM6IExBU1NPX0lERU5UX1JFICsgJ3wmW2xnXXQ7JyxcbiAgICAgICAgICBrZXl3b3JkczogTEFTU09fS0VZV09SRFMsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICAgIGJlZ2luOiBMQVNTT19DTE9TRV9SRSxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgICAgICBlbmQ6ICdcXFxcW25vcHJvY2Vzc1xcXFxdfCcgKyBMQVNTT19BTkdMRV9SRSxcbiAgICAgICAgICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtIVE1MX0NPTU1FTlRdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBMQVNTT19OT1BST0NFU1MsXG4gICAgICAgICAgICBMQVNTT19TVEFSVFxuICAgICAgICAgIF0uY29uY2F0KExBU1NPX0NPREUpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ1xcXFxbJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeIyEnLCBlbmQ6J2xhc3NvOSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXS5jb25jYXQoTEFTU09fQ09ERSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdeZG4nLCBlbmQ6ICc6ICcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN0YXJ0czoge2VuZDogJyQnLCByZWxldmFuY2U6IDB9LFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ15cXFxcdycsIGVuZDogJzogJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3RhcnRzOiB7ZW5kOiAnJCcsIHJlbGV2YW5jZTogMH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICBiZWdpbjogJ14tJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJyMrJyArICdbQS1aYS16XzAtOV0qJyArICdcXFxcKCcsXG4gICAgICAgIGVuZDonIHsnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJyMrJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgYmVnaW46ICdbQS1aYS16X11bQS1aYS16XzAtOV0qJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgICAgICAgICAgZW5kOiAnXCInXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdbQS1aYS16X11bQS1aYS16XzAtOV0qJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFICAgICAgICA9ICdbXFxcXHctXSsnOyAvLyB5ZXMsIExlc3MgaWRlbnRpZmllcnMgbWF5IGJlZ2luIHdpdGggYSBkaWdpdFxuICB2YXIgSU5URVJQX0lERU5UX1JFID0gJygnICsgSURFTlRfUkUgKyAnfEB7JyArIElERU5UX1JFICsgJ30pJztcblxuICAvKiBHZW5lcmljIE1vZGVzICovXG5cbiAgdmFyIFJVTEVTID0gW10sIFZBTFVFID0gW107IC8vIGZvcndhcmQgZGVmLiBmb3IgcmVjdXJzaXZlIG1vZGVzXG5cbiAgdmFyIFNUUklOR19NT0RFID0gZnVuY3Rpb24oYykgeyByZXR1cm4ge1xuICAgIC8vIExlc3Mgc3RyaW5ncyBhcmUgbm90IG11bHRpbGluZSAoYWxzbyBpbmNsdWRlICd+JyBmb3IgbW9yZSBjb25zaXN0ZW50IGNvbG9yaW5nIG9mIFwiZXNjYXBlZFwiIHN0cmluZ3MpXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46ICd+PycgKyBjICsgJy4qPycgKyBjXG4gIH07fTtcblxuICB2YXIgSURFTlRfTU9ERSA9IGZ1bmN0aW9uKG5hbWUsIGJlZ2luLCByZWxldmFuY2UpIHsgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IG5hbWUsIGJlZ2luOiBiZWdpbiwgcmVsZXZhbmNlOiByZWxldmFuY2VcbiAgfTt9O1xuXG4gIHZhciBQQVJFTlNfTU9ERSA9IHtcbiAgICAvLyB1c2VkIG9ubHkgdG8gcHJvcGVybHkgYmFsYW5jZSBuZXN0ZWQgcGFyZW5zIGluc2lkZSBtaXhpbiBjYWxsLCBkZWYuIGFyZyBsaXN0XG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IFZBTFVFLCByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvLyBnZW5lcmljIExlc3MgaGlnaGxpZ2h0ZXIgKHVzZWQgYWxtb3N0IGV2ZXJ5d2hlcmUgZXhjZXB0IHNlbGVjdG9ycyk6XG4gIFZBTFVFLnB1c2goXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgU1RSSU5HX01PREUoXCInXCIpLFxuICAgIFNUUklOR19NT0RFKCdcIicpLFxuICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLCAvLyBmaXhtZTogaXQgZG9lcyBub3QgaW5jbHVkZSBkb3QgZm9yIG51bWJlcnMgbGlrZSAuNWVtIDooXG4gICAge1xuICAgICAgYmVnaW46ICcodXJsfGRhdGEtdXJpKVxcXFwoJyxcbiAgICAgIHN0YXJ0czoge2NsYXNzTmFtZTogJ3N0cmluZycsIGVuZDogJ1tcXFxcKVxcXFxuXScsIGV4Y2x1ZGVFbmQ6IHRydWV9XG4gICAgfSxcbiAgICBJREVOVF9NT0RFKCdudW1iZXInLCAnI1swLTlBLUZhLWZdK1xcXFxiJyksXG4gICAgUEFSRU5TX01PREUsXG4gICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQEA/JyArIElERU5UX1JFLCAxMCksXG4gICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQHsnICArIElERU5UX1JFICsgJ30nKSxcbiAgICBJREVOVF9NT0RFKCdidWlsdF9pbicsICd+P2BbXmBdKj9gJyksIC8vIGlubGluZSBqYXZhc2NyaXB0IChvciB3aGF0ZXZlciBob3N0IGxhbmd1YWdlKSAqbXVsdGlsaW5lKiBzdHJpbmdcbiAgICB7IC8vIEBtZWRpYSBmZWF0dXJlcyAoaXTigJlzIGhlcmUgdG8gbm90IGR1cGxpY2F0ZSB0aGluZ3MgaW4gQVRfUlVMRV9NT0RFIHdpdGggZXh0cmEgUEFSRU5TX01PREUgb3ZlcnJpZGluZyk6XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLCBiZWdpbjogSURFTlRfUkUgKyAnXFxcXHMqOicsIGVuZDogJzonLCByZXR1cm5CZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICBiZWdpbjogJyFpbXBvcnRhbnQnXG4gICAgfVxuICApO1xuXG4gIHZhciBWQUxVRV9XSVRIX1JVTEVTRVRTID0gVkFMVUUuY29uY2F0KHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JywgY29udGFpbnM6IFJVTEVTXG4gIH0pO1xuXG4gIHZhciBNSVhJTl9HVUFSRF9NT0RFID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICd3aGVuJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgY29udGFpbnM6IFt7YmVnaW5LZXl3b3JkczogJ2FuZCBub3QnfV0uY29uY2F0KFZBTFVFKSAvLyB1c2luZyB0aGlzIGZvcm0gdG8gb3ZlcnJpZGUgVkFMVUXigJlzICdmdW5jdGlvbicgbWF0Y2hcbiAgfTtcblxuICAvKiBSdWxlLUxldmVsIE1vZGVzICovXG5cbiAgdmFyIFJVTEVfTU9ERSA9IHtcbiAgICBiZWdpbjogSU5URVJQX0lERU5UX1JFICsgJ1xcXFxzKjonLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAnWzt9XScsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiBJTlRFUlBfSURFTlRfUkUsIGVuZDogJzonLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgaWxsZWdhbDogJ1s8PSRdJyxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFZBTFVFXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIEFUX1JVTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ0AoaW1wb3J0fG1lZGlhfGNoYXJzZXR8Zm9udC1mYWNlfCgtW2Etel0rLSk/a2V5ZnJhbWVzfHN1cHBvcnRzfGRvY3VtZW50fG5hbWVzcGFjZXxwYWdlfHZpZXdwb3J0fGhvc3QpXFxcXGInLFxuICAgIHN0YXJ0czoge2VuZDogJ1s7e31dJywgcmV0dXJuRW5kOiB0cnVlLCBjb250YWluczogVkFMVUUsIHJlbGV2YW5jZTogMH1cbiAgfTtcblxuICAvLyB2YXJpYWJsZSBkZWZpbml0aW9ucyBhbmQgY2FsbHNcbiAgdmFyIFZBUl9SVUxFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyB1c2luZyBtb3JlIHN0cmljdCBwYXR0ZXJuIGZvciBoaWdoZXIgcmVsZXZhbmNlIHRvIGluY3JlYXNlIGNoYW5jZXMgb2YgTGVzcyBkZXRlY3Rpb24uXG4gICAgICAvLyB0aGlzIGlzICp0aGUgb25seSogTGVzcyBzcGVjaWZpYyBzdGF0ZW1lbnQgdXNlZCBpbiBtb3N0IG9mIHRoZSBzb3VyY2VzLCBzby4uLlxuICAgICAgLy8gKHdl4oCZbGwgc3RpbGwgb2Z0ZW4gbG9vc2UgdG8gdGhlIGNzcy1wYXJzZXIgdW5sZXNzIHRoZXJlJ3MgJy8vJyBjb21tZW50LFxuICAgICAgLy8gc2ltcGx5IGJlY2F1c2UgMSB2YXJpYWJsZSBqdXN0IGNhbid0IGJlYXQgOTkgcHJvcGVydGllcyA6KVxuICAgICAge2JlZ2luOiAnQCcgKyBJREVOVF9SRSArICdcXFxccyo6JywgcmVsZXZhbmNlOiAxNX0sXG4gICAgICB7YmVnaW46ICdAJyArIElERU5UX1JFfVxuICAgIF0sXG4gICAgc3RhcnRzOiB7ZW5kOiAnWzt9XScsIHJldHVybkVuZDogdHJ1ZSwgY29udGFpbnM6IFZBTFVFX1dJVEhfUlVMRVNFVFN9XG4gIH07XG5cbiAgdmFyIFNFTEVDVE9SX01PREUgPSB7XG4gICAgLy8gZmlyc3QgcGFyc2UgdW5hbWJpZ3VvdXMgc2VsZWN0b3JzIChpLmUuIHRob3NlIG5vdCBzdGFydGluZyB3aXRoIHRhZylcbiAgICAvLyB0aGVuIGZhbGwgaW50byB0aGUgc2NhcnkgbG9va2FoZWFkLWRpc2NyaW1pbmF0b3IgdmFyaWFudC5cbiAgICAvLyB0aGlzIG1vZGUgYWxzbyBoYW5kbGVzIG1peGluIGRlZmluaXRpb25zIGFuZCBjYWxsc1xuICAgIHZhcmlhbnRzOiBbe1xuICAgICAgYmVnaW46ICdbXFxcXC4jOiZcXFxcWz5dJywgZW5kOiAnWzt7fV0nICAvLyBtaXhpbiBjYWxscyBlbmQgd2l0aCAnOydcbiAgICAgIH0sIHtcbiAgICAgIGJlZ2luOiBJTlRFUlBfSURFTlRfUkUsIGVuZDogJ3snXG4gICAgfV0sXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmV0dXJuRW5kOiAgIHRydWUsXG4gICAgaWxsZWdhbDogJ1s8PVxcJyRcIl0nLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE1JWElOX0dVQVJEX01PREUsXG4gICAgICBJREVOVF9NT0RFKCdrZXl3b3JkJywgICdhbGxcXFxcYicpLFxuICAgICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQHsnICArIElERU5UX1JFICsgJ30nKSwgICAgIC8vIG90aGVyd2lzZSBpdOKAmXMgaWRlbnRpZmllZCBhcyB0YWdcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLXRhZycsICBJTlRFUlBfSURFTlRfUkUgKyAnJT8nLCAwKSwgLy8gJyUnIGZvciBtb3JlIGNvbnNpc3RlbnQgY29sb3Jpbmcgb2YgQGtleWZyYW1lcyBcInRhZ3NcIlxuICAgICAgSURFTlRfTU9ERSgnc2VsZWN0b3ItaWQnLCAnIycgKyBJTlRFUlBfSURFTlRfUkUpLFxuICAgICAgSURFTlRfTU9ERSgnc2VsZWN0b3ItY2xhc3MnLCAnXFxcXC4nICsgSU5URVJQX0lERU5UX1JFLCAwKSxcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLXRhZycsICAnJicsIDApLFxuICAgICAge2NsYXNzTmFtZTogJ3NlbGVjdG9yLWF0dHInLCBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nfSxcbiAgICAgIHtjbGFzc05hbWU6ICdzZWxlY3Rvci1wc2V1ZG8nLCBiZWdpbjogLzooOik/W2EtekEtWjAtOVxcX1xcLVxcK1xcKFxcKVwiJy5dKy99LFxuICAgICAge2JlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsIGNvbnRhaW5zOiBWQUxVRV9XSVRIX1JVTEVTRVRTfSwgLy8gYXJndW1lbnQgbGlzdCBvZiBwYXJhbWV0cmljIG1peGluc1xuICAgICAge2JlZ2luOiAnIWltcG9ydGFudCd9IC8vIGVhdCAhaW1wb3J0YW50IGFmdGVyIG1peGluIGNhbGwgb3IgaXQgd2lsbCBiZSBjb2xvcmVkIGFzIHRhZ1xuICAgIF1cbiAgfTtcblxuICBSVUxFUy5wdXNoKFxuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIEFUX1JVTEVfTU9ERSxcbiAgICBWQVJfUlVMRV9NT0RFLFxuICAgIFJVTEVfTU9ERSxcbiAgICBTRUxFQ1RPUl9NT0RFXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbPT5cXCcvPCgkXCJdJyxcbiAgICBjb250YWluczogUlVMRVNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBMSVNQX0lERU5UX1JFID0gJ1thLXpBLVpfXFxcXC1cXFxcK1xcXFwqXFxcXC9cXFxcPFxcXFw9XFxcXD5cXFxcJlxcXFwjXVthLXpBLVowLTlfXFxcXC1cXFxcK1xcXFwqXFxcXC9cXFxcPFxcXFw9XFxcXD5cXFxcJlxcXFwjIV0qJztcbiAgdmFyIE1FQ19SRSA9ICdcXFxcfFteXSo/XFxcXHwnO1xuICB2YXIgTElTUF9TSU1QTEVfTlVNQkVSX1JFID0gJyhcXFxcLXxcXFxcKyk/XFxcXGQrKFxcXFwuXFxcXGQrfFxcXFwvXFxcXGQrKT8oKGR8ZXxmfGx8c3xEfEV8RnxMfFMpKFxcXFwrfFxcXFwtKT9cXFxcZCspPyc7XG4gIHZhciBTSEVCQU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMhJywgZW5kOiAnJCdcbiAgfTtcbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46ICdcXFxcYih0ezF9fG5pbClcXFxcYidcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IExJU1BfU0lNUExFX05VTUJFUl9SRSwgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJyMoYnxCKVswLTFdKygvWzAtMV0rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMob3xPKVswLTddKygvWzAtN10rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMoeHxYKVswLTlhLWZBLUZdKygvWzAtOWEtZkEtRl0rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMoY3xDKVxcXFwoJyArIExJU1BfU0lNUExFX05VTUJFUl9SRSArICcgKycgKyBMSVNQX1NJTVBMRV9OVU1CRVJfUkUsIGVuZDogJ1xcXFwpJ31cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkcgPSBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KTtcbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJzsnLCAnJCcsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgYmVnaW46ICdcXFxcKicsIGVuZDogJ1xcXFwqJ1xuICB9O1xuICB2YXIgS0VZV09SRCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzomXScgKyBMSVNQX0lERU5UX1JFXG4gIH07XG4gIHZhciBJREVOVCA9IHtcbiAgICBiZWdpbjogTElTUF9JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE1FQyA9IHtcbiAgICBiZWdpbjogTUVDX1JFXG4gIH07XG4gIHZhciBRVU9URURfTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBMSVRFUkFMLCBTVFJJTkcsIE5VTUJFUiwgSURFTlRdXG4gIH07XG4gIHZhciBRVU9URUQgPSB7XG4gICAgY29udGFpbnM6IFtOVU1CRVIsIFNUUklORywgVkFSSUFCTEUsIEtFWVdPUkQsIFFVT1RFRF9MSVNULCBJREVOVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbXFwnYF1cXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKHF1b3RlICcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAncXVvdGUnfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCcnICsgTUVDX1JFXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgUVVPVEVEX0FUT00gPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcJycgKyBMSVNQX0lERU5UX1JFfSxcbiAgICAgIHtiZWdpbjogJyNcXCcnICsgTElTUF9JREVOVF9SRSArICcoOjonICsgTElTUF9JREVOVF9SRSArICcpKid9XG4gICAgXVxuICB9O1xuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoXFxcXHMqJywgZW5kOiAnXFxcXCknXG4gIH07XG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBMSVNULmNvbnRhaW5zID0gW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge2JlZ2luOiBMSVNQX0lERU5UX1JFfSxcbiAgICAgICAge2JlZ2luOiBNRUNfUkV9XG4gICAgICBdXG4gICAgfSxcbiAgICBCT0RZXG4gIF07XG4gIEJPRFkuY29udGFpbnMgPSBbUVVPVEVELCBRVU9URURfQVRPTSwgTElTVCwgTElURVJBTCwgTlVNQkVSLCBTVFJJTkcsIENPTU1FTlQsIFZBUklBQkxFLCBLRVlXT1JELCBNRUMsIElERU5UXTtcblxuICByZXR1cm4ge1xuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOVU1CRVIsXG4gICAgICBTSEVCQU5HLFxuICAgICAgTElURVJBTCxcbiAgICAgIFNUUklORyxcbiAgICAgIENPTU1FTlQsXG4gICAgICBRVU9URUQsXG4gICAgICBRVU9URURfQVRPTSxcbiAgICAgIExJU1QsXG4gICAgICBJREVOVFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBiZWdpbjogJ1xcXFxiW2d0cHNdW0EtWl0rW0EtWmEtejAtOV9cXFxcLV0qXFxcXGJ8XFxcXCRfW0EtWl0rJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIENPTU1FTlRfTU9ERVMgPSBbXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgIGhsanMuQ09NTUVOVCgnW146XS8vJywgJyQnKVxuICBdO1xuICB2YXIgVElUTEUxID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICdcXFxcYl8qcmlnW0EtWl0rW0EtWmEtejAtOV9cXFxcLV0qJ30sXG4gICAgICB7YmVnaW46ICdcXFxcYl9bYS16MC05XFxcXC1dKyd9XG4gICAgXVxuICB9KTtcbiAgdmFyIFRJVExFMiA9IGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJ1xcXFxiKFtBLVphLXowLTlfXFxcXC1dKylcXFxcYid9KTtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJyRfQ09PS0lFICRfRklMRVMgJF9HRVQgJF9HRVRfQklOQVJZICRfR0VUX1JBVyAkX1BPU1QgJF9QT1NUX0JJTkFSWSAkX1BPU1RfUkFXICRfU0VTU0lPTiAkX1NFUlZFUiAnICtcbiAgICAgICAgJ2NvZGVwb2ludCBjb2RlcG9pbnRzIHNlZ21lbnQgc2VnbWVudHMgY29kZXVuaXQgY29kZXVuaXRzIHNlbnRlbmNlIHNlbnRlbmNlcyB0cnVlV29yZCB0cnVlV29yZHMgcGFyYWdyYXBoICcgK1xuICAgICAgICAnYWZ0ZXIgYnl0ZSBieXRlcyBlbmdsaXNoIHRoZSB1bnRpbCBodHRwIGZvcmV2ZXIgZGVzY2VuZGluZyB1c2luZyBsaW5lIHJlYWw4IHdpdGggc2V2ZW50aCAnICtcbiAgICAgICAgJ2ZvciBzdGRvdXQgZmluYWxseSBlbGVtZW50IHdvcmQgd29yZHMgZm91cnRoIGJlZm9yZSBibGFjayBuaW50aCBzaXh0aCBjaGFyYWN0ZXJzIGNoYXJzIHN0ZGVyciAnICtcbiAgICAgICAgJ3VJbnQxIHVJbnQxcyB1SW50MiB1SW50MnMgc3RkaW4gc3RyaW5nIGxpbmVzIHJlbGF0aXZlIHJlbCBhbnkgZmlmdGggaXRlbXMgZnJvbSBtaWRkbGUgbWlkICcgK1xuICAgICAgICAnYXQgZWxzZSBvZiBjYXRjaCB0aGVuIHRoaXJkIGl0IGZpbGUgbWlsbGlzZWNvbmRzIHNlY29uZHMgc2Vjb25kIHNlY3Mgc2VjIGludDEgaW50MXMgaW50NCAnICtcbiAgICAgICAgJ2ludDRzIGludGVybmV0IGludDIgaW50MnMgbm9ybWFsIHRleHQgaXRlbSBsYXN0IGxvbmcgZGV0YWlsZWQgZWZmZWN0aXZlIHVJbnQ0IHVJbnQ0cyByZXBlYXQgJyArXG4gICAgICAgICdlbmQgcmVwZWF0IFVSTCBpbiB0cnkgaW50byBzd2l0Y2ggdG8gd29yZHMgaHR0cHMgdG9rZW4gYmluZmlsZSBlYWNoIHRlbnRoIGFzIHRpY2tzIHRpY2sgJyArXG4gICAgICAgICdzeXN0ZW0gcmVhbDQgYnkgZGF0ZUl0ZW1zIHdpdGhvdXQgY2hhciBjaGFyYWN0ZXIgYXNjZW5kaW5nIGVpZ2h0aCB3aG9sZSBkYXRlVGltZSBudW1lcmljIHNob3J0ICcgK1xuICAgICAgICAnZmlyc3QgZnRwIGludGVnZXIgYWJicmV2aWF0ZWQgYWJiciBhYmJyZXYgcHJpdmF0ZSBjYXNlIHdoaWxlIGlmICcgK1xuICAgICAgICAnZGl2IG1vZCB3cmFwIGFuZCBvciBiaXRBbmQgYml0Tm90IGJpdE9yIGJpdFhvciBhbW9uZyBub3QgaW4gYSBhbiB3aXRoaW4gJyArXG4gICAgICAgICdjb250YWlucyBlbmRzIHdpdGggYmVnaW5zIHRoZSBrZXlzIG9mIGtleXMnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ1NJWCBURU4gRk9STUZFRUQgTklORSBaRVJPIE5PTkUgU1BBQ0UgRk9VUiBGQUxTRSBDT0xPTiBDUkxGIFBJIENPTU1BIEVORE9GRklMRSBFT0YgRUlHSFQgRklWRSAnICtcbiAgICAgICAgJ1FVT1RFIEVNUFRZIE9ORSBUUlVFIFJFVFVSTiBDUiBMSU5FRkVFRCBSSUdIVCBCQUNLU0xBU0ggTlVMTCBTRVZFTiBUQUIgVEhSRUUgVFdPICcgK1xuICAgICAgICAnc2l4IHRlbiBmb3JtZmVlZCBuaW5lIHplcm8gbm9uZSBzcGFjZSBmb3VyIGZhbHNlIGNvbG9uIGNybGYgcGkgY29tbWEgZW5kb2ZmaWxlIGVvZiBlaWdodCBmaXZlICcgK1xuICAgICAgICAncXVvdGUgZW1wdHkgb25lIHRydWUgcmV0dXJuIGNyIGxpbmVmZWVkIHJpZ2h0IGJhY2tzbGFzaCBudWxsIHNldmVuIHRhYiB0aHJlZSB0d28gJyArXG4gICAgICAgICdSSVZFUlNJT04gUklTVEFURSBGSUxFX1JFQURfTU9ERSBGSUxFX1dSSVRFX01PREUgRklMRV9XUklURV9NT0RFIERJUl9XUklURV9NT0RFIEZJTEVfUkVBRF9VTUFTSyAnICtcbiAgICAgICAgJ0ZJTEVfV1JJVEVfVU1BU0sgRElSX1JFQURfVU1BU0sgRElSX1dSSVRFX1VNQVNLJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAncHV0IGFicyBhY29zIGFsaWFzUmVmZXJlbmNlIGFubnVpdHkgYXJyYXlEZWNvZGUgYXJyYXlFbmNvZGUgYXNpbiBhdGFuIGF0YW4yIGF2ZXJhZ2UgYXZnIGF2Z0RldiBiYXNlNjREZWNvZGUgJyArXG4gICAgICAgICdiYXNlNjRFbmNvZGUgYmFzZUNvbnZlcnQgYmluYXJ5RGVjb2RlIGJpbmFyeUVuY29kZSBieXRlT2Zmc2V0IGJ5dGVUb051bSBjYWNoZWRVUkwgY2FjaGVkVVJMcyBjaGFyVG9OdW0gJyArXG4gICAgICAgICdjaXBoZXJOYW1lcyBjb2RlcG9pbnRPZmZzZXQgY29kZXBvaW50UHJvcGVydHkgY29kZXBvaW50VG9OdW0gY29kZXVuaXRPZmZzZXQgY29tbWFuZE5hbWVzIGNvbXBvdW5kIGNvbXByZXNzICcgK1xuICAgICAgICAnY29uc3RhbnROYW1lcyBjb3MgZGF0ZSBkYXRlRm9ybWF0IGRlY29tcHJlc3MgZGlyZWN0b3JpZXMgJyArXG4gICAgICAgICdkaXNrU3BhY2UgRE5TU2VydmVycyBleHAgZXhwMSBleHAyIGV4cDEwIGV4dGVudHMgZmlsZXMgZmx1c2hFdmVudHMgZm9sZGVycyBmb3JtYXQgZnVuY3Rpb25OYW1lcyBnZW9tZXRyaWNNZWFuIGdsb2JhbCAnICtcbiAgICAgICAgJ2dsb2JhbHMgaGFzTWVtb3J5IGhhcm1vbmljTWVhbiBob3N0QWRkcmVzcyBob3N0QWRkcmVzc1RvTmFtZSBob3N0TmFtZSBob3N0TmFtZVRvQWRkcmVzcyBpc051bWJlciBJU09Ub01hYyBpdGVtT2Zmc2V0ICcgK1xuICAgICAgICAna2V5cyBsZW4gbGVuZ3RoIGxpYlVSTEVycm9yRGF0YSBsaWJVcmxGb3JtRGF0YSBsaWJVUkxmdHBDb21tYW5kIGxpYlVSTExhc3RIVFRQSGVhZGVycyBsaWJVUkxMYXN0UkhIZWFkZXJzICcgK1xuICAgICAgICAnbGliVXJsTXVsdGlwYXJ0Rm9ybUFkZFBhcnQgbGliVXJsTXVsdGlwYXJ0Rm9ybURhdGEgbGliVVJMVmVyc2lvbiBsaW5lT2Zmc2V0IGxuIGxuMSBsb2NhbE5hbWVzIGxvZyBsb2cyIGxvZzEwICcgK1xuICAgICAgICAnbG9uZ0ZpbGVQYXRoIGxvd2VyIG1hY1RvSVNPIG1hdGNoQ2h1bmsgbWF0Y2hUZXh0IG1hdHJpeE11bHRpcGx5IG1heCBtZDVEaWdlc3QgbWVkaWFuIG1lcmdlIG1pbGxpc2VjICcgK1xuICAgICAgICAnbWlsbGlzZWNzIG1pbGxpc2Vjb25kIG1pbGxpc2Vjb25kcyBtaW4gbW9udGhOYW1lcyBuYXRpdmVDaGFyVG9OdW0gbm9ybWFsaXplVGV4dCBudW0gbnVtYmVyIG51bVRvQnl0ZSBudW1Ub0NoYXIgJyArXG4gICAgICAgICdudW1Ub0NvZGVwb2ludCBudW1Ub05hdGl2ZUNoYXIgb2Zmc2V0IG9wZW4gb3BlbmZpbGVzIG9wZW5Qcm9jZXNzZXMgb3BlblByb2Nlc3NJRHMgb3BlblNvY2tldHMgJyArXG4gICAgICAgICdwYXJhZ3JhcGhPZmZzZXQgcGFyYW1Db3VudCBwYXJhbSBwYXJhbXMgcGVlckFkZHJlc3MgcGVuZGluZ01lc3NhZ2VzIHBsYXRmb3JtIHBvcFN0ZERldiBwb3B1bGF0aW9uU3RhbmRhcmREZXZpYXRpb24gJyArXG4gICAgICAgICdwb3B1bGF0aW9uVmFyaWFuY2UgcG9wVmFyaWFuY2UgcHJvY2Vzc0lEIHJhbmRvbSByYW5kb21CeXRlcyByZXBsYWNlVGV4dCByZXN1bHQgcmV2Q3JlYXRlWE1MVHJlZSByZXZDcmVhdGVYTUxUcmVlRnJvbUZpbGUgJyArXG4gICAgICAgICdyZXZDdXJyZW50UmVjb3JkIHJldkN1cnJlbnRSZWNvcmRJc0ZpcnN0IHJldkN1cnJlbnRSZWNvcmRJc0xhc3QgcmV2RGF0YWJhc2VDb2x1bW5Db3VudCByZXZEYXRhYmFzZUNvbHVtbklzTnVsbCAnICtcbiAgICAgICAgJ3JldkRhdGFiYXNlQ29sdW1uTGVuZ3RocyByZXZEYXRhYmFzZUNvbHVtbk5hbWVzIHJldkRhdGFiYXNlQ29sdW1uTmFtZWQgcmV2RGF0YWJhc2VDb2x1bW5OdW1iZXJlZCAnICtcbiAgICAgICAgJ3JldkRhdGFiYXNlQ29sdW1uVHlwZXMgcmV2RGF0YWJhc2VDb25uZWN0UmVzdWx0IHJldkRhdGFiYXNlQ3Vyc29ycyByZXZEYXRhYmFzZUlEIHJldkRhdGFiYXNlVGFibGVOYW1lcyAnICtcbiAgICAgICAgJ3JldkRhdGFiYXNlVHlwZSByZXZEYXRhRnJvbVF1ZXJ5IHJldmRiX2Nsb3NlQ3Vyc29yIHJldmRiX2NvbHVtbmJ5bnVtYmVyIHJldmRiX2NvbHVtbmNvdW50IHJldmRiX2NvbHVtbmlzbnVsbCAnICtcbiAgICAgICAgJ3JldmRiX2NvbHVtbmxlbmd0aHMgcmV2ZGJfY29sdW1ubmFtZXMgcmV2ZGJfY29sdW1udHlwZXMgcmV2ZGJfY29tbWl0IHJldmRiX2Nvbm5lY3QgcmV2ZGJfY29ubmVjdGlvbnMgJyArXG4gICAgICAgICdyZXZkYl9jb25uZWN0aW9uZXJyIHJldmRiX2N1cnJlbnRyZWNvcmQgcmV2ZGJfY3Vyc29yY29ubmVjdGlvbiByZXZkYl9jdXJzb3JlcnIgcmV2ZGJfY3Vyc29ycyByZXZkYl9kYnR5cGUgJyArXG4gICAgICAgICdyZXZkYl9kaXNjb25uZWN0IHJldmRiX2V4ZWN1dGUgcmV2ZGJfaXNlb2YgcmV2ZGJfaXNib2YgcmV2ZGJfbW92ZWZpcnN0IHJldmRiX21vdmVsYXN0IHJldmRiX21vdmVuZXh0ICcgK1xuICAgICAgICAncmV2ZGJfbW92ZXByZXYgcmV2ZGJfcXVlcnkgcmV2ZGJfcXVlcnlsaXN0IHJldmRiX3JlY29yZGNvdW50IHJldmRiX3JvbGxiYWNrIHJldmRiX3RhYmxlbmFtZXMgJyArXG4gICAgICAgICdyZXZHZXREYXRhYmFzZURyaXZlclBhdGggcmV2TnVtYmVyT2ZSZWNvcmRzIHJldk9wZW5EYXRhYmFzZSByZXZPcGVuRGF0YWJhc2VzIHJldlF1ZXJ5RGF0YWJhc2UgJyArXG4gICAgICAgICdyZXZRdWVyeURhdGFiYXNlQmxvYiByZXZRdWVyeVJlc3VsdCByZXZRdWVyeUlzQXRTdGFydCByZXZRdWVyeUlzQXRFbmQgcmV2VW5peEZyb21NYWNQYXRoIHJldlhNTEF0dHJpYnV0ZSAnICtcbiAgICAgICAgJ3JldlhNTEF0dHJpYnV0ZXMgcmV2WE1MQXR0cmlidXRlVmFsdWVzIHJldlhNTENoaWxkQ29udGVudHMgcmV2WE1MQ2hpbGROYW1lcyByZXZYTUxDcmVhdGVUcmVlRnJvbUZpbGVXaXRoTmFtZXNwYWNlcyAnICtcbiAgICAgICAgJ3JldlhNTENyZWF0ZVRyZWVXaXRoTmFtZXNwYWNlcyByZXZYTUxEYXRhRnJvbVhQYXRoUXVlcnkgcmV2WE1MRXZhbHVhdGVYUGF0aCByZXZYTUxGaXJzdENoaWxkIHJldlhNTE1hdGNoaW5nTm9kZSAnICtcbiAgICAgICAgJ3JldlhNTE5leHRTaWJsaW5nIHJldlhNTE5vZGVDb250ZW50cyByZXZYTUxOdW1iZXJPZkNoaWxkcmVuIHJldlhNTFBhcmVudCByZXZYTUxQcmV2aW91c1NpYmxpbmcgJyArXG4gICAgICAgICdyZXZYTUxSb290Tm9kZSByZXZYTUxSUENfQ3JlYXRlUmVxdWVzdCByZXZYTUxSUENfRG9jdW1lbnRzIHJldlhNTFJQQ19FcnJvciAnICtcbiAgICAgICAgJ3JldlhNTFJQQ19HZXRIb3N0IHJldlhNTFJQQ19HZXRNZXRob2QgcmV2WE1MUlBDX0dldFBhcmFtIHJldlhNTFRleHQgcmV2WE1MUlBDX0V4ZWN1dGUgJyArXG4gICAgICAgICdyZXZYTUxSUENfR2V0UGFyYW1Db3VudCByZXZYTUxSUENfR2V0UGFyYW1Ob2RlIHJldlhNTFJQQ19HZXRQYXJhbVR5cGUgcmV2WE1MUlBDX0dldFBhdGggcmV2WE1MUlBDX0dldFBvcnQgJyArXG4gICAgICAgICdyZXZYTUxSUENfR2V0UHJvdG9jb2wgcmV2WE1MUlBDX0dldFJlcXVlc3QgcmV2WE1MUlBDX0dldFJlc3BvbnNlIHJldlhNTFJQQ19HZXRTb2NrZXQgcmV2WE1MVHJlZSAnICtcbiAgICAgICAgJ3JldlhNTFRyZWVzIHJldlhNTFZhbGlkYXRlRFREIHJldlppcERlc2NyaWJlSXRlbSByZXZaaXBFbnVtZXJhdGVJdGVtcyByZXZaaXBPcGVuQXJjaGl2ZXMgcm91bmQgc2FtcFZhcmlhbmNlICcgK1xuICAgICAgICAnc2VjIHNlY3Mgc2Vjb25kcyBzZW50ZW5jZU9mZnNldCBzaGExRGlnZXN0IHNoZWxsIHNob3J0RmlsZVBhdGggc2luIHNwZWNpYWxGb2xkZXJQYXRoIHNxcnQgc3RhbmRhcmREZXZpYXRpb24gc3RhdFJvdW5kICcgK1xuICAgICAgICAnc3RkRGV2IHN1bSBzeXNFcnJvciBzeXN0ZW1WZXJzaW9uIHRhbiB0ZW1wTmFtZSB0ZXh0RGVjb2RlIHRleHRFbmNvZGUgdGljayB0aWNrcyB0aW1lIHRvIHRva2VuT2Zmc2V0IHRvTG93ZXIgdG9VcHBlciAnICtcbiAgICAgICAgJ3RyYW5zcG9zZSB0cnVld29yZE9mZnNldCB0cnVuYyB1bmlEZWNvZGUgdW5pRW5jb2RlIHVwcGVyIFVSTERlY29kZSBVUkxFbmNvZGUgVVJMU3RhdHVzIHV1aWQgdmFsdWUgdmFyaWFibGVOYW1lcyAnICtcbiAgICAgICAgJ3ZhcmlhbmNlIHZlcnNpb24gd2FpdERlcHRoIHdlZWtkYXlOYW1lcyB3b3JkT2Zmc2V0IHhzbHRBcHBseVN0eWxlc2hlZXQgeHNsdEFwcGx5U3R5bGVzaGVldEZyb21GaWxlIHhzbHRMb2FkU3R5bGVzaGVldCAnICtcbiAgICAgICAgJ3hzbHRMb2FkU3R5bGVzaGVldEZyb21GaWxlIGFkZCBicmVha3BvaW50IGNhbmNlbCBjbGVhciBsb2NhbCB2YXJpYWJsZSBmaWxlIHdvcmQgbGluZSBmb2xkZXIgZGlyZWN0b3J5IFVSTCBjbG9zZSBzb2NrZXQgcHJvY2VzcyAnICtcbiAgICAgICAgJ2NvbWJpbmUgY29uc3RhbnQgY29udmVydCBjcmVhdGUgbmV3IGFsaWFzIGZvbGRlciBkaXJlY3RvcnkgZGVjcnlwdCBkZWxldGUgdmFyaWFibGUgd29yZCBsaW5lIGZvbGRlciAnICtcbiAgICAgICAgJ2RpcmVjdG9yeSBVUkwgZGlzcGF0Y2ggZGl2aWRlIGRvIGVuY3J5cHQgZmlsdGVyIGdldCBpbmNsdWRlIGludGVyc2VjdCBraWxsIGxpYlVSTERvd25sb2FkVG9GaWxlICcgK1xuICAgICAgICAnbGliVVJMRm9sbG93SHR0cFJlZGlyZWN0cyBsaWJVUkxmdHBVcGxvYWQgbGliVVJMZnRwVXBsb2FkRmlsZSBsaWJVUkxyZXNldEFsbCBsaWJVcmxTZXRBdXRoQ2FsbGJhY2sgJyArXG4gICAgICAgICdsaWJVUkxTZXRDdXN0b21IVFRQSGVhZGVycyBsaWJVcmxTZXRFeHBlY3QxMDAgbGliVVJMU2V0RlRQTGlzdENvbW1hbmQgbGliVVJMU2V0RlRQTW9kZSBsaWJVUkxTZXRGVFBTdG9wVGltZSAnICtcbiAgICAgICAgJ2xpYlVSTFNldFN0YXR1c0NhbGxiYWNrIGxvYWQgbXVsdGlwbHkgc29ja2V0IHByZXBhcmUgcHJvY2VzcyBwb3N0IHNlZWsgcmVsIHJlbGF0aXZlIHJlYWQgZnJvbSBwcm9jZXNzIHJlbmFtZSAnICtcbiAgICAgICAgJ3JlcGxhY2UgcmVxdWlyZSByZXNldEFsbCByZXNvbHZlIHJldkFkZFhNTE5vZGUgcmV2QXBwZW5kWE1MIHJldkNsb3NlQ3Vyc29yIHJldkNsb3NlRGF0YWJhc2UgcmV2Q29tbWl0RGF0YWJhc2UgJyArXG4gICAgICAgICdyZXZDb3B5RmlsZSByZXZDb3B5Rm9sZGVyIHJldkNvcHlYTUxOb2RlIHJldkRlbGV0ZUZvbGRlciByZXZEZWxldGVYTUxOb2RlIHJldkRlbGV0ZUFsbFhNTFRyZWVzICcgK1xuICAgICAgICAncmV2RGVsZXRlWE1MVHJlZSByZXZFeGVjdXRlU1FMIHJldkdvVVJMIHJldkluc2VydFhNTE5vZGUgcmV2TW92ZUZvbGRlciByZXZNb3ZlVG9GaXJzdFJlY29yZCByZXZNb3ZlVG9MYXN0UmVjb3JkICcgK1xuICAgICAgICAncmV2TW92ZVRvTmV4dFJlY29yZCByZXZNb3ZlVG9QcmV2aW91c1JlY29yZCByZXZNb3ZlVG9SZWNvcmQgcmV2TW92ZVhNTE5vZGUgcmV2UHV0SW50b1hNTE5vZGUgcmV2Um9sbEJhY2tEYXRhYmFzZSAnICtcbiAgICAgICAgJ3JldlNldERhdGFiYXNlRHJpdmVyUGF0aCByZXZTZXRYTUxBdHRyaWJ1dGUgcmV2WE1MUlBDX0FkZFBhcmFtIHJldlhNTFJQQ19EZWxldGVBbGxEb2N1bWVudHMgcmV2WE1MQWRkRFREICcgK1xuICAgICAgICAncmV2WE1MUlBDX0ZyZWUgcmV2WE1MUlBDX0ZyZWVBbGwgcmV2WE1MUlBDX0RlbGV0ZURvY3VtZW50IHJldlhNTFJQQ19EZWxldGVQYXJhbSByZXZYTUxSUENfU2V0SG9zdCAnICtcbiAgICAgICAgJ3JldlhNTFJQQ19TZXRNZXRob2QgcmV2WE1MUlBDX1NldFBvcnQgcmV2WE1MUlBDX1NldFByb3RvY29sIHJldlhNTFJQQ19TZXRTb2NrZXQgcmV2WmlwQWRkSXRlbVdpdGhEYXRhICcgK1xuICAgICAgICAncmV2WmlwQWRkSXRlbVdpdGhGaWxlIHJldlppcEFkZFVuY29tcHJlc3NlZEl0ZW1XaXRoRGF0YSByZXZaaXBBZGRVbmNvbXByZXNzZWRJdGVtV2l0aEZpbGUgcmV2WmlwQ2FuY2VsICcgK1xuICAgICAgICAncmV2WmlwQ2xvc2VBcmNoaXZlIHJldlppcERlbGV0ZUl0ZW0gcmV2WmlwRXh0cmFjdEl0ZW1Ub0ZpbGUgcmV2WmlwRXh0cmFjdEl0ZW1Ub1ZhcmlhYmxlIHJldlppcFNldFByb2dyZXNzQ2FsbGJhY2sgJyArXG4gICAgICAgICdyZXZaaXBSZW5hbWVJdGVtIHJldlppcFJlcGxhY2VJdGVtV2l0aERhdGEgcmV2WmlwUmVwbGFjZUl0ZW1XaXRoRmlsZSByZXZaaXBPcGVuQXJjaGl2ZSBzZW5kIHNldCBzb3J0IHNwbGl0IHN0YXJ0IHN0b3AgJyArXG4gICAgICAgICdzdWJ0cmFjdCB1bmlvbiB1bmxvYWQgd2FpdCB3cml0ZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJlbmRcXFxcc2lmXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgIFRJVExFMixcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgVElUTEUxXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYmVuZFxcXFxzKycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ2VuZCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVElUTEUyLFxuICAgICAgICAgIFRJVExFMVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjb21tYW5kIG9uJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgVElUTEUyLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBUSVRMRTFcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICc8XFxcXD8ocmV2fGxjfGxpdmVjb2RlKScsXG4gICAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnPFxcXFw/JyB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcPz4nIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIFRJVExFMVxuICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpLFxuICAgIGlsbGVnYWw6ICc7JHxeXFxcXFt8Xj18Jnx7J1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAvLyBKUyBrZXl3b3Jkc1xuICAgICAgJ2luIGlmIGZvciB3aGlsZSBmaW5hbGx5IG5ldyBkbyByZXR1cm4gZWxzZSBicmVhayBjYXRjaCBpbnN0YW5jZW9mIHRocm93IHRyeSB0aGlzICcgK1xuICAgICAgJ3N3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlIGRlYnVnZ2VyIGNhc2UgZGVmYXVsdCBmdW5jdGlvbiB2YXIgd2l0aCAnICtcbiAgICAgIC8vIExpdmVTY3JpcHQga2V5d29yZHNcbiAgICAgICd0aGVuIHVubGVzcyB1bnRpbCBsb29wIG9mIGJ5IHdoZW4gYW5kIG9yIGlzIGlzbnQgbm90IGl0IHRoYXQgb3RoZXJ3aXNlIGZyb20gdG8gdGlsIGZhbGx0aHJvdWdoIHN1cGVyICcgK1xuICAgICAgJ2Nhc2UgZGVmYXVsdCBmdW5jdGlvbiB2YXIgdm9pZCBjb25zdCBsZXQgZW51bSBleHBvcnQgaW1wb3J0IG5hdGl2ZSAnICtcbiAgICAgICdfX2hhc1Byb3AgX19leHRlbmRzIF9fc2xpY2UgX19iaW5kIF9faW5kZXhPZicsXG4gICAgbGl0ZXJhbDpcbiAgICAgIC8vIEpTIGxpdGVyYWxzXG4gICAgICAndHJ1ZSBmYWxzZSBudWxsIHVuZGVmaW5lZCAnICtcbiAgICAgIC8vIExpdmVTY3JpcHQgbGl0ZXJhbHNcbiAgICAgICd5ZXMgbm8gb24gb2ZmIGl0IHRoYXQgdm9pZCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnbnBtIHJlcXVpcmUgY29uc29sZSBwcmludCBtb2R1bGUgZ2xvYmFsIHdpbmRvdyBkb2N1bWVudCdcbiAgfTtcbiAgdmFyIEpTX0lERU5UX1JFID0gJ1tBLVphLXokX10oPzpcXC1bMC05QS1aYS16JF9dfFswLTlBLVphLXokX10pKic7XG4gIHZhciBUSVRMRSA9IGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogSlNfSURFTlRfUkV9KTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogLyNcXHsvLCBlbmQ6IC99LyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgdmFyIFNVQlNUX1NJTVBMRSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC8jW0EtWmEteiRfXS8sIGVuZDogLyg/OlxcLVswLTlBLVphLXokX118WzAtOUEtWmEteiRfXSkqLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgdmFyIEVYUFJFU1NJT05TID0gW1xuICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJyhcXFxcYjBbeFhdW2EtZkEtRjAtOV9dKyl8KFxcXFxiXFxcXGQoXFxcXGR8X1xcXFxkKSooXFxcXC4oXFxcXGQoXFxcXGR8X1xcXFxkKSopPyk/KF8qW2VFXShbLStdXFxcXGQoX1xcXFxkfFxcXFxkKSopPyk/W19hLXpdKiknLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgc3RhcnRzOiB7ZW5kOiAnKFxcXFxzKi8pPycsIHJlbGV2YW5jZTogMH0gLy8gYSBudW1iZXIgdHJpZXMgdG8gZWF0IHRoZSBmb2xsb3dpbmcgc2xhc2ggdG8gcHJldmVudCB0cmVhdGluZyBpdCBhcyBhIHJlZ2V4cFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycnJy8sIGVuZDogLycnJy8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycvLCBlbmQ6IC8nLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIFNVQlNUX1NJTVBMRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNULCBTVUJTVF9TSU1QTEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogL1xcXFwvLCBlbmQ6IC8oXFxzfCQpLyxcbiAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICB2YXJpYW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICcvLycsIGVuZDogJy8vW2dpbV0qJyxcbiAgICAgICAgICBjb250YWluczogW1NVQlNULCBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gcmVnZXggY2FuJ3Qgc3RhcnQgd2l0aCBzcGFjZSB0byBwYXJzZSB4IC8gMiAvIDMgYXMgdHdvIGRpdmlzaW9uc1xuICAgICAgICAgIC8vIHJlZ2V4IGNhbid0IHN0YXJ0IHdpdGggKiwgYW5kIGl0IHN1cHBvcnRzIGFuIFwiaWxsZWdhbFwiIGluIHRoZSBtYWluIG1vZGVcbiAgICAgICAgICBiZWdpbjogL1xcLyg/IVsgKl0pKFxcXFxcXC98LikqP1xcL1tnaW1dKig/PVxcV3wkKS9cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICdAJyArIEpTX0lERU5UX1JFXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJ2BgJywgZW5kOiAnYGAnLFxuICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICdqYXZhc2NyaXB0J1xuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFWFBSRVNTSU9OUztcblxuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIC8qIFdlIG5lZWQgYW5vdGhlciBjb250YWluZWQgbmFtZWxlc3MgbW9kZSB0byBub3QgaGF2ZSBldmVyeSBuZXN0ZWRcbiAgICBwYWlyIG9mIHBhcmVucyB0byBiZSBjYWxsZWQgXCJwYXJhbXNcIiAqL1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogWydzZWxmJ10uY29uY2F0KEVYUFJFU1NJT05TKVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbHMnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05TLmNvbmNhdChbXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwvXFxcXConLCAnXFxcXCpcXFxcLycpLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBjb250YWluczogW1RJVExFLCBQQVJBTVNdLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJygnICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqKD86PXw6PSlcXFxccyopPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCXFxcXC0+XFxcXCo/JywgZW5kOiAnXFxcXC0+XFxcXCo/J1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcoJyArIEpTX0lERU5UX1JFICsgJ1xcXFxzKig/Oj18Oj0pXFxcXHMqKT8hPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCWy1+XXsxLDJ9PlxcXFwqPycsIGVuZDogJ1stfl17MSwyfT5cXFxcKj8nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJygnICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqKD86PXw6PSlcXFxccyopPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCIT9bLX5dezEsMn0+XFxcXCo/JywgZW5kOiAnIT9bLX5dezEsMn0+XFxcXCo/J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMnLFxuICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbVElUTEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBUSVRMRVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGlkZW50aWZpZXIgPSAnKFstYS16QS1aJC5fXVtcXFxcd1xcXFwtJC5dKiknO1xuICByZXR1cm4ge1xuICAgIC8vbGV4ZW1lczogJ1suJV0/JyArIGhsanMuSURFTlRfUkUsXG4gICAga2V5d29yZHM6XG4gICAgICAnYmVnaW4gZW5kIHRydWUgZmFsc2UgZGVjbGFyZSBkZWZpbmUgZ2xvYmFsICcgK1xuICAgICAgJ2NvbnN0YW50IHByaXZhdGUgbGlua2VyX3ByaXZhdGUgaW50ZXJuYWwgJyArXG4gICAgICAnYXZhaWxhYmxlX2V4dGVybmFsbHkgbGlua29uY2UgbGlua29uY2Vfb2RyIHdlYWsgJyArXG4gICAgICAnd2Vha19vZHIgYXBwZW5kaW5nIGRsbGltcG9ydCBkbGxleHBvcnQgY29tbW9uICcgK1xuICAgICAgJ2RlZmF1bHQgaGlkZGVuIHByb3RlY3RlZCBleHRlcm5fd2VhayBleHRlcm5hbCAnICtcbiAgICAgICd0aHJlYWRfbG9jYWwgemVyb2luaXRpYWxpemVyIHVuZGVmIG51bGwgdG8gdGFpbCAnICtcbiAgICAgICd0YXJnZXQgdHJpcGxlIGRhdGFsYXlvdXQgdm9sYXRpbGUgbnV3IG5zdyBubmFuICcgK1xuICAgICAgJ25pbmYgbnN6IGFyY3AgZmFzdCBleGFjdCBpbmJvdW5kcyBhbGlnbiAnICtcbiAgICAgICdhZGRyc3BhY2Ugc2VjdGlvbiBhbGlhcyBtb2R1bGUgYXNtIHNpZGVlZmZlY3QgJyArXG4gICAgICAnZ2MgZGJnIGxpbmtlcl9wcml2YXRlX3dlYWsgYXR0cmlidXRlcyBibG9ja2FkZHJlc3MgJyArXG4gICAgICAnaW5pdGlhbGV4ZWMgbG9jYWxkeW5hbWljIGxvY2FsZXhlYyBwcmVmaXggdW5uYW1lZF9hZGRyICcgK1xuICAgICAgJ2NjYyBmYXN0Y2MgY29sZGNjIHg4Nl9zdGRjYWxsY2MgeDg2X2Zhc3RjYWxsY2MgJyArXG4gICAgICAnYXJtX2FwY3NjYyBhcm1fYWFwY3NjYyBhcm1fYWFwY3NfdmZwY2MgcHR4X2RldmljZSAnICtcbiAgICAgICdwdHhfa2VybmVsIGludGVsX29jbF9iaWNjIG1zcDQzMF9pbnRyY2Mgc3Bpcl9mdW5jICcgK1xuICAgICAgJ3NwaXJfa2VybmVsIHg4Nl82NF9zeXN2Y2MgeDg2XzY0X3dpbjY0Y2MgeDg2X3RoaXNjYWxsY2MgJyArXG4gICAgICAnY2MgYyBzaWduZXh0IHplcm9leHQgaW5yZWcgc3JldCBub3Vud2luZCAnICtcbiAgICAgICdub3JldHVybiBub2FsaWFzIG5vY2FwdHVyZSBieXZhbCBuZXN0IHJlYWRub25lICcgK1xuICAgICAgJ3JlYWRvbmx5IGlubGluZWhpbnQgbm9pbmxpbmUgYWx3YXlzaW5saW5lIG9wdHNpemUgc3NwICcgK1xuICAgICAgJ3NzcHJlcSBub3JlZHpvbmUgbm9pbXBsaWNpdGZsb2F0IG5ha2VkIGJ1aWx0aW4gY29sZCAnICtcbiAgICAgICdub2J1aWx0aW4gbm9kdXBsaWNhdGUgbm9ubGF6eWJpbmQgb3B0bm9uZSByZXR1cm5zX3R3aWNlICcgK1xuICAgICAgJ3Nhbml0aXplX2FkZHJlc3Mgc2FuaXRpemVfbWVtb3J5IHNhbml0aXplX3RocmVhZCBzc3BzdHJvbmcgJyArXG4gICAgICAndXd0YWJsZSByZXR1cm5lZCB0eXBlIG9wYXF1ZSBlcSBuZSBzbHQgc2d0ICcgK1xuICAgICAgJ3NsZSBzZ2UgdWx0IHVndCB1bGUgdWdlIG9lcSBvbmUgb2x0IG9ndCAnICtcbiAgICAgICdvbGUgb2dlIG9yZCB1bm8gdWVxIHVuZSB4IGFjcV9yZWwgYWNxdWlyZSAnICtcbiAgICAgICdhbGlnbnN0YWNrIGF0b21pYyBjYXRjaCBjbGVhbnVwIGZpbHRlciBpbnRlbGRpYWxlY3QgJyArXG4gICAgICAnbWF4IG1pbiBtb25vdG9uaWMgbmFuZCBwZXJzb25hbGl0eSByZWxlYXNlIHNlcV9jc3QgJyArXG4gICAgICAnc2luZ2xldGhyZWFkIHVtYXggdW1pbiB1bm9yZGVyZWQgeGNoZyBhZGQgZmFkZCAnICtcbiAgICAgICdzdWIgZnN1YiBtdWwgZm11bCB1ZGl2IHNkaXYgZmRpdiB1cmVtIHNyZW0gJyArXG4gICAgICAnZnJlbSBzaGwgbHNociBhc2hyIGFuZCBvciB4b3IgaWNtcCBmY21wICcgK1xuICAgICAgJ3BoaSBjYWxsIHRydW5jIHpleHQgc2V4dCBmcHRydW5jIGZwZXh0IHVpdG9mcCAnICtcbiAgICAgICdzaXRvZnAgZnB0b3VpIGZwdG9zaSBpbnR0b3B0ciBwdHJ0b2ludCBiaXRjYXN0ICcgK1xuICAgICAgJ2FkZHJzcGFjZWNhc3Qgc2VsZWN0IHZhX2FyZyByZXQgYnIgc3dpdGNoIGludm9rZSAnICtcbiAgICAgICd1bndpbmQgdW5yZWFjaGFibGUgaW5kaXJlY3RiciBsYW5kaW5ncGFkIHJlc3VtZSAnICtcbiAgICAgICdtYWxsb2MgYWxsb2NhIGZyZWUgbG9hZCBzdG9yZSBnZXRlbGVtZW50cHRyICcgK1xuICAgICAgJ2V4dHJhY3RlbGVtZW50IGluc2VydGVsZW1lbnQgc2h1ZmZsZXZlY3RvciBnZXRyZXN1bHQgJyArXG4gICAgICAnZXh0cmFjdHZhbHVlIGluc2VydHZhbHVlIGF0b21pY3JtdyBjbXB4Y2hnIGZlbmNlICcgK1xuICAgICAgJ2FyZ21lbW9ubHkgZG91YmxlJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdpXFxcXGQrJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLCAnXFxcXG4nLCB7cmVsZXZhbmNlOiAwfVxuICAgICAgKSxcbiAgICAgIC8vIERvdWJsZSBxdW90ZSBzdHJpbmdcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgLy8gRG91YmxlLXF1b3RlZCBzdHJpbmdcbiAgICAgICAgICB7IGJlZ2luOiAnXCInLCBlbmQ6ICdbXlxcXFxcXFxcXVwiJyB9LFxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnQCcgKyBpZGVudGlmaWVyIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ0BcXFxcZCsnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJyEnICsgaWRlbnRpZmllciB9LFxuICAgICAgICAgIHsgYmVnaW46ICchXFxcXGQrJyArIGlkZW50aWZpZXIgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICclJyArIGlkZW50aWZpZXIgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnJVxcXFxkKycgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnI1xcXFxkKycgfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHsgYmVnaW46ICcwW3hYXVthLWZBLUYwLTldKycgfSxcbiAgICAgICAgICAgIHsgYmVnaW46ICctP1xcXFxkKyg/OlsuXVxcXFxkKyk/KD86W2VFXVstK10/XFxcXGQrKD86Wy5dXFxcXGQrKT8pPycgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICAgIHZhciBMU0xfU1RSSU5HX0VTQ0FQRV9DSEFSUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICBiZWdpbjogL1xcXFxbdG5cIlxcXFxdL1xuICAgIH07XG5cbiAgICB2YXIgTFNMX1NUUklOR1MgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBMU0xfU1RSSU5HX0VTQ0FQRV9DSEFSU1xuICAgICAgICBdXG4gICAgfTtcblxuICAgIHZhciBMU0xfTlVNQkVSUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuQ19OVU1CRVJfUkVcbiAgICB9O1xuXG4gICAgdmFyIExTTF9DT05TVEFOVFMgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpQSXxUV09fUEl8UElfQllfVFdPfERFR19UT19SQUR8UkFEX1RPX0RFR3xTUVJUMilcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OlhQX0VSUk9SXyg/OkVYUEVSSUVOQ0VTX0RJU0FCTEVEfEVYUEVSSUVOQ0VfKD86RElTQUJMRUR8U1VTUEVOREVEKXxJTlZBTElEXyg/OkVYUEVSSUVOQ0V8UEFSQU1FVEVSUyl8S0VZX05PVF9GT1VORHxNQVRVUklUWV9FWENFRURFRHxOT05FfE5PVF8oPzpGT1VORHxQRVJNSVRURUQoPzpfTEFORCk/KXxOT19FWFBFUklFTkNFfFFVT1RBX0VYQ0VFREVEfFJFVFJZX1VQREFURXxTVE9SQUdFX0VYQ0VQVElPTnxTVE9SRV9ESVNBQkxFRHxUSFJPVFRMRUR8VU5LTk9XTl9FUlJPUil8SlNPTl9BUFBFTkR8U1RBVFVTXyg/OlBIWVNJQ1N8Uk9UQVRFX1tYWVpdfFBIQU5UT018U0FOREJPWHxCTE9DS19HUkFCKD86X09CSkVDVCk/fCg/OkRJRXxSRVRVUk4pX0FUX0VER0V8Q0FTVF9TSEFET1dTfE9LfE1BTEZPUk1FRF9QQVJBTVN8VFlQRV9NSVNNQVRDSHxCT1VORFNfRVJST1J8Tk9UXyg/OkZPVU5EfFNVUFBPUlRFRCl8SU5URVJOQUxfRVJST1J8V0hJVEVMSVNUX0ZBSUxFRCl8QUdFTlQoPzpfKD86QllfKD86TEVHQUNZX3xVU0VSKU5BTUV8RkxZSU5HfEFUVEFDSE1FTlRTfFNDUklQVEVEfE1PVVNFTE9PS3xTSVRUSU5HfE9OX09CSkVDVHxBV0FZfFdBTEtJTkd8SU5fQUlSfFRZUElOR3xDUk9VQ0hJTkd8QlVTWXxBTFdBWVNfUlVOfEFVVE9QSUxPVHxMSVNUXyg/OlBBUkNFTCg/Ol9PV05FUik/fFJFR0lPTikpKT98Q0FNRVJBXyg/OlBJVENIfERJU1RBTkNFfEJFSElORE5FU1NfKD86QU5HTEV8TEFHKXwoPzpGT0NVU3xQT1NJVElPTikoPzpfKD86VEhSRVNIT0xEfExPQ0tFRHxMQUcpKT98Rk9DVVNfT0ZGU0VUfEFDVElWRSl8QU5JTV9PTnxMT09QfFJFVkVSU0V8UElOR19QT05HfFNNT09USHxST1RBVEV8U0NBTEV8QUxMX1NJREVTfExJTktfKD86Uk9PVHxTRVR8QUxMXyg/Ok9USEVSU3xDSElMRFJFTil8VEhJUyl8QUNUSVZFfFBBU1MoPzpJVkV8Xyg/OkFMV0FZU3xJRl9OT1RfSEFORExFRHxORVZFUikpfFNDUklQVEVEfENPTlRST0xfKD86RldEfEJBQ0t8KD86Uk9UXyk/KD86TEVGVHxSSUdIVCl8VVB8RE9XTnwoPzpNTF8pP0xCVVRUT04pfFBFUk1JU1NJT05fKD86UkVUVVJOX09CSkVDVFN8REVCSVR8T1ZFUlJJREVfQU5JTUFUSU9OU3xTSUxFTlRfRVNUQVRFX01BTkFHRU1FTlR8VEFLRV9DT05UUk9MU3xUUklHR0VSX0FOSU1BVElPTnxBVFRBQ0h8Q0hBTkdFX0xJTktTfCg/OkNPTlRST0x8VFJBQ0spX0NBTUVSQXxURUxFUE9SVCl8SU5WRU5UT1JZXyg/OlRFWFRVUkV8U09VTkR8T0JKRUNUfFNDUklQVHxMQU5ETUFSS3xDTE9USElOR3xOT1RFQ0FSRHxCT0RZUEFSVHxBTklNQVRJT058R0VTVFVSRXxBTEx8Tk9ORSl8Q0hBTkdFRF8oPzpJTlZFTlRPUll8Q09MT1J8U0hBUEV8U0NBTEV8VEVYVFVSRXxMSU5LfEFMTE9XRURfRFJPUHxPV05FUnxSRUdJT04oPzpfU1RBUlQpP3xURUxFUE9SVHxNRURJQSl8T0JKRUNUXyg/OkNMSUNLX0FDVElPTnxIT1ZFUl9IRUlHSFR8TEFTVF9PV05FUl9JRHwoPzpQSFlTSUNTfFNFUlZFUnxTVFJFQU1JTkcpX0NPU1R8VU5LTk9XTl9ERVRBSUx8Q0hBUkFDVEVSX1RJTUV8UEhBTlRPTXxQSFlTSUNTfFRFTVBfT05fUkVafE5BTUV8REVTQ3xQT1N8UFJJTV8oPzpDT1VOVHxFUVVJVkFMRU5DRSl8UkVUVVJOXyg/OlBBUkNFTCg/Ol9PV05FUik/fFJFR0lPTil8UkVaWkVSX0tFWXxST08/VHxWRUxPQ0lUWXxPTUVHQXxPV05FUnxHUk9VUHxDUkVBVE9SfEFUVEFDSEVEX1BPSU5UfFJFTkRFUl9XRUlHSFR8KD86Qk9EWV9TSEFQRXxQQVRIRklORElORylfVFlQRXwoPzpSVU5OSU5HfFRPVEFMKV9TQ1JJUFRfQ09VTlR8VE9UQUxfSU5WRU5UT1JZX0NPVU5UfFNDUklQVF8oPzpNRU1PUll8VElNRSkpfFRZUEVfKD86SU5URUdFUnxGTE9BVHxTVFJJTkd8S0VZfFZFQ1RPUnxST1RBVElPTnxJTlZBTElEKXwoPzpERUJVR3xQVUJMSUMpX0NIQU5ORUx8QVRUQUNIXyg/OkFWQVRBUl9DRU5URVJ8Q0hFU1R8SEVBRHxCQUNLfFBFTFZJU3xNT1VUSHxDSElOfE5FQ0t8Tk9TRXxCRUxMWXxbTFJdKD86U0hPVUxERVJ8SEFORHxGT09UfEVBUnxFWUV8W1VMXSg/OkFSTXxMRUcpfEhJUCl8KD86TEVGVHxSSUdIVClfUEVDfEhVRF8oPzpDRU5URVJfWzEyXXxUT1BfKD86UklHSFR8Q0VOVEVSfExFRlQpfEJPVFRPTSg/Ol8oPzpSSUdIVHxMRUZUKSk/KXxbTFJdSEFORF9SSU5HMXxUQUlMXyg/OkJBU0V8VElQKXxbTFJdV0lOR3xGQUNFXyg/OkpBV3xbTFJdRUFSfFtMUl1FWUV8VE9VTkdFKXxHUk9JTnxISU5EX1tMUl1GT09UKXxMQU5EXyg/OkxFVkVMfFJBSVNFfExPV0VSfFNNT09USHxOT0lTRXxSRVZFUlQpfERBVEFfKD86T05MSU5FfE5BTUV8Qk9STnxTSU1fKD86UE9TfFNUQVRVU3xSQVRJTkcpfFBBWUlORk8pfFBBWU1FTlRfSU5GT18oPzpPTl9GSUxFfFVTRUQpfFJFTU9URV9EQVRBXyg/OkNIQU5ORUx8UkVRVUVTVHxSRVBMWSl8UFNZU18oPzpQQVJUXyg/OkJGXyg/OlpFUk98T05FKD86X01JTlVTXyg/OkRFU1RfQ09MT1J8U09VUkNFXyhBTFBIQXxDT0xPUikpKT98REVTVF9DT0xPUnxTT1VSQ0VfKEFMUEhBfENPTE9SKSl8QkxFTkRfRlVOQ18oREVTVHxTT1VSQ0UpfEZMQUdTfCg/OlNUQVJUfEVORClfKD86Q09MT1J8QUxQSEF8U0NBTEV8R0xPVyl8TUFYX0FHRXwoPzpSSUJCT058V0lORHxJTlRFUlBfKD86Q09MT1J8U0NBTEUpfEJPVU5DRXxGT0xMT1dfKD86U1JDfFZFTE9DSVRZKXxUQVJHRVRfKD86UE9TfExJTkVBUil8RU1JU1NJVkUpX01BU0spfFNSQ18oPzpNQVhfQUdFfFBBVFRFUk58QU5HTEVfKD86QkVHSU58RU5EKXxCVVJTVF8oPzpSQVRFfFBBUlRfQ09VTlR8UkFESVVTfFNQRUVEXyg/Ok1JTnxNQVgpKXxBQ0NFTHxURVhUVVJFfFRBUkdFVF9LRVl8T01FR0F8UEFUVEVSTl8oPzpEUk9QfEVYUExPREV8QU5HTEUoPzpfQ09ORSg/Ol9FTVBUWSk/KT8pKSl8VkVISUNMRV8oPzpSRUZFUkVOQ0VfRlJBTUV8VFlQRV8oPzpOT05FfFNMRUR8Q0FSfEJPQVR8QUlSUExBTkV8QkFMTE9PTil8KD86TElORUFSfEFOR1VMQVIpXyg/OkZSSUNUSU9OX1RJTUVTQ0FMRXxNT1RPUl9ESVJFQ1RJT04pfExJTkVBUl9NT1RPUl9PRkZTRVR8SE9WRVJfKD86SEVJR0hUfEVGRklDSUVOQ1l8VElNRVNDQUxFKXxCVU9ZQU5DWXwoPzpMSU5FQVJ8QU5HVUxBUilfKD86REVGTEVDVElPTl8oPzpFRkZJQ0lFTkNZfFRJTUVTQ0FMRSl8TU9UT1JfKD86REVDQVlfKT9USU1FU0NBTEUpfFZFUlRJQ0FMX0FUVFJBQ1RJT05fKD86RUZGSUNJRU5DWXxUSU1FU0NBTEUpfEJBTktJTkdfKD86RUZGSUNJRU5DWXxNSVh8VElNRVNDQUxFKXxGTEFHXyg/Ok5PX0RFRkxFQ1RJT05fVVB8TElNSVRfKD86Uk9MTF9PTkxZfE1PVE9SX1VQKXxIT1ZFUl8oPzooPzpXQVRFUnxURVJSQUlOfFVQKV9PTkxZfEdMT0JBTF9IRUlHSFQpfE1PVVNFTE9PS18oPzpTVEVFUnxCQU5LKXxDQU1FUkFfREVDT1VQTEVEKSl8UFJJTV8oPzpBTFBIQV9NT0RFKD86Xyg/OkJMRU5EfEVNSVNTSVZFfE1BU0t8Tk9ORSkpP3xOT1JNQUx8U1BFQ1VMQVJ8VFlQRSg/Ol8oPzpCT1h8Q1lMSU5ERVJ8UFJJU018U1BIRVJFfFRPUlVTfFRVQkV8UklOR3xTQ1VMUFQpKT98SE9MRV8oPzpERUZBVUxUfENJUkNMRXxTUVVBUkV8VFJJQU5HTEUpfE1BVEVSSUFMKD86Xyg/OlNUT05FfE1FVEFMfEdMQVNTfFdPT0R8RkxFU0h8UExBU1RJQ3xSVUJCRVIpKT98U0hJTllfKD86Tk9ORXxMT1d8TUVESVVNfEhJR0gpfEJVTVBfKD86Tk9ORXxCUklHSFR8REFSS3xXT09EfEJBUkt8QlJJQ0tTfENIRUNLRVJ8Q09OQ1JFVEV8VElMRXxTVE9ORXxESVNLU3xHUkFWRUx8QkxPQlN8U0lESU5HfExBUkdFVElMRXxTVFVDQ098U1VDVElPTnxXRUFWRSl8VEVYR0VOXyg/OkRFRkFVTFR8UExBTkFSKXxTQ1VMUFRfKD86VFlQRV8oPzpTUEhFUkV8VE9SVVN8UExBTkV8Q1lMSU5ERVJ8TUFTSyl8RkxBR18oPzpNSVJST1J8SU5WRVJUKSl8UEhZU0lDUyg/Ol8oPzpTSEFQRV8oPzpDT05WRVh8Tk9ORXxQUklNfFRZUEUpKSk/fCg/OlBPU3xST1QpX0xPQ0FMfFNMSUNFfFRFWFR8RkxFWElCTEV8UE9JTlRfTElHSFR8VEVNUF9PTl9SRVp8UEhBTlRPTXxQT1NJVElPTnxTSVpFfFJPVEFUSU9OfFRFWFRVUkV8TkFNRXxPTUVHQXxERVNDfExJTktfVEFSR0VUfENPTE9SfEJVTVBfU0hJTll8RlVMTEJSSUdIVHxURVhHRU58R0xPV3xNRURJQV8oPzpBTFRfSU1BR0VfRU5BQkxFfENPTlRST0xTfCg/OkNVUlJFTlR8SE9NRSlfVVJMfEFVVE9fKD86TE9PUHxQTEFZfFNDQUxFfFpPT00pfEZJUlNUX0NMSUNLX0lOVEVSQUNUfCg/OldJRFRIfEhFSUdIVClfUElYRUxTfFdISVRFTElTVCg/Ol9FTkFCTEUpP3xQRVJNU18oPzpJTlRFUkFDVHxDT05UUk9MKXxQQVJBTV9NQVh8Q09OVFJPTFNfKD86U1RBTkRBUkR8TUlOSSl8UEVSTV8oPzpOT05FfE9XTkVSfEdST1VQfEFOWU9ORSl8TUFYXyg/OlVSTF9MRU5HVEh8V0hJVEVMSVNUXyg/OlNJWkV8Q09VTlQpfCg/OldJRFRIfEhFSUdIVClfUElYRUxTKSkpfE1BU0tfKD86QkFTRXxPV05FUnxHUk9VUHxFVkVSWU9ORXxORVhUKXxQRVJNXyg/OlRSQU5TRkVSfE1PRElGWXxDT1BZfE1PVkV8QUxMKXxQQVJDRUxfKD86TUVESUFfQ09NTUFORF8oPzpTVE9QfFBBVVNFfFBMQVl8TE9PUHxURVhUVVJFfFVSTHxUSU1FfEFHRU5UfFVOTE9BRHxBVVRPX0FMSUdOfFRZUEV8U0laRXxERVNDfExPT1BfU0VUKXxGTEFHXyg/OkFMTE9XXyg/OkZMWXwoPzpHUk9VUF8pP1NDUklQVFN8TEFORE1BUkt8VEVSUkFGT1JNfERBTUFHRXxDUkVBVEVfKD86R1JPVVBfKT9PQkpFQ1RTKXxVU0VfKD86QUNDRVNTXyg/OkdST1VQfExJU1QpfEJBTl9MSVNUfExBTkRfUEFTU19MSVNUKXxMT0NBTF9TT1VORF9PTkxZfFJFU1RSSUNUX1BVU0hPQkpFQ1R8QUxMT1dfKD86R1JPVVB8QUxMKV9PQkpFQ1RfRU5UUlkpfENPVU5UXyg/OlRPVEFMfE9XTkVSfEdST1VQfE9USEVSfFNFTEVDVEVEfFRFTVApfERFVEFJTFNfKD86TkFNRXxERVNDfE9XTkVSfEdST1VQfEFSRUF8SUR8U0VFX0FWQVRBUlMpKXxMSVNUX1NUQVRfKD86TUFYfE1JTnxNRUFOfE1FRElBTnxTVERfREVWfFNVTSg/Ol9TUVVBUkVTKT98TlVNX0NPVU5UfEdFT01FVFJJQ19NRUFOfFJBTkdFKXxQQVlfKD86SElERXxERUZBVUxUKXxSRUdJT05fRkxBR18oPzpBTExPV19EQU1BR0V8RklYRURfU1VOfEJMT0NLX1RFUlJBRk9STXxTQU5EQk9YfERJU0FCTEVfKD86Q09MTElTSU9OU3xQSFlTSUNTKXxCTE9DS19GTFl8QUxMT1dfRElSRUNUX1RFTEVQT1JUfFJFU1RSSUNUX1BVU0hPQkpFQ1QpfEhUVFBfKD86TUVUSE9EfE1JTUVUWVBFfEJPRFlfKD86TUFYTEVOR1RIfFRSVU5DQVRFRCl8Q1VTVE9NX0hFQURFUnxQUkFHTUFfTk9fQ0FDSEV8VkVSQk9TRV9USFJPVFRMRXxWRVJJRllfQ0VSVCl8U1RSSU5HXyg/OlRSSU0oPzpfKD86SEVBRHxUQUlMKSk/KXxDTElDS19BQ1RJT05fKD86Tk9ORXxUT1VDSHxTSVR8QlVZfFBBWXxPUEVOKD86X01FRElBKT98UExBWXxaT09NKXxUT1VDSF9JTlZBTElEX0ZBQ0V8UFJPRklMRV8oPzpOT05FfFNDUklQVF9NRU1PUlkpfFJDXyg/OkRBVEFfRkxBR1N8REVURUNUX1BIQU5UT018R0VUXyg/OkxJTktfTlVNfE5PUk1BTHxST09UX0tFWSl8TUFYX0hJVFN8UkVKRUNUXyg/OlRZUEVTfEFHRU5UU3woPzpOT04pP1BIWVNJQ0FMfExBTkQpKXxSQ0VSUl8oPzpDQVNUX1RJTUVfRVhDRUVERUR8U0lNX1BFUkZfTE9XfFVOS05PV04pfEVTVEFURV9BQ0NFU1NfKD86QUxMT1dFRF8oPzpBR0VOVHxHUk9VUClfKD86QUREfFJFTU9WRSl8QkFOTkVEX0FHRU5UXyg/OkFERHxSRU1PVkUpKXxERU5TSVRZfEZSSUNUSU9OfFJFU1RJVFVUSU9OfEdSQVZJVFlfTVVMVElQTElFUnxLRk1fKD86Q09NTUFORHxDTURfKD86UExBWXxTVE9QfFBBVVNFKXxNT0RFfEZPUldBUkR8TE9PUHxQSU5HX1BPTkd8UkVWRVJTRXxEQVRBfFJPVEFUSU9OfFRSQU5TTEFUSU9OKXxFUlJfKD86R0VORVJJQ3xQQVJDRUxfUEVSTUlTU0lPTlN8TUFMRk9STUVEX1BBUkFNU3xSVU5USU1FX1BFUk1JU1NJT05TfFRIUk9UVExFRCl8Q0hBUkFDVEVSXyg/OkNNRF8oPzooPzpTTU9PVEhfKT9TVE9QfEpVTVApfERFU0lSRURfKD86VFVSTl8pP1NQRUVEfFJBRElVU3xTVEFZX1dJVEhJTl9QQVJDRUx8TEVOR1RIfE9SSUVOVEFUSU9OfEFDQ09VTlRfRk9SX1NLSVBQRURfRlJBTUVTfEFWT0lEQU5DRV9NT0RFfFRZUEUoPzpfKD86W0FCQ0RdfE5PTkUpKT98TUFYXyg/OkRFQ0VMfFRVUk5fUkFESVVTfCg/OkFDQ0VMfFNQRUVEKSkpfFBVUlNVSVRfKD86T0ZGU0VUfEZVWlpfRkFDVE9SfEdPQUxfVE9MRVJBTkNFfElOVEVSQ0VQVCl8UkVRVUlSRV9MSU5FX09GX1NJR0hUfEZPUkNFX0RJUkVDVF9QQVRIfFZFUlRJQ0FMfEhPUklaT05UQUx8QVZPSURfKD86Q0hBUkFDVEVSU3xEWU5BTUlDX09CU1RBQ0xFU3xOT05FKXxQVV8oPzpFVkFERV8oPzpISURERU58U1BPVFRFRCl8RkFJTFVSRV8oPzpEWU5BTUlDX1BBVEhGSU5ESU5HX0RJU0FCTEVEfElOVkFMSURfKD86R09BTHxTVEFSVCl8Tk9fKD86TkFWTUVTSHxWQUxJRF9ERVNUSU5BVElPTil8T1RIRVJ8VEFSR0VUX0dPTkV8KD86UEFSQ0VMXyk/VU5SRUFDSEFCTEUpfCg/OkdPQUx8U0xPV0RPV05fRElTVEFOQ0UpX1JFQUNIRUQpfFRSQVZFUlNBTF9UWVBFKD86Xyg/OkZBU1R8Tk9ORXxTTE9XKSk/fENPTlRFTlRfVFlQRV8oPzpBVE9NfEZPUk18SFRNTHxKU09OfExMU0R8UlNTfFRFWFR8WEhUTUx8WE1MKXxHQ05QXyg/OlJBRElVU3xTVEFUSUMpfCg/OlBBVFJPTHxXQU5ERVIpX1BBVVNFX0FUX1dBWVBPSU5UU3xPUFRfKD86QVZBVEFSfENIQVJBQ1RFUnxFWENMVVNJT05fVk9MVU1FfExFR0FDWV9MSU5LU0VUfE1BVEVSSUFMX1ZPTFVNRXxPVEhFUnxTVEFUSUNfT0JTVEFDTEV8V0FMS0FCTEUpfFNJTV9TVEFUX1BDVF9DSEFSU19TVEVQUEVEKVxcXFxiJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86RkFMU0V8VFJVRSlcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OlpFUk9fUk9UQVRJT04pXFxcXGInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpFT0Z8SlNPTl8oPzpBUlJBWXxERUxFVEV8RkFMU0V8SU5WQUxJRHxOVUxMfE5VTUJFUnxPQkpFQ1R8U1RSSU5HfFRSVUUpfE5VTExfS0VZfFRFWFRVUkVfKD86QkxBTkt8REVGQVVMVHxNRURJQXxQTFlXT09EfFRSQU5TUEFSRU5UKXxVUkxfUkVRVUVTVF8oPzpHUkFOVEVEfERFTklFRCkpXFxcXGInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpaRVJPX1ZFQ1RPUnxUT1VDSF9JTlZBTElEXyg/OlRFWENPT1JEfFZFQ1RPUikpXFxcXGInXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgdmFyIExTTF9GVU5DVElPTlMgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYig/OmxsKD86QWdlbnRJbkV4cGVyaWVuY2V8KD86Q3JlYXRlfERhdGFTaXplfERlbGV0ZXxLZXlDb3VudHxLZXlzfFJlYWR8VXBkYXRlKUtleVZhbHVlfEdldEV4cGVyaWVuY2UoPzpEZXRhaWxzfEVycm9yTWVzc2FnZSl8UmV0dXJuT2JqZWN0c0J5KD86SUR8T3duZXIpfEpzb24oPzoyTGlzdHxbR1NdZXRWYWx1ZXxWYWx1ZVR5cGUpfFNpbnxDb3N8VGFufEF0YW4yfFNxcnR8UG93fEFic3xGYWJzfEZyYW5kfEZsb29yfENlaWx8Um91bmR8VmVjKD86TWFnfE5vcm18RGlzdCl8Um90KD86QmV0d2VlbnwyKD86RXVsZXJ8RndkfExlZnR8VXApKXwoPzpFdWxlcnxBeGVzKTJSb3R8V2hpc3BlcnwoPzpSZWdpb258T3duZXIpP1NheXxTaG91dHxMaXN0ZW4oPzpDb250cm9sfFJlbW92ZSk/fFNlbnNvcig/OlJlcGVhdHxSZW1vdmUpP3xEZXRlY3RlZCg/Ok5hbWV8S2V5fE93bmVyfFR5cGV8UG9zfFZlbHxHcmFifFJvdHxHcm91cHxMaW5rTnVtYmVyKXxEaWV8R3JvdW5kfFdpbmR8KD86W0dTXWV0KSg/OkFuaW1hdGlvbk92ZXJyaWRlfE1lbW9yeUxpbWl0fFByaW1NZWRpYVBhcmFtc3xQYXJjZWxNdXNpY1VSTHxPYmplY3QoPzpEZXNjfE5hbWUpfFBoeXNpY3NNYXRlcmlhbHxTdGF0dXN8U2NhbGV8Q29sb3J8QWxwaGF8VGV4dHVyZXxQb3N8Um90fEZvcmNlfFRvcnF1ZSl8UmVzZXRBbmltYXRpb25PdmVycmlkZXwoPzpTY2FsZXxPZmZzZXR8Um90YXRlKVRleHR1cmV8KD86Um90KT9UYXJnZXQoPzpSZW1vdmUpP3woPzpTdG9wKT9Nb3ZlVG9UYXJnZXR8QXBwbHkoPzpSb3RhdGlvbmFsKT9JbXB1bHNlfFNldCg/OktleWZyYW1lZE1vdGlvbnxDb250ZW50VHlwZXxSZWdpb25Qb3N8KD86QW5ndWxhcik/VmVsb2NpdHl8QnVveWFuY3l8SG92ZXJIZWlnaHR8Rm9yY2VBbmRUb3JxdWV8VGltZXJFdmVudHxTY3JpcHRTdGF0ZXxEYW1hZ2V8VGV4dHVyZUFuaW18U291bmQoPzpRdWV1ZWluZ3xSYWRpdXMpfFZlaGljbGUoPzpUeXBlfCg/OkZsb2F0fFZlY3RvcnxSb3RhdGlvbilQYXJhbSl8KD86VG91Y2h8U2l0KT9UZXh0fENhbWVyYSg/OkV5ZXxBdClPZmZzZXR8UHJpbWl0aXZlUGFyYW1zfENsaWNrQWN0aW9ufExpbmsoPzpBbHBoYXxDb2xvcnxQcmltaXRpdmVQYXJhbXMoPzpGYXN0KT98VGV4dHVyZSg/OkFuaW0pP3xDYW1lcmF8TWVkaWEpfFJlbW90ZVNjcmlwdEFjY2Vzc1BpbnxQYXlQcmljZXxMb2NhbFJvdCl8U2NhbGVCeUZhY3RvcnxHZXQoPzooPzpNYXh8TWluKVNjYWxlRmFjdG9yfENsb3Nlc3ROYXZQb2ludHxTdGF0aWNQYXRofFNpbVN0YXRzfEVudnxQcmltaXRpdmVQYXJhbXN8TGluayg/OlByaW1pdGl2ZVBhcmFtc3xOdW1iZXIoPzpPZlNpZGVzKT98S2V5fE5hbWV8TWVkaWEpfEhUVFBIZWFkZXJ8RnJlZVVSTHN8T2JqZWN0KD86RGV0YWlsc3xQZXJtTWFza3xQcmltQ291bnQpfFBhcmNlbCg/Ok1heFByaW1zfERldGFpbHN8UHJpbSg/OkNvdW50fE93bmVycykpfEF0dGFjaGVkKD86TGlzdCk/fCg/OlNQTWF4fEZyZWV8VXNlZClNZW1vcnl8UmVnaW9uKD86TmFtZXxUaW1lRGlsYXRpb258RlBTfENvcm5lcnxBZ2VudENvdW50KXxSb290KD86UG9zaXRpb258Um90YXRpb24pfFVuaXhUaW1lfCg/OlBhcmNlbHxSZWdpb24pRmxhZ3N8KD86V2FsbHxHTVQpY2xvY2t8U2ltdWxhdG9ySG9zdG5hbWV8Qm91bmRpbmdCb3h8R2VvbWV0cmljQ2VudGVyfENyZWF0b3J8TnVtYmVyT2YoPzpQcmltc3xOb3RlY2FyZExpbmVzfFNpZGVzKXxBbmltYXRpb24oPzpMaXN0KT98KD86Q2FtZXJhfExvY2FsKSg/OlBvc3xSb3QpfFZlbHxBY2NlbHxPbWVnYXxUaW1lKD86c3RhbXB8T2ZEYXkpfCg/Ok9iamVjdHxDZW50ZXJPZik/TWFzc3xNYXNzTUtTfEVuZXJneXxPd25lcnwoPzpPd25lcik/S2V5fFN1bkRpcmVjdGlvbnxUZXh0dXJlKD86T2Zmc2V0fFNjYWxlfFJvdCl8SW52ZW50b3J5KD86TnVtYmVyfE5hbWV8S2V5fFR5cGV8Q3JlYXRvcnxQZXJtTWFzayl8UGVybWlzc2lvbnMoPzpLZXkpP3xTdGFydFBhcmFtZXRlcnxMaXN0KD86TGVuZ3RofEVudHJ5VHlwZSl8RGF0ZXxBZ2VudCg/OlNpemV8SW5mb3xMYW5ndWFnZXxMaXN0KXxMYW5kT3duZXJBdHxOb3RlY2FyZExpbmV8U2NyaXB0KD86TmFtZXxTdGF0ZSkpfCg/OkdldHxSZXNldHxHZXRBbmRSZXNldClUaW1lfFBsYXlTb3VuZCg/OlNsYXZlKT98TG9vcFNvdW5kKD86TWFzdGVyfFNsYXZlKT98KD86VHJpZ2dlcnxTdG9wfFByZWxvYWQpU291bmR8KD86KD86R2V0fERlbGV0ZSlTdWJ8SW5zZXJ0KVN0cmluZ3xUbyg/OlVwcGVyfExvd2VyKXxHaXZlKD86SW52ZW50b3J5TGlzdHxNb25leSl8UmV6T2JqZWN0fCg/OlN0b3ApP0xvb2tBdHxTbGVlcHxDb2xsaXNpb25GaWx0ZXJ8KD86VGFrZXxSZWxlYXNlKUNvbnRyb2xzfERldGFjaEZyb21BdmF0YXJ8QXR0YWNoVG9BdmF0YXIoPzpUZW1wKT98SW5zdGFudE1lc3NhZ2V8KD86R2V0TmV4dCk/RW1haWx8U3RvcEhvdmVyfE1pbkV2ZW50RGVsYXl8Um90TG9va0F0fFN0cmluZyg/Okxlbmd0aHxUcmltKXwoPzpTdGFydHxTdG9wKUFuaW1hdGlvbnxUYXJnZXRPbWVnYXxSZXF1ZXN0KD86RXhwZXJpZW5jZSk/UGVybWlzc2lvbnN8KD86Q3JlYXRlfEJyZWFrKUxpbmt8QnJlYWtBbGxMaW5rc3woPzpHaXZlfFJlbW92ZSlJbnZlbnRvcnl8V2F0ZXJ8UGFzc1RvdWNoZXN8UmVxdWVzdCg/OkFnZW50fEludmVudG9yeSlEYXRhfFRlbGVwb3J0QWdlbnQoPzpIb21lfEdsb2JhbENvb3Jkcyk/fE1vZGlmeUxhbmR8Q29sbGlzaW9uU291bmR8UmVzZXRTY3JpcHR8TWVzc2FnZUxpbmtlZHxQdXNoT2JqZWN0fFBhc3NDb2xsaXNpb25zfEF4aXNBbmdsZTJSb3R8Um90Mig/OkF4aXN8QW5nbGUpfEEoPzpjb3N8c2luKXxBbmdsZUJldHdlZW58QWxsb3dJbnZlbnRvcnlEcm9wfFN1YlN0cmluZ0luZGV4fExpc3QyKD86Q1NWfEludGVnZXJ8SnNvbnxGbG9hdHxTdHJpbmd8S2V5fFZlY3RvcnxSb3R8TGlzdCg/OlN0cmlkZWQpPyl8RGVsZXRlU3ViTGlzdHxMaXN0KD86U3RhdGlzdGljc3xTb3J0fFJhbmRvbWl6ZXwoPzpJbnNlcnR8RmluZHxSZXBsYWNlKUxpc3QpfEVkZ2VPZldvcmxkfEFkanVzdFNvdW5kVm9sdW1lfEtleTJOYW1lfFRyaWdnZXJTb3VuZExpbWl0ZWR8RWplY3RGcm9tTGFuZHwoPzpDU1Z8UGFyc2VTdHJpbmcpMkxpc3R8T3Zlck15TGFuZHxTYW1lR3JvdXB8VW5TaXR8R3JvdW5kKD86U2xvcGV8Tm9ybWFsfENvbnRvdXIpfEdyb3VuZFJlcGVsfCg/OlNldHxSZW1vdmUpVmVoaWNsZUZsYWdzfCg/OkF2YXRhck9uKT8oPzpMaW5rKT9TaXRUYXJnZXR8U2NyaXB0KD86RGFuZ2VyfFByb2ZpbGVyKXxEaWFsb2d8Vm9sdW1lRGV0ZWN0fFJlc2V0T3RoZXJTY3JpcHR8UmVtb3RlTG9hZFNjcmlwdFBpbnwoPzpPcGVufENsb3NlKVJlbW90ZURhdGFDaGFubmVsfFNlbmRSZW1vdGVEYXRhfFJlbW90ZURhdGFSZXBseXwoPzpJbnRlZ2VyfFN0cmluZylUb0Jhc2U2NHxYb3JCYXNlNjR8TG9nKD86MTApP3xCYXNlNjRUbyg/OlN0cmluZ3xJbnRlZ2VyKXxQYXJzZVN0cmluZ0tlZXBOdWxsc3xSZXpBdFJvb3R8UmVxdWVzdFNpbXVsYXRvckRhdGF8Rm9yY2VNb3VzZWxvb2t8KD86TG9hZHxSZWxlYXNlfCg/OkV8VW5lKXNjYXBlKVVSTHxQYXJjZWxNZWRpYSg/OkNvbW1hbmRMaXN0fFF1ZXJ5KXxNb2RQb3d8TWFwRGVzdGluYXRpb258KD86UmVtb3ZlRnJvbXxBZGRUb3xSZXNldClMYW5kKD86UGFzc3xCYW4pTGlzdHwoPzpTZXR8Q2xlYXIpQ2FtZXJhUGFyYW1zfEhUVFAoPzpSZXF1ZXN0fFJlc3BvbnNlKXxUZXh0Qm94fERldGVjdGVkVG91Y2goPzpVVnxGYWNlfFBvc3woPzpOfEJpbilvcm1hbHxTVCl8KD86TUQ1fFNIQTF8RHVtcExpc3QyKVN0cmluZ3xSZXF1ZXN0KD86U2VjdXJlKT9VUkx8Q2xlYXIoPzpQcmltfExpbmspTWVkaWF8KD86TGluayk/UGFydGljbGVTeXN0ZW18KD86R2V0fFJlcXVlc3QpKD86VXNlcm5hbWV8RGlzcGxheU5hbWUpfFJlZ2lvblNheVRvfENhc3RSYXl8R2VuZXJhdGVLZXl8VHJhbnNmZXJMaW5kZW5Eb2xsYXJzfE1hbmFnZUVzdGF0ZUFjY2Vzc3woPzpDcmVhdGV8RGVsZXRlKUNoYXJhY3RlcnxFeGVjQ2hhcmFjdGVyQ21kfEV2YWRlfEZsZWVGcm9tfE5hdmlnYXRlVG98UGF0cm9sUG9pbnRzfFB1cnN1ZXxVcGRhdGVDaGFyYWN0ZXJ8V2FuZGVyV2l0aGluKSlcXFxcYidcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWxsZWdhbDogJzonLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgTFNMX1NUUklOR1MsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCcvLycsICckJyksXG4gICAgICAgICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIExTTF9OVU1CRVJTLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpzdGF0ZXxkZWZhdWx0KVxcXFxiJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86c3RhdGVfKD86ZW50cnl8ZXhpdCl8dG91Y2goPzpfKD86c3RhcnR8ZW5kKSk/fCg/OmxhbmRfKT9jb2xsaXNpb24oPzpfKD86c3RhcnR8ZW5kKSk/fHRpbWVyfGxpc3RlbnwoPzpub18pP3NlbnNvcnxjb250cm9sfCg/Om5vdF8pP2F0Xyg/OnJvdF8pP3RhcmdldHxtb25leXxlbWFpbHxleHBlcmllbmNlX3Blcm1pc3Npb25zKD86X2RlbmllZCk/fHJ1bl90aW1lX3Blcm1pc3Npb25zfGNoYW5nZWR8YXR0YWNofGRhdGFzZXJ2ZXJ8bW92aW5nXyg/OnN0YXJ0fGVuZCl8bGlua19tZXNzYWdlfCg/Om9ufG9iamVjdClfcmV6fHJlbW90ZV9kYXRhfGh0dHBfcmUoPzpzcG9uc2V8cXVlc3QpfHBhdGhfdXBkYXRlfHRyYW5zYWN0aW9uX3Jlc3VsdClcXFxcYidcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBMU0xfRlVOQ1RJT05TLFxuICAgICAgICAgICAgTFNMX0NPTlNUQU5UUyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86aW50ZWdlcnxmbG9hdHxzdHJpbmd8a2V5fHZlY3RvcnxxdWF0ZXJuaW9ufHJvdGF0aW9ufGxpc3QpXFxcXGInXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE9QRU5JTkdfTE9OR19CUkFDS0VUID0gJ1xcXFxbPSpcXFxcWyc7XG4gIHZhciBDTE9TSU5HX0xPTkdfQlJBQ0tFVCA9ICdcXFxcXT0qXFxcXF0nO1xuICB2YXIgTE9OR19CUkFDS0VUUyA9IHtcbiAgICBiZWdpbjogT1BFTklOR19MT05HX0JSQUNLRVQsIGVuZDogQ0xPU0lOR19MT05HX0JSQUNLRVQsXG4gICAgY29udGFpbnM6IFsnc2VsZiddXG4gIH07XG4gIHZhciBDT01NRU5UUyA9IFtcbiAgICBobGpzLkNPTU1FTlQoJy0tKD8hJyArIE9QRU5JTkdfTE9OR19CUkFDS0VUICsgJyknLCAnJCcpLFxuICAgIGhsanMuQ09NTUVOVChcbiAgICAgICctLScgKyBPUEVOSU5HX0xPTkdfQlJBQ0tFVCxcbiAgICAgIENMT1NJTkdfTE9OR19CUkFDS0VULFxuICAgICAge1xuICAgICAgICBjb250YWluczogW0xPTkdfQlJBQ0tFVFNdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgKVxuICBdO1xuICByZXR1cm4ge1xuICAgIGxleGVtZXM6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbGl0ZXJhbDogXCJ0cnVlIGZhbHNlIG5pbFwiLFxuICAgICAga2V5d29yZDogXCJhbmQgYnJlYWsgZG8gZWxzZSBlbHNlaWYgZW5kIGZvciBnb3RvIGlmIGluIGxvY2FsIG5vdCBvciByZXBlYXQgcmV0dXJuIHRoZW4gdW50aWwgd2hpbGVcIixcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAvL01ldGF0YWdzIGFuZCBnbG9iYWxzOlxuICAgICAgICAnX0cgX0VOViBfVkVSU0lPTiBfX2luZGV4IF9fbmV3aW5kZXggX19tb2RlIF9fY2FsbCBfX21ldGF0YWJsZSBfX3Rvc3RyaW5nIF9fbGVuICcgK1xuICAgICAgICAnX19nYyBfX2FkZCBfX3N1YiBfX211bCBfX2RpdiBfX21vZCBfX3BvdyBfX2NvbmNhdCBfX3VubSBfX2VxIF9fbHQgX19sZSBhc3NlcnQgJyArXG4gICAgICAgIC8vU3RhbmRhcmQgbWV0aG9kcyBhbmQgcHJvcGVydGllczpcbiAgICAgICAgJ2NvbGxlY3RnYXJiYWdlIGRvZmlsZSBlcnJvciBnZXRmZW52IGdldG1ldGF0YWJsZSBpcGFpcnMgbG9hZCBsb2FkZmlsZSBsb2Fkc3RyaW5nJyArXG4gICAgICAgICdtb2R1bGUgbmV4dCBwYWlycyBwY2FsbCBwcmludCByYXdlcXVhbCByYXdnZXQgcmF3c2V0IHJlcXVpcmUgc2VsZWN0IHNldGZlbnYnICtcbiAgICAgICAgJ3NldG1ldGF0YWJsZSB0b251bWJlciB0b3N0cmluZyB0eXBlIHVucGFjayB4cGNhbGwgYXJnIHNlbGYnICtcbiAgICAgICAgLy9MaWJyYXJ5IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgKG9uZSBsaW5lIHBlciBsaWJyYXJ5KTpcbiAgICAgICAgJ2Nvcm91dGluZSByZXN1bWUgeWllbGQgc3RhdHVzIHdyYXAgY3JlYXRlIHJ1bm5pbmcgZGVidWcgZ2V0dXB2YWx1ZSAnICtcbiAgICAgICAgJ2RlYnVnIHNldGhvb2sgZ2V0bWV0YXRhYmxlIGdldGhvb2sgc2V0bWV0YXRhYmxlIHNldGxvY2FsIHRyYWNlYmFjayBzZXRmZW52IGdldGluZm8gc2V0dXB2YWx1ZSBnZXRsb2NhbCBnZXRyZWdpc3RyeSBnZXRmZW52ICcgK1xuICAgICAgICAnaW8gbGluZXMgd3JpdGUgY2xvc2UgZmx1c2ggb3BlbiBvdXRwdXQgdHlwZSByZWFkIHN0ZGVyciBzdGRpbiBpbnB1dCBzdGRvdXQgcG9wZW4gdG1wZmlsZSAnICtcbiAgICAgICAgJ21hdGggbG9nIG1heCBhY29zIGh1Z2UgbGRleHAgcGkgY29zIHRhbmggcG93IGRlZyB0YW4gY29zaCBzaW5oIHJhbmRvbSByYW5kb21zZWVkIGZyZXhwIGNlaWwgZmxvb3IgcmFkIGFicyBzcXJ0IG1vZGYgYXNpbiBtaW4gbW9kIGZtb2QgbG9nMTAgYXRhbjIgZXhwIHNpbiBhdGFuICcgK1xuICAgICAgICAnb3MgZXhpdCBzZXRsb2NhbGUgZGF0ZSBnZXRlbnYgZGlmZnRpbWUgcmVtb3ZlIHRpbWUgY2xvY2sgdG1wbmFtZSByZW5hbWUgZXhlY3V0ZSBwYWNrYWdlIHByZWxvYWQgbG9hZGxpYiBsb2FkZWQgbG9hZGVycyBjcGF0aCBjb25maWcgcGF0aCBzZWVhbGwgJyArXG4gICAgICAgICdzdHJpbmcgc3ViIHVwcGVyIGxlbiBnZmluZCByZXAgZmluZCBtYXRjaCBjaGFyIGR1bXAgZ21hdGNoIHJldmVyc2UgYnl0ZSBmb3JtYXQgZ3N1YiBsb3dlciAnICtcbiAgICAgICAgJ3RhYmxlIHNldG4gaW5zZXJ0IGdldG4gZm9yZWFjaGkgbWF4biBmb3JlYWNoIGNvbmNhdCBzb3J0IHJlbW92ZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBDT01NRU5UUy5jb25jYXQoW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICcoW19hLXpBLVpdXFxcXHcqXFxcXC4pKihbX2EtekEtWl1cXFxcdyo6KT9bX2EtekEtWl1cXFxcdyonfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBDT01NRU5UU1xuICAgICAgICAgIH1cbiAgICAgICAgXS5jb25jYXQoQ09NTUVOVFMpXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IE9QRU5JTkdfTE9OR19CUkFDS0VULCBlbmQ6IENMT1NJTkdfTE9OR19CUkFDS0VULFxuICAgICAgICBjb250YWluczogW0xPTkdfQlJBQ0tFVFNdLFxuICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgLyogVmFyaWFibGVzOiBzaW1wbGUgKGVnICQodmFyKSkgYW5kIHNwZWNpYWwgKGVnICRAKSAqL1xuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXCRcXFxcKCcgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXCknLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcJFtAJTw/XFxeXFwrXFwqXS9cbiAgICAgIH0sXG4gICAgXVxuICB9O1xuICAvKiBRdW90ZWQgc3RyaW5nIHdpdGggdmFyaWFibGVzIGluc2lkZSAqL1xuICB2YXIgUVVPVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgVkFSSUFCTEUsXG4gICAgXVxuICB9O1xuICAvKiBGdW5jdGlvbjogJChmdW5jIGFyZywuLi4pICovXG4gIHZhciBGVU5DID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJFxcKFtcXHctXStcXHMvLCBlbmQ6IC9cXCkvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3N1YnN0IHBhdHN1YnN0IHN0cmlwIGZpbmRzdHJpbmcgZmlsdGVyIGZpbHRlci1vdXQgc29ydCAnICtcbiAgICAgICAgJ3dvcmQgd29yZGxpc3QgZmlyc3R3b3JkIGxhc3R3b3JkIGRpciBub3RkaXIgc3VmZml4IGJhc2VuYW1lICcgK1xuICAgICAgICAnYWRkc3VmZml4IGFkZHByZWZpeCBqb2luIHdpbGRjYXJkIHJlYWxwYXRoIGFic3BhdGggZXJyb3Igd2FybmluZyAnICtcbiAgICAgICAgJ3NoZWxsIG9yaWdpbiBmbGF2b3IgZm9yZWFjaCBpZiBvciBhbmQgY2FsbCBldmFsIGZpbGUgdmFsdWUnLFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFZBUklBQkxFLFxuICAgIF1cbiAgfTtcbiAgLyogVmFyaWFibGUgYXNzaWdubWVudCAqL1xuICB2YXIgVkFSX0FTU0lHID0ge1xuICAgIGJlZ2luOiAnXicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqWzorP10/PScsXG4gICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ14nICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLCBlbmQ6ICdbOis/XT89JyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIC8qIE1ldGEgdGFyZ2V0cyAoLlBIT05ZKSAqL1xuICB2YXIgTUVUQSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogL15cXC5QSE9OWTovLCBlbmQ6IC8kLyxcbiAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnLlBIT05ZJ30sXG4gICAgbGV4ZW1lczogL1tcXC5cXHddKy9cbiAgfTtcbiAgLyogVGFyZ2V0cyAqL1xuICB2YXIgVEFSR0VUID0ge1xuICAgIGNsYXNzTmFtZTogJ3NlY3Rpb24nLFxuICAgIGJlZ2luOiAvXlteXFxzXSs6LywgZW5kOiAvJC8sXG4gICAgY29udGFpbnM6IFtWQVJJQUJMRSxdXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydtaycsICdtYWsnXSxcbiAgICBrZXl3b3JkczpcbiAgICAgICdkZWZpbmUgZW5kZWYgdW5kZWZpbmUgaWZkZWYgaWZuZGVmIGlmZXEgaWZuZXEgZWxzZSBlbmRpZiAnICtcbiAgICAgICdpbmNsdWRlIC1pbmNsdWRlIHNpbmNsdWRlIG92ZXJyaWRlIGV4cG9ydCB1bmV4cG9ydCBwcml2YXRlIHZwYXRoJyxcbiAgICBsZXhlbWVzOiAvW1xcdy1dKy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIFFVT1RFX1NUUklORyxcbiAgICAgIEZVTkMsXG4gICAgICBWQVJfQVNTSUcsXG4gICAgICBNRVRBLFxuICAgICAgVEFSR0VULFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydtbWEnXSxcbiAgICBsZXhlbWVzOiAnKFxcXFwkfFxcXFxiKScgKyBobGpzLklERU5UX1JFICsgJ1xcXFxiJyxcbiAgICBrZXl3b3JkczogJ0FiZWxpYW5Hcm91cCBBYm9ydCBBYm9ydEtlcm5lbHMgQWJvcnRQcm90ZWN0IEFib3ZlIEFicyBBYnNvbHV0ZSBBYnNvbHV0ZUNvcnJlbGF0aW9uIEFic29sdXRlQ29ycmVsYXRpb25GdW5jdGlvbiBBYnNvbHV0ZUN1cnJlbnRWYWx1ZSBBYnNvbHV0ZURhc2hpbmcgQWJzb2x1dGVGaWxlTmFtZSBBYnNvbHV0ZU9wdGlvbnMgQWJzb2x1dGVQb2ludFNpemUgQWJzb2x1dGVUaGlja25lc3MgQWJzb2x1dGVUaW1lIEFic29sdXRlVGltaW5nIEFjY291bnRpbmdGb3JtIEFjY3VtdWxhdGUgQWNjdXJhY3kgQWNjdXJhY3lHb2FsIEFjdGlvbkRlbGF5IEFjdGlvbk1lbnUgQWN0aW9uTWVudUJveCBBY3Rpb25NZW51Qm94T3B0aW9ucyBBY3RpdmUgQWN0aXZlSXRlbSBBY3RpdmVTdHlsZSBBY3ljbGljR3JhcGhRIEFkZE9uSGVscFBhdGggQWRkVG8gQWRqYWNlbmN5R3JhcGggQWRqYWNlbmN5TGlzdCBBZGphY2VuY3lNYXRyaXggQWRqdXN0bWVudEJveCBBZGp1c3RtZW50Qm94T3B0aW9ucyBBZGp1c3RUaW1lU2VyaWVzRm9yZWNhc3QgQWZmaW5lVHJhbnNmb3JtIEFmdGVyIEFpcnlBaSBBaXJ5QWlQcmltZSBBaXJ5QWlaZXJvIEFpcnlCaSBBaXJ5QmlQcmltZSBBaXJ5QmlaZXJvIEFsZ2VicmFpY0ludGVnZXJRIEFsZ2VicmFpY051bWJlciBBbGdlYnJhaWNOdW1iZXJEZW5vbWluYXRvciBBbGdlYnJhaWNOdW1iZXJOb3JtIEFsZ2VicmFpY051bWJlclBvbHlub21pYWwgQWxnZWJyYWljTnVtYmVyVHJhY2UgQWxnZWJyYWljUnVsZXMgQWxnZWJyYWljUnVsZXNEYXRhIEFsZ2VicmFpY3MgQWxnZWJyYWljVW5pdFEgQWxpZ25tZW50IEFsaWdubWVudE1hcmtlciBBbGlnbm1lbnRQb2ludCBBbGwgQWxsb3dlZERpbWVuc2lvbnMgQWxsb3dHcm91cENsb3NlIEFsbG93SW5saW5lQ2VsbHMgQWxsb3dLZXJuZWxJbml0aWFsaXphdGlvbiBBbGxvd1JldmVyc2VHcm91cENsb3NlIEFsbG93U2NyaXB0TGV2ZWxDaGFuZ2UgQWxwaGFDaGFubmVsIEFsdGVybmF0aW5nR3JvdXAgQWx0ZXJuYXRpdmVIeXBvdGhlc2lzIEFsdGVybmF0aXZlcyBBbWJpZW50TGlnaHQgQW5hbHl0aWMgQW5jaG9yZWRTZWFyY2ggQW5kIEFuZGVyc29uRGFybGluZ1Rlc3QgQW5nZXJKIEFuZ2xlQnJhY2tldCBBbmd1bGFyR2F1Z2UgQW5pbWF0ZSBBbmltYXRpb25DeWNsZU9mZnNldCBBbmltYXRpb25DeWNsZVJlcGV0aXRpb25zIEFuaW1hdGlvbkRpcmVjdGlvbiBBbmltYXRpb25EaXNwbGF5VGltZSBBbmltYXRpb25SYXRlIEFuaW1hdGlvblJlcGV0aXRpb25zIEFuaW1hdGlvblJ1bm5pbmcgQW5pbWF0b3IgQW5pbWF0b3JCb3ggQW5pbWF0b3JCb3hPcHRpb25zIEFuaW1hdG9yRWxlbWVudHMgQW5ub3RhdGlvbiBBbm51aXR5IEFubnVpdHlEdWUgQW50aWFsaWFzaW5nIEFudGlzeW1tZXRyaWMgQXBhcnQgQXBhcnRTcXVhcmVGcmVlIEFwcGVhcmFuY2UgQXBwZWFyYW5jZUVsZW1lbnRzIEFwcGVsbEYxIEFwcGVuZCBBcHBlbmRUbyBBcHBseSBBcmNDb3MgQXJjQ29zaCBBcmNDb3QgQXJjQ290aCBBcmNDc2MgQXJjQ3NjaCBBcmNTZWMgQXJjU2VjaCBBcmNTaW4gQXJjU2luRGlzdHJpYnV0aW9uIEFyY1NpbmggQXJjVGFuIEFyY1RhbmggQXJnIEFyZ01heCBBcmdNaW4gQXJndW1lbnRDb3VudFEgQVJJTUFQcm9jZXNzIEFyaXRobWV0aWNHZW9tZXRyaWNNZWFuIEFSTUFQcm9jZXNzIEFSUHJvY2VzcyBBcnJheSBBcnJheUNvbXBvbmVudHMgQXJyYXlEZXB0aCBBcnJheUZsYXR0ZW4gQXJyYXlQYWQgQXJyYXlQbG90IEFycmF5USBBcnJheVJlc2hhcGUgQXJyYXlSdWxlcyBBcnJheXMgQXJyb3cgQXJyb3czREJveCBBcnJvd0JveCBBcnJvd2hlYWRzIEFzcGVjdFJhdGlvIEFzcGVjdFJhdGlvRml4ZWQgQXNzZXJ0IEFzc3VtaW5nIEFzc3VtcHRpb25zIEFzdHJvbm9taWNhbERhdGEgQXN5bmNocm9ub3VzIEFzeW5jaHJvbm91c1Rhc2tPYmplY3QgQXN5bmNocm9ub3VzVGFza3MgQXRvbVEgQXR0cmlidXRlcyBBdWdtZW50ZWRTeW1tZXRyaWNQb2x5bm9taWFsIEF1dG9BY3Rpb24gQXV0b0RlbGV0ZSBBdXRvRXZhbHVhdGVFdmVudHMgQXV0b0dlbmVyYXRlZFBhY2thZ2UgQXV0b0luZGVudCBBdXRvSW5kZW50U3BhY2luZ3MgQXV0b0l0YWxpY1dvcmRzIEF1dG9sb2FkUGF0aCBBdXRvTWF0Y2ggQXV0b21hdGljIEF1dG9tYXRpY0ltYWdlU2l6ZSBBdXRvTXVsdGlwbGljYXRpb25TeW1ib2wgQXV0b051bWJlckZvcm1hdHRpbmcgQXV0b09wZW5Ob3RlYm9va3MgQXV0b09wZW5QYWxldHRlcyBBdXRvcnVuU2VxdWVuY2luZyBBdXRvU2NhbGluZyBBdXRvU2Nyb2xsIEF1dG9TcGFjaW5nIEF1dG9TdHlsZU9wdGlvbnMgQXV0b1N0eWxlV29yZHMgQXhlcyBBeGVzRWRnZSBBeGVzTGFiZWwgQXhlc09yaWdpbiBBeGVzU3R5bGUgQXhpcyAnICtcbiAgICAgICdCYWJ5TW9uc3Rlckdyb3VwQiBCYWNrIEJhY2tncm91bmQgQmFja2dyb3VuZFRhc2tzU2V0dGluZ3MgQmFja3NsYXNoIEJhY2tzdWJzdGl0dXRpb24gQmFja3dhcmQgQmFuZCBCYW5kcGFzc0ZpbHRlciBCYW5kc3RvcEZpbHRlciBCYXJhYmFzaUFsYmVydEdyYXBoRGlzdHJpYnV0aW9uIEJhckNoYXJ0IEJhckNoYXJ0M0QgQmFyTGVnZW5kIEJhcmxvd1Byb3NjaGFuSW1wb3J0YW5jZSBCYXJuZXNHIEJhck9yaWdpbiBCYXJTcGFjaW5nIEJhcnRsZXR0SGFubldpbmRvdyBCYXJ0bGV0dFdpbmRvdyBCYXNlRm9ybSBCYXNlbGluZSBCYXNlbGluZVBvc2l0aW9uIEJhc2VTdHlsZSBCYXRlc0Rpc3RyaWJ1dGlvbiBCYXR0bGVMZW1hcmllV2F2ZWxldCBCZWNhdXNlIEJlY2ttYW5uRGlzdHJpYnV0aW9uIEJlZXAgQmVmb3JlIEJlZ2luIEJlZ2luRGlhbG9nUGFja2V0IEJlZ2luRnJvbnRFbmRJbnRlcmFjdGlvblBhY2tldCBCZWdpblBhY2thZ2UgQmVsbEIgQmVsbFkgQmVsb3cgQmVuZm9yZERpc3RyaWJ1dGlvbiBCZW5pbmlEaXN0cmlidXRpb24gQmVua3RhbmRlckdpYnJhdERpc3RyaWJ1dGlvbiBCZW5rdGFuZGVyV2VpYnVsbERpc3RyaWJ1dGlvbiBCZXJub3VsbGlCIEJlcm5vdWxsaURpc3RyaWJ1dGlvbiBCZXJub3VsbGlHcmFwaERpc3RyaWJ1dGlvbiBCZXJub3VsbGlQcm9jZXNzIEJlcm5zdGVpbkJhc2lzIEJlc3NlbEZpbHRlck1vZGVsIEJlc3NlbEkgQmVzc2VsSiBCZXNzZWxKWmVybyBCZXNzZWxLIEJlc3NlbFkgQmVzc2VsWVplcm8gQmV0YSBCZXRhQmlub21pYWxEaXN0cmlidXRpb24gQmV0YURpc3RyaWJ1dGlvbiBCZXRhTmVnYXRpdmVCaW5vbWlhbERpc3RyaWJ1dGlvbiBCZXRhUHJpbWVEaXN0cmlidXRpb24gQmV0YVJlZ3VsYXJpemVkIEJldHdlZW5uZXNzQ2VudHJhbGl0eSBCZXppZXJDdXJ2ZSBCZXppZXJDdXJ2ZTNEQm94IEJlemllckN1cnZlM0RCb3hPcHRpb25zIEJlemllckN1cnZlQm94IEJlemllckN1cnZlQm94T3B0aW9ucyBCZXppZXJGdW5jdGlvbiBCaWxhdGVyYWxGaWx0ZXIgQmluYXJpemUgQmluYXJ5Rm9ybWF0IEJpbmFyeUltYWdlUSBCaW5hcnlSZWFkIEJpbmFyeVJlYWRMaXN0IEJpbmFyeVdyaXRlIEJpbkNvdW50cyBCaW5MaXN0cyBCaW5vbWlhbCBCaW5vbWlhbERpc3RyaWJ1dGlvbiBCaW5vbWlhbFByb2Nlc3MgQmlub3JtYWxEaXN0cmlidXRpb24gQmlvcnRob2dvbmFsU3BsaW5lV2F2ZWxldCBCaXBhcnRpdGVHcmFwaFEgQmlybmJhdW1JbXBvcnRhbmNlIEJpcm5iYXVtU2F1bmRlcnNEaXN0cmlidXRpb24gQml0QW5kIEJpdENsZWFyIEJpdEdldCBCaXRMZW5ndGggQml0Tm90IEJpdE9yIEJpdFNldCBCaXRTaGlmdExlZnQgQml0U2hpZnRSaWdodCBCaXRYb3IgQmxhY2sgQmxhY2ttYW5IYXJyaXNXaW5kb3cgQmxhY2ttYW5OdXR0YWxsV2luZG93IEJsYWNrbWFuV2luZG93IEJsYW5rIEJsYW5rRm9ybSBCbGFua051bGxTZXF1ZW5jZSBCbGFua1NlcXVlbmNlIEJsZW5kIEJsb2NrIEJsb2NrUmFuZG9tIEJsb21xdmlzdEJldGEgQmxvbXF2aXN0QmV0YVRlc3QgQmx1ZSBCbHVyIEJvZGVQbG90IEJvaG1hbldpbmRvdyBCb2xkIEJvb2ttYXJrcyBCb29sZSBCb29sZWFuQ29uc2VjdXRpdmVGdW5jdGlvbiBCb29sZWFuQ29udmVydCBCb29sZWFuQ291bnRpbmdGdW5jdGlvbiBCb29sZWFuRnVuY3Rpb24gQm9vbGVhbkdyYXBoIEJvb2xlYW5NYXh0ZXJtcyBCb29sZWFuTWluaW1pemUgQm9vbGVhbk1pbnRlcm1zIEJvb2xlYW5zIEJvb2xlYW5UYWJsZSBCb29sZWFuVmFyaWFibGVzIEJvcmRlckRpbWVuc2lvbnMgQm9yZWxUYW5uZXJEaXN0cmlidXRpb24gQm90dG9tIEJvdHRvbUhhdFRyYW5zZm9ybSBCb3VuZGFyeVN0eWxlIEJvdW5kcyBCb3ggQm94QmFzZWxpbmVTaGlmdCBCb3hEYXRhIEJveERpbWVuc2lvbnMgQm94ZWQgQm94ZXMgQm94Rm9ybSBCb3hGb3JtRm9ybWF0VHlwZXMgQm94RnJhbWUgQm94SUQgQm94TWFyZ2lucyBCb3hNYXRyaXggQm94UmF0aW9zIEJveFJvdGF0aW9uIEJveFJvdGF0aW9uUG9pbnQgQm94U3R5bGUgQm94V2hpc2tlckNoYXJ0IEJyYSBCcmFja2V0aW5nQmFyIEJyYUtldCBCcmF5Q3VydGlzRGlzdGFuY2UgQnJlYWR0aEZpcnN0U2NhbiBCcmVhayBCcm93biBCcm93bkZvcnN5dGhlVGVzdCBCcm93bmlhbkJyaWRnZVByb2Nlc3MgQnJvd3NlckNhdGVnb3J5IEJTcGxpbmVCYXNpcyBCU3BsaW5lQ3VydmUgQlNwbGluZUN1cnZlM0RCb3ggQlNwbGluZUN1cnZlQm94IEJTcGxpbmVDdXJ2ZUJveE9wdGlvbnMgQlNwbGluZUZ1bmN0aW9uIEJTcGxpbmVTdXJmYWNlIEJTcGxpbmVTdXJmYWNlM0RCb3ggQnViYmxlQ2hhcnQgQnViYmxlQ2hhcnQzRCBCdWJibGVTY2FsZSBCdWJibGVTaXplcyBCdWxsZXRHYXVnZSBCdXNpbmVzc0RheVEgQnV0dGVyZmx5R3JhcGggQnV0dGVyd29ydGhGaWx0ZXJNb2RlbCBCdXR0b24gQnV0dG9uQmFyIEJ1dHRvbkJveCBCdXR0b25Cb3hPcHRpb25zIEJ1dHRvbkNlbGwgQnV0dG9uQ29udGVudHMgQnV0dG9uRGF0YSBCdXR0b25FdmFsdWF0b3IgQnV0dG9uRXhwYW5kYWJsZSBCdXR0b25GcmFtZSBCdXR0b25GdW5jdGlvbiBCdXR0b25NYXJnaW5zIEJ1dHRvbk1pbkhlaWdodCBCdXR0b25Ob3RlIEJ1dHRvbk5vdGVib29rIEJ1dHRvblNvdXJjZSBCdXR0b25TdHlsZSBCdXR0b25TdHlsZU1lbnVMaXN0aW5nIEJ5dGUgQnl0ZUNvdW50IEJ5dGVPcmRlcmluZyAnICtcbiAgICAgICdDIENhY2hlZFZhbHVlIENhY2hlR3JhcGhpY3MgQ2FsZW5kYXJEYXRhIENhbGVuZGFyVHlwZSBDYWxsUGFja2V0IENhbmJlcnJhRGlzdGFuY2UgQ2FuY2VsIENhbmNlbEJ1dHRvbiBDYW5kbGVzdGlja0NoYXJ0IENhcCBDYXBGb3JtIENhcGl0YWxEaWZmZXJlbnRpYWxEIENhcmRpbmFsQlNwbGluZUJhc2lzIENhcm1pY2hhZWxMYW1iZGEgQ2FzZXMgQ2FzaGZsb3cgQ2Fzb3JhdGlhbiBDYXRhbGFuIENhdGFsYW5OdW1iZXIgQ2F0Y2ggQ2F1Y2h5RGlzdHJpYnV0aW9uIENhdWNoeVdpbmRvdyBDYXlsZXlHcmFwaCBDREYgQ0RGRGVwbG95IENERkluZm9ybWF0aW9uIENERldhdmVsZXQgQ2VpbGluZyBDZWxsIENlbGxBdXRvT3ZlcndyaXRlIENlbGxCYXNlbGluZSBDZWxsQm91bmRpbmdCb3ggQ2VsbEJyYWNrZXRPcHRpb25zIENlbGxDaGFuZ2VUaW1lcyBDZWxsQ29udGVudHMgQ2VsbENvbnRleHQgQ2VsbERpbmdiYXQgQ2VsbER5bmFtaWNFeHByZXNzaW9uIENlbGxFZGl0RHVwbGljYXRlIENlbGxFbGVtZW50c0JvdW5kaW5nQm94IENlbGxFbGVtZW50U3BhY2luZ3MgQ2VsbEVwaWxvZyBDZWxsRXZhbHVhdGlvbkR1cGxpY2F0ZSBDZWxsRXZhbHVhdGlvbkZ1bmN0aW9uIENlbGxFdmVudEFjdGlvbnMgQ2VsbEZyYW1lIENlbGxGcmFtZUNvbG9yIENlbGxGcmFtZUxhYmVsTWFyZ2lucyBDZWxsRnJhbWVMYWJlbHMgQ2VsbEZyYW1lTWFyZ2lucyBDZWxsR3JvdXAgQ2VsbEdyb3VwRGF0YSBDZWxsR3JvdXBpbmcgQ2VsbEdyb3VwaW5nUnVsZXMgQ2VsbEhvcml6b250YWxTY3JvbGxpbmcgQ2VsbElEIENlbGxMYWJlbCBDZWxsTGFiZWxBdXRvRGVsZXRlIENlbGxMYWJlbE1hcmdpbnMgQ2VsbExhYmVsUG9zaXRpb25pbmcgQ2VsbE1hcmdpbnMgQ2VsbE9iamVjdCBDZWxsT3BlbiBDZWxsUHJpbnQgQ2VsbFByb2xvZyBDZWxscyBDZWxsU2l6ZSBDZWxsU3R5bGUgQ2VsbFRhZ3MgQ2VsbHVsYXJBdXRvbWF0b24gQ2Vuc29yZWREaXN0cmlidXRpb24gQ2Vuc29yaW5nIENlbnRlciBDZW50ZXJEb3QgQ2VudHJhbE1vbWVudCBDZW50cmFsTW9tZW50R2VuZXJhdGluZ0Z1bmN0aW9uIENGb3JtIENoYW1wZXJub3duZU51bWJlciBDaGFuVmVzZUJpbmFyaXplIENoYXJhY3RlciBDaGFyYWN0ZXJFbmNvZGluZyBDaGFyYWN0ZXJFbmNvZGluZ3NQYXRoIENoYXJhY3RlcmlzdGljRnVuY3Rpb24gQ2hhcmFjdGVyaXN0aWNQb2x5bm9taWFsIENoYXJhY3RlclJhbmdlIENoYXJhY3RlcnMgQ2hhcnRCYXNlU3R5bGUgQ2hhcnRFbGVtZW50RGF0YSBDaGFydEVsZW1lbnREYXRhRnVuY3Rpb24gQ2hhcnRFbGVtZW50RnVuY3Rpb24gQ2hhcnRFbGVtZW50cyBDaGFydExhYmVscyBDaGFydExheW91dCBDaGFydExlZ2VuZHMgQ2hhcnRTdHlsZSBDaGVieXNoZXYxRmlsdGVyTW9kZWwgQ2hlYnlzaGV2MkZpbHRlck1vZGVsIENoZWJ5c2hldkRpc3RhbmNlIENoZWJ5c2hldlQgQ2hlYnlzaGV2VSBDaGVjayBDaGVja0Fib3J0IENoZWNrQWxsIENoZWNrYm94IENoZWNrYm94QmFyIENoZWNrYm94Qm94IENoZWNrYm94Qm94T3B0aW9ucyBDaGVtaWNhbERhdGEgQ2hlc3Nib2FyZERpc3RhbmNlIENoaURpc3RyaWJ1dGlvbiBDaGluZXNlUmVtYWluZGVyIENoaVNxdWFyZURpc3RyaWJ1dGlvbiBDaG9pY2VCdXR0b25zIENob2ljZURpYWxvZyBDaG9sZXNreURlY29tcG9zaXRpb24gQ2hvcCBDaXJjbGUgQ2lyY2xlQm94IENpcmNsZURvdCBDaXJjbGVNaW51cyBDaXJjbGVQbHVzIENpcmNsZVRpbWVzIENpcmN1bGFudEdyYXBoIENpdHlEYXRhIENsZWFyIENsZWFyQWxsIENsZWFyQXR0cmlidXRlcyBDbGVhclN5c3RlbUNhY2hlIENsZWJzY2hHb3JkYW4gQ2xpY2tQYW5lIENsaXAgQ2xpcGJvYXJkTm90ZWJvb2sgQ2xpcEZpbGwgQ2xpcHBpbmdTdHlsZSBDbGlwUGxhbmVzIENsaXBSYW5nZSBDbG9jayBDbG9ja0dhdWdlIENsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbCBDbG9zZSBDbG9zZWQgQ2xvc2VLZXJuZWxzIENsb3NlbmVzc0NlbnRyYWxpdHkgQ2xvc2luZyBDbG9zaW5nQXV0b1NhdmUgQ2xvc2luZ0V2ZW50IENsdXN0ZXJpbmdDb21wb25lbnRzIENNWUtDb2xvciBDb2Fyc2UgQ29lZmZpY2llbnQgQ29lZmZpY2llbnRBcnJheXMgQ29lZmZpY2llbnREb21haW4gQ29lZmZpY2llbnRMaXN0IENvZWZmaWNpZW50UnVsZXMgQ29pZmxldFdhdmVsZXQgQ29sbGVjdCBDb2xvbiBDb2xvbkZvcm0gQ29sb3JDb21iaW5lIENvbG9yQ29udmVydCBDb2xvckRhdGEgQ29sb3JEYXRhRnVuY3Rpb24gQ29sb3JGdW5jdGlvbiBDb2xvckZ1bmN0aW9uU2NhbGluZyBDb2xvcml6ZSBDb2xvck5lZ2F0ZSBDb2xvck91dHB1dCBDb2xvclByb2ZpbGVEYXRhIENvbG9yUXVhbnRpemUgQ29sb3JSZXBsYWNlIENvbG9yUnVsZXMgQ29sb3JTZWxlY3RvclNldHRpbmdzIENvbG9yU2VwYXJhdGUgQ29sb3JTZXR0ZXIgQ29sb3JTZXR0ZXJCb3ggQ29sb3JTZXR0ZXJCb3hPcHRpb25zIENvbG9yU2xpZGVyIENvbG9yU3BhY2UgQ29sdW1uIENvbHVtbkFsaWdubWVudHMgQ29sdW1uQmFja2dyb3VuZHMgQ29sdW1uRm9ybSBDb2x1bW5MaW5lcyBDb2x1bW5zRXF1YWwgQ29sdW1uU3BhY2luZ3MgQ29sdW1uV2lkdGhzIENvbW1vbkRlZmF1bHRGb3JtYXRUeXBlcyBDb21tb25lc3QgQ29tbW9uZXN0RmlsdGVyIENvbW1vblVuaXRzIENvbW11bml0eUJvdW5kYXJ5U3R5bGUgQ29tbXVuaXR5R3JhcGhQbG90IENvbW11bml0eUxhYmVscyBDb21tdW5pdHlSZWdpb25TdHlsZSBDb21wYXRpYmxlVW5pdFEgQ29tcGlsYXRpb25PcHRpb25zIENvbXBpbGF0aW9uVGFyZ2V0IENvbXBpbGUgQ29tcGlsZWQgQ29tcGlsZWRGdW5jdGlvbiBDb21wbGVtZW50IENvbXBsZXRlR3JhcGggQ29tcGxldGVHcmFwaFEgQ29tcGxldGVLYXJ5VHJlZSBDb21wbGV0aW9uc0xpc3RQYWNrZXQgQ29tcGxleCBDb21wbGV4ZXMgQ29tcGxleEV4cGFuZCBDb21wbGV4SW5maW5pdHkgQ29tcGxleGl0eUZ1bmN0aW9uIENvbXBvbmVudE1lYXN1cmVtZW50cyAnICtcbiAgICAgICdDb21wb25lbnR3aXNlQ29udGV4dE1lbnUgQ29tcG9zZSBDb21wb3NlTGlzdCBDb21wb3NlU2VyaWVzIENvbXBvc2l0aW9uIENvbXBvdW5kRXhwcmVzc2lvbiBDb21wb3VuZFBvaXNzb25EaXN0cmlidXRpb24gQ29tcG91bmRQb2lzc29uUHJvY2VzcyBDb21wb3VuZFJlbmV3YWxQcm9jZXNzIENvbXByZXNzIENvbXByZXNzZWREYXRhIENvbmRpdGlvbiBDb25kaXRpb25hbEV4cHJlc3Npb24gQ29uZGl0aW9uZWQgQ29uZSBDb25lQm94IENvbmZpZGVuY2VMZXZlbCBDb25maWRlbmNlUmFuZ2UgQ29uZmlkZW5jZVRyYW5zZm9ybSBDb25maWd1cmF0aW9uUGF0aCBDb25ncnVlbnQgQ29uanVnYXRlIENvbmp1Z2F0ZVRyYW5zcG9zZSBDb25qdW5jdGlvbiBDb25uZWN0IENvbm5lY3RlZENvbXBvbmVudHMgQ29ubmVjdGVkR3JhcGhRIENvbm5lc1dpbmRvdyBDb25vdmVyVGVzdCBDb25zb2xlTWVzc2FnZSBDb25zb2xlTWVzc2FnZVBhY2tldCBDb25zb2xlUHJpbnQgQ29uc3RhbnQgQ29uc3RhbnRBcnJheSBDb25zdGFudHMgQ29uc3RyYWluZWRNYXggQ29uc3RyYWluZWRNaW4gQ29udGVudFBhZGRpbmcgQ29udGVudHNCb3VuZGluZ0JveCBDb250ZW50U2VsZWN0YWJsZSBDb250ZW50U2l6ZSBDb250ZXh0IENvbnRleHRNZW51IENvbnRleHRzIENvbnRleHRUb0ZpbGVuYW1lIENvbnRleHRUb0ZpbGVOYW1lIENvbnRpbnVhdGlvbiBDb250aW51ZSBDb250aW51ZWRGcmFjdGlvbiBDb250aW51ZWRGcmFjdGlvbksgQ29udGludW91c0FjdGlvbiBDb250aW51b3VzTWFya292UHJvY2VzcyBDb250aW51b3VzVGltZU1vZGVsUSBDb250aW51b3VzV2F2ZWxldERhdGEgQ29udGludW91c1dhdmVsZXRUcmFuc2Zvcm0gQ29udG91ckRldGVjdCBDb250b3VyR3JhcGhpY3MgQ29udG91ckludGVncmFsIENvbnRvdXJMYWJlbHMgQ29udG91ckxpbmVzIENvbnRvdXJQbG90IENvbnRvdXJQbG90M0QgQ29udG91cnMgQ29udG91clNoYWRpbmcgQ29udG91clNtb290aGluZyBDb250b3VyU3R5bGUgQ29udHJhaGFybW9uaWNNZWFuIENvbnRyb2wgQ29udHJvbEFjdGl2ZSBDb250cm9sQWxpZ25tZW50IENvbnRyb2xsYWJpbGl0eUdyYW1pYW4gQ29udHJvbGxhYmlsaXR5TWF0cml4IENvbnRyb2xsYWJsZURlY29tcG9zaXRpb24gQ29udHJvbGxhYmxlTW9kZWxRIENvbnRyb2xsZXJEdXJhdGlvbiBDb250cm9sbGVySW5mb3JtYXRpb24gQ29udHJvbGxlckluZm9ybWF0aW9uRGF0YSBDb250cm9sbGVyTGlua2luZyBDb250cm9sbGVyTWFuaXB1bGF0ZSBDb250cm9sbGVyTWV0aG9kIENvbnRyb2xsZXJQYXRoIENvbnRyb2xsZXJTdGF0ZSBDb250cm9sUGxhY2VtZW50IENvbnRyb2xzUmVuZGVyaW5nIENvbnRyb2xUeXBlIENvbnZlcmdlbnRzIENvbnZlcnNpb25PcHRpb25zIENvbnZlcnNpb25SdWxlcyBDb252ZXJ0VG9CaXRtYXBQYWNrZXQgQ29udmVydFRvUG9zdFNjcmlwdCBDb252ZXJ0VG9Qb3N0U2NyaXB0UGFja2V0IENvbnZvbHZlIENvbndheUdyb3VwQ28xIENvbndheUdyb3VwQ28yIENvbndheUdyb3VwQ28zIENvb3JkaW5hdGVDaGFydERhdGEgQ29vcmRpbmF0ZXNUb29sT3B0aW9ucyBDb29yZGluYXRlVHJhbnNmb3JtIENvb3JkaW5hdGVUcmFuc2Zvcm1EYXRhIENvcHJpbWVRIENvcHJvZHVjdCBDb3B1bGFEaXN0cmlidXRpb24gQ29weWFibGUgQ29weURpcmVjdG9yeSBDb3B5RmlsZSBDb3B5VGFnIENvcHlUb0NsaXBib2FyZCBDb3JuZXJGaWx0ZXIgQ29ybmVyTmVpZ2hib3JzIENvcnJlbGF0aW9uIENvcnJlbGF0aW9uRGlzdGFuY2UgQ29ycmVsYXRpb25GdW5jdGlvbiBDb3JyZWxhdGlvblRlc3QgQ29zIENvc2ggQ29zaEludGVncmFsIENvc2luZURpc3RhbmNlIENvc2luZVdpbmRvdyBDb3NJbnRlZ3JhbCBDb3QgQ290aCBDb3VudCBDb3VudGVyQXNzaWdubWVudHMgQ291bnRlckJveCBDb3VudGVyQm94T3B0aW9ucyBDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFsIENvdW50ZXJFdmFsdWF0b3IgQ291bnRlckZ1bmN0aW9uIENvdW50ZXJJbmNyZW1lbnRzIENvdW50ZXJTdHlsZSBDb3VudGVyU3R5bGVNZW51TGlzdGluZyBDb3VudFJvb3RzIENvdW50cnlEYXRhIENvdmFyaWFuY2UgQ292YXJpYW5jZUVzdGltYXRvckZ1bmN0aW9uIENvdmFyaWFuY2VGdW5jdGlvbiBDb3hpYW5EaXN0cmlidXRpb24gQ294SW5nZXJzb2xsUm9zc1Byb2Nlc3MgQ294TW9kZWwgQ294TW9kZWxGaXQgQ3JhbWVyVm9uTWlzZXNUZXN0IENyZWF0ZUFyY2hpdmUgQ3JlYXRlRGlhbG9nIENyZWF0ZURpcmVjdG9yeSBDcmVhdGVEb2N1bWVudCBDcmVhdGVJbnRlcm1lZGlhdGVEaXJlY3RvcmllcyBDcmVhdGVQYWxldHRlIENyZWF0ZVBhbGV0dGVQYWNrZXQgQ3JlYXRlU2NoZWR1bGVkVGFzayBDcmVhdGVUZW1wb3JhcnkgQ3JlYXRlV2luZG93IENyaXRpY2FsaXR5RmFpbHVyZUltcG9ydGFuY2UgQ3JpdGljYWxpdHlTdWNjZXNzSW1wb3J0YW5jZSBDcml0aWNhbFNlY3Rpb24gQ3Jvc3MgQ3Jvc3NpbmdEZXRlY3QgQ3Jvc3NNYXRyaXggQ3NjIENzY2ggQ3ViZVJvb3QgQ3ViaWNzIEN1Ym9pZCBDdWJvaWRCb3ggQ3VtdWxhbnQgQ3VtdWxhbnRHZW5lcmF0aW5nRnVuY3Rpb24gQ3VwIEN1cENhcCBDdXJsIEN1cmx5RG91YmxlUXVvdGUgQ3VybHlRdW90ZSBDdXJyZW50SW1hZ2UgQ3VycmVudGx5U3BlYWtpbmdQYWNrZXQgQ3VycmVudFZhbHVlIEN1cnZhdHVyZUZsb3dGaWx0ZXIgQ3VydmVDbG9zZWQgQ3lhbiBDeWNsZUdyYXBoIEN5Y2xlSW5kZXhQb2x5bm9taWFsIEN5Y2xlcyBDeWNsaWNHcm91cCBDeWNsb3RvbWljIEN5bGluZGVyIEN5bGluZGVyQm94IEN5bGluZHJpY2FsRGVjb21wb3NpdGlvbiAnICtcbiAgICAgICdEIERhZ3VtRGlzdHJpYnV0aW9uIERhbWVyYXVMZXZlbnNodGVpbkRpc3RhbmNlIERhbXBpbmdGYWN0b3IgRGFya2VyIERhc2hlZCBEYXNoaW5nIERhdGFDb21wcmVzc2lvbiBEYXRhRGlzdHJpYnV0aW9uIERhdGFSYW5nZSBEYXRhUmV2ZXJzZWQgRGF0ZSBEYXRlRGVsaW1pdGVycyBEYXRlRGlmZmVyZW5jZSBEYXRlRnVuY3Rpb24gRGF0ZUxpc3QgRGF0ZUxpc3RMb2dQbG90IERhdGVMaXN0UGxvdCBEYXRlUGF0dGVybiBEYXRlUGx1cyBEYXRlUmFuZ2UgRGF0ZVN0cmluZyBEYXRlVGlja3NGb3JtYXQgRGF1YmVjaGllc1dhdmVsZXQgRGF2aXNEaXN0cmlidXRpb24gRGF3c29uRiBEYXlDb3VudCBEYXlDb3VudENvbnZlbnRpb24gRGF5TWF0Y2hRIERheU5hbWUgRGF5UGx1cyBEYXlSYW5nZSBEYXlSb3VuZCBEZUJydWlqbkdyYXBoIERlYnVnIERlYnVnVGFnIERlY2ltYWwgRGVjbGFyZUtub3duU3ltYm9scyBEZWNsYXJlUGFja2FnZSBEZWNvbXBvc2UgRGVjcmVtZW50IERlZGVraW5kRXRhIERlZmF1bHQgRGVmYXVsdEF4ZXNTdHlsZSBEZWZhdWx0QmFzZVN0eWxlIERlZmF1bHRCb3hTdHlsZSBEZWZhdWx0QnV0dG9uIERlZmF1bHRDb2xvciBEZWZhdWx0Q29udHJvbFBsYWNlbWVudCBEZWZhdWx0RHVwbGljYXRlQ2VsbFN0eWxlIERlZmF1bHREdXJhdGlvbiBEZWZhdWx0RWxlbWVudCBEZWZhdWx0RmFjZUdyaWRzU3R5bGUgRGVmYXVsdEZpZWxkSGludFN0eWxlIERlZmF1bHRGb250IERlZmF1bHRGb250UHJvcGVydGllcyBEZWZhdWx0Rm9ybWF0VHlwZSBEZWZhdWx0Rm9ybWF0VHlwZUZvclN0eWxlIERlZmF1bHRGcmFtZVN0eWxlIERlZmF1bHRGcmFtZVRpY2tzU3R5bGUgRGVmYXVsdEdyaWRMaW5lc1N0eWxlIERlZmF1bHRJbmxpbmVGb3JtYXRUeXBlIERlZmF1bHRJbnB1dEZvcm1hdFR5cGUgRGVmYXVsdExhYmVsU3R5bGUgRGVmYXVsdE1lbnVTdHlsZSBEZWZhdWx0TmF0dXJhbExhbmd1YWdlIERlZmF1bHROZXdDZWxsU3R5bGUgRGVmYXVsdE5ld0lubGluZUNlbGxTdHlsZSBEZWZhdWx0Tm90ZWJvb2sgRGVmYXVsdE9wdGlvbnMgRGVmYXVsdE91dHB1dEZvcm1hdFR5cGUgRGVmYXVsdFN0eWxlIERlZmF1bHRTdHlsZURlZmluaXRpb25zIERlZmF1bHRUZXh0Rm9ybWF0VHlwZSBEZWZhdWx0VGV4dElubGluZUZvcm1hdFR5cGUgRGVmYXVsdFRpY2tzU3R5bGUgRGVmYXVsdFRvb2x0aXBTdHlsZSBEZWZhdWx0VmFsdWVzIERlZmVyIERlZmluZUV4dGVybmFsIERlZmluZUlucHV0U3RyZWFtTWV0aG9kIERlZmluZU91dHB1dFN0cmVhbU1ldGhvZCBEZWZpbml0aW9uIERlZ3JlZSBEZWdyZWVDZW50cmFsaXR5IERlZ3JlZUdyYXBoRGlzdHJpYnV0aW9uIERlZ3JlZUxleGljb2dyYXBoaWMgRGVncmVlUmV2ZXJzZUxleGljb2dyYXBoaWMgRGVpbml0aWFsaXphdGlvbiBEZWwgRGVsZXRhYmxlIERlbGV0ZSBEZWxldGVCb3JkZXJDb21wb25lbnRzIERlbGV0ZUNhc2VzIERlbGV0ZUNvbnRlbnRzIERlbGV0ZURpcmVjdG9yeSBEZWxldGVEdXBsaWNhdGVzIERlbGV0ZUZpbGUgRGVsZXRlU21hbGxDb21wb25lbnRzIERlbGV0ZVdpdGhDb250ZW50cyBEZWxldGlvbldhcm5pbmcgRGVsaW1pdGVyIERlbGltaXRlckZsYXNoVGltZSBEZWxpbWl0ZXJNYXRjaGluZyBEZWxpbWl0ZXJzIERlbm9taW5hdG9yIERlbnNpdHlHcmFwaGljcyBEZW5zaXR5SGlzdG9ncmFtIERlbnNpdHlQbG90IERlcGVuZGVudFZhcmlhYmxlcyBEZXBsb3kgRGVwbG95ZWQgRGVwdGggRGVwdGhGaXJzdFNjYW4gRGVyaXZhdGl2ZSBEZXJpdmF0aXZlRmlsdGVyIERlc2NyaXB0b3JTdGF0ZVNwYWNlIERlc2lnbk1hdHJpeCBEZXQgREdhdXNzaWFuV2F2ZWxldCBEaWFjcml0aWNhbFBvc2l0aW9uaW5nIERpYWdvbmFsIERpYWdvbmFsTWF0cml4IERpYWxvZyBEaWFsb2dJbmRlbnQgRGlhbG9nSW5wdXQgRGlhbG9nTGV2ZWwgRGlhbG9nTm90ZWJvb2sgRGlhbG9nUHJvbG9nIERpYWxvZ1JldHVybiBEaWFsb2dTeW1ib2xzIERpYW1vbmQgRGlhbW9uZE1hdHJpeCBEaWNlRGlzc2ltaWxhcml0eSBEaWN0aW9uYXJ5TG9va3VwIERpZmZlcmVuY2VEZWx0YSBEaWZmZXJlbmNlT3JkZXIgRGlmZmVyZW5jZVJvb3QgRGlmZmVyZW5jZVJvb3RSZWR1Y2UgRGlmZmVyZW5jZXMgRGlmZmVyZW50aWFsRCBEaWZmZXJlbnRpYWxSb290IERpZmZlcmVudGlhbFJvb3RSZWR1Y2UgRGlmZmVyZW50aWF0b3JGaWx0ZXIgRGlnaXRCbG9jayBEaWdpdEJsb2NrTWluaW11bSBEaWdpdENoYXJhY3RlciBEaWdpdENvdW50IERpZ2l0USBEaWhlZHJhbEdyb3VwIERpbGF0aW9uIERpbWVuc2lvbnMgRGlyYWNDb21iIERpcmFjRGVsdGEgRGlyZWN0ZWRFZGdlIERpcmVjdGVkRWRnZXMgRGlyZWN0ZWRHcmFwaCBEaXJlY3RlZEdyYXBoUSBEaXJlY3RlZEluZmluaXR5IERpcmVjdGlvbiBEaXJlY3RpdmUgRGlyZWN0b3J5IERpcmVjdG9yeU5hbWUgRGlyZWN0b3J5USBEaXJlY3RvcnlTdGFjayBEaXJpY2hsZXRDaGFyYWN0ZXIgRGlyaWNobGV0Q29udm9sdmUgRGlyaWNobGV0RGlzdHJpYnV0aW9uIERpcmljaGxldEwgRGlyaWNobGV0VHJhbnNmb3JtIERpcmljaGxldFdpbmRvdyBEaXNhYmxlQ29uc29sZVByaW50UGFja2V0IERpc2NyZXRlQ2hpcnBaVHJhbnNmb3JtIERpc2NyZXRlQ29udm9sdmUgRGlzY3JldGVEZWx0YSBEaXNjcmV0ZUhhZGFtYXJkVHJhbnNmb3JtIERpc2NyZXRlSW5kaWNhdG9yIERpc2NyZXRlTFFFc3RpbWF0b3JHYWlucyBEaXNjcmV0ZUxRUmVndWxhdG9yR2FpbnMgRGlzY3JldGVMeWFwdW5vdlNvbHZlIERpc2NyZXRlTWFya292UHJvY2VzcyBEaXNjcmV0ZVBsb3QgRGlzY3JldGVQbG90M0QgRGlzY3JldGVSYXRpbyBEaXNjcmV0ZVJpY2NhdGlTb2x2ZSBEaXNjcmV0ZVNoaWZ0IERpc2NyZXRlVGltZU1vZGVsUSBEaXNjcmV0ZVVuaWZvcm1EaXN0cmlidXRpb24gRGlzY3JldGVWYXJpYWJsZXMgRGlzY3JldGVXYXZlbGV0RGF0YSBEaXNjcmV0ZVdhdmVsZXRQYWNrZXRUcmFuc2Zvcm0gJyArXG4gICAgICAnRGlzY3JldGVXYXZlbGV0VHJhbnNmb3JtIERpc2NyaW1pbmFudCBEaXNqdW5jdGlvbiBEaXNrIERpc2tCb3ggRGlza01hdHJpeCBEaXNwYXRjaCBEaXNwZXJzaW9uRXN0aW1hdG9yRnVuY3Rpb24gRGlzcGxheSBEaXNwbGF5QWxsU3RlcHMgRGlzcGxheUVuZFBhY2tldCBEaXNwbGF5Rmx1c2hJbWFnZVBhY2tldCBEaXNwbGF5Rm9ybSBEaXNwbGF5RnVuY3Rpb24gRGlzcGxheVBhY2tldCBEaXNwbGF5UnVsZXMgRGlzcGxheVNldFNpemVQYWNrZXQgRGlzcGxheVN0cmluZyBEaXNwbGF5VGVtcG9yYXJ5IERpc3BsYXlXaXRoIERpc3BsYXlXaXRoUmVmIERpc3BsYXlXaXRoVmFyaWFibGUgRGlzdGFuY2VGdW5jdGlvbiBEaXN0YW5jZVRyYW5zZm9ybSBEaXN0cmlidXRlIERpc3RyaWJ1dGVkIERpc3RyaWJ1dGVkQ29udGV4dHMgRGlzdHJpYnV0ZURlZmluaXRpb25zIERpc3RyaWJ1dGlvbkNoYXJ0IERpc3RyaWJ1dGlvbkRvbWFpbiBEaXN0cmlidXRpb25GaXRUZXN0IERpc3RyaWJ1dGlvblBhcmFtZXRlckFzc3VtcHRpb25zIERpc3RyaWJ1dGlvblBhcmFtZXRlclEgRGl0aGVyaW5nIERpdiBEaXZlcmdlbmNlIERpdmlkZSBEaXZpZGVCeSBEaXZpZGVycyBEaXZpc2libGUgRGl2aXNvcnMgRGl2aXNvclNpZ21hIERpdmlzb3JTdW0gRE1TTGlzdCBETVNTdHJpbmcgRG8gRG9ja2VkQ2VsbHMgRG9jdW1lbnROb3RlYm9vayBEb21pbmFudENvbG9ycyBET1NUZXh0Rm9ybWF0IERvdCBEb3REYXNoZWQgRG90RXF1YWwgRG90dGVkIERvdWJsZUJyYWNrZXRpbmdCYXIgRG91YmxlQ29udG91ckludGVncmFsIERvdWJsZURvd25BcnJvdyBEb3VibGVMZWZ0QXJyb3cgRG91YmxlTGVmdFJpZ2h0QXJyb3cgRG91YmxlTGVmdFRlZSBEb3VibGVMb25nTGVmdEFycm93IERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdyBEb3VibGVMb25nUmlnaHRBcnJvdyBEb3VibGVSaWdodEFycm93IERvdWJsZVJpZ2h0VGVlIERvdWJsZVVwQXJyb3cgRG91YmxlVXBEb3duQXJyb3cgRG91YmxlVmVydGljYWxCYXIgRG91Ymx5SW5maW5pdGUgRG93biBEb3duQXJyb3cgRG93bkFycm93QmFyIERvd25BcnJvd1VwQXJyb3cgRG93bkxlZnRSaWdodFZlY3RvciBEb3duTGVmdFRlZVZlY3RvciBEb3duTGVmdFZlY3RvciBEb3duTGVmdFZlY3RvckJhciBEb3duUmlnaHRUZWVWZWN0b3IgRG93blJpZ2h0VmVjdG9yIERvd25SaWdodFZlY3RvckJhciBEb3duc2FtcGxlIERvd25UZWUgRG93blRlZUFycm93IERvd25WYWx1ZXMgRHJhZ0FuZERyb3AgRHJhd0VkZ2VzIERyYXdGcm9udEZhY2VzIERyYXdIaWdobGlnaHRlZCBEcm9wIERTb2x2ZSBEdCBEdWFsTGluZWFyUHJvZ3JhbW1pbmcgRHVhbFN5c3RlbXNNb2RlbCBEdW1wR2V0IER1bXBTYXZlIER1cGxpY2F0ZUZyZWVRIER5bmFtaWMgRHluYW1pY0JveCBEeW5hbWljQm94T3B0aW9ucyBEeW5hbWljRXZhbHVhdGlvblRpbWVvdXQgRHluYW1pY0xvY2F0aW9uIER5bmFtaWNNb2R1bGUgRHluYW1pY01vZHVsZUJveCBEeW5hbWljTW9kdWxlQm94T3B0aW9ucyBEeW5hbWljTW9kdWxlUGFyZW50IER5bmFtaWNNb2R1bGVWYWx1ZXMgRHluYW1pY05hbWUgRHluYW1pY05hbWVzcGFjZSBEeW5hbWljUmVmZXJlbmNlIER5bmFtaWNTZXR0aW5nIER5bmFtaWNVcGRhdGluZyBEeW5hbWljV3JhcHBlciBEeW5hbWljV3JhcHBlckJveCBEeW5hbWljV3JhcHBlckJveE9wdGlvbnMgJyArXG4gICAgICAnRSBFY2NlbnRyaWNpdHlDZW50cmFsaXR5IEVkZ2VBZGQgRWRnZUJldHdlZW5uZXNzQ2VudHJhbGl0eSBFZGdlQ2FwYWNpdHkgRWRnZUNhcEZvcm0gRWRnZUNvbG9yIEVkZ2VDb25uZWN0aXZpdHkgRWRnZUNvc3QgRWRnZUNvdW50IEVkZ2VDb3ZlclEgRWRnZURhc2hpbmcgRWRnZURlbGV0ZSBFZGdlRGV0ZWN0IEVkZ2VGb3JtIEVkZ2VJbmRleCBFZGdlSm9pbkZvcm0gRWRnZUxhYmVsaW5nIEVkZ2VMYWJlbHMgRWRnZUxhYmVsU3R5bGUgRWRnZUxpc3QgRWRnZU9wYWNpdHkgRWRnZVEgRWRnZVJlbmRlcmluZ0Z1bmN0aW9uIEVkZ2VSdWxlcyBFZGdlU2hhcGVGdW5jdGlvbiBFZGdlU3R5bGUgRWRnZVRoaWNrbmVzcyBFZGdlV2VpZ2h0IEVkaXRhYmxlIEVkaXRCdXR0b25TZXR0aW5ncyBFZGl0Q2VsbFRhZ3NTZXR0aW5ncyBFZGl0RGlzdGFuY2UgRWZmZWN0aXZlSW50ZXJlc3QgRWlnZW5zeXN0ZW0gRWlnZW52YWx1ZXMgRWlnZW52ZWN0b3JDZW50cmFsaXR5IEVpZ2VudmVjdG9ycyBFbGVtZW50IEVsZW1lbnREYXRhIEVsaW1pbmF0ZSBFbGltaW5hdGlvbk9yZGVyIEVsbGlwdGljRSBFbGxpcHRpY0V4cCBFbGxpcHRpY0V4cFByaW1lIEVsbGlwdGljRiBFbGxpcHRpY0ZpbHRlck1vZGVsIEVsbGlwdGljSyBFbGxpcHRpY0xvZyBFbGxpcHRpY05vbWVRIEVsbGlwdGljUGkgRWxsaXB0aWNSZWR1Y2VkSGFsZlBlcmlvZHMgRWxsaXB0aWNUaGV0YSBFbGxpcHRpY1RoZXRhUHJpbWUgRW1pdFNvdW5kIEVtcGhhc2l6ZVN5bnRheEVycm9ycyBFbXBpcmljYWxEaXN0cmlidXRpb24gRW1wdHkgRW1wdHlHcmFwaFEgRW5hYmxlQ29uc29sZVByaW50UGFja2V0IEVuYWJsZWQgRW5jb2RlIEVuZCBFbmRBZGQgRW5kRGlhbG9nUGFja2V0IEVuZEZyb250RW5kSW50ZXJhY3Rpb25QYWNrZXQgRW5kT2ZGaWxlIEVuZE9mTGluZSBFbmRPZlN0cmluZyBFbmRQYWNrYWdlIEVuZ2luZWVyaW5nRm9ybSBFbnRlciBFbnRlckV4cHJlc3Npb25QYWNrZXQgRW50ZXJUZXh0UGFja2V0IEVudHJvcHkgRW50cm9weUZpbHRlciBFbnZpcm9ubWVudCBFcGlsb2cgRXF1YWwgRXF1YWxDb2x1bW5zIEVxdWFsUm93cyBFcXVhbFRpbGRlIEVxdWF0ZWRUbyBFcXVpbGlicml1bSBFcXVpcmlwcGxlRmlsdGVyS2VybmVsIEVxdWl2YWxlbnQgRXJmIEVyZmMgRXJmaSBFcmxhbmdCIEVybGFuZ0MgRXJsYW5nRGlzdHJpYnV0aW9uIEVyb3Npb24gRXJyb3JCb3ggRXJyb3JCb3hPcHRpb25zIEVycm9yTm9ybSBFcnJvclBhY2tldCBFcnJvcnNEaWFsb2dTZXR0aW5ncyBFc3RpbWF0ZWREaXN0cmlidXRpb24gRXN0aW1hdGVkUHJvY2VzcyBFc3RpbWF0b3JHYWlucyBFc3RpbWF0b3JSZWd1bGF0b3IgRXVjbGlkZWFuRGlzdGFuY2UgRXVsZXJFIEV1bGVyR2FtbWEgRXVsZXJpYW5HcmFwaFEgRXVsZXJQaGkgRXZhbHVhdGFibGUgRXZhbHVhdGUgRXZhbHVhdGVkIEV2YWx1YXRlUGFja2V0IEV2YWx1YXRpb25DZWxsIEV2YWx1YXRpb25Db21wbGV0aW9uQWN0aW9uIEV2YWx1YXRpb25FbGVtZW50cyBFdmFsdWF0aW9uTW9kZSBFdmFsdWF0aW9uTW9uaXRvciBFdmFsdWF0aW9uTm90ZWJvb2sgRXZhbHVhdGlvbk9iamVjdCBFdmFsdWF0aW9uT3JkZXIgRXZhbHVhdG9yIEV2YWx1YXRvck5hbWVzIEV2ZW5RIEV2ZW50RGF0YSBFdmVudEV2YWx1YXRvciBFdmVudEhhbmRsZXIgRXZlbnRIYW5kbGVyVGFnIEV2ZW50TGFiZWxzIEV4YWN0QmxhY2ttYW5XaW5kb3cgRXhhY3ROdW1iZXJRIEV4YWN0Um9vdElzb2xhdGlvbiBFeGFtcGxlRGF0YSBFeGNlcHQgRXhjbHVkZWRGb3JtcyBFeGNsdWRlUG9kcyBFeGNsdXNpb25zIEV4Y2x1c2lvbnNTdHlsZSBFeGlzdHMgRXhpdCBFeGl0RGlhbG9nIEV4cCBFeHBhbmQgRXhwYW5kQWxsIEV4cGFuZERlbm9taW5hdG9yIEV4cGFuZEZpbGVOYW1lIEV4cGFuZE51bWVyYXRvciBFeHBlY3RhdGlvbiBFeHBlY3RhdGlvbkUgRXhwZWN0ZWRWYWx1ZSBFeHBHYW1tYURpc3RyaWJ1dGlvbiBFeHBJbnRlZ3JhbEUgRXhwSW50ZWdyYWxFaSBFeHBvbmVudCBFeHBvbmVudEZ1bmN0aW9uIEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uIEV4cG9uZW50aWFsRmFtaWx5IEV4cG9uZW50aWFsR2VuZXJhdGluZ0Z1bmN0aW9uIEV4cG9uZW50aWFsTW92aW5nQXZlcmFnZSBFeHBvbmVudGlhbFBvd2VyRGlzdHJpYnV0aW9uIEV4cG9uZW50UG9zaXRpb24gRXhwb25lbnRTdGVwIEV4cG9ydCBFeHBvcnRBdXRvUmVwbGFjZW1lbnRzIEV4cG9ydFBhY2tldCBFeHBvcnRTdHJpbmcgRXhwcmVzc2lvbiBFeHByZXNzaW9uQ2VsbCBFeHByZXNzaW9uUGFja2V0IEV4cFRvVHJpZyBFeHRlbmRlZEdDRCBFeHRlbnNpb24gRXh0ZW50RWxlbWVudEZ1bmN0aW9uIEV4dGVudE1hcmtlcnMgRXh0ZW50U2l6ZSBFeHRlcm5hbENhbGwgRXh0ZXJuYWxEYXRhQ2hhcmFjdGVyRW5jb2RpbmcgRXh0cmFjdCBFeHRyYWN0QXJjaGl2ZSBFeHRyZW1lVmFsdWVEaXN0cmlidXRpb24gJyArXG4gICAgICAnRmFjZUZvcm0gRmFjZUdyaWRzIEZhY2VHcmlkc1N0eWxlIEZhY3RvciBGYWN0b3JDb21wbGV0ZSBGYWN0b3JpYWwgRmFjdG9yaWFsMiBGYWN0b3JpYWxNb21lbnQgRmFjdG9yaWFsTW9tZW50R2VuZXJhdGluZ0Z1bmN0aW9uIEZhY3RvcmlhbFBvd2VyIEZhY3RvckludGVnZXIgRmFjdG9yTGlzdCBGYWN0b3JTcXVhcmVGcmVlIEZhY3RvclNxdWFyZUZyZWVMaXN0IEZhY3RvclRlcm1zIEZhY3RvclRlcm1zTGlzdCBGYWlsIEZhaWx1cmVEaXN0cmlidXRpb24gRmFsc2UgRkFSSU1BUHJvY2VzcyBGRURpc2FibGVDb25zb2xlUHJpbnRQYWNrZXQgRmVlZGJhY2tTZWN0b3IgRmVlZGJhY2tTZWN0b3JTdHlsZSBGZWVkYmFja1R5cGUgRkVFbmFibGVDb25zb2xlUHJpbnRQYWNrZXQgRmlib25hY2NpIEZpZWxkSGludCBGaWVsZEhpbnRTdHlsZSBGaWVsZE1hc2tlZCBGaWVsZFNpemUgRmlsZSBGaWxlQmFzZU5hbWUgRmlsZUJ5dGVDb3VudCBGaWxlRGF0ZSBGaWxlRXhpc3RzUSBGaWxlRXh0ZW5zaW9uIEZpbGVGb3JtYXQgRmlsZUhhc2ggRmlsZUluZm9ybWF0aW9uIEZpbGVOYW1lIEZpbGVOYW1lRGVwdGggRmlsZU5hbWVEaWFsb2dTZXR0aW5ncyBGaWxlTmFtZURyb3AgRmlsZU5hbWVKb2luIEZpbGVOYW1lcyBGaWxlTmFtZVNldHRlciBGaWxlTmFtZVNwbGl0IEZpbGVOYW1lVGFrZSBGaWxlUHJpbnQgRmlsZVR5cGUgRmlsbGVkQ3VydmUgRmlsbGVkQ3VydmVCb3ggRmlsbGluZyBGaWxsaW5nU3R5bGUgRmlsbGluZ1RyYW5zZm9ybSBGaWx0ZXJSdWxlcyBGaW5hbmNpYWxCb25kIEZpbmFuY2lhbERhdGEgRmluYW5jaWFsRGVyaXZhdGl2ZSBGaW5hbmNpYWxJbmRpY2F0b3IgRmluZCBGaW5kQXJnTWF4IEZpbmRBcmdNaW4gRmluZENsaXF1ZSBGaW5kQ2x1c3RlcnMgRmluZEN1cnZlUGF0aCBGaW5kRGlzdHJpYnV0aW9uUGFyYW1ldGVycyBGaW5kRGl2aXNpb25zIEZpbmRFZGdlQ292ZXIgRmluZEVkZ2VDdXQgRmluZEV1bGVyaWFuQ3ljbGUgRmluZEZhY2VzIEZpbmRGaWxlIEZpbmRGaXQgRmluZEdlbmVyYXRpbmdGdW5jdGlvbiBGaW5kR2VvTG9jYXRpb24gRmluZEdlb21ldHJpY1RyYW5zZm9ybSBGaW5kR3JhcGhDb21tdW5pdGllcyBGaW5kR3JhcGhJc29tb3JwaGlzbSBGaW5kR3JhcGhQYXJ0aXRpb24gRmluZEhhbWlsdG9uaWFuQ3ljbGUgRmluZEluZGVwZW5kZW50RWRnZVNldCBGaW5kSW5kZXBlbmRlbnRWZXJ0ZXhTZXQgRmluZEluc3RhbmNlIEZpbmRJbnRlZ2VyTnVsbFZlY3RvciBGaW5kS0NsYW4gRmluZEtDbGlxdWUgRmluZEtDbHViIEZpbmRLUGxleCBGaW5kTGlicmFyeSBGaW5kTGluZWFyUmVjdXJyZW5jZSBGaW5kTGlzdCBGaW5kTWF4aW11bSBGaW5kTWF4aW11bUZsb3cgRmluZE1heFZhbHVlIEZpbmRNaW5pbXVtIEZpbmRNaW5pbXVtQ29zdEZsb3cgRmluZE1pbmltdW1DdXQgRmluZE1pblZhbHVlIEZpbmRQZXJtdXRhdGlvbiBGaW5kUG9zdG1hblRvdXIgRmluZFByb2Nlc3NQYXJhbWV0ZXJzIEZpbmRSb290IEZpbmRTZXF1ZW5jZUZ1bmN0aW9uIEZpbmRTZXR0aW5ncyBGaW5kU2hvcnRlc3RQYXRoIEZpbmRTaG9ydGVzdFRvdXIgRmluZFRocmVzaG9sZCBGaW5kVmVydGV4Q292ZXIgRmluZFZlcnRleEN1dCBGaW5lIEZpbmlzaER5bmFtaWMgRmluaXRlQWJlbGlhbkdyb3VwQ291bnQgRmluaXRlR3JvdXBDb3VudCBGaW5pdGVHcm91cERhdGEgRmlyc3QgRmlyc3RQYXNzYWdlVGltZURpc3RyaWJ1dGlvbiBGaXNjaGVyR3JvdXBGaTIyIEZpc2NoZXJHcm91cEZpMjMgRmlzY2hlckdyb3VwRmkyNFByaW1lIEZpc2hlckh5cGVyZ2VvbWV0cmljRGlzdHJpYnV0aW9uIEZpc2hlclJhdGlvVGVzdCBGaXNoZXJaRGlzdHJpYnV0aW9uIEZpdCBGaXRBbGwgRml0dGVkTW9kZWwgRml4ZWRQb2ludCBGaXhlZFBvaW50TGlzdCBGbGFzaFNlbGVjdGlvbiBGbGF0IEZsYXR0ZW4gRmxhdHRlbkF0IEZsYXRUb3BXaW5kb3cgRmxpcFZpZXcgRmxvb3IgRmx1c2hQcmludE91dHB1dFBhY2tldCBGb2xkIEZvbGRMaXN0IEZvbnQgRm9udENvbG9yIEZvbnRGYW1pbHkgRm9udEZvcm0gRm9udE5hbWUgRm9udE9wYWNpdHkgRm9udFBvc3RTY3JpcHROYW1lIEZvbnRQcm9wZXJ0aWVzIEZvbnRSZWVuY29kaW5nIEZvbnRTaXplIEZvbnRTbGFudCBGb250U3Vic3RpdHV0aW9ucyBGb250VHJhY2tpbmcgRm9udFZhcmlhdGlvbnMgRm9udFdlaWdodCBGb3IgRm9yQWxsIEZvcm1hdCBGb3JtYXRSdWxlcyBGb3JtYXRUeXBlIEZvcm1hdFR5cGVBdXRvQ29udmVydCBGb3JtYXRWYWx1ZXMgRm9ybUJveCBGb3JtQm94T3B0aW9ucyBGb3J0cmFuRm9ybSBGb3J3YXJkIEZvcndhcmRCYWNrd2FyZCBGb3VyaWVyIEZvdXJpZXJDb2VmZmljaWVudCBGb3VyaWVyQ29zQ29lZmZpY2llbnQgRm91cmllckNvc1NlcmllcyBGb3VyaWVyQ29zVHJhbnNmb3JtIEZvdXJpZXJEQ1QgRm91cmllckRDVEZpbHRlciBGb3VyaWVyRENUTWF0cml4IEZvdXJpZXJEU1QgRm91cmllckRTVE1hdHJpeCBGb3VyaWVyTWF0cml4IEZvdXJpZXJQYXJhbWV0ZXJzIEZvdXJpZXJTZXF1ZW5jZVRyYW5zZm9ybSBGb3VyaWVyU2VyaWVzIEZvdXJpZXJTaW5Db2VmZmljaWVudCBGb3VyaWVyU2luU2VyaWVzIEZvdXJpZXJTaW5UcmFuc2Zvcm0gRm91cmllclRyYW5zZm9ybSBGb3VyaWVyVHJpZ1NlcmllcyBGcmFjdGlvbmFsQnJvd25pYW5Nb3Rpb25Qcm9jZXNzIEZyYWN0aW9uYWxQYXJ0IEZyYWN0aW9uQm94IEZyYWN0aW9uQm94T3B0aW9ucyBGcmFjdGlvbkxpbmUgRnJhbWUgRnJhbWVCb3ggRnJhbWVCb3hPcHRpb25zIEZyYW1lZCBGcmFtZUluc2V0IEZyYW1lTGFiZWwgRnJhbWVsZXNzIEZyYW1lTWFyZ2lucyBGcmFtZVN0eWxlIEZyYW1lVGlja3MgRnJhbWVUaWNrc1N0eWxlIEZSYXRpb0Rpc3RyaWJ1dGlvbiBGcmVjaGV0RGlzdHJpYnV0aW9uIEZyZWVRIEZyZXF1ZW5jeVNhbXBsaW5nRmlsdGVyS2VybmVsIEZyZXNuZWxDIEZyZXNuZWxTIEZyaWRheSBGcm9iZW5pdXNOdW1iZXIgRnJvYmVuaXVzU29sdmUgJyArXG4gICAgICAnRnJvbUNoYXJhY3RlckNvZGUgRnJvbUNvZWZmaWNpZW50UnVsZXMgRnJvbUNvbnRpbnVlZEZyYWN0aW9uIEZyb21EYXRlIEZyb21EaWdpdHMgRnJvbURNUyBGcm9udCBGcm9udEVuZER5bmFtaWNFeHByZXNzaW9uIEZyb250RW5kRXZlbnRBY3Rpb25zIEZyb250RW5kRXhlY3V0ZSBGcm9udEVuZE9iamVjdCBGcm9udEVuZFJlc291cmNlIEZyb250RW5kUmVzb3VyY2VTdHJpbmcgRnJvbnRFbmRTdGFja1NpemUgRnJvbnRFbmRUb2tlbiBGcm9udEVuZFRva2VuRXhlY3V0ZSBGcm9udEVuZFZhbHVlQ2FjaGUgRnJvbnRFbmRWZXJzaW9uIEZyb250RmFjZUNvbG9yIEZyb250RmFjZU9wYWNpdHkgRnVsbCBGdWxsQXhlcyBGdWxsRGVmaW5pdGlvbiBGdWxsRm9ybSBGdWxsR3JhcGhpY3MgRnVsbE9wdGlvbnMgRnVsbFNpbXBsaWZ5IEZ1bmN0aW9uIEZ1bmN0aW9uRXhwYW5kIEZ1bmN0aW9uSW50ZXJwb2xhdGlvbiBGdW5jdGlvblNwYWNlIEZ1c3NlbGxWZXNlbHlJbXBvcnRhbmNlICcgK1xuICAgICAgJ0dhYm9yRmlsdGVyIEdhYm9yTWF0cml4IEdhYm9yV2F2ZWxldCBHYWluTWFyZ2lucyBHYWluUGhhc2VNYXJnaW5zIEdhbW1hIEdhbW1hRGlzdHJpYnV0aW9uIEdhbW1hUmVndWxhcml6ZWQgR2FwUGVuYWx0eSBHYXRoZXIgR2F0aGVyQnkgR2F1Z2VGYWNlRWxlbWVudEZ1bmN0aW9uIEdhdWdlRmFjZVN0eWxlIEdhdWdlRnJhbWVFbGVtZW50RnVuY3Rpb24gR2F1Z2VGcmFtZVNpemUgR2F1Z2VGcmFtZVN0eWxlIEdhdWdlTGFiZWxzIEdhdWdlTWFya2VycyBHYXVnZVN0eWxlIEdhdXNzaWFuRmlsdGVyIEdhdXNzaWFuSW50ZWdlcnMgR2F1c3NpYW5NYXRyaXggR2F1c3NpYW5XaW5kb3cgR0NEIEdlZ2VuYmF1ZXJDIEdlbmVyYWwgR2VuZXJhbGl6ZWRMaW5lYXJNb2RlbEZpdCBHZW5lcmF0ZUNvbmRpdGlvbnMgR2VuZXJhdGVkQ2VsbCBHZW5lcmF0ZWRQYXJhbWV0ZXJzIEdlbmVyYXRpbmdGdW5jdGlvbiBHZW5lcmljIEdlbmVyaWNDeWxpbmRyaWNhbERlY29tcG9zaXRpb24gR2Vub21lRGF0YSBHZW5vbWVMb29rdXAgR2VvZGVzaWNDbG9zaW5nIEdlb2Rlc2ljRGlsYXRpb24gR2VvZGVzaWNFcm9zaW9uIEdlb2Rlc2ljT3BlbmluZyBHZW9EZXN0aW5hdGlvbiBHZW9kZXN5RGF0YSBHZW9EaXJlY3Rpb24gR2VvRGlzdGFuY2UgR2VvR3JpZFBvc2l0aW9uIEdlb21ldHJpY0Jyb3duaWFuTW90aW9uUHJvY2VzcyBHZW9tZXRyaWNEaXN0cmlidXRpb24gR2VvbWV0cmljTWVhbiBHZW9tZXRyaWNNZWFuRmlsdGVyIEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uIEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uM0RCb3ggR2VvbWV0cmljVHJhbnNmb3JtYXRpb24zREJveE9wdGlvbnMgR2VvbWV0cmljVHJhbnNmb3JtYXRpb25Cb3ggR2VvbWV0cmljVHJhbnNmb3JtYXRpb25Cb3hPcHRpb25zIEdlb1Bvc2l0aW9uIEdlb1Bvc2l0aW9uRU5VIEdlb1Bvc2l0aW9uWFlaIEdlb1Byb2plY3Rpb25EYXRhIEdlc3R1cmVIYW5kbGVyIEdlc3R1cmVIYW5kbGVyVGFnIEdldCBHZXRCb3VuZGluZ0JveFNpemVQYWNrZXQgR2V0Q29udGV4dCBHZXRFbnZpcm9ubWVudCBHZXRGaWxlTmFtZSBHZXRGcm9udEVuZE9wdGlvbnNEYXRhUGFja2V0IEdldExpbmVicmVha0luZm9ybWF0aW9uUGFja2V0IEdldE1lbnVzUGFja2V0IEdldFBhZ2VCcmVha0luZm9ybWF0aW9uUGFja2V0IEdsYWlzaGVyIEdsb2JhbENsdXN0ZXJpbmdDb2VmZmljaWVudCBHbG9iYWxQcmVmZXJlbmNlcyBHbG9iYWxTZXNzaW9uIEdsb3cgR29sZGVuUmF0aW8gR29tcGVydHpNYWtlaGFtRGlzdHJpYnV0aW9uIEdvb2RtYW5LcnVza2FsR2FtbWEgR29vZG1hbktydXNrYWxHYW1tYVRlc3QgR290byBHcmFkIEdyYWRpZW50IEdyYWRpZW50RmlsdGVyIEdyYWRpZW50T3JpZW50YXRpb25GaWx0ZXIgR3JhcGggR3JhcGhBc3NvcnRhdGl2aXR5IEdyYXBoQ2VudGVyIEdyYXBoQ29tcGxlbWVudCBHcmFwaERhdGEgR3JhcGhEZW5zaXR5IEdyYXBoRGlhbWV0ZXIgR3JhcGhEaWZmZXJlbmNlIEdyYXBoRGlzam9pbnRVbmlvbiAnICtcbiAgICAgICdHcmFwaERpc3RhbmNlIEdyYXBoRGlzdGFuY2VNYXRyaXggR3JhcGhFbGVtZW50RGF0YSBHcmFwaEVtYmVkZGluZyBHcmFwaEhpZ2hsaWdodCBHcmFwaEhpZ2hsaWdodFN0eWxlIEdyYXBoSHViIEdyYXBoaWNzIEdyYXBoaWNzM0QgR3JhcGhpY3MzREJveCBHcmFwaGljczNEQm94T3B0aW9ucyBHcmFwaGljc0FycmF5IEdyYXBoaWNzQmFzZWxpbmUgR3JhcGhpY3NCb3ggR3JhcGhpY3NCb3hPcHRpb25zIEdyYXBoaWNzQ29sb3IgR3JhcGhpY3NDb2x1bW4gR3JhcGhpY3NDb21wbGV4IEdyYXBoaWNzQ29tcGxleDNEQm94IEdyYXBoaWNzQ29tcGxleDNEQm94T3B0aW9ucyBHcmFwaGljc0NvbXBsZXhCb3ggR3JhcGhpY3NDb21wbGV4Qm94T3B0aW9ucyBHcmFwaGljc0NvbnRlbnRzIEdyYXBoaWNzRGF0YSBHcmFwaGljc0dyaWQgR3JhcGhpY3NHcmlkQm94IEdyYXBoaWNzR3JvdXAgR3JhcGhpY3NHcm91cDNEQm94IEdyYXBoaWNzR3JvdXAzREJveE9wdGlvbnMgR3JhcGhpY3NHcm91cEJveCBHcmFwaGljc0dyb3VwQm94T3B0aW9ucyBHcmFwaGljc0dyb3VwaW5nIEdyYXBoaWNzSGlnaGxpZ2h0Q29sb3IgR3JhcGhpY3NSb3cgR3JhcGhpY3NTcGFjaW5nIEdyYXBoaWNzU3R5bGUgR3JhcGhJbnRlcnNlY3Rpb24gR3JhcGhMYXlvdXQgR3JhcGhMaW5rRWZmaWNpZW5jeSBHcmFwaFBlcmlwaGVyeSBHcmFwaFBsb3QgR3JhcGhQbG90M0QgR3JhcGhQb3dlciBHcmFwaFByb3BlcnR5RGlzdHJpYnV0aW9uIEdyYXBoUSBHcmFwaFJhZGl1cyBHcmFwaFJlY2lwcm9jaXR5IEdyYXBoUm9vdCBHcmFwaFN0eWxlIEdyYXBoVW5pb24gR3JheSBHcmF5TGV2ZWwgR3JlYXRDaXJjbGVEaXN0YW5jZSBHcmVhdGVyIEdyZWF0ZXJFcXVhbCBHcmVhdGVyRXF1YWxMZXNzIEdyZWF0ZXJGdWxsRXF1YWwgR3JlYXRlckdyZWF0ZXIgR3JlYXRlckxlc3MgR3JlYXRlclNsYW50RXF1YWwgR3JlYXRlclRpbGRlIEdyZWVuIEdyaWQgR3JpZEJhc2VsaW5lIEdyaWRCb3ggR3JpZEJveEFsaWdubWVudCBHcmlkQm94QmFja2dyb3VuZCBHcmlkQm94RGl2aWRlcnMgR3JpZEJveEZyYW1lIEdyaWRCb3hJdGVtU2l6ZSBHcmlkQm94SXRlbVN0eWxlIEdyaWRCb3hPcHRpb25zIEdyaWRCb3hTcGFjaW5ncyBHcmlkQ3JlYXRpb25TZXR0aW5ncyBHcmlkRGVmYXVsdEVsZW1lbnQgR3JpZEVsZW1lbnRTdHlsZU9wdGlvbnMgR3JpZEZyYW1lIEdyaWRGcmFtZU1hcmdpbnMgR3JpZEdyYXBoIEdyaWRMaW5lcyBHcmlkTGluZXNTdHlsZSBHcm9lYm5lckJhc2lzIEdyb3VwQWN0aW9uQmFzZSBHcm91cENlbnRyYWxpemVyIEdyb3VwRWxlbWVudEZyb21Xb3JkIEdyb3VwRWxlbWVudFBvc2l0aW9uIEdyb3VwRWxlbWVudFEgR3JvdXBFbGVtZW50cyBHcm91cEVsZW1lbnRUb1dvcmQgR3JvdXBHZW5lcmF0b3JzIEdyb3VwTXVsdGlwbGljYXRpb25UYWJsZSBHcm91cE9yYml0cyBHcm91cE9yZGVyIEdyb3VwUGFnZUJyZWFrV2l0aGluIEdyb3VwU2V0d2lzZVN0YWJpbGl6ZXIgR3JvdXBTdGFiaWxpemVyIEdyb3VwU3RhYmlsaXplckNoYWluIEd1ZGVybWFubmlhbiBHdW1iZWxEaXN0cmlidXRpb24gJyArXG4gICAgICAnSGFhcldhdmVsZXQgSGFkYW1hcmRNYXRyaXggSGFsZk5vcm1hbERpc3RyaWJ1dGlvbiBIYW1pbHRvbmlhbkdyYXBoUSBIYW1taW5nRGlzdGFuY2UgSGFtbWluZ1dpbmRvdyBIYW5rZWxIMSBIYW5rZWxIMiBIYW5rZWxNYXRyaXggSGFublBvaXNzb25XaW5kb3cgSGFubldpbmRvdyBIYXJhZGFOb3J0b25Hcm91cEhOIEhhcmFyeUdyYXBoIEhhcm1vbmljTWVhbiBIYXJtb25pY01lYW5GaWx0ZXIgSGFybW9uaWNOdW1iZXIgSGFzaCBIYXNoVGFibGUgSGF2ZXJzaW5lIEhhemFyZEZ1bmN0aW9uIEhlYWQgSGVhZENvbXBvc2UgSGVhZHMgSGVhdmlzaWRlTGFtYmRhIEhlYXZpc2lkZVBpIEhlYXZpc2lkZVRoZXRhIEhlbGRHcm91cEhlIEhlbGRQYXJ0IEhlbHBCcm93c2VyTG9va3VwIEhlbHBCcm93c2VyTm90ZWJvb2sgSGVscEJyb3dzZXJTZXR0aW5ncyBIZXJtaXRlRGVjb21wb3NpdGlvbiBIZXJtaXRlSCBIZXJtaXRpYW5NYXRyaXhRIEhlc3NlbmJlcmdEZWNvbXBvc2l0aW9uIEhlc3NpYW4gSGV4YWRlY2ltYWxDaGFyYWN0ZXIgSGV4YWhlZHJvbiBIZXhhaGVkcm9uQm94IEhleGFoZWRyb25Cb3hPcHRpb25zIEhpZGRlblN1cmZhY2UgSGlnaGxpZ2h0R3JhcGggSGlnaGxpZ2h0SW1hZ2UgSGlnaHBhc3NGaWx0ZXIgSGlnbWFuU2ltc0dyb3VwSFMgSGlsYmVydEZpbHRlciBIaWxiZXJ0TWF0cml4IEhpc3RvZ3JhbSBIaXN0b2dyYW0zRCBIaXN0b2dyYW1EaXN0cmlidXRpb24gSGlzdG9ncmFtTGlzdCBIaXN0b2dyYW1UcmFuc2Zvcm0gSGlzdG9ncmFtVHJhbnNmb3JtSW50ZXJwb2xhdGlvbiBIaXRNaXNzVHJhbnNmb3JtIEhJVFNDZW50cmFsaXR5IEhvZGdlRHVhbCBIb2VmZmRpbmdEIEhvZWZmZGluZ0RUZXN0IEhvbGQgSG9sZEFsbCBIb2xkQWxsQ29tcGxldGUgSG9sZENvbXBsZXRlIEhvbGRGaXJzdCBIb2xkRm9ybSBIb2xkUGF0dGVybiBIb2xkUmVzdCBIb2xpZGF5Q2FsZW5kYXIgSG9tZURpcmVjdG9yeSBIb21lUGFnZSBIb3Jpem9udGFsIEhvcml6b250YWxGb3JtIEhvcml6b250YWxHYXVnZSBIb3Jpem9udGFsU2Nyb2xsUG9zaXRpb24gSG9ybmVyRm9ybSBIb3RlbGxpbmdUU3F1YXJlRGlzdHJpYnV0aW9uIEhveXREaXN0cmlidXRpb24gSFRNTFNhdmUgSHVlIEh1bXBEb3duSHVtcCBIdW1wRXF1YWwgSHVyd2l0ekxlcmNoUGhpIEh1cndpdHpaZXRhIEh5cGVyYm9saWNEaXN0cmlidXRpb24gSHlwZXJjdWJlR3JhcGggSHlwZXJleHBvbmVudGlhbERpc3RyaWJ1dGlvbiBIeXBlcmZhY3RvcmlhbCBIeXBlcmdlb21ldHJpYzBGMSBIeXBlcmdlb21ldHJpYzBGMVJlZ3VsYXJpemVkIEh5cGVyZ2VvbWV0cmljMUYxIEh5cGVyZ2VvbWV0cmljMUYxUmVndWxhcml6ZWQgSHlwZXJnZW9tZXRyaWMyRjEgSHlwZXJnZW9tZXRyaWMyRjFSZWd1bGFyaXplZCBIeXBlcmdlb21ldHJpY0Rpc3RyaWJ1dGlvbiBIeXBlcmdlb21ldHJpY1BGUSBIeXBlcmdlb21ldHJpY1BGUVJlZ3VsYXJpemVkIEh5cGVyZ2VvbWV0cmljVSBIeXBlcmxpbmsgSHlwZXJsaW5rQ3JlYXRpb25TZXR0aW5ncyBIeXBoZW5hdGlvbiBIeXBoZW5hdGlvbk9wdGlvbnMgSHlwb2V4cG9uZW50aWFsRGlzdHJpYnV0aW9uIEh5cG90aGVzaXNUZXN0RGF0YSAnICtcbiAgICAgICdJIElkZW50aXR5IElkZW50aXR5TWF0cml4IElmIElnbm9yZUNhc2UgSW0gSW1hZ2UgSW1hZ2UzRCBJbWFnZTNEU2xpY2VzIEltYWdlQWNjdW11bGF0ZSBJbWFnZUFkZCBJbWFnZUFkanVzdCBJbWFnZUFsaWduIEltYWdlQXBwbHkgSW1hZ2VBc3BlY3RSYXRpbyBJbWFnZUFzc2VtYmxlIEltYWdlQ2FjaGUgSW1hZ2VDYWNoZVZhbGlkIEltYWdlQ2FwdHVyZSBJbWFnZUNoYW5uZWxzIEltYWdlQ2xpcCBJbWFnZUNvbG9yU3BhY2UgSW1hZ2VDb21wb3NlIEltYWdlQ29udm9sdmUgSW1hZ2VDb29jY3VycmVuY2UgSW1hZ2VDb3JuZXJzIEltYWdlQ29ycmVsYXRlIEltYWdlQ29ycmVzcG9uZGluZ1BvaW50cyBJbWFnZUNyb3AgSW1hZ2VEYXRhIEltYWdlRGF0YVBhY2tldCBJbWFnZURlY29udm9sdmUgSW1hZ2VEZW1vc2FpYyBJbWFnZURpZmZlcmVuY2UgSW1hZ2VEaW1lbnNpb25zIEltYWdlRGlzdGFuY2UgSW1hZ2VFZmZlY3QgSW1hZ2VGZWF0dXJlVHJhY2sgSW1hZ2VGaWxlQXBwbHkgSW1hZ2VGaWxlRmlsdGVyIEltYWdlRmlsZVNjYW4gSW1hZ2VGaWx0ZXIgSW1hZ2VGb3Jlc3RpbmdDb21wb25lbnRzIEltYWdlRm9yd2FyZFRyYW5zZm9ybWF0aW9uIEltYWdlSGlzdG9ncmFtIEltYWdlS2V5cG9pbnRzIEltYWdlTGV2ZWxzIEltYWdlTGluZXMgSW1hZ2VNYXJnaW5zIEltYWdlTWFya2VycyBJbWFnZU1lYXN1cmVtZW50cyBJbWFnZU11bHRpcGx5IEltYWdlT2Zmc2V0IEltYWdlUGFkIEltYWdlUGFkZGluZyBJbWFnZVBhcnRpdGlvbiBJbWFnZVBlcmlvZG9ncmFtIEltYWdlUGVyc3BlY3RpdmVUcmFuc2Zvcm1hdGlvbiBJbWFnZVEgSW1hZ2VSYW5nZUNhY2hlIEltYWdlUmVmbGVjdCBJbWFnZVJlZ2lvbiBJbWFnZVJlc2l6ZSBJbWFnZVJlc29sdXRpb24gSW1hZ2VSb3RhdGUgSW1hZ2VSb3RhdGVkIEltYWdlU2NhbGVkIEltYWdlU2NhbiBJbWFnZVNpemUgSW1hZ2VTaXplQWN0aW9uIEltYWdlU2l6ZUNhY2hlIEltYWdlU2l6ZU11bHRpcGxpZXJzIEltYWdlU2l6ZVJhdyBJbWFnZVN1YnRyYWN0IEltYWdlVGFrZSBJbWFnZVRyYW5zZm9ybWF0aW9uIEltYWdlVHJpbSBJbWFnZVR5cGUgSW1hZ2VWYWx1ZSBJbWFnZVZhbHVlUG9zaXRpb25zIEltcGxpZXMgSW1wb3J0IEltcG9ydEF1dG9SZXBsYWNlbWVudHMgSW1wb3J0U3RyaW5nIEltcHJvdmVtZW50SW1wb3J0YW5jZSBJbiBJbmNpZGVuY2VHcmFwaCBJbmNpZGVuY2VMaXN0IEluY2lkZW5jZU1hdHJpeCBJbmNsdWRlQ29uc3RhbnRCYXNpcyBJbmNsdWRlRmlsZUV4dGVuc2lvbiBJbmNsdWRlUG9kcyBJbmNsdWRlU2luZ3VsYXJUZXJtIEluY3JlbWVudCBJbmRlbnQgSW5kZW50aW5nTmV3bGluZVNwYWNpbmdzIEluZGVudE1heEZyYWN0aW9uIEluZGVwZW5kZW5jZVRlc3QgSW5kZXBlbmRlbnRFZGdlU2V0USBJbmRlcGVuZGVudFVuaXQgSW5kZXBlbmRlbnRWZXJ0ZXhTZXRRIEluZGV0ZXJtaW5hdGUgSW5kZXhDcmVhdGlvbk9wdGlvbnMgSW5kZXhlZCBJbmRleEdyYXBoIEluZGV4VGFnIEluZXF1YWxpdHkgSW5leGFjdE51bWJlclEgSW5leGFjdE51bWJlcnMgSW5maW5pdHkgSW5maXggSW5mb3JtYXRpb24gSW5oZXJpdGVkIEluaGVyaXRTY29wZSBJbml0aWFsaXphdGlvbiBJbml0aWFsaXphdGlvbkNlbGwgSW5pdGlhbGl6YXRpb25DZWxsRXZhbHVhdGlvbiBJbml0aWFsaXphdGlvbkNlbGxXYXJuaW5nIElubGluZUNvdW50ZXJBc3NpZ25tZW50cyBJbmxpbmVDb3VudGVySW5jcmVtZW50cyBJbmxpbmVSdWxlcyBJbm5lciBJbnBhaW50IElucHV0IElucHV0QWxpYXNlcyBJbnB1dEFzc3VtcHRpb25zIElucHV0QXV0b1JlcGxhY2VtZW50cyBJbnB1dEZpZWxkIElucHV0RmllbGRCb3ggSW5wdXRGaWVsZEJveE9wdGlvbnMgSW5wdXRGb3JtIElucHV0R3JvdXBpbmcgSW5wdXROYW1lUGFja2V0IElucHV0Tm90ZWJvb2sgSW5wdXRQYWNrZXQgSW5wdXRTZXR0aW5ncyBJbnB1dFN0cmVhbSBJbnB1dFN0cmluZyBJbnB1dFN0cmluZ1BhY2tldCBJbnB1dFRvQm94Rm9ybVBhY2tldCBJbnNlcnQgSW5zZXJ0aW9uUG9pbnRPYmplY3QgSW5zZXJ0UmVzdWx0cyBJbnNldCBJbnNldDNEQm94IEluc2V0M0RCb3hPcHRpb25zIEluc2V0Qm94IEluc2V0Qm94T3B0aW9ucyBJbnN0YWxsIEluc3RhbGxTZXJ2aWNlIEluU3RyaW5nIEludGVnZXIgSW50ZWdlckRpZ2l0cyBJbnRlZ2VyRXhwb25lbnQgSW50ZWdlckxlbmd0aCBJbnRlZ2VyUGFydCBJbnRlZ2VyUGFydGl0aW9ucyBJbnRlZ2VyUSBJbnRlZ2VycyBJbnRlZ2VyU3RyaW5nIEludGVncmFsIEludGVncmF0ZSBJbnRlcmFjdGl2ZSBJbnRlcmFjdGl2ZVRyYWRpbmdDaGFydCBJbnRlcmxhY2VkIEludGVybGVhdmluZyBJbnRlcm5hbGx5QmFsYW5jZWREZWNvbXBvc2l0aW9uIEludGVycG9sYXRpbmdGdW5jdGlvbiBJbnRlcnBvbGF0aW5nUG9seW5vbWlhbCBJbnRlcnBvbGF0aW9uIEludGVycG9sYXRpb25PcmRlciBJbnRlcnBvbGF0aW9uUG9pbnRzIEludGVycG9sYXRpb25QcmVjaXNpb24gSW50ZXJwcmV0YXRpb24gSW50ZXJwcmV0YXRpb25Cb3ggSW50ZXJwcmV0YXRpb25Cb3hPcHRpb25zIEludGVycHJldGF0aW9uRnVuY3Rpb24gJyArXG4gICAgICAnSW50ZXJwcmV0VGVtcGxhdGUgSW50ZXJxdWFydGlsZVJhbmdlIEludGVycnVwdCBJbnRlcnJ1cHRTZXR0aW5ncyBJbnRlcnNlY3Rpb24gSW50ZXJ2YWwgSW50ZXJ2YWxJbnRlcnNlY3Rpb24gSW50ZXJ2YWxNZW1iZXJRIEludGVydmFsVW5pb24gSW52ZXJzZSBJbnZlcnNlQmV0YVJlZ3VsYXJpemVkIEludmVyc2VDREYgSW52ZXJzZUNoaVNxdWFyZURpc3RyaWJ1dGlvbiBJbnZlcnNlQ29udGludW91c1dhdmVsZXRUcmFuc2Zvcm0gSW52ZXJzZURpc3RhbmNlVHJhbnNmb3JtIEludmVyc2VFbGxpcHRpY05vbWVRIEludmVyc2VFcmYgSW52ZXJzZUVyZmMgSW52ZXJzZUZvdXJpZXIgSW52ZXJzZUZvdXJpZXJDb3NUcmFuc2Zvcm0gSW52ZXJzZUZvdXJpZXJTZXF1ZW5jZVRyYW5zZm9ybSBJbnZlcnNlRm91cmllclNpblRyYW5zZm9ybSBJbnZlcnNlRm91cmllclRyYW5zZm9ybSBJbnZlcnNlRnVuY3Rpb24gSW52ZXJzZUZ1bmN0aW9ucyBJbnZlcnNlR2FtbWFEaXN0cmlidXRpb24gSW52ZXJzZUdhbW1hUmVndWxhcml6ZWQgSW52ZXJzZUdhdXNzaWFuRGlzdHJpYnV0aW9uIEludmVyc2VHdWRlcm1hbm5pYW4gSW52ZXJzZUhhdmVyc2luZSBJbnZlcnNlSmFjb2JpQ0QgSW52ZXJzZUphY29iaUNOIEludmVyc2VKYWNvYmlDUyBJbnZlcnNlSmFjb2JpREMgSW52ZXJzZUphY29iaUROIEludmVyc2VKYWNvYmlEUyBJbnZlcnNlSmFjb2JpTkMgSW52ZXJzZUphY29iaU5EIEludmVyc2VKYWNvYmlOUyBJbnZlcnNlSmFjb2JpU0MgSW52ZXJzZUphY29iaVNEIEludmVyc2VKYWNvYmlTTiBJbnZlcnNlTGFwbGFjZVRyYW5zZm9ybSBJbnZlcnNlUGVybXV0YXRpb24gSW52ZXJzZVJhZG9uIEludmVyc2VTZXJpZXMgSW52ZXJzZVN1cnZpdmFsRnVuY3Rpb24gSW52ZXJzZVdhdmVsZXRUcmFuc2Zvcm0gSW52ZXJzZVdlaWVyc3RyYXNzUCBJbnZlcnNlWlRyYW5zZm9ybSBJbnZpc2libGUgSW52aXNpYmxlQXBwbGljYXRpb24gSW52aXNpYmxlVGltZXMgSXJyZWR1Y2libGVQb2x5bm9taWFsUSBJc29sYXRpbmdJbnRlcnZhbCBJc29tb3JwaGljR3JhcGhRIElzb3RvcGVEYXRhIEl0YWxpYyBJdGVtIEl0ZW1Cb3ggSXRlbUJveE9wdGlvbnMgSXRlbVNpemUgSXRlbVN0eWxlIEl0b1Byb2Nlc3MgJyArXG4gICAgICAnSmFjY2FyZERpc3NpbWlsYXJpdHkgSmFjb2JpQW1wbGl0dWRlIEphY29iaWFuIEphY29iaUNEIEphY29iaUNOIEphY29iaUNTIEphY29iaURDIEphY29iaUROIEphY29iaURTIEphY29iaU5DIEphY29iaU5EIEphY29iaU5TIEphY29iaVAgSmFjb2JpU0MgSmFjb2JpU0QgSmFjb2JpU04gSmFjb2JpU3ltYm9sIEphY29iaVpldGEgSmFua29Hcm91cEoxIEphbmtvR3JvdXBKMiBKYW5rb0dyb3VwSjMgSmFua29Hcm91cEo0IEphcnF1ZUJlcmFBTE1UZXN0IEpvaG5zb25EaXN0cmlidXRpb24gSm9pbiBKb2luZWQgSm9pbmVkQ3VydmUgSm9pbmVkQ3VydmVCb3ggSm9pbkZvcm0gSm9yZGFuRGVjb21wb3NpdGlvbiBKb3JkYW5Nb2RlbERlY29tcG9zaXRpb24gJyArXG4gICAgICAnSyBLYWdpQ2hhcnQgS2Fpc2VyQmVzc2VsV2luZG93IEthaXNlcldpbmRvdyBLYWxtYW5Fc3RpbWF0b3IgS2FsbWFuRmlsdGVyIEthcmh1bmVuTG9ldmVEZWNvbXBvc2l0aW9uIEthcnlUcmVlIEthdHpDZW50cmFsaXR5IEtDb3JlQ29tcG9uZW50cyBLRGlzdHJpYnV0aW9uIEtlbHZpbkJlaSBLZWx2aW5CZXIgS2VsdmluS2VpIEtlbHZpbktlciBLZW5kYWxsVGF1IEtlbmRhbGxUYXVUZXN0IEtlcm5lbEV4ZWN1dGUgS2VybmVsTWl4dHVyZURpc3RyaWJ1dGlvbiBLZXJuZWxPYmplY3QgS2VybmVscyBLZXQgS2hpbmNoaW4gS2lyY2hob2ZmR3JhcGggS2lyY2hob2ZmTWF0cml4IEtsZWluSW52YXJpYW50SiBLbmlnaHRUb3VyR3JhcGggS25vdERhdGEgS25vd25Vbml0USBLb2xtb2dvcm92U21pcm5vdlRlc3QgS3JvbmVja2VyRGVsdGEgS3JvbmVja2VyTW9kZWxEZWNvbXBvc2l0aW9uIEtyb25lY2tlclByb2R1Y3QgS3JvbmVja2VyU3ltYm9sIEt1aXBlclRlc3QgS3VtYXJhc3dhbXlEaXN0cmlidXRpb24gS3VydG9zaXMgS3V3YWhhcmFGaWx0ZXIgJyArXG4gICAgICAnTGFiZWwgTGFiZWxlZCBMYWJlbGVkU2xpZGVyIExhYmVsaW5nRnVuY3Rpb24gTGFiZWxTdHlsZSBMYWd1ZXJyZUwgTGFtYmRhQ29tcG9uZW50cyBMYW1iZXJ0VyBMYW5jem9zV2luZG93IExhbmRhdURpc3RyaWJ1dGlvbiBMYW5ndWFnZSBMYW5ndWFnZUNhdGVnb3J5IExhcGxhY2VEaXN0cmlidXRpb24gTGFwbGFjZVRyYW5zZm9ybSBMYXBsYWNpYW4gTGFwbGFjaWFuRmlsdGVyIExhcGxhY2lhbkdhdXNzaWFuRmlsdGVyIExhcmdlIExhcmdlciBMYXN0IExhdGl0dWRlIExhdGl0dWRlTG9uZ2l0dWRlIExhdHRpY2VEYXRhIExhdHRpY2VSZWR1Y2UgTGF1bmNoIExhdW5jaEtlcm5lbHMgTGF5ZXJlZEdyYXBoUGxvdCBMYXllclNpemVGdW5jdGlvbiBMYXlvdXRJbmZvcm1hdGlvbiBMQ00gTGVhZkNvdW50IExlYXBZZWFyUSBMZWFzdFNxdWFyZXMgTGVhc3RTcXVhcmVzRmlsdGVyS2VybmVsIExlZnQgTGVmdEFycm93IExlZnRBcnJvd0JhciBMZWZ0QXJyb3dSaWdodEFycm93IExlZnREb3duVGVlVmVjdG9yIExlZnREb3duVmVjdG9yIExlZnREb3duVmVjdG9yQmFyIExlZnRSaWdodEFycm93IExlZnRSaWdodFZlY3RvciBMZWZ0VGVlIExlZnRUZWVBcnJvdyBMZWZ0VGVlVmVjdG9yIExlZnRUcmlhbmdsZSBMZWZ0VHJpYW5nbGVCYXIgTGVmdFRyaWFuZ2xlRXF1YWwgTGVmdFVwRG93blZlY3RvciBMZWZ0VXBUZWVWZWN0b3IgTGVmdFVwVmVjdG9yIExlZnRVcFZlY3RvckJhciBMZWZ0VmVjdG9yIExlZnRWZWN0b3JCYXIgTGVnZW5kQXBwZWFyYW5jZSBMZWdlbmRlZCBMZWdlbmRGdW5jdGlvbiBMZWdlbmRMYWJlbCBMZWdlbmRMYXlvdXQgTGVnZW5kTWFyZ2lucyBMZWdlbmRNYXJrZXJzIExlZ2VuZE1hcmtlclNpemUgTGVnZW5kcmVQIExlZ2VuZHJlUSBMZWdlbmRyZVR5cGUgTGVuZ3RoIExlbmd0aFdoaWxlIExlcmNoUGhpIExlc3MgTGVzc0VxdWFsIExlc3NFcXVhbEdyZWF0ZXIgTGVzc0Z1bGxFcXVhbCBMZXNzR3JlYXRlciBMZXNzTGVzcyBMZXNzU2xhbnRFcXVhbCBMZXNzVGlsZGUgTGV0dGVyQ2hhcmFjdGVyIExldHRlclEgTGV2ZWwgTGV2ZW5lVGVzdCBMZXZpQ2l2aXRhVGVuc29yIExldnlEaXN0cmlidXRpb24gTGV4aWNvZ3JhcGhpYyBMaWJyYXJ5RnVuY3Rpb24gTGlicmFyeUZ1bmN0aW9uRXJyb3IgTGlicmFyeUZ1bmN0aW9uSW5mb3JtYXRpb24gTGlicmFyeUZ1bmN0aW9uTG9hZCBMaWJyYXJ5RnVuY3Rpb25VbmxvYWQgTGlicmFyeUxvYWQgTGlicmFyeVVubG9hZCBMaWNlbnNlSUQgTGlmdGluZ0ZpbHRlckRhdGEgTGlmdGluZ1dhdmVsZXRUcmFuc2Zvcm0gTGlnaHRCbHVlIExpZ2h0QnJvd24gTGlnaHRDeWFuIExpZ2h0ZXIgTGlnaHRHcmF5IExpZ2h0R3JlZW4gTGlnaHRpbmcgTGlnaHRpbmdBbmdsZSBMaWdodE1hZ2VudGEgTGlnaHRPcmFuZ2UgTGlnaHRQaW5rIExpZ2h0UHVycGxlIExpZ2h0UmVkIExpZ2h0U291cmNlcyBMaWdodFllbGxvdyBMaWtlbGlob29kIExpbWl0IExpbWl0c1Bvc2l0aW9uaW5nIExpbWl0c1Bvc2l0aW9uaW5nVG9rZW5zIExpbmRsZXlEaXN0cmlidXRpb24gTGluZSBMaW5lM0RCb3ggTGluZWFyRmlsdGVyIExpbmVhckZyYWN0aW9uYWxUcmFuc2Zvcm0gTGluZWFyTW9kZWxGaXQgTGluZWFyT2Zmc2V0RnVuY3Rpb24gTGluZWFyUHJvZ3JhbW1pbmcgTGluZWFyUmVjdXJyZW5jZSBMaW5lYXJTb2x2ZSBMaW5lYXJTb2x2ZUZ1bmN0aW9uIExpbmVCb3ggTGluZUJyZWFrIExpbmVicmVha0FkanVzdG1lbnRzIExpbmVCcmVha0NoYXJ0IExpbmVCcmVha1dpdGhpbiBMaW5lQ29sb3IgTGluZUZvcm0gTGluZUdyYXBoIExpbmVJbmRlbnQgTGluZUluZGVudE1heEZyYWN0aW9uIExpbmVJbnRlZ3JhbENvbnZvbHV0aW9uUGxvdCBMaW5lSW50ZWdyYWxDb252b2x1dGlvblNjYWxlIExpbmVMZWdlbmQgTGluZU9wYWNpdHkgTGluZVNwYWNpbmcgTGluZVdyYXBQYXJ0cyBMaW5rQWN0aXZhdGUgTGlua0Nsb3NlIExpbmtDb25uZWN0IExpbmtDb25uZWN0ZWRRIExpbmtDcmVhdGUgTGlua0Vycm9yIExpbmtGbHVzaCBMaW5rRnVuY3Rpb24gTGlua0hvc3QgTGlua0ludGVycnVwdCBMaW5rTGF1bmNoIExpbmtNb2RlIExpbmtPYmplY3QgTGlua09wZW4gTGlua09wdGlvbnMgTGlua1BhdHRlcm5zIExpbmtQcm90b2NvbCBMaW5rUmVhZCBMaW5rUmVhZEhlbGQgTGlua1JlYWR5USBMaW5rcyBMaW5rV3JpdGUgTGlua1dyaXRlSGVsZCBMaW91dmlsbGVMYW1iZGEgTGlzdCBMaXN0YWJsZSBMaXN0QW5pbWF0ZSBMaXN0Q29udG91clBsb3QgTGlzdENvbnRvdXJQbG90M0QgTGlzdENvbnZvbHZlIExpc3RDb3JyZWxhdGUgTGlzdEN1cnZlUGF0aFBsb3QgTGlzdERlY29udm9sdmUgTGlzdERlbnNpdHlQbG90IExpc3RlbiBMaXN0Rm91cmllclNlcXVlbmNlVHJhbnNmb3JtIExpc3RJbnRlcnBvbGF0aW9uIExpc3RMaW5lSW50ZWdyYWxDb252b2x1dGlvblBsb3QgTGlzdExpbmVQbG90IExpc3RMb2dMaW5lYXJQbG90IExpc3RMb2dMb2dQbG90IExpc3RMb2dQbG90IExpc3RQaWNrZXIgTGlzdFBpY2tlckJveCBMaXN0UGlja2VyQm94QmFja2dyb3VuZCBMaXN0UGlja2VyQm94T3B0aW9ucyBMaXN0UGxheSBMaXN0UGxvdCBMaXN0UGxvdDNEIExpc3RQb2ludFBsb3QzRCBMaXN0UG9sYXJQbG90IExpc3RRIExpc3RTdHJlYW1EZW5zaXR5UGxvdCBMaXN0U3RyZWFtUGxvdCBMaXN0U3VyZmFjZVBsb3QzRCBMaXN0VmVjdG9yRGVuc2l0eVBsb3QgTGlzdFZlY3RvclBsb3QgTGlzdFZlY3RvclBsb3QzRCBMaXN0WlRyYW5zZm9ybSBMaXRlcmFsIExpdGVyYWxTZWFyY2ggTG9jYWxDbHVzdGVyaW5nQ29lZmZpY2llbnQgTG9jYWxpemVWYXJpYWJsZXMgTG9jYXRpb25FcXVpdmFsZW5jZVRlc3QgTG9jYXRpb25UZXN0IExvY2F0b3IgTG9jYXRvckF1dG9DcmVhdGUgTG9jYXRvckJveCBMb2NhdG9yQm94T3B0aW9ucyBMb2NhdG9yQ2VudGVyaW5nIExvY2F0b3JQYW5lIExvY2F0b3JQYW5lQm94IExvY2F0b3JQYW5lQm94T3B0aW9ucyAnICtcbiAgICAgICdMb2NhdG9yUmVnaW9uIExvY2tlZCBMb2cgTG9nMTAgTG9nMiBMb2dCYXJuZXNHIExvZ0dhbW1hIExvZ0dhbW1hRGlzdHJpYnV0aW9uIExvZ2ljYWxFeHBhbmQgTG9nSW50ZWdyYWwgTG9naXN0aWNEaXN0cmlidXRpb24gTG9naXRNb2RlbEZpdCBMb2dMaWtlbGlob29kIExvZ0xpbmVhclBsb3QgTG9nTG9naXN0aWNEaXN0cmlidXRpb24gTG9nTG9nUGxvdCBMb2dNdWx0aW5vcm1hbERpc3RyaWJ1dGlvbiBMb2dOb3JtYWxEaXN0cmlidXRpb24gTG9nUGxvdCBMb2dSYW5rVGVzdCBMb2dTZXJpZXNEaXN0cmlidXRpb24gTG9uZ0VxdWFsIExvbmdlc3QgTG9uZ2VzdEFzY2VuZGluZ1NlcXVlbmNlIExvbmdlc3RDb21tb25TZXF1ZW5jZSBMb25nZXN0Q29tbW9uU2VxdWVuY2VQb3NpdGlvbnMgTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlIExvbmdlc3RDb21tb25TdWJzZXF1ZW5jZVBvc2l0aW9ucyBMb25nZXN0TWF0Y2ggTG9uZ0Zvcm0gTG9uZ2l0dWRlIExvbmdMZWZ0QXJyb3cgTG9uZ0xlZnRSaWdodEFycm93IExvbmdSaWdodEFycm93IExvb3BiYWNrIExvb3BGcmVlR3JhcGhRIExvd2VyQ2FzZVEgTG93ZXJMZWZ0QXJyb3cgTG93ZXJSaWdodEFycm93IExvd2VyVHJpYW5ndWxhcml6ZSBMb3dwYXNzRmlsdGVyIExRRXN0aW1hdG9yR2FpbnMgTFFHUmVndWxhdG9yIExRT3V0cHV0UmVndWxhdG9yR2FpbnMgTFFSZWd1bGF0b3JHYWlucyBMVUJhY2tTdWJzdGl0dXRpb24gTHVjYXNMIEx1Y2Npb1NhbWlDb21wb25lbnRzIExVRGVjb21wb3NpdGlvbiBMeWFwdW5vdlNvbHZlIEx5b25zR3JvdXBMeSAnICtcbiAgICAgICdNYWNoaW5lSUQgTWFjaGluZU5hbWUgTWFjaGluZU51bWJlclEgTWFjaGluZVByZWNpc2lvbiBNYWNpbnRvc2hTeXN0ZW1QYWdlU2V0dXAgTWFnZW50YSBNYWduaWZpY2F0aW9uIE1hZ25pZnkgTWFpblNvbHZlIE1haW50YWluRHluYW1pY0NhY2hlcyBNYWpvcml0eSBNYWtlQm94ZXMgTWFrZUV4cHJlc3Npb24gTWFrZVJ1bGVzIE1hbmdvbGR0TGFtYmRhIE1hbmhhdHRhbkRpc3RhbmNlIE1hbmlwdWxhdGUgTWFuaXB1bGF0b3IgTWFubldoaXRuZXlUZXN0IE1hbnRpc3NhRXhwb25lbnQgTWFudWFsIE1hcCBNYXBBbGwgTWFwQXQgTWFwSW5kZXhlZCBNQVByb2Nlc3MgTWFwVGhyZWFkIE1hcmN1bVEgTWFyZGlhQ29tYmluZWRUZXN0IE1hcmRpYUt1cnRvc2lzVGVzdCBNYXJkaWFTa2V3bmVzc1Rlc3QgTWFyZ2luYWxEaXN0cmlidXRpb24gTWFya292UHJvY2Vzc1Byb3BlcnRpZXMgTWFza2luZyBNYXRjaGluZ0Rpc3NpbWlsYXJpdHkgTWF0Y2hMb2NhbE5hbWVRIE1hdGNoTG9jYWxOYW1lcyBNYXRjaFEgTWF0ZXJpYWwgTWF0aGVtYXRpY2FOb3RhdGlvbiBNYXRoaWV1QyBNYXRoaWV1Q2hhcmFjdGVyaXN0aWNBIE1hdGhpZXVDaGFyYWN0ZXJpc3RpY0IgTWF0aGlldUNoYXJhY3RlcmlzdGljRXhwb25lbnQgTWF0aGlldUNQcmltZSBNYXRoaWV1R3JvdXBNMTEgTWF0aGlldUdyb3VwTTEyIE1hdGhpZXVHcm91cE0yMiBNYXRoaWV1R3JvdXBNMjMgTWF0aGlldUdyb3VwTTI0IE1hdGhpZXVTIE1hdGhpZXVTUHJpbWUgTWF0aE1MRm9ybSBNYXRoTUxUZXh0IE1hdHJpY2VzIE1hdHJpeEV4cCBNYXRyaXhGb3JtIE1hdHJpeEZ1bmN0aW9uIE1hdHJpeExvZyBNYXRyaXhQbG90IE1hdHJpeFBvd2VyIE1hdHJpeFEgTWF0cml4UmFuayBNYXggTWF4QmVuZCBNYXhEZXRlY3QgTWF4RXh0cmFCYW5kd2lkdGhzIE1heEV4dHJhQ29uZGl0aW9ucyBNYXhGZWF0dXJlcyBNYXhGaWx0ZXIgTWF4aW1pemUgTWF4SXRlcmF0aW9ucyBNYXhNZW1vcnlVc2VkIE1heE1peHR1cmVLZXJuZWxzIE1heFBsb3RQb2ludHMgTWF4UG9pbnRzIE1heFJlY3Vyc2lvbiBNYXhTdGFibGVEaXN0cmlidXRpb24gTWF4U3RlcEZyYWN0aW9uIE1heFN0ZXBzIE1heFN0ZXBTaXplIE1heFZhbHVlIE1heHdlbGxEaXN0cmlidXRpb24gTWNMYXVnaGxpbkdyb3VwTWNMIE1lYW4gTWVhbkNsdXN0ZXJpbmdDb2VmZmljaWVudCBNZWFuRGVncmVlQ29ubmVjdGl2aXR5IE1lYW5EZXZpYXRpb24gTWVhbkZpbHRlciBNZWFuR3JhcGhEaXN0YW5jZSBNZWFuTmVpZ2hib3JEZWdyZWUgTWVhblNoaWZ0IE1lYW5TaGlmdEZpbHRlciBNZWRpYW4gTWVkaWFuRGV2aWF0aW9uIE1lZGlhbkZpbHRlciBNZWRpdW0gTWVpamVyRyBNZWl4bmVyRGlzdHJpYnV0aW9uIE1lbWJlclEgTWVtb3J5Q29uc3RyYWluZWQgTWVtb3J5SW5Vc2UgTWVudSBNZW51QXBwZWFyYW5jZSBNZW51Q29tbWFuZEtleSBNZW51RXZhbHVhdG9yIE1lbnVJdGVtIE1lbnVQYWNrZXQgTWVudVNvcnRpbmdWYWx1ZSBNZW51U3R5bGUgTWVudVZpZXcgTWVyZ2VEaWZmZXJlbmNlcyBNZXNoIE1lc2hGdW5jdGlvbnMgTWVzaFJhbmdlIE1lc2hTaGFkaW5nIE1lc2hTdHlsZSBNZXNzYWdlIE1lc3NhZ2VEaWFsb2cgTWVzc2FnZUxpc3QgTWVzc2FnZU5hbWUgTWVzc2FnZU9wdGlvbnMgTWVzc2FnZVBhY2tldCBNZXNzYWdlcyBNZXNzYWdlc05vdGVib29rIE1ldGFDaGFyYWN0ZXJzIE1ldGFJbmZvcm1hdGlvbiBNZXRob2QgTWV0aG9kT3B0aW9ucyBNZXhpY2FuSGF0V2F2ZWxldCBNZXllcldhdmVsZXQgTWluIE1pbkRldGVjdCBNaW5GaWx0ZXIgTWluaW1hbFBvbHlub21pYWwgTWluaW1hbFN0YXRlU3BhY2VNb2RlbCBNaW5pbWl6ZSBNaW5vcnMgTWluUmVjdXJzaW9uIE1pblNpemUgTWluU3RhYmxlRGlzdHJpYnV0aW9uIE1pbnVzIE1pbnVzUGx1cyBNaW5WYWx1ZSBNaXNzaW5nIE1pc3NpbmdEYXRhTWV0aG9kIE1pdHRhZ0xlZmZsZXJFIE1peGVkUmFkaXggTWl4ZWRSYWRpeFF1YW50aXR5IE1peHR1cmVEaXN0cmlidXRpb24gTW9kIE1vZGFsIE1vZGUgTW9kdWxhciBNb2R1bGFyTGFtYmRhIE1vZHVsZSBNb2R1bHVzIE1vZWJpdXNNdSBNb21lbnQgTW9tZW50YXJ5IE1vbWVudENvbnZlcnQgTW9tZW50RXZhbHVhdGUgTW9tZW50R2VuZXJhdGluZ0Z1bmN0aW9uIE1vbmRheSBNb25pdG9yIE1vbm9taWFsTGlzdCBNb25vbWlhbE9yZGVyIE1vbnN0ZXJHcm91cE0gTW9ybGV0V2F2ZWxldCBNb3JwaG9sb2dpY2FsQmluYXJpemUgTW9ycGhvbG9naWNhbEJyYW5jaFBvaW50cyBNb3JwaG9sb2dpY2FsQ29tcG9uZW50cyBNb3JwaG9sb2dpY2FsRXVsZXJOdW1iZXIgTW9ycGhvbG9naWNhbEdyYXBoIE1vcnBob2xvZ2ljYWxQZXJpbWV0ZXIgTW9ycGhvbG9naWNhbFRyYW5zZm9ybSBNb3N0IE1vdXNlQW5ub3RhdGlvbiBNb3VzZUFwcGVhcmFuY2UgTW91c2VBcHBlYXJhbmNlVGFnIE1vdXNlQnV0dG9ucyBNb3VzZW92ZXIgTW91c2VQb2ludGVyTm90ZSBNb3VzZVBvc2l0aW9uIE1vdmluZ0F2ZXJhZ2UgTW92aW5nTWVkaWFuIE1veWFsRGlzdHJpYnV0aW9uIE11bHRpZWRnZVN0eWxlIE11bHRpbGF1bmNoV2FybmluZyBNdWx0aUxldHRlckl0YWxpY3MgTXVsdGlMZXR0ZXJTdHlsZSBNdWx0aWxpbmVGdW5jdGlvbiBNdWx0aW5vbWlhbCBNdWx0aW5vbWlhbERpc3RyaWJ1dGlvbiBNdWx0aW5vcm1hbERpc3RyaWJ1dGlvbiBNdWx0aXBsaWNhdGl2ZU9yZGVyIE11bHRpcGxpY2l0eSBNdWx0aXNlbGVjdGlvbiBNdWx0aXZhcmlhdGVIeXBlcmdlb21ldHJpY0Rpc3RyaWJ1dGlvbiBNdWx0aXZhcmlhdGVQb2lzc29uRGlzdHJpYnV0aW9uIE11bHRpdmFyaWF0ZVREaXN0cmlidXRpb24gJyArXG4gICAgICAnTiBOYWthZ2FtaURpc3RyaWJ1dGlvbiBOYW1lUSBOYW1lcyBOYW1lc3BhY2VCb3ggTmFuZCBOQXJnTWF4IE5BcmdNaW4gTkJlcm5vdWxsaUIgTkNhY2hlIE5EU29sdmUgTkRTb2x2ZVZhbHVlIE5lYXJlc3QgTmVhcmVzdEZ1bmN0aW9uIE5lZWRDdXJyZW50RnJvbnRFbmRQYWNrYWdlUGFja2V0IE5lZWRDdXJyZW50RnJvbnRFbmRTeW1ib2xzUGFja2V0IE5lZWRsZW1hbld1bnNjaFNpbWlsYXJpdHkgTmVlZHMgTmVnYXRpdmUgTmVnYXRpdmVCaW5vbWlhbERpc3RyaWJ1dGlvbiBOZWdhdGl2ZU11bHRpbm9taWFsRGlzdHJpYnV0aW9uIE5laWdoYm9yaG9vZEdyYXBoIE5lc3QgTmVzdGVkR3JlYXRlckdyZWF0ZXIgTmVzdGVkTGVzc0xlc3MgTmVzdGVkU2NyaXB0UnVsZXMgTmVzdExpc3QgTmVzdFdoaWxlIE5lc3RXaGlsZUxpc3QgTmV2aWxsZVRoZXRhQyBOZXZpbGxlVGhldGFEIE5ldmlsbGVUaGV0YU4gTmV2aWxsZVRoZXRhUyBOZXdQcmltaXRpdmVTdHlsZSBORXhwZWN0YXRpb24gTmV4dCBOZXh0UHJpbWUgTkhvbGRBbGwgTkhvbGRGaXJzdCBOSG9sZFJlc3QgTmljaG9sc0dyaWRMaW5lcyBOaWNob2xzUGxvdCBOSW50ZWdyYXRlIE5NYXhpbWl6ZSBOTWF4VmFsdWUgTk1pbmltaXplIE5NaW5WYWx1ZSBOb21pbmFsVmFyaWFibGVzIE5vbkFzc29jaWF0aXZlIE5vbmNlbnRyYWxCZXRhRGlzdHJpYnV0aW9uIE5vbmNlbnRyYWxDaGlTcXVhcmVEaXN0cmlidXRpb24gTm9uY2VudHJhbEZSYXRpb0Rpc3RyaWJ1dGlvbiBOb25jZW50cmFsU3R1ZGVudFREaXN0cmlidXRpb24gTm9uQ29tbXV0YXRpdmVNdWx0aXBseSBOb25Db25zdGFudHMgTm9uZSBOb25saW5lYXJNb2RlbEZpdCBOb25sb2NhbE1lYW5zRmlsdGVyIE5vbk5lZ2F0aXZlIE5vblBvc2l0aXZlIE5vciBOb3JsdW5kQiBOb3JtIE5vcm1hbCBOb3JtYWxEaXN0cmlidXRpb24gTm9ybWFsR3JvdXBpbmcgTm9ybWFsaXplIE5vcm1hbGl6ZWRTcXVhcmVkRXVjbGlkZWFuRGlzdGFuY2UgTm9ybWFsc0Z1bmN0aW9uIE5vcm1GdW5jdGlvbiBOb3QgTm90Q29uZ3J1ZW50IE5vdEN1cENhcCBOb3REb3VibGVWZXJ0aWNhbEJhciBOb3RlYm9vayBOb3RlYm9va0FwcGx5IE5vdGVib29rQXV0b1NhdmUgTm90ZWJvb2tDbG9zZSBOb3RlYm9va0NvbnZlcnRTZXR0aW5ncyBOb3RlYm9va0NyZWF0ZSBOb3RlYm9va0NyZWF0ZVJldHVybk9iamVjdCBOb3RlYm9va0RlZmF1bHQgTm90ZWJvb2tEZWxldGUgTm90ZWJvb2tEaXJlY3RvcnkgTm90ZWJvb2tEeW5hbWljRXhwcmVzc2lvbiBOb3RlYm9va0V2YWx1YXRlIE5vdGVib29rRXZlbnRBY3Rpb25zIE5vdGVib29rRmlsZU5hbWUgTm90ZWJvb2tGaW5kIE5vdGVib29rRmluZFJldHVybk9iamVjdCBOb3RlYm9va0dldCBOb3RlYm9va0dldExheW91dEluZm9ybWF0aW9uUGFja2V0IE5vdGVib29rR2V0TWlzc3BlbGxpbmdzUGFja2V0IE5vdGVib29rSW5mb3JtYXRpb24gTm90ZWJvb2tJbnRlcmZhY2VPYmplY3QgTm90ZWJvb2tMb2NhdGUgTm90ZWJvb2tPYmplY3QgTm90ZWJvb2tPcGVuIE5vdGVib29rT3BlblJldHVybk9iamVjdCBOb3RlYm9va1BhdGggTm90ZWJvb2tQcmludCBOb3RlYm9va1B1dCBOb3RlYm9va1B1dFJldHVybk9iamVjdCBOb3RlYm9va1JlYWQgTm90ZWJvb2tSZXNldEdlbmVyYXRlZENlbGxzIE5vdGVib29rcyBOb3RlYm9va1NhdmUgTm90ZWJvb2tTYXZlQXMgTm90ZWJvb2tTZWxlY3Rpb24gTm90ZWJvb2tTZXR1cExheW91dEluZm9ybWF0aW9uUGFja2V0IE5vdGVib29rc01lbnUgTm90ZWJvb2tXcml0ZSBOb3RFbGVtZW50IE5vdEVxdWFsVGlsZGUgTm90RXhpc3RzIE5vdEdyZWF0ZXIgTm90R3JlYXRlckVxdWFsIE5vdEdyZWF0ZXJGdWxsRXF1YWwgTm90R3JlYXRlckdyZWF0ZXIgTm90R3JlYXRlckxlc3MgTm90R3JlYXRlclNsYW50RXF1YWwgTm90R3JlYXRlclRpbGRlIE5vdEh1bXBEb3duSHVtcCBOb3RIdW1wRXF1YWwgTm90TGVmdFRyaWFuZ2xlIE5vdExlZnRUcmlhbmdsZUJhciBOb3RMZWZ0VHJpYW5nbGVFcXVhbCBOb3RMZXNzIE5vdExlc3NFcXVhbCBOb3RMZXNzRnVsbEVxdWFsIE5vdExlc3NHcmVhdGVyIE5vdExlc3NMZXNzIE5vdExlc3NTbGFudEVxdWFsIE5vdExlc3NUaWxkZSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlciBOb3ROZXN0ZWRMZXNzTGVzcyBOb3RQcmVjZWRlcyBOb3RQcmVjZWRlc0VxdWFsIE5vdFByZWNlZGVzU2xhbnRFcXVhbCBOb3RQcmVjZWRlc1RpbGRlIE5vdFJldmVyc2VFbGVtZW50IE5vdFJpZ2h0VHJpYW5nbGUgTm90UmlnaHRUcmlhbmdsZUJhciBOb3RSaWdodFRyaWFuZ2xlRXF1YWwgTm90U3F1YXJlU3Vic2V0IE5vdFNxdWFyZVN1YnNldEVxdWFsIE5vdFNxdWFyZVN1cGVyc2V0IE5vdFNxdWFyZVN1cGVyc2V0RXF1YWwgTm90U3Vic2V0IE5vdFN1YnNldEVxdWFsIE5vdFN1Y2NlZWRzIE5vdFN1Y2NlZWRzRXF1YWwgTm90U3VjY2VlZHNTbGFudEVxdWFsIE5vdFN1Y2NlZWRzVGlsZGUgTm90U3VwZXJzZXQgTm90U3VwZXJzZXRFcXVhbCBOb3RUaWxkZSBOb3RUaWxkZUVxdWFsIE5vdFRpbGRlRnVsbEVxdWFsIE5vdFRpbGRlVGlsZGUgTm90VmVydGljYWxCYXIgTlByb2JhYmlsaXR5IE5Qcm9kdWN0IE5Qcm9kdWN0RmFjdG9ycyBOUm9vdHMgTlNvbHZlIE5TdW0gTlN1bVRlcm1zIE51bGwgTnVsbFJlY29yZHMgTnVsbFNwYWNlIE51bGxXb3JkcyBOdW1iZXIgTnVtYmVyRmllbGRDbGFzc051bWJlciBOdW1iZXJGaWVsZERpc2NyaW1pbmFudCBOdW1iZXJGaWVsZEZ1bmRhbWVudGFsVW5pdHMgTnVtYmVyRmllbGRJbnRlZ3JhbEJhc2lzIE51bWJlckZpZWxkTm9ybVJlcHJlc2VudGF0aXZlcyBOdW1iZXJGaWVsZFJlZ3VsYXRvciBOdW1iZXJGaWVsZFJvb3RzT2ZVbml0eSBOdW1iZXJGaWVsZFNpZ25hdHVyZSBOdW1iZXJGb3JtIE51bWJlckZvcm1hdCBOdW1iZXJNYXJrcyBOdW1iZXJNdWx0aXBsaWVyIE51bWJlclBhZGRpbmcgTnVtYmVyUG9pbnQgTnVtYmVyUSBOdW1iZXJTZXBhcmF0b3IgJyArXG4gICAgICAnTnVtYmVyU2lnbnMgTnVtYmVyU3RyaW5nIE51bWVyYXRvciBOdW1lcmljRnVuY3Rpb24gTnVtZXJpY1EgTnV0dGFsbFdpbmRvdyBOVmFsdWVzIE55cXVpc3RHcmlkTGluZXMgTnlxdWlzdFBsb3QgJyArXG4gICAgICAnTyBPYnNlcnZhYmlsaXR5R3JhbWlhbiBPYnNlcnZhYmlsaXR5TWF0cml4IE9ic2VydmFibGVEZWNvbXBvc2l0aW9uIE9ic2VydmFibGVNb2RlbFEgT2RkUSBPZmYgT2Zmc2V0IE9MRURhdGEgT24gT05hbkdyb3VwT04gT25lSWRlbnRpdHkgT3BhY2l0eSBPcGVuIE9wZW5BcHBlbmQgT3BlbmVyIE9wZW5lckJveCBPcGVuZXJCb3hPcHRpb25zIE9wZW5lclZpZXcgT3BlbkZ1bmN0aW9uSW5zcGVjdG9yUGFja2V0IE9wZW5pbmcgT3BlblJlYWQgT3BlblNwZWNpYWxPcHRpb25zIE9wZW5UZW1wb3JhcnkgT3BlbldyaXRlIE9wZXJhdGUgT3BlcmF0aW5nU3lzdGVtIE9wdGltdW1GbG93RGF0YSBPcHRpb25hbCBPcHRpb25JbnNwZWN0b3JTZXR0aW5ncyBPcHRpb25RIE9wdGlvbnMgT3B0aW9uc1BhY2tldCBPcHRpb25zUGF0dGVybiBPcHRpb25WYWx1ZSBPcHRpb25WYWx1ZUJveCBPcHRpb25WYWx1ZUJveE9wdGlvbnMgT3IgT3JhbmdlIE9yZGVyIE9yZGVyRGlzdHJpYnV0aW9uIE9yZGVyZWRRIE9yZGVyaW5nIE9yZGVybGVzcyBPcm5zdGVpblVobGVuYmVja1Byb2Nlc3MgT3J0aG9nb25hbGl6ZSBPdXQgT3V0ZXIgT3V0cHV0QXV0b092ZXJ3cml0ZSBPdXRwdXRDb250cm9sbGFiaWxpdHlNYXRyaXggT3V0cHV0Q29udHJvbGxhYmxlTW9kZWxRIE91dHB1dEZvcm0gT3V0cHV0Rm9ybURhdGEgT3V0cHV0R3JvdXBpbmcgT3V0cHV0TWF0aEVkaXRFeHByZXNzaW9uIE91dHB1dE5hbWVQYWNrZXQgT3V0cHV0UmVzcG9uc2UgT3V0cHV0U2l6ZUxpbWl0IE91dHB1dFN0cmVhbSBPdmVyIE92ZXJCYXIgT3ZlckRvdCBPdmVyZmxvdyBPdmVySGF0IE92ZXJsYXBzIE92ZXJsYXkgT3ZlcmxheUJveCBPdmVybGF5Qm94T3B0aW9ucyBPdmVyc2NyaXB0IE92ZXJzY3JpcHRCb3ggT3ZlcnNjcmlwdEJveE9wdGlvbnMgT3ZlclRpbGRlIE92ZXJWZWN0b3IgT3dlblQgT3duVmFsdWVzICcgK1xuICAgICAgJ1BhY2tpbmdNZXRob2QgUGFkZGVkRm9ybSBQYWRkaW5nIFBhZGVBcHByb3hpbWFudCBQYWRMZWZ0IFBhZFJpZ2h0IFBhZ2VCcmVha0Fib3ZlIFBhZ2VCcmVha0JlbG93IFBhZ2VCcmVha1dpdGhpbiBQYWdlRm9vdGVyTGluZXMgUGFnZUZvb3RlcnMgUGFnZUhlYWRlckxpbmVzIFBhZ2VIZWFkZXJzIFBhZ2VIZWlnaHQgUGFnZVJhbmtDZW50cmFsaXR5IFBhZ2VXaWR0aCBQYWlyZWRCYXJDaGFydCBQYWlyZWRIaXN0b2dyYW0gUGFpcmVkU21vb3RoSGlzdG9ncmFtIFBhaXJlZFRUZXN0IFBhaXJlZFpUZXN0IFBhbGV0dGVOb3RlYm9vayBQYWxldHRlUGF0aCBQYW5lIFBhbmVCb3ggUGFuZUJveE9wdGlvbnMgUGFuZWwgUGFuZWxCb3ggUGFuZWxCb3hPcHRpb25zIFBhbmVsZWQgUGFuZVNlbGVjdG9yIFBhbmVTZWxlY3RvckJveCBQYW5lU2VsZWN0b3JCb3hPcHRpb25zIFBhcGVyV2lkdGggUGFyYWJvbGljQ3lsaW5kZXJEIFBhcmFncmFwaEluZGVudCBQYXJhZ3JhcGhTcGFjaW5nIFBhcmFsbGVsQXJyYXkgUGFyYWxsZWxDb21iaW5lIFBhcmFsbGVsRG8gUGFyYWxsZWxFdmFsdWF0ZSBQYXJhbGxlbGl6YXRpb24gUGFyYWxsZWxpemUgUGFyYWxsZWxNYXAgUGFyYWxsZWxOZWVkcyBQYXJhbGxlbFByb2R1Y3QgUGFyYWxsZWxTdWJtaXQgUGFyYWxsZWxTdW0gUGFyYWxsZWxUYWJsZSBQYXJhbGxlbFRyeSBQYXJhbWV0ZXIgUGFyYW1ldGVyRXN0aW1hdG9yIFBhcmFtZXRlck1peHR1cmVEaXN0cmlidXRpb24gUGFyYW1ldGVyVmFyaWFibGVzIFBhcmFtZXRyaWNGdW5jdGlvbiBQYXJhbWV0cmljTkRTb2x2ZSBQYXJhbWV0cmljTkRTb2x2ZVZhbHVlIFBhcmFtZXRyaWNQbG90IFBhcmFtZXRyaWNQbG90M0QgUGFyZW50Q29ubmVjdCBQYXJlbnREaXJlY3RvcnkgUGFyZW50Rm9ybSBQYXJlbnRoZXNpemUgUGFyZW50TGlzdCBQYXJldG9EaXN0cmlidXRpb24gUGFydCBQYXJ0aWFsQ29ycmVsYXRpb25GdW5jdGlvbiBQYXJ0aWFsRCBQYXJ0aWNsZURhdGEgUGFydGl0aW9uIFBhcnRpdGlvbnNQIFBhcnRpdGlvbnNRIFBhcnplbldpbmRvdyBQYXNjYWxEaXN0cmlidXRpb24gUGFzc0V2ZW50c0Rvd24gUGFzc0V2ZW50c1VwIFBhc3RlIFBhc3RlQm94Rm9ybUlubGluZUNlbGxzIFBhc3RlQnV0dG9uIFBhdGggUGF0aEdyYXBoIFBhdGhHcmFwaFEgUGF0dGVybiBQYXR0ZXJuU2VxdWVuY2UgUGF0dGVyblRlc3QgUGF1bGlNYXRyaXggUGF1bFdhdmVsZXQgUGF1c2UgUGF1c2VkVGltZSBQREYgUGVhcnNvbkNoaVNxdWFyZVRlc3QgUGVhcnNvbkNvcnJlbGF0aW9uVGVzdCBQZWFyc29uRGlzdHJpYnV0aW9uIFBlcmZvcm1hbmNlR29hbCBQZXJpb2RpY0ludGVycG9sYXRpb24gUGVyaW9kb2dyYW0gUGVyaW9kb2dyYW1BcnJheSBQZXJtdXRhdGlvbkN5Y2xlcyBQZXJtdXRhdGlvbkN5Y2xlc1EgUGVybXV0YXRpb25Hcm91cCBQZXJtdXRhdGlvbkxlbmd0aCBQZXJtdXRhdGlvbkxpc3QgUGVybXV0YXRpb25MaXN0USBQZXJtdXRhdGlvbk1heCBQZXJtdXRhdGlvbk1pbiBQZXJtdXRhdGlvbk9yZGVyIFBlcm11dGF0aW9uUG93ZXIgUGVybXV0YXRpb25Qcm9kdWN0IFBlcm11dGF0aW9uUmVwbGFjZSBQZXJtdXRhdGlvbnMgUGVybXV0YXRpb25TdXBwb3J0IFBlcm11dGUgUGVyb25hTWFsaWtGaWx0ZXIgUGVycGVuZGljdWxhciBQRVJURGlzdHJpYnV0aW9uIFBldGVyc2VuR3JhcGggUGhhc2VNYXJnaW5zIFBpIFBpY2sgUElERGF0YSBQSUREZXJpdmF0aXZlRmlsdGVyIFBJREZlZWRmb3J3YXJkIFBJRFR1bmUgUGllY2V3aXNlIFBpZWNld2lzZUV4cGFuZCBQaWVDaGFydCBQaWVDaGFydDNEIFBpbGxhaVRyYWNlIFBpbGxhaVRyYWNlVGVzdCBQaW5rIFBpdm90aW5nIFBpeGVsQ29uc3RyYWluZWQgUGl4ZWxWYWx1ZSBQaXhlbFZhbHVlUG9zaXRpb25zIFBsYWNlZCBQbGFjZWhvbGRlciBQbGFjZWhvbGRlclJlcGxhY2UgUGxhaW4gUGxhbmFyR3JhcGhRIFBsYXkgUGxheVJhbmdlIFBsb3QgUGxvdDNEIFBsb3QzTWF0cml4IFBsb3REaXZpc2lvbiBQbG90Sm9pbmVkIFBsb3RMYWJlbCBQbG90TGF5b3V0IFBsb3RMZWdlbmRzIFBsb3RNYXJrZXJzIFBsb3RQb2ludHMgUGxvdFJhbmdlIFBsb3RSYW5nZUNsaXBwaW5nIFBsb3RSYW5nZVBhZGRpbmcgUGxvdFJlZ2lvbiBQbG90U3R5bGUgUGx1cyBQbHVzTWludXMgUG9jaGhhbW1lciBQb2RTdGF0ZXMgUG9kV2lkdGggUG9pbnQgUG9pbnQzREJveCBQb2ludEJveCBQb2ludEZpZ3VyZUNoYXJ0IFBvaW50Rm9ybSBQb2ludExlZ2VuZCBQb2ludFNpemUgUG9pc3NvbkNvbnN1bERpc3RyaWJ1dGlvbiBQb2lzc29uRGlzdHJpYnV0aW9uIFBvaXNzb25Qcm9jZXNzIFBvaXNzb25XaW5kb3cgUG9sYXJBeGVzIFBvbGFyQXhlc09yaWdpbiBQb2xhckdyaWRMaW5lcyBQb2xhclBsb3QgUG9sYXJUaWNrcyBQb2xlWmVyb01hcmtlcnMgUG9seWFBZXBwbGlEaXN0cmlidXRpb24gUG9seUdhbW1hIFBvbHlnb24gUG9seWdvbjNEQm94IFBvbHlnb24zREJveE9wdGlvbnMgUG9seWdvbkJveCBQb2x5Z29uQm94T3B0aW9ucyBQb2x5Z29uSG9sZVNjYWxlIFBvbHlnb25JbnRlcnNlY3Rpb25zIFBvbHlnb25TY2FsZSBQb2x5aGVkcm9uRGF0YSBQb2x5TG9nIFBvbHlub21pYWxFeHRlbmRlZEdDRCBQb2x5bm9taWFsRm9ybSBQb2x5bm9taWFsR0NEIFBvbHlub21pYWxMQ00gUG9seW5vbWlhbE1vZCBQb2x5bm9taWFsUSBQb2x5bm9taWFsUXVvdGllbnQgUG9seW5vbWlhbFF1b3RpZW50UmVtYWluZGVyIFBvbHlub21pYWxSZWR1Y2UgUG9seW5vbWlhbFJlbWFpbmRlciBQb2x5bm9taWFscyBQb3B1cE1lbnUgUG9wdXBNZW51Qm94IFBvcHVwTWVudUJveE9wdGlvbnMgUG9wdXBWaWV3IFBvcHVwV2luZG93IFBvc2l0aW9uIFBvc2l0aXZlIFBvc2l0aXZlRGVmaW5pdGVNYXRyaXhRIFBvc3NpYmxlWmVyb1EgUG9zdGZpeCBQb3N0U2NyaXB0IFBvd2VyIFBvd2VyRGlzdHJpYnV0aW9uIFBvd2VyRXhwYW5kIFBvd2VyTW9kIFBvd2VyTW9kTGlzdCAnICtcbiAgICAgICdQb3dlclNwZWN0cmFsRGVuc2l0eSBQb3dlcnNSZXByZXNlbnRhdGlvbnMgUG93ZXJTeW1tZXRyaWNQb2x5bm9taWFsIFByZWNlZGVuY2UgUHJlY2VkZW5jZUZvcm0gUHJlY2VkZXMgUHJlY2VkZXNFcXVhbCBQcmVjZWRlc1NsYW50RXF1YWwgUHJlY2VkZXNUaWxkZSBQcmVjaXNpb24gUHJlY2lzaW9uR29hbCBQcmVEZWNyZW1lbnQgUHJlZGljdGlvblJvb3QgUHJlZW1wdFByb3RlY3QgUHJlZmVyZW5jZXNQYXRoIFByZWZpeCBQcmVJbmNyZW1lbnQgUHJlcGVuZCBQcmVwZW5kVG8gUHJlc2VydmVJbWFnZU9wdGlvbnMgUHJldmlvdXMgUHJpY2VHcmFwaERpc3RyaWJ1dGlvbiBQcmltYXJ5UGxhY2Vob2xkZXIgUHJpbWUgUHJpbWVOdSBQcmltZU9tZWdhIFByaW1lUGkgUHJpbWVQb3dlclEgUHJpbWVRIFByaW1lcyBQcmltZVpldGFQIFByaW1pdGl2ZVJvb3QgUHJpbmNpcGFsQ29tcG9uZW50cyBQcmluY2lwYWxWYWx1ZSBQcmludCBQcmludEFjdGlvbiBQcmludEZvcm0gUHJpbnRpbmdDb3BpZXMgUHJpbnRpbmdPcHRpb25zIFByaW50aW5nUGFnZVJhbmdlIFByaW50aW5nU3RhcnRpbmdQYWdlTnVtYmVyIFByaW50aW5nU3R5bGVFbnZpcm9ubWVudCBQcmludFByZWNpc2lvbiBQcmludFRlbXBvcmFyeSBQcmlzbSBQcmlzbUJveCBQcmlzbUJveE9wdGlvbnMgUHJpdmF0ZUNlbGxPcHRpb25zIFByaXZhdGVFdmFsdWF0aW9uT3B0aW9ucyBQcml2YXRlRm9udE9wdGlvbnMgUHJpdmF0ZUZyb250RW5kT3B0aW9ucyBQcml2YXRlTm90ZWJvb2tPcHRpb25zIFByaXZhdGVQYXRocyBQcm9iYWJpbGl0eSBQcm9iYWJpbGl0eURpc3RyaWJ1dGlvbiBQcm9iYWJpbGl0eVBsb3QgUHJvYmFiaWxpdHlQciBQcm9iYWJpbGl0eVNjYWxlUGxvdCBQcm9iaXRNb2RlbEZpdCBQcm9jZXNzRXN0aW1hdG9yIFByb2Nlc3NQYXJhbWV0ZXJBc3N1bXB0aW9ucyBQcm9jZXNzUGFyYW1ldGVyUSBQcm9jZXNzU3RhdGVEb21haW4gUHJvY2Vzc1RpbWVEb21haW4gUHJvZHVjdCBQcm9kdWN0RGlzdHJpYnV0aW9uIFByb2R1Y3RMb2cgUHJvZ3Jlc3NJbmRpY2F0b3IgUHJvZ3Jlc3NJbmRpY2F0b3JCb3ggUHJvZ3Jlc3NJbmRpY2F0b3JCb3hPcHRpb25zIFByb2plY3Rpb24gUHJvbG9nIFByb21wdEZvcm0gUHJvcGVydGllcyBQcm9wZXJ0eSBQcm9wZXJ0eUxpc3QgUHJvcGVydHlWYWx1ZSBQcm9wb3J0aW9uIFByb3BvcnRpb25hbCBQcm90ZWN0IFByb3RlY3RlZCBQcm90ZWluRGF0YSBQcnVuaW5nIFBzZXVkb0ludmVyc2UgUHVycGxlIFB1dCBQdXRBcHBlbmQgUHlyYW1pZCBQeXJhbWlkQm94IFB5cmFtaWRCb3hPcHRpb25zICcgK1xuICAgICAgJ1FCaW5vbWlhbCBRRmFjdG9yaWFsIFFHYW1tYSBRSHlwZXJnZW9tZXRyaWNQRlEgUVBvY2hoYW1tZXIgUVBvbHlHYW1tYSBRUkRlY29tcG9zaXRpb24gUXVhZHJhdGljSXJyYXRpb25hbFEgUXVhbnRpbGUgUXVhbnRpbGVQbG90IFF1YW50aXR5IFF1YW50aXR5Rm9ybSBRdWFudGl0eU1hZ25pdHVkZSBRdWFudGl0eVEgUXVhbnRpdHlVbml0IFF1YXJ0aWNzIFF1YXJ0aWxlRGV2aWF0aW9uIFF1YXJ0aWxlcyBRdWFydGlsZVNrZXduZXNzIFF1ZXVlaW5nTmV0d29ya1Byb2Nlc3MgUXVldWVpbmdQcm9jZXNzIFF1ZXVlUHJvcGVydGllcyBRdWlldCBRdWl0IFF1b3RpZW50IFF1b3RpZW50UmVtYWluZGVyICcgK1xuICAgICAgJ1JhZGlhbGl0eUNlbnRyYWxpdHkgUmFkaWNhbEJveCBSYWRpY2FsQm94T3B0aW9ucyBSYWRpb0J1dHRvbiBSYWRpb0J1dHRvbkJhciBSYWRpb0J1dHRvbkJveCBSYWRpb0J1dHRvbkJveE9wdGlvbnMgUmFkb24gUmFtYW51amFuVGF1IFJhbWFudWphblRhdUwgUmFtYW51amFuVGF1VGhldGEgUmFtYW51amFuVGF1WiBSYW5kb20gUmFuZG9tQ2hvaWNlIFJhbmRvbUNvbXBsZXggUmFuZG9tRnVuY3Rpb24gUmFuZG9tR3JhcGggUmFuZG9tSW1hZ2UgUmFuZG9tSW50ZWdlciBSYW5kb21QZXJtdXRhdGlvbiBSYW5kb21QcmltZSBSYW5kb21SZWFsIFJhbmRvbVNhbXBsZSBSYW5kb21TZWVkIFJhbmRvbVZhcmlhdGUgUmFuZG9tV2Fsa1Byb2Nlc3MgUmFuZ2UgUmFuZ2VGaWx0ZXIgUmFuZ2VTcGVjaWZpY2F0aW9uIFJhbmtlZE1heCBSYW5rZWRNaW4gUmFzdGVyIFJhc3RlcjNEIFJhc3RlcjNEQm94IFJhc3RlcjNEQm94T3B0aW9ucyBSYXN0ZXJBcnJheSBSYXN0ZXJCb3ggUmFzdGVyQm94T3B0aW9ucyBSYXN0ZXJpemUgUmFzdGVyU2l6ZSBSYXRpb25hbCBSYXRpb25hbEZ1bmN0aW9ucyBSYXRpb25hbGl6ZSBSYXRpb25hbHMgUmF0aW9zIFJhdyBSYXdBcnJheSBSYXdCb3hlcyBSYXdEYXRhIFJhd01lZGl1bSBSYXlsZWlnaERpc3RyaWJ1dGlvbiBSZSBSZWFkIFJlYWRMaXN0IFJlYWRQcm90ZWN0ZWQgUmVhbCBSZWFsQmxvY2tEaWFnb25hbEZvcm0gUmVhbERpZ2l0cyBSZWFsRXhwb25lbnQgUmVhbHMgUmVhcCBSZWNvcmQgUmVjb3JkTGlzdHMgUmVjb3JkU2VwYXJhdG9ycyBSZWN0YW5nbGUgUmVjdGFuZ2xlQm94IFJlY3RhbmdsZUJveE9wdGlvbnMgUmVjdGFuZ2xlQ2hhcnQgUmVjdGFuZ2xlQ2hhcnQzRCBSZWN1cnJlbmNlRmlsdGVyIFJlY3VycmVuY2VUYWJsZSBSZWN1cnJpbmdEaWdpdHNGb3JtIFJlZCBSZWR1Y2UgUmVmQm94IFJlZmVyZW5jZUxpbmVTdHlsZSBSZWZlcmVuY2VNYXJrZXJzIFJlZmVyZW5jZU1hcmtlclN0eWxlIFJlZmluZSBSZWZsZWN0aW9uTWF0cml4IFJlZmxlY3Rpb25UcmFuc2Zvcm0gUmVmcmVzaCBSZWZyZXNoUmF0ZSBSZWdpb25CaW5hcml6ZSBSZWdpb25GdW5jdGlvbiBSZWdpb25QbG90IFJlZ2lvblBsb3QzRCBSZWd1bGFyRXhwcmVzc2lvbiBSZWd1bGFyaXphdGlvbiBSZWluc3RhbGwgUmVsZWFzZSBSZWxlYXNlSG9sZCBSZWxpYWJpbGl0eURpc3RyaWJ1dGlvbiBSZWxpZWZJbWFnZSBSZWxpZWZQbG90IFJlbW92ZSBSZW1vdmVBbHBoYUNoYW5uZWwgUmVtb3ZlQXN5bmNocm9ub3VzVGFzayBSZW1vdmVkIFJlbW92ZUlucHV0U3RyZWFtTWV0aG9kIFJlbW92ZU91dHB1dFN0cmVhbU1ldGhvZCBSZW1vdmVQcm9wZXJ0eSBSZW1vdmVTY2hlZHVsZWRUYXNrIFJlbmFtZURpcmVjdG9yeSBSZW5hbWVGaWxlIFJlbmRlckFsbCBSZW5kZXJpbmdPcHRpb25zIFJlbmV3YWxQcm9jZXNzIFJlbmtvQ2hhcnQgUmVwZWF0ZWQgUmVwZWF0ZWROdWxsIFJlcGVhdGVkU3RyaW5nIFJlcGxhY2UgUmVwbGFjZUFsbCBSZXBsYWNlSGVsZFBhcnQgUmVwbGFjZUltYWdlVmFsdWUgUmVwbGFjZUxpc3QgUmVwbGFjZVBhcnQgUmVwbGFjZVBpeGVsVmFsdWUgUmVwbGFjZVJlcGVhdGVkIFJlc2FtcGxpbmcgUmVzY2FsZSBSZXNjYWxpbmdUcmFuc2Zvcm0gUmVzZXREaXJlY3RvcnkgUmVzZXRNZW51c1BhY2tldCBSZXNldFNjaGVkdWxlZFRhc2sgUmVzaWR1ZSBSZXNvbHZlIFJlc3QgUmVzdWx0YW50IFJlc3VtZVBhY2tldCBSZXR1cm4gUmV0dXJuRXhwcmVzc2lvblBhY2tldCBSZXR1cm5JbnB1dEZvcm1QYWNrZXQgUmV0dXJuUGFja2V0IFJldHVyblRleHRQYWNrZXQgUmV2ZXJzZSBSZXZlcnNlQmlvcnRob2dvbmFsU3BsaW5lV2F2ZWxldCBSZXZlcnNlRWxlbWVudCBSZXZlcnNlRXF1aWxpYnJpdW0gUmV2ZXJzZUdyYXBoIFJldmVyc2VVcEVxdWlsaWJyaXVtIFJldm9sdXRpb25BeGlzIFJldm9sdXRpb25QbG90M0QgUkdCQ29sb3IgUmljY2F0aVNvbHZlIFJpY2VEaXN0cmlidXRpb24gUmlkZ2VGaWx0ZXIgUmllbWFublIgUmllbWFublNpZWdlbFRoZXRhIFJpZW1hbm5TaWVnZWxaIFJpZmZsZSBSaWdodCBSaWdodEFycm93IFJpZ2h0QXJyb3dCYXIgUmlnaHRBcnJvd0xlZnRBcnJvdyBSaWdodENvc2V0UmVwcmVzZW50YXRpdmUgUmlnaHREb3duVGVlVmVjdG9yIFJpZ2h0RG93blZlY3RvciBSaWdodERvd25WZWN0b3JCYXIgUmlnaHRUZWUgUmlnaHRUZWVBcnJvdyBSaWdodFRlZVZlY3RvciBSaWdodFRyaWFuZ2xlIFJpZ2h0VHJpYW5nbGVCYXIgUmlnaHRUcmlhbmdsZUVxdWFsIFJpZ2h0VXBEb3duVmVjdG9yIFJpZ2h0VXBUZWVWZWN0b3IgUmlnaHRVcFZlY3RvciBSaWdodFVwVmVjdG9yQmFyIFJpZ2h0VmVjdG9yIFJpZ2h0VmVjdG9yQmFyIFJpc2tBY2hpZXZlbWVudEltcG9ydGFuY2UgUmlza1JlZHVjdGlvbkltcG9ydGFuY2UgUm9nZXJzVGFuaW1vdG9EaXNzaW1pbGFyaXR5IFJvb3QgUm9vdEFwcHJveGltYW50IFJvb3RJbnRlcnZhbHMgUm9vdExvY3VzUGxvdCBSb290TWVhblNxdWFyZSBSb290T2ZVbml0eVEgUm9vdFJlZHVjZSBSb290cyBSb290U3VtIFJvdGF0ZSBSb3RhdGVMYWJlbCBSb3RhdGVMZWZ0IFJvdGF0ZVJpZ2h0IFJvdGF0aW9uQWN0aW9uIFJvdGF0aW9uQm94IFJvdGF0aW9uQm94T3B0aW9ucyBSb3RhdGlvbk1hdHJpeCBSb3RhdGlvblRyYW5zZm9ybSBSb3VuZCBSb3VuZEltcGxpZXMgUm91bmRpbmdSYWRpdXMgUm93IFJvd0FsaWdubWVudHMgUm93QmFja2dyb3VuZHMgUm93Qm94IFJvd0hlaWdodHMgUm93TGluZXMgUm93TWluSGVpZ2h0IFJvd1JlZHVjZSBSb3dzRXF1YWwgUm93U3BhY2luZ3MgUlNvbHZlIFJ1ZHZhbGlzR3JvdXBSdSBSdWxlIFJ1bGVDb25kaXRpb24gUnVsZURlbGF5ZWQgUnVsZUZvcm0gUnVsZXJVbml0cyBSdW4gUnVuU2NoZWR1bGVkVGFzayBSdW5UaHJvdWdoIFJ1bnRpbWVBdHRyaWJ1dGVzIFJ1bnRpbWVPcHRpb25zIFJ1c3NlbGxSYW9EaXNzaW1pbGFyaXR5ICcgK1xuICAgICAgJ1NhbWVRIFNhbWVUZXN0IFNhbXBsZURlcHRoIFNhbXBsZWRTb3VuZEZ1bmN0aW9uIFNhbXBsZWRTb3VuZExpc3QgU2FtcGxlUmF0ZSBTYW1wbGluZ1BlcmlvZCBTQVJJTUFQcm9jZXNzIFNBUk1BUHJvY2VzcyBTYXRpc2ZpYWJpbGl0eUNvdW50IFNhdGlzZmlhYmlsaXR5SW5zdGFuY2VzIFNhdGlzZmlhYmxlUSBTYXR1cmRheSBTYXZlIFNhdmVhYmxlIFNhdmVBdXRvRGVsZXRlIFNhdmVEZWZpbml0aW9ucyBTYXd0b290aFdhdmUgU2NhbGUgU2NhbGVkIFNjYWxlRGl2aXNpb25zIFNjYWxlZE1vdXNlUG9zaXRpb24gU2NhbGVPcmlnaW4gU2NhbGVQYWRkaW5nIFNjYWxlUmFuZ2VzIFNjYWxlUmFuZ2VTdHlsZSBTY2FsaW5nRnVuY3Rpb25zIFNjYWxpbmdNYXRyaXggU2NhbGluZ1RyYW5zZm9ybSBTY2FuIFNjaGVkdWxlZFRhc2tBY3RpdmVRIFNjaGVkdWxlZFRhc2tEYXRhIFNjaGVkdWxlZFRhc2tPYmplY3QgU2NoZWR1bGVkVGFza3MgU2NodXJEZWNvbXBvc2l0aW9uIFNjaWVudGlmaWNGb3JtIFNjcmVlblJlY3RhbmdsZSBTY3JlZW5TdHlsZUVudmlyb25tZW50IFNjcmlwdEJhc2VsaW5lU2hpZnRzIFNjcmlwdExldmVsIFNjcmlwdE1pblNpemUgU2NyaXB0UnVsZXMgU2NyaXB0U2l6ZU11bHRpcGxpZXJzIFNjcm9sbGJhcnMgU2Nyb2xsaW5nT3B0aW9ucyBTY3JvbGxQb3NpdGlvbiBTZWMgU2VjaCBTZWNoRGlzdHJpYnV0aW9uIFNlY3Rpb25Hcm91cGluZyBTZWN0b3JDaGFydCBTZWN0b3JDaGFydDNEIFNlY3Rvck9yaWdpbiBTZWN0b3JTcGFjaW5nIFNlZWRSYW5kb20gU2VsZWN0IFNlbGVjdGFibGUgU2VsZWN0Q29tcG9uZW50cyBTZWxlY3RlZENlbGxzIFNlbGVjdGVkTm90ZWJvb2sgU2VsZWN0aW9uIFNlbGVjdGlvbkFuaW1hdGUgU2VsZWN0aW9uQ2VsbCBTZWxlY3Rpb25DZWxsQ3JlYXRlQ2VsbCBTZWxlY3Rpb25DZWxsRGVmYXVsdFN0eWxlIFNlbGVjdGlvbkNlbGxQYXJlbnRTdHlsZSBTZWxlY3Rpb25DcmVhdGVDZWxsIFNlbGVjdGlvbkRlYnVnZ2VyVGFnIFNlbGVjdGlvbkR1cGxpY2F0ZUNlbGwgU2VsZWN0aW9uRXZhbHVhdGUgU2VsZWN0aW9uRXZhbHVhdGVDcmVhdGVDZWxsIFNlbGVjdGlvbk1vdmUgU2VsZWN0aW9uUGxhY2Vob2xkZXIgU2VsZWN0aW9uU2V0U3R5bGUgU2VsZWN0V2l0aENvbnRlbnRzIFNlbGZMb29wcyBTZWxmTG9vcFN0eWxlIFNlbWlhbGdlYnJhaWNDb21wb25lbnRJbnN0YW5jZXMgU2VuZE1haWwgU2VxdWVuY2UgU2VxdWVuY2VBbGlnbm1lbnQgU2VxdWVuY2VGb3JtIFNlcXVlbmNlSG9sZCBTZXF1ZW5jZUxpbWl0IFNlcmllcyBTZXJpZXNDb2VmZmljaWVudCBTZXJpZXNEYXRhIFNlc3Npb25UaW1lIFNldCBTZXRBY2N1cmFjeSBTZXRBbHBoYUNoYW5uZWwgU2V0QXR0cmlidXRlcyBTZXRiYWNrcyBTZXRCb3hGb3JtTmFtZXNQYWNrZXQgU2V0RGVsYXllZCBTZXREaXJlY3RvcnkgU2V0RW52aXJvbm1lbnQgU2V0RXZhbHVhdGlvbk5vdGVib29rIFNldEZpbGVEYXRlIFNldEZpbGVMb2FkaW5nQ29udGV4dCBTZXROb3RlYm9va1N0YXR1c0xpbmUgU2V0T3B0aW9ucyBTZXRPcHRpb25zUGFja2V0IFNldFByZWNpc2lvbiBTZXRQcm9wZXJ0eSBTZXRTZWxlY3RlZE5vdGVib29rIFNldFNoYXJlZEZ1bmN0aW9uIFNldFNoYXJlZFZhcmlhYmxlIFNldFNwZWVjaFBhcmFtZXRlcnNQYWNrZXQgU2V0U3RyZWFtUG9zaXRpb24gU2V0U3lzdGVtT3B0aW9ucyBTZXR0ZXIgU2V0dGVyQmFyIFNldHRlckJveCBTZXR0ZXJCb3hPcHRpb25zIFNldHRpbmcgU2V0VmFsdWUgU2hhZGluZyBTaGFsbG93IFNoYW5ub25XYXZlbGV0IFNoYXBpcm9XaWxrVGVzdCBTaGFyZSBTaGFycGVuIFNoZWFyaW5nTWF0cml4IFNoZWFyaW5nVHJhbnNmb3JtIFNoZW5DYXN0YW5NYXRyaXggU2hvcnQgU2hvcnREb3duQXJyb3cgU2hvcnRlc3QgU2hvcnRlc3RNYXRjaCBTaG9ydGVzdFBhdGhGdW5jdGlvbiBTaG9ydExlZnRBcnJvdyBTaG9ydFJpZ2h0QXJyb3cgU2hvcnRVcEFycm93IFNob3cgU2hvd0F1dG9TdHlsZXMgU2hvd0NlbGxCcmFja2V0IFNob3dDZWxsTGFiZWwgU2hvd0NlbGxUYWdzIFNob3dDbG9zZWRDZWxsQXJlYSBTaG93Q29udGVudHMgU2hvd0NvbnRyb2xzIFNob3dDdXJzb3JUcmFja2VyIFNob3dHcm91cE9wZW5DbG9zZUljb24gU2hvd0dyb3VwT3BlbmVyIFNob3dJbnZpc2libGVDaGFyYWN0ZXJzIFNob3dQYWdlQnJlYWtzIFNob3dQcmVkaWN0aXZlSW50ZXJmYWNlIFNob3dTZWxlY3Rpb24gU2hvd1Nob3J0Qm94Rm9ybSBTaG93U3BlY2lhbENoYXJhY3RlcnMgU2hvd1N0cmluZ0NoYXJhY3RlcnMgU2hvd1N5bnRheFN0eWxlcyBTaHJpbmtpbmdEZWxheSBTaHJpbmtXcmFwQm91bmRpbmdCb3ggU2llZ2VsVGhldGEgU2llZ2VsVHVrZXlUZXN0IFNpZ24gU2lnbmF0dXJlIFNpZ25lZFJhbmtUZXN0IFNpZ25pZmljYW5jZUxldmVsIFNpZ25QYWRkaW5nIFNpZ25UZXN0IFNpbWlsYXJpdHlSdWxlcyBTaW1wbGVHcmFwaCBTaW1wbGVHcmFwaFEgU2ltcGxpZnkgU2luIFNpbmMgU2luZ2hNYWRkYWxhRGlzdHJpYnV0aW9uIFNpbmdsZUV2YWx1YXRpb24gU2luZ2xlTGV0dGVySXRhbGljcyBTaW5nbGVMZXR0ZXJTdHlsZSBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiBTaW5ndWxhclZhbHVlTGlzdCBTaW5ndWxhclZhbHVlUGxvdCBTaW5ndWxhclZhbHVlcyBTaW5oIFNpbmhJbnRlZ3JhbCBTaW5JbnRlZ3JhbCBTaXhKU3ltYm9sIFNrZWxldG9uIFNrZWxldG9uVHJhbnNmb3JtIFNrZWxsYW1EaXN0cmlidXRpb24gU2tld25lc3MgU2tld05vcm1hbERpc3RyaWJ1dGlvbiBTa2lwIFNsaWNlRGlzdHJpYnV0aW9uIFNsaWRlciBTbGlkZXIyRCBTbGlkZXIyREJveCBTbGlkZXIyREJveE9wdGlvbnMgU2xpZGVyQm94IFNsaWRlckJveE9wdGlvbnMgU2xpZGVWaWV3IFNsb3QgU2xvdFNlcXVlbmNlIFNtYWxsIFNtYWxsQ2lyY2xlIFNtYWxsZXIgU21pdGhEZWxheUNvbXBlbnNhdG9yIFNtaXRoV2F0ZXJtYW5TaW1pbGFyaXR5ICcgK1xuICAgICAgJ1Ntb290aERlbnNpdHlIaXN0b2dyYW0gU21vb3RoSGlzdG9ncmFtIFNtb290aEhpc3RvZ3JhbTNEIFNtb290aEtlcm5lbERpc3RyaWJ1dGlvbiBTb2NpYWxNZWRpYURhdGEgU29ja2V0IFNva2FsU25lYXRoRGlzc2ltaWxhcml0eSBTb2x2ZSBTb2x2ZUFsd2F5cyBTb2x2ZURlbGF5ZWQgU29ydCBTb3J0QnkgU291bmQgU291bmRBbmRHcmFwaGljcyBTb3VuZE5vdGUgU291bmRWb2x1bWUgU293IFNwYWNlIFNwYWNlRm9ybSBTcGFjZXIgU3BhY2luZ3MgU3BhbiBTcGFuQWRqdXN0bWVudHMgU3BhbkNoYXJhY3RlclJvdW5kaW5nIFNwYW5Gcm9tQWJvdmUgU3BhbkZyb21Cb3RoIFNwYW5Gcm9tTGVmdCBTcGFuTGluZVRoaWNrbmVzcyBTcGFuTWF4U2l6ZSBTcGFuTWluU2l6ZSBTcGFubmluZ0NoYXJhY3RlcnMgU3BhblN5bW1ldHJpYyBTcGFyc2VBcnJheSBTcGF0aWFsR3JhcGhEaXN0cmlidXRpb24gU3BlYWsgU3BlYWtUZXh0UGFja2V0IFNwZWFybWFuUmFua1Rlc3QgU3BlYXJtYW5SaG8gU3BlY3Ryb2dyYW0gU3BlY3Ryb2dyYW1BcnJheSBTcGVjdWxhcml0eSBTcGVsbGluZ0NvcnJlY3Rpb24gU3BlbGxpbmdEaWN0aW9uYXJpZXMgU3BlbGxpbmdEaWN0aW9uYXJpZXNQYXRoIFNwZWxsaW5nT3B0aW9ucyBTcGVsbGluZ1N1Z2dlc3Rpb25zUGFja2V0IFNwaGVyZSBTcGhlcmVCb3ggU3BoZXJpY2FsQmVzc2VsSiBTcGhlcmljYWxCZXNzZWxZIFNwaGVyaWNhbEhhbmtlbEgxIFNwaGVyaWNhbEhhbmtlbEgyIFNwaGVyaWNhbEhhcm1vbmljWSBTcGhlcmljYWxQbG90M0QgU3BoZXJpY2FsUmVnaW9uIFNwaGVyb2lkYWxFaWdlbnZhbHVlIFNwaGVyb2lkYWxKb2luaW5nRmFjdG9yIFNwaGVyb2lkYWxQUyBTcGhlcm9pZGFsUFNQcmltZSBTcGhlcm9pZGFsUVMgU3BoZXJvaWRhbFFTUHJpbWUgU3BoZXJvaWRhbFJhZGlhbEZhY3RvciBTcGhlcm9pZGFsUzEgU3BoZXJvaWRhbFMxUHJpbWUgU3BoZXJvaWRhbFMyIFNwaGVyb2lkYWxTMlByaW1lIFNwbGljZSBTcGxpY2VkRGlzdHJpYnV0aW9uIFNwbGluZUNsb3NlZCBTcGxpbmVEZWdyZWUgU3BsaW5lS25vdHMgU3BsaW5lV2VpZ2h0cyBTcGxpdCBTcGxpdEJ5IFNwb2tlblN0cmluZyBTcXJ0IFNxcnRCb3ggU3FydEJveE9wdGlvbnMgU3F1YXJlIFNxdWFyZWRFdWNsaWRlYW5EaXN0YW5jZSBTcXVhcmVGcmVlUSBTcXVhcmVJbnRlcnNlY3Rpb24gU3F1YXJlc1IgU3F1YXJlU3Vic2V0IFNxdWFyZVN1YnNldEVxdWFsIFNxdWFyZVN1cGVyc2V0IFNxdWFyZVN1cGVyc2V0RXF1YWwgU3F1YXJlVW5pb24gU3F1YXJlV2F2ZSBTdGFiaWxpdHlNYXJnaW5zIFN0YWJpbGl0eU1hcmdpbnNTdHlsZSBTdGFibGVEaXN0cmlidXRpb24gU3RhY2sgU3RhY2tCZWdpbiBTdGFja0NvbXBsZXRlIFN0YWNrSW5oaWJpdCBTdGFuZGFyZERldmlhdGlvbiBTdGFuZGFyZERldmlhdGlvbkZpbHRlciBTdGFuZGFyZEZvcm0gU3RhbmRhcmRpemUgU3RhbmRieURpc3RyaWJ1dGlvbiBTdGFyIFN0YXJHcmFwaCBTdGFydEFzeW5jaHJvbm91c1Rhc2sgU3RhcnRpbmdTdGVwU2l6ZSBTdGFydE9mTGluZSBTdGFydE9mU3RyaW5nIFN0YXJ0U2NoZWR1bGVkVGFzayBTdGFydHVwU291bmQgU3RhdGVEaW1lbnNpb25zIFN0YXRlRmVlZGJhY2tHYWlucyBTdGF0ZU91dHB1dEVzdGltYXRvciBTdGF0ZVJlc3BvbnNlIFN0YXRlU3BhY2VNb2RlbCBTdGF0ZVNwYWNlUmVhbGl6YXRpb24gU3RhdGVTcGFjZVRyYW5zZm9ybSBTdGF0aW9uYXJ5RGlzdHJpYnV0aW9uIFN0YXRpb25hcnlXYXZlbGV0UGFja2V0VHJhbnNmb3JtIFN0YXRpb25hcnlXYXZlbGV0VHJhbnNmb3JtIFN0YXR1c0FyZWEgU3RhdHVzQ2VudHJhbGl0eSBTdGVwTW9uaXRvciBTdGllbHRqZXNHYW1tYSBTdGlybGluZ1MxIFN0aXJsaW5nUzIgU3RvcEFzeW5jaHJvbm91c1Rhc2sgU3RvcFNjaGVkdWxlZFRhc2sgU3RyYXRhVmFyaWFibGVzIFN0cmF0b25vdmljaFByb2Nlc3MgU3RyZWFtQ29sb3JGdW5jdGlvbiBTdHJlYW1Db2xvckZ1bmN0aW9uU2NhbGluZyBTdHJlYW1EZW5zaXR5UGxvdCBTdHJlYW1QbG90IFN0cmVhbVBvaW50cyBTdHJlYW1Qb3NpdGlvbiBTdHJlYW1zIFN0cmVhbVNjYWxlIFN0cmVhbVN0eWxlIFN0cmluZyBTdHJpbmdCcmVhayBTdHJpbmdCeXRlQ291bnQgU3RyaW5nQ2FzZXMgU3RyaW5nQ291bnQgU3RyaW5nRHJvcCBTdHJpbmdFeHByZXNzaW9uIFN0cmluZ0Zvcm0gU3RyaW5nRm9ybWF0IFN0cmluZ0ZyZWVRIFN0cmluZ0luc2VydCBTdHJpbmdKb2luIFN0cmluZ0xlbmd0aCBTdHJpbmdNYXRjaFEgU3RyaW5nUG9zaXRpb24gU3RyaW5nUSBTdHJpbmdSZXBsYWNlIFN0cmluZ1JlcGxhY2VMaXN0IFN0cmluZ1JlcGxhY2VQYXJ0IFN0cmluZ1JldmVyc2UgU3RyaW5nUm90YXRlTGVmdCBTdHJpbmdSb3RhdGVSaWdodCBTdHJpbmdTa2VsZXRvbiBTdHJpbmdTcGxpdCBTdHJpbmdUYWtlIFN0cmluZ1RvU3RyZWFtIFN0cmluZ1RyaW0gU3RyaXBCb3hlcyBTdHJpcE9uSW5wdXQgU3RyaXBXcmFwcGVyQm94ZXMgU3Ryb2tlRm9ybSBTdHJ1Y3R1cmFsSW1wb3J0YW5jZSBTdHJ1Y3R1cmVkQXJyYXkgU3RydWN0dXJlZFNlbGVjdGlvbiBTdHJ1dmVIIFN0cnV2ZUwgU3R1YiBTdHVkZW50VERpc3RyaWJ1dGlvbiBTdHlsZSBTdHlsZUJveCBTdHlsZUJveEF1dG9EZWxldGUgU3R5bGVCb3hPcHRpb25zIFN0eWxlRGF0YSBTdHlsZURlZmluaXRpb25zIFN0eWxlRm9ybSBTdHlsZUtleU1hcHBpbmcgU3R5bGVNZW51TGlzdGluZyBTdHlsZU5hbWVEaWFsb2dTZXR0aW5ncyBTdHlsZU5hbWVzIFN0eWxlUHJpbnQgU3R5bGVTaGVldFBhdGggU3ViZmFjdG9yaWFsIFN1YmdyYXBoIFN1Yk1pbnVzIFN1YlBsdXMgU3VicmVzdWx0YW50UG9seW5vbWlhbFJlbWFpbmRlcnMgJyArXG4gICAgICAnU3VicmVzdWx0YW50UG9seW5vbWlhbHMgU3VicmVzdWx0YW50cyBTdWJzY3JpcHQgU3Vic2NyaXB0Qm94IFN1YnNjcmlwdEJveE9wdGlvbnMgU3Vic2NyaXB0ZWQgU3Vic2V0IFN1YnNldEVxdWFsIFN1YnNldHMgU3ViU3RhciBTdWJzdXBlcnNjcmlwdCBTdWJzdXBlcnNjcmlwdEJveCBTdWJzdXBlcnNjcmlwdEJveE9wdGlvbnMgU3VidHJhY3QgU3VidHJhY3RGcm9tIFN1YlZhbHVlcyBTdWNjZWVkcyBTdWNjZWVkc0VxdWFsIFN1Y2NlZWRzU2xhbnRFcXVhbCBTdWNjZWVkc1RpbGRlIFN1Y2hUaGF0IFN1bSBTdW1Db252ZXJnZW5jZSBTdW5kYXkgU3VwZXJEYWdnZXIgU3VwZXJNaW51cyBTdXBlclBsdXMgU3VwZXJzY3JpcHQgU3VwZXJzY3JpcHRCb3ggU3VwZXJzY3JpcHRCb3hPcHRpb25zIFN1cGVyc2V0IFN1cGVyc2V0RXF1YWwgU3VwZXJTdGFyIFN1cmQgU3VyZEZvcm0gU3VyZmFjZUNvbG9yIFN1cmZhY2VHcmFwaGljcyBTdXJ2aXZhbERpc3RyaWJ1dGlvbiBTdXJ2aXZhbEZ1bmN0aW9uIFN1cnZpdmFsTW9kZWwgU3Vydml2YWxNb2RlbEZpdCBTdXNwZW5kUGFja2V0IFN1enVraURpc3RyaWJ1dGlvbiBTdXp1a2lHcm91cFN1eiBTd2F0Y2hMZWdlbmQgU3dpdGNoIFN5bWJvbCBTeW1ib2xOYW1lIFN5bWxldFdhdmVsZXQgU3ltbWV0cmljIFN5bW1ldHJpY0dyb3VwIFN5bW1ldHJpY01hdHJpeFEgU3ltbWV0cmljUG9seW5vbWlhbCBTeW1tZXRyaWNSZWR1Y3Rpb24gU3ltbWV0cml6ZSBTeW1tZXRyaXplZEFycmF5IFN5bW1ldHJpemVkQXJyYXlSdWxlcyBTeW1tZXRyaXplZERlcGVuZGVudENvbXBvbmVudHMgU3ltbWV0cml6ZWRJbmRlcGVuZGVudENvbXBvbmVudHMgU3ltbWV0cml6ZWRSZXBsYWNlUGFydCBTeW5jaHJvbm91c0luaXRpYWxpemF0aW9uIFN5bmNocm9ub3VzVXBkYXRpbmcgU3ludGF4IFN5bnRheEZvcm0gU3ludGF4SW5mb3JtYXRpb24gU3ludGF4TGVuZ3RoIFN5bnRheFBhY2tldCBTeW50YXhRIFN5c3RlbURpYWxvZ0lucHV0IFN5c3RlbUV4Y2VwdGlvbiBTeXN0ZW1IZWxwUGF0aCBTeXN0ZW1JbmZvcm1hdGlvbiBTeXN0ZW1JbmZvcm1hdGlvbkRhdGEgU3lzdGVtT3BlbiBTeXN0ZW1PcHRpb25zIFN5c3RlbXNNb2RlbERlbGF5IFN5c3RlbXNNb2RlbERlbGF5QXBwcm94aW1hdGUgU3lzdGVtc01vZGVsRGVsZXRlIFN5c3RlbXNNb2RlbERpbWVuc2lvbnMgU3lzdGVtc01vZGVsRXh0cmFjdCBTeXN0ZW1zTW9kZWxGZWVkYmFja0Nvbm5lY3QgU3lzdGVtc01vZGVsTGFiZWxzIFN5c3RlbXNNb2RlbE9yZGVyIFN5c3RlbXNNb2RlbFBhcmFsbGVsQ29ubmVjdCBTeXN0ZW1zTW9kZWxTZXJpZXNDb25uZWN0IFN5c3RlbXNNb2RlbFN0YXRlRmVlZGJhY2tDb25uZWN0IFN5c3RlbVN0dWIgJyArXG4gICAgICAnVGFiIFRhYkZpbGxpbmcgVGFibGUgVGFibGVBbGlnbm1lbnRzIFRhYmxlRGVwdGggVGFibGVEaXJlY3Rpb25zIFRhYmxlRm9ybSBUYWJsZUhlYWRpbmdzIFRhYmxlU3BhY2luZyBUYWJsZVZpZXcgVGFibGVWaWV3Qm94IFRhYlNwYWNpbmdzIFRhYlZpZXcgVGFiVmlld0JveCBUYWJWaWV3Qm94T3B0aW9ucyBUYWdCb3ggVGFnQm94Tm90ZSBUYWdCb3hPcHRpb25zIFRhZ2dpbmdSdWxlcyBUYWdTZXQgVGFnU2V0RGVsYXllZCBUYWdTdHlsZSBUYWdVbnNldCBUYWtlIFRha2VXaGlsZSBUYWxseSBUYW4gVGFuaCBUYXJnZXRGdW5jdGlvbnMgVGFyZ2V0VW5pdHMgVGF1dG9sb2d5USBUZWxlZ3JhcGhQcm9jZXNzIFRlbXBsYXRlQm94IFRlbXBsYXRlQm94T3B0aW9ucyBUZW1wbGF0ZVNsb3RTZXF1ZW5jZSBUZW1wb3JhbERhdGEgVGVtcG9yYXJ5IFRlbXBvcmFyeVZhcmlhYmxlIFRlbnNvckNvbnRyYWN0IFRlbnNvckRpbWVuc2lvbnMgVGVuc29yRXhwYW5kIFRlbnNvclByb2R1Y3QgVGVuc29yUSBUZW5zb3JSYW5rIFRlbnNvclJlZHVjZSBUZW5zb3JTeW1tZXRyeSBUZW5zb3JUcmFuc3Bvc2UgVGVuc29yV2VkZ2UgVGV0cmFoZWRyb24gVGV0cmFoZWRyb25Cb3ggVGV0cmFoZWRyb25Cb3hPcHRpb25zIFRlWEZvcm0gVGVYU2F2ZSBUZXh0IFRleHQzREJveCBUZXh0M0RCb3hPcHRpb25zIFRleHRBbGlnbm1lbnQgVGV4dEJhbmQgVGV4dEJvdW5kaW5nQm94IFRleHRCb3ggVGV4dENlbGwgVGV4dENsaXBib2FyZFR5cGUgVGV4dERhdGEgVGV4dEZvcm0gVGV4dEp1c3RpZmljYXRpb24gVGV4dExpbmUgVGV4dFBhY2tldCBUZXh0UGFyYWdyYXBoIFRleHRSZWNvZ25pemUgVGV4dFJlbmRlcmluZyBUZXh0U3R5bGUgVGV4dHVyZSBUZXh0dXJlQ29vcmRpbmF0ZUZ1bmN0aW9uIFRleHR1cmVDb29yZGluYXRlU2NhbGluZyBUaGVyZWZvcmUgVGhlcm1vbWV0ZXJHYXVnZSBUaGljayBUaGlja25lc3MgVGhpbiBUaGlubmluZyBUaGlzTGluayBUaG9tcHNvbkdyb3VwVGggVGhyZWFkIFRocmVlSlN5bWJvbCBUaHJlc2hvbGQgVGhyb3VnaCBUaHJvdyBUaHVtYm5haWwgVGh1cnNkYXkgVGlja3MgVGlja3NTdHlsZSBUaWxkZSBUaWxkZUVxdWFsIFRpbGRlRnVsbEVxdWFsIFRpbGRlVGlsZGUgVGltZUNvbnN0cmFpbmVkIFRpbWVDb25zdHJhaW50IFRpbWVzIFRpbWVzQnkgVGltZVNlcmllc0ZvcmVjYXN0IFRpbWVTZXJpZXNJbnZlcnRpYmlsaXR5IFRpbWVVc2VkIFRpbWVWYWx1ZSBUaW1lWm9uZSBUaW1pbmcgVGlueSBUaXRsZUdyb3VwaW5nIFRpdHNHcm91cFQgVG9Cb3hlcyBUb0NoYXJhY3RlckNvZGUgVG9Db2xvciBUb0NvbnRpbnVvdXNUaW1lTW9kZWwgVG9EYXRlIFRvRGlzY3JldGVUaW1lTW9kZWwgVG9lcGxpdHpNYXRyaXggVG9FeHByZXNzaW9uIFRvRmlsZU5hbWUgVG9nZXRoZXIgVG9nZ2xlIFRvZ2dsZUZhbHNlIFRvZ2dsZXIgVG9nZ2xlckJhciBUb2dnbGVyQm94IFRvZ2dsZXJCb3hPcHRpb25zIFRvSGVsZEV4cHJlc3Npb24gVG9JbnZlcnRpYmxlVGltZVNlcmllcyBUb2tlbldvcmRzIFRvbGVyYW5jZSBUb0xvd2VyQ2FzZSBUb051bWJlckZpZWxkIFRvb0JpZyBUb29sdGlwIFRvb2x0aXBCb3ggVG9vbHRpcEJveE9wdGlvbnMgVG9vbHRpcERlbGF5IFRvb2x0aXBTdHlsZSBUb3AgVG9wSGF0VHJhbnNmb3JtIFRvcG9sb2dpY2FsU29ydCBUb1JhZGljYWxzIFRvUnVsZXMgVG9TdHJpbmcgVG90YWwgVG90YWxIZWlnaHQgVG90YWxWYXJpYXRpb25GaWx0ZXIgVG90YWxXaWR0aCBUb3VjaHNjcmVlbkF1dG9ab29tIFRvdWNoc2NyZWVuQ29udHJvbFBsYWNlbWVudCBUb1VwcGVyQ2FzZSBUciBUcmFjZSBUcmFjZUFib3ZlIFRyYWNlQWN0aW9uIFRyYWNlQmFja3dhcmQgVHJhY2VEZXB0aCBUcmFjZURpYWxvZyBUcmFjZUZvcndhcmQgVHJhY2VJbnRlcm5hbCBUcmFjZUxldmVsIFRyYWNlT2ZmIFRyYWNlT24gVHJhY2VPcmlnaW5hbCBUcmFjZVByaW50IFRyYWNlU2NhbiBUcmFja2VkU3ltYm9scyBUcmFkaW5nQ2hhcnQgVHJhZGl0aW9uYWxGb3JtIFRyYWRpdGlvbmFsRnVuY3Rpb25Ob3RhdGlvbiBUcmFkaXRpb25hbE5vdGF0aW9uIFRyYWRpdGlvbmFsT3JkZXIgVHJhbnNmZXJGdW5jdGlvbkNhbmNlbCBUcmFuc2ZlckZ1bmN0aW9uRXhwYW5kIFRyYW5zZmVyRnVuY3Rpb25GYWN0b3IgVHJhbnNmZXJGdW5jdGlvbk1vZGVsIFRyYW5zZmVyRnVuY3Rpb25Qb2xlcyBUcmFuc2ZlckZ1bmN0aW9uVHJhbnNmb3JtIFRyYW5zZmVyRnVuY3Rpb25aZXJvcyBUcmFuc2Zvcm1hdGlvbkZ1bmN0aW9uIFRyYW5zZm9ybWF0aW9uRnVuY3Rpb25zIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWVkRGlzdHJpYnV0aW9uIFRyYW5zZm9ybWVkRmllbGQgVHJhbnNsYXRlIFRyYW5zbGF0aW9uVHJhbnNmb3JtIFRyYW5zcGFyZW50Q29sb3IgVHJhbnNwb3NlIFRyZWVGb3JtIFRyZWVHcmFwaCBUcmVlR3JhcGhRIFRyZWVQbG90IFRyZW5kU3R5bGUgVHJpYW5nbGVXYXZlIFRyaWFuZ3VsYXJEaXN0cmlidXRpb24gVHJpZyBUcmlnRXhwYW5kIFRyaWdGYWN0b3IgVHJpZ0ZhY3Rvckxpc3QgVHJpZ2dlciBUcmlnUmVkdWNlIFRyaWdUb0V4cCBUcmltbWVkTWVhbiBUcnVlIFRydWVRIFRydW5jYXRlZERpc3RyaWJ1dGlvbiBUc2FsbGlzUUV4cG9uZW50aWFsRGlzdHJpYnV0aW9uIFRzYWxsaXNRR2F1c3NpYW5EaXN0cmlidXRpb24gVFRlc3QgVHViZSBUdWJlQmV6aWVyQ3VydmVCb3ggVHViZUJlemllckN1cnZlQm94T3B0aW9ucyBUdWJlQm94IFR1YmVCU3BsaW5lQ3VydmVCb3ggVHViZUJTcGxpbmVDdXJ2ZUJveE9wdGlvbnMgVHVlc2RheSBUdWtleUxhbWJkYURpc3RyaWJ1dGlvbiBUdWtleVdpbmRvdyBUdXBsZXMgVHVyYW5HcmFwaCBUdXJpbmdNYWNoaW5lICcgK1xuICAgICAgJ1RyYW5zcGFyZW50ICcgK1xuICAgICAgJ1VuYXRlUSBVbmNvbXByZXNzIFVuZGVmaW5lZCBVbmRlckJhciBVbmRlcmZsb3cgVW5kZXJsaW5lZCBVbmRlcm92ZXJzY3JpcHQgVW5kZXJvdmVyc2NyaXB0Qm94IFVuZGVyb3ZlcnNjcmlwdEJveE9wdGlvbnMgVW5kZXJzY3JpcHQgVW5kZXJzY3JpcHRCb3ggVW5kZXJzY3JpcHRCb3hPcHRpb25zIFVuZGlyZWN0ZWRFZGdlIFVuZGlyZWN0ZWRHcmFwaCBVbmRpcmVjdGVkR3JhcGhRIFVuZG9jdW1lbnRlZFRlc3RGRVBhcnNlclBhY2tldCBVbmRvY3VtZW50ZWRUZXN0R2V0U2VsZWN0aW9uUGFja2V0IFVuZXF1YWwgVW5ldmFsdWF0ZWQgVW5pZm9ybURpc3RyaWJ1dGlvbiBVbmlmb3JtR3JhcGhEaXN0cmlidXRpb24gVW5pZm9ybVN1bURpc3RyaWJ1dGlvbiBVbmluc3RhbGwgVW5pb24gVW5pb25QbHVzIFVuaXF1ZSBVbml0Qm94IFVuaXRDb252ZXJ0IFVuaXREaW1lbnNpb25zIFVuaXRpemUgVW5pdFJvb3RUZXN0IFVuaXRTaW1wbGlmeSBVbml0U3RlcCBVbml0VHJpYW5nbGUgVW5pdFZlY3RvciBVbnByb3RlY3QgVW5zYW1lUSBVbnNhdmVkVmFyaWFibGVzIFVuc2V0IFVuc2V0U2hhcmVkIFVudHJhY2tlZFZhcmlhYmxlcyBVcCBVcEFycm93IFVwQXJyb3dCYXIgVXBBcnJvd0Rvd25BcnJvdyBVcGRhdGUgVXBkYXRlRHluYW1pY09iamVjdHMgVXBkYXRlRHluYW1pY09iamVjdHNTeW5jaHJvbm91cyBVcGRhdGVJbnRlcnZhbCBVcERvd25BcnJvdyBVcEVxdWlsaWJyaXVtIFVwcGVyQ2FzZVEgVXBwZXJMZWZ0QXJyb3cgVXBwZXJSaWdodEFycm93IFVwcGVyVHJpYW5ndWxhcml6ZSBVcHNhbXBsZSBVcFNldCBVcFNldERlbGF5ZWQgVXBUZWUgVXBUZWVBcnJvdyBVcFZhbHVlcyBVUkwgVVJMRmV0Y2ggVVJMRmV0Y2hBc3luY2hyb25vdXMgVVJMU2F2ZSBVUkxTYXZlQXN5bmNocm9ub3VzIFVzZUdyYXBoaWNzUmFuZ2UgVXNpbmcgVXNpbmdGcm9udEVuZCAnICtcbiAgICAgICdWMkdldCBWYWxpZGF0aW9uTGVuZ3RoIFZhbHVlIFZhbHVlQm94IFZhbHVlQm94T3B0aW9ucyBWYWx1ZUZvcm0gVmFsdWVRIFZhbHVlc0RhdGEgVmFyaWFibGVzIFZhcmlhbmNlIFZhcmlhbmNlRXF1aXZhbGVuY2VUZXN0IFZhcmlhbmNlRXN0aW1hdG9yRnVuY3Rpb24gVmFyaWFuY2VHYW1tYURpc3RyaWJ1dGlvbiBWYXJpYW5jZVRlc3QgVmVjdG9yQW5nbGUgVmVjdG9yQ29sb3JGdW5jdGlvbiBWZWN0b3JDb2xvckZ1bmN0aW9uU2NhbGluZyBWZWN0b3JEZW5zaXR5UGxvdCBWZWN0b3JHbHlwaERhdGEgVmVjdG9yUGxvdCBWZWN0b3JQbG90M0QgVmVjdG9yUG9pbnRzIFZlY3RvclEgVmVjdG9ycyBWZWN0b3JTY2FsZSBWZWN0b3JTdHlsZSBWZWUgVmVyYmF0aW0gVmVyYm9zZSBWZXJib3NlQ29udmVydFRvUG9zdFNjcmlwdFBhY2tldCBWZXJpZnlDb252ZXJnZW5jZSBWZXJpZnlTb2x1dGlvbnMgVmVyaWZ5VGVzdEFzc3VtcHRpb25zIFZlcnNpb24gVmVyc2lvbk51bWJlciBWZXJ0ZXhBZGQgVmVydGV4Q2FwYWNpdHkgVmVydGV4Q29sb3JzIFZlcnRleENvbXBvbmVudCBWZXJ0ZXhDb25uZWN0aXZpdHkgVmVydGV4Q29vcmRpbmF0ZVJ1bGVzIFZlcnRleENvb3JkaW5hdGVzIFZlcnRleENvcnJlbGF0aW9uU2ltaWxhcml0eSBWZXJ0ZXhDb3NpbmVTaW1pbGFyaXR5IFZlcnRleENvdW50IFZlcnRleENvdmVyUSBWZXJ0ZXhEYXRhQ29vcmRpbmF0ZXMgVmVydGV4RGVncmVlIFZlcnRleERlbGV0ZSBWZXJ0ZXhEaWNlU2ltaWxhcml0eSBWZXJ0ZXhFY2NlbnRyaWNpdHkgVmVydGV4SW5Db21wb25lbnQgVmVydGV4SW5EZWdyZWUgVmVydGV4SW5kZXggVmVydGV4SmFjY2FyZFNpbWlsYXJpdHkgVmVydGV4TGFiZWxpbmcgVmVydGV4TGFiZWxzIFZlcnRleExhYmVsU3R5bGUgVmVydGV4TGlzdCBWZXJ0ZXhOb3JtYWxzIFZlcnRleE91dENvbXBvbmVudCBWZXJ0ZXhPdXREZWdyZWUgVmVydGV4USBWZXJ0ZXhSZW5kZXJpbmdGdW5jdGlvbiBWZXJ0ZXhSZXBsYWNlIFZlcnRleFNoYXBlIFZlcnRleFNoYXBlRnVuY3Rpb24gVmVydGV4U2l6ZSBWZXJ0ZXhTdHlsZSBWZXJ0ZXhUZXh0dXJlQ29vcmRpbmF0ZXMgVmVydGV4V2VpZ2h0IFZlcnRpY2FsIFZlcnRpY2FsQmFyIFZlcnRpY2FsRm9ybSBWZXJ0aWNhbEdhdWdlIFZlcnRpY2FsU2VwYXJhdG9yIFZlcnRpY2FsU2xpZGVyIFZlcnRpY2FsVGlsZGUgVmlld0FuZ2xlIFZpZXdDZW50ZXIgVmlld01hdHJpeCBWaWV3UG9pbnQgVmlld1BvaW50U2VsZWN0b3JTZXR0aW5ncyBWaWV3UG9ydCBWaWV3UmFuZ2UgVmlld1ZlY3RvciBWaWV3VmVydGljYWwgVmlydHVhbEdyb3VwRGF0YSBWaXNpYmxlIFZpc2libGVDZWxsIFZvaWd0RGlzdHJpYnV0aW9uIFZvbk1pc2VzRGlzdHJpYnV0aW9uICcgK1xuICAgICAgJ1dhaXRBbGwgV2FpdEFzeW5jaHJvbm91c1Rhc2sgV2FpdE5leHQgV2FpdFVudGlsIFdha2VieURpc3RyaWJ1dGlvbiBXYWxsZW5pdXNIeXBlcmdlb21ldHJpY0Rpc3RyaWJ1dGlvbiBXYXJpbmdZdWxlRGlzdHJpYnV0aW9uIFdhdGVyc2hlZENvbXBvbmVudHMgV2F0c29uVVNxdWFyZVRlc3QgV2F0dHNTdHJvZ2F0ekdyYXBoRGlzdHJpYnV0aW9uIFdhdmVsZXRCZXN0QmFzaXMgV2F2ZWxldEZpbHRlckNvZWZmaWNpZW50cyBXYXZlbGV0SW1hZ2VQbG90IFdhdmVsZXRMaXN0UGxvdCBXYXZlbGV0TWFwSW5kZXhlZCBXYXZlbGV0TWF0cml4UGxvdCBXYXZlbGV0UGhpIFdhdmVsZXRQc2kgV2F2ZWxldFNjYWxlIFdhdmVsZXRTY2Fsb2dyYW0gV2F2ZWxldFRocmVzaG9sZCBXZWFrbHlDb25uZWN0ZWRDb21wb25lbnRzIFdlYWtseUNvbm5lY3RlZEdyYXBoUSBXZWFrU3RhdGlvbmFyaXR5IFdlYXRoZXJEYXRhIFdlYmVyRSBXZWRnZSBXZWRuZXNkYXkgV2VpYnVsbERpc3RyaWJ1dGlvbiBXZWllcnN0cmFzc0hhbGZQZXJpb2RzIFdlaWVyc3RyYXNzSW52YXJpYW50cyBXZWllcnN0cmFzc1AgV2VpZXJzdHJhc3NQUHJpbWUgV2VpZXJzdHJhc3NTaWdtYSBXZWllcnN0cmFzc1pldGEgV2VpZ2h0ZWRBZGphY2VuY3lHcmFwaCBXZWlnaHRlZEFkamFjZW5jeU1hdHJpeCBXZWlnaHRlZERhdGEgV2VpZ2h0ZWRHcmFwaFEgV2VpZ2h0cyBXZWxjaFdpbmRvdyBXaGVlbEdyYXBoIFdoZW5FdmVudCBXaGljaCBXaGlsZSBXaGl0ZSBXaGl0ZXNwYWNlIFdoaXRlc3BhY2VDaGFyYWN0ZXIgV2hpdHRha2VyTSBXaGl0dGFrZXJXIFdpZW5lckZpbHRlciBXaWVuZXJQcm9jZXNzIFdpZ25lckQgV2lnbmVyU2VtaWNpcmNsZURpc3RyaWJ1dGlvbiBXaWxrc1cgV2lsa3NXVGVzdCBXaW5kb3dDbGlja1NlbGVjdCBXaW5kb3dFbGVtZW50cyBXaW5kb3dGbG9hdGluZyBXaW5kb3dGcmFtZSBXaW5kb3dGcmFtZUVsZW1lbnRzIFdpbmRvd01hcmdpbnMgV2luZG93TW92YWJsZSBXaW5kb3dPcGFjaXR5IFdpbmRvd1NlbGVjdGVkIFdpbmRvd1NpemUgV2luZG93U3RhdHVzQXJlYSBXaW5kb3dUaXRsZSBXaW5kb3dUb29sYmFycyBXaW5kb3dXaWR0aCBXaXRoIFdvbGZyYW1BbHBoYSBXb2xmcmFtQWxwaGFEYXRlIFdvbGZyYW1BbHBoYVF1YW50aXR5IFdvbGZyYW1BbHBoYVJlc3VsdCBXb3JkIFdvcmRCb3VuZGFyeSBXb3JkQ2hhcmFjdGVyIFdvcmREYXRhIFdvcmRTZWFyY2ggV29yZFNlcGFyYXRvcnMgV29ya2luZ1ByZWNpc2lvbiBXcml0ZSBXcml0ZVN0cmluZyBXcm9uc2tpYW4gJyArXG4gICAgICAnWE1MRWxlbWVudCBYTUxPYmplY3QgWG5vciBYb3IgJyArXG4gICAgICAnWWVsbG93IFl1bGVEaXNzaW1pbGFyaXR5ICcgK1xuICAgICAgJ1plcm5pa2VSIFplcm9TeW1tZXRyaWMgWmVyb1Rlc3QgWmVyb1dpZHRoVGltZXMgWmV0YSBaZXRhWmVybyBaaXBmRGlzdHJpYnV0aW9uIFpUZXN0IFpUcmFuc2Zvcm0gJyArXG4gICAgICAnJEFib3J0ZWQgJEFjdGl2YXRpb25Hcm91cElEICRBY3RpdmF0aW9uS2V5ICRBY3RpdmF0aW9uVXNlclJlZ2lzdGVyZWQgJEFkZE9uc0RpcmVjdG9yeSAkQXNzZXJ0RnVuY3Rpb24gJEFzc3VtcHRpb25zICRBc3luY2hyb25vdXNUYXNrICRCYXNlRGlyZWN0b3J5ICRCYXRjaElucHV0ICRCYXRjaE91dHB1dCAkQm94Rm9ybXMgJEJ5dGVPcmRlcmluZyAkQ2FuY2VsZWQgJENoYXJhY3RlckVuY29kaW5nICRDaGFyYWN0ZXJFbmNvZGluZ3MgJENvbW1hbmRMaW5lICRDb21waWxhdGlvblRhcmdldCAkQ29uZGl0aW9uSG9sZCAkQ29uZmlndXJlZEtlcm5lbHMgJENvbnRleHQgJENvbnRleHRQYXRoICRDb250cm9sQWN0aXZlU2V0dGluZyAkQ3JlYXRpb25EYXRlICRDdXJyZW50TGluayAkRGF0ZVN0cmluZ0Zvcm1hdCAkRGVmYXVsdEZvbnQgJERlZmF1bHRGcm9udEVuZCAkRGVmYXVsdEltYWdpbmdEZXZpY2UgJERlZmF1bHRQYXRoICREaXNwbGF5ICREaXNwbGF5RnVuY3Rpb24gJERpc3RyaWJ1dGVkQ29udGV4dHMgJER5bmFtaWNFdmFsdWF0aW9uICRFY2hvICRFcGlsb2cgJEV4cG9ydEZvcm1hdHMgJEZhaWxlZCAkRmluYW5jaWFsRGF0YVNvdXJjZSAkRm9ybWF0VHlwZSAkRnJvbnRFbmQgJEZyb250RW5kU2Vzc2lvbiAkR2VvTG9jYXRpb24gJEhpc3RvcnlMZW5ndGggJEhvbWVEaXJlY3RvcnkgJEhUVFBDb29raWVzICRJZ25vcmVFT0YgJEltYWdpbmdEZXZpY2VzICRJbXBvcnRGb3JtYXRzICRJbml0aWFsRGlyZWN0b3J5ICRJbnB1dCAkSW5wdXRGaWxlTmFtZSAkSW5wdXRTdHJlYW1NZXRob2RzICRJbnNwZWN0b3IgJEluc3RhbGxhdGlvbkRhdGUgJEluc3RhbGxhdGlvbkRpcmVjdG9yeSAkSW50ZXJmYWNlRW52aXJvbm1lbnQgJEl0ZXJhdGlvbkxpbWl0ICRLZXJuZWxDb3VudCAkS2VybmVsSUQgJExhbmd1YWdlICRMYXVuY2hEaXJlY3RvcnkgJExpYnJhcnlQYXRoICRMaWNlbnNlRXhwaXJhdGlvbkRhdGUgJExpY2Vuc2VJRCAkTGljZW5zZVByb2Nlc3NlcyAkTGljZW5zZVNlcnZlciAkTGljZW5zZVN1YnByb2Nlc3NlcyAkTGljZW5zZVR5cGUgJExpbmUgJExpbmtlZCAkTGlua1N1cHBvcnRlZCAkTG9hZGVkRmlsZXMgJE1hY2hpbmVBZGRyZXNzZXMgJE1hY2hpbmVEb21haW4gJE1hY2hpbmVEb21haW5zICRNYWNoaW5lRXBzaWxvbiAkTWFjaGluZUlEICRNYWNoaW5lTmFtZSAkTWFjaGluZVByZWNpc2lvbiAkTWFjaGluZVR5cGUgJE1heEV4dHJhUHJlY2lzaW9uICRNYXhMaWNlbnNlUHJvY2Vzc2VzICRNYXhMaWNlbnNlU3VicHJvY2Vzc2VzICRNYXhNYWNoaW5lTnVtYmVyICRNYXhOdW1iZXIgJE1heFBpZWNld2lzZUNhc2VzICRNYXhQcmVjaXNpb24gJE1heFJvb3REZWdyZWUgJE1lc3NhZ2VHcm91cHMgJE1lc3NhZ2VMaXN0ICRNZXNzYWdlUHJlUHJpbnQgJE1lc3NhZ2VzICRNaW5NYWNoaW5lTnVtYmVyICRNaW5OdW1iZXIgJE1pbm9yUmVsZWFzZU51bWJlciAkTWluUHJlY2lzaW9uICRNb2R1bGVOdW1iZXIgJE5ldHdvcmtMaWNlbnNlICROZXdNZXNzYWdlICROZXdTeW1ib2wgJE5vdGVib29rcyAkTnVtYmVyTWFya3MgJE9mZiAkT3BlcmF0aW5nU3lzdGVtICRPdXRwdXQgJE91dHB1dEZvcm1zICRPdXRwdXRTaXplTGltaXQgJE91dHB1dFN0cmVhbU1ldGhvZHMgJFBhY2thZ2VzICRQYXJlbnRMaW5rICRQYXJlbnRQcm9jZXNzSUQgJFBhc3N3b3JkRmlsZSAkUGF0Y2hMZXZlbElEICRQYXRoICRQYXRobmFtZVNlcGFyYXRvciAkUGVyZm9ybWFuY2VHb2FsICRQaXBlU3VwcG9ydGVkICRQb3N0ICRQcmUgJFByZWZlcmVuY2VzRGlyZWN0b3J5ICRQcmVQcmludCAkUHJlUmVhZCAkUHJpbnRGb3JtcyAkUHJpbnRMaXRlcmFsICRQcm9jZXNzSUQgJFByb2Nlc3NvckNvdW50ICRQcm9jZXNzb3JUeXBlICRQcm9kdWN0SW5mb3JtYXRpb24gJFByb2dyYW1OYW1lICRSYW5kb21TdGF0ZSAkUmVjdXJzaW9uTGltaXQgJFJlbGVhc2VOdW1iZXIgJFJvb3REaXJlY3RvcnkgJFNjaGVkdWxlZFRhc2sgJFNjcmlwdENvbW1hbmRMaW5lICRTZXNzaW9uSUQgJFNldFBhcmVudExpbmsgJFNoYXJlZEZ1bmN0aW9ucyAkU2hhcmVkVmFyaWFibGVzICRTb3VuZERpc3BsYXkgJFNvdW5kRGlzcGxheUZ1bmN0aW9uICRTdXBwcmVzc0lucHV0Rm9ybUhlYWRzICRTeW5jaHJvbm91c0V2YWx1YXRpb24gJFN5bnRheEhhbmRsZXIgJFN5c3RlbSAkU3lzdGVtQ2hhcmFjdGVyRW5jb2RpbmcgJFN5c3RlbUlEICRTeXN0ZW1Xb3JkTGVuZ3RoICRUZW1wb3JhcnlEaXJlY3RvcnkgJFRlbXBvcmFyeVByZWZpeCAkVGV4dFN0eWxlICRUaW1lZE91dCAkVGltZVVuaXQgJFRpbWVab25lICRUb3BEaXJlY3RvcnkgJFRyYWNlT2ZmICRUcmFjZU9uICRUcmFjZVBhdHRlcm4gJFRyYWNlUG9zdEFjdGlvbiAkVHJhY2VQcmVBY3Rpb24gJFVyZ2VudCAkVXNlckFkZE9uc0RpcmVjdG9yeSAkVXNlckJhc2VEaXJlY3RvcnkgJFVzZXJEb2N1bWVudHNEaXJlY3RvcnkgJFVzZXJOYW1lICRWZXJzaW9uICRWZXJzaW9uTnVtYmVyJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46IC9cXChcXCovLCBlbmQ6IC9cXCpcXCkvXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXHsvLCBlbmQ6IC9cXH0vLFxuICAgICAgICBpbGxlZ2FsOiAvOi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ09NTU9OX0NPTlRBSU5TID0gW1xuICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIHtiZWdpbjogJ1xcJ1xcJyd9XVxuICAgIH1cbiAgXTtcbiAgdmFyIFRSQU5TUE9TRSA9IHtcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8nWydcXC5dKi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2JyZWFrIGNhc2UgY2F0Y2ggY2xhc3NkZWYgY29udGludWUgZWxzZSBlbHNlaWYgZW5kIGVudW1lcmF0ZWQgZXZlbnRzIGZvciBmdW5jdGlvbiAnICtcbiAgICAgICAgJ2dsb2JhbCBpZiBtZXRob2RzIG90aGVyd2lzZSBwYXJmb3IgcGVyc2lzdGVudCBwcm9wZXJ0aWVzIHJldHVybiBzcG1kIHN3aXRjaCB0cnkgd2hpbGUnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdzaW4gc2luZCBzaW5oIGFzaW4gYXNpbmQgYXNpbmggY29zIGNvc2QgY29zaCBhY29zIGFjb3NkIGFjb3NoIHRhbiB0YW5kIHRhbmggYXRhbiAnICtcbiAgICAgICAgJ2F0YW5kIGF0YW4yIGF0YW5oIHNlYyBzZWNkIHNlY2ggYXNlYyBhc2VjZCBhc2VjaCBjc2MgY3NjZCBjc2NoIGFjc2MgYWNzY2QgYWNzY2ggY290ICcgK1xuICAgICAgICAnY290ZCBjb3RoIGFjb3QgYWNvdGQgYWNvdGggaHlwb3QgZXhwIGV4cG0xIGxvZyBsb2cxcCBsb2cxMCBsb2cyIHBvdzIgcmVhbHBvdyByZWFsbG9nICcgK1xuICAgICAgICAncmVhbHNxcnQgc3FydCBudGhyb290IG5leHRwb3cyIGFicyBhbmdsZSBjb21wbGV4IGNvbmogaW1hZyByZWFsIHVud3JhcCBpc3JlYWwgJyArXG4gICAgICAgICdjcGx4cGFpciBmaXggZmxvb3IgY2VpbCByb3VuZCBtb2QgcmVtIHNpZ24gYWlyeSBiZXNzZWxqIGJlc3NlbHkgYmVzc2VsaCBiZXNzZWxpICcgK1xuICAgICAgICAnYmVzc2VsayBiZXRhIGJldGFpbmMgYmV0YWxuIGVsbGlwaiBlbGxpcGtlIGVyZiBlcmZjIGVyZmN4IGVyZmludiBleHBpbnQgZ2FtbWEgJyArXG4gICAgICAgICdnYW1tYWluYyBnYW1tYWxuIHBzaSBsZWdlbmRyZSBjcm9zcyBkb3QgZmFjdG9yIGlzcHJpbWUgcHJpbWVzIGdjZCBsY20gcmF0IHJhdHMgcGVybXMgJyArXG4gICAgICAgICduY2hvb3NlayBmYWN0b3JpYWwgY2FydDJzcGggY2FydDJwb2wgcG9sMmNhcnQgc3BoMmNhcnQgaHN2MnJnYiByZ2IyaHN2IHplcm9zIG9uZXMgJyArXG4gICAgICAgICdleWUgcmVwbWF0IHJhbmQgcmFuZG4gbGluc3BhY2UgbG9nc3BhY2UgZnJlcXNwYWNlIG1lc2hncmlkIGFjY3VtYXJyYXkgc2l6ZSBsZW5ndGggJyArXG4gICAgICAgICduZGltcyBudW1lbCBkaXNwIGlzZW1wdHkgaXNlcXVhbCBpc2VxdWFsd2l0aGVxdWFsbmFucyBjYXQgcmVzaGFwZSBkaWFnIGJsa2RpYWcgdHJpbCAnICtcbiAgICAgICAgJ3RyaXUgZmxpcGxyIGZsaXB1ZCBmbGlwZGltIHJvdDkwIGZpbmQgc3ViMmluZCBpbmQyc3ViIGJzeGZ1biBuZGdyaWQgcGVybXV0ZSBpcGVybXV0ZSAnICtcbiAgICAgICAgJ3NoaWZ0ZGltIGNpcmNzaGlmdCBzcXVlZXplIGlzc2NhbGFyIGlzdmVjdG9yIGFucyBlcHMgcmVhbG1heCByZWFsbWluIHBpIGkgaW5mIG5hbiAnICtcbiAgICAgICAgJ2lzbmFuIGlzaW5mIGlzZmluaXRlIGogd2h5IGNvbXBhbiBnYWxsZXJ5IGhhZGFtYXJkIGhhbmtlbCBoaWxiIGludmhpbGIgbWFnaWMgcGFzY2FsICcgK1xuICAgICAgICAncm9zc2VyIHRvZXBsaXR6IHZhbmRlciB3aWxraW5zb24nXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAnKC8vfFwifCN8L1xcXFwqfFxcXFxzKy9cXFxcdyspJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICB7YmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ30sXG4gICAgICAgICAgICAgIHtiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9bYS16QS1aX11bYS16QS1aXzAtOV0qJ1snXFwuXSovLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbjogL1thLXpBLVpfXVthLXpBLVpfMC05XSovLCByZWxldmFuY2U6IDB9LFxuICAgICAgICAgIFRSQU5TUE9TRS5jb250YWluc1swXVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgICAgICBjb250YWluczogQ09NTU9OX0NPTlRBSU5TLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHN0YXJ0czogVFJBTlNQT1NFXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFx7JywgZW5kOiAvfS8sXG4gICAgICAgIGNvbnRhaW5zOiBDT01NT05fQ09OVEFJTlMsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgc3RhcnRzOiBUUkFOU1BPU0VcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRyYW5zcG9zZSBvcGVyYXRvcnMgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNhbGxcbiAgICAgICAgYmVnaW46IC9cXCkvLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHN0YXJ0czogVFJBTlNQT1NFXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXHMqXFxcXCVcXFxce1xcXFxzKiQnLCAnXlxcXFxzKlxcXFwlXFxcXH1cXFxccyokJyksXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwlJywgJyQnKVxuICAgIF0uY29uY2F0KENPTU1PTl9DT05UQUlOUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9ICdpZiB0aGVuIGVsc2UgZWxzZWlmIGZvciB0aHJ1IGRvIHdoaWxlIHVubGVzcyBzdGVwIGluIGFuZCBvciBub3QnO1xuICB2YXIgTElURVJBTFMgPSAndHJ1ZSBmYWxzZSB1bmtub3duIGluZiBtaW5mIGluZCB1bmQgJWUgJWkgJXBpICVwaGkgJWdhbW1hJztcbiAgdmFyIEJVSUxUSU5fRlVOQ1RJT05TID1cbiAgICAgICAgJyBhYmFzZXAgYWJzIGFic2ludCBhYnNvbHV0ZV9yZWFsX3RpbWUgYWNvcyBhY29zaCBhY290IGFjb3RoIGFjc2MgYWNzY2ggYWN0aXZhdGUnXG4gICAgICArICcgYWRkY29sIGFkZF9lZGdlIGFkZF9lZGdlcyBhZGRtYXRyaWNlcyBhZGRyb3cgYWRkX3ZlcnRleCBhZGRfdmVydGljZXMgYWRqYWNlbmN5X21hdHJpeCdcbiAgICAgICsgJyBhZGpvaW4gYWRqb2ludCBhZiBhZ2QgYWlyeSBhaXJ5X2FpIGFpcnlfYmkgYWlyeV9kYWkgYWlyeV9kYmkgYWxnc3lzIGFsZ190eXBlJ1xuICAgICAgKyAnIGFsaWFzIGFsbHJvb3RzIGFscGhhY2hhcnAgYWxwaGFudW1lcmljcCBhbW9ydGl6YXRpb24gJWFuZCBhbm51aXR5X2Z2J1xuICAgICAgKyAnIGFubnVpdHlfcHYgYW50aWQgYW50aWRpZmYgQW50aURpZmZlcmVuY2UgYXBwZW5kIGFwcGVuZGZpbGUgYXBwbHkgYXBwbHkxIGFwcGx5MidcbiAgICAgICsgJyBhcHBseWIxIGFwcm9wb3MgYXJncyBhcml0X2Ftb3J0aXphdGlvbiBhcml0aG1ldGljIGFyaXRoc3VtIGFycmF5IGFycmF5YXBwbHknXG4gICAgICArICcgYXJyYXlpbmZvIGFycmF5bWFrZSBhcnJheXNldGFwcGx5IGFzY2lpIGFzZWMgYXNlY2ggYXNpbiBhc2luaCBhc2tpbnRlZ2VyJ1xuICAgICAgKyAnIGFza3NpZ24gYXNzb2MgYXNzb2NfbGVnZW5kcmVfcCBhc3NvY19sZWdlbmRyZV9xIGFzc3VtZSBhc3N1bWVfZXh0ZXJuYWxfYnl0ZV9vcmRlcidcbiAgICAgICsgJyBhc3ltcGEgYXQgYXRhbiBhdGFuMiBhdGFuaCBhdGVuc2ltcCBhdG9tIGF0dmFsdWUgYXVnY29lZm1hdHJpeCBhdWdtZW50ZWRfbGFncmFuZ2lhbl9tZXRob2QnXG4gICAgICArICcgYXYgYXZlcmFnZV9kZWdyZWUgYmFja3RyYWNlIGJhcnMgYmFyc3Bsb3QgYmFyc3Bsb3RfZGVzY3JpcHRpb24gYmFzZTY0IGJhc2U2NF9kZWNvZGUnXG4gICAgICArICcgYmFzaGluZGljZXMgYmF0Y2ggYmF0Y2hsb2FkIGJjMiBiZHZhYyBiZWxsbiBiZW5lZml0X2Nvc3QgYmVybiBiZXJucG9seSBiZXJuc3RlaW5fYXBwcm94J1xuICAgICAgKyAnIGJlcm5zdGVpbl9leHBhbmQgYmVybnN0ZWluX3BvbHkgYmVzc2VsIGJlc3NlbF9pIGJlc3NlbF9qIGJlc3NlbF9rIGJlc3NlbF9zaW1wbGlmeSdcbiAgICAgICsgJyBiZXNzZWxfeSBiZXRhIGJldGFfaW5jb21wbGV0ZSBiZXRhX2luY29tcGxldGVfZ2VuZXJhbGl6ZWQgYmV0YV9pbmNvbXBsZXRlX3JlZ3VsYXJpemVkJ1xuICAgICAgKyAnIGJlem91dCBiZmFsbHJvb3RzIGJmZmFjIGJmX2ZpbmRfcm9vdCBiZl9mbWluX2NvYnlsYSBiZmh6ZXRhIGJmbG9hdCBiZmxvYXRwJ1xuICAgICAgKyAnIGJmcHNpIGJmcHNpMCBiZnpldGEgYmljb25uZWN0ZWRfY29tcG9uZW50cyBiaW1ldHJpYyBiaW5vbWlhbCBiaXBhcnRpdGlvbidcbiAgICAgICsgJyBibG9jayBibG9ja21hdHJpeHAgYm9kZV9nYWluIGJvZGVfcGhhc2UgYm90aGNvZWYgYm94IGJveHBsb3QgYm94cGxvdF9kZXNjcmlwdGlvbidcbiAgICAgICsgJyBicmVhayBidWdfcmVwb3J0IGJ1aWxkX2luZm98MTAgYnVpbGRxIGJ1aWxkX3NhbXBsZSBidXJuIGNhYnMgY2FuZm9ybSBjYW50ZW4nXG4gICAgICArICcgY2FyZGluYWxpdHkgY2FyZyBjYXJ0YW4gY2FydGVzaWFuX3Byb2R1Y3QgY2F0Y2ggY2F1Y2h5X21hdHJpeCBjYmZmYWMgY2RmX2Jlcm5vdWxsaSdcbiAgICAgICsgJyBjZGZfYmV0YSBjZGZfYmlub21pYWwgY2RmX2NhdWNoeSBjZGZfY2hpMiBjZGZfY29udGludW91c191bmlmb3JtIGNkZl9kaXNjcmV0ZV91bmlmb3JtJ1xuICAgICAgKyAnIGNkZl9leHAgY2RmX2YgY2RmX2dhbW1hIGNkZl9nZW5lcmFsX2Zpbml0ZV9kaXNjcmV0ZSBjZGZfZ2VvbWV0cmljIGNkZl9ndW1iZWwnXG4gICAgICArICcgY2RmX2h5cGVyZ2VvbWV0cmljIGNkZl9sYXBsYWNlIGNkZl9sb2dpc3RpYyBjZGZfbG9nbm9ybWFsIGNkZl9uZWdhdGl2ZV9iaW5vbWlhbCdcbiAgICAgICsgJyBjZGZfbm9uY2VudHJhbF9jaGkyIGNkZl9ub25jZW50cmFsX3N0dWRlbnRfdCBjZGZfbm9ybWFsIGNkZl9wYXJldG8gY2RmX3BvaXNzb24nXG4gICAgICArICcgY2RmX3Jhbmtfc3VtIGNkZl9yYXlsZWlnaCBjZGZfc2lnbmVkX3JhbmsgY2RmX3N0dWRlbnRfdCBjZGZfd2VpYnVsbCBjZGlzcGxheSdcbiAgICAgICsgJyBjZWlsaW5nIGNlbnRyYWxfbW9tZW50IGNlcXVhbCBjZXF1YWxpZ25vcmUgY2YgY2ZkaXNyZXAgY2ZleHBhbmQgY2dlb2Rlc2ljJ1xuICAgICAgKyAnIGNncmVhdGVycCBjZ3JlYXRlcnBpZ25vcmUgY2hhbmdlbmFtZSBjaGFuZ2V2YXIgY2hhb3NnYW1lIGNoYXJhdCBjaGFyZnVuIGNoYXJmdW4yJ1xuICAgICAgKyAnIGNoYXJsaXN0IGNoYXJwIGNoYXJwb2x5IGNoZGlyIGNoZWJ5c2hldl90IGNoZWJ5c2hldl91IGNoZWNrZGl2IGNoZWNrX292ZXJsYXBzJ1xuICAgICAgKyAnIGNoaW5lc2UgY2hvbGVza3kgY2hyaXN0b2YgY2hyb21hdGljX2luZGV4IGNocm9tYXRpY19udW1iZXIgY2ludCBjaXJjdWxhbnRfZ3JhcGgnXG4gICAgICArICcgY2xlYXJfZWRnZV93ZWlnaHQgY2xlYXJfcnVsZXMgY2xlYXJfdmVydGV4X2xhYmVsIGNsZWJzY2hfZ29yZGFuIGNsZWJzY2hfZ3JhcGgnXG4gICAgICArICcgY2xlc3NwIGNsZXNzcGlnbm9yZSBjbG9zZSBjbG9zZWZpbGUgY21ldHJpYyBjb2VmZiBjb2VmbWF0cml4IGNvZ3JhZCBjb2wgY29sbGFwc2UnXG4gICAgICArICcgY29sbGVjdHRlcm1zIGNvbHVtbm9wIGNvbHVtbnNwYWNlIGNvbHVtbnN3YXAgY29sdW1udmVjdG9yIGNvbWJpbmF0aW9uIGNvbWJpbmUnXG4gICAgICArICcgY29tcDJwdWkgY29tcGFyZSBjb21wZmlsZSBjb21waWxlIGNvbXBpbGVfZmlsZSBjb21wbGVtZW50X2dyYXBoIGNvbXBsZXRlX2JpcGFydGl0ZV9ncmFwaCdcbiAgICAgICsgJyBjb21wbGV0ZV9ncmFwaCBjb21wbGV4X251bWJlcl9wIGNvbXBvbmVudHMgY29tcG9zZV9mdW5jdGlvbnMgY29uY2FuIGNvbmNhdCdcbiAgICAgICsgJyBjb25qdWdhdGUgY29ubWV0ZGVyaXYgY29ubmVjdGVkX2NvbXBvbmVudHMgY29ubmVjdF92ZXJ0aWNlcyBjb25zIGNvbnN0YW50J1xuICAgICAgKyAnIGNvbnN0YW50cCBjb25zdGl0dWVudCBjb25zdHZhbHVlIGNvbnQycGFydCBjb250ZW50IGNvbnRpbnVvdXNfZnJlcSBjb250b3J0aW9uJ1xuICAgICAgKyAnIGNvbnRvdXJfcGxvdCBjb250cmFjdCBjb250cmFjdF9lZGdlIGNvbnRyYWdyYWQgY29udHJpYl9vZGUgY29udmVydCBjb29yZCdcbiAgICAgICsgJyBjb3B5IGNvcHlfZmlsZSBjb3B5X2dyYXBoIGNvcHlsaXN0IGNvcHltYXRyaXggY29yIGNvcyBjb3NoIGNvdCBjb3RoIGNvdiBjb3YxJ1xuICAgICAgKyAnIGNvdmRpZmYgY292ZWN0IGNvdmVycyBjcmMyNHN1bSBjcmVhdGVfZ3JhcGggY3JlYXRlX2xpc3QgY3NjIGNzY2ggY3NldHVwIGNzcGxpbmUnXG4gICAgICArICcgY3RheWxvciBjdF9jb29yZHN5cyBjdHJhbnNmb3JtIGN0cmFuc3Bvc2UgY3ViZV9ncmFwaCBjdWJvY3RhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIGN1bmxpc3AgY3YgY3ljbGVfZGlncmFwaCBjeWNsZV9ncmFwaCBjeWxpbmRyaWNhbCBkYXlzMzYwIGRibGludCBkZWFjdGl2YXRlJ1xuICAgICAgKyAnIGRlY2xhcmUgZGVjbGFyZV9jb25zdHZhbHVlIGRlY2xhcmVfZGltZW5zaW9ucyBkZWNsYXJlX2Z1bmRhbWVudGFsX2RpbWVuc2lvbnMnXG4gICAgICArICcgZGVjbGFyZV9mdW5kYW1lbnRhbF91bml0cyBkZWNsYXJlX3F0eSBkZWNsYXJlX3RyYW5zbGF0ZWQgZGVjbGFyZV91bml0X2NvbnZlcnNpb24nXG4gICAgICArICcgZGVjbGFyZV91bml0cyBkZWNsYXJlX3dlaWdodHMgZGVjc3ltIGRlZmNvbiBkZWZpbmUgZGVmaW5lX2FsdF9kaXNwbGF5IGRlZmluZV92YXJpYWJsZSdcbiAgICAgICsgJyBkZWZpbnQgZGVmbWF0Y2ggZGVmcnVsZSBkZWZzdHJ1Y3QgZGVmdGF5bG9yIGRlZ3JlZV9zZXF1ZW5jZSBkZWwgZGVsZXRlIGRlbGV0ZW4nXG4gICAgICArICcgZGVsdGEgZGVtbyBkZW1vaXZyZSBkZW5vbSBkZXBlbmRzIGRlcml2ZGVncmVlIGRlcml2bGlzdCBkZXNjcmliZSBkZXNvbHZlJ1xuICAgICAgKyAnIGRldGVybWluYW50IGRmbG9hdCBkZ2F1c3NfYSBkZ2F1c3NfYiBkZ2VldiBkZ2VtbSBkZ2VxcmYgZGdlc3YgZGdlc3ZkIGRpYWcnXG4gICAgICArICcgZGlhZ21hdHJpeCBkaWFnX21hdHJpeCBkaWFnbWF0cml4cCBkaWFtZXRlciBkaWZmIGRpZ2l0Y2hhcnAgZGltYWNzX2V4cG9ydCdcbiAgICAgICsgJyBkaW1hY3NfaW1wb3J0IGRpbWVuc2lvbiBkaW1lbnNpb25sZXNzIGRpbWVuc2lvbnMgZGltZW5zaW9uc19hc19saXN0IGRpcmVjdCdcbiAgICAgICsgJyBkaXJlY3RvcnkgZGlzY3JldGVfZnJlcSBkaXNqb2luIGRpc2pvaW50cCBkaXNvbGF0ZSBkaXNwIGRpc3Bjb24gZGlzcGZvcm0nXG4gICAgICArICcgZGlzcGZ1biBkaXNwSm9yZGFuIGRpc3BsYXkgZGlzcHJ1bGUgZGlzcHRlcm1zIGRpc3RyaWIgZGl2aWRlIGRpdmlzb3JzIGRpdnN1bSdcbiAgICAgICsgJyBka3VtbWVyX20gZGt1bW1lcl91IGRsYW5nZSBkb2RlY2FoZWRyb25fZ3JhcGggZG90cHJvZHVjdCBkb3RzaW1wIGRwYXJ0J1xuICAgICAgKyAnIGRyYXcgZHJhdzJkIGRyYXczZCBkcmF3ZGYgZHJhd19maWxlIGRyYXdfZ3JhcGggZHNjYWxhciBlY2hlbG9uIGVkZ2VfY29sb3JpbmcnXG4gICAgICArICcgZWRnZV9jb25uZWN0aXZpdHkgZWRnZXMgZWlnZW5zX2J5X2phY29iaSBlaWdlbnZhbHVlcyBlaWdlbnZlY3RvcnMgZWlnaHRoJ1xuICAgICAgKyAnIGVpbnN0ZWluIGVpdmFscyBlaXZlY3RzIGVsYXBzZWRfcmVhbF90aW1lIGVsYXBzZWRfcnVuX3RpbWUgZWxlMmNvbXAgZWxlMnBvbHlub21lJ1xuICAgICAgKyAnIGVsZTJwdWkgZWxlbSBlbGVtZW50cCBlbGV2YXRpb25fZ3JpZCBlbGltIGVsaW1fYWxsYnV0IGVsaW1pbmF0ZSBlbGltaW5hdGVfdXNpbmcnXG4gICAgICArICcgZWxsaXBzZSBlbGxpcHRpY19lIGVsbGlwdGljX2VjIGVsbGlwdGljX2V1IGVsbGlwdGljX2YgZWxsaXB0aWNfa2MgZWxsaXB0aWNfcGknXG4gICAgICArICcgZW1hdHJpeCBlbXB0eV9ncmFwaCBlbXB0eXAgZW5kY29ucyBlbnRlcm1hdHJpeCBlbnRlcnRlbnNvciBlbnRpZXIgZXF1YWwgZXF1YWxwJ1xuICAgICAgKyAnIGVxdWl2X2NsYXNzZXMgZXJmIGVyZmMgZXJmX2dlbmVyYWxpemVkIGVyZmkgZXJyY2F0Y2ggZXJyb3IgZXJyb3Jtc2cgZXJyb3JzJ1xuICAgICAgKyAnIGV1bGVyIGV2IGV2YWxfc3RyaW5nIGV2ZW5wIGV2ZXJ5IGV2b2x1dGlvbiBldm9sdXRpb24yZCBldnVuZGlmZiBleGFtcGxlIGV4cCdcbiAgICAgICsgJyBleHBhbmQgZXhwYW5kd3J0IGV4cGFuZHdydF9mYWN0b3JlZCBleHBpbnQgZXhwaW50ZWdyYWxfY2hpIGV4cGludGVncmFsX2NpJ1xuICAgICAgKyAnIGV4cGludGVncmFsX2UgZXhwaW50ZWdyYWxfZTEgZXhwaW50ZWdyYWxfZWkgZXhwaW50ZWdyYWxfZV9zaW1wbGlmeSBleHBpbnRlZ3JhbF9saSdcbiAgICAgICsgJyBleHBpbnRlZ3JhbF9zaGkgZXhwaW50ZWdyYWxfc2kgZXhwbGljaXQgZXhwbG9zZSBleHBvbmVudGlhbGl6ZSBleHByZXNzIGV4cHQnXG4gICAgICArICcgZXhzZWMgZXh0ZGlmZiBleHRyYWN0X2xpbmVhcl9lcXVhdGlvbnMgZXh0cmVtYWxfc3Vic2V0IGV6Z2NkICVmIGY5MCBmYWNzdW0nXG4gICAgICArICcgZmFjdGNvbWIgZmFjdG9yIGZhY3RvcmZhY3N1bSBmYWN0b3JpYWwgZmFjdG9yb3V0IGZhY3RvcnN1bSBmYWN0cyBmYXN0X2NlbnRyYWxfZWxlbWVudHMnXG4gICAgICArICcgZmFzdF9saW5zb2x2ZSBmYXN0dGltZXMgZmVhdHVyZXAgZmVybmZhbGUgZmZ0IGZpYiBmaWJ0b3BoaSBmaWZ0aCBmaWxlbmFtZV9tZXJnZSdcbiAgICAgICsgJyBmaWxlX3NlYXJjaCBmaWxlX3R5cGUgZmlsbGFycmF5IGZpbmRkZSBmaW5kX3Jvb3QgZmluZF9yb290X2FicyBmaW5kX3Jvb3RfZXJyb3InXG4gICAgICArICcgZmluZF9yb290X3JlbCBmaXJzdCBmaXggZmxhdHRlbiBmbGVuZ3RoIGZsb2F0IGZsb2F0bnVtcCBmbG9vciBmbG93ZXJfc25hcmsnXG4gICAgICArICcgZmx1c2ggZmx1c2gxZGVyaXYgZmx1c2hkIGZsdXNobmQgZmx1c2hfb3V0cHV0IGZtaW5fY29ieWxhIGZvcmdldCBmb3J0cmFuJ1xuICAgICAgKyAnIGZvdXJjb3MgZm91cmV4cGFuZCBmb3VyaWVyIGZvdXJpZXJfZWxpbSBmb3VyaW50IGZvdXJpbnRjb3MgZm91cmludHNpbiBmb3Vyc2ltcCdcbiAgICAgICsgJyBmb3Vyc2luIGZvdXJ0aCBmcG9zaXRpb24gZnJhbWVfYnJhY2tldCBmcmVlb2YgZnJlc2hsaW5lIGZyZXNuZWxfYyBmcmVzbmVsX3MnXG4gICAgICArICcgZnJvbV9hZGphY2VuY3lfbWF0cml4IGZydWNodF9ncmFwaCBmdWxsX2xpc3RpZnkgZnVsbG1hcCBmdWxsbWFwbCBmdWxscmF0c2ltcCdcbiAgICAgICsgJyBmdWxscmF0c3Vic3QgZnVsbHNldGlmeSBmdW5jc29sdmUgZnVuZGFtZW50YWxfZGltZW5zaW9ucyBmdW5kYW1lbnRhbF91bml0cydcbiAgICAgICsgJyBmdW5kZWYgZnVubWFrZSBmdW5wIGZ2IGcwIGcxIGdhbW1hIGdhbW1hX2dyZWVrIGdhbW1hX2luY29tcGxldGUgZ2FtbWFfaW5jb21wbGV0ZV9nZW5lcmFsaXplZCdcbiAgICAgICsgJyBnYW1tYV9pbmNvbXBsZXRlX3JlZ3VsYXJpemVkIGdhdXNzIGdhdXNzX2EgZ2F1c3NfYiBnYXVzc3Byb2IgZ2NkIGdjZGV4IGdjZGl2aWRlJ1xuICAgICAgKyAnIGdjZmFjIGdjZmFjdG9yIGdkIGdlbmVyYWxpemVkX2xhbWJlcnRfdyBnZW5mYWN0IGdlbl9sYWd1ZXJyZSBnZW5tYXRyaXggZ2Vuc3ltJ1xuICAgICAgKyAnIGdlb19hbW9ydGl6YXRpb24gZ2VvX2FubnVpdHlfZnYgZ2VvX2FubnVpdHlfcHYgZ2VvbWFwIGdlb21ldHJpYyBnZW9tZXRyaWNfbWVhbidcbiAgICAgICsgJyBnZW9zdW0gZ2V0IGdldGN1cnJlbnRkaXJlY3RvcnkgZ2V0X2VkZ2Vfd2VpZ2h0IGdldGVudiBnZXRfbHVfZmFjdG9ycyBnZXRfb3V0cHV0X3N0cmVhbV9zdHJpbmcnXG4gICAgICArICcgZ2V0X3BpeGVsIGdldF9wbG90X29wdGlvbiBnZXRfdGV4X2Vudmlyb25tZW50IGdldF90ZXhfZW52aXJvbm1lbnRfZGVmYXVsdCdcbiAgICAgICsgJyBnZXRfdmVydGV4X2xhYmVsIGdmYWN0b3IgZ2ZhY3RvcnN1bSBnZ2YgZ2lydGggZ2xvYmFsX3ZhcmlhbmNlcyBnbiBnbnVwbG90X2Nsb3NlJ1xuICAgICAgKyAnIGdudXBsb3RfcmVwbG90IGdudXBsb3RfcmVzZXQgZ251cGxvdF9yZXN0YXJ0IGdudXBsb3Rfc3RhcnQgZ28gR29zcGVyIEdvc3BlclN1bSdcbiAgICAgICsgJyBncjJkIGdyM2QgZ3JhZGVmIGdyYW1zY2htaWR0IGdyYXBoNl9kZWNvZGUgZ3JhcGg2X2VuY29kZSBncmFwaDZfZXhwb3J0IGdyYXBoNl9pbXBvcnQnXG4gICAgICArICcgZ3JhcGhfY2VudGVyIGdyYXBoX2NoYXJwb2x5IGdyYXBoX2VpZ2VudmFsdWVzIGdyYXBoX2Zsb3cgZ3JhcGhfb3JkZXIgZ3JhcGhfcGVyaXBoZXJ5J1xuICAgICAgKyAnIGdyYXBoX3Byb2R1Y3QgZ3JhcGhfc2l6ZSBncmFwaF91bmlvbiBncmVhdF9yaG9tYmljb3NpZG9kZWNhaGVkcm9uX2dyYXBoIGdyZWF0X3Job21iaWN1Ym9jdGFoZWRyb25fZ3JhcGgnXG4gICAgICArICcgZ3JpZF9ncmFwaCBncmluZCBncm9ibmVyX2Jhc2lzIGdyb3R6Y2hfZ3JhcGggaGFtaWx0b25fY3ljbGUgaGFtaWx0b25fcGF0aCdcbiAgICAgICsgJyBoYW5rZWwgaGFua2VsXzEgaGFua2VsXzIgaGFybW9uaWMgaGFybW9uaWNfbWVhbiBoYXYgaGVhd29vZF9ncmFwaCBoZXJtaXRlJ1xuICAgICAgKyAnIGhlc3NpYW4gaGdmcmVkIGhpbGJlcnRtYXAgaGlsYmVydF9tYXRyaXggaGlwb3cgaGlzdG9ncmFtIGhpc3RvZ3JhbV9kZXNjcmlwdGlvbidcbiAgICAgICsgJyBob2RnZSBob3JuZXIgaHlwZXJnZW9tZXRyaWMgaTAgaTEgJWliZXMgaWMxIGljMiBpY19jb252ZXJ0IGljaHIxIGljaHIyIGljb3NhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIGljb3NpZG9kZWNhaGVkcm9uX2dyYXBoIGljdXJ2YXR1cmUgaWRlbnQgaWRlbnRmb3IgaWRlbnRpdHkgaWRpZmYgaWRpbSBpZHVtbXknXG4gICAgICArICcgaWVxbiAlaWYgaWZhY3RvcnMgaWZyYW1lcyBpZnMgaWdjZGV4IGlnZW9kZXNpY19jb29yZHMgaWx0IGltYWdlIGltYWdwYXJ0J1xuICAgICAgKyAnIGltZXRyaWMgaW1wbGljaXQgaW1wbGljaXRfZGVyaXZhdGl2ZSBpbXBsaWNpdF9wbG90IGluZGV4ZWRfdGVuc29yIGluZGljZXMnXG4gICAgICArICcgaW5kdWNlZF9zdWJncmFwaCBpbmZlcmVuY2VwIGluZmVyZW5jZV9yZXN1bHQgaW5maXggaW5mb19kaXNwbGF5IGluaXRfYXRlbnNvcidcbiAgICAgICsgJyBpbml0X2N0ZW5zb3IgaW5fbmVpZ2hib3JzIGlubmVycHJvZHVjdCBpbnBhcnQgaW5wcm9kIGlucnQgaW50ZWdlcnAgaW50ZWdlcl9wYXJ0aXRpb25zJ1xuICAgICAgKyAnIGludGVncmF0ZSBpbnRlcnNlY3QgaW50ZXJzZWN0aW9uIGludGVydmFscCBpbnRvcG9pcyBpbnRvc3VtIGludmFyaWFudDEgaW52YXJpYW50MidcbiAgICAgICsgJyBpbnZlcnNlX2ZmdCBpbnZlcnNlX2phY29iaV9jZCBpbnZlcnNlX2phY29iaV9jbiBpbnZlcnNlX2phY29iaV9jcyBpbnZlcnNlX2phY29iaV9kYydcbiAgICAgICsgJyBpbnZlcnNlX2phY29iaV9kbiBpbnZlcnNlX2phY29iaV9kcyBpbnZlcnNlX2phY29iaV9uYyBpbnZlcnNlX2phY29iaV9uZCBpbnZlcnNlX2phY29iaV9ucydcbiAgICAgICsgJyBpbnZlcnNlX2phY29iaV9zYyBpbnZlcnNlX2phY29iaV9zZCBpbnZlcnNlX2phY29iaV9zbiBpbnZlcnQgaW52ZXJ0X2J5X2Fkam9pbnQnXG4gICAgICArICcgaW52ZXJ0X2J5X2x1IGludl9tb2QgaXJyIGlzIGlzX2JpY29ubmVjdGVkIGlzX2JpcGFydGl0ZSBpc19jb25uZWN0ZWQgaXNfZGlncmFwaCdcbiAgICAgICsgJyBpc19lZGdlX2luX2dyYXBoIGlzX2dyYXBoIGlzX2dyYXBoX29yX2RpZ3JhcGggaXNob3cgaXNfaXNvbW9ycGhpYyBpc29sYXRlJ1xuICAgICAgKyAnIGlzb21vcnBoaXNtIGlzX3BsYW5hciBpc3FydCBpc3JlYWxfcCBpc19zY29ubmVjdGVkIGlzX3RyZWUgaXNfdmVydGV4X2luX2dyYXBoJ1xuICAgICAgKyAnIGl0ZW1zX2luZmVyZW5jZSAlaiBqMCBqMSBqYWNvYmkgamFjb2JpYW4gamFjb2JpX2NkIGphY29iaV9jbiBqYWNvYmlfY3MgamFjb2JpX2RjJ1xuICAgICAgKyAnIGphY29iaV9kbiBqYWNvYmlfZHMgamFjb2JpX25jIGphY29iaV9uZCBqYWNvYmlfbnMgamFjb2JpX3AgamFjb2JpX3NjIGphY29iaV9zZCdcbiAgICAgICsgJyBqYWNvYmlfc24gSkYgam4gam9pbiBqb3JkYW4ganVsaWEganVsaWFfc2V0IGp1bGlhX3NpbiAlayBrZGVscyBrZGVsdGEga2lsbCdcbiAgICAgICsgJyBraWxsY29udGV4dCBrb3N0a2Ega3Jvbl9kZWx0YSBrcm9uZWNrZXJfcHJvZHVjdCBrdW1tZXJfbSBrdW1tZXJfdSBrdXJ0b3NpcydcbiAgICAgICsgJyBrdXJ0b3Npc19iZXJub3VsbGkga3VydG9zaXNfYmV0YSBrdXJ0b3Npc19iaW5vbWlhbCBrdXJ0b3Npc19jaGkyIGt1cnRvc2lzX2NvbnRpbnVvdXNfdW5pZm9ybSdcbiAgICAgICsgJyBrdXJ0b3Npc19kaXNjcmV0ZV91bmlmb3JtIGt1cnRvc2lzX2V4cCBrdXJ0b3Npc19mIGt1cnRvc2lzX2dhbW1hIGt1cnRvc2lzX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIGt1cnRvc2lzX2dlb21ldHJpYyBrdXJ0b3Npc19ndW1iZWwga3VydG9zaXNfaHlwZXJnZW9tZXRyaWMga3VydG9zaXNfbGFwbGFjZSdcbiAgICAgICsgJyBrdXJ0b3Npc19sb2dpc3RpYyBrdXJ0b3Npc19sb2dub3JtYWwga3VydG9zaXNfbmVnYXRpdmVfYmlub21pYWwga3VydG9zaXNfbm9uY2VudHJhbF9jaGkyJ1xuICAgICAgKyAnIGt1cnRvc2lzX25vbmNlbnRyYWxfc3R1ZGVudF90IGt1cnRvc2lzX25vcm1hbCBrdXJ0b3Npc19wYXJldG8ga3VydG9zaXNfcG9pc3NvbidcbiAgICAgICsgJyBrdXJ0b3Npc19yYXlsZWlnaCBrdXJ0b3Npc19zdHVkZW50X3Qga3VydG9zaXNfd2VpYnVsbCBsYWJlbCBsYWJlbHMgbGFncmFuZ2UnXG4gICAgICArICcgbGFndWVycmUgbGFtYmRhIGxhbWJlcnRfdyBsYXBsYWNlIGxhcGxhY2lhbl9tYXRyaXggbGFzdCBsYmZncyBsYzJrZHQgbGNoYXJwJ1xuICAgICAgKyAnIGxjX2wgbGNtIGxjX3UgbGRlZmludCBsZGlzcCBsZGlzcGxheSBsZWdlbmRyZV9wIGxlZ2VuZHJlX3EgbGVpbnN0ZWluIGxlbmd0aCdcbiAgICAgICsgJyBsZXQgbGV0cnVsZXMgbGV0c2ltcCBsZXZpX2Npdml0YSBsZnJlZW9mIGxndHJlaWxsaXMgbGhzIGxpIGxpZWRpZmYgbGltaXQnXG4gICAgICArICcgTGluZHN0ZWR0IGxpbmVhciBsaW5lYXJpbnRlcnBvbCBsaW5lYXJfcHJvZ3JhbSBsaW5lYXJfcmVncmVzc2lvbiBsaW5lX2dyYXBoJ1xuICAgICAgKyAnIGxpbnNvbHZlIGxpc3RhcnJheSBsaXN0X2NvcnJlbGF0aW9ucyBsaXN0aWZ5IGxpc3RfbWF0cml4X2VudHJpZXMgbGlzdF9uY19tb25vbWlhbHMnXG4gICAgICArICcgbGlzdG9mdGVucyBsaXN0b2Z2YXJzIGxpc3RwIGxtYXggbG1pbiBsb2FkIGxvYWRmaWxlIGxvY2FsIGxvY2F0ZV9tYXRyaXhfZW50cnknXG4gICAgICArICcgbG9nIGxvZ2NvbnRyYWN0IGxvZ19nYW1tYSBsb3BvdyBsb3JlbnR6X2dhdWdlIGxvd2VyY2FzZXAgbHBhcnQgbHJhdHN1YnN0J1xuICAgICAgKyAnIGxyZWR1Y2UgbHJpZW1hbm4gbHNxdWFyZXNfZXN0aW1hdGVzIGxzcXVhcmVzX2VzdGltYXRlc19hcHByb3hpbWF0ZSBsc3F1YXJlc19lc3RpbWF0ZXNfZXhhY3QnXG4gICAgICArICcgbHNxdWFyZXNfbXNlIGxzcXVhcmVzX3Jlc2lkdWFsX21zZSBsc3F1YXJlc19yZXNpZHVhbHMgbHN1bSBsdHJlaWxsaXMgbHVfYmFja3N1YidcbiAgICAgICsgJyBsdWNhcyBsdV9mYWN0b3IgJW0gbWFjcm9leHBhbmQgbWFjcm9leHBhbmQxIG1ha2VfYXJyYXkgbWFrZWJveCBtYWtlZmFjdCBtYWtlZ2FtbWEnXG4gICAgICArICcgbWFrZV9ncmFwaCBtYWtlX2xldmVsX3BpY3R1cmUgbWFrZWxpc3QgbWFrZU9yZGVycyBtYWtlX3BvbHlfY29udGluZW50IG1ha2VfcG9seV9jb3VudHJ5J1xuICAgICAgKyAnIG1ha2VfcG9seWdvbiBtYWtlX3JhbmRvbV9zdGF0ZSBtYWtlX3JnYl9waWN0dXJlIG1ha2VzZXQgbWFrZV9zdHJpbmdfaW5wdXRfc3RyZWFtJ1xuICAgICAgKyAnIG1ha2Vfc3RyaW5nX291dHB1dF9zdHJlYW0gbWFrZV90cmFuc2Zvcm0gbWFuZGVsYnJvdCBtYW5kZWxicm90X3NldCBtYXAgbWFwYXRvbSdcbiAgICAgICsgJyBtYXBsaXN0IG1hdGNoZGVjbGFyZSBtYXRjaGZpeCBtYXRfY29uZCBtYXRfZnVsbHVuYmxvY2tlciBtYXRfZnVuY3Rpb24gbWF0aG1sX2Rpc3BsYXknXG4gICAgICArICcgbWF0X25vcm0gbWF0cml4IG1hdHJpeG1hcCBtYXRyaXhwIG1hdHJpeF9zaXplIG1hdHRyYWNlIG1hdF90cmFjZSBtYXRfdW5ibG9ja2VyJ1xuICAgICAgKyAnIG1heCBtYXhfY2xpcXVlIG1heF9kZWdyZWUgbWF4X2Zsb3cgbWF4aW1pemVfbHAgbWF4X2luZGVwZW5kZW50X3NldCBtYXhfbWF0Y2hpbmcnXG4gICAgICArICcgbWF5YmUgbWQ1c3VtIG1lYW4gbWVhbl9iZXJub3VsbGkgbWVhbl9iZXRhIG1lYW5fYmlub21pYWwgbWVhbl9jaGkyIG1lYW5fY29udGludW91c191bmlmb3JtJ1xuICAgICAgKyAnIG1lYW5fZGV2aWF0aW9uIG1lYW5fZGlzY3JldGVfdW5pZm9ybSBtZWFuX2V4cCBtZWFuX2YgbWVhbl9nYW1tYSBtZWFuX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIG1lYW5fZ2VvbWV0cmljIG1lYW5fZ3VtYmVsIG1lYW5faHlwZXJnZW9tZXRyaWMgbWVhbl9sYXBsYWNlIG1lYW5fbG9naXN0aWMnXG4gICAgICArICcgbWVhbl9sb2dub3JtYWwgbWVhbl9uZWdhdGl2ZV9iaW5vbWlhbCBtZWFuX25vbmNlbnRyYWxfY2hpMiBtZWFuX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIG1lYW5fbm9ybWFsIG1lYW5fcGFyZXRvIG1lYW5fcG9pc3NvbiBtZWFuX3JheWxlaWdoIG1lYW5fc3R1ZGVudF90IG1lYW5fd2VpYnVsbCdcbiAgICAgICsgJyBtZWRpYW4gbWVkaWFuX2RldmlhdGlvbiBtZW1iZXIgbWVzaCBtZXRyaWNleHBhbmRhbGwgbWdmMV9zaGExIG1pbiBtaW5fZGVncmVlJ1xuICAgICAgKyAnIG1pbl9lZGdlX2N1dCBtaW5mYWN0b3JpYWwgbWluaW1hbFBvbHkgbWluaW1pemVfbHAgbWluaW11bV9zcGFubmluZ190cmVlIG1pbm9yJ1xuICAgICAgKyAnIG1pbnBhY2tfbHNxdWFyZXMgbWlucGFja19zb2x2ZSBtaW5fdmVydGV4X2NvdmVyIG1pbl92ZXJ0ZXhfY3V0IG1rZGlyIG1uZXd0b24nXG4gICAgICArICcgbW9kIG1vZGVfZGVjbGFyZSBtb2RlX2lkZW50aXR5IE1vZGVNYXRyaXggbW9lYml1cyBtb24yc2NodXIgbW9ubyBtb25vbWlhbF9kaW1lbnNpb25zJ1xuICAgICAgKyAnIG11bHRpYmVybnN0ZWluX3BvbHkgbXVsdGlfZGlzcGxheV9mb3JfdGV4aW5mbyBtdWx0aV9lbGVtIG11bHRpbm9taWFsIG11bHRpbm9taWFsX2NvZWZmJ1xuICAgICAgKyAnIG11bHRpX29yYml0IG11bHRpcGxvdF9tb2RlIG11bHRpX3B1aSBtdWx0c3ltIG11bHR0aHJ1IG15Y2llbHNraV9ncmFwaCBuYXJ5J1xuICAgICAgKyAnIG5hdHVyYWxfdW5pdCBuY19kZWdyZWUgbmNleHB0IG5jaGFycG9seSBuZWdhdGl2ZV9waWN0dXJlIG5laWdoYm9ycyBuZXcgbmV3Y29udGV4dCdcbiAgICAgICsgJyBuZXdkZXQgbmV3X2dyYXBoIG5ld2xpbmUgbmV3dG9uIG5ld192YXJpYWJsZSBuZXh0X3ByaW1lIG5pY2VkdW1taWVzIG5pY2VpbmRpY2VzJ1xuICAgICAgKyAnIG5pbnRoIG5vZml4IG5vbmFycmF5IG5vbmNlbnRyYWxfbW9tZW50IG5vbm1ldHJpY2l0eSBub25uZWdpbnRlZ2VycCBub25zY2FsYXJwJ1xuICAgICAgKyAnIG5vbnplcm9hbmRmcmVlb2Ygbm90ZXF1YWwgbm91bmlmeSBucHRldHJhZCBucHYgbnJvb3RzIG50ZXJtcyBudGVybXN0J1xuICAgICAgKyAnIG50aHJvb3QgbnVsbGl0eSBudWxsc3BhY2UgbnVtIG51bWJlcmVkX2JvdW5kYXJpZXMgbnVtYmVycCBudW1iZXJfdG9fb2N0ZXRzJ1xuICAgICAgKyAnIG51bV9kaXN0aW5jdF9wYXJ0aXRpb25zIG51bWVydmFsIG51bWZhY3RvciBudW1fcGFydGl0aW9ucyBudXN1bSBuemV0YSBuemV0YWknXG4gICAgICArICcgbnpldGFyIG9jdGV0c190b19udW1iZXIgb2N0ZXRzX3RvX29pZCBvZGRfZ2lydGggb2RkcCBvZGUyIG9kZV9jaGVjayBvZGVsaW4nXG4gICAgICArICcgb2lkX3RvX29jdGV0cyBvcCBvcGVuYSBvcGVuYV9iaW5hcnkgb3BlbnIgb3BlbnJfYmluYXJ5IG9wZW53IG9wZW53X2JpbmFyeSdcbiAgICAgICsgJyBvcGVyYXRvcnAgb3BzdWJzdCBvcHRpbWl6ZSAlb3Igb3JiaXQgb3JiaXRzIG9yZGVyZ3JlYXQgb3JkZXJncmVhdHAgb3JkZXJsZXNzJ1xuICAgICAgKyAnIG9yZGVybGVzc3Agb3J0aG9nb25hbF9jb21wbGVtZW50IG9ydGhvcG9seV9yZWN1ciBvcnRob3BvbHlfd2VpZ2h0IG91dGVybWFwJ1xuICAgICAgKyAnIG91dF9uZWlnaGJvcnMgb3V0b2Zwb2lzIHBhZGUgcGFyYWJvbGljX2N5bGluZGVyX2QgcGFyYW1ldHJpYyBwYXJhbWV0cmljX3N1cmZhY2UnXG4gICAgICArICcgcGFyZyBwYXJHb3NwZXIgcGFyc2Vfc3RyaW5nIHBhcnNlX3RpbWVkYXRlIHBhcnQgcGFydDJjb250IHBhcnRmcmFjIHBhcnRpdGlvbidcbiAgICAgICsgJyBwYXJ0aXRpb25fc2V0IHBhcnRwb2wgcGF0aF9kaWdyYXBoIHBhdGhfZ3JhcGggcGF0aG5hbWVfZGlyZWN0b3J5IHBhdGhuYW1lX25hbWUnXG4gICAgICArICcgcGF0aG5hbWVfdHlwZSBwZGZfYmVybm91bGxpIHBkZl9iZXRhIHBkZl9iaW5vbWlhbCBwZGZfY2F1Y2h5IHBkZl9jaGkyIHBkZl9jb250aW51b3VzX3VuaWZvcm0nXG4gICAgICArICcgcGRmX2Rpc2NyZXRlX3VuaWZvcm0gcGRmX2V4cCBwZGZfZiBwZGZfZ2FtbWEgcGRmX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIHBkZl9nZW9tZXRyaWMgcGRmX2d1bWJlbCBwZGZfaHlwZXJnZW9tZXRyaWMgcGRmX2xhcGxhY2UgcGRmX2xvZ2lzdGljIHBkZl9sb2dub3JtYWwnXG4gICAgICArICcgcGRmX25lZ2F0aXZlX2Jpbm9taWFsIHBkZl9ub25jZW50cmFsX2NoaTIgcGRmX25vbmNlbnRyYWxfc3R1ZGVudF90IHBkZl9ub3JtYWwnXG4gICAgICArICcgcGRmX3BhcmV0byBwZGZfcG9pc3NvbiBwZGZfcmFua19zdW0gcGRmX3JheWxlaWdoIHBkZl9zaWduZWRfcmFuayBwZGZfc3R1ZGVudF90J1xuICAgICAgKyAnIHBkZl93ZWlidWxsIHBlYXJzb25fc2tld25lc3MgcGVybWFuZW50IHBlcm11dCBwZXJtdXRhdGlvbiBwZXJtdXRhdGlvbnMgcGV0ZXJzZW5fZ3JhcGgnXG4gICAgICArICcgcGV0cm92IHBpY2thcGFydCBwaWN0dXJlX2VxdWFscCBwaWN0dXJlcCBwaWVjaGFydCBwaWVjaGFydF9kZXNjcmlwdGlvbiBwbGFuYXJfZW1iZWRkaW5nJ1xuICAgICAgKyAnIHBsYXliYWNrIHBsb2cgcGxvdDJkIHBsb3QzZCBwbG90ZGYgcGxvdGVxIHBsc3F1YXJlcyBwb2NoaGFtbWVyIHBvaW50cyBwb2lzZGlmZidcbiAgICAgICsgJyBwb2lzZXhwdCBwb2lzaW50IHBvaXNtYXAgcG9pc3BsdXMgcG9pc3NpbXAgcG9pc3N1YnN0IHBvaXN0aW1lcyBwb2lzdHJpbSBwb2xhcidcbiAgICAgICsgJyBwb2xhcmZvcm0gcG9sYXJ0b3JlY3QgcG9sYXJfdG9feHkgcG9seV9hZGQgcG9seV9idWNoYmVyZ2VyIHBvbHlfYnVjaGJlcmdlcl9jcml0ZXJpb24nXG4gICAgICArICcgcG9seV9jb2xvbl9pZGVhbCBwb2x5X2NvbnRlbnQgcG9seWRlY29tcCBwb2x5X2RlcGVuZHNfcCBwb2x5X2VsaW1pbmF0aW9uX2lkZWFsJ1xuICAgICAgKyAnIHBvbHlfZXhhY3RfZGl2aWRlIHBvbHlfZXhwYW5kIHBvbHlfZXhwdCBwb2x5X2djZCBwb2x5Z29uIHBvbHlfZ3JvYm5lciBwb2x5X2dyb2JuZXJfZXF1YWwnXG4gICAgICArICcgcG9seV9ncm9ibmVyX21lbWJlciBwb2x5X2dyb2JuZXJfc3Vic2V0cCBwb2x5X2lkZWFsX2ludGVyc2VjdGlvbiBwb2x5X2lkZWFsX3BvbHlzYXR1cmF0aW9uJ1xuICAgICAgKyAnIHBvbHlfaWRlYWxfcG9seXNhdHVyYXRpb24xIHBvbHlfaWRlYWxfc2F0dXJhdGlvbiBwb2x5X2lkZWFsX3NhdHVyYXRpb24xIHBvbHlfbGNtJ1xuICAgICAgKyAnIHBvbHlfbWluaW1pemF0aW9uIHBvbHltb2QgcG9seV9tdWx0aXBseSBwb2x5bm9tZTJlbGUgcG9seW5vbWlhbHAgcG9seV9ub3JtYWxfZm9ybSdcbiAgICAgICsgJyBwb2x5X25vcm1hbGl6ZSBwb2x5X25vcm1hbGl6ZV9saXN0IHBvbHlfcG9seXNhdHVyYXRpb25fZXh0ZW5zaW9uIHBvbHlfcHJpbWl0aXZlX3BhcnQnXG4gICAgICArICcgcG9seV9wc2V1ZG9fZGl2aWRlIHBvbHlfcmVkdWNlZF9ncm9ibmVyIHBvbHlfcmVkdWN0aW9uIHBvbHlfc2F0dXJhdGlvbl9leHRlbnNpb24nXG4gICAgICArICcgcG9seV9zX3BvbHlub21pYWwgcG9seV9zdWJ0cmFjdCBwb2x5dG9jb21wYW5pb24gcG9wIHBvc3RmaXggcG90ZW50aWFsIHBvd2VyX21vZCdcbiAgICAgICsgJyBwb3dlcnNlcmllcyBwb3dlcnNldCBwcmVmaXggcHJldl9wcmltZSBwcmltZXAgcHJpbWVzIHByaW5jaXBhbF9jb21wb25lbnRzJ1xuICAgICAgKyAnIHByaW50IHByaW50ZiBwcmludGZpbGUgcHJpbnRfZ3JhcGggcHJpbnRwb2lzIHByaW50cHJvcHMgcHJvZHJhYyBwcm9kdWN0IHByb3BlcnRpZXMnXG4gICAgICArICcgcHJvcHZhcnMgcHNpIHBzdWJzdCBwdHJpYW5ndWxhcml6ZSBwdWkgcHVpMmNvbXAgcHVpMmVsZSBwdWkycG9seW5vbWUgcHVpX2RpcmVjdCdcbiAgICAgICsgJyBwdWlyZWR1YyBwdXNoIHB1dCBwdiBxcHV0IHFyYW5nZSBxdHkgcXVhZF9jb250cm9sIHF1YWRfcWFnIHF1YWRfcWFnaSBxdWFkX3FhZ3AnXG4gICAgICArICcgcXVhZF9xYWdzIHF1YWRfcWF3YyBxdWFkX3Fhd2YgcXVhZF9xYXdvIHF1YWRfcWF3cyBxdWFkcmlsYXRlcmFsIHF1YW50aWxlJ1xuICAgICAgKyAnIHF1YW50aWxlX2Jlcm5vdWxsaSBxdWFudGlsZV9iZXRhIHF1YW50aWxlX2Jpbm9taWFsIHF1YW50aWxlX2NhdWNoeSBxdWFudGlsZV9jaGkyJ1xuICAgICAgKyAnIHF1YW50aWxlX2NvbnRpbnVvdXNfdW5pZm9ybSBxdWFudGlsZV9kaXNjcmV0ZV91bmlmb3JtIHF1YW50aWxlX2V4cCBxdWFudGlsZV9mJ1xuICAgICAgKyAnIHF1YW50aWxlX2dhbW1hIHF1YW50aWxlX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHF1YW50aWxlX2dlb21ldHJpYyBxdWFudGlsZV9ndW1iZWwnXG4gICAgICArICcgcXVhbnRpbGVfaHlwZXJnZW9tZXRyaWMgcXVhbnRpbGVfbGFwbGFjZSBxdWFudGlsZV9sb2dpc3RpYyBxdWFudGlsZV9sb2dub3JtYWwnXG4gICAgICArICcgcXVhbnRpbGVfbmVnYXRpdmVfYmlub21pYWwgcXVhbnRpbGVfbm9uY2VudHJhbF9jaGkyIHF1YW50aWxlX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHF1YW50aWxlX25vcm1hbCBxdWFudGlsZV9wYXJldG8gcXVhbnRpbGVfcG9pc3NvbiBxdWFudGlsZV9yYXlsZWlnaCBxdWFudGlsZV9zdHVkZW50X3QnXG4gICAgICArICcgcXVhbnRpbGVfd2VpYnVsbCBxdWFydGlsZV9za2V3bmVzcyBxdWl0IHF1bml0IHF1b3RpZW50IHJhY2FoX3YgcmFjYWhfdyByYWRjYW4nXG4gICAgICArICcgcmFkaXVzIHJhbmRvbSByYW5kb21fYmVybm91bGxpIHJhbmRvbV9iZXRhIHJhbmRvbV9iaW5vbWlhbCByYW5kb21fYmlwYXJ0aXRlX2dyYXBoJ1xuICAgICAgKyAnIHJhbmRvbV9jYXVjaHkgcmFuZG9tX2NoaTIgcmFuZG9tX2NvbnRpbnVvdXNfdW5pZm9ybSByYW5kb21fZGlncmFwaCByYW5kb21fZGlzY3JldGVfdW5pZm9ybSdcbiAgICAgICsgJyByYW5kb21fZXhwIHJhbmRvbV9mIHJhbmRvbV9nYW1tYSByYW5kb21fZ2VuZXJhbF9maW5pdGVfZGlzY3JldGUgcmFuZG9tX2dlb21ldHJpYydcbiAgICAgICsgJyByYW5kb21fZ3JhcGggcmFuZG9tX2dyYXBoMSByYW5kb21fZ3VtYmVsIHJhbmRvbV9oeXBlcmdlb21ldHJpYyByYW5kb21fbGFwbGFjZSdcbiAgICAgICsgJyByYW5kb21fbG9naXN0aWMgcmFuZG9tX2xvZ25vcm1hbCByYW5kb21fbmVnYXRpdmVfYmlub21pYWwgcmFuZG9tX25ldHdvcmsnXG4gICAgICArICcgcmFuZG9tX25vbmNlbnRyYWxfY2hpMiByYW5kb21fbm9uY2VudHJhbF9zdHVkZW50X3QgcmFuZG9tX25vcm1hbCByYW5kb21fcGFyZXRvJ1xuICAgICAgKyAnIHJhbmRvbV9wZXJtdXRhdGlvbiByYW5kb21fcG9pc3NvbiByYW5kb21fcmF5bGVpZ2ggcmFuZG9tX3JlZ3VsYXJfZ3JhcGggcmFuZG9tX3N0dWRlbnRfdCdcbiAgICAgICsgJyByYW5kb21fdG91cm5hbWVudCByYW5kb21fdHJlZSByYW5kb21fd2VpYnVsbCByYW5nZSByYW5rIHJhdCByYXRjb2VmIHJhdGRlbm9tJ1xuICAgICAgKyAnIHJhdGRpZmYgcmF0ZGlzcmVwIHJhdGV4cGFuZCByYXRpbnRlcnBvbCByYXRpb25hbCByYXRpb25hbGl6ZSByYXRudW1lciByYXRudW1wJ1xuICAgICAgKyAnIHJhdHAgcmF0c2ltcCByYXRzdWJzdCByYXR2YXJzIHJhdHdlaWdodCByZWFkIHJlYWRfYXJyYXkgcmVhZF9iaW5hcnlfYXJyYXknXG4gICAgICArICcgcmVhZF9iaW5hcnlfbGlzdCByZWFkX2JpbmFyeV9tYXRyaXggcmVhZGJ5dGUgcmVhZGNoYXIgcmVhZF9oYXNoZWRfYXJyYXkgcmVhZGxpbmUnXG4gICAgICArICcgcmVhZF9saXN0IHJlYWRfbWF0cml4IHJlYWRfbmVzdGVkX2xpc3QgcmVhZG9ubHkgcmVhZF94cG0gcmVhbF9pbWFncGFydF90b19jb25qdWdhdGUnXG4gICAgICArICcgcmVhbHBhcnQgcmVhbHJvb3RzIHJlYXJyYXkgcmVjdGFuZ2xlIHJlY3Rmb3JtIHJlY3Rmb3JtX2xvZ19pZl9jb25zdGFudCByZWN0dG9wb2xhcidcbiAgICAgICsgJyByZWRpZmYgcmVkdWNlX2NvbnN0cyByZWR1Y2Vfb3JkZXIgcmVnaW9uIHJlZ2lvbl9ib3VuZGFyaWVzIHJlZ2lvbl9ib3VuZGFyaWVzX3BsdXMnXG4gICAgICArICcgcmVtIHJlbWFpbmRlciByZW1hcnJheSByZW1ib3ggcmVtY29tcHMgcmVtY29uIHJlbWNvb3JkIHJlbWZ1biByZW1mdW5jdGlvbidcbiAgICAgICsgJyByZW1sZXQgcmVtb3ZlIHJlbW92ZV9jb25zdHZhbHVlIHJlbW92ZV9kaW1lbnNpb25zIHJlbW92ZV9lZGdlIHJlbW92ZV9mdW5kYW1lbnRhbF9kaW1lbnNpb25zJ1xuICAgICAgKyAnIHJlbW92ZV9mdW5kYW1lbnRhbF91bml0cyByZW1vdmVfcGxvdF9vcHRpb24gcmVtb3ZlX3ZlcnRleCByZW1wYXJ0IHJlbXJ1bGUnXG4gICAgICArICcgcmVtc3ltIHJlbXZhbHVlIHJlbmFtZSByZW5hbWVfZmlsZSByZXNldCByZXNldF9kaXNwbGF5cyByZXNpZHVlIHJlc29sdmFudGUnXG4gICAgICArICcgcmVzb2x2YW50ZV9hbHRlcm5lZTEgcmVzb2x2YW50ZV9iaXBhcnRpdGUgcmVzb2x2YW50ZV9kaWVkcmFsZSByZXNvbHZhbnRlX2tsZWluJ1xuICAgICAgKyAnIHJlc29sdmFudGVfa2xlaW4zIHJlc29sdmFudGVfcHJvZHVpdF9zeW0gcmVzb2x2YW50ZV91bml0YWlyZSByZXNvbHZhbnRlX3ZpZXJlcidcbiAgICAgICsgJyByZXN0IHJlc3VsdGFudCByZXR1cm4gcmV2ZWFsIHJldmVyc2UgcmV2ZXJ0IHJldmVydDIgcmdiMmxldmVsIHJocyByaWNjaSByaWVtYW5uJ1xuICAgICAgKyAnIHJpbnZhcmlhbnQgcmlzY2ggcmsgcm1kaXIgcm5jb21iaW5lIHJvbWJlcmcgcm9vbSByb290c2NvbnRyYWN0IHJvdW5kIHJvdydcbiAgICAgICsgJyByb3dvcCByb3dzd2FwIHJyZWR1Y2UgcnVuX3Rlc3RzdWl0ZSAlcyBzYXZlIHNhdmluZyBzY2FsYXJwIHNjYWxlZF9iZXNzZWxfaSdcbiAgICAgICsgJyBzY2FsZWRfYmVzc2VsX2kwIHNjYWxlZF9iZXNzZWxfaTEgc2NhbGVmYWN0b3JzIHNjYW5tYXAgc2NhdHRlcnBsb3Qgc2NhdHRlcnBsb3RfZGVzY3JpcHRpb24nXG4gICAgICArICcgc2NlbmUgc2NodXIyY29tcCBzY29uY2F0IHNjb3B5IHNjc2ltcCBzY3VydmF0dXJlIHNkb3duY2FzZSBzZWMgc2VjaCBzZWNvbmQnXG4gICAgICArICcgc2VxdWFsIHNlcXVhbGlnbm9yZSBzZXRfYWx0X2Rpc3BsYXkgc2V0ZGlmZmVyZW5jZSBzZXRfZHJhd19kZWZhdWx0cyBzZXRfZWRnZV93ZWlnaHQnXG4gICAgICArICcgc2V0ZWxteCBzZXRlcXVhbHAgc2V0aWZ5IHNldHAgc2V0X3BhcnRpdGlvbnMgc2V0X3Bsb3Rfb3B0aW9uIHNldF9wcm9tcHQgc2V0X3JhbmRvbV9zdGF0ZSdcbiAgICAgICsgJyBzZXRfdGV4X2Vudmlyb25tZW50IHNldF90ZXhfZW52aXJvbm1lbnRfZGVmYXVsdCBzZXR1bml0cyBzZXR1cF9hdXRvbG9hZCBzZXRfdXBfZG90X3NpbXBsaWZpY2F0aW9ucydcbiAgICAgICsgJyBzZXRfdmVydGV4X2xhYmVsIHNldmVudGggc2V4cGxvZGUgc2Ygc2hhMXN1bSBzaGEyNTZzdW0gc2hvcnRlc3RfcGF0aCBzaG9ydGVzdF93ZWlnaHRlZF9wYXRoJ1xuICAgICAgKyAnIHNob3cgc2hvd2NvbXBzIHNob3dyYXR2YXJzIHNpZXJwaW5za2lhbGUgc2llcnBpbnNraW1hcCBzaWduIHNpZ251bSBzaW1pbGFyaXR5dHJhbnNmb3JtJ1xuICAgICAgKyAnIHNpbXBfaW5lcXVhbGl0eSBzaW1wbGlmeV9zdW0gc2ltcGxvZGUgc2ltcG1ldGRlcml2IHNpbXRyYW4gc2luIHNpbmggc2luc2VydCdcbiAgICAgICsgJyBzaW52ZXJ0Y2FzZSBzaXh0aCBza2V3bmVzcyBza2V3bmVzc19iZXJub3VsbGkgc2tld25lc3NfYmV0YSBza2V3bmVzc19iaW5vbWlhbCdcbiAgICAgICsgJyBza2V3bmVzc19jaGkyIHNrZXduZXNzX2NvbnRpbnVvdXNfdW5pZm9ybSBza2V3bmVzc19kaXNjcmV0ZV91bmlmb3JtIHNrZXduZXNzX2V4cCdcbiAgICAgICsgJyBza2V3bmVzc19mIHNrZXduZXNzX2dhbW1hIHNrZXduZXNzX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHNrZXduZXNzX2dlb21ldHJpYydcbiAgICAgICsgJyBza2V3bmVzc19ndW1iZWwgc2tld25lc3NfaHlwZXJnZW9tZXRyaWMgc2tld25lc3NfbGFwbGFjZSBza2V3bmVzc19sb2dpc3RpYydcbiAgICAgICsgJyBza2V3bmVzc19sb2dub3JtYWwgc2tld25lc3NfbmVnYXRpdmVfYmlub21pYWwgc2tld25lc3Nfbm9uY2VudHJhbF9jaGkyIHNrZXduZXNzX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHNrZXduZXNzX25vcm1hbCBza2V3bmVzc19wYXJldG8gc2tld25lc3NfcG9pc3NvbiBza2V3bmVzc19yYXlsZWlnaCBza2V3bmVzc19zdHVkZW50X3QnXG4gICAgICArICcgc2tld25lc3Nfd2VpYnVsbCBzbGVuZ3RoIHNtYWtlIHNtYWxsX3Job21iaWNvc2lkb2RlY2FoZWRyb25fZ3JhcGggc21hbGxfcmhvbWJpY3Vib2N0YWhlZHJvbl9ncmFwaCdcbiAgICAgICsgJyBzbWF4IHNtaW4gc21pc21hdGNoIHNub3dtYXAgc251Yl9jdWJlX2dyYXBoIHNudWJfZG9kZWNhaGVkcm9uX2dyYXBoIHNvbHZlJ1xuICAgICAgKyAnIHNvbHZlX3JlYyBzb2x2ZV9yZWNfcmF0IHNvbWUgc29tcmFjIHNvcnQgc3BhcnNlNl9kZWNvZGUgc3BhcnNlNl9lbmNvZGUgc3BhcnNlNl9leHBvcnQnXG4gICAgICArICcgc3BhcnNlNl9pbXBvcnQgc3BlY2ludCBzcGhlcmljYWwgc3BoZXJpY2FsX2Jlc3NlbF9qIHNwaGVyaWNhbF9iZXNzZWxfeSBzcGhlcmljYWxfaGFua2VsMSdcbiAgICAgICsgJyBzcGhlcmljYWxfaGFua2VsMiBzcGhlcmljYWxfaGFybW9uaWMgc3BoZXJpY2FsX3RvX3h5eiBzcGxpY2Ugc3BsaXQgc3Bvc2l0aW9uJ1xuICAgICAgKyAnIHNwcmludCBzcWZyIHNxcnQgc3FydGRlbmVzdCBzcmVtb3ZlIHNyZW1vdmVmaXJzdCBzcmV2ZXJzZSBzc2VhcmNoIHNzb3J0IHNzdGF0dXMnXG4gICAgICArICcgc3N1YnN0IHNzdWJzdGZpcnN0IHN0YWlyY2FzZSBzdGFuZGFyZGl6ZSBzdGFuZGFyZGl6ZV9pbnZlcnNlX3RyaWcgc3RhcnBsb3QnXG4gICAgICArICcgc3RhcnBsb3RfZGVzY3JpcHRpb24gc3RhdHVzIHN0ZCBzdGQxIHN0ZF9iZXJub3VsbGkgc3RkX2JldGEgc3RkX2Jpbm9taWFsJ1xuICAgICAgKyAnIHN0ZF9jaGkyIHN0ZF9jb250aW51b3VzX3VuaWZvcm0gc3RkX2Rpc2NyZXRlX3VuaWZvcm0gc3RkX2V4cCBzdGRfZiBzdGRfZ2FtbWEnXG4gICAgICArICcgc3RkX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHN0ZF9nZW9tZXRyaWMgc3RkX2d1bWJlbCBzdGRfaHlwZXJnZW9tZXRyaWMgc3RkX2xhcGxhY2UnXG4gICAgICArICcgc3RkX2xvZ2lzdGljIHN0ZF9sb2dub3JtYWwgc3RkX25lZ2F0aXZlX2Jpbm9taWFsIHN0ZF9ub25jZW50cmFsX2NoaTIgc3RkX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHN0ZF9ub3JtYWwgc3RkX3BhcmV0byBzdGRfcG9pc3NvbiBzdGRfcmF5bGVpZ2ggc3RkX3N0dWRlbnRfdCBzdGRfd2VpYnVsbCdcbiAgICAgICsgJyBzdGVtcGxvdCBzdGlybGluZyBzdGlybGluZzEgc3RpcmxpbmcyIHN0cmltIHN0cmltbCBzdHJpbXIgc3RyaW5nIHN0cmluZ291dCdcbiAgICAgICsgJyBzdHJpbmdwIHN0cm9uZ19jb21wb25lbnRzIHN0cnV2ZV9oIHN0cnV2ZV9sIHN1YmxpcyBzdWJsaXN0IHN1Ymxpc3RfaW5kaWNlcydcbiAgICAgICsgJyBzdWJtYXRyaXggc3Vic2FtcGxlIHN1YnNldCBzdWJzZXRwIHN1YnN0IHN1YnN0aW5wYXJ0IHN1YnN0X3BhcmFsbGVsIHN1YnN0cGFydCdcbiAgICAgICsgJyBzdWJzdHJpbmcgc3VidmFyIHN1YnZhcnAgc3VtIHN1bWNvbnRyYWN0IHN1bW1hbmRfdG9fcmVjIHN1cGNhc2Ugc3VwY29udGV4dCdcbiAgICAgICsgJyBzeW1ib2xwIHN5bW1kaWZmZXJlbmNlIHN5bW1ldHJpY3Agc3lzdGVtIHRha2VfY2hhbm5lbCB0YWtlX2luZmVyZW5jZSB0YW4nXG4gICAgICArICcgdGFuaCB0YXlsb3IgdGF5bG9yaW5mbyB0YXlsb3JwIHRheWxvcl9zaW1wbGlmaWVyIHRheXRvcmF0IHRjbF9vdXRwdXQgdGNvbnRyYWN0J1xuICAgICAgKyAnIHRlbGxyYXQgdGVsbHNpbXAgdGVsbHNpbXBhZnRlciB0ZW50ZXggdGVudGggdGVzdF9tZWFuIHRlc3RfbWVhbnNfZGlmZmVyZW5jZSdcbiAgICAgICsgJyB0ZXN0X25vcm1hbGl0eSB0ZXN0X3Byb3BvcnRpb24gdGVzdF9wcm9wb3J0aW9uc19kaWZmZXJlbmNlIHRlc3RfcmFua19zdW0nXG4gICAgICArICcgdGVzdF9zaWduIHRlc3Rfc2lnbmVkX3JhbmsgdGVzdF92YXJpYW5jZSB0ZXN0X3ZhcmlhbmNlX3JhdGlvIHRleCB0ZXgxIHRleF9kaXNwbGF5J1xuICAgICAgKyAnIHRleHB1dCAldGggdGhpcmQgdGhyb3cgdGltZSB0aW1lZGF0ZSB0aW1lciB0aW1lcl9pbmZvIHRsZGVmaW50IHRsaW1pdCB0b2RkX2NveGV0ZXInXG4gICAgICArICcgdG9lcGxpdHogdG9rZW5zIHRvX2xpc3AgdG9wb2xvZ2ljYWxfc29ydCB0b19wb2x5IHRvX3BvbHlfc29sdmUgdG90YWxkaXNyZXAnXG4gICAgICArICcgdG90YWxmb3VyaWVyIHRvdGllbnQgdHBhcnRwb2wgdHJhY2UgdHJhY2VtYXRyaXggdHJhY2Vfb3B0aW9ucyB0cmFuc2Zvcm1fc2FtcGxlJ1xuICAgICAgKyAnIHRyYW5zbGF0ZSB0cmFuc2xhdGVfZmlsZSB0cmFuc3Bvc2UgdHJlZWZhbGUgdHJlZV9yZWR1Y2UgdHJlaWxsaXMgdHJlaW5hdCdcbiAgICAgICsgJyB0cmlhbmdsZSB0cmlhbmd1bGFyaXplIHRyaWdleHBhbmQgdHJpZ3JhdCB0cmlncmVkdWNlIHRyaWdzaW1wIHRydW5jIHRydW5jYXRlJ1xuICAgICAgKyAnIHRydW5jYXRlZF9jdWJlX2dyYXBoIHRydW5jYXRlZF9kb2RlY2FoZWRyb25fZ3JhcGggdHJ1bmNhdGVkX2ljb3NhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIHRydW5jYXRlZF90ZXRyYWhlZHJvbl9ncmFwaCB0cl93YXJuaW5nc19nZXQgdHViZSB0dXR0ZV9ncmFwaCB1ZWl2ZWN0cyB1Zm9yZ2V0J1xuICAgICAgKyAnIHVsdHJhc3BoZXJpY2FsIHVuZGVybHlpbmdfZ3JhcGggdW5kaWZmIHVuaW9uIHVuaXF1ZSB1bml0ZWlnZW52ZWN0b3JzIHVuaXRwJ1xuICAgICAgKyAnIHVuaXRzIHVuaXRfc3RlcCB1bml0dmVjdG9yIHVub3JkZXIgdW5zdW0gdW50ZWxscmF0IHVudGltZXInXG4gICAgICArICcgdW50cmFjZSB1cHBlcmNhc2VwIHVyaWNjaSB1cmllbWFubiB1dmVjdCB2YW5kZXJtb25kZV9tYXRyaXggdmFyIHZhcjEgdmFyX2Jlcm5vdWxsaSdcbiAgICAgICsgJyB2YXJfYmV0YSB2YXJfYmlub21pYWwgdmFyX2NoaTIgdmFyX2NvbnRpbnVvdXNfdW5pZm9ybSB2YXJfZGlzY3JldGVfdW5pZm9ybSdcbiAgICAgICsgJyB2YXJfZXhwIHZhcl9mIHZhcl9nYW1tYSB2YXJfZ2VuZXJhbF9maW5pdGVfZGlzY3JldGUgdmFyX2dlb21ldHJpYyB2YXJfZ3VtYmVsJ1xuICAgICAgKyAnIHZhcl9oeXBlcmdlb21ldHJpYyB2YXJfbGFwbGFjZSB2YXJfbG9naXN0aWMgdmFyX2xvZ25vcm1hbCB2YXJfbmVnYXRpdmVfYmlub21pYWwnXG4gICAgICArICcgdmFyX25vbmNlbnRyYWxfY2hpMiB2YXJfbm9uY2VudHJhbF9zdHVkZW50X3QgdmFyX25vcm1hbCB2YXJfcGFyZXRvIHZhcl9wb2lzc29uJ1xuICAgICAgKyAnIHZhcl9yYXlsZWlnaCB2YXJfc3R1ZGVudF90IHZhcl93ZWlidWxsIHZlY3RvciB2ZWN0b3Jwb3RlbnRpYWwgdmVjdG9yc2ltcCdcbiAgICAgICsgJyB2ZXJiaWZ5IHZlcnMgdmVydGV4X2NvbG9yaW5nIHZlcnRleF9jb25uZWN0aXZpdHkgdmVydGV4X2RlZ3JlZSB2ZXJ0ZXhfZGlzdGFuY2UnXG4gICAgICArICcgdmVydGV4X2VjY2VudHJpY2l0eSB2ZXJ0ZXhfaW5fZGVncmVlIHZlcnRleF9vdXRfZGVncmVlIHZlcnRpY2VzIHZlcnRpY2VzX3RvX2N5Y2xlJ1xuICAgICAgKyAnIHZlcnRpY2VzX3RvX3BhdGggJXcgd2V5bCB3aGVlbF9ncmFwaCB3aWVuZXJfaW5kZXggd2lnbmVyXzNqIHdpZ25lcl82aidcbiAgICAgICsgJyB3aWduZXJfOWogd2l0aF9zdGRvdXQgd3JpdGVfYmluYXJ5X2RhdGEgd3JpdGVieXRlIHdyaXRlX2RhdGEgd3JpdGVmaWxlIHdyb25za2lhbidcbiAgICAgICsgJyB4cmVkdWNlIHh0aHJ1ICV5IFplaWxiZXJnZXIgemVyb2VxdWl2IHplcm9mb3IgemVyb21hdHJpeCB6ZXJvbWF0cml4cCB6ZXRhJ1xuICAgICAgKyAnIHpnZWV2IHpoZWV2IHpsYW5nZSB6bl9hZGRfdGFibGUgem5fY2FybWljaGFlbF9sYW1iZGEgem5fY2hhcmFjdGVyaXN0aWNfZmFjdG9ycydcbiAgICAgICsgJyB6bl9kZXRlcm1pbmFudCB6bl9mYWN0b3JfZ2VuZXJhdG9ycyB6bl9pbnZlcnRfYnlfbHUgem5fbG9nIHpuX211bHRfdGFibGUnXG4gICAgICArICcgYWJzYm94Y2hhciBhY3RpdmVjb250ZXh0cyBhZGFwdF9kZXB0aCBhZGRpdGl2ZSBhZGltIGFmb3JtIGFsZ2VicmFpYydcbiAgICAgICsgJyBhbGdlcHNpbG9uIGFsZ2V4YWN0IGFsaWFzZXMgYWxsYnV0IGFsbF9kb3RzaW1wX2Rlbm9tcyBhbGxvY2F0aW9uIGFsbHN5bSBhbHBoYWJldGljJ1xuICAgICAgKyAnIGFuaW1hdGlvbiBhbnRpc3ltbWV0cmljIGFycmF5cyBhc2tleHAgYXNzdW1lX3BvcyBhc3N1bWVfcG9zX3ByZWQgYXNzdW1lc2NhbGFyJ1xuICAgICAgKyAnIGFzeW1ib2wgYXRvbWdyYWQgYXRyaWcxIGF4ZXMgYXhpc18zZCBheGlzX2JvdHRvbSBheGlzX2xlZnQgYXhpc19yaWdodCBheGlzX3RvcCdcbiAgICAgICsgJyBhemltdXRoIGJhY2tncm91bmQgYmFja2dyb3VuZF9jb2xvciBiYWNrc3Vic3QgYmVybGVmYWN0IGJlcm5zdGVpbl9leHBsaWNpdCdcbiAgICAgICsgJyBiZXNzZWxleHBhbmQgYmV0YV9hcmdzX3N1bV90b19pbnRlZ2VyIGJldGFfZXhwYW5kIGJmdG9yYXQgYmZ0cnVuYyBiaW5kdGVzdCdcbiAgICAgICsgJyBib3JkZXIgYm91bmRhcmllc19hcnJheSBib3ggYm94Y2hhciBicmVha3VwICVjIGNhcHBpbmcgY2F1Y2h5c3VtIGNicmFuZ2UnXG4gICAgICArICcgY2J0aWNzIGNlbnRlciBjZmxlbmd0aCBjZnJhbWVfZmxhZyBjbm9ubWV0X2ZsYWcgY29sb3IgY29sb3JfYmFyIGNvbG9yX2Jhcl90aWNzJ1xuICAgICAgKyAnIGNvbG9yYm94IGNvbHVtbnMgY29tbXV0YXRpdmUgY29tcGxleCBjb25lIGNvbnRleHQgY29udGV4dHMgY29udG91ciBjb250b3VyX2xldmVscydcbiAgICAgICsgJyBjb3NucGlmbGFnIGN0YXlwb3YgY3RheXB0IGN0YXlzd2l0Y2ggY3RheXZhciBjdF9jb29yZHMgY3RvcnNpb25fZmxhZyBjdHJnc2ltcCdcbiAgICAgICsgJyBjdWJlIGN1cnJlbnRfbGV0X3J1bGVfcGFja2FnZSBjeWxpbmRlciBkYXRhX2ZpbGVfbmFtZSBkZWJ1Z21vZGUgZGVjcmVhc2luZydcbiAgICAgICsgJyBkZWZhdWx0X2xldF9ydWxlX3BhY2thZ2UgZGVsYXkgZGVwZW5kZW5jaWVzIGRlcml2YWJicmV2IGRlcml2c3Vic3QgZGV0b3V0J1xuICAgICAgKyAnIGRpYWdtZXRyaWMgZGlmZiBkaW0gZGltZW5zaW9ucyBkaXNwZmxhZyBkaXNwbGF5MmR8MTAgZGlzcGxheV9mb3JtYXRfaW50ZXJuYWwnXG4gICAgICArICcgZGlzdHJpYnV0ZV9vdmVyIGRvYWxsbXhvcHMgZG9tYWluIGRvbXhleHB0IGRvbXhteG9wcyBkb214bmN0aW1lcyBkb250ZmFjdG9yJ1xuICAgICAgKyAnIGRvc2NteG9wcyBkb3NjbXhwbHVzIGRvdDBuc2NzaW1wIGRvdDBzaW1wIGRvdDFzaW1wIGRvdGFzc29jIGRvdGNvbnN0cnVsZXMnXG4gICAgICArICcgZG90ZGlzdHJpYiBkb3RleHB0c2ltcCBkb3RpZGVudCBkb3RzY3J1bGVzIGRyYXdfZ3JhcGhfcHJvZ3JhbSBkcmF3X3JlYWxwYXJ0J1xuICAgICAgKyAnIGVkZ2VfY29sb3IgZWRnZV9jb2xvcmluZyBlZGdlX3BhcnRpdGlvbiBlZGdlX3R5cGUgZWRnZV93aWR0aCAlZWRpc3BmbGFnJ1xuICAgICAgKyAnIGVsZXZhdGlvbiAlZW1vZGUgZW5kcGhpIGVuZHRoZXRhIGVuZ2luZWVyaW5nX2Zvcm1hdF9mbG9hdHMgZW5oYW5jZWQzZCAlZW51bWVyJ1xuICAgICAgKyAnIGVwc2lsb25fbHAgZXJmZmxhZyBlcmZfcmVwcmVzZW50YXRpb24gZXJyb3Jtc2cgZXJyb3Jfc2l6ZSBlcnJvcl9zeW1zIGVycm9yX3R5cGUnXG4gICAgICArICcgJWVfdG9fbnVtbG9nIGV2YWwgZXZlbiBldmVuZnVuIGV2ZmxhZyBldmZ1biBldl9wb2ludCBleHBhbmR3cnRfZGVub20gZXhwaW50ZXhwYW5kJ1xuICAgICAgKyAnIGV4cGludHJlcCBleHBvbiBleHBvcCBleHB0ZGlzcGZsYWcgZXhwdGlzb2xhdGUgZXhwdHN1YnN0IGZhY2V4cGFuZCBmYWNzdW1fY29tYmluZSdcbiAgICAgICsgJyBmYWN0bGltIGZhY3RvcmZsYWcgZmFjdG9yaWFsX2V4cGFuZCBmYWN0b3JzX29ubHkgZmIgZmVhdHVyZSBmZWF0dXJlcydcbiAgICAgICsgJyBmaWxlX25hbWUgZmlsZV9vdXRwdXRfYXBwZW5kIGZpbGVfc2VhcmNoX2RlbW8gZmlsZV9zZWFyY2hfbGlzcCBmaWxlX3NlYXJjaF9tYXhpbWF8MTAnXG4gICAgICArICcgZmlsZV9zZWFyY2hfdGVzdHMgZmlsZV9zZWFyY2hfdXNhZ2UgZmlsZV90eXBlX2xpc3AgZmlsZV90eXBlX21heGltYXwxMCBmaWxsX2NvbG9yJ1xuICAgICAgKyAnIGZpbGxfZGVuc2l0eSBmaWxsZWRfZnVuYyBmaXhlZF92ZXJ0aWNlcyBmbGlwZmxhZyBmbG9hdDJiZiBmb250IGZvbnRfc2l6ZSdcbiAgICAgICsgJyBmb3J0aW5kZW50IGZvcnRzcGFjZXMgZnBwcmVjIGZwcHJpbnRwcmVjIGZ1bmN0aW9ucyBnYW1tYV9leHBhbmQgZ2FtbWFsaW0nXG4gICAgICArICcgZ2RldCBnZW5pbmRleCBnZW5zdW1udW0gR0dGQ0ZNQVggR0dGSU5GSU5JVFkgZ2xvYmFsc29sdmUgZ251cGxvdF9jb21tYW5kJ1xuICAgICAgKyAnIGdudXBsb3RfY3VydmVfc3R5bGVzIGdudXBsb3RfY3VydmVfdGl0bGVzIGdudXBsb3RfZGVmYXVsdF90ZXJtX2NvbW1hbmQgZ251cGxvdF9kdW1iX3Rlcm1fY29tbWFuZCdcbiAgICAgICsgJyBnbnVwbG90X2ZpbGVfYXJncyBnbnVwbG90X2ZpbGVfbmFtZSBnbnVwbG90X291dF9maWxlIGdudXBsb3RfcGRmX3Rlcm1fY29tbWFuZCdcbiAgICAgICsgJyBnbnVwbG90X3BtM2QgZ251cGxvdF9wbmdfdGVybV9jb21tYW5kIGdudXBsb3RfcG9zdGFtYmxlIGdudXBsb3RfcHJlYW1ibGUnXG4gICAgICArICcgZ251cGxvdF9wc190ZXJtX2NvbW1hbmQgZ251cGxvdF9zdmdfdGVybV9jb21tYW5kIGdudXBsb3RfdGVybSBnbnVwbG90X3ZpZXdfYXJncydcbiAgICAgICsgJyBHb3NwZXJfaW5fWmVpbGJlcmdlciBncmFkZWZzIGdyaWQgZ3JpZDJkIGdyaW5kIGhhbGZhbmdsZXMgaGVhZF9hbmdsZSBoZWFkX2JvdGgnXG4gICAgICArICcgaGVhZF9sZW5ndGggaGVhZF90eXBlIGhlaWdodCBoeXBlcmdlb21ldHJpY19yZXByZXNlbnRhdGlvbiAlaWFyZ3MgaWJhc2UnXG4gICAgICArICcgaWNjMSBpY2MyIGljb3VudGVyIGlkdW1teXggaWVxbnByaW50IGlmYiBpZmMxIGlmYzIgaWZnIGlmZ2kgaWZyIGlmcmFtZV9icmFja2V0X2Zvcm0nXG4gICAgICArICcgaWZyaSBpZ2Vvd2VkZ2VfZmxhZyBpa3QxIGlrdDIgaW1hZ2luYXJ5IGluY2hhciBpbmNyZWFzaW5nIGluZmV2YWwnXG4gICAgICArICcgaW5maW5pdHkgaW5mbGFnIGluZm9saXN0cyBpbm0gaW5tYzEgaW5tYzIgaW50YW5hbHlzaXMgaW50ZWdlciBpbnRlZ2VydmFsdWVkJ1xuICAgICAgKyAnIGludGVncmF0ZV91c2Vfcm9vdHNvZiBpbnRlZ3JhdGlvbl9jb25zdGFudCBpbnRlZ3JhdGlvbl9jb25zdGFudF9jb3VudGVyIGludGVycG9sYXRlX2NvbG9yJ1xuICAgICAgKyAnIGludGZhY2xpbSBpcF9ncmlkIGlwX2dyaWRfaW4gaXJyYXRpb25hbCBpc29sYXRlX3dydF90aW1lcyBpdGVyYXRpb25zIGl0cidcbiAgICAgICsgJyBqdWxpYV9wYXJhbWV0ZXIgJWsxICVrMiBrZWVwZmxvYXQga2V5IGtleV9wb3Mga2ludmFyaWFudCBrdCBsYWJlbCBsYWJlbF9hbGlnbm1lbnQnXG4gICAgICArICcgbGFiZWxfb3JpZW50YXRpb24gbGFiZWxzIGxhc3NvY2lhdGl2ZSBsYmZnc19uY29ycmVjdGlvbnMgbGJmZ3NfbmZldmFsX21heCdcbiAgICAgICsgJyBsZWZ0anVzdCBsZWdlbmQgbGV0cmF0IGxldF9ydWxlX3BhY2thZ2VzIGxmZyBsZyBsaG9zcGl0YWxsaW0gbGltc3Vic3QgbGluZWFyJ1xuICAgICAgKyAnIGxpbmVhcl9zb2x2ZXIgbGluZWNoYXIgbGluZWx8MTAgbGluZW51bSBsaW5lX3R5cGUgbGluZXdpZHRoIGxpbmVfd2lkdGggbGluc29sdmVfcGFyYW1zJ1xuICAgICAgKyAnIGxpbnNvbHZld2FybiBsaXNwZGlzcCBsaXN0YXJpdGggbGlzdGNvbnN0dmFycyBsaXN0ZHVtbXl2YXJzIGxteGNoYXIgbG9hZF9wYXRobmFtZSdcbiAgICAgICsgJyBsb2FkcHJpbnQgbG9nYWJzIGxvZ2FyYyBsb2djYiBsb2djb25jb2VmZnAgbG9nZXhwYW5kIGxvZ25lZ2ludCBsb2dzaW1wIGxvZ3gnXG4gICAgICArICcgbG9neF9zZWNvbmRhcnkgbG9neSBsb2d5X3NlY29uZGFyeSBsb2d6IGxyaWVtIG0xcGJyYW5jaCBtYWNyb2V4cGFuc2lvbiBtYWNyb3MnXG4gICAgICArICcgbWFpbnZhciBtYW51YWxfZGVtbyBtYXBlcnJvciBtYXBwcmludCBtYXRyaXhfZWxlbWVudF9hZGQgbWF0cml4X2VsZW1lbnRfbXVsdCdcbiAgICAgICsgJyBtYXRyaXhfZWxlbWVudF90cmFuc3Bvc2UgbWF4YXBwbHlkZXB0aCBtYXhhcHBseWhlaWdodCBtYXhpbWFfdGVtcGRpcnwxMCBtYXhpbWFfdXNlcmRpcnwxMCdcbiAgICAgICsgJyBtYXhuZWdleCBNQVhfT1JEIG1heHBvc2V4IG1heHBzaWZyYWNkZW5vbSBtYXhwc2lmcmFjbnVtIG1heHBzaW5lZ2ludCBtYXhwc2lwb3NpbnQnXG4gICAgICArICcgbWF4dGF5b3JkZXIgbWVzaF9saW5lc19jb2xvciBtZXRob2QgbW9kX2JpZ19wcmltZSBtb2RlX2NoZWNrX2Vycm9ycCdcbiAgICAgICsgJyBtb2RlX2NoZWNrcCBtb2RlX2NoZWNrX3dhcm5wIG1vZF90ZXN0IG1vZF90aHJlc2hvbGQgbW9kdWxhcl9saW5lYXJfc29sdmVyJ1xuICAgICAgKyAnIG1vZHVsdXMgbXVsdGlwbGljYXRpdmUgbXVsdGlwbGljaXRpZXMgbXlvcHRpb25zIG5hcnkgbmVnZGlzdHJpYiBuZWdzdW1kaXNwZmxhZydcbiAgICAgICsgJyBuZXdsaW5lIG5ld3RvbmVwc2lsb24gbmV3dG9ubWF4aXRlciBuZXh0bGF5ZXJmYWN0b3IgbmljZWluZGljZXNwcmVmIG5tIG5tYydcbiAgICAgICsgJyBub2V2YWwgbm9sYWJlbHMgbm9uZWdhdGl2ZV9scCBub25pbnRlZ2VyIG5vbnNjYWxhciBub3VuIG5vdW5kaXNwIG5vdW5zIG5wJ1xuICAgICAgKyAnIG5waSBudGlja3MgbnRyaWcgbnVtZXIgbnVtZXJfcGJyYW5jaCBvYmFzZSBvZGQgb2RkZnVuIG9wYWNpdHkgb3Bwcm9wZXJ0aWVzJ1xuICAgICAgKyAnIG9wc3Vic3Qgb3B0aW1wcmVmaXggb3B0aW9uc2V0IG9yaWVudGF0aW9uIG9yaWdpbiBvcnRob3BvbHlfcmV0dXJuc19pbnRlcnZhbHMnXG4gICAgICArICcgb3V0YXRpdmUgb3V0Y2hhciBwYWNrYWdlZmlsZSBwYWxldHRlIHBhcnRzd2l0Y2ggcGRmX2ZpbGUgcGZlZm9ybWF0IHBoaXJlc29sdXRpb24nXG4gICAgICArICcgJXBpYXJncyBwaWVjZSBwaXZvdF9jb3VudF9zeCBwaXZvdF9tYXhfc3ggcGxvdF9mb3JtYXQgcGxvdF9vcHRpb25zIHBsb3RfcmVhbHBhcnQnXG4gICAgICArICcgcG5nX2ZpbGUgcG9jaGhhbW1lcl9tYXhfaW5kZXggcG9pbnRzIHBvaW50c2l6ZSBwb2ludF9zaXplIHBvaW50c19qb2luZWQgcG9pbnRfdHlwZSdcbiAgICAgICsgJyBwb2lzbGltIHBvaXNzb24gcG9seV9jb2VmZmljaWVudF9yaW5nIHBvbHlfZWxpbWluYXRpb25fb3JkZXIgcG9seWZhY3RvciBwb2x5X2dyb2JuZXJfYWxnb3JpdGhtJ1xuICAgICAgKyAnIHBvbHlfZ3JvYm5lcl9kZWJ1ZyBwb2x5X21vbm9taWFsX29yZGVyIHBvbHlfcHJpbWFyeV9lbGltaW5hdGlvbl9vcmRlciBwb2x5X3JldHVybl90ZXJtX2xpc3QnXG4gICAgICArICcgcG9seV9zZWNvbmRhcnlfZWxpbWluYXRpb25fb3JkZXIgcG9seV90b3BfcmVkdWN0aW9uX29ubHkgcG9zZnVuIHBvc2l0aW9uJ1xuICAgICAgKyAnIHBvd2VyZGlzcCBwcmVkIHByZWRlcnJvciBwcmltZXBfbnVtYmVyX29mX3Rlc3RzIHByb2R1Y3RfdXNlX2dhbW1hIHByb2dyYW0nXG4gICAgICArICcgcHJvZ3JhbW1vZGUgcHJvbW90ZV9mbG9hdF90b19iaWdmbG9hdCBwcm9tcHQgcHJvcG9ydGlvbmFsX2F4ZXMgcHJvcHMgcHNleHBhbmQnXG4gICAgICArICcgcHNfZmlsZSByYWRleHBhbmQgcmFkaXVzIHJhZHN1YnN0ZmxhZyByYXNzb2NpYXRpdmUgcmF0YWxnZGVub20gcmF0Y2hyaXN0b2YnXG4gICAgICArICcgcmF0ZGVub21kaXZpZGUgcmF0ZWluc3RlaW4gcmF0ZXBzaWxvbiByYXRmYWMgcmF0aW9uYWwgcmF0bXggcmF0cHJpbnQgcmF0cmllbWFubidcbiAgICAgICsgJyByYXRzaW1wZXhwb25zIHJhdHZhcnN3aXRjaCByYXR3ZWlnaHRzIHJhdHdleWwgcmF0d3RsdmwgcmVhbCByZWFsb25seSByZWRyYXcnXG4gICAgICArICcgcmVmY2hlY2sgcmVzb2x1dGlvbiByZXN0YXJ0IHJlc3VsdGFudCByaWMgcmllbSBybXhjaGFyICVybnVtX2xpc3Qgcm9tYmVyZ2FicydcbiAgICAgICsgJyByb21iZXJnaXQgcm9tYmVyZ21pbiByb21iZXJndG9sIHJvb3RzY29ubW9kZSByb290c2Vwc2lsb24gcnVuX3ZpZXdlciBzYW1lX3h5J1xuICAgICAgKyAnIHNhbWVfeHl6IHNhdmVkZWYgc2F2ZWZhY3RvcnMgc2NhbGFyIHNjYWxhcm1hdHJpeHAgc2NhbGUgc2NhbGVfbHAgc2V0Y2hlY2snXG4gICAgICArICcgc2V0Y2hlY2ticmVhayBzZXR2YWwgc2hvd19lZGdlX2NvbG9yIHNob3dfZWRnZXMgc2hvd19lZGdlX3R5cGUgc2hvd19lZGdlX3dpZHRoJ1xuICAgICAgKyAnIHNob3dfaWQgc2hvd19sYWJlbCBzaG93dGltZSBzaG93X3ZlcnRleF9jb2xvciBzaG93X3ZlcnRleF9zaXplIHNob3dfdmVydGV4X3R5cGUnXG4gICAgICArICcgc2hvd192ZXJ0aWNlcyBzaG93X3dlaWdodCBzaW1wIHNpbXBsaWZpZWRfb3V0cHV0IHNpbXBsaWZ5X3Byb2R1Y3RzIHNpbXBwcm9kdWN0J1xuICAgICAgKyAnIHNpbXBzdW0gc2lubnBpZmxhZyBzb2x2ZWRlY29tcG9zZXMgc29sdmVleHBsaWNpdCBzb2x2ZWZhY3RvcnMgc29sdmVudWxsd2FybidcbiAgICAgICsgJyBzb2x2ZXJhZGNhbiBzb2x2ZXRyaWd3YXJuIHNwYWNlIHNwYXJzZSBzcGhlcmUgc3ByaW5nX2VtYmVkZGluZ19kZXB0aCBzcXJ0ZGlzcGZsYWcnXG4gICAgICArICcgc3RhcmRpc3Agc3RhcnRwaGkgc3RhcnR0aGV0YSBzdGF0c19udW1lciBzdHJpbmdkaXNwIHN0cnVjdHVyZXMgc3R5bGUgc3VibGlzX2FwcGx5X2xhbWJkYSdcbiAgICAgICsgJyBzdWJudW1zaW1wIHN1bWV4cGFuZCBzdW1zcGxpdGZhY3Qgc3VyZmFjZSBzdXJmYWNlX2hpZGUgc3ZnX2ZpbGUgc3ltbWV0cmljJ1xuICAgICAgKyAnIHRhYiB0YXlsb3JkZXB0aCB0YXlsb3JfbG9nZXhwYW5kIHRheWxvcl9vcmRlcl9jb2VmZmljaWVudHMgdGF5bG9yX3RydW5jYXRlX3BvbHlub21pYWxzJ1xuICAgICAgKyAnIHRlbnNvcmtpbGwgdGVybWluYWwgdGVzdHN1aXRlX2ZpbGVzIHRoZXRhcmVzb2x1dGlvbiB0aW1lcl9kZXZhbHVlIHRpdGxlIHRsaW1zd2l0Y2gnXG4gICAgICArICcgdHIgdHJhY2sgdHJhbnNjb21waWxlIHRyYW5zZm9ybSB0cmFuc2Zvcm1feHkgdHJhbnNsYXRlX2Zhc3RfYXJyYXlzIHRyYW5zcGFyZW50J1xuICAgICAgKyAnIHRyYW5zcnVuIHRyX2FycmF5X2FzX3JlZiB0cl9ib3VuZF9mdW5jdGlvbl9hcHBseXAgdHJfZmlsZV90dHlfbWVzc2FnZXNwIHRyX2Zsb2F0X2Nhbl9icmFuY2hfY29tcGxleCdcbiAgICAgICsgJyB0cl9mdW5jdGlvbl9jYWxsX2RlZmF1bHQgdHJpZ2V4cGFuZHBsdXMgdHJpZ2V4cGFuZHRpbWVzIHRyaWdpbnZlcnNlcyB0cmlnc2lnbidcbiAgICAgICsgJyB0cml2aWFsX3NvbHV0aW9ucyB0cl9udW1lciB0cl9vcHRpbWl6ZV9tYXhfbG9vcCB0cl9zZW1pY29tcGlsZSB0cl9zdGF0ZV92YXJzJ1xuICAgICAgKyAnIHRyX3dhcm5fYmFkX2Z1bmN0aW9uX2NhbGxzIHRyX3dhcm5fZmV4cHIgdHJfd2Fybl9tZXZhbCB0cl93YXJuX21vZGUnXG4gICAgICArICcgdHJfd2Fybl91bmRlY2xhcmVkIHRyX3dhcm5fdW5kZWZpbmVkX3ZhcmlhYmxlIHRzdGVwIHR0eW9mZiB0dWJlX2V4dHJlbWVzJ1xuICAgICAgKyAnIHVmZyB1ZyAldW5pdGV4cGFuZCB1bml0X3ZlY3RvcnMgdXJpYyB1cmllbSB1c2VfZmFzdF9hcnJheXMgdXNlcl9wcmVhbWJsZSdcbiAgICAgICsgJyB1c2Vyc2V0dW5pdHMgdmFsdWVzIHZlY3RfY3Jvc3MgdmVyYm9zZSB2ZXJ0ZXhfY29sb3IgdmVydGV4X2NvbG9yaW5nIHZlcnRleF9wYXJ0aXRpb24nXG4gICAgICArICcgdmVydGV4X3NpemUgdmVydGV4X3R5cGUgdmlldyB3YXJuaW5ncyB3ZXlsIHdpZHRoIHdpbmRvd25hbWUgd2luZG93dGl0bGUgd2lyZWRfc3VyZmFjZSdcbiAgICAgICsgJyB3aXJlZnJhbWUgeGF4aXMgeGF4aXNfY29sb3IgeGF4aXNfc2Vjb25kYXJ5IHhheGlzX3R5cGUgeGF4aXNfd2lkdGggeGxhYmVsJ1xuICAgICAgKyAnIHhsYWJlbF9zZWNvbmRhcnkgeGxlbmd0aCB4cmFuZ2UgeHJhbmdlX3NlY29uZGFyeSB4dGljcyB4dGljc19heGlzIHh0aWNzX3JvdGF0ZSdcbiAgICAgICsgJyB4dGljc19yb3RhdGVfc2Vjb25kYXJ5IHh0aWNzX3NlY29uZGFyeSB4dGljc19zZWNvbmRhcnlfYXhpcyB4dV9ncmlkIHhfdm94ZWwnXG4gICAgICArICcgeHlfZmlsZSB4eXBsYW5lIHh5X3NjYWxlIHlheGlzIHlheGlzX2NvbG9yIHlheGlzX3NlY29uZGFyeSB5YXhpc190eXBlIHlheGlzX3dpZHRoJ1xuICAgICAgKyAnIHlsYWJlbCB5bGFiZWxfc2Vjb25kYXJ5IHlsZW5ndGggeXJhbmdlIHlyYW5nZV9zZWNvbmRhcnkgeXRpY3MgeXRpY3NfYXhpcydcbiAgICAgICsgJyB5dGljc19yb3RhdGUgeXRpY3Nfcm90YXRlX3NlY29uZGFyeSB5dGljc19zZWNvbmRhcnkgeXRpY3Nfc2Vjb25kYXJ5X2F4aXMnXG4gICAgICArICcgeXZfZ3JpZCB5X3ZveGVsIHl4X3JhdGlvIHpheGlzIHpheGlzX2NvbG9yIHpheGlzX3R5cGUgemF4aXNfd2lkdGggemVyb2EgemVyb2InXG4gICAgICArICcgemVyb2Jlcm4gemV0YSVwaSB6bGFiZWwgemxhYmVsX3JvdGF0ZSB6bGVuZ3RoIHptaW4gem5fcHJpbXJvb3RfbGltaXQgem5fcHJpbXJvb3RfcHJldGVzdCc7XG4gIHZhciBTWU1CT0xTID0gJ18gX18gJXwwICUlfDAnO1xuXG4gIHJldHVybiB7XG4gICAgbGV4ZW1lczogJ1tBLVphLXpfJV1bMC05QS1aYS16XyVdKicsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgICBidWlsdF9pbjogQlVJTFRJTl9GVU5DVElPTlMsXG4gICAgICBzeW1ib2w6IFNZTUJPTFMsXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46ICcvXFxcXConLFxuICAgICAgICBlbmQ6ICdcXFxcKi8nLFxuICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gZmxvYXQgbnVtYmVyIHcvIGV4cG9uZW50XG4gICAgICAgICAgICAvLyBobW0sIEkgd29uZGVyIGlmIHdlIG91Z2h0IHRvIGluY2x1ZGUgb3RoZXIgZXhwb25lbnQgbWFya2Vycz9cbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoXFxcXGQrfFxcXFxkK1xcXFwufFxcXFwuXFxcXGQrfFxcXFxkK1xcXFwuXFxcXGQrKVtFZV1bLStdP1xcXFxkK1xcXFxiJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGJpZ2Zsb2F0IG51bWJlclxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcZCt8XFxcXGQrXFxcXC58XFxcXC5cXFxcZCt8XFxcXGQrXFxcXC5cXFxcZCspW0JiXVstK10/XFxcXGQrXFxcXGInLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gZmxvYXQgbnVtYmVyIHcvb3V0IGV4cG9uZW50XG4gICAgICAgICAgICAvLyBEb2Vzbid0IHNlZW0gdG8gcmVjb2duaXplIGZsb2F0cyB3aGljaCBzdGFydCB3aXRoICcuJ1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcLlxcXFxkK3xcXFxcZCtcXFxcLlxcXFxkKylcXFxcYicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBpbnRlZ2VyIGluIGJhc2UgdXAgdG8gMzZcbiAgICAgICAgICAgIC8vIERvZXNuJ3Qgc2VlbSB0byByZWNvZ25pemUgaW50ZWdlcnMgd2hpY2ggZW5kIHdpdGggJy4nXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKFxcXFxkK3wwWzAtOUEtWmEtel0rKVxcXFwuP1xcXFxiJyxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC9AL1xuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOlxuICAgICAgJ2ludCBmbG9hdCBzdHJpbmcgdmVjdG9yIG1hdHJpeCBpZiBlbHNlIHN3aXRjaCBjYXNlIGRlZmF1bHQgd2hpbGUgZG8gZm9yIGluIGJyZWFrICcgK1xuICAgICAgJ2NvbnRpbnVlIGdsb2JhbCBwcm9jIHJldHVybiBhYm91dCBhYnMgYWRkQXR0ciBhZGRBdHRyaWJ1dGVFZGl0b3JOb2RlSGVscCBhZGREeW5hbWljICcgK1xuICAgICAgJ2FkZE5ld1NoZWxmVGFiIGFkZFBQIGFkZFBhbmVsQ2F0ZWdvcnkgYWRkUHJlZml4VG9OYW1lIGFkdmFuY2VUb05leHREcml2ZW5LZXkgJyArXG4gICAgICAnYWZmZWN0ZWROZXQgYWZmZWN0cyBhaW1Db25zdHJhaW50IGFpciBhbGlhcyBhbGlhc0F0dHIgYWxpZ24gYWxpZ25DdHggYWxpZ25DdXJ2ZSAnICtcbiAgICAgICdhbGlnblN1cmZhY2UgYWxsVmlld0ZpdCBhbWJpZW50TGlnaHQgYW5nbGUgYW5nbGVCZXR3ZWVuIGFuaW1Db25lIGFuaW1DdXJ2ZUVkaXRvciAnICtcbiAgICAgICdhbmltRGlzcGxheSBhbmltVmlldyBhbm5vdGF0ZSBhcHBlbmRTdHJpbmdBcnJheSBhcHBsaWNhdGlvbk5hbWUgYXBwbHlBdHRyUHJlc2V0ICcgK1xuICAgICAgJ2FwcGx5VGFrZSBhcmNMZW5EaW1Db250ZXh0IGFyY0xlbmd0aERpbWVuc2lvbiBhcmNsZW4gYXJyYXlNYXBwZXIgYXJ0M2RQYWludEN0eCAnICtcbiAgICAgICdhcnRBdHRyQ3R4IGFydEF0dHJQYWludFZlcnRleEN0eCBhcnRBdHRyU2tpblBhaW50Q3R4IGFydEF0dHJUb29sIGFydEJ1aWxkUGFpbnRNZW51ICcgK1xuICAgICAgJ2FydEZsdWlkQXR0ckN0eCBhcnRQdXR0eUN0eCBhcnRTZWxlY3RDdHggYXJ0U2V0UGFpbnRDdHggYXJ0VXNlclBhaW50Q3R4IGFzc2lnbkNvbW1hbmQgJyArXG4gICAgICAnYXNzaWduSW5wdXREZXZpY2UgYXNzaWduVmlld3BvcnRGYWN0b3JpZXMgYXR0YWNoQ3VydmUgYXR0YWNoRGV2aWNlQXR0ciBhdHRhY2hTdXJmYWNlICcgK1xuICAgICAgJ2F0dHJDb2xvclNsaWRlckdycCBhdHRyQ29tcGF0aWJpbGl0eSBhdHRyQ29udHJvbEdycCBhdHRyRW51bU9wdGlvbk1lbnUgJyArXG4gICAgICAnYXR0ckVudW1PcHRpb25NZW51R3JwIGF0dHJGaWVsZEdycCBhdHRyRmllbGRTbGlkZXJHcnAgYXR0ck5hdmlnYXRpb25Db250cm9sR3JwICcgK1xuICAgICAgJ2F0dHJQcmVzZXRFZGl0V2luIGF0dHJpYnV0ZUV4aXN0cyBhdHRyaWJ1dGVJbmZvIGF0dHJpYnV0ZU1lbnUgYXR0cmlidXRlUXVlcnkgJyArXG4gICAgICAnYXV0b0tleWZyYW1lIGF1dG9QbGFjZSBiYWtlQ2xpcCBiYWtlRmx1aWRTaGFkaW5nIGJha2VQYXJ0aWFsSGlzdG9yeSBiYWtlUmVzdWx0cyAnICtcbiAgICAgICdiYWtlU2ltdWxhdGlvbiBiYXNlbmFtZSBiYXNlbmFtZUV4IGJhdGNoUmVuZGVyIGJlc3NlbCBiZXZlbCBiZXZlbFBsdXMgYmluTWVtYmVyc2hpcCAnICtcbiAgICAgICdiaW5kU2tpbiBibGVuZDIgYmxlbmRTaGFwZSBibGVuZFNoYXBlRWRpdG9yIGJsZW5kU2hhcGVQYW5lbCBibGVuZFR3b0F0dHIgYmxpbmREYXRhVHlwZSAnICtcbiAgICAgICdib25lTGF0dGljZSBib3VuZGFyeSBib3hEb2xseUN0eCBib3hab29tQ3R4IGJ1ZmZlckN1cnZlIGJ1aWxkQm9va21hcmtNZW51ICcgK1xuICAgICAgJ2J1aWxkS2V5ZnJhbWVNZW51IGJ1dHRvbiBidXR0b25NYW5pcCBDQkcgY2FjaGVGaWxlIGNhY2hlRmlsZUNvbWJpbmUgY2FjaGVGaWxlTWVyZ2UgJyArXG4gICAgICAnY2FjaGVGaWxlVHJhY2sgY2FtZXJhIGNhbWVyYVZpZXcgY2FuQ3JlYXRlTWFuaXAgY2FudmFzIGNhcGl0YWxpemVTdHJpbmcgY2F0Y2ggJyArXG4gICAgICAnY2F0Y2hRdWlldCBjZWlsIGNoYW5nZVN1YmRpdkNvbXBvbmVudERpc3BsYXlMZXZlbCBjaGFuZ2VTdWJkaXZSZWdpb24gY2hhbm5lbEJveCAnICtcbiAgICAgICdjaGFyYWN0ZXIgY2hhcmFjdGVyTWFwIGNoYXJhY3Rlck91dGxpbmVFZGl0b3IgY2hhcmFjdGVyaXplIGNoZGlyIGNoZWNrQm94IGNoZWNrQm94R3JwICcgK1xuICAgICAgJ2NoZWNrRGVmYXVsdFJlbmRlckdsb2JhbHMgY2hvaWNlIGNpcmNsZSBjaXJjdWxhckZpbGxldCBjbGFtcCBjbGVhciBjbGVhckNhY2hlIGNsaXAgJyArXG4gICAgICAnY2xpcEVkaXRvciBjbGlwRWRpdG9yQ3VycmVudFRpbWVDdHggY2xpcFNjaGVkdWxlIGNsaXBTY2hlZHVsZXJPdXRsaW5lciBjbGlwVHJpbUJlZm9yZSAnICtcbiAgICAgICdjbG9zZUN1cnZlIGNsb3NlU3VyZmFjZSBjbHVzdGVyIGNtZEZpbGVPdXRwdXQgY21kU2Nyb2xsRmllbGRFeGVjdXRlciAnICtcbiAgICAgICdjbWRTY3JvbGxGaWVsZFJlcG9ydGVyIGNtZFNoZWxsIGNvYXJzZW5TdWJkaXZTZWxlY3Rpb25MaXN0IGNvbGxpc2lvbiBjb2xvciAnICtcbiAgICAgICdjb2xvckF0UG9pbnQgY29sb3JFZGl0b3IgY29sb3JJbmRleCBjb2xvckluZGV4U2xpZGVyR3JwIGNvbG9yU2xpZGVyQnV0dG9uR3JwICcgK1xuICAgICAgJ2NvbG9yU2xpZGVyR3JwIGNvbHVtbkxheW91dCBjb21tYW5kRWNobyBjb21tYW5kTGluZSBjb21tYW5kUG9ydCBjb21wYWN0SGFpclN5c3RlbSAnICtcbiAgICAgICdjb21wb25lbnRFZGl0b3IgY29tcG9zaXRpbmdJbnRlcm9wIGNvbXB1dGVQb2x5c2V0Vm9sdW1lIGNvbmRpdGlvbiBjb25lIGNvbmZpcm1EaWFsb2cgJyArXG4gICAgICAnY29ubmVjdEF0dHIgY29ubmVjdENvbnRyb2wgY29ubmVjdER5bmFtaWMgY29ubmVjdEpvaW50IGNvbm5lY3Rpb25JbmZvIGNvbnN0cmFpbiAnICtcbiAgICAgICdjb25zdHJhaW5WYWx1ZSBjb25zdHJ1Y3Rpb25IaXN0b3J5IGNvbnRhaW5lciBjb250YWluc011bHRpYnl0ZSBjb250ZXh0SW5mbyBjb250cm9sICcgK1xuICAgICAgJ2NvbnZlcnRGcm9tT2xkTGF5ZXJzIGNvbnZlcnRJZmZUb1BzZCBjb252ZXJ0TGlnaHRtYXAgY29udmVydFNvbGlkVHggY29udmVydFRlc3NlbGxhdGlvbiAnICtcbiAgICAgICdjb252ZXJ0VW5pdCBjb3B5QXJyYXkgY29weUZsZXhvciBjb3B5S2V5IGNvcHlTa2luV2VpZ2h0cyBjb3MgY3BCdXR0b24gY3BDYWNoZSAnICtcbiAgICAgICdjcENsb3RoU2V0IGNwQ29sbGlzaW9uIGNwQ29uc3RyYWludCBjcENvbnZDbG90aFRvTWVzaCBjcEZvcmNlcyBjcEdldFNvbHZlckF0dHIgY3BQYW5lbCAnICtcbiAgICAgICdjcFByb3BlcnR5IGNwUmlnaWRDb2xsaXNpb25GaWx0ZXIgY3BTZWFtIGNwU2V0RWRpdCBjcFNldFNvbHZlckF0dHIgY3BTb2x2ZXIgJyArXG4gICAgICAnY3BTb2x2ZXJUeXBlcyBjcFRvb2wgY3BVcGRhdGVDbG90aFVWcyBjcmVhdGVEaXNwbGF5TGF5ZXIgY3JlYXRlRHJhd0N0eCBjcmVhdGVFZGl0b3IgJyArXG4gICAgICAnY3JlYXRlTGF5ZXJlZFBzZEZpbGUgY3JlYXRlTW90aW9uRmllbGQgY3JlYXRlTmV3U2hlbGYgY3JlYXRlTm9kZSBjcmVhdGVSZW5kZXJMYXllciAnICtcbiAgICAgICdjcmVhdGVTdWJkaXZSZWdpb24gY3Jvc3MgY3Jvc3NQcm9kdWN0IGN0eEFib3J0IGN0eENvbXBsZXRpb24gY3R4RWRpdE1vZGUgY3R4VHJhdmVyc2UgJyArXG4gICAgICAnY3VycmVudEN0eCBjdXJyZW50VGltZSBjdXJyZW50VGltZUN0eCBjdXJyZW50VW5pdCBjdXJ2ZSBjdXJ2ZUFkZFB0Q3R4ICcgK1xuICAgICAgJ2N1cnZlQ1ZDdHggY3VydmVFUEN0eCBjdXJ2ZUVkaXRvckN0eCBjdXJ2ZUludGVyc2VjdCBjdXJ2ZU1vdmVFUEN0eCBjdXJ2ZU9uU3VyZmFjZSAnICtcbiAgICAgICdjdXJ2ZVNrZXRjaEN0eCBjdXRLZXkgY3ljbGVDaGVjayBjeWxpbmRlciBkYWdQb3NlIGRhdGUgZGVmYXVsdExpZ2h0TGlzdENoZWNrQm94ICcgK1xuICAgICAgJ2RlZmF1bHROYXZpZ2F0aW9uIGRlZmluZURhdGFTZXJ2ZXIgZGVmaW5lVmlydHVhbERldmljZSBkZWZvcm1lciBkZWdfdG9fcmFkIGRlbGV0ZSAnICtcbiAgICAgICdkZWxldGVBdHRyIGRlbGV0ZVNoYWRpbmdHcm91cHNBbmRNYXRlcmlhbHMgZGVsZXRlU2hlbGZUYWIgZGVsZXRlVUkgZGVsZXRlVW51c2VkQnJ1c2hlcyAnICtcbiAgICAgICdkZWxyYW5kc3RyIGRldGFjaEN1cnZlIGRldGFjaERldmljZUF0dHIgZGV0YWNoU3VyZmFjZSBkZXZpY2VFZGl0b3IgZGV2aWNlUGFuZWwgZGdJbmZvICcgK1xuICAgICAgJ2RnZGlydHkgZGdldmFsIGRndGltZXIgZGltV2hlbiBkaXJlY3RLZXlDdHggZGlyZWN0aW9uYWxMaWdodCBkaXJtYXAgZGlybmFtZSBkaXNhYmxlICcgK1xuICAgICAgJ2Rpc2Nvbm5lY3RBdHRyIGRpc2Nvbm5lY3RKb2ludCBkaXNrQ2FjaGUgZGlzcGxhY2VtZW50VG9Qb2x5IGRpc3BsYXlBZmZlY3RlZCAnICtcbiAgICAgICdkaXNwbGF5Q29sb3IgZGlzcGxheUN1bGwgZGlzcGxheUxldmVsT2ZEZXRhaWwgZGlzcGxheVByZWYgZGlzcGxheVJHQkNvbG9yICcgK1xuICAgICAgJ2Rpc3BsYXlTbW9vdGhuZXNzIGRpc3BsYXlTdGF0cyBkaXNwbGF5U3RyaW5nIGRpc3BsYXlTdXJmYWNlIGRpc3RhbmNlRGltQ29udGV4dCAnICtcbiAgICAgICdkaXN0YW5jZURpbWVuc2lvbiBkb0JsdXIgZG9sbHkgZG9sbHlDdHggZG9wZVNoZWV0RWRpdG9yIGRvdCBkb3RQcm9kdWN0ICcgK1xuICAgICAgJ2RvdWJsZVByb2ZpbGVCaXJhaWxTdXJmYWNlIGRyYWcgZHJhZ0F0dHJDb250ZXh0IGRyYWdnZXJDb250ZXh0IGRyb3BvZmZMb2NhdG9yICcgK1xuICAgICAgJ2R1cGxpY2F0ZSBkdXBsaWNhdGVDdXJ2ZSBkdXBsaWNhdGVTdXJmYWNlIGR5bkNhY2hlIGR5bkNvbnRyb2wgZHluRXhwb3J0IGR5bkV4cHJlc3Npb24gJyArXG4gICAgICAnZHluR2xvYmFscyBkeW5QYWludEVkaXRvciBkeW5QYXJ0aWNsZUN0eCBkeW5QcmVmIGR5blJlbEVkUGFuZWwgZHluUmVsRWRpdG9yICcgK1xuICAgICAgJ2R5bmFtaWNMb2FkIGVkaXRBdHRyTGltaXRzIGVkaXREaXNwbGF5TGF5ZXJHbG9iYWxzIGVkaXREaXNwbGF5TGF5ZXJNZW1iZXJzICcgK1xuICAgICAgJ2VkaXRSZW5kZXJMYXllckFkanVzdG1lbnQgZWRpdFJlbmRlckxheWVyR2xvYmFscyBlZGl0UmVuZGVyTGF5ZXJNZW1iZXJzIGVkaXRvciAnICtcbiAgICAgICdlZGl0b3JUZW1wbGF0ZSBlZmZlY3RvciBlbWl0IGVtaXR0ZXIgZW5hYmxlRGV2aWNlIGVuY29kZVN0cmluZyBlbmRTdHJpbmcgZW5kc1dpdGggZW52ICcgK1xuICAgICAgJ2VxdWl2YWxlbnQgZXF1aXZhbGVudFRvbCBlcmYgZXJyb3IgZXZhbCBldmFsRGVmZXJyZWQgZXZhbEVjaG8gZXZlbnQgJyArXG4gICAgICAnZXhhY3RXb3JsZEJvdW5kaW5nQm94IGV4Y2x1c2l2ZUxpZ2h0Q2hlY2tCb3ggZXhlYyBleGVjdXRlRm9yRWFjaE9iamVjdCBleGlzdHMgZXhwICcgK1xuICAgICAgJ2V4cHJlc3Npb24gZXhwcmVzc2lvbkVkaXRvckxpc3RlbiBleHRlbmRDdXJ2ZSBleHRlbmRTdXJmYWNlIGV4dHJ1ZGUgZmNoZWNrIGZjbG9zZSBmZW9mICcgK1xuICAgICAgJ2ZmbHVzaCBmZ2V0bGluZSBmZ2V0d29yZCBmaWxlIGZpbGVCcm93c2VyRGlhbG9nIGZpbGVEaWFsb2cgZmlsZUV4dGVuc2lvbiBmaWxlSW5mbyAnICtcbiAgICAgICdmaWxldGVzdCBmaWxsZXRDdXJ2ZSBmaWx0ZXIgZmlsdGVyQ3VydmUgZmlsdGVyRXhwYW5kIGZpbHRlclN0dWRpb0ltcG9ydCAnICtcbiAgICAgICdmaW5kQWxsSW50ZXJzZWN0aW9ucyBmaW5kQW5pbUN1cnZlcyBmaW5kS2V5ZnJhbWUgZmluZE1lbnVJdGVtIGZpbmRSZWxhdGVkU2tpbkNsdXN0ZXIgJyArXG4gICAgICAnZmluZGVyIGZpcnN0UGFyZW50T2YgZml0QnNwbGluZSBmbGV4b3IgZmxvYXRFcSBmbG9hdEZpZWxkIGZsb2F0RmllbGRHcnAgZmxvYXRTY3JvbGxCYXIgJyArXG4gICAgICAnZmxvYXRTbGlkZXIgZmxvYXRTbGlkZXIyIGZsb2F0U2xpZGVyQnV0dG9uR3JwIGZsb2F0U2xpZGVyR3JwIGZsb29yIGZsb3cgZmx1aWRDYWNoZUluZm8gJyArXG4gICAgICAnZmx1aWRFbWl0dGVyIGZsdWlkVm94ZWxJbmZvIGZsdXNoVW5kbyBmbW9kIGZvbnREaWFsb2cgZm9wZW4gZm9ybUxheW91dCBmb3JtYXQgZnByaW50ICcgK1xuICAgICAgJ2ZyYW1lTGF5b3V0IGZyZWFkIGZyZWVGb3JtRmlsbGV0IGZyZXdpbmQgZnJvbU5hdGl2ZVBhdGggZndyaXRlIGdhbW1hIGdhdXNzICcgK1xuICAgICAgJ2dlb21ldHJ5Q29uc3RyYWludCBnZXRBcHBsaWNhdGlvblZlcnNpb25Bc0Zsb2F0IGdldEF0dHIgZ2V0Q2xhc3NpZmljYXRpb24gJyArXG4gICAgICAnZ2V0RGVmYXVsdEJydXNoIGdldEZpbGVMaXN0IGdldEZsdWlkQXR0ciBnZXRJbnB1dERldmljZVJhbmdlIGdldE1heWFQYW5lbFR5cGVzICcgK1xuICAgICAgJ2dldE1vZGlmaWVycyBnZXRQYW5lbCBnZXRQYXJ0aWNsZUF0dHIgZ2V0UGx1Z2luUmVzb3VyY2UgZ2V0ZW52IGdldHBpZCBnbFJlbmRlciAnICtcbiAgICAgICdnbFJlbmRlckVkaXRvciBnbG9iYWxTdGl0Y2ggZ21hdGNoIGdvYWwgZ290b0JpbmRQb3NlIGdyYWJDb2xvciBncmFkaWVudENvbnRyb2wgJyArXG4gICAgICAnZ3JhZGllbnRDb250cm9sTm9BdHRyIGdyYXBoRG9sbHlDdHggZ3JhcGhTZWxlY3RDb250ZXh0IGdyYXBoVHJhY2tDdHggZ3Jhdml0eSBncmlkICcgK1xuICAgICAgJ2dyaWRMYXlvdXQgZ3JvdXAgZ3JvdXBPYmplY3RzQnlOYW1lIEhmQWRkQXR0cmFjdG9yVG9BUyBIZkFzc2lnbkFTIEhmQnVpbGRFcXVhbE1hcCAnICtcbiAgICAgICdIZkJ1aWxkRnVyRmlsZXMgSGZCdWlsZEZ1ckltYWdlcyBIZkNhbmNlbEFGUiBIZkNvbm5lY3RBU1RvSEYgSGZDcmVhdGVBdHRyYWN0b3IgJyArXG4gICAgICAnSGZEZWxldGVBUyBIZkVkaXRBUyBIZlBlcmZvcm1DcmVhdGVBUyBIZlJlbW92ZUF0dHJhY3RvckZyb21BUyBIZlNlbGVjdEF0dGFjaGVkICcgK1xuICAgICAgJ0hmU2VsZWN0QXR0cmFjdG9ycyBIZlVuQXNzaWduQVMgaGFyZGVuUG9pbnRDdXJ2ZSBoYXJkd2FyZSBoYXJkd2FyZVJlbmRlclBhbmVsICcgK1xuICAgICAgJ2hlYWRzVXBEaXNwbGF5IGhlYWRzVXBNZXNzYWdlIGhlbHAgaGVscExpbmUgaGVybWl0ZSBoaWRlIGhpbGl0ZSBoaXRUZXN0IGhvdEJveCBob3RrZXkgJyArXG4gICAgICAnaG90a2V5Q2hlY2sgaHN2X3RvX3JnYiBodWRCdXR0b24gaHVkU2xpZGVyIGh1ZFNsaWRlckJ1dHRvbiBod1JlZmxlY3Rpb25NYXAgaHdSZW5kZXIgJyArXG4gICAgICAnaHdSZW5kZXJMb2FkIGh5cGVyR3JhcGggaHlwZXJQYW5lbCBoeXBlclNoYWRlIGh5cG90IGljb25UZXh0QnV0dG9uIGljb25UZXh0Q2hlY2tCb3ggJyArXG4gICAgICAnaWNvblRleHRSYWRpb0J1dHRvbiBpY29uVGV4dFJhZGlvQ29sbGVjdGlvbiBpY29uVGV4dFNjcm9sbExpc3QgaWNvblRleHRTdGF0aWNMYWJlbCAnICtcbiAgICAgICdpa0hhbmRsZSBpa0hhbmRsZUN0eCBpa0hhbmRsZURpc3BsYXlTY2FsZSBpa1NvbHZlciBpa1NwbGluZUhhbmRsZUN0eCBpa1N5c3RlbSAnICtcbiAgICAgICdpa1N5c3RlbUluZm8gaWtma0Rpc3BsYXlNZXRob2QgaWxsdXN0cmF0b3JDdXJ2ZXMgaW1hZ2UgaW1mUGx1Z2lucyBpbmhlcml0VHJhbnNmb3JtICcgK1xuICAgICAgJ2luc2VydEpvaW50IGluc2VydEpvaW50Q3R4IGluc2VydEtleUN0eCBpbnNlcnRLbm90Q3VydmUgaW5zZXJ0S25vdFN1cmZhY2UgaW5zdGFuY2UgJyArXG4gICAgICAnaW5zdGFuY2VhYmxlIGluc3RhbmNlciBpbnRGaWVsZCBpbnRGaWVsZEdycCBpbnRTY3JvbGxCYXIgaW50U2xpZGVyIGludFNsaWRlckdycCAnICtcbiAgICAgICdpbnRlclRvVUkgaW50ZXJuYWxWYXIgaW50ZXJzZWN0IGlwckVuZ2luZSBpc0FuaW1DdXJ2ZSBpc0Nvbm5lY3RlZCBpc0RpcnR5IGlzUGFyZW50T2YgJyArXG4gICAgICAnaXNTYW1lT2JqZWN0IGlzVHJ1ZSBpc1ZhbGlkT2JqZWN0TmFtZSBpc1ZhbGlkU3RyaW5nIGlzVmFsaWRVaU5hbWUgaXNvbGF0ZVNlbGVjdCAnICtcbiAgICAgICdpdGVtRmlsdGVyIGl0ZW1GaWx0ZXJBdHRyIGl0ZW1GaWx0ZXJSZW5kZXIgaXRlbUZpbHRlclR5cGUgam9pbnQgam9pbnRDbHVzdGVyIGpvaW50Q3R4ICcgK1xuICAgICAgJ2pvaW50RGlzcGxheVNjYWxlIGpvaW50TGF0dGljZSBrZXlUYW5nZW50IGtleWZyYW1lIGtleWZyYW1lT3V0bGluZXIgJyArXG4gICAgICAna2V5ZnJhbWVSZWdpb25DdXJyZW50VGltZUN0eCBrZXlmcmFtZVJlZ2lvbkRpcmVjdEtleUN0eCBrZXlmcmFtZVJlZ2lvbkRvbGx5Q3R4ICcgK1xuICAgICAgJ2tleWZyYW1lUmVnaW9uSW5zZXJ0S2V5Q3R4IGtleWZyYW1lUmVnaW9uTW92ZUtleUN0eCBrZXlmcmFtZVJlZ2lvblNjYWxlS2V5Q3R4ICcgK1xuICAgICAgJ2tleWZyYW1lUmVnaW9uU2VsZWN0S2V5Q3R4IGtleWZyYW1lUmVnaW9uU2V0S2V5Q3R4IGtleWZyYW1lUmVnaW9uVHJhY2tDdHggJyArXG4gICAgICAna2V5ZnJhbWVTdGF0cyBsYXNzb0NvbnRleHQgbGF0dGljZSBsYXR0aWNlRGVmb3JtS2V5Q3R4IGxhdW5jaCBsYXVuY2hJbWFnZUVkaXRvciAnICtcbiAgICAgICdsYXllckJ1dHRvbiBsYXllcmVkU2hhZGVyUG9ydCBsYXllcmVkVGV4dHVyZVBvcnQgbGF5b3V0IGxheW91dERpYWxvZyBsaWdodExpc3QgJyArXG4gICAgICAnbGlnaHRMaXN0RWRpdG9yIGxpZ2h0TGlzdFBhbmVsIGxpZ2h0bGluayBsaW5lSW50ZXJzZWN0aW9uIGxpbmVhclByZWNpc2lvbiBsaW5zdGVwICcgK1xuICAgICAgJ2xpc3RBbmltYXRhYmxlIGxpc3RBdHRyIGxpc3RDYW1lcmFzIGxpc3RDb25uZWN0aW9ucyBsaXN0RGV2aWNlQXR0YWNobWVudHMgbGlzdEhpc3RvcnkgJyArXG4gICAgICAnbGlzdElucHV0RGV2aWNlQXhlcyBsaXN0SW5wdXREZXZpY2VCdXR0b25zIGxpc3RJbnB1dERldmljZXMgbGlzdE1lbnVBbm5vdGF0aW9uICcgK1xuICAgICAgJ2xpc3ROb2RlVHlwZXMgbGlzdFBhbmVsQ2F0ZWdvcmllcyBsaXN0UmVsYXRpdmVzIGxpc3RTZXRzIGxpc3RUcmFuc2Zvcm1zICcgK1xuICAgICAgJ2xpc3RVbnNlbGVjdGVkIGxpc3RlckVkaXRvciBsb2FkRmx1aWQgbG9hZE5ld1NoZWxmIGxvYWRQbHVnaW4gJyArXG4gICAgICAnbG9hZFBsdWdpbkxhbmd1YWdlUmVzb3VyY2VzIGxvYWRQcmVmT2JqZWN0cyBsb2NhbGl6ZWRQYW5lbExhYmVsIGxvY2tOb2RlIGxvZnQgbG9nICcgK1xuICAgICAgJ2xvbmdOYW1lT2YgbG9va1RocnUgbHMgbHNUaHJvdWdoRmlsdGVyIGxzVHlwZSBsc1VJIE1heWF0b21yIG1hZyBtYWtlSWRlbnRpdHkgbWFrZUxpdmUgJyArXG4gICAgICAnbWFrZVBhaW50YWJsZSBtYWtlUm9sbCBtYWtlU2luZ2xlU3VyZmFjZSBtYWtlVHViZU9uIG1ha2Vib3QgbWFuaXBNb3ZlQ29udGV4dCAnICtcbiAgICAgICdtYW5pcE1vdmVMaW1pdHNDdHggbWFuaXBPcHRpb25zIG1hbmlwUm90YXRlQ29udGV4dCBtYW5pcFJvdGF0ZUxpbWl0c0N0eCAnICtcbiAgICAgICdtYW5pcFNjYWxlQ29udGV4dCBtYW5pcFNjYWxlTGltaXRzQ3R4IG1hcmtlciBtYXRjaCBtYXggbWVtb3J5IG1lbnUgbWVudUJhckxheW91dCAnICtcbiAgICAgICdtZW51RWRpdG9yIG1lbnVJdGVtIG1lbnVJdGVtVG9TaGVsZiBtZW51U2V0IG1lbnVTZXRQcmVmIG1lc3NhZ2VMaW5lIG1pbiBtaW5pbWl6ZUFwcCAnICtcbiAgICAgICdtaXJyb3JKb2ludCBtb2RlbEN1cnJlbnRUaW1lQ3R4IG1vZGVsRWRpdG9yIG1vZGVsUGFuZWwgbW91c2UgbW92SW4gbW92T3V0IG1vdmUgJyArXG4gICAgICAnbW92ZUlLdG9GSyBtb3ZlS2V5Q3R4IG1vdmVWZXJ0ZXhBbG9uZ0RpcmVjdGlvbiBtdWx0aVByb2ZpbGVCaXJhaWxTdXJmYWNlIG11dGUgJyArXG4gICAgICAnblBhcnRpY2xlIG5hbWVDb21tYW5kIG5hbWVGaWVsZCBuYW1lc3BhY2UgbmFtZXNwYWNlSW5mbyBuZXdQYW5lbEl0ZW1zIG5ld3RvbiBub2RlQ2FzdCAnICtcbiAgICAgICdub2RlSWNvbkJ1dHRvbiBub2RlT3V0bGluZXIgbm9kZVByZXNldCBub2RlVHlwZSBub2lzZSBub25MaW5lYXIgbm9ybWFsQ29uc3RyYWludCAnICtcbiAgICAgICdub3JtYWxpemUgbnVyYnNCb29sZWFuIG51cmJzQ29weVVWU2V0IG51cmJzQ3ViZSBudXJic0VkaXRVViBudXJic1BsYW5lIG51cmJzU2VsZWN0ICcgK1xuICAgICAgJ251cmJzU3F1YXJlIG51cmJzVG9Qb2x5IG51cmJzVG9Qb2x5Z29uc1ByZWYgbnVyYnNUb1N1YmRpdiBudXJic1RvU3ViZGl2UHJlZiAnICtcbiAgICAgICdudXJic1VWU2V0IG51cmJzVmlld0RpcmVjdGlvblZlY3RvciBvYmpFeGlzdHMgb2JqZWN0Q2VudGVyIG9iamVjdExheWVyIG9iamVjdFR5cGUgJyArXG4gICAgICAnb2JqZWN0VHlwZVVJIG9ic29sZXRlUHJvYyBvY2Vhbk51cmJzUHJldmlld1BsYW5lIG9mZnNldEN1cnZlIG9mZnNldEN1cnZlT25TdXJmYWNlICcgK1xuICAgICAgJ29mZnNldFN1cmZhY2Ugb3BlbkdMRXh0ZW5zaW9uIG9wZW5NYXlhUHJlZiBvcHRpb25NZW51IG9wdGlvbk1lbnVHcnAgb3B0aW9uVmFyIG9yYml0ICcgK1xuICAgICAgJ29yYml0Q3R4IG9yaWVudENvbnN0cmFpbnQgb3V0bGluZXJFZGl0b3Igb3V0bGluZXJQYW5lbCBvdmVycmlkZU1vZGlmaWVyICcgK1xuICAgICAgJ3BhaW50RWZmZWN0c0Rpc3BsYXkgcGFpckJsZW5kIHBhbGV0dGVQb3J0IHBhbmVMYXlvdXQgcGFuZWwgcGFuZWxDb25maWd1cmF0aW9uICcgK1xuICAgICAgJ3BhbmVsSGlzdG9yeSBwYXJhbURpbUNvbnRleHQgcGFyYW1EaW1lbnNpb24gcGFyYW1Mb2NhdG9yIHBhcmVudCBwYXJlbnRDb25zdHJhaW50ICcgK1xuICAgICAgJ3BhcnRpY2xlIHBhcnRpY2xlRXhpc3RzIHBhcnRpY2xlSW5zdGFuY2VyIHBhcnRpY2xlUmVuZGVySW5mbyBwYXJ0aXRpb24gcGFzdGVLZXkgJyArXG4gICAgICAncGF0aEFuaW1hdGlvbiBwYXVzZSBwY2xvc2UgcGVyY2VudCBwZXJmb3JtYW5jZU9wdGlvbnMgcGZ4c3Ryb2tlcyBwaWNrV2FsayBwaWN0dXJlICcgK1xuICAgICAgJ3BpeGVsTW92ZSBwbGFuYXJTcmYgcGxhbmUgcGxheSBwbGF5YmFja09wdGlvbnMgcGxheWJsYXN0IHBsdWdBdHRyIHBsdWdOb2RlIHBsdWdpbkluZm8gJyArXG4gICAgICAncGx1Z2luUmVzb3VyY2VVdGlsIHBvaW50Q29uc3RyYWludCBwb2ludEN1cnZlQ29uc3RyYWludCBwb2ludExpZ2h0IHBvaW50TWF0cml4TXVsdCAnICtcbiAgICAgICdwb2ludE9uQ3VydmUgcG9pbnRPblN1cmZhY2UgcG9pbnRQb3NpdGlvbiBwb2xlVmVjdG9yQ29uc3RyYWludCBwb2x5QXBwZW5kICcgK1xuICAgICAgJ3BvbHlBcHBlbmRGYWNldEN0eCBwb2x5QXBwZW5kVmVydGV4IHBvbHlBdXRvUHJvamVjdGlvbiBwb2x5QXZlcmFnZU5vcm1hbCAnICtcbiAgICAgICdwb2x5QXZlcmFnZVZlcnRleCBwb2x5QmV2ZWwgcG9seUJsZW5kQ29sb3IgcG9seUJsaW5kRGF0YSBwb2x5Qm9vbE9wIHBvbHlCcmlkZ2VFZGdlICcgK1xuICAgICAgJ3BvbHlDYWNoZU1vbml0b3IgcG9seUNoZWNrIHBvbHlDaGlwT2ZmIHBvbHlDbGlwYm9hcmQgcG9seUNsb3NlQm9yZGVyIHBvbHlDb2xsYXBzZUVkZ2UgJyArXG4gICAgICAncG9seUNvbGxhcHNlRmFjZXQgcG9seUNvbG9yQmxpbmREYXRhIHBvbHlDb2xvckRlbCBwb2x5Q29sb3JQZXJWZXJ0ZXggcG9seUNvbG9yU2V0ICcgK1xuICAgICAgJ3BvbHlDb21wYXJlIHBvbHlDb25lIHBvbHlDb3B5VVYgcG9seUNyZWFzZSBwb2x5Q3JlYXNlQ3R4IHBvbHlDcmVhdGVGYWNldCAnICtcbiAgICAgICdwb2x5Q3JlYXRlRmFjZXRDdHggcG9seUN1YmUgcG9seUN1dCBwb2x5Q3V0Q3R4IHBvbHlDeWxpbmRlciBwb2x5Q3lsaW5kcmljYWxQcm9qZWN0aW9uICcgK1xuICAgICAgJ3BvbHlEZWxFZGdlIHBvbHlEZWxGYWNldCBwb2x5RGVsVmVydGV4IHBvbHlEdXBsaWNhdGVBbmRDb25uZWN0IHBvbHlEdXBsaWNhdGVFZGdlICcgK1xuICAgICAgJ3BvbHlFZGl0VVYgcG9seUVkaXRVVlNoZWxsIHBvbHlFdmFsdWF0ZSBwb2x5RXh0cnVkZUVkZ2UgcG9seUV4dHJ1ZGVGYWNldCAnICtcbiAgICAgICdwb2x5RXh0cnVkZVZlcnRleCBwb2x5RmxpcEVkZ2UgcG9seUZsaXBVViBwb2x5Rm9yY2VVViBwb2x5R2VvU2FtcGxlciBwb2x5SGVsaXggJyArXG4gICAgICAncG9seUluZm8gcG9seUluc3RhbGxBY3Rpb24gcG9seUxheW91dFVWIHBvbHlMaXN0Q29tcG9uZW50Q29udmVyc2lvbiBwb2x5TWFwQ3V0ICcgK1xuICAgICAgJ3BvbHlNYXBEZWwgcG9seU1hcFNldyBwb2x5TWFwU2V3TW92ZSBwb2x5TWVyZ2VFZGdlIHBvbHlNZXJnZUVkZ2VDdHggcG9seU1lcmdlRmFjZXQgJyArXG4gICAgICAncG9seU1lcmdlRmFjZXRDdHggcG9seU1lcmdlVVYgcG9seU1lcmdlVmVydGV4IHBvbHlNaXJyb3JGYWNlIHBvbHlNb3ZlRWRnZSAnICtcbiAgICAgICdwb2x5TW92ZUZhY2V0IHBvbHlNb3ZlRmFjZXRVViBwb2x5TW92ZVVWIHBvbHlNb3ZlVmVydGV4IHBvbHlOb3JtYWwgcG9seU5vcm1hbFBlclZlcnRleCAnICtcbiAgICAgICdwb2x5Tm9ybWFsaXplVVYgcG9seU9wdFV2cyBwb2x5T3B0aW9ucyBwb2x5T3V0cHV0IHBvbHlQaXBlIHBvbHlQbGFuYXJQcm9qZWN0aW9uICcgK1xuICAgICAgJ3BvbHlQbGFuZSBwb2x5UGxhdG9uaWNTb2xpZCBwb2x5UG9rZSBwb2x5UHJpbWl0aXZlIHBvbHlQcmlzbSBwb2x5UHJvamVjdGlvbiAnICtcbiAgICAgICdwb2x5UHlyYW1pZCBwb2x5UXVhZCBwb2x5UXVlcnlCbGluZERhdGEgcG9seVJlZHVjZSBwb2x5U2VsZWN0IHBvbHlTZWxlY3RDb25zdHJhaW50ICcgK1xuICAgICAgJ3BvbHlTZWxlY3RDb25zdHJhaW50TW9uaXRvciBwb2x5U2VsZWN0Q3R4IHBvbHlTZWxlY3RFZGl0Q3R4IHBvbHlTZXBhcmF0ZSAnICtcbiAgICAgICdwb2x5U2V0VG9GYWNlTm9ybWFsIHBvbHlTZXdFZGdlIHBvbHlTaG9ydGVzdFBhdGhDdHggcG9seVNtb290aCBwb2x5U29mdEVkZ2UgJyArXG4gICAgICAncG9seVNwaGVyZSBwb2x5U3BoZXJpY2FsUHJvamVjdGlvbiBwb2x5U3BsaXQgcG9seVNwbGl0Q3R4IHBvbHlTcGxpdEVkZ2UgcG9seVNwbGl0UmluZyAnICtcbiAgICAgICdwb2x5U3BsaXRWZXJ0ZXggcG9seVN0cmFpZ2h0ZW5VVkJvcmRlciBwb2x5U3ViZGl2aWRlRWRnZSBwb2x5U3ViZGl2aWRlRmFjZXQgJyArXG4gICAgICAncG9seVRvU3ViZGl2IHBvbHlUb3J1cyBwb2x5VHJhbnNmZXIgcG9seVRyaWFuZ3VsYXRlIHBvbHlVVlNldCBwb2x5VW5pdGUgcG9seVdlZGdlRmFjZSAnICtcbiAgICAgICdwb3BlbiBwb3B1cE1lbnUgcG9zZSBwb3cgcHJlbG9hZFJlZkVkIHByaW50IHByb2dyZXNzQmFyIHByb2dyZXNzV2luZG93IHByb2pGaWxlVmlld2VyICcgK1xuICAgICAgJ3Byb2plY3RDdXJ2ZSBwcm9qZWN0VGFuZ2VudCBwcm9qZWN0aW9uQ29udGV4dCBwcm9qZWN0aW9uTWFuaXAgcHJvbXB0RGlhbG9nIHByb3BNb2RDdHggJyArXG4gICAgICAncHJvcE1vdmUgcHNkQ2hhbm5lbE91dGxpbmVyIHBzZEVkaXRUZXh0dXJlRmlsZSBwc2RFeHBvcnQgcHNkVGV4dHVyZUZpbGUgcHV0ZW52IHB3ZCAnICtcbiAgICAgICdweXRob24gcXVlcnlTdWJkaXYgcXVpdCByYWRfdG9fZGVnIHJhZGlhbCByYWRpb0J1dHRvbiByYWRpb0J1dHRvbkdycCByYWRpb0NvbGxlY3Rpb24gJyArXG4gICAgICAncmFkaW9NZW51SXRlbUNvbGxlY3Rpb24gcmFtcENvbG9yUG9ydCByYW5kIHJhbmRvbWl6ZUZvbGxpY2xlcyByYW5kc3RhdGUgcmFuZ2VDb250cm9sICcgK1xuICAgICAgJ3JlYWRUYWtlIHJlYnVpbGRDdXJ2ZSByZWJ1aWxkU3VyZmFjZSByZWNvcmRBdHRyIHJlY29yZERldmljZSByZWRvIHJlZmVyZW5jZSAnICtcbiAgICAgICdyZWZlcmVuY2VFZGl0IHJlZmVyZW5jZVF1ZXJ5IHJlZmluZVN1YmRpdlNlbGVjdGlvbkxpc3QgcmVmcmVzaCByZWZyZXNoQUUgJyArXG4gICAgICAncmVnaXN0ZXJQbHVnaW5SZXNvdXJjZSByZWhhc2ggcmVsb2FkSW1hZ2UgcmVtb3ZlSm9pbnQgcmVtb3ZlTXVsdGlJbnN0YW5jZSAnICtcbiAgICAgICdyZW1vdmVQYW5lbENhdGVnb3J5IHJlbmFtZSByZW5hbWVBdHRyIHJlbmFtZVNlbGVjdGlvbkxpc3QgcmVuYW1lVUkgcmVuZGVyICcgK1xuICAgICAgJ3JlbmRlckdsb2JhbHNOb2RlIHJlbmRlckluZm8gcmVuZGVyTGF5ZXJCdXR0b24gcmVuZGVyTGF5ZXJQYXJlbnQgJyArXG4gICAgICAncmVuZGVyTGF5ZXJQb3N0UHJvY2VzcyByZW5kZXJMYXllclVucGFyZW50IHJlbmRlck1hbmlwIHJlbmRlclBhcnRpdGlvbiAnICtcbiAgICAgICdyZW5kZXJRdWFsaXR5Tm9kZSByZW5kZXJTZXR0aW5ncyByZW5kZXJUaHVtYm5haWxVcGRhdGUgcmVuZGVyV2luZG93RWRpdG9yICcgK1xuICAgICAgJ3JlbmRlcldpbmRvd1NlbGVjdENvbnRleHQgcmVuZGVyZXIgcmVvcmRlciByZW9yZGVyRGVmb3JtZXJzIHJlcXVpcmVzIHJlcm9vdCAnICtcbiAgICAgICdyZXNhbXBsZUZsdWlkIHJlc2V0QUUgcmVzZXRQZnhUb1BvbHlDYW1lcmEgcmVzZXRUb29sIHJlc29sdXRpb25Ob2RlIHJldGFyZ2V0ICcgK1xuICAgICAgJ3JldmVyc2VDdXJ2ZSByZXZlcnNlU3VyZmFjZSByZXZvbHZlIHJnYl90b19oc3YgcmlnaWRCb2R5IHJpZ2lkU29sdmVyIHJvbGwgcm9sbEN0eCAnICtcbiAgICAgICdyb290T2Ygcm90IHJvdGF0ZSByb3RhdGlvbkludGVycG9sYXRpb24gcm91bmRDb25zdGFudFJhZGl1cyByb3dDb2x1bW5MYXlvdXQgcm93TGF5b3V0ICcgK1xuICAgICAgJ3J1blRpbWVDb21tYW5kIHJ1bnVwIHNhbXBsZUltYWdlIHNhdmVBbGxTaGVsdmVzIHNhdmVBdHRyUHJlc2V0IHNhdmVGbHVpZCBzYXZlSW1hZ2UgJyArXG4gICAgICAnc2F2ZUluaXRpYWxTdGF0ZSBzYXZlTWVudSBzYXZlUHJlZk9iamVjdHMgc2F2ZVByZWZzIHNhdmVTaGVsZiBzYXZlVG9vbFNldHRpbmdzIHNjYWxlICcgK1xuICAgICAgJ3NjYWxlQnJ1c2hCcmlnaHRuZXNzIHNjYWxlQ29tcG9uZW50cyBzY2FsZUNvbnN0cmFpbnQgc2NhbGVLZXkgc2NhbGVLZXlDdHggc2NlbmVFZGl0b3IgJyArXG4gICAgICAnc2NlbmVVSVJlcGxhY2VtZW50IHNjbWggc2NyaXB0Q3R4IHNjcmlwdEVkaXRvckluZm8gc2NyaXB0Sm9iIHNjcmlwdE5vZGUgc2NyaXB0VGFibGUgJyArXG4gICAgICAnc2NyaXB0VG9TaGVsZiBzY3JpcHRlZFBhbmVsIHNjcmlwdGVkUGFuZWxUeXBlIHNjcm9sbEZpZWxkIHNjcm9sbExheW91dCBzY3VscHQgJyArXG4gICAgICAnc2VhcmNoUGF0aEFycmF5IHNlZWQgc2VsTG9hZFNldHRpbmdzIHNlbGVjdCBzZWxlY3RDb250ZXh0IHNlbGVjdEN1cnZlQ1Ygc2VsZWN0S2V5ICcgK1xuICAgICAgJ3NlbGVjdEtleUN0eCBzZWxlY3RLZXlmcmFtZVJlZ2lvbkN0eCBzZWxlY3RNb2RlIHNlbGVjdFByZWYgc2VsZWN0UHJpb3JpdHkgc2VsZWN0VHlwZSAnICtcbiAgICAgICdzZWxlY3RlZE5vZGVzIHNlbGVjdGlvbkNvbm5lY3Rpb24gc2VwYXJhdG9yIHNldEF0dHIgc2V0QXR0ckVudW1SZXNvdXJjZSAnICtcbiAgICAgICdzZXRBdHRyTWFwcGluZyBzZXRBdHRyTmljZU5hbWVSZXNvdXJjZSBzZXRDb25zdHJhaW50UmVzdFBvc2l0aW9uICcgK1xuICAgICAgJ3NldERlZmF1bHRTaGFkaW5nR3JvdXAgc2V0RHJpdmVuS2V5ZnJhbWUgc2V0RHluYW1pYyBzZXRFZGl0Q3R4IHNldEVkaXRvciBzZXRGbHVpZEF0dHIgJyArXG4gICAgICAnc2V0Rm9jdXMgc2V0SW5maW5pdHkgc2V0SW5wdXREZXZpY2VNYXBwaW5nIHNldEtleUN0eCBzZXRLZXlQYXRoIHNldEtleWZyYW1lICcgK1xuICAgICAgJ3NldEtleWZyYW1lQmxlbmRzaGFwZVRhcmdldFd0cyBzZXRNZW51TW9kZSBzZXROb2RlTmljZU5hbWVSZXNvdXJjZSBzZXROb2RlVHlwZUZsYWcgJyArXG4gICAgICAnc2V0UGFyZW50IHNldFBhcnRpY2xlQXR0ciBzZXRQZnhUb1BvbHlDYW1lcmEgc2V0UGx1Z2luUmVzb3VyY2Ugc2V0UHJvamVjdCAnICtcbiAgICAgICdzZXRTdGFtcERlbnNpdHkgc2V0U3RhcnR1cE1lc3NhZ2Ugc2V0U3RhdGUgc2V0VG9vbFRvIHNldFVJVGVtcGxhdGUgc2V0WGZvcm1NYW5pcCBzZXRzICcgK1xuICAgICAgJ3NoYWRpbmdDb25uZWN0aW9uIHNoYWRpbmdHZW9tZXRyeVJlbEN0eCBzaGFkaW5nTGlnaHRSZWxDdHggc2hhZGluZ05ldHdvcmtDb21wYXJlICcgK1xuICAgICAgJ3NoYWRpbmdOb2RlIHNoYXBlQ29tcGFyZSBzaGVsZkJ1dHRvbiBzaGVsZkxheW91dCBzaGVsZlRhYkxheW91dCBzaGVsbEZpZWxkICcgK1xuICAgICAgJ3Nob3J0TmFtZU9mIHNob3dIZWxwIHNob3dIaWRkZW4gc2hvd01hbmlwQ3R4IHNob3dTZWxlY3Rpb25JblRpdGxlICcgK1xuICAgICAgJ3Nob3dTaGFkaW5nR3JvdXBBdHRyRWRpdG9yIHNob3dXaW5kb3cgc2lnbiBzaW1wbGlmeSBzaW4gc2luZ2xlUHJvZmlsZUJpcmFpbFN1cmZhY2UgJyArXG4gICAgICAnc2l6ZSBzaXplQnl0ZXMgc2tpbkNsdXN0ZXIgc2tpblBlcmNlbnQgc21vb3RoQ3VydmUgc21vb3RoVGFuZ2VudFN1cmZhY2Ugc21vb3Roc3RlcCAnICtcbiAgICAgICdzbmFwMnRvMiBzbmFwS2V5IHNuYXBNb2RlIHNuYXBUb2dldGhlckN0eCBzbmFwc2hvdCBzb2Z0IHNvZnRNb2Qgc29mdE1vZEN0eCBzb3J0IHNvdW5kICcgK1xuICAgICAgJ3NvdW5kQ29udHJvbCBzb3VyY2Ugc3BhY2VMb2NhdG9yIHNwaGVyZSBzcGhyYW5kIHNwb3RMaWdodCBzcG90TGlnaHRQcmV2aWV3UG9ydCAnICtcbiAgICAgICdzcHJlYWRTaGVldEVkaXRvciBzcHJpbmcgc3FydCBzcXVhcmVTdXJmYWNlIHNydENvbnRleHQgc3RhY2tUcmFjZSBzdGFydFN0cmluZyAnICtcbiAgICAgICdzdGFydHNXaXRoIHN0aXRjaEFuZEV4cGxvZGVTaGVsbCBzdGl0Y2hTdXJmYWNlIHN0aXRjaFN1cmZhY2VQb2ludHMgc3RyY21wICcgK1xuICAgICAgJ3N0cmluZ0FycmF5Q2F0ZW5hdGUgc3RyaW5nQXJyYXlDb250YWlucyBzdHJpbmdBcnJheUNvdW50IHN0cmluZ0FycmF5SW5zZXJ0QXRJbmRleCAnICtcbiAgICAgICdzdHJpbmdBcnJheUludGVyc2VjdG9yIHN0cmluZ0FycmF5UmVtb3ZlIHN0cmluZ0FycmF5UmVtb3ZlQXRJbmRleCAnICtcbiAgICAgICdzdHJpbmdBcnJheVJlbW92ZUR1cGxpY2F0ZXMgc3RyaW5nQXJyYXlSZW1vdmVFeGFjdCBzdHJpbmdBcnJheVRvU3RyaW5nICcgK1xuICAgICAgJ3N0cmluZ1RvU3RyaW5nQXJyYXkgc3RyaXAgc3RyaXBQcmVmaXhGcm9tTmFtZSBzdHJva2Ugc3ViZEF1dG9Qcm9qZWN0aW9uICcgK1xuICAgICAgJ3N1YmRDbGVhblRvcG9sb2d5IHN1YmRDb2xsYXBzZSBzdWJkRHVwbGljYXRlQW5kQ29ubmVjdCBzdWJkRWRpdFVWICcgK1xuICAgICAgJ3N1YmRMaXN0Q29tcG9uZW50Q29udmVyc2lvbiBzdWJkTWFwQ3V0IHN1YmRNYXBTZXdNb3ZlIHN1YmRNYXRjaFRvcG9sb2d5IHN1YmRNaXJyb3IgJyArXG4gICAgICAnc3ViZFRvQmxpbmQgc3ViZFRvUG9seSBzdWJkVHJhbnNmZXJVVnNUb0NhY2hlIHN1YmRpdiBzdWJkaXZDcmVhc2UgJyArXG4gICAgICAnc3ViZGl2RGlzcGxheVNtb290aG5lc3Mgc3Vic3RpdHV0ZSBzdWJzdGl0dXRlQWxsU3RyaW5nIHN1YnN0aXR1dGVHZW9tZXRyeSBzdWJzdHJpbmcgJyArXG4gICAgICAnc3VyZmFjZSBzdXJmYWNlU2FtcGxlciBzdXJmYWNlU2hhZGVyTGlzdCBzd2F0Y2hEaXNwbGF5UG9ydCBzd2l0Y2hUYWJsZSBzeW1ib2xCdXR0b24gJyArXG4gICAgICAnc3ltYm9sQ2hlY2tCb3ggc3lzRmlsZSBzeXN0ZW0gdGFiTGF5b3V0IHRhbiB0YW5nZW50Q29uc3RyYWludCB0ZXhMYXR0aWNlRGVmb3JtQ29udGV4dCAnICtcbiAgICAgICd0ZXhNYW5pcENvbnRleHQgdGV4TW92ZUNvbnRleHQgdGV4TW92ZVVWU2hlbGxDb250ZXh0IHRleFJvdGF0ZUNvbnRleHQgdGV4U2NhbGVDb250ZXh0ICcgK1xuICAgICAgJ3RleFNlbGVjdENvbnRleHQgdGV4U2VsZWN0U2hvcnRlc3RQYXRoQ3R4IHRleFNtdWRnZVVWQ29udGV4dCB0ZXhXaW5Ub29sQ3R4IHRleHQgJyArXG4gICAgICAndGV4dEN1cnZlcyB0ZXh0RmllbGQgdGV4dEZpZWxkQnV0dG9uR3JwIHRleHRGaWVsZEdycCB0ZXh0TWFuaXAgdGV4dFNjcm9sbExpc3QgJyArXG4gICAgICAndGV4dFRvU2hlbGYgdGV4dHVyZURpc3BsYWNlUGxhbmUgdGV4dHVyZUhhaXJDb2xvciB0ZXh0dXJlUGxhY2VtZW50Q29udGV4dCAnICtcbiAgICAgICd0ZXh0dXJlV2luZG93IHRocmVhZENvdW50IHRocmVlUG9pbnRBcmNDdHggdGltZUNvbnRyb2wgdGltZVBvcnQgdGltZXJYIHRvTmF0aXZlUGF0aCAnICtcbiAgICAgICd0b2dnbGUgdG9nZ2xlQXhpcyB0b2dnbGVXaW5kb3dWaXNpYmlsaXR5IHRva2VuaXplIHRva2VuaXplTGlzdCB0b2xlcmFuY2UgdG9sb3dlciAnICtcbiAgICAgICd0b29sQnV0dG9uIHRvb2xDb2xsZWN0aW9uIHRvb2xEcm9wcGVkIHRvb2xIYXNPcHRpb25zIHRvb2xQcm9wZXJ0eVdpbmRvdyB0b3J1cyB0b3VwcGVyICcgK1xuICAgICAgJ3RyYWNlIHRyYWNrIHRyYWNrQ3R4IHRyYW5zZmVyQXR0cmlidXRlcyB0cmFuc2Zvcm1Db21wYXJlIHRyYW5zZm9ybUxpbWl0cyB0cmFuc2xhdG9yICcgK1xuICAgICAgJ3RyaW0gdHJ1bmMgdHJ1bmNhdGVGbHVpZENhY2hlIHRydW5jYXRlSGFpckNhY2hlIHR1bWJsZSB0dW1ibGVDdHggdHVyYnVsZW5jZSAnICtcbiAgICAgICd0d29Qb2ludEFyY0N0eCB1aVJlcyB1aVRlbXBsYXRlIHVuYXNzaWduSW5wdXREZXZpY2UgdW5kbyB1bmRvSW5mbyB1bmdyb3VwIHVuaWZvcm0gdW5pdCAnICtcbiAgICAgICd1bmxvYWRQbHVnaW4gdW50YW5nbGVVViB1bnRpdGxlZEZpbGVOYW1lIHVudHJpbSB1cEF4aXMgdXBkYXRlQUUgdXNlckN0eCB1dkxpbmsgJyArXG4gICAgICAndXZTbmFwc2hvdCB2YWxpZGF0ZVNoZWxmTmFtZSB2ZWN0b3JpemUgdmlldzJkVG9vbEN0eCB2aWV3Q2FtZXJhIHZpZXdDbGlwUGxhbmUgJyArXG4gICAgICAndmlld0ZpdCB2aWV3SGVhZE9uIHZpZXdMb29rQXQgdmlld01hbmlwIHZpZXdQbGFjZSB2aWV3U2V0IHZpc29yIHZvbHVtZUF4aXMgdm9ydGV4ICcgK1xuICAgICAgJ3dhaXRDdXJzb3Igd2FybmluZyB3ZWJCcm93c2VyIHdlYkJyb3dzZXJQcmVmcyB3aGF0SXMgd2luZG93IHdpbmRvd1ByZWYgd2lyZSAnICtcbiAgICAgICd3aXJlQ29udGV4dCB3b3Jrc3BhY2Ugd3JpbmtsZSB3cmlua2xlQ29udGV4dCB3cml0ZVRha2UgeGJtTGFuZ1BhdGhMaXN0IHhmb3JtJyxcbiAgICBpbGxlZ2FsOiAnPC8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuICAgICAgeyAvLyBlYXRzIHZhcmlhYmxlc1xuICAgICAgICBiZWdpbjogJ1tcXFxcJFxcXFwlXFxcXEBdKFxcXFxeXFxcXHdcXFxcYnwjXFxcXHcrfFteXFxcXHNcXFxcd3tdfHtcXFxcdyt9fFxcXFx3KyknXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ21vZHVsZSB1c2VfbW9kdWxlIGltcG9ydF9tb2R1bGUgaW5jbHVkZV9tb2R1bGUgZW5kX21vZHVsZSBpbml0aWFsaXNlICcgK1xuICAgICAgJ211dGFibGUgaW5pdGlhbGl6ZSBmaW5hbGl6ZSBmaW5hbGlzZSBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gcHJlZCAnICtcbiAgICAgICdtb2RlIGZ1bmMgdHlwZSBpbnN0IHNvbHZlciBhbnlfcHJlZCBhbnlfZnVuYyBpcyBzZW1pZGV0IGRldCBub25kZXQgJyArXG4gICAgICAnbXVsdGkgZXJyb25lb3VzIGZhaWx1cmUgY2Nfbm9uZGV0IGNjX211bHRpIHR5cGVjbGFzcyBpbnN0YW5jZSB3aGVyZSAnICtcbiAgICAgICdwcmFnbWEgcHJvbWlzZSBleHRlcm5hbCB0cmFjZSBhdG9taWMgb3JfZWxzZSByZXF1aXJlX2NvbXBsZXRlX3N3aXRjaCAnICtcbiAgICAgICdyZXF1aXJlX2RldCByZXF1aXJlX3NlbWlkZXQgcmVxdWlyZV9tdWx0aSByZXF1aXJlX25vbmRldCAnICtcbiAgICAgICdyZXF1aXJlX2NjX211bHRpIHJlcXVpcmVfY2Nfbm9uZGV0IHJlcXVpcmVfZXJyb25lb3VzIHJlcXVpcmVfZmFpbHVyZScsXG4gICAgbWV0YTpcbiAgICAgIC8vIHByYWdtYVxuICAgICAgJ2lubGluZSBub19pbmxpbmUgdHlwZV9zcGVjIHNvdXJjZV9maWxlIGZhY3RfdGFibGUgb2Jzb2xldGUgbWVtbyAnICtcbiAgICAgICdsb29wX2NoZWNrIG1pbmltYWxfbW9kZWwgdGVybWluYXRlcyBkb2VzX25vdF90ZXJtaW5hdGUgJyArXG4gICAgICAnY2hlY2tfdGVybWluYXRpb24gcHJvbWlzZV9lcXVpdmFsZW50X2NsYXVzZXMgJyArXG4gICAgICAvLyBwcmVwcm9jZXNzb3JcbiAgICAgICdmb3JlaWduX3Byb2MgZm9yZWlnbl9kZWNsIGZvcmVpZ25fY29kZSBmb3JlaWduX3R5cGUgJyArXG4gICAgICAnZm9yZWlnbl9pbXBvcnRfbW9kdWxlIGZvcmVpZ25fZXhwb3J0X2VudW0gZm9yZWlnbl9leHBvcnQgJyArXG4gICAgICAnZm9yZWlnbl9lbnVtIG1heV9jYWxsX21lcmN1cnkgd2lsbF9ub3RfY2FsbF9tZXJjdXJ5IHRocmVhZF9zYWZlICcgK1xuICAgICAgJ25vdF90aHJlYWRfc2FmZSBtYXliZV90aHJlYWRfc2FmZSBwcm9taXNlX3B1cmUgcHJvbWlzZV9zZW1pcHVyZSAnICtcbiAgICAgICd0YWJsZWRfZm9yX2lvIGxvY2FsIHVudHJhaWxlZCB0cmFpbGVkIGF0dGFjaF90b19pb19zdGF0ZSAnICtcbiAgICAgICdjYW5fcGFzc19hc19tZXJjdXJ5X3R5cGUgc3RhYmxlIHdpbGxfbm90X3Rocm93X2V4Y2VwdGlvbiAnICtcbiAgICAgICdtYXlfbW9kaWZ5X3RyYWlsIHdpbGxfbm90X21vZGlmeV90cmFpbCBtYXlfZHVwbGljYXRlICcgK1xuICAgICAgJ21heV9ub3RfZHVwbGljYXRlIGFmZmVjdHNfbGl2ZW5lc3MgZG9lc19ub3RfYWZmZWN0X2xpdmVuZXNzICcgK1xuICAgICAgJ2RvZXNudF9hZmZlY3RfbGl2ZW5lc3Mgbm9fc2hhcmluZyB1bmtub3duX3NoYXJpbmcgc2hhcmluZycsXG4gICAgYnVpbHRfaW46XG4gICAgICAnc29tZSBhbGwgbm90IGlmIHRoZW4gZWxzZSB0cnVlIGZhaWwgZmFsc2UgdHJ5IGNhdGNoIGNhdGNoX2FueSAnICtcbiAgICAgICdzZW1pZGV0X3RydWUgc2VtaWRldF9mYWxzZSBzZW1pZGV0X2ZhaWwgaW1wdXJlX3RydWUgaW1wdXJlIHNlbWlwdXJlJ1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKCclJywgJyQnKTtcblxuICB2YXIgTlVNQ09ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBcIjAnLlxcXFx8MFtib3hdWzAtOWEtZkEtRl0qXCJcbiAgfTtcblxuICB2YXIgQVRPTSA9IGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtyZWxldmFuY2U6IDB9KTtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7cmVsZXZhbmNlOiAwfSk7XG4gIHZhciBTVFJJTkdfRk1UID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ1xcXFxcXFxcW2FiZm5ydHZdXFxcXHxcXFxcXFxcXHhbMC05YS1mQS1GXSpcXFxcXFxcXFxcXFx8JVstKyMgKi4wLTldKltkaW94WHVjc2ZlRWdHcF0nLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBTVFJJTkcuY29udGFpbnMucHVzaChTVFJJTkdfRk1UKTtcblxuICB2YXIgSU1QTElDQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICc8PT4nfSxcbiAgICAgIHtiZWdpbjogJzw9JywgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJz0+JywgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJy9cXFxcXFxcXCd9LFxuICAgICAge2JlZ2luOiAnXFxcXFxcXFwvJ31cbiAgICBdXG4gIH07XG5cbiAgdmFyIEhFQURfQk9EWV9DT05KVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJzotXFxcXHwtLT4nfSxcbiAgICAgIHtiZWdpbjogJz0nLCByZWxldmFuY2U6IDB9XG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydtJywgJ21vbyddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgSU1QTElDQVRJT04sXG4gICAgICBIRUFEX0JPRFlfQ09OSlVOQ1RJT04sXG4gICAgICBDT01NRU5ULFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE5VTUNPREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgQVRPTSxcbiAgICAgIFNUUklORyxcbiAgICAgIHtiZWdpbjogLzotL30gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIC8vbG9jYWwgbGFiZWxzOiAlP1tGQl0/W0FUXT9cXGR7MSwyfVxcdytcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsnbWlwcyddLFxuICAgIGxleGVtZXM6ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbWV0YTpcbiAgICAgICAgLy9HTlUgcHJlcHJvY3NcbiAgICAgICAgJy4yYnl0ZSAuNGJ5dGUgLmFsaWduIC5hc2NpaSAuYXNjaXogLmJhbGlnbiAuYnl0ZSAuY29kZSAuZGF0YSAuZWxzZSAuZW5kIC5lbmRpZiAuZW5kbSAuZW5kciAuZXF1IC5lcnIgLmV4aXRtIC5leHRlcm4gLmdsb2JhbCAuaHdvcmQgLmlmIC5pZmRlZiAuaWZuZGVmIC5pbmNsdWRlIC5pcnAgLmxvbmcgLm1hY3JvIC5yZXB0IC5yZXEgLnNlY3Rpb24gLnNldCAuc2tpcCAuc3BhY2UgLnRleHQgLndvcmQgLmx0b3JnICcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJyQwICQxICQyICQzICQ0ICQ1ICQ2ICQ3ICQ4ICQ5ICQxMCAkMTEgJDEyICQxMyAkMTQgJDE1ICcgKyAvLyBpbnRlZ2VyIHJlZ2lzdGVyc1xuICAgICAgICAnJDE2ICQxNyAkMTggJDE5ICQyMCAkMjEgJDIyICQyMyAkMjQgJDI1ICQyNiAkMjcgJDI4ICQyOSAkMzAgJDMxICcgKyAvLyBpbnRlZ2VyIHJlZ2lzdGVyc1xuICAgICAgICAnemVybyBhdCB2MCB2MSBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICd0MCB0MSB0MiB0MyB0NCB0NSB0NiB0NyB0OCB0OSBzMCBzMSBzMiBzMyBzNCBzNSBzNiBzNyBzOCAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICdrMCBrMSBncCBzcCBmcCByYSAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICckZjAgJGYxICRmMiAkZjIgJGY0ICRmNSAkZjYgJGY3ICRmOCAkZjkgJGYxMCAkZjExICRmMTIgJGYxMyAkZjE0ICRmMTUgJyArIC8vIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyc1xuICAgICAgICAnJGYxNiAkZjE3ICRmMTggJGYxOSAkZjIwICRmMjEgJGYyMiAkZjIzICRmMjQgJGYyNSAkZjI2ICRmMjcgJGYyOCAkZjI5ICRmMzAgJGYzMSAnICsgLy8gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzXG4gICAgICAgICdDb250ZXh0IFJhbmRvbSBFbnRyeUxvMCBFbnRyeUxvMSBDb250ZXh0IFBhZ2VNYXNrIFdpcmVkIEVudHJ5SGkgJyArIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgICAgICdIV1JFbmEgQmFkVkFkZHIgQ291bnQgQ29tcGFyZSBTUiBJbnRDdGwgU1JTQ3RsIFNSU01hcCBDYXVzZSBFUEMgUFJJZCAnICsgLy8gQ29wcm9jZXNzb3IgMCByZWdpc3RlcnNcbiAgICAgICAgJ0VCYXNlIENvbmZpZyBDb25maWcxIENvbmZpZzIgQ29uZmlnMyBMTEFkZHIgRGVidWcgREVQQyBERVNBVkUgQ2FjaGVFcnIgJyArIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgICAgICdFQ0MgRXJyb3JFUEMgVGFnTG8gRGF0YUxvIFRhZ0hpIERhdGFIaSBXYXRjaExvIFdhdGNoSGkgUGVyZkN0bCBQZXJmQ250ICcgLy8gQ29wcm9jZXNzb3IgMCByZWdpc3RlcnNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcrICAgICAvL21uZW1vbmljc1xuICAgICAgICAgICAgLy8gMzItYml0IGludGVnZXIgaW5zdHJ1Y3Rpb25zXG4gICAgICAgICAgICAnYWRkaT91P3xhbmRpP3xiKGFsKT98YmVxbD98YmdleihhbCk/bD98Ymd0emw/fGJsZXpsP3xibHR6KGFsKT9sP3wnICtcbiAgICAgICAgICAgICdibmVsP3xjbFtvel18ZGl2dT98ZXh0fGluc3xqKGFsKT98amFscihcXC5oYik/fGpyKFxcLmhiKT98bGJ1P3xsaHU/fCcgK1xuICAgICAgICAgICAgJ2xsfGx1aXxsd1tscl0/fG1hZGR1P3xtZmhpfG1mbG98bW92bnxtb3Z6fG1vdmV8bXN1YnU/fG10aGl8bXRsb3xtdWx8JyArXG4gICAgICAgICAgICAnbXVsdHU/fG5vcHxub3J8b3JpP3xyb3Rydj98c2J8c2N8c2VbYmhdfHNofHNsbHY/fHNsdGk/dT98c3Jhdj98JyArXG4gICAgICAgICAgICAnc3Jsdj98c3VidT98c3dbbHJdP3x4b3JpP3x3c2JofCcgK1xuICAgICAgICAgICAgLy8gZmxvYXRpbmctcG9pbnQgaW5zdHJ1Y3Rpb25zXG4gICAgICAgICAgICAnYWJzXFwuW3NkXXxhZGRcXC5bc2RdfGFsbnYucHN8YmMxW2Z0XWw/fCcgK1xuICAgICAgICAgICAgJ2NcXC4ocz9mfHVufHU/ZXF8W291XWx0fFtvdV1sZXxuZ2xlP3xzZXF8bFtldF18bmdbZXRdKVxcLltzZF18JyArXG4gICAgICAgICAgICAnKGNlaWx8Zmxvb3J8cm91bmR8dHJ1bmMpXFwuW2x3XVxcLltzZF18Y2ZjMXxjdnRcXC5kXFwuW2xzd118JyArXG4gICAgICAgICAgICAnY3Z0XFwubFxcLltkc3ddfGN2dFxcLnBzXFwuc3xjdnRcXC5zXFwuW2Rsd118Y3Z0XFwuc1xcLnBbbHVdfGN2dFxcLndcXC5bZGxzXXwnICtcbiAgICAgICAgICAgICdkaXZcXC5bZHNdfGxkeD9jMXxsdXhjMXxsd3g/YzF8bWFkZFxcLltzZF18bWZjMXxtb3ZbZm50el0/XFwuW2RzXXwnICtcbiAgICAgICAgICAgICdtc3ViXFwuW3NkXXxtdGg/YzF8bXVsXFwuW2RzXXxuZWdcXC5bZHNdfG5tYWRkXFwuW2RzXXxubXN1YlxcLltkc118JyArXG4gICAgICAgICAgICAncFtsdV1bbHVdXFwucHN8cmVjaXBcXC5mbXR8cj9zcXJ0XFwuW2RzXXxzZHg/YzF8c3ViXFwuW2RzXXxzdXhjMXwnICtcbiAgICAgICAgICAgICdzd3g/YzF8JyArXG4gICAgICAgICAgICAvLyBzeXN0ZW0gY29udHJvbCBpbnN0cnVjdGlvbnNcbiAgICAgICAgICAgICdicmVha3xjYWNoZXxkP2VyZXR8W2RlXWl8ZWhifG1mYzB8bXRjMHxwYXVzZXxwcmVmeD98cmRod3J8JyArXG4gICAgICAgICAgICAncmRwZ3ByfHNkYmJwfHNzbm9wfHN5bmNpP3xzeXNjYWxsfHRlcWk/fHRnZWk/dT98dGxiKHB8cnx3W2lyXSl8JyArXG4gICAgICAgICAgICAndGx0aT91P3x0bmVpP3x3YWl0fHdycGdwcicrXG4gICAgICAgICcpJyxcbiAgICAgICAgZW5kOiAnXFxcXHMnXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdbOyNdJywgJyQnKSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1teXFxcXFxcXFxdXFwnJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXHwnLCBlbmQ6ICdcXFxcfCcsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJzB4WzAtOWEtZl0rJ30sIC8vaGV4XG4gICAgICAgICAgICB7YmVnaW46ICdcXFxcYi0/XFxcXGQrJ30gICAgICAgICAgIC8vYmFyZSBudW1iZXJcbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge2JlZ2luOiAnXlxcXFxzKlthLXpfXFxcXC5cXFxcJF1bYS16MC05X1xcXFwuXFxcXCRdKzonfSwgLy9HTlUgTUlQUyBzeW50YXhcbiAgICAgICAgICAgIHtiZWdpbjogJ15cXFxccypbMC05XSs6J30sIC8vIG51bWJlcmVkIGxvY2FsIGxhYmVsc1xuICAgICAgICAgICAge2JlZ2luOiAnWzAtOV0rW2JmXScgfSAgLy8gbnVtYmVyIGxvY2FsIGxhYmVsIHJlZmVyZW5jZSAoYmFja3dhcmRzLCBmb3J3YXJkcylcbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSxcbiAgICBpbGxlZ2FsOiAnXFwvJ1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczpcbiAgICAgICdlbnZpcm9uIHZvY2FidWxhcmllcyBub3RhdGlvbnMgY29uc3RydWN0b3JzIGRlZmluaXRpb25zICcgK1xuICAgICAgJ3JlZ2lzdHJhdGlvbnMgdGhlb3JlbXMgc2NoZW1lcyByZXF1aXJlbWVudHMgYmVnaW4gZW5kIGRlZmluaXRpb24gJyArXG4gICAgICAncmVnaXN0cmF0aW9uIGNsdXN0ZXIgZXhpc3RlbmNlIHByZWQgZnVuYyBkZWZwcmVkIGRlZmZ1bmMgdGhlb3JlbSAnICtcbiAgICAgICdwcm9vZiBsZXQgdGFrZSBhc3N1bWUgdGhlbiB0aHVzIGhlbmNlIGV4IGZvciBzdCBob2xkcyBjb25zaWRlciAnICtcbiAgICAgICdyZWNvbnNpZGVyIHN1Y2ggdGhhdCBhbmQgaW4gcHJvdmlkZWQgb2YgYXMgZnJvbSBiZSBiZWluZyBieSBtZWFucyAnICtcbiAgICAgICdlcXVhbHMgaW1wbGllcyBpZmYgcmVkZWZpbmUgZGVmaW5lIG5vdyBub3Qgb3IgYXR0ciBpcyBtb2RlICcgK1xuICAgICAgJ3N1cHBvc2UgcGVyIGNhc2VzIHNldCB0aGVzaXMgY29udHJhZGljdGlvbiBzY2hlbWUgcmVzZXJ2ZSBzdHJ1Y3QgJyArXG4gICAgICAnY29ycmVjdG5lc3MgY29tcGF0aWJpbGl0eSBjb2hlcmVuY2Ugc3ltbWV0cnkgYXNzeW1ldHJ5ICcgK1xuICAgICAgJ3JlZmxleGl2aXR5IGlycmVmbGV4aXZpdHkgY29ubmVjdGVkbmVzcyB1bmlxdWVuZXNzIGNvbW11dGF0aXZpdHkgJyArXG4gICAgICAnaWRlbXBvdGVuY2UgaW52b2x1dGl2ZW5lc3MgcHJvamVjdGl2aXR5JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCc6OicsICckJylcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUEVSTF9LRVlXT1JEUyA9ICdnZXRwd2VudCBnZXRzZXJ2ZW50IHF1b3RlbWV0YSBtc2dyY3Ygc2NhbGFyIGtpbGwgZGJtY2xvc2UgdW5kZWYgbGMgJyArXG4gICAgJ21hIHN5c3dyaXRlIHRyIHNlbmQgdW1hc2sgc3lzb3BlbiBzaG13cml0ZSB2ZWMgcXggdXRpbWUgbG9jYWwgb2N0IHNlbWN0bCBsb2NhbHRpbWUgJyArXG4gICAgJ3JlYWRwaXBlIGRvIHJldHVybiBmb3JtYXQgcmVhZCBzcHJpbnRmIGRibW9wZW4gcG9wIGdldHBncnAgbm90IGdldHB3bmFtIHJld2luZGRpciBxcScgK1xuICAgICdmaWxlbm8gcXcgZW5kcHJvdG9lbnQgd2FpdCBzZXRob3N0ZW50IGJsZXNzIHN8MCBvcGVuZGlyIGNvbnRpbnVlIGVhY2ggc2xlZXAgZW5kZ3JlbnQgJyArXG4gICAgJ3NodXRkb3duIGR1bXAgY2hvbXAgY29ubmVjdCBnZXRzb2NrbmFtZSBkaWUgc29ja2V0cGFpciBjbG9zZSBmbG9jayBleGlzdHMgaW5kZXggc2htZ2V0JyArXG4gICAgJ3N1YiBmb3IgZW5kcHdlbnQgcmVkbyBsc3RhdCBtc2djdGwgc2V0cGdycCBhYnMgZXhpdCBzZWxlY3QgcHJpbnQgcmVmIGdldGhvc3RieWFkZHIgJyArXG4gICAgJ3Vuc2hpZnQgZmNudGwgc3lzY2FsbCBnb3RvIGdldG5ldGJ5YWRkciBqb2luIGdtdGltZSBzeW1saW5rIHNlbWdldCBzcGxpY2UgeHwwICcgK1xuICAgICdnZXRwZWVybmFtZSByZWN2IGxvZyBzZXRzb2Nrb3B0IGNvcyBsYXN0IHJldmVyc2UgZ2V0aG9zdGJ5bmFtZSBnZXRncm5hbSBzdHVkeSBmb3JtbGluZSAnICtcbiAgICAnZW5kaG9zdGVudCB0aW1lcyBjaG9wIGxlbmd0aCBnZXRob3N0ZW50IGdldG5ldGVudCBwYWNrIGdldHByb3RvZW50IGdldHNlcnZieW5hbWUgcmFuZCAnICtcbiAgICAnbWtkaXIgcG9zIGNobW9kIHl8MCBzdWJzdHIgZW5kbmV0ZW50IHByaW50ZiBuZXh0IG9wZW4gbXNnc25kIHJlYWRkaXIgdXNlIHVubGluayAnICtcbiAgICAnZ2V0c29ja29wdCBnZXRwcmlvcml0eSByaW5kZXggd2FudGFycmF5IGhleCBzeXN0ZW0gZ2V0c2VydmJ5cG9ydCBlbmRzZXJ2ZW50IGludCBjaHIgJyArXG4gICAgJ3VudGllIHJtZGlyIHByb3RvdHlwZSB0ZWxsIGxpc3RlbiBmb3JrIHNobXJlYWQgdWNmaXJzdCBzZXRwcm90b2VudCBlbHNlIHN5c3NlZWsgbGluayAnICtcbiAgICAnZ2V0Z3JnaWQgc2htY3RsIHdhaXRwaWQgdW5wYWNrIGdldG5ldGJ5bmFtZSByZXNldCBjaGRpciBncmVwIHNwbGl0IHJlcXVpcmUgY2FsbGVyICcgK1xuICAgICdsY2ZpcnN0IHVudGlsIHdhcm4gd2hpbGUgdmFsdWVzIHNoaWZ0IHRlbGxkaXIgZ2V0cHd1aWQgbXkgZ2V0cHJvdG9ieW51bWJlciBkZWxldGUgYW5kICcgK1xuICAgICdzb3J0IHVjIGRlZmluZWQgc3JhbmQgYWNjZXB0IHBhY2thZ2Ugc2Vla2RpciBnZXRwcm90b2J5bmFtZSBzZW1vcCBvdXIgcmVuYW1lIHNlZWsgaWYgcXwwICcgK1xuICAgICdjaHJvb3Qgc3lzcmVhZCBzZXRwd2VudCBubyBjcnlwdCBnZXRjIGNob3duIHNxcnQgd3JpdGUgc2V0bmV0ZW50IHNldHByaW9yaXR5IGZvcmVhY2ggJyArXG4gICAgJ3RpZSBzaW4gbXNnZ2V0IG1hcCBzdGF0IGdldGxvZ2luIHVubGVzcyBlbHNpZiB0cnVuY2F0ZSBleGVjIGtleXMgZ2xvYiB0aWVkIGNsb3NlZGlyJyArXG4gICAgJ2lvY3RsIHNvY2tldCByZWFkbGluayBldmFsIHhvciByZWFkbGluZSBiaW5tb2RlIHNldHNlcnZlbnQgZW9mIG9yZCBiaW5kIGFsYXJtIHBpcGUgJyArXG4gICAgJ2F0YW4yIGdldGdyZW50IGV4cCB0aW1lIHB1c2ggc2V0Z3JlbnQgZ3QgbHQgb3IgbmUgbXwwIGJyZWFrIGdpdmVuIHNheSBzdGF0ZSB3aGVuJztcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ1skQF1cXFxceycsIGVuZDogJ1xcXFx9JyxcbiAgICBrZXl3b3JkczogUEVSTF9LRVlXT1JEU1xuICB9O1xuICB2YXIgTUVUSE9EID0ge1xuICAgIGJlZ2luOiAnLT57JywgZW5kOiAnfSdcbiAgICAvLyBjb250YWlucyBkZWZpbmVkIGxhdGVyXG4gIH07XG4gIHZhciBWQVIgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1xcJFxcZC99LFxuICAgICAge2JlZ2luOiAvW1xcJCVAXShcXF5cXHdcXGJ8I1xcdysoOjpcXHcrKSp8e1xcdyt9fFxcdysoOjpcXHcqKSopL30sXG4gICAgICB7YmVnaW46IC9bXFwkJUBdW15cXHNcXHd7XS8sIHJlbGV2YW5jZTogMH1cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkdfQ09OVEFJTlMgPSBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVCwgVkFSXTtcbiAgdmFyIFBFUkxfREVGQVVMVF9DT05UQUlOUyA9IFtcbiAgICBWQVIsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAnXlxcXFw9XFxcXHcnLFxuICAgICAgJ1xcXFw9Y3V0JyxcbiAgICAgIHtcbiAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWVcbiAgICAgIH1cbiAgICApLFxuICAgIE1FVEhPRCxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgY29udGFpbnM6IFNUUklOR19DT05UQUlOUyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ3FbcXd4cl0/XFxcXHMqXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ3FbcXd4cl0/XFxcXHMqXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ3FbcXd4cl0/XFxcXHMqXFxcXHsnLCBlbmQ6ICdcXFxcfScsXG4gICAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ3FbcXd4cl0/XFxcXHMqXFxcXHwnLCBlbmQ6ICdcXFxcfCcsXG4gICAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ3FbcXd4cl0/XFxcXHMqXFxcXDwnLCBlbmQ6ICdcXFxcPicsXG4gICAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ3F3XFxcXHMrcScsIGVuZDogJ3EnLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ3tcXFxcdyt9JyxcbiAgICAgICAgICBjb250YWluczogW10sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ1xcLT9cXFxcdytcXFxccypcXFxcPVxcXFw+JyxcbiAgICAgICAgICBjb250YWluczogW10sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJyhcXFxcYjBbMC03X10rKXwoXFxcXGIweFswLTlhLWZBLUZfXSspfChcXFxcYlsxLTldWzAtOV9dKihcXFxcLlswLTlfXSspPyl8WzBfXVxcXFxiJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAgeyAvLyByZWdleHAgY29udGFpbmVyXG4gICAgICBiZWdpbjogJyhcXFxcL1xcXFwvfCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3xcXFxcYihzcGxpdHxyZXR1cm58cHJpbnR8cmV2ZXJzZXxncmVwKVxcXFxiKVxcXFxzKicsXG4gICAgICBrZXl3b3JkczogJ3NwbGl0IHJldHVybiBwcmludCByZXZlcnNlIGdyZXAnLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgICAgYmVnaW46ICcoc3x0cnx5KS8oXFxcXFxcXFwufFteL10pKi8oXFxcXFxcXFwufFteL10pKi9bYS16XSonLFxuICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgICAgYmVnaW46ICcobXxxcik/LycsIGVuZDogJy9bYS16XSonLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgICByZWxldmFuY2U6IDAgLy8gYWxsb3dzIGVtcHR5IFwiLy9cIiB3aGljaCBpcyBhIGNvbW1vbiBjb21tZW50IGRlbGltaXRlciBpbiBvdGhlciBsYW5ndWFnZXNcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgYmVnaW5LZXl3b3JkczogJ3N1YicsIGVuZDogJyhcXFxccypcXFxcKC4qP1xcXFwpKT9bO3tdJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIHJlbGV2YW5jZTogNSxcbiAgICAgIGNvbnRhaW5zOiBbaGxqcy5USVRMRV9NT0RFXVxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICctXFxcXHdcXFxcYicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiBcIl5fX0RBVEFfXyRcIixcbiAgICAgIGVuZDogXCJeX19FTkRfXyRcIixcbiAgICAgIHN1Ykxhbmd1YWdlOiAnbW9qb2xpY2lvdXMnLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IFwiXkBALipcIixcbiAgICAgICAgICAgIGVuZDogXCIkXCIsXG4gICAgICAgICAgICBjbGFzc05hbWU6IFwiY29tbWVudFwiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gUEVSTF9ERUZBVUxUX0NPTlRBSU5TO1xuICBNRVRIT0QuY29udGFpbnMgPSBQRVJMX0RFRkFVTFRfQ09OVEFJTlM7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3BsJywgJ3BtJ10sXG4gICAgbGV4ZW1lczogL1tcXHdcXC5dKy8sXG4gICAga2V5d29yZHM6IFBFUkxfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFBFUkxfREVGQVVMVF9DT05UQUlOU1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXl9fKEVORHxEQVRBKV9fJCdcbiAgICAgIH0sXG4gICAgLy8gbW9qb2xpY2lvdXMgbGluZVxuICAgICAge1xuICAgICAgICBiZWdpbjogXCJeXFxcXHMqJXsxLDJ9PXswLDJ9XCIsIGVuZDogJyQnLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3BlcmwnXG4gICAgICB9LFxuICAgIC8vIG1vam9saWNpb3VzIGJsb2NrXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBcIjwlezEsMn09ezAsMn1cIixcbiAgICAgICAgZW5kOiBcIj17MCwxfSU+XCIsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAncGVybCcsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJywgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnWyRdW2EtZkEtRjAtOV0rJ1xuICAgICAgfSxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAncHVibGljIHByaXZhdGUgcHJvcGVydHkgY29udGludWUgZXhpdCBleHRlcm4gbmV3IHRyeSBjYXRjaCAnICtcbiAgICAgICAgJ2VhY2hpbiBub3QgYWJzdHJhY3QgZmluYWwgc2VsZWN0IGNhc2UgZGVmYXVsdCBjb25zdCBsb2NhbCBnbG9iYWwgZmllbGQgJyArXG4gICAgICAgICdlbmQgaWYgdGhlbiBlbHNlIGVsc2VpZiBlbmRpZiB3aGlsZSB3ZW5kIHJlcGVhdCB1bnRpbCBmb3JldmVyIGZvciAnICtcbiAgICAgICAgJ3RvIHN0ZXAgbmV4dCByZXR1cm4gbW9kdWxlIGlubGluZSB0aHJvdyBpbXBvcnQnLFxuXG4gICAgICBidWlsdF9pbjogJ0RlYnVnTG9nIERlYnVnU3RvcCBFcnJvciBQcmludCBBQ29zIEFDb3NyIEFTaW4gQVNpbnIgQVRhbiBBVGFuMiBBVGFuMnIgQVRhbnIgQWJzIEFicyBDZWlsICcgK1xuICAgICAgICAnQ2xhbXAgQ2xhbXAgQ29zIENvc3IgRXhwIEZsb29yIExvZyBNYXggTWF4IE1pbiBNaW4gUG93IFNnbiBTZ24gU2luIFNpbnIgU3FydCBUYW4gVGFuciBTZWVkIFBJIEhBTEZQSSBUV09QSScsXG5cbiAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIG51bGwgYW5kIG9yIHNobCBzaHIgbW9kJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnI3JlbScsICcjZW5kJyksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgIFwiJ1wiLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24gbWV0aG9kJywgZW5kOiAnWyg9Ol18JCcsXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoc2VsZnxzdXBlcilcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ1xcXFxzKiMnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2lmIGVsc2UgZWxzZWlmIGVuZGlmIGVuZCB0aGVuJ31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15cXFxccypzdHJpY3RcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdhbGlhcycsIGVuZDogJz0nLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgfSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBOVU1CRVJcbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgLy8gTW9vbnNjcmlwdCBrZXl3b3Jkc1xuICAgICAgJ2lmIHRoZW4gbm90IGZvciBpbiB3aGlsZSBkbyByZXR1cm4gZWxzZSBlbHNlaWYgYnJlYWsgY29udGludWUgc3dpdGNoIGFuZCBvciAnICtcbiAgICAgICd1bmxlc3Mgd2hlbiBjbGFzcyBleHRlbmRzIHN1cGVyIGxvY2FsIGltcG9ydCBleHBvcnQgZnJvbSB1c2luZycsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlIG5pbCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnX0cgX1ZFUlNJT04gYXNzZXJ0IGNvbGxlY3RnYXJiYWdlIGRvZmlsZSBlcnJvciBnZXRmZW52IGdldG1ldGF0YWJsZSBpcGFpcnMgbG9hZCAnICtcbiAgICAgICdsb2FkZmlsZSBsb2Fkc3RyaW5nIG1vZHVsZSBuZXh0IHBhaXJzIHBjYWxsIHByaW50IHJhd2VxdWFsIHJhd2dldCByYXdzZXQgcmVxdWlyZSAnICtcbiAgICAgICdzZWxlY3Qgc2V0ZmVudiBzZXRtZXRhdGFibGUgdG9udW1iZXIgdG9zdHJpbmcgdHlwZSB1bnBhY2sgeHBjYWxsIGNvcm91dGluZSBkZWJ1ZyAnICtcbiAgICAgICdpbyBtYXRoIG9zIHBhY2thZ2Ugc3RyaW5nIHRhYmxlJ1xuICB9O1xuICB2YXIgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXVswLTlBLVphLXokX10qJztcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogLyNcXHsvLCBlbmQ6IC99LyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgdmFyIEVYUFJFU1NJT05TID0gW1xuICAgIGhsanMuaW5oZXJpdChobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7c3RhcnRzOiB7ZW5kOiAnKFxcXFxzKi8pPycsIHJlbGV2YW5jZTogMH19KSwgLy8gYSBudW1iZXIgdHJpZXMgdG8gZWF0IHRoZSBmb2xsb3dpbmcgc2xhc2ggdG8gcHJldmVudCB0cmVhdGluZyBpdCBhcyBhIHJlZ2V4cFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICB2YXJpYW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC8nLywgZW5kOiAvJy8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgYmVnaW46ICdAX18nICsgaGxqcy5JREVOVF9SRVxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICdAJyArIGhsanMuSURFTlRfUkUgLy8gcmVsZXZhbmNlIGJvb3N0ZXIgb24gcGFyIHdpdGggQ29mZmVlU2NyaXB0XG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICdcXFxcXFxcXCcgKyBobGpzLklERU5UX1JFIC8vIGluc3RcXG1ldGhvZFxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFWFBSRVNTSU9OUztcblxuICB2YXIgVElUTEUgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IEpTX0lERU5UX1JFfSk7XG4gIHZhciBQQVJBTVNfUkUgPSAnKFxcXFwoLipcXFxcKSk/XFxcXHMqXFxcXEJbLT1dPic7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoW15cXFxcKF0nLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAvKiBXZSBuZWVkIGFub3RoZXIgY29udGFpbmVkIG5hbWVsZXNzIG1vZGUgdG8gbm90IGhhdmUgZXZlcnkgbmVzdGVkXG4gICAgcGFpciBvZiBwYXJlbnMgdG8gYmUgY2FsbGVkIFwicGFyYW1zXCIgKi9cbiAgICBjb250YWluczogW3tcbiAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXS5jb25jYXQoRVhQUkVTU0lPTlMpXG4gICAgfV1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbW9vbiddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlMuY29uY2F0KFtcbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsICAvLyBmdW5jdGlvbjogLT4gPT5cbiAgICAgICAgYmVnaW46ICdeXFxcXHMqJyArIEpTX0lERU5UX1JFICsgJ1xcXFxzKj1cXFxccyonICsgUEFSQU1TX1JFLCBlbmQ6ICdbLT1dPicsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1RJVExFLCBQQVJBTVNdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1tcXCgsOj1dXFxzKi8sIC8vIGFub255bW91cyBmdW5jdGlvbiBzdGFydFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgYmVnaW46IFBBUkFNU19SRSwgZW5kOiAnWy09XT4nLFxuICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW1BBUkFNU11cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIGlsbGVnYWw6IC9bOj1cIlxcW1xcXV0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdleHRlbmRzJyxcbiAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgICAgICBjb250YWluczogW1RJVExFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgVElUTEVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsICAgIC8vIHRhYmxlXG4gICAgICAgIGJlZ2luOiBKU19JREVOVF9SRSArICc6JywgZW5kOiAnOicsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLCByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0pXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczpcbiAgICAgICAgICAnYnVpbGQgY3JlYXRlIGluZGV4IGRlbGV0ZSBkcm9wIGV4cGxhaW4gaW5mZXJ8MTAgaW5zZXJ0IG1lcmdlIHByZXBhcmUgc2VsZWN0IHVwZGF0ZSB1cHNlcnR8MTAnLFxuICAgICAgICBlbmQ6IC87LywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgLy8gVGFrZW4gZnJvbSBodHRwOi8vZGV2ZWxvcGVyLmNvdWNoYmFzZS5jb20vZG9jdW1lbnRhdGlvbi9zZXJ2ZXIvY3VycmVudC9uMXFsL24xcWwtbGFuZ3VhZ2UtcmVmZXJlbmNlL3Jlc2VydmVkd29yZHMuaHRtbFxuICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAnYWxsIGFsdGVyIGFuYWx5emUgYW5kIGFueSBhcnJheSBhcyBhc2MgYmVnaW4gYmV0d2VlbiBiaW5hcnkgYm9vbGVhbiBicmVhayBidWNrZXQgYnVpbGQgYnkgY2FsbCAnICtcbiAgICAgICAgICAgICdjYXNlIGNhc3QgY2x1c3RlciBjb2xsYXRlIGNvbGxlY3Rpb24gY29tbWl0IGNvbm5lY3QgY29udGludWUgY29ycmVsYXRlIGNvdmVyIGNyZWF0ZSBkYXRhYmFzZSAnICtcbiAgICAgICAgICAgICdkYXRhc2V0IGRhdGFzdG9yZSBkZWNsYXJlIGRlY3JlbWVudCBkZWxldGUgZGVyaXZlZCBkZXNjIGRlc2NyaWJlIGRpc3RpbmN0IGRvIGRyb3AgZWFjaCBlbGVtZW50ICcgK1xuICAgICAgICAgICAgJ2Vsc2UgZW5kIGV2ZXJ5IGV4Y2VwdCBleGNsdWRlIGV4ZWN1dGUgZXhpc3RzIGV4cGxhaW4gZmV0Y2ggZmlyc3QgZmxhdHRlbiBmb3IgZm9yY2UgZnJvbSAnICtcbiAgICAgICAgICAgICdmdW5jdGlvbiBncmFudCBncm91cCBnc2kgaGF2aW5nIGlmIGlnbm9yZSBpbGlrZSBpbiBpbmNsdWRlIGluY3JlbWVudCBpbmRleCBpbmZlciBpbmxpbmUgaW5uZXIgJyArXG4gICAgICAgICAgICAnaW5zZXJ0IGludGVyc2VjdCBpbnRvIGlzIGpvaW4ga2V5IGtleXMga2V5c3BhY2Uga25vd24gbGFzdCBsZWZ0IGxldCBsZXR0aW5nIGxpa2UgbGltaXQgbHNtIG1hcCAnICtcbiAgICAgICAgICAgICdtYXBwaW5nIG1hdGNoZWQgbWF0ZXJpYWxpemVkIG1lcmdlIG1pbnVzIG5hbWVzcGFjZSBuZXN0IG5vdCBudW1iZXIgb2JqZWN0IG9mZnNldCBvbiAnICtcbiAgICAgICAgICAgICdvcHRpb24gb3Igb3JkZXIgb3V0ZXIgb3ZlciBwYXJzZSBwYXJ0aXRpb24gcGFzc3dvcmQgcGF0aCBwb29sIHByZXBhcmUgcHJpbWFyeSBwcml2YXRlIHByaXZpbGVnZSAnICtcbiAgICAgICAgICAgICdwcm9jZWR1cmUgcHVibGljIHJhdyByZWFsbSByZWR1Y2UgcmVuYW1lIHJldHVybiByZXR1cm5pbmcgcmV2b2tlIHJpZ2h0IHJvbGUgcm9sbGJhY2sgc2F0aXNmaWVzICcgK1xuICAgICAgICAgICAgJ3NjaGVtYSBzZWxlY3Qgc2VsZiBzZW1pIHNldCBzaG93IHNvbWUgc3RhcnQgc3RhdGlzdGljcyBzdHJpbmcgc3lzdGVtIHRoZW4gdG8gdHJhbnNhY3Rpb24gdHJpZ2dlciAnICtcbiAgICAgICAgICAgICd0cnVuY2F0ZSB1bmRlciB1bmlvbiB1bmlxdWUgdW5rbm93biB1bm5lc3QgdW5zZXQgdXBkYXRlIHVwc2VydCB1c2UgdXNlciB1c2luZyB2YWxpZGF0ZSB2YWx1ZSAnICtcbiAgICAgICAgICAgICd2YWx1ZWQgdmFsdWVzIHZpYSB2aWV3IHdoZW4gd2hlcmUgd2hpbGUgd2l0aCB3aXRoaW4gd29yayB4b3InLFxuICAgICAgICAgIC8vIFRha2VuIGZyb20gaHR0cDovL2RldmVsb3Blci5jb3VjaGJhc2UuY29tL2RvY3VtZW50YXRpb24vc2VydmVyLzQuNS9uMXFsL24xcWwtbGFuZ3VhZ2UtcmVmZXJlbmNlL2xpdGVyYWxzLmh0bWxcbiAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgJ3RydWUgZmFsc2UgbnVsbCBtaXNzaW5nfDUnLFxuICAgICAgICAgIC8vIFRha2VuIGZyb20gaHR0cDovL2RldmVsb3Blci5jb3VjaGJhc2UuY29tL2RvY3VtZW50YXRpb24vc2VydmVyLzQuNS9uMXFsL24xcWwtbGFuZ3VhZ2UtcmVmZXJlbmNlL2Z1bmN0aW9ucy5odG1sXG4gICAgICAgICAgYnVpbHRfaW46XG4gICAgICAgICAgICAnYXJyYXlfYWdnIGFycmF5X2FwcGVuZCBhcnJheV9jb25jYXQgYXJyYXlfY29udGFpbnMgYXJyYXlfY291bnQgYXJyYXlfZGlzdGluY3QgYXJyYXlfaWZudWxsIGFycmF5X2xlbmd0aCAnICtcbiAgICAgICAgICAgICdhcnJheV9tYXggYXJyYXlfbWluIGFycmF5X3Bvc2l0aW9uIGFycmF5X3ByZXBlbmQgYXJyYXlfcHV0IGFycmF5X3JhbmdlIGFycmF5X3JlbW92ZSBhcnJheV9yZXBlYXQgYXJyYXlfcmVwbGFjZSAnICtcbiAgICAgICAgICAgICdhcnJheV9yZXZlcnNlIGFycmF5X3NvcnQgYXJyYXlfc3VtIGF2ZyBjb3VudCBtYXggbWluIHN1bSBncmVhdGVzdCBsZWFzdCBpZm1pc3NpbmcgaWZtaXNzaW5nb3JudWxsIGlmbnVsbCAnICtcbiAgICAgICAgICAgICdtaXNzaW5naWYgbnVsbGlmIGlmaW5mIGlmbmFuIGlmbmFub3JpbmYgbmFuaW5mIG5lZ2luZmlmIHBvc2luZmlmIGNsb2NrX21pbGxpcyBjbG9ja19zdHIgZGF0ZV9hZGRfbWlsbGlzICcgK1xuICAgICAgICAgICAgJ2RhdGVfYWRkX3N0ciBkYXRlX2RpZmZfbWlsbGlzIGRhdGVfZGlmZl9zdHIgZGF0ZV9wYXJ0X21pbGxpcyBkYXRlX3BhcnRfc3RyIGRhdGVfdHJ1bmNfbWlsbGlzIGRhdGVfdHJ1bmNfc3RyICcgK1xuICAgICAgICAgICAgJ2R1cmF0aW9uX3RvX3N0ciBtaWxsaXMgc3RyX3RvX21pbGxpcyBtaWxsaXNfdG9fc3RyIG1pbGxpc190b191dGMgbWlsbGlzX3RvX3pvbmVfbmFtZSBub3dfbWlsbGlzIG5vd19zdHIgJyArXG4gICAgICAgICAgICAnc3RyX3RvX2R1cmF0aW9uIHN0cl90b191dGMgc3RyX3RvX3pvbmVfbmFtZSBkZWNvZGVfanNvbiBlbmNvZGVfanNvbiBlbmNvZGVkX3NpemUgcG9seV9sZW5ndGggYmFzZTY0IGJhc2U2NF9lbmNvZGUgJyArXG4gICAgICAgICAgICAnYmFzZTY0X2RlY29kZSBtZXRhIHV1aWQgYWJzIGFjb3MgYXNpbiBhdGFuIGF0YW4yIGNlaWwgY29zIGRlZ3JlZXMgZSBleHAgbG4gbG9nIGZsb29yIHBpIHBvd2VyIHJhZGlhbnMgcmFuZG9tICcgK1xuICAgICAgICAgICAgJ3JvdW5kIHNpZ24gc2luIHNxcnQgdGFuIHRydW5jIG9iamVjdF9sZW5ndGggb2JqZWN0X25hbWVzIG9iamVjdF9wYWlycyBvYmplY3RfaW5uZXJfcGFpcnMgb2JqZWN0X3ZhbHVlcyAnICtcbiAgICAgICAgICAgICdvYmplY3RfaW5uZXJfdmFsdWVzIG9iamVjdF9hZGQgb2JqZWN0X3B1dCBvYmplY3RfcmVtb3ZlIG9iamVjdF91bndyYXAgcmVnZXhwX2NvbnRhaW5zIHJlZ2V4cF9saWtlIHJlZ2V4cF9wb3NpdGlvbiAnICtcbiAgICAgICAgICAgICdyZWdleHBfcmVwbGFjZSBjb250YWlucyBpbml0Y2FwIGxlbmd0aCBsb3dlciBsdHJpbSBwb3NpdGlvbiByZXBlYXQgcmVwbGFjZSBydHJpbSBzcGxpdCBzdWJzdHIgdGl0bGUgdHJpbSB1cHBlciAnICtcbiAgICAgICAgICAgICdpc2FycmF5IGlzYXRvbSBpc2Jvb2xlYW4gaXNudW1iZXIgaXNvYmplY3QgaXNzdHJpbmcgdHlwZSB0b2FycmF5IHRvYXRvbSB0b2Jvb2xlYW4gdG9udW1iZXIgdG9vYmplY3QgdG9zdHJpbmcnXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVkFSID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXFwkXFxkKy99LFxuICAgICAge2JlZ2luOiAvXFwkXFx7LywgZW5kOiAvfS99LFxuICAgICAge2JlZ2luOiAnW1xcXFwkXFxcXEBdJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRX1cbiAgICBdXG4gIH07XG4gIHZhciBERUZBVUxUID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIGxleGVtZXM6ICdbYS16L19dKycsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdvbiBvZmYgeWVzIG5vIHRydWUgZmFsc2Ugbm9uZSBibG9ja2VkIGRlYnVnIGluZm8gbm90aWNlIHdhcm4gZXJyb3IgY3JpdCAnICtcbiAgICAgICAgJ3NlbGVjdCBicmVhayBsYXN0IHBlcm1hbmVudCByZWRpcmVjdCBrcXVldWUgcnRzaWcgZXBvbGwgcG9sbCAvZGV2L3BvbGwnXG4gICAgfSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgaWxsZWdhbDogJz0+JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFZBUl0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAgICAgIHtiZWdpbjogLycvLCBlbmQ6IC8nL31cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIHRoaXMgc3dhbGxvd3MgZW50aXJlIFVSTHMgdG8gYXZvaWQgZGV0ZWN0aW5nIG51bWJlcnMgd2l0aGluXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKFthLXpdKyk6LycsIGVuZDogJ1xcXFxzJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbVkFSXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFZBUl0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiBcIlxcXFxzXFxcXF5cIiwgZW5kOiBcIlxcXFxzfHt8O1wiLCByZXR1cm5FbmQ6IHRydWV9LFxuICAgICAgICAgIC8vIHJlZ2V4cCBsb2NhdGlvbnMgKH4sIH4qKVxuICAgICAgICAgIHtiZWdpbjogXCJ+XFxcXCo/XFxcXHMrXCIsIGVuZDogXCJcXFxcc3x7fDtcIiwgcmV0dXJuRW5kOiB0cnVlfSxcbiAgICAgICAgICAvLyAqLmV4YW1wbGUuY29tXG4gICAgICAgICAge2JlZ2luOiBcIlxcXFwqKFxcXFwuW2EtelxcXFwtXSspK1wifSxcbiAgICAgICAgICAvLyBzdWIuZXhhbXBsZS4qXG4gICAgICAgICAge2JlZ2luOiBcIihbYS16XFxcXC1dK1xcXFwuKStcXFxcKlwifVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gSVBcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYlxcXFxkezEsM31cXFxcLlxcXFxkezEsM31cXFxcLlxcXFxkezEsM31cXFxcLlxcXFxkezEsM30oOlxcXFxkezEsNX0pP1xcXFxiJ1xuICAgICAgfSxcbiAgICAgIC8vIHVuaXRzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJcXFxcZCtba0ttTWdHZHNoZHd5XSpcXFxcYicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIFZBUlxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbmdpbnhjb25mJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMreycsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBlbmQ6ICd7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccycsIGVuZDogJzt8eycsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICAgICAgc3RhcnRzOiBERUZBVUxUXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6ICdbXlxcXFxzXFxcXH1dJ1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ25pbSddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYWRkciBhbmQgYXMgYXNtIGJpbmQgYmxvY2sgYnJlYWsgY2FzZSBjYXN0IGNvbnN0IGNvbnRpbnVlIGNvbnZlcnRlciAnICtcbiAgICAgICAgJ2Rpc2NhcmQgZGlzdGluY3QgZGl2IGRvIGVsaWYgZWxzZSBlbmQgZW51bSBleGNlcHQgZXhwb3J0IGZpbmFsbHkgJyArXG4gICAgICAgICdmb3IgZnJvbSBnZW5lcmljIGlmIGltcG9ydCBpbiBpbmNsdWRlIGludGVyZmFjZSBpcyBpc25vdCBpdGVyYXRvciAnICtcbiAgICAgICAgJ2xldCBtYWNybyBtZXRob2QgbWl4aW4gbW9kIG5pbCBub3Qgbm90aW4gb2JqZWN0IG9mIG9yIG91dCBwcm9jIHB0ciAnICtcbiAgICAgICAgJ3JhaXNlIHJlZiByZXR1cm4gc2hsIHNociBzdGF0aWMgdGVtcGxhdGUgdHJ5IHR1cGxlIHR5cGUgdXNpbmcgdmFyICcgK1xuICAgICAgICAnd2hlbiB3aGlsZSB3aXRoIHdpdGhvdXQgeG9yIHlpZWxkJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdzaGFyZWQgZ3VhcmRlZCBzdGRpbiBzdGRvdXQgc3RkZXJyIHJlc3VsdCB0cnVlIGZhbHNlJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnaW50IGludDggaW50MTYgaW50MzIgaW50NjQgdWludCB1aW50OCB1aW50MTYgdWludDMyIHVpbnQ2NCBmbG9hdCAnICtcbiAgICAgICAgJ2Zsb2F0MzIgZmxvYXQ2NCBib29sIGNoYXIgc3RyaW5nIGNzdHJpbmcgcG9pbnRlciBleHByIHN0bXQgdm9pZCAnICtcbiAgICAgICAgJ2F1dG8gYW55IHJhbmdlIGFycmF5IG9wZW5hcnJheSB2YXJhcmdzIHNlcSBzZXQgY2xvbmcgY3Vsb25nIGNjaGFyICcgK1xuICAgICAgICAnY3NjaGFyIGNzaG9ydCBjaW50IGNzaXplIGNsb25nbG9uZyBjZmxvYXQgY2RvdWJsZSBjbG9uZ2RvdWJsZSAnICtcbiAgICAgICAgJ2N1Y2hhciBjdXNob3J0IGN1aW50IGN1bG9uZ2xvbmcgY3N0cmluZ2FycmF5IHNlbWlzdGF0aWMnXG4gICAgfSxcbiAgICBjb250YWluczogWyB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCAvLyBBY3R1YWxseSBwcmFnbWFcbiAgICAgICAgYmVnaW46IC97XFwuLyxcbiAgICAgICAgZW5kOiAvXFwufS8sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC9bYS16QS1aXVxcdypcIi8sXG4gICAgICAgIGVuZDogL1wiLyxcbiAgICAgICAgY29udGFpbnM6IFt7YmVnaW46IC9cIlwiL31dXG4gICAgICB9LCB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvKFthLXpBLVpdXFx3Kik/XCJcIlwiLyxcbiAgICAgICAgZW5kOiAvXCJcIlwiL1xuICAgICAgfSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogL1xcYltBLVpdXFx3K1xcYi8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSwge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAvXFxiKDBbeFhdWzAtOWEtZkEtRl1bXzAtOWEtZkEtRl0qKSgnP1tpSXVVXSg4fDE2fDMyfDY0KSk/L30sXG4gICAgICAgICAge2JlZ2luOiAvXFxiKDBvWzAtN11bXzAtN10qKSgnP1tpSXVVZkZdKDh8MTZ8MzJ8NjQpKT8vfSxcbiAgICAgICAgICB7YmVnaW46IC9cXGIoMChifEIpWzAxXVtfMDFdKikoJz9baUl1VWZGXSg4fDE2fDMyfDY0KSk/L30sXG4gICAgICAgICAge2JlZ2luOiAvXFxiKFxcZFtfXFxkXSopKCc/W2lJdVVmRl0oOHwxNnwzMnw2NCkpPy99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgTklYX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAncmVjIHdpdGggbGV0IGluIGluaGVyaXQgYXNzZXJ0IGlmIGVsc2UgdGhlbicsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlIG9yIGFuZCBudWxsJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdpbXBvcnQgYWJvcnQgYmFzZU5hbWVPZiBkaXJPZiBpc051bGwgYnVpbHRpbnMgbWFwIHJlbW92ZUF0dHJzIHRocm93ICcgK1xuICAgICAgJ3RvU3RyaW5nIGRlcml2YXRpb24nXG4gIH07XG4gIHZhciBBTlRJUVVPVEUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvXFwkXFx7LyxcbiAgICBlbmQ6IC99LyxcbiAgICBrZXl3b3JkczogTklYX0tFWVdPUkRTXG4gIH07XG4gIHZhciBBVFRSUyA9IHtcbiAgICBiZWdpbjogL1thLXpBLVowLTktX10rKFxccyo9KS8sIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgYmVnaW46IC9cXFMrL1xuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbQU5USVFVT1RFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiBcIicnXCIsIGVuZDogXCInJ1wifSxcbiAgICAgIHtiZWdpbjogJ1wiJywgZW5kOiAnXCInfVxuICAgIF1cbiAgfTtcbiAgdmFyIEVYUFJFU1NJT05TID0gW1xuICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIFNUUklORyxcbiAgICBBVFRSU1xuICBdO1xuICBBTlRJUVVPVEUuY29udGFpbnMgPSBFWFBSRVNTSU9OUztcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbXCJuaXhvc1wiXSxcbiAgICBrZXl3b3JkczogTklYX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBFWFBSRVNTSU9OU1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTlNUQU5UUyA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXCQoQURNSU5UT09MU3xBUFBEQVRBfENEQlVSTl9BUkVBfENNRExJTkV8Q09NTU9ORklMRVMzMnxDT01NT05GSUxFUzY0fENPTU1PTkZJTEVTfENPT0tJRVN8REVTS1RPUHxET0NVTUVOVFN8RVhFRElSfEVYRUZJTEV8RVhFUEFUSHxGQVZPUklURVN8Rk9OVFN8SElTVE9SWXxIV05EUEFSRU5UfElOU1RESVJ8SU5URVJORVRfQ0FDSEV8TEFOR1VBR0V8TE9DQUxBUFBEQVRBfE1VU0lDfE5FVEhPT0R8T1VURElSfFBJQ1RVUkVTfFBMVUdJTlNESVJ8UFJJTlRIT09EfFBST0ZJTEV8UFJPR1JBTUZJTEVTMzJ8UFJPR1JBTUZJTEVTNjR8UFJPR1JBTUZJTEVTfFFVSUNLTEFVTkNIfFJFQ0VOVHxSRVNPVVJDRVNfTE9DQUxJWkVEfFJFU09VUkNFU3xTRU5EVE98U01QUk9HUkFNU3xTTVNUQVJUVVB8U1RBUlRNRU5VfFNZU0RJUnxURU1QfFRFTVBMQVRFU3xWSURFT1N8V0lORElSKS9cbiAgfTtcblxuICB2YXIgREVGSU5FUyA9IHtcbiAgICAvLyAke2RlZmluZXN9XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkK3tbXFx3XFwuOi1dK30vXG4gIH07XG5cbiAgdmFyIFZBUklBQkxFUyA9IHtcbiAgICAvLyAkdmFyaWFibGVzXG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkK1xcdysvLFxuICAgIGlsbGVnYWw6IC9cXChcXCl7fS9cbiAgfTtcblxuICB2YXIgTEFOR1VBR0VTID0ge1xuICAgIC8vICQobGFuZ3VhZ2Vfc3RyaW5ncylcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXCQrXFwoW1xcd1xcXlxcLjotXStcXCkvXG4gIH07XG5cbiAgdmFyIFBBUkFNRVRFUlMgPSB7XG4gICAgLy8gY29tbWFuZCBwYXJhbWV0ZXJzXG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJyhBUkNISVZFfEZJTEVfQVRUUklCVVRFX0FSQ0hJVkV8RklMRV9BVFRSSUJVVEVfTk9STUFMfEZJTEVfQVRUUklCVVRFX09GRkxJTkV8RklMRV9BVFRSSUJVVEVfUkVBRE9OTFl8RklMRV9BVFRSSUJVVEVfU1lTVEVNfEZJTEVfQVRUUklCVVRFX1RFTVBPUkFSWXxIS0NSfEhLQ1V8SEtERHxIS0VZX0NMQVNTRVNfUk9PVHxIS0VZX0NVUlJFTlRfQ09ORklHfEhLRVlfQ1VSUkVOVF9VU0VSfEhLRVlfRFlOX0RBVEF8SEtFWV9MT0NBTF9NQUNISU5FfEhLRVlfUEVSRk9STUFOQ0VfREFUQXxIS0VZX1VTRVJTfEhLTE18SEtQRHxIS1V8SURBQk9SVHxJRENBTkNFTHxJRElHTk9SRXxJRE5PfElET0t8SURSRVRSWXxJRFlFU3xNQl9BQk9SVFJFVFJZSUdOT1JFfE1CX0RFRkJVVFRPTjF8TUJfREVGQlVUVE9OMnxNQl9ERUZCVVRUT04zfE1CX0RFRkJVVFRPTjR8TUJfSUNPTkVYQ0xBTUFUSU9OfE1CX0lDT05JTkZPUk1BVElPTnxNQl9JQ09OUVVFU1RJT058TUJfSUNPTlNUT1B8TUJfT0t8TUJfT0tDQU5DRUx8TUJfUkVUUllDQU5DRUx8TUJfUklHSFR8TUJfUlRMUkVBRElOR3xNQl9TRVRGT1JFR1JPVU5EfE1CX1RPUE1PU1R8TUJfVVNFUklDT058TUJfWUVTTk98Tk9STUFMfE9GRkxJTkV8UkVBRE9OTFl8U0hDVFh8U0hFTExfQ09OVEVYVHxTWVNURU18VEVNUE9SQVJZKSdcbiAgfTtcblxuICB2YXIgQ09NUElMRVIgPSB7XG4gICAgLy8gIWNvbXBpbGVyX2ZsYWdzXG4gICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgYmVnaW46IC9cXCEoYWRkaW5jbHVkZWRpcnxhZGRwbHVnaW5kaXJ8YXBwZW5kZmlsZXxjZHxkZWZpbmV8ZGVsZmlsZXxlY2hvfGVsc2V8ZW5kaWZ8ZXJyb3J8ZXhlY3V0ZXxmaW5hbGl6ZXxnZXRkbGx2ZXJzaW9uc3lzdGVtfGlmZGVmfGlmbWFjcm9kZWZ8aWZtYWNyb25kZWZ8aWZuZGVmfGlmfGluY2x1ZGV8aW5zZXJ0bWFjcm98bWFjcm9lbmR8bWFjcm98bWFrZW5zaXN8cGFja2hkcnxzZWFyY2hwYXJzZXxzZWFyY2hyZXBsYWNlfHRlbXBmaWxlfHVuZGVmfHZlcmJvc2V8d2FybmluZykvXG4gIH07XG5cbiAgdmFyIE1FVEFDSEFSUyA9IHtcbiAgICAvLyAkXFxuLCAkXFxyLCAkXFx0LCAkJFxuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcJChcXFxcW25ydF18XFwkKS9cbiAgfTtcblxuICB2YXIgUExVR0lOUyA9IHtcbiAgICAvLyBwbHVnOjppbnNcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgYmVnaW46IC9cXHcrXFw6XFw6XFx3Ky9cbiAgfTtcblxuICAgIHZhciBTVFJJTkcgPSB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCdcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgTUVUQUNIQVJTLFxuICAgICAgICBDT05TVEFOVFMsXG4gICAgICAgIERFRklORVMsXG4gICAgICAgIFZBUklBQkxFUyxcbiAgICAgICAgTEFOR1VBR0VTXG4gICAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICdBYm9ydCBBZGRCcmFuZGluZ0ltYWdlIEFkZFNpemUgQWxsb3dSb290RGlySW5zdGFsbCBBbGxvd1NraXBGaWxlcyBBdXRvQ2xvc2VXaW5kb3cgQkdGb250IEJHR3JhZGllbnQgQnJhbmRpbmdUZXh0IEJyaW5nVG9Gcm9udCBDYWxsIENhbGxJbnN0RExMIENhcHRpb24gQ2hhbmdlVUkgQ2hlY2tCaXRtYXAgQ2xlYXJFcnJvcnMgQ29tcGxldGVkVGV4dCBDb21wb25lbnRUZXh0IENvcHlGaWxlcyBDUkNDaGVjayBDcmVhdGVEaXJlY3RvcnkgQ3JlYXRlRm9udCBDcmVhdGVTaG9ydEN1dCBEZWxldGUgRGVsZXRlSU5JU2VjIERlbGV0ZUlOSVN0ciBEZWxldGVSZWdLZXkgRGVsZXRlUmVnVmFsdWUgRGV0YWlsUHJpbnQgRGV0YWlsc0J1dHRvblRleHQgRGlyVGV4dCBEaXJWYXIgRGlyVmVyaWZ5IEVuYWJsZVdpbmRvdyBFbnVtUmVnS2V5IEVudW1SZWdWYWx1ZSBFeGNoIEV4ZWMgRXhlY1NoZWxsIEV4ZWNXYWl0IEV4cGFuZEVudlN0cmluZ3MgRmlsZSBGaWxlQnVmU2l6ZSBGaWxlQ2xvc2UgRmlsZUVycm9yVGV4dCBGaWxlT3BlbiBGaWxlUmVhZCBGaWxlUmVhZEJ5dGUgRmlsZVJlYWRVVEYxNkxFIEZpbGVSZWFkV29yZCBGaWxlU2VlayBGaWxlV3JpdGUgRmlsZVdyaXRlQnl0ZSBGaWxlV3JpdGVVVEYxNkxFIEZpbGVXcml0ZVdvcmQgRmluZENsb3NlIEZpbmRGaXJzdCBGaW5kTmV4dCBGaW5kV2luZG93IEZsdXNoSU5JIEZ1bmN0aW9uRW5kIEdldEN1ckluc3RUeXBlIEdldEN1cnJlbnRBZGRyZXNzIEdldERsZ0l0ZW0gR2V0RExMVmVyc2lvbiBHZXRETExWZXJzaW9uTG9jYWwgR2V0RXJyb3JMZXZlbCBHZXRGaWxlVGltZSBHZXRGaWxlVGltZUxvY2FsIEdldEZ1bGxQYXRoTmFtZSBHZXRGdW5jdGlvbkFkZHJlc3MgR2V0SW5zdERpckVycm9yIEdldExhYmVsQWRkcmVzcyBHZXRUZW1wRmlsZU5hbWUgR290byBIaWRlV2luZG93IEljb24gSWZBYm9ydCBJZkVycm9ycyBJZkZpbGVFeGlzdHMgSWZSZWJvb3RGbGFnIElmU2lsZW50IEluaXRQbHVnaW5zRGlyIEluc3RhbGxCdXR0b25UZXh0IEluc3RhbGxDb2xvcnMgSW5zdGFsbERpciBJbnN0YWxsRGlyUmVnS2V5IEluc3RQcm9ncmVzc0ZsYWdzIEluc3RUeXBlIEluc3RUeXBlR2V0VGV4dCBJbnN0VHlwZVNldFRleHQgSW50Q21wIEludENtcFUgSW50Rm10IEludE9wIElzV2luZG93IExhbmdTdHJpbmcgTGljZW5zZUJrQ29sb3IgTGljZW5zZURhdGEgTGljZW5zZUZvcmNlU2VsZWN0aW9uIExpY2Vuc2VMYW5nU3RyaW5nIExpY2Vuc2VUZXh0IExvYWRMYW5ndWFnZUZpbGUgTG9ja1dpbmRvdyBMb2dTZXQgTG9nVGV4dCBNYW5pZmVzdERQSUF3YXJlIE1hbmlmZXN0U3VwcG9ydGVkT1MgTWVzc2FnZUJveCBNaXNjQnV0dG9uVGV4dCBOYW1lIE5vcCBPdXRGaWxlIFBhZ2UgUGFnZUNhbGxiYWNrcyBQYWdlRXhFbmQgUG9wIFB1c2ggUXVpdCBSZWFkRW52U3RyIFJlYWRJTklTdHIgUmVhZFJlZ0RXT1JEIFJlYWRSZWdTdHIgUmVib290IFJlZ0RMTCBSZW5hbWUgUmVxdWVzdEV4ZWN1dGlvbkxldmVsIFJlc2VydmVGaWxlIFJldHVybiBSTURpciBTZWFyY2hQYXRoIFNlY3Rpb25FbmQgU2VjdGlvbkdldEZsYWdzIFNlY3Rpb25HZXRJbnN0VHlwZXMgU2VjdGlvbkdldFNpemUgU2VjdGlvbkdldFRleHQgU2VjdGlvbkdyb3VwRW5kIFNlY3Rpb25JbiBTZWN0aW9uU2V0RmxhZ3MgU2VjdGlvblNldEluc3RUeXBlcyBTZWN0aW9uU2V0U2l6ZSBTZWN0aW9uU2V0VGV4dCBTZW5kTWVzc2FnZSBTZXRBdXRvQ2xvc2UgU2V0QnJhbmRpbmdJbWFnZSBTZXRDb21wcmVzcyBTZXRDb21wcmVzc29yIFNldENvbXByZXNzb3JEaWN0U2l6ZSBTZXRDdGxDb2xvcnMgU2V0Q3VySW5zdFR5cGUgU2V0RGF0YWJsb2NrT3B0aW1pemUgU2V0RGF0ZVNhdmUgU2V0RGV0YWlsc1ByaW50IFNldERldGFpbHNWaWV3IFNldEVycm9yTGV2ZWwgU2V0RXJyb3JzIFNldEZpbGVBdHRyaWJ1dGVzIFNldEZvbnQgU2V0T3V0UGF0aCBTZXRPdmVyd3JpdGUgU2V0UmVib290RmxhZyBTZXRSZWdWaWV3IFNldFNoZWxsVmFyQ29udGV4dCBTZXRTaWxlbnQgU2hvd0luc3REZXRhaWxzIFNob3dVbmluc3REZXRhaWxzIFNob3dXaW5kb3cgU2lsZW50SW5zdGFsbCBTaWxlbnRVbkluc3RhbGwgU2xlZXAgU3BhY2VUZXh0cyBTdHJDbXAgU3RyQ21wUyBTdHJDcHkgU3RyTGVuIFN1YkNhcHRpb24gVW5pY29kZSBVbmluc3RhbGxCdXR0b25UZXh0IFVuaW5zdGFsbENhcHRpb24gVW5pbnN0YWxsSWNvbiBVbmluc3RhbGxTdWJDYXB0aW9uIFVuaW5zdGFsbFRleHQgVW5pbnN0UGFnZSBVblJlZ0RMTCBWYXIgVklBZGRWZXJzaW9uS2V5IFZJRmlsZVZlcnNpb24gVklQcm9kdWN0VmVyc2lvbiBXaW5kb3dJY29uIFdyaXRlSU5JU3RyIFdyaXRlUmVnQmluIFdyaXRlUmVnRFdPUkQgV3JpdGVSZWdFeHBhbmRTdHIgV3JpdGVSZWdTdHIgV3JpdGVVbmluc3RhbGxlciBYUFN0eWxlJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAnYWRtaW4gYWxsIGF1dG8gYm90aCBib3R0b20gYnppcDIgY29sb3JlZCBjb21wb25lbnRzIGN1cnJlbnQgY3VzdG9tIGRpcmVjdG9yeSBmYWxzZSBmb3JjZSBoaWRlIGhpZ2hlc3QgaWZkaWZmIGlmbmV3ZXIgaW5zdGZpbGVzIGxhc3R1c2VkIGxlYXZlIGxlZnQgbGljZW5zZSBsaXN0b25seSBsem1hIG5ldmVyc2hvdyBub25lIG5vcm1hbCBub3RzZXQgb2ZmIG9uIG9wZW4gcHJpbnQgcmlnaHQgc2hvdyBzaWxlbnQgc2lsZW50bG9nIHNtb290aCB0ZXh0b25seSB0b3AgdHJ1ZSB0cnkgdW4uY29tcG9uZW50cyB1bi5jdXN0b20gdW4uZGlyZWN0b3J5IHVuLmluc3RmaWxlcyB1bi5saWNlbnNlIHVuaW5zdENvbmZpcm0gdXNlciBXaW4xMCBXaW43IFdpbjggV2luVmlzdGEgemxpYidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnRnVuY3Rpb24gUGFnZUV4IFNlY3Rpb24gU2VjdGlvbkdyb3VwJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBDT01QSUxFUixcbiAgICAgIERFRklORVMsXG4gICAgICBWQVJJQUJMRVMsXG4gICAgICBMQU5HVUFHRVMsXG4gICAgICBQQVJBTUVURVJTLFxuICAgICAgUExVR0lOUyxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQVBJX0NMQVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKEFWfENBfENGfENHfENJfENMfENNfENOfENUfE1LfE1QfE1US3xNVEx8TlN8U0NOfFNLfFVJfFdLfFhDKVxcXFx3KycsXG4gIH07XG4gIHZhciBPQkpDX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaW50IGZsb2F0IHdoaWxlIGNoYXIgZXhwb3J0IHNpemVvZiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBmb3IgdW5pb24gJyArXG4gICAgICAndW5zaWduZWQgbG9uZyB2b2xhdGlsZSBzdGF0aWMgYm9vbCBtdXRhYmxlIGlmIGRvIHJldHVybiBnb3RvIHZvaWQgJyArXG4gICAgICAnZW51bSBlbHNlIGJyZWFrIGV4dGVybiBhc20gY2FzZSBzaG9ydCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCAnICtcbiAgICAgICdzaWduZWQgdHlwZW5hbWUgdGhpcyBzd2l0Y2ggY29udGludWUgd2NoYXJfdCBpbmxpbmUgcmVhZG9ubHkgYXNzaWduICcgK1xuICAgICAgJ3JlYWR3cml0ZSBzZWxmIEBzeW5jaHJvbml6ZWQgaWQgdHlwZW9mICcgK1xuICAgICAgJ25vbmF0b21pYyBzdXBlciB1bmljaGFyIElCT3V0bGV0IElCQWN0aW9uIHN0cm9uZyB3ZWFrIGNvcHkgJyArXG4gICAgICAnaW4gb3V0IGlub3V0IGJ5Y29weSBieXJlZiBvbmV3YXkgX19zdHJvbmcgX193ZWFrIF9fYmxvY2sgX19hdXRvcmVsZWFzaW5nICcgK1xuICAgICAgJ0Bwcml2YXRlIEBwcm90ZWN0ZWQgQHB1YmxpYyBAdHJ5IEBwcm9wZXJ0eSBAZW5kIEB0aHJvdyBAY2F0Y2ggQGZpbmFsbHkgJyArXG4gICAgICAnQGF1dG9yZWxlYXNlcG9vbCBAc3ludGhlc2l6ZSBAZHluYW1pYyBAc2VsZWN0b3IgQG9wdGlvbmFsIEByZXF1aXJlZCAnICtcbiAgICAgICdAZW5jb2RlIEBwYWNrYWdlIEBpbXBvcnQgQGRlZnMgQGNvbXBhdGliaWxpdHlfYWxpYXMgJyArXG4gICAgICAnX19icmlkZ2UgX19icmlkZ2VfdHJhbnNmZXIgX19icmlkZ2VfcmV0YWluZWQgX19icmlkZ2VfcmV0YWluICcgK1xuICAgICAgJ19fY292YXJpYW50IF9fY29udHJhdmFyaWFudCBfX2tpbmRvZiAnICtcbiAgICAgICdfTm9ubnVsbCBfTnVsbGFibGUgX051bGxfdW5zcGVjaWZpZWQgJyArXG4gICAgICAnX19GVU5DVElPTl9fIF9fUFJFVFRZX0ZVTkNUSU9OX18gX19hdHRyaWJ1dGVfXyAnICtcbiAgICAgICdnZXR0ZXIgc2V0dGVyIHJldGFpbiB1bnNhZmVfdW5yZXRhaW5lZCAnICtcbiAgICAgICdub25udWxsIG51bGxhYmxlIG51bGxfdW5zcGVjaWZpZWQgbnVsbF9yZXNldHRhYmxlIGNsYXNzIGluc3RhbmNldHlwZSAnICtcbiAgICAgICdOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSIE5TX1VOQVZBSUxBQkxFIE5TX1JFUVVJUkVTX1NVUEVSICcgK1xuICAgICAgJ05TX1JFVFVSTlNfSU5ORVJfUE9JTlRFUiBOU19JTkxJTkUgTlNfQVZBSUxBQkxFIE5TX0RFUFJFQ0FURUQgJyArXG4gICAgICAnTlNfRU5VTSBOU19PUFRJT05TIE5TX1NXSUZUX1VOQVZBSUxBQkxFICcgK1xuICAgICAgJ05TX0FTU1VNRV9OT05OVUxMX0JFR0lOIE5TX0FTU1VNRV9OT05OVUxMX0VORCAnICtcbiAgICAgICdOU19SRUZJTkVEX0ZPUl9TV0lGVCBOU19TV0lGVF9OQU1FIE5TX1NXSUZUX05PVEhST1cgJyArXG4gICAgICAnTlNfRFVSSU5HIE5TX0hBTkRMRVIgTlNfRU5ESEFORExFUiBOU19WQUxVRVJFVFVSTiBOU19WT0lEUkVUVVJOJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ2ZhbHNlIHRydWUgRkFMU0UgVFJVRSBuaWwgWUVTIE5PIE5VTEwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0JPT0wgZGlzcGF0Y2hfb25jZV90IGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hfc3luYyBkaXNwYXRjaF9hc3luYyBkaXNwYXRjaF9vbmNlJ1xuICB9O1xuICB2YXIgTEVYRU1FUyA9IC9bYS16QS1aQF1bYS16QS1aMC05X10qLztcbiAgdmFyIENMQVNTX0tFWVdPUkRTID0gJ0BpbnRlcmZhY2UgQGNsYXNzIEBwcm90b2NvbCBAaW1wbGVtZW50YXRpb24nO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbW0nLCAnb2JqYycsICdvYmotYyddLFxuICAgIGtleXdvcmRzOiBPQkpDX0tFWVdPUkRTLFxuICAgIGxleGVtZXM6IExFWEVNRVMsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgQVBJX0NMQVNTLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdAXCInLCBlbmQ6ICdcIicsXG4gICAgICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1teXFxcXFxcXFxdXFwnJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdbXlxcXFxcXFxcXVteXFwnXSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICB7IGJlZ2luOiAnXFxcIicsIGVuZDogJ1xcXCInIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46ICc8JywgZW5kOiAnPicgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbjogJygnICsgQ0xBU1NfS0VZV09SRFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKVxcXFxiJywgZW5kOiAnKHt8JCknLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogQ0xBU1NfS0VZV09SRFMsIGxleGVtZXM6IExFWEVNRVMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLicraGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvKiBtaXNzaW5nIHN1cHBvcnQgZm9yIGhlcmVkb2MtbGlrZSBzdHJpbmcgKE9DYW1sIDQuMC4yKykgKi9cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21sJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhbmQgYXMgYXNzZXJ0IGFzciBiZWdpbiBjbGFzcyBjb25zdHJhaW50IGRvIGRvbmUgZG93bnRvIGVsc2UgZW5kICcgK1xuICAgICAgICAnZXhjZXB0aW9uIGV4dGVybmFsIGZvciBmdW4gZnVuY3Rpb24gZnVuY3RvciBpZiBpbiBpbmNsdWRlICcgK1xuICAgICAgICAnaW5oZXJpdCEgaW5oZXJpdCBpbml0aWFsaXplciBsYW5kIGxhenkgbGV0IGxvciBsc2wgbHNyIGx4b3IgbWF0Y2ggbWV0aG9kIXwxMCBtZXRob2QgJyArXG4gICAgICAgICdtb2QgbW9kdWxlIG11dGFibGUgbmV3IG9iamVjdCBvZiBvcGVuISBvcGVuIG9yIHByaXZhdGUgcmVjIHNpZyBzdHJ1Y3QgJyArXG4gICAgICAgICd0aGVuIHRvIHRyeSB0eXBlIHZhbCEgdmFsIHZpcnR1YWwgd2hlbiB3aGlsZSB3aXRoICcgK1xuICAgICAgICAvKiBjYW1scDQgKi9cbiAgICAgICAgJ3BhcnNlciB2YWx1ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLyogYnVpbHQtaW4gdHlwZXMgKi9cbiAgICAgICAgJ2FycmF5IGJvb2wgYnl0ZXMgY2hhciBleG58NSBmbG9hdCBpbnQgaW50MzIgaW50NjQgbGlzdCBsYXp5X3R8NSBuYXRpdmVpbnR8NSBzdHJpbmcgdW5pdCAnICtcbiAgICAgICAgLyogKHNvbWUpIHR5cGVzIGluIFBlcnZhc2l2ZXMgKi9cbiAgICAgICAgJ2luX2NoYW5uZWwgb3V0X2NoYW5uZWwgcmVmJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogL1xcL1xcL3w+Pi8sXG4gICAgbGV4ZW1lczogJ1thLXpfXVxcXFx3KiE/JyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46ICdcXFxcWyhcXFxcfFxcXFx8KT9cXFxcXXxcXFxcKFxcXFwpJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnXFxcXChcXFxcKicsXG4gICAgICAgICdcXFxcKlxcXFwpJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgeyAvKiB0eXBlIHZhcmlhYmxlICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFwnW0EtWmEtel9dKD8hXFwnKVtcXFxcd1xcJ10qJ1xuICAgICAgICAvKiB0aGUgZ3JhbW1hciBpcyBhbWJpZ3VvdXMgb24gaG93ICdhJ2Igc2hvdWxkIGJlIGludGVycHJldGVkIGJ1dCBub3QgdGhlIGNvbXBpbGVyICovXG4gICAgICB9LFxuICAgICAgeyAvKiBwb2x5bW9ycGhpYyB2YXJpYW50ICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJ2BbQS1aXVtcXFxcd1xcJ10qJ1xuICAgICAgfSxcbiAgICAgIHsgLyogbW9kdWxlIG9yIGNvbnN0cnVjdG9yICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHdcXCddKicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLyogZG9uJ3QgY29sb3IgaWRlbnRpZmllcnMsIGJ1dCBzYWZlbHkgY2F0Y2ggYWxsIGlkZW50aWZpZXJzIHdpdGggJyovXG4gICAgICAgIGJlZ2luOiAnW2Etel9dXFxcXHcqXFwnW1xcXFx3XFwnXSonLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnc3RyaW5nJywgcmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgJ1xcXFxiKDBbeFhdW2EtZkEtRjAtOV9dK1tMbG5dP3wnICtcbiAgICAgICAgICAnMFtvT11bMC03X10rW0xsbl0/fCcgK1xuICAgICAgICAgICcwW2JCXVswMV9dK1tMbG5dP3wnICtcbiAgICAgICAgICAnWzAtOV1bMC05X10qKFtMbG5dfChcXFxcLlswLTlfXSopPyhbZUVdWy0rXT9bMC05X10rKT8pPyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvWy09XT4vIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9XG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXHR2YXIgU1BFQ0lBTF9WQVJTID0ge1xuXHRcdGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuXHRcdGJlZ2luOiAnXFxcXCQoZlthc25dfHR8dnBbcnRkXXxjaGlsZHJlbiknXG5cdH0sXG5cdExJVEVSQUxTID0ge1xuXHRcdGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuXHRcdGJlZ2luOiAnZmFsc2V8dHJ1ZXxQSXx1bmRlZidcblx0fSxcblx0TlVNQkVSUyA9IHtcblx0XHRjbGFzc05hbWU6ICdudW1iZXInLFxuXHRcdGJlZ2luOiAnXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCspPyhlLT9cXFxcZCspPycsIC8vYWRkcyAxZTUsIDFlLTEwXG5cdFx0cmVsZXZhbmNlOiAwXG5cdH0sXG5cdFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLHtpbGxlZ2FsOiBudWxsfSksXG5cdFBSRVBSTyA9IHtcblx0XHRjbGFzc05hbWU6ICdtZXRhJyxcblx0XHRrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaW5jbHVkZSB1c2UnfSxcblx0XHRiZWdpbjogJ2luY2x1ZGV8dXNlIDwnLFxuXHRcdGVuZDogJz4nXG5cdH0sXG5cdFBBUkFNUyA9IHtcblx0XHRjbGFzc05hbWU6ICdwYXJhbXMnLFxuXHRcdGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG5cdFx0Y29udGFpbnM6IFsnc2VsZicsIE5VTUJFUlMsIFNUUklORywgU1BFQ0lBTF9WQVJTLCBMSVRFUkFMU11cblx0fSxcblx0TU9ESUZJRVJTID0ge1xuXHRcdGJlZ2luOiAnWyohIyVdJyxcblx0XHRyZWxldmFuY2U6IDBcblx0fSxcblx0RlVOQ1RJT05TID0ge1xuXHRcdGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcblx0XHRiZWdpbktleXdvcmRzOiAnbW9kdWxlIGZ1bmN0aW9uJyxcblx0XHRlbmQ6ICdcXFxcPXxcXFxceycsXG5cdFx0Y29udGFpbnM6IFtQQVJBTVMsIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuXHR9O1xuXG5cdHJldHVybiB7XG5cdFx0YWxpYXNlczogWydzY2FkJ10sXG5cdFx0a2V5d29yZHM6IHtcblx0XHRcdGtleXdvcmQ6ICdmdW5jdGlvbiBtb2R1bGUgaW5jbHVkZSB1c2UgZm9yIGludGVyc2VjdGlvbl9mb3IgaWYgZWxzZSBcXFxcJScsXG5cdFx0XHRsaXRlcmFsOiAnZmFsc2UgdHJ1ZSBQSSB1bmRlZicsXG5cdFx0XHRidWlsdF9pbjogJ2NpcmNsZSBzcXVhcmUgcG9seWdvbiB0ZXh0IHNwaGVyZSBjdWJlIGN5bGluZGVyIHBvbHloZWRyb24gdHJhbnNsYXRlIHJvdGF0ZSBzY2FsZSByZXNpemUgbWlycm9yIG11bHRtYXRyaXggY29sb3Igb2Zmc2V0IGh1bGwgbWlua293c2tpIHVuaW9uIGRpZmZlcmVuY2UgaW50ZXJzZWN0aW9uIGFicyBzaWduIHNpbiBjb3MgdGFuIGFjb3MgYXNpbiBhdGFuIGF0YW4yIGZsb29yIHJvdW5kIGNlaWwgbG4gbG9nIHBvdyBzcXJ0IGV4cCByYW5kcyBtaW4gbWF4IGNvbmNhdCBsb29rdXAgc3RyIGNociBzZWFyY2ggdmVyc2lvbiB2ZXJzaW9uX251bSBub3JtIGNyb3NzIHBhcmVudF9tb2R1bGUgZWNobyBpbXBvcnQgaW1wb3J0X2R4ZiBkeGZfbGluZWFyX2V4dHJ1ZGUgbGluZWFyX2V4dHJ1ZGUgcm90YXRlX2V4dHJ1ZGUgc3VyZmFjZSBwcm9qZWN0aW9uIHJlbmRlciBjaGlsZHJlbiBkeGZfY3Jvc3MgZHhmX2RpbSBsZXQgYXNzaWduJ1xuXHRcdH0sXG5cdFx0Y29udGFpbnM6IFtcblx0XHRcdGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcblx0XHRcdGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG5cdFx0XHROVU1CRVJTLFxuXHRcdFx0UFJFUFJPLFxuXHRcdFx0U1RSSU5HLFxuXHRcdFx0U1BFQ0lBTF9WQVJTLFxuXHRcdFx0TU9ESUZJRVJTLFxuXHRcdFx0RlVOQ1RJT05TXG5cdFx0XVxuXHR9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgT1hZR0VORV9LRVlXT1JEUyA9ICdhYnN0cmFjdCBhZGQgYW5kIGFycmF5IGFzIGFzYyBhc3BlY3QgYXNzZW1ibHkgYXN5bmMgYmVnaW4gYnJlYWsgYmxvY2sgYnkgY2FzZSBjbGFzcyBjb25jYXQgY29uc3QgY29weSBjb25zdHJ1Y3RvciBjb250aW51ZSAnK1xuICAgICdjcmVhdGUgZGVmYXVsdCBkZWxlZ2F0ZSBkZXNjIGRpc3RpbmN0IGRpdiBkbyBkb3dudG8gZHluYW1pYyBlYWNoIGVsc2UgZW1wdHkgZW5kIGVuc3VyZSBlbnVtIGVxdWFscyBldmVudCBleGNlcHQgZXhpdCBleHRlbnNpb24gZXh0ZXJuYWwgZmFsc2UgJytcbiAgICAnZmluYWwgZmluYWxpemUgZmluYWxpemVyIGZpbmFsbHkgZmxhZ3MgZm9yIGZvcndhcmQgZnJvbSBmdW5jdGlvbiBmdXR1cmUgZ2xvYmFsIGdyb3VwIGhhcyBpZiBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRzIGltcGxpZXMgaW4gaW5kZXggaW5oZXJpdGVkICcrXG4gICAgJ2lubGluZSBpbnRlcmZhY2UgaW50byBpbnZhcmlhbnRzIGlzIGl0ZXJhdG9yIGpvaW4gbG9ja2VkIGxvY2tpbmcgbG9vcCBtYXRjaGluZyBtZXRob2QgbW9kIG1vZHVsZSBuYW1lc3BhY2UgbmVzdGVkIG5ldyBuaWwgbm90IG5vdGlmeSBudWxsYWJsZSBvZiAnK1xuICAgICdvbGQgb24gb3BlcmF0b3Igb3Igb3JkZXIgb3V0IG92ZXJyaWRlIHBhcmFsbGVsIHBhcmFtcyBwYXJ0aWFsIHBpbm5lZCBwcml2YXRlIHByb2NlZHVyZSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVibGljIHF1ZXJ5YWJsZSByYWlzZSByZWFkIHJlYWRvbmx5ICcrXG4gICAgJ3JlY29yZCByZWludHJvZHVjZSByZW1vdmUgcmVwZWF0IHJlcXVpcmUgcmVzdWx0IHJldmVyc2Ugc2VhbGVkIHNlbGVjdCBzZWxmIHNlcXVlbmNlIHNldCBzaGwgc2hyIHNraXAgc3RhdGljIHN0ZXAgc29mdCB0YWtlIHRoZW4gdG8gdHJ1ZSB0cnkgdHVwbGUgJytcbiAgICAndHlwZSB1bmlvbiB1bml0IHVuc2FmZSB1bnRpbCB1c2VzIHVzaW5nIHZhciB2aXJ0dWFsIHJhaXNlcyB2b2xhdGlsZSB3aGVyZSB3aGlsZSB3aXRoIHdyaXRlIHhvciB5aWVsZCBhd2FpdCBtYXBwZWQgZGVwcmVjYXRlZCBzdGRjYWxsIGNkZWNsIHBhc2NhbCAnK1xuICAgICdyZWdpc3RlciBzYWZlY2FsbCBvdmVybG9hZCBsaWJyYXJ5IHBsYXRmb3JtIHJlZmVyZW5jZSBwYWNrZWQgc3RyaWN0IHB1Ymxpc2hlZCBhdXRvcmVsZWFzZXBvb2wgc2VsZWN0b3Igc3Ryb25nIHdlYWsgdW5yZXRhaW5lZCc7XG4gIHZhciBDVVJMWV9DT01NRU5UID0gIGhsanMuQ09NTUVOVChcbiAgICAneycsXG4gICAgJ30nLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIFBBUkVOX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJ1xcXFwoXFxcXConLFxuICAgICdcXFxcKlxcXFwpJyxcbiAgICB7XG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfVxuICApO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJ31dXG4gIH07XG4gIHZhciBDSEFSX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCBiZWdpbjogJygjXFxcXGQrKSsnXG4gIH07XG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIGNvbnN0cnVjdG9yIGRlc3RydWN0b3IgcHJvY2VkdXJlIG1ldGhvZCcsIGVuZDogJ1s6O10nLFxuICAgIGtleXdvcmRzOiAnZnVuY3Rpb24gY29uc3RydWN0b3J8MTAgZGVzdHJ1Y3RvcnwxMCBwcm9jZWR1cmV8MTAgbWV0aG9kfDEwJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICBrZXl3b3JkczogT1hZR0VORV9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtTVFJJTkcsIENIQVJfU1RSSU5HXVxuICAgICAgfSxcbiAgICAgIENVUkxZX0NPTU1FTlQsIFBBUkVOX0NPTU1FTlRcbiAgICBdXG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiAvXFwuP1xcdysvLFxuICAgIGtleXdvcmRzOiBPWFlHRU5FX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICcoXCJ8XFxcXCRbRy1aZy16XXxcXFxcL1xcXFwqfDwvfD0+fC0+KScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIENVUkxZX0NPTU1FTlQsIFBBUkVOX0NPTU1FTlQsIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIFNUUklORywgQ0hBUl9TVFJJTkcsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgRlVOQ1RJT04sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICc9XFxcXGJjbGFzc1xcXFxiJywgZW5kOiAnZW5kOycsXG4gICAgICAgIGtleXdvcmRzOiBPWFlHRU5FX0tFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFNUUklORywgQ0hBUl9TVFJJTkcsXG4gICAgICAgICAgQ1VSTFlfQ09NTUVOVCwgUEFSRU5fQ09NTUVOVCwgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIEZVTkNUSU9OXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ1VSTFlfU1VCQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAneycsXG4gICAgJ30nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgIH1cbiAgKTtcbiAgcmV0dXJuIHtcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdeIycsICckJyksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdcXFxcXnJlbXsnLFxuICAgICAgICAnfScsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBDVVJMWV9TVUJDT01NRU5UXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeQCg/OkJBU0V8VVNFfENMQVNTfE9QVElPTlMpJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdAW1xcXFx3XFxcXC1dK1xcXFxbW1xcXFx3XjtcXFxcLV0qXFxcXF0oPzpcXFxcW1tcXFxcd147XFxcXC1dKlxcXFxdKT8oPzouKikkJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFwkXFxcXHs/W1xcXFx3XFxcXC1cXFxcLlxcXFw6XStcXFxcfT8nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcXltcXFxcd1xcXFwtXFxcXC5cXFxcOl0rJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcXiNbMC05YS1mQS1GXSsnXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE1BQ1JPID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJFtcXHdcXGQjQF1bXFx3XFxkX10qL1xuICB9O1xuICB2YXIgVEFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvPCg/IVxcLykvLCBlbmQ6IC8+L1xuICB9O1xuICB2YXIgUVVPVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cIi8sIGVuZDogL1wiL1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwZi5jb25mJ10sXG4gICAgbGV4ZW1lczogL1thLXowLTlfPD4tXSsvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBidWlsdF9pbjogLyogYmxvY2sgbWF0Y2ggcGFzcyBhcmUgXCJhY3Rpb25zXCIgaW4gcGYuY29uZig1KSwgdGhlIHJlc3QgYXJlXG4gICAgICAgICAgICAgICAgICogbGV4aWNhbGx5IHNpbWlsYXIgdG9wLWxldmVsIGNvbW1hbmRzLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAnYmxvY2sgbWF0Y2ggcGFzcyBsb2FkIGFuY2hvcnw1IGFudGlzcG9vZnwxMCBzZXQgdGFibGUnLFxuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2luIG91dCBsb2cgcXVpY2sgb24gcmRvbWFpbiBpbmV0IGluZXQ2IHByb3RvIGZyb20gcG9ydCBvcyB0byByb3V0ZScgK1xuICAgICAgICAnYWxsb3ctb3B0cyBkaXZlcnQtcGFja2V0IGRpdmVydC1yZXBseSBkaXZlcnQtdG8gZmxhZ3MgZ3JvdXAgaWNtcC10eXBlJyArXG4gICAgICAgICdpY21wNi10eXBlIGxhYmVsIG9uY2UgcHJvYmFiaWxpdHkgcmVjaWV2ZWQtb24gcnRhYmxlIHByaW8gcXVldWUnICtcbiAgICAgICAgJ3RvcyB0YWcgdGFnZ2VkIHVzZXIga2VlcCBmcmFnbWVudCBmb3Igb3MgZHJvcCcgK1xuICAgICAgICAnYWYtdG98MTAgYmluYXQtdG98MTAgbmF0LXRvfDEwIHJkci10b3wxMCBiaXRtYXNrIGxlYXN0LXN0YXRzIHJhbmRvbSByb3VuZC1yb2JpbicgK1xuICAgICAgICAnc291cmNlLWhhc2ggc3RhdGljLXBvcnQnICtcbiAgICAgICAgJ2R1cC10byByZXBseS10byByb3V0ZS10bycgK1xuICAgICAgICAncGFyZW50IGJhbmR3aWR0aCBkZWZhdWx0IG1pbiBtYXggcWxpbWl0JyArXG4gICAgICAgICdibG9jay1wb2xpY3kgZGVidWcgZmluZ2VycHJpbnRzIGhvc3RpZCBsaW1pdCBsb2dpbnRlcmZhY2Ugb3B0aW1pemF0aW9uJyArXG4gICAgICAgICdyZWFzc2VtYmxlIHJ1bGVzZXQtb3B0aW1pemF0aW9uIGJhc2ljIG5vbmUgcHJvZmlsZSBza2lwIHN0YXRlLWRlZmF1bHRzJyArXG4gICAgICAgICdzdGF0ZS1wb2xpY3kgdGltZW91dCcgK1xuICAgICAgICAnY29uc3QgY291bnRlcnMgcGVyc2lzdCcgK1xuICAgICAgICAnbm8gbW9kdWxhdGUgc3lucHJveHkgc3RhdGV8NSBmbG9hdGluZyBpZi1ib3VuZCBuby1zeW5jIHBmbG93fDEwIHNsb3BweScgK1xuICAgICAgICAnc291cmNlLXRyYWNrIGdsb2JhbCBydWxlIG1heC1zcmMtbm9kZXMgbWF4LXNyYy1zdGF0ZXMgbWF4LXNyYy1jb25uJyArXG4gICAgICAgICdtYXgtc3JjLWNvbm4tcmF0ZSBvdmVybG9hZCBmbHVzaCcgK1xuICAgICAgICAnc2NydWJ8NSBtYXgtbXNzIG1pbi10dGwgbm8tZGZ8MTAgcmFuZG9tLWlkJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdhbGwgYW55IG5vLXJvdXRlIHNlbGYgdXJwZi1mYWlsZWQgZWdyZXNzfDUgdW5rbm93bidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBNQUNSTyxcbiAgICAgIFRBQkxFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGJlZ2luOiAnXFxcXCQrW2EtekEtWl9cXHg3Zi1cXHhmZl1bYS16QS1aMC05X1xceDdmLVxceGZmXSonXG4gIH07XG4gIHZhciBQUkVQUk9DRVNTT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAvPFxcPyhwaHApP3xcXD8+L1xuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFBSRVBST0NFU1NPUl0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdiXCInLCBlbmQ6ICdcIidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYlxcJycsIGVuZDogJ1xcJydcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSlcbiAgICBdXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7dmFyaWFudHM6IFtobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgaGxqcy5DX05VTUJFUl9NT0RFXX07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwaHAzJywgJ3BocDQnLCAncGhwNScsICdwaHA2J10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhbmQgaW5jbHVkZV9vbmNlIGxpc3QgYWJzdHJhY3QgZ2xvYmFsIHByaXZhdGUgZWNobyBpbnRlcmZhY2UgYXMgc3RhdGljIGVuZHN3aXRjaCAnICtcbiAgICAgICdhcnJheSBudWxsIGlmIGVuZHdoaWxlIG9yIGNvbnN0IGZvciBlbmRmb3JlYWNoIHNlbGYgdmFyIHdoaWxlIGlzc2V0IHB1YmxpYyAnICtcbiAgICAgICdwcm90ZWN0ZWQgZXhpdCBmb3JlYWNoIHRocm93IGVsc2VpZiBpbmNsdWRlIF9fRklMRV9fIGVtcHR5IHJlcXVpcmVfb25jZSBkbyB4b3IgJyArXG4gICAgICAncmV0dXJuIHBhcmVudCBjbG9uZSB1c2UgX19DTEFTU19fIF9fTElORV9fIGVsc2UgYnJlYWsgcHJpbnQgZXZhbCBuZXcgJyArXG4gICAgICAnY2F0Y2ggX19NRVRIT0RfXyBjYXNlIGV4Y2VwdGlvbiBkZWZhdWx0IGRpZSByZXF1aXJlIF9fRlVOQ1RJT05fXyAnICtcbiAgICAgICdlbmRkZWNsYXJlIGZpbmFsIHRyeSBzd2l0Y2ggY29udGludWUgZW5kZm9yIGVuZGlmIGRlY2xhcmUgdW5zZXQgdHJ1ZSBmYWxzZSAnICtcbiAgICAgICd0cmFpdCBnb3RvIGluc3RhbmNlb2YgaW5zdGVhZG9mIF9fRElSX18gX19OQU1FU1BBQ0VfXyAnICtcbiAgICAgICd5aWVsZCBmaW5hbGx5JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnLy8nLCAnJCcsIHtjb250YWluczogW1BSRVBST0NFU1NPUl19KSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKicsXG4gICAgICAgICdcXFxcKi8nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ19faGFsdF9jb21waWxlci4rPzsnLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgIGtleXdvcmRzOiAnX19oYWx0X2NvbXBpbGVyJyxcbiAgICAgICAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC88PDxbJ1wiXT9cXHcrWydcIl0/JC8sIGVuZDogL15cXHcrOz8kLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge2JlZ2luOiAvXFwkXFx3Ky99LFxuICAgICAgICAgICAgICB7YmVnaW46IC9cXHtcXCQvLCBlbmQ6IC9cXH0vfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsIGJlZ2luOiAvXFwkdGhpc1xcYi9cbiAgICAgIH0sXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIHtcbiAgICAgICAgLy8gc3dhbGxvdyBjb21wb3NlZCBpZGVudGlmaWVycyB0byBhdm9pZCBwYXJzaW5nIHRoZW0gYXMga2V5d29yZHNcbiAgICAgICAgYmVnaW46IC8oOjp8LT4pK1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWjAtOV9cXHg3Zi1cXHhmZl0qL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9bO3tdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFwkfFxcXFxbfCUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsIGVuZDogJ3snLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvWzpcXChcXCRcIl0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25hbWVzcGFjZScsIGVuZDogJzsnLFxuICAgICAgICBpbGxlZ2FsOiAvW1xcLiddLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd1c2UnLCBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnPT4nIC8vIE5vIG1hcmt1cCwganVzdCBhIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9LFxuICAgICAgU1RSSU5HLFxuICAgICAgTlVNQkVSXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWN0b3IgYWRkcmVzc29mIGFuZCBhcyBiZSBicmVhayBjbGFzcyBjb21waWxlX2Vycm9yIGNvbXBpbGVfaW50cmluc2ljJyArXG4gICAgICAnY29uc3VtZSBjb250aW51ZSBkZWxlZ2F0ZSBkaWdlc3RvZiBkbyBlbHNlIGVsc2VpZiBlbWJlZCBlbmQgZXJyb3InICtcbiAgICAgICdmb3IgZnVuIGlmIGlmZGVmIGluIGludGVyZmFjZSBpcyBpc250IGxhbWJkYSBsZXQgbWF0Y2ggbmV3IG5vdCBvYmplY3QnICtcbiAgICAgICdvciBwcmltaXRpdmUgcmVjb3ZlciByZXBlYXQgcmV0dXJuIHN0cnVjdCB0aGVuIHRyYWl0IHRyeSB0eXBlIHVudGlsICcgK1xuICAgICAgJ3VzZSB2YXIgd2hlcmUgd2hpbGUgd2l0aCB4b3InLFxuICAgIG1ldGE6XG4gICAgICAnaXNvIHZhbCB0YWcgdHJuIGJveCByZWYnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndGhpcyBmYWxzZSB0cnVlJ1xuICB9O1xuXG4gIHZhciBUUklQTEVfUVVPVEVfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIHZhciBRVU9URV9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG5cbiAgdmFyIFNJTkdMRV9RVU9URV9DSEFSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBUWVBFX05BTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYl8/W0EtWl1bXFxcXHddKicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFBSSU1FRF9OQU1FID0ge1xuICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcJycsIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBDTEFTUyA9IHtcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGFjdG9yJywgZW5kOiAnJCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfVxuXG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ25ldyBmdW4nLCBlbmQ6ICc9PicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFRZUEVfTkFNRSxcbiAgICAgICAgICBQUklNRURfTkFNRSxcbiAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLzovLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtUWVBFX05BTUVdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIENMQVNTLFxuICAgICAgRlVOQ1RJT04sXG4gICAgICBUWVBFX05BTUUsXG4gICAgICBUUklQTEVfUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBRVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIFNJTkdMRV9RVU9URV9DSEFSX01PREUsXG4gICAgICBQUklNRURfTkFNRSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQkFDS1RJQ0tfRVNDQVBFID0ge1xuICAgIGJlZ2luOiAnYFtcXFxcc1xcXFxTXScsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRbXFx3XFxkXVtcXHdcXGRfOl0qL31cbiAgICBdXG4gIH07XG4gIHZhciBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgIGJlZ2luOiAvXFwkKG51bGx8dHJ1ZXxmYWxzZSlcXGIvXG4gIH07XG4gIHZhciBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogL1wiLywgZW5kOiAvXCIvIH0sXG4gICAgICB7IGJlZ2luOiAvQFwiLywgZW5kOiAvXlwiQC8gfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEJBQ0tUSUNLX0VTQ0FQRSxcbiAgICAgIFZBUixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xcJFtBLXpdLywgZW5kOiAvW15BLXpdL1xuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgdmFyIEFQT1NfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IC8nLywgZW5kOiAvJy8gfSxcbiAgICAgIHsgYmVnaW46IC9AJy8sIGVuZDogL14nQC8gfVxuICAgIF1cbiAgfTtcblxuICB2YXIgUFNfSEVMUFRBR1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgLyogbm8gcGFyYW1hdGVyIGhlbHAgdGFncyAqLyBcbiAgICAgIHsgYmVnaW46IC9cXC4oc3lub3BzaXN8ZGVzY3JpcHRpb258ZXhhbXBsZXxpbnB1dHN8b3V0cHV0c3xub3Rlc3xsaW5rfGNvbXBvbmVudHxyb2xlfGZ1bmN0aW9uYWxpdHkpLyB9LFxuICAgICAgLyogb25lIHBhcmFtZXRlciBoZWxwIHRhZ3MgKi9cbiAgICAgIHsgYmVnaW46IC9cXC4ocGFyYW1ldGVyfGZvcndhcmRoZWxwdGFyZ2V0bmFtZXxmb3J3YXJkaGVscGNhdGVnb3J5fHJlbW90ZWhlbHBydW5zcGFjZXxleHRlcm5hbGhlbHApXFxzK1xcUysvIH1cbiAgICBdXG4gIH07XG4gIHZhciBQU19DT01NRU5UID0gaGxqcy5pbmhlcml0KFxuICAgIGhsanMuQ09NTUVOVChudWxsLCBudWxsKSxcbiAgICB7XG4gICAgICB2YXJpYW50czogW1xuICAgICAgICAvKiBzaW5nbGUtbGluZSBjb21tZW50ICovXG4gICAgICAgIHsgYmVnaW46IC8jLywgZW5kOiAvJC8gfSxcbiAgICAgICAgLyogbXVsdGktbGluZSBjb21tZW50ICovXG4gICAgICAgIHsgYmVnaW46IC88Iy8sIGVuZDogLyM+LyB9XG4gICAgICBdLFxuICAgICAgY29udGFpbnM6IFtQU19IRUxQVEFHU11cbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3BzJ10sXG4gICAgbGV4ZW1lczogLy0/W0EtelxcLlxcLV0rLyxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnaWYgZWxzZSBmb3JlYWNoIHJldHVybiBmdW5jdGlvbiBkbyB3aGlsZSB1bnRpbCBlbHNlaWYgYmVnaW4gZm9yIHRyYXAgZGF0YSBkeW5hbWljcGFyYW0gZW5kIGJyZWFrIHRocm93IHBhcmFtIGNvbnRpbnVlIGZpbmFsbHkgaW4gc3dpdGNoIGV4aXQgZmlsdGVyIHRyeSBwcm9jZXNzIGNhdGNoJyxcbiAgICAgIGJ1aWx0X2luOiAnQWRkLUNvbXB1dGVyIEFkZC1Db250ZW50IEFkZC1IaXN0b3J5IEFkZC1Kb2JUcmlnZ2VyIEFkZC1NZW1iZXIgQWRkLVBTU25hcGluIEFkZC1UeXBlIENoZWNrcG9pbnQtQ29tcHV0ZXIgQ2xlYXItQ29udGVudCBDbGVhci1FdmVudExvZyBDbGVhci1IaXN0b3J5IENsZWFyLUhvc3QgQ2xlYXItSXRlbSBDbGVhci1JdGVtUHJvcGVydHkgQ2xlYXItVmFyaWFibGUgQ29tcGFyZS1PYmplY3QgQ29tcGxldGUtVHJhbnNhY3Rpb24gQ29ubmVjdC1QU1Nlc3Npb24gQ29ubmVjdC1XU01hbiBDb252ZXJ0LVBhdGggQ29udmVydEZyb20tQ3N2IENvbnZlcnRGcm9tLUpzb24gQ29udmVydEZyb20tU2VjdXJlU3RyaW5nIENvbnZlcnRGcm9tLVN0cmluZ0RhdGEgQ29udmVydFRvLUNzdiBDb252ZXJ0VG8tSHRtbCBDb252ZXJ0VG8tSnNvbiBDb252ZXJ0VG8tU2VjdXJlU3RyaW5nIENvbnZlcnRUby1YbWwgQ29weS1JdGVtIENvcHktSXRlbVByb3BlcnR5IERlYnVnLVByb2Nlc3MgRGlzYWJsZS1Db21wdXRlclJlc3RvcmUgRGlzYWJsZS1Kb2JUcmlnZ2VyIERpc2FibGUtUFNCcmVha3BvaW50IERpc2FibGUtUFNSZW1vdGluZyBEaXNhYmxlLVBTU2Vzc2lvbkNvbmZpZ3VyYXRpb24gRGlzYWJsZS1XU01hbkNyZWRTU1AgRGlzY29ubmVjdC1QU1Nlc3Npb24gRGlzY29ubmVjdC1XU01hbiBEaXNhYmxlLVNjaGVkdWxlZEpvYiBFbmFibGUtQ29tcHV0ZXJSZXN0b3JlIEVuYWJsZS1Kb2JUcmlnZ2VyIEVuYWJsZS1QU0JyZWFrcG9pbnQgRW5hYmxlLVBTUmVtb3RpbmcgRW5hYmxlLVBTU2Vzc2lvbkNvbmZpZ3VyYXRpb24gRW5hYmxlLVNjaGVkdWxlZEpvYiBFbmFibGUtV1NNYW5DcmVkU1NQIEVudGVyLVBTU2Vzc2lvbiBFeGl0LVBTU2Vzc2lvbiBFeHBvcnQtQWxpYXMgRXhwb3J0LUNsaXhtbCBFeHBvcnQtQ29uc29sZSBFeHBvcnQtQ291bnRlciBFeHBvcnQtQ3N2IEV4cG9ydC1Gb3JtYXREYXRhIEV4cG9ydC1Nb2R1bGVNZW1iZXIgRXhwb3J0LVBTU2Vzc2lvbiBGb3JFYWNoLU9iamVjdCBGb3JtYXQtQ3VzdG9tIEZvcm1hdC1MaXN0IEZvcm1hdC1UYWJsZSBGb3JtYXQtV2lkZSBHZXQtQWNsIEdldC1BbGlhcyBHZXQtQXV0aGVudGljb2RlU2lnbmF0dXJlIEdldC1DaGlsZEl0ZW0gR2V0LUNvbW1hbmQgR2V0LUNvbXB1dGVyUmVzdG9yZVBvaW50IEdldC1Db250ZW50IEdldC1Db250cm9sUGFuZWxJdGVtIEdldC1Db3VudGVyIEdldC1DcmVkZW50aWFsIEdldC1DdWx0dXJlIEdldC1EYXRlIEdldC1FdmVudCBHZXQtRXZlbnRMb2cgR2V0LUV2ZW50U3Vic2NyaWJlciBHZXQtRXhlY3V0aW9uUG9saWN5IEdldC1Gb3JtYXREYXRhIEdldC1Ib3N0IEdldC1Ib3RGaXggR2V0LUhlbHAgR2V0LUhpc3RvcnkgR2V0LUlzZVNuaXBwZXQgR2V0LUl0ZW0gR2V0LUl0ZW1Qcm9wZXJ0eSBHZXQtSm9iIEdldC1Kb2JUcmlnZ2VyIEdldC1Mb2NhdGlvbiBHZXQtTWVtYmVyIEdldC1Nb2R1bGUgR2V0LVBmeENlcnRpZmljYXRlIEdldC1Qcm9jZXNzIEdldC1QU0JyZWFrcG9pbnQgR2V0LVBTQ2FsbFN0YWNrIEdldC1QU0RyaXZlIEdldC1QU1Byb3ZpZGVyIEdldC1QU1Nlc3Npb24gR2V0LVBTU2Vzc2lvbkNvbmZpZ3VyYXRpb24gR2V0LVBTU25hcGluIEdldC1SYW5kb20gR2V0LVNjaGVkdWxlZEpvYiBHZXQtU2NoZWR1bGVkSm9iT3B0aW9uIEdldC1TZXJ2aWNlIEdldC1UcmFjZVNvdXJjZSBHZXQtVHJhbnNhY3Rpb24gR2V0LVR5cGVEYXRhIEdldC1VSUN1bHR1cmUgR2V0LVVuaXF1ZSBHZXQtVmFyaWFibGUgR2V0LVZlcmIgR2V0LVdpbkV2ZW50IEdldC1XbWlPYmplY3QgR2V0LVdTTWFuQ3JlZFNTUCBHZXQtV1NNYW5JbnN0YW5jZSBHcm91cC1PYmplY3QgSW1wb3J0LUFsaWFzIEltcG9ydC1DbGl4bWwgSW1wb3J0LUNvdW50ZXIgSW1wb3J0LUNzdiBJbXBvcnQtSXNlU25pcHBldCBJbXBvcnQtTG9jYWxpemVkRGF0YSBJbXBvcnQtUFNTZXNzaW9uIEltcG9ydC1Nb2R1bGUgSW52b2tlLUFzV29ya2Zsb3cgSW52b2tlLUNvbW1hbmQgSW52b2tlLUV4cHJlc3Npb24gSW52b2tlLUhpc3RvcnkgSW52b2tlLUl0ZW0gSW52b2tlLVJlc3RNZXRob2QgSW52b2tlLVdlYlJlcXVlc3QgSW52b2tlLVdtaU1ldGhvZCBJbnZva2UtV1NNYW5BY3Rpb24gSm9pbi1QYXRoIExpbWl0LUV2ZW50TG9nIE1lYXN1cmUtQ29tbWFuZCBNZWFzdXJlLU9iamVjdCBNb3ZlLUl0ZW0gTW92ZS1JdGVtUHJvcGVydHkgTmV3LUFsaWFzIE5ldy1FdmVudCBOZXctRXZlbnRMb2cgTmV3LUlzZVNuaXBwZXQgTmV3LUl0ZW0gTmV3LUl0ZW1Qcm9wZXJ0eSBOZXctSm9iVHJpZ2dlciBOZXctT2JqZWN0IE5ldy1Nb2R1bGUgTmV3LU1vZHVsZU1hbmlmZXN0IE5ldy1QU0RyaXZlIE5ldy1QU1Nlc3Npb24gTmV3LVBTU2Vzc2lvbkNvbmZpZ3VyYXRpb25GaWxlIE5ldy1QU1Nlc3Npb25PcHRpb24gTmV3LVBTVHJhbnNwb3J0T3B0aW9uIE5ldy1QU1dvcmtmbG93RXhlY3V0aW9uT3B0aW9uIE5ldy1QU1dvcmtmbG93U2Vzc2lvbiBOZXctU2NoZWR1bGVkSm9iT3B0aW9uIE5ldy1TZXJ2aWNlIE5ldy1UaW1lU3BhbiBOZXctVmFyaWFibGUgTmV3LVdlYlNlcnZpY2VQcm94eSBOZXctV2luRXZlbnQgTmV3LVdTTWFuSW5zdGFuY2UgTmV3LVdTTWFuU2Vzc2lvbk9wdGlvbiBPdXQtRGVmYXVsdCBPdXQtRmlsZSBPdXQtR3JpZFZpZXcgT3V0LUhvc3QgT3V0LU51bGwgT3V0LVByaW50ZXIgT3V0LVN0cmluZyBQb3AtTG9jYXRpb24gUHVzaC1Mb2NhdGlvbiBSZWFkLUhvc3QgUmVjZWl2ZS1Kb2IgUmVnaXN0ZXItRW5naW5lRXZlbnQgUmVnaXN0ZXItT2JqZWN0RXZlbnQgUmVnaXN0ZXItUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBSZWdpc3Rlci1TY2hlZHVsZWRKb2IgUmVnaXN0ZXItV21pRXZlbnQgUmVtb3ZlLUNvbXB1dGVyIFJlbW92ZS1FdmVudCBSZW1vdmUtRXZlbnRMb2cgUmVtb3ZlLUl0ZW0gUmVtb3ZlLUl0ZW1Qcm9wZXJ0eSBSZW1vdmUtSm9iIFJlbW92ZS1Kb2JUcmlnZ2VyIFJlbW92ZS1Nb2R1bGUgUmVtb3ZlLVBTQnJlYWtwb2ludCBSZW1vdmUtUFNEcml2ZSBSZW1vdmUtUFNTZXNzaW9uIFJlbW92ZS1QU1NuYXBpbiBSZW1vdmUtVHlwZURhdGEgUmVtb3ZlLVZhcmlhYmxlIFJlbW92ZS1XbWlPYmplY3QgUmVtb3ZlLVdTTWFuSW5zdGFuY2UgUmVuYW1lLUNvbXB1dGVyIFJlbmFtZS1JdGVtIFJlbmFtZS1JdGVtUHJvcGVydHkgUmVzZXQtQ29tcHV0ZXJNYWNoaW5lUGFzc3dvcmQgUmVzb2x2ZS1QYXRoIFJlc3RhcnQtQ29tcHV0ZXIgUmVzdGFydC1TZXJ2aWNlIFJlc3RvcmUtQ29tcHV0ZXIgUmVzdW1lLUpvYiBSZXN1bWUtU2VydmljZSBTYXZlLUhlbHAgU2VsZWN0LU9iamVjdCBTZWxlY3QtU3RyaW5nIFNlbGVjdC1YbWwgU2VuZC1NYWlsTWVzc2FnZSBTZXQtQWNsIFNldC1BbGlhcyBTZXQtQXV0aGVudGljb2RlU2lnbmF0dXJlIFNldC1Db250ZW50IFNldC1EYXRlIFNldC1FeGVjdXRpb25Qb2xpY3kgU2V0LUl0ZW0gU2V0LUl0ZW1Qcm9wZXJ0eSBTZXQtSm9iVHJpZ2dlciBTZXQtTG9jYXRpb24gU2V0LVBTQnJlYWtwb2ludCBTZXQtUFNEZWJ1ZyBTZXQtUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBTZXQtU2NoZWR1bGVkSm9iIFNldC1TY2hlZHVsZWRKb2JPcHRpb24gU2V0LVNlcnZpY2UgU2V0LVN0cmljdE1vZGUgU2V0LVRyYWNlU291cmNlIFNldC1WYXJpYWJsZSBTZXQtV21pSW5zdGFuY2UgU2V0LVdTTWFuSW5zdGFuY2UgU2V0LVdTTWFuUXVpY2tDb25maWcgU2hvdy1Db21tYW5kIFNob3ctQ29udHJvbFBhbmVsSXRlbSBTaG93LUV2ZW50TG9nIFNvcnQtT2JqZWN0IFNwbGl0LVBhdGggU3RhcnQtSm9iIFN0YXJ0LVByb2Nlc3MgU3RhcnQtU2VydmljZSBTdGFydC1TbGVlcCBTdGFydC1UcmFuc2FjdGlvbiBTdGFydC1UcmFuc2NyaXB0IFN0b3AtQ29tcHV0ZXIgU3RvcC1Kb2IgU3RvcC1Qcm9jZXNzIFN0b3AtU2VydmljZSBTdG9wLVRyYW5zY3JpcHQgU3VzcGVuZC1Kb2IgU3VzcGVuZC1TZXJ2aWNlIFRlZS1PYmplY3QgVGVzdC1Db21wdXRlclNlY3VyZUNoYW5uZWwgVGVzdC1Db25uZWN0aW9uIFRlc3QtTW9kdWxlTWFuaWZlc3QgVGVzdC1QYXRoIFRlc3QtUFNTZXNzaW9uQ29uZmlndXJhdGlvbkZpbGUgVHJhY2UtQ29tbWFuZCBVbmJsb2NrLUZpbGUgVW5kby1UcmFuc2FjdGlvbiBVbnJlZ2lzdGVyLUV2ZW50IFVucmVnaXN0ZXItUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBVbnJlZ2lzdGVyLVNjaGVkdWxlZEpvYiBVcGRhdGUtRm9ybWF0RGF0YSBVcGRhdGUtSGVscCBVcGRhdGUtTGlzdCBVcGRhdGUtVHlwZURhdGEgVXNlLVRyYW5zYWN0aW9uIFdhaXQtRXZlbnQgV2FpdC1Kb2IgV2FpdC1Qcm9jZXNzIFdoZXJlLU9iamVjdCBXcml0ZS1EZWJ1ZyBXcml0ZS1FcnJvciBXcml0ZS1FdmVudExvZyBXcml0ZS1Ib3N0IFdyaXRlLU91dHB1dCBXcml0ZS1Qcm9ncmVzcyBXcml0ZS1WZXJib3NlIFdyaXRlLVdhcm5pbmcgQWRkLU1EVFBlcnNpc3RlbnREcml2ZSBEaXNhYmxlLU1EVE1vbml0b3JTZXJ2aWNlIEVuYWJsZS1NRFRNb25pdG9yU2VydmljZSBHZXQtTURURGVwbG95bWVudFNoYXJlU3RhdGlzdGljcyBHZXQtTURUTW9uaXRvckRhdGEgR2V0LU1EVE9wZXJhdGluZ1N5c3RlbUNhdGFsb2cgR2V0LU1EVFBlcnNpc3RlbnREcml2ZSBJbXBvcnQtTURUQXBwbGljYXRpb24gSW1wb3J0LU1EVERyaXZlciBJbXBvcnQtTURUT3BlcmF0aW5nU3lzdGVtIEltcG9ydC1NRFRQYWNrYWdlIEltcG9ydC1NRFRUYXNrU2VxdWVuY2UgTmV3LU1EVERhdGFiYXNlIFJlbW92ZS1NRFRNb25pdG9yRGF0YSBSZW1vdmUtTURUUGVyc2lzdGVudERyaXZlIFJlc3RvcmUtTURUUGVyc2lzdGVudERyaXZlIFNldC1NRFRNb25pdG9yRGF0YSBUZXN0LU1EVERlcGxveW1lbnRTaGFyZSBUZXN0LU1EVE1vbml0b3JEYXRhIFVwZGF0ZS1NRFREYXRhYmFzZVNjaGVtYSBVcGRhdGUtTURURGVwbG95bWVudFNoYXJlIFVwZGF0ZS1NRFRMaW5rZWREUyBVcGRhdGUtTURUTWVkaWEgVXBkYXRlLU1EVE1lZGlhIEFkZC1WYW10UHJvZHVjdEtleSBFeHBvcnQtVmFtdERhdGEgRmluZC1WYW10TWFuYWdlZE1hY2hpbmUgR2V0LVZhbXRDb25maXJtYXRpb25JZCBHZXQtVmFtdFByb2R1Y3QgR2V0LVZhbXRQcm9kdWN0S2V5IEltcG9ydC1WYW10RGF0YSBJbml0aWFsaXplLVZhbXREYXRhIEluc3RhbGwtVmFtdENvbmZpcm1hdGlvbklkIEluc3RhbGwtVmFtdFByb2R1Y3RBY3RpdmF0aW9uIEluc3RhbGwtVmFtdFByb2R1Y3RLZXkgVXBkYXRlLVZhbXRQcm9kdWN0JyxcbiAgICAgIG5vbWFya3VwOiAnLW5lIC1lcSAtbHQgLWd0IC1nZSAtbGUgLW5vdCAtbGlrZSAtbm90bGlrZSAtbWF0Y2ggLW5vdG1hdGNoIC1jb250YWlucyAtbm90Y29udGFpbnMgLWluIC1ub3RpbiAtcmVwbGFjZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBCQUNLVElDS19FU0NBUEUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgUVVPVEVfU1RSSU5HLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBMSVRFUkFMLFxuICAgICAgVkFSLFxuICAgICAgUFNfQ09NTUVOVFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6ICdCdWZmZXJlZFJlYWRlciBQVmVjdG9yIFBGb250IFBJbWFnZSBQR3JhcGhpY3MgSGFzaE1hcCBib29sZWFuIGJ5dGUgY2hhciBjb2xvciAnICtcbiAgICAgICAgJ2RvdWJsZSBmbG9hdCBpbnQgbG9uZyBTdHJpbmcgQXJyYXkgRmxvYXREaWN0IEZsb2F0TGlzdCBJbnREaWN0IEludExpc3QgSlNPTkFycmF5IEpTT05PYmplY3QgJyArXG4gICAgICAgICdPYmplY3QgU3RyaW5nRGljdCBTdHJpbmdMaXN0IFRhYmxlIFRhYmxlUm93IFhNTCAnICtcbiAgICAgICAgLy8gSmF2YSBrZXl3b3Jkc1xuICAgICAgICAnZmFsc2Ugc3luY2hyb25pemVkIGludCBhYnN0cmFjdCBmbG9hdCBwcml2YXRlIGNoYXIgYm9vbGVhbiBzdGF0aWMgbnVsbCBpZiBjb25zdCAnICtcbiAgICAgICAgJ2ZvciB0cnVlIHdoaWxlIGxvbmcgdGhyb3cgc3RyaWN0ZnAgZmluYWxseSBwcm90ZWN0ZWQgaW1wb3J0IG5hdGl2ZSBmaW5hbCByZXR1cm4gdm9pZCAnICtcbiAgICAgICAgJ2VudW0gZWxzZSBicmVhayB0cmFuc2llbnQgbmV3IGNhdGNoIGluc3RhbmNlb2YgYnl0ZSBzdXBlciB2b2xhdGlsZSBjYXNlIGFzc2VydCBzaG9ydCAnICtcbiAgICAgICAgJ3BhY2thZ2UgZGVmYXVsdCBkb3VibGUgcHVibGljIHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0aHJvd3MgcHJvdGVjdGVkIHB1YmxpYyBwcml2YXRlJyxcbiAgICAgIGxpdGVyYWw6ICdQMkQgUDNEIEhBTEZfUEkgUEkgUVVBUlRFUl9QSSBUQVUgVFdPX1BJJyxcbiAgICAgIHRpdGxlOiAnc2V0dXAgZHJhdycsXG4gICAgICBidWlsdF9pbjogJ2Rpc3BsYXlIZWlnaHQgZGlzcGxheVdpZHRoIG1vdXNlWSBtb3VzZVggbW91c2VQcmVzc2VkIHBtb3VzZVggcG1vdXNlWSBrZXkgJyArXG4gICAgICAgICdrZXlDb2RlIHBpeGVscyBmb2N1c2VkIGZyYW1lQ291bnQgZnJhbWVSYXRlIGhlaWdodCB3aWR0aCAnICtcbiAgICAgICAgJ3NpemUgY3JlYXRlR3JhcGhpY3MgYmVnaW5EcmF3IGNyZWF0ZVNoYXBlIGxvYWRTaGFwZSBQU2hhcGUgYXJjIGVsbGlwc2UgbGluZSBwb2ludCAnICtcbiAgICAgICAgJ3F1YWQgcmVjdCB0cmlhbmdsZSBiZXppZXIgYmV6aWVyRGV0YWlsIGJlemllclBvaW50IGJlemllclRhbmdlbnQgY3VydmUgY3VydmVEZXRhaWwgY3VydmVQb2ludCAnICtcbiAgICAgICAgJ2N1cnZlVGFuZ2VudCBjdXJ2ZVRpZ2h0bmVzcyBzaGFwZSBzaGFwZU1vZGUgYmVnaW5Db250b3VyIGJlZ2luU2hhcGUgYmV6aWVyVmVydGV4IGN1cnZlVmVydGV4ICcgK1xuICAgICAgICAnZW5kQ29udG91ciBlbmRTaGFwZSBxdWFkcmF0aWNWZXJ0ZXggdmVydGV4IGVsbGlwc2VNb2RlIG5vU21vb3RoIHJlY3RNb2RlIHNtb290aCBzdHJva2VDYXAgJyArXG4gICAgICAgICdzdHJva2VKb2luIHN0cm9rZVdlaWdodCBtb3VzZUNsaWNrZWQgbW91c2VEcmFnZ2VkIG1vdXNlTW92ZWQgbW91c2VQcmVzc2VkIG1vdXNlUmVsZWFzZWQgJyArXG4gICAgICAgICdtb3VzZVdoZWVsIGtleVByZXNzZWQga2V5UHJlc3NlZGtleVJlbGVhc2VkIGtleVR5cGVkIHByaW50IHByaW50bG4gc2F2ZSBzYXZlRnJhbWUgZGF5IGhvdXIgJyArXG4gICAgICAgICdtaWxsaXMgbWludXRlIG1vbnRoIHNlY29uZCB5ZWFyIGJhY2tncm91bmQgY2xlYXIgY29sb3JNb2RlIGZpbGwgbm9GaWxsIG5vU3Ryb2tlIHN0cm9rZSBhbHBoYSAnICtcbiAgICAgICAgJ2JsdWUgYnJpZ2h0bmVzcyBjb2xvciBncmVlbiBodWUgbGVycENvbG9yIHJlZCBzYXR1cmF0aW9uIG1vZGVsWCBtb2RlbFkgbW9kZWxaIHNjcmVlblggc2NyZWVuWSAnICtcbiAgICAgICAgJ3NjcmVlblogYW1iaWVudCBlbWlzc2l2ZSBzaGluaW5lc3Mgc3BlY3VsYXIgYWRkIGNyZWF0ZUltYWdlIGJlZ2luQ2FtZXJhIGNhbWVyYSBlbmRDYW1lcmEgZnJ1c3R1bSAnICtcbiAgICAgICAgJ29ydGhvIHBlcnNwZWN0aXZlIHByaW50Q2FtZXJhIHByaW50UHJvamVjdGlvbiBjdXJzb3IgZnJhbWVSYXRlIG5vQ3Vyc29yIGV4aXQgbG9vcCBub0xvb3AgcG9wU3R5bGUgJyArXG4gICAgICAgICdwdXNoU3R5bGUgcmVkcmF3IGJpbmFyeSBib29sZWFuIGJ5dGUgY2hhciBmbG9hdCBoZXggaW50IHN0ciB1bmJpbmFyeSB1bmhleCBqb2luIG1hdGNoIG1hdGNoQWxsIG5mICcgK1xuICAgICAgICAnbmZjIG5mcCBuZnMgc3BsaXQgc3BsaXRUb2tlbnMgdHJpbSBhcHBlbmQgYXJyYXlDb3B5IGNvbmNhdCBleHBhbmQgcmV2ZXJzZSBzaG9ydGVuIHNvcnQgc3BsaWNlIHN1YnNldCAnICtcbiAgICAgICAgJ2JveCBzcGhlcmUgc3BoZXJlRGV0YWlsIGNyZWF0ZUlucHV0IGNyZWF0ZVJlYWRlciBsb2FkQnl0ZXMgbG9hZEpTT05BcnJheSBsb2FkSlNPTk9iamVjdCBsb2FkU3RyaW5ncyAnICtcbiAgICAgICAgJ2xvYWRUYWJsZSBsb2FkWE1MIG9wZW4gcGFyc2VYTUwgc2F2ZVRhYmxlIHNlbGVjdEZvbGRlciBzZWxlY3RJbnB1dCBiZWdpblJhdyBiZWdpblJlY29yZCBjcmVhdGVPdXRwdXQgJyArXG4gICAgICAgICdjcmVhdGVXcml0ZXIgZW5kUmF3IGVuZFJlY29yZCBQcmludFdyaXRlcnNhdmVCeXRlcyBzYXZlSlNPTkFycmF5IHNhdmVKU09OT2JqZWN0IHNhdmVTdHJlYW0gc2F2ZVN0cmluZ3MgJyArXG4gICAgICAgICdzYXZlWE1MIHNlbGVjdE91dHB1dCBwb3BNYXRyaXggcHJpbnRNYXRyaXggcHVzaE1hdHJpeCByZXNldE1hdHJpeCByb3RhdGUgcm90YXRlWCByb3RhdGVZIHJvdGF0ZVogc2NhbGUgJyArXG4gICAgICAgICdzaGVhclggc2hlYXJZIHRyYW5zbGF0ZSBhbWJpZW50TGlnaHQgZGlyZWN0aW9uYWxMaWdodCBsaWdodEZhbGxvZmYgbGlnaHRzIGxpZ2h0U3BlY3VsYXIgbm9MaWdodHMgbm9ybWFsICcgK1xuICAgICAgICAncG9pbnRMaWdodCBzcG90TGlnaHQgaW1hZ2UgaW1hZ2VNb2RlIGxvYWRJbWFnZSBub1RpbnQgcmVxdWVzdEltYWdlIHRpbnQgdGV4dHVyZSB0ZXh0dXJlTW9kZSB0ZXh0dXJlV3JhcCAnICtcbiAgICAgICAgJ2JsZW5kIGNvcHkgZmlsdGVyIGdldCBsb2FkUGl4ZWxzIHNldCB1cGRhdGVQaXhlbHMgYmxlbmRNb2RlIGxvYWRTaGFkZXIgUFNoYWRlcnJlc2V0U2hhZGVyIHNoYWRlciBjcmVhdGVGb250ICcgK1xuICAgICAgICAnbG9hZEZvbnQgdGV4dCB0ZXh0Rm9udCB0ZXh0QWxpZ24gdGV4dExlYWRpbmcgdGV4dE1vZGUgdGV4dFNpemUgdGV4dFdpZHRoIHRleHRBc2NlbnQgdGV4dERlc2NlbnQgYWJzIGNlaWwgJyArXG4gICAgICAgICdjb25zdHJhaW4gZGlzdCBleHAgZmxvb3IgbGVycCBsb2cgbWFnIG1hcCBtYXggbWluIG5vcm0gcG93IHJvdW5kIHNxIHNxcnQgYWNvcyBhc2luIGF0YW4gYXRhbjIgY29zIGRlZ3JlZXMgJyArXG4gICAgICAgICdyYWRpYW5zIHNpbiB0YW4gbm9pc2Ugbm9pc2VEZXRhaWwgbm9pc2VTZWVkIHJhbmRvbSByYW5kb21HYXVzc2lhbiByYW5kb21TZWVkJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1thLXpBLVpfXVtcXFxcZGEtekEtWl9dK1xcXFwuW1xcXFxkYS16QS1aX117MSwzfScsIGVuZDogJzonLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyhuY2FsbHN8dG90dGltZXxjdW10aW1lKScsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ25jYWxscyB0b3R0aW1lfDEwIGN1bXRpbWV8MTAgZmlsZW5hbWUnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ2Z1bmN0aW9uIGNhbGxzJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5DX05VTUJFUl9NT0RFXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSQnLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIEFUT00gPSB7XG5cbiAgICBiZWdpbjogL1thLXpdW0EtWmEtejAtOV9dKi8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFZBUiA9IHtcblxuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1tBLVpdW2EtekEtWjAtOV9dKi99LFxuICAgICAge2JlZ2luOiAvX1tBLVphLXowLTlfXSovfSxcbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBQQVJFTlRFRCA9IHtcblxuICAgIGJlZ2luOiAvXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBMSVNUID0ge1xuXG4gICAgYmVnaW46IC9cXFsvLFxuICAgIGVuZDogL1xcXS9cbiAgfTtcblxuICB2YXIgTElORV9DT01NRU5UID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgYmVnaW46IC8lLywgZW5kOiAvJC8sXG4gICAgY29udGFpbnM6IFtobGpzLlBIUkFTQUxfV09SRFNfTU9ERV1cbiAgfTtcblxuICB2YXIgQkFDS1RJQ0tfU1RSSU5HID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL2AvLCBlbmQ6IC9gLyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgfTtcblxuICB2YXIgQ0hBUl9DT0RFID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgLy8gMCdhIGV0Yy5cbiAgICBiZWdpbjogLzBcXCcoXFxcXFxcJ3wuKS9cbiAgfTtcblxuICB2YXIgU1BBQ0VfQ09ERSA9IHtcblxuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8wXFwnXFxcXHMvIC8vIDAnXFxzXG4gIH07XG5cbiAgdmFyIFBSRURfT1AgPSB7IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgYmVnaW46IC86LS9cbiAgfTtcblxuICB2YXIgaW5uZXIgPSBbXG5cbiAgICBBVE9NLFxuICAgIFZBUixcbiAgICBQQVJFTlRFRCxcbiAgICBQUkVEX09QLFxuICAgIExJU1QsXG4gICAgTElORV9DT01NRU5ULFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgQkFDS1RJQ0tfU1RSSU5HLFxuICAgIENIQVJfQ09ERSxcbiAgICBTUEFDRV9DT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICBdO1xuXG4gIFBBUkVOVEVELmNvbnRhaW5zID0gaW5uZXI7XG4gIExJU1QuY29udGFpbnMgPSBpbm5lcjtcblxuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBpbm5lci5jb25jYXQoW1xuICAgICAge2JlZ2luOiAvXFwuJC99IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6ICdwYWNrYWdlIGltcG9ydCBvcHRpb24gb3B0aW9uYWwgcmVxdWlyZWQgcmVwZWF0ZWQgZ3JvdXAnLFxuICAgICAgYnVpbHRfaW46ICdkb3VibGUgZmxvYXQgaW50MzIgaW50NjQgdWludDMyIHVpbnQ2NCBzaW50MzIgc2ludDY0ICcgK1xuICAgICAgICAnZml4ZWQzMiBmaXhlZDY0IHNmaXhlZDMyIHNmaXhlZDY0IGJvb2wgc3RyaW5nIGJ5dGVzJyxcbiAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdtZXNzYWdlIGVudW0gc2VydmljZScsIGVuZDogL1xcey8sXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICAgIHN0YXJ0czoge2VuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlfSAvLyBoYWNrOiBlYXRpbmcgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgdGl0bGVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdycGMnLFxuICAgICAgICBlbmQ6IC87LywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6ICdycGMgcmV0dXJucydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXlxccypbQS1aX10rLyxcbiAgICAgICAgZW5kOiAvXFxzKj0vLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgUFVQUEVUX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgLyogbGFuZ3VhZ2Uga2V5d29yZHMgKi9cbiAgICAgICdhbmQgY2FzZSBkZWZhdWx0IGVsc2UgZWxzaWYgZmFsc2UgaWYgaW4gaW1wb3J0IGVuaGVyaXRzIG5vZGUgb3IgdHJ1ZSB1bmRlZiB1bmxlc3MgbWFpbiBzZXR0aW5ncyAkc3RyaW5nICcsXG4gICAgbGl0ZXJhbDpcbiAgICAvKiBtZXRhcGFyYW1ldGVycyAqL1xuICAgICAgJ2FsaWFzIGF1ZGl0IGJlZm9yZSBsb2dsZXZlbCBub29wIHJlcXVpcmUgc3Vic2NyaWJlIHRhZyAnICtcbiAgICAvKiBub3JtYWwgYXR0cmlidXRlcyAqL1xuICAgICAgJ293bmVyIGVuc3VyZSBncm91cCBtb2RlIG5hbWV8MCBjaGFuZ2VzIGNvbnRleHQgZm9yY2UgaW5jbCBsZW5zIGxvYWRfcGF0aCBvbmx5aWYgcHJvdmlkZXIgcmV0dXJucyByb290IHNob3dfZGlmZiB0eXBlX2NoZWNrICcgK1xuICAgICAgJ2VuX2FkZHJlc3MgaXBfYWRkcmVzcyByZWFsbmFtZSBjb21tYW5kIGVudmlyb25tZW50IGhvdXIgbW9udXRlIG1vbnRoIG1vbnRoZGF5IHNwZWNpYWwgdGFyZ2V0IHdlZWtkYXkgJytcbiAgICAgICdjcmVhdGVzIGN3ZCBvZ291dHB1dCByZWZyZXNoIHJlZnJlc2hvbmx5IHRyaWVzIHRyeV9zbGVlcCB1bWFzayBiYWNrdXAgY2hlY2tzdW0gY29udGVudCBjdGltZSBmb3JjZSBpZ25vcmUgJyArXG4gICAgICAnbGlua3MgbXRpbWUgcHVyZ2UgcmVjdXJzZSByZWN1cnNlbGltaXQgcmVwbGFjZSBzZWxpbnV4X2lnbm9yZV9kZWZhdWx0cyBzZWxyYW5nZSBzZWxyb2xlIHNlbHR5cGUgc2VsdXNlciBzb3VyY2UgJyArXG4gICAgICAnc291aXJjZV9wZXJtaXNzaW9ucyBzb3VyY2VzZWxlY3QgdmFsaWRhdGVfY21kIHZhbGlkYXRlX3JlcGxhY2VtZW50IGFsbG93ZHVwZSBhdHRyaWJ1dGVfbWVtYmVyc2hpcCBhdXRoX21lbWJlcnNoaXAgZm9yY2Vsb2NhbCBnaWQgJytcbiAgICAgICdpYV9sb2FkX21vZHVsZSBtZW1iZXJzIHN5c3RlbSBob3N0X2FsaWFzZXMgaXAgYWxsb3dlZF90cnVua192bGFucyBkZXNjcmlwdGlvbiBkZXZpY2VfdXJsIGR1cGxleCBlbmNhcHN1bGF0aW9uIGV0aGVyY2hhbm5lbCAnICtcbiAgICAgICduYXRpdmVfdmxhbiBzcGVlZCBwcmluY2lwYWxzIGFsbG93X3Jvb3QgYXV0aF9jbGFzcyBhdXRoX3R5cGUgYXV0aGVudGljYXRlX3VzZXIga19vZl9uIG1lY2hhbmlzbXMgcnVsZSBzZXNzaW9uX293bmVyIHNoYXJlZCBvcHRpb25zICcgK1xuICAgICAgJ2RldmljZSBmc3R5cGUgZW5hYmxlIGhhc3Jlc3RhcnQgZGlyZWN0b3J5IHByZXNlbnQgYWJzZW50IGxpbmsgYXRib290IGJsb2NrZGV2aWNlIGRldmljZSBkdW1wIHBhc3MgcmVtb3VudHMgcG9sbGVyX3RhZyB1c2UgJyArXG4gICAgICAnbWVzc2FnZSB3aXRocGF0aCBhZG1pbmZpbGUgYWxsb3dfdmlydHVhbCBhbGxvd2Nkcm9tIGNhdGVnb3J5IGNvbmZpZ2ZpbGVzIGZsYXZvciBpbnN0YWxsX29wdGlvbnMgaW5zdGFuY2UgcGFja2FnZV9zZXR0aW5ncyBwbGF0Zm9ybSAnICtcbiAgICAgICdyZXNwb25zZWZpbGUgc3RhdHVzIHVuaW5zdGFsbF9vcHRpb25zIHZlbmRvciB1bmxlc3Nfc3lzdGVtX3VzZXIgdW5sZXNzX3VpZCBiaW5hcnkgY29udHJvbCBmbGFncyBoYXNzdGF0dXMgbWFuaWZlc3QgcGF0dGVybiByZXN0YXJ0IHJ1bm5pbmcgJyArXG4gICAgICAnc3RhcnQgc3RvcCBhbGxvd2R1cGUgYXV0aHMgZXhwaXJ5IGdpZCBncm91cHMgaG9tZSBpdGVyYXRpb25zIGtleV9tZW1iZXJzaGlwIGtleXMgbWFuYWdlaG9tZSBtZW1iZXJzaGlwIHBhc3N3b3JkIHBhc3N3b3JkX21heF9hZ2UgJyArXG4gICAgICAncGFzc3dvcmRfbWluX2FnZSBwcm9maWxlX21lbWJlcnNoaXAgcHJvZmlsZXMgcHJvamVjdCBwdXJnZV9zc2hfa2V5cyByb2xlX21lbWJlcnNoaXAgcm9sZXMgc2FsdCBzaGVsbCB1aWQgYmFzZXVybCBjb3N0IGRlc2NyIGVuYWJsZWQgJyArXG4gICAgICAnZW5hYmxlZ3JvdXBzIGV4Y2x1ZGUgZmFpbG92ZXJtZXRob2QgZ3BnY2hlY2sgZ3Bna2V5IGh0dHBfY2FjaGluZyBpbmNsdWRlIGluY2x1ZGVwa2dzIGtlZXBhbGl2ZSBtZXRhZGF0YV9leHBpcmUgbWV0YWxpbmsgbWlycm9ybGlzdCAnICtcbiAgICAgICdwcmlvcml0eSBwcm90ZWN0IHByb3h5IHByb3h5X3Bhc3N3b3JkIHByb3h5X3VzZXJuYW1lIHJlcG9fZ3BnY2hlY2sgczNfZW5hYmxlZCBza2lwX2lmX3VuYXZhaWxhYmxlIHNzbGNhY2VydCBzc2xjbGllbnRjZXJ0IHNzbGNsaWVudGtleSAnICtcbiAgICAgICdzc2x2ZXJpZnkgbW91bnRlZCcsXG4gICAgYnVpbHRfaW46XG4gICAgLyogY29yZSBmYWN0cyAqL1xuICAgICAgJ2FyY2hpdGVjdHVyZSBhdWdlYXN2ZXJzaW9uIGJsb2NrZGV2aWNlcyBib2FyZG1hbnVmYWN0dXJlciBib2FyZHByb2R1Y3RuYW1lIGJvYXJkc2VyaWFsbnVtYmVyIGNma2V5IGRoY3Bfc2VydmVycyAnICtcbiAgICAgICdkb21haW4gZWMyXyBlYzJfdXNlcmRhdGEgZmFjdGVydmVyc2lvbiBmaWxlc3lzdGVtcyBsZG9tIGZxZG4gZ2lkIGhhcmR3YXJlaXNhIGhhcmR3YXJlbW9kZWwgaG9zdG5hbWUgaWR8MCBpbnRlcmZhY2VzICcrXG4gICAgICAnaXBhZGRyZXNzIGlwYWRkcmVzc18gaXBhZGRyZXNzNiBpcGFkZHJlc3M2XyBpcGhvc3RudW1iZXIgaXNfdmlydHVhbCBrZXJuZWwga2VybmVsbWFqdmVyc2lvbiBrZXJuZWxyZWxlYXNlIGtlcm5lbHZlcnNpb24gJyArXG4gICAgICAna2VybmVscmVsZWFzZSBrZXJuZWx2ZXJzaW9uIGxzYmRpc3Rjb2RlbmFtZSBsc2JkaXN0ZGVzY3JpcHRpb24gbHNiZGlzdGlkIGxzYmRpc3RyZWxlYXNlIGxzYm1hamRpc3RyZWxlYXNlIGxzYm1pbm9yZGlzdHJlbGVhc2UgJyArXG4gICAgICAnbHNicmVsZWFzZSBtYWNhZGRyZXNzIG1hY2FkZHJlc3NfIG1hY29zeF9idWlsZHZlcnNpb24gbWFjb3N4X3Byb2R1Y3RuYW1lIG1hY29zeF9wcm9kdWN0dmVyc2lvbiBtYWNvc3hfcHJvZHVjdHZlcnNvbl9tYWpvciAnICtcbiAgICAgICdtYWNvc3hfcHJvZHVjdHZlcnNpb25fbWlub3IgbWFudWZhY3R1cmVyIG1lbW9yeWZyZWUgbWVtb3J5c2l6ZSBuZXRtYXNrIG1ldG1hc2tfIG5ldHdvcmtfIG9wZXJhdGluZ3N5c3RlbSBvcGVyYXRpbmdzeXN0ZW1tYWpyZWxlYXNlICcrXG4gICAgICAnb3BlcmF0aW5nc3lzdGVtcmVsZWFzZSBvc2ZhbWlseSBwYXJ0aXRpb25zIHBhdGggcGh5c2ljYWxwcm9jZXNzb3Jjb3VudCBwcm9jZXNzb3IgcHJvY2Vzc29yY291bnQgcHJvZHVjdG5hbWUgcHMgcHVwcGV0dmVyc2lvbiAnK1xuICAgICAgJ3J1YnlzaXRlZGlyIHJ1Ynl2ZXJzaW9uIHNlbGludXggc2VsaW51eF9jb25maWdfbW9kZSBzZWxpbnV4X2NvbmZpZ19wb2xpY3kgc2VsaW51eF9jdXJyZW50X21vZGUgc2VsaW51eF9jdXJyZW50X21vZGUgc2VsaW51eF9lbmZvcmNlZCAnK1xuICAgICAgJ3NlbGludXhfcG9saWN5dmVyc2lvbiBzZXJpYWxudW1iZXIgc3BfIHNzaGRzYWtleSBzc2hlY2RzYWtleSBzc2hyc2FrZXkgc3dhcGVuY3J5cHRlZCBzd2FwZnJlZSBzd2Fwc2l6ZSB0aW1lem9uZSB0eXBlIHVuaXF1ZWlkIHVwdGltZSAnK1xuICAgICAgJ3VwdGltZV9kYXlzIHVwdGltZV9ob3VycyB1cHRpbWVfc2Vjb25kcyB1dWlkIHZpcnR1YWwgdmxhbnMgeGVuZG9tYWlucyB6ZnNfdmVyc2lvbiB6b25lbmFlIHpvbmVzIHpwb29sX3ZlcnNpb24nXG4gIH07XG5cbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoJyMnLCAnJCcpO1xuXG4gIHZhciBJREVOVF9SRSA9ICcoW0EtWmEtel9dfDo6KShcXFxcd3w6OikqJztcblxuICB2YXIgVElUTEUgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IElERU5UX1JFfSk7XG5cbiAgdmFyIFZBUklBQkxFID0ge2NsYXNzTmFtZTogJ3ZhcmlhYmxlJywgYmVnaW46ICdcXFxcJCcgKyBJREVOVF9SRX07XG5cbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJJQUJMRV0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogLycvLCBlbmQ6IC8nL30sXG4gICAgICB7YmVnaW46IC9cIi8sIGVuZDogL1wiL31cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3BwJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIENPTU1FTlQsXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIFNUUklORyxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzJywgZW5kOiAnXFxcXHt8OycsXG4gICAgICAgIGlsbGVnYWw6IC89LyxcbiAgICAgICAgY29udGFpbnM6IFtUSVRMRSwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWZpbmUnLCBlbmQ6IC9cXHsvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlY3Rpb24nLCBiZWdpbjogaGxqcy5JREVOVF9SRSwgZW5kc1BhcmVudDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFxcXHMrXFxcXHsnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZW5kOiAvXFxTLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcey8sIGVuZDogL1xcfS8sXG4gICAgICAgICAgICBrZXl3b3JkczogUFVQUEVUX0tFWVdPUkRTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBDT01NRU5ULFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46J1thLXpBLVpfXStcXFxccyo9PicsXG4gICAgICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsIGVuZDogJz0+JyxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJyhcXFxcYjBbMC03X10rKXwoXFxcXGIweFswLTlhLWZBLUZfXSspfChcXFxcYlsxLTldWzAtOV9dKihcXFxcLlswLTlfXSspPyl8WzBfXVxcXFxiJyxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgVkFSSUFCTEVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IC8vIEJhc2UgZGVhZnVsdCBjb2xvcnMgaW4gUEIgSURFOiBiYWNrZ3JvdW5kOiAjRkZGRkRGOyBmb3JlZ3JvdW5kOiAjMDAwMDAwO1xuXG5mdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkdTID0geyAvLyBQQiBJREUgY29sb3I6ICMwMDgwRkYgKEF6dXJlIFJhZGlhbmNlKVxuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICcofik/XCInLCBlbmQ6ICdcIicsXG4gICAgaWxsZWdhbDogJ1xcXFxuJ1xuICB9O1xuICB2YXIgQ09OU1RBTlRTID0geyAvLyBQQiBJREUgY29sb3I6ICM5MjRCNzIgKENhbm5vbiBQaW5rKVxuICAgIC8vICBcIiNcIiArIGEgbGV0dGVyIG9yIHVuZGVyc2NvcmUgKyBsZXR0ZXJzLCBkaWdpdHMgb3IgdW5kZXJzY29yZXMgKyAob3B0aW9uYWwpIFwiJFwiXG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJyNbYS16QS1aX11cXFxcdypcXFxcJD8nXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3BiJywgJ3BiaSddLFxuICAgIGtleXdvcmRzOiAvLyBQQiBJREUgY29sb3I6ICMwMDY2NjYgKEJsdWUgU3RvbmUpICsgQm9sZFxuICAgICAgLy8gVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBsaXN0IHdhcyB0YWtlbiBhbmQgYWRhcHRlZCBmcm9tIEd1U2hIJ3MgUHVyZUJhc2ljIGxhbmd1YWdlIGZpbGUgZm9yIEdlU0hpLi4uXG4gICAgICAnQW5kIEFzIEJyZWFrIENhbGxEZWJ1Z2dlciBDYXNlIENvbXBpbGVyQ2FzZSBDb21waWxlckRlZmF1bHQgQ29tcGlsZXJFbHNlIENvbXBpbGVyRW5kSWYgQ29tcGlsZXJFbmRTZWxlY3QgJyArXG4gICAgICAnQ29tcGlsZXJFcnJvciBDb21waWxlcklmIENvbXBpbGVyU2VsZWN0IENvbnRpbnVlIERhdGEgRGF0YVNlY3Rpb24gRW5kRGF0YVNlY3Rpb24gRGVidWcgRGVidWdMZXZlbCAnICtcbiAgICAgICdEZWZhdWx0IERlZmluZSBEaW0gRGlzYWJsZUFTTSBEaXNhYmxlRGVidWdnZXIgRGlzYWJsZUV4cGxpY2l0IEVsc2UgRWxzZUlmIEVuYWJsZUFTTSAnICtcbiAgICAgICdFbmFibGVEZWJ1Z2dlciBFbmFibGVFeHBsaWNpdCBFbmQgRW5kRW51bWVyYXRpb24gRW5kSWYgRW5kSW1wb3J0IEVuZEludGVyZmFjZSBFbmRNYWNybyBFbmRQcm9jZWR1cmUgJyArXG4gICAgICAnRW5kU2VsZWN0IEVuZFN0cnVjdHVyZSBFbmRTdHJ1Y3R1cmVVbmlvbiBFbmRXaXRoIEVudW1lcmF0aW9uIEV4dGVuZHMgRmFrZVJldHVybiBGb3IgTmV4dCBGb3JFYWNoICcgK1xuICAgICAgJ0ZvckV2ZXIgR2xvYmFsIEdvc3ViIEdvdG8gSWYgSW1wb3J0IEltcG9ydEMgSW5jbHVkZUJpbmFyeSBJbmNsdWRlRmlsZSBJbmNsdWRlUGF0aCBJbnRlcmZhY2UgTWFjcm8gJyArXG4gICAgICAnTmV3TGlzdCBOb3QgT3IgUHJvY2VkdXJlUmV0dXJuIFByb3RlY3RlZCBQcm90b3R5cGUgJyArXG4gICAgICAnUHJvdG90eXBlQyBSZWFkIFJlRGltIFJlcGVhdCBVbnRpbCBSZXN0b3JlIFJldHVybiBTZWxlY3QgU2hhcmVkIFN0YXRpYyBTdGVwIFN0cnVjdHVyZSBTdHJ1Y3R1cmVVbmlvbiAnICtcbiAgICAgICdTd2FwIFRvIFdlbmQgV2hpbGUgV2l0aCBYSW5jbHVkZUZpbGUgWE9yICcgK1xuICAgICAgJ1Byb2NlZHVyZSBQcm9jZWR1cmVDIFByb2NlZHVyZUNETEwgUHJvY2VkdXJlRExMIERlY2xhcmUgRGVjbGFyZUMgRGVjbGFyZUNETEwgRGVjbGFyZURMTCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIC8vIENPTU1FTlRTIHwgUEIgSURFIGNvbG9yOiAjMDBBQUFBIChQZXJzaWFuIEdyZWVuKVxuICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG5cbiAgICAgIHsgLy8gUFJPQ0VEVVJFUyBERUZJTklUSU9OU1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoUHJvY2VkdXJlfERlY2xhcmUpKEN8Q0RMTHxETEwpP1xcXFxiJyxcbiAgICAgICAgZW5kOiAnXFxcXCgnLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IC8vIFBST0NFRFVSRSBLRVlXT1JEUyB8IFBCIElERSBjb2xvcjogIzAwNjY2NiAoQmx1ZSBTdG9uZSkgKyBCb2xkXG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFByb2NlZHVyZXxEZWNsYXJlKShDfENETEx8RExMKT8nLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyAvLyBQUk9DRURVUkUgUkVUVVJOIFRZUEUgU0VUVElORyB8IFBCIElERSBjb2xvcjogIzAwMDAwMCAoQmxhY2spXG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXC5cXFxcdyonXG4gICAgICAgICAgICAvLyBlbmQ6ICcgJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFIC8vIFBST0NFRFVSRSBOQU1FIHwgUEIgSURFIGNvbG9yOiAjMDA2NjY2IChCbHVlIFN0b25lKVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgU1RSSU5HUyxcbiAgICAgIENPTlNUQU5UU1xuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FuZCBlbGlmIGlzIGdsb2JhbCBhcyBpbiBpZiBmcm9tIHJhaXNlIGZvciBleGNlcHQgZmluYWxseSBwcmludCBpbXBvcnQgcGFzcyByZXR1cm4gJyArXG4gICAgICAnZXhlYyBlbHNlIGJyZWFrIG5vdCB3aXRoIGNsYXNzIGFzc2VydCB5aWVsZCB0cnkgd2hpbGUgY29udGludWUgZGVsIG9yIGRlZiBsYW1iZGEgJyArXG4gICAgICAnYXN5bmMgYXdhaXQgbm9ubG9jYWx8MTAgTm9uZSBUcnVlIEZhbHNlJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdFbGxpcHNpcyBOb3RJbXBsZW1lbnRlZCdcbiAgfTtcbiAgdmFyIFBST01QVCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJywgIGJlZ2luOiAvXig+Pj58XFwuXFwuXFwuKSAvXG4gIH07XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC9cXHsvLCBlbmQ6IC9cXH0vLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvIy9cbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/JycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgY29udGFpbnM6IFtQUk9NUFRdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/XCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgY29udGFpbnM6IFtQUk9NUFRdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhmcnxyZnxmKScnJy8sIGVuZDogLycnJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbUFJPTVBULCBTVUJTVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKGZyfHJmfGYpXCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgY29udGFpbnM6IFtQUk9NUFQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKScvLCBlbmQ6IC8nLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKVwiLywgZW5kOiAvXCIvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhifGJyKScvLCBlbmQ6IC8nL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oYnxicilcIi8sIGVuZDogL1wiL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZiknLywgZW5kOiAvJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbU1VCU1RdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhmcnxyZnxmKVwiLywgZW5kOiAvXCIvLFxuICAgICAgICBjb250YWluczogW1NVQlNUXVxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJywgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IGhsanMuQklOQVJZX05VTUJFUl9SRSArICdbbExqSl0/J30sXG4gICAgICB7YmVnaW46ICdcXFxcYigwb1swLTddKylbbExqSl0/J30sXG4gICAgICB7YmVnaW46IGhsanMuQ19OVU1CRVJfUkUgKyAnW2xMakpdPyd9XG4gICAgXVxuICB9O1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBQUk9NUFQsIE5VTUJFUiwgU1RSSU5HXVxuICB9O1xuICBTVUJTVC5jb250YWlucyA9IFtTVFJJTkcsIE5VTUJFUiwgUFJPTVBUXTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3B5JywgJ2d5cCddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvKDxcXC98LT58XFw/KXw9Pi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFBST01QVCxcbiAgICAgIE5VTUJFUixcbiAgICAgIFNUUklORyxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2NsYXNzTmFtZTogJ2Z1bmN0aW9uJywgYmVnaW5LZXl3b3JkczogJ2RlZid9LFxuICAgICAgICAgIHtjbGFzc05hbWU6ICdjbGFzcycsIGJlZ2luS2V5d29yZHM6ICdjbGFzcyd9XG4gICAgICAgIF0sXG4gICAgICAgIGVuZDogLzovLFxuICAgICAgICBpbGxlZ2FsOiAvWyR7PTtcXG4sXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAgUEFSQU1TLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvLT4vLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGtleXdvcmRzOiAnTm9uZSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL15bXFx0IF0qQC8sIGVuZDogLyQvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcYihwcmludHxleGVjKVxcKC8gLy8gZG9u4oCZdCBoaWdobGlnaHQga2V5d29yZHMtdHVybmVkLWZ1bmN0aW9ucyBpbiBQeXRob24gM1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBRX0tFWVdPUkRTID0ge1xuICBrZXl3b3JkOlxuICAgICdkbyB3aGlsZSBzZWxlY3QgZGVsZXRlIGJ5IHVwZGF0ZSBmcm9tJyxcbiAgbGl0ZXJhbDpcbiAgICAnMGIgMWInLFxuICBidWlsdF9pbjpcbiAgICAnbmVnIG5vdCBudWxsIHN0cmluZyByZWNpcHJvY2FsIGZsb29yIGNlaWxpbmcgc2lnbnVtIG1vZCB4YmFyIHhsb2cgYW5kIG9yIGVhY2ggc2NhbiBvdmVyIHByaW9yIG1tdSBsc3EgaW52IG1kNSBsdGltZSBndGltZSBjb3VudCBmaXJzdCB2YXIgZGV2IG1lZCBjb3YgY29yIGFsbCBhbnkgcmFuZCBzdW1zIHByZHMgbWlucyBtYXhzIGZpbGxzIGRlbHRhcyByYXRpb3MgYXZncyBkaWZmZXIgcHJldiBuZXh0IHJhbmsgcmV2ZXJzZSBpYXNjIGlkZXNjIGFzYyBkZXNjIG1zdW0gbWNvdW50IG1hdmcgbWRldiB4cmFuayBtbWluIG1tYXggeHByZXYgcm90YXRlIGRpc3RpbmN0IGdyb3VwIHdoZXJlIGZsaXAgdHlwZSBrZXkgdGlsIGdldCB2YWx1ZSBhdHRyIGN1dCBzZXQgdXBzZXJ0IHJhemUgdW5pb24gaW50ZXIgZXhjZXB0IGNyb3NzIHN2IHZzIHN1Ymxpc3QgZW5saXN0IHJlYWQwIHJlYWQxIGhvcGVuIGhjbG9zZSBoZGVsIGhzeW0gaGNvdW50IHBlYWNoIHN5c3RlbSBsdHJpbSBydHJpbSB0cmltIGxvd2VyIHVwcGVyIHNzciB2aWV3IHRhYmxlcyB2aWV3cyBjb2xzIHhjb2xzIGtleXMgeGtleSB4Y29sIHhhc2MgeGRlc2MgZmtleXMgbWV0YSBsaiBhaiBhajAgaWogcGogYXNvZiB1aiB3dyB3aiB3ajEgZmJ5IHhncm91cCB1bmdyb3VwIGVqIHNhdmUgbG9hZCByc2F2ZSBybG9hZCBzaG93IGNzdiBwYXJzZSBldmFsIG1pbiBtYXggYXZnIHdhdmcgd3N1bSBzaW4gY29zIHRhbiBzdW0nLFxuICB0eXBlOlxuICAgICdgZmxvYXQgYGRvdWJsZSBpbnQgYHRpbWVzdGFtcCBgdGltZXNwYW4gYGRhdGV0aW1lIGB0aW1lIGBib29sZWFuIGBzeW1ib2wgYGNoYXIgYGJ5dGUgYHNob3J0IGBsb25nIGByZWFsIGBtb250aCBgZGF0ZSBgbWludXRlIGBzZWNvbmQgYGd1aWQnXG4gIH07XG4gIHJldHVybiB7XG4gIGFsaWFzZXM6WydrJywgJ2tkYiddLFxuICBrZXl3b3JkczogUV9LRVlXT1JEUyxcbiAgbGV4ZW1lczogLyhgPylbQS1aYS16MC05X10rXFxiLyxcbiAgY29udGFpbnM6IFtcbiAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdpbiBvZiBvbiBpZiBmb3Igd2hpbGUgZmluYWxseSB2YXIgbmV3IGZ1bmN0aW9uIGRvIHJldHVybiB2b2lkIGVsc2UgYnJlYWsgY2F0Y2ggJyArXG4gICAgICAgICdpbnN0YW5jZW9mIHdpdGggdGhyb3cgY2FzZSBkZWZhdWx0IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlICcgK1xuICAgICAgICAnbGV0IHlpZWxkIGNvbnN0IGV4cG9ydCBzdXBlciBkZWJ1Z2dlciBhcyBhc3luYyBhd2FpdCBpbXBvcnQnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgTmFOIEluZmluaXR5JyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgJyArXG4gICAgICAgICdlbmNvZGVVUkkgZW5jb2RlVVJJQ29tcG9uZW50IGVzY2FwZSB1bmVzY2FwZSBPYmplY3QgRnVuY3Rpb24gQm9vbGVhbiBFcnJvciAnICtcbiAgICAgICAgJ0V2YWxFcnJvciBJbnRlcm5hbEVycm9yIFJhbmdlRXJyb3IgUmVmZXJlbmNlRXJyb3IgU3RvcEl0ZXJhdGlvbiBTeW50YXhFcnJvciAnICtcbiAgICAgICAgJ1R5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5ICcgK1xuICAgICAgICAnRmxvYXQ2NEFycmF5IEludDE2QXJyYXkgSW50MzJBcnJheSBJbnQ4QXJyYXkgVWludDE2QXJyYXkgVWludDMyQXJyYXkgJyArXG4gICAgICAgICdVaW50OEFycmF5IFVpbnQ4Q2xhbXBlZEFycmF5IEFycmF5QnVmZmVyIERhdGFWaWV3IEpTT04gSW50bCBhcmd1bWVudHMgcmVxdWlyZSAnICtcbiAgICAgICAgJ21vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBTeW1ib2wgU2V0IE1hcCBXZWFrU2V0IFdlYWtNYXAgUHJveHkgUmVmbGVjdCAnICtcbiAgICAgICAgJ0JlaGF2aW9yIGJvb2wgY29sb3IgY29vcmRpbmF0ZSBkYXRlIGRvdWJsZSBlbnVtZXJhdGlvbiBmb250IGdlb2NpcmNsZSBnZW9yZWN0YW5nbGUgJyArXG4gICAgICAgICdnZW9zaGFwZSBpbnQgbGlzdCBtYXRyaXg0eDQgcGFyZW50IHBvaW50IHF1YXRlcm5pb24gcmVhbCByZWN0ICcgK1xuICAgICAgICAnc2l6ZSBzdHJpbmcgdXJsIHZhcmlhbnQgdmVjdG9yMmQgdmVjdG9yM2QgdmVjdG9yNGQnICtcbiAgICAgICAgJ1Byb21pc2UnXG4gICAgfTtcblxuICB2YXIgUU1MX0lERU5UX1JFID0gJ1thLXpBLVpfXVthLXpBLVowLTlcXFxcLl9dKic7XG5cbiAgLy8gSXNvbGF0ZSBwcm9wZXJ0eSBzdGF0ZW1lbnRzLiBFbmRzIGF0IGEgOiwgPSwgOywgLCwgYSBjb21tZW50IG9yIGVuZCBvZiBsaW5lLlxuICAvLyBVc2UgcHJvcGVydHkgY2xhc3MuXG4gIHZhciBQUk9QRVJUWSA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgYmVnaW46ICdcXFxcYnByb3BlcnR5XFxcXGInLFxuICAgICAgc3RhcnRzOiB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGVuZDogJyg6fD18O3wsfC8vfC9cXFxcKnwkKScsXG4gICAgICAgIHJldHVybkVuZDogdHJ1ZVxuICAgICAgfVxuICB9O1xuXG4gIC8vIElzb2xhdGUgc2lnbmFsIHN0YXRlbWVudHMuIEVuZHMgYXQgYSApIGEgY29tbWVudCBvciBlbmQgb2YgbGluZS5cbiAgLy8gVXNlIHByb3BlcnR5IGNsYXNzLlxuICB2YXIgU0lHTkFMID0ge1xuICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICBiZWdpbjogJ1xcXFxic2lnbmFsXFxcXGInLFxuICAgICAgc3RhcnRzOiB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGVuZDogJyhcXFxcKHw6fD18O3wsfC8vfC9cXFxcKnwkKScsXG4gICAgICAgIHJldHVybkVuZDogdHJ1ZVxuICAgICAgfVxuICB9O1xuXG4gIC8vIGlkOiBpcyBzcGVjaWFsIGluIFFNTC4gV2hlbiB3ZSBzZWUgaWQ6IHdlIHdhbnQgdG8gbWFyayB0aGUgaWQ6IGFzIGF0dHJpYnV0ZSBhbmRcbiAgLy8gZW1waGFzaXplIHRoZSB0b2tlbiBmb2xsb3dpbmcuXG4gIHZhciBJRF9JRCA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICBiZWdpbjogJ1xcXFxiaWRcXFxccyo6JyxcbiAgICAgIHN0YXJ0czoge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBlbmQ6IFFNTF9JREVOVF9SRSxcbiAgICAgICAgcmV0dXJuRW5kOiBmYWxzZVxuICAgICAgfVxuICB9O1xuXG4gIC8vIEZpbmQgUU1MIG9iamVjdCBhdHRyaWJ1dGUuIEFuIGF0dHJpYnV0ZSBpcyBhIFFNTCBpZGVudGlmaWVyIGZvbGxvd2VkIGJ5IDouXG4gIC8vIFVuZm9ydHVuYXRlbHkgaXQncyBoYXJkIHRvIGtub3cgd2hlcmUgaXQgZW5kcywgYXMgaXQgbWF5IGNvbnRhaW4gc2NhbGFycyxcbiAgLy8gb2JqZWN0cywgb2JqZWN0IGRlZmluaXRpb25zLCBvciBqYXZhc2NyaXB0LiBUaGUgdHJ1ZSBlbmQgaXMgZWl0aGVyIHdoZW4gdGhlIHBhcmVudFxuICAvLyBlbmRzIG9yIHRoZSBuZXh0IGF0dHJpYnV0ZSBpcyBkZXRlY3RlZC5cbiAgdmFyIFFNTF9BVFRSSUJVVEUgPSB7XG4gICAgYmVnaW46IFFNTF9JREVOVF9SRSArICdcXFxccyo6JyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogUU1MX0lERU5UX1JFLFxuICAgICAgICBlbmQ6ICdcXFxccyo6JyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvLyBGaW5kIFFNTCBvYmplY3QuIEEgUU1MIG9iamVjdCBpcyBhIFFNTCBpZGVudGlmaWVyIGZvbGxvd2VkIGJ5IHsgYW5kIGVuZHMgYXQgdGhlIG1hdGNoaW5nIH0uXG4gIC8vIEFsbCB3ZSByZWFsbHkgY2FyZSBhYm91dCBpcyBmaW5kaW5nIElERU5UIGZvbGxvd2VkIGJ5IHsgYW5kIGp1c3QgbWFyayB1cCB0aGUgSURFTlQgYW5kIGlnbm9yZSB0aGUgey5cbiAgdmFyIFFNTF9PQkpFQ1QgPSB7XG4gICAgYmVnaW46IFFNTF9JREVOVF9SRSArICdcXFxccyp7JywgZW5kOiAneycsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IFFNTF9JREVOVF9SRX0pXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydxdCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eXFxzKlsnXCJddXNlIChzdHJpY3R8YXNtKVsnXCJdL1xuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7IC8vIHRlbXBsYXRlIHN0cmluZ1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcJFxcXFx7JywgZW5kOiAnXFxcXH0nXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIoMFtiQl1bMDFdKyknIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbb09dWzAtN10rKScgfSxcbiAgICAgICAgICB7IGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgeyAvLyBcInZhbHVlXCIgY29udGFpbmVyXG4gICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3xcXFxcYihjYXNlfHJldHVybnx0aHJvdylcXFxcYilcXFxccyonLFxuICAgICAgICBrZXl3b3JkczogJ3JldHVybiB0aHJvdyBjYXNlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLlJFR0VYUF9NT0RFLFxuICAgICAgICAgIHsgLy8gRTRYIC8gSlNYXG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+XFxzKlspO1xcXV0vLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBTSUdOQUwsXG4gICAgICBQUk9QRVJUWSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9cXHsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogL1tBLVphLXokX11bMC05QS1aYS16JF9dKi99KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogL1xcW3wlL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLicgKyBobGpzLklERU5UX1JFLCByZWxldmFuY2U6IDAgLy8gaGFjazogcHJldmVudHMgZGV0ZWN0aW9uIG9mIGtleXdvcmRzIGFmdGVyIGRvdHNcbiAgICAgIH0sXG4gICAgICBJRF9JRCxcbiAgICAgIFFNTF9BVFRSSUJVVEUsXG4gICAgICBRTUxfT0JKRUNUXG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvIy9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSA9ICcoW2EtekEtWl18XFxcXC5bYS16QS1aLl0pW2EtekEtWjAtOS5fXSonO1xuXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBJREVOVF9SRSxcbiAgICAgICAgbGV4ZW1lczogSURFTlRfUkUsXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAga2V5d29yZDpcbiAgICAgICAgICAgICdmdW5jdGlvbiBpZiBpbiBicmVhayBuZXh0IHJlcGVhdCBlbHNlIGZvciByZXR1cm4gc3dpdGNoIHdoaWxlIHRyeSB0cnlDYXRjaCAnICtcbiAgICAgICAgICAgICdzdG9wIHdhcm5pbmcgcmVxdWlyZSBsaWJyYXJ5IGF0dGFjaCBkZXRhY2ggc291cmNlIHNldE1ldGhvZCBzZXRHZW5lcmljICcgK1xuICAgICAgICAgICAgJ3NldEdyb3VwR2VuZXJpYyBzZXRDbGFzcyAuLi4nLFxuICAgICAgICAgIGxpdGVyYWw6XG4gICAgICAgICAgICAnTlVMTCBOQSBUUlVFIEZBTFNFIFQgRiBJbmYgTmFOIE5BX2ludGVnZXJffDEwIE5BX3JlYWxffDEwIE5BX2NoYXJhY3Rlcl98MTAgJyArXG4gICAgICAgICAgICAnTkFfY29tcGxleF98MTAnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gaGV4IHZhbHVlXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGV4cGxpY2l0IGludGVnZXJcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXGQrKD86W2VFXVsrXFxcXC1dP1xcXFxkKik/TFxcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbnVtYmVyIHdpdGggdHJhaWxpbmcgZGVjaW1hbFxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcZCtcXFxcLig/IVxcXFxkKSg/OmlcXFxcYik/XCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbnVtYmVyXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxkKyg/OlxcXFwuXFxcXGQqKT8oPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9pP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbnVtYmVyIHdpdGggbGVhZGluZyBkZWNpbWFsXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFwuXFxcXGQrKD86W2VFXVsrXFxcXC1dP1xcXFxkKik/aT9cXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgLy8gZXNjYXBlZCBpZGVudGlmaWVyXG4gICAgICAgIGJlZ2luOiAnYCcsXG4gICAgICAgIGVuZDogJ2AnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJ1wiJywgZW5kOiAnXCInfSxcbiAgICAgICAgICB7YmVnaW46IFwiJ1wiLCBlbmQ6IFwiJ1wifVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczpcbiAgICAgICdBcmNoaXZlUmVjb3JkIEFyZWFMaWdodFNvdXJjZSBBdG1vc3BoZXJlIEF0dHJpYnV0ZSBBdHRyaWJ1dGVCZWdpbiBBdHRyaWJ1dGVFbmQgQmFzaXMgJyArXG4gICAgICAnQmVnaW4gQmxvYmJ5IEJvdW5kIENsaXBwaW5nIENsaXBwaW5nUGxhbmUgQ29sb3IgQ29sb3JTYW1wbGVzIENvbmNhdFRyYW5zZm9ybSBDb25lICcgK1xuICAgICAgJ0Nvb3JkaW5hdGVTeXN0ZW0gQ29vcmRTeXNUcmFuc2Zvcm0gQ3JvcFdpbmRvdyBDdXJ2ZXMgQ3lsaW5kZXIgRGVwdGhPZkZpZWxkIERldGFpbCAnICtcbiAgICAgICdEZXRhaWxSYW5nZSBEaXNrIERpc3BsYWNlbWVudCBEaXNwbGF5IEVuZCBFcnJvckhhbmRsZXIgRXhwb3N1cmUgRXh0ZXJpb3IgRm9ybWF0ICcgK1xuICAgICAgJ0ZyYW1lQXNwZWN0UmF0aW8gRnJhbWVCZWdpbiBGcmFtZUVuZCBHZW5lcmFsUG9seWdvbiBHZW9tZXRyaWNBcHByb3hpbWF0aW9uIEdlb21ldHJ5ICcgK1xuICAgICAgJ0hpZGVyIEh5cGVyYm9sb2lkIElkZW50aXR5IElsbHVtaW5hdGUgSW1hZ2VyIEludGVyaW9yIExpZ2h0U291cmNlICcgK1xuICAgICAgJ01ha2VDdWJlRmFjZUVudmlyb25tZW50IE1ha2VMYXRMb25nRW52aXJvbm1lbnQgTWFrZVNoYWRvdyBNYWtlVGV4dHVyZSBNYXR0ZSAnICtcbiAgICAgICdNb3Rpb25CZWdpbiBNb3Rpb25FbmQgTnVQYXRjaCBPYmplY3RCZWdpbiBPYmplY3RFbmQgT2JqZWN0SW5zdGFuY2UgT3BhY2l0eSBPcHRpb24gJyArXG4gICAgICAnT3JpZW50YXRpb24gUGFyYWJvbG9pZCBQYXRjaCBQYXRjaE1lc2ggUGVyc3BlY3RpdmUgUGl4ZWxGaWx0ZXIgUGl4ZWxTYW1wbGVzICcgK1xuICAgICAgJ1BpeGVsVmFyaWFuY2UgUG9pbnRzIFBvaW50c0dlbmVyYWxQb2x5Z29ucyBQb2ludHNQb2x5Z29ucyBQb2x5Z29uIFByb2NlZHVyYWwgUHJvamVjdGlvbiAnICtcbiAgICAgICdRdWFudGl6ZSBSZWFkQXJjaGl2ZSBSZWxhdGl2ZURldGFpbCBSZXZlcnNlT3JpZW50YXRpb24gUm90YXRlIFNjYWxlIFNjcmVlbldpbmRvdyAnICtcbiAgICAgICdTaGFkaW5nSW50ZXJwb2xhdGlvbiBTaGFkaW5nUmF0ZSBTaHV0dGVyIFNpZGVzIFNrZXcgU29saWRCZWdpbiBTb2xpZEVuZCBTcGhlcmUgJyArXG4gICAgICAnU3ViZGl2aXNpb25NZXNoIFN1cmZhY2UgVGV4dHVyZUNvb3JkaW5hdGVzIFRvcnVzIFRyYW5zZm9ybSBUcmFuc2Zvcm1CZWdpbiBUcmFuc2Zvcm1FbmQgJyArXG4gICAgICAnVHJhbnNmb3JtUG9pbnRzIFRyYW5zbGF0ZSBUcmltQ3VydmUgV29ybGRCZWdpbiBXb3JsZEVuZCcsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSURFTlRJRklFUiA9ICdbYS16QS1aLV9dW15cXFxcbntdK1xcXFx7JztcblxuICB2YXIgUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICBiZWdpbjogL1thLXpBLVotX10rLywgZW5kOiAvXFxzKjovLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnOycsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBjb250YWluczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICAgIGJlZ2luOiAvXFwuW2EtekEtWi1fXSsvXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICBiZWdpbjogL1xcKG9wdGlvbmFsXFwpL1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydncmFwaCcsICdpbnN0YW5jZXMnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiAnaW1wb3J0JyxcbiAgICBjb250YWluczogW1xuICAgICAgLy8gRmFjZXQgc2VjdGlvbnNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeZmFjZXQgJyArIElERU5USUZJRVIsXG4gICAgICAgIGVuZDogJ30nLFxuICAgICAgICBrZXl3b3JkczogJ2ZhY2V0JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBQUk9QRVJUWSxcbiAgICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG5cbiAgICAgIC8vIEluc3RhbmNlIHNlY3Rpb25zXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKmluc3RhbmNlIG9mICcgKyBJREVOVElGSUVSLFxuICAgICAgICBlbmQ6ICd9JyxcbiAgICAgICAga2V5d29yZHM6ICduYW1lIGNvdW50IGNoYW5uZWxzIGluc3RhbmNlLWRhdGEgaW5zdGFuY2Utc3RhdGUgaW5zdGFuY2Ugb2YnLFxuICAgICAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgUFJPUEVSVFksXG4gICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyBDb21wb25lbnQgc2VjdGlvbnNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeJyArIElERU5USUZJRVIsXG4gICAgICAgIGVuZDogJ30nLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFBST1BFUlRZLFxuICAgICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgLy8gQ29tbWVudHNcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLy8gQ29sb3JzIGZyb20gUm91dGVyT1MgdGVybWluYWw6XG4vLyAgIGdyZWVuICAgICAgICAtICMwRTlBMDBcbi8vICAgdGVhbCAgICAgICAgIC0gIzBDOUE5QVxuLy8gICBwdXJwbGUgICAgICAgLSAjOTkwNjlBXG4vLyAgIGxpZ2h0LWJyb3duICAtICM5QTk5MDBcblxuZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBTVEFURU1FTlRTID0gJ2ZvcmVhY2ggZG8gd2hpbGUgZm9yIGlmIGZyb20gdG8gc3RlcCBlbHNlIG9uLWVycm9yIGFuZCBvciBub3QgaW4nO1xuXG4gIC8vIEdsb2JhbCBjb21tYW5kczogRXZlcnkgZ2xvYmFsIGNvbW1hbmQgc2hvdWxkIHN0YXJ0IHdpdGggXCI6XCIgdG9rZW4sIG90aGVyd2lzZSBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgdmFyaWFibGUuXG4gIHZhciBHTE9CQUxfQ09NTUFORFMgPSAnZ2xvYmFsIGxvY2FsIGJlZXAgZGVsYXkgcHV0IGxlbiB0eXBlb2YgcGljayBsb2cgdGltZSBzZXQgZmluZCBlbnZpcm9ubWVudCB0ZXJtaW5hbCBlcnJvciBleGVjdXRlIHBhcnNlIHJlc29sdmUgdG9hcnJheSB0b2Jvb2wgdG9pZCB0b2lwIHRvaXA2IHRvbnVtIHRvc3RyIHRvdGltZSc7XG5cbiAgLy8gQ29tbW9uIGNvbW1hbmRzOiBGb2xsb3dpbmcgY29tbWFuZHMgYXZhaWxhYmxlIGZyb20gbW9zdCBzdWItbWVudXM6XG4gIHZhciBDT01NT05fQ09NTUFORFMgPSAnYWRkIHJlbW92ZSBlbmFibGUgZGlzYWJsZSBzZXQgZ2V0IHByaW50IGV4cG9ydCBlZGl0IGZpbmQgcnVuIGRlYnVnIGVycm9yIGluZm8gd2FybmluZyc7XG5cbiAgdmFyIExJVEVSQUxTID0gJ3RydWUgZmFsc2UgeWVzIG5vIG5vdGhpbmcgbmlsIG51bGwnO1xuXG4gIHZhciBPQkpFQ1RTID0gJ3RyYWZmaWMtZmxvdyB0cmFmZmljLWdlbmVyYXRvciBmaXJld2FsbCBzY2hlZHVsZXIgYWFhIGFjY291bnRpbmcgYWRkcmVzcy1saXN0IGFkZHJlc3MgYWxpZ24gYXJlYSBiYW5kd2lkdGgtc2VydmVyIGJmZCBiZ3AgYnJpZGdlIGNsaWVudCBjbG9jayBjb21tdW5pdHkgY29uZmlnIGNvbm5lY3Rpb24gY29uc29sZSBjdXN0b21lciBkZWZhdWx0IGRoY3AtY2xpZW50IGRoY3Atc2VydmVyIGRpc2NvdmVyeSBkbnMgZS1tYWlsIGV0aGVybmV0IGZpbHRlciBmaXJld2FsbCBmaXJtd2FyZSBncHMgZ3JhcGhpbmcgZ3JvdXAgaGFyZHdhcmUgaGVhbHRoIGhvdHNwb3QgaWRlbnRpdHkgaWdtcC1wcm94eSBpbmNvbWluZyBpbnN0YW5jZSBpbnRlcmZhY2UgaXAgaXBzZWMgaXB2NiBpcnEgbDJ0cC1zZXJ2ZXIgbGNkIGxkcCBsb2dnaW5nIG1hYy1zZXJ2ZXIgbWFjLXdpbmJveCBtYW5nbGUgbWFudWFsIG1pcnJvciBtbWUgbXBscyBuYXQgbmQgbmVpZ2hib3IgbmV0d29yayBub3RlIG50cCBvc3BmIG9zcGYtdjMgb3Zwbi1zZXJ2ZXIgcGFnZSBwZWVyIHBpbSBwaW5nIHBvbGljeSBwb29sIHBvcnQgcHBwIHBwcG9lLWNsaWVudCBwcHRwLXNlcnZlciBwcmVmaXggcHJvZmlsZSBwcm9wb3NhbCBwcm94eSBxdWV1ZSByYWRpdXMgcmVzb3VyY2UgcmlwIHJpcG5nIHJvdXRlIHJvdXRpbmcgc2NyZWVuIHNjcmlwdCBzZWN1cml0eS1wcm9maWxlcyBzZXJ2ZXIgc2VydmljZSBzZXJ2aWNlLXBvcnQgc2V0dGluZ3Mgc2hhcmVzIHNtYiBzbXMgc25pZmZlciBzbm1wIHNub29wZXIgc29ja3Mgc3N0cC1zZXJ2ZXIgc3lzdGVtIHRvb2wgdHJhY2tpbmcgdHlwZSB1cGdyYWRlIHVwbnAgdXNlci1tYW5hZ2VyIHVzZXJzIHVzZXIgdmxhbiBzZWNyZXQgdnJycCB3YXRjaGRvZyB3ZWItYWNjZXNzIHdpcmVsZXNzIHBwdHAgcHBwb2UgbGFuIHdhbiBsYXllcjctcHJvdG9jb2wgbGVhc2Ugc2ltcGxlIHJhdyc7XG5cbiAgLy8gcHJpbnQgcGFyYW1ldGVyc1xuICAvLyBTZXZlcmFsIHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZSBmb3IgcHJpbnQgY29tbWFuZDpcbiAgLy8gVG9EbzogdmFyIFBBUkFNRVRFUlNfUFJJTlQgPSAnYXBwZW5kIGFzLXZhbHVlIGJyaWVmIGRldGFpbCBjb3VudC1vbmx5IGZpbGUgZm9sbG93IGZvbGxvdy1vbmx5IGZyb20gaW50ZXJ2YWwgdGVyc2UgdmFsdWUtbGlzdCB3aXRob3V0LXBhZ2luZyB3aGVyZSBpbmZvJztcbiAgLy8gVG9EbzogdmFyIE9QRVJBVE9SUyA9ICcmJiBhbmQgISBub3QgfHwgb3IgaW4gfiBeICYgPDwgPj4gKyAtICogLyc7XG4gIC8vIFRvRG86IHZhciBUWVBFUyA9ICdudW0gbnVtYmVyIGJvb2wgYm9vbGVhbiBzdHIgc3RyaW5nIGlwIGlwNi1wcmVmaXggaWQgdGltZSBhcnJheSc7XG4gIC8vIFRvRG86IFRoZSBmb2xsb3dpbmcgdG9rZW5zIHNlcnZlIGFzIGRlbGltaXRlcnMgaW4gdGhlIGdyYW1tYXI6ICgpICBbXSAge30gIDogICA7ICAgJCAgIC8gXG5cbiAgdmFyIFZBUl9QUkVGSVggPSAnZ2xvYmFsIGxvY2FsIHNldCBmb3IgZm9yZWFjaCc7XG5cbiAgdmFyIFZBUiA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1xcJFtcXHdcXGQjQF1bXFx3XFxkX10qL30sXG4gICAgICB7YmVnaW46IC9cXCRcXHsoLio/KX0vfVxuICAgIF1cbiAgfTtcbiAgXG4gIHZhciBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBWQVIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXCRcXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIFxuICB2YXIgQVBPU19TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLCBlbmQ6IC8nL1xuICB9O1xuICBcbiAgdmFyIElQQUREUiA9ICcoKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFxcXGInO1xuICB2YXIgSVBBRERSX3dCSVRNQVNLID0gIElQQUREUisnLygzWzAtMl18WzEtMl1bMC05XXxcXFxcZCknO1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydyb3V0ZXJvcycsICdtaWtyb3RpayddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogLzo/W1xcdy1dKy8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxTLFxuICAgICAga2V5d29yZDogU1RBVEVNRU5UUyArICcgOicgKyBTVEFURU1FTlRTLnNwbGl0KCcgJykuam9pbignIDonKSArICcgOicgKyBHTE9CQUxfQ09NTUFORFMuc3BsaXQoJyAnKS5qb2luKCcgOicpLFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgLy8g0L3QtdC00L7Qv9GD0YHRgtC40LzRi9C1INC60L7QvdGB0YLRgNGD0LrRhtC40LhcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAvXkAvLCBlbmQ6IC8kLywgfSwgICAgICAgICAgICAgICAvLyBkbnNcbiAgICAgICAgICB7IGJlZ2luOiAvXFwvXFwqLywgZW5kOiAvXFwqXFwvLywgfSwgICAgICAgICAgLy8gLS0gY29tbWVudFxuICAgICAgICAgIHsgYmVnaW46IC8lJS8sIGVuZDogLyQvLCB9LCAgICAgICAgICAgICAgIC8vIC0tIGNvbW1lbnRcbiAgICAgICAgICB7IGJlZ2luOiAvXicvLCBlbmQ6IC8kLywgfSwgICAgICAgICAgICAgICAvLyBNb25rZXkgb25lIGxpbmUgY29tbWVudFxuICAgICAgICAgIHsgYmVnaW46IC9eXFxzKlxcL1tcXHctXSs9LywgZW5kOiAvJC8sIH0sICAgIC8vIGpib3NzLWNsaVxuICAgICAgICAgIHsgYmVnaW46IC9cXC9cXC8vLCBlbmQ6IC8kLywgfSwgICAgICAgICAgICAgLy8gU3RhbiBjb21tZW50XG4gICAgICAgICAgeyBiZWdpbjogL15cXFtcXDwvLCBlbmQ6IC9cXD5cXF0kLywgfSwgICAgICAgIC8vIEYjIGNsYXNzIGRlY2xhcmF0aW9uP1xuICAgICAgICAgIHsgYmVnaW46IC88XFwvLywgZW5kOiAvPi8sIH0sICAgICAgICAgICAgICAvLyBIVE1MIHRhZ3NcbiAgICAgICAgICB7IGJlZ2luOiAvXmZhY2V0IC8sIGVuZDogL1xcfS8sIH0sICAgICAgICAgLy8gcm9ib2NvbmYgLSDQu9GO0YLRi9C5INC60L7RgdGC0YvQu9GMICkpKVxuICAgICAgICAgIHsgYmVnaW46ICdeMVxcXFwuXFxcXC4oXFxcXGQrKSQnLCBlbmQ6IC8kLywgfSwgIC8vIHRhcCAgXG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC8uLyxcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJ14jJywgJyQnKSxcbiAgICAgIFFVT1RFX1NUUklORyxcbiAgICAgIEFQT1NfU1RSSU5HLFxuICAgICAgVkFSLFxuICAgICAgeyAvLyBhdHRyaWJ1dGU9dmFsdWVcbiAgICAgICAgYmVnaW46IC9bXFx3LV0rXFw9KFteXFxzXFx7XFx9XFxbXFxdXFwoXFwpXSspLywgXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgIGJlZ2luOiAvW149XSsvXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogLz0vLCBcbiAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiAgdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIFFVT1RFX1NUUklORyxcbiAgICAgICAgICAgICAgQVBPU19TVFJJTkcsXG4gICAgICAgICAgICAgIFZBUixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoJyArIExJVEVSQUxTLnNwbGl0KCcgJykuam9pbignfCcpICsgJylcXFxcYicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC8qe1xuICAgICAgICAgICAgICAgIC8vIElQdjQgYWRkcmVzc2VzIGFuZCBzdWJuZXRzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge2JlZ2luOiBJUEFERFJfd0JJVE1BU0srJygsJytJUEFERFJfd0JJVE1BU0srJykqJ30sIC8vMTkyLjE2OC4wLjAvMjQsMS4yLjMuMC8yNFxuICAgICAgICAgICAgICAgICAge2JlZ2luOiBJUEFERFIrJy0nK0lQQUREUn0sICAgICAgIC8vIDE5Mi4xNjguMC4xLTE5Mi4xNjguMC4zXG4gICAgICAgICAgICAgICAgICB7YmVnaW46IElQQUREUisnKCwnK0lQQUREUisnKSonfSwgLy8gMTkyLjE2OC4wLjEsMTkyLjE2OC4wLjM0LDE5Mi4xNjguMjQuMSwxOTIuMTY4LjAuMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSwgLy8gKi9cbiAgICAgICAgICAgICAgLyp7XG4gICAgICAgICAgICAgICAgLy8gTUFDIGFkZHJlc3NlcyBhbmQgREhDUCBDbGllbnQgSURzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcYigxOik/KFswLTlBLUZhLWZdezEsMn1bOi1dKXs1fShbMC05QS1GYS1mXSl7MSwyfVxcYi8sXG4gICAgICAgICAgICAgIH0sIC8vKi9cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vINCd0LUg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNGC0Ywg0L3QtSDQutC70LDRgdGB0LjRhNC40YbQuNGA0L7QstCw0L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjy4g0J3QtdC+0LHRhdC+0LTQuNC80L4g0LTQu9GPINC40YHQutC70Y7Rh9C10L3QuNGPINC/0L7QtNGB0LLQtdGC0LrQuCDQt9C90LDRh9C10L3QuNC5INC60LDQuiBidWlsdF9pbi5cbiAgICAgICAgICAgICAgICAvLyBjbGFzc05hbWU6ICdudW1iZXInLCAgXG4gICAgICAgICAgICAgICAgYmVnaW46IC8oXCJbXlwiXSpcInxbXlxcc1xce1xcfVxcW1xcXV0rKS8sXG4gICAgICAgICAgICAgIH0sIC8vKi9cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9IC8vKi9cbiAgICAgICAgXVxuICAgICAgfSwvLyovXG4gICAgICB7XG4gICAgICAgIC8vIEhFWCB2YWx1ZXNcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IC9cXCpbMC05YS1mQS1GXSsvLFxuICAgICAgfSwgLy8qL1xuXG4gICAgICB7IFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBDT01NT05fQ09NTUFORFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKShbXFxcXHNcXFtcXChdfFxcXSknLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdidWlsdGluLW5hbWUnLCAvLydmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogL1xcdysvLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sICBcbiAgICAgIH0sXG4gICAgICBcbiAgICAgIHsgXG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcoXFxcXC5cXFxcLi98L3xcXFxccykoKCcgKyBPQkpFQ1RTLnNwbGl0KCcgJykuam9pbignfCcpICsgJyk7P1xcXFxzKSsnLHJlbGV2YW5jZTogMTAsfSxcbiAgICAgICAgICB7YmVnaW46IC9cXC5cXC4vLH0sXG4gICAgICAgIF0sXG4gICAgICB9LC8vKi9cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnZmxvYXQgY29sb3IgcG9pbnQgbm9ybWFsIHZlY3RvciBtYXRyaXggd2hpbGUgZm9yIGlmIGRvIHJldHVybiBlbHNlIGJyZWFrIGV4dGVybiBjb250aW51ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2FicyBhY29zIGFtYmllbnQgYXJlYSBhc2luIGF0YW4gYXRtb3NwaGVyZSBhdHRyaWJ1dGUgY2FsY3VsYXRlbm9ybWFsIGNlaWwgY2VsbG5vaXNlICcgK1xuICAgICAgICAnY2xhbXAgY29tcCBjb25jYXQgY29zIGRlZ3JlZXMgZGVwdGggRGVyaXYgZGlmZnVzZSBkaXN0YW5jZSBEdSBEdiBlbnZpcm9ubWVudCBleHAgJyArXG4gICAgICAgICdmYWNlZm9yd2FyZCBmaWx0ZXJzdGVwIGZsb29yIGZvcm1hdCBmcmVzbmVsIGluY2lkZW50IGxlbmd0aCBsaWdodHNvdXJjZSBsb2cgbWF0Y2ggJyArXG4gICAgICAgICdtYXggbWluIG1vZCBub2lzZSBub3JtYWxpemUgbnRyYW5zZm9ybSBvcHBvc2l0ZSBvcHRpb24gcGhvbmcgcG5vaXNlIHBvdyBwcmludGYgJyArXG4gICAgICAgICdwdGxpbmVkIHJhZGlhbnMgcmFuZG9tIHJlZmxlY3QgcmVmcmFjdCByZW5kZXJpbmZvIHJvdW5kIHNldGNvbXAgc2V0eGNvbXAgc2V0eWNvbXAgJyArXG4gICAgICAgICdzZXR6Y29tcCBzaGFkb3cgc2lnbiBzaW4gc21vb3Roc3RlcCBzcGVjdWxhciBzcGVjdWxhcmJyZGYgc3BsaW5lIHNxcnQgc3RlcCB0YW4gJyArXG4gICAgICAgICd0ZXh0dXJlIHRleHR1cmVpbmZvIHRyYWNlIHRyYW5zZm9ybSB2dHJhbnNmb3JtIHhjb21wIHljb21wIHpjb21wJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3VyZmFjZSBkaXNwbGFjZW1lbnQgbGlnaHQgdm9sdW1lIGltYWdlcicsIGVuZDogJ1xcXFwoJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2lsbHVtaW5hdGUgaWxsdW1pbmFuY2UgZ2F0aGVyJywgZW5kOiAnXFxcXCgnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAgIGtleXdvcmQ6ICdCSUxMX1BFUklPRCBCSUxMX1NUQVJUIEJJTExfU1RPUCBSU19FRkZFQ1RJVkVfU1RBUlQgUlNfRUZGRUNUSVZFX1NUT1AgUlNfSlVSSVNfQ09ERSBSU19PUENPX0NPREUgJyArXG4gICAgICAgICAnSU5UREFEREFUVFJJQlVURXw1IElOVERBRERWTVNHfDUgSU5UREJMT0NLT1B8NSBJTlREQkxPQ0tPUE5BfDUgSU5URENMT1NFfDUgSU5URENPVU5UfDUgJyArXG4gICAgICAgICAnSU5URENPVU5UU1RBVFVTQ09ERXw1IElOVERDUkVBVEVNQVNLfDUgSU5URENSRUFURURBWU1BU0t8NSBJTlREQ1JFQVRFRkFDVE9STUFTS3w1ICcgK1xuICAgICAgICAgJ0lOVERDUkVBVEVIQU5ETEV8NSBJTlREQ1JFQVRFT1ZFUlJJREVEQVlNQVNLfDUgSU5URENSRUFURU9WRVJSSURFTUFTS3w1ICcgK1xuICAgICAgICAgJ0lOVERDUkVBVEVTVEFUVVNDT0RFTUFTS3w1IElOVERDUkVBVEVUT1VQRVJJT0R8NSBJTlREREVMRVRFfDUgSU5URERJUFRFU1R8NSBJTlRERVhQT1JUfDUgJyArXG4gICAgICAgICAnSU5UREdFVEVSUk9SQ09ERXw1IElOVERHRVRFUlJPUk1FU1NBR0V8NSBJTlRESVNFUVVBTHw1IElOVERKT0lOfDUgSU5URExPQUR8NSBJTlRETE9BREFDVFVBTENVVHw1ICcgK1xuICAgICAgICAgJ0lOVERMT0FEREFURVN8NSBJTlRETE9BREhJU1R8NSBJTlRETE9BRExJU1R8NSBJTlRETE9BRExJU1REQVRFU3w1IElOVERMT0FETElTVEVORVJHWXw1ICcgK1xuICAgICAgICAgJ0lOVERMT0FETElTVEhJU1R8NSBJTlRETE9BRFJFTEFURURDSEFOTkVMfDUgSU5URExPQURTUHw1IElOVERMT0FEU1RBR0lOR3w1IElOVERMT0FEVU9NfDUgJyArXG4gICAgICAgICAnSU5URExPQURVT01EQVRFU3w1IElOVERMT0FEVU9NSElTVHw1IElOVERMT0FEVkVSU0lPTnw1IElOVERPUEVOfDUgSU5URFJFQURGSVJTVHw1IElOVERSRUFETkVYVHw1ICcgK1xuICAgICAgICAgJ0lOVERSRUNDT1VOVHw1IElOVERSRUxFQVNFfDUgSU5URFJFUExBQ0V8NSBJTlREUk9MTEFWR3w1IElOVERST0xMUEVBS3w1IElOVERTQ0FMQVJPUHw1IElOVERTQ0FMRXw1ICcgK1xuICAgICAgICAgJ0lOVERTRVRBVFRSSUJVVEV8NSBJTlREU0VURFNUUEFSVElDSVBBTlR8NSBJTlREU0VUU1RSSU5HfDUgSU5URFNFVFZBTFVFfDUgSU5URFNFVFZBTFVFU1RBVFVTfDUgJyArXG4gICAgICAgICAnSU5URFNISUZUU1RBUlRUSU1FfDUgSU5URFNNT09USHw1IElOVERTT1JUfDUgSU5URFNQSUtFVEVTVHw1IElOVERTVUJTRVR8NSBJTlREVE9VfDUgJyArXG4gICAgICAgICAnSU5URFRPVVJFTEVBU0V8NSBJTlREVE9VVkFMVUV8NSBJTlREVVBEQVRFU1RBVFN8NSBJTlREVkFMVUV8NSBTVERFViBJTlREREVMRVRFRVh8NSAnICtcbiAgICAgICAgICdJTlRETE9BREVYQUNUVUFMfDUgSU5URExPQURFWENVVHw1IElOVERMT0FERVhEQVRFU3w1IElOVERMT0FERVh8NSBJTlRETE9BREVYUkVMQVRFRENIQU5ORUx8NSAnICtcbiAgICAgICAgICdJTlREU0FWRUVYfDUgTVZMT0FEfDUgTVZMT0FEQUNDVHw1IE1WTE9BREFDQ1REQVRFU3w1IE1WTE9BREFDQ1RISVNUfDUgTVZMT0FEREFURVN8NSBNVkxPQURISVNUfDUgJyArXG4gICAgICAgICAnTVZMT0FETElTVHw1IE1WTE9BRExJU1REQVRFU3w1IE1WTE9BRExJU1RISVNUfDUgSUYgRk9SIE5FWFQgRE9ORSBTRUxFQ1QgRU5EIENBTEwgQUJPUlQgQ0xFQVIgQ0hBTk5FTCBGQUNUT1IgTElTVCBOVU1CRVIgJyArXG4gICAgICAgICAnT1ZFUlJJREUgU0VUIFdFRUsgRElTVFJJQlVUSU9OTk9ERSBFTFNFIFdIRU4gVEhFTiBPVEhFUldJU0UgSUVOVU0gQ1NWIElOQ0xVREUgTEVBVkUgUklERVIgU0FWRSBERUxFVEUgJyArXG4gICAgICAgICAnTk9WQUxVRSBTRUNUSU9OIFdBUk4gU0FWRV9VUERBVEUgREVURVJNSU5BTlQgTEFCRUwgUkVQT1JUIFJFVkVOVUUgRUFDSCAnICtcbiAgICAgICAgICdJTiBGUk9NIFRPVEFMIENIQVJHRSBCTE9DSyBBTkQgT1IgQ1NWX0ZJTEUgUkFURV9DT0RFIEFVWElMSUFSWV9ERU1BTkQgJyArXG4gICAgICAgICAnVUlEQUNDT1VOVCBSUyBCSUxMX1BFUklPRF9TRUxFQ1QgSE9VUlNfUEVSX01PTlRIIElOVERfRVJST1JfU1RPUCBTRUFTT05fU0NIRURVTEVfTkFNRSAnICtcbiAgICAgICAgICdBQ0NPVU5URkFDVE9SIEFSUkFZVVBQRVJCT1VORCBDQUxMU1RPUkVEUFJPQyBHRVRBRE9DT05ORUNUSU9OIEdFVENPTk5FQ1QgR0VUREFUQVNPVVJDRSAnICtcbiAgICAgICAgICdHRVRRVUFMSUZJRVIgR0VUVVNFUklEIEhBU1ZBTFVFIExJU1RDT1VOVCBMSVNUT1AgTElTVFVQREFURSBMSVNUVkFMVUUgUFJPUkFURUZBQ1RPUiBSU1BST1JBVEUgJyArXG4gICAgICAgICAnU0VUQklOUEFUSCBTRVREQk1PTklUT1IgV1FfT1BFTiBCSUxMSU5HSE9VUlMgREFURSBEQVRFRlJPTUZMT0FUIERBVEVUSU1FRlJPTVNUUklORyAnICtcbiAgICAgICAgICdEQVRFVElNRVRPU1RSSU5HIERBVEVUT0ZMT0FUIERBWSBEQVlESUZGIERBWU5BTUUgREJEQVRFVElNRSBIT1VSIE1JTlVURSBNT05USCBNT05USERJRkYgJyArXG4gICAgICAgICAnTU9OVEhIT1VSUyBNT05USE5BTUUgUk9VTkREQVRFIFNBTUVXRUVLREFZTEFTVFlFQVIgU0VDT05EIFdFRUtEQVkgV0VFS0RJRkYgWUVBUiBZRUFSREFZICcgK1xuICAgICAgICAgJ1lFQVJTVFIgQ09NUFNVTSBISVNUQ09VTlQgSElTVE1BWCBISVNUTUlOIEhJU1RNSU5OWiBISVNUVkFMVUUgTUFYTlJBTkdFIE1BWFJBTkdFIE1JTlJBTkdFICcgK1xuICAgICAgICAgJ0NPTVBJS1ZBIENPTVBLVkEgQ09NUEtWQVJGUk9NS1FLVyBDT01QTEYgSURBVFRSIEZMQUcgTEYyS1cgTEYyS1dIIE1BWEtXIFBPV0VSRkFDVE9SICcgK1xuICAgICAgICAgJ1JFQURJTkcyVVNBR0UgQVZHU0VBU09OIE1BWFNFQVNPTiBNT05USExZTUVSR0UgU0VBU09OVkFMVUUgU1VNU0VBU09OIEFDQ1RSRUFEREFURVMgJyArXG4gICAgICAgICAnQUNDVFRBQkxFTE9BRCBDT05GSUdBREQgQ09ORklHR0VUIENSRUFURU9CSkVDVCBDUkVBVEVSRVBPUlQgRU1BSUxDTElFTlQgRVhQQkxLTURNVVNBR0UgJyArXG4gICAgICAgICAnRVhQTURNVVNBR0UgRVhQT1JUX1VTQUdFIEZBQ1RPUklORUZGRUNUIEdFVFVTRVJTUEVDSUZJRURTVE9QIElORUZGRUNUIElTSE9MSURBWSBSVU5SQVRFICcgK1xuICAgICAgICAgJ1NBVkVfUFJPRklMRSBTRVRSRVBPUlRUSVRMRSBVU0VSRVhJVCBXQVRGT1JSVU5SQVRFIFRPIFRBQkxFIEFDT1MgQVNJTiBBVEFOIEFUQU4yIEJJVEFORCBDRUlMICcgK1xuICAgICAgICAgJ0NPUyBDT1NFQ0FOVCBDT1NIIENPVEFOR0VOVCBESVZRVU9UIERJVlJFTSBFWFAgRkFCUyBGTE9PUiBGTU9EIEZSRVBNIEZSRVhQTiBMT0cgTE9HMTAgTUFYIE1BWE4gJyArXG4gICAgICAgICAnTUlOIE1JTk5aIE1PREYgUE9XIFJPVU5EIFJPVU5EMlZBTFVFIFJPVU5ESU5UIFNFQ0FOVCBTSU4gU0lOSCBTUVJPT1QgVEFOIFRBTkggRkxPQVQyU1RSSU5HICcgK1xuICAgICAgICAgJ0ZMT0FUMlNUUklOR05DIElOU1RSIExFRlQgTEVOIExUUklNIE1JRCBSSUdIVCBSVFJJTSBTVFJJTkcgU1RSSU5HTkMgVE9MT1dFUiBUT1VQUEVSIFRSSU0gJyArXG4gICAgICAgICAnTlVNREFZUyBSRUFEX0RBVEUgU1RBR0lORycsXG4gICAgICAgYnVpbHRfaW46ICdJREVOVElGSUVSIE9QVElPTlMgWE1MX0VMRU1FTlQgWE1MX09QIFhNTF9FTEVNRU5UX09GIERPTURPQ0NSRUFURSBET01ET0NMT0FERklMRSBET01ET0NMT0FEWE1MICcgK1xuICAgICAgICAgJ0RPTURPQ1NBVkVGSUxFIERPTURPQ0dFVFJPT1QgRE9NRE9DQUREUEkgRE9NTk9ERUdFVE5BTUUgRE9NTk9ERUdFVFRZUEUgRE9NTk9ERUdFVFZBTFVFIERPTU5PREVHRVRDSElMRENUICcgK1xuICAgICAgICAgJ0RPTU5PREVHRVRGSVJTVENISUxEIERPTU5PREVHRVRTSUJMSU5HIERPTU5PREVDUkVBVEVDSElMREVMRU1FTlQgRE9NTk9ERVNFVEFUVFJJQlVURSAnICtcbiAgICAgICAgICdET01OT0RFR0VUQ0hJTERFTEVNRU5UQ1QgRE9NTk9ERUdFVEZJUlNUQ0hJTERFTEVNRU5UIERPTU5PREVHRVRTSUJMSU5HRUxFTUVOVCBET01OT0RFR0VUQVRUUklCVVRFQ1QgJyArXG4gICAgICAgICAnRE9NTk9ERUdFVEFUVFJJQlVURUkgRE9NTk9ERUdFVEFUVFJJQlVURUJZTkFNRSBET01OT0RFR0VUQllOQU1FJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcjXFxcXHMrW2EtekEtWlxcXFwgXFxcXC5dKicsIHJlbGV2YW5jZTogMH0sIC8vIGxvb2tzIGxpa2UgIy1jb21tZW50XG4gICAgICAgICAge2JlZ2luOiAnI1thLXpBLVpcXFxcIFxcXFwuXSsnfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5VTV9TVUZGSVggPSAnKFt1aV0oOHwxNnwzMnw2NHwxMjh8c2l6ZSl8ZigzMnw2NCkpXFw/JztcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnYWxpZ25vZiBhcyBiZSBib3ggYnJlYWsgY29uc3QgY29udGludWUgY3JhdGUgZG8gZWxzZSBlbnVtIGV4dGVybiAnICtcbiAgICAnZmFsc2UgZm4gZm9yIGlmIGltcGwgaW4gbGV0IGxvb3AgbWF0Y2ggbW9kIG11dCBvZmZzZXRvZiBvbmNlIHByaXYgJyArXG4gICAgJ3Byb2MgcHViIHB1cmUgcmVmIHJldHVybiBzZWxmIFNlbGYgc2l6ZW9mIHN0YXRpYyBzdHJ1Y3Qgc3VwZXIgdHJhaXQgdHJ1ZSAnICtcbiAgICAndHlwZSB0eXBlb2YgdW5zYWZlIHVuc2l6ZWQgdXNlIHZpcnR1YWwgd2hpbGUgd2hlcmUgeWllbGQgbW92ZSBkZWZhdWx0JztcbiAgdmFyIEJVSUxUSU5TID1cbiAgICAvLyBmdW5jdGlvbnNcbiAgICAnZHJvcCAnICtcbiAgICAvLyB0eXBlc1xuICAgICdpOCBpMTYgaTMyIGk2NCBpMTI4IGlzaXplICcgK1xuICAgICd1OCB1MTYgdTMyIHU2NCB1MTI4IHVzaXplICcgK1xuICAgICdmMzIgZjY0ICcgK1xuICAgICdzdHIgY2hhciBib29sICcgK1xuICAgICdCb3ggT3B0aW9uIFJlc3VsdCBTdHJpbmcgVmVjICcgK1xuICAgIC8vIHRyYWl0c1xuICAgICdDb3B5IFNlbmQgU2l6ZWQgU3luYyBEcm9wIEZuIEZuTXV0IEZuT25jZSBUb093bmVkIENsb25lIERlYnVnICcgK1xuICAgICdQYXJ0aWFsRXEgUGFydGlhbE9yZCBFcSBPcmQgQXNSZWYgQXNNdXQgSW50byBGcm9tIERlZmF1bHQgSXRlcmF0b3IgJyArXG4gICAgJ0V4dGVuZCBJbnRvSXRlcmF0b3IgRG91YmxlRW5kZWRJdGVyYXRvciBFeGFjdFNpemVJdGVyYXRvciAnICtcbiAgICAnU2xpY2VDb25jYXRFeHQgVG9TdHJpbmcgJyArXG4gICAgLy8gbWFjcm9zXG4gICAgJ2Fzc2VydCEgYXNzZXJ0X2VxISBiaXRmbGFncyEgYnl0ZXMhIGNmZyEgY29sISBjb25jYXQhIGNvbmNhdF9pZGVudHMhICcgK1xuICAgICdkZWJ1Z19hc3NlcnQhIGRlYnVnX2Fzc2VydF9lcSEgZW52ISBwYW5pYyEgZmlsZSEgZm9ybWF0ISBmb3JtYXRfYXJncyEgJyArXG4gICAgJ2luY2x1ZGVfYmluISBpbmNsdWRlX3N0ciEgbGluZSEgbG9jYWxfZGF0YV9rZXkhIG1vZHVsZV9wYXRoISAnICtcbiAgICAnb3B0aW9uX2VudiEgcHJpbnQhIHByaW50bG4hIHNlbGVjdCEgc3RyaW5naWZ5ISB0cnkhIHVuaW1wbGVtZW50ZWQhICcgK1xuICAgICd1bnJlYWNoYWJsZSEgdmVjISB3cml0ZSEgd3JpdGVsbiEgbWFjcm9fcnVsZXMhIGFzc2VydF9uZSEgZGVidWdfYXNzZXJ0X25lISc7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydycyddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICBLRVlXT1JEUyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlIFNvbWUgTm9uZSBPayBFcnInLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIEJVSUxUSU5TXG4gICAgfSxcbiAgICBsZXhlbWVzOiBobGpzLklERU5UX1JFICsgJyE/JyxcbiAgICBpbGxlZ2FsOiAnPC8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoJy9cXFxcKicsICdcXFxcKi8nLCB7Y29udGFpbnM6IFsnc2VsZiddfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2JlZ2luOiAvYj9cIi8sIGlsbGVnYWw6IG51bGx9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgeyBiZWdpbjogL3IoIyopXCIoLnxcXG4pKj9cIlxcMSg/ISMpLyB9LFxuICAgICAgICAgICB7IGJlZ2luOiAvYj8nXFxcXD8oeFxcd3syfXx1XFx3ezR9fFVcXHd7OH18LiknLyB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvJ1thLXpBLVpfXVthLXpBLVowLTlfXSovXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYjBiKFswMV9dKyknICsgTlVNX1NVRkZJWCB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYjBvKFswLTdfXSspJyArIE5VTV9TVUZGSVggfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIweChbQS1GYS1mMC05X10rKScgKyBOVU1fU1VGRklYIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiKFxcXFxkW1xcXFxkX10qKFxcXFwuWzAtOV9dKyk/KFtlRV1bKy1dP1swLTlfXSspPyknICtcbiAgICAgICAgICAgICAgICAgICBOVU1fU1VGRklYXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2ZuJywgZW5kOiAnKFxcXFwofDwpJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyNcXFxcIT9cXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd0eXBlJywgZW5kOiAnOycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCB7ZW5kc1BhcmVudDogdHJ1ZX0pXG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcUydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3RyYWl0IGVudW0gc3RydWN0IHVuaW9uJywgZW5kOiAneycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCB7ZW5kc1BhcmVudDogdHJ1ZX0pXG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6ICdbXFxcXHdcXFxcZF0nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OicsXG4gICAgICAgIGtleXdvcmRzOiB7YnVpbHRfaW46IEJVSUxUSU5TfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICctPidcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBBTk5PVEFUSU9OID0geyBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAW0EtWmEtel0rJyB9O1xuXG4gIC8vIHVzZWQgaW4gc3RyaW5ncyBmb3IgZXNjYXBpbmcvaW50ZXJwb2xhdGlvbi9zdWJzdGl0dXRpb25cbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFxcXCRbQS1aYS16MC05X10rJ30sXG4gICAgICB7YmVnaW46ICdcXFxcJHsnLCBlbmQ6ICd9J31cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1thLXpdK1wiJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1thLXpdK1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbU1VCU1RdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXVxuXG4gIH07XG5cbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFwnXFxcXHdbXFxcXHdcXFxcZF9dKig/IVxcJyknXG4gIH07XG5cbiAgdmFyIFRZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW0EtWmEtejAtOV9dKicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIE5BTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiAvW14wLTlcXG5cXHQgXCInKCksLmB7fVxcW1xcXTo7XVteXFxuXFx0IFwiJygpLC5ge31cXFtcXF06O10rfFteMC05XFxuXFx0IFwiJygpLC5ge31cXFtcXF06Oz1dLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgQ0xBU1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBvYmplY3QgdHJhaXQgdHlwZScsXG4gICAgZW5kOiAvWzo9e1xcW1xcbjtdLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdleHRlbmRzIHdpdGgnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcWy8sXG4gICAgICAgIGVuZDogL1xcXS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1RZUEVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1RZUEVdXG4gICAgICB9LFxuICAgICAgTkFNRVxuICAgIF1cbiAgfTtcblxuICB2YXIgTUVUSE9EID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZGVmJyxcbiAgICBlbmQ6IC9bOj17XFxbKFxcbjtdLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbTkFNRV1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBudWxsJyxcbiAgICAgIGtleXdvcmQ6ICd0eXBlIHlpZWxkIGxhenkgb3ZlcnJpZGUgZGVmIHdpdGggdmFsIHZhciBzZWFsZWQgYWJzdHJhY3QgcHJpdmF0ZSB0cmFpdCBvYmplY3QgaWYgZm9yU29tZSBmb3Igd2hpbGUgdGhyb3cgZmluYWxseSBwcm90ZWN0ZWQgZXh0ZW5kcyBpbXBvcnQgZmluYWwgcmV0dXJuIGVsc2UgYnJlYWsgbmV3IGNhdGNoIHN1cGVyIGNsYXNzIGNhc2UgcGFja2FnZSBkZWZhdWx0IHRyeSB0aGlzIG1hdGNoIGNvbnRpbnVlIHRocm93cyBpbXBsaWNpdCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgU1RSSU5HLFxuICAgICAgU1lNQk9MLFxuICAgICAgVFlQRSxcbiAgICAgIE1FVEhPRCxcbiAgICAgIENMQVNTLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgQU5OT1RBVElPTlxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTQ0hFTUVfSURFTlRfUkUgPSAnW15cXFxcKFxcXFwpXFxcXFtcXFxcXVxcXFx7XFxcXH1cIixcXCdgOyN8XFxcXFxcXFxcXFxcc10rJztcbiAgdmFyIFNDSEVNRV9TSU1QTEVfTlVNQkVSX1JFID0gJyhcXFxcLXxcXFxcKyk/XFxcXGQrKFsuL11cXFxcZCspPyc7XG4gIHZhciBTQ0hFTUVfQ09NUExFWF9OVU1CRVJfUkUgPSBTQ0hFTUVfU0lNUExFX05VTUJFUl9SRSArICdbK1xcXFwtXScgKyBTQ0hFTUVfU0lNUExFX05VTUJFUl9SRSArICdpJztcbiAgdmFyIEJVSUxUSU5TID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgJ2Nhc2UtbGFtYmRhIGNhbGwvY2MgY2xhc3MgZGVmaW5lLWNsYXNzIGV4aXQtaGFuZGxlciBmaWVsZCBpbXBvcnQgJyArXG4gICAgICAnaW5oZXJpdCBpbml0LWZpZWxkIGludGVyZmFjZSBsZXQqLXZhbHVlcyBsZXQtdmFsdWVzIGxldC9lYyBtaXhpbiAnICtcbiAgICAgICdvcHQtbGFtYmRhIG92ZXJyaWRlIHByb3RlY3QgcHJvdmlkZSBwdWJsaWMgcmVuYW1lIHJlcXVpcmUgJyArXG4gICAgICAncmVxdWlyZS1mb3Itc3ludGF4IHN5bnRheCBzeW50YXgtY2FzZSBzeW50YXgtZXJyb3IgdW5pdC9zaWcgdW5sZXNzICcgK1xuICAgICAgJ3doZW4gd2l0aC1zeW50YXggYW5kIGJlZ2luIGNhbGwtd2l0aC1jdXJyZW50LWNvbnRpbnVhdGlvbiAnICtcbiAgICAgICdjYWxsLXdpdGgtaW5wdXQtZmlsZSBjYWxsLXdpdGgtb3V0cHV0LWZpbGUgY2FzZSBjb25kIGRlZmluZSAnICtcbiAgICAgICdkZWZpbmUtc3ludGF4IGRlbGF5IGRvIGR5bmFtaWMtd2luZCBlbHNlIGZvci1lYWNoIGlmIGxhbWJkYSBsZXQgbGV0KiAnICtcbiAgICAgICdsZXQtc3ludGF4IGxldHJlYyBsZXRyZWMtc3ludGF4IG1hcCBvciBzeW50YXgtcnVsZXMgXFwnICogKyAsICxAIC0gLi4uIC8gJyArXG4gICAgICAnOyA8IDw9ID0gPT4gPiA+PSBgIGFicyBhY29zIGFuZ2xlIGFwcGVuZCBhcHBseSBhc2luIGFzc29jIGFzc3EgYXNzdiBhdGFuICcgK1xuICAgICAgJ2Jvb2xlYW4/IGNhYXIgY2FkciBjYWxsLXdpdGgtaW5wdXQtZmlsZSBjYWxsLXdpdGgtb3V0cHV0LWZpbGUgJyArXG4gICAgICAnY2FsbC13aXRoLXZhbHVlcyBjYXIgY2RkZGFyIGNkZGRkciBjZHIgY2VpbGluZyBjaGFyLT5pbnRlZ2VyICcgK1xuICAgICAgJ2NoYXItYWxwaGFiZXRpYz8gY2hhci1jaTw9PyBjaGFyLWNpPD8gY2hhci1jaT0/IGNoYXItY2k+PT8gY2hhci1jaT4/ICcgK1xuICAgICAgJ2NoYXItZG93bmNhc2UgY2hhci1sb3dlci1jYXNlPyBjaGFyLW51bWVyaWM/IGNoYXItcmVhZHk/IGNoYXItdXBjYXNlICcgK1xuICAgICAgJ2NoYXItdXBwZXItY2FzZT8gY2hhci13aGl0ZXNwYWNlPyBjaGFyPD0/IGNoYXI8PyBjaGFyPT8gY2hhcj49PyBjaGFyPj8gJyArXG4gICAgICAnY2hhcj8gY2xvc2UtaW5wdXQtcG9ydCBjbG9zZS1vdXRwdXQtcG9ydCBjb21wbGV4PyBjb25zIGNvcyAnICtcbiAgICAgICdjdXJyZW50LWlucHV0LXBvcnQgY3VycmVudC1vdXRwdXQtcG9ydCBkZW5vbWluYXRvciBkaXNwbGF5IGVvZi1vYmplY3Q/ICcgK1xuICAgICAgJ2VxPyBlcXVhbD8gZXF2PyBldmFsIGV2ZW4/IGV4YWN0LT5pbmV4YWN0IGV4YWN0PyBleHAgZXhwdCBmbG9vciAnICtcbiAgICAgICdmb3JjZSBnY2QgaW1hZy1wYXJ0IGluZXhhY3QtPmV4YWN0IGluZXhhY3Q/IGlucHV0LXBvcnQ/IGludGVnZXItPmNoYXIgJyArXG4gICAgICAnaW50ZWdlcj8gaW50ZXJhY3Rpb24tZW52aXJvbm1lbnQgbGNtIGxlbmd0aCBsaXN0IGxpc3QtPnN0cmluZyAnICtcbiAgICAgICdsaXN0LT52ZWN0b3IgbGlzdC1yZWYgbGlzdC10YWlsIGxpc3Q/IGxvYWQgbG9nIG1hZ25pdHVkZSBtYWtlLXBvbGFyICcgK1xuICAgICAgJ21ha2UtcmVjdGFuZ3VsYXIgbWFrZS1zdHJpbmcgbWFrZS12ZWN0b3IgbWF4IG1lbWJlciBtZW1xIG1lbXYgbWluICcgK1xuICAgICAgJ21vZHVsbyBuZWdhdGl2ZT8gbmV3bGluZSBub3QgbnVsbC1lbnZpcm9ubWVudCBudWxsPyBudW1iZXItPnN0cmluZyAnICtcbiAgICAgICdudW1iZXI/IG51bWVyYXRvciBvZGQ/IG9wZW4taW5wdXQtZmlsZSBvcGVuLW91dHB1dC1maWxlIG91dHB1dC1wb3J0PyAnICtcbiAgICAgICdwYWlyPyBwZWVrLWNoYXIgcG9ydD8gcG9zaXRpdmU/IHByb2NlZHVyZT8gcXVhc2lxdW90ZSBxdW90ZSBxdW90aWVudCAnICtcbiAgICAgICdyYXRpb25hbD8gcmF0aW9uYWxpemUgcmVhZCByZWFkLWNoYXIgcmVhbC1wYXJ0IHJlYWw/IHJlbWFpbmRlciByZXZlcnNlICcgK1xuICAgICAgJ3JvdW5kIHNjaGVtZS1yZXBvcnQtZW52aXJvbm1lbnQgc2V0ISBzZXQtY2FyISBzZXQtY2RyISBzaW4gc3FydCBzdHJpbmcgJyArXG4gICAgICAnc3RyaW5nLT5saXN0IHN0cmluZy0+bnVtYmVyIHN0cmluZy0+c3ltYm9sIHN0cmluZy1hcHBlbmQgc3RyaW5nLWNpPD0/ICcgK1xuICAgICAgJ3N0cmluZy1jaTw/IHN0cmluZy1jaT0/IHN0cmluZy1jaT49PyBzdHJpbmctY2k+PyBzdHJpbmctY29weSAnICtcbiAgICAgICdzdHJpbmctZmlsbCEgc3RyaW5nLWxlbmd0aCBzdHJpbmctcmVmIHN0cmluZy1zZXQhIHN0cmluZzw9PyBzdHJpbmc8PyAnICtcbiAgICAgICdzdHJpbmc9PyBzdHJpbmc+PT8gc3RyaW5nPj8gc3RyaW5nPyBzdWJzdHJpbmcgc3ltYm9sLT5zdHJpbmcgc3ltYm9sPyAnICtcbiAgICAgICd0YW4gdHJhbnNjcmlwdC1vZmYgdHJhbnNjcmlwdC1vbiB0cnVuY2F0ZSB2YWx1ZXMgdmVjdG9yICcgK1xuICAgICAgJ3ZlY3Rvci0+bGlzdCB2ZWN0b3ItZmlsbCEgdmVjdG9yLWxlbmd0aCB2ZWN0b3ItcmVmIHZlY3Rvci1zZXQhICcgK1xuICAgICAgJ3dpdGgtaW5wdXQtZnJvbS1maWxlIHdpdGgtb3V0cHV0LXRvLWZpbGUgd3JpdGUgd3JpdGUtY2hhciB6ZXJvPydcbiAgfTtcblxuICB2YXIgU0hFQkFORyA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ14jIScsXG4gICAgZW5kOiAnJCdcbiAgfTtcblxuICB2YXIgTElURVJBTCA9IHtcbiAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICBiZWdpbjogJygjdHwjZnwjXFxcXFxcXFwnICsgU0NIRU1FX0lERU5UX1JFICsgJ3wjXFxcXFxcXFwuKSdcbiAgfTtcblxuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IFNDSEVNRV9TSU1QTEVfTlVNQkVSX1JFLCByZWxldmFuY2U6IDAgfSxcbiAgICAgIHsgYmVnaW46IFNDSEVNRV9DT01QTEVYX05VTUJFUl9SRSwgcmVsZXZhbmNlOiAwIH0sXG4gICAgICB7IGJlZ2luOiAnI2JbMC0xXSsoL1swLTFdKyk/JyB9LFxuICAgICAgeyBiZWdpbjogJyNvWzAtN10rKC9bMC03XSspPycgfSxcbiAgICAgIHsgYmVnaW46ICcjeFswLTlhLWZdKygvWzAtOWEtZl0rKT8nIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IGhsanMuUVVPVEVfU1RSSU5HX01PREU7XG5cbiAgdmFyIFJFR1VMQVJfRVhQUkVTU0lPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgIGJlZ2luOiAnI1twcl14XCInLFxuICAgIGVuZDogJ1teXFxcXFxcXFxdXCInXG4gIH07XG5cbiAgdmFyIENPTU1FTlRfTU9ERVMgPSBbXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJzsnLFxuICAgICAgJyQnLFxuICAgICAge1xuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVCgnI1xcXFx8JywgJ1xcXFx8IycpXG4gIF07XG5cbiAgdmFyIElERU5UID0ge1xuICAgIGJlZ2luOiBTQ0hFTUVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFFVT1RFRF9JREVOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFwnJyArIFNDSEVNRV9JREVOVF9SRVxuICB9O1xuXG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBRVU9URURfTElTVCA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogLycvIH0sXG4gICAgICB7IGJlZ2luOiAnYCcgfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZicsIExJVEVSQUwsIFNUUklORywgTlVNQkVSLCBJREVOVCwgUVVPVEVEX0lERU5UXVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTkFNRSA9IHtcbiAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICBiZWdpbjogU0NIRU1FX0lERU5UX1JFLFxuICAgIGxleGVtZXM6IFNDSEVNRV9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogQlVJTFRJTlNcbiAgfTtcblxuICB2YXIgTEFNQkRBID0ge1xuICAgIGJlZ2luOiAvbGFtYmRhLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOQU1FLFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbSURFTlRdLFxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTElTVCA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknIH0sXG4gICAgICB7IGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXScgfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtMQU1CREEsIE5BTUUsIEJPRFldXG4gIH07XG5cbiAgQk9EWS5jb250YWlucyA9IFtMSVRFUkFMLCBOVU1CRVIsIFNUUklORywgSURFTlQsIFFVT1RFRF9JREVOVCwgUVVPVEVEX0xJU1QsIExJU1RdLmNvbmNhdChDT01NRU5UX01PREVTKTtcblxuICByZXR1cm4ge1xuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbU0hFQkFORywgTlVNQkVSLCBTVFJJTkcsIFFVT1RFRF9JREVOVCwgUVVPVEVEX0xJU1QsIExJU1RdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQ09NTU9OX0NPTlRBSU5TID0gW1xuICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcXCd8XFxcIicsIGVuZDogJ1xcJ3xcXFwiJyxcbiAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCB7YmVnaW46ICdcXCdcXCcnfV1cbiAgICB9XG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3NjaSddLFxuICAgIGxleGVtZXM6IC8lP1xcdysvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYWJvcnQgYnJlYWsgY2FzZSBjbGVhciBjYXRjaCBjb250aW51ZSBkbyBlbHNlaWYgZWxzZSBlbmRmdW5jdGlvbiBlbmQgZm9yIGZ1bmN0aW9uICcrXG4gICAgICAgICdnbG9iYWwgaWYgcGF1c2UgcmV0dXJuIHJlc3VtZSBzZWxlY3QgdHJ5IHRoZW4gd2hpbGUnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJyVmICVGICV0ICVUICVwaSAlZXBzICVpbmYgJW5hbiAlZSAlaSAleiAlcycsXG4gICAgICBidWlsdF9pbjogLy8gU2NpbGFiIGhhcyBtb3JlIHRoYW4gMjAwMCBmdW5jdGlvbnMuIEp1c3QgbGlzdCB0aGUgbW9zdCBjb21tb25zXG4gICAgICAgJ2FicyBhbmQgYWNvcyBhc2luIGF0YW4gY2VpbCBjZCBjaGRpciBjbGVhcmdsb2JhbCBjb3NoIGNvcyBjdW1wcm9kIGRlZmYgZGlzcCBlcnJvciAnK1xuICAgICAgICdleGVjIGV4ZWNzdHIgZXhpc3RzIGV4cCBleWUgZ2V0dGV4dCBmbG9vciBmcHJpbnRmIGZyZWFkIGZzb2x2ZSBpbWFnIGlzZGVmIGlzZW1wdHkgJytcbiAgICAgICAnaXNpbmZpc25hbiBpc3ZlY3RvciBsYXN0ZXJyb3IgbGVuZ3RoIGxvYWQgbGluc3BhY2UgbGlzdCBsaXN0ZmlsZXMgbG9nMTAgbG9nMiBsb2cgJytcbiAgICAgICAnbWF4IG1pbiBtc3ByaW50ZiBtY2xvc2UgbW9wZW4gb25lcyBvciBwYXRoY29udmVydCBwb2x5IHByaW50ZiBwcm9kIHB3ZCByYW5kIHJlYWwgJytcbiAgICAgICAncm91bmQgc2luaCBzaW4gc2l6ZSBnc29ydCBzcHJpbnRmIHNxcnQgc3RyY2F0IHN0cmNtcHMgdHJpbmcgc3VtIHN5c3RlbSB0YW5oIHRhbiAnK1xuICAgICAgICd0eXBlIHR5cGVuYW1lIHdhcm5pbmcgemVyb3MgbWF0cml4J1xuICAgIH0sXG4gICAgaWxsZWdhbDogJyhcInwjfC9cXFxcKnxcXFxccysvXFxcXHcrKScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbYS16QS1aX11bYS16QS1aXzAtOV0qKFxcJytbXFxcXC5cXCddKnxbXFxcXC5cXCddKyknLCBlbmQ6ICcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXVxcJypbXFxcXC5cXCddKicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IENPTU1PTl9DT05UQUlOU1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnLy8nLCAnJCcpXG4gICAgXS5jb25jYXQoQ09NTU9OX0NPTlRBSU5TKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVotXVthLXpBLVowLTlfLV0qJztcbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogJyhcXFxcJCcgKyBJREVOVF9SRSArICcpXFxcXGInXG4gIH07XG4gIHZhciBIRVhDT0xPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJyNbMC05QS1GYS1mXSsnXG4gIH07XG4gIHZhciBERUZfSU5URVJOQUxTID0ge1xuICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgYmVnaW46ICdbQS1aXFxcXF9cXFxcLlxcXFwtXSsnLCBlbmQ6ICc6JyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbXlxcXFxzXScsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIEhFWENPTE9SLFxuICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIWltcG9ydGFudCdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbPS98XFwnXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJywgYmVnaW46ICdcXFxcI1tBLVphLXowLTlfLV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsIGJlZ2luOiAnXFxcXC5bQS1aYS16MC05Xy1dKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItYXR0cicsIGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgICAgIGlsbGVnYWw6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItdGFnJywgLy8gYmVnaW46IElERU5UX1JFLCBlbmQ6ICdbLHxcXFxcc10nXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoYXxhYmJyfGFjcm9ueW18YWRkcmVzc3xhcmVhfGFydGljbGV8YXNpZGV8YXVkaW98YnxiYXNlfGJpZ3xibG9ja3F1b3RlfGJvZHl8YnJ8YnV0dG9ufGNhbnZhc3xjYXB0aW9ufGNpdGV8Y29kZXxjb2x8Y29sZ3JvdXB8Y29tbWFuZHxkYXRhbGlzdHxkZHxkZWx8ZGV0YWlsc3xkZm58ZGl2fGRsfGR0fGVtfGVtYmVkfGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fChoWzEtNl0pfGhlYWR8aGVhZGVyfGhncm91cHxocnxodG1sfGl8aWZyYW1lfGltZ3xpbnB1dHxpbnN8a2JkfGtleWdlbnxsYWJlbHxsZWdlbmR8bGl8bGlua3xtYXB8bWFya3xtZXRhfG1ldGVyfG5hdnxub2ZyYW1lc3xub3NjcmlwdHxvYmplY3R8b2x8b3B0Z3JvdXB8b3B0aW9ufG91dHB1dHxwfHBhcmFtfHByZXxwcm9ncmVzc3xxfHJwfHJ0fHJ1Ynl8c2FtcHxzY3JpcHR8c2VjdGlvbnxzZWxlY3R8c21hbGx8c3BhbnxzdHJpa2V8c3Ryb25nfHN0eWxlfHN1YnxzdXB8dGFibGV8dGJvZHl8dGR8dGV4dGFyZWF8dGZvb3R8dGh8dGhlYWR8dGltZXx0aXRsZXx0cnx0dHx1bHx2YXJ8dmlkZW8pXFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnOih2aXNpdGVkfHZhbGlkfHJvb3R8cmlnaHR8cmVxdWlyZWR8cmVhZC13cml0ZXxyZWFkLW9ubHl8b3V0LXJhbmdlfG9wdGlvbmFsfG9ubHktb2YtdHlwZXxvbmx5LWNoaWxkfG50aC1vZi10eXBlfG50aC1sYXN0LW9mLXR5cGV8bnRoLWxhc3QtY2hpbGR8bnRoLWNoaWxkfG5vdHxsaW5rfGxlZnR8bGFzdC1vZi10eXBlfGxhc3QtY2hpbGR8bGFuZ3xpbnZhbGlkfGluZGV0ZXJtaW5hdGV8aW4tcmFuZ2V8aG92ZXJ8Zm9jdXN8Zmlyc3Qtb2YtdHlwZXxmaXJzdC1saW5lfGZpcnN0LWxldHRlcnxmaXJzdC1jaGlsZHxmaXJzdHxlbmFibGVkfGVtcHR5fGRpc2FibGVkfGRlZmF1bHR8Y2hlY2tlZHxiZWZvcmV8YWZ0ZXJ8YWN0aXZlKSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnOjooYWZ0ZXJ8YmVmb3JlfGNob2ljZXN8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8cmVwZWF0LWluZGV4fHJlcGVhdC1pdGVtfHNlbGVjdGlvbnx2YWx1ZSknXG4gICAgICB9LFxuICAgICAgVkFSSUFCTEUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoei1pbmRleHx3b3JkLXdyYXB8d29yZC1zcGFjaW5nfHdvcmQtYnJlYWt8d2lkdGh8d2lkb3dzfHdoaXRlLXNwYWNlfHZpc2liaWxpdHl8dmVydGljYWwtYWxpZ258dW5pY29kZS1iaWRpfHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi1kdXJhdGlvbnx0cmFuc2l0aW9uLWRlbGF5fHRyYW5zaXRpb258dHJhbnNmb3JtLXN0eWxlfHRyYW5zZm9ybS1vcmlnaW58dHJhbnNmb3JtfHRvcHx0ZXh0LXVuZGVybGluZS1wb3NpdGlvbnx0ZXh0LXRyYW5zZm9ybXx0ZXh0LXNoYWRvd3x0ZXh0LXJlbmRlcmluZ3x0ZXh0LW92ZXJmbG93fHRleHQtaW5kZW50fHRleHQtZGVjb3JhdGlvbi1zdHlsZXx0ZXh0LWRlY29yYXRpb24tbGluZXx0ZXh0LWRlY29yYXRpb24tY29sb3J8dGV4dC1kZWNvcmF0aW9ufHRleHQtYWxpZ24tbGFzdHx0ZXh0LWFsaWdufHRhYi1zaXplfHRhYmxlLWxheW91dHxyaWdodHxyZXNpemV8cXVvdGVzfHBvc2l0aW9ufHBvaW50ZXItZXZlbnRzfHBlcnNwZWN0aXZlLW9yaWdpbnxwZXJzcGVjdGl2ZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWFmdGVyfHBhZGRpbmctdG9wfHBhZGRpbmctcmlnaHR8cGFkZGluZy1sZWZ0fHBhZGRpbmctYm90dG9tfHBhZGRpbmd8b3ZlcmZsb3cteXxvdmVyZmxvdy14fG92ZXJmbG93LXdyYXB8b3ZlcmZsb3d8b3V0bGluZS13aWR0aHxvdXRsaW5lLXN0eWxlfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtY29sb3J8b3V0bGluZXxvcnBoYW5zfG9yZGVyfG9wYWNpdHl8b2JqZWN0LXBvc2l0aW9ufG9iamVjdC1maXR8bm9ybWFsfG5vbmV8bmF2LXVwfG5hdi1yaWdodHxuYXYtbGVmdHxuYXYtaW5kZXh8bmF2LWRvd258bWluLXdpZHRofG1pbi1oZWlnaHR8bWF4LXdpZHRofG1heC1oZWlnaHR8bWFza3xtYXJrc3xtYXJnaW4tdG9wfG1hcmdpbi1yaWdodHxtYXJnaW4tbGVmdHxtYXJnaW4tYm90dG9tfG1hcmdpbnxsaXN0LXN0eWxlLXR5cGV8bGlzdC1zdHlsZS1wb3NpdGlvbnxsaXN0LXN0eWxlLWltYWdlfGxpc3Qtc3R5bGV8bGluZS1oZWlnaHR8bGV0dGVyLXNwYWNpbmd8bGVmdHxqdXN0aWZ5LWNvbnRlbnR8aW5pdGlhbHxpbmhlcml0fGltZS1tb2RlfGltYWdlLW9yaWVudGF0aW9ufGltYWdlLXJlc29sdXRpb258aW1hZ2UtcmVuZGVyaW5nfGljb258aHlwaGVuc3xoZWlnaHR8Zm9udC13ZWlnaHR8Zm9udC12YXJpYW50LWxpZ2F0dXJlc3xmb250LXZhcmlhbnR8Zm9udC1zdHlsZXxmb250LXN0cmV0Y2h8Zm9udC1zaXplLWFkanVzdHxmb250LXNpemV8Zm9udC1sYW5ndWFnZS1vdmVycmlkZXxmb250LWtlcm5pbmd8Zm9udC1mZWF0dXJlLXNldHRpbmdzfGZvbnQtZmFtaWx5fGZvbnR8ZmxvYXR8ZmxleC13cmFwfGZsZXgtc2hyaW5rfGZsZXgtZ3Jvd3xmbGV4LWZsb3d8ZmxleC1kaXJlY3Rpb258ZmxleC1iYXNpc3xmbGV4fGZpbHRlcnxlbXB0eS1jZWxsc3xkaXNwbGF5fGRpcmVjdGlvbnxjdXJzb3J8Y291bnRlci1yZXNldHxjb3VudGVyLWluY3JlbWVudHxjb250ZW50fGNvbHVtbi13aWR0aHxjb2x1bW4tc3Bhbnxjb2x1bW4tcnVsZS13aWR0aHxjb2x1bW4tcnVsZS1zdHlsZXxjb2x1bW4tcnVsZS1jb2xvcnxjb2x1bW4tcnVsZXxjb2x1bW4tZ2FwfGNvbHVtbi1maWxsfGNvbHVtbi1jb3VudHxjb2x1bW5zfGNvbG9yfGNsaXAtcGF0aHxjbGlwfGNsZWFyfGNhcHRpb24tc2lkZXxicmVhay1pbnNpZGV8YnJlYWstYmVmb3JlfGJyZWFrLWFmdGVyfGJveC1zaXppbmd8Ym94LXNoYWRvd3xib3gtZGVjb3JhdGlvbi1icmVha3xib3R0b218Ym9yZGVyLXdpZHRofGJvcmRlci10b3Atd2lkdGh8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXJpZ2h0LXJhZGl1c3xib3JkZXItdG9wLWxlZnQtcmFkaXVzfGJvcmRlci10b3AtY29sb3J8Ym9yZGVyLXRvcHxib3JkZXItc3R5bGV8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXJpZ2h0LXdpZHRofGJvcmRlci1yaWdodC1zdHlsZXxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0fGJvcmRlci1yYWRpdXN8Ym9yZGVyLWxlZnQtd2lkdGh8Ym9yZGVyLWxlZnQtc3R5bGV8Ym9yZGVyLWxlZnQtY29sb3J8Ym9yZGVyLWxlZnR8Ym9yZGVyLWltYWdlLXdpZHRofGJvcmRlci1pbWFnZS1zb3VyY2V8Ym9yZGVyLWltYWdlLXNsaWNlfGJvcmRlci1pbWFnZS1yZXBlYXR8Ym9yZGVyLWltYWdlLW91dHNldHxib3JkZXItaW1hZ2V8Ym9yZGVyLWNvbG9yfGJvcmRlci1jb2xsYXBzZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1ib3R0b20tc3R5bGV8Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c3xib3JkZXItYm90dG9tLWNvbG9yfGJvcmRlci1ib3R0b218Ym9yZGVyfGJhY2tncm91bmQtc2l6ZXxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kLXBvc2l0aW9ufGJhY2tncm91bmQtb3JpZ2lufGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1jb2xvcnxiYWNrZ3JvdW5kLWNsaXB8YmFja2dyb3VuZC1hdHRhY2htZW50fGJhY2tncm91bmQtYmxlbmQtbW9kZXxiYWNrZ3JvdW5kfGJhY2tmYWNlLXZpc2liaWxpdHl8YXV0b3xhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9ufGFuaW1hdGlvbi1wbGF5LXN0YXRlfGFuaW1hdGlvbi1uYW1lfGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnR8YW5pbWF0aW9uLWZpbGwtbW9kZXxhbmltYXRpb24tZHVyYXRpb258YW5pbWF0aW9uLWRpcmVjdGlvbnxhbmltYXRpb24tZGVsYXl8YW5pbWF0aW9ufGFsaWduLXNlbGZ8YWxpZ24taXRlbXN8YWxpZ24tY29udGVudClcXFxcYicsXG4gICAgICAgIGlsbGVnYWw6ICdbXlxcXFxzXSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGIod2hpdGVzcGFjZXx3YWl0fHctcmVzaXplfHZpc2libGV8dmVydGljYWwtdGV4dHx2ZXJ0aWNhbC1pZGVvZ3JhcGhpY3x1cHBlcmNhc2V8dXBwZXItcm9tYW58dXBwZXItYWxwaGF8dW5kZXJsaW5lfHRyYW5zcGFyZW50fHRvcHx0aGlufHRoaWNrfHRleHR8dGV4dC10b3B8dGV4dC1ib3R0b218dGItcmx8dGFibGUtaGVhZGVyLWdyb3VwfHRhYmxlLWZvb3Rlci1ncm91cHxzdy1yZXNpemV8c3VwZXJ8c3RyaWN0fHN0YXRpY3xzcXVhcmV8c29saWR8c21hbGwtY2Fwc3xzZXBhcmF0ZXxzZS1yZXNpemV8c2Nyb2xsfHMtcmVzaXplfHJ0bHxyb3ctcmVzaXplfHJpZGdlfHJpZ2h0fHJlcGVhdHxyZXBlYXQteXxyZXBlYXQteHxyZWxhdGl2ZXxwcm9ncmVzc3xwb2ludGVyfG92ZXJsaW5lfG91dHNpZGV8b3V0c2V0fG9ibGlxdWV8bm93cmFwfG5vdC1hbGxvd2VkfG5vcm1hbHxub25lfG53LXJlc2l6ZXxuby1yZXBlYXR8bm8tZHJvcHxuZXdzcGFwZXJ8bmUtcmVzaXplfG4tcmVzaXplfG1vdmV8bWlkZGxlfG1lZGl1bXxsdHJ8bHItdGJ8bG93ZXJjYXNlfGxvd2VyLXJvbWFufGxvd2VyLWFscGhhfGxvb3NlfGxpc3QtaXRlbXxsaW5lfGxpbmUtdGhyb3VnaHxsaW5lLWVkZ2V8bGlnaHRlcnxsZWZ0fGtlZXAtYWxsfGp1c3RpZnl8aXRhbGljfGludGVyLXdvcmR8aW50ZXItaWRlb2dyYXBofGluc2lkZXxpbnNldHxpbmxpbmV8aW5saW5lLWJsb2NrfGluaGVyaXR8aW5hY3RpdmV8aWRlb2dyYXBoLXNwYWNlfGlkZW9ncmFwaC1wYXJlbnRoZXNpc3xpZGVvZ3JhcGgtbnVtZXJpY3xpZGVvZ3JhcGgtYWxwaGF8aG9yaXpvbnRhbHxoaWRkZW58aGVscHxoYW5kfGdyb292ZXxmaXhlZHxlbGxpcHNpc3xlLXJlc2l6ZXxkb3VibGV8ZG90dGVkfGRpc3RyaWJ1dGV8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlLWxldHRlcnxkaXN0cmlidXRlLWFsbC1saW5lc3xkaXNjfGRpc2FibGVkfGRlZmF1bHR8ZGVjaW1hbHxkYXNoZWR8Y3Jvc3NoYWlyfGNvbGxhcHNlfGNvbC1yZXNpemV8Y2lyY2xlfGNoYXJ8Y2VudGVyfGNhcGl0YWxpemV8YnJlYWstd29yZHxicmVhay1hbGx8Ym90dG9tfGJvdGh8Ym9sZGVyfGJvbGR8YmxvY2t8YmlkaS1vdmVycmlkZXxiZWxvd3xiYXNlbGluZXxhdXRvfGFsd2F5c3xhbGwtc2Nyb2xsfGFic29sdXRlfHRhYmxlfHRhYmxlLWNlbGwpXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzonLCBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBIRVhDT0xPUixcbiAgICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICchaW1wb3J0YW50J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdAJywgZW5kOiAnW3s7XScsXG4gICAgICAgIGtleXdvcmRzOiAnbWl4aW4gaW5jbHVkZSBleHRlbmQgZm9yIGlmIGVsc2UgZWFjaCB3aGlsZSBjaGFyc2V0IGltcG9ydCBkZWJ1ZyBtZWRpYSBwYWdlIGNvbnRlbnQgZm9udC1mYWNlIG5hbWVzcGFjZSB3YXJuJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBIRVhDT0xPUixcbiAgICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxzW0EtWmEtejAtOV8uLV0rJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjb25zb2xlJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzezAsM31bXFxcXHdcXFxcZFxcXFxbXFxcXF0oKUAtXSpbPiUkI10nLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6ICckJywgc3ViTGFuZ3VhZ2U6ICdiYXNoJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIHNtYWxpX2luc3RyX2xvd19wcmlvID0gWydhZGQnLCAnYW5kJywgJ2NtcCcsICdjbXBnJywgJ2NtcGwnLCAnY29uc3QnLCAnZGl2JywgJ2RvdWJsZScsICdmbG9hdCcsICdnb3RvJywgJ2lmJywgJ2ludCcsICdsb25nJywgJ21vdmUnLCAnbXVsJywgJ25lZycsICduZXcnLCAnbm9wJywgJ25vdCcsICdvcicsICdyZW0nLCAncmV0dXJuJywgJ3NobCcsICdzaHInLCAnc3B1dCcsICdzdWInLCAndGhyb3cnLCAndXNocicsICd4b3InXTtcbiAgdmFyIHNtYWxpX2luc3RyX2hpZ2hfcHJpbyA9IFsnYWdldCcsICdhcHV0JywgJ2FycmF5JywgJ2NoZWNrJywgJ2V4ZWN1dGUnLCAnZmlsbCcsICdmaWxsZWQnLCAnZ290by8xNicsICdnb3RvLzMyJywgJ2lnZXQnLCAnaW5zdGFuY2UnLCAnaW52b2tlJywgJ2lwdXQnLCAnbW9uaXRvcicsICdwYWNrZWQnLCAnc2dldCcsICdzcGFyc2UnXTtcbiAgdmFyIHNtYWxpX2tleXdvcmRzID0gWyd0cmFuc2llbnQnLCAnY29uc3RydWN0b3InLCAnYWJzdHJhY3QnLCAnZmluYWwnLCAnc3ludGhldGljJywgJ3B1YmxpYycsICdwcml2YXRlJywgJ3Byb3RlY3RlZCcsICdzdGF0aWMnLCAnYnJpZGdlJywgJ3N5c3RlbSddO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc21hbGknXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcjJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJ1xcXFxzKlxcXFwuZW5kXFxcXHNbYS16QS1aMC05XSonfSxcbiAgICAgICAgICB7YmVnaW46ICdeWyBdKlxcXFwuW2EtekEtWl0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICdcXFxcczpbYS16QS1aXzAtOV0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICdcXFxccygnICsgc21hbGlfa2V5d29yZHMuam9pbignfCcpICsgJyknfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIHZhcmlhbnRzIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHMoJytzbWFsaV9pbnN0cl9sb3dfcHJpby5qb2luKCd8JykrJylcXFxccydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHMoJytzbWFsaV9pbnN0cl9sb3dfcHJpby5qb2luKCd8JykrJykoKFxcXFwtfC8pW2EtekEtWjAtOV0rKStcXFxccycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxzKCcrc21hbGlfaW5zdHJfaGlnaF9wcmlvLmpvaW4oJ3wnKSsnKSgoXFxcXC18LylbYS16QS1aMC05XSspKlxcXFxzJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luOiAnTFteXFwoOzpcXG5dKjsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW3ZwXVswLTldKycsXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUl9JREVOVF9SRSA9ICdbYS16XVthLXpBLVowLTlfXSonO1xuICB2YXIgQ0hBUiA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXCQuezF9J1xuICB9O1xuICB2YXIgU1lNQk9MID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICcjJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc3QnXSxcbiAgICBrZXl3b3JkczogJ3NlbGYgc3VwZXIgbmlsIHRydWUgZmFsc2UgdGhpc0NvbnRleHQnLCAvLyBvbmx5IDZcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdcIicsICdcIicpLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYltBLVpdW0EtWmEtejAtOV9dKicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFZBUl9JREVOVF9SRSArICc6JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgU1lNQk9MLFxuICAgICAgQ0hBUixcbiAgICAgIHtcbiAgICAgICAgLy8gVGhpcyBsb29rcyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gbmVlZGVkIHRvIGF2b2lkIGNvbWJpbmF0b3JpYWxcbiAgICAgICAgLy8gZXhwbG9zaW9uIHVuZGVyIFY4LiBJdCBlZmZlY3RpdmVseSBtZWFucyBgfCB2YXIxIHZhcjIgLi4uIHxgIHdpdGhcbiAgICAgICAgLy8gd2hpdGVzcGFjZSBhZGphY2VudCB0byBgfGAgYmVpbmcgb3B0aW9uYWwuXG4gICAgICAgIGJlZ2luOiAnXFxcXHxbIF0qJyArIFZBUl9JREVOVF9SRSArICcoWyBdKycgKyBWQVJfSURFTlRfUkUgKyAnKSpbIF0qXFxcXHwnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvXFx8LyxcbiAgICAgICAgaWxsZWdhbDogL1xcUy8sXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnKFxcXFx8WyBdKik/JyArIFZBUl9JREVOVF9SRX1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwjXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIENIQVIsXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIFNZTUJPTFxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21sJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8qIGFjY29yZGluZyB0byBEZWZpbml0aW9uIG9mIFN0YW5kYXJkIE1MIDk3ICAqL1xuICAgICAgICAnYWJzdHlwZSBhbmQgYW5kYWxzbyBhcyBjYXNlIGRhdGF0eXBlIGRvIGVsc2UgZW5kIGVxdHlwZSAnICtcbiAgICAgICAgJ2V4Y2VwdGlvbiBmbiBmdW4gZnVuY3RvciBoYW5kbGUgaWYgaW4gaW5jbHVkZSBpbmZpeCBpbmZpeHIgJyArXG4gICAgICAgICdsZXQgbG9jYWwgbm9uZml4IG9mIG9wIG9wZW4gb3JlbHNlIHJhaXNlIHJlYyBzaGFyaW5nIHNpZyAnICtcbiAgICAgICAgJ3NpZ25hdHVyZSBzdHJ1Y3Qgc3RydWN0dXJlIHRoZW4gdHlwZSB2YWwgd2l0aCB3aXRodHlwZSB3aGVyZSB3aGlsZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLyogYnVpbHQtaW4gdHlwZXMgYWNjb3JkaW5nIHRvIGJhc2lzIGxpYnJhcnkgKi9cbiAgICAgICAgJ2FycmF5IGJvb2wgY2hhciBleG4gaW50IGxpc3Qgb3B0aW9uIG9yZGVyIHJlYWwgcmVmIHN0cmluZyBzdWJzdHJpbmcgdmVjdG9yIHVuaXQgd29yZCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBOT05FIFNPTUUgTEVTUyBFUVVBTCBHUkVBVEVSIG5pbCdcbiAgICB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXC98Pj4vLFxuICAgIGxleGVtZXM6ICdbYS16X11cXFxcdyohPycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAvXFxbKFxcfFxcfCk/XFxdfFxcKFxcKS8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1xcXFwoXFxcXConLFxuICAgICAgICAnXFxcXCpcXFxcKScsXG4gICAgICAgIHtcbiAgICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHsgLyogdHlwZSB2YXJpYWJsZSAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogJ1xcJ1tBLVphLXpfXSg/IVxcJylbXFxcXHdcXCddKidcbiAgICAgICAgLyogdGhlIGdyYW1tYXIgaXMgYW1iaWd1b3VzIG9uIGhvdyAnYSdiIHNob3VsZCBiZSBpbnRlcnByZXRlZCBidXQgbm90IHRoZSBjb21waWxlciAqL1xuICAgICAgfSxcbiAgICAgIHsgLyogcG9seW1vcnBoaWMgdmFyaWFudCAqL1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdgW0EtWl1bXFxcXHdcXCddKidcbiAgICAgIH0sXG4gICAgICB7IC8qIG1vZHVsZSBvciBjb25zdHJ1Y3RvciAqL1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFwnXSonLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8qIGRvbid0IGNvbG9yIGlkZW50aWZpZXJzLCBidXQgc2FmZWx5IGNhdGNoIGFsbCBpZGVudGlmaWVycyB3aXRoICcqL1xuICAgICAgICBiZWdpbjogJ1thLXpfXVxcXFx3KlxcJ1tcXFxcd1xcJ10qJ1xuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjpcbiAgICAgICAgICAnXFxcXGIoMFt4WF1bYS1mQS1GMC05X10rW0xsbl0/fCcgK1xuICAgICAgICAgICcwW29PXVswLTdfXStbTGxuXT98JyArXG4gICAgICAgICAgJzBbYkJdWzAxX10rW0xsbl0/fCcgK1xuICAgICAgICAgICdbMC05XVswLTlfXSooW0xsbl18KFxcXFwuWzAtOV9dKik/KFtlRV1bLStdP1swLTlfXSspPyk/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9bLT1dPi8gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ1BQID0gaGxqcy5nZXRMYW5ndWFnZSgnY3BwJykuZXhwb3J0cztcblxuICAvLyBJbiBTUUYsIGEgdmFyaWFibGUgc3RhcnQgd2l0aCBfXG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXGJfK1thLXpBLVpfXVxcdyovXG4gIH07XG5cbiAgLy8gSW4gU1FGLCBhIGZ1bmN0aW9uIHNob3VsZCBmaXQgbXlUYWdfZm5jX215RnVuY3Rpb24gcGF0dGVyblxuICAvLyBodHRwczovL2NvbW11bml0eS5iaXN0dWRpby5jb20vd2lraS9GdW5jdGlvbnNfTGlicmFyeV8oQXJtYV8zKSNBZGRpbmdfYV9GdW5jdGlvblxuICB2YXIgRlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiAvW2EtekEtWl1bYS16QS1aMC05XStfZm5jX1xcdyovXG4gIH07XG5cbiAgLy8gSW4gU1FGIHN0cmluZ3MsIHF1b3RlcyBtYXRjaGluZyB0aGUgc3RhcnQgYXJlIGVzY2FwZWQgYnkgYWRkaW5nIGEgY29uc2VjdXRpdmUuXG4gIC8vIEV4YW1wbGUgb2Ygc2luZ2xlIGVzY2FwZWQgcXVvdGVzOiBcIiBcIlwiIFwiIGFuZCAgJyAnJyAnLlxuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIicsIHJlbGV2YW5jZTogMH1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJywgcmVsZXZhbmNlOiAwfV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3NxZiddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdjYXNlIGNhdGNoIGRlZmF1bHQgZG8gZWxzZSBleGl0IGV4aXRXaXRoIGZvciBmb3JFYWNoIGZyb20gaWYgJyArXG4gICAgICAgICdzd2l0Y2ggdGhlbiB0aHJvdyB0byB0cnkgd2FpdFVudGlsIHdoaWxlIHdpdGgnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdhYnMgYWNjVGltZSBhY29zIGFjdGlvbiBhY3Rpb25JRHMgYWN0aW9uS2V5cyBhY3Rpb25LZXlzSW1hZ2VzIGFjdGlvbktleXNOYW1lcyAnICtcbiAgICAgICAgJ2FjdGlvbktleXNOYW1lc0FycmF5IGFjdGlvbk5hbWUgYWN0aW9uUGFyYW1zIGFjdGl2YXRlQWRkb25zIGFjdGl2YXRlZEFkZG9ucyBhY3RpdmF0ZUtleSAnICtcbiAgICAgICAgJ2FkZDNERU5Db25uZWN0aW9uIGFkZDNERU5FdmVudEhhbmRsZXIgYWRkM0RFTkxheWVyIGFkZEFjdGlvbiBhZGRCYWNrcGFjayBhZGRCYWNrcGFja0NhcmdvICcgK1xuICAgICAgICAnYWRkQmFja3BhY2tDYXJnb0dsb2JhbCBhZGRCYWNrcGFja0dsb2JhbCBhZGRDYW1TaGFrZSBhZGRDdXJhdG9yQWRkb25zIGFkZEN1cmF0b3JDYW1lcmFBcmVhICcgK1xuICAgICAgICAnYWRkQ3VyYXRvckVkaXRhYmxlT2JqZWN0cyBhZGRDdXJhdG9yRWRpdGluZ0FyZWEgYWRkQ3VyYXRvclBvaW50cyBhZGRFZGl0b3JPYmplY3QgYWRkRXZlbnRIYW5kbGVyICcgK1xuICAgICAgICAnYWRkR29nZ2xlcyBhZGRHcm91cEljb24gYWRkSGFuZGd1bkl0ZW0gYWRkSGVhZGdlYXIgYWRkSXRlbSBhZGRJdGVtQ2FyZ28gYWRkSXRlbUNhcmdvR2xvYmFsICcgK1xuICAgICAgICAnYWRkSXRlbVBvb2wgYWRkSXRlbVRvQmFja3BhY2sgYWRkSXRlbVRvVW5pZm9ybSBhZGRJdGVtVG9WZXN0IGFkZExpdmVTdGF0cyBhZGRNYWdhemluZSAnICtcbiAgICAgICAgJ2FkZE1hZ2F6aW5lQW1tb0NhcmdvIGFkZE1hZ2F6aW5lQ2FyZ28gYWRkTWFnYXppbmVDYXJnb0dsb2JhbCBhZGRNYWdhemluZUdsb2JhbCBhZGRNYWdhemluZVBvb2wgJyArXG4gICAgICAgICdhZGRNYWdhemluZXMgYWRkTWFnYXppbmVUdXJyZXQgYWRkTWVudSBhZGRNZW51SXRlbSBhZGRNaXNzaW9uRXZlbnRIYW5kbGVyIGFkZE1QRXZlbnRIYW5kbGVyICcgK1xuICAgICAgICAnYWRkTXVzaWNFdmVudEhhbmRsZXIgYWRkT3duZWRNaW5lIGFkZFBsYXllclNjb3JlcyBhZGRQcmltYXJ5V2VhcG9uSXRlbSAnICtcbiAgICAgICAgJ2FkZFB1YmxpY1ZhcmlhYmxlRXZlbnRIYW5kbGVyIGFkZFJhdGluZyBhZGRSZXNvdXJjZXMgYWRkU2NvcmUgYWRkU2NvcmVTaWRlIGFkZFNlY29uZGFyeVdlYXBvbkl0ZW0gJyArXG4gICAgICAgICdhZGRTd2l0Y2hhYmxlVW5pdCBhZGRUZWFtTWVtYmVyIGFkZFRvUmVtYWluc0NvbGxlY3RvciBhZGRVbmlmb3JtIGFkZFZlaGljbGUgYWRkVmVzdCBhZGRXYXlwb2ludCAnICtcbiAgICAgICAgJ2FkZFdlYXBvbiBhZGRXZWFwb25DYXJnbyBhZGRXZWFwb25DYXJnb0dsb2JhbCBhZGRXZWFwb25HbG9iYWwgYWRkV2VhcG9uSXRlbSBhZGRXZWFwb25Qb29sICcgK1xuICAgICAgICAnYWRkV2VhcG9uVHVycmV0IGFnZW50IGFnZW50cyBBR0xUb0FTTCBhaW1lZEF0VGFyZ2V0IGFpbVBvcyBhaXJEZW5zaXR5UlREIGFpcnBvcnRTaWRlICcgK1xuICAgICAgICAnQUlTRmluaXNoSGVhbCBhbGl2ZSBhbGwzREVORW50aXRpZXMgYWxsQ29udHJvbHMgYWxsQ3VyYXRvcnMgYWxsQ3V0TGF5ZXJzIGFsbERlYWQgYWxsRGVhZE1lbiAnICtcbiAgICAgICAgJ2FsbERpc3BsYXlzIGFsbEdyb3VwcyBhbGxNYXBNYXJrZXJzIGFsbE1pbmVzIGFsbE1pc3Npb25PYmplY3RzIGFsbG93M0RNb2RlIGFsbG93Q3Jld0luSW1tb2JpbGUgJyArXG4gICAgICAgICdhbGxvd0N1cmF0b3JMb2dpY0lnbm9yZUFyZWFzIGFsbG93RGFtYWdlIGFsbG93RGFtbWFnZSBhbGxvd0ZpbGVPcGVyYXRpb25zIGFsbG93RmxlZWluZyBhbGxvd0dldEluICcgK1xuICAgICAgICAnYWxsb3dTcHJpbnQgYWxsUGxheWVycyBhbGxTaXRlcyBhbGxUdXJyZXRzIGFsbFVuaXRzIGFsbFVuaXRzVUFWIGFsbFZhcmlhYmxlcyBhbW1vIGFuZCBhbmltYXRlICcgK1xuICAgICAgICAnYW5pbWF0ZURvb3IgYW5pbWF0ZVNvdXJjZSBhbmltYXRpb25OYW1lcyBhbmltYXRpb25QaGFzZSBhbmltYXRpb25Tb3VyY2VQaGFzZSBhbmltYXRpb25TdGF0ZSAnICtcbiAgICAgICAgJ2FwcGVuZCBhcHBseSBhcm1vcnlQb2ludHMgYXJyYXlJbnRlcnNlY3QgYXNpbiBBU0xUb0FHTCBBU0xUb0FUTCBhc3NlcnQgYXNzaWduQXNDYXJnbyAnICtcbiAgICAgICAgJ2Fzc2lnbkFzQ2FyZ29JbmRleCBhc3NpZ25Bc0NvbW1hbmRlciBhc3NpZ25Bc0RyaXZlciBhc3NpZ25Bc0d1bm5lciBhc3NpZ25Bc1R1cnJldCBhc3NpZ25DdXJhdG9yICcgK1xuICAgICAgICAnYXNzaWduZWRDYXJnbyBhc3NpZ25lZENvbW1hbmRlciBhc3NpZ25lZERyaXZlciBhc3NpZ25lZEd1bm5lciBhc3NpZ25lZEl0ZW1zIGFzc2lnbmVkVGFyZ2V0ICcgK1xuICAgICAgICAnYXNzaWduZWRUZWFtIGFzc2lnbmVkVmVoaWNsZSBhc3NpZ25lZFZlaGljbGVSb2xlIGFzc2lnbkl0ZW0gYXNzaWduVGVhbSBhc3NpZ25Ub0FpcnBvcnQgYXRhbiBhdGFuMiAnICtcbiAgICAgICAgJ2F0ZyBBVExUb0FTTCBhdHRhY2hlZE9iamVjdCBhdHRhY2hlZE9iamVjdHMgYXR0YWNoZWRUbyBhdHRhY2hPYmplY3QgYXR0YWNoVG8gYXR0YWNrRW5hYmxlZCAnICtcbiAgICAgICAgJ2JhY2twYWNrIGJhY2twYWNrQ2FyZ28gYmFja3BhY2tDb250YWluZXIgYmFja3BhY2tJdGVtcyBiYWNrcGFja01hZ2F6aW5lcyBiYWNrcGFja1NwYWNlRm9yICcgK1xuICAgICAgICAnYmVoYXZpb3VyIGJlbmNobWFyayBiaW5vY3VsYXIgYmx1Zm9yIGJvdW5kaW5nQm94IGJvdW5kaW5nQm94UmVhbCBib3VuZGluZ0NlbnRlciBicmVha091dCBicmVha1RvICcgK1xuICAgICAgICAnYnJpZWZpbmdOYW1lIGJ1aWxkaW5nRXhpdCBidWlsZGluZ1BvcyBidXR0b25BY3Rpb24gYnV0dG9uU2V0QWN0aW9uIGNhZGV0TW9kZSBjYWxsIGNhbGxFeHRlbnNpb24gJyArXG4gICAgICAgICdjYW1Db21tYW5kIGNhbUNvbW1pdCBjYW1Db21taXRQcmVwYXJlZCBjYW1Db21taXR0ZWQgY2FtQ29uc3R1Y3Rpb25TZXRQYXJhbXMgY2FtQ3JlYXRlIGNhbURlc3Ryb3kgJyArXG4gICAgICAgICdjYW1lcmFFZmZlY3QgY2FtZXJhRWZmZWN0RW5hYmxlSFVEIGNhbWVyYUludGVyZXN0IGNhbWVyYU9uIGNhbWVyYVZpZXcgY2FtcGFpZ25Db25maWdGaWxlICcgK1xuICAgICAgICAnY2FtUHJlbG9hZCBjYW1QcmVsb2FkZWQgY2FtUHJlcGFyZUJhbmsgY2FtUHJlcGFyZURpciBjYW1QcmVwYXJlRGl2ZSBjYW1QcmVwYXJlRm9jdXMgY2FtUHJlcGFyZUZvdiAnICtcbiAgICAgICAgJ2NhbVByZXBhcmVGb3ZSYW5nZSBjYW1QcmVwYXJlUG9zIGNhbVByZXBhcmVSZWxQb3MgY2FtUHJlcGFyZVRhcmdldCBjYW1TZXRCYW5rIGNhbVNldERpciAnICtcbiAgICAgICAgJ2NhbVNldERpdmUgY2FtU2V0Rm9jdXMgY2FtU2V0Rm92IGNhbVNldEZvdlJhbmdlIGNhbVNldFBvcyBjYW1TZXRSZWxQb3MgY2FtU2V0VGFyZ2V0IGNhbVRhcmdldCAnICtcbiAgICAgICAgJ2NhbVVzZU5WRyBjYW5BZGQgY2FuQWRkSXRlbVRvQmFja3BhY2sgY2FuQWRkSXRlbVRvVW5pZm9ybSBjYW5BZGRJdGVtVG9WZXN0ICcgK1xuICAgICAgICAnY2FuY2VsU2ltcGxlVGFza0Rlc3RpbmF0aW9uIGNhbkZpcmUgY2FuTW92ZSBjYW5TbGluZ0xvYWQgY2FuU3RhbmQgY2FuU3VzcGVuZCBjYW5VbmxvYWRJbkNvbWJhdCAnICtcbiAgICAgICAgJ2NhblZlaGljbGVDYXJnbyBjYXB0aXZlIGNhcHRpdmVOdW0gY2JDaGVja2VkIGNiU2V0Q2hlY2tlZCBjZWlsIGNoYW5uZWxFbmFibGVkIGNoZWF0c0VuYWJsZWQgJyArXG4gICAgICAgICdjaGVja0FJRmVhdHVyZSBjaGVja1Zpc2liaWxpdHkgY2l2aWxpYW4gY2xhc3NOYW1lIGNsZWFyQWxsSXRlbXNGcm9tQmFja3BhY2sgY2xlYXJCYWNrcGFja0NhcmdvICcgK1xuICAgICAgICAnY2xlYXJCYWNrcGFja0NhcmdvR2xvYmFsIGNsZWFyR3JvdXBJY29ucyBjbGVhckl0ZW1DYXJnbyBjbGVhckl0ZW1DYXJnb0dsb2JhbCBjbGVhckl0ZW1Qb29sICcgK1xuICAgICAgICAnY2xlYXJNYWdhemluZUNhcmdvIGNsZWFyTWFnYXppbmVDYXJnb0dsb2JhbCBjbGVhck1hZ2F6aW5lUG9vbCBjbGVhck92ZXJsYXkgY2xlYXJSYWRpbyAnICtcbiAgICAgICAgJ2NsZWFyV2VhcG9uQ2FyZ28gY2xlYXJXZWFwb25DYXJnb0dsb2JhbCBjbGVhcldlYXBvblBvb2wgY2xpZW50T3duZXIgY2xvc2VEaWFsb2cgY2xvc2VEaXNwbGF5ICcgK1xuICAgICAgICAnY2xvc2VPdmVybGF5IGNvbGxhcHNlT2JqZWN0VHJlZSBjb2xsZWN0M0RFTkhpc3RvcnkgY29tYmF0TW9kZSBjb21tYW5kQXJ0aWxsZXJ5RmlyZSBjb21tYW5kQ2hhdCAnICtcbiAgICAgICAgJ2NvbW1hbmRlciBjb21tYW5kRmlyZSBjb21tYW5kRm9sbG93IGNvbW1hbmRGU00gY29tbWFuZEdldE91dCBjb21tYW5kaW5nTWVudSBjb21tYW5kTW92ZSAnICtcbiAgICAgICAgJ2NvbW1hbmRSYWRpbyBjb21tYW5kU3RvcCBjb21tYW5kU3VwcHJlc3NpdmVGaXJlIGNvbW1hbmRUYXJnZXQgY29tbWFuZFdhdGNoIGNvbW1lbnQgY29tbWl0T3ZlcmxheSAnICtcbiAgICAgICAgJ2NvbXBpbGUgY29tcGlsZUZpbmFsIGNvbXBsZXRlZEZTTSBjb21wb3NlVGV4dCBjb25maWdDbGFzc2VzIGNvbmZpZ0ZpbGUgY29uZmlnSGllcmFyY2h5IGNvbmZpZ05hbWUgJyArXG4gICAgICAgICdjb25maWdOdWxsIGNvbmZpZ1Byb3BlcnRpZXMgY29uZmlnU291cmNlQWRkb25MaXN0IGNvbmZpZ1NvdXJjZU1vZCBjb25maWdTb3VyY2VNb2RMaXN0ICcgK1xuICAgICAgICAnY29ubmVjdFRlcm1pbmFsVG9VQVYgY29udHJvbE51bGwgY29udHJvbHNHcm91cEN0cmwgY29weUZyb21DbGlwYm9hcmQgY29weVRvQ2xpcGJvYXJkICcgK1xuICAgICAgICAnY29weVdheXBvaW50cyBjb3MgY291bnQgY291bnRFbmVteSBjb3VudEZyaWVuZGx5IGNvdW50U2lkZSBjb3VudFR5cGUgY291bnRVbmtub3duICcgK1xuICAgICAgICAnY3JlYXRlM0RFTkNvbXBvc2l0aW9uIGNyZWF0ZTNERU5FbnRpdHkgY3JlYXRlQWdlbnQgY3JlYXRlQ2VudGVyIGNyZWF0ZURpYWxvZyBjcmVhdGVEaWFyeUxpbmsgJyArXG4gICAgICAgICdjcmVhdGVEaWFyeVJlY29yZCBjcmVhdGVEaWFyeVN1YmplY3QgY3JlYXRlRGlzcGxheSBjcmVhdGVHZWFyRGlhbG9nIGNyZWF0ZUdyb3VwICcgK1xuICAgICAgICAnY3JlYXRlR3VhcmRlZFBvaW50IGNyZWF0ZUxvY2F0aW9uIGNyZWF0ZU1hcmtlciBjcmVhdGVNYXJrZXJMb2NhbCBjcmVhdGVNZW51IGNyZWF0ZU1pbmUgJyArXG4gICAgICAgICdjcmVhdGVNaXNzaW9uRGlzcGxheSBjcmVhdGVNUENhbXBhaWduRGlzcGxheSBjcmVhdGVTaW1wbGVPYmplY3QgY3JlYXRlU2ltcGxlVGFzayBjcmVhdGVTaXRlICcgK1xuICAgICAgICAnY3JlYXRlU291bmRTb3VyY2UgY3JlYXRlVGFzayBjcmVhdGVUZWFtIGNyZWF0ZVRyaWdnZXIgY3JlYXRlVW5pdCBjcmVhdGVWZWhpY2xlIGNyZWF0ZVZlaGljbGVDcmV3ICcgK1xuICAgICAgICAnY3JlYXRlVmVoaWNsZUxvY2FsIGNyZXcgY3RybEFjdGl2YXRlIGN0cmxBZGRFdmVudEhhbmRsZXIgY3RybEFuZ2xlIGN0cmxBdXRvU2Nyb2xsRGVsYXkgJyArXG4gICAgICAgICdjdHJsQXV0b1Njcm9sbFJld2luZCBjdHJsQXV0b1Njcm9sbFNwZWVkIGN0cmxDaGVja2VkIGN0cmxDbGFzc05hbWUgY3RybENvbW1pdCBjdHJsQ29tbWl0dGVkICcgK1xuICAgICAgICAnY3RybENyZWF0ZSBjdHJsRGVsZXRlIGN0cmxFbmFibGUgY3RybEVuYWJsZWQgY3RybEZhZGUgY3RybEhUTUxMb2FkZWQgY3RybElEQyBjdHJsSUREICcgK1xuICAgICAgICAnY3RybE1hcEFuaW1BZGQgY3RybE1hcEFuaW1DbGVhciBjdHJsTWFwQW5pbUNvbW1pdCBjdHJsTWFwQW5pbURvbmUgY3RybE1hcEN1cnNvciBjdHJsTWFwTW91c2VPdmVyICcgK1xuICAgICAgICAnY3RybE1hcFNjYWxlIGN0cmxNYXBTY3JlZW5Ub1dvcmxkIGN0cmxNYXBXb3JsZFRvU2NyZWVuIGN0cmxNb2RlbCBjdHJsTW9kZWxEaXJBbmRVcCBjdHJsTW9kZWxTY2FsZSAnICtcbiAgICAgICAgJ2N0cmxQYXJlbnQgY3RybFBhcmVudENvbnRyb2xzR3JvdXAgY3RybFBvc2l0aW9uIGN0cmxSZW1vdmVBbGxFdmVudEhhbmRsZXJzIGN0cmxSZW1vdmVFdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdjdHJsU2NhbGUgY3RybFNldEFjdGl2ZUNvbG9yIGN0cmxTZXRBbmdsZSBjdHJsU2V0QXV0b1Njcm9sbERlbGF5IGN0cmxTZXRBdXRvU2Nyb2xsUmV3aW5kICcgK1xuICAgICAgICAnY3RybFNldEF1dG9TY3JvbGxTcGVlZCBjdHJsU2V0QmFja2dyb3VuZENvbG9yIGN0cmxTZXRDaGVja2VkIGN0cmxTZXRFdmVudEhhbmRsZXIgY3RybFNldEZhZGUgJyArXG4gICAgICAgICdjdHJsU2V0Rm9jdXMgY3RybFNldEZvbnQgY3RybFNldEZvbnRIMSBjdHJsU2V0Rm9udEgxQiBjdHJsU2V0Rm9udEgyIGN0cmxTZXRGb250SDJCIGN0cmxTZXRGb250SDMgJyArXG4gICAgICAgICdjdHJsU2V0Rm9udEgzQiBjdHJsU2V0Rm9udEg0IGN0cmxTZXRGb250SDRCIGN0cmxTZXRGb250SDUgY3RybFNldEZvbnRINUIgY3RybFNldEZvbnRINiAnICtcbiAgICAgICAgJ2N0cmxTZXRGb250SDZCIGN0cmxTZXRGb250SGVpZ2h0IGN0cmxTZXRGb250SGVpZ2h0SDEgY3RybFNldEZvbnRIZWlnaHRIMiBjdHJsU2V0Rm9udEhlaWdodEgzICcgK1xuICAgICAgICAnY3RybFNldEZvbnRIZWlnaHRINCBjdHJsU2V0Rm9udEhlaWdodEg1IGN0cmxTZXRGb250SGVpZ2h0SDYgY3RybFNldEZvbnRIZWlnaHRTZWNvbmRhcnkgJyArXG4gICAgICAgICdjdHJsU2V0Rm9udFAgY3RybFNldEZvbnRQQiBjdHJsU2V0Rm9udFNlY29uZGFyeSBjdHJsU2V0Rm9yZWdyb3VuZENvbG9yIGN0cmxTZXRNb2RlbCAnICtcbiAgICAgICAgJ2N0cmxTZXRNb2RlbERpckFuZFVwIGN0cmxTZXRNb2RlbFNjYWxlIGN0cmxTZXRQb3NpdGlvbiBjdHJsU2V0U2NhbGUgY3RybFNldFN0cnVjdHVyZWRUZXh0ICcgK1xuICAgICAgICAnY3RybFNldFRleHQgY3RybFNldFRleHRDb2xvciBjdHJsU2V0VG9vbHRpcCBjdHJsU2V0VG9vbHRpcENvbG9yQm94IGN0cmxTZXRUb29sdGlwQ29sb3JTaGFkZSAnICtcbiAgICAgICAgJ2N0cmxTZXRUb29sdGlwQ29sb3JUZXh0IGN0cmxTaG93IGN0cmxTaG93biBjdHJsVGV4dCBjdHJsVGV4dEhlaWdodCBjdHJsVHlwZSBjdHJsVmlzaWJsZSAnICtcbiAgICAgICAgJ2N1cmF0b3JBZGRvbnMgY3VyYXRvckNhbWVyYSBjdXJhdG9yQ2FtZXJhQXJlYSBjdXJhdG9yQ2FtZXJhQXJlYUNlaWxpbmcgY3VyYXRvckNvZWYgJyArXG4gICAgICAgICdjdXJhdG9yRWRpdGFibGVPYmplY3RzIGN1cmF0b3JFZGl0aW5nQXJlYSBjdXJhdG9yRWRpdGluZ0FyZWFUeXBlIGN1cmF0b3JNb3VzZU92ZXIgY3VyYXRvclBvaW50cyAnICtcbiAgICAgICAgJ2N1cmF0b3JSZWdpc3RlcmVkT2JqZWN0cyBjdXJhdG9yU2VsZWN0ZWQgY3VyYXRvcldheXBvaW50Q29zdCBjdXJyZW50M0RFTk9wZXJhdGlvbiBjdXJyZW50Q2hhbm5lbCAnICtcbiAgICAgICAgJ2N1cnJlbnRDb21tYW5kIGN1cnJlbnRNYWdhemluZSBjdXJyZW50TWFnYXppbmVEZXRhaWwgY3VycmVudE1hZ2F6aW5lRGV0YWlsVHVycmV0ICcgK1xuICAgICAgICAnY3VycmVudE1hZ2F6aW5lVHVycmV0IGN1cnJlbnRNdXp6bGUgY3VycmVudE5hbWVzcGFjZSBjdXJyZW50VGFzayBjdXJyZW50VGFza3MgY3VycmVudFRocm93YWJsZSAnICtcbiAgICAgICAgJ2N1cnJlbnRWaXNpb25Nb2RlIGN1cnJlbnRXYXlwb2ludCBjdXJyZW50V2VhcG9uIGN1cnJlbnRXZWFwb25Nb2RlIGN1cnJlbnRXZWFwb25UdXJyZXQgJyArXG4gICAgICAgICdjdXJyZW50WmVyb2luZyBjdXJzb3JPYmplY3QgY3Vyc29yVGFyZ2V0IGN1c3RvbUNoYXQgY3VzdG9tUmFkaW8gY3V0RmFkZU91dCBjdXRPYmogY3V0UnNjIGN1dFRleHQgJyArXG4gICAgICAgICdkYW1hZ2UgZGF0ZSBkYXRlVG9OdW1iZXIgZGF5dGltZSBkZUFjdGl2YXRlS2V5IGRlYnJpZWZpbmdUZXh0IGRlYnVnRlNNIGRlYnVnTG9nIGRlZyAnICtcbiAgICAgICAgJ2RlbGV0ZTNERU5FbnRpdGllcyBkZWxldGVBdCBkZWxldGVDZW50ZXIgZGVsZXRlQ29sbGVjdGlvbiBkZWxldGVFZGl0b3JPYmplY3QgZGVsZXRlR3JvdXAgJyArXG4gICAgICAgICdkZWxldGVJZGVudGl0eSBkZWxldGVMb2NhdGlvbiBkZWxldGVNYXJrZXIgZGVsZXRlTWFya2VyTG9jYWwgZGVsZXRlUmFuZ2UgZGVsZXRlUmVzb3VyY2VzICcgK1xuICAgICAgICAnZGVsZXRlU2l0ZSBkZWxldGVTdGF0dXMgZGVsZXRlVGVhbSBkZWxldGVWZWhpY2xlIGRlbGV0ZVZlaGljbGVDcmV3IGRlbGV0ZVdheXBvaW50IGRldGFjaCAnICtcbiAgICAgICAgJ2RldGVjdGVkTWluZXMgZGlhZ19hY3RpdmVNaXNzaW9uRlNNcyBkaWFnX2FjdGl2ZVNjcmlwdHMgZGlhZ19hY3RpdmVTUUZTY3JpcHRzICcgK1xuICAgICAgICAnZGlhZ19hY3RpdmVTUVNTY3JpcHRzIGRpYWdfY2FwdHVyZUZyYW1lIGRpYWdfY2FwdHVyZVNsb3dGcmFtZSBkaWFnX2NvZGVQZXJmb3JtYW5jZSBkaWFnX2RyYXdNb2RlICcgK1xuICAgICAgICAnZGlhZ19lbmFibGUgZGlhZ19lbmFibGVkIGRpYWdfZnBzIGRpYWdfZnBzTWluIGRpYWdfZnJhbWVObyBkaWFnX2xpc3QgZGlhZ19sb2cgZGlhZ19sb2dTbG93RnJhbWUgJyArXG4gICAgICAgICdkaWFnX21lcmdlQ29uZmlnRmlsZSBkaWFnX3JlY29yZFR1cnJldExpbWl0cyBkaWFnX3RpY2tUaW1lIGRpYWdfdG9nZ2xlIGRpYWxvZyBkaWFyeVN1YmplY3RFeGlzdHMgJyArXG4gICAgICAgICdkaWRKSVAgZGlkSklQT3duZXIgZGlmZmljdWx0eSBkaWZmaWN1bHR5RW5hYmxlZCBkaWZmaWN1bHR5RW5hYmxlZFJURCBkaWZmaWN1bHR5T3B0aW9uIGRpcmVjdGlvbiAnICtcbiAgICAgICAgJ2RpcmVjdFNheSBkaXNhYmxlQUkgZGlzYWJsZUNvbGxpc2lvbldpdGggZGlzYWJsZUNvbnZlcnNhdGlvbiBkaXNhYmxlRGVicmllZmluZ1N0YXRzICcgK1xuICAgICAgICAnZGlzYWJsZU5WR0VxdWlwbWVudCBkaXNhYmxlUmVtb3RlU2Vuc29ycyBkaXNhYmxlU2VyaWFsaXphdGlvbiBkaXNhYmxlVElFcXVpcG1lbnQgJyArXG4gICAgICAgICdkaXNhYmxlVUFWQ29ubmVjdGFiaWxpdHkgZGlzYWJsZVVzZXJJbnB1dCBkaXNwbGF5QWRkRXZlbnRIYW5kbGVyIGRpc3BsYXlDdHJsIGRpc3BsYXlOdWxsICcgK1xuICAgICAgICAnZGlzcGxheVBhcmVudCBkaXNwbGF5UmVtb3ZlQWxsRXZlbnRIYW5kbGVycyBkaXNwbGF5UmVtb3ZlRXZlbnRIYW5kbGVyIGRpc3BsYXlTZXRFdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdkaXNzb2x2ZVRlYW0gZGlzdGFuY2UgZGlzdGFuY2UyRCBkaXN0YW5jZVNxciBkaXN0cmlidXRpb25SZWdpb24gZG8zREVOQWN0aW9uIGRvQXJ0aWxsZXJ5RmlyZSAnICtcbiAgICAgICAgJ2RvRmlyZSBkb0ZvbGxvdyBkb0ZTTSBkb0dldE91dCBkb01vdmUgZG9vclBoYXNlIGRvU3RvcCBkb1N1cHByZXNzaXZlRmlyZSBkb1RhcmdldCBkb1dhdGNoICcgK1xuICAgICAgICAnZHJhd0Fycm93IGRyYXdFbGxpcHNlIGRyYXdJY29uIGRyYXdJY29uM0QgZHJhd0xpbmUgZHJhd0xpbmUzRCBkcmF3TGluayBkcmF3TG9jYXRpb24gZHJhd1BvbHlnb24gJyArXG4gICAgICAgICdkcmF3UmVjdGFuZ2xlIGRyaXZlciBkcm9wIGVhc3QgZWNobyBlZGl0M0RFTk1pc3Npb25BdHRyaWJ1dGVzIGVkaXRPYmplY3QgZWRpdG9yU2V0RXZlbnRIYW5kbGVyICcgK1xuICAgICAgICAnZWZmZWN0aXZlQ29tbWFuZGVyIGVtcHR5UG9zaXRpb25zIGVuYWJsZUFJIGVuYWJsZUFJRmVhdHVyZSBlbmFibGVBaW1QcmVjaXNpb24gZW5hYmxlQXR0YWNrICcgK1xuICAgICAgICAnZW5hYmxlQXVkaW9GZWF0dXJlIGVuYWJsZUNhbVNoYWtlIGVuYWJsZUNhdXN0aWNzIGVuYWJsZUNoYW5uZWwgZW5hYmxlQ29sbGlzaW9uV2l0aCBlbmFibGVDb3BpbG90ICcgK1xuICAgICAgICAnZW5hYmxlRGVicmllZmluZ1N0YXRzIGVuYWJsZURpYWdMZWdlbmQgZW5hYmxlRW5kRGlhbG9nIGVuYWJsZUVuZ2luZUFydGlsbGVyeSBlbmFibGVFbnZpcm9ubWVudCAnICtcbiAgICAgICAgJ2VuYWJsZUZhdGlndWUgZW5hYmxlR3VuTGlnaHRzIGVuYWJsZUlSTGFzZXJzIGVuYWJsZU1pbWljcyBlbmFibGVQZXJzb25UdXJyZXQgZW5hYmxlUmFkaW8gJyArXG4gICAgICAgICdlbmFibGVSZWxvYWQgZW5hYmxlUm9wZUF0dGFjaCBlbmFibGVTYXROb3JtYWxPbkRldGFpbCBlbmFibGVTYXZpbmcgZW5hYmxlU2VudGVuY2VzICcgK1xuICAgICAgICAnZW5hYmxlU2ltdWxhdGlvbiBlbmFibGVTaW11bGF0aW9uR2xvYmFsIGVuYWJsZVN0YW1pbmEgZW5hYmxlVGVhbVN3aXRjaCBlbmFibGVVQVZDb25uZWN0YWJpbGl0eSAnICtcbiAgICAgICAgJ2VuYWJsZVVBVldheXBvaW50cyBlbmFibGVWZWhpY2xlQ2FyZ28gZW5kTG9hZGluZ1NjcmVlbiBlbmRNaXNzaW9uIGVuZ2luZU9uIGVuZ2luZXNJc09uUlREICcgK1xuICAgICAgICAnZW5naW5lc1JwbVJURCBlbmdpbmVzVG9ycXVlUlREIGVudGl0aWVzIGVzdGltYXRlZEVuZFNlcnZlclRpbWUgZXN0aW1hdGVkVGltZUxlZnQgJyArXG4gICAgICAgICdldmFsT2JqZWN0QXJndW1lbnQgZXZlcnlCYWNrcGFjayBldmVyeUNvbnRhaW5lciBleGVjIGV4ZWNFZGl0b3JTY3JpcHQgZXhlY0ZTTSBleGVjVk0gZXhwICcgK1xuICAgICAgICAnZXhwZWN0ZWREZXN0aW5hdGlvbiBleHBvcnRKSVBNZXNzYWdlcyBleWVEaXJlY3Rpb24gZXllUG9zIGZhY2UgZmFjdGlvbiBmYWRlTXVzaWMgZmFkZVJhZGlvICcgK1xuICAgICAgICAnZmFkZVNvdW5kIGZhZGVTcGVlY2ggZmFpbE1pc3Npb24gZmlsbFdlYXBvbnNGcm9tUG9vbCBmaW5kIGZpbmRDb3ZlciBmaW5kRGlzcGxheSBmaW5kRWRpdG9yT2JqZWN0ICcgK1xuICAgICAgICAnZmluZEVtcHR5UG9zaXRpb24gZmluZEVtcHR5UG9zaXRpb25SZWFkeSBmaW5kTmVhcmVzdEVuZW15IGZpbmlzaE1pc3Npb25Jbml0IGZpbml0ZSBmaXJlICcgK1xuICAgICAgICAnZmlyZUF0VGFyZ2V0IGZpcnN0QmFja3BhY2sgZmxhZyBmbGFnT3duZXIgZmxhZ1NpZGUgZmxhZ1RleHR1cmUgZmxlZWluZyBmbG9vciBmbHlJbkhlaWdodCAnICtcbiAgICAgICAgJ2ZseUluSGVpZ2h0QVNMIGZvZyBmb2dGb3JlY2FzdCBmb2dQYXJhbXMgZm9yY2VBZGRVbmlmb3JtIGZvcmNlZE1hcCBmb3JjZUVuZCBmb3JjZU1hcCBmb3JjZVJlc3Bhd24gJyArXG4gICAgICAgICdmb3JjZVNwZWVkIGZvcmNlV2FsayBmb3JjZVdlYXBvbkZpcmUgZm9yY2VXZWF0aGVyQ2hhbmdlIGZvckVhY2hNZW1iZXIgZm9yRWFjaE1lbWJlckFnZW50ICcgK1xuICAgICAgICAnZm9yRWFjaE1lbWJlclRlYW0gZm9ybWF0IGZvcm1hdGlvbiBmb3JtYXRpb25EaXJlY3Rpb24gZm9ybWF0aW9uTGVhZGVyIGZvcm1hdGlvbk1lbWJlcnMgJyArXG4gICAgICAgICdmb3JtYXRpb25Qb3NpdGlvbiBmb3JtYXRpb25UYXNrIGZvcm1hdFRleHQgZm9ybUxlYWRlciBmcmVlTG9vayBmcm9tRWRpdG9yIGZ1ZWwgZnVsbENyZXcgJyArXG4gICAgICAgICdnZWFySURDQW1tb0NvdW50IGdlYXJTbG90QW1tb0NvdW50IGdlYXJTbG90RGF0YSBnZXQzREVOQWN0aW9uU3RhdGUgZ2V0M0RFTkF0dHJpYnV0ZSBnZXQzREVOQ2FtZXJhICcgK1xuICAgICAgICAnZ2V0M0RFTkNvbm5lY3Rpb25zIGdldDNERU5FbnRpdHkgZ2V0M0RFTkVudGl0eUlEIGdldDNERU5HcmlkIGdldDNERU5JY29uc1Zpc2libGUgJyArXG4gICAgICAgICdnZXQzREVOTGF5ZXJFbnRpdGllcyBnZXQzREVOTGluZXNWaXNpYmxlIGdldDNERU5NaXNzaW9uQXR0cmlidXRlIGdldDNERU5Nb3VzZU92ZXIgZ2V0M0RFTlNlbGVjdGVkICcgK1xuICAgICAgICAnZ2V0QWltaW5nQ29lZiBnZXRBbGxIaXRQb2ludHNEYW1hZ2UgZ2V0QWxsT3duZWRNaW5lcyBnZXRBbW1vQ2FyZ28gZ2V0QW5pbUFpbVByZWNpc2lvbiAnICtcbiAgICAgICAgJ2dldEFuaW1TcGVlZENvZWYgZ2V0QXJyYXkgZ2V0QXJ0aWxsZXJ5QW1tbyBnZXRBcnRpbGxlcnlDb21wdXRlclNldHRpbmdzIGdldEFydGlsbGVyeUVUQSAnICtcbiAgICAgICAgJ2dldEFzc2lnbmVkQ3VyYXRvckxvZ2ljIGdldEFzc2lnbmVkQ3VyYXRvclVuaXQgZ2V0QmFja3BhY2tDYXJnbyBnZXRCbGVlZGluZ1JlbWFpbmluZyAnICtcbiAgICAgICAgJ2dldEJ1cm5pbmdWYWx1ZSBnZXRDYW1lcmFWaWV3RGlyZWN0aW9uIGdldENhcmdvSW5kZXggZ2V0Q2VudGVyT2ZNYXNzIGdldENsaWVudFN0YXRlICcgK1xuICAgICAgICAnZ2V0Q2xpZW50U3RhdGVOdW1iZXIgZ2V0Q29ubmVjdGVkVUFWIGdldEN1c3RvbUFpbWluZ0NvZWYgZ2V0RGFtbWFnZSBnZXREZXNjcmlwdGlvbiBnZXREaXIgJyArXG4gICAgICAgICdnZXREaXJWaXN1YWwgZ2V0RExDcyBnZXRFZGl0b3JDYW1lcmEgZ2V0RWRpdG9yTW9kZSBnZXRFZGl0b3JPYmplY3RTY29wZSBnZXRFbGV2YXRpb25PZmZzZXQgJyArXG4gICAgICAgICdnZXRGYXRpZ3VlIGdldEZyaWVuZCBnZXRGU01WYXJpYWJsZSBnZXRGdWVsQ2FyZ28gZ2V0R3JvdXBJY29uIGdldEdyb3VwSWNvblBhcmFtcyBnZXRHcm91cEljb25zICcgK1xuICAgICAgICAnZ2V0SGlkZUZyb20gZ2V0SGl0IGdldEhpdEluZGV4IGdldEhpdFBvaW50RGFtYWdlIGdldEl0ZW1DYXJnbyBnZXRNYWdhemluZUNhcmdvIGdldE1hcmtlckNvbG9yICcgK1xuICAgICAgICAnZ2V0TWFya2VyUG9zIGdldE1hcmtlclNpemUgZ2V0TWFya2VyVHlwZSBnZXRNYXNzIGdldE1pc3Npb25Db25maWcgZ2V0TWlzc2lvbkNvbmZpZ1ZhbHVlICcgK1xuICAgICAgICAnZ2V0TWlzc2lvbkRMQ3MgZ2V0TWlzc2lvbkxheWVyRW50aXRpZXMgZ2V0TW9kZWxJbmZvIGdldE1vdXNlUG9zaXRpb24gZ2V0TnVtYmVyIGdldE9iamVjdEFyZ3VtZW50ICcgK1xuICAgICAgICAnZ2V0T2JqZWN0Q2hpbGRyZW4gZ2V0T2JqZWN0RExDIGdldE9iamVjdE1hdGVyaWFscyBnZXRPYmplY3RQcm94eSBnZXRPYmplY3RUZXh0dXJlcyBnZXRPYmplY3RUeXBlICcgK1xuICAgICAgICAnZ2V0T2JqZWN0Vmlld0Rpc3RhbmNlIGdldE94eWdlblJlbWFpbmluZyBnZXRQZXJzb25Vc2VkRExDcyBnZXRQaWxvdENhbWVyYURpcmVjdGlvbiAnICtcbiAgICAgICAgJ2dldFBpbG90Q2FtZXJhUG9zaXRpb24gZ2V0UGlsb3RDYW1lcmFSb3RhdGlvbiBnZXRQaWxvdENhbWVyYVRhcmdldCBnZXRQbGF5ZXJDaGFubmVsICcgK1xuICAgICAgICAnZ2V0UGxheWVyU2NvcmVzIGdldFBsYXllclVJRCBnZXRQb3MgZ2V0UG9zQVNMIGdldFBvc0FTTFZpc3VhbCBnZXRQb3NBU0xXIGdldFBvc0FUTCAnICtcbiAgICAgICAgJ2dldFBvc0FUTFZpc3VhbCBnZXRQb3NWaXN1YWwgZ2V0UG9zV29ybGQgZ2V0UmVsRGlyIGdldFJlbFBvcyBnZXRSZW1vdGVTZW5zb3JzRGlzYWJsZWQgJyArXG4gICAgICAgICdnZXRSZXBhaXJDYXJnbyBnZXRSZXNvbHV0aW9uIGdldFNoYWRvd0Rpc3RhbmNlIGdldFNob3RQYXJlbnRzIGdldFNsaW5nTG9hZCBnZXRTcGVlZCBnZXRTdGFtaW5hICcgK1xuICAgICAgICAnZ2V0U3RhdFZhbHVlIGdldFN1cHByZXNzaW9uIGdldFRlcnJhaW5IZWlnaHRBU0wgZ2V0VGV4dCBnZXRVbml0TG9hZG91dCBnZXRVbml0VHJhaXQgZ2V0VmFyaWFibGUgJyArXG4gICAgICAgICdnZXRWZWhpY2xlQ2FyZ28gZ2V0V2VhcG9uQ2FyZ28gZ2V0V2VhcG9uU3dheSBnZXRXUFBvcyBnbGFuY2VBdCBnbG9iYWxDaGF0IGdsb2JhbFJhZGlvIGdvZ2dsZXMgJyArXG4gICAgICAgICdnb3RvIGdyb3VwIGdyb3VwQ2hhdCBncm91cEZyb21OZXRJZCBncm91cEljb25TZWxlY3RhYmxlIGdyb3VwSWNvbnNWaXNpYmxlIGdyb3VwSWQgZ3JvdXBPd25lciAnICtcbiAgICAgICAgJ2dyb3VwUmFkaW8gZ3JvdXBTZWxlY3RlZFVuaXRzIGdyb3VwU2VsZWN0VW5pdCBncnBOdWxsIGd1bm5lciBndXN0cyBoYWx0IGhhbmRndW5JdGVtcyAnICtcbiAgICAgICAgJ2hhbmRndW5NYWdhemluZSBoYW5kZ3VuV2VhcG9uIGhhbmRzSGl0IGhhc0ludGVyZmFjZSBoYXNQaWxvdENhbWVyYSBoYXNXZWFwb24gaGNBbGxHcm91cHMgJyArXG4gICAgICAgICdoY0dyb3VwUGFyYW1zIGhjTGVhZGVyIGhjUmVtb3ZlQWxsR3JvdXBzIGhjUmVtb3ZlR3JvdXAgaGNTZWxlY3RlZCBoY1NlbGVjdEdyb3VwIGhjU2V0R3JvdXAgJyArXG4gICAgICAgICdoY1Nob3dCYXIgaGNTaG93bkJhciBoZWFkZ2VhciBoaWRlQm9keSBoaWRlT2JqZWN0IGhpZGVPYmplY3RHbG9iYWwgaGlkZVNlbGVjdGlvbiBoaW50IGhpbnRDICcgK1xuICAgICAgICAnaGludENhZGV0IGhpbnRTaWxlbnQgaG1kIGhvc3RNaXNzaW9uIGh0bWxMb2FkIEhVRE1vdmVtZW50TGV2ZWxzIGh1bWlkaXR5IGltYWdlIGltcG9ydEFsbEdyb3VwcyAnICtcbiAgICAgICAgJ2ltcG9ydGFuY2UgaW4gaW5BcmVhIGluQXJlYUFycmF5IGluY2FwYWNpdGF0ZWRTdGF0ZSBpbmRlcGVuZGVudCBpbmZsYW1lIGluZmxhbWVkICcgK1xuICAgICAgICAnaW5HYW1lVUlTZXRFdmVudEhhbmRsZXIgaW5oZXJpdHNGcm9tIGluaXRBbWJpZW50TGlmZSBpblBvbHlnb24gaW5wdXRBY3Rpb24gaW5SYW5nZU9mQXJ0aWxsZXJ5ICcgK1xuICAgICAgICAnaW5zZXJ0RWRpdG9yT2JqZWN0IGludGVyc2VjdCBpczNERU4gaXMzREVOTXVsdGlwbGF5ZXIgaXNBYmxlVG9CcmVhdGhlIGlzQWdlbnQgaXNBcnJheSAnICtcbiAgICAgICAgJ2lzQXV0b0hvdmVyT24gaXNBdXRvbm9tb3VzIGlzQXV0b3Rlc3QgaXNCbGVlZGluZyBpc0J1cm5pbmcgaXNDbGFzcyBpc0NvbGxpc2lvbkxpZ2h0T24gJyArXG4gICAgICAgICdpc0NvcGlsb3RFbmFibGVkIGlzRGVkaWNhdGVkIGlzRExDQXZhaWxhYmxlIGlzRW5naW5lT24gaXNFcXVhbFRvIGlzRXF1YWxUeXBlIGlzRXF1YWxUeXBlQWxsICcgK1xuICAgICAgICAnaXNFcXVhbFR5cGVBbnkgaXNFcXVhbFR5cGVBcnJheSBpc0VxdWFsVHlwZVBhcmFtcyBpc0ZpbGVQYXRjaGluZ0VuYWJsZWQgaXNGbGFzaGxpZ2h0T24gJyArXG4gICAgICAgICdpc0ZsYXRFbXB0eSBpc0ZvcmNlZFdhbGsgaXNGb3JtYXRpb25MZWFkZXIgaXNIaWRkZW4gaXNJblJlbWFpbnNDb2xsZWN0b3IgJyArXG4gICAgICAgICdpc0luc3RydWN0b3JGaWd1cmVFbmFibGVkIGlzSVJMYXNlck9uIGlzS2V5QWN0aXZlIGlzS2luZE9mIGlzTGlnaHRPbiBpc0xvY2FsaXplZCBpc01hbnVhbEZpcmUgJyArXG4gICAgICAgICdpc01hcmtlZEZvckNvbGxlY3Rpb24gaXNNdWx0aXBsYXllciBpc011bHRpcGxheWVyU29sbyBpc05pbCBpc051bGwgaXNOdW1iZXIgaXNPYmplY3RIaWRkZW4gJyArXG4gICAgICAgICdpc09iamVjdFJURCBpc09uUm9hZCBpc1BpcEVuYWJsZWQgaXNQbGF5ZXIgaXNSZWFsVGltZSBpc1JlbW90ZUV4ZWN1dGVkIGlzUmVtb3RlRXhlY3V0ZWRKSVAgJyArXG4gICAgICAgICdpc1NlcnZlciBpc1Nob3dpbmczREljb25zIGlzU3ByaW50QWxsb3dlZCBpc1N0YW1pbmFFbmFibGVkIGlzU3RlYW1NaXNzaW9uICcgK1xuICAgICAgICAnaXNTdHJlYW1GcmllbmRseVVJRW5hYmxlZCBpc1RleHQgaXNUb3VjaGluZ0dyb3VuZCBpc1R1cm5lZE91dCBpc1R1dEhpbnRzRW5hYmxlZCBpc1VBVkNvbm5lY3RhYmxlICcgK1xuICAgICAgICAnaXNVQVZDb25uZWN0ZWQgaXNVbmlmb3JtQWxsb3dlZCBpc1ZlaGljbGVDYXJnbyBpc1dhbGtpbmcgaXNXZWFwb25EZXBsb3llZCBpc1dlYXBvblJlc3RlZCAnICtcbiAgICAgICAgJ2l0ZW1DYXJnbyBpdGVtcyBpdGVtc1dpdGhNYWdhemluZXMgam9pbiBqb2luQXMgam9pbkFzU2lsZW50IGpvaW5TaWxlbnQgam9pblN0cmluZyBrYkFkZERhdGFiYXNlICcgK1xuICAgICAgICAna2JBZGREYXRhYmFzZVRhcmdldHMga2JBZGRUb3BpYyBrYkhhc1RvcGljIGtiUmVhY3Qga2JSZW1vdmVUb3BpYyBrYlRlbGwga2JXYXNTYWlkIGtleUltYWdlICcgK1xuICAgICAgICAna2V5TmFtZSBrbm93c0Fib3V0IGxhbmQgbGFuZEF0IGxhbmRSZXN1bHQgbGFuZ3VhZ2UgbGFzZXJUYXJnZXQgbGJBZGQgbGJDbGVhciBsYkNvbG9yIGxiQ3VyU2VsICcgK1xuICAgICAgICAnbGJEYXRhIGxiRGVsZXRlIGxiSXNTZWxlY3RlZCBsYlBpY3R1cmUgbGJTZWxlY3Rpb24gbGJTZXRDb2xvciBsYlNldEN1clNlbCBsYlNldERhdGEgbGJTZXRQaWN0dXJlICcgK1xuICAgICAgICAnbGJTZXRQaWN0dXJlQ29sb3IgbGJTZXRQaWN0dXJlQ29sb3JEaXNhYmxlZCBsYlNldFBpY3R1cmVDb2xvclNlbGVjdGVkIGxiU2V0U2VsZWN0Q29sb3IgJyArXG4gICAgICAgICdsYlNldFNlbGVjdENvbG9yUmlnaHQgbGJTZXRTZWxlY3RlZCBsYlNldFRvb2x0aXAgbGJTZXRWYWx1ZSBsYlNpemUgbGJTb3J0IGxiU29ydEJ5VmFsdWUgbGJUZXh0ICcgK1xuICAgICAgICAnbGJWYWx1ZSBsZWFkZXIgbGVhZGVyYm9hcmREZUluaXQgbGVhZGVyYm9hcmRHZXRSb3dzIGxlYWRlcmJvYXJkSW5pdCBsZWF2ZVZlaGljbGUgbGlicmFyeUNyZWRpdHMgJyArXG4gICAgICAgICdsaWJyYXJ5RGlzY2xhaW1lcnMgbGlmZVN0YXRlIGxpZ2h0QXR0YWNoT2JqZWN0IGxpZ2h0RGV0YWNoT2JqZWN0IGxpZ2h0SXNPbiBsaWdodG5pbmdzIGxpbWl0U3BlZWQgJyArXG4gICAgICAgICdsaW5lYXJDb252ZXJzaW9uIGxpbmVCcmVhayBsaW5lSW50ZXJzZWN0cyBsaW5lSW50ZXJzZWN0c09ianMgbGluZUludGVyc2VjdHNTdXJmYWNlcyAnICtcbiAgICAgICAgJ2xpbmVJbnRlcnNlY3RzV2l0aCBsaW5rSXRlbSBsaXN0IGxpc3RPYmplY3RzIGxuIGxuYkFkZEFycmF5IGxuYkFkZENvbHVtbiBsbmJBZGRSb3cgbG5iQ2xlYXIgJyArXG4gICAgICAgICdsbmJDb2xvciBsbmJDdXJTZWxSb3cgbG5iRGF0YSBsbmJEZWxldGVDb2x1bW4gbG5iRGVsZXRlUm93IGxuYkdldENvbHVtbnNQb3NpdGlvbiBsbmJQaWN0dXJlICcgK1xuICAgICAgICAnbG5iU2V0Q29sb3IgbG5iU2V0Q29sdW1uc1BvcyBsbmJTZXRDdXJTZWxSb3cgbG5iU2V0RGF0YSBsbmJTZXRQaWN0dXJlIGxuYlNldFRleHQgbG5iU2V0VmFsdWUgJyArXG4gICAgICAgICdsbmJTaXplIGxuYlRleHQgbG5iVmFsdWUgbG9hZCBsb2FkQWJzIGxvYWRCYWNrcGFjayBsb2FkRmlsZSBsb2FkR2FtZSBsb2FkSWRlbnRpdHkgbG9hZE1hZ2F6aW5lICcgK1xuICAgICAgICAnbG9hZE92ZXJsYXkgbG9hZFN0YXR1cyBsb2FkVW5pZm9ybSBsb2FkVmVzdCBsb2NhbCBsb2NhbGl6ZSBsb2NhdGlvbk51bGwgbG9jYXRpb25Qb3NpdGlvbiBsb2NrICcgK1xuICAgICAgICAnbG9ja0NhbWVyYVRvIGxvY2tDYXJnbyBsb2NrRHJpdmVyIGxvY2tlZCBsb2NrZWRDYXJnbyBsb2NrZWREcml2ZXIgbG9ja2VkVHVycmV0IGxvY2tJZGVudGl0eSAnICtcbiAgICAgICAgJ2xvY2tUdXJyZXQgbG9ja1dQIGxvZyBsb2dFbnRpdGllcyBsb2dOZXR3b3JrIGxvZ05ldHdvcmtUZXJtaW5hdGUgbG9va0F0IGxvb2tBdFBvcyBtYWdhemluZUNhcmdvICcgK1xuICAgICAgICAnbWFnYXppbmVzIG1hZ2F6aW5lc0FsbFR1cnJldHMgbWFnYXppbmVzQW1tbyBtYWdhemluZXNBbW1vQ2FyZ28gbWFnYXppbmVzQW1tb0Z1bGwgbWFnYXppbmVzRGV0YWlsICcgK1xuICAgICAgICAnbWFnYXppbmVzRGV0YWlsQmFja3BhY2sgbWFnYXppbmVzRGV0YWlsVW5pZm9ybSBtYWdhemluZXNEZXRhaWxWZXN0IG1hZ2F6aW5lc1R1cnJldCAnICtcbiAgICAgICAgJ21hZ2F6aW5lVHVycmV0QW1tbyBtYXBBbmltQWRkIG1hcEFuaW1DbGVhciBtYXBBbmltQ29tbWl0IG1hcEFuaW1Eb25lIG1hcENlbnRlck9uQ2FtZXJhICcgK1xuICAgICAgICAnbWFwR3JpZFBvc2l0aW9uIG1hcmtBc0ZpbmlzaGVkT25TdGVhbSBtYXJrZXJBbHBoYSBtYXJrZXJCcnVzaCBtYXJrZXJDb2xvciBtYXJrZXJEaXIgbWFya2VyUG9zICcgK1xuICAgICAgICAnbWFya2VyU2hhcGUgbWFya2VyU2l6ZSBtYXJrZXJUZXh0IG1hcmtlclR5cGUgbWF4IG1lbWJlcnMgbWVudUFjdGlvbiBtZW51QWRkIG1lbnVDaGVja2VkIG1lbnVDbGVhciAnICtcbiAgICAgICAgJ21lbnVDb2xsYXBzZSBtZW51RGF0YSBtZW51RGVsZXRlIG1lbnVFbmFibGUgbWVudUVuYWJsZWQgbWVudUV4cGFuZCBtZW51SG92ZXIgbWVudVBpY3R1cmUgJyArXG4gICAgICAgICdtZW51U2V0QWN0aW9uIG1lbnVTZXRDaGVjayBtZW51U2V0RGF0YSBtZW51U2V0UGljdHVyZSBtZW51U2V0VmFsdWUgbWVudVNob3J0Y3V0IG1lbnVTaG9ydGN1dFRleHQgJyArXG4gICAgICAgICdtZW51U2l6ZSBtZW51U29ydCBtZW51VGV4dCBtZW51VVJMIG1lbnVWYWx1ZSBtaW4gbWluZUFjdGl2ZSBtaW5lRGV0ZWN0ZWRCeSBtaXNzaW9uQ29uZmlnRmlsZSAnICtcbiAgICAgICAgJ21pc3Npb25EaWZmaWN1bHR5IG1pc3Npb25OYW1lIG1pc3Npb25OYW1lc3BhY2UgbWlzc2lvblN0YXJ0IG1pc3Npb25WZXJzaW9uIG1vZCBtb2RlbFRvV29ybGQgJyArXG4gICAgICAgICdtb2RlbFRvV29ybGRWaXN1YWwgbW9kUGFyYW1zIG1vb25JbnRlbnNpdHkgbW9vblBoYXNlIG1vcmFsZSBtb3ZlIG1vdmUzREVOQ2FtZXJhIG1vdmVJbkFueSAnICtcbiAgICAgICAgJ21vdmVJbkNhcmdvIG1vdmVJbkNvbW1hbmRlciBtb3ZlSW5Ecml2ZXIgbW92ZUluR3VubmVyIG1vdmVJblR1cnJldCBtb3ZlT2JqZWN0VG9FbmQgbW92ZU91dCAnICtcbiAgICAgICAgJ21vdmVUaW1lIG1vdmVUbyBtb3ZlVG9Db21wbGV0ZWQgbW92ZVRvRmFpbGVkIG11c2ljVm9sdW1lIG5hbWUgbmFtZVNvdW5kIG5lYXJFbnRpdGllcyAnICtcbiAgICAgICAgJ25lYXJlc3RCdWlsZGluZyBuZWFyZXN0TG9jYXRpb24gbmVhcmVzdExvY2F0aW9ucyBuZWFyZXN0TG9jYXRpb25XaXRoRHViYmluZyBuZWFyZXN0T2JqZWN0ICcgK1xuICAgICAgICAnbmVhcmVzdE9iamVjdHMgbmVhcmVzdFRlcnJhaW5PYmplY3RzIG5lYXJPYmplY3RzIG5lYXJPYmplY3RzUmVhZHkgbmVhclJvYWRzIG5lYXJTdXBwbGllcyAnICtcbiAgICAgICAgJ25lYXJUYXJnZXRzIG5lZWRSZWxvYWQgbmV0SWQgbmV0T2JqTnVsbCBuZXdPdmVybGF5IG5leHRNZW51SXRlbUluZGV4IG5leHRXZWF0aGVyQ2hhbmdlIG5NZW51SXRlbXMgJyArXG4gICAgICAgICdub3QgbnVtYmVyVG9EYXRlIG9iamVjdEN1cmF0b3JzIG9iamVjdEZyb21OZXRJZCBvYmplY3RQYXJlbnQgb2JqTnVsbCBvYmpTdGF0dXMgb25CcmllZmluZ0dyb3VwICcgK1xuICAgICAgICAnb25CcmllZmluZ05vdGVzIG9uQnJpZWZpbmdQbGFuIG9uQnJpZWZpbmdUZWFtU3dpdGNoIG9uQ29tbWFuZE1vZGVDaGFuZ2VkIG9uRG91YmxlQ2xpY2sgJyArXG4gICAgICAgICdvbkVhY2hGcmFtZSBvbkdyb3VwSWNvbkNsaWNrIG9uR3JvdXBJY29uT3ZlckVudGVyIG9uR3JvdXBJY29uT3ZlckxlYXZlIG9uSENHcm91cFNlbGVjdGlvbkNoYW5nZWQgJyArXG4gICAgICAgICdvbk1hcFNpbmdsZUNsaWNrIG9uUGxheWVyQ29ubmVjdGVkIG9uUGxheWVyRGlzY29ubmVjdGVkIG9uUHJlbG9hZEZpbmlzaGVkIG9uUHJlbG9hZFN0YXJ0ZWQgJyArXG4gICAgICAgICdvblNob3dOZXdPYmplY3Qgb25UZWFtU3dpdGNoIG9wZW5DdXJhdG9ySW50ZXJmYWNlIG9wZW5ETENQYWdlIG9wZW5NYXAgb3BlbllvdXR1YmVWaWRlbyBvcGZvciBvciAnICtcbiAgICAgICAgJ29yZGVyR2V0SW4gb3ZlcmNhc3Qgb3ZlcmNhc3RGb3JlY2FzdCBvd25lciBwYXJhbSBwYXJhbXMgcGFyc2VOdW1iZXIgcGFyc2VUZXh0IHBhcnNpbmdOYW1lc3BhY2UgJyArXG4gICAgICAgICdwYXJ0aWNsZXNRdWFsaXR5IHBpIHBpY2tXZWFwb25Qb29sIHBpdGNoIHBpeGVsR3JpZCBwaXhlbEdyaWRCYXNlIHBpeGVsR3JpZE5vVUlTY2FsZSBwaXhlbEggcGl4ZWxXICcgK1xuICAgICAgICAncGxheWFibGVTbG90c051bWJlciBwbGF5YWJsZVVuaXRzIHBsYXlBY3Rpb24gcGxheUFjdGlvbk5vdyBwbGF5ZXIgcGxheWVyUmVzcGF3blRpbWUgcGxheWVyU2lkZSAnICtcbiAgICAgICAgJ3BsYXllcnNOdW1iZXIgcGxheUdlc3R1cmUgcGxheU1pc3Npb24gcGxheU1vdmUgcGxheU1vdmVOb3cgcGxheU11c2ljIHBsYXlTY3JpcHRlZE1pc3Npb24gJyArXG4gICAgICAgICdwbGF5U291bmQgcGxheVNvdW5kM0QgcG9zaXRpb24gcG9zaXRpb25DYW1lcmFUb1dvcmxkIHBvc1NjcmVlblRvV29ybGQgcG9zV29ybGRUb1NjcmVlbiAnICtcbiAgICAgICAgJ3BwRWZmZWN0QWRqdXN0IHBwRWZmZWN0Q29tbWl0IHBwRWZmZWN0Q29tbWl0dGVkIHBwRWZmZWN0Q3JlYXRlIHBwRWZmZWN0RGVzdHJveSBwcEVmZmVjdEVuYWJsZSAnICtcbiAgICAgICAgJ3BwRWZmZWN0RW5hYmxlZCBwcEVmZmVjdEZvcmNlSW5OVkcgcHJlY2lzaW9uIHByZWxvYWRDYW1lcmEgcHJlbG9hZE9iamVjdCBwcmVsb2FkU291bmQgJyArXG4gICAgICAgICdwcmVsb2FkVGl0bGVPYmogcHJlbG9hZFRpdGxlUnNjIHByZXByb2Nlc3NGaWxlIHByZXByb2Nlc3NGaWxlTGluZU51bWJlcnMgcHJpbWFyeVdlYXBvbiAnICtcbiAgICAgICAgJ3ByaW1hcnlXZWFwb25JdGVtcyBwcmltYXJ5V2VhcG9uTWFnYXppbmUgcHJpb3JpdHkgcHJpdmF0ZSBwcm9jZXNzRGlhcnlMaW5rIHByb2R1Y3RWZXJzaW9uICcgK1xuICAgICAgICAncHJvZmlsZU5hbWUgcHJvZmlsZU5hbWVzcGFjZSBwcm9maWxlTmFtZVN0ZWFtIHByb2dyZXNzTG9hZGluZ1NjcmVlbiBwcm9ncmVzc1Bvc2l0aW9uICcgK1xuICAgICAgICAncHJvZ3Jlc3NTZXRQb3NpdGlvbiBwdWJsaWNWYXJpYWJsZSBwdWJsaWNWYXJpYWJsZUNsaWVudCBwdWJsaWNWYXJpYWJsZVNlcnZlciBwdXNoQmFjayAnICtcbiAgICAgICAgJ3B1c2hCYWNrVW5pcXVlIHB1dFdlYXBvblBvb2wgcXVlcnlJdGVtc1Bvb2wgcXVlcnlNYWdhemluZVBvb2wgcXVlcnlXZWFwb25Qb29sIHJhZCByYWRpb0NoYW5uZWxBZGQgJyArXG4gICAgICAgICdyYWRpb0NoYW5uZWxDcmVhdGUgcmFkaW9DaGFubmVsUmVtb3ZlIHJhZGlvQ2hhbm5lbFNldENhbGxTaWduIHJhZGlvQ2hhbm5lbFNldExhYmVsIHJhZGlvVm9sdW1lICcgK1xuICAgICAgICAncmFpbiByYWluYm93IHJhbmRvbSByYW5rIHJhbmtJZCByYXRpbmcgcmVjdGFuZ3VsYXIgcmVnaXN0ZXJlZFRhc2tzIHJlZ2lzdGVyVGFzayByZWxvYWQgJyArXG4gICAgICAgICdyZWxvYWRFbmFibGVkIHJlbW90ZUNvbnRyb2wgcmVtb3RlRXhlYyByZW1vdGVFeGVjQ2FsbCByZW1vdmUzREVOQ29ubmVjdGlvbiByZW1vdmUzREVORXZlbnRIYW5kbGVyICcgK1xuICAgICAgICAncmVtb3ZlM0RFTkxheWVyIHJlbW92ZUFjdGlvbiByZW1vdmVBbGwzREVORXZlbnRIYW5kbGVycyByZW1vdmVBbGxBY3Rpb25zIHJlbW92ZUFsbEFzc2lnbmVkSXRlbXMgJyArXG4gICAgICAgICdyZW1vdmVBbGxDb250YWluZXJzIHJlbW92ZUFsbEN1cmF0b3JBZGRvbnMgcmVtb3ZlQWxsQ3VyYXRvckNhbWVyYUFyZWFzICcgK1xuICAgICAgICAncmVtb3ZlQWxsQ3VyYXRvckVkaXRpbmdBcmVhcyByZW1vdmVBbGxFdmVudEhhbmRsZXJzIHJlbW92ZUFsbEhhbmRndW5JdGVtcyByZW1vdmVBbGxJdGVtcyAnICtcbiAgICAgICAgJ3JlbW92ZUFsbEl0ZW1zV2l0aE1hZ2F6aW5lcyByZW1vdmVBbGxNaXNzaW9uRXZlbnRIYW5kbGVycyByZW1vdmVBbGxNUEV2ZW50SGFuZGxlcnMgJyArXG4gICAgICAgICdyZW1vdmVBbGxNdXNpY0V2ZW50SGFuZGxlcnMgcmVtb3ZlQWxsT3duZWRNaW5lcyByZW1vdmVBbGxQcmltYXJ5V2VhcG9uSXRlbXMgcmVtb3ZlQWxsV2VhcG9ucyAnICtcbiAgICAgICAgJ3JlbW92ZUJhY2twYWNrIHJlbW92ZUJhY2twYWNrR2xvYmFsIHJlbW92ZUN1cmF0b3JBZGRvbnMgcmVtb3ZlQ3VyYXRvckNhbWVyYUFyZWEgJyArXG4gICAgICAgICdyZW1vdmVDdXJhdG9yRWRpdGFibGVPYmplY3RzIHJlbW92ZUN1cmF0b3JFZGl0aW5nQXJlYSByZW1vdmVEcmF3SWNvbiByZW1vdmVEcmF3TGlua3MgJyArXG4gICAgICAgICdyZW1vdmVFdmVudEhhbmRsZXIgcmVtb3ZlRnJvbVJlbWFpbnNDb2xsZWN0b3IgcmVtb3ZlR29nZ2xlcyByZW1vdmVHcm91cEljb24gcmVtb3ZlSGFuZGd1bkl0ZW0gJyArXG4gICAgICAgICdyZW1vdmVIZWFkZ2VhciByZW1vdmVJdGVtIHJlbW92ZUl0ZW1Gcm9tQmFja3BhY2sgcmVtb3ZlSXRlbUZyb21Vbmlmb3JtIHJlbW92ZUl0ZW1Gcm9tVmVzdCAnICtcbiAgICAgICAgJ3JlbW92ZUl0ZW1zIHJlbW92ZU1hZ2F6aW5lIHJlbW92ZU1hZ2F6aW5lR2xvYmFsIHJlbW92ZU1hZ2F6aW5lcyByZW1vdmVNYWdhemluZXNUdXJyZXQgJyArXG4gICAgICAgICdyZW1vdmVNYWdhemluZVR1cnJldCByZW1vdmVNZW51SXRlbSByZW1vdmVNaXNzaW9uRXZlbnRIYW5kbGVyIHJlbW92ZU1QRXZlbnRIYW5kbGVyICcgK1xuICAgICAgICAncmVtb3ZlTXVzaWNFdmVudEhhbmRsZXIgcmVtb3ZlT3duZWRNaW5lIHJlbW92ZVByaW1hcnlXZWFwb25JdGVtIHJlbW92ZVNlY29uZGFyeVdlYXBvbkl0ZW0gJyArXG4gICAgICAgICdyZW1vdmVTaW1wbGVUYXNrIHJlbW92ZVN3aXRjaGFibGVVbml0IHJlbW92ZVRlYW1NZW1iZXIgcmVtb3ZlVW5pZm9ybSByZW1vdmVWZXN0IHJlbW92ZVdlYXBvbiAnICtcbiAgICAgICAgJ3JlbW92ZVdlYXBvbkdsb2JhbCByZW1vdmVXZWFwb25UdXJyZXQgcmVxdWlyZWRWZXJzaW9uIHJlc2V0Q2FtU2hha2UgcmVzZXRTdWJncm91cERpcmVjdGlvbiAnICtcbiAgICAgICAgJ3Jlc2lzdGFuY2UgcmVzaXplIHJlc291cmNlcyByZXNwYXduVmVoaWNsZSByZXN0YXJ0RWRpdG9yQ2FtZXJhIHJldmVhbCByZXZlYWxNaW5lIHJldmVyc2UgJyArXG4gICAgICAgICdyZXZlcnNlZE1vdXNlWSByb2FkQXQgcm9hZHNDb25uZWN0ZWRUbyByb2xlRGVzY3JpcHRpb24gcm9wZUF0dGFjaGVkT2JqZWN0cyByb3BlQXR0YWNoZWRUbyAnICtcbiAgICAgICAgJ3JvcGVBdHRhY2hFbmFibGVkIHJvcGVBdHRhY2hUbyByb3BlQ3JlYXRlIHJvcGVDdXQgcm9wZURlc3Ryb3kgcm9wZURldGFjaCByb3BlRW5kUG9zaXRpb24gJyArXG4gICAgICAgICdyb3BlTGVuZ3RoIHJvcGVzIHJvcGVVbndpbmQgcm9wZVVud291bmQgcm90b3JzRm9yY2VzUlREIHJvdG9yc1JwbVJURCByb3VuZCBydW5Jbml0U2NyaXB0ICcgK1xuICAgICAgICAnc2FmZVpvbmVIIHNhZmVab25lVyBzYWZlWm9uZVdBYnMgc2FmZVpvbmVYIHNhZmVab25lWEFicyBzYWZlWm9uZVkgc2F2ZTNERU5JbnZlbnRvcnkgc2F2ZUdhbWUgJyArXG4gICAgICAgICdzYXZlSWRlbnRpdHkgc2F2ZUpveXN0aWNrcyBzYXZlT3ZlcmxheSBzYXZlUHJvZmlsZU5hbWVzcGFjZSBzYXZlU3RhdHVzIHNhdmVWYXIgc2F2aW5nRW5hYmxlZCBzYXkgJyArXG4gICAgICAgICdzYXkyRCBzYXkzRCBzY29wZU5hbWUgc2NvcmUgc2NvcmVTaWRlIHNjcmVlbnNob3Qgc2NyZWVuVG9Xb3JsZCBzY3JpcHREb25lIHNjcmlwdE5hbWUgc2NyaXB0TnVsbCAnICtcbiAgICAgICAgJ3NjdWRTdGF0ZSBzZWNvbmRhcnlXZWFwb24gc2Vjb25kYXJ5V2VhcG9uSXRlbXMgc2Vjb25kYXJ5V2VhcG9uTWFnYXppbmUgc2VsZWN0IHNlbGVjdEJlc3RQbGFjZXMgJyArXG4gICAgICAgICdzZWxlY3REaWFyeVN1YmplY3Qgc2VsZWN0ZWRFZGl0b3JPYmplY3RzIHNlbGVjdEVkaXRvck9iamVjdCBzZWxlY3Rpb25OYW1lcyBzZWxlY3Rpb25Qb3NpdGlvbiAnICtcbiAgICAgICAgJ3NlbGVjdExlYWRlciBzZWxlY3RNYXggc2VsZWN0TWluIHNlbGVjdE5vUGxheWVyIHNlbGVjdFBsYXllciBzZWxlY3RSYW5kb20gc2VsZWN0V2VhcG9uICcgK1xuICAgICAgICAnc2VsZWN0V2VhcG9uVHVycmV0IHNlbmRBVU1lc3NhZ2Ugc2VuZFNpbXBsZUNvbW1hbmQgc2VuZFRhc2sgc2VuZFRhc2tSZXN1bHQgc2VuZFVEUE1lc3NhZ2UgJyArXG4gICAgICAgICdzZXJ2ZXJDb21tYW5kIHNlcnZlckNvbW1hbmRBdmFpbGFibGUgc2VydmVyQ29tbWFuZEV4ZWN1dGFibGUgc2VydmVyTmFtZSBzZXJ2ZXJUaW1lIHNldCAnICtcbiAgICAgICAgJ3NldDNERU5BdHRyaWJ1dGUgc2V0M0RFTkF0dHJpYnV0ZXMgc2V0M0RFTkdyaWQgc2V0M0RFTkljb25zVmlzaWJsZSBzZXQzREVOTGF5ZXIgJyArXG4gICAgICAgICdzZXQzREVOTGluZXNWaXNpYmxlIHNldDNERU5NaXNzaW9uQXR0cmlidXRlcyBzZXQzREVOTW9kZWxzVmlzaWJsZSBzZXQzREVOT2JqZWN0VHlwZSAnICtcbiAgICAgICAgJ3NldDNERU5TZWxlY3RlZCBzZXRBY2NUaW1lIHNldEFpcnBvcnRTaWRlIHNldEFtbW8gc2V0QW1tb0NhcmdvIHNldEFuaW1TcGVlZENvZWYgc2V0QXBlcnR1cmUgJyArXG4gICAgICAgICdzZXRBcGVydHVyZU5ldyBzZXRBcm1vcnlQb2ludHMgc2V0QXR0cmlidXRlcyBzZXRBdXRvbm9tb3VzIHNldEJlaGF2aW91ciBzZXRCbGVlZGluZ1JlbWFpbmluZyAnICtcbiAgICAgICAgJ3NldENhbWVyYUludGVyZXN0IHNldENhbVNoYWtlRGVmUGFyYW1zIHNldENhbVNoYWtlUGFyYW1zIHNldENhbVVzZVRpIHNldENhcHRpdmUgc2V0Q2VudGVyT2ZNYXNzICcgK1xuICAgICAgICAnc2V0Q29sbGlzaW9uTGlnaHQgc2V0Q29tYmF0TW9kZSBzZXRDb21wYXNzT3NjaWxsYXRpb24gc2V0Q3VyYXRvckNhbWVyYUFyZWFDZWlsaW5nIHNldEN1cmF0b3JDb2VmICcgK1xuICAgICAgICAnc2V0Q3VyYXRvckVkaXRpbmdBcmVhVHlwZSBzZXRDdXJhdG9yV2F5cG9pbnRDb3N0IHNldEN1cnJlbnRDaGFubmVsIHNldEN1cnJlbnRUYXNrICcgK1xuICAgICAgICAnc2V0Q3VycmVudFdheXBvaW50IHNldEN1c3RvbUFpbUNvZWYgc2V0RGFtYWdlIHNldERhbW1hZ2Ugc2V0RGF0ZSBzZXREZWJyaWVmaW5nVGV4dCAnICtcbiAgICAgICAgJ3NldERlZmF1bHRDYW1lcmEgc2V0RGVzdGluYXRpb24gc2V0RGV0YWlsTWFwQmxlbmRQYXJzIHNldERpciBzZXREaXJlY3Rpb24gc2V0RHJhd0ljb24gJyArXG4gICAgICAgICdzZXREcm9wSW50ZXJ2YWwgc2V0RWRpdG9yTW9kZSBzZXRFZGl0b3JPYmplY3RTY29wZSBzZXRFZmZlY3RDb25kaXRpb24gc2V0RmFjZSBzZXRGYWNlQW5pbWF0aW9uICcgK1xuICAgICAgICAnc2V0RmF0aWd1ZSBzZXRGbGFnT3duZXIgc2V0RmxhZ1NpZGUgc2V0RmxhZ1RleHR1cmUgc2V0Rm9nIHNldEZvcm1hdGlvbiBzZXRGb3JtYXRpb25UYXNrICcgK1xuICAgICAgICAnc2V0Rm9ybURpciBzZXRGcmllbmQgc2V0RnJvbUVkaXRvciBzZXRGU01WYXJpYWJsZSBzZXRGdWVsIHNldEZ1ZWxDYXJnbyBzZXRHcm91cEljb24gJyArXG4gICAgICAgICdzZXRHcm91cEljb25QYXJhbXMgc2V0R3JvdXBJY29uc1NlbGVjdGFibGUgc2V0R3JvdXBJY29uc1Zpc2libGUgc2V0R3JvdXBJZCBzZXRHcm91cElkR2xvYmFsICcgK1xuICAgICAgICAnc2V0R3JvdXBPd25lciBzZXRHdXN0cyBzZXRIaWRlQmVoaW5kIHNldEhpdCBzZXRIaXRJbmRleCBzZXRIaXRQb2ludERhbWFnZSBzZXRIb3Jpem9uUGFyYWxsYXhDb2VmICcgK1xuICAgICAgICAnc2V0SFVETW92ZW1lbnRMZXZlbHMgc2V0SWRlbnRpdHkgc2V0SW1wb3J0YW5jZSBzZXRMZWFkZXIgc2V0TGlnaHRBbWJpZW50IHNldExpZ2h0QXR0ZW51YXRpb24gJyArXG4gICAgICAgICdzZXRMaWdodEJyaWdodG5lc3Mgc2V0TGlnaHRDb2xvciBzZXRMaWdodERheUxpZ2h0IHNldExpZ2h0RmxhcmVNYXhEaXN0YW5jZSBzZXRMaWdodEZsYXJlU2l6ZSAnICtcbiAgICAgICAgJ3NldExpZ2h0SW50ZW5zaXR5IHNldExpZ2h0bmluZ3Mgc2V0TGlnaHRVc2VGbGFyZSBzZXRMb2NhbFdpbmRQYXJhbXMgc2V0TWFnYXppbmVUdXJyZXRBbW1vICcgK1xuICAgICAgICAnc2V0TWFya2VyQWxwaGEgc2V0TWFya2VyQWxwaGFMb2NhbCBzZXRNYXJrZXJCcnVzaCBzZXRNYXJrZXJCcnVzaExvY2FsIHNldE1hcmtlckNvbG9yICcgK1xuICAgICAgICAnc2V0TWFya2VyQ29sb3JMb2NhbCBzZXRNYXJrZXJEaXIgc2V0TWFya2VyRGlyTG9jYWwgc2V0TWFya2VyUG9zIHNldE1hcmtlclBvc0xvY2FsIHNldE1hcmtlclNoYXBlICcgK1xuICAgICAgICAnc2V0TWFya2VyU2hhcGVMb2NhbCBzZXRNYXJrZXJTaXplIHNldE1hcmtlclNpemVMb2NhbCBzZXRNYXJrZXJUZXh0IHNldE1hcmtlclRleHRMb2NhbCAnICtcbiAgICAgICAgJ3NldE1hcmtlclR5cGUgc2V0TWFya2VyVHlwZUxvY2FsIHNldE1hc3Mgc2V0TWltaWMgc2V0TW91c2VQb3NpdGlvbiBzZXRNdXNpY0VmZmVjdCAnICtcbiAgICAgICAgJ3NldE11c2ljRXZlbnRIYW5kbGVyIHNldE5hbWUgc2V0TmFtZVNvdW5kIHNldE9iamVjdEFyZ3VtZW50cyBzZXRPYmplY3RNYXRlcmlhbCAnICtcbiAgICAgICAgJ3NldE9iamVjdE1hdGVyaWFsR2xvYmFsIHNldE9iamVjdFByb3h5IHNldE9iamVjdFRleHR1cmUgc2V0T2JqZWN0VGV4dHVyZUdsb2JhbCAnICtcbiAgICAgICAgJ3NldE9iamVjdFZpZXdEaXN0YW5jZSBzZXRPdmVyY2FzdCBzZXRPd25lciBzZXRPeHlnZW5SZW1haW5pbmcgc2V0UGFydGljbGVDaXJjbGUgc2V0UGFydGljbGVDbGFzcyAnICtcbiAgICAgICAgJ3NldFBhcnRpY2xlRmlyZSBzZXRQYXJ0aWNsZVBhcmFtcyBzZXRQYXJ0aWNsZVJhbmRvbSBzZXRQaWxvdENhbWVyYURpcmVjdGlvbiAnICtcbiAgICAgICAgJ3NldFBpbG90Q2FtZXJhUm90YXRpb24gc2V0UGlsb3RDYW1lcmFUYXJnZXQgc2V0UGlsb3RMaWdodCBzZXRQaVBFZmZlY3Qgc2V0UGl0Y2ggc2V0UGxheWFibGUgJyArXG4gICAgICAgICdzZXRQbGF5ZXJSZXNwYXduVGltZSBzZXRQb3Mgc2V0UG9zQVNMIHNldFBvc0FTTDIgc2V0UG9zQVNMVyBzZXRQb3NBVEwgc2V0UG9zaXRpb24gc2V0UG9zV29ybGQgJyArXG4gICAgICAgICdzZXRSYWRpb01zZyBzZXRSYWluIHNldFJhaW5ib3cgc2V0UmFuZG9tTGlwIHNldFJhbmsgc2V0UmVjdGFuZ3VsYXIgc2V0UmVwYWlyQ2FyZ28gJyArXG4gICAgICAgICdzZXRTaGFkb3dEaXN0YW5jZSBzZXRTaG90UGFyZW50cyBzZXRTaWRlIHNldFNpbXBsZVRhc2tBbHdheXNWaXNpYmxlIHNldFNpbXBsZVRhc2tDdXN0b21EYXRhICcgK1xuICAgICAgICAnc2V0U2ltcGxlVGFza0Rlc2NyaXB0aW9uIHNldFNpbXBsZVRhc2tEZXN0aW5hdGlvbiBzZXRTaW1wbGVUYXNrVGFyZ2V0IHNldFNpbXBsZVRhc2tUeXBlICcgK1xuICAgICAgICAnc2V0U2ltdWxXZWF0aGVyTGF5ZXJzIHNldFNpemUgc2V0U2tpbGwgc2V0U2xpbmdMb2FkIHNldFNvdW5kRWZmZWN0IHNldFNwZWFrZXIgc2V0U3BlZWNoICcgK1xuICAgICAgICAnc2V0U3BlZWRNb2RlIHNldFN0YW1pbmEgc2V0U3RhbWluYVNjaGVtZSBzZXRTdGF0VmFsdWUgc2V0U3VwcHJlc3Npb24gc2V0U3lzdGVtT2ZVbml0cyAnICtcbiAgICAgICAgJ3NldFRhcmdldEFnZSBzZXRUYXNrUmVzdWx0IHNldFRhc2tTdGF0ZSBzZXRUZXJyYWluR3JpZCBzZXRUZXh0IHNldFRpbWVNdWx0aXBsaWVyIHNldFRpdGxlRWZmZWN0ICcgK1xuICAgICAgICAnc2V0VHJpZ2dlckFjdGl2YXRpb24gc2V0VHJpZ2dlckFyZWEgc2V0VHJpZ2dlclN0YXRlbWVudHMgc2V0VHJpZ2dlclRleHQgc2V0VHJpZ2dlclRpbWVvdXQgJyArXG4gICAgICAgICdzZXRUcmlnZ2VyVHlwZSBzZXRUeXBlIHNldFVuY29uc2Npb3VzIHNldFVuaXRBYmlsaXR5IHNldFVuaXRMb2Fkb3V0IHNldFVuaXRQb3Mgc2V0VW5pdFBvc1dlYWsgJyArXG4gICAgICAgICdzZXRVbml0UmFuayBzZXRVbml0UmVjb2lsQ29lZmZpY2llbnQgc2V0VW5pdFRyYWl0IHNldFVubG9hZEluQ29tYmF0IHNldFVzZXJBY3Rpb25UZXh0IHNldFZhcmlhYmxlICcgK1xuICAgICAgICAnc2V0VmVjdG9yRGlyIHNldFZlY3RvckRpckFuZFVwIHNldFZlY3RvclVwIHNldFZlaGljbGVBbW1vIHNldFZlaGljbGVBbW1vRGVmIHNldFZlaGljbGVBcm1vciAnICtcbiAgICAgICAgJ3NldFZlaGljbGVDYXJnbyBzZXRWZWhpY2xlSWQgc2V0VmVoaWNsZUxvY2sgc2V0VmVoaWNsZVBvc2l0aW9uIHNldFZlaGljbGVUaVBhcnMgc2V0VmVoaWNsZVZhck5hbWUgJyArXG4gICAgICAgICdzZXRWZWxvY2l0eSBzZXRWZWxvY2l0eVRyYW5zZm9ybWF0aW9uIHNldFZpZXdEaXN0YW5jZSBzZXRWaXNpYmxlSWZUcmVlQ29sbGFwc2VkIHNldFdhdmVzICcgK1xuICAgICAgICAnc2V0V2F5cG9pbnRCZWhhdmlvdXIgc2V0V2F5cG9pbnRDb21iYXRNb2RlIHNldFdheXBvaW50Q29tcGxldGlvblJhZGl1cyBzZXRXYXlwb2ludERlc2NyaXB0aW9uICcgK1xuICAgICAgICAnc2V0V2F5cG9pbnRGb3JjZUJlaGF2aW91ciBzZXRXYXlwb2ludEZvcm1hdGlvbiBzZXRXYXlwb2ludEhvdXNlUG9zaXRpb24gc2V0V2F5cG9pbnRMb2l0ZXJSYWRpdXMgJyArXG4gICAgICAgICdzZXRXYXlwb2ludExvaXRlclR5cGUgc2V0V2F5cG9pbnROYW1lIHNldFdheXBvaW50UG9zaXRpb24gc2V0V2F5cG9pbnRTY3JpcHQgc2V0V2F5cG9pbnRTcGVlZCAnICtcbiAgICAgICAgJ3NldFdheXBvaW50U3RhdGVtZW50cyBzZXRXYXlwb2ludFRpbWVvdXQgc2V0V2F5cG9pbnRUeXBlIHNldFdheXBvaW50VmlzaWJsZSAnICtcbiAgICAgICAgJ3NldFdlYXBvblJlbG9hZGluZ1RpbWUgc2V0V2luZCBzZXRXaW5kRGlyIHNldFdpbmRGb3JjZSBzZXRXaW5kU3RyIHNldFdQUG9zIHNob3czREljb25zIHNob3dDaGF0ICcgK1xuICAgICAgICAnc2hvd0NpbmVtYUJvcmRlciBzaG93Q29tbWFuZGluZ01lbnUgc2hvd0NvbXBhc3Mgc2hvd0N1cmF0b3JDb21wYXNzIHNob3dHUFMgc2hvd0hVRCBzaG93TGVnZW5kICcgK1xuICAgICAgICAnc2hvd01hcCBzaG93bkFydGlsbGVyeUNvbXB1dGVyIHNob3duQ2hhdCBzaG93bkNvbXBhc3Mgc2hvd25DdXJhdG9yQ29tcGFzcyBzaG93TmV3RWRpdG9yT2JqZWN0ICcgK1xuICAgICAgICAnc2hvd25HUFMgc2hvd25IVUQgc2hvd25NYXAgc2hvd25QYWQgc2hvd25SYWRpbyBzaG93blNjb3JldGFibGUgc2hvd25VQVZGZWVkIHNob3duV2FycmFudCAnICtcbiAgICAgICAgJ3Nob3duV2F0Y2ggc2hvd1BhZCBzaG93UmFkaW8gc2hvd1Njb3JldGFibGUgc2hvd1N1YnRpdGxlcyBzaG93VUFWRmVlZCBzaG93V2FycmFudCBzaG93V2F0Y2ggJyArXG4gICAgICAgICdzaG93V2F5cG9pbnQgc2hvd1dheXBvaW50cyBzaWRlIHNpZGVBbWJpZW50TGlmZSBzaWRlQ2hhdCBzaWRlRW1wdHkgc2lkZUVuZW15IHNpZGVGcmllbmRseSAnICtcbiAgICAgICAgJ3NpZGVMb2dpYyBzaWRlUmFkaW8gc2lkZVVua25vd24gc2ltcGxlVGFza3Mgc2ltdWxhdGlvbkVuYWJsZWQgc2ltdWxDbG91ZERlbnNpdHkgJyArXG4gICAgICAgICdzaW11bENsb3VkT2NjbHVzaW9uIHNpbXVsSW5DbG91ZHMgc2ltdWxXZWF0aGVyU3luYyBzaW4gc2l6ZSBzaXplT2Ygc2tpbGwgc2tpbGxGaW5hbCBza2lwVGltZSAnICtcbiAgICAgICAgJ3NsZWVwIHNsaWRlclBvc2l0aW9uIHNsaWRlclJhbmdlIHNsaWRlclNldFBvc2l0aW9uIHNsaWRlclNldFJhbmdlIHNsaWRlclNldFNwZWVkIHNsaWRlclNwZWVkICcgK1xuICAgICAgICAnc2xpbmdMb2FkQXNzaXN0YW50U2hvd24gc29sZGllck1hZ2F6aW5lcyBzb21lQW1tbyBzb3J0IHNvdW5kVm9sdW1lIHNwYXduIHNwZWFrZXIgc3BlZWQgc3BlZWRNb2RlICcgK1xuICAgICAgICAnc3BsaXRTdHJpbmcgc3FydCBzcXVhZFBhcmFtcyBzdGFuY2Ugc3RhcnRMb2FkaW5nU2NyZWVuIHN0ZXAgc3RvcCBzdG9wRW5naW5lUlREIHN0b3BwZWQgc3RyICcgK1xuICAgICAgICAnc3VuT3JNb29uIHN1cHBvcnRJbmZvIHN1cHByZXNzRm9yIHN1cmZhY2VJc1dhdGVyIHN1cmZhY2VOb3JtYWwgc3VyZmFjZVR5cGUgc3dpbUluRGVwdGggJyArXG4gICAgICAgICdzd2l0Y2hhYmxlVW5pdHMgc3dpdGNoQWN0aW9uIHN3aXRjaENhbWVyYSBzd2l0Y2hHZXN0dXJlIHN3aXRjaExpZ2h0IHN3aXRjaE1vdmUgJyArXG4gICAgICAgICdzeW5jaHJvbml6ZWRPYmplY3RzIHN5bmNocm9uaXplZFRyaWdnZXJzIHN5bmNocm9uaXplZFdheXBvaW50cyBzeW5jaHJvbml6ZU9iamVjdHNBZGQgJyArXG4gICAgICAgICdzeW5jaHJvbml6ZU9iamVjdHNSZW1vdmUgc3luY2hyb25pemVUcmlnZ2VyIHN5bmNocm9uaXplV2F5cG9pbnQgc3lzdGVtQ2hhdCBzeXN0ZW1PZlVuaXRzIHRhbiAnICtcbiAgICAgICAgJ3RhcmdldEtub3dsZWRnZSB0YXJnZXRzQWdncmVnYXRlIHRhcmdldHNRdWVyeSB0YXNrQWx3YXlzVmlzaWJsZSB0YXNrQ2hpbGRyZW4gdGFza0NvbXBsZXRlZCAnICtcbiAgICAgICAgJ3Rhc2tDdXN0b21EYXRhIHRhc2tEZXNjcmlwdGlvbiB0YXNrRGVzdGluYXRpb24gdGFza0hpbnQgdGFza01hcmtlck9mZnNldCB0YXNrTnVsbCB0YXNrUGFyZW50ICcgK1xuICAgICAgICAndGFza1Jlc3VsdCB0YXNrU3RhdGUgdGFza1R5cGUgdGVhbU1lbWJlciB0ZWFtTWVtYmVyTnVsbCB0ZWFtTmFtZSB0ZWFtcyB0ZWFtU3dpdGNoICcgK1xuICAgICAgICAndGVhbVN3aXRjaEVuYWJsZWQgdGVhbVR5cGUgdGVybWluYXRlIHRlcnJhaW5JbnRlcnNlY3QgdGVycmFpbkludGVyc2VjdEFTTCB0ZXh0IHRleHRMb2cgJyArXG4gICAgICAgICd0ZXh0TG9nRm9ybWF0IHRnIHRpbWUgdGltZU11bHRpcGxpZXIgdGl0bGVDdXQgdGl0bGVGYWRlT3V0IHRpdGxlT2JqIHRpdGxlUnNjIHRpdGxlVGV4dCB0b0FycmF5ICcgK1xuICAgICAgICAndG9GaXhlZCB0b0xvd2VyIHRvU3RyaW5nIHRvVXBwZXIgdHJpZ2dlckFjdGl2YXRlZCB0cmlnZ2VyQWN0aXZhdGlvbiB0cmlnZ2VyQXJlYSAnICtcbiAgICAgICAgJ3RyaWdnZXJBdHRhY2hlZFZlaGljbGUgdHJpZ2dlckF0dGFjaE9iamVjdCB0cmlnZ2VyQXR0YWNoVmVoaWNsZSB0cmlnZ2VyU3RhdGVtZW50cyB0cmlnZ2VyVGV4dCAnICtcbiAgICAgICAgJ3RyaWdnZXJUaW1lb3V0IHRyaWdnZXJUaW1lb3V0Q3VycmVudCB0cmlnZ2VyVHlwZSB0dXJyZXRMb2NhbCB0dXJyZXRPd25lciB0dXJyZXRVbml0IHR2QWRkIHR2Q2xlYXIgJyArXG4gICAgICAgICd0dkNvbGxhcHNlIHR2Q291bnQgdHZDdXJTZWwgdHZEYXRhIHR2RGVsZXRlIHR2RXhwYW5kIHR2UGljdHVyZSB0dlNldEN1clNlbCB0dlNldERhdGEgdHZTZXRQaWN0dXJlICcgK1xuICAgICAgICAndHZTZXRQaWN0dXJlQ29sb3IgdHZTZXRQaWN0dXJlQ29sb3JEaXNhYmxlZCB0dlNldFBpY3R1cmVDb2xvclNlbGVjdGVkIHR2U2V0UGljdHVyZVJpZ2h0ICcgK1xuICAgICAgICAndHZTZXRQaWN0dXJlUmlnaHRDb2xvciB0dlNldFBpY3R1cmVSaWdodENvbG9yRGlzYWJsZWQgdHZTZXRQaWN0dXJlUmlnaHRDb2xvclNlbGVjdGVkIHR2U2V0VGV4dCAnICtcbiAgICAgICAgJ3R2U2V0VG9vbHRpcCB0dlNldFZhbHVlIHR2U29ydCB0dlNvcnRCeVZhbHVlIHR2VGV4dCB0dlRvb2x0aXAgdHZWYWx1ZSB0eXBlIHR5cGVOYW1lIHR5cGVPZiAnICtcbiAgICAgICAgJ1VBVkNvbnRyb2wgdWlOYW1lc3BhY2UgdWlTbGVlcCB1bmFzc2lnbkN1cmF0b3IgdW5hc3NpZ25JdGVtIHVuYXNzaWduVGVhbSB1bmFzc2lnblZlaGljbGUgJyArXG4gICAgICAgICd1bmRlcndhdGVyIHVuaWZvcm0gdW5pZm9ybUNvbnRhaW5lciB1bmlmb3JtSXRlbXMgdW5pZm9ybU1hZ2F6aW5lcyB1bml0QWRkb25zIHVuaXRBaW1Qb3NpdGlvbiAnICtcbiAgICAgICAgJ3VuaXRBaW1Qb3NpdGlvblZpc3VhbCB1bml0QmFja3BhY2sgdW5pdElzVUFWIHVuaXRQb3MgdW5pdFJlYWR5IHVuaXRSZWNvaWxDb2VmZmljaWVudCB1bml0cyAnICtcbiAgICAgICAgJ3VuaXRzQmVsb3dIZWlnaHQgdW5saW5rSXRlbSB1bmxvY2tBY2hpZXZlbWVudCB1bnJlZ2lzdGVyVGFzayB1cGRhdGVEcmF3SWNvbiB1cGRhdGVNZW51SXRlbSAnICtcbiAgICAgICAgJ3VwZGF0ZU9iamVjdFRyZWUgdXNlQUlTdGVlcmluZ0NvbXBvbmVudCB1c2VBdWRpb1RpbWVGb3JNb3ZlcyB2ZWN0b3JBZGQgdmVjdG9yQ29zICcgK1xuICAgICAgICAndmVjdG9yQ3Jvc3NQcm9kdWN0IHZlY3RvckRpZmYgdmVjdG9yRGlyIHZlY3RvckRpclZpc3VhbCB2ZWN0b3JEaXN0YW5jZSB2ZWN0b3JEaXN0YW5jZVNxciAnICtcbiAgICAgICAgJ3ZlY3RvckRvdFByb2R1Y3QgdmVjdG9yRnJvbVRvIHZlY3Rvck1hZ25pdHVkZSB2ZWN0b3JNYWduaXR1ZGVTcXIgdmVjdG9yTXVsdGlwbHkgdmVjdG9yTm9ybWFsaXplZCAnICtcbiAgICAgICAgJ3ZlY3RvclVwIHZlY3RvclVwVmlzdWFsIHZlaGljbGUgdmVoaWNsZUNhcmdvRW5hYmxlZCB2ZWhpY2xlQ2hhdCB2ZWhpY2xlUmFkaW8gdmVoaWNsZXMgJyArXG4gICAgICAgICd2ZWhpY2xlVmFyTmFtZSB2ZWxvY2l0eSB2ZWxvY2l0eU1vZGVsU3BhY2UgdmVyaWZ5U2lnbmF0dXJlIHZlc3QgdmVzdENvbnRhaW5lciB2ZXN0SXRlbXMgJyArXG4gICAgICAgICd2ZXN0TWFnYXppbmVzIHZpZXdEaXN0YW5jZSB2aXNpYmxlQ29tcGFzcyB2aXNpYmxlR1BTIHZpc2libGVNYXAgdmlzaWJsZVBvc2l0aW9uICcgK1xuICAgICAgICAndmlzaWJsZVBvc2l0aW9uQVNMIHZpc2libGVTY29yZXRhYmxlIHZpc2libGVXYXRjaCB3YXZlcyB3YXlwb2ludEF0dGFjaGVkT2JqZWN0ICcgK1xuICAgICAgICAnd2F5cG9pbnRBdHRhY2hlZFZlaGljbGUgd2F5cG9pbnRBdHRhY2hPYmplY3Qgd2F5cG9pbnRBdHRhY2hWZWhpY2xlIHdheXBvaW50QmVoYXZpb3VyICcgK1xuICAgICAgICAnd2F5cG9pbnRDb21iYXRNb2RlIHdheXBvaW50Q29tcGxldGlvblJhZGl1cyB3YXlwb2ludERlc2NyaXB0aW9uIHdheXBvaW50Rm9yY2VCZWhhdmlvdXIgJyArXG4gICAgICAgICd3YXlwb2ludEZvcm1hdGlvbiB3YXlwb2ludEhvdXNlUG9zaXRpb24gd2F5cG9pbnRMb2l0ZXJSYWRpdXMgd2F5cG9pbnRMb2l0ZXJUeXBlIHdheXBvaW50TmFtZSAnICtcbiAgICAgICAgJ3dheXBvaW50UG9zaXRpb24gd2F5cG9pbnRzIHdheXBvaW50U2NyaXB0IHdheXBvaW50c0VuYWJsZWRVQVYgd2F5cG9pbnRTaG93IHdheXBvaW50U3BlZWQgJyArXG4gICAgICAgICd3YXlwb2ludFN0YXRlbWVudHMgd2F5cG9pbnRUaW1lb3V0IHdheXBvaW50VGltZW91dEN1cnJlbnQgd2F5cG9pbnRUeXBlIHdheXBvaW50VmlzaWJsZSAnICtcbiAgICAgICAgJ3dlYXBvbkFjY2Vzc29yaWVzIHdlYXBvbkFjY2Vzc29yaWVzQ2FyZ28gd2VhcG9uQ2FyZ28gd2VhcG9uRGlyZWN0aW9uIHdlYXBvbkluZXJ0aWEgd2VhcG9uTG93ZXJlZCAnICtcbiAgICAgICAgJ3dlYXBvbnMgd2VhcG9uc0l0ZW1zIHdlYXBvbnNJdGVtc0NhcmdvIHdlYXBvblN0YXRlIHdlYXBvbnNUdXJyZXQgd2VpZ2h0UlREIHdlc3QgV0ZTaWRlVGV4dCB3aW5kJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlIG5pbCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIFZBUklBQkxFLFxuICAgICAgRlVOQ1RJT04sXG4gICAgICBTVFJJTkdTLFxuICAgICAgQ1BQLnByZXByb2Nlc3NvclxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ09NTUVOVF9NT0RFID0gaGxqcy5DT01NRU5UKCctLScsICckJyk7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAvWzw+e30qI10vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6XG4gICAgICAgICAgJ2JlZ2luIGVuZCBzdGFydCBjb21taXQgcm9sbGJhY2sgc2F2ZXBvaW50IGxvY2sgYWx0ZXIgY3JlYXRlIGRyb3AgcmVuYW1lIGNhbGwgJyArXG4gICAgICAgICAgJ2RlbGV0ZSBkbyBoYW5kbGVyIGluc2VydCBsb2FkIHJlcGxhY2Ugc2VsZWN0IHRydW5jYXRlIHVwZGF0ZSBzZXQgc2hvdyBwcmFnbWEgZ3JhbnQgJyArXG4gICAgICAgICAgJ21lcmdlIGRlc2NyaWJlIHVzZSBleHBsYWluIGhlbHAgZGVjbGFyZSBwcmVwYXJlIGV4ZWN1dGUgZGVhbGxvY2F0ZSByZWxlYXNlICcgK1xuICAgICAgICAgICd1bmxvY2sgcHVyZ2UgcmVzZXQgY2hhbmdlIHN0b3AgYW5hbHl6ZSBjYWNoZSBmbHVzaCBvcHRpbWl6ZSByZXBhaXIga2lsbCAnICtcbiAgICAgICAgICAnaW5zdGFsbCB1bmluc3RhbGwgY2hlY2tzdW0gcmVzdG9yZSBjaGVjayBiYWNrdXAgcmV2b2tlIGNvbW1lbnQnLFxuICAgICAgICBlbmQ6IC87LywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIGxleGVtZXM6IC9bXFx3XFwuXSsvLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAnYWJvcnQgYWJzIGFic29sdXRlIGFjYyBhY2NlIGFjY2VwIGFjY2VwdCBhY2Nlc3MgYWNjZXNzZWQgYWNjZXNzaWJsZSBhY2NvdW50IGFjb3MgYWN0aW9uIGFjdGl2YXRlIGFkZCAnICtcbiAgICAgICAgICAgICdhZGR0aW1lIGFkbWluIGFkbWluaXN0ZXIgYWR2YW5jZWQgYWR2aXNlIGFlc19kZWNyeXB0IGFlc19lbmNyeXB0IGFmdGVyIGFnZW50IGFnZ3JlZ2F0ZSBhbGkgYWxpYSBhbGlhcyAnICtcbiAgICAgICAgICAgICdhbGxvY2F0ZSBhbGxvdyBhbHRlciBhbHdheXMgYW5hbHl6ZSBhbmNpbGxhcnkgYW5kIGFueSBhbnlkYXRhIGFueWRhdGFzZXQgYW55c2NoZW1hIGFueXR5cGUgYXBwbHkgJyArXG4gICAgICAgICAgICAnYXJjaGl2ZSBhcmNoaXZlZCBhcmNoaXZlbG9nIGFyZSBhcyBhc2MgYXNjaWkgYXNpbiBhc3NlbWJseSBhc3NlcnRpb24gYXNzb2NpYXRlIGFzeW5jaHJvbm91cyBhdCBhdGFuICcgK1xuICAgICAgICAgICAgJ2F0bjIgYXR0ciBhdHRyaSBhdHRyaWIgYXR0cmlidSBhdHRyaWJ1dCBhdHRyaWJ1dGUgYXR0cmlidXRlcyBhdWRpdCBhdXRoZW50aWNhdGVkIGF1dGhlbnRpY2F0aW9uIGF1dGhpZCAnICtcbiAgICAgICAgICAgICdhdXRob3JzIGF1dG8gYXV0b2FsbG9jYXRlIGF1dG9kYmxpbmsgYXV0b2V4dGVuZCBhdXRvbWF0aWMgYXZhaWxhYmlsaXR5IGF2ZyBiYWNrdXAgYmFkZmlsZSBiYXNpY2ZpbGUgJyArXG4gICAgICAgICAgICAnYmVmb3JlIGJlZ2luIGJlZ2lubmluZyBiZW5jaG1hcmsgYmV0d2VlbiBiZmlsZSBiZmlsZV9iYXNlIGJpZyBiaWdmaWxlIGJpbiBiaW5hcnlfZG91YmxlIGJpbmFyeV9mbG9hdCAnICtcbiAgICAgICAgICAgICdiaW5sb2cgYml0X2FuZCBiaXRfY291bnQgYml0X2xlbmd0aCBiaXRfb3IgYml0X3hvciBiaXRtYXAgYmxvYl9iYXNlIGJsb2NrIGJsb2Nrc2l6ZSBib2R5IGJvdGggYm91bmQgJyArXG4gICAgICAgICAgICAnYnVmZmVyX2NhY2hlIGJ1ZmZlcl9wb29sIGJ1aWxkIGJ1bGsgYnkgYnl0ZSBieXRlb3JkZXJtYXJrIGJ5dGVzIGNhY2hlIGNhY2hpbmcgY2FsbCBjYWxsaW5nIGNhbmNlbCAnICtcbiAgICAgICAgICAgICdjYXBhY2l0eSBjYXNjYWRlIGNhc2NhZGVkIGNhc2UgY2FzdCBjYXRhbG9nIGNhdGVnb3J5IGNlaWwgY2VpbGluZyBjaGFpbiBjaGFuZ2UgY2hhbmdlZCBjaGFyX2Jhc2UgJyArXG4gICAgICAgICAgICAnY2hhcl9sZW5ndGggY2hhcmFjdGVyX2xlbmd0aCBjaGFyYWN0ZXJzIGNoYXJhY3RlcnNldCBjaGFyaW5kZXggY2hhcnNldCBjaGFyc2V0Zm9ybSBjaGFyc2V0aWQgY2hlY2sgJyArXG4gICAgICAgICAgICAnY2hlY2tzdW0gY2hlY2tzdW1fYWdnIGNoaWxkIGNob29zZSBjaHIgY2h1bmsgY2xhc3MgY2xlYW51cCBjbGVhciBjbGllbnQgY2xvYiBjbG9iX2Jhc2UgY2xvbmUgY2xvc2UgJyArXG4gICAgICAgICAgICAnY2x1c3Rlcl9pZCBjbHVzdGVyX3Byb2JhYmlsaXR5IGNsdXN0ZXJfc2V0IGNsdXN0ZXJpbmcgY29hbGVzY2UgY29lcmNpYmlsaXR5IGNvbCBjb2xsYXRlIGNvbGxhdGlvbiAnICtcbiAgICAgICAgICAgICdjb2xsZWN0IGNvbHUgY29sdW0gY29sdW1uIGNvbHVtbl92YWx1ZSBjb2x1bW5zIGNvbHVtbnNfdXBkYXRlZCBjb21tZW50IGNvbW1pdCBjb21wYWN0IGNvbXBhdGliaWxpdHkgJyArXG4gICAgICAgICAgICAnY29tcGlsZWQgY29tcGxldGUgY29tcG9zaXRlX2xpbWl0IGNvbXBvdW5kIGNvbXByZXNzIGNvbXB1dGUgY29uY2F0IGNvbmNhdF93cyBjb25jdXJyZW50IGNvbmZpcm0gY29ubiAnICtcbiAgICAgICAgICAgICdjb25uZWMgY29ubmVjdCBjb25uZWN0X2J5X2lzY3ljbGUgY29ubmVjdF9ieV9pc2xlYWYgY29ubmVjdF9ieV9yb290IGNvbm5lY3RfdGltZSBjb25uZWN0aW9uICcgK1xuICAgICAgICAgICAgJ2NvbnNpZGVyIGNvbnNpc3RlbnQgY29uc3RhbnQgY29uc3RyYWludCBjb25zdHJhaW50cyBjb25zdHJ1Y3RvciBjb250YWluZXIgY29udGVudCBjb250ZW50cyBjb250ZXh0ICcgK1xuICAgICAgICAgICAgJ2NvbnRyaWJ1dG9ycyBjb250cm9sZmlsZSBjb252IGNvbnZlcnQgY29udmVydF90eiBjb3JyIGNvcnJfayBjb3JyX3MgY29ycmVzcG9uZGluZyBjb3JydXB0aW9uIGNvcyBjb3N0ICcgK1xuICAgICAgICAgICAgJ2NvdW50IGNvdW50X2JpZyBjb3VudGVkIGNvdmFyX3BvcCBjb3Zhcl9zYW1wIGNwdV9wZXJfY2FsbCBjcHVfcGVyX3Nlc3Npb24gY3JjMzIgY3JlYXRlIGNyZWF0aW9uICcgK1xuICAgICAgICAgICAgJ2NyaXRpY2FsIGNyb3NzIGN1YmUgY3VtZV9kaXN0IGN1cmRhdGUgY3VycmVudCBjdXJyZW50X2RhdGUgY3VycmVudF90aW1lIGN1cnJlbnRfdGltZXN0YW1wIGN1cnJlbnRfdXNlciAnICtcbiAgICAgICAgICAgICdjdXJzb3IgY3VydGltZSBjdXN0b21kYXR1bSBjeWNsZSBkYXRhIGRhdGFiYXNlIGRhdGFiYXNlcyBkYXRhZmlsZSBkYXRhZmlsZXMgZGF0YWxlbmd0aCBkYXRlX2FkZCAnICtcbiAgICAgICAgICAgICdkYXRlX2NhY2hlIGRhdGVfZm9ybWF0IGRhdGVfc3ViIGRhdGVhZGQgZGF0ZWRpZmYgZGF0ZWZyb21wYXJ0cyBkYXRlbmFtZSBkYXRlcGFydCBkYXRldGltZTJmcm9tcGFydHMgJyArXG4gICAgICAgICAgICAnZGF5IGRheV90b19zZWNvbmQgZGF5bmFtZSBkYXlvZm1vbnRoIGRheW9md2VlayBkYXlvZnllYXIgZGF5cyBkYl9yb2xlX2NoYW5nZSBkYnRpbWV6b25lIGRkbCBkZWFsbG9jYXRlICcgK1xuICAgICAgICAgICAgJ2RlY2xhcmUgZGVjb2RlIGRlY29tcG9zZSBkZWNyZW1lbnQgZGVjcnlwdCBkZWR1cGxpY2F0ZSBkZWYgZGVmYSBkZWZhdSBkZWZhdWwgZGVmYXVsdCBkZWZhdWx0cyAnICtcbiAgICAgICAgICAgICdkZWZlcnJlZCBkZWZpIGRlZmluIGRlZmluZSBkZWdyZWVzIGRlbGF5ZWQgZGVsZWdhdGUgZGVsZXRlIGRlbGV0ZV9hbGwgZGVsaW1pdGVkIGRlbWFuZCBkZW5zZV9yYW5rICcgK1xuICAgICAgICAgICAgJ2RlcHRoIGRlcXVldWUgZGVzX2RlY3J5cHQgZGVzX2VuY3J5cHQgZGVzX2tleV9maWxlIGRlc2MgZGVzY3IgZGVzY3JpIGRlc2NyaWIgZGVzY3JpYmUgZGVzY3JpcHRvciAnICtcbiAgICAgICAgICAgICdkZXRlcm1pbmlzdGljIGRpYWdub3N0aWNzIGRpZmZlcmVuY2UgZGltZW5zaW9uIGRpcmVjdF9sb2FkIGRpcmVjdG9yeSBkaXNhYmxlIGRpc2FibGVfYWxsICcgK1xuICAgICAgICAgICAgJ2Rpc2FsbG93IGRpc2Fzc29jaWF0ZSBkaXNjYXJkZmlsZSBkaXNjb25uZWN0IGRpc2tncm91cCBkaXN0aW5jdCBkaXN0aW5jdHJvdyBkaXN0cmlidXRlIGRpc3RyaWJ1dGVkIGRpdiAnICtcbiAgICAgICAgICAgICdkbyBkb2N1bWVudCBkb21haW4gZG90bmV0IGRvdWJsZSBkb3duZ3JhZGUgZHJvcCBkdW1wZmlsZSBkdXBsaWNhdGUgZHVyYXRpb24gZWFjaCBlZGl0aW9uIGVkaXRpb25hYmxlICcgK1xuICAgICAgICAgICAgJ2VkaXRpb25zIGVsZW1lbnQgZWxsaXBzaXMgZWxzZSBlbHNpZiBlbHQgZW1wdHkgZW5hYmxlIGVuYWJsZV9hbGwgZW5jbG9zZWQgZW5jb2RlIGVuY29kaW5nIGVuY3J5cHQgJyArXG4gICAgICAgICAgICAnZW5kIGVuZC1leGVjIGVuZGlhbiBlbmZvcmNlZCBlbmdpbmUgZW5naW5lcyBlbnF1ZXVlIGVudGVycHJpc2UgZW50aXR5ZXNjYXBpbmcgZW9tb250aCBlcnJvciBlcnJvcnMgJyArXG4gICAgICAgICAgICAnZXNjYXBlZCBldmFsbmFtZSBldmFsdWF0ZSBldmVudCBldmVudGRhdGEgZXZlbnRzIGV4Y2VwdCBleGNlcHRpb24gZXhjZXB0aW9ucyBleGNoYW5nZSBleGNsdWRlIGV4Y2x1ZGluZyAnICtcbiAgICAgICAgICAgICdleGVjdSBleGVjdXQgZXhlY3V0ZSBleGVtcHQgZXhpc3RzIGV4aXQgZXhwIGV4cGlyZSBleHBsYWluIGV4cG9ydCBleHBvcnRfc2V0IGV4dGVuZGVkIGV4dGVudCBleHRlcm5hbCAnICtcbiAgICAgICAgICAgICdleHRlcm5hbF8xIGV4dGVybmFsXzIgZXh0ZXJuYWxseSBleHRyYWN0IGZhaWxlZCBmYWlsZWRfbG9naW5fYXR0ZW1wdHMgZmFpbG92ZXIgZmFpbHVyZSBmYXIgZmFzdCAnICtcbiAgICAgICAgICAgICdmZWF0dXJlX3NldCBmZWF0dXJlX3ZhbHVlIGZldGNoIGZpZWxkIGZpZWxkcyBmaWxlIGZpbGVfbmFtZV9jb252ZXJ0IGZpbGVzeXN0ZW1fbGlrZV9sb2dnaW5nIGZpbmFsICcgK1xuICAgICAgICAgICAgJ2ZpbmlzaCBmaXJzdCBmaXJzdF92YWx1ZSBmaXhlZCBmbGFzaF9jYWNoZSBmbGFzaGJhY2sgZmxvb3IgZmx1c2ggZm9sbG93aW5nIGZvbGxvd3MgZm9yIGZvcmFsbCBmb3JjZSAnICtcbiAgICAgICAgICAgICdmb3JtIGZvcm1hIGZvcm1hdCBmb3VuZCBmb3VuZF9yb3dzIGZyZWVsaXN0IGZyZWVsaXN0cyBmcmVlcG9vbHMgZnJlc2ggZnJvbSBmcm9tX2Jhc2U2NCBmcm9tX2RheXMgJyArXG4gICAgICAgICAgICAnZnRwIGZ1bGwgZnVuY3Rpb24gZ2VuZXJhbCBnZW5lcmF0ZWQgZ2V0IGdldF9mb3JtYXQgZ2V0X2xvY2sgZ2V0ZGF0ZSBnZXR1dGNkYXRlIGdsb2JhbCBnbG9iYWxfbmFtZSAnICtcbiAgICAgICAgICAgICdnbG9iYWxseSBnbyBnb3RvIGdyYW50IGdyYW50cyBncmVhdGVzdCBncm91cCBncm91cF9jb25jYXQgZ3JvdXBfaWQgZ3JvdXBpbmcgZ3JvdXBpbmdfaWQgZ3JvdXBzICcgK1xuICAgICAgICAgICAgJ2d0aWRfc3VidHJhY3QgZ3VhcmFudGVlIGd1YXJkIGhhbmRsZXIgaGFzaCBoYXNoa2V5cyBoYXZpbmcgaGVhIGhlYWQgaGVhZGkgaGVhZGluIGhlYWRpbmcgaGVhcCBoZWxwIGhleCAnICtcbiAgICAgICAgICAgICdoaWVyYXJjaHkgaGlnaCBoaWdoX3ByaW9yaXR5IGhvc3RzIGhvdXIgaHR0cCBpZCBpZGVudF9jdXJyZW50IGlkZW50X2luY3IgaWRlbnRfc2VlZCBpZGVudGlmaWVkICcgK1xuICAgICAgICAgICAgJ2lkZW50aXR5IGlkbGVfdGltZSBpZiBpZm51bGwgaWdub3JlIGlpZiBpbGlrZSBpbG0gaW1tZWRpYXRlIGltcG9ydCBpbiBpbmNsdWRlIGluY2x1ZGluZyBpbmNyZW1lbnQgJyArXG4gICAgICAgICAgICAnaW5kZXggaW5kZXhlcyBpbmRleGluZyBpbmRleHR5cGUgaW5kaWNhdG9yIGluZGljZXMgaW5ldDZfYXRvbiBpbmV0Nl9udG9hIGluZXRfYXRvbiBpbmV0X250b2EgaW5maWxlICcgK1xuICAgICAgICAgICAgJ2luaXRpYWwgaW5pdGlhbGl6ZWQgaW5pdGlhbGx5IGluaXRyYW5zIGlubWVtb3J5IGlubmVyIGlubm9kYiBpbnB1dCBpbnNlcnQgaW5zdGFsbCBpbnN0YW5jZSBpbnN0YW50aWFibGUgJyArXG4gICAgICAgICAgICAnaW5zdHIgaW50ZXJmYWNlIGludGVybGVhdmVkIGludGVyc2VjdCBpbnRvIGludmFsaWRhdGUgaW52aXNpYmxlIGlzIGlzX2ZyZWVfbG9jayBpc19pcHY0IGlzX2lwdjRfY29tcGF0ICcgK1xuICAgICAgICAgICAgJ2lzX25vdCBpc19ub3RfbnVsbCBpc191c2VkX2xvY2sgaXNkYXRlIGlzbnVsbCBpc29sYXRpb24gaXRlcmF0ZSBqYXZhIGpvaW4ganNvbiBqc29uX2V4aXN0cyAnICtcbiAgICAgICAgICAgICdrZWVwIGtlZXBfZHVwbGljYXRlcyBrZXkga2V5cyBraWxsIGxhbmd1YWdlIGxhcmdlIGxhc3QgbGFzdF9kYXkgbGFzdF9pbnNlcnRfaWQgbGFzdF92YWx1ZSBsYXggbGNhc2UgJyArXG4gICAgICAgICAgICAnbGVhZCBsZWFkaW5nIGxlYXN0IGxlYXZlcyBsZWZ0IGxlbiBsZW5naHQgbGVuZ3RoIGxlc3MgbGV2ZWwgbGV2ZWxzIGxpYnJhcnkgbGlrZSBsaWtlMiBsaWtlNCBsaWtlYyBsaW1pdCAnICtcbiAgICAgICAgICAgICdsaW5lcyBsaW5rIGxpc3QgbGlzdGFnZyBsaXR0bGUgbG4gbG9hZCBsb2FkX2ZpbGUgbG9iIGxvYnMgbG9jYWwgbG9jYWx0aW1lIGxvY2FsdGltZXN0YW1wIGxvY2F0ZSAnICtcbiAgICAgICAgICAgICdsb2NhdG9yIGxvY2sgbG9ja2VkIGxvZyBsb2cxMCBsb2cyIGxvZ2ZpbGUgbG9nZmlsZXMgbG9nZ2luZyBsb2dpY2FsIGxvZ2ljYWxfcmVhZHNfcGVyX2NhbGwgJyArXG4gICAgICAgICAgICAnbG9nb2ZmIGxvZ29uIGxvZ3MgbG9uZyBsb29wIGxvdyBsb3dfcHJpb3JpdHkgbG93ZXIgbHBhZCBscnRyaW0gbHRyaW0gbWFpbiBtYWtlX3NldCBtYWtlZGF0ZSBtYWtldGltZSAnICtcbiAgICAgICAgICAgICdtYW5hZ2VkIG1hbmFnZW1lbnQgbWFudWFsIG1hcCBtYXBwaW5nIG1hc2sgbWFzdGVyIG1hc3Rlcl9wb3Nfd2FpdCBtYXRjaCBtYXRjaGVkIG1hdGVyaWFsaXplZCBtYXggJyArXG4gICAgICAgICAgICAnbWF4ZXh0ZW50cyBtYXhpbWl6ZSBtYXhpbnN0YW5jZXMgbWF4bGVuIG1heGxvZ2ZpbGVzIG1heGxvZ2hpc3RvcnkgbWF4bG9nbWVtYmVycyBtYXhzaXplIG1heHRyYW5zICcgK1xuICAgICAgICAgICAgJ21kNSBtZWFzdXJlcyBtZWRpYW4gbWVkaXVtIG1lbWJlciBtZW1jb21wcmVzcyBtZW1vcnkgbWVyZ2UgbWljcm9zZWNvbmQgbWlkIG1pZ3JhdGlvbiBtaW4gbWluZXh0ZW50cyAnICtcbiAgICAgICAgICAgICdtaW5pbXVtIG1pbmluZyBtaW51cyBtaW51dGUgbWludmFsdWUgbWlzc2luZyBtb2QgbW9kZSBtb2RlbCBtb2RpZmljYXRpb24gbW9kaWZ5IG1vZHVsZSBtb25pdG9yaW5nIG1vbnRoICcgK1xuICAgICAgICAgICAgJ21vbnRocyBtb3VudCBtb3ZlIG1vdmVtZW50IG11bHRpc2V0IG11dGV4IG5hbWUgbmFtZV9jb25zdCBuYW1lcyBuYW4gbmF0aW9uYWwgbmF0aXZlIG5hdHVyYWwgbmF2IG5jaGFyICcgK1xuICAgICAgICAgICAgJ25jbG9iIG5lc3RlZCBuZXZlciBuZXcgbmV3bGluZSBuZXh0IG5leHR2YWwgbm8gbm9fd3JpdGVfdG9fYmlubG9nIG5vYXJjaGl2ZWxvZyBub2F1ZGl0IG5vYmFkZmlsZSAnICtcbiAgICAgICAgICAgICdub2NoZWNrIG5vY29tcHJlc3Mgbm9jb3B5IG5vY3ljbGUgbm9kZWxheSBub2Rpc2NhcmRmaWxlIG5vZW50aXR5ZXNjYXBpbmcgbm9ndWFyYW50ZWUgbm9rZWVwIG5vbG9nZmlsZSAnICtcbiAgICAgICAgICAgICdub21hcHBpbmcgbm9tYXh2YWx1ZSBub21pbmltaXplIG5vbWludmFsdWUgbm9tb25pdG9yaW5nIG5vbmUgbm9uZWRpdGlvbmFibGUgbm9uc2NoZW1hIG5vb3JkZXIgJyArXG4gICAgICAgICAgICAnbm9wciBub3BybyBub3Byb20gbm9wcm9tcCBub3Byb21wdCBub3JlbHkgbm9yZXNldGxvZ3Mgbm9yZXZlcnNlIG5vcm1hbCBub3Jvd2RlcGVuZGVuY2llcyBub3NjaGVtYWNoZWNrICcgK1xuICAgICAgICAgICAgJ25vc3dpdGNoIG5vdCBub3RoaW5nIG5vdGljZSBub3RyaW0gbm92YWxpZGF0ZSBub3cgbm93YWl0IG50aF92YWx1ZSBudWxsaWYgbnVsbHMgbnVtIG51bWIgbnVtYmUgJyArXG4gICAgICAgICAgICAnbnZhcmNoYXIgbnZhcmNoYXIyIG9iamVjdCBvY2ljb2xsIG9jaWRhdGUgb2NpZGF0ZXRpbWUgb2NpZHVyYXRpb24gb2NpaW50ZXJ2YWwgb2NpbG9ibG9jYXRvciBvY2ludW1iZXIgJyArXG4gICAgICAgICAgICAnb2NpcmVmIG9jaXJlZmN1cnNvciBvY2lyb3dpZCBvY2lzdHJpbmcgb2NpdHlwZSBvY3Qgb2N0ZXRfbGVuZ3RoIG9mIG9mZiBvZmZsaW5lIG9mZnNldCBvaWQgb2lkaW5kZXggb2xkICcgK1xuICAgICAgICAgICAgJ29uIG9ubGluZSBvbmx5IG9wYXF1ZSBvcGVuIG9wZXJhdGlvbnMgb3BlcmF0b3Igb3B0aW1hbCBvcHRpbWl6ZSBvcHRpb24gb3B0aW9uYWxseSBvciBvcmFjbGUgb3JhY2xlX2RhdGUgJyArXG4gICAgICAgICAgICAnb3JhZGF0YSBvcmQgb3JkYXVkaW8gb3JkZGljb20gb3JkZG9jIG9yZGVyIG9yZGltYWdlIG9yZGluYWxpdHkgb3JkdmlkZW8gb3JnYW5pemF0aW9uIG9ybGFueSBvcmx2YXJ5ICcgK1xuICAgICAgICAgICAgJ291dCBvdXRlciBvdXRmaWxlIG91dGxpbmUgb3V0cHV0IG92ZXIgb3ZlcmZsb3cgb3ZlcnJpZGluZyBwYWNrYWdlIHBhZCBwYXJhbGxlbCBwYXJhbGxlbF9lbmFibGUgJyArXG4gICAgICAgICAgICAncGFyYW1ldGVycyBwYXJlbnQgcGFyc2UgcGFydGlhbCBwYXJ0aXRpb24gcGFydGl0aW9ucyBwYXNjYWwgcGFzc2luZyBwYXNzd29yZCBwYXNzd29yZF9ncmFjZV90aW1lICcgK1xuICAgICAgICAgICAgJ3Bhc3N3b3JkX2xvY2tfdGltZSBwYXNzd29yZF9yZXVzZV9tYXggcGFzc3dvcmRfcmV1c2VfdGltZSBwYXNzd29yZF92ZXJpZnlfZnVuY3Rpb24gcGF0Y2ggcGF0aCBwYXRpbmRleCAnICtcbiAgICAgICAgICAgICdwY3RpbmNyZWFzZSBwY3R0aHJlc2hvbGQgcGN0dXNlZCBwY3R2ZXJzaW9uIHBlcmNlbnQgcGVyY2VudF9yYW5rIHBlcmNlbnRpbGVfY29udCBwZXJjZW50aWxlX2Rpc2MgJyArXG4gICAgICAgICAgICAncGVyZm9ybWFuY2UgcGVyaW9kIHBlcmlvZF9hZGQgcGVyaW9kX2RpZmYgcGVybWFuZW50IHBoeXNpY2FsIHBpIHBpcGUgcGlwZWxpbmVkIHBpdm90IHBsdWdnYWJsZSBwbHVnaW4gJyArXG4gICAgICAgICAgICAncG9saWN5IHBvc2l0aW9uIHBvc3RfdHJhbnNhY3Rpb24gcG93IHBvd2VyIHByYWdtYSBwcmVidWlsdCBwcmVjZWRlcyBwcmVjZWRpbmcgcHJlY2lzaW9uIHByZWRpY3Rpb24gJyArXG4gICAgICAgICAgICAncHJlZGljdGlvbl9jb3N0IHByZWRpY3Rpb25fZGV0YWlscyBwcmVkaWN0aW9uX3Byb2JhYmlsaXR5IHByZWRpY3Rpb25fc2V0IHByZXBhcmUgcHJlc2VudCBwcmVzZXJ2ZSAnICtcbiAgICAgICAgICAgICdwcmlvciBwcmlvcml0eSBwcml2YXRlIHByaXZhdGVfc2dhIHByaXZpbGVnZXMgcHJvY2VkdXJhbCBwcm9jZWR1cmUgcHJvY2VkdXJlX2FuYWx5emUgcHJvY2Vzc2xpc3QgJyArXG4gICAgICAgICAgICAncHJvZmlsZXMgcHJvamVjdCBwcm9tcHQgcHJvdGVjdGlvbiBwdWJsaWMgcHVibGlzaGluZ3NlcnZlcm5hbWUgcHVyZ2UgcXVhcnRlciBxdWVyeSBxdWljayBxdWllc2NlIHF1b3RhICcgK1xuICAgICAgICAgICAgJ3F1b3RlbmFtZSByYWRpYW5zIHJhaXNlIHJhbmQgcmFuZ2UgcmFuayByYXcgcmVhZCByZWFkcyByZWFkc2l6ZSByZWJ1aWxkIHJlY29yZCByZWNvcmRzICcgK1xuICAgICAgICAgICAgJ3JlY292ZXIgcmVjb3ZlcnkgcmVjdXJzaXZlIHJlY3ljbGUgcmVkbyByZWR1Y2VkIHJlZiByZWZlcmVuY2UgcmVmZXJlbmNlZCByZWZlcmVuY2VzIHJlZmVyZW5jaW5nIHJlZnJlc2ggJyArXG4gICAgICAgICAgICAncmVnZXhwX2xpa2UgcmVnaXN0ZXIgcmVncl9hdmd4IHJlZ3JfYXZneSByZWdyX2NvdW50IHJlZ3JfaW50ZXJjZXB0IHJlZ3JfcjIgcmVncl9zbG9wZSByZWdyX3N4eCByZWdyX3N4eSAnICtcbiAgICAgICAgICAgICdyZWplY3QgcmVrZXkgcmVsYXRpb25hbCByZWxhdGl2ZSByZWxheWxvZyByZWxlYXNlIHJlbGVhc2VfbG9jayByZWxpZXNfb24gcmVsb2NhdGUgcmVseSByZW0gcmVtYWluZGVyIHJlbmFtZSAnICtcbiAgICAgICAgICAgICdyZXBhaXIgcmVwZWF0IHJlcGxhY2UgcmVwbGljYXRlIHJlcGxpY2F0aW9uIHJlcXVpcmVkIHJlc2V0IHJlc2V0bG9ncyByZXNpemUgcmVzb3VyY2UgcmVzcGVjdCByZXN0b3JlICcgK1xuICAgICAgICAgICAgJ3Jlc3RyaWN0ZWQgcmVzdWx0IHJlc3VsdF9jYWNoZSByZXN1bWFibGUgcmVzdW1lIHJldGVudGlvbiByZXR1cm4gcmV0dXJuaW5nIHJldHVybnMgcmV1c2UgcmV2ZXJzZSByZXZva2UgJyArXG4gICAgICAgICAgICAncmlnaHQgcmxpa2Ugcm9sZSByb2xlcyByb2xsYmFjayByb2xsaW5nIHJvbGx1cCByb3VuZCByb3cgcm93X2NvdW50IHJvd2RlcGVuZGVuY2llcyByb3dpZCByb3dudW0gcm93cyAnICtcbiAgICAgICAgICAgICdydHJpbSBydWxlcyBzYWZlIHNhbHQgc2FtcGxlIHNhdmUgc2F2ZXBvaW50IHNiMSBzYjIgc2I0IHNjYW4gc2NoZW1hIHNjaGVtYWNoZWNrIHNjbiBzY29wZSBzY3JvbGwgJyArXG4gICAgICAgICAgICAnc2RvX2dlb3Jhc3RlciBzZG9fdG9wb19nZW9tZXRyeSBzZWFyY2ggc2VjX3RvX3RpbWUgc2Vjb25kIHNlY3Rpb24gc2VjdXJlZmlsZSBzZWN1cml0eSBzZWVkIHNlZ21lbnQgc2VsZWN0ICcgK1xuICAgICAgICAgICAgJ3NlbGYgc2VxdWVuY2Ugc2VxdWVudGlhbCBzZXJpYWxpemFibGUgc2VydmVyIHNlcnZlcmVycm9yIHNlc3Npb24gc2Vzc2lvbl91c2VyIHNlc3Npb25zX3Blcl91c2VyIHNldCAnICtcbiAgICAgICAgICAgICdzZXRzIHNldHRpbmdzIHNoYSBzaGExIHNoYTIgc2hhcmUgc2hhcmVkIHNoYXJlZF9wb29sIHNob3J0IHNob3cgc2hyaW5rIHNodXRkb3duIHNpX2F2ZXJhZ2Vjb2xvciAnICtcbiAgICAgICAgICAgICdzaV9jb2xvcmhpc3RvZ3JhbSBzaV9mZWF0dXJlbGlzdCBzaV9wb3NpdGlvbmFsY29sb3Igc2lfc3RpbGxpbWFnZSBzaV90ZXh0dXJlIHNpYmxpbmdzIHNpZCBzaWduIHNpbiAnICtcbiAgICAgICAgICAgICdzaXplIHNpemVfdCBzaXplcyBza2lwIHNsYXZlIHNsZWVwIHNtYWxsZGF0ZXRpbWVmcm9tcGFydHMgc21hbGxmaWxlIHNuYXBzaG90IHNvbWUgc29uYW1lIHNvcnQgc291bmRleCAnICtcbiAgICAgICAgICAgICdzb3VyY2Ugc3BhY2Ugc3BhcnNlIHNwZmlsZSBzcGxpdCBzcWwgc3FsX2JpZ19yZXN1bHQgc3FsX2J1ZmZlcl9yZXN1bHQgc3FsX2NhY2hlIHNxbF9jYWxjX2ZvdW5kX3Jvd3MgJyArXG4gICAgICAgICAgICAnc3FsX3NtYWxsX3Jlc3VsdCBzcWxfdmFyaWFudF9wcm9wZXJ0eSBzcWxjb2RlIHNxbGRhdGEgc3FsZXJyb3Igc3FsbmFtZSBzcWxzdGF0ZSBzcXJ0IHNxdWFyZSBzdGFuZGFsb25lICcgK1xuICAgICAgICAgICAgJ3N0YW5kYnkgc3RhcnQgc3RhcnRpbmcgc3RhcnR1cCBzdGF0ZW1lbnQgc3RhdGljIHN0YXRpc3RpY3Mgc3RhdHNfYmlub21pYWxfdGVzdCBzdGF0c19jcm9zc3RhYiAnICtcbiAgICAgICAgICAgICdzdGF0c19rc190ZXN0IHN0YXRzX21vZGUgc3RhdHNfbXdfdGVzdCBzdGF0c19vbmVfd2F5X2Fub3ZhIHN0YXRzX3RfdGVzdF8gc3RhdHNfdF90ZXN0X2luZGVwICcgK1xuICAgICAgICAgICAgJ3N0YXRzX3RfdGVzdF9vbmUgc3RhdHNfdF90ZXN0X3BhaXJlZCBzdGF0c193c3JfdGVzdCBzdGF0dXMgc3RkIHN0ZGRldiBzdGRkZXZfcG9wIHN0ZGRldl9zYW1wIHN0ZGV2ICcgK1xuICAgICAgICAgICAgJ3N0b3Agc3RvcmFnZSBzdG9yZSBzdG9yZWQgc3RyIHN0cl90b19kYXRlIHN0cmFpZ2h0X2pvaW4gc3RyY21wIHN0cmljdCBzdHJpbmcgc3RydWN0IHN0dWZmIHN0eWxlIHN1YmRhdGUgJyArXG4gICAgICAgICAgICAnc3VicGFydGl0aW9uIHN1YnBhcnRpdGlvbnMgc3Vic3RpdHV0YWJsZSBzdWJzdHIgc3Vic3RyaW5nIHN1YnRpbWUgc3VidHJpbmdfaW5kZXggc3VidHlwZSBzdWNjZXNzIHN1bSAnICtcbiAgICAgICAgICAgICdzdXNwZW5kIHN3aXRjaCBzd2l0Y2hvZmZzZXQgc3dpdGNob3ZlciBzeW5jIHN5bmNocm9ub3VzIHN5bm9ueW0gc3lzIHN5c194bWxhZ2cgc3lzYXNtIHN5c2F1eCBzeXNkYXRlICcgK1xuICAgICAgICAgICAgJ3N5c2RhdGV0aW1lb2Zmc2V0IHN5c2RiYSBzeXNvcGVyIHN5c3RlbSBzeXN0ZW1fdXNlciBzeXN1dGNkYXRldGltZSB0YWJsZSB0YWJsZXMgdGFibGVzcGFjZSB0YW4gdGRvICcgK1xuICAgICAgICAgICAgJ3RlbXBsYXRlIHRlbXBvcmFyeSB0ZXJtaW5hdGVkIHRlcnRpYXJ5X3dlaWdodHMgdGVzdCB0aGFuIHRoZW4gdGhyZWFkIHRocm91Z2ggdGllciB0aWVzIHRpbWUgdGltZV9mb3JtYXQgJyArXG4gICAgICAgICAgICAndGltZV96b25lIHRpbWVkaWZmIHRpbWVmcm9tcGFydHMgdGltZW91dCB0aW1lc3RhbXAgdGltZXN0YW1wYWRkIHRpbWVzdGFtcGRpZmYgdGltZXpvbmVfYWJiciAnICtcbiAgICAgICAgICAgICd0aW1lem9uZV9taW51dGUgdGltZXpvbmVfcmVnaW9uIHRvIHRvX2Jhc2U2NCB0b19kYXRlIHRvX2RheXMgdG9fc2Vjb25kcyB0b2RhdGV0aW1lb2Zmc2V0IHRyYWNlIHRyYWNraW5nICcgK1xuICAgICAgICAgICAgJ3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uYWwgdHJhbnNsYXRlIHRyYW5zbGF0aW9uIHRyZWF0IHRyaWdnZXIgdHJpZ2dlcl9uZXN0bGV2ZWwgdHJpZ2dlcnMgdHJpbSB0cnVuY2F0ZSAnICtcbiAgICAgICAgICAgICd0cnlfY2FzdCB0cnlfY29udmVydCB0cnlfcGFyc2UgdHlwZSB1YjEgdWIyIHViNCB1Y2FzZSB1bmFyY2hpdmVkIHVuYm91bmRlZCB1bmNvbXByZXNzICcgK1xuICAgICAgICAgICAgJ3VuZGVyIHVuZG8gdW5oZXggdW5pY29kZSB1bmlmb3JtIHVuaW5zdGFsbCB1bmlvbiB1bmlxdWUgdW5peF90aW1lc3RhbXAgdW5rbm93biB1bmxpbWl0ZWQgdW5sb2NrIHVucGl2b3QgJyArXG4gICAgICAgICAgICAndW5yZWNvdmVyYWJsZSB1bnNhZmUgdW5zaWduZWQgdW50aWwgdW50cnVzdGVkIHVudXNhYmxlIHVudXNlZCB1cGRhdGUgdXBkYXRlZCB1cGdyYWRlIHVwcGVkIHVwcGVyIHVwc2VydCAnICtcbiAgICAgICAgICAgICd1cmwgdXJvd2lkIHVzYWJsZSB1c2FnZSB1c2UgdXNlX3N0b3JlZF9vdXRsaW5lcyB1c2VyIHVzZXJfZGF0YSB1c2VyX3Jlc291cmNlcyB1c2VycyB1c2luZyB1dGNfZGF0ZSAnICtcbiAgICAgICAgICAgICd1dGNfdGltZXN0YW1wIHV1aWQgdXVpZF9zaG9ydCB2YWxpZGF0ZSB2YWxpZGF0ZV9wYXNzd29yZF9zdHJlbmd0aCB2YWxpZGF0aW9uIHZhbGlzdCB2YWx1ZSB2YWx1ZXMgdmFyICcgK1xuICAgICAgICAgICAgJ3Zhcl9zYW1wIHZhcmNoYXJjIHZhcmkgdmFyaWEgdmFyaWFiIHZhcmlhYmwgdmFyaWFibGUgdmFyaWFibGVzIHZhcmlhbmNlIHZhcnAgdmFycmF3IHZhcnJhd2MgdmFycmF5ICcgK1xuICAgICAgICAgICAgJ3ZlcmlmeSB2ZXJzaW9uIHZlcnNpb25zIHZpZXcgdmlydHVhbCB2aXNpYmxlIHZvaWQgd2FpdCB3YWxsZXQgd2FybmluZyB3YXJuaW5ncyB3ZWVrIHdlZWtkYXkgd2Vla29meWVhciAnICtcbiAgICAgICAgICAgICd3ZWxsZm9ybWVkIHdoZW4gd2hlbmUgd2hlbmV2IHdoZW5ldmUgd2hlbmV2ZXIgd2hlcmUgd2hpbGUgd2hpdGVzcGFjZSB3aXRoIHdpdGhpbiB3aXRob3V0IHdvcmsgd3JhcHBlZCAnICtcbiAgICAgICAgICAgICd4ZGIgeG1sIHhtbGFnZyB4bWxhdHRyaWJ1dGVzIHhtbGNhc3QgeG1sY29sYXR0dmFsIHhtbGVsZW1lbnQgeG1sZXhpc3RzIHhtbGZvcmVzdCB4bWxpbmRleCB4bWxuYW1lc3BhY2VzICcgK1xuICAgICAgICAgICAgJ3htbHBpIHhtbHF1ZXJ5IHhtbHJvb3QgeG1sc2NoZW1hIHhtbHNlcmlhbGl6ZSB4bWx0YWJsZSB4bWx0eXBlIHhvciB5ZWFyIHllYXJfdG9fbW9udGggeWVhcnMgeWVhcndlZWsnLFxuICAgICAgICAgIGxpdGVyYWw6XG4gICAgICAgICAgICAndHJ1ZSBmYWxzZSBudWxsJyxcbiAgICAgICAgICBidWlsdF9pbjpcbiAgICAgICAgICAgICdhcnJheSBiaWdpbnQgYmluYXJ5IGJpdCBibG9iIGJvb2xlYW4gY2hhciBjaGFyYWN0ZXIgZGF0ZSBkZWMgZGVjaW1hbCBmbG9hdCBpbnQgaW50OCBpbnRlZ2VyIGludGVydmFsIG51bWJlciAnICtcbiAgICAgICAgICAgICdudW1lcmljIHJlYWwgcmVjb3JkIHNlcmlhbCBzZXJpYWw4IHNtYWxsaW50IHRleHQgdmFyY2hhciB2YXJ5aW5nIHZvaWQnXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCB7YmVnaW46ICdcXCdcXCcnfV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIHtiZWdpbjogJ1wiXCInfV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICAgIGxleGVtZXM6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAvLyBTdGFuJ3Mga2V5d29yZHNcbiAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgJ2ZvciBpbiB3aGlsZSByZXBlYXQgdW50aWwgaWYgdGhlbiBlbHNlJyxcbiAgICAgICAgICAvLyBTdGFuJ3MgcHJvYmFibGl0eSBkaXN0cmlidXRpb25zIChsZXNzIGJldGEgYW5kIGdhbW1hLCBhcyBjb21tb25seVxuICAgICAgICAgIC8vIHVzZWQgZm9yIHBhcmFtZXRlciBuYW1lcykuIFNvIGZhciwgX2xvZyBhbmQgX3JuZyB2YXJpYW50cyBhcmUgbm90XG4gICAgICAgICAgLy8gaW5jbHVkZWRcbiAgICAgICAgICBzeW1ib2w6XG4gICAgICAgICAgICAnYmVybm91bGxpIGJlcm5vdWxsaV9sb2dpdCBiaW5vbWlhbCBiaW5vbWlhbF9sb2dpdCAnICAgICAgICAgICAgICAgK1xuICAgICAgICAgICAgJ2JldGFfYmlub21pYWwgaHlwZXJnZW9tZXRyaWMgY2F0ZWdvcmljYWwgY2F0ZWdvcmljYWxfbG9naXQgJyAgICAgICtcbiAgICAgICAgICAgICdvcmRlcmVkX2xvZ2lzdGljIG5lZ19iaW5vbWlhbCBuZWdfYmlub21pYWxfMiAnICAgICAgICAgICAgICAgICAgICArXG4gICAgICAgICAgICAnbmVnX2Jpbm9taWFsXzJfbG9nIHBvaXNzb24gcG9pc3Nvbl9sb2cgbXVsdGlub21pYWwgbm9ybWFsICcgICAgICAgK1xuICAgICAgICAgICAgJ2V4cF9tb2Rfbm9ybWFsIHNrZXdfbm9ybWFsIHN0dWRlbnRfdCBjYXVjaHkgZG91YmxlX2V4cG9uZW50aWFsICcgICtcbiAgICAgICAgICAgICdsb2dpc3RpYyBndW1iZWwgbG9nbm9ybWFsIGNoaV9zcXVhcmUgaW52X2NoaV9zcXVhcmUgJyAgICAgICAgICAgICArXG4gICAgICAgICAgICAnc2NhbGVkX2ludl9jaGlfc3F1YXJlIGV4cG9uZW50aWFsIGludl9nYW1tYSB3ZWlidWxsIGZyZWNoZXQgJyAgICAgK1xuICAgICAgICAgICAgJ3JheWxlaWdoIHdpZW5lciBwYXJldG8gcGFyZXRvX3R5cGVfMiB2b25fbWlzZXMgdW5pZm9ybSAnICAgICAgICAgICtcbiAgICAgICAgICAgICdtdWx0aV9ub3JtYWwgbXVsdGlfbm9ybWFsX3ByZWMgbXVsdGlfbm9ybWFsX2Nob2xlc2t5IG11bHRpX2dwICcgICArXG4gICAgICAgICAgICAnbXVsdGlfZ3BfY2hvbGVza3kgbXVsdGlfc3R1ZGVudF90IGdhdXNzaWFuX2RsbV9vYnMgZGlyaWNobGV0ICcgICAgK1xuICAgICAgICAgICAgJ2xral9jb3JyIGxral9jb3JyX2Nob2xlc2t5IHdpc2hhcnQgaW52X3dpc2hhcnQnLFxuICAgICAgICAgIC8vIFN0YW4ncyBkYXRhIHR5cGVzXG4gICAgICAgICAgJ3NlbGVjdG9yLXRhZyc6XG4gICAgICAgICAgICAnaW50IHJlYWwgdmVjdG9yIHNpbXBsZXggdW5pdF92ZWN0b3Igb3JkZXJlZCBwb3NpdGl2ZV9vcmRlcmVkICcgICAgK1xuICAgICAgICAgICAgJ3Jvd192ZWN0b3IgbWF0cml4IGNob2xlc2t5X2ZhY3Rvcl9jb3JyIGNob2xlc2t5X2ZhY3Rvcl9jb3YgJyAgICAgICtcbiAgICAgICAgICAgICdjb3JyX21hdHJpeCBjb3ZfbWF0cml4JyxcbiAgICAgICAgICAvLyBTdGFuJ3MgbW9kZWwgYmxvY2tzXG4gICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAnZnVuY3Rpb25zIG1vZGVsIGRhdGEgcGFyYW1ldGVycyBxdWFudGl0aWVzIHRyYW5zZm9ybWVkICcgICAgICAgICAgK1xuICAgICAgICAgICAgJ2dlbmVyYXRlZCcsXG4gICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICd0cnVlIGZhbHNlJ1xuICAgICAgICB9LFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBUaGUgYmVsb3cgaXMgYWxsIHRha2VuIGZyb20gdGhlIFIgbGFuZ3VhZ2UgZGVmaW5pdGlvblxuICAgICAge1xuICAgICAgICAvLyBoZXggdmFsdWVcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiMFt4WF1bMC05YS1mQS1GXStbTGldP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gaGV4IHZhbHVlXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGV4cGxpY2l0IGludGVnZXJcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXGQrKD86W2VFXVsrXFxcXC1dP1xcXFxkKik/TFxcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbnVtYmVyIHdpdGggdHJhaWxpbmcgZGVjaW1hbFxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcZCtcXFxcLig/IVxcXFxkKSg/OmlcXFxcYik/XCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbnVtYmVyXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxkKyg/OlxcXFwuXFxcXGQqKT8oPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9pP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbnVtYmVyIHdpdGggbGVhZGluZyBkZWNpbWFsXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFwuXFxcXGQrKD86W2VFXVsrXFxcXC1dP1xcXFxkKik/aT9cXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZG8nLCAnYWRvJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogJ2lmIGVsc2UgaW4gZm9yZWFjaCBmb3IgZm9ydiBmb3J2YSBmb3J2YWwgZm9ydmFsdSBmb3J2YWx1ZSBmb3J2YWx1ZXMgYnkgYnlzIGJ5c29ydCB4aSBxdWlldGx5IHF1aSBjYXB0dXJlIGFib3V0IGFjIGFjXzcgYWNwcnBsb3QgYWNwcnBsb3RfNyBhZGp1c3QgYWRvIGFkb3BhdGggYWRvdXBkYXRlIGFscGhhIGFtZWFucyBhbiBhbm8gYW5vdiBhbm92YSBhbm92YV9lc3RhdCBhbm92YV90ZXJtcyBhbm92YWRlZiBhb3JkZXIgYXAgYXBwIGFwcGUgYXBwZW4gYXBwZW5kIGFyY2ggYXJjaF9kciBhcmNoX2VzdGF0IGFyY2hfcCBhcmNobG0gYXJlZyBhcmVnX3AgYXJncyBhcmltYSBhcmltYV9kciBhcmltYV9lc3RhdCBhcmltYV9wIGFzIGFzbXByb2JpdCBhc21wcm9iaXRfZXN0YXQgYXNtcHJvYml0X2xmIGFzbXByb2JpdF9tZnhfX2RsZyBhc21wcm9iaXRfcCBhc3MgYXNzZSBhc3NlciBhc3NlcnQgYXZwbG90IGF2cGxvdF83IGF2cGxvdHMgYXZwbG90c183IGJjc2tldzAgYmdvZGZyZXkgYmlucmVnIGJpcDBfbGYgYmlwbG90IGJpcHBfbGYgYmlwcl9sZiBiaXByX3AgYmlwcm9iaXQgYml0ZXN0IGJpdGVzdGkgYml0b3d0IGJsb2dpdCBibWVtc2l6ZSBib290IGJvb3RzYW1wIGJvb3RzdHJhcCBib290c3RyYXBfOCBib3hjb19sIGJveGNvX3AgYm94Y294IGJveGNveF82IGJveGNveF9wIGJwcm9iaXQgYnIgYnJlYWsgYnJpZXIgYnJvIGJyb3cgYnJvd3MgYnJvd3NlIGJyciBicnJzdGF0IGJzIGJzXzcgYnNhbXBsX3cgYnNhbXBsZSBic2FtcGxlXzcgYnNxcmVnIGJzdGF0IGJzdGF0XzcgYnN0YXRfOCBic3RyYXAgYnN0cmFwXzcgY2EgY2FfZXN0YXQgY2FfcCBjYWJpcGxvdCBjYW1hdCBjYW5vbiBjYW5vbl84IGNhbm9uXzhfcCBjYW5vbl9lc3RhdCBjYW5vbl9wIGNhcCBjYXByb2plY3Rpb24gY2FwdCBjYXB0dSBjYXB0dXIgY2FwdHVyZSBjYXQgY2MgY2NoYXJ0IGNjaGFydF83IGNjaSBjZCBjZW5zb2JzX3RhYmxlIGNlbnRpbGUgY2YgY2hhciBjaGRpciBjaGVja2RsZ2ZpbGVzIGNoZWNrZXN0aW1hdGlvbnNhbXBsZSBjaGVja2hscGZpbGVzIGNoZWNrc3VtIGNoZWxwIGNpIGNpaSBjbCBjbGFzcyBjbGFzc3V0aWwgY2xlYXIgY2xpIGNsaXMgY2xpc3QgY2xvIGNsb2cgY2xvZ19sZiBjbG9nX3AgY2xvZ2kgY2xvZ2lfc3cgY2xvZ2l0IGNsb2dpdF9sZiBjbG9naXRfcCBjbG9naXRwIGNsb2dsX3N3IGNsb2dsb2cgY2xvbmV2YXIgY2xzbGlzdGFycmF5IGNsdXN0ZXIgY2x1c3Rlcl9tZWFzdXJlcyBjbHVzdGVyX3N0b3AgY2x1c3Rlcl90cmVlIGNsdXN0ZXJfdHJlZV84IGNsdXN0ZXJtYXQgY21kbG9nIGNuciBjbnJlIGNucmVnIGNucmVnX3AgY25yZWdfc3cgY25zcmVnIGNvZGVib29rIGNvbGxhcHM0IGNvbGxhcHNlIGNvbG9ybXVsdF9uYiBjb2xvcm11bHRfbncgY29tcGFyZSBjb21wcmVzcyBjb25mIGNvbmZpIGNvbmZpciBjb25maXJtIGNvbnJlbiBjb25zIGNvbnN0IGNvbnN0ciBjb25zdHJhIGNvbnN0cmFpIGNvbnN0cmFpbiBjb25zdHJhaW50IGNvbnRpbnVlIGNvbnRyYWN0IGNvcHkgY29weXJpZ2h0IGNvcHlzb3VyY2UgY29yIGNvcmMgY29yciBjb3JyMmRhdGEgY29ycl9hbnRpIGNvcnJfa21vIGNvcnJfc21jIGNvcnJlIGNvcnJlbCBjb3JyZWxhIGNvcnJlbGF0IGNvcnJlbGF0ZSBjb3JyZ3JhbSBjb3UgY291biBjb3VudCBjb3ggY294X3AgY294X3N3IGNveGJhc2UgY294aGF6IGNveHZhciBjcHJwbG90IGNwcnBsb3RfNyBjcmMgY3JldCBjcmV0dSBjcmV0dXIgY3JldHVybiBjcm9zcyBjcyBjc2NyaXB0IGNzY3JpcHRfbG9nIGNzaSBjdCBjdF9pcyBjdHNldCBjdHN0XzUgY3RzdF9zdCBjdHRvc3QgY3Vtc3AgY3Vtc3BfNyBjdW11bCBjdXN1bSBjdXN1bV83IGN1dGlsIGR8MCBkYXRhc2lnIGRhdGFzaWduIGRhdGFzaWduYSBkYXRhc2lnbmF0IGRhdGFzaWduYXR1IGRhdGFzaWduYXR1ciBkYXRhc2lnbmF0dXJlIGRhdGV0b2YgZGIgZGJldGEgZGUgZGVjIGRlY28gZGVjb2QgZGVjb2RlIGRlZmYgZGVzIGRlc2MgZGVzY3IgZGVzY3JpIGRlc2NyaWIgZGVzY3JpYmUgZGVzdHJpbmcgZGZiZXRhIGRmZ2xzIGRmdWxsZXIgZGkgZGlfZyBkaXIgZGlyc3RhdHMgZGlzIGRpc2NhcmQgZGlzcCBkaXNwX3JlcyBkaXNwX3MgZGlzcGwgZGlzcGxhIGRpc3BsYXkgZGlzdGluY3QgZG8gZG9lIGRvZWQgZG9lZGkgZG9lZGl0IGRvdHBsb3QgZG90cGxvdF83IGRwcm9iaXQgZHJhd25vcm0gZHJvcCBkcyBkc191dGlsIGRzdGRpemUgZHVwbGljYXRlcyBkdXJiaW5hIGR3c3RhdCBkeWR4IGV8MCBlZCBlZGkgZWRpdCBlZ2VuIGVpdnJlZyBlbWRlZiBlbiBlbmMgZW5jbyBlbmNvZCBlbmNvZGUgZXEgZXJhc2UgZXJlZyBlcmVnX2xmIGVyZWdfcCBlcmVnX3N3IGVyZWdoZXQgZXJlZ2hldF9nbGYgZXJlZ2hldF9nbGZfc2ggZXJlZ2hldF9ncCBlcmVnaGV0X2lsZiBlcmVnaGV0X2lsZl9zaCBlcmVnaGV0X2lwIGVyZXQgZXJldHUgZXJldHVyIGVyZXR1cm4gZXJyIGVycm8gZXJyb3IgZXN0IGVzdF9jZmV4aXN0IGVzdF9jZm5hbWUgZXN0X2NsaWNrYWJsZSBlc3RfZXhwYW5kIGVzdF9ob2xkIGVzdF90YWJsZSBlc3RfdW5ob2xkIGVzdF91bmhvbGRvayBlc3RhdCBlc3RhdF9kZWZhdWx0IGVzdGF0X3N1bW0gZXN0YXRfdmNlX29ubHkgZXN0aSBlc3RpbWF0ZXMgZXRvZG93IGV0b2YgZXRvbWR5IGV4IGV4aSBleGl0IGV4cGFuZCBleHBhbmRjbCBmYWMgZmFjdCBmYWN0byBmYWN0b3IgZmFjdG9yX2VzdGF0IGZhY3Rvcl9wIGZhY3Rvcl9wY2Ffcm90YXRlZCBmYWN0b3Jfcm90YXRlIGZhY3Rvcm1hdCBmY2FzdCBmY2FzdF9jb21wdXRlIGZjYXN0X2dyYXBoIGZkYWRlcyBmZGFkZXNjIGZkYWRlc2NyIGZkYWRlc2NyaSBmZGFkZXNjcmliIGZkYWRlc2NyaWJlIGZkYXNhdiBmZGFzYXZlIGZkYXVzZSBmaF9zdCBmaWxlIG9wZW4gZmlsZSByZWFkIGZpbGUgY2xvc2UgZmlsZSBmaWxlZmlsdGVyIGZpbGxpbiBmaW5kX2hscF9maWxlIGZpbmRmaWxlIGZpbmRpdCBmaW5kaXRfNyBmaXQgZmwgZmxpIGZsaXMgZmxpc3QgZm9yNV8wIGZvcm0gZm9ybWEgZm9ybWF0IGZwcmVkaWN0IGZyYWNfMTU0IGZyYWNfYWRqIGZyYWNfY2hrIGZyYWNfY294IGZyYWNfZGRwIGZyYWNfZGlzIGZyYWNfZHYgZnJhY19pbiBmcmFjX211biBmcmFjX3BwIGZyYWNfcHEgZnJhY19wdiBmcmFjX3dndCBmcmFjX3hvIGZyYWNnZW4gZnJhY3Bsb3QgZnJhY3Bsb3RfNyBmcmFjcG9seSBmcmFjcHJlZCBmcm9uX2V4IGZyb25faG4gZnJvbl9wIGZyb25fdG4gZnJvbl90bjIgZnJvbnRpZXIgZnRvZGF0ZSBmdG9lIGZ0b21keSBmdG93ZGF0ZSBnfDAgZ2FtaGV0X2dsZiBnYW1oZXRfZ3AgZ2FtaGV0X2lsZiBnYW1oZXRfaXAgZ2FtbWEgZ2FtbWFfZDIgZ2FtbWFfcCBnYW1tYV9zdyBnYW1tYWhldCBnZGlfaGV4YWdvbiBnZGlfc3Bva2VzIGdlIGdlbiBnZW5lIGdlbmVyIGdlbmVyYSBnZW5lcmF0IGdlbmVyYXRlIGdlbnJhbmsgZ2Vuc3RkIGdlbnZtZWFuIGdldHRva2VuIGdsIGdsYWRkZXIgZ2xhZGRlcl83IGdsaW1fbDAxIGdsaW1fbDAyIGdsaW1fbDAzIGdsaW1fbDA0IGdsaW1fbDA1IGdsaW1fbDA2IGdsaW1fbDA3IGdsaW1fbDA4IGdsaW1fbDA5IGdsaW1fbDEwIGdsaW1fbDExIGdsaW1fbDEyIGdsaW1fbGYgZ2xpbV9tdSBnbGltX253MSBnbGltX253MiBnbGltX253MyBnbGltX3AgZ2xpbV92MSBnbGltX3YyIGdsaW1fdjMgZ2xpbV92NCBnbGltX3Y1IGdsaW1fdjYgZ2xpbV92NyBnbG0gZ2xtXzYgZ2xtX3AgZ2xtX3N3IGdsbXByZWQgZ2xvIGdsb2IgZ2xvYmEgZ2xvYmFsIGdsb2dpdCBnbG9naXRfOCBnbG9naXRfcCBnbWVhbnMgZ25icmVfbGYgZ25icmVnIGduYnJlZ181IGduYnJlZ19wIGdvbXBfbGYgZ29tcGVfc3cgZ29tcGVyX3AgZ29tcGVydHogZ29tcGVydHpoZXQgZ29tcGhldF9nbGYgZ29tcGhldF9nbGZfc2ggZ29tcGhldF9ncCBnb21waGV0X2lsZiBnb21waGV0X2lsZl9zaCBnb21waGV0X2lwIGdwaGRvdCBncGhwZW4gZ3BocHJpbnQgZ3ByZWZzIGdwcm9iaV9wIGdwcm9iaXQgZ3Byb2JpdF84IGdyIGdyNyBncl9jb3B5IGdyX2N1cnJlbnQgZ3JfZGIgZ3JfZGVzY3JpYmUgZ3JfZGlyIGdyX2RyYXcgZ3JfZHJhd19yZXBsYXkgZ3JfZHJvcCBncl9lZGl0IGdyX2VkaXR2aWV3b3B0cyBncl9leGFtcGxlIGdyX2V4YW1wbGUyIGdyX2V4cG9ydCBncl9wcmludCBncl9xc2NoZW1lIGdyX3F1ZXJ5IGdyX3JlYWQgZ3JfcmVuYW1lIGdyX3JlcGxheSBncl9zYXZlIGdyX3NldCBncl9zZXRzY2hlbWUgZ3JfdGFibGUgZ3JfdW5kbyBncl91c2UgZ3JhcGggZ3JhcGg3IGdyZWJhciBncmVpZ2VuIGdyZWlnZW5fNyBncmVpZ2VuXzggZ3JtZWFuYnkgZ3JtZWFuYnlfNyBnc19maWxlaW5mbyBnc19maWxldHlwZSBnc19ncmFwaGluZm8gZ3Nfc3RhdCBnc29ydCBnd29vZCBofDAgaGFkaW12byBoYXJlZyBoYXVzbWFuIGhhdmVyIGhlIGhlY2tfZDIgaGVja21hX3AgaGVja21hbiBoZWNrcF9sZiBoZWNrcHJfcCBoZWNrcHJvYiBoZWwgaGVscCBoZXJlZyBoZXRwcl9sZiBoZXRwcl9wIGhldHByb2IgaGV0dGVzdCBoZXhkdW1wIGhpbGl0ZSBoaXN0IGhpc3RfNyBoaXN0b2dyYW0gaGxvZ2l0IGhsdSBobWVhbnMgaG90ZWwgaG90ZWxsaW5nIGhwcm9iaXQgaHJlZyBoc2VhcmNoIGljZDkgaWNkOV9mZiBpY2Q5cCBpaXMgaW1wdXRlIGltdGVzdCBpbmJhc2UgaW5jbHVkZSBpbmYgaW5maSBpbmZpbCBpbmZpbGUgaW5maXggaW5wIGlucHUgaW5wdXQgaW5zIGluc2hlZXQgaW5zcCBpbnNwZSBpbnNwZWMgaW5zcGVjdCBpbnRlZyBpbnRlbiBpbnRyZWcgaW50cmVnXzcgaW50cmVnX3AgaW50cmcyX2xsIGludHJnX2xsIGludHJnX2xsMiBpcG9sYXRlIGlxcmVnIGlyIGlyZiBpcmZfY3JlYXRlIGlyZm0gaXJpIGlzX3N2eSBpc19zdnlzdW0gaXNpZCBpc3RkaXplIGl2cHJvYl8xX2xmIGl2cHJvYl9sZiBpdnByb2JpdCBpdnByb2JpdF9wIGl2cmVnIGl2cmVnX2Zvb3Rub3RlIGl2dG9iXzFfbGYgaXZ0b2JfbGYgaXZ0b2JpdCBpdnRvYml0X3AgamFja2tuaWZlIGphY2tuaWZlIGprbmlmZSBqa25pZmVfNiBqa25pZmVfOCBqa3N0YXQgam9pbmJ5IGthbGFybWExIGthcCBrYXBfMyBrYXBtZWllciBrYXBwYSBrYXB3Z3Qga2RlbnNpdHkga2RlbnNpdHlfNyBrZWVwIGtzbSBrc21pcm5vdiBrdGF1IGt3YWxsaXMgbHwwIGxhIGxhYiBsYWJlIGxhYmVsIGxhYmVsYm9vayBsYWRkZXIgbGV2ZWxzIGxldmVsc29mIGxldmVyYWdlIGxmaXQgbGZpdF9wIGxpIGxpbmNvbSBsaW5lIGxpbmt0ZXN0IGxpcyBsaXN0IGxsb2doZXRfZ2xmIGxsb2doZXRfZ2xmX3NoIGxsb2doZXRfZ3AgbGxvZ2hldF9pbGYgbGxvZ2hldF9pbGZfc2ggbGxvZ2hldF9pcCBsbG9naV9zdyBsbG9naXNfcCBsbG9naXN0IGxsb2dpc3RpYyBsbG9naXN0aWNoZXQgbG5vcm1fbGYgbG5vcm1fc3cgbG5vcm1hX3AgbG5vcm1hbCBsbm9ybWFsaGV0IGxub3JtaGV0X2dsZiBsbm9ybWhldF9nbGZfc2ggbG5vcm1oZXRfZ3AgbG5vcm1oZXRfaWxmIGxub3JtaGV0X2lsZl9zaCBsbm9ybWhldF9pcCBsbnNrZXcwIGxvYWRpbmdwbG90IGxvYyBsb2NhIGxvY2FsIGxvZyBsb2dpIGxvZ2lzX2xmIGxvZ2lzdGljIGxvZ2lzdGljX3AgbG9naXQgbG9naXRfZXN0YXQgbG9naXRfcCBsb2dsb2dzIGxvZ3JhbmsgbG9uZXdheSBsb29rZm9yIGxvb2t1cCBsb3dlc3MgbG93ZXNzXzcgbHByZWRpY3QgbHJlY29tcCBscm9jIGxyb2NfNyBscnRlc3QgbHMgbHNlbnMgbHNlbnNfNyBsc2Vuc194IGxzdGF0IGx0YWJsZSBsdGFibGVfNyBsdHJpYW5nIGx2IGx2cjJwbG90IGx2cjJwbG90XzcgbXwwIG1hIG1hYyBtYWNyIG1hY3JvIG1ha2VjbnMgbWFuIG1hbm92YSBtYW5vdmFfZXN0YXQgbWFub3ZhX3AgbWFub3ZhdGVzdCBtYW50ZWwgbWFyayBtYXJraW4gbWFya291dCBtYXJrc2FtcGxlIG1hdCBtYXRfY2FwcCBtYXRfb3JkZXIgbWF0X3B1dF9yciBtYXRfcmFwcCBtYXRhIG1hdGFfY2xlYXIgbWF0YV9kZXNjcmliZSBtYXRhX2Ryb3AgbWF0YV9tYXRkZXNjcmliZSBtYXRhX21hdHNhdmUgbWF0YV9tYXR1c2UgbWF0YV9tZW1vcnkgbWF0YV9tbGliIG1hdGFfbW9zYXZlIG1hdGFfcmVuYW1lIG1hdGFfd2hpY2ggbWF0YWxhYmVsIG1hdGNwcm9jIG1hdGxpc3QgbWF0bmFtZSBtYXRyIG1hdHJpIG1hdHJpeCBtYXRyaXhfaW5wdXRfX2RsZyBtYXRzdHJpayBtY2MgbWNjaSBtZDBfIG1kMV8gbWQxZGVidWdfIG1kMl8gbWQyZGVidWdfIG1kcyBtZHNfZXN0YXQgbWRzX3AgbWRzY29uZmlnIG1kc2xvbmcgbWRzbWF0IG1kc3NoZXBhcmQgbWR5dG9lIG1keXRvZiBtZV9kZXJkIG1lYW4gbWVhbnMgbWVkaWFuIG1lbW9yeSBtZW1zaXplIG1lcXBhcnNlIG1lciBtZXJnIG1lcmdlIG1mcCBtZnggbWhlbHAgbWhvZGRzIG1pbmJvdW5kIG1peGVkX2xsIG1peGVkX2xsX3JlcGFybSBta2Fzc2VydCBta2RpciBta21hdCBta3NwbGluZSBtbCBtbF81IG1sX2FkanMgbWxfYmhoaHMgbWxfY19kIG1sX2NoZWNrIG1sX2NsZWFyIG1sX2NudCBtbF9kZWJ1ZyBtbF9kZWZkIG1sX2UwIG1sX2UwX2JmZ3MgbWxfZTBfY3ljbGUgbWxfZTBfZGZwIG1sX2UwaSBtbF9lMSBtbF9lMV9iZmdzIG1sX2UxX2JoaGggbWxfZTFfY3ljbGUgbWxfZTFfZGZwIG1sX2UyIG1sX2UyX2N5Y2xlIG1sX2ViZmcwIG1sX2ViZnIwIG1sX2ViZnIxIG1sX2ViaDBxIG1sX2ViaGgwIG1sX2ViaHIwIG1sX2VicjBpIG1sX2VjcjBpIG1sX2VkZnAwIG1sX2VkZnIwIG1sX2VkZnIxIG1sX2VkcjBpIG1sX2VkcyBtbF9lZXIwaSBtbF9lZ3IwaSBtbF9lbGYgbWxfZWxmX2JmZ3MgbWxfZWxmX2JoaGggbWxfZWxmX2N5Y2xlIG1sX2VsZl9kZnAgbWxfZWxmaSBtbF9lbGZzIG1sX2VucjBpIG1sX2VucnIwIG1sX2VyZHUwIG1sX2VyZHUwX2JmZ3MgbWxfZXJkdTBfYmhoaCBtbF9lcmR1MF9iaGhocSBtbF9lcmR1MF9jeWNsZSBtbF9lcmR1MF9kZnAgbWxfZXJkdTBfbnJiZmdzIG1sX2V4ZGUgbWxfZm9vdG5vdGUgbWxfZ2VxbnIgbWxfZ3JhZDAgbWxfZ3JhcGggbWxfaGJoaGggbWxfaGQwIG1sX2hvbGQgbWxfaW5pdCBtbF9pbnYgbWxfbG9nIG1sX21heCBtbF9tbG91dCBtbF9tbG91dF84IG1sX21vZGVsIG1sX25iMCBtbF9vcHQgbWxfcCBtbF9wbG90IG1sX3F1ZXJ5IG1sX3JkZ3JkIG1sX3JlcG9yIG1sX3NfZSBtbF9zY29yZSBtbF9zZWFyYyBtbF90ZWNobmlxdWUgbWxfdW5ob2xkIG1sZXZhbCBtbGZfIG1sbWF0YnlzdW0gbWxtYXRzdW0gbWxvZyBtbG9naSBtbG9naXQgbWxvZ2l0X2Zvb3Rub3RlIG1sb2dpdF9wIG1sb3B0cyBtbHN1bSBtbHZlY3N1bSBtbmwwXyBtb3IgbW9yZSBtb3YgbW92ZSBtcHJvYml0IG1wcm9iaXRfbGYgbXByb2JpdF9wIG1yZHUwXyBtcmR1MV8gbXZkZWNvZGUgbXZlbmNvZGUgbXZyZWcgbXZyZWdfZXN0YXQgbnwwIG5icmVnIG5icmVnX2FsIG5icmVnX2xmIG5icmVnX3AgbmJyZWdfc3cgbmVzdHJlZyBuZXQgbmV3ZXkgbmV3ZXlfNyBuZXdleV9wIG5ld3MgbmwgbmxfNyBubF85IG5sXzlfcCBubF9wIG5sX3BfNyBubGNvbSBubGNvbV9wIG5sZXhwMiBubGV4cDJfNyBubGV4cDJhIG5sZXhwMmFfNyBubGV4cDMgbmxleHAzXzcgbmxnb20zIG5sZ29tM183IG5sZ29tNCBubGdvbTRfNyBubGluaXQgbmxsb2czIG5sbG9nM183IG5sbG9nNCBubGxvZzRfNyBubG9nX3JkIG5sb2dpdCBubG9naXRfcCBubG9naXRnZW4gbmxvZ2l0dHJlZSBubHByZWQgbm8gbm9icmVhayBub2kgbm9pcyBub2lzaSBub2lzaWwgbm9pc2lseSBub3RlIG5vdGVzIG5vdGVzX2RsZyBucHRyZW5kIG51bWxhYmVsIG51bWxpc3Qgb2RiYyBvbGRfdmVyIG9sbyBvbG9nIG9sb2dpIG9sb2dpX3N3IG9sb2dpdCBvbG9naXRfcCBvbG9naXRwIG9uIG9uZSBvbmV3IG9uZXdhIG9uZXdheSBvcF9jb2xubSBvcF9jb21wIG9wX2RpZmYgb3BfaW52IG9wX3N0ciBvcHIgb3BybyBvcHJvYiBvcHJvYl9zdyBvcHJvYmkgb3Byb2JpX3Agb3Byb2JpdCBvcHJvYml0cCBvcHRzX2V4Y2x1c2l2ZSBvcmRlciBvcnRob2cgb3J0aHBvbHkgb3Ugb3V0IG91dGYgb3V0Zmkgb3V0ZmlsIG91dGZpbGUgb3V0cyBvdXRzaCBvdXRzaGUgb3V0c2hlZSBvdXRzaGVldCBvdnRlc3QgcGFjIHBhY183IHBhbGV0dGUgcGFyc2UgcGFyc2VfZGlzc2ltIHBhdXNlIHBjYSBwY2FfOCBwY2FfZGlzcGxheSBwY2FfZXN0YXQgcGNhX3AgcGNhX3JvdGF0ZSBwY2FtYXQgcGNoYXJ0IHBjaGFydF83IHBjaGkgcGNoaV83IHBjb3JyIHBjdGlsZSBwZW50aXVtIHBlcmdyYW0gcGVyZ3JhbV83IHBlcm11dGUgcGVybXV0ZV84IHBlcnNvbmFsIHBldG9fc3QgcGtjb2xsYXBzZSBwa2Nyb3NzIHBrZXF1aXYgcGtleGFtaW5lIHBrZXhhbWluZV83IHBrc2hhcGUgcGtzdW1tIHBrc3VtbV83IHBsIHBsbyBwbG90IHBsdWdpbiBwbm9ybSBwbm9ybV83IHBvaXNnb2YgcG9pc3NfbGYgcG9pc3Nfc3cgcG9pc3NvX3AgcG9pc3NvbiBwb2lzc29uX2VzdGF0IHBvc3QgcG9zdGNsb3NlIHBvc3RmaWxlIHBvc3R1dGlsIHBwZXJyb24gcHIgcHJhaXMgcHJhaXNfZSBwcmFpc19lMiBwcmFpc19wIHByZWRpY3QgcHJlZGljdG5sIHByZXNlcnZlIHByaW50IHBybyBwcm9iIHByb2JpIHByb2JpdCBwcm9iaXRfZXN0YXQgcHJvYml0X3AgcHJvY190aW1lIHByb2NvdmVybGF5IHByb2NydXN0ZXMgcHJvY3J1c3Rlc19lc3RhdCBwcm9jcnVzdGVzX3AgcHJvZmlsZXIgcHJvZyBwcm9nciBwcm9ncmEgcHJvZ3JhbSBwcm9wIHByb3BvcnRpb24gcHJ0ZXN0IHBydGVzdGkgcHdjb3JyIHB3ZCBxXFxcXHMgcWJ5IHFieXMgcWNoaSBxY2hpXzcgcWxhZGRlciBxbGFkZGVyXzcgcW5vcm0gcW5vcm1fNyBxcXBsb3QgcXFwbG90XzcgcXJlZyBxcmVnX2MgcXJlZ19wIHFyZWdfc3cgcXUgcXVhZGNoayBxdWFudGlsZSBxdWFudGlsZV83IHF1ZSBxdWVyIHF1ZXJ5IHJhbmdlIHJhbmtzdW0gcmF0aW8gcmNoYXJ0IHJjaGFydF83IHJjb2YgcmVjYXN0IHJlY2xpbmsgcmVjb2RlIHJlZyByZWczIHJlZzNfcCByZWdkdyByZWdyIHJlZ3JlIHJlZ3JlX3AyIHJlZ3JlcyByZWdyZXNfcCByZWdyZXNzIHJlZ3Jlc3NfZXN0YXQgcmVncml2X3AgcmVtYXAgcmVuIHJlbmEgcmVuYW0gcmVuYW1lIHJlbnBmaXggcmVwZWF0IHJlcGxhY2UgcmVwb3J0IHJlc2hhcGUgcmVzdG9yZSByZXQgcmV0dSByZXR1ciByZXR1cm4gcm0gcm1kaXIgcm9idmFyIHJvY2NvbXAgcm9jY29tcF83IHJvY2NvbXBfOCByb2NmX2xmIHJvY2ZpdCByb2NmaXRfOCByb2Nnb2xkIHJvY3Bsb3Qgcm9jcGxvdF83IHJvY3RhYiByb2N0YWJfNyByb2xsaW5nIHJvbG9naXQgcm9sb2dpdF9wIHJvdCByb3RhIHJvdGF0IHJvdGF0ZSByb3RhdGVtYXQgcnJlZyBycmVnX3AgcnUgcnVuIHJ1bnRlc3QgcnZmcGxvdCBydmZwbG90XzcgcnZwcGxvdCBydnBwbG90Xzcgc2Egc2FmZXN1bSBzYW1wbGUgc2FtcHNpIHNhdiBzYXZlIHNhdmVkcmVzdWx0cyBzYXZlb2xkIHNjIHNjYSBzY2FsIHNjYWxhIHNjYWxhciBzY2F0dGVyIHNjbV9taW5lIHNjbyBzY29iX2xmIHNjb2JfcCBzY29iaV9zdyBzY29iaXQgc2NvciBzY29yZSBzY29yZXBsb3Qgc2NvcmVwbG90X2hlbHAgc2NyZWUgc2NyZWVwbG90IHNjcmVlcGxvdF9oZWxwIHNkdGVzdCBzZHRlc3RpIHNlIHNlYXJjaCBzZXBhcmF0ZSBzZXBlcmF0ZSBzZXJyYmFyIHNlcnJiYXJfNyBzZXJzZXQgc2V0IHNldF9kZWZhdWx0cyBzZnJhbmNpYSBzaCBzaGUgc2hlbCBzaGVsbCBzaGV3aGFydCBzaGV3aGFydF83IHNpZ25lc3RpbWF0aW9uc2FtcGxlIHNpZ25yYW5rIHNpZ250ZXN0IHNpbXVsIHNpbXVsXzcgc2ltdWxhdGUgc2ltdWxhdGVfOCBza3Rlc3Qgc2xlZXAgc2xvZ2l0IHNsb2dpdF9kMiBzbG9naXRfcCBzbW9vdGggc25hcHNwYW4gc28gc29yIHNvcnQgc3BlYXJtYW4gc3Bpa2VwbG90IHNwaWtlcGxvdF83IHNwaWtlcGx0IHNwbGluZV94IHNwbGl0IHNxcmVnIHNxcmVnX3Agc3JldCBzcmV0dSBzcmV0dXIgc3JldHVybiBzc2Mgc3Qgc3RfY3Qgc3RfaGMgc3RfaGNkIHN0X2hjZF9zaCBzdF9pcyBzdF9pc3N5cyBzdF9ub3RlIHN0X3Byb21vIHN0X3NldCBzdF9zaG93IHN0X3NtcGwgc3Rfc3ViaWQgc3RhY2sgc3RhdHNieSBzdGF0c2J5Xzggc3RiYXNlIHN0Y2kgc3RjaV83IHN0Y294IHN0Y294X2VzdGF0IHN0Y294X2ZyIHN0Y294X2ZyX2xsIHN0Y294X3Agc3Rjb3hfc3cgc3Rjb3hrbSBzdGNveGttXzcgc3Rjc3RhdCBzdGN1cnYgc3RjdXJ2ZSBzdGN1cnZlXzcgc3RkZXMgc3RlbSBzdGVwd2lzZSBzdGVyZWcgc3RmaWxsIHN0Z2VuIHN0aXIgc3Rqb2luIHN0bWMgc3RtaCBzdHBocGxvdCBzdHBocGxvdF83IHN0cGh0ZXN0IHN0cGh0ZXN0Xzcgc3RwdGltZSBzdHJhdGUgc3RyYXRlXzcgc3RyZWcgc3RyZWdfc3cgc3RyZXNldCBzdHMgc3RzXzcgc3RzZXQgc3RzcGxpdCBzdHN1bSBzdHRvY2Mgc3R0b2N0IHN0dmFyeSBzdHdlaWIgc3Ugc3Vlc3Qgc3Vlc3RfOCBzdW0gc3VtbSBzdW1tYSBzdW1tYXIgc3VtbWFyaSBzdW1tYXJpeiBzdW1tYXJpemUgc3VuZmxvd2VyIHN1cmVnIHN1cnZjdXJ2IHN1cnZzdW0gc3ZhciBzdmFyX3Agc3ZtYXQgc3Z5IHN2eV9kaXNwIHN2eV9kcmVnIHN2eV9lc3Qgc3Z5X2VzdF83IHN2eV9lc3RhdCBzdnlfZ2V0IHN2eV9nbmJyZWdfcCBzdnlfaGVhZCBzdnlfaGVhZGVyIHN2eV9oZWNrbWFuX3Agc3Z5X2hlY2twcm9iX3Agc3Z5X2ludHJlZ19wIHN2eV9pdnJlZ19wIHN2eV9sb2dpc3RpY19wIHN2eV9sb2dpdF9wIHN2eV9tbG9naXRfcCBzdnlfbmJyZWdfcCBzdnlfb2xvZ2l0X3Agc3Z5X29wcm9iaXRfcCBzdnlfcG9pc3Nvbl9wIHN2eV9wcm9iaXRfcCBzdnlfcmVncmVzc19wIHN2eV9zdWIgc3Z5X3N1Yl83IHN2eV94IHN2eV94Xzcgc3Z5X3hfcCBzdnlkZXMgc3Z5ZGVzXzggc3Z5Z2VuIHN2eWduYnJlZyBzdnloZWNrbWFuIHN2eWhlY2twcm9iIHN2eWludHJlZyBzdnlpbnRyZWdfNyBzdnlpbnRyZyBzdnlpdnJlZyBzdnlsYyBzdnlsb2dfcCBzdnlsb2dpdCBzdnltYXJrb3V0IHN2eW1hcmtvdXRfOCBzdnltZWFuIHN2eW1sb2cgc3Z5bWxvZ2l0IHN2eW5icmVnIHN2eW9sb2cgc3Z5b2xvZ2l0IHN2eW9wcm9iIHN2eW9wcm9iaXQgc3Z5b3B0cyBzdnlwb2lzIHN2eXBvaXNfNyBzdnlwb2lzc29uIHN2eXByb2JpdCBzdnlwcm9idCBzdnlwcm9wIHN2eXByb3BfNyBzdnlyYXRpbyBzdnlyZWcgc3Z5cmVnX3Agc3Z5cmVncmVzcyBzdnlzZXQgc3Z5c2V0Xzcgc3Z5c2V0Xzggc3Z5dGFiIHN2eXRhYl83IHN2eXRlc3Qgc3Z5dG90YWwgc3cgc3dfOCBzd2NucmVnIHN3Y294IHN3ZXJlZyBzd2lsayBzd2xvZ2lzIHN3bG9naXQgc3dvbG9naXQgc3dvcHJidCBzd3BvaXMgc3dwcm9iaXQgc3dxcmVnIHN3dG9iaXQgc3d3ZWliIHN5bW1ldHJ5IHN5bW1pIHN5bXBsb3Qgc3ltcGxvdF83IHN5bnRheCBzeXNkZXNjcmliZSBzeXNkaXIgc3lzdXNlIHN6cm9ldGVyIHRhIHRhYiB0YWIxIHRhYjIgdGFiX29yIHRhYmQgdGFiZGkgdGFiZGlzIHRhYmRpc3AgdGFiaSB0YWJsZSB0YWJvZGRzIHRhYm9kZHNfNyB0YWJzdGF0IHRhYnUgdGFidWwgdGFidWxhIHRhYnVsYXQgdGFidWxhdGUgdGUgdGVtcGZpbGUgdGVtcG5hbWUgdGVtcHZhciB0ZXMgdGVzdCB0ZXN0bmwgdGVzdHBhcm0gdGVzdHN0ZCB0ZXRyYWNob3JpYyB0aW1lX2l0IHRpbWVyIHRpcyB0b2IgdG9iaSB0b2JpdCB0b2JpdF9wIHRvYml0X3N3IHRva2VuIHRva2VuaSB0b2tlbml6IHRva2VuaXplIHRvc3RyaW5nIHRvdGFsIHRyYW5zbGF0ZSB0cmFuc2xhdG9yIHRyYW5zbWFwIHRyZWF0X2xsIHRyZWF0cl9wIHRyZWF0cmVnIHRyaW0gdHJuYl9jb25zIHRybmJfbWVhbiB0cnBvaXNzX2QyIHRydW5jX2xsIHRydW5jcl9wIHRydW5jcmVnIHRzYXBwZW5kIHRzZXQgdHNmaWxsIHRzbGluZSB0c2xpbmVfZXggdHNyZXBvcnQgdHNyZXZhciB0c3JsaW5lIHRzc2V0IHRzc21vb3RoIHRzdW5hYiB0dGVzdCB0dGVzdGkgdHV0X2NoayB0dXRfd2FpdCB0dXRvcmlhbCB0dyB0d2FyZV9zdCB0d28gdHdvd2F5IHR3b3dheV9fZnBmaXRfc2Vyc2V0IHR3b3dheV9fZnVuY3Rpb25fZ2VuIHR3b3dheV9faGlzdG9ncmFtX2dlbiB0d293YXlfX2lwb2ludF9zZXJzZXQgdHdvd2F5X19pcG9pbnRzX3NlcnNldCB0d293YXlfX2tkZW5zaXR5X2dlbiB0d293YXlfX2xmaXRfc2Vyc2V0IHR3b3dheV9fbm9ybWdlbl9nZW4gdHdvd2F5X19wY2lfc2Vyc2V0IHR3b3dheV9fcWZpdF9zZXJzZXQgdHdvd2F5X19zY2F0dGVyaV9zZXJzZXQgdHdvd2F5X19zdW5mbG93ZXJfZ2VuIHR3b3dheV9rc21fc2Vyc2V0IHR5IHR5cCB0eXBlIHR5cGVvZiB1fDAgdW5hYiB1bmFiYnJldiB1bmFiY21kIHVwZGF0ZSB1cyB1c2UgdXNlbGFiZWwgdmFyIHZhcl9ta2NvbXBhbmlvbiB2YXJfcCB2YXJiYXNpYyB2YXJmY2FzdCB2YXJncmFuZ2VyIHZhcmlyZiB2YXJpcmZfYWRkIHZhcmlyZl9jZ3JhcGggdmFyaXJmX2NyZWF0ZSB2YXJpcmZfY3RhYmxlIHZhcmlyZl9kZXNjcmliZSB2YXJpcmZfZGlyIHZhcmlyZl9kcm9wIHZhcmlyZl9lcmFzZSB2YXJpcmZfZ3JhcGggdmFyaXJmX29ncmFwaCB2YXJpcmZfcmVuYW1lIHZhcmlyZl9zZXQgdmFyaXJmX3RhYmxlIHZhcmxpc3QgdmFybG1hciB2YXJub3JtIHZhcnNvYyB2YXJzdGFibGUgdmFyc3RhYmxlX3cgdmFyc3RhYmxlX3cyIHZhcndsZSB2Y2UgdmVjIHZlY19mZXZkIHZlY19ta3BoaSB2ZWNfcCB2ZWNfcF93IHZlY2lyZl9jcmVhdGUgdmVjbG1hciB2ZWNsbWFyX3cgdmVjbm9ybSB2ZWNub3JtX3cgdmVjcmFuayB2ZWNzdGFibGUgdmVyaW5zdCB2ZXJzIHZlcnNpIHZlcnNpbyB2ZXJzaW9uIHZpZXcgdmlld3NvdXJjZSB2aWYgdndscyB3ZGF0ZXRvZiB3ZWJkZXNjcmliZSB3ZWJzZWVrIHdlYnVzZSB3ZWliMV9sZiB3ZWliMl9sZiB3ZWliX2xmIHdlaWJfbGYwIHdlaWJoZXRfZ2xmIHdlaWJoZXRfZ2xmX3NoIHdlaWJoZXRfZ2xmYSB3ZWliaGV0X2dsZmFfc2ggd2VpYmhldF9ncCB3ZWliaGV0X2lsZiB3ZWliaGV0X2lsZl9zaCB3ZWliaGV0X2lsZmEgd2VpYmhldF9pbGZhX3NoIHdlaWJoZXRfaXAgd2VpYnVfc3cgd2VpYnVsX3Agd2VpYnVsbCB3ZWlidWxsX2Mgd2VpYnVsbF9zIHdlaWJ1bGxoZXQgd2ggd2hlbHAgd2hpIHdoaWNoIHdoaWwgd2hpbGUgd2lsY19zdCB3aWxjb3hvbiB3aW4gd2luZCB3aW5kbyB3aW5kb3cgd2luZXhlYyB3bnRlc3RiIHdudGVzdGJfNyB3bnRlc3RxIHhjaGFydCB4Y2hhcnRfNyB4Y29yciB4Y29ycl83IHhpIHhpXzYgeG1sc2F2IHhtbHNhdmUgeG1sdXNlIHhwb3NlIHhzaCB4c2hlIHhzaGVsIHhzaGVsbCB4dF9paXMgeHRfdGlzIHh0YWJfcCB4dGFib25kIHh0YmluX3AgeHRjbG9nIHh0Y2xvZ2xvZyB4dGNsb2dsb2dfOCB4dGNsb2dsb2dfZDIgeHRjbG9nbG9nX3BhX3AgeHRjbG9nbG9nX3JlX3AgeHRjbnRfcCB4dGNvcnIgeHRkYXRhIHh0ZGVzIHh0ZnJvbnRfcCB4dGZyb250aWVyIHh0Z2VlIHh0Z2VlX2VsaW5rIHh0Z2VlX2VzdGF0IHh0Z2VlX21ha2VpdmFyIHh0Z2VlX3AgeHRnZWVfcGxpbmsgeHRnbHMgeHRnbHNfcCB4dGhhdXMgeHRoYXVzbWFuIHh0aHRfcCB4dGh0YXlsb3IgeHRpbGUgeHRpbnRfcCB4dGludHJlZyB4dGludHJlZ184IHh0aW50cmVnX2QyIHh0aW50cmVnX3AgeHRpdnBfMSB4dGl2cF8yIHh0aXZyZWcgeHRsaW5lIHh0bGluZV9leCB4dGxvZ2l0IHh0bG9naXRfOCB4dGxvZ2l0X2QyIHh0bG9naXRfZmVfcCB4dGxvZ2l0X3BhX3AgeHRsb2dpdF9yZV9wIHh0bWl4ZWQgeHRtaXhlZF9lc3RhdCB4dG1peGVkX3AgeHRuYl9mZSB4dG5iX2xmIHh0bmJyZWcgeHRuYnJlZ19wYV9wIHh0bmJyZWdfcmVmZV9wIHh0cGNzZSB4dHBjc2VfcCB4dHBvaXMgeHRwb2lzc29uIHh0cG9pc3Nvbl9kMiB4dHBvaXNzb25fcGFfcCB4dHBvaXNzb25fcmVmZV9wIHh0cHJlZCB4dHByb2JpdCB4dHByb2JpdF84IHh0cHJvYml0X2QyIHh0cHJvYml0X3JlX3AgeHRwc19mZSB4dHBzX2xmIHh0cHNfcmVuIHh0cHNfcmVuXzggeHRyYXJfcCB4dHJjIHh0cmNfcCB4dHJjaGggeHRyZWZlX3AgeHRyZWcgeHRyZWdfYmUgeHRyZWdfZmUgeHRyZWdfbWwgeHRyZWdfcGFfcCB4dHJlZ19yZSB4dHJlZ2FyIHh0cmVyZV9wIHh0c2V0IHh0c2ZfbGwgeHRzZl9sbHRpIHh0c3VtIHh0dGFiIHh0dGVzdDAgeHR0b2JpdCB4dHRvYml0XzggeHR0b2JpdF9wIHh0dHJhbnMgeXggeXh2aWV3X19iYXJsaWtlX2RyYXcgeXh2aWV3X2FyZWFfZHJhdyB5eHZpZXdfYmFyX2RyYXcgeXh2aWV3X2RvdF9kcmF3IHl4dmlld19kcm9wbGluZV9kcmF3IHl4dmlld19mdW5jdGlvbl9kcmF3IHl4dmlld19pYXJyb3dfZHJhdyB5eHZpZXdfaWxhYmVsc19kcmF3IHl4dmlld19ub3JtYWxfZHJhdyB5eHZpZXdfcGNhcnJvd19kcmF3IHl4dmlld19wY2JhcnJvd19kcmF3IHl4dmlld19wY2NhcHN5bV9kcmF3IHl4dmlld19wY3NjYXR0ZXJfZHJhdyB5eHZpZXdfcGNzcGlrZV9kcmF3IHl4dmlld19yYXJlYV9kcmF3IHl4dmlld19yYmFyX2RyYXcgeXh2aWV3X3JiYXJtX2RyYXcgeXh2aWV3X3JjYXBfZHJhdyB5eHZpZXdfcmNhcHN5bV9kcmF3IHl4dmlld19yY29ubmVjdGVkX2RyYXcgeXh2aWV3X3JsaW5lX2RyYXcgeXh2aWV3X3JzY2F0dGVyX2RyYXcgeXh2aWV3X3JzcGlrZV9kcmF3IHl4dmlld19zcGlrZV9kcmF3IHl4dmlld19zdW5mbG93ZXJfZHJhdyB6YXBfcyB6aW5iIHppbmJfbGxmIHppbmJfcGxmIHppcCB6aXBfbGxmIHppcF9wIHppcF9wbGYgenRfY3RfNSB6dF9oY181IHp0X2hjZF81IHp0X2lzXzUgenRfaXNzXzUgenRfc2hvXzUgenRfc21wXzUgenRiYXNlXzUgenRjb3hfNSB6dGRlc181IHp0ZXJlZ181IHp0ZmlsbF81IHp0Z2VuXzUgenRpcl81IHp0am9pbl81IHp0bmIgenRuYl9wIHp0cCB6dHBfcCB6dHNfNSB6dHNldF81IHp0c3BsaV81IHp0c3VtXzUgenR0b2N0XzUgenR2YXJ5XzUgenR3ZWliXzUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogL2BbYS16QS1aMC05X10rJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXCRcXHs/W2EtekEtWjAtOV9dK1xcfT8vXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJ2BcIlteXFxyXFxuXSo/XCJcXCcnfSxcbiAgICAgICAgICB7YmVnaW46ICdcIlteXFxyXFxuXCJdKlwiJ31cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihhYnN8YWNvc3xhc2lufGF0YW58YXRhbjJ8YXRhbmh8Y2VpbHxjbG9nbG9nfGNvbWJ8Y29zfGRpZ2FtbWF8ZXhwfGZsb29yfGludmNsb2dsb2d8aW52bG9naXR8bG58bG5mYWN0fGxuZmFjdG9yaWFsfGxuZ2FtbWF8bG9nfGxvZzEwfG1heHxtaW58bW9kfHJlbGRpZnxyb3VuZHxzaWdufHNpbnxzcXJ0fHN1bXx0YW58dGFuaHx0cmlnYW1tYXx0cnVuY3xiZXRhZGVufEJpbm9taWFsfGJpbm9ybXxiaW5vcm1hbHxjaGkyfGNoaTJ0YWlsfGRnYW1tYXBkYXxkZ2FtbWFwZGFkYXxkZ2FtbWFwZGFkeHxkZ2FtbWFwZHh8ZGdhbW1hcGR4ZHh8RnxGZGVufEZ0YWlsfGdhbW1hZGVufGdhbW1hcHxpYmV0YXxpbnZiaW5vbWlhbHxpbnZjaGkyfGludmNoaTJ0YWlsfGludkZ8aW52RnRhaWx8aW52Z2FtbWFwfGludmliZXRhfGludm5jaGkyfGludm5GdGFpbHxpbnZuaWJldGF8aW52bm9ybXxpbnZub3JtYWx8aW52dHRhaWx8bmJldGFkZW58bmNoaTJ8bkZkZW58bkZ0YWlsfG5pYmV0YXxub3JtfG5vcm1hbHxub3JtYWxkZW58bm9ybWR8bnBuY2hpMnx0ZGVufHR0YWlsfHVuaWZvcm18YWJicmV2fGNoYXJ8aW5kZXh8aW5kZXhub3R8bGVuZ3RofGxvd2VyfGx0cmltfG1hdGNofHBsdXJhbHxwcm9wZXJ8cmVhbHxyZWdleG18cmVnZXhyfHJlZ2V4c3xyZXZlcnNlfHJ0cmltfHN0cmluZ3xzdHJsZW58c3RybG93ZXJ8c3RybHRyaW18c3RybWF0Y2h8c3Ryb2ZyZWFsfHN0cnBvc3xzdHJwcm9wZXJ8c3RycmV2ZXJzZXxzdHJydHJpbXxzdHJ0cmltfHN0cnVwcGVyfHN1Ymluc3RyfHN1Ymlud29yZHxzdWJzdHJ8dHJpbXx1cHBlcnx3b3JkfHdvcmRjb3VudHxfY2FsbGVyfGF1dG9jb2RlfGJ5dGVvcmRlcnxjaG9wfGNsaXB8Y29uZHxlfGVwc2RvdWJsZXxlcHNmbG9hdHxncm91cHxpbmxpc3R8aW5yYW5nZXxpcmVjb2RlfG1hdHJpeHxtYXhieXRlfG1heGRvdWJsZXxtYXhmbG9hdHxtYXhpbnR8bWF4bG9uZ3xtaXxtaW5ieXRlfG1pbmRvdWJsZXxtaW5mbG9hdHxtaW5pbnR8bWlubG9uZ3xtaXNzaW5nfHJ8cmVjb2RlfHJlcGxheXxyZXR1cm58c3xzY2FsYXJ8ZHxkYXRlfGRheXxkb3d8ZG95fGhhbGZ5ZWFyfG1keXxtb250aHxxdWFydGVyfHdlZWt8eWVhcnxkfGRhaWx5fGRvZmR8ZG9maHxkb2ZtfGRvZnF8ZG9md3xkb2Z5fGh8aGFsZnllYXJseXxob2ZkfG18bW9mZHxtb250aGx5fHF8cW9mZHxxdWFydGVybHl8dGlufHR3aXRoaW58d3x3ZWVrbHl8d29mZHx5fHllYXJseXx5aHx5bXx5b2ZkfHlxfHl3fGNob2xlc2t5fGNvbG51bWJ8Y29sc29mfGNvcnJ8ZGV0fGRpYWd8ZGlhZzBjbnR8ZWx8Z2V0fGhhZGFtYXJkfEl8aW52fGludnN5bXxpc3N5bXxpc3N5bW1ldHJpY3xKfG1hdG1pc3Npbmd8bWF0dW5pZm9ybXxtcmVsZGlmfG51bGxtYXR8cm93bnVtYnxyb3dzb2Z8c3dlZXB8c3ltaW52fHRyYWNlfHZlY3x2ZWNkaWFnKSg/PVxcXFwofCQpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgaGxqcy5DT01NRU5UKCdeWyBcXHRdKlxcXFwqLiokJywgZmFsc2UpLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVEVQMjFfSURFTlRfUkUgPSAnW0EtWl9dW0EtWjAtOV8uXSonO1xuICB2YXIgU1RFUDIxX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6ICdIRUFERVIgRU5EU0VDIERBVEEnXG4gIH07XG4gIHZhciBTVEVQMjFfU1RBUlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdJU08tMTAzMDMtMjE7JyxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG4gIHZhciBTVEVQMjFfQ0xPU0UgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdFTkQtSVNPLTEwMzAzLTIxOycsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwMjEnLCAnc3RlcCcsICdzdHAnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLCAvLyBTVEVQIDIxIGlzIGNhc2UgaW5zZW5zaXRpdmUgaW4gdGhlb3J5LCBpbiBwcmFjdGljZSBhbGwgbm9uLWNvbW1lbnRzIGFyZSBjYXBpdGFsaXplZC5cbiAgICBsZXhlbWVzOiBTVEVQMjFfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IFNURVAyMV9LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RFUDIxX1NUQVJULFxuICAgICAgU1RFUDIxX0NMT1NFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqXFxcXCohJywgJ1xcXFwqLycpLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogXCInXCIsIGVuZDogXCInXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcVydcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46ICdcXFxcJCcgKyBobGpzLklERU5UX1JFXG4gIH07XG5cbiAgdmFyIEhFWF9DT0xPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnIyhbYS1mQS1GMC05XXs2fXxbYS1mQS1GMC05XXszfSknXG4gIH07XG5cbiAgdmFyIEFUX0tFWVdPUkRTID0gW1xuICAgICdjaGFyc2V0JyxcbiAgICAnY3NzJyxcbiAgICAnZGVidWcnLFxuICAgICdleHRlbmQnLFxuICAgICdmb250LWZhY2UnLFxuICAgICdmb3InLFxuICAgICdpbXBvcnQnLFxuICAgICdpbmNsdWRlJyxcbiAgICAnbWVkaWEnLFxuICAgICdtaXhpbicsXG4gICAgJ3BhZ2UnLFxuICAgICd3YXJuJyxcbiAgICAnd2hpbGUnXG4gIF07XG5cbiAgdmFyIFBTRVVET19TRUxFQ1RPUlMgPSBbXG4gICAgJ2FmdGVyJyxcbiAgICAnYmVmb3JlJyxcbiAgICAnZmlyc3QtbGV0dGVyJyxcbiAgICAnZmlyc3QtbGluZScsXG4gICAgJ2FjdGl2ZScsXG4gICAgJ2ZpcnN0LWNoaWxkJyxcbiAgICAnZm9jdXMnLFxuICAgICdob3ZlcicsXG4gICAgJ2xhbmcnLFxuICAgICdsaW5rJyxcbiAgICAndmlzaXRlZCdcbiAgXTtcblxuICB2YXIgVEFHUyA9IFtcbiAgICAnYScsXG4gICAgJ2FiYnInLFxuICAgICdhZGRyZXNzJyxcbiAgICAnYXJ0aWNsZScsXG4gICAgJ2FzaWRlJyxcbiAgICAnYXVkaW8nLFxuICAgICdiJyxcbiAgICAnYmxvY2txdW90ZScsXG4gICAgJ2JvZHknLFxuICAgICdidXR0b24nLFxuICAgICdjYW52YXMnLFxuICAgICdjYXB0aW9uJyxcbiAgICAnY2l0ZScsXG4gICAgJ2NvZGUnLFxuICAgICdkZCcsXG4gICAgJ2RlbCcsXG4gICAgJ2RldGFpbHMnLFxuICAgICdkZm4nLFxuICAgICdkaXYnLFxuICAgICdkbCcsXG4gICAgJ2R0JyxcbiAgICAnZW0nLFxuICAgICdmaWVsZHNldCcsXG4gICAgJ2ZpZ2NhcHRpb24nLFxuICAgICdmaWd1cmUnLFxuICAgICdmb290ZXInLFxuICAgICdmb3JtJyxcbiAgICAnaDEnLFxuICAgICdoMicsXG4gICAgJ2gzJyxcbiAgICAnaDQnLFxuICAgICdoNScsXG4gICAgJ2g2JyxcbiAgICAnaGVhZGVyJyxcbiAgICAnaGdyb3VwJyxcbiAgICAnaHRtbCcsXG4gICAgJ2knLFxuICAgICdpZnJhbWUnLFxuICAgICdpbWcnLFxuICAgICdpbnB1dCcsXG4gICAgJ2lucycsXG4gICAgJ2tiZCcsXG4gICAgJ2xhYmVsJyxcbiAgICAnbGVnZW5kJyxcbiAgICAnbGknLFxuICAgICdtYXJrJyxcbiAgICAnbWVudScsXG4gICAgJ25hdicsXG4gICAgJ29iamVjdCcsXG4gICAgJ29sJyxcbiAgICAncCcsXG4gICAgJ3EnLFxuICAgICdxdW90ZScsXG4gICAgJ3NhbXAnLFxuICAgICdzZWN0aW9uJyxcbiAgICAnc3BhbicsXG4gICAgJ3N0cm9uZycsXG4gICAgJ3N1bW1hcnknLFxuICAgICdzdXAnLFxuICAgICd0YWJsZScsXG4gICAgJ3Rib2R5JyxcbiAgICAndGQnLFxuICAgICd0ZXh0YXJlYScsXG4gICAgJ3Rmb290JyxcbiAgICAndGgnLFxuICAgICd0aGVhZCcsXG4gICAgJ3RpbWUnLFxuICAgICd0cicsXG4gICAgJ3VsJyxcbiAgICAndmFyJyxcbiAgICAndmlkZW8nXG4gIF07XG5cbiAgdmFyIFRBR19FTkQgPSAnW1xcXFwuXFxcXHNcXFxcblxcXFxbXFxcXDosXSc7XG5cbiAgdmFyIEFUVFJJQlVURVMgPSBbXG4gICAgJ2FsaWduLWNvbnRlbnQnLFxuICAgICdhbGlnbi1pdGVtcycsXG4gICAgJ2FsaWduLXNlbGYnLFxuICAgICdhbmltYXRpb24nLFxuICAgICdhbmltYXRpb24tZGVsYXknLFxuICAgICdhbmltYXRpb24tZGlyZWN0aW9uJyxcbiAgICAnYW5pbWF0aW9uLWR1cmF0aW9uJyxcbiAgICAnYW5pbWF0aW9uLWZpbGwtbW9kZScsXG4gICAgJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnLFxuICAgICdhbmltYXRpb24tbmFtZScsXG4gICAgJ2FuaW1hdGlvbi1wbGF5LXN0YXRlJyxcbiAgICAnYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsXG4gICAgJ2F1dG8nLFxuICAgICdiYWNrZmFjZS12aXNpYmlsaXR5JyxcbiAgICAnYmFja2dyb3VuZCcsXG4gICAgJ2JhY2tncm91bmQtYXR0YWNobWVudCcsXG4gICAgJ2JhY2tncm91bmQtY2xpcCcsXG4gICAgJ2JhY2tncm91bmQtY29sb3InLFxuICAgICdiYWNrZ3JvdW5kLWltYWdlJyxcbiAgICAnYmFja2dyb3VuZC1vcmlnaW4nLFxuICAgICdiYWNrZ3JvdW5kLXBvc2l0aW9uJyxcbiAgICAnYmFja2dyb3VuZC1yZXBlYXQnLFxuICAgICdiYWNrZ3JvdW5kLXNpemUnLFxuICAgICdib3JkZXInLFxuICAgICdib3JkZXItYm90dG9tJyxcbiAgICAnYm9yZGVyLWJvdHRvbS1jb2xvcicsXG4gICAgJ2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMnLFxuICAgICdib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cycsXG4gICAgJ2JvcmRlci1ib3R0b20tc3R5bGUnLFxuICAgICdib3JkZXItYm90dG9tLXdpZHRoJyxcbiAgICAnYm9yZGVyLWNvbGxhcHNlJyxcbiAgICAnYm9yZGVyLWNvbG9yJyxcbiAgICAnYm9yZGVyLWltYWdlJyxcbiAgICAnYm9yZGVyLWltYWdlLW91dHNldCcsXG4gICAgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLFxuICAgICdib3JkZXItaW1hZ2Utc2xpY2UnLFxuICAgICdib3JkZXItaW1hZ2Utc291cmNlJyxcbiAgICAnYm9yZGVyLWltYWdlLXdpZHRoJyxcbiAgICAnYm9yZGVyLWxlZnQnLFxuICAgICdib3JkZXItbGVmdC1jb2xvcicsXG4gICAgJ2JvcmRlci1sZWZ0LXN0eWxlJyxcbiAgICAnYm9yZGVyLWxlZnQtd2lkdGgnLFxuICAgICdib3JkZXItcmFkaXVzJyxcbiAgICAnYm9yZGVyLXJpZ2h0JyxcbiAgICAnYm9yZGVyLXJpZ2h0LWNvbG9yJyxcbiAgICAnYm9yZGVyLXJpZ2h0LXN0eWxlJyxcbiAgICAnYm9yZGVyLXJpZ2h0LXdpZHRoJyxcbiAgICAnYm9yZGVyLXNwYWNpbmcnLFxuICAgICdib3JkZXItc3R5bGUnLFxuICAgICdib3JkZXItdG9wJyxcbiAgICAnYm9yZGVyLXRvcC1jb2xvcicsXG4gICAgJ2JvcmRlci10b3AtbGVmdC1yYWRpdXMnLFxuICAgICdib3JkZXItdG9wLXJpZ2h0LXJhZGl1cycsXG4gICAgJ2JvcmRlci10b3Atc3R5bGUnLFxuICAgICdib3JkZXItdG9wLXdpZHRoJyxcbiAgICAnYm9yZGVyLXdpZHRoJyxcbiAgICAnYm90dG9tJyxcbiAgICAnYm94LWRlY29yYXRpb24tYnJlYWsnLFxuICAgICdib3gtc2hhZG93JyxcbiAgICAnYm94LXNpemluZycsXG4gICAgJ2JyZWFrLWFmdGVyJyxcbiAgICAnYnJlYWstYmVmb3JlJyxcbiAgICAnYnJlYWstaW5zaWRlJyxcbiAgICAnY2FwdGlvbi1zaWRlJyxcbiAgICAnY2xlYXInLFxuICAgICdjbGlwJyxcbiAgICAnY2xpcC1wYXRoJyxcbiAgICAnY29sb3InLFxuICAgICdjb2x1bW4tY291bnQnLFxuICAgICdjb2x1bW4tZmlsbCcsXG4gICAgJ2NvbHVtbi1nYXAnLFxuICAgICdjb2x1bW4tcnVsZScsXG4gICAgJ2NvbHVtbi1ydWxlLWNvbG9yJyxcbiAgICAnY29sdW1uLXJ1bGUtc3R5bGUnLFxuICAgICdjb2x1bW4tcnVsZS13aWR0aCcsXG4gICAgJ2NvbHVtbi1zcGFuJyxcbiAgICAnY29sdW1uLXdpZHRoJyxcbiAgICAnY29sdW1ucycsXG4gICAgJ2NvbnRlbnQnLFxuICAgICdjb3VudGVyLWluY3JlbWVudCcsXG4gICAgJ2NvdW50ZXItcmVzZXQnLFxuICAgICdjdXJzb3InLFxuICAgICdkaXJlY3Rpb24nLFxuICAgICdkaXNwbGF5JyxcbiAgICAnZW1wdHktY2VsbHMnLFxuICAgICdmaWx0ZXInLFxuICAgICdmbGV4JyxcbiAgICAnZmxleC1iYXNpcycsXG4gICAgJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgICAnZmxleC1mbG93JyxcbiAgICAnZmxleC1ncm93JyxcbiAgICAnZmxleC1zaHJpbmsnLFxuICAgICdmbGV4LXdyYXAnLFxuICAgICdmbG9hdCcsXG4gICAgJ2ZvbnQnLFxuICAgICdmb250LWZhbWlseScsXG4gICAgJ2ZvbnQtZmVhdHVyZS1zZXR0aW5ncycsXG4gICAgJ2ZvbnQta2VybmluZycsXG4gICAgJ2ZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGUnLFxuICAgICdmb250LXNpemUnLFxuICAgICdmb250LXNpemUtYWRqdXN0JyxcbiAgICAnZm9udC1zdHJldGNoJyxcbiAgICAnZm9udC1zdHlsZScsXG4gICAgJ2ZvbnQtdmFyaWFudCcsXG4gICAgJ2ZvbnQtdmFyaWFudC1saWdhdHVyZXMnLFxuICAgICdmb250LXdlaWdodCcsXG4gICAgJ2hlaWdodCcsXG4gICAgJ2h5cGhlbnMnLFxuICAgICdpY29uJyxcbiAgICAnaW1hZ2Utb3JpZW50YXRpb24nLFxuICAgICdpbWFnZS1yZW5kZXJpbmcnLFxuICAgICdpbWFnZS1yZXNvbHV0aW9uJyxcbiAgICAnaW1lLW1vZGUnLFxuICAgICdpbmhlcml0JyxcbiAgICAnaW5pdGlhbCcsXG4gICAgJ2p1c3RpZnktY29udGVudCcsXG4gICAgJ2xlZnQnLFxuICAgICdsZXR0ZXItc3BhY2luZycsXG4gICAgJ2xpbmUtaGVpZ2h0JyxcbiAgICAnbGlzdC1zdHlsZScsXG4gICAgJ2xpc3Qtc3R5bGUtaW1hZ2UnLFxuICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJyxcbiAgICAnbGlzdC1zdHlsZS10eXBlJyxcbiAgICAnbWFyZ2luJyxcbiAgICAnbWFyZ2luLWJvdHRvbScsXG4gICAgJ21hcmdpbi1sZWZ0JyxcbiAgICAnbWFyZ2luLXJpZ2h0JyxcbiAgICAnbWFyZ2luLXRvcCcsXG4gICAgJ21hcmtzJyxcbiAgICAnbWFzaycsXG4gICAgJ21heC1oZWlnaHQnLFxuICAgICdtYXgtd2lkdGgnLFxuICAgICdtaW4taGVpZ2h0JyxcbiAgICAnbWluLXdpZHRoJyxcbiAgICAnbmF2LWRvd24nLFxuICAgICduYXYtaW5kZXgnLFxuICAgICduYXYtbGVmdCcsXG4gICAgJ25hdi1yaWdodCcsXG4gICAgJ25hdi11cCcsXG4gICAgJ25vbmUnLFxuICAgICdub3JtYWwnLFxuICAgICdvYmplY3QtZml0JyxcbiAgICAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgICAnb3BhY2l0eScsXG4gICAgJ29yZGVyJyxcbiAgICAnb3JwaGFucycsXG4gICAgJ291dGxpbmUnLFxuICAgICdvdXRsaW5lLWNvbG9yJyxcbiAgICAnb3V0bGluZS1vZmZzZXQnLFxuICAgICdvdXRsaW5lLXN0eWxlJyxcbiAgICAnb3V0bGluZS13aWR0aCcsXG4gICAgJ292ZXJmbG93JyxcbiAgICAnb3ZlcmZsb3ctd3JhcCcsXG4gICAgJ292ZXJmbG93LXgnLFxuICAgICdvdmVyZmxvdy15JyxcbiAgICAncGFkZGluZycsXG4gICAgJ3BhZGRpbmctYm90dG9tJyxcbiAgICAncGFkZGluZy1sZWZ0JyxcbiAgICAncGFkZGluZy1yaWdodCcsXG4gICAgJ3BhZGRpbmctdG9wJyxcbiAgICAncGFnZS1icmVhay1hZnRlcicsXG4gICAgJ3BhZ2UtYnJlYWstYmVmb3JlJyxcbiAgICAncGFnZS1icmVhay1pbnNpZGUnLFxuICAgICdwZXJzcGVjdGl2ZScsXG4gICAgJ3BlcnNwZWN0aXZlLW9yaWdpbicsXG4gICAgJ3BvaW50ZXItZXZlbnRzJyxcbiAgICAncG9zaXRpb24nLFxuICAgICdxdW90ZXMnLFxuICAgICdyZXNpemUnLFxuICAgICdyaWdodCcsXG4gICAgJ3RhYi1zaXplJyxcbiAgICAndGFibGUtbGF5b3V0JyxcbiAgICAndGV4dC1hbGlnbicsXG4gICAgJ3RleHQtYWxpZ24tbGFzdCcsXG4gICAgJ3RleHQtZGVjb3JhdGlvbicsXG4gICAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcicsXG4gICAgJ3RleHQtZGVjb3JhdGlvbi1saW5lJyxcbiAgICAndGV4dC1kZWNvcmF0aW9uLXN0eWxlJyxcbiAgICAndGV4dC1pbmRlbnQnLFxuICAgICd0ZXh0LW92ZXJmbG93JyxcbiAgICAndGV4dC1yZW5kZXJpbmcnLFxuICAgICd0ZXh0LXNoYWRvdycsXG4gICAgJ3RleHQtdHJhbnNmb3JtJyxcbiAgICAndGV4dC11bmRlcmxpbmUtcG9zaXRpb24nLFxuICAgICd0b3AnLFxuICAgICd0cmFuc2Zvcm0nLFxuICAgICd0cmFuc2Zvcm0tb3JpZ2luJyxcbiAgICAndHJhbnNmb3JtLXN0eWxlJyxcbiAgICAndHJhbnNpdGlvbicsXG4gICAgJ3RyYW5zaXRpb24tZGVsYXknLFxuICAgICd0cmFuc2l0aW9uLWR1cmF0aW9uJyxcbiAgICAndHJhbnNpdGlvbi1wcm9wZXJ0eScsXG4gICAgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgICAndW5pY29kZS1iaWRpJyxcbiAgICAndmVydGljYWwtYWxpZ24nLFxuICAgICd2aXNpYmlsaXR5JyxcbiAgICAnd2hpdGUtc3BhY2UnLFxuICAgICd3aWRvd3MnLFxuICAgICd3aWR0aCcsXG4gICAgJ3dvcmQtYnJlYWsnLFxuICAgICd3b3JkLXNwYWNpbmcnLFxuICAgICd3b3JkLXdyYXAnLFxuICAgICd6LWluZGV4J1xuICBdO1xuXG4gIC8vIGlsbGVnYWxzXG4gIHZhciBJTExFR0FMID0gW1xuICAgICdcXFxcPycsXG4gICAgJyhcXFxcYlJldHVyblxcXFxiKScsIC8vIG1vbmtleVxuICAgICcoXFxcXGJFbmRcXFxcYiknLCAvLyBtb25rZXlcbiAgICAnKFxcXFxiZW5kXFxcXGIpJywgLy8gdmJzY3JpcHRcbiAgICAnKFxcXFxiZGVmXFxcXGIpJywgLy8gZ3JhZGxlXG4gICAgJzsnLCAvLyBhIHdob2xlIGxvdCBvZiBsYW5ndWFnZXNcbiAgICAnI1xcXFxzJywgLy8gbWFya2Rvd25cbiAgICAnXFxcXCpcXFxccycsIC8vIG1hcmtkb3duXG4gICAgJz09PVxcXFxzJywgLy8gbWFya2Rvd25cbiAgICAnXFxcXHwnLFxuICAgICclJywgLy8gcHJvbG9nXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3N0eWwnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3JkczogJ2lmIGVsc2UgZm9yIGluJyxcbiAgICBpbGxlZ2FsOiAnKCcgKyBJTExFR0FMLmpvaW4oJ3wnKSArICcpJyxcbiAgICBjb250YWluczogW1xuXG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuXG4gICAgICAvLyBjb21tZW50c1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcblxuICAgICAgLy8gaGV4IGNvbG9yc1xuICAgICAgSEVYX0NPTE9SLFxuXG4gICAgICAvLyBjbGFzcyB0YWdcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLlthLXpBLVpdW2EtekEtWjAtOV8tXSonICsgVEFHX0VORCxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2NsYXNzTmFtZTogJ3NlbGVjdG9yLWNsYXNzJywgYmVnaW46ICdcXFxcLlthLXpBLVpdW2EtekEtWjAtOV8tXSonfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyBpZCB0YWdcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcI1thLXpBLVpdW2EtekEtWjAtOV8tXSonICsgVEFHX0VORCxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2NsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJywgYmVnaW46ICdcXFxcI1thLXpBLVpdW2EtekEtWjAtOV8tXSonfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyB0YWdzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGIoJyArIFRBR1Muam9pbignfCcpICsgJyknICsgVEFHX0VORCxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2NsYXNzTmFtZTogJ3NlbGVjdG9yLXRhZycsIGJlZ2luOiAnXFxcXGJbYS16QS1aXVthLXpBLVowLTlfLV0qJ31cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgLy8gcHN1ZWRvIHNlbGVjdG9yc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJyY/Oj86XFxcXGIoJyArIFBTRVVET19TRUxFQ1RPUlMuam9pbignfCcpICsgJyknICsgVEFHX0VORFxuICAgICAgfSxcblxuICAgICAgLy8gQCBrZXl3b3Jkc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcQCgnICsgQVRfS0VZV09SRFMuam9pbignfCcpICsgJylcXFxcYidcbiAgICAgIH0sXG5cbiAgICAgIC8vIHZhcmlhYmxlc1xuICAgICAgVkFSSUFCTEUsXG5cbiAgICAgIC8vIGRpbWVuc2lvblxuICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG5cbiAgICAgIC8vIG51bWJlclxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcblxuICAgICAgLy8gZnVuY3Rpb25zXG4gICAgICAvLyAgLSBvbmx5IGZyb20gYmVnaW5uaW5nIG9mIGxpbmUgKyB3aGl0ZXNwYWNlXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeW2EtekEtWl1bYS16QS1aMC05X1xcLV0qXFxcXCguKlxcXFwpJyxcbiAgICAgICAgaWxsZWdhbDogJ1tcXFxcbl0nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAndGl0bGUnLCBiZWdpbjogJ1xcXFxiW2EtekEtWl1bYS16QS1aMC05X1xcLV0qJ30sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBIRVhfQ09MT1IsXG4gICAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyBhdHRyaWJ1dGVzXG4gICAgICAvLyAgLSBvbmx5IGZyb20gYmVnaW5uaW5nIG9mIGxpbmUgKyB3aGl0ZXNwYWNlXG4gICAgICAvLyAgLSBtdXN0IGhhdmUgd2hpdGVzcGFjZSBhZnRlciBpdFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBBVFRSSUJVVEVTLnJldmVyc2UoKS5qb2luKCd8JykgKyAnKVxcXFxiJyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgLy8gdmFsdWUgY29udGFpbmVyXG4gICAgICAgICAgZW5kOiAvO3wkLyxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgSEVYX0NPTE9SLFxuICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgIF0sXG4gICAgICAgICAgaWxsZWdhbDogL1xcLi8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgREVUQUlMUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXFtcXG4obXVsdGlwYXJ0KT8nLCBlbmQ6ICdcXFxcXVxcbidcbiAgfTtcbiAgdmFyIFRJTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcXFxkezR9LVxcXFxkezJ9LVxcXFxkezJ9KFxcXFxzKylcXFxcZHsyfTpcXFxcZHsyfTpcXFxcZHsyfVxcLlxcXFxkK1onXG4gIH07XG4gIHZhciBQUk9HUkVTU1ZBTFVFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICcoXFxcXCt8LSlcXFxcZCsnXG4gIH07XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICByZWxldmFuY2U6IDEwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXih0ZXN0fHRlc3Rpbmd8c3VjY2Vzc3xzdWNjZXNzZnVsfGZhaWx1cmV8ZXJyb3J8c2tpcHx4ZmFpbHx1eHN1Y2Nlc3MpKDo/KVxcXFxzKyh0ZXN0KT8nIH0sXG4gICAgICB7IGJlZ2luOiAnXnByb2dyZXNzKDo/KShcXFxccyspPyhwb3B8cHVzaCk/JyB9LFxuICAgICAgeyBiZWdpbjogJ150YWdzOicgfSxcbiAgICAgIHsgYmVnaW46ICdedGltZTonIH1cbiAgICBdLFxuICB9O1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIERFVEFJTFMsXG4gICAgICBUSU1FLFxuICAgICAgUFJPR1JFU1NWQUxVRSxcbiAgICAgIEtFWVdPUkRTXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNXSUZUX0tFWVdPUkRTID0ge1xuICAgICAga2V5d29yZDogJ19fQ09MVU1OX18gX19GSUxFX18gX19GVU5DVElPTl9fIF9fTElORV9fIGFzIGFzISBhcz8gYXNzb2NpYXRpdml0eSAnICtcbiAgICAgICAgJ2JyZWFrIGNhc2UgY2F0Y2ggY2xhc3MgY29udGludWUgY29udmVuaWVuY2UgZGVmYXVsdCBkZWZlciBkZWluaXQgZGlkU2V0IGRvICcgK1xuICAgICAgICAnZHluYW1pYyBkeW5hbWljVHlwZSBlbHNlIGVudW0gZXh0ZW5zaW9uIGZhbGx0aHJvdWdoIGZhbHNlIGZpbGVwcml2YXRlIGZpbmFsIGZvciBmdW5jICcgK1xuICAgICAgICAnZ2V0IGd1YXJkIGlmIGltcG9ydCBpbiBpbmRpcmVjdCBpbmZpeCBpbml0IGlub3V0IGludGVybmFsIGlzIGxhenkgbGVmdCBsZXQgJyArXG4gICAgICAgICdtdXRhdGluZyBuaWwgbm9uZSBub25tdXRhdGluZyBvcGVuIG9wZXJhdG9yIG9wdGlvbmFsIG92ZXJyaWRlIHBvc3RmaXggcHJlY2VkZW5jZSAnICtcbiAgICAgICAgJ3ByZWZpeCBwcml2YXRlIHByb3RvY29sIFByb3RvY29sIHB1YmxpYyByZXBlYXQgcmVxdWlyZWQgcmV0aHJvd3MgcmV0dXJuICcgK1xuICAgICAgICAncmlnaHQgc2VsZiBTZWxmIHNldCBzdGF0aWMgc3RydWN0IHN1YnNjcmlwdCBzdXBlciBzd2l0Y2ggdGhyb3cgdGhyb3dzIHRydWUgJyArXG4gICAgICAgICd0cnkgdHJ5ISB0cnk/IFR5cGUgdHlwZWFsaWFzIHVub3duZWQgdmFyIHdlYWsgd2hlcmUgd2hpbGUgd2lsbFNldCcsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBuaWwnLFxuICAgICAgYnVpbHRfaW46ICdhYnMgYWR2YW5jZSBhbGlnbm9mIGFsaWdub2ZWYWx1ZSBhbnlHZW5lcmF0b3IgYXNzZXJ0IGFzc2VydGlvbkZhaWx1cmUgJyArXG4gICAgICAgICdicmlkZ2VGcm9tT2JqZWN0aXZlQyBicmlkZ2VGcm9tT2JqZWN0aXZlQ1VuY29uZGl0aW9uYWwgYnJpZGdlVG9PYmplY3RpdmVDICcgK1xuICAgICAgICAnYnJpZGdlVG9PYmplY3RpdmVDVW5jb25kaXRpb25hbCBjIGNvbnRhaW5zIGNvdW50IGNvdW50RWxlbWVudHMgY291bnRMZWFkaW5nWmVyb3MgJyArXG4gICAgICAgICdkZWJ1Z1ByaW50IGRlYnVnUHJpbnRsbiBkaXN0YW5jZSBkcm9wRmlyc3QgZHJvcExhc3QgZHVtcCBlbmNvZGVCaXRzQXNXb3JkcyAnICtcbiAgICAgICAgJ2VudW1lcmF0ZSBlcXVhbCBmYXRhbEVycm9yIGZpbHRlciBmaW5kIGdldEJyaWRnZWRPYmplY3RpdmVDVHlwZSBnZXRWYUxpc3QgJyArXG4gICAgICAgICdpbmRpY2VzIGluc2VydGlvblNvcnQgaXNCcmlkZ2VkVG9PYmplY3RpdmVDIGlzQnJpZGdlZFZlcmJhdGltVG9PYmplY3RpdmVDICcgK1xuICAgICAgICAnaXNVbmlxdWVseVJlZmVyZW5jZWQgaXNVbmlxdWVseVJlZmVyZW5jZWROb25PYmpDIGpvaW4gbGF6eSBsZXhpY29ncmFwaGljYWxDb21wYXJlICcgK1xuICAgICAgICAnbWFwIG1heCBtYXhFbGVtZW50IG1pbiBtaW5FbGVtZW50IG51bWVyaWNDYXN0IG92ZXJsYXBzIHBhcnRpdGlvbiBwb3NpeCAnICtcbiAgICAgICAgJ3ByZWNvbmRpdGlvbiBwcmVjb25kaXRpb25GYWlsdXJlIHByaW50IHByaW50bG4gcXVpY2tTb3J0IHJlYWRMaW5lIHJlZHVjZSByZWZsZWN0ICcgK1xuICAgICAgICAncmVpbnRlcnByZXRDYXN0IHJldmVyc2Ugcm91bmRVcFRvQWxpZ25tZW50IHNpemVvZiBzaXplb2ZWYWx1ZSBzb3J0IHNwbGl0ICcgK1xuICAgICAgICAnc3RhcnRzV2l0aCBzdHJpZGUgc3RyaWRlb2Ygc3RyaWRlb2ZWYWx1ZSBzd2FwIHRvU3RyaW5nIHRyYW5zY29kZSAnICtcbiAgICAgICAgJ3VuZGVyZXN0aW1hdGVDb3VudCB1bnNhZmVBZGRyZXNzT2YgdW5zYWZlQml0Q2FzdCB1bnNhZmVEb3duY2FzdCB1bnNhZmVVbndyYXAgJyArXG4gICAgICAgICd1bnNhZmVSZWZsZWN0IHdpdGhFeHRlbmRlZExpZmV0aW1lIHdpdGhPYmplY3RBdFBsdXNaZXJvIHdpdGhVbnNhZmVQb2ludGVyICcgK1xuICAgICAgICAnd2l0aFVuc2FmZVBvaW50ZXJUb09iamVjdCB3aXRoVW5zYWZlTXV0YWJsZVBvaW50ZXIgd2l0aFVuc2FmZU11dGFibGVQb2ludGVycyAnICtcbiAgICAgICAgJ3dpdGhVbnNhZmVQb2ludGVyIHdpdGhVbnNhZmVQb2ludGVycyB3aXRoVmFMaXN0IHppcCdcbiAgICB9O1xuXG4gIHZhciBUWVBFID0ge1xuICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgIGJlZ2luOiAnXFxcXGJbQS1aXVtcXFxcd1xcdTAwQzAtXFx1MDJCOFxcJ10qJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIEJMT0NLX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJy9cXFxcKicsXG4gICAgJ1xcXFwqLycsXG4gICAge1xuICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgfVxuICApO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvXFxcXFxcKC8sIGVuZDogJ1xcXFwpJyxcbiAgICBrZXl3b3JkczogU1dJRlRfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtdIC8vIGFzc2lnbmVkIGxhdGVyXG4gIH07XG4gIHZhciBOVU1CRVJTID0ge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnXFxcXGIoW1xcXFxkX10rKFxcXFwuW1xcXFxkZUVfXSspP3wweFthLWZBLUYwLTlfXSsoXFxcXC5bYS1mQS1GMC05cF9dKyk/fDBiWzAxX10rfDBvWzAtN19dKylcXFxcYicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFFVT1RFX1NUUklOR19NT0RFID0gaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtcbiAgICBjb250YWluczogW1NVQlNULCBobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH0pO1xuICBTVUJTVC5jb250YWlucyA9IFtOVU1CRVJTXTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiBTV0lGVF9LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBCTE9DS19DT01NRU5ULFxuICAgICAgVFlQRSxcbiAgICAgIE5VTUJFUlMsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmMnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgICBiZWdpbjogL1tBLVphLXokX11bMC05QS1aYS16JF9dKi9cbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+L1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLywgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGtleXdvcmRzOiBTV0lGVF9LRVlXT1JEUyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIHtiZWdpbjogJzonfSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bXCInXS9cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC9cXFt8JS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3N0cnVjdCBwcm90b2NvbCBjbGFzcyBleHRlbnNpb24gZW51bScsXG4gICAgICAgIGtleXdvcmRzOiBTV0lGVF9LRVlXT1JEUyxcbiAgICAgICAgZW5kOiAnXFxcXHsnLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogL1tBLVphLXokX11bXFx1MDBDMC1cXHUwMkI4MC05QS1aYS16JF9dKi99KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgLy8gQGF0dHJpYnV0ZXNcbiAgICAgICAgYmVnaW46ICcoQHdhcm5fdW51c2VkX3Jlc3VsdHxAZXhwb3J0ZWR8QGxhenl8QG5vZXNjYXBlfCcgK1xuICAgICAgICAgICAgICAgICAgJ0BOU0NvcHlpbmd8QE5TTWFuYWdlZHxAb2JqY3xAY29udmVudGlvbnxAcmVxdWlyZWR8JyArXG4gICAgICAgICAgICAgICAgICAnQG5vcmV0dXJufEBJQkFjdGlvbnxASUJEZXNpZ25hYmxlfEBJQkluc3BlY3RhYmxlfEBJQk91dGxldHwnICtcbiAgICAgICAgICAgICAgICAgICdAaW5maXh8QHByZWZpeHxAcG9zdGZpeHxAYXV0b2Nsb3N1cmV8QHRlc3RhYmxlfEBhdmFpbGFibGV8JyArXG4gICAgICAgICAgICAgICAgICAnQG5vbm9iamN8QE5TQXBwbGljYXRpb25NYWlufEBVSUFwcGxpY2F0aW9uTWFpbiknXG5cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbXBvcnQnLCBlbmQ6IC8kLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTElORV9DT01NRU5UX01PREUsIEJMT0NLX0NPTU1FTlRdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQ09NTUVOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogL1xcJG5vb3BcXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBiZWdpbjogL1xcKC8sXG4gICAgICBlbmQ6IC9cXCkvLFxuICAgICAgY29udGFpbnM6IFsnc2VsZicsIHtcbiAgICAgICAgYmVnaW46IC9cXFxcLi9cbiAgICAgIH1dXG4gICAgfV0sXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogL1xcJCg/IW5vb3ApW2EtekEtWl1bX2EtekEtWjAtOV0qLyxcbiAgICBlbmQ6IC9cXCgvLFxuICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgfTtcblxuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvJVtfYS16QS1aMC05Ol0qLyxcbiAgICBlbmQ6ICclJ1xuICB9O1xuXG4gIHZhciBFU0NBUEVfU0VRVUVOQ0UgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogL1xcXFwuL1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIENPTU1FTlQsXG4gICAgICBGVU5DVElPTixcbiAgICAgIFZBUklBQkxFLFxuICAgICAgRVNDQVBFX1NFUVVFTkNFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIExJVEVSQUxTID0gJ3RydWUgZmFsc2UgeWVzIG5vIG51bGwnO1xuXG4gIHZhciBrZXlQcmVmaXggPSAnXlsgXFxcXC1dKic7XG4gIHZhciBrZXlOYW1lID0gICdbYS16QS1aX11bXFxcXHdcXFxcLV0qJztcbiAgdmFyIEtFWSA9IHtcbiAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjoga2V5UHJlZml4ICsga2V5TmFtZSArIFwiOlwifSxcbiAgICAgIHsgYmVnaW46IGtleVByZWZpeCArICdcIicgKyBrZXlOYW1lICsgJ1wiJyArIFwiOlwifSxcbiAgICAgIHsgYmVnaW46IGtleVByZWZpeCArIFwiJ1wiICsga2V5TmFtZSArIFwiJ1wiICsgXCI6XCJ9XG4gICAgXVxuICB9O1xuXG4gIHZhciBURU1QTEFURV9WQVJJQUJMRVMgPSB7XG4gICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFx7XFx7JywgZW5kOiAnXFx9XFx9JyB9LCAvLyBqaW5qYSB0ZW1wbGF0ZXMgQW5zaWJsZVxuICAgICAgeyBiZWdpbjogJyVcXHsnLCBlbmQ6ICdcXH0nIH0gLy8gUnVieSBpMThuXG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAge2JlZ2luOiAvXFxTKy99XG4gICAgXSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgVEVNUExBVEVfVkFSSUFCTEVTXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbJ3ltbCcsICdZQU1MJywgJ3lhbWwnXSxcbiAgICBjb250YWluczogW1xuICAgICAgS0VZLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeLS0tXFxzKiQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgeyAvLyBtdWx0aSBsaW5lIHN0cmluZ1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1tcXFxcfD5dICokJyxcbiAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogU1RSSU5HLmNvbnRhaW5zLFxuICAgICAgICAvLyB2ZXJ5IHNpbXBsZSB0ZXJtaW5hdGlvbjogbmV4dCBoYXNoIGtleVxuICAgICAgICBlbmQ6IEtFWS52YXJpYW50c1swXS5iZWdpblxuICAgICAgfSxcbiAgICAgIHsgLy8gUnVieS9SYWlscyBlcmJcbiAgICAgICAgYmVnaW46ICc8JVslPS1dPycsIGVuZDogJ1slLV0/JT4nLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3J1YnknLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLy8gZGF0YSB0eXBlXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJyEhJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgIH0sXG4gICAgICB7IC8vIGZyYWdtZW50IGlkICZyZWZcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnJicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnJCcsXG4gICAgICB9LFxuICAgICAgeyAvLyBmcmFnbWVudCByZWZlcmVuY2UgKnJlZlxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdcXFxcKicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnJCdcbiAgICAgIH0sXG4gICAgICB7IC8vIGFycmF5IGxpc3RpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVsbGV0JyxcbiAgICAgICAgYmVnaW46ICdeICotJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogTElURVJBTFMsXG4gICAgICAgIGtleXdvcmRzOiB7bGl0ZXJhbDogTElURVJBTFN9XG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgU1RSSU5HXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgLy8gdmVyc2lvbiBvZiBmb3JtYXQgYW5kIHRvdGFsIGFtb3VudCBvZiB0ZXN0Y2FzZXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ15UQVAgdmVyc2lvbiAoXFxcXGQrKSQnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ14xXFxcXC5cXFxcLihcXFxcZCspJCcgfVxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIC8vIFlBTUwgYmxvY2tcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcoXFxzKyk/LS0tJCcsIGVuZDogJ1xcXFwuXFxcXC5cXFxcLiQnLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3lhbWwnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG5cdCAgLy8gdGVzdGNhc2UgbnVtYmVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnIChcXFxcZCspICdcbiAgICAgIH0sXG5cdCAgLy8gdGVzdGNhc2Ugc3RhdHVzIGFuZCBkZXNjcmlwdGlvblxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICdeb2snIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ15ub3Qgb2snIH1cbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RrJ10sXG4gICAga2V5d29yZHM6ICdhZnRlciBhcHBlbmQgYXBwbHkgYXJyYXkgYXV0b19leGVjb2sgYXV0b19pbXBvcnQgYXV0b19sb2FkIGF1dG9fbWtpbmRleCAnICtcbiAgICAgICdhdXRvX21raW5kZXhfb2xkIGF1dG9fcXVhbGlmeSBhdXRvX3Jlc2V0IGJnZXJyb3IgYmluYXJ5IGJyZWFrIGNhdGNoIGNkIGNoYW4gY2xvY2sgJyArXG4gICAgICAnY2xvc2UgY29uY2F0IGNvbnRpbnVlIGRkZSBkaWN0IGVuY29kaW5nIGVvZiBlcnJvciBldmFsIGV4ZWMgZXhpdCBleHByIGZibG9ja2VkICcgK1xuICAgICAgJ2Zjb25maWd1cmUgZmNvcHkgZmlsZSBmaWxlZXZlbnQgZmlsZW5hbWUgZmx1c2ggZm9yIGZvcmVhY2ggZm9ybWF0IGdldHMgZ2xvYiBnbG9iYWwgJyArXG4gICAgICAnaGlzdG9yeSBodHRwIGlmIGluY3IgaW5mbyBpbnRlcnAgam9pbiBsYXBwZW5kfDEwIGxhc3NpZ258MTAgbGluZGV4fDEwIGxpbnNlcnR8MTAgbGlzdCAnICtcbiAgICAgICdsbGVuZ3RofDEwIGxvYWQgbHJhbmdlfDEwIGxyZXBlYXR8MTAgbHJlcGxhY2V8MTAgbHJldmVyc2V8MTAgbHNlYXJjaHwxMCBsc2V0fDEwIGxzb3J0fDEwICcrXG4gICAgICAnbWF0aGZ1bmMgbWF0aG9wIG1lbW9yeSBtc2djYXQgbmFtZXNwYWNlIG9wZW4gcGFja2FnZSBwYXJyYXkgcGlkIHBrZzo6Y3JlYXRlIHBrZ19ta0luZGV4ICcrXG4gICAgICAncGxhdGZvcm0gcGxhdGZvcm06OnNoZWxsIHByb2MgcHV0cyBwd2QgcmVhZCByZWZjaGFuIHJlZ2V4cCByZWdpc3RyeSByZWdzdWJ8MTAgcmVuYW1lICcrXG4gICAgICAncmV0dXJuIHNhZmUgc2NhbiBzZWVrIHNldCBzb2NrZXQgc291cmNlIHNwbGl0IHN0cmluZyBzdWJzdCBzd2l0Y2ggdGNsX2VuZE9mV29yZCAnK1xuICAgICAgJ3RjbF9maW5kTGlicmFyeSB0Y2xfc3RhcnRPZk5leHRXb3JkIHRjbF9zdGFydE9mUHJldmlvdXNXb3JkIHRjbF93b3JkQnJlYWtBZnRlciAnK1xuICAgICAgJ3RjbF93b3JkQnJlYWtCZWZvcmUgdGNsdGVzdCB0Y2x2YXJzIHRlbGwgdGltZSB0bSB0cmFjZSB1bmtub3duIHVubG9hZCB1bnNldCB1cGRhdGUgJytcbiAgICAgICd1cGxldmVsIHVwdmFyIHZhcmlhYmxlIHZ3YWl0IHdoaWxlJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCc7WyBcXFxcdF0qIycsICckJyksXG4gICAgICBobGpzLkNPTU1FTlQoJ15bIFxcXFx0XSojJywgJyQnKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3Byb2MnLFxuICAgICAgICBlbmQ6ICdbXFxcXHtdJyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICBiZWdpbjogJ1sgXFxcXHRcXFxcblxcXFxyXSsoOjopP1thLXpBLVpfXSgoOjopP1thLXpBLVowLTlfXSkqJyxcbiAgICAgICAgICAgIGVuZDogJ1sgXFxcXHRcXFxcblxcXFxyXScsXG4gICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcJChcXFxceyk/KDo6KT9bYS16QS1aX10oKDo6KT9bYS16QS1aMC05X10pKlxcXFwoKFthLXpBLVowLTlfXSkqXFxcXCknLFxuICAgICAgICAgICAgZW5kOiAnW15hLXpBLVowLTlfXFxcXH1cXFxcJF0nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwkKFxcXFx7KT8oOjopP1thLXpBLVpfXSgoOjopP1thLXpBLVowLTlfXSkqJyxcbiAgICAgICAgICAgIGVuZDogJyhcXFxcKSk/W15hLXpBLVowLTlfXFxcXH1cXFxcJF0nXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW2hsanMuQklOQVJZX05VTUJFUl9NT0RFLCBobGpzLkNfTlVNQkVSX01PREVdXG4gICAgICB9XG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ09NTUFORCA9IHtcbiAgICBjbGFzc05hbWU6ICd0YWcnLFxuICAgIGJlZ2luOiAvXFxcXC8sXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL1thLXpBLVrQsC3Rj9CQLdGPXStbKl0/L30sXG4gICAgICAgICAge2JlZ2luOiAvW15hLXpBLVrQsC3Rj9CQLdGPMC05XS99XG4gICAgICAgIF0sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyBiZWNhdXNlIGl0IGxvb2tzIGxpa2UgYXR0cmlidXRlcyBpbiBIVE1MIHRhZ3NcbiAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICB7YmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vfSxcbiAgICAgICAgICAgICAgICB7YmVnaW46IC9cXHsvLCBlbmQ6IC9cXH0vfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWdpbjogL1xccyo9XFxzKi8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAvLT9cXGQqXFwuP1xcZCsocHR8cGN8bW18Y218aW58ZGR8Y2N8ZXh8ZW0pPy9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgQ09NTUFORCxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZm9ybXVsYScsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09NTUFORF0sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IC9cXCRcXCQvLCBlbmQ6IC9cXCRcXCQvfSxcbiAgICAgICAgICB7YmVnaW46IC9cXCQvLCBlbmQ6IC9cXCQvfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnJScsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEJVSUxUX0lOX1RZUEVTID0gJ2Jvb2wgYnl0ZSBpMTYgaTMyIGk2NCBkb3VibGUgc3RyaW5nIGJpbmFyeSc7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICduYW1lc3BhY2UgY29uc3QgdHlwZWRlZiBzdHJ1Y3QgZW51bSBzZXJ2aWNlIGV4Y2VwdGlvbiB2b2lkIG9uZXdheSBzZXQgbGlzdCBtYXAgcmVxdWlyZWQgb3B0aW9uYWwnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIEJVSUxUX0lOX1RZUEVTLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdzdHJ1Y3QgZW51bSBzZXJ2aWNlIGV4Y2VwdGlvbicsIGVuZDogL1xcey8sXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICAgIHN0YXJ0czoge2VuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlfSAvLyBoYWNrOiBlYXRpbmcgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgdGl0bGVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKHNldHxsaXN0fG1hcClcXFxccyo8JywgZW5kOiAnPicsXG4gICAgICAgIGtleXdvcmRzOiBCVUlMVF9JTl9UWVBFUyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFRQSUQgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJ1sxLTldWzAtOV0qJywgLyogbm8gbGVhZGluZyB6ZXJvcyAqL1xuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgVFBMQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnOlteXFxcXF1dKydcbiAgfTtcbiAgdmFyIFRQREFUQSA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgYmVnaW46ICcoQVJ8UHxQQVlMT0FEfFBSfFJ8U1J8UlNSfExCTHxWUnxVQUxNfE1FU1NBR0V8VVRPT0x8VUZSQU1FfFRJTUVSfFxcXG4gICAgVElNRVJfT1ZFUkZMT1d8Sk9JTlRfTUFYX1NQRUVEfFJFU1VNRV9QUk9HfERJQUdfUkVDKVxcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAnc2VsZicsXG4gICAgICBUUElELFxuICAgICAgVFBMQUJFTFxuICAgIF1cbiAgfTtcbiAgdmFyIFRQSU8gPSB7XG4gICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgIGJlZ2luOiAnKEFJfEFPfERJfERPfEZ8Ukl8Uk98VUl8VU98R0l8R098U0l8U08pXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgICdzZWxmJyxcbiAgICAgIFRQSUQsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLCAvKiBmb3IgcG9zIHNlY3Rpb24gYXQgYm90dG9tICovXG4gICAgICBUUExBQkVMXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdBQk9SVCBBQ0MgQURKVVNUIEFORCBBUF9MRCBCUkVBSyBDQUxMIENOVCBDT0wgQ09ORElUSU9OIENPTkZJRyBEQSBEQiAnICtcbiAgICAgICAgJ0RJViBERVRFQ1QgRUxTRSBFTkQgRU5ERk9SIEVSUl9OVU0gRVJST1JfUFJPRyBGSU5FIEZPUiBHUCBHVUFSRCBJTkMgJyArXG4gICAgICAgICdJRiBKTVAgTElORUFSX01BWF9TUEVFRCBMT0NLIE1PRCBNT05JVE9SIE9GRlNFVCBPZmZzZXQgT1IgT1ZFUlJJREUgJyArXG4gICAgICAgICdQQVVTRSBQUkVHIFBUSCBSVF9MRCBSVU4gU0VMRUNUIFNLSVAgU2tpcCBUQSBUQiBUTyBUT09MX09GRlNFVCAnICtcbiAgICAgICAgJ1Rvb2xfT2Zmc2V0IFVGIFVUIFVGUkFNRV9OVU0gVVRPT0xfTlVNIFVOTE9DSyBXQUlUIFggWSBaIFcgUCBSIFNUUkxFTiAnICtcbiAgICAgICAgJ1NVQlNUUiBGSU5EU1RSIFZPRkZTRVQgUFJPRyBBVFRSIE1OIFBPUycsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnT04gT0ZGIG1heF9zcGVlZCBMUE9TIEpQT1MgRU5BQkxFIERJU0FCTEUgU1RBUlQgU1RPUCBSRVNFVCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBUUERBVEEsXG4gICAgICBUUElPLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICcvKFBST0d8QVRUUnxNTnxQT1N8RU5EKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLyogdGhpcyBpcyBmb3IgY2FzZXMgbGlrZSAsQ0FMTCAqL1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICcoQ0FMTHxSVU58UE9JTlRfTE9HSUN8TEJMKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLyogdGhpcyBpcyBmb3IgY2FzZXMgbGlrZSBDTlQxMDAgd2hlcmUgdGhlIGRlZmF1bHQgbGV4ZW1lcyBkbyBub3RcbiAgICAgICAgICogc2VwYXJhdGUgdGhlIGtleXdvcmQgYW5kIHRoZSBudW1iZXIgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoQUNDfENOVHxTa2lwfE9mZnNldHxQU1BEfFJUX0xEfEFQX0xEfFRvb2xfT2Zmc2V0KSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIHRvIGNhdGNoIG51bWJlcnMgdGhhdCBkbyBub3QgaGF2ZSBhIHdvcmQgYm91bmRhcnkgb24gdGhlIGxlZnQgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcZCsoc2VjfG1zZWN8bW0vc2VjfGNtL21pbnxpbmNoL21pbnxkZWcvc2VjfG1tfGlufGNtKT9cXFxcYicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnLy8nLCAnWzskXScpLFxuICAgICAgaGxqcy5DT01NRU5UKCchJywgJ1s7JF0nKSxcbiAgICAgIGhsanMuQ09NTUVOVCgnLS1lZzonLCAnJCcpLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXCRbQS1aYS16MC05X10rJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG5cbiAgdmFyIEZVTkNUSU9OX05BTUVTID0gJ2F0dHJpYnV0ZSBibG9jayBjb25zdGFudCBjeWNsZSBkYXRlIGR1bXAgaW5jbHVkZSAnICtcbiAgICAgICAgICAgICAgICAgICdtYXggbWluIHBhcmVudCByYW5kb20gcmFuZ2Ugc291cmNlIHRlbXBsYXRlX2Zyb21fc3RyaW5nJztcblxuICB2YXIgRlVOQ1RJT05TID0ge1xuICAgIGJlZ2luS2V5d29yZHM6IEZVTkNUSU9OX05BTUVTLFxuICAgIGtleXdvcmRzOiB7bmFtZTogRlVOQ1RJT05fTkFNRVN9LFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgUEFSQU1TXG4gICAgXVxuICB9O1xuXG4gIHZhciBGSUxURVIgPSB7XG4gICAgYmVnaW46IC9cXHxbQS1aYS16X10rOj8vLFxuICAgIGtleXdvcmRzOlxuICAgICAgJ2FicyBiYXRjaCBjYXBpdGFsaXplIGNvbnZlcnRfZW5jb2RpbmcgZGF0ZSBkYXRlX21vZGlmeSBkZWZhdWx0ICcgK1xuICAgICAgJ2VzY2FwZSBmaXJzdCBmb3JtYXQgam9pbiBqc29uX2VuY29kZSBrZXlzIGxhc3QgbGVuZ3RoIGxvd2VyICcgK1xuICAgICAgJ21lcmdlIG5sMmJyIG51bWJlcl9mb3JtYXQgcmF3IHJlcGxhY2UgcmV2ZXJzZSByb3VuZCBzbGljZSBzb3J0IHNwbGl0ICcgK1xuICAgICAgJ3N0cmlwdGFncyB0aXRsZSB0cmltIHVwcGVyIHVybF9lbmNvZGUnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBGVU5DVElPTlNcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRBR1MgPSAnYXV0b2VzY2FwZSBibG9jayBkbyBlbWJlZCBleHRlbmRzIGZpbHRlciBmbHVzaCBmb3IgJyArXG4gICAgJ2lmIGltcG9ydCBpbmNsdWRlIG1hY3JvIHNhbmRib3ggc2V0IHNwYWNlbGVzcyB1c2UgdmVyYmF0aW0nO1xuXG4gIFRBR1MgPSBUQUdTICsgJyAnICsgVEFHUy5zcGxpdCgnICcpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gJ2VuZCcgKyB0fSkuam9pbignICcpO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjcmFmdGNtcyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoL1xceyMvLCAvI30vKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHslLywgZW5kOiAvJX0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBUQUdTLFxuICAgICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICBjb250YWluczogW0ZJTFRFUiwgRlVOQ1RJT05TXSxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvXFx7XFx7LywgZW5kOiAvfX0vLFxuICAgICAgICBjb250YWluczogWydzZWxmJywgRklMVEVSLCBGVU5DVElPTlNdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaW4gaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoICcgK1xuICAgICAgJ2luc3RhbmNlb2Ygd2l0aCB0aHJvdyBjYXNlIGRlZmF1bHQgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgJyArXG4gICAgICAnbGV0IHlpZWxkIGNvbnN0IGNsYXNzIHB1YmxpYyBwcml2YXRlIHByb3RlY3RlZCBnZXQgc2V0IHN1cGVyICcgK1xuICAgICAgJ3N0YXRpYyBpbXBsZW1lbnRzIGVudW0gZXhwb3J0IGltcG9ydCBkZWNsYXJlIHR5cGUgbmFtZXNwYWNlIGFic3RyYWN0ICcgK1xuICAgICAgJ2FzIGZyb20gZXh0ZW5kcyBhc3luYyBhd2FpdCcsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkIE5hTiBJbmZpbml0eScsXG4gICAgYnVpbHRfaW46XG4gICAgICAnZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgJyArXG4gICAgICAnZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgJyArXG4gICAgICAnRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yICcgK1xuICAgICAgJ1R5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5ICcgK1xuICAgICAgJ0Zsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5ICcgK1xuICAgICAgJ1VpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlICcgK1xuICAgICAgJ21vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBhbnkgbnVtYmVyIGJvb2xlYW4gc3RyaW5nIHZvaWQgUHJvbWlzZSdcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndHMnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSBzdHJpY3RbJ1wiXS9cbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgeyAvLyB0ZW1wbGF0ZSBzdHJpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ1xcXFx9J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbYkJdWzAxXSspJyB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYigwW29PXVswLTddKyknIH0sXG4gICAgICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLy8gXCJ2YWx1ZVwiIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogJygnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIoY2FzZXxyZXR1cm58dGhyb3cpXFxcXGIpXFxcXHMqJyxcbiAgICAgICAga2V5d29yZHM6ICdyZXR1cm4gdGhyb3cgY2FzZScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogJyhcXFxcKC4qP1xcXFwpfCcgKyBobGpzLklERU5UX1JFICsgJylcXFxccyo9PicsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqPT4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkVcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoXFxzKlxcKS8sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICdmdW5jdGlvbicsIGVuZDogL1tcXHs7XS8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAvW0EtWmEteiRfXVswLTlBLVphLXokX10qL30pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaWxsZWdhbDogL1tcIidcXChdL1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogLyUvLFxuICAgICAgICByZWxldmFuY2U6IDAgLy8gKCkgPT4ge30gaXMgbW9yZSB0eXBpY2FsIGluIFR5cGVTY3JpcHRcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjb25zdHJ1Y3RvcicsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaWxsZWdhbDogL1tcIidcXChdL1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgLy8gcHJldmVudCByZWZlcmVuY2VzIGxpa2UgbW9kdWxlLmlkIGZyb20gYmVpbmcgaGlnbGlnaHRlZCBhcyBtb2R1bGUgZGVmaW5pdGlvbnNcbiAgICAgICAgYmVnaW46IC9tb2R1bGVcXC4vLFxuICAgICAgICBrZXl3b3Jkczoge2J1aWx0X2luOiAnbW9kdWxlJ30sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ21vZHVsZScsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbnRlcmZhY2UnLCBlbmQ6IC9cXHsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogJ2ludGVyZmFjZSBleHRlbmRzJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbKC5dLyAvLyByZWxldmFuY2UgYm9vc3RlciBmb3IgYSBwYXR0ZXJuIGNvbW1vbiB0byBKUyBsaWJzOiBgJChzb21ldGhpbmcpYCBhbmQgYCQuc29tZXRoaW5nYFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLicgKyBobGpzLklERU5UX1JFLCByZWxldmFuY2U6IDAgLy8gaGFjazogcHJldmVudHMgZGV0ZWN0aW9uIG9mIGtleXdvcmRzIGFmdGVyIGRvdHNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgLy8gVmFsdWUgdHlwZXNcbiAgICAgICAgJ2NoYXIgdWNoYXIgdW5pY2hhciBpbnQgdWludCBsb25nIHVsb25nIHNob3J0IHVzaG9ydCBpbnQ4IGludDE2IGludDMyIGludDY0IHVpbnQ4ICcgK1xuICAgICAgICAndWludDE2IHVpbnQzMiB1aW50NjQgZmxvYXQgZG91YmxlIGJvb2wgc3RydWN0IGVudW0gc3RyaW5nIHZvaWQgJyArXG4gICAgICAgIC8vIFJlZmVyZW5jZSB0eXBlc1xuICAgICAgICAnd2VhayB1bm93bmVkIG93bmVkICcgK1xuICAgICAgICAvLyBNb2RpZmllcnNcbiAgICAgICAgJ2FzeW5jIHNpZ25hbCBzdGF0aWMgYWJzdHJhY3QgaW50ZXJmYWNlIG92ZXJyaWRlIHZpcnR1YWwgZGVsZWdhdGUgJyArXG4gICAgICAgIC8vIENvbnRyb2wgU3RydWN0dXJlc1xuICAgICAgICAnaWYgd2hpbGUgZG8gZm9yIGZvcmVhY2ggZWxzZSBzd2l0Y2ggY2FzZSBicmVhayBkZWZhdWx0IHJldHVybiB0cnkgY2F0Y2ggJyArXG4gICAgICAgIC8vIFZpc2liaWxpdHlcbiAgICAgICAgJ3B1YmxpYyBwcml2YXRlIHByb3RlY3RlZCBpbnRlcm5hbCAnICtcbiAgICAgICAgLy8gT3RoZXJcbiAgICAgICAgJ3VzaW5nIG5ldyB0aGlzIGdldCBzZXQgY29uc3Qgc3Rkb3V0IHN0ZGluIHN0ZGVyciB2YXInLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdEQnVzIEdMaWIgQ0NvZGUgR2VlIE9iamVjdCBHdGsgUG9zaXgnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ2ZhbHNlIHRydWUgbnVsbCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSBuYW1lc3BhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1teLDpcXFxcblxcXFxzXFxcXC5dJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInLFxuICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeIycsIGVuZDogJyQnLFxuICAgICAgICByZWxldmFuY2U6IDJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndmInXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYWRkaGFuZGxlciBhZGRyZXNzb2YgYWxpYXMgYW5kIGFuZGFsc28gYWdncmVnYXRlIGFuc2kgYXMgYXNzZW1ibHkgYXV0byBiaW5hcnkgYnkgYnlyZWYgYnl2YWwgJyArIC8qIGEtYiAqL1xuICAgICAgICAnY2FsbCBjYXNlIGNhdGNoIGNsYXNzIGNvbXBhcmUgY29uc3QgY29udGludWUgY3VzdG9tIGRlY2xhcmUgZGVmYXVsdCBkZWxlZ2F0ZSBkaW0gZGlzdGluY3QgZG8gJyArIC8qIGMtZCAqL1xuICAgICAgICAnZWFjaCBlcXVhbHMgZWxzZSBlbHNlaWYgZW5kIGVudW0gZXJhc2UgZXJyb3IgZXZlbnQgZXhpdCBleHBsaWNpdCBmaW5hbGx5IGZvciBmcmllbmQgZnJvbSBmdW5jdGlvbiAnICsgLyogZS1mICovXG4gICAgICAgICdnZXQgZ2xvYmFsIGdvdG8gZ3JvdXAgaGFuZGxlcyBpZiBpbXBsZW1lbnRzIGltcG9ydHMgaW4gaW5oZXJpdHMgaW50ZXJmYWNlIGludG8gaXMgaXNmYWxzZSBpc25vdCBpc3RydWUgJyArIC8qIGctaSAqL1xuICAgICAgICAnam9pbiBrZXkgbGV0IGxpYiBsaWtlIGxvb3AgbWUgbWlkIG1vZCBtb2R1bGUgbXVzdGluaGVyaXQgbXVzdG92ZXJyaWRlIG15YmFzZSBteWNsYXNzICcgKyAvKiBqLW0gKi9cbiAgICAgICAgJ25hbWVzcGFjZSBuYXJyb3dpbmcgbmV3IG5leHQgbm90IG5vdGluaGVyaXRhYmxlIG5vdG92ZXJyaWRhYmxlICcgKyAvKiBuICovXG4gICAgICAgICdvZiBvZmYgb24gb3BlcmF0b3Igb3B0aW9uIG9wdGlvbmFsIG9yIG9yZGVyIG9yZWxzZSBvdmVybG9hZHMgb3ZlcnJpZGFibGUgb3ZlcnJpZGVzICcgKyAvKiBvICovXG4gICAgICAgICdwYXJhbWFycmF5IHBhcnRpYWwgcHJlc2VydmUgcHJpdmF0ZSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVibGljICcgKyAvKiBwICovXG4gICAgICAgICdyYWlzZWV2ZW50IHJlYWRvbmx5IHJlZGltIHJlbSByZW1vdmVoYW5kbGVyIHJlc3VtZSByZXR1cm4gJyArIC8qIHIgKi9cbiAgICAgICAgJ3NlbGVjdCBzZXQgc2hhZG93cyBzaGFyZWQgc2tpcCBzdGF0aWMgc3RlcCBzdG9wIHN0cnVjdHVyZSBzdHJpY3Qgc3ViIHN5bmNsb2NrICcgKyAvKiBzICovXG4gICAgICAgICd0YWtlIHRleHQgdGhlbiB0aHJvdyB0byB0cnkgdW5pY29kZSB1bnRpbCB1c2luZyB3aGVuIHdoZXJlIHdoaWxlIHdpZGVuaW5nIHdpdGggd2l0aGV2ZW50cyB3cml0ZW9ubHkgeG9yJywgLyogdC14ICovXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2Jvb2xlYW4gYnl0ZSBjYm9vbCBjYnl0ZSBjY2hhciBjZGF0ZSBjZGVjIGNkYmwgY2hhciBjaW50IGNsbmcgY29iaiBjc2J5dGUgY3Nob3J0IGNzbmcgY3N0ciBjdHlwZSAnICsgIC8qIGItYyAqL1xuICAgICAgICAnZGF0ZSBkZWNpbWFsIGRpcmVjdGNhc3QgZG91YmxlIGdldHR5cGUgZ2V0eG1sbmFtZXNwYWNlIGlpZiBpbnRlZ2VyIGxvbmcgb2JqZWN0ICcgKyAvKiBkLW8gKi9cbiAgICAgICAgJ3NieXRlIHNob3J0IHNpbmdsZSBzdHJpbmcgdHJ5Y2FzdCB0eXBlb2YgdWludGVnZXIgdWxvbmcgdXNob3J0JywgLyogcy11ICovXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBub3RoaW5nJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogJy8vfHt8fXxlbmRpZnxnb3N1Ynx2YXJpYW50fHdlbmQnLCAvKiByZXNlcnZlZCBkZXByZWNhdGVkIGtleXdvcmRzICovXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7Y29udGFpbnM6IFt7YmVnaW46ICdcIlwiJ31dfSksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdcXCcnLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbjogJ1xcJ1xcJ1xcJ3w8IS0tfC0tPicsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5QSFJBU0FMX1dPUkRTX01PREVdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbjogJzwvPycsIGVuZDogJz4nLFxuICAgICAgICAgICAgICBjb250YWluczogW2hsanMuUEhSQVNBTF9XT1JEU19NT0RFXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbHNlaWYgZW5kIHJlZ2lvbiBleHRlcm5hbHNvdXJjZSd9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3ZicyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdjYWxsIGNsYXNzIGNvbnN0IGRpbSBkbyBsb29wIGVyYXNlIGV4ZWN1dGUgZXhlY3V0ZWdsb2JhbCBleGl0IGZvciBlYWNoIG5leHQgZnVuY3Rpb24gJyArXG4gICAgICAgICdpZiB0aGVuIGVsc2Ugb24gZXJyb3Igb3B0aW9uIGV4cGxpY2l0IG5ldyBwcml2YXRlIHByb3BlcnR5IGxldCBnZXQgcHVibGljIHJhbmRvbWl6ZSAnICtcbiAgICAgICAgJ3JlZGltIHJlbSBzZWxlY3QgY2FzZSBzZXQgc3RvcCBzdWIgd2hpbGUgd2VuZCB3aXRoIGVuZCB0byBlbHNlaWYgaXMgb3IgeG9yIGFuZCBub3QgJyArXG4gICAgICAgICdjbGFzc19pbml0aWFsaXplIGNsYXNzX3Rlcm1pbmF0ZSBkZWZhdWx0IHByZXNlcnZlIGluIG1lIGJ5dmFsIGJ5cmVmIHN0ZXAgcmVzdW1lIGdvdG8nLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdsY2FzZSBtb250aCB2YXJ0eXBlIGluc3RycmV2IHVib3VuZCBzZXRsb2NhbGUgZ2V0b2JqZWN0IHJnYiBnZXRyZWYgc3RyaW5nICcgK1xuICAgICAgICAnd2Vla2RheW5hbWUgcm5kIGRhdGVhZGQgbW9udGhuYW1lIG5vdyBkYXkgbWludXRlIGlzYXJyYXkgY2Jvb2wgcm91bmQgZm9ybWF0Y3VycmVuY3kgJyArXG4gICAgICAgICdjb252ZXJzaW9ucyBjc25nIHRpbWV2YWx1ZSBzZWNvbmQgeWVhciBzcGFjZSBhYnMgY2xuZyB0aW1lc2VyaWFsIGZpeHMgbGVuIGFzYyAnICtcbiAgICAgICAgJ2lzZW1wdHkgbWF0aHMgZGF0ZXNlcmlhbCBhdG4gdGltZXIgaXNvYmplY3QgZmlsdGVyIHdlZWtkYXkgZGF0ZXZhbHVlIGNjdXIgaXNkYXRlICcgK1xuICAgICAgICAnaW5zdHIgZGF0ZWRpZmYgZm9ybWF0ZGF0ZXRpbWUgcmVwbGFjZSBpc251bGwgcmlnaHQgc2duIGFycmF5IHNudW1lcmljIGxvZyBjZGJsIGhleCAnICtcbiAgICAgICAgJ2NociBsYm91bmQgbXNnYm94IHVjYXNlIGdldGxvY2FsZSBjb3MgY2RhdGUgY2J5dGUgcnRyaW0gam9pbiBob3VyIG9jdCB0eXBlbmFtZSB0cmltICcgK1xuICAgICAgICAnc3RyY29tcCBpbnQgY3JlYXRlb2JqZWN0IGxvYWRwaWN0dXJlIHRhbiBmb3JtYXRudW1iZXIgbWlkIHNjcmlwdGVuZ2luZWJ1aWxkdmVyc2lvbiAnICtcbiAgICAgICAgJ3NjcmlwdGVuZ2luZSBzcGxpdCBzY3JpcHRlbmdpbmVtaW5vcnZlcnNpb24gY2ludCBzaW4gZGF0ZXBhcnQgbHRyaW0gc3FyICcgK1xuICAgICAgICAnc2NyaXB0ZW5naW5lbWFqb3J2ZXJzaW9uIHRpbWUgZGVyaXZlZCBldmFsIGRhdGUgZm9ybWF0cGVyY2VudCBleHAgaW5wdXRib3ggbGVmdCBhc2N3ICcgK1xuICAgICAgICAnY2hydyByZWdleHAgc2VydmVyIHJlc3BvbnNlIHJlcXVlc3QgY3N0ciBlcnInLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UgbnVsbCBub3RoaW5nIGVtcHR5J1xuICAgIH0sXG4gICAgaWxsZWdhbDogJy8vJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjb250YWluczogW3tiZWdpbjogJ1wiXCInfV19KSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgLycvLFxuICAgICAgICAvJC8sXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnPCUnLCBlbmQ6ICclPicsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAndmJzY3JpcHQnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNWX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWNjZXB0X29uIGFsaWFzIGFsd2F5cyBhbHdheXNfY29tYiBhbHdheXNfZmYgYWx3YXlzX2xhdGNoIGFuZCBhc3NlcnQgYXNzaWduICcgK1xuICAgICAgJ2Fzc3VtZSBhdXRvbWF0aWMgYmVmb3JlIGJlZ2luIGJpbmQgYmlucyBiaW5zb2YgYml0IGJyZWFrIGJ1ZnwwIGJ1ZmlmMCBidWZpZjEgJyArXG4gICAgICAnYnl0ZSBjYXNlIGNhc2V4IGNhc2V6IGNlbGwgY2hhbmRsZSBjaGVja2VyIGNsYXNzIGNsb2NraW5nIGNtb3MgY29uZmlnIGNvbnN0ICcgK1xuICAgICAgJ2NvbnN0cmFpbnQgY29udGV4dCBjb250aW51ZSBjb3ZlciBjb3Zlcmdyb3VwIGNvdmVycG9pbnQgY3Jvc3MgZGVhc3NpZ24gZGVmYXVsdCAnICtcbiAgICAgICdkZWZwYXJhbSBkZXNpZ24gZGlzYWJsZSBkaXN0IGRvIGVkZ2UgZWxzZSBlbmQgZW5kY2FzZSBlbmRjaGVja2VyIGVuZGNsYXNzICcgK1xuICAgICAgJ2VuZGNsb2NraW5nIGVuZGNvbmZpZyBlbmRmdW5jdGlvbiBlbmRnZW5lcmF0ZSBlbmRncm91cCBlbmRpbnRlcmZhY2UgZW5kbW9kdWxlICcgK1xuICAgICAgJ2VuZHBhY2thZ2UgZW5kcHJpbWl0aXZlIGVuZHByb2dyYW0gZW5kcHJvcGVydHkgZW5kc3BlY2lmeSBlbmRzZXF1ZW5jZSBlbmR0YWJsZSAnICtcbiAgICAgICdlbmR0YXNrIGVudW0gZXZlbnQgZXZlbnR1YWxseSBleHBlY3QgZXhwb3J0IGV4dGVuZHMgZXh0ZXJuIGZpbmFsIGZpcnN0X21hdGNoIGZvciAnICtcbiAgICAgICdmb3JjZSBmb3JlYWNoIGZvcmV2ZXIgZm9yayBmb3Jram9pbiBmdW5jdGlvbiBnZW5lcmF0ZXw1IGdlbnZhciBnbG9iYWwgaGlnaHowIGhpZ2h6MSAnICtcbiAgICAgICdpZiBpZmYgaWZub25lIGlnbm9yZV9iaW5zIGlsbGVnYWxfYmlucyBpbXBsZW1lbnRzIGltcGxpZXMgaW1wb3J0IGluY2RpciBpbmNsdWRlICcgK1xuICAgICAgJ2luaXRpYWwgaW5vdXQgaW5wdXQgaW5zaWRlIGluc3RhbmNlIGludCBpbnRlZ2VyIGludGVyY29ubmVjdCBpbnRlcmZhY2UgaW50ZXJzZWN0ICcgK1xuICAgICAgJ2pvaW4gam9pbl9hbnkgam9pbl9ub25lIGxhcmdlIGxldCBsaWJsaXN0IGxpYnJhcnkgbG9jYWwgbG9jYWxwYXJhbSBsb2dpYyBsb25naW50ICcgK1xuICAgICAgJ21hY3JvbW9kdWxlIG1hdGNoZXMgbWVkaXVtIG1vZHBvcnQgbW9kdWxlIG5hbmQgbmVnZWRnZSBuZXR0eXBlIG5ldyBuZXh0dGltZSBubW9zICcgK1xuICAgICAgJ25vciBub3Nob3djYW5jZWxsZWQgbm90IG5vdGlmMCBub3RpZjEgb3Igb3V0cHV0IHBhY2thZ2UgcGFja2VkIHBhcmFtZXRlciBwbW9zICcgK1xuICAgICAgJ3Bvc2VkZ2UgcHJpbWl0aXZlIHByaW9yaXR5IHByb2dyYW0gcHJvcGVydHkgcHJvdGVjdGVkIHB1bGwwIHB1bGwxIHB1bGxkb3duIHB1bGx1cCAnICtcbiAgICAgICdwdWxzZXN0eWxlX29uZGV0ZWN0IHB1bHNlc3R5bGVfb25ldmVudCBwdXJlIHJhbmQgcmFuZGMgcmFuZGNhc2UgcmFuZHNlcXVlbmNlIHJjbW9zICcgK1xuICAgICAgJ3JlYWwgcmVhbHRpbWUgcmVmIHJlZyByZWplY3Rfb24gcmVsZWFzZSByZXBlYXQgcmVzdHJpY3QgcmV0dXJuIHJubW9zIHJwbW9zIHJ0cmFuICcgK1xuICAgICAgJ3J0cmFuaWYwIHJ0cmFuaWYxIHNfYWx3YXlzIHNfZXZlbnR1YWxseSBzX25leHR0aW1lIHNfdW50aWwgc191bnRpbF93aXRoIHNjYWxhcmVkICcgK1xuICAgICAgJ3NlcXVlbmNlIHNob3J0aW50IHNob3J0cmVhbCBzaG93Y2FuY2VsbGVkIHNpZ25lZCBzbWFsbCBzb2Z0IHNvbHZlIHNwZWNpZnkgc3BlY3BhcmFtICcgK1xuICAgICAgJ3N0YXRpYyBzdHJpbmcgc3Ryb25nIHN0cm9uZzAgc3Ryb25nMSBzdHJ1Y3Qgc3VwZXIgc3VwcGx5MCBzdXBwbHkxIHN5bmNfYWNjZXB0X29uICcgK1xuICAgICAgJ3N5bmNfcmVqZWN0X29uIHRhYmxlIHRhZ2dlZCB0YXNrIHRoaXMgdGhyb3VnaG91dCB0aW1lIHRpbWVwcmVjaXNpb24gdGltZXVuaXQgdHJhbiAnICtcbiAgICAgICd0cmFuaWYwIHRyYW5pZjEgdHJpIHRyaTAgdHJpMSB0cmlhbmQgdHJpb3IgdHJpcmVnIHR5cGUgdHlwZWRlZiB1bmlvbiB1bmlxdWUgdW5pcXVlMCAnICtcbiAgICAgICd1bnNpZ25lZCB1bnRpbCB1bnRpbF93aXRoIHVudHlwZWQgdXNlIHV3aXJlIHZhciB2ZWN0b3JlZCB2aXJ0dWFsIHZvaWQgd2FpdCB3YWl0X29yZGVyICcgK1xuICAgICAgJ3dhbmQgd2VhayB3ZWFrMCB3ZWFrMSB3aGlsZSB3aWxkY2FyZCB3aXJlIHdpdGggd2l0aGluIHdvciB4bm9yIHhvcicsXG4gICAgbGl0ZXJhbDpcbiAgICAgICdudWxsJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICckZmluaXNoICRzdG9wICRleGl0ICRmYXRhbCAkZXJyb3IgJHdhcm5pbmcgJGluZm8gJHJlYWx0aW1lICR0aW1lICRwcmludHRpbWVzY2FsZSAnICtcbiAgICAgICckYml0c3RvcmVhbCAkYml0c3Rvc2hvcnRyZWFsICRpdG9yICRzaWduZWQgJGNhc3QgJGJpdHMgJHN0aW1lICR0aW1lZm9ybWF0ICcgK1xuICAgICAgJyRyZWFsdG9iaXRzICRzaG9ydHJlYWx0b2JpdHMgJHJ0b2kgJHVuc2lnbmVkICRhc3NlcnRvbiAkYXNzZXJ0a2lsbCAkYXNzZXJ0cGFzc29uICcgK1xuICAgICAgJyRhc3NlcnRmYWlsb24gJGFzc2VydG5vbnZhY3VvdXNvbiAkYXNzZXJ0b2ZmICRhc3NlcnRjb250cm9sICRhc3NlcnRwYXNzb2ZmICcgK1xuICAgICAgJyRhc3NlcnRmYWlsb2ZmICRhc3NlcnR2YWN1b3Vzb2ZmICRpc3VuYm91bmRlZCAkc2FtcGxlZCAkZmVsbCAkY2hhbmdlZCAkcGFzdF9nY2xrICcgK1xuICAgICAgJyRmZWxsX2djbGsgJGNoYW5nZWRfZ2NsayAkcmlzaW5nX2djbGsgJHN0ZWFkeV9nY2xrICRjb3ZlcmFnZV9jb250cm9sICcgK1xuICAgICAgJyRjb3ZlcmFnZV9nZXQgJGNvdmVyYWdlX3NhdmUgJHNldF9jb3ZlcmFnZV9kYl9uYW1lICRyb3NlICRzdGFibGUgJHBhc3QgJyArXG4gICAgICAnJHJvc2VfZ2NsayAkc3RhYmxlX2djbGsgJGZ1dHVyZV9nY2xrICRmYWxsaW5nX2djbGsgJGNoYW5naW5nX2djbGsgJGRpc3BsYXkgJyArXG4gICAgICAnJGNvdmVyYWdlX2dldF9tYXggJGNvdmVyYWdlX21lcmdlICRnZXRfY292ZXJhZ2UgJGxvYWRfY292ZXJhZ2VfZGIgJHR5cGVuYW1lICcgK1xuICAgICAgJyR1bnBhY2tlZF9kaW1lbnNpb25zICRsZWZ0ICRsb3cgJGluY3JlbWVudCAkY2xvZzIgJGxuICRsb2cxMCAkZXhwICRzcXJ0ICRwb3cgJyArXG4gICAgICAnJGZsb29yICRjZWlsICRzaW4gJGNvcyAkdGFuICRjb3VudGJpdHMgJG9uZWhvdCAkaXN1bmtub3duICRmYXRhbCAkd2FybmluZyAnICtcbiAgICAgICckZGltZW5zaW9ucyAkcmlnaHQgJGhpZ2ggJHNpemUgJGFzaW4gJGFjb3MgJGF0YW4gJGF0YW4yICRoeXBvdCAkc2luaCAkY29zaCAnICtcbiAgICAgICckdGFuaCAkYXNpbmggJGFjb3NoICRhdGFuaCAkY291bnRvbmVzICRvbmVob3QwICRlcnJvciAkaW5mbyAkcmFuZG9tICcgK1xuICAgICAgJyRkaXN0X2NoaV9zcXVhcmUgJGRpc3RfZXJsYW5nICRkaXN0X2V4cG9uZW50aWFsICRkaXN0X25vcm1hbCAkZGlzdF9wb2lzc29uICcgK1xuICAgICAgJyRkaXN0X3QgJGRpc3RfdW5pZm9ybSAkcV9pbml0aWFsaXplICRxX3JlbW92ZSAkcV9leGFtICRhc3luYyRhbmQkYXJyYXkgJyArXG4gICAgICAnJGFzeW5jJG5hbmQkYXJyYXkgJGFzeW5jJG9yJGFycmF5ICRhc3luYyRub3IkYXJyYXkgJHN5bmMkYW5kJGFycmF5ICcgK1xuICAgICAgJyRzeW5jJG5hbmQkYXJyYXkgJHN5bmMkb3IkYXJyYXkgJHN5bmMkbm9yJGFycmF5ICRxX2FkZCAkcV9mdWxsICRwc3ByaW50ZiAnICtcbiAgICAgICckYXN5bmMkYW5kJHBsYW5lICRhc3luYyRuYW5kJHBsYW5lICRhc3luYyRvciRwbGFuZSAkYXN5bmMkbm9yJHBsYW5lICcgK1xuICAgICAgJyRzeW5jJGFuZCRwbGFuZSAkc3luYyRuYW5kJHBsYW5lICRzeW5jJG9yJHBsYW5lICRzeW5jJG5vciRwbGFuZSAkc3lzdGVtICcgK1xuICAgICAgJyRkaXNwbGF5ICRkaXNwbGF5YiAkZGlzcGxheWggJGRpc3BsYXlvICRzdHJvYmUgJHN0cm9iZWIgJHN0cm9iZWggJHN0cm9iZW8gJyArXG4gICAgICAnJHdyaXRlICRyZWFkbWVtYiAkcmVhZG1lbWggJHdyaXRlbWVtaCAkdmFsdWUkcGx1c2FyZ3MgJyArXG4gICAgICAnJGR1bXB2YXJzICRkdW1wb24gJGR1bXBsaW1pdCAkZHVtcHBvcnRzICRkdW1wcG9ydHNvbiAkZHVtcHBvcnRzbGltaXQgJyArXG4gICAgICAnJHdyaXRlYiAkd3JpdGVoICR3cml0ZW8gJG1vbml0b3IgJG1vbml0b3JiICRtb25pdG9yaCAkbW9uaXRvcm8gJHdyaXRlbWVtYiAnICtcbiAgICAgICckZHVtcGZpbGUgJGR1bXBvZmYgJGR1bXBhbGwgJGR1bXBmbHVzaCAkZHVtcHBvcnRzb2ZmICRkdW1wcG9ydHNhbGwgJyArXG4gICAgICAnJGR1bXBwb3J0c2ZsdXNoICRmY2xvc2UgJGZkaXNwbGF5ICRmZGlzcGxheWIgJGZkaXNwbGF5aCAkZmRpc3BsYXlvICcgK1xuICAgICAgJyRmc3Ryb2JlICRmc3Ryb2JlYiAkZnN0cm9iZWggJGZzdHJvYmVvICRzd3JpdGUgJHN3cml0ZWIgJHN3cml0ZWggJyArXG4gICAgICAnJHN3cml0ZW8gJGZzY2FuZiAkZnJlYWQgJGZzZWVrICRmZmx1c2ggJGZlb2YgJGZvcGVuICRmd3JpdGUgJGZ3cml0ZWIgJyArXG4gICAgICAnJGZ3cml0ZWggJGZ3cml0ZW8gJGZtb25pdG9yICRmbW9uaXRvcmIgJGZtb25pdG9yaCAkZm1vbml0b3JvICRzZm9ybWF0ICcgK1xuICAgICAgJyRzZm9ybWF0ZiAkZmdldGMgJHVuZ2V0YyAkZmdldHMgJHNzY2FuZiAkcmV3aW5kICRmdGVsbCAkZmVycm9yJ1xuICAgIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd2JywgJ3N2JywgJ3N2aCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGtleXdvcmRzOiBTVl9LRVlXT1JEUywgbGV4ZW1lczogL1tcXHdcXCRdKy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnXFxcXGIoKFxcXFxkK1xcJyhifGh8b3xkfEJ8SHxPfEQpKVswLTl4elhaYS1mQS1GX10rKSd9LFxuICAgICAgICAgIHtiZWdpbjogJ1xcXFxCKChcXCcoYnxofG98ZHxCfEh8T3xEKSlbMC05eHpYWmEtZkEtRl9dKyknfSxcbiAgICAgICAgICB7YmVnaW46ICdcXFxcYihbMC05X10pKycsIHJlbGV2YW5jZTogMH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8qIHBhcmFtZXRlcnMgdG8gaW5zdGFuY2VzICovXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcjXFxcXCgoPyFwYXJhbWV0ZXIpLitcXFxcKSd9LFxuICAgICAgICAgIHtiZWdpbjogJ1xcXFwuXFxcXHcrJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnZGVmaW5lIF9fRklMRV9fICcgK1xuICAgICAgICAgICdfX0xJTkVfXyBiZWdpbl9rZXl3b3JkcyBjZWxsZGVmaW5lIGRlZmF1bHRfbmV0dHlwZSBkZWZpbmUgJyArXG4gICAgICAgICAgJ2Vsc2UgZWxzaWYgZW5kX2tleXdvcmRzIGVuZGNlbGxkZWZpbmUgZW5kaWYgaWZkZWYgaWZuZGVmICcgK1xuICAgICAgICAgICdpbmNsdWRlIGxpbmUgbm91bmNvbm5lY3RlZF9kcml2ZSBwcmFnbWEgcmVzZXRhbGwgdGltZXNjYWxlICcgK1xuICAgICAgICAgICd1bmNvbm5lY3RlZF9kcml2ZSB1bmRlZiB1bmRlZmluZWFsbCd9LFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07IC8vIHJldHVyblxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgLy8gUmVndWxhciBleHByZXNzaW9uIGZvciBWSERMIG51bWVyaWMgbGl0ZXJhbHMuXG5cbiAgLy8gRGVjaW1hbCBsaXRlcmFsOlxuICB2YXIgSU5URUdFUl9SRSA9ICdcXFxcZChffFxcXFxkKSonO1xuICB2YXIgRVhQT05FTlRfUkUgPSAnW2VFXVstK10/JyArIElOVEVHRVJfUkU7XG4gIHZhciBERUNJTUFMX0xJVEVSQUxfUkUgPSBJTlRFR0VSX1JFICsgJyhcXFxcLicgKyBJTlRFR0VSX1JFICsgJyk/JyArICcoJyArIEVYUE9ORU5UX1JFICsgJyk/JztcbiAgLy8gQmFzZWQgbGl0ZXJhbDpcbiAgdmFyIEJBU0VEX0lOVEVHRVJfUkUgPSAnXFxcXHcrJztcbiAgdmFyIEJBU0VEX0xJVEVSQUxfUkUgPSBJTlRFR0VSX1JFICsgJyMnICsgQkFTRURfSU5URUdFUl9SRSArICcoXFxcXC4nICsgQkFTRURfSU5URUdFUl9SRSArICcpPycgKyAnIycgKyAnKCcgKyBFWFBPTkVOVF9SRSArICcpPyc7XG5cbiAgdmFyIE5VTUJFUl9SRSA9ICdcXFxcYignICsgQkFTRURfTElURVJBTF9SRSArICd8JyArIERFQ0lNQUxfTElURVJBTF9SRSArICcpJztcblxuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhYnMgYWNjZXNzIGFmdGVyIGFsaWFzIGFsbCBhbmQgYXJjaGl0ZWN0dXJlIGFycmF5IGFzc2VydCBhc3N1bWUgYXNzdW1lX2d1YXJhbnRlZSBhdHRyaWJ1dGUgJyArXG4gICAgICAgICdiZWdpbiBibG9jayBib2R5IGJ1ZmZlciBidXMgY2FzZSBjb21wb25lbnQgY29uZmlndXJhdGlvbiBjb25zdGFudCBjb250ZXh0IGNvdmVyIGRpc2Nvbm5lY3QgJyArXG4gICAgICAgICdkb3dudG8gZGVmYXVsdCBlbHNlIGVsc2lmIGVuZCBlbnRpdHkgZXhpdCBmYWlybmVzcyBmaWxlIGZvciBmb3JjZSBmdW5jdGlvbiBnZW5lcmF0ZSAnICtcbiAgICAgICAgJ2dlbmVyaWMgZ3JvdXAgZ3VhcmRlZCBpZiBpbXB1cmUgaW4gaW5lcnRpYWwgaW5vdXQgaXMgbGFiZWwgbGlicmFyeSBsaW5rYWdlIGxpdGVyYWwgJyArXG4gICAgICAgICdsb29wIG1hcCBtb2QgbmFuZCBuZXcgbmV4dCBub3Igbm90IG51bGwgb2Ygb24gb3BlbiBvciBvdGhlcnMgb3V0IHBhY2thZ2UgcG9ydCAnICtcbiAgICAgICAgJ3Bvc3Rwb25lZCBwcm9jZWR1cmUgcHJvY2VzcyBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVyZSByYW5nZSByZWNvcmQgcmVnaXN0ZXIgcmVqZWN0ICcgK1xuICAgICAgICAncmVsZWFzZSByZW0gcmVwb3J0IHJlc3RyaWN0IHJlc3RyaWN0X2d1YXJhbnRlZSByZXR1cm4gcm9sIHJvciBzZWxlY3Qgc2VxdWVuY2UgJyArXG4gICAgICAgICdzZXZlcml0eSBzaGFyZWQgc2lnbmFsIHNsYSBzbGwgc3JhIHNybCBzdHJvbmcgc3VidHlwZSB0aGVuIHRvIHRyYW5zcG9ydCB0eXBlICcgK1xuICAgICAgICAndW5hZmZlY3RlZCB1bml0cyB1bnRpbCB1c2UgdmFyaWFibGUgdm1vZGUgdnByb3AgdnVuaXQgd2FpdCB3aGVuIHdoaWxlIHdpdGggeG5vciB4b3InLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdib29sZWFuIGJpdCBjaGFyYWN0ZXIgJyArXG4gICAgICAgICdpbnRlZ2VyIHRpbWUgZGVsYXlfbGVuZ3RoIG5hdHVyYWwgcG9zaXRpdmUgJyArXG4gICAgICAgICdzdHJpbmcgYml0X3ZlY3RvciBmaWxlX29wZW5fa2luZCBmaWxlX29wZW5fc3RhdHVzICcgK1xuICAgICAgICAnc3RkX2xvZ2ljIHN0ZF9sb2dpY192ZWN0b3IgdW5zaWduZWQgc2lnbmVkIGJvb2xlYW5fdmVjdG9yIGludGVnZXJfdmVjdG9yICcgK1xuICAgICAgICAnc3RkX3Vsb2dpYyBzdGRfdWxvZ2ljX3ZlY3RvciB1bnJlc29sdmVkX3Vuc2lnbmVkIHVfdW5zaWduZWQgdW5yZXNvbHZlZF9zaWduZWQgdV9zaWduZWQnICtcbiAgICAgICAgJ3JlYWxfdmVjdG9yIHRpbWVfdmVjdG9yJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdmYWxzZSB0cnVlIG5vdGUgd2FybmluZyBlcnJvciBmYWlsdXJlICcgKyAgLy8gc2V2ZXJpdHlfbGV2ZWxcbiAgICAgICAgJ2xpbmUgdGV4dCBzaWRlIHdpZHRoJyAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0aW9cbiAgICB9LFxuICAgIGlsbGVnYWw6ICd7JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSwgICAgICAvLyBWSERMLTIwMDggYmxvY2sgY29tbWVudGluZy5cbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IE5VTUJFUl9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJyhVfFh8MHwxfFp8V3xMfEh8LSlcXCcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFwnW0EtWmEtel0oXz9bQS1aYS16MC05XSkqJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiAvWyEjQFxcd10rLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgLy8gZXhwcmVzcyB2ZXJzaW9uIGV4Y2VwdDogISAmICogPCA9ID4gISEgIyBAIEBAXG4gICAgICAgICdOfDAgUHwwIFh8MCBhfDAgYWIgYWJjIGFibyBhbCBhbSBhbnwwIGFyIGFyZ2EgYXJnZCBhcmdlIGFyZ2RvIGFyZ2cgYXJnbCBhcmd1IGFzIGF1IGF1ZyBhdW4gYnwwIGJOIGJhIGJhZCBiZCBiZSBiZWwgYmYgYmwgYm0gYm4gYm8gYnAgYnIgYnJlYSBicmVha2EgYnJlYWtkIGJyZWFrbCBicm8gYnVmZG8gYnVmZmVycyBidW4gYncgY3wwIGNOIGNOZiBjYSBjYWJjIGNhZGRiIGNhZCBjYWRkZiBjYWwgY2F0IGNiIGNjIGNjbCBjZCBjZSBjZXggY2YgY2ZpciBjZ2V0YiBjZ2V0ZSBjZyBjaGFuZ2VzIGNoZCBjaGUgY2hlY2t0IGNsIGNsYSBjbG8gY20gY21hcGMgY21lIGNuIGNuZXcgY25mIGNubyBjbm9yZWEgY25vcmVtZSBjbyBjb2wgY29sbyBjb20gY29tYyBjb21wIGNvbiBjb25mIGNvcGUgJytcbiAgICAgICAgJ2NwIGNwZiBjcSBjciBjcyBjc3QgY3UgY3VuYSBjdW5tZSBjdyBkZWxtIGRlYiBkZWJ1Z2cgZGVsYyBkZWxmIGRpZiBkaWZmZyBkaWZmbyBkaWZmcCBkaWZmcHUgZGlmZnMgZGlmZnRoaXMgZGlnIGRpIGRsIGRlbGwgZGogZGxpIGRvIGRvYXV0b2EgZHAgZHIgZHMgZHNwIGV8MCBlYSBlYyBlY2hvZSBlY2hvaCBlY2hvbSBlY2hvbiBlbCBlbHNlaSBlbSBlbiBlbmRmbyBlbmRmIGVuZHQgZW5kdyBlbmUgZXggZXhlIGV4aSBleHUgZnwwIGZpbGVzIGZpbGV0IGZpbiBmaW5hIGZpbmkgZmlyIGZpeCBmbyBmb2xkYyBmb2xkZCBmb2xkZG9jIGZvbGRvIGZvciBmdSBnbyBnciBncmVwYSBndSBndiBoYSBoZWxwZiBoZWxwZyBoZWxwdCBoaSBoaWQgaGlzIGlhIGlhYmMgaWYgaWogaWwgaW0gaW1hcGMgJytcbiAgICAgICAgJ2ltZSBpbm8gaW5vcmVhIGlub3JlbWUgaW50IGlzIGlzcCBpdSBpdW5hIGl1bm1lIGp8MCBqdSBrfDAga2VlcGEga2VlIGtlZXBqIGxOIGxOZiBsfDAgbGFkIGxhZGRiIGxhZGRmIGxhIGxhbiBsYXQgbGIgbGMgbGNoIGxjbCBsY3MgbGUgbGVmdGEgbGV0IGxleCBsZiBsZmlyIGxnZXRiIGxnZXRlIGxnIGxnciBsZ3JlcGEgbGggbGwgbGxhIGxsaSBsbWFrIGxtIGxtYXBjIGxuZSBsbmV3IGxuZiBsbiBsb2FkayBsbyBsb2MgbG9ja3YgbG9sIGxvcGUgbHAgbHBmIGxyIGxzIGx0IGx1IGx1YSBsdWFkIGx1YWYgbHYgbHZpbWdyZXBhIGx3IG18MCBtYSBtYWsgbWFwIG1hcGMgbWFya3MgbWF0IG1lIG1lbnV0IG1lcyBtayBta3MgbWtzcCBta3YgbWt2aWUgbW9kIG16IG16ZiBuYmMgbmIgbmJzIG5ldyBubSBubWFwYyBubWUgbm4gbm5vcmVtZSBub2Egbm8gbm9oIG5vcmVhIG5vcmVtZSBub3JtIG51IG51biBudW5tZSBvbCBvfDAgb20gb21hcGMgb21lIG9uIG9ubyBvbm9yZW1lIG9wdCBvdSBvdW5tZSBvdyBwfDAgJytcbiAgICAgICAgJ3Byb2ZkIHByb2YgcHJvIHByb21wdHIgcGMgcGVkIHBlIHBlcmxkIHBvIHBvcHUgcHAgcHJlIHByZXYgcHMgcHQgcHROIHB0ZiBwdGogcHRsIHB0biBwdHAgcHRyIHB0cyBwdSBwdyBweTMgcHl0aG9uMyBweTNkIHB5M2YgcHkgcHlkIHB5ZiBxdWl0YSBxYSByZWMgcmVkIHJlZGkgcmVkciByZWRyYXdzIHJlZyByZXMgcmV0IHJldHUgcmV3IHJpIHJpZ2h0YiBydWIgcnVieWQgcnVieWYgcnVuZCBydSBydiBzTiBzYW4gc2Egc2FsIHNhdiBzYiBzYk4gc2JhIHNiZiBzYmwgc2JtIHNibiBzYnAgc2JyIHNjcmlwIHNjcmlwdGUgc2NzIHNlIHNldGYgc2V0ZyBzZXRsIHNmIHNmaXIgc2ggc2ltIHNpZyBzaWwgc2wgc2xhIHNtIHNtYXAgc21hcGMgc21lIHNuIHNuaSBzbm8gc25vciBzbm9yZW1lIHNvciAnK1xuICAgICAgICAnc28gc3BlbGxkIHNwZSBzcGVsbGkgc3BlbGxyIHNwZWxsdSBzcGVsbHcgc3Agc3ByIHNyZSBzdCBzdGEgc3RhcnRnIHN0YXJ0ciBzdGFyIHN0b3BpIHN0aiBzdHMgc3VuIHN1bm0gc3VubWUgc3VzIHN2IHN3IHN5IHN5bnRpIHN5bmMgdE4gdGFiTiB0YWJjIHRhYmRvIHRhYmUgdGFiZiB0YWJmaXIgdGFibCB0YWJtIHRhYm5ldyAnK1xuICAgICAgICAndGFibiB0YWJvIHRhYnAgdGFiciB0YWJzIHRhYiB0YSB0YWdzIHRjIHRjbGQgdGNsZiB0ZSB0ZiB0aCB0aiB0bCB0bSB0biB0byB0cCB0ciB0cnkgdHMgdHUgdXwwIHVuZG9qIHVuZG9sIHVuYSB1bmggdW5sIHVubG8gdW5tIHVubWUgdW5zIHVwIHZlIHZlcmIgdmVydCB2aW0gdmltZ3JlcGEgdmkgdml1IHZpZSB2bSB2bWFwYyB2bWUgdm5lIHZuIHZub3JlbWUgdnMgdnUgdnVubWUgd2luZG8gd3wwIHdOIHdhIHdoIHdpIHdpbmMgd2lucCB3biB3cCB3cSB3cWEgd3Mgd3Ugd3YgeHwwIHhhIHhtYXBjIHhtIHhtZSB4biB4bm9yZW1lIHh1IHh1bm1lIHl8MCB6fDAgfiAnK1xuICAgICAgICAvLyBmdWxsIHZlcnNpb25cbiAgICAgICAgJ05leHQgUHJpbnQgYXBwZW5kIGFiYnJldmlhdGUgYWJjbGVhciBhYm92ZWxlZnQgYWxsIGFtZW51IGFub3JlbWVudSBhcmdzIGFyZ2FkZCBhcmdkZWxldGUgYXJnZWRpdCBhcmdnbG9iYWwgYXJnbG9jYWwgYXJndW1lbnQgYXNjaWkgYXV0b2NtZCBhdWdyb3VwIGF1bm1lbnUgYnVmZmVyIGJOZXh0IGJhbGwgYmFkZCBiZGVsZXRlIGJlaGF2ZSBiZWxvd3JpZ2h0IGJmaXJzdCBibGFzdCBibW9kaWZpZWQgYm5leHQgYm90cmlnaHQgYnByZXZpb3VzIGJyZXdpbmQgYnJlYWsgYnJlYWthZGQgYnJlYWtkZWwgYnJlYWtsaXN0IGJyb3dzZSBidW5sb2FkICcrXG4gICAgICAgICdid2lwZW91dCBjaGFuZ2UgY05leHQgY05maWxlIGNhYmJyZXYgY2FiY2xlYXIgY2FkZGJ1ZmZlciBjYWRkZXhwciBjYWRkZmlsZSBjYWxsIGNhdGNoIGNidWZmZXIgY2Nsb3NlIGNlbnRlciBjZXhwciBjZmlsZSBjZmlyc3QgY2dldGJ1ZmZlciBjZ2V0ZXhwciBjZ2V0ZmlsZSBjaGRpciBjaGVja3BhdGggY2hlY2t0aW1lIGNsaXN0IGNsYXN0IGNsb3NlIGNtYXAgY21hcGNsZWFyIGNtZW51IGNuZXh0IGNuZXdlciBjbmZpbGUgY25vcmVtYXAgY25vcmVhYmJyZXYgY25vcmVtZW51IGNvcHkgY29sZGVyIGNvbG9yc2NoZW1lIGNvbW1hbmQgY29tY2xlYXIgY29tcGlsZXIgY29udGludWUgY29uZmlybSBjb3BlbiBjcHJldmlvdXMgY3BmaWxlIGNxdWl0IGNyZXdpbmQgY3Njb3BlIGNzdGFnIGN1bm1hcCAnK1xuICAgICAgICAnY3VuYWJicmV2IGN1bm1lbnUgY3dpbmRvdyBkZWxldGUgZGVsbWFya3MgZGVidWcgZGVidWdncmVlZHkgZGVsY29tbWFuZCBkZWxmdW5jdGlvbiBkaWZmdXBkYXRlIGRpZmZnZXQgZGlmZm9mZiBkaWZmcGF0Y2ggZGlmZnB1dCBkaWZmc3BsaXQgZGlncmFwaHMgZGlzcGxheSBkZWxldGVsIGRqdW1wIGRsaXN0IGRvYXV0b2NtZCBkb2F1dG9hbGwgZGVsZXRlcCBkcm9wIGRzZWFyY2ggZHNwbGl0IGVkaXQgZWFybGllciBlY2hvIGVjaG9lcnIgZWNob2hsIGVjaG9tc2cgZWxzZSBlbHNlaWYgZW1lbnUgZW5kaWYgZW5kZm9yICcrXG4gICAgICAgICdlbmRmdW5jdGlvbiBlbmR0cnkgZW5kd2hpbGUgZW5ldyBleGVjdXRlIGV4aXQgZXh1c2FnZSBmaWxlIGZpbGV0eXBlIGZpbmQgZmluYWxseSBmaW5pc2ggZmlyc3QgZml4ZGVsIGZvbGQgZm9sZGNsb3NlIGZvbGRkb29wZW4gZm9sZGRvY2xvc2VkIGZvbGRvcGVuIGZ1bmN0aW9uIGdsb2JhbCBnb3RvIGdyZXAgZ3JlcGFkZCBndWkgZ3ZpbSBoYXJkY29weSBoZWxwIGhlbHBmaW5kIGhlbHBncmVwIGhlbHB0YWdzIGhpZ2hsaWdodCBoaWRlIGhpc3RvcnkgaW5zZXJ0IGlhYmJyZXYgaWFiY2xlYXIgaWp1bXAgaWxpc3QgaW1hcCAnK1xuICAgICAgICAnaW1hcGNsZWFyIGltZW51IGlub3JlbWFwIGlub3JlYWJicmV2IGlub3JlbWVudSBpbnRybyBpc2VhcmNoIGlzcGxpdCBpdW5tYXAgaXVuYWJicmV2IGl1bm1lbnUgam9pbiBqdW1wcyBrZWVwYWx0IGtlZXBtYXJrcyBrZWVwanVtcHMgbE5leHQgbE5maWxlIGxpc3QgbGFkZGV4cHIgbGFkZGJ1ZmZlciBsYWRkZmlsZSBsYXN0IGxhbmd1YWdlIGxhdGVyIGxidWZmZXIgbGNkIGxjaGRpciBsY2xvc2UgbGNzY29wZSBsZWZ0IGxlZnRhYm92ZSBsZXhwciBsZmlsZSBsZmlyc3QgbGdldGJ1ZmZlciBsZ2V0ZXhwciBsZ2V0ZmlsZSBsZ3JlcCBsZ3JlcGFkZCBsaGVscGdyZXAgbGxhc3QgbGxpc3QgbG1ha2UgbG1hcCBsbWFwY2xlYXIgbG5leHQgbG5ld2VyIGxuZmlsZSBsbm9yZW1hcCBsb2Fka2V5bWFwIGxvYWR2aWV3ICcrXG4gICAgICAgICdsb2NrbWFya3MgbG9ja3ZhciBsb2xkZXIgbG9wZW4gbHByZXZpb3VzIGxwZmlsZSBscmV3aW5kIGx0YWcgbHVubWFwIGx1YWRvIGx1YWZpbGUgbHZpbWdyZXAgbHZpbWdyZXBhZGQgbHdpbmRvdyBtb3ZlIG1hcmsgbWFrZSBtYXBjbGVhciBtYXRjaCBtZW51IG1lbnV0cmFuc2xhdGUgbWVzc2FnZXMgbWtleHJjIG1rc2Vzc2lvbiBta3NwZWxsIG1rdmltcmMgbWt2aWV3IG1vZGUgbXpzY2hlbWUgbXpmaWxlIG5iY2xvc2UgbmJrZXkgbmJzYXJ0IG5leHQgbm1hcCBubWFwY2xlYXIgbm1lbnUgbm5vcmVtYXAgJytcbiAgICAgICAgJ25ub3JlbWVudSBub2F1dG9jbWQgbm9yZW1hcCBub2hsc2VhcmNoIG5vcmVhYmJyZXYgbm9yZW1lbnUgbm9ybWFsIG51bWJlciBudW5tYXAgbnVubWVudSBvbGRmaWxlcyBvcGVuIG9tYXAgb21hcGNsZWFyIG9tZW51IG9ubHkgb25vcmVtYXAgb25vcmVtZW51IG9wdGlvbnMgb3VubWFwIG91bm1lbnUgb3duc3ludGF4IHByaW50IHByb2ZkZWwgcHJvZmlsZSBwcm9tcHRmaW5kIHByb21wdHJlcGwgcGNsb3NlIHBlZGl0IHBlcmwgcGVybGRvIHBvcCBwb3B1cCBwcG9wIHByZXNlcnZlIHByZXZpb3VzIHBzZWFyY2ggcHRhZyBwdE5leHQgJytcbiAgICAgICAgJ3B0Zmlyc3QgcHRqdW1wIHB0bGFzdCBwdG5leHQgcHRwcmV2aW91cyBwdHJld2luZCBwdHNlbGVjdCBwdXQgcHdkIHB5M2RvIHB5M2ZpbGUgcHl0aG9uIHB5ZG8gcHlmaWxlIHF1aXQgcXVpdGFsbCBxYWxsIHJlYWQgcmVjb3ZlciByZWRvIHJlZGlyIHJlZHJhdyByZWRyYXdzdGF0dXMgcmVnaXN0ZXJzIHJlc2l6ZSByZXRhYiByZXR1cm4gcmV3aW5kIHJpZ2h0IHJpZ2h0YmVsb3cgcnVieSBydWJ5ZG8gcnVieWZpbGUgcnVuZG8gcnVudGltZSBydmltaW5mbyBzdWJzdGl0dXRlIHNOZXh0IHNhbmRib3ggc2FyZ3VtZW50IHNhbGwgc2F2ZWFzIHNidWZmZXIgc2JOZXh0IHNiYWxsIHNiZmlyc3Qgc2JsYXN0IHNibW9kaWZpZWQgc2JuZXh0IHNicHJldmlvdXMgc2JyZXdpbmQgc2NyaXB0bmFtZXMgc2NyaXB0ZW5jb2RpbmcgJytcbiAgICAgICAgJ3Njc2NvcGUgc2V0IHNldGZpbGV0eXBlIHNldGdsb2JhbCBzZXRsb2NhbCBzZmluZCBzZmlyc3Qgc2hlbGwgc2ltYWx0IHNpZ24gc2lsZW50IHNsZWVwIHNsYXN0IHNtYWdpYyBzbWFwY2xlYXIgc21lbnUgc25leHQgc25pZmYgc25vbWFnaWMgc25vcmVtYXAgc25vcmVtZW51IHNvcnQgc291cmNlIHNwZWxsZHVtcCBzcGVsbGdvb2Qgc3BlbGxpbmZvIHNwZWxscmVwYWxsIHNwZWxsdW5kbyBzcGVsbHdyb25nIHNwbGl0IHNwcmV2aW91cyBzcmV3aW5kIHN0b3Agc3RhZyBzdGFydGdyZXBsYWNlIHN0YXJ0cmVwbGFjZSAnK1xuICAgICAgICAnc3RhcnRpbnNlcnQgc3RvcGluc2VydCBzdGp1bXAgc3RzZWxlY3Qgc3VuaGlkZSBzdW5tYXAgc3VubWVudSBzdXNwZW5kIHN2aWV3IHN3YXBuYW1lIHN5bnRheCBzeW50aW1lIHN5bmNiaW5kIHROZXh0IHRhYk5leHQgdGFiY2xvc2UgdGFiZWRpdCB0YWJmaW5kIHRhYmZpcnN0IHRhYmxhc3QgdGFibW92ZSB0YWJuZXh0IHRhYm9ubHkgdGFicHJldmlvdXMgdGFicmV3aW5kIHRhZyB0Y2wgdGNsZG8gdGNsZmlsZSB0ZWFyb2ZmIHRmaXJzdCB0aHJvdyB0anVtcCB0bGFzdCB0bWVudSB0bmV4dCB0b3BsZWZ0IHRwcmV2aW91cyAnKyd0cmV3aW5kIHRzZWxlY3QgdHVubWVudSB1bmRvIHVuZG9qb2luIHVuZG9saXN0IHVuYWJicmV2aWF0ZSB1bmhpZGUgdW5sZXQgdW5sb2NrdmFyIHVubWFwIHVubWVudSB1bnNpbGVudCB1cGRhdGUgdmdsb2JhbCB2ZXJzaW9uIHZlcmJvc2UgdmVydGljYWwgdmltZ3JlcCB2aW1ncmVwYWRkIHZpc3VhbCB2aXVzYWdlIHZpZXcgdm1hcCB2bWFwY2xlYXIgdm1lbnUgdm5ldyAnK1xuICAgICAgICAndm5vcmVtYXAgdm5vcmVtZW51IHZzcGxpdCB2dW5tYXAgdnVubWVudSB3cml0ZSB3TmV4dCB3YWxsIHdoaWxlIHdpbnNpemUgd2luY21kIHdpbnBvcyB3bmV4dCB3cHJldmlvdXMgd3FhbGwgd3N2ZXJiIHd1bmRvIHd2aW1pbmZvIHhpdCB4YWxsIHhtYXBjbGVhciB4bWFwIHhtZW51IHhub3JlbWFwIHhub3JlbWVudSB4dW5tYXAgeHVubWVudSB5YW5rJyxcbiAgICAgIGJ1aWx0X2luOiAvL2J1aWx0IGluIGZ1bmNcbiAgICAgICAgJ3N5bklEdHJhbnMgYXRhbjIgcmFuZ2UgbWF0Y2hhcmcgZGlkX2ZpbGV0eXBlIGFzaW4gZmVlZGtleXMgeG9yIGFyZ3YgJyArXG4gICAgICAgICdjb21wbGV0ZV9jaGVjayBhZGQgZ2V0d2lucG9zeCBnZXRxZmxpc3QgZ2V0d2lucG9zeSBzY3JlZW5jb2wgJyArXG4gICAgICAgICdjbGVhcm1hdGNoZXMgZW1wdHkgZXh0ZW5kIGdldGNtZHBvcyBtemV2YWwgZ2FyYmFnZWNvbGxlY3Qgc2V0cmVnICcgK1xuICAgICAgICAnY2VpbCBzcXJ0IGRpZmZfaGxJRCBpbnB1dHNlY3JldCBnZXQgZ2V0ZnBlcm0gZ2V0cGlkIGZpbGV3cml0YWJsZSAnICtcbiAgICAgICAgJ3NoaWZ0d2lkdGggbWF4IHNpbmggaXNkaXJlY3Rvcnkgc3luSUQgc3lzdGVtIGlucHV0cmVzdG9yZSB3aW5saW5lICcgK1xuICAgICAgICAnYXRhbiB2aXN1YWxtb2RlIGlucHV0bGlzdCB0YWJwYWdld2lubnIgcm91bmQgZ2V0cmVndHlwZSBtYXBjaGVjayAnICtcbiAgICAgICAgJ2hhc21hcHRvIGhpc3RkZWwgYXJnaWR4IGZpbmRmaWxlIHNoYTI1NiBleGlzdHMgdG91cHBlciBnZXRjbWRsaW5lICcgK1xuICAgICAgICAndGFnbGlzdCBzdHJpbmcgZ2V0bWF0Y2hlcyBidWZuciBzdHJmdGltZSB3aW53aWR0aCBidWZleGlzdHMgJyArXG4gICAgICAgICdzdHJ0cmFucyB0YWJwYWdlYnVmbGlzdCBzZXRjbWRwb3MgcmVtb3RlX3JlYWQgcHJpbnRmIHNldGxvY2xpc3QgJyArXG4gICAgICAgICdnZXRwb3MgZ2V0bGluZSBidWZ3aW5uciBmbG9hdDJuciBsZW4gZ2V0Y21kdHlwZSBkaWZmX2ZpbGxlciBsdWFldmFsICcgK1xuICAgICAgICAncmVzb2x2ZSBsaWJjYWxsbnIgZm9sZGNsb3NlZGVuZCByZXZlcnNlIGZpbHRlciBoYXNfa2V5IGJ1Zm5hbWUgJyArXG4gICAgICAgICdzdHIyZmxvYXQgc3RybGVuIHNldGxpbmUgZ2V0Y2hhcm1vZCBzZXRidWZ2YXIgaW5kZXggc2VhcmNocG9zICcgK1xuICAgICAgICAnc2hlbGxlc2NhcGUgdW5kb2ZpbGUgZm9sZGNsb3NlZCBzZXRxZmxpc3QgYnVmbGlzdGVkIHN0cmNoYXJzIHN0cjJuciAnICtcbiAgICAgICAgJ3ZpcnRjb2wgZmxvb3IgcmVtb3ZlIHVuZG90cmVlIHJlbW90ZV9leHByIHdpbmhlaWdodCBnZXR0YWJ3aW52YXIgJyArXG4gICAgICAgICdyZWx0aW1lIGN1cnNvciB0YWJwYWdlbnIgZmluZGRpciBsb2NhbHRpbWUgYWNvcyBnZXRsb2NsaXN0IHNlYXJjaCAnICtcbiAgICAgICAgJ3RhbmggbWF0Y2hlbmQgcmVuYW1lIGdldHRhYnZhciBzdHJkaXNwbGF5d2lkdGggdHlwZSBhYnMgcHkzZXZhbCAnICtcbiAgICAgICAgJ3NldHdpbnZhciB0b2xvd2VyIHdpbGRtZW51bW9kZSBsb2cxMCBzcGVsbHN1Z2dlc3QgYnVmbG9hZGVkICcgK1xuICAgICAgICAnc3luY29uY2VhbGVkIG5leHRub25ibGFuayBzZXJ2ZXIyY2xpZW50IGNvbXBsZXRlIHNldHRhYndpbnZhciAnICtcbiAgICAgICAgJ2V4ZWN1dGFibGUgaW5wdXQgd2luY29sIHNldG1hdGNoZXMgZ2V0ZnR5cGUgaGxJRCBpbnB1dHNhdmUgJyArXG4gICAgICAgICdzZWFyY2hwYWlyIG9yIHNjcmVlbnJvdyBsaW5lIHNldHRhYnZhciBoaXN0YWRkIGRlZXBjb3B5IHN0cnBhcnQgJyArXG4gICAgICAgICdyZW1vdGVfcGVlayBhbmQgZXZhbCBnZXRmdGltZSBzdWJtYXRjaCBzY3JlZW5jaGFyIHdpbnNhdmV2aWV3ICcgK1xuICAgICAgICAnbWF0Y2hhZGQgbWtkaXIgc2NyZWVuYXR0ciBnZXRmb250bmFtZSBsaWJjYWxsIHJlbHRpbWVzdHIgZ2V0ZnNpemUgJyArXG4gICAgICAgICd3aW5uciBpbnZlcnQgcG93IGdldGJ1ZmxpbmUgYnl0ZTJsaW5lIHNvdW5kZm9sZCByZXBlYXQgZm5hbWVlc2NhcGUgJyArXG4gICAgICAgICd0YWdmaWxlcyBzaW4gc3Ryd2lkdGggc3BlbGxiYWR3b3JkIHRydW5jIG1hcGFyZyBsb2cgbGlzcGluZGVudCAnICtcbiAgICAgICAgJ2hvc3RuYW1lIHNldHBvcyBnbG9icGF0aCByZW1vdGVfZm9yZWdyb3VuZCBnZXRjaGFyIHN5bklEYXR0ciAnICtcbiAgICAgICAgJ2ZuYW1lbW9kaWZ5IGNzY29wZV9jb25uZWN0aW9uIHN0cmlkeCB3aW5idWZuciBpbmRlbnQgbWluICcgK1xuICAgICAgICAnY29tcGxldGVfYWRkIG5yMmNoYXIgc2VhcmNocGFpcnBvcyBpbnB1dGRpYWxvZyB2YWx1ZXMgbWF0Y2hsaXN0ICcgK1xuICAgICAgICAnaXRlbXMgaGxleGlzdHMgc3RycmlkeCBicm93c2VkaXIgZXhwYW5kIGZtb2QgcGF0aHNob3J0ZW4gbGluZTJieXRlICcgK1xuICAgICAgICAnYXJnYyBjb3VudCBnZXR3aW52YXIgZ2xvYiBmb2xkdGV4dHJlc3VsdCBnZXRyZWcgZm9yZWdyb3VuZCBjb3NoICcgK1xuICAgICAgICAnbWF0Y2hkZWxldGUgaGFzIGNoYXIybnIgc2ltcGxpZnkgaGlzdGdldCBzZWFyY2hkZWNsIGljb252ICcgK1xuICAgICAgICAnd2lucmVzdGNtZCBwdW12aXNpYmxlIHdyaXRlZmlsZSBmb2xkbGV2ZWwgaGFzbG9jYWxkaXIga2V5cyBjb3MgJyArXG4gICAgICAgICdtYXRjaHN0ciBmb2xkdGV4dCBoaXN0bnIgdGFuIHRlbXBuYW1lIGdldGN3ZCBieXRlaWR4IGdldGJ1ZnZhciAnICtcbiAgICAgICAgJ2lzbG9ja2VkIGVzY2FwZSBldmVudGhhbmRsZXIgcmVtb3RlX3NlbmQgc2VydmVybGlzdCB3aW5yZXN0dmlldyAnICtcbiAgICAgICAgJ3N5bnN0YWNrIHB5ZXZhbCBwcmV2bm9uYmxhbmsgcmVhZGZpbGUgY2luZGVudCBmaWxlcmVhZGFibGUgY2hhbmdlbnIgJyArXG4gICAgICAgICdleHAnXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAvOy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG5cbiAgICAgIC8qXG4gICAgICBBIGRvdWJsZSBxdW90ZSBjYW4gc3RhcnQgZWl0aGVyIGEgc3RyaW5nIG9yIGEgbGluZSBjb21tZW50LiBTdHJpbmdzIGFyZVxuICAgICAgZW5kZWQgYmVmb3JlIHRoZSBlbmQgb2YgYSBsaW5lIGJ5IGFub3RoZXIgZG91YmxlIHF1b3RlIGFuZCBjYW4gY29udGFpblxuICAgICAgZXNjYXBlZCBkb3VibGUtcXVvdGVzIGFuZCBwb3N0LWVzY2FwZWQgbGluZSBicmVha3MuXG5cbiAgICAgIEFsc28sIGFueSBkb3VibGUgcXVvdGUgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUgaXMgYSBjb21tZW50IGJ1dCB3ZVxuICAgICAgZG9uJ3QgaGFuZGxlIHRoYXQgcHJvcGVybHkgYXQgdGhlIG1vbWVudDogYW55IGRvdWJsZSBxdW90ZSBpbnNpZGUgd2lsbFxuICAgICAgdHVybiB0aGVtIGludG8gYSBzdHJpbmcuIEhhbmRsaW5nIGl0IHByb3Blcmx5IHdpbGwgcmVxdWlyZSBhIHNtYXJ0ZXJcbiAgICAgIHBhcnNlci5cbiAgICAgICovXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvXCIoXFxcXFwifFxcblxcXFx8W15cIlxcbl0pKlwiL1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXCInLCAnJCcpLFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9bYnd0Z2xzYXZdOltcXHdcXGRfXSovXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbiBmdW5jdGlvbiEnLCBlbmQ6ICckJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46IC88W1xcdy1dKz4vXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6ICdbLiVdPycgKyBobGpzLklERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnbG9jayByZXAgcmVwZSByZXB6IHJlcG5lIHJlcG56IHhhcXVpcmUgeHJlbGVhc2UgYm5kIG5vYm5kICcgK1xuICAgICAgICAnYWFhIGFhZCBhYW0gYWFzIGFkYyBhZGQgYW5kIGFycGwgYmIwX3Jlc2V0IGJiMV9yZXNldCBib3VuZCBic2YgYnNyIGJzd2FwIGJ0IGJ0YyBidHIgYnRzIGNhbGwgY2J3IGNkcSBjZHFlIGNsYyBjbGQgY2xpIGNsdHMgY21jIGNtcCBjbXBzYiBjbXBzZCBjbXBzcSBjbXBzdyBjbXB4Y2hnIGNtcHhjaGc0ODYgY21weGNoZzhiIGNtcHhjaGcxNmIgY3B1aWQgY3B1X3JlYWQgY3B1X3dyaXRlIGNxbyBjd2QgY3dkZSBkYWEgZGFzIGRlYyBkaXYgZG1pbnQgZW1tcyBlbnRlciBlcXUgZjJ4bTEgZmFicyBmYWRkIGZhZGRwIGZibGQgZmJzdHAgZmNocyBmY2xleCBmY21vdmIgZmNtb3ZiZSBmY21vdmUgZmNtb3ZuYiBmY21vdm5iZSBmY21vdm5lIGZjbW92bnUgZmNtb3Z1IGZjb20gZmNvbWkgZmNvbWlwIGZjb21wIGZjb21wcCBmY29zIGZkZWNzdHAgZmRpc2kgZmRpdiBmZGl2cCBmZGl2ciBmZGl2cnAgZmVtbXMgZmVuaSBmZnJlZSBmZnJlZXAgZmlhZGQgZmljb20gZmljb21wIGZpZGl2IGZpZGl2ciBmaWxkIGZpbXVsIGZpbmNzdHAgZmluaXQgZmlzdCBmaXN0cCBmaXN0dHAgZmlzdWIgZmlzdWJyIGZsZCBmbGQxIGZsZGN3IGZsZGVudiBmbGRsMmUgZmxkbDJ0IGZsZGxnMiBmbGRsbjIgZmxkcGkgZmxkeiBmbXVsIGZtdWxwIGZuY2xleCBmbmRpc2kgZm5lbmkgZm5pbml0IGZub3AgZm5zYXZlIGZuc3RjdyBmbnN0ZW52IGZuc3RzdyBmcGF0YW4gZnByZW0gZnByZW0xIGZwdGFuIGZybmRpbnQgZnJzdG9yIGZzYXZlIGZzY2FsZSBmc2V0cG0gZnNpbiBmc2luY29zIGZzcXJ0IGZzdCBmc3RjdyBmc3RlbnYgZnN0cCBmc3RzdyBmc3ViIGZzdWJwIGZzdWJyIGZzdWJycCBmdHN0IGZ1Y29tIGZ1Y29taSBmdWNvbWlwIGZ1Y29tcCBmdWNvbXBwIGZ4YW0gZnhjaCBmeHRyYWN0IGZ5bDJ4IGZ5bDJ4cDEgaGx0IGlidHMgaWNlYnAgaWRpdiBpbXVsIGluIGluYyBpbmNiaW4gaW5zYiBpbnNkIGluc3cgaW50IGludDAxIGludDEgaW50MDMgaW50MyBpbnRvIGludmQgaW52cGNpZCBpbnZscGcgaW52bHBnYSBpcmV0IGlyZXRkIGlyZXRxIGlyZXR3IGpjeHogamVjeHoganJjeHogam1wIGptcGUgbGFoZiBsYXIgbGRzIGxlYSBsZWF2ZSBsZXMgbGZlbmNlIGxmcyBsZ2R0IGxncyBsaWR0IGxsZHQgbG1zdyBsb2FkYWxsIGxvYWRhbGwyODYgbG9kc2IgbG9kc2QgbG9kc3EgbG9kc3cgbG9vcCBsb29wZSBsb29wbmUgbG9vcG56IGxvb3B6IGxzbCBsc3MgbHRyIG1mZW5jZSBtb25pdG9yIG1vdiBtb3ZkIG1vdnEgbW92c2IgbW92c2QgbW92c3EgbW92c3cgbW92c3ggbW92c3hkIG1vdnp4IG11bCBtd2FpdCBuZWcgbm9wIG5vdCBvciBvdXQgb3V0c2Igb3V0c2Qgb3V0c3cgcGFja3NzZHcgcGFja3Nzd2IgcGFja3Vzd2IgcGFkZGIgcGFkZGQgcGFkZHNiIHBhZGRzaXcgcGFkZHN3IHBhZGR1c2IgcGFkZHVzdyBwYWRkdyBwYW5kIHBhbmRuIHBhdXNlIHBhdmViIHBhdmd1c2IgcGNtcGVxYiBwY21wZXFkIHBjbXBlcXcgcGNtcGd0YiBwY21wZ3RkIHBjbXBndHcgcGRpc3RpYiBwZjJpZCBwZmFjYyBwZmFkZCBwZmNtcGVxIHBmY21wZ2UgcGZjbXBndCBwZm1heCBwZm1pbiBwZm11bCBwZnJjcCBwZnJjcGl0MSBwZnJjcGl0MiBwZnJzcWl0MSBwZnJzcXJ0IHBmc3ViIHBmc3ViciBwaTJmZCBwbWFjaHJpdyBwbWFkZHdkIHBtYWd3IHBtdWxocml3IHBtdWxocndhIHBtdWxocndjIHBtdWxodyBwbXVsbHcgcG12Z2V6YiBwbXZsemIgcG12bnpiIHBtdnpiIHBvcCBwb3BhIHBvcGFkIHBvcGF3IHBvcGYgcG9wZmQgcG9wZnEgcG9wZncgcG9yIHByZWZldGNoIHByZWZldGNodyBwc2xsZCBwc2xscSBwc2xsdyBwc3JhZCBwc3JhdyBwc3JsZCBwc3JscSBwc3JsdyBwc3ViYiBwc3ViZCBwc3Vic2IgcHN1YnNpdyBwc3Vic3cgcHN1YnVzYiBwc3VidXN3IHBzdWJ3IHB1bnBja2hidyBwdW5wY2toZHEgcHVucGNraHdkIHB1bnBja2xidyBwdW5wY2tsZHEgcHVucGNrbHdkIHB1c2ggcHVzaGEgcHVzaGFkIHB1c2hhdyBwdXNoZiBwdXNoZmQgcHVzaGZxIHB1c2hmdyBweG9yIHJjbCByY3IgcmRzaHIgcmRtc3IgcmRwbWMgcmR0c2MgcmR0c2NwIHJldCByZXRmIHJldG4gcm9sIHJvciByZG0gcnNkYyByc2xkdCByc20gcnN0cyBzYWhmIHNhbCBzYWxjIHNhciBzYmIgc2Nhc2Igc2Nhc2Qgc2Nhc3Egc2Nhc3cgc2ZlbmNlIHNnZHQgc2hsIHNobGQgc2hyIHNocmQgc2lkdCBzbGR0IHNraW5pdCBzbWkgc21pbnQgc21pbnRvbGQgc21zdyBzdGMgc3RkIHN0aSBzdG9zYiBzdG9zZCBzdG9zcSBzdG9zdyBzdHIgc3ViIHN2ZGMgc3ZsZHQgc3Z0cyBzd2FwZ3Mgc3lzY2FsbCBzeXNlbnRlciBzeXNleGl0IHN5c3JldCB0ZXN0IHVkMCB1ZDEgdWQyYiB1ZDIgdWQyYSB1bW92IHZlcnIgdmVydyBmd2FpdCB3YmludmQgd3JzaHIgd3Jtc3IgeGFkZCB4YnRzIHhjaGcgeGxhdGIgeGxhdCB4b3IgY21vdmUgY21vdnogY21vdm5lIGNtb3ZueiBjbW92YSBjbW92bmJlIGNtb3ZhZSBjbW92bmIgY21vdmIgY21vdm5hZSBjbW92YmUgY21vdm5hIGNtb3ZnIGNtb3ZubGUgY21vdmdlIGNtb3ZubCBjbW92bCBjbW92bmdlIGNtb3ZsZSBjbW92bmcgY21vdmMgY21vdm5jIGNtb3ZvIGNtb3ZubyBjbW92cyBjbW92bnMgY21vdnAgY21vdnBlIGNtb3ZucCBjbW92cG8gamUganogam5lIGpueiBqYSBqbmJlIGphZSBqbmIgamIgam5hZSBqYmUgam5hIGpnIGpubGUgamdlIGpubCBqbCBqbmdlIGpsZSBqbmcgamMgam5jIGpvIGpubyBqcyBqbnMganBvIGpucCBqcGUganAgc2V0ZSBzZXR6IHNldG5lIHNldG56IHNldGEgc2V0bmJlIHNldGFlIHNldG5iIHNldG5jIHNldGIgc2V0bmFlIHNldGNzZXQgc2V0YmUgc2V0bmEgc2V0ZyBzZXRubGUgc2V0Z2Ugc2V0bmwgc2V0bCBzZXRuZ2Ugc2V0bGUgc2V0bmcgc2V0cyBzZXRucyBzZXRvIHNldG5vIHNldHBlIHNldHAgc2V0cG8gc2V0bnAgYWRkcHMgYWRkc3MgYW5kbnBzIGFuZHBzIGNtcGVxcHMgY21wZXFzcyBjbXBsZXBzIGNtcGxlc3MgY21wbHRwcyBjbXBsdHNzIGNtcG5lcXBzIGNtcG5lcXNzIGNtcG5sZXBzIGNtcG5sZXNzIGNtcG5sdHBzIGNtcG5sdHNzIGNtcG9yZHBzIGNtcG9yZHNzIGNtcHVub3JkcHMgY21wdW5vcmRzcyBjbXBwcyBjbXBzcyBjb21pc3MgY3Z0cGkycHMgY3Z0cHMycGkgY3Z0c2kyc3MgY3Z0c3Myc2kgY3Z0dHBzMnBpIGN2dHRzczJzaSBkaXZwcyBkaXZzcyBsZG14Y3NyIG1heHBzIG1heHNzIG1pbnBzIG1pbnNzIG1vdmFwcyBtb3ZocHMgbW92bGhwcyBtb3ZscHMgbW92aGxwcyBtb3Ztc2twcyBtb3ZudHBzIG1vdnNzIG1vdnVwcyBtdWxwcyBtdWxzcyBvcnBzIHJjcHBzIHJjcHNzIHJzcXJ0cHMgcnNxcnRzcyBzaHVmcHMgc3FydHBzIHNxcnRzcyBzdG14Y3NyIHN1YnBzIHN1YnNzIHVjb21pc3MgdW5wY2tocHMgdW5wY2tscHMgeG9ycHMgZnhyc3RvciBmeHJzdG9yNjQgZnhzYXZlIGZ4c2F2ZTY0IHhnZXRidiB4c2V0YnYgeHNhdmUgeHNhdmU2NCB4c2F2ZW9wdCB4c2F2ZW9wdDY0IHhyc3RvciB4cnN0b3I2NCBwcmVmZXRjaG50YSBwcmVmZXRjaHQwIHByZWZldGNodDEgcHJlZmV0Y2h0MiBtYXNrbW92cSBtb3ZudHEgcGF2Z2IgcGF2Z3cgcGV4dHJ3IHBpbnNydyBwbWF4c3cgcG1heHViIHBtaW5zdyBwbWludWIgcG1vdm1za2IgcG11bGh1dyBwc2FkYncgcHNodWZ3IHBmMml3IHBmbmFjYyBwZnBuYWNjIHBpMmZ3IHBzd2FwZCBtYXNrbW92ZHF1IGNsZmx1c2ggbW92bnRkcSBtb3ZudGkgbW92bnRwZCBtb3ZkcWEgbW92ZHF1IG1vdmRxMnEgbW92cTJkcSBwYWRkcSBwbXVsdWRxIHBzaHVmZCBwc2h1Zmh3IHBzaHVmbHcgcHNsbGRxIHBzcmxkcSBwc3VicSBwdW5wY2tocWRxIHB1bnBja2xxZHEgYWRkcGQgYWRkc2QgYW5kbnBkIGFuZHBkIGNtcGVxcGQgY21wZXFzZCBjbXBsZXBkIGNtcGxlc2QgY21wbHRwZCBjbXBsdHNkIGNtcG5lcXBkIGNtcG5lcXNkIGNtcG5sZXBkIGNtcG5sZXNkIGNtcG5sdHBkIGNtcG5sdHNkIGNtcG9yZHBkIGNtcG9yZHNkIGNtcHVub3JkcGQgY21wdW5vcmRzZCBjbXBwZCBjb21pc2QgY3Z0ZHEycGQgY3Z0ZHEycHMgY3Z0cGQyZHEgY3Z0cGQycGkgY3Z0cGQycHMgY3Z0cGkycGQgY3Z0cHMyZHEgY3Z0cHMycGQgY3Z0c2Qyc2kgY3Z0c2Qyc3MgY3Z0c2kyc2QgY3Z0c3Myc2QgY3Z0dHBkMnBpIGN2dHRwZDJkcSBjdnR0cHMyZHEgY3Z0dHNkMnNpIGRpdnBkIGRpdnNkIG1heHBkIG1heHNkIG1pbnBkIG1pbnNkIG1vdmFwZCBtb3ZocGQgbW92bHBkIG1vdm1za3BkIG1vdnVwZCBtdWxwZCBtdWxzZCBvcnBkIHNodWZwZCBzcXJ0cGQgc3FydHNkIHN1YnBkIHN1YnNkIHVjb21pc2QgdW5wY2tocGQgdW5wY2tscGQgeG9ycGQgYWRkc3VicGQgYWRkc3VicHMgaGFkZHBkIGhhZGRwcyBoc3VicGQgaHN1YnBzIGxkZHF1IG1vdmRkdXAgbW92c2hkdXAgbW92c2xkdXAgY2xnaSBzdGdpIHZtY2FsbCB2bWNsZWFyIHZtZnVuYyB2bWxhdW5jaCB2bWxvYWQgdm1tY2FsbCB2bXB0cmxkIHZtcHRyc3Qgdm1yZWFkIHZtcmVzdW1lIHZtcnVuIHZtc2F2ZSB2bXdyaXRlIHZteG9mZiB2bXhvbiBpbnZlcHQgaW52dnBpZCBwYWJzYiBwYWJzdyBwYWJzZCBwYWxpZ25yIHBoYWRkdyBwaGFkZGQgcGhhZGRzdyBwaHN1YncgcGhzdWJkIHBoc3Vic3cgcG1hZGR1YnN3IHBtdWxocnN3IHBzaHVmYiBwc2lnbmIgcHNpZ253IHBzaWduZCBleHRycSBpbnNlcnRxIG1vdm50c2QgbW92bnRzcyBsemNudCBibGVuZHBkIGJsZW5kcHMgYmxlbmR2cGQgYmxlbmR2cHMgZHBwZCBkcHBzIGV4dHJhY3RwcyBpbnNlcnRwcyBtb3ZudGRxYSBtcHNhZGJ3IHBhY2t1c2R3IHBibGVuZHZiIHBibGVuZHcgcGNtcGVxcSBwZXh0cmIgcGV4dHJkIHBleHRycSBwaG1pbnBvc3V3IHBpbnNyYiBwaW5zcmQgcGluc3JxIHBtYXhzYiBwbWF4c2QgcG1heHVkIHBtYXh1dyBwbWluc2IgcG1pbnNkIHBtaW51ZCBwbWludXcgcG1vdnN4YncgcG1vdnN4YmQgcG1vdnN4YnEgcG1vdnN4d2QgcG1vdnN4d3EgcG1vdnN4ZHEgcG1vdnp4YncgcG1vdnp4YmQgcG1vdnp4YnEgcG1vdnp4d2QgcG1vdnp4d3EgcG1vdnp4ZHEgcG11bGRxIHBtdWxsZCBwdGVzdCByb3VuZHBkIHJvdW5kcHMgcm91bmRzZCByb3VuZHNzIGNyYzMyIHBjbXBlc3RyaSBwY21wZXN0cm0gcGNtcGlzdHJpIHBjbXBpc3RybSBwY21wZ3RxIHBvcGNudCBnZXRzZWMgcGZyY3B2IHBmcnNxcnR2IG1vdmJlIGFlc2VuYyBhZXNlbmNsYXN0IGFlc2RlYyBhZXNkZWNsYXN0IGFlc2ltYyBhZXNrZXlnZW5hc3Npc3QgdmFlc2VuYyB2YWVzZW5jbGFzdCB2YWVzZGVjIHZhZXNkZWNsYXN0IHZhZXNpbWMgdmFlc2tleWdlbmFzc2lzdCB2YWRkcGQgdmFkZHBzIHZhZGRzZCB2YWRkc3MgdmFkZHN1YnBkIHZhZGRzdWJwcyB2YW5kcGQgdmFuZHBzIHZhbmRucGQgdmFuZG5wcyB2YmxlbmRwZCB2YmxlbmRwcyB2YmxlbmR2cGQgdmJsZW5kdnBzIHZicm9hZGNhc3RzcyB2YnJvYWRjYXN0c2QgdmJyb2FkY2FzdGYxMjggdmNtcGVxX29zcGQgdmNtcGVxcGQgdmNtcGx0X29zcGQgdmNtcGx0cGQgdmNtcGxlX29zcGQgdmNtcGxlcGQgdmNtcHVub3JkX3FwZCB2Y21wdW5vcmRwZCB2Y21wbmVxX3VxcGQgdmNtcG5lcXBkIHZjbXBubHRfdXNwZCB2Y21wbmx0cGQgdmNtcG5sZV91c3BkIHZjbXBubGVwZCB2Y21wb3JkX3FwZCB2Y21wb3JkcGQgdmNtcGVxX3VxcGQgdmNtcG5nZV91c3BkIHZjbXBuZ2VwZCB2Y21wbmd0X3VzcGQgdmNtcG5ndHBkIHZjbXBmYWxzZV9vcXBkIHZjbXBmYWxzZXBkIHZjbXBuZXFfb3FwZCB2Y21wZ2Vfb3NwZCB2Y21wZ2VwZCB2Y21wZ3Rfb3NwZCB2Y21wZ3RwZCB2Y21wdHJ1ZV91cXBkIHZjbXB0cnVlcGQgdmNtcGx0X29xcGQgdmNtcGxlX29xcGQgdmNtcHVub3JkX3NwZCB2Y21wbmVxX3VzcGQgdmNtcG5sdF91cXBkIHZjbXBubGVfdXFwZCB2Y21wb3JkX3NwZCB2Y21wZXFfdXNwZCB2Y21wbmdlX3VxcGQgdmNtcG5ndF91cXBkIHZjbXBmYWxzZV9vc3BkIHZjbXBuZXFfb3NwZCB2Y21wZ2Vfb3FwZCB2Y21wZ3Rfb3FwZCB2Y21wdHJ1ZV91c3BkIHZjbXBwZCB2Y21wZXFfb3NwcyB2Y21wZXFwcyB2Y21wbHRfb3NwcyB2Y21wbHRwcyB2Y21wbGVfb3NwcyB2Y21wbGVwcyB2Y21wdW5vcmRfcXBzIHZjbXB1bm9yZHBzIHZjbXBuZXFfdXFwcyB2Y21wbmVxcHMgdmNtcG5sdF91c3BzIHZjbXBubHRwcyB2Y21wbmxlX3VzcHMgdmNtcG5sZXBzIHZjbXBvcmRfcXBzIHZjbXBvcmRwcyB2Y21wZXFfdXFwcyB2Y21wbmdlX3VzcHMgdmNtcG5nZXBzIHZjbXBuZ3RfdXNwcyB2Y21wbmd0cHMgdmNtcGZhbHNlX29xcHMgdmNtcGZhbHNlcHMgdmNtcG5lcV9vcXBzIHZjbXBnZV9vc3BzIHZjbXBnZXBzIHZjbXBndF9vc3BzIHZjbXBndHBzIHZjbXB0cnVlX3VxcHMgdmNtcHRydWVwcyB2Y21wbHRfb3FwcyB2Y21wbGVfb3FwcyB2Y21wdW5vcmRfc3BzIHZjbXBuZXFfdXNwcyB2Y21wbmx0X3VxcHMgdmNtcG5sZV91cXBzIHZjbXBvcmRfc3BzIHZjbXBlcV91c3BzIHZjbXBuZ2VfdXFwcyB2Y21wbmd0X3VxcHMgdmNtcGZhbHNlX29zcHMgdmNtcG5lcV9vc3BzIHZjbXBnZV9vcXBzIHZjbXBndF9vcXBzIHZjbXB0cnVlX3VzcHMgdmNtcHBzIHZjbXBlcV9vc3NkIHZjbXBlcXNkIHZjbXBsdF9vc3NkIHZjbXBsdHNkIHZjbXBsZV9vc3NkIHZjbXBsZXNkIHZjbXB1bm9yZF9xc2QgdmNtcHVub3Jkc2QgdmNtcG5lcV91cXNkIHZjbXBuZXFzZCB2Y21wbmx0X3Vzc2QgdmNtcG5sdHNkIHZjbXBubGVfdXNzZCB2Y21wbmxlc2QgdmNtcG9yZF9xc2QgdmNtcG9yZHNkIHZjbXBlcV91cXNkIHZjbXBuZ2VfdXNzZCB2Y21wbmdlc2QgdmNtcG5ndF91c3NkIHZjbXBuZ3RzZCB2Y21wZmFsc2Vfb3FzZCB2Y21wZmFsc2VzZCB2Y21wbmVxX29xc2QgdmNtcGdlX29zc2QgdmNtcGdlc2QgdmNtcGd0X29zc2QgdmNtcGd0c2QgdmNtcHRydWVfdXFzZCB2Y21wdHJ1ZXNkIHZjbXBsdF9vcXNkIHZjbXBsZV9vcXNkIHZjbXB1bm9yZF9zc2QgdmNtcG5lcV91c3NkIHZjbXBubHRfdXFzZCB2Y21wbmxlX3Vxc2QgdmNtcG9yZF9zc2QgdmNtcGVxX3Vzc2QgdmNtcG5nZV91cXNkIHZjbXBuZ3RfdXFzZCB2Y21wZmFsc2Vfb3NzZCB2Y21wbmVxX29zc2QgdmNtcGdlX29xc2QgdmNtcGd0X29xc2QgdmNtcHRydWVfdXNzZCB2Y21wc2QgdmNtcGVxX29zc3MgdmNtcGVxc3MgdmNtcGx0X29zc3MgdmNtcGx0c3MgdmNtcGxlX29zc3MgdmNtcGxlc3MgdmNtcHVub3JkX3FzcyB2Y21wdW5vcmRzcyB2Y21wbmVxX3Vxc3MgdmNtcG5lcXNzIHZjbXBubHRfdXNzcyB2Y21wbmx0c3MgdmNtcG5sZV91c3NzIHZjbXBubGVzcyB2Y21wb3JkX3FzcyB2Y21wb3Jkc3MgdmNtcGVxX3Vxc3MgdmNtcG5nZV91c3NzIHZjbXBuZ2VzcyB2Y21wbmd0X3Vzc3MgdmNtcG5ndHNzIHZjbXBmYWxzZV9vcXNzIHZjbXBmYWxzZXNzIHZjbXBuZXFfb3FzcyB2Y21wZ2Vfb3NzcyB2Y21wZ2VzcyB2Y21wZ3Rfb3NzcyB2Y21wZ3RzcyB2Y21wdHJ1ZV91cXNzIHZjbXB0cnVlc3MgdmNtcGx0X29xc3MgdmNtcGxlX29xc3MgdmNtcHVub3JkX3NzcyB2Y21wbmVxX3Vzc3MgdmNtcG5sdF91cXNzIHZjbXBubGVfdXFzcyB2Y21wb3JkX3NzcyB2Y21wZXFfdXNzcyB2Y21wbmdlX3Vxc3MgdmNtcG5ndF91cXNzIHZjbXBmYWxzZV9vc3NzIHZjbXBuZXFfb3NzcyB2Y21wZ2Vfb3FzcyB2Y21wZ3Rfb3FzcyB2Y21wdHJ1ZV91c3NzIHZjbXBzcyB2Y29taXNkIHZjb21pc3MgdmN2dGRxMnBkIHZjdnRkcTJwcyB2Y3Z0cGQyZHEgdmN2dHBkMnBzIHZjdnRwczJkcSB2Y3Z0cHMycGQgdmN2dHNkMnNpIHZjdnRzZDJzcyB2Y3Z0c2kyc2QgdmN2dHNpMnNzIHZjdnRzczJzZCB2Y3Z0c3Myc2kgdmN2dHRwZDJkcSB2Y3Z0dHBzMmRxIHZjdnR0c2Qyc2kgdmN2dHRzczJzaSB2ZGl2cGQgdmRpdnBzIHZkaXZzZCB2ZGl2c3MgdmRwcGQgdmRwcHMgdmV4dHJhY3RmMTI4IHZleHRyYWN0cHMgdmhhZGRwZCB2aGFkZHBzIHZoc3VicGQgdmhzdWJwcyB2aW5zZXJ0ZjEyOCB2aW5zZXJ0cHMgdmxkZHF1IHZsZHFxdSB2bGRteGNzciB2bWFza21vdmRxdSB2bWFza21vdnBzIHZtYXNrbW92cGQgdm1heHBkIHZtYXhwcyB2bWF4c2Qgdm1heHNzIHZtaW5wZCB2bWlucHMgdm1pbnNkIHZtaW5zcyB2bW92YXBkIHZtb3ZhcHMgdm1vdmQgdm1vdnEgdm1vdmRkdXAgdm1vdmRxYSB2bW92cXFhIHZtb3ZkcXUgdm1vdnFxdSB2bW92aGxwcyB2bW92aHBkIHZtb3ZocHMgdm1vdmxocHMgdm1vdmxwZCB2bW92bHBzIHZtb3Ztc2twZCB2bW92bXNrcHMgdm1vdm50ZHEgdm1vdm50cXEgdm1vdm50ZHFhIHZtb3ZudHBkIHZtb3ZudHBzIHZtb3ZzZCB2bW92c2hkdXAgdm1vdnNsZHVwIHZtb3ZzcyB2bW92dXBkIHZtb3Z1cHMgdm1wc2FkYncgdm11bHBkIHZtdWxwcyB2bXVsc2Qgdm11bHNzIHZvcnBkIHZvcnBzIHZwYWJzYiB2cGFic3cgdnBhYnNkIHZwYWNrc3N3YiB2cGFja3NzZHcgdnBhY2t1c3diIHZwYWNrdXNkdyB2cGFkZGIgdnBhZGR3IHZwYWRkZCB2cGFkZHEgdnBhZGRzYiB2cGFkZHN3IHZwYWRkdXNiIHZwYWRkdXN3IHZwYWxpZ25yIHZwYW5kIHZwYW5kbiB2cGF2Z2IgdnBhdmd3IHZwYmxlbmR2YiB2cGJsZW5kdyB2cGNtcGVzdHJpIHZwY21wZXN0cm0gdnBjbXBpc3RyaSB2cGNtcGlzdHJtIHZwY21wZXFiIHZwY21wZXF3IHZwY21wZXFkIHZwY21wZXFxIHZwY21wZ3RiIHZwY21wZ3R3IHZwY21wZ3RkIHZwY21wZ3RxIHZwZXJtaWxwZCB2cGVybWlscHMgdnBlcm0yZjEyOCB2cGV4dHJiIHZwZXh0cncgdnBleHRyZCB2cGV4dHJxIHZwaGFkZHcgdnBoYWRkZCB2cGhhZGRzdyB2cGhtaW5wb3N1dyB2cGhzdWJ3IHZwaHN1YmQgdnBoc3Vic3cgdnBpbnNyYiB2cGluc3J3IHZwaW5zcmQgdnBpbnNycSB2cG1hZGR3ZCB2cG1hZGR1YnN3IHZwbWF4c2IgdnBtYXhzdyB2cG1heHNkIHZwbWF4dWIgdnBtYXh1dyB2cG1heHVkIHZwbWluc2IgdnBtaW5zdyB2cG1pbnNkIHZwbWludWIgdnBtaW51dyB2cG1pbnVkIHZwbW92bXNrYiB2cG1vdnN4YncgdnBtb3ZzeGJkIHZwbW92c3hicSB2cG1vdnN4d2QgdnBtb3ZzeHdxIHZwbW92c3hkcSB2cG1vdnp4YncgdnBtb3Z6eGJkIHZwbW92enhicSB2cG1vdnp4d2QgdnBtb3Z6eHdxIHZwbW92enhkcSB2cG11bGh1dyB2cG11bGhyc3cgdnBtdWxodyB2cG11bGx3IHZwbXVsbGQgdnBtdWx1ZHEgdnBtdWxkcSB2cG9yIHZwc2FkYncgdnBzaHVmYiB2cHNodWZkIHZwc2h1Zmh3IHZwc2h1Zmx3IHZwc2lnbmIgdnBzaWdudyB2cHNpZ25kIHZwc2xsZHEgdnBzcmxkcSB2cHNsbHcgdnBzbGxkIHZwc2xscSB2cHNyYXcgdnBzcmFkIHZwc3JsdyB2cHNybGQgdnBzcmxxIHZwdGVzdCB2cHN1YmIgdnBzdWJ3IHZwc3ViZCB2cHN1YnEgdnBzdWJzYiB2cHN1YnN3IHZwc3VidXNiIHZwc3VidXN3IHZwdW5wY2toYncgdnB1bnBja2h3ZCB2cHVucGNraGRxIHZwdW5wY2tocWRxIHZwdW5wY2tsYncgdnB1bnBja2x3ZCB2cHVucGNrbGRxIHZwdW5wY2tscWRxIHZweG9yIHZyY3BwcyB2cmNwc3MgdnJzcXJ0cHMgdnJzcXJ0c3MgdnJvdW5kcGQgdnJvdW5kcHMgdnJvdW5kc2QgdnJvdW5kc3MgdnNodWZwZCB2c2h1ZnBzIHZzcXJ0cGQgdnNxcnRwcyB2c3FydHNkIHZzcXJ0c3MgdnN0bXhjc3IgdnN1YnBkIHZzdWJwcyB2c3Vic2QgdnN1YnNzIHZ0ZXN0cHMgdnRlc3RwZCB2dWNvbWlzZCB2dWNvbWlzcyB2dW5wY2tocGQgdnVucGNraHBzIHZ1bnBja2xwZCB2dW5wY2tscHMgdnhvcnBkIHZ4b3JwcyB2emVyb2FsbCB2emVyb3VwcGVyIHBjbG11bGxxbHFkcSBwY2xtdWxocWxxZHEgcGNsbXVsbHFocWRxIHBjbG11bGhxaHFkcSBwY2xtdWxxZHEgdnBjbG11bGxxbHFkcSB2cGNsbXVsaHFscWRxIHZwY2xtdWxscWhxZHEgdnBjbG11bGhxaHFkcSB2cGNsbXVscWRxIHZmbWFkZDEzMnBzIHZmbWFkZDEzMnBkIHZmbWFkZDMxMnBzIHZmbWFkZDMxMnBkIHZmbWFkZDIxM3BzIHZmbWFkZDIxM3BkIHZmbWFkZDEyM3BzIHZmbWFkZDEyM3BkIHZmbWFkZDIzMXBzIHZmbWFkZDIzMXBkIHZmbWFkZDMyMXBzIHZmbWFkZDMyMXBkIHZmbWFkZHN1YjEzMnBzIHZmbWFkZHN1YjEzMnBkIHZmbWFkZHN1YjMxMnBzIHZmbWFkZHN1YjMxMnBkIHZmbWFkZHN1YjIxM3BzIHZmbWFkZHN1YjIxM3BkIHZmbWFkZHN1YjEyM3BzIHZmbWFkZHN1YjEyM3BkIHZmbWFkZHN1YjIzMXBzIHZmbWFkZHN1YjIzMXBkIHZmbWFkZHN1YjMyMXBzIHZmbWFkZHN1YjMyMXBkIHZmbXN1YjEzMnBzIHZmbXN1YjEzMnBkIHZmbXN1YjMxMnBzIHZmbXN1YjMxMnBkIHZmbXN1YjIxM3BzIHZmbXN1YjIxM3BkIHZmbXN1YjEyM3BzIHZmbXN1YjEyM3BkIHZmbXN1YjIzMXBzIHZmbXN1YjIzMXBkIHZmbXN1YjMyMXBzIHZmbXN1YjMyMXBkIHZmbXN1YmFkZDEzMnBzIHZmbXN1YmFkZDEzMnBkIHZmbXN1YmFkZDMxMnBzIHZmbXN1YmFkZDMxMnBkIHZmbXN1YmFkZDIxM3BzIHZmbXN1YmFkZDIxM3BkIHZmbXN1YmFkZDEyM3BzIHZmbXN1YmFkZDEyM3BkIHZmbXN1YmFkZDIzMXBzIHZmbXN1YmFkZDIzMXBkIHZmbXN1YmFkZDMyMXBzIHZmbXN1YmFkZDMyMXBkIHZmbm1hZGQxMzJwcyB2Zm5tYWRkMTMycGQgdmZubWFkZDMxMnBzIHZmbm1hZGQzMTJwZCB2Zm5tYWRkMjEzcHMgdmZubWFkZDIxM3BkIHZmbm1hZGQxMjNwcyB2Zm5tYWRkMTIzcGQgdmZubWFkZDIzMXBzIHZmbm1hZGQyMzFwZCB2Zm5tYWRkMzIxcHMgdmZubWFkZDMyMXBkIHZmbm1zdWIxMzJwcyB2Zm5tc3ViMTMycGQgdmZubXN1YjMxMnBzIHZmbm1zdWIzMTJwZCB2Zm5tc3ViMjEzcHMgdmZubXN1YjIxM3BkIHZmbm1zdWIxMjNwcyB2Zm5tc3ViMTIzcGQgdmZubXN1YjIzMXBzIHZmbm1zdWIyMzFwZCB2Zm5tc3ViMzIxcHMgdmZubXN1YjMyMXBkIHZmbWFkZDEzMnNzIHZmbWFkZDEzMnNkIHZmbWFkZDMxMnNzIHZmbWFkZDMxMnNkIHZmbWFkZDIxM3NzIHZmbWFkZDIxM3NkIHZmbWFkZDEyM3NzIHZmbWFkZDEyM3NkIHZmbWFkZDIzMXNzIHZmbWFkZDIzMXNkIHZmbWFkZDMyMXNzIHZmbWFkZDMyMXNkIHZmbXN1YjEzMnNzIHZmbXN1YjEzMnNkIHZmbXN1YjMxMnNzIHZmbXN1YjMxMnNkIHZmbXN1YjIxM3NzIHZmbXN1YjIxM3NkIHZmbXN1YjEyM3NzIHZmbXN1YjEyM3NkIHZmbXN1YjIzMXNzIHZmbXN1YjIzMXNkIHZmbXN1YjMyMXNzIHZmbXN1YjMyMXNkIHZmbm1hZGQxMzJzcyB2Zm5tYWRkMTMyc2QgdmZubWFkZDMxMnNzIHZmbm1hZGQzMTJzZCB2Zm5tYWRkMjEzc3MgdmZubWFkZDIxM3NkIHZmbm1hZGQxMjNzcyB2Zm5tYWRkMTIzc2QgdmZubWFkZDIzMXNzIHZmbm1hZGQyMzFzZCB2Zm5tYWRkMzIxc3MgdmZubWFkZDMyMXNkIHZmbm1zdWIxMzJzcyB2Zm5tc3ViMTMyc2QgdmZubXN1YjMxMnNzIHZmbm1zdWIzMTJzZCB2Zm5tc3ViMjEzc3MgdmZubXN1YjIxM3NkIHZmbm1zdWIxMjNzcyB2Zm5tc3ViMTIzc2QgdmZubXN1YjIzMXNzIHZmbm1zdWIyMzFzZCB2Zm5tc3ViMzIxc3MgdmZubXN1YjMyMXNkIHJkZnNiYXNlIHJkZ3NiYXNlIHJkcmFuZCB3cmZzYmFzZSB3cmdzYmFzZSB2Y3Z0cGgycHMgdmN2dHBzMnBoIGFkY3ggYWRveCByZHNlZWQgY2xhYyBzdGFjIHhzdG9yZSB4Y3J5cHRlY2IgeGNyeXB0Y2JjIHhjcnlwdGN0ciB4Y3J5cHRjZmIgeGNyeXB0b2ZiIG1vbnRtdWwgeHNoYTEgeHNoYTI1NiBsbHdwY2Igc2x3cGNiIGx3cHZhbCBsd3BpbnMgdmZtYWRkcGQgdmZtYWRkcHMgdmZtYWRkc2QgdmZtYWRkc3MgdmZtYWRkc3VicGQgdmZtYWRkc3VicHMgdmZtc3ViYWRkcGQgdmZtc3ViYWRkcHMgdmZtc3VicGQgdmZtc3VicHMgdmZtc3Vic2QgdmZtc3Vic3MgdmZubWFkZHBkIHZmbm1hZGRwcyB2Zm5tYWRkc2QgdmZubWFkZHNzIHZmbm1zdWJwZCB2Zm5tc3VicHMgdmZubXN1YnNkIHZmbm1zdWJzcyB2ZnJjenBkIHZmcmN6cHMgdmZyY3pzZCB2ZnJjenNzIHZwY21vdiB2cGNvbWIgdnBjb21kIHZwY29tcSB2cGNvbXViIHZwY29tdWQgdnBjb211cSB2cGNvbXV3IHZwY29tdyB2cGhhZGRiZCB2cGhhZGRicSB2cGhhZGRidyB2cGhhZGRkcSB2cGhhZGR1YmQgdnBoYWRkdWJxIHZwaGFkZHVidyB2cGhhZGR1ZHEgdnBoYWRkdXdkIHZwaGFkZHV3cSB2cGhhZGR3ZCB2cGhhZGR3cSB2cGhzdWJidyB2cGhzdWJkcSB2cGhzdWJ3ZCB2cG1hY3NkZCB2cG1hY3NkcWggdnBtYWNzZHFsIHZwbWFjc3NkZCB2cG1hY3NzZHFoIHZwbWFjc3NkcWwgdnBtYWNzc3dkIHZwbWFjc3N3dyB2cG1hY3N3ZCB2cG1hY3N3dyB2cG1hZGNzc3dkIHZwbWFkY3N3ZCB2cHBlcm0gdnByb3RiIHZwcm90ZCB2cHJvdHEgdnByb3R3IHZwc2hhYiB2cHNoYWQgdnBzaGFxIHZwc2hhdyB2cHNobGIgdnBzaGxkIHZwc2hscSB2cHNobHcgdmJyb2FkY2FzdGkxMjggdnBibGVuZGQgdnBicm9hZGNhc3RiIHZwYnJvYWRjYXN0dyB2cGJyb2FkY2FzdGQgdnBicm9hZGNhc3RxIHZwZXJtZCB2cGVybXBkIHZwZXJtcHMgdnBlcm1xIHZwZXJtMmkxMjggdmV4dHJhY3RpMTI4IHZpbnNlcnRpMTI4IHZwbWFza21vdmQgdnBtYXNrbW92cSB2cHNsbHZkIHZwc2xsdnEgdnBzcmF2ZCB2cHNybHZkIHZwc3JsdnEgdmdhdGhlcmRwZCB2Z2F0aGVycXBkIHZnYXRoZXJkcHMgdmdhdGhlcnFwcyB2cGdhdGhlcmRkIHZwZ2F0aGVycWQgdnBnYXRoZXJkcSB2cGdhdGhlcnFxIHhhYm9ydCB4YmVnaW4geGVuZCB4dGVzdCBhbmRuIGJleHRyIGJsY2kgYmxjaWMgYmxzaSBibHNpYyBibGNmaWxsIGJsc2ZpbGwgYmxjbXNrIGJsc21zayBibHNyIGJsY3MgYnpoaSBtdWx4IHBkZXAgcGV4dCByb3J4IHNhcnggc2hseCBzaHJ4IHR6Y250IHR6bXNrIHQxbXNrYyB2YWxpZ25kIHZhbGlnbnEgdmJsZW5kbXBkIHZibGVuZG1wcyB2YnJvYWRjYXN0ZjMyeDQgdmJyb2FkY2FzdGY2NHg0IHZicm9hZGNhc3RpMzJ4NCB2YnJvYWRjYXN0aTY0eDQgdmNvbXByZXNzcGQgdmNvbXByZXNzcHMgdmN2dHBkMnVkcSB2Y3Z0cHMydWRxIHZjdnRzZDJ1c2kgdmN2dHNzMnVzaSB2Y3Z0dHBkMnVkcSB2Y3Z0dHBzMnVkcSB2Y3Z0dHNkMnVzaSB2Y3Z0dHNzMnVzaSB2Y3Z0dWRxMnBkIHZjdnR1ZHEycHMgdmN2dHVzaTJzZCB2Y3Z0dXNpMnNzIHZleHBhbmRwZCB2ZXhwYW5kcHMgdmV4dHJhY3RmMzJ4NCB2ZXh0cmFjdGY2NHg0IHZleHRyYWN0aTMyeDQgdmV4dHJhY3RpNjR4NCB2Zml4dXBpbW1wZCB2Zml4dXBpbW1wcyB2Zml4dXBpbW1zZCB2Zml4dXBpbW1zcyB2Z2V0ZXhwcGQgdmdldGV4cHBzIHZnZXRleHBzZCB2Z2V0ZXhwc3MgdmdldG1hbnRwZCB2Z2V0bWFudHBzIHZnZXRtYW50c2QgdmdldG1hbnRzcyB2aW5zZXJ0ZjMyeDQgdmluc2VydGY2NHg0IHZpbnNlcnRpMzJ4NCB2aW5zZXJ0aTY0eDQgdm1vdmRxYTMyIHZtb3ZkcWE2NCB2bW92ZHF1MzIgdm1vdmRxdTY0IHZwYWJzcSB2cGFuZGQgdnBhbmRuZCB2cGFuZG5xIHZwYW5kcSB2cGJsZW5kbWQgdnBibGVuZG1xIHZwY21wbHRkIHZwY21wbGVkIHZwY21wbmVxZCB2cGNtcG5sdGQgdnBjbXBubGVkIHZwY21wZCB2cGNtcGx0cSB2cGNtcGxlcSB2cGNtcG5lcXEgdnBjbXBubHRxIHZwY21wbmxlcSB2cGNtcHEgdnBjbXBlcXVkIHZwY21wbHR1ZCB2cGNtcGxldWQgdnBjbXBuZXF1ZCB2cGNtcG5sdHVkIHZwY21wbmxldWQgdnBjbXB1ZCB2cGNtcGVxdXEgdnBjbXBsdHVxIHZwY21wbGV1cSB2cGNtcG5lcXVxIHZwY21wbmx0dXEgdnBjbXBubGV1cSB2cGNtcHVxIHZwY29tcHJlc3NkIHZwY29tcHJlc3NxIHZwZXJtaTJkIHZwZXJtaTJwZCB2cGVybWkycHMgdnBlcm1pMnEgdnBlcm10MmQgdnBlcm10MnBkIHZwZXJtdDJwcyB2cGVybXQycSB2cGV4cGFuZGQgdnBleHBhbmRxIHZwbWF4c3EgdnBtYXh1cSB2cG1pbnNxIHZwbWludXEgdnBtb3ZkYiB2cG1vdmR3IHZwbW92cWIgdnBtb3ZxZCB2cG1vdnF3IHZwbW92c2RiIHZwbW92c2R3IHZwbW92c3FiIHZwbW92c3FkIHZwbW92c3F3IHZwbW92dXNkYiB2cG1vdnVzZHcgdnBtb3Z1c3FiIHZwbW92dXNxZCB2cG1vdnVzcXcgdnBvcmQgdnBvcnEgdnByb2xkIHZwcm9scSB2cHJvbHZkIHZwcm9sdnEgdnByb3JkIHZwcm9ycSB2cHJvcnZkIHZwcm9ydnEgdnBzY2F0dGVyZGQgdnBzY2F0dGVyZHEgdnBzY2F0dGVycWQgdnBzY2F0dGVycXEgdnBzcmFxIHZwc3JhdnEgdnB0ZXJubG9nZCB2cHRlcm5sb2dxIHZwdGVzdG1kIHZwdGVzdG1xIHZwdGVzdG5tZCB2cHRlc3RubXEgdnB4b3JkIHZweG9ycSB2cmNwMTRwZCB2cmNwMTRwcyB2cmNwMTRzZCB2cmNwMTRzcyB2cm5kc2NhbGVwZCB2cm5kc2NhbGVwcyB2cm5kc2NhbGVzZCB2cm5kc2NhbGVzcyB2cnNxcnQxNHBkIHZyc3FydDE0cHMgdnJzcXJ0MTRzZCB2cnNxcnQxNHNzIHZzY2FsZWZwZCB2c2NhbGVmcHMgdnNjYWxlZnNkIHZzY2FsZWZzcyB2c2NhdHRlcmRwZCB2c2NhdHRlcmRwcyB2c2NhdHRlcnFwZCB2c2NhdHRlcnFwcyB2c2h1ZmYzMng0IHZzaHVmZjY0eDIgdnNodWZpMzJ4NCB2c2h1Zmk2NHgyIGthbmRudyBrYW5kdyBrbW92dyBrbm90dyBrb3J0ZXN0dyBrb3J3IGtzaGlmdGx3IGtzaGlmdHJ3IGt1bnBja2J3IGt4bm9ydyBreG9ydyB2cGJyb2FkY2FzdG1iMnEgdnBicm9hZGNhc3RtdzJkIHZwY29uZmxpY3RkIHZwY29uZmxpY3RxIHZwbHpjbnRkIHZwbHpjbnRxIHZleHAycGQgdmV4cDJwcyB2cmNwMjhwZCB2cmNwMjhwcyB2cmNwMjhzZCB2cmNwMjhzcyB2cnNxcnQyOHBkIHZyc3FydDI4cHMgdnJzcXJ0MjhzZCB2cnNxcnQyOHNzIHZnYXRoZXJwZjBkcGQgdmdhdGhlcnBmMGRwcyB2Z2F0aGVycGYwcXBkIHZnYXRoZXJwZjBxcHMgdmdhdGhlcnBmMWRwZCB2Z2F0aGVycGYxZHBzIHZnYXRoZXJwZjFxcGQgdmdhdGhlcnBmMXFwcyB2c2NhdHRlcnBmMGRwZCB2c2NhdHRlcnBmMGRwcyB2c2NhdHRlcnBmMHFwZCB2c2NhdHRlcnBmMHFwcyB2c2NhdHRlcnBmMWRwZCB2c2NhdHRlcnBmMWRwcyB2c2NhdHRlcnBmMXFwZCB2c2NhdHRlcnBmMXFwcyBwcmVmZXRjaHd0MSBibmRtayBibmRjbCBibmRjdSBibmRjbiBibmRtb3YgYm5kbGR4IGJuZHN0eCBzaGExcm5kczQgc2hhMW5leHRlIHNoYTFtc2cxIHNoYTFtc2cyIHNoYTI1NnJuZHMyIHNoYTI1Nm1zZzEgc2hhMjU2bXNnMiBoaW50X25vcDAgaGludF9ub3AxIGhpbnRfbm9wMiBoaW50X25vcDMgaGludF9ub3A0IGhpbnRfbm9wNSBoaW50X25vcDYgaGludF9ub3A3IGhpbnRfbm9wOCBoaW50X25vcDkgaGludF9ub3AxMCBoaW50X25vcDExIGhpbnRfbm9wMTIgaGludF9ub3AxMyBoaW50X25vcDE0IGhpbnRfbm9wMTUgaGludF9ub3AxNiBoaW50X25vcDE3IGhpbnRfbm9wMTggaGludF9ub3AxOSBoaW50X25vcDIwIGhpbnRfbm9wMjEgaGludF9ub3AyMiBoaW50X25vcDIzIGhpbnRfbm9wMjQgaGludF9ub3AyNSBoaW50X25vcDI2IGhpbnRfbm9wMjcgaGludF9ub3AyOCBoaW50X25vcDI5IGhpbnRfbm9wMzAgaGludF9ub3AzMSBoaW50X25vcDMyIGhpbnRfbm9wMzMgaGludF9ub3AzNCBoaW50X25vcDM1IGhpbnRfbm9wMzYgaGludF9ub3AzNyBoaW50X25vcDM4IGhpbnRfbm9wMzkgaGludF9ub3A0MCBoaW50X25vcDQxIGhpbnRfbm9wNDIgaGludF9ub3A0MyBoaW50X25vcDQ0IGhpbnRfbm9wNDUgaGludF9ub3A0NiBoaW50X25vcDQ3IGhpbnRfbm9wNDggaGludF9ub3A0OSBoaW50X25vcDUwIGhpbnRfbm9wNTEgaGludF9ub3A1MiBoaW50X25vcDUzIGhpbnRfbm9wNTQgaGludF9ub3A1NSBoaW50X25vcDU2IGhpbnRfbm9wNTcgaGludF9ub3A1OCBoaW50X25vcDU5IGhpbnRfbm9wNjAgaGludF9ub3A2MSBoaW50X25vcDYyIGhpbnRfbm9wNjMnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vIEluc3RydWN0aW9uIHBvaW50ZXJcbiAgICAgICAgJ2lwIGVpcCByaXAgJyArXG4gICAgICAgIC8vIDgtYml0IHJlZ2lzdGVyc1xuICAgICAgICAnYWwgYWggYmwgYmggY2wgY2ggZGwgZGggc2lsIGRpbCBicGwgc3BsIHI4YiByOWIgcjEwYiByMTFiIHIxMmIgcjEzYiByMTRiIHIxNWIgJyArXG4gICAgICAgIC8vIDE2LWJpdCByZWdpc3RlcnNcbiAgICAgICAgJ2F4IGJ4IGN4IGR4IHNpIGRpIGJwIHNwIHI4dyByOXcgcjEwdyByMTF3IHIxMncgcjEzdyByMTR3IHIxNXcgJyArXG4gICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcnNcbiAgICAgICAgJ2VheCBlYnggZWN4IGVkeCBlc2kgZWRpIGVicCBlc3AgZWlwIHI4ZCByOWQgcjEwZCByMTFkIHIxMmQgcjEzZCByMTRkIHIxNWQgJyArXG4gICAgICAgIC8vIDY0LWJpdCByZWdpc3RlcnNcbiAgICAgICAgJ3JheCByYnggcmN4IHJkeCByc2kgcmRpIHJicCByc3AgcjggcjkgcjEwIHIxMSByMTIgcjEzIHIxNCByMTUgJyArXG4gICAgICAgIC8vIFNlZ21lbnQgcmVnaXN0ZXJzXG4gICAgICAgICdjcyBkcyBlcyBmcyBncyBzcyAnICtcbiAgICAgICAgLy8gRmxvYXRpbmcgcG9pbnQgc3RhY2sgcmVnaXN0ZXJzXG4gICAgICAgICdzdCBzdDAgc3QxIHN0MiBzdDMgc3Q0IHN0NSBzdDYgc3Q3ICcgK1xuICAgICAgICAvLyBNTVggUmVnaXN0ZXJzXG4gICAgICAgICdtbTAgbW0xIG1tMiBtbTMgbW00IG1tNSBtbTYgbW03ICcgK1xuICAgICAgICAvLyBTU0UgcmVnaXN0ZXJzXG4gICAgICAgICd4bW0wICB4bW0xICB4bW0yICB4bW0zICB4bW00ICB4bW01ICB4bW02ICB4bW03ICB4bW04ICB4bW05IHhtbTEwICB4bW0xMSB4bW0xMiB4bW0xMyB4bW0xNCB4bW0xNSAnICtcbiAgICAgICAgJ3htbTE2IHhtbTE3IHhtbTE4IHhtbTE5IHhtbTIwIHhtbTIxIHhtbTIyIHhtbTIzIHhtbTI0IHhtbTI1IHhtbTI2IHhtbTI3IHhtbTI4IHhtbTI5IHhtbTMwIHhtbTMxICcgK1xuICAgICAgICAvLyBBVlggcmVnaXN0ZXJzXG4gICAgICAgICd5bW0wICB5bW0xICB5bW0yICB5bW0zICB5bW00ICB5bW01ICB5bW02ICB5bW03ICB5bW04ICB5bW05IHltbTEwICB5bW0xMSB5bW0xMiB5bW0xMyB5bW0xNCB5bW0xNSAnICtcbiAgICAgICAgJ3ltbTE2IHltbTE3IHltbTE4IHltbTE5IHltbTIwIHltbTIxIHltbTIyIHltbTIzIHltbTI0IHltbTI1IHltbTI2IHltbTI3IHltbTI4IHltbTI5IHltbTMwIHltbTMxICcgK1xuICAgICAgICAvLyBBVlgtNTEyRiByZWdpc3RlcnNcbiAgICAgICAgJ3ptbTAgIHptbTEgIHptbTIgIHptbTMgIHptbTQgIHptbTUgIHptbTYgIHptbTcgIHptbTggIHptbTkgem1tMTAgIHptbTExIHptbTEyIHptbTEzIHptbTE0IHptbTE1ICcgK1xuICAgICAgICAnem1tMTYgem1tMTcgem1tMTggem1tMTkgem1tMjAgem1tMjEgem1tMjIgem1tMjMgem1tMjQgem1tMjUgem1tMjYgem1tMjcgem1tMjggem1tMjkgem1tMzAgem1tMzEgJyArXG4gICAgICAgIC8vIEFWWC01MTJGIG1hc2sgcmVnaXN0ZXJzXG4gICAgICAgICdrMCBrMSBrMiBrMyBrNCBrNSBrNiBrNyAnICtcbiAgICAgICAgLy8gQm91bmQgKE1QWCkgcmVnaXN0ZXJcbiAgICAgICAgJ2JuZDAgYm5kMSBibmQyIGJuZDMgJyArXG4gICAgICAgIC8vIFNwZWNpYWwgcmVnaXN0ZXJcbiAgICAgICAgJ2NyMCBjcjEgY3IyIGNyMyBjcjQgY3I4IGRyMCBkcjEgZHIyIGRyMyBkcjggdHIzIHRyNCB0cjUgdHI2IHRyNyAnICtcbiAgICAgICAgLy8gTkFTTSBhbHRyZWcgcGFja2FnZVxuICAgICAgICAncjAgcjEgcjIgcjMgcjQgcjUgcjYgcjcgcjBiIHIxYiByMmIgcjNiIHI0YiByNWIgcjZiIHI3YiAnICtcbiAgICAgICAgJ3IwdyByMXcgcjJ3IHIzdyByNHcgcjV3IHI2dyByN3cgcjBkIHIxZCByMmQgcjNkIHI0ZCByNWQgcjZkIHI3ZCAnICtcbiAgICAgICAgJ3IwaCByMWggcjJoIHIzaCAnICtcbiAgICAgICAgJ3IwbCByMWwgcjJsIHIzbCByNGwgcjVsIHI2bCByN2wgcjhsIHI5bCByMTBsIHIxMWwgcjEybCByMTNsIHIxNGwgcjE1bCAnICtcblxuICAgICAgICAnZGIgZHcgZGQgZHEgZHQgZGRxIGRvIGR5IGR6ICcgK1xuICAgICAgICAncmVzYiByZXN3IHJlc2QgcmVzcSByZXN0IHJlc2RxIHJlc28gcmVzeSByZXN6ICcgK1xuICAgICAgICAnaW5jYmluIGVxdSB0aW1lcyAnICtcbiAgICAgICAgJ2J5dGUgd29yZCBkd29yZCBxd29yZCBub3NwbGl0IHJlbCBhYnMgc2VnIHdydCBzdHJpY3QgbmVhciBmYXIgYTMyIHB0cicsXG5cbiAgICAgIG1ldGE6XG4gICAgICAgICclZGVmaW5lICV4ZGVmaW5lICUrICV1bmRlZiAlZGVmc3RyICVkZWZ0b2sgJWFzc2lnbiAlc3RyY2F0ICVzdHJsZW4gJXN1YnN0ciAlcm90YXRlICVlbGlmICVlbHNlICVlbmRpZiAnICtcbiAgICAgICAgJyVpZiAlaWZtYWNybyAlaWZjdHggJWlmaWRuICVpZmlkbmkgJWlmaWQgJWlmbnVtICVpZnN0ciAlaWZ0b2tlbiAlaWZlbXB0eSAlaWZlbnYgJWVycm9yICV3YXJuaW5nICVmYXRhbCAlcmVwICcgK1xuICAgICAgICAnJWVuZHJlcCAlaW5jbHVkZSAlcHVzaCAlcG9wICVyZXBsICVwYXRoc2VhcmNoICVkZXBlbmQgJXVzZSAlYXJnICVzdGFja3NpemUgJWxvY2FsICVsaW5lICVjb21tZW50ICVlbmRjb21tZW50ICcgK1xuICAgICAgICAnLm5vbGlzdCAnICtcbiAgICAgICAgJ19fRklMRV9fIF9fTElORV9fIF9fU0VDVF9fICBfX0JJVFNfXyBfX09VVFBVVF9GT1JNQVRfXyBfX0RBVEVfXyBfX1RJTUVfXyBfX0RBVEVfTlVNX18gX19USU1FX05VTV9fICcgK1xuICAgICAgICAnX19VVENfREFURV9fIF9fVVRDX1RJTUVfXyBfX1VUQ19EQVRFX05VTV9fIF9fVVRDX1RJTUVfTlVNX18gIF9fUEFTU19fIHN0cnVjIGVuZHN0cnVjIGlzdHJ1YyBhdCBpZW5kICcgK1xuICAgICAgICAnYWxpZ24gYWxpZ25iIHNlY3RhbGlnbiBkYXogbm9kYXogdXAgZG93biB6ZXJvIGRlZmF1bHQgb3B0aW9uIGFzc3VtZSBwdWJsaWMgJyArXG5cbiAgICAgICAgJ2JpdHMgdXNlMTYgdXNlMzIgdXNlNjQgZGVmYXVsdCBzZWN0aW9uIHNlZ21lbnQgYWJzb2x1dGUgZXh0ZXJuIGdsb2JhbCBjb21tb24gY3B1IGZsb2F0ICcgK1xuICAgICAgICAnX191dGYxNl9fIF9fdXRmMTZsZV9fIF9fdXRmMTZiZV9fIF9fdXRmMzJfXyBfX3V0ZjMybGVfXyBfX3V0ZjMyYmVfXyAnICtcbiAgICAgICAgJ19fZmxvYXQ4X18gX19mbG9hdDE2X18gX19mbG9hdDMyX18gX19mbG9hdDY0X18gX19mbG9hdDgwbV9fIF9fZmxvYXQ4MGVfXyBfX2Zsb2F0MTI4bF9fIF9fZmxvYXQxMjhoX18gJyArXG4gICAgICAgICdfX0luZmluaXR5X18gX19RTmFOX18gX19TTmFOX18gSW5mIE5hTiBRTmFOIFNOYU4gZmxvYXQ4IGZsb2F0MTYgZmxvYXQzMiBmbG9hdDY0IGZsb2F0ODBtIGZsb2F0ODBlICcgK1xuICAgICAgICAnZmxvYXQxMjhsIGZsb2F0MTI4aCBfX0ZMT0FUX0RBWl9fIF9fRkxPQVRfUk9VTkRfXyBfX0ZMT0FUX18nXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnOycsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIC8vIEZsb2F0IG51bWJlciBhbmQgeDg3IEJDRFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzooWzAtOV1bMC05X10qKT9cXFxcLlswLTlfXSooPzpbZUVdWystXT9bMC05X10rKT98JyArXG4gICAgICAgICAgICAgICAgICAgJygwW1h4XSk/WzAtOV1bMC05X10qXFxcXC4/WzAtOV9dKig/OltwUF0oPzpbKy1dP1swLTlfXSspPyk/KVxcXFxiJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG5cbiAgICAgICAgICAvLyBIZXggbnVtYmVyIGluICRcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXCRbMC05XVswLTlBLUZhLWZdKicsIHJlbGV2YW5jZTogMCB9LFxuXG4gICAgICAgICAgLy8gTnVtYmVyIGluIEgsRCxULFEsTyxCLFkgc3VmZml4XG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiKD86WzAtOUEtRmEtZl1bMC05QS1GYS1mX10qW0hoXXxbMC05XVswLTlfXSpbRGRUdF0/fFswLTddWzAtN19dKltRcU9vXXxbMC0xXVswLTFfXSpbQmJZeV0pXFxcXGInIH0sXG5cbiAgICAgICAgICAvLyBOdW1iZXIgaW4gWCxELFQsUSxPLEIsWSBwcmVmaXhcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIoPzowW1h4XVswLTlBLUZhLWZfXSt8MFtEZFR0XVswLTlfXSt8MFtRcU9vXVswLTdfXSt8MFtCYll5XVswLTFfXSspXFxcXGInfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gRG91YmxlIHF1b3RlIHN0cmluZ1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAvLyBTaW5nbGUtcXVvdGVkIHN0cmluZ1xuICAgICAgICAgIHsgYmVnaW46ICdcXCcnLCBlbmQ6ICdbXlxcXFxcXFxcXVxcJycgfSxcbiAgICAgICAgICAvLyBCYWNrcXVvdGVkIHN0cmluZ1xuICAgICAgICAgIHsgYmVnaW46ICdgJywgZW5kOiAnW15cXFxcXFxcXF1gJyB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAvLyBHbG9iYWwgbGFiZWwgYW5kIGxvY2FsIGxhYmVsXG4gICAgICAgICAgeyBiZWdpbjogJ15cXFxccypbQS1aYS16Ll8/XVtBLVphLXowLTlfJCNAfi4/XSooOnxcXFxccytsYWJlbCknIH0sXG4gICAgICAgICAgLy8gTWFjcm8tbG9jYWwgbGFiZWxcbiAgICAgICAgICB7IGJlZ2luOiAnXlxcXFxzKiUlW0EtWmEtejAtOV8kI0B+Lj9dKjonIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gTWFjcm8gcGFyYW1ldGVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgYmVnaW46ICclWzAtOV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gTWFjcm8gcGFyYW1ldGVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgYmVnaW46ICclIVxcUysnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL15cXHMqXFwuW1xcd18tXSsvXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEJVSUxUSU5fTU9EVUxFUyA9XG4gICAgJ09iamVjdExvYWRlciBBbmltYXRlIE1vdmllQ3JlZGl0cyBTbGlkZXMgRmlsdGVycyBTaGFkaW5nIE1hdGVyaWFscyBMZW5zRmxhcmUgTWFwcGluZyBWTENBdWRpb1ZpZGVvICcgK1xuICAgICdTdGVyZW9EZWNvZGVyIFBvaW50Q2xvdWQgTmV0d29ya0FjY2VzcyBSZW1vdGVDb250cm9sIFJlZ0V4cCBDaHJvbWFLZXkgU25vd2ZhbGwgTm9kZUpTIFNwZWVjaCBDaGFydHMnO1xuXG4gIHZhciBYTF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2lmIHRoZW4gZWxzZSBkbyB3aGlsZSB1bnRpbCBmb3IgbG9vcCBpbXBvcnQgd2l0aCBpcyBhcyB3aGVyZSB3aGVuIGJ5IGRhdGEgY29uc3RhbnQgJyArXG4gICAgICAnaW50ZWdlciByZWFsIHRleHQgbmFtZSBib29sZWFuIHN5bWJvbCBpbmZpeCBwcmVmaXggcG9zdGZpeCBibG9jayB0cmVlJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ3RydWUgZmFsc2UgbmlsJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdpbiBtb2QgcmVtIGFuZCBvciB4b3Igbm90IGFicyBzaWduIGZsb29yIGNlaWwgc3FydCBzaW4gY29zIHRhbiBhc2luICcgK1xuICAgICAgJ2Fjb3MgYXRhbiBleHAgZXhwbTEgbG9nIGxvZzIgbG9nMTAgbG9nMXAgcGkgYXQgdGV4dF9sZW5ndGggdGV4dF9yYW5nZSAnICtcbiAgICAgICd0ZXh0X2ZpbmQgdGV4dF9yZXBsYWNlIGNvbnRhaW5zIHBhZ2Ugc2xpZGUgYmFzaWNfc2xpZGUgdGl0bGVfc2xpZGUgJyArXG4gICAgICAndGl0bGUgc3VidGl0bGUgZmFkZV9pbiBmYWRlX291dCBmYWRlX2F0IGNsZWFyX2NvbG9yIGNvbG9yIGxpbmVfY29sb3IgJyArXG4gICAgICAnbGluZV93aWR0aCB0ZXh0dXJlX3dyYXAgdGV4dHVyZV90cmFuc2Zvcm0gdGV4dHVyZSBzY2FsZV8/eCBzY2FsZV8/eSAnICtcbiAgICAgICdzY2FsZV8/ej8gdHJhbnNsYXRlXz94IHRyYW5zbGF0ZV8/eSB0cmFuc2xhdGVfP3o/IHJvdGF0ZV8/eCByb3RhdGVfP3kgJyArXG4gICAgICAncm90YXRlXz96PyByZWN0YW5nbGUgY2lyY2xlIGVsbGlwc2Ugc3BoZXJlIHBhdGggbGluZV90byBtb3ZlX3RvICcgK1xuICAgICAgJ3F1YWRfdG8gY3VydmVfdG8gdGhlbWUgYmFja2dyb3VuZCBjb250ZW50cyBsb2NhbGx5IHRpbWUgbW91c2VfP3ggJyArXG4gICAgICAnbW91c2VfP3kgbW91c2VfYnV0dG9ucyAnICtcbiAgICAgIEJVSUxUSU5fTU9EVUxFU1xuICB9O1xuXG4gIHZhciBET1VCTEVfUVVPVEVfVEVYVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsIGlsbGVnYWw6ICdcXFxcbidcbiAgfTtcbiAgdmFyIFNJTkdMRV9RVU9URV9URVhUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLCBpbGxlZ2FsOiAnXFxcXG4nXG4gIH07XG4gIHZhciBMT05HX1RFWFQgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJzw8JywgZW5kOiAnPj4nXG4gIH07XG4gIHZhciBCQVNFRF9OVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJ1swLTldKyNbMC05QS1aX10rKFxcXFwuWzAtOS1BLVpfXSspPyM/KFtFZV1bKy1dP1swLTldKyk/J1xuICB9O1xuICB2YXIgSU1QT1JUID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICdpbXBvcnQnLCBlbmQ6ICckJyxcbiAgICBrZXl3b3JkczogWExfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtET1VCTEVfUVVPVEVfVEVYVF1cbiAgfTtcbiAgdmFyIEZVTkNUSU9OX0RFRklOSVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGJlZ2luOiAvW2Etel1bXlxcbl0qLT4vLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvLT4vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7c3RhcnRzOiB7XG4gICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogWExfS0VZV09SRFNcbiAgICAgIH19KVxuICAgIF1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RhbyddLFxuICAgIGxleGVtZXM6IC9bYS16QS1aXVthLXpBLVowLTlfP10qLyxcbiAgICBrZXl3b3JkczogWExfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBET1VCTEVfUVVPVEVfVEVYVCxcbiAgICBTSU5HTEVfUVVPVEVfVEVYVCxcbiAgICBMT05HX1RFWFQsXG4gICAgRlVOQ1RJT05fREVGSU5JVElPTixcbiAgICBJTVBPUlQsXG4gICAgQkFTRURfTlVNQkVSLFxuICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSAnZm9yIGxldCBpZiB3aGlsZSB0aGVuIGVsc2UgcmV0dXJuIHdoZXJlIGdyb3VwIGJ5IHhxdWVyeSBlbmNvZGluZyB2ZXJzaW9uJyArXG4gICAgJ21vZHVsZSBuYW1lc3BhY2UgYm91bmRhcnktc3BhY2UgcHJlc2VydmUgc3RyaXAgZGVmYXVsdCBjb2xsYXRpb24gYmFzZS11cmkgb3JkZXJpbmcnICtcbiAgICAnY29weS1uYW1lc3BhY2VzIG9yZGVyIGRlY2xhcmUgaW1wb3J0IHNjaGVtYSBuYW1lc3BhY2UgZnVuY3Rpb24gb3B0aW9uIGluIGFsbG93aW5nIGVtcHR5JyArXG4gICAgJ2F0IHR1bWJsaW5nIHdpbmRvdyBzbGlkaW5nIHdpbmRvdyBzdGFydCB3aGVuIG9ubHkgZW5kIHdoZW4gcHJldmlvdXMgbmV4dCBzdGFibGUgYXNjZW5kaW5nJyArXG4gICAgJ2Rlc2NlbmRpbmcgZW1wdHkgZ3JlYXRlc3QgbGVhc3Qgc29tZSBldmVyeSBzYXRpc2ZpZXMgc3dpdGNoIGNhc2UgdHlwZXN3aXRjaCB0cnkgY2F0Y2ggYW5kJyArXG4gICAgJ29yIHRvIHVuaW9uIGludGVyc2VjdCBpbnN0YW5jZSBvZiB0cmVhdCBhcyBjYXN0YWJsZSBjYXN0IG1hcCBhcnJheSBkZWxldGUgaW5zZXJ0IGludG8nICtcbiAgICAncmVwbGFjZSB2YWx1ZSByZW5hbWUgY29weSBtb2RpZnkgdXBkYXRlJztcbiAgdmFyIExJVEVSQUwgPSAnZmFsc2UgdHJ1ZSB4czpzdHJpbmcgeHM6aW50ZWdlciBlbGVtZW50IGl0ZW0geHM6ZGF0ZSB4czpkYXRldGltZSB4czpmbG9hdCB4czpkb3VibGUgeHM6ZGVjaW1hbCBRTmFtZSB4czphbnlVUkkgeHM6bG9uZyB4czppbnQgeHM6c2hvcnQgeHM6Ynl0ZSBhdHRyaWJ1dGUnO1xuICB2YXIgVkFSID0ge1xuICAgIGJlZ2luOiAvXFwkW2EtekEtWjAtOVxcLV0rL1xuICB9O1xuXG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJyhcXFxcYjBbMC03X10rKXwoXFxcXGIweFswLTlhLWZBLUZfXSspfChcXFxcYlsxLTldWzAtOV9dKihcXFxcLlswLTlfXSspPyl8WzBfXVxcXFxiJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1wiLywgZW5kOiAvXCIvLCBjb250YWluczogW3tiZWdpbjogL1wiXCIvLCByZWxldmFuY2U6IDB9XX0sXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy8sIGNvbnRhaW5zOiBbe2JlZ2luOiAvJycvLCByZWxldmFuY2U6IDB9XX1cbiAgICBdXG4gIH07XG5cbiAgdmFyIEFOTk9UQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICclXFxcXHcrJ1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0ge1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIGJlZ2luOiAnXFxcXCg6JywgZW5kOiAnOlxcXFwpJyxcbiAgICByZWxldmFuY2U6IDEwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsIGJlZ2luOiAnQFxcXFx3KydcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE1FVEhPRCA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9J1xuICB9O1xuXG4gIHZhciBDT05UQUlOUyA9IFtcbiAgICBWQVIsXG4gICAgU1RSSU5HLFxuICAgIE5VTUJFUixcbiAgICBDT01NRU5ULFxuICAgIEFOTk9UQVRJT04sXG4gICAgTUVUSE9EXG4gIF07XG4gIE1FVEhPRC5jb250YWlucyA9IENPTlRBSU5TO1xuXG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3hwYXRoJywgJ3hxJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAgbGV4ZW1lczogL1thLXpBLVpcXCRdW2EtekEtWjAtOV86XFwtXSovLFxuICAgIGlsbGVnYWw6IC8ocHJvYyl8KGFic3RyYWN0KXwoZXh0ZW5kcyl8KHVudGlsKXwoIykvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBDT05UQUlOU1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ2JcIicsIGVuZDogJ1wiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdiXFwnJywgZW5kOiAnXFwnJ1xuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KVxuICAgIF1cbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHt2YXJpYW50czogW2hsanMuQklOQVJZX05VTUJFUl9NT0RFLCBobGpzLkNfTlVNQkVSX01PREVdfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3plcCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6XG4gICAgICAnYW5kIGluY2x1ZGVfb25jZSBsaXN0IGFic3RyYWN0IGdsb2JhbCBwcml2YXRlIGVjaG8gaW50ZXJmYWNlIGFzIHN0YXRpYyBlbmRzd2l0Y2ggJyArXG4gICAgICAnYXJyYXkgbnVsbCBpZiBlbmR3aGlsZSBvciBjb25zdCBmb3IgZW5kZm9yZWFjaCBzZWxmIHZhciBsZXQgd2hpbGUgaXNzZXQgcHVibGljICcgK1xuICAgICAgJ3Byb3RlY3RlZCBleGl0IGZvcmVhY2ggdGhyb3cgZWxzZWlmIGluY2x1ZGUgX19GSUxFX18gZW1wdHkgcmVxdWlyZV9vbmNlIGRvIHhvciAnICtcbiAgICAgICdyZXR1cm4gcGFyZW50IGNsb25lIHVzZSBfX0NMQVNTX18gX19MSU5FX18gZWxzZSBicmVhayBwcmludCBldmFsIG5ldyAnICtcbiAgICAgICdjYXRjaCBfX01FVEhPRF9fIGNhc2UgZXhjZXB0aW9uIGRlZmF1bHQgZGllIHJlcXVpcmUgX19GVU5DVElPTl9fICcgK1xuICAgICAgJ2VuZGRlY2xhcmUgZmluYWwgdHJ5IHN3aXRjaCBjb250aW51ZSBlbmRmb3IgZW5kaWYgZGVjbGFyZSB1bnNldCB0cnVlIGZhbHNlICcgK1xuICAgICAgJ3RyYWl0IGdvdG8gaW5zdGFuY2VvZiBpbnN0ZWFkb2YgX19ESVJfXyBfX05BTUVTUEFDRV9fICcgK1xuICAgICAgJ3lpZWxkIGZpbmFsbHkgaW50IHVpbnQgbG9uZyB1bG9uZyBjaGFyIHVjaGFyIGRvdWJsZSBmbG9hdCBib29sIGJvb2xlYW4gc3RyaW5nJyArXG4gICAgICAnbGlrZWx5IHVubGlrZWx5JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKicsXG4gICAgICAgICdcXFxcKi8nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ19faGFsdF9jb21waWxlci4rPzsnLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgIGtleXdvcmRzOiAnX19oYWx0X2NvbXBpbGVyJyxcbiAgICAgICAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICc8PDxbXFwnXCJdP1xcXFx3K1tcXCdcIl0/JCcsIGVuZDogJ15cXFxcdys7JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBzd2FsbG93IGNvbXBvc2VkIGlkZW50aWZpZXJzIHRvIGF2b2lkIHBhcnNpbmcgdGhlbSBhcyBrZXl3b3Jkc1xuICAgICAgICBiZWdpbjogLyg6OnwtPikrW2EtekEtWl9cXHg3Zi1cXHhmZl1bYS16QS1aMC05X1xceDdmLVxceGZmXSovXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogL1s7e10vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXCR8XFxcXFt8JScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgTlVNQkVSXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogL1s6XFwoXFwkXCJdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduYW1lc3BhY2UnLCBlbmQ6ICc7JyxcbiAgICAgICAgaWxsZWdhbDogL1tcXC4nXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAndXNlJywgZW5kOiAnOycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJz0+JyAvLyBObyBtYXJrdXAsIGp1c3QgYSByZWxldmFuY2UgYm9vc3RlclxuICAgICAgfSxcbiAgICAgIFNUUklORyxcbiAgICAgIE5VTUJFUlxuICAgIF1cbiAgfTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbG93ID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9jb3JlLmpzJyk7XG5cbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCcxYycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzLzFjJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FibmYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hYm5mJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FjY2Vzc2xvZycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FjY2Vzc2xvZycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhY3Rpb25zY3JpcHQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY3Rpb25zY3JpcHQnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYWRhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYWRhJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FwYWNoZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FwYWNoZScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcHBsZXNjcmlwdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FwcGxlc2NyaXB0JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NwcCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NwcCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcmR1aW5vJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXJkdWlubycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcm1hc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcm1hc20nKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgneG1sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveG1sJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FzY2lpZG9jJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXNjaWlkb2MnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXNwZWN0aicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FzcGVjdGonKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXV0b2hvdGtleScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9ob3RrZXknKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXV0b2l0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXV0b2l0JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F2cmFzbScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F2cmFzbScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhd2snLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hd2snKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXhhcHRhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXhhcHRhJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2Jhc2gnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9iYXNoJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2Jhc2ljJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYmFzaWMnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYm5mJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYm5mJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2JyYWluZnVjaycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2JyYWluZnVjaycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjYWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jYWwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY2FwbnByb3RvJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2FwbnByb3RvJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NleWxvbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NleWxvbicpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjbGVhbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NsZWFuJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2Nsb2p1cmUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbG9qdXJlJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2Nsb2p1cmUtcmVwbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nsb2p1cmUtcmVwbCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjbWFrZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NtYWtlJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NvZmZlZXNjcmlwdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NvZmZlZXNjcmlwdCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjb3EnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb3EnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY29zJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29zJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NybXNoJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3Jtc2gnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3J5c3RhbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NyeXN0YWwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjc3AnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jc3AnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3NzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3NzJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2QnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21hcmtkb3duJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWFya2Rvd24nKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZGFydCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RhcnQnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZGVscGhpJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZGVscGhpJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RpZmYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kaWZmJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RqYW5nbycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RqYW5nbycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkbnMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kbnMnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZG9ja2VyZmlsZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RvY2tlcmZpbGUnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZG9zJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9zJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RzY29uZmlnJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHNjb25maWcnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZHRzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHRzJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2R1c3QnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kdXN0JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2VibmYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lYm5mJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2VsaXhpcicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VsaXhpcicpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlbG0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbG0nKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncnVieScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1YnknKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZXJiJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJiJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2VybGFuZy1yZXBsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJsYW5nLXJlcGwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZXJsYW5nJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJsYW5nJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2V4Y2VsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXhjZWwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZml4JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZml4JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2ZsaXgnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9mbGl4JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2ZvcnRyYW4nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9mb3J0cmFuJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2ZzaGFycCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZzaGFycCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdnYW1zJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2FtcycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdnYXVzcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dhdXNzJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2djb2RlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2NvZGUnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ2hlcmtpbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2doZXJraW4nKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ2xzbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dsc2wnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ28nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdnb2xvJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ29sbycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdncmFkbGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ncmFkbGUnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ3Jvb3Z5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3Jvb3Z5JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2hhbWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYW1sJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2hhbmRsZWJhcnMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYW5kbGViYXJzJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2hhc2tlbGwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYXNrZWxsJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2hheGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYXhlJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2hzcCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hzcCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdodG1sYmFycycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0bWxiYXJzJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2h0dHAnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9odHRwJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2h5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHknKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaW5mb3JtNycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2luZm9ybTcnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaW5pJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaW5pJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2lycGY5MCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2lycGY5MCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdqYXZhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamF2YScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdqYXZhc2NyaXB0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamF2YXNjcmlwdCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdqYm9zcy1jbGknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYm9zcy1jbGknKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnanNvbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2pzb24nKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnanVsaWEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qdWxpYScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdqdWxpYS1yZXBsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvanVsaWEtcmVwbCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdrb3RsaW4nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9rb3RsaW4nKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbGFzc28nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sYXNzbycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsZGlmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGRpZicpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsZWFmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGVhZicpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsZXNzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGVzcycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsaXNwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGlzcCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsaXZlY29kZXNlcnZlcicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpdmVjb2Rlc2VydmVyJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xpdmVzY3JpcHQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9saXZlc2NyaXB0JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xsdm0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sbHZtJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xzbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xzbCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsdWEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sdWEnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbWFrZWZpbGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYWtlZmlsZScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXRoZW1hdGljYScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hdGhlbWF0aWNhJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21hdGxhYicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hdGxhYicpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXhpbWEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXhpbWEnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbWVsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWVsJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21lcmN1cnknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tZXJjdXJ5JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21pcHNhc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXBzYXNtJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21pemFyJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWl6YXInKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncGVybCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BlcmwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbW9qb2xpY2lvdXMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tb2pvbGljaW91cycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtb25rZXknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tb25rZXknKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbW9vbnNjcmlwdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21vb25zY3JpcHQnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbjFxbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL24xcWwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbmdpbngnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uZ2lueCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCduaW1yb2QnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uaW1yb2QnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbml4JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbml4JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ25zaXMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uc2lzJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ29iamVjdGl2ZWMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vYmplY3RpdmVjJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ29jYW1sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb2NhbWwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnb3BlbnNjYWQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vcGVuc2NhZCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdveHlnZW5lJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb3h5Z2VuZScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwYXJzZXIzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGFyc2VyMycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwZicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BmJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3BocCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BocCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwb255JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcG9ueScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwb3dlcnNoZWxsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcG93ZXJzaGVsbCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwcm9jZXNzaW5nJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvY2Vzc2luZycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwcm9maWxlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvZmlsZScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwcm9sb2cnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9sb2cnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncHJvdG9idWYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm90b2J1ZicpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwdXBwZXQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wdXBwZXQnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncHVyZWJhc2ljJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHVyZWJhc2ljJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3B5dGhvbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3B5dGhvbicpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdxJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdxbWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9xbWwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3InKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncmliJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcmliJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3JvYm9jb25mJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcm9ib2NvbmYnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncm91dGVyb3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yb3V0ZXJvcycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdyc2wnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yc2wnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncnVsZXNsYW5ndWFnZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1bGVzbGFuZ3VhZ2UnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncnVzdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1c3QnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc2NhbGEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2FsYScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzY2hlbWUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2hlbWUnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc2NpbGFiJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2NpbGFiJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Njc3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY3NzJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NoZWxsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2hlbGwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc21hbGknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWFsaScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzbWFsbHRhbGsnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWFsbHRhbGsnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc21sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21sJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NxZicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NxZicpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzcWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zcWwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3RhbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N0YW4nKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3RhdGEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGF0YScpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzdGVwMjEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGVwMjEnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3R5bHVzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3R5bHVzJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3N1YnVuaXQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdWJ1bml0JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3N3aWZ0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3dpZnQnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndGFnZ2Vyc2NyaXB0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGFnZ2Vyc2NyaXB0JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3lhbWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy95YW1sJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3RhcCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RhcCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0Y2wnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90Y2wnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndGV4JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGV4JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3RocmlmdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RocmlmdCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0cCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RwJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3R3aWcnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90d2lnJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3R5cGVzY3JpcHQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90eXBlc2NyaXB0JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3ZhbGEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YWxhJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3ZibmV0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmJuZXQnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndmJzY3JpcHQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YnNjcmlwdCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd2YnNjcmlwdC1odG1sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmJzY3JpcHQtaHRtbCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd2ZXJpbG9nJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmVyaWxvZycpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd2aGRsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmhkbCcpKTtcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd2aW0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92aW0nKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgneDg2YXNtJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveDg2YXNtJykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3hsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveGwnKSk7XG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgneHF1ZXJ5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveHF1ZXJ5JykpO1xubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3plcGhpcicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3plcGhpcicpKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IGF0dGFjaGVyO1xuXG52YXIgX2xvd2xpZ2h0ID0gcmVxdWlyZSgnbG93bGlnaHQnKTtcblxudmFyIF9sb3dsaWdodDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sb3dsaWdodCk7XG5cbnZhciBfdW5pc3RVdGlsVmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0Jyk7XG5cbnZhciBfdW5pc3RVdGlsVmlzaXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdW5pc3RVdGlsVmlzaXQpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBhdHRhY2hlcigpIHtcbiAgICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge30sXG4gICAgICAgIGluY2x1ZGUgPSBfcmVmLmluY2x1ZGUsXG4gICAgICAgIGV4Y2x1ZGUgPSBfcmVmLmV4Y2x1ZGU7XG5cbiAgICBmdW5jdGlvbiB2aXNpdG9yKG5vZGUpIHtcbiAgICAgICAgdmFyIGxhbmcgPSBub2RlLmxhbmc7XG5cbiAgICAgICAgaWYgKCFsYW5nIHx8IGluY2x1ZGUgJiYgIX5pbmNsdWRlLmluZGV4T2YobGFuZykgfHwgZXhjbHVkZSAmJiB+ZXhjbHVkZS5pbmRleE9mKGxhbmcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGF0YSA9IG5vZGUuZGF0YTtcblxuXG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgbm9kZS5kYXRhID0gZGF0YSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRhdGEuaENoaWxkcmVuID0gX2xvd2xpZ2h0Mi5kZWZhdWx0LmhpZ2hsaWdodChsYW5nLCBub2RlLnZhbHVlKS52YWx1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBkYXRhLmhDaGlsZHJlbiA9IF9sb3dsaWdodDIuZGVmYXVsdC5oaWdobGlnaHRBdXRvKG5vZGUudmFsdWUpLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YS5oUHJvcGVydGllcyA9IGRhdGEuaFByb3BlcnRpZXMgfHwge307XG4gICAgICAgIGRhdGEuaFByb3BlcnRpZXMuY2xhc3NOYW1lID0gWydobGpzJ10uY29uY2F0KGRhdGEuaFByb3BlcnRpZXMuY2xhc3NOYW1lIHx8IFtdLCBbJ2xhbmd1YWdlLScgKyBsYW5nXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhc3QpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfdW5pc3RVdGlsVmlzaXQyLmRlZmF1bHQpKGFzdCwgJ2NvZGUnLCB2aXNpdG9yKTtcbiAgICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiY29uc3QgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0Jyk7XG5cbi8qKlxuICogR2l2ZW4gdGhlIE1EQVNUIGFzdCwgbG9vayBmb3IgYWxsIGZlbmNlZCBCbG9ja3F1b3RlXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFzdFxuICogQHBhcmFtIHt2RmlsZX0gdkZpbGVcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiB2aXNpdEJsb2NrcXVvdGUoYXN0KSB7XG4gIHJldHVybiB2aXNpdChhc3QsICdibG9ja3F1b3RlJywgKG5vZGUsIGluZGV4LCBwYXJlbnQpID0+IHtcbiAgICBjb25zdCBmaXJzdE5vZGUgPSBub2RlLmNoaWxkcmVuWzBdO1xuXG4gICAgaWYgKGZpcnN0Tm9kZS50eXBlID09PSAncGFyYWdyYXBoJykge1xuICAgICAgaWYgKGZpcnN0Tm9kZS5jaGlsZHJlblswXS50eXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgY29uc3QgZmlyc3RDaGlsZCA9IGZpcnN0Tm9kZS5jaGlsZHJlblswXTtcbiAgICAgICAgaWYgKGZpcnN0Q2hpbGQudmFsdWUuc3RhcnRzV2l0aCgnIXNlY3JldCcpKSB7XG4gICAgICAgICAgbm9kZS50eXBlID0gJ2Rpdic7XG4gICAgICAgICAgZmlyc3RDaGlsZC52YWx1ZSA9IGZpcnN0Q2hpbGQudmFsdWUuc3Vic3RyKDcpO1xuICAgICAgICAgIGxldCBzdW0gPSAnJztcbiAgICAgICAgICBpZiAoZmlyc3RDaGlsZC52YWx1ZS5pbmRleE9mKCdcXG4nKSA+PSAwKSB7XG4gICAgICAgICAgICBzdW0gPSBmaXJzdENoaWxkLnZhbHVlLnN1YnN0cigwLFxuICAgICAgICAgICAgICBmaXJzdENoaWxkLnZhbHVlLmluZGV4T2YoJ1xcbicpKTtcbiAgICAgICAgICAgIGZpcnN0Q2hpbGQudmFsdWUgPSBmaXJzdENoaWxkLnZhbHVlLnN1YnN0cihcbiAgICAgICAgICAgICAgZmlyc3RDaGlsZC52YWx1ZS5pbmRleE9mKCdcXG4nKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1bSA9IGZpcnN0Q2hpbGQudmFsdWU7XG4gICAgICAgICAgICBmaXJzdENoaWxkLnZhbHVlID0gJyc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2VjcmV0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ3NwZWNpYWwtYm94LXNlY3JldCcsXG4gICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3N1bW1hcnknLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGhOYW1lOiAnc3VtbWFyeScsXG4gICAgICAgICAgICAgICAgICBoQ2hpbGRyZW46IFt7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHN1bSB8fCAnU3BvaWxlcicsXG4gICAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaE5hbWU6ICdkZXRhaWxzJyxcbiAgICAgICAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzcGVjaWFsLWJveCBzZWNyZXQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnNwbGljZShpbmRleCwgMSwgc2VjcmV0KTtcblxuICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9IGVsc2UgaWYgKGZpcnN0Q2hpbGQudmFsdWUuc3RhcnRzV2l0aCgnIWluZm9ybWF0aW9uJykgfHxcbiAgICAgICAgICAgIGZpcnN0Q2hpbGQudmFsdWUuc3RhcnRzV2l0aCgnIWdvb2QnKSB8fFxuICAgICAgICAgICAgZmlyc3RDaGlsZC52YWx1ZS5zdGFydHNXaXRoKCchYmFkJykgfHxcbiAgICAgICAgICAgIGZpcnN0Q2hpbGQudmFsdWUuc3RhcnRzV2l0aCgnIWNvbW1lbnQnKSB8fFxuICAgICAgICAgICAgZmlyc3RDaGlsZC52YWx1ZS5zdGFydHNXaXRoKCchYXR0ZW50aW9uJykgfHxcbiAgICAgICAgICAgIGZpcnN0Q2hpbGQudmFsdWUuc3RhcnRzV2l0aCgnIXF1ZXN0aW9uJykpIHtcbiAgICAgICAgICBub2RlLnR5cGUgPSAnZGl2JztcbiAgICAgICAgICBub2RlLmRhdGEgPSB7XG4gICAgICAgICAgICBoTmFtZTogJ2RpdicsXG4gICAgICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzcGVjaWFsLWJveC1jb250ZW50JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgICBsZXQgdHlwZSA9ICcnO1xuICAgICAgICAgIGlmIChmaXJzdENoaWxkLnZhbHVlLmluZGV4T2YoJ1xcbicpID4gMCkge1xuICAgICAgICAgICAgdHlwZSA9IGZpcnN0Q2hpbGQudmFsdWUuc3Vic3RyKDEsIGZpcnN0Q2hpbGQudmFsdWUuaW5kZXhPZignXFxuJykpO1xuICAgICAgICAgICAgZmlyc3RDaGlsZC52YWx1ZSA9IGZpcnN0Q2hpbGQudmFsdWUuc3Vic3RyKGZpcnN0Q2hpbGQudmFsdWUuaW5kZXhPZignXFxuJykpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0eXBlID0gZmlyc3RDaGlsZC52YWx1ZS5zdWJzdHIoMSk7XG4gICAgICAgICAgICBmaXJzdENoaWxkLnZhbHVlID0gJyc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYm94ID0ge1xuICAgICAgICAgICAgdHlwZTogJ3NwZWNpYWwtYm94LWRpdicsXG4gICAgICAgICAgICBjaGlsZHJlbjogW25vZGVdLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBoTmFtZTogJ2RpdicsXG4gICAgICAgICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBgc3BlY2lhbC1ib3ggJHt0eXBlfWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxLCBib3gpO1xuXG4gICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRyYW5zZm9ybWVyIHdoaWNoIGFjc3Qgb24gdGhlIE1EQVNUIHRyZWUgYW5kIGdpdmVuIFZGaWxlLlxuICpcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlmaWVkanMvdW5pZmllZCNmdW5jdGlvbi10cmFuc2Zvcm1lcm5vZGUtZmlsZS1uZXh0XG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc3ludGF4LXRyZWUvbWRhc3RcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS92ZmlsZS92ZmlsZVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIGJveCgpIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhc3QgTURBU1RcbiAgICogQHBhcmFtIHt2RmlsZX0gdkZpbGVcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbmV4dFxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gKGFzdCwgdkZpbGUsIG5leHQpIHsgLy8gVHJhbnNmb3JtZXJcbiAgICB2aXNpdEJsb2NrcXVvdGUoYXN0KTtcblxuICAgIGlmICh0eXBlb2YgbmV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIG5leHQobnVsbCwgYXN0LCB2RmlsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBib3g7XG4iLCJjb25zdCB2aXNpdCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtdmlzaXQnKTtcblxuZnVuY3Rpb24gZGVhbExhYmVsQ2hpbGRyZW4obGlzdENoaWxkKSB7XG4gIGxldCB0ID0gW107XG4gIGlmIChsaXN0Q2hpbGRbMF0udHlwZSA9PT0gJ3BhcmFncmFwaCcpIHtcbiAgICB0ID0gbGlzdENoaWxkWzBdLmNoaWxkcmVuO1xuICB9XG4gIHRbMF0udmFsdWUgPSB0WzBdLnZhbHVlLnRyaW0oKTtcbiAgaWYgKGxpc3RDaGlsZFtsaXN0Q2hpbGQubGVuZ3RoIC0gMV0udHlwZSA9PT0gJ2Jsb2NrcXVvdGUnKSB7XG4gICAgbGlzdENoaWxkW2xpc3RDaGlsZC5sZW5ndGggLSAxXS50eXBlID0gJ2Rpdic7XG4gICAgbGlzdENoaWxkW2xpc3RDaGlsZC5sZW5ndGggLSAxXS5kYXRhID0ge1xuICAgICAgaE5hbWU6ICdibG9ja3F1b3RlJyxcbiAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2hpZGVuX2Jsb2NrX3F1b3RlJyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICB0ID0gdC5jb25jYXQobGlzdENoaWxkLnNsaWNlKDEpKTtcbiAgcmV0dXJuIHQ7XG59XG5cbmZ1bmN0aW9uIHZpc2l0TGlzdChhc3QpIHtcbiAgbGV0IG5iTUMgPSAwO1xuICByZXR1cm4gdmlzaXQoYXN0LCAnbGlzdCcsIG5vZGUgPT4ge1xuICAgIGxldCBpc011bHRpcGxlQ2hvaXNlID0gdHJ1ZTtcbiAgICBsZXQgbmJRID0gMDtcbiAgICBjb25zdCB0YWIgPSBbXTtcblxuICAgIEFycmF5LmZyb20obm9kZS5jaGlsZHJlbikuZm9yRWFjaChub2RlQyA9PiB7XG4gICAgICBpZiAobm9kZUMuY2hpbGRyZW4gJiYgbm9kZUMuY2hpbGRyZW5bMF0udHlwZSA9PT0gJ3BhcmFncmFwaCcpIHtcbiAgICAgICAgaWYgKG5vZGVDLmNoaWxkcmVuWzBdLmNoaWxkcmVuICYmIG5vZGVDLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLnZhbHVlKSB7XG4gICAgICAgICAgaWYgKCd+IT0nLmluZGV4T2Yobm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWVbMF0pIDwgMCkge1xuICAgICAgICAgICAgaXNNdWx0aXBsZUNob2lzZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc011bHRpcGxlQ2hvaXNlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlzTXVsdGlwbGVDaG9pc2UgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoaXNNdWx0aXBsZUNob2lzZSkge1xuICAgICAgQXJyYXkuZnJvbShub2RlLmNoaWxkcmVuKS5mb3JFYWNoKG5vZGVDID0+IHtcbiAgICAgICAgaWYgKG5vZGVDLmNoaWxkcmVuWzBdLnR5cGUgPT09ICdwYXJhZ3JhcGgnKSB7XG4gICAgICAgICAgaWYgKG5vZGVDLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLnZhbHVlWzBdID09PSAnficpIHtcbiAgICAgICAgICAgIHRhYi5wdXNoKDAuNSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlblswXS52YWx1ZVswXSA9PT0gJyEnKSB7XG4gICAgICAgICAgICB0YWIucHVzaCgwKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFiLnB1c2goMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5vZGVDLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLnZhbHVlID0gYCR7bm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWUuc2xpY2UoMSl9XFxyYDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBub2RlLnR5cGUgPSAnbWMnO1xuICAgICAgbm9kZS5kYXRhID0ge1xuICAgICAgICBoTmFtZTogJ2ZpZWxkc2V0JyxcbiAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdtYyBjaGVjaycsXG4gICAgICAgICAgaWQ6IGBtY18ke25iTUN9YCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBub2RlLmNoaWxkcmVuID0gW3tcbiAgICAgICAgdHlwZTogJ2xpc3QtaXRlbS1tYycsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoTmFtZTogJ3VsJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IG5vZGUuY2hpbGRyZW4ubWFwKHggPT4gKHt0eXBlOiAnaW5wdXQtbGlzdC1pdGVtJyxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBoTmFtZTogJ2xpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICB7dHlwZTogJ2lucHV0LWxpc3QtaW5wdXQnLFxuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgaE5hbWU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IHguY2hlY2tlZCxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgICAgICAgICAgICBpZDogYG1jXyR7bmJNQ31fJHtuYlF9YCxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJyF+PSdbdGFiW25iUV0gKiAyXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9fSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ2lucHV0LWxpc3QtbGFiZWwnLFxuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgaE5hbWU6ICdsYWJlbCcsXG4gICAgICAgICAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIGZvcjogYG1jXyR7bmJNQ31fJHtuYlErK31gLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBkZWFsTGFiZWxDaGlsZHJlbih4LmNoaWxkcmVuKSxcbiAgICAgICAgICAgIH1dLFxuICAgICAgICB9KSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZmllbGQtYnV0dG9uJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAnaW5wdXQnLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBvbmNsaWNrOiBgY2hlY2soJ21jXyR7bmJNQ30nLFske1N0cmluZyh0YWIpfV0pYCxcbiAgICAgICAgICAgIHZhbHVlOiAnVmFsaWRhdGUnLFxuICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBuYk1DKys7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0cmFuc2Zvcm1lciB3aGljaCBhY3N0IG9uIHRoZSBNREFTVCB0cmVlIGFuZCBnaXZlbiBWRmlsZS5cbiAqXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vdW5pZmllZGpzL3VuaWZpZWQjZnVuY3Rpb24tdHJhbnNmb3JtZXJub2RlLWZpbGUtbmV4dFxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3N5bnRheC10cmVlL21kYXN0XG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vdmZpbGUvdmZpbGVcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBtdWx0aXBsZUNob2lzZSgpIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhc3QgTURBU1RcbiAgICogQHBhcmFtIHt2RmlsZX0gdkZpbGVcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbmV4dFxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gKGFzdCwgdkZpbGUsIG5leHQpIHsgLy8gVHJhbnNmb3JtZXJcbiAgICB2aXNpdExpc3QoYXN0KTtcblxuICAgIGlmICh0eXBlb2YgbmV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIG5leHQobnVsbCwgYXN0LCB2RmlsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtdWx0aXBsZUNob2lzZTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gQSB2YWxpZCBvdXRwdXQgd2hpY2ggbWVhbiBub3RoaW5nIGhhcyBiZWVuIHBhcnNlZC5cbi8vIFVzZWQgYXMgZXJyb3IgcmV0dXJuIC8gaW52YWxpZCBvdXRwdXRcblxudmFyIG5vdGhpbmdIYXBwZW5kID0ge1xuICBwcm9wOiB7XG4gICAga2V5OiB1bmRlZmluZWQsXG4gICAgY2xhc3M6IHVuZGVmaW5lZCxcbiAgICBpZDogdW5kZWZpbmVkXG4gIH0sXG4gIGVhdGVuOiAnJ1xufTtcblxuLy8gTWFpbiBmdW5jdGlvblxuZnVuY3Rpb24gcGFyc2UodmFsdWUsIGluZGV4TmV4dCkge1xuICB2YXIgbGV0c0VhdCA9ICcnO1xuICB2YXIgc3RvcE9uQnJhY2UgPSBmYWxzZTtcbiAgdmFyIGVycm9yRGV0ZWN0ZWQgPSBmYWxzZTtcblxuICB2YXIgcHJvcCA9IHsga2V5OiB1bmRlZmluZWQgLyoge30gKi8sIGNsYXNzOiB1bmRlZmluZWQgLyogW10gKi8sIGlkOiB1bmRlZmluZWQgfTtcblxuICAvKiBUaGV5IGlzIGF0IGxlYXQgb25lIGxhYmVsIGFuZCBhdCBiZXN0IHR3byAqL1xuICAvKiBla3FzZGYgPC0gb25lIGxhYmVsXG4gICAqIHFzZGZxc2ZkPXFzZGZxc2RmIDwtIHR3byAqL1xuICB2YXIgbGFiZWxGaXJzdCA9ICcnO1xuICB2YXIgbGFiZWxTZWNvbmQ7XG5cbiAgaWYgKGluZGV4TmV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaW5kZXhOZXh0ID0gMDtcbiAgfVxuXG4gIC8qIDMgdHlwZXMgOlxuICAgKiAuYXpjdiA8LSBjbGFzc1xuICAgKiAjcG9pIDwtIGlkXG4gICAqIGRmZ2g9emVydCA8LSBrZXlcbiAgICogamtqIDwtIHRoaXMgaXMgYWxzbyBhIGtleSBidXQgd2l0aCBhIHVuZGVmaW5lZCB2YWx1ZVxuICAgKiBqa2o9IDwtIHRoaXMgaXMgYWxzbyBhIGtleSBidXQgd2l0aCBhIGVtcHR5IHZhbHVlXG4gICAqL1xuICB2YXIgdHlwZTtcbiAgdmFyIGZvcmJpZGVuQ2hhcmFjdGVycyA9ICdcXG5cXHJ7fSc7XG5cbiAgLy8gQSBmdW5jdGlvbiB0aGF0IGRldGVjdCBpZiBpdCdzIHRpbWUgdG8gZW5kIHRoZSBwYXJzaW5nXG4gIHZhciBzaG91bGRTdG9wID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChpbmRleE5leHQgPj0gdmFsdWUubGVuZ3RoIHx8IGZvcmJpZGVuQ2hhcmFjdGVycy5pbmRleE9mKHZhbHVlW2luZGV4TmV4dF0pID4gLTEpIHtcbiAgICAgIGlmIChzdG9wT25CcmFjZSAmJiB2YWx1ZVtpbmRleE5leHRdICE9PSAnfScpIHtcbiAgICAgICAgZXJyb3JEZXRlY3RlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlW2luZGV4TmV4dF0gPT09ICd9JyAmJiBzdG9wT25CcmFjZTtcbiAgfTtcblxuICB2YXIgZWF0ZW4gPSAnJztcbiAgLy8gQ291cGxlIG9mIGZ1bmN0aW9ucyB0aGF0IHBhcnNlIHNhbWUga2luZHMgb2YgY2hhcmFjdGVyc1xuICAvLyBVc2VkIHRvIHBhcnNlIHNwYWNlcyBvciBpZGVudGlmaWVyc1xuICB2YXIgZWF0ID0gZnVuY3Rpb24gKGNoYXJzKSB7XG4gICAgZWF0ZW4gPSAnJztcblxuICAgIHdoaWxlIChpbmRleE5leHQgPCB2YWx1ZS5sZW5ndGggJiYgZm9yYmlkZW5DaGFyYWN0ZXJzLmluZGV4T2YodmFsdWUuY2hhckF0KGluZGV4TmV4dCkpIDwgMCAmJiBjaGFycy5pbmRleE9mKHZhbHVlLmNoYXJBdChpbmRleE5leHQpKSA+PSAwKSB7XG4gICAgICBsZXRzRWF0ICs9IHZhbHVlLmNoYXJBdChpbmRleE5leHQpO1xuICAgICAgZWF0ZW4gKz0gdmFsdWUuY2hhckF0KGluZGV4TmV4dCk7XG4gICAgICBpbmRleE5leHQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gc2hvdWxkU3RvcCgpO1xuICB9O1xuICB2YXIgZWF0VW50aWwgPSBmdW5jdGlvbiAoY2hhcnMpIHtcbiAgICBlYXRlbiA9ICcnO1xuXG4gICAgd2hpbGUgKGluZGV4TmV4dCA8IHZhbHVlLmxlbmd0aCAmJiBmb3JiaWRlbkNoYXJhY3RlcnMuaW5kZXhPZih2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSkgPCAwICYmIGNoYXJzLmluZGV4T2YodmFsdWUuY2hhckF0KGluZGV4TmV4dCkpIDwgMCkge1xuICAgICAgbGV0c0VhdCArPSB2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KTtcbiAgICAgIGVhdGVuICs9IHZhbHVlLmNoYXJBdChpbmRleE5leHQpO1xuICAgICAgaW5kZXhOZXh0Kys7XG4gICAgfVxuXG4gICAgLy8gVWdseSBidXQga2VlcCB0aGUgbWFpbiBsb29wIHJlYWRhYmxlXG4gICAgLy8gU2V0IHRoZSBsYWJlbCBpdCBzaG91bGQgc2V0XG4gICAgaWYgKGxhYmVsRmlyc3QpIHtcbiAgICAgIGxhYmVsU2Vjb25kID0gZWF0ZW47XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhYmVsRmlyc3QgPSBlYXRlbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2hvdWxkU3RvcCgpO1xuICB9O1xuXG4gIC8vIEluIHF1b3RlLCBldmVyeSBjaGFyYWN0ZXIgaXMgdmFsaWQgZXhlcHQgdGhlIHVuZXNjYXBlZCBxdW90ZXMgYW5kIENSIG9yIExGXG4gIC8vIFNhbWUgZnVuY3Rpb24gZm9yIHNpbmdsZSBhbmQgZG91YmxlIHF1b3RlXG4gIHZhciBlYXRJblF1b3RlID0gZnVuY3Rpb24gKHF1b3RlKSB7XG4gICAgZWF0ZW4gPSAnJztcbiAgICAvLyBGaXJzdCBjaGVjayBzbyB2YWx1ZVtpbmRleE5leHQtMV0gd2lsbCBhbHdheXMgYmUgdmFsaWRcbiAgICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gcXVvdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmICEocXVvdGUgPT09IHZhbHVlW2luZGV4TmV4dF0gJiYgdmFsdWVbaW5kZXhOZXh0IC0gMV0gIT09ICdcXFxcJykgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ1xcbicgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ1xccicpIHtcbiAgICAgIGxldHNFYXQgKz0gdmFsdWUuY2hhckF0KGluZGV4TmV4dCk7XG4gICAgICBlYXRlbiArPSB2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KTtcbiAgICAgIGluZGV4TmV4dCsrO1xuICAgIH1cbiAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYW4gRU9MLCB0aGVyZSBpcyBhbiBlcnJvclxuICAgIC8vIFdlIGFyZSB3YWl0aW5nIGZvciBhIHF1b3RlXG4gICAgaWYgKHZhbHVlW2luZGV4TmV4dF0gPT09ICdcXG4nIHx8IHZhbHVlW2luZGV4TmV4dF0gPT09ICdcXHInIHx8IGluZGV4TmV4dCA+PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGVycm9yRGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gVWdseSBidXQga2VlcCB0aGUgbWFpbiBsb29wIHJlYWRhYmxlXG4gICAgaWYgKGxhYmVsRmlyc3QpIHtcbiAgICAgIGxhYmVsU2Vjb25kID0gZWF0ZW4ucmVwbGFjZSgvXFxcXFwiL2csICdcIicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYWJlbEZpcnN0ID0gZWF0ZW4ucmVwbGFjZSgvXFxcXFwiL2csICdcIicpO1xuICAgIH1cblxuICAgIHJldHVybiBzaG91bGRTdG9wKCk7XG4gIH07XG5cbiAgLy8gSXQncyByZWFseSBjb21tdW4gdG8gZWF0IG9ubHkgb25lIGNoYXJhY3RlciBzbyBsZXQncyBtYWtlIGl0IGEgZnVuY3Rpb25cbiAgdmFyIGVhdE9uZSA9IGZ1bmN0aW9uIChjKSB7XG4gICAgLy8gTWlhbSAhXG4gICAgbGV0c0VhdCArPSBjO1xuICAgIGluZGV4TmV4dCsrO1xuXG4gICAgcmV0dXJuIHNob3VsZFN0b3AoKTtcbiAgfTtcblxuICB2YXIgYWRkQXR0cmlidXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnaWQnOlxuICAgICAgICAvLyBJRFxuICAgICAgICBwcm9wLmlkID0gcHJvcC5pZCB8fCBsYWJlbEZpcnN0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NsYXNzJzpcbiAgICAgICAgaWYgKCFwcm9wLmNsYXNzKSB7XG4gICAgICAgICAgcHJvcC5jbGFzcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3AuY2xhc3MuaW5kZXhPZihsYWJlbEZpcnN0KSA8IDApIHtcbiAgICAgICAgICBwcm9wLmNsYXNzLnB1c2gobGFiZWxGaXJzdCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2tleSc6XG4gICAgICAgIGlmICghbGFiZWxGaXJzdCkge1xuICAgICAgICAgIHJldHVybiBub3RoaW5nSGFwcGVuZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFiZWxGaXJzdCAhPT0gJ2lkJyAmJiBsYWJlbEZpcnN0ICE9PSAnY2xhc3MnKSB7XG4gICAgICAgICAgcHJvcFtsYWJlbEZpcnN0XSA9IGxhYmVsU2Vjb25kO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gICAgdHlwZSA9IHVuZGVmaW5lZDtcbiAgICBsYWJlbEZpcnN0ID0gJyc7XG4gICAgbGFiZWxTZWNvbmQgPSB1bmRlZmluZWQ7XG4gIH07XG5cbiAgLyoqICoqKioqKioqKioqKioqKioqKioqKioqIFN0YXJ0IHBhcnNpbmcgKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbiAgLy8gTGV0J3MgY2hlY2sgZm9yIHRyZWxsaW5nIHNwYWNlcyBmaXJzdFxuICBlYXQoJyBcXHRcXHYnKTtcblxuICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gJ3snKSB7XG4gICAgZWF0T25lKCd7Jyk7XG4gICAgc3RvcE9uQnJhY2UgPSB0cnVlO1xuICB9XG5cbiAgd2hpbGUgKCFzaG91bGRTdG9wKCkpIHtcbiAgICBpZiAoZWF0KCcgXFx0XFx2JykpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJy4nKSB7XG4gICAgICAvLyBDbGFzc2VzXG4gICAgICB0eXBlID0gJ2NsYXNzJztcbiAgICAgIGlmIChlYXRPbmUoJy4nKSkge1xuICAgICAgICBlcnJvckRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJyMnKSB7XG4gICAgICAvLyBJRFxuICAgICAgdHlwZSA9ICdpZCc7XG4gICAgICBpZiAoZWF0T25lKCcjJykpIHtcbiAgICAgICAgZXJyb3JEZXRlY3RlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBLZXlcbiAgICAgIHR5cGUgPSAna2V5JztcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IG5hbWVcbiAgICBpZiAoZWF0VW50aWwoJz1cXHRcXGJcXHYgwqAnKSB8fCAhbGFiZWxGaXJzdCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJz0nICYmIHR5cGUgPT09ICdrZXknKSB7XG4gICAgICAvLyBTZXQgbGFiZWxTZWNvbmRcbiAgICAgIGlmIChlYXRPbmUoJz0nKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleE5leHQpID09PSAnXCInKSB7XG4gICAgICAgIGlmIChlYXRPbmUoJ1wiJykpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlYXRJblF1b3RlKCdcIicpKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgPT09ICdcIicpIHtcbiAgICAgICAgICBpZiAoZWF0T25lKCdcIicpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmNoYXJBdChpbmRleE5leHQpID09PSAnXFwnJykge1xuICAgICAgICBpZiAoZWF0T25lKCdcXCcnKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlYXRJblF1b3RlKCdcXCcnKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleE5leHQpID09PSAnXFwnJykge1xuICAgICAgICAgIGlmIChlYXRPbmUoJ1xcJycpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVhdFVudGlsKCcgXFx0XFxuXFxyXFx2PX0nKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIHBhcnNlZCBhdHRyaWJ1dGUgdG8gdGhlIG91dHB1dCBwcm9wIHdpdGggdGhlIGFkIGhvYyB0eXBlXG4gICAgYWRkQXR0cmlidXRlKCk7XG4gIH1cbiAgYWRkQXR0cmlidXRlKCk7XG4gIGlmIChzdG9wT25CcmFjZSkge1xuICAgIGlmIChpbmRleE5leHQgPCB2YWx1ZS5sZW5ndGggJiYgdmFsdWVbaW5kZXhOZXh0XSA9PT0gJ30nKSB7XG4gICAgICBzdG9wT25CcmFjZSA9IGZhbHNlO1xuICAgICAgZWF0T25lKCd9Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub3RoaW5nSGFwcGVuZDtcbiAgICB9XG4gIH1cblxuICBpZiAoZXJyb3JEZXRlY3RlZCkge1xuICAgIHJldHVybiBub3RoaW5nSGFwcGVuZDtcbiAgfVxuXG4gIHJldHVybiB7IHByb3A6IHByb3AsIGVhdGVuOiBsZXRzRWF0IH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2U7IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBTVEFSVCA9ICdbX18nO1xuY29uc3QgRU5EID0gJ19fXSc7XG5cbmNvbnN0IHBhcnNlQXR0ciA9IHJlcXVpcmUoJ21kLWF0dHItcGFyc2VyJyk7XG5cbmZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICBjb25zdCBpbmRleCA9IHZhbHVlLmluZGV4T2YoU1RBUlQsIGZyb21JbmRleCk7XG4gIHJldHVybiBpbmRleDtcbn1cblxuZnVuY3Rpb24gcGx1Z2luKCkge1xuICBmdW5jdGlvbiBpbmxpbmVUb2tlbml6ZXIoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZ2ZtIHx8ICF2YWx1ZS5zdGFydHNXaXRoKFNUQVJUKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBzdWJ2YWx1ZSA9ICcnO1xuICAgIGxldCBpbmRleCA9IDE7XG4gICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIGNvbnN0IG5vdyA9IGVhdC5ub3coKTtcbiAgICBub3cuY29sdW1uICs9IDI7XG4gICAgbm93Lm9mZnNldCArPSAyO1xuXG4gICAgd2hpbGUgKCF2YWx1ZS5zdGFydHNXaXRoKEVORCwgaW5kZXgpICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHN1YnZhbHVlICs9IHZhbHVlLmNoYXJBdChpbmRleCk7XG4gICAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4KSA9PT0gJ1xcbicpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBsZXRzRWF0ID0gJyc7XG4gICAgbGV0IHByb3AgPSB7a2V5OiB1bmRlZmluZWQgLyoge30gKi8sIGNsYXNzOiB1bmRlZmluZWQgLyogW10gKi8sIGlkOiB1bmRlZmluZWR9O1xuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXggKyBFTkQubGVuZ3RoKSA9PT0gJ3snKSB7XG4gICAgICBjb25zdCByZXMgPSBwYXJzZUF0dHIodmFsdWUsIGluZGV4ICsgRU5ELmxlbmd0aCk7XG4gICAgICBsZXRzRWF0ID0gcmVzLmVhdGVuO1xuICAgICAgcHJvcCA9IHJlcy5wcm9wO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICBpZiAoc2lsZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocHJvcC50eXBlICE9PSAncGFzc3dvcmQnKSB7XG4gICAgICBwcm9wLnR5cGUgPSAndGV4dCc7XG4gICAgfVxuXG4gICAgcHJvcC5wbGFjZWhvbGRlciA9IHN1YnZhbHVlLnJlcGxhY2UoL15fKi9nLCAnJykucmVwbGFjZSgvXyokL2csICcnKSB8fCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBlYXQoU1RBUlQgKyBzdWJ2YWx1ZS5zbGljZSgxKSArIEVORC5zbGljZSgxKSArIGxldHNFYXQpKHtcbiAgICAgICAgdHlwZTogJ2xpbmUtaW5wdXQnLFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoTmFtZTogJ2lucHV0JyxcbiAgICAgICAgICBoUHJvcGVydGllczogcHJvcCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlubGluZVRva2VuaXplci5sb2NhdG9yID0gbG9jYXRvcjtcblxuICBjb25zdCBQYXJzZXIgPSB0aGlzLlBhcnNlcjtcblxuICAvLyBJbmplY3QgaW5saW5lVG9rZW5pemVyXG4gIGNvbnN0IGlubGluZVRva2VuaXplcnMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZVRva2VuaXplcnM7XG4gIGNvbnN0IGlubGluZU1ldGhvZHMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZU1ldGhvZHM7XG4gIGlubGluZVRva2VuaXplcnMuaW5wdXQgPSBpbmxpbmVUb2tlbml6ZXI7XG4gIGlubGluZU1ldGhvZHMuc3BsaWNlKGlubGluZU1ldGhvZHMuaW5kZXhPZigndXJsJyksIDAsICdpbnB1dCcpO1xuXG4gIGNvbnN0IENvbXBpbGVyID0gdGhpcy5Db21waWxlcjtcblxuICAvLyBTdHJpbmdpZnlcbiAgaWYgKENvbXBpbGVyKSB7XG4gICAgY29uc3QgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnM7XG4gICAgdmlzaXRvcnMubGluZWlucHV0ID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBgW19fJHt0aGlzLmFsbChub2RlKS5qb2luKCcnKX1fX11gO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwbHVnaW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFNUQVJUID0gJ1snO1xuY29uc3QgRU5EX1JHWCA9IC8oXFx8ICpbdlZdICpdKSh7W15cXG5dKn0pPy87XG5cbmNvbnN0IHBhcnNlQXR0ciA9IHJlcXVpcmUoJ21kLWF0dHItcGFyc2VyJyk7XG5cbmZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICBjb25zdCBpbmRleCA9IHZhbHVlLmluZGV4T2YoU1RBUlQsIGZyb21JbmRleCk7XG4gIHJldHVybiBpbmRleDtcbn1cblxuZnVuY3Rpb24gcGx1Z2luKCkge1xuICBsZXQgRU5EID0gJ3x2XSc7XG4gIGZ1bmN0aW9uIGlubGluZVRva2VuaXplcihlYXQsIHZhbHVlKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZ2ZtIHx8ICF2YWx1ZS5zdGFydHNXaXRoKFNUQVJUKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBzdWJ2YWx1ZSA9ICcnO1xuICAgIGxldCBpbmRleCA9IDE7XG4gICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIGNvbnN0IG5vdyA9IGVhdC5ub3coKTtcbiAgICBub3cuY29sdW1uICs9IDI7XG4gICAgbm93Lm9mZnNldCArPSAyO1xuXG4gICAgbGV0IHJldCA9IG51bGw7XG4gICAgaWYgKChyZXQgPSB2YWx1ZS5zdWJzdHIoMSkubWF0Y2goRU5EX1JHWCkpICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBzdWJ2YWx1ZSArPSB2YWx1ZS5zdWJzdHIoMSwgcmV0LmluZGV4KTtcbiAgICAgIEVORCA9IHJldFsxXTtcblxuICAgICAgaW5kZXggKz0gcmV0LmluZGV4ICsgRU5ELmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBsZXRzRWF0ID0gJyc7XG4gICAgbGV0IHByb3AgPSB7Y2xhc3M6IHVuZGVmaW5lZCAvKiBbXSAqLywgaWQ6IHVuZGVmaW5lZH07XG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgPT09ICd7Jykge1xuICAgICAgY29uc3QgcmVzID0gcGFyc2VBdHRyKHZhbHVlLCBpbmRleCk7XG4gICAgICBsZXRzRWF0ID0gcmVzLmVhdGVuO1xuICAgICAgaW5kZXggKz0gbGV0c0VhdC5sZW5ndGg7XG4gICAgICBwcm9wID0gcmVzLnByb3A7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4IDw9IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGVhdChTVEFSVCArIHN1YnZhbHVlICsgRU5EICsgbGV0c0VhdCkoe1xuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaE5hbWU6ICdzZWxlY3QnLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiBwcm9wLFxuICAgICAgICAgIGhDaGlsZHJlbjogc3VidmFsdWUuc3BsaXQoJ3wnKS5maWx0ZXIoeCA9PiB4KS5tYXAodW50cmltID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSB1bnRyaW0udHJpbSgpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdHlwZTogJ2VsZW1lbnQnLFxuICAgICAgICAgICAgICB0YWdOYW1lOiAnb3B0aW9uJyxcbiAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB0ZXh0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRleHQsXG4gICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlubGluZVRva2VuaXplci5sb2NhdG9yID0gbG9jYXRvcjtcblxuICBjb25zdCBQYXJzZXIgPSB0aGlzLlBhcnNlcjtcblxuICAvLyBJbmplY3QgaW5saW5lVG9rZW5pemVyXG4gIGNvbnN0IGlubGluZVRva2VuaXplcnMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZVRva2VuaXplcnM7XG4gIGNvbnN0IGlubGluZU1ldGhvZHMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZU1ldGhvZHM7XG4gIGlubGluZVRva2VuaXplcnMuc2VsZWN0ID0gaW5saW5lVG9rZW5pemVyO1xuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3VybCcpLCAwLCAnc2VsZWN0Jyk7XG5cbiAgY29uc3QgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyO1xuXG4gIC8vIFN0cmluZ2lmeVxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICBjb25zdCB2aXNpdG9ycyA9IENvbXBpbGVyLnByb3RvdHlwZS52aXNpdG9ycztcbiAgICB2aXNpdG9ycy5saW5lc2VsZWN0ID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBTVEFSVCArIHRoaXMuYWxsKG5vZGUpLmpvaW4oJycpICsgRU5EO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwbHVnaW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFNUQVJUID0gL14oXFxbXytcXG4pL2c7XG5jb25zdCBFTkQgPSAvKF8rXSkvZztcblxuY29uc3QgcGFyc2VBdHRyID0gcmVxdWlyZSgnbWQtYXR0ci1wYXJzZXInKTtcblxuZnVuY3Rpb24gbG9jYXRvcih2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIGNvbnN0IGluZGV4ID0gdmFsdWUuaW5kZXhPZihTVEFSVCwgZnJvbUluZGV4KTtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBwbHVnaW4oKSB7XG4gIGZ1bmN0aW9uIGJsb2NrVG9rZW5pemVyKGVhdCwgdmFsdWUpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5nZm0gfHwgdmFsdWUuc2VhcmNoKFNUQVJUKSAhPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBwcm9wID0ge1xuICAgICAgY2xhc3M6IHVuZGVmaW5lZCAvKiBbXSAqLyxcbiAgICAgIGlkOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIGxldCBlYXRlbiA9ICcnO1xuXG4gICAgaWYgKHZhbHVlLnNlYXJjaChFTkQpID4gMCkge1xuICAgICAgaWYgKCh2YWx1ZS5zZWFyY2goRU5EKSArIHZhbHVlLm1hdGNoKEVORClbMF0ubGVuZ3RoKSA8IHZhbHVlLmxlbmd0aCAmJlxuICAgICAgICAgICAgdmFsdWUuY2hhckF0KHZhbHVlLnNlYXJjaChFTkQpICsgdmFsdWUubWF0Y2goRU5EKVswXS5sZW5ndGgpID09PSAneycpIHtcbiAgICAgICAgY29uc3QgcmVzID0gcGFyc2VBdHRyKHZhbHVlLCB2YWx1ZS5zZWFyY2goRU5EKSArIHZhbHVlLm1hdGNoKEVORClbMF0ubGVuZ3RoKTtcbiAgICAgICAgZWF0ZW4gPSByZXMuZWF0ZW47XG4gICAgICAgIHByb3AgPSByZXMucHJvcDtcbiAgICAgIH1cbiAgICAgIGxldCBlbmQgPSB2YWx1ZS5zZWFyY2goRU5EKTtcbiAgICAgIGlmIChlbmQgIT09IHZhbHVlLm1hdGNoKFNUQVJUKVswXS5sZW5ndGgpIHtcbiAgICAgICAgZW5kIC09IDE7XG4gICAgICB9XG4gICAgICBjb25zdCB0ID0gZWF0KHZhbHVlLnNsaWNlKDAsIHZhbHVlLnNlYXJjaChFTkQpICsgdmFsdWUubWF0Y2goRU5EKVswXS5sZW5ndGgpICsgZWF0ZW4pKHtcbiAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAnVEVYVEFSRUEnLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiBwcm9wLFxuICAgICAgICAgIGhDaGlsZHJlbjogW3t0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUuc2xpY2UodmFsdWUubWF0Y2goU1RBUlQpWzBdLmxlbmd0aCwgZW5kKSxcbiAgICAgICAgICB9XSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHQ7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYmxvY2tUb2tlbml6ZXIubG9jYXRvciA9IGxvY2F0b3I7XG5cbiAgY29uc3QgUGFyc2VyID0gdGhpcy5QYXJzZXI7XG5cbiAgY29uc3QgYmxvY2tUb2tlbml6ZXJzID0gUGFyc2VyLnByb3RvdHlwZS5ibG9ja1Rva2VuaXplcnM7XG4gIGNvbnN0IGJsb2NrTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tNZXRob2RzO1xuICBibG9ja1Rva2VuaXplcnMudGV4dGlucHV0ID0gYmxvY2tUb2tlbml6ZXI7XG4gIGJsb2NrTWV0aG9kcy5zcGxpY2UoYmxvY2tNZXRob2RzLmluZGV4T2YoJ2ZlbmNlZENvZGUnKSArIDEsIDAsICd0ZXh0aW5wdXQnKTtcblxuICBjb25zdCBDb21waWxlciA9IHRoaXMuQ29tcGlsZXI7XG5cbiAgLy8gU3RyaW5naWZ5XG4gIGlmIChDb21waWxlcikge1xuICAgIGNvbnN0IHZpc2l0b3JzID0gQ29tcGlsZXIucHJvdG90eXBlLnZpc2l0b3JzO1xuICAgIHZpc2l0b3JzLnRleHRpbnB1dCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gYFtfXyR7dGhpcy5hbGwobm9kZSkuam9pbignJyl9X19dYDtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUiA9ICdcXHVGRkZEJztcblxuZXhwb3J0cy5DT0RFX1BPSU5UUyA9IHtcbiAgICBFT0Y6IC0xLFxuICAgIE5VTEw6IDB4MDAsXG4gICAgVEFCVUxBVElPTjogMHgwOSxcbiAgICBDQVJSSUFHRV9SRVRVUk46IDB4MEQsXG4gICAgTElORV9GRUVEOiAweDBBLFxuICAgIEZPUk1fRkVFRDogMHgwQyxcbiAgICBTUEFDRTogMHgyMCxcbiAgICBFWENMQU1BVElPTl9NQVJLOiAweDIxLFxuICAgIFFVT1RBVElPTl9NQVJLOiAweDIyLFxuICAgIE5VTUJFUl9TSUdOOiAweDIzLFxuICAgIEFNUEVSU0FORDogMHgyNixcbiAgICBBUE9TVFJPUEhFOiAweDI3LFxuICAgIEhZUEhFTl9NSU5VUzogMHgyRCxcbiAgICBTT0xJRFVTOiAweDJGLFxuICAgIERJR0lUXzA6IDB4MzAsXG4gICAgRElHSVRfOTogMHgzOSxcbiAgICBTRU1JQ09MT046IDB4M0IsXG4gICAgTEVTU19USEFOX1NJR046IDB4M0MsXG4gICAgRVFVQUxTX1NJR046IDB4M0QsXG4gICAgR1JFQVRFUl9USEFOX1NJR046IDB4M0UsXG4gICAgUVVFU1RJT05fTUFSSzogMHgzRixcbiAgICBMQVRJTl9DQVBJVEFMX0E6IDB4NDEsXG4gICAgTEFUSU5fQ0FQSVRBTF9GOiAweDQ2LFxuICAgIExBVElOX0NBUElUQUxfWDogMHg1OCxcbiAgICBMQVRJTl9DQVBJVEFMX1o6IDB4NUEsXG4gICAgR1JBVkVfQUNDRU5UOiAweDYwLFxuICAgIExBVElOX1NNQUxMX0E6IDB4NjEsXG4gICAgTEFUSU5fU01BTExfRjogMHg2NixcbiAgICBMQVRJTl9TTUFMTF9YOiAweDc4LFxuICAgIExBVElOX1NNQUxMX1o6IDB4N0EsXG4gICAgUkVQTEFDRU1FTlRfQ0hBUkFDVEVSOiAweEZGRkRcbn07XG5cbmV4cG9ydHMuQ09ERV9QT0lOVF9TRVFVRU5DRVMgPSB7XG4gICAgREFTSF9EQVNIX1NUUklORzogWzB4MkQsIDB4MkRdLCAvLy0tXG4gICAgRE9DVFlQRV9TVFJJTkc6IFsweDQ0LCAweDRGLCAweDQzLCAweDU0LCAweDU5LCAweDUwLCAweDQ1XSwgLy9ET0NUWVBFXG4gICAgQ0RBVEFfU1RBUlRfU1RSSU5HOiBbMHg1QiwgMHg0MywgMHg0NCwgMHg0MSwgMHg1NCwgMHg0MSwgMHg1Ql0sIC8vW0NEQVRBW1xuICAgIENEQVRBX0VORF9TVFJJTkc6IFsweDVELCAweDVELCAweDNFXSwgLy9dXT5cbiAgICBTQ1JJUFRfU1RSSU5HOiBbMHg3MywgMHg2MywgMHg3MiwgMHg2OSwgMHg3MCwgMHg3NF0sIC8vc2NyaXB0XG4gICAgUFVCTElDX1NUUklORzogWzB4NTAsIDB4NTUsIDB4NDIsIDB4NEMsIDB4NDksIDB4NDNdLCAvL1BVQkxJQ1xuICAgIFNZU1RFTV9TVFJJTkc6IFsweDUzLCAweDU5LCAweDUzLCAweDU0LCAweDQ1LCAweDREXSAvL1NZU1RFTVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFVOSUNPREUgPSByZXF1aXJlKCcuLi9jb21tb24vdW5pY29kZScpO1xuXG4vL0FsaWFzZXNcbnZhciAkID0gVU5JQ09ERS5DT0RFX1BPSU5UUztcblxuLy9VdGlsc1xuXG4vL09QVElNSVpBVElPTjogdGhlc2UgdXRpbGl0eSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBtb3ZlZCBvdXQgb2YgdGhpcyBtb2R1bGUuIFY4IENyYW5rc2hhZnQgd2lsbCBub3QgaW5saW5lXG4vL3RoaXMgZnVuY3Rpb25zIGlmIHRoZXkgd2lsbCBiZSBzaXR1YXRlZCBpbiBhbm90aGVyIG1vZHVsZSBkdWUgdG8gY29udGV4dCBzd2l0Y2guXG4vL0Fsd2F5cyBwZXJmb3JtIGlubGluaW5nIGNoZWNrIGJlZm9yZSBtb2RpZnlpbmcgdGhpcyBmdW5jdGlvbnMgKCdub2RlIC0tdHJhY2UtaW5saW5pbmcnKS5cbmZ1bmN0aW9uIGlzU3Vycm9nYXRlUGFpcihjcDEsIGNwMikge1xuICAgIHJldHVybiBjcDEgPj0gMHhEODAwICYmIGNwMSA8PSAweERCRkYgJiYgY3AyID49IDB4REMwMCAmJiBjcDIgPD0gMHhERkZGO1xufVxuXG5mdW5jdGlvbiBnZXRTdXJyb2dhdGVQYWlyQ29kZVBvaW50KGNwMSwgY3AyKSB7XG4gICAgcmV0dXJuIChjcDEgLSAweEQ4MDApICogMHg0MDAgKyAweDI0MDAgKyBjcDI7XG59XG5cblxuLy9Db25zdFxudmFyIERFRkFVTFRfQlVGRkVSX1dBVEVSTElORSA9IDEgPDwgMTY7XG5cblxuLy9QcmVwcm9jZXNzb3Jcbi8vTk9URTogSFRNTCBpbnB1dCBwcmVwcm9jZXNzaW5nXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0pXG52YXIgUHJlcHJvY2Vzc29yID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5odG1sID0gbnVsbDtcblxuICAgIHRoaXMucG9zID0gLTE7XG4gICAgdGhpcy5sYXN0R2FwUG9zID0gLTE7XG4gICAgdGhpcy5sYXN0Q2hhclBvcyA9IC0xO1xuXG4gICAgdGhpcy5nYXBTdGFjayA9IFtdO1xuXG4gICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcblxuICAgIHRoaXMubGFzdENodW5rV3JpdHRlbiA9IGZhbHNlO1xuICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgIHRoaXMuYnVmZmVyV2F0ZXJsaW5lID0gREVGQVVMVF9CVUZGRVJfV0FURVJMSU5FO1xufTtcblxuUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5kcm9wUGFyc2VkQ2h1bmsgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMucG9zID4gdGhpcy5idWZmZXJXYXRlcmxpbmUpIHtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclBvcyAtPSB0aGlzLnBvcztcbiAgICAgICAgdGhpcy5odG1sID0gdGhpcy5odG1sLnN1YnN0cmluZyh0aGlzLnBvcyk7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gLTE7XG4gICAgICAgIHRoaXMuZ2FwU3RhY2sgPSBbXTtcbiAgICB9XG59O1xuXG5QcmVwcm9jZXNzb3IucHJvdG90eXBlLl9hZGRHYXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5nYXBTdGFjay5wdXNoKHRoaXMubGFzdEdhcFBvcyk7XG4gICAgdGhpcy5sYXN0R2FwUG9zID0gdGhpcy5wb3M7XG59O1xuXG5QcmVwcm9jZXNzb3IucHJvdG90eXBlLl9wcm9jZXNzSGlnaFJhbmdlQ29kZVBvaW50ID0gZnVuY3Rpb24gKGNwKSB7XG4gICAgLy9OT1RFOiB0cnkgdG8gcGVlayBhIHN1cnJvZ2F0ZSBwYWlyXG4gICAgaWYgKHRoaXMucG9zICE9PSB0aGlzLmxhc3RDaGFyUG9zKSB7XG4gICAgICAgIHZhciBuZXh0Q3AgPSB0aGlzLmh0bWwuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpO1xuXG4gICAgICAgIGlmIChpc1N1cnJvZ2F0ZVBhaXIoY3AsIG5leHRDcCkpIHtcbiAgICAgICAgICAgIC8vTk9URTogd2UgaGF2ZSBhIHN1cnJvZ2F0ZSBwYWlyLiBQZWVrIHBhaXIgY2hhcmFjdGVyIGFuZCByZWNhbGN1bGF0ZSBjb2RlIHBvaW50LlxuICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIGNwID0gZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludChjcCwgbmV4dENwKTtcblxuICAgICAgICAgICAgLy9OT1RFOiBhZGQgZ2FwIHRoYXQgc2hvdWxkIGJlIGF2b2lkZWQgZHVyaW5nIHJldHJlYXRcbiAgICAgICAgICAgIHRoaXMuX2FkZEdhcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTk9URTogd2UndmUgaGl0IHRoZSBlbmQgb2YgY2h1bmssIHN0b3AgcHJvY2Vzc2luZyBhdCB0aGlzIHBvaW50XG4gICAgZWxzZSBpZiAoIXRoaXMubGFzdENodW5rV3JpdHRlbikge1xuICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNwO1xufTtcblxuUHJlcHJvY2Vzc29yLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgaXNMYXN0Q2h1bmspIHtcbiAgICBpZiAodGhpcy5odG1sKVxuICAgICAgICB0aGlzLmh0bWwgKz0gY2h1bms7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuaHRtbCA9IGNodW5rO1xuXG4gICAgdGhpcy5sYXN0Q2hhclBvcyA9IHRoaXMuaHRtbC5sZW5ndGggLSAxO1xuICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgIHRoaXMubGFzdENodW5rV3JpdHRlbiA9IGlzTGFzdENodW5rO1xufTtcblxuUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5pbnNlcnRIdG1sQXRDdXJyZW50UG9zID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgdGhpcy5odG1sID0gdGhpcy5odG1sLnN1YnN0cmluZygwLCB0aGlzLnBvcyArIDEpICtcbiAgICAgICAgICAgICAgICBjaHVuayArXG4gICAgICAgICAgICAgICAgdGhpcy5odG1sLnN1YnN0cmluZyh0aGlzLnBvcyArIDEsIHRoaXMuaHRtbC5sZW5ndGgpO1xuXG4gICAgdGhpcy5sYXN0Q2hhclBvcyA9IHRoaXMuaHRtbC5sZW5ndGggLSAxO1xuICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xufTtcblxuXG5QcmVwcm9jZXNzb3IucHJvdG90eXBlLmFkdmFuY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5wb3MrKztcblxuICAgIGlmICh0aGlzLnBvcyA+IHRoaXMubGFzdENoYXJQb3MpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxhc3RDaHVua1dyaXR0ZW4pXG4gICAgICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiAkLkVPRjtcbiAgICB9XG5cbiAgICB2YXIgY3AgPSB0aGlzLmh0bWwuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG5cbiAgICAvL05PVEU6IGFueSBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVycyB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvdyBhIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gKENSKSBjaGFyYWN0ZXJcbiAgICAvL211c3QgYmUgaWdub3JlZC5cbiAgICBpZiAodGhpcy5za2lwTmV4dE5ld0xpbmUgJiYgY3AgPT09ICQuTElORV9GRUVEKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2FkZEdhcCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5hZHZhbmNlKCk7XG4gICAgfVxuXG4gICAgLy9OT1RFOiBhbGwgVSswMDBEIENBUlJJQUdFIFJFVFVSTiAoQ1IpIGNoYXJhY3RlcnMgbXVzdCBiZSBjb252ZXJ0ZWQgdG8gVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlcnNcbiAgICBpZiAoY3AgPT09ICQuQ0FSUklBR0VfUkVUVVJOKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuICQuTElORV9GRUVEO1xuICAgIH1cblxuICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG5cbiAgICAvL09QVElNSVpBVElPTjogZmlyc3QgcGVyZm9ybSBjaGVjayBpZiB0aGUgY29kZSBwb2ludCBpbiB0aGUgYWxsb3dlZCByYW5nZSB0aGF0IGNvdmVycyBtb3N0IGNvbW1vblxuICAgIC8vSFRNTCBpbnB1dCAoZS5nLiBBU0NJSSBjb2RlcykgdG8gYXZvaWQgcGVyZm9ybWFuY2UtY29zdCBvcGVyYXRpb25zIGZvciBoaWdoLXJhbmdlIGNvZGUgcG9pbnRzLlxuICAgIHJldHVybiBjcCA+PSAweEQ4MDAgPyB0aGlzLl9wcm9jZXNzSGlnaFJhbmdlQ29kZVBvaW50KGNwKSA6IGNwO1xufTtcblxuUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5yZXRyZWF0ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLnBvcyA9PT0gdGhpcy5sYXN0R2FwUG9zKSB7XG4gICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IHRoaXMuZ2FwU3RhY2sucG9wKCk7XG4gICAgICAgIHRoaXMucG9zLS07XG4gICAgfVxuXG4gICAgdGhpcy5wb3MtLTtcbn07XG5cbiIsIid1c2Ugc3RyaWN0JztcblxuLy9OT1RFOiB0aGlzIGZpbGUgY29udGFpbnMgYXV0by1nZW5lcmF0ZWQgYXJyYXkgbWFwcGVkIHJhZGl4IHRyZWUgdGhhdCBpcyB1c2VkIGZvciB0aGUgbmFtZWQgZW50aXR5IHJlZmVyZW5jZXMgY29uc3VtcHRpb25cbi8vKGRldGFpbHM6IGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvdHJlZS9tYXN0ZXIvc2NyaXB0cy9nZW5lcmF0ZV9uYW1lZF9lbnRpdHlfZGF0YS9SRUFETUUubWQpXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBVaW50MTZBcnJheShbNCw1Miw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEwNiwzMDMsNDEyLDgxMCwxNDMyLDE3MDEsMTc5NiwxOTg3LDIxMTQsMjM2MCwyNDIwLDI0ODQsMzE3MCwzMjUxLDQxNDAsNDM5Myw0NTc1LDQ2MTAsNTEwNiw1NTEyLDU3MjgsNjExNyw2Mjc0LDYzMTUsNjM0NSw2NDI3LDY1MTYsNzAwMiw3OTEwLDg3MzMsOTMyMyw5ODcwLDEwMTcwLDEwNjMxLDEwODkzLDExMzE4LDExMzg2LDExNDY3LDEyNzczLDEzMDkyLDE0NDc0LDE0OTIyLDE1NDQ4LDE1NTQyLDE2NDE5LDE3NjY2LDE4MTY2LDE4NjExLDE5MDA0LDE5MDk1LDE5Mjk4LDE5Mzk3LDQsMTYsNjksNzcsOTcsOTgsOTksMTAyLDEwMywxMDgsMTA5LDExMCwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxNDAsMTUwLDE1OCwxNjksMTc2LDE5NCwxOTksMjEwLDIxNiwyMjIsMjI2LDI0MiwyNTYsMjY2LDI4MywyOTQsMTA4LDEwNSwxMDMsNSwxOTgsMSw1OSwxNDgsMSwxOTgsODAsNSwzOCwxLDU5LDE1NiwxLDM4LDk5LDExNywxMTYsMTAxLDUsMTkzLDEsNTksMTY3LDEsMTkzLDExNCwxMDEsMTE4LDEwMSw1OSwxLDI1OCw0LDIsMTA1LDEyMSwxODIsMTkxLDExNCw5OSw1LDE5NCwxLDU5LDE4OSwxLDE5NCw1OSwxLDEwNDAsMTE0LDU5LDMsNTUzNDksNTY1ODAsMTE0LDk3LDExOCwxMDEsNSwxOTIsMSw1OSwyMDgsMSwxOTIsMTEyLDEwNCw5Nyw1OSwxLDkxMyw5Nyw5OSwxMTQsNTksMSwyNTYsMTAwLDU5LDEsMTA4MzUsNCwyLDEwMywxMTIsMjMyLDIzNywxMTEsMTEwLDU5LDEsMjYwLDEwMiw1OSwzLDU1MzQ5LDU2NjMyLDExMiwxMDgsMTIxLDcwLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDU5LDEsODI4OSwxMDUsMTEwLDEwMyw1LDE5NywxLDU5LDI2NCwxLDE5Nyw0LDIsOTksMTE1LDI3MiwyNzcsMTE0LDU5LDMsNTUzNDksNTY0NzYsMTA1LDEwMywxMTAsNTksMSw4Nzg4LDEwNSwxMDgsMTAwLDEwMSw1LDE5NSwxLDU5LDI5MiwxLDE5NSwxMDksMTA4LDUsMTk2LDEsNTksMzAxLDEsMTk2LDQsOCw5Nyw5OSwxMDEsMTAyLDExMSwxMTQsMTE1LDExNywzMjEsMzUwLDM1NCwzODMsMzg4LDM5NCw0MDAsNDA1LDQsMiw5OSwxMTQsMzI3LDMzNiwxMDcsMTE1LDEwOCw5NywxMTUsMTA0LDU5LDEsODcyNiw0LDIsMTE4LDExOSwzNDIsMzQ1LDU5LDEsMTA5ODMsMTAxLDEwMCw1OSwxLDg5NjYsMTIxLDU5LDEsMTA0MSw0LDMsOTksMTE0LDExNiwzNjIsMzY5LDM3OSw5NywxMTcsMTE1LDEwMSw1OSwxLDg3NTcsMTEwLDExMSwxMTcsMTA4LDEwOCwxMDUsMTE1LDU5LDEsODQ5Miw5Nyw1OSwxLDkxNCwxMTQsNTksMyw1NTM0OSw1NjU4MSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2MzMsMTAxLDExOCwxMDEsNTksMSw3MjgsOTksMTE0LDU5LDEsODQ5MiwxMDksMTEyLDEwMSwxMTMsNTksMSw4NzgyLDQsMTQsNzIsNzksOTcsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMDgsMTExLDExNCwxMTUsMTE3LDQ0Miw0NDcsNDU2LDUwNCw1NDIsNTQ3LDU2OSw1NzMsNTc3LDYxNiw2NzgsNzg0LDc5MCw3OTYsOTksMTIxLDU5LDEsMTA2Myw4MCw4OSw1LDE2OSwxLDU5LDQ1NCwxLDE2OSw0LDMsOTksMTEyLDEyMSw0NjQsNDcwLDQ5NywxMTcsMTE2LDEwMSw1OSwxLDI2Miw0LDIsNTksMTA1LDQ3Niw0NzgsMSw4OTE0LDExNiw5NywxMDgsNjgsMTA1LDEwMiwxMDIsMTAxLDExNCwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDY4LDU5LDEsODUxNywxMDgsMTAxLDEyMSwxMTUsNTksMSw4NDkzLDQsNCw5NywxMDEsMTA1LDExMSw1MTQsNTIwLDUzMCw1MzUsMTE0LDExMSwxMTAsNTksMSwyNjgsMTAwLDEwNSwxMDgsNSwxOTksMSw1OSw1MjgsMSwxOTksMTE0LDk5LDU5LDEsMjY0LDExMCwxMDUsMTEwLDExNiw1OSwxLDg3NTIsMTExLDExNiw1OSwxLDI2Niw0LDIsMTAwLDExMCw1NTMsNTYwLDEwNSwxMDgsMTA4LDk3LDU5LDEsMTg0LDExNiwxMDEsMTE0LDY4LDExMSwxMTYsNTksMSwxODMsMTE0LDU5LDEsODQ5MywxMDUsNTksMSw5MzUsMTE0LDk5LDEwOCwxMDEsNCw0LDY4LDc3LDgwLDg0LDU5MSw1OTYsNjAzLDYwOSwxMTEsMTE2LDU5LDEsODg1NywxMDUsMTEwLDExNywxMTUsNTksMSw4ODU0LDEwOCwxMTcsMTE1LDU5LDEsODg1MywxMDUsMTA5LDEwMSwxMTUsNTksMSw4ODU1LDExMSw0LDIsOTksMTE1LDYyMyw2NDYsMTA3LDExOSwxMDUsMTE1LDEwMSw2NywxMTEsMTEwLDExNiwxMTEsMTE3LDExNCw3MywxMTAsMTE2LDEwMSwxMDMsMTE0LDk3LDEwOCw1OSwxLDg3NTQsMTAxLDY3LDExNywxMTQsMTA4LDEyMSw0LDIsNjgsODEsNjU4LDY3MSwxMTEsMTE3LDk4LDEwOCwxMDEsODEsMTE3LDExMSwxMTYsMTAxLDU5LDEsODIyMSwxMTcsMTExLDExNiwxMDEsNTksMSw4MjE3LDQsNCwxMDgsMTEwLDExMiwxMTcsNjg4LDcwMSw3MzYsNzUzLDExMSwxMTAsNCwyLDU5LDEwMSw2OTYsNjk4LDEsODc1OSw1OSwxLDEwODY4LDQsMywxMDMsMTA1LDExNiw3MDksNzE3LDcyMiwxMTQsMTE3LDEwMSwxMTAsMTE2LDU5LDEsODgwMSwxMTAsMTE2LDU5LDEsODc1MSwxMTEsMTE3LDExNCw3MywxMTAsMTE2LDEwMSwxMDMsMTE0LDk3LDEwOCw1OSwxLDg3NTAsNCwyLDEwMiwxMTQsNzQyLDc0NSw1OSwxLDg0NTAsMTExLDEwMCwxMTcsOTksMTE2LDU5LDEsODcyMCwxMTAsMTE2LDEwMSwxMTQsNjcsMTA4LDExMSw5OSwxMDcsMTE5LDEwNSwxMTUsMTAxLDY3LDExMSwxMTAsMTE2LDExMSwxMTcsMTE0LDczLDExMCwxMTYsMTAxLDEwMywxMTQsOTcsMTA4LDU5LDEsODc1NSwxMTEsMTE1LDExNSw1OSwxLDEwNzk5LDk5LDExNCw1OSwzLDU1MzQ5LDU2NDc4LDExMiw0LDIsNTksNjcsODAzLDgwNSwxLDg5MTUsOTcsMTEyLDU5LDEsODc4MSw0LDExLDY4LDc0LDgzLDkwLDk3LDk5LDEwMSwxMDIsMTA1LDExMSwxMTUsODM0LDg1MCw4NTUsODYwLDg2NSw4ODgsOTAzLDkxNiw5MjEsMTAxMSwxNDE1LDQsMiw1OSwxMTEsODQwLDg0MiwxLDg1MTcsMTE2LDExNCw5NywxMDQsMTAwLDU5LDEsMTA1MTMsOTksMTIxLDU5LDEsMTAyNiw5OSwxMjEsNTksMSwxMDI5LDk5LDEyMSw1OSwxLDEwMzksNCwzLDEwMywxMTQsMTE1LDg3Myw4NzksODgzLDEwMywxMDEsMTE0LDU5LDEsODIyNSwxMTQsNTksMSw4NjA5LDEwNCwxMTgsNTksMSwxMDk4MCw0LDIsOTcsMTIxLDg5NCw5MDAsMTE0LDExMSwxMTAsNTksMSwyNzAsNTksMSwxMDQ0LDEwOCw0LDIsNTksMTE2LDkxMCw5MTIsMSw4NzExLDk3LDU5LDEsOTE2LDExNCw1OSwzLDU1MzQ5LDU2NTgzLDQsMiw5NywxMDIsOTI3LDk5OCw0LDIsOTksMTA5LDkzMyw5OTIsMTE0LDEwNSwxMTYsMTA1LDk5LDk3LDEwOCw0LDQsNjUsNjgsNzEsODQsOTUwLDk1Nyw5NzgsOTg1LDk5LDExNywxMTYsMTAxLDU5LDEsMTgwLDExMSw0LDIsMTE2LDExNyw5NjQsOTY3LDU5LDEsNzI5LDk4LDEwOCwxMDEsNjUsOTksMTE3LDExNiwxMDEsNTksMSw3MzMsMTE0LDk3LDExOCwxMDEsNTksMSw5NiwxMDUsMTA4LDEwMCwxMDEsNTksMSw3MzIsMTExLDExMCwxMDAsNTksMSw4OTAwLDEwMiwxMDEsMTE0LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsNjgsNTksMSw4NTE4LDQsNCwxMTIsMTE2LDExNywxMTksMTAyMSwxMDI2LDEwNDgsMTI0OSwxMDIsNTksMyw1NTM0OSw1NjYzNSw0LDMsNTksNjgsNjksMTAzNCwxMDM2LDEwNDEsMSwxNjgsMTExLDExNiw1OSwxLDg0MTIsMTEzLDExNyw5NywxMDgsNTksMSw4Nzg0LDk4LDEwOCwxMDEsNCw2LDY3LDY4LDc2LDgyLDg1LDg2LDEwNjUsMTA4MiwxMTAxLDExODksMTIxMSwxMjM2LDExMSwxMTAsMTE2LDExMSwxMTcsMTE0LDczLDExMCwxMTYsMTAxLDEwMywxMTQsOTcsMTA4LDU5LDEsODc1MSwxMTEsNCwyLDExNiwxMTksMTA4OSwxMDkyLDU5LDEsMTY4LDExMCw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjU5LDQsMiwxMDEsMTExLDExMDcsMTE0MSwxMDIsMTE2LDQsMyw2NSw4Miw4NCwxMTE3LDExMjQsMTEzNiwxMTQsMTE0LDExMSwxMTksNTksMSw4NjU2LDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjYwLDEwMSwxMDEsNTksMSwxMDk4MCwxMTAsMTAzLDQsMiw3Niw4MiwxMTQ5LDExNzcsMTAxLDEwMiwxMTYsNCwyLDY1LDgyLDExNTgsMTE2NSwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMiwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzQsMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMzLDEwNSwxMDMsMTA0LDExNiw0LDIsNjUsODQsMTE5OSwxMjA2LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTgsMTAxLDEwMSw1OSwxLDg4NzIsMTEyLDQsMiw2NSw2OCwxMjE4LDEyMjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1NywxMTEsMTE5LDExMCw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjYxLDEwMSwxMTQsMTE2LDEwNSw5OSw5NywxMDgsNjYsOTcsMTE0LDU5LDEsODc0MSwxMTAsNCw2LDY1LDY2LDc2LDgyLDg0LDk3LDEyNjQsMTI5MiwxMjk5LDEzNTIsMTM5MSwxNDA4LDExNCwxMTQsMTExLDExOSw0LDMsNTksNjYsODUsMTI3NiwxMjc4LDEyODMsMSw4NTk1LDk3LDExNCw1OSwxLDEwNTE1LDExMiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjkzLDExNCwxMDEsMTE4LDEwMSw1OSwxLDc4NSwxMDEsMTAyLDExNiw0LDMsODIsODQsODYsMTMxMCwxMzIzLDEzMzQsMTA1LDEwMywxMDQsMTE2LDg2LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTc2LDEwMSwxMDEsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1OTAsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2NiwxMzQ1LDEzNDcsMSw4NjM3LDk3LDExNCw1OSwxLDEwNTgyLDEwNSwxMDMsMTA0LDExNiw0LDIsODQsODYsMTM2MiwxMzczLDEwMSwxMDEsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1OTEsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2NiwxMzg0LDEzODYsMSw4NjQxLDk3LDExNCw1OSwxLDEwNTgzLDEwMSwxMDEsNCwyLDU5LDY1LDEzOTksMTQwMSwxLDg4NjgsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxNSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjU5LDQsMiw5OSwxMTYsMTQyMSwxNDI2LDExNCw1OSwzLDU1MzQ5LDU2NDc5LDExNCwxMTEsMTA3LDU5LDEsMjcyLDQsMTYsNzgsODQsOTcsOTksMTAwLDEwMiwxMDMsMTA4LDEwOSwxMTEsMTEyLDExMywxMTUsMTE2LDExNywxMjAsMTQ2NiwxNDcwLDE0NzgsMTQ4OSwxNTE1LDE1MjAsMTUyNSwxNTM2LDE1NDQsMTU5MywxNjA5LDE2MTcsMTY1MCwxNjY0LDE2NjgsMTY3Nyw3MSw1OSwxLDMzMCw3Miw1LDIwOCwxLDU5LDE0NzYsMSwyMDgsOTksMTE3LDExNiwxMDEsNSwyMDEsMSw1OSwxNDg3LDEsMjAxLDQsMyw5NywxMDUsMTIxLDE0OTcsMTUwMywxNTEyLDExNCwxMTEsMTEwLDU5LDEsMjgyLDExNCw5OSw1LDIwMiwxLDU5LDE1MTAsMSwyMDIsNTksMSwxMDY5LDExMSwxMTYsNTksMSwyNzgsMTE0LDU5LDMsNTUzNDksNTY1ODQsMTE0LDk3LDExOCwxMDEsNSwyMDAsMSw1OSwxNTM0LDEsMjAwLDEwMSwxMDksMTAxLDExMCwxMTYsNTksMSw4NzEyLDQsMiw5NywxMTIsMTU1MCwxNTU1LDk5LDExNCw1OSwxLDI3NCwxMTYsMTIxLDQsMiw4Myw4NiwxNTYzLDE1NzYsMTA5LDk3LDEwOCwxMDgsODMsMTEzLDExNyw5NywxMTQsMTAxLDU5LDEsOTcyMywxMDEsMTE0LDEyMSw4MywxMDksOTcsMTA4LDEwOCw4MywxMTMsMTE3LDk3LDExNCwxMDEsNTksMSw5NjQzLDQsMiwxMDMsMTEyLDE1OTksMTYwNCwxMTEsMTEwLDU5LDEsMjgwLDEwMiw1OSwzLDU1MzQ5LDU2NjM2LDExNSwxMDUsMTA4LDExMSwxMTAsNTksMSw5MTcsMTE3LDQsMiw5NywxMDUsMTYyNCwxNjQwLDEwOCw0LDIsNTksODQsMTYzMSwxNjMzLDEsMTA4NjksMTA1LDEwOCwxMDAsMTAxLDU5LDEsODc3MCwxMDgsMTA1LDk4LDExNCwxMDUsMTE3LDEwOSw1OSwxLDg2NTIsNCwyLDk5LDEwNSwxNjU2LDE2NjAsMTE0LDU5LDEsODQ5NiwxMDksNTksMSwxMDg2Nyw5Nyw1OSwxLDkxOSwxMDksMTA4LDUsMjAzLDEsNTksMTY3NSwxLDIwMyw0LDIsMTA1LDExMiwxNjgzLDE2ODksMTE1LDExNiwxMTUsNTksMSw4NzA3LDExMSwxMTAsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCw2OSw1OSwxLDg1MTksNCw1LDk5LDEwMiwxMDUsMTExLDExNSwxNzEzLDE3MTcsMTcyMiwxNzYyLDE3OTEsMTIxLDU5LDEsMTA2MCwxMTQsNTksMyw1NTM0OSw1NjU4NSwxMDgsMTA4LDEwMSwxMDAsNCwyLDgzLDg2LDE3MzIsMTc0NSwxMDksOTcsMTA4LDEwOCw4MywxMTMsMTE3LDk3LDExNCwxMDEsNTksMSw5NzI0LDEwMSwxMTQsMTIxLDgzLDEwOSw5NywxMDgsMTA4LDgzLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk2NDIsNCwzLDExMiwxMTQsMTE3LDE3NzAsMTc3NSwxNzgxLDEwMiw1OSwzLDU1MzQ5LDU2NjM3LDY1LDEwOCwxMDgsNTksMSw4NzA0LDExNCwxMDUsMTAxLDExNCwxMTYsMTE0LDEwMiw1OSwxLDg0OTcsOTksMTE0LDU5LDEsODQ5Nyw0LDEyLDc0LDg0LDk3LDk4LDk5LDEwMCwxMDIsMTAzLDExMSwxMTQsMTE1LDExNiwxODIyLDE4MjcsMTgzNCwxODQ4LDE4NTUsMTg3NywxODgyLDE4ODcsMTg5MCwxODk2LDE5NzgsMTk4NCw5OSwxMjEsNTksMSwxMDI3LDUsNjIsMSw1OSwxODMyLDEsNjIsMTA5LDEwOSw5Nyw0LDIsNTksMTAwLDE4NDMsMTg0NSwxLDkxNSw1OSwxLDk4OCwxMTQsMTAxLDExOCwxMDEsNTksMSwyODYsNCwzLDEwMSwxMDUsMTIxLDE4NjMsMTg2OSwxODc0LDEwMCwxMDUsMTA4LDU5LDEsMjkwLDExNCw5OSw1OSwxLDI4NCw1OSwxLDEwNDMsMTExLDExNiw1OSwxLDI4OCwxMTQsNTksMyw1NTM0OSw1NjU4Niw1OSwxLDg5MjEsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjM4LDEwMSw5NywxMTYsMTAxLDExNCw0LDYsNjksNzAsNzEsNzYsODMsODQsMTkxNSwxOTMzLDE5NDQsMTk1MywxOTU5LDE5NzEsMTEzLDExNyw5NywxMDgsNCwyLDU5LDc2LDE5MjUsMTkyNywxLDg4MDUsMTAxLDExNSwxMTUsNTksMSw4OTIzLDExNywxMDgsMTA4LDY5LDExMywxMTcsOTcsMTA4LDU5LDEsODgwNywxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDEsMTA5MTQsMTAxLDExNSwxMTUsNTksMSw4ODIzLDEwOCw5NywxMTAsMTE2LDY5LDExMywxMTcsOTcsMTA4LDU5LDEsMTA4NzgsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODgxOSw5OSwxMTQsNTksMyw1NTM0OSw1NjQ4Miw1OSwxLDg4MTEsNCw4LDY1LDk3LDk5LDEwMiwxMDUsMTExLDExNSwxMTcsMjAwNSwyMDEyLDIwMjYsMjAzMiwyMDM2LDIwNDksMjA3MywyMDg5LDgyLDY4LDk5LDEyMSw1OSwxLDEwNjYsNCwyLDk5LDExNiwyMDE4LDIwMjMsMTAxLDEwNyw1OSwxLDcxMSw1OSwxLDk0LDEwNSwxMTQsOTksNTksMSwyOTIsMTE0LDU5LDEsODQ2MCwxMDgsOTgsMTAxLDExNCwxMTYsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDg0NTksNCwyLDExMiwxMTQsMjA1NSwyMDU5LDEwMiw1OSwxLDg0NjEsMTA1LDEyMiwxMTEsMTEwLDExNiw5NywxMDgsNzYsMTA1LDExMCwxMDEsNTksMSw5NDcyLDQsMiw5OSwxMTYsMjA3OSwyMDgzLDExNCw1OSwxLDg0NTksMTE0LDExMSwxMDcsNTksMSwyOTQsMTA5LDExMiw0LDIsNjgsNjksMjA5NywyMTA3LDExMSwxMTksMTEwLDcyLDExNywxMDksMTEyLDU5LDEsODc4MiwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3ODMsNCwxNCw2OSw3NCw3OSw5Nyw5OSwxMDAsMTAyLDEwMywxMDksMTEwLDExMSwxMTUsMTE2LDExNywyMTQ0LDIxNDksMjE1NSwyMTYwLDIxNzEsMjE4OSwyMTk0LDIxOTgsMjIwOSwyMjQ1LDIzMDcsMjMyOSwyMzM0LDIzNDEsOTksMTIxLDU5LDEsMTA0NSwxMDgsMTA1LDEwMyw1OSwxLDMwNiw5OSwxMjEsNTksMSwxMDI1LDk5LDExNywxMTYsMTAxLDUsMjA1LDEsNTksMjE2OSwxLDIwNSw0LDIsMTA1LDEyMSwyMTc3LDIxODYsMTE0LDk5LDUsMjA2LDEsNTksMjE4NCwxLDIwNiw1OSwxLDEwNDgsMTExLDExNiw1OSwxLDMwNCwxMTQsNTksMSw4NDY1LDExNCw5NywxMTgsMTAxLDUsMjA0LDEsNTksMjIwNywxLDIwNCw0LDMsNTksOTcsMTEyLDIyMTcsMjIxOSwyMjM4LDEsODQ2NSw0LDIsOTksMTAzLDIyMjUsMjIyOSwxMTQsNTksMSwyOTgsMTA1LDExMCw5NywxMTQsMTIxLDczLDU5LDEsODUyMCwxMDgsMTA1LDEwMSwxMTUsNTksMSw4NjU4LDQsMiwxMTYsMTE4LDIyNTEsMjI4MSw0LDIsNTksMTAxLDIyNTcsMjI1OSwxLDg3NDgsNCwyLDEwMywxMTQsMjI2NSwyMjcxLDExNCw5NywxMDgsNTksMSw4NzQ3LDExNSwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDU5LDEsODg5OCwxMDUsMTE1LDEwNSw5OCwxMDgsMTAxLDQsMiw2Nyw4NCwyMjkzLDIzMDAsMTExLDEwOSwxMDksOTcsNTksMSw4MjkxLDEwNSwxMDksMTAxLDExNSw1OSwxLDgyOTAsNCwzLDEwMywxMTIsMTE2LDIzMTUsMjMyMCwyMzI1LDExMSwxMTAsNTksMSwzMDIsMTAyLDU5LDMsNTUzNDksNTY2NDAsOTcsNTksMSw5MjEsOTksMTE0LDU5LDEsODQ2NCwxMDUsMTA4LDEwMCwxMDEsNTksMSwyOTYsNCwyLDEwNywxMDksMjM0NywyMzUyLDk5LDEyMSw1OSwxLDEwMzAsMTA4LDUsMjA3LDEsNTksMjM1OCwxLDIwNyw0LDUsOTksMTAyLDExMSwxMTUsMTE3LDIzNzIsMjM4NiwyMzkxLDIzOTcsMjQxNCw0LDIsMTA1LDEyMSwyMzc4LDIzODMsMTE0LDk5LDU5LDEsMzA4LDU5LDEsMTA0OSwxMTQsNTksMyw1NTM0OSw1NjU4OSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NDEsNCwyLDk5LDEwMSwyNDAzLDI0MDgsMTE0LDU5LDMsNTUzNDksNTY0ODUsMTE0LDk5LDEyMSw1OSwxLDEwMzIsMTA3LDk5LDEyMSw1OSwxLDEwMjgsNCw3LDcyLDc0LDk3LDk5LDEwMiwxMTEsMTE1LDI0MzYsMjQ0MSwyNDQ2LDI0NTIsMjQ2NywyNDcyLDI0NzgsOTksMTIxLDU5LDEsMTA2MSw5OSwxMjEsNTksMSwxMDM2LDExMiwxMTIsOTcsNTksMSw5MjIsNCwyLDEwMSwxMjEsMjQ1OCwyNDY0LDEwMCwxMDUsMTA4LDU5LDEsMzEwLDU5LDEsMTA1MCwxMTQsNTksMyw1NTM0OSw1NjU5MCwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NDIsOTksMTE0LDU5LDMsNTUzNDksNTY0ODYsNCwxMSw3NCw4NCw5Nyw5OSwxMDEsMTAyLDEwOCwxMDksMTExLDExNSwxMTYsMjUwOCwyNTEzLDI1MjAsMjU2MiwyNTg1LDI5ODEsMjk4NiwzMDA0LDMwMTEsMzE0NiwzMTY3LDk5LDEyMSw1OSwxLDEwMzMsNSw2MCwxLDU5LDI1MTgsMSw2MCw0LDUsOTksMTA5LDExMCwxMTIsMTE0LDI1MzIsMjUzOCwyNTQ0LDI1NDgsMjU1OCwxMTcsMTE2LDEwMSw1OSwxLDMxMyw5OCwxMDAsOTcsNTksMSw5MjMsMTAzLDU5LDEsMTAyMTgsMTA4LDk3LDk5LDEwMSwxMTYsMTE0LDEwMiw1OSwxLDg0NjYsMTE0LDU5LDEsODYwNiw0LDMsOTcsMTAxLDEyMSwyNTcwLDI1NzYsMjU4MiwxMTQsMTExLDExMCw1OSwxLDMxNywxMDAsMTA1LDEwOCw1OSwxLDMxNSw1OSwxLDEwNTEsNCwyLDEwMiwxMTUsMjU5MSwyOTA3LDExNiw0LDEwLDY1LDY3LDY4LDcwLDgyLDg0LDg1LDg2LDk3LDExNCwyNjE0LDI2NjMsMjY3MiwyNzI4LDI3MzUsMjc2MCwyODIwLDI4NzAsMjg4OCwyODk1LDQsMiwxMTAsMTE0LDI2MjAsMjYzMywxMDMsMTA4LDEwMSw2NiwxMTQsOTcsOTksMTA3LDEwMSwxMTYsNTksMSwxMDIxNiwxMTQsMTExLDExOSw0LDMsNTksNjYsODIsMjY0NCwyNjQ2LDI2NTEsMSw4NTkyLDk3LDExNCw1OSwxLDg2NzYsMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NDYsMTAxLDEwNSwxMDgsMTA1LDExMCwxMDMsNTksMSw4OTY4LDExMSw0LDIsMTE3LDExOSwyNjc5LDI2OTIsOTgsMTA4LDEwMSw2NiwxMTQsOTcsOTksMTA3LDEwMSwxMTYsNTksMSwxMDIxNCwxMTAsNCwyLDg0LDg2LDI2OTksMjcxMCwxMDEsMTAxLDg2LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTkzLDEwMSw5OSwxMTYsMTExLDExNCw0LDIsNTksNjYsMjcyMSwyNzIzLDEsODY0Myw5NywxMTQsNTksMSwxMDU4NSwxMDgsMTExLDExMSwxMTQsNTksMSw4OTcwLDEwNSwxMDMsMTA0LDExNiw0LDIsNjUsODYsMjc0NSwyNzUyLDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1NzQsNCwyLDEwMSwxMTQsMjc2NiwyNzkyLDEwMSw0LDMsNTksNjUsODYsMjc3NSwyNzc3LDI3ODQsMSw4ODY3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MTIsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1ODYsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDMsNTksNjYsNjksMjgwNiwyODA4LDI4MTMsMSw4ODgyLDk3LDExNCw1OSwxLDEwNzAzLDExMywxMTcsOTcsMTA4LDU5LDEsODg4NCwxMTIsNCwzLDY4LDg0LDg2LDI4MjksMjg0MSwyODUyLDExMSwxMTksMTEwLDg2LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTc3LDEwMSwxMDEsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1OTIsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2NiwyODYzLDI4NjUsMSw4NjM5LDk3LDExNCw1OSwxLDEwNTg0LDEwMSw5OSwxMTYsMTExLDExNCw0LDIsNTksNjYsMjg4MSwyODgzLDEsODYzNiw5NywxMTQsNTksMSwxMDU3OCwxMTQsMTE0LDExMSwxMTksNTksMSw4NjU2LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjYwLDExNSw0LDYsNjksNzAsNzEsNzYsODMsODQsMjkyMiwyOTM2LDI5NDcsMjk1NiwyOTYyLDI5NzQsMTEzLDExNyw5NywxMDgsNzEsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw1OSwxLDg5MjIsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMSw4ODA2LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSw4ODIyLDEwMSwxMTUsMTE1LDU5LDEsMTA5MTMsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSwxMDg3NywxMDUsMTA4LDEwMCwxMDEsNTksMSw4ODE4LDExNCw1OSwzLDU1MzQ5LDU2NTkxLDQsMiw1OSwxMDEsMjk5MiwyOTk0LDEsODkyMCwxMDIsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjYsMTA1LDEwMCwxMTEsMTE2LDU5LDEsMzE5LDQsMywxMTAsMTEyLDExOSwzMDE5LDMxMTAsMzExNSwxMDMsNCw0LDc2LDgyLDEwOCwxMTQsMzAzMCwzMDU4LDMwNzAsMzA5OCwxMDEsMTAyLDExNiw0LDIsNjUsODIsMzAzOSwzMDQ2LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjI5LDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMSwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzAsMTAxLDEwMiwxMTYsNCwyLDk3LDExNCwzMDc5LDMwODYsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzIsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjM0LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMywxMDIsNTksMyw1NTM0OSw1NjY0MywxMDEsMTE0LDQsMiw3Niw4MiwzMTIzLDMxMzQsMTAxLDEwMiwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwMSwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwMCw0LDMsOTksMTA0LDExNiwzMTU0LDMxNTgsMzE2MSwxMTQsNTksMSw4NDY2LDU5LDEsODYyNCwxMTQsMTExLDEwNyw1OSwxLDMyMSw1OSwxLDg4MTAsNCw4LDk3LDk5LDEwMSwxMDIsMTA1LDExMSwxMTUsMTE3LDMxODgsMzE5MiwzMTk2LDMyMjIsMzIyNywzMjM3LDMyNDMsMzI0OCwxMTIsNTksMSwxMDUwMSwxMjEsNTksMSwxMDUyLDQsMiwxMDAsMTA4LDMyMDIsMzIxMywxMDUsMTE3LDEwOSw4MywxMTIsOTcsOTksMTAxLDU5LDEsODI4NywxMDgsMTA1LDExMCwxMTYsMTE0LDEwMiw1OSwxLDg0OTksMTE0LDU5LDMsNTUzNDksNTY1OTIsMTEwLDExNywxMTUsODAsMTA4LDExNywxMTUsNTksMSw4NzIzLDExMiwxMDIsNTksMyw1NTM0OSw1NjY0NCw5OSwxMTQsNTksMSw4NDk5LDU5LDEsOTI0LDQsOSw3NCw5Nyw5OSwxMDEsMTAyLDExMSwxMTUsMTE2LDExNywzMjcxLDMyNzYsMzI4MywzMzA2LDM0MjIsMzQyNyw0MTIwLDQxMjYsNDEzNyw5OSwxMjEsNTksMSwxMDM0LDk5LDExNywxMTYsMTAxLDU5LDEsMzIzLDQsMyw5NywxMDEsMTIxLDMyOTEsMzI5NywzMzAzLDExNCwxMTEsMTEwLDU5LDEsMzI3LDEwMCwxMDUsMTA4LDU5LDEsMzI1LDU5LDEsMTA1Myw0LDMsMTAzLDExNSwxMTksMzMxNCwzMzgwLDM0MTUsOTcsMTE2LDEwNSwxMTgsMTAxLDQsMyw3Nyw4NCw4NiwzMzI3LDMzNDAsMzM2NSwxMDEsMTAwLDEwNSwxMTcsMTA5LDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAzLDEwNCwxMDUsNCwyLDk5LDExMCwzMzQ4LDMzNTcsMTA3LDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAzLDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAzLDEwMSwxMTQsMTIxLDg0LDEwNCwxMDUsMTEwLDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAzLDExNiwxMDEsMTAwLDQsMiw3MSw3NiwzMzg5LDM0MDUsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw3MSwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDEsODgxMSwxMDEsMTE1LDExNSw3NiwxMDEsMTE1LDExNSw1OSwxLDg4MTAsNzYsMTA1LDExMCwxMDEsNTksMSwxMCwxMTQsNTksMyw1NTM0OSw1NjU5Myw0LDQsNjYsMTEwLDExMiwxMTYsMzQzNywzNDQ0LDM0NjAsMzQ2NCwxMTQsMTAxLDk3LDEwNyw1OSwxLDgyODgsNjYsMTE0LDEwMSw5NywxMDcsMTA1LDExMCwxMDMsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDE2MCwxMDIsNTksMSw4NDY5LDQsMTMsNTksNjcsNjgsNjksNzEsNzIsNzYsNzgsODAsODIsODMsODQsODYsMzQ5MiwzNDk0LDM1MTcsMzUzNiwzNTc4LDM2NTcsMzY4NSwzNzg0LDM4MjMsMzg2MCwzOTE1LDQwNjYsNDEwNywxLDEwOTg4LDQsMiwxMTEsMTE3LDM1MDAsMzUxMCwxMTAsMTAzLDExNCwxMTcsMTAxLDExMCwxMTYsNTksMSw4ODAyLDExMiw2Nyw5NywxMTIsNTksMSw4ODEzLDExMSwxMTcsOTgsMTA4LDEwMSw4NiwxMDEsMTE0LDExNiwxMDUsOTksOTcsMTA4LDY2LDk3LDExNCw1OSwxLDg3NDIsNCwzLDEwOCwxMTMsMTIwLDM1NDQsMzU1MiwzNTcxLDEwMSwxMDksMTAxLDExMCwxMTYsNTksMSw4NzEzLDExNyw5NywxMDgsNCwyLDU5LDg0LDM1NjEsMzU2MywxLDg4MDAsMTA1LDEwOCwxMDAsMTAxLDU5LDMsODc3MCw4MjQsMTA1LDExNSwxMTYsMTE1LDU5LDEsODcwOCwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDQsNyw1OSw2OSw3MCw3MSw3Niw4Myw4NCwzNjAwLDM2MDIsMzYwOSwzNjIxLDM2MzEsMzYzNywzNjUwLDEsODgxNSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4MTcsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMyw4ODA3LDgyNCwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDMsODgxMSw4MjQsMTAxLDExNSwxMTUsNTksMSw4ODI1LDEwOCw5NywxMTAsMTE2LDY5LDExMywxMTcsOTcsMTA4LDU5LDMsMTA4NzgsODI0LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MjEsMTE3LDEwOSwxMTIsNCwyLDY4LDY5LDM2NjYsMzY3NywxMTEsMTE5LDExMCw3MiwxMTcsMTA5LDExMiw1OSwzLDg3ODIsODI0LDExMywxMTcsOTcsMTA4LDU5LDMsODc4Myw4MjQsMTAxLDQsMiwxMDIsMTE1LDM2OTIsMzcyNCwxMTYsODQsMTE0LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwzLDU5LDY2LDY5LDM3MDksMzcxMSwzNzE3LDEsODkzOCw5NywxMTQsNTksMywxMDcwMyw4MjQsMTEzLDExNyw5NywxMDgsNTksMSw4OTQwLDExNSw0LDYsNTksNjksNzEsNzYsODMsODQsMzczOSwzNzQxLDM3NDgsMzc1NywzNzY0LDM3NzcsMSw4ODE0LDExMywxMTcsOTcsMTA4LDU5LDEsODgxNiwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDEsODgyNCwxMDEsMTE1LDExNSw1OSwzLDg4MTAsODI0LDEwOCw5NywxMTAsMTE2LDY5LDExMywxMTcsOTcsMTA4LDU5LDMsMTA4NzcsODI0LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MjAsMTAxLDExNSwxMTYsMTAxLDEwMCw0LDIsNzEsNzYsMzc5NSwzODEyLDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNzEsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw1OSwzLDEwOTE0LDgyNCwxMDEsMTE1LDExNSw3NiwxMDEsMTE1LDExNSw1OSwzLDEwOTEzLDgyNCwxMTQsMTAxLDk5LDEwMSwxMDAsMTAxLDExNSw0LDMsNTksNjksODMsMzgzOCwzODQwLDM4NDgsMSw4ODMyLDExMywxMTcsOTcsMTA4LDU5LDMsMTA5MjcsODI0LDEwOCw5NywxMTAsMTE2LDY5LDExMywxMTcsOTcsMTA4LDU5LDEsODkyOCw0LDIsMTAxLDEwNSwzODY2LDM4ODEsMTE4LDEwMSwxMTQsMTE1LDEwMSw2OSwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw1OSwxLDg3MTYsMTAzLDEwNCwxMTYsODQsMTE0LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwzLDU5LDY2LDY5LDM5MDAsMzkwMiwzOTA4LDEsODkzOSw5NywxMTQsNTksMywxMDcwNCw4MjQsMTEzLDExNyw5NywxMDgsNTksMSw4OTQxLDQsMiwxMTMsMTE3LDM5MjEsMzk3MywxMTcsOTcsMTE0LDEwMSw4MywxMTcsNCwyLDk4LDExMiwzOTMzLDM5NTIsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDM5NDIsMzk0NSwzLDg4NDcsODI0LDExMywxMTcsOTcsMTA4LDU5LDEsODkzMCwxMDEsMTE0LDExNSwxMDEsMTE2LDQsMiw1OSw2OSwzOTYzLDM5NjYsMyw4ODQ4LDgyNCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg5MzEsNCwzLDk4LDk5LDExMiwzOTgxLDQwMDAsNDA0NSwxMTUsMTAxLDExNiw0LDIsNTksNjksMzk5MCwzOTkzLDMsODgzNCw4NDAyLDExMywxMTcsOTcsMTA4LDU5LDEsODg0MCw5OSwxMDEsMTAxLDEwMCwxMTUsNCw0LDU5LDY5LDgzLDg0LDQwMTUsNDAxNyw0MDI1LDQwMzcsMSw4ODMzLDExMywxMTcsOTcsMTA4LDU5LDMsMTA5MjgsODI0LDEwOCw5NywxMTAsMTE2LDY5LDExMywxMTcsOTcsMTA4LDU5LDEsODkyOSwxMDUsMTA4LDEwMCwxMDEsNTksMyw4ODMxLDgyNCwxMDEsMTE0LDExNSwxMDEsMTE2LDQsMiw1OSw2OSw0MDU2LDQwNTksMyw4ODM1LDg0MDIsMTEzLDExNyw5NywxMDgsNTksMSw4ODQxLDEwNSwxMDgsMTAwLDEwMSw0LDQsNTksNjksNzAsODQsNDA4MCw0MDgyLDQwODksNDEwMCwxLDg3NjksMTEzLDExNyw5NywxMDgsNTksMSw4NzcyLDExNywxMDgsMTA4LDY5LDExMywxMTcsOTcsMTA4LDU5LDEsODc3NSwxMDUsMTA4LDEwMCwxMDEsNTksMSw4Nzc3LDEwMSwxMTQsMTE2LDEwNSw5OSw5NywxMDgsNjYsOTcsMTE0LDU5LDEsODc0MCw5OSwxMTQsNTksMyw1NTM0OSw1NjQ4OSwxMDUsMTA4LDEwMCwxMDEsNSwyMDksMSw1OSw0MTM1LDEsMjA5LDU5LDEsOTI1LDQsMTQsNjksOTcsOTksMTAwLDEwMiwxMDMsMTA5LDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDExOCw0MTcwLDQxNzYsNDE4Nyw0MjA1LDQyMTIsNDIxNyw0MjI4LDQyNTMsNDI1OSw0MjkyLDQyOTUsNDMxNiw0MzM3LDQzNDYsMTA4LDEwNSwxMDMsNTksMSwzMzgsOTksMTE3LDExNiwxMDEsNSwyMTEsMSw1OSw0MTg1LDEsMjExLDQsMiwxMDUsMTIxLDQxOTMsNDIwMiwxMTQsOTksNSwyMTIsMSw1OSw0MjAwLDEsMjEyLDU5LDEsMTA1NCw5OCwxMDgsOTcsOTksNTksMSwzMzYsMTE0LDU5LDMsNTUzNDksNTY1OTQsMTE0LDk3LDExOCwxMDEsNSwyMTAsMSw1OSw0MjI2LDEsMjEwLDQsMyw5NywxMDEsMTA1LDQyMzYsNDI0MSw0MjQ2LDk5LDExNCw1OSwxLDMzMiwxMDMsOTcsNTksMSw5MzcsOTksMTE0LDExMSwxMTAsNTksMSw5MjcsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjQ2LDEwMSwxMTAsNjcsMTE3LDExNCwxMDgsMTIxLDQsMiw2OCw4MSw0MjcyLDQyODUsMTExLDExNyw5OCwxMDgsMTAxLDgxLDExNywxMTEsMTE2LDEwMSw1OSwxLDgyMjAsMTE3LDExMSwxMTYsMTAxLDU5LDEsODIxNiw1OSwxLDEwODM2LDQsMiw5OSwxMDgsNDMwMSw0MzA2LDExNCw1OSwzLDU1MzQ5LDU2NDkwLDk3LDExNSwxMDQsNSwyMTYsMSw1OSw0MzE0LDEsMjE2LDEwNSw0LDIsMTA4LDEwOSw0MzIzLDQzMzIsMTAwLDEwMSw1LDIxMywxLDU5LDQzMzAsMSwyMTMsMTAxLDExNSw1OSwxLDEwODA3LDEwOSwxMDgsNSwyMTQsMSw1OSw0MzQ0LDEsMjE0LDEwMSwxMTQsNCwyLDY2LDgwLDQzNTQsNDM4MCw0LDIsOTcsMTE0LDQzNjAsNDM2NCwxMTQsNTksMSw4MjU0LDk3LDk5LDQsMiwxMDEsMTA3LDQzNzIsNDM3NSw1OSwxLDkxODIsMTAxLDExNiw1OSwxLDkxNDAsOTcsMTE0LDEwMSwxMTAsMTE2LDEwNCwxMDEsMTE1LDEwNSwxMTUsNTksMSw5MTgwLDQsOSw5Nyw5OSwxMDIsMTA0LDEwNSwxMDgsMTExLDExNCwxMTUsNDQxMyw0NDIyLDQ0MjYsNDQzMSw0NDM1LDQ0MzgsNDQ0OCw0NDcxLDQ1NjEsMTE0LDExNiwxMDUsOTcsMTA4LDY4LDU5LDEsODcwNiwxMjEsNTksMSwxMDU1LDExNCw1OSwzLDU1MzQ5LDU2NTk1LDEwNSw1OSwxLDkzNCw1OSwxLDkyOCwxMTcsMTE1LDc3LDEwNSwxMTAsMTE3LDExNSw1OSwxLDE3Nyw0LDIsMTA1LDExMiw0NDU0LDQ0NjcsMTEwLDk5LDk3LDExNCwxMDEsMTEyLDEwOCw5NywxMTAsMTAxLDU5LDEsODQ2MCwxMDIsNTksMSw4NDczLDQsNCw1OSwxMDEsMTA1LDExMSw0NDgxLDQ0ODMsNDUyNiw0NTMxLDEsMTA5MzksOTksMTAxLDEwMCwxMDEsMTE1LDQsNCw1OSw2OSw4Myw4NCw0NDk4LDQ1MDAsNDUwNyw0NTE5LDEsODgyNiwxMTMsMTE3LDk3LDEwOCw1OSwxLDEwOTI3LDEwOCw5NywxMTAsMTE2LDY5LDExMywxMTcsOTcsMTA4LDU5LDEsODgyOCwxMDUsMTA4LDEwMCwxMDEsNTksMSw4ODMwLDEwOSwxMDEsNTksMSw4MjQzLDQsMiwxMDAsMTEyLDQ1MzcsNDU0MywxMTcsOTksMTE2LDU5LDEsODcxOSwxMTEsMTE0LDExNiwxMDUsMTExLDExMCw0LDIsNTksOTcsNDU1NSw0NTU3LDEsODc1OSwxMDgsNTksMSw4NzMzLDQsMiw5OSwxMDUsNDU2Nyw0NTcyLDExNCw1OSwzLDU1MzQ5LDU2NDkxLDU5LDEsOTM2LDQsNCw4NSwxMDIsMTExLDExNSw0NTg1LDQ1OTQsNDU5OSw0NjA0LDc5LDg0LDUsMzQsMSw1OSw0NTkyLDEsMzQsMTE0LDU5LDMsNTUzNDksNTY1OTYsMTEyLDEwMiw1OSwxLDg0NzQsOTksMTE0LDU5LDMsNTUzNDksNTY0OTIsNCwxMiw2Niw2OSw5Nyw5OSwxMDEsMTAyLDEwNCwxMDUsMTExLDExNCwxMTUsMTE3LDQ2MzYsNDY0Miw0NjUwLDQ2ODEsNDcwNCw0NzYzLDQ3NjcsNDc3MSw1MDQ3LDUwNjksNTA4MSw1MDk0LDk3LDExNCwxMTQsNTksMSwxMDUxMiw3MSw1LDE3NCwxLDU5LDQ2NDgsMSwxNzQsNCwzLDk5LDExMCwxMTQsNDY1OCw0NjY0LDQ2NjgsMTE3LDExNiwxMDEsNTksMSwzNDAsMTAzLDU5LDEsMTAyMTksMTE0LDQsMiw1OSwxMTYsNDY3NSw0Njc3LDEsODYwOCwxMDgsNTksMSwxMDUxOCw0LDMsOTcsMTAxLDEyMSw0Njg5LDQ2OTUsNDcwMSwxMTQsMTExLDExMCw1OSwxLDM0NCwxMDAsMTA1LDEwOCw1OSwxLDM0Miw1OSwxLDEwNTYsNCwyLDU5LDExOCw0NzEwLDQ3MTIsMSw4NDc2LDEwMSwxMTQsMTE1LDEwMSw0LDIsNjksODUsNDcyMiw0NzQ4LDQsMiwxMDgsMTEzLDQ3MjgsNDczNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDU5LDEsODcxNSwxMTcsMTA1LDEwOCwxMDUsOTgsMTE0LDEwNSwxMTcsMTA5LDU5LDEsODY1MSwxMTIsNjksMTEzLDExNywxMDUsMTA4LDEwNSw5OCwxMTQsMTA1LDExNywxMDksNTksMSwxMDYwNywxMTQsNTksMSw4NDc2LDExMSw1OSwxLDkyOSwxMDMsMTA0LDExNiw0LDgsNjUsNjcsNjgsNzAsODQsODUsODYsOTcsNDc5Miw0ODQwLDQ4NDksNDkwNSw0OTEyLDQ5NzIsNTAyMiw1MDQwLDQsMiwxMTAsMTE0LDQ3OTgsNDgxMSwxMDMsMTA4LDEwMSw2NiwxMTQsOTcsOTksMTA3LDEwMSwxMTYsNTksMSwxMDIxNywxMTQsMTExLDExOSw0LDMsNTksNjYsNzYsNDgyMiw0ODI0LDQ4MjksMSw4NTk0LDk3LDExNCw1OSwxLDg2NzcsMTAxLDEwMiwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY0NCwxMDEsMTA1LDEwOCwxMDUsMTEwLDEwMyw1OSwxLDg5NjksMTExLDQsMiwxMTcsMTE5LDQ4NTYsNDg2OSw5OCwxMDgsMTAxLDY2LDExNCw5Nyw5OSwxMDcsMTAxLDExNiw1OSwxLDEwMjE1LDExMCw0LDIsODQsODYsNDg3Niw0ODg3LDEwMSwxMDEsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1ODksMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2Niw0ODk4LDQ5MDAsMSw4NjQyLDk3LDExNCw1OSwxLDEwNTgxLDEwOCwxMTEsMTExLDExNCw1OSwxLDg5NzEsNCwyLDEwMSwxMTQsNDkxOCw0OTQ0LDEwMSw0LDMsNTksNjUsODYsNDkyNyw0OTI5LDQ5MzYsMSw4ODY2LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MTQsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1ODcsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDMsNTksNjYsNjksNDk1OCw0OTYwLDQ5NjUsMSw4ODgzLDk3LDExNCw1OSwxLDEwNzA0LDExMywxMTcsOTcsMTA4LDU5LDEsODg4NSwxMTIsNCwzLDY4LDg0LDg2LDQ5ODEsNDk5Myw1MDA0LDExMSwxMTksMTEwLDg2LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTc1LDEwMSwxMDEsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1ODgsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2Niw1MDE1LDUwMTcsMSw4NjM4LDk3LDExNCw1OSwxLDEwNTgwLDEwMSw5OSwxMTYsMTExLDExNCw0LDIsNTksNjYsNTAzMyw1MDM1LDEsODY0MCw5NywxMTQsNTksMSwxMDU3OSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjU4LDQsMiwxMTIsMTE3LDUwNTMsNTA1NywxMDIsNTksMSw4NDc3LDExMCwxMDAsNzMsMTA5LDExMiwxMDgsMTA1LDEwMSwxMTUsNTksMSwxMDYwOCwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY2Nyw0LDIsOTksMTA0LDUwODcsNTA5MSwxMTQsNTksMSw4NDc1LDU5LDEsODYyNSwxMDgsMTAxLDY4LDEwMSwxMDgsOTcsMTIxLDEwMSwxMDAsNTksMSwxMDc0MCw0LDEzLDcyLDc5LDk3LDk5LDEwMiwxMDQsMTA1LDEwOSwxMTEsMTEzLDExNSwxMTYsMTE3LDUxMzQsNTE1MCw1MTU3LDUxNjQsNTE5OCw1MjAzLDUyNTksNTI2NSw1Mjc3LDUyODMsNTM3NCw1MzgwLDUzODUsNCwyLDY3LDk5LDUxNDAsNTE0Niw3Miw5OSwxMjEsNTksMSwxMDY1LDEyMSw1OSwxLDEwNjQsNzAsODQsOTksMTIxLDU5LDEsMTA2OCw5OSwxMTcsMTE2LDEwMSw1OSwxLDM0Niw0LDUsNTksOTcsMTAxLDEwNSwxMjEsNTE3Niw1MTc4LDUxODQsNTE5MCw1MTk1LDEsMTA5NDAsMTE0LDExMSwxMTAsNTksMSwzNTIsMTAwLDEwNSwxMDgsNTksMSwzNTAsMTE0LDk5LDU5LDEsMzQ4LDU5LDEsMTA1NywxMTQsNTksMyw1NTM0OSw1NjU5OCwxMTEsMTE0LDExNiw0LDQsNjgsNzYsODIsODUsNTIxNiw1MjI3LDUyMzgsNTI1MCwxMTEsMTE5LDExMCw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk1LDEwMSwxMDIsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTIsMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTQsMTEyLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTMsMTAzLDEwOSw5Nyw1OSwxLDkzMSw5NywxMDgsMTA4LDY3LDEwNSwxMTQsOTksMTA4LDEwMSw1OSwxLDg3MjgsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjUwLDQsMiwxMTQsMTE3LDUyODksNTI5MywxMTYsNTksMSw4NzMwLDk3LDExNCwxMDEsNCw0LDU5LDczLDgzLDg1LDUzMDYsNTMwOCw1MzIyLDUzNjcsMSw5NjMzLDExMCwxMTYsMTAxLDExNCwxMTUsMTAxLDk5LDExNiwxMDUsMTExLDExMCw1OSwxLDg4NTEsMTE3LDQsMiw5OCwxMTIsNTMyOSw1MzQ3LDExNSwxMDEsMTE2LDQsMiw1OSw2OSw1MzM4LDUzNDAsMSw4ODQ3LDExMywxMTcsOTcsMTA4LDU5LDEsODg0OSwxMDEsMTE0LDExNSwxMDEsMTE2LDQsMiw1OSw2OSw1MzU4LDUzNjAsMSw4ODQ4LDExMywxMTcsOTcsMTA4LDU5LDEsODg1MCwxMTAsMTA1LDExMSwxMTAsNTksMSw4ODUyLDk5LDExNCw1OSwzLDU1MzQ5LDU2NDk0LDk3LDExNCw1OSwxLDg5MDIsNCw0LDk4LDk5LDEwOSwxMTIsNTM5NSw1NDIwLDU0NzUsNTQ3OCw0LDIsNTksMTE1LDU0MDEsNTQwMywxLDg5MTIsMTAxLDExNiw0LDIsNTksNjksNTQxMSw1NDEzLDEsODkxMiwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4MzgsNCwyLDk5LDEwNCw1NDI2LDU0NjgsMTAxLDEwMSwxMDAsMTE1LDQsNCw1OSw2OSw4Myw4NCw1NDQwLDU0NDIsNTQ0OSw1NDYxLDEsODgyNywxMTMsMTE3LDk3LDEwOCw1OSwxLDEwOTI4LDEwOCw5NywxMTAsMTE2LDY5LDExMywxMTcsOTcsMTA4LDU5LDEsODgyOSwxMDUsMTA4LDEwMCwxMDEsNTksMSw4ODMxLDg0LDEwNCw5NywxMTYsNTksMSw4NzE1LDU5LDEsODcyMSw0LDMsNTksMTAxLDExNSw1NDg2LDU0ODgsNTUwNywxLDg5MTMsMTE0LDExNSwxMDEsMTE2LDQsMiw1OSw2OSw1NDk4LDU1MDAsMSw4ODM1LDExMywxMTcsOTcsMTA4LDU5LDEsODgzOSwxMDEsMTE2LDU5LDEsODkxMyw0LDExLDcyLDgyLDgzLDk3LDk5LDEwMiwxMDQsMTA1LDExMSwxMTQsMTE1LDU1MzYsNTU0Niw1NTUyLDU1NjcsNTU3OSw1NjAyLDU2MDcsNTY1NSw1Njk1LDU3MDEsNTcxMSw3OSw4Miw3OCw1LDIyMiwxLDU5LDU1NDQsMSwyMjIsNjUsNjgsNjksNTksMSw4NDgyLDQsMiw3Miw5OSw1NTU4LDU1NjMsOTksMTIxLDU5LDEsMTAzNSwxMjEsNTksMSwxMDYyLDQsMiw5OCwxMTcsNTU3Myw1NTc2LDU5LDEsOSw1OSwxLDkzMiw0LDMsOTcsMTAxLDEyMSw1NTg3LDU1OTMsNTU5OSwxMTQsMTExLDExMCw1OSwxLDM1NiwxMDAsMTA1LDEwOCw1OSwxLDM1NCw1OSwxLDEwNTgsMTE0LDU5LDMsNTUzNDksNTY1OTksNCwyLDEwMSwxMDUsNTYxMyw1NjMxLDQsMiwxMTQsMTE2LDU2MTksNTYyNywxMDEsMTAyLDExMSwxMTQsMTAxLDU5LDEsODc1Niw5Nyw1OSwxLDkyMCw0LDIsOTksMTEwLDU2MzcsNTY0NywxMDcsODMsMTEyLDk3LDk5LDEwMSw1OSwzLDgyODcsODIwMiw4MywxMTIsOTcsOTksMTAxLDU5LDEsODIwMSwxMDgsMTAwLDEwMSw0LDQsNTksNjksNzAsODQsNTY2OCw1NjcwLDU2NzcsNTY4OCwxLDg3NjQsMTEzLDExNyw5NywxMDgsNTksMSw4NzcxLDExNywxMDgsMTA4LDY5LDExMywxMTcsOTcsMTA4LDU5LDEsODc3MywxMDUsMTA4LDEwMCwxMDEsNTksMSw4Nzc2LDExMiwxMDIsNTksMyw1NTM0OSw1NjY1MSwxMDUsMTEyLDEwOCwxMDEsNjgsMTExLDExNiw1OSwxLDg0MTEsNCwyLDk5LDExNiw1NzE3LDU3MjIsMTE0LDU5LDMsNTUzNDksNTY0OTUsMTE0LDExMSwxMDcsNTksMSwzNTgsNCwxNCw5Nyw5OCw5OSwxMDAsMTAyLDEwMywxMDksMTEwLDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDU3NTgsNTc4OSw1ODA1LDU4MjMsNTgzMCw1ODM1LDU4NDYsNTg1Miw1OTIxLDU5MzcsNjA4OSw2MDk1LDYxMDEsNjEwOCw0LDIsOTksMTE0LDU3NjQsNTc3NCwxMTcsMTE2LDEwMSw1LDIxOCwxLDU5LDU3NzIsMSwyMTgsMTE0LDQsMiw1OSwxMTEsNTc4MSw1NzgzLDEsODYwNyw5OSwxMDUsMTE0LDU5LDEsMTA1NjksMTE0LDQsMiw5OSwxMDEsNTc5Niw1ODAwLDEyMSw1OSwxLDEwMzgsMTE4LDEwMSw1OSwxLDM2NCw0LDIsMTA1LDEyMSw1ODExLDU4MjAsMTE0LDk5LDUsMjE5LDEsNTksNTgxOCwxLDIxOSw1OSwxLDEwNTksOTgsMTA4LDk3LDk5LDU5LDEsMzY4LDExNCw1OSwzLDU1MzQ5LDU2NjAwLDExNCw5NywxMTgsMTAxLDUsMjE3LDEsNTksNTg0NCwxLDIxNyw5Nyw5OSwxMTQsNTksMSwzNjIsNCwyLDEwMCwxMDUsNTg1OCw1OTA1LDEwMSwxMTQsNCwyLDY2LDgwLDU4NjYsNTg5Miw0LDIsOTcsMTE0LDU4NzIsNTg3NiwxMTQsNTksMSw5NSw5Nyw5OSw0LDIsMTAxLDEwNyw1ODg0LDU4ODcsNTksMSw5MTgzLDEwMSwxMTYsNTksMSw5MTQxLDk3LDExNCwxMDEsMTEwLDExNiwxMDQsMTAxLDExNSwxMDUsMTE1LDU5LDEsOTE4MSwxMTEsMTEwLDQsMiw1OSw4MCw1OTEzLDU5MTUsMSw4ODk5LDEwOCwxMTcsMTE1LDU5LDEsODg0Niw0LDIsMTAzLDExMiw1OTI3LDU5MzIsMTExLDExMCw1OSwxLDM3MCwxMDIsNTksMyw1NTM0OSw1NjY1Miw0LDgsNjUsNjgsNjksODQsOTcsMTAwLDExMiwxMTUsNTk1NSw1OTg1LDU5OTYsNjAwOSw2MDI2LDYwMzMsNjA0NCw2MDc1LDExNCwxMTQsMTExLDExOSw0LDMsNTksNjYsNjgsNTk2Nyw1OTY5LDU5NzQsMSw4NTkzLDk3LDExNCw1OSwxLDEwNTE0LDExMSwxMTksMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NDUsMTExLDExOSwxMTAsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5NywxMTMsMTE3LDEwNSwxMDgsMTA1LDk4LDExNCwxMDUsMTE3LDEwOSw1OSwxLDEwNjA2LDEwMSwxMDEsNCwyLDU5LDY1LDYwMTcsNjAxOSwxLDg4NjksMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxMywxMTQsMTE0LDExMSwxMTksNTksMSw4NjU3LDExMSwxMTksMTEwLDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjEsMTAxLDExNCw0LDIsNzYsODIsNjA1Miw2MDYzLDEwMSwxMDIsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTgsMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTksMTA1LDQsMiw1OSwxMDgsNjA4Miw2MDg0LDEsOTc4LDExMSwxMTAsNTksMSw5MzMsMTA1LDExMCwxMDMsNTksMSwzNjYsOTksMTE0LDU5LDMsNTUzNDksNTY0OTYsMTA1LDEwOCwxMDAsMTAxLDU5LDEsMzYwLDEwOSwxMDgsNSwyMjAsMSw1OSw2MTE1LDEsMjIwLDQsOSw2OCw5OCw5OSwxMDAsMTAxLDEwMiwxMTEsMTE1LDExOCw2MTM3LDYxNDMsNjE0OCw2MTUyLDYxNjYsNjI1MCw2MjU1LDYyNjEsNjI2Nyw5NywxMTUsMTA0LDU5LDEsODg3NSw5NywxMTQsNTksMSwxMDk4NywxMjEsNTksMSwxMDQyLDk3LDExNSwxMDQsNCwyLDU5LDEwOCw2MTYxLDYxNjMsMSw4ODczLDU5LDEsMTA5ODIsNCwyLDEwMSwxMTQsNjE3Miw2MTc1LDU5LDEsODg5Nyw0LDMsOTgsMTE2LDEyMSw2MTgzLDYxODgsNjIzOCw5NywxMTQsNTksMSw4MjE0LDQsMiw1OSwxMDUsNjE5NCw2MTk2LDEsODIxNCw5OSw5NywxMDgsNCw0LDY2LDc2LDgzLDg0LDYyMDksNjIxNCw2MjIwLDYyMzEsOTcsMTE0LDU5LDEsODczOSwxMDUsMTEwLDEwMSw1OSwxLDEyNCwxMDEsMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCw1OSwxLDEwMDcyLDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg3NjgsODQsMTA0LDEwNSwxMTAsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDIsMTE0LDU5LDMsNTUzNDksNTY2MDEsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjUzLDk5LDExNCw1OSwzLDU1MzQ5LDU2NDk3LDEwMCw5NywxMTUsMTA0LDU5LDEsODg3NCw0LDUsOTksMTAxLDEwMiwxMTEsMTE1LDYyODYsNjI5Miw2Mjk4LDYzMDMsNjMwOSwxMDUsMTE0LDk5LDU5LDEsMzcyLDEwMCwxMDMsMTAxLDU5LDEsODg5NiwxMTQsNTksMyw1NTM0OSw1NjYwMiwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NTQsOTksMTE0LDU5LDMsNTUzNDksNTY0OTgsNCw0LDEwMiwxMDUsMTExLDExNSw2MzI1LDYzMzAsNjMzMyw2MzM5LDExNCw1OSwzLDU1MzQ5LDU2NjAzLDU5LDEsOTI2LDExMiwxMDIsNTksMyw1NTM0OSw1NjY1NSw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5OSw0LDksNjUsNzMsODUsOTcsOTksMTAyLDExMSwxMTUsMTE3LDYzNjUsNjM3MCw2Mzc1LDYzODAsNjM5MSw2NDA1LDY0MTAsNjQxNiw2NDIyLDk5LDEyMSw1OSwxLDEwNzEsOTksMTIxLDU5LDEsMTAzMSw5OSwxMjEsNTksMSwxMDcwLDk5LDExNywxMTYsMTAxLDUsMjIxLDEsNTksNjM4OSwxLDIyMSw0LDIsMTA1LDEyMSw2Mzk3LDY0MDIsMTE0LDk5LDU5LDEsMzc0LDU5LDEsMTA2NywxMTQsNTksMyw1NTM0OSw1NjYwNCwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NTYsOTksMTE0LDU5LDMsNTUzNDksNTY1MDAsMTA5LDEwOCw1OSwxLDM3Niw0LDgsNzIsOTcsOTksMTAwLDEwMSwxMDIsMTExLDExNSw2NDQ1LDY0NTAsNjQ1Nyw2NDcyLDY0NzcsNjUwMSw2NTA1LDY1MTAsOTksMTIxLDU5LDEsMTA0Niw5OSwxMTcsMTE2LDEwMSw1OSwxLDM3Nyw0LDIsOTcsMTIxLDY0NjMsNjQ2OSwxMTQsMTExLDExMCw1OSwxLDM4MSw1OSwxLDEwNDcsMTExLDExNiw1OSwxLDM3OSw0LDIsMTE0LDExNiw2NDgzLDY0OTcsMTExLDg3LDEwNSwxMDAsMTE2LDEwNCw4MywxMTIsOTcsOTksMTAxLDU5LDEsODIwMyw5Nyw1OSwxLDkxOCwxMTQsNTksMSw4NDg4LDExMiwxMDIsNTksMSw4NDg0LDk5LDExNCw1OSwzLDU1MzQ5LDU2NTAxLDQsMTYsOTcsOTgsOTksMTAxLDEwMiwxMDMsMTA4LDEwOSwxMTAsMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE5LDY1NTAsNjU2MSw2NTY4LDY2MTIsNjYyMiw2NjM0LDY2NDUsNjY3Miw2Njk5LDY4NTQsNjg3MCw2OTIzLDY5MzMsNjk2Myw2OTc0LDY5ODMsOTksMTE3LDExNiwxMDEsNSwyMjUsMSw1OSw2NTU5LDEsMjI1LDExNCwxMDEsMTE4LDEwMSw1OSwxLDI1OSw0LDYsNTksNjksMTAwLDEwNSwxMTcsMTIxLDY1ODIsNjU4NCw2NTg4LDY1OTEsNjYwMCw2NjA5LDEsODc2Niw1OSwzLDg3NjYsODE5LDU5LDEsODc2NywxMTQsOTksNSwyMjYsMSw1OSw2NTk4LDEsMjI2LDExNiwxMDEsNSwxODAsMSw1OSw2NjA3LDEsMTgwLDU5LDEsMTA3MiwxMDgsMTA1LDEwMyw1LDIzMCwxLDU5LDY2MjAsMSwyMzAsNCwyLDU5LDExNCw2NjI4LDY2MzAsMSw4Mjg5LDU5LDMsNTUzNDksNTY2MDYsMTE0LDk3LDExOCwxMDEsNSwyMjQsMSw1OSw2NjQzLDEsMjI0LDQsMiwxMDEsMTEyLDY2NTEsNjY2Nyw0LDIsMTAyLDExMiw2NjU3LDY2NjMsMTE1LDEyMSwxMDksNTksMSw4NTAxLDEwNCw1OSwxLDg1MDEsMTA0LDk3LDU5LDEsOTQ1LDQsMiw5NywxMTIsNjY3OCw2NjkyLDQsMiw5OSwxMDgsNjY4NCw2Njg4LDExNCw1OSwxLDI1NywxMDMsNTksMSwxMDgxNSw1LDM4LDEsNTksNjY5NywxLDM4LDQsMiwxMDAsMTAzLDY3MDUsNjczNyw0LDUsNTksOTcsMTAwLDExNSwxMTgsNjcxNyw2NzE5LDY3MjQsNjcyNyw2NzM0LDEsODc0MywxMTAsMTAwLDU5LDEsMTA4MzcsNTksMSwxMDg0NCwxMDgsMTExLDExMiwxMDEsNTksMSwxMDg0MCw1OSwxLDEwODQyLDQsNyw1OSwxMDEsMTA4LDEwOSwxMTQsMTE1LDEyMiw2NzUzLDY3NTUsNjc1OCw2NzYyLDY4MTQsNjgzNSw2ODQ4LDEsODczNiw1OSwxLDEwNjYwLDEwMSw1OSwxLDg3MzYsMTE1LDEwMCw0LDIsNTksOTcsNjc3MCw2NzcyLDEsODczNyw0LDgsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCw2NzkwLDY3OTMsNjc5Niw2Nzk5LDY4MDIsNjgwNSw2ODA4LDY4MTEsNTksMSwxMDY2NCw1OSwxLDEwNjY1LDU5LDEsMTA2NjYsNTksMSwxMDY2Nyw1OSwxLDEwNjY4LDU5LDEsMTA2NjksNTksMSwxMDY3MCw1OSwxLDEwNjcxLDExNiw0LDIsNTksMTE4LDY4MjEsNjgyMywxLDg3MzUsOTgsNCwyLDU5LDEwMCw2ODMwLDY4MzIsMSw4ODk0LDU5LDEsMTA2NTMsNCwyLDExMiwxMTYsNjg0MSw2ODQ1LDEwNCw1OSwxLDg3MzgsNTksMSwxOTcsOTcsMTE0LDExNCw1OSwxLDkwODQsNCwyLDEwMywxMTIsNjg2MCw2ODY1LDExMSwxMTAsNTksMSwyNjEsMTAyLDU5LDMsNTUzNDksNTY2NTgsNCw3LDU5LDY5LDk3LDEwMSwxMDUsMTExLDExMiw2ODg2LDY4ODgsNjg5MSw2ODk3LDY5MDAsNjkwNCw2OTA4LDEsODc3Niw1OSwxLDEwODY0LDk5LDEwNSwxMTQsNTksMSwxMDg2Myw1OSwxLDg3NzgsMTAwLDU5LDEsODc3OSwxMTUsNTksMSwzOSwxMTQsMTExLDEyMCw0LDIsNTksMTAxLDY5MTcsNjkxOSwxLDg3NzYsMTEzLDU5LDEsODc3OCwxMDUsMTEwLDEwMyw1LDIyOSwxLDU5LDY5MzEsMSwyMjksNCwzLDk5LDExNiwxMjEsNjk0MSw2OTQ2LDY5NDksMTE0LDU5LDMsNTUzNDksNTY1MDIsNTksMSw0MiwxMDksMTEyLDQsMiw1OSwxMDEsNjk1Nyw2OTU5LDEsODc3NiwxMTMsNTksMSw4NzgxLDEwNSwxMDgsMTAwLDEwMSw1LDIyNywxLDU5LDY5NzIsMSwyMjcsMTA5LDEwOCw1LDIyOCwxLDU5LDY5ODEsMSwyMjgsNCwyLDk5LDEwNSw2OTg5LDY5OTcsMTExLDExMCwxMDUsMTEwLDExNiw1OSwxLDg3NTUsMTEwLDExNiw1OSwxLDEwNzY5LDQsMTYsNzgsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTA1LDEwNywxMDgsMTEwLDExMSwxMTIsMTE0LDExNSwxMTcsNzAzNiw3MDQxLDcxMTksNzEzNSw3MTQ5LDcxNTUsNzIxOSw3MjI0LDczNDcsNzM1NCw3NDYzLDc0ODksNzc4Niw3NzkzLDc4MTQsNzg2NiwxMTEsMTE2LDU5LDEsMTA5ODksNCwyLDk5LDExNCw3MDQ3LDcwOTQsMTA3LDQsNCw5OSwxMDEsMTEyLDExNSw3MDU4LDcwNjQsNzA3Myw3MDgwLDExMSwxMTAsMTAzLDU5LDEsODc4MCwxMTIsMTE1LDEwNSwxMDgsMTExLDExMCw1OSwxLDEwMTQsMTE0LDEwNSwxMDksMTAxLDU5LDEsODI0NSwxMDUsMTA5LDQsMiw1OSwxMDEsNzA4OCw3MDkwLDEsODc2NSwxMTMsNTksMSw4OTA5LDQsMiwxMTgsMTE5LDcxMDAsNzEwNSwxMDEsMTAxLDU5LDEsODg5MywxMDEsMTAwLDQsMiw1OSwxMDMsNzExMyw3MTE1LDEsODk2NSwxMDEsNTksMSw4OTY1LDExNCwxMDcsNCwyLDU5LDExNiw3MTI3LDcxMjksMSw5MTQxLDk4LDExNCwxMDcsNTksMSw5MTQyLDQsMiwxMTEsMTIxLDcxNDEsNzE0NiwxMTAsMTAzLDU5LDEsODc4MCw1OSwxLDEwNzMsMTEzLDExNywxMTEsNTksMSw4MjIyLDQsNSw5OSwxMDksMTEyLDExNCwxMTYsNzE2Nyw3MTgxLDcxODgsNzE5Myw3MTk5LDk3LDExNywxMTUsNCwyLDU5LDEwMSw3MTc2LDcxNzgsMSw4NzU3LDU5LDEsODc1NywxMTIsMTE2LDEyMSwxMTgsNTksMSwxMDY3MiwxMTUsMTA1LDU5LDEsMTAxNCwxMTAsMTExLDExNyw1OSwxLDg0OTIsNCwzLDk3LDEwNCwxMTksNzIwNyw3MjEwLDcyMTMsNTksMSw5NDYsNTksMSw4NTAyLDEwMSwxMDEsMTEwLDU5LDEsODgxMiwxMTQsNTksMyw1NTM0OSw1NjYwNywxMDMsNCw3LDk5LDExMSwxMTUsMTE2LDExNywxMTgsMTE5LDcyNDEsNzI2Miw3Mjg4LDczMDUsNzMyOCw3MzM1LDczNDAsNCwzLDk3LDEwNSwxMTcsNzI0OSw3MjUzLDcyNTgsMTEyLDU5LDEsODg5OCwxMTQsOTksNTksMSw5NzExLDExMiw1OSwxLDg4OTksNCwzLDEwMCwxMTIsMTE2LDcyNzAsNzI3NSw3MjgxLDExMSwxMTYsNTksMSwxMDc1MiwxMDgsMTE3LDExNSw1OSwxLDEwNzUzLDEwNSwxMDksMTAxLDExNSw1OSwxLDEwNzU0LDQsMiwxMTMsMTE2LDcyOTQsNzMwMCw5OSwxMTcsMTEyLDU5LDEsMTA3NTgsOTcsMTE0LDU5LDEsOTczMywxMTQsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDIsMTAwLDExNyw3MzE4LDczMjQsMTExLDExOSwxMTAsNTksMSw5NjYxLDExMiw1OSwxLDk2NTEsMTEyLDEwOCwxMTcsMTE1LDU5LDEsMTA3NTYsMTAxLDEwMSw1OSwxLDg4OTcsMTAxLDEwMCwxMDMsMTAxLDU5LDEsODg5Niw5NywxMTQsMTExLDExOSw1OSwxLDEwNTA5LDQsMyw5NywxMDcsMTExLDczNjIsNzQzNiw3NDU4LDQsMiw5OSwxMTAsNzM2OCw3NDMyLDEwNyw0LDMsMTA4LDExNSwxMTYsNzM3Nyw3Mzg2LDczOTQsMTExLDEyMiwxMDEsMTEwLDEwMywxMDEsNTksMSwxMDczMSwxMTMsMTE3LDk3LDExNCwxMDEsNTksMSw5NjQyLDExNCwxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsNCw1OSwxMDAsMTA4LDExNCw3NDExLDc0MTMsNzQxOSw3NDI1LDEsOTY1MiwxMTEsMTE5LDExMCw1OSwxLDk2NjIsMTAxLDEwMiwxMTYsNTksMSw5NjY2LDEwNSwxMDMsMTA0LDExNiw1OSwxLDk2NTYsMTA3LDU5LDEsOTI1MSw0LDIsNDksNTEsNzQ0Miw3NDU0LDQsMiw1MCw1Miw3NDQ4LDc0NTEsNTksMSw5NjE4LDU5LDEsOTYxNyw1Miw1OSwxLDk2MTksOTksMTA3LDU5LDEsOTYwOCw0LDIsMTAxLDExMSw3NDY5LDc0ODUsNCwyLDU5LDExMyw3NDc1LDc0NzgsMyw2MSw4NDIxLDExNywxMDUsMTE4LDU5LDMsODgwMSw4NDIxLDExNiw1OSwxLDg5NzYsNCw0LDExMiwxMTYsMTE5LDEyMCw3NDk5LDc1MDQsNzUxNyw3NTIzLDEwMiw1OSwzLDU1MzQ5LDU2NjU5LDQsMiw1OSwxMTYsNzUxMCw3NTEyLDEsODg2OSwxMTEsMTA5LDU5LDEsODg2OSwxMTYsMTA1LDEwMSw1OSwxLDg5MDQsNCwxMiw2OCw3Miw4NSw4Niw5OCwxMDAsMTA0LDEwOSwxMTIsMTE2LDExNywxMTgsNzU0OSw3NTcxLDc1OTcsNzYxOSw3NjU1LDc2NjAsNzY4Miw3NzA4LDc3MTUsNzcyMSw3NzI4LDc3NTAsNCw0LDc2LDgyLDEwOCwxMTQsNzU1OSw3NTYyLDc1NjUsNzU2OCw1OSwxLDk1NTksNTksMSw5NTU2LDU5LDEsOTU1OCw1OSwxLDk1NTUsNCw1LDU5LDY4LDg1LDEwMCwxMTcsNzU4Myw3NTg1LDc1ODgsNzU5MSw3NTk0LDEsOTU1Miw1OSwxLDk1NzQsNTksMSw5NTc3LDU5LDEsOTU3Miw1OSwxLDk1NzUsNCw0LDc2LDgyLDEwOCwxMTQsNzYwNyw3NjEwLDc2MTMsNzYxNiw1OSwxLDk1NjUsNTksMSw5NTYyLDU5LDEsOTU2NCw1OSwxLDk1NjEsNCw3LDU5LDcyLDc2LDgyLDEwNCwxMDgsMTE0LDc2MzUsNzYzNyw3NjQwLDc2NDMsNzY0Niw3NjQ5LDc2NTIsMSw5NTUzLDU5LDEsOTU4MCw1OSwxLDk1NzEsNTksMSw5NTY4LDU5LDEsOTU3OSw1OSwxLDk1NzAsNTksMSw5NTY3LDExMSwxMjAsNTksMSwxMDY5Nyw0LDQsNzYsODIsMTA4LDExNCw3NjcwLDc2NzMsNzY3Niw3Njc5LDU5LDEsOTU1Nyw1OSwxLDk1NTQsNTksMSw5NDg4LDU5LDEsOTQ4NCw0LDUsNTksNjgsODUsMTAwLDExNyw3Njk0LDc2OTYsNzY5OSw3NzAyLDc3MDUsMSw5NDcyLDU5LDEsOTU3Myw1OSwxLDk1NzYsNTksMSw5NTE2LDU5LDEsOTUyNCwxMDUsMTEwLDExNywxMTUsNTksMSw4ODYzLDEwOCwxMTcsMTE1LDU5LDEsODg2MiwxMDUsMTA5LDEwMSwxMTUsNTksMSw4ODY0LDQsNCw3Niw4MiwxMDgsMTE0LDc3MzgsNzc0MSw3NzQ0LDc3NDcsNTksMSw5NTYzLDU5LDEsOTU2MCw1OSwxLDk0OTYsNTksMSw5NDkyLDQsNyw1OSw3Miw3Niw4MiwxMDQsMTA4LDExNCw3NzY2LDc3NjgsNzc3MSw3Nzc0LDc3NzcsNzc4MCw3NzgzLDEsOTQ3NCw1OSwxLDk1NzgsNTksMSw5NTY5LDU5LDEsOTU2Niw1OSwxLDk1MzIsNTksMSw5NTA4LDU5LDEsOTUwMCwxMTQsMTA1LDEwOSwxMDEsNTksMSw4MjQ1LDQsMiwxMDEsMTE4LDc3OTksNzgwNCwxMTgsMTAxLDU5LDEsNzI4LDk4LDk3LDExNCw1LDE2NiwxLDU5LDc4MTIsMSwxNjYsNCw0LDk5LDEwMSwxMDUsMTExLDc4MjQsNzgyOSw3ODM0LDc4NDYsMTE0LDU5LDMsNTUzNDksNTY1MDMsMTA5LDEwNSw1OSwxLDgyNzEsMTA5LDQsMiw1OSwxMDEsNzg0MSw3ODQzLDEsODc2NSw1OSwxLDg5MDksMTA4LDQsMyw1OSw5OCwxMDQsNzg1NSw3ODU3LDc4NjAsMSw5Miw1OSwxLDEwNjkzLDExNSwxMTcsOTgsNTksMSwxMDE4NCw0LDIsMTA4LDEwOSw3ODcyLDc4ODUsMTA4LDQsMiw1OSwxMDEsNzg3OSw3ODgxLDEsODIyNiwxMTYsNTksMSw4MjI2LDExMiw0LDMsNTksNjksMTAxLDc4OTQsNzg5Niw3ODk5LDEsODc4Miw1OSwxLDEwOTI2LDQsMiw1OSwxMTMsNzkwNSw3OTA3LDEsODc4Myw1OSwxLDg3ODMsNCwxNSw5Nyw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDEwOCwxMTEsMTE0LDExNSwxMTYsMTE3LDExOSwxMjEsNzk0Miw4MDIxLDgwNzUsODA4MCw4MTIxLDgxMjYsODE1Nyw4Mjc5LDgyOTUsODQzMCw4NDQ2LDg0ODUsODQ5MSw4NzA3LDg3MjYsNCwzLDk5LDExMiwxMTQsNzk1MCw3OTU2LDgwMDcsMTE3LDExNiwxMDEsNTksMSwyNjMsNCw2LDU5LDk3LDk4LDk5LDEwMCwxMTUsNzk3MCw3OTcyLDc5NzcsNzk4NCw3OTk4LDgwMDMsMSw4NzQ1LDExMCwxMDAsNTksMSwxMDgyMCwxMTQsOTksMTE3LDExMiw1OSwxLDEwODI1LDQsMiw5NywxMTcsNzk5MCw3OTk0LDExMiw1OSwxLDEwODI3LDExMiw1OSwxLDEwODIzLDExMSwxMTYsNTksMSwxMDgxNiw1OSwzLDg3NDUsNjUwMjQsNCwyLDEwMSwxMTEsODAxMyw4MDE3LDExNiw1OSwxLDgyNTcsMTEwLDU5LDEsNzExLDQsNCw5NywxMDEsMTA1LDExNyw4MDMxLDgwNDYsODA1Niw4MDYxLDQsMiwxMTIsMTE0LDgwMzcsODA0MSwxMTUsNTksMSwxMDgyOSwxMTEsMTEwLDU5LDEsMjY5LDEwMCwxMDUsMTA4LDUsMjMxLDEsNTksODA1NCwxLDIzMSwxMTQsOTksNTksMSwyNjUsMTEyLDExNSw0LDIsNTksMTE1LDgwNjksODA3MSwxLDEwODI4LDEwOSw1OSwxLDEwODMyLDExMSwxMTYsNTksMSwyNjcsNCwzLDEwMCwxMDksMTEwLDgwODgsODA5Nyw4MTA0LDEwNSwxMDgsNSwxODQsMSw1OSw4MDk1LDEsMTg0LDExMiwxMTYsMTIxLDExOCw1OSwxLDEwNjc0LDExNiw1LDE2MiwyLDU5LDEwMSw4MTEyLDgxMTQsMSwxNjIsMTE0LDEwMCwxMTEsMTE2LDU5LDEsMTgzLDExNCw1OSwzLDU1MzQ5LDU2NjA4LDQsMyw5OSwxMDEsMTA1LDgxMzQsODEzOCw4MTU0LDEyMSw1OSwxLDEwOTUsOTksMTA3LDQsMiw1OSwxMDksODE0Niw4MTQ4LDEsMTAwMDMsOTcsMTE0LDEwNyw1OSwxLDEwMDAzLDU5LDEsOTY3LDExNCw0LDcsNTksNjksOTksMTAxLDEwMiwxMDksMTE1LDgxNzQsODE3Niw4MTc5LDgyNTgsODI2MSw4MjY4LDgyNzMsMSw5Njc1LDU5LDEsMTA2OTEsNCwzLDU5LDEwMSwxMDgsODE4Nyw4MTg5LDgxOTMsMSw3MTAsMTEzLDU5LDEsODc5MSwxMDEsNCwyLDk3LDEwMCw4MjAwLDgyMjMsMTE0LDExNCwxMTEsMTE5LDQsMiwxMDgsMTE0LDgyMTAsODIxNiwxMDEsMTAyLDExNiw1OSwxLDg2MzQsMTA1LDEwMywxMDQsMTE2LDU5LDEsODYzNSw0LDUsODIsODMsOTcsOTksMTAwLDgyMzUsODIzOCw4MjQxLDgyNDYsODI1Miw1OSwxLDE3NCw1OSwxLDk0MTYsMTE1LDExNiw1OSwxLDg4NTksMTA1LDExNCw5OSw1OSwxLDg4NTgsOTcsMTE1LDEwNCw1OSwxLDg4NjEsNTksMSw4NzkxLDExMCwxMDUsMTEwLDExNiw1OSwxLDEwNzY4LDEwNSwxMDAsNTksMSwxMDk5MSw5OSwxMDUsMTE0LDU5LDEsMTA2OTAsMTE3LDk4LDExNSw0LDIsNTksMTE3LDgyODgsODI5MCwxLDk4MjcsMTA1LDExNiw1OSwxLDk4MjcsNCw0LDEwOCwxMDksMTEwLDExMiw4MzA1LDgzMjYsODM3Niw4NDAwLDExMSwxMTAsNCwyLDU5LDEwMSw4MzEzLDgzMTUsMSw1OCw0LDIsNTksMTEzLDgzMjEsODMyMywxLDg3ODgsNTksMSw4Nzg4LDQsMiwxMDksMTEyLDgzMzIsODM0NCw5Nyw0LDIsNTksMTE2LDgzMzksODM0MSwxLDQ0LDU5LDEsNjQsNCwzLDU5LDEwMiwxMDgsODM1Miw4MzU0LDgzNTgsMSw4NzA1LDExMCw1OSwxLDg3MjgsMTAxLDQsMiwxMDksMTIwLDgzNjUsODM3MSwxMDEsMTEwLDExNiw1OSwxLDg3MDUsMTAxLDExNSw1OSwxLDg0NTAsNCwyLDEwMywxMDUsODM4Miw4Mzk1LDQsMiw1OSwxMDAsODM4OCw4MzkwLDEsODc3MywxMTEsMTE2LDU5LDEsMTA4NjEsMTEwLDExNiw1OSwxLDg3NTAsNCwzLDEwMiwxMTQsMTIxLDg0MDgsODQxMiw4NDE3LDU5LDMsNTUzNDksNTY2NjAsMTExLDEwMCw1OSwxLDg3MjAsNSwxNjksMiw1OSwxMTUsODQyNCw4NDI2LDEsMTY5LDExNCw1OSwxLDg0NzEsNCwyLDk3LDExMSw4NDM2LDg0NDEsMTE0LDExNCw1OSwxLDg2MjksMTE1LDExNSw1OSwxLDEwMDA3LDQsMiw5OSwxMTcsODQ1Miw4NDU3LDExNCw1OSwzLDU1MzQ5LDU2NTA0LDQsMiw5OCwxMTIsODQ2Myw4NDc0LDQsMiw1OSwxMDEsODQ2OSw4NDcxLDEsMTA5NTksNTksMSwxMDk2MSw0LDIsNTksMTAxLDg0ODAsODQ4MiwxLDEwOTYwLDU5LDEsMTA5NjIsMTAwLDExMSwxMTYsNTksMSw4OTQzLDQsNywxMDAsMTAxLDEwOCwxMTIsMTE0LDExOCwxMTksODUwNyw4NTIyLDg1MzYsODU1MCw4NjAwLDg2OTcsODcwMiw5NywxMTQsMTE0LDQsMiwxMDgsMTE0LDg1MTYsODUxOSw1OSwxLDEwNTUyLDU5LDEsMTA1NDksNCwyLDExMiwxMTUsODUyOCw4NTMyLDExNCw1OSwxLDg5MjYsOTksNTksMSw4OTI3LDk3LDExNCwxMTQsNCwyLDU5LDExMiw4NTQ1LDg1NDcsMSw4NjMwLDU5LDEsMTA1NTcsNCw2LDU5LDk4LDk5LDEwMCwxMTEsMTE1LDg1NjQsODU2Niw4NTczLDg1ODcsODU5Miw4NTk2LDEsODc0NiwxMTQsOTksOTcsMTEyLDU5LDEsMTA4MjQsNCwyLDk3LDExNyw4NTc5LDg1ODMsMTEyLDU5LDEsMTA4MjIsMTEyLDU5LDEsMTA4MjYsMTExLDExNiw1OSwxLDg4NDUsMTE0LDU5LDEsMTA4MjEsNTksMyw4NzQ2LDY1MDI0LDQsNCw5NywxMDgsMTE0LDExOCw4NjEwLDg2MjMsODY2Myw4NjcyLDExNCwxMTQsNCwyLDU5LDEwOSw4NjE4LDg2MjAsMSw4NjMxLDU5LDEsMTA1NTYsMTIxLDQsMywxMDEsMTE4LDExOSw4NjMyLDg2NTEsODY1NiwxMTMsNCwyLDExMiwxMTUsODYzOSw4NjQ1LDExNCwxMDEsOTksNTksMSw4OTI2LDExNyw5OSw5OSw1OSwxLDg5MjcsMTAxLDEwMSw1OSwxLDg5MTAsMTAxLDEwMCwxMDMsMTAxLDU5LDEsODkxMSwxMDEsMTEwLDUsMTY0LDEsNTksODY3MCwxLDE2NCwxMDEsOTcsMTE0LDExNCwxMTEsMTE5LDQsMiwxMDgsMTE0LDg2ODQsODY5MCwxMDEsMTAyLDExNiw1OSwxLDg2MzAsMTA1LDEwMywxMDQsMTE2LDU5LDEsODYzMSwxMDEsMTAxLDU5LDEsODkxMCwxMDEsMTAwLDU5LDEsODkxMSw0LDIsOTksMTA1LDg3MTMsODcyMSwxMTEsMTEwLDEwNSwxMTAsMTE2LDU5LDEsODc1NCwxMTAsMTE2LDU5LDEsODc1MywxMDgsOTksMTE2LDEyMSw1OSwxLDkwMDUsNCwxOSw2NSw3Miw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDEwNiwxMDgsMTExLDExNCwxMTUsMTE2LDExNywxMTksMTIyLDg3NzMsODc3OCw4NzgzLDg4MjEsODgzOSw4ODU0LDg4ODcsODkxNCw4OTMwLDg5NDQsOTAzNiw5MDQxLDkwNTgsOTE5Nyw5MjI3LDkyNTgsOTI4MSw5Mjk3LDkzMDUsMTE0LDExNCw1OSwxLDg2NTksOTcsMTE0LDU5LDEsMTA1OTcsNCw0LDEwMywxMDgsMTE0LDExNSw4NzkzLDg3OTksODgwNSw4ODA5LDEwMywxMDEsMTE0LDU5LDEsODIyNCwxMDEsMTE2LDEwNCw1OSwxLDg1MDQsMTE0LDU5LDEsODU5NSwxMDQsNCwyLDU5LDExOCw4ODE2LDg4MTgsMSw4MjA4LDU5LDEsODg2Nyw0LDIsMTA3LDEwOCw4ODI3LDg4MzQsOTcsMTE0LDExMSwxMTksNTksMSwxMDUxMSw5Nyw5OSw1OSwxLDczMyw0LDIsOTcsMTIxLDg4NDUsODg1MSwxMTQsMTExLDExMCw1OSwxLDI3MSw1OSwxLDEwNzYsNCwzLDU5LDk3LDExMSw4ODYyLDg4NjQsODg4MCwxLDg1MTgsNCwyLDEwMywxMTQsODg3MCw4ODc2LDEwMywxMDEsMTE0LDU5LDEsODIyNSwxMTQsNTksMSw4NjUwLDExNiwxMTUsMTAxLDExMyw1OSwxLDEwODcxLDQsMywxMDMsMTA4LDEwOSw4ODk1LDg5MDIsODkwNyw1LDE3NiwxLDU5LDg5MDAsMSwxNzYsMTE2LDk3LDU5LDEsOTQ4LDExMiwxMTYsMTIxLDExOCw1OSwxLDEwNjczLDQsMiwxMDUsMTE0LDg5MjAsODkyNiwxMTUsMTA0LDExNiw1OSwxLDEwNjIzLDU5LDMsNTUzNDksNTY2MDksOTcsMTE0LDQsMiwxMDgsMTE0LDg5MzgsODk0MSw1OSwxLDg2NDMsNTksMSw4NjQyLDQsNSw5NywxMDEsMTAzLDExNSwxMTgsODk1Niw4OTg2LDg5ODksODk5Niw5MDAxLDEwOSw0LDMsNTksMTExLDExNSw4OTY1LDg5NjcsODk4MywxLDg5MDAsMTEwLDEwMCw0LDIsNTksMTE1LDg5NzUsODk3NywxLDg5MDAsMTE3LDEwNSwxMTYsNTksMSw5ODMwLDU5LDEsOTgzMCw1OSwxLDE2OCw5NywxMDksMTA5LDk3LDU5LDEsOTg5LDEwNSwxMTAsNTksMSw4OTQ2LDQsMyw1OSwxMDUsMTExLDkwMDksOTAxMSw5MDMxLDEsMjQ3LDEwMCwxMDEsNSwyNDcsMiw1OSwxMTEsOTAyMCw5MDIyLDEsMjQ3LDExMCwxMTYsMTA1LDEwOSwxMDEsMTE1LDU5LDEsODkwMywxMTAsMTIwLDU5LDEsODkwMyw5OSwxMjEsNTksMSwxMTA2LDk5LDQsMiwxMTEsMTE0LDkwNDgsOTA1MywxMTQsMTEwLDU5LDEsODk5MCwxMTEsMTEyLDU5LDEsODk3Myw0LDUsMTA4LDExMiwxMTYsMTE3LDExOSw5MDcwLDkwNzYsOTA4MSw5MTMwLDkxNDQsMTA4LDk3LDExNCw1OSwxLDM2LDEwMiw1OSwzLDU1MzQ5LDU2NjYxLDQsNSw1OSwxMDEsMTA5LDExMiwxMTUsOTA5Myw5MDk1LDkxMDksOTExNiw5MTIyLDEsNzI5LDExMyw0LDIsNTksMTAwLDkxMDIsOTEwNCwxLDg3ODQsMTExLDExNiw1OSwxLDg3ODUsMTA1LDExMCwxMTcsMTE1LDU5LDEsODc2MCwxMDgsMTE3LDExNSw1OSwxLDg3MjQsMTEzLDExNyw5NywxMTQsMTAxLDU5LDEsODg2NSw5OCwxMDgsMTAxLDk4LDk3LDExNCwxMTksMTAxLDEwMCwxMDMsMTAxLDU5LDEsODk2NiwxMTAsNCwzLDk3LDEwMCwxMDQsOTE1Myw5MTYwLDkxNzIsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5NSwxMTEsMTE5LDExMCw5NywxMTQsMTE0LDExMSwxMTksMTE1LDU5LDEsODY1MCw5NywxMTQsMTEyLDExMSwxMTEsMTEwLDQsMiwxMDgsMTE0LDkxODQsOTE5MCwxMDEsMTAyLDExNiw1OSwxLDg2NDMsMTA1LDEwMywxMDQsMTE2LDU5LDEsODY0Miw0LDIsOTgsOTksOTIwMyw5MjExLDEwNyw5NywxMTQsMTExLDExOSw1OSwxLDEwNTEyLDQsMiwxMTEsMTE0LDkyMTcsOTIyMiwxMTQsMTEwLDU5LDEsODk5MSwxMTEsMTEyLDU5LDEsODk3Miw0LDMsOTksMTExLDExNiw5MjM1LDkyNDgsOTI1Miw0LDIsMTE0LDEyMSw5MjQxLDkyNDUsNTksMyw1NTM0OSw1NjUwNSw1OSwxLDExMDksMTA4LDU5LDEsMTA3NDIsMTE0LDExMSwxMDcsNTksMSwyNzMsNCwyLDEwMCwxMTQsOTI2NCw5MjY5LDExMSwxMTYsNTksMSw4OTQ1LDEwNSw0LDIsNTksMTAyLDkyNzYsOTI3OCwxLDk2NjMsNTksMSw5NjYyLDQsMiw5NywxMDQsOTI4Nyw5MjkyLDExNCwxMTQsNTksMSw4NjkzLDk3LDExNCw1OSwxLDEwNjA3LDk3LDExMCwxMDMsMTA4LDEwMSw1OSwxLDEwNjYyLDQsMiw5OSwxMDUsOTMxMSw5MzE1LDEyMSw1OSwxLDExMTksMTAzLDExNCw5NywxMTQsMTE0LDU5LDEsMTAyMzksNCwxOCw2OCw5Nyw5OSwxMDAsMTAxLDEwMiwxMDMsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDEyMCw5MzYxLDkzNzYsOTM5OCw5NDM5LDk0NDQsOTQ0Nyw5NDYyLDk0OTUsOTUzMSw5NTg1LDk1OTgsOTYxNCw5NjU5LDk3NTUsOTc3MSw5NzkyLDk4MDgsOTgyNiw0LDIsNjgsMTExLDkzNjcsOTM3MiwxMTEsMTE2LDU5LDEsMTA4NzEsMTE2LDU5LDEsODc4NSw0LDIsOTksMTE1LDkzODIsOTM5MiwxMTcsMTE2LDEwMSw1LDIzMywxLDU5LDkzOTAsMSwyMzMsMTE2LDEwMSwxMTQsNTksMSwxMDg2Miw0LDQsOTcsMTA1LDExMSwxMjEsOTQwOCw5NDE0LDk0MzAsOTQzNiwxMTQsMTExLDExMCw1OSwxLDI4MywxMTQsNCwyLDU5LDk5LDk0MjEsOTQyMywxLDg3OTAsNSwyMzQsMSw1OSw5NDI4LDEsMjM0LDEwOCwxMTEsMTEwLDU5LDEsODc4OSw1OSwxLDExMDEsMTExLDExNiw1OSwxLDI3OSw1OSwxLDg1MTksNCwyLDY4LDExNCw5NDUzLDk0NTgsMTExLDExNiw1OSwxLDg3ODYsNTksMyw1NTM0OSw1NjYxMCw0LDMsNTksMTE0LDExNSw5NDcwLDk0NzIsOTQ4MiwxLDEwOTA2LDk3LDExOCwxMDEsNSwyMzIsMSw1OSw5NDgwLDEsMjMyLDQsMiw1OSwxMDAsOTQ4OCw5NDkwLDEsMTA5MDIsMTExLDExNiw1OSwxLDEwOTA0LDQsNCw1OSwxMDUsMTA4LDExNSw5NTA1LDk1MDcsOTUxNSw5NTE4LDEsMTA5MDUsMTEwLDExNiwxMDEsMTE0LDExNSw1OSwxLDkxOTEsNTksMSw4NDY3LDQsMiw1OSwxMDAsOTUyNCw5NTI2LDEsMTA5MDEsMTExLDExNiw1OSwxLDEwOTAzLDQsMyw5NywxMTIsMTE1LDk1MzksOTU0NCw5NTY0LDk5LDExNCw1OSwxLDI3NSwxMTYsMTIxLDQsMyw1OSwxMTUsMTE4LDk1NTQsOTU1Niw5NTYxLDEsODcwOSwxMDEsMTE2LDU5LDEsODcwOSw1OSwxLDg3MDksMTEyLDQsMiw0OSw1OSw5NTcxLDk1ODMsNCwyLDUxLDUyLDk1NzcsOTU4MCw1OSwxLDgxOTYsNTksMSw4MTk3LDEsODE5NSw0LDIsMTAzLDExNSw5NTkxLDk1OTQsNTksMSwzMzEsMTEyLDU5LDEsODE5NCw0LDIsMTAzLDExMiw5NjA0LDk2MDksMTExLDExMCw1OSwxLDI4MSwxMDIsNTksMyw1NTM0OSw1NjY2Miw0LDMsOTcsMTA4LDExNSw5NjIyLDk2MzUsOTY0MCwxMTQsNCwyLDU5LDExNSw5NjI5LDk2MzEsMSw4OTE3LDEwOCw1OSwxLDEwNzIzLDExNywxMTUsNTksMSwxMDg2NSwxMDUsNCwzLDU5LDEwOCwxMTgsOTY0OSw5NjUxLDk2NTYsMSw5NDksMTExLDExMCw1OSwxLDk0OSw1OSwxLDEwMTMsNCw0LDk5LDExNSwxMTcsMTE4LDk2NjksOTY4Niw5NzE2LDk3NDcsNCwyLDEwNSwxMTEsOTY3NSw5NjgwLDExNCw5OSw1OSwxLDg3OTAsMTA4LDExMSwxMTAsNTksMSw4Nzg5LDQsMiwxMDUsMTA4LDk2OTIsOTY5NiwxMDksNTksMSw4NzcwLDk3LDExMCwxMTYsNCwyLDEwMywxMDgsOTcwNSw5NzEwLDExNiwxMTQsNTksMSwxMDkwMiwxMDEsMTE1LDExNSw1OSwxLDEwOTAxLDQsMyw5NywxMDEsMTA1LDk3MjQsOTcyOSw5NzM0LDEwOCwxMTUsNTksMSw2MSwxMTUsMTE2LDU5LDEsODc5OSwxMTgsNCwyLDU5LDY4LDk3NDEsOTc0MywxLDg4MDEsNjgsNTksMSwxMDg3MiwxMTIsOTcsMTE0LDExNSwxMDgsNTksMSwxMDcyNSw0LDIsNjgsOTcsOTc2MSw5NzY2LDExMSwxMTYsNTksMSw4Nzg3LDExNCwxMTQsNTksMSwxMDYwOSw0LDMsOTksMTAwLDEwNSw5Nzc5LDk3ODMsOTc4OCwxMTQsNTksMSw4NDk1LDExMSwxMTYsNTksMSw4Nzg0LDEwOSw1OSwxLDg3NzAsNCwyLDk3LDEwNCw5Nzk4LDk4MDEsNTksMSw5NTEsNSwyNDAsMSw1OSw5ODA2LDEsMjQwLDQsMiwxMDksMTE0LDk4MTQsOTgyMiwxMDgsNSwyMzUsMSw1OSw5ODIwLDEsMjM1LDExMSw1OSwxLDgzNjQsNCwzLDk5LDEwNSwxMTIsOTgzNCw5ODM4LDk4NDMsMTA4LDU5LDEsMzMsMTE1LDExNiw1OSwxLDg3MDcsNCwyLDEwMSwxMTEsOTg0OSw5ODU5LDk5LDExNiw5NywxMTYsMTA1LDExMSwxMTAsNTksMSw4NDk2LDExMCwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDEwMSw1OSwxLDg1MTksNCwxMiw5Nyw5OSwxMDEsMTAyLDEwNSwxMDYsMTA4LDExMCwxMTEsMTEyLDExNCwxMTUsOTg5Niw5OTEwLDk5MTQsOTkyMSw5OTU0LDk5NjAsOTk2Nyw5OTg5LDk5OTQsMTAwMjcsMTAwMzYsMTAxNjQsMTA4LDEwOCwxMDUsMTEwLDEwMywxMDAsMTExLDExNiwxMTUsMTAxLDExMyw1OSwxLDg3ODYsMTIxLDU5LDEsMTA5MiwxMDksOTcsMTA4LDEwMSw1OSwxLDk3OTIsNCwzLDEwNSwxMDgsMTE0LDk5MjksOTkzNSw5OTUwLDEwOCwxMDUsMTAzLDU5LDEsNjQyNTksNCwyLDEwNSwxMDgsOTk0MSw5OTQ1LDEwMyw1OSwxLDY0MjU2LDEwNSwxMDMsNTksMSw2NDI2MCw1OSwzLDU1MzQ5LDU2NjExLDEwOCwxMDUsMTAzLDU5LDEsNjQyNTcsMTA4LDEwNSwxMDMsNTksMywxMDIsMTA2LDQsMyw5NywxMDgsMTE2LDk5NzUsOTk3OSw5OTg0LDExNiw1OSwxLDk4MzcsMTA1LDEwMyw1OSwxLDY0MjU4LDExMCwxMTUsNTksMSw5NjQ5LDExMSwxMDIsNTksMSw0MDIsNCwyLDExMiwxMTQsMTAwMDAsMTAwMDUsMTAyLDU5LDMsNTUzNDksNTY2NjMsNCwyLDk3LDEwNywxMDAxMSwxMDAxNiwxMDgsMTA4LDU5LDEsODcwNCw0LDIsNTksMTE4LDEwMDIyLDEwMDI0LDEsODkxNiw1OSwxLDEwOTY5LDk3LDExNCwxMTYsMTA1LDExMCwxMTYsNTksMSwxMDc2NSw0LDIsOTcsMTExLDEwMDQyLDEwMTU5LDQsMiw5OSwxMTUsMTAwNDgsMTAxNTUsNCw2LDQ5LDUwLDUxLDUyLDUzLDU1LDEwMDYyLDEwMTAyLDEwMTE0LDEwMTM1LDEwMTM5LDEwMTUxLDQsNiw1MCw1MSw1Miw1Myw1NCw1NiwxMDA3NiwxMDA4MywxMDA4NiwxMDA5MywxMDA5NiwxMDA5OSw1LDE4OSwxLDU5LDEwMDgxLDEsMTg5LDU5LDEsODUzMSw1LDE4OCwxLDU5LDEwMDkxLDEsMTg4LDU5LDEsODUzMyw1OSwxLDg1MzcsNTksMSw4NTM5LDQsMiw1MSw1MywxMDEwOCwxMDExMSw1OSwxLDg1MzIsNTksMSw4NTM0LDQsMyw1Miw1Myw1NiwxMDEyMiwxMDEyOSwxMDEzMiw1LDE5MCwxLDU5LDEwMTI3LDEsMTkwLDU5LDEsODUzNSw1OSwxLDg1NDAsNTMsNTksMSw4NTM2LDQsMiw1NCw1NiwxMDE0NSwxMDE0OCw1OSwxLDg1MzgsNTksMSw4NTQxLDU2LDU5LDEsODU0MiwxMDgsNTksMSw4MjYwLDExOSwxMTAsNTksMSw4OTk0LDk5LDExNCw1OSwzLDU1MzQ5LDU2NTA3LDQsMTcsNjksOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNSwxMDYsMTA4LDExMCwxMTEsMTE0LDExNSwxMTYsMTE4LDEwMjA2LDEwMjE3LDEwMjQ3LDEwMjU0LDEwMjY4LDEwMjczLDEwMzU4LDEwMzYzLDEwMzc0LDEwMzgwLDEwMzg1LDEwNDA2LDEwNDU4LDEwNDY0LDEwNDcwLDEwNDk3LDEwNjEwLDQsMiw1OSwxMDgsMTAyMTIsMTAyMTQsMSw4ODA3LDU5LDEsMTA4OTIsNCwzLDk5LDEwOSwxMTIsMTAyMjUsMTAyMzEsMTAyNDQsMTE3LDExNiwxMDEsNTksMSw1MDEsMTA5LDk3LDQsMiw1OSwxMDAsMTAyMzksMTAyNDEsMSw5NDcsNTksMSw5ODksNTksMSwxMDg4NiwxMTQsMTAxLDExOCwxMDEsNTksMSwyODcsNCwyLDEwNSwxMjEsMTAyNjAsMTAyNjUsMTE0LDk5LDU5LDEsMjg1LDU5LDEsMTA3NSwxMTEsMTE2LDU5LDEsMjg5LDQsNCw1OSwxMDgsMTEzLDExNSwxMDI4MywxMDI4NSwxMDI4OCwxMDMwOCwxLDg4MDUsNTksMSw4OTIzLDQsMyw1OSwxMTMsMTE1LDEwMjk2LDEwMjk4LDEwMzAxLDEsODgwNSw1OSwxLDg4MDcsMTA4LDk3LDExMCwxMTYsNTksMSwxMDg3OCw0LDQsNTksOTksMTAwLDEwOCwxMDMxOCwxMDMyMCwxMDMyNCwxMDM0NSwxLDEwODc4LDk5LDU5LDEsMTA5MjEsMTExLDExNiw0LDIsNTksMTExLDEwMzMyLDEwMzM0LDEsMTA4ODAsNCwyLDU5LDEwOCwxMDM0MCwxMDM0MiwxLDEwODgyLDU5LDEsMTA4ODQsNCwyLDU5LDEwMSwxMDM1MSwxMDM1NCwzLDg5MjMsNjUwMjQsMTE1LDU5LDEsMTA5MDAsMTE0LDU5LDMsNTUzNDksNTY2MTIsNCwyLDU5LDEwMywxMDM2OSwxMDM3MSwxLDg4MTEsNTksMSw4OTIxLDEwOSwxMDEsMTA4LDU5LDEsODUwMyw5OSwxMjEsNTksMSwxMTA3LDQsNCw1OSw2OSw5NywxMDYsMTAzOTUsMTAzOTcsMTA0MDAsMTA0MDMsMSw4ODIzLDU5LDEsMTA4OTgsNTksMSwxMDkxNyw1OSwxLDEwOTE2LDQsNCw2OSw5NywxMDEsMTE1LDEwNDE2LDEwNDE5LDEwNDM0LDEwNDUzLDU5LDEsODgwOSwxMTIsNCwyLDU5LDExMiwxMDQyNiwxMDQyOCwxLDEwODkwLDExNCwxMTEsMTIwLDU5LDEsMTA4OTAsNCwyLDU5LDExMywxMDQ0MCwxMDQ0MiwxLDEwODg4LDQsMiw1OSwxMTMsMTA0NDgsMTA0NTAsMSwxMDg4OCw1OSwxLDg4MDksMTA1LDEwOSw1OSwxLDg5MzUsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjY0LDk3LDExOCwxMDEsNTksMSw5Niw0LDIsOTksMTA1LDEwNDc2LDEwNDgwLDExNCw1OSwxLDg0NTgsMTA5LDQsMyw1OSwxMDEsMTA4LDEwNDg5LDEwNDkxLDEwNDk0LDEsODgxOSw1OSwxLDEwODk0LDU5LDEsMTA4OTYsNSw2Miw2LDU5LDk5LDEwMCwxMDgsMTEzLDExNCwxMDUxMiwxMDUxNCwxMDUyNywxMDUzMiwxMDUzOCwxMDU0NSwxLDYyLDQsMiw5OSwxMDUsMTA1MjAsMTA1MjMsNTksMSwxMDkxOSwxMTQsNTksMSwxMDg3NCwxMTEsMTE2LDU5LDEsODkxOSw4MCw5NywxMTQsNTksMSwxMDY0NSwxMTcsMTAxLDExNSwxMTYsNTksMSwxMDg3Niw0LDUsOTcsMTAwLDEwMSwxMDgsMTE1LDEwNTU3LDEwNTc0LDEwNTc5LDEwNTk5LDEwNjA1LDQsMiwxMTIsMTE0LDEwNTYzLDEwNTcwLDExMiwxMTQsMTExLDEyMCw1OSwxLDEwODg2LDExNCw1OSwxLDEwNjE2LDExMSwxMTYsNTksMSw4OTE5LDExMyw0LDIsMTA4LDExMywxMDU4NiwxMDU5MiwxMDEsMTE1LDExNSw1OSwxLDg5MjMsMTA4LDEwMSwxMTUsMTE1LDU5LDEsMTA4OTIsMTAxLDExNSwxMTUsNTksMSw4ODIzLDEwNSwxMDksNTksMSw4ODE5LDQsMiwxMDEsMTEwLDEwNjE2LDEwNjI2LDExNCwxMTYsMTEwLDEwMSwxMTMsMTEzLDU5LDMsODgwOSw2NTAyNCw2OSw1OSwzLDg4MDksNjUwMjQsNCwxMCw2NSw5Nyw5OCw5OSwxMDEsMTAyLDEwNywxMTEsMTE1LDEyMSwxMDY1MywxMDY1OCwxMDcxMywxMDcxOCwxMDcyNCwxMDc2MCwxMDc2NSwxMDc4NiwxMDg1MCwxMDg3NSwxMTQsMTE0LDU5LDEsODY2MCw0LDQsMTA1LDEwOCwxMDksMTE0LDEwNjY4LDEwNjc0LDEwNjc4LDEwNjg0LDExNCwxMTUsMTEyLDU5LDEsODIwMiwxMDIsNTksMSwxODksMTA1LDEwOCwxMTYsNTksMSw4NDU5LDQsMiwxMDAsMTE0LDEwNjkwLDEwNjk1LDk5LDEyMSw1OSwxLDEwOTgsNCwzLDU5LDk5LDExOSwxMDcwMywxMDcwNSwxMDcxMCwxLDg1OTYsMTA1LDExNCw1OSwxLDEwNTY4LDU5LDEsODYyMSw5NywxMTQsNTksMSw4NDYzLDEwNSwxMTQsOTksNTksMSwyOTMsNCwzLDk3LDEwOCwxMTQsMTA3MzIsMTA3NDgsMTA3NTQsMTE0LDExNiwxMTUsNCwyLDU5LDExNywxMDc0MSwxMDc0MywxLDk4MjksMTA1LDExNiw1OSwxLDk4MjksMTA4LDEwNSwxMTIsNTksMSw4MjMwLDk5LDExMSwxMTAsNTksMSw4ODg5LDExNCw1OSwzLDU1MzQ5LDU2NjEzLDExNSw0LDIsMTAxLDExOSwxMDc3MiwxMDc3OSw5NywxMTQsMTExLDExOSw1OSwxLDEwNTMzLDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MzQsNCw1LDk3LDEwOSwxMTEsMTEyLDExNCwxMDc5OCwxMDgwMywxMDgwOSwxMDgzOSwxMDg0NCwxMTQsMTE0LDU5LDEsODcwMywxMTYsMTA0LDExNiw1OSwxLDg3NjMsMTA3LDQsMiwxMDgsMTE0LDEwODE2LDEwODI3LDEwMSwxMDIsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MTcsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MTgsMTAyLDU5LDMsNTUzNDksNTY2NjUsOTgsOTcsMTE0LDU5LDEsODIxMyw0LDMsOTksMTA4LDExNiwxMDg1OCwxMDg2MywxMDg2OSwxMTQsNTksMyw1NTM0OSw1NjUwOSw5NywxMTUsMTA0LDU5LDEsODQ2MywxMTQsMTExLDEwNyw1OSwxLDI5NSw0LDIsOTgsMTEyLDEwODgxLDEwODg3LDExNywxMDgsMTA4LDU5LDEsODI1OSwxMDQsMTAxLDExMCw1OSwxLDgyMDgsNCwxNSw5Nyw5OSwxMDEsMTAyLDEwMywxMDUsMTA2LDEwOSwxMTAsMTExLDExMiwxMTMsMTE1LDExNiwxMTcsMTA5MjUsMTA5MzYsMTA5NTgsMTA5NzcsMTA5OTAsMTEwMDEsMTEwMzksMTEwNDUsMTExMDEsMTExOTIsMTEyMjAsMTEyMjYsMTEyMzcsMTEyODUsMTEyOTksOTksMTE3LDExNiwxMDEsNSwyMzcsMSw1OSwxMDkzNCwxLDIzNyw0LDMsNTksMTA1LDEyMSwxMDk0NCwxMDk0NiwxMDk1NSwxLDgyOTEsMTE0LDk5LDUsMjM4LDEsNTksMTA5NTMsMSwyMzgsNTksMSwxMDgwLDQsMiw5OSwxMjAsMTA5NjQsMTA5NjgsMTIxLDU5LDEsMTA3Nyw5OSwxMDgsNSwxNjEsMSw1OSwxMDk3NSwxLDE2MSw0LDIsMTAyLDExNCwxMDk4MywxMDk4Niw1OSwxLDg2NjAsNTksMyw1NTM0OSw1NjYxNCwxMTQsOTcsMTE4LDEwMSw1LDIzNiwxLDU5LDEwOTk5LDEsMjM2LDQsNCw1OSwxMDUsMTEwLDExMSwxMTAxMSwxMTAxMywxMTAyOCwxMTAzNCwxLDg1MjAsNCwyLDEwNSwxMTAsMTEwMTksMTEwMjQsMTEwLDExNiw1OSwxLDEwNzY0LDExNiw1OSwxLDg3NDksMTAyLDEwNSwxMTAsNTksMSwxMDcxNiwxMTYsOTcsNTksMSw4NDg5LDEwOCwxMDUsMTAzLDU5LDEsMzA3LDQsMyw5NywxMTEsMTEyLDExMDUzLDExMDkyLDExMDk2LDQsMyw5OSwxMDMsMTE2LDExMDYxLDExMDY1LDExMDg4LDExNCw1OSwxLDI5OSw0LDMsMTAxLDEwOCwxMTIsMTEwNzMsMTEwNzYsMTEwODIsNTksMSw4NDY1LDEwNSwxMTAsMTAxLDU5LDEsODQ2NCw5NywxMTQsMTE2LDU5LDEsODQ2NSwxMDQsNTksMSwzMDUsMTAyLDU5LDEsODg4NywxMDEsMTAwLDU5LDEsNDM3LDQsNSw1OSw5OSwxMDIsMTExLDExNiwxMTExMywxMTExNSwxMTEyMSwxMTEzNiwxMTE0MiwxLDg3MTIsOTcsMTE0LDEwMSw1OSwxLDg0NTMsMTA1LDExMCw0LDIsNTksMTE2LDExMTI5LDExMTMxLDEsODczNCwxMDUsMTAxLDU5LDEsMTA3MTcsMTAwLDExMSwxMTYsNTksMSwzMDUsNCw1LDU5LDk5LDEwMSwxMDgsMTEyLDExMTU0LDExMTU2LDExMTYxLDExMTc5LDExMTg2LDEsODc0Nyw5NywxMDgsNTksMSw4ODkwLDQsMiwxMDMsMTE0LDExMTY3LDExMTczLDEwMSwxMTQsMTE1LDU5LDEsODQ4NCw5OSw5NywxMDgsNTksMSw4ODkwLDk3LDExNCwxMDQsMTA3LDU5LDEsMTA3NzUsMTE0LDExMSwxMDAsNTksMSwxMDgxMiw0LDQsOTksMTAzLDExMiwxMTYsMTEyMDIsMTEyMDYsMTEyMTEsMTEyMTYsMTIxLDU5LDEsMTEwNSwxMTEsMTEwLDU5LDEsMzAzLDEwMiw1OSwzLDU1MzQ5LDU2NjY2LDk3LDU5LDEsOTUzLDExNCwxMTEsMTAwLDU5LDEsMTA4MTIsMTE3LDEwMSwxMTUsMTE2LDUsMTkxLDEsNTksMTEyMzUsMSwxOTEsNCwyLDk5LDEwNSwxMTI0MywxMTI0OCwxMTQsNTksMyw1NTM0OSw1NjUxMCwxMTAsNCw1LDU5LDY5LDEwMCwxMTUsMTE4LDExMjYxLDExMjYzLDExMjY2LDExMjcxLDExMjgyLDEsODcxMiw1OSwxLDg5NTMsMTExLDExNiw1OSwxLDg5NDksNCwyLDU5LDExOCwxMTI3NywxMTI3OSwxLDg5NDgsNTksMSw4OTQ3LDU5LDEsODcxMiw0LDIsNTksMTA1LDExMjkxLDExMjkzLDEsODI5MCwxMDgsMTAwLDEwMSw1OSwxLDI5Nyw0LDIsMTA3LDEwOSwxMTMwNSwxMTMxMCw5OSwxMjEsNTksMSwxMTEwLDEwOCw1LDIzOSwxLDU5LDExMzE2LDEsMjM5LDQsNiw5OSwxMDIsMTA5LDExMSwxMTUsMTE3LDExMzMyLDExMzQ2LDExMzUxLDExMzU3LDExMzYzLDExMzgwLDQsMiwxMDUsMTIxLDExMzM4LDExMzQzLDExNCw5OSw1OSwxLDMwOSw1OSwxLDEwODEsMTE0LDU5LDMsNTUzNDksNTY2MTUsOTcsMTE2LDEwNCw1OSwxLDU2NywxMTIsMTAyLDU5LDMsNTUzNDksNTY2NjcsNCwyLDk5LDEwMSwxMTM2OSwxMTM3NCwxMTQsNTksMyw1NTM0OSw1NjUxMSwxMTQsOTksMTIxLDU5LDEsMTExMiwxMDcsOTksMTIxLDU5LDEsMTEwOCw0LDgsOTcsOTksMTAyLDEwMywxMDQsMTA2LDExMSwxMTUsMTE0MDQsMTE0MTgsMTE0MzMsMTE0MzgsMTE0NDUsMTE0NTAsMTE0NTUsMTE0NjEsMTEyLDExMiw5Nyw0LDIsNTksMTE4LDExNDEzLDExNDE1LDEsOTU0LDU5LDEsMTAwOCw0LDIsMTAxLDEyMSwxMTQyNCwxMTQzMCwxMDAsMTA1LDEwOCw1OSwxLDMxMSw1OSwxLDEwODIsMTE0LDU5LDMsNTUzNDksNTY2MTYsMTE0LDEwMSwxMDEsMTEwLDU5LDEsMzEyLDk5LDEyMSw1OSwxLDEwOTMsOTksMTIxLDU5LDEsMTExNiwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NjgsOTksMTE0LDU5LDMsNTUzNDksNTY1MTIsNCwyMyw2NSw2Niw2OSw3Miw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNiwxMDgsMTA5LDExMCwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMTgsMTE1MTUsMTE1MzgsMTE1NDQsMTE1NTUsMTE1NjAsMTE3MjEsMTE3ODAsMTE4MTgsMTE4NjgsMTIxMzYsMTIxNjAsMTIxNzEsMTIyMDMsMTIyMDgsMTIyNDYsMTIyNzUsMTIzMjcsMTI1MDksMTI1MjMsMTI1NjksMTI2NDEsMTI3MzIsMTI3NTIsNCwzLDk3LDExNCwxMTYsMTE1MjMsMTE1MjgsMTE1MzIsMTE0LDExNCw1OSwxLDg2NjYsMTE0LDU5LDEsODY1Niw5NywxMDUsMTA4LDU5LDEsMTA1MjMsOTcsMTE0LDExNCw1OSwxLDEwNTEwLDQsMiw1OSwxMDMsMTE1NTAsMTE1NTIsMSw4ODA2LDU5LDEsMTA4OTEsOTcsMTE0LDU5LDEsMTA1OTQsNCw5LDk5LDEwMSwxMDMsMTA5LDExMCwxMTIsMTEzLDExNCwxMTYsMTE1ODAsMTE1ODYsMTE1OTQsMTE2MDAsMTE2MDYsMTE2MjQsMTE2MjcsMTE2MzYsMTE2OTQsMTE3LDExNiwxMDEsNTksMSwzMTQsMTA5LDExMiwxMTYsMTIxLDExOCw1OSwxLDEwNjc2LDExNCw5NywxMTAsNTksMSw4NDY2LDk4LDEwMCw5Nyw1OSwxLDk1NSwxMDMsNCwzLDU5LDEwMCwxMDgsMTE2MTUsMTE2MTcsMTE2MjAsMSwxMDIxNiw1OSwxLDEwNjQxLDEwMSw1OSwxLDEwMjE2LDU5LDEsMTA4ODUsMTE3LDExMSw1LDE3MSwxLDU5LDExNjM0LDEsMTcxLDExNCw0LDgsNTksOTgsMTAyLDEwNCwxMDgsMTEyLDExNSwxMTYsMTE2NTUsMTE2NTcsMTE2NjksMTE2NzMsMTE2NzcsMTE2ODEsMTE2ODUsMTE2OTAsMSw4NTkyLDQsMiw1OSwxMDIsMTE2NjMsMTE2NjUsMSw4Njc2LDExNSw1OSwxLDEwNTI3LDExNSw1OSwxLDEwNTI1LDEwNyw1OSwxLDg2MTcsMTEyLDU5LDEsODYxOSwxMDgsNTksMSwxMDU1MywxMDUsMTA5LDU5LDEsMTA2MTEsMTA4LDU5LDEsODYxMCw0LDMsNTksOTcsMTAxLDExNzAyLDExNzA0LDExNzA5LDEsMTA5MjMsMTA1LDEwOCw1OSwxLDEwNTIxLDQsMiw1OSwxMTUsMTE3MTUsMTE3MTcsMSwxMDkyNSw1OSwzLDEwOTI1LDY1MDI0LDQsMyw5Nyw5OCwxMTQsMTE3MjksMTE3MzQsMTE3MzksMTE0LDExNCw1OSwxLDEwNTA4LDExNCwxMDcsNTksMSwxMDA5OCw0LDIsOTcsMTA3LDExNzQ1LDExNzU4LDk5LDQsMiwxMDEsMTA3LDExNzUyLDExNzU1LDU5LDEsMTIzLDU5LDEsOTEsNCwyLDEwMSwxMTUsMTE3NjQsMTE3NjcsNTksMSwxMDYzNSwxMDgsNCwyLDEwMCwxMTcsMTE3NzQsMTE3NzcsNTksMSwxMDYzOSw1OSwxLDEwNjM3LDQsNCw5NywxMDEsMTE3LDEyMSwxMTc5MCwxMTc5NiwxMTgxMSwxMTgxNSwxMTQsMTExLDExMCw1OSwxLDMxOCw0LDIsMTAwLDEwNSwxMTgwMiwxMTgwNywxMDUsMTA4LDU5LDEsMzE2LDEwOCw1OSwxLDg5NjgsOTgsNTksMSwxMjMsNTksMSwxMDgzLDQsNCw5OSwxMTMsMTE0LDExNSwxMTgyOCwxMTgzMiwxMTg0NSwxMTg2NCw5Nyw1OSwxLDEwNTUwLDExNywxMTEsNCwyLDU5LDExNCwxMTg0MCwxMTg0MiwxLDgyMjAsNTksMSw4MjIyLDQsMiwxMDAsMTE3LDExODUxLDExODU3LDEwNCw5NywxMTQsNTksMSwxMDU5OSwxMTUsMTA0LDk3LDExNCw1OSwxLDEwNTcxLDEwNCw1OSwxLDg2MjYsNCw1LDU5LDEwMiwxMDMsMTEzLDExNSwxMTg4MCwxMTg4MiwxMjAwOCwxMjAxMSwxMjAzMSwxLDg4MDQsMTE2LDQsNSw5NywxMDQsMTA4LDExNCwxMTYsMTE4OTUsMTE5MTMsMTE5MzUsMTE5NDcsMTE5OTYsMTE0LDExNCwxMTEsMTE5LDQsMiw1OSwxMTYsMTE5MDUsMTE5MDcsMSw4NTkyLDk3LDEwNSwxMDgsNTksMSw4NjEwLDk3LDExNCwxMTIsMTExLDExMSwxMTAsNCwyLDEwMCwxMTcsMTE5MjUsMTE5MzEsMTExLDExOSwxMTAsNTksMSw4NjM3LDExMiw1OSwxLDg2MzYsMTAxLDEwMiwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDExNSw1OSwxLDg2NDcsMTA1LDEwMywxMDQsMTE2LDQsMyw5NywxMDQsMTE1LDExOTU5LDExOTc0LDExOTg0LDExNCwxMTQsMTExLDExOSw0LDIsNTksMTE1LDExOTY5LDExOTcxLDEsODU5Niw1OSwxLDg2NDYsOTcsMTE0LDExMiwxMTEsMTExLDExMCwxMTUsNTksMSw4NjUxLDExMywxMTcsMTA1LDEwMyw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjIxLDEwNCwxMTQsMTAxLDEwMSwxMTYsMTA1LDEwOSwxMDEsMTE1LDU5LDEsODkwNyw1OSwxLDg5MjIsNCwzLDU5LDExMywxMTUsMTIwMTksMTIwMjEsMTIwMjQsMSw4ODA0LDU5LDEsODgwNiwxMDgsOTcsMTEwLDExNiw1OSwxLDEwODc3LDQsNSw1OSw5OSwxMDAsMTAzLDExNSwxMjA0MywxMjA0NSwxMjA0OSwxMjA3MCwxMjA4MywxLDEwODc3LDk5LDU5LDEsMTA5MjAsMTExLDExNiw0LDIsNTksMTExLDEyMDU3LDEyMDU5LDEsMTA4NzksNCwyLDU5LDExNCwxMjA2NSwxMjA2NywxLDEwODgxLDU5LDEsMTA4ODMsNCwyLDU5LDEwMSwxMjA3NiwxMjA3OSwzLDg5MjIsNjUwMjQsMTE1LDU5LDEsMTA4OTksNCw1LDk3LDEwMCwxMDEsMTAzLDExNSwxMjA5NSwxMjEwMywxMjEwOCwxMjEyNiwxMjEzMSwxMTIsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA4ODUsMTExLDExNiw1OSwxLDg5MTgsMTEzLDQsMiwxMDMsMTEzLDEyMTE1LDEyMTIwLDExNiwxMTQsNTksMSw4OTIyLDEwMywxMTYsMTE0LDU5LDEsMTA4OTEsMTE2LDExNCw1OSwxLDg4MjIsMTA1LDEwOSw1OSwxLDg4MTgsNCwzLDEwNSwxMDgsMTE0LDEyMTQ0LDEyMTUwLDEyMTU2LDExNSwxMDQsMTE2LDU5LDEsMTA2MjAsMTExLDExMSwxMTQsNTksMSw4OTcwLDU5LDMsNTUzNDksNTY2MTcsNCwyLDU5LDY5LDEyMTY2LDEyMTY4LDEsODgyMiw1OSwxLDEwODk3LDQsMiw5Nyw5OCwxMjE3NywxMjE5OCwxMTQsNCwyLDEwMCwxMTcsMTIxODQsMTIxODcsNTksMSw4NjM3LDQsMiw1OSwxMDgsMTIxOTMsMTIxOTUsMSw4NjM2LDU5LDEsMTA2MDIsMTA4LDEwNyw1OSwxLDk2MDQsOTksMTIxLDU5LDEsMTExMyw0LDUsNTksOTcsOTksMTA0LDExNiwxMjIyMCwxMjIyMiwxMjIyNywxMjIzNSwxMjI0MSwxLDg4MTAsMTE0LDExNCw1OSwxLDg2NDcsMTExLDExNCwxMTAsMTAxLDExNCw1OSwxLDg5OTAsOTcsMTE0LDEwMCw1OSwxLDEwNjAzLDExNCwxMDUsNTksMSw5NzIyLDQsMiwxMDUsMTExLDEyMjUyLDEyMjU4LDEwMCwxMTEsMTE2LDU5LDEsMzIwLDExNywxMTUsMTE2LDQsMiw1OSw5NywxMjI2NywxMjI2OSwxLDkxMzYsOTksMTA0LDEwMSw1OSwxLDkxMzYsNCw0LDY5LDk3LDEwMSwxMTUsMTIyODUsMTIyODgsMTIzMDMsMTIzMjIsNTksMSw4ODA4LDExMiw0LDIsNTksMTEyLDEyMjk1LDEyMjk3LDEsMTA4ODksMTE0LDExMSwxMjAsNTksMSwxMDg4OSw0LDIsNTksMTEzLDEyMzA5LDEyMzExLDEsMTA4ODcsNCwyLDU5LDExMywxMjMxNywxMjMxOSwxLDEwODg3LDU5LDEsODgwOCwxMDUsMTA5LDU5LDEsODkzNCw0LDgsOTcsOTgsMTEwLDExMSwxMTIsMTE2LDExOSwxMjIsMTIzNDUsMTIzNTksMTIzNjQsMTI0MjEsMTI0NDYsMTI0NjcsMTI0NzQsMTI0OTAsNCwyLDExMCwxMTQsMTIzNTEsMTIzNTUsMTAzLDU5LDEsMTAyMjAsMTE0LDU5LDEsODcwMSwxMTQsMTA3LDU5LDEsMTAyMTQsMTAzLDQsMywxMDgsMTA5LDExNCwxMjM3MywxMjQwMSwxMjQwOSwxMDEsMTAyLDExNiw0LDIsOTcsMTE0LDEyMzgyLDEyMzg5LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjI5LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMSw5NywxMTIsMTE1LDExNiwxMTEsNTksMSwxMDIzNiwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzAsMTEyLDk3LDExNCwxMTQsMTExLDExOSw0LDIsMTA4LDExNCwxMjQzMywxMjQzOSwxMDEsMTAyLDExNiw1OSwxLDg2MTksMTA1LDEwMywxMDQsMTE2LDU5LDEsODYyMCw0LDMsOTcsMTAyLDEwOCwxMjQ1NCwxMjQ1OCwxMjQ2MiwxMTQsNTksMSwxMDYyOSw1OSwzLDU1MzQ5LDU2NjY5LDExNywxMTUsNTksMSwxMDc5NywxMDUsMTA5LDEwMSwxMTUsNTksMSwxMDgwNCw0LDIsOTcsOTgsMTI0ODAsMTI0ODUsMTE1LDExNiw1OSwxLDg3MjcsOTcsMTE0LDU5LDEsOTUsNCwzLDU5LDEwMSwxMDIsMTI0OTgsMTI1MDAsMTI1MDYsMSw5Njc0LDExMCwxMDMsMTAxLDU5LDEsOTY3NCw1OSwxLDEwNzMxLDk3LDExNCw0LDIsNTksMTA4LDEyNTE3LDEyNTE5LDEsNDAsMTE2LDU5LDEsMTA2NDMsNCw1LDk3LDk5LDEwNCwxMDksMTE2LDEyNTM1LDEyNTQwLDEyNTQ4LDEyNTYxLDEyNTY0LDExNCwxMTQsNTksMSw4NjQ2LDExMSwxMTQsMTEwLDEwMSwxMTQsNTksMSw4OTkxLDk3LDExNCw0LDIsNTksMTAwLDEyNTU2LDEyNTU4LDEsODY1MSw1OSwxLDEwNjA1LDU5LDEsODIwNiwxMTQsMTA1LDU5LDEsODg5NSw0LDYsOTcsOTksMTA0LDEwNSwxMTMsMTE2LDEyNTgzLDEyNTg5LDEyNTk0LDEyNTk3LDEyNjE0LDEyNjM1LDExMywxMTcsMTExLDU5LDEsODI0OSwxMTQsNTksMyw1NTM0OSw1NjUxMyw1OSwxLDg2MjQsMTA5LDQsMyw1OSwxMDEsMTAzLDEyNjA2LDEyNjA4LDEyNjExLDEsODgxOCw1OSwxLDEwODkzLDU5LDEsMTA4OTUsNCwyLDk4LDExNywxMjYyMCwxMjYyMyw1OSwxLDkxLDExMSw0LDIsNTksMTE0LDEyNjMwLDEyNjMyLDEsODIxNiw1OSwxLDgyMTgsMTE0LDExMSwxMDcsNTksMSwzMjIsNSw2MCw4LDU5LDk5LDEwMCwxMDQsMTA1LDEwOCwxMTMsMTE0LDEyNjYwLDEyNjYyLDEyNjc1LDEyNjgwLDEyNjg2LDEyNjkyLDEyNjk4LDEyNzA1LDEsNjAsNCwyLDk5LDEwNSwxMjY2OCwxMjY3MSw1OSwxLDEwOTE4LDExNCw1OSwxLDEwODczLDExMSwxMTYsNTksMSw4OTE4LDExNCwxMDEsMTAxLDU5LDEsODkwNywxMDksMTAxLDExNSw1OSwxLDg5MDUsOTcsMTE0LDExNCw1OSwxLDEwNjE0LDExNywxMDEsMTE1LDExNiw1OSwxLDEwODc1LDQsMiw4MCwxMDUsMTI3MTEsMTI3MTYsOTcsMTE0LDU5LDEsMTA2NDYsNCwzLDU5LDEwMSwxMDIsMTI3MjQsMTI3MjYsMTI3MjksMSw5NjY3LDU5LDEsODg4NCw1OSwxLDk2NjYsMTE0LDQsMiwxMDAsMTE3LDEyNzM5LDEyNzQ2LDExNSwxMDQsOTcsMTE0LDU5LDEsMTA1NzAsMTA0LDk3LDExNCw1OSwxLDEwNTk4LDQsMiwxMDEsMTEwLDEyNzU4LDEyNzY4LDExNCwxMTYsMTEwLDEwMSwxMTMsMTEzLDU5LDMsODgwOCw2NTAyNCw2OSw1OSwzLDg4MDgsNjUwMjQsNCwxNCw2OCw5Nyw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDEwOCwxMTAsMTExLDExMiwxMTUsMTE3LDEyODAzLDEyODA5LDEyODkzLDEyOTA4LDEyOTE0LDEyOTI4LDEyOTMzLDEyOTM3LDEzMDExLDEzMDI1LDEzMDMyLDEzMDQ5LDEzMDUyLDEzMDY5LDY4LDExMSwxMTYsNTksMSw4NzYyLDQsNCw5OSwxMDgsMTEyLDExNCwxMjgxOSwxMjgyNywxMjg0OSwxMjg4NywxMTQsNSwxNzUsMSw1OSwxMjgyNSwxLDE3NSw0LDIsMTAxLDExNiwxMjgzMywxMjgzNiw1OSwxLDk3OTQsNCwyLDU5LDEwMSwxMjg0MiwxMjg0NCwxLDEwMDE2LDExNSwxMDEsNTksMSwxMDAxNiw0LDIsNTksMTE1LDEyODU1LDEyODU3LDEsODYxNCwxMTYsMTExLDQsNCw1OSwxMDAsMTA4LDExNywxMjg2OSwxMjg3MSwxMjg3NywxMjg4MywxLDg2MTQsMTExLDExOSwxMTAsNTksMSw4NjE1LDEwMSwxMDIsMTE2LDU5LDEsODYxMiwxMTIsNTksMSw4NjEzLDEwNywxMDEsMTE0LDU5LDEsOTY0Niw0LDIsMTExLDEyMSwxMjg5OSwxMjkwNSwxMDksMTA5LDk3LDU5LDEsMTA3OTMsNTksMSwxMDg0LDk3LDExNSwxMDQsNTksMSw4MjEyLDk3LDExNSwxMTcsMTE0LDEwMSwxMDAsOTcsMTEwLDEwMywxMDgsMTAxLDU5LDEsODczNywxMTQsNTksMyw1NTM0OSw1NjYxOCwxMTEsNTksMSw4NDg3LDQsMyw5OSwxMDAsMTEwLDEyOTQ1LDEyOTU0LDEyOTg1LDExNCwxMTEsNSwxODEsMSw1OSwxMjk1MiwxLDE4MSw0LDQsNTksOTcsOTksMTAwLDEyOTY0LDEyOTY2LDEyOTcxLDEyOTc2LDEsODczOSwxMTUsMTE2LDU5LDEsNDIsMTA1LDExNCw1OSwxLDEwOTkyLDExMSwxMTYsNSwxODMsMSw1OSwxMjk4MywxLDE4MywxMTcsMTE1LDQsMyw1OSw5OCwxMDAsMTI5OTUsMTI5OTcsMTMwMDAsMSw4NzIyLDU5LDEsODg2Myw0LDIsNTksMTE3LDEzMDA2LDEzMDA4LDEsODc2MCw1OSwxLDEwNzk0LDQsMiw5OSwxMDAsMTMwMTcsMTMwMjEsMTEyLDU5LDEsMTA5NzEsMTE0LDU5LDEsODIzMCwxMTIsMTA4LDExNywxMTUsNTksMSw4NzIzLDQsMiwxMDAsMTEyLDEzMDM4LDEzMDQ0LDEwMSwxMDgsMTE1LDU5LDEsODg3MSwxMDIsNTksMyw1NTM0OSw1NjY3MCw1OSwxLDg3MjMsNCwyLDk5LDExNiwxMzA1OCwxMzA2MywxMTQsNTksMyw1NTM0OSw1NjUxNCwxMTIsMTExLDExNSw1OSwxLDg3NjYsNCwzLDU5LDEwOCwxMDksMTMwNzcsMTMwNzksMTMwODcsMSw5NTYsMTE2LDEwNSwxMDksOTcsMTEyLDU5LDEsODg4OCw5NywxMTIsNTksMSw4ODg4LDQsMjQsNzEsNzYsODIsODYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwOCwxMDksMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMzE0MiwxMzE2NSwxMzIxNywxMzIyOSwxMzI0NywxMzMzMCwxMzM1OSwxMzQxNCwxMzQyMCwxMzUwOCwxMzUxMywxMzU3OSwxMzYwMiwxMzYyNiwxMzYzMSwxMzc2MiwxMzc2NywxMzg1NSwxMzkzNiwxMzk5NSwxNDIxNCwxNDI4NSwxNDMxMiwxNDQzMiw0LDIsMTAzLDExNiwxMzE0OCwxMzE1Miw1OSwzLDg5MjEsODI0LDQsMiw1OSwxMTgsMTMxNTgsMTMxNjEsMyw4ODExLDg0MDIsNTksMyw4ODExLDgyNCw0LDMsMTAxLDEwOCwxMTYsMTMxNzMsMTMyMDAsMTMyMDQsMTAyLDExNiw0LDIsOTcsMTE0LDEzMTgxLDEzMTg4LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTMsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTQsNTksMyw4OTIwLDgyNCw0LDIsNTksMTE4LDEzMjEwLDEzMjEzLDMsODgxMCw4NDAyLDU5LDMsODgxMCw4MjQsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTUsNCwyLDY4LDEwMCwxMzIzNSwxMzI0MSw5NywxMTUsMTA0LDU5LDEsODg3OSw5NywxMTUsMTA0LDU5LDEsODg3OCw0LDUsOTgsOTksMTEwLDExMiwxMTYsMTMyNTksMTMyNjQsMTMyNzAsMTMyNzUsMTMzMDgsMTA4LDk3LDU5LDEsODcxMSwxMTcsMTE2LDEwMSw1OSwxLDMyNCwxMDMsNTksMyw4NzM2LDg0MDIsNCw1LDU5LDY5LDEwNSwxMTEsMTEyLDEzMjg3LDEzMjg5LDEzMjkzLDEzMjk4LDEzMzAyLDEsODc3Nyw1OSwzLDEwODY0LDgyNCwxMDAsNTksMyw4Nzc5LDgyNCwxMTUsNTksMSwzMjksMTE0LDExMSwxMjAsNTksMSw4Nzc3LDExNywxMTQsNCwyLDU5LDk3LDEzMzE2LDEzMzE4LDEsOTgzOCwxMDgsNCwyLDU5LDExNSwxMzMyNSwxMzMyNywxLDk4MzgsNTksMSw4NDY5LDQsMiwxMTUsMTE3LDEzMzM2LDEzMzQ0LDExMiw1LDE2MCwxLDU5LDEzMzQyLDEsMTYwLDEwOSwxMTIsNCwyLDU5LDEwMSwxMzM1MiwxMzM1NSwzLDg3ODIsODI0LDU5LDMsODc4Myw4MjQsNCw1LDk3LDEwMSwxMTEsMTE3LDEyMSwxMzM3MSwxMzM4NSwxMzM5MSwxMzQwNywxMzQxMSw0LDIsMTEyLDExNCwxMzM3NywxMzM4MCw1OSwxLDEwODE5LDExMSwxMTAsNTksMSwzMjgsMTAwLDEwNSwxMDgsNTksMSwzMjYsMTEwLDEwMyw0LDIsNTksMTAwLDEzMzk5LDEzNDAxLDEsODc3NSwxMTEsMTE2LDU5LDMsMTA4NjEsODI0LDExMiw1OSwxLDEwODE4LDU5LDEsMTA4NSw5NywxMTUsMTA0LDU5LDEsODIxMSw0LDcsNTksNjUsOTcsMTAwLDExMywxMTUsMTIwLDEzNDM2LDEzNDM4LDEzNDQzLDEzNDY2LDEzNDcyLDEzNDc4LDEzNDk0LDEsODgwMCwxMTQsMTE0LDU5LDEsODY2MywxMTQsNCwyLDEwNCwxMTQsMTM0NTAsMTM0NTQsMTA3LDU5LDEsMTA1MzIsNCwyLDU5LDExMSwxMzQ2MCwxMzQ2MiwxLDg1OTksMTE5LDU5LDEsODU5OSwxMTEsMTE2LDU5LDMsODc4NCw4MjQsMTE3LDEwNSwxMTgsNTksMSw4ODAyLDQsMiwxMDEsMTA1LDEzNDg0LDEzNDg5LDk3LDExNCw1OSwxLDEwNTM2LDEwOSw1OSwzLDg3NzAsODI0LDEwNSwxMTUsMTE2LDQsMiw1OSwxMTUsMTM1MDMsMTM1MDUsMSw4NzA4LDU5LDEsODcwOCwxMTQsNTksMyw1NTM0OSw1NjYxOSw0LDQsNjksMTAxLDExNSwxMTYsMTM1MjMsMTM1MjcsMTM1NjMsMTM1NjgsNTksMyw4ODA3LDgyNCw0LDMsNTksMTEzLDExNSwxMzUzNSwxMzUzNywxMzU1OSwxLDg4MTcsNCwzLDU5LDExMywxMTUsMTM1NDUsMTM1NDcsMTM1NTEsMSw4ODE3LDU5LDMsODgwNyw4MjQsMTA4LDk3LDExMCwxMTYsNTksMywxMDg3OCw4MjQsNTksMywxMDg3OCw4MjQsMTA1LDEwOSw1OSwxLDg4MjEsNCwyLDU5LDExNCwxMzU3NCwxMzU3NiwxLDg4MTUsNTksMSw4ODE1LDQsMyw2NSw5NywxMTIsMTM1ODcsMTM1OTIsMTM1OTcsMTE0LDExNCw1OSwxLDg2NTQsMTE0LDExNCw1OSwxLDg2MjIsOTcsMTE0LDU5LDEsMTA5OTQsNCwzLDU5LDExNSwxMTgsMTM2MTAsMTM2MTIsMTM2MjMsMSw4NzE1LDQsMiw1OSwxMDAsMTM2MTgsMTM2MjAsMSw4OTU2LDU5LDEsODk1NCw1OSwxLDg3MTUsOTksMTIxLDU5LDEsMTExNCw0LDcsNjUsNjksOTcsMTAwLDEwMSwxMTUsMTE2LDEzNjQ3LDEzNjUyLDEzNjU2LDEzNjYxLDEzNjY1LDEzNzM3LDEzNzQyLDExNCwxMTQsNTksMSw4NjUzLDU5LDMsODgwNiw4MjQsMTE0LDExNCw1OSwxLDg2MDIsMTE0LDU5LDEsODIyOSw0LDQsNTksMTAyLDExMywxMTUsMTM2NzUsMTM2NzcsMTM3MDMsMTM3MjUsMSw4ODE2LDExNiw0LDIsOTcsMTE0LDEzNjg0LDEzNjkxLDExNCwxMTQsMTExLDExOSw1OSwxLDg2MDIsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MjIsNCwzLDU5LDExMywxMTUsMTM3MTEsMTM3MTMsMTM3MTcsMSw4ODE2LDU5LDMsODgwNiw4MjQsMTA4LDk3LDExMCwxMTYsNTksMywxMDg3Nyw4MjQsNCwyLDU5LDExNSwxMzczMSwxMzczNCwzLDEwODc3LDgyNCw1OSwxLDg4MTQsMTA1LDEwOSw1OSwxLDg4MjAsNCwyLDU5LDExNCwxMzc0OCwxMzc1MCwxLDg4MTQsMTA1LDQsMiw1OSwxMDEsMTM3NTcsMTM3NTksMSw4OTM4LDU5LDEsODk0MCwxMDUsMTAwLDU5LDEsODc0MCw0LDIsMTEyLDExNiwxMzc3MywxMzc3OCwxMDIsNTksMyw1NTM0OSw1NjY3MSw1LDE3MiwzLDU5LDEwNSwxMTAsMTM3ODcsMTM3ODksMTM4MjksMSwxNzIsMTEwLDQsNCw1OSw2OSwxMDAsMTE4LDEzODAwLDEzODAyLDEzODA2LDEzODEyLDEsODcxMyw1OSwzLDg5NTMsODI0LDExMSwxMTYsNTksMyw4OTQ5LDgyNCw0LDMsOTcsOTgsOTksMTM4MjAsMTM4MjMsMTM4MjYsNTksMSw4NzEzLDU5LDEsODk1MSw1OSwxLDg5NTAsMTA1LDQsMiw1OSwxMTgsMTM4MzYsMTM4MzgsMSw4NzE2LDQsMyw5Nyw5OCw5OSwxMzg0NiwxMzg0OSwxMzg1Miw1OSwxLDg3MTYsNTksMSw4OTU4LDU5LDEsODk1Nyw0LDMsOTcsMTExLDExNCwxMzg2MywxMzg5MiwxMzg5OSwxMTQsNCw0LDU5LDk3LDExNSwxMTYsMTM4NzQsMTM4NzYsMTM4ODMsMTM4ODgsMSw4NzQyLDEwOCwxMDgsMTAxLDEwOCw1OSwxLDg3NDIsMTA4LDU5LDMsMTEwMDUsODQyMSw1OSwzLDg3MDYsODI0LDEwOCwxMDUsMTEwLDExNiw1OSwxLDEwNzcyLDQsMyw1OSw5OSwxMDEsMTM5MDcsMTM5MDksMTM5MTQsMSw4ODMyLDExNywxMDEsNTksMSw4OTI4LDQsMiw1OSw5OSwxMzkyMCwxMzkyMywzLDEwOTI3LDgyNCw0LDIsNTksMTAxLDEzOTI5LDEzOTMxLDEsODgzMiwxMTMsNTksMywxMDkyNyw4MjQsNCw0LDY1LDk3LDEwNSwxMTYsMTM5NDYsMTM5NTEsMTM5NzEsMTM5ODIsMTE0LDExNCw1OSwxLDg2NTUsMTE0LDExNCw0LDMsNTksOTksMTE5LDEzOTYxLDEzOTYzLDEzOTY3LDEsODYwMyw1OSwzLDEwNTQ3LDgyNCw1OSwzLDg2MDUsODI0LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MDMsMTE0LDEwNSw0LDIsNTksMTAxLDEzOTkwLDEzOTkyLDEsODkzOSw1OSwxLDg5NDEsNCw3LDk5LDEwNCwxMDUsMTA5LDExMiwxMTMsMTE3LDE0MDExLDE0MDM2LDE0MDYwLDE0MDgwLDE0MDg1LDE0MDkwLDE0MTA2LDQsNCw1OSw5OSwxMDEsMTE0LDE0MDIxLDE0MDIzLDE0MDI4LDE0MDMyLDEsODgzMywxMTcsMTAxLDU5LDEsODkyOSw1OSwzLDEwOTI4LDgyNCw1OSwzLDU1MzQ5LDU2NTE1LDExMSwxMTQsMTE2LDQsMiwxMDksMTEyLDE0MDQ1LDE0MDUwLDEwNSwxMDAsNTksMSw4NzQwLDk3LDExNCw5NywxMDgsMTA4LDEwMSwxMDgsNTksMSw4NzQyLDEwOSw0LDIsNTksMTAxLDE0MDY3LDE0MDY5LDEsODc2OSw0LDIsNTksMTEzLDE0MDc1LDE0MDc3LDEsODc3Miw1OSwxLDg3NzIsMTA1LDEwMCw1OSwxLDg3NDAsOTcsMTE0LDU5LDEsODc0MiwxMTUsMTE3LDQsMiw5OCwxMTIsMTQwOTgsMTQxMDIsMTAxLDU5LDEsODkzMCwxMDEsNTksMSw4OTMxLDQsMyw5OCw5OSwxMTIsMTQxMTQsMTQxNTcsMTQxNzEsNCw0LDU5LDY5LDEwMSwxMTUsMTQxMjQsMTQxMjYsMTQxMzAsMTQxMzMsMSw4ODM2LDU5LDMsMTA5NDksODI0LDU5LDEsODg0MCwxMDEsMTE2LDQsMiw1OSwxMDEsMTQxNDEsMTQxNDQsMyw4ODM0LDg0MDIsMTEzLDQsMiw1OSwxMTMsMTQxNTEsMTQxNTMsMSw4ODQwLDU5LDMsMTA5NDksODI0LDk5LDQsMiw1OSwxMDEsMTQxNjQsMTQxNjYsMSw4ODMzLDExMyw1OSwzLDEwOTI4LDgyNCw0LDQsNTksNjksMTAxLDExNSwxNDE4MSwxNDE4MywxNDE4NywxNDE5MCwxLDg4MzcsNTksMywxMDk1MCw4MjQsNTksMSw4ODQxLDEwMSwxMTYsNCwyLDU5LDEwMSwxNDE5OCwxNDIwMSwzLDg4MzUsODQwMiwxMTMsNCwyLDU5LDExMywxNDIwOCwxNDIxMCwxLDg4NDEsNTksMywxMDk1MCw4MjQsNCw0LDEwMywxMDUsMTA4LDExNCwxNDIyNCwxNDIyOCwxNDIzOCwxNDI0MiwxMDgsNTksMSw4ODI1LDEwOCwxMDAsMTAxLDUsMjQxLDEsNTksMTQyMzYsMSwyNDEsMTAzLDU5LDEsODgyNCwxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMiwxMDgsMTE0LDE0MjU0LDE0MjY5LDEwMSwxMDIsMTE2LDQsMiw1OSwxMDEsMTQyNjMsMTQyNjUsMSw4OTM4LDExMyw1OSwxLDg5NDAsMTA1LDEwMywxMDQsMTE2LDQsMiw1OSwxMDEsMTQyNzksMTQyODEsMSw4OTM5LDExMyw1OSwxLDg5NDEsNCwyLDU5LDEwOSwxNDI5MSwxNDI5MywxLDk1Nyw0LDMsNTksMTAxLDExNSwxNDMwMSwxNDMwMywxNDMwOCwxLDM1LDExNCwxMTEsNTksMSw4NDcwLDExMiw1OSwxLDgxOTksNCw5LDY4LDcyLDk3LDEwMCwxMDMsMTA1LDEwOCwxMTQsMTE1LDE0MzMyLDE0MzM4LDE0MzQ0LDE0MzQ5LDE0MzU1LDE0MzY5LDE0Mzc2LDE0NDA4LDE0NDI2LDk3LDExNSwxMDQsNTksMSw4ODc3LDk3LDExNCwxMTQsNTksMSwxMDUwMCwxMTIsNTksMyw4NzgxLDg0MDIsOTcsMTE1LDEwNCw1OSwxLDg4NzYsNCwyLDEwMSwxMTYsMTQzNjEsMTQzNjUsNTksMyw4ODA1LDg0MDIsNTksMyw2Miw4NDAyLDExMCwxMDIsMTA1LDExMCw1OSwxLDEwNzE4LDQsMyw2NSwxMDEsMTE2LDE0Mzg0LDE0Mzg5LDE0MzkzLDExNCwxMTQsNTksMSwxMDQ5OCw1OSwzLDg4MDQsODQwMiw0LDIsNTksMTE0LDE0Mzk5LDE0NDAyLDMsNjAsODQwMiwxMDUsMTAxLDU5LDMsODg4NCw4NDAyLDQsMiw2NSwxMTYsMTQ0MTQsMTQ0MTksMTE0LDExNCw1OSwxLDEwNDk5LDExNCwxMDUsMTAxLDU5LDMsODg4NSw4NDAyLDEwNSwxMDksNTksMyw4NzY0LDg0MDIsNCwzLDY1LDk3LDExMCwxNDQ0MCwxNDQ0NSwxNDQ2OCwxMTQsMTE0LDU5LDEsODY2MiwxMTQsNCwyLDEwNCwxMTQsMTQ0NTIsMTQ0NTYsMTA3LDU5LDEsMTA1MzEsNCwyLDU5LDExMSwxNDQ2MiwxNDQ2NCwxLDg1OTgsMTE5LDU5LDEsODU5OCwxMDEsOTcsMTE0LDU5LDEsMTA1MzUsNCwxOCw4Myw5Nyw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDgsMTA5LDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDExOCwxNDUxMiwxNDUxNSwxNDUzNSwxNDU2MCwxNDU5NywxNDYwMywxNDYxOCwxNDY0MywxNDY1NywxNDY2MiwxNDcwMSwxNDc0MSwxNDc0NywxNDc2OSwxNDg1MSwxNDg3NywxNDkwNywxNDkxNiw1OSwxLDk0MTYsNCwyLDk5LDExNSwxNDUyMSwxNDUzMSwxMTcsMTE2LDEwMSw1LDI0MywxLDU5LDE0NTI5LDEsMjQzLDExNiw1OSwxLDg4NTksNCwyLDEwNSwxMjEsMTQ1NDEsMTQ1NTcsMTE0LDQsMiw1OSw5OSwxNDU0OCwxNDU1MCwxLDg4NTgsNSwyNDQsMSw1OSwxNDU1NSwxLDI0NCw1OSwxLDEwODYsNCw1LDk3LDk4LDEwNSwxMTEsMTE1LDE0NTcyLDE0NTc3LDE0NTgzLDE0NTg3LDE0NTkxLDExNSwxMDQsNTksMSw4ODYxLDEwOCw5Nyw5OSw1OSwxLDMzNywxMTgsNTksMSwxMDgwOCwxMTYsNTksMSw4ODU3LDExMSwxMDgsMTAwLDU5LDEsMTA2ODQsMTA4LDEwNSwxMDMsNTksMSwzMzksNCwyLDk5LDExNCwxNDYwOSwxNDYxNCwxMDUsMTE0LDU5LDEsMTA2ODcsNTksMyw1NTM0OSw1NjYyMCw0LDMsMTExLDExNCwxMTYsMTQ2MjYsMTQ2MzAsMTQ2NDAsMTEwLDU5LDEsNzMxLDk3LDExOCwxMDEsNSwyNDIsMSw1OSwxNDYzOCwxLDI0Miw1OSwxLDEwNjg5LDQsMiw5OCwxMDksMTQ2NDksMTQ2NTQsOTcsMTE0LDU5LDEsMTA2NzcsNTksMSw5MzcsMTEwLDExNiw1OSwxLDg3NTAsNCw0LDk3LDk5LDEwNSwxMTYsMTQ2NzIsMTQ2NzcsMTQ2OTMsMTQ2OTgsMTE0LDExNCw1OSwxLDg2MzQsNCwyLDEwNSwxMTQsMTQ2ODMsMTQ2ODcsMTE0LDU5LDEsMTA2ODYsMTExLDExNSwxMTUsNTksMSwxMDY4MywxMTAsMTAxLDU5LDEsODI1NCw1OSwxLDEwNjg4LDQsMyw5NywxMDEsMTA1LDE0NzA5LDE0NzE0LDE0NzE5LDk5LDExNCw1OSwxLDMzMywxMDMsOTcsNTksMSw5NjksNCwzLDk5LDEwMCwxMTAsMTQ3MjcsMTQ3MzMsMTQ3MzYsMTE0LDExMSwxMTAsNTksMSw5NTksNTksMSwxMDY3OCwxMTcsMTE1LDU5LDEsODg1NCwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NzIsNCwzLDk3LDEwMSwxMDgsMTQ3NTUsMTQ3NTksMTQ3NjQsMTE0LDU5LDEsMTA2NzksMTE0LDExMiw1OSwxLDEwNjgxLDExNywxMTUsNTksMSw4ODUzLDQsNyw1OSw5NywxMDAsMTA1LDExMSwxMTUsMTE4LDE0Nzg1LDE0Nzg3LDE0NzkyLDE0ODMxLDE0ODM3LDE0ODQxLDE0ODQ4LDEsODc0NCwxMTQsMTE0LDU5LDEsODYzNSw0LDQsNTksMTAxLDEwMiwxMDksMTQ4MDIsMTQ4MDQsMTQ4MTcsMTQ4MjQsMSwxMDg0NSwxMTQsNCwyLDU5LDExMSwxNDgxMSwxNDgxMywxLDg1MDAsMTAyLDU5LDEsODUwMCw1LDE3MCwxLDU5LDE0ODIyLDEsMTcwLDUsMTg2LDEsNTksMTQ4MjksMSwxODYsMTAzLDExMSwxMDIsNTksMSw4ODg2LDExNCw1OSwxLDEwODM4LDEwOCwxMTEsMTEyLDEwMSw1OSwxLDEwODM5LDU5LDEsMTA4NDMsNCwzLDk5LDEwOCwxMTEsMTQ4NTksMTQ4NjMsMTQ4NzMsMTE0LDU5LDEsODUwMCw5NywxMTUsMTA0LDUsMjQ4LDEsNTksMTQ4NzEsMSwyNDgsMTA4LDU5LDEsODg1NiwxMDUsNCwyLDEwOCwxMDksMTQ4ODQsMTQ4OTMsMTAwLDEwMSw1LDI0NSwxLDU5LDE0ODkxLDEsMjQ1LDEwMSwxMTUsNCwyLDU5LDk3LDE0OTAxLDE0OTAzLDEsODg1NSwxMTUsNTksMSwxMDgwNiwxMDksMTA4LDUsMjQ2LDEsNTksMTQ5MTQsMSwyNDYsOTgsOTcsMTE0LDU5LDEsOTAyMSw0LDEyLDk3LDk5LDEwMSwxMDIsMTA0LDEwNSwxMDgsMTA5LDExMSwxMTQsMTE1LDExNywxNDk0OCwxNDk5MiwxNDk5NiwxNTAzMywxNTAzOCwxNTA2OCwxNTA5MCwxNTE4OSwxNTE5MiwxNTIyMiwxNTQyNywxNTQ0MSwxMTQsNCw0LDU5LDk3LDExNSwxMTYsMTQ5NTksMTQ5NjEsMTQ5NzYsMTQ5ODksMSw4NzQxLDUsMTgyLDIsNTksMTA4LDE0OTY4LDE0OTcwLDEsMTgyLDEwOCwxMDEsMTA4LDU5LDEsODc0MSw0LDIsMTA1LDEwOCwxNDk4MiwxNDk4NiwxMDksNTksMSwxMDk5NSw1OSwxLDExMDA1LDU5LDEsODcwNiwxMjEsNTksMSwxMDg3LDExNCw0LDUsOTksMTA1LDEwOSwxMTIsMTE2LDE1MDA5LDE1MDE0LDE1MDE5LDE1MDI0LDE1MDI3LDExMCwxMTYsNTksMSwzNywxMTEsMTAwLDU5LDEsNDYsMTA1LDEwOCw1OSwxLDgyNDAsNTksMSw4ODY5LDEwMSwxMTAsMTA3LDU5LDEsODI0MSwxMTQsNTksMyw1NTM0OSw1NjYyMSw0LDMsMTA1LDEwOSwxMTEsMTUwNDYsMTUwNTcsMTUwNjMsNCwyLDU5LDExOCwxNTA1MiwxNTA1NCwxLDk2Niw1OSwxLDk4MSwxMDksOTcsMTE2LDU5LDEsODQ5OSwxMTAsMTAxLDU5LDEsOTc0Miw0LDMsNTksMTE2LDExOCwxNTA3NiwxNTA3OCwxNTA4NywxLDk2MCw5OSwxMDQsMTAyLDExMSwxMTQsMTA3LDU5LDEsODkxNiw1OSwxLDk4Miw0LDIsOTcsMTE3LDE1MDk2LDE1MTE5LDExMCw0LDIsOTksMTA3LDE1MTAzLDE1MTE1LDEwNyw0LDIsNTksMTA0LDE1MTEwLDE1MTEyLDEsODQ2Myw1OSwxLDg0NjIsMTE4LDU5LDEsODQ2MywxMTUsNCw5LDU5LDk3LDk4LDk5LDEwMCwxMDEsMTA5LDExNSwxMTYsMTUxNDAsMTUxNDIsMTUxNDgsMTUxNTEsMTUxNTYsMTUxNjgsMTUxNzEsMTUxNzksMTUxODQsMSw0Myw5OSwxMDUsMTE0LDU5LDEsMTA3ODcsNTksMSw4ODYyLDEwNSwxMTQsNTksMSwxMDc4Niw0LDIsMTExLDExNywxNTE2MiwxNTE2NSw1OSwxLDg3MjQsNTksMSwxMDc4OSw1OSwxLDEwODY2LDExMCw1LDE3NywxLDU5LDE1MTc3LDEsMTc3LDEwNSwxMDksNTksMSwxMDc5MCwxMTksMTExLDU5LDEsMTA3OTEsNTksMSwxNzcsNCwzLDEwNSwxMTIsMTE3LDE1MjAwLDE1MjA4LDE1MjEzLDExMCwxMTYsMTA1LDExMCwxMTYsNTksMSwxMDc3MywxMDIsNTksMyw1NTM0OSw1NjY3MywxMTAsMTAwLDUsMTYzLDEsNTksMTUyMjAsMSwxNjMsNCwxMCw1OSw2OSw5Nyw5OSwxMDEsMTA1LDExMCwxMTEsMTE1LDExNywxNTI0NCwxNTI0NiwxNTI0OSwxNTI1MywxNTI1OCwxNTMzNCwxNTM0NywxNTM2NywxNTQxNiwxNTQyMSwxLDg4MjYsNTksMSwxMDkzMSwxMTIsNTksMSwxMDkzNSwxMTcsMTAxLDU5LDEsODgyOCw0LDIsNTksOTksMTUyNjQsMTUyNjYsMSwxMDkyNyw0LDYsNTksOTcsOTksMTAxLDExMCwxMTUsMTUyODAsMTUyODIsMTUyOTAsMTUyOTksMTUzMDMsMTUzMjksMSw4ODI2LDExMiwxMTIsMTE0LDExMSwxMjAsNTksMSwxMDkzNSwxMTcsMTE0LDEwOCwxMjEsMTAxLDExMyw1OSwxLDg4MjgsMTEzLDU5LDEsMTA5MjcsNCwzLDk3LDEwMSwxMTUsMTUzMTEsMTUzMTksMTUzMjQsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDEwOTM3LDExMywxMTMsNTksMSwxMDkzMywxMDUsMTA5LDU5LDEsODkzNiwxMDUsMTA5LDU5LDEsODgzMCwxMDksMTAxLDQsMiw1OSwxMTUsMTUzNDIsMTUzNDQsMSw4MjQyLDU5LDEsODQ3Myw0LDMsNjksOTcsMTE1LDE1MzU1LDE1MzU4LDE1MzYyLDU5LDEsMTA5MzMsMTEyLDU5LDEsMTA5MzcsMTA1LDEwOSw1OSwxLDg5MzYsNCwzLDEwMCwxMDIsMTEyLDE1Mzc1LDE1Mzc4LDE1NDA0LDU5LDEsODcxOSw0LDMsOTcsMTA4LDExNSwxNTM4NiwxNTM5MiwxNTM5OCwxMDgsOTcsMTE0LDU5LDEsOTAwNiwxMDUsMTEwLDEwMSw1OSwxLDg5NzgsMTE3LDExNCwxMDIsNTksMSw4OTc5LDQsMiw1OSwxMTYsMTU0MTAsMTU0MTIsMSw4NzMzLDExMSw1OSwxLDg3MzMsMTA1LDEwOSw1OSwxLDg4MzAsMTE0LDEwMSwxMDgsNTksMSw4ODgwLDQsMiw5OSwxMDUsMTU0MzMsMTU0MzgsMTE0LDU5LDMsNTUzNDksNTY1MTcsNTksMSw5NjgsMTEwLDk5LDExNSwxMTIsNTksMSw4MjAwLDQsNiwxMDIsMTA1LDExMSwxMTIsMTE1LDExNywxNTQ2MiwxNTQ2NywxNTQ3MiwxNTQ3OCwxNTQ4NSwxNTQ5MSwxMTQsNTksMyw1NTM0OSw1NjYyMiwxMTAsMTE2LDU5LDEsMTA3NjQsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2Njc0LDExNCwxMDUsMTA5LDEwMSw1OSwxLDgyNzksOTksMTE0LDU5LDMsNTUzNDksNTY1MTgsNCwzLDk3LDEwMSwxMTEsMTU0OTksMTU1MjAsMTU1MzQsMTE2LDQsMiwxMDEsMTA1LDE1NTA2LDE1NTE1LDExNCwxMTAsMTA1LDExMSwxMTAsMTE1LDU5LDEsODQ2MSwxMTAsMTE2LDU5LDEsMTA3NzQsMTE1LDExNiw0LDIsNTksMTAxLDE1NTI4LDE1NTMwLDEsNjMsMTEzLDU5LDEsODc5OSwxMTYsNSwzNCwxLDU5LDE1NTQwLDEsMzQsNCwyMSw2NSw2Niw3Miw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDEwOCwxMDksMTEwLDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDEyMCwxNTU4NiwxNTYwOSwxNTYxNSwxNTYyMCwxNTc5NiwxNTg1NSwxNTg5MywxNTkzMSwxNTk3NywxNjAwMSwxNjAzOSwxNjE4MywxNjIwNCwxNjIyMiwxNjIyOCwxNjI4NSwxNjMxMiwxNjMxOCwxNjM2MywxNjQwOCwxNjQxNiw0LDMsOTcsMTE0LDExNiwxNTU5NCwxNTU5OSwxNTYwMywxMTQsMTE0LDU5LDEsODY2NywxMTQsNTksMSw4NjU4LDk3LDEwNSwxMDgsNTksMSwxMDUyNCw5NywxMTQsMTE0LDU5LDEsMTA1MTEsOTcsMTE0LDU5LDEsMTA1OTYsNCw3LDk5LDEwMCwxMDEsMTEwLDExMywxMTQsMTE2LDE1NjM2LDE1NjUxLDE1NjU2LDE1NjY0LDE1Njg3LDE1Njk2LDE1NzcwLDQsMiwxMDEsMTE3LDE1NjQyLDE1NjQ2LDU5LDMsODc2NSw4MTcsMTE2LDEwMSw1OSwxLDM0MSwxMDUsOTksNTksMSw4NzMwLDEwOSwxMTIsMTE2LDEyMSwxMTgsNTksMSwxMDY3NSwxMDMsNCw0LDU5LDEwMCwxMDEsMTA4LDE1Njc1LDE1Njc3LDE1NjgwLDE1NjgzLDEsMTAyMTcsNTksMSwxMDY0Miw1OSwxLDEwNjYxLDEwMSw1OSwxLDEwMjE3LDExNywxMTEsNSwxODcsMSw1OSwxNTY5NCwxLDE4NywxMTQsNCwxMSw1OSw5Nyw5OCw5OSwxMDIsMTA0LDEwOCwxMTIsMTE1LDExNiwxMTksMTU3MjEsMTU3MjMsMTU3MjcsMTU3MzksMTU3NDIsMTU3NDYsMTU3NTAsMTU3NTQsMTU3NTgsMTU3NjMsMTU3NjcsMSw4NTk0LDExMiw1OSwxLDEwNjEzLDQsMiw1OSwxMDIsMTU3MzMsMTU3MzUsMSw4Njc3LDExNSw1OSwxLDEwNTI4LDU5LDEsMTA1NDcsMTE1LDU5LDEsMTA1MjYsMTA3LDU5LDEsODYxOCwxMTIsNTksMSw4NjIwLDEwOCw1OSwxLDEwNTY1LDEwNSwxMDksNTksMSwxMDYxMiwxMDgsNTksMSw4NjExLDU5LDEsODYwNSw0LDIsOTcsMTA1LDE1Nzc2LDE1NzgxLDEwNSwxMDgsNTksMSwxMDUyMiwxMTEsNCwyLDU5LDExMCwxNTc4OCwxNTc5MCwxLDg3NTgsOTcsMTA4LDExNSw1OSwxLDg0NzQsNCwzLDk3LDk4LDExNCwxNTgwNCwxNTgwOSwxNTgxNCwxMTQsMTE0LDU5LDEsMTA1MDksMTE0LDEwNyw1OSwxLDEwMDk5LDQsMiw5NywxMDcsMTU4MjAsMTU4MzMsOTksNCwyLDEwMSwxMDcsMTU4MjcsMTU4MzAsNTksMSwxMjUsNTksMSw5Myw0LDIsMTAxLDExNSwxNTgzOSwxNTg0Miw1OSwxLDEwNjM2LDEwOCw0LDIsMTAwLDExNywxNTg0OSwxNTg1Miw1OSwxLDEwNjM4LDU5LDEsMTA2NDAsNCw0LDk3LDEwMSwxMTcsMTIxLDE1ODY1LDE1ODcxLDE1ODg2LDE1ODkwLDExNCwxMTEsMTEwLDU5LDEsMzQ1LDQsMiwxMDAsMTA1LDE1ODc3LDE1ODgyLDEwNSwxMDgsNTksMSwzNDMsMTA4LDU5LDEsODk2OSw5OCw1OSwxLDEyNSw1OSwxLDEwODgsNCw0LDk5LDEwOCwxMTMsMTE1LDE1OTAzLDE1OTA3LDE1OTE0LDE1OTI3LDk3LDU5LDEsMTA1NTEsMTAwLDEwNCw5NywxMTQsNTksMSwxMDYwMSwxMTcsMTExLDQsMiw1OSwxMTQsMTU5MjIsMTU5MjQsMSw4MjIxLDU5LDEsODIyMSwxMDQsNTksMSw4NjI3LDQsMyw5Nyw5OSwxMDMsMTU5MzksMTU5NjYsMTU5NzAsMTA4LDQsNCw1OSwxMDUsMTEyLDExNSwxNTk1MCwxNTk1MiwxNTk1NywxNTk2MywxLDg0NzYsMTEwLDEwMSw1OSwxLDg0NzUsOTcsMTE0LDExNiw1OSwxLDg0NzYsNTksMSw4NDc3LDExNiw1OSwxLDk2NDUsNSwxNzQsMSw1OSwxNTk3NSwxLDE3NCw0LDMsMTA1LDEwOCwxMTQsMTU5ODUsMTU5OTEsMTU5OTcsMTE1LDEwNCwxMTYsNTksMSwxMDYyMSwxMTEsMTExLDExNCw1OSwxLDg5NzEsNTksMyw1NTM0OSw1NjYyMyw0LDIsOTcsMTExLDE2MDA3LDE2MDI4LDExNCw0LDIsMTAwLDExNywxNjAxNCwxNjAxNyw1OSwxLDg2NDEsNCwyLDU5LDEwOCwxNjAyMywxNjAyNSwxLDg2NDAsNTksMSwxMDYwNCw0LDIsNTksMTE4LDE2MDM0LDE2MDM2LDEsOTYxLDU5LDEsMTAwOSw0LDMsMTAzLDExMCwxMTUsMTYwNDcsMTYxNjcsMTYxNzEsMTA0LDExNiw0LDYsOTcsMTA0LDEwOCwxMTQsMTE1LDExNiwxNjA2MywxNjA4MSwxNjEwMywxNjEzMCwxNjE0MywxNjE1NSwxMTQsMTE0LDExMSwxMTksNCwyLDU5LDExNiwxNjA3MywxNjA3NSwxLDg1OTQsOTcsMTA1LDEwOCw1OSwxLDg2MTEsOTcsMTE0LDExMiwxMTEsMTExLDExMCw0LDIsMTAwLDExNywxNjA5MywxNjA5OSwxMTEsMTE5LDExMCw1OSwxLDg2NDEsMTEyLDU5LDEsODY0MCwxMDEsMTAyLDExNiw0LDIsOTcsMTA0LDE2MTEyLDE2MTIwLDExNCwxMTQsMTExLDExOSwxMTUsNTksMSw4NjQ0LDk3LDExNCwxMTIsMTExLDExMSwxMTAsMTE1LDU5LDEsODY1MiwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDExNSw1OSwxLDg2NDksMTEzLDExNywxMDUsMTAzLDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MDUsMTA0LDExNCwxMDEsMTAxLDExNiwxMDUsMTA5LDEwMSwxMTUsNTksMSw4OTA4LDEwMyw1OSwxLDczMCwxMDUsMTEwLDEwMywxMDAsMTExLDExNiwxMTUsMTAxLDExMyw1OSwxLDg3ODcsNCwzLDk3LDEwNCwxMDksMTYxOTEsMTYxOTYsMTYyMDEsMTE0LDExNCw1OSwxLDg2NDQsOTcsMTE0LDU5LDEsODY1Miw1OSwxLDgyMDcsMTExLDExNywxMTUsMTE2LDQsMiw1OSw5NywxNjIxNCwxNjIxNiwxLDkxMzcsOTksMTA0LDEwMSw1OSwxLDkxMzcsMTA5LDEwNSwxMDAsNTksMSwxMDk5MCw0LDQsOTcsOTgsMTEyLDExNiwxNjIzOCwxNjI1MiwxNjI1NywxNjI3OCw0LDIsMTEwLDExNCwxNjI0NCwxNjI0OCwxMDMsNTksMSwxMDIyMSwxMTQsNTksMSw4NzAyLDExNCwxMDcsNTksMSwxMDIxNSw0LDMsOTcsMTAyLDEwOCwxNjI2NSwxNjI2OSwxNjI3MywxMTQsNTksMSwxMDYzMCw1OSwzLDU1MzQ5LDU2Njc1LDExNywxMTUsNTksMSwxMDc5OCwxMDUsMTA5LDEwMSwxMTUsNTksMSwxMDgwNSw0LDIsOTcsMTEyLDE2MjkxLDE2MzA0LDExNCw0LDIsNTksMTAzLDE2Mjk4LDE2MzAwLDEsNDEsMTE2LDU5LDEsMTA2NDQsMTExLDEwOCwxMDUsMTEwLDExNiw1OSwxLDEwNzcwLDk3LDExNCwxMTQsNTksMSw4NjQ5LDQsNCw5Nyw5OSwxMDQsMTEzLDE2MzI4LDE2MzM0LDE2MzM5LDE2MzQyLDExMywxMTcsMTExLDU5LDEsODI1MCwxMTQsNTksMyw1NTM0OSw1NjUxOSw1OSwxLDg2MjUsNCwyLDk4LDExNywxNjM0OCwxNjM1MSw1OSwxLDkzLDExMSw0LDIsNTksMTE0LDE2MzU4LDE2MzYwLDEsODIxNyw1OSwxLDgyMTcsNCwzLDEwNCwxMDUsMTE0LDE2MzcxLDE2Mzc3LDE2MzgzLDExNCwxMDEsMTAxLDU5LDEsODkwOCwxMDksMTAxLDExNSw1OSwxLDg5MDYsMTA1LDQsNCw1OSwxMDEsMTAyLDEwOCwxNjM5NCwxNjM5NiwxNjM5OSwxNjQwMiwxLDk2NTcsNTksMSw4ODg1LDU5LDEsOTY1NiwxMTYsMTE0LDEwNSw1OSwxLDEwNzAyLDEwOCwxMTcsMTA0LDk3LDExNCw1OSwxLDEwNjAwLDU5LDEsODQ3OCw0LDE5LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDEwOSwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE5LDEyMiwxNjQ1OSwxNjQ2NiwxNjQ3MiwxNjU3MiwxNjU5MCwxNjY3MiwxNjY4NywxNjc0NiwxNjg0NCwxNjg1MCwxNjkyNCwxNjk2MywxNjk4OCwxNzExNSwxNzEyMSwxNzE1NCwxNzIwNiwxNzYxNCwxNzY1Niw5OSwxMTcsMTE2LDEwMSw1OSwxLDM0NywxMTMsMTE3LDExMSw1OSwxLDgyMTgsNCwxMCw1OSw2OSw5Nyw5OSwxMDEsMTA1LDExMCwxMTIsMTE1LDEyMSwxNjQ5NCwxNjQ5NiwxNjQ5OSwxNjUxMywxNjUxOCwxNjUzMSwxNjUzNiwxNjU1NiwxNjU2NCwxNjU2OSwxLDg4MjcsNTksMSwxMDkzMiw0LDIsMTEyLDExNCwxNjUwNSwxNjUwOCw1OSwxLDEwOTM2LDExMSwxMTAsNTksMSwzNTMsMTE3LDEwMSw1OSwxLDg4MjksNCwyLDU5LDEwMCwxNjUyNCwxNjUyNiwxLDEwOTI4LDEwNSwxMDgsNTksMSwzNTEsMTE0LDk5LDU5LDEsMzQ5LDQsMyw2OSw5NywxMTUsMTY1NDQsMTY1NDcsMTY1NTEsNTksMSwxMDkzNCwxMTIsNTksMSwxMDkzOCwxMDUsMTA5LDU5LDEsODkzNywxMTEsMTA4LDEwNSwxMTAsMTE2LDU5LDEsMTA3NzEsMTA1LDEwOSw1OSwxLDg4MzEsNTksMSwxMDg5LDExMSwxMTYsNCwzLDU5LDk4LDEwMSwxNjU4MiwxNjU4NCwxNjU4NywxLDg5MDEsNTksMSw4ODY1LDU5LDEsMTA4NTQsNCw3LDY1LDk3LDk5LDEwOSwxMTUsMTE2LDEyMCwxNjYwNiwxNjYxMSwxNjYzNCwxNjY0MiwxNjY0NiwxNjY1MiwxNjY2OCwxMTQsMTE0LDU5LDEsODY2NCwxMTQsNCwyLDEwNCwxMTQsMTY2MTgsMTY2MjIsMTA3LDU5LDEsMTA1MzMsNCwyLDU5LDExMSwxNjYyOCwxNjYzMCwxLDg2MDAsMTE5LDU5LDEsODYwMCwxMTYsNSwxNjcsMSw1OSwxNjY0MCwxLDE2NywxMDUsNTksMSw1OSwxMTksOTcsMTE0LDU5LDEsMTA1MzcsMTA5LDQsMiwxMDUsMTEwLDE2NjU5LDE2NjY1LDExMCwxMTcsMTE1LDU5LDEsODcyNiw1OSwxLDg3MjYsMTE2LDU5LDEsMTAwMzgsMTE0LDQsMiw1OSwxMTEsMTY2NzksMTY2ODIsMyw1NTM0OSw1NjYyNCwxMTksMTEwLDU5LDEsODk5NCw0LDQsOTcsOTksMTExLDEyMSwxNjY5NywxNjcwMiwxNjcxNiwxNjczOSwxMTQsMTEyLDU5LDEsOTgzOSw0LDIsMTA0LDEyMSwxNjcwOCwxNjcxMyw5OSwxMjEsNTksMSwxMDk3LDU5LDEsMTA5NiwxMTQsMTE2LDQsMiwxMDksMTEyLDE2NzI0LDE2NzI5LDEwNSwxMDAsNTksMSw4NzM5LDk3LDExNCw5NywxMDgsMTA4LDEwMSwxMDgsNTksMSw4NzQxLDUsMTczLDEsNTksMTY3NDQsMSwxNzMsNCwyLDEwMywxMDksMTY3NTIsMTY3NzAsMTA5LDk3LDQsMyw1OSwxMDIsMTE4LDE2NzYyLDE2NzY0LDE2NzY3LDEsOTYzLDU5LDEsOTYyLDU5LDEsOTYyLDQsOCw1OSwxMDAsMTAxLDEwMywxMDgsMTEwLDExMiwxMTQsMTY3ODgsMTY3OTAsMTY3OTUsMTY4MDYsMTY4MTcsMTY4MjgsMTY4MzIsMTY4MzgsMSw4NzY0LDExMSwxMTYsNTksMSwxMDg1OCw0LDIsNTksMTEzLDE2ODAxLDE2ODAzLDEsODc3MSw1OSwxLDg3NzEsNCwyLDU5LDY5LDE2ODEyLDE2ODE0LDEsMTA5MTAsNTksMSwxMDkxMiw0LDIsNTksNjksMTY4MjMsMTY4MjUsMSwxMDkwOSw1OSwxLDEwOTExLDEwMSw1OSwxLDg3NzQsMTA4LDExNywxMTUsNTksMSwxMDc4OCw5NywxMTQsMTE0LDU5LDEsMTA2MTAsOTcsMTE0LDExNCw1OSwxLDg1OTIsNCw0LDk3LDEwMSwxMDUsMTE2LDE2ODYwLDE2ODgzLDE2ODkxLDE2OTA0LDQsMiwxMDgsMTE1LDE2ODY2LDE2ODc4LDEwOCwxMTUsMTAxLDExNiwxMDksMTA1LDExMCwxMTcsMTE1LDU5LDEsODcyNiwxMDQsMTEyLDU5LDEsMTA4MDMsMTEyLDk3LDExNCwxMTUsMTA4LDU5LDEsMTA3MjQsNCwyLDEwMCwxMDgsMTY4OTcsMTY5MDAsNTksMSw4NzM5LDEwMSw1OSwxLDg5OTUsNCwyLDU5LDEwMSwxNjkxMCwxNjkxMiwxLDEwOTIyLDQsMiw1OSwxMTUsMTY5MTgsMTY5MjAsMSwxMDkyNCw1OSwzLDEwOTI0LDY1MDI0LDQsMywxMDIsMTA4LDExMiwxNjkzMiwxNjkzOCwxNjk1OCwxMTYsOTksMTIxLDU5LDEsMTEwMCw0LDIsNTksOTgsMTY5NDQsMTY5NDYsMSw0Nyw0LDIsNTksOTcsMTY5NTIsMTY5NTQsMSwxMDY5MiwxMTQsNTksMSw5MDIzLDEwMiw1OSwzLDU1MzQ5LDU2Njc2LDk3LDQsMiwxMDAsMTE0LDE2OTcwLDE2OTg1LDEwMSwxMTUsNCwyLDU5LDExNywxNjk3OCwxNjk4MCwxLDk4MjQsMTA1LDExNiw1OSwxLDk4MjQsNTksMSw4NzQxLDQsMyw5OSwxMTUsMTE3LDE2OTk2LDE3MDI4LDE3MDg5LDQsMiw5NywxMTcsMTcwMDIsMTcwMTUsMTEyLDQsMiw1OSwxMTUsMTcwMDksMTcwMTEsMSw4ODUxLDU5LDMsODg1MSw2NTAyNCwxMTIsNCwyLDU5LDExNSwxNzAyMiwxNzAyNCwxLDg4NTIsNTksMyw4ODUyLDY1MDI0LDExNyw0LDIsOTgsMTEyLDE3MDM1LDE3MDYyLDQsMyw1OSwxMDEsMTE1LDE3MDQzLDE3MDQ1LDE3MDQ4LDEsODg0Nyw1OSwxLDg4NDksMTAxLDExNiw0LDIsNTksMTAxLDE3MDU2LDE3MDU4LDEsODg0NywxMTMsNTksMSw4ODQ5LDQsMyw1OSwxMDEsMTE1LDE3MDcwLDE3MDcyLDE3MDc1LDEsODg0OCw1OSwxLDg4NTAsMTAxLDExNiw0LDIsNTksMTAxLDE3MDgzLDE3MDg1LDEsODg0OCwxMTMsNTksMSw4ODUwLDQsMyw1OSw5NywxMDIsMTcwOTcsMTcwOTksMTcxMTIsMSw5NjMzLDExNCw0LDIsMTAxLDEwMiwxNzEwNiwxNzEwOSw1OSwxLDk2MzMsNTksMSw5NjQyLDU5LDEsOTY0Miw5NywxMTQsMTE0LDU5LDEsODU5NCw0LDQsOTksMTAxLDEwOSwxMTYsMTcxMzEsMTcxMzYsMTcxNDIsMTcxNDgsMTE0LDU5LDMsNTUzNDksNTY1MjAsMTE2LDEwOSwxMTAsNTksMSw4NzI2LDEwNSwxMDgsMTAxLDU5LDEsODk5NSw5NywxMTQsMTAyLDU5LDEsODkwMiw0LDIsOTcsMTE0LDE3MTYwLDE3MTcyLDExNCw0LDIsNTksMTAyLDE3MTY3LDE3MTY5LDEsOTczNCw1OSwxLDk3MzMsNCwyLDk3LDExMCwxNzE3OCwxNzIwMiwxMDUsMTAzLDEwNCwxMTYsNCwyLDEwMSwxMTIsMTcxODgsMTcxOTcsMTEyLDExNSwxMDUsMTA4LDExMSwxMTAsNTksMSwxMDEzLDEwNCwxMDUsNTksMSw5ODEsMTE1LDU5LDEsMTc1LDQsNSw5OCw5OSwxMDksMTEwLDExMiwxNzIxOCwxNzM1MSwxNzQyMCwxNzQyMywxNzQyNyw0LDksNTksNjksMTAwLDEwMSwxMDksMTEwLDExMiwxMTQsMTE1LDE3MjM4LDE3MjQwLDE3MjQzLDE3MjQ4LDE3MjYxLDE3MjY3LDE3Mjc5LDE3Mjg1LDE3MjkxLDEsODgzNCw1OSwxLDEwOTQ5LDExMSwxMTYsNTksMSwxMDk0MSw0LDIsNTksMTAwLDE3MjU0LDE3MjU2LDEsODgzOCwxMTEsMTE2LDU5LDEsMTA5NDcsMTE3LDEwOCwxMTYsNTksMSwxMDk0NSw0LDIsNjksMTAxLDE3MjczLDE3Mjc2LDU5LDEsMTA5NTUsNTksMSw4ODQyLDEwOCwxMTcsMTE1LDU5LDEsMTA5NDMsOTcsMTE0LDExNCw1OSwxLDEwNjE3LDQsMywxMDEsMTA1LDExNywxNzI5OSwxNzMzNSwxNzMzOSwxMTYsNCwzLDU5LDEwMSwxMTAsMTczMDgsMTczMTAsMTczMjIsMSw4ODM0LDExMyw0LDIsNTksMTEzLDE3MzE3LDE3MzE5LDEsODgzOCw1OSwxLDEwOTQ5LDEwMSwxMTMsNCwyLDU5LDExMywxNzMzMCwxNzMzMiwxLDg4NDIsNTksMSwxMDk1NSwxMDksNTksMSwxMDk1MSw0LDIsOTgsMTEyLDE3MzQ1LDE3MzQ4LDU5LDEsMTA5NjUsNTksMSwxMDk2Myw5OSw0LDYsNTksOTcsOTksMTAxLDExMCwxMTUsMTczNjYsMTczNjgsMTczNzYsMTczODUsMTczODksMTc0MTUsMSw4ODI3LDExMiwxMTIsMTE0LDExMSwxMjAsNTksMSwxMDkzNiwxMTcsMTE0LDEwOCwxMjEsMTAxLDExMyw1OSwxLDg4MjksMTEzLDU5LDEsMTA5MjgsNCwzLDk3LDEwMSwxMTUsMTczOTcsMTc0MDUsMTc0MTAsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDEwOTM4LDExMywxMTMsNTksMSwxMDkzNCwxMDUsMTA5LDU5LDEsODkzNywxMDUsMTA5LDU5LDEsODgzMSw1OSwxLDg3MjEsMTAzLDU5LDEsOTgzNCw0LDEzLDQ5LDUwLDUxLDU5LDY5LDEwMCwxMDEsMTA0LDEwOCwxMDksMTEwLDExMiwxMTUsMTc0NTUsMTc0NjIsMTc0NjksMTc0NzYsMTc0NzgsMTc0ODEsMTc0OTYsMTc1MDksMTc1MjQsMTc1MzAsMTc1MzYsMTc1NDgsMTc1NTQsNSwxODUsMSw1OSwxNzQ2MCwxLDE4NSw1LDE3OCwxLDU5LDE3NDY3LDEsMTc4LDUsMTc5LDEsNTksMTc0NzQsMSwxNzksMSw4ODM1LDU5LDEsMTA5NTAsNCwyLDExMSwxMTUsMTc0ODcsMTc0OTEsMTE2LDU5LDEsMTA5NDIsMTE3LDk4LDU5LDEsMTA5NjgsNCwyLDU5LDEwMCwxNzUwMiwxNzUwNCwxLDg4MzksMTExLDExNiw1OSwxLDEwOTQ4LDExNSw0LDIsMTExLDExNywxNzUxNiwxNzUyMCwxMDgsNTksMSwxMDE4NSw5OCw1OSwxLDEwOTY3LDk3LDExNCwxMTQsNTksMSwxMDYxOSwxMTcsMTA4LDExNiw1OSwxLDEwOTQ2LDQsMiw2OSwxMDEsMTc1NDIsMTc1NDUsNTksMSwxMDk1Niw1OSwxLDg4NDMsMTA4LDExNywxMTUsNTksMSwxMDk0NCw0LDMsMTAxLDEwNSwxMTcsMTc1NjIsMTc1OTgsMTc2MDIsMTE2LDQsMyw1OSwxMDEsMTEwLDE3NTcxLDE3NTczLDE3NTg1LDEsODgzNSwxMTMsNCwyLDU5LDExMywxNzU4MCwxNzU4MiwxLDg4MzksNTksMSwxMDk1MCwxMDEsMTEzLDQsMiw1OSwxMTMsMTc1OTMsMTc1OTUsMSw4ODQzLDU5LDEsMTA5NTYsMTA5LDU5LDEsMTA5NTIsNCwyLDk4LDExMiwxNzYwOCwxNzYxMSw1OSwxLDEwOTY0LDU5LDEsMTA5NjYsNCwzLDY1LDk3LDExMCwxNzYyMiwxNzYyNywxNzY1MCwxMTQsMTE0LDU5LDEsODY2NSwxMTQsNCwyLDEwNCwxMTQsMTc2MzQsMTc2MzgsMTA3LDU5LDEsMTA1MzQsNCwyLDU5LDExMSwxNzY0NCwxNzY0NiwxLDg2MDEsMTE5LDU5LDEsODYwMSwxMTksOTcsMTE0LDU5LDEsMTA1MzgsMTA4LDEwNSwxMDMsNSwyMjMsMSw1OSwxNzY2NCwxLDIyMyw0LDEzLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTExLDExMiwxMTQsMTE1LDExOSwxNzY5NCwxNzcwOSwxNzcxNCwxNzczNywxNzc0MiwxNzc0OSwxNzc1NCwxNzg2MCwxNzkwNSwxNzk1NywxNzk2NCwxODA5MCwxODEyMiw0LDIsMTE0LDExNywxNzcwMCwxNzcwNiwxMDMsMTAxLDExNiw1OSwxLDg5ODIsNTksMSw5NjQsMTE0LDEwNyw1OSwxLDkxNDAsNCwzLDk3LDEwMSwxMjEsMTc3MjIsMTc3MjgsMTc3MzQsMTE0LDExMSwxMTAsNTksMSwzNTcsMTAwLDEwNSwxMDgsNTksMSwzNTUsNTksMSwxMDkwLDExMSwxMTYsNTksMSw4NDExLDEwOCwxMTQsMTAxLDk5LDU5LDEsODk4MSwxMTQsNTksMyw1NTM0OSw1NjYyNSw0LDQsMTAxLDEwNSwxMDcsMTExLDE3NzY0LDE3ODA1LDE3ODM2LDE3ODUxLDQsMiwxMTQsMTE2LDE3NzcwLDE3Nzg2LDEwMSw0LDIsNTIsMTAyLDE3Nzc3LDE3NzgwLDU5LDEsODc1NiwxMTEsMTE0LDEwMSw1OSwxLDg3NTYsOTcsNCwzLDU5LDExNSwxMTgsMTc3OTUsMTc3OTcsMTc4MDIsMSw5NTIsMTIxLDEwOSw1OSwxLDk3Nyw1OSwxLDk3Nyw0LDIsOTksMTEwLDE3ODExLDE3ODMxLDEwNyw0LDIsOTcsMTE1LDE3ODE4LDE3ODI2LDExMiwxMTIsMTE0LDExMSwxMjAsNTksMSw4Nzc2LDEwNSwxMDksNTksMSw4NzY0LDExNSwxMTIsNTksMSw4MjAxLDQsMiw5NywxMTUsMTc4NDIsMTc4NDYsMTEyLDU5LDEsODc3NiwxMDUsMTA5LDU5LDEsODc2NCwxMTQsMTEwLDUsMjU0LDEsNTksMTc4NTgsMSwyNTQsNCwzLDEwOCwxMDksMTEwLDE3ODY4LDE3ODczLDE3OTAxLDEwMCwxMDEsNTksMSw3MzIsMTAxLDExNSw1LDIxNSwzLDU5LDk4LDEwMCwxNzg4NCwxNzg4NiwxNzg5OCwxLDIxNSw0LDIsNTksOTcsMTc4OTIsMTc4OTQsMSw4ODY0LDExNCw1OSwxLDEwODAxLDU5LDEsMTA4MDAsMTE2LDU5LDEsODc0OSw0LDMsMTAxLDExMiwxMTUsMTc5MTMsMTc5MTcsMTc5NTMsOTcsNTksMSwxMDUzNiw0LDQsNTksOTgsOTksMTAyLDE3OTI3LDE3OTI5LDE3OTM0LDE3OTM5LDEsODg2OCwxMTEsMTE2LDU5LDEsOTAxNCwxMDUsMTE0LDU5LDEsMTA5OTMsNCwyLDU5LDExMSwxNzk0NSwxNzk0OCwzLDU1MzQ5LDU2Njc3LDExNCwxMDcsNTksMSwxMDk3MCw5Nyw1OSwxLDEwNTM3LDExNCwxMDUsMTA5LDEwMSw1OSwxLDgyNDQsNCwzLDk3LDEwNSwxMTIsMTc5NzIsMTc5NzcsMTgwODIsMTAwLDEwMSw1OSwxLDg0ODIsNCw3LDk3LDEwMCwxMDEsMTA5LDExMiwxMTUsMTE2LDE3OTkzLDE4MDUxLDE4MDU2LDE4MDU5LDE4MDY2LDE4MDcyLDE4MDc2LDExMCwxMDMsMTA4LDEwMSw0LDUsNTksMTAwLDEwOCwxMTMsMTE0LDE4MDA5LDE4MDExLDE4MDE3LDE4MDMyLDE4MDM1LDEsOTY1MywxMTEsMTE5LDExMCw1OSwxLDk2NjMsMTAxLDEwMiwxMTYsNCwyLDU5LDEwMSwxODAyNiwxODAyOCwxLDk2NjcsMTEzLDU5LDEsODg4NCw1OSwxLDg3OTYsMTA1LDEwMywxMDQsMTE2LDQsMiw1OSwxMDEsMTgwNDUsMTgwNDcsMSw5NjU3LDExMyw1OSwxLDg4ODUsMTExLDExNiw1OSwxLDk3MDgsNTksMSw4Nzk2LDEwNSwxMTAsMTE3LDExNSw1OSwxLDEwODEwLDEwOCwxMTcsMTE1LDU5LDEsMTA4MDksOTgsNTksMSwxMDcwMSwxMDUsMTA5LDEwMSw1OSwxLDEwODExLDEwMSwxMjIsMTA1LDExNywxMDksNTksMSw5MTg2LDQsMyw5OSwxMDQsMTE2LDE4MDk4LDE4MTExLDE4MTE2LDQsMiwxMTQsMTIxLDE4MTA0LDE4MTA4LDU5LDMsNTUzNDksNTY1MjEsNTksMSwxMDk0LDk5LDEyMSw1OSwxLDExMTUsMTE0LDExMSwxMDcsNTksMSwzNTksNCwyLDEwNSwxMTEsMTgxMjgsMTgxMzMsMTIwLDExNiw1OSwxLDg4MTIsMTA0LDEwMSw5NywxMDAsNCwyLDEwOCwxMTQsMTgxNDMsMTgxNTQsMTAxLDEwMiwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwNiwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwOCw0LDE4LDY1LDcyLDk3LDk4LDk5LDEwMCwxMDIsMTAzLDEwNCwxMDgsMTA5LDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDExOSwxODIwNCwxODIwOSwxODIxNCwxODIzNCwxODI1MCwxODI2OCwxODI5MiwxODMwOCwxODMxOSwxODM0MywxODM3OSwxODM5NywxODQxMywxODUwNCwxODU0NywxODU1MywxODU4NCwxODYwMywxMTQsMTE0LDU5LDEsODY1Nyw5NywxMTQsNTksMSwxMDU5NSw0LDIsOTksMTE0LDE4MjIwLDE4MjMwLDExNywxMTYsMTAxLDUsMjUwLDEsNTksMTgyMjgsMSwyNTAsMTE0LDU5LDEsODU5MywxMTQsNCwyLDk5LDEwMSwxODI0MSwxODI0NSwxMjEsNTksMSwxMTE4LDExOCwxMDEsNTksMSwzNjUsNCwyLDEwNSwxMjEsMTgyNTYsMTgyNjUsMTE0LDk5LDUsMjUxLDEsNTksMTgyNjMsMSwyNTEsNTksMSwxMDkxLDQsMyw5Nyw5OCwxMDQsMTgyNzYsMTgyODEsMTgyODcsMTE0LDExNCw1OSwxLDg2NDUsMTA4LDk3LDk5LDU5LDEsMzY5LDk3LDExNCw1OSwxLDEwNjA2LDQsMiwxMDUsMTE0LDE4Mjk4LDE4MzA0LDExNSwxMDQsMTE2LDU5LDEsMTA2MjIsNTksMyw1NTM0OSw1NjYyNiwxMTQsOTcsMTE4LDEwMSw1LDI0OSwxLDU5LDE4MzE3LDEsMjQ5LDQsMiw5Nyw5OCwxODMyNSwxODMzOCwxMTQsNCwyLDEwOCwxMTQsMTgzMzIsMTgzMzUsNTksMSw4NjM5LDU5LDEsODYzOCwxMDgsMTA3LDU5LDEsOTYwMCw0LDIsOTksMTE2LDE4MzQ5LDE4Mzc0LDQsMiwxMTEsMTE0LDE4MzU1LDE4MzY5LDExNCwxMTAsNCwyLDU5LDEwMSwxODM2MywxODM2NSwxLDg5ODgsMTE0LDU5LDEsODk4OCwxMTEsMTEyLDU5LDEsODk3NSwxMTQsMTA1LDU5LDEsOTcyMCw0LDIsOTcsMTA4LDE4Mzg1LDE4MzkwLDk5LDExNCw1OSwxLDM2Myw1LDE2OCwxLDU5LDE4Mzk1LDEsMTY4LDQsMiwxMDMsMTEyLDE4NDAzLDE4NDA4LDExMSwxMTAsNTksMSwzNzEsMTAyLDU5LDMsNTUzNDksNTY2NzgsNCw2LDk3LDEwMCwxMDQsMTA4LDExNSwxMTcsMTg0MjcsMTg0MzQsMTg0NDUsMTg0NzAsMTg0NzUsMTg0OTQsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5MywxMTEsMTE5LDExMCw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NTk3LDk3LDExNCwxMTIsMTExLDExMSwxMTAsNCwyLDEwOCwxMTQsMTg0NTcsMTg0NjMsMTAxLDEwMiwxMTYsNTksMSw4NjM5LDEwNSwxMDMsMTA0LDExNiw1OSwxLDg2MzgsMTE3LDExNSw1OSwxLDg4NDYsMTA1LDQsMyw1OSwxMDQsMTA4LDE4NDg0LDE4NDg2LDE4NDg5LDEsOTY1LDU5LDEsOTc4LDExMSwxMTAsNTksMSw5NjUsMTEyLDk3LDExNCwxMTQsMTExLDExOSwxMTUsNTksMSw4NjQ4LDQsMyw5OSwxMDUsMTE2LDE4NTEyLDE4NTM3LDE4NTQyLDQsMiwxMTEsMTE0LDE4NTE4LDE4NTMyLDExNCwxMTAsNCwyLDU5LDEwMSwxODUyNiwxODUyOCwxLDg5ODksMTE0LDU5LDEsODk4OSwxMTEsMTEyLDU5LDEsODk3NCwxMTAsMTAzLDU5LDEsMzY3LDExNCwxMDUsNTksMSw5NzIxLDk5LDExNCw1OSwzLDU1MzQ5LDU2NTIyLDQsMywxMDAsMTA1LDExNCwxODU2MSwxODU2NiwxODU3MiwxMTEsMTE2LDU5LDEsODk0NCwxMDgsMTAwLDEwMSw1OSwxLDM2MSwxMDUsNCwyLDU5LDEwMiwxODU3OSwxODU4MSwxLDk2NTMsNTksMSw5NjUyLDQsMiw5NywxMDksMTg1OTAsMTg1OTUsMTE0LDExNCw1OSwxLDg2NDgsMTA4LDUsMjUyLDEsNTksMTg2MDEsMSwyNTIsOTcsMTEwLDEwMywxMDgsMTAxLDU5LDEsMTA2NjMsNCwxNSw2NSw2Niw2OCw5Nyw5OSwxMDAsMTAxLDEwMiwxMDgsMTEwLDExMSwxMTIsMTE0LDExNSwxMjIsMTg2NDMsMTg2NDgsMTg2NjEsMTg2NjcsMTg4NDcsMTg4NTEsMTg4NTcsMTg5MDQsMTg5MDksMTg5MTUsMTg5MzEsMTg5MzcsMTg5NDMsMTg5NDksMTg5OTYsMTE0LDExNCw1OSwxLDg2NjEsOTcsMTE0LDQsMiw1OSwxMTgsMTg2NTYsMTg2NTgsMSwxMDk4NCw1OSwxLDEwOTg1LDk3LDExNSwxMDQsNTksMSw4ODcyLDQsMiwxMTAsMTE0LDE4NjczLDE4Njc5LDEwMywxMTQsMTE2LDU5LDEsMTA2NTIsNCw3LDEwMSwxMDcsMTEwLDExMiwxMTQsMTE1LDExNiwxODY5NSwxODcwNCwxODcxMSwxODcyMCwxODc0MiwxODc1NCwxODgxMCwxMTIsMTE1LDEwNSwxMDgsMTExLDExMCw1OSwxLDEwMTMsOTcsMTEyLDExMiw5Nyw1OSwxLDEwMDgsMTExLDExNiwxMDQsMTA1LDExMCwxMDMsNTksMSw4NzA5LDQsMywxMDQsMTA1LDExNCwxODcyOCwxODczMiwxODczNSwxMDUsNTksMSw5ODEsNTksMSw5ODIsMTExLDExMiwxMTYsMTExLDU5LDEsODczMyw0LDIsNTksMTA0LDE4NzQ4LDE4NzUwLDEsODU5NywxMTEsNTksMSwxMDA5LDQsMiwxMDUsMTE3LDE4NzYwLDE4NzY2LDEwMywxMDksOTcsNTksMSw5NjIsNCwyLDk4LDExMiwxODc3MiwxODc5MSwxMTUsMTAxLDExNiwxMTAsMTAxLDExMyw0LDIsNTksMTEzLDE4Nzg0LDE4Nzg3LDMsODg0Miw2NTAyNCw1OSwzLDEwOTU1LDY1MDI0LDExNSwxMDEsMTE2LDExMCwxMDEsMTEzLDQsMiw1OSwxMTMsMTg4MDMsMTg4MDYsMyw4ODQzLDY1MDI0LDU5LDMsMTA5NTYsNjUwMjQsNCwyLDEwNCwxMTQsMTg4MTYsMTg4MjIsMTAxLDExNiw5Nyw1OSwxLDk3NywxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMiwxMDgsMTE0LDE4ODM0LDE4ODQwLDEwMSwxMDIsMTE2LDU5LDEsODg4MiwxMDUsMTAzLDEwNCwxMTYsNTksMSw4ODgzLDEyMSw1OSwxLDEwNzQsOTcsMTE1LDEwNCw1OSwxLDg4NjYsNCwzLDEwMSwxMDgsMTE0LDE4ODY1LDE4ODg0LDE4ODkwLDQsMyw1OSw5OCwxMDEsMTg4NzMsMTg4NzUsMTg4ODAsMSw4NzQ0LDk3LDExNCw1OSwxLDg4OTEsMTEzLDU5LDEsODc5NCwxMDgsMTA1LDExMiw1OSwxLDg5NDIsNCwyLDk4LDExNiwxODg5NiwxODkwMSw5NywxMTQsNTksMSwxMjQsNTksMSwxMjQsMTE0LDU5LDMsNTUzNDksNTY2MjcsMTE2LDExNCwxMDUsNTksMSw4ODgyLDExNSwxMTcsNCwyLDk4LDExMiwxODkyMywxODkyNyw1OSwzLDg4MzQsODQwMiw1OSwzLDg4MzUsODQwMiwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NzksMTE0LDExMSwxMTIsNTksMSw4NzMzLDExNiwxMTQsMTA1LDU5LDEsODg4Myw0LDIsOTksMTE3LDE4OTU1LDE4OTYwLDExNCw1OSwzLDU1MzQ5LDU2NTIzLDQsMiw5OCwxMTIsMTg5NjYsMTg5ODEsMTEwLDQsMiw2OSwxMDEsMTg5NzMsMTg5NzcsNTksMywxMDk1NSw2NTAyNCw1OSwzLDg4NDIsNjUwMjQsMTEwLDQsMiw2OSwxMDEsMTg5ODgsMTg5OTIsNTksMywxMDk1Niw2NTAyNCw1OSwzLDg4NDMsNjUwMjQsMTA1LDEwMywxMjIsOTcsMTAzLDU5LDEsMTA2NTAsNCw3LDk5LDEwMSwxMDIsMTExLDExMiwxMTQsMTE1LDE5MDIwLDE5MDI2LDE5MDYxLDE5MDY2LDE5MDcyLDE5MDc1LDE5MDg5LDEwNSwxMTQsOTksNTksMSwzNzMsNCwyLDEwMCwxMDUsMTkwMzIsMTkwNTUsNCwyLDk4LDEwMywxOTAzOCwxOTA0Myw5NywxMTQsNTksMSwxMDg0NywxMDEsNCwyLDU5LDExMywxOTA1MCwxOTA1MiwxLDg3NDMsNTksMSw4NzkzLDEwMSwxMTQsMTEyLDU5LDEsODQ3MiwxMTQsNTksMyw1NTM0OSw1NjYyOCwxMTIsMTAyLDU5LDMsNTUzNDksNTY2ODAsNTksMSw4NDcyLDQsMiw1OSwxMDEsMTkwODEsMTkwODMsMSw4NzY4LDk3LDExNiwxMDQsNTksMSw4NzY4LDk5LDExNCw1OSwzLDU1MzQ5LDU2NTI0LDQsMTQsOTksMTAwLDEwMiwxMDQsMTA1LDEwOCwxMDksMTEwLDExMSwxMTQsMTE1LDExNywxMTgsMTE5LDE5MTI1LDE5MTQ2LDE5MTUyLDE5MTU3LDE5MTczLDE5MTc2LDE5MTkyLDE5MTk3LDE5MjAyLDE5MjM2LDE5MjUyLDE5MjY5LDE5Mjg2LDE5MjkxLDQsMyw5NywxMDUsMTE3LDE5MTMzLDE5MTM3LDE5MTQyLDExMiw1OSwxLDg4OTgsMTE0LDk5LDU5LDEsOTcxMSwxMTIsNTksMSw4ODk5LDExNiwxMTQsMTA1LDU5LDEsOTY2MSwxMTQsNTksMyw1NTM0OSw1NjYyOSw0LDIsNjUsOTcsMTkxNjMsMTkxNjgsMTE0LDExNCw1OSwxLDEwMjM0LDExNCwxMTQsNTksMSwxMDIzMSw1OSwxLDk1OCw0LDIsNjUsOTcsMTkxODIsMTkxODcsMTE0LDExNCw1OSwxLDEwMjMyLDExNCwxMTQsNTksMSwxMDIyOSw5NywxMTIsNTksMSwxMDIzNiwxMDUsMTE1LDU5LDEsODk1NSw0LDMsMTAwLDExMiwxMTYsMTkyMTAsMTkyMTUsMTkyMzAsMTExLDExNiw1OSwxLDEwNzUyLDQsMiwxMDIsMTA4LDE5MjIxLDE5MjI1LDU5LDMsNTUzNDksNTY2ODEsMTE3LDExNSw1OSwxLDEwNzUzLDEwNSwxMDksMTAxLDU5LDEsMTA3NTQsNCwyLDY1LDk3LDE5MjQyLDE5MjQ3LDExNCwxMTQsNTksMSwxMDIzMywxMTQsMTE0LDU5LDEsMTAyMzAsNCwyLDk5LDExMywxOTI1OCwxOTI2MywxMTQsNTksMyw1NTM0OSw1NjUyNSw5OSwxMTcsMTEyLDU5LDEsMTA3NTgsNCwyLDExMiwxMTYsMTkyNzUsMTkyODEsMTA4LDExNywxMTUsNTksMSwxMDc1NiwxMTQsMTA1LDU5LDEsOTY1MSwxMDEsMTAxLDU5LDEsODg5NywxMDEsMTAwLDEwMywxMDEsNTksMSw4ODk2LDQsOCw5Nyw5OSwxMDEsMTAyLDEwNSwxMTEsMTE1LDExNywxOTMxNiwxOTMzNSwxOTM0OSwxOTM1NywxOTM2MiwxOTM2NywxOTM3MywxOTM3OSw5OSw0LDIsMTE3LDEyMSwxOTMyMywxOTMzMiwxMTYsMTAxLDUsMjUzLDEsNTksMTkzMzAsMSwyNTMsNTksMSwxMTAzLDQsMiwxMDUsMTIxLDE5MzQxLDE5MzQ2LDExNCw5OSw1OSwxLDM3NSw1OSwxLDEwOTksMTEwLDUsMTY1LDEsNTksMTkzNTUsMSwxNjUsMTE0LDU5LDMsNTUzNDksNTY2MzAsOTksMTIxLDU5LDEsMTExMSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2ODIsOTksMTE0LDU5LDMsNTUzNDksNTY1MjYsNCwyLDk5LDEwOSwxOTM4NSwxOTM4OSwxMjEsNTksMSwxMTAyLDEwOCw1LDI1NSwxLDU5LDE5Mzk1LDEsMjU1LDQsMTAsOTcsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMTEsMTE1LDExOSwxOTQxOSwxOTQyNiwxOTQ0MSwxOTQ0NiwxOTQ2MiwxOTQ2NywxOTQ3MiwxOTQ4MCwxOTQ4NiwxOTQ5Miw5OSwxMTcsMTE2LDEwMSw1OSwxLDM3OCw0LDIsOTcsMTIxLDE5NDMyLDE5NDM4LDExNCwxMTEsMTEwLDU5LDEsMzgyLDU5LDEsMTA3OSwxMTEsMTE2LDU5LDEsMzgwLDQsMiwxMDEsMTE2LDE5NDUyLDE5NDU4LDExNiwxMTQsMTAyLDU5LDEsODQ4OCw5Nyw1OSwxLDk1MCwxMTQsNTksMyw1NTM0OSw1NjYzMSw5OSwxMjEsNTksMSwxMDc4LDEwMywxMTQsOTcsMTE0LDExNCw1OSwxLDg2NjksMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjgzLDk5LDExNCw1OSwzLDU1MzQ5LDU2NTI3LDQsMiwxMDYsMTEwLDE5NDk4LDE5NTAxLDU5LDEsODIwNSwxMDYsNTksMSw4MjA0XSk7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgUHJlcHJvY2Vzc29yID0gcmVxdWlyZSgnLi9wcmVwcm9jZXNzb3InKSxcbiAgICBVTklDT0RFID0gcmVxdWlyZSgnLi4vY29tbW9uL3VuaWNvZGUnKSxcbiAgICBuZVRyZWUgPSByZXF1aXJlKCcuL25hbWVkX2VudGl0eV9kYXRhJyk7XG5cbi8vQWxpYXNlc1xudmFyICQgPSBVTklDT0RFLkNPREVfUE9JTlRTLFxuICAgICQkID0gVU5JQ09ERS5DT0RFX1BPSU5UX1NFUVVFTkNFUztcblxuLy9SZXBsYWNlbWVudCBjb2RlIHBvaW50cyBmb3IgbnVtZXJpYyBlbnRpdGllc1xudmFyIE5VTUVSSUNfRU5USVRZX1JFUExBQ0VNRU5UUyA9IHtcbiAgICAweDAwOiAweEZGRkQsIDB4MEQ6IDB4MDAwRCwgMHg4MDogMHgyMEFDLCAweDgxOiAweDAwODEsIDB4ODI6IDB4MjAxQSwgMHg4MzogMHgwMTkyLCAweDg0OiAweDIwMUUsXG4gICAgMHg4NTogMHgyMDI2LCAweDg2OiAweDIwMjAsIDB4ODc6IDB4MjAyMSwgMHg4ODogMHgwMkM2LCAweDg5OiAweDIwMzAsIDB4OEE6IDB4MDE2MCwgMHg4QjogMHgyMDM5LFxuICAgIDB4OEM6IDB4MDE1MiwgMHg4RDogMHgwMDhELCAweDhFOiAweDAxN0QsIDB4OEY6IDB4MDA4RiwgMHg5MDogMHgwMDkwLCAweDkxOiAweDIwMTgsIDB4OTI6IDB4MjAxOSxcbiAgICAweDkzOiAweDIwMUMsIDB4OTQ6IDB4MjAxRCwgMHg5NTogMHgyMDIyLCAweDk2OiAweDIwMTMsIDB4OTc6IDB4MjAxNCwgMHg5ODogMHgwMkRDLCAweDk5OiAweDIxMjIsXG4gICAgMHg5QTogMHgwMTYxLCAweDlCOiAweDIwM0EsIDB4OUM6IDB4MDE1MywgMHg5RDogMHgwMDlELCAweDlFOiAweDAxN0UsIDB4OUY6IDB4MDE3OFxufTtcblxuLy8gTmFtZWQgZW50aXR5IHRyZWUgZmxhZ3NcbnZhciBIQVNfREFUQV9GTEFHID0gMSA8PCAwO1xudmFyIERBVEFfRFVQTEVUX0ZMQUcgPSAxIDw8IDE7XG52YXIgSEFTX0JSQU5DSEVTX0ZMQUcgPSAxIDw8IDI7XG52YXIgTUFYX0JSQU5DSF9NQVJLRVJfVkFMVUUgPSBIQVNfREFUQV9GTEFHIHwgREFUQV9EVVBMRVRfRkxBRyB8IEhBU19CUkFOQ0hFU19GTEFHO1xuXG5cbi8vU3RhdGVzXG52YXIgREFUQV9TVEFURSA9ICdEQVRBX1NUQVRFJyxcbiAgICBDSEFSQUNURVJfUkVGRVJFTkNFX0lOX0RBVEFfU1RBVEUgPSAnQ0hBUkFDVEVSX1JFRkVSRU5DRV9JTl9EQVRBX1NUQVRFJyxcbiAgICBSQ0RBVEFfU1RBVEUgPSAnUkNEQVRBX1NUQVRFJyxcbiAgICBDSEFSQUNURVJfUkVGRVJFTkNFX0lOX1JDREFUQV9TVEFURSA9ICdDSEFSQUNURVJfUkVGRVJFTkNFX0lOX1JDREFUQV9TVEFURScsXG4gICAgUkFXVEVYVF9TVEFURSA9ICdSQVdURVhUX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9TVEFURSA9ICdTQ1JJUFRfREFUQV9TVEFURScsXG4gICAgUExBSU5URVhUX1NUQVRFID0gJ1BMQUlOVEVYVF9TVEFURScsXG4gICAgVEFHX09QRU5fU1RBVEUgPSAnVEFHX09QRU5fU1RBVEUnLFxuICAgIEVORF9UQUdfT1BFTl9TVEFURSA9ICdFTkRfVEFHX09QRU5fU1RBVEUnLFxuICAgIFRBR19OQU1FX1NUQVRFID0gJ1RBR19OQU1FX1NUQVRFJyxcbiAgICBSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUgPSAnUkNEQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFJyxcbiAgICBSQ0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFID0gJ1JDREFUQV9FTkRfVEFHX09QRU5fU1RBVEUnLFxuICAgIFJDREFUQV9FTkRfVEFHX05BTUVfU1RBVEUgPSAnUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURScsXG4gICAgUkFXVEVYVF9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdSQVdURVhUX0xFU1NfVEhBTl9TSUdOX1NUQVRFJyxcbiAgICBSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURSA9ICdSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURScsXG4gICAgUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUgPSAnUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUnLFxuICAgIFNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ1NDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FTkRfVEFHX09QRU5fU1RBVEUgPSAnU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEUnLFxuICAgIFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUnLFxuICAgIFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEUnLFxuICAgIFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EX1NUQVRFJyxcbiAgICBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUgPSAnQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFJyxcbiAgICBBVFRSSUJVVEVfTkFNRV9TVEFURSA9ICdBVFRSSUJVVEVfTkFNRV9TVEFURScsXG4gICAgQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUgPSAnQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUnLFxuICAgIEJFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEUgPSAnQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURScsXG4gICAgQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURfU1RBVEUgPSAnQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURfU1RBVEUnLFxuICAgIEFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFID0gJ0FUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFJyxcbiAgICBBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUgPSAnQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFJyxcbiAgICBDSEFSQUNURVJfUkVGRVJFTkNFX0lOX0FUVFJJQlVURV9WQUxVRV9TVEFURSA9ICdDSEFSQUNURVJfUkVGRVJFTkNFX0lOX0FUVFJJQlVURV9WQUxVRV9TVEFURScsXG4gICAgQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRF9TVEFURSA9ICdBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFJyxcbiAgICBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFID0gJ1NFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEUnLFxuICAgIEJPR1VTX0NPTU1FTlRfU1RBVEUgPSAnQk9HVVNfQ09NTUVOVF9TVEFURScsXG4gICAgQk9HVVNfQ09NTUVOVF9TVEFURV9DT05USU5VQVRJT04gPSAnQk9HVVNfQ09NTUVOVF9TVEFURV9DT05USU5VQVRJT04nLFxuICAgIE1BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFID0gJ01BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFJyxcbiAgICBDT01NRU5UX1NUQVJUX1NUQVRFID0gJ0NPTU1FTlRfU1RBUlRfU1RBVEUnLFxuICAgIENPTU1FTlRfU1RBUlRfREFTSF9TVEFURSA9ICdDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEUnLFxuICAgIENPTU1FTlRfU1RBVEUgPSAnQ09NTUVOVF9TVEFURScsXG4gICAgQ09NTUVOVF9FTkRfREFTSF9TVEFURSA9ICdDT01NRU5UX0VORF9EQVNIX1NUQVRFJyxcbiAgICBDT01NRU5UX0VORF9TVEFURSA9ICdDT01NRU5UX0VORF9TVEFURScsXG4gICAgQ09NTUVOVF9FTkRfQkFOR19TVEFURSA9ICdDT01NRU5UX0VORF9CQU5HX1NUQVRFJyxcbiAgICBET0NUWVBFX1NUQVRFID0gJ0RPQ1RZUEVfU1RBVEUnLFxuICAgIERPQ1RZUEVfTkFNRV9TVEFURSA9ICdET0NUWVBFX05BTUVfU1RBVEUnLFxuICAgIEFGVEVSX0RPQ1RZUEVfTkFNRV9TVEFURSA9ICdBRlRFUl9ET0NUWVBFX05BTUVfU1RBVEUnLFxuICAgIEJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFID0gJ0JFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFJyxcbiAgICBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFJyxcbiAgICBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFJyxcbiAgICBCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEUgPSAnQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTX1NUQVRFJyxcbiAgICBCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSA9ICdCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURScsXG4gICAgRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFID0gJ0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURScsXG4gICAgRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFID0gJ0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURScsXG4gICAgQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSA9ICdBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFJyxcbiAgICBCT0dVU19ET0NUWVBFX1NUQVRFID0gJ0JPR1VTX0RPQ1RZUEVfU1RBVEUnLFxuICAgIENEQVRBX1NFQ1RJT05fU1RBVEUgPSAnQ0RBVEFfU0VDVElPTl9TVEFURSc7XG5cbi8vVXRpbHNcblxuLy9PUFRJTUlaQVRJT046IHRoZXNlIHV0aWxpdHkgZnVuY3Rpb25zIHNob3VsZCBub3QgYmUgbW92ZWQgb3V0IG9mIHRoaXMgbW9kdWxlLiBWOCBDcmFua3NoYWZ0IHdpbGwgbm90IGlubGluZVxuLy90aGlzIGZ1bmN0aW9ucyBpZiB0aGV5IHdpbGwgYmUgc2l0dWF0ZWQgaW4gYW5vdGhlciBtb2R1bGUgZHVlIHRvIGNvbnRleHQgc3dpdGNoLlxuLy9BbHdheXMgcGVyZm9ybSBpbmxpbmluZyBjaGVjayBiZWZvcmUgbW9kaWZ5aW5nIHRoaXMgZnVuY3Rpb25zICgnbm9kZSAtLXRyYWNlLWlubGluaW5nJykuXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UoY3ApIHtcbiAgICByZXR1cm4gY3AgPT09ICQuU1BBQ0UgfHwgY3AgPT09ICQuTElORV9GRUVEIHx8IGNwID09PSAkLlRBQlVMQVRJT04gfHwgY3AgPT09ICQuRk9STV9GRUVEO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpRGlnaXQoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5ESUdJVF8wICYmIGNwIDw9ICQuRElHSVRfOTtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaVVwcGVyKGNwKSB7XG4gICAgcmV0dXJuIGNwID49ICQuTEFUSU5fQ0FQSVRBTF9BICYmIGNwIDw9ICQuTEFUSU5fQ0FQSVRBTF9aO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpTG93ZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9TTUFMTF9BICYmIGNwIDw9ICQuTEFUSU5fU01BTExfWjtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUxldHRlcihjcCkge1xuICAgIHJldHVybiBpc0FzY2lpTG93ZXIoY3ApIHx8IGlzQXNjaWlVcHBlcihjcCk7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlBbHBoYU51bWVyaWMoY3ApIHtcbiAgICByZXR1cm4gaXNBc2NpaUxldHRlcihjcCkgfHwgaXNBc2NpaURpZ2l0KGNwKTtcbn1cblxuZnVuY3Rpb24gaXNEaWdpdChjcCwgaXNIZXgpIHtcbiAgICByZXR1cm4gaXNBc2NpaURpZ2l0KGNwKSB8fCBpc0hleCAmJiAoY3AgPj0gJC5MQVRJTl9DQVBJVEFMX0EgJiYgY3AgPD0gJC5MQVRJTl9DQVBJVEFMX0YgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3AgPj0gJC5MQVRJTl9TTUFMTF9BICYmIGNwIDw9ICQuTEFUSU5fU01BTExfRik7XG59XG5cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWRDb2RlUG9pbnQoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gMHhEODAwICYmIGNwIDw9IDB4REZGRiB8fCBjcCA+IDB4MTBGRkZGO1xufVxuXG5mdW5jdGlvbiB0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApIHtcbiAgICByZXR1cm4gY3AgKyAweDAwMjA7XG59XG5cbi8vTk9URTogU3RyaW5nLmZyb21DaGFyQ29kZSgpIGZ1bmN0aW9uIGNhbiBoYW5kbGUgb25seSBjaGFyYWN0ZXJzIGZyb20gQk1QIHN1YnNldC5cbi8vU28sIHdlIG5lZWQgdG8gd29ya2Fyb3VuZCB0aGlzIG1hbnVhbGx5LlxuLy8oc2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9mcm9tQ2hhckNvZGUjR2V0dGluZ19pdF90b193b3JrX3dpdGhfaGlnaGVyX3ZhbHVlcylcbmZ1bmN0aW9uIHRvQ2hhcihjcCkge1xuICAgIGlmIChjcCA8PSAweEZGRkYpXG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNwKTtcblxuICAgIGNwIC09IDB4MTAwMDA7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY3AgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApICsgU3RyaW5nLmZyb21DaGFyQ29kZSgweERDMDAgfCBjcCAmIDB4M0ZGKTtcbn1cblxuZnVuY3Rpb24gdG9Bc2NpaUxvd2VyQ2hhcihjcCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHRvQXNjaWlMb3dlckNvZGVQb2ludChjcCkpO1xufVxuXG5mdW5jdGlvbiBmaW5kTmFtZWRFbnRpdHlUcmVlQnJhbmNoKG5vZGVJeCwgY3ApIHtcbiAgICB2YXIgYnJhbmNoQ291bnQgPSBuZVRyZWVbKytub2RlSXhdLFxuICAgICAgICBsbyA9ICsrbm9kZUl4LFxuICAgICAgICBoaSA9IGxvICsgYnJhbmNoQ291bnQgLSAxO1xuXG4gICAgd2hpbGUgKGxvIDw9IGhpKSB7XG4gICAgICAgIHZhciBtaWQgPSBsbyArIGhpID4+PiAxLFxuICAgICAgICAgICAgbWlkQ3AgPSBuZVRyZWVbbWlkXTtcblxuICAgICAgICBpZiAobWlkQ3AgPCBjcClcbiAgICAgICAgICAgIGxvID0gbWlkICsgMTtcblxuICAgICAgICBlbHNlIGlmIChtaWRDcCA+IGNwKVxuICAgICAgICAgICAgaGkgPSBtaWQgLSAxO1xuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBuZVRyZWVbbWlkICsgYnJhbmNoQ291bnRdO1xuICAgIH1cblxuICAgIHJldHVybiAtMTtcbn1cblxuXG4vL1Rva2VuaXplclxudmFyIFRva2VuaXplciA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucHJlcHJvY2Vzc29yID0gbmV3IFByZXByb2Nlc3NvcigpO1xuXG4gICAgdGhpcy50b2tlblF1ZXVlID0gW107XG5cbiAgICB0aGlzLmFsbG93Q0RBVEEgPSBmYWxzZTtcblxuICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgIHRoaXMucmV0dXJuU3RhdGUgPSAnJztcblxuICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICB0aGlzLmFkZGl0aW9uYWxBbGxvd2VkQ3AgPSB2b2lkIDA7XG4gICAgdGhpcy5sYXN0U3RhcnRUYWdOYW1lID0gJyc7XG5cbiAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCA9IC0xO1xuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG5cbiAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuICAgIHRoaXMuY3VycmVudEF0dHIgPSBudWxsO1xufTtcblxuLy9Ub2tlbiB0eXBlc1xuVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTiA9ICdDSEFSQUNURVJfVE9LRU4nO1xuVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOID0gJ05VTExfQ0hBUkFDVEVSX1RPS0VOJztcblRva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTiA9ICdXSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTic7XG5Ub2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOID0gJ1NUQVJUX1RBR19UT0tFTic7XG5Ub2tlbml6ZXIuRU5EX1RBR19UT0tFTiA9ICdFTkRfVEFHX1RPS0VOJztcblRva2VuaXplci5DT01NRU5UX1RPS0VOID0gJ0NPTU1FTlRfVE9LRU4nO1xuVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU4gPSAnRE9DVFlQRV9UT0tFTic7XG5Ub2tlbml6ZXIuRU9GX1RPS0VOID0gJ0VPRl9UT0tFTic7XG5Ub2tlbml6ZXIuSElCRVJOQVRJT05fVE9LRU4gPSAnSElCRVJOQVRJT05fVE9LRU4nO1xuXG4vL1Rva2VuaXplciBpbml0aWFsIHN0YXRlcyBmb3IgZGlmZmVyZW50IG1vZGVzXG5Ub2tlbml6ZXIuTU9ERSA9IHtcbiAgICBEQVRBOiBEQVRBX1NUQVRFLFxuICAgIFJDREFUQTogUkNEQVRBX1NUQVRFLFxuICAgIFJBV1RFWFQ6IFJBV1RFWFRfU1RBVEUsXG4gICAgU0NSSVBUX0RBVEE6IFNDUklQVF9EQVRBX1NUQVRFLFxuICAgIFBMQUlOVEVYVDogUExBSU5URVhUX1NUQVRFXG59O1xuXG4vL1N0YXRpY1xuVG9rZW5pemVyLmdldFRva2VuQXR0ciA9IGZ1bmN0aW9uICh0b2tlbiwgYXR0ck5hbWUpIHtcbiAgICBmb3IgKHZhciBpID0gdG9rZW4uYXR0cnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYgKHRva2VuLmF0dHJzW2ldLm5hbWUgPT09IGF0dHJOYW1lKVxuICAgICAgICAgICAgcmV0dXJuIHRva2VuLmF0dHJzW2ldLnZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xufTtcblxuLy9BUElcblRva2VuaXplci5wcm90b3R5cGUuZ2V0TmV4dFRva2VuID0gZnVuY3Rpb24gKCkge1xuICAgIHdoaWxlICghdGhpcy50b2tlblF1ZXVlLmxlbmd0aCAmJiB0aGlzLmFjdGl2ZSkge1xuICAgICAgICB0aGlzLl9oaWJlcm5hdGlvblNuYXBzaG90KCk7XG5cbiAgICAgICAgdmFyIGNwID0gdGhpcy5fY29uc3VtZSgpO1xuXG4gICAgICAgIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSlcbiAgICAgICAgICAgIHRoaXNbdGhpcy5zdGF0ZV0oY3ApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRva2VuUXVldWUuc2hpZnQoKTtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGlzTGFzdENodW5rKSB7XG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMucHJlcHJvY2Vzc29yLndyaXRlKGNodW5rLCBpc0xhc3RDaHVuayk7XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLmluc2VydEh0bWxBdEN1cnJlbnRQb3MgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5wcmVwcm9jZXNzb3IuaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyhjaHVuayk7XG59O1xuXG4vL0hpYmVybmF0aW9uXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9oaWJlcm5hdGlvblNuYXBzaG90ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90ID0gMDtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuX2Vuc3VyZUhpYmVybmF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLnByZXByb2Nlc3Nvci5lbmRPZkNodW5rSGl0KSB7XG4gICAgICAgIGZvciAoOyB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCA+IDA7IHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90LS0pXG4gICAgICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5yZXRyZWF0KCk7XG5cbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2tlblF1ZXVlLnB1c2goe3R5cGU6IFRva2VuaXplci5ISUJFUk5BVElPTl9UT0tFTn0pO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cblxuLy9Db25zdW1wdGlvblxuVG9rZW5pemVyLnByb3RvdHlwZS5fY29uc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCsrO1xuICAgIHJldHVybiB0aGlzLnByZXByb2Nlc3Nvci5hZHZhbmNlKCk7XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl91bmNvbnN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QtLTtcbiAgICB0aGlzLnByZXByb2Nlc3Nvci5yZXRyZWF0KCk7XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl91bmNvbnN1bWVTZXZlcmFsID0gZnVuY3Rpb24gKGNvdW50KSB7XG4gICAgd2hpbGUgKGNvdW50LS0pXG4gICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fcmVjb25zdW1lSW5TdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLl91bmNvbnN1bWUoKTtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuX2NvbnN1bWVTdWJzZXF1ZW50SWZNYXRjaCA9IGZ1bmN0aW9uIChwYXR0ZXJuLCBzdGFydENwLCBjYXNlU2Vuc2l0aXZlKSB7XG4gICAgdmFyIGNvbnN1bWVkQ291bnQgPSAwLFxuICAgICAgICBpc01hdGNoID0gdHJ1ZSxcbiAgICAgICAgcGF0dGVybkxlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoLFxuICAgICAgICBwYXR0ZXJuUG9zID0gMCxcbiAgICAgICAgY3AgPSBzdGFydENwLFxuICAgICAgICBwYXR0ZXJuQ3AgPSB2b2lkIDA7XG5cbiAgICBmb3IgKDsgcGF0dGVyblBvcyA8IHBhdHRlcm5MZW5ndGg7IHBhdHRlcm5Qb3MrKykge1xuICAgICAgICBpZiAocGF0dGVyblBvcyA+IDApIHtcbiAgICAgICAgICAgIGNwID0gdGhpcy5fY29uc3VtZSgpO1xuICAgICAgICAgICAgY29uc3VtZWRDb3VudCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBwYXR0ZXJuQ3AgPSBwYXR0ZXJuW3BhdHRlcm5Qb3NdO1xuXG4gICAgICAgIGlmIChjcCAhPT0gcGF0dGVybkNwICYmIChjYXNlU2Vuc2l0aXZlIHx8IGNwICE9PSB0b0FzY2lpTG93ZXJDb2RlUG9pbnQocGF0dGVybkNwKSkpIHtcbiAgICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpc01hdGNoKVxuICAgICAgICB0aGlzLl91bmNvbnN1bWVTZXZlcmFsKGNvbnN1bWVkQ291bnQpO1xuXG4gICAgcmV0dXJuIGlzTWF0Y2g7XG59O1xuXG4vL0xvb2thaGVhZFxuVG9rZW5pemVyLnByb3RvdHlwZS5fbG9va2FoZWFkID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjcCA9IHRoaXMuX2NvbnN1bWUoKTtcblxuICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuXG4gICAgcmV0dXJuIGNwO1xufTtcblxuLy9UZW1wIGJ1ZmZlclxuVG9rZW5pemVyLnByb3RvdHlwZS5pc1RlbXBCdWZmZXJFcXVhbFRvU2NyaXB0U3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLnRlbXBCdWZmLmxlbmd0aCAhPT0gJCQuU0NSSVBUX1NUUklORy5sZW5ndGgpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50ZW1wQnVmZi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy50ZW1wQnVmZltpXSAhPT0gJCQuU0NSSVBUX1NUUklOR1tpXSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vVG9rZW4gY3JlYXRpb25cblRva2VuaXplci5wcm90b3R5cGUuX2NyZWF0ZVN0YXJ0VGFnVG9rZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgIHR5cGU6IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4sXG4gICAgICAgIHRhZ05hbWU6ICcnLFxuICAgICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICAgIGF0dHJzOiBbXVxuICAgIH07XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9jcmVhdGVFbmRUYWdUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgdHlwZTogVG9rZW5pemVyLkVORF9UQUdfVE9LRU4sXG4gICAgICAgIHRhZ05hbWU6ICcnLFxuICAgICAgICBhdHRyczogW11cbiAgICB9O1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fY3JlYXRlQ29tbWVudFRva2VuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY3VycmVudFRva2VuID0ge1xuICAgICAgICB0eXBlOiBUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTixcbiAgICAgICAgZGF0YTogJydcbiAgICB9O1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fY3JlYXRlRG9jdHlwZVRva2VuID0gZnVuY3Rpb24gKGluaXRpYWxOYW1lKSB7XG4gICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgIHR5cGU6IFRva2VuaXplci5ET0NUWVBFX1RPS0VOLFxuICAgICAgICBuYW1lOiBpbml0aWFsTmFtZSxcbiAgICAgICAgZm9yY2VRdWlya3M6IGZhbHNlLFxuICAgICAgICBwdWJsaWNJZDogbnVsbCxcbiAgICAgICAgc3lzdGVtSWQ6IG51bGxcbiAgICB9O1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fY3JlYXRlQ2hhcmFjdGVyVG9rZW4gPSBmdW5jdGlvbiAodHlwZSwgY2gpIHtcbiAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IHtcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY2hhcnM6IGNoXG4gICAgfTtcbn07XG5cbi8vVGFnIGF0dHJpYnV0ZXNcblRva2VuaXplci5wcm90b3R5cGUuX2NyZWF0ZUF0dHIgPSBmdW5jdGlvbiAoYXR0ck5hbWVGaXJzdENoKSB7XG4gICAgdGhpcy5jdXJyZW50QXR0ciA9IHtcbiAgICAgICAgbmFtZTogYXR0ck5hbWVGaXJzdENoLFxuICAgICAgICB2YWx1ZTogJydcbiAgICB9O1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5faXNEdXBsaWNhdGVBdHRyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUb2tlbml6ZXIuZ2V0VG9rZW5BdHRyKHRoaXMuY3VycmVudFRva2VuLCB0aGlzLmN1cnJlbnRBdHRyLm5hbWUpICE9PSBudWxsO1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fbGVhdmVBdHRyTmFtZSA9IGZ1bmN0aW9uICh0b1N0YXRlKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHRvU3RhdGU7XG5cbiAgICBpZiAoIXRoaXMuX2lzRHVwbGljYXRlQXR0cigpKVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5hdHRycy5wdXNoKHRoaXMuY3VycmVudEF0dHIpO1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fbGVhdmVBdHRyVmFsdWUgPSBmdW5jdGlvbiAodG9TdGF0ZSkge1xuICAgIHRoaXMuc3RhdGUgPSB0b1N0YXRlO1xufTtcblxuLy9BcHByb3ByaWF0ZSBlbmQgdGFnIHRva2VuXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI2FwcHJvcHJpYXRlLWVuZC10YWctdG9rZW4pXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9pc0FwcHJvcHJpYXRlRW5kVGFnVG9rZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFzdFN0YXJ0VGFnTmFtZSA9PT0gdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZTtcbn07XG5cbi8vVG9rZW4gZW1pc3Npb25cblRva2VuaXplci5wcm90b3R5cGUuX2VtaXRDdXJyZW50VG9rZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbigpO1xuXG4gICAgLy9OT1RFOiBzdG9yZSBlbWl0ZWQgc3RhcnQgdGFnJ3MgdGFnTmFtZSB0byBkZXRlcm1pbmUgaXMgdGhlIGZvbGxvd2luZyBlbmQgdGFnIHRva2VuIGlzIGFwcHJvcHJpYXRlLlxuICAgIGlmICh0aGlzLmN1cnJlbnRUb2tlbi50eXBlID09PSBUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOKVxuICAgICAgICB0aGlzLmxhc3RTdGFydFRhZ05hbWUgPSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lO1xuXG4gICAgdGhpcy50b2tlblF1ZXVlLnB1c2godGhpcy5jdXJyZW50VG9rZW4pO1xuICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKSB7XG4gICAgICAgIHRoaXMudG9rZW5RdWV1ZS5wdXNoKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSBudWxsO1xuICAgIH1cbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuX2VtaXRFT0ZUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCk7XG4gICAgdGhpcy50b2tlblF1ZXVlLnB1c2goe3R5cGU6IFRva2VuaXplci5FT0ZfVE9LRU59KTtcbn07XG5cbi8vQ2hhcmFjdGVycyBlbWlzc2lvblxuXG4vL09QVElNSVpBVElPTjogc3BlY2lmaWNhdGlvbiB1c2VzIG9ubHkgb25lIHR5cGUgb2YgY2hhcmFjdGVyIHRva2VucyAob25lIHRva2VuIHBlciBjaGFyYWN0ZXIpLlxuLy9UaGlzIGNhdXNlcyBhIGh1Z2UgbWVtb3J5IG92ZXJoZWFkIGFuZCBhIGxvdCBvZiB1bm5lY2Vzc2FyeSBwYXJzZXIgbG9vcHMuIHBhcnNlNSB1c2VzIDMgZ3JvdXBzIG9mIGNoYXJhY3RlcnMuXG4vL0lmIHdlIGhhdmUgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIGdyb3VwLCBwYXJzZXIgY2FuIHByb2Nlc3MgaXRcbi8vYXMgYSBzaW5nbGUgc29saWQgY2hhcmFjdGVyIHRva2VuLlxuLy9TbywgdGhlcmUgYXJlIDMgdHlwZXMgb2YgY2hhcmFjdGVyIHRva2VucyBpbiBwYXJzZTU6XG4vLzEpTlVMTF9DSEFSQUNURVJfVE9LRU4gLSBcXHUwMDAwLWNoYXJhY3RlciBzZXF1ZW5jZXMgKGUuZy4gJ1xcdTAwMDBcXHUwMDAwXFx1MDAwMCcpXG4vLzIpV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gLSBhbnkgd2hpdGVzcGFjZS9uZXctbGluZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIChlLmcuICdcXG4gIFxcclxcdCAgIFxcZicpXG4vLzMpQ0hBUkFDVEVSX1RPS0VOIC0gYW55IGNoYXJhY3RlciBzZXF1ZW5jZSB3aGljaCBkb24ndCBiZWxvbmcgdG8gZ3JvdXBzIDEgYW5kIDIgKGUuZy4gJ2FiY2RlZjEyMzRAQCMkJV4nKVxuVG9rZW5pemVyLnByb3RvdHlwZS5fYXBwZW5kQ2hhclRvQ3VycmVudENoYXJhY3RlclRva2VuID0gZnVuY3Rpb24gKHR5cGUsIGNoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuICYmIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLnR5cGUgIT09IHR5cGUpXG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4oKTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbilcbiAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4uY2hhcnMgKz0gY2g7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNoYXJhY3RlclRva2VuKHR5cGUsIGNoKTtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuX2VtaXRDb2RlUG9pbnQgPSBmdW5jdGlvbiAoY3ApIHtcbiAgICB2YXIgdHlwZSA9IFRva2VuaXplci5DSEFSQUNURVJfVE9LRU47XG5cbiAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSlcbiAgICAgICAgdHlwZSA9IFRva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTjtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpXG4gICAgICAgIHR5cGUgPSBUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU47XG5cbiAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4odHlwZSwgdG9DaGFyKGNwKSk7XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9lbWl0U2V2ZXJhbENvZGVQb2ludHMgPSBmdW5jdGlvbiAoY29kZVBvaW50cykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKylcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjb2RlUG9pbnRzW2ldKTtcbn07XG5cbi8vTk9URTogdXNlZCB0aGVuIHdlIGVtaXQgY2hhcmFjdGVyIGV4cGxpY2l0bHkuIFRoaXMgaXMgYWx3YXlzIGEgbm9uLXdoaXRlc3BhY2UgYW5kIGEgbm9uLW51bGwgY2hhcmFjdGVyLlxuLy9TbyB3ZSBjYW4gYXZvaWQgYWRkaXRpb25hbCBjaGVja3MgaGVyZS5cblRva2VuaXplci5wcm90b3R5cGUuX2VtaXRDaGFyID0gZnVuY3Rpb24gKGNoKSB7XG4gICAgdGhpcy5fYXBwZW5kQ2hhclRvQ3VycmVudENoYXJhY3RlclRva2VuKFRva2VuaXplci5DSEFSQUNURVJfVE9LRU4sIGNoKTtcbn07XG5cbi8vQ2hhcmFjdGVyIHJlZmVyZW5jZSB0b2tlbml6YXRpb25cblRva2VuaXplci5wcm90b3R5cGUuX2NvbnN1bWVOdW1lcmljRW50aXR5ID0gZnVuY3Rpb24gKGlzSGV4KSB7XG4gICAgdmFyIGRpZ2l0cyA9ICcnLFxuICAgICAgICBuZXh0Q3AgPSB2b2lkIDA7XG5cbiAgICBkbyB7XG4gICAgICAgIGRpZ2l0cyArPSB0b0NoYXIodGhpcy5fY29uc3VtZSgpKTtcbiAgICAgICAgbmV4dENwID0gdGhpcy5fbG9va2FoZWFkKCk7XG4gICAgfSB3aGlsZSAobmV4dENwICE9PSAkLkVPRiAmJiBpc0RpZ2l0KG5leHRDcCwgaXNIZXgpKTtcblxuICAgIGlmICh0aGlzLl9sb29rYWhlYWQoKSA9PT0gJC5TRU1JQ09MT04pXG4gICAgICAgIHRoaXMuX2NvbnN1bWUoKTtcblxuICAgIHZhciByZWZlcmVuY2VkQ3AgPSBwYXJzZUludChkaWdpdHMsIGlzSGV4ID8gMTYgOiAxMCksXG4gICAgICAgIHJlcGxhY2VtZW50ID0gTlVNRVJJQ19FTlRJVFlfUkVQTEFDRU1FTlRTW3JlZmVyZW5jZWRDcF07XG5cbiAgICBpZiAocmVwbGFjZW1lbnQpXG4gICAgICAgIHJldHVybiByZXBsYWNlbWVudDtcblxuICAgIGlmIChpc1Jlc2VydmVkQ29kZVBvaW50KHJlZmVyZW5jZWRDcCkpXG4gICAgICAgIHJldHVybiAkLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcblxuICAgIHJldHVybiByZWZlcmVuY2VkQ3A7XG59O1xuXG4vLyBOT1RFOiBmb3IgdGhlIGRldGFpbHMgb24gdGhpcyBhbGdvcml0aG0gc2VlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L3RyZWUvbWFzdGVyL3NjcmlwdHMvZ2VuZXJhdGVfbmFtZWRfZW50aXR5X2RhdGEvUkVBRE1FLm1kXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9jb25zdW1lTmFtZWRFbnRpdHkgPSBmdW5jdGlvbiAoaW5BdHRyKSB7XG4gICAgdmFyIHJlZmVyZW5jZWRDb2RlUG9pbnRzID0gbnVsbCxcbiAgICAgICAgcmVmZXJlbmNlU2l6ZSA9IDAsXG4gICAgICAgIGNwID0gbnVsbCxcbiAgICAgICAgY29uc3VtZWRDb3VudCA9IDAsXG4gICAgICAgIHNlbWljb2xvblRlcm1pbmF0ZWQgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpID4gLTE7KSB7XG4gICAgICAgIHZhciBjdXJyZW50ID0gbmVUcmVlW2ldLFxuICAgICAgICAgICAgaW5Ob2RlID0gY3VycmVudCA8IE1BWF9CUkFOQ0hfTUFSS0VSX1ZBTFVFLFxuICAgICAgICAgICAgbm9kZVdpdGhEYXRhID0gaW5Ob2RlICYmIGN1cnJlbnQgJiBIQVNfREFUQV9GTEFHO1xuXG4gICAgICAgIGlmIChub2RlV2l0aERhdGEpIHtcbiAgICAgICAgICAgIHJlZmVyZW5jZWRDb2RlUG9pbnRzID0gY3VycmVudCAmIERBVEFfRFVQTEVUX0ZMQUcgPyBbbmVUcmVlWysraV0sIG5lVHJlZVsrK2ldXSA6IFtuZVRyZWVbKytpXV07XG4gICAgICAgICAgICByZWZlcmVuY2VTaXplID0gY29uc3VtZWRDb3VudDtcblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgICAgIHNlbWljb2xvblRlcm1pbmF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY3AgPSB0aGlzLl9jb25zdW1lKCk7XG4gICAgICAgIGNvbnN1bWVkQ291bnQrKztcblxuICAgICAgICBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgaWYgKGluTm9kZSlcbiAgICAgICAgICAgIGkgPSBjdXJyZW50ICYgSEFTX0JSQU5DSEVTX0ZMQUcgPyBmaW5kTmFtZWRFbnRpdHlUcmVlQnJhbmNoKGksIGNwKSA6IC0xO1xuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGkgPSBjcCA9PT0gY3VycmVudCA/ICsraSA6IC0xO1xuICAgIH1cblxuXG4gICAgaWYgKHJlZmVyZW5jZWRDb2RlUG9pbnRzKSB7XG4gICAgICAgIGlmICghc2VtaWNvbG9uVGVybWluYXRlZCkge1xuICAgICAgICAgICAgLy9OT1RFOiB1bmNvbnN1bWUgZXhjZXNzIChlLmcuICdpdCcgaW4gJyZub3RpdCcpXG4gICAgICAgICAgICB0aGlzLl91bmNvbnN1bWVTZXZlcmFsKGNvbnN1bWVkQ291bnQgLSByZWZlcmVuY2VTaXplKTtcblxuICAgICAgICAgICAgLy9OT1RFOiBJZiB0aGUgY2hhcmFjdGVyIHJlZmVyZW5jZSBpcyBiZWluZyBjb25zdW1lZCBhcyBwYXJ0IG9mIGFuIGF0dHJpYnV0ZSBhbmQgdGhlIG5leHQgY2hhcmFjdGVyXG4gICAgICAgICAgICAvL2lzIGVpdGhlciBhIFUrMDAzRCBFUVVBTFMgU0lHTiBjaGFyYWN0ZXIgKD0pIG9yIGFuIGFscGhhbnVtZXJpYyBBU0NJSSBjaGFyYWN0ZXIsIHRoZW4sIGZvciBoaXN0b3JpY2FsXG4gICAgICAgICAgICAvL3JlYXNvbnMsIGFsbCB0aGUgY2hhcmFjdGVycyB0aGF0IHdlcmUgbWF0Y2hlZCBhZnRlciB0aGUgVSswMDI2IEFNUEVSU0FORCBjaGFyYWN0ZXIgKCYpIG11c3QgYmVcbiAgICAgICAgICAgIC8vdW5jb25zdW1lZCwgYW5kIG5vdGhpbmcgaXMgcmV0dXJuZWQuXG4gICAgICAgICAgICAvL0hvd2V2ZXIsIGlmIHRoaXMgbmV4dCBjaGFyYWN0ZXIgaXMgaW4gZmFjdCBhIFUrMDAzRCBFUVVBTFMgU0lHTiBjaGFyYWN0ZXIgKD0pLCB0aGVuIHRoaXMgaXMgYVxuICAgICAgICAgICAgLy9wYXJzZSBlcnJvciwgYmVjYXVzZSBzb21lIGxlZ2FjeSB1c2VyIGFnZW50cyB3aWxsIG1pc2ludGVycHJldCB0aGUgbWFya3VwIGluIHRob3NlIGNhc2VzLlxuICAgICAgICAgICAgLy8oc2VlOiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCN0b2tlbml6aW5nLWNoYXJhY3Rlci1yZWZlcmVuY2VzKVxuICAgICAgICAgICAgaWYgKGluQXR0cikge1xuICAgICAgICAgICAgICAgIHZhciBuZXh0Q3AgPSB0aGlzLl9sb29rYWhlYWQoKTtcblxuICAgICAgICAgICAgICAgIGlmIChuZXh0Q3AgPT09ICQuRVFVQUxTX1NJR04gfHwgaXNBc2NpaUFscGhhTnVtZXJpYyhuZXh0Q3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZVNldmVyYWwocmVmZXJlbmNlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWZlcmVuY2VkQ29kZVBvaW50cztcbiAgICB9XG5cbiAgICB0aGlzLl91bmNvbnN1bWVTZXZlcmFsKGNvbnN1bWVkQ291bnQpO1xuXG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9jb25zdW1lQ2hhcmFjdGVyUmVmZXJlbmNlID0gZnVuY3Rpb24gKHN0YXJ0Q3AsIGluQXR0cikge1xuICAgIGlmIChpc1doaXRlc3BhY2Uoc3RhcnRDcCkgfHwgc3RhcnRDcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTiB8fFxuICAgICAgICBzdGFydENwID09PSAkLkFNUEVSU0FORCB8fCBzdGFydENwID09PSB0aGlzLmFkZGl0aW9uYWxBbGxvd2VkQ3AgfHwgc3RhcnRDcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgLy9OT1RFOiBub3QgYSBjaGFyYWN0ZXIgcmVmZXJlbmNlLiBObyBjaGFyYWN0ZXJzIGFyZSBjb25zdW1lZCwgYW5kIG5vdGhpbmcgaXMgcmV0dXJuZWQuXG4gICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRDcCA9PT0gJC5OVU1CRVJfU0lHTikge1xuICAgICAgICAvL05PVEU6IHdlIGhhdmUgYSBudW1lcmljIGVudGl0eSBjYW5kaWRhdGUsIG5vdyB3ZSBzaG91bGQgZGV0ZXJtaW5lIGlmIGl0J3MgaGV4IG9yIGRlY2ltYWxcbiAgICAgICAgdmFyIGlzSGV4ID0gZmFsc2UsXG4gICAgICAgICAgICBuZXh0Q3AgPSB0aGlzLl9sb29rYWhlYWQoKTtcblxuICAgICAgICBpZiAobmV4dENwID09PSAkLkxBVElOX1NNQUxMX1ggfHwgbmV4dENwID09PSAkLkxBVElOX0NBUElUQUxfWCkge1xuICAgICAgICAgICAgdGhpcy5fY29uc3VtZSgpO1xuICAgICAgICAgICAgaXNIZXggPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV4dENwID0gdGhpcy5fbG9va2FoZWFkKCk7XG5cbiAgICAgICAgLy9OT1RFOiBpZiB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBkaWdpdCB0aGlzIGlzIGEgbnVtZXJpYyBlbnRpdHkgZm9yIHN1cmUsIHNvIHdlIGNvbnN1bWUgaXRcbiAgICAgICAgaWYgKG5leHRDcCAhPT0gJC5FT0YgJiYgaXNEaWdpdChuZXh0Q3AsIGlzSGV4KSlcbiAgICAgICAgICAgIHJldHVybiBbdGhpcy5fY29uc3VtZU51bWVyaWNFbnRpdHkoaXNIZXgpXTtcblxuICAgICAgICAvL05PVEU6IG90aGVyd2lzZSB0aGlzIGlzIGEgYm9ndXMgbnVtYmVyIGVudGl0eSBhbmQgYSBwYXJzZSBlcnJvci4gVW5jb25zdW1lIHRoZSBudW1iZXIgc2lnblxuICAgICAgICAvL2FuZCB0aGUgJ3gnLWNoYXJhY3RlciBpZiBhcHByb3ByaWF0ZS5cbiAgICAgICAgdGhpcy5fdW5jb25zdW1lU2V2ZXJhbChpc0hleCA/IDIgOiAxKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fdW5jb25zdW1lKCk7XG5cbiAgICByZXR1cm4gdGhpcy5fY29uc3VtZU5hbWVkRW50aXR5KGluQXR0cik7XG59O1xuXG4vL1N0YXRlIG1hY2hpbmVcbnZhciBfID0gVG9rZW5pemVyLnByb3RvdHlwZTtcblxuLy8xMi4yLjQuMSBEYXRhIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tEQVRBX1NUQVRFXSA9IGZ1bmN0aW9uIGRhdGFTdGF0ZShjcCkge1xuICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgaWYgKGNwID09PSAkLkFNUEVSU0FORClcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENIQVJBQ1RFUl9SRUZFUkVOQ0VfSU5fREFUQV9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKVxuICAgICAgICB0aGlzLnN0YXRlID0gVEFHX09QRU5fU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xufTtcblxuXG4vLzEyLjIuNC4yIENoYXJhY3RlciByZWZlcmVuY2UgaW4gZGF0YSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQ0hBUkFDVEVSX1JFRkVSRU5DRV9JTl9EQVRBX1NUQVRFXSA9IGZ1bmN0aW9uIGNoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlKGNwKSB7XG4gICAgdGhpcy5hZGRpdGlvbmFsQWxsb3dlZENwID0gdm9pZCAwO1xuXG4gICAgdmFyIHJlZmVyZW5jZWRDb2RlUG9pbnRzID0gdGhpcy5fY29uc3VtZUNoYXJhY3RlclJlZmVyZW5jZShjcCwgZmFsc2UpO1xuXG4gICAgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgIGlmIChyZWZlcmVuY2VkQ29kZVBvaW50cylcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyhyZWZlcmVuY2VkQ29kZVBvaW50cyk7XG5cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXIoJyYnKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjMgUkNEQVRBIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tSQ0RBVEFfU1RBVEVdID0gZnVuY3Rpb24gcmNkYXRhU3RhdGUoY3ApIHtcbiAgICB0aGlzLnByZXByb2Nlc3Nvci5kcm9wUGFyc2VkQ2h1bmsoKTtcblxuICAgIGlmIChjcCA9PT0gJC5BTVBFUlNBTkQpXG4gICAgICAgIHRoaXMuc3RhdGUgPSBDSEFSQUNURVJfUkVGRVJFTkNFX0lOX1JDREFUQV9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKVxuICAgICAgICB0aGlzLnN0YXRlID0gUkNEQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG59O1xuXG5cbi8vMTIuMi40LjQgQ2hhcmFjdGVyIHJlZmVyZW5jZSBpbiBSQ0RBVEEgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0NIQVJBQ1RFUl9SRUZFUkVOQ0VfSU5fUkNEQVRBX1NUQVRFXSA9IGZ1bmN0aW9uIGNoYXJhY3RlclJlZmVyZW5jZUluUmNkYXRhU3RhdGUoY3ApIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxBbGxvd2VkQ3AgPSB2b2lkIDA7XG5cbiAgICB2YXIgcmVmZXJlbmNlZENvZGVQb2ludHMgPSB0aGlzLl9jb25zdW1lQ2hhcmFjdGVyUmVmZXJlbmNlKGNwLCBmYWxzZSk7XG5cbiAgICBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZWRDb2RlUG9pbnRzKVxuICAgICAgICAgICAgdGhpcy5fZW1pdFNldmVyYWxDb2RlUG9pbnRzKHJlZmVyZW5jZWRDb2RlUG9pbnRzKTtcblxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcignJicpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSBSQ0RBVEFfU1RBVEU7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC41IFJBV1RFWFQgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1JBV1RFWFRfU1RBVEVdID0gZnVuY3Rpb24gcmF3dGV4dFN0YXRlKGNwKSB7XG4gICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG5cbiAgICBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pXG4gICAgICAgIHRoaXMuc3RhdGUgPSBSQVdURVhUX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG59O1xuXG5cbi8vMTIuMi40LjYgU2NyaXB0IGRhdGEgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFTdGF0ZShjcCkge1xuICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKVxuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLl9lbWl0Q2hhcihVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbn07XG5cblxuLy8xMi4yLjQuNyBQTEFJTlRFWFQgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1BMQUlOVEVYVF9TVEFURV0gPSBmdW5jdGlvbiBwbGFpbnRleHRTdGF0ZShjcCkge1xuICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgaWYgKGNwID09PSAkLk5VTEwpXG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xufTtcblxuXG4vLzEyLjIuNC44IFRhZyBvcGVuIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tUQUdfT1BFTl9TVEFURV0gPSBmdW5jdGlvbiB0YWdPcGVuU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuRVhDTEFNQVRJT05fTUFSSylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IE1BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuU09MSURVUylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IEVORF9UQUdfT1BFTl9TVEFURTtcblxuICAgIGVsc2UgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZVN0YXJ0VGFnVG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShUQUdfTkFNRV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuUVVFU1RJT05fTUFSSylcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFKTtcblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuOSBFbmQgdGFnIG9wZW4gc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0VORF9UQUdfT1BFTl9TVEFURV0gPSBmdW5jdGlvbiBlbmRUYWdPcGVuU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShUQUdfTkFNRV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pXG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCcvJyk7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0NPTU1FTlRfU1RBVEUpO1xufTtcblxuXG4vLzEyLjIuNC4xMCBUYWcgbmFtZSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bVEFHX05BTUVfU1RBVEVdID0gZnVuY3Rpb24gdGFnTmFtZVN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpXG4gICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5TT0xJRFVTKVxuICAgICAgICB0aGlzLnN0YXRlID0gU0VMRl9DTE9TSU5HX1NUQVJUX1RBR19TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoaXNBc2NpaVVwcGVyKGNwKSlcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbn07XG5cblxuLy8xMi4yLjQuMTEgUkNEQVRBIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEVdID0gZnVuY3Rpb24gcmNkYXRhTGVzc1RoYW5TaWduU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgIHRoaXMuc3RhdGUgPSBSQ0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJDREFUQV9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC4xMiBSQ0RBVEEgZW5kIHRhZyBvcGVuIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tSQ0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFXSA9IGZ1bmN0aW9uIHJjZGF0YUVuZFRhZ09wZW5TdGF0ZShjcCkge1xuICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJDREFUQV9FTkRfVEFHX05BTUVfU1RBVEUpO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLycpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJDREFUQV9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC4xMyBSQ0RBVEEgZW5kIHRhZyBuYW1lIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tSQ0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFXSA9IGZ1bmN0aW9uIHJjZGF0YUVuZFRhZ05hbWVTdGF0ZShjcCkge1xuICAgIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoaXNBc2NpaUxvd2VyKGNwKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9pc0FwcHJvcHJpYXRlRW5kVGFnVG9rZW4oKSkge1xuICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU0VMRl9DTE9TSU5HX1NUQVJUX1RBR19TVEFURTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLycpO1xuICAgICAgICB0aGlzLl9lbWl0U2V2ZXJhbENvZGVQb2ludHModGhpcy50ZW1wQnVmZik7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjE0IFJBV1RFWFQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1JBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEVdID0gZnVuY3Rpb24gcmF3dGV4dExlc3NUaGFuU2lnblN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICB0aGlzLnN0YXRlID0gUkFXVEVYVF9FTkRfVEFHX09QRU5fU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkFXVEVYVF9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC4xNSBSQVdURVhUIGVuZCB0YWcgb3BlbiBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bUkFXVEVYVF9FTkRfVEFHX09QRU5fU1RBVEVdID0gZnVuY3Rpb24gcmF3dGV4dEVuZFRhZ09wZW5TdGF0ZShjcCkge1xuICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJBV1RFWFRfRU5EX1RBR19OQU1FX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJzwnKTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy8nKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQVdURVhUX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjE2IFJBV1RFWFQgZW5kIHRhZyBuYW1lIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tSQVdURVhUX0VORF9UQUdfTkFNRV9TVEFURV0gPSBmdW5jdGlvbiByYXd0ZXh0RW5kVGFnTmFtZVN0YXRlKGNwKSB7XG4gICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChpc0FzY2lpTG93ZXIoY3ApKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQXBwcm9wcmlhdGVFbmRUYWdUb2tlbigpKSB7XG4gICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCcvJyk7XG4gICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQVdURVhUX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjE3IFNjcmlwdCBkYXRhIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhTGVzc1RoYW5TaWduU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FTkRfVEFHX09QRU5fU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRVhDTEFNQVRJT05fTUFSSykge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignIScpO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjE4IFNjcmlwdCBkYXRhIGVuZCB0YWcgb3BlbiBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUpO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLycpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjE5IFNjcmlwdCBkYXRhIGVuZCB0YWcgbmFtZSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5faXNBcHByb3ByaWF0ZUVuZFRhZ1Rva2VuKCkpIHtcbiAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU0VMRl9DTE9TSU5HX1NUQVJUX1RBR19TVEFURTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCcvJyk7XG4gICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC4yMCBTY3JpcHQgZGF0YSBlc2NhcGUgc3RhcnQgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhRXNjYXBlU3RhcnRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLScpO1xuICAgIH1cblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9TVEFURSk7XG59O1xuXG5cbi8vMTIuMi40LjIxIFNjcmlwdCBkYXRhIGVzY2FwZSBzdGFydCBkYXNoIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy0nKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xufTtcblxuXG4vLzEyLjIuNC4yMiBTY3JpcHQgZGF0YSBlc2NhcGVkIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFFc2NhcGVkU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCctJyk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pXG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbn07XG5cblxuLy8xMi4yLjQuMjMgU2NyaXB0IGRhdGEgZXNjYXBlZCBkYXNoIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy0nKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTilcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcihVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjI0IFNjcmlwdCBkYXRhIGVzY2FwZWQgZGFzaCBkYXNoIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKVxuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLScpO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pXG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPicpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMjUgU2NyaXB0IGRhdGEgZXNjYXBlZCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX09QRU5fU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRfU1RBVEUpO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMjYgU2NyaXB0IGRhdGEgZXNjYXBlZCBlbmQgdGFnIG9wZW4gc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlKGNwKSB7XG4gICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUVuZFRhZ1Rva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEUpO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLycpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMjcgU2NyaXB0IGRhdGEgZXNjYXBlZCBlbmQgdGFnIG5hbWUgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKGNwKSB7XG4gICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChpc0FzY2lpTG93ZXIoY3ApKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQXBwcm9wcmlhdGVFbmRUYWdUb2tlbigpKSB7XG4gICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCcvJyk7XG4gICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjI4IFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGUgc3RhcnQgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRfU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUoY3ApIHtcbiAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSB8fCBjcCA9PT0gJC5TT0xJRFVTIHx8IGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmlzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmcoKSA/IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFIDogU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2godG9Bc2NpaUxvd2VyQ29kZVBvaW50KGNwKSk7XG4gICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xufTtcblxuXG4vLzEyLjIuNC4yOSBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCctJyk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpXG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG59O1xuXG5cbi8vMTIuMi40LjMwIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIGRhc2ggc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCctJyk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcihVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC4zMSBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKVxuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLScpO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJz4nKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMzIgU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy8nKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUpO1xufTtcblxuXG4vLzEyLjIuNC4zMyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlIGVuZCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9FTkRfU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5pc1RlbXBCdWZmZXJFcXVhbFRvU2NyaXB0U3RyaW5nKCkgPyBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFIDogU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG5cbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2godG9Bc2NpaUxvd2VyQ29kZVBvaW50KGNwKSk7XG4gICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFKTtcbn07XG5cblxuLy8xMi4yLjQuMzQgQmVmb3JlIGF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEVdID0gZnVuY3Rpb24gYmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpXG4gICAgICAgIHJldHVybjtcblxuICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTIHx8IGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOIHx8IGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShBRlRFUl9BVFRSSUJVVEVfTkFNRV9TVEFURSk7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FUVVBTFNfU0lHTikge1xuICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCc9Jyk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBBVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignJyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMzUgQXR0cmlidXRlIG5hbWUgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0FUVFJJQlVURV9OQU1FX1NUQVRFXSA9IGZ1bmN0aW9uIGF0dHJpYnV0ZU5hbWVTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApIHx8IGNwID09PSAkLlNPTElEVVMgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04gfHwgY3AgPT09ICQuRU9GKSB7XG4gICAgICAgIHRoaXMuX2xlYXZlQXR0ck5hbWUoQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgICAgICB0aGlzLl91bmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FUVVBTFNfU0lHTilcbiAgICAgICAgdGhpcy5fbGVhdmVBdHRyTmFtZShCRUZPUkVfQVRUUklCVVRFX1ZBTFVFX1NUQVRFKTtcblxuICAgIGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpXG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLIHx8IGNwID09PSAkLkFQT1NUUk9QSEUgfHwgY3AgPT09ICQuTEVTU19USEFOX1NJR04pXG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSB0b0NoYXIoY3ApO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gdG9DaGFyKGNwKTtcbn07XG5cblxuLy8xMi4yLjQuMzYgQWZ0ZXIgYXR0cmlidXRlIG5hbWUgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0FGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFXSA9IGZ1bmN0aW9uIGFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpXG4gICAgICAgIHJldHVybjtcblxuICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKVxuICAgICAgICB0aGlzLnN0YXRlID0gU0VMRl9DTE9TSU5HX1NUQVJUX1RBR19TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVRVUFMU19TSUdOKVxuICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUF0dHIoJycpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjM3IEJlZm9yZSBhdHRyaWJ1dGUgdmFsdWUgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0JFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEVdID0gZnVuY3Rpb24gYmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKVxuICAgICAgICByZXR1cm47XG5cbiAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspXG4gICAgICAgIHRoaXMuc3RhdGUgPSBBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpXG4gICAgICAgIHRoaXMuc3RhdGUgPSBBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURTtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUpO1xufTtcblxuXG4vLzEyLjIuNC4zOCBBdHRyaWJ1dGUgdmFsdWUgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURV0gPSBmdW5jdGlvbiBhdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKVxuICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRF9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxBbGxvd2VkQ3AgPSAkLlFVT1RBVElPTl9NQVJLO1xuICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENIQVJBQ1RFUl9SRUZFUkVOQ0VfSU5fQVRUUklCVVRFX1ZBTFVFX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpXG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbn07XG5cblxuLy8xMi4yLjQuMzkgQXR0cmlidXRlIHZhbHVlIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URURfU1RBVEVdID0gZnVuY3Rpb24gYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKVxuICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRF9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxBbGxvd2VkQ3AgPSAkLkFQT1NUUk9QSEU7XG4gICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9JTl9BVFRSSUJVVEVfVkFMVUVfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSB0b0NoYXIoY3ApO1xufTtcblxuXG4vLzEyLjIuNC40MCBBdHRyaWJ1dGUgdmFsdWUgKHVucXVvdGVkKSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFXSA9IGZ1bmN0aW9uIGF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKVxuICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuQU1QRVJTQU5EKSB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbEFsbG93ZWRDcCA9ICQuR1JFQVRFUl9USEFOX1NJR047XG4gICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9JTl9BVFRSSUJVVEVfVkFMVUVfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoREFUQV9TVEFURSk7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUksgfHwgY3AgPT09ICQuQVBPU1RST1BIRSB8fCBjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTiB8fFxuICAgICAgICAgICAgIGNwID09PSAkLkVRVUFMU19TSUdOIHx8IGNwID09PSAkLkdSQVZFX0FDQ0VOVClcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSB0b0NoYXIoY3ApO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcihjcCk7XG59O1xuXG5cbi8vMTIuMi40LjQxIENoYXJhY3RlciByZWZlcmVuY2UgaW4gYXR0cmlidXRlIHZhbHVlIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tDSEFSQUNURVJfUkVGRVJFTkNFX0lOX0FUVFJJQlVURV9WQUxVRV9TVEFURV0gPSBmdW5jdGlvbiBjaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUoY3ApIHtcbiAgICB2YXIgcmVmZXJlbmNlZENvZGVQb2ludHMgPSB0aGlzLl9jb25zdW1lQ2hhcmFjdGVyUmVmZXJlbmNlKGNwLCB0cnVlKTtcblxuICAgIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICBpZiAocmVmZXJlbmNlZENvZGVQb2ludHMpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVmZXJlbmNlZENvZGVQb2ludHMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSB0b0NoYXIocmVmZXJlbmNlZENvZGVQb2ludHNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gJyYnO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLnJldHVyblN0YXRlO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuNDIgQWZ0ZXIgYXR0cmlidXRlIHZhbHVlIChxdW90ZWQpIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFXSA9IGZ1bmN0aW9uIGFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKVxuICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuU09MSURVUylcbiAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoU0VMRl9DTE9TSU5HX1NUQVJUX1RBR19TVEFURSk7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShEQVRBX1NUQVRFKTtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUpO1xufTtcblxuXG4vLzEyLjIuNC40MyBTZWxmLWNsb3Npbmcgc3RhcnQgdGFnIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFXSA9IGZ1bmN0aW9uIHNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSk7XG59O1xuXG5cbi8vMTIuMi40LjQ0IEJvZ3VzIGNvbW1lbnQgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0JPR1VTX0NPTU1FTlRfU1RBVEVdID0gZnVuY3Rpb24gYm9ndXNDb21tZW50U3RhdGUoKSB7XG4gICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKCk7XG4gICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFX0NPTlRJTlVBVElPTik7XG59O1xuXG4vL0hBQ0s6IHRvIHN1cHBvcnQgc3RyZWFtaW5nIGFuZCBtYWtlIEJPR1VTX0NPTU1FTlRfU1RBVEUgcmVlbnRyYW50IHdlJ3ZlXG4vL2ludHJvZHVjZWQgQk9HVVNfQ09NTUVOVF9TVEFURV9DT05USU5VQVRJT04gc3RhdGUgd2hpY2ggd2lsbCBub3QgcHJvZHVjZVxuLy9jb21tZW50IHRva2VuIG9uIGVhY2ggY2FsbC5cbl9bQk9HVVNfQ09NTUVOVF9TVEFURV9DT05USU5VQVRJT05dID0gZnVuY3Rpb24gYm9ndXNDb21tZW50U3RhdGVDb250aW51YXRpb24oY3ApIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSBjcCA9PT0gJC5OVUxMID8gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVIgOiB0b0NoYXIoY3ApO1xuXG4gICAgICAgICAgICB0aGlzLl9oaWJlcm5hdGlvblNuYXBzaG90KCk7XG4gICAgICAgICAgICBjcCA9IHRoaXMuX2NvbnN1bWUoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xufTtcblxuLy8xMi4yLjQuNDUgTWFya3VwIGRlY2xhcmF0aW9uIG9wZW4gc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW01BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFXSA9IGZ1bmN0aW9uIG1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKGNwKSB7XG4gICAgdmFyIGRhc2hEYXNoTWF0Y2ggPSB0aGlzLl9jb25zdW1lU3Vic2VxdWVudElmTWF0Y2goJCQuREFTSF9EQVNIX1NUUklORywgY3AsIHRydWUpLFxuICAgICAgICBkb2N0eXBlTWF0Y2ggPSAhZGFzaERhc2hNYXRjaCAmJiB0aGlzLl9jb25zdW1lU3Vic2VxdWVudElmTWF0Y2goJCQuRE9DVFlQRV9TVFJJTkcsIGNwLCBmYWxzZSksXG4gICAgICAgIGNkYXRhTWF0Y2ggPSAhZGFzaERhc2hNYXRjaCAmJiAhZG9jdHlwZU1hdGNoICYmXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbG93Q0RBVEEgJiZcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbnN1bWVTdWJzZXF1ZW50SWZNYXRjaCgkJC5DREFUQV9TVEFSVF9TVFJJTkcsIGNwLCB0cnVlKTtcblxuICAgIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICBpZiAoZGFzaERhc2hNYXRjaCkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFSVF9TVEFURTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKGRvY3R5cGVNYXRjaClcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NUQVRFO1xuXG4gICAgICAgIGVsc2UgaWYgKGNkYXRhTWF0Y2gpXG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0RBVEFfU0VDVElPTl9TVEFURTtcblxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0NPTU1FTlRfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuNDYgQ29tbWVudCBzdGFydCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQ09NTUVOVF9TVEFSVF9TVEFURV0gPSBmdW5jdGlvbiBjb21tZW50U3RhcnRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpXG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFURTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjQ3IENvbW1lbnQgc3RhcnQgZGFzaCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQ09NTUVOVF9TVEFSVF9EQVNIX1NUQVRFXSA9IGZ1bmN0aW9uIGNvbW1lbnRTdGFydERhc2hTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpXG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0VORF9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfU1RBVEU7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC40OCBDb21tZW50IHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tDT01NRU5UX1NUQVRFXSA9IGZ1bmN0aW9uIGNvbW1lbnRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpXG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0VORF9EQVNIX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9IHRvQ2hhcihjcCk7XG59O1xuXG5cbi8vMTIuMi40LjQ5IENvbW1lbnQgZW5kIGRhc2ggc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0NPTU1FTlRfRU5EX0RBU0hfU1RBVEVdID0gZnVuY3Rpb24gY29tbWVudEVuZERhc2hTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpXG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0VORF9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0nO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVRFO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuNTAgQ29tbWVudCBlbmQgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0NPTU1FTlRfRU5EX1NUQVRFXSA9IGZ1bmN0aW9uIGNvbW1lbnRFbmRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVYQ0xBTUFUSU9OX01BUkspXG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0VORF9CQU5HX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctJztcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLS0nO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9IFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfU1RBVEU7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC41MSBDb21tZW50IGVuZCBiYW5nIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tDT01NRU5UX0VORF9CQU5HX1NUQVRFXSA9IGZ1bmN0aW9uIGNvbW1lbnRFbmRCYW5nU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0tISc7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0VORF9EQVNIX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9IFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVRFO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuNTIgRE9DVFlQRSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bRE9DVFlQRV9TVEFURV0gPSBmdW5jdGlvbiBkb2N0eXBlU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSlcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKG51bGwpO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbihudWxsKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4oJycpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERPQ1RZUEVfTkFNRV9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC41NCBET0NUWVBFIG5hbWUgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0RPQ1RZUEVfTkFNRV9TVEFURV0gPSBmdW5jdGlvbiBkb2N0eXBlTmFtZVN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04gfHwgY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFGVEVSX0RPQ1RZUEVfTkFNRV9TVEFURSk7XG5cbiAgICBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5uYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubmFtZSArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubmFtZSArPSB0b0NoYXIoY3ApO1xufTtcblxuXG4vLzEyLjIuNC41NSBBZnRlciBET0NUWVBFIG5hbWUgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0FGVEVSX0RPQ1RZUEVfTkFNRV9TVEFURV0gPSBmdW5jdGlvbiBhZnRlckRvY3R5cGVOYW1lU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSlcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBwdWJsaWNNYXRjaCA9IHRoaXMuX2NvbnN1bWVTdWJzZXF1ZW50SWZNYXRjaCgkJC5QVUJMSUNfU1RSSU5HLCBjcCwgZmFsc2UpLFxuICAgICAgICAgICAgc3lzdGVtTWF0Y2ggPSAhcHVibGljTWF0Y2ggJiYgdGhpcy5fY29uc3VtZVN1YnNlcXVlbnRJZk1hdGNoKCQkLlNZU1RFTV9TVFJJTkcsIGNwLCBmYWxzZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICBpZiAocHVibGljTWF0Y2gpXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFO1xuXG4gICAgICAgICAgICBlbHNlIGlmIChzeXN0ZW1NYXRjaClcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEU7XG5cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gQk9HVVNfRE9DVFlQRV9TVEFURTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuNTcgQmVmb3JlIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0JFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFXSA9IGZ1bmN0aW9uIGJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSlcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC41OCBET0NUWVBFIHB1YmxpYyBpZGVudGlmaWVyIChkb3VibGUtcXVvdGVkKSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFXSA9IGZ1bmN0aW9uIGRvY3R5cGVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspXG4gICAgICAgIHRoaXMuc3RhdGUgPSBCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCArPSB0b0NoYXIoY3ApO1xufTtcblxuXG4vLzEyLjIuNC41OSBET0NUWVBFIHB1YmxpYyBpZGVudGlmaWVyIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFXSA9IGZ1bmN0aW9uIGRvY3R5cGVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSlcbiAgICAgICAgdGhpcy5zdGF0ZSA9IEJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSU19TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkICs9IFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkICs9IHRvQ2hhcihjcCk7XG59O1xuXG5cbi8vMTIuMi40LjYxIEJldHdlZW4gRE9DVFlQRSBwdWJsaWMgYW5kIHN5c3RlbSBpZGVudGlmaWVycyBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTX1NUQVRFXSA9IGZ1bmN0aW9uIGJldHdlZW5Eb2N0eXBlUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKVxuICAgICAgICByZXR1cm47XG5cbiAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgIH1cblxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC42MyBCZWZvcmUgRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEVdID0gZnVuY3Rpb24gYmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKVxuICAgICAgICByZXR1cm47XG5cbiAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjY0IERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEVdID0gZnVuY3Rpb24gZG9jdHlwZVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSB0b0NoYXIoY3ApO1xufTtcblxuXG4vLzEyLjIuNC42NSBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFXSA9IGZ1bmN0aW9uIGRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSlcbiAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSB0b0NoYXIoY3ApO1xufTtcblxuXG4vLzEyLjIuNC42NiBBZnRlciBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFXSA9IGZ1bmN0aW9uIGFmdGVyRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKVxuICAgICAgICByZXR1cm47XG5cbiAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLnN0YXRlID0gQk9HVVNfRE9DVFlQRV9TVEFURTtcbn07XG5cblxuLy8xMi4yLjQuNjcgQm9ndXMgRE9DVFlQRSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQk9HVVNfRE9DVFlQRV9TVEFURV0gPSBmdW5jdGlvbiBib2d1c0RvY3R5cGVTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC42OCBDREFUQSBzZWN0aW9uIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tDREFUQV9TRUNUSU9OX1NUQVRFXSA9IGZ1bmN0aW9uIGNkYXRhU2VjdGlvblN0YXRlKGNwKSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgY2RhdGFFbmRNYXRjaCA9IHRoaXMuX2NvbnN1bWVTdWJzZXF1ZW50SWZNYXRjaCgkJC5DREFUQV9FTkRfU1RSSU5HLCBjcCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBpZiAoY2RhdGFFbmRNYXRjaCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcblxuICAgICAgICAgICAgdGhpcy5faGliZXJuYXRpb25TbmFwc2hvdCgpO1xuICAgICAgICAgICAgY3AgPSB0aGlzLl9jb25zdW1lKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIE5TID0gZXhwb3J0cy5OQU1FU1BBQ0VTID0ge1xuICAgIEhUTUw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyxcbiAgICBNQVRITUw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJyxcbiAgICBTVkc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gICAgWExJTks6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyxcbiAgICBYTUw6ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnLFxuICAgIFhNTE5TOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nXG59O1xuXG5leHBvcnRzLkFUVFJTID0ge1xuICAgIFRZUEU6ICd0eXBlJyxcbiAgICBBQ1RJT046ICdhY3Rpb24nLFxuICAgIEVOQ09ESU5HOiAnZW5jb2RpbmcnLFxuICAgIFBST01QVDogJ3Byb21wdCcsXG4gICAgTkFNRTogJ25hbWUnLFxuICAgIENPTE9SOiAnY29sb3InLFxuICAgIEZBQ0U6ICdmYWNlJyxcbiAgICBTSVpFOiAnc2l6ZSdcbn07XG5cbmV4cG9ydHMuRE9DVU1FTlRfTU9ERSA9IHtcbiAgICBOT19RVUlSS1M6ICduby1xdWlya3MnLFxuICAgIFFVSVJLUzogJ3F1aXJrcycsXG4gICAgTElNSVRFRF9RVUlSS1M6ICdsaW1pdGVkLXF1aXJrcydcbn07XG5cbnZhciAkID0gZXhwb3J0cy5UQUdfTkFNRVMgPSB7XG4gICAgQTogJ2EnLFxuICAgIEFERFJFU1M6ICdhZGRyZXNzJyxcbiAgICBBTk5PVEFUSU9OX1hNTDogJ2Fubm90YXRpb24teG1sJyxcbiAgICBBUFBMRVQ6ICdhcHBsZXQnLFxuICAgIEFSRUE6ICdhcmVhJyxcbiAgICBBUlRJQ0xFOiAnYXJ0aWNsZScsXG4gICAgQVNJREU6ICdhc2lkZScsXG5cbiAgICBCOiAnYicsXG4gICAgQkFTRTogJ2Jhc2UnLFxuICAgIEJBU0VGT05UOiAnYmFzZWZvbnQnLFxuICAgIEJHU09VTkQ6ICdiZ3NvdW5kJyxcbiAgICBCSUc6ICdiaWcnLFxuICAgIEJMT0NLUVVPVEU6ICdibG9ja3F1b3RlJyxcbiAgICBCT0RZOiAnYm9keScsXG4gICAgQlI6ICdicicsXG4gICAgQlVUVE9OOiAnYnV0dG9uJyxcblxuICAgIENBUFRJT046ICdjYXB0aW9uJyxcbiAgICBDRU5URVI6ICdjZW50ZXInLFxuICAgIENPREU6ICdjb2RlJyxcbiAgICBDT0w6ICdjb2wnLFxuICAgIENPTEdST1VQOiAnY29sZ3JvdXAnLFxuXG4gICAgREQ6ICdkZCcsXG4gICAgREVTQzogJ2Rlc2MnLFxuICAgIERFVEFJTFM6ICdkZXRhaWxzJyxcbiAgICBESUFMT0c6ICdkaWFsb2cnLFxuICAgIERJUjogJ2RpcicsXG4gICAgRElWOiAnZGl2JyxcbiAgICBETDogJ2RsJyxcbiAgICBEVDogJ2R0JyxcblxuICAgIEVNOiAnZW0nLFxuICAgIEVNQkVEOiAnZW1iZWQnLFxuXG4gICAgRklFTERTRVQ6ICdmaWVsZHNldCcsXG4gICAgRklHQ0FQVElPTjogJ2ZpZ2NhcHRpb24nLFxuICAgIEZJR1VSRTogJ2ZpZ3VyZScsXG4gICAgRk9OVDogJ2ZvbnQnLFxuICAgIEZPT1RFUjogJ2Zvb3RlcicsXG4gICAgRk9SRUlHTl9PQkpFQ1Q6ICdmb3JlaWduT2JqZWN0JyxcbiAgICBGT1JNOiAnZm9ybScsXG4gICAgRlJBTUU6ICdmcmFtZScsXG4gICAgRlJBTUVTRVQ6ICdmcmFtZXNldCcsXG5cbiAgICBIMTogJ2gxJyxcbiAgICBIMjogJ2gyJyxcbiAgICBIMzogJ2gzJyxcbiAgICBINDogJ2g0JyxcbiAgICBINTogJ2g1JyxcbiAgICBINjogJ2g2JyxcbiAgICBIRUFEOiAnaGVhZCcsXG4gICAgSEVBREVSOiAnaGVhZGVyJyxcbiAgICBIR1JPVVA6ICdoZ3JvdXAnLFxuICAgIEhSOiAnaHInLFxuICAgIEhUTUw6ICdodG1sJyxcblxuICAgIEk6ICdpJyxcbiAgICBJTUc6ICdpbWcnLFxuICAgIElNQUdFOiAnaW1hZ2UnLFxuICAgIElOUFVUOiAnaW5wdXQnLFxuICAgIElGUkFNRTogJ2lmcmFtZScsXG5cbiAgICBLRVlHRU46ICdrZXlnZW4nLFxuXG4gICAgTEFCRUw6ICdsYWJlbCcsXG4gICAgTEk6ICdsaScsXG4gICAgTElOSzogJ2xpbmsnLFxuICAgIExJU1RJTkc6ICdsaXN0aW5nJyxcblxuICAgIE1BSU46ICdtYWluJyxcbiAgICBNQUxJR05NQVJLOiAnbWFsaWdubWFyaycsXG4gICAgTUFSUVVFRTogJ21hcnF1ZWUnLFxuICAgIE1BVEg6ICdtYXRoJyxcbiAgICBNRU5VOiAnbWVudScsXG4gICAgTUVOVUlURU06ICdtZW51aXRlbScsXG4gICAgTUVUQTogJ21ldGEnLFxuICAgIE1HTFlQSDogJ21nbHlwaCcsXG4gICAgTUk6ICdtaScsXG4gICAgTU86ICdtbycsXG4gICAgTU46ICdtbicsXG4gICAgTVM6ICdtcycsXG4gICAgTVRFWFQ6ICdtdGV4dCcsXG5cbiAgICBOQVY6ICduYXYnLFxuICAgIE5PQlI6ICdub2JyJyxcbiAgICBOT0ZSQU1FUzogJ25vZnJhbWVzJyxcbiAgICBOT0VNQkVEOiAnbm9lbWJlZCcsXG4gICAgTk9TQ1JJUFQ6ICdub3NjcmlwdCcsXG5cbiAgICBPQkpFQ1Q6ICdvYmplY3QnLFxuICAgIE9MOiAnb2wnLFxuICAgIE9QVEdST1VQOiAnb3B0Z3JvdXAnLFxuICAgIE9QVElPTjogJ29wdGlvbicsXG5cbiAgICBQOiAncCcsXG4gICAgUEFSQU06ICdwYXJhbScsXG4gICAgUExBSU5URVhUOiAncGxhaW50ZXh0JyxcbiAgICBQUkU6ICdwcmUnLFxuXG4gICAgUkI6ICdyYicsXG4gICAgUlA6ICdycCcsXG4gICAgUlQ6ICdydCcsXG4gICAgUlRDOiAncnRjJyxcbiAgICBSVUJZOiAncnVieScsXG5cbiAgICBTOiAncycsXG4gICAgU0NSSVBUOiAnc2NyaXB0JyxcbiAgICBTRUNUSU9OOiAnc2VjdGlvbicsXG4gICAgU0VMRUNUOiAnc2VsZWN0JyxcbiAgICBTT1VSQ0U6ICdzb3VyY2UnLFxuICAgIFNNQUxMOiAnc21hbGwnLFxuICAgIFNQQU46ICdzcGFuJyxcbiAgICBTVFJJS0U6ICdzdHJpa2UnLFxuICAgIFNUUk9ORzogJ3N0cm9uZycsXG4gICAgU1RZTEU6ICdzdHlsZScsXG4gICAgU1VCOiAnc3ViJyxcbiAgICBTVU1NQVJZOiAnc3VtbWFyeScsXG4gICAgU1VQOiAnc3VwJyxcblxuICAgIFRBQkxFOiAndGFibGUnLFxuICAgIFRCT0RZOiAndGJvZHknLFxuICAgIFRFTVBMQVRFOiAndGVtcGxhdGUnLFxuICAgIFRFWFRBUkVBOiAndGV4dGFyZWEnLFxuICAgIFRGT09UOiAndGZvb3QnLFxuICAgIFREOiAndGQnLFxuICAgIFRIOiAndGgnLFxuICAgIFRIRUFEOiAndGhlYWQnLFxuICAgIFRJVExFOiAndGl0bGUnLFxuICAgIFRSOiAndHInLFxuICAgIFRSQUNLOiAndHJhY2snLFxuICAgIFRUOiAndHQnLFxuXG4gICAgVTogJ3UnLFxuICAgIFVMOiAndWwnLFxuXG4gICAgU1ZHOiAnc3ZnJyxcblxuICAgIFZBUjogJ3ZhcicsXG5cbiAgICBXQlI6ICd3YnInLFxuXG4gICAgWE1QOiAneG1wJ1xufTtcblxudmFyIFNQRUNJQUxfRUxFTUVOVFMgPSBleHBvcnRzLlNQRUNJQUxfRUxFTUVOVFMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5BRERSRVNTXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQVBQTEVUXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQVJFQV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkFSVElDTEVdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5BU0lERV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkJBU0VdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5CQVNFRk9OVF0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkJHU09VTkRdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5CTE9DS1FVT1RFXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQk9EWV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkJSXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQlVUVE9OXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQ0FQVElPTl0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkNFTlRFUl0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkNPTF0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkNPTEdST1VQXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRERdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5ERVRBSUxTXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRElSXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRElWXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRExdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5EVF0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkVNQkVEXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRklFTERTRVRdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5GSUdDQVBUSU9OXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRklHVVJFXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRk9PVEVSXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRk9STV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkZSQU1FXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRlJBTUVTRVRdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5IMV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkgyXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSDNdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5INF0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkg1XSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSDZdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5IRUFEXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSEVBREVSXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSEdST1VQXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSFJdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5IVE1MXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSUZSQU1FXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSU1HXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSU5QVVRdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5MSV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkxJTktdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5MSVNUSU5HXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuTUFJTl0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk1BUlFVRUVdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5NRU5VXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuTUVUQV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk5BVl0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk5PRU1CRURdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5OT0ZSQU1FU10gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk5PU0NSSVBUXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuT0JKRUNUXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuT0xdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5QXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuUEFSQU1dID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5QTEFJTlRFWFRdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5QUkVdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5TQ1JJUFRdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5TRUNUSU9OXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuU0VMRUNUXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuU09VUkNFXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuU1RZTEVdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5TVU1NQVJZXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuVEFCTEVdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5UQk9EWV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlREXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuVEVNUExBVEVdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5URVhUQVJFQV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlRGT09UXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuVEhdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5USEVBRF0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlRJVExFXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuVFJdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5UUkFDS10gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlVMXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuV0JSXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuWE1QXSA9IHRydWU7XG5cblNQRUNJQUxfRUxFTUVOVFNbTlMuTUFUSE1MXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5TUEVDSUFMX0VMRU1FTlRTW05TLk1BVEhNTF1bJC5NSV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5NQVRITUxdWyQuTU9dID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuTUFUSE1MXVskLk1OXSA9IHRydWU7XG5TUEVDSUFMX0VMRU1FTlRTW05TLk1BVEhNTF1bJC5NU10gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5NQVRITUxdWyQuTVRFWFRdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuTUFUSE1MXVskLkFOTk9UQVRJT05fWE1MXSA9IHRydWU7XG5cblNQRUNJQUxfRUxFTUVOVFNbTlMuU1ZHXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5TUEVDSUFMX0VMRU1FTlRTW05TLlNWR11bJC5USVRMRV0gPSB0cnVlO1xuU1BFQ0lBTF9FTEVNRU5UU1tOUy5TVkddWyQuRk9SRUlHTl9PQkpFQ1RdID0gdHJ1ZTtcblNQRUNJQUxfRUxFTUVOVFNbTlMuU1ZHXVskLkRFU0NdID0gdHJ1ZTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEhUTUwgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbCcpO1xuXG4vL0FsaWFzZXNcbnZhciAkID0gSFRNTC5UQUdfTkFNRVMsXG4gICAgTlMgPSBIVE1MLk5BTUVTUEFDRVM7XG5cbi8vRWxlbWVudCB1dGlsc1xuXG4vL09QVElNSVpBVElPTjogSW50ZWdlciBjb21wYXJpc29ucyBhcmUgbG93LWNvc3QsIHNvIHdlIGNhbiB1c2UgdmVyeSBmYXN0IHRhZyBuYW1lIGxlbmd0aCBmaWx0ZXJzIGhlcmUuXG4vL0l0J3MgZmFzdGVyIHRoYW4gdXNpbmcgZGljdGlvbmFyeS5cbmZ1bmN0aW9uIGlzSW1wbGllZEVuZFRhZ1JlcXVpcmVkKHRuKSB7XG4gICAgc3dpdGNoICh0bi5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlA7XG5cbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlJCIHx8IHRuID09PSAkLlJQIHx8IHRuID09PSAkLlJUIHx8IHRuID09PSAkLkREIHx8IHRuID09PSAkLkRUIHx8IHRuID09PSAkLkxJO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5SVEM7XG5cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLk9QVElPTjtcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuT1BUR1JPVVAgfHwgdG4gPT09ICQuTUVOVUlURU07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1Njb3BpbmdFbGVtZW50KHRuLCBucykge1xuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USClcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLkhUTUw7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLk1JIHx8IHRuID09PSAkLk1PIHx8IHRuID09PSAkLk1OIHx8IHRuID09PSAkLk1TKVxuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuTUFUSE1MO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuSFRNTClcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLkhUTUw7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkRFU0MpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5zID09PSBOUy5TVkc7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5UQUJMRSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLkhUTUw7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLk1URVhUKVxuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuTUFUSE1MO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5USVRMRSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLlNWRztcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuICh0biA9PT0gJC5BUFBMRVQgfHwgdG4gPT09ICQuT0JKRUNUKSAmJiBucyA9PT0gTlMuSFRNTDtcblxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gKHRuID09PSAkLkNBUFRJT04gfHwgdG4gPT09ICQuTUFSUVVFRSkgJiYgbnMgPT09IE5TLkhUTUw7XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlRFTVBMQVRFICYmIG5zID09PSBOUy5IVE1MO1xuXG4gICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuRk9SRUlHTl9PQkpFQ1QgJiYgbnMgPT09IE5TLlNWRztcblxuICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLkFOTk9UQVRJT05fWE1MICYmIG5zID09PSBOUy5NQVRITUw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG4vL1N0YWNrIG9mIG9wZW4gZWxlbWVudHNcbnZhciBPcGVuRWxlbWVudFN0YWNrID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9jdW1lbnQsIHRyZWVBZGFwdGVyKSB7XG4gICAgdGhpcy5zdGFja1RvcCA9IC0xO1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnQgPSBkb2N1bWVudDtcbiAgICB0aGlzLmN1cnJlbnRUYWdOYW1lID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnRUbXBsQ29udGVudCA9IG51bGw7XG4gICAgdGhpcy50bXBsQ291bnQgPSAwO1xuICAgIHRoaXMudHJlZUFkYXB0ZXIgPSB0cmVlQWRhcHRlcjtcbn07XG5cbi8vSW5kZXggb2YgZWxlbWVudFxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuX2luZGV4T2YgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHZhciBpZHggPSAtMTtcblxuICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAodGhpcy5pdGVtc1tpXSA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgaWR4ID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG59O1xuXG4vL1VwZGF0ZSBjdXJyZW50IGVsZW1lbnRcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLl9pc0luVGVtcGxhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRhZ05hbWUgPT09ICQuVEVNUExBVEUgJiYgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSA9PT0gTlMuSFRNTDtcbn07XG5cbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLl91cGRhdGVDdXJyZW50RWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLml0ZW1zW3RoaXMuc3RhY2tUb3BdO1xuICAgIHRoaXMuY3VycmVudFRhZ05hbWUgPSB0aGlzLmN1cnJlbnQgJiYgdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuY3VycmVudCk7XG5cbiAgICB0aGlzLmN1cnJlbnRUbXBsQ29udGVudCA9IHRoaXMuX2lzSW5UZW1wbGF0ZSgpID8gdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQodGhpcy5jdXJyZW50KSA6IG51bGw7XG59O1xuXG4vL011dGF0aW9uc1xuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgdGhpcy5pdGVtc1srK3RoaXMuc3RhY2tUb3BdID0gZWxlbWVudDtcbiAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuXG4gICAgaWYgKHRoaXMuX2lzSW5UZW1wbGF0ZSgpKVxuICAgICAgICB0aGlzLnRtcGxDb3VudCsrO1xuXG59O1xuXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zdGFja1RvcC0tO1xuXG4gICAgaWYgKHRoaXMudG1wbENvdW50ID4gMCAmJiB0aGlzLl9pc0luVGVtcGxhdGUoKSlcbiAgICAgICAgdGhpcy50bXBsQ291bnQtLTtcblxuICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG59O1xuXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24gKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQpIHtcbiAgICB2YXIgaWR4ID0gdGhpcy5faW5kZXhPZihvbGRFbGVtZW50KTtcblxuICAgIHRoaXMuaXRlbXNbaWR4XSA9IG5ld0VsZW1lbnQ7XG5cbiAgICBpZiAoaWR4ID09PSB0aGlzLnN0YWNrVG9wKVxuICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xufTtcblxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXIgPSBmdW5jdGlvbiAocmVmZXJlbmNlRWxlbWVudCwgbmV3RWxlbWVudCkge1xuICAgIHZhciBpbnNlcnRpb25JZHggPSB0aGlzLl9pbmRleE9mKHJlZmVyZW5jZUVsZW1lbnQpICsgMTtcblxuICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3RWxlbWVudCk7XG5cbiAgICBpZiAoaW5zZXJ0aW9uSWR4ID09PSArK3RoaXMuc3RhY2tUb3ApXG4gICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG59O1xuXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5wb3BVbnRpbFRhZ05hbWVQb3BwZWQgPSBmdW5jdGlvbiAodGFnTmFtZSkge1xuICAgIHdoaWxlICh0aGlzLnN0YWNrVG9wID4gLTEpIHtcbiAgICAgICAgdmFyIHRuID0gdGhpcy5jdXJyZW50VGFnTmFtZSxcbiAgICAgICAgICAgIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KTtcblxuICAgICAgICB0aGlzLnBvcCgpO1xuXG4gICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gTlMuSFRNTClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbn07XG5cbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLnBvcFVudGlsRWxlbWVudFBvcHBlZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPiAtMSkge1xuICAgICAgICB2YXIgcG9wcGVkRWxlbWVudCA9IHRoaXMuY3VycmVudDtcblxuICAgICAgICB0aGlzLnBvcCgpO1xuXG4gICAgICAgIGlmIChwb3BwZWRFbGVtZW50ID09PSBlbGVtZW50KVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufTtcblxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUucG9wVW50aWxOdW1iZXJlZEhlYWRlclBvcHBlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+IC0xKSB7XG4gICAgICAgIHZhciB0biA9IHRoaXMuY3VycmVudFRhZ05hbWUsXG4gICAgICAgICAgICBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCk7XG5cbiAgICAgICAgdGhpcy5wb3AoKTtcblxuICAgICAgICBpZiAodG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDYgJiYgbnMgPT09IE5TLkhUTUwpXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG59O1xuXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5wb3BVbnRpbFRhYmxlQ2VsbFBvcHBlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+IC0xKSB7XG4gICAgICAgIHZhciB0biA9IHRoaXMuY3VycmVudFRhZ05hbWUsXG4gICAgICAgICAgICBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCk7XG5cbiAgICAgICAgdGhpcy5wb3AoKTtcblxuICAgICAgICBpZiAodG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEggJiYgbnMgPT09IE5TLkhUTUwpXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG59O1xuXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5wb3BBbGxVcFRvSHRtbEVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy9OT1RFOiBoZXJlIHdlIGFzc3VtZSB0aGF0IHJvb3QgPGh0bWw+IGVsZW1lbnQgaXMgYWx3YXlzIGZpcnN0IGluIHRoZSBvcGVuIGVsZW1lbnQgc3RhY2ssIHNvXG4gICAgLy93ZSBwZXJmb3JtIHRoaXMgZmFzdCBzdGFjayBjbGVhbiB1cC5cbiAgICB0aGlzLnN0YWNrVG9wID0gMDtcbiAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xufTtcblxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgd2hpbGUgKHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEFCTEUgJiZcbiAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5URU1QTEFURSAmJlxuICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLkhUTUwgfHxcbiAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSAhPT0gTlMuSFRNTClcbiAgICAgICAgdGhpcy5wb3AoKTtcbn07XG5cbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB3aGlsZSAodGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5UQk9EWSAmJlxuICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRGT09UICYmXG4gICAgICAgICAgIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEhFQUQgJiZcbiAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5URU1QTEFURSAmJlxuICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLkhUTUwgfHxcbiAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSAhPT0gTlMuSFRNTClcbiAgICAgICAgdGhpcy5wb3AoKTtcbn07XG5cbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgIHdoaWxlICh0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRSICYmXG4gICAgICAgICAgIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEVNUExBVEUgJiZcbiAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5IVE1MIHx8XG4gICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCkgIT09IE5TLkhUTUwpXG4gICAgICAgIHRoaXMucG9wKCk7XG59O1xuXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAodGhpcy5pdGVtc1tpXSA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB0aGlzLnN0YWNrVG9wLS07XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vL1NlYXJjaFxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUudHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy9Qcm9wZXJseSBuZXN0ZWQgPGJvZHk+IGVsZW1lbnQgKHNob3VsZCBiZSBzZWNvbmQgZWxlbWVudCBpbiBzdGFjaykuXG4gICAgdmFyIGVsZW1lbnQgPSB0aGlzLml0ZW1zWzFdO1xuXG4gICAgcmV0dXJuIGVsZW1lbnQgJiYgdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpID09PSAkLkJPRFkgPyBlbGVtZW50IDogbnVsbDtcbn07XG5cbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy5faW5kZXhPZihlbGVtZW50KSA+IC0xO1xufTtcblxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuZ2V0Q29tbW9uQW5jZXN0b3IgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHZhciBlbGVtZW50SWR4ID0gdGhpcy5faW5kZXhPZihlbGVtZW50KTtcblxuICAgIHJldHVybiAtLWVsZW1lbnRJZHggPj0gMCA/IHRoaXMuaXRlbXNbZWxlbWVudElkeF0gOiBudWxsO1xufTtcblxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuaXNSb290SHRtbEVsZW1lbnRDdXJyZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrVG9wID09PSAwICYmIHRoaXMuY3VycmVudFRhZ05hbWUgPT09ICQuSFRNTDtcbn07XG5cbi8vRWxlbWVudCBpbiBzY29wZVxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuaGFzSW5TY29wZSA9IGZ1bmN0aW9uICh0YWdOYW1lKSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKSxcbiAgICAgICAgICAgIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lICYmIG5zID09PSBOUy5IVE1MKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgaWYgKGlzU2NvcGluZ0VsZW1lbnQodG4sIG5zKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmhhc051bWJlcmVkSGVhZGVySW5TY29wZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdmFyIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pLFxuICAgICAgICAgICAgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICBpZiAoKHRuID09PSAkLkgxIHx8IHRuID09PSAkLkgyIHx8IHRuID09PSAkLkgzIHx8IHRuID09PSAkLkg0IHx8IHRuID09PSAkLkg1IHx8IHRuID09PSAkLkg2KSAmJiBucyA9PT0gTlMuSFRNTClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGlmIChpc1Njb3BpbmdFbGVtZW50KHRuLCBucykpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG59O1xuXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5oYXNJbkxpc3RJdGVtU2NvcGUgPSBmdW5jdGlvbiAodGFnTmFtZSkge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSksXG4gICAgICAgICAgICBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuXG4gICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gTlMuSFRNTClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGlmICgodG4gPT09ICQuVUwgfHwgdG4gPT09ICQuT0wpICYmIG5zID09PSBOUy5IVE1MIHx8IGlzU2NvcGluZ0VsZW1lbnQodG4sIG5zKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmhhc0luQnV0dG9uU2NvcGUgPSBmdW5jdGlvbiAodGFnTmFtZSkge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSksXG4gICAgICAgICAgICBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuXG4gICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gTlMuSFRNTClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGlmICh0biA9PT0gJC5CVVRUT04gJiYgbnMgPT09IE5TLkhUTUwgfHwgaXNTY29waW5nRWxlbWVudCh0biwgbnMpKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xufTtcblxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuaGFzSW5UYWJsZVNjb3BlID0gZnVuY3Rpb24gKHRhZ05hbWUpIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdmFyIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pLFxuICAgICAgICAgICAgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICBpZiAobnMgIT09IE5TLkhUTUwpXG4gICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUgfHwgdG4gPT09ICQuVEVNUExBVEUgfHwgdG4gPT09ICQuSFRNTClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmhhc1RhYmxlQm9keUNvbnRleHRJblRhYmxlU2NvcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKSxcbiAgICAgICAgICAgIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgaWYgKG5zICE9PSBOUy5IVE1MKVxuICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgaWYgKHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRIRUFEIHx8IHRuID09PSAkLlRGT09UKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLkhUTUwpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG59O1xuXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5oYXNJblNlbGVjdFNjb3BlID0gZnVuY3Rpb24gKHRhZ05hbWUpIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdmFyIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pLFxuICAgICAgICAgICAgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICBpZiAobnMgIT09IE5TLkhUTUwpXG4gICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBpZiAodG4gIT09ICQuT1BUSU9OICYmIHRuICE9PSAkLk9QVEdST1VQKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xufTtcblxuLy9JbXBsaWVkIGVuZCB0YWdzXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzID0gZnVuY3Rpb24gKCkge1xuICAgIHdoaWxlIChpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCh0aGlzLmN1cnJlbnRUYWdOYW1lKSlcbiAgICAgICAgdGhpcy5wb3AoKTtcbn07XG5cbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uID0gZnVuY3Rpb24gKGV4Y2x1c2lvblRhZ05hbWUpIHtcbiAgICB3aGlsZSAoaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWQodGhpcy5jdXJyZW50VGFnTmFtZSkgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gZXhjbHVzaW9uVGFnTmFtZSlcbiAgICAgICAgdGhpcy5wb3AoKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vQ29uc3RcbnZhciBOT0FIX0FSS19DQVBBQ0lUWSA9IDM7XG5cbi8vTGlzdCBvZiBmb3JtYXR0aW5nIGVsZW1lbnRzXG52YXIgRm9ybWF0dGluZ0VsZW1lbnRMaXN0ID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodHJlZUFkYXB0ZXIpIHtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5lbnRyaWVzID0gW107XG4gICAgdGhpcy50cmVlQWRhcHRlciA9IHRyZWVBZGFwdGVyO1xuICAgIHRoaXMuYm9va21hcmsgPSBudWxsO1xufTtcblxuLy9FbnRyeSB0eXBlc1xuRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSA9ICdNQVJLRVJfRU5UUlknO1xuRm9ybWF0dGluZ0VsZW1lbnRMaXN0LkVMRU1FTlRfRU5UUlkgPSAnRUxFTUVOVF9FTlRSWSc7XG5cbi8vTm9haCBBcmsncyBjb25kaXRpb25cbi8vT1BUSU1JWkFUSU9OOiBhdCBmaXJzdCB3ZSB0cnkgdG8gZmluZCBwb3NzaWJsZSBjYW5kaWRhdGVzIGZvciBleGNsdXNpb24gdXNpbmdcbi8vbGlnaHR3ZWlnaHQgaGV1cmlzdGljcyB3aXRob3V0IHRob3JvdWdoIGF0dHJpYnV0ZXMgY2hlY2suXG5Gb3JtYXR0aW5nRWxlbWVudExpc3QucHJvdG90eXBlLl9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyA9IGZ1bmN0aW9uIChuZXdFbGVtZW50KSB7XG4gICAgdmFyIGNhbmRpZGF0ZXMgPSBbXTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA+PSBOT0FIX0FSS19DQVBBQ0lUWSkge1xuICAgICAgICB2YXIgbmVBdHRyc0xlbmd0aCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QobmV3RWxlbWVudCkubGVuZ3RoLFxuICAgICAgICAgICAgbmVUYWdOYW1lID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG5ld0VsZW1lbnQpLFxuICAgICAgICAgICAgbmVOYW1lc3BhY2VVUkkgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShuZXdFbGVtZW50KTtcblxuICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnRyaWVzW2ldO1xuXG4gICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSlcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBlbnRyeS5lbGVtZW50LFxuICAgICAgICAgICAgICAgIGVsZW1lbnRBdHRycyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QoZWxlbWVudCksXG4gICAgICAgICAgICAgICAgaXNDYW5kaWRhdGUgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IG5lVGFnTmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCkgPT09IG5lTmFtZXNwYWNlVVJJICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50QXR0cnMubGVuZ3RoID09PSBuZUF0dHJzTGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAoaXNDYW5kaWRhdGUpXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKHtpZHg6IGksIGF0dHJzOiBlbGVtZW50QXR0cnN9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjYW5kaWRhdGVzLmxlbmd0aCA8IE5PQUhfQVJLX0NBUEFDSVRZID8gW10gOiBjYW5kaWRhdGVzO1xufTtcblxuRm9ybWF0dGluZ0VsZW1lbnRMaXN0LnByb3RvdHlwZS5fZW5zdXJlTm9haEFya0NvbmRpdGlvbiA9IGZ1bmN0aW9uIChuZXdFbGVtZW50KSB7XG4gICAgdmFyIGNhbmRpZGF0ZXMgPSB0aGlzLl9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyhuZXdFbGVtZW50KSxcbiAgICAgICAgY0xlbmd0aCA9IGNhbmRpZGF0ZXMubGVuZ3RoO1xuXG4gICAgaWYgKGNMZW5ndGgpIHtcbiAgICAgICAgdmFyIG5lQXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5ld0VsZW1lbnQpLFxuICAgICAgICAgICAgbmVBdHRyc0xlbmd0aCA9IG5lQXR0cnMubGVuZ3RoLFxuICAgICAgICAgICAgbmVBdHRyc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgLy9OT1RFOiBidWlsZCBhdHRycyBtYXAgZm9yIHRoZSBuZXcgZWxlbWVudCBzbyB3ZSBjYW4gcGVyZm9ybSBmYXN0IGxvb2t1cHNcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZUF0dHJzTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBuZUF0dHIgPSBuZUF0dHJzW2ldO1xuXG4gICAgICAgICAgICBuZUF0dHJzTWFwW25lQXR0ci5uYW1lXSA9IG5lQXR0ci52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZUF0dHJzTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY0xlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNBdHRyID0gY2FuZGlkYXRlc1tqXS5hdHRyc1tpXTtcblxuICAgICAgICAgICAgICAgIGlmIChuZUF0dHJzTWFwW2NBdHRyLm5hbWVdICE9PSBjQXR0ci52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShqLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgY0xlbmd0aC0tO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzLmxlbmd0aCA8IE5PQUhfQVJLX0NBUEFDSVRZKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IHJlbW92ZSBib3R0b21tb3N0IGNhbmRpZGF0ZXMgdW50aWwgTm9haCdzIEFyayBjb25kaXRpb24gd2lsbCBub3QgYmUgbWV0XG4gICAgICAgIGZvciAoaSA9IGNMZW5ndGggLSAxOyBpID49IE5PQUhfQVJLX0NBUEFDSVRZIC0gMTsgaS0tKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc3BsaWNlKGNhbmRpZGF0ZXNbaV0uaWR4LCAxKTtcbiAgICAgICAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vL011dGF0aW9uc1xuRm9ybWF0dGluZ0VsZW1lbnRMaXN0LnByb3RvdHlwZS5pbnNlcnRNYXJrZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe3R5cGU6IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5NQVJLRVJfRU5UUll9KTtcbiAgICB0aGlzLmxlbmd0aCsrO1xufTtcblxuRm9ybWF0dGluZ0VsZW1lbnRMaXN0LnByb3RvdHlwZS5wdXNoRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCB0b2tlbikge1xuICAgIHRoaXMuX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24oZWxlbWVudCk7XG5cbiAgICB0aGlzLmVudHJpZXMucHVzaCh7XG4gICAgICAgIHR5cGU6IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5FTEVNRU5UX0VOVFJZLFxuICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICB0b2tlbjogdG9rZW5cbiAgICB9KTtcblxuICAgIHRoaXMubGVuZ3RoKys7XG59O1xuXG5Gb3JtYXR0aW5nRWxlbWVudExpc3QucHJvdG90eXBlLmluc2VydEVsZW1lbnRBZnRlckJvb2ttYXJrID0gZnVuY3Rpb24gKGVsZW1lbnQsIHRva2VuKSB7XG4gICAgdmFyIGJvb2ttYXJrSWR4ID0gdGhpcy5sZW5ndGggLSAxO1xuXG4gICAgZm9yICg7IGJvb2ttYXJrSWR4ID49IDA7IGJvb2ttYXJrSWR4LS0pIHtcbiAgICAgICAgaWYgKHRoaXMuZW50cmllc1tib29rbWFya0lkeF0gPT09IHRoaXMuYm9va21hcmspXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLmVudHJpZXMuc3BsaWNlKGJvb2ttYXJrSWR4ICsgMSwgMCwge1xuICAgICAgICB0eXBlOiBGb3JtYXR0aW5nRWxlbWVudExpc3QuRUxFTUVOVF9FTlRSWSxcbiAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgdG9rZW46IHRva2VuXG4gICAgfSk7XG5cbiAgICB0aGlzLmxlbmd0aCsrO1xufTtcblxuRm9ybWF0dGluZ0VsZW1lbnRMaXN0LnByb3RvdHlwZS5yZW1vdmVFbnRyeSA9IGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmICh0aGlzLmVudHJpZXNbaV0gPT09IGVudHJ5KSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuRm9ybWF0dGluZ0VsZW1lbnRMaXN0LnByb3RvdHlwZS5jbGVhclRvTGFzdE1hcmtlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnRyaWVzLnBvcCgpO1xuXG4gICAgICAgIHRoaXMubGVuZ3RoLS07XG5cbiAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5NQVJLRVJfRU5UUlkpXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG59O1xuXG4vL1NlYXJjaFxuRm9ybWF0dGluZ0VsZW1lbnRMaXN0LnByb3RvdHlwZS5nZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUgPSBmdW5jdGlvbiAodGFnTmFtZSkge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMuZW50cmllc1tpXTtcblxuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZW50cnkuZWxlbWVudCkgPT09IHRhZ05hbWUpXG4gICAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5Gb3JtYXR0aW5nRWxlbWVudExpc3QucHJvdG90eXBlLmdldEVsZW1lbnRFbnRyeSA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnRyaWVzW2ldO1xuXG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSBGb3JtYXR0aW5nRWxlbWVudExpc3QuRUxFTUVOVF9FTlRSWSAmJiBlbnRyeS5lbGVtZW50ID09PSBlbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIE1peGluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaG9zdCkge1xuICAgIHZhciBvcmlnaW5hbE1ldGhvZHMgPSB7fSxcbiAgICAgICAgb3ZlcnJpZGRlbk1ldGhvZHMgPSB0aGlzLl9nZXRPdmVycmlkZGVuTWV0aG9kcyh0aGlzLCBvcmlnaW5hbE1ldGhvZHMpO1xuXG4gICAgT2JqZWN0LmtleXMob3ZlcnJpZGRlbk1ldGhvZHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAodHlwZW9mIG92ZXJyaWRkZW5NZXRob2RzW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kc1trZXldID0gaG9zdFtrZXldO1xuICAgICAgICAgICAgaG9zdFtrZXldID0gb3ZlcnJpZGRlbk1ldGhvZHNba2V5XTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuTWl4aW4ucHJvdG90eXBlLl9nZXRPdmVycmlkZGVuTWV0aG9kcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuIiwiZXhwb3J0IGRlZmF1bHQgdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6XG4gICAgICAgICAgICB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOlxuICAgICAgICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9XG4iLCJcbnZhciBsb29rdXAgPSBbXVxudmFyIHJldkxvb2t1cCA9IFtdXG52YXIgQXJyID0gdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnID8gVWludDhBcnJheSA6IEFycmF5XG52YXIgaW5pdGVkID0gZmFsc2U7XG5mdW5jdGlvbiBpbml0ICgpIHtcbiAgaW5pdGVkID0gdHJ1ZTtcbiAgdmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNvZGUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICBsb29rdXBbaV0gPSBjb2RlW2ldXG4gICAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG4gIH1cblxuICByZXZMb29rdXBbJy0nLmNoYXJDb2RlQXQoMCldID0gNjJcbiAgcmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIGlmICghaW5pdGVkKSB7XG4gICAgaW5pdCgpO1xuICB9XG4gIHZhciBpLCBqLCBsLCB0bXAsIHBsYWNlSG9sZGVycywgYXJyXG4gIHZhciBsZW4gPSBiNjQubGVuZ3RoXG5cbiAgaWYgKGxlbiAlIDQgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0JylcbiAgfVxuXG4gIC8vIHRoZSBudW1iZXIgb2YgZXF1YWwgc2lnbnMgKHBsYWNlIGhvbGRlcnMpXG4gIC8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXRcbiAgLy8gcmVwcmVzZW50IG9uZSBieXRlXG4gIC8vIGlmIHRoZXJlIGlzIG9ubHkgb25lLCB0aGVuIHRoZSB0aHJlZSBjaGFyYWN0ZXJzIGJlZm9yZSBpdCByZXByZXNlbnQgMiBieXRlc1xuICAvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlXG4gIHBsYWNlSG9sZGVycyA9IGI2NFtsZW4gLSAyXSA9PT0gJz0nID8gMiA6IGI2NFtsZW4gLSAxXSA9PT0gJz0nID8gMSA6IDBcblxuICAvLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbiAgYXJyID0gbmV3IEFycihsZW4gKiAzIC8gNCAtIHBsYWNlSG9sZGVycylcblxuICAvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzXG4gIGwgPSBwbGFjZUhvbGRlcnMgPiAwID8gbGVuIC0gNCA6IGxlblxuXG4gIHZhciBMID0gMFxuXG4gIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbDsgaSArPSA0LCBqICs9IDMpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHwgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnMgPT09IDIpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAyKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVycyA9PT0gMSkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCA0KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArIGxvb2t1cFtudW0gPj4gMTIgJiAweDNGXSArIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICsgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9ICh1aW50OFtpXSA8PCAxNikgKyAodWludDhbaSArIDFdIDw8IDgpICsgKHVpbnQ4W2kgKyAyXSlcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tQnl0ZUFycmF5ICh1aW50OCkge1xuICBpZiAoIWluaXRlZCkge1xuICAgIGluaXQoKTtcbiAgfVxuICB2YXIgdG1wXG4gIHZhciBsZW4gPSB1aW50OC5sZW5ndGhcbiAgdmFyIGV4dHJhQnl0ZXMgPSBsZW4gJSAzIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG4gIHZhciBvdXRwdXQgPSAnJ1xuICB2YXIgcGFydHMgPSBbXVxuICB2YXIgbWF4Q2h1bmtMZW5ndGggPSAxNjM4MyAvLyBtdXN0IGJlIG11bHRpcGxlIG9mIDNcblxuICAvLyBnbyB0aHJvdWdoIHRoZSBhcnJheSBldmVyeSB0aHJlZSBieXRlcywgd2UnbGwgZGVhbCB3aXRoIHRyYWlsaW5nIHN0dWZmIGxhdGVyXG4gIGZvciAodmFyIGkgPSAwLCBsZW4yID0gbGVuIC0gZXh0cmFCeXRlczsgaSA8IGxlbjI7IGkgKz0gbWF4Q2h1bmtMZW5ndGgpIHtcbiAgICBwYXJ0cy5wdXNoKGVuY29kZUNodW5rKHVpbnQ4LCBpLCAoaSArIG1heENodW5rTGVuZ3RoKSA+IGxlbjIgPyBsZW4yIDogKGkgKyBtYXhDaHVua0xlbmd0aCkpKVxuICB9XG5cbiAgLy8gcGFkIHRoZSBlbmQgd2l0aCB6ZXJvcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgZm9yZ2V0IHRoZSBleHRyYSBieXRlc1xuICBpZiAoZXh0cmFCeXRlcyA9PT0gMSkge1xuICAgIHRtcCA9IHVpbnQ4W2xlbiAtIDFdXG4gICAgb3V0cHV0ICs9IGxvb2t1cFt0bXAgPj4gMl1cbiAgICBvdXRwdXQgKz0gbG9va3VwWyh0bXAgPDwgNCkgJiAweDNGXVxuICAgIG91dHB1dCArPSAnPT0nXG4gIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMikge1xuICAgIHRtcCA9ICh1aW50OFtsZW4gLSAyXSA8PCA4KSArICh1aW50OFtsZW4gLSAxXSlcbiAgICBvdXRwdXQgKz0gbG9va3VwW3RtcCA+PiAxMF1cbiAgICBvdXRwdXQgKz0gbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9ICc9J1xuICB9XG5cbiAgcGFydHMucHVzaChvdXRwdXQpXG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJycpXG59XG4iLCJcbmV4cG9ydCBmdW5jdGlvbiByZWFkIChidWZmZXIsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtXG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IGUgKiAyNTYgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBtID0gZSAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBlID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBtTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IG0gPSBtICogMjU2ICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgaWYgKGUgPT09IDApIHtcbiAgICBlID0gMSAtIGVCaWFzXG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogKChzID8gLTEgOiAxKSAqIEluZmluaXR5KVxuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgTWF0aC5wb3coMiwgbUxlbilcbiAgICBlID0gZSAtIGVCaWFzXG4gIH1cbiAgcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBNYXRoLnBvdygyLCBlIC0gbUxlbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbSwgY1xuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKHZhbHVlICogYyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSBlICsgZUJpYXNcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHZhbHVlICogTWF0aC5wb3coMiwgZUJpYXMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gMFxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBtTGVuID49IDg7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IG0gJiAweGZmLCBpICs9IGQsIG0gLz0gMjU2LCBtTGVuIC09IDgpIHt9XG5cbiAgZSA9IChlIDw8IG1MZW4pIHwgbVxuICBlTGVuICs9IG1MZW5cbiAgZm9yICg7IGVMZW4gPiAwOyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBlICYgMHhmZiwgaSArPSBkLCBlIC89IDI1NiwgZUxlbiAtPSA4KSB7fVxuXG4gIGJ1ZmZlcltvZmZzZXQgKyBpIC0gZF0gfD0gcyAqIDEyOFxufVxuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbmV4cG9ydCBkZWZhdWx0IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuXG5pbXBvcnQgKiBhcyBiYXNlNjQgZnJvbSAnLi9iYXNlNjQnXG5pbXBvcnQgKiBhcyBpZWVlNzU0IGZyb20gJy4vaWVlZTc1NCdcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheSdcblxuZXhwb3J0IHZhciBJTlNQRUNUX01BWF9CWVRFUyA9IDUwXG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHJ1ZVxuXG4vKlxuICogRXhwb3J0IGtNYXhMZW5ndGggYWZ0ZXIgdHlwZWQgYXJyYXkgc3VwcG9ydCBpcyBkZXRlcm1pbmVkLlxuICovXG52YXIgX2tNYXhMZW5ndGggPSBrTWF4TGVuZ3RoKClcbmV4cG9ydCB7X2tNYXhMZW5ndGggYXMga01heExlbmd0aH07XG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIHJldHVybiB0cnVlO1xuICAvLyByb2xsdXAgaXNzdWVzXG4gIC8vIHRyeSB7XG4gIC8vICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KDEpXG4gIC8vICAgYXJyLl9fcHJvdG9fXyA9IHtcbiAgLy8gICAgIF9fcHJvdG9fXzogVWludDhBcnJheS5wcm90b3R5cGUsXG4gIC8vICAgICBmb286IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyIH1cbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWRcbiAgLy8gICAgICAgdHlwZW9mIGFyci5zdWJhcnJheSA9PT0gJ2Z1bmN0aW9uJyAmJiAvLyBjaHJvbWUgOS0xMCBsYWNrIGBzdWJhcnJheWBcbiAgLy8gICAgICAgYXJyLnN1YmFycmF5KDEsIDEpLmJ5dGVMZW5ndGggPT09IDAgLy8gaWUxMCBoYXMgYnJva2VuIGBzdWJhcnJheWBcbiAgLy8gfSBjYXRjaCAoZSkge1xuICAvLyAgIHJldHVybiBmYWxzZVxuICAvLyB9XG59XG5cbmZ1bmN0aW9uIGtNYXhMZW5ndGggKCkge1xuICByZXR1cm4gQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgICA/IDB4N2ZmZmZmZmZcbiAgICA6IDB4M2ZmZmZmZmZcbn1cblxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyICh0aGF0LCBsZW5ndGgpIHtcbiAgaWYgKGtNYXhMZW5ndGgoKSA8IGxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCcpXG4gIH1cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcbiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgaWYgKHRoYXQgPT09IG51bGwpIHtcbiAgICAgIHRoYXQgPSBuZXcgQnVmZmVyKGxlbmd0aClcbiAgICB9XG4gICAgdGhhdC5sZW5ndGggPSBsZW5ndGhcbiAgfVxuXG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIEJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiAhKHRoaXMgaW5zdGFuY2VvZiBCdWZmZXIpKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBhbGxvY1Vuc2FmZSh0aGlzLCBhcmcpXG4gIH1cbiAgcmV0dXJuIGZyb20odGhpcywgYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG4vLyBUT0RPOiBMZWdhY3ksIG5vdCBuZWVkZWQgYW55bW9yZS4gUmVtb3ZlIGluIG5leHQgbWFqb3IgdmVyc2lvbi5cbkJ1ZmZlci5fYXVnbWVudCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgYXJyLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiBmcm9tICh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuICB9XG5cbiAgcmV0dXJuIGZyb21PYmplY3QodGhhdCwgdmFsdWUpXG59XG5cbi8qKlxuICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQnVmZmVyKGFyZywgZW5jb2RpbmcpIGJ1dCB0aHJvd3MgYSBUeXBlRXJyb3JcbiAqIGlmIHZhbHVlIGlzIGEgbnVtYmVyLlxuICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKVxuICogQnVmZmVyLmZyb20oYXJyYXkpXG4gKiBCdWZmZXIuZnJvbShidWZmZXIpXG4gKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAqKi9cbkJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGZyb20obnVsbCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gIEJ1ZmZlci5wcm90b3R5cGUuX19wcm90b19fID0gVWludDhBcnJheS5wcm90b3R5cGVcbiAgQnVmZmVyLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXlcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC5zcGVjaWVzICYmXG4gICAgICBCdWZmZXJbU3ltYm9sLnNwZWNpZXNdID09PSBCdWZmZXIpIHtcbiAgICAvLyBGaXggc3ViYXJyYXkoKSBpbiBFUzIwMTYuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC85N1xuICAgIC8vIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIsIFN5bWJvbC5zcGVjaWVzLCB7XG4gICAgLy8gICB2YWx1ZTogbnVsbCxcbiAgICAvLyAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIC8vIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0U2l6ZSAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH0gZWxzZSBpZiAoc2l6ZSA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFsbG9jICh0aGF0LCBzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIGlmIChzaXplIDw9IDApIHtcbiAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpXG4gIH1cbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9ubHkgcGF5IGF0dGVudGlvbiB0byBlbmNvZGluZyBpZiBpdCdzIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gcHJldmVudHMgYWNjaWRlbnRhbGx5IHNlbmRpbmcgaW4gYSBudW1iZXIgdGhhdCB3b3VsZFxuICAgIC8vIGJlIGludGVycHJldHRlZCBhcyBhIHN0YXJ0IG9mZnNldC5cbiAgICByZXR1cm4gdHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJ1xuICAgICAgPyBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICAgIDogY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbClcbiAgfVxuICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBmaWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogYWxsb2Moc2l6ZVssIGZpbGxbLCBlbmNvZGluZ11dKVxuICoqL1xuQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIHJldHVybiBhbGxvYyhudWxsLCBzaXplLCBmaWxsLCBlbmNvZGluZylcbn1cblxuZnVuY3Rpb24gYWxsb2NVbnNhZmUgKHRoYXQsIHNpemUpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUgPCAwID8gMCA6IGNoZWNrZWQoc2l6ZSkgfCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyArK2kpIHtcbiAgICAgIHRoYXRbaV0gPSAwXG4gICAgfVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAodGhhdCwgc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImVuY29kaW5nXCIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpXG4gIH1cblxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW5ndGgpXG5cbiAgdmFyIGFjdHVhbCA9IHRoYXQud3JpdGUoc3RyaW5nLCBlbmNvZGluZylcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIHRoYXQgPSB0aGF0LnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKHRoYXQsIGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPCAwID8gMCA6IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKHRoYXQsIGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgYXJyYXkuYnl0ZUxlbmd0aCAvLyB0aGlzIHRocm93cyBpZiBgYXJyYXlgIGlzIG5vdCBhIHZhbGlkIEFycmF5QnVmZmVyXG5cbiAgaWYgKGJ5dGVPZmZzZXQgPCAwIHx8IGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ29mZnNldFxcJyBpcyBvdXQgb2YgYm91bmRzJylcbiAgfVxuXG4gIGlmIChhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCArIChsZW5ndGggfHwgMCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnbGVuZ3RoXFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZVxuICAgIHRoYXQgPSBhcnJheVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICB0aGF0ID0gZnJvbUFycmF5TGlrZSh0aGF0LCBhcnJheSlcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0ICh0aGF0LCBvYmopIHtcbiAgaWYgKGludGVybmFsSXNCdWZmZXIob2JqKSkge1xuICAgIHZhciBsZW4gPSBjaGVja2VkKG9iai5sZW5ndGgpIHwgMFxuICAgIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuKVxuXG4gICAgaWYgKHRoYXQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhhdFxuICAgIH1cblxuICAgIG9iai5jb3B5KHRoYXQsIDAsIDAsIGxlbilcbiAgICByZXR1cm4gdGhhdFxuICB9XG5cbiAgaWYgKG9iaikge1xuICAgIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBvYmouYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHx8ICdsZW5ndGgnIGluIG9iaikge1xuICAgICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBpc25hbihvYmoubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIDApXG4gICAgICB9XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmopXG4gICAgfVxuXG4gICAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBpc0FycmF5KG9iai5kYXRhKSkge1xuICAgICAgcmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCwgb2JqLmRhdGEpXG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LicpXG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoKClgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW5cbiAgLy8gbGVuZ3RoIGlzIE5hTiAod2hpY2ggaXMgb3RoZXJ3aXNlIGNvZXJjZWQgdG8gemVyby4pXG4gIGlmIChsZW5ndGggPj0ga01heExlbmd0aCgpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemU6IDB4JyArIGtNYXhMZW5ndGgoKS50b1N0cmluZygxNikgKyAnIGJ5dGVzJylcbiAgfVxuICByZXR1cm4gbGVuZ3RoIHwgMFxufVxuXG5leHBvcnQgZnVuY3Rpb24gU2xvd0J1ZmZlciAobGVuZ3RoKSB7XG4gIGlmICgrbGVuZ3RoICE9IGxlbmd0aCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxuICAgIGxlbmd0aCA9IDBcbiAgfVxuICByZXR1cm4gQnVmZmVyLmFsbG9jKCtsZW5ndGgpXG59XG5CdWZmZXIuaXNCdWZmZXIgPSBpc0J1ZmZlcjtcbmZ1bmN0aW9uIGludGVybmFsSXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcilcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcihhKSB8fCAhaW50ZXJuYWxJc0J1ZmZlcihiKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgdmFyIHggPSBhLmxlbmd0aFxuICB2YXIgeSA9IGIubGVuZ3RoXG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV1cbiAgICAgIHkgPSBiW2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdsYXRpbjEnOlxuICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghaXNBcnJheShsaXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gIH1cblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gIH1cblxuICB2YXIgaVxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxlbmd0aCArPSBsaXN0W2ldLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIHZhciBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICB2YXIgcG9zID0gMFxuICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgIHZhciBidWYgPSBsaXN0W2ldXG4gICAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfVxuICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChpbnRlcm5hbElzQnVmZmVyKHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBzdHJpbmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICBzdHJpbmcgPSAnJyArIHN0cmluZ1xuICB9XG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGVuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgdGhhdCBcInRoaXMubGVuZ3RoIDw9IE1BWF9VSU5UMzJcIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5XG4gIC8vIHByb3BlcnR5IG9mIGEgdHlwZWQgYXJyYXkuXG5cbiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kXG4gIC8vIHRvIHRoZWlyIHVwcGVyL2xvd2VyIGJvdW5kcyBpZiB0aGUgdmFsdWUgcGFzc2VkIGlzIG91dCBvZiByYW5nZS5cbiAgLy8gdW5kZWZpbmVkIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFzIHBlciBFQ01BLTI2MiA2dGggRWRpdGlvbixcbiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkIHx8IHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIC8vIFJldHVybiBlYXJseSBpZiBzdGFydCA+IHRoaXMubGVuZ3RoLiBEb25lIGhlcmUgdG8gcHJldmVudCBwb3RlbnRpYWwgdWludDMyXG4gIC8vIGNvZXJjaW9uIGZhaWwgYmVsb3cuXG4gIGlmIChzdGFydCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKGVuZCA8PSAwKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBGb3JjZSBjb2Vyc2lvbiB0byB1aW50MzIuIFRoaXMgd2lsbCBhbHNvIGNvZXJjZSBmYWxzZXkvTmFOIHZhbHVlcyB0byAwLlxuICBlbmQgPj4+PSAwXG4gIHN0YXJ0ID4+Pj0gMFxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGUgcHJvcGVydHkgaXMgdXNlZCBieSBgQnVmZmVyLmlzQnVmZmVyYCBhbmQgYGlzLWJ1ZmZlcmAgKGluIFNhZmFyaSA1LTcpIHRvIGRldGVjdFxuLy8gQnVmZmVyIGluc3RhbmNlcy5cbkJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyID0gdHJ1ZVxuXG5mdW5jdGlvbiBzd2FwIChiLCBuLCBtKSB7XG4gIHZhciBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAzKVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyAyKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDY0ID0gZnVuY3Rpb24gc3dhcDY0ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIWludGVybmFsSXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICBpZiAodGhpcyA9PT0gYikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKHRoaXMsIGIpID09PSAwXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICB2YXIgc3RyID0gJydcbiAgdmFyIG1heCA9IElOU1BFQ1RfTUFYX0JZVEVTXG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLm1hdGNoKC8uezJ9L2cpLmpvaW4oJyAnKVxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgfVxuICByZXR1cm4gJzxCdWZmZXIgJyArIHN0ciArICc+J1xufVxuXG5CdWZmZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlICh0YXJnZXQsIHN0YXJ0LCBlbmQsIHRoaXNTdGFydCwgdGhpc0VuZCkge1xuICBpZiAoIWludGVybmFsSXNCdWZmZXIodGFyZ2V0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmQgPSB0YXJnZXQgPyB0YXJnZXQubGVuZ3RoIDogMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNTdGFydCA9IDBcbiAgfVxuICBpZiAodGhpc0VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc0VuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA+IHRhcmdldC5sZW5ndGggfHwgdGhpc1N0YXJ0IDwgMCB8fCB0aGlzRW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMVxuICB9XG5cbiAgc3RhcnQgPj4+PSAwXG4gIGVuZCA+Pj49IDBcbiAgdGhpc1N0YXJ0ID4+Pj0gMFxuICB0aGlzRW5kID4+Pj0gMFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwXG5cbiAgdmFyIHggPSB0aGlzRW5kIC0gdGhpc1N0YXJ0XG4gIHZhciB5ID0gZW5kIC0gc3RhcnRcbiAgdmFyIGxlbiA9IE1hdGgubWluKHgsIHkpXG5cbiAgdmFyIHRoaXNDb3B5ID0gdGhpcy5zbGljZSh0aGlzU3RhcnQsIHRoaXNFbmQpXG4gIHZhciB0YXJnZXRDb3B5ID0gdGFyZ2V0LnNsaWNlKHN0YXJ0LCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzQ29weVtpXSAhPT0gdGFyZ2V0Q29weVtpXSkge1xuICAgICAgeCA9IHRoaXNDb3B5W2ldXG4gICAgICB5ID0gdGFyZ2V0Q29weVtpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbi8vIEZpbmRzIGVpdGhlciB0aGUgZmlyc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0ID49IGBieXRlT2Zmc2V0YCxcbi8vIE9SIHRoZSBsYXN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA8PSBgYnl0ZU9mZnNldGAuXG4vL1xuLy8gQXJndW1lbnRzOlxuLy8gLSBidWZmZXIgLSBhIEJ1ZmZlciB0byBzZWFyY2hcbi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyXG4vLyAtIGJ5dGVPZmZzZXQgLSBhbiBpbmRleCBpbnRvIGBidWZmZXJgOyB3aWxsIGJlIGNsYW1wZWQgdG8gYW4gaW50MzJcbi8vIC0gZW5jb2RpbmcgLSBhbiBvcHRpb25hbCBlbmNvZGluZywgcmVsZXZhbnQgaXMgdmFsIGlzIGEgc3RyaW5nXG4vLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZlxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIC8vIEVtcHR5IGJ1ZmZlciBtZWFucyBubyBtYXRjaFxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXRcbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHtcbiAgICBieXRlT2Zmc2V0ID0gMHg3ZmZmZmZmZlxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAtMHg4MDAwMDAwMCkge1xuICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMFxuICB9XG4gIGJ5dGVPZmZzZXQgPSArYnl0ZU9mZnNldCAgLy8gQ29lcmNlIHRvIE51bWJlci5cbiAgaWYgKGlzTmFOKGJ5dGVPZmZzZXQpKSB7XG4gICAgLy8gYnl0ZU9mZnNldDogaXQgaXQncyB1bmRlZmluZWQsIG51bGwsIE5hTiwgXCJmb29cIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyXG4gICAgYnl0ZU9mZnNldCA9IGRpciA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldDogbmVnYXRpdmUgb2Zmc2V0cyBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclxuICBpZiAoYnl0ZU9mZnNldCA8IDApIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoICsgYnl0ZU9mZnNldFxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgaWYgKGRpcikgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChkaXIpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgfVxuXG4gIC8vIEZpbmFsbHksIHNlYXJjaCBlaXRoZXIgaW5kZXhPZiAoaWYgZGlyIGlzIHRydWUpIG9yIGxhc3RJbmRleE9mXG4gIGlmIChpbnRlcm5hbElzQnVmZmVyKHZhbCkpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2U6IGxvb2tpbmcgZm9yIGVtcHR5IHN0cmluZy9idWZmZXIgYWx3YXlzIGZhaWxzXG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMHhGRiAvLyBTZWFyY2ggZm9yIGEgYnl0ZSB2YWx1ZSBbMC0yNTVdXG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmXG4gICAgICAgIHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZGlyKSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIFsgdmFsIF0sIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXInKVxufVxuXG5mdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIHZhciBpbmRleFNpemUgPSAxXG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoXG4gIHZhciB2YWxMZW5ndGggPSB2YWwubGVuZ3RoXG5cbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDJcbiAgICAgIGFyckxlbmd0aCAvPSAyXG4gICAgICB2YWxMZW5ndGggLz0gMlxuICAgICAgYnl0ZU9mZnNldCAvPSAyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZCAoYnVmLCBpKSB7XG4gICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGJ1ZltpXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKVxuICAgIH1cbiAgfVxuXG4gIHZhciBpXG4gIGlmIChkaXIpIHtcbiAgICB2YXIgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsTGVuZ3RoKSByZXR1cm4gZm91bmRJbmRleCAqIGluZGV4U2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aFxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZm91bmQgPSB0cnVlXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbExlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgdHJ1ZSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSlcbn1cblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwXG4gIHZhciByZW1haW5pbmcgPSBidWYubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aClcbiAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7XG4gICAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgICB9XG4gIH1cblxuICAvLyBtdXN0IGJlIGFuIGV2ZW4gbnVtYmVyIG9mIGRpZ2l0c1xuICB2YXIgc3RyTGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAoc3RyTGVuICUgMiAhPT0gMCkgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSAqIDIsIDIpLCAxNilcbiAgICBpZiAoaXNOYU4ocGFyc2VkKSkgcmV0dXJuIGlcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGxhdGluMVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIC8vIGxlZ2FjeSB3cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aCkgLSByZW1vdmUgaW4gdjAuMTNcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQnXG4gICAgKVxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGVcbiAgICAgICAgcmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1Y3MyV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQnVmZmVyJyxcbiAgICBkYXRhOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnIgfHwgdGhpcywgMClcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PT0gMCAmJiBlbmQgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gdXRmOFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuICB2YXIgcmVzID0gW11cblxuICB2YXIgaSA9IHN0YXJ0XG4gIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgdmFyIGZpcnN0Qnl0ZSA9IGJ1ZltpXVxuICAgIHZhciBjb2RlUG9pbnQgPSBudWxsXG4gICAgdmFyIGJ5dGVzUGVyU2VxdWVuY2UgPSAoZmlyc3RCeXRlID4gMHhFRikgPyA0XG4gICAgICA6IChmaXJzdEJ5dGUgPiAweERGKSA/IDNcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpID8gMlxuICAgICAgOiAxXG5cbiAgICBpZiAoaSArIGJ5dGVzUGVyU2VxdWVuY2UgPD0gZW5kKSB7XG4gICAgICB2YXIgc2Vjb25kQnl0ZSwgdGhpcmRCeXRlLCBmb3VydGhCeXRlLCB0ZW1wQ29kZVBvaW50XG5cbiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA8IDB4ODApIHtcbiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweDFGKSA8PCAweDYgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0YpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHhDIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAodGhpcmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RkYgJiYgKHRlbXBDb2RlUG9pbnQgPCAweEQ4MDAgfHwgdGVtcENvZGVQb2ludCA+IDB4REZGRikpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgZm91cnRoQnl0ZSA9IGJ1ZltpICsgM11cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKGZvdXJ0aEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4MTIgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4QyB8ICh0aGlyZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAoZm91cnRoQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4RkZGRiAmJiB0ZW1wQ29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29kZVBvaW50ID09PSBudWxsKSB7XG4gICAgICAvLyB3ZSBkaWQgbm90IGdlbmVyYXRlIGEgdmFsaWQgY29kZVBvaW50IHNvIGluc2VydCBhXG4gICAgICAvLyByZXBsYWNlbWVudCBjaGFyIChVK0ZGRkQpIGFuZCBhZHZhbmNlIG9ubHkgMSBieXRlXG4gICAgICBjb2RlUG9pbnQgPSAweEZGRkRcbiAgICAgIGJ5dGVzUGVyU2VxdWVuY2UgPSAxXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPiAweEZGRkYpIHtcbiAgICAgIC8vIGVuY29kZSB0byB1dGYxNiAoc3Vycm9nYXRlIHBhaXIgZGFuY2UpXG4gICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMFxuICAgICAgcmVzLnB1c2goY29kZVBvaW50ID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKVxuICAgICAgY29kZVBvaW50ID0gMHhEQzAwIHwgY29kZVBvaW50ICYgMHgzRkZcbiAgICB9XG5cbiAgICByZXMucHVzaChjb2RlUG9pbnQpXG4gICAgaSArPSBieXRlc1BlclNlcXVlbmNlXG4gIH1cblxuICByZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KHJlcylcbn1cblxuLy8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjI3NDcyNzIvNjgwNzQyLCB0aGUgYnJvd3NlciB3aXRoXG4vLyB0aGUgbG93ZXN0IGxpbWl0IGlzIENocm9tZSwgd2l0aCAweDEwMDAwIGFyZ3MuXG4vLyBXZSBnbyAxIG1hZ25pdHVkZSBsZXNzLCBmb3Igc2FmZXR5XG52YXIgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDBcblxuZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5IChjb2RlUG9pbnRzKSB7XG4gIHZhciBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aFxuICBpZiAobGVuIDw9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjb2RlUG9pbnRzKSAvLyBhdm9pZCBleHRyYSBzbGljZSgpXG4gIH1cblxuICAvLyBEZWNvZGUgaW4gY2h1bmtzIHRvIGF2b2lkIFwiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIuXG4gIHZhciByZXMgPSAnJ1xuICB2YXIgaSA9IDBcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBsYXRpbjFTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoXG5cbiAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCB8fCBlbmQgPCAwIHx8IGVuZCA+IGxlbikgZW5kID0gbGVuXG5cbiAgdmFyIG91dCA9ICcnXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgb3V0ICs9IHRvSGV4KGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKVxuICB2YXIgcmVzID0gJydcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgYnl0ZXNbaSArIDFdICogMjU2KVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBzdGFydCA9IH5+c3RhcnRcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB+fmVuZFxuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCArPSBsZW5cbiAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikge1xuICAgIHN0YXJ0ID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5cbiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMFxuICB9IGVsc2UgaWYgKGVuZCA+IGxlbikge1xuICAgIGVuZCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIHZhciBuZXdCdWZcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgbmV3QnVmID0gdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKVxuICAgIG5ld0J1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsaWNlTGVuID0gZW5kIC0gc3RhcnRcbiAgICBuZXdCdWYgPSBuZXcgQnVmZmVyKHNsaWNlTGVuLCB1bmRlZmluZWQpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGljZUxlbjsgKytpKSB7XG4gICAgICBuZXdCdWZbaV0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QnVmXG59XG5cbi8qXG4gKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpc24ndCB0cnlpbmcgdG8gd3JpdGUgb3V0IG9mIGJvdW5kcy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tPZmZzZXQgKG9mZnNldCwgZXh0LCBsZW5ndGgpIHtcbiAgaWYgKChvZmZzZXQgJSAxKSAhPT0gMCB8fCBvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IGlzIG5vdCB1aW50JylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuICB9XG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXVxuICB2YXIgbXVsID0gMVxuICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDgpIHwgdGhpc1tvZmZzZXQgKyAxXVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSAqIDB4MTAwMDAwMCkgK1xuICAgICgodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICB0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRSA9IGZ1bmN0aW9uIHJlYWRJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aFxuICB2YXIgbXVsID0gMVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldXG4gIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0taV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24gcmVhZEludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKVxuICByZXR1cm4gKCgweGZmIC0gdGhpc1tvZmZzZXRdICsgMSkgKiAtMSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2QkUgPSBmdW5jdGlvbiByZWFkSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkxFID0gZnVuY3Rpb24gcmVhZEludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCAyNCkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEUgPSBmdW5jdGlvbiByZWFkRG91YmxlTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KVxufVxuXG5mdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcihidWYpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlVUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVVSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbmZ1bmN0aW9uIG9iamVjdFdyaXRlVUludDE2IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikge1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDIpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlICYgKDB4ZmYgPDwgKDggKiAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSkpKSA+Pj5cbiAgICAgIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpICogOFxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbmZ1bmN0aW9uIG9iamVjdFdyaXRlVUludDMyIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikge1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCA0KTsgaSA8IGo7ICsraSkge1xuICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSA+Pj4gKGxpdHRsZUVuZGlhbiA/IGkgOiAzIC0gaSkgKiA4KSAmIDB4ZmZcbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSAwXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSArIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4N2YsIC0weDgwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5mdW5jdGlvbiBjaGVja0lFRUU3NTQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA4LCAxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCwgLTEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlTEUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aClcbkJ1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydCkgc3RhcnQgPSAwXG4gIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5sZW5ndGgpIHRhcmdldFN0YXJ0ID0gdGFyZ2V0Lmxlbmd0aFxuICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDBcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgLy8gQ29weSAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zXG4gIGlmICh0YXJnZXRTdGFydCA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIH1cbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBvdXQgb2YgYm91bmRzJylcblxuICAvLyBBcmUgd2Ugb29iP1xuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICB2YXIgbGVuID0gZW5kIC0gc3RhcnRcbiAgdmFyIGlcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHN0YXJ0IDwgdGFyZ2V0U3RhcnQgJiYgdGFyZ2V0U3RhcnQgPCBlbmQpIHtcbiAgICAvLyBkZXNjZW5kaW5nIGNvcHkgZnJvbSBlbmRcbiAgICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH0gZWxzZSBpZiAobGVuIDwgMTAwMCB8fCAhQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBhc2NlbmRpbmcgY29weSBmcm9tIHN0YXJ0XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhciBjb2RlID0gdmFsLmNoYXJDb2RlQXQoMClcbiAgICAgIGlmIChjb2RlIDwgMjU2KSB7XG4gICAgICAgIHZhbCA9IGNvZGVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAyNTVcbiAgfVxuXG4gIC8vIEludmFsaWQgcmFuZ2VzIGFyZSBub3Qgc2V0IHRvIGEgZGVmYXVsdCwgc28gY2FuIHJhbmdlIGNoZWNrIGVhcmx5LlxuICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhcnQgPSBzdGFydCA+Pj4gMFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogZW5kID4+PiAwXG5cbiAgaWYgKCF2YWwpIHZhbCA9IDBcblxuICB2YXIgaVxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICB0aGlzW2ldID0gdmFsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IGludGVybmFsSXNCdWZmZXIodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogdXRmOFRvQnl0ZXMobmV3IEJ1ZmZlcih2YWwsIGVuY29kaW5nKS50b1N0cmluZygpKVxuICAgIHZhciBsZW4gPSBieXRlcy5sZW5ndGhcbiAgICBmb3IgKGkgPSAwOyBpIDwgZW5kIC0gc3RhcnQ7ICsraSkge1xuICAgICAgdGhpc1tpICsgc3RhcnRdID0gYnl0ZXNbaSAlIGxlbl1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXitcXC8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gc3RyaW5ndHJpbSAoc3RyKSB7XG4gIGlmIChzdHIudHJpbSkgcmV0dXJuIHN0ci50cmltKClcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIHZhciBjb2RlUG9pbnRcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIHZhciBieXRlcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIHZhciBjLCBoaSwgbG9cbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5cbmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikge1xuICByZXR1cm4gYmFzZTY0LnRvQnl0ZUFycmF5KGJhc2U2NGNsZWFuKHN0cikpXG59XG5cbmZ1bmN0aW9uIGJsaXRCdWZmZXIgKHNyYywgZHN0LCBvZmZzZXQsIGxlbmd0aCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVha1xuICAgIGRzdFtpICsgb2Zmc2V0XSA9IHNyY1tpXVxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIGlzbmFuICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gdmFsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG59XG5cblxuLy8gdGhlIGZvbGxvd2luZyBpcyBmcm9tIGlzLWJ1ZmZlciwgYWxzbyBieSBGZXJvc3MgQWJvdWtoYWRpamVoIGFuZCB3aXRoIHNhbWUgbGlzZW5jZVxuLy8gVGhlIF9pc0J1ZmZlciBjaGVjayBpcyBmb3IgU2FmYXJpIDUtNyBzdXBwb3J0LCBiZWNhdXNlIGl0J3MgbWlzc2luZ1xuLy8gT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci4gUmVtb3ZlIHRoaXMgZXZlbnR1YWxseVxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVmZmVyKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgKCEhb2JqLl9pc0J1ZmZlciB8fCBpc0Zhc3RCdWZmZXIob2JqKSB8fCBpc1Nsb3dCdWZmZXIob2JqKSlcbn1cblxuZnVuY3Rpb24gaXNGYXN0QnVmZmVyIChvYmopIHtcbiAgcmV0dXJuICEhb2JqLmNvbnN0cnVjdG9yICYmIHR5cGVvZiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iailcbn1cblxuLy8gRm9yIE5vZGUgdjAuMTAgc3VwcG9ydC4gUmVtb3ZlIHRoaXMgZXZlbnR1YWxseS5cbmZ1bmN0aW9uIGlzU2xvd0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqLnJlYWRGbG9hdExFID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmouc2xpY2UgPT09ICdmdW5jdGlvbicgJiYgaXNGYXN0QnVmZmVyKG9iai5zbGljZSgwLCAwKSlcbn1cbiIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxuLy8gYmFzZWQgb2ZmIGh0dHBzOi8vZ2l0aHViLmNvbS9kZWZ1bmN0em9tYmllL25vZGUtcHJvY2Vzcy9ibG9iL21hc3Rlci9icm93c2VyLmpzXG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxudmFyIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG5pZiAodHlwZW9mIGdsb2JhbC5zZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG59XG5pZiAodHlwZW9mIGdsb2JhbC5jbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG59XG5cbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBuZXh0VGljayhmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufVxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbmV4cG9ydCB2YXIgdGl0bGUgPSAnYnJvd3Nlcic7XG5leHBvcnQgdmFyIHBsYXRmb3JtID0gJ2Jyb3dzZXInO1xuZXhwb3J0IHZhciBicm93c2VyID0gdHJ1ZTtcbmV4cG9ydCB2YXIgZW52ID0ge307XG5leHBvcnQgdmFyIGFyZ3YgPSBbXTtcbmV4cG9ydCB2YXIgdmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xuZXhwb3J0IHZhciB2ZXJzaW9ucyA9IHt9O1xuZXhwb3J0IHZhciByZWxlYXNlID0ge307XG5leHBvcnQgdmFyIGNvbmZpZyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxuZXhwb3J0IHZhciBvbiA9IG5vb3A7XG5leHBvcnQgdmFyIGFkZExpc3RlbmVyID0gbm9vcDtcbmV4cG9ydCB2YXIgb25jZSA9IG5vb3A7XG5leHBvcnQgdmFyIG9mZiA9IG5vb3A7XG5leHBvcnQgdmFyIHJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbmV4cG9ydCB2YXIgcmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbmV4cG9ydCB2YXIgZW1pdCA9IG5vb3A7XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kaW5nKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjd2QgKCkgeyByZXR1cm4gJy8nIH1cbmV4cG9ydCBmdW5jdGlvbiBjaGRpciAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gdW1hc2soKSB7IHJldHVybiAwOyB9XG5cbi8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2t1bWF2aXMvYnJvd3Nlci1wcm9jZXNzLWhydGltZS9ibG9iL21hc3Rlci9pbmRleC5qc1xudmFyIHBlcmZvcm1hbmNlID0gZ2xvYmFsLnBlcmZvcm1hbmNlIHx8IHt9XG52YXIgcGVyZm9ybWFuY2VOb3cgPVxuICBwZXJmb3JtYW5jZS5ub3cgICAgICAgIHx8XG4gIHBlcmZvcm1hbmNlLm1vek5vdyAgICAgfHxcbiAgcGVyZm9ybWFuY2UubXNOb3cgICAgICB8fFxuICBwZXJmb3JtYW5jZS5vTm93ICAgICAgIHx8XG4gIHBlcmZvcm1hbmNlLndlYmtpdE5vdyAgfHxcbiAgZnVuY3Rpb24oKXsgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgfVxuXG4vLyBnZW5lcmF0ZSB0aW1lc3RhbXAgb3IgZGVsdGFcbi8vIHNlZSBodHRwOi8vbm9kZWpzLm9yZy9hcGkvcHJvY2Vzcy5odG1sI3Byb2Nlc3NfcHJvY2Vzc19ocnRpbWVcbmV4cG9ydCBmdW5jdGlvbiBocnRpbWUocHJldmlvdXNUaW1lc3RhbXApe1xuICB2YXIgY2xvY2t0aW1lID0gcGVyZm9ybWFuY2VOb3cuY2FsbChwZXJmb3JtYW5jZSkqMWUtM1xuICB2YXIgc2Vjb25kcyA9IE1hdGguZmxvb3IoY2xvY2t0aW1lKVxuICB2YXIgbmFub3NlY29uZHMgPSBNYXRoLmZsb29yKChjbG9ja3RpbWUlMSkqMWU5KVxuICBpZiAocHJldmlvdXNUaW1lc3RhbXApIHtcbiAgICBzZWNvbmRzID0gc2Vjb25kcyAtIHByZXZpb3VzVGltZXN0YW1wWzBdXG4gICAgbmFub3NlY29uZHMgPSBuYW5vc2Vjb25kcyAtIHByZXZpb3VzVGltZXN0YW1wWzFdXG4gICAgaWYgKG5hbm9zZWNvbmRzPDApIHtcbiAgICAgIHNlY29uZHMtLVxuICAgICAgbmFub3NlY29uZHMgKz0gMWU5XG4gICAgfVxuICB9XG4gIHJldHVybiBbc2Vjb25kcyxuYW5vc2Vjb25kc11cbn1cblxudmFyIHN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7XG5leHBvcnQgZnVuY3Rpb24gdXB0aW1lKCkge1xuICB2YXIgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpO1xuICB2YXIgZGlmID0gY3VycmVudFRpbWUgLSBzdGFydFRpbWU7XG4gIHJldHVybiBkaWYgLyAxMDAwO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5leHRUaWNrOiBuZXh0VGljayxcbiAgdGl0bGU6IHRpdGxlLFxuICBicm93c2VyOiBicm93c2VyLFxuICBlbnY6IGVudixcbiAgYXJndjogYXJndixcbiAgdmVyc2lvbjogdmVyc2lvbixcbiAgdmVyc2lvbnM6IHZlcnNpb25zLFxuICBvbjogb24sXG4gIGFkZExpc3RlbmVyOiBhZGRMaXN0ZW5lcixcbiAgb25jZTogb25jZSxcbiAgb2ZmOiBvZmYsXG4gIHJlbW92ZUxpc3RlbmVyOiByZW1vdmVMaXN0ZW5lcixcbiAgcmVtb3ZlQWxsTGlzdGVuZXJzOiByZW1vdmVBbGxMaXN0ZW5lcnMsXG4gIGVtaXQ6IGVtaXQsXG4gIGJpbmRpbmc6IGJpbmRpbmcsXG4gIGN3ZDogY3dkLFxuICBjaGRpcjogY2hkaXIsXG4gIHVtYXNrOiB1bWFzayxcbiAgaHJ0aW1lOiBocnRpbWUsXG4gIHBsYXRmb3JtOiBwbGF0Zm9ybSxcbiAgcmVsZWFzZTogcmVsZWFzZSxcbiAgY29uZmlnOiBjb25maWcsXG4gIHVwdGltZTogdXB0aW1lXG59O1xuIiwiXG52YXIgaW5oZXJpdHM7XG5pZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpe1xuICBpbmhlcml0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59IGVsc2Uge1xuICBpbmhlcml0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICB9XG59XG5leHBvcnQgZGVmYXVsdCBpbmhlcml0cztcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuaW1wb3J0IHByb2Nlc3MgZnJvbSAncHJvY2Vzcyc7XG52YXIgZm9ybWF0UmVnRXhwID0gLyVbc2RqJV0vZztcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQoZikge1xuICBpZiAoIWlzU3RyaW5nKGYpKSB7XG4gICAgdmFyIG9iamVjdHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgb2JqZWN0cy5wdXNoKGluc3BlY3QoYXJndW1lbnRzW2ldKSk7XG4gICAgfVxuICAgIHJldHVybiBvYmplY3RzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHZhciBpID0gMTtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIHN0ciA9IFN0cmluZyhmKS5yZXBsYWNlKGZvcm1hdFJlZ0V4cCwgZnVuY3Rpb24oeCkge1xuICAgIGlmICh4ID09PSAnJSUnKSByZXR1cm4gJyUnO1xuICAgIGlmIChpID49IGxlbikgcmV0dXJuIHg7XG4gICAgc3dpdGNoICh4KSB7XG4gICAgICBjYXNlICclcyc6IHJldHVybiBTdHJpbmcoYXJnc1tpKytdKTtcbiAgICAgIGNhc2UgJyVkJzogcmV0dXJuIE51bWJlcihhcmdzW2krK10pO1xuICAgICAgY2FzZSAnJWonOlxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzW2krK10pO1xuICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcbiAgICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuICB9KTtcbiAgZm9yICh2YXIgeCA9IGFyZ3NbaV07IGkgPCBsZW47IHggPSBhcmdzWysraV0pIHtcbiAgICBpZiAoaXNOdWxsKHgpIHx8ICFpc09iamVjdCh4KSkge1xuICAgICAgc3RyICs9ICcgJyArIHg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciArPSAnICcgKyBpbnNwZWN0KHgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyO1xufTtcblxuXG4vLyBNYXJrIHRoYXQgYSBtZXRob2Qgc2hvdWxkIG5vdCBiZSB1c2VkLlxuLy8gUmV0dXJucyBhIG1vZGlmaWVkIGZ1bmN0aW9uIHdoaWNoIHdhcm5zIG9uY2UgYnkgZGVmYXVsdC5cbi8vIElmIC0tbm8tZGVwcmVjYXRpb24gaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG5leHBvcnQgZnVuY3Rpb24gZGVwcmVjYXRlKGZuLCBtc2cpIHtcbiAgLy8gQWxsb3cgZm9yIGRlcHJlY2F0aW5nIHRoaW5ncyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cC5cbiAgaWYgKGlzVW5kZWZpbmVkKGdsb2JhbC5wcm9jZXNzKSkge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBkZXByZWNhdGUoZm4sIG1zZykuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKHByb2Nlc3Mubm9EZXByZWNhdGlvbiA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICAgIGNvbnNvbGUudHJhY2UobXNnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IobXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59O1xuXG5cbnZhciBkZWJ1Z3MgPSB7fTtcbnZhciBkZWJ1Z0Vudmlyb247XG5leHBvcnQgZnVuY3Rpb24gZGVidWdsb2coc2V0KSB7XG4gIGlmIChpc1VuZGVmaW5lZChkZWJ1Z0Vudmlyb24pKVxuICAgIGRlYnVnRW52aXJvbiA9IHByb2Nlc3MuZW52Lk5PREVfREVCVUcgfHwgJyc7XG4gIHNldCA9IHNldC50b1VwcGVyQ2FzZSgpO1xuICBpZiAoIWRlYnVnc1tzZXRdKSB7XG4gICAgaWYgKG5ldyBSZWdFeHAoJ1xcXFxiJyArIHNldCArICdcXFxcYicsICdpJykudGVzdChkZWJ1Z0Vudmlyb24pKSB7XG4gICAgICB2YXIgcGlkID0gMDtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBtc2cgPSBmb3JtYXQuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignJXMgJWQ6ICVzJywgc2V0LCBwaWQsIG1zZyk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1Z3Nbc2V0XSA9IGZ1bmN0aW9uKCkge307XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWJ1Z3Nbc2V0XTtcbn07XG5cblxuLyoqXG4gKiBFY2hvcyB0aGUgdmFsdWUgb2YgYSB2YWx1ZS4gVHJ5cyB0byBwcmludCB0aGUgdmFsdWUgb3V0XG4gKiBpbiB0aGUgYmVzdCB3YXkgcG9zc2libGUgZ2l2ZW4gdGhlIGRpZmZlcmVudCB0eXBlcy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gcHJpbnQgb3V0LlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uYWwgb3B0aW9ucyBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIG91dHB1dC5cbiAqL1xuLyogbGVnYWN5OiBvYmosIHNob3dIaWRkZW4sIGRlcHRoLCBjb2xvcnMqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3Qob2JqLCBvcHRzKSB7XG4gIC8vIGRlZmF1bHQgb3B0aW9uc1xuICB2YXIgY3R4ID0ge1xuICAgIHNlZW46IFtdLFxuICAgIHN0eWxpemU6IHN0eWxpemVOb0NvbG9yXG4gIH07XG4gIC8vIGxlZ2FjeS4uLlxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSAzKSBjdHguZGVwdGggPSBhcmd1bWVudHNbMl07XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDQpIGN0eC5jb2xvcnMgPSBhcmd1bWVudHNbM107XG4gIGlmIChpc0Jvb2xlYW4ob3B0cykpIHtcbiAgICAvLyBsZWdhY3kuLi5cbiAgICBjdHguc2hvd0hpZGRlbiA9IG9wdHM7XG4gIH0gZWxzZSBpZiAob3B0cykge1xuICAgIC8vIGdvdCBhbiBcIm9wdGlvbnNcIiBvYmplY3RcbiAgICBfZXh0ZW5kKGN0eCwgb3B0cyk7XG4gIH1cbiAgLy8gc2V0IGRlZmF1bHQgb3B0aW9uc1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LnNob3dIaWRkZW4pKSBjdHguc2hvd0hpZGRlbiA9IGZhbHNlO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmRlcHRoKSkgY3R4LmRlcHRoID0gMjtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jb2xvcnMpKSBjdHguY29sb3JzID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguY3VzdG9tSW5zcGVjdCkpIGN0eC5jdXN0b21JbnNwZWN0ID0gdHJ1ZTtcbiAgaWYgKGN0eC5jb2xvcnMpIGN0eC5zdHlsaXplID0gc3R5bGl6ZVdpdGhDb2xvcjtcbiAgcmV0dXJuIGZvcm1hdFZhbHVlKGN0eCwgb2JqLCBjdHguZGVwdGgpO1xufVxuXG4vLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUjZ3JhcGhpY3Ncbmluc3BlY3QuY29sb3JzID0ge1xuICAnYm9sZCcgOiBbMSwgMjJdLFxuICAnaXRhbGljJyA6IFszLCAyM10sXG4gICd1bmRlcmxpbmUnIDogWzQsIDI0XSxcbiAgJ2ludmVyc2UnIDogWzcsIDI3XSxcbiAgJ3doaXRlJyA6IFszNywgMzldLFxuICAnZ3JleScgOiBbOTAsIDM5XSxcbiAgJ2JsYWNrJyA6IFszMCwgMzldLFxuICAnYmx1ZScgOiBbMzQsIDM5XSxcbiAgJ2N5YW4nIDogWzM2LCAzOV0sXG4gICdncmVlbicgOiBbMzIsIDM5XSxcbiAgJ21hZ2VudGEnIDogWzM1LCAzOV0sXG4gICdyZWQnIDogWzMxLCAzOV0sXG4gICd5ZWxsb3cnIDogWzMzLCAzOV1cbn07XG5cbi8vIERvbid0IHVzZSAnYmx1ZScgbm90IHZpc2libGUgb24gY21kLmV4ZVxuaW5zcGVjdC5zdHlsZXMgPSB7XG4gICdzcGVjaWFsJzogJ2N5YW4nLFxuICAnbnVtYmVyJzogJ3llbGxvdycsXG4gICdib29sZWFuJzogJ3llbGxvdycsXG4gICd1bmRlZmluZWQnOiAnZ3JleScsXG4gICdudWxsJzogJ2JvbGQnLFxuICAnc3RyaW5nJzogJ2dyZWVuJyxcbiAgJ2RhdGUnOiAnbWFnZW50YScsXG4gIC8vIFwibmFtZVwiOiBpbnRlbnRpb25hbGx5IG5vdCBzdHlsaW5nXG4gICdyZWdleHAnOiAncmVkJ1xufTtcblxuXG5mdW5jdGlvbiBzdHlsaXplV2l0aENvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHZhciBzdHlsZSA9IGluc3BlY3Quc3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgaWYgKHN0eWxlKSB7XG4gICAgcmV0dXJuICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMF0gKyAnbScgKyBzdHIgK1xuICAgICAgICAgICAnXFx1MDAxYlsnICsgaW5zcGVjdC5jb2xvcnNbc3R5bGVdWzFdICsgJ20nO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzdHlsaXplTm9Db2xvcihzdHIsIHN0eWxlVHlwZSkge1xuICByZXR1cm4gc3RyO1xufVxuXG5cbmZ1bmN0aW9uIGFycmF5VG9IYXNoKGFycmF5KSB7XG4gIHZhciBoYXNoID0ge307XG5cbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbih2YWwsIGlkeCkge1xuICAgIGhhc2hbdmFsXSA9IHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBoYXNoO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFZhbHVlKGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcykge1xuICAvLyBQcm92aWRlIGEgaG9vayBmb3IgdXNlci1zcGVjaWZpZWQgaW5zcGVjdCBmdW5jdGlvbnMuXG4gIC8vIENoZWNrIHRoYXQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYW4gaW5zcGVjdCBmdW5jdGlvbiBvbiBpdFxuICBpZiAoY3R4LmN1c3RvbUluc3BlY3QgJiZcbiAgICAgIHZhbHVlICYmXG4gICAgICBpc0Z1bmN0aW9uKHZhbHVlLmluc3BlY3QpICYmXG4gICAgICAvLyBGaWx0ZXIgb3V0IHRoZSB1dGlsIG1vZHVsZSwgaXQncyBpbnNwZWN0IGZ1bmN0aW9uIGlzIHNwZWNpYWxcbiAgICAgIHZhbHVlLmluc3BlY3QgIT09IGluc3BlY3QgJiZcbiAgICAgIC8vIEFsc28gZmlsdGVyIG91dCBhbnkgcHJvdG90eXBlIG9iamVjdHMgdXNpbmcgdGhlIGNpcmN1bGFyIGNoZWNrLlxuICAgICAgISh2YWx1ZS5jb25zdHJ1Y3RvciAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgPT09IHZhbHVlKSkge1xuICAgIHZhciByZXQgPSB2YWx1ZS5pbnNwZWN0KHJlY3Vyc2VUaW1lcywgY3R4KTtcbiAgICBpZiAoIWlzU3RyaW5nKHJldCkpIHtcbiAgICAgIHJldCA9IGZvcm1hdFZhbHVlKGN0eCwgcmV0LCByZWN1cnNlVGltZXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLy8gUHJpbWl0aXZlIHR5cGVzIGNhbm5vdCBoYXZlIHByb3BlcnRpZXNcbiAgdmFyIHByaW1pdGl2ZSA9IGZvcm1hdFByaW1pdGl2ZShjdHgsIHZhbHVlKTtcbiAgaWYgKHByaW1pdGl2ZSkge1xuICAgIHJldHVybiBwcmltaXRpdmU7XG4gIH1cblxuICAvLyBMb29rIHVwIHRoZSBrZXlzIG9mIHRoZSBvYmplY3QuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICB2YXIgdmlzaWJsZUtleXMgPSBhcnJheVRvSGFzaChrZXlzKTtcblxuICBpZiAoY3R4LnNob3dIaWRkZW4pIHtcbiAgICBrZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsdWUpO1xuICB9XG5cbiAgLy8gSUUgZG9lc24ndCBtYWtlIGVycm9yIGZpZWxkcyBub24tZW51bWVyYWJsZVxuICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvZHd3NTJzYnQodj12cy45NCkuYXNweFxuICBpZiAoaXNFcnJvcih2YWx1ZSlcbiAgICAgICYmIChrZXlzLmluZGV4T2YoJ21lc3NhZ2UnKSA+PSAwIHx8IGtleXMuaW5kZXhPZignZGVzY3JpcHRpb24nKSA+PSAwKSkge1xuICAgIHJldHVybiBmb3JtYXRFcnJvcih2YWx1ZSk7XG4gIH1cblxuICAvLyBTb21lIHR5cGUgb2Ygb2JqZWN0IHdpdGhvdXQgcHJvcGVydGllcyBjYW4gYmUgc2hvcnRjdXR0ZWQuXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgdmFyIG5hbWUgPSB2YWx1ZS5uYW1lID8gJzogJyArIHZhbHVlLm5hbWUgOiAnJztcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW0Z1bmN0aW9uJyArIG5hbWUgKyAnXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfVxuICAgIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdkYXRlJyk7XG4gICAgfVxuICAgIGlmIChpc0Vycm9yKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB2YXIgYmFzZSA9ICcnLCBhcnJheSA9IGZhbHNlLCBicmFjZXMgPSBbJ3snLCAnfSddO1xuXG4gIC8vIE1ha2UgQXJyYXkgc2F5IHRoYXQgdGhleSBhcmUgQXJyYXlcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgYXJyYXkgPSB0cnVlO1xuICAgIGJyYWNlcyA9IFsnWycsICddJ107XG4gIH1cblxuICAvLyBNYWtlIGZ1bmN0aW9ucyBzYXkgdGhhdCB0aGV5IGFyZSBmdW5jdGlvbnNcbiAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgdmFyIG4gPSB2YWx1ZS5uYW1lID8gJzogJyArIHZhbHVlLm5hbWUgOiAnJztcbiAgICBiYXNlID0gJyBbRnVuY3Rpb24nICsgbiArICddJztcbiAgfVxuXG4gIC8vIE1ha2UgUmVnRXhwcyBzYXkgdGhhdCB0aGV5IGFyZSBSZWdFeHBzXG4gIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgfVxuXG4gIC8vIE1ha2UgZGF0ZXMgd2l0aCBwcm9wZXJ0aWVzIGZpcnN0IHNheSB0aGUgZGF0ZVxuICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgfVxuXG4gIC8vIE1ha2UgZXJyb3Igd2l0aCBtZXNzYWdlIGZpcnN0IHNheSB0aGUgZXJyb3JcbiAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCAmJiAoIWFycmF5IHx8IHZhbHVlLmxlbmd0aCA9PSAwKSkge1xuICAgIHJldHVybiBicmFjZXNbMF0gKyBiYXNlICsgYnJhY2VzWzFdO1xuICB9XG5cbiAgaWYgKHJlY3Vyc2VUaW1lcyA8IDApIHtcbiAgICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ3JlZ2V4cCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ1tPYmplY3RdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cblxuICBjdHguc2Vlbi5wdXNoKHZhbHVlKTtcblxuICB2YXIgb3V0cHV0O1xuICBpZiAoYXJyYXkpIHtcbiAgICBvdXRwdXQgPSBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXlzKTtcbiAgfSBlbHNlIHtcbiAgICBvdXRwdXQgPSBrZXlzLm1hcChmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXksIGFycmF5KTtcbiAgICB9KTtcbiAgfVxuXG4gIGN0eC5zZWVuLnBvcCgpO1xuXG4gIHJldHVybiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcyk7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJ3VuZGVmaW5lZCcsICd1bmRlZmluZWQnKTtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHZhciBzaW1wbGUgPSAnXFwnJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKS5yZXBsYWNlKC9eXCJ8XCIkL2csICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKSArICdcXCcnO1xuICAgIHJldHVybiBjdHguc3R5bGl6ZShzaW1wbGUsICdzdHJpbmcnKTtcbiAgfVxuICBpZiAoaXNOdW1iZXIodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgnJyArIHZhbHVlLCAnbnVtYmVyJyk7XG4gIGlmIChpc0Jvb2xlYW4odmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgnJyArIHZhbHVlLCAnYm9vbGVhbicpO1xuICAvLyBGb3Igc29tZSByZWFzb24gdHlwZW9mIG51bGwgaXMgXCJvYmplY3RcIiwgc28gc3BlY2lhbCBjYXNlIGhlcmUuXG4gIGlmIChpc051bGwodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgnbnVsbCcsICdudWxsJyk7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0RXJyb3IodmFsdWUpIHtcbiAgcmV0dXJuICdbJyArIEVycm9yLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSArICddJztcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXlzKSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkodmFsdWUsIFN0cmluZyhpKSkpIHtcbiAgICAgIG91dHB1dC5wdXNoKGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsXG4gICAgICAgICAgU3RyaW5nKGkpLCB0cnVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICB9XG4gIH1cbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIGlmICgha2V5Lm1hdGNoKC9eXFxkKyQvKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBrZXksIHRydWUpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0cHV0O1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpIHtcbiAgdmFyIG5hbWUsIHN0ciwgZGVzYztcbiAgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGtleSkgfHwgeyB2YWx1ZTogdmFsdWVba2V5XSB9O1xuICBpZiAoZGVzYy5nZXQpIHtcbiAgICBpZiAoZGVzYy5zZXQpIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyL1NldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0dldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZGVzYy5zZXQpIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmICghaGFzT3duUHJvcGVydHkodmlzaWJsZUtleXMsIGtleSkpIHtcbiAgICBuYW1lID0gJ1snICsga2V5ICsgJ10nO1xuICB9XG4gIGlmICghc3RyKSB7XG4gICAgaWYgKGN0eC5zZWVuLmluZGV4T2YoZGVzYy52YWx1ZSkgPCAwKSB7XG4gICAgICBpZiAoaXNOdWxsKHJlY3Vyc2VUaW1lcykpIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ciA9IGZvcm1hdFZhbHVlKGN0eCwgZGVzYy52YWx1ZSwgcmVjdXJzZVRpbWVzIC0gMSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RyLmluZGV4T2YoJ1xcbicpID4gLTEpIHtcbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgc3RyID0gc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICcgKyBsaW5lO1xuICAgICAgICAgIH0pLmpvaW4oJ1xcbicpLnN1YnN0cigyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHIgPSAnXFxuJyArIHN0ci5zcGxpdCgnXFxuJykubWFwKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiAnICAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tDaXJjdWxhcl0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuICBpZiAoaXNVbmRlZmluZWQobmFtZSkpIHtcbiAgICBpZiAoYXJyYXkgJiYga2V5Lm1hdGNoKC9eXFxkKyQvKSkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgbmFtZSA9IEpTT04uc3RyaW5naWZ5KCcnICsga2V5KTtcbiAgICBpZiAobmFtZS5tYXRjaCgvXlwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXCIkLykpIHtcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cigxLCBuYW1lLmxlbmd0aCAtIDIpO1xuICAgICAgbmFtZSA9IGN0eC5zdHlsaXplKG5hbWUsICduYW1lJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oXlwifFwiJCkvZywgXCInXCIpO1xuICAgICAgbmFtZSA9IGN0eC5zdHlsaXplKG5hbWUsICdzdHJpbmcnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmFtZSArICc6ICcgKyBzdHI7XG59XG5cblxuZnVuY3Rpb24gcmVkdWNlVG9TaW5nbGVTdHJpbmcob3V0cHV0LCBiYXNlLCBicmFjZXMpIHtcbiAgdmFyIG51bUxpbmVzRXN0ID0gMDtcbiAgdmFyIGxlbmd0aCA9IG91dHB1dC5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgY3VyKSB7XG4gICAgbnVtTGluZXNFc3QrKztcbiAgICBpZiAoY3VyLmluZGV4T2YoJ1xcbicpID49IDApIG51bUxpbmVzRXN0Kys7XG4gICAgcmV0dXJuIHByZXYgKyBjdXIucmVwbGFjZSgvXFx1MDAxYlxcW1xcZFxcZD9tL2csICcnKS5sZW5ndGggKyAxO1xuICB9LCAwKTtcblxuICBpZiAobGVuZ3RoID4gNjApIHtcbiAgICByZXR1cm4gYnJhY2VzWzBdICtcbiAgICAgICAgICAgKGJhc2UgPT09ICcnID8gJycgOiBiYXNlICsgJ1xcbiAnKSArXG4gICAgICAgICAgICcgJyArXG4gICAgICAgICAgIG91dHB1dC5qb2luKCcsXFxuICAnKSArXG4gICAgICAgICAgICcgJyArXG4gICAgICAgICAgIGJyYWNlc1sxXTtcbiAgfVxuXG4gIHJldHVybiBicmFjZXNbMF0gKyBiYXNlICsgJyAnICsgb3V0cHV0LmpvaW4oJywgJykgKyAnICcgKyBicmFjZXNbMV07XG59XG5cblxuLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgXG4vLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC5cbmV4cG9ydCBmdW5jdGlvbiBpc0FycmF5KGFyKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3ltYm9sKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHJlKSAmJiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGUoZCkge1xuICByZXR1cm4gaXNPYmplY3QoZCkgJiYgb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXJyb3IoZSkge1xuICByZXR1cm4gaXNPYmplY3QoZSkgJiZcbiAgICAgIChvYmplY3RUb1N0cmluZyhlKSA9PT0gJ1tvYmplY3QgRXJyb3JdJyB8fCBlIGluc3RhbmNlb2YgRXJyb3IpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByaW1pdGl2ZShhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sXG4gICAgICAgICB0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVmZmVyKG1heWJlQnVmKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIobWF5YmVCdWYpO1xufVxuXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7XG59XG5cblxuZnVuY3Rpb24gcGFkKG4pIHtcbiAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4udG9TdHJpbmcoMTApIDogbi50b1N0cmluZygxMCk7XG59XG5cblxudmFyIG1vbnRocyA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLFxuICAgICAgICAgICAgICAnT2N0JywgJ05vdicsICdEZWMnXTtcblxuLy8gMjYgRmViIDE2OjE5OjM0XG5mdW5jdGlvbiB0aW1lc3RhbXAoKSB7XG4gIHZhciBkID0gbmV3IERhdGUoKTtcbiAgdmFyIHRpbWUgPSBbcGFkKGQuZ2V0SG91cnMoKSksXG4gICAgICAgICAgICAgIHBhZChkLmdldE1pbnV0ZXMoKSksXG4gICAgICAgICAgICAgIHBhZChkLmdldFNlY29uZHMoKSldLmpvaW4oJzonKTtcbiAgcmV0dXJuIFtkLmdldERhdGUoKSwgbW9udGhzW2QuZ2V0TW9udGgoKV0sIHRpbWVdLmpvaW4oJyAnKTtcbn1cblxuXG4vLyBsb2cgaXMganVzdCBhIHRoaW4gd3JhcHBlciB0byBjb25zb2xlLmxvZyB0aGF0IHByZXBlbmRzIGEgdGltZXN0YW1wXG5leHBvcnQgZnVuY3Rpb24gbG9nKCkge1xuICBjb25zb2xlLmxvZygnJXMgLSAlcycsIHRpbWVzdGFtcCgpLCBmb3JtYXQuYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG59XG5cblxuLyoqXG4gKiBJbmhlcml0IHRoZSBwcm90b3R5cGUgbWV0aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXIuXG4gKlxuICogVGhlIEZ1bmN0aW9uLnByb3RvdHlwZS5pbmhlcml0cyBmcm9tIGxhbmcuanMgcmV3cml0dGVuIGFzIGEgc3RhbmRhbG9uZVxuICogZnVuY3Rpb24gKG5vdCBvbiBGdW5jdGlvbi5wcm90b3R5cGUpLiBOT1RFOiBJZiB0aGlzIGZpbGUgaXMgdG8gYmUgbG9hZGVkXG4gKiBkdXJpbmcgYm9vdHN0cmFwcGluZyB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHJld3JpdHRlbiB1c2luZyBzb21lIG5hdGl2ZVxuICogZnVuY3Rpb25zIGFzIHByb3RvdHlwZSBzZXR1cCB1c2luZyBub3JtYWwgSmF2YVNjcmlwdCBkb2VzIG5vdCB3b3JrIGFzXG4gKiBleHBlY3RlZCBkdXJpbmcgYm9vdHN0cmFwcGluZyAoc2VlIG1pcnJvci5qcyBpbiByMTE0OTAzKS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjdG9yIENvbnN0cnVjdG9yIGZ1bmN0aW9uIHdoaWNoIG5lZWRzIHRvIGluaGVyaXQgdGhlXG4gKiAgICAgcHJvdG90eXBlLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gc3VwZXJDdG9yIENvbnN0cnVjdG9yIGZ1bmN0aW9uIHRvIGluaGVyaXQgcHJvdG90eXBlIGZyb20uXG4gKi9cbmltcG9ydCBpbmhlcml0cyBmcm9tICcuL2luaGVyaXRzJztcbmV4cG9ydCB7aW5oZXJpdHN9XG5cbmV4cG9ydCBmdW5jdGlvbiBfZXh0ZW5kKG9yaWdpbiwgYWRkKSB7XG4gIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGFkZCBpc24ndCBhbiBvYmplY3RcbiAgaWYgKCFhZGQgfHwgIWlzT2JqZWN0KGFkZCkpIHJldHVybiBvcmlnaW47XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgb3JpZ2luW2tleXNbaV1dID0gYWRkW2tleXNbaV1dO1xuICB9XG4gIHJldHVybiBvcmlnaW47XG59O1xuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGluaGVyaXRzOiBpbmhlcml0cyxcbiAgX2V4dGVuZDogX2V4dGVuZCxcbiAgbG9nOiBsb2csXG4gIGlzQnVmZmVyOiBpc0J1ZmZlcixcbiAgaXNQcmltaXRpdmU6IGlzUHJpbWl0aXZlLFxuICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLFxuICBpc0Vycm9yOiBpc0Vycm9yLFxuICBpc0RhdGU6IGlzRGF0ZSxcbiAgaXNPYmplY3Q6IGlzT2JqZWN0LFxuICBpc1JlZ0V4cDogaXNSZWdFeHAsXG4gIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgaXNTeW1ib2w6IGlzU3ltYm9sLFxuICBpc1N0cmluZzogaXNTdHJpbmcsXG4gIGlzTnVtYmVyOiBpc051bWJlcixcbiAgaXNOdWxsT3JVbmRlZmluZWQ6IGlzTnVsbE9yVW5kZWZpbmVkLFxuICBpc051bGw6IGlzTnVsbCxcbiAgaXNCb29sZWFuOiBpc0Jvb2xlYW4sXG4gIGlzQXJyYXk6IGlzQXJyYXksXG4gIGluc3BlY3Q6IGluc3BlY3QsXG4gIGRlcHJlY2F0ZTogZGVwcmVjYXRlLFxuICBmb3JtYXQ6IGZvcm1hdCxcbiAgZGVidWdsb2c6IGRlYnVnbG9nXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBNaXhpbiA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL21peGluJyksXG4gICAgaW5oZXJpdHMgPSByZXF1aXJlKCd1dGlsJykuaW5oZXJpdHMsXG4gICAgVU5JQ09ERSA9IHJlcXVpcmUoJy4uLy4uL2NvbW1vbi91bmljb2RlJyk7XG5cbi8vQWxpYXNlc1xudmFyICQgPSBVTklDT0RFLkNPREVfUE9JTlRTO1xuXG52YXIgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocHJlcHJvY2Vzc29yKSB7XG4gICAgLy8gTk9URTogYXZvaWQgaW5zdGFsbGluZyB0cmFja2VyIHR3aWNlXG4gICAgaWYgKCFwcmVwcm9jZXNzb3IuX19sb2NUcmFja2VyKSB7XG4gICAgICAgIHByZXByb2Nlc3Nvci5fX2xvY1RyYWNrZXIgPSB0aGlzO1xuXG4gICAgICAgIE1peGluLmNhbGwodGhpcywgcHJlcHJvY2Vzc29yKTtcblxuICAgICAgICB0aGlzLnByZXByb2Nlc3NvciA9IHByZXByb2Nlc3NvcjtcbiAgICAgICAgdGhpcy5pc0VvbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxpbmVTdGFydFBvcyA9IDA7XG4gICAgICAgIHRoaXMuZHJvcHBlZEJ1ZmZlclNpemUgPSAwO1xuXG4gICAgICAgIHRoaXMuY29sID0gLTE7XG4gICAgICAgIHRoaXMubGluZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXByb2Nlc3Nvci5fX2xvY1RyYWNrZXI7XG59O1xuXG5pbmhlcml0cyhQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW4sIE1peGluKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbi5wcm90b3R5cGUsICdvZmZzZXQnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRyb3BwZWRCdWZmZXJTaXplICsgdGhpcy5wcmVwcm9jZXNzb3IucG9zO1xuICAgIH1cbn0pO1xuXG5Qb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW4ucHJvdG90eXBlLl9nZXRPdmVycmlkZGVuTWV0aG9kcyA9IGZ1bmN0aW9uIChteG4sIG9yaWcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBhZHZhbmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY3AgPSBvcmlnLmFkdmFuY2UuY2FsbCh0aGlzKTtcblxuICAgICAgICAgICAgLy9OT1RFOiBMRiBzaG91bGQgYmUgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSBsaW5lXG4gICAgICAgICAgICBpZiAobXhuLmlzRW9sKSB7XG4gICAgICAgICAgICAgICAgbXhuLmlzRW9sID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbXhuLmxpbmUrKztcbiAgICAgICAgICAgICAgICBteG4ubGluZVN0YXJ0UG9zID0gbXhuLm9mZnNldDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLkxJTkVfRkVFRClcbiAgICAgICAgICAgICAgICBteG4uaXNFb2wgPSB0cnVlO1xuXG4gICAgICAgICAgICBteG4uY29sID0gbXhuLm9mZnNldCAtIG14bi5saW5lU3RhcnRQb3MgKyAxO1xuXG4gICAgICAgICAgICByZXR1cm4gY3A7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmV0cmVhdDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgb3JpZy5yZXRyZWF0LmNhbGwodGhpcyk7XG4gICAgICAgICAgICBteG4uaXNFb2wgPSBmYWxzZTtcblxuICAgICAgICAgICAgbXhuLmNvbCA9IG14bi5vZmZzZXQgLSBteG4ubGluZVN0YXJ0UG9zICsgMTtcbiAgICAgICAgfSxcblxuICAgICAgICBkcm9wUGFyc2VkQ2h1bms6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwcmV2UG9zID0gdGhpcy5wb3M7XG5cbiAgICAgICAgICAgIG9yaWcuZHJvcFBhcnNlZENodW5rLmNhbGwodGhpcyk7XG5cbiAgICAgICAgICAgIG14bi5kcm9wcGVkQnVmZmVyU2l6ZSArPSBwcmV2UG9zIC0gdGhpcy5wb3M7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKSxcbiAgICBUb2tlbml6ZXIgPSByZXF1aXJlKCcuLi8uLi90b2tlbml6ZXInKSxcbiAgICBQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW4gPSByZXF1aXJlKCcuLi9wb3NpdGlvbl90cmFja2luZy9wcmVwcm9jZXNzb3JfbWl4aW4nKSxcbiAgICBpbmhlcml0cyA9IHJlcXVpcmUoJ3V0aWwnKS5pbmhlcml0cztcblxudmFyIExvY2F0aW9uSW5mb1Rva2VuaXplck1peGluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodG9rZW5pemVyKSB7XG4gICAgTWl4aW4uY2FsbCh0aGlzLCB0b2tlbml6ZXIpO1xuXG4gICAgdGhpcy50b2tlbml6ZXIgPSB0b2tlbml6ZXI7XG4gICAgdGhpcy5wb3NUcmFja2VyID0gbmV3IFBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbih0b2tlbml6ZXIucHJlcHJvY2Vzc29yKTtcbiAgICB0aGlzLmN1cnJlbnRBdHRyTG9jYXRpb24gPSBudWxsO1xuICAgIHRoaXMuY3VycmVudFRva2VuTG9jYXRpb24gPSBudWxsO1xufTtcblxuaW5oZXJpdHMoTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4sIE1peGluKTtcblxuTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4ucHJvdG90eXBlLl9nZXRDdXJyZW50TG9jYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbGluZTogdGhpcy5wb3NUcmFja2VyLmxpbmUsXG4gICAgICAgIGNvbDogdGhpcy5wb3NUcmFja2VyLmNvbCxcbiAgICAgICAgc3RhcnRPZmZzZXQ6IHRoaXMucG9zVHJhY2tlci5vZmZzZXQsXG4gICAgICAgIGVuZE9mZnNldDogLTFcbiAgICB9O1xufTtcblxuTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4ucHJvdG90eXBlLl9hdHRhY2hDdXJyZW50QXR0ckxvY2F0aW9uSW5mbyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyTG9jYXRpb24uZW5kT2Zmc2V0ID0gdGhpcy5wb3NUcmFja2VyLm9mZnNldDtcblxuICAgIHZhciBjdXJyZW50VG9rZW4gPSB0aGlzLnRva2VuaXplci5jdXJyZW50VG9rZW4sXG4gICAgICAgIGN1cnJlbnRBdHRyID0gdGhpcy50b2tlbml6ZXIuY3VycmVudEF0dHI7XG5cbiAgICBpZiAoIWN1cnJlbnRUb2tlbi5sb2NhdGlvbi5hdHRycylcbiAgICAgICAgY3VycmVudFRva2VuLmxvY2F0aW9uLmF0dHJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIGN1cnJlbnRUb2tlbi5sb2NhdGlvbi5hdHRyc1tjdXJyZW50QXR0ci5uYW1lXSA9IHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbjtcbn07XG5cbkxvY2F0aW9uSW5mb1Rva2VuaXplck1peGluLnByb3RvdHlwZS5fZ2V0T3ZlcnJpZGRlbk1ldGhvZHMgPSBmdW5jdGlvbiAobXhuLCBvcmlnKSB7XG4gICAgdmFyIG1ldGhvZHMgPSB7XG4gICAgICAgIF9jcmVhdGVTdGFydFRhZ1Rva2VuOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvcmlnLl9jcmVhdGVTdGFydFRhZ1Rva2VuLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbiA9IG14bi5jdXJyZW50VG9rZW5Mb2NhdGlvbjtcbiAgICAgICAgfSxcblxuICAgICAgICBfY3JlYXRlRW5kVGFnVG9rZW46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUVuZFRhZ1Rva2VuLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbiA9IG14bi5jdXJyZW50VG9rZW5Mb2NhdGlvbjtcbiAgICAgICAgfSxcblxuICAgICAgICBfY3JlYXRlQ29tbWVudFRva2VuOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvcmlnLl9jcmVhdGVDb21tZW50VG9rZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uID0gbXhuLmN1cnJlbnRUb2tlbkxvY2F0aW9uO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9jcmVhdGVEb2N0eXBlVG9rZW46IGZ1bmN0aW9uIChpbml0aWFsTmFtZSkge1xuICAgICAgICAgICAgb3JpZy5fY3JlYXRlRG9jdHlwZVRva2VuLmNhbGwodGhpcywgaW5pdGlhbE5hbWUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24gPSBteG4uY3VycmVudFRva2VuTG9jYXRpb247XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2NyZWF0ZUNoYXJhY3RlclRva2VuOiBmdW5jdGlvbiAodHlwZSwgY2gpIHtcbiAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUNoYXJhY3RlclRva2VuLmNhbGwodGhpcywgdHlwZSwgY2gpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24gPSBteG4uY3VycmVudFRva2VuTG9jYXRpb247XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2NyZWF0ZUF0dHI6IGZ1bmN0aW9uIChhdHRyTmFtZUZpcnN0Q2gpIHtcbiAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUF0dHIuY2FsbCh0aGlzLCBhdHRyTmFtZUZpcnN0Q2gpO1xuICAgICAgICAgICAgbXhuLmN1cnJlbnRBdHRyTG9jYXRpb24gPSBteG4uX2dldEN1cnJlbnRMb2NhdGlvbigpO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9sZWF2ZUF0dHJOYW1lOiBmdW5jdGlvbiAodG9TdGF0ZSkge1xuICAgICAgICAgICAgb3JpZy5fbGVhdmVBdHRyTmFtZS5jYWxsKHRoaXMsIHRvU3RhdGUpO1xuICAgICAgICAgICAgbXhuLl9hdHRhY2hDdXJyZW50QXR0ckxvY2F0aW9uSW5mbygpO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9sZWF2ZUF0dHJWYWx1ZTogZnVuY3Rpb24gKHRvU3RhdGUpIHtcbiAgICAgICAgICAgIG9yaWcuX2xlYXZlQXR0clZhbHVlLmNhbGwodGhpcywgdG9TdGF0ZSk7XG4gICAgICAgICAgICBteG4uX2F0dGFjaEN1cnJlbnRBdHRyTG9jYXRpb25JbmZvKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2VtaXRDdXJyZW50VG9rZW46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBwZW5kaW5nIGNoYXJhY3RlciB0b2tlbiBtYWtlIGl0J3MgZW5kIGxvY2F0aW9uIGVxdWFsIHRvIHRoZVxuICAgICAgICAgICAgLy9jdXJyZW50IHRva2VuJ3Mgc3RhcnQgbG9jYXRpb24uXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24uZW5kT2Zmc2V0ID0gdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24uc3RhcnRPZmZzZXQ7XG5cbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uLmVuZE9mZnNldCA9IG14bi5wb3NUcmFja2VyLm9mZnNldCArIDE7XG4gICAgICAgICAgICBvcmlnLl9lbWl0Q3VycmVudFRva2VuLmNhbGwodGhpcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBjaGFyYWN0ZXIgdG9rZW4gYW5kIGl0J3MgbG9jYXRpb24gd2Fzbid0IHNldCBpbiB0aGUgX2VtaXRDdXJyZW50VG9rZW4oKSxcbiAgICAgICAgICAgIC8vdGhlbiBzZXQgaXQncyBsb2NhdGlvbiBhdCB0aGUgY3VycmVudCBwcmVwcm9jZXNzb3IgcG9zaXRpb24uXG4gICAgICAgICAgICAvL1dlIGRvbid0IG5lZWQgdG8gaW5jcmVtZW50IHByZXByb2Nlc3NvciBwb3NpdGlvbiwgc2luY2UgY2hhcmFjdGVyIHRva2VuXG4gICAgICAgICAgICAvL2VtaXNzaW9uIGlzIGFsd2F5cyBmb3JjZWQgYnkgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b2tlbiBoZXJlLlxuICAgICAgICAgICAgLy9Tbywgd2UgYWxyZWFkeSBoYXZlIGFkdmFuY2VkIHBvc2l0aW9uLlxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuICYmIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZE9mZnNldCA9PT0gLTEpXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24uZW5kT2Zmc2V0ID0gbXhuLnBvc1RyYWNrZXIub2Zmc2V0O1xuXG4gICAgICAgICAgICBvcmlnLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLy9OT1RFOiBwYXRjaCBpbml0aWFsIHN0YXRlcyBmb3IgZWFjaCBtb2RlIHRvIG9idGFpbiB0b2tlbiBzdGFydCBwb3NpdGlvblxuICAgIE9iamVjdC5rZXlzKFRva2VuaXplci5NT0RFKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlTmFtZSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBUb2tlbml6ZXIuTU9ERVttb2RlTmFtZV07XG5cbiAgICAgICAgbWV0aG9kc1tzdGF0ZV0gPSBmdW5jdGlvbiAoY3ApIHtcbiAgICAgICAgICAgIG14bi5jdXJyZW50VG9rZW5Mb2NhdGlvbiA9IG14bi5fZ2V0Q3VycmVudExvY2F0aW9uKCk7XG4gICAgICAgICAgICBvcmlnW3N0YXRlXS5jYWxsKHRoaXMsIGNwKTtcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZXRob2RzO1xufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpLFxuICAgIGluaGVyaXRzID0gcmVxdWlyZSgndXRpbCcpLmluaGVyaXRzO1xuXG52YXIgTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc3RhY2ssIG9wdGlvbnMpIHtcbiAgICBNaXhpbi5jYWxsKHRoaXMsIHN0YWNrKTtcblxuICAgIHRoaXMub25JdGVtUG9wID0gb3B0aW9ucy5vbkl0ZW1Qb3A7XG59O1xuXG5pbmhlcml0cyhMb2NhdGlvbkluZm9PcGVuRWxlbWVudFN0YWNrTWl4aW4sIE1peGluKTtcblxuTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluLnByb3RvdHlwZS5fZ2V0T3ZlcnJpZGRlbk1ldGhvZHMgPSBmdW5jdGlvbiAobXhuLCBvcmlnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcG9wOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBteG4ub25JdGVtUG9wKHRoaXMuY3VycmVudCk7XG4gICAgICAgICAgICBvcmlnLnBvcC5jYWxsKHRoaXMpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHBvcEFsbFVwVG9IdG1sRWxlbWVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPiAwOyBpLS0pXG4gICAgICAgICAgICAgICAgbXhuLm9uSXRlbVBvcCh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICAgICAgb3JpZy5wb3BBbGxVcFRvSHRtbEVsZW1lbnQuY2FsbCh0aGlzKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICBteG4ub25JdGVtUG9wKHRoaXMuY3VycmVudCk7XG4gICAgICAgICAgICBvcmlnLnJlbW92ZS5jYWxsKHRoaXMsIGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKSxcbiAgICBUb2tlbml6ZXIgPSByZXF1aXJlKCcuLi8uLi90b2tlbml6ZXInKSxcbiAgICBMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbiA9IHJlcXVpcmUoJy4vdG9rZW5pemVyX21peGluJyksXG4gICAgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluID0gcmVxdWlyZSgnLi4vcG9zaXRpb25fdHJhY2tpbmcvcHJlcHJvY2Vzc29yX21peGluJyksXG4gICAgTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluID0gcmVxdWlyZSgnLi9vcGVuX2VsZW1lbnRfc3RhY2tfbWl4aW4nKSxcbiAgICBIVE1MID0gcmVxdWlyZSgnLi4vLi4vY29tbW9uL2h0bWwnKSxcbiAgICBpbmhlcml0cyA9IHJlcXVpcmUoJ3V0aWwnKS5pbmhlcml0cztcblxuXG4vL0FsaWFzZXNcbnZhciAkID0gSFRNTC5UQUdfTkFNRVM7XG5cbnZhciBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHBhcnNlcikge1xuICAgIE1peGluLmNhbGwodGhpcywgcGFyc2VyKTtcblxuICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgIHRoaXMucG9zVHJhY2tlciA9IG51bGw7XG4gICAgdGhpcy5sYXN0U3RhcnRUYWdUb2tlbiA9IG51bGw7XG4gICAgdGhpcy5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBudWxsO1xuICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcbn07XG5cbmluaGVyaXRzKExvY2F0aW9uSW5mb1BhcnNlck1peGluLCBNaXhpbik7XG5cblxuTG9jYXRpb25JbmZvUGFyc2VyTWl4aW4ucHJvdG90eXBlLl9zZXRTdGFydExvY2F0aW9uID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdUb2tlbikge1xuICAgICAgICBlbGVtZW50Ll9fbG9jYXRpb24gPSBPYmplY3QuY3JlYXRlKHRoaXMubGFzdFN0YXJ0VGFnVG9rZW4ubG9jYXRpb24pO1xuICAgICAgICBlbGVtZW50Ll9fbG9jYXRpb24uc3RhcnRUYWcgPSB0aGlzLmxhc3RTdGFydFRhZ1Rva2VuLmxvY2F0aW9uO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICAgIGVsZW1lbnQuX19sb2NhdGlvbiA9IG51bGw7XG59O1xuXG5Mb2NhdGlvbkluZm9QYXJzZXJNaXhpbi5wcm90b3R5cGUuX3NldEVuZExvY2F0aW9uID0gZnVuY3Rpb24gKGVsZW1lbnQsIGNsb3NpbmdUb2tlbikge1xuICAgIHZhciBsb2MgPSBlbGVtZW50Ll9fbG9jYXRpb247XG5cbiAgICBpZiAobG9jKSB7XG4gICAgICAgIGlmIChjbG9zaW5nVG9rZW4ubG9jYXRpb24pIHtcbiAgICAgICAgICAgIHZhciBjdExvYyA9IGNsb3NpbmdUb2tlbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICB0biA9IHRoaXMucGFyc2VyLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIC8vIE5PVEU6IEZvciBjYXNlcyBsaWtlIDxwPiA8cD4gPC9wPiAtIEZpcnN0ICdwJyBjbG9zZXMgd2l0aG91dCBhIGNsb3NpbmdcbiAgICAgICAgICAgIC8vIHRhZyBhbmQgZm9yIGNhc2VzIGxpa2UgPHRkPiA8cD4gPC90ZD4gLSAncCcgY2xvc2VzIHdpdGhvdXQgYSBjbG9zaW5nIHRhZy5cbiAgICAgICAgICAgIHZhciBpc0Nsb3NpbmdFbmRUYWcgPSBjbG9zaW5nVG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVORF9UQUdfVE9LRU4gJiYgdG4gPT09IGNsb3NpbmdUb2tlbi50YWdOYW1lO1xuXG4gICAgICAgICAgICBpZiAoaXNDbG9zaW5nRW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgbG9jLmVuZFRhZyA9IE9iamVjdC5jcmVhdGUoY3RMb2MpO1xuICAgICAgICAgICAgICAgIGxvYy5lbmRPZmZzZXQgPSBjdExvYy5lbmRPZmZzZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsb2MuZW5kT2Zmc2V0ID0gY3RMb2Muc3RhcnRPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBlbHNlIGlmIChjbG9zaW5nVG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVPRl9UT0tFTilcbiAgICAgICAgICAgIGxvYy5lbmRPZmZzZXQgPSB0aGlzLnBvc1RyYWNrZXIub2Zmc2V0O1xuICAgIH1cbn07XG5cbkxvY2F0aW9uSW5mb1BhcnNlck1peGluLnByb3RvdHlwZS5fZ2V0T3ZlcnJpZGRlbk1ldGhvZHMgPSBmdW5jdGlvbiAobXhuLCBvcmlnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgX2Jvb3RzdHJhcDogZnVuY3Rpb24gKGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgIG9yaWcuX2Jvb3RzdHJhcC5jYWxsKHRoaXMsIGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQpO1xuXG4gICAgICAgICAgICBteG4ubGFzdFN0YXJ0VGFnVG9rZW4gPSBudWxsO1xuICAgICAgICAgICAgbXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbiA9IG51bGw7XG4gICAgICAgICAgICBteG4uY3VycmVudFRva2VuID0gbnVsbDtcbiAgICAgICAgICAgIG14bi5wb3NUcmFja2VyID0gbmV3IFBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbih0aGlzLnRva2VuaXplci5wcmVwcm9jZXNzb3IpO1xuXG4gICAgICAgICAgICBuZXcgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4odGhpcy50b2tlbml6ZXIpO1xuXG4gICAgICAgICAgICBuZXcgTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluKHRoaXMub3BlbkVsZW1lbnRzLCB7XG4gICAgICAgICAgICAgICAgb25JdGVtUG9wOiBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBteG4uX3NldEVuZExvY2F0aW9uKGVsZW1lbnQsIG14bi5jdXJyZW50VG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9ydW5QYXJzaW5nTG9vcDogZnVuY3Rpb24gKHNjcmlwdEhhbmRsZXIpIHtcbiAgICAgICAgICAgIG9yaWcuX3J1blBhcnNpbmdMb29wLmNhbGwodGhpcywgc2NyaXB0SGFuZGxlcik7XG5cbiAgICAgICAgICAgIC8vIE5PVEU6IGdlbmVyYXRlIGxvY2F0aW9uIGluZm8gZm9yIGVsZW1lbnRzXG4gICAgICAgICAgICAvLyB0aGF0IHJlbWFpbnMgb24gb3BlbiBlbGVtZW50IHN0YWNrXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKVxuICAgICAgICAgICAgICAgIG14bi5fc2V0RW5kTG9jYXRpb24odGhpcy5vcGVuRWxlbWVudHMuaXRlbXNbaV0sIG14bi5jdXJyZW50VG9rZW4pO1xuICAgICAgICB9LFxuXG5cbiAgICAgICAgLy9Ub2tlbiBwcm9jZXNzaW5nXG4gICAgICAgIF9wcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50OiBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgICAgIG14bi5jdXJyZW50VG9rZW4gPSB0b2tlbjtcbiAgICAgICAgICAgIG9yaWcuX3Byb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQuY2FsbCh0aGlzLCB0b2tlbik7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX3Byb2Nlc3NUb2tlbjogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgICAgICBteG4uY3VycmVudFRva2VuID0gdG9rZW47XG4gICAgICAgICAgICBvcmlnLl9wcm9jZXNzVG9rZW4uY2FsbCh0aGlzLCB0b2tlbik7XG5cbiAgICAgICAgICAgIC8vTk9URTogPGJvZHk+IGFuZCA8aHRtbD4gYXJlIG5ldmVyIHBvcHBlZCBmcm9tIHRoZSBzdGFjaywgc28gd2UgbmVlZCB0byB1cGRhdGVkXG4gICAgICAgICAgICAvL3RoZWlyIGVuZCBsb2NhdGlvbiBleHBsaWNpdGx5LlxuICAgICAgICAgICAgdmFyIHJlcXVpcmVFeHBsaWNpdFVwZGF0ZSA9IHRva2VuLnR5cGUgPT09IFRva2VuaXplci5FTkRfVEFHX1RPS0VOICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRva2VuLnRhZ05hbWUgPT09ICQuSFRNTCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi50YWdOYW1lID09PSAkLkJPRFkgJiYgdGhpcy5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKTtcblxuICAgICAgICAgICAgaWYgKHJlcXVpcmVFeHBsaWNpdFVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpID09PSB0b2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBteG4uX3NldEVuZExvY2F0aW9uKGVsZW1lbnQsIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG5cbiAgICAgICAgLy9Eb2N0eXBlXG4gICAgICAgIF9zZXREb2N1bWVudFR5cGU6IGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICAgICAgb3JpZy5fc2V0RG9jdW1lbnRUeXBlLmNhbGwodGhpcywgdG9rZW4pO1xuXG4gICAgICAgICAgICB2YXIgZG9jdW1lbnRDaGlsZHJlbiA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2Rlcyh0aGlzLmRvY3VtZW50KSxcbiAgICAgICAgICAgICAgICBjbkxlbmd0aCA9IGRvY3VtZW50Q2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNuTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50Q2hpbGRyZW5baV07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5pc0RvY3VtZW50VHlwZU5vZGUobm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5fX2xvY2F0aW9uID0gdG9rZW4ubG9jYXRpb247XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuXG4gICAgICAgIC8vRWxlbWVudHNcbiAgICAgICAgX2F0dGFjaEVsZW1lbnRUb1RyZWU6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICAvL05PVEU6IF9hdHRhY2hFbGVtZW50VG9UcmVlIGlzIGNhbGxlZCBmcm9tIF9hcHBlbmRFbGVtZW50LCBfaW5zZXJ0RWxlbWVudCBhbmQgX2luc2VydFRlbXBsYXRlIG1ldGhvZHMuXG4gICAgICAgICAgICAvL1NvIHdlIHdpbGwgdXNlIHRva2VuIGxvY2F0aW9uIHN0b3JlZCBpbiB0aGlzIG1ldGhvZHMgZm9yIHRoZSBlbGVtZW50LlxuICAgICAgICAgICAgbXhuLl9zZXRTdGFydExvY2F0aW9uKGVsZW1lbnQpO1xuICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gbnVsbDtcbiAgICAgICAgICAgIG9yaWcuX2F0dGFjaEVsZW1lbnRUb1RyZWUuY2FsbCh0aGlzLCBlbGVtZW50KTtcbiAgICAgICAgfSxcblxuICAgICAgICBfYXBwZW5kRWxlbWVudDogZnVuY3Rpb24gKHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgICAgIG14bi5sYXN0U3RhcnRUYWdUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgb3JpZy5fYXBwZW5kRWxlbWVudC5jYWxsKHRoaXMsIHRva2VuLCBuYW1lc3BhY2VVUkkpO1xuICAgICAgICB9LFxuXG4gICAgICAgIF9pbnNlcnRFbGVtZW50OiBmdW5jdGlvbiAodG9rZW4sIG5hbWVzcGFjZVVSSSkge1xuICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gdG9rZW47XG4gICAgICAgICAgICBvcmlnLl9pbnNlcnRFbGVtZW50LmNhbGwodGhpcywgdG9rZW4sIG5hbWVzcGFjZVVSSSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2luc2VydFRlbXBsYXRlOiBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgICAgIG14bi5sYXN0U3RhcnRUYWdUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgb3JpZy5faW5zZXJ0VGVtcGxhdGUuY2FsbCh0aGlzLCB0b2tlbik7XG5cbiAgICAgICAgICAgIHZhciB0bXBsQ29udGVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICB0bXBsQ29udGVudC5fX2xvY2F0aW9uID0gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBfaW5zZXJ0RmFrZVJvb3RFbGVtZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvcmlnLl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQuX19sb2NhdGlvbiA9IG51bGw7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy9Db21tZW50c1xuICAgICAgICBfYXBwZW5kQ29tbWVudE5vZGU6IGZ1bmN0aW9uICh0b2tlbiwgcGFyZW50KSB7XG4gICAgICAgICAgICBvcmlnLl9hcHBlbmRDb21tZW50Tm9kZS5jYWxsKHRoaXMsIHRva2VuLCBwYXJlbnQpO1xuXG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXMocGFyZW50KSxcbiAgICAgICAgICAgICAgICBjb21tZW50Tm9kZSA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICBjb21tZW50Tm9kZS5fX2xvY2F0aW9uID0gdG9rZW4ubG9jYXRpb247XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy9UZXh0XG4gICAgICAgIF9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb246IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vTk9URTogc3RvcmUgbGFzdCBmb3N0ZXIgcGFyZW50aW5nIGxvY2F0aW9uLCBzbyB3ZSB3aWxsIGJlIGFibGUgdG8gZmluZCBpbnNlcnRlZCB0ZXh0XG4gICAgICAgICAgICAvL2luIGNhc2Ugb2YgZm9zdGVyIHBhcmVudGluZ1xuICAgICAgICAgICAgbXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbiA9IG9yaWcuX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbi5jYWxsKHRoaXMpO1xuXG4gICAgICAgICAgICByZXR1cm4gbXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbjtcbiAgICAgICAgfSxcblxuICAgICAgICBfaW5zZXJ0Q2hhcmFjdGVyczogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgICAgICBvcmlnLl9pbnNlcnRDaGFyYWN0ZXJzLmNhbGwodGhpcywgdG9rZW4pO1xuXG4gICAgICAgICAgICB2YXIgaGFzRm9zdGVyUGFyZW50ID0gdGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKSxcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBoYXNGb3N0ZXJQYXJlbnQgJiYgbXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbi5wYXJlbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50VG1wbENvbnRlbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50LFxuICAgICAgICAgICAgICAgIHNpYmxpbmdzID0gdGhpcy50cmVlQWRhcHRlci5nZXRDaGlsZE5vZGVzKHBhcmVudCksXG4gICAgICAgICAgICAgICAgdGV4dE5vZGVJZHggPSBoYXNGb3N0ZXJQYXJlbnQgJiYgbXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbi5iZWZvcmVFbGVtZW50ID9cbiAgICAgICAgICAgICAgICBzaWJsaW5ncy5pbmRleE9mKG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24uYmVmb3JlRWxlbWVudCkgLSAxIDpcbiAgICAgICAgICAgICAgICBzaWJsaW5ncy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgIHRleHROb2RlID0gc2libGluZ3NbdGV4dE5vZGVJZHhdO1xuXG4gICAgICAgICAgICAvL05PVEU6IGlmIHdlIGhhdmUgbG9jYXRpb24gYXNzaWduZWQgYnkgYW5vdGhlciB0b2tlbiwgdGhlbiBqdXN0IHVwZGF0ZSBlbmQgcG9zaXRpb25cbiAgICAgICAgICAgIGlmICh0ZXh0Tm9kZS5fX2xvY2F0aW9uKVxuICAgICAgICAgICAgICAgIHRleHROb2RlLl9fbG9jYXRpb24uZW5kT2Zmc2V0ID0gdG9rZW4ubG9jYXRpb24uZW5kT2Zmc2V0O1xuXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUuX19sb2NhdGlvbiA9IHRva2VuLmxvY2F0aW9uO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIERPQ1VNRU5UX01PREUgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbCcpLkRPQ1VNRU5UX01PREU7XG5cbi8vTm9kZSBjb25zdHJ1Y3Rpb25cbmV4cG9ydHMuY3JlYXRlRG9jdW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnQnLFxuICAgICAgICBtb2RlOiBET0NVTUVOVF9NT0RFLk5PX1FVSVJLUyxcbiAgICAgICAgY2hpbGROb2RlczogW11cbiAgICB9O1xufTtcblxuZXhwb3J0cy5jcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVOYW1lOiAnI2RvY3VtZW50LWZyYWdtZW50JyxcbiAgICAgICAgY2hpbGROb2RlczogW11cbiAgICB9O1xufTtcblxuZXhwb3J0cy5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKHRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgYXR0cnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogdGFnTmFtZSxcbiAgICAgICAgdGFnTmFtZTogdGFnTmFtZSxcbiAgICAgICAgYXR0cnM6IGF0dHJzLFxuICAgICAgICBuYW1lc3BhY2VVUkk6IG5hbWVzcGFjZVVSSSxcbiAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgIHBhcmVudE5vZGU6IG51bGxcbiAgICB9O1xufTtcblxuZXhwb3J0cy5jcmVhdGVDb21tZW50Tm9kZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZU5hbWU6ICcjY29tbWVudCcsXG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIHBhcmVudE5vZGU6IG51bGxcbiAgICB9O1xufTtcblxudmFyIGNyZWF0ZVRleHROb2RlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZU5hbWU6ICcjdGV4dCcsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgcGFyZW50Tm9kZTogbnVsbFxuICAgIH07XG59O1xuXG5cbi8vVHJlZSBtdXRhdGlvblxudmFyIGFwcGVuZENoaWxkID0gZXhwb3J0cy5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uIChwYXJlbnROb2RlLCBuZXdOb2RlKSB7XG4gICAgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLnB1c2gobmV3Tm9kZSk7XG4gICAgbmV3Tm9kZS5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbn07XG5cbnZhciBpbnNlcnRCZWZvcmUgPSBleHBvcnRzLmluc2VydEJlZm9yZSA9IGZ1bmN0aW9uIChwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gICAgdmFyIGluc2VydGlvbklkeCA9IHBhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpO1xuXG4gICAgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLnNwbGljZShpbnNlcnRpb25JZHgsIDAsIG5ld05vZGUpO1xuICAgIG5ld05vZGUucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG59O1xuXG5leHBvcnRzLnNldFRlbXBsYXRlQ29udGVudCA9IGZ1bmN0aW9uICh0ZW1wbGF0ZUVsZW1lbnQsIGNvbnRlbnRFbGVtZW50KSB7XG4gICAgdGVtcGxhdGVFbGVtZW50LmNvbnRlbnQgPSBjb250ZW50RWxlbWVudDtcbn07XG5cbmV4cG9ydHMuZ2V0VGVtcGxhdGVDb250ZW50ID0gZnVuY3Rpb24gKHRlbXBsYXRlRWxlbWVudCkge1xuICAgIHJldHVybiB0ZW1wbGF0ZUVsZW1lbnQuY29udGVudDtcbn07XG5cbmV4cG9ydHMuc2V0RG9jdW1lbnRUeXBlID0gZnVuY3Rpb24gKGRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICB2YXIgZG9jdHlwZU5vZGUgPSBudWxsO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb2N1bWVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChkb2N1bWVudC5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lID09PSAnI2RvY3VtZW50VHlwZScpIHtcbiAgICAgICAgICAgIGRvY3R5cGVOb2RlID0gZG9jdW1lbnQuY2hpbGROb2Rlc1tpXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIGRvY3R5cGVOb2RlLm5hbWUgPSBuYW1lO1xuICAgICAgICBkb2N0eXBlTm9kZS5wdWJsaWNJZCA9IHB1YmxpY0lkO1xuICAgICAgICBkb2N0eXBlTm9kZS5zeXN0ZW1JZCA9IHN5c3RlbUlkO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICBhcHBlbmRDaGlsZChkb2N1bWVudCwge1xuICAgICAgICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnRUeXBlJyxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBwdWJsaWNJZDogcHVibGljSWQsXG4gICAgICAgICAgICBzeXN0ZW1JZDogc3lzdGVtSWRcbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuZXhwb3J0cy5zZXREb2N1bWVudE1vZGUgPSBmdW5jdGlvbiAoZG9jdW1lbnQsIG1vZGUpIHtcbiAgICBkb2N1bWVudC5tb2RlID0gbW9kZTtcbn07XG5cbmV4cG9ydHMuZ2V0RG9jdW1lbnRNb2RlID0gZnVuY3Rpb24gKGRvY3VtZW50KSB7XG4gICAgcmV0dXJuIGRvY3VtZW50Lm1vZGU7XG59O1xuXG5leHBvcnRzLmRldGFjaE5vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIGlmIChub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgdmFyIGlkeCA9IG5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzLmluZGV4T2Yobm9kZSk7XG5cbiAgICAgICAgbm9kZS5wYXJlbnROb2RlLmNoaWxkTm9kZXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIG5vZGUucGFyZW50Tm9kZSA9IG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0cy5pbnNlcnRUZXh0ID0gZnVuY3Rpb24gKHBhcmVudE5vZGUsIHRleHQpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICB2YXIgcHJldk5vZGUgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXNbcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgIGlmIChwcmV2Tm9kZS5ub2RlTmFtZSA9PT0gJyN0ZXh0Jykge1xuICAgICAgICAgICAgcHJldk5vZGUudmFsdWUgKz0gdGV4dDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGVuZENoaWxkKHBhcmVudE5vZGUsIGNyZWF0ZVRleHROb2RlKHRleHQpKTtcbn07XG5cbmV4cG9ydHMuaW5zZXJ0VGV4dEJlZm9yZSA9IGZ1bmN0aW9uIChwYXJlbnROb2RlLCB0ZXh0LCByZWZlcmVuY2VOb2RlKSB7XG4gICAgdmFyIHByZXZOb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzW3BhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpIC0gMV07XG5cbiAgICBpZiAocHJldk5vZGUgJiYgcHJldk5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCcpXG4gICAgICAgIHByZXZOb2RlLnZhbHVlICs9IHRleHQ7XG4gICAgZWxzZVxuICAgICAgICBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgY3JlYXRlVGV4dE5vZGUodGV4dCksIHJlZmVyZW5jZU5vZGUpO1xufTtcblxuZXhwb3J0cy5hZG9wdEF0dHJpYnV0ZXMgPSBmdW5jdGlvbiAocmVjaXBpZW50LCBhdHRycykge1xuICAgIHZhciByZWNpcGllbnRBdHRyc01hcCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWNpcGllbnQuYXR0cnMubGVuZ3RoOyBpKyspXG4gICAgICAgIHJlY2lwaWVudEF0dHJzTWFwLnB1c2gocmVjaXBpZW50LmF0dHJzW2ldLm5hbWUpO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xuICAgICAgICBpZiAocmVjaXBpZW50QXR0cnNNYXAuaW5kZXhPZihhdHRyc1tqXS5uYW1lKSA9PT0gLTEpXG4gICAgICAgICAgICByZWNpcGllbnQuYXR0cnMucHVzaChhdHRyc1tqXSk7XG4gICAgfVxufTtcblxuXG4vL1RyZWUgdHJhdmVyc2luZ1xuZXhwb3J0cy5nZXRGaXJzdENoaWxkID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZE5vZGVzWzBdO1xufTtcblxuZXhwb3J0cy5nZXRDaGlsZE5vZGVzID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZE5vZGVzO1xufTtcblxuZXhwb3J0cy5nZXRQYXJlbnROb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5wYXJlbnROb2RlO1xufTtcblxuZXhwb3J0cy5nZXRBdHRyTGlzdCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuYXR0cnM7XG59O1xuXG4vL05vZGUgZGF0YVxuZXhwb3J0cy5nZXRUYWdOYW1lID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudC50YWdOYW1lO1xufTtcblxuZXhwb3J0cy5nZXROYW1lc3BhY2VVUkkgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5hbWVzcGFjZVVSSTtcbn07XG5cbmV4cG9ydHMuZ2V0VGV4dE5vZGVDb250ZW50ID0gZnVuY3Rpb24gKHRleHROb2RlKSB7XG4gICAgcmV0dXJuIHRleHROb2RlLnZhbHVlO1xufTtcblxuZXhwb3J0cy5nZXRDb21tZW50Tm9kZUNvbnRlbnQgPSBmdW5jdGlvbiAoY29tbWVudE5vZGUpIHtcbiAgICByZXR1cm4gY29tbWVudE5vZGUuZGF0YTtcbn07XG5cbmV4cG9ydHMuZ2V0RG9jdW1lbnRUeXBlTm9kZU5hbWUgPSBmdW5jdGlvbiAoZG9jdHlwZU5vZGUpIHtcbiAgICByZXR1cm4gZG9jdHlwZU5vZGUubmFtZTtcbn07XG5cbmV4cG9ydHMuZ2V0RG9jdW1lbnRUeXBlTm9kZVB1YmxpY0lkID0gZnVuY3Rpb24gKGRvY3R5cGVOb2RlKSB7XG4gICAgcmV0dXJuIGRvY3R5cGVOb2RlLnB1YmxpY0lkO1xufTtcblxuZXhwb3J0cy5nZXREb2N1bWVudFR5cGVOb2RlU3lzdGVtSWQgPSBmdW5jdGlvbiAoZG9jdHlwZU5vZGUpIHtcbiAgICByZXR1cm4gZG9jdHlwZU5vZGUuc3lzdGVtSWQ7XG59O1xuXG4vL05vZGUgdHlwZXNcbmV4cG9ydHMuaXNUZXh0Tm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCc7XG59O1xuXG5leHBvcnRzLmlzQ29tbWVudE5vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI2NvbW1lbnQnO1xufTtcblxuZXhwb3J0cy5pc0RvY3VtZW50VHlwZU5vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI2RvY3VtZW50VHlwZSc7XG59O1xuXG5leHBvcnRzLmlzRWxlbWVudE5vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiAhIW5vZGUudGFnTmFtZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBET0NVTUVOVF9NT0RFID0gcmVxdWlyZSgnLi9odG1sJykuRE9DVU1FTlRfTU9ERTtcblxuLy9Db25zdFxudmFyIFZBTElEX0RPQ1RZUEVfTkFNRSA9ICdodG1sJyxcbiAgICBRVUlSS1NfTU9ERV9TWVNURU1fSUQgPSAnaHR0cDovL3d3dy5pYm0uY29tL2RhdGEvZHRkL3YxMS9pYm14aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCcsXG4gICAgUVVJUktTX01PREVfUFVCTElDX0lEX1BSRUZJWEVTID0gW1xuICAgICAgICAnKy8vc2lsbWFyaWwvL2R0ZCBodG1sIHBybyB2MHIxMSAxOTk3MDEwMS8vZW4nLFxuICAgICAgICAnLS8vYWR2YXNvZnQgbHRkLy9kdGQgaHRtbCAzLjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvL2VuJyxcbiAgICAgICAgJy0vL2FzLy9kdGQgaHRtbCAzLjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvL2VuJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBsZXZlbCAxLy9lbicsXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgbGV2ZWwgMi8vZW4nLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdCBsZXZlbCAxLy9lbicsXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0IGxldmVsIDIvL2VuJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QvL2VuJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMC8vZW4nLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4xZS8vZW4nLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4wLy9lbicsXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjAvL2VuLy8nLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4yIGZpbmFsLy9lbicsXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjIvL2VuJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIDMvL2VuJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDAvL2VuJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDAvL2VuLy8yLjAnLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMS8vZW4nLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMS8vZW4vLzIuMCcsXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAyLy9lbicsXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAyLy9lbi8vMi4wJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDMvL2VuJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDMvL2VuLy8zLjAnLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDAvL2VuJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAwLy9lbi8vMi4wJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAxLy9lbicsXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMS8vZW4vLzIuMCcsXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMi8vZW4nLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDIvL2VuLy8yLjAnLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDMvL2VuJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAzLy9lbi8vMy4wJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdC8vZW4nLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0Ly9lbi8vMi4wJyxcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdC8vZW4vLzMuMCcsXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbC8vZW4nLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwvL2VuLy8yLjAnLFxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwvL2VuLy8zLjAnLFxuICAgICAgICAnLS8vbWV0cml1cy8vZHRkIG1ldHJpdXMgcHJlc2VudGF0aW9uYWwvL2VuJyxcbiAgICAgICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCBodG1sIHN0cmljdC8vZW4nLFxuICAgICAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIGh0bWwvL2VuJyxcbiAgICAgICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCB0YWJsZXMvL2VuJyxcbiAgICAgICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCBodG1sIHN0cmljdC8vZW4nLFxuICAgICAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0bWwvL2VuJyxcbiAgICAgICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCB0YWJsZXMvL2VuJyxcbiAgICAgICAgJy0vL25ldHNjYXBlIGNvbW0uIGNvcnAuLy9kdGQgaHRtbC8vZW4nLFxuICAgICAgICAnLS8vbmV0c2NhcGUgY29tbS4gY29ycC4vL2R0ZCBzdHJpY3QgaHRtbC8vZW4nLFxuICAgICAgICAnLS8vb1xcJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgMi4wLy9lbicsXG4gICAgICAgICctLy9vXFwncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCBleHRlbmRlZCAxLjAvL2VuJyxcbiAgICAgICAgJy0vL3NweWdsYXNzLy9kdGQgaHRtbCAyLjAgZXh0ZW5kZWQvL2VuJyxcbiAgICAgICAgJy0vL3NxLy9kdGQgaHRtbCAyLjAgaG90bWV0YWwgKyBleHRlbnNpb25zLy9lbicsXG4gICAgICAgICctLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90amF2YSBodG1sLy9lbicsXG4gICAgICAgICctLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90amF2YSBzdHJpY3QgaHRtbC8vZW4nLFxuICAgICAgICAnLS8vdzNjLy9kdGQgaHRtbCAzIDE5OTUtMDMtMjQvL2VuJyxcbiAgICAgICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yIGRyYWZ0Ly9lbicsXG4gICAgICAgICctLy93M2MvL2R0ZCBodG1sIDMuMiBmaW5hbC8vZW4nLFxuICAgICAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjIvL2VuJyxcbiAgICAgICAgJy0vL3czYy8vZHRkIGh0bWwgMy4ycyBkcmFmdC8vZW4nLFxuICAgICAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAgZnJhbWVzZXQvL2VuJyxcbiAgICAgICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vZW4nLFxuICAgICAgICAnLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50YWwgMTk5NjA3MTIvL2VuJyxcbiAgICAgICAgJy0vL3czYy8vZHRkIGh0bWwgZXhwZXJpbWVudGFsIDk3MDQyMS8vZW4nLFxuICAgICAgICAnLS8vdzNjLy9kdGQgdzMgaHRtbC8vZW4nLFxuICAgICAgICAnLS8vdzNvLy9kdGQgdzMgaHRtbCAzLjAvL2VuJyxcbiAgICAgICAgJy0vL3czby8vZHRkIHczIGh0bWwgMy4wLy9lbi8vJyxcbiAgICAgICAgJy0vL3dlYnRlY2hzLy9kdGQgbW96aWxsYSBodG1sIDIuMC8vZW4nLFxuICAgICAgICAnLS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwvL2VuJ1xuICAgIF0sXG4gICAgUVVJUktTX01PREVfTk9fU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyA9IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUy5jb25jYXQoW1xuICAgICAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8nLFxuICAgICAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIHRyYW5zaXRpb25hbC8vJ1xuICAgIF0pLFxuICAgIFFVSVJLU19NT0RFX1BVQkxJQ19JRFMgPSBbXG4gICAgICAgICctLy93M28vL2R0ZCB3MyBodG1sIHN0cmljdCAzLjAvL2VuLy8nLFxuICAgICAgICAnLS93M2MvZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC9lbicsXG4gICAgICAgICdodG1sJ1xuICAgIF0sXG4gICAgTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTID0gW1xuICAgICAgICAnLS8vVzNDLy9EVEQgWEhUTUwgMS4wIEZyYW1lc2V0Ly8nLFxuICAgICAgICAnLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vJ1xuICAgIF0sXG4gICAgTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTID0gTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTLmNvbmNhdChbXG4gICAgICAgICctLy9XM0MvL0RURCBIVE1MIDQuMDEgRnJhbWVzZXQvLycsXG4gICAgICAgICctLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy8nXG4gICAgXSk7XG5cblxuLy9VdGlsc1xuZnVuY3Rpb24gZW5xdW90ZURvY3R5cGVJZChpZCkge1xuICAgIHZhciBxdW90ZSA9IGlkLmluZGV4T2YoJ1wiJykgIT09IC0xID8gJ1xcJycgOiAnXCInO1xuXG4gICAgcmV0dXJuIHF1b3RlICsgaWQgKyBxdW90ZTtcbn1cblxuZnVuY3Rpb24gaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHB1YmxpY0lkLmluZGV4T2YocHJlZml4ZXNbaV0pID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5cbi8vQVBJXG5leHBvcnRzLmdldERvY3VtZW50TW9kZSA9IGZ1bmN0aW9uIChuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICBpZiAobmFtZSAhPT0gVkFMSURfRE9DVFlQRV9OQU1FKVxuICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG5cbiAgICBpZiAoc3lzdGVtSWQgJiYgc3lzdGVtSWQudG9Mb3dlckNhc2UoKSA9PT0gUVVJUktTX01PREVfU1lTVEVNX0lEKVxuICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG5cbiAgICBpZiAocHVibGljSWQgIT09IG51bGwpIHtcbiAgICAgICAgcHVibGljSWQgPSBwdWJsaWNJZC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGlmIChRVUlSS1NfTU9ERV9QVUJMSUNfSURTLmluZGV4T2YocHVibGljSWQpID4gLTEpXG4gICAgICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG5cbiAgICAgICAgdmFyIHByZWZpeGVzID0gc3lzdGVtSWQgPT09IG51bGwgPyBRVUlSS1NfTU9ERV9OT19TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTIDogUVVJUktTX01PREVfUFVCTElDX0lEX1BSRUZJWEVTO1xuXG4gICAgICAgIGlmIChoYXNQcmVmaXgocHVibGljSWQsIHByZWZpeGVzKSlcbiAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcblxuICAgICAgICBwcmVmaXhlcyA9IHN5c3RlbUlkID09PSBudWxsID8gTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTIDogTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTO1xuXG4gICAgICAgIGlmIChoYXNQcmVmaXgocHVibGljSWQsIHByZWZpeGVzKSlcbiAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLkxJTUlURURfUVVJUktTO1xuICAgIH1cblxuICAgIHJldHVybiBET0NVTUVOVF9NT0RFLk5PX1FVSVJLUztcbn07XG5cbmV4cG9ydHMuc2VyaWFsaXplQ29udGVudCA9IGZ1bmN0aW9uIChuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICB2YXIgc3RyID0gJyFET0NUWVBFICc7XG5cbiAgICBpZiAobmFtZSlcbiAgICAgICAgc3RyICs9IG5hbWU7XG5cbiAgICBpZiAocHVibGljSWQgIT09IG51bGwpXG4gICAgICAgIHN0ciArPSAnIFBVQkxJQyAnICsgZW5xdW90ZURvY3R5cGVJZChwdWJsaWNJZCk7XG5cbiAgICBlbHNlIGlmIChzeXN0ZW1JZCAhPT0gbnVsbClcbiAgICAgICAgc3RyICs9ICcgU1lTVEVNJztcblxuICAgIGlmIChzeXN0ZW1JZCAhPT0gbnVsbClcbiAgICAgICAgc3RyICs9ICcgJyArIGVucXVvdGVEb2N0eXBlSWQoc3lzdGVtSWQpO1xuXG4gICAgcmV0dXJuIHN0cjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIEV4cG9zZS4gKi9cbm1vZHVsZS5leHBvcnRzID0gZ2V0UHJvcGVydHlJbmZvcm1hdGlvbjtcblxuLyogQ29uc3RhbnRzLiAqL1xudmFyIFVTRV9BVFRSSUJVVEUgPSAweDE7XG52YXIgVVNFX1BST1BFUlRZID0gMHgyO1xudmFyIEJPT0xFQU5fVkFMVUUgPSAweDg7XG52YXIgTlVNRVJJQ19WQUxVRSA9IDB4MTA7XG52YXIgUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSA9IDB4MjAgfCAweDEwO1xudmFyIE9WRVJMT0FERURfQk9PTEVBTl9WQUxVRSA9IDB4NDA7XG52YXIgU1BBQ0VfU0VQQVJBVEVEID0gMHg4MDtcbnZhciBDT01NQV9TRVBBUkFURUQgPSAweDEwMDtcblxuLyogTWFwIG9mIHByb3BlcnRpZXMuIE5hbWVzIGFyZSBjYW1lbC1jYXNlZCBwcm9wZXJ0aWVzLiAqL1xudmFyIHByb3BlcnR5Q29uZmlnID0ge1xuICAvKiBTdGFuZGFyZCBQcm9wZXJ0aWVzLiAqL1xuICBhYmJyOiBudWxsLFxuICBhY2NlcHQ6IENPTU1BX1NFUEFSQVRFRCxcbiAgYWNjZXB0Q2hhcnNldDogU1BBQ0VfU0VQQVJBVEVELFxuICBhY2Nlc3NLZXk6IFNQQUNFX1NFUEFSQVRFRCxcbiAgYWN0aW9uOiBudWxsLFxuICBhbGxvd0Z1bGxTY3JlZW46IFVTRV9BVFRSSUJVVEUgfCBCT09MRUFOX1ZBTFVFLFxuICBhbGxvd1RyYW5zcGFyZW5jeTogVVNFX0FUVFJJQlVURSxcbiAgYWx0OiBudWxsLFxuICAvKiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhdHRyLWxpbmstYXMgKi9cbiAgYXM6IG51bGwsXG4gIGFzeW5jOiBCT09MRUFOX1ZBTFVFLFxuICBhdXRvQ29tcGxldGU6IFNQQUNFX1NFUEFSQVRFRCxcbiAgYXV0b0ZvY3VzOiBCT09MRUFOX1ZBTFVFLFxuICBhdXRvUGxheTogQk9PTEVBTl9WQUxVRSxcbiAgY2FwdHVyZTogVVNFX0FUVFJJQlVURSB8IEJPT0xFQU5fVkFMVUUsXG4gIGNlbGxQYWRkaW5nOiBudWxsLFxuICBjZWxsU3BhY2luZzogbnVsbCxcbiAgY2hhbGxlbmdlOiBVU0VfQVRUUklCVVRFLFxuICBjaGFyU2V0OiBVU0VfQVRUUklCVVRFLFxuICBjaGVja2VkOiBVU0VfUFJPUEVSVFkgfCBCT09MRUFOX1ZBTFVFLFxuICBjaXRlOiBudWxsLFxuICAvKiBUbyBzZXQgY2xhc3NOYW1lIG9uIFNWRyBlbGVtZW50cywgaXQncyBuZWNlc3NhcnkgdG9cbiAgICogdXNlIC5zZXRBdHRyaWJ1dGU7IHRoaXMgd29ya3Mgb24gSFRNTCBlbGVtZW50cyB0b29cbiAgICogaW4gYWxsIGJyb3dzZXJzIGV4Y2VwdCBJRTguICovXG4gIGNsYXNzTmFtZTogVVNFX0FUVFJJQlVURSB8IFNQQUNFX1NFUEFSQVRFRCxcbiAgY29sczogVVNFX0FUVFJJQlVURSB8IFBPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gIGNvbFNwYW46IG51bGwsXG4gIGNvbW1hbmQ6IG51bGwsXG4gIGNvbnRlbnQ6IG51bGwsXG4gIGNvbnRlbnRFZGl0YWJsZTogbnVsbCxcbiAgY29udGV4dE1lbnU6IFVTRV9BVFRSSUJVVEUsXG4gIGNvbnRyb2xzOiBVU0VfUFJPUEVSVFkgfCBCT09MRUFOX1ZBTFVFLFxuICAvKiBodHRwczovL2dpdGh1Yi5jb20vV0lDRy9jb250cm9scy1saXN0L2Jsb2IvZ2gtcGFnZXMvZXhwbGFpbmVyLm1kICovXG4gIGNvbnRyb2xzTGlzdDogU1BBQ0VfU0VQQVJBVEVELFxuICBjb29yZHM6IE5VTUVSSUNfVkFMVUUgfCBDT01NQV9TRVBBUkFURUQsXG4gIGNyb3NzT3JpZ2luOiBudWxsLFxuICAvKiBGb3IgYDxvYmplY3QgLz5gIGFjdHMgYXMgYHNyY2AuICovXG4gIGRhdGE6IG51bGwsXG4gIGRhdGVUaW1lOiBVU0VfQVRUUklCVVRFLFxuICBkZWZhdWx0OiBCT09MRUFOX1ZBTFVFLFxuICBkZWZlcjogQk9PTEVBTl9WQUxVRSxcbiAgZGlyOiBudWxsLFxuICBkaXJOYW1lOiBudWxsLFxuICBkaXNhYmxlZDogVVNFX0FUVFJJQlVURSB8IEJPT0xFQU5fVkFMVUUsXG4gIGRvd25sb2FkOiBPVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUsXG4gIGRyYWdnYWJsZTogbnVsbCxcbiAgZHJvcHpvbmU6IFNQQUNFX1NFUEFSQVRFRCxcbiAgZW5jVHlwZTogbnVsbCxcbiAgZm9ybTogVVNFX0FUVFJJQlVURSxcbiAgZm9ybUFjdGlvbjogVVNFX0FUVFJJQlVURSxcbiAgZm9ybUVuY1R5cGU6IFVTRV9BVFRSSUJVVEUsXG4gIGZvcm1NZXRob2Q6IFVTRV9BVFRSSUJVVEUsXG4gIGZvcm1Ob1ZhbGlkYXRlOiBCT09MRUFOX1ZBTFVFLFxuICBmb3JtVGFyZ2V0OiBVU0VfQVRUUklCVVRFLFxuICBmcmFtZUJvcmRlcjogVVNFX0FUVFJJQlVURSxcbiAgaGVhZGVyczogU1BBQ0VfU0VQQVJBVEVELFxuICBoZWlnaHQ6IFVTRV9BVFRSSUJVVEUgfCBQT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICBoaWRkZW46IFVTRV9BVFRSSUJVVEUgfCBCT09MRUFOX1ZBTFVFLFxuICBoaWdoOiBOVU1FUklDX1ZBTFVFLFxuICBocmVmOiBudWxsLFxuICBocmVmTGFuZzogbnVsbCxcbiAgaHRtbEZvcjogU1BBQ0VfU0VQQVJBVEVELFxuICBodHRwRXF1aXY6IFNQQUNFX1NFUEFSQVRFRCxcbiAgaWQ6IFVTRV9QUk9QRVJUWSxcbiAgaW5wdXRNb2RlOiBVU0VfQVRUUklCVVRFLFxuICAvKiBXZWIgQ29tcG9uZW50cyAqL1xuICBpczogVVNFX0FUVFJJQlVURSxcbiAgaXNNYXA6IEJPT0xFQU5fVkFMVUUsXG4gIGtleVBhcmFtczogVVNFX0FUVFJJQlVURSxcbiAga2V5VHlwZTogVVNFX0FUVFJJQlVURSxcbiAga2luZDogbnVsbCxcbiAgbGFiZWw6IG51bGwsXG4gIGxhbmc6IG51bGwsXG4gIGxpc3Q6IFVTRV9BVFRSSUJVVEUsXG4gIGxvb3A6IFVTRV9QUk9QRVJUWSB8IEJPT0xFQU5fVkFMVUUsXG4gIGxvdzogTlVNRVJJQ19WQUxVRSxcbiAgbWFuaWZlc3Q6IFVTRV9BVFRSSUJVVEUsXG4gIG1hcmdpbkhlaWdodDogTlVNRVJJQ19WQUxVRSxcbiAgbWFyZ2luV2lkdGg6IE5VTUVSSUNfVkFMVUUsXG4gIG1heDogbnVsbCxcbiAgbWF4TGVuZ3RoOiBVU0VfQVRUUklCVVRFIHwgUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgbWVkaWE6IFVTRV9BVFRSSUJVVEUsXG4gIG1lZGlhR3JvdXA6IG51bGwsXG4gIG1lbnU6IG51bGwsXG4gIG1ldGhvZDogbnVsbCxcbiAgbWluOiBudWxsLFxuICBtaW5MZW5ndGg6IFVTRV9BVFRSSUJVVEUgfCBQT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICBtdWx0aXBsZTogVVNFX1BST1BFUlRZIHwgQk9PTEVBTl9WQUxVRSxcbiAgbXV0ZWQ6IFVTRV9QUk9QRVJUWSB8IEJPT0xFQU5fVkFMVUUsXG4gIG5hbWU6IG51bGwsXG4gIG5vbmNlOiBudWxsLFxuICBub1ZhbGlkYXRlOiBCT09MRUFOX1ZBTFVFLFxuICBvcGVuOiBCT09MRUFOX1ZBTFVFLFxuICBvcHRpbXVtOiBOVU1FUklDX1ZBTFVFLFxuICBwYXR0ZXJuOiBudWxsLFxuICBwaW5nOiBTUEFDRV9TRVBBUkFURUQsXG4gIHBsYWNlaG9sZGVyOiBudWxsLFxuICAvKiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhdHRyLXZpZGVvLXBsYXlzaW5saW5lICovXG4gIHBsYXlzSW5saW5lOiBCT09MRUFOX1ZBTFVFLFxuICBwb3N0ZXI6IG51bGwsXG4gIHByZWxvYWQ6IG51bGwsXG4gIC8qIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1oZWFkLXByb2ZpbGUgKi9cbiAgcHJvZmlsZTogbnVsbCxcbiAgcmFkaW9Hcm91cDogbnVsbCxcbiAgcmVhZE9ubHk6IFVTRV9QUk9QRVJUWSB8IEJPT0xFQU5fVkFMVUUsXG4gIC8qIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2F0dHItbGluay1yZWZlcnJlcnBvbGljeSAqL1xuICByZWZlcnJlclBvbGljeTogbnVsbCxcbiAgLyogYHJlbGAgaXMgYHJlbExpc3RgIGluIERPTSAqL1xuICByZWw6IFNQQUNFX1NFUEFSQVRFRCB8IFVTRV9BVFRSSUJVVEUsXG4gIHJlcXVpcmVkOiBCT09MRUFOX1ZBTFVFLFxuICByZXZlcnNlZDogQk9PTEVBTl9WQUxVRSxcbiAgcm9sZTogVVNFX0FUVFJJQlVURSxcbiAgcm93czogVVNFX0FUVFJJQlVURSB8IFBPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gIHJvd1NwYW46IFBPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gIHNhbmRib3g6IFNQQUNFX1NFUEFSQVRFRCxcbiAgc2NvcGU6IG51bGwsXG4gIHNjb3BlZDogQk9PTEVBTl9WQUxVRSxcbiAgc2Nyb2xsaW5nOiBudWxsLFxuICBzZWFtbGVzczogVVNFX0FUVFJJQlVURSB8IEJPT0xFQU5fVkFMVUUsXG4gIHNlbGVjdGVkOiBVU0VfUFJPUEVSVFkgfCBCT09MRUFOX1ZBTFVFLFxuICBzaGFwZTogbnVsbCxcbiAgc2l6ZTogVVNFX0FUVFJJQlVURSB8IFBPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gIHNpemVzOiBVU0VfQVRUUklCVVRFIHwgU1BBQ0VfU0VQQVJBVEVELFxuICAvKiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhdHRyLXNsb3QgKi9cbiAgc2xvdDogbnVsbCxcbiAgc29ydGFibGU6IEJPT0xFQU5fVkFMVUUsXG4gIHNvcnRlZDogU1BBQ0VfU0VQQVJBVEVELFxuICBzcGFuOiBQT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICBzcGVsbENoZWNrOiBudWxsLFxuICBzcmM6IG51bGwsXG4gIHNyY0RvYzogVVNFX1BST1BFUlRZLFxuICBzcmNMYW5nOiBudWxsLFxuICBzcmNTZXQ6IFVTRV9BVFRSSUJVVEUgfCBDT01NQV9TRVBBUkFURUQsXG4gIHN0YXJ0OiBOVU1FUklDX1ZBTFVFLFxuICBzdGVwOiBudWxsLFxuICBzdHlsZTogbnVsbCxcbiAgc3VtbWFyeTogbnVsbCxcbiAgdGFiSW5kZXg6IE5VTUVSSUNfVkFMVUUsXG4gIHRhcmdldDogbnVsbCxcbiAgdGl0bGU6IG51bGwsXG4gIHRyYW5zbGF0ZTogbnVsbCxcbiAgdHlwZTogbnVsbCxcbiAgdHlwZU11c3RNYXRjaDogQk9PTEVBTl9WQUxVRSxcbiAgdXNlTWFwOiBudWxsLFxuICB2YWx1ZTogVVNFX1BST1BFUlRZLFxuICB2b2x1bWU6IFBPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gIHdpZHRoOiBVU0VfQVRUUklCVVRFIHwgTlVNRVJJQ19WQUxVRSxcbiAgd21vZGU6IFVTRV9BVFRSSUJVVEUsXG4gIHdyYXA6IG51bGwsXG5cbiAgLyogTm9uLXN0YW5kYXJkIFByb3BlcnRpZXMuICovXG5cbiAgLyogYGF1dG9DYXBpdGFsaXplYCBhbmQgYGF1dG9Db3JyZWN0YCBhcmUgc3VwcG9ydGVkIGluXG4gICAqIE1vYmlsZSBTYWZhcmkgZm9yIGtleWJvYXJkIGhpbnRzLiAqL1xuICBhdXRvQ2FwaXRhbGl6ZTogbnVsbCxcbiAgYXV0b0NvcnJlY3Q6IG51bGwsXG4gIC8qIGBhdXRvU2F2ZWAgYWxsb3dzIFdlYktpdC9CbGluayB0byBwZXJzaXN0IHZhbHVlcyBvZlxuICAgKiBpbnB1dCBmaWVsZHMgb24gcGFnZSByZWxvYWRzICovXG4gIGF1dG9TYXZlOiBudWxsLFxuICAvKiBgaXRlbVByb3BgLCBgaXRlbVNjb3BlYCwgYGl0ZW1UeXBlYCBhcmUgZm9yIE1pY3JvZGF0YVxuICAgKiBzdXBwb3J0LiBTZWUgaHR0cDovL3NjaGVtYS5vcmcvZG9jcy9ncy5odG1sICovXG4gIGl0ZW1Qcm9wOiBVU0VfQVRUUklCVVRFIHwgU1BBQ0VfU0VQQVJBVEVELFxuICBpdGVtU2NvcGU6IFVTRV9BVFRSSUJVVEUgfCBCT09MRUFOX1ZBTFVFLFxuICBpdGVtVHlwZTogVVNFX0FUVFJJQlVURSB8IFNQQUNFX1NFUEFSQVRFRCxcbiAgLyogYGl0ZW1JRGAgYW5kIGBpdGVtUmVmYCBhcmUgZm9yIE1pY3JvZGF0YSBzdXBwb3J0IGFzIHdlbGxcbiAgICogYnV0IG9ubHkgc3BlY2lmaWVkIGluIHRoZSB0aGUgV0hBVFdHIHNwZWMgZG9jdW1lbnQuXG4gICAqIFNlZSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9cbiAgICogbWljcm9kYXRhLmh0bWwjbWljcm9kYXRhLWRvbS1hcGkgKi9cbiAgaXRlbUlEOiBVU0VfQVRUUklCVVRFLFxuICBpdGVtUmVmOiBVU0VfQVRUUklCVVRFIHwgU1BBQ0VfU0VQQVJBVEVELFxuICAvKiBgcHJvcGVydHlgIGlzIHN1cHBvcnRlZCBmb3IgT3BlbkdyYXBoIGluIG1ldGEgdGFncy4gKi9cbiAgcHJvcGVydHk6IG51bGwsXG4gIC8qIGByZXN1bHRzYCBzaG93IGxvb2tpbmcgZ2xhc3MgaWNvbiBhbmQgcmVjZW50IHNlYXJjaGVzXG4gICAqIG9uIGlucHV0IHNlYXJjaCBmaWVsZHMgaW4gV2ViS2l0L0JsaW5rICovXG4gIHJlc3VsdHM6IG51bGwsXG4gIC8qIElFLW9ubHkgYXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHNlY3VyaXR5XG4gICAqIHJlc3RyaWN0aW9ucyBvbiBhbiBpZnJhbWUgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlXG4gICAqIHNhbmRib3ggYXR0cmlidXRlIG9uIElFIDwgMTAgKi9cbiAgc2VjdXJpdHk6IFVTRV9BVFRSSUJVVEUsXG4gIC8qIElFLW9ubHkgYXR0cmlidXRlIHRoYXQgY29udHJvbHMgZm9jdXMgYmVoYXZpb3IgKi9cbiAgdW5zZWxlY3RhYmxlOiBVU0VfQVRUUklCVVRFLFxuXG4gIC8qIEFuY2llbnQuICovXG4gIHhtbExhbmc6IFVTRV9BVFRSSUJVVEUsXG4gIHhtbEJhc2U6IFVTRV9BVFRSSUJVVEVcbn07XG5cbi8qIE1hcCBvZiBwcm9wZXJ0aWVzIHRvIGF0dHJpYnV0ZXMuXG4gKiBOYW1lcyBhcmUgbG93ZXItY2FzZSBwcm9wZXJ0aWVzLlxuICogVmFsdWVzIGFyZSBIVE1MIGF0dHJpYnV0ZXMuICovXG52YXIgcHJvcGVydHlUb0F0dHJpYnV0ZU1hcHBpbmcgPSB7XG4gIHhtbGJhc2U6ICd4bWw6YmFzZScsXG4gIHhtbGxhbmc6ICd4bWw6bGFuZycsXG4gIGNsYXNzbmFtZTogJ2NsYXNzJyxcbiAgaHRtbGZvcjogJ2ZvcicsXG4gIGh0dHBlcXVpdjogJ2h0dHAtZXF1aXYnLFxuICBhY2NlcHRjaGFyc2V0OiAnYWNjZXB0LWNoYXJzZXQnXG59O1xuXG4vKiBFeHBhbmQgY29uZmlnLiAqL1xudmFyIGluZm9ybWF0aW9uID0ge307XG52YXIgcHJvcGVydHk7XG52YXIgbmFtZTtcbnZhciBjb25maWc7XG5cbmdldFByb3BlcnR5SW5mb3JtYXRpb24uYWxsID0gaW5mb3JtYXRpb247XG5cbmZvciAocHJvcGVydHkgaW4gcHJvcGVydHlDb25maWcpIHtcbiAgbmFtZSA9IGxvd2VyKHByb3BlcnR5KTtcbiAgbmFtZSA9IHByb3BlcnR5VG9BdHRyaWJ1dGVNYXBwaW5nW25hbWVdIHx8IG5hbWU7XG4gIGNvbmZpZyA9IHByb3BlcnR5Q29uZmlnW3Byb3BlcnR5XTtcblxuICBpbmZvcm1hdGlvbltuYW1lXSA9IHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHksXG4gICAgbXVzdFVzZUF0dHJpYnV0ZTogY2hlY2soY29uZmlnLCBVU0VfQVRUUklCVVRFKSxcbiAgICBtdXN0VXNlUHJvcGVydHk6IGNoZWNrKGNvbmZpZywgVVNFX1BST1BFUlRZKSxcbiAgICBib29sZWFuOiBjaGVjayhjb25maWcsIEJPT0xFQU5fVkFMVUUpLFxuICAgIG92ZXJsb2FkZWRCb29sZWFuOiBjaGVjayhjb25maWcsIE9WRVJMT0FERURfQk9PTEVBTl9WQUxVRSksXG4gICAgbnVtZXJpYzogY2hlY2soY29uZmlnLCBOVU1FUklDX1ZBTFVFKSxcbiAgICBwb3NpdGl2ZU51bWVyaWM6IGNoZWNrKGNvbmZpZywgUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksXG4gICAgY29tbWFTZXBhcmF0ZWQ6IGNoZWNrKGNvbmZpZywgQ09NTUFfU0VQQVJBVEVEKSxcbiAgICBzcGFjZVNlcGFyYXRlZDogY2hlY2soY29uZmlnLCBTUEFDRV9TRVBBUkFURUQpXG4gIH07XG59XG5cbi8qIEdldCBhIGNvbmZpZyBmb3IgYSBwcm9wZXJ0eS4gKi9cbmZ1bmN0aW9uIGdldFByb3BlcnR5SW5mb3JtYXRpb24ocHJvcGVydHlOYW1lKSB7XG4gIHZhciBpbnNlbnNpdGl2ZSA9IGxvd2VyKHByb3BlcnR5TmFtZSk7XG5cbiAgcmV0dXJuIGluZm9ybWF0aW9uW3Byb3BlcnR5VG9BdHRyaWJ1dGVNYXBwaW5nW2luc2Vuc2l0aXZlXSB8fCBpbnNlbnNpdGl2ZV07XG59XG5cbi8qIENoZWNrIGEgbWFzay4gKi9cbmZ1bmN0aW9uIGNoZWNrKHZhbHVlLCBiaXRtYXNrKSB7XG4gIHJldHVybiAodmFsdWUgJiBiaXRtYXNrKSA9PT0gYml0bWFzaztcbn1cblxuLyogTG93ZXItY2FzZSBhIHN0cmluZy4gKi9cbmZ1bmN0aW9uIGxvd2VyKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVG9rZW5pemVyID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyJyksXG4gICAgSFRNTCA9IHJlcXVpcmUoJy4vaHRtbCcpO1xuXG4vL0FsaWFzZXNcbnZhciAkID0gSFRNTC5UQUdfTkFNRVMsXG4gICAgTlMgPSBIVE1MLk5BTUVTUEFDRVMsXG4gICAgQVRUUlMgPSBIVE1MLkFUVFJTO1xuXG5cbi8vTUlNRSB0eXBlc1xudmFyIE1JTUVfVFlQRVMgPSB7XG4gICAgVEVYVF9IVE1MOiAndGV4dC9odG1sJyxcbiAgICBBUFBMSUNBVElPTl9YTUw6ICdhcHBsaWNhdGlvbi94aHRtbCt4bWwnXG59O1xuXG4vL0F0dHJpYnV0ZXNcbnZhciBERUZJTklUSU9OX1VSTF9BVFRSID0gJ2RlZmluaXRpb251cmwnLFxuICAgIEFESlVTVEVEX0RFRklOSVRJT05fVVJMX0FUVFIgPSAnZGVmaW5pdGlvblVSTCcsXG4gICAgU1ZHX0FUVFJTX0FESlVTVE1FTlRfTUFQID0ge1xuICAgICAgICAnYXR0cmlidXRlbmFtZSc6ICdhdHRyaWJ1dGVOYW1lJyxcbiAgICAgICAgJ2F0dHJpYnV0ZXR5cGUnOiAnYXR0cmlidXRlVHlwZScsXG4gICAgICAgICdiYXNlZnJlcXVlbmN5JzogJ2Jhc2VGcmVxdWVuY3knLFxuICAgICAgICAnYmFzZXByb2ZpbGUnOiAnYmFzZVByb2ZpbGUnLFxuICAgICAgICAnY2FsY21vZGUnOiAnY2FsY01vZGUnLFxuICAgICAgICAnY2xpcHBhdGh1bml0cyc6ICdjbGlwUGF0aFVuaXRzJyxcbiAgICAgICAgJ2RpZmZ1c2Vjb25zdGFudCc6ICdkaWZmdXNlQ29uc3RhbnQnLFxuICAgICAgICAnZWRnZW1vZGUnOiAnZWRnZU1vZGUnLFxuICAgICAgICAnZmlsdGVydW5pdHMnOiAnZmlsdGVyVW5pdHMnLFxuICAgICAgICAnZ2x5cGhyZWYnOiAnZ2x5cGhSZWYnLFxuICAgICAgICAnZ3JhZGllbnR0cmFuc2Zvcm0nOiAnZ3JhZGllbnRUcmFuc2Zvcm0nLFxuICAgICAgICAnZ3JhZGllbnR1bml0cyc6ICdncmFkaWVudFVuaXRzJyxcbiAgICAgICAgJ2tlcm5lbG1hdHJpeCc6ICdrZXJuZWxNYXRyaXgnLFxuICAgICAgICAna2VybmVsdW5pdGxlbmd0aCc6ICdrZXJuZWxVbml0TGVuZ3RoJyxcbiAgICAgICAgJ2tleXBvaW50cyc6ICdrZXlQb2ludHMnLFxuICAgICAgICAna2V5c3BsaW5lcyc6ICdrZXlTcGxpbmVzJyxcbiAgICAgICAgJ2tleXRpbWVzJzogJ2tleVRpbWVzJyxcbiAgICAgICAgJ2xlbmd0aGFkanVzdCc6ICdsZW5ndGhBZGp1c3QnLFxuICAgICAgICAnbGltaXRpbmdjb25lYW5nbGUnOiAnbGltaXRpbmdDb25lQW5nbGUnLFxuICAgICAgICAnbWFya2VyaGVpZ2h0JzogJ21hcmtlckhlaWdodCcsXG4gICAgICAgICdtYXJrZXJ1bml0cyc6ICdtYXJrZXJVbml0cycsXG4gICAgICAgICdtYXJrZXJ3aWR0aCc6ICdtYXJrZXJXaWR0aCcsXG4gICAgICAgICdtYXNrY29udGVudHVuaXRzJzogJ21hc2tDb250ZW50VW5pdHMnLFxuICAgICAgICAnbWFza3VuaXRzJzogJ21hc2tVbml0cycsXG4gICAgICAgICdudW1vY3RhdmVzJzogJ251bU9jdGF2ZXMnLFxuICAgICAgICAncGF0aGxlbmd0aCc6ICdwYXRoTGVuZ3RoJyxcbiAgICAgICAgJ3BhdHRlcm5jb250ZW50dW5pdHMnOiAncGF0dGVybkNvbnRlbnRVbml0cycsXG4gICAgICAgICdwYXR0ZXJudHJhbnNmb3JtJzogJ3BhdHRlcm5UcmFuc2Zvcm0nLFxuICAgICAgICAncGF0dGVybnVuaXRzJzogJ3BhdHRlcm5Vbml0cycsXG4gICAgICAgICdwb2ludHNhdHgnOiAncG9pbnRzQXRYJyxcbiAgICAgICAgJ3BvaW50c2F0eSc6ICdwb2ludHNBdFknLFxuICAgICAgICAncG9pbnRzYXR6JzogJ3BvaW50c0F0WicsXG4gICAgICAgICdwcmVzZXJ2ZWFscGhhJzogJ3ByZXNlcnZlQWxwaGEnLFxuICAgICAgICAncHJlc2VydmVhc3BlY3RyYXRpbyc6ICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyxcbiAgICAgICAgJ3ByaW1pdGl2ZXVuaXRzJzogJ3ByaW1pdGl2ZVVuaXRzJyxcbiAgICAgICAgJ3JlZngnOiAncmVmWCcsXG4gICAgICAgICdyZWZ5JzogJ3JlZlknLFxuICAgICAgICAncmVwZWF0Y291bnQnOiAncmVwZWF0Q291bnQnLFxuICAgICAgICAncmVwZWF0ZHVyJzogJ3JlcGVhdER1cicsXG4gICAgICAgICdyZXF1aXJlZGV4dGVuc2lvbnMnOiAncmVxdWlyZWRFeHRlbnNpb25zJyxcbiAgICAgICAgJ3JlcXVpcmVkZmVhdHVyZXMnOiAncmVxdWlyZWRGZWF0dXJlcycsXG4gICAgICAgICdzcGVjdWxhcmNvbnN0YW50JzogJ3NwZWN1bGFyQ29uc3RhbnQnLFxuICAgICAgICAnc3BlY3VsYXJleHBvbmVudCc6ICdzcGVjdWxhckV4cG9uZW50JyxcbiAgICAgICAgJ3NwcmVhZG1ldGhvZCc6ICdzcHJlYWRNZXRob2QnLFxuICAgICAgICAnc3RhcnRvZmZzZXQnOiAnc3RhcnRPZmZzZXQnLFxuICAgICAgICAnc3RkZGV2aWF0aW9uJzogJ3N0ZERldmlhdGlvbicsXG4gICAgICAgICdzdGl0Y2h0aWxlcyc6ICdzdGl0Y2hUaWxlcycsXG4gICAgICAgICdzdXJmYWNlc2NhbGUnOiAnc3VyZmFjZVNjYWxlJyxcbiAgICAgICAgJ3N5c3RlbWxhbmd1YWdlJzogJ3N5c3RlbUxhbmd1YWdlJyxcbiAgICAgICAgJ3RhYmxldmFsdWVzJzogJ3RhYmxlVmFsdWVzJyxcbiAgICAgICAgJ3RhcmdldHgnOiAndGFyZ2V0WCcsXG4gICAgICAgICd0YXJnZXR5JzogJ3RhcmdldFknLFxuICAgICAgICAndGV4dGxlbmd0aCc6ICd0ZXh0TGVuZ3RoJyxcbiAgICAgICAgJ3ZpZXdib3gnOiAndmlld0JveCcsXG4gICAgICAgICd2aWV3dGFyZ2V0JzogJ3ZpZXdUYXJnZXQnLFxuICAgICAgICAneGNoYW5uZWxzZWxlY3Rvcic6ICd4Q2hhbm5lbFNlbGVjdG9yJyxcbiAgICAgICAgJ3ljaGFubmVsc2VsZWN0b3InOiAneUNoYW5uZWxTZWxlY3RvcicsXG4gICAgICAgICd6b29tYW5kcGFuJzogJ3pvb21BbmRQYW4nXG4gICAgfSxcbiAgICBYTUxfQVRUUlNfQURKVVNUTUVOVF9NQVAgPSB7XG4gICAgICAgICd4bGluazphY3R1YXRlJzoge3ByZWZpeDogJ3hsaW5rJywgbmFtZTogJ2FjdHVhdGUnLCBuYW1lc3BhY2U6IE5TLlhMSU5LfSxcbiAgICAgICAgJ3hsaW5rOmFyY3JvbGUnOiB7cHJlZml4OiAneGxpbmsnLCBuYW1lOiAnYXJjcm9sZScsIG5hbWVzcGFjZTogTlMuWExJTkt9LFxuICAgICAgICAneGxpbms6aHJlZic6IHtwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdocmVmJywgbmFtZXNwYWNlOiBOUy5YTElOS30sXG4gICAgICAgICd4bGluazpyb2xlJzoge3ByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3JvbGUnLCBuYW1lc3BhY2U6IE5TLlhMSU5LfSxcbiAgICAgICAgJ3hsaW5rOnNob3cnOiB7cHJlZml4OiAneGxpbmsnLCBuYW1lOiAnc2hvdycsIG5hbWVzcGFjZTogTlMuWExJTkt9LFxuICAgICAgICAneGxpbms6dGl0bGUnOiB7cHJlZml4OiAneGxpbmsnLCBuYW1lOiAndGl0bGUnLCBuYW1lc3BhY2U6IE5TLlhMSU5LfSxcbiAgICAgICAgJ3hsaW5rOnR5cGUnOiB7cHJlZml4OiAneGxpbmsnLCBuYW1lOiAndHlwZScsIG5hbWVzcGFjZTogTlMuWExJTkt9LFxuICAgICAgICAneG1sOmJhc2UnOiB7cHJlZml4OiAneG1sJywgbmFtZTogJ2Jhc2UnLCBuYW1lc3BhY2U6IE5TLlhNTH0sXG4gICAgICAgICd4bWw6bGFuZyc6IHtwcmVmaXg6ICd4bWwnLCBuYW1lOiAnbGFuZycsIG5hbWVzcGFjZTogTlMuWE1MfSxcbiAgICAgICAgJ3htbDpzcGFjZSc6IHtwcmVmaXg6ICd4bWwnLCBuYW1lOiAnc3BhY2UnLCBuYW1lc3BhY2U6IE5TLlhNTH0sXG4gICAgICAgICd4bWxucyc6IHtwcmVmaXg6ICcnLCBuYW1lOiAneG1sbnMnLCBuYW1lc3BhY2U6IE5TLlhNTE5TfSxcbiAgICAgICAgJ3htbG5zOnhsaW5rJzoge3ByZWZpeDogJ3htbG5zJywgbmFtZTogJ3hsaW5rJywgbmFtZXNwYWNlOiBOUy5YTUxOU31cblxuICAgIH07XG5cbi8vU1ZHIHRhZyBuYW1lcyBhZGp1c3RtZW50IG1hcFxudmFyIFNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAgPSBleHBvcnRzLlNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAgPSB7XG4gICAgJ2FsdGdseXBoJzogJ2FsdEdseXBoJyxcbiAgICAnYWx0Z2x5cGhkZWYnOiAnYWx0R2x5cGhEZWYnLFxuICAgICdhbHRnbHlwaGl0ZW0nOiAnYWx0R2x5cGhJdGVtJyxcbiAgICAnYW5pbWF0ZWNvbG9yJzogJ2FuaW1hdGVDb2xvcicsXG4gICAgJ2FuaW1hdGVtb3Rpb24nOiAnYW5pbWF0ZU1vdGlvbicsXG4gICAgJ2FuaW1hdGV0cmFuc2Zvcm0nOiAnYW5pbWF0ZVRyYW5zZm9ybScsXG4gICAgJ2NsaXBwYXRoJzogJ2NsaXBQYXRoJyxcbiAgICAnZmVibGVuZCc6ICdmZUJsZW5kJyxcbiAgICAnZmVjb2xvcm1hdHJpeCc6ICdmZUNvbG9yTWF0cml4JyxcbiAgICAnZmVjb21wb25lbnR0cmFuc2Zlcic6ICdmZUNvbXBvbmVudFRyYW5zZmVyJyxcbiAgICAnZmVjb21wb3NpdGUnOiAnZmVDb21wb3NpdGUnLFxuICAgICdmZWNvbnZvbHZlbWF0cml4JzogJ2ZlQ29udm9sdmVNYXRyaXgnLFxuICAgICdmZWRpZmZ1c2VsaWdodGluZyc6ICdmZURpZmZ1c2VMaWdodGluZycsXG4gICAgJ2ZlZGlzcGxhY2VtZW50bWFwJzogJ2ZlRGlzcGxhY2VtZW50TWFwJyxcbiAgICAnZmVkaXN0YW50bGlnaHQnOiAnZmVEaXN0YW50TGlnaHQnLFxuICAgICdmZWZsb29kJzogJ2ZlRmxvb2QnLFxuICAgICdmZWZ1bmNhJzogJ2ZlRnVuY0EnLFxuICAgICdmZWZ1bmNiJzogJ2ZlRnVuY0InLFxuICAgICdmZWZ1bmNnJzogJ2ZlRnVuY0cnLFxuICAgICdmZWZ1bmNyJzogJ2ZlRnVuY1InLFxuICAgICdmZWdhdXNzaWFuYmx1cic6ICdmZUdhdXNzaWFuQmx1cicsXG4gICAgJ2ZlaW1hZ2UnOiAnZmVJbWFnZScsXG4gICAgJ2ZlbWVyZ2UnOiAnZmVNZXJnZScsXG4gICAgJ2ZlbWVyZ2Vub2RlJzogJ2ZlTWVyZ2VOb2RlJyxcbiAgICAnZmVtb3JwaG9sb2d5JzogJ2ZlTW9ycGhvbG9neScsXG4gICAgJ2Zlb2Zmc2V0JzogJ2ZlT2Zmc2V0JyxcbiAgICAnZmVwb2ludGxpZ2h0JzogJ2ZlUG9pbnRMaWdodCcsXG4gICAgJ2Zlc3BlY3VsYXJsaWdodGluZyc6ICdmZVNwZWN1bGFyTGlnaHRpbmcnLFxuICAgICdmZXNwb3RsaWdodCc6ICdmZVNwb3RMaWdodCcsXG4gICAgJ2ZldGlsZSc6ICdmZVRpbGUnLFxuICAgICdmZXR1cmJ1bGVuY2UnOiAnZmVUdXJidWxlbmNlJyxcbiAgICAnZm9yZWlnbm9iamVjdCc6ICdmb3JlaWduT2JqZWN0JyxcbiAgICAnZ2x5cGhyZWYnOiAnZ2x5cGhSZWYnLFxuICAgICdsaW5lYXJncmFkaWVudCc6ICdsaW5lYXJHcmFkaWVudCcsXG4gICAgJ3JhZGlhbGdyYWRpZW50JzogJ3JhZGlhbEdyYWRpZW50JyxcbiAgICAndGV4dHBhdGgnOiAndGV4dFBhdGgnXG59O1xuXG4vL1RhZ3MgdGhhdCBjYXVzZXMgZXhpdCBmcm9tIGZvcmVpZ24gY29udGVudFxudmFyIEVYSVRTX0ZPUkVJR05fQ09OVEVOVCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkJdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkJJR10gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuQkxPQ0tRVU9URV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuQk9EWV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuQlJdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkNFTlRFUl0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuQ09ERV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuRERdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkRJVl0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuRExdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkRUXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5FTV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuRU1CRURdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkgxXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5IMl0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuSDNdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkg0XSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5INV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuSDZdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkhFQURdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkhSXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5JXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5JTUddID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkxJXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5MSVNUSU5HXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5NRU5VXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5NRVRBXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5OT0JSXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5PTF0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuUF0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuUFJFXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5SVUJZXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5TXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5TTUFMTF0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuU1BBTl0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuU1RST05HXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5TVFJJS0VdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLlNVQl0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuU1VQXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5UQUJMRV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuVFRdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLlVdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLlVMXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5WQVJdID0gdHJ1ZTtcblxuLy9DaGVjayBleGl0IGZyb20gZm9yZWlnbiBjb250ZW50XG5leHBvcnRzLmNhdXNlc0V4aXQgPSBmdW5jdGlvbiAoc3RhcnRUYWdUb2tlbikge1xuICAgIHZhciB0biA9IHN0YXJ0VGFnVG9rZW4udGFnTmFtZTtcbiAgICB2YXIgaXNGb250V2l0aEF0dHJzID0gdG4gPT09ICQuRk9OVCAmJiAoVG9rZW5pemVyLmdldFRva2VuQXR0cihzdGFydFRhZ1Rva2VuLCBBVFRSUy5DT0xPUikgIT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW5pemVyLmdldFRva2VuQXR0cihzdGFydFRhZ1Rva2VuLCBBVFRSUy5TSVpFKSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb2tlbml6ZXIuZ2V0VG9rZW5BdHRyKHN0YXJ0VGFnVG9rZW4sIEFUVFJTLkZBQ0UpICE9PSBudWxsKTtcblxuICAgIHJldHVybiBpc0ZvbnRXaXRoQXR0cnMgPyB0cnVlIDogRVhJVFNfRk9SRUlHTl9DT05URU5UW3RuXTtcbn07XG5cbi8vVG9rZW4gYWRqdXN0bWVudHNcbmV4cG9ydHMuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyA9IGZ1bmN0aW9uICh0b2tlbikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW4uYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRva2VuLmF0dHJzW2ldLm5hbWUgPT09IERFRklOSVRJT05fVVJMX0FUVFIpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWUgPSBBREpVU1RFRF9ERUZJTklUSU9OX1VSTF9BVFRSO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnRzLmFkanVzdFRva2VuU1ZHQXR0cnMgPSBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhZGp1c3RlZEF0dHJOYW1lID0gU1ZHX0FUVFJTX0FESlVTVE1FTlRfTUFQW3Rva2VuLmF0dHJzW2ldLm5hbWVdO1xuXG4gICAgICAgIGlmIChhZGp1c3RlZEF0dHJOYW1lKVxuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ubmFtZSA9IGFkanVzdGVkQXR0ck5hbWU7XG4gICAgfVxufTtcblxuZXhwb3J0cy5hZGp1c3RUb2tlblhNTEF0dHJzID0gZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbi5hdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYWRqdXN0ZWRBdHRyRW50cnkgPSBYTUxfQVRUUlNfQURKVVNUTUVOVF9NQVBbdG9rZW4uYXR0cnNbaV0ubmFtZV07XG5cbiAgICAgICAgaWYgKGFkanVzdGVkQXR0ckVudHJ5KSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5wcmVmaXggPSBhZGp1c3RlZEF0dHJFbnRyeS5wcmVmaXg7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gYWRqdXN0ZWRBdHRyRW50cnkubmFtZTtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWVzcGFjZSA9IGFkanVzdGVkQXR0ckVudHJ5Lm5hbWVzcGFjZTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydHMuYWRqdXN0VG9rZW5TVkdUYWdOYW1lID0gZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgdmFyIGFkanVzdGVkVGFnTmFtZSA9IFNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVBbdG9rZW4udGFnTmFtZV07XG5cbiAgICBpZiAoYWRqdXN0ZWRUYWdOYW1lKVxuICAgICAgICB0b2tlbi50YWdOYW1lID0gYWRqdXN0ZWRUYWdOYW1lO1xufTtcblxuLy9JbnRlZ3JhdGlvbiBwb2ludHNcbmZ1bmN0aW9uIGlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQodG4sIG5zKSB7XG4gICAgcmV0dXJuIG5zID09PSBOUy5NQVRITUwgJiYgKHRuID09PSAkLk1JIHx8IHRuID09PSAkLk1PIHx8IHRuID09PSAkLk1OIHx8IHRuID09PSAkLk1TIHx8IHRuID09PSAkLk1URVhUKTtcbn1cblxuZnVuY3Rpb24gaXNIdG1sSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzKSB7XG4gICAgaWYgKG5zID09PSBOUy5NQVRITUwgJiYgdG4gPT09ICQuQU5OT1RBVElPTl9YTUwpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGF0dHJzW2ldLm5hbWUgPT09IEFUVFJTLkVOQ09ESU5HKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gYXR0cnNbaV0udmFsdWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gTUlNRV9UWVBFUy5URVhUX0hUTUwgfHwgdmFsdWUgPT09IE1JTUVfVFlQRVMuQVBQTElDQVRJT05fWE1MO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5zID09PSBOUy5TVkcgJiYgKHRuID09PSAkLkZPUkVJR05fT0JKRUNUIHx8IHRuID09PSAkLkRFU0MgfHwgdG4gPT09ICQuVElUTEUpO1xufVxuXG5leHBvcnRzLmlzSW50ZWdyYXRpb25Qb2ludCA9IGZ1bmN0aW9uICh0biwgbnMsIGF0dHJzLCBmb3JlaWduTlMpIHtcbiAgICBpZiAoKCFmb3JlaWduTlMgfHwgZm9yZWlnbk5TID09PSBOUy5IVE1MKSAmJiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGlmICgoIWZvcmVpZ25OUyB8fCBmb3JlaWduTlMgPT09IE5TLk1BVEhNTCkgJiYgaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCh0biwgbnMpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUb2tlbml6ZXIgPSByZXF1aXJlKCcuLi90b2tlbml6ZXInKSxcbiAgICBPcGVuRWxlbWVudFN0YWNrID0gcmVxdWlyZSgnLi9vcGVuX2VsZW1lbnRfc3RhY2snKSxcbiAgICBGb3JtYXR0aW5nRWxlbWVudExpc3QgPSByZXF1aXJlKCcuL2Zvcm1hdHRpbmdfZWxlbWVudF9saXN0JyksXG4gICAgTG9jYXRpb25JbmZvUGFyc2VyTWl4aW4gPSByZXF1aXJlKCcuLi9leHRlbnNpb25zL2xvY2F0aW9uX2luZm8vcGFyc2VyX21peGluJyksXG4gICAgZGVmYXVsdFRyZWVBZGFwdGVyID0gcmVxdWlyZSgnLi4vdHJlZV9hZGFwdGVycy9kZWZhdWx0JyksXG4gICAgbWVyZ2VPcHRpb25zID0gcmVxdWlyZSgnLi4vdXRpbHMvbWVyZ2Vfb3B0aW9ucycpLFxuICAgIGRvY3R5cGUgPSByZXF1aXJlKCcuLi9jb21tb24vZG9jdHlwZScpLFxuICAgIGZvcmVpZ25Db250ZW50ID0gcmVxdWlyZSgnLi4vY29tbW9uL2ZvcmVpZ25fY29udGVudCcpLFxuICAgIFVOSUNPREUgPSByZXF1aXJlKCcuLi9jb21tb24vdW5pY29kZScpLFxuICAgIEhUTUwgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbCcpO1xuXG4vL0FsaWFzZXNcbnZhciAkID0gSFRNTC5UQUdfTkFNRVMsXG4gICAgTlMgPSBIVE1MLk5BTUVTUEFDRVMsXG4gICAgQVRUUlMgPSBIVE1MLkFUVFJTO1xuXG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICAgIGxvY2F0aW9uSW5mbzogZmFsc2UsXG4gICAgdHJlZUFkYXB0ZXI6IGRlZmF1bHRUcmVlQWRhcHRlclxufTtcblxuLy9NaXNjIGNvbnN0YW50c1xudmFyIEhJRERFTl9JTlBVVF9UWVBFID0gJ2hpZGRlbic7XG5cbi8vQWRvcHRpb24gYWdlbmN5IGxvb3BzIGl0ZXJhdGlvbiBjb3VudFxudmFyIEFBX09VVEVSX0xPT1BfSVRFUiA9IDgsXG4gICAgQUFfSU5ORVJfTE9PUF9JVEVSID0gMztcblxuLy9JbnNlcnRpb24gbW9kZXNcbnZhciBJTklUSUFMX01PREUgPSAnSU5JVElBTF9NT0RFJyxcbiAgICBCRUZPUkVfSFRNTF9NT0RFID0gJ0JFRk9SRV9IVE1MX01PREUnLFxuICAgIEJFRk9SRV9IRUFEX01PREUgPSAnQkVGT1JFX0hFQURfTU9ERScsXG4gICAgSU5fSEVBRF9NT0RFID0gJ0lOX0hFQURfTU9ERScsXG4gICAgQUZURVJfSEVBRF9NT0RFID0gJ0FGVEVSX0hFQURfTU9ERScsXG4gICAgSU5fQk9EWV9NT0RFID0gJ0lOX0JPRFlfTU9ERScsXG4gICAgVEVYVF9NT0RFID0gJ1RFWFRfTU9ERScsXG4gICAgSU5fVEFCTEVfTU9ERSA9ICdJTl9UQUJMRV9NT0RFJyxcbiAgICBJTl9UQUJMRV9URVhUX01PREUgPSAnSU5fVEFCTEVfVEVYVF9NT0RFJyxcbiAgICBJTl9DQVBUSU9OX01PREUgPSAnSU5fQ0FQVElPTl9NT0RFJyxcbiAgICBJTl9DT0xVTU5fR1JPVVBfTU9ERSA9ICdJTl9DT0xVTU5fR1JPVVBfTU9ERScsXG4gICAgSU5fVEFCTEVfQk9EWV9NT0RFID0gJ0lOX1RBQkxFX0JPRFlfTU9ERScsXG4gICAgSU5fUk9XX01PREUgPSAnSU5fUk9XX01PREUnLFxuICAgIElOX0NFTExfTU9ERSA9ICdJTl9DRUxMX01PREUnLFxuICAgIElOX1NFTEVDVF9NT0RFID0gJ0lOX1NFTEVDVF9NT0RFJyxcbiAgICBJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERSA9ICdJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERScsXG4gICAgSU5fVEVNUExBVEVfTU9ERSA9ICdJTl9URU1QTEFURV9NT0RFJyxcbiAgICBBRlRFUl9CT0RZX01PREUgPSAnQUZURVJfQk9EWV9NT0RFJyxcbiAgICBJTl9GUkFNRVNFVF9NT0RFID0gJ0lOX0ZSQU1FU0VUX01PREUnLFxuICAgIEFGVEVSX0ZSQU1FU0VUX01PREUgPSAnQUZURVJfRlJBTUVTRVRfTU9ERScsXG4gICAgQUZURVJfQUZURVJfQk9EWV9NT0RFID0gJ0FGVEVSX0FGVEVSX0JPRFlfTU9ERScsXG4gICAgQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERSA9ICdBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFJztcblxuLy9JbnNlcnRpb24gbW9kZSByZXNldCBtYXBcbnZhciBJTlNFUlRJT05fTU9ERV9SRVNFVF9NQVAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5JTlNFUlRJT05fTU9ERV9SRVNFVF9NQVBbJC5UUl0gPSBJTl9ST1dfTU9ERTtcbklOU0VSVElPTl9NT0RFX1JFU0VUX01BUFskLlRCT0RZXSA9XG5JTlNFUlRJT05fTU9ERV9SRVNFVF9NQVBbJC5USEVBRF0gPVxuSU5TRVJUSU9OX01PREVfUkVTRVRfTUFQWyQuVEZPT1RdID0gSU5fVEFCTEVfQk9EWV9NT0RFO1xuSU5TRVJUSU9OX01PREVfUkVTRVRfTUFQWyQuQ0FQVElPTl0gPSBJTl9DQVBUSU9OX01PREU7XG5JTlNFUlRJT05fTU9ERV9SRVNFVF9NQVBbJC5DT0xHUk9VUF0gPSBJTl9DT0xVTU5fR1JPVVBfTU9ERTtcbklOU0VSVElPTl9NT0RFX1JFU0VUX01BUFskLlRBQkxFXSA9IElOX1RBQkxFX01PREU7XG5JTlNFUlRJT05fTU9ERV9SRVNFVF9NQVBbJC5CT0RZXSA9IElOX0JPRFlfTU9ERTtcbklOU0VSVElPTl9NT0RFX1JFU0VUX01BUFskLkZSQU1FU0VUXSA9IElOX0ZSQU1FU0VUX01PREU7XG5cbi8vVGVtcGxhdGUgaW5zZXJ0aW9uIG1vZGUgc3dpdGNoIG1hcFxudmFyIFRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5URU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQWyQuQ0FQVElPTl0gPVxuVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUFskLkNPTEdST1VQXSA9XG5URU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQWyQuVEJPRFldID1cblRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVBbJC5URk9PVF0gPVxuVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUFskLlRIRUFEXSA9IElOX1RBQkxFX01PREU7XG5URU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQWyQuQ09MXSA9IElOX0NPTFVNTl9HUk9VUF9NT0RFO1xuVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUFskLlRSXSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcblRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVBbJC5URF0gPVxuVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUFskLlRIXSA9IElOX1JPV19NT0RFO1xuXG4vL1Rva2VuIGhhbmRsZXJzIG1hcCBmb3IgaW5zZXJ0aW9uIG1vZGVzXG52YXIgXyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbl9bSU5JVElBTF9NT0RFXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5fW0lOSVRJQUxfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPVxuX1tJTklUSUFMX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSB0b2tlbkluSW5pdGlhbE1vZGU7XG5fW0lOSVRJQUxfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tJTklUSUFMX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnQ7XG5fW0lOSVRJQUxfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gZG9jdHlwZUluSW5pdGlhbE1vZGU7XG5fW0lOSVRJQUxfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPVxuX1tJTklUSUFMX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9XG5fW0lOSVRJQUxfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSB0b2tlbkluSW5pdGlhbE1vZGU7XG5cbl9bQkVGT1JFX0hUTUxfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tCRUZPUkVfSFRNTF9NT0RFXVtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXSA9XG5fW0JFRk9SRV9IVE1MX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSB0b2tlbkJlZm9yZUh0bWw7XG5fW0JFRk9SRV9IVE1MX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bQkVGT1JFX0hUTUxfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcbl9bQkVGT1JFX0hUTUxfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XG5fW0JFRk9SRV9IVE1MX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdCZWZvcmVIdG1sO1xuX1tCRUZPUkVfSFRNTF9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdCZWZvcmVIdG1sO1xuX1tCRUZPUkVfSFRNTF9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IHRva2VuQmVmb3JlSHRtbDtcblxuX1tCRUZPUkVfSEVBRF9NT0RFXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5fW0JFRk9SRV9IRUFEX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cbl9bQkVGT1JFX0hFQURfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IHRva2VuQmVmb3JlSGVhZDtcbl9bQkVGT1JFX0hFQURfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tCRUZPUkVfSEVBRF9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50O1xuX1tCRUZPUkVfSEVBRF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bQkVGT1JFX0hFQURfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBzdGFydFRhZ0JlZm9yZUhlYWQ7XG5fW0JFRk9SRV9IRUFEX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9IGVuZFRhZ0JlZm9yZUhlYWQ7XG5fW0JFRk9SRV9IRUFEX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gdG9rZW5CZWZvcmVIZWFkO1xuXG5fW0lOX0hFQURfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tJTl9IRUFEX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cbl9bSU5fSEVBRF9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID0gdG9rZW5JbkhlYWQ7XG5fW0lOX0hFQURfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGluc2VydENoYXJhY3RlcnM7XG5fW0lOX0hFQURfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcbl9bSU5fSEVBRF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bSU5fSEVBRF9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnSW5IZWFkO1xuX1tJTl9IRUFEX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9IGVuZFRhZ0luSGVhZDtcbl9bSU5fSEVBRF9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IHRva2VuSW5IZWFkO1xuXG5fW0FGVEVSX0hFQURfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tBRlRFUl9IRUFEX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cbl9bQUZURVJfSEVBRF9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID0gdG9rZW5BZnRlckhlYWQ7XG5fW0FGVEVSX0hFQURfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGluc2VydENoYXJhY3RlcnM7XG5fW0FGVEVSX0hFQURfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcbl9bQUZURVJfSEVBRF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bQUZURVJfSEVBRF9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnQWZ0ZXJIZWFkO1xuX1tBRlRFUl9IRUFEX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9IGVuZFRhZ0FmdGVySGVhZDtcbl9bQUZURVJfSEVBRF9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IHRva2VuQWZ0ZXJIZWFkO1xuXG5fW0lOX0JPRFlfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tJTl9CT0RZX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID0gY2hhcmFjdGVySW5Cb2R5O1xuX1tJTl9CT0RZX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bSU5fQk9EWV9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keTtcbl9bSU5fQk9EWV9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50O1xuX1tJTl9CT0RZX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tJTl9CT0RZX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdJbkJvZHk7XG5fW0lOX0JPRFlfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID0gZW5kVGFnSW5Cb2R5O1xuX1tJTl9CT0RZX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gZW9mSW5Cb2R5O1xuXG5fW1RFWFRfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tURVhUX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cbl9bVEVYVF9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID1cbl9bVEVYVF9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gaW5zZXJ0Q2hhcmFjdGVycztcbl9bVEVYVF9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPVxuX1tURVhUX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9XG5fW1RFWFRfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bVEVYVF9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJblRleHQ7XG5fW1RFWFRfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBlb2ZJblRleHQ7XG5cbl9bSU5fVEFCTEVfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tJTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXSA9XG5fW0lOX1RBQkxFX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPVxuX1tJTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gY2hhcmFjdGVySW5UYWJsZTtcbl9bSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcbl9bSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XG5fW0lOX1RBQkxFX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdJblRhYmxlO1xuX1tJTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJblRhYmxlO1xuX1tJTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IGVvZkluQm9keTtcblxuX1tJTl9UQUJMRV9URVhUX01PREVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbl9bSU5fVEFCTEVfVEVYVF9NT0RFXVtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXSA9IGNoYXJhY3RlckluVGFibGVUZXh0O1xuX1tJTl9UQUJMRV9URVhUX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bSU5fVEFCTEVfVEVYVF9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gd2hpdGVzcGFjZUNoYXJhY3RlckluVGFibGVUZXh0O1xuX1tJTl9UQUJMRV9URVhUX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9XG5fW0lOX1RBQkxFX1RFWFRfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID1cbl9bSU5fVEFCTEVfVEVYVF9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9XG5fW0lOX1RBQkxFX1RFWFRfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID1cbl9bSU5fVEFCTEVfVEVYVF9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IHRva2VuSW5UYWJsZVRleHQ7XG5cbl9bSU5fQ0FQVElPTl9NT0RFXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5fW0lOX0NBUFRJT05fTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPSBjaGFyYWN0ZXJJbkJvZHk7XG5fW0lOX0NBUFRJT05fTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tJTl9DQVBUSU9OX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5O1xuX1tJTl9DQVBUSU9OX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnQ7XG5fW0lOX0NBUFRJT05fTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XG5fW0lOX0NBUFRJT05fTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBzdGFydFRhZ0luQ2FwdGlvbjtcbl9bSU5fQ0FQVElPTl9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJbkNhcHRpb247XG5fW0lOX0NBUFRJT05fTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBlb2ZJbkJvZHk7XG5cbl9bSU5fQ09MVU1OX0dST1VQX01PREVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbl9bSU5fQ09MVU1OX0dST1VQX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cbl9bSU5fQ09MVU1OX0dST1VQX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSB0b2tlbkluQ29sdW1uR3JvdXA7XG5fW0lOX0NPTFVNTl9HUk9VUF9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gaW5zZXJ0Q2hhcmFjdGVycztcbl9bSU5fQ09MVU1OX0dST1VQX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnQ7XG5fW0lOX0NPTFVNTl9HUk9VUF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bSU5fQ09MVU1OX0dST1VQX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdJbkNvbHVtbkdyb3VwO1xuX1tJTl9DT0xVTU5fR1JPVVBfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID0gZW5kVGFnSW5Db2x1bW5Hcm91cDtcbl9bSU5fQ09MVU1OX0dST1VQX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gZW9mSW5Cb2R5O1xuXG5fW0lOX1RBQkxFX0JPRFlfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tJTl9UQUJMRV9CT0RZX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cbl9bSU5fVEFCTEVfQk9EWV9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID1cbl9bSU5fVEFCTEVfQk9EWV9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gY2hhcmFjdGVySW5UYWJsZTtcbl9bSU5fVEFCTEVfQk9EWV9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50O1xuX1tJTl9UQUJMRV9CT0RZX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tJTl9UQUJMRV9CT0RZX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdJblRhYmxlQm9keTtcbl9bSU5fVEFCTEVfQk9EWV9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJblRhYmxlQm9keTtcbl9bSU5fVEFCTEVfQk9EWV9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IGVvZkluQm9keTtcblxuX1tJTl9ST1dfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tJTl9ST1dfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPVxuX1tJTl9ST1dfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9XG5fW0lOX1JPV19NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gY2hhcmFjdGVySW5UYWJsZTtcbl9bSU5fUk9XX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnQ7XG5fW0lOX1JPV19NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bSU5fUk9XX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdJblJvdztcbl9bSU5fUk9XX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9IGVuZFRhZ0luUm93O1xuX1tJTl9ST1dfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBlb2ZJbkJvZHk7XG5cbl9bSU5fQ0VMTF9NT0RFXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5fW0lOX0NFTExfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPSBjaGFyYWN0ZXJJbkJvZHk7XG5fW0lOX0NFTExfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tJTl9DRUxMX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5O1xuX1tJTl9DRUxMX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnQ7XG5fW0lOX0NFTExfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XG5fW0lOX0NFTExfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBzdGFydFRhZ0luQ2VsbDtcbl9bSU5fQ0VMTF9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJbkNlbGw7XG5fW0lOX0NFTExfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBlb2ZJbkJvZHk7XG5cbl9bSU5fU0VMRUNUX01PREVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbl9bSU5fU0VMRUNUX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID0gaW5zZXJ0Q2hhcmFjdGVycztcbl9bSU5fU0VMRUNUX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bSU5fU0VMRUNUX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSBpbnNlcnRDaGFyYWN0ZXJzO1xuX1tJTl9TRUxFQ1RfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcbl9bSU5fU0VMRUNUX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tJTl9TRUxFQ1RfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBzdGFydFRhZ0luU2VsZWN0O1xuX1tJTl9TRUxFQ1RfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID0gZW5kVGFnSW5TZWxlY3Q7XG5fW0lOX1NFTEVDVF9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IGVvZkluQm9keTtcblxuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPSBpbnNlcnRDaGFyYWN0ZXJzO1xuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGluc2VydENoYXJhY3RlcnM7XG5fW0lOX1NFTEVDVF9JTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50O1xuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XG5fW0lOX1NFTEVDVF9JTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnSW5TZWxlY3RJblRhYmxlO1xuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID0gZW5kVGFnSW5TZWxlY3RJblRhYmxlO1xuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBlb2ZJbkJvZHk7XG5cbl9bSU5fVEVNUExBVEVfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tJTl9URU1QTEFURV9NT0RFXVtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXSA9IGNoYXJhY3RlckluQm9keTtcbl9bSU5fVEVNUExBVEVfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tJTl9URU1QTEFURV9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keTtcbl9bSU5fVEVNUExBVEVfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcbl9bSU5fVEVNUExBVEVfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XG5fW0lOX1RFTVBMQVRFX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdJblRlbXBsYXRlO1xuX1tJTl9URU1QTEFURV9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJblRlbXBsYXRlO1xuX1tJTl9URU1QTEFURV9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IGVvZkluVGVtcGxhdGU7XG5cbl9bQUZURVJfQk9EWV9NT0RFXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5fW0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPVxuX1tBRlRFUl9CT0RZX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSB0b2tlbkFmdGVyQm9keTtcbl9bQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keTtcbl9bQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50VG9Sb290SHRtbEVsZW1lbnQ7XG5fW0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XG5fW0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBzdGFydFRhZ0FmdGVyQm9keTtcbl9bQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdBZnRlckJvZHk7XG5fW0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBzdG9wUGFyc2luZztcblxuX1tJTl9GUkFNRVNFVF9NT0RFXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5fW0lOX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cbl9bSU5fRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tJTl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gaW5zZXJ0Q2hhcmFjdGVycztcbl9bSU5fRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcbl9bSU5fRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XG5fW0lOX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdJbkZyYW1lc2V0O1xuX1tJTl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJbkZyYW1lc2V0O1xuX1tJTl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IHN0b3BQYXJzaW5nO1xuXG5fW0FGVEVSX0ZSQU1FU0VUX01PREVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbl9bQUZURVJfRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPVxuX1tBRlRFUl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID0gaWdub3JlVG9rZW47XG5fW0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSBpbnNlcnRDaGFyYWN0ZXJzO1xuX1tBRlRFUl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50O1xuX1tBRlRFUl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bQUZURVJfRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBzdGFydFRhZ0FmdGVyRnJhbWVzZXQ7XG5fW0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9IGVuZFRhZ0FmdGVyRnJhbWVzZXQ7XG5fW0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gc3RvcFBhcnNpbmc7XG5cbl9bQUZURVJfQUZURVJfQk9EWV9NT0RFXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5fW0FGVEVSX0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPSB0b2tlbkFmdGVyQWZ0ZXJCb2R5O1xuX1tBRlRFUl9BRlRFUl9CT0RZX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSB0b2tlbkFmdGVyQWZ0ZXJCb2R5O1xuX1tBRlRFUl9BRlRFUl9CT0RZX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5O1xuX1tBRlRFUl9BRlRFUl9CT0RZX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnRUb0RvY3VtZW50O1xuX1tBRlRFUl9BRlRFUl9CT0RZX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xuX1tBRlRFUl9BRlRFUl9CT0RZX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdBZnRlckFmdGVyQm9keTtcbl9bQUZURVJfQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSB0b2tlbkFmdGVyQWZ0ZXJCb2R5O1xuX1tBRlRFUl9BRlRFUl9CT0RZX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gc3RvcFBhcnNpbmc7XG5cbl9bQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuX1tBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXSA9XG5fW0FGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHk7XG5fW0FGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnRUb0RvY3VtZW50O1xuX1tBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcbl9bQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBzdGFydFRhZ0FmdGVyQWZ0ZXJGcmFtZXNldDtcbl9bQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID0gaWdub3JlVG9rZW47XG5fW0FGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gc3RvcFBhcnNpbmc7XG5cblxuLy9QYXJzZXJcbnZhciBQYXJzZXIgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gbWVyZ2VPcHRpb25zKERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucyk7XG5cbiAgICB0aGlzLnRyZWVBZGFwdGVyID0gdGhpcy5vcHRpb25zLnRyZWVBZGFwdGVyO1xuICAgIHRoaXMucGVuZGluZ1NjcmlwdCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmxvY2F0aW9uSW5mbylcbiAgICAgICAgbmV3IExvY2F0aW9uSW5mb1BhcnNlck1peGluKHRoaXMpO1xufTtcblxuLy8gQVBJXG5QYXJzZXIucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24gKGh0bWwpIHtcbiAgICB2YXIgZG9jdW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50KCk7XG5cbiAgICB0aGlzLl9ib290c3RyYXAoZG9jdW1lbnQsIG51bGwpO1xuICAgIHRoaXMudG9rZW5pemVyLndyaXRlKGh0bWwsIHRydWUpO1xuICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKG51bGwpO1xuXG4gICAgcmV0dXJuIGRvY3VtZW50O1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5wYXJzZUZyYWdtZW50ID0gZnVuY3Rpb24gKGh0bWwsIGZyYWdtZW50Q29udGV4dCkge1xuICAgIC8vTk9URTogdXNlIDx0ZW1wbGF0ZT4gZWxlbWVudCBhcyBhIGZyYWdtZW50IGNvbnRleHQgaWYgY29udGV4dCBlbGVtZW50IHdhcyBub3QgcHJvdmlkZWQsXG4gICAgLy9zbyB3ZSB3aWxsIHBhcnNlIGluIFwiZm9yZ2l2aW5nXCIgbWFubmVyXG4gICAgaWYgKCFmcmFnbWVudENvbnRleHQpXG4gICAgICAgIGZyYWdtZW50Q29udGV4dCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgkLlRFTVBMQVRFLCBOUy5IVE1MLCBbXSk7XG5cbiAgICAvL05PVEU6IGNyZWF0ZSBmYWtlIGVsZW1lbnQgd2hpY2ggd2lsbCBiZSB1c2VkIGFzICdkb2N1bWVudCcgZm9yIGZyYWdtZW50IHBhcnNpbmcuXG4gICAgLy9UaGlzIGlzIGltcG9ydGFudCBmb3IganNkb20gdGhlcmUgJ2RvY3VtZW50JyBjYW4ndCBiZSByZWNyZWF0ZWQsIHRoZXJlZm9yZVxuICAgIC8vZnJhZ21lbnQgcGFyc2luZyBjYXVzZXMgbWVzc2luZyBvZiB0aGUgbWFpbiBgZG9jdW1lbnRgLlxuICAgIHZhciBkb2N1bWVudE1vY2sgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQoJ2RvY3VtZW50bW9jaycsIE5TLkhUTUwsIFtdKTtcblxuICAgIHRoaXMuX2Jvb3RzdHJhcChkb2N1bWVudE1vY2ssIGZyYWdtZW50Q29udGV4dCk7XG5cbiAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGZyYWdtZW50Q29udGV4dCkgPT09ICQuVEVNUExBVEUpXG4gICAgICAgIHRoaXMuX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZShJTl9URU1QTEFURV9NT0RFKTtcblxuICAgIHRoaXMuX2luaXRUb2tlbml6ZXJGb3JGcmFnbWVudFBhcnNpbmcoKTtcbiAgICB0aGlzLl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKTtcbiAgICB0aGlzLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICB0aGlzLl9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0KCk7XG4gICAgdGhpcy50b2tlbml6ZXIud3JpdGUoaHRtbCwgdHJ1ZSk7XG4gICAgdGhpcy5fcnVuUGFyc2luZ0xvb3AobnVsbCk7XG5cbiAgICB2YXIgcm9vdEVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9jdW1lbnRNb2NrKSxcbiAgICAgICAgZnJhZ21lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgIHRoaXMuX2Fkb3B0Tm9kZXMocm9vdEVsZW1lbnQsIGZyYWdtZW50KTtcblxuICAgIHJldHVybiBmcmFnbWVudDtcbn07XG5cbi8vQm9vdHN0cmFwIHBhcnNlclxuUGFyc2VyLnByb3RvdHlwZS5fYm9vdHN0cmFwID0gZnVuY3Rpb24gKGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQpIHtcbiAgICB0aGlzLnRva2VuaXplciA9IG5ldyBUb2tlbml6ZXIodGhpcy5vcHRpb25zKTtcblxuICAgIHRoaXMuc3RvcHBlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5JVElBTF9NT0RFO1xuICAgIHRoaXMub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gJyc7XG5cbiAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgdGhpcy5mcmFnbWVudENvbnRleHQgPSBmcmFnbWVudENvbnRleHQ7XG5cbiAgICB0aGlzLmhlYWRFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLmZvcm1FbGVtZW50ID0gbnVsbDtcblxuICAgIHRoaXMub3BlbkVsZW1lbnRzID0gbmV3IE9wZW5FbGVtZW50U3RhY2sodGhpcy5kb2N1bWVudCwgdGhpcy50cmVlQWRhcHRlcik7XG4gICAgdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMgPSBuZXcgRm9ybWF0dGluZ0VsZW1lbnRMaXN0KHRoaXMudHJlZUFkYXB0ZXIpO1xuXG4gICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrID0gW107XG4gICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrVG9wID0gLTE7XG4gICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSBudWxsO1xuXG4gICAgdGhpcy5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zID0gW107XG4gICAgdGhpcy5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gZmFsc2U7XG5cbiAgICB0aGlzLmZyYW1lc2V0T2sgPSB0cnVlO1xuICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgdGhpcy5mb3N0ZXJQYXJlbnRpbmdFbmFibGVkID0gZmFsc2U7XG59O1xuXG4vL1BhcnNpbmcgbG9vcFxuUGFyc2VyLnByb3RvdHlwZS5fcnVuUGFyc2luZ0xvb3AgID0gZnVuY3Rpb24gKHNjcmlwdEhhbmRsZXIpIHtcbiAgICB3aGlsZSAoIXRoaXMuc3RvcHBlZCkge1xuICAgICAgICB0aGlzLl9zZXR1cFRva2VuaXplckNEQVRBTW9kZSgpO1xuXG4gICAgICAgIHZhciB0b2tlbiA9IHRoaXMudG9rZW5pemVyLmdldE5leHRUb2tlbigpO1xuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuSElCRVJOQVRJT05fVE9LRU4pXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBpZiAodGhpcy5za2lwTmV4dE5ld0xpbmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gJiYgdG9rZW4uY2hhcnNbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLmNoYXJzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICB0b2tlbi5jaGFycyA9IHRva2VuLmNoYXJzLnN1YnN0cigxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NJbnB1dFRva2VuKHRva2VuKTtcblxuICAgICAgICBpZiAoc2NyaXB0SGFuZGxlciAmJiB0aGlzLnBlbmRpbmdTY3JpcHQpXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLnJ1blBhcnNpbmdMb29wRm9yQ3VycmVudENodW5rID0gZnVuY3Rpb24gKHdyaXRlQ2FsbGJhY2ssIHNjcmlwdEhhbmRsZXIpIHtcbiAgICB0aGlzLl9ydW5QYXJzaW5nTG9vcChzY3JpcHRIYW5kbGVyKTtcblxuICAgIGlmIChzY3JpcHRIYW5kbGVyICYmIHRoaXMucGVuZGluZ1NjcmlwdCkge1xuICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5wZW5kaW5nU2NyaXB0O1xuXG4gICAgICAgIHRoaXMucGVuZGluZ1NjcmlwdCA9IG51bGw7XG5cbiAgICAgICAgc2NyaXB0SGFuZGxlcihzY3JpcHQpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAod3JpdGVDYWxsYmFjaylcbiAgICAgICAgd3JpdGVDYWxsYmFjaygpO1xufTtcblxuLy9UZXh0IHBhcnNpbmdcblBhcnNlci5wcm90b3R5cGUuX3NldHVwVG9rZW5pemVyQ0RBVEFNb2RlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjdXJyZW50ID0gdGhpcy5fZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCgpO1xuXG4gICAgdGhpcy50b2tlbml6ZXIuYWxsb3dDREFUQSA9IGN1cnJlbnQgJiYgY3VycmVudCAhPT0gdGhpcy5kb2N1bWVudCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KSAhPT0gTlMuSFRNTCAmJiAhdGhpcy5faXNJbnRlZ3JhdGlvblBvaW50KGN1cnJlbnQpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fc3dpdGNoVG9UZXh0UGFyc2luZyA9IGZ1bmN0aW9uIChjdXJyZW50VG9rZW4sIG5leHRUb2tlbml6ZXJTdGF0ZSkge1xuICAgIHRoaXMuX2luc2VydEVsZW1lbnQoY3VycmVudFRva2VuLCBOUy5IVE1MKTtcbiAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IG5leHRUb2tlbml6ZXJTdGF0ZTtcbiAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHRoaXMuaW5zZXJ0aW9uTW9kZTtcbiAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBURVhUX01PREU7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLnN3aXRjaFRvUGxhaW50ZXh0UGFyc2luZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBURVhUX01PREU7XG4gICAgdGhpcy5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XG4gICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5QTEFJTlRFWFQ7XG59O1xuXG4vL0ZyYWdtZW50IHBhcnNpbmdcblBhcnNlci5wcm90b3R5cGUuX2dldEFkanVzdGVkQ3VycmVudEVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wID09PSAwICYmIHRoaXMuZnJhZ21lbnRDb250ZXh0ID9cbiAgICAgICAgdGhpcy5mcmFnbWVudENvbnRleHQgOlxuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fZmluZEZvcm1JbkZyYWdtZW50Q29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMuZnJhZ21lbnRDb250ZXh0O1xuXG4gICAgZG8ge1xuICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG5vZGUpID09PSAkLkZPUk0pIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlID0gdGhpcy50cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG5vZGUpO1xuICAgIH0gd2hpbGUgKG5vZGUpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5faW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5mcmFnbWVudENvbnRleHQpID09PSBOUy5IVE1MKSB7XG4gICAgICAgIHZhciB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLmZyYWdtZW50Q29udGV4dCk7XG5cbiAgICAgICAgaWYgKHRuID09PSAkLlRJVExFIHx8IHRuID09PSAkLlRFWFRBUkVBKVxuICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5SQ0RBVEE7XG5cbiAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuU1RZTEUgfHwgdG4gPT09ICQuWE1QIHx8IHRuID09PSAkLklGUkFNRSB8fFxuICAgICAgICAgICAgICAgICB0biA9PT0gJC5OT0VNQkVEIHx8IHRuID09PSAkLk5PRlJBTUVTIHx8IHRuID09PSAkLk5PU0NSSVBUKVxuICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5SQVdURVhUO1xuXG4gICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlNDUklQVClcbiAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyLk1PREUuU0NSSVBUX0RBVEE7XG5cbiAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuUExBSU5URVhUKVxuICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5QTEFJTlRFWFQ7XG4gICAgfVxufTtcblxuLy9UcmVlIG11dGF0aW9uXG5QYXJzZXIucHJvdG90eXBlLl9zZXREb2N1bWVudFR5cGUgPSBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICB0aGlzLnRyZWVBZGFwdGVyLnNldERvY3VtZW50VHlwZSh0aGlzLmRvY3VtZW50LCB0b2tlbi5uYW1lLCB0b2tlbi5wdWJsaWNJZCwgdG9rZW4uc3lzdGVtSWQpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fYXR0YWNoRWxlbWVudFRvVHJlZSA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgaWYgKHRoaXMuX3Nob3VsZEZvc3RlclBhcmVudE9uSW5zZXJ0aW9uKCkpXG4gICAgICAgIHRoaXMuX2Zvc3RlclBhcmVudEVsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudCB8fCB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuXG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgICB9XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLl9hcHBlbmRFbGVtZW50ID0gZnVuY3Rpb24gKHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICB2YXIgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBuYW1lc3BhY2VVUkksIHRva2VuLmF0dHJzKTtcblxuICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCk7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLl9pbnNlcnRFbGVtZW50ID0gZnVuY3Rpb24gKHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICB2YXIgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBuYW1lc3BhY2VVUkksIHRva2VuLmF0dHJzKTtcblxuICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCk7XG4gICAgdGhpcy5vcGVuRWxlbWVudHMucHVzaChlbGVtZW50KTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuX2luc2VydEZha2VFbGVtZW50ID0gZnVuY3Rpb24gKHRhZ05hbWUpIHtcbiAgICB2YXIgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBOUy5IVE1MLCBbXSk7XG5cbiAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQpO1xuICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLl9pbnNlcnRUZW1wbGF0ZSA9IGZ1bmN0aW9uICh0b2tlbikge1xuICAgIHZhciB0bXBsID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIE5TLkhUTUwsIHRva2VuLmF0dHJzKSxcbiAgICAgICAgY29udGVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXG4gICAgdGhpcy50cmVlQWRhcHRlci5zZXRUZW1wbGF0ZUNvbnRlbnQodG1wbCwgY29udGVudCk7XG4gICAgdGhpcy5fYXR0YWNoRWxlbWVudFRvVHJlZSh0bXBsKTtcbiAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKHRtcGwpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5faW5zZXJ0RmFrZVJvb3RFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbGVtZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KCQuSFRNTCwgTlMuSFRNTCwgW10pO1xuXG4gICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZCh0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50LCBlbGVtZW50KTtcbiAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fYXBwZW5kQ29tbWVudE5vZGUgPSBmdW5jdGlvbiAodG9rZW4sIHBhcmVudCkge1xuICAgIHZhciBjb21tZW50Tm9kZSA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlQ29tbWVudE5vZGUodG9rZW4uZGF0YSk7XG5cbiAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHBhcmVudCwgY29tbWVudE5vZGUpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5faW5zZXJ0Q2hhcmFjdGVycyA9IGZ1bmN0aW9uICh0b2tlbikge1xuICAgIGlmICh0aGlzLl9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpKVxuICAgICAgICB0aGlzLl9mb3N0ZXJQYXJlbnRUZXh0KHRva2VuLmNoYXJzKTtcblxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50IHx8IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG5cbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5pbnNlcnRUZXh0KHBhcmVudCwgdG9rZW4uY2hhcnMpO1xuICAgIH1cbn07XG5cblBhcnNlci5wcm90b3R5cGUuX2Fkb3B0Tm9kZXMgPSBmdW5jdGlvbiAoZG9ub3IsIHJlY2lwaWVudCkge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Rmlyc3RDaGlsZChkb25vcik7XG5cbiAgICAgICAgaWYgKCFjaGlsZClcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShjaGlsZCk7XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocmVjaXBpZW50LCBjaGlsZCk7XG4gICAgfVxufTtcblxuLy9Ub2tlbiBwcm9jZXNzaW5nXG5QYXJzZXIucHJvdG90eXBlLl9zaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50ID0gZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudCA9PT0gdGhpcy5kb2N1bWVudClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgdmFyIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY3VycmVudCk7XG5cbiAgICBpZiAobnMgPT09IE5TLkhUTUwpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoY3VycmVudCkgPT09ICQuQU5OT1RBVElPTl9YTUwgJiYgbnMgPT09IE5TLk1BVEhNTCAmJlxuICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOICYmIHRva2VuLnRhZ05hbWUgPT09ICQuU1ZHKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICB2YXIgaXNDaGFyYWN0ZXJUb2tlbiA9IHRva2VuLnR5cGUgPT09IFRva2VuaXplci5DSEFSQUNURVJfVE9LRU4gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOLFxuICAgICAgICBpc01hdGhNTFRleHRTdGFydFRhZyA9IHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi50YWdOYW1lICE9PSAkLk1HTFlQSCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnRhZ05hbWUgIT09ICQuTUFMSUdOTUFSSztcblxuICAgIGlmICgoaXNNYXRoTUxUZXh0U3RhcnRUYWcgfHwgaXNDaGFyYWN0ZXJUb2tlbikgJiYgdGhpcy5faXNJbnRlZ3JhdGlvblBvaW50KGN1cnJlbnQsIE5TLk1BVEhNTCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGlmICgodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTiB8fCBpc0NoYXJhY3RlclRva2VuKSAmJiB0aGlzLl9pc0ludGVncmF0aW9uUG9pbnQoY3VycmVudCwgTlMuSFRNTCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiB0b2tlbi50eXBlICE9PSBUb2tlbml6ZXIuRU9GX1RPS0VOO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fcHJvY2Vzc1Rva2VuID0gZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgX1t0aGlzLmluc2VydGlvbk1vZGVdW3Rva2VuLnR5cGVdKHRoaXMsIHRva2VuKTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUgPSBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICBfW0lOX0JPRFlfTU9ERV1bdG9rZW4udHlwZV0odGhpcywgdG9rZW4pO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCA9IGZ1bmN0aW9uICh0b2tlbikge1xuICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOKVxuICAgICAgICBjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcblxuICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTilcbiAgICAgICAgbnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xuXG4gICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOKVxuICAgICAgICBpbnNlcnRDaGFyYWN0ZXJzKHRoaXMsIHRva2VuKTtcblxuICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5DT01NRU5UX1RPS0VOKVxuICAgICAgICBhcHBlbmRDb21tZW50KHRoaXMsIHRva2VuKTtcblxuICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4pXG4gICAgICAgIHN0YXJ0VGFnSW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG5cbiAgICBlbHNlIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTilcbiAgICAgICAgZW5kVGFnSW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLl9wcm9jZXNzSW5wdXRUb2tlbiA9IGZ1bmN0aW9uICh0b2tlbikge1xuICAgIGlmICh0aGlzLl9zaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSlcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCh0b2tlbik7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59O1xuXG4vL0ludGVncmF0aW9uIHBvaW50c1xuUGFyc2VyLnByb3RvdHlwZS5faXNJbnRlZ3JhdGlvblBvaW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIGZvcmVpZ25OUykge1xuICAgIHZhciB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSxcbiAgICAgICAgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KSxcbiAgICAgICAgYXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIGZvcmVpZ25Db250ZW50LmlzSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzLCBmb3JlaWduTlMpO1xufTtcblxuLy9BY3RpdmUgZm9ybWF0dGluZyBlbGVtZW50cyByZWNvbnN0cnVjdGlvblxuUGFyc2VyLnByb3RvdHlwZS5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxpc3RMZW5ndGggPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5sZW5ndGg7XG5cbiAgICBpZiAobGlzdExlbmd0aCkge1xuICAgICAgICB2YXIgdW5vcGVuSWR4ID0gbGlzdExlbmd0aCxcbiAgICAgICAgICAgIGVudHJ5ID0gbnVsbDtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICB1bm9wZW5JZHgtLTtcbiAgICAgICAgICAgIGVudHJ5ID0gdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZW50cmllc1t1bm9wZW5JZHhdO1xuXG4gICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSB8fCB0aGlzLm9wZW5FbGVtZW50cy5jb250YWlucyhlbnRyeS5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHVub3BlbklkeCsrO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlICh1bm9wZW5JZHggPiAwKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gdW5vcGVuSWR4OyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyeSA9IHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmVudHJpZXNbaV07XG4gICAgICAgICAgICB0aGlzLl9pbnNlcnRFbGVtZW50KGVudHJ5LnRva2VuLCB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbnRyeS5lbGVtZW50KSk7XG4gICAgICAgICAgICBlbnRyeS5lbGVtZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbi8vQ2xvc2UgZWxlbWVudHNcblBhcnNlci5wcm90b3R5cGUuX2Nsb3NlVGFibGVDZWxsID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICB0aGlzLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhYmxlQ2VsbFBvcHBlZCgpO1xuICAgIHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fUk9XX01PREU7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLl9jbG9zZVBFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKCQuUCk7XG4gICAgdGhpcy5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuUCk7XG59O1xuXG4vL0luc2VydGlvbiBtb2Rlc1xuUGFyc2VyLnByb3RvdHlwZS5fcmVzZXRJbnNlcnRpb25Nb2RlID0gZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcCwgbGFzdCA9IGZhbHNlOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuXG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICBsYXN0ID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZnJhZ21lbnRDb250ZXh0KVxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLmZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSxcbiAgICAgICAgICAgIG5ld0luc2VydGlvbk1vZGUgPSBJTlNFUlRJT05fTU9ERV9SRVNFVF9NQVBbdG5dO1xuXG4gICAgICAgIGlmIChuZXdJbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBuZXdJbnNlcnRpb25Nb2RlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBlbHNlIGlmICghbGFzdCAmJiAodG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEgpKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTl9DRUxMX01PREU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKCFsYXN0ICYmIHRuID09PSAkLkhFQUQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTU9ERTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuU0VMRUNUKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNldEluc2VydGlvbk1vZGVGb3JTZWxlY3QoaSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSB0aGlzLmN1cnJlbnRUbXBsSW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gdGhpcy5oZWFkRWxlbWVudCA/IEFGVEVSX0hFQURfTU9ERSA6IEJFRk9SRV9IRUFEX01PREU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKGxhc3QpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0ID0gZnVuY3Rpb24gKHNlbGVjdElkeCkge1xuICAgIGlmIChzZWxlY3RJZHggPiAwKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBzZWxlY3RJZHggLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgYW5jZXN0b3IgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXSxcbiAgICAgICAgICAgICAgICB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShhbmNlc3Rvcik7XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5URU1QTEFURSlcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTl9TRUxFQ1RfTU9ERTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZSA9IGZ1bmN0aW9uIChtb2RlKSB7XG4gICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrLnB1c2gobW9kZSk7XG4gICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrVG9wKys7XG4gICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSBtb2RlO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fcG9wVG1wbEluc2VydGlvbk1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrLnBvcCgpO1xuICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFja1RvcC0tO1xuICAgIHRoaXMuY3VycmVudFRtcGxJbnNlcnRpb25Nb2RlID0gdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrW3RoaXMudG1wbEluc2VydGlvbk1vZGVTdGFja1RvcF07XG59O1xuXG4vL0Zvc3RlciBwYXJlbnRpbmdcblBhcnNlci5wcm90b3R5cGUuX2lzRWxlbWVudENhdXNlc0Zvc3RlclBhcmVudGluZyA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgdmFyIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRGT09UIHx8IHRuID09PSAkLlRIRUFEIHx8IHRuID09PSAkLlRSO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCAmJiB0aGlzLl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcodGhpcy5vcGVuRWxlbWVudHMuY3VycmVudCk7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxvY2F0aW9uID0ge1xuICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgIGJlZm9yZUVsZW1lbnQ6IG51bGxcbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgb3BlbkVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXSxcbiAgICAgICAgICAgIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG9wZW5FbGVtZW50KSxcbiAgICAgICAgICAgIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkob3BlbkVsZW1lbnQpO1xuXG4gICAgICAgIGlmICh0biA9PT0gJC5URU1QTEFURSAmJiBucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgbG9jYXRpb24ucGFyZW50ID0gdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQob3BlbkVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICAgICAgbG9jYXRpb24ucGFyZW50ID0gdGhpcy50cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG9wZW5FbGVtZW50KTtcblxuICAgICAgICAgICAgaWYgKGxvY2F0aW9uLnBhcmVudClcbiAgICAgICAgICAgICAgICBsb2NhdGlvbi5iZWZvcmVFbGVtZW50ID0gb3BlbkVsZW1lbnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbG9jYXRpb24ucGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuaXRlbXNbaSAtIDFdO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbG9jYXRpb24ucGFyZW50KVxuICAgICAgICBsb2NhdGlvbi5wYXJlbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1swXTtcblxuICAgIHJldHVybiBsb2NhdGlvbjtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuX2Zvc3RlclBhcmVudEVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpO1xuXG4gICAgaWYgKGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpXG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0QmVmb3JlKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCwgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgZWxzZVxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCk7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLl9mb3N0ZXJQYXJlbnRUZXh0ID0gZnVuY3Rpb24gKGNoYXJzKSB7XG4gICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uKCk7XG5cbiAgICBpZiAobG9jYXRpb24uYmVmb3JlRWxlbWVudClcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5pbnNlcnRUZXh0QmVmb3JlKGxvY2F0aW9uLnBhcmVudCwgY2hhcnMsIGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpO1xuICAgIGVsc2VcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5pbnNlcnRUZXh0KGxvY2F0aW9uLnBhcmVudCwgY2hhcnMpO1xufTtcblxuLy9TcGVjaWFsIGVsZW1lbnRzXG5QYXJzZXIucHJvdG90eXBlLl9pc1NwZWNpYWxFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICB2YXIgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCksXG4gICAgICAgIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCk7XG5cbiAgICByZXR1cm4gSFRNTC5TUEVDSUFMX0VMRU1FTlRTW25zXVt0bl07XG59O1xuXG4vL0Fkb3B0aW9uIGFnZW5jeSBhbGdvcml0aG1cbi8vKHNlZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCNhZG9wdGlvbkFnZW5jeSlcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vU3RlcHMgNS04IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeShwLCB0b2tlbikge1xuICAgIHZhciBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lKHRva2VuLnRhZ05hbWUpO1xuXG4gICAgaWYgKGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICAgICAgaWYgKCFwLm9wZW5FbGVtZW50cy5jb250YWlucyhmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxzZSBpZiAoIXAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG9rZW4udGFnTmFtZSkpXG4gICAgICAgICAgICBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gbnVsbDtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgcmV0dXJuIGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG59XG5cbi8vU3RlcHMgOSBhbmQgMTAgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICB2YXIgZnVydGhlc3RCbG9jayA9IG51bGw7XG5cbiAgICBmb3IgKHZhciBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG5cbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudClcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGlmIChwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQpKVxuICAgICAgICAgICAgZnVydGhlc3RCbG9jayA9IGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgaWYgKCFmdXJ0aGVzdEJsb2NrKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsRWxlbWVudFBvcHBlZChmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVydGhlc3RCbG9jaztcbn1cblxuLy9TdGVwIDEzIG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhSW5uZXJMb29wKHAsIGZ1cnRoZXN0QmxvY2ssIGZvcm1hdHRpbmdFbGVtZW50KSB7XG4gICAgdmFyIGxhc3RFbGVtZW50ID0gZnVydGhlc3RCbG9jayxcbiAgICAgICAgbmV4dEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5nZXRDb21tb25BbmNlc3RvcihmdXJ0aGVzdEJsb2NrKTtcblxuICAgIGZvciAodmFyIGkgPSAwLCBlbGVtZW50ID0gbmV4dEVsZW1lbnQ7IGVsZW1lbnQgIT09IGZvcm1hdHRpbmdFbGVtZW50OyBpKyssIGVsZW1lbnQgPSBuZXh0RWxlbWVudCkge1xuICAgICAgICAvL05PVEU6IHN0b3JlIG5leHQgZWxlbWVudCBmb3IgdGhlIG5leHQgbG9vcCBpdGVyYXRpb24gKGl0IG1heSBiZSBkZWxldGVkIGZyb20gdGhlIHN0YWNrIGJ5IHN0ZXAgOS41KVxuICAgICAgICBuZXh0RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciBlbGVtZW50RW50cnkgPSBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5nZXRFbGVtZW50RW50cnkoZWxlbWVudCksXG4gICAgICAgICAgICBjb3VudGVyT3ZlcmZsb3cgPSBlbGVtZW50RW50cnkgJiYgaSA+PSBBQV9JTk5FUl9MT09QX0lURVIsXG4gICAgICAgICAgICBzaG91bGRSZW1vdmVGcm9tT3BlbkVsZW1lbnRzID0gIWVsZW1lbnRFbnRyeSB8fCBjb3VudGVyT3ZlcmZsb3c7XG5cbiAgICAgICAgaWYgKHNob3VsZFJlbW92ZUZyb21PcGVuRWxlbWVudHMpIHtcbiAgICAgICAgICAgIGlmIChjb3VudGVyT3ZlcmZsb3cpXG4gICAgICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucmVtb3ZlRW50cnkoZWxlbWVudEVudHJ5KTtcblxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKGVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gYWFSZWNyZWF0ZUVsZW1lbnRGcm9tRW50cnkocCwgZWxlbWVudEVudHJ5KTtcblxuICAgICAgICAgICAgaWYgKGxhc3RFbGVtZW50ID09PSBmdXJ0aGVzdEJsb2NrKVxuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmJvb2ttYXJrID0gZWxlbWVudEVudHJ5O1xuXG4gICAgICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUobGFzdEVsZW1lbnQpO1xuICAgICAgICAgICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChlbGVtZW50LCBsYXN0RWxlbWVudCk7XG4gICAgICAgICAgICBsYXN0RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGFzdEVsZW1lbnQ7XG59XG5cbi8vU3RlcCAxMy43IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhUmVjcmVhdGVFbGVtZW50RnJvbUVudHJ5KHAsIGVsZW1lbnRFbnRyeSkge1xuICAgIHZhciBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnRFbnRyeS5lbGVtZW50KSxcbiAgICAgICAgbmV3RWxlbWVudCA9IHAudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudChlbGVtZW50RW50cnkudG9rZW4udGFnTmFtZSwgbnMsIGVsZW1lbnRFbnRyeS50b2tlbi5hdHRycyk7XG5cbiAgICBwLm9wZW5FbGVtZW50cy5yZXBsYWNlKGVsZW1lbnRFbnRyeS5lbGVtZW50LCBuZXdFbGVtZW50KTtcbiAgICBlbGVtZW50RW50cnkuZWxlbWVudCA9IG5ld0VsZW1lbnQ7XG5cbiAgICByZXR1cm4gbmV3RWxlbWVudDtcbn1cblxuLy9TdGVwIDE0IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhSW5zZXJ0TGFzdE5vZGVJbkNvbW1vbkFuY2VzdG9yKHAsIGNvbW1vbkFuY2VzdG9yLCBsYXN0RWxlbWVudCkge1xuICAgIGlmIChwLl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcoY29tbW9uQW5jZXN0b3IpKVxuICAgICAgICBwLl9mb3N0ZXJQYXJlbnRFbGVtZW50KGxhc3RFbGVtZW50KTtcblxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgdG4gPSBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoY29tbW9uQW5jZXN0b3IpLFxuICAgICAgICAgICAgbnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjb21tb25BbmNlc3Rvcik7XG5cbiAgICAgICAgaWYgKHRuID09PSAkLlRFTVBMQVRFICYmIG5zID09PSBOUy5IVE1MKVxuICAgICAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBwLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudChjb21tb25BbmNlc3Rvcik7XG5cbiAgICAgICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChjb21tb25BbmNlc3RvciwgbGFzdEVsZW1lbnQpO1xuICAgIH1cbn1cblxuLy9TdGVwcyAxNS0xOSBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgdmFyIG5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KSxcbiAgICAgICAgdG9rZW4gPSBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LnRva2VuLFxuICAgICAgICBuZXdFbGVtZW50ID0gcC50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIG5zLCB0b2tlbi5hdHRycyk7XG5cbiAgICBwLl9hZG9wdE5vZGVzKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xuICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCk7XG5cbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayhuZXdFbGVtZW50LCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LnRva2VuKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcblxuICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIHAub3BlbkVsZW1lbnRzLmluc2VydEFmdGVyKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xufVxuXG4vL0FsZ29yaXRobSBlbnRyeSBwb2ludFxuZnVuY3Rpb24gY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKSB7XG4gICAgdmFyIGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IEFBX09VVEVSX0xPT1BfSVRFUjsgaSsrKSB7XG4gICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBhYU9idGFpbkZvcm1hdHRpbmdFbGVtZW50RW50cnkocCwgdG9rZW4sIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuXG4gICAgICAgIGlmICghZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSlcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIHZhciBmdXJ0aGVzdEJsb2NrID0gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuXG4gICAgICAgIGlmICghZnVydGhlc3RCbG9jaylcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmJvb2ttYXJrID0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeTtcblxuICAgICAgICB2YXIgbGFzdEVsZW1lbnQgPSBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpLFxuICAgICAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBwLm9wZW5FbGVtZW50cy5nZXRDb21tb25BbmNlc3Rvcihmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuXG4gICAgICAgIHAudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShsYXN0RWxlbWVudCk7XG4gICAgICAgIGFhSW5zZXJ0TGFzdE5vZGVJbkNvbW1vbkFuY2VzdG9yKHAsIGNvbW1vbkFuY2VzdG9yLCBsYXN0RWxlbWVudCk7XG4gICAgICAgIGFhUmVwbGFjZUZvcm1hdHRpbmdFbGVtZW50KHAsIGZ1cnRoZXN0QmxvY2ssIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgIH1cbn1cblxuXG4vL0dlbmVyaWMgdG9rZW4gaGFuZGxlcnNcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBpZ25vcmVUb2tlbigpIHtcbiAgICAvL05PVEU6IGRvIG5vdGhpbmcgPSlcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ29tbWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5jdXJyZW50VG1wbENvbnRlbnQgfHwgcC5vcGVuRWxlbWVudHMuY3VycmVudCk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb1Jvb3RIdG1sRWxlbWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5pdGVtc1swXSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb0RvY3VtZW50KHAsIHRva2VuKSB7XG4gICAgcC5fYXBwZW5kQ29tbWVudE5vZGUodG9rZW4sIHAuZG9jdW1lbnQpO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRDaGFyYWN0ZXJzKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5cbmZ1bmN0aW9uIHN0b3BQYXJzaW5nKHApIHtcbiAgICBwLnN0b3BwZWQgPSB0cnVlO1xufVxuXG4vLzEyLjIuNS40LjEgVGhlIFwiaW5pdGlhbFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gZG9jdHlwZUluSW5pdGlhbE1vZGUocCwgdG9rZW4pIHtcbiAgICBwLl9zZXREb2N1bWVudFR5cGUodG9rZW4pO1xuXG4gICAgdmFyIG1vZGUgPSB0b2tlbi5mb3JjZVF1aXJrcyA/XG4gICAgICAgIEhUTUwuRE9DVU1FTlRfTU9ERS5RVUlSS1MgOlxuICAgICAgICBkb2N0eXBlLmdldERvY3VtZW50TW9kZSh0b2tlbi5uYW1lLCB0b2tlbi5wdWJsaWNJZCwgdG9rZW4uc3lzdGVtSWQpO1xuXG4gICAgcC50cmVlQWRhcHRlci5zZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCwgbW9kZSk7XG5cbiAgICBwLmluc2VydGlvbk1vZGUgPSBCRUZPUkVfSFRNTF9NT0RFO1xufVxuXG5mdW5jdGlvbiB0b2tlbkluSW5pdGlhbE1vZGUocCwgdG9rZW4pIHtcbiAgICBwLnRyZWVBZGFwdGVyLnNldERvY3VtZW50TW9kZShwLmRvY3VtZW50LCBIVE1MLkRPQ1VNRU5UX01PREUuUVVJUktTKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBCRUZPUkVfSFRNTF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cblxuLy8xMi4yLjUuNC4yIFRoZSBcImJlZm9yZSBodG1sXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0JlZm9yZUh0bWwocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBCRUZPUkVfSEVBRF9NT0RFO1xuICAgIH1cblxuICAgIGVsc2VcbiAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gZW5kVGFnQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCB8fCB0biA9PT0gJC5IRUFEIHx8IHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuQlIpXG4gICAgICAgIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IRUFEX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuXG4vLzEyLjIuNS40LjMgVGhlIFwiYmVmb3JlIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTClcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuSEVBRCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5oZWFkRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTU9ERTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0JlZm9yZUhlYWQocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhFQUQgfHwgdG4gPT09ICQuQk9EWSB8fCB0biA9PT0gJC5IVE1MIHx8IHRuID09PSAkLkJSKVxuICAgICAgICB0b2tlbkJlZm9yZUhlYWQocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiB0b2tlbkJlZm9yZUhlYWQocCwgdG9rZW4pIHtcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLkhFQUQpO1xuICAgIHAuaGVhZEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG5cbi8vMTIuMi41LjQuNCBUaGUgXCJpbiBoZWFkXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luSGVhZChwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTClcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuQkFTRSB8fCB0biA9PT0gJC5CQVNFRk9OVCB8fCB0biA9PT0gJC5CR1NPVU5EIHx8IHRuID09PSAkLkxJTksgfHwgdG4gPT09ICQuTUVUQSlcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG5cbiAgICBlbHNlIGlmICh0biA9PT0gJC5USVRMRSlcbiAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkNEQVRBKTtcblxuICAgIC8vTk9URTogaGVyZSB3ZSBhc3N1bWUgdGhhdCB3ZSBhbHdheXMgYWN0IGFzIGFuIGludGVyYWN0aXZlIHVzZXIgYWdlbnQgd2l0aCBlbmFibGVkIHNjcmlwdGluZywgc28gd2UgcGFyc2VcbiAgICAvLzxub3NjcmlwdD4gYXMgYSByYXd0ZXh0LlxuICAgIGVsc2UgaWYgKHRuID09PSAkLk5PU0NSSVBUIHx8IHRuID09PSAkLk5PRlJBTUVTIHx8IHRuID09PSAkLlNUWUxFKVxuICAgICAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXIuTU9ERS5SQVdURVhUKTtcblxuICAgIGVsc2UgaWYgKHRuID09PSAkLlNDUklQVClcbiAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuU0NSSVBUX0RBVEEpO1xuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgcC5faW5zZXJ0VGVtcGxhdGUodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RFTVBMQVRFX01PREU7XG4gICAgICAgIHAuX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZShJTl9URU1QTEFURV9NT0RFKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmICh0biAhPT0gJC5IRUFEKVxuICAgICAgICB0b2tlbkluSGVhZChwLCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luSGVhZChwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSEVBRCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfSEVBRF9NT0RFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuQlIgfHwgdG4gPT09ICQuSFRNTClcbiAgICAgICAgdG9rZW5JbkhlYWQocCwgdG9rZW4pO1xuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUgJiYgcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRFTVBMQVRFKTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgcC5fcG9wVG1wbEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b2tlbkluSGVhZChwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0hFQURfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG5cbi8vMTIuMi41LjQuNiBUaGUgXCJhZnRlciBoZWFkXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVySGVhZChwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTClcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuQk9EWSkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICB9XG5cbiAgICBlbHNlIGlmICh0biA9PT0gJC5GUkFNRVNFVCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fRlJBTUVTRVRfTU9ERTtcbiAgICB9XG5cbiAgICBlbHNlIGlmICh0biA9PT0gJC5CQVNFIHx8IHRuID09PSAkLkJBU0VGT05UIHx8IHRuID09PSAkLkJHU09VTkQgfHwgdG4gPT09ICQuTElOSyB8fCB0biA9PT0gJC5NRVRBIHx8XG4gICAgICAgICAgICAgdG4gPT09ICQuTk9GUkFNRVMgfHwgdG4gPT09ICQuU0NSSVBUIHx8IHRuID09PSAkLlNUWUxFIHx8IHRuID09PSAkLlRFTVBMQVRFIHx8IHRuID09PSAkLlRJVExFKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnB1c2gocC5oZWFkRWxlbWVudCk7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKHAuaGVhZEVsZW1lbnQpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuICE9PSAkLkhFQUQpXG4gICAgICAgIHRva2VuQWZ0ZXJIZWFkKHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gZW5kVGFnQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5CT0RZIHx8IHRuID09PSAkLkhUTUwgfHwgdG4gPT09ICQuQlIpXG4gICAgICAgIHRva2VuQWZ0ZXJIZWFkKHAsIHRva2VuKTtcblxuICAgIGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKVxuICAgICAgICBlbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiB0b2tlbkFmdGVySGVhZChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuQk9EWSk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQk9EWV9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cblxuLy8xMi4yLjUuNC43IFRoZSBcImluIGJvZHlcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xufVxuXG5mdW5jdGlvbiBjaGFyYWN0ZXJJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBodG1sU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMudG1wbENvdW50ID09PSAwKVxuICAgICAgICBwLnRyZWVBZGFwdGVyLmFkb3B0QXR0cmlidXRlcyhwLm9wZW5FbGVtZW50cy5pdGVtc1swXSwgdG9rZW4uYXR0cnMpO1xufVxuXG5mdW5jdGlvbiBib2R5U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICB2YXIgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy50cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpO1xuXG4gICAgaWYgKGJvZHlFbGVtZW50ICYmIHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA9PT0gMCkge1xuICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICAgICAgcC50cmVlQWRhcHRlci5hZG9wdEF0dHJpYnV0ZXMoYm9keUVsZW1lbnQsIHRva2VuLmF0dHJzKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGZyYW1lc2V0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICB2YXIgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy50cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpO1xuXG4gICAgaWYgKHAuZnJhbWVzZXRPayAmJiBib2R5RWxlbWVudCkge1xuICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUoYm9keUVsZW1lbnQpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BBbGxVcFRvSHRtbEVsZW1lbnQoKTtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0ZSQU1FU0VUX01PREU7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKVxuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gbnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpXG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcblxuICAgIHZhciB0biA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkgxIHx8IHRuID09PSAkLkgyIHx8IHRuID09PSAkLkgzIHx8IHRuID09PSAkLkg0IHx8IHRuID09PSAkLkg1IHx8IHRuID09PSAkLkg2KVxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBwcmVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpXG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIC8vTk9URTogSWYgdGhlIG5leHQgdG9rZW4gaXMgYSBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyIHRva2VuLCB0aGVuIGlnbm9yZSB0aGF0IHRva2VuIGFuZCBtb3ZlXG4gICAgLy9vbiB0byB0aGUgbmV4dCBvbmUuIChOZXdsaW5lcyBhdCB0aGUgc3RhcnQgb2YgcHJlIGJsb2NrcyBhcmUgaWdub3JlZCBhcyBhbiBhdXRob3JpbmcgY29udmVuaWVuY2UuKVxuICAgIHAuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZm9ybVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgdmFyIGluVGVtcGxhdGUgPSBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwO1xuXG4gICAgaWYgKCFwLmZvcm1FbGVtZW50IHx8IGluVGVtcGxhdGUpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSlcbiAgICAgICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcblxuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcblxuICAgICAgICBpZiAoIWluVGVtcGxhdGUpXG4gICAgICAgICAgICBwLmZvcm1FbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcblxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBmb3IgKHZhciBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbaV0sXG4gICAgICAgICAgICBlbGVtZW50VG4gPSBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCksXG4gICAgICAgICAgICBjbG9zZVRuID0gbnVsbDtcblxuICAgICAgICBpZiAodG4gPT09ICQuTEkgJiYgZWxlbWVudFRuID09PSAkLkxJKVxuICAgICAgICAgICAgY2xvc2VUbiA9ICQuTEk7XG5cbiAgICAgICAgZWxzZSBpZiAoKHRuID09PSAkLkREIHx8IHRuID09PSAkLkRUKSAmJiAoZWxlbWVudFRuID09PSAkLkREIHx8IGVsZW1lbnRUbiA9PT0gJC5EVCkpXG4gICAgICAgICAgICBjbG9zZVRuID0gZWxlbWVudFRuO1xuXG4gICAgICAgIGlmIChjbG9zZVRuKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihjbG9zZVRuKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChjbG9zZVRuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVsZW1lbnRUbiAhPT0gJC5BRERSRVNTICYmIGVsZW1lbnRUbiAhPT0gJC5ESVYgJiYgZWxlbWVudFRuICE9PSAkLlAgJiYgcC5faXNTcGVjaWFsRWxlbWVudChlbGVtZW50KSlcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpXG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBwbGFpbnRleHRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpXG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyLk1PREUuUExBSU5URVhUO1xufVxuXG5mdW5jdGlvbiBidXR0b25TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQlVUVE9OKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkJVVFRPTik7XG4gICAgfVxuXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgdmFyIGFjdGl2ZUVsZW1lbnRFbnRyeSA9IHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZSgkLkEpO1xuXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnRFbnRyeSkge1xuICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoYWN0aXZlRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShhY3RpdmVFbGVtZW50RW50cnkpO1xuICAgIH1cblxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnB1c2hFbGVtZW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gbm9iclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcblxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuTk9CUikpIHtcbiAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5wdXNoRWxlbWVudChwLm9wZW5FbGVtZW50cy5jdXJyZW50LCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGFwcGxldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdGFibGVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldERvY3VtZW50TW9kZShwLmRvY3VtZW50KSAhPT0gSFRNTC5ET0NVTUVOVF9NT0RFLlFVSVJLUyAmJiBwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpXG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XG59XG5cbmZ1bmN0aW9uIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlucHV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuXG4gICAgdmFyIGlucHV0VHlwZSA9IFRva2VuaXplci5nZXRUb2tlbkF0dHIodG9rZW4sIEFUVFJTLlRZUEUpO1xuXG4gICAgaWYgKCFpbnB1dFR5cGUgfHwgaW5wdXRUeXBlLnRvTG93ZXJDYXNlKCkgIT09IEhJRERFTl9JTlBVVF9UWVBFKVxuICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcblxufVxuXG5mdW5jdGlvbiBwYXJhbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbmZ1bmN0aW9uIGhyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKVxuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuTUVOVUlURU0pXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuXG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGltYWdlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICB0b2tlbi50YWdOYW1lID0gJC5JTUc7XG4gICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gdGV4dGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIC8vTk9URTogSWYgdGhlIG5leHQgdG9rZW4gaXMgYSBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyIHRva2VuLCB0aGVuIGlnbm9yZSB0aGF0IHRva2VuIGFuZCBtb3ZlXG4gICAgLy9vbiB0byB0aGUgbmV4dCBvbmUuIChOZXdsaW5lcyBhdCB0aGUgc3RhcnQgb2YgdGV4dGFyZWEgZWxlbWVudHMgYXJlIGlnbm9yZWQgYXMgYW4gYXV0aG9yaW5nIGNvbnZlbmllbmNlLilcbiAgICBwLnNraXBOZXh0TmV3TGluZSA9IHRydWU7XG4gICAgcC50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5SQ0RBVEE7XG4gICAgcC5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBwLmluc2VydGlvbk1vZGU7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gVEVYVF9NT0RFO1xufVxuXG5mdW5jdGlvbiB4bXBTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpXG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcblxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkFXVEVYVCk7XG59XG5cbmZ1bmN0aW9uIGlmcmFtZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkFXVEVYVCk7XG59XG5cbi8vTk9URTogaGVyZSB3ZSBhc3N1bWUgdGhhdCB3ZSBhbHdheXMgYWN0IGFzIGFuIHVzZXIgYWdlbnQgd2l0aCBlbmFibGVkIHBsdWdpbnMsIHNvIHdlIHBhcnNlXG4vLzxub2VtYmVkPiBhcyBhIHJhd3RleHQuXG5mdW5jdGlvbiBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXIuTU9ERS5SQVdURVhUKTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuXG4gICAgaWYgKHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fVEFCTEVfTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX0NBUFRJT05fTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX1RBQkxFX0JPRFlfTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX1JPV19NT0RFIHx8XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fQ0VMTF9NT0RFKVxuXG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9JTl9UQUJMRV9NT0RFO1xuXG4gICAgZWxzZVxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9TRUxFQ1RfTU9ERTtcbn1cblxuZnVuY3Rpb24gb3B0Z3JvdXBTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04pXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuUlVCWSkpXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5SVUJZKSlcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5SVEMpO1xuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbmZ1bmN0aW9uIG1lbnVpdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuTUVOVUlURU0pXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuXG4gICAgLy8gVE9ETyBuZWVkcyBjbGFyaWZpY2F0aW9uLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL3B1bGwvOTA3L2ZpbGVzI3I3MzUwNTg3N1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gbWVudVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSlcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk1FTlVJVEVNKVxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBtYXRoU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuXG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG5cbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpXG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLk1BVEhNTCk7XG4gICAgZWxzZVxuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5NQVRITUwpO1xufVxuXG5mdW5jdGlvbiBzdmdTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG5cbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcblxuICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZylcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuU1ZHKTtcbiAgICBlbHNlXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLlNWRyk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbi8vT1BUSU1JWkFUSU9OOiBJbnRlZ2VyIGNvbXBhcmlzb25zIGFyZSBsb3ctY29zdCwgc28gd2UgY2FuIHVzZSB2ZXJ5IGZhc3QgdGFnIG5hbWUgbGVuZ3RoIGZpbHRlcnMgaGVyZS5cbi8vSXQncyBmYXN0ZXIgdGhhbiB1c2luZyBkaWN0aW9uYXJ5LlxuZnVuY3Rpb24gc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgc3dpdGNoICh0bi5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkkgfHwgdG4gPT09ICQuUyB8fCB0biA9PT0gJC5CIHx8IHRuID09PSAkLlUpXG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuUClcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5BKVxuICAgICAgICAgICAgICAgIGFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuREwgfHwgdG4gPT09ICQuT0wgfHwgdG4gPT09ICQuVUwpXG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDYpXG4gICAgICAgICAgICAgICAgbnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkxJIHx8IHRuID09PSAkLkREIHx8IHRuID09PSAkLkRUKVxuICAgICAgICAgICAgICAgIGxpc3RJdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5FTSB8fCB0biA9PT0gJC5UVClcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5CUilcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5IUilcbiAgICAgICAgICAgICAgICBoclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuUkIpXG4gICAgICAgICAgICAgICAgcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlJUIHx8IHRuID09PSAkLlJQKVxuICAgICAgICAgICAgICAgIHJ0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biAhPT0gJC5USCAmJiB0biAhPT0gJC5URCAmJiB0biAhPT0gJC5UUilcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuRElWIHx8IHRuID09PSAkLkRJUiB8fCB0biA9PT0gJC5OQVYpXG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuUFJFKVxuICAgICAgICAgICAgICAgIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuQklHKVxuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLklNRyB8fCB0biA9PT0gJC5XQlIpXG4gICAgICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuWE1QKVxuICAgICAgICAgICAgICAgIHhtcFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuU1ZHKVxuICAgICAgICAgICAgICAgIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuUlRDKVxuICAgICAgICAgICAgICAgIHJiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biAhPT0gJC5DT0wpXG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkhUTUwpXG4gICAgICAgICAgICAgICAgaHRtbFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuQkFTRSB8fCB0biA9PT0gJC5MSU5LIHx8IHRuID09PSAkLk1FVEEpXG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5CT0RZKVxuICAgICAgICAgICAgICAgIGJvZHlTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLk1BSU4pXG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuRk9STSlcbiAgICAgICAgICAgICAgICBmb3JtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5DT0RFIHx8IHRuID09PSAkLkZPTlQpXG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuTk9CUilcbiAgICAgICAgICAgICAgICBub2JyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5BUkVBKVxuICAgICAgICAgICAgICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLk1BVEgpXG4gICAgICAgICAgICAgICAgbWF0aFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuTUVOVSlcbiAgICAgICAgICAgICAgICBtZW51U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biAhPT0gJC5IRUFEKVxuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5TVFlMRSB8fCB0biA9PT0gJC5USVRMRSlcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkFTSURFKVxuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlNNQUxMKVxuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKVxuICAgICAgICAgICAgICAgIHRhYmxlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5FTUJFRClcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5JTlBVVClcbiAgICAgICAgICAgICAgICBpbnB1dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuUEFSQU0gfHwgdG4gPT09ICQuVFJBQ0spXG4gICAgICAgICAgICAgICAgcGFyYW1TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLklNQUdFKVxuICAgICAgICAgICAgICAgIGltYWdlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biAhPT0gJC5GUkFNRSAmJiB0biAhPT0gJC5UQk9EWSAmJiB0biAhPT0gJC5URk9PVCAmJiB0biAhPT0gJC5USEVBRClcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuU0NSSVBUKVxuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuQ0VOVEVSIHx8IHRuID09PSAkLkZJR1VSRSB8fCB0biA9PT0gJC5GT09URVIgfHwgdG4gPT09ICQuSEVBREVSIHx8IHRuID09PSAkLkhHUk9VUClcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5CVVRUT04pXG4gICAgICAgICAgICAgICAgYnV0dG9uU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5TVFJJS0UgfHwgdG4gPT09ICQuU1RST05HKVxuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkFQUExFVCB8fCB0biA9PT0gJC5PQkpFQ1QpXG4gICAgICAgICAgICAgICAgYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5LRVlHRU4pXG4gICAgICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuU09VUkNFKVxuICAgICAgICAgICAgICAgIHBhcmFtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5JRlJBTUUpXG4gICAgICAgICAgICAgICAgaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5TRUxFQ1QpXG4gICAgICAgICAgICAgICAgc2VsZWN0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5PUFRJT04pXG4gICAgICAgICAgICAgICAgb3B0Z3JvdXBTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkdTT1VORClcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkRFVEFJTFMgfHwgdG4gPT09ICQuQUREUkVTUyB8fCB0biA9PT0gJC5BUlRJQ0xFIHx8IHRuID09PSAkLlNFQ1RJT04gfHwgdG4gPT09ICQuU1VNTUFSWSlcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5MSVNUSU5HKVxuICAgICAgICAgICAgICAgIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuTUFSUVVFRSlcbiAgICAgICAgICAgICAgICBhcHBsZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLk5PRU1CRUQpXG4gICAgICAgICAgICAgICAgbm9lbWJlZFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gIT09ICQuQ0FQVElPTilcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkFTRUZPTlQpXG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5NRU5VSVRFTSlcbiAgICAgICAgICAgICAgICBtZW51aXRlbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuRlJBTUVTRVQpXG4gICAgICAgICAgICAgICAgZnJhbWVzZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkZJRUxEU0VUKVxuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlRFWFRBUkVBKVxuICAgICAgICAgICAgICAgIHRleHRhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSlcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLk5PU0NSSVBUKVxuICAgICAgICAgICAgICAgIG5vZW1iZWRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLk9QVEdST1VQKVxuICAgICAgICAgICAgICAgIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biAhPT0gJC5DT0xHUk9VUClcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuUExBSU5URVhUKVxuICAgICAgICAgICAgICAgIHBsYWludGV4dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkxPQ0tRVU9URSB8fCB0biA9PT0gJC5GSUdDQVBUSU9OKVxuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJvZHlFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQk9EWSkpXG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0JPRFlfTU9ERTtcbn1cblxuZnVuY3Rpb24gaHRtbEVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQk9EWSkpIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfQk9EWV9NT0RFO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZm9ybUVuZFRhZ0luQm9keShwKSB7XG4gICAgdmFyIGluVGVtcGxhdGUgPSBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwLFxuICAgICAgICBmb3JtRWxlbWVudCA9IHAuZm9ybUVsZW1lbnQ7XG5cbiAgICBpZiAoIWluVGVtcGxhdGUpXG4gICAgICAgIHAuZm9ybUVsZW1lbnQgPSBudWxsO1xuXG4gICAgaWYgKChmb3JtRWxlbWVudCB8fCBpblRlbXBsYXRlKSAmJiBwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuRk9STSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuXG4gICAgICAgIGlmIChpblRlbXBsYXRlKVxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuRk9STSk7XG5cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKGZvcm1FbGVtZW50KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmICghcC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKVxuICAgICAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLlApO1xuXG4gICAgcC5fY2xvc2VQRWxlbWVudCgpO1xufVxuXG5mdW5jdGlvbiBsaUVuZFRhZ0luQm9keShwKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luTGlzdEl0ZW1TY29wZSgkLkxJKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbigkLkxJKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuTEkpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZGRFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG4pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKHRuKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG51bWJlcmVkSGVhZGVyRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG4pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJyRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuQlIpO1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGZvciAodmFyIGkgPSBwLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+IDA7IGktLSkge1xuICAgICAgICB2YXIgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuXG4gICAgICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IHRuKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbih0bik7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbEVsZW1lbnRQb3BwZWQoZWxlbWVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQpKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufVxuXG4vL09QVElNSVpBVElPTjogSW50ZWdlciBjb21wYXJpc29ucyBhcmUgbG93LWNvc3QsIHNvIHdlIGNhbiB1c2UgdmVyeSBmYXN0IHRhZyBuYW1lIGxlbmd0aCBmaWx0ZXJzIGhlcmUuXG4vL0l0J3MgZmFzdGVyIHRoYW4gdXNpbmcgZGljdGlvbmFyeS5cbmZ1bmN0aW9uIGVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBzd2l0Y2ggKHRuLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQSB8fCB0biA9PT0gJC5CIHx8IHRuID09PSAkLkkgfHwgdG4gPT09ICQuUyB8fCB0biA9PT0gJC5VKVxuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlApXG4gICAgICAgICAgICAgICAgcEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkRMIHx8IHRuID09PSAkLlVMIHx8IHRuID09PSAkLk9MKVxuICAgICAgICAgICAgICAgIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5MSSlcbiAgICAgICAgICAgICAgICBsaUVuZFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkREIHx8IHRuID09PSAkLkRUKVxuICAgICAgICAgICAgICAgIGRkRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDYpXG4gICAgICAgICAgICAgICAgbnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5CUilcbiAgICAgICAgICAgICAgICBickVuZFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkVNIHx8IHRuID09PSAkLlRUKVxuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkJJRylcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5ESVIgfHwgdG4gPT09ICQuRElWIHx8IHRuID09PSAkLk5BVilcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQk9EWSlcbiAgICAgICAgICAgICAgICBib2R5RW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuSFRNTClcbiAgICAgICAgICAgICAgICBodG1sRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuRk9STSlcbiAgICAgICAgICAgICAgICBmb3JtRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuQ09ERSB8fCB0biA9PT0gJC5GT05UIHx8IHRuID09PSAkLk5PQlIpXG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuTUFJTiB8fCB0biA9PT0gJC5NRU5VKVxuICAgICAgICAgICAgICAgIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5BU0lERSlcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuU01BTEwpXG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQ0VOVEVSIHx8IHRuID09PSAkLkZJR1VSRSB8fCB0biA9PT0gJC5GT09URVIgfHwgdG4gPT09ICQuSEVBREVSIHx8IHRuID09PSAkLkhHUk9VUClcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuQVBQTEVUIHx8IHRuID09PSAkLk9CSkVDVClcbiAgICAgICAgICAgICAgICBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5TVFJJS0UgfHwgdG4gPT09ICQuU1RST05HKVxuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkFERFJFU1MgfHwgdG4gPT09ICQuQVJUSUNMRSB8fCB0biA9PT0gJC5ERVRBSUxTIHx8IHRuID09PSAkLlNFQ1RJT04gfHwgdG4gPT09ICQuU1VNTUFSWSlcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuTUFSUVVFRSlcbiAgICAgICAgICAgICAgICBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5GSUVMRFNFVClcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpXG4gICAgICAgICAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkJMT0NLUVVPVEUgfHwgdG4gPT09ICQuRklHQ0FQVElPTilcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0IDpcbiAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW9mSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAudG1wbEluc2VydGlvbk1vZGVTdGFja1RvcCA+IC0xKVxuICAgICAgICBlb2ZJblRlbXBsYXRlKHAsIHRva2VuKTtcblxuICAgIGVsc2VcbiAgICAgICAgcC5zdG9wcGVkID0gdHJ1ZTtcbn1cblxuLy8xMi4yLjUuNC44IFRoZSBcInRleHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGVuZFRhZ0luVGV4dChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLlNDUklQVClcbiAgICAgICAgcC5wZW5kaW5nU2NyaXB0ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcblxuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xufVxuXG5cbmZ1bmN0aW9uIGVvZkluVGV4dChwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cblxuLy8xMi4yLjUuNC45IFRoZSBcImluIHRhYmxlXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBjaGFyYWN0ZXJJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgdmFyIGN1clRuID0gcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWU7XG5cbiAgICBpZiAoY3VyVG4gPT09ICQuVEFCTEUgfHwgY3VyVG4gPT09ICQuVEJPRFkgfHwgY3VyVG4gPT09ICQuVEZPT1QgfHwgY3VyVG4gPT09ICQuVEhFQUQgfHwgY3VyVG4gPT09ICQuVFIpIHtcbiAgICAgICAgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zID0gW107XG4gICAgICAgIHAuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbiA9IGZhbHNlO1xuICAgICAgICBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHAuaW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfVEVYVF9NT0RFO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cblxuICAgIGVsc2VcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gY2FwdGlvblN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQ0FQVElPTl9NT0RFO1xufVxuXG5mdW5jdGlvbiBjb2xncm91cFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQ09MVU1OX0dST1VQX01PREU7XG59XG5cbmZ1bmN0aW9uIGNvbFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5DT0xHUk9VUCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQ09MVU1OX0dST1VQX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gdGJvZHlTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbn1cblxuZnVuY3Rpb24gdGRTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuVEJPRFkpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG5mdW5jdGlvbiB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UQUJMRSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEFCTEUpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlucHV0U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgdmFyIGlucHV0VHlwZSA9IFRva2VuaXplci5nZXRUb2tlbkF0dHIodG9rZW4sIEFUVFJTLlRZUEUpO1xuXG4gICAgaWYgKGlucHV0VHlwZSAmJiBpbnB1dFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gSElEREVOX0lOUFVUX1RZUEUpXG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuXG4gICAgZWxzZVxuICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiBmb3JtU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgaWYgKCFwLmZvcm1FbGVtZW50ICYmIHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA9PT0gMCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5mb3JtRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCB8fCB0biA9PT0gJC5UUilcbiAgICAgICAgICAgICAgICB0ZFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQ09MKVxuICAgICAgICAgICAgICAgIGNvbFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuRk9STSlcbiAgICAgICAgICAgICAgICBmb3JtU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5UQUJMRSlcbiAgICAgICAgICAgICAgICB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlNUWUxFKVxuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQpXG4gICAgICAgICAgICAgICAgdGJvZHlTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5JTlBVVClcbiAgICAgICAgICAgICAgICBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuU0NSSVBUKVxuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DQVBUSU9OKVxuICAgICAgICAgICAgICAgIGNhcHRpb25TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkNPTEdST1VQKVxuICAgICAgICAgICAgICAgIGNvbGdyb3VwU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcblxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpXG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UQUJMRSkpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRBQkxFKTtcbiAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpXG4gICAgICAgIGVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG5cbiAgICBlbHNlIGlmICh0biAhPT0gJC5CT0RZICYmIHRuICE9PSAkLkNBUFRJT04gJiYgdG4gIT09ICQuQ09MICYmIHRuICE9PSAkLkNPTEdST1VQICYmIHRuICE9PSAkLkhUTUwgJiZcbiAgICAgICAgICAgICB0biAhPT0gJC5UQk9EWSAmJiB0biAhPT0gJC5URCAmJiB0biAhPT0gJC5URk9PVCAmJiB0biAhPT0gJC5USCAmJiB0biAhPT0gJC5USEVBRCAmJiB0biAhPT0gJC5UUilcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gdG9rZW5JblRhYmxlKHAsIHRva2VuKSB7XG4gICAgdmFyIHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGUgPSBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQ7XG5cbiAgICBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSB0cnVlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUodG9rZW4pO1xuICAgIHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGU7XG59XG5cblxuLy8xMi4yLjUuNC4xMCBUaGUgXCJpbiB0YWJsZSB0ZXh0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5UYWJsZVRleHQocCwgdG9rZW4pIHtcbiAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMucHVzaCh0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGNoYXJhY3RlckluVGFibGVUZXh0KHAsIHRva2VuKSB7XG4gICAgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLnB1c2godG9rZW4pO1xuICAgIHAuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbiA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIHRva2VuSW5UYWJsZVRleHQocCwgdG9rZW4pIHtcbiAgICB2YXIgaSA9IDA7XG5cbiAgICBpZiAocC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuKSB7XG4gICAgICAgIGZvciAoOyBpIDwgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHAucGVuZGluZ0NoYXJhY3RlclRva2Vuc1tpXSk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIGZvciAoOyBpIDwgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgcC5faW5zZXJ0Q2hhcmFjdGVycyhwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnNbaV0pO1xuICAgIH1cblxuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cblxuLy8xMi4yLjUuNC4xMSBUaGUgXCJpbiBjYXB0aW9uXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luQ2FwdGlvbihwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5DT0wgfHwgdG4gPT09ICQuQ09MR1JPVVAgfHwgdG4gPT09ICQuVEJPRFkgfHxcbiAgICAgICAgdG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEggfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVFIpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLkNBUFRJT04pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5DQVBUSU9OKTtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVsc2VcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkNhcHRpb24ocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkNBUFRJT04gfHwgdG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLkNBUFRJT04pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5DQVBUSU9OKTtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUpXG4gICAgICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuICE9PSAkLkJPRFkgJiYgdG4gIT09ICQuQ09MICYmIHRuICE9PSAkLkNPTEdST1VQICYmIHRuICE9PSAkLkhUTUwgJiYgdG4gIT09ICQuVEJPRFkgJiZcbiAgICAgICAgICAgICB0biAhPT0gJC5URCAmJiB0biAhPT0gJC5URk9PVCAmJiB0biAhPT0gJC5USCAmJiB0biAhPT0gJC5USEVBRCAmJiB0biAhPT0gJC5UUilcbiAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbn1cblxuXG4vLzEyLjIuNS40LjEyIFRoZSBcImluIGNvbHVtbiBncm91cFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKVxuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICBlbHNlIGlmICh0biA9PT0gJC5DT0wpXG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpXG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcblxuICAgIGVsc2VcbiAgICAgICAgdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuQ09MR1JPVVApIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLkNPTEdST1VQKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSlcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcblxuICAgIGVsc2UgaWYgKHRuICE9PSAkLkNPTClcbiAgICAgICAgdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLkNPTEdST1VQKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cbn1cblxuLy8xMi4yLjUuNC4xMyBUaGUgXCJpbiB0YWJsZSBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKSB7XG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5UUikge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1JPV19NT0RFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuID09PSAkLlRIIHx8IHRuID09PSAkLlREKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLlRSKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fUk9XX01PREU7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5DT0wgfHwgdG4gPT09ICQuQ09MR1JPVVAgfHxcbiAgICAgICAgICAgICB0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xuXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlKCkpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVsc2VcbiAgICAgICAgc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRGT09UIHx8IHRuID09PSAkLlRIRUFEKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlKCkpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuICE9PSAkLkJPRFkgJiYgdG4gIT09ICQuQ0FQVElPTiAmJiB0biAhPT0gJC5DT0wgJiYgdG4gIT09ICQuQ09MR1JPVVAgfHxcbiAgICAgICAgICAgICB0biAhPT0gJC5IVE1MICYmIHRuICE9PSAkLlREICYmIHRuICE9PSAkLlRIICYmIHRuICE9PSAkLlRSKVxuICAgICAgICBlbmRUYWdJblRhYmxlKHAsIHRva2VuKTtcbn1cblxuLy8xMi4yLjUuNC4xNCBUaGUgXCJpbiByb3dcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Sb3cocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLlRIIHx8IHRuID09PSAkLlREKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9DRUxMX01PREU7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuID09PSAkLkNBUFRJT04gfHwgdG4gPT09ICQuQ09MIHx8IHRuID09PSAkLkNPTEdST1VQIHx8IHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgICAgICAgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVFIpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRSKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfQk9EWV9NT0RFO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVsc2VcbiAgICAgICAgc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5Sb3cocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLlRSKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbHNlIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSB8fCBwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbHNlIGlmICh0biAhPT0gJC5CT0RZICYmIHRuICE9PSAkLkNBUFRJT04gJiYgdG4gIT09ICQuQ09MICYmIHRuICE9PSAkLkNPTEdST1VQIHx8XG4gICAgICAgICAgICAgdG4gIT09ICQuSFRNTCAmJiB0biAhPT0gJC5URCAmJiB0biAhPT0gJC5USClcbiAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG59XG5cblxuLy8xMi4yLjUuNC4xNSBUaGUgXCJpbiBjZWxsXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luQ2VsbChwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5DT0wgfHwgdG4gPT09ICQuQ09MR1JPVVAgfHwgdG4gPT09ICQuVEJPRFkgfHxcbiAgICAgICAgdG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEggfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVFIpIHtcblxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEQpIHx8IHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRIKSkge1xuICAgICAgICAgICAgcC5fY2xvc2VUYWJsZUNlbGwoKTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5DZWxsKHAsIHRva2VuKSB7XG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9ST1dfTU9ERTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRGT09UIHx8IHRuID09PSAkLlRIRUFEIHx8IHRuID09PSAkLlRSKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICBwLl9jbG9zZVRhYmxlQ2VsbCgpO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuICE9PSAkLkJPRFkgJiYgdG4gIT09ICQuQ0FQVElPTiAmJiB0biAhPT0gJC5DT0wgJiYgdG4gIT09ICQuQ09MR1JPVVAgJiYgdG4gIT09ICQuSFRNTClcbiAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbn1cblxuLy8xMi4yLjUuNC4xNiBUaGUgXCJpbiBzZWxlY3RcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5TZWxlY3QocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpXG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgIGVsc2UgaWYgKHRuID09PSAkLk9QVElPTikge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUSU9OKVxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG5cbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVElPTilcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRHUk9VUClcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuID09PSAkLklOUFVUIHx8IHRuID09PSAkLktFWUdFTiB8fCB0biA9PT0gJC5URVhUQVJFQSB8fCB0biA9PT0gJC5TRUxFQ1QpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2VsZWN0U2NvcGUoJC5TRUxFQ1QpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG5cbiAgICAgICAgICAgIGlmICh0biAhPT0gJC5TRUxFQ1QpXG4gICAgICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYgKHRuID09PSAkLlNDUklQVCB8fCB0biA9PT0gJC5URU1QTEFURSlcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiBlbmRUYWdJblNlbGVjdChwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgdmFyIHByZXZPcGVuRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW3Aub3BlbkVsZW1lbnRzLnN0YWNrVG9wIC0gMV0sXG4gICAgICAgICAgICBwcmV2T3BlbkVsZW1lbnRUbiA9IHByZXZPcGVuRWxlbWVudCAmJiBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUocHJldk9wZW5FbGVtZW50KTtcblxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUSU9OICYmIHByZXZPcGVuRWxlbWVudFRuID09PSAkLk9QVEdST1VQKVxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG5cbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVEdST1VQKVxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuT1BUSU9OKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04pXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmICh0biA9PT0gJC5TRUxFQ1QgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5TZWxlY3RTY29wZSgkLlNFTEVDVCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpXG4gICAgICAgIGVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG59XG5cbi8vMTIuMi41LjQuMTcgVGhlIFwiaW4gc2VsZWN0IGluIHRhYmxlXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luU2VsZWN0SW5UYWJsZShwLCB0b2tlbikge1xuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5UQUJMRSB8fCB0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fFxuICAgICAgICB0biA9PT0gJC5USEVBRCB8fCB0biA9PT0gJC5UUiB8fCB0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHN0YXJ0VGFnSW5TZWxlY3QocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiBlbmRUYWdJblNlbGVjdEluVGFibGUocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkNBUFRJT04gfHwgdG4gPT09ICQuVEFCTEUgfHwgdG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHxcbiAgICAgICAgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVFIgfHwgdG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEgpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIGVuZFRhZ0luU2VsZWN0KHAsIHRva2VuKTtcbn1cblxuLy8xMi4yLjUuNC4xOCBUaGUgXCJpbiB0ZW1wbGF0ZVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5CQVNFIHx8IHRuID09PSAkLkJBU0VGT05UIHx8IHRuID09PSAkLkJHU09VTkQgfHwgdG4gPT09ICQuTElOSyB8fCB0biA9PT0gJC5NRVRBIHx8XG4gICAgICAgIHRuID09PSAkLk5PRlJBTUVTIHx8IHRuID09PSAkLlNDUklQVCB8fCB0biA9PT0gJC5TVFlMRSB8fCB0biA9PT0gJC5URU1QTEFURSB8fCB0biA9PT0gJC5USVRMRSlcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuXG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBuZXdJbnNlcnRpb25Nb2RlID0gVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUFt0bl0gfHwgSU5fQk9EWV9NT0RFO1xuXG4gICAgICAgIHAuX3BvcFRtcGxJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAuX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZShuZXdJbnNlcnRpb25Nb2RlKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gbmV3SW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luVGVtcGxhdGUocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5URU1QTEFURSlcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gZW9mSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRFTVBMQVRFKTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgcC5fcG9wVG1wbEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICBwLnN0b3BwZWQgPSB0cnVlO1xufVxuXG5cbi8vMTIuMi41LjQuMTkgVGhlIFwiYWZ0ZXIgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKVxuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICBlbHNlXG4gICAgICAgIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gZW5kVGFnQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuSFRNTCkge1xuICAgICAgICBpZiAoIXAuZnJhZ21lbnRDb250ZXh0KVxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfQUZURVJfQk9EWV9NT0RFO1xuICAgIH1cblxuICAgIGVsc2VcbiAgICAgICAgdG9rZW5BZnRlckJvZHkocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiB0b2tlbkFmdGVyQm9keShwLCB0b2tlbikge1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG4vLzEyLjIuNS40LjIwIFRoZSBcImluIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpXG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgIGVsc2UgaWYgKHRuID09PSAkLkZSQU1FU0VUKVxuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcblxuICAgIGVsc2UgaWYgKHRuID09PSAkLkZSQU1FKVxuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcblxuICAgIGVsc2UgaWYgKHRuID09PSAkLk5PRlJBTUVTKVxuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5GUkFNRVNFVCAmJiAhcC5vcGVuRWxlbWVudHMuaXNSb290SHRtbEVsZW1lbnRDdXJyZW50KCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG5cbiAgICAgICAgaWYgKCFwLmZyYWdtZW50Q29udGV4dCAmJiBwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSAhPT0gJC5GUkFNRVNFVClcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0ZSQU1FU0VUX01PREU7XG4gICAgfVxufVxuXG4vLzEyLjIuNS40LjIxIFRoZSBcImFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpXG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcblxuICAgIGVsc2UgaWYgKHRuID09PSAkLk5PRlJBTUVTKVxuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKVxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFO1xufVxuXG4vLzEyLjIuNS40LjIyIFRoZSBcImFmdGVyIGFmdGVyIGJvZHlcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKVxuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICBlbHNlXG4gICAgICAgIHRva2VuQWZ0ZXJBZnRlckJvZHkocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQk9EWV9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vMTIuMi41LjQuMjMgVGhlIFwiYWZ0ZXIgYWZ0ZXIgZnJhbWVzZXRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJBZnRlckZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKVxuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG5cbiAgICBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUylcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xufVxuXG5cbi8vMTIuMi41LjUgVGhlIHJ1bGVzIGZvciBwYXJzaW5nIHRva2VucyBpbiBmb3JlaWduIGNvbnRlbnRcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBudWxsQ2hhcmFjdGVySW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIHRva2VuLmNoYXJzID0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGNoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc3RhcnRUYWdJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgaWYgKGZvcmVpZ25Db250ZW50LmNhdXNlc0V4aXQodG9rZW4pICYmICFwLmZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICB3aGlsZSAocC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkocC5vcGVuRWxlbWVudHMuY3VycmVudCkgIT09IE5TLkhUTUwgJiYgIXAuX2lzSW50ZWdyYXRpb25Qb2ludChwLm9wZW5FbGVtZW50cy5jdXJyZW50KSlcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuXG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBjdXJyZW50ID0gcC5fZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCgpLFxuICAgICAgICAgICAgY3VycmVudE5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY3VycmVudCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnROcyA9PT0gTlMuTUFUSE1MKVxuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG5cbiAgICAgICAgZWxzZSBpZiAoY3VycmVudE5zID09PSBOUy5TVkcpIHtcbiAgICAgICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuU1ZHVGFnTmFtZSh0b2tlbik7XG4gICAgICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuWE1MQXR0cnModG9rZW4pO1xuXG4gICAgICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZylcbiAgICAgICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIGN1cnJlbnROcyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGN1cnJlbnROcyk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgZm9yICh2YXIgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG5cbiAgICAgICAgaWYgKHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpLnRvTG93ZXJDYXNlKCkgPT09IHRva2VuLnRhZ05hbWUpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsRWxlbWVudFBvcHBlZChlbGVtZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1lcmdlT3B0aW9ucyhkZWZhdWx0cywgb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICByZXR1cm4gW2RlZmF1bHRzLCBvcHRpb25zXS5yZWR1Y2UoZnVuY3Rpb24gKG1lcmdlZCwgb3B0T2JqKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG9wdE9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBtZXJnZWRba2V5XSA9IG9wdE9ialtrZXldO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gcHJlc2VydmVDYW1lbENhc2Uoc3RyKSB7XG5cdHZhciBpc0xhc3RDaGFyTG93ZXIgPSBmYWxzZTtcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBjID0gc3RyLmNoYXJBdChpKTtcblxuXHRcdGlmIChpc0xhc3RDaGFyTG93ZXIgJiYgKC9bYS16QS1aXS8pLnRlc3QoYykgJiYgYy50b1VwcGVyQ2FzZSgpID09PSBjKSB7XG5cdFx0XHRzdHIgPSBzdHIuc3Vic3RyKDAsIGkpICsgJy0nICsgc3RyLnN1YnN0cihpKTtcblx0XHRcdGlzTGFzdENoYXJMb3dlciA9IGZhbHNlO1xuXHRcdFx0aSsrO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpc0xhc3RDaGFyTG93ZXIgPSAoYy50b0xvd2VyQ2FzZSgpID09PSBjKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gc3RyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIHN0ciA9IFtdLm1hcC5jYWxsKGFyZ3VtZW50cywgZnVuY3Rpb24gKHN0cikge1xuXHRcdHJldHVybiBzdHIudHJpbSgpO1xuXHR9KS5maWx0ZXIoZnVuY3Rpb24gKHN0cikge1xuXHRcdHJldHVybiBzdHIubGVuZ3RoO1xuXHR9KS5qb2luKCctJyk7XG5cblx0aWYgKCFzdHIubGVuZ3RoKSB7XG5cdFx0cmV0dXJuICcnO1xuXHR9XG5cblx0aWYgKHN0ci5sZW5ndGggPT09IDEpIHtcblx0XHRyZXR1cm4gc3RyLnRvTG93ZXJDYXNlKCk7XG5cdH1cblxuXHRpZiAoISgvW18uXFwtIF0rLykudGVzdChzdHIpKSB7XG5cdFx0aWYgKHN0ciA9PT0gc3RyLnRvVXBwZXJDYXNlKCkpIHtcblx0XHRcdHJldHVybiBzdHIudG9Mb3dlckNhc2UoKTtcblx0XHR9XG5cblx0XHRpZiAoc3RyWzBdICE9PSBzdHJbMF0udG9Mb3dlckNhc2UoKSkge1xuXHRcdFx0cmV0dXJuIHN0clswXS50b0xvd2VyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xuXHRcdH1cblxuXHRcdHJldHVybiBzdHI7XG5cdH1cblxuXHRzdHIgPSBwcmVzZXJ2ZUNhbWVsQ2FzZShzdHIpO1xuXG5cdHJldHVybiBzdHJcblx0LnJlcGxhY2UoL15bXy5cXC0gXSsvLCAnJylcblx0LnRvTG93ZXJDYXNlKClcblx0LnJlcGxhY2UoL1tfLlxcLSBdKyhcXHd8JCkvZywgZnVuY3Rpb24gKG0sIHAxKSB7XG5cdFx0cmV0dXJuIHAxLnRvVXBwZXJDYXNlKCk7XG5cdH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyogRXhwb3NlLiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5O1xuXG4vKiBGYWN0b3J5LiAqL1xuZnVuY3Rpb24gZmFjdG9yeShmaWxlKSB7XG4gIHZhciBjb250ZW50cyA9IGluZGljZXMoU3RyaW5nKGZpbGUpKTtcblxuICByZXR1cm4ge1xuICAgIHRvUG9zaXRpb246IG9mZnNldFRvUG9zaXRpb25GYWN0b3J5KGNvbnRlbnRzKSxcbiAgICB0b09mZnNldDogcG9zaXRpb25Ub09mZnNldEZhY3RvcnkoY29udGVudHMpXG4gIH07XG59XG5cbi8qIEZhY3RvcnkgdG8gZ2V0IHRoZSBsaW5lIGFuZCBjb2x1bW4tYmFzZWQgYHBvc2l0aW9uYCBmb3JcbiAqIGBvZmZzZXRgIGluIHRoZSBib3VuZCBpbmRpY2VzLiAqL1xuZnVuY3Rpb24gb2Zmc2V0VG9Qb3NpdGlvbkZhY3RvcnkoaW5kaWNlcykge1xuICByZXR1cm4gb2Zmc2V0VG9Qb3NpdGlvbjtcblxuICAvKiBHZXQgdGhlIGxpbmUgYW5kIGNvbHVtbi1iYXNlZCBgcG9zaXRpb25gIGZvclxuICAgKiBgb2Zmc2V0YCBpbiB0aGUgYm91bmQgaW5kaWNlcy4gKi9cbiAgZnVuY3Rpb24gb2Zmc2V0VG9Qb3NpdGlvbihvZmZzZXQpIHtcbiAgICB2YXIgaW5kZXggPSAtMTtcbiAgICB2YXIgbGVuZ3RoID0gaW5kaWNlcy5sZW5ndGg7XG5cbiAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoaW5kaWNlc1tpbmRleF0gPiBvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiBpbmRleCArIDEsXG4gICAgICAgICAgY29sdW1uOiAob2Zmc2V0IC0gKGluZGljZXNbaW5kZXggLSAxXSB8fCAwKSkgKyAxLFxuICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbi8qIEZhY3RvcnkgdG8gZ2V0IHRoZSBgb2Zmc2V0YCBmb3IgYSBsaW5lIGFuZCBjb2x1bW4tYmFzZWRcbiAqIGBwb3NpdGlvbmAgaW4gdGhlIGJvdW5kIGluZGljZXMuICovXG5mdW5jdGlvbiBwb3NpdGlvblRvT2Zmc2V0RmFjdG9yeShpbmRpY2VzKSB7XG4gIHJldHVybiBwb3NpdGlvblRvT2Zmc2V0O1xuXG4gIC8qIEdldCB0aGUgYG9mZnNldGAgZm9yIGEgbGluZSBhbmQgY29sdW1uLWJhc2VkXG4gICAqIGBwb3NpdGlvbmAgaW4gdGhlIGJvdW5kIGluZGljZXMuICovXG4gIGZ1bmN0aW9uIHBvc2l0aW9uVG9PZmZzZXQocG9zaXRpb24pIHtcbiAgICB2YXIgbGluZSA9IHBvc2l0aW9uICYmIHBvc2l0aW9uLmxpbmU7XG4gICAgdmFyIGNvbHVtbiA9IHBvc2l0aW9uICYmIHBvc2l0aW9uLmNvbHVtbjtcblxuICAgIGlmICghaXNOYU4obGluZSkgJiYgIWlzTmFOKGNvbHVtbikgJiYgbGluZSAtIDEgaW4gaW5kaWNlcykge1xuICAgICAgcmV0dXJuICgoaW5kaWNlc1tsaW5lIC0gMl0gfHwgMCkgKyBjb2x1bW4gLSAxKSB8fCAwO1xuICAgIH1cblxuICAgIHJldHVybiAtMTtcbiAgfVxufVxuXG4vKiBHZXQgaW5kaWNlcyBvZiBsaW5lLWJyZWFrcyBpbiBgdmFsdWVgLiAqL1xuZnVuY3Rpb24gaW5kaWNlcyh2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpbmRleCA9IHZhbHVlLmluZGV4T2YoJ1xcbicpO1xuXG4gIHdoaWxlIChpbmRleCAhPT0gLTEpIHtcbiAgICByZXN1bHQucHVzaChpbmRleCArIDEpO1xuICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZignXFxuJywgaW5kZXggKyAxKTtcbiAgfVxuXG4gIHJlc3VsdC5wdXNoKHZhbHVlLmxlbmd0aCArIDEpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIEV4cG9zZS4gKi9cbm1vZHVsZS5leHBvcnRzID0gcGFyc2U7XG5cbi8qIENoYXJhY3RlcnMgKi9cbnZhciBkb3QgPSAnLicuY2hhckNvZGVBdCgwKTtcbnZhciBoYXNoID0gJyMnLmNoYXJDb2RlQXQoMCk7XG5cbi8qIFBhcnNlIGEgc2ltcGxlIENTUyBzZWxlY3RvciBpbnRvIGEgSEFTVCBub2RlLiAqL1xuZnVuY3Rpb24gcGFyc2Uoc2VsZWN0b3IpIHtcbiAgdmFyIGlkID0gbnVsbDtcbiAgdmFyIGNsYXNzTmFtZSA9IFtdO1xuICB2YXIgdmFsdWUgPSBzZWxlY3RvciB8fCAnJztcbiAgdmFyIG5hbWUgPSAnZGl2JztcbiAgdmFyIG5vZGU7XG4gIHZhciB0eXBlID0gbnVsbDtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBjb2RlO1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICB2YXIgc3VidmFsdWU7XG4gIHZhciBsYXN0SW5kZXg7XG5cbiAgbm9kZSA9IHtcbiAgICB0eXBlOiAnZWxlbWVudCcsXG4gICAgdGFnTmFtZTogbnVsbCxcbiAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICBjaGlsZHJlbjogW11cbiAgfTtcblxuICB0eXBlID0gbnVsbDtcblxuICB3aGlsZSAoKytpbmRleCA8PSBsZW5ndGgpIHtcbiAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleCk7XG5cbiAgICBpZiAoIWNvZGUgfHwgY29kZSA9PT0gZG90IHx8IGNvZGUgPT09IGhhc2gpIHtcbiAgICAgIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UobGFzdEluZGV4LCBpbmRleCk7XG5cbiAgICAgIGlmIChzdWJ2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZSA9PT0gZG90KSB7XG4gICAgICAgICAgY2xhc3NOYW1lLnB1c2goc3VidmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IGhhc2gpIHtcbiAgICAgICAgICBpZCA9IHN1YnZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5hbWUgPSBzdWJ2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XG4gICAgICB0eXBlID0gY29kZTtcbiAgICB9XG4gIH1cblxuICBub2RlLnRhZ05hbWUgPSBuYW1lO1xuXG4gIGlmIChpZCkge1xuICAgIG5vZGUucHJvcGVydGllcy5pZCA9IGlkO1xuICB9XG5cbiAgaWYgKGNsYXNzTmFtZS5sZW5ndGggIT09IDApIHtcbiAgICBub2RlLnByb3BlcnRpZXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpO1xuXG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5leHBvcnRzLnN0cmluZ2lmeSA9IHN0cmluZ2lmeTtcblxudmFyIGVtcHR5ID0gJyc7XG52YXIgc3BhY2UgPSAnICc7XG52YXIgd2hpdGVTcGFjZSA9IC9bIFxcdFxcblxcclxcZl0rL2c7XG5cbmZ1bmN0aW9uIHBhcnNlKHZhbHVlKSB7XG4gIHZhciBpbnB1dCA9IHRyaW0oU3RyaW5nKHZhbHVlIHx8IGVtcHR5KSk7XG5cbiAgaWYgKGlucHV0ID09PSBlbXB0eSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBpbnB1dC5zcGxpdCh3aGl0ZVNwYWNlKTtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KHZhbHVlcykge1xuICByZXR1cm4gdHJpbSh2YWx1ZXMuam9pbihzcGFjZSkpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5leHBvcnRzLnN0cmluZ2lmeSA9IHN0cmluZ2lmeTtcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJyk7XG5cbnZhciBDX0NPTU1BID0gJywnO1xudmFyIENfU1BBQ0UgPSAnICc7XG52YXIgRU1QVFkgPSAnJztcblxuLyogUGFyc2UgY29tbWEtc2VwYXJhdGVkIHRva2VucyB0byBhbiBhcnJheS4gKi9cbmZ1bmN0aW9uIHBhcnNlKHZhbHVlKSB7XG4gIHZhciB2YWx1ZXMgPSBbXTtcbiAgdmFyIGlucHV0ID0gU3RyaW5nKHZhbHVlIHx8IEVNUFRZKTtcbiAgdmFyIGluZGV4ID0gaW5wdXQuaW5kZXhPZihDX0NPTU1BKTtcbiAgdmFyIGxhc3RJbmRleCA9IDA7XG4gIHZhciBlbmQgPSBmYWxzZTtcbiAgdmFyIHZhbDtcblxuICB3aGlsZSAoIWVuZCkge1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIGluZGV4ID0gaW5wdXQubGVuZ3RoO1xuICAgICAgZW5kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YWwgPSB0cmltKGlucHV0LnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpKTtcblxuICAgIGlmICh2YWwgfHwgIWVuZCkge1xuICAgICAgdmFsdWVzLnB1c2godmFsKTtcbiAgICB9XG5cbiAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XG4gICAgaW5kZXggPSBpbnB1dC5pbmRleE9mKENfQ09NTUEsIGxhc3RJbmRleCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWVzO1xufVxuXG4vKiBDb21waWxlIGFuIGFycmF5IHRvIGNvbW1hLXNlcGFyYXRlZCB0b2tlbnMuXG4gKiBgb3B0aW9ucy5wYWRMZWZ0YCAoZGVmYXVsdDogYHRydWVgKSBwYWRzIGEgc3BhY2UgbGVmdCBvZiBlYWNoXG4gKiB0b2tlbiwgYW5kIGBvcHRpb25zLnBhZFJpZ2h0YCAoZGVmYXVsdDogYGZhbHNlYCkgcGFkcyBhIHNwYWNlXG4gKiB0byB0aGUgcmlnaHQgb2YgZWFjaCB0b2tlbi4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGxlZnQgPSBzZXR0aW5ncy5wYWRMZWZ0O1xuXG4gIC8qIEVuc3VyZSB0aGUgbGFzdCBlbXB0eSBlbnRyeSBpcyBzZWVuLiAqL1xuICBpZiAodmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXSA9PT0gRU1QVFkpIHtcbiAgICB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KEVNUFRZKTtcbiAgfVxuXG4gIHJldHVybiB0cmltKHZhbHVlcy5qb2luKFxuICAgIChzZXR0aW5ncy5wYWRSaWdodCA/IENfU1BBQ0UgOiBFTVBUWSkgK1xuICAgIENfQ09NTUEgK1xuICAgIChsZWZ0IHx8IGxlZnQgPT09IHVuZGVmaW5lZCB8fCBsZWZ0ID09PSBudWxsID8gQ19TUEFDRSA6IEVNUFRZKVxuICApKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHBhcnNlU2VsZWN0b3IgPSByZXF1aXJlKCdoYXN0LXV0aWwtcGFyc2Utc2VsZWN0b3InKTtcbnZhciBjYW1lbGNhc2UgPSByZXF1aXJlKCdjYW1lbGNhc2UnKTtcbnZhciBwcm9wZXJ0eUluZm9ybWF0aW9uID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24nKTtcbnZhciBzcGFjZXMgPSByZXF1aXJlKCdzcGFjZS1zZXBhcmF0ZWQtdG9rZW5zJykucGFyc2U7XG52YXIgY29tbWFzID0gcmVxdWlyZSgnY29tbWEtc2VwYXJhdGVkLXRva2VucycpLnBhcnNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGg7XG5cbi8qIEh5cGVyc2NyaXB0IGNvbXBhdGlibGUgRFNMIGZvciBjcmVhdGluZyB2aXJ0dWFsIEhBU1RcbiAqIHRyZWVzLiAqL1xuZnVuY3Rpb24gaChzZWxlY3RvciwgcHJvcGVydGllcywgY2hpbGRyZW4pIHtcbiAgdmFyIG5vZGUgPSBwYXJzZVNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgdmFyIHByb3BlcnR5O1xuXG4gIGlmIChcbiAgICBwcm9wZXJ0aWVzICYmXG4gICAgIWNoaWxkcmVuICYmXG4gICAgKFxuICAgICAgdHlwZW9mIHByb3BlcnRpZXMgPT09ICdzdHJpbmcnIHx8XG4gICAgICAnbGVuZ3RoJyBpbiBwcm9wZXJ0aWVzIHx8XG4gICAgICBpc05vZGUobm9kZS50YWdOYW1lLCBwcm9wZXJ0aWVzKVxuICAgIClcbiAgKSB7XG4gICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgIHByb3BlcnRpZXMgPSBudWxsO1xuICB9XG5cbiAgaWYgKHByb3BlcnRpZXMpIHtcbiAgICBmb3IgKHByb3BlcnR5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgIGFkZFByb3BlcnR5KG5vZGUucHJvcGVydGllcywgcHJvcGVydHksIHByb3BlcnRpZXNbcHJvcGVydHldKTtcbiAgICB9XG4gIH1cblxuICBhZGRDaGlsZChub2RlLmNoaWxkcmVuLCBjaGlsZHJlbik7XG5cbiAgaWYgKG5vZGUudGFnTmFtZSA9PT0gJ3RlbXBsYXRlJykge1xuICAgIG5vZGUuY29udGVudCA9IHt0eXBlOiAncm9vdCcsIGNoaWxkcmVuOiBub2RlLmNoaWxkcmVufTtcbiAgICBub2RlLmNoaWxkcmVuID0gW107XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyogQ2hlY2sgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGNoaWxkIG5vZGUgb2YgYHRhZ05hbWVgLiAqL1xuZnVuY3Rpb24gaXNOb2RlKHRhZ05hbWUsIHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdmFsdWUudHlwZTtcblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgdHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIGlmICh0YWdOYW1lID09PSAnaW5wdXQnIHx8ICF0eXBlIHx8IHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUuY2hpbGRyZW4gPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlLmNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodGFnTmFtZSA9PT0gJ2J1dHRvbicpIHtcbiAgICByZXR1cm4gdHlwZSAhPT0gJ21lbnUnICYmXG4gICAgICB0eXBlICE9PSAnc3VibWl0JyAmJlxuICAgICAgdHlwZSAhPT0gJ3Jlc2V0JyAmJlxuICAgICAgdHlwZSAhPT0gJ2J1dHRvbic7XG4gIH1cblxuICByZXR1cm4gJ3ZhbHVlJyBpbiB2YWx1ZTtcbn1cblxuLyogQWRkIGB2YWx1ZWAgYXMgYSBjaGlsZCB0byBgbm9kZXNgLiAqL1xuZnVuY3Rpb24gYWRkQ2hpbGQobm9kZXMsIHZhbHVlKSB7XG4gIHZhciBpbmRleDtcbiAgdmFyIGxlbmd0aDtcblxuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB2YWx1ZSA9IHt0eXBlOiAndGV4dCcsIHZhbHVlOiBTdHJpbmcodmFsdWUpfTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgaW5kZXggPSAtMTtcbiAgICBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYWRkQ2hpbGQobm9kZXMsIHZhbHVlW2luZGV4XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgISgndHlwZScgaW4gdmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBub2RlLCBub2Rlcywgb3Igc3RyaW5nLCBnb3QgYCcgKyB2YWx1ZSArICdgJyk7XG4gIH1cblxuICBub2Rlcy5wdXNoKHZhbHVlKTtcbn1cblxuLyogQWRkIGBuYW1lYCBhbmQgaXRzIGB2YWx1ZWAgdG8gYHByb3BlcnRpZXNgLiBgcHJvcGVydGllc2AgY2FuXG4gKiBiZSBwcmVmaWxsZWQgYnkgYHBhcnNlU2VsZWN0b3JgOiBpdCBjYW4gaGF2ZSBgaWRgIGFuZCBgY2xhc3NOYW1lYFxuICogcHJvcGVydGllcy4gKi9cbmZ1bmN0aW9uIGFkZFByb3BlcnR5KHByb3BlcnRpZXMsIG5hbWUsIHZhbHVlKSB7XG4gIHZhciBpbmZvID0gcHJvcGVydHlJbmZvcm1hdGlvbihuYW1lKSB8fCB7fTtcbiAgdmFyIHJlc3VsdCA9IHZhbHVlO1xuICB2YXIga2V5O1xuXG4gIC8qIElnbm9yZSBudWxseSBhbmQgTmFOIHZhbHVlcy4gKi9cbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgIT09IHZhbHVlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyogSGFuZGxlIHZhbHVlcy4gKi9cbiAgaWYgKG5hbWUgPT09ICdzdHlsZScpIHtcbiAgICAvKiBBY2NlcHQgYG9iamVjdGAuICovXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICBmb3IgKGtleSBpbiB2YWx1ZSkge1xuICAgICAgICByZXN1bHQucHVzaChba2V5LCB2YWx1ZVtrZXldXS5qb2luKCc6ICcpKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmpvaW4oJzsgJyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGluZm8uc3BhY2VTZXBhcmF0ZWQpIHtcbiAgICAvKiBBY2NlcHQgYm90aCBgc3RyaW5nYCBhbmQgYEFycmF5YC4gKi9cbiAgICByZXN1bHQgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gc3BhY2VzKHJlc3VsdCkgOiByZXN1bHQ7XG5cbiAgICAvKiBDbGFzcy1uYW1lcyAod2hpY2ggY2FuIGJlIGFkZGVkIGJvdGggb25cbiAgICAgKiB0aGUgYHNlbGVjdG9yYCBhbmQgaGVyZSkuICovXG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycgJiYgcHJvcGVydGllcy5jbGFzc05hbWUpIHtcbiAgICAgIHJlc3VsdCA9IHByb3BlcnRpZXMuY2xhc3NOYW1lLmNvbmNhdChyZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpbmZvLmNvbW1hU2VwYXJhdGVkKSB7XG4gICAgLyogQWNjZXB0IGJvdGggYHN0cmluZ2AgYW5kIGBBcnJheWAuICovXG4gICAgcmVzdWx0ID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IGNvbW1hcyhyZXN1bHQpIDogcmVzdWx0O1xuICB9XG5cbiAgcmVzdWx0ID0gcGFyc2VQcmltaXRpdmUoaW5mbywgbmFtZSwgcmVzdWx0KTtcblxuICBwcm9wZXJ0aWVzW2luZm8ucHJvcGVydHlOYW1lIHx8IGNhbWVsY2FzZShuYW1lKV0gPSByZXN1bHQ7XG59XG5cbi8qIFBhcnNlIGEgKGxpc3Qgb2YpIHByaW1pdGl2ZXMuICovXG5mdW5jdGlvbiBwYXJzZVByaW1pdGl2ZShpbmZvLCBuYW1lLCB2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdmFsdWU7XG4gIHZhciBpbmRleDtcbiAgdmFyIGxlbmd0aDtcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICBpbmRleCA9IC0xO1xuICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHJlc3VsdFtpbmRleF0gPSBwYXJzZVByaW1pdGl2ZShpbmZvLCBuYW1lLCB2YWx1ZVtpbmRleF0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAoaW5mby5udW1lcmljIHx8IGluZm8ucG9zaXRpdmVOdW1lcmljKSB7XG4gICAgaWYgKCFpc05hTihyZXN1bHQpICYmIHJlc3VsdCAhPT0gJycpIHtcbiAgICAgIHJlc3VsdCA9IE51bWJlcihyZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpbmZvLmJvb2xlYW4gfHwgaW5mby5vdmVybG9hZGVkQm9vbGVhbikge1xuICAgIC8qIEFjY2VwdCBgYm9vbGVhbmAgYW5kIGBzdHJpbmdgLiAqL1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnICYmXG4gICAgICAocmVzdWx0ID09PSAnJyB8fCB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lKVxuICAgICkge1xuICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW5mb3JtYXRpb24gPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbicpO1xudmFyIGNhbWVsY2FzZSA9IHJlcXVpcmUoJ2NhbWVsY2FzZScpO1xudmFyIHZmaWxlTG9jYXRpb24gPSByZXF1aXJlKCd2ZmlsZS1sb2NhdGlvbicpO1xudmFyIGggPSByZXF1aXJlKCdoYXN0c2NyaXB0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcHBlcjtcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG4vKiBIYW5kbGVycy4gKi9cbnZhciBtYXAgPSB7XG4gICcjZG9jdW1lbnQnOiByb290LFxuICAnI2RvY3VtZW50LWZyYWdtZW50Jzogcm9vdCxcbiAgJyN0ZXh0JzogdGV4dCxcbiAgJyNjb21tZW50JzogY29tbWVudCxcbiAgJyNkb2N1bWVudFR5cGUnOiBkb2N0eXBlXG59O1xuXG4vKiBXcmFwcGVyIHRvIG5vcm1hbGlzZSBvcHRpb25zLiAqL1xuZnVuY3Rpb24gd3JhcHBlcihhc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGZpbGU7XG5cbiAgaWYgKHNldHRpbmdzLm1lc3NhZ2VzKSB7XG4gICAgZmlsZSA9IHNldHRpbmdzO1xuICAgIHNldHRpbmdzID0ge307XG4gIH0gZWxzZSB7XG4gICAgZmlsZSA9IHNldHRpbmdzLmZpbGU7XG4gIH1cblxuICByZXR1cm4gdHJhbnNmb3JtKGFzdCwge1xuICAgIGZpbGU6IGZpbGUsXG4gICAgdG9Qb3NpdGlvbjogZmlsZSA/IHZmaWxlTG9jYXRpb24oZmlsZSkudG9Qb3NpdGlvbiA6IG51bGwsXG4gICAgdmVyYm9zZTogc2V0dGluZ3MudmVyYm9zZSxcbiAgICBsb2NhdGlvbjogZmFsc2VcbiAgfSk7XG59XG5cbi8qIFRyYW5zZm9ybSBhIG5vZGUuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm0oYXN0LCBjb25maWcpIHtcbiAgdmFyIGZuID0gb3duLmNhbGwobWFwLCBhc3Qubm9kZU5hbWUpID8gbWFwW2FzdC5ub2RlTmFtZV0gOiBlbGVtZW50O1xuICB2YXIgY2hpbGRyZW47XG4gIHZhciBub2RlO1xuICB2YXIgcG9zaXRpb247XG5cbiAgaWYgKGFzdC5jaGlsZE5vZGVzKSB7XG4gICAgY2hpbGRyZW4gPSBub2Rlcyhhc3QuY2hpbGROb2RlcywgY29uZmlnKTtcbiAgfVxuXG4gIG5vZGUgPSBmbihhc3QsIGNoaWxkcmVuLCBjb25maWcpO1xuXG4gIGlmIChhc3QuX19sb2NhdGlvbiAmJiBjb25maWcudG9Qb3NpdGlvbikge1xuICAgIGNvbmZpZy5sb2NhdGlvbiA9IHRydWU7XG4gICAgcG9zaXRpb24gPSBsb2NhdGlvbihhc3QuX19sb2NhdGlvbiwgYXN0LCBub2RlLCBjb25maWcpO1xuXG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBub2RlLnBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbi8qIFRyYW5zZm9ybSBjaGlsZHJlbi4gKi9cbmZ1bmN0aW9uIG5vZGVzKGNoaWxkcmVuLCBjb25maWcpIHtcbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSB0cmFuc2Zvcm0oY2hpbGRyZW5baW5kZXhdLCBjb25maWcpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyogVHJhbnNmb3JtIGEgZG9jdW1lbnQuXG4gKiBTdG9yZXMgYGFzdC5xdWlya3NNb2RlYCBpbiBgbm9kZS5kYXRhLnF1aXJrc01vZGVgLiAqL1xuZnVuY3Rpb24gcm9vdChhc3QsIGNoaWxkcmVuLCBjb25maWcpIHtcbiAgdmFyIHF1aXJrcyA9IGFzdC5tb2RlID09PSAncXVpcmtzJyB8fCBhc3QubW9kZSA9PT0gJ2xpbWl0ZWQtcXVpcmtzJztcbiAgdmFyIG5vZGUgPSB7dHlwZTogJ3Jvb3QnLCBjaGlsZHJlbjogY2hpbGRyZW59O1xuICB2YXIgcG9zaXRpb247XG5cbiAgbm9kZS5kYXRhID0ge3F1aXJrc01vZGU6IHF1aXJrc307XG5cbiAgaWYgKGFzdC5fX2xvY2F0aW9uKSB7XG4gICAgaWYgKGNvbmZpZy50b1Bvc2l0aW9uKSB7XG4gICAgICBjb25maWcubG9jYXRpb24gPSB0cnVlO1xuICAgICAgcG9zaXRpb24gPSBhc3QuX19sb2NhdGlvbjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoY29uZmlnLmZpbGUgJiYgY29uZmlnLmxvY2F0aW9uKSB7XG4gICAgcG9zaXRpb24gPSB7c3RhcnRPZmZzZXQ6IDAsIGVuZE9mZnNldDogU3RyaW5nKGNvbmZpZy5maWxlKS5sZW5ndGh9O1xuICB9XG5cbiAgcG9zaXRpb24gPSBwb3NpdGlvbiAmJiBsb2NhdGlvbihwb3NpdGlvbiwgYXN0LCBub2RlLCBjb25maWcpO1xuXG4gIGlmIChwb3NpdGlvbikge1xuICAgIG5vZGUucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG4vKiBUcmFuc2Zvcm0gYSBkb2N0eXBlLiAqL1xuZnVuY3Rpb24gZG9jdHlwZShhc3QpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZG9jdHlwZScsXG4gICAgbmFtZTogYXN0Lm5hbWUgfHwgJycsXG4gICAgcHVibGljOiBhc3QucHVibGljSWQgfHwgbnVsbCxcbiAgICBzeXN0ZW06IGFzdC5zeXN0ZW1JZCB8fCBudWxsXG4gIH07XG59XG5cbi8qIFRyYW5zZm9ybSBhIHRleHQuICovXG5mdW5jdGlvbiB0ZXh0KGFzdCkge1xuICByZXR1cm4ge3R5cGU6ICd0ZXh0JywgdmFsdWU6IGFzdC52YWx1ZX07XG59XG5cbi8qIFRyYW5zZm9ybSBhIGNvbW1lbnQuICovXG5mdW5jdGlvbiBjb21tZW50KGFzdCkge1xuICByZXR1cm4ge3R5cGU6ICdjb21tZW50JywgdmFsdWU6IGFzdC5kYXRhfTtcbn1cblxuLyogVHJhbnNmb3JtIGFuIGVsZW1lbnQuICovXG5mdW5jdGlvbiBlbGVtZW50KGFzdCwgY2hpbGRyZW4sIGNvbmZpZykge1xuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIHZhbHVlcyA9IGFzdC5hdHRycztcbiAgdmFyIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgYXR0cjtcbiAgdmFyIG5vZGU7XG4gIHZhciBmcmFnbWVudDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGF0dHIgPSB2YWx1ZXNbaW5kZXhdO1xuICAgIHByb3BzWyhhdHRyLnByZWZpeCA/IGF0dHIucHJlZml4ICsgJzonIDogJycpICsgYXR0ci5uYW1lXSA9IGF0dHIudmFsdWU7XG4gIH1cblxuICBub2RlID0gaChhc3QudGFnTmFtZSwgcHJvcHMsIGNoaWxkcmVuKTtcblxuICBpZiAoYXN0Lm5vZGVOYW1lID09PSAndGVtcGxhdGUnICYmICdjb250ZW50JyBpbiBhc3QpIHtcbiAgICBmcmFnbWVudCA9IGFzdC5jb250ZW50O1xuXG4gICAgaWYgKGFzdC5fX2xvY2F0aW9uKSB7XG4gICAgICBmcmFnbWVudC5fX2xvY2F0aW9uID0ge1xuICAgICAgICBzdGFydE9mZnNldDogYXN0Ll9fbG9jYXRpb24uc3RhcnRUYWcuZW5kT2Zmc2V0LFxuICAgICAgICBlbmRPZmZzZXQ6IGFzdC5fX2xvY2F0aW9uLmVuZFRhZy5zdGFydE9mZnNldFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBub2RlLmNvbnRlbnQgPSB0cmFuc2Zvcm0oYXN0LmNvbnRlbnQsIGNvbmZpZyk7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyogQ3JlYXRlIGNsZWFuIHBvc2l0aW9uYWwgaW5mb3JtYXRpb24uICovXG5mdW5jdGlvbiBsb2ModG9Qb3NpdGlvbiwgZGlydHkpIHtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDogdG9Qb3NpdGlvbihkaXJ0eS5zdGFydE9mZnNldCksXG4gICAgZW5kOiB0b1Bvc2l0aW9uKGRpcnR5LmVuZE9mZnNldClcbiAgfTtcbn1cblxuLyogQ3JlYXRlIGNsZWFuIHBvc2l0aW9uYWwgaW5mb3JtYXRpb24uICovXG5mdW5jdGlvbiBsb2NhdGlvbihpbmZvLCBhc3QsIG5vZGUsIGNvbmZpZykge1xuICB2YXIgc3RhcnQgPSBpbmZvLnN0YXJ0T2Zmc2V0O1xuICB2YXIgZW5kID0gaW5mby5lbmRPZmZzZXQ7XG4gIHZhciB2YWx1ZXMgPSBpbmZvLmF0dHJzIHx8IHt9O1xuICB2YXIgcHJvcFBvc2l0aW9ucyA9IHt9O1xuICB2YXIgcHJvcDtcbiAgdmFyIG5hbWU7XG4gIHZhciByZWZlcmVuY2U7XG5cbiAgZm9yIChwcm9wIGluIHZhbHVlcykge1xuICAgIG5hbWUgPSAoaW5mb3JtYXRpb24ocHJvcCkgfHwge30pLnByb3BlcnR5TmFtZSB8fCBjYW1lbGNhc2UocHJvcCk7XG4gICAgcHJvcFBvc2l0aW9uc1tuYW1lXSA9IGxvYyhjb25maWcudG9Qb3NpdGlvbiwgdmFsdWVzW3Byb3BdKTtcbiAgfVxuXG4gIC8qIFVwc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2lzc3Vlcy8xMDkgKi9cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnICYmICFpbmZvLmVuZFRhZykge1xuICAgIHJlZmVyZW5jZSA9IG5vZGUuY2hpbGRyZW5bbm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxXTtcblxuICAgIC8qIFVuY2xvc2VkIHdpdGggY2hpbGRyZW46ICovXG4gICAgaWYgKHJlZmVyZW5jZSAmJiByZWZlcmVuY2UucG9zaXRpb24pIHtcbiAgICAgIGlmIChyZWZlcmVuY2UucG9zaXRpb24uZW5kKSB7XG4gICAgICAgIGVuZCA9IHJlZmVyZW5jZS5wb3NpdGlvbi5lbmQub2Zmc2V0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kID0gbnVsbDtcbiAgICAgIH1cbiAgICAvKiBVbmNsb3NlZCB3aXRob3V0IGNoaWxkcmVuOiAqL1xuICAgIH0gZWxzZSBpZiAoaW5mby5zdGFydFRhZykge1xuICAgICAgZW5kID0gaW5mby5zdGFydFRhZy5lbmRPZmZzZXQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNvbmZpZy52ZXJib3NlICYmIG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgbm9kZS5kYXRhID0ge1xuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgb3BlbmluZzogbG9jKGNvbmZpZy50b1Bvc2l0aW9uLCBpbmZvLnN0YXJ0VGFnIHx8IGluZm8pLFxuICAgICAgICBjbG9zaW5nOiBpbmZvLmVuZFRhZyA/IGxvYyhjb25maWcudG9Qb3NpdGlvbiwgaW5mby5lbmRUYWcpIDogbnVsbCxcbiAgICAgICAgcHJvcGVydGllczogcHJvcFBvc2l0aW9uc1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGFydCA9IHR5cGVvZiBzdGFydCA9PT0gJ251bWJlcicgPyBjb25maWcudG9Qb3NpdGlvbihzdGFydCkgOiBudWxsO1xuICBlbmQgPSB0eXBlb2YgZW5kID09PSAnbnVtYmVyJyA/IGNvbmZpZy50b1Bvc2l0aW9uKGVuZCkgOiBudWxsO1xuXG4gIGlmICghc3RhcnQgJiYgIWVuZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge3N0YXJ0OiBzdGFydCwgZW5kOiBlbmR9O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEtFQkFCX1JFR0VYID0gL1tBLVpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwREVdL2c7XG52YXIgUkVWRVJTRV9SRUdFWCA9IC8tW2EtelxcdTAwRTAtXFx1MDBGNlxcdTAwRjgtXFx1MDBGRV0vZztcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZnVuY3Rpb24ga2ViYWJDYXNlKHN0cikge1xuXHRyZXR1cm4gc3RyLnJlcGxhY2UoS0VCQUJfUkVHRVgsIGZ1bmN0aW9uIChtYXRjaCkge1xuXHRcdHJldHVybiAnLScgKyBtYXRjaC50b0xvd2VyQ2FzZSgpO1xuXHR9KTtcbn07XG5cbmV4cG9ydHMucmV2ZXJzZSA9IGZ1bmN0aW9uIChzdHIpIHtcblx0cmV0dXJuIHN0ci5yZXBsYWNlKFJFVkVSU0VfUkVHRVgsIGZ1bmN0aW9uIChtYXRjaCkge1xuXHRcdHJldHVybiBtYXRjaC5zbGljZSgxKS50b1VwcGVyQ2FzZSgpO1xuXHR9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHtcblx0dmFyIHN0ciA9IHRvU3RyLmNhbGwodmFsdWUpO1xuXHR2YXIgaXNBcmdzID0gc3RyID09PSAnW29iamVjdCBBcmd1bWVudHNdJztcblx0aWYgKCFpc0FyZ3MpIHtcblx0XHRpc0FyZ3MgPSBzdHIgIT09ICdbb2JqZWN0IEFycmF5XScgJiZcblx0XHRcdHZhbHVlICE9PSBudWxsICYmXG5cdFx0XHR0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG5cdFx0XHR0eXBlb2YgdmFsdWUubGVuZ3RoID09PSAnbnVtYmVyJyAmJlxuXHRcdFx0dmFsdWUubGVuZ3RoID49IDAgJiZcblx0XHRcdHRvU3RyLmNhbGwodmFsdWUuY2FsbGVlKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcblx0fVxuXHRyZXR1cm4gaXNBcmdzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gbW9kaWZpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW1cbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciBpc0FyZ3MgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyk7XG52YXIgaXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBoYXNEb250RW51bUJ1ZyA9ICFpc0VudW1lcmFibGUuY2FsbCh7IHRvU3RyaW5nOiBudWxsIH0sICd0b1N0cmluZycpO1xudmFyIGhhc1Byb3RvRW51bUJ1ZyA9IGlzRW51bWVyYWJsZS5jYWxsKGZ1bmN0aW9uICgpIHt9LCAncHJvdG90eXBlJyk7XG52YXIgZG9udEVudW1zID0gW1xuXHQndG9TdHJpbmcnLFxuXHQndG9Mb2NhbGVTdHJpbmcnLFxuXHQndmFsdWVPZicsXG5cdCdoYXNPd25Qcm9wZXJ0eScsXG5cdCdpc1Byb3RvdHlwZU9mJyxcblx0J3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcblx0J2NvbnN0cnVjdG9yJ1xuXTtcbnZhciBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZSA9IGZ1bmN0aW9uIChvKSB7XG5cdHZhciBjdG9yID0gby5jb25zdHJ1Y3Rvcjtcblx0cmV0dXJuIGN0b3IgJiYgY3Rvci5wcm90b3R5cGUgPT09IG87XG59O1xudmFyIGV4Y2x1ZGVkS2V5cyA9IHtcblx0JGNvbnNvbGU6IHRydWUsXG5cdCRleHRlcm5hbDogdHJ1ZSxcblx0JGZyYW1lOiB0cnVlLFxuXHQkZnJhbWVFbGVtZW50OiB0cnVlLFxuXHQkZnJhbWVzOiB0cnVlLFxuXHQkaW5uZXJIZWlnaHQ6IHRydWUsXG5cdCRpbm5lcldpZHRoOiB0cnVlLFxuXHQkb3V0ZXJIZWlnaHQ6IHRydWUsXG5cdCRvdXRlcldpZHRoOiB0cnVlLFxuXHQkcGFnZVhPZmZzZXQ6IHRydWUsXG5cdCRwYWdlWU9mZnNldDogdHJ1ZSxcblx0JHBhcmVudDogdHJ1ZSxcblx0JHNjcm9sbExlZnQ6IHRydWUsXG5cdCRzY3JvbGxUb3A6IHRydWUsXG5cdCRzY3JvbGxYOiB0cnVlLFxuXHQkc2Nyb2xsWTogdHJ1ZSxcblx0JHNlbGY6IHRydWUsXG5cdCR3ZWJraXRJbmRleGVkREI6IHRydWUsXG5cdCR3ZWJraXRTdG9yYWdlSW5mbzogdHJ1ZSxcblx0JHdpbmRvdzogdHJ1ZVxufTtcbnZhciBoYXNBdXRvbWF0aW9uRXF1YWxpdHlCdWcgPSAoZnVuY3Rpb24gKCkge1xuXHQvKiBnbG9iYWwgd2luZG93ICovXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgeyByZXR1cm4gZmFsc2U7IH1cblx0Zm9yICh2YXIgayBpbiB3aW5kb3cpIHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKCFleGNsdWRlZEtleXNbJyQnICsga10gJiYgaGFzLmNhbGwod2luZG93LCBrKSAmJiB3aW5kb3dba10gIT09IG51bGwgJiYgdHlwZW9mIHdpbmRvd1trXSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZSh3aW5kb3dba10pO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufSgpKTtcbnZhciBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZUlmTm90QnVnZ3kgPSBmdW5jdGlvbiAobykge1xuXHQvKiBnbG9iYWwgd2luZG93ICovXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCAhaGFzQXV0b21hdGlvbkVxdWFsaXR5QnVnKSB7XG5cdFx0cmV0dXJuIGVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlKG8pO1xuXHR9XG5cdHRyeSB7XG5cdFx0cmV0dXJuIGVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlKG8pO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xuXG52YXIga2V5c1NoaW0gPSBmdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuXHR2YXIgaXNPYmplY3QgPSBvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCc7XG5cdHZhciBpc0Z1bmN0aW9uID0gdG9TdHIuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXHR2YXIgaXNBcmd1bWVudHMgPSBpc0FyZ3Mob2JqZWN0KTtcblx0dmFyIGlzU3RyaW5nID0gaXNPYmplY3QgJiYgdG9TdHIuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBTdHJpbmddJztcblx0dmFyIHRoZUtleXMgPSBbXTtcblxuXHRpZiAoIWlzT2JqZWN0ICYmICFpc0Z1bmN0aW9uICYmICFpc0FyZ3VtZW50cykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5rZXlzIGNhbGxlZCBvbiBhIG5vbi1vYmplY3QnKTtcblx0fVxuXG5cdHZhciBza2lwUHJvdG8gPSBoYXNQcm90b0VudW1CdWcgJiYgaXNGdW5jdGlvbjtcblx0aWYgKGlzU3RyaW5nICYmIG9iamVjdC5sZW5ndGggPiAwICYmICFoYXMuY2FsbChvYmplY3QsIDApKSB7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3QubGVuZ3RoOyArK2kpIHtcblx0XHRcdHRoZUtleXMucHVzaChTdHJpbmcoaSkpO1xuXHRcdH1cblx0fVxuXG5cdGlmIChpc0FyZ3VtZW50cyAmJiBvYmplY3QubGVuZ3RoID4gMCkge1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgb2JqZWN0Lmxlbmd0aDsgKytqKSB7XG5cdFx0XHR0aGVLZXlzLnB1c2goU3RyaW5nKGopKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Zm9yICh2YXIgbmFtZSBpbiBvYmplY3QpIHtcblx0XHRcdGlmICghKHNraXBQcm90byAmJiBuYW1lID09PSAncHJvdG90eXBlJykgJiYgaGFzLmNhbGwob2JqZWN0LCBuYW1lKSkge1xuXHRcdFx0XHR0aGVLZXlzLnB1c2goU3RyaW5nKG5hbWUpKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoaGFzRG9udEVudW1CdWcpIHtcblx0XHR2YXIgc2tpcENvbnN0cnVjdG9yID0gZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGVJZk5vdEJ1Z2d5KG9iamVjdCk7XG5cblx0XHRmb3IgKHZhciBrID0gMDsgayA8IGRvbnRFbnVtcy5sZW5ndGg7ICsraykge1xuXHRcdFx0aWYgKCEoc2tpcENvbnN0cnVjdG9yICYmIGRvbnRFbnVtc1trXSA9PT0gJ2NvbnN0cnVjdG9yJykgJiYgaGFzLmNhbGwob2JqZWN0LCBkb250RW51bXNba10pKSB7XG5cdFx0XHRcdHRoZUtleXMucHVzaChkb250RW51bXNba10pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gdGhlS2V5cztcbn07XG5cbmtleXNTaGltLnNoaW0gPSBmdW5jdGlvbiBzaGltT2JqZWN0S2V5cygpIHtcblx0aWYgKE9iamVjdC5rZXlzKSB7XG5cdFx0dmFyIGtleXNXb3Jrc1dpdGhBcmd1bWVudHMgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0Ly8gU2FmYXJpIDUuMCBidWdcblx0XHRcdHJldHVybiAoT2JqZWN0LmtleXMoYXJndW1lbnRzKSB8fCAnJykubGVuZ3RoID09PSAyO1xuXHRcdH0oMSwgMikpO1xuXHRcdGlmICgha2V5c1dvcmtzV2l0aEFyZ3VtZW50cykge1xuXHRcdFx0dmFyIG9yaWdpbmFsS2V5cyA9IE9iamVjdC5rZXlzO1xuXHRcdFx0T2JqZWN0LmtleXMgPSBmdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuXHRcdFx0XHRpZiAoaXNBcmdzKG9iamVjdCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gb3JpZ2luYWxLZXlzKHNsaWNlLmNhbGwob2JqZWN0KSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9yaWdpbmFsS2V5cyhvYmplY3QpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRPYmplY3Qua2V5cyA9IGtleXNTaGltO1xuXHR9XG5cdHJldHVybiBPYmplY3Qua2V5cyB8fCBrZXlzU2hpbTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c1NoaW07XG4iLCJcbnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmb3JFYWNoIChvYmosIGZuLCBjdHgpIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChmbikgIT09ICdbb2JqZWN0IEZ1bmN0aW9uXScpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaXRlcmF0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIHZhciBsID0gb2JqLmxlbmd0aDtcbiAgICBpZiAobCA9PT0gK2wpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGZuLmNhbGwoY3R4LCBvYmpbaV0sIGksIG9iaik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBrIGluIG9iaikge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKG9iaiwgaykpIHtcbiAgICAgICAgICAgICAgICBmbi5jYWxsKGN0eCwgb2JqW2tdLCBrLCBvYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIga2V5cyA9IHJlcXVpcmUoJ29iamVjdC1rZXlzJyk7XG52YXIgZm9yZWFjaCA9IHJlcXVpcmUoJ2ZvcmVhY2gnKTtcbnZhciBoYXNTeW1ib2xzID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sKCkgPT09ICdzeW1ib2wnO1xuXG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG52YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIChmbikge1xuXHRyZXR1cm4gdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIHRvU3RyLmNhbGwoZm4pID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufTtcblxudmFyIGFyZVByb3BlcnR5RGVzY3JpcHRvcnNTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBvYmogPSB7fTtcblx0dHJ5IHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAneCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiBvYmogfSk7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzLCBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuICAgICAgICBmb3IgKHZhciBfIGluIG9iaikgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycywgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cblx0XHRyZXR1cm4gb2JqLnggPT09IG9iajtcblx0fSBjYXRjaCAoZSkgeyAvKiB0aGlzIGlzIElFIDguICovXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xudmFyIHN1cHBvcnRzRGVzY3JpcHRvcnMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgYXJlUHJvcGVydHlEZXNjcmlwdG9yc1N1cHBvcnRlZCgpO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lLCB2YWx1ZSwgcHJlZGljYXRlKSB7XG5cdGlmIChuYW1lIGluIG9iamVjdCAmJiAoIWlzRnVuY3Rpb24ocHJlZGljYXRlKSB8fCAhcHJlZGljYXRlKCkpKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmIChzdXBwb3J0c0Rlc2NyaXB0b3JzKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgbmFtZSwge1xuXHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0ZW51bWVyYWJsZTogZmFsc2UsXG5cdFx0XHR2YWx1ZTogdmFsdWUsXG5cdFx0XHR3cml0YWJsZTogdHJ1ZVxuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdG9iamVjdFtuYW1lXSA9IHZhbHVlO1xuXHR9XG59O1xuXG52YXIgZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIChvYmplY3QsIG1hcCkge1xuXHR2YXIgcHJlZGljYXRlcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDoge307XG5cdHZhciBwcm9wcyA9IGtleXMobWFwKTtcblx0aWYgKGhhc1N5bWJvbHMpIHtcblx0XHRwcm9wcyA9IHByb3BzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG1hcCkpO1xuXHR9XG5cdGZvcmVhY2gocHJvcHMsIGZ1bmN0aW9uIChuYW1lKSB7XG5cdFx0ZGVmaW5lUHJvcGVydHkob2JqZWN0LCBuYW1lLCBtYXBbbmFtZV0sIHByZWRpY2F0ZXNbbmFtZV0pO1xuXHR9KTtcbn07XG5cbmRlZmluZVByb3BlcnRpZXMuc3VwcG9ydHNEZXNjcmlwdG9ycyA9ICEhc3VwcG9ydHNEZXNjcmlwdG9ycztcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0aWVzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbnVtYmVyLmlzbmFuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNOYU4odmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpbXBsZW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vaW1wbGVtZW50YXRpb24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRQb2x5ZmlsbCgpIHtcblx0aWYgKE51bWJlci5pc05hTiAmJiBOdW1iZXIuaXNOYU4oTmFOKSAmJiAhTnVtYmVyLmlzTmFOKCdhJykpIHtcblx0XHRyZXR1cm4gTnVtYmVyLmlzTmFOO1xuXHR9XG5cdHJldHVybiBpbXBsZW1lbnRhdGlvbjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBkZWZpbmUgPSByZXF1aXJlKCdkZWZpbmUtcHJvcGVydGllcycpO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG52YXIgZ2V0UG9seWZpbGwgPSByZXF1aXJlKCcuL3BvbHlmaWxsJyk7XG52YXIgc2hpbSA9IHJlcXVpcmUoJy4vc2hpbScpO1xuXG4vKiBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbnVtYmVyLmlzbmFuICovXG5cbmRlZmluZShpbXBsZW1lbnRhdGlvbiwge1xuXHRnZXRQb2x5ZmlsbDogZ2V0UG9seWZpbGwsXG5cdGltcGxlbWVudGF0aW9uOiBpbXBsZW1lbnRhdGlvbixcblx0c2hpbTogc2hpbVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gaW1wbGVtZW50YXRpb247XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBkZWZpbmUgPSByZXF1aXJlKCdkZWZpbmUtcHJvcGVydGllcycpO1xudmFyIGdldFBvbHlmaWxsID0gcmVxdWlyZSgnLi9wb2x5ZmlsbCcpO1xuXG4vKiBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbnVtYmVyLmlzbmFuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2hpbU51bWJlcklzTmFOKCkge1xuXHR2YXIgcG9seWZpbGwgPSBnZXRQb2x5ZmlsbCgpO1xuXHRkZWZpbmUoTnVtYmVyLCB7IGlzTmFOOiBwb2x5ZmlsbCB9LCB7IGlzTmFOOiBmdW5jdGlvbiAoKSB7IHJldHVybiBOdW1iZXIuaXNOYU4gIT09IHBvbHlmaWxsOyB9IH0pO1xuXHRyZXR1cm4gcG9seWZpbGw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKTtcbnZhciBwYXJhbUNhc2UgPSByZXF1aXJlKCdrZWJhYi1jYXNlJyk7XG52YXIgaW5mb3JtYXRpb24gPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbicpO1xudmFyIHNwYWNlcyA9IHJlcXVpcmUoJ3NwYWNlLXNlcGFyYXRlZC10b2tlbnMnKTtcbnZhciBjb21tYXMgPSByZXF1aXJlKCdjb21tYS1zZXBhcmF0ZWQtdG9rZW5zJyk7XG52YXIgbmFuID0gcmVxdWlyZSgnaXMtbmFuJyk7XG52YXIgaXMgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcHBlcjtcblxuZnVuY3Rpb24gd3JhcHBlcihoLCBub2RlLCBwcmVmaXgpIHtcbiAgdmFyIHI7XG4gIHZhciB2O1xuXG4gIGlmICh0eXBlb2YgaCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignaCBpcyBub3QgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgciA9IHJlYWN0KGgpO1xuICB2ID0gdmRvbShoKTtcblxuICBpZiAocHJlZml4ID09PSBudWxsIHx8IHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcHJlZml4ID0gciA9PT0gdHJ1ZSB8fCB2ID09PSB0cnVlID8gJ2gtJyA6IGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzKCdyb290Jywgbm9kZSkpIHtcbiAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgaXMoJ2VsZW1lbnQnLCBub2RlLmNoaWxkcmVuWzBdKSkge1xuICAgICAgbm9kZSA9IG5vZGUuY2hpbGRyZW5bMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSB7XG4gICAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgICAgdGFnTmFtZTogJ2RpdicsXG4gICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICBjaGlsZHJlbjogbm9kZS5jaGlsZHJlblxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWlzKCdlbGVtZW50Jywgbm9kZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHJvb3Qgb3IgZWxlbWVudCwgbm90IGAnICsgKChub2RlICYmIG5vZGUudHlwZSkgfHwgbm9kZSkgKyAnYCcpO1xuICB9XG5cbiAgcmV0dXJuIHRvSChoLCBub2RlLCB7XG4gICAgcHJlZml4OiBwcmVmaXgsXG4gICAga2V5OiAwLFxuICAgIHJlYWN0OiByLFxuICAgIHZkb206IHYsXG4gICAgaHlwZXJzY3JpcHQ6IGh5cGVyc2NyaXB0KGgpXG4gIH0pO1xufVxuXG4vKiBUcmFuc2Zvcm0gYSBIQVNUIG5vZGUgdGhyb3VnaCBhIGh5cGVyc2NyaXB0IGludGVyZmFjZVxuICogdG8gKmFueXRoaW5nKiEgKi9cbmZ1bmN0aW9uIHRvSChoLCBub2RlLCBjdHgpIHtcbiAgdmFyIHNlbGVjdG9yID0gbm9kZS50YWdOYW1lO1xuICB2YXIgcHJvcGVydGllcztcbiAgdmFyIGF0dHJpYnV0ZXM7XG4gIHZhciBjaGlsZHJlbjtcbiAgdmFyIHByb3BlcnR5O1xuICB2YXIgZWxlbWVudHM7XG4gIHZhciBsZW5ndGg7XG4gIHZhciBpbmRleDtcbiAgdmFyIHZhbHVlO1xuXG4gIHByb3BlcnRpZXMgPSBub2RlLnByb3BlcnRpZXM7XG4gIGF0dHJpYnV0ZXMgPSB7fTtcblxuICBmb3IgKHByb3BlcnR5IGluIHByb3BlcnRpZXMpIHtcbiAgICBhZGRBdHRyaWJ1dGUoYXR0cmlidXRlcywgcHJvcGVydHksIHByb3BlcnRpZXNbcHJvcGVydHldLCBjdHgpO1xuICB9XG5cbiAgaWYgKGN0eC52ZG9tID09PSB0cnVlKSB7XG4gICAgc2VsZWN0b3IgPSBzZWxlY3Rvci50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgaWYgKGN0eC5oeXBlcnNjcmlwdCA9PT0gdHJ1ZSAmJiBhdHRyaWJ1dGVzLmlkKSB7XG4gICAgc2VsZWN0b3IgKz0gJyMnICsgYXR0cmlidXRlcy5pZDtcbiAgICBkZWxldGUgYXR0cmlidXRlcy5pZDtcbiAgfVxuXG4gIGlmICgoY3R4Lmh5cGVyc2NyaXB0ID09PSB0cnVlIHx8IGN0eC52ZG9tID09PSB0cnVlKSAmJiBhdHRyaWJ1dGVzLmNsYXNzTmFtZSkge1xuICAgIHNlbGVjdG9yICs9ICcuJyArIHNwYWNlcy5wYXJzZShhdHRyaWJ1dGVzLmNsYXNzTmFtZSkuam9pbignLicpO1xuICAgIGRlbGV0ZSBhdHRyaWJ1dGVzLmNsYXNzTmFtZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYXR0cmlidXRlcy5zdHlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvKiBWRE9NIGV4cGVjdHMgYSBgc3RyaW5nYCBzdHlsZSBpbiBgYXR0cmlidXRlc2BcbiAgICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkvXG4gICAgICogZG9jcy92bm9kZS5tZCNwcm9wZXJ0aWVzc3R5bGUtdnMtcHJvcGVydGllc2F0dHJpYnV0ZXNzdHlsZSAqL1xuICAgIGlmIChjdHgudmRvbSA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKCFhdHRyaWJ1dGVzLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgYXR0cmlidXRlcy5hdHRyaWJ1dGVzID0ge307XG4gICAgICB9XG5cbiAgICAgIGF0dHJpYnV0ZXMuYXR0cmlidXRlcy5zdHlsZSA9IGF0dHJpYnV0ZXMuc3R5bGU7XG4gICAgICBkZWxldGUgYXR0cmlidXRlcy5zdHlsZTtcbiAgICAvKiBSZWFjdCBvbmx5IGFjY2VwdHMgYHN0eWxlYCBhcyBvYmplY3QuICovXG4gICAgfSBlbHNlIGlmIChjdHgucmVhY3QgPT09IHRydWUpIHtcbiAgICAgIGF0dHJpYnV0ZXMuc3R5bGUgPSBwYXJzZVN0eWxlKGF0dHJpYnV0ZXMuc3R5bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjdHgucHJlZml4KSB7XG4gICAgY3R4LmtleSsrO1xuICAgIGF0dHJpYnV0ZXMua2V5ID0gY3R4LnByZWZpeCArIGN0eC5rZXk7XG4gIH1cblxuICBlbGVtZW50cyA9IFtdO1xuICBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gfHwgW107XG4gIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgaW5kZXggPSAtMTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhbHVlID0gY2hpbGRyZW5baW5kZXhdO1xuXG4gICAgaWYgKGlzKCdlbGVtZW50JywgdmFsdWUpKSB7XG4gICAgICBlbGVtZW50cy5wdXNoKHRvSChoLCB2YWx1ZSwgY3R4KSk7XG4gICAgfSBlbHNlIGlmIChpcygndGV4dCcsIHZhbHVlKSkge1xuICAgICAgZWxlbWVudHMucHVzaCh2YWx1ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyogRW5zdXJlIG5vIFJlYWN0IHdhcm5pbmdzIGFyZSB0cmlnZ2VyZWQgZm9yXG4gICAqIHZvaWQgZWxlbWVudHMgaGF2aW5nIGNoaWxkcmVuIHBhc3NlZCBpbi4gKi9cbiAgcmV0dXJuIGVsZW1lbnRzLmxlbmd0aCA9PT0gMCA/IGgoc2VsZWN0b3IsIGF0dHJpYnV0ZXMpIDogaChzZWxlY3RvciwgYXR0cmlidXRlcywgZWxlbWVudHMpO1xufVxuXG4vKiBBZGQgYG5hbWVgIGFuZCBpdHMgYHZhbHVlYCB0byBgcHJvcHNgLiAqL1xuZnVuY3Rpb24gYWRkQXR0cmlidXRlKHByb3BzLCBuYW1lLCB2YWx1ZSwgY3R4KSB7XG4gIHZhciBpbmZvID0gaW5mb3JtYXRpb24obmFtZSkgfHwge307XG4gIHZhciBzdWJwcm9wO1xuXG4gIC8qIElnbm9yZSBudWxseSwgYGZhbHNlYCwgYE5hTmAsIGFuZCBmYWxzZXkga25vd25cbiAgICogYm9vbGVhbnMuICovXG4gIGlmIChcbiAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICB2YWx1ZSA9PT0gZmFsc2UgfHxcbiAgICBuYW4odmFsdWUpIHx8XG4gICAgKGluZm8uYm9vbGVhbiAmJiAhdmFsdWUpXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIG5hbWUgPSBpbmZvLm5hbWUgfHwgcGFyYW1DYXNlKG5hbWUpO1xuXG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgLyogQWNjZXB0IGBhcnJheWAuICBNb3N0IHByb3BzIGFyZSBzcGFjZS1zZXBhcmF0ZXIuICovXG4gICAgdmFsdWUgPSAoaW5mby5jb21tYVNlcGFyYXRlZCA/IGNvbW1hcyA6IHNwYWNlcykuc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxuXG4gIC8qIFRyZWF0IGB0cnVlYCBhbmQgdHJ1dGh5IGtub3duIGJvb2xlYW5zLiAqL1xuICBpZiAoaW5mby5ib29sZWFuICYmIGN0eC5oeXBlcnNjcmlwdCA9PT0gdHJ1ZSkge1xuICAgIHZhbHVlID0gJyc7XG4gIH1cblxuICBpZiAoaW5mby5uYW1lICE9PSAnY2xhc3MnICYmIChpbmZvLm11c3RVc2VBdHRyaWJ1dGUgfHwgIWluZm8ubmFtZSkpIHtcbiAgICBpZiAoY3R4LnZkb20gPT09IHRydWUpIHtcbiAgICAgIHN1YnByb3AgPSAnYXR0cmlidXRlcyc7XG4gICAgfSBlbHNlIGlmIChjdHguaHlwZXJzY3JpcHQgPT09IHRydWUpIHtcbiAgICAgIHN1YnByb3AgPSAnYXR0cnMnO1xuICAgIH1cblxuICAgIGlmIChzdWJwcm9wKSB7XG4gICAgICBpZiAocHJvcHNbc3VicHJvcF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9wc1tzdWJwcm9wXSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBwcm9wc1tzdWJwcm9wXVtuYW1lXSA9IHZhbHVlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJvcHNbaW5mby5wcm9wZXJ0eU5hbWUgfHwgbmFtZV0gPSB2YWx1ZTtcbn1cblxuLyogQ2hlY2sgaWYgYGhgIGlzIGByZWFjdC5jcmVhdGVFbGVtZW50YC4gIEl0IGRvZXNu4oCZdCBhY2NlcHRcbiAqIGBjbGFzc2AgYXMgYW4gYXR0cmlidXRlLCBpdCBtdXN0IGJlIGFkZGVkIHRocm91Z2ggdGhlXG4gKiBgc2VsZWN0b3JgLiAqL1xuZnVuY3Rpb24gcmVhY3QoaCkge1xuICB2YXIgbm9kZSA9IGggJiYgaCgnZGl2Jyk7XG4gIHJldHVybiBCb29sZWFuKG5vZGUgJiYgKCdfb3duZXInIGluIG5vZGUgfHwgJ19zdG9yZScgaW4gbm9kZSkgJiYgbm9kZS5rZXkgPT09IG51bGwpO1xufVxuXG4vKiBDaGVjayBpZiBgaGAgaXMgYGh5cGVyc2NyaXB0YC4gIEl0IGRvZXNu4oCZdCBhY2NlcHRcbiAqIGBjbGFzc2AgYXMgYW4gYXR0cmlidXRlLCBpdCBtdXN0IGJlIGFkZGVkIHRocm91Z2ggdGhlXG4gKiBgc2VsZWN0b3JgLiAqL1xuZnVuY3Rpb24gaHlwZXJzY3JpcHQoaCkge1xuICByZXR1cm4gQm9vbGVhbihoICYmIGguY29udGV4dCAmJiBoLmNsZWFudXApO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGBoYCBpcyBgdmlydHVhbC1kb20vaGAuICBJdOKAmXMgdGhlIG9ubHlcbiAqIGh5cGVyc2NyaXB0IOKAnGNvbXBhdGlibGXigJ0gaW50ZXJmYWNlIG5lZWRpbmcgYGF0dHJpYnV0ZXNgLiAqL1xuZnVuY3Rpb24gdmRvbShoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGgoJ2RpdicpLnR5cGUgPT09ICdWaXJ0dWFsTm9kZSc7XG4gIH0gY2F0Y2ggKGVycikgeyAvKiBFbXB0eSAqLyB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBwYXJzZVN0eWxlKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgdmFyIGRlY2xhcmF0aW9ucyA9IHZhbHVlLnNwbGl0KCc7Jyk7XG4gIHZhciBsZW5ndGggPSBkZWNsYXJhdGlvbnMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGRlY2xhcmF0aW9uO1xuICB2YXIgcHJvcDtcbiAgdmFyIHBvcztcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb25zW2luZGV4XTtcbiAgICBwb3MgPSBkZWNsYXJhdGlvbi5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKHBvcyAhPT0gLTEpIHtcbiAgICAgIHByb3AgPSBjYW1lbENhc2UodHJpbShkZWNsYXJhdGlvbi5zbGljZSgwLCBwb3MpKSk7XG4gICAgICByZXN1bHRbcHJvcF0gPSB0cmltKGRlY2xhcmF0aW9uLnNsaWNlKHBvcyArIDEpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjYW1lbENhc2UodmFsKSB7XG4gIGlmICh2YWwuc2xpY2UoMCwgNCkgPT09ICctbXMtJykge1xuICAgIHZhbCA9ICdtcy0nICsgdmFsLnNsaWNlKDQpO1xuICB9XG5cbiAgcmV0dXJuIHZhbC5yZXBsYWNlKC8tKFthLXpdKS9nLCByZXBsYWNlKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZSgkMCwgJDEpIHtcbiAgcmV0dXJuICQxLnRvVXBwZXJDYXNlKCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeTtcblxudmFyIG5vb3AgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cbi8qIEhhbmRsZSB2YWx1ZXMgYmFzZWQgb24gYSBwcm9wZXJ0eS4gKi9cbmZ1bmN0aW9uIGZhY3Rvcnkoa2V5LCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge307XG5cbiAgZnVuY3Rpb24gb25lKHZhbHVlKSB7XG4gICAgdmFyIGZuID0gb25lLmludmFsaWQ7XG4gICAgdmFyIGhhbmRsZXJzID0gb25lLmhhbmRsZXJzO1xuXG4gICAgaWYgKHZhbHVlICYmIG93bi5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICBmbiA9IG93bi5jYWxsKGhhbmRsZXJzLCB2YWx1ZVtrZXldKSA/IGhhbmRsZXJzW3ZhbHVlW2tleV1dIDogb25lLnVua25vd247XG4gICAgfVxuXG4gICAgcmV0dXJuIChmbiB8fCBub29wKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgb25lLmhhbmRsZXJzID0gc2V0dGluZ3MuaGFuZGxlcnMgfHwge307XG4gIG9uZS5pbnZhbGlkID0gc2V0dGluZ3MuaW52YWxpZDtcbiAgb25lLnVua25vd24gPSBzZXR0aW5ncy51bmtub3duO1xuXG4gIHJldHVybiBvbmU7XG59XG4iLCJ2YXIgbmF0aXZlSXNBcnJheSA9IEFycmF5LmlzQXJyYXlcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVJc0FycmF5IHx8IGlzQXJyYXlcblxuZnVuY3Rpb24gaXNBcnJheShvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSBcIltvYmplY3QgQXJyYXldXCJcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFycmF5ID0gcmVxdWlyZSgneC1pcy1hcnJheScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnk7XG5cbi8qIEZ1bmN0aW9uYWwgbWFwIHdpdGggc3VnYXIuICovXG5mdW5jdGlvbiBmYWN0b3J5KGZuLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBrZXkgPSBzZXR0aW5ncy5rZXk7XG4gIHZhciBpbmRpY2VzID0gc2V0dGluZ3MuaW5kaWNlcztcbiAgdmFyIGdhcGxlc3MgPSBzZXR0aW5ncy5nYXBsZXNzO1xuXG4gIGlmICh0eXBlb2Ygc2V0dGluZ3MgPT09ICdzdHJpbmcnKSB7XG4gICAga2V5ID0gc2V0dGluZ3M7XG4gIH1cblxuICBpZiAoaW5kaWNlcyA9PSBudWxsKSB7XG4gICAgaW5kaWNlcyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gYWxsO1xuXG4gIGZ1bmN0aW9uIGFsbCh2YWx1ZXMpIHtcbiAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgIHZhciBwYXJlbnQgPSB2YWx1ZXM7XG4gICAgdmFyIGluZGV4ID0gLTE7XG4gICAgdmFyIGxlbmd0aDtcbiAgICB2YXIgcmVzdWx0O1xuXG4gICAgaWYgKGtleSkge1xuICAgICAgaWYgKGFycmF5KHZhbHVlcykpIHtcbiAgICAgICAgcGFyZW50ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlcyA9IHBhcmVudFtrZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGluZGljZXMpIHtcbiAgICAgICAgcmVzdWx0ID0gZm4uY2FsbCh0aGlzLCB2YWx1ZXNbaW5kZXhdLCBpbmRleCwgcGFyZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGZuLmNhbGwodGhpcywgdmFsdWVzW2luZGV4XSwgcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFnYXBsZXNzIHx8IHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJyk7XG52YXIgdG9IID0gcmVxdWlyZSgnaGFzdC10by1oeXBlcnNjcmlwdCcpO1xudmFyIE5TID0gcmVxdWlyZSgnd2ViLW5hbWVzcGFjZXMnKTtcbnZhciB6d2l0Y2ggPSByZXF1aXJlKCd6d2l0Y2gnKTtcbnZhciBtYXB6ID0gcmVxdWlyZSgnbWFweicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRyYW5zZm9ybTtcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5O1xudmFyIG9uZSA9IHp3aXRjaCgndHlwZScpO1xudmFyIGFsbCA9IG1hcHoob25lLCB7a2V5OiAnY2hpbGRyZW4nLCBpbmRpY2VzOiBmYWxzZX0pO1xuXG52YXIgY3VzdG9tUHJvcHMgPSBbJ19fbG9jYXRpb24nLCAnY2hpbGROb2RlcycsICdjb250ZW50JywgJ3BhcmVudE5vZGUnLCAnbmFtZXNwYWNlVVJJJ107XG5cbm9uZS5oYW5kbGVycy5yb290ID0gcm9vdDtcbm9uZS5oYW5kbGVycy5lbGVtZW50ID0gZWxlbWVudDtcbm9uZS5oYW5kbGVycy50ZXh0ID0gdGV4dDtcbm9uZS5oYW5kbGVycy5jb21tZW50ID0gY29tbWVudDtcbm9uZS5oYW5kbGVycy5kb2N0eXBlID0gZG9jdHlwZTtcblxuLyogTWFwIG9mIHRhZy1uYW1lcyBzdGFydGluZyBuZXcgbmFtZXNwYWNlcy4gKi9cbnZhciBuYW1lc3BhY2VzID0ge1xuICBtYXRoOiBOUy5tYXRobWwsXG4gIHN2ZzogTlMuc3ZnXG59O1xuXG4vKiBNYXAgb2YgYXR0cmlidXRlcyB3aXRoIG5hbWVzcGFjZXMuICovXG52YXIgYXR0cmlidXRlU3BhY2VzID0ge1xuICAneGxpbms6YWN0dWF0ZSc6IHtwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdhY3R1YXRlJywgbmFtZXNwYWNlOiBOUy54bGlua30sXG4gICd4bGluazphcmNyb2xlJzoge3ByZWZpeDogJ3hsaW5rJywgbmFtZTogJ2FyY3JvbGUnLCBuYW1lc3BhY2U6IE5TLnhsaW5rfSxcbiAgJ3hsaW5rOmhyZWYnOiB7cHJlZml4OiAneGxpbmsnLCBuYW1lOiAnaHJlZicsIG5hbWVzcGFjZTogTlMueGxpbmt9LFxuICAneGxpbms6cm9sZSc6IHtwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdyb2xlJywgbmFtZXNwYWNlOiBOUy54bGlua30sXG4gICd4bGluazpzaG93Jzoge3ByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3Nob3cnLCBuYW1lc3BhY2U6IE5TLnhsaW5rfSxcbiAgJ3hsaW5rOnRpdGxlJzoge3ByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3RpdGxlJywgbmFtZXNwYWNlOiBOUy54bGlua30sXG4gICd4bGluazp0eXBlJzoge3ByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3R5cGUnLCBuYW1lc3BhY2U6IE5TLnhsaW5rfSxcbiAgJ3htbDpiYXNlJzoge3ByZWZpeDogJ3htbCcsIG5hbWU6ICdiYXNlJywgbmFtZXNwYWNlOiBOUy54bWx9LFxuICAneG1sOmxhbmcnOiB7cHJlZml4OiAneG1sJywgbmFtZTogJ2xhbmcnLCBuYW1lc3BhY2U6IE5TLnhtbH0sXG4gICd4bWw6c3BhY2UnOiB7cHJlZml4OiAneG1sJywgbmFtZTogJ3NwYWNlJywgbmFtZXNwYWNlOiBOUy54bWx9LFxuICB4bWxuczoge3ByZWZpeDogJycsIG5hbWU6ICd4bWxucycsIG5hbWVzcGFjZTogTlMueG1sbnN9LFxuICAneG1sbnM6eGxpbmsnOiB7cHJlZml4OiAneG1sbnMnLCBuYW1lOiAneGxpbmsnLCBuYW1lc3BhY2U6IE5TLnhtbG5zfVxufTtcblxuLyogVHJhbnNmb3JtIGEgdHJlZSBmcm9tIEhBU1QgdG8gUGFyc2U14oCZcyBBU1QuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm0odHJlZSkge1xuICByZXR1cm4gcGF0Y2gob25lKHRyZWUpLCBudWxsLCBOUy5odG1sKTtcbn1cblxuZnVuY3Rpb24gcm9vdChub2RlKSB7XG4gIHZhciBkYXRhID0gbm9kZS5kYXRhIHx8IHt9O1xuICB2YXIgcXMgPSBvd24uY2FsbChkYXRhLCAncXVpcmtzTW9kZScpID8gQm9vbGVhbihkYXRhLnF1aXJrc01vZGUpIDogZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBub2RlTmFtZTogJyNkb2N1bWVudCcsXG4gICAgbW9kZTogcXMgPyAncXVpcmtzJyA6ICduby1xdWlya3MnLFxuICAgIGNoaWxkTm9kZXM6IGFsbChub2RlKVxuICB9O1xufVxuXG5mdW5jdGlvbiBlbGVtZW50KG5vZGUpIHtcbiAgdmFyIHNoYWxsb3cgPSB4dGVuZChub2RlKTtcblxuICBzaGFsbG93LmNoaWxkcmVuID0gW107XG5cbiAgcmV0dXJuIHRvSChmdW5jdGlvbiAobmFtZSwgYXR0cnMpIHtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgdmFyIGNvbnRlbnQ7XG4gICAgdmFyIHZhbHVlO1xuICAgIHZhciBrZXk7XG5cbiAgICBmb3IgKGtleSBpbiBhdHRycykge1xuICAgICAgdmFsdWUgPSB7bmFtZToga2V5LCB2YWx1ZTogYXR0cnNba2V5XX07XG5cbiAgICAgIGlmIChvd24uY2FsbChhdHRyaWJ1dGVTcGFjZXMsIGtleSkpIHtcbiAgICAgICAgdmFsdWUgPSB4dGVuZCh2YWx1ZSwgYXR0cmlidXRlU3BhY2VzW2tleV0pO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm0oc2hhbGxvdy5jb250ZW50KTtcbiAgICAgIGRlbGV0ZSBjb250ZW50Lm1vZGU7XG4gICAgICBjb250ZW50Lm5vZGVOYW1lID0gJyNkb2N1bWVudC1mcmFnbWVudCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdyYXAobm9kZSwge1xuICAgICAgbm9kZU5hbWU6IG5vZGUudGFnTmFtZSxcbiAgICAgIHRhZ05hbWU6IG5vZGUudGFnTmFtZSxcbiAgICAgIGF0dHJzOiB2YWx1ZXMsXG4gICAgICBjaGlsZE5vZGVzOiBub2RlLmNoaWxkcmVuID8gYWxsKG5vZGUpIDogW11cbiAgICB9LCBjb250ZW50KTtcbiAgfSwgc2hhbGxvdyk7XG59XG5cbmZ1bmN0aW9uIGRvY3R5cGUobm9kZSkge1xuICByZXR1cm4gd3JhcChub2RlLCB7XG4gICAgbm9kZU5hbWU6ICcjZG9jdW1lbnRUeXBlJyxcbiAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgcHVibGljSWQ6IG5vZGUucHVibGljIHx8IG51bGwsXG4gICAgc3lzdGVtSWQ6IG5vZGUuc3lzdGVtIHx8IG51bGxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRleHQobm9kZSkge1xuICByZXR1cm4gd3JhcChub2RlLCB7XG4gICAgbm9kZU5hbWU6ICcjdGV4dCcsXG4gICAgdmFsdWU6IG5vZGUudmFsdWVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNvbW1lbnQobm9kZSkge1xuICByZXR1cm4gd3JhcChub2RlLCB7XG4gICAgbm9kZU5hbWU6ICcjY29tbWVudCcsXG4gICAgZGF0YTogbm9kZS52YWx1ZVxuICB9KTtcbn1cblxuLyogUGF0Y2ggcG9zaXRpb24uICovXG5mdW5jdGlvbiB3cmFwKG5vZGUsIGFzdCwgY29udGVudCkge1xuICBpZiAobm9kZS5wb3NpdGlvbiAmJiBub2RlLnBvc2l0aW9uLnN0YXJ0ICYmIG5vZGUucG9zaXRpb24uZW5kKSB7XG4gICAgYXN0Ll9fbG9jYXRpb24gPSB7XG4gICAgICBsaW5lOiBub2RlLnBvc2l0aW9uLnN0YXJ0LmxpbmUsXG4gICAgICBjb2w6IG5vZGUucG9zaXRpb24uc3RhcnQuY29sdW1uLFxuICAgICAgc3RhcnRPZmZzZXQ6IG5vZGUucG9zaXRpb24uc3RhcnQub2Zmc2V0LFxuICAgICAgZW5kT2Zmc2V0OiBub2RlLnBvc2l0aW9uLmVuZC5vZmZzZXRcbiAgICB9O1xuICB9XG5cbiAgaWYgKGNvbnRlbnQpIHtcbiAgICBhc3QuY29udGVudCA9IGNvbnRlbnQ7XG4gIH1cblxuICByZXR1cm4gYXN0O1xufVxuXG4vKiBQYXRjaCBhIHRyZWUgcmVjdXJzaXZlbHksIGJ5IGFkZGluZyBuYW1lc3BhY2VzXG4gKiBhbmQgcGFyZW50IHJlZmVyZW5jZXMgd2hlcmUgbmVlZGVkLiAqL1xuZnVuY3Rpb24gcGF0Y2gobm9kZSwgcGFyZW50LCBucykge1xuICB2YXIgbG9jYXRpb24gPSBub2RlLl9fbG9jYXRpb247XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGROb2RlcztcbiAgdmFyIG5hbWUgPSBub2RlLnRhZ05hbWU7XG4gIHZhciByZXBsYWNlbWVudCA9IHt9O1xuICB2YXIgbGVuZ3RoO1xuICB2YXIgaW5kZXg7XG4gIHZhciBrZXk7XG5cbiAgZm9yIChrZXkgaW4gbm9kZSkge1xuICAgIGlmIChjdXN0b21Qcm9wcy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICByZXBsYWNlbWVudFtrZXldID0gbm9kZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvd24uY2FsbChuYW1lc3BhY2VzLCBuYW1lKSkge1xuICAgIG5zID0gbmFtZXNwYWNlc1tuYW1lXTtcbiAgfVxuXG4gIGlmIChvd24uY2FsbChyZXBsYWNlbWVudCwgJ3RhZ05hbWUnKSkge1xuICAgIHJlcGxhY2VtZW50Lm5hbWVzcGFjZVVSSSA9IG5zO1xuICB9XG5cbiAgaWYgKGNoaWxkcmVuKSB7XG4gICAgcmVwbGFjZW1lbnQuY2hpbGROb2RlcyA9IGNoaWxkcmVuO1xuICAgIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgICBpbmRleCA9IC0xO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoaWxkcmVuW2luZGV4XSA9IHBhdGNoKGNoaWxkcmVuW2luZGV4XSwgcmVwbGFjZW1lbnQsIG5zKTtcbiAgICB9XG4gIH1cblxuICBpZiAobmFtZSA9PT0gJ3RlbXBsYXRlJykge1xuICAgIHJlcGxhY2VtZW50LmNvbnRlbnQgPSBwYXRjaChub2RlLmNvbnRlbnQsIG51bGwsIG5zKTtcbiAgfVxuXG4gIGlmIChwYXJlbnQpIHtcbiAgICByZXBsYWNlbWVudC5wYXJlbnROb2RlID0gcGFyZW50O1xuICB9XG5cbiAgaWYgKGxvY2F0aW9uKSB7XG4gICAgcmVwbGFjZW1lbnQuX19sb2NhdGlvbiA9IGxvY2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHJlcGxhY2VtZW50O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgUGFyc2VyID0gcmVxdWlyZSgncGFyc2U1L2xpYi9wYXJzZXInKTtcbnZhciBwb3MgPSByZXF1aXJlKCd1bmlzdC11dGlsLXBvc2l0aW9uJyk7XG52YXIgZnJvbVBhcnNlNSA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1mcm9tLXBhcnNlNScpO1xudmFyIHRvUGFyc2U1ID0gcmVxdWlyZSgnaGFzdC11dGlsLXRvLXBhcnNlNScpO1xudmFyIHZvaWRzID0gcmVxdWlyZSgnaHRtbC12b2lkLWVsZW1lbnRzJyk7XG52YXIgbnMgPSByZXF1aXJlKCd3ZWItbmFtZXNwYWNlcycpO1xudmFyIHp3aXRjaCA9IHJlcXVpcmUoJ3p3aXRjaCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXA7XG5cbnZhciBJTl9URU1QTEFURV9NT0RFID0gJ0lOX1RFTVBMQVRFX01PREUnO1xudmFyIENIQVJBQ1RFUl9UT0tFTiA9ICdDSEFSQUNURVJfVE9LRU4nO1xudmFyIFNUQVJUX1RBR19UT0tFTiA9ICdTVEFSVF9UQUdfVE9LRU4nO1xudmFyIEVORF9UQUdfVE9LRU4gPSAnRU5EX1RBR19UT0tFTic7XG52YXIgSElCRVJOQVRJT05fVE9LRU4gPSAnSElCRVJOQVRJT05fVE9LRU4nO1xudmFyIENPTU1FTlRfVE9LRU4gPSAnQ09NTUVOVF9UT0tFTic7XG52YXIgRE9DVFlQRV9UT0tFTiA9ICdET0NUWVBFX1RPS0VOJztcbnZhciBET0NVTUVOVCA9ICdkb2N1bWVudCc7XG52YXIgRlJBR01FTlQgPSAnZnJhZ21lbnQnO1xuXG5mdW5jdGlvbiB3cmFwKHRyZWUsIGZpbGUpIHtcbiAgdmFyIHBhcnNlciA9IG5ldyBQYXJzZXIoe2xvY2F0aW9uSW5mbzogdHJ1ZX0pO1xuICB2YXIgb25lID0gendpdGNoKCd0eXBlJyk7XG4gIHZhciBtb2RlID0gaW5mZXJNb2RlKHRyZWUpO1xuICB2YXIgcHJlcHJvY2Vzc29yO1xuICB2YXIgcmVzdWx0O1xuXG4gIG9uZS5oYW5kbGVycy5yb290ID0gcm9vdDtcbiAgb25lLmhhbmRsZXJzLmVsZW1lbnQgPSBlbGVtZW50O1xuICBvbmUuaGFuZGxlcnMudGV4dCA9IHRleHQ7XG4gIG9uZS5oYW5kbGVycy5jb21tZW50ID0gY29tbWVudDtcbiAgb25lLmhhbmRsZXJzLmRvY3R5cGUgPSBkb2N0eXBlO1xuICBvbmUuaGFuZGxlcnMucmF3ID0gcmF3O1xuICBvbmUudW5rbm93biA9IHVua25vd247XG5cbiAgcmVzdWx0ID0gZnJvbVBhcnNlNShtb2RlID09PSBGUkFHTUVOVCA/IGZyYWdtZW50KCkgOiBkb2N1bWVudCgpLCBmaWxlKTtcblxuICAvKiBVbnBhY2sgaWYgcG9zc2libGUgYW5kIHdoZW4gbm90IGdpdmVuIGEgYHJvb3RgLiAqL1xuICBpZiAodHJlZS50eXBlICE9PSAncm9vdCcgJiYgcmVzdWx0LmNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiByZXN1bHQuY2hpbGRyZW5bMF07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xuXG4gIGZ1bmN0aW9uIGZyYWdtZW50KCkge1xuICAgIHZhciBjb250ZXh0O1xuICAgIHZhciBtb2NrO1xuICAgIHZhciBkb2M7XG5cbiAgICBjb250ZXh0ID0ge1xuICAgICAgbm9kZU5hbWU6ICd0ZW1wbGF0ZScsXG4gICAgICB0YWdOYW1lOiAndGVtcGxhdGUnLFxuICAgICAgYXR0cnM6IFtdLFxuICAgICAgbmFtZXNwYWNlVVJJOiBucy5odG1sLFxuICAgICAgY2hpbGROb2RlczogW11cbiAgICB9O1xuXG4gICAgbW9jayA9IHtcbiAgICAgIG5vZGVOYW1lOiAnZG9jdW1lbnRtb2NrJyxcbiAgICAgIHRhZ05hbWU6ICdkb2N1bWVudG1vY2snLFxuICAgICAgYXR0cnM6IFtdLFxuICAgICAgbmFtZXNwYWNlVVJJOiBucy5odG1sLFxuICAgICAgY2hpbGROb2RlczogW11cbiAgICB9O1xuXG4gICAgZG9jID0ge1xuICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnQtZnJhZ21lbnQnLFxuICAgICAgY2hpbGROb2RlczogW11cbiAgICB9O1xuXG4gICAgcGFyc2VyLl9ib290c3RyYXAobW9jaywgY29udGV4dCk7XG4gICAgcGFyc2VyLl9wdXNoVG1wbEluc2VydGlvbk1vZGUoSU5fVEVNUExBVEVfTU9ERSk7XG4gICAgcGFyc2VyLl9pbml0VG9rZW5pemVyRm9yRnJhZ21lbnRQYXJzaW5nKCk7XG4gICAgcGFyc2VyLl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKTtcbiAgICBwYXJzZXIuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgIHBhcnNlci5fZmluZEZvcm1JbkZyYWdtZW50Q29udGV4dCgpO1xuXG4gICAgcHJlcHJvY2Vzc29yID0gcGFyc2VyLnRva2VuaXplci5wcmVwcm9jZXNzb3I7XG5cbiAgICBvbmUodHJlZSk7XG5cbiAgICBwYXJzZXIuX2Fkb3B0Tm9kZXMobW9jay5jaGlsZE5vZGVzWzBdLCBkb2MpO1xuXG4gICAgcmV0dXJuIGRvYztcbiAgfVxuXG4gIGZ1bmN0aW9uIGRvY3VtZW50KCkge1xuICAgIHZhciBkb2MgPSBwYXJzZXIudHJlZUFkYXB0ZXIuY3JlYXRlRG9jdW1lbnQoKTtcblxuICAgIHBhcnNlci5fYm9vdHN0cmFwKGRvYywgbnVsbCk7XG5cbiAgICBvbmUodHJlZSk7XG5cbiAgICByZXR1cm4gZG9jO1xuICB9XG5cbiAgZnVuY3Rpb24gYWxsKG5vZGVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IDA7XG4gICAgdmFyIGluZGV4ID0gLTE7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAtIGludmFsaWQgbm9kZXMsIHNlZSB3b29vcm0vcmVoeXBlLXJhdyM3LiAqL1xuICAgIGlmIChub2Rlcykge1xuICAgICAgbGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBvbmUobm9kZXNbaW5kZXhdKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByb290KG5vZGUpIHtcbiAgICBhbGwobm9kZS5jaGlsZHJlbik7XG4gIH1cblxuICBmdW5jdGlvbiBlbGVtZW50KG5vZGUpIHtcbiAgICB2YXIgZW1wdHkgPSB2b2lkcy5pbmRleE9mKG5vZGUudGFnTmFtZSkgIT09IC0xO1xuXG4gICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oc3RhcnRUYWcobm9kZSksIG5zLmh0bWwpO1xuXG4gICAgYWxsKG5vZGUuY2hpbGRyZW4pO1xuXG4gICAgaWYgKCFlbXB0eSkge1xuICAgICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oZW5kVGFnKG5vZGUpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0ZXh0KG5vZGUpIHtcbiAgICB2YXIgc3RhcnQgPSBwb3Muc3RhcnQobm9kZSk7XG4gICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oe1xuICAgICAgdHlwZTogQ0hBUkFDVEVSX1RPS0VOLFxuICAgICAgY2hhcnM6IG5vZGUudmFsdWUsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsaW5lOiBzdGFydC5saW5lLFxuICAgICAgICBjb2w6IHN0YXJ0LmNvbHVtbixcbiAgICAgICAgc3RhcnRPZmZzZXQ6IHN0YXJ0Lm9mZnNldCxcbiAgICAgICAgZW5kT2Zmc2V0OiBwb3MuZW5kKG5vZGUpLm9mZnNldFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZG9jdHlwZShub2RlKSB7XG4gICAgdmFyIHA1ID0gdG9QYXJzZTUobm9kZSk7XG4gICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oe1xuICAgICAgdHlwZTogRE9DVFlQRV9UT0tFTixcbiAgICAgIG5hbWU6IHA1Lm5hbWUsXG4gICAgICBmb3JjZVF1aXJrczogZmFsc2UsXG4gICAgICBwdWJsaWNJZDogcDUucHVibGljSWQsXG4gICAgICBzeXN0ZW1JZDogcDUuc3lzdGVtSWRcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbW1lbnQobm9kZSkge1xuICAgIHZhciBzdGFydCA9IHBvcy5zdGFydChub2RlKTtcbiAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbih7XG4gICAgICB0eXBlOiBDT01NRU5UX1RPS0VOLFxuICAgICAgZGF0YTogbm9kZS52YWx1ZSxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxpbmU6IHN0YXJ0LmxpbmUsXG4gICAgICAgIGNvbDogc3RhcnQuY29sdW1uLFxuICAgICAgICBzdGFydE9mZnNldDogc3RhcnQub2Zmc2V0LFxuICAgICAgICBlbmRPZmZzZXQ6IHBvcy5lbmQobm9kZSkub2Zmc2V0XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiByYXcobm9kZSkge1xuICAgIHZhciBzdGFydCA9IHBvcy5zdGFydChub2RlKS5vZmZzZXQ7XG5cbiAgICBwcmVwcm9jZXNzb3IuaHRtbCA9IG51bGw7XG4gICAgcHJlcHJvY2Vzc29yLmxhc3RDaGFyUG9zID0gLTE7XG4gICAgcHJlcHJvY2Vzc29yLnBvcyA9IC0xO1xuXG4gICAgaWYgKHN0YXJ0ICE9PSBudWxsKSB7XG4gICAgICBwcmVwcm9jZXNzb3IuX19sb2NUcmFja2VyLmRyb3BwZWRCdWZmZXJTaXplID0gc3RhcnQ7XG4gICAgfVxuXG4gICAgcGFyc2VyLnRva2VuaXplci53cml0ZShub2RlLnZhbHVlKTtcblxuICAgIHJ1bihwYXJzZXIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJ1bihwKSB7XG4gIHZhciB0b2tlbml6ZXIgPSBwLnRva2VuaXplcjtcbiAgdmFyIHRva2VuO1xuXG4gIHdoaWxlICghcC5zdG9wcGVkKSB7XG4gICAgcC5fc2V0dXBUb2tlbml6ZXJDREFUQU1vZGUoKTtcblxuICAgIHRva2VuID0gdG9rZW5pemVyLmdldE5leHRUb2tlbigpO1xuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09IEhJQkVSTkFUSU9OX1RPS0VOKSB7XG4gICAgICB0b2tlbiA9IHRva2VuaXplci5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gfHwgdG9rZW5pemVyLmN1cnJlbnRUb2tlbjtcblxuICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgIHAuX3Byb2Nlc3NJbnB1dFRva2VuKHRva2VuKTtcbiAgICAgIH1cblxuICAgICAgdG9rZW5pemVyLmN1cnJlbnRUb2tlbiA9IG51bGw7XG4gICAgICB0b2tlbml6ZXIuY3VycmVudENoYXJhY3RlclRva2VuID0gbnVsbDtcblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcC5fcHJvY2Vzc0lucHV0VG9rZW4odG9rZW4pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0YXJ0VGFnKG5vZGUpIHtcbiAgdmFyIHN0YXJ0ID0gcG9zLnN0YXJ0KG5vZGUpO1xuICB2YXIgZW5kID0gcG9zLmVuZChub2RlKTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IFNUQVJUX1RBR19UT0tFTixcbiAgICB0YWdOYW1lOiBub2RlLnRhZ05hbWUsXG4gICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgIGF0dHJzOiBhdHRyaWJ1dGVzKG5vZGUpLFxuICAgIGxvY2F0aW9uOiB7XG4gICAgICBsaW5lOiBzdGFydC5saW5lLFxuICAgICAgY29sOiBzdGFydC5jb2x1bW4sXG4gICAgICBzdGFydE9mZnNldDogc3RhcnQub2Zmc2V0LFxuICAgICAgZW5kT2Zmc2V0OiBlbmQub2Zmc2V0LFxuICAgICAgYXR0cnM6IHt9LFxuICAgICAgc3RhcnRUYWc6IHtcbiAgICAgICAgbGluZTogc3RhcnQubGluZSxcbiAgICAgICAgY29sOiBzdGFydC5jb2x1bW4sXG4gICAgICAgIHN0YXJ0T2Zmc2V0OiBzdGFydC5vZmZzZXQsXG4gICAgICAgIGVuZE9mZnNldDogZW5kLm9mZnNldFxuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0cmlidXRlcyhub2RlKSB7XG4gIHJldHVybiB0b1BhcnNlNSh7XG4gICAgdHlwZTogJ2VsZW1lbnQnLFxuICAgIHByb3BlcnRpZXM6IG5vZGUucHJvcGVydGllc1xuICB9KS5hdHRycztcbn1cblxuZnVuY3Rpb24gZW5kVGFnKG5vZGUpIHtcbiAgdmFyIGVuZCA9IHBvcy5lbmQobm9kZSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBFTkRfVEFHX1RPS0VOLFxuICAgIHRhZ05hbWU6IG5vZGUudGFnTmFtZSxcbiAgICBhdHRyczogW10sXG4gICAgbG9jYXRpb246IHtcbiAgICAgIGxpbmU6IGVuZC5saW5lLFxuICAgICAgY29sOiBlbmQuY29sdW1uLFxuICAgICAgc3RhcnRPZmZzZXQ6IGVuZC5vZmZzZXQsXG4gICAgICBlbmRPZmZzZXQ6IGVuZC5vZmZzZXRcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHVua25vd24obm9kZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjb21waWxlIGAnICsgbm9kZS50eXBlICsgJ2Agbm9kZScpO1xufVxuXG5mdW5jdGlvbiBpbmZlck1vZGUobm9kZSkge1xuICB2YXIgaGVhZCA9IG5vZGUudHlwZSA9PT0gJ3Jvb3QnID8gbm9kZS5jaGlsZHJlblswXSA6IG5vZGU7XG5cbiAgaWYgKGhlYWQgJiYgKGhlYWQudHlwZSA9PT0gJ2RvY3R5cGUnIHx8IGhlYWQudGFnTmFtZSA9PT0gJ2h0bWwnKSkge1xuICAgIHJldHVybiBET0NVTUVOVDtcbiAgfVxuXG4gIHJldHVybiBGUkFHTUVOVDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWwgPSByZXF1aXJlKCdoYXN0LXV0aWwtcmF3Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmF3O1xuXG5mdW5jdGlvbiByYXcoKSB7XG4gIHJldHVybiB1dGlsO1xufVxuIiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wia2F0ZXhcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wia2F0ZXhcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNjMpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9oZWxwZXJzX3NsaWNlZFRvQXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfc2xpY2VkVG9BcnJheV9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19zbGljZWRUb0FycmF5X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2NvcmVfanNfZ2V0X2l0ZXJhdG9yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfY29yZV9qc19nZXRfaXRlcmF0b3JfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kb21UcmVlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2ZvbnRNZXRyaWNzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3N5bWJvbHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdXRpbHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19zdHJldGNoeV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X191bml0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cblxuXG4vKiBlc2xpbnQgbm8tY29uc29sZTowICovXG4vKipcbiAqIFRoaXMgbW9kdWxlIGNvbnRhaW5zIGdlbmVyYWwgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGJ1aWxkaW5nXG4gKiBkaWZmZXJlbnQga2luZHMgb2YgZG9tVHJlZSBub2RlcyBpbiBhIGNvbnNpc3RlbnQgbWFubmVyLlxuICovXG5cblxuXG5cblxuXG5cblxuLy8gVGhlIGZvbGxvd2luZyBoYXZlIHRvIGJlIGxvYWRlZCBmcm9tIE1haW4tSXRhbGljIGZvbnQsIHVzaW5nIGNsYXNzIG1haW5pdFxudmFyIG1haW5pdExldHRlcnMgPSBbXCJcXFxcaW1hdGhcIiwgXCLEsVwiLCAvLyBkb3RsZXNzIGlcblwiXFxcXGptYXRoXCIsIFwiyLdcIiwgLy8gZG90bGVzcyBqXG5cIlxcXFxwb3VuZHNcIiwgXCJcXFxcbWF0aHN0ZXJsaW5nXCIsIFwiXFxcXHRleHRzdGVybGluZ1wiLCBcIsKjXCJdO1xuXG4vKipcbiAqIExvb2tzIHVwIHRoZSBnaXZlbiBzeW1ib2wgaW4gZm9udE1ldHJpY3MsIGFmdGVyIGFwcGx5aW5nIGFueSBzeW1ib2xcbiAqIHJlcGxhY2VtZW50cyBkZWZpbmVkIGluIHN5bWJvbC5qc1xuICovXG52YXIgbG9va3VwU3ltYm9sID0gZnVuY3Rpb24gbG9va3VwU3ltYm9sKHZhbHVlLFxuLy8gVE9ETygjOTYzKTogVXNlIGEgdW5pb24gdHlwZSBmb3IgdGhpcy5cbmZvbnRGYW1pbHksIG1vZGUpIHtcbiAgICAvLyBSZXBsYWNlIHRoZSB2YWx1ZSB3aXRoIGl0cyByZXBsYWNlZCB2YWx1ZSBmcm9tIHN5bWJvbC5qc1xuICAgIGlmIChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3N5bWJvbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXVttb2RlXVt2YWx1ZV0gJiYgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19zeW1ib2xzX19bXCJhXCIgLyogZGVmYXVsdCAqL11bbW9kZV1bdmFsdWVdLnJlcGxhY2UpIHtcbiAgICAgICAgdmFsdWUgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3N5bWJvbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXVttb2RlXVt2YWx1ZV0ucmVwbGFjZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBtZXRyaWNzOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2ZvbnRNZXRyaWNzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uZ2V0Q2hhcmFjdGVyTWV0cmljcyh2YWx1ZSwgZm9udEZhbWlseSwgbW9kZSlcbiAgICB9O1xufTtcblxuLyoqXG4gKiBNYWtlcyBhIHN5bWJvbE5vZGUgYWZ0ZXIgdHJhbnNsYXRpb24gdmlhIHRoZSBsaXN0IG9mIHN5bWJvbHMgaW4gc3ltYm9scy5qcy5cbiAqIENvcnJlY3RseSBwdWxscyBvdXQgbWV0cmljcyBmb3IgdGhlIGNoYXJhY3RlciwgYW5kIG9wdGlvbmFsbHkgdGFrZXMgYSBsaXN0IG9mXG4gKiBjbGFzc2VzIHRvIGJlIGF0dGFjaGVkIHRvIHRoZSBub2RlLlxuICpcbiAqIFRPRE86IG1ha2UgYXJndW1lbnQgb3JkZXIgY2xvc2VyIHRvIG1ha2VTcGFuXG4gKiBUT0RPOiBhZGQgYSBzZXBhcmF0ZSBhcmd1bWVudCBmb3IgbWF0aCBjbGFzcyAoZS5nLiBgbW9wYCwgYG1iaW5gKSwgd2hpY2hcbiAqIHNob3VsZCBpZiBwcmVzZW50IGNvbWUgZmlyc3QgaW4gYGNsYXNzZXNgLlxuICogVE9ETygjOTUzKTogTWFrZSBgb3B0aW9uc2AgbWFuZGF0b3J5IGFuZCBhbHdheXMgcGFzcyBpdCBpbi5cbiAqL1xudmFyIG1ha2VTeW1ib2wgPSBmdW5jdGlvbiBtYWtlU3ltYm9sKHZhbHVlLCBmb250RmFtaWx5LCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gICAgdmFyIGxvb2t1cCA9IGxvb2t1cFN5bWJvbCh2YWx1ZSwgZm9udEZhbWlseSwgbW9kZSk7XG4gICAgdmFyIG1ldHJpY3MgPSBsb29rdXAubWV0cmljcztcbiAgICB2YWx1ZSA9IGxvb2t1cC52YWx1ZTtcblxuICAgIHZhciBzeW1ib2xOb2RlID0gdm9pZCAwO1xuICAgIGlmIChtZXRyaWNzKSB7XG4gICAgICAgIHZhciBpdGFsaWMgPSBtZXRyaWNzLml0YWxpYztcbiAgICAgICAgaWYgKG1vZGUgPT09IFwidGV4dFwiKSB7XG4gICAgICAgICAgICBpdGFsaWMgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHN5bWJvbE5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uc3ltYm9sTm9kZSh2YWx1ZSwgbWV0cmljcy5oZWlnaHQsIG1ldHJpY3MuZGVwdGgsIGl0YWxpYywgbWV0cmljcy5za2V3LCBtZXRyaWNzLndpZHRoLCBjbGFzc2VzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUT0RPKGVtaWx5KTogRmlndXJlIG91dCBhIGdvb2Qgd2F5IHRvIG9ubHkgcHJpbnQgdGhpcyBpbiBkZXZlbG9wbWVudFxuICAgICAgICB0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlLndhcm4oXCJObyBjaGFyYWN0ZXIgbWV0cmljcyBmb3IgJ1wiICsgdmFsdWUgKyBcIicgaW4gc3R5bGUgJ1wiICsgZm9udEZhbWlseSArIFwiJ1wiKTtcbiAgICAgICAgc3ltYm9sTm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2RvbVRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5zeW1ib2xOb2RlKHZhbHVlLCAwLCAwLCAwLCAwLCAwLCBjbGFzc2VzKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgICBzeW1ib2xOb2RlLm1heEZvbnRTaXplID0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICAgICAgaWYgKG9wdGlvbnMuc3R5bGUuaXNUaWdodCgpKSB7XG4gICAgICAgICAgICBzeW1ib2xOb2RlLmNsYXNzZXMucHVzaChcIm10aWdodFwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29sb3IgPSBvcHRpb25zLmdldENvbG9yKCk7XG4gICAgICAgIGlmIChjb2xvcikge1xuICAgICAgICAgICAgc3ltYm9sTm9kZS5zdHlsZS5jb2xvciA9IGNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN5bWJvbE5vZGU7XG59O1xuXG4vKipcbiAqIE1ha2VzIGEgc3ltYm9sIGluIE1haW4tUmVndWxhciBvciBBTVMtUmVndWxhci5cbiAqIFVzZWQgZm9yIHJlbCwgYmluLCBvcGVuLCBjbG9zZSwgaW5uZXIsIGFuZCBwdW5jdC5cbiAqXG4gKiBUT0RPKCM5NTMpOiBNYWtlIGBvcHRpb25zYCBtYW5kYXRvcnkgYW5kIGFsd2F5cyBwYXNzIGl0IGluLlxuICovXG52YXIgbWF0aHN5bSA9IGZ1bmN0aW9uIG1hdGhzeW0odmFsdWUsIG1vZGUsIG9wdGlvbnMpIHtcbiAgICB2YXIgY2xhc3NlcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogW107XG5cbiAgICAvLyBEZWNpZGUgd2hhdCBmb250IHRvIHJlbmRlciB0aGUgc3ltYm9sIGluIGJ5IGl0cyBlbnRyeSBpbiB0aGUgc3ltYm9sc1xuICAgIC8vIHRhYmxlLlxuICAgIC8vIEhhdmUgYSBzcGVjaWFsIGNhc2UgZm9yIHdoZW4gdGhlIHZhbHVlID0gXFwgYmVjYXVzZSB0aGUgXFwgaXMgdXNlZCBhcyBhXG4gICAgLy8gdGV4dG9yZCBpbiB1bnN1cHBvcnRlZCBjb21tYW5kIGVycm9ycyBidXQgY2Fubm90IGJlIHBhcnNlZCBhcyBhIHJlZ3VsYXJcbiAgICAvLyB0ZXh0IG9yZGluYWwgYW5kIGlzIHRoZXJlZm9yZSBub3QgcHJlc2VudCBhcyBhIHN5bWJvbCBpbiB0aGUgc3ltYm9sc1xuICAgIC8vIHRhYmxlIGZvciB0ZXh0LCBhcyB3ZWxsIGFzIGEgc3BlY2lhbCBjYXNlIGZvciBib2xkc3ltYm9sIGJlY2F1c2UgaXRcbiAgICAvLyBjYW4gYmUgdXNlZCBmb3IgYm9sZCArIGFuZCAtXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5mb250RmFtaWx5ICYmIG9wdGlvbnMuZm9udEZhbWlseSA9PT0gXCJib2xkc3ltYm9sXCIgJiYgbG9va3VwU3ltYm9sKHZhbHVlLCBcIk1haW4tQm9sZFwiLCBtb2RlKS5tZXRyaWNzKSB7XG4gICAgICAgIHJldHVybiBtYWtlU3ltYm9sKHZhbHVlLCBcIk1haW4tQm9sZFwiLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChbXCJtYXRoYmZcIl0pKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBcIlxcXFxcIiB8fCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3N5bWJvbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXVttb2RlXVt2YWx1ZV0uZm9udCA9PT0gXCJtYWluXCIpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VTeW1ib2wodmFsdWUsIFwiTWFpbi1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBtYWtlU3ltYm9sKHZhbHVlLCBcIkFNUy1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KFtcImFtc3JtXCJdKSk7XG4gICAgfVxufTtcblxuLyoqXG4gKiBNYWtlcyBhIHN5bWJvbCBpbiB0aGUgZGVmYXVsdCBmb250IGZvciBtYXRob3JkcyBhbmQgdGV4dG9yZHMuXG4gKi9cbnZhciBtYXRoRGVmYXVsdCA9IGZ1bmN0aW9uIG1hdGhEZWZhdWx0KHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLCB0eXBlKSB7XG4gICAgaWYgKHR5cGUgPT09IFwibWF0aG9yZFwiKSB7XG4gICAgICAgIHZhciBmb250TG9va3VwID0gbWF0aGl0KHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKTtcbiAgICAgICAgcmV0dXJuIG1ha2VTeW1ib2wodmFsdWUsIGZvbnRMb29rdXAuZm9udE5hbWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KFtmb250TG9va3VwLmZvbnRDbGFzc10pKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwidGV4dG9yZFwiKSB7XG4gICAgICAgIHZhciBmb250ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19zeW1ib2xzX19bXCJhXCIgLyogZGVmYXVsdCAqL11bbW9kZV1bdmFsdWVdICYmIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fc3ltYm9sc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dW21vZGVdW3ZhbHVlXS5mb250O1xuICAgICAgICBpZiAoZm9udCA9PT0gXCJhbXNcIikge1xuICAgICAgICAgICAgdmFyIF9mb250TmFtZSA9IHJldHJpZXZlVGV4dEZvbnROYW1lKFwiYW1zcm1cIiwgb3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSk7XG4gICAgICAgICAgICByZXR1cm4gbWFrZVN5bWJvbCh2YWx1ZSwgX2ZvbnROYW1lLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChcImFtc3JtXCIsIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIChmb250ID09PSBcIm1haW5cIikge1xuICAgICAgICAgICAgdmFyIF9mb250TmFtZTIgPSByZXRyaWV2ZVRleHRGb250TmFtZShcInRleHRybVwiLCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKTtcbiAgICAgICAgICAgIHJldHVybiBtYWtlU3ltYm9sKHZhbHVlLCBfZm9udE5hbWUyLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmV4cGVjdGVkIHR5cGU6IFwiICsgdHlwZSArIFwiIGluIG1hdGhEZWZhdWx0XCIpO1xuICAgIH1cbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGljaCBvZiB0aGUgdHdvIGZvbnQgbmFtZXMgKE1haW4tSXRhbGljIGFuZCBNYXRoLUl0YWxpYykgYW5kXG4gKiBjb3JyZXNwb25kaW5nIHN0eWxlIHRhZ3MgKG1haW5pdCBvciBtYXRoaXQpIHRvIHVzZSBmb3IgZm9udCBcIm1hdGhpdFwiLFxuICogZGVwZW5kaW5nIG9uIHRoZSBzeW1ib2wuICBVc2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZvbnRNYXAgZm9yIGZvbnRcbiAqIFwibWF0aGl0XCIuXG4gKi9cbnZhciBtYXRoaXQgPSBmdW5jdGlvbiBtYXRoaXQodmFsdWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpIHtcbiAgICBpZiAoL1swLTldLy50ZXN0KHZhbHVlLmNoYXJBdCgwKSkgfHxcbiAgICAvLyBnbHlwaHMgZm9yIFxcaW1hdGggYW5kIFxcam1hdGggZG8gbm90IGV4aXN0IGluIE1hdGgtSXRhbGljIHNvIHdlXG4gICAgLy8gbmVlZCB0byB1c2UgTWFpbi1JdGFsaWMgaW5zdGVhZFxuICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5jb250YWlucyhtYWluaXRMZXR0ZXJzLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZvbnROYW1lOiBcIk1haW4tSXRhbGljXCIsXG4gICAgICAgICAgICBmb250Q2xhc3M6IFwibWFpbml0XCJcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9udE5hbWU6IFwiTWF0aC1JdGFsaWNcIixcbiAgICAgICAgICAgIGZvbnRDbGFzczogXCJtYXRoaXRcIlxuICAgICAgICB9O1xuICAgIH1cbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGljaCBvZiB0aGUgdHdvIGZvbnQgbmFtZXMgKE1haW4tQm9sZCBhbmQgTWF0aC1Cb2xkSXRhbGljKSBhbmRcbiAqIGNvcnJlc3BvbmRpbmcgc3R5bGUgdGFncyAobWF0aGJmIG9yIGJvbGRzeW1ib2wpIHRvIHVzZSBmb3IgZm9udCBcImJvbGRzeW1ib2xcIixcbiAqIGRlcGVuZGluZyBvbiB0aGUgc3ltYm9sLiAgVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBmb250TWFwIGZvciBmb250XG4gKiBcImJvbGRzeW1ib2xcIi5cbiAqL1xudmFyIGJvbGRzeW1ib2wgPSBmdW5jdGlvbiBib2xkc3ltYm9sKHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gICAgaWYgKGxvb2t1cFN5bWJvbCh2YWx1ZSwgXCJNYXRoLUJvbGRJdGFsaWNcIiwgbW9kZSkubWV0cmljcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9udE5hbWU6IFwiTWF0aC1Cb2xkSXRhbGljXCIsXG4gICAgICAgICAgICBmb250Q2xhc3M6IFwiYm9sZHN5bWJvbFwiXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU29tZSBnbHlwaHMgZG8gbm90IGV4aXN0IGluIE1hdGgtQm9sZEl0YWxpYyBzbyB3ZSBuZWVkIHRvIHVzZVxuICAgICAgICAvLyBNYWluLUJvbGQgaW5zdGVhZC5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZvbnROYW1lOiBcIk1haW4tQm9sZFwiLFxuICAgICAgICAgICAgZm9udENsYXNzOiBcIm1hdGhiZlwiXG4gICAgICAgIH07XG4gICAgfVxufTtcblxuLyoqXG4gKiBNYWtlcyBlaXRoZXIgYSBtYXRob3JkIG9yIHRleHRvcmQgaW4gdGhlIGNvcnJlY3QgZm9udCBhbmQgY29sb3IuXG4gKi9cbnZhciBtYWtlT3JkID0gZnVuY3Rpb24gbWFrZU9yZChncm91cCwgb3B0aW9ucywgdHlwZSkge1xuICAgIHZhciBtb2RlID0gZ3JvdXAubW9kZTtcbiAgICB2YXIgdmFsdWUgPSBncm91cC52YWx1ZTtcblxuICAgIHZhciBjbGFzc2VzID0gW1wibW9yZFwiXTtcblxuICAgIHZhciBmb250RmFtaWx5ID0gb3B0aW9ucy5mb250RmFtaWx5O1xuICAgIGlmIChmb250RmFtaWx5KSB7XG4gICAgICAgIHZhciBfZm9udE5hbWUzID0gdm9pZCAwO1xuICAgICAgICB2YXIgZm9udENsYXNzZXMgPSB2b2lkIDA7XG4gICAgICAgIGlmIChmb250RmFtaWx5ID09PSBcImJvbGRzeW1ib2xcIikge1xuICAgICAgICAgICAgdmFyIGZvbnREYXRhID0gYm9sZHN5bWJvbCh2YWx1ZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcyk7XG4gICAgICAgICAgICBfZm9udE5hbWUzID0gZm9udERhdGEuZm9udE5hbWU7XG4gICAgICAgICAgICBmb250Q2xhc3NlcyA9IFtmb250RGF0YS5mb250Q2xhc3NdO1xuICAgICAgICB9IGVsc2UgaWYgKGZvbnRGYW1pbHkgPT09IFwibWF0aGl0XCIgfHwgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmNvbnRhaW5zKG1haW5pdExldHRlcnMsIHZhbHVlKSkge1xuICAgICAgICAgICAgdmFyIF9mb250RGF0YSA9IG1hdGhpdCh2YWx1ZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcyk7XG4gICAgICAgICAgICBfZm9udE5hbWUzID0gX2ZvbnREYXRhLmZvbnROYW1lO1xuICAgICAgICAgICAgZm9udENsYXNzZXMgPSBbX2ZvbnREYXRhLmZvbnRDbGFzc107XG4gICAgICAgIH0gZWxzZSBpZiAoZm9udEZhbWlseS5pbmRleE9mKFwibWF0aFwiKSAhPT0gLTEgfHwgbW9kZSA9PT0gXCJtYXRoXCIpIHtcbiAgICAgICAgICAgIC8vIFRvIHN1cHBvcnQgb2xkIGZvbnQgZnVuY3Rpb25zIChpLmUuIFxccm0gXFxzZiBldGMuKSBvciBtYXRoIG1vZGUuXG4gICAgICAgICAgICBfZm9udE5hbWUzID0gZm9udE1hcFtmb250RmFtaWx5XS5mb250TmFtZTtcbiAgICAgICAgICAgIGZvbnRDbGFzc2VzID0gW2ZvbnRGYW1pbHldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX2ZvbnROYW1lMyA9IHJldHJpZXZlVGV4dEZvbnROYW1lKGZvbnRGYW1pbHksIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGUpO1xuICAgICAgICAgICAgZm9udENsYXNzZXMgPSBbZm9udEZhbWlseSwgb3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvb2t1cFN5bWJvbCh2YWx1ZSwgX2ZvbnROYW1lMywgbW9kZSkubWV0cmljcykge1xuICAgICAgICAgICAgcmV0dXJuIG1ha2VTeW1ib2wodmFsdWUsIF9mb250TmFtZTMsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KGZvbnRDbGFzc2VzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbWF0aERlZmF1bHQodmFsdWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMsIHR5cGUpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG1hdGhEZWZhdWx0KHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLCB0eXBlKTtcbiAgICB9XG59O1xuXG4vKipcbiAqIENvbWJpbmUgYXMgbWFueSBjaGFyYWN0ZXJzIGFzIHBvc3NpYmxlIGluIHRoZSBnaXZlbiBhcnJheSBvZiBjaGFyYWN0ZXJzXG4gKiB2aWEgdGhlaXIgdHJ5Q29tYmluZSBtZXRob2QuXG4gKi9cbnZhciB0cnlDb21iaW5lQ2hhcnMgPSBmdW5jdGlvbiB0cnlDb21iaW5lQ2hhcnMoY2hhcnMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICBpZiAoY2hhcnNbaV0udHJ5Q29tYmluZShjaGFyc1tpICsgMV0pKSB7XG4gICAgICAgICAgICBjaGFycy5zcGxpY2UoaSArIDEsIDEpO1xuICAgICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGFycztcbn07XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBoZWlnaHQsIGRlcHRoLCBhbmQgbWF4Rm9udFNpemUgb2YgYW4gZWxlbWVudCBiYXNlZCBvbiBpdHNcbiAqIGNoaWxkcmVuLlxuICovXG52YXIgc2l6ZUVsZW1lbnRGcm9tQ2hpbGRyZW4gPSBmdW5jdGlvbiBzaXplRWxlbWVudEZyb21DaGlsZHJlbihlbGVtKSB7XG4gICAgdmFyIGhlaWdodCA9IDA7XG4gICAgdmFyIGRlcHRoID0gMDtcbiAgICB2YXIgbWF4Rm9udFNpemUgPSAwO1xuXG4gICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlO1xuICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvciA9IGZhbHNlO1xuICAgIHZhciBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2NvcmVfanNfZ2V0X2l0ZXJhdG9yX19fZGVmYXVsdCgpKGVsZW0uY2hpbGRyZW4pLCBfc3RlcDsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gKF9zdGVwID0gX2l0ZXJhdG9yLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBfc3RlcC52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKGNoaWxkLmhlaWdodCA+IGhlaWdodCkge1xuICAgICAgICAgICAgICAgIGhlaWdodCA9IGNoaWxkLmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGlsZC5kZXB0aCA+IGRlcHRoKSB7XG4gICAgICAgICAgICAgICAgZGVwdGggPSBjaGlsZC5kZXB0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGlsZC5tYXhGb250U2l6ZSA+IG1heEZvbnRTaXplKSB7XG4gICAgICAgICAgICAgICAgbWF4Rm9udFNpemUgPSBjaGlsZC5tYXhGb250U2l6ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7XG4gICAgICAgIF9pdGVyYXRvckVycm9yID0gZXJyO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gJiYgX2l0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgICAgICAgIF9pdGVyYXRvci5yZXR1cm4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcikge1xuICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZWxlbS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgZWxlbS5kZXB0aCA9IGRlcHRoO1xuICAgIGVsZW0ubWF4Rm9udFNpemUgPSBtYXhGb250U2l6ZTtcbn07XG5cbi8qKlxuICogTWFrZXMgYSBzcGFuIHdpdGggdGhlIGdpdmVuIGxpc3Qgb2YgY2xhc3NlcywgbGlzdCBvZiBjaGlsZHJlbiwgYW5kIG9wdGlvbnMuXG4gKlxuICogVE9ETygjOTUzKTogRW5zdXJlIHRoYXQgYG9wdGlvbnNgIGlzIGFsd2F5cyBwcm92aWRlZCAoY3VycmVudGx5IHNvbWUgY2FsbFxuICogc2l0ZXMgZG9uJ3QgcGFzcyBpdCkgYW5kIG1ha2UgdGhlIHR5cGUgYmVsb3cgbWFuZGF0b3J5LlxuICogVE9ETzogYWRkIGEgc2VwYXJhdGUgYXJndW1lbnQgZm9yIG1hdGggY2xhc3MgKGUuZy4gYG1vcGAsIGBtYmluYCksIHdoaWNoXG4gKiBzaG91bGQgaWYgcHJlc2VudCBjb21lIGZpcnN0IGluIGBjbGFzc2VzYC5cbiAqL1xudmFyIG1ha2VTcGFuID0gZnVuY3Rpb24gbWFrZVNwYW4oY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMsIHN0eWxlKSB7XG4gICAgdmFyIHNwYW4gPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uc3BhbihjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucywgc3R5bGUpO1xuXG4gICAgc2l6ZUVsZW1lbnRGcm9tQ2hpbGRyZW4oc3Bhbik7XG5cbiAgICByZXR1cm4gc3Bhbjtcbn07XG5cbnZhciBtYWtlTGluZVNwYW4gPSBmdW5jdGlvbiBtYWtlTGluZVNwYW4oY2xhc3NOYW1lLCBvcHRpb25zKSB7XG4gICAgLy8gUmV0dXJuIGEgc3BhbiB3aXRoIGFuIFNWRyBpbWFnZSBvZiBhIGhvcml6b250YWwgbGluZS4gVGhlIFNWRyBwYXRoXG4gICAgLy8gZmlsbHMgdGhlIG1pZGRsZSBmaWZ0aCBvZiB0aGUgc3Bhbi4gV2Ugd2FudCBhbiBleHRyYSB0YWxsIHNwYW5cbiAgICAvLyBiZWNhdXNlIENocm9tZSB3aWxsIHNvbWV0aW1lcyBub3QgZGlzcGxheSBhIHNwYW4gdGhhdCBpcyAwLjA0ZW0gdGFsbC5cbiAgICB2YXIgbGluZUhlaWdodCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWZhdWx0UnVsZVRoaWNrbmVzcztcbiAgICB2YXIgbGluZSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fc3RyZXRjaHlfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5ydWxlU3BhbihjbGFzc05hbWUsIGxpbmVIZWlnaHQsIG9wdGlvbnMpO1xuICAgIGxpbmUuaGVpZ2h0ID0gbGluZUhlaWdodDtcbiAgICBsaW5lLnN0eWxlLmhlaWdodCA9IDUgKiBsaW5lLmhlaWdodCArIFwiZW1cIjtcbiAgICBsaW5lLm1heEZvbnRTaXplID0gMS4wO1xuICAgIHJldHVybiBsaW5lO1xufTtcblxuLyoqXG4gKiBNYWtlcyBhbiBhbmNob3Igd2l0aCB0aGUgZ2l2ZW4gaHJlZiwgbGlzdCBvZiBjbGFzc2VzLCBsaXN0IG9mIGNoaWxkcmVuLFxuICogYW5kIG9wdGlvbnMuXG4gKi9cbnZhciBtYWtlQW5jaG9yID0gZnVuY3Rpb24gbWFrZUFuY2hvcihocmVmLCBjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucykge1xuICAgIHZhciBhbmNob3IgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uYW5jaG9yKGhyZWYsIGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zKTtcblxuICAgIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuKGFuY2hvcik7XG5cbiAgICByZXR1cm4gYW5jaG9yO1xufTtcblxuLyoqXG4gKiBNYWtlcyBhIGRvY3VtZW50IGZyYWdtZW50IHdpdGggdGhlIGdpdmVuIGxpc3Qgb2YgY2hpbGRyZW4uXG4gKi9cbnZhciBtYWtlRnJhZ21lbnQgPSBmdW5jdGlvbiBtYWtlRnJhZ21lbnQoY2hpbGRyZW4pIHtcbiAgICB2YXIgZnJhZ21lbnQgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uZG9jdW1lbnRGcmFnbWVudChjaGlsZHJlbik7XG5cbiAgICBzaXplRWxlbWVudEZyb21DaGlsZHJlbihmcmFnbWVudCk7XG5cbiAgICByZXR1cm4gZnJhZ21lbnQ7XG59O1xuXG4vLyBUaGVzZSBhcmUgZXhhY3Qgb2JqZWN0IHR5cGVzIHRvIGNhdGNoIHR5cG9zIGluIHRoZSBuYW1lcyBvZiB0aGUgb3B0aW9uYWwgZmllbGRzLlxuXG5cbi8vIEEgbGlzdCBvZiBjaGlsZCBvciBrZXJuIG5vZGVzIHRvIGJlIHN0YWNrZWQgb24gdG9wIG9mIGVhY2ggb3RoZXIgKGkuZS4gdGhlXG4vLyBmaXJzdCBlbGVtZW50IHdpbGwgYmUgYXQgdGhlIGJvdHRvbSwgYW5kIHRoZSBsYXN0IGF0IHRoZSB0b3ApLlxuXG5cbi8vIENvbXB1dGVzIHRoZSB1cGRhdGVkIGBjaGlsZHJlbmAgbGlzdCBhbmQgdGhlIG92ZXJhbGwgZGVwdGguXG4vL1xuLy8gVGhpcyBoZWxwZXIgZnVuY3Rpb24gZm9yIG1ha2VWTGlzdCBtYWtlcyBpdCBlYXNpZXIgdG8gZW5mb3JjZSB0eXBlIHNhZmV0eSBieVxuLy8gYWxsb3dpbmcgZWFybHkgZXhpdHMgKHJldHVybnMpIGluIHRoZSBsb2dpYy5cbnZhciBnZXRWTGlzdENoaWxkcmVuQW5kRGVwdGggPSBmdW5jdGlvbiBnZXRWTGlzdENoaWxkcmVuQW5kRGVwdGgocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiaW5kaXZpZHVhbFNoaWZ0XCIpIHtcbiAgICAgICAgdmFyIG9sZENoaWxkcmVuID0gcGFyYW1zLmNoaWxkcmVuO1xuICAgICAgICB2YXIgX2NoaWxkcmVuID0gW29sZENoaWxkcmVuWzBdXTtcblxuICAgICAgICAvLyBBZGQgaW4ga2VybnMgdG8gdGhlIGxpc3Qgb2YgcGFyYW1zLmNoaWxkcmVuIHRvIGdldCBlYWNoIGVsZW1lbnQgdG8gYmVcbiAgICAgICAgLy8gc2hpZnRlZCB0byB0aGUgY29ycmVjdCBzcGVjaWZpZWQgc2hpZnRcbiAgICAgICAgdmFyIF9kZXB0aCA9IC1vbGRDaGlsZHJlblswXS5zaGlmdCAtIG9sZENoaWxkcmVuWzBdLmVsZW0uZGVwdGg7XG4gICAgICAgIHZhciBjdXJyUG9zID0gX2RlcHRoO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IG9sZENoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZGlmZiA9IC1vbGRDaGlsZHJlbltpXS5zaGlmdCAtIGN1cnJQb3MgLSBvbGRDaGlsZHJlbltpXS5lbGVtLmRlcHRoO1xuICAgICAgICAgICAgdmFyIF9zaXplID0gZGlmZiAtIChvbGRDaGlsZHJlbltpIC0gMV0uZWxlbS5oZWlnaHQgKyBvbGRDaGlsZHJlbltpIC0gMV0uZWxlbS5kZXB0aCk7XG5cbiAgICAgICAgICAgIGN1cnJQb3MgPSBjdXJyUG9zICsgZGlmZjtcblxuICAgICAgICAgICAgX2NoaWxkcmVuLnB1c2goeyB0eXBlOiBcImtlcm5cIiwgc2l6ZTogX3NpemUgfSk7XG4gICAgICAgICAgICBfY2hpbGRyZW4ucHVzaChvbGRDaGlsZHJlbltpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBjaGlsZHJlbjogX2NoaWxkcmVuLCBkZXB0aDogX2RlcHRoIH07XG4gICAgfVxuXG4gICAgdmFyIGRlcHRoID0gdm9pZCAwO1xuICAgIGlmIChwYXJhbXMucG9zaXRpb25UeXBlID09PSBcInRvcFwiKSB7XG4gICAgICAgIC8vIFdlIGFsd2F5cyBzdGFydCBhdCB0aGUgYm90dG9tLCBzbyBjYWxjdWxhdGUgdGhlIGJvdHRvbSBieSBhZGRpbmcgdXBcbiAgICAgICAgLy8gYWxsIHRoZSBzaXplc1xuICAgICAgICB2YXIgYm90dG9tID0gcGFyYW1zLnBvc2l0aW9uRGF0YTtcbiAgICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZTtcbiAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMiA9IGZhbHNlO1xuICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IyID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfY29yZV9qc19nZXRfaXRlcmF0b3JfX19kZWZhdWx0KCkocGFyYW1zLmNoaWxkcmVuKSwgX3N0ZXAyOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gKF9zdGVwMiA9IF9pdGVyYXRvcjIubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gX3N0ZXAyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgYm90dG9tIC09IGNoaWxkLnR5cGUgPT09IFwia2VyblwiID8gY2hpbGQuc2l6ZSA6IGNoaWxkLmVsZW0uaGVpZ2h0ICsgY2hpbGQuZWxlbS5kZXB0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIgPSB0cnVlO1xuICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3IyID0gZXJyO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yICYmIF9pdGVyYXRvcjIucmV0dXJuKSB7XG4gICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIucmV0dXJuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkZXB0aCA9IGJvdHRvbTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiYm90dG9tXCIpIHtcbiAgICAgICAgZGVwdGggPSAtcGFyYW1zLnBvc2l0aW9uRGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IHBhcmFtcy5jaGlsZHJlblswXTtcbiAgICAgICAgaWYgKGZpcnN0Q2hpbGQudHlwZSAhPT0gXCJlbGVtXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlyc3QgY2hpbGQgbXVzdCBoYXZlIHR5cGUgXCJlbGVtXCIuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwic2hpZnRcIikge1xuICAgICAgICAgICAgZGVwdGggPSAtZmlyc3RDaGlsZC5lbGVtLmRlcHRoIC0gcGFyYW1zLnBvc2l0aW9uRGF0YTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMucG9zaXRpb25UeXBlID09PSBcImZpcnN0QmFzZWxpbmVcIikge1xuICAgICAgICAgICAgZGVwdGggPSAtZmlyc3RDaGlsZC5lbGVtLmRlcHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwb3NpdGlvblR5cGUgXCIgKyBwYXJhbXMucG9zaXRpb25UeXBlICsgXCIuXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGNoaWxkcmVuOiBwYXJhbXMuY2hpbGRyZW4sIGRlcHRoOiBkZXB0aCB9O1xufTtcblxuLyoqXG4gKiBNYWtlcyBhIHZlcnRpY2FsIGxpc3QgYnkgc3RhY2tpbmcgZWxlbWVudHMgYW5kIGtlcm5zIG9uIHRvcCBvZiBlYWNoIG90aGVyLlxuICogQWxsb3dzIGZvciBtYW55IGRpZmZlcmVudCB3YXlzIG9mIHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uaW5nIG1ldGhvZC5cbiAqXG4gKiBTZWUgVkxpc3RQYXJhbSBkb2N1bWVudGF0aW9uIGFib3ZlLlxuICovXG52YXIgbWFrZVZMaXN0ID0gZnVuY3Rpb24gbWFrZVZMaXN0KHBhcmFtcywgb3B0aW9ucykge1xuICAgIHZhciBfZ2V0Vkxpc3RDaGlsZHJlbkFuZEQgPSBnZXRWTGlzdENoaWxkcmVuQW5kRGVwdGgocGFyYW1zKSxcbiAgICAgICAgY2hpbGRyZW4gPSBfZ2V0Vkxpc3RDaGlsZHJlbkFuZEQuY2hpbGRyZW4sXG4gICAgICAgIGRlcHRoID0gX2dldFZMaXN0Q2hpbGRyZW5BbmRELmRlcHRoO1xuXG4gICAgLy8gQ3JlYXRlIGEgc3RydXQgdGhhdCBpcyB0YWxsZXIgdGhhbiBhbnkgbGlzdCBpdGVtLiBUaGUgc3RydXQgaXMgYWRkZWQgdG9cbiAgICAvLyBlYWNoIGl0ZW0sIHdoZXJlIGl0IHdpbGwgZGV0ZXJtaW5lIHRoZSBpdGVtJ3MgYmFzZWxpbmUuIFNpbmNlIGl0IGhhc1xuICAgIC8vIGBvdmVyZmxvdzpoaWRkZW5gLCB0aGUgc3RydXQncyB0b3AgZWRnZSB3aWxsIHNpdCBvbiB0aGUgaXRlbSdzIGxpbmUgYm94J3NcbiAgICAvLyB0b3AgZWRnZSBhbmQgdGhlIHN0cnV0J3MgYm90dG9tIGVkZ2Ugd2lsbCBzaXQgb24gdGhlIGl0ZW0ncyBiYXNlbGluZSxcbiAgICAvLyB3aXRoIG5vIGFkZGl0aW9uYWwgbGluZS1oZWlnaHQgc3BhY2luZy4gVGhpcyBhbGxvd3MgdGhlIGl0ZW0gYmFzZWxpbmUgdG9cbiAgICAvLyBiZSBwb3NpdGlvbmVkIHByZWNpc2VseSB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IGZvbnQgYXNjZW50IGFuZFxuICAgIC8vIGxpbmUtaGVpZ2h0LlxuXG5cbiAgICB2YXIgcHN0cnV0U2l6ZSA9IDA7XG4gICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZTtcbiAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzID0gZmFsc2U7XG4gICAgdmFyIF9pdGVyYXRvckVycm9yMyA9IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fX2RlZmF1bHQoKShjaGlsZHJlbiksIF9zdGVwMzsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IChfc3RlcDMgPSBfaXRlcmF0b3IzLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gX3N0ZXAzLnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gXCJlbGVtXCIpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2VsZW0gPSBjaGlsZC5lbGVtO1xuICAgICAgICAgICAgICAgIHBzdHJ1dFNpemUgPSBNYXRoLm1heChwc3RydXRTaXplLCBfZWxlbS5tYXhGb250U2l6ZSwgX2VsZW0uaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjMgPSB0cnVlO1xuICAgICAgICBfaXRlcmF0b3JFcnJvcjMgPSBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgJiYgX2l0ZXJhdG9yMy5yZXR1cm4pIHtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IzLnJldHVybigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMykge1xuICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBzdHJ1dFNpemUgKz0gMjtcbiAgICB2YXIgcHN0cnV0ID0gbWFrZVNwYW4oW1wicHN0cnV0XCJdLCBbXSk7XG4gICAgcHN0cnV0LnN0eWxlLmhlaWdodCA9IHBzdHJ1dFNpemUgKyBcImVtXCI7XG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgbGlzdCBvZiBhY3R1YWwgY2hpbGRyZW4gYXQgdGhlIGNvcnJlY3Qgb2Zmc2V0c1xuICAgIHZhciByZWFsQ2hpbGRyZW4gPSBbXTtcbiAgICB2YXIgbWluUG9zID0gZGVwdGg7XG4gICAgdmFyIG1heFBvcyA9IGRlcHRoO1xuICAgIHZhciBjdXJyUG9zID0gZGVwdGg7XG4gICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240ID0gdHJ1ZTtcbiAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3I0ID0gZmFsc2U7XG4gICAgdmFyIF9pdGVyYXRvckVycm9yNCA9IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjQgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fX2RlZmF1bHQoKShjaGlsZHJlbiksIF9zdGVwNDsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IChfc3RlcDQgPSBfaXRlcmF0b3I0Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240ID0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFyIF9jaGlsZCA9IF9zdGVwNC52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKF9jaGlsZC50eXBlID09PSBcImtlcm5cIikge1xuICAgICAgICAgICAgICAgIGN1cnJQb3MgKz0gX2NoaWxkLnNpemU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBfZWxlbTIgPSBfY2hpbGQuZWxlbTtcbiAgICAgICAgICAgICAgICB2YXIgY2xhc3NlcyA9IF9jaGlsZC53cmFwcGVyQ2xhc3NlcyB8fCBbXTtcbiAgICAgICAgICAgICAgICB2YXIgc3R5bGUgPSBfY2hpbGQud3JhcHBlclN0eWxlIHx8IHt9O1xuXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkV3JhcCA9IG1ha2VTcGFuKGNsYXNzZXMsIFtwc3RydXQsIF9lbGVtMl0sIHVuZGVmaW5lZCwgc3R5bGUpO1xuICAgICAgICAgICAgICAgIGNoaWxkV3JhcC5zdHlsZS50b3AgPSAtcHN0cnV0U2l6ZSAtIGN1cnJQb3MgLSBfZWxlbTIuZGVwdGggKyBcImVtXCI7XG4gICAgICAgICAgICAgICAgaWYgKF9jaGlsZC5tYXJnaW5MZWZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkV3JhcC5zdHlsZS5tYXJnaW5MZWZ0ID0gX2NoaWxkLm1hcmdpbkxlZnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfY2hpbGQubWFyZ2luUmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRXcmFwLnN0eWxlLm1hcmdpblJpZ2h0ID0gX2NoaWxkLm1hcmdpblJpZ2h0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlYWxDaGlsZHJlbi5wdXNoKGNoaWxkV3JhcCk7XG4gICAgICAgICAgICAgICAgY3VyclBvcyArPSBfZWxlbTIuaGVpZ2h0ICsgX2VsZW0yLmRlcHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWluUG9zID0gTWF0aC5taW4obWluUG9zLCBjdXJyUG9zKTtcbiAgICAgICAgICAgIG1heFBvcyA9IE1hdGgubWF4KG1heFBvcywgY3VyclBvcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgdmxpc3QgY29udGVudHMgZ28gaW4gYSB0YWJsZS1jZWxsIHdpdGggYHZlcnRpY2FsLWFsaWduOmJvdHRvbWAuXG4gICAgICAgIC8vIFRoaXMgY2VsbCdzIGJvdHRvbSBlZGdlIHdpbGwgZGV0ZXJtaW5lIHRoZSBjb250YWluaW5nIHRhYmxlJ3MgYmFzZWxpbmVcbiAgICAgICAgLy8gd2l0aG91dCBvdmVybHkgZXhwYW5kaW5nIHRoZSBjb250YWluaW5nIGxpbmUtYm94LlxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjQgPSB0cnVlO1xuICAgICAgICBfaXRlcmF0b3JFcnJvcjQgPSBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgJiYgX2l0ZXJhdG9yNC5yZXR1cm4pIHtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0LnJldHVybigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yNCkge1xuICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciB2bGlzdCA9IG1ha2VTcGFuKFtcInZsaXN0XCJdLCByZWFsQ2hpbGRyZW4pO1xuICAgIHZsaXN0LnN0eWxlLmhlaWdodCA9IG1heFBvcyArIFwiZW1cIjtcblxuICAgIC8vIEEgc2Vjb25kIHJvdyBpcyB1c2VkIGlmIG5lY2Vzc2FyeSB0byByZXByZXNlbnQgdGhlIHZsaXN0J3MgZGVwdGguXG4gICAgdmFyIHJvd3MgPSB2b2lkIDA7XG4gICAgaWYgKG1pblBvcyA8IDApIHtcbiAgICAgICAgdmFyIGRlcHRoU3RydXQgPSBtYWtlU3BhbihbXCJ2bGlzdFwiXSwgW10pO1xuICAgICAgICBkZXB0aFN0cnV0LnN0eWxlLmhlaWdodCA9IC1taW5Qb3MgKyBcImVtXCI7XG5cbiAgICAgICAgLy8gU2FmYXJpIHdhbnRzIHRoZSBmaXJzdCByb3cgdG8gaGF2ZSBpbmxpbmUgY29udGVudDsgb3RoZXJ3aXNlIGl0XG4gICAgICAgIC8vIHB1dHMgdGhlIGJvdHRvbSBvZiB0aGUgKnNlY29uZCogcm93IG9uIHRoZSBiYXNlbGluZS5cbiAgICAgICAgdmFyIHRvcFN0cnV0ID0gbWFrZVNwYW4oW1widmxpc3Qtc1wiXSwgW25ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2RvbVRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5zeW1ib2xOb2RlKFwiXFx1MjAwQlwiKV0pO1xuXG4gICAgICAgIHJvd3MgPSBbbWFrZVNwYW4oW1widmxpc3QtclwiXSwgW3ZsaXN0LCB0b3BTdHJ1dF0pLCBtYWtlU3BhbihbXCJ2bGlzdC1yXCJdLCBbZGVwdGhTdHJ1dF0pXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByb3dzID0gW21ha2VTcGFuKFtcInZsaXN0LXJcIl0sIFt2bGlzdF0pXTtcbiAgICB9XG5cbiAgICB2YXIgdnRhYmxlID0gbWFrZVNwYW4oW1widmxpc3QtdFwiXSwgcm93cyk7XG4gICAgaWYgKHJvd3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIHZ0YWJsZS5jbGFzc2VzLnB1c2goXCJ2bGlzdC10MlwiKTtcbiAgICB9XG4gICAgdnRhYmxlLmhlaWdodCA9IG1heFBvcztcbiAgICB2dGFibGUuZGVwdGggPSAtbWluUG9zO1xuICAgIHJldHVybiB2dGFibGU7XG59O1xuXG4vLyBDb252ZXJ0cyB2ZXJiIGdyb3VwIGludG8gYm9keSBzdHJpbmcsIGRlYWxpbmcgd2l0aCBcXHZlcmIqIGZvcm1cbnZhciBtYWtlVmVyYiA9IGZ1bmN0aW9uIG1ha2VWZXJiKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gVE9ETygjODkyKTogTWFrZSBQYXJzZU5vZGUgdHlwZS1zYWZlIGFuZCBjb25maXJtIGBncm91cC50eXBlYCB0byBndWFyYW50ZWVcbiAgICAvLyB0aGF0IGBncm91cC52YWx1ZS5ib2R5YCBpcyBvZiB0eXBlIHN0cmluZy5cbiAgICB2YXIgdGV4dCA9IGdyb3VwLnZhbHVlLmJvZHk7XG4gICAgaWYgKGdyb3VwLnZhbHVlLnN0YXIpIHtcbiAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvIC9nLCBcIlxcdTI0MjNcIik7IC8vIE9wZW4gQm94XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvIC9nLCAnXFx4QTAnKTsgLy8gTm8tQnJlYWsgU3BhY2VcbiAgICAgICAgLy8gKHNvIHRoYXQsIGluIHBhcnRpY3VsYXIsIHNwYWNlcyBkb24ndCBjb2FsZXNjZSlcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG59O1xuXG4vLyBHbHVlIGlzIGEgY29uY2VwdCBmcm9tIFRlWCB3aGljaCBpcyBhIGZsZXhpYmxlIHNwYWNlIGJldHdlZW4gZWxlbWVudHMgaW5cbi8vIGVpdGhlciBhIHZlcnRpY2FsIG9yIGhvcml6b250YWwgbGlzdC4gIEluIEthVGVYLCBhdCBsZWFzdCBmb3Igbm93LCBpdCdzXG4vLyBzdGF0aWMgc3BhY2UgYmV0d2VlbiBlbGVtZW50cyBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxudmFyIG1ha2VHbHVlID0gZnVuY3Rpb24gbWFrZUdsdWUobWVhc3VyZW1lbnQsIG9wdGlvbnMpIHtcbiAgICAvLyBNYWtlIGFuIGVtcHR5IHNwYW4gZm9yIHRoZSBydWxlXG4gICAgdmFyIHJ1bGUgPSBtYWtlU3BhbihbXCJtb3JkXCIsIFwicnVsZVwiXSwgW10sIG9wdGlvbnMpO1xuICAgIHZhciBzaXplID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fdW5pdHNfX1tcImFcIiAvKiBjYWxjdWxhdGVTaXplICovXSkobWVhc3VyZW1lbnQsIG9wdGlvbnMpO1xuICAgIHJ1bGUuc3R5bGUubWFyZ2luUmlnaHQgPSBzaXplICsgXCJlbVwiO1xuICAgIHJldHVybiBydWxlO1xufTtcblxuLy8gVGFrZXMgYW4gT3B0aW9ucyBvYmplY3QsIGFuZCByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBmb250TG9va3VwXG52YXIgcmV0cmlldmVUZXh0Rm9udE5hbWUgPSBmdW5jdGlvbiByZXRyaWV2ZVRleHRGb250TmFtZShmb250RmFtaWx5LCBmb250V2VpZ2h0LCBmb250U2hhcGUpIHtcbiAgICB2YXIgYmFzZUZvbnROYW1lID0gcmV0cmlldmVCYXNlRm9udE5hbWUoZm9udEZhbWlseSk7XG4gICAgdmFyIGZvbnRTdHlsZXNOYW1lID0gcmV0cmlldmVGb250U3R5bGVzTmFtZShmb250V2VpZ2h0LCBmb250U2hhcGUpO1xuICAgIHJldHVybiBiYXNlRm9udE5hbWUgKyBcIi1cIiArIGZvbnRTdHlsZXNOYW1lO1xufTtcblxudmFyIHJldHJpZXZlQmFzZUZvbnROYW1lID0gZnVuY3Rpb24gcmV0cmlldmVCYXNlRm9udE5hbWUoZm9udCkge1xuICAgIHZhciBiYXNlRm9udE5hbWUgPSBcIlwiO1xuICAgIHN3aXRjaCAoZm9udCkge1xuICAgICAgICBjYXNlIFwiYW1zcm1cIjpcbiAgICAgICAgICAgIGJhc2VGb250TmFtZSA9IFwiQU1TXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRleHRybVwiOlxuICAgICAgICAgICAgYmFzZUZvbnROYW1lID0gXCJNYWluXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRleHRzZlwiOlxuICAgICAgICAgICAgYmFzZUZvbnROYW1lID0gXCJTYW5zU2VyaWZcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwidGV4dHR0XCI6XG4gICAgICAgICAgICBiYXNlRm9udE5hbWUgPSBcIlR5cGV3cml0ZXJcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBmb250IHByb3ZpZGVkOiBcIiArIGZvbnQpO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZUZvbnROYW1lO1xufTtcblxudmFyIHJldHJpZXZlRm9udFN0eWxlc05hbWUgPSBmdW5jdGlvbiByZXRyaWV2ZUZvbnRTdHlsZXNOYW1lKGZvbnRXZWlnaHQsIGZvbnRTaGFwZSkge1xuICAgIHZhciBmb250U3R5bGVzTmFtZSA9ICcnO1xuICAgIGlmIChmb250V2VpZ2h0ID09PSBcInRleHRiZlwiKSB7XG4gICAgICAgIGZvbnRTdHlsZXNOYW1lICs9IFwiQm9sZFwiO1xuICAgIH1cbiAgICBpZiAoZm9udFNoYXBlID09PSBcInRleHRpdFwiKSB7XG4gICAgICAgIGZvbnRTdHlsZXNOYW1lICs9IFwiSXRhbGljXCI7XG4gICAgfVxuICAgIHJldHVybiBmb250U3R5bGVzTmFtZSB8fCBcIlJlZ3VsYXJcIjtcbn07XG5cbi8vIEEgbWFwIG9mIHNwYWNpbmcgZnVuY3Rpb25zIHRvIHRoZWlyIGF0dHJpYnV0ZXMsIGxpa2Ugc2l6ZSBhbmQgY29ycmVzcG9uZGluZ1xuLy8gQ1NTIGNsYXNzXG52YXIgc3BhY2luZ0Z1bmN0aW9ucyA9IHtcbiAgICBcIlxcXFxxcXVhZFwiOiB7XG4gICAgICAgIHNpemU6IFwiMmVtXCIsXG4gICAgICAgIGNsYXNzTmFtZTogXCJxcXVhZFwiXG4gICAgfSxcbiAgICBcIlxcXFxxdWFkXCI6IHtcbiAgICAgICAgc2l6ZTogXCIxZW1cIixcbiAgICAgICAgY2xhc3NOYW1lOiBcInF1YWRcIlxuICAgIH0sXG4gICAgXCJcXFxcZW5zcGFjZVwiOiB7XG4gICAgICAgIHNpemU6IFwiMC41ZW1cIixcbiAgICAgICAgY2xhc3NOYW1lOiBcImVuc3BhY2VcIlxuICAgIH0sXG4gICAgXCJcXFxcO1wiOiB7XG4gICAgICAgIHNpemU6IFwiMC4yNzc3NzhlbVwiLFxuICAgICAgICBjbGFzc05hbWU6IFwidGhpY2tzcGFjZVwiXG4gICAgfSxcbiAgICBcIlxcXFw6XCI6IHtcbiAgICAgICAgc2l6ZTogXCIwLjIyMjIyZW1cIixcbiAgICAgICAgY2xhc3NOYW1lOiBcIm1lZGl1bXNwYWNlXCJcbiAgICB9LFxuICAgIFwiXFxcXCxcIjoge1xuICAgICAgICBzaXplOiBcIjAuMTY2NjdlbVwiLFxuICAgICAgICBjbGFzc05hbWU6IFwidGhpbnNwYWNlXCJcbiAgICB9LFxuICAgIFwiXFxcXCFcIjoge1xuICAgICAgICBzaXplOiBcIi0wLjE2NjY3ZW1cIixcbiAgICAgICAgY2xhc3NOYW1lOiBcIm5lZ2F0aXZldGhpbnNwYWNlXCJcbiAgICB9XG59O1xuXG4vKipcbiAqIE1hcHMgVGVYIGZvbnQgY29tbWFuZHMgdG8gb2JqZWN0cyBjb250YWluaW5nOlxuICogLSB2YXJpYW50OiBzdHJpbmcgdXNlZCBmb3IgXCJtYXRodmFyaWFudFwiIGF0dHJpYnV0ZSBpbiBidWlsZE1hdGhNTC5qc1xuICogLSBmb250TmFtZTogdGhlIFwic3R5bGVcIiBwYXJhbWV0ZXIgdG8gZm9udE1ldHJpY3MuZ2V0Q2hhcmFjdGVyTWV0cmljc1xuICovXG4vLyBBIG1hcCBiZXR3ZWVuIHRleCBmb250IGNvbW1hbmRzIGFuIE1hdGhNTCBtYXRodmFyaWFudCBhdHRyaWJ1dGUgdmFsdWVzXG52YXIgZm9udE1hcCA9IHtcbiAgICAvLyBzdHlsZXNcbiAgICBcIm1hdGhiZlwiOiB7XG4gICAgICAgIHZhcmlhbnQ6IFwiYm9sZFwiLFxuICAgICAgICBmb250TmFtZTogXCJNYWluLUJvbGRcIlxuICAgIH0sXG4gICAgXCJtYXRocm1cIjoge1xuICAgICAgICB2YXJpYW50OiBcIm5vcm1hbFwiLFxuICAgICAgICBmb250TmFtZTogXCJNYWluLVJlZ3VsYXJcIlxuICAgIH0sXG4gICAgXCJ0ZXh0aXRcIjoge1xuICAgICAgICB2YXJpYW50OiBcIml0YWxpY1wiLFxuICAgICAgICBmb250TmFtZTogXCJNYWluLUl0YWxpY1wiXG4gICAgfSxcblxuICAgIC8vIFwibWF0aGl0XCIgYW5kIFwiYm9sZHN5bWJvbFwiIGFyZSBtaXNzaW5nIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSB1c2Ugb2YgdHdvXG4gICAgLy8gZm9udHM6IE1haW4tSXRhbGljIGFuZCBNYXRoLUl0YWxpYyBmb3IgXCJtYXRoaXRcIiwgYW5kIE1hdGgtQm9sZEl0YWxpYyBhbmRcbiAgICAvLyBNYWluLUJvbGQgZm9yIFwiYm9sZHN5bWJvbFwiLiAgVGhpcyBpcyBoYW5kbGVkIGJ5IGEgc3BlY2lhbCBjYXNlIGluIG1ha2VPcmRcbiAgICAvLyB3aGljaCBlbmRzIHVwIGNhbGxpbmcgbWF0aGl0IGFuZCBib2xkc3ltYm9sLlxuXG4gICAgLy8gZmFtaWxpZXNcbiAgICBcIm1hdGhiYlwiOiB7XG4gICAgICAgIHZhcmlhbnQ6IFwiZG91YmxlLXN0cnVja1wiLFxuICAgICAgICBmb250TmFtZTogXCJBTVMtUmVndWxhclwiXG4gICAgfSxcbiAgICBcIm1hdGhjYWxcIjoge1xuICAgICAgICB2YXJpYW50OiBcInNjcmlwdFwiLFxuICAgICAgICBmb250TmFtZTogXCJDYWxpZ3JhcGhpYy1SZWd1bGFyXCJcbiAgICB9LFxuICAgIFwibWF0aGZyYWtcIjoge1xuICAgICAgICB2YXJpYW50OiBcImZyYWt0dXJcIixcbiAgICAgICAgZm9udE5hbWU6IFwiRnJha3R1ci1SZWd1bGFyXCJcbiAgICB9LFxuICAgIFwibWF0aHNjclwiOiB7XG4gICAgICAgIHZhcmlhbnQ6IFwic2NyaXB0XCIsXG4gICAgICAgIGZvbnROYW1lOiBcIlNjcmlwdC1SZWd1bGFyXCJcbiAgICB9LFxuICAgIFwibWF0aHNmXCI6IHtcbiAgICAgICAgdmFyaWFudDogXCJzYW5zLXNlcmlmXCIsXG4gICAgICAgIGZvbnROYW1lOiBcIlNhbnNTZXJpZi1SZWd1bGFyXCJcbiAgICB9LFxuICAgIFwibWF0aHR0XCI6IHtcbiAgICAgICAgdmFyaWFudDogXCJtb25vc3BhY2VcIixcbiAgICAgICAgZm9udE5hbWU6IFwiVHlwZXdyaXRlci1SZWd1bGFyXCJcbiAgICB9XG59O1xuXG52YXIgc3ZnRGF0YSA9IHtcbiAgICAvLyAgIHBhdGgsIHdpZHRoLCBoZWlnaHRcbiAgICB2ZWM6IFtcInZlY1wiLCAwLjQ3MSwgMC43MTRdIC8vIHZhbHVlcyBmcm9tIHRoZSBmb250IGdseXBoXG59O1xuXG52YXIgc3RhdGljU3ZnID0gZnVuY3Rpb24gc3RhdGljU3ZnKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgLy8gQ3JlYXRlIGEgc3BhbiB3aXRoIGlubGluZSBTVkcgZm9yIHRoZSBlbGVtZW50LlxuICAgIHZhciBfc3ZnRGF0YSR2YWx1ZSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfc2xpY2VkVG9BcnJheV9fX2RlZmF1bHQoKShzdmdEYXRhW3ZhbHVlXSwgMyksXG4gICAgICAgIHBhdGhOYW1lID0gX3N2Z0RhdGEkdmFsdWVbMF0sXG4gICAgICAgIHdpZHRoID0gX3N2Z0RhdGEkdmFsdWVbMV0sXG4gICAgICAgIGhlaWdodCA9IF9zdmdEYXRhJHZhbHVlWzJdO1xuXG4gICAgdmFyIHBhdGggPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10ucGF0aE5vZGUocGF0aE5hbWUpO1xuICAgIHZhciBzdmdOb2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZG9tVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnN2Z05vZGUoW3BhdGhdLCB7XG4gICAgICAgIFwid2lkdGhcIjogd2lkdGggKyBcImVtXCIsXG4gICAgICAgIFwiaGVpZ2h0XCI6IGhlaWdodCArIFwiZW1cIixcbiAgICAgICAgLy8gT3ZlcnJpZGUgQ1NTIHJ1bGUgYC5rYXRleCBzdmcgeyB3aWR0aDogMTAwJSB9YFxuICAgICAgICBcInN0eWxlXCI6IFwid2lkdGg6XCIgKyB3aWR0aCArIFwiZW1cIixcbiAgICAgICAgXCJ2aWV3Qm94XCI6IFwiMCAwIFwiICsgMTAwMCAqIHdpZHRoICsgXCIgXCIgKyAxMDAwICogaGVpZ2h0LFxuICAgICAgICBcInByZXNlcnZlQXNwZWN0UmF0aW9cIjogXCJ4TWluWU1pblwiXG4gICAgfSk7XG4gICAgdmFyIHNwYW4gPSBtYWtlU3BhbihbXCJvdmVybGF5XCJdLCBbc3ZnTm9kZV0sIG9wdGlvbnMpO1xuICAgIHNwYW4uaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIHNwYW4uc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgXCJlbVwiO1xuICAgIHNwYW4uc3R5bGUud2lkdGggPSB3aWR0aCArIFwiZW1cIjtcbiAgICByZXR1cm4gc3Bhbjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoe1xuICAgIGZvbnRNYXA6IGZvbnRNYXAsXG4gICAgbWFrZVN5bWJvbDogbWFrZVN5bWJvbCxcbiAgICBtYXRoc3ltOiBtYXRoc3ltLFxuICAgIG1ha2VTcGFuOiBtYWtlU3BhbixcbiAgICBtYWtlTGluZVNwYW46IG1ha2VMaW5lU3BhbixcbiAgICBtYWtlQW5jaG9yOiBtYWtlQW5jaG9yLFxuICAgIG1ha2VGcmFnbWVudDogbWFrZUZyYWdtZW50LFxuICAgIG1ha2VWTGlzdDogbWFrZVZMaXN0LFxuICAgIG1ha2VPcmQ6IG1ha2VPcmQsXG4gICAgbWFrZVZlcmI6IG1ha2VWZXJiLFxuICAgIG1ha2VHbHVlOiBtYWtlR2x1ZSxcbiAgICBzdGF0aWNTdmc6IHN0YXRpY1N2ZyxcbiAgICBzdmdEYXRhOiBzdmdEYXRhLFxuICAgIHRyeUNvbWJpbmVDaGFyczogdHJ5Q29tYmluZUNoYXJzLFxuICAgIHNwYWNpbmdGdW5jdGlvbnM6IHNwYWNpbmdGdW5jdGlvbnNcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19nZXRfaXRlcmF0b3JfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfZ2V0X2l0ZXJhdG9yX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3V0aWxzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXG5cblxuXG4vKipcbiAqIFRoZXNlIG9iamVjdHMgc3RvcmUgZGF0YSBhYm91dCBNYXRoTUwgbm9kZXMuIFRoaXMgaXMgdGhlIE1hdGhNTCBlcXVpdmFsZW50XG4gKiBvZiB0aGUgdHlwZXMgaW4gZG9tVHJlZS5qcy4gU2luY2UgTWF0aE1MIGhhbmRsZXMgaXRzIG93biByZW5kZXJpbmcsIGFuZFxuICogc2luY2Ugd2UncmUgbWFpbmx5IHVzaW5nIE1hdGhNTCB0byBpbXByb3ZlIGFjY2Vzc2liaWxpdHksIHdlIGRvbid0IG1hbmFnZVxuICogYW55IG9mIHRoZSBzdHlsaW5nIHN0YXRlIHRoYXQgdGhlIHBsYWluIERPTSBub2RlcyBkby5cbiAqXG4gKiBUaGUgYHRvTm9kZWAgYW5kIGB0b01hcmt1cGAgZnVuY3Rpb25zIHdvcmsgc2ltbGFybHkgdG8gaG93IHRoZXkgZG8gaW5cbiAqIGRvbVRyZWUuanMsIGNyZWF0aW5nIG5hbWVzcGFjZWQgRE9NIG5vZGVzIGFuZCBIVE1MIHRleHQgbWFya3VwIHJlc3BlY3RpdmVseS5cbiAqL1xuXG5cblxuLyoqXG4gKiBNYXRoTUwgbm9kZSB0eXBlcyB1c2VkIGluIEthVGVYLiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIE1hdGhNTCBub2Rlcywgc2VlXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9NYXRoTUwvRWxlbWVudC5cbiAqL1xuXG4vKipcbiAqIFRoaXMgbm9kZSByZXByZXNlbnRzIGEgZ2VuZXJhbCBwdXJwb3NlIE1hdGhNTCBub2RlIG9mIGFueSB0eXBlLiBUaGVcbiAqIGNvbnN0cnVjdG9yIHJlcXVpcmVzIHRoZSB0eXBlIG9mIG5vZGUgdG8gY3JlYXRlIChmb3IgZXhhbXBsZSwgYFwibW9cImAgb3JcbiAqIGBcIm1zcGFjZVwiYCwgY29ycmVzcG9uZGluZyB0byBgPG1vPmAgYW5kIGA8bXNwYWNlPmAgdGFncykuXG4gKi9cbnZhciBNYXRoTm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNYXRoTm9kZSh0eXBlLCBjaGlsZHJlbikge1xuICAgICAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19fZGVmYXVsdCgpKHRoaXMsIE1hdGhOb2RlKTtcblxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYW4gYXR0cmlidXRlIG9uIGEgTWF0aE1MIG5vZGUuIE1hdGhNTCBkZXBlbmRzIG9uIGF0dHJpYnV0ZXMgdG8gY29udmV5IGFcbiAgICAgKiBzZW1hbnRpYyBjb250ZW50LCBzbyB0aGlzIGlzIHVzZWQgaGVhdmlseS5cbiAgICAgKi9cblxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fX2RlZmF1bHQoKShNYXRoTm9kZSwgW3tcbiAgICAgICAga2V5OiBcInNldEF0dHJpYnV0ZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb252ZXJ0cyB0aGUgbWF0aCBub2RlIGludG8gYSBNYXRoTUwtbmFtZXNwYWNlZCBET00gZWxlbWVudC5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ0b05vZGVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiLCB0aGlzLnR5cGUpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCBhdHRyKSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmF0dHJpYnV0ZXNbYXR0cl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19nZXRfaXRlcmF0b3JfX19kZWZhdWx0KCkodGhpcy5jaGlsZHJlbiksIF9zdGVwOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSAoX3N0ZXAgPSBfaXRlcmF0b3IubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gX3N0ZXAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hcHBlbmRDaGlsZChjaGlsZC50b05vZGUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgIF9pdGVyYXRvckVycm9yID0gZXJyO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gJiYgX2l0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yLnJldHVybigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGFuIEhUTUwgbWFya3VwIHN0cmluZy5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ0b01hcmt1cFwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgICAgICAgICB2YXIgbWFya3VwID0gXCI8XCIgKyB0aGlzLnR5cGU7XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgYXR0cmlidXRlc1xuICAgICAgICAgICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFya3VwICs9IFwiIFwiICsgYXR0ciArIFwiPVxcXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgbWFya3VwICs9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5lc2NhcGUodGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgICAgICAgICAgICAgICAgbWFya3VwICs9IFwiXFxcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWFya3VwICs9IFwiPlwiO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtYXJrdXAgKz0gdGhpcy5jaGlsZHJlbltpXS50b01hcmt1cCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXJrdXAgKz0gXCI8L1wiICsgdGhpcy50eXBlICsgXCI+XCI7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXJrdXA7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgc3RyaW5nLCBzaW1pbGFyIHRvIGlubmVyVGV4dC5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ0b1RleHRcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFwibXNwYWNlXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdHRyaWJ1dGVzLndpZHRoID09PSBcIjAuMTY2NjdlbVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlxcdTIwMDZcIjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBVc2Ugb3RoZXIgc3BhY2UgY2hhcmFjdGVycyBmb3IgZGlmZmVyZW50IHdpZHRocy5cbiAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0toYW4vS2FUZVgvaXNzdWVzLzEwMzZcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiIFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQudG9UZXh0KCk7XG4gICAgICAgICAgICB9KS5qb2luKFwiXCIpO1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIE1hdGhOb2RlO1xufSgpO1xuXG4vKipcbiAqIFRoaXMgbm9kZSByZXByZXNlbnRzIGEgcGllY2Ugb2YgdGV4dC5cbiAqL1xuXG5cbnZhciBUZXh0Tm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUZXh0Tm9kZSh0ZXh0KSB7XG4gICAgICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX19kZWZhdWx0KCkodGhpcywgVGV4dE5vZGUpO1xuXG4gICAgICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIHRleHQgbm9kZSBpbnRvIGEgRE9NIHRleHQgbm9kZS5cbiAgICAgKi9cblxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fX2RlZmF1bHQoKShUZXh0Tm9kZSwgW3tcbiAgICAgICAga2V5OiBcInRvTm9kZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdG9Ob2RlKCkge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMudGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQ29udmVydHMgdGhlIHRleHQgbm9kZSBpbnRvIEhUTUwgbWFya3VwICh3aGljaCBpcyBqdXN0IHRoZSB0ZXh0IGl0c2VsZikuXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwidG9NYXJrdXBcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5lc2NhcGUodGhpcy50ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb252ZXJ0cyB0aGUgdGV4dCBub2RlIGludG8gYSBzdHJpbmcgKHdoaWNoIGlzIGp1c3QgdGhlIHRleHQgaXRlc2VsZikuXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwidG9UZXh0XCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0b1RleHQoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0O1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIFRleHROb2RlO1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHtcbiAgICBNYXRoTm9kZTogTWF0aE5vZGUsXG4gICAgVGV4dE5vZGU6IFRleHROb2RlXG59KTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBtYWtlVGV4dDsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGdyb3VwVHlwZXM7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBidWlsZEV4cHJlc3Npb247IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBidWlsZEdyb3VwOyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJjXCJdID0gYnVpbGRNYXRoTUw7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2ZvbnRNZXRyaWNzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19QYXJzZUVycm9yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fU3R5bGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19zeW1ib2xzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX3V0aWxzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fc3RyZXRjaHlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xuLyoqXG4gKiBXQVJOSU5HOiBOZXcgbWV0aG9kcyBvbiBncm91cFR5cGVzIHNob3VsZCBiZSBhZGRlZCB0byBzcmMvZnVuY3Rpb25zLlxuICpcbiAqIFRoaXMgZmlsZSBjb252ZXJ0cyBhIHBhcnNlIHRyZWUgaW50byBhIGNvb3Jlc3BvbmRpbmcgTWF0aE1MIHRyZWUuIFRoZSBtYWluXG4gKiBlbnRyeSBwb2ludCBpcyB0aGUgYGJ1aWxkTWF0aE1MYCBmdW5jdGlvbiwgd2hpY2ggdGFrZXMgYSBwYXJzZSB0cmVlIGZyb20gdGhlXG4gKiBwYXJzZXIuXG4gKi9cblxuXG5cblxuXG5cblxuXG5cblxuLyoqXG4gKiBUYWtlcyBhIHN5bWJvbCBhbmQgY29udmVydHMgaXQgaW50byBhIE1hdGhNTCB0ZXh0IG5vZGUgYWZ0ZXIgcGVyZm9ybWluZ1xuICogb3B0aW9uYWwgcmVwbGFjZW1lbnQgZnJvbSBzeW1ib2xzLmpzLlxuICovXG52YXIgbWFrZVRleHQgPSBmdW5jdGlvbiBtYWtlVGV4dCh0ZXh0LCBtb2RlKSB7XG4gICAgaWYgKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fc3ltYm9sc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dW21vZGVdW3RleHRdICYmIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fc3ltYm9sc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dW21vZGVdW3RleHRdLnJlcGxhY2UpIHtcbiAgICAgICAgdGV4dCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fc3ltYm9sc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dW21vZGVdW3RleHRdLnJlcGxhY2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5UZXh0Tm9kZSh0ZXh0KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbWF0aCB2YXJpYW50IGFzIGEgc3RyaW5nIG9yIG51bGwgaWYgbm9uZSBpcyByZXF1aXJlZC5cbiAqL1xudmFyIGdldFZhcmlhbnQgPSBmdW5jdGlvbiBnZXRWYXJpYW50KGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGZvbnQgPSBvcHRpb25zLmZvbnRGYW1pbHk7XG4gICAgaWYgKCFmb250KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBtb2RlID0gZ3JvdXAubW9kZTtcbiAgICBpZiAoZm9udCA9PT0gXCJtYXRoaXRcIikge1xuICAgICAgICByZXR1cm4gXCJpdGFsaWNcIjtcbiAgICB9IGVsc2UgaWYgKGZvbnQgPT09IFwiYm9sZHN5bWJvbFwiKSB7XG4gICAgICAgIHJldHVybiBcImJvbGQtaXRhbGljXCI7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlID0gZ3JvdXAudmFsdWU7XG4gICAgaWYgKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5jb250YWlucyhbXCJcXFxcaW1hdGhcIiwgXCJcXFxcam1hdGhcIl0sIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19zeW1ib2xzX19bXCJhXCIgLyogZGVmYXVsdCAqL11bbW9kZV1bdmFsdWVdICYmIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fc3ltYm9sc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dW21vZGVdW3ZhbHVlXS5yZXBsYWNlKSB7XG4gICAgICAgIHZhbHVlID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19zeW1ib2xzX19bXCJhXCIgLyogZGVmYXVsdCAqL11bbW9kZV1bdmFsdWVdLnJlcGxhY2U7XG4gICAgfVxuXG4gICAgdmFyIGZvbnROYW1lID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmZvbnRNYXBbZm9udF0uZm9udE5hbWU7XG4gICAgaWYgKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZm9udE1ldHJpY3NfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5nZXRDaGFyYWN0ZXJNZXRyaWNzKHZhbHVlLCBmb250TmFtZSwgbW9kZSkpIHtcbiAgICAgICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5mb250TWFwW2ZvbnRdLnZhcmlhbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBncm91cHMgZm91bmQgaW4gdGhlIHBhcnNlXG4gKiB0cmVlLiBFYWNoIGZ1bmN0aW9uIHNob3VsZCB0YWtlIGEgcGFyc2UgZ3JvdXAgYW5kIHJldHVybiBhIE1hdGhNTCBub2RlLlxuICovXG52YXIgZ3JvdXBUeXBlcyA9IHt9O1xuXG52YXIgZGVmYXVsdFZhcmlhbnQgPSB7XG4gICAgXCJtaVwiOiBcIml0YWxpY1wiLFxuICAgIFwibW5cIjogXCJub3JtYWxcIixcbiAgICBcIm10ZXh0XCI6IFwibm9ybWFsXCJcbn07XG5cbmdyb3VwVHlwZXMubWF0aG9yZCA9IGZ1bmN0aW9uIChncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibWlcIiwgW21ha2VUZXh0KGdyb3VwLnZhbHVlLCBncm91cC5tb2RlKV0pO1xuXG4gICAgdmFyIHZhcmlhbnQgPSBnZXRWYXJpYW50KGdyb3VwLCBvcHRpb25zKSB8fCBcIml0YWxpY1wiO1xuICAgIGlmICh2YXJpYW50ICE9PSBkZWZhdWx0VmFyaWFudFtub2RlLnR5cGVdKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aHZhcmlhbnRcIiwgdmFyaWFudCk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xufTtcblxuZ3JvdXBUeXBlcy50ZXh0b3JkID0gZnVuY3Rpb24gKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHRleHQgPSBtYWtlVGV4dChncm91cC52YWx1ZSwgZ3JvdXAubW9kZSk7XG5cbiAgICB2YXIgdmFyaWFudCA9IGdldFZhcmlhbnQoZ3JvdXAsIG9wdGlvbnMpIHx8IFwibm9ybWFsXCI7XG5cbiAgICB2YXIgbm9kZSA9IHZvaWQgMDtcbiAgICBpZiAoZ3JvdXAubW9kZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtdGV4dFwiLCBbdGV4dF0pO1xuICAgIH0gZWxzZSBpZiAoL1swLTldLy50ZXN0KGdyb3VwLnZhbHVlKSkge1xuICAgICAgICAvLyBUT0RPKGtldmluYikgbWVyZ2UgYWRqYWNlbnQgPG1uPiBub2Rlc1xuICAgICAgICAvLyBkbyBpdCBhcyBhIHBvc3QgcHJvY2Vzc2luZyBzdGVwXG4gICAgICAgIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtblwiLCBbdGV4dF0pO1xuICAgIH0gZWxzZSBpZiAoZ3JvdXAudmFsdWUgPT09IFwiXFxcXHByaW1lXCIpIHtcbiAgICAgICAgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1vXCIsIFt0ZXh0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1pXCIsIFt0ZXh0XSk7XG4gICAgfVxuICAgIGlmICh2YXJpYW50ICE9PSBkZWZhdWx0VmFyaWFudFtub2RlLnR5cGVdKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aHZhcmlhbnRcIiwgdmFyaWFudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG59O1xuXG5ncm91cFR5cGVzLmJpbiA9IGZ1bmN0aW9uIChncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibW9cIiwgW21ha2VUZXh0KGdyb3VwLnZhbHVlLCBncm91cC5tb2RlKV0pO1xuXG4gICAgdmFyIHZhcmlhbnQgPSBnZXRWYXJpYW50KGdyb3VwLCBvcHRpb25zKTtcbiAgICBpZiAodmFyaWFudCA9PT0gXCJib2xkLWl0YWxpY1wiKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aHZhcmlhbnRcIiwgdmFyaWFudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG59O1xuXG5ncm91cFR5cGVzLnJlbCA9IGZ1bmN0aW9uIChncm91cCkge1xuICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibW9cIiwgW21ha2VUZXh0KGdyb3VwLnZhbHVlLCBncm91cC5tb2RlKV0pO1xuXG4gICAgcmV0dXJuIG5vZGU7XG59O1xuXG5ncm91cFR5cGVzLm9wZW4gPSBmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1vXCIsIFttYWtlVGV4dChncm91cC52YWx1ZSwgZ3JvdXAubW9kZSldKTtcblxuICAgIHJldHVybiBub2RlO1xufTtcblxuZ3JvdXBUeXBlcy5jbG9zZSA9IGZ1bmN0aW9uIChncm91cCkge1xuICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibW9cIiwgW21ha2VUZXh0KGdyb3VwLnZhbHVlLCBncm91cC5tb2RlKV0pO1xuXG4gICAgcmV0dXJuIG5vZGU7XG59O1xuXG5ncm91cFR5cGVzLmlubmVyID0gZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb1wiLCBbbWFrZVRleHQoZ3JvdXAudmFsdWUsIGdyb3VwLm1vZGUpXSk7XG5cbiAgICByZXR1cm4gbm9kZTtcbn07XG5cbmdyb3VwVHlwZXMucHVuY3QgPSBmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1vXCIsIFttYWtlVGV4dChncm91cC52YWx1ZSwgZ3JvdXAubW9kZSldKTtcblxuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic2VwYXJhdG9yXCIsIFwidHJ1ZVwiKTtcblxuICAgIHJldHVybiBub2RlO1xufTtcblxuZ3JvdXBUeXBlcy5vcmRncm91cCA9IGZ1bmN0aW9uIChncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IGJ1aWxkRXhwcmVzc2lvbihncm91cC52YWx1ZSwgb3B0aW9ucyk7XG5cbiAgICB2YXIgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1yb3dcIiwgaW5uZXIpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG59O1xuXG5ncm91cFR5cGVzLnN1cHN1YiA9IGZ1bmN0aW9uIChncm91cCwgb3B0aW9ucykge1xuICAgIC8vIElzIHRoZSBpbm5lciBncm91cCBhIHJlbGV2YW50IGhvcml6b25hbCBicmFjZT9cbiAgICB2YXIgaXNCcmFjZSA9IGZhbHNlO1xuICAgIHZhciBpc092ZXIgPSB2b2lkIDA7XG4gICAgdmFyIGlzU3VwID0gdm9pZCAwO1xuICAgIGlmIChncm91cC52YWx1ZS5iYXNlKSB7XG4gICAgICAgIGlmIChncm91cC52YWx1ZS5iYXNlLnZhbHVlLnR5cGUgPT09IFwiaG9yaXpCcmFjZVwiKSB7XG4gICAgICAgICAgICBpc1N1cCA9IGdyb3VwLnZhbHVlLnN1cCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChpc1N1cCA9PT0gZ3JvdXAudmFsdWUuYmFzZS52YWx1ZS5pc092ZXIpIHtcbiAgICAgICAgICAgICAgICBpc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpc092ZXIgPSBncm91cC52YWx1ZS5iYXNlLnZhbHVlLmlzT3ZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZW1vdmVVbm5lY2Vzc2FyeVJvdyA9IHRydWU7XG4gICAgdmFyIGNoaWxkcmVuID0gW2J1aWxkR3JvdXAoZ3JvdXAudmFsdWUuYmFzZSwgb3B0aW9ucywgcmVtb3ZlVW5uZWNlc3NhcnlSb3cpXTtcblxuICAgIGlmIChncm91cC52YWx1ZS5zdWIpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChidWlsZEdyb3VwKGdyb3VwLnZhbHVlLnN1Yiwgb3B0aW9ucywgcmVtb3ZlVW5uZWNlc3NhcnlSb3cpKTtcbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAudmFsdWUuc3VwKSB7XG4gICAgICAgIGNoaWxkcmVuLnB1c2goYnVpbGRHcm91cChncm91cC52YWx1ZS5zdXAsIG9wdGlvbnMsIHJlbW92ZVVubmVjZXNzYXJ5Um93KSk7XG4gICAgfVxuXG4gICAgdmFyIG5vZGVUeXBlID0gdm9pZCAwO1xuICAgIGlmIChpc0JyYWNlKSB7XG4gICAgICAgIG5vZGVUeXBlID0gaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIjtcbiAgICB9IGVsc2UgaWYgKCFncm91cC52YWx1ZS5zdWIpIHtcbiAgICAgICAgdmFyIGJhc2UgPSBncm91cC52YWx1ZS5iYXNlO1xuICAgICAgICBpZiAoYmFzZSAmJiBiYXNlLnZhbHVlLmxpbWl0cyAmJiBvcHRpb25zLnN0eWxlID09PSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uRElTUExBWSkge1xuICAgICAgICAgICAgbm9kZVR5cGUgPSBcIm1vdmVyXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub2RlVHlwZSA9IFwibXN1cFwiO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICghZ3JvdXAudmFsdWUuc3VwKSB7XG4gICAgICAgIHZhciBfYmFzZSA9IGdyb3VwLnZhbHVlLmJhc2U7XG4gICAgICAgIGlmIChfYmFzZSAmJiBfYmFzZS52YWx1ZS5saW1pdHMgJiYgb3B0aW9ucy5zdHlsZSA9PT0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLkRJU1BMQVkpIHtcbiAgICAgICAgICAgIG5vZGVUeXBlID0gXCJtdW5kZXJcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGVUeXBlID0gXCJtc3ViXCI7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX2Jhc2UyID0gZ3JvdXAudmFsdWUuYmFzZTtcbiAgICAgICAgaWYgKF9iYXNlMiAmJiBfYmFzZTIudmFsdWUubGltaXRzICYmIG9wdGlvbnMuc3R5bGUgPT09IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5ESVNQTEFZKSB7XG4gICAgICAgICAgICBub2RlVHlwZSA9IFwibXVuZGVyb3ZlclwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZVR5cGUgPSBcIm1zdWJzdXBcIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKG5vZGVUeXBlLCBjaGlsZHJlbik7XG5cbiAgICByZXR1cm4gbm9kZTtcbn07XG5cbmdyb3VwVHlwZXMuc3BhY2luZyA9IGZ1bmN0aW9uIChncm91cCkge1xuICAgIHZhciBub2RlID0gdm9pZCAwO1xuXG4gICAgaWYgKGdyb3VwLnZhbHVlID09PSBcIlxcXFwgXCIgfHwgZ3JvdXAudmFsdWUgPT09IFwiXFxcXHNwYWNlXCIgfHwgZ3JvdXAudmFsdWUgPT09IFwiIFwiIHx8IGdyb3VwLnZhbHVlID09PSBcIn5cIikge1xuICAgICAgICBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXRleHRcIiwgW25ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5UZXh0Tm9kZShcIlxceEEwXCIpXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1zcGFjZVwiKTtcblxuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5zcGFjaW5nRnVuY3Rpb25zW2dyb3VwLnZhbHVlXS5zaXplKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbn07XG5cbmdyb3VwVHlwZXMuaG9yaXpCcmFjZSA9IGZ1bmN0aW9uIChncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBhY2NlbnROb2RlID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19zdHJldGNoeV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1hdGhNTG5vZGUoZ3JvdXAudmFsdWUubGFiZWwpO1xuICAgIHJldHVybiBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoZ3JvdXAudmFsdWUuaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIiwgW2J1aWxkR3JvdXAoZ3JvdXAudmFsdWUuYmFzZSwgb3B0aW9ucyksIGFjY2VudE5vZGVdKTtcbn07XG5cbmdyb3VwVHlwZXMueEFycm93ID0gZnVuY3Rpb24gKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGFycm93Tm9kZSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fc3RyZXRjaHlfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYXRoTUxub2RlKGdyb3VwLnZhbHVlLmxhYmVsKTtcbiAgICB2YXIgbm9kZSA9IHZvaWQgMDtcbiAgICB2YXIgbG93ZXJOb2RlID0gdm9pZCAwO1xuXG4gICAgaWYgKGdyb3VwLnZhbHVlLmJvZHkpIHtcbiAgICAgICAgdmFyIHVwcGVyTm9kZSA9IGJ1aWxkR3JvdXAoZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChncm91cC52YWx1ZS5iZWxvdykge1xuICAgICAgICAgICAgbG93ZXJOb2RlID0gYnVpbGRHcm91cChncm91cC52YWx1ZS5iZWxvdywgb3B0aW9ucyk7XG4gICAgICAgICAgICBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXVuZGVyb3ZlclwiLCBbYXJyb3dOb2RlLCBsb3dlck5vZGUsIHVwcGVyTm9kZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1vdmVyXCIsIFthcnJvd05vZGUsIHVwcGVyTm9kZV0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChncm91cC52YWx1ZS5iZWxvdykge1xuICAgICAgICBsb3dlck5vZGUgPSBidWlsZEdyb3VwKGdyb3VwLnZhbHVlLmJlbG93LCBvcHRpb25zKTtcbiAgICAgICAgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm11bmRlclwiLCBbYXJyb3dOb2RlLCBsb3dlck5vZGVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibW92ZXJcIiwgW2Fycm93Tm9kZV0pO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbn07XG5cbmdyb3VwVHlwZXMubWNsYXNzID0gZnVuY3Rpb24gKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGlubmVyID0gYnVpbGRFeHByZXNzaW9uKGdyb3VwLnZhbHVlLnZhbHVlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXN0eWxlXCIsIGlubmVyKTtcbn07XG5cbmdyb3VwVHlwZXMucmFpc2Vib3ggPSBmdW5jdGlvbiAoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW2J1aWxkR3JvdXAoZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucyldKTtcbiAgICB2YXIgZHkgPSBncm91cC52YWx1ZS5keS52YWx1ZS5udW1iZXIgKyBncm91cC52YWx1ZS5keS52YWx1ZS51bml0O1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwidm9mZnNldFwiLCBkeSk7XG4gICAgcmV0dXJuIG5vZGU7XG59O1xuXG4vKipcbiAqIFRha2VzIGEgbGlzdCBvZiBub2RlcywgYnVpbGRzIHRoZW0sIGFuZCByZXR1cm5zIGEgbGlzdCBvZiB0aGUgZ2VuZXJhdGVkXG4gKiBNYXRoTUwgbm9kZXMuIEEgbGl0dGxlIHNpbXBsZXIgdGhhbiB0aGUgSFRNTCB2ZXJzaW9uIGJlY2F1c2Ugd2UgZG9uJ3QgZG8gYW55XG4gKiBwcmV2aW91cy1ub2RlIGhhbmRsaW5nLlxuICovXG52YXIgYnVpbGRFeHByZXNzaW9uID0gZnVuY3Rpb24gYnVpbGRFeHByZXNzaW9uKGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgICB2YXIgZ3JvdXBzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHByZXNzaW9uLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBncm91cCA9IGV4cHJlc3Npb25baV07XG4gICAgICAgIGdyb3Vwcy5wdXNoKGJ1aWxkR3JvdXAoZ3JvdXAsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKGtldmluYik6IGNvbWJpbmUgXFxcXG5vdCB3aXRoIG1yZWxzIGFuZCBtb3Jkc1xuXG4gICAgcmV0dXJuIGdyb3Vwcztcbn07XG5cbi8qKlxuICogVGFrZXMgYSBncm91cCBmcm9tIHRoZSBwYXJzZXIgYW5kIGNhbGxzIHRoZSBhcHByb3ByaWF0ZSBncm91cFR5cGVzIGZ1bmN0aW9uXG4gKiBvbiBpdCB0byBwcm9kdWNlIGEgTWF0aE1MIG5vZGUuXG4gKi9cbnZhciBidWlsZEdyb3VwID0gZnVuY3Rpb24gYnVpbGRHcm91cChncm91cCwgb3B0aW9ucykge1xuICAgIHZhciByZW1vdmVVbm5lY2Vzc2FyeVJvdyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZmFsc2U7XG5cbiAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgIHJldHVybiBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtcm93XCIpO1xuICAgIH1cblxuICAgIGlmIChncm91cFR5cGVzW2dyb3VwLnR5cGVdKSB7XG4gICAgICAgIC8vIENhbGwgdGhlIGdyb3VwVHlwZXMgZnVuY3Rpb25cbiAgICAgICAgdmFyIHJlc3VsdCA9IGdyb3VwVHlwZXNbZ3JvdXAudHlwZV0oZ3JvdXAsIG9wdGlvbnMpO1xuICAgICAgICBpZiAocmVtb3ZlVW5uZWNlc3NhcnlSb3cpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PT0gXCJtcm93XCIgJiYgcmVzdWx0LmNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuY2hpbGRyZW5bMF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJHb3QgZ3JvdXAgb2YgdW5rbm93biB0eXBlOiAnXCIgKyBncm91cC50eXBlICsgXCInXCIpO1xuICAgIH1cbn07XG5cbi8qKlxuICogVGFrZXMgYSBmdWxsIHBhcnNlIHRyZWUgYW5kIHNldHRpbmdzIGFuZCBidWlsZHMgYSBNYXRoTUwgcmVwcmVzZW50YXRpb24gb2ZcbiAqIGl0LiBJbiBwYXJ0aWN1bGFyLCB3ZSBwdXQgdGhlIGVsZW1lbnRzIGZyb20gYnVpbGRpbmcgdGhlIHBhcnNlIHRyZWUgaW50byBhXG4gKiA8c2VtYW50aWNzPiB0YWcgc28gd2UgY2FuIGFsc28gaW5jbHVkZSB0aGF0IFRlWCBzb3VyY2UgYXMgYW4gYW5ub3RhdGlvbi5cbiAqXG4gKiBOb3RlIHRoYXQgd2UgYWN0dWFsbHkgcmV0dXJuIGEgZG9tVHJlZSBlbGVtZW50IHdpdGggYSBgPG1hdGg+YCBpbnNpZGUgaXQgc29cbiAqIHdlIGNhbiBkbyBhcHByb3ByaWF0ZSBzdHlsaW5nLlxuICovXG5mdW5jdGlvbiBidWlsZE1hdGhNTCh0cmVlLCB0ZXhFeHByZXNzaW9uLCBvcHRpb25zKSB7XG4gICAgdmFyIGV4cHJlc3Npb24gPSBidWlsZEV4cHJlc3Npb24odHJlZSwgb3B0aW9ucyk7XG5cbiAgICAvLyBXcmFwIHVwIHRoZSBleHByZXNzaW9uIGluIGFuIG1yb3cgc28gaXQgaXMgcHJlc2VudGVkIGluIHRoZSBzZW1hbnRpY3NcbiAgICAvLyB0YWcgY29ycmVjdGx5LlxuICAgIHZhciB3cmFwcGVyID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXJvd1wiLCBleHByZXNzaW9uKTtcblxuICAgIC8vIEJ1aWxkIGEgVGVYIGFubm90YXRpb24gb2YgdGhlIHNvdXJjZVxuICAgIHZhciBhbm5vdGF0aW9uID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwiYW5ub3RhdGlvblwiLCBbbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlRleHROb2RlKHRleEV4cHJlc3Npb24pXSk7XG5cbiAgICBhbm5vdGF0aW9uLnNldEF0dHJpYnV0ZShcImVuY29kaW5nXCIsIFwiYXBwbGljYXRpb24veC10ZXhcIik7XG5cbiAgICB2YXIgc2VtYW50aWNzID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwic2VtYW50aWNzXCIsIFt3cmFwcGVyLCBhbm5vdGF0aW9uXSk7XG5cbiAgICB2YXIgbWF0aCA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1hdGhcIiwgW3NlbWFudGljc10pO1xuXG4gICAgLy8gWW91IGNhbid0IHN0eWxlIDxtYXRoPiBub2Rlcywgc28gd2Ugd3JhcCB0aGUgbm9kZSBpbiBhIHNwYW4uXG4gICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJrYXRleC1tYXRobWxcIl0sIFttYXRoXSk7XG59XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX2Z1bmN0aW9uczsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAoaW1tdXRhYmxlKSAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYlwiXSA9IGRlZmluZUZ1bmN0aW9uO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBvcmRhcmd1bWVudDsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19idWlsZEhUTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZE1hdGhNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuXG5cbi8qKiBDb250ZXh0IHByb3ZpZGVkIHRvIGZ1bmN0aW9uIGhhbmRsZXJzIGZvciBlcnJvciBtZXNzYWdlcy4gKi9cblxuXG4vLyBUT0RPOiBFbnVtZXJhdGUgYWxsIGFsbG93ZWQgb3V0cHV0IHR5cGVzLlxuXG5cbi8qKlxuICogRmluYWwgZnVuY3Rpb24gc3BlYyBmb3IgdXNlIGF0IHBhcnNlIHRpbWUuXG4gKiBUaGlzIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gYEZ1bmN0aW9uUHJvcFNwZWNgLCBleGNlcHQgaXRcbiAqIDEuIGluY2x1ZGVzIHRoZSBmdW5jdGlvbiBoYW5kbGVyLCBhbmRcbiAqIDIuIHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgZXhjZXB0IGFyZ1R5cGVzLlxuICogSXQgaXMgZ2VuZXJhdGVkIGJ5IGBkZWZpbmVGdW5jdGlvbigpYCBiZWxvdy5cbiAqL1xuXG5cbi8qKlxuICogQWxsIHJlZ2lzdGVyZWQgZnVuY3Rpb25zLlxuICogYGZ1bmN0aW9ucy5qc2AganVzdCBleHBvcnRzIHRoaXMgc2FtZSBkaWN0aW9uYXJ5IGFnYWluIGFuZCBtYWtlcyBpdCBwdWJsaWMuXG4gKiBgUGFyc2VyLmpzYCByZXF1aXJlcyB0aGlzIGRpY3Rpb25hcnkuXG4gKi9cbnZhciBfZnVuY3Rpb25zID0ge307XG5cbmZ1bmN0aW9uIGRlZmluZUZ1bmN0aW9uKF9yZWYpIHtcbiAgICB2YXIgdHlwZSA9IF9yZWYudHlwZSxcbiAgICAgICAgbmFtZXMgPSBfcmVmLm5hbWVzLFxuICAgICAgICBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGhhbmRsZXIgPSBfcmVmLmhhbmRsZXIsXG4gICAgICAgIGh0bWxCdWlsZGVyID0gX3JlZi5odG1sQnVpbGRlcixcbiAgICAgICAgbWF0aG1sQnVpbGRlciA9IF9yZWYubWF0aG1sQnVpbGRlcjtcblxuICAgIC8vIFNldCBkZWZhdWx0IHZhbHVlcyBvZiBmdW5jdGlvbnNcbiAgICB2YXIgZGF0YSA9IHtcbiAgICAgICAgbnVtQXJnczogcHJvcHMubnVtQXJncyxcbiAgICAgICAgYXJnVHlwZXM6IHByb3BzLmFyZ1R5cGVzLFxuICAgICAgICBncmVlZGluZXNzOiBwcm9wcy5ncmVlZGluZXNzID09PSB1bmRlZmluZWQgPyAxIDogcHJvcHMuZ3JlZWRpbmVzcyxcbiAgICAgICAgYWxsb3dlZEluVGV4dDogISFwcm9wcy5hbGxvd2VkSW5UZXh0LFxuICAgICAgICBhbGxvd2VkSW5NYXRoOiBwcm9wcy5hbGxvd2VkSW5NYXRoID09PSB1bmRlZmluZWQgPyB0cnVlIDogcHJvcHMuYWxsb3dlZEluTWF0aCxcbiAgICAgICAgbnVtT3B0aW9uYWxBcmdzOiBwcm9wcy5udW1PcHRpb25hbEFyZ3MgfHwgMCxcbiAgICAgICAgaW5maXg6ICEhcHJvcHMuaW5maXgsXG4gICAgICAgIGhhbmRsZXI6IGhhbmRsZXJcbiAgICB9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgX2Z1bmN0aW9uc1tuYW1lc1tpXV0gPSBkYXRhO1xuICAgIH1cbiAgICBpZiAodHlwZSkge1xuICAgICAgICBpZiAoaHRtbEJ1aWxkZXIpIHtcbiAgICAgICAgICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRIVE1MX19bXCJkXCIgLyogZ3JvdXBUeXBlcyAqL11bdHlwZV0gPSBodG1sQnVpbGRlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0aG1sQnVpbGRlcikge1xuICAgICAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZE1hdGhNTF9fW1wiZFwiIC8qIGdyb3VwVHlwZXMgKi9dW3R5cGVdID0gbWF0aG1sQnVpbGRlcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gU2luY2UgdGhlIGNvcnJlc3BvbmRpbmcgYnVpbGRIVE1ML2J1aWxkTWF0aE1MIGZ1bmN0aW9uIGV4cGVjdHMgYVxuLy8gbGlzdCBvZiBlbGVtZW50cywgd2Ugbm9ybWFsaXplIGZvciBkaWZmZXJlbnQga2luZHMgb2YgYXJndW1lbnRzXG52YXIgb3JkYXJndW1lbnQgPSBmdW5jdGlvbiBvcmRhcmd1bWVudChhcmcpIHtcbiAgICBpZiAoYXJnLnR5cGUgPT09IFwib3JkZ3JvdXBcIikge1xuICAgICAgICByZXR1cm4gYXJnLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbYXJnXTtcbiAgICB9XG59O1xuXG4vKioqLyB9KSxcbi8qIDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGJ1aWxkRXhwcmVzc2lvbjsgfSk7XG4vKiB1bnVzZWQgaGFybW9ueSBleHBvcnQgZ2V0VHlwZU9mRG9tVHJlZSAqL1xuLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IGlzTGVmdFRpZ2h0ICovXG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIG1ha2VOdWxsRGVsaW1pdGVyOyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJkXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZ3JvdXBUeXBlczsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYlwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGJ1aWxkR3JvdXA7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImNcIl0gPSBidWlsZEhUTUw7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19qc29uX3N0cmluZ2lmeV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19qc29uX3N0cmluZ2lmeV9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19qc29uX3N0cmluZ2lmeV9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fUGFyc2VFcnJvcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1N0eWxlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRDb21tb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19kb21UcmVlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX3VuaXRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX3V0aWxzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fc3RyZXRjaHlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fc3BhY2luZ0RhdGFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTEyKTtcblxuXG4vKipcbiAqIFdBUk5JTkc6IE5ldyBtZXRob2RzIG9uIGdyb3VwVHlwZXMgc2hvdWxkIGJlIGFkZGVkIHRvIHNyYy9mdW5jdGlvbnMuXG4gKlxuICogVGhpcyBmaWxlIGRvZXMgdGhlIG1haW4gd29yayBvZiBidWlsZGluZyBhIGRvbVRyZWUgc3RydWN0dXJlIGZyb20gYSBwYXJzZVxuICogdHJlZS4gVGhlIGVudHJ5IHBvaW50IGlzIHRoZSBgYnVpbGRIVE1MYCBmdW5jdGlvbiwgd2hpY2ggdGFrZXMgYSBwYXJzZSB0cmVlLlxuICogVGhlbiwgdGhlIGJ1aWxkRXhwcmVzc2lvbiwgYnVpbGRHcm91cCwgYW5kIHZhcmlvdXMgZ3JvdXBUeXBlcyBmdW5jdGlvbnMgYXJlXG4gKiBjYWxsZWQsIHRvIHByb2R1Y2UgYSBmaW5hbCBIVE1MIHRyZWUuXG4gKi9cblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgbWFrZVNwYW4gPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW47XG5cbi8vIEJpbmFyeSBhdG9tcyAoZmlyc3QgY2xhc3MgYG1iaW5gKSBjaGFuZ2UgaW50byBvcmRpbmFyeSBhdG9tcyAoYG1vcmRgKVxuLy8gZGVwZW5kaW5nIG9uIHRoZWlyIHN1cnJvdW5kaW5ncy4gU2VlIFRlWGJvb2sgcGcuIDQ0Mi00NDYsIFJ1bGVzIDUgYW5kIDYsXG4vLyBhbmQgdGhlIHRleHQgYmVmb3JlIFJ1bGUgMTkuXG52YXIgaXNCaW5MZWZ0Q2FuY2VsbGVyID0gZnVuY3Rpb24gaXNCaW5MZWZ0Q2FuY2VsbGVyKG5vZGUsIGlzUmVhbEdyb3VwKSB7XG4gICAgLy8gVE9ETzogVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCBhIG5vZGUncyBtYXRoIGNsYXNzIGlzIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgLy8gb2YgaXRzIGBjbGFzc2VzYCBhcnJheS4gQSBsYXRlciBjbGVhbnVwIHNob3VsZCBlbnN1cmUgdGhpcywgZm9yXG4gICAgLy8gaW5zdGFuY2UgYnkgY2hhbmdpbmcgdGhlIHNpZ25hdHVyZSBvZiBgbWFrZVNwYW5gLlxuICAgIGlmIChub2RlKSB7XG4gICAgICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX3V0aWxzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uY29udGFpbnMoW1wibWJpblwiLCBcIm1vcGVuXCIsIFwibXJlbFwiLCBcIm1vcFwiLCBcIm1wdW5jdFwiXSwgZ2V0VHlwZU9mRG9tVHJlZShub2RlLCBcInJpZ2h0XCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaXNSZWFsR3JvdXA7XG4gICAgfVxufTtcblxudmFyIGlzQmluUmlnaHRDYW5jZWxsZXIgPSBmdW5jdGlvbiBpc0JpblJpZ2h0Q2FuY2VsbGVyKG5vZGUsIGlzUmVhbEdyb3VwKSB7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5jb250YWlucyhbXCJtcmVsXCIsIFwibWNsb3NlXCIsIFwibXB1bmN0XCJdLCBnZXRUeXBlT2ZEb21UcmVlKG5vZGUsIFwibGVmdFwiKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGlzUmVhbEdyb3VwO1xuICAgIH1cbn07XG5cbnZhciBzdHlsZU1hcCA9IHtcbiAgICBcImRpc3BsYXlcIjogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLkRJU1BMQVksXG4gICAgXCJ0ZXh0XCI6IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5URVhULFxuICAgIFwic2NyaXB0XCI6IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5TQ1JJUFQsXG4gICAgXCJzY3JpcHRzY3JpcHRcIjogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlNDUklQVFNDUklQVFxufTtcblxuLyoqXG4gKiBUYWtlIGEgbGlzdCBvZiBub2RlcywgYnVpbGQgdGhlbSBpbiBvcmRlciwgYW5kIHJldHVybiBhIGxpc3Qgb2YgdGhlIGJ1aWx0XG4gKiBub2Rlcy4gZG9jdW1lbnRGcmFnbWVudHMgYXJlIGZsYXR0ZW5lZCBpbnRvIHRoZWlyIGNvbnRlbnRzLCBzbyB0aGVcbiAqIHJldHVybmVkIGxpc3QgY29udGFpbnMgbm8gZnJhZ21lbnRzLiBgaXNSZWFsR3JvdXBgIGlzIHRydWUgaWYgYGV4cHJlc3Npb25gXG4gKiBpcyBhIHJlYWwgZ3JvdXAgKG5vIGF0b21zIHdpbGwgYmUgYWRkZWQgb24gZWl0aGVyIHNpZGUpLCBhcyBvcHBvc2VkIHRvXG4gKiBhIHBhcnRpYWwgZ3JvdXAgKGUuZy4gb25lIGNyZWF0ZWQgYnkgXFxjb2xvcikuIGBzdXJyb3VuZGluZ2AgaXMgYW4gYXJyYXlcbiAqIGNvbnNpc3RpbmcgdHlwZSBvZiBub2RlcyB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxlZnQgYW5kIHJpZ2h0LlxuICovXG52YXIgYnVpbGRFeHByZXNzaW9uID0gZnVuY3Rpb24gYnVpbGRFeHByZXNzaW9uKGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzUmVhbEdyb3VwKSB7XG4gICAgdmFyIHN1cnJvdW5kaW5nID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBbbnVsbCwgbnVsbF07XG5cbiAgICAvLyBQYXJzZSBleHByZXNzaW9ucyBpbnRvIGBncm91cHNgLlxuICAgIHZhciByYXdHcm91cHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb24ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGdyb3VwID0gZXhwcmVzc2lvbltpXTtcbiAgICAgICAgdmFyIG91dHB1dCA9IGJ1aWxkR3JvdXAoZ3JvdXAsIG9wdGlvbnMpO1xuICAgICAgICBpZiAob3V0cHV0IGluc3RhbmNlb2YgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uZG9jdW1lbnRGcmFnbWVudCkge1xuICAgICAgICAgICAgcmF3R3JvdXBzLnB1c2guYXBwbHkocmF3R3JvdXBzLCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X19fZGVmYXVsdCgpKG91dHB1dC5jaGlsZHJlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmF3R3JvdXBzLnB1c2gob3V0cHV0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBdCB0aGlzIHBvaW50IGByYXdHcm91cHNgIGNvbnNpc3RzIGVudGlyZWx5IG9mIGBzeW1ib2xOb2RlYHMgYW5kIGBzcGFuYHMuXG5cbiAgICAvLyBJZ25vcmUgZXhwbGljaXQgc3BhY2VzIChlLmcuLCBcXDssIFxcLCkgd2hlbiBkZXRlcm1pbmluZyB3aGF0IGltcGxpY2l0XG4gICAgLy8gc3BhY2luZyBzaG91bGQgZ28gYmV0d2VlbiBhdG9tcyBvZiBkaWZmZXJlbnQgY2xhc3NlcywgYW5kIGFkZCBkdW1teVxuICAgIC8vIHNwYW5zIGZvciBkZXRlcm1pbmluZyBzcGFjaW5ncyBiZXR3ZWVuIHN1cnJvdW5kaW5nIGF0b21zXG4gICAgdmFyIG5vblNwYWNlcyA9IFtzdXJyb3VuZGluZ1swXSAmJiBtYWtlU3Bhbihbc3Vycm91bmRpbmdbMF1dLCBbXSwgb3B0aW9ucyldLmNvbmNhdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X19fZGVmYXVsdCgpKHJhd0dyb3Vwcy5maWx0ZXIoZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICAgIHJldHVybiBncm91cCAmJiBncm91cC5jbGFzc2VzWzBdICE9PSBcIm1zcGFjZVwiO1xuICAgIH0pKSwgW3N1cnJvdW5kaW5nWzFdICYmIG1ha2VTcGFuKFtzdXJyb3VuZGluZ1sxXV0sIFtdLCBvcHRpb25zKV0pO1xuXG4gICAgLy8gQmVmb3JlIGRldGVybWluaW5nIHdoYXQgc3BhY2VzIHRvIGluc2VydCwgcGVyZm9ybSBiaW4gY2FuY2VsbGF0aW9uLlxuICAgIC8vIEJpbmFyeSBvcGVyYXRvcnMgY2hhbmdlIHRvIG9yZGluYXJ5IHN5bWJvbHMgaW4gc29tZSBjb250ZXh0cy5cbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgbm9uU3BhY2VzLmxlbmd0aCAtIDE7IF9pKyspIHtcbiAgICAgICAgdmFyIGxlZnQgPSBnZXRPdXRlcm1vc3ROb2RlKG5vblNwYWNlc1tfaV0sIFwibGVmdFwiKTtcbiAgICAgICAgaWYgKGxlZnQuY2xhc3Nlc1swXSA9PT0gXCJtYmluXCIgJiYgaXNCaW5MZWZ0Q2FuY2VsbGVyKG5vblNwYWNlc1tfaSAtIDFdLCBpc1JlYWxHcm91cCkpIHtcbiAgICAgICAgICAgIGxlZnQuY2xhc3Nlc1swXSA9IFwibW9yZFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJpZ2h0ID0gZ2V0T3V0ZXJtb3N0Tm9kZShub25TcGFjZXNbX2ldLCBcInJpZ2h0XCIpO1xuICAgICAgICBpZiAocmlnaHQuY2xhc3Nlc1swXSA9PT0gXCJtYmluXCIgJiYgaXNCaW5SaWdodENhbmNlbGxlcihub25TcGFjZXNbX2kgKyAxXSwgaXNSZWFsR3JvdXApKSB7XG4gICAgICAgICAgICByaWdodC5jbGFzc2VzWzBdID0gXCJtb3JkXCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZ3JvdXBzID0gW107XG4gICAgdmFyIGogPSAwO1xuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHJhd0dyb3Vwcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIGdyb3Vwcy5wdXNoKHJhd0dyb3Vwc1tfaTJdKTtcblxuICAgICAgICAvLyBGb3IgYW55IGdyb3VwIHRoYXQgaXMgbm90IGEgc3BhY2UsIGdldCB0aGUgbmV4dCBub24tc3BhY2UuICBUaGVuXG4gICAgICAgIC8vIGxvb2t1cCB3aGF0IGltcGxpY2l0IHNwYWNlIHNob3VsZCBiZSBwbGFjZWQgYmV0d2VlbiB0aG9zZSBhdG9tcyBhbmRcbiAgICAgICAgLy8gYWRkIGl0IHRvIGdyb3Vwcy5cbiAgICAgICAgaWYgKHJhd0dyb3Vwc1tfaTJdLmNsYXNzZXNbMF0gIT09IFwibXNwYWNlXCIgJiYgaiA8IG5vblNwYWNlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAvLyBpZiBjdXJyZW50IG5vbi1zcGFjZSBub2RlIGlzIGxlZnQgZHVtbXkgc3BhbiwgYWRkIGEgZ2x1ZSBiZWZvcmVcbiAgICAgICAgICAgIC8vIGZpcnN0IHJlYWwgbm9uLXNwYWNlIG5vZGVcbiAgICAgICAgICAgIGlmIChqID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBzLnBvcCgpO1xuICAgICAgICAgICAgICAgIF9pMi0tO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgbm9uLXNwYWNlIG5vZGUuICBJZiBpdCdzIGEgZG9jdW1lbnRcbiAgICAgICAgICAgIC8vIGZyYWdtZW50LCBnZXQgdGhlIHR5cGUgb2YgdGhlIHJpZ2h0bW9zdCBub2RlIGluIHRoZSBmcmFnbWVudC5cbiAgICAgICAgICAgIHZhciBfbGVmdCA9IGdldFR5cGVPZkRvbVRyZWUobm9uU3BhY2VzW2pdLCBcInJpZ2h0XCIpO1xuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIHR5cGUgb2YgdGhlIG5leHQgbm9uLXNwYWNlIG5vZGUuICBJZiBpdCdzIGEgZG9jdW1lbnRcbiAgICAgICAgICAgIC8vIGZyYWdtZW50LCBnZXQgdGhlIHR5cGUgb2YgdGhlIGxlZnRtb3N0IG5vZGUgaW4gdGhlIGZyYWdtZW50LlxuICAgICAgICAgICAgdmFyIF9yaWdodCA9IGdldFR5cGVPZkRvbVRyZWUobm9uU3BhY2VzW2ogKyAxXSwgXCJsZWZ0XCIpO1xuXG4gICAgICAgICAgICAvLyBXZSB1c2UgYnVpbGRFeHByZXNzaW9uIGluc2lkZSBvZiBzaXppbmdHcm91cCwgYnV0IGl0IHJldHVybnMgYVxuICAgICAgICAgICAgLy8gZG9jdW1lbnQgZnJhZ21lbnQgb2YgZWxlbWVudHMuICBzaXppbmdHcm91cCBzZXRzIGBpc1JlYWxHcm91cGBcbiAgICAgICAgICAgIC8vIHRvIGZhbHNlIHRvIGF2b2lkIHByb2Nlc3Npbmcgc3BhbnMgbXVsdGlwbGUgdGltZXMuXG4gICAgICAgICAgICBpZiAoX2xlZnQgJiYgX3JpZ2h0ICYmIGlzUmVhbEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNwYWNlID0gaXNMZWZ0VGlnaHQobm9uU3BhY2VzW2ogKyAxXSkgPyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfX3NwYWNpbmdEYXRhX19bXCJiXCIgLyogdGlnaHRTcGFjaW5ncyAqL11bX2xlZnRdW19yaWdodF0gOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfX3NwYWNpbmdEYXRhX19bXCJhXCIgLyogc3BhY2luZ3MgKi9dW19sZWZ0XVtfcmlnaHRdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBnbHVlT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwcmVzc2lvblswXS50eXBlID09PSBcInNpemluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x1ZU9wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1NpemUoZXhwcmVzc2lvblswXS52YWx1ZS5zaXplKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXhwcmVzc2lvblswXS50eXBlID09PSBcInN0eWxpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsdWVPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZU1hcFtleHByZXNzaW9uWzBdLnZhbHVlLnN0eWxlXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBncm91cHMucHVzaChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZUdsdWUoc3BhY2UsIGdsdWVPcHRpb25zKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBcXFxcbm90IGNvbW1hbmRzIHdpdGhpbiB0aGUgZ3JvdXAuXG4gICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgZ3JvdXBzLmxlbmd0aDsgX2kzKyspIHtcbiAgICAgICAgaWYgKGdyb3Vwc1tfaTNdLnZhbHVlID09PSBcIlxcdTAzMzhcIikge1xuICAgICAgICAgICAgZ3JvdXBzW19pM10uc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gICAgICAgICAgICAvLyBUT0RPKGtldmluYikgZml4IHRoaXMgZm9yIFNhZmFyaSBieSBzd2l0Y2hpbmcgdG8gYSBub24tY29tYmluaW5nXG4gICAgICAgICAgICAvLyBjaGFyYWN0ZXIgZm9yIFxcbm90LlxuICAgICAgICAgICAgLy8gVGhpcyB2YWx1ZSB3YXMgZGV0ZXJtaW5lZCBlbXBpcmljYWxseS5cbiAgICAgICAgICAgIC8vIFRPRE8oa2V2aW5iKSBmaWd1cmUgb3V0IHRoZSByZWFsIG1hdGggZm9yIHRoaXMgdmFsdWUuXG4gICAgICAgICAgICBncm91cHNbX2kzXS5zdHlsZS5wYWRkaW5nTGVmdCA9IFwiMC44ZW1cIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBncm91cHM7XG59O1xuXG4vLyBSZXR1cm4gdGhlIG91dGVybW9zdCBub2RlIG9mIGEgZG9tVHJlZS5cbnZhciBnZXRPdXRlcm1vc3ROb2RlID0gZnVuY3Rpb24gZ2V0T3V0ZXJtb3N0Tm9kZShub2RlKSB7XG4gICAgdmFyIHNpZGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IFwicmlnaHRcIjtcblxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uZG9jdW1lbnRGcmFnbWVudCB8fCBub2RlIGluc3RhbmNlb2YgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uYW5jaG9yKSB7XG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHNpZGUgPT09IFwicmlnaHRcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRPdXRlcm1vc3ROb2RlKG5vZGUuY2hpbGRyZW5bbm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNpZGUgPT09IFwibGVmdFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldE91dGVybW9zdE5vZGUobm9kZS5jaGlsZHJlblswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59O1xuXG4vLyBSZXR1cm4gbWF0aCBhdG9tIGNsYXNzIChtY2xhc3MpIG9mIGEgZG9tVHJlZS5cbnZhciBnZXRUeXBlT2ZEb21UcmVlID0gZnVuY3Rpb24gZ2V0VHlwZU9mRG9tVHJlZShub2RlKSB7XG4gICAgdmFyIHNpZGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IFwicmlnaHRcIjtcblxuICAgIGlmICghbm9kZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBub2RlID0gZ2V0T3V0ZXJtb3N0Tm9kZShub2RlLCBzaWRlKTtcbiAgICAvLyBUaGlzIG1ha2VzIGEgbG90IG9mIGFzc3VtcHRpb25zIGFzIHRvIHdoZXJlIHRoZSB0eXBlIG9mIGF0b21cbiAgICAvLyBhcHBlYXJzLiAgV2Ugc2hvdWxkIGRvIGEgYmV0dGVyIGpvYiBvZiBlbmZvcmNpbmcgdGhpcy5cbiAgICBpZiAoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmNvbnRhaW5zKFtcIm1vcmRcIiwgXCJtb3BcIiwgXCJtYmluXCIsIFwibXJlbFwiLCBcIm1vcGVuXCIsIFwibWNsb3NlXCIsIFwibXB1bmN0XCIsIFwibWlubmVyXCJdLCBub2RlLmNsYXNzZXNbMF0pKSB7XG4gICAgICAgIHJldHVybiBub2RlLmNsYXNzZXNbMF07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuLy8gSWYgYG5vZGVgIGlzIGFuIGF0b20gcmV0dXJuIHdoZXRoZXIgaXQncyBiZWVuIGFzc2lnbmVkIHRoZSBtdGlnaHQgY2xhc3MuXG4vLyBJZiBgbm9kZWAgaXMgYSBkb2N1bWVudCBmcmFnbWVudCwgcmV0dXJuIHRoZSB2YWx1ZSBvZiBpc0xlZnRUaWdodCgpIGZvciB0aGVcbi8vIGxlZnRtb3N0IG5vZGUgaW4gdGhlIGZyYWdtZW50LlxuLy8gJ210aWdodCcgaW5kaWNhdGVzIHRoYXQgdGhlIG5vZGUgaXMgc2NyaXB0IG9yIHNjcmlwdHNjcmlwdCBzdHlsZS5cbnZhciBpc0xlZnRUaWdodCA9IGZ1bmN0aW9uIGlzTGVmdFRpZ2h0KG5vZGUpIHtcbiAgICBub2RlID0gZ2V0T3V0ZXJtb3N0Tm9kZShub2RlLCBcImxlZnRcIik7XG4gICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5jb250YWlucyhub2RlLmNsYXNzZXMsIFwibXRpZ2h0XCIpO1xufTtcblxuLyoqXG4gKiBTb21ldGltZXMsIGdyb3VwcyBwZXJmb3JtIHNwZWNpYWwgcnVsZXMgd2hlbiB0aGV5IGhhdmUgc3VwZXJzY3JpcHRzIG9yXG4gKiBzdWJzY3JpcHRzIGF0dGFjaGVkIHRvIHRoZW0uIFRoaXMgZnVuY3Rpb24gbGV0cyB0aGUgYHN1cHN1YmAgZ3JvdXAga25vdyB0aGF0XG4gKiBpdHMgaW5uZXIgZWxlbWVudCBzaG91bGQgaGFuZGxlIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgaW5zdGVhZCBvZlxuICogaGFuZGxpbmcgdGhlbSBpdHNlbGYuXG4gKi9cbnZhciBzaG91bGRIYW5kbGVTdXBTdWIgPSBmdW5jdGlvbiBzaG91bGRIYW5kbGVTdXBTdWIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBpZiAoIWdyb3VwLnZhbHVlLmJhc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBiYXNlID0gZ3JvdXAudmFsdWUuYmFzZTtcbiAgICAgICAgaWYgKGJhc2UudHlwZSA9PT0gXCJvcFwiKSB7XG4gICAgICAgICAgICAvLyBPcGVyYXRvcnMgaGFuZGxlIHN1cHN1YnMgZGlmZmVyZW50bHkgd2hlbiB0aGV5IGhhdmUgbGltaXRzXG4gICAgICAgICAgICAvLyAoZS5nLiBgXFxkaXNwbGF5c3R5bGVcXHN1bV8yXjNgKVxuICAgICAgICAgICAgcmV0dXJuIGJhc2UudmFsdWUubGltaXRzICYmIChvcHRpb25zLnN0eWxlLnNpemUgPT09IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5ESVNQTEFZLnNpemUgfHwgYmFzZS52YWx1ZS5hbHdheXNIYW5kbGVTdXBTdWIpO1xuICAgICAgICB9IGVsc2UgaWYgKGJhc2UudHlwZSA9PT0gXCJhY2NlbnRcIikge1xuICAgICAgICAgICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5pc0NoYXJhY3RlckJveChiYXNlLnZhbHVlLmJhc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGJhc2UudHlwZSA9PT0gXCJob3JpekJyYWNlXCIpIHtcbiAgICAgICAgICAgIHZhciBpc1N1cCA9IGdyb3VwLnZhbHVlLnN1YiA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBpc1N1cCA9PT0gYmFzZS52YWx1ZS5pc092ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbnZhciBtYWtlTnVsbERlbGltaXRlciA9IGZ1bmN0aW9uIG1ha2VOdWxsRGVsaW1pdGVyKG9wdGlvbnMsIGNsYXNzZXMpIHtcbiAgICB2YXIgbW9yZUNsYXNzZXMgPSBbXCJudWxsZGVsaW1pdGVyXCJdLmNvbmNhdChvcHRpb25zLmJhc2VTaXppbmdDbGFzc2VzKCkpO1xuICAgIHJldHVybiBtYWtlU3BhbihjbGFzc2VzLmNvbmNhdChtb3JlQ2xhc3NlcykpO1xufTtcblxuLyoqXG4gKiBUaGlzIGlzIGEgbWFwIG9mIGdyb3VwIHR5cGVzIHRvIHRoZSBmdW5jdGlvbiB1c2VkIHRvIGhhbmRsZSB0aGF0IHR5cGUuXG4gKiBTaW1wbGVyIHR5cGVzIGNvbWUgYXQgdGhlIGJlZ2lubmluZywgd2hpbGUgY29tcGxpY2F0ZWQgdHlwZXMgY29tZSBhZnRlcndhcmRzLlxuICovXG52YXIgZ3JvdXBUeXBlcyA9IHt9O1xuXG5ncm91cFR5cGVzLm1hdGhvcmQgPSBmdW5jdGlvbiAoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VPcmQoZ3JvdXAsIG9wdGlvbnMsIFwibWF0aG9yZFwiKTtcbn07XG5cbmdyb3VwVHlwZXMudGV4dG9yZCA9IGZ1bmN0aW9uIChncm91cCwgb3B0aW9ucykge1xuICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZU9yZChncm91cCwgb3B0aW9ucywgXCJ0ZXh0b3JkXCIpO1xufTtcblxuZ3JvdXBUeXBlcy5iaW4gPSBmdW5jdGlvbiAoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1hdGhzeW0oZ3JvdXAudmFsdWUsIGdyb3VwLm1vZGUsIG9wdGlvbnMsIFtcIm1iaW5cIl0pO1xufTtcblxuZ3JvdXBUeXBlcy5yZWwgPSBmdW5jdGlvbiAoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1hdGhzeW0oZ3JvdXAudmFsdWUsIGdyb3VwLm1vZGUsIG9wdGlvbnMsIFtcIm1yZWxcIl0pO1xufTtcblxuZ3JvdXBUeXBlcy5vcGVuID0gZnVuY3Rpb24gKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYXRoc3ltKGdyb3VwLnZhbHVlLCBncm91cC5tb2RlLCBvcHRpb25zLCBbXCJtb3BlblwiXSk7XG59O1xuXG5ncm91cFR5cGVzLmNsb3NlID0gZnVuY3Rpb24gKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYXRoc3ltKGdyb3VwLnZhbHVlLCBncm91cC5tb2RlLCBvcHRpb25zLCBbXCJtY2xvc2VcIl0pO1xufTtcblxuZ3JvdXBUeXBlcy5pbm5lciA9IGZ1bmN0aW9uIChncm91cCwgb3B0aW9ucykge1xuICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWF0aHN5bShncm91cC52YWx1ZSwgZ3JvdXAubW9kZSwgb3B0aW9ucywgW1wibWlubmVyXCJdKTtcbn07XG5cbmdyb3VwVHlwZXMucHVuY3QgPSBmdW5jdGlvbiAoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1hdGhzeW0oZ3JvdXAudmFsdWUsIGdyb3VwLm1vZGUsIG9wdGlvbnMsIFtcIm1wdW5jdFwiXSk7XG59O1xuXG5ncm91cFR5cGVzLm9yZGdyb3VwID0gZnVuY3Rpb24gKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG1ha2VTcGFuKFtcIm1vcmRcIl0sIGJ1aWxkRXhwcmVzc2lvbihncm91cC52YWx1ZSwgb3B0aW9ucywgdHJ1ZSksIG9wdGlvbnMpO1xufTtcblxuZ3JvdXBUeXBlcy5zdXBzdWIgPSBmdW5jdGlvbiAoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBTdXBlcnNjcmlwdCBhbmQgc3Vic2NyaXB0cyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBvbiBwYWdlXG4gICAgLy8gNDQ1LTQ0NiwgcnVsZXMgMTgoYS1mKS5cblxuICAgIC8vIEhlcmUgaXMgd2hlcmUgd2UgZGVmZXIgdG8gdGhlIGlubmVyIGdyb3VwIGlmIGl0IHNob3VsZCBoYW5kbGVcbiAgICAvLyBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgaXRzZWxmLlxuICAgIGlmIChzaG91bGRIYW5kbGVTdXBTdWIoZ3JvdXAsIG9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBncm91cFR5cGVzW2dyb3VwLnZhbHVlLmJhc2UudHlwZV0oZ3JvdXAsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHZhciBiYXNlID0gYnVpbGRHcm91cChncm91cC52YWx1ZS5iYXNlLCBvcHRpb25zKTtcbiAgICB2YXIgc3VwbSA9IHZvaWQgMDtcbiAgICB2YXIgc3VibSA9IHZvaWQgMDtcblxuICAgIHZhciBtZXRyaWNzID0gb3B0aW9ucy5mb250TWV0cmljcygpO1xuICAgIHZhciBuZXdPcHRpb25zID0gdm9pZCAwO1xuXG4gICAgLy8gUnVsZSAxOGFcbiAgICB2YXIgc3VwU2hpZnQgPSAwO1xuICAgIHZhciBzdWJTaGlmdCA9IDA7XG5cbiAgICBpZiAoZ3JvdXAudmFsdWUuc3VwKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG9wdGlvbnMuc3R5bGUuc3VwKCkpO1xuICAgICAgICBzdXBtID0gYnVpbGRHcm91cChncm91cC52YWx1ZS5zdXAsIG5ld09wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBpZiAoIV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5pc0NoYXJhY3RlckJveChncm91cC52YWx1ZS5iYXNlKSkge1xuICAgICAgICAgICAgc3VwU2hpZnQgPSBiYXNlLmhlaWdodCAtIG5ld09wdGlvbnMuZm9udE1ldHJpY3MoKS5zdXBEcm9wICogbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllciAvIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAudmFsdWUuc3ViKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG9wdGlvbnMuc3R5bGUuc3ViKCkpO1xuICAgICAgICBzdWJtID0gYnVpbGRHcm91cChncm91cC52YWx1ZS5zdWIsIG5ld09wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBpZiAoIV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5pc0NoYXJhY3RlckJveChncm91cC52YWx1ZS5iYXNlKSkge1xuICAgICAgICAgICAgc3ViU2hpZnQgPSBiYXNlLmRlcHRoICsgbmV3T3B0aW9ucy5mb250TWV0cmljcygpLnN1YkRyb3AgKiBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJ1bGUgMThjXG4gICAgdmFyIG1pblN1cFNoaWZ0ID0gdm9pZCAwO1xuICAgIGlmIChvcHRpb25zLnN0eWxlID09PSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uRElTUExBWSkge1xuICAgICAgICBtaW5TdXBTaGlmdCA9IG1ldHJpY3Muc3VwMTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuc3R5bGUuY3JhbXBlZCkge1xuICAgICAgICBtaW5TdXBTaGlmdCA9IG1ldHJpY3Muc3VwMztcbiAgICB9IGVsc2Uge1xuICAgICAgICBtaW5TdXBTaGlmdCA9IG1ldHJpY3Muc3VwMjtcbiAgICB9XG5cbiAgICAvLyBzY3JpcHRzcGFjZSBpcyBhIGZvbnQtc2l6ZS1pbmRlcGVuZGVudCBzaXplLCBzbyBzY2FsZSBpdFxuICAgIC8vIGFwcHJvcHJpYXRlbHlcbiAgICB2YXIgbXVsdGlwbGllciA9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgdmFyIHNjcmlwdHNwYWNlID0gMC41IC8gbWV0cmljcy5wdFBlckVtIC8gbXVsdGlwbGllciArIFwiZW1cIjtcblxuICAgIHZhciBzdXBzdWIgPSB2b2lkIDA7XG4gICAgaWYgKCFncm91cC52YWx1ZS5zdXApIHtcbiAgICAgICAgLy8gUnVsZSAxOGJcbiAgICAgICAgc3ViU2hpZnQgPSBNYXRoLm1heChzdWJTaGlmdCwgbWV0cmljcy5zdWIxLCBzdWJtLmhlaWdodCAtIDAuOCAqIG1ldHJpY3MueEhlaWdodCk7XG5cbiAgICAgICAgdmFyIHZsaXN0RWxlbSA9IFt7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBzdWJtLCBtYXJnaW5SaWdodDogc2NyaXB0c3BhY2UgfV07XG4gICAgICAgIC8vIFN1YnNjcmlwdHMgc2hvdWxkbid0IGJlIHNoaWZ0ZWQgYnkgdGhlIGJhc2UncyBpdGFsaWMgY29ycmVjdGlvbi5cbiAgICAgICAgLy8gQWNjb3VudCBmb3IgdGhhdCBieSBzaGlmdGluZyB0aGUgc3Vic2NyaXB0IGJhY2sgdGhlIGFwcHJvcHJpYXRlXG4gICAgICAgIC8vIGFtb3VudC4gTm90ZSB3ZSBvbmx5IGRvIHRoaXMgd2hlbiB0aGUgYmFzZSBpcyBhIHNpbmdsZSBzeW1ib2wuXG4gICAgICAgIGlmIChiYXNlIGluc3RhbmNlb2YgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uc3ltYm9sTm9kZSkge1xuICAgICAgICAgICAgdmxpc3RFbGVtWzBdLm1hcmdpbkxlZnQgPSAtYmFzZS5pdGFsaWMgKyBcImVtXCI7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBzdWIgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVZMaXN0KHtcbiAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogXCJzaGlmdFwiLFxuICAgICAgICAgICAgcG9zaXRpb25EYXRhOiBzdWJTaGlmdCxcbiAgICAgICAgICAgIGNoaWxkcmVuOiB2bGlzdEVsZW1cbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICghZ3JvdXAudmFsdWUuc3ViKSB7XG4gICAgICAgIC8vIFJ1bGUgMThjLCBkXG4gICAgICAgIHN1cFNoaWZ0ID0gTWF0aC5tYXgoc3VwU2hpZnQsIG1pblN1cFNoaWZ0LCBzdXBtLmRlcHRoICsgMC4yNSAqIG1ldHJpY3MueEhlaWdodCk7XG5cbiAgICAgICAgc3Vwc3ViID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWTGlzdCh7XG4gICAgICAgICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgICAgICAgIHBvc2l0aW9uRGF0YTogLXN1cFNoaWZ0LFxuICAgICAgICAgICAgY2hpbGRyZW46IFt7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBzdXBtLCBtYXJnaW5SaWdodDogc2NyaXB0c3BhY2UgfV1cbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3VwU2hpZnQgPSBNYXRoLm1heChzdXBTaGlmdCwgbWluU3VwU2hpZnQsIHN1cG0uZGVwdGggKyAwLjI1ICogbWV0cmljcy54SGVpZ2h0KTtcbiAgICAgICAgc3ViU2hpZnQgPSBNYXRoLm1heChzdWJTaGlmdCwgbWV0cmljcy5zdWIyKTtcblxuICAgICAgICB2YXIgcnVsZVdpZHRoID0gbWV0cmljcy5kZWZhdWx0UnVsZVRoaWNrbmVzcztcblxuICAgICAgICAvLyBSdWxlIDE4ZVxuICAgICAgICBpZiAoc3VwU2hpZnQgLSBzdXBtLmRlcHRoIC0gKHN1Ym0uaGVpZ2h0IC0gc3ViU2hpZnQpIDwgNCAqIHJ1bGVXaWR0aCkge1xuICAgICAgICAgICAgc3ViU2hpZnQgPSA0ICogcnVsZVdpZHRoIC0gKHN1cFNoaWZ0IC0gc3VwbS5kZXB0aCkgKyBzdWJtLmhlaWdodDtcbiAgICAgICAgICAgIHZhciBwc2kgPSAwLjggKiBtZXRyaWNzLnhIZWlnaHQgLSAoc3VwU2hpZnQgLSBzdXBtLmRlcHRoKTtcbiAgICAgICAgICAgIGlmIChwc2kgPiAwKSB7XG4gICAgICAgICAgICAgICAgc3VwU2hpZnQgKz0gcHNpO1xuICAgICAgICAgICAgICAgIHN1YlNoaWZ0IC09IHBzaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfdmxpc3RFbGVtID0gW3sgdHlwZTogXCJlbGVtXCIsIGVsZW06IHN1Ym0sIHNoaWZ0OiBzdWJTaGlmdCwgbWFyZ2luUmlnaHQ6IHNjcmlwdHNwYWNlIH0sIHsgdHlwZTogXCJlbGVtXCIsIGVsZW06IHN1cG0sIHNoaWZ0OiAtc3VwU2hpZnQsIG1hcmdpblJpZ2h0OiBzY3JpcHRzcGFjZSB9XTtcbiAgICAgICAgLy8gU2VlIGNvbW1lbnQgYWJvdmUgYWJvdXQgc3Vic2NyaXB0cyBub3QgYmVpbmcgc2hpZnRlZFxuICAgICAgICBpZiAoYmFzZSBpbnN0YW5jZW9mIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fZG9tVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnN5bWJvbE5vZGUpIHtcbiAgICAgICAgICAgIF92bGlzdEVsZW1bMF0ubWFyZ2luTGVmdCA9IC1iYXNlLml0YWxpYyArIFwiZW1cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cHN1YiA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlVkxpc3Qoe1xuICAgICAgICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgICAgICAgY2hpbGRyZW46IF92bGlzdEVsZW1cbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gV2UgZW5zdXJlIHRvIHdyYXAgdGhlIHN1cHN1YiB2bGlzdCBpbiBhIHNwYW4ubXN1cHN1YiB0byByZXNldCB0ZXh0LWFsaWduXG4gICAgdmFyIG1jbGFzcyA9IGdldFR5cGVPZkRvbVRyZWUoYmFzZSkgfHwgXCJtb3JkXCI7XG4gICAgcmV0dXJuIG1ha2VTcGFuKFttY2xhc3NdLCBbYmFzZSwgbWFrZVNwYW4oW1wibXN1cHN1YlwiXSwgW3N1cHN1Yl0pXSwgb3B0aW9ucyk7XG59O1xuXG5ncm91cFR5cGVzLnNwYWNpbmcgPSBmdW5jdGlvbiAoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBpZiAoZ3JvdXAudmFsdWUgPT09IFwiXFxcXCBcIiB8fCBncm91cC52YWx1ZSA9PT0gXCJcXFxcc3BhY2VcIiB8fCBncm91cC52YWx1ZSA9PT0gXCIgXCIgfHwgZ3JvdXAudmFsdWUgPT09IFwiflwiKSB7XG4gICAgICAgIC8vIFNwYWNlcyBhcmUgZ2VuZXJhdGVkIGJ5IGFkZGluZyBhbiBhY3R1YWwgc3BhY2UuIEVhY2ggb2YgdGhlc2VcbiAgICAgICAgLy8gdGhpbmdzIGhhcyBhbiBlbnRyeSBpbiB0aGUgc3ltYm9scyB0YWJsZSwgc28gdGhlc2Ugd2lsbCBiZSB0dXJuZWRcbiAgICAgICAgLy8gaW50byBhcHByb3ByaWF0ZSBvdXRwdXRzLlxuICAgICAgICBpZiAoZ3JvdXAubW9kZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZU9yZChncm91cCwgb3B0aW9ucywgXCJ0ZXh0b3JkXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG1ha2VTcGFuKFtcIm1zcGFjZVwiXSwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYXRoc3ltKGdyb3VwLnZhbHVlLCBncm91cC5tb2RlLCBvcHRpb25zKV0sIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXIga2luZHMgb2Ygc3BhY2VzIGFyZSBvZiBhcmJpdHJhcnkgd2lkdGguIFdlIHVzZSBDU1MgdG9cbiAgICAgICAgLy8gZ2VuZXJhdGUgdGhlc2UuXG4gICAgICAgIHJldHVybiBtYWtlU3BhbihbXCJtc3BhY2VcIiwgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnNwYWNpbmdGdW5jdGlvbnNbZ3JvdXAudmFsdWVdLmNsYXNzTmFtZV0sIFtdLCBvcHRpb25zKTtcbiAgICB9XG59O1xuXG5ncm91cFR5cGVzLmhvcml6QnJhY2UgPSBmdW5jdGlvbiAoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgc3R5bGUgPSBvcHRpb25zLnN0eWxlO1xuXG4gICAgdmFyIGhhc1N1cFN1YiA9IGdyb3VwLnR5cGUgPT09IFwic3Vwc3ViXCI7XG4gICAgdmFyIHN1cFN1Ykdyb3VwID0gdm9pZCAwO1xuICAgIHZhciBuZXdPcHRpb25zID0gdm9pZCAwO1xuICAgIGlmIChoYXNTdXBTdWIpIHtcbiAgICAgICAgLy8gUmVmOiBMYVRlWCBzb3VyY2UyZTogfX19fVxcbGltaXRzfVxuICAgICAgICAvLyBpLmUuIExhVGVYIHRyZWF0cyB0aGUgYnJhY2Ugc2ltaWxhciB0byBhbiBvcCBhbmQgcGFzc2VzIGl0XG4gICAgICAgIC8vIHdpdGggXFxsaW1pdHMsIHNvIHdlIG5lZWQgdG8gYXNzaWduIHN1cHN1YiBzdHlsZS5cbiAgICAgICAgaWYgKGdyb3VwLnZhbHVlLnN1cCkge1xuICAgICAgICAgICAgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUuc3VwKCkpO1xuICAgICAgICAgICAgc3VwU3ViR3JvdXAgPSBidWlsZEdyb3VwKGdyb3VwLnZhbHVlLnN1cCwgbmV3T3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdWIoKSk7XG4gICAgICAgICAgICBzdXBTdWJHcm91cCA9IGJ1aWxkR3JvdXAoZ3JvdXAudmFsdWUuc3ViLCBuZXdPcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBncm91cCA9IGdyb3VwLnZhbHVlLmJhc2U7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGhlIGJhc2UgZ3JvdXBcbiAgICB2YXIgYm9keSA9IGJ1aWxkR3JvdXAoZ3JvdXAudmFsdWUuYmFzZSwgb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLkRJU1BMQVkpKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgc3RyZXRjaHkgZWxlbWVudFxuICAgIHZhciBicmFjZUJvZHkgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX3N0cmV0Y2h5X19bXCJhXCIgLyogZGVmYXVsdCAqL10uc3ZnU3Bhbihncm91cCwgb3B0aW9ucyk7XG5cbiAgICAvLyBHZW5lcmF0ZSB0aGUgdmxpc3QsIHdpdGggdGhlIGFwcHJvcHJpYXRlIGtlcm5zICAgICAgICAgICAgICAg4pSP4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSTXG4gICAgLy8gVGhpcyBmaXJzdCB2bGlzdCBjb250YWlucyB0aGUgc3ViamVjdCBtYXR0ZXIgYW5kIHRoZSBicmFjZTogICBlcXVhdGlvblxuICAgIHZhciB2bGlzdCA9IHZvaWQgMDtcbiAgICBpZiAoZ3JvdXAudmFsdWUuaXNPdmVyKSB7XG4gICAgICAgIHZsaXN0ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWTGlzdCh7XG4gICAgICAgICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgICAgICAgY2hpbGRyZW46IFt7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBib2R5IH0sIHsgdHlwZTogXCJrZXJuXCIsIHNpemU6IDAuMSB9LCB7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBicmFjZUJvZHkgfV1cbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgIHZsaXN0LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzFdLmNsYXNzZXMucHVzaChcInN2Zy1hbGlnblwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2bGlzdCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlVkxpc3Qoe1xuICAgICAgICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgICAgICAgcG9zaXRpb25EYXRhOiBib2R5LmRlcHRoICsgMC4xICsgYnJhY2VCb2R5LmhlaWdodCxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogYnJhY2VCb2R5IH0sIHsgdHlwZTogXCJrZXJuXCIsIHNpemU6IDAuMSB9LCB7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBib2R5IH1dXG4gICAgICAgIH0sIG9wdGlvbnMpO1xuICAgICAgICB2bGlzdC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5jaGlsZHJlblswXS5jbGFzc2VzLnB1c2goXCJzdmctYWxpZ25cIik7XG4gICAgfVxuXG4gICAgaWYgKGhhc1N1cFN1Yikge1xuICAgICAgICAvLyBJbiBvcmRlciB0byB3cml0ZSB0aGUgc3Vwc3ViLCB3cmFwIHRoZSBmaXJzdCB2bGlzdCBpbiBhbm90aGVyIHZsaXN0OlxuICAgICAgICAvLyBUaGV5IGNhbid0IGFsbCBnbyBpbiB0aGUgc2FtZSB2bGlzdCwgYmVjYXVzZSB0aGUgbm90ZSBtaWdodCBiZSB3aWRlclxuICAgICAgICAvLyB0aGFuIHRoZSBlcXVhdGlvbi4gV2Ugd2FudCB0aGUgZXF1YXRpb24gdG8gY29udHJvbCB0aGUgYnJhY2Ugd2lkdGguXG5cbiAgICAgICAgLy8gICAgICBub3RlICAgICAgICAgIGxvbmcgbm90ZSAgICAgICAgICAgbG9uZyBub3RlXG4gICAgICAgIC8vICAg4pSP4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSTICAgb3IgICAg4pSP4pSB4pSB4pSB4pSTICAgICBub3QgICAg4pSP4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSTXG4gICAgICAgIC8vICAgIGVxdWF0aW9uICAgICAgICAgICBlcW4gICAgICAgICAgICAgICAgIGVxblxuXG4gICAgICAgIHZhciB2U3BhbiA9IG1ha2VTcGFuKFtcIm1vcmRcIiwgZ3JvdXAudmFsdWUuaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChncm91cC52YWx1ZS5pc092ZXIpIHtcbiAgICAgICAgICAgIHZsaXN0ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWTGlzdCh7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW3sgdHlwZTogXCJlbGVtXCIsIGVsZW06IHZTcGFuIH0sIHsgdHlwZTogXCJrZXJuXCIsIHNpemU6IDAuMiB9LCB7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBzdXBTdWJHcm91cCB9XVxuICAgICAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2bGlzdCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlVkxpc3Qoe1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgICAgICAgICAgICBwb3NpdGlvbkRhdGE6IHZTcGFuLmRlcHRoICsgMC4yICsgc3VwU3ViR3JvdXAuaGVpZ2h0LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogc3VwU3ViR3JvdXAgfSwgeyB0eXBlOiBcImtlcm5cIiwgc2l6ZTogMC4yIH0sIHsgdHlwZTogXCJlbGVtXCIsIGVsZW06IHZTcGFuIH1dXG4gICAgICAgICAgICB9LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYWtlU3BhbihbXCJtb3JkXCIsIGdyb3VwLnZhbHVlLmlzT3ZlciA/IFwibW92ZXJcIiA6IFwibXVuZGVyXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcbn07XG5cbmdyb3VwVHlwZXMueEFycm93ID0gZnVuY3Rpb24gKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHN0eWxlID0gb3B0aW9ucy5zdHlsZTtcblxuICAgIC8vIEJ1aWxkIHRoZSBhcmd1bWVudCBncm91cHMgaW4gdGhlIGFwcHJvcHJpYXRlIHN0eWxlLlxuICAgIC8vIFJlZjogYW1zbWF0aC5kdHg6ICAgXFxoYm94eyRcXHNjcmlwdHN0eWxlXFxta2VybiMzbXV7IzZ9XFxta2VybiM0bXUkfSVcblxuICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdXAoKSk7XG4gICAgdmFyIHVwcGVyR3JvdXAgPSBidWlsZEdyb3VwKGdyb3VwLnZhbHVlLmJvZHksIG5ld09wdGlvbnMsIG9wdGlvbnMpO1xuICAgIHVwcGVyR3JvdXAuY2xhc3Nlcy5wdXNoKFwieC1hcnJvdy1wYWRcIik7XG5cbiAgICB2YXIgbG93ZXJHcm91cCA9IHZvaWQgMDtcbiAgICBpZiAoZ3JvdXAudmFsdWUuYmVsb3cpIHtcbiAgICAgICAgLy8gQnVpbGQgdGhlIGxvd2VyIGdyb3VwXG4gICAgICAgIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1YigpKTtcbiAgICAgICAgbG93ZXJHcm91cCA9IGJ1aWxkR3JvdXAoZ3JvdXAudmFsdWUuYmVsb3csIG5ld09wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBsb3dlckdyb3VwLmNsYXNzZXMucHVzaChcIngtYXJyb3ctcGFkXCIpO1xuICAgIH1cblxuICAgIHZhciBhcnJvd0JvZHkgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX3N0cmV0Y2h5X19bXCJhXCIgLyogZGVmYXVsdCAqL10uc3ZnU3Bhbihncm91cCwgb3B0aW9ucyk7XG5cbiAgICAvLyBSZSBzaGlmdDogTm90ZSB0aGF0IHN0cmV0Y2h5LnN2Z1NwYW4gcmV0dXJuZWQgYXJyb3dCb2R5LmRlcHRoID0gMC5cbiAgICAvLyBUaGUgcG9pbnQgd2Ugd2FudCBvbiB0aGUgbWF0aCBheGlzIGlzIGF0IDAuNSAqIGFycm93Qm9keS5oZWlnaHQuXG4gICAgdmFyIGFycm93U2hpZnQgPSAtb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQgKyAwLjUgKiBhcnJvd0JvZHkuaGVpZ2h0O1xuICAgIC8vIDIgbXUga2Vybi4gUmVmOiBhbXNtYXRoLmR0eDogIzdcXGlmMCMyXFxlbHNlXFxta2VybiMybXVcXGZpXG4gICAgdmFyIHVwcGVyU2hpZnQgPSAtb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQgLSAwLjUgKiBhcnJvd0JvZHkuaGVpZ2h0IC0gMC4xMTE7XG4gICAgaWYgKGdyb3VwLnZhbHVlLmxhYmVsID09PSBcIlxcXFx4bGVmdGVxdWlsaWJyaXVtXCIpIHtcbiAgICAgICAgdXBwZXJTaGlmdCAtPSB1cHBlckdyb3VwLmRlcHRoO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIHRoZSB2bGlzdFxuICAgIHZhciB2bGlzdCA9IHZvaWQgMDtcbiAgICBpZiAoZ3JvdXAudmFsdWUuYmVsb3cpIHtcbiAgICAgICAgdmFyIGxvd2VyU2hpZnQgPSAtb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQgKyBsb3dlckdyb3VwLmhlaWdodCArIDAuNSAqIGFycm93Qm9keS5oZWlnaHQgKyAwLjExMTtcbiAgICAgICAgdmxpc3QgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVZMaXN0KHtcbiAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogdXBwZXJHcm91cCwgc2hpZnQ6IHVwcGVyU2hpZnQgfSwgeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogYXJyb3dCb2R5LCBzaGlmdDogYXJyb3dTaGlmdCB9LCB7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBsb3dlckdyb3VwLCBzaGlmdDogbG93ZXJTaGlmdCB9XVxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2bGlzdCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlVkxpc3Qoe1xuICAgICAgICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgICAgICAgY2hpbGRyZW46IFt7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiB1cHBlckdyb3VwLCBzaGlmdDogdXBwZXJTaGlmdCB9LCB7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBhcnJvd0JvZHksIHNoaWZ0OiBhcnJvd1NoaWZ0IH1dXG4gICAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHZsaXN0LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzFdLmNsYXNzZXMucHVzaChcInN2Zy1hbGlnblwiKTtcblxuICAgIHJldHVybiBtYWtlU3BhbihbXCJtcmVsXCIsIFwieC1hcnJvd1wiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG59O1xuXG5ncm91cFR5cGVzLm1jbGFzcyA9IGZ1bmN0aW9uIChncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBlbGVtZW50cyA9IGJ1aWxkRXhwcmVzc2lvbihncm91cC52YWx1ZS52YWx1ZSwgb3B0aW9ucywgdHJ1ZSk7XG5cbiAgICByZXR1cm4gbWFrZVNwYW4oW2dyb3VwLnZhbHVlLm1jbGFzc10sIGVsZW1lbnRzLCBvcHRpb25zKTtcbn07XG5cbmdyb3VwVHlwZXMucmFpc2Vib3ggPSBmdW5jdGlvbiAoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgYm9keSA9IGdyb3VwVHlwZXMuc2l6aW5nKHsgdmFsdWU6IHtcbiAgICAgICAgICAgIHZhbHVlOiBbe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IGdyb3VwLnZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBmb250OiBcIm1hdGhybVwiIC8vIHNpbXVsYXRlIFxcdGV4dHJtXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICBzaXplOiA2IC8vIHNpbXVsYXRlIFxcbm9ybWFsc2l6ZVxuICAgICAgICB9IH0sIG9wdGlvbnMpO1xuICAgIHZhciBkeSA9IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX3VuaXRzX19bXCJhXCIgLyogY2FsY3VsYXRlU2l6ZSAqL10pKGdyb3VwLnZhbHVlLmR5LnZhbHVlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJzaGlmdFwiLFxuICAgICAgICBwb3NpdGlvbkRhdGE6IC1keSxcbiAgICAgICAgY2hpbGRyZW46IFt7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBib2R5IH1dXG4gICAgfSwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIGJ1aWxkR3JvdXAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBncm91cCBhbmQgY2FsbHMgdGhlIGNvcnJlY3QgZ3JvdXBUeXBlXG4gKiBmdW5jdGlvbiBmb3IgaXQuIEl0IGFsc28gaGFuZGxlcyB0aGUgaW50ZXJhY3Rpb24gb2Ygc2l6ZSBhbmQgc3R5bGUgY2hhbmdlc1xuICogYmV0d2VlbiBwYXJlbnRzIGFuZCBjaGlsZHJlbi5cbiAqL1xudmFyIGJ1aWxkR3JvdXAgPSBmdW5jdGlvbiBidWlsZEdyb3VwKGdyb3VwLCBvcHRpb25zLCBiYXNlT3B0aW9ucykge1xuICAgIGlmICghZ3JvdXApIHtcbiAgICAgICAgcmV0dXJuIG1ha2VTcGFuKCk7XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwVHlwZXNbZ3JvdXAudHlwZV0pIHtcbiAgICAgICAgLy8gQ2FsbCB0aGUgZ3JvdXBUeXBlcyBmdW5jdGlvblxuICAgICAgICB2YXIgZ3JvdXBOb2RlID0gZ3JvdXBUeXBlc1tncm91cC50eXBlXShncm91cCwgb3B0aW9ucyk7XG5cbiAgICAgICAgLy8gSWYgdGhlIHNpemUgY2hhbmdlZCBiZXR3ZWVuIHRoZSBwYXJlbnQgYW5kIHRoZSBjdXJyZW50IGdyb3VwLCBhY2NvdW50XG4gICAgICAgIC8vIGZvciB0aGF0IHNpemUgZGlmZmVyZW5jZS5cbiAgICAgICAgaWYgKGJhc2VPcHRpb25zICYmIG9wdGlvbnMuc2l6ZSAhPT0gYmFzZU9wdGlvbnMuc2l6ZSkge1xuICAgICAgICAgICAgZ3JvdXBOb2RlID0gbWFrZVNwYW4ob3B0aW9ucy5zaXppbmdDbGFzc2VzKGJhc2VPcHRpb25zKSwgW2dyb3VwTm9kZV0sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICB2YXIgbXVsdGlwbGllciA9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBiYXNlT3B0aW9ucy5zaXplTXVsdGlwbGllcjtcblxuICAgICAgICAgICAgZ3JvdXBOb2RlLmhlaWdodCAqPSBtdWx0aXBsaWVyO1xuICAgICAgICAgICAgZ3JvdXBOb2RlLmRlcHRoICo9IG11bHRpcGxpZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ3JvdXBOb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIkdvdCBncm91cCBvZiB1bmtub3duIHR5cGU6ICdcIiArIGdyb3VwLnR5cGUgKyBcIidcIik7XG4gICAgfVxufTtcblxuLyoqXG4gKiBUYWtlIGFuIGVudGlyZSBwYXJzZSB0cmVlLCBhbmQgYnVpbGQgaXQgaW50byBhbiBhcHByb3ByaWF0ZSBzZXQgb2YgSFRNTFxuICogbm9kZXMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSFRNTCh0cmVlLCBvcHRpb25zKSB7XG4gICAgLy8gYnVpbGRFeHByZXNzaW9uIGlzIGRlc3RydWN0aXZlLCBzbyB3ZSBuZWVkIHRvIG1ha2UgYSBjbG9uZVxuICAgIC8vIG9mIHRoZSBpbmNvbWluZyB0cmVlIHNvIHRoYXQgaXQgaXNuJ3QgYWNjaWRlbnRhbGx5IGNoYW5nZWRcbiAgICB0cmVlID0gSlNPTi5wYXJzZShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9jb3JlX2pzX2pzb25fc3RyaW5naWZ5X19fZGVmYXVsdCgpKHRyZWUpKTtcblxuICAgIC8vIEJ1aWxkIHRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBpbiB0aGUgdHJlZVxuICAgIHZhciBleHByZXNzaW9uID0gYnVpbGRFeHByZXNzaW9uKHRyZWUsIG9wdGlvbnMsIHRydWUpO1xuICAgIHZhciBib2R5ID0gbWFrZVNwYW4oW1wiYmFzZVwiXSwgZXhwcmVzc2lvbiwgb3B0aW9ucyk7XG5cbiAgICAvLyBBZGQgc3RydXRzLCB3aGljaCBlbnN1cmUgdGhhdCB0aGUgdG9wIG9mIHRoZSBIVE1MIGVsZW1lbnQgZmFsbHMgYXQgdGhlXG4gICAgLy8gaGVpZ2h0IG9mIHRoZSBleHByZXNzaW9uLCBhbmQgdGhlIGJvdHRvbSBvZiB0aGUgSFRNTCBlbGVtZW50IGZhbGxzIGF0IHRoZVxuICAgIC8vIGRlcHRoIG9mIHRoZSBleHByZXNzaW9uLlxuICAgIHZhciB0b3BTdHJ1dCA9IG1ha2VTcGFuKFtcInN0cnV0XCJdKTtcbiAgICB2YXIgYm90dG9tU3RydXQgPSBtYWtlU3BhbihbXCJzdHJ1dFwiLCBcImJvdHRvbVwiXSk7XG5cbiAgICB0b3BTdHJ1dC5zdHlsZS5oZWlnaHQgPSBib2R5LmhlaWdodCArIFwiZW1cIjtcbiAgICBib3R0b21TdHJ1dC5zdHlsZS5oZWlnaHQgPSBib2R5LmhlaWdodCArIGJvZHkuZGVwdGggKyBcImVtXCI7XG4gICAgLy8gV2UnZCBsaWtlIHRvIHVzZSBgdmVydGljYWwtYWxpZ246IHRvcGAgYnV0IGluIElFIDkgdGhpcyBsb3dlcnMgdGhlXG4gICAgLy8gYmFzZWxpbmUgb2YgdGhlIGJveCB0byB0aGUgYm90dG9tIG9mIHRoaXMgc3RydXQgKGluc3RlYWQgc3RheWluZyBpbiB0aGVcbiAgICAvLyBub3JtYWwgcGxhY2UpIHNvIHdlIHVzZSBhbiBhYnNvbHV0ZSB2YWx1ZSBmb3IgdmVydGljYWwtYWxpZ24gaW5zdGVhZFxuICAgIGJvdHRvbVN0cnV0LnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAtYm9keS5kZXB0aCArIFwiZW1cIjtcblxuICAgIC8vIFdyYXAgdGhlIHN0cnV0cyBhbmQgYm9keSB0b2dldGhlclxuICAgIHZhciBodG1sTm9kZSA9IG1ha2VTcGFuKFtcImthdGV4LWh0bWxcIl0sIFt0b3BTdHJ1dCwgYm90dG9tU3RydXQsIGJvZHldKTtcblxuICAgIGh0bWxOb2RlLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIFwidHJ1ZVwiKTtcblxuICAgIHJldHVybiBodG1sTm9kZTtcbn1cblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG4vKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2YgdXRpbGl0eSBmdW5jdGlvbnMgd2hpY2ggYXJlIHVzZWZ1bCBpbiBvdGhlclxuICogZmlsZXMuXG4gKi9cblxuLyoqXG4gKiBQcm92aWRlIGFuIGBpbmRleE9mYCBmdW5jdGlvbiB3aGljaCB3b3JrcyBpbiBJRTgsIGJ1dCBkZWZlcnMgdG8gbmF0aXZlIGlmXG4gKiBwb3NzaWJsZS5cbiAqL1xudmFyIG5hdGl2ZUluZGV4T2YgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZjtcbnZhciBpbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZihsaXN0LCBlbGVtKSB7XG4gICAgaWYgKGxpc3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChuYXRpdmVJbmRleE9mICYmIGxpc3QuaW5kZXhPZiA9PT0gbmF0aXZlSW5kZXhPZikge1xuICAgICAgICByZXR1cm4gbGlzdC5pbmRleE9mKGVsZW0pO1xuICAgIH1cbiAgICB2YXIgbCA9IGxpc3QubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChsaXN0W2ldID09PSBlbGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG59O1xuXG4vKipcbiAqIFJldHVybiB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgY29udGFpbmVkIGluIGEgbGlzdFxuICovXG52YXIgY29udGFpbnMgPSBmdW5jdGlvbiBjb250YWlucyhsaXN0LCBlbGVtKSB7XG4gICAgcmV0dXJuIGluZGV4T2YobGlzdCwgZWxlbSkgIT09IC0xO1xufTtcblxuLyoqXG4gKiBQcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSBpZiBhIHNldHRpbmcgaXMgdW5kZWZpbmVkXG4gKiBOT1RFOiBDb3VsZG4ndCB1c2UgYFRgIGFzIHRoZSBvdXRwdXQgdHlwZSBkdWUgdG8gZmFjZWJvb2svZmxvdyM1MDIyLlxuICovXG52YXIgZGVmbHQgPSBmdW5jdGlvbiBkZWZsdChzZXR0aW5nLCBkZWZhdWx0SWZVbmRlZmluZWQpIHtcbiAgICByZXR1cm4gc2V0dGluZyA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdElmVW5kZWZpbmVkIDogc2V0dGluZztcbn07XG5cbi8vIGh5cGhlbmF0ZSBhbmQgZXNjYXBlIGFkYXB0ZWQgZnJvbSBGYWNlYm9vaydzIFJlYWN0IHVuZGVyIEFwYWNoZSAyIGxpY2Vuc2VcblxudmFyIHVwcGVyY2FzZSA9IC8oW0EtWl0pL2c7XG52YXIgaHlwaGVuYXRlID0gZnVuY3Rpb24gaHlwaGVuYXRlKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSh1cHBlcmNhc2UsIFwiLSQxXCIpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgRVNDQVBFX0xPT0tVUCA9IHtcbiAgICBcIiZcIjogXCImYW1wO1wiLFxuICAgIFwiPlwiOiBcIiZndDtcIixcbiAgICBcIjxcIjogXCImbHQ7XCIsXG4gICAgXCJcXFwiXCI6IFwiJnF1b3Q7XCIsXG4gICAgXCInXCI6IFwiJiN4Mjc7XCJcbn07XG5cbnZhciBFU0NBUEVfUkVHRVggPSAvWyY+PFwiJ10vZztcblxuLyoqXG4gKiBFc2NhcGVzIHRleHQgdG8gcHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlKHRleHQpIHtcbiAgICByZXR1cm4gU3RyaW5nKHRleHQpLnJlcGxhY2UoRVNDQVBFX1JFR0VYLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIEVTQ0FQRV9MT09LVVBbbWF0Y2hdO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIEEgZnVuY3Rpb24gdG8gc2V0IHRoZSB0ZXh0IGNvbnRlbnQgb2YgYSBET00gZWxlbWVudCBpbiBhbGwgc3VwcG9ydGVkXG4gKiBicm93c2Vycy4gTm90ZSB0aGF0IHdlIGRvbid0IGRlZmluZSB0aGlzIGlmIHRoZXJlIGlzIG5vIGRvY3VtZW50LlxuICovXG52YXIgc2V0VGV4dENvbnRlbnQgPSB2b2lkIDA7XG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHRlc3ROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgaWYgKFwidGV4dENvbnRlbnRcIiBpbiB0ZXN0Tm9kZSkge1xuICAgICAgICBzZXRUZXh0Q29udGVudCA9IGZ1bmN0aW9uIHNldFRleHRDb250ZW50KG5vZGUsIHRleHQpIHtcbiAgICAgICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0O1xuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQobm9kZSwgdGV4dCkge1xuICAgICAgICAgICAgbm9kZS5pbm5lclRleHQgPSB0ZXh0O1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRvIGNsZWFyIGEgbm9kZS5cbiAqL1xuZnVuY3Rpb24gY2xlYXJOb2RlKG5vZGUpIHtcbiAgICBzZXRUZXh0Q29udGVudChub2RlLCBcIlwiKTtcbn1cblxuLyoqXG4gKiBTb21ldGltZXMgd2Ugd2FudCB0byBwdWxsIG91dCB0aGUgaW5uZXJtb3N0IGVsZW1lbnQgb2YgYSBncm91cC4gSW4gbW9zdFxuICogY2FzZXMsIHRoaXMgd2lsbCBqdXN0IGJlIHRoZSBncm91cCBpdHNlbGYsIGJ1dCB3aGVuIG9yZGdyb3VwcyBhbmQgY29sb3JzIGhhdmVcbiAqIGEgc2luZ2xlIGVsZW1lbnQsIHdlIHdhbnQgdG8gcHVsbCB0aGF0IG91dC5cbiAqL1xudmFyIGdldEJhc2VFbGVtID0gZnVuY3Rpb24gZ2V0QmFzZUVsZW0oZ3JvdXApIHtcbiAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGdyb3VwLnR5cGUgPT09IFwib3JkZ3JvdXBcIikge1xuICAgICAgICBpZiAoZ3JvdXAudmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0QmFzZUVsZW0oZ3JvdXAudmFsdWVbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChncm91cC50eXBlID09PSBcImNvbG9yXCIpIHtcbiAgICAgICAgaWYgKGdyb3VwLnZhbHVlLnZhbHVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLnZhbHVlLnZhbHVlWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBncm91cDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZ3JvdXAudHlwZSA9PT0gXCJmb250XCIpIHtcbiAgICAgICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLnZhbHVlLmJvZHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBncm91cDtcbiAgICB9XG59O1xuXG4vKipcbiAqIFRlWGJvb2sgYWxnb3JpdGhtcyBvZnRlbiByZWZlcmVuY2UgXCJjaGFyYWN0ZXIgYm94ZXNcIiwgd2hpY2ggYXJlIHNpbXBseSBncm91cHNcbiAqIHdpdGggYSBzaW5nbGUgY2hhcmFjdGVyIGluIHRoZW0uIFRvIGRlY2lkZSBpZiBzb21ldGhpbmcgaXMgYSBjaGFyYWN0ZXIgYm94LFxuICogd2UgZmluZCBpdHMgaW5uZXJtb3N0IGdyb3VwLCBhbmQgc2VlIGlmIGl0IGlzIGEgc2luZ2xlIGNoYXJhY3Rlci5cbiAqL1xudmFyIGlzQ2hhcmFjdGVyQm94ID0gZnVuY3Rpb24gaXNDaGFyYWN0ZXJCb3goZ3JvdXApIHtcbiAgICB2YXIgYmFzZUVsZW0gPSBnZXRCYXNlRWxlbShncm91cCk7XG5cbiAgICAvLyBUaGVzZSBhcmUgYWxsIHRoZXkgdHlwZXMgb2YgZ3JvdXBzIHdoaWNoIGhvbGQgc2luZ2xlIGNoYXJhY3RlcnNcbiAgICByZXR1cm4gYmFzZUVsZW0udHlwZSA9PT0gXCJtYXRob3JkXCIgfHwgYmFzZUVsZW0udHlwZSA9PT0gXCJ0ZXh0b3JkXCIgfHwgYmFzZUVsZW0udHlwZSA9PT0gXCJiaW5cIiB8fCBiYXNlRWxlbS50eXBlID09PSBcInJlbFwiIHx8IGJhc2VFbGVtLnR5cGUgPT09IFwiaW5uZXJcIiB8fCBiYXNlRWxlbS50eXBlID09PSBcIm9wZW5cIiB8fCBiYXNlRWxlbS50eXBlID09PSBcImNsb3NlXCIgfHwgYmFzZUVsZW0udHlwZSA9PT0gXCJwdW5jdFwiO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh7XG4gICAgY29udGFpbnM6IGNvbnRhaW5zLFxuICAgIGRlZmx0OiBkZWZsdCxcbiAgICBlc2NhcGU6IGVzY2FwZSxcbiAgICBoeXBoZW5hdGU6IGh5cGhlbmF0ZSxcbiAgICBpbmRleE9mOiBpbmRleE9mLFxuICAgIHNldFRleHRDb250ZW50OiBzZXRUZXh0Q29udGVudCxcbiAgICBjbGVhck5vZGU6IGNsZWFyTm9kZSxcbiAgICBnZXRCYXNlRWxlbTogZ2V0QmFzZUVsZW0sXG4gICAgaXNDaGFyYWN0ZXJCb3g6IGlzQ2hhcmFjdGVyQm94XG59KTtcblxuLyoqKi8gfSksXG4vKiA2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1BhcnNlTm9kZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19Ub2tlbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cblxuXG5cbi8qKlxuICogVGhpcyBpcyB0aGUgUGFyc2VFcnJvciBjbGFzcywgd2hpY2ggaXMgdGhlIG1haW4gZXJyb3IgdGhyb3duIGJ5IEthVGVYXG4gKiBmdW5jdGlvbnMgd2hlbiBzb21ldGhpbmcgaGFzIGdvbmUgd3JvbmcuIFRoaXMgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBpbnRlcm5hbFxuICogZXJyb3JzIGZyb20gZXJyb3JzIGluIHRoZSBleHByZXNzaW9uIHRoYXQgdGhlIHVzZXIgcHJvdmlkZWQuXG4gKlxuICogSWYgcG9zc2libGUsIGEgY2FsbGVyIHNob3VsZCBwcm92aWRlIGEgVG9rZW4gb3IgUGFyc2VOb2RlIHdpdGggaW5mb3JtYXRpb25cbiAqIGFib3V0IHdoZXJlIGluIHRoZSBzb3VyY2Ugc3RyaW5nIHRoZSBwcm9ibGVtIG9jY3VycmVkLlxuICovXG5cbnZhciBQYXJzZUVycm9yID1cbi8vIEVycm9yIHBvc2l0aW9uIGJhc2VkIG9uIHBhc3NlZC1pbiBUb2tlbiBvciBQYXJzZU5vZGUuXG5cbmZ1bmN0aW9uIFBhcnNlRXJyb3IobWVzc2FnZSwgLy8gVGhlIGVycm9yIG1lc3NhZ2VcbnRva2VuKSAvLyBBbiBvYmplY3QgcHJvdmlkaW5nIHBvc2l0aW9uIGluZm9ybWF0aW9uXG57XG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQoKSh0aGlzLCBQYXJzZUVycm9yKTtcblxuICAgIHZhciBlcnJvciA9IFwiS2FUZVggcGFyc2UgZXJyb3I6IFwiICsgbWVzc2FnZTtcbiAgICB2YXIgc3RhcnQgPSB2b2lkIDA7XG5cbiAgICB2YXIgbG9jID0gdG9rZW4gJiYgdG9rZW4ubG9jO1xuICAgIGlmIChsb2MgJiYgbG9jLnN0YXJ0IDw9IGxvYy5lbmQpIHtcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSB0aGUgaW5wdXQgYW5kIGEgcG9zaXRpb24sIG1ha2UgdGhlIGVycm9yIGEgYml0IGZhbmNpZXJcblxuICAgICAgICAvLyBHZXQgdGhlIGlucHV0XG4gICAgICAgIHZhciBpbnB1dCA9IGxvYy5sZXhlci5pbnB1dDtcblxuICAgICAgICAvLyBQcmVwZW5kIHNvbWUgaW5mb3JtYXRpb25cbiAgICAgICAgc3RhcnQgPSBsb2Muc3RhcnQ7XG4gICAgICAgIHZhciBlbmQgPSBsb2MuZW5kO1xuICAgICAgICBpZiAoc3RhcnQgPT09IGlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgZXJyb3IgKz0gXCIgYXQgZW5kIG9mIGlucHV0OiBcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVycm9yICs9IFwiIGF0IHBvc2l0aW9uIFwiICsgKHN0YXJ0ICsgMSkgKyBcIjogXCI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVbmRlcmxpbmUgdG9rZW4gaW4gcXVlc3Rpb24gdXNpbmcgY29tYmluaW5nIHVuZGVyc2NvcmVzXG4gICAgICAgIHZhciB1bmRlcmxpbmVkID0gaW5wdXQuc2xpY2Uoc3RhcnQsIGVuZCkucmVwbGFjZSgvW15dL2csIFwiJCZcXHUwMzMyXCIpO1xuXG4gICAgICAgIC8vIEV4dHJhY3Qgc29tZSBjb250ZXh0IGZyb20gdGhlIGlucHV0IGFuZCBhZGQgaXQgdG8gdGhlIGVycm9yXG4gICAgICAgIHZhciBsZWZ0ID0gdm9pZCAwO1xuICAgICAgICBpZiAoc3RhcnQgPiAxNSkge1xuICAgICAgICAgICAgbGVmdCA9IFwi4oCmXCIgKyBpbnB1dC5zbGljZShzdGFydCAtIDE1LCBzdGFydCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZWZ0ID0gaW5wdXQuc2xpY2UoMCwgc3RhcnQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByaWdodCA9IHZvaWQgMDtcbiAgICAgICAgaWYgKGVuZCArIDE1IDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgICAgICAgICByaWdodCA9IGlucHV0LnNsaWNlKGVuZCwgZW5kICsgMTUpICsgXCLigKZcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJpZ2h0ID0gaW5wdXQuc2xpY2UoZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBlcnJvciArPSBsZWZ0ICsgdW5kZXJsaW5lZCArIHJpZ2h0O1xuICAgIH1cblxuICAgIC8vIFNvbWUgaGFja2VyeSB0byBtYWtlIFBhcnNlRXJyb3IgYSBwcm90b3R5cGUgb2YgRXJyb3JcbiAgICAvLyBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvODQ2MDc1M1xuICAgIHZhciBzZWxmID0gbmV3IEVycm9yKGVycm9yKTtcbiAgICBzZWxmLm5hbWUgPSBcIlBhcnNlRXJyb3JcIjtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgc2VsZi5fX3Byb3RvX18gPSBQYXJzZUVycm9yLnByb3RvdHlwZTtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgc2VsZi5wb3NpdGlvbiA9IHN0YXJ0O1xuICAgIHJldHVybiBzZWxmO1xufTtcblxuLy8gJEZsb3dGaXhNZSBNb3JlIGhhY2tlcnlcblxuXG5QYXJzZUVycm9yLnByb3RvdHlwZS5fX3Byb3RvX18gPSBFcnJvci5wcm90b3R5cGU7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoUGFyc2VFcnJvcik7XG5cbi8qKiovIH0pLFxuLyogNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufTtcblxuLyoqKi8gfSksXG4vKiA4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7dmVyc2lvbjogJzIuNC4wJ307XG5pZih0eXBlb2YgX19lID09ICdudW1iZXInKV9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuLyoqKi8gfSksXG4vKiA5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX18pO1xuXG5cblxuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYW5kIGNsYXNzZXMgZm9yIHRoZSB2YXJpb3VzIGtpbmRzIG9mIHN0eWxlc1xuICogdXNlZCBpbiBUZVguIEl0IHByb3ZpZGVzIGEgZ2VuZXJpYyBgU3R5bGVgIGNsYXNzLCB3aGljaCBob2xkcyBpbmZvcm1hdGlvblxuICogYWJvdXQgYSBzcGVjaWZpYyBzdHlsZS4gSXQgdGhlbiBwcm92aWRlcyBpbnN0YW5jZXMgb2YgYWxsIHRoZSBkaWZmZXJlbnQga2luZHNcbiAqIG9mIHN0eWxlcyBwb3NzaWJsZSwgYW5kIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBtb3ZlIGJldHdlZW4gdGhlbSBhbmQgZ2V0XG4gKiBpbmZvcm1hdGlvbiBhYm91dCB0aGVtLlxuICovXG5cbi8qKlxuICogVGhlIG1haW4gc3R5bGUgY2xhc3MuIENvbnRhaW5zIGEgdW5pcXVlIGlkIGZvciB0aGUgc3R5bGUsIGEgc2l6ZSAod2hpY2ggaXNcbiAqIHRoZSBzYW1lIGZvciBjcmFtcGVkIGFuZCB1bmNyYW1wZWQgdmVyc2lvbiBvZiBhIHN0eWxlKSwgYW5kIGEgY3JhbXBlZCBmbGFnLlxuICovXG52YXIgU3R5bGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3R5bGUoaWQsIHNpemUsIGNyYW1wZWQpIHtcbiAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQoKSh0aGlzLCBTdHlsZSk7XG5cbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLnNpemUgPSBzaXplO1xuICAgICAgICB0aGlzLmNyYW1wZWQgPSBjcmFtcGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgc3R5bGUgb2YgYSBzdXBlcnNjcmlwdCBnaXZlbiBhIGJhc2UgaW4gdGhlIGN1cnJlbnQgc3R5bGUuXG4gICAgICovXG5cblxuICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX19kZWZhdWx0KCkoU3R5bGUsIFt7XG4gICAgICAgIGtleTogXCJzdXBcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHN1cCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHlsZXNbX3N1cFt0aGlzLmlkXV07XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogR2V0IHRoZSBzdHlsZSBvZiBhIHN1YnNjcmlwdCBnaXZlbiBhIGJhc2UgaW4gdGhlIGN1cnJlbnQgc3R5bGUuXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwic3ViXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzdWIoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3R5bGVzW19zdWJbdGhpcy5pZF1dO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldCB0aGUgc3R5bGUgb2YgYSBmcmFjdGlvbiBudW1lcmF0b3IgZ2l2ZW4gdGhlIGZyYWN0aW9uIGluIHRoZSBjdXJyZW50XG4gICAgICAgICAqIHN0eWxlLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImZyYWNOdW1cIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGZyYWNOdW0oKSB7XG4gICAgICAgICAgICByZXR1cm4gc3R5bGVzW19mcmFjTnVtW3RoaXMuaWRdXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXQgdGhlIHN0eWxlIG9mIGEgZnJhY3Rpb24gZGVub21pbmF0b3IgZ2l2ZW4gdGhlIGZyYWN0aW9uIGluIHRoZSBjdXJyZW50XG4gICAgICAgICAqIHN0eWxlLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImZyYWNEZW5cIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGZyYWNEZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gc3R5bGVzW19mcmFjRGVuW3RoaXMuaWRdXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXQgdGhlIGNyYW1wZWQgdmVyc2lvbiBvZiBhIHN0eWxlIChpbiBwYXJ0aWN1bGFyLCBjcmFtcGluZyBhIGNyYW1wZWQgc3R5bGVcbiAgICAgICAgICogZG9lc24ndCBjaGFuZ2UgdGhlIHN0eWxlKS5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJjcmFtcFwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY3JhbXAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3R5bGVzW19jcmFtcFt0aGlzLmlkXV07XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogR2V0IGEgdGV4dCBvciBkaXNwbGF5IHZlcnNpb24gb2YgdGhpcyBzdHlsZS5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ0ZXh0XCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0ZXh0KCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0eWxlc1tfdGV4dFt0aGlzLmlkXV07XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJuIHRydWUgaWYgdGhpcyBzdHlsZSBpcyB0aWdodGx5IHNwYWNlZCAoc2NyaXB0c3R5bGUvc2NyaXB0c2NyaXB0c3R5bGUpXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiaXNUaWdodFwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gaXNUaWdodCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNpemUgPj0gMjtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBTdHlsZTtcbn0oKTtcblxuLy8gRXhwb3J0IGFuIGludGVyZmFjZSBmb3IgdHlwZSBjaGVja2luZywgYnV0IGRvbid0IGV4cG9zZSB0aGUgaW1wbGVtZW50YXRpb24uXG4vLyBUaGlzIHdheSwgbm8gbW9yZSBzdHlsZXMgY2FuIGJlIGdlbmVyYXRlZC5cblxuXG4vLyBJRHMgb2YgdGhlIGRpZmZlcmVudCBzdHlsZXNcbnZhciBEID0gMDtcbnZhciBEYyA9IDE7XG52YXIgVCA9IDI7XG52YXIgVGMgPSAzO1xudmFyIFMgPSA0O1xudmFyIFNjID0gNTtcbnZhciBTUyA9IDY7XG52YXIgU1NjID0gNztcblxuLy8gSW5zdGFuY2VzIG9mIHRoZSBkaWZmZXJlbnQgc3R5bGVzXG52YXIgc3R5bGVzID0gW25ldyBTdHlsZShELCAwLCBmYWxzZSksIG5ldyBTdHlsZShEYywgMCwgdHJ1ZSksIG5ldyBTdHlsZShULCAxLCBmYWxzZSksIG5ldyBTdHlsZShUYywgMSwgdHJ1ZSksIG5ldyBTdHlsZShTLCAyLCBmYWxzZSksIG5ldyBTdHlsZShTYywgMiwgdHJ1ZSksIG5ldyBTdHlsZShTUywgMywgZmFsc2UpLCBuZXcgU3R5bGUoU1NjLCAzLCB0cnVlKV07XG5cbi8vIExvb2t1cCB0YWJsZXMgZm9yIHN3aXRjaGluZyBmcm9tIG9uZSBzdHlsZSB0byBhbm90aGVyXG52YXIgX3N1cCA9IFtTLCBTYywgUywgU2MsIFNTLCBTU2MsIFNTLCBTU2NdO1xudmFyIF9zdWIgPSBbU2MsIFNjLCBTYywgU2MsIFNTYywgU1NjLCBTU2MsIFNTY107XG52YXIgX2ZyYWNOdW0gPSBbVCwgVGMsIFMsIFNjLCBTUywgU1NjLCBTUywgU1NjXTtcbnZhciBfZnJhY0RlbiA9IFtUYywgVGMsIFNjLCBTYywgU1NjLCBTU2MsIFNTYywgU1NjXTtcbnZhciBfY3JhbXAgPSBbRGMsIERjLCBUYywgVGMsIFNjLCBTYywgU1NjLCBTU2NdO1xudmFyIF90ZXh0ID0gW0QsIERjLCBULCBUYywgVCwgVGMsIFQsIFRjXTtcblxuLy8gV2Ugb25seSBleHBvcnQgc29tZSBvZiB0aGUgc3R5bGVzLlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh7XG4gICAgRElTUExBWTogc3R5bGVzW0RdLFxuICAgIFRFWFQ6IHN0eWxlc1tUXSxcbiAgICBTQ1JJUFQ6IHN0eWxlc1tTXSxcbiAgICBTQ1JJUFRTQ1JJUFQ6IHN0eWxlc1tTU11cbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDczKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZpbmVQcm9wZXJ0eSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICAgIGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9O1xufSgpO1xuXG4vKioqLyB9KSxcbi8qIDExICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBzdG9yZSAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MikoJ3drcycpXG4gICwgdWlkICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG4gICwgU3ltYm9sICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpLlN5bWJvbFxuICAsIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG4vKioqLyB9KSxcbi8qIDEyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfZ2V0X2l0ZXJhdG9yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19nZXRfaXRlcmF0b3JfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfY29yZV9qc19vYmplY3RfYXNzaWduX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfY29yZV9qc19vYmplY3RfYXNzaWduX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9jb3JlX2pzX29iamVjdF9hc3NpZ25fXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X191bmljb2RlU2NyaXB0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X191dGlsc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX3N2Z0dlb21ldHJ5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMSk7XG5cblxuXG5cblxuLyoqXG4gKiBUaGVzZSBvYmplY3RzIHN0b3JlIHRoZSBkYXRhIGFib3V0IHRoZSBET00gbm9kZXMgd2UgY3JlYXRlLCBhcyB3ZWxsIGFzIHNvbWVcbiAqIGV4dHJhIGRhdGEuIFRoZXkgY2FuIHRoZW4gYmUgdHJhbnNmb3JtZWQgaW50byByZWFsIERPTSBub2RlcyB3aXRoIHRoZVxuICogYHRvTm9kZWAgZnVuY3Rpb24gb3IgSFRNTCBtYXJrdXAgdXNpbmcgYHRvTWFya3VwYC4gVGhleSBhcmUgdXNlZnVsIGZvciBib3RoXG4gKiBzdG9yaW5nIGV4dHJhIHByb3BlcnRpZXMgb24gdGhlIG5vZGVzLCBhcyB3ZWxsIGFzIHByb3ZpZGluZyBhIHdheSB0byBlYXNpbHlcbiAqIHdvcmsgd2l0aCB0aGUgRE9NLlxuICpcbiAqIFNpbWlsYXIgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggTWF0aE1MIG5vZGVzIGV4aXN0IGluIG1hdGhNTFRyZWUuanMuXG4gKi9cblxuXG5cblxuXG4vKipcbiAqIENyZWF0ZSBhbiBIVE1MIGNsYXNzTmFtZSBiYXNlZCBvbiBhIGxpc3Qgb2YgY2xhc3Nlcy4gSW4gYWRkaXRpb24gdG8gam9pbmluZ1xuICogd2l0aCBzcGFjZXMsIHdlIGFsc28gcmVtb3ZlIG51bGwgb3IgZW1wdHkgY2xhc3Nlcy5cbiAqL1xudmFyIGNyZWF0ZUNsYXNzID0gZnVuY3Rpb24gY3JlYXRlQ2xhc3MoY2xhc3Nlcykge1xuICAgIGNsYXNzZXMgPSBjbGFzc2VzLnNsaWNlKCk7XG4gICAgZm9yICh2YXIgaSA9IGNsYXNzZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYgKCFjbGFzc2VzW2ldKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnNwbGljZShpLCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzLmpvaW4oXCIgXCIpO1xufTtcblxuLy8gVG8gZW5zdXJlIHRoYXQgYWxsIG5vZGVzIGhhdmUgY29tcGF0aWJsZSBzaWduYXR1cmVzIGZvciB0aGVzZSBtZXRob2RzLlxuXG5cbi8qKlxuICogQWxsIGBEb21DaGlsZE5vZGVgcyBNVVNUIGhhdmUgYGhlaWdodGAsIGBkZXB0aGAsIGFuZCBgbWF4Rm9udFNpemVgIG51bWVyaWNcbiAqIGZpZWxkcy5cbiAqXG4gKiBgRG9tQ2hpbGROb2RlYCBpcyBub3QgZGVmaW5lZCBhcyBhbiBpbnRlcmZhY2Ugc2luY2UgYGRvY3VtZW50RnJhZ21lbnRgIGFsc29cbiAqIGhhcyB0aGVzZSBmaWVsZHMgYnV0IHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBhIGBEb21DaGlsZE5vZGVgLlxuICovXG5cbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBzcGFuIG5vZGUsIHdpdGggYSBjbGFzc05hbWUsIGEgbGlzdCBvZiBjaGlsZHJlbiwgYW5kXG4gKiBhbiBpbmxpbmUgc3R5bGUuIEl0IGFsc28gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaXRzIGhlaWdodCwgZGVwdGgsIGFuZFxuICogbWF4Rm9udFNpemUuXG4gKi9cbnZhciBzcGFuID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIHNwYW4oY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMsIHN0eWxlKSB7XG4gICAgICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX19kZWZhdWx0KCkodGhpcywgc3Bhbik7XG5cbiAgICAgICAgdGhpcy5jbGFzc2VzID0gY2xhc3NlcyB8fCBbXTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLmhlaWdodCA9IDA7XG4gICAgICAgIHRoaXMuZGVwdGggPSAwO1xuICAgICAgICB0aGlzLm1heEZvbnRTaXplID0gMDtcbiAgICAgICAgdGhpcy5zdHlsZSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2NvcmVfanNfb2JqZWN0X2Fzc2lnbl9fX2RlZmF1bHQoKSh7fSwgc3R5bGUpO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnN0eWxlLmlzVGlnaHQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xhc3Nlcy5wdXNoKFwibXRpZ2h0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNvbG9yID0gb3B0aW9ucy5nZXRDb2xvcigpO1xuICAgICAgICAgICAgaWYgKGNvbG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdHlsZS5jb2xvciA9IGNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBhbiBhcmJpdHJhcnkgYXR0cmlidXRlIG9uIHRoZSBzcGFuLiBXYXJuaW5nOiB1c2UgdGhpcyB3aXNlbHkuIE5vdCBhbGxcbiAgICAgKiBicm93c2VycyBzdXBwb3J0IGF0dHJpYnV0ZXMgdGhlIHNhbWUsIGFuZCBoYXZpbmcgdG9vIG1hbnkgY3VzdG9tIGF0dHJpYnV0ZXNcbiAgICAgKiBpcyBwcm9iYWJseSBiYWQuXG4gICAgICovXG5cblxuICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX19kZWZhdWx0KCkoc3BhbiwgW3tcbiAgICAgICAga2V5OiBcInNldEF0dHJpYnV0ZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ0cnlDb21iaW5lXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0cnlDb21iaW5lKHNpYmxpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb252ZXJ0IHRoZSBzcGFuIGludG8gYW4gSFRNTCBub2RlXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwidG9Ob2RlXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuXG4gICAgICAgICAgICAvLyBBcHBseSB0aGUgY2xhc3NcbiAgICAgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gY3JlYXRlQ2xhc3ModGhpcy5jbGFzc2VzKTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgaW5saW5lIHN0eWxlc1xuICAgICAgICAgICAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5zdHlsZSwgc3R5bGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICRGbG93Rml4TWUgRmxvdyBkb2Vzbid0IHNlZW0gdG8gdW5kZXJzdGFuZCBzcGFuLnN0eWxlJ3MgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zdHlsZVtzdHlsZV0gPSB0aGlzLnN0eWxlW3N0eWxlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IGF0dHJpYnV0ZXNcbiAgICAgICAgICAgIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKGF0dHIsIHRoaXMuYXR0cmlidXRlc1thdHRyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBcHBlbmQgdGhlIGNoaWxkcmVuLCBhbHNvIGFzIEhUTUwgbm9kZXNcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQodGhpcy5jaGlsZHJlbltpXS50b05vZGUoKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzcGFuO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbnZlcnQgdGhlIHNwYW4gaW50byBhbiBIVE1MIG1hcmt1cCBzdHJpbmdcbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ0b01hcmt1cFwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgICAgICAgICB2YXIgbWFya3VwID0gXCI8c3BhblwiO1xuXG4gICAgICAgICAgICAvLyBBZGQgdGhlIGNsYXNzXG4gICAgICAgICAgICBpZiAodGhpcy5jbGFzc2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIG1hcmt1cCArPSBcIiBjbGFzcz1cXFwiXCI7XG4gICAgICAgICAgICAgICAgbWFya3VwICs9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5lc2NhcGUoY3JlYXRlQ2xhc3ModGhpcy5jbGFzc2VzKSk7XG4gICAgICAgICAgICAgICAgbWFya3VwICs9IFwiXFxcIlwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgc3R5bGVzID0gXCJcIjtcblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBzdHlsZXMsIGFmdGVyIGh5cGhlbmF0aW9uXG4gICAgICAgICAgICBmb3IgKHZhciBzdHlsZSBpbiB0aGlzLnN0eWxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlcyArPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX3V0aWxzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uaHlwaGVuYXRlKHN0eWxlKSArIFwiOlwiICsgdGhpcy5zdHlsZVtzdHlsZV0gKyBcIjtcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdHlsZXMpIHtcbiAgICAgICAgICAgICAgICBtYXJrdXAgKz0gXCIgc3R5bGU9XFxcIlwiICsgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmVzY2FwZShzdHlsZXMpICsgXCJcXFwiXCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgYXR0cmlidXRlc1xuICAgICAgICAgICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFya3VwICs9IFwiIFwiICsgYXR0ciArIFwiPVxcXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgbWFya3VwICs9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5lc2NhcGUodGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgICAgICAgICAgICAgICAgbWFya3VwICs9IFwiXFxcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWFya3VwICs9IFwiPlwiO1xuXG4gICAgICAgICAgICAvLyBBZGQgdGhlIG1hcmt1cCBvZiB0aGUgY2hpbGRyZW4sIGFsc28gYXMgbWFya3VwXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtYXJrdXAgKz0gdGhpcy5jaGlsZHJlbltpXS50b01hcmt1cCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXJrdXAgKz0gXCI8L3NwYW4+XCI7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXJrdXA7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gc3Bhbjtcbn0oKTtcblxuLyoqXG4gKiBUaGlzIG5vZGUgcmVwcmVzZW50cyBhbiBhbmNob3IgKDxhPikgZWxlbWVudCB3aXRoIGEgaHlwZXJsaW5rLCBhIGxpc3Qgb2YgY2xhc3NlcyxcbiAqIGEgbGlzdCBvZiBjaGlsZHJlbiwgYW5kIGFuIGlubGluZSBzdHlsZS4gSXQgYWxzbyBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBpdHNcbiAqIGhlaWdodCwgZGVwdGgsIGFuZCBtYXhGb250U2l6ZS5cbiAqL1xuXG5cbnZhciBhbmNob3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gYW5jaG9yKGhyZWYsIGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zKSB7XG4gICAgICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX19kZWZhdWx0KCkodGhpcywgYW5jaG9yKTtcblxuICAgICAgICB0aGlzLmhyZWYgPSBocmVmO1xuICAgICAgICB0aGlzLmNsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMDtcbiAgICAgICAgdGhpcy5kZXB0aCA9IDA7XG4gICAgICAgIHRoaXMubWF4Rm9udFNpemUgPSAwO1xuICAgICAgICB0aGlzLnN0eWxlID0ge307XG4gICAgICAgIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICBpZiAob3B0aW9ucy5zdHlsZS5pc1RpZ2h0KCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xhc3Nlcy5wdXNoKFwibXRpZ2h0XCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb2xvciA9IG9wdGlvbnMuZ2V0Q29sb3IoKTtcbiAgICAgICAgaWYgKGNvbG9yKSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlLmNvbG9yID0gY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGFuIGFyYml0cmFyeSBhdHRyaWJ1dGUgb24gdGhlIGFuY2hvci4gV2FybmluZzogdXNlIHRoaXMgd2lzZWx5LiBOb3QgYWxsXG4gICAgICogYnJvd3NlcnMgc3VwcG9ydCBhdHRyaWJ1dGVzIHRoZSBzYW1lLCBhbmQgaGF2aW5nIHRvbyBtYW55IGN1c3RvbSBhdHRyaWJ1dGVzXG4gICAgICogaXMgcHJvYmFibHkgYmFkLlxuICAgICAqL1xuXG5cbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCgpKGFuY2hvciwgW3tcbiAgICAgICAga2V5OiBcInNldEF0dHJpYnV0ZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ0cnlDb21iaW5lXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0cnlDb21iaW5lKHNpYmxpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb252ZXJ0IHRoZSBhbmNob3IgaW50byBhbiBIVE1MIG5vZGVcbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ0b05vZGVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBocmVmXG4gICAgICAgICAgICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIHRoaXMuaHJlZik7XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBjbGFzc1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3Nlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBhLmNsYXNzTmFtZSA9IGNyZWF0ZUNsYXNzKHRoaXMuY2xhc3Nlcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IGlubGluZSBzdHlsZXNcbiAgICAgICAgICAgIGZvciAodmFyIHN0eWxlIGluIHRoaXMuc3R5bGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuc3R5bGUsIHN0eWxlKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAkRmxvd0ZpeE1lIEZsb3cgZG9lc24ndCBzZWVtIHRvIHVuZGVyc3RhbmQgYS5zdHlsZSdzIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgIGEuc3R5bGVbc3R5bGVdID0gdGhpcy5zdHlsZVtzdHlsZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBcHBseSBhdHRyaWJ1dGVzXG4gICAgICAgICAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCBhdHRyKSkge1xuICAgICAgICAgICAgICAgICAgICBhLnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmF0dHJpYnV0ZXNbYXR0cl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBjaGlsZHJlbiwgYWxzbyBhcyBIVE1MIG5vZGVzXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhLmFwcGVuZENoaWxkKHRoaXMuY2hpbGRyZW5baV0udG9Ob2RlKCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb252ZXJ0IHRoZSBhIGludG8gYW4gSFRNTCBtYXJrdXAgc3RyaW5nXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwidG9NYXJrdXBcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgICAgICAgICAgdmFyIG1hcmt1cCA9IFwiPGFcIjtcblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBocmVmXG4gICAgICAgICAgICBtYXJrdXAgKz0gXCJocmVmPVxcXCJcIiArIChtYXJrdXAgKz0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmVzY2FwZSh0aGlzLmhyZWYpKSArIFwiXFxcIlwiO1xuICAgICAgICAgICAgLy8gQWRkIHRoZSBjbGFzc1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3Nlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBtYXJrdXAgKz0gXCIgY2xhc3M9XFxcIlwiICsgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmVzY2FwZShjcmVhdGVDbGFzcyh0aGlzLmNsYXNzZXMpKSArIFwiXFxcIlwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgc3R5bGVzID0gXCJcIjtcblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBzdHlsZXMsIGFmdGVyIGh5cGhlbmF0aW9uXG4gICAgICAgICAgICBmb3IgKHZhciBzdHlsZSBpbiB0aGlzLnN0eWxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlcyArPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX3V0aWxzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uaHlwaGVuYXRlKHN0eWxlKSArIFwiOlwiICsgdGhpcy5zdHlsZVtzdHlsZV0gKyBcIjtcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdHlsZXMpIHtcbiAgICAgICAgICAgICAgICBtYXJrdXAgKz0gXCIgc3R5bGU9XFxcIlwiICsgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmVzY2FwZShzdHlsZXMpICsgXCJcXFwiXCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgYXR0cmlidXRlc1xuICAgICAgICAgICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXR0ciAhPT0gXCJocmVmXCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFya3VwICs9IFwiIFwiICsgYXR0ciArIFwiPVxcXCJcIiArIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5lc2NhcGUodGhpcy5hdHRyaWJ1dGVzW2F0dHJdKSArIFwiXFxcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWFya3VwICs9IFwiPlwiO1xuXG4gICAgICAgICAgICAvLyBBZGQgdGhlIG1hcmt1cCBvZiB0aGUgY2hpbGRyZW4sIGFsc28gYXMgbWFya3VwXG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fX2RlZmF1bHQoKSh0aGlzLmNoaWxkcmVuKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBfc3RlcC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICBtYXJrdXAgKz0gY2hpbGQudG9NYXJrdXAoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3IgPSBlcnI7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiAmJiBfaXRlcmF0b3IucmV0dXJuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IucmV0dXJuKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXJrdXAgKz0gXCI8L2E+XCI7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXJrdXA7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gYW5jaG9yO1xufSgpO1xuXG4vKipcbiAqIFRoaXMgbm9kZSByZXByZXNlbnRzIGEgZG9jdW1lbnQgZnJhZ21lbnQsIHdoaWNoIGNvbnRhaW5zIGVsZW1lbnRzLCBidXQgd2hlblxuICogcGxhY2VkIGludG8gdGhlIERPTSBkb2Vzbid0IGhhdmUgYW55IHJlcHJlc2VudGF0aW9uIGl0c2VsZi4gVGh1cywgaXQgb25seVxuICogY29udGFpbnMgY2hpbGRyZW4gYW5kIGRvZXNuJ3QgaGF2ZSBhbnkgSFRNTCBwcm9wZXJ0aWVzLiBJdCBhbHNvIGtlZXBzIHRyYWNrXG4gKiBvZiBhIGhlaWdodCwgZGVwdGgsIGFuZCBtYXhGb250U2l6ZS5cbiAqL1xuXG5cbnZhciBkb2N1bWVudEZyYWdtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIGRvY3VtZW50RnJhZ21lbnQoY2hpbGRyZW4pIHtcbiAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQoKSh0aGlzLCBkb2N1bWVudEZyYWdtZW50KTtcblxuICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMDtcbiAgICAgICAgdGhpcy5kZXB0aCA9IDA7XG4gICAgICAgIHRoaXMubWF4Rm9udFNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgdGhlIGZyYWdtZW50IGludG8gYSBub2RlXG4gICAgICovXG5cblxuICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX19kZWZhdWx0KCkoZG9jdW1lbnRGcmFnbWVudCwgW3tcbiAgICAgICAga2V5OiBcInRvTm9kZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdG9Ob2RlKCkge1xuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgZnJhZ21lbnRcbiAgICAgICAgICAgIHZhciBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXG4gICAgICAgICAgICAvLyBBcHBlbmQgdGhlIGNoaWxkcmVuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmcmFnLmFwcGVuZENoaWxkKHRoaXMuY2hpbGRyZW5baV0udG9Ob2RlKCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZnJhZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb252ZXJ0IHRoZSBmcmFnbWVudCBpbnRvIEhUTUwgbWFya3VwXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwidG9NYXJrdXBcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgICAgICAgICAgdmFyIG1hcmt1cCA9IFwiXCI7XG5cbiAgICAgICAgICAgIC8vIFNpbXBseSBjb25jYXRlbmF0ZSB0aGUgbWFya3VwIGZvciB0aGUgY2hpbGRyZW4gdG9nZXRoZXJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG1hcmt1cCArPSB0aGlzLmNoaWxkcmVuW2ldLnRvTWFya3VwKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBtYXJrdXA7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gZG9jdW1lbnRGcmFnbWVudDtcbn0oKTtcblxudmFyIGlDb21iaW5hdGlvbnMgPSB7XG4gICAgJ8OuJzogXCJcXHUwMTMxXFx1MDMwMlwiLFxuICAgICfDryc6IFwiXFx1MDEzMVxcdTAzMDhcIixcbiAgICAnw60nOiBcIlxcdTAxMzFcXHUwMzAxXCIsXG4gICAgLy8gJ8SrJzogJ1xcdTAxMzFcXHUwMzA0JywgLy8gZW5hYmxlIHdoZW4gd2UgYWRkIEV4dGVuZGVkIExhdGluXG4gICAgJ8OsJzogXCJcXHUwMTMxXFx1MDMwMFwiXG59O1xuXG4vKipcbiAqIEEgc3ltYm9sIG5vZGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgc3ltYm9sLiBJdCBlaXRoZXIgcmVuZGVyc1xuICogdG8gYSBzaW5nbGUgdGV4dCBub2RlLCBvciBhIHNwYW4gd2l0aCBhIHNpbmdsZSB0ZXh0IG5vZGUgaW4gaXQsIGRlcGVuZGluZyBvblxuICogd2hldGhlciBpdCBoYXMgQ1NTIGNsYXNzZXMsIHN0eWxlcywgb3IgbmVlZHMgaXRhbGljIGNvcnJlY3Rpb24uXG4gKi9cblxudmFyIHN5bWJvbE5vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gc3ltYm9sTm9kZSh2YWx1ZSwgaGVpZ2h0LCBkZXB0aCwgaXRhbGljLCBza2V3LCB3aWR0aCwgY2xhc3Nlcywgc3R5bGUpIHtcbiAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQoKSh0aGlzLCBzeW1ib2xOb2RlKTtcblxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0IHx8IDA7XG4gICAgICAgIHRoaXMuZGVwdGggPSBkZXB0aCB8fCAwO1xuICAgICAgICB0aGlzLml0YWxpYyA9IGl0YWxpYyB8fCAwO1xuICAgICAgICB0aGlzLnNrZXcgPSBza2V3IHx8IDA7XG4gICAgICAgIHRoaXMud2lkdGggPSB3aWR0aCB8fCAwO1xuICAgICAgICB0aGlzLmNsYXNzZXMgPSBjbGFzc2VzIHx8IFtdO1xuICAgICAgICB0aGlzLnN0eWxlID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfY29yZV9qc19vYmplY3RfYXNzaWduX19fZGVmYXVsdCgpKHt9LCBzdHlsZSk7XG4gICAgICAgIHRoaXMubWF4Rm9udFNpemUgPSAwO1xuXG4gICAgICAgIC8vIE1hcmsgdGV4dCBmcm9tIG5vbi1MYXRpbiBzY3JpcHRzIHdpdGggc3BlY2lmaWMgY2xhc3NlcyBzbyB0aGF0IHdlXG4gICAgICAgIC8vIGNhbiBzcGVjaWZ5IHdoaWNoIGZvbnRzIHRvIHVzZS4gIFRoaXMgYWxsb3dzIHVzIHRvIHJlbmRlciB0aGVzZVxuICAgICAgICAvLyBjaGFyYWN0ZXJzIHdpdGggYSBzZXJpZiBmb250IGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGJyb3dzZXIgd291bGRcbiAgICAgICAgLy8gZWl0aGVyIGRlZmF1bHQgdG8gYSBzYW5zIHNlcmlmIG9yIHJlbmRlciBhIHBsYWNlaG9sZGVyIGNoYXJhY3Rlci5cbiAgICAgICAgLy8gV2UgdXNlIENTUyBjbGFzcyBuYW1lcyBsaWtlIGNqa19mYWxsYmFjaywgaGFuZ3VsX2ZhbGxiYWNrIGFuZFxuICAgICAgICAvLyBicmFobWljX2ZhbGxiYWNrLiBTZWUgLi91bmljb2RlU2NyaXB0cy5qcyBmb3IgdGhlIHNldCBvZiBwb3NzaWJsZVxuICAgICAgICAvLyBzY3JpcHQgbmFtZXNcbiAgICAgICAgdmFyIHNjcmlwdCA9IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3VuaWNvZGVTY3JpcHRzX19bXCJhXCIgLyogc2NyaXB0RnJvbUNvZGVwb2ludCAqL10pKHRoaXMudmFsdWUuY2hhckNvZGVBdCgwKSk7XG4gICAgICAgIGlmIChzY3JpcHQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xhc3Nlcy5wdXNoKHNjcmlwdCArIFwiX2ZhbGxiYWNrXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKC9bw67Dr8Otw6xdLy50ZXN0KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBhZGQgxKsgd2hlbiB3ZSBhZGQgRXh0ZW5kZWQgTGF0aW5cbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBpQ29tYmluYXRpb25zW3RoaXMudmFsdWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fX2RlZmF1bHQoKShzeW1ib2xOb2RlLCBbe1xuICAgICAgICBrZXk6IFwidHJ5Q29tYmluZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdHJ5Q29tYmluZShzaWJsaW5nKSB7XG4gICAgICAgICAgICBpZiAoIXNpYmxpbmcgfHwgIShzaWJsaW5nIGluc3RhbmNlb2Ygc3ltYm9sTm9kZSkgfHwgdGhpcy5pdGFsaWMgPiAwIHx8IGNyZWF0ZUNsYXNzKHRoaXMuY2xhc3NlcykgIT09IGNyZWF0ZUNsYXNzKHNpYmxpbmcuY2xhc3NlcykgfHwgdGhpcy5za2V3ICE9PSBzaWJsaW5nLnNrZXcgfHwgdGhpcy5tYXhGb250U2l6ZSAhPT0gc2libGluZy5tYXhGb250U2l6ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIHN0eWxlIGluIHRoaXMuc3R5bGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZSkgJiYgdGhpcy5zdHlsZVtzdHlsZV0gIT09IHNpYmxpbmcuc3R5bGVbc3R5bGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBfc3R5bGUgaW4gc2libGluZy5zdHlsZSkge1xuICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLnN0eWxlLmhhc093blByb3BlcnR5KF9zdHlsZSkgJiYgdGhpcy5zdHlsZVtfc3R5bGVdICE9PSBzaWJsaW5nLnN0eWxlW19zdHlsZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudmFsdWUgKz0gc2libGluZy52YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gTWF0aC5tYXgodGhpcy5oZWlnaHQsIHNpYmxpbmcuaGVpZ2h0KTtcbiAgICAgICAgICAgIHRoaXMuZGVwdGggPSBNYXRoLm1heCh0aGlzLmRlcHRoLCBzaWJsaW5nLmRlcHRoKTtcbiAgICAgICAgICAgIHRoaXMuaXRhbGljID0gc2libGluZy5pdGFsaWM7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgdGV4dCBub2RlIG9yIHNwYW4gZnJvbSBhIHN5bWJvbCBub2RlLiBOb3RlIHRoYXQgYSBzcGFuIGlzIG9ubHlcbiAgICAgICAgICogY3JlYXRlZCBpZiBpdCBpcyBuZWVkZWQuXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwidG9Ob2RlXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgdmFyIHNwYW4gPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pdGFsaWMgPiAwKSB7XG4gICAgICAgICAgICAgICAgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUubWFyZ2luUmlnaHQgPSB0aGlzLml0YWxpYyArIFwiZW1cIjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgc3BhbiA9IHNwYW4gfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgICAgICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSBjcmVhdGVDbGFzcyh0aGlzLmNsYXNzZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBzdHlsZSBpbiB0aGlzLnN0eWxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4gPSBzcGFuIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgICAgICAgICAgICAgICAgICAvLyAkRmxvd0ZpeE1lIEZsb3cgZG9lc24ndCBzZWVtIHRvIHVuZGVyc3RhbmQgc3Bhbi5zdHlsZSdzIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc3R5bGVbc3R5bGVdID0gdGhpcy5zdHlsZVtzdHlsZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3Bhbikge1xuICAgICAgICAgICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNwYW47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIHN5bWJvbCBub2RlLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInRvTWFya3VwXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICAgICAgICAgIC8vIFRPRE8oYWxwZXJ0KTogTW9yZSBkdXBsaWNhdGlvbiB0aGFuIEknZCBsaWtlIGZyb21cbiAgICAgICAgICAgIC8vIHNwYW4ucHJvdG90eXBlLnRvTWFya3VwIGFuZCBzeW1ib2xOb2RlLnByb3RvdHlwZS50b05vZGUuLi5cbiAgICAgICAgICAgIHZhciBuZWVkc1NwYW4gPSBmYWxzZTtcblxuICAgICAgICAgICAgdmFyIG1hcmt1cCA9IFwiPHNwYW5cIjtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3Nlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBuZWVkc1NwYW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIG1hcmt1cCArPSBcIiBjbGFzcz1cXFwiXCI7XG4gICAgICAgICAgICAgICAgbWFya3VwICs9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5lc2NhcGUoY3JlYXRlQ2xhc3ModGhpcy5jbGFzc2VzKSk7XG4gICAgICAgICAgICAgICAgbWFya3VwICs9IFwiXFxcIlwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgc3R5bGVzID0gXCJcIjtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXRhbGljID4gMCkge1xuICAgICAgICAgICAgICAgIHN0eWxlcyArPSBcIm1hcmdpbi1yaWdodDpcIiArIHRoaXMuaXRhbGljICsgXCJlbTtcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIHN0eWxlIGluIHRoaXMuc3R5bGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzICs9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5oeXBoZW5hdGUoc3R5bGUpICsgXCI6XCIgKyB0aGlzLnN0eWxlW3N0eWxlXSArIFwiO1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN0eWxlcykge1xuICAgICAgICAgICAgICAgIG5lZWRzU3BhbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgbWFya3VwICs9IFwiIHN0eWxlPVxcXCJcIiArIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5lc2NhcGUoc3R5bGVzKSArIFwiXFxcIlwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgZXNjYXBlZCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5lc2NhcGUodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICBpZiAobmVlZHNTcGFuKSB7XG4gICAgICAgICAgICAgICAgbWFya3VwICs9IFwiPlwiO1xuICAgICAgICAgICAgICAgIG1hcmt1cCArPSBlc2NhcGVkO1xuICAgICAgICAgICAgICAgIG1hcmt1cCArPSBcIjwvc3Bhbj5cIjtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFya3VwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBzeW1ib2xOb2RlO1xufSgpO1xuXG4vKipcbiAqIFNWRyBub2RlcyBhcmUgdXNlZCB0byByZW5kZXIgc3RyZXRjaHkgd2lkZSBlbGVtZW50cy5cbiAqL1xuXG5cbnZhciBzdmdOb2RlID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIHN2Z05vZGUoY2hpbGRyZW4sIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQoKSh0aGlzLCBzdmdOb2RlKTtcblxuICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwge307XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMDtcbiAgICAgICAgdGhpcy5kZXB0aCA9IDA7XG4gICAgICAgIHRoaXMubWF4Rm9udFNpemUgPSAwO1xuICAgIH1cbiAgICAvLyBSZXF1aXJlZCBmb3IgYWxsIGBEb21DaGlsZE5vZGVgcy4gQXJlIGFsd2F5cyAwIGZvciBzdmdOb2RlLlxuXG5cbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCgpKHN2Z05vZGUsIFt7XG4gICAgICAgIGtleTogXCJ0b05vZGVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICAgICAgICAgIHZhciBzdmdOUyA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtcbiAgICAgICAgICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCBcInN2Z1wiKTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgYXR0cmlidXRlc1xuICAgICAgICAgICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQodGhpcy5jaGlsZHJlbltpXS50b05vZGUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInRvTWFya3VwXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICAgICAgICAgIHZhciBtYXJrdXAgPSBcIjxzdmdcIjtcblxuICAgICAgICAgICAgLy8gQXBwbHkgYXR0cmlidXRlc1xuICAgICAgICAgICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFya3VwICs9IFwiIFwiICsgYXR0ciArIFwiPSdcIiArIHRoaXMuYXR0cmlidXRlc1thdHRyXSArIFwiJ1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWFya3VwICs9IFwiPlwiO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtYXJrdXAgKz0gdGhpcy5jaGlsZHJlbltpXS50b01hcmt1cCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXJrdXAgKz0gXCI8L3N2Zz5cIjtcblxuICAgICAgICAgICAgcmV0dXJuIG1hcmt1cDtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBzdmdOb2RlO1xufSgpO1xuXG52YXIgcGF0aE5vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gcGF0aE5vZGUocGF0aE5hbWUsIGFsdGVybmF0ZSkge1xuICAgICAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19fZGVmYXVsdCgpKHRoaXMsIHBhdGhOb2RlKTtcblxuICAgICAgICB0aGlzLnBhdGhOYW1lID0gcGF0aE5hbWU7XG4gICAgICAgIHRoaXMuYWx0ZXJuYXRlID0gYWx0ZXJuYXRlOyAvLyBVc2VkIG9ubHkgZm9yIHRhbGwgXFxzcXJ0XG4gICAgfVxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fX2RlZmF1bHQoKShwYXRoTm9kZSwgW3tcbiAgICAgICAga2V5OiBcInRvTm9kZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdG9Ob2RlKCkge1xuICAgICAgICAgICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgICAgICAgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTlMsIFwicGF0aFwiKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYWx0ZXJuYXRlKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkXCIsIHRoaXMuYWx0ZXJuYXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkXCIsIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fc3ZnR2VvbWV0cnlfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5wYXRoW3RoaXMucGF0aE5hbWVdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ0b01hcmt1cFwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbHRlcm5hdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCI8cGF0aCBkPSdcIiArIHRoaXMuYWx0ZXJuYXRlICsgXCInLz5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiPHBhdGggZD0nXCIgKyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX3N2Z0dlb21ldHJ5X19bXCJhXCIgLyogZGVmYXVsdCAqL10ucGF0aFt0aGlzLnBhdGhOYW1lXSArIFwiJy8+XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gcGF0aE5vZGU7XG59KCk7XG5cbnZhciBsaW5lTm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBsaW5lTm9kZShhdHRyaWJ1dGVzKSB7XG4gICAgICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX19kZWZhdWx0KCkodGhpcywgbGluZU5vZGUpO1xuXG4gICAgICAgIHRoaXMuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwge307XG4gICAgfVxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fX2RlZmF1bHQoKShsaW5lTm9kZSwgW3tcbiAgICAgICAga2V5OiBcInRvTm9kZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdG9Ob2RlKCkge1xuICAgICAgICAgICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgICAgICAgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTlMsIFwibGluZVwiKTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgYXR0cmlidXRlc1xuICAgICAgICAgICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6IFwidG9NYXJrdXBcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgICAgICAgICAgdmFyIG1hcmt1cCA9IFwiPGxpbmVcIjtcblxuICAgICAgICAgICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFya3VwICs9IFwiIFwiICsgYXR0ciArIFwiPSdcIiArIHRoaXMuYXR0cmlidXRlc1thdHRyXSArIFwiJ1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWFya3VwICs9IFwiLz5cIjtcblxuICAgICAgICAgICAgcmV0dXJuIG1hcmt1cDtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBsaW5lTm9kZTtcbn0oKTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh7XG4gICAgc3Bhbjogc3BhbixcbiAgICBhbmNob3I6IGFuY2hvcixcbiAgICBkb2N1bWVudEZyYWdtZW50OiBkb2N1bWVudEZyYWdtZW50LFxuICAgIHN5bWJvbE5vZGU6IHN5bWJvbE5vZGUsXG4gICAgc3ZnTm9kZTogc3ZnTm9kZSxcbiAgICBwYXRoTm9kZTogcGF0aE5vZGUsXG4gICAgbGluZU5vZGU6IGxpbmVOb2RlXG59KTtcblxuLyoqKi8gfSksXG4vKiAxMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9oZWxwZXJzX3NsaWNlZFRvQXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfc2xpY2VkVG9BcnJheV9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19zbGljZWRUb0FycmF5X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZG9tVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X191dGlsc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxuXG4vKipcbiAqIFRoaXMgZmlsZSBwcm92aWRlcyBzdXBwb3J0IHRvIGJ1aWxkTWF0aE1MLmpzIGFuZCBidWlsZEhUTUwuanNcbiAqIGZvciBzdHJldGNoeSB3aWRlIGVsZW1lbnRzIHJlbmRlcmVkIGZyb20gU1ZHIGZpbGVzXG4gKiBhbmQgb3RoZXIgQ1NTIHRyaWNrZXJ5LlxuICovXG5cblxuXG5cblxuXG52YXIgc3RyZXRjaHlDb2RlUG9pbnQgPSB7XG4gICAgd2lkZWhhdDogXCJeXCIsXG4gICAgd2lkZXRpbGRlOiBcIn5cIixcbiAgICB1dGlsZGU6IFwiflwiLFxuICAgIG92ZXJsZWZ0YXJyb3c6IFwiXFx1MjE5MFwiLFxuICAgIHVuZGVybGVmdGFycm93OiBcIlxcdTIxOTBcIixcbiAgICB4bGVmdGFycm93OiBcIlxcdTIxOTBcIixcbiAgICBvdmVycmlnaHRhcnJvdzogXCJcXHUyMTkyXCIsXG4gICAgdW5kZXJyaWdodGFycm93OiBcIlxcdTIxOTJcIixcbiAgICB4cmlnaHRhcnJvdzogXCJcXHUyMTkyXCIsXG4gICAgdW5kZXJicmFjZTogXCJcXHUyM0I1XCIsXG4gICAgb3ZlcmJyYWNlOiBcIlxcdTIzREVcIixcbiAgICBvdmVybGVmdHJpZ2h0YXJyb3c6IFwiXFx1MjE5NFwiLFxuICAgIHVuZGVybGVmdHJpZ2h0YXJyb3c6IFwiXFx1MjE5NFwiLFxuICAgIHhsZWZ0cmlnaHRhcnJvdzogXCJcXHUyMTk0XCIsXG4gICAgT3ZlcnJpZ2h0YXJyb3c6IFwiXFx1MjFEMlwiLFxuICAgIHhSaWdodGFycm93OiBcIlxcdTIxRDJcIixcbiAgICBvdmVybGVmdGhhcnBvb246IFwiXFx1MjFCQ1wiLFxuICAgIHhsZWZ0aGFycG9vbnVwOiBcIlxcdTIxQkNcIixcbiAgICBvdmVycmlnaHRoYXJwb29uOiBcIlxcdTIxQzBcIixcbiAgICB4cmlnaHRoYXJwb29udXA6IFwiXFx1MjFDMFwiLFxuICAgIHhMZWZ0YXJyb3c6IFwiXFx1MjFEMFwiLFxuICAgIHhMZWZ0cmlnaHRhcnJvdzogXCJcXHUyMUQ0XCIsXG4gICAgeGhvb2tsZWZ0YXJyb3c6IFwiXFx1MjFBOVwiLFxuICAgIHhob29rcmlnaHRhcnJvdzogXCJcXHUyMUFBXCIsXG4gICAgeG1hcHN0bzogXCJcXHUyMUE2XCIsXG4gICAgeHJpZ2h0aGFycG9vbmRvd246IFwiXFx1MjFDMVwiLFxuICAgIHhsZWZ0aGFycG9vbmRvd246IFwiXFx1MjFCRFwiLFxuICAgIHhyaWdodGxlZnRoYXJwb29uczogXCJcXHUyMUNDXCIsXG4gICAgeGxlZnRyaWdodGhhcnBvb25zOiBcIlxcdTIxQ0JcIixcbiAgICB4dHdvaGVhZGxlZnRhcnJvdzogXCJcXHUyMTlFXCIsXG4gICAgeHR3b2hlYWRyaWdodGFycm93OiBcIlxcdTIxQTBcIixcbiAgICB4bG9uZ2VxdWFsOiBcIj1cIixcbiAgICB4dG9mcm9tOiBcIlxcdTIxQzRcIixcbiAgICB4cmlnaHRsZWZ0YXJyb3dzOiBcIlxcdTIxQzRcIixcbiAgICB4cmlnaHRlcXVpbGlicml1bTogXCJcXHUyMUNDXCIsIC8vIE5vdCBhIHBlcmZlY3QgbWF0Y2guXG4gICAgeGxlZnRlcXVpbGlicml1bTogXCJcXHUyMUNCXCIgLy8gTm9uZSBiZXR0ZXIgYXZhaWxhYmxlLlxufTtcblxudmFyIG1hdGhNTG5vZGUgPSBmdW5jdGlvbiBtYXRoTUxub2RlKGxhYmVsKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb1wiLCBbbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlRleHROb2RlKHN0cmV0Y2h5Q29kZVBvaW50W2xhYmVsLnN1YnN0cigxKV0pXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcInRydWVcIik7XG4gICAgcmV0dXJuIG5vZGU7XG59O1xuXG4vLyBNYW55IG9mIHRoZSBLYVRlWCBTVkcgaW1hZ2VzIGhhdmUgYmVlbiBhZGFwdGVkIGZyb20gZ2x5cGhzIGluIEthVGVYIGZvbnRzLlxuLy8gQ29weXJpZ2h0IChjKSAyMDA5LTIwMTAsIERlc2lnbiBTY2llbmNlLCBJbmMuICg8d3d3Lm1hdGhqYXgub3JnPilcbi8vIENvcHlyaWdodCAoYykgMjAxNC0yMDE3IEtoYW4gQWNhZGVteSAoPHd3dy5raGFuYWNhZGVteS5vcmc+KVxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIFNJTCBPcGVuIEZvbnQgTGljZW5zZSwgVmVyc2lvbiAxLjEuXG4vLyBTZWUgXFxuaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkxcblxuLy8gVmVyeSBMb25nIFNWR3Ncbi8vICAgIE1hbnkgb2YgdGhlIEthVGVYIHN0cmV0Y2h5IHdpZGUgZWxlbWVudHMgdXNlIGEgbG9uZyBTVkcgaW1hZ2UgYW5kIGFuXG4vLyAgICBvdmVyZmxvdzogaGlkZGVuIHRhY3RpYyB0byBhY2hpZXZlIGEgc3RyZXRjaHkgaW1hZ2Ugd2hpbGUgYXZvaWRpbmdcbi8vICAgIGRpc3RvcnRpb24gb2YgYXJyb3doZWFkcyBvciBicmFjZSBjb3JuZXJzLlxuXG4vLyAgICBUaGUgU1ZHIHR5cGljYWxseSBjb250YWlucyBhIHZlcnkgbG9uZyAoNDAwIGVtKSBhcnJvdy5cblxuLy8gICAgVGhlIFNWRyBpcyBpbiBhIGNvbnRhaW5lciBzcGFuIHRoYXQgaGFzIG92ZXJmbG93OiBoaWRkZW4sIHNvIHRoZSBzcGFuXG4vLyAgICBhY3RzIGxpa2UgYSB3aW5kb3cgdGhhdCBleHBvc2VzIG9ubHkgcGFydCBvZiB0aGUgIFNWRy5cblxuLy8gICAgVGhlIFNWRyBhbHdheXMgaGFzIGEgbG9uZ2VyLCB0aGlubmVyIGFzcGVjdCByYXRpbyB0aGFuIHRoZSBjb250YWluZXIgc3Bhbi5cbi8vICAgIEFmdGVyIHRoZSBTVkcgZmlsbHMgMTAwJSBvZiB0aGUgaGVpZ2h0IG9mIHRoZSBjb250YWluZXIgc3Bhbixcbi8vICAgIHRoZXJlIGlzIGEgbG9uZyBhcnJvdyBzaGFmdCBsZWZ0IG92ZXIuIFRoYXQgbGVmdC1vdmVyIHNoYWZ0IGlzIG5vdCBzaG93bi5cbi8vICAgIEluc3RlYWQsIGl0IGlzIHNsaWNlZCBvZmYgYmVjYXVzZSB0aGUgc3BhbidzIENTUyBoYXMgb3ZlcmZsb3c6IGhpZGRlbi5cblxuLy8gICAgVGh1cywgdGhlIHJlYWRlciBzZWVzIGFuIGFycm93IHRoYXQgbWF0Y2hlcyB0aGUgc3ViamVjdCBtYXR0ZXIgd2lkdGhcbi8vICAgIHdpdGhvdXQgZGlzdG9ydGlvbi5cblxuLy8gICAgU29tZSBmdW5jdGlvbnMsIHN1Y2ggYXMgXFxjYW5jZWwsIG5lZWQgdG8gdmFyeSB0aGVpciBhc3BlY3QgcmF0aW8uIFRoZXNlXG4vLyAgICBmdW5jdGlvbnMgZG8gbm90IGdldCB0aGUgb3ZlcmZsb3cgU1ZHIHRyZWF0bWVudC5cblxuLy8gU2Vjb25kIEJydXNoIFN0cm9rZVxuLy8gICAgTG93IHJlc29sdXRpb24gbW9uaXRvcnMgc3RydWdnbGUgdG8gZGlzcGxheSBpbWFnZXMgaW4gZmluZSBkZXRhaWwuXG4vLyAgICBTbyBicm93c2VycyBhcHBseSBhbnRpLWFsaWFzaW5nLiBBIGxvbmcgc3RyYWlnaHQgYXJyb3cgc2hhZnQgdGhlcmVmb3JlXG4vLyAgICB3aWxsIHNvbWV0aW1lcyBhcHBlYXIgYXMgaWYgaXQgaGFzIGEgYmx1cnJlZCBlZGdlLlxuXG4vLyAgICBUbyBtaXRpZ2F0ZSB0aGlzLCB0aGVzZSBTVkcgZmlsZXMgY29udGFpbiBhIHNlY29uZCBcImJydXNoLXN0cm9rZVwiIG9uIHRoZVxuLy8gICAgYXJyb3cgc2hhZnRzLiBUaGF0IGlzLCBhIHNlY29uZCBsb25nIHRoaW4gcmVjdGFuZ3VsYXIgU1ZHIHBhdGggaGFzIGJlZW5cbi8vICAgIHdyaXR0ZW4gZGlyZWN0bHkgb24gdG9wIG9mIGVhY2ggYXJyb3cgc2hhZnQuIFRoaXMgcmVpbmZvcmNlbWVudCBjYXVzZXNcbi8vICAgIHNvbWUgb2YgdGhlIHNjcmVlbiBwaXhlbHMgdG8gZGlzcGxheSBhcyBibGFjayBpbnN0ZWFkIG9mIHRoZSBhbnRpLWFsaWFzZWRcbi8vICAgIGdyYXkgcGl4ZWwgdGhhdCBhICBzaW5nbGUgcGF0aCB3b3VsZCBnZW5lcmF0ZS4gU28gd2UgZ2V0IGFycm93IHNoYWZ0c1xuLy8gICAgd2hvc2UgZWRnZXMgYXBwZWFyIHRvIGJlIHNoYXJwZXIuXG5cbi8vIEluIHRoZSBrYXRleEltYWdlc0RhdGEgb2JqZWN0IGp1c3QgYmVsb3csIHRoZSBkaW1lbnNpb25zIGFsbFxuLy8gY29ycmVzcG9uZCB0byBwYXRoIGdlb21ldHJ5IGluc2lkZSB0aGUgcmVsZXZhbnQgU1ZHLlxuLy8gRm9yIGV4YW1wbGUsIFxcb3ZlcnJpZ2h0YXJyb3cgdXNlcyB0aGUgc2FtZSBhcnJvd2hlYWQgYXMgZ2x5cGggVSsyMTkyXG4vLyBmcm9tIHRoZSBLYVRlWCBNYWluIGZvbnQuIFRoZSBzY2FsaW5nIGZhY3RvciBpcyAxMDAwLlxuLy8gVGhhdCBpcywgaW5zaWRlIHRoZSBmb250LCB0aGF0IGFycm93aGVhZCBpcyA1MjIgdW5pdHMgdGFsbCwgd2hpY2hcbi8vIGNvcnJlc3BvbmRzIHRvIDAuNTIyIGVtIGluc2lkZSB0aGUgZG9jdW1lbnQuXG5cbnZhciBrYXRleEltYWdlc0RhdGEgPSB7XG4gICAgLy8gICBwYXRoKHMpLCBtaW5XaWR0aCwgaGVpZ2h0LCBhbGlnblxuICAgIG92ZXJyaWdodGFycm93OiBbW1wicmlnaHRhcnJvd1wiXSwgMC44ODgsIDUyMiwgXCJ4TWF4WU1pblwiXSxcbiAgICBvdmVybGVmdGFycm93OiBbW1wibGVmdGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNaW5ZTWluXCJdLFxuICAgIHVuZGVycmlnaHRhcnJvdzogW1tcInJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1MjIsIFwieE1heFlNaW5cIl0sXG4gICAgdW5kZXJsZWZ0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gICAgeHJpZ2h0YXJyb3c6IFtbXCJyaWdodGFycm93XCJdLCAxLjQ2OSwgNTIyLCBcInhNYXhZTWluXCJdLFxuICAgIHhsZWZ0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIl0sIDEuNDY5LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gICAgT3ZlcnJpZ2h0YXJyb3c6IFtbXCJkb3VibGVyaWdodGFycm93XCJdLCAwLjg4OCwgNTYwLCBcInhNYXhZTWluXCJdLFxuICAgIHhSaWdodGFycm93OiBbW1wiZG91YmxlcmlnaHRhcnJvd1wiXSwgMS41MjYsIDU2MCwgXCJ4TWF4WU1pblwiXSxcbiAgICB4TGVmdGFycm93OiBbW1wiZG91YmxlbGVmdGFycm93XCJdLCAxLjUyNiwgNTYwLCBcInhNaW5ZTWluXCJdLFxuICAgIG92ZXJsZWZ0aGFycG9vbjogW1tcImxlZnRoYXJwb29uXCJdLCAwLjg4OCwgNTIyLCBcInhNaW5ZTWluXCJdLFxuICAgIHhsZWZ0aGFycG9vbnVwOiBbW1wibGVmdGhhcnBvb25cIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gICAgeGxlZnRoYXJwb29uZG93bjogW1tcImxlZnRoYXJwb29uZG93blwiXSwgMC44ODgsIDUyMiwgXCJ4TWluWU1pblwiXSxcbiAgICBvdmVycmlnaHRoYXJwb29uOiBbW1wicmlnaHRoYXJwb29uXCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICAgIHhyaWdodGhhcnBvb251cDogW1tcInJpZ2h0aGFycG9vblwiXSwgMC44ODgsIDUyMiwgXCJ4TWF4WU1pblwiXSxcbiAgICB4cmlnaHRoYXJwb29uZG93bjogW1tcInJpZ2h0aGFycG9vbmRvd25cIl0sIDAuODg4LCA1MjIsIFwieE1heFlNaW5cIl0sXG4gICAgeGxvbmdlcXVhbDogW1tcImxvbmdlcXVhbFwiXSwgMC44ODgsIDMzNCwgXCJ4TWluWU1pblwiXSxcbiAgICB4dHdvaGVhZGxlZnRhcnJvdzogW1tcInR3b2hlYWRsZWZ0YXJyb3dcIl0sIDAuODg4LCAzMzQsIFwieE1pbllNaW5cIl0sXG4gICAgeHR3b2hlYWRyaWdodGFycm93OiBbW1widHdvaGVhZHJpZ2h0YXJyb3dcIl0sIDAuODg4LCAzMzQsIFwieE1heFlNaW5cIl0sXG5cbiAgICBvdmVybGVmdHJpZ2h0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIiwgXCJyaWdodGFycm93XCJdLCAwLjg4OCwgNTIyXSxcbiAgICBvdmVyYnJhY2U6IFtbXCJsZWZ0YnJhY2VcIiwgXCJtaWRicmFjZVwiLCBcInJpZ2h0YnJhY2VcIl0sIDEuNiwgNTQ4XSxcbiAgICB1bmRlcmJyYWNlOiBbW1wibGVmdGJyYWNldW5kZXJcIiwgXCJtaWRicmFjZXVuZGVyXCIsIFwicmlnaHRicmFjZXVuZGVyXCJdLCAxLjYsIDU0OF0sXG4gICAgdW5kZXJsZWZ0cmlnaHRhcnJvdzogW1tcImxlZnRhcnJvd1wiLCBcInJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1MjJdLFxuICAgIHhsZWZ0cmlnaHRhcnJvdzogW1tcImxlZnRhcnJvd1wiLCBcInJpZ2h0YXJyb3dcIl0sIDEuNzUsIDUyMl0sXG4gICAgeExlZnRyaWdodGFycm93OiBbW1wiZG91YmxlbGVmdGFycm93XCIsIFwiZG91YmxlcmlnaHRhcnJvd1wiXSwgMS43NSwgNTYwXSxcbiAgICB4cmlnaHRsZWZ0aGFycG9vbnM6IFtbXCJsZWZ0aGFycG9vbmRvd25wbHVzXCIsIFwicmlnaHRoYXJwb29ucGx1c1wiXSwgMS43NSwgNzE2XSxcbiAgICB4bGVmdHJpZ2h0aGFycG9vbnM6IFtbXCJsZWZ0aGFycG9vbnBsdXNcIiwgXCJyaWdodGhhcnBvb25kb3ducGx1c1wiXSwgMS43NSwgNzE2XSxcbiAgICB4aG9va2xlZnRhcnJvdzogW1tcImxlZnRhcnJvd1wiLCBcInJpZ2h0aG9va1wiXSwgMS4wOCwgNTIyXSxcbiAgICB4aG9va3JpZ2h0YXJyb3c6IFtbXCJsZWZ0aG9va1wiLCBcInJpZ2h0YXJyb3dcIl0sIDEuMDgsIDUyMl0sXG4gICAgb3ZlcmxpbmVzZWdtZW50OiBbW1wibGVmdGxpbmVzZWdtZW50XCIsIFwicmlnaHRsaW5lc2VnbWVudFwiXSwgMC44ODgsIDUyMl0sXG4gICAgdW5kZXJsaW5lc2VnbWVudDogW1tcImxlZnRsaW5lc2VnbWVudFwiLCBcInJpZ2h0bGluZXNlZ21lbnRcIl0sIDAuODg4LCA1MjJdLFxuICAgIG92ZXJncm91cDogW1tcImxlZnRncm91cFwiLCBcInJpZ2h0Z3JvdXBcIl0sIDAuODg4LCAzNDJdLFxuICAgIHVuZGVyZ3JvdXA6IFtbXCJsZWZ0Z3JvdXB1bmRlclwiLCBcInJpZ2h0Z3JvdXB1bmRlclwiXSwgMC44ODgsIDM0Ml0sXG4gICAgeG1hcHN0bzogW1tcImxlZnRtYXBzdG9cIiwgXCJyaWdodGFycm93XCJdLCAxLjUsIDUyMl0sXG4gICAgeHRvZnJvbTogW1tcImxlZnRUb0Zyb21cIiwgXCJyaWdodFRvRnJvbVwiXSwgMS43NSwgNTI4XSxcblxuICAgIC8vIFRoZSBuZXh0IHRocmVlIGFycm93cyBhcmUgZnJvbSB0aGUgbWhjaGVtIHBhY2thZ2UuXG4gICAgLy8gSW4gbWhjaGVtLnN0eSwgbWluLWxlbmd0aCBpcyAyLjBlbS4gQnV0IHRoZXNlIGFycm93cyBtaWdodCBhcHBlYXIgaW4gdGhlXG4gICAgLy8gZG9jdW1lbnQgYXMgXFx4cmlnaHRhcnJvdyBvciBcXHhyaWdodGxlZnRoYXJwb29ucy4gVGhvc2UgaGF2ZVxuICAgIC8vIG1pbi1sZW5ndGggPSAxLjc1ZW0sIHNvIHdlIHNldCBtaW4tbGVuZ3RoIG9uIHRoZXNlIG5leHQgdGhyZWUgdG8gbWF0Y2guXG4gICAgeHJpZ2h0bGVmdGFycm93czogW1tcImJhcmFib3ZlbGVmdGFycm93XCIsIFwicmlnaHRhcnJvd2Fib3ZlYmFyXCJdLCAxLjc1LCA2NjddLFxuICAgIHhyaWdodGVxdWlsaWJyaXVtOiBbW1wiYmFyYWJvdmVzaG9ydGxlZnRoYXJwb29uXCIsIFwicmlnaHRoYXJwb29uYWJvdmVzaG9ydGJhclwiXSwgMS43NSwgNzE2XSxcbiAgICB4bGVmdGVxdWlsaWJyaXVtOiBbW1wic2hvcnRiYXJhYm92ZWxlZnRoYXJwb29uXCIsIFwic2hvcnRyaWdodGhhcnBvb25hYm92ZWJhclwiXSwgMS43NSwgNzE2XVxufTtcblxudmFyIGdyb3VwTGVuZ3RoID0gZnVuY3Rpb24gZ3JvdXBMZW5ndGgoYXJnKSB7XG4gICAgaWYgKGFyZy50eXBlID09PSBcIm9yZGdyb3VwXCIpIHtcbiAgICAgICAgcmV0dXJuIGFyZy52YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxufTtcblxudmFyIHN2Z1NwYW4gPSBmdW5jdGlvbiBzdmdTcGFuKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gQ3JlYXRlIGEgc3BhbiB3aXRoIGlubGluZSBTVkcgZm9yIHRoZSBlbGVtZW50LlxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ZnU3Bhbl8oKSB7XG4gICAgICAgIHZhciB2aWV3Qm94V2lkdGggPSA0MDAwMDA7IC8vIGRlZmF1bHRcbiAgICAgICAgdmFyIGxhYmVsID0gZ3JvdXAudmFsdWUubGFiZWwuc3Vic3RyKDEpO1xuICAgICAgICBpZiAoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmNvbnRhaW5zKFtcIndpZGVoYXRcIiwgXCJ3aWRldGlsZGVcIiwgXCJ1dGlsZGVcIl0sIGxhYmVsKSkge1xuICAgICAgICAgICAgLy8gVGhlcmUgYXJlIGZvdXIgU1ZHIGltYWdlcyBhdmFpbGFibGUgZm9yIGVhY2ggZnVuY3Rpb24uXG4gICAgICAgICAgICAvLyBDaG9vc2UgYSB0YWxsZXIgaW1hZ2Ugd2hlbiB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0ZXJzLlxuICAgICAgICAgICAgdmFyIG51bUNoYXJzID0gZ3JvdXBMZW5ndGgoZ3JvdXAudmFsdWUuYmFzZSk7XG4gICAgICAgICAgICB2YXIgdmlld0JveEhlaWdodCA9IHZvaWQgMDtcbiAgICAgICAgICAgIHZhciBwYXRoTmFtZSA9IHZvaWQgMDtcbiAgICAgICAgICAgIHZhciBfaGVpZ2h0ID0gdm9pZCAwO1xuXG4gICAgICAgICAgICBpZiAobnVtQ2hhcnMgPiA1KSB7XG4gICAgICAgICAgICAgICAgdmlld0JveEhlaWdodCA9IGxhYmVsID09PSBcIndpZGVoYXRcIiA/IDQyMCA6IDMxMjtcbiAgICAgICAgICAgICAgICB2aWV3Qm94V2lkdGggPSBsYWJlbCA9PT0gXCJ3aWRlaGF0XCIgPyAyMzY0IDogMjM0MDtcbiAgICAgICAgICAgICAgICAvLyBOZXh0IGdldCB0aGUgc3BhbiBoZWlnaHQsIGluIDEwMDAgZW1zXG4gICAgICAgICAgICAgICAgX2hlaWdodCA9IGxhYmVsID09PSBcIndpZGVoYXRcIiA/IDAuNDIgOiAwLjM0O1xuICAgICAgICAgICAgICAgIHBhdGhOYW1lID0gKGxhYmVsID09PSBcIndpZGVoYXRcIiA/IFwid2lkZWhhdFwiIDogXCJ0aWxkZVwiKSArIFwiNFwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgaW1nSW5kZXggPSBbMSwgMSwgMiwgMiwgMywgM11bbnVtQ2hhcnNdO1xuICAgICAgICAgICAgICAgIGlmIChsYWJlbCA9PT0gXCJ3aWRlaGF0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveFdpZHRoID0gWzAsIDEwNjIsIDIzNjQsIDIzNjQsIDIzNjRdW2ltZ0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveEhlaWdodCA9IFswLCAyMzksIDMwMCwgMzYwLCA0MjBdW2ltZ0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgX2hlaWdodCA9IFswLCAwLjI0LCAwLjMsIDAuMywgMC4zNiwgMC40Ml1baW1nSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBwYXRoTmFtZSA9IFwid2lkZWhhdFwiICsgaW1nSW5kZXg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveFdpZHRoID0gWzAsIDYwMCwgMTAzMywgMjMzOSwgMjM0MF1baW1nSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94SGVpZ2h0ID0gWzAsIDI2MCwgMjg2LCAzMDYsIDMxMl1baW1nSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBfaGVpZ2h0ID0gWzAsIDAuMjYsIDAuMjg2LCAwLjMsIDAuMzA2LCAwLjM0XVtpbWdJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIHBhdGhOYW1lID0gXCJ0aWxkZVwiICsgaW1nSW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHBhdGggPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10ucGF0aE5vZGUocGF0aE5hbWUpO1xuICAgICAgICAgICAgdmFyIHN2Z05vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uc3ZnTm9kZShbcGF0aF0sIHtcbiAgICAgICAgICAgICAgICBcIndpZHRoXCI6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IF9oZWlnaHQgKyBcImVtXCIsXG4gICAgICAgICAgICAgICAgXCJ2aWV3Qm94XCI6IFwiMCAwIFwiICsgdmlld0JveFdpZHRoICsgXCIgXCIgKyB2aWV3Qm94SGVpZ2h0LFxuICAgICAgICAgICAgICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBcIm5vbmVcIlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNwYW46IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXSwgW3N2Z05vZGVdLCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IF9oZWlnaHRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgc3BhbnMgPSBbXTtcblxuICAgICAgICAgICAgdmFyIF9rYXRleEltYWdlc0RhdGEkbGFiZSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfc2xpY2VkVG9BcnJheV9fX2RlZmF1bHQoKShrYXRleEltYWdlc0RhdGFbbGFiZWxdLCA0KSxcbiAgICAgICAgICAgICAgICBwYXRocyA9IF9rYXRleEltYWdlc0RhdGEkbGFiZVswXSxcbiAgICAgICAgICAgICAgICBfbWluV2lkdGggPSBfa2F0ZXhJbWFnZXNEYXRhJGxhYmVbMV0sXG4gICAgICAgICAgICAgICAgX3ZpZXdCb3hIZWlnaHQgPSBfa2F0ZXhJbWFnZXNEYXRhJGxhYmVbMl0sXG4gICAgICAgICAgICAgICAgYWxpZ24xID0gX2thdGV4SW1hZ2VzRGF0YSRsYWJlWzNdO1xuXG4gICAgICAgICAgICB2YXIgX2hlaWdodDIgPSBfdmlld0JveEhlaWdodCAvIDEwMDA7XG5cbiAgICAgICAgICAgIHZhciBudW1TdmdDaGlsZHJlbiA9IHBhdGhzLmxlbmd0aDtcbiAgICAgICAgICAgIHZhciB3aWR0aENsYXNzZXMgPSB2b2lkIDA7XG4gICAgICAgICAgICB2YXIgYWxpZ25zID0gdm9pZCAwO1xuICAgICAgICAgICAgaWYgKG51bVN2Z0NoaWxkcmVuID09PSAxKSB7XG4gICAgICAgICAgICAgICAgd2lkdGhDbGFzc2VzID0gW1wiaGlkZS10YWlsXCJdO1xuICAgICAgICAgICAgICAgIGFsaWducyA9IFthbGlnbjFdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChudW1TdmdDaGlsZHJlbiA9PT0gMikge1xuICAgICAgICAgICAgICAgIHdpZHRoQ2xhc3NlcyA9IFtcImhhbGZhcnJvdy1sZWZ0XCIsIFwiaGFsZmFycm93LXJpZ2h0XCJdO1xuICAgICAgICAgICAgICAgIGFsaWducyA9IFtcInhNaW5ZTWluXCIsIFwieE1heFlNaW5cIl07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG51bVN2Z0NoaWxkcmVuID09PSAzKSB7XG4gICAgICAgICAgICAgICAgd2lkdGhDbGFzc2VzID0gW1wiYnJhY2UtbGVmdFwiLCBcImJyYWNlLWNlbnRlclwiLCBcImJyYWNlLXJpZ2h0XCJdO1xuICAgICAgICAgICAgICAgIGFsaWducyA9IFtcInhNaW5ZTWluXCIsIFwieE1pZFlNaW5cIiwgXCJ4TWF4WU1pblwiXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29ycmVjdCBrYXRleEltYWdlc0RhdGEgb3IgdXBkYXRlIGNvZGUgaGVyZSB0byBzdXBwb3J0XFxuICAgICAgICAgICAgICAgICAgICBcIiArIG51bVN2Z0NoaWxkcmVuICsgXCIgY2hpbGRyZW4uXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVN2Z0NoaWxkcmVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgX3BhdGggPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10ucGF0aE5vZGUocGF0aHNbaV0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIF9zdmdOb2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZG9tVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnN2Z05vZGUoW19wYXRoXSwge1xuICAgICAgICAgICAgICAgICAgICBcIndpZHRoXCI6IFwiNDAwZW1cIixcbiAgICAgICAgICAgICAgICAgICAgXCJoZWlnaHRcIjogX2hlaWdodDIgKyBcImVtXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidmlld0JveFwiOiBcIjAgMCBcIiArIHZpZXdCb3hXaWR0aCArIFwiIFwiICsgX3ZpZXdCb3hIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBhbGlnbnNbaV0gKyBcIiBzbGljZVwiXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgX3NwYW4gPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW3dpZHRoQ2xhc3Nlc1tpXV0sIFtfc3ZnTm9kZV0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGlmIChudW1TdmdDaGlsZHJlbiA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBzcGFuOiBfc3BhbiwgbWluV2lkdGg6IF9taW5XaWR0aCwgaGVpZ2h0OiBfaGVpZ2h0MiB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF9zcGFuLnN0eWxlLmhlaWdodCA9IF9oZWlnaHQyICsgXCJlbVwiO1xuICAgICAgICAgICAgICAgICAgICBzcGFucy5wdXNoKF9zcGFuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc3BhbjogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcInN0cmV0Y2h5XCJdLCBzcGFucywgb3B0aW9ucyksXG4gICAgICAgICAgICAgICAgbWluV2lkdGg6IF9taW5XaWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IF9oZWlnaHQyXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSAvLyBidWlsZFN2Z1NwYW5fKClcblxuICAgIHZhciBfYnVpbGRTdmdTcGFuXyA9IGJ1aWxkU3ZnU3Bhbl8oKSxcbiAgICAgICAgc3BhbiA9IF9idWlsZFN2Z1NwYW5fLnNwYW4sXG4gICAgICAgIG1pbldpZHRoID0gX2J1aWxkU3ZnU3Bhbl8ubWluV2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF9idWlsZFN2Z1NwYW5fLmhlaWdodDtcblxuICAgIC8vIE5vdGUgdGhhdCB3ZSBhcmUgcmV0dXJuaW5nIHNwYW4uZGVwdGggPSAwLlxuICAgIC8vIEFueSBhZGp1c3RtZW50cyByZWxhdGl2ZSB0byB0aGUgYmFzZWxpbmUgbXVzdCBiZSBkb25lIGluIGJ1aWxkSFRNTC5cblxuXG4gICAgc3Bhbi5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgc3Bhbi5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBcImVtXCI7XG4gICAgaWYgKG1pbldpZHRoID4gMCkge1xuICAgICAgICBzcGFuLnN0eWxlLm1pbldpZHRoID0gbWluV2lkdGggKyBcImVtXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNwYW47XG59O1xuXG52YXIgZW5jbG9zZVNwYW4gPSBmdW5jdGlvbiBlbmNsb3NlU3Bhbihpbm5lciwgbGFiZWwsIHBhZCwgb3B0aW9ucykge1xuICAgIC8vIFJldHVybiBhbiBpbWFnZSBzcGFuIGZvciBcXGNhbmNlbCwgXFxiY2FuY2VsLCBcXHhjYW5jZWwsIG9yIFxcZmJveFxuICAgIHZhciBpbWcgPSB2b2lkIDA7XG4gICAgdmFyIHRvdGFsSGVpZ2h0ID0gaW5uZXIuaGVpZ2h0ICsgaW5uZXIuZGVwdGggKyAyICogcGFkO1xuXG4gICAgaWYgKC9mYm94fGNvbG9yLy50ZXN0KGxhYmVsKSkge1xuICAgICAgICBpbWcgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wic3RyZXRjaHlcIiwgbGFiZWxdLCBbXSwgb3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKGxhYmVsID09PSBcImZib3hcIikge1xuICAgICAgICAgICAgdmFyIGNvbG9yID0gb3B0aW9ucy5jb2xvciAmJiBvcHRpb25zLmdldENvbG9yKCk7XG4gICAgICAgICAgICBpZiAoY29sb3IpIHtcbiAgICAgICAgICAgICAgICBpbWcuc3R5bGUuYm9yZGVyQ29sb3IgPSBjb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFxcY2FuY2VsLCBcXGJjYW5jZWwsIG9yIFxceGNhbmNlbFxuICAgICAgICAvLyBTaW5jZSBcXGNhbmNlbCdzIFNWRyBpcyBpbmxpbmUgYW5kIGl0IG9taXRzIHRoZSB2aWV3Qm94IGF0dHJpYnV0ZSxcbiAgICAgICAgLy8gaXRzIHN0cm9rZS13aWR0aCB3aWxsIG5vdCB2YXJ5IHdpdGggc3BhbiBhcmVhLlxuXG4gICAgICAgIHZhciBsaW5lcyA9IFtdO1xuICAgICAgICBpZiAoL15bYnhdY2FuY2VsJC8udGVzdChsYWJlbCkpIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2gobmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZG9tVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmxpbmVOb2RlKHtcbiAgICAgICAgICAgICAgICBcIngxXCI6IFwiMFwiLFxuICAgICAgICAgICAgICAgIFwieTFcIjogXCIwXCIsXG4gICAgICAgICAgICAgICAgXCJ4MlwiOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICBcInkyXCI6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMC4wNDZlbVwiXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoL154P2NhbmNlbCQvLnRlc3QobGFiZWwpKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RvbVRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5saW5lTm9kZSh7XG4gICAgICAgICAgICAgICAgXCJ4MVwiOiBcIjBcIixcbiAgICAgICAgICAgICAgICBcInkxXCI6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgIFwieDJcIjogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgXCJ5MlwiOiBcIjBcIixcbiAgICAgICAgICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjAuMDQ2ZW1cIlxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN2Z05vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uc3ZnTm9kZShsaW5lcywge1xuICAgICAgICAgICAgXCJ3aWR0aFwiOiBcIjEwMCVcIixcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IHRvdGFsSGVpZ2h0ICsgXCJlbVwiXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGltZyA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXSwgW3N2Z05vZGVdLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpbWcuaGVpZ2h0ID0gdG90YWxIZWlnaHQ7XG4gICAgaW1nLnN0eWxlLmhlaWdodCA9IHRvdGFsSGVpZ2h0ICsgXCJlbVwiO1xuXG4gICAgcmV0dXJuIGltZztcbn07XG5cbnZhciBydWxlU3BhbiA9IGZ1bmN0aW9uIHJ1bGVTcGFuKGNsYXNzTmFtZSwgbGluZVRoaWNrbmVzcywgb3B0aW9ucykge1xuXG4gICAgLy8gR2V0IGEgc3BhbiB3aXRoIGFuIFNWRyBwYXRoIHRoYXQgZmlsbHMgdGhlIG1pZGRsZSBmaWZ0aCBvZiB0aGUgc3Bhbi5cbiAgICAvLyBXZSdyZSB1c2luZyBhbiBleHRyYSB3aWRlIHNwYW4gc28gQ2hyb21lIHdvbid0IHJvdW5kIGl0IGRvd24gdG8gemVyby5cblxuICAgIHZhciBwYXRoID0gdm9pZCAwO1xuICAgIHZhciBzdmdOb2RlID0gdm9pZCAwO1xuICAgIHZhciBwYXJlbnRDbGFzcyA9IFwic3RyZXRjaHlcIjsgLy8gZGVmYXVsdFxuXG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gXCJ2ZXJ0aWNhbC1zZXBhcmF0b3JcIikge1xuICAgICAgICBwYXRoID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZG9tVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnBhdGhOb2RlKFwidmVydFNlcGFyYXRvclwiKTtcbiAgICAgICAgc3ZnTm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RvbVRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5zdmdOb2RlKFtwYXRoXSwge1xuICAgICAgICAgICAgXCJ3aWR0aFwiOiBcIjAuMjVlbVwiLCAvLyBjb250YWlucyBhIHBhdGggdGhhdCBpcyAwLjA1IGVtcyB3aWRlLlxuICAgICAgICAgICAgXCJoZWlnaHRcIjogXCI0MDBlbVwiLFxuICAgICAgICAgICAgXCJ2aWV3Qm94XCI6IFwiMCAwIDI1MCA0MDAwMDBcIixcbiAgICAgICAgICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBcInhNaW5ZTWluIHNsaWNlXCJcbiAgICAgICAgfSk7XG4gICAgICAgIHBhcmVudENsYXNzID0gXCJ2ZXJ0aWNhbC1zZXBhcmF0b3JcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGUgbmV4dCB0d28gbGluZXMgYXJlIHRoZSBvbmx5IHBsYWNlIGluIEthVGVYIHdoZXJlIFNWRyBwYXRocyBhcmVcbiAgICAgICAgLy8gcHV0IGludG8gYSB2aWV3Qm94IHRoYXQgaXMgbm90IGFsd2F5cyBleGFjdGx5IGEgMTAwMDoxIHNjYWxlIHRvIHRoZVxuICAgICAgICAvLyBkb2N1bWVudCBlbSBzaXplLiBJbnN0ZWFkLCB0aGUgcGF0aCBpcyBhIGhvcml6b250YWwgbGluZSBzZXQgdG9cbiAgICAgICAgLy8gdGFrZSB1cCB0aGUgbWlkZGxlIGZpZnRoIG9mIHRoZSB2aWV3Qm94IGFuZCBzcGFuLiBJZiB0aGUgY29udGV4dCBpc1xuICAgICAgICAvLyBub3JtYWxzaXplL3RleHRzdHlsZSB0aGVuIHRoZSBsaW5lIHdpbGwgYmUgMC4wNGVtIGFuZCB0aGUgdXN1YWxcbiAgICAgICAgLy8gMTAwMDoxIHJhdGlvIGhvbGRzLiBCdXQgaWYgdGhlIGNvbnRleHQgaXMgc2NyaXB0c3R5bGUsIHRoZW5cbiAgICAgICAgLy8gbGluZVRoaWNrbmVzcyA+IDAuMDRlbSBhbmQgd2UgaGF2ZSBhIHJhdGlvIHNvbWV3aGF0IGRpZmZlcmVudCB0aGFuXG4gICAgICAgIC8vIDEwMDA6MS5cblxuICAgICAgICBwYXRoID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZG9tVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnBhdGhOb2RlKFwic3RkSG9yaXpSdWxlXCIpO1xuICAgICAgICBzdmdOb2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZG9tVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnN2Z05vZGUoW3BhdGhdLCB7XG4gICAgICAgICAgICBcIndpZHRoXCI6IFwiNDAwZW1cIixcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDUgKiBsaW5lVGhpY2tuZXNzICsgXCJlbVwiLFxuICAgICAgICAgICAgXCJ2aWV3Qm94XCI6IFwiMCAwIDQwMDAwMCAyMDBcIixcbiAgICAgICAgICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBcInhNaW5ZTWluIHNsaWNlXCJcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbcGFyZW50Q2xhc3NdLCBbc3ZnTm9kZV0sIG9wdGlvbnMpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh7XG4gICAgZW5jbG9zZVNwYW46IGVuY2xvc2VTcGFuLFxuICAgIG1hdGhNTG5vZGU6IG1hdGhNTG5vZGUsXG4gICAgcnVsZVNwYW46IHJ1bGVTcGFuLFxuICAgIHN2Z1NwYW46IHN2Z1NwYW5cbn0pO1xuXG4vKioqLyB9KSxcbi8qIDE0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1NvdXJjZUxvY2F0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKTtcblxuXG5cbi8qKlxuICogVGhlIHJlc3VsdGluZyBwYXJzZSB0cmVlIG5vZGVzIG9mIHRoZSBwYXJzZSB0cmVlLlxuICpcbiAqIEl0IGlzIHBvc3NpYmxlIHRvIHByb3ZpZGUgcG9zaXRpb24gaW5mb3JtYXRpb24sIHNvIHRoYXQgYSBgUGFyc2VOb2RlYCBjYW5cbiAqIGZ1bGZpbGwgYSByb2xlIHNpbWlsYXIgdG8gYSBgVG9rZW5gIGluIGVycm9yIHJlcG9ydGluZy5cbiAqIEZvciBkZXRhaWxzIG9uIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgc2VlIGBUb2tlbmAgY29uc3RydWN0b3IuXG4gKiBQcm92aWRpbmcgc3VjaCBpbmZvcm1hdGlvbiBjYW4gbGVhZCB0byBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLlxuICovXG52YXIgUGFyc2VOb2RlID0gZnVuY3Rpb24gUGFyc2VOb2RlKHR5cGUsIC8vIHR5cGUgb2Ygbm9kZSwgbGlrZSBlLmcuIFwib3JkZ3JvdXBcIlxudmFsdWUsIC8vIHR5cGUtc3BlY2lmaWMgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5vZGVcbm1vZGUsIC8vIHBhcnNlIG1vZGUgaW4gYWN0aW9uIGZvciB0aGlzIG5vZGUsIFwibWF0aFwiIG9yIFwidGV4dFwiXG5maXJzdCwgLy8gZmlyc3QgdG9rZW4gb3Igbm9kZSBvZiB0aGUgaW5wdXQgZm9yXG5sYXN0KSAvLyBsYXN0IHRva2VuIG9yIG5vZGUgb2YgdGhlIGlucHV0IGZvciB0aGlzXG4vLyBub2RlLCB3aWxsIGRlZmF1bHQgdG8gZmlyc3RUb2tlbiBpZiB1bnNldFxue1xuICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX19kZWZhdWx0KCkodGhpcywgUGFyc2VOb2RlKTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgdGhpcy5sb2MgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1NvdXJjZUxvY2F0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ucmFuZ2UoZmlyc3QsIGxhc3QpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChQYXJzZU5vZGUpO1xuXG4vKioqLyB9KSxcbi8qIDE1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBhbk9iamVjdCAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpXG4gICwgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuICAsIHRvUHJpbWl0aXZlICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MSlcbiAgLCBkUCAgICAgICAgICAgICA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKXtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmKElFOF9ET01fREVGSU5FKXRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG4gIGlmKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcyl0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZigndmFsdWUnIGluIEF0dHJpYnV0ZXMpT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuLyoqKi8gfSksXG4vKiAxNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbi8qKiovIH0pLFxuLyogMTcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLyoqKi8gfSksXG4vKiAxOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oMTAzKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9KSxcbi8qIDE5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiB2YWxpZFVuaXQ7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjYWxjdWxhdGVTaXplOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1BhcnNlRXJyb3JfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19PcHRpb25zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcblxuXG4vKipcbiAqIFRoaXMgZmlsZSBkb2VzIGNvbnZlcnNpb24gYmV0d2VlbiB1bml0cy4gIEluIHBhcnRpY3VsYXIsIGl0IHByb3ZpZGVzXG4gKiBjYWxjdWxhdGVTaXplIHRvIGNvbnZlcnQgb3RoZXIgdW5pdHMgaW50byBlbXMuXG4gKi9cblxuXG5cblxuLy8gVGhpcyB0YWJsZSBnaXZlcyB0aGUgbnVtYmVyIG9mIFRlWCBwdHMgaW4gb25lIG9mIGVhY2ggKmFic29sdXRlKiBUZVggdW5pdC5cbi8vIFRodXMsIG11bHRpcGx5aW5nIGEgbGVuZ3RoIGJ5IHRoaXMgbnVtYmVyIGNvbnZlcnRzIHRoZSBsZW5ndGggZnJvbSB1bml0c1xuLy8gaW50byBwdHMuICBEaXZpZGluZyB0aGUgcmVzdWx0IGJ5IHB0UGVyRW0gZ2l2ZXMgdGhlIG51bWJlciBvZiBlbXNcbi8vICphc3N1bWluZyogYSBmb250IHNpemUgb2YgcHRQZXJFbSAobm9ybWFsIHNpemUsIG5vcm1hbCBzdHlsZSkuXG52YXIgcHRQZXJVbml0ID0ge1xuICAgIC8vIGh0dHBzOi8vZW4ud2lraWJvb2tzLm9yZy93aWtpL0xhVGVYL0xlbmd0aHMgYW5kXG4gICAgLy8gaHR0cHM6Ly90ZXguc3RhY2tleGNoYW5nZS5jb20vYS84MjYzXG4gICAgXCJwdFwiOiAxLCAvLyBUZVggcG9pbnRcbiAgICBcIm1tXCI6IDcyMjcgLyAyNTQwLCAvLyBtaWxsaW1ldGVyXG4gICAgXCJjbVwiOiA3MjI3IC8gMjU0LCAvLyBjZW50aW1ldGVyXG4gICAgXCJpblwiOiA3Mi4yNywgLy8gaW5jaFxuICAgIFwiYnBcIjogODAzIC8gODAwLCAvLyBiaWcgKFBvc3RTY3JpcHQpIHBvaW50c1xuICAgIFwicGNcIjogMTIsIC8vIHBpY2FcbiAgICBcImRkXCI6IDEyMzggLyAxMTU3LCAvLyBkaWRvdFxuICAgIFwiY2NcIjogMTQ4NTYgLyAxMTU3LCAvLyBjaWNlcm8gKDEyIGRpZG90KVxuICAgIFwibmRcIjogNjg1IC8gNjQyLCAvLyBuZXcgZGlkb3RcbiAgICBcIm5jXCI6IDEzNzAgLyAxMDcsIC8vIG5ldyBjaWNlcm8gKDEyIG5ldyBkaWRvdClcbiAgICBcInNwXCI6IDEgLyA2NTUzNiwgLy8gc2NhbGVkIHBvaW50IChUZVgncyBpbnRlcm5hbCBzbWFsbGVzdCB1bml0KVxuICAgIC8vIGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL2EvNDEzNzFcbiAgICBcInB4XCI6IDgwMyAvIDgwMCAvLyBcXHBkZnB4ZGltZW4gZGVmYXVsdHMgdG8gMSBicCBpbiBwZGZUZVggYW5kIEx1YVRlWFxufTtcblxuLy8gRGljdGlvbmFyeSBvZiByZWxhdGl2ZSB1bml0cywgZm9yIGZhc3QgdmFsaWRpdHkgdGVzdGluZy5cbnZhciByZWxhdGl2ZVVuaXQgPSB7XG4gICAgXCJleFwiOiB0cnVlLFxuICAgIFwiZW1cIjogdHJ1ZSxcbiAgICBcIm11XCI6IHRydWVcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNwZWNpZmllZCB1bml0IChlaXRoZXIgYSBzdHJpbmcgZGVmaW5pbmcgdGhlIHVuaXRcbiAqIG9yIGEgXCJzaXplXCIgcGFyc2Ugbm9kZSBjb250YWluaW5nIGEgdW5pdCBmaWVsZCkgaXMgdmFsaWQuXG4gKi9cbnZhciB2YWxpZFVuaXQgPSBmdW5jdGlvbiB2YWxpZFVuaXQodW5pdCkge1xuICAgIGlmICh0eXBlb2YgdW5pdCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB1bml0ID0gdW5pdC51bml0O1xuICAgIH1cbiAgICByZXR1cm4gdW5pdCBpbiBwdFBlclVuaXQgfHwgdW5pdCBpbiByZWxhdGl2ZVVuaXQgfHwgdW5pdCA9PT0gXCJleFwiO1xufTtcblxuLypcbiAqIENvbnZlcnQgYSBcInNpemVcIiBwYXJzZSBub2RlICh3aXRoIG51bWVyaWMgXCJudW1iZXJcIiBhbmQgc3RyaW5nIFwidW5pdFwiIGZpZWxkcyxcbiAqIGFzIHBhcnNlZCBieSBmdW5jdGlvbnMuanMgYXJnVHlwZSBcInNpemVcIikgaW50byBhIENTUyBlbSB2YWx1ZSBmb3IgdGhlXG4gKiBjdXJyZW50IHN0eWxlL3NjYWxlLiAgYG9wdGlvbnNgIGdpdmVzIHRoZSBjdXJyZW50IG9wdGlvbnMuXG4gKi9cbnZhciBjYWxjdWxhdGVTaXplID0gZnVuY3Rpb24gY2FsY3VsYXRlU2l6ZShzaXplVmFsdWUsIG9wdGlvbnMpIHtcbiAgICB2YXIgc2NhbGUgPSB2b2lkIDA7XG4gICAgaWYgKHNpemVWYWx1ZS51bml0IGluIHB0UGVyVW5pdCkge1xuICAgICAgICAvLyBBYnNvbHV0ZSB1bml0c1xuICAgICAgICBzY2FsZSA9IHB0UGVyVW5pdFtzaXplVmFsdWUudW5pdF0gLy8gQ29udmVydCB1bml0IHRvIHB0XG4gICAgICAgIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW0gLy8gQ29udmVydCBwdCB0byBDU1MgZW1cbiAgICAgICAgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyOyAvLyBVbnNjYWxlIHRvIG1ha2UgYWJzb2x1dGUgdW5pdHNcbiAgICB9IGVsc2UgaWYgKHNpemVWYWx1ZS51bml0ID09PSBcIm11XCIpIHtcbiAgICAgICAgLy8gYG11YCB1bml0cyBzY2FsZSB3aXRoIHNjcmlwdHN0eWxlL3NjcmlwdHNjcmlwdHN0eWxlLlxuICAgICAgICBzY2FsZSA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5jc3NFbVBlck11O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVyIHJlbGF0aXZlIHVuaXRzIGFsd2F5cyByZWZlciB0byB0aGUgKnRleHRzdHlsZSogZm9udFxuICAgICAgICAvLyBpbiB0aGUgY3VycmVudCBzaXplLlxuICAgICAgICB2YXIgdW5pdE9wdGlvbnMgPSB2b2lkIDA7XG4gICAgICAgIGlmIChvcHRpb25zLnN0eWxlLmlzVGlnaHQoKSkge1xuICAgICAgICAgICAgLy8gaXNUaWdodCgpIG1lYW5zIGN1cnJlbnQgc3R5bGUgaXMgc2NyaXB0L3NjcmlwdHNjcmlwdC5cbiAgICAgICAgICAgIHVuaXRPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShvcHRpb25zLnN0eWxlLnRleHQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bml0T3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogSW4gVGVYIHRoZXNlIHVuaXRzIGFyZSByZWxhdGl2ZSB0byB0aGUgcXVhZCBvZiB0aGUgY3VycmVudFxuICAgICAgICAvLyAqdGV4dCogZm9udCwgZS5nLiBjbXIxMC4gS2FUZVggaW5zdGVhZCB1c2VzIHZhbHVlcyBmcm9tIHRoZVxuICAgICAgICAvLyBjb21wYXJhYmx5LXNpemVkICpDb21wdXRlciBNb2Rlcm4gc3ltYm9sKiBmb250LiBBdCAxMHB0LCB0aGVzZVxuICAgICAgICAvLyBtYXRjaC4gQXQgN3B0IGFuZCA1cHQsIHRoZXkgZGlmZmVyOiBjbXI3PTEuMTM4ODk0LCBjbXN5Nz0xLjE3MDY0MTtcbiAgICAgICAgLy8gY21yNT0xLjM2MTEzMywgY21zeTU9MS40NzIyNDEuIENvbnNpZGVyICRcXHNjcmlwdHNpemUgYVxca2VybjFlbWIkLlxuICAgICAgICAvLyBUZVggXFxzaG93bGlzdHMgc2hvd3MgYSBrZXJuIG9mIDEuMTM4ODkgKiBmb250c2l6ZTtcbiAgICAgICAgLy8gS2FUZVggc2hvd3MgYSBrZXJuIG9mIDEuMTcxICogZm9udHNpemUuXG4gICAgICAgIGlmIChzaXplVmFsdWUudW5pdCA9PT0gXCJleFwiKSB7XG4gICAgICAgICAgICBzY2FsZSA9IHVuaXRPcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmIChzaXplVmFsdWUudW5pdCA9PT0gXCJlbVwiKSB7XG4gICAgICAgICAgICBzY2FsZSA9IHVuaXRPcHRpb25zLmZvbnRNZXRyaWNzKCkucXVhZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIkludmFsaWQgdW5pdDogJ1wiICsgc2l6ZVZhbHVlLnVuaXQgKyBcIidcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVuaXRPcHRpb25zICE9PSBvcHRpb25zKSB7XG4gICAgICAgICAgICBzY2FsZSAqPSB1bml0T3B0aW9ucy5zaXplTXVsdGlwbGllciAvIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWluKHNpemVWYWx1ZS5udW1iZXIgKiBzY2FsZSwgb3B0aW9ucy5tYXhTaXplKTtcbn07XG5cbi8qKiovIH0pLFxuLyogMjAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuXG4vKioqLyB9KSxcbi8qIDIxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwga2V5KXtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG4vKioqLyB9KSxcbi8qIDIyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjApO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIGlmKCFpc09iamVjdChpdCkpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG4vKioqLyB9KSxcbi8qIDIzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oMjQpKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywge2dldDogZnVuY3Rpb24oKXsgcmV0dXJuIDc7IH19KS5hICE9IDc7XG59KTtcblxuLyoqKi8gfSksXG4vKiAyNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpe1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaChlKXtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuLyoqKi8gfSksXG4vKiAyNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNilcbiAgLCBjb3JlICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpXG4gICwgY3R4ICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NylcbiAgLCBoaWRlICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KVxuICAsIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uKHR5cGUsIG5hbWUsIHNvdXJjZSl7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GXG4gICAgLCBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HXG4gICAgLCBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TXG4gICAgLCBJU19QUk9UTyAgPSB0eXBlICYgJGV4cG9ydC5QXG4gICAgLCBJU19CSU5EICAgPSB0eXBlICYgJGV4cG9ydC5CXG4gICAgLCBJU19XUkFQICAgPSB0eXBlICYgJGV4cG9ydC5XXG4gICAgLCBleHBvcnRzICAgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KVxuICAgICwgZXhwUHJvdG8gID0gZXhwb3J0c1tQUk9UT1RZUEVdXG4gICAgLCB0YXJnZXQgICAgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdXG4gICAgLCBrZXksIG93biwgb3V0O1xuICBpZihJU19HTE9CQUwpc291cmNlID0gbmFtZTtcbiAgZm9yKGtleSBpbiBzb3VyY2Upe1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYob3duICYmIGtleSBpbiBleHBvcnRzKWNvbnRpbnVlO1xuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG4gICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTtcbiAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcbiAgICBleHBvcnRzW2tleV0gPSBJU19HTE9CQUwgJiYgdHlwZW9mIHRhcmdldFtrZXldICE9ICdmdW5jdGlvbicgPyBzb3VyY2Vba2V5XVxuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgOiBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbClcbiAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlIHRoZW0gaW4gbGlicmFyeVxuICAgIDogSVNfV1JBUCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24oQyl7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uKGEsIGIsIGMpe1xuICAgICAgICBpZih0aGlzIGluc3RhbmNlb2YgQyl7XG4gICAgICAgICAgc3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEM7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmKElTX1BST1RPKXtcbiAgICAgIChleHBvcnRzLnZpcnR1YWwgfHwgKGV4cG9ydHMudmlydHVhbCA9IHt9KSlba2V5XSA9IG91dDtcbiAgICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5wcm90b3R5cGUuJU5BTUUlXG4gICAgICBpZih0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKWhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgIFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuXG4vKioqLyB9KSxcbi8qIDI2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBkUCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcbiAgLCBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMyk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpID8gZnVuY3Rpb24ob2JqZWN0LCBrZXksIHZhbHVlKXtcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuLyoqKi8gfSksXG4vKiAyNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gVG9rZW47IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fU291cmNlTG9jYXRpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpO1xuXG5cblxuXG4vKipcbiAqIEludGVyZmFjZSByZXF1aXJlZCB0byBicmVhayBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gVG9rZW4sIExleGVyLCBhbmRcbiAqIFBhcnNlRXJyb3IuXG4gKi9cblxuXG4vKipcbiAqIFRoZSByZXN1bHRpbmcgdG9rZW4gcmV0dXJuZWQgZnJvbSBgbGV4YC5cbiAqXG4gKiBJdCBjb25zaXN0cyBvZiB0aGUgdG9rZW4gdGV4dCBwbHVzIHNvbWUgcG9zaXRpb24gaW5mb3JtYXRpb24uXG4gKiBUaGUgcG9zaXRpb24gaW5mb3JtYXRpb24gaXMgZXNzZW50aWFsbHkgYSByYW5nZSBpbiBhbiBpbnB1dCBzdHJpbmcsXG4gKiBidXQgaW5zdGVhZCBvZiByZWZlcmVuY2luZyB0aGUgYmFyZSBpbnB1dCBzdHJpbmcsIHdlIHJlZmVyIHRvIHRoZSBsZXhlci5cbiAqIFRoYXQgd2F5IGl0IGlzIHBvc3NpYmxlIHRvIGF0dGFjaCBleHRyYSBtZXRhZGF0YSB0byB0aGUgaW5wdXQgc3RyaW5nLFxuICogbGlrZSBmb3IgZXhhbXBsZSBhIGZpbGUgbmFtZSBvciBzaW1pbGFyLlxuICpcbiAqIFRoZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcyBvcHRpb25hbCwgc28gaXQgaXMgT0sgdG8gY29uc3RydWN0IHN5bnRoZXRpY1xuICogdG9rZW5zIGlmIGFwcHJvcHJpYXRlLiBOb3QgcHJvdmlkaW5nIGF2YWlsYWJsZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiBtYXlcbiAqIGxlYWQgdG8gZGVncmFkZWQgZXJyb3IgcmVwb3J0aW5nLCB0aG91Z2guXG4gKi9cbnZhciBUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUb2tlbih0ZXh0LCAvLyB0aGUgdGV4dCBvZiB0aGlzIHRva2VuXG4gICAgbG9jKSB7XG4gICAgICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX19kZWZhdWx0KCkodGhpcywgVG9rZW4pO1xuXG4gICAgICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgICAgIHRoaXMubG9jID0gbG9jO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgcGFpciBvZiB0b2tlbnMgKHRoaXMgYW5kIGVuZFRva2VuKSwgY29tcHV0ZSBhIGBUb2tlbmAgZW5jb21wYXNzaW5nXG4gICAgICogdGhlIHdob2xlIGlucHV0IHJhbmdlIGVuY2xvc2VkIGJ5IHRoZXNlIHR3by5cbiAgICAgKi9cblxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fX2RlZmF1bHQoKShUb2tlbiwgW3tcbiAgICAgICAga2V5OiBcInJhbmdlXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiByYW5nZShlbmRUb2tlbiwgLy8gbGFzdCB0b2tlbiBvZiB0aGUgcmFuZ2UsIGluY2x1c2l2ZVxuICAgICAgICB0ZXh0KSAvLyB0aGUgdGV4dCBvZiB0aGUgbmV3bHkgY29uc3RydWN0ZWQgdG9rZW5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBUb2tlbih0ZXh0LCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX1NvdXJjZUxvY2F0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ucmFuZ2UodGhpcywgZW5kVG9rZW4pKTtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBUb2tlbjtcbn0oKTtcblxuLyoqKi8gfSksXG4vKiAyOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuLyoqXG4gKiBUaGlzIGZpbGUgaG9sZHMgYSBsaXN0IG9mIGFsbCBuby1hcmd1bWVudCBmdW5jdGlvbnMgYW5kIHNpbmdsZS1jaGFyYWN0ZXJcbiAqIHN5bWJvbHMgKGxpa2UgJ2EnIG9yICc7JykuXG4gKlxuICogRm9yIGVhY2ggb2YgdGhlIHN5bWJvbHMsIHRoZXJlIGFyZSB0aHJlZSBwcm9wZXJ0aWVzIHRoZXkgY2FuIGhhdmU6XG4gKiAtIGZvbnQgKHJlcXVpcmVkKTogdGhlIGZvbnQgdG8gYmUgdXNlZCBmb3IgdGhpcyBzeW1ib2wuIEVpdGhlciBcIm1haW5cIiAodGhlXG4gICAgIG5vcm1hbCBmb250KSwgb3IgXCJhbXNcIiAodGhlIGFtcyBmb250cykuXG4gKiAtIGdyb3VwIChyZXF1aXJlZCk6IHRoZSBQYXJzZU5vZGUgZ3JvdXAgdHlwZSB0aGUgc3ltYm9sIHNob3VsZCBoYXZlIChpLmUuXG4gICAgIFwidGV4dG9yZFwiLCBcIm1hdGhvcmRcIiwgZXRjKS5cbiAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9LaGFuL0thVGVYL3dpa2kvRXhhbWluaW5nLVRlWCNncm91cC10eXBlc1xuICogLSByZXBsYWNlOiB0aGUgY2hhcmFjdGVyIHRoYXQgdGhpcyBzeW1ib2wgb3IgZnVuY3Rpb24gc2hvdWxkIGJlXG4gKiAgIHJlcGxhY2VkIHdpdGggKGkuZS4gXCJcXHBoaVwiIGhhcyBhIHJlcGxhY2UgdmFsdWUgb2YgXCJcXHUwM2Q1XCIsIHRoZSBwaGlcbiAqICAgY2hhcmFjdGVyIGluIHRoZSBtYWluIGZvbnQpLlxuICpcbiAqIFRoZSBvdXRlcm1vc3QgbWFwIGluIHRoZSB0YWJsZSBpbmRpY2F0ZXMgd2hhdCBtb2RlIHRoZSBzeW1ib2xzIHNob3VsZCBiZVxuICogYWNjZXB0ZWQgaW4gKGUuZy4gXCJtYXRoXCIgb3IgXCJ0ZXh0XCIpLlxuICovXG5cbnZhciBzeW1ib2xzID0ge1xuICAgIFwibWF0aFwiOiB7fSxcbiAgICBcInRleHRcIjoge31cbn07XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHN5bWJvbHMpO1xuXG4vKiogYGFjY2VwdFVuaWNvZGVDaGFyID0gdHJ1ZWAgaXMgb25seSBhcHBsaWNhYmxlIGlmIGByZXBsYWNlYCBpcyBzZXQuICovXG5mdW5jdGlvbiBkZWZpbmVTeW1ib2wobW9kZSwgZm9udCwgZ3JvdXAsIHJlcGxhY2UsIG5hbWUsIGFjY2VwdFVuaWNvZGVDaGFyKSB7XG4gICAgc3ltYm9sc1ttb2RlXVtuYW1lXSA9IHsgZm9udDogZm9udCwgZ3JvdXA6IGdyb3VwLCByZXBsYWNlOiByZXBsYWNlIH07XG5cbiAgICBpZiAoYWNjZXB0VW5pY29kZUNoYXIgJiYgcmVwbGFjZSkge1xuICAgICAgICBzeW1ib2xzW21vZGVdW3JlcGxhY2VdID0gc3ltYm9sc1ttb2RlXVtuYW1lXTtcbiAgICB9XG59XG5cbi8vIFNvbWUgYWJicmV2aWF0aW9ucyBmb3IgY29tbW9ubHkgdXNlZCBzdHJpbmdzLlxuLy8gVGhpcyBoZWxwcyBtaW5pZnkgdGhlIGNvZGUsIGFuZCBhbHNvIHNwb3R0aW5nIHR5cG9zIHVzaW5nIGpzaGludC5cblxuLy8gbW9kZXM6XG52YXIgbWF0aCA9IFwibWF0aFwiO1xudmFyIHRleHQgPSBcInRleHRcIjtcblxuLy8gZm9udHM6XG52YXIgbWFpbiA9IFwibWFpblwiO1xudmFyIGFtcyA9IFwiYW1zXCI7XG5cbi8vIGdyb3VwczpcbnZhciBhY2NlbnQgPSBcImFjY2VudFwiO1xudmFyIGJpbiA9IFwiYmluXCI7XG52YXIgY2xvc2UgPSBcImNsb3NlXCI7XG52YXIgaW5uZXIgPSBcImlubmVyXCI7XG52YXIgbWF0aG9yZCA9IFwibWF0aG9yZFwiO1xudmFyIG9wID0gXCJvcFwiO1xudmFyIG9wZW4gPSBcIm9wZW5cIjtcbnZhciBwdW5jdCA9IFwicHVuY3RcIjtcbnZhciByZWwgPSBcInJlbFwiO1xudmFyIHNwYWNpbmcgPSBcInNwYWNpbmdcIjtcbnZhciB0ZXh0b3JkID0gXCJ0ZXh0b3JkXCI7XG5cbi8vIE5vdyBjb21lcyB0aGUgc3ltYm9sIHRhYmxlXG5cbi8vIFJlbGF0aW9uIFN5bWJvbHNcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2MVwiLCBcIlxcXFxlcXVpdlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjI3QVwiLCBcIlxcXFxwcmVjXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjdCXCIsIFwiXFxcXHN1Y2NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyM0NcIiwgXCJcXFxcc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMkE1XCIsIFwiXFxcXHBlcnBcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTJBQUZcIiwgXCJcXFxccHJlY2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyQUIwXCIsIFwiXFxcXHN1Y2NlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjI0M1wiLCBcIlxcXFxzaW1lcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjIyM1wiLCBcIlxcXFxtaWRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNkFcIiwgXCJcXFxcbGxcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNkJcIiwgXCJcXFxcZ2dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNERcIiwgXCJcXFxcYXN5bXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMjVcIiwgXCJcXFxccGFyYWxsZWxcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQzhcIiwgXCJcXFxcYm93dGllXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMzIzXCIsIFwiXFxcXHNtaWxlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjkxXCIsIFwiXFxcXHNxc3Vic2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyOTJcIiwgXCJcXFxcc3FzdXBzZXRlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjI1MFwiLCBcIlxcXFxkb3RlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjMyMlwiLCBcIlxcXFxmcm93blwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjIwQlwiLCBcIlxcXFxuaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjIxRFwiLCBcIlxcXFxwcm9wdG9cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQTJcIiwgXCJcXFxcdmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQTNcIiwgXCJcXFxcZGFzaHZcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMEJcIiwgXCJcXFxcb3duc1wiKTtcblxuLy8gUHVuY3R1YXRpb25cbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBwdW5jdCwgXCIuXCIsIFwiXFxcXGxkb3RwXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHB1bmN0LCBcIlxcdTIyQzVcIiwgXCJcXFxcY2RvdHBcIik7XG5cbi8vIE1pc2MgU3ltYm9sc1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiI1wiLCBcIlxcXFwjXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiI1wiLCBcIlxcXFwjXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiJlwiLCBcIlxcXFwmXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiJlwiLCBcIlxcXFwmXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjEzNVwiLCBcIlxcXFxhbGVwaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIyMDBcIiwgXCJcXFxcZm9yYWxsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjEwRlwiLCBcIlxcXFxoYmFyXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjIwM1wiLCBcIlxcXFxleGlzdHNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMjA3XCIsIFwiXFxcXG5hYmxhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjY2RFwiLCBcIlxcXFxmbGF0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjExM1wiLCBcIlxcXFxlbGxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyNjZFXCIsIFwiXFxcXG5hdHVyYWxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyNjYzXCIsIFwiXFxcXGNsdWJzdWl0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjExOFwiLCBcIlxcXFx3cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTI2NkZcIiwgXCJcXFxcc2hhcnBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyNjYyXCIsIFwiXFxcXGRpYW1vbmRzdWl0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjExQ1wiLCBcIlxcXFxSZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTI2NjFcIiwgXCJcXFxcaGVhcnRzdWl0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjExMVwiLCBcIlxcXFxJbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTI2NjBcIiwgXCJcXFxcc3BhZGVzdWl0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx4QTdcIiwgXCJcXFxcU1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIlxceEI2XCIsIFwiXFxcXFBcIiwgdHJ1ZSk7XG5cbi8vIE1hdGggYW5kIFRleHRcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIwMjBcIiwgXCJcXFxcZGFnXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAyMFwiLCBcIlxcXFxkYWdcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXHRleHRkYWdnZXJcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMDIxXCIsIFwiXFxcXGRkYWdcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMDIxXCIsIFwiXFxcXGRkYWdcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXHRleHRkYWdnZXJkYmxcIik7XG5cbi8vIExhcmdlIERlbGltaXRlcnNcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBjbG9zZSwgXCJcXHUyM0IxXCIsIFwiXFxcXHJtb3VzdGFjaGVcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3BlbiwgXCJcXHUyM0IwXCIsIFwiXFxcXGxtb3VzdGFjaGVcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgY2xvc2UsIFwiXFx1MjdFRlwiLCBcIlxcXFxyZ3JvdXBcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3BlbiwgXCJcXHUyN0VFXCIsIFwiXFxcXGxncm91cFwiKTtcblxuLy8gQmluYXJ5IE9wZXJhdG9yc1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjEzXCIsIFwiXFxcXG1wXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk2XCIsIFwiXFxcXG9taW51c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiXFx1MjI4RVwiLCBcIlxcXFx1cGx1c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiXFx1MjI5M1wiLCBcIlxcXFxzcWNhcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxN1wiLCBcIlxcXFxhc3RcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTRcIiwgXCJcXFxcc3FjdXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTI1RUZcIiwgXCJcXFxcYmlnY2lyY1wiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxOVwiLCBcIlxcXFxidWxsZXRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTIwMjFcIiwgXCJcXFxcZGRhZ2dlclwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiXFx1MjI0MFwiLCBcIlxcXFx3clwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiXFx1MkEzRlwiLCBcIlxcXFxhbWFsZ1wiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiJlwiLCBcIlxcXFxBbmRcIik7IC8vIGZyb20gYW1zbWF0aFxuXG4vLyBBcnJvdyBTeW1ib2xzXG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RjVcIiwgXCJcXFxcbG9uZ2xlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMFwiLCBcIlxcXFxMZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RjhcIiwgXCJcXFxcTG9uZ2xlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjdGNlwiLCBcIlxcXFxsb25ncmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMlwiLCBcIlxcXFxSaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyN0Y5XCIsIFwiXFxcXExvbmdyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTk0XCIsIFwiXFxcXGxlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyN0Y3XCIsIFwiXFxcXGxvbmdsZWZ0cmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjFENFwiLCBcIlxcXFxMZWZ0cmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjdGQVwiLCBcIlxcXFxMb25nbGVmdHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQTZcIiwgXCJcXFxcbWFwc3RvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyN0ZDXCIsIFwiXFxcXGxvbmdtYXBzdG9cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTdcIiwgXCJcXFxcbmVhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjFBOVwiLCBcIlxcXFxob29rbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUFBXCIsIFwiXFxcXGhvb2tyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTk4XCIsIFwiXFxcXHNlYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQkNcIiwgXCJcXFxcbGVmdGhhcnBvb251cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjFDMFwiLCBcIlxcXFxyaWdodGhhcnBvb251cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5OVwiLCBcIlxcXFxzd2Fycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUJEXCIsIFwiXFxcXGxlZnRoYXJwb29uZG93blwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjFDMVwiLCBcIlxcXFxyaWdodGhhcnBvb25kb3duXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTk2XCIsIFwiXFxcXG53YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQ0NcIiwgXCJcXFxccmlnaHRsZWZ0aGFycG9vbnNcIiwgdHJ1ZSk7XG5cbi8vIEFNUyBOZWdhdGVkIEJpbmFyeSBSZWxhdGlvbnNcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjZFXCIsIFwiXFxcXG5sZXNzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdUUwMTBcIiwgXCJcXFxcbmxlcXNsYW50XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdUUwMTFcIiwgXCJcXFxcbmxlcXFcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4N1wiLCBcIlxcXFxsbmVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNjhcIiwgXCJcXFxcbG5lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwQ1wiLCBcIlxcXFxsdmVydG5lcXFcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFNlwiLCBcIlxcXFxsbnNpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTg5XCIsIFwiXFxcXGxuYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyODBcIiwgXCJcXFxcbnByZWNcIiwgdHJ1ZSk7XG4vLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMmUwIHRvIFxcbnByZWNjdXJseWVxLiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyRTBcIiwgXCJcXFxcbnByZWNlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkU4XCIsIFwiXFxcXHByZWNuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTJBQjlcIiwgXCJcXFxccHJlY25hcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0MVwiLCBcIlxcXFxuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdUUwMDZcIiwgXCJcXFxcbnNob3J0bWlkXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyMjRcIiwgXCJcXFxcbm1pZFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFDXCIsIFwiXFxcXG52ZGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFEXCIsIFwiXFxcXG52RGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkVBXCIsIFwiXFxcXG50cmlhbmdsZWxlZnRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFQ1wiLCBcIlxcXFxudHJpYW5nbGVsZWZ0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4QVwiLCBcIlxcXFxzdWJzZXRuZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxQVwiLCBcIlxcXFx2YXJzdWJzZXRuZXFcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MkFDQlwiLCBcIlxcXFxzdWJzZXRuZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdUUwMTdcIiwgXCJcXFxcdmFyc3Vic2V0bmVxcVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjZGXCIsIFwiXFxcXG5ndHJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRlwiLCBcIlxcXFxuZ2Vxc2xhbnRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRVwiLCBcIlxcXFxuZ2VxcVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTg4XCIsIFwiXFxcXGduZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2OVwiLCBcIlxcXFxnbmVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDBEXCIsIFwiXFxcXGd2ZXJ0bmVxcVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkU3XCIsIFwiXFxcXGduc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTJBOEFcIiwgXCJcXFxcZ25hcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4MVwiLCBcIlxcXFxuc3VjY1wiLCB0cnVlKTtcbi8vIHVuaWNvZGUtbWF0aCBtYXBzIFxcdTIyZTEgdG8gXFxuc3VjY2N1cmx5ZXEuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFMVwiLCBcIlxcXFxuc3VjY2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyRTlcIiwgXCJcXFxcc3VjY25zaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MkFCQVwiLCBcIlxcXFxzdWNjbmFwcHJveFwiLCB0cnVlKTtcbi8vIHVuaWNvZGUtbWF0aCBtYXBzIFxcdTIyNDYgdG8gXFxzaW1uZXFxLiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNDZcIiwgXCJcXFxcbmNvbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwN1wiLCBcIlxcXFxuc2hvcnRwYXJhbGxlbFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjI2XCIsIFwiXFxcXG5wYXJhbGxlbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFGXCIsIFwiXFxcXG5WRGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkVCXCIsIFwiXFxcXG50cmlhbmdsZXJpZ2h0XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyRURcIiwgXCJcXFxcbnRyaWFuZ2xlcmlnaHRlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDE4XCIsIFwiXFxcXG5zdXBzZXRlcXFcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4QlwiLCBcIlxcXFxzdXBzZXRuZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxQlwiLCBcIlxcXFx2YXJzdXBzZXRuZXFcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MkFDQ1wiLCBcIlxcXFxzdXBzZXRuZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdUUwMTlcIiwgXCJcXFxcdmFyc3Vwc2V0bmVxcVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFFXCIsIFwiXFxcXG5WZGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI1XCIsIFwiXFxcXHByZWNuZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTJBQjZcIiwgXCJcXFxcc3VjY25lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxNlwiLCBcIlxcXFxuc3Vic2V0ZXFxXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTIyQjRcIiwgXCJcXFxcdW5saGRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCNVwiLCBcIlxcXFx1bnJoZFwiKTtcblxuLy8gQU1TIE5lZ2F0ZWQgQXJyb3dzXG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjE5QVwiLCBcIlxcXFxubGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIxOUJcIiwgXCJcXFxcbnJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRFwiLCBcIlxcXFxuTGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIxQ0ZcIiwgXCJcXFxcblJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBRVwiLCBcIlxcXFxubGVmdHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRVwiLCBcIlxcXFxuTGVmdHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5cbi8vIEFNUyBNaXNjXG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjVCM1wiLCBcIlxcXFx2YXJ0cmlhbmdsZVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx1MjEwRlwiLCBcIlxcXFxoc2xhc2hcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCB0ZXh0b3JkLCBcIlxcdTI1QkRcIiwgXCJcXFxcdHJpYW5nbGVkb3duXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyNUNBXCIsIFwiXFxcXGxvemVuZ2VcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCB0ZXh0b3JkLCBcIlxcdTI0QzhcIiwgXCJcXFxcY2lyY2xlZFNcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCB0ZXh0b3JkLCBcIlxceEFFXCIsIFwiXFxcXGNpcmNsZWRSXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIGFtcywgdGV4dG9yZCwgXCJcXHhBRVwiLCBcIlxcXFxjaXJjbGVkUlwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx1MjIyMVwiLCBcIlxcXFxtZWFzdXJlZGFuZ2xlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyMjA0XCIsIFwiXFxcXG5leGlzdHNcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCB0ZXh0b3JkLCBcIlxcdTIxMjdcIiwgXCJcXFxcbWhvXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyMTMyXCIsIFwiXFxcXEZpbnZcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCB0ZXh0b3JkLCBcIlxcdTIxNDFcIiwgXCJcXFxcR2FtZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwia1wiLCBcIlxcXFxCYmJrXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyMDM1XCIsIFwiXFxcXGJhY2twcmltZVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx1MjVCMlwiLCBcIlxcXFxibGFja3RyaWFuZ2xlXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyNUJDXCIsIFwiXFxcXGJsYWNrdHJpYW5nbGVkb3duXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyNUEwXCIsIFwiXFxcXGJsYWNrc3F1YXJlXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyOUVCXCIsIFwiXFxcXGJsYWNrbG96ZW5nZVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx1MjYwNVwiLCBcIlxcXFxiaWdzdGFyXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyMjIyXCIsIFwiXFxcXHNwaGVyaWNhbGFuZ2xlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyMjAxXCIsIFwiXFxcXGNvbXBsZW1lbnRcIiwgdHJ1ZSk7XG4vLyB1bmljb2RlLW1hdGggbWFwcyBVK0YwICjDsCkgdG8gXFxtYXRoZXRoLiBXZSBtYXAgdG8gQU1TIGZ1bmN0aW9uIFxcZXRoXG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCB0ZXh0b3JkLCBcIlxceEYwXCIsIFwiXFxcXGV0aFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx1MjU3MVwiLCBcIlxcXFxkaWFndXBcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCB0ZXh0b3JkLCBcIlxcdTI1NzJcIiwgXCJcXFxcZGlhZ2Rvd25cIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCB0ZXh0b3JkLCBcIlxcdTI1QTFcIiwgXCJcXFxcc3F1YXJlXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyNUExXCIsIFwiXFxcXEJveFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx1MjVDQVwiLCBcIlxcXFxEaWFtb25kXCIpO1xuLy8gdW5pY29kZS1tYXRoIG1hcHMgVStBNSB0byBcXG1hdGh5ZW4uIFdlIG1hcCB0byBBTVMgZnVuY3Rpb24gXFx5ZW5cbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx4QTVcIiwgXCJcXFxceWVuXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyNzEzXCIsIFwiXFxcXGNoZWNrbWFya1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBhbXMsIHRleHRvcmQsIFwiXFx1MjcxM1wiLCBcIlxcXFxjaGVja21hcmtcIik7XG5cbi8vIEFNUyBIZWJyZXdcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx1MjEzNlwiLCBcIlxcXFxiZXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyMTM4XCIsIFwiXFxcXGRhbGV0aFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx1MjEzN1wiLCBcIlxcXFxnaW1lbFwiLCB0cnVlKTtcblxuLy8gQU1TIEdyZWVrXG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCB0ZXh0b3JkLCBcIlxcdTAzRERcIiwgXCJcXFxcZGlnYW1tYVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx1MDNGMFwiLCBcIlxcXFx2YXJrYXBwYVwiKTtcblxuLy8gQU1TIERlbGltaXRlcnNcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIG9wZW4sIFwiXFx1MjUwQ1wiLCBcIlxcXFx1bGNvcm5lclwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGNsb3NlLCBcIlxcdTI1MTBcIiwgXCJcXFxcdXJjb3JuZXJcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBvcGVuLCBcIlxcdTI1MTRcIiwgXCJcXFxcbGxjb3JuZXJcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBjbG9zZSwgXCJcXHUyNTE4XCIsIFwiXFxcXGxyY29ybmVyXCIpO1xuXG4vLyBBTVMgQmluYXJ5IFJlbGF0aW9uc1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNjZcIiwgXCJcXFxcbGVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTdEXCIsIFwiXFxcXGxlcXNsYW50XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTJBOTVcIiwgXCJcXFxcZXFzbGFudGxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3MlwiLCBcIlxcXFxsZXNzc2ltXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTJBODVcIiwgXCJcXFxcbGVzc2FwcHJveFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjRBXCIsIFwiXFxcXGFwcHJveGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTIyRDZcIiwgXCJcXFxcbGVzc2RvdFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQ4XCIsIFwiXFxcXGxsbFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjc2XCIsIFwiXFxcXGxlc3NndHJcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEQVwiLCBcIlxcXFxsZXNzZXFndHJcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4QlwiLCBcIlxcXFxsZXNzZXFxZ3RyXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNTFcIiwgXCJcXFxcZG90ZXFkb3RcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI1M1wiLCBcIlxcXFxyaXNpbmdkb3RzZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI1MlwiLCBcIlxcXFxmYWxsaW5nZG90c2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyM0RcIiwgXCJcXFxcYmFja3NpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkNEXCIsIFwiXFxcXGJhY2tzaW1lcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUM1XCIsIFwiXFxcXHN1YnNldGVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQwXCIsIFwiXFxcXFN1YnNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjhGXCIsIFwiXFxcXHNxc3Vic2V0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyN0NcIiwgXCJcXFxccHJlY2N1cmx5ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjJERVwiLCBcIlxcXFxjdXJseWVxcHJlY1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjdFXCIsIFwiXFxcXHByZWNzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MkFCN1wiLCBcIlxcXFxwcmVjYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjJcIiwgXCJcXFxcdmFydHJpYW5nbGVsZWZ0XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjRcIiwgXCJcXFxcdHJpYW5nbGVsZWZ0ZXFcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBOFwiLCBcIlxcXFx2RGFzaFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFBXCIsIFwiXFxcXFZ2ZGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMzIzXCIsIFwiXFxcXHNtYWxsc21pbGVcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjMyMlwiLCBcIlxcXFxzbWFsbGZyb3duXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNEZcIiwgXCJcXFxcYnVtcGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNEVcIiwgXCJcXFxcQnVtcGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNjdcIiwgXCJcXFxcZ2VxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTdFXCIsIFwiXFxcXGdlcXNsYW50XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTJBOTZcIiwgXCJcXFxcZXFzbGFudGd0clwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjczXCIsIFwiXFxcXGd0cnNpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTg2XCIsIFwiXFxcXGd0cmFwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQ3XCIsIFwiXFxcXGd0cmRvdFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQ5XCIsIFwiXFxcXGdnZ1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjc3XCIsIFwiXFxcXGd0cmxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEQlwiLCBcIlxcXFxndHJlcWxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4Q1wiLCBcIlxcXFxndHJlcXFsZXNzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNTZcIiwgXCJcXFxcZXFjaXJjXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNTdcIiwgXCJcXFxcY2lyY2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNUNcIiwgXCJcXFxcdHJpYW5nbGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyM0NcIiwgXCJcXFxcdGhpY2tzaW1cIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0OFwiLCBcIlxcXFx0aGlja2FwcHJveFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUM2XCIsIFwiXFxcXHN1cHNldGVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQxXCIsIFwiXFxcXFN1cHNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjkwXCIsIFwiXFxcXHNxc3Vwc2V0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyN0RcIiwgXCJcXFxcc3VjY2N1cmx5ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjJERlwiLCBcIlxcXFxjdXJseWVxc3VjY1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjdGXCIsIFwiXFxcXHN1Y2NzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MkFCOFwiLCBcIlxcXFxzdWNjYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjNcIiwgXCJcXFxcdmFydHJpYW5nbGVyaWdodFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkI1XCIsIFwiXFxcXHRyaWFuZ2xlcmlnaHRlcVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkE5XCIsIFwiXFxcXFZkYXNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyMjNcIiwgXCJcXFxcc2hvcnRtaWRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjIyNVwiLCBcIlxcXFxzaG9ydHBhcmFsbGVsXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNkNcIiwgXCJcXFxcYmV0d2VlblwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQ0XCIsIFwiXFxcXHBpdGNoZm9ya1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjFEXCIsIFwiXFxcXHZhcnByb3B0b1wiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyNUMwXCIsIFwiXFxcXGJsYWNrdHJpYW5nbGVsZWZ0XCIpO1xuLy8gdW5pY29kZS1tYXRoIHNheXMgdGhhdCBcXHRoZXJlZm9yZSBpcyBhIG1hdGhvcmQgYXRvbS5cbi8vIFdlIGtlcHQgdGhlIGFtc3N5bWIgYXRvbSB0eXBlLCB3aGljaCBpcyByZWwuXG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjIzNFwiLCBcIlxcXFx0aGVyZWZvcmVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjIwRFwiLCBcIlxcXFxiYWNrZXBzaWxvblwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyNUI2XCIsIFwiXFxcXGJsYWNrdHJpYW5nbGVyaWdodFwiKTtcbi8vIHVuaWNvZGUtbWF0aCBzYXlzIHRoYXQgXFxiZWNhdXNlIGlzIGEgbWF0aG9yZCBhdG9tLlxuLy8gV2Uga2VwdCB0aGUgYW1zc3ltYiBhdG9tIHR5cGUsIHdoaWNoIGlzIHJlbC5cbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjM1XCIsIFwiXFxcXGJlY2F1c2VcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEOFwiLCBcIlxcXFxsbGxlc3NcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEOVwiLCBcIlxcXFxnZ2d0clwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkIyXCIsIFwiXFxcXGxoZFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkIzXCIsIFwiXFxcXHJoZFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjQyXCIsIFwiXFxcXGVxc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMkM4XCIsIFwiXFxcXEpvaW5cIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI1MVwiLCBcIlxcXFxEb3RlcVwiLCB0cnVlKTtcblxuLy8gQU1TIEJpbmFyeSBPcGVyYXRvcnNcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjE0XCIsIFwiXFxcXGRvdHBsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBiaW4sIFwiXFx1MjIxNlwiLCBcIlxcXFxzbWFsbHNldG1pbnVzXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTIyRDJcIiwgXCJcXFxcQ2FwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTIyRDNcIiwgXCJcXFxcQ3VwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTJBNUVcIiwgXCJcXFxcZG91YmxlYmFyd2VkZ2VcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBiaW4sIFwiXFx1MjI5RlwiLCBcIlxcXFxib3htaW51c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjlFXCIsIFwiXFxcXGJveHBsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDN1wiLCBcIlxcXFxkaXZpZGVvbnRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTIyQzlcIiwgXCJcXFxcbHRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTIyQ0FcIiwgXCJcXFxccnRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTIyQ0JcIiwgXCJcXFxcbGVmdHRocmVldGltZXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDQ1wiLCBcIlxcXFxyaWdodHRocmVldGltZXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDRlwiLCBcIlxcXFxjdXJseXdlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTIyQ0VcIiwgXCJcXFxcY3VybHl2ZWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBiaW4sIFwiXFx1MjI5RFwiLCBcIlxcXFxjaXJjbGVkZGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjlCXCIsIFwiXFxcXGNpcmNsZWRhc3RcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDNVwiLCBcIlxcXFxjZW50ZXJkb3RcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCQVwiLCBcIlxcXFxpbnRlcmNhbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQyXCIsIFwiXFxcXGRvdWJsZWNhcFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQzXCIsIFwiXFxcXGRvdWJsZWN1cFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkEwXCIsIFwiXFxcXGJveHRpbWVzXCIsIHRydWUpO1xuXG4vLyBBTVMgQXJyb3dzXG4vLyBOb3RlOiB1bmljb2RlLW1hdGggbWFwcyBcXHUyMWUyIHRvIHRoZWlyIG93biBmdW5jdGlvbiBcXHJpZ2h0ZGFzaGFycm93LlxuLy8gV2UnbGwgbWFwIGl0IHRvIEFNUyBmdW5jdGlvbiBcXGRhc2hyaWdodGFycm93LiBJdCBwcm9kdWNlcyB0aGUgc2FtZSBhdG9tLlxuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIxRTJcIiwgXCJcXFxcZGFzaHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG4vLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMWUwIHRvIFxcbGVmdGRhc2hhcnJvdy4gV2UnbGwgdXNlIHRoZSBBTVMgc3lub255bS5cbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUUwXCIsIFwiXFxcXGRhc2hsZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDN1wiLCBcIlxcXFxsZWZ0bGVmdGFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUM2XCIsIFwiXFxcXGxlZnRyaWdodGFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMURBXCIsIFwiXFxcXExsZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjE5RVwiLCBcIlxcXFx0d29oZWFkbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIxQTJcIiwgXCJcXFxcbGVmdGFycm93dGFpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUFCXCIsIFwiXFxcXGxvb3BhcnJvd2xlZnRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDQlwiLCBcIlxcXFxsZWZ0cmlnaHRoYXJwb29uc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUI2XCIsIFwiXFxcXGN1cnZlYXJyb3dsZWZ0XCIsIHRydWUpO1xuLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjFiYSB0byBcXGFjd29wZW5jaXJjbGVhcnJvdy4gV2UnbGwgdXNlIHRoZSBBTVMgc3lub255bS5cbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJBXCIsIFwiXFxcXGNpcmNsZWFycm93bGVmdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUIwXCIsIFwiXFxcXExzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUM4XCIsIFwiXFxcXHVwdXBhcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFCRlwiLCBcIlxcXFx1cGhhcnBvb25sZWZ0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIxQzNcIiwgXCJcXFxcZG93bmhhcnBvb25sZWZ0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjhcIiwgXCJcXFxcbXVsdGltYXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBRFwiLCBcIlxcXFxsZWZ0cmlnaHRzcXVpZ2Fycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIxQzlcIiwgXCJcXFxccmlnaHRyaWdodGFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUM0XCIsIFwiXFxcXHJpZ2h0bGVmdGFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUEwXCIsIFwiXFxcXHR3b2hlYWRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIxQTNcIiwgXCJcXFxccmlnaHRhcnJvd3RhaWxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBQ1wiLCBcIlxcXFxsb29wYXJyb3dyaWdodFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUI3XCIsIFwiXFxcXGN1cnZlYXJyb3dyaWdodFwiLCB0cnVlKTtcbi8vIHVuaWNvZGUtbWF0aCBtYXBzIFxcdTIxYmIgdG8gXFxjd29wZW5jaXJjbGVhcnJvdy4gV2UnbGwgdXNlIHRoZSBBTVMgc3lub255bS5cbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJCXCIsIFwiXFxcXGNpcmNsZWFycm93cmlnaHRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFCMVwiLCBcIlxcXFxSc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDQVwiLCBcIlxcXFxkb3duZG93bmFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJFXCIsIFwiXFxcXHVwaGFycG9vbnJpZ2h0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIxQzJcIiwgXCJcXFxcZG93bmhhcnBvb25yaWdodFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUREXCIsIFwiXFxcXHJpZ2h0c3F1aWdhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUREXCIsIFwiXFxcXGxlYWRzdG9cIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjFEQlwiLCBcIlxcXFxScmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJFXCIsIFwiXFxcXHJlc3RyaWN0aW9uXCIpO1xuXG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMDE4XCIsIFwiYFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIiRcIiwgXCJcXFxcJFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIiRcIiwgXCJcXFxcJFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIiRcIiwgXCJcXFxcdGV4dGRvbGxhclwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIiVcIiwgXCJcXFxcJVwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIiVcIiwgXCJcXFxcJVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIl9cIiwgXCJcXFxcX1wiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIl9cIiwgXCJcXFxcX1wiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIl9cIiwgXCJcXFxcdGV4dHVuZGVyc2NvcmVcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMjIwXCIsIFwiXFxcXGFuZ2xlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjIxRVwiLCBcIlxcXFxpbmZ0eVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIwMzJcIiwgXCJcXFxccHJpbWVcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyNUIzXCIsIFwiXFxcXHRyaWFuZ2xlXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MDM5M1wiLCBcIlxcXFxHYW1tYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTAzOTRcIiwgXCJcXFxcRGVsdGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUwMzk4XCIsIFwiXFxcXFRoZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MDM5QlwiLCBcIlxcXFxMYW1iZGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUwMzlFXCIsIFwiXFxcXFhpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MDNBMFwiLCBcIlxcXFxQaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTAzQTNcIiwgXCJcXFxcU2lnbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUwM0E1XCIsIFwiXFxcXFVwc2lsb25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUwM0E2XCIsIFwiXFxcXFBoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTAzQThcIiwgXCJcXFxcUHNpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MDNBOVwiLCBcIlxcXFxPbWVnYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxceEFDXCIsIFwiXFxcXG5lZ1wiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxceEFDXCIsIFwiXFxcXGxub3RcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMkE0XCIsIFwiXFxcXHRvcFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIyQTVcIiwgXCJcXFxcYm90XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjIwNVwiLCBcIlxcXFxlbXB0eXNldFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIHRleHRvcmQsIFwiXFx1MjIwNVwiLCBcIlxcXFx2YXJub3RoaW5nXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCMVwiLCBcIlxcXFxhbHBoYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjJcIiwgXCJcXFxcYmV0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjNcIiwgXCJcXFxcZ2FtbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I0XCIsIFwiXFxcXGRlbHRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNGNVwiLCBcIlxcXFxlcHNpbG9uXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCNlwiLCBcIlxcXFx6ZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCN1wiLCBcIlxcXFxldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I4XCIsIFwiXFxcXHRoZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCOVwiLCBcIlxcXFxpb3RhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCQVwiLCBcIlxcXFxrYXBwYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkJcIiwgXCJcXFxcbGFtYmRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCQ1wiLCBcIlxcXFxtdVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkRcIiwgXCJcXFxcbnVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JFXCIsIFwiXFxcXHhpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCRlwiLCBcIlxcXFxvbWljcm9uXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDMFwiLCBcIlxcXFxwaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzFcIiwgXCJcXFxccmhvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDM1wiLCBcIlxcXFxzaWdtYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzRcIiwgXCJcXFxcdGF1XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDNVwiLCBcIlxcXFx1cHNpbG9uXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNENVwiLCBcIlxcXFxwaGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M3XCIsIFwiXFxcXGNoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzhcIiwgXCJcXFxccHNpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDOVwiLCBcIlxcXFxvbWVnYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjVcIiwgXCJcXFxcdmFyZXBzaWxvblwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRDFcIiwgXCJcXFxcdmFydGhldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0Q2XCIsIFwiXFxcXHZhcnBpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNGMVwiLCBcIlxcXFx2YXJyaG9cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0MyXCIsIFwiXFxcXHZhcnNpZ21hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDNlwiLCBcIlxcXFx2YXJwaGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMTdcIiwgXCIqXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCIrXCIsIFwiK1wiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxMlwiLCBcIi1cIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyQzVcIiwgXCJcXFxcY2RvdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxOFwiLCBcIlxcXFxjaXJjXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHhGN1wiLCBcIlxcXFxkaXZcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxceEIxXCIsIFwiXFxcXHBtXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHhEN1wiLCBcIlxcXFx0aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIyOVwiLCBcIlxcXFxjYXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMkFcIiwgXCJcXFxcY3VwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjE2XCIsIFwiXFxcXHNldG1pbnVzXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI3XCIsIFwiXFxcXGxhbmRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMjhcIiwgXCJcXFxcbG9yXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI3XCIsIFwiXFxcXHdlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI4XCIsIFwiXFxcXHZlZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIyMUFcIiwgXCJcXFxcc3VyZFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBvcGVuLCBcIihcIiwgXCIoXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG9wZW4sIFwiW1wiLCBcIltcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3BlbiwgXCJcXHUyN0U4XCIsIFwiXFxcXGxhbmdsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBvcGVuLCBcIlxcdTIyMjNcIiwgXCJcXFxcbHZlcnRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3BlbiwgXCJcXHUyMjI1XCIsIFwiXFxcXGxWZXJ0XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGNsb3NlLCBcIilcIiwgXCIpXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGNsb3NlLCBcIl1cIiwgXCJdXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGNsb3NlLCBcIj9cIiwgXCI/XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGNsb3NlLCBcIiFcIiwgXCIhXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGNsb3NlLCBcIlxcdTI3RTlcIiwgXCJcXFxccmFuZ2xlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGNsb3NlLCBcIlxcdTIyMjNcIiwgXCJcXFxccnZlcnRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgY2xvc2UsIFwiXFx1MjIyNVwiLCBcIlxcXFxyVmVydFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiPVwiLCBcIj1cIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIjxcIiwgXCI8XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCI+XCIsIFwiPlwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiOlwiLCBcIjpcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNDhcIiwgXCJcXFxcYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjQ1XCIsIFwiXFxcXGNvbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNjVcIiwgXCJcXFxcZ2VcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNjVcIiwgXCJcXFxcZ2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkwXCIsIFwiXFxcXGdldHNcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIj5cIiwgXCJcXFxcZ3RcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMDhcIiwgXCJcXFxcaW5cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMDlcIiwgXCJcXFxcbm90aW5cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTAzMzhcIiwgXCJcXFxcbm90XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjgyXCIsIFwiXFxcXHN1YnNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjI4M1wiLCBcIlxcXFxzdXBzZXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyODZcIiwgXCJcXFxcc3Vic2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyODdcIiwgXCJcXFxcc3Vwc2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4OFwiLCBcIlxcXFxuc3Vic2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4OVwiLCBcIlxcXFxuc3Vwc2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQThcIiwgXCJcXFxcbW9kZWxzXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkwXCIsIFwiXFxcXGxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2NFwiLCBcIlxcXFxsZVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2NFwiLCBcIlxcXFxsZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIjxcIiwgXCJcXFxcbHRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNjBcIiwgXCJcXFxcbmVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNjBcIiwgXCJcXFxcbmVxXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkyXCIsIFwiXFxcXHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTJcIiwgXCJcXFxcdG9cIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3MVwiLCBcIlxcXFxuZ2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgcmVsLCBcIlxcdTIyNzBcIiwgXCJcXFxcbmxlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBzcGFjaW5nLCBudWxsLCBcIlxcXFwhXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHNwYWNpbmcsIFwiXFx4QTBcIiwgXCJcXFxcIFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBzcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBzcGFjaW5nLCBudWxsLCBcIlxcXFwsXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHNwYWNpbmcsIG51bGwsIFwiXFxcXDpcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgc3BhY2luZywgbnVsbCwgXCJcXFxcO1wiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBzcGFjaW5nLCBudWxsLCBcIlxcXFxlbnNwYWNlXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHNwYWNpbmcsIG51bGwsIFwiXFxcXHFxdWFkXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHNwYWNpbmcsIG51bGwsIFwiXFxcXHF1YWRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxzcGFjZVwiKTtcbi8vIFJlZjogTGFUZVggU291cmNlIDJlOiBcXERlY2xhcmVSb2J1c3RDb21tYW5ke1xcbm9icmVha3NwYWNlfXslXG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxub2JyZWFrc3BhY2VcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgc3BhY2luZywgbnVsbCwgXCJcXFxcIVwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBzcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXCBcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgc3BhY2luZywgXCJcXHhBMFwiLCBcIn5cIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgc3BhY2luZywgbnVsbCwgXCJcXFxcLFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBzcGFjaW5nLCBudWxsLCBcIlxcXFw6XCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHNwYWNpbmcsIG51bGwsIFwiXFxcXDtcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgc3BhY2luZywgbnVsbCwgXCJcXFxcZW5zcGFjZVwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBzcGFjaW5nLCBudWxsLCBcIlxcXFxxcXVhZFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBzcGFjaW5nLCBudWxsLCBcIlxcXFxxdWFkXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHNwYWNpbmcsIFwiXFx4QTBcIiwgXCJcXFxcc3BhY2VcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxub2JyZWFrc3BhY2VcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcHVuY3QsIFwiLFwiLCBcIixcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcHVuY3QsIFwiO1wiLCBcIjtcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcHVuY3QsIFwiOlwiLCBcIlxcXFxjb2xvblwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkJDXCIsIFwiXFxcXGJhcndlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTIyQkJcIiwgXCJcXFxcdmVlYmFyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk5XCIsIFwiXFxcXG9kb3RcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTVcIiwgXCJcXFxcb3BsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTdcIiwgXCJcXFxcb3RpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjIwMlwiLCBcIlxcXFxwYXJ0aWFsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk4XCIsIFwiXFxcXG9zbGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjlBXCIsIFwiXFxcXGNpcmNsZWRjaXJjXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgYmluLCBcIlxcdTIyQTFcIiwgXCJcXFxcYm94ZG90XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUIzXCIsIFwiXFxcXGJpZ3RyaWFuZ2xldXBcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTI1QkRcIiwgXCJcXFxcYmlndHJpYW5nbGVkb3duXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyMDIwXCIsIFwiXFxcXGRhZ2dlclwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBiaW4sIFwiXFx1MjJDNFwiLCBcIlxcXFxkaWFtb25kXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyMkM2XCIsIFwiXFxcXHN0YXJcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYmluLCBcIlxcdTI1QzNcIiwgXCJcXFxcdHJpYW5nbGVsZWZ0XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUI5XCIsIFwiXFxcXHRyaWFuZ2xlcmlnaHRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3BlbiwgXCJ7XCIsIFwiXFxcXHtcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJ7XCIsIFwiXFxcXHtcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJ7XCIsIFwiXFxcXHRleHRicmFjZWxlZnRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgY2xvc2UsIFwifVwiLCBcIlxcXFx9XCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwifVwiLCBcIlxcXFx9XCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwifVwiLCBcIlxcXFx0ZXh0YnJhY2VyaWdodFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBvcGVuLCBcIntcIiwgXCJcXFxcbGJyYWNlXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGNsb3NlLCBcIn1cIiwgXCJcXFxccmJyYWNlXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG9wZW4sIFwiW1wiLCBcIlxcXFxsYnJhY2tcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgY2xvc2UsIFwiXVwiLCBcIlxcXFxyYnJhY2tcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCI8XCIsIFwiXFxcXHRleHRsZXNzXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCI+XCIsIFwiXFxcXHRleHRncmVhdGVyXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3BlbiwgXCJcXHUyMzBBXCIsIFwiXFxcXGxmbG9vclwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBjbG9zZSwgXCJcXHUyMzBCXCIsIFwiXFxcXHJmbG9vclwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBvcGVuLCBcIlxcdTIzMDhcIiwgXCJcXFxcbGNlaWxcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgY2xvc2UsIFwiXFx1MjMwOVwiLCBcIlxcXFxyY2VpbFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcXFxcIiwgXCJcXFxcYmFja3NsYXNoXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHRleHRvcmQsIFwiXFx1MjIyM1wiLCBcInxcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMjIzXCIsIFwiXFxcXHZlcnRcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJ8XCIsIFwiXFxcXHRleHRiYXJcIik7IC8vIGluIFQxIGZvbnRlbmNcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIyMjVcIiwgXCJcXFxcfFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIyMjVcIiwgXCJcXFxcVmVydFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIyMjVcIiwgXCJcXFxcdGV4dGJhcmRibFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5MVwiLCBcIlxcXFx1cGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUQxXCIsIFwiXFxcXFVwYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTNcIiwgXCJcXFxcZG93bmFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUQzXCIsIFwiXFxcXERvd25hcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5NVwiLCBcIlxcXFx1cGRvd25hcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCByZWwsIFwiXFx1MjFENVwiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBvcCwgXCJcXHUyMjEwXCIsIFwiXFxcXGNvcHJvZFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBvcCwgXCJcXHUyMkMxXCIsIFwiXFxcXGJpZ3ZlZVwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBvcCwgXCJcXHUyMkMwXCIsIFwiXFxcXGJpZ3dlZGdlXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG9wLCBcIlxcdTJBMDRcIiwgXCJcXFxcYmlndXBsdXNcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3AsIFwiXFx1MjJDMlwiLCBcIlxcXFxiaWdjYXBcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3AsIFwiXFx1MjJDM1wiLCBcIlxcXFxiaWdjdXBcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIyQlwiLCBcIlxcXFxpbnRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIyQlwiLCBcIlxcXFxpbnRvcFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJDXCIsIFwiXFxcXGlpbnRcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIyRFwiLCBcIlxcXFxpaWludFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBvcCwgXCJcXHUyMjBGXCIsIFwiXFxcXHByb2RcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIxMVwiLCBcIlxcXFxzdW1cIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3AsIFwiXFx1MkEwMlwiLCBcIlxcXFxiaWdvdGltZXNcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3AsIFwiXFx1MkEwMVwiLCBcIlxcXFxiaWdvcGx1c1wiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBvcCwgXCJcXHUyQTAwXCIsIFwiXFxcXGJpZ29kb3RcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIyRVwiLCBcIlxcXFxvaW50XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG9wLCBcIlxcdTJBMDZcIiwgXCJcXFxcYmlnc3FjdXBcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIyQlwiLCBcIlxcXFxzbWFsbGludFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBpbm5lciwgXCJcXHUyMDI2XCIsIFwiXFxcXHRleHRlbGxpcHNpc1wiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBpbm5lciwgXCJcXHUyMDI2XCIsIFwiXFxcXG1hdGhlbGxpcHNpc1wiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBpbm5lciwgXCJcXHUyMDI2XCIsIFwiXFxcXGxkb3RzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGlubmVyLCBcIlxcdTIwMjZcIiwgXCJcXFxcbGRvdHNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgaW5uZXIsIFwiXFx1MjJFRlwiLCBcIlxcXFxAY2RvdHNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgaW5uZXIsIFwiXFx1MjJGMVwiLCBcIlxcXFxkZG90c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIyRUVcIiwgXCJcXFxcdmRvdHNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYWNjZW50LCBcIlxcdTAyQ0FcIiwgXCJcXFxcYWN1dGVcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYWNjZW50LCBcIlxcdTAyQ0JcIiwgXCJcXFxcZ3JhdmVcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYWNjZW50LCBcIlxceEE4XCIsIFwiXFxcXGRkb3RcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYWNjZW50LCBcIn5cIiwgXCJcXFxcdGlsZGVcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYWNjZW50LCBcIlxcdTAyQzlcIiwgXCJcXFxcYmFyXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGFjY2VudCwgXCJcXHUwMkQ4XCIsIFwiXFxcXGJyZXZlXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGFjY2VudCwgXCJcXHUwMkM3XCIsIFwiXFxcXGNoZWNrXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGFjY2VudCwgXCJeXCIsIFwiXFxcXGhhdFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBhY2NlbnQsIFwiXFx1MjBEN1wiLCBcIlxcXFx2ZWNcIik7XG5kZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgYWNjZW50LCBcIlxcdTAyRDlcIiwgXCJcXFxcZG90XCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIGFjY2VudCwgXCJcXHUwMkRBXCIsIFwiXFxcXG1hdGhyaW5nXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDEzMVwiLCBcIlxcXFxpbWF0aFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAyMzdcIiwgXCJcXFxcam1hdGhcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUwMTMxXCIsIFwiXFxcXGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUwMjM3XCIsIFwiXFxcXGpcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJcXHhERlwiLCBcIlxcXFxzc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIlxceEU2XCIsIFwiXFxcXGFlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx4RTZcIiwgXCJcXFxcYWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUwMTUzXCIsIFwiXFxcXG9lXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx4RjhcIiwgXCJcXFxcb1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIlxceEM2XCIsIFwiXFxcXEFFXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MDE1MlwiLCBcIlxcXFxPRVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIlxceEQ4XCIsIFwiXFxcXE9cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgYWNjZW50LCBcIlxcdTAyQ0FcIiwgXCJcXFxcJ1wiKTsgLy8gYWN1dGVcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBhY2NlbnQsIFwiXFx1MDJDQlwiLCBcIlxcXFxgXCIpOyAvLyBncmF2ZVxuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIGFjY2VudCwgXCJcXHUwMkM2XCIsIFwiXFxcXF5cIik7IC8vIGNpcmN1bWZsZXhcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBhY2NlbnQsIFwiXFx1MDJEQ1wiLCBcIlxcXFx+XCIpOyAvLyB0aWxkZVxuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIGFjY2VudCwgXCJcXHUwMkM5XCIsIFwiXFxcXD1cIik7IC8vIG1hY3JvblxuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIGFjY2VudCwgXCJcXHUwMkQ4XCIsIFwiXFxcXHVcIik7IC8vIGJyZXZlXG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgYWNjZW50LCBcIlxcdTAyRDlcIiwgXCJcXFxcLlwiKTsgLy8gZG90IGFib3ZlXG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgYWNjZW50LCBcIlxcdTAyREFcIiwgXCJcXFxcclwiKTsgLy8gcmluZyBhYm92ZVxuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIGFjY2VudCwgXCJcXHUwMkM3XCIsIFwiXFxcXHZcIik7IC8vIGNhcm9uXG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgYWNjZW50LCBcIlxceEE4XCIsICdcXFxcXCInKTsgLy8gZGlhcmVzaXNcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBhY2NlbnQsIFwiXFx1MDJERFwiLCBcIlxcXFxIXCIpOyAvLyBkb3VibGUgYWN1dGVcblxuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxM1wiLCBcIi0tXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxM1wiLCBcIlxcXFx0ZXh0ZW5kYXNoXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxNFwiLCBcIi0tLVwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIwMTRcIiwgXCJcXFxcdGV4dGVtZGFzaFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIwMThcIiwgXCJgXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxOFwiLCBcIlxcXFx0ZXh0cXVvdGVsZWZ0XCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxOVwiLCBcIidcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwiXFxcXHRleHRxdW90ZXJpZ2h0XCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxQ1wiLCBcImBgXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxQ1wiLCBcIlxcXFx0ZXh0cXVvdGVkYmxsZWZ0XCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxRFwiLCBcIicnXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxRFwiLCBcIlxcXFx0ZXh0cXVvdGVkYmxyaWdodFwiKTtcbmRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBcIlxceEIwXCIsIFwiXFxcXGRlZ3JlZVwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIlxceEIwXCIsIFwiXFxcXGRlZ3JlZVwiKTtcbi8vIFRPRE86IEluIExhVGVYLCBcXHBvdW5kcyBjYW4gZ2VuZXJhdGUgYSBkaWZmZXJlbnQgY2hhcmFjdGVyIGluIHRleHQgYW5kIG1hdGhcbi8vIG1vZGUsIGJ1dCBhbW9uZyBvdXIgZm9udHMsIG9ubHkgTWFpbi1JdGFsaWMgZGVmaW5lcyB0aGlzIGNoYXJhY3RlciBcIjE2M1wiLlxuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxccG91bmRzXCIpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxcbWF0aHN0ZXJsaW5nXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxccG91bmRzXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxcdGV4dHN0ZXJsaW5nXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKG1hdGgsIGFtcywgdGV4dG9yZCwgXCJcXHUyNzIwXCIsIFwiXFxcXG1hbHRlc2VcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgYW1zLCB0ZXh0b3JkLCBcIlxcdTI3MjBcIiwgXCJcXFxcbWFsdGVzZVwiKTtcblxuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHNwYWNpbmcsIFwiXFx4QTBcIiwgXCJcXFxcIFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBzcGFjaW5nLCBcIlxceEEwXCIsIFwiIFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCBzcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTtcblxuLy8gVGhlcmUgYXJlIGxvdHMgb2Ygc3ltYm9scyB3aGljaCBhcmUgdGhlIHNhbWUsIHNvIHdlIGFkZCB0aGVtIGluIGFmdGVyd2FyZHMuXG5cbi8vIEFsbCBvZiB0aGVzZSBhcmUgdGV4dG9yZHMgaW4gbWF0aCBtb2RlXG52YXIgbWF0aFRleHRTeW1ib2xzID0gXCIwMTIzNDU2Nzg5L0AuXFxcIlwiO1xuZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRoVGV4dFN5bWJvbHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2ggPSBtYXRoVGV4dFN5bWJvbHMuY2hhckF0KGkpO1xuICAgIGRlZmluZVN5bWJvbChtYXRoLCBtYWluLCB0ZXh0b3JkLCBjaCwgY2gpO1xufVxuXG4vLyBBbGwgb2YgdGhlc2UgYXJlIHRleHRvcmRzIGluIHRleHQgbW9kZVxudmFyIHRleHRTeW1ib2xzID0gXCIwMTIzNDU2Nzg5IUAqKCktPStbXTw+fFxcXCI7Oj8vLixcIjtcbmZvciAodmFyIF9pID0gMDsgX2kgPCB0ZXh0U3ltYm9scy5sZW5ndGg7IF9pKyspIHtcbiAgICB2YXIgX2NoID0gdGV4dFN5bWJvbHMuY2hhckF0KF9pKTtcbiAgICBkZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgX2NoLCBfY2gpO1xufVxuXG4vLyBBbGwgb2YgdGhlc2UgYXJlIHRleHRvcmRzIGluIHRleHQgbW9kZSwgYW5kIG1hdGhvcmRzIGluIG1hdGggbW9kZVxudmFyIGxldHRlcnMgPSBcImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpcIjtcbmZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGxldHRlcnMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBfY2gyID0gbGV0dGVycy5jaGFyQXQoX2kyKTtcbiAgICBkZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMiwgX2NoMik7XG4gICAgZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIF9jaDIsIF9jaDIpO1xufVxuXG4vLyBXZSBhZGQgdGhlc2UgTGF0aW4tMSBsZXR0ZXJzIGFzIHN5bWJvbHMgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LFxuLy8gYnV0IHRoZXkgYXJlIG5vdCBhY3R1YWxseSBpbiB0aGUgZm9udCwgbm9yIGFyZSB0aGV5IHN1cHBvcnRlZCBieSB0aGVcbi8vIFVuaWNvZGUgYWNjZW50IG1lY2hhbmlzbSwgc28gdGhleSBmYWxsIGJhY2sgdG8gVGltZXMgZm9udCBhbmQgbG9vayB1Z2x5LlxuLy8gVE9ETyhlZGVtYWluZSk6IEZpeCB0aGlzLlxudmFyIGV4dHJhTGF0aW4gPSBcIsOHw5DDnsOnw75cIjtcbmZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGV4dHJhTGF0aW4ubGVuZ3RoOyBfaTMrKykge1xuICAgIHZhciBfY2gzID0gZXh0cmFMYXRpbi5jaGFyQXQoX2kzKTtcbiAgICBkZWZpbmVTeW1ib2wobWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgX2NoMyk7XG4gICAgZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIF9jaDMsIF9jaDMpO1xufVxuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiw7BcIiwgXCLDsFwiKTtcblxuLy8gVW5pY29kZSB2ZXJzaW9ucyBvZiBleGlzdGluZyBjaGFyYWN0ZXJzXG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMDEzXCIsIFwi4oCTXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxNFwiLCBcIuKAlFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIwMThcIiwgXCLigJhcIik7XG5kZWZpbmVTeW1ib2wodGV4dCwgbWFpbiwgdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwi4oCZXCIpO1xuZGVmaW5lU3ltYm9sKHRleHQsIG1haW4sIHRleHRvcmQsIFwiXFx1MjAxQ1wiLCBcIuKAnFwiKTtcbmRlZmluZVN5bWJvbCh0ZXh0LCBtYWluLCB0ZXh0b3JkLCBcIlxcdTIwMURcIiwgXCLigJ1cIik7XG5cbi8qKiovIH0pLFxuLyogMjkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cbi8qKiovIH0pLFxuLyogMzAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX191bmljb2RlU2NyaXB0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19zdWJtb2R1bGVzX2thdGV4X2ZvbnRzX2ZvbnRNZXRyaWNzRGF0YV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OSk7XG5cblxuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgbWV0cmljcyByZWdhcmRpbmcgZm9udHMgYW5kIGluZGl2aWR1YWwgc3ltYm9scy4gVGhlIHNpZ21hXG4gKiBhbmQgeGkgdmFyaWFibGVzLCBhcyB3ZWxsIGFzIHRoZSBtZXRyaWNNYXAgbWFwIGNvbnRhaW4gZGF0YSBleHRyYWN0ZWQgZnJvbVxuICogVGVYLCBUZVggZm9udCBtZXRyaWNzLCBhbmQgdGhlIFRURiBmaWxlcy4gVGhlc2UgZGF0YSBhcmUgdGhlbiBleHBvc2VkIHZpYSB0aGVcbiAqIGBtZXRyaWNzYCB2YXJpYWJsZSBhbmQgdGhlIGdldENoYXJhY3Rlck1ldHJpY3MgZnVuY3Rpb24uXG4gKi9cblxuLy8gSW4gVGVYLCB0aGVyZSBhcmUgYWN0dWFsbHkgdGhyZWUgc2V0cyBvZiBkaW1lbnNpb25zLCBvbmUgZm9yIGVhY2ggb2Zcbi8vIHRleHRzdHlsZSAoc2l6ZSBpbmRleCA1IGFuZCBoaWdoZXI6ID49OXB0KSwgc2NyaXB0c3R5bGUgKHNpemUgaW5kZXggMyBhbmQgNDpcbi8vIDctOHB0KSwgYW5kIHNjcmlwdHNjcmlwdHN0eWxlIChzaXplIGluZGV4IDEgYW5kIDI6IDUtNnB0KS4gIFRoZXNlIGFyZVxuLy8gcHJvdmlkZWQgaW4gdGhlIHRoZSBhcnJheXMgYmVsb3csIGluIHRoYXQgb3JkZXIuXG4vL1xuLy8gVGhlIGZvbnQgbWV0cmljcyBhcmUgc3RvcmVkIGluIGZvbnRzIGNtc3kxMCwgY21zeTcsIGFuZCBjbXN5NSByZXNwc2VjdGl2ZWx5LlxuLy8gVGhpcyB3YXMgZGV0ZXJtaW5lZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgc2NyaXB0OlxuLy9cbi8vICAgICBsYXRleCAtaW50ZXJhY3Rpb249bm9uc3RvcG1vZGUgXFxcbi8vICAgICAnXFxkb2N1bWVudGNsYXNze2FydGljbGV9XFx1c2VwYWNrYWdle2Ftc21hdGh9XFxiZWdpbntkb2N1bWVudH0nIFxcXG4vLyAgICAgJyRhJCBcXGV4cGFuZGFmdGVyXFxzaG93XFx0aGVcXHRleHRmb250MicgXFxcbi8vICAgICAnXFxleHBhbmRhZnRlclxcc2hvd1xcdGhlXFxzY3JpcHRmb250MicgXFxcbi8vICAgICAnXFxleHBhbmRhZnRlclxcc2hvd1xcdGhlXFxzY3JpcHRzY3JpcHRmb250MicgXFxcbi8vICAgICAnXFxzdG9wJ1xuLy9cbi8vIFRoZSBtZXRyaWNzIHRoZW1zZWx2ZXMgd2VyZSByZXRyZWl2ZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kczpcbi8vXG4vLyAgICAgdGZ0b3BsIGNtc3kxMFxuLy8gICAgIHRmdG9wbCBjbXN5N1xuLy8gICAgIHRmdG9wbCBjbXN5NVxuLy9cbi8vIFRoZSBvdXRwdXQgb2YgZWFjaCBvZiB0aGVzZSBjb21tYW5kcyBpcyBxdWl0ZSBsZW5ndGh5LiAgVGhlIG9ubHkgcGFydCB3ZVxuLy8gY2FyZSBhYm91dCBpcyB0aGUgRk9OVERJTUVOIHNlY3Rpb24uIEVhY2ggdmFsdWUgaXMgbWVhc3VyZWQgaW4gRU1zLlxudmFyIHNpZ21hc0FuZFhpcyA9IHtcbiAgICBzbGFudDogWzAuMjUwLCAwLjI1MCwgMC4yNTBdLCAvLyBzaWdtYTFcbiAgICBzcGFjZTogWzAuMDAwLCAwLjAwMCwgMC4wMDBdLCAvLyBzaWdtYTJcbiAgICBzdHJldGNoOiBbMC4wMDAsIDAuMDAwLCAwLjAwMF0sIC8vIHNpZ21hM1xuICAgIHNocmluazogWzAuMDAwLCAwLjAwMCwgMC4wMDBdLCAvLyBzaWdtYTRcbiAgICB4SGVpZ2h0OiBbMC40MzEsIDAuNDMxLCAwLjQzMV0sIC8vIHNpZ21hNVxuICAgIHF1YWQ6IFsxLjAwMCwgMS4xNzEsIDEuNDcyXSwgLy8gc2lnbWE2XG4gICAgZXh0cmFTcGFjZTogWzAuMDAwLCAwLjAwMCwgMC4wMDBdLCAvLyBzaWdtYTdcbiAgICBudW0xOiBbMC42NzcsIDAuNzMyLCAwLjkyNV0sIC8vIHNpZ21hOFxuICAgIG51bTI6IFswLjM5NCwgMC4zODQsIDAuMzg3XSwgLy8gc2lnbWE5XG4gICAgbnVtMzogWzAuNDQ0LCAwLjQ3MSwgMC41MDRdLCAvLyBzaWdtYTEwXG4gICAgZGVub20xOiBbMC42ODYsIDAuNzUyLCAxLjAyNV0sIC8vIHNpZ21hMTFcbiAgICBkZW5vbTI6IFswLjM0NSwgMC4zNDQsIDAuNTMyXSwgLy8gc2lnbWExMlxuICAgIHN1cDE6IFswLjQxMywgMC41MDMsIDAuNTA0XSwgLy8gc2lnbWExM1xuICAgIHN1cDI6IFswLjM2MywgMC40MzEsIDAuNDA0XSwgLy8gc2lnbWExNFxuICAgIHN1cDM6IFswLjI4OSwgMC4yODYsIDAuMjk0XSwgLy8gc2lnbWExNVxuICAgIHN1YjE6IFswLjE1MCwgMC4xNDMsIDAuMjAwXSwgLy8gc2lnbWExNlxuICAgIHN1YjI6IFswLjI0NywgMC4yODYsIDAuNDAwXSwgLy8gc2lnbWExN1xuICAgIHN1cERyb3A6IFswLjM4NiwgMC4zNTMsIDAuNDk0XSwgLy8gc2lnbWExOFxuICAgIHN1YkRyb3A6IFswLjA1MCwgMC4wNzEsIDAuMTAwXSwgLy8gc2lnbWExOVxuICAgIGRlbGltMTogWzIuMzkwLCAxLjcwMCwgMS45ODBdLCAvLyBzaWdtYTIwXG4gICAgZGVsaW0yOiBbMS4wMTAsIDEuMTU3LCAxLjQyMF0sIC8vIHNpZ21hMjFcbiAgICBheGlzSGVpZ2h0OiBbMC4yNTAsIDAuMjUwLCAwLjI1MF0sIC8vIHNpZ21hMjJcblxuICAgIC8vIFRoZXNlIGZvbnQgbWV0cmljcyBhcmUgZXh0cmFjdGVkIGZyb20gVGVYIGJ5IHVzaW5nIHRmdG9wbCBvbiBjbWV4MTAudGZtO1xuICAgIC8vIHRoZXkgY29ycmVzcG9uZCB0byB0aGUgZm9udCBwYXJhbWV0ZXJzIG9mIHRoZSBleHRlbnNpb24gZm9udHMgKGZhbWlseSAzKS5cbiAgICAvLyBTZWUgdGhlIFRlWGJvb2ssIHBhZ2UgNDQxLiBJbiBBTVNUZVgsIHRoZSBleHRlbnNpb24gZm9udHMgc2NhbGU7IHRvXG4gICAgLy8gbWF0Y2ggY21leDcsIHdlJ2QgdXNlIGNtZXg3LnRmbSB2YWx1ZXMgZm9yIHNjcmlwdCBhbmQgc2NyaXB0c2NyaXB0XG4gICAgLy8gdmFsdWVzLlxuICAgIGRlZmF1bHRSdWxlVGhpY2tuZXNzOiBbMC4wNCwgMC4wNDksIDAuMDQ5XSwgLy8geGk4OyBjbWV4NzogMC4wNDlcbiAgICBiaWdPcFNwYWNpbmcxOiBbMC4xMTEsIDAuMTExLCAwLjExMV0sIC8vIHhpOVxuICAgIGJpZ09wU3BhY2luZzI6IFswLjE2NiwgMC4xNjYsIDAuMTY2XSwgLy8geGkxMFxuICAgIGJpZ09wU3BhY2luZzM6IFswLjIsIDAuMiwgMC4yXSwgLy8geGkxMVxuICAgIGJpZ09wU3BhY2luZzQ6IFswLjYsIDAuNjExLCAwLjYxMV0sIC8vIHhpMTI7IGNtZXg3OiAwLjYxMVxuICAgIGJpZ09wU3BhY2luZzU6IFswLjEsIDAuMTQzLCAwLjE0M10sIC8vIHhpMTM7IGNtZXg3OiAwLjE0M1xuXG4gICAgLy8gVGhlIFxcc3FydCBydWxlIHdpZHRoIGlzIHRha2VuIGZyb20gdGhlIGhlaWdodCBvZiB0aGUgc3VyZCBjaGFyYWN0ZXIuXG4gICAgLy8gU2luY2Ugd2UgdXNlIHRoZSBzYW1lIGZvbnQgYXQgYWxsIHNpemVzLCB0aGlzIHRoaWNrbmVzcyBkb2Vzbid0IHNjYWxlLlxuICAgIHNxcnRSdWxlVGhpY2tuZXNzOiBbMC4wNCwgMC4wNCwgMC4wNF0sXG5cbiAgICAvLyBUaGlzIHZhbHVlIGRldGVybWluZXMgaG93IGxhcmdlIGEgcHQgaXMsIGZvciBtZXRyaWNzIHdoaWNoIGFyZSBkZWZpbmVkXG4gICAgLy8gaW4gdGVybXMgb2YgcHRzLlxuICAgIC8vIFRoaXMgdmFsdWUgaXMgYWxzbyB1c2VkIGluIGthdGV4Lmxlc3M7IGlmIHlvdSBjaGFuZ2UgaXQgbWFrZSBzdXJlIHRoZVxuICAgIC8vIHZhbHVlcyBtYXRjaC5cbiAgICBwdFBlckVtOiBbMTAuMCwgMTAuMCwgMTAuMF0sXG5cbiAgICAvLyBUaGUgc3BhY2UgYmV0d2VlbiBhZGphY2VudCBgfGAgY29sdW1ucyBpbiBhbiBhcnJheSBkZWZpbml0aW9uLiBGcm9tXG4gICAgLy8gYFxcc2hvd3RoZVxcZG91YmxlcnVsZXNlcGAgaW4gTGFUZVguIEVxdWFscyAyLjAgLyBwdFBlckVtLlxuICAgIGRvdWJsZVJ1bGVTZXA6IFswLjIsIDAuMiwgMC4yXVxufTtcblxuLy8gVGhpcyBtYXAgY29udGFpbnMgYSBtYXBwaW5nIGZyb20gZm9udCBuYW1lIGFuZCBjaGFyYWN0ZXIgY29kZSB0byBjaGFyYWN0ZXJcbi8vIG1ldHJpY3MsIGluY2x1ZGluZyBoZWlnaHQsIGRlcHRoLCBpdGFsaWMgY29ycmVjdGlvbiwgYW5kIHNrZXcgKGtlcm4gZnJvbSB0aGVcbi8vIGNoYXJhY3RlciB0byB0aGUgY29ycmVzcG9uZGluZyBcXHNrZXdjaGFyKVxuLy8gVGhpcyBtYXAgaXMgZ2VuZXJhdGVkIHZpYSBgbWFrZSBtZXRyaWNzYC4gSXQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIG1hbnVhbGx5LlxuXG5cbi8vIFRoZXNlIGFyZSB2ZXJ5IHJvdWdoIGFwcHJveGltYXRpb25zLiAgV2UgZGVmYXVsdCB0byBUaW1lcyBOZXcgUm9tYW4gd2hpY2hcbi8vIHNob3VsZCBoYXZlIExhdGluLTEgYW5kIEN5cmlsbGljIGNoYXJhY3RlcnMsIGJ1dCBtYXkgbm90IGRlcGVuZGluZyBvbiB0aGVcbi8vIG9wZXJhdGluZyBzeXN0ZW0uICBUaGUgbWV0cmljcyBkbyBub3QgYWNjb3VudCBmb3IgZXh0cmEgaGVpZ2h0IGZyb20gdGhlXG4vLyBhY2NlbnRzLiAgSW4gdGhlIGNhc2Ugb2YgQ3lyaWxsaWMgY2hhcmFjdGVycyB3aGljaCBoYXZlIGJvdGggYXNjZW5kZXJzIGFuZFxuLy8gZGVzY2VuZGVycyB3ZSBwcmVmZXIgYXBwcm94aW1hdGlvbnMgd2l0aCBhc2NlbmRlcnMsIHByaW1hcmlseSB0byBwcmV2ZW50XG4vLyB0aGUgZnJhY3Rpb24gYmFyIG9yIHJvb3QgbGluZSBmcm9tIGludGVyc2VjdGluZyB0aGUgZ2x5cGguXG4vLyBUT0RPKGtldmluYikgYWxsb3cgdW5pb24gb2YgbXVsdGlwbGUgZ2x5cGggbWV0cmljcyBmb3IgYmV0dGVyIGFjY3VyYWN5LlxudmFyIGV4dHJhQ2hhcmFjdGVyTWFwID0ge1xuICAgIC8vIExhdGluLTFcbiAgICAnw4UnOiAnQScsXG4gICAgJ8OHJzogJ0MnLFxuICAgICfDkCc6ICdEJyxcbiAgICAnw54nOiAnbycsXG4gICAgJ8OlJzogJ2EnLFxuICAgICfDpyc6ICdjJyxcbiAgICAnw7AnOiAnZCcsXG4gICAgJ8O+JzogJ28nLFxuXG4gICAgLy8gQ3lyaWxsaWNcbiAgICAn0JAnOiAnQScsXG4gICAgJ9CRJzogJ0InLFxuICAgICfQkic6ICdCJyxcbiAgICAn0JMnOiAnRicsXG4gICAgJ9CUJzogJ0EnLFxuICAgICfQlSc6ICdFJyxcbiAgICAn0JYnOiAnSycsXG4gICAgJ9CXJzogJzMnLFxuICAgICfQmCc6ICdOJyxcbiAgICAn0JknOiAnTicsXG4gICAgJ9CaJzogJ0snLFxuICAgICfQmyc6ICdOJyxcbiAgICAn0JwnOiAnTScsXG4gICAgJ9CdJzogJ0gnLFxuICAgICfQnic6ICdPJyxcbiAgICAn0J8nOiAnTicsXG4gICAgJ9CgJzogJ1AnLFxuICAgICfQoSc6ICdDJyxcbiAgICAn0KInOiAnVCcsXG4gICAgJ9CjJzogJ3knLFxuICAgICfQpCc6ICdPJyxcbiAgICAn0KUnOiAnWCcsXG4gICAgJ9CmJzogJ1UnLFxuICAgICfQpyc6ICdoJyxcbiAgICAn0KgnOiAnVycsXG4gICAgJ9CpJzogJ1cnLFxuICAgICfQqic6ICdCJyxcbiAgICAn0KsnOiAnWCcsXG4gICAgJ9CsJzogJ0InLFxuICAgICfQrSc6ICczJyxcbiAgICAn0K4nOiAnWCcsXG4gICAgJ9CvJzogJ1InLFxuICAgICfQsCc6ICdhJyxcbiAgICAn0LEnOiAnYicsXG4gICAgJ9CyJzogJ2EnLFxuICAgICfQsyc6ICdyJyxcbiAgICAn0LQnOiAneScsXG4gICAgJ9C1JzogJ2UnLFxuICAgICfQtic6ICdtJyxcbiAgICAn0LcnOiAnZScsXG4gICAgJ9C4JzogJ24nLFxuICAgICfQuSc6ICduJyxcbiAgICAn0LonOiAnbicsXG4gICAgJ9C7JzogJ24nLFxuICAgICfQvCc6ICdtJyxcbiAgICAn0L0nOiAnbicsXG4gICAgJ9C+JzogJ28nLFxuICAgICfQvyc6ICduJyxcbiAgICAn0YAnOiAncCcsXG4gICAgJ9GBJzogJ2MnLFxuICAgICfRgic6ICdvJyxcbiAgICAn0YMnOiAneScsXG4gICAgJ9GEJzogJ2InLFxuICAgICfRhSc6ICd4JyxcbiAgICAn0YYnOiAnbicsXG4gICAgJ9GHJzogJ24nLFxuICAgICfRiCc6ICd3JyxcbiAgICAn0YknOiAndycsXG4gICAgJ9GKJzogJ2EnLFxuICAgICfRiyc6ICdtJyxcbiAgICAn0YwnOiAnYScsXG4gICAgJ9GNJzogJ2UnLFxuICAgICfRjic6ICdtJyxcbiAgICAn0Y8nOiAncidcbn07XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBsb29raW5nIHVwIGluZm9ybWF0aW9uIGluIHRoZVxuICogbWV0cmljTWFwIHRhYmxlLiBJdCB0YWtlcyBhIGNoYXJhY3RlciBhcyBhIHN0cmluZywgYW5kIGEgZm9udC5cbiAqXG4gKiBOb3RlOiB0aGUgYHdpZHRoYCBwcm9wZXJ0eSBtYXkgYmUgdW5kZWZpbmVkIGlmIGZvbnRNZXRyaWNzRGF0YS5qcyB3YXNuJ3RcbiAqIGJ1aWx0IHVzaW5nIGBNYWtlIGV4dGVuZGVkX21ldHJpY3NgLlxuICovXG52YXIgZ2V0Q2hhcmFjdGVyTWV0cmljcyA9IGZ1bmN0aW9uIGdldENoYXJhY3Rlck1ldHJpY3MoY2hhcmFjdGVyLCBmb250LCBtb2RlKSB7XG4gICAgaWYgKCFfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX3N1Ym1vZHVsZXNfa2F0ZXhfZm9udHNfZm9udE1ldHJpY3NEYXRhX19bXCJhXCIgLyogZGVmYXVsdCAqL11bZm9udF0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRm9udCBtZXRyaWNzIG5vdCBmb3VuZCBmb3IgZm9udDogXCIgKyBmb250ICsgXCIuXCIpO1xuICAgIH1cbiAgICB2YXIgY2ggPSBjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKTtcbiAgICBpZiAoY2hhcmFjdGVyWzBdIGluIGV4dHJhQ2hhcmFjdGVyTWFwKSB7XG4gICAgICAgIGNoID0gZXh0cmFDaGFyYWN0ZXJNYXBbY2hhcmFjdGVyWzBdXS5jaGFyQ29kZUF0KDApO1xuICAgIH1cbiAgICB2YXIgbWV0cmljcyA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fc3VibW9kdWxlc19rYXRleF9mb250c19mb250TWV0cmljc0RhdGFfX1tcImFcIiAvKiBkZWZhdWx0ICovXVtmb250XVtjaF07XG5cbiAgICBpZiAoIW1ldHJpY3MgJiYgbW9kZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIC8vIFdlIGRvbid0IHR5cGljYWxseSBoYXZlIGZvbnQgbWV0cmljcyBmb3IgQXNpYW4gc2NyaXB0cy5cbiAgICAgICAgLy8gQnV0IHNpbmNlIHdlIHN1cHBvcnQgdGhlbSBpbiB0ZXh0IG1vZGUsIHdlIG5lZWQgdG8gcmV0dXJuXG4gICAgICAgIC8vIHNvbWUgc29ydCBvZiBtZXRyaWNzLlxuICAgICAgICAvLyBTbyBpZiB0aGUgY2hhcmFjdGVyIGlzIGluIGEgc2NyaXB0IHdlIHN1cHBvcnQgYnV0IHdlXG4gICAgICAgIC8vIGRvbid0IGhhdmUgbWV0cmljcyBmb3IgaXQsIGp1c3QgdXNlIHRoZSBtZXRyaWNzIGZvclxuICAgICAgICAvLyB0aGUgTGF0aW4gY2FwaXRhbCBsZXR0ZXIgTS4gVGhpcyBpcyBjbG9zZSBlbm91Z2ggYmVjYXVzZVxuICAgICAgICAvLyB3ZSAoY3VycmVudGx5KSBvbmx5IGNhcmUgYWJvdXQgdGhlIGhlaWdodCBvZiB0aGUgZ2xweWhcbiAgICAgICAgLy8gbm90IGl0cyB3aWR0aC5cbiAgICAgICAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3VuaWNvZGVTY3JpcHRzX19bXCJiXCIgLyogc3VwcG9ydGVkQ29kZXBvaW50ICovXSkoY2gpKSB7XG4gICAgICAgICAgICBtZXRyaWNzID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19zdWJtb2R1bGVzX2thdGV4X2ZvbnRzX2ZvbnRNZXRyaWNzRGF0YV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dW2ZvbnRdWzc3XTsgLy8gNzcgaXMgdGhlIGNoYXJjb2RlIGZvciAnTSdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtZXRyaWNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZXB0aDogbWV0cmljc1swXSxcbiAgICAgICAgICAgIGhlaWdodDogbWV0cmljc1sxXSxcbiAgICAgICAgICAgIGl0YWxpYzogbWV0cmljc1syXSxcbiAgICAgICAgICAgIHNrZXc6IG1ldHJpY3NbM10sXG4gICAgICAgICAgICB3aWR0aDogbWV0cmljc1s0XVxuICAgICAgICB9O1xuICAgIH1cbn07XG5cbnZhciBmb250TWV0cmljc0J5U2l6ZUluZGV4ID0ge307XG5cbi8qKlxuICogR2V0IHRoZSBmb250IG1ldHJpY3MgZm9yIGEgZ2l2ZW4gc2l6ZS5cbiAqL1xudmFyIGdldEZvbnRNZXRyaWNzID0gZnVuY3Rpb24gZ2V0Rm9udE1ldHJpY3Moc2l6ZSkge1xuICAgIHZhciBzaXplSW5kZXggPSB2b2lkIDA7XG4gICAgaWYgKHNpemUgPj0gNSkge1xuICAgICAgICBzaXplSW5kZXggPSAwO1xuICAgIH0gZWxzZSBpZiAoc2l6ZSA+PSAzKSB7XG4gICAgICAgIHNpemVJbmRleCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2l6ZUluZGV4ID0gMjtcbiAgICB9XG4gICAgaWYgKCFmb250TWV0cmljc0J5U2l6ZUluZGV4W3NpemVJbmRleF0pIHtcbiAgICAgICAgdmFyIG1ldHJpY3MgPSBmb250TWV0cmljc0J5U2l6ZUluZGV4W3NpemVJbmRleF0gPSB7XG4gICAgICAgICAgICBjc3NFbVBlck11OiBzaWdtYXNBbmRYaXMucXVhZFtzaXplSW5kZXhdIC8gMThcbiAgICAgICAgfTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHNpZ21hc0FuZFhpcykge1xuICAgICAgICAgICAgaWYgKHNpZ21hc0FuZFhpcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgbWV0cmljc1trZXldID0gc2lnbWFzQW5kWGlzW2tleV1bc2l6ZUluZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9udE1ldHJpY3NCeVNpemVJbmRleFtzaXplSW5kZXhdO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh7XG4gICAgZ2V0Rm9udE1ldHJpY3M6IGdldEZvbnRNZXRyaWNzLFxuICAgIGdldENoYXJhY3Rlck1ldHJpY3M6IGdldENoYXJhY3Rlck1ldHJpY3Ncbn0pO1xuXG4vKioqLyB9KSxcbi8qIDMxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfb2JqZWN0X2ZyZWV6ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Nik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19vYmplY3RfZnJlZXplX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9jb3JlX2pzX29iamVjdF9mcmVlemVfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfXyk7XG5cblxuXG5cbi8qKlxuICogTGV4aW5nIG9yIHBhcnNpbmcgcG9zaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgZXJyb3IgcmVwb3J0aW5nLlxuICogVGhpcyBvYmplY3QgaXMgaW1tdXRhYmxlLlxuICovXG52YXIgU291cmNlTG9jYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gRW5kIG9mZnNldCwgemVyby1iYXNlZCBleGNsdXNpdmUuXG5cbiAgICAvLyBMZXhlciBob2xkaW5nIHRoZSBpbnB1dCBzdHJpbmcuXG4gICAgZnVuY3Rpb24gU291cmNlTG9jYXRpb24obGV4ZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQoKSh0aGlzLCBTb3VyY2VMb2NhdGlvbik7XG5cbiAgICAgICAgdGhpcy5sZXhlciA9IGxleGVyO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMuZW5kID0gZW5kO1xuICAgICAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9jb3JlX2pzX29iamVjdF9mcmVlemVfX19kZWZhdWx0KCkodGhpcyk7IC8vIEltbXV0YWJsZSB0byBhbGxvdyBzaGFyaW5nIGluIHJhbmdlKCkuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIHR3byBgU291cmNlTG9jYXRpb25gcyBmcm9tIGxvY2F0aW9uIHByb3ZpZGVycywgZ2l2ZW4gdGhleSBhcmVcbiAgICAgKiBwcm92aWRlZCBpbiBvcmRlciBvZiBhcHBlYXJhbmNlLlxuICAgICAqIC0gUmV0dXJucyB0aGUgZmlyc3Qgb25lJ3MgbG9jYXRpb24gaWYgb25seSB0aGUgZmlyc3QgaXMgcHJvdmlkZWQuXG4gICAgICogLSBSZXR1cm5zIGEgbWVyZ2VkIHJhbmdlIG9mIHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgaWYgYm90aCBhcmUgcHJvdmlkZWRcbiAgICAgKiAgIGFuZCB0aGVpciBsZXhlcnMgbWF0Y2guXG4gICAgICogLSBPdGhlcndpc2UsIHJldHVybnMgbnVsbC5cbiAgICAgKi9cbiAgICAvLyBTdGFydCBvZmZzZXQsIHplcm8tYmFzZWQgaW5jbHVzaXZlLlxuXG5cbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCgpKFNvdXJjZUxvY2F0aW9uLCBudWxsLCBbe1xuICAgICAgICBrZXk6IFwicmFuZ2VcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJhbmdlKGZpcnN0LCBzZWNvbmQpIHtcbiAgICAgICAgICAgIGlmICghc2Vjb25kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0ICYmIGZpcnN0LmxvYztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWZpcnN0IHx8ICFmaXJzdC5sb2MgfHwgIXNlY29uZC5sb2MgfHwgZmlyc3QubG9jLmxleGVyICE9PSBzZWNvbmQubG9jLmxleGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU291cmNlTG9jYXRpb24oZmlyc3QubG9jLmxleGVyLCBmaXJzdC5sb2Muc3RhcnQsIHNlY29uZC5sb2MuZW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBTb3VyY2VMb2NhdGlvbjtcbn0oKTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChTb3VyY2VMb2NhdGlvbik7XG5cbi8qKiovIH0pLFxuLyogMzIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIGlkID0gMFxuICAsIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG5cbi8qKiovIH0pLFxuLyogMzMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihiaXRtYXAsIHZhbHVlKXtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlICA6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlICAgIDogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZSAgICAgICA6IHZhbHVlXG4gIH07XG59O1xuXG4vKioqLyB9KSxcbi8qIDM0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX3V0aWxzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXG5cbi8qKlxuICogVGhpcyBpcyBhIG1vZHVsZSBmb3Igc3RvcmluZyBzZXR0aW5ncyBwYXNzZWQgaW50byBLYVRlWC4gSXQgY29ycmVjdGx5IGhhbmRsZXNcbiAqIGRlZmF1bHQgc2V0dGluZ3MuXG4gKi9cblxuXG5cbi8qKlxuICogVGhlIG1haW4gU2V0dGluZ3Mgb2JqZWN0XG4gKlxuICogVGhlIGN1cnJlbnQgb3B0aW9ucyBzdG9yZWQgYXJlOlxuICogIC0gZGlzcGxheU1vZGU6IFdoZXRoZXIgdGhlIGV4cHJlc3Npb24gc2hvdWxkIGJlIHR5cGVzZXQgYXMgaW5saW5lIG1hdGhcbiAqICAgICAgICAgICAgICAgICAoZmFsc2UsIHRoZSBkZWZhdWx0KSwgbWVhbmluZyB0aGF0IHRoZSBtYXRoIHN0YXJ0cyBpblxuICogICAgICAgICAgICAgICAgIFxcdGV4dHN0eWxlIGFuZCBpcyBwbGFjZWQgaW4gYW4gaW5saW5lLWJsb2NrKTsgb3IgYXMgZGlzcGxheVxuICogICAgICAgICAgICAgICAgIG1hdGggKHRydWUpLCBtZWFuaW5nIHRoYXQgdGhlIG1hdGggc3RhcnRzIGluIFxcZGlzcGxheXN0eWxlXG4gKiAgICAgICAgICAgICAgICAgYW5kIGlzIHBsYWNlZCBpbiBhIGJsb2NrIHdpdGggdmVydGljYWwgbWFyZ2luLlxuICovXG52YXIgU2V0dGluZ3MgPSBmdW5jdGlvbiBTZXR0aW5ncyhvcHRpb25zKSB7XG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQoKSh0aGlzLCBTZXR0aW5ncyk7XG5cbiAgICAvLyBhbGxvdyBudWxsIG9wdGlvbnNcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLmRpc3BsYXlNb2RlID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmRlZmx0KG9wdGlvbnMuZGlzcGxheU1vZGUsIGZhbHNlKTtcbiAgICB0aGlzLnRocm93T25FcnJvciA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5kZWZsdChvcHRpb25zLnRocm93T25FcnJvciwgdHJ1ZSk7XG4gICAgdGhpcy5lcnJvckNvbG9yID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmRlZmx0KG9wdGlvbnMuZXJyb3JDb2xvciwgXCIjY2MwMDAwXCIpO1xuICAgIHRoaXMubWFjcm9zID0gb3B0aW9ucy5tYWNyb3MgfHwge307XG4gICAgdGhpcy5jb2xvcklzVGV4dENvbG9yID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmRlZmx0KG9wdGlvbnMuY29sb3JJc1RleHRDb2xvciwgZmFsc2UpO1xuICAgIHRoaXMubWF4U2l6ZSA9IE1hdGgubWF4KDAsIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5kZWZsdChvcHRpb25zLm1heFNpemUsIEluZmluaXR5KSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKFNldHRpbmdzKTtcblxuLyoqKi8gfSksXG4vKiAzNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2Zyb20gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KTtcblxudmFyIF9mcm9tMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Zyb20pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcnIyW2ldID0gYXJyW2ldO1xuICAgIH1cblxuICAgIHJldHVybiBhcnIyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoMCwgX2Zyb20yLmRlZmF1bHQpKGFycik7XG4gIH1cbn07XG5cbi8qKiovIH0pLFxuLyogMzYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkYXQgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MSkodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbl9fd2VicGFja19yZXF1aXJlX18oNDgpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uKGl0ZXJhdGVkKXtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24oKXtcbiAgdmFyIE8gICAgID0gdGhpcy5fdFxuICAgICwgaW5kZXggPSB0aGlzLl9pXG4gICAgLCBwb2ludDtcbiAgaWYoaW5kZXggPj0gTy5sZW5ndGgpcmV0dXJuIHt2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHt2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlfTtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDM3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIDcuMS40IFRvSW50ZWdlclxudmFyIGNlaWwgID0gTWF0aC5jZWlsXG4gICwgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuLyoqKi8gfSksXG4vKiAzOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIGlmKGl0ID09IHVuZGVmaW5lZCl0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG5cbi8qKiovIH0pLFxuLyogMzkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg3KVxuICAsIGVudW1CdWdLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Myk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKXtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cbi8qKiovIH0pLFxuLyogNDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNDkpXG4gICwgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cbi8qKiovIH0pLFxuLyogNDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpKCdrZXlzJylcbiAgLCB1aWQgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcbiAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IHVpZChrZXkpKTtcbn07XG5cbi8qKiovIH0pLFxuLyogNDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoaW1tdXRhYmxlKSAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IHNjcmlwdEZyb21Db2RlcG9pbnQ7XG4vKiBoYXJtb255IGV4cG9ydCAoaW1tdXRhYmxlKSAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYlwiXSA9IHN1cHBvcnRlZENvZGVwb2ludDtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2NvcmVfanNfZ2V0X2l0ZXJhdG9yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfY29yZV9qc19nZXRfaXRlcmF0b3JfXyk7XG5cblxuXG5cbi8qKlxuICogVW5pY29kZSBibG9jayBkYXRhIGZvciB0aGUgZmFtaWxpZXMgb2Ygc2NyaXB0cyB3ZSBzdXBwb3J0IGluIFxcdGV4dHt9LlxuICogU2NyaXB0cyBvbmx5IG5lZWQgdG8gYXBwZWFyIGhlcmUgaWYgdGhleSBkbyBub3QgaGF2ZSBmb250IG1ldHJpY3MuXG4gKi9cbnZhciBzY3JpcHREYXRhID0gW3tcbiAgICAvLyBMYXRpbiBjaGFyYWN0ZXJzIGJleW9uZCB0aGUgTGF0aW4tMSBjaGFyYWN0ZXJzIHdlIGhhdmUgbWV0cmljcyBmb3IuXG4gICAgLy8gTmVlZGVkIGZvciBDemVjaCwgSHVuZ2FyaWFuIGFuZCBUdXJraXNoIHRleHQsIGZvciBleGFtcGxlLlxuICAgIG5hbWU6ICdsYXRpbicsXG4gICAgYmxvY2tzOiBbWzB4MDEwMCwgMHgwMjRmXSwgLy8gTGF0aW4gRXh0ZW5kZWQtQSBhbmQgTGF0aW4gRXh0ZW5kZWQtQlxuICAgIFsweDAzMDAsIDB4MDM2Zl1dXG59LCB7XG4gICAgLy8gVGhlIEN5cmlsbGljIHNjcmlwdCB1c2VkIGJ5IFJ1c3NpYW4gYW5kIHJlbGF0ZWQgbGFuZ3VhZ2VzLlxuICAgIC8vIEEgQ3lyaWxsaWMgc3Vic2V0IHVzZWQgdG8gYmUgc3VwcG9ydGVkIGFzIGV4cGxpY2l0bHkgZGVmaW5lZFxuICAgIC8vIHN5bWJvbHMgaW4gc3ltYm9scy5qc1xuICAgIG5hbWU6ICdjeXJpbGxpYycsXG4gICAgYmxvY2tzOiBbWzB4MDQwMCwgMHgwNGZmXV1cbn0sIHtcbiAgICAvLyBUaGUgQnJhaG1pYyBzY3JpcHRzIG9mIFNvdXRoIGFuZCBTb3V0aGVhc3QgQXNpYVxuICAgIC8vIERldmFuYWdhcmkgKDA5MDDigJMwOTdGKVxuICAgIC8vIEJlbmdhbGkgKDA5ODDigJMwOUZGKVxuICAgIC8vIEd1cm11a2hpICgwQTAw4oCTMEE3RilcbiAgICAvLyBHdWphcmF0aSAoMEE4MOKAkzBBRkYpXG4gICAgLy8gT3JpeWEgKDBCMDDigJMwQjdGKVxuICAgIC8vIFRhbWlsICgwQjgw4oCTMEJGRilcbiAgICAvLyBUZWx1Z3UgKDBDMDDigJMwQzdGKVxuICAgIC8vIEthbm5hZGEgKDBDODDigJMwQ0ZGKVxuICAgIC8vIE1hbGF5YWxhbSAoMEQwMOKAkzBEN0YpXG4gICAgLy8gU2luaGFsYSAoMEQ4MOKAkzBERkYpXG4gICAgLy8gVGhhaSAoMEUwMOKAkzBFN0YpXG4gICAgLy8gTGFvICgwRTgw4oCTMEVGRilcbiAgICAvLyBUaWJldGFuICgwRjAw4oCTMEZGRilcbiAgICAvLyBNeWFubWFyICgxMDAw4oCTMTA5RilcbiAgICBuYW1lOiAnYnJhaG1pYycsXG4gICAgYmxvY2tzOiBbWzB4MDkwMCwgMHgxMDlGXV1cbn0sIHtcbiAgICBuYW1lOiAnZ2VvcmdpYW4nLFxuICAgIGJsb2NrczogW1sweDEwQTAsIDB4MTBmZl1dXG59LCB7XG4gICAgLy8gQ2hpbmVzZSBhbmQgSmFwYW5lc2UuXG4gICAgLy8gVGhlIFwia1wiIGluIGNqayBpcyBmb3IgS29yZWFuLCBidXQgd2UndmUgc2VwYXJhdGVkIEtvcmVhbiBvdXRcbiAgICBuYW1lOiBcImNqa1wiLFxuICAgIGJsb2NrczogW1sweDMwMDAsIDB4MzBGRl0sIC8vIENKSyBzeW1ib2xzIGFuZCBwdW5jdHVhdGlvbiwgSGlyYWdhbmEsIEthdGFrYW5hXG4gICAgWzB4NEUwMCwgMHg5RkFGXSwgLy8gQ0pLIGlkZW9ncmFtc1xuICAgIFsweEZGMDAsIDB4RkY2MF1dXG59LCB7XG4gICAgLy8gS29yZWFuXG4gICAgbmFtZTogJ2hhbmd1bCcsXG4gICAgYmxvY2tzOiBbWzB4QUMwMCwgMHhEN0FGXV1cbn1dO1xuXG4vKipcbiAqIEdpdmVuIGEgY29kZXBvaW50LCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCBvciBzY3JpcHQgZmFtaWx5XG4gKiBpdCBpcyBmcm9tLCBvciBudWxsIGlmIGl0IGlzIG5vdCBwYXJ0IG9mIGEga25vd24gYmxvY2tcbiAqL1xuXG5cbi8qXG4gKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgVW5pY29kZSBzY3JpcHRzIGFuZCBzY3JpcHQgZmFtaWxpZXMgdGhhdCB3ZVxuICogc3VwcG9ydC4gVG8gYWRkIG5ldyBzY3JpcHRzIG9yIGZhbWlsaWVzLCBqdXN0IGFkZCBhIG5ldyBlbnRyeSB0byB0aGVcbiAqIHNjcmlwdERhdGEgYXJyYXkgYmVsb3cuIEFkZGluZyBzY3JpcHRzIHRvIHRoZSBzY3JpcHREYXRhIGFycmF5IGFsbG93c1xuICogY2hhcmFjdGVycyBmcm9tIHRoYXQgc2NyaXB0IHRvIGFwcGVhciBpbiBcXHRleHR7fSBlbnZpcm9ubWVudHMuXG4gKi9cblxuLyoqXG4gKiBFYWNoIHNjcmlwdCBvciBzY3JpcHQgZmFtaWx5IGhhcyBhIG5hbWUgYW5kIGFuIGFycmF5IG9mIGJsb2Nrcy5cbiAqIEVhY2ggYmxvY2sgaXMgYW4gYXJyYXkgb2YgdHdvIG51bWJlcnMgd2hpY2ggc3BlY2lmeSB0aGUgc3RhcnQgYW5kXG4gKiBlbmQgcG9pbnRzIChpbmNsdXNpdmUpIG9mIGEgYmxvY2sgb2YgVW5pY29kZSBjb2RlcG9pbnRzLlxuICovXG5mdW5jdGlvbiBzY3JpcHRGcm9tQ29kZXBvaW50KGNvZGVwb2ludCkge1xuICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZTtcbiAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTtcbiAgICB2YXIgX2l0ZXJhdG9yRXJyb3IgPSB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fX2RlZmF1bHQoKShzY3JpcHREYXRhKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFyIHNjcmlwdCA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjIgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjIgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2NvcmVfanNfZ2V0X2l0ZXJhdG9yX19fZGVmYXVsdCgpKHNjcmlwdC5ibG9ja3MpLCBfc3RlcDI7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSAoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gX3N0ZXAyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlcG9pbnQgPj0gYmxvY2tbMF0gJiYgY29kZXBvaW50IDw9IGJsb2NrWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NyaXB0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIF9pdGVyYXRvckVycm9yMiA9IGVycjtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiAmJiBfaXRlcmF0b3IyLnJldHVybikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMi5yZXR1cm4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7XG4gICAgICAgIF9pdGVyYXRvckVycm9yID0gZXJyO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gJiYgX2l0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgICAgICAgIF9pdGVyYXRvci5yZXR1cm4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcikge1xuICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQSBmbGF0dGVuZWQgdmVyc2lvbiBvZiBhbGwgdGhlIHN1cHBvcnRlZCBibG9ja3MgaW4gYSBzaW5nbGUgYXJyYXkuXG4gKiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB0byBtYWtlIHN1cHBvcnRlZENvZGVwb2ludCgpIGZhc3QuXG4gKi9cbnZhciBhbGxCbG9ja3MgPSBbXTtcbnNjcmlwdERhdGEuZm9yRWFjaChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiBzLmJsb2Nrcy5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7XG4gICAgICAgIHJldHVybiBhbGxCbG9ja3MucHVzaC5hcHBseShhbGxCbG9ja3MsIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfdG9Db25zdW1hYmxlQXJyYXlfX19kZWZhdWx0KCkoYikpO1xuICAgIH0pO1xufSk7XG5cbi8qKlxuICogR2l2ZW4gYSBjb2RlcG9pbnQsIHJldHVybiB0cnVlIGlmIGl0IGZhbGxzIHdpdGhpbiBvbmUgb2YgdGhlXG4gKiBzY3JpcHRzIG9yIHNjcmlwdCBmYW1pbGllcyBkZWZpbmVkIGFib3ZlIGFuZCBmYWxzZSBvdGhlcndpc2UuXG4gKlxuICogTWljcm8gYmVuY2htYXJrcyBzaG93cyB0aGF0IHRoaXMgaXMgZmFzdGVyIHRoYW5cbiAqIC9bXFx1MzAwMC1cXHUzMEZGXFx1NEUwMC1cXHU5RkFGXFx1RkYwMC1cXHVGRjYwXFx1QUMwMC1cXHVEN0FGXFx1MDkwMC1cXHUxMDlGXS8udGVzdCgpXG4gKiBpbiBGaXJlZm94LCBDaHJvbWUgYW5kIE5vZGUuXG4gKi9cbmZ1bmN0aW9uIHN1cHBvcnRlZENvZGVwb2ludChjb2RlcG9pbnQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbEJsb2Nrcy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICBpZiAoY29kZXBvaW50ID49IGFsbEJsb2Nrc1tpXSAmJiBjb2RlcG9pbnQgPD0gYWxsQmxvY2tzW2kgKyAxXSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKioqLyB9KSxcbi8qIDQzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZm9udE1ldHJpY3NfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzApO1xuXG5cblxuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9wdGlvbnMgdGhhdCB0aGUgUGFyc2VyIGNhcnJpZXNcbiAqIGFyb3VuZCB3aXRoIGl0IHdoaWxlIHBhcnNpbmcuIERhdGEgaXMgaGVsZCBpbiBhbiBgT3B0aW9uc2Agb2JqZWN0LCBhbmQgd2hlblxuICogcmVjdXJzaW5nLCBhIG5ldyBgT3B0aW9uc2Agb2JqZWN0IGNhbiBiZSBjcmVhdGVkIHdpdGggdGhlIGAud2l0aCpgIGFuZFxuICogYC5yZXNldGAgZnVuY3Rpb25zLlxuICovXG5cblxuXG5cbnZhciBzaXplU3R5bGVNYXAgPSBbXG4vLyBFYWNoIGVsZW1lbnQgY29udGFpbnMgW3RleHRzaXplLCBzY3JpcHRzaXplLCBzY3JpcHRzY3JpcHRzaXplXS5cbi8vIFRoZSBzaXplIG1hcHBpbmdzIGFyZSB0YWtlbiBmcm9tIFRlWCB3aXRoIFxcbm9ybWFsc2l6ZT0xMHB0LlxuWzEsIDEsIDFdLCAvLyBzaXplMTogWzUsIDUsIDVdICAgICAgICAgICAgICBcXHRpbnlcblsyLCAxLCAxXSwgLy8gc2l6ZTI6IFs2LCA1LCA1XVxuWzMsIDEsIDFdLCAvLyBzaXplMzogWzcsIDUsIDVdICAgICAgICAgICAgICBcXHNjcmlwdHNpemVcbls0LCAyLCAxXSwgLy8gc2l6ZTQ6IFs4LCA2LCA1XSAgICAgICAgICAgICAgXFxmb290bm90ZXNpemVcbls1LCAyLCAxXSwgLy8gc2l6ZTU6IFs5LCA2LCA1XSAgICAgICAgICAgICAgXFxzbWFsbFxuWzYsIDMsIDFdLCAvLyBzaXplNjogWzEwLCA3LCA1XSAgICAgICAgICAgICBcXG5vcm1hbHNpemVcbls3LCA0LCAyXSwgLy8gc2l6ZTc6IFsxMiwgOCwgNl0gICAgICAgICAgICAgXFxsYXJnZVxuWzgsIDYsIDNdLCAvLyBzaXplODogWzE0LjQsIDEwLCA3XSAgICAgICAgICBcXExhcmdlXG5bOSwgNywgNl0sIC8vIHNpemU5OiBbMTcuMjgsIDEyLCAxMF0gICAgICAgIFxcTEFSR0VcblsxMCwgOCwgN10sIC8vIHNpemUxMDogWzIwLjc0LCAxNC40LCAxMl0gICAgIFxcaHVnZVxuWzExLCAxMCwgOV1dO1xuXG52YXIgc2l6ZU11bHRpcGxpZXJzID0gW1xuLy8gZm9udE1ldHJpY3MuanM6Z2V0Rm9udE1ldHJpY3MgYWxzbyB1c2VzIHNpemUgaW5kZXhlcywgc28gaWZcbi8vIHlvdSBjaGFuZ2Ugc2l6ZSBpbmRleGVzLCBjaGFuZ2UgdGhhdCBmdW5jdGlvbi5cbjAuNSwgMC42LCAwLjcsIDAuOCwgMC45LCAxLjAsIDEuMiwgMS40NCwgMS43MjgsIDIuMDc0LCAyLjQ4OF07XG5cbnZhciBzaXplQXRTdHlsZSA9IGZ1bmN0aW9uIHNpemVBdFN0eWxlKHNpemUsIHN0eWxlKSB7XG4gICAgcmV0dXJuIHN0eWxlLnNpemUgPCAyID8gc2l6ZSA6IHNpemVTdHlsZU1hcFtzaXplIC0gMV1bc3R5bGUuc2l6ZSAtIDFdO1xufTtcblxuLyoqXG4gKiBUaGlzIGlzIHRoZSBtYWluIG9wdGlvbnMgY2xhc3MuIEl0IGNvbnRhaW5zIHRoZSBjdXJyZW50IHN0eWxlLCBzaXplLCBjb2xvcixcbiAqIGFuZCBmb250LlxuICpcbiAqIE9wdGlvbnMgb2JqZWN0cyBzaG91bGQgbm90IGJlIG1vZGlmaWVkLiBUbyBjcmVhdGUgYSBuZXcgT3B0aW9ucyB3aXRoXG4gKiBkaWZmZXJlbnQgcHJvcGVydGllcywgY2FsbCBhIGAuaGF2aW5nKmAgbWV0aG9kLlxuICovXG52YXIgT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBPcHRpb25zKGRhdGEpIHtcbiAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQoKSh0aGlzLCBPcHRpb25zKTtcblxuICAgICAgICB0aGlzLnN0eWxlID0gZGF0YS5zdHlsZTtcbiAgICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZSB8fCBPcHRpb25zLkJBU0VTSVpFO1xuICAgICAgICB0aGlzLnRleHRTaXplID0gZGF0YS50ZXh0U2l6ZSB8fCB0aGlzLnNpemU7XG4gICAgICAgIHRoaXMucGhhbnRvbSA9ICEhZGF0YS5waGFudG9tO1xuICAgICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICAgIHRoaXMuZm9udFdlaWdodCA9IGRhdGEuZm9udFdlaWdodCB8fCAnJztcbiAgICAgICAgdGhpcy5mb250U2hhcGUgPSBkYXRhLmZvbnRTaGFwZSB8fCAnJztcbiAgICAgICAgdGhpcy5zaXplTXVsdGlwbGllciA9IHNpemVNdWx0aXBsaWVyc1t0aGlzLnNpemUgLSAxXTtcbiAgICAgICAgdGhpcy5tYXhTaXplID0gZGF0YS5tYXhTaXplO1xuICAgICAgICB0aGlzLl9mb250TWV0cmljcyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIHNhbWUgcHJvcGVydGllcyBhcyBcInRoaXNcIi4gIFByb3BlcnRpZXNcbiAgICAgKiBmcm9tIFwiZXh0ZW5zaW9uXCIgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIG5ldyBvcHRpb25zIG9iamVjdC5cbiAgICAgKi9cblxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2Ugc2l6ZSBpbmRleC5cbiAgICAgKi9cblxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fX2RlZmF1bHQoKShPcHRpb25zLCBbe1xuICAgICAgICBrZXk6IFwiZXh0ZW5kXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBleHRlbmQoZXh0ZW5zaW9uKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICBzdHlsZTogdGhpcy5zdHlsZSxcbiAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICAgICAgICAgICAgdGV4dFNpemU6IHRoaXMudGV4dFNpemUsXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMuY29sb3IsXG4gICAgICAgICAgICAgICAgcGhhbnRvbTogdGhpcy5waGFudG9tLFxuICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuZm9udEZhbWlseSxcbiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiB0aGlzLmZvbnRXZWlnaHQsXG4gICAgICAgICAgICAgICAgZm9udFNoYXBlOiB0aGlzLmZvbnRTaGFwZSxcbiAgICAgICAgICAgICAgICBtYXhTaXplOiB0aGlzLm1heFNpemVcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBleHRlbnNpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gZXh0ZW5zaW9uW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3IE9wdGlvbnMoZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJuIGFuIG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHN0eWxlLiBJZiBgdGhpcy5zdHlsZSA9PT0gc3R5bGVgLFxuICAgICAgICAgKiByZXR1cm5zIGB0aGlzYC5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJoYXZpbmdTdHlsZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gaGF2aW5nU3R5bGUoc3R5bGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0eWxlID09PSBzdHlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgICAgICAgICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IHNpemVBdFN0eWxlKHRoaXMudGV4dFNpemUsIHN0eWxlKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHVybiBhbiBvcHRpb25zIG9iamVjdCB3aXRoIGEgY3JhbXBlZCB2ZXJzaW9uIG9mIHRoZSBjdXJyZW50IHN0eWxlLiBJZlxuICAgICAgICAgKiB0aGUgY3VycmVudCBzdHlsZSBpcyBjcmFtcGVkLCByZXR1cm5zIGB0aGlzYC5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJoYXZpbmdDcmFtcGVkU3R5bGVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGhhdmluZ0NyYW1wZWRTdHlsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhdmluZ1N0eWxlKHRoaXMuc3R5bGUuY3JhbXAoKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJuIGFuIG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHNpemUgYW5kIGluIGF0IGxlYXN0IGBcXHRleHRzdHlsZWAuXG4gICAgICAgICAqIFJldHVybnMgYHRoaXNgIGlmIGFwcHJvcHJpYXRlLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImhhdmluZ1NpemVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGhhdmluZ1NpemUoc2l6ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2l6ZSA9PT0gc2l6ZSAmJiB0aGlzLnRleHRTaXplID09PSBzaXplKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0aGlzLnN0eWxlLnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dFNpemU6IHNpemUsXG4gICAgICAgICAgICAgICAgICAgIHNpemVNdWx0aXBsaWVyOiBzaXplTXVsdGlwbGllcnNbc2l6ZSAtIDFdXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogTGlrZSBgdGhpcy5oYXZpbmdTaXplKEJBU0VTSVpFKS5oYXZpbmdTdHlsZShzdHlsZSlgLiBJZiBgc3R5bGVgIGlzIG9taXR0ZWQsXG4gICAgICAgICAqIGNoYW5nZXMgdG8gYXQgbGVhc3QgYFxcdGV4dHN0eWxlYC5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJoYXZpbmdCYXNlU3R5bGVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGhhdmluZ0Jhc2VTdHlsZShzdHlsZSkge1xuICAgICAgICAgICAgc3R5bGUgPSBzdHlsZSB8fCB0aGlzLnN0eWxlLnRleHQoKTtcbiAgICAgICAgICAgIHZhciB3YW50U2l6ZSA9IHNpemVBdFN0eWxlKE9wdGlvbnMuQkFTRVNJWkUsIHN0eWxlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNpemUgPT09IHdhbnRTaXplICYmIHRoaXMudGV4dFNpemUgPT09IE9wdGlvbnMuQkFTRVNJWkUgJiYgdGhpcy5zdHlsZSA9PT0gc3R5bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiB3YW50U2l6ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhIG5ldyBvcHRpb25zIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBjb2xvci5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ3aXRoQ29sb3JcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHdpdGhDb2xvcihjb2xvcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgICAgICAgICBjb2xvcjogY29sb3JcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhIG5ldyBvcHRpb25zIG9iamVjdCB3aXRoIFwicGhhbnRvbVwiIHNldCB0byB0cnVlLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcIndpdGhQaGFudG9tXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB3aXRoUGhhbnRvbSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICAgICAgICAgICAgcGhhbnRvbTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlIGEgbmV3IG9wdGlvbnMgb2JqZWN0cyB3aXRoIHRoZSBnaXZlIGZvbnQuXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwid2l0aEZvbnRGYW1pbHlcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHdpdGhGb250RmFtaWx5KGZvbnRGYW1pbHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICAgICAgICAgICAgZm9udEZhbWlseTogZm9udEZhbWlseSB8fCB0aGlzLmZvbnRGYW1pbHlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBuZXcgb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gZm9udCB3ZWlnaHRcbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJ3aXRoRm9udFdlaWdodFwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gd2l0aEZvbnRXZWlnaHQoZm9udFdlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBmb250V2VpZ2h0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIGZvbnQgd2VpZ2h0XG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwid2l0aEZvbnRTaGFwZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gd2l0aEZvbnRTaGFwZShmb250U2hhcGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICAgICAgICAgICAgZm9udFNoYXBlOiBmb250U2hhcGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHVybiB0aGUgQ1NTIHNpemluZyBjbGFzc2VzIHJlcXVpcmVkIHRvIHN3aXRjaCBmcm9tIGVuY2xvc2luZyBvcHRpb25zXG4gICAgICAgICAqIGBvbGRPcHRpb25zYCB0byBgdGhpc2AuIFJldHVybnMgYW4gYXJyYXkgb2YgY2xhc3Nlcy5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJzaXppbmdDbGFzc2VzXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzaXppbmdDbGFzc2VzKG9sZE9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvbGRPcHRpb25zLnNpemUgIT09IHRoaXMuc2l6ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXCJzaXppbmdcIiwgXCJyZXNldC1zaXplXCIgKyBvbGRPcHRpb25zLnNpemUsIFwic2l6ZVwiICsgdGhpcy5zaXplXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHVybiB0aGUgQ1NTIHNpemluZyBjbGFzc2VzIHJlcXVpcmVkIHRvIHN3aXRjaCB0byB0aGUgYmFzZSBzaXplLiBMaWtlXG4gICAgICAgICAqIGB0aGlzLmhhdmluZ1NpemUoQkFTRVNJWkUpLnNpemluZ0NsYXNzZXModGhpcylgLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImJhc2VTaXppbmdDbGFzc2VzXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBiYXNlU2l6aW5nQ2xhc3NlcygpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNpemUgIT09IE9wdGlvbnMuQkFTRVNJWkUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1wic2l6aW5nXCIsIFwicmVzZXQtc2l6ZVwiICsgdGhpcy5zaXplLCBcInNpemVcIiArIE9wdGlvbnMuQkFTRVNJWkVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJuIHRoZSBmb250IG1ldHJpY3MgZm9yIHRoaXMgc2l6ZS5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJmb250TWV0cmljc1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZm9udE1ldHJpY3MoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2ZvbnRNZXRyaWNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9udE1ldHJpY3MgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2ZvbnRNZXRyaWNzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uZ2V0Rm9udE1ldHJpY3ModGhpcy5zaXplKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9mb250TWV0cmljcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIG1hcCBvZiBjb2xvciBuYW1lcyB0byBDU1MgY29sb3JzLlxuICAgICAgICAgKiBUT0RPKGVtaWx5KTogUmVtb3ZlIHRoaXMgd2hlbiB3ZSBoYXZlIHJlYWwgbWFjcm9zXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiZ2V0Q29sb3JcIixcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBDU1MgY29sb3Igb2YgdGhlIGN1cnJlbnQgb3B0aW9ucyBvYmplY3QsIGFjY291bnRpbmcgZm9yIHRoZVxuICAgICAgICAgKiBgY29sb3JNYXBgLlxuICAgICAgICAgKi9cbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbG9yKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGhhbnRvbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcInRyYW5zcGFyZW50XCI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29sb3IgIT0gbnVsbCAmJiBPcHRpb25zLmNvbG9yTWFwLmhhc093blByb3BlcnR5KHRoaXMuY29sb3IpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnMuY29sb3JNYXBbdGhpcy5jb2xvcl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIE9wdGlvbnM7XG59KCk7XG5cbk9wdGlvbnMuQkFTRVNJWkUgPSA2O1xuT3B0aW9ucy5jb2xvck1hcCA9IHtcbiAgICBcImthdGV4LWJsdWVcIjogXCIjNjQ5NWVkXCIsXG4gICAgXCJrYXRleC1vcmFuZ2VcIjogXCIjZmZhNTAwXCIsXG4gICAgXCJrYXRleC1waW5rXCI6IFwiI2ZmMDBhZlwiLFxuICAgIFwia2F0ZXgtcmVkXCI6IFwiI2RmMDAzMFwiLFxuICAgIFwia2F0ZXgtZ3JlZW5cIjogXCIjMjhhZTdiXCIsXG4gICAgXCJrYXRleC1ncmF5XCI6IFwiZ3JheVwiLFxuICAgIFwia2F0ZXgtcHVycGxlXCI6IFwiIzlkMzhiZFwiLFxuICAgIFwia2F0ZXgtYmx1ZUFcIjogXCIjY2NmYWZmXCIsXG4gICAgXCJrYXRleC1ibHVlQlwiOiBcIiM4MGY2ZmZcIixcbiAgICBcImthdGV4LWJsdWVDXCI6IFwiIzYzZDllYVwiLFxuICAgIFwia2F0ZXgtYmx1ZURcIjogXCIjMTFhY2NkXCIsXG4gICAgXCJrYXRleC1ibHVlRVwiOiBcIiMwYzdmOTlcIixcbiAgICBcImthdGV4LXRlYWxBXCI6IFwiIzk0ZmZmNVwiLFxuICAgIFwia2F0ZXgtdGVhbEJcIjogXCIjMjZlZGQ1XCIsXG4gICAgXCJrYXRleC10ZWFsQ1wiOiBcIiMwMWQxYzFcIixcbiAgICBcImthdGV4LXRlYWxEXCI6IFwiIzAxYTk5NVwiLFxuICAgIFwia2F0ZXgtdGVhbEVcIjogXCIjMjA4MTcwXCIsXG4gICAgXCJrYXRleC1ncmVlbkFcIjogXCIjYjZmZmIwXCIsXG4gICAgXCJrYXRleC1ncmVlbkJcIjogXCIjOGFmMjgxXCIsXG4gICAgXCJrYXRleC1ncmVlbkNcIjogXCIjNzRjZjcwXCIsXG4gICAgXCJrYXRleC1ncmVlbkRcIjogXCIjMWZhYjU0XCIsXG4gICAgXCJrYXRleC1ncmVlbkVcIjogXCIjMGQ5MjNmXCIsXG4gICAgXCJrYXRleC1nb2xkQVwiOiBcIiNmZmQwYTlcIixcbiAgICBcImthdGV4LWdvbGRCXCI6IFwiI2ZmYmI3MVwiLFxuICAgIFwia2F0ZXgtZ29sZENcIjogXCIjZmY5YzM5XCIsXG4gICAgXCJrYXRleC1nb2xkRFwiOiBcIiNlMDdkMTBcIixcbiAgICBcImthdGV4LWdvbGRFXCI6IFwiI2E3NWEwNVwiLFxuICAgIFwia2F0ZXgtcmVkQVwiOiBcIiNmY2E5YTlcIixcbiAgICBcImthdGV4LXJlZEJcIjogXCIjZmY4NDgyXCIsXG4gICAgXCJrYXRleC1yZWRDXCI6IFwiI2Y5Njg1ZFwiLFxuICAgIFwia2F0ZXgtcmVkRFwiOiBcIiNlODRkMzlcIixcbiAgICBcImthdGV4LXJlZEVcIjogXCIjYmMyNjEyXCIsXG4gICAgXCJrYXRleC1tYXJvb25BXCI6IFwiI2ZmYmRlMFwiLFxuICAgIFwia2F0ZXgtbWFyb29uQlwiOiBcIiNmZjkyYzZcIixcbiAgICBcImthdGV4LW1hcm9vbkNcIjogXCIjZWQ1ZmE2XCIsXG4gICAgXCJrYXRleC1tYXJvb25EXCI6IFwiI2NhMzM3Y1wiLFxuICAgIFwia2F0ZXgtbWFyb29uRVwiOiBcIiM5ZTAzNGVcIixcbiAgICBcImthdGV4LXB1cnBsZUFcIjogXCIjZGRkN2ZmXCIsXG4gICAgXCJrYXRleC1wdXJwbGVCXCI6IFwiI2M2YjlmY1wiLFxuICAgIFwia2F0ZXgtcHVycGxlQ1wiOiBcIiNhYTg3ZmZcIixcbiAgICBcImthdGV4LXB1cnBsZURcIjogXCIjNzg1NGFiXCIsXG4gICAgXCJrYXRleC1wdXJwbGVFXCI6IFwiIzU0M2I3OFwiLFxuICAgIFwia2F0ZXgtbWludEFcIjogXCIjZjVmOWU4XCIsXG4gICAgXCJrYXRleC1taW50QlwiOiBcIiNlZGYyZGZcIixcbiAgICBcImthdGV4LW1pbnRDXCI6IFwiI2UwZTVjY1wiLFxuICAgIFwia2F0ZXgtZ3JheUFcIjogXCIjZjZmN2Y3XCIsXG4gICAgXCJrYXRleC1ncmF5QlwiOiBcIiNmMGYxZjJcIixcbiAgICBcImthdGV4LWdyYXlDXCI6IFwiI2UzZTVlNlwiLFxuICAgIFwia2F0ZXgtZ3JheURcIjogXCIjZDZkOGRhXCIsXG4gICAgXCJrYXRleC1ncmF5RVwiOiBcIiNiYWJlYzJcIixcbiAgICBcImthdGV4LWdyYXlGXCI6IFwiIzg4OGQ5M1wiLFxuICAgIFwia2F0ZXgtZ3JheUdcIjogXCIjNjI2NTY5XCIsXG4gICAgXCJrYXRleC1ncmF5SFwiOiBcIiMzYjNlNDBcIixcbiAgICBcImthdGV4LWdyYXlJXCI6IFwiIzIxMjQyY1wiLFxuICAgIFwia2F0ZXgta2FCbHVlXCI6IFwiIzMxNDQ1M1wiLFxuICAgIFwia2F0ZXgta2FHcmVlblwiOiBcIiM3MUIzMDdcIlxufTtcblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKE9wdGlvbnMpO1xuXG4vKioqLyB9KSxcbi8qIDQ0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fUGFyc2VFcnJvcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1N0eWxlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZG9tVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2ZvbnRNZXRyaWNzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX3N5bWJvbHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fdXRpbHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG4vKipcbiAqIFRoaXMgZmlsZSBkZWFscyB3aXRoIGNyZWF0aW5nIGRlbGltaXRlcnMgb2YgdmFyaW91cyBzaXplcy4gVGhlIFRlWGJvb2tcbiAqIGRpc2N1c3NlcyB0aGVzZSByb3V0aW5lcyBvbiBwYWdlIDQ0MS00NDIsIGluIHRoZSBcIkFub3RoZXIgc3Vicm91dGluZSBzZXRzIGJveFxuICogeCB0byBhIHNwZWNpZmllZCB2YXJpYWJsZSBkZWxpbWl0ZXJcIiBwYXJhZ3JhcGguXG4gKlxuICogVGhlcmUgYXJlIHRocmVlIG1haW4gcm91dGluZXMgaGVyZS4gYG1ha2VTbWFsbERlbGltYCBtYWtlcyBhIGRlbGltaXRlciBpbiB0aGVcbiAqIG5vcm1hbCBmb250LCBidXQgaW4gZWl0aGVyIHRleHQsIHNjcmlwdCwgb3Igc2NyaXB0c2NyaXB0IHN0eWxlLlxuICogYG1ha2VMYXJnZURlbGltYCBtYWtlcyBhIGRlbGltaXRlciBpbiB0ZXh0c3R5bGUsIGJ1dCBpbiBvbmUgb2YgdGhlIFNpemUxLFxuICogU2l6ZTIsIFNpemUzLCBvciBTaXplNCBmb250cy4gYG1ha2VTdGFja2VkRGVsaW1gIG1ha2VzIGEgZGVsaW1pdGVyIG91dCBvZlxuICogc21hbGxlciBwaWVjZXMgdGhhdCBhcmUgc3RhY2tlZCBvbiB0b3Agb2Ygb25lIGFub3RoZXIuXG4gKlxuICogVGhlIGZ1bmN0aW9ucyB0YWtlIGEgcGFyYW1ldGVyIGBjZW50ZXJgLCB3aGljaCBkZXRlcm1pbmVzIGlmIHRoZSBkZWxpbWl0ZXJcbiAqIHNob3VsZCBiZSBjZW50ZXJlZCBhcm91bmQgdGhlIGF4aXMuXG4gKlxuICogVGhlbiwgdGhlcmUgYXJlIHRocmVlIGV4cG9zZWQgZnVuY3Rpb25zLiBgc2l6ZWREZWxpbWAgbWFrZXMgYSBkZWxpbWl0ZXIgaW5cbiAqIG9uZSBvZiB0aGUgZ2l2ZW4gc2l6ZXMuIFRoaXMgaXMgdXNlZCBmb3IgdGhpbmdzIGxpa2UgYFxcYmlnbGAuXG4gKiBgY3VzdG9tU2l6ZWREZWxpbWAgbWFrZXMgYSBkZWxpbWl0ZXIgd2l0aCBhIGdpdmVuIHRvdGFsIGhlaWdodCtkZXB0aC4gSXQgaXNcbiAqIGNhbGxlZCBpbiBwbGFjZXMgbGlrZSBgXFxzcXJ0YC4gYGxlZnRSaWdodERlbGltYCBtYWtlcyBhbiBhcHByb3ByaWF0ZVxuICogZGVsaW1pdGVyIHdoaWNoIHN1cnJvdW5kcyBhbiBleHByZXNzaW9uIG9mIGEgZ2l2ZW4gaGVpZ2h0IGFuIGRlcHRoLiBJdCBpc1xuICogdXNlZCBpbiBgXFxsZWZ0YCBhbmQgYFxccmlnaHRgLlxuICovXG5cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogR2V0IHRoZSBtZXRyaWNzIGZvciBhIGdpdmVuIHN5bWJvbCBhbmQgZm9udCwgYWZ0ZXIgdHJhbnNmb3JtYXRpb24gKGkuZS5cbiAqIGFmdGVyIGZvbGxvd2luZyByZXBsYWNlbWVudCBmcm9tIHN5bWJvbHMuanMpXG4gKi9cbnZhciBnZXRNZXRyaWNzID0gZnVuY3Rpb24gZ2V0TWV0cmljcyhzeW1ib2wsIGZvbnQsIG1vZGUpIHtcbiAgICBpZiAoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19zeW1ib2xzX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWF0aFtzeW1ib2xdICYmIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fc3ltYm9sc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1hdGhbc3ltYm9sXS5yZXBsYWNlKSB7XG4gICAgICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2ZvbnRNZXRyaWNzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uZ2V0Q2hhcmFjdGVyTWV0cmljcyhfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX3N5bWJvbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYXRoW3N5bWJvbF0ucmVwbGFjZSwgZm9udCwgbW9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fZm9udE1ldHJpY3NfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5nZXRDaGFyYWN0ZXJNZXRyaWNzKHN5bWJvbCwgZm9udCwgbW9kZSk7XG4gICAgfVxufTtcblxuLyoqXG4gKiBQdXRzIGEgZGVsaW1pdGVyIHNwYW4gaW4gYSBnaXZlbiBzdHlsZSwgYW5kIGFkZHMgYXBwcm9wcmlhdGUgaGVpZ2h0LCBkZXB0aCxcbiAqIGFuZCBtYXhGb250U2l6ZXMuXG4gKi9cbnZhciBzdHlsZVdyYXAgPSBmdW5jdGlvbiBzdHlsZVdyYXAoZGVsaW0sIHRvU3R5bGUsIG9wdGlvbnMsIGNsYXNzZXMpIHtcbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKHRvU3R5bGUpO1xuXG4gICAgdmFyIHNwYW4gPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oKGNsYXNzZXMgfHwgW10pLmNvbmNhdChuZXdPcHRpb25zLnNpemluZ0NsYXNzZXMob3B0aW9ucykpLCBbZGVsaW1dLCBvcHRpb25zKTtcblxuICAgIHNwYW4uZGVsaW1TaXplTXVsdGlwbGllciA9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIHNwYW4uaGVpZ2h0ICo9IHNwYW4uZGVsaW1TaXplTXVsdGlwbGllcjtcbiAgICBzcGFuLmRlcHRoICo9IHNwYW4uZGVsaW1TaXplTXVsdGlwbGllcjtcbiAgICBzcGFuLm1heEZvbnRTaXplID0gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllcjtcblxuICAgIHJldHVybiBzcGFuO1xufTtcblxudmFyIGNlbnRlclNwYW4gPSBmdW5jdGlvbiBjZW50ZXJTcGFuKHNwYW4sIG9wdGlvbnMsIHN0eWxlKSB7XG4gICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ0Jhc2VTdHlsZShzdHlsZSk7XG4gICAgdmFyIHNoaWZ0ID0gKDEgLSBvcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllcikgKiBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDtcblxuICAgIHNwYW4uY2xhc3Nlcy5wdXNoKFwiZGVsaW1jZW50ZXJcIik7XG4gICAgc3Bhbi5zdHlsZS50b3AgPSBzaGlmdCArIFwiZW1cIjtcbiAgICBzcGFuLmhlaWdodCAtPSBzaGlmdDtcbiAgICBzcGFuLmRlcHRoICs9IHNoaWZ0O1xufTtcblxuLyoqXG4gKiBNYWtlcyBhIHNtYWxsIGRlbGltaXRlci4gVGhpcyBpcyBhIGRlbGltaXRlciB0aGF0IGNvbWVzIGluIHRoZSBNYWluLVJlZ3VsYXJcbiAqIGZvbnQsIGJ1dCBpcyByZXN0eWxlZCB0byBlaXRoZXIgYmUgaW4gdGV4dHN0eWxlLCBzY3JpcHRzdHlsZSwgb3JcbiAqIHNjcmlwdHNjcmlwdHN0eWxlLlxuICovXG52YXIgbWFrZVNtYWxsRGVsaW0gPSBmdW5jdGlvbiBtYWtlU21hbGxEZWxpbShkZWxpbSwgc3R5bGUsIGNlbnRlciwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICAgIHZhciB0ZXh0ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTeW1ib2woZGVsaW0sIFwiTWFpbi1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMpO1xuICAgIHZhciBzcGFuID0gc3R5bGVXcmFwKHRleHQsIHN0eWxlLCBvcHRpb25zLCBjbGFzc2VzKTtcbiAgICBpZiAoY2VudGVyKSB7XG4gICAgICAgIGNlbnRlclNwYW4oc3Bhbiwgb3B0aW9ucywgc3R5bGUpO1xuICAgIH1cbiAgICByZXR1cm4gc3Bhbjtcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgc3ltYm9sIGluIHRoZSBnaXZlbiBmb250IHNpemUgKG5vdGUgc2l6ZSBpcyBhbiBpbnRlZ2VyKVxuICovXG52YXIgbWF0aHJtU2l6ZSA9IGZ1bmN0aW9uIG1hdGhybVNpemUodmFsdWUsIHNpemUsIG1vZGUsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTeW1ib2wodmFsdWUsIFwiU2l6ZVwiICsgc2l6ZSArIFwiLVJlZ3VsYXJcIiwgbW9kZSwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIE1ha2VzIGEgbGFyZ2UgZGVsaW1pdGVyLiBUaGlzIGlzIGEgZGVsaW1pdGVyIHRoYXQgY29tZXMgaW4gdGhlIFNpemUxLCBTaXplMixcbiAqIFNpemUzLCBvciBTaXplNCBmb250cy4gSXQgaXMgYWx3YXlzIHJlbmRlcmVkIGluIHRleHRzdHlsZS5cbiAqL1xudmFyIG1ha2VMYXJnZURlbGltID0gZnVuY3Rpb24gbWFrZUxhcmdlRGVsaW0oZGVsaW0sIHNpemUsIGNlbnRlciwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICAgIHZhciBpbm5lciA9IG1hdGhybVNpemUoZGVsaW0sIHNpemUsIG1vZGUsIG9wdGlvbnMpO1xuICAgIHZhciBzcGFuID0gc3R5bGVXcmFwKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJkZWxpbXNpemluZ1wiLCBcInNpemVcIiArIHNpemVdLCBbaW5uZXJdLCBvcHRpb25zKSwgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlRFWFQsIG9wdGlvbnMsIGNsYXNzZXMpO1xuICAgIGlmIChjZW50ZXIpIHtcbiAgICAgICAgY2VudGVyU3BhbihzcGFuLCBvcHRpb25zLCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uVEVYVCk7XG4gICAgfVxuICAgIHJldHVybiBzcGFuO1xufTtcblxuLyoqXG4gKiBNYWtlIGFuIGlubmVyIHNwYW4gd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0IGFuZCBpbiB0aGUgZ2l2ZW4gZm9udC4gVGhpcyBpcyB1c2VkXG4gKiBpbiBgbWFrZVN0YWNrZWREZWxpbWAgdG8gbWFrZSB0aGUgc3RhY2tpbmcgcGllY2VzIGZvciB0aGUgZGVsaW1pdGVyLlxuICovXG52YXIgbWFrZUlubmVyID0gZnVuY3Rpb24gbWFrZUlubmVyKHN5bWJvbCwgZm9udCwgbW9kZSkge1xuICAgIHZhciBzaXplQ2xhc3MgPSB2b2lkIDA7XG4gICAgLy8gQXBwbHkgdGhlIGNvcnJlY3QgQ1NTIGNsYXNzIHRvIGNob29zZSB0aGUgcmlnaHQgZm9udC5cbiAgICBpZiAoZm9udCA9PT0gXCJTaXplMS1SZWd1bGFyXCIpIHtcbiAgICAgICAgc2l6ZUNsYXNzID0gXCJkZWxpbS1zaXplMVwiO1xuICAgIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJTaXplNC1SZWd1bGFyXCIpIHtcbiAgICAgICAgc2l6ZUNsYXNzID0gXCJkZWxpbS1zaXplNFwiO1xuICAgIH1cblxuICAgIHZhciBpbm5lciA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJkZWxpbXNpemluZ2lubmVyXCIsIHNpemVDbGFzc10sIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW10sIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVN5bWJvbChzeW1ib2wsIGZvbnQsIG1vZGUpXSldKTtcblxuICAgIC8vIFNpbmNlIHRoaXMgd2lsbCBiZSBwYXNzZWQgaW50byBgbWFrZVZMaXN0YCBpbiB0aGUgZW5kLCB3cmFwIHRoZSBlbGVtZW50XG4gICAgLy8gaW4gdGhlIGFwcHJvcHJpYXRlIHRhZyB0aGF0IFZMaXN0IHVzZXMuXG4gICAgcmV0dXJuIHsgdHlwZTogXCJlbGVtXCIsIGVsZW06IGlubmVyIH07XG59O1xuXG4vKipcbiAqIE1ha2UgYSBzdGFja2VkIGRlbGltaXRlciBvdXQgb2YgYSBnaXZlbiBkZWxpbWl0ZXIsIHdpdGggdGhlIHRvdGFsIGhlaWdodCBhdFxuICogbGVhc3QgYGhlaWdodFRvdGFsYC4gVGhpcyByb3V0aW5lIGlzIG1lbnRpb25lZCBvbiBwYWdlIDQ0MiBvZiB0aGUgVGVYYm9vay5cbiAqL1xudmFyIG1ha2VTdGFja2VkRGVsaW0gPSBmdW5jdGlvbiBtYWtlU3RhY2tlZERlbGltKGRlbGltLCBoZWlnaHRUb3RhbCwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKSB7XG4gICAgLy8gVGhlcmUgYXJlIGZvdXIgcGFydHMsIHRoZSB0b3AsIGFuIG9wdGlvbmFsIG1pZGRsZSwgYSByZXBlYXRlZCBwYXJ0LCBhbmQgYVxuICAgIC8vIGJvdHRvbS5cbiAgICB2YXIgdG9wID0gdm9pZCAwO1xuICAgIHZhciBtaWRkbGUgPSB2b2lkIDA7XG4gICAgdmFyIHJlcGVhdCA9IHZvaWQgMDtcbiAgICB2YXIgYm90dG9tID0gdm9pZCAwO1xuICAgIHRvcCA9IHJlcGVhdCA9IGJvdHRvbSA9IGRlbGltO1xuICAgIG1pZGRsZSA9IG51bGw7XG4gICAgLy8gQWxzbyBrZWVwIHRyYWNrIG9mIHdoYXQgZm9udCB0aGUgZGVsaW1pdGVycyBhcmUgaW5cbiAgICB2YXIgZm9udCA9IFwiU2l6ZTEtUmVndWxhclwiO1xuXG4gICAgLy8gV2Ugc2V0IHRoZSBwYXJ0cyBhbmQgZm9udCBiYXNlZCBvbiB0aGUgc3ltYm9sLiBOb3RlIHRoYXQgd2UgdXNlXG4gICAgLy8gJ1xcdTIzZDAnIGluc3RlYWQgb2YgJ3wnIGFuZCAnXFx1MjAxNicgaW5zdGVhZCBvZiAnXFxcXHwnIGZvciB0aGVcbiAgICAvLyByZXBlYXRzIG9mIHRoZSBhcnJvd3NcbiAgICBpZiAoZGVsaW0gPT09IFwiXFxcXHVwYXJyb3dcIikge1xuICAgICAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIzRDBcIjtcbiAgICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxVcGFycm93XCIpIHtcbiAgICAgICAgcmVwZWF0ID0gYm90dG9tID0gXCJcXHUyMDE2XCI7XG4gICAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcZG93bmFycm93XCIpIHtcbiAgICAgICAgdG9wID0gcmVwZWF0ID0gXCJcXHUyM0QwXCI7XG4gICAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcRG93bmFycm93XCIpIHtcbiAgICAgICAgdG9wID0gcmVwZWF0ID0gXCJcXHUyMDE2XCI7XG4gICAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcdXBkb3duYXJyb3dcIikge1xuICAgICAgICB0b3AgPSBcIlxcXFx1cGFycm93XCI7XG4gICAgICAgIHJlcGVhdCA9IFwiXFx1MjNEMFwiO1xuICAgICAgICBib3R0b20gPSBcIlxcXFxkb3duYXJyb3dcIjtcbiAgICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxVcGRvd25hcnJvd1wiKSB7XG4gICAgICAgIHRvcCA9IFwiXFxcXFVwYXJyb3dcIjtcbiAgICAgICAgcmVwZWF0ID0gXCJcXHUyMDE2XCI7XG4gICAgICAgIGJvdHRvbSA9IFwiXFxcXERvd25hcnJvd1wiO1xuICAgIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiW1wiIHx8IGRlbGltID09PSBcIlxcXFxsYnJhY2tcIikge1xuICAgICAgICB0b3AgPSBcIlxcdTIzQTFcIjtcbiAgICAgICAgcmVwZWF0ID0gXCJcXHUyM0EyXCI7XG4gICAgICAgIGJvdHRvbSA9IFwiXFx1MjNBM1wiO1xuICAgICAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gICAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJdXCIgfHwgZGVsaW0gPT09IFwiXFxcXHJicmFja1wiKSB7XG4gICAgICAgIHRvcCA9IFwiXFx1MjNBNFwiO1xuICAgICAgICByZXBlYXQgPSBcIlxcdTIzQTVcIjtcbiAgICAgICAgYm90dG9tID0gXCJcXHUyM0E2XCI7XG4gICAgICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxsZmxvb3JcIikge1xuICAgICAgICByZXBlYXQgPSB0b3AgPSBcIlxcdTIzQTJcIjtcbiAgICAgICAgYm90dG9tID0gXCJcXHUyM0EzXCI7XG4gICAgICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxsY2VpbFwiKSB7XG4gICAgICAgIHRvcCA9IFwiXFx1MjNBMVwiO1xuICAgICAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIzQTJcIjtcbiAgICAgICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICAgIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXHJmbG9vclwiKSB7XG4gICAgICAgIHJlcGVhdCA9IHRvcCA9IFwiXFx1MjNBNVwiO1xuICAgICAgICBib3R0b20gPSBcIlxcdTIzQTZcIjtcbiAgICAgICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICAgIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXHJjZWlsXCIpIHtcbiAgICAgICAgdG9wID0gXCJcXHUyM0E0XCI7XG4gICAgICAgIHJlcGVhdCA9IGJvdHRvbSA9IFwiXFx1MjNBNVwiO1xuICAgICAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gICAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCIoXCIpIHtcbiAgICAgICAgdG9wID0gXCJcXHUyMzlCXCI7XG4gICAgICAgIHJlcGVhdCA9IFwiXFx1MjM5Q1wiO1xuICAgICAgICBib3R0b20gPSBcIlxcdTIzOURcIjtcbiAgICAgICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICAgIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiKVwiKSB7XG4gICAgICAgIHRvcCA9IFwiXFx1MjM5RVwiO1xuICAgICAgICByZXBlYXQgPSBcIlxcdTIzOUZcIjtcbiAgICAgICAgYm90dG9tID0gXCJcXHUyM0EwXCI7XG4gICAgICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFx7XCIgfHwgZGVsaW0gPT09IFwiXFxcXGxicmFjZVwiKSB7XG4gICAgICAgIHRvcCA9IFwiXFx1MjNBN1wiO1xuICAgICAgICBtaWRkbGUgPSBcIlxcdTIzQThcIjtcbiAgICAgICAgYm90dG9tID0gXCJcXHUyM0E5XCI7XG4gICAgICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgICAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gICAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcfVwiIHx8IGRlbGltID09PSBcIlxcXFxyYnJhY2VcIikge1xuICAgICAgICB0b3AgPSBcIlxcdTIzQUJcIjtcbiAgICAgICAgbWlkZGxlID0gXCJcXHUyM0FDXCI7XG4gICAgICAgIGJvdHRvbSA9IFwiXFx1MjNBRFwiO1xuICAgICAgICByZXBlYXQgPSBcIlxcdTIzQUFcIjtcbiAgICAgICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICAgIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXGxncm91cFwiKSB7XG4gICAgICAgIHRvcCA9IFwiXFx1MjNBN1wiO1xuICAgICAgICBib3R0b20gPSBcIlxcdTIzQTlcIjtcbiAgICAgICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxyZ3JvdXBcIikge1xuICAgICAgICB0b3AgPSBcIlxcdTIzQUJcIjtcbiAgICAgICAgYm90dG9tID0gXCJcXHUyM0FEXCI7XG4gICAgICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgICAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gICAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcbG1vdXN0YWNoZVwiKSB7XG4gICAgICAgIHRvcCA9IFwiXFx1MjNBN1wiO1xuICAgICAgICBib3R0b20gPSBcIlxcdTIzQURcIjtcbiAgICAgICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxybW91c3RhY2hlXCIpIHtcbiAgICAgICAgdG9wID0gXCJcXHUyM0FCXCI7XG4gICAgICAgIGJvdHRvbSA9IFwiXFx1MjNBOVwiO1xuICAgICAgICByZXBlYXQgPSBcIlxcdTIzQUFcIjtcbiAgICAgICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgbWV0cmljcyBvZiB0aGUgZm91ciBzZWN0aW9uc1xuICAgIHZhciB0b3BNZXRyaWNzID0gZ2V0TWV0cmljcyh0b3AsIGZvbnQsIG1vZGUpO1xuICAgIHZhciB0b3BIZWlnaHRUb3RhbCA9IHRvcE1ldHJpY3MuaGVpZ2h0ICsgdG9wTWV0cmljcy5kZXB0aDtcbiAgICB2YXIgcmVwZWF0TWV0cmljcyA9IGdldE1ldHJpY3MocmVwZWF0LCBmb250LCBtb2RlKTtcbiAgICB2YXIgcmVwZWF0SGVpZ2h0VG90YWwgPSByZXBlYXRNZXRyaWNzLmhlaWdodCArIHJlcGVhdE1ldHJpY3MuZGVwdGg7XG4gICAgdmFyIGJvdHRvbU1ldHJpY3MgPSBnZXRNZXRyaWNzKGJvdHRvbSwgZm9udCwgbW9kZSk7XG4gICAgdmFyIGJvdHRvbUhlaWdodFRvdGFsID0gYm90dG9tTWV0cmljcy5oZWlnaHQgKyBib3R0b21NZXRyaWNzLmRlcHRoO1xuICAgIHZhciBtaWRkbGVIZWlnaHRUb3RhbCA9IDA7XG4gICAgdmFyIG1pZGRsZUZhY3RvciA9IDE7XG4gICAgaWYgKG1pZGRsZSAhPT0gbnVsbCkge1xuICAgICAgICB2YXIgbWlkZGxlTWV0cmljcyA9IGdldE1ldHJpY3MobWlkZGxlLCBmb250LCBtb2RlKTtcbiAgICAgICAgbWlkZGxlSGVpZ2h0VG90YWwgPSBtaWRkbGVNZXRyaWNzLmhlaWdodCArIG1pZGRsZU1ldHJpY3MuZGVwdGg7XG4gICAgICAgIG1pZGRsZUZhY3RvciA9IDI7IC8vIHJlcGVhdCBzeW1tZXRyaWNhbGx5IGFib3ZlIGFuZCBiZWxvdyBtaWRkbGVcbiAgICB9XG5cbiAgICAvLyBDYWxjdWF0ZSB0aGUgbWluaW1hbCBoZWlnaHQgdGhhdCB0aGUgZGVsaW1pdGVyIGNhbiBoYXZlLlxuICAgIC8vIEl0IGlzIGF0IGxlYXN0IHRoZSBzaXplIG9mIHRoZSB0b3AsIGJvdHRvbSwgYW5kIG9wdGlvbmFsIG1pZGRsZSBjb21iaW5lZC5cbiAgICB2YXIgbWluSGVpZ2h0ID0gdG9wSGVpZ2h0VG90YWwgKyBib3R0b21IZWlnaHRUb3RhbCArIG1pZGRsZUhlaWdodFRvdGFsO1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIGNvcGllcyBvZiB0aGUgcmVwZWF0IHN5bWJvbCB3ZSB3aWxsIG5lZWRcbiAgICB2YXIgcmVwZWF0Q291bnQgPSBNYXRoLmNlaWwoKGhlaWdodFRvdGFsIC0gbWluSGVpZ2h0KSAvIChtaWRkbGVGYWN0b3IgKiByZXBlYXRIZWlnaHRUb3RhbCkpO1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBkZWxpbWl0ZXIgaW5jbHVkaW5nIGFsbCB0aGUgc3ltYm9sc1xuICAgIHZhciByZWFsSGVpZ2h0VG90YWwgPSBtaW5IZWlnaHQgKyByZXBlYXRDb3VudCAqIG1pZGRsZUZhY3RvciAqIHJlcGVhdEhlaWdodFRvdGFsO1xuXG4gICAgLy8gVGhlIGNlbnRlciBvZiB0aGUgZGVsaW1pdGVyIGlzIHBsYWNlZCBhdCB0aGUgY2VudGVyIG9mIHRoZSBheGlzLiBOb3RlXG4gICAgLy8gdGhhdCBpbiB0aGlzIGNvbnRleHQsIFwiY2VudGVyXCIgbWVhbnMgdGhhdCB0aGUgZGVsaW1pdGVyIHNob3VsZCBiZVxuICAgIC8vIGNlbnRlcmVkIGFyb3VuZCB0aGUgYXhpcyBpbiB0aGUgY3VycmVudCBzdHlsZSwgd2hpbGUgbm9ybWFsbHkgaXQgaXNcbiAgICAvLyBjZW50ZXJlZCBhcm91bmQgdGhlIGF4aXMgaW4gdGV4dHN0eWxlLlxuICAgIHZhciBheGlzSGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQ7XG4gICAgaWYgKGNlbnRlcikge1xuICAgICAgICBheGlzSGVpZ2h0ICo9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgfVxuICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVwdGhcbiAgICB2YXIgZGVwdGggPSByZWFsSGVpZ2h0VG90YWwgLyAyIC0gYXhpc0hlaWdodDtcblxuICAgIC8vIE5vdywgd2Ugc3RhcnQgYnVpbGRpbmcgdGhlIHBpZWNlcyB0aGF0IHdpbGwgZ28gaW50byB0aGUgdmxpc3RcblxuICAgIC8vIEtlZXAgYSBsaXN0IG9mIHRoZSBpbm5lciBwaWVjZXNcbiAgICB2YXIgaW5uZXJzID0gW107XG5cbiAgICAvLyBBZGQgdGhlIGJvdHRvbSBzeW1ib2xcbiAgICBpbm5lcnMucHVzaChtYWtlSW5uZXIoYm90dG9tLCBmb250LCBtb2RlKSk7XG5cbiAgICBpZiAobWlkZGxlID09PSBudWxsKSB7XG4gICAgICAgIC8vIEFkZCB0aGF0IG1hbnkgc3ltYm9sc1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcGVhdENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGlubmVycy5wdXNoKG1ha2VJbm5lcihyZXBlYXQsIGZvbnQsIG1vZGUpKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFdoZW4gdGhlcmUgaXMgYSBtaWRkbGUgYml0LCB3ZSBuZWVkIHRoZSBtaWRkbGUgcGFydCBhbmQgdHdvIHJlcGVhdGVkXG4gICAgICAgIC8vIHNlY3Rpb25zXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCByZXBlYXRDb3VudDsgX2krKykge1xuICAgICAgICAgICAgaW5uZXJzLnB1c2gobWFrZUlubmVyKHJlcGVhdCwgZm9udCwgbW9kZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlubmVycy5wdXNoKG1ha2VJbm5lcihtaWRkbGUsIGZvbnQsIG1vZGUpKTtcbiAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgcmVwZWF0Q291bnQ7IF9pMisrKSB7XG4gICAgICAgICAgICBpbm5lcnMucHVzaChtYWtlSW5uZXIocmVwZWF0LCBmb250LCBtb2RlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIHRvcCBzeW1ib2xcbiAgICBpbm5lcnMucHVzaChtYWtlSW5uZXIodG9wLCBmb250LCBtb2RlKSk7XG5cbiAgICAvLyBGaW5hbGx5LCBidWlsZCB0aGUgdmxpc3RcbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5URVhUKTtcbiAgICB2YXIgaW5uZXIgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVZMaXN0KHtcbiAgICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgICBwb3NpdGlvbkRhdGE6IGRlcHRoLFxuICAgICAgICBjaGlsZHJlbjogaW5uZXJzXG4gICAgfSwgbmV3T3B0aW9ucyk7XG5cbiAgICByZXR1cm4gc3R5bGVXcmFwKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJkZWxpbXNpemluZ1wiLCBcIm11bHRcIl0sIFtpbm5lcl0sIG5ld09wdGlvbnMpLCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uVEVYVCwgb3B0aW9ucywgY2xhc3Nlcyk7XG59O1xuXG4vLyBBbGwgc3VyZHMgaGF2ZSAwLjA4ZW0gcGFkZGluZyBhYm92ZSB0aGUgdmluaWN1bHVtIGluc2lkZSB0aGUgU1ZHLlxuLy8gVGhhdCBrZWVwcyBicm93c2VyIHNwYW4gaGVpZ2h0IHJvdW5kaW5nIGVycm9yIGZyb20gcGluY2hpbmcgdGhlIGxpbmUuXG52YXIgdmJQYWQgPSA4MDsgLy8gcGFkZGluZyBhYm92ZSB0aGUgc3VyZCwgbWVhc3VyZWQgaW5zaWRlIHRoZSB2aWV3Qm94LlxudmFyIGVtUGFkID0gMC4wODsgLy8gcGFkZGluZywgaW4gZW1zLCBtZWFzdXJlZCBpbiB0aGUgZG9jdW1lbnQuXG5cbnZhciBzcXJ0U3ZnID0gZnVuY3Rpb24gc3FydFN2ZyhzcXJ0TmFtZSwgaGVpZ2h0LCB2aWV3Qm94SGVpZ2h0LCBvcHRpb25zKSB7XG4gICAgdmFyIGFsdGVybmF0ZSA9IHZvaWQgMDtcbiAgICBpZiAoc3FydE5hbWUgPT09IFwic3FydFRhbGxcIikge1xuICAgICAgICAvLyBzcXJ0VGFsbCBpcyBmcm9tIGdseXBoIFUyM0I3IGluIHRoZSBmb250IEthVGVYX1NpemU0LVJlZ3VsYXJcbiAgICAgICAgLy8gT25lIHBhdGggZWRnZSBoYXMgYSB2YXJpYWJsZSBsZW5ndGguIEl0IHJ1bnMgZnJvbSB0aGUgdmluaWN1bHVtblxuICAgICAgICAvLyB0byBhIHBvaW50IG5lYXIgKDE0IHVuaXRzKSB0aGUgYm90dG9tIG9mIHRoZSBzdXJkLiBUaGUgdmluaWN1bHVtXG4gICAgICAgIC8vIGlzIDQwIHVuaXRzIHRoaWNrLiBTbyB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIGluIHF1ZXN0aW9uIGlzOlxuICAgICAgICB2YXIgdmVydFNlZ21lbnQgPSB2aWV3Qm94SGVpZ2h0IC0gNTQgLSB2YlBhZDtcbiAgICAgICAgYWx0ZXJuYXRlID0gXCJNNzAyIFwiICsgdmJQYWQgKyBcIkg0MDAwMDB2NDBINzQydlwiICsgdmVydFNlZ21lbnQgKyBcImwtNCA0LTQgNGMtLjY2Ny43XFxuLTIgMS41LTQgMi41cy00LjE2NyAxLjgzMy02LjUgMi41LTUuNSAxLTkuNSAxaC0xMmwtMjgtODRjLTE2LjY2Ny01Mi05Ni42NjdcXG4tMjk0LjMzMy0yNDAtNzI3bC0yMTIgLTY0MyAtODUgMTcwYy00LTMuMzMzLTguMzMzLTcuNjY3LTEzIC0xM2wtMTMtMTNsNzctMTU1XFxuIDc3LTE1NmM2NiAxOTkuMzMzIDEzOSA0MTkuNjY3IDIxOSA2NjEgbDIxOCA2NjF6TTcwMiBcIiArIHZiUGFkICsgXCJINDAwMDAwdjQwSDc0MnpcIjtcbiAgICB9XG4gICAgdmFyIHBhdGhOb2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZG9tVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnBhdGhOb2RlKHNxcnROYW1lLCBhbHRlcm5hdGUpO1xuXG4gICAgdmFyIHN2ZyA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2RvbVRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5zdmdOb2RlKFtwYXRoTm9kZV0sIHtcbiAgICAgICAgLy8gTm90ZTogMTAwMDoxIHJhdGlvIG9mIHZpZXdCb3ggdG8gZG9jdW1lbnQgZW0gd2lkdGguXG4gICAgICAgIFwid2lkdGhcIjogXCI0MDBlbVwiLFxuICAgICAgICBcImhlaWdodFwiOiBoZWlnaHQgKyBcImVtXCIsXG4gICAgICAgIFwidmlld0JveFwiOiBcIjAgMCA0MDAwMDAgXCIgKyB2aWV3Qm94SGVpZ2h0LFxuICAgICAgICBcInByZXNlcnZlQXNwZWN0UmF0aW9cIjogXCJ4TWluWU1pbiBzbGljZVwiXG4gICAgfSk7XG5cbiAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcImhpZGUtdGFpbFwiXSwgW3N2Z10sIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgc3FydCBpbWFnZSBvZiB0aGUgZ2l2ZW4gaGVpZ2h0LFxuICovXG52YXIgbWFrZVNxcnRJbWFnZSA9IGZ1bmN0aW9uIG1ha2VTcXJ0SW1hZ2UoaGVpZ2h0LCBvcHRpb25zKSB7XG4gICAgdmFyIGRlbGltID0gdHJhdmVyc2VTZXF1ZW5jZShcIlxcXFxzdXJkXCIsIGhlaWdodCwgc3RhY2tMYXJnZURlbGltaXRlclNlcXVlbmNlLCBvcHRpb25zKTtcblxuICAgIC8vIENyZWF0ZSBhIHNwYW4gY29udGFpbmluZyBhbiBTVkcgaW1hZ2Ugb2YgYSBzcXJ0IHN5bWJvbC5cbiAgICB2YXIgc3BhbiA9IHZvaWQgMDtcbiAgICB2YXIgc2l6ZU11bHRpcGxpZXIgPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyOyAvLyBkZWZhdWx0XG4gICAgdmFyIHNwYW5IZWlnaHQgPSAwO1xuICAgIHZhciB0ZXhIZWlnaHQgPSAwO1xuICAgIHZhciB2aWV3Qm94SGVpZ2h0ID0gMDtcblxuICAgIC8vIFdlIGNyZWF0ZSB2aWV3Qm94ZXMgd2l0aCA4MCB1bml0cyBvZiBcInBhZGRpbmdcIiBhYm92ZSBlYWNoIHN1cmQuXG4gICAgLy8gVGhlbiBicm93c2VyIHJvdW5kaW5nIGVycm9yIG9uIHRoZSBwYXJlbnQgc3BhbiBoZWlnaHQgd2lsbCBub3RcbiAgICAvLyBlbmNyb2FjaCBvbiB0aGUgaW5rIG9mIHRoZSB2aW5pY3VsdW0uIEJ1dCB0aGF0IHBhZGRpbmcgaXMgbm90XG4gICAgLy8gaW5jbHVkZWQgaW4gdGhlIFRlWC1saWtlIGBoZWlnaHRgIHVzZWQgZm9yIGNhbGN1bGF0aW9uIG9mXG4gICAgLy8gdmVydGljYWwgYWxpZ25tZW50LiBTbyB0ZXhIZWlnaHQgPSBzcGFuLmhlaWdodCA8IHNwYW4uc3R5bGUuaGVpZ2h0LlxuXG4gICAgaWYgKGRlbGltLnR5cGUgPT09IFwic21hbGxcIikge1xuICAgICAgICAvLyBHZXQgYW4gU1ZHIHRoYXQgaXMgZGVyaXZlZCBmcm9tIGdseXBoIFUrMjIxQSBpbiBmb250IEthVGVYLU1haW4uXG4gICAgICAgIHZpZXdCb3hIZWlnaHQgPSAxMDAwICsgdmJQYWQ7IC8vIDEwMDAgdW5pdCBnbHlwaCBoZWlnaHQuXG4gICAgICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUoZGVsaW0uc3R5bGUpO1xuICAgICAgICBzaXplTXVsdGlwbGllciA9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgICAgICBzcGFuSGVpZ2h0ID0gKDEuMCArIGVtUGFkKSAqIHNpemVNdWx0aXBsaWVyO1xuICAgICAgICB0ZXhIZWlnaHQgPSAxLjAwICogc2l6ZU11bHRpcGxpZXI7XG4gICAgICAgIHNwYW4gPSBzcXJ0U3ZnKFwic3FydE1haW5cIiwgc3BhbkhlaWdodCwgdmlld0JveEhlaWdodCwgb3B0aW9ucyk7XG4gICAgICAgIHNwYW4uc3R5bGUubWluV2lkdGggPSBcIjAuODUzZW1cIjtcbiAgICAgICAgc3Bhbi5hZHZhbmNlV2lkdGggPSAwLjgzMyAqIHNpemVNdWx0aXBsaWVyOyAvLyBmcm9tIHRoZSBmb250LlxuICAgIH0gZWxzZSBpZiAoZGVsaW0udHlwZSA9PT0gXCJsYXJnZVwiKSB7XG4gICAgICAgIC8vIFRoZXNlIFNWR3MgY29tZSBmcm9tIGZvbnRzOiBLYVRlWF9TaXplMSwgX1NpemUyLCBldGMuXG4gICAgICAgIHZpZXdCb3hIZWlnaHQgPSAoMTAwMCArIHZiUGFkKSAqIHNpemVUb01heEhlaWdodFtkZWxpbS5zaXplXTtcbiAgICAgICAgdGV4SGVpZ2h0ID0gc2l6ZVRvTWF4SGVpZ2h0W2RlbGltLnNpemVdIC8gc2l6ZU11bHRpcGxpZXI7XG4gICAgICAgIHNwYW5IZWlnaHQgPSAoc2l6ZVRvTWF4SGVpZ2h0W2RlbGltLnNpemVdICsgZW1QYWQpIC8gc2l6ZU11bHRpcGxpZXI7XG4gICAgICAgIHNwYW4gPSBzcXJ0U3ZnKFwic3FydFNpemVcIiArIGRlbGltLnNpemUsIHNwYW5IZWlnaHQsIHZpZXdCb3hIZWlnaHQsIG9wdGlvbnMpO1xuICAgICAgICBzcGFuLnN0eWxlLm1pbldpZHRoID0gXCIxLjAyZW1cIjtcbiAgICAgICAgc3Bhbi5hZHZhbmNlV2lkdGggPSAxLjAgLyBzaXplTXVsdGlwbGllcjsgLy8gZnJvbSB0aGUgZm9udFxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRhbGwgc3FydC4gSW4gVGVYLCB0aGlzIHdvdWxkIGJlIHN0YWNrZWQgdXNpbmcgbXVsdGlwbGUgZ2x5cGhzLlxuICAgICAgICAvLyBXZSdsbCB1c2UgYSBzaW5nbGUgU1ZHIHRvIGFjY29tcGxpc2ggdGhlIHNhbWUgdGhpbmcuXG4gICAgICAgIHNwYW5IZWlnaHQgPSBoZWlnaHQgLyBzaXplTXVsdGlwbGllciArIGVtUGFkO1xuICAgICAgICB0ZXhIZWlnaHQgPSBoZWlnaHQgLyBzaXplTXVsdGlwbGllcjtcbiAgICAgICAgdmlld0JveEhlaWdodCA9IE1hdGguZmxvb3IoMTAwMCAqIGhlaWdodCkgKyB2YlBhZDtcbiAgICAgICAgc3BhbiA9IHNxcnRTdmcoXCJzcXJ0VGFsbFwiLCBzcGFuSGVpZ2h0LCB2aWV3Qm94SGVpZ2h0LCBvcHRpb25zKTtcbiAgICAgICAgc3Bhbi5zdHlsZS5taW5XaWR0aCA9IFwiMC43NDJlbVwiO1xuICAgICAgICBzcGFuLmFkdmFuY2VXaWR0aCA9IDEuMDU2IC8gc2l6ZU11bHRpcGxpZXI7XG4gICAgfVxuXG4gICAgc3Bhbi5oZWlnaHQgPSB0ZXhIZWlnaHQ7XG4gICAgc3Bhbi5zdHlsZS5oZWlnaHQgPSBzcGFuSGVpZ2h0ICsgXCJlbVwiO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3Bhbjogc3BhbixcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBhY3R1YWwgbGluZSB3aWR0aC5cbiAgICAgICAgLy8gVGhpcyBhY3R1YWxseSBzaG91bGQgZGVwZW5kIG9uIHRoZSBjaG9zZW4gZm9udCAtLSBlLmcuIFxcYm9sZG1hdGhcbiAgICAgICAgLy8gc2hvdWxkIHVzZSB0aGUgdGhpY2tlciBzdXJkIHN5bWJvbHMgZnJvbSBlLmcuIEthVGVYX01haW4tQm9sZCwgYW5kXG4gICAgICAgIC8vIGhhdmUgdGhpY2tlciBydWxlcy5cbiAgICAgICAgcnVsZVdpZHRoOiBvcHRpb25zLmZvbnRNZXRyaWNzKCkuc3FydFJ1bGVUaGlja25lc3MgKiBzaXplTXVsdGlwbGllclxuICAgIH07XG59O1xuXG4vLyBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgZGVsaW1pdGVycywgZGVsaW1pdGVycyB0aGF0IHN0YWNrIHdoZW4gdGhleSBiZWNvbWVcbi8vIHRvbyBsYXJnZVxudmFyIHN0YWNrTGFyZ2VEZWxpbWl0ZXJzID0gW1wiKFwiLCBcIilcIiwgXCJbXCIsIFwiXFxcXGxicmFja1wiLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIsIFwiXFxcXHtcIiwgXCJcXFxcbGJyYWNlXCIsIFwiXFxcXH1cIiwgXCJcXFxccmJyYWNlXCIsIFwiXFxcXGxmbG9vclwiLCBcIlxcXFxyZmxvb3JcIiwgXCJcXFxcbGNlaWxcIiwgXCJcXFxccmNlaWxcIiwgXCJcXFxcc3VyZFwiXTtcblxuLy8gZGVsaW1pdGVycyB0aGF0IGFsd2F5cyBzdGFja1xudmFyIHN0YWNrQWx3YXlzRGVsaW1pdGVycyA9IFtcIlxcXFx1cGFycm93XCIsIFwiXFxcXGRvd25hcnJvd1wiLCBcIlxcXFx1cGRvd25hcnJvd1wiLCBcIlxcXFxVcGFycm93XCIsIFwiXFxcXERvd25hcnJvd1wiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCBcInxcIiwgXCJcXFxcfFwiLCBcIlxcXFx2ZXJ0XCIsIFwiXFxcXFZlcnRcIiwgXCJcXFxcbHZlcnRcIiwgXCJcXFxccnZlcnRcIiwgXCJcXFxcbFZlcnRcIiwgXCJcXFxcclZlcnRcIiwgXCJcXFxcbGdyb3VwXCIsIFwiXFxcXHJncm91cFwiLCBcIlxcXFxsbW91c3RhY2hlXCIsIFwiXFxcXHJtb3VzdGFjaGVcIl07XG5cbi8vIGFuZCBkZWxpbWl0ZXJzIHRoYXQgbmV2ZXIgc3RhY2tcbnZhciBzdGFja05ldmVyRGVsaW1pdGVycyA9IFtcIjxcIiwgXCI+XCIsIFwiXFxcXGxhbmdsZVwiLCBcIlxcXFxyYW5nbGVcIiwgXCIvXCIsIFwiXFxcXGJhY2tzbGFzaFwiLCBcIlxcXFxsdFwiLCBcIlxcXFxndFwiXTtcblxuLy8gTWV0cmljcyBvZiB0aGUgZGlmZmVyZW50IHNpemVzLiBGb3VuZCBieSBsb29raW5nIGF0IFRlWCdzIG91dHB1dCBvZlxuLy8gJFxcYmlnbHwgLy8gXFxCaWdsfCBcXGJpZ2dsfCBcXEJpZ2dsfCBcXHNob3dsaXN0cyRcbi8vIFVzZWQgdG8gY3JlYXRlIHN0YWNrZWQgZGVsaW1pdGVycyBvZiBhcHByb3ByaWF0ZSBzaXplcyBpbiBtYWtlU2l6ZWREZWxpbS5cbnZhciBzaXplVG9NYXhIZWlnaHQgPSBbMCwgMS4yLCAxLjgsIDIuNCwgMy4wXTtcblxuLyoqXG4gKiBVc2VkIHRvIGNyZWF0ZSBhIGRlbGltaXRlciBvZiBhIHNwZWNpZmljIHNpemUsIHdoZXJlIGBzaXplYCBpcyAxLCAyLCAzLCBvciA0LlxuICovXG52YXIgbWFrZVNpemVkRGVsaW0gPSBmdW5jdGlvbiBtYWtlU2l6ZWREZWxpbShkZWxpbSwgc2l6ZSwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICAgIC8vIDwgYW5kID4gdHVybiBpbnRvIFxcbGFuZ2xlIGFuZCBcXHJhbmdsZSBpbiBkZWxpbWl0ZXJzXG4gICAgaWYgKGRlbGltID09PSBcIjxcIiB8fCBkZWxpbSA9PT0gXCJcXFxcbHRcIiB8fCBkZWxpbSA9PT0gXCJcXHUyN0U4XCIpIHtcbiAgICAgICAgZGVsaW0gPSBcIlxcXFxsYW5nbGVcIjtcbiAgICB9IGVsc2UgaWYgKGRlbGltID09PSBcIj5cIiB8fCBkZWxpbSA9PT0gXCJcXFxcZ3RcIiB8fCBkZWxpbSA9PT0gXCJcXHUyN0U5XCIpIHtcbiAgICAgICAgZGVsaW0gPSBcIlxcXFxyYW5nbGVcIjtcbiAgICB9XG5cbiAgICAvLyBTaXplZCBkZWxpbWl0ZXJzIGFyZSBuZXZlciBjZW50ZXJlZC5cbiAgICBpZiAoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmNvbnRhaW5zKHN0YWNrTGFyZ2VEZWxpbWl0ZXJzLCBkZWxpbSkgfHwgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmNvbnRhaW5zKHN0YWNrTmV2ZXJEZWxpbWl0ZXJzLCBkZWxpbSkpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VMYXJnZURlbGltKGRlbGltLCBzaXplLCBmYWxzZSwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcyk7XG4gICAgfSBlbHNlIGlmIChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX3V0aWxzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uY29udGFpbnMoc3RhY2tBbHdheXNEZWxpbWl0ZXJzLCBkZWxpbSkpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VTdGFja2VkRGVsaW0oZGVsaW0sIHNpemVUb01heEhlaWdodFtzaXplXSwgZmFsc2UsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIklsbGVnYWwgZGVsaW1pdGVyOiAnXCIgKyBkZWxpbSArIFwiJ1wiKTtcbiAgICB9XG59O1xuXG4vKipcbiAqIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgc2VxdWVuY2VzIG9mIGRlbGltaXRlciBzaXplcyB0aGF0IHRoZSBkZWxpbWl0ZXJzXG4gKiBmb2xsb3cgZGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mIGRlbGltaXRlci4gVGhpcyBpcyB1c2VkIHdoZW4gY3JlYXRpbmcgY3VzdG9tXG4gKiBzaXplZCBkZWxpbWl0ZXJzIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGNyZWF0ZSBhIHNtYWxsLCBsYXJnZSwgb3Igc3RhY2tlZFxuICogZGVsaW1pdGVyLlxuICpcbiAqIEluIHJlYWwgVGVYLCB0aGVzZSBzZXF1ZW5jZXMgYXJlbid0IGV4cGxpY2l0bHkgZGVmaW5lZCwgYnV0IGFyZSBpbnN0ZWFkXG4gKiBkZWZpbmVkIGluc2lkZSB0aGUgZm9udCBtZXRyaWNzLiBTaW5jZSB0aGVyZSBhcmUgb25seSB0aHJlZSBzZXF1ZW5jZXMgdGhhdFxuICogYXJlIHBvc3NpYmxlIGZvciB0aGUgZGVsaW1pdGVycyB0aGF0IFRlWCBkZWZpbmVzLCBpdCBpcyBlYXNpZXIgdG8ganVzdCBlbmNvZGVcbiAqIHRoZW0gZXhwbGljaXRseSBoZXJlLlxuICovXG5cbi8vIERlbGltaXRlcnMgdGhhdCBuZXZlciBzdGFjayB0cnkgc21hbGwgZGVsaW1pdGVycyBhbmQgbGFyZ2UgZGVsaW1pdGVycyBvbmx5XG52YXIgc3RhY2tOZXZlckRlbGltaXRlclNlcXVlbmNlID0gW3sgdHlwZTogXCJzbWFsbFwiLCBzdHlsZTogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlNDUklQVFNDUklQVCB9LCB7IHR5cGU6IFwic21hbGxcIiwgc3R5bGU6IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5TQ1JJUFQgfSwgeyB0eXBlOiBcInNtYWxsXCIsIHN0eWxlOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uVEVYVCB9LCB7IHR5cGU6IFwibGFyZ2VcIiwgc2l6ZTogMSB9LCB7IHR5cGU6IFwibGFyZ2VcIiwgc2l6ZTogMiB9LCB7IHR5cGU6IFwibGFyZ2VcIiwgc2l6ZTogMyB9LCB7IHR5cGU6IFwibGFyZ2VcIiwgc2l6ZTogNCB9XTtcblxuLy8gRGVsaW1pdGVycyB0aGF0IGFsd2F5cyBzdGFjayB0cnkgdGhlIHNtYWxsIGRlbGltaXRlcnMgZmlyc3QsIHRoZW4gc3RhY2tcbnZhciBzdGFja0Fsd2F5c0RlbGltaXRlclNlcXVlbmNlID0gW3sgdHlwZTogXCJzbWFsbFwiLCBzdHlsZTogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlNDUklQVFNDUklQVCB9LCB7IHR5cGU6IFwic21hbGxcIiwgc3R5bGU6IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5TQ1JJUFQgfSwgeyB0eXBlOiBcInNtYWxsXCIsIHN0eWxlOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uVEVYVCB9LCB7IHR5cGU6IFwic3RhY2tcIiB9XTtcblxuLy8gRGVsaW1pdGVycyB0aGF0IHN0YWNrIHdoZW4gbGFyZ2UgdHJ5IHRoZSBzbWFsbCBhbmQgdGhlbiBsYXJnZSBkZWxpbWl0ZXJzLCBhbmRcbi8vIHN0YWNrIGFmdGVyd2FyZHNcbnZhciBzdGFja0xhcmdlRGVsaW1pdGVyU2VxdWVuY2UgPSBbeyB0eXBlOiBcInNtYWxsXCIsIHN0eWxlOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uU0NSSVBUU0NSSVBUIH0sIHsgdHlwZTogXCJzbWFsbFwiLCBzdHlsZTogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlNDUklQVCB9LCB7IHR5cGU6IFwic21hbGxcIiwgc3R5bGU6IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5URVhUIH0sIHsgdHlwZTogXCJsYXJnZVwiLCBzaXplOiAxIH0sIHsgdHlwZTogXCJsYXJnZVwiLCBzaXplOiAyIH0sIHsgdHlwZTogXCJsYXJnZVwiLCBzaXplOiAzIH0sIHsgdHlwZTogXCJsYXJnZVwiLCBzaXplOiA0IH0sIHsgdHlwZTogXCJzdGFja1wiIH1dO1xuXG4vKipcbiAqIEdldCB0aGUgZm9udCB1c2VkIGluIGEgZGVsaW1pdGVyIGJhc2VkIG9uIHdoYXQga2luZCBvZiBkZWxpbWl0ZXIgaXQgaXMuXG4gKi9cbnZhciBkZWxpbVR5cGVUb0ZvbnQgPSBmdW5jdGlvbiBkZWxpbVR5cGVUb0ZvbnQodHlwZSkge1xuICAgIGlmICh0eXBlLnR5cGUgPT09IFwic21hbGxcIikge1xuICAgICAgICByZXR1cm4gXCJNYWluLVJlZ3VsYXJcIjtcbiAgICB9IGVsc2UgaWYgKHR5cGUudHlwZSA9PT0gXCJsYXJnZVwiKSB7XG4gICAgICAgIHJldHVybiBcIlNpemVcIiArIHR5cGUuc2l6ZSArIFwiLVJlZ3VsYXJcIjtcbiAgICB9IGVsc2UgaWYgKHR5cGUudHlwZSA9PT0gXCJzdGFja1wiKSB7XG4gICAgICAgIHJldHVybiBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgICB9XG59O1xuXG4vKipcbiAqIFRyYXZlcnNlIGEgc2VxdWVuY2Ugb2YgdHlwZXMgb2YgZGVsaW1pdGVycyB0byBkZWNpZGUgd2hhdCBraW5kIG9mIGRlbGltaXRlclxuICogc2hvdWxkIGJlIHVzZWQgdG8gY3JlYXRlIGEgZGVsaW1pdGVyIG9mIHRoZSBnaXZlbiBoZWlnaHQrZGVwdGguXG4gKi9cbnZhciB0cmF2ZXJzZVNlcXVlbmNlID0gZnVuY3Rpb24gdHJhdmVyc2VTZXF1ZW5jZShkZWxpbSwgaGVpZ2h0LCBzZXF1ZW5jZSwgb3B0aW9ucykge1xuICAgIC8vIEhlcmUsIHdlIGNob29zZSB0aGUgaW5kZXggd2Ugc2hvdWxkIHN0YXJ0IGF0IGluIHRoZSBzZXF1ZW5jZXMuIEluIHNtYWxsZXJcbiAgICAvLyBzaXplcyAod2hpY2ggY29ycmVzcG9uZCB0byBsYXJnZXIgbnVtYmVycyBpbiBzdHlsZS5zaXplKSB3ZSBzdGFydCBlYXJsaWVyXG4gICAgLy8gaW4gdGhlIHNlcXVlbmNlLiBUaHVzLCBzY3JpcHRzY3JpcHQgc3RhcnRzIGF0IGluZGV4IDMtMz0wLCBzY3JpcHQgc3RhcnRzXG4gICAgLy8gYXQgaW5kZXggMy0yPTEsIHRleHQgc3RhcnRzIGF0IDMtMT0yLCBhbmQgZGlzcGxheSBzdGFydHMgYXQgbWluKDIsMy0wKT0yXG4gICAgdmFyIHN0YXJ0ID0gTWF0aC5taW4oMiwgMyAtIG9wdGlvbnMuc3R5bGUuc2l6ZSk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgc2VxdWVuY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHNlcXVlbmNlW2ldLnR5cGUgPT09IFwic3RhY2tcIikge1xuICAgICAgICAgICAgLy8gVGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgZGVsaW1pdGVyLCBzbyB3ZSBqdXN0IGJyZWFrIHRoZSBsb29wIG5vdy5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1ldHJpY3MgPSBnZXRNZXRyaWNzKGRlbGltLCBkZWxpbVR5cGVUb0ZvbnQoc2VxdWVuY2VbaV0pLCBcIm1hdGhcIik7XG4gICAgICAgIHZhciBoZWlnaHREZXB0aCA9IG1ldHJpY3MuaGVpZ2h0ICsgbWV0cmljcy5kZXB0aDtcblxuICAgICAgICAvLyBTbWFsbCBkZWxpbWl0ZXJzIGFyZSBzY2FsZWQgZG93biB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBmb250LCBzbyB3ZVxuICAgICAgICAvLyBhY2NvdW50IGZvciB0aGUgc3R5bGUgY2hhbmdlIHNpemUuXG5cbiAgICAgICAgaWYgKHNlcXVlbmNlW2ldLnR5cGUgPT09IFwic21hbGxcIikge1xuICAgICAgICAgICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ0Jhc2VTdHlsZShzZXF1ZW5jZVtpXS5zdHlsZSk7XG4gICAgICAgICAgICBoZWlnaHREZXB0aCAqPSBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGRlbGltaXRlciBhdCB0aGlzIHNpemUgd29ya3MgZm9yIHRoZSBnaXZlbiBoZWlnaHQuXG4gICAgICAgIGlmIChoZWlnaHREZXB0aCA+IGhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlcXVlbmNlW2ldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSwgcmV0dXJuIHRoZSBsYXN0IHNlcXVlbmNlIGVsZW1lbnQuXG4gICAgcmV0dXJuIHNlcXVlbmNlW3NlcXVlbmNlLmxlbmd0aCAtIDFdO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgZGVsaW1pdGVyIG9mIGEgZ2l2ZW4gaGVpZ2h0K2RlcHRoLCB3aXRoIG9wdGlvbmFsIGNlbnRlcmluZy4gSGVyZSwgd2VcbiAqIHRyYXZlcnNlIHRoZSBzZXF1ZW5jZXMsIGFuZCBjcmVhdGUgYSBkZWxpbWl0ZXIgdGhhdCB0aGUgc2VxdWVuY2UgdGVsbHMgdXMgdG8uXG4gKi9cbnZhciBtYWtlQ3VzdG9tU2l6ZWREZWxpbSA9IGZ1bmN0aW9uIG1ha2VDdXN0b21TaXplZERlbGltKGRlbGltLCBoZWlnaHQsIGNlbnRlciwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICAgIGlmIChkZWxpbSA9PT0gXCI8XCIgfHwgZGVsaW0gPT09IFwiXFxcXGx0XCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFOFwiKSB7XG4gICAgICAgIGRlbGltID0gXCJcXFxcbGFuZ2xlXCI7XG4gICAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCI+XCIgfHwgZGVsaW0gPT09IFwiXFxcXGd0XCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFOVwiKSB7XG4gICAgICAgIGRlbGltID0gXCJcXFxccmFuZ2xlXCI7XG4gICAgfVxuXG4gICAgLy8gRGVjaWRlIHdoYXQgc2VxdWVuY2UgdG8gdXNlXG4gICAgdmFyIHNlcXVlbmNlID0gdm9pZCAwO1xuICAgIGlmIChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX3V0aWxzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uY29udGFpbnMoc3RhY2tOZXZlckRlbGltaXRlcnMsIGRlbGltKSkge1xuICAgICAgICBzZXF1ZW5jZSA9IHN0YWNrTmV2ZXJEZWxpbWl0ZXJTZXF1ZW5jZTtcbiAgICB9IGVsc2UgaWYgKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5jb250YWlucyhzdGFja0xhcmdlRGVsaW1pdGVycywgZGVsaW0pKSB7XG4gICAgICAgIHNlcXVlbmNlID0gc3RhY2tMYXJnZURlbGltaXRlclNlcXVlbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcXVlbmNlID0gc3RhY2tBbHdheXNEZWxpbWl0ZXJTZXF1ZW5jZTtcbiAgICB9XG5cbiAgICAvLyBMb29rIHRocm91Z2ggdGhlIHNlcXVlbmNlXG4gICAgdmFyIGRlbGltVHlwZSA9IHRyYXZlcnNlU2VxdWVuY2UoZGVsaW0sIGhlaWdodCwgc2VxdWVuY2UsIG9wdGlvbnMpO1xuXG4gICAgLy8gR2V0IHRoZSBkZWxpbWl0ZXIgZnJvbSBmb250IGdseXBocy5cbiAgICAvLyBEZXBlbmRpbmcgb24gdGhlIHNlcXVlbmNlIGVsZW1lbnQgd2UgZGVjaWRlZCBvbiwgY2FsbCB0aGVcbiAgICAvLyBhcHByb3ByaWF0ZSBmdW5jdGlvbi5cbiAgICBpZiAoZGVsaW1UeXBlLnR5cGUgPT09IFwic21hbGxcIikge1xuICAgICAgICByZXR1cm4gbWFrZVNtYWxsRGVsaW0oZGVsaW0sIGRlbGltVHlwZS5zdHlsZSwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKTtcbiAgICB9IGVsc2UgaWYgKGRlbGltVHlwZS50eXBlID09PSBcImxhcmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VMYXJnZURlbGltKGRlbGltLCBkZWxpbVR5cGUuc2l6ZSwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKTtcbiAgICB9IGVsc2UgLyogaWYgKGRlbGltVHlwZS50eXBlID09PSBcInN0YWNrXCIpICove1xuICAgICAgICAgICAgcmV0dXJuIG1ha2VTdGFja2VkRGVsaW0oZGVsaW0sIGhlaWdodCwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKTtcbiAgICAgICAgfVxufTtcblxuLyoqXG4gKiBNYWtlIGEgZGVsaW1pdGVyIGZvciB1c2Ugd2l0aCBgXFxsZWZ0YCBhbmQgYFxccmlnaHRgLCBnaXZlbiBhIGhlaWdodCBhbmQgZGVwdGhcbiAqIG9mIGFuIGV4cHJlc3Npb24gdGhhdCB0aGUgZGVsaW1pdGVycyBzdXJyb3VuZC5cbiAqL1xudmFyIG1ha2VMZWZ0UmlnaHREZWxpbSA9IGZ1bmN0aW9uIG1ha2VMZWZ0UmlnaHREZWxpbShkZWxpbSwgaGVpZ2h0LCBkZXB0aCwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICAgIC8vIFdlIGFsd2F5cyBjZW50ZXIgXFxsZWZ0L1xccmlnaHQgZGVsaW1pdGVycywgc28gdGhlIGF4aXMgaXMgYWx3YXlzIHNoaWZ0ZWRcbiAgICB2YXIgYXhpc0hlaWdodCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0ICogb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcblxuICAgIC8vIFRha2VuIGZyb20gVGVYIHNvdXJjZSwgdGV4LndlYiwgZnVuY3Rpb24gbWFrZV9sZWZ0X3JpZ2h0XG4gICAgdmFyIGRlbGltaXRlckZhY3RvciA9IDkwMTtcbiAgICB2YXIgZGVsaW1pdGVyRXh0ZW5kID0gNS4wIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG5cbiAgICB2YXIgbWF4RGlzdEZyb21BeGlzID0gTWF0aC5tYXgoaGVpZ2h0IC0gYXhpc0hlaWdodCwgZGVwdGggKyBheGlzSGVpZ2h0KTtcblxuICAgIHZhciB0b3RhbEhlaWdodCA9IE1hdGgubWF4KFxuICAgIC8vIEluIHJlYWwgVGVYLCBjYWxjdWxhdGlvbnMgYXJlIGRvbmUgdXNpbmcgaW50ZWdyYWwgdmFsdWVzIHdoaWNoIGFyZVxuICAgIC8vIDY1NTM2IHBlciBwdCwgb3IgNjU1MzYwIHBlciBlbS4gU28sIHRoZSBkaXZpc2lvbiBoZXJlIHRydW5jYXRlcyBpblxuICAgIC8vIFRlWCBidXQgZG9lc24ndCBoZXJlLCBwcm9kdWNpbmcgZGlmZmVyZW50IHJlc3VsdHMuIElmIHdlIHdhbnRlZCB0b1xuICAgIC8vIGV4YWN0bHkgbWF0Y2ggVGVYJ3MgY2FsY3VsYXRpb24sIHdlIGNvdWxkIGRvXG4gICAgLy8gICBNYXRoLmZsb29yKDY1NTM2MCAqIG1heERpc3RGcm9tQXhpcyAvIDUwMCkgKlxuICAgIC8vICAgIGRlbGltaXRlckZhY3RvciAvIDY1NTM2MFxuICAgIC8vIChUbyBzZWUgdGhlIGRpZmZlcmVuY2UsIGNvbXBhcmVcbiAgICAvLyAgICB4Xnt4XntcXGxlZnQoXFxydWxlezAuMWVtfXswLjY4ZW19XFxyaWdodCl9fVxuICAgIC8vIGluIFRlWCBhbmQgS2FUZVgpXG4gICAgbWF4RGlzdEZyb21BeGlzIC8gNTAwICogZGVsaW1pdGVyRmFjdG9yLCAyICogbWF4RGlzdEZyb21BeGlzIC0gZGVsaW1pdGVyRXh0ZW5kKTtcblxuICAgIC8vIEZpbmFsbHksIHdlIGRlZmVyIHRvIGBtYWtlQ3VzdG9tU2l6ZWREZWxpbWAgd2l0aCBvdXIgY2FsY3VsYXRlZCB0b3RhbFxuICAgIC8vIGhlaWdodFxuICAgIHJldHVybiBtYWtlQ3VzdG9tU2l6ZWREZWxpbShkZWxpbSwgdG90YWxIZWlnaHQsIHRydWUsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh7XG4gICAgc3FydEltYWdlOiBtYWtlU3FydEltYWdlLFxuICAgIHNpemVkRGVsaW06IG1ha2VTaXplZERlbGltLFxuICAgIGN1c3RvbVNpemVkRGVsaW06IG1ha2VDdXN0b21TaXplZERlbGltLFxuICAgIGxlZnRSaWdodERlbGltOiBtYWtlTGVmdFJpZ2h0RGVsaW1cbn0pO1xuXG4vKioqLyB9KSxcbi8qIDQ1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjApXG4gICwgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KS5kb2N1bWVudFxuICAvLyBpbiBvbGQgSUUgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCdcbiAgLCBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuLyoqKi8gfSksXG4vKiA0NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSlcbiAgLCBjb3JlICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KVxuICAsIGZhaWxzICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oS0VZLCBleGVjKXtcbiAgdmFyIGZuICA9IChjb3JlLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXVxuICAgICwgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24oKXsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcbn07XG5cbi8qKiovIH0pLFxuLyogNDcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mik7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuLCB0aGF0LCBsZW5ndGgpe1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZih0aGF0ID09PSB1bmRlZmluZWQpcmV0dXJuIGZuO1xuICBzd2l0Y2gobGVuZ3RoKXtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbihhKXtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24oYSwgYil7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKGEsIGIsIGMpe1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24oLyogLi4uYXJncyAqLyl7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuXG4vKioqLyB9KSxcbi8qIDQ4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgTElCUkFSWSAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgyKVxuICAsICRleHBvcnQgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSlcbiAgLCByZWRlZmluZSAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oODMpXG4gICwgaGlkZSAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KVxuICAsIGhhcyAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSlcbiAgLCBJdGVyYXRvcnMgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpXG4gICwgJGl0ZXJDcmVhdGUgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg0KVxuICAsIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NClcbiAgLCBnZXRQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oOTEpXG4gICwgSVRFUkFUT1IgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSgnaXRlcmF0b3InKVxuICAsIEJVR0dZICAgICAgICAgID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpIC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbiAgLCBGRl9JVEVSQVRPUiAgICA9ICdAQGl0ZXJhdG9yJ1xuICAsIEtFWVMgICAgICAgICAgID0gJ2tleXMnXG4gICwgVkFMVUVTICAgICAgICAgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbigpeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpe1xuICAkaXRlckNyZWF0ZShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG4gIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbihraW5kKXtcbiAgICBpZighQlVHR1kgJiYga2luZCBpbiBwcm90bylyZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoKGtpbmQpe1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCl7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gIH07XG4gIHZhciBUQUcgICAgICAgID0gTkFNRSArICcgSXRlcmF0b3InXG4gICAgLCBERUZfVkFMVUVTID0gREVGQVVMVCA9PSBWQUxVRVNcbiAgICAsIFZBTFVFU19CVUcgPSBmYWxzZVxuICAgICwgcHJvdG8gICAgICA9IEJhc2UucHJvdG90eXBlXG4gICAgLCAkbmF0aXZlICAgID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdXG4gICAgLCAkZGVmYXVsdCAgID0gJG5hdGl2ZSB8fCBnZXRNZXRob2QoREVGQVVMVClcbiAgICAsICRlbnRyaWVzICAgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkXG4gICAgLCAkYW55TmF0aXZlID0gTkFNRSA9PSAnQXJyYXknID8gcHJvdG8uZW50cmllcyB8fCAkbmF0aXZlIDogJG5hdGl2ZVxuICAgICwgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZigkYW55TmF0aXZlKXtcbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSkpO1xuICAgIGlmKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKXtcbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuICAgICAgLy8gZml4IGZvciBzb21lIG9sZCBlbmdpbmVzXG4gICAgICBpZighTElCUkFSWSAmJiAhaGFzKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUikpaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUyl7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKXsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpe1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gID0gcmV0dXJuVGhpcztcbiAgaWYoREVGQVVMVCl7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogIERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogICAgSVNfU0VUICAgICA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogJGVudHJpZXNcbiAgICB9O1xuICAgIGlmKEZPUkNFRClmb3Ioa2V5IGluIG1ldGhvZHMpe1xuICAgICAgaWYoIShrZXkgaW4gcHJvdG8pKXJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07XG5cbi8qKiovIH0pLFxuLyogNDkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKTtcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG5cbi8qKiovIH0pLFxuLyogNTAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuLyoqKi8gfSksXG4vKiA1MSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KVxuICAsIG1pbiAgICAgICA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG4vKioqLyB9KSxcbi8qIDUyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KVxuICAsIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nXG4gICwgc3RvcmUgID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihrZXkpe1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcbn07XG5cbi8qKiovIH0pLFxuLyogNTMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7XG5cbi8qKiovIH0pLFxuLyogNTQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGRlZiA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLmZcbiAgLCBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKVxuICAsIFRBRyA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCB0YWcsIHN0YXQpe1xuICBpZihpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKWRlZihpdCwgVEFHLCB7Y29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnfSk7XG59O1xuXG4vKioqLyB9KSxcbi8qIDU1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBjbGFzc29mICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KVxuICAsIElURVJBVE9SICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpKCdpdGVyYXRvcicpXG4gICwgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oOCkuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbihpdCl7XG4gIGlmKGl0ICE9IHVuZGVmaW5lZClyZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuXG4vKioqLyB9KSxcbi8qIDU2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MClcbiAgLCBUQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSgndG9TdHJpbmdUYWcnKVxuICAvLyBFUzMgd3JvbmcgaGVyZVxuICAsIEFSRyA9IGNvZihmdW5jdGlvbigpeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uKGl0LCBrZXkpe1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG5cbi8qKiovIH0pLFxuLyogNTcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9pc0l0ZXJhYmxlMiA9IF9fd2VicGFja19yZXF1aXJlX18oOTcpO1xuXG52YXIgX2lzSXRlcmFibGUzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJdGVyYWJsZTIpO1xuXG52YXIgX2dldEl0ZXJhdG9yMiA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpO1xuXG52YXIgX2dldEl0ZXJhdG9yMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldEl0ZXJhdG9yMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHtcbiAgICB2YXIgX2FyciA9IFtdO1xuICAgIHZhciBfbiA9IHRydWU7XG4gICAgdmFyIF9kID0gZmFsc2U7XG4gICAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIF9pID0gKDAsIF9nZXRJdGVyYXRvcjMuZGVmYXVsdCkoYXJyKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBfZCA9IHRydWU7XG4gICAgICBfZSA9IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hcnI7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSBlbHNlIGlmICgoMCwgX2lzSXRlcmFibGUzLmRlZmF1bHQpKE9iamVjdChhcnIpKSkge1xuICAgICAgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG4gICAgfVxuICB9O1xufSgpO1xuXG4vKioqLyB9KSxcbi8qIDU4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oOTkpO1xudmFyIGdsb2JhbCAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KVxuICAsIGhpZGUgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KVxuICAsIEl0ZXJhdG9ycyAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KVxuICAsIFRPX1NUUklOR19UQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSgndG9TdHJpbmdUYWcnKTtcblxuZm9yKHZhciBjb2xsZWN0aW9ucyA9IFsnTm9kZUxpc3QnLCAnRE9NVG9rZW5MaXN0JywgJ01lZGlhTGlzdCcsICdTdHlsZVNoZWV0TGlzdCcsICdDU1NSdWxlTGlzdCddLCBpID0gMDsgaSA8IDU7IGkrKyl7XG4gIHZhciBOQU1FICAgICAgID0gY29sbGVjdGlvbnNbaV1cbiAgICAsIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV1cbiAgICAsIHByb3RvICAgICAgPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICBpZihwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10paGlkZShwcm90bywgVE9fU1RSSU5HX1RBRywgTkFNRSk7XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IEl0ZXJhdG9ycy5BcnJheTtcbn1cblxuLyoqKi8gfSksXG4vKiA1OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoe1xuICAgIFwiQU1TLVJlZ3VsYXJcIjoge1xuICAgICAgICBcIjY1XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI2NlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiNjdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgICAgICBcIjY4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI2OVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiNzBcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjcxXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI3MlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiNzNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuMzg4ODldLFxuICAgICAgICBcIjc0XCI6IFswLjE2NjY3LCAwLjY4ODg5LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjc1XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI3NlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiNzdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuOTQ0NDVdLFxuICAgICAgICBcIjc4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI3OVwiOiBbMC4xNjY2NywgMC42ODg4OSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODBcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjgxXCI6IFswLjE2NjY3LCAwLjY4ODg5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4MlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiODNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTU1NTZdLFxuICAgICAgICBcIjg0XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4NVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiODZcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgICAgICBcIjg3XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI4OVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiOTBcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjEwN1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NTU1Nl0sXG4gICAgICAgIFwiMTY1XCI6IFswLCAwLjY3NSwgMC4wMjUsIDAsIDAuNzVdLFxuICAgICAgICBcIjE3NFwiOiBbMC4xNTU1OSwgMC42OTIyNCwgMCwgMCwgMC45NDY2Nl0sXG4gICAgICAgIFwiMjQwXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU1NTU2XSxcbiAgICAgICAgXCIyOTVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTQwMjhdLFxuICAgICAgICBcIjcxMFwiOiBbMCwgMC44MjUsIDAsIDAsIDIuMzMzMzRdLFxuICAgICAgICBcIjczMlwiOiBbMCwgMC45LCAwLCAwLCAyLjMzMzM0XSxcbiAgICAgICAgXCI3NzBcIjogWzAsIDAuODI1LCAwLCAwLCAyLjMzMzM0XSxcbiAgICAgICAgXCI3NzFcIjogWzAsIDAuOSwgMCwgMCwgMi4zMzMzNF0sXG4gICAgICAgIFwiOTg5XCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCIxMDA4XCI6IFswLCAwLjQzMDU2LCAwLjA0MDI4LCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4MjQ1XCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjI3NV0sXG4gICAgICAgIFwiODQ2M1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NDAyOF0sXG4gICAgICAgIFwiODQ4N1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiODQ5OFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NTU1Nl0sXG4gICAgICAgIFwiODUwMlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiODUwM1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgICAgIFwiODUwNFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiODUxM1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgICAgIFwiODU5MlwiOiBbLTAuMDM1OTgsIDAuNDY0MDIsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiODU5NFwiOiBbLTAuMDM1OTgsIDAuNDY0MDIsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiODYwMlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODYwM1wiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODYwNlwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NjA4XCI6IFswLjAxMzU0LCAwLjUyMjM5LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg2MTBcIjogWzAuMDEzNTQsIDAuNTIyMzksIDAsIDAsIDEuMTExMTFdLFxuICAgICAgICBcIjg2MTFcIjogWzAuMDEzNTQsIDAuNTIyMzksIDAsIDAsIDEuMTExMTFdLFxuICAgICAgICBcIjg2MTlcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODYyMFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NjIxXCI6IFstMC4xMzMxMywgMC4zNzc4OCwgMCwgMCwgMS4zODg4OV0sXG4gICAgICAgIFwiODYyMlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODYyNFwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4NjI1XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjg2MzBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODYzMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NjM0XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4NjM1XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4NjM4XCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICAgICAgXCI4NjM5XCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICAgICAgXCI4NjQyXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICAgICAgXCI4NjQzXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICAgICAgXCI4NjQ0XCI6IFswLjE4MDgsIDAuNjc1LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg2NDZcIjogWzAuMTgwOCwgMC42NzUsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODY0N1wiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NjQ4XCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICAgICAgXCI4NjQ5XCI6IFswLjE4MDgsIDAuNjc1LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg2NTBcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuODMzMzRdLFxuICAgICAgICBcIjg2NTFcIjogWzAuMDEzNTQsIDAuNTIyMzksIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODY1MlwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NjUzXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NjU0XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NjU1XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NjY2XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg2NjdcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODY2OVwiOiBbLTAuMTMzMTMsIDAuMzc3ODgsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODY3MlwiOiBbLTAuMDY0LCAwLjQzNywgMCwgMCwgMTE4N10sXG4gICAgICAgIFwiODY3NFwiOiBbLTAuMDY0LCAwLjQzNywgMCwgMCwgMTE2N10sXG4gICAgICAgIFwiODcwNVwiOiBbMCwgMC44MjUsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiODcwOFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NTU1Nl0sXG4gICAgICAgIFwiODcwOVwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODcxN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC40MjkxN10sXG4gICAgICAgIFwiODcyMlwiOiBbLTAuMDM1OTgsIDAuNDY0MDIsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiODcyNFwiOiBbMC4wODE5OCwgMC42OTIyNCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODcyNlwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODczM1wiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODczNlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiODczN1wiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiODczOFwiOiBbMC4wMzUxNywgMC41MjIzOSwgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiODczOVwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC4yMjIyMl0sXG4gICAgICAgIFwiODc0MFwiOiBbMC4yNTE0MiwgMC43NDExMSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgICAgIFwiODc0MVwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC4zODg4OV0sXG4gICAgICAgIFwiODc0MlwiOiBbMC4yNTE0MiwgMC43NDExMSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4NzU2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4NzU3XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4NzY0XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODc2NVwiOiBbLTAuMTMzMTMsIDAuMzc3ODgsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3NjlcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4NzcwXCI6IFstMC4wMzYyNSwgMC40NjM3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODc3NFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODc3NlwiOiBbLTAuMDE2ODgsIDAuNDgzMTIsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3NzhcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3ODJcIjogWzAuMDYwNjIsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3ODNcIjogWzAuMDYwNjIsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3ODVcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3ODZcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3ODdcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3OTBcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3OTFcIjogWzAuMjI5NTgsIDAuNzI5NTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3OTZcIjogWzAuMDgxOTgsIDAuOTE2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4MDZcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4MDdcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4MDhcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4MDlcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4MTJcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiODgxNFwiOiBbMC4yMDU3NiwgMC43MDU3NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgxNVwiOiBbMC4yMDU3NiwgMC43MDU3NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgxNlwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgxN1wiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgxOFwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgxOVwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgyMlwiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgyM1wiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgyOFwiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgyOVwiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgzMFwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgzMVwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgzMlwiOiBbMC4yMDU3NiwgMC43MDU3NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgzM1wiOiBbMC4yMDU3NiwgMC43MDU3NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg0MFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg0MVwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg0MlwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg0M1wiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg0N1wiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg0OFwiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg1OFwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg1OVwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg2MVwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg2MlwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4NjNcIjogWzAsIDAuNjc1LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODY0XCI6IFswLCAwLjY3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODg2NVwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4NzJcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjg4NzNcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzIyMjJdLFxuICAgICAgICBcIjg4NzRcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuODg4ODldLFxuICAgICAgICBcIjg4NzZcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjg4NzdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjg4NzhcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgICAgICBcIjg4NzlcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgICAgICBcIjg4ODJcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4ODNcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4ODRcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4ODVcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4ODhcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDEuMTExMTFdLFxuICAgICAgICBcIjg4OTBcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNTU1NTZdLFxuICAgICAgICBcIjg4OTFcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjg4OTJcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjg5MDFcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjg5MDNcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MDVcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MDZcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MDdcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MDhcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MDlcIjogWy0wLjAzNTk4LCAwLjQ2NDAyLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4OTEwXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjc2MDQyXSxcbiAgICAgICAgXCI4OTExXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjc2MDQyXSxcbiAgICAgICAgXCI4OTEyXCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4OTEzXCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4OTE0XCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4OTE1XCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4OTE2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4OTE4XCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODkxOVwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MjBcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDEuMzMzMzRdLFxuICAgICAgICBcIjg5MjFcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDEuMzMzMzRdLFxuICAgICAgICBcIjg5MjJcIjogWzAuMzg1NjksIDAuODg1NjksIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MjNcIjogWzAuMzg1NjksIDAuODg1NjksIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MjZcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MjdcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MjhcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MjlcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MzRcIjogWzAuMjMyMjIsIDAuNzQxMTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MzVcIjogWzAuMjMyMjIsIDAuNzQxMTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MzZcIjogWzAuMjMyMjIsIDAuNzQxMTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MzdcIjogWzAuMjMyMjIsIDAuNzQxMTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MzhcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5MzlcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5NDBcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5NDFcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5OTRcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg5OTVcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjk0MTZcIjogWzAuMTU1NTksIDAuNjkyMjQsIDAsIDAsIDAuOTAyMjJdLFxuICAgICAgICBcIjk0ODRcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiOTQ4OFwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI5NDkyXCI6IFswLCAwLjM3Nzg4LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjk0OTZcIjogWzAsIDAuMzc3ODgsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiOTU4NVwiOiBbMC4xOTQ0NCwgMC42ODg4OSwgMCwgMCwgMC44ODg4OV0sXG4gICAgICAgIFwiOTU4NlwiOiBbMC4xOTQ0NCwgMC43NDExMSwgMCwgMCwgMC44ODg4OV0sXG4gICAgICAgIFwiOTYzMlwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjk2MzNcIjogWzAsIDAuNjc1LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI5NjUwXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI5NjUxXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI5NjU0XCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI5NjYwXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI5NjYxXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI5NjY0XCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI5Njc0XCI6IFswLjExMTExLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI5NzMzXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjk0NDQ1XSxcbiAgICAgICAgXCIxMDAwM1wiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC44MzMzNF0sXG4gICAgICAgIFwiMTAwMTZcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuODMzMzRdLFxuICAgICAgICBcIjEwNzMxXCI6IFswLjExMTExLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCIxMDg0NlwiOiBbMC4xOTQ0NCwgMC43NTU4MywgMCwgMCwgMC42MTExMV0sXG4gICAgICAgIFwiMTA4NzdcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjEwODc4XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCIxMDg4NVwiOiBbMC4yNTU4MywgMC43NTU4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiMTA4ODZcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjEwODg3XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCIxMDg4OFwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiMTA4ODlcIjogWzAuMjYxNjcsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjEwODkwXCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCIxMDg5MVwiOiBbMC40ODI1NiwgMC45ODI1NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiMTA4OTJcIjogWzAuNDgyNTYsIDAuOTgyNTYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjEwOTAxXCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCIxMDkwMlwiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiMTA5MzNcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjEwOTM0XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCIxMDkzNVwiOiBbMC4yNjE2NywgMC43NTcyNiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiMTA5MzZcIjogWzAuMjYxNjcsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjEwOTM3XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCIxMDkzOFwiOiBbMC4yNjE2NywgMC43NTcyNiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiMTA5NDlcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjEwOTUwXCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCIxMDk1NVwiOiBbMC4yODQ4MSwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiMTA5NTZcIjogWzAuMjg0ODEsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjU3MzUwXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjIyMjIyXSxcbiAgICAgICAgXCI1NzM1MVwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC4zODg4OV0sXG4gICAgICAgIFwiNTczNTJcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjU3MzUzXCI6IFswLCAwLjQzMDU2LCAwLjA0MDI4LCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI1NzM1NlwiOiBbMC4yNTE0MiwgMC43NTcyNiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiNTczNTdcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjU3MzU4XCI6IFswLjQxOTUxLCAwLjkxOTUxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI1NzM1OVwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiNTczNjBcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjU3MzYxXCI6IFswLjQxOTUxLCAwLjkxOTUxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI1NzM2NlwiOiBbMC4yNTE0MiwgMC43NTcyNiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiNTczNjdcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjU3MzY4XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI1NzM2OVwiOiBbMC4yNTE0MiwgMC43NTcyNiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiNTczNzBcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjU3MzcxXCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XVxuICAgIH0sXG4gICAgXCJDYWxpZ3JhcGhpYy1SZWd1bGFyXCI6IHtcbiAgICAgICAgXCI0OFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI0OVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1MFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1MVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1MlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1M1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1NFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1NVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xOTQ0NSwgMC43OTg0N10sXG4gICAgICAgIFwiNjZcIjogWzAsIDAuNjgzMzMsIDAuMDMwNDEsIDAuMTM4ODksIDAuNjU2ODFdLFxuICAgICAgICBcIjY3XCI6IFswLCAwLjY4MzMzLCAwLjA1ODM0LCAwLjEzODg5LCAwLjUyNjUzXSxcbiAgICAgICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wODMzNCwgMC43NzEzOV0sXG4gICAgICAgIFwiNjlcIjogWzAsIDAuNjgzMzMsIDAuMDg5NDQsIDAuMTExMTEsIDAuNTI3NzhdLFxuICAgICAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjA5OTMxLCAwLjExMTExLCAwLjcxODc1XSxcbiAgICAgICAgXCI3MVwiOiBbMC4wOTcyMiwgMC42ODMzMywgMC4wNTkzLCAwLjExMTExLCAwLjU5NDg3XSxcbiAgICAgICAgXCI3MlwiOiBbMCwgMC42ODMzMywgMC4wMDk2NSwgMC4xMTExMSwgMC44NDQ1Ml0sXG4gICAgICAgIFwiNzNcIjogWzAsIDAuNjgzMzMsIDAuMDczODIsIDAsIDAuNTQ0NTJdLFxuICAgICAgICBcIjc0XCI6IFswLjA5NzIyLCAwLjY4MzMzLCAwLjE4NDcyLCAwLjE2NjY3LCAwLjY3Nzc4XSxcbiAgICAgICAgXCI3NVwiOiBbMCwgMC42ODMzMywgMC4wMTQ0NSwgMC4wNTU1NiwgMC43NjE5NV0sXG4gICAgICAgIFwiNzZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTM4ODksIDAuNjg5NzJdLFxuICAgICAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLCAwLjEzODg5LCAxLjIwMDldLFxuICAgICAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLjE0NzM2LCAwLjA4MzM0LCAwLjgyMDQ5XSxcbiAgICAgICAgXCI3OVwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4xMTExMSwgMC43OTYxMV0sXG4gICAgICAgIFwiODBcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAuMDgzMzQsIDAuNjk1NTZdLFxuICAgICAgICBcIjgxXCI6IFswLjA5NzIyLCAwLjY4MzMzLCAwLCAwLjExMTExLCAwLjgxNjY3XSxcbiAgICAgICAgXCI4MlwiOiBbMCwgMC42ODMzMywgMCwgMC4wODMzNCwgMC44NDc1XSxcbiAgICAgICAgXCI4M1wiOiBbMCwgMC42ODMzMywgMC4wNzUsIDAuMTM4ODksIDAuNjA1NTZdLFxuICAgICAgICBcIjg0XCI6IFswLCAwLjY4MzMzLCAwLjI1NDE3LCAwLCAwLjU0NDY0XSxcbiAgICAgICAgXCI4NVwiOiBbMCwgMC42ODMzMywgMC4wOTkzMSwgMC4wODMzNCwgMC42MjU4M10sXG4gICAgICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAsIDAuNjEyNzhdLFxuICAgICAgICBcIjg3XCI6IFswLCAwLjY4MzMzLCAwLjA4MjIyLCAwLjA4MzM0LCAwLjk4Nzc4XSxcbiAgICAgICAgXCI4OFwiOiBbMCwgMC42ODMzMywgMC4xNDY0MywgMC4xMzg4OSwgMC43MTMzXSxcbiAgICAgICAgXCI4OVwiOiBbMC4wOTcyMiwgMC42ODMzMywgMC4wODIyMiwgMC4wODMzNCwgMC42NjgzNF0sXG4gICAgICAgIFwiOTBcIjogWzAsIDAuNjgzMzMsIDAuMDc5NDQsIDAuMTM4ODksIDAuNzI0NzNdXG4gICAgfSxcbiAgICBcIkZyYWt0dXItUmVndWxhclwiOiB7XG4gICAgICAgIFwiMzNcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjk1NzRdLFxuICAgICAgICBcIjM0XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjIxNDcxXSxcbiAgICAgICAgXCIzOFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC43Mzc4Nl0sXG4gICAgICAgIFwiMzlcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjEyMDFdLFxuICAgICAgICBcIjQwXCI6IFswLjI0OTgyLCAwLjc0OTQ3LCAwLCAwLCAwLjM4ODY1XSxcbiAgICAgICAgXCI0MVwiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC4zODg2NV0sXG4gICAgICAgIFwiNDJcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuMjc3NjRdLFxuICAgICAgICBcIjQzXCI6IFswLjA4MzE5LCAwLjU4MjgzLCAwLCAwLCAwLjc1NjIzXSxcbiAgICAgICAgXCI0NFwiOiBbMCwgMC4xMDgwMywgMCwgMCwgMC4yNzc2NF0sXG4gICAgICAgIFwiNDVcIjogWzAuMDgzMTksIDAuNTgyODMsIDAsIDAsIDAuNzU2MjNdLFxuICAgICAgICBcIjQ2XCI6IFswLCAwLjEwODAzLCAwLCAwLCAwLjI3NzY0XSxcbiAgICAgICAgXCI0N1wiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC41MDE4MV0sXG4gICAgICAgIFwiNDhcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgICAgICBcIjQ5XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjUwMTgxXSxcbiAgICAgICAgXCI1MFwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC41MDE4MV0sXG4gICAgICAgIFwiNTFcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgICAgICBcIjUyXCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjUwMTgxXSxcbiAgICAgICAgXCI1M1wiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC41MDE4MV0sXG4gICAgICAgIFwiNTRcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNTAxODFdLFxuICAgICAgICBcIjU1XCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjUwMTgxXSxcbiAgICAgICAgXCI1NlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC41MDE4MV0sXG4gICAgICAgIFwiNTdcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgICAgICBcIjU4XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjIxNjA2XSxcbiAgICAgICAgXCI1OVwiOiBbMC4xMjYwNCwgMC40NzUzNCwgMCwgMCwgMC4yMTYwNl0sXG4gICAgICAgIFwiNjFcIjogWy0wLjEzMDk5LCAwLjM2ODY2LCAwLCAwLCAwLjc1NjIzXSxcbiAgICAgICAgXCI2M1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4zNjI0NV0sXG4gICAgICAgIFwiNjVcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNzE3Nl0sXG4gICAgICAgIFwiNjZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuODgzOTddLFxuICAgICAgICBcIjY3XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjYxMjU0XSxcbiAgICAgICAgXCI2OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MzE1OF0sXG4gICAgICAgIFwiNjlcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNjYyNzhdLFxuICAgICAgICBcIjcwXCI6IFswLjEyNjA0LCAwLjY5MTQxLCAwLCAwLCAwLjYxMTE5XSxcbiAgICAgICAgXCI3MVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC43ODUzOV0sXG4gICAgICAgIFwiNzJcIjogWzAuMDYzMDIsIDAuNjkxNDEsIDAsIDAsIDAuNzIwM10sXG4gICAgICAgIFwiNzNcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNTU0NDhdLFxuICAgICAgICBcIjc0XCI6IFswLjEyNjA0LCAwLjY5MTQxLCAwLCAwLCAwLjU1MjMxXSxcbiAgICAgICAgXCI3NVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42Njg0NV0sXG4gICAgICAgIFwiNzZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNjY2MDJdLFxuICAgICAgICBcIjc3XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAxLjA0OTUzXSxcbiAgICAgICAgXCI3OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MzIxMl0sXG4gICAgICAgIFwiNzlcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuODI2OTldLFxuICAgICAgICBcIjgwXCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjgyNzUzXSxcbiAgICAgICAgXCI4MVwiOiBbMC4wMzc4MSwgMC42OTE0MSwgMCwgMCwgMC44MjY5OV0sXG4gICAgICAgIFwiODJcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuODI4MDddLFxuICAgICAgICBcIjgzXCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjgyODYxXSxcbiAgICAgICAgXCI4NFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42Njg5OV0sXG4gICAgICAgIFwiODVcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNjQ1NzZdLFxuICAgICAgICBcIjg2XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjgzMTMxXSxcbiAgICAgICAgXCI4N1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMS4wNDYwMl0sXG4gICAgICAgIFwiODhcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNzE5MjJdLFxuICAgICAgICBcIjg5XCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjgzMjkzXSxcbiAgICAgICAgXCI5MFwiOiBbMC4xMjYwNCwgMC42OTE0MSwgMCwgMCwgMC42MDIwMV0sXG4gICAgICAgIFwiOTFcIjogWzAuMjQ5ODIsIDAuNzQ5NDcsIDAsIDAsIDAuMjc3NjRdLFxuICAgICAgICBcIjkzXCI6IFswLjI0OTgyLCAwLjc0OTQ3LCAwLCAwLCAwLjI3NzY0XSxcbiAgICAgICAgXCI5NFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC40OTk2NV0sXG4gICAgICAgIFwiOTdcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAwNDZdLFxuICAgICAgICBcIjk4XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjUxMzE1XSxcbiAgICAgICAgXCI5OVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC4zODk0Nl0sXG4gICAgICAgIFwiMTAwXCI6IFswLCAwLjYyMTE5LCAwLCAwLCAwLjQ5ODU3XSxcbiAgICAgICAgXCIxMDFcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNDAwNTNdLFxuICAgICAgICBcIjEwMlwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC4zMjYyNl0sXG4gICAgICAgIFwiMTAzXCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjUwMzddLFxuICAgICAgICBcIjEwNFwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC41MjEyNl0sXG4gICAgICAgIFwiMTA1XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjI3ODk5XSxcbiAgICAgICAgXCIxMDZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjgwODhdLFxuICAgICAgICBcIjEwN1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4zODk0Nl0sXG4gICAgICAgIFwiMTA4XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjI3OTUzXSxcbiAgICAgICAgXCIxMDlcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNzY2NzZdLFxuICAgICAgICBcIjExMFwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC41MjY2Nl0sXG4gICAgICAgIFwiMTExXCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjQ4ODg1XSxcbiAgICAgICAgXCIxMTJcIjogWzAuMTg5MDYsIDAuNTIzOTYsIDAsIDAsIDAuNTAwNDZdLFxuICAgICAgICBcIjExM1wiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC40ODkxMl0sXG4gICAgICAgIFwiMTE0XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjM4OTE5XSxcbiAgICAgICAgXCIxMTVcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNDQyNjZdLFxuICAgICAgICBcIjExNlwiOiBbMCwgMC42MjExOSwgMCwgMCwgMC4zMzMwMV0sXG4gICAgICAgIFwiMTE3XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjUxNzJdLFxuICAgICAgICBcIjExOFwiOiBbMCwgMC41MjM5NiwgMCwgMCwgMC41MTE4XSxcbiAgICAgICAgXCIxMTlcIjogWzAsIDAuNTIzOTYsIDAsIDAsIDAuNzczNTFdLFxuICAgICAgICBcIjEyMFwiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC4zODg2NV0sXG4gICAgICAgIFwiMTIxXCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjQ5ODg0XSxcbiAgICAgICAgXCIxMjJcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuMzkwNTRdLFxuICAgICAgICBcIjgyMTZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjE0NzFdLFxuICAgICAgICBcIjgyMTdcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjE0NzFdLFxuICAgICAgICBcIjU4MTEyXCI6IFswLCAwLjYyMTE5LCAwLCAwLCAwLjQ5NzQ5XSxcbiAgICAgICAgXCI1ODExM1wiOiBbMCwgMC42MjExOSwgMCwgMCwgMC40OTgzXSxcbiAgICAgICAgXCI1ODExNFwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC4zMzMyOF0sXG4gICAgICAgIFwiNTgxMTVcIjogWzAuMTg5MDYsIDAuNjkxNDEsIDAsIDAsIDAuMzI5MjNdLFxuICAgICAgICBcIjU4MTE2XCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjUwMzQzXSxcbiAgICAgICAgXCI1ODExN1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4zMzMwMV0sXG4gICAgICAgIFwiNTgxMThcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuMzM0MDldLFxuICAgICAgICBcIjU4MTE5XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjUwMDczXVxuICAgIH0sXG4gICAgXCJNYWluLUJvbGRcIjoge1xuICAgICAgICBcIjMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjM1XSxcbiAgICAgICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MDI3OF0sXG4gICAgICAgIFwiMzVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuOTU4MzNdLFxuICAgICAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuOTU4MzNdLFxuICAgICAgICBcIjM4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCIzOVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgICAgICBcIjQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQ0NzIyXSxcbiAgICAgICAgXCI0MlwiOiBbMCwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjQzXCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI0NFwiOiBbMC4xOTQ0NCwgMC4xNTU1NiwgMCwgMCwgMC4zMTk0NF0sXG4gICAgICAgIFwiNDVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzgzMzNdLFxuICAgICAgICBcIjQ2XCI6IFswLCAwLjE1NTU2LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICAgICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjQ4XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiNDlcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICAgICAgXCI1MFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjUxXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiNTJcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICAgICAgXCI1M1wiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjU0XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiNTVcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICAgICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjU3XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiNThcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgICAgICBcIjU5XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICAgICAgXCI2MFwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgICAgIFwiNjFcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI2MlwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTQzMDVdLFxuICAgICAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI2NVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44Njk0NF0sXG4gICAgICAgIFwiNjZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODE4MDVdLFxuICAgICAgICBcIjY3XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgzMDU1XSxcbiAgICAgICAgXCI2OFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44ODE5NF0sXG4gICAgICAgIFwiNjlcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzU1NTVdLFxuICAgICAgICBcIjcwXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjcyMzYxXSxcbiAgICAgICAgXCI3MVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45MDQxNl0sXG4gICAgICAgIFwiNzJcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOV0sXG4gICAgICAgIFwiNzNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNDM2MTFdLFxuICAgICAgICBcIjc0XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjU5NDQ0XSxcbiAgICAgICAgXCI3NVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45MDEzOF0sXG4gICAgICAgIFwiNzZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjkxNjZdLFxuICAgICAgICBcIjc3XCI6IFswLCAwLjY4NjExLCAwLCAwLCAxLjA5MTY2XSxcbiAgICAgICAgXCI3OFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45XSxcbiAgICAgICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44NjM4OF0sXG4gICAgICAgIFwiODBcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzg2MTFdLFxuICAgICAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4NjExLCAwLCAwLCAwLjg2Mzg4XSxcbiAgICAgICAgXCI4MlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44NjI1XSxcbiAgICAgICAgXCI4M1wiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgICAgIFwiODRcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOF0sXG4gICAgICAgIFwiODVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODg0NzJdLFxuICAgICAgICBcIjg2XCI6IFswLCAwLjY4NjExLCAwLjAxNTk3LCAwLCAwLjg2OTQ0XSxcbiAgICAgICAgXCI4N1wiOiBbMCwgMC42ODYxMSwgMC4wMTU5NywgMCwgMS4xODg4OF0sXG4gICAgICAgIFwiODhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODY5NDRdLFxuICAgICAgICBcIjg5XCI6IFswLCAwLjY4NjExLCAwLjAyODc1LCAwLCAwLjg2OTQ0XSxcbiAgICAgICAgXCI5MFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC43MDI3N10sXG4gICAgICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzE5NDRdLFxuICAgICAgICBcIjkyXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzE5NDRdLFxuICAgICAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiOTVcIjogWzAuMzEsIDAuMTM0NDQsIDAuMDMxOTQsIDAsIDAuNTc1XSxcbiAgICAgICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41NTkwMl0sXG4gICAgICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgICAgICBcIjk5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgICAgICBcIjEwMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MjcwOF0sXG4gICAgICAgIFwiMTAyXCI6IFswLCAwLjY5NDQ0LCAwLjEwOTAzLCAwLCAwLjM1MTM5XSxcbiAgICAgICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDE1OTcsIDAsIDAuNTc1XSxcbiAgICAgICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgICAgICBcIjEwNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjM1MTM5XSxcbiAgICAgICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjA2OTRdLFxuICAgICAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjk1ODMzXSxcbiAgICAgICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgICAgICBcIjExMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjYwNjk0XSxcbiAgICAgICAgXCIxMTRcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDczNjFdLFxuICAgICAgICBcIjExNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40NTM2MV0sXG4gICAgICAgIFwiMTE2XCI6IFswLCAwLjYzNDkyLCAwLCAwLCAwLjQ0NzIyXSxcbiAgICAgICAgXCIxMTdcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgICAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4wMTU5NywgMCwgMC42MDY5NF0sXG4gICAgICAgIFwiMTE5XCI6IFswLCAwLjQ0NDQ0LCAwLjAxNTk3LCAwLCAwLjgzMDU1XSxcbiAgICAgICAgXCIxMjBcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjA2OTRdLFxuICAgICAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMTU5NywgMCwgMC42MDY5NF0sXG4gICAgICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCIxMjNcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICAgICAgXCIxMjRcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzE5NDRdLFxuICAgICAgICBcIjEyNVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjEyNlwiOiBbMC4zNSwgMC4zNDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjE2OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjE3MlwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC43NjY2Nl0sXG4gICAgICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg2OTQ0XSxcbiAgICAgICAgXCIxNzdcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjE5OFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMS4wNDE2Nl0sXG4gICAgICAgIFwiMjE1XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCIyMTZcIjogWzAuMDQ4NjEsIDAuNzM0NzIsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjIyM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41OTcyMl0sXG4gICAgICAgIFwiMjMwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjgzMDU1XSxcbiAgICAgICAgXCIyNDdcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjI0OFwiOiBbMC4wOTcyMiwgMC41NDE2NywgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjMwNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgICAgIFwiMzM4XCI6IFswLCAwLjY4NjExLCAwLCAwLCAxLjE2OTQ0XSxcbiAgICAgICAgXCIzMzlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC4zNTEzOV0sXG4gICAgICAgIFwiNzEwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiNzExXCI6IFswLCAwLjYzMTk0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiNzEzXCI6IFswLCAwLjU5NjExLCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiNzE0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiNzE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiNzI5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICAgICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODY5NDRdLFxuICAgICAgICBcIjczMlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjgyNFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMF0sXG4gICAgICAgIFwiOTE1XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjY5MTY2XSxcbiAgICAgICAgXCI5MTZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOTU4MzNdLFxuICAgICAgICBcIjkyMFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44OTQ0NF0sXG4gICAgICAgIFwiOTIzXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgwNTU1XSxcbiAgICAgICAgXCI5MjZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjkyOFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45XSxcbiAgICAgICAgXCI5MzFcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODMwNTVdLFxuICAgICAgICBcIjkzM1wiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44OTQ0NF0sXG4gICAgICAgIFwiOTM0XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgzMDU1XSxcbiAgICAgICAgXCI5MzZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjkzN1wiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44MzA1NV0sXG4gICAgICAgIFwiODIxMVwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMC41NzVdLFxuICAgICAgICBcIjgyMTJcIjogWzAsIDAuNDQ0NDQsIDAuMDMxOTQsIDAsIDEuMTQ5OTldLFxuICAgICAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgICAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgICAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjAyNzhdLFxuICAgICAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjAyNzhdLFxuICAgICAgICBcIjgyMjRcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjgyMjVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjgyNDJcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuMzQ0NDRdLFxuICAgICAgICBcIjg0MDdcIjogWzAsIDAuNzI0NDQsIDAuMTU0ODYsIDAsIDAuNTc1XSxcbiAgICAgICAgXCI4NDYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NzU5XSxcbiAgICAgICAgXCI4NDY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMDU1XSxcbiAgICAgICAgXCI4NDY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MzYxXSxcbiAgICAgICAgXCI4NDcyXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjc0MDI3XSxcbiAgICAgICAgXCI4NDc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMDU1XSxcbiAgICAgICAgXCI4NTAxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICAgICAgXCI4NTkyXCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgICAgIFwiODU5M1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjg1OTRcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICAgICAgXCI4NTk1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiODU5NlwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgICAgICBcIjg1OTdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICAgICAgXCI4NTk4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICAgICAgXCI4NTk5XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICAgICAgXCI4NjAwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICAgICAgXCI4NjAxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICAgICAgXCI4NjM2XCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgICAgIFwiODYzN1wiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgICAgICBcIjg2NDBcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICAgICAgXCI4NjQxXCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgICAgIFwiODY1NlwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgICAgICBcIjg2NTdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNzAyNzddLFxuICAgICAgICBcIjg2NThcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICAgICAgXCI4NjU5XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICAgICAgXCI4NjYwXCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgICAgIFwiODY2MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC43MDI3N10sXG4gICAgICAgIFwiODcwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgICAgIFwiODcwNlwiOiBbMCwgMC42OTQ0NCwgMC4wNjM4OSwgMCwgMC42Mjg0N10sXG4gICAgICAgIFwiODcwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgICAgIFwiODcwOVwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjg3MTFcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOTU4MzNdLFxuICAgICAgICBcIjg3MTJcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjg3MTVcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjg3MjJcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjg3MjNcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjg3MjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICAgICAgXCI4NzI2XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiODcyN1wiOiBbLTAuMDI3NzgsIDAuNDcyMjIsIDAsIDAsIDAuNTc1XSxcbiAgICAgICAgXCI4NzI4XCI6IFstMC4wMjYzOSwgMC40NzM2MSwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjg3MjlcIjogWy0wLjAyNjM5LCAwLjQ3MzYxLCAwLCAwLCAwLjU3NV0sXG4gICAgICAgIFwiODczMFwiOiBbMC4xOCwgMC44MiwgMCwgMCwgMC45NTgzM10sXG4gICAgICAgIFwiODczM1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgICAgIFwiODczNFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMS4xNDk5OV0sXG4gICAgICAgIFwiODczNlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiODczOVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zMTk0NF0sXG4gICAgICAgIFwiODc0MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjg3NDNcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjg3NDRcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjg3NDVcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjg3NDZcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjg3NDdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTI3NzgsIDAsIDAuNTY4NzVdLFxuICAgICAgICBcIjg3NjRcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4NzY4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICAgICAgXCI4NzcxXCI6IFswLjAwMjIyLCAwLjUwMjIyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4Nzc2XCI6IFswLjAyNDQ0LCAwLjUyNDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4NzgxXCI6IFswLjAwMjIyLCAwLjUwMjIyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODAxXCI6IFswLjAwMjIyLCAwLjUwMjIyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODA0XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODA1XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODEwXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAxLjE0OTk5XSxcbiAgICAgICAgXCI4ODExXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAxLjE0OTk5XSxcbiAgICAgICAgXCI4ODI2XCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODI3XCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODM0XCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODM1XCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODM4XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODM5XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICAgICAgXCI4ODQ5XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODUwXCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODUxXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICAgICAgXCI4ODUyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICAgICAgXCI4ODUzXCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODU0XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODU1XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODU2XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODU3XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODY2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICAgICAgXCI4ODY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICAgICAgXCI4ODY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4ODY5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICAgICAgXCI4OTAwXCI6IFstMC4wMjYzOSwgMC40NzM2MSwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjg5MDFcIjogWy0wLjAyNjM5LCAwLjQ3MzYxLCAwLCAwLCAwLjMxOTQ0XSxcbiAgICAgICAgXCI4OTAyXCI6IFstMC4wMjc3OCwgMC40NzIyMiwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjg5NjhcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjg5NjlcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjg5NzBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjg5NzFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjg5OTRcIjogWy0wLjEzODg5LCAwLjM2MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICAgICAgXCI4OTk1XCI6IFstMC4xMzg4OSwgMC4zNjExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgICAgIFwiOTY1MVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4wMjIyMl0sXG4gICAgICAgIFwiOTY1N1wiOiBbLTAuMDI3NzgsIDAuNDcyMjIsIDAsIDAsIDAuNTc1XSxcbiAgICAgICAgXCI5NjYxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjAyMjIyXSxcbiAgICAgICAgXCI5NjY3XCI6IFstMC4wMjc3OCwgMC40NzIyMiwgMCwgMCwgMC41NzVdLFxuICAgICAgICBcIjk3MTFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMTQ5OTldLFxuICAgICAgICBcIjk4MjRcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjk4MjVcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjk4MjZcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjk4MjdcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjk4MzdcIjogWzAsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgICAgICBcIjk4MzhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNDQ3MjJdLFxuICAgICAgICBcIjk4MzlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNDQ3MjJdLFxuICAgICAgICBcIjEwMjE2XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQ0NzIyXSxcbiAgICAgICAgXCIxMDIxN1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDcyMl0sXG4gICAgICAgIFwiMTA4MTVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOV0sXG4gICAgICAgIFwiMTA5MjdcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgICAgICBcIjEwOTI4XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XVxuICAgIH0sXG4gICAgXCJNYWluLUJvbGRJdGFsaWNcIjoge1xuICAgICAgICBcIjMzXCI6IFswLCAwLjY5NDQ0LCAwLjExNDE3LCAwLCAwLjM4NjExXSxcbiAgICAgICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMC4wNzkzOSwgMCwgMC42MjA1NV0sXG4gICAgICAgIFwiMzVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDY4MzMsIDAsIDAuOTQ0NDRdLFxuICAgICAgICBcIjM3XCI6IFswLjA1NTU2LCAwLjc1LCAwLjEyODYxLCAwLCAwLjk0NDQ0XSxcbiAgICAgICAgXCIzOFwiOiBbMCwgMC42OTQ0NCwgMC4wODUyOCwgMCwgMC44ODU1NV0sXG4gICAgICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAuMTI5NDUsIDAsIDAuMzU1NTVdLFxuICAgICAgICBcIjQwXCI6IFswLjI1LCAwLjc1LCAwLjE1ODA2LCAwLCAwLjQ3MzMzXSxcbiAgICAgICAgXCI0MVwiOiBbMC4yNSwgMC43NSwgMC4wMzMwNiwgMCwgMC40NzMzM10sXG4gICAgICAgIFwiNDJcIjogWzAsIDAuNzUsIDAuMTQzMzMsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjQzXCI6IFswLjEwMzMzLCAwLjYwMzMzLCAwLjAzMzA2LCAwLCAwLjg4NTU1XSxcbiAgICAgICAgXCI0NFwiOiBbMC4xOTQ0NCwgMC4xNDcyMiwgMCwgMCwgMC4zNTU1NV0sXG4gICAgICAgIFwiNDVcIjogWzAsIDAuNDQ0NDQsIDAuMDI2MTEsIDAsIDAuNDE0NDRdLFxuICAgICAgICBcIjQ2XCI6IFswLCAwLjE0NzIyLCAwLCAwLCAwLjM1NTU1XSxcbiAgICAgICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMC4xNTgwNiwgMCwgMC41OTExMV0sXG4gICAgICAgIFwiNDhcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjQ5XCI6IFswLCAwLjY0NDQ0LCAwLjEzMTY3LCAwLCAwLjU5MTExXSxcbiAgICAgICAgXCI1MFwiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgICAgIFwiNTFcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjUyXCI6IFswLjE5NDQ0LCAwLjY0NDQ0LCAwLjEzMTY3LCAwLCAwLjU5MTExXSxcbiAgICAgICAgXCI1M1wiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgICAgIFwiNTRcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjU1XCI6IFswLjE5NDQ0LCAwLjY0NDQ0LCAwLjEzMTY3LCAwLCAwLjU5MTExXSxcbiAgICAgICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgICAgIFwiNTdcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjU4XCI6IFswLCAwLjQ0NDQ0LCAwLjA2Njk1LCAwLCAwLjM1NTU1XSxcbiAgICAgICAgXCI1OVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wNjY5NSwgMCwgMC4zNTU1NV0sXG4gICAgICAgIFwiNjFcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLjA2ODMzLCAwLCAwLjg4NTU1XSxcbiAgICAgICAgXCI2M1wiOiBbMCwgMC42OTQ0NCwgMC4xMTQ3MiwgMCwgMC41OTExMV0sXG4gICAgICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAuMDkyMDgsIDAsIDAuODg1NTVdLFxuICAgICAgICBcIjY1XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg2NTU1XSxcbiAgICAgICAgXCI2NlwiOiBbMCwgMC42ODYxMSwgMC4wOTkyLCAwLCAwLjgxNjY2XSxcbiAgICAgICAgXCI2N1wiOiBbMCwgMC42ODYxMSwgMC4xNDIwOCwgMCwgMC44MjY2Nl0sXG4gICAgICAgIFwiNjhcIjogWzAsIDAuNjg2MTEsIDAuMDkwNjIsIDAsIDAuODc1NTVdLFxuICAgICAgICBcIjY5XCI6IFswLCAwLjY4NjExLCAwLjExNDMxLCAwLCAwLjc1NjY2XSxcbiAgICAgICAgXCI3MFwiOiBbMCwgMC42ODYxMSwgMC4xMjkwMywgMCwgMC43MjcyMl0sXG4gICAgICAgIFwiNzFcIjogWzAsIDAuNjg2MTEsIDAuMDczNDcsIDAsIDAuODk1MjddLFxuICAgICAgICBcIjcyXCI6IFswLCAwLjY4NjExLCAwLjE3MjA4LCAwLCAwLjg5NjFdLFxuICAgICAgICBcIjczXCI6IFswLCAwLjY4NjExLCAwLjE1NjgxLCAwLCAwLjQ3MTY2XSxcbiAgICAgICAgXCI3NFwiOiBbMCwgMC42ODYxMSwgMC4xNDUsIDAsIDAuNjEwNTVdLFxuICAgICAgICBcIjc1XCI6IFswLCAwLjY4NjExLCAwLjE0MjA4LCAwLCAwLjg5NDk5XSxcbiAgICAgICAgXCI3NlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC42OTc3N10sXG4gICAgICAgIFwiNzdcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDEuMDcyNzddLFxuICAgICAgICBcIjc4XCI6IFswLCAwLjY4NjExLCAwLjE3MjA4LCAwLCAwLjg5NjFdLFxuICAgICAgICBcIjc5XCI6IFswLCAwLjY4NjExLCAwLjA5MDYyLCAwLCAwLjg1NDk5XSxcbiAgICAgICAgXCI4MFwiOiBbMCwgMC42ODYxMSwgMC4wOTkyLCAwLCAwLjc4NzIxXSxcbiAgICAgICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODYxMSwgMC4wOTA2MiwgMCwgMC44NTQ5OV0sXG4gICAgICAgIFwiODJcIjogWzAsIDAuNjg2MTEsIDAuMDI1NTksIDAsIDAuODU5NDRdLFxuICAgICAgICBcIjgzXCI6IFswLCAwLjY4NjExLCAwLjExMjY0LCAwLCAwLjY0OTk5XSxcbiAgICAgICAgXCI4NFwiOiBbMCwgMC42ODYxMSwgMC4xMjkwMywgMCwgMC43OTYxXSxcbiAgICAgICAgXCI4NVwiOiBbMCwgMC42ODYxMSwgMC4xNzIwOCwgMCwgMC44ODA4M10sXG4gICAgICAgIFwiODZcIjogWzAsIDAuNjg2MTEsIDAuMTg2MjUsIDAsIDAuODY1NTVdLFxuICAgICAgICBcIjg3XCI6IFswLCAwLjY4NjExLCAwLjE4NjI1LCAwLCAxLjE1OTk5XSxcbiAgICAgICAgXCI4OFwiOiBbMCwgMC42ODYxMSwgMC4xNTY4MSwgMCwgMC44NjU1NV0sXG4gICAgICAgIFwiODlcIjogWzAsIDAuNjg2MTEsIDAuMTk4MDMsIDAsIDAuODY1NTVdLFxuICAgICAgICBcIjkwXCI6IFswLCAwLjY4NjExLCAwLjE0MjA4LCAwLCAwLjcwODg4XSxcbiAgICAgICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMC4xODc1LCAwLCAwLjM1NjExXSxcbiAgICAgICAgXCI5M1wiOiBbMC4yNSwgMC43NSwgMC4wOTk3MiwgMCwgMC4zNTYxMV0sXG4gICAgICAgIFwiOTRcIjogWzAsIDAuNjk0NDQsIDAuMDY3MDksIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjk1XCI6IFswLjMxLCAwLjEzNDQ0LCAwLjA5ODExLCAwLCAwLjU5MTExXSxcbiAgICAgICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMC4wOTQyNiwgMCwgMC41OTExMV0sXG4gICAgICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAuMDc4NjEsIDAsIDAuNTMyMjJdLFxuICAgICAgICBcIjk5XCI6IFswLCAwLjQ0NDQ0LCAwLjA1MjIyLCAwLCAwLjUzMjIyXSxcbiAgICAgICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAuMTA4NjEsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjEwMVwiOiBbMCwgMC40NDQ0NCwgMC4wODUsIDAsIDAuNTMyMjJdLFxuICAgICAgICBcIjEwMlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4yMTc3OCwgMCwgMC40XSxcbiAgICAgICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMTA1LCAwLCAwLjUzMjIyXSxcbiAgICAgICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAuMDk0MjYsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjEwNVwiOiBbMCwgMC42OTMyNiwgMC4xMTM4NywgMCwgMC4zNTU1NV0sXG4gICAgICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY5MzI2LCAwLjE2NzIsIDAsIDAuMzU1NTVdLFxuICAgICAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4xMTExMSwgMCwgMC41MzIyMl0sXG4gICAgICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjEwODYxLCAwLCAwLjI5NjY2XSxcbiAgICAgICAgXCIxMDlcIjogWzAsIDAuNDQ0NDQsIDAuMDk0MjYsIDAsIDAuOTQ0NDRdLFxuICAgICAgICBcIjExMFwiOiBbMCwgMC40NDQ0NCwgMC4wOTQyNiwgMCwgMC42NDk5OV0sXG4gICAgICAgIFwiMTExXCI6IFswLCAwLjQ0NDQ0LCAwLjA3ODYxLCAwLCAwLjU5MTExXSxcbiAgICAgICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDc4NjEsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjExM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDUsIDAsIDAuNTMyMjJdLFxuICAgICAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4xMTExMSwgMCwgMC41MDE2N10sXG4gICAgICAgIFwiMTE1XCI6IFswLCAwLjQ0NDQ0LCAwLjA4MTY3LCAwLCAwLjQ4Njk0XSxcbiAgICAgICAgXCIxMTZcIjogWzAsIDAuNjM0OTIsIDAuMDk2MzksIDAsIDAuMzg1XSxcbiAgICAgICAgXCIxMTdcIjogWzAsIDAuNDQ0NDQsIDAuMDk0MjYsIDAsIDAuNjIwNTVdLFxuICAgICAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4xMTExMSwgMCwgMC41MzIyMl0sXG4gICAgICAgIFwiMTE5XCI6IFswLCAwLjQ0NDQ0LCAwLjExMTExLCAwLCAwLjc2Nzc3XSxcbiAgICAgICAgXCIxMjBcIjogWzAsIDAuNDQ0NDQsIDAuMTI1ODMsIDAsIDAuNTYwNTVdLFxuICAgICAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDUsIDAsIDAuNTYxNjZdLFxuICAgICAgICBcIjEyMlwiOiBbMCwgMC40NDQ0NCwgMC4xMzg4OSwgMCwgMC40OTA1NV0sXG4gICAgICAgIFwiMTI2XCI6IFswLjM1LCAwLjM0NDQ0LCAwLjExNDcyLCAwLCAwLjU5MTExXSxcbiAgICAgICAgXCIxNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODY4NTNdLFxuICAgICAgICBcIjE2OFwiOiBbMCwgMC42OTQ0NCwgMC4xMTQ3MywgMCwgMC41OTExMV0sXG4gICAgICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjk0ODg4XSxcbiAgICAgICAgXCIxOThcIjogWzAsIDAuNjg2MTEsIDAuMTE0MzEsIDAsIDEuMDIyNzddLFxuICAgICAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzQ3MiwgMC4wOTA2MiwgMCwgMC44ODU1NV0sXG4gICAgICAgIFwiMjIzXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA5NzM2LCAwLCAwLjY2NV0sXG4gICAgICAgIFwiMjMwXCI6IFswLCAwLjQ0NDQ0LCAwLjA4NSwgMCwgMC44MjY2Nl0sXG4gICAgICAgIFwiMjQ4XCI6IFswLjA5NzIyLCAwLjU0MTY3LCAwLjA5NDU4LCAwLCAwLjU5MTExXSxcbiAgICAgICAgXCIzMDVcIjogWzAsIDAuNDQ0NDQsIDAuMDk0MjYsIDAsIDAuMzU1NTVdLFxuICAgICAgICBcIjMzOFwiOiBbMCwgMC42ODYxMSwgMC4xMTQzMSwgMCwgMS4xNDA1NF0sXG4gICAgICAgIFwiMzM5XCI6IFswLCAwLjQ0NDQ0LCAwLjA4NSwgMCwgMC44MjY2Nl0sXG4gICAgICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA0NjExLCAwLCAwLjM4NV0sXG4gICAgICAgIFwiNzEwXCI6IFswLCAwLjY5NDQ0LCAwLjA2NzA5LCAwLCAwLjU5MTExXSxcbiAgICAgICAgXCI3MTFcIjogWzAsIDAuNjMxOTQsIDAuMDgyNzEsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjcxM1wiOiBbMCwgMC41OTQ0NCwgMC4xMDQ0NCwgMCwgMC41OTExMV0sXG4gICAgICAgIFwiNzE0XCI6IFswLCAwLjY5NDQ0LCAwLjA4NTI4LCAwLCAwLjU5MTExXSxcbiAgICAgICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjcyOFwiOiBbMCwgMC42OTQ0NCwgMC4xMDMzMywgMCwgMC41OTExMV0sXG4gICAgICAgIFwiNzI5XCI6IFswLCAwLjY5NDQ0LCAwLjEyOTQ1LCAwLCAwLjM1NTU1XSxcbiAgICAgICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuOTQ4ODhdLFxuICAgICAgICBcIjczMlwiOiBbMCwgMC42OTQ0NCwgMC4xMTQ3MiwgMCwgMC41OTExMV0sXG4gICAgICAgIFwiNzMzXCI6IFswLCAwLjY5NDQ0LCAwLjExNDcyLCAwLCAwLjU5MTExXSxcbiAgICAgICAgXCI5MTVcIjogWzAsIDAuNjg2MTEsIDAuMTI5MDMsIDAsIDAuNjk3NzddLFxuICAgICAgICBcIjkxNlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45NDQ0NF0sXG4gICAgICAgIFwiOTIwXCI6IFswLCAwLjY4NjExLCAwLjA5MDYyLCAwLCAwLjg4NTU1XSxcbiAgICAgICAgXCI5MjNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODA2NjZdLFxuICAgICAgICBcIjkyNlwiOiBbMCwgMC42ODYxMSwgMC4xNTA5MiwgMCwgMC43Njc3N10sXG4gICAgICAgIFwiOTI4XCI6IFswLCAwLjY4NjExLCAwLjE3MjA4LCAwLCAwLjg5NjFdLFxuICAgICAgICBcIjkzMVwiOiBbMCwgMC42ODYxMSwgMC4xMTQzMSwgMCwgMC44MjY2Nl0sXG4gICAgICAgIFwiOTMzXCI6IFswLCAwLjY4NjExLCAwLjEwNzc4LCAwLCAwLjg4NTU1XSxcbiAgICAgICAgXCI5MzRcIjogWzAsIDAuNjg2MTEsIDAuMDU2MzIsIDAsIDAuODI2NjZdLFxuICAgICAgICBcIjkzNlwiOiBbMCwgMC42ODYxMSwgMC4xMDc3OCwgMCwgMC44ODU1NV0sXG4gICAgICAgIFwiOTM3XCI6IFswLCAwLjY4NjExLCAwLjA5OTIsIDAsIDAuODI2NjZdLFxuICAgICAgICBcIjgyMTFcIjogWzAsIDAuNDQ0NDQsIDAuMDk4MTEsIDAsIDAuNTkxMTFdLFxuICAgICAgICBcIjgyMTJcIjogWzAsIDAuNDQ0NDQsIDAuMDk4MTEsIDAsIDEuMTgyMjFdLFxuICAgICAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAuMTI5NDUsIDAsIDAuMzU1NTVdLFxuICAgICAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAuMTI5NDUsIDAsIDAuMzU1NTVdLFxuICAgICAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAuMTY3NzIsIDAsIDAuNjIwNTVdLFxuICAgICAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAuMDc5MzksIDAsIDAuNjIwNTVdXG4gICAgfSxcbiAgICBcIk1haW4tSXRhbGljXCI6IHtcbiAgICAgICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgICAgIFwiMzRcIjogWzAsIDAuNjk0NDQsIDAuMDY5NjEsIDAsIDAuNTE0NDRdLFxuICAgICAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA2NjE2LCAwLCAwLjgxNzc3XSxcbiAgICAgICAgXCIzN1wiOiBbMC4wNTU1NiwgMC43NSwgMC4xMzYzOSwgMCwgMC44MTc3N10sXG4gICAgICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAuMDk2OTQsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjM5XCI6IFswLCAwLjY5NDQ0LCAwLjEyNDE3LCAwLCAwLjMwNjY3XSxcbiAgICAgICAgXCI0MFwiOiBbMC4yNSwgMC43NSwgMC4xNjE5NCwgMCwgMC40MDg4OV0sXG4gICAgICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAuMDM2OTQsIDAsIDAuNDA4ODldLFxuICAgICAgICBcIjQyXCI6IFswLCAwLjc1LCAwLjE0OTE3LCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCI0M1wiOiBbMC4wNTY2NywgMC41NjE2NywgMC4wMzY5NCwgMCwgMC43NjY2Nl0sXG4gICAgICAgIFwiNDRcIjogWzAuMTk0NDQsIDAuMTA1NTYsIDAsIDAsIDAuMzA2NjddLFxuICAgICAgICBcIjQ1XCI6IFswLCAwLjQzMDU2LCAwLjAyODI2LCAwLCAwLjM1Nzc4XSxcbiAgICAgICAgXCI0NlwiOiBbMCwgMC4xMDU1NiwgMCwgMCwgMC4zMDY2N10sXG4gICAgICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAuMTYxOTQsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjQ4XCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCI0OVwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgICAgIFwiNTBcIjogWzAsIDAuNjQ0NDQsIDAuMTM1NTYsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjUxXCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCI1MlwiOiBbMC4xOTQ0NCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgICAgIFwiNTNcIjogWzAsIDAuNjQ0NDQsIDAuMTM1NTYsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjU0XCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCI1NVwiOiBbMC4xOTQ0NCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgICAgIFwiNTZcIjogWzAsIDAuNjQ0NDQsIDAuMTM1NTYsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjU3XCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCI1OFwiOiBbMCwgMC40MzA1NiwgMC4wNTgyLCAwLCAwLjMwNjY3XSxcbiAgICAgICAgXCI1OVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wNTgyLCAwLCAwLjMwNjY3XSxcbiAgICAgICAgXCI2MVwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAuMDY2MTYsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLjEyMjUsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLjA5NTk3LCAwLCAwLjc2NjY2XSxcbiAgICAgICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43NDMzM10sXG4gICAgICAgIFwiNjZcIjogWzAsIDAuNjgzMzMsIDAuMTAyNTcsIDAsIDAuNzAzODldLFxuICAgICAgICBcIjY3XCI6IFswLCAwLjY4MzMzLCAwLjE0NTI4LCAwLCAwLjcxNTU1XSxcbiAgICAgICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wOTQwMywgMCwgMC43NTVdLFxuICAgICAgICBcIjY5XCI6IFswLCAwLjY4MzMzLCAwLjEyMDI4LCAwLCAwLjY3ODMzXSxcbiAgICAgICAgXCI3MFwiOiBbMCwgMC42ODMzMywgMC4xMzMwNSwgMCwgMC42NTI3N10sXG4gICAgICAgIFwiNzFcIjogWzAsIDAuNjgzMzMsIDAuMDg3MjIsIDAsIDAuNzczNjFdLFxuICAgICAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjc0MzMzXSxcbiAgICAgICAgXCI3M1wiOiBbMCwgMC42ODMzMywgMC4xNTgwNiwgMCwgMC4zODU1NV0sXG4gICAgICAgIFwiNzRcIjogWzAsIDAuNjgzMzMsIDAuMTQwMjgsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3NVwiOiBbMCwgMC42ODMzMywgMC4xNDUyOCwgMCwgMC43Njg4OF0sXG4gICAgICAgIFwiNzZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjI3MjJdLFxuICAgICAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjg5NjY2XSxcbiAgICAgICAgXCI3OFwiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC43NDMzM10sXG4gICAgICAgIFwiNzlcIjogWzAsIDAuNjgzMzMsIDAuMDk0MDMsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLjEwMjU3LCAwLCAwLjY3ODMzXSxcbiAgICAgICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODMzMywgMC4wOTQwMywgMCwgMC43NjY2Nl0sXG4gICAgICAgIFwiODJcIjogWzAsIDAuNjgzMzMsIDAuMDM4NjgsIDAsIDAuNzI5NDRdLFxuICAgICAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLjExOTcyLCAwLCAwLjU2MjIyXSxcbiAgICAgICAgXCI4NFwiOiBbMCwgMC42ODMzMywgMC4xMzMwNSwgMCwgMC43MTU1NV0sXG4gICAgICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMTYzODksIDAsIDAuNzQzMzNdLFxuICAgICAgICBcIjg2XCI6IFswLCAwLjY4MzMzLCAwLjE4MzYxLCAwLCAwLjc0MzMzXSxcbiAgICAgICAgXCI4N1wiOiBbMCwgMC42ODMzMywgMC4xODM2MSwgMCwgMC45OTg4OF0sXG4gICAgICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMTU4MDYsIDAsIDAuNzQzMzNdLFxuICAgICAgICBcIjg5XCI6IFswLCAwLjY4MzMzLCAwLjE5MzgzLCAwLCAwLjc0MzMzXSxcbiAgICAgICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMC4xNDUyOCwgMCwgMC42MTMzM10sXG4gICAgICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAuMTg3NSwgMCwgMC4zMDY2N10sXG4gICAgICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAuMTA1MjgsIDAsIDAuMzA2NjddLFxuICAgICAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLjA2NjQ2LCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCI5NVwiOiBbMC4zMSwgMC4xMjA1NiwgMC4wOTIwOCwgMCwgMC41MTExMV0sXG4gICAgICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAuMDc2NzEsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLjA2MzEyLCAwLCAwLjQ2XSxcbiAgICAgICAgXCI5OVwiOiBbMCwgMC40MzA1NiwgMC4wNTY1MywgMCwgMC40Nl0sXG4gICAgICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLjEwMzMzLCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAuMDc1MTQsIDAsIDAuNDZdLFxuICAgICAgICBcIjEwMlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4yMTE5NCwgMCwgMC4zMDY2N10sXG4gICAgICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA4ODQ3LCAwLCAwLjQ2XSxcbiAgICAgICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAuMDc2NzEsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjEwNVwiOiBbMCwgMC42NTUzNiwgMC4xMDE5LCAwLCAwLjMwNjY3XSxcbiAgICAgICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjU1MzYsIDAuMTQ0NjcsIDAsIDAuMzA2NjddLFxuICAgICAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4xMDc2NCwgMCwgMC40Nl0sXG4gICAgICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjEwMzMzLCAwLCAwLjI1NTU1XSxcbiAgICAgICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAuMDc2NzEsIDAsIDAuODE3NzddLFxuICAgICAgICBcIjExMFwiOiBbMCwgMC40MzA1NiwgMC4wNzY3MSwgMCwgMC41NjIyMl0sXG4gICAgICAgIFwiMTExXCI6IFswLCAwLjQzMDU2LCAwLjA2MzEyLCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDYzMTIsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjExM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wODg0NywgMCwgMC40Nl0sXG4gICAgICAgIFwiMTE0XCI6IFswLCAwLjQzMDU2LCAwLjEwNzY0LCAwLCAwLjQyMTY2XSxcbiAgICAgICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAuMDgyMDgsIDAsIDAuNDA4ODldLFxuICAgICAgICBcIjExNlwiOiBbMCwgMC42MTUwOCwgMC4wOTQ4NiwgMCwgMC4zMzIyMl0sXG4gICAgICAgIFwiMTE3XCI6IFswLCAwLjQzMDU2LCAwLjA3NjcxLCAwLCAwLjUzNjY2XSxcbiAgICAgICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMTA3NjQsIDAsIDAuNDZdLFxuICAgICAgICBcIjExOVwiOiBbMCwgMC40MzA1NiwgMC4xMDc2NCwgMCwgMC42NjQ0NF0sXG4gICAgICAgIFwiMTIwXCI6IFswLCAwLjQzMDU2LCAwLjEyMDQyLCAwLCAwLjQ2Mzg5XSxcbiAgICAgICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDg4NDcsIDAsIDAuNDg1NTVdLFxuICAgICAgICBcIjEyMlwiOiBbMCwgMC40MzA1NiwgMC4xMjI5MiwgMCwgMC40MDg4OV0sXG4gICAgICAgIFwiMTI2XCI6IFswLjM1LCAwLjMxNzg2LCAwLjExNTg1LCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCIxNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzY5MDldLFxuICAgICAgICBcIjE2OFwiOiBbMCwgMC42Njc4NiwgMC4xMDQ3NCwgMCwgMC41MTExMV0sXG4gICAgICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMTI5XSxcbiAgICAgICAgXCIxOThcIjogWzAsIDAuNjgzMzMsIDAuMTIwMjgsIDAsIDAuODgyNzddLFxuICAgICAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzE5NCwgMC4wOTQwMywgMCwgMC43NjY2Nl0sXG4gICAgICAgIFwiMjIzXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjEwNTE0LCAwLCAwLjUzNjY2XSxcbiAgICAgICAgXCIyMzBcIjogWzAsIDAuNDMwNTYsIDAuMDc1MTQsIDAsIDAuNzE1NTVdLFxuICAgICAgICBcIjI0OFwiOiBbMC4wOTcyMiwgMC41Mjc3OCwgMC4wOTE5NCwgMCwgMC41MTExMV0sXG4gICAgICAgIFwiMzA1XCI6IFswLCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjMyMjQ2XSxcbiAgICAgICAgXCIzMzhcIjogWzAsIDAuNjgzMzMsIDAuMTIwMjgsIDAsIDAuOTg0OTldLFxuICAgICAgICBcIjMzOVwiOiBbMCwgMC40MzA1NiwgMC4wNzUxNCwgMCwgMC43MTU1NV0sXG4gICAgICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjM4NDAzXSxcbiAgICAgICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAuMDY2NDYsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjcxMVwiOiBbMCwgMC42Mjg0NywgMC4wODI5NSwgMCwgMC41MTExMV0sXG4gICAgICAgIFwiNzEzXCI6IFswLCAwLjU2MTY3LCAwLjEwMzMzLCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAuMDk2OTQsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjcxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTExMV0sXG4gICAgICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLjEwODA2LCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCI3MjlcIjogWzAsIDAuNjY3ODYsIDAuMTE3NTIsIDAsIDAuMzA2NjddLFxuICAgICAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzEyOV0sXG4gICAgICAgIFwiNzMyXCI6IFswLCAwLjY2Nzg2LCAwLjExNTg1LCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCI3MzNcIjogWzAsIDAuNjk0NDQsIDAuMTIyNSwgMCwgMC41MTExMV0sXG4gICAgICAgIFwiOTE1XCI6IFswLCAwLjY4MzMzLCAwLjEzMzA1LCAwLCAwLjYyNzIyXSxcbiAgICAgICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuODE3NzddLFxuICAgICAgICBcIjkyMFwiOiBbMCwgMC42ODMzMywgMC4wOTQwMywgMCwgMC43NjY2Nl0sXG4gICAgICAgIFwiOTIzXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY5MjIyXSxcbiAgICAgICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMTUyOTQsIDAsIDAuNjY0NDRdLFxuICAgICAgICBcIjkyOFwiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC43NDMzM10sXG4gICAgICAgIFwiOTMxXCI6IFswLCAwLjY4MzMzLCAwLjEyMDI4LCAwLCAwLjcxNTU1XSxcbiAgICAgICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTExMTEsIDAsIDAuNzY2NjZdLFxuICAgICAgICBcIjkzNFwiOiBbMCwgMC42ODMzMywgMC4wNTk4NiwgMCwgMC43MTU1NV0sXG4gICAgICAgIFwiOTM2XCI6IFswLCAwLjY4MzMzLCAwLjExMTExLCAwLCAwLjc2NjY2XSxcbiAgICAgICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMTAyNTcsIDAsIDAuNzE1NTVdLFxuICAgICAgICBcIjgyMTFcIjogWzAsIDAuNDMwNTYsIDAuMDkyMDgsIDAsIDAuNTExMTFdLFxuICAgICAgICBcIjgyMTJcIjogWzAsIDAuNDMwNTYsIDAuMDkyMDgsIDAsIDEuMDIyMjJdLFxuICAgICAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAuMTI0MTcsIDAsIDAuMzA2NjddLFxuICAgICAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAuMTI0MTcsIDAsIDAuMzA2NjddLFxuICAgICAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAuMTY4NSwgMCwgMC41MTQ0NF0sXG4gICAgICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMC4wNjk2MSwgMCwgMC41MTQ0NF0sXG4gICAgICAgIFwiODQ2M1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NDAyOF1cbiAgICB9LFxuICAgIFwiTWFpbi1SZWd1bGFyXCI6IHtcbiAgICAgICAgXCIzMlwiOiBbMCwgMCwgMCwgMCwgMF0sXG4gICAgICAgIFwiMzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICAgICAgXCIzNlwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCIzN1wiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC44MzMzNF0sXG4gICAgICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjM5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCI0MFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgICAgICBcIjQyXCI6IFswLCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjQzXCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI0NFwiOiBbMC4xOTQ0NCwgMC4xMDU1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgICAgIFwiNDVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuMzMzMzNdLFxuICAgICAgICBcIjQ2XCI6IFswLCAwLjEwNTU2LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI0OFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI0OVwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1MFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1MVwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1MlwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1M1wiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1NFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1NVwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1N1wiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI1OFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjYwXCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiNjFcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI2MlwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICAgICAgXCI2NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiNjVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgICAgICBcIjY2XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjcwODM0XSxcbiAgICAgICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiNjhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzYzODldLFxuICAgICAgICBcIjY5XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY4MDU2XSxcbiAgICAgICAgXCI3MFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42NTI3OF0sXG4gICAgICAgIFwiNzFcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzg0NzJdLFxuICAgICAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICAgICAgXCI3M1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC4zNjExMV0sXG4gICAgICAgIFwiNzRcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNTEzODldLFxuICAgICAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI3NlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42MjVdLFxuICAgICAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjkxNjY3XSxcbiAgICAgICAgXCI3OFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43NV0sXG4gICAgICAgIFwiNzlcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY4MDU2XSxcbiAgICAgICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODJcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzM2MTFdLFxuICAgICAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjU1NTU2XSxcbiAgICAgICAgXCI4NFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgICAgICBcIjg2XCI6IFswLCAwLjY4MzMzLCAwLjAxMzg5LCAwLCAwLjc1XSxcbiAgICAgICAgXCI4N1wiOiBbMCwgMC42ODMzMywgMC4wMTM4OSwgMCwgMS4wMjc3OF0sXG4gICAgICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgICAgICBcIjg5XCI6IFswLCAwLjY4MzMzLCAwLjAyNSwgMCwgMC43NV0sXG4gICAgICAgIFwiOTBcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjkxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCI5MlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI5M1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgICAgIFwiOTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiOTVcIjogWzAuMzEsIDAuMTIwNTYsIDAuMDI3NzgsIDAsIDAuNV0sXG4gICAgICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgICAgICBcIjk5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICAgICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgICAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC40NDQ0NV0sXG4gICAgICAgIFwiMTAyXCI6IFswLCAwLjY5NDQ0LCAwLjA3Nzc4LCAwLCAwLjMwNTU2XSxcbiAgICAgICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDEzODksIDAsIDAuNV0sXG4gICAgICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1NTU2XSxcbiAgICAgICAgXCIxMDVcIjogWzAsIDAuNjY3ODYsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjEwNlwiOiBbMC4xOTQ0NCwgMC42Njc4NiwgMCwgMCwgMC4zMDU1Nl0sXG4gICAgICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNzc4XSxcbiAgICAgICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjEwOVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC44MzMzNF0sXG4gICAgICAgIFwiMTEwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjU1NTU2XSxcbiAgICAgICAgXCIxMTFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiMTEyXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjU1NTU2XSxcbiAgICAgICAgXCIxMTNcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNTI3NzhdLFxuICAgICAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4zOTE2N10sXG4gICAgICAgIFwiMTE1XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjM5NDQ1XSxcbiAgICAgICAgXCIxMTZcIjogWzAsIDAuNjE1MDgsIDAsIDAsIDAuMzg4ODldLFxuICAgICAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgICAgIFwiMTE4XCI6IFswLCAwLjQzMDU2LCAwLjAxMzg5LCAwLCAwLjUyNzc4XSxcbiAgICAgICAgXCIxMTlcIjogWzAsIDAuNDMwNTYsIDAuMDEzODksIDAsIDAuNzIyMjJdLFxuICAgICAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41Mjc3OF0sXG4gICAgICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAxMzg5LCAwLCAwLjUyNzc4XSxcbiAgICAgICAgXCIxMjJcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNDQ0NDVdLFxuICAgICAgICBcIjEyM1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCIxMjRcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjEyNVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCIxMjZcIjogWzAuMzUsIDAuMzE3ODYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiMTYwXCI6IFswLCAwLCAwLCAwLCAwXSxcbiAgICAgICAgXCIxNjhcIjogWzAsIDAuNjY3ODYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiMTcyXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzVdLFxuICAgICAgICBcIjE3N1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiMTk4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjkwMjc4XSxcbiAgICAgICAgXCIyMTVcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzE5NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiMjIzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjIzMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiMjQ3XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTI3NzgsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiMzA1XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCIzMzhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDEuMDEzODldLFxuICAgICAgICBcIjMzOVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICAgICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNzExXCI6IFswLCAwLjYyODQ3LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjcxM1wiOiBbMCwgMC41Njc3OCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNzE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjcyOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI3MjlcIjogWzAsIDAuNjY3ODYsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NV0sXG4gICAgICAgIFwiNzMyXCI6IFswLCAwLjY2Nzg2LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4MjRcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDBdLFxuICAgICAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42MjVdLFxuICAgICAgICBcIjkxNlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC44MzMzNF0sXG4gICAgICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI5MjNcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjk0NDVdLFxuICAgICAgICBcIjkyNlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICAgICAgXCI5MzFcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzIyMjJdLFxuICAgICAgICBcIjkzM1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI5MzZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjkzN1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiODIxMVwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMCwgMC41XSxcbiAgICAgICAgXCI4MjEyXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAxLjBdLFxuICAgICAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4MjI0XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICAgICAgXCI4MjI1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICAgICAgXCI4MjMwXCI6IFswLCAwLjEyLCAwLCAwLCAxMDE1XSxcbiAgICAgICAgXCI4MjQyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjI3NV0sXG4gICAgICAgIFwiODQwN1wiOiBbMCwgMC43MTQ0NCwgMC4xNTM4MiwgMCwgMC41XSxcbiAgICAgICAgXCI4NDYzXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU0MDI4XSxcbiAgICAgICAgXCI4NDY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI4NDY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLjExMTExLCAwLjQxNjY3XSxcbiAgICAgICAgXCI4NDcyXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjExMTExLCAwLjYzNjQ2XSxcbiAgICAgICAgXCI4NDc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI4NTAxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICAgICAgXCI4NTkyXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NTkzXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjg1OTRcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg1OTVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiODU5NlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODU5N1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4NTk4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg1OTlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODYwMFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NjAxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg2MTRcIjogWzAuMDExLCAwLjUxMSwgMCwgMCwgODg5XSxcbiAgICAgICAgXCI4NjE3XCI6IFswLjAxMSwgMC41MTEsIDAsIDAsIDEwMTVdLFxuICAgICAgICBcIjg2MThcIjogWzAuMDExLCAwLjUxMSwgMCwgMCwgMTAxNV0sXG4gICAgICAgIFwiODYzNlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODYzN1wiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODY0MFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODY0MVwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODY1MlwiOiBbMC4wMTEsIDAuNjcxLCAwLCAwLCA4ODldLFxuICAgICAgICBcIjg2NTZcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg2NTdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjg2NThcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg2NTlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjg2NjBcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg2NjFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjg3MDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgICAgICBcIjg3MDZcIjogWzAsIDAuNjk0NDQsIDAuMDU1NTYsIDAuMDgzMzQsIDAuNTMwOV0sXG4gICAgICAgIFwiODcwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTU1Nl0sXG4gICAgICAgIFwiODcwOVwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4NzExXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjgzMzM0XSxcbiAgICAgICAgXCI4NzEyXCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiODcxNVwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjg3MjJcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3MjNcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3MjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiODcyNlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4NzI3XCI6IFstMC4wMzQ3MiwgMC40NjUyOCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4NzI4XCI6IFstMC4wNTU1NSwgMC40NDQ0NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4NzI5XCI6IFstMC4wNTU1NSwgMC40NDQ0NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4NzMwXCI6IFswLjIsIDAuOCwgMCwgMCwgMC44MzMzNF0sXG4gICAgICAgIFwiODczM1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODczNFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4NzM2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI4NzM5XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCI4NzQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjg3NDNcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjg3NDRcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjg3NDVcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjg3NDZcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjg3NDdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTExMTEsIDAsIDAuNDE2NjddLFxuICAgICAgICBcIjg3NjRcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4NzY4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCI4NzcxXCI6IFstMC4wMzYyNSwgMC40NjM3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODc3M1wiOiBbLTAuMDIyLCAwLjU4OSwgMCwgMCwgNjY3XSxcbiAgICAgICAgXCI4Nzc2XCI6IFstMC4wMTY4OCwgMC40ODMxMiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODc4MVwiOiBbLTAuMDM2MjUsIDAuNDYzNzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg3ODRcIjogWy0wLjEzMywgMC42NywgMCwgMCwgNjY2XSxcbiAgICAgICAgXCI4ODAwXCI6IFswLjIxNSwgMC43MTYsIDAsIDAsIDY2Nl0sXG4gICAgICAgIFwiODgwMVwiOiBbLTAuMDM2MjUsIDAuNDYzNzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4MDRcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4MDVcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4MTBcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg4MTFcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg4MjZcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODI3XCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiODgzNFwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjg4MzVcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODM4XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODM5XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4ODQ5XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODUwXCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODUxXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4ODUyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4ODUzXCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODU0XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODU1XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODU2XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODU3XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODY2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICAgICAgXCI4ODY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICAgICAgXCI4ODY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODY5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4ODcyXCI6IFswLjI0OSwgMC43NSwgMCwgMCwgNjkyXSxcbiAgICAgICAgXCI4OTAwXCI6IFstMC4wNTU1NSwgMC40NDQ0NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4OTAxXCI6IFstMC4wNTU1NSwgMC40NDQ0NSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgICAgIFwiODkwMlwiOiBbLTAuMDM0NzIsIDAuNDY1MjgsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiODkwNFwiOiBbMC4wMDUsIDAuNTA1LCAwLCAwLCA4NDddLFxuICAgICAgICBcIjg5NDJcIjogWzAuMDMsIDAuOSwgMCwgMCwgMTIxXSxcbiAgICAgICAgXCI4OTQzXCI6IFstMC4xOSwgMC4zMSwgMCwgMCwgMTAxNV0sXG4gICAgICAgIFwiODk0NVwiOiBbLTAuMSwgMC44MiwgMCwgMCwgMTAxNV0sXG4gICAgICAgIFwiODk2OFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgICAgIFwiODk2OVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgICAgIFwiODk3MFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgICAgIFwiODk3MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgICAgIFwiODk5NFwiOiBbLTAuMTQyMzYsIDAuMzU3NjQsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODk5NVwiOiBbLTAuMTQyMzYsIDAuMzU3NjQsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiOTEzNlwiOiBbMC4yNDQsIDAuNzQ0LCAwLCAwLCAzMDFdLFxuICAgICAgICBcIjkxMzdcIjogWzAuMjQ0LCAwLjc0NCwgMCwgMCwgMzAxXSxcbiAgICAgICAgXCI5NjUxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjg4ODg5XSxcbiAgICAgICAgXCI5NjU3XCI6IFstMC4wMzQ3MiwgMC40NjUyOCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI5NjYxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjg4ODg5XSxcbiAgICAgICAgXCI5NjY3XCI6IFstMC4wMzQ3MiwgMC40NjUyOCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI5NzExXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjk4MjRcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjk4MjVcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjk4MjZcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjk4MjdcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjk4MzdcIjogWzAsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgICAgICBcIjk4MzhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuMzg4ODldLFxuICAgICAgICBcIjk4MzlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuMzg4ODldLFxuICAgICAgICBcIjEwMjE2XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICAgICAgXCIxMDIxN1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgICAgIFwiMTAyMjJcIjogWzAuMjQ0LCAwLjc0NCwgMCwgMCwgMTg0XSxcbiAgICAgICAgXCIxMDIyM1wiOiBbMC4yNDQsIDAuNzQ0LCAwLCAwLCAxODRdLFxuICAgICAgICBcIjEwMjI5XCI6IFswLjAxMSwgMC41MTEsIDAsIDAsIDE0NzBdLFxuICAgICAgICBcIjEwMjMwXCI6IFswLjAxMSwgMC41MTEsIDAsIDAsIDE0NjldLFxuICAgICAgICBcIjEwMjMxXCI6IFswLjAxMSwgMC41MTEsIDAsIDAsIDE3NDhdLFxuICAgICAgICBcIjEwMjMyXCI6IFswLjAyNCwgMC41MjUsIDAsIDAsIDE0OTddLFxuICAgICAgICBcIjEwMjMzXCI6IFswLjAyNCwgMC41MjUsIDAsIDAsIDE1MjZdLFxuICAgICAgICBcIjEwMjM0XCI6IFswLjAyNCwgMC41MjUsIDAsIDAsIDE3NDZdLFxuICAgICAgICBcIjEwMjM2XCI6IFswLjAxMSwgMC41MTEsIDAsIDAsIDE0OThdLFxuICAgICAgICBcIjEwODE1XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICAgICAgXCIxMDkyN1wiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiMTA5MjhcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdXG4gICAgfSxcbiAgICBcIk1hdGgtQm9sZEl0YWxpY1wiOiB7XG4gICAgICAgIFwiNDdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDBdLFxuICAgICAgICBcIjY1XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg2OTQ0XSxcbiAgICAgICAgXCI2NlwiOiBbMCwgMC42ODYxMSwgMC4wNDgzNSwgMCwgMC44NjY0XSxcbiAgICAgICAgXCI2N1wiOiBbMCwgMC42ODYxMSwgMC4wNjk3OSwgMCwgMC44MTY5NF0sXG4gICAgICAgIFwiNjhcIjogWzAsIDAuNjg2MTEsIDAuMDMxOTQsIDAsIDAuOTM4MTJdLFxuICAgICAgICBcIjY5XCI6IFswLCAwLjY4NjExLCAwLjA1NDUxLCAwLCAwLjgxMDA3XSxcbiAgICAgICAgXCI3MFwiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42ODg4OV0sXG4gICAgICAgIFwiNzFcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODg2NzNdLFxuICAgICAgICBcIjcyXCI6IFswLCAwLjY4NjExLCAwLjA4MjI5LCAwLCAwLjk4MjI5XSxcbiAgICAgICAgXCI3M1wiOiBbMCwgMC42ODYxMSwgMC4wNzc3OCwgMCwgMC41MTExMV0sXG4gICAgICAgIFwiNzRcIjogWzAsIDAuNjg2MTEsIDAuMTAwNjksIDAsIDAuNjMxMjVdLFxuICAgICAgICBcIjc1XCI6IFswLCAwLjY4NjExLCAwLjA2OTc5LCAwLCAwLjk3MTE4XSxcbiAgICAgICAgXCI3NlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC43NTU1NV0sXG4gICAgICAgIFwiNzdcIjogWzAsIDAuNjg2MTEsIDAuMTE0MjQsIDAsIDEuMTQyMDFdLFxuICAgICAgICBcIjc4XCI6IFswLCAwLjY4NjExLCAwLjExNDI0LCAwLCAwLjk1MDM0XSxcbiAgICAgICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMC4wMzE5NCwgMCwgMC44MzY2Nl0sXG4gICAgICAgIFwiODBcIjogWzAsIDAuNjg2MTEsIDAuMTU5NzIsIDAsIDAuNzIzMDldLFxuICAgICAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4NjExLCAwLCAwLCAwLjg2ODYxXSxcbiAgICAgICAgXCI4MlwiOiBbMCwgMC42ODYxMSwgMC4wMDQyMSwgMCwgMC44NzIzNV0sXG4gICAgICAgIFwiODNcIjogWzAsIDAuNjg2MTEsIDAuMDUzODIsIDAsIDAuNjkyNzFdLFxuICAgICAgICBcIjg0XCI6IFswLCAwLjY4NjExLCAwLjE1OTcyLCAwLCAwLjYzNjYzXSxcbiAgICAgICAgXCI4NVwiOiBbMCwgMC42ODYxMSwgMC4xMTQyNCwgMCwgMC44MDAyN10sXG4gICAgICAgIFwiODZcIjogWzAsIDAuNjg2MTEsIDAuMjU1NTUsIDAsIDAuNjc3NzhdLFxuICAgICAgICBcIjg3XCI6IFswLCAwLjY4NjExLCAwLjE1OTcyLCAwLCAxLjA5MzA1XSxcbiAgICAgICAgXCI4OFwiOiBbMCwgMC42ODYxMSwgMC4wNzc3OCwgMCwgMC45NDcyMl0sXG4gICAgICAgIFwiODlcIjogWzAsIDAuNjg2MTEsIDAuMjU1NTUsIDAsIDAuNjc0NThdLFxuICAgICAgICBcIjkwXCI6IFswLCAwLjY4NjExLCAwLjA2OTc5LCAwLCAwLjc3MjU3XSxcbiAgICAgICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42MzI4N10sXG4gICAgICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTIwODNdLFxuICAgICAgICBcIjk5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUxMzQyXSxcbiAgICAgICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjA5NzJdLFxuICAgICAgICBcIjEwMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41NTM2MV0sXG4gICAgICAgIFwiMTAyXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjExMDQyLCAwLCAwLjU2ODA2XSxcbiAgICAgICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNTQ0OV0sXG4gICAgICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NzU5XSxcbiAgICAgICAgXCIxMDVcIjogWzAsIDAuNjkzMjYsIDAsIDAsIDAuNDA0OF0sXG4gICAgICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY5MzI2LCAwLjA2MjIsIDAsIDAuNDcwODNdLFxuICAgICAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4wMTg1MiwgMCwgMC42MDM3XSxcbiAgICAgICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAuMDA4OCwgMCwgMC4zNDgxNV0sXG4gICAgICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAxLjAzMjRdLFxuICAgICAgICBcIjExMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC43MTI5Nl0sXG4gICAgICAgIFwiMTExXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjU4NDcyXSxcbiAgICAgICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjAwOTJdLFxuICAgICAgICBcIjExM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC41NDIxM10sXG4gICAgICAgIFwiMTE0XCI6IFswLCAwLjQ0NDQ0LCAwLjAzMTk0LCAwLCAwLjUyODddLFxuICAgICAgICBcIjExNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MzEyNV0sXG4gICAgICAgIFwiMTE2XCI6IFswLCAwLjYzNDkyLCAwLCAwLCAwLjQxNTI4XSxcbiAgICAgICAgXCIxMTdcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjgxMDJdLFxuICAgICAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC41NjY2Nl0sXG4gICAgICAgIFwiMTE5XCI6IFswLCAwLjQ0NDQ0LCAwLjAyNzc4LCAwLCAwLjgzMTQ4XSxcbiAgICAgICAgXCIxMjBcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjU5MDNdLFxuICAgICAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC41OTAyOF0sXG4gICAgICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLjA0MjEzLCAwLCAwLjU1NTA5XSxcbiAgICAgICAgXCI5MTVcIjogWzAsIDAuNjg2MTEsIDAuMTU5NzIsIDAsIDAuNjU2OTRdLFxuICAgICAgICBcIjkxNlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45NTgzM10sXG4gICAgICAgIFwiOTIwXCI6IFswLCAwLjY4NjExLCAwLjAzMTk0LCAwLCAwLjg2NzIyXSxcbiAgICAgICAgXCI5MjNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODA1NTVdLFxuICAgICAgICBcIjkyNlwiOiBbMCwgMC42ODYxMSwgMC4wNzQ1OCwgMCwgMC44NDEyNV0sXG4gICAgICAgIFwiOTI4XCI6IFswLCAwLjY4NjExLCAwLjA4MjI5LCAwLCAwLjk4MjI5XSxcbiAgICAgICAgXCI5MzFcIjogWzAsIDAuNjg2MTEsIDAuMDU0NTEsIDAsIDAuODg1MDddLFxuICAgICAgICBcIjkzM1wiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42NzA4M10sXG4gICAgICAgIFwiOTM0XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjc2NjY2XSxcbiAgICAgICAgXCI5MzZcIjogWzAsIDAuNjg2MTEsIDAuMTE2NTMsIDAsIDAuNzE0MDJdLFxuICAgICAgICBcIjkzN1wiOiBbMCwgMC42ODYxMSwgMC4wNDgzNSwgMCwgMC44Nzg5XSxcbiAgICAgICAgXCI5NDVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNzYwNjRdLFxuICAgICAgICBcIjk0NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wMzQwMywgMCwgMC42NTk3Ml0sXG4gICAgICAgIFwiOTQ3XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA2Mzg5LCAwLCAwLjU5MDAzXSxcbiAgICAgICAgXCI5NDhcIjogWzAsIDAuNjk0NDQsIDAuMDM4MTksIDAsIDAuNTIyMjJdLFxuICAgICAgICBcIjk0OVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41Mjg4Ml0sXG4gICAgICAgIFwiOTUwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA2MjE1LCAwLCAwLjUwODMzXSxcbiAgICAgICAgXCI5NTFcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNl0sXG4gICAgICAgIFwiOTUyXCI6IFswLCAwLjY5NDQ0LCAwLjAzMTk0LCAwLCAwLjU2MThdLFxuICAgICAgICBcIjk1M1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40MTIwNF0sXG4gICAgICAgIFwiOTU0XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjY2NzU5XSxcbiAgICAgICAgXCI5NTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjcwODNdLFxuICAgICAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC43MDc4N10sXG4gICAgICAgIFwiOTU3XCI6IFswLCAwLjQ0NDQ0LCAwLjA2ODk4LCAwLCAwLjU3Njg1XSxcbiAgICAgICAgXCI5NThcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDMwMjEsIDAsIDAuNTA4MzNdLFxuICAgICAgICBcIjk1OVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41ODQ3Ml0sXG4gICAgICAgIFwiOTYwXCI6IFswLCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjY4MjQxXSxcbiAgICAgICAgXCI5NjFcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjExOF0sXG4gICAgICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQ0NDQ0LCAwLjA3OTE3LCAwLCAwLjQyMzYxXSxcbiAgICAgICAgXCI5NjNcIjogWzAsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNjg1ODhdLFxuICAgICAgICBcIjk2NFwiOiBbMCwgMC40NDQ0NCwgMC4xMzQ3MiwgMCwgMC41MjA4M10sXG4gICAgICAgIFwiOTY1XCI6IFswLCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjYzMDU1XSxcbiAgICAgICAgXCI5NjZcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNzQ3MjJdLFxuICAgICAgICBcIjk2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC43MTgwNV0sXG4gICAgICAgIFwiOTY4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjAzNzA0LCAwLCAwLjc1ODMzXSxcbiAgICAgICAgXCI5NjlcIjogWzAsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNzE3ODJdLFxuICAgICAgICBcIjk3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42OTE1NV0sXG4gICAgICAgIFwiOTgxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjcxMjVdLFxuICAgICAgICBcIjk4MlwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMC45NzVdLFxuICAgICAgICBcIjEwMDlcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjExOF0sXG4gICAgICAgIFwiMTAxM1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40ODMzM11cbiAgICB9LFxuICAgIFwiTWF0aC1JdGFsaWNcIjoge1xuICAgICAgICBcIjQ3XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwXSxcbiAgICAgICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xMzg4OSwgMC43NV0sXG4gICAgICAgIFwiNjZcIjogWzAsIDAuNjgzMzMsIDAuMDUwMTcsIDAuMDgzMzQsIDAuNzU4NTFdLFxuICAgICAgICBcIjY3XCI6IFswLCAwLjY4MzMzLCAwLjA3MTUzLCAwLjA4MzM0LCAwLjcxNDcyXSxcbiAgICAgICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wNTU1NiwgMC44Mjc5Ml0sXG4gICAgICAgIFwiNjlcIjogWzAsIDAuNjgzMzMsIDAuMDU3NjQsIDAuMDgzMzQsIDAuNzM4Ml0sXG4gICAgICAgIFwiNzBcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNjQzMDZdLFxuICAgICAgICBcIjcxXCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc4NjI1XSxcbiAgICAgICAgXCI3MlwiOiBbMCwgMC42ODMzMywgMC4wODEyNSwgMC4wNTU1NiwgMC44MzEyNV0sXG4gICAgICAgIFwiNzNcIjogWzAsIDAuNjgzMzMsIDAuMDc4NDcsIDAuMTExMTEsIDAuNDM5NThdLFxuICAgICAgICBcIjc0XCI6IFswLCAwLjY4MzMzLCAwLjA5NjE4LCAwLjE2NjY3LCAwLjU1NDUxXSxcbiAgICAgICAgXCI3NVwiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wNTU1NiwgMC44NDkzMV0sXG4gICAgICAgIFwiNzZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMDI3NzgsIDAuNjgwNTZdLFxuICAgICAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjk3MDE0XSxcbiAgICAgICAgXCI3OFwiOiBbMCwgMC42ODMzMywgMC4xMDkwMywgMC4wODMzNCwgMC44MDM0N10sXG4gICAgICAgIFwiNzlcIjogWzAsIDAuNjgzMzMsIDAuMDI3NzgsIDAuMDgzMzQsIDAuNzYyNzhdLFxuICAgICAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MjAxXSxcbiAgICAgICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODMzMywgMCwgMC4wODMzNCwgMC43OTA1Nl0sXG4gICAgICAgIFwiODJcIjogWzAsIDAuNjgzMzMsIDAuMDA3NzMsIDAuMDgzMzQsIDAuNzU5MjldLFxuICAgICAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjYxMzJdLFxuICAgICAgICBcIjg0XCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjU4NDM4XSxcbiAgICAgICAgXCI4NVwiOiBbMCwgMC42ODMzMywgMC4xMDkwMywgMC4wMjc3OCwgMC42ODI3OF0sXG4gICAgICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgzMzNdLFxuICAgICAgICBcIjg3XCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLCAwLjk0NDQ1XSxcbiAgICAgICAgXCI4OFwiOiBbMCwgMC42ODMzMywgMC4wNzg0NywgMC4wODMzNCwgMC44Mjg0N10sXG4gICAgICAgIFwiODlcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgwNTZdLFxuICAgICAgICBcIjkwXCI6IFswLCAwLjY4MzMzLCAwLjA3MTUzLCAwLjA4MzM0LCAwLjY4MjY0XSxcbiAgICAgICAgXCI5N1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41Mjg1OV0sXG4gICAgICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDI5MTddLFxuICAgICAgICBcIjk5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQzMjc2XSxcbiAgICAgICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAuMTY2NjcsIDAuNTIwNDldLFxuICAgICAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40NjU2M10sXG4gICAgICAgIFwiMTAyXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjEwNzY0LCAwLjE2NjY3LCAwLjQ4OTU5XSxcbiAgICAgICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNDc2OTddLFxuICAgICAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzYxNl0sXG4gICAgICAgIFwiMTA1XCI6IFswLCAwLjY1OTUyLCAwLCAwLCAwLjM0NDUxXSxcbiAgICAgICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjU5NTIsIDAuMDU3MjQsIDAsIDAuNDExODFdLFxuICAgICAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4wMzE0OCwgMCwgMC41MjA2XSxcbiAgICAgICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAuMDE5NjgsIDAuMDgzMzQsIDAuMjk4MzhdLFxuICAgICAgICBcIjEwOVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC44NzgwMV0sXG4gICAgICAgIFwiMTEwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjYwMDIzXSxcbiAgICAgICAgXCIxMTFcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDg0NzJdLFxuICAgICAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC41MDMxM10sXG4gICAgICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjA4MzM0LCAwLjQ0NjQxXSxcbiAgICAgICAgXCIxMTRcIjogWzAsIDAuNDMwNTYsIDAuMDI3NzgsIDAuMDU1NTYsIDAuNDUxMTZdLFxuICAgICAgICBcIjExNVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40Njg3NV0sXG4gICAgICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLCAwLjA4MzM0LCAwLjM2MTExXSxcbiAgICAgICAgXCIxMTdcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDI3NzgsIDAuNTcyNDZdLFxuICAgICAgICBcIjExOFwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wMjc3OCwgMC40ODQ3Ml0sXG4gICAgICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjAyNjkxLCAwLjA4MzM0LCAwLjcxNTkyXSxcbiAgICAgICAgXCIxMjBcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDI3NzgsIDAuNTcxNTNdLFxuICAgICAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wNTU1NiwgMC40OTAyOF0sXG4gICAgICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLjA0Mzk4LCAwLjA1NTU2LCAwLjQ2NTA1XSxcbiAgICAgICAgXCI5MTVcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNjE1MjhdLFxuICAgICAgICBcIjkxNlwiOiBbMCwgMC42ODMzMywgMCwgMC4xNjY2NywgMC44MzMzNF0sXG4gICAgICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICAgICAgXCI5MjNcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTY2NjcsIDAuNjk0NDVdLFxuICAgICAgICBcIjkyNlwiOiBbMCwgMC42ODMzMywgMC4wNzU2OSwgMC4wODMzNCwgMC43NDIzNl0sXG4gICAgICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICAgICAgXCI5MzFcIjogWzAsIDAuNjgzMzMsIDAuMDU3NjQsIDAuMDgzMzQsIDAuNzc5ODZdLFxuICAgICAgICBcIjkzM1wiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wNTU1NiwgMC41ODMzM10sXG4gICAgICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjY2NjY3XSxcbiAgICAgICAgXCI5MzZcIjogWzAsIDAuNjgzMzMsIDAuMTEsIDAuMDU1NTYsIDAuNjEyMjJdLFxuICAgICAgICBcIjkzN1wiOiBbMCwgMC42ODMzMywgMC4wNTAxNywgMC4wODMzNCwgMC43NzI0XSxcbiAgICAgICAgXCI5NDVcIjogWzAsIDAuNDMwNTYsIDAuMDAzNywgMC4wMjc3OCwgMC42Mzk3XSxcbiAgICAgICAgXCI5NDZcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDUyNzgsIDAuMDgzMzQsIDAuNTY1NjNdLFxuICAgICAgICBcIjk0N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wNTU1NiwgMCwgMC41MTc3M10sXG4gICAgICAgIFwiOTQ4XCI6IFswLCAwLjY5NDQ0LCAwLjAzNzg1LCAwLjA1NTU2LCAwLjQ0NDQ0XSxcbiAgICAgICAgXCI5NDlcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNDY2MzJdLFxuICAgICAgICBcIjk1MFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNzM3OCwgMC4wODMzNCwgMC40Mzc1XSxcbiAgICAgICAgXCI5NTFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDk2NTNdLFxuICAgICAgICBcIjk1MlwiOiBbMCwgMC42OTQ0NCwgMC4wMjc3OCwgMC4wODMzNCwgMC40Njk0NF0sXG4gICAgICAgIFwiOTUzXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjM1Mzk0XSxcbiAgICAgICAgXCI5NTRcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTc2MTZdLFxuICAgICAgICBcIjk1NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41ODMzNF0sXG4gICAgICAgIFwiOTU2XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjYwMjU1XSxcbiAgICAgICAgXCI5NTdcIjogWzAsIDAuNDMwNTYsIDAuMDYzNjYsIDAuMDI3NzgsIDAuNDkzOThdLFxuICAgICAgICBcIjk1OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNDYwMSwgMC4xMTExMSwgMC40Mzc1XSxcbiAgICAgICAgXCI5NTlcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDg0NzJdLFxuICAgICAgICBcIjk2MFwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzAwM10sXG4gICAgICAgIFwiOTYxXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjUxNzAyXSxcbiAgICAgICAgXCI5NjJcIjogWzAuMDk3MjIsIDAuNDMwNTYsIDAuMDc5ODYsIDAuMDgzMzQsIDAuMzYyODVdLFxuICAgICAgICBcIjk2M1wiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzE0MV0sXG4gICAgICAgIFwiOTY0XCI6IFswLCAwLjQzMDU2LCAwLjExMzIsIDAuMDI3NzgsIDAuNDM3MTVdLFxuICAgICAgICBcIjk2NVwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wMjc3OCwgMC41NDAyOF0sXG4gICAgICAgIFwiOTY2XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjY1NDE3XSxcbiAgICAgICAgXCI5NjdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNjI1NjldLFxuICAgICAgICBcIjk2OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wMzU4OCwgMC4xMTExMSwgMC42NTEzOV0sXG4gICAgICAgIFwiOTY5XCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjYyMjQ1XSxcbiAgICAgICAgXCI5NzdcIjogWzAsIDAuNjk0NDQsIDAsIDAuMDgzMzQsIDAuNTkxNDRdLFxuICAgICAgICBcIjk4MVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMC4wODMzNCwgMC41OTU4M10sXG4gICAgICAgIFwiOTgyXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAwLjgyODEzXSxcbiAgICAgICAgXCIxMDA5XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjUxNzAyXSxcbiAgICAgICAgXCIxMDEzXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQwNTldXG4gICAgfSxcbiAgICBcIk1hdGgtUmVndWxhclwiOiB7XG4gICAgICAgIFwiNjVcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTM4ODksIDAuNzVdLFxuICAgICAgICBcIjY2XCI6IFswLCAwLjY4MzMzLCAwLjA1MDE3LCAwLjA4MzM0LCAwLjc1ODUxXSxcbiAgICAgICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wODMzNCwgMC43MTQ3Ml0sXG4gICAgICAgIFwiNjhcIjogWzAsIDAuNjgzMzMsIDAuMDI3NzgsIDAuMDU1NTYsIDAuODI3OTJdLFxuICAgICAgICBcIjY5XCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjczODJdLFxuICAgICAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MzA2XSxcbiAgICAgICAgXCI3MVwiOiBbMCwgMC42ODMzMywgMCwgMC4wODMzNCwgMC43ODYyNV0sXG4gICAgICAgIFwiNzJcIjogWzAsIDAuNjgzMzMsIDAuMDgxMjUsIDAuMDU1NTYsIDAuODMxMjVdLFxuICAgICAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjA3ODQ3LCAwLjExMTExLCAwLjQzOTU4XSxcbiAgICAgICAgXCI3NFwiOiBbMCwgMC42ODMzMywgMC4wOTYxOCwgMC4xNjY2NywgMC41NTQ1MV0sXG4gICAgICAgIFwiNzVcIjogWzAsIDAuNjgzMzMsIDAuMDcxNTMsIDAuMDU1NTYsIDAuODQ5MzFdLFxuICAgICAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLjAyNzc4LCAwLjY4MDU2XSxcbiAgICAgICAgXCI3N1wiOiBbMCwgMC42ODMzMywgMC4xMDkwMywgMC4wODMzNCwgMC45NzAxNF0sXG4gICAgICAgIFwiNzhcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDgzMzQsIDAuODAzNDddLFxuICAgICAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICAgICAgXCI4MFwiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wODMzNCwgMC42NDIwMV0sXG4gICAgICAgIFwiODFcIjogWzAuMTk0NDQsIDAuNjgzMzMsIDAsIDAuMDgzMzQsIDAuNzkwNTZdLFxuICAgICAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLjAwNzczLCAwLjA4MzM0LCAwLjc1OTI5XSxcbiAgICAgICAgXCI4M1wiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC42MTMyXSxcbiAgICAgICAgXCI4NFwiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wODMzNCwgMC41ODQzOF0sXG4gICAgICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDI3NzgsIDAuNjgyNzhdLFxuICAgICAgICBcIjg2XCI6IFswLCAwLjY4MzMzLCAwLjIyMjIyLCAwLCAwLjU4MzMzXSxcbiAgICAgICAgXCI4N1wiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMCwgMC45NDQ0NV0sXG4gICAgICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMDc4NDcsIDAuMDgzMzQsIDAuODI4NDddLFxuICAgICAgICBcIjg5XCI6IFswLCAwLjY4MzMzLCAwLjIyMjIyLCAwLCAwLjU4MDU2XSxcbiAgICAgICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wODMzNCwgMC42ODI2NF0sXG4gICAgICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI4NTldLFxuICAgICAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQyOTE3XSxcbiAgICAgICAgXCI5OVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40MzI3Nl0sXG4gICAgICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLjE2NjY3LCAwLjUyMDQ5XSxcbiAgICAgICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDY1NjNdLFxuICAgICAgICBcIjEwMlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4xMDc2NCwgMC4xNjY2NywgMC40ODk1OV0sXG4gICAgICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjAyNzc4LCAwLjQ3Njk3XSxcbiAgICAgICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc2MTZdLFxuICAgICAgICBcIjEwNVwiOiBbMCwgMC42NTk1MiwgMCwgMCwgMC4zNDQ1MV0sXG4gICAgICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY1OTUyLCAwLjA1NzI0LCAwLCAwLjQxMTgxXSxcbiAgICAgICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAuMDMxNDgsIDAsIDAuNTIwNl0sXG4gICAgICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjAxOTY4LCAwLjA4MzM0LCAwLjI5ODM4XSxcbiAgICAgICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuODc4MDFdLFxuICAgICAgICBcIjExMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC42MDAyM10sXG4gICAgICAgIFwiMTExXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ4NDcyXSxcbiAgICAgICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTAzMTNdLFxuICAgICAgICBcIjExM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wODMzNCwgMC40NDY0MV0sXG4gICAgICAgIFwiMTE0XCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLjA1NTU2LCAwLjQ1MTE2XSxcbiAgICAgICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDY4NzVdLFxuICAgICAgICBcIjExNlwiOiBbMCwgMC42MTUwOCwgMCwgMC4wODMzNCwgMC4zNjExMV0sXG4gICAgICAgIFwiMTE3XCI6IFswLCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjU3MjQ2XSxcbiAgICAgICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNDg0NzJdLFxuICAgICAgICBcIjExOVwiOiBbMCwgMC40MzA1NiwgMC4wMjY5MSwgMC4wODMzNCwgMC43MTU5Ml0sXG4gICAgICAgIFwiMTIwXCI6IFswLCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjU3MTUzXSxcbiAgICAgICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDkwMjhdLFxuICAgICAgICBcIjEyMlwiOiBbMCwgMC40MzA1NiwgMC4wNDM5OCwgMC4wNTU1NiwgMC40NjUwNV0sXG4gICAgICAgIFwiOTE1XCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjYxNTI4XSxcbiAgICAgICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTY2NjcsIDAuODMzMzRdLFxuICAgICAgICBcIjkyMFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wODMzNCwgMC43NjI3OF0sXG4gICAgICAgIFwiOTIzXCI6IFswLCAwLjY4MzMzLCAwLCAwLjE2NjY3LCAwLjY5NDQ1XSxcbiAgICAgICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMDc1NjksIDAuMDgzMzQsIDAuNzQyMzZdLFxuICAgICAgICBcIjkyOFwiOiBbMCwgMC42ODMzMywgMC4wODEyNSwgMC4wNTU1NiwgMC44MzEyNV0sXG4gICAgICAgIFwiOTMxXCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjc3OTg2XSxcbiAgICAgICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDU1NTYsIDAuNTgzMzNdLFxuICAgICAgICBcIjkzNFwiOiBbMCwgMC42ODMzMywgMCwgMC4wODMzNCwgMC42NjY2N10sXG4gICAgICAgIFwiOTM2XCI6IFswLCAwLjY4MzMzLCAwLjExLCAwLjA1NTU2LCAwLjYxMjIyXSxcbiAgICAgICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMDUwMTcsIDAuMDgzMzQsIDAuNzcyNF0sXG4gICAgICAgIFwiOTQ1XCI6IFswLCAwLjQzMDU2LCAwLjAwMzcsIDAuMDI3NzgsIDAuNjM5N10sXG4gICAgICAgIFwiOTQ2XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA1Mjc4LCAwLjA4MzM0LCAwLjU2NTYzXSxcbiAgICAgICAgXCI5NDdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDU1NTYsIDAsIDAuNTE3NzNdLFxuICAgICAgICBcIjk0OFwiOiBbMCwgMC42OTQ0NCwgMC4wMzc4NSwgMC4wNTU1NiwgMC40NDQ0NF0sXG4gICAgICAgIFwiOTQ5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjQ2NjMyXSxcbiAgICAgICAgXCI5NTBcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDczNzgsIDAuMDgzMzQsIDAuNDM3NV0sXG4gICAgICAgIFwiOTUxXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjA1NTU2LCAwLjQ5NjUzXSxcbiAgICAgICAgXCI5NTJcIjogWzAsIDAuNjk0NDQsIDAuMDI3NzgsIDAuMDgzMzQsIDAuNDY5NDRdLFxuICAgICAgICBcIjk1M1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC4zNTM5NF0sXG4gICAgICAgIFwiOTU0XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjU3NjE2XSxcbiAgICAgICAgXCI5NTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTgzMzRdLFxuICAgICAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC42MDI1NV0sXG4gICAgICAgIFwiOTU3XCI6IFswLCAwLjQzMDU2LCAwLjA2MzY2LCAwLjAyNzc4LCAwLjQ5Mzk4XSxcbiAgICAgICAgXCI5NThcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDQ2MDEsIDAuMTExMTEsIDAuNDM3NV0sXG4gICAgICAgIFwiOTU5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ4NDcyXSxcbiAgICAgICAgXCI5NjBcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAsIDAuNTcwMDNdLFxuICAgICAgICBcIjk2MVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC41MTcwMl0sXG4gICAgICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQzMDU2LCAwLjA3OTg2LCAwLjA4MzM0LCAwLjM2Mjg1XSxcbiAgICAgICAgXCI5NjNcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAsIDAuNTcxNDFdLFxuICAgICAgICBcIjk2NFwiOiBbMCwgMC40MzA1NiwgMC4xMTMyLCAwLjAyNzc4LCAwLjQzNzE1XSxcbiAgICAgICAgXCI5NjVcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNTQwMjhdLFxuICAgICAgICBcIjk2NlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC42NTQxN10sXG4gICAgICAgIFwiOTY3XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjYyNTY5XSxcbiAgICAgICAgXCI5NjhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM1ODgsIDAuMTExMTEsIDAuNjUxMzldLFxuICAgICAgICBcIjk2OVwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC42MjI0NV0sXG4gICAgICAgIFwiOTc3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLjA4MzM0LCAwLjU5MTQ0XSxcbiAgICAgICAgXCI5ODFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAuMDgzMzQsIDAuNTk1ODNdLFxuICAgICAgICBcIjk4MlwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMCwgMC44MjgxM10sXG4gICAgICAgIFwiMTAwOVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC41MTcwMl0sXG4gICAgICAgIFwiMTAxM1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40MDU5XVxuICAgIH0sXG4gICAgXCJTYW5zU2VyaWYtQm9sZFwiOiB7XG4gICAgICAgIFwiMzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzY2NjddLFxuICAgICAgICBcIjM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1ODM0XSxcbiAgICAgICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC45MTY2N10sXG4gICAgICAgIFwiMzZcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjM3XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAxLjAyOTEyXSxcbiAgICAgICAgXCIzOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzA1Nl0sXG4gICAgICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzA1NTZdLFxuICAgICAgICBcIjQwXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQyNzc4XSxcbiAgICAgICAgXCI0MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40Mjc3OF0sXG4gICAgICAgIFwiNDJcIjogWzAsIDAuNzUsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjQzXCI6IFswLjExNjY3LCAwLjYxNjY3LCAwLCAwLCAwLjg1NTU2XSxcbiAgICAgICAgXCI0NFwiOiBbMC4xMDU1NiwgMC4xMzA1NiwgMCwgMCwgMC4zMDU1Nl0sXG4gICAgICAgIFwiNDVcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuMzY2NjddLFxuICAgICAgICBcIjQ2XCI6IFswLCAwLjEzMDU2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICAgICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NV0sXG4gICAgICAgIFwiNDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjQ5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICAgICAgXCI1MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgICAgIFwiNTFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjUyXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICAgICAgXCI1M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgICAgIFwiNTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICAgICAgXCI1NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgICAgIFwiNTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjU4XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjMwNTU2XSxcbiAgICAgICAgXCI1OVwiOiBbMC4xMDU1NiwgMC40NTgzMywgMCwgMCwgMC4zMDU1Nl0sXG4gICAgICAgIFwiNjFcIjogWy0wLjA5Mzc1LCAwLjQwNjI1LCAwLCAwLCAwLjg1NTU2XSxcbiAgICAgICAgXCI2M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTk0NV0sXG4gICAgICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzMzMzRdLFxuICAgICAgICBcIjY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICAgICAgXCI2NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgICAgIFwiNjdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzAyNzhdLFxuICAgICAgICBcIjY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICAgICAgXCI2OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NDE2N10sXG4gICAgICAgIFwiNzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjcxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICAgICAgXCI3MlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgICAgIFwiNzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzMwNTZdLFxuICAgICAgICBcIjc0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUxOTQ1XSxcbiAgICAgICAgXCI3NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NjM4OV0sXG4gICAgICAgIFwiNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTgwNTZdLFxuICAgICAgICBcIjc3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjk3Nzc4XSxcbiAgICAgICAgXCI3OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgICAgIFwiNzlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzk0NDVdLFxuICAgICAgICBcIjgwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc4XSxcbiAgICAgICAgXCI4MVwiOiBbMC4xMDU1NiwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgICAgIFwiODJcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzAyNzhdLFxuICAgICAgICBcIjgzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICAgICAgXCI4NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgICAgIFwiODVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzYzODldLFxuICAgICAgICBcIjg2XCI6IFswLCAwLjY5NDQ0LCAwLjAxNTI4LCAwLCAwLjczMzM0XSxcbiAgICAgICAgXCI4N1wiOiBbMCwgMC42OTQ0NCwgMC4wMTUyOCwgMCwgMS4wMzg4OV0sXG4gICAgICAgIFwiODhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzMzMzRdLFxuICAgICAgICBcIjg5XCI6IFswLCAwLjY5NDQ0LCAwLjAyNzUsIDAsIDAuNzMzMzRdLFxuICAgICAgICBcIjkwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY3MjIzXSxcbiAgICAgICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zNDMwNl0sXG4gICAgICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzQzMDZdLFxuICAgICAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICAgICAgXCI5NVwiOiBbMC4zNSwgMC4xMDgzMywgMC4wMzA1NiwgMCwgMC41NV0sXG4gICAgICAgIFwiOTdcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NjExMV0sXG4gICAgICAgIFwiOTlcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNDg4ODldLFxuICAgICAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NjExMV0sXG4gICAgICAgIFwiMTAxXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjUxMTExXSxcbiAgICAgICAgXCIxMDJcIjogWzAsIDAuNjk0NDQsIDAuMDc2MzksIDAsIDAuMzM2MTFdLFxuICAgICAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40NTgzMywgMC4wMTUyOCwgMCwgMC41NV0sXG4gICAgICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU2MTExXSxcbiAgICAgICAgXCIxMDVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjU1NTZdLFxuICAgICAgICBcIjEwNlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4yODYxMV0sXG4gICAgICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUzMDU2XSxcbiAgICAgICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjU1NTZdLFxuICAgICAgICBcIjEwOVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC44NjY2N10sXG4gICAgICAgIFwiMTEwXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjU2MTExXSxcbiAgICAgICAgXCIxMTFcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40NTgzMywgMCwgMCwgMC41NjExMV0sXG4gICAgICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ1ODMzLCAwLCAwLCAwLjU2MTExXSxcbiAgICAgICAgXCIxMTRcIjogWzAsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuMzcyMjJdLFxuICAgICAgICBcIjExNVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC40MjE2N10sXG4gICAgICAgIFwiMTE2XCI6IFswLCAwLjU4OTI5LCAwLCAwLCAwLjQwNDE3XSxcbiAgICAgICAgXCIxMTdcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNTYxMTFdLFxuICAgICAgICBcIjExOFwiOiBbMCwgMC40NTgzMywgMC4wMTUyOCwgMCwgMC41XSxcbiAgICAgICAgXCIxMTlcIjogWzAsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNzQ0NDVdLFxuICAgICAgICBcIjEyMFwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC41XSxcbiAgICAgICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNV0sXG4gICAgICAgIFwiMTIyXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjQ3NjM5XSxcbiAgICAgICAgXCIxMjZcIjogWzAuMzUsIDAuMzQ0NDQsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjE2OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICAgICAgXCIxODBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjMwNVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC4yNTU1Nl0sXG4gICAgICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQ1ODMzLCAwLCAwLCAwLjI4NjExXSxcbiAgICAgICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjcxMVwiOiBbMCwgMC42MzU0MiwgMCwgMCwgMC41NV0sXG4gICAgICAgIFwiNzEzXCI6IFswLCAwLjYzNzc4LCAwLCAwLCAwLjU1XSxcbiAgICAgICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjcyOVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMDU1Nl0sXG4gICAgICAgIFwiNzMwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICAgICAgXCI3MzJcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgICAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgICAgIFwiOTE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU4MDU2XSxcbiAgICAgICAgXCI5MTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuOTE2NjddLFxuICAgICAgICBcIjkyMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44NTU1Nl0sXG4gICAgICAgIFwiOTIzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY3MjIzXSxcbiAgICAgICAgXCI5MjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzMzMzRdLFxuICAgICAgICBcIjkyOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgICAgIFwiOTMxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICAgICAgXCI5MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODU1NTZdLFxuICAgICAgICBcIjkzNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgICAgIFwiOTM2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg1NTU2XSxcbiAgICAgICAgXCI5MzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzk0NDVdLFxuICAgICAgICBcIjgyMTFcIjogWzAsIDAuNDU4MzMsIDAuMDMwNTYsIDAsIDAuNTVdLFxuICAgICAgICBcIjgyMTJcIjogWzAsIDAuNDU4MzMsIDAuMDMwNTYsIDAsIDEuMTAwMDFdLFxuICAgICAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzA1NTZdLFxuICAgICAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzA1NTZdLFxuICAgICAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU4MzRdLFxuICAgICAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU4MzRdXG4gICAgfSxcbiAgICBcIlNhbnNTZXJpZi1JdGFsaWNcIjoge1xuICAgICAgICBcIjMzXCI6IFswLCAwLjY5NDQ0LCAwLjA1NzMzLCAwLCAwLjMxOTQ1XSxcbiAgICAgICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMC4wMDMxNiwgMCwgMC41XSxcbiAgICAgICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNTA4NywgMCwgMC44MzMzNF0sXG4gICAgICAgIFwiMzZcIjogWzAuMDU1NTYsIDAuNzUsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAuMDMxMjYsIDAsIDAuODMzMzRdLFxuICAgICAgICBcIjM4XCI6IFswLCAwLjY5NDQ0LCAwLjAzMDU4LCAwLCAwLjc1ODM0XSxcbiAgICAgICAgXCIzOVwiOiBbMCwgMC42OTQ0NCwgMC4wNzgxNiwgMCwgMC4yNzc3OF0sXG4gICAgICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAuMTMxNjQsIDAsIDAuMzg4ODldLFxuICAgICAgICBcIjQxXCI6IFswLjI1LCAwLjc1LCAwLjAyNTM2LCAwLCAwLjM4ODg5XSxcbiAgICAgICAgXCI0MlwiOiBbMCwgMC43NSwgMC4xMTc3NSwgMCwgMC41XSxcbiAgICAgICAgXCI0M1wiOiBbMC4wODMzMywgMC41ODMzMywgMC4wMjUzNiwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiNDRcIjogWzAuMTI1LCAwLjA4MzMzLCAwLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCI0NVwiOiBbMCwgMC40NDQ0NCwgMC4wMTk0NiwgMCwgMC4zMzMzM10sXG4gICAgICAgIFwiNDZcIjogWzAsIDAuMDgzMzMsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLjEzMTY0LCAwLCAwLjVdLFxuICAgICAgICBcIjQ4XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgICAgICBcIjQ5XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgICAgICBcIjUwXCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgICAgICBcIjUxXCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgICAgICBcIjUyXCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgICAgICBcIjUzXCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgICAgICBcIjU0XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgICAgICBcIjU1XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgICAgICBcIjU2XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgICAgICBcIjU3XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgICAgICBcIjU4XCI6IFswLCAwLjQ0NDQ0LCAwLjAyNTAyLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCI1OVwiOiBbMC4xMjUsIDAuNDQ0NDQsIDAuMDI1MDIsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjYxXCI6IFstMC4xMywgMC4zNywgMC4wNTA4NywgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAuMTE4MDksIDAsIDAuNDcyMjJdLFxuICAgICAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLjA3NTU1LCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI2NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiNjZcIjogWzAsIDAuNjk0NDQsIDAuMDgyOTMsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjY3XCI6IFswLCAwLjY5NDQ0LCAwLjExOTgzLCAwLCAwLjYzODg5XSxcbiAgICAgICAgXCI2OFwiOiBbMCwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC43MjIyM10sXG4gICAgICAgIFwiNjlcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNTk3MjJdLFxuICAgICAgICBcIjcwXCI6IFswLCAwLjY5NDQ0LCAwLjEzMzcyLCAwLCAwLjU2OTQ1XSxcbiAgICAgICAgXCI3MVwiOiBbMCwgMC42OTQ0NCwgMC4xMTk4MywgMCwgMC42NjY2N10sXG4gICAgICAgIFwiNzJcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuNzA4MzRdLFxuICAgICAgICBcIjczXCI6IFswLCAwLjY5NDQ0LCAwLjEzMzcyLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCI3NFwiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC40NzIyMl0sXG4gICAgICAgIFwiNzVcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNjk0NDVdLFxuICAgICAgICBcIjc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU0MTY3XSxcbiAgICAgICAgXCI3N1wiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC44NzVdLFxuICAgICAgICBcIjc4XCI6IFswLCAwLjY5NDQ0LCAwLjA4MDk0LCAwLCAwLjcwODM0XSxcbiAgICAgICAgXCI3OVwiOiBbMCwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC43MzYxMV0sXG4gICAgICAgIFwiODBcIjogWzAsIDAuNjk0NDQsIDAuMDgyOTMsIDAsIDAuNjM4ODldLFxuICAgICAgICBcIjgxXCI6IFswLjEyNSwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC43MzYxMV0sXG4gICAgICAgIFwiODJcIjogWzAsIDAuNjk0NDQsIDAuMDgyOTMsIDAsIDAuNjQ1ODRdLFxuICAgICAgICBcIjgzXCI6IFswLCAwLjY5NDQ0LCAwLjA5MjA1LCAwLCAwLjU1NTU2XSxcbiAgICAgICAgXCI4NFwiOiBbMCwgMC42OTQ0NCwgMC4xMzM3MiwgMCwgMC42ODA1Nl0sXG4gICAgICAgIFwiODVcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuNjg3NV0sXG4gICAgICAgIFwiODZcIjogWzAsIDAuNjk0NDQsIDAuMTYxNSwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiODdcIjogWzAsIDAuNjk0NDQsIDAuMTYxNSwgMCwgMC45NDQ0NV0sXG4gICAgICAgIFwiODhcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjg5XCI6IFswLCAwLjY5NDQ0LCAwLjE3MjYxLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI5MFwiOiBbMCwgMC42OTQ0NCwgMC4xMTk4MywgMCwgMC42MTExMV0sXG4gICAgICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAuMTU5NDIsIDAsIDAuMjg4ODldLFxuICAgICAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLjA4NzE5LCAwLCAwLjI4ODg5XSxcbiAgICAgICAgXCI5NFwiOiBbMCwgMC42OTQ0NCwgMC4wNzk5LCAwLCAwLjVdLFxuICAgICAgICBcIjk1XCI6IFswLjM1LCAwLjA5NDQ0LCAwLjA4NjE2LCAwLCAwLjVdLFxuICAgICAgICBcIjk3XCI6IFswLCAwLjQ0NDQ0LCAwLjAwOTgxLCAwLCAwLjQ4MDU2XSxcbiAgICAgICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMC4wMzA1NywgMCwgMC41MTY2N10sXG4gICAgICAgIFwiOTlcIjogWzAsIDAuNDQ0NDQsIDAuMDgzMzYsIDAsIDAuNDQ0NDVdLFxuICAgICAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMC4wOTQ4MywgMCwgMC41MTY2N10sXG4gICAgICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLjA2Nzc4LCAwLCAwLjQ0NDQ1XSxcbiAgICAgICAgXCIxMDJcIjogWzAsIDAuNjk0NDQsIDAuMjE3MDUsIDAsIDAuMzA1NTZdLFxuICAgICAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC41XSxcbiAgICAgICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAuMDE3NzgsIDAsIDAuNTE2NjddLFxuICAgICAgICBcIjEwNVwiOiBbMCwgMC42NzkzNywgMC4wOTcxOCwgMCwgMC4yMzg4OV0sXG4gICAgICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY3OTM3LCAwLjA5MTYyLCAwLCAwLjI2NjY3XSxcbiAgICAgICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAuMDgzMzYsIDAsIDAuNDg4ODldLFxuICAgICAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4wOTQ4MywgMCwgMC4yMzg4OV0sXG4gICAgICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLjAxNzc4LCAwLCAwLjc5NDQ1XSxcbiAgICAgICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAuMDE3NzgsIDAsIDAuNTE2NjddLFxuICAgICAgICBcIjExMVwiOiBbMCwgMC40NDQ0NCwgMC4wNjYxMywgMCwgMC41XSxcbiAgICAgICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDM4OSwgMCwgMC41MTY2N10sXG4gICAgICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA0MTY5LCAwLCAwLjUxNjY3XSxcbiAgICAgICAgXCIxMTRcIjogWzAsIDAuNDQ0NDQsIDAuMTA4MzYsIDAsIDAuMzQxNjddLFxuICAgICAgICBcIjExNVwiOiBbMCwgMC40NDQ0NCwgMC4wNzc4LCAwLCAwLjM4MzMzXSxcbiAgICAgICAgXCIxMTZcIjogWzAsIDAuNTcxNDMsIDAuMDcyMjUsIDAsIDAuMzYxMTFdLFxuICAgICAgICBcIjExN1wiOiBbMCwgMC40NDQ0NCwgMC4wNDE2OSwgMCwgMC41MTY2N10sXG4gICAgICAgIFwiMTE4XCI6IFswLCAwLjQ0NDQ0LCAwLjEwODM2LCAwLCAwLjQ2MTExXSxcbiAgICAgICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMTA4MzYsIDAsIDAuNjgzMzRdLFxuICAgICAgICBcIjEyMFwiOiBbMCwgMC40NDQ0NCwgMC4wOTE2OSwgMCwgMC40NjExMV0sXG4gICAgICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjEwODM2LCAwLCAwLjQ2MTExXSxcbiAgICAgICAgXCIxMjJcIjogWzAsIDAuNDQ0NDQsIDAuMDg3NTIsIDAsIDAuNDM0NzJdLFxuICAgICAgICBcIjEyNlwiOiBbMC4zNSwgMC4zMjY1OSwgMC4wODgyNiwgMCwgMC41XSxcbiAgICAgICAgXCIxNjhcIjogWzAsIDAuNjc5MzcsIDAuMDYzODUsIDAsIDAuNV0sXG4gICAgICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczNzUyXSxcbiAgICAgICAgXCIzMDVcIjogWzAsIDAuNDQ0NDQsIDAuMDQxNjksIDAsIDAuMjM4ODldLFxuICAgICAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wNDE2OSwgMCwgMC4yNjY2N10sXG4gICAgICAgIFwiNzEwXCI6IFswLCAwLjY5NDQ0LCAwLjA3OTksIDAsIDAuNV0sXG4gICAgICAgIFwiNzExXCI6IFswLCAwLjYzMTk0LCAwLjA4NDMyLCAwLCAwLjVdLFxuICAgICAgICBcIjcxM1wiOiBbMCwgMC42MDg4OSwgMC4wODc3NiwgMCwgMC41XSxcbiAgICAgICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAuMDkyMDUsIDAsIDAuNV0sXG4gICAgICAgIFwiNzE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjcyOFwiOiBbMCwgMC42OTQ0NCwgMC4wOTQ4MywgMCwgMC41XSxcbiAgICAgICAgXCI3MjlcIjogWzAsIDAuNjc5MzcsIDAuMDc3NzQsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Mzc1Ml0sXG4gICAgICAgIFwiNzMyXCI6IFswLCAwLjY3NjU5LCAwLjA4ODI2LCAwLCAwLjVdLFxuICAgICAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMC4wOTIwNSwgMCwgMC41XSxcbiAgICAgICAgXCI5MTVcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuNTQxNjddLFxuICAgICAgICBcIjkxNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzMzNF0sXG4gICAgICAgIFwiOTIwXCI6IFswLCAwLjY5NDQ0LCAwLjA3NTU1LCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI5MjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjkyNlwiOiBbMCwgMC42OTQ0NCwgMC4xMjgxNiwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiOTI4XCI6IFswLCAwLjY5NDQ0LCAwLjA4MDk0LCAwLCAwLjcwODM0XSxcbiAgICAgICAgXCI5MzFcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNzIyMjJdLFxuICAgICAgICBcIjkzM1wiOiBbMCwgMC42OTQ0NCwgMC4wOTAzMSwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiOTM0XCI6IFswLCAwLjY5NDQ0LCAwLjA0NjAzLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI5MzZcIjogWzAsIDAuNjk0NDQsIDAuMDkwMzEsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjkzN1wiOiBbMCwgMC42OTQ0NCwgMC4wODI5MywgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiODIxMVwiOiBbMCwgMC40NDQ0NCwgMC4wODYxNiwgMCwgMC41XSxcbiAgICAgICAgXCI4MjEyXCI6IFswLCAwLjQ0NDQ0LCAwLjA4NjE2LCAwLCAxLjBdLFxuICAgICAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAuMDc4MTYsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAuMDc4MTYsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAuMTQyMDUsIDAsIDAuNV0sXG4gICAgICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMC4wMDMxNiwgMCwgMC41XVxuICAgIH0sXG4gICAgXCJTYW5zU2VyaWYtUmVndWxhclwiOiB7XG4gICAgICAgIFwiMzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDVdLFxuICAgICAgICBcIjM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICAgICAgXCIzNlwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41XSxcbiAgICAgICAgXCIzN1wiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC44MzMzNF0sXG4gICAgICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzU4MzRdLFxuICAgICAgICBcIjM5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCI0MFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgICAgICBcIjQyXCI6IFswLCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjQzXCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI0NFwiOiBbMC4xMjUsIDAuMDgzMzMsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjQ1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjMzMzMzXSxcbiAgICAgICAgXCI0NlwiOiBbMCwgMC4wODMzMywgMCwgMCwgMC4yNzc3OF0sXG4gICAgICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNDhcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNDlcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNTBcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNTFcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNTJcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNTNcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNTRcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNTVcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNTZcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNTdcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNThcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjU5XCI6IFswLjEyNSwgMC40NDQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgICAgIFwiNjFcIjogWy0wLjEzLCAwLjM3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI2M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC40NzIyMl0sXG4gICAgICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI2NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiNjdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgICAgICBcIjY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIzXSxcbiAgICAgICAgXCI2OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41OTcyMl0sXG4gICAgICAgIFwiNzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTY5NDVdLFxuICAgICAgICBcIjcxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI3MlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDgzNF0sXG4gICAgICAgIFwiNzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgICAgICBcIjc0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICAgICAgXCI3NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42OTQ0NV0sXG4gICAgICAgIFwiNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTQxNjddLFxuICAgICAgICBcIjc3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg3NV0sXG4gICAgICAgIFwiNzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzA4MzRdLFxuICAgICAgICBcIjc5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczNjExXSxcbiAgICAgICAgXCI4MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgICAgIFwiODFcIjogWzAuMTI1LCAwLjY5NDQ0LCAwLCAwLCAwLjczNjExXSxcbiAgICAgICAgXCI4MlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NDU4NF0sXG4gICAgICAgIFwiODNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgICAgICBcIjg0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY4MDU2XSxcbiAgICAgICAgXCI4NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42ODc1XSxcbiAgICAgICAgXCI4NlwiOiBbMCwgMC42OTQ0NCwgMC4wMTM4OSwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiODdcIjogWzAsIDAuNjk0NDQsIDAuMDEzODksIDAsIDAuOTQ0NDVdLFxuICAgICAgICBcIjg4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4OVwiOiBbMCwgMC42OTQ0NCwgMC4wMjUsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjkwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICAgICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4yODg4OV0sXG4gICAgICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMjg4ODldLFxuICAgICAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjk1XCI6IFswLjM1LCAwLjA5NDQ0LCAwLjAyNzc4LCAwLCAwLjVdLFxuICAgICAgICBcIjk3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ4MDU2XSxcbiAgICAgICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgICAgIFwiOTlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDQ0NDVdLFxuICAgICAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICAgICAgXCIxMDJcIjogWzAsIDAuNjk0NDQsIDAuMDY5NDQsIDAsIDAuMzA1NTZdLFxuICAgICAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMTM4OSwgMCwgMC41XSxcbiAgICAgICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTE2NjddLFxuICAgICAgICBcIjEwNVwiOiBbMCwgMC42NzkzNywgMCwgMCwgMC4yMzg4OV0sXG4gICAgICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY3OTM3LCAwLCAwLCAwLjI2NjY3XSxcbiAgICAgICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDg4ODldLFxuICAgICAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yMzg4OV0sXG4gICAgICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICAgICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTE2NjddLFxuICAgICAgICBcIjExMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNTE2NjddLFxuICAgICAgICBcIjExM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgICAgIFwiMTE0XCI6IFswLCAwLjQ0NDQ0LCAwLjAxMzg5LCAwLCAwLjM0MTY3XSxcbiAgICAgICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzgzMzNdLFxuICAgICAgICBcIjExNlwiOiBbMCwgMC41NzE0MywgMCwgMCwgMC4zNjExMV0sXG4gICAgICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICAgICAgXCIxMThcIjogWzAsIDAuNDQ0NDQsIDAuMDEzODksIDAsIDAuNDYxMTFdLFxuICAgICAgICBcIjExOVwiOiBbMCwgMC40NDQ0NCwgMC4wMTM4OSwgMCwgMC42ODMzNF0sXG4gICAgICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ2MTExXSxcbiAgICAgICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDEzODksIDAsIDAuNDYxMTFdLFxuICAgICAgICBcIjEyMlwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40MzQ3Ml0sXG4gICAgICAgIFwiMTI2XCI6IFswLjM1LCAwLjMyNjU5LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjE3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiMzA1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjIzODg5XSxcbiAgICAgICAgXCI1NjdcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuMjY2NjddLFxuICAgICAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI3MTFcIjogWzAsIDAuNjMxOTQsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNzEzXCI6IFswLCAwLjYwODg5LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjcxNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNzI5XCI6IFswLCAwLjY3OTM3LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICAgICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI3NzFcIjogWzAsIDAuNjc2NTksIDAsIDAsIDAuNV0sXG4gICAgICAgIFwiNzc2XCI6IFswLCAwLjY3OTM3LCAwLCAwLCAwLjVdLFxuICAgICAgICBcIjkxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NDE2N10sXG4gICAgICAgIFwiOTE2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICAgICAgXCI5MjBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgICAgICBcIjkyM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgICAgIFwiOTI2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI5MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzA4MzRdLFxuICAgICAgICBcIjkzMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MjIyMl0sXG4gICAgICAgIFwiOTMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI5MzRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzIyMjJdLFxuICAgICAgICBcIjkzNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgICAgIFwiOTM3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICAgICAgXCI4MjExXCI6IFswLCAwLjQ0NDQ0LCAwLjAyNzc4LCAwLCAwLjVdLFxuICAgICAgICBcIjgyMTJcIjogWzAsIDAuNDQ0NDQsIDAuMDI3NzgsIDAsIDEuMF0sXG4gICAgICAgIFwiODIxNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgICAgIFwiODIyMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICAgICAgXCI4MjIxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdXG4gICAgfSxcbiAgICBcIlNjcmlwdC1SZWd1bGFyXCI6IHtcbiAgICAgICAgXCI2NVwiOiBbMCwgMC43LCAwLjIyOTI1LCAwLCAwLjgwMjUzXSxcbiAgICAgICAgXCI2NlwiOiBbMCwgMC43LCAwLjA0MDg3LCAwLCAwLjkwNzU3XSxcbiAgICAgICAgXCI2N1wiOiBbMCwgMC43LCAwLjE2ODksIDAsIDAuNjY2MTldLFxuICAgICAgICBcIjY4XCI6IFswLCAwLjcsIDAuMDkzNzEsIDAsIDAuNzc0NDNdLFxuICAgICAgICBcIjY5XCI6IFswLCAwLjcsIDAuMTg1ODMsIDAsIDAuNTYxNjJdLFxuICAgICAgICBcIjcwXCI6IFswLCAwLjcsIDAuMTM2MzQsIDAsIDAuODk1NDRdLFxuICAgICAgICBcIjcxXCI6IFswLCAwLjcsIDAuMTczMjIsIDAsIDAuNjA5NjFdLFxuICAgICAgICBcIjcyXCI6IFswLCAwLjcsIDAuMjk2OTQsIDAsIDAuOTY5MTldLFxuICAgICAgICBcIjczXCI6IFswLCAwLjcsIDAuMTkxODksIDAsIDAuODA5MDddLFxuICAgICAgICBcIjc0XCI6IFswLjI3Nzc4LCAwLjcsIDAuMTkxODksIDAsIDEuMDUxNTldLFxuICAgICAgICBcIjc1XCI6IFswLCAwLjcsIDAuMzEyNTksIDAsIDAuOTEzNjRdLFxuICAgICAgICBcIjc2XCI6IFswLCAwLjcsIDAuMTkxODksIDAsIDAuODczNzNdLFxuICAgICAgICBcIjc3XCI6IFswLCAwLjcsIDAuMTU5ODEsIDAsIDEuMDgwMzFdLFxuICAgICAgICBcIjc4XCI6IFswLCAwLjcsIDAuMzUyNSwgMCwgMC45MDE1XSxcbiAgICAgICAgXCI3OVwiOiBbMCwgMC43LCAwLjA4MDc4LCAwLCAwLjczNzg3XSxcbiAgICAgICAgXCI4MFwiOiBbMCwgMC43LCAwLjA4MDc4LCAwLCAxLjAxMjYyXSxcbiAgICAgICAgXCI4MVwiOiBbMCwgMC43LCAwLjAzMzA1LCAwLCAwLjg4MjgyXSxcbiAgICAgICAgXCI4MlwiOiBbMCwgMC43LCAwLjA2MjU5LCAwLCAwLjg1XSxcbiAgICAgICAgXCI4M1wiOiBbMCwgMC43LCAwLjE5MTg5LCAwLCAwLjg2NzY3XSxcbiAgICAgICAgXCI4NFwiOiBbMCwgMC43LCAwLjI5MDg3LCAwLCAwLjc0Njk3XSxcbiAgICAgICAgXCI4NVwiOiBbMCwgMC43LCAwLjI1ODE1LCAwLCAwLjc5OTk2XSxcbiAgICAgICAgXCI4NlwiOiBbMCwgMC43LCAwLjI3NTIzLCAwLCAwLjYyMjA0XSxcbiAgICAgICAgXCI4N1wiOiBbMCwgMC43LCAwLjI3NTIzLCAwLCAwLjgwNTMyXSxcbiAgICAgICAgXCI4OFwiOiBbMCwgMC43LCAwLjI2MDA2LCAwLCAwLjk0NDQ1XSxcbiAgICAgICAgXCI4OVwiOiBbMCwgMC43LCAwLjI5MzksIDAsIDAuNzA5NjFdLFxuICAgICAgICBcIjkwXCI6IFswLCAwLjcsIDAuMjQwMzcsIDAsIDAuODIxMl1cbiAgICB9LFxuICAgIFwiU2l6ZTEtUmVndWxhclwiOiB7XG4gICAgICAgIFwiNDBcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDU4MzRdLFxuICAgICAgICBcIjQxXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ1ODM0XSxcbiAgICAgICAgXCI0N1wiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC41Nzc3OF0sXG4gICAgICAgIFwiOTFcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDE2NjddLFxuICAgICAgICBcIjkyXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjU3Nzc4XSxcbiAgICAgICAgXCI5M1wiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40MTY2N10sXG4gICAgICAgIFwiMTIzXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICAgICAgXCIxMjVcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNTgzMzRdLFxuICAgICAgICBcIjcxMFwiOiBbMCwgMC43MjIyMiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgICAgIFwiNzMyXCI6IFswLCAwLjcyMjIyLCAwLCAwLCAwLjU1NTU2XSxcbiAgICAgICAgXCI3NzBcIjogWzAsIDAuNzIyMjIsIDAsIDAsIDAuNTU1NTZdLFxuICAgICAgICBcIjc3MVwiOiBbMCwgMC43MjIyMiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgICAgIFwiODIxNFwiOiBbLTAuMDAwOTksIDAuNjAxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4NTkzXCI6IFsxZS0wNSwgMC42LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4NTk1XCI6IFsxZS0wNSwgMC42LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI4NjU3XCI6IFsxZS0wNSwgMC42LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4NjU5XCI6IFsxZS0wNSwgMC42LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICAgICAgXCI4NzE5XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjk0NDQ1XSxcbiAgICAgICAgXCI4NzIwXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjk0NDQ1XSxcbiAgICAgICAgXCI4NzIxXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjA1NTU2XSxcbiAgICAgICAgXCI4NzMwXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg3MzlcIjogWy0wLjAwNTk5LCAwLjYwNiwgMCwgMCwgMC4zMzMzM10sXG4gICAgICAgIFwiODc0MVwiOiBbLTAuMDA1OTksIDAuNjA2LCAwLCAwLCAwLjU1NTU2XSxcbiAgICAgICAgXCI4NzQ3XCI6IFswLjMwNjEyLCAwLjgwNSwgMC4xOTQ0NSwgMCwgMC40NzIyMl0sXG4gICAgICAgIFwiODc0OFwiOiBbMC4zMDYsIDAuODA1LCAwLjE5NDQ1LCAwLCAwLjQ3MjIyXSxcbiAgICAgICAgXCI4NzQ5XCI6IFswLjMwNiwgMC44MDUsIDAuMTk0NDUsIDAsIDAuNDcyMjJdLFxuICAgICAgICBcIjg3NTBcIjogWzAuMzA2MTIsIDAuODA1LCAwLjE5NDQ1LCAwLCAwLjQ3MjIyXSxcbiAgICAgICAgXCI4ODk2XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICAgICAgXCI4ODk3XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICAgICAgXCI4ODk4XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICAgICAgXCI4ODk5XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICAgICAgXCI4OTY4XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICAgICAgXCI4OTY5XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICAgICAgXCI4OTcwXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICAgICAgXCI4OTcxXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICAgICAgXCI5MTY4XCI6IFstMC4wMDA5OSwgMC42MDEsIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjEwMjE2XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICAgICAgXCIxMDIxN1wiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40NzIyMl0sXG4gICAgICAgIFwiMTA3NTJcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDEuMTExMTFdLFxuICAgICAgICBcIjEwNzUzXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjExMTExXSxcbiAgICAgICAgXCIxMDc1NFwiOiBbMC4yNTAwMSwgMC43NSwgMCwgMCwgMS4xMTExMV0sXG4gICAgICAgIFwiMTA3NTZcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgICAgICBcIjEwNzU4XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XVxuICAgIH0sXG4gICAgXCJTaXplMi1SZWd1bGFyXCI6IHtcbiAgICAgICAgXCI0MFwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC41OTcyMl0sXG4gICAgICAgIFwiNDFcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTk3MjJdLFxuICAgICAgICBcIjQ3XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjgxMTExXSxcbiAgICAgICAgXCI5MVwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC40NzIyMl0sXG4gICAgICAgIFwiOTJcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuODExMTFdLFxuICAgICAgICBcIjkzXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICAgICAgXCIxMjNcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjEyNVwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiNzEwXCI6IFswLCAwLjc1LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjczMlwiOiBbMCwgMC43NSwgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI3NzBcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiNzcxXCI6IFswLCAwLjc1LCAwLCAwLCAxLjBdLFxuICAgICAgICBcIjg3MTlcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMjc3NzhdLFxuICAgICAgICBcIjg3MjBcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMjc3NzhdLFxuICAgICAgICBcIjg3MjFcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuNDQ0NDVdLFxuICAgICAgICBcIjg3MzBcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODc0N1wiOiBbMC44NjIyNSwgMS4zNiwgMC40NDQ0NSwgMCwgMC41NTU1Nl0sXG4gICAgICAgIFwiODc0OFwiOiBbMC44NjIsIDEuMzYsIDAuNDQ0NDUsIDAsIDAuNTU1NTZdLFxuICAgICAgICBcIjg3NDlcIjogWzAuODYyLCAxLjM2LCAwLjQ0NDQ1LCAwLCAwLjU1NTU2XSxcbiAgICAgICAgXCI4NzUwXCI6IFswLjg2MjI1LCAxLjM2LCAwLjQ0NDQ1LCAwLCAwLjU1NTU2XSxcbiAgICAgICAgXCI4ODk2XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXSxcbiAgICAgICAgXCI4ODk3XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXSxcbiAgICAgICAgXCI4ODk4XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXSxcbiAgICAgICAgXCI4ODk5XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXSxcbiAgICAgICAgXCI4OTY4XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICAgICAgXCI4OTY5XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICAgICAgXCI4OTcwXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICAgICAgXCI4OTcxXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICAgICAgXCIxMDIxNlwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42MTExMV0sXG4gICAgICAgIFwiMTAyMTdcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNjExMTFdLFxuICAgICAgICBcIjEwNzUyXCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjUxMTEyXSxcbiAgICAgICAgXCIxMDc1M1wiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS41MTExMl0sXG4gICAgICAgIFwiMTA3NTRcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuNTExMTJdLFxuICAgICAgICBcIjEwNzU2XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXSxcbiAgICAgICAgXCIxMDc1OFwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV1cbiAgICB9LFxuICAgIFwiU2l6ZTMtUmVndWxhclwiOiB7XG4gICAgICAgIFwiNDBcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNzM2MTFdLFxuICAgICAgICBcIjQxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjczNjExXSxcbiAgICAgICAgXCI0N1wiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMS4wNDQ0NV0sXG4gICAgICAgIFwiOTFcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNTI3NzhdLFxuICAgICAgICBcIjkyXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAxLjA0NDQ1XSxcbiAgICAgICAgXCI5M1wiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMC41Mjc3OF0sXG4gICAgICAgIFwiMTIzXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjc1XSxcbiAgICAgICAgXCIxMjVcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNzVdLFxuICAgICAgICBcIjcxMFwiOiBbMCwgMC43NSwgMCwgMCwgMS40NDQ0NV0sXG4gICAgICAgIFwiNzMyXCI6IFswLCAwLjc1LCAwLCAwLCAxLjQ0NDQ1XSxcbiAgICAgICAgXCI3NzBcIjogWzAsIDAuNzUsIDAsIDAsIDEuNDQ0NDVdLFxuICAgICAgICBcIjc3MVwiOiBbMCwgMC43NSwgMCwgMCwgMS40NDQ0NV0sXG4gICAgICAgIFwiODczMFwiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMS4wXSxcbiAgICAgICAgXCI4OTY4XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICAgICAgXCI4OTY5XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICAgICAgXCI4OTcwXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICAgICAgXCI4OTcxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICAgICAgXCIxMDIxNlwiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMC43NV0sXG4gICAgICAgIFwiMTAyMTdcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNzVdXG4gICAgfSxcbiAgICBcIlNpemU0LVJlZ3VsYXJcIjoge1xuICAgICAgICBcIjQwXCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjc5MTY3XSxcbiAgICAgICAgXCI0MVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC43OTE2N10sXG4gICAgICAgIFwiNDdcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDEuMjc3NzhdLFxuICAgICAgICBcIjkxXCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICAgICAgXCI5MlwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMS4yNzc3OF0sXG4gICAgICAgIFwiOTNcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNTgzMzRdLFxuICAgICAgICBcIjEyM1wiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC44MDU1Nl0sXG4gICAgICAgIFwiMTI1XCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICAgICAgXCI3MTBcIjogWzAsIDAuODI1LCAwLCAwLCAxLjg4ODldLFxuICAgICAgICBcIjczMlwiOiBbMCwgMC44MjUsIDAsIDAsIDEuODg4OV0sXG4gICAgICAgIFwiNzcwXCI6IFswLCAwLjgyNSwgMCwgMCwgMS44ODg5XSxcbiAgICAgICAgXCI3NzFcIjogWzAsIDAuODI1LCAwLCAwLCAxLjg4ODldLFxuICAgICAgICBcIjg3MzBcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDEuMF0sXG4gICAgICAgIFwiODk2OFwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgICAgIFwiODk2OVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgICAgIFwiODk3MFwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgICAgIFwiODk3MVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgICAgIFwiOTExNVwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuODc1XSxcbiAgICAgICAgXCI5MTE2XCI6IFsxZS0wNSwgMC42LCAwLCAwLCAwLjg3NV0sXG4gICAgICAgIFwiOTExN1wiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuODc1XSxcbiAgICAgICAgXCI5MTE4XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC44NzVdLFxuICAgICAgICBcIjkxMTlcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuODc1XSxcbiAgICAgICAgXCI5MTIwXCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC44NzVdLFxuICAgICAgICBcIjkxMjFcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI5MTIyXCI6IFstMC4wMDA5OSwgMC42MDEsIDAsIDAsIDAuNjY2NjddLFxuICAgICAgICBcIjkxMjNcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI5MTI0XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiOTEyNVwiOiBbLTAuMDAwOTksIDAuNjAxLCAwLCAwLCAwLjY2NjY3XSxcbiAgICAgICAgXCI5MTI2XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC42NjY2N10sXG4gICAgICAgIFwiOTEyN1wiOiBbMWUtMDUsIDAuOSwgMCwgMCwgMC44ODg4OV0sXG4gICAgICAgIFwiOTEyOFwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC44ODg4OV0sXG4gICAgICAgIFwiOTEyOVwiOiBbMC45MDAwMSwgMCwgMCwgMCwgMC44ODg4OV0sXG4gICAgICAgIFwiOTEzMFwiOiBbMCwgMC4zLCAwLCAwLCAwLjg4ODg5XSxcbiAgICAgICAgXCI5MTMxXCI6IFsxZS0wNSwgMC45LCAwLCAwLCAwLjg4ODg5XSxcbiAgICAgICAgXCI5MTMyXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjg4ODg5XSxcbiAgICAgICAgXCI5MTMzXCI6IFswLjkwMDAxLCAwLCAwLCAwLCAwLjg4ODg5XSxcbiAgICAgICAgXCI5MTQzXCI6IFswLjg4NTAyLCAwLjkxNSwgMCwgMCwgMS4wNTU1Nl0sXG4gICAgICAgIFwiMTAyMTZcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuODA1NTZdLFxuICAgICAgICBcIjEwMjE3XCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICAgICAgXCI1NzM0NFwiOiBbLTAuMDA0OTksIDAuNjA1LCAwLCAwLCAxLjA1NTU2XSxcbiAgICAgICAgXCI1NzM0NVwiOiBbLTAuMDA0OTksIDAuNjA1LCAwLCAwLCAxLjA1NTU2XSxcbiAgICAgICAgXCI1NzY4MFwiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV0sXG4gICAgICAgIFwiNTc2ODFcIjogWzAsIDAuMTIsIDAsIDAsIDAuNDVdLFxuICAgICAgICBcIjU3NjgyXCI6IFswLCAwLjEyLCAwLCAwLCAwLjQ1XSxcbiAgICAgICAgXCI1NzY4M1wiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV1cbiAgICB9LFxuICAgIFwiVHlwZXdyaXRlci1SZWd1bGFyXCI6IHtcbiAgICAgICAgXCIzM1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjM0XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiMzVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIzNlwiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjM3XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiMzhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIzOVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjQwXCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNDFcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI0MlwiOiBbMCwgMC41MjA4MywgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjQzXCI6IFstMC4wODA1NiwgMC41MzA1NSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjQ0XCI6IFswLjEzODg5LCAwLjEyNSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjQ1XCI6IFstMC4wODA1NiwgMC41MzA1NSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjQ2XCI6IFswLCAwLjEyNSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjQ3XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNDhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI0OVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjUwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNTFcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI1MlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjUzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNTRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI1NVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjU2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNTdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI1OFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjU5XCI6IFswLjEzODg5LCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNjBcIjogWy0wLjA1NTU2LCAwLjU1NTU2LCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNjFcIjogWy0wLjE5NTQ5LCAwLjQxNTYyLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNjJcIjogWy0wLjA1NTU2LCAwLjU1NTU2LCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNjNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI2NFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjY1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNjZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI2N1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjY4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNjlcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3MFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjcxXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNzJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3M1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjc0XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNzVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjc3XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiNzhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3OVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjgwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiODFcIjogWzAuMTM4ODksIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI4MlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjgzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiODRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI4NVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjg2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiODdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI4OFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjg5XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiOTBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MVwiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjkyXCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiOTNcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5NFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjk1XCI6IFswLjA5NTE0LCAwLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiOTZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5N1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjk4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiOTlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMDBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMDJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMDNcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMDRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMDVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMDZcIjogWzAuMjIyMjIsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMDdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMDhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMTBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMTFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMTJcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMTNcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMTRcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMTZcIjogWzAsIDAuNTUzNTgsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMTlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMjBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMjFcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMjJcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMjNcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMjRcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMjVcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMjZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxMjdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIxNzZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCIzMDVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI1NjdcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3MTFcIjogWzAsIDAuNTY1OTcsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3MTNcIjogWzAsIDAuNTY1NTUsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3MTRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3MTVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3MjhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3MzBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3NzBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3NzFcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI3NzZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MTVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MTZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MjBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MjNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MjZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MjhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MzFcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MzNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MzRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MzZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MzdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI4MjE2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgICAgIFwiODIxN1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgICAgICBcIjgyNDJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICAgICAgXCI5MjUxXCI6IFswLjExMTExLCAwLjIxOTQ0LCAwLCAwLCAwLjUyNV1cbiAgICB9XG59KTtcblxuLyoqKi8gfSksXG4vKiA2MCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gc2l6aW5nR3JvdXA7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RlZmluZUZ1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3V0aWxzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRIVE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRNYXRoTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cblxuXG5cblxuXG5cblxuZnVuY3Rpb24gc2l6aW5nR3JvdXAodmFsdWUsIG9wdGlvbnMsIGJhc2VPcHRpb25zKSB7XG4gICAgdmFyIGlubmVyID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZEhUTUxfX1tcImFcIiAvKiBidWlsZEV4cHJlc3Npb24gKi9dKHZhbHVlLCBvcHRpb25zLCBmYWxzZSk7XG4gICAgdmFyIG11bHRpcGxpZXIgPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gYmFzZU9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG5cbiAgICAvLyBBZGQgc2l6ZS1yZXNldHRpbmcgY2xhc3NlcyB0byB0aGUgaW5uZXIgbGlzdCBhbmQgc2V0IG1heEZvbnRTaXplXG4gICAgLy8gbWFudWFsbHkuIEhhbmRsZSBuZXN0ZWQgc2l6ZSBjaGFuZ2VzLlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHBvcyA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5pbmRleE9mKGlubmVyW2ldLmNsYXNzZXMsIFwic2l6aW5nXCIpO1xuICAgICAgICBpZiAocG9zIDwgMCkge1xuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoaW5uZXJbaV0uY2xhc3Nlcywgb3B0aW9ucy5zaXppbmdDbGFzc2VzKGJhc2VPcHRpb25zKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5uZXJbaV0uY2xhc3Nlc1twb3MgKyAxXSA9PT0gXCJyZXNldC1zaXplXCIgKyBvcHRpb25zLnNpemUpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXN0ZWQgc2l6ZSBjaGFuZ2U6IGUuZy4sIGlubmVyW2ldIGlzIHRoZSBcImJcIiBpblxuICAgICAgICAgICAgLy8gYFxcSHVnZSBhIFxcc21hbGwgYmAuIE92ZXJyaWRlIHRoZSBvbGQgc2l6ZSAodGhlIGByZXNldC1gIGNsYXNzKVxuICAgICAgICAgICAgLy8gYnV0IG5vdCB0aGUgbmV3IHNpemUuXG4gICAgICAgICAgICBpbm5lcltpXS5jbGFzc2VzW3BvcyArIDFdID0gXCJyZXNldC1zaXplXCIgKyBiYXNlT3B0aW9ucy5zaXplO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5uZXJbaV0uaGVpZ2h0ICo9IG11bHRpcGxpZXI7XG4gICAgICAgIGlubmVyW2ldLmRlcHRoICo9IG11bHRpcGxpZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlRnJhZ21lbnQoaW5uZXIpO1xufVxuXG52YXIgc2l6ZUZ1bmNzID0gW1wiXFxcXHRpbnlcIiwgXCJcXFxcc2l4cHRzaXplXCIsIFwiXFxcXHNjcmlwdHNpemVcIiwgXCJcXFxcZm9vdG5vdGVzaXplXCIsIFwiXFxcXHNtYWxsXCIsIFwiXFxcXG5vcm1hbHNpemVcIiwgXCJcXFxcbGFyZ2VcIiwgXCJcXFxcTGFyZ2VcIiwgXCJcXFxcTEFSR0VcIiwgXCJcXFxcaHVnZVwiLCBcIlxcXFxIdWdlXCJdO1xuXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kZWZpbmVGdW5jdGlvbl9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJzaXppbmdcIixcbiAgICBuYW1lczogc2l6ZUZ1bmNzLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDAsXG4gICAgICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgICAgICB2YXIgYnJlYWtPblRva2VuVGV4dCA9IGNvbnRleHQuYnJlYWtPblRva2VuVGV4dCxcbiAgICAgICAgICAgIGZ1bmNOYW1lID0gY29udGV4dC5mdW5jTmFtZSxcbiAgICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQucGFyc2VyO1xuXG5cbiAgICAgICAgcGFyc2VyLmNvbnN1bWVTcGFjZXMoKTtcbiAgICAgICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKGZhbHNlLCBicmVha09uVG9rZW5UZXh0KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJzaXppbmdcIixcbiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBzaXplIHRvIHVzZSBiYXNlZCBvbiB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgYWJvdmVcbiAgICAgICAgICAgIHNpemU6IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5pbmRleE9mKHNpemVGdW5jcywgZnVuY05hbWUpICsgMSxcbiAgICAgICAgICAgIHZhbHVlOiBib2R5XG4gICAgICAgIH07XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgLy8gSGFuZGxlIHNpemluZyBvcGVyYXRvcnMgbGlrZSBcXEh1Z2UuIFJlYWwgVGVYIGRvZXNuJ3QgYWN0dWFsbHkgYWxsb3dcbiAgICAgICAgLy8gdGhlc2UgZnVuY3Rpb25zIGluc2lkZSBvZiBtYXRoIGV4cHJlc3Npb25zLCBzbyB3ZSBkbyBzb21lIHNwZWNpYWxcbiAgICAgICAgLy8gaGFuZGxpbmcuXG4gICAgICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTaXplKGdyb3VwLnZhbHVlLnNpemUpO1xuICAgICAgICByZXR1cm4gc2l6aW5nR3JvdXAoZ3JvdXAudmFsdWUudmFsdWUsIG5ld09wdGlvbnMsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU2l6ZShncm91cC52YWx1ZS5zaXplKTtcbiAgICAgICAgdmFyIGlubmVyID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19idWlsZE1hdGhNTF9fW1wiYVwiIC8qIGJ1aWxkRXhwcmVzc2lvbiAqL10oZ3JvdXAudmFsdWUudmFsdWUsIG5ld09wdGlvbnMpO1xuXG4gICAgICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXN0eWxlXCIsIGlubmVyKTtcblxuICAgICAgICAvLyBUT0RPKGVtaWx5KTogVGhpcyBkb2Vzbid0IHByb2R1Y2UgdGhlIGNvcnJlY3Qgc2l6ZSBmb3IgbmVzdGVkIHNpemVcbiAgICAgICAgLy8gY2hhbmdlcywgYmVjYXVzZSB3ZSBkb24ndCBrZWVwIHN0YXRlIG9mIHdoYXQgc3R5bGUgd2UncmUgY3VycmVudGx5XG4gICAgICAgIC8vIGluLCBzbyB3ZSBjYW4ndCByZXNldCB0aGUgc2l6ZSB0byBub3JtYWwgYmVmb3JlIGNoYW5naW5nIGl0LiAgTm93XG4gICAgICAgIC8vIHRoYXQgd2UncmUgcGFzc2luZyBhbiBvcHRpb25zIHBhcmFtZXRlciB3ZSBzaG91bGQgYmUgYWJsZSB0byBmaXhcbiAgICAgICAgLy8gdGhpcy5cbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRoc2l6ZVwiLCBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyICsgXCJlbVwiKTtcblxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG59KTtcblxuLyoqKi8gfSksXG4vKiA2MSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX2Vudmlyb25tZW50czsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAoaW1tdXRhYmxlKSAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYlwiXSA9IGRlZmluZUVudmlyb25tZW50O1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRIVE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRNYXRoTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19PcHRpb25zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1BhcnNlTm9kZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cblxuXG5cblxuXG4vKipcbiAqIFRoZSBjb250ZXh0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqICAtIG1vZGU6IGN1cnJlbnQgcGFyc2luZyBtb2RlLlxuICogIC0gZW52TmFtZTogdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50LCBvbmUgb2YgdGhlIGxpc3RlZCBuYW1lcy5cbiAqICAtIHBhcnNlcjogdGhlIHBhcnNlciBvYmplY3QuXG4gKi9cblxuXG4vKipcbiAqICAtIGNvbnRleHQ6IGluZm9ybWF0aW9uIGFuZCByZWZlcmVuY2VzIHByb3ZpZGVkIGJ5IHRoZSBwYXJzZXJcbiAqICAtIGFyZ3M6IGFuIGFycmF5IG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gXFxiZWdpbntuYW1lfVxuICogIC0gb3B0QXJnczogYW4gYXJyYXkgb2Ygb3B0aW9uYWwgYXJndW1lbnRzIHBhc3NlZCB0byBcXGJlZ2lue25hbWV9XG4gKi9cblxuXG4vKipcbiAqICAtIG51bUFyZ3M6IChkZWZhdWx0IDApIFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGFmdGVyIHRoZSBcXGJlZ2lue25hbWV9IGZ1bmN0aW9uLlxuICogIC0gYXJnVHlwZXM6IChvcHRpb25hbCkgSnVzdCBsaWtlIGZvciBhIGZ1bmN0aW9uXG4gKiAgLSBhbGxvd2VkSW5UZXh0OiAoZGVmYXVsdCBmYWxzZSkgV2hldGhlciBvciBub3QgdGhlIGVudmlyb25tZW50IGlzIGFsbG93ZWRcbiAqICAgICAgICAgICAgICAgICAgIGluc2lkZSB0ZXh0IG1vZGUgKG5vdCBlbmZvcmNlZCB5ZXQpLlxuICogIC0gbnVtT3B0aW9uYWxBcmdzOiAoZGVmYXVsdCAwKSBKdXN0IGxpa2UgZm9yIGEgZnVuY3Rpb25cbiAqL1xuXG5cbi8qKlxuICogRmluYWwgZW52aW9ybm1lbnQgc3BlYyBmb3IgdXNlIGF0IHBhcnNlIHRpbWUuXG4gKiBUaGlzIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gYEVudkRlZlNwZWNgLCBleGNlcHQgaXRcbiAqIDEuIGluY2x1ZGVzIHRoZSBmdW5jdGlvbiBoYW5kbGVyXG4gKiAyLiByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGV4Y2VwdCBhcmdUeXBlXG4gKiBJdCBpcyBnZW5lcmF0ZWQgYnkgYGRlZmluZUVudmlyb25tZW50KClgIGJlbG93LlxuICovXG5cblxuLyoqXG4gKiBBbGwgcmVnaXN0ZXJlZCBlbnZpcm9ubWVudHMuXG4gKiBgZW52aXJvbm1lbnRzLmpzYCBleHBvcnRzIHRoaXMgc2FtZSBkaWN0aW9uYXJ5IGFnYWluIGFuZCBtYWtlcyBpdCBwdWJsaWMuXG4gKiBgUGFyc2VyLmpzYCByZXF1aXJlcyB0aGlzIGRpY3Rpb25hcnkgdmlhIGBlbnZpcm9ubWVudHMuanNgLlxuICovXG52YXIgX2Vudmlyb25tZW50cyA9IHt9O1xuXG5mdW5jdGlvbiBkZWZpbmVFbnZpcm9ubWVudChfcmVmKSB7XG4gICAgdmFyIHR5cGUgPSBfcmVmLnR5cGUsXG4gICAgICAgIG5hbWVzID0gX3JlZi5uYW1lcyxcbiAgICAgICAgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBoYW5kbGVyID0gX3JlZi5oYW5kbGVyLFxuICAgICAgICBodG1sQnVpbGRlciA9IF9yZWYuaHRtbEJ1aWxkZXIsXG4gICAgICAgIG1hdGhtbEJ1aWxkZXIgPSBfcmVmLm1hdGhtbEJ1aWxkZXI7XG5cbiAgICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXMgb2YgZW52aXJvbm1lbnRzXG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICAgIG51bUFyZ3M6IHByb3BzLm51bUFyZ3MgfHwgMCxcbiAgICAgICAgZ3JlZWRpbmVzczogMSxcbiAgICAgICAgYWxsb3dlZEluVGV4dDogZmFsc2UsXG4gICAgICAgIG51bU9wdGlvbmFsQXJnczogMCxcbiAgICAgICAgaGFuZGxlcjogaGFuZGxlclxuICAgIH07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBfZW52aXJvbm1lbnRzW25hbWVzW2ldXSA9IGRhdGE7XG4gICAgfVxuICAgIGlmIChodG1sQnVpbGRlcikge1xuICAgICAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2J1aWxkSFRNTF9fW1wiZFwiIC8qIGdyb3VwVHlwZXMgKi9dW3R5cGVdID0gaHRtbEJ1aWxkZXI7XG4gICAgfVxuICAgIGlmIChtYXRobWxCdWlsZGVyKSB7XG4gICAgICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRNYXRoTUxfX1tcImRcIiAvKiBncm91cFR5cGVzICovXVt0eXBlXSA9IG1hdGhtbEJ1aWxkZXI7XG4gICAgfVxufVxuXG4vKioqLyB9KSxcbi8qIDYyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb21iaW5pbmdEaWFjcml0aWNhbE1hcmtzRW5kUmVnZXg7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBjb250cm9sV29yZFJlZ2V4OyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfbWF0Y2hfYXRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfbWF0Y2hfYXRfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9tYXRjaF9hdF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1BhcnNlRXJyb3JfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19Tb3VyY2VMb2NhdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19Ub2tlbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cblxuXG4vKipcbiAqIFRoZSBMZXhlciBjbGFzcyBoYW5kbGVzIHRva2VuaXppbmcgdGhlIGlucHV0IGluIHZhcmlvdXMgd2F5cy4gU2luY2Ugb3VyXG4gKiBwYXJzZXIgZXhwZWN0cyB1cyB0byBiZSBhYmxlIHRvIGJhY2t0cmFjaywgdGhlIGxleGVyIGFsbG93cyBsZXhpbmcgZnJvbSBhbnlcbiAqIGdpdmVuIHN0YXJ0aW5nIHBvaW50LlxuICpcbiAqIEl0cyBtYWluIGV4cG9zZWQgZnVuY3Rpb24gaXMgdGhlIGBsZXhgIGZ1bmN0aW9uLCB3aGljaCB0YWtlcyBhIHBvc2l0aW9uIHRvXG4gKiBsZXggZnJvbSBhbmQgYSB0eXBlIG9mIHRva2VuIHRvIGxleC4gSXQgZGVmZXJzIHRvIHRoZSBhcHByb3ByaWF0ZSBgX2lubmVyTGV4YFxuICogZnVuY3Rpb24uXG4gKlxuICogVGhlIHZhcmlvdXMgYF9pbm5lckxleGAgZnVuY3Rpb25zIHBlcmZvcm0gdGhlIGFjdHVhbCBsZXhpbmcgb2YgZGlmZmVyZW50XG4gKiBraW5kcy5cbiAqL1xuXG5cblxuXG5cblxuLyogVGhlIGZvbGxvd2luZyB0b2tlblJlZ2V4XG4gKiAtIG1hdGNoZXMgdHlwaWNhbCB3aGl0ZXNwYWNlIChidXQgbm90IE5CU1AgZXRjLikgdXNpbmcgaXRzIGZpcnN0IGdyb3VwXG4gKiAtIG1hdGNoZXMgY29tbWVudHMgKG11c3QgaGF2ZSB0cmFpbGluZyBuZXdsaW5lcylcbiAqIC0gZG9lcyBub3QgbWF0Y2ggYW55IGNvbnRyb2wgY2hhcmFjdGVyIFxceDAwLVxceDFmIGV4Y2VwdCB3aGl0ZXNwYWNlXG4gKiAtIGRvZXMgbm90IG1hdGNoIGEgYmFyZSBiYWNrc2xhc2hcbiAqIC0gbWF0Y2hlcyBhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCB0aG9zZSBqdXN0IG1lbnRpb25lZFxuICogLSBkb2VzIG5vdCBtYXRjaCB0aGUgQk1QIHByaXZhdGUgdXNlIGFyZWEgXFx1RTAwMC1cXHVGOEZGXG4gKiAtIGRvZXMgbm90IG1hdGNoIGJhcmUgc3Vycm9nYXRlIGNvZGUgdW5pdHNcbiAqIC0gbWF0Y2hlcyBhbnkgQk1QIGNoYXJhY3RlciBleGNlcHQgZm9yIHRob3NlIGp1c3QgZGVzY3JpYmVkXG4gKiAtIG1hdGNoZXMgYW55IHZhbGlkIFVuaWNvZGUgc3Vycm9nYXRlIHBhaXJcbiAqIC0gbWF0Y2hlcyBhIGJhY2tzbGFzaCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBsZXR0ZXJzXG4gKiAtIG1hdGNoZXMgYSBiYWNrc2xhc2ggZm9sbG93ZWQgYnkgYW55IEJNUCBjaGFyYWN0ZXIsIGluY2x1ZGluZyBuZXdsaW5lXG4gKiBKdXN0IGJlY2F1c2UgdGhlIExleGVyIG1hdGNoZXMgc29tZXRoaW5nIGRvZXNuJ3QgbWVhbiBpdCdzIHZhbGlkIGlucHV0OlxuICogSWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgZnVuY3Rpb24gb3Igc3ltYm9sIGRlZmluaXRpb24sIHRoZSBQYXJzZXIgd2lsbFxuICogc3RpbGwgcmVqZWN0IHRoZSBpbnB1dC5cbiAqL1xudmFyIGNvbW1lbnRSZWdleFN0cmluZyA9IFwiJVteXFxuXSpbXFxuXVwiO1xudmFyIGNvbnRyb2xXb3JkUmVnZXhTdHJpbmcgPSBcIlxcXFxcXFxcW2EtekEtWkBdK1wiO1xudmFyIGNvbnRyb2xTeW1ib2xSZWdleFN0cmluZyA9IFwiXFxcXFxcXFxbXlxcdUQ4MDAtXFx1REZGRl1cIjtcbnZhciBjb21iaW5pbmdEaWFjcml0aWNhbE1hcmtTdHJpbmcgPSBcIltcXHUwMzAwLVxcdTAzNkZdXCI7XG52YXIgY29tYmluaW5nRGlhY3JpdGljYWxNYXJrc0VuZFJlZ2V4ID0gbmV3IFJlZ0V4cChjb21iaW5pbmdEaWFjcml0aWNhbE1hcmtTdHJpbmcgKyBcIiskXCIpO1xudmFyIHRva2VuUmVnZXggPSBuZXcgUmVnRXhwKFwiKFsgXFxyXFxuXFx0XSspfFwiICsgKCAvLyB3aGl0ZXNwYWNlXG5cIihcIiArIGNvbW1lbnRSZWdleFN0cmluZykgKyAvLyBjb21tZW50c1xuXCJ8WyEtXFxcXFtcXFxcXS1cXHUyMDI3XFx1MjAyQS1cXHVEN0ZGXFx1RjkwMC1cXHVGRkZGXVwiICsgKCAvLyBzaW5nbGUgY29kZXBvaW50XG5jb21iaW5pbmdEaWFjcml0aWNhbE1hcmtTdHJpbmcgKyBcIipcIikgKyAvLyAuLi5wbHVzIGFjY2VudHNcblwifFtcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl1cIiArICggLy8gc3Vycm9nYXRlIHBhaXJcbmNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyArIFwiKlwiKSArIC8vIC4uLnBsdXMgYWNjZW50c1xuXCJ8XFxcXFxcXFx2ZXJiXFxcXCooW15dKS4qP1xcXFwzXCIgKyAvLyBcXHZlcmIqXG5cInxcXFxcXFxcXHZlcmIoW14qYS16QS1aXSkuKj9cXFxcNFwiICsgKCAvLyBcXHZlcmIgdW5zdGFycmVkXG5cInxcIiArIGNvbnRyb2xXb3JkUmVnZXhTdHJpbmcpICsgKCAvLyBcXG1hY3JvTmFtZVxuXCJ8XCIgKyBjb250cm9sU3ltYm9sUmVnZXhTdHJpbmcpICsgLy8gXFxcXCwgXFwnLCBldGMuXG5cIilcIik7XG5cbi8vIHRva2VuUmVnZXggaGFzIG5vIF4gbWFya2VyLCBhcyByZXF1aXJlZCBieSBtYXRjaEF0LlxuLy8gVGhlc2UgcmVnZXhzIGFyZSBmb3IgbWF0Y2hpbmcgcmVzdWx0cyBmcm9tIHRva2VuUmVnZXgsXG4vLyBzbyB0aGV5IGRvIGhhdmUgXiBtYXJrZXJzLlxudmFyIGNvbnRyb2xXb3JkUmVnZXggPSBuZXcgUmVnRXhwKFwiXlwiICsgY29udHJvbFdvcmRSZWdleFN0cmluZyk7XG52YXIgY29tbWVudFJlZ2V4ID0gbmV3IFJlZ0V4cChcIl5cIiArIGNvbW1lbnRSZWdleFN0cmluZyk7XG5cbi8qKiBNYWluIExleGVyIGNsYXNzICovXG5cbnZhciBMZXhlciA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBMZXhlcihpbnB1dCkge1xuICAgICAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19fZGVmYXVsdCgpKHRoaXMsIExleGVyKTtcblxuICAgICAgICAvLyBTZXBhcmF0ZSBhY2NlbnRzIGZyb20gY2hhcmFjdGVyc1xuICAgICAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGxleGVzIGEgc2luZ2xlIHRva2VuLlxuICAgICAqL1xuXG5cbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCgpKExleGVyLCBbe1xuICAgICAgICBrZXk6IFwibGV4XCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLmlucHV0O1xuICAgICAgICAgICAgdmFyIHBvcyA9IHRoaXMucG9zO1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gaW5wdXQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX1Rva2VuX19bXCJhXCIgLyogVG9rZW4gKi9dKFwiRU9GXCIsIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1NvdXJjZUxvY2F0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10odGhpcywgcG9zLCBwb3MpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBtYXRjaCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9tYXRjaF9hdF9fX2RlZmF1bHQoKSh0b2tlblJlZ2V4LCBpbnB1dCwgcG9zKTtcbiAgICAgICAgICAgIGlmIChtYXRjaCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyOiAnXCIgKyBpbnB1dFtwb3NdICsgXCInXCIsIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX1Rva2VuX19bXCJhXCIgLyogVG9rZW4gKi9dKGlucHV0W3Bvc10sIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1NvdXJjZUxvY2F0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10odGhpcywgcG9zLCBwb3MgKyAxKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHRleHQgPSBtYXRjaFsyXSB8fCBcIiBcIjtcbiAgICAgICAgICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICAgICAgdGhpcy5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICAgICAgdmFyIGVuZCA9IHRoaXMucG9zO1xuXG4gICAgICAgICAgICBpZiAoY29tbWVudFJlZ2V4LnRlc3QodGV4dCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX1Rva2VuX19bXCJhXCIgLyogVG9rZW4gKi9dKHRleHQsIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1NvdXJjZUxvY2F0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10odGhpcywgc3RhcnQsIGVuZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIExleGVyO1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJjXCJdID0gKExleGVyKTtcblxuLyoqKi8gfSksXG4vKiA2MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3dlYnBhY2tfZXhwb3J0c19fLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3NyY19rYXRleF9sZXNzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3NyY19rYXRleF9sZXNzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3NyY19rYXRleF9sZXNzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fa2F0ZXhfanNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjUpO1xuLyoqXG4gKiBUaGlzIGlzIHRoZSB3ZWJwYWNrIGVudHJ5IHBvaW50IGZvciBLYVRlWC4gQXMgZmxvd1sxXSBhbmQgamVzdFsyXSBkb2Vzbid0IHN1cHBvcnRcbiAqIENTUyBtb2R1bGVzIG5hdGl2ZWx5LCBhIHNlcGFyYXRlIGVudHJ5IHBvaW50IGlzIHVzZWQgYW5kIGl0IGlzIG5vdCBmbG93dHlwZWQuXG4gKlxuICogWzFdIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2xhbWJkYWhhbmRzL2QxOWUwZGE5NjI4NWI3NDlmMGVmXG4gKiBbMl0gaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vamVzdC9kb2NzL2VuL3dlYnBhY2suaHRtbFxuICovXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fa2F0ZXhfanNfX1tcImFcIiAvKiBkZWZhdWx0ICovXSk7XG5cbi8qKiovIH0pLFxuLyogNjQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gcmVtb3ZlZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuLyoqKi8gfSksXG4vKiA2NSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3NyY19QYXJzZUVycm9yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fc3JjX1NldHRpbmdzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX3NyY19idWlsZFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc3JjX3BhcnNlVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fc3JjX3V0aWxzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXG4vKiBlc2xpbnQgbm8tY29uc29sZTowICovXG4vKipcbiAqIFRoaXMgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIEthVGVYLiBIZXJlLCB3ZSBleHBvc2UgZnVuY3Rpb25zIGZvclxuICogcmVuZGVyaW5nIGV4cHJlc3Npb25zIGVpdGhlciB0byBET00gbm9kZXMgb3IgdG8gbWFya3VwIHN0cmluZ3MuXG4gKlxuICogV2UgYWxzbyBleHBvc2UgdGhlIFBhcnNlRXJyb3IgY2xhc3MgdG8gY2hlY2sgaWYgZXJyb3JzIHRocm93biBmcm9tIEthVGVYIGFyZVxuICogZXJyb3JzIGluIHRoZSBleHByZXNzaW9uLCBvciBlcnJvcnMgaW4gamF2YXNjcmlwdCBoYW5kbGluZy5cbiAqL1xuXG5cblxuXG5cblxuXG5cbi8qKlxuICogUGFyc2UgYW5kIGJ1aWxkIGFuIGV4cHJlc3Npb24sIGFuZCBwbGFjZSB0aGF0IGV4cHJlc3Npb24gaW4gdGhlIERPTSBub2RlXG4gKiBnaXZlbi5cbiAqL1xudmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihleHByZXNzaW9uLCBiYXNlTm9kZSwgb3B0aW9ucykge1xuICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fc3JjX3V0aWxzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uY2xlYXJOb2RlKGJhc2VOb2RlKTtcbiAgICB2YXIgbm9kZSA9IHJlbmRlclRvRG9tVHJlZShleHByZXNzaW9uLCBvcHRpb25zKS50b05vZGUoKTtcbiAgICBiYXNlTm9kZS5hcHBlbmRDaGlsZChub2RlKTtcbn07XG5cbi8vIEthVGVYJ3Mgc3R5bGVzIGRvbid0IHdvcmsgcHJvcGVybHkgaW4gcXVpcmtzIG1vZGUuIFByaW50IG91dCBhbiBlcnJvciwgYW5kXG4vLyBkaXNhYmxlIHJlbmRlcmluZy5cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBpZiAoZG9jdW1lbnQuY29tcGF0TW9kZSAhPT0gXCJDU1MxQ29tcGF0XCIpIHtcbiAgICAgICAgdHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS53YXJuKFwiV2FybmluZzogS2FUZVggZG9lc24ndCB3b3JrIGluIHF1aXJrcyBtb2RlLiBNYWtlIHN1cmUgeW91ciBcIiArIFwid2Vic2l0ZSBoYXMgYSBzdWl0YWJsZSBkb2N0eXBlLlwiKTtcblxuICAgICAgICByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19zcmNfUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiS2FUZVggZG9lc24ndCB3b3JrIGluIHF1aXJrcyBtb2RlLlwiKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbi8qKlxuICogUGFyc2UgYW5kIGJ1aWxkIGFuIGV4cHJlc3Npb24sIGFuZCByZXR1cm4gdGhlIG1hcmt1cCBmb3IgdGhhdC5cbiAqL1xudmFyIHJlbmRlclRvU3RyaW5nID0gZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmcoZXhwcmVzc2lvbiwgb3B0aW9ucykge1xuICAgIHZhciBtYXJrdXAgPSByZW5kZXJUb0RvbVRyZWUoZXhwcmVzc2lvbiwgb3B0aW9ucykudG9NYXJrdXAoKTtcbiAgICByZXR1cm4gbWFya3VwO1xufTtcblxuLyoqXG4gKiBQYXJzZSBhbiBleHByZXNzaW9uIGFuZCByZXR1cm4gdGhlIHBhcnNlIHRyZWUuXG4gKi9cbnZhciBnZW5lcmF0ZVBhcnNlVHJlZSA9IGZ1bmN0aW9uIGdlbmVyYXRlUGFyc2VUcmVlKGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgICB2YXIgc2V0dGluZ3MgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19zcmNfU2V0dGluZ3NfX1tcImFcIiAvKiBkZWZhdWx0ICovXShvcHRpb25zKTtcbiAgICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc3JjX3BhcnNlVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShleHByZXNzaW9uLCBzZXR0aW5ncyk7XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhbmQgcmV0dXJucyB0aGUga2F0ZXggYnVpbGQgdHJlZS4gVGhpcyBpcyB1c2VkIGZvciBhZHZhbmNlZFxuICogdXNlIGNhc2VzIChsaWtlIHJlbmRlcmluZyB0byBjdXN0b20gb3V0cHV0KS5cbiAqL1xudmFyIHJlbmRlclRvRG9tVHJlZSA9IGZ1bmN0aW9uIHJlbmRlclRvRG9tVHJlZShleHByZXNzaW9uLCBvcHRpb25zKSB7XG4gICAgdmFyIHNldHRpbmdzID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fc3JjX1NldHRpbmdzX19bXCJhXCIgLyogZGVmYXVsdCAqL10ob3B0aW9ucyk7XG4gICAgdmFyIHRyZWUgPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19zcmNfcGFyc2VUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGV4cHJlc3Npb24sIHNldHRpbmdzKTtcbiAgICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fc3JjX2J1aWxkVHJlZV9fW1wiYlwiIC8qIGJ1aWxkVHJlZSAqL10pKHRyZWUsIGV4cHJlc3Npb24sIHNldHRpbmdzKTtcbn07XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuZCByZXR1cm5zIHRoZSBrYXRleCBidWlsZCB0cmVlLCB3aXRoIGp1c3QgSFRNTCAobm8gTWF0aE1MKS5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgYWR2YW5jZWQgdXNlIGNhc2VzIChsaWtlIHJlbmRlcmluZyB0byBjdXN0b20gb3V0cHV0KS5cbiAqL1xudmFyIHJlbmRlclRvSFRNTFRyZWUgPSBmdW5jdGlvbiByZW5kZXJUb0hUTUxUcmVlKGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgICB2YXIgc2V0dGluZ3MgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19zcmNfU2V0dGluZ3NfX1tcImFcIiAvKiBkZWZhdWx0ICovXShvcHRpb25zKTtcbiAgICB2YXIgdHJlZSA9IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3NyY19wYXJzZVRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICAgIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19zcmNfYnVpbGRUcmVlX19bXCJhXCIgLyogYnVpbGRIVE1MVHJlZSAqL10pKHRyZWUsIGV4cHJlc3Npb24sIHNldHRpbmdzKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoe1xuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCtNYXRoTUwgY29tYmluYXRpb24sIGFuZCBhZGRzXG4gICAgICogaXQgYXMgYSBjaGlsZCB0byB0aGUgc3BlY2lmaWVkIERPTSBub2RlLlxuICAgICAqL1xuICAgIHJlbmRlcjogcmVuZGVyLFxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCtNYXRoTUwgY29tYmluYXRpb24gc3RyaW5nLFxuICAgICAqIGZvciBzZW5kaW5nIHRvIHRoZSBjbGllbnQuXG4gICAgICovXG4gICAgcmVuZGVyVG9TdHJpbmc6IHJlbmRlclRvU3RyaW5nLFxuICAgIC8qKlxuICAgICAqIEthVGVYIGVycm9yLCB1c3VhbGx5IGR1cmluZyBwYXJzaW5nLlxuICAgICAqL1xuICAgIFBhcnNlRXJyb3I6IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fc3JjX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXSxcbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIGdpdmVuIExhVGVYIGludG8gS2FUZVgncyBpbnRlcm5hbCBwYXJzZSB0cmVlIHN0cnVjdHVyZSxcbiAgICAgKiB3aXRob3V0IHJlbmRlcmluZyB0byBIVE1MIG9yIE1hdGhNTC5cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHB1YmxpYyB1c2UuXG4gICAgICogVGhlIGludGVybmFsIHRyZWUgcmVwcmVzZW50YXRpb24gaXMgdW5zdGFibGUgYW5kIGlzIHZlcnkgbGlrZWx5XG4gICAgICogdG8gY2hhbmdlLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICAgKi9cbiAgICBfX3BhcnNlOiBnZW5lcmF0ZVBhcnNlVHJlZSxcbiAgICAvKipcbiAgICAgKiBSZW5kZXJzIHRoZSBnaXZlbiBMYVRlWCBpbnRvIGFuIEhUTUwrTWF0aE1MIGludGVybmFsIERPTSB0cmVlXG4gICAgICogcmVwcmVzZW50YXRpb24sIHdpdGhvdXQgZmxhdHRlbmluZyB0aGF0IHJlcHJlc2VudGF0aW9uIHRvIGEgc3RyaW5nLlxuICAgICAqXG4gICAgICogTk9URTogVGhpcyBtZXRob2QgaXMgbm90IGN1cnJlbnRseSByZWNvbW1lbmRlZCBmb3IgcHVibGljIHVzZS5cbiAgICAgKiBUaGUgaW50ZXJuYWwgdHJlZSByZXByZXNlbnRhdGlvbiBpcyB1bnN0YWJsZSBhbmQgaXMgdmVyeSBsaWtlbHlcbiAgICAgKiB0byBjaGFuZ2UuIFVzZSBhdCB5b3VyIG93biByaXNrLlxuICAgICAqL1xuICAgIF9fcmVuZGVyVG9Eb21UcmVlOiByZW5kZXJUb0RvbVRyZWUsXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgZ2l2ZW4gTGFUZVggaW50byBhbiBIVE1MIGludGVybmFsIERPTSB0cmVlIHJlcHJlc2VudGF0aW9uLFxuICAgICAqIHdpdGhvdXQgTWF0aE1MIGFuZCB3aXRob3V0IGZsYXR0ZW5pbmcgdGhhdCByZXByZXNlbnRhdGlvbiB0byBhIHN0cmluZy5cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHB1YmxpYyB1c2UuXG4gICAgICogVGhlIGludGVybmFsIHRyZWUgcmVwcmVzZW50YXRpb24gaXMgdW5zdGFibGUgYW5kIGlzIHZlcnkgbGlrZWx5XG4gICAgICogdG8gY2hhbmdlLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICAgKi9cbiAgICBfX3JlbmRlclRvSFRNTFRyZWU6IHJlbmRlclRvSFRNTFRyZWVcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDY2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg2NyksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSksXG4vKiA2NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKDY4KTtcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KS5PYmplY3QuZnJlZXplO1xuXG4vKioqLyB9KSxcbi8qIDY4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDE5LjEuMi41IE9iamVjdC5mcmVlemUoTylcbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjApXG4gICwgbWV0YSAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KS5vbkZyZWV6ZTtcblxuX193ZWJwYWNrX3JlcXVpcmVfXyg0NikoJ2ZyZWV6ZScsIGZ1bmN0aW9uKCRmcmVlemUpe1xuICByZXR1cm4gZnVuY3Rpb24gZnJlZXplKGl0KXtcbiAgICByZXR1cm4gJGZyZWV6ZSAmJiBpc09iamVjdChpdCkgPyAkZnJlZXplKG1ldGEoaXQpKSA6IGl0O1xuICB9O1xufSk7XG5cbi8qKiovIH0pLFxuLyogNjkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIE1FVEEgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikoJ21ldGEnKVxuICAsIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMClcbiAgLCBoYXMgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpXG4gICwgc2V0RGVzYyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KS5mXG4gICwgaWQgICAgICAgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24oKXtcbiAgcmV0dXJuIHRydWU7XG59O1xudmFyIEZSRUVaRSA9ICFfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KShmdW5jdGlvbigpe1xuICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG52YXIgc2V0TWV0YSA9IGZ1bmN0aW9uKGl0KXtcbiAgc2V0RGVzYyhpdCwgTUVUQSwge3ZhbHVlOiB7XG4gICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElEXG4gICAgdzoge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfX0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24oaXQsIGNyZWF0ZSl7XG4gIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcbiAgaWYoIWlzT2JqZWN0KGl0KSlyZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnID8gaXQgOiAodHlwZW9mIGl0ID09ICdzdHJpbmcnID8gJ1MnIDogJ1AnKSArIGl0O1xuICBpZighaGFzKGl0LCBNRVRBKSl7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZighaXNFeHRlbnNpYmxlKGl0KSlyZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYoIWNyZWF0ZSlyZXR1cm4gJ0UnO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBvYmplY3QgSURcbiAgfSByZXR1cm4gaXRbTUVUQV0uaTtcbn07XG52YXIgZ2V0V2VhayA9IGZ1bmN0aW9uKGl0LCBjcmVhdGUpe1xuICBpZighaGFzKGl0LCBNRVRBKSl7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZighaXNFeHRlbnNpYmxlKGl0KSlyZXR1cm4gdHJ1ZTtcbiAgICAvLyBub3QgbmVjZXNzYXJ5IHRvIGFkZCBtZXRhZGF0YVxuICAgIGlmKCFjcmVhdGUpcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbihpdCl7XG4gIGlmKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSlzZXRNZXRhKGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbnZhciBtZXRhID0gbW9kdWxlLmV4cG9ydHMgPSB7XG4gIEtFWTogICAgICBNRVRBLFxuICBORUVEOiAgICAgZmFsc2UsXG4gIGZhc3RLZXk6ICBmYXN0S2V5LFxuICBnZXRXZWFrOiAgZ2V0V2VhayxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuXG4vKioqLyB9KSxcbi8qIDcwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oMjMpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KShmdW5jdGlvbigpe1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fd2VicGFja19yZXF1aXJlX18oNDUpKCdkaXYnKSwgJ2EnLCB7Z2V0OiBmdW5jdGlvbigpeyByZXR1cm4gNzsgfX0pLmEgIT0gNztcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDcxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIFMpe1xuICBpZighaXNPYmplY3QoaXQpKXJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpcmV0dXJuIHZhbDtcbiAgaWYodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuICBpZighUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuXG4vKioqLyB9KSxcbi8qIDcyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICBpZih0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG4vKioqLyB9KSxcbi8qIDczICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg3NCksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSksXG4vKiA3NCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKDc1KTtcbnZhciAkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2Mpe1xuICByZXR1cm4gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcbn07XG5cbi8qKiovIH0pLFxuLyogNzUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKSwgJ09iamVjdCcsIHtkZWZpbmVQcm9wZXJ0eTogX193ZWJwYWNrX3JlcXVpcmVfXygxNSkuZn0pO1xuXG4vKioqLyB9KSxcbi8qIDc2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBidWlsZFRyZWU7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBidWlsZEhUTUxUcmVlOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2J1aWxkSFRNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fYnVpbGRDb21tb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19PcHRpb25zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1NldHRpbmdzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX1N0eWxlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXG5cblxuXG5cblxuXG52YXIgb3B0aW9uc0Zyb21TZXR0aW5ncyA9IGZ1bmN0aW9uIG9wdGlvbnNGcm9tU2V0dGluZ3Moc2V0dGluZ3MpIHtcbiAgICByZXR1cm4gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fT3B0aW9uc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKHtcbiAgICAgICAgc3R5bGU6IHNldHRpbmdzLmRpc3BsYXlNb2RlID8gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLkRJU1BMQVkgOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uVEVYVCxcbiAgICAgICAgbWF4U2l6ZTogc2V0dGluZ3MubWF4U2l6ZVxuICAgIH0pO1xufTtcblxudmFyIGJ1aWxkVHJlZSA9IGZ1bmN0aW9uIGJ1aWxkVHJlZSh0cmVlLCBleHByZXNzaW9uLCBzZXR0aW5ncykge1xuICAgIHZhciBvcHRpb25zID0gb3B0aW9uc0Zyb21TZXR0aW5ncyhzZXR0aW5ncyk7XG4gICAgLy8gYGJ1aWxkSFRNTGAgc29tZXRpbWVzIG1lc3NlcyB3aXRoIHRoZSBwYXJzZSB0cmVlIChsaWtlIHR1cm5pbmcgYmlucyAtPlxuICAgIC8vIG9yZHMpLCBzbyB3ZSBidWlsZCB0aGUgTWF0aE1MIHZlcnNpb24gZmlyc3QuXG4gICAgdmFyIG1hdGhNTE5vZGUgPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZE1hdGhNTF9fW1wiY1wiIC8qIGRlZmF1bHQgKi9dKSh0cmVlLCBleHByZXNzaW9uLCBvcHRpb25zKTtcbiAgICB2YXIgaHRtbE5vZGUgPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19idWlsZEhUTUxfX1tcImNcIiAvKiBkZWZhdWx0ICovXSkodHJlZSwgb3B0aW9ucyk7XG5cbiAgICB2YXIga2F0ZXhOb2RlID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcImthdGV4XCJdLCBbbWF0aE1MTm9kZSwgaHRtbE5vZGVdKTtcblxuICAgIGlmIChzZXR0aW5ncy5kaXNwbGF5TW9kZSkge1xuICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcImthdGV4LWRpc3BsYXlcIl0sIFtrYXRleE5vZGVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga2F0ZXhOb2RlO1xuICAgIH1cbn07XG5cbnZhciBidWlsZEhUTUxUcmVlID0gZnVuY3Rpb24gYnVpbGRIVE1MVHJlZSh0cmVlLCBleHByZXNzaW9uLCBzZXR0aW5ncykge1xuICAgIHZhciBvcHRpb25zID0gb3B0aW9uc0Zyb21TZXR0aW5ncyhzZXR0aW5ncyk7XG4gICAgdmFyIGh0bWxOb2RlID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRIVE1MX19bXCJjXCIgLyogZGVmYXVsdCAqL10pKHRyZWUsIG9wdGlvbnMpO1xuICAgIHZhciBrYXRleE5vZGUgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wia2F0ZXhcIl0sIFtodG1sTm9kZV0pO1xuICAgIGlmIChzZXR0aW5ncy5kaXNwbGF5TW9kZSkge1xuICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcImthdGV4LWRpc3BsYXlcIl0sIFtrYXRleE5vZGVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga2F0ZXhOb2RlO1xuICAgIH1cbn07XG5cbi8qIHVudXNlZCBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBfdW51c2VkX3dlYnBhY2tfZGVmYXVsdF9leHBvcnQgPSAoYnVpbGRUcmVlKTtcblxuLyoqKi8gfSksXG4vKiA3NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNzgpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0pLFxuLyogNzggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGNvcmUgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KVxuICAsICRKU09OID0gY29yZS5KU09OIHx8IChjb3JlLkpTT04gPSB7c3RyaW5naWZ5OiBKU09OLnN0cmluZ2lmeX0pO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzdHJpbmdpZnkoaXQpeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJldHVybiAkSlNPTi5zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3VtZW50cyk7XG59O1xuXG4vKioqLyB9KSxcbi8qIDc5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg4MCksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSksXG4vKiA4MCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTtcbl9fd2VicGFja19yZXF1aXJlX18oOTIpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpLkFycmF5LmZyb207XG5cbi8qKiovIH0pLFxuLyogODEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpXG4gICwgZGVmaW5lZCAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOCk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihUT19TVFJJTkcpe1xuICByZXR1cm4gZnVuY3Rpb24odGhhdCwgcG9zKXtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKVxuICAgICAgLCBpID0gdG9JbnRlZ2VyKHBvcylcbiAgICAgICwgbCA9IHMubGVuZ3RoXG4gICAgICAsIGEsIGI7XG4gICAgaWYoaSA8IDAgfHwgaSA+PSBsKXJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuXG4vKioqLyB9KSxcbi8qIDgyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcblxuLyoqKi8gfSksXG4vKiA4MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpO1xuXG4vKioqLyB9KSxcbi8qIDg0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgY3JlYXRlICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg1KVxuICAsIGRlc2NyaXB0b3IgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMylcbiAgLCBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oNTQpXG4gICwgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbl9fd2VicGFja19yZXF1aXJlX18oMjYpKEl0ZXJhdG9yUHJvdG90eXBlLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KXtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7bmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KX0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG5cbi8qKiovIH0pLFxuLyogODUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKVxuICAsIGRQcyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4NilcbiAgLCBlbnVtQnVnS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oNTMpXG4gICwgSUVfUFJPVE8gICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKSgnSUVfUFJPVE8nKVxuICAsIEVtcHR5ICAgICAgID0gZnVuY3Rpb24oKXsgLyogZW1wdHkgKi8gfVxuICAsIFBST1RPVFlQRSAgID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24oKXtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDUpKCdpZnJhbWUnKVxuICAgICwgaSAgICAgID0gZW51bUJ1Z0tleXMubGVuZ3RoXG4gICAgLCBsdCAgICAgPSAnPCdcbiAgICAsIGd0ICAgICA9ICc+J1xuICAgICwgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICBfX3dlYnBhY2tfcmVxdWlyZV9fKDkwKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZShpLS0pZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpe1xuICB2YXIgcmVzdWx0O1xuICBpZihPICE9PSBudWxsKXtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5O1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuXG4vKioqLyB9KSxcbi8qIDg2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBkUCAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG4gICwgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKVxuICAsIGdldEtleXMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSk7XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcyl7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyAgID0gZ2V0S2V5cyhQcm9wZXJ0aWVzKVxuICAgICwgbGVuZ3RoID0ga2V5cy5sZW5ndGhcbiAgICAsIGkgPSAwXG4gICAgLCBQO1xuICB3aGlsZShsZW5ndGggPiBpKWRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcblxuLyoqKi8gfSksXG4vKiA4NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaGFzICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSlcbiAgLCB0b0lPYmplY3QgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKVxuICAsIGFycmF5SW5kZXhPZiA9IF9fd2VicGFja19yZXF1aXJlX18oODgpKGZhbHNlKVxuICAsIElFX1BST1RPICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNDEpKCdJRV9QUk9UTycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iamVjdCwgbmFtZXMpe1xuICB2YXIgTyAgICAgID0gdG9JT2JqZWN0KG9iamVjdClcbiAgICAsIGkgICAgICA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBrZXk7XG4gIGZvcihrZXkgaW4gTylpZihrZXkgIT0gSUVfUFJPVE8paGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZShuYW1lcy5sZW5ndGggPiBpKWlmKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSl7XG4gICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqKi8gfSksXG4vKiA4OCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyBmYWxzZSAtPiBBcnJheSNpbmRleE9mXG4vLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xudmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNDApXG4gICwgdG9MZW5ndGggID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSlcbiAgLCB0b0luZGV4ICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg5KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oSVNfSU5DTFVERVMpe1xuICByZXR1cm4gZnVuY3Rpb24oJHRoaXMsIGVsLCBmcm9tSW5kZXgpe1xuICAgIHZhciBPICAgICAgPSB0b0lPYmplY3QoJHRoaXMpXG4gICAgICAsIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKVxuICAgICAgLCBpbmRleCAgPSB0b0luZGV4KGZyb21JbmRleCwgbGVuZ3RoKVxuICAgICAgLCB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgaWYoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpd2hpbGUobGVuZ3RoID4gaW5kZXgpe1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgaWYodmFsdWUgIT0gdmFsdWUpcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjdG9JbmRleCBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKWlmKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pe1xuICAgICAgaWYoT1tpbmRleF0gPT09IGVsKXJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbi8qKiovIH0pLFxuLyogODkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpXG4gICwgbWF4ICAgICAgID0gTWF0aC5tYXhcbiAgLCBtaW4gICAgICAgPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaW5kZXgsIGxlbmd0aCl7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuXG4vKioqLyB9KSxcbi8qIDkwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNikuZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4vKioqLyB9KSxcbi8qIDkxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKVxuICAsIHRvT2JqZWN0ICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSlcbiAgLCBJRV9QUk9UTyAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNDEpKCdJRV9QUk9UTycpXG4gICwgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbihPKXtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZihoYXMoTywgSUVfUFJPVE8pKXJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcil7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuLyoqKi8gfSksXG4vKiA5MiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGN0eCAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NylcbiAgLCAkZXhwb3J0ICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpXG4gICwgdG9PYmplY3QgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KVxuICAsIGNhbGwgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MylcbiAgLCBpc0FycmF5SXRlciAgICA9IF9fd2VicGFja19yZXF1aXJlX18oOTQpXG4gICwgdG9MZW5ndGggICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUxKVxuICAsIGNyZWF0ZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5NSlcbiAgLCBnZXRJdGVyRm4gICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNTUpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFfX3dlYnBhY2tfcmVxdWlyZV9fKDk2KShmdW5jdGlvbihpdGVyKXsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZS8qLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCovKXtcbiAgICB2YXIgTyAgICAgICA9IHRvT2JqZWN0KGFycmF5TGlrZSlcbiAgICAgICwgQyAgICAgICA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXlcbiAgICAgICwgYUxlbiAgICA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgICwgbWFwZm4gICA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkXG4gICAgICAsIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkXG4gICAgICAsIGluZGV4ICAgPSAwXG4gICAgICAsIGl0ZXJGbiAgPSBnZXRJdGVyRm4oTylcbiAgICAgICwgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmKG1hcHBpbmcpbWFwZm4gPSBjdHgobWFwZm4sIGFMZW4gPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2VcbiAgICBpZihpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSl7XG4gICAgICBmb3IoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgcmVzdWx0ID0gbmV3IEM7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKyl7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgICAgZm9yKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKXtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcblxuXG4vKioqLyB9KSxcbi8qIDkzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICB9IGNhdGNoKGUpe1xuICAgIHZhciByZXQgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gICAgaWYocmV0ICE9PSB1bmRlZmluZWQpYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG4vKioqLyB9KSxcbi8qIDk0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3JcbnZhciBJdGVyYXRvcnMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNylcbiAgLCBJVEVSQVRPUiAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSkoJ2l0ZXJhdG9yJylcbiAgLCBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07XG5cbi8qKiovIH0pLFxuLyogOTUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuICAsIGNyZWF0ZURlc2MgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzMpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iamVjdCwgaW5kZXgsIHZhbHVlKXtcbiAgaWYoaW5kZXggaW4gb2JqZWN0KSRkZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwgaW5kZXgsIGNyZWF0ZURlc2MoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG59O1xuXG4vKioqLyB9KSxcbi8qIDk2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBJVEVSQVRPUiAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSgnaXRlcmF0b3InKVxuICAsIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uKCl7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07XG4gIEFycmF5LmZyb20ocml0ZXIsIGZ1bmN0aW9uKCl7IHRocm93IDI7IH0pO1xufSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMsIHNraXBDbG9zaW5nKXtcbiAgaWYoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgID0gWzddXG4gICAgICAsIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24oKXsgcmV0dXJuIHtkb25lOiBzYWZlID0gdHJ1ZX07IH07XG4gICAgYXJyW0lURVJBVE9SXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG5cbi8qKiovIH0pLFxuLyogOTcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxubW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDk4KSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9KSxcbi8qIDk4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oNTgpO1xuX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAyKTtcblxuLyoqKi8gfSksXG4vKiA5OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGFkZFRvVW5zY29wYWJsZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMClcbiAgLCBzdGVwICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDEpXG4gICwgSXRlcmF0b3JzICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpXG4gICwgdG9JT2JqZWN0ICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNDApO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNDgpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbihpdGVyYXRlZCwga2luZCl7XG4gIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcbi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24oKXtcbiAgdmFyIE8gICAgID0gdGhpcy5fdFxuICAgICwga2luZCAgPSB0aGlzLl9rXG4gICAgLCBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpe1xuICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHN0ZXAoMSk7XG4gIH1cbiAgaWYoa2luZCA9PSAna2V5cycgIClyZXR1cm4gc3RlcCgwLCBpbmRleCk7XG4gIGlmKGtpbmQgPT0gJ3ZhbHVlcycpcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcbkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuXG4vKioqLyB9KSxcbi8qIDEwMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCl7IC8qIGVtcHR5ICovIH07XG5cbi8qKiovIH0pLFxuLyogMTAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZG9uZSwgdmFsdWUpe1xuICByZXR1cm4ge3ZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lfTtcbn07XG5cbi8qKiovIH0pLFxuLyogMTAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBjbGFzc29mICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KVxuICAsIElURVJBVE9SICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpKCdpdGVyYXRvcicpXG4gICwgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oOCkuaXNJdGVyYWJsZSA9IGZ1bmN0aW9uKGl0KXtcbiAgdmFyIE8gPSBPYmplY3QoaXQpO1xuICByZXR1cm4gT1tJVEVSQVRPUl0gIT09IHVuZGVmaW5lZFxuICAgIHx8ICdAQGl0ZXJhdG9yJyBpbiBPXG4gICAgfHwgSXRlcmF0b3JzLmhhc093blByb3BlcnR5KGNsYXNzb2YoTykpO1xufTtcblxuLyoqKi8gfSksXG4vKiAxMDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuX193ZWJwYWNrX3JlcXVpcmVfXyg1OCk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTtcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDQpO1xuXG4vKioqLyB9KSxcbi8qIDEwNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKVxuICAsIGdldCAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oOCkuZ2V0SXRlcmF0b3IgPSBmdW5jdGlvbihpdCl7XG4gIHZhciBpdGVyRm4gPSBnZXQoaXQpO1xuICBpZih0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIHJldHVybiBhbk9iamVjdChpdGVyRm4uY2FsbChpdCkpO1xufTtcblxuLyoqKi8gfSksXG4vKiAxMDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxubW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSksXG4vKiAxMDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuX193ZWJwYWNrX3JlcXVpcmVfXygxMDcpO1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpLk9iamVjdC5hc3NpZ247XG5cbi8qKiovIH0pLFxuLyogMTA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIDE5LjEuMy4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpXG52YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiwgJ09iamVjdCcsIHthc3NpZ246IF9fd2VicGFja19yZXF1aXJlX18oMTA4KX0pO1xuXG4vKioqLyB9KSxcbi8qIDEwOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIGdldEtleXMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSlcbiAgLCBnT1BTICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTA5KVxuICAsIHBJRSAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTApXG4gICwgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KVxuICAsIElPYmplY3QgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSlcbiAgLCAkYXNzaWduICA9IE9iamVjdC5hc3NpZ247XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KShmdW5jdGlvbigpe1xuICB2YXIgQSA9IHt9XG4gICAgLCBCID0ge31cbiAgICAsIFMgPSBTeW1ib2woKVxuICAgICwgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyBCW2tdID0gazsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLO1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUICAgICA9IHRvT2JqZWN0KHRhcmdldClcbiAgICAsIGFMZW4gID0gYXJndW1lbnRzLmxlbmd0aFxuICAgICwgaW5kZXggPSAxXG4gICAgLCBnZXRTeW1ib2xzID0gZ09QUy5mXG4gICAgLCBpc0VudW0gICAgID0gcElFLmY7XG4gIHdoaWxlKGFMZW4gPiBpbmRleCl7XG4gICAgdmFyIFMgICAgICA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKVxuICAgICAgLCBrZXlzICAgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpXG4gICAgICAsIGxlbmd0aCA9IGtleXMubGVuZ3RoXG4gICAgICAsIGogICAgICA9IDBcbiAgICAgICwga2V5O1xuICAgIHdoaWxlKGxlbmd0aCA+IGopaWYoaXNFbnVtLmNhbGwoUywga2V5ID0ga2V5c1tqKytdKSlUW2tleV0gPSBTW2tleV07XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjtcblxuLyoqKi8gfSksXG4vKiAxMDkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqKi8gfSksXG4vKiAxMTAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKiovIH0pLFxuLyogMTExICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG4vKipcbiAqIFRoaXMgZmlsZSBwcm92aWRlcyBzdXBwb3J0IHRvIGRvbVRyZWUuanNcbiAqIEl0J3MgYSBzdG9yZWhvdXNlIG9mIHBhdGggZ2VvbWV0cnkgZm9yIFNWRyBpbWFnZXMuXG4gKi9cblxuLy8gV2UgZG8gZnJhYy1saW5lcywgdW5kZXJsaW5lcywgYW5kIG92ZXJsaW5lcyB3aXRoIGFuIFNWRyBwYXRoIGFuZCB3ZSBwdXQgdGhhdFxuLy8gcGF0aCBpcyBpbnRvIGEgdmlld0JveCB0aGF0IGlzIDUgdGltZXMgYXMgdGhpY2sgYXMgdGhlIGxpbmUuIFRoYXQgd2F5LFxuLy8gYW55IGJyb3dzZXIgcm91bmRpbmcgZXJyb3Igb24gdGhlIHNpemUgb2YgdGhlIHN1cnJvdW5kaW5nIHNwYW4gd2lsbFxuLy8gbm90IHBpbmNoIHRoZSBpbmsgb2YgdGhlIGxpbmUuICBUaGluayBvZiBpdCBhcyBwYWRkaW5nIGZvciB0aGUgbGluZS5cbi8vIEFzIHVzdWFsLCB0aGUgdmlld0JveC10by1lbSBzY2FsZSBpcyAxMDAwLlxuXG52YXIgaExpbmVQYWQgPSA4MDsgLy8gcGFkZGluZyBhYm92ZSBhbmQgYmVsb3cgYSBzdGQgMC4wNGVtIGhvcml6IHJ1bGUuXG52YXIgdkxpbmVQYWQgPSAxMDA7IC8vIHBhZGRpbmcgb24gZWl0aGVyIHNpZGUgb2YgYSBzdGQgdmVydCAwLjA1ZW0gcnVsZS5cblxudmFyIHBhdGggPSB7XG4gICAgLy8gc3RkSG9yaXpSdWxlIGlzIHVzZWQgZm9yIGZyYWMtbGluZXMsIHVuZGVybGluZXMsIGFuZCBvdmVybGluZXMuXG4gICAgLy8gSXQgaXMgMC4wNGVtIHRoaWNrIGlmIHRoZSBsaW5lIGNvbWVzIGZyb20gbm9ybWFsc2l6ZS90ZXh0c3R5bGUuXG4gICAgc3RkSG9yaXpSdWxlOiBcIk0wIFwiICsgaExpbmVQYWQgKyBcIkg0MDAwMDAgdjQwSDB6IE0wIFwiICsgaExpbmVQYWQgKyBcIkg0MDAwMDAgdjQwSDB6XCIsXG5cbiAgICAvLyB2ZXJ0U2VwYXJhdG9yIGlzIHVzZWQgaW4gYXJyYXlzLiBJdCBpcyAwLjA1ZW0gd2lkZSBpbiBhIDAuMjVlbSB2aWV3Qm94LlxuICAgIHZlcnRTZXBhcmF0b3I6IFwiTVwiICsgdkxpbmVQYWQgKyBcIiAwaDUwVjQwMDAwMGgtNTB6TVwiICsgdkxpbmVQYWQgKyBcIiAwaDUwVjQwMDAwMGgtNTB6XCIsXG5cbiAgICAvLyBzcXJ0TWFpbiBwYXRoIGdlb21ldHJ5IGlzIGZyb20gZ2x5cGggVTIyMUEgaW4gdGhlIGZvbnQgS2FUZVggTWFpblxuICAgIC8vIEFsbCBzdXJkcyBoYXZlIDgwIHVuaXRzIHBhZGRpbmcgYWJvdmUgdGhlIHZpbmljdWx1bW4uXG4gICAgc3FydE1haW46IFwiTTk1LFwiICsgKDYyMiArIGhMaW5lUGFkKSArIFwiYy0yLjcsMCwtNy4xNywtMi43LC0xMy41LC04Yy01LjgsLTUuMywtOS41LFxcbi0xMCwtOS41LC0xNGMwLC0yLDAuMywtMy4zLDEsLTRjMS4zLC0yLjcsMjMuODMsLTIwLjcsNjcuNSwtNTRjNDQuMiwtMzMuMyw2NS44LFxcbi01MC4zLDY2LjUsLTUxYzEuMywtMS4zLDMsLTIsNSwtMmM0LjcsMCw4LjcsMy4zLDEyLDEwczE3MywzNzgsMTczLDM3OGMwLjcsMCxcXG4zNS4zLC03MSwxMDQsLTIxM2M2OC43LC0xNDIsMTM3LjUsLTI4NSwyMDYuNSwtNDI5YzY5LC0xNDQsMTA0LjUsLTIxNy43LDEwNi41LFxcbi0yMjFjNS4zLC05LjMsMTIsLTE0LDIwLC0xNEg0MDAwMDB2NDBIODQ1LjI3MjRzLTIyNS4yNzIsNDY3LC0yMjUuMjcyLDQ2N1xcbnMtMjM1LDQ4NiwtMjM1LDQ4NmMtMi43LDQuNywtOSw3LC0xOSw3Yy02LDAsLTEwLC0xLC0xMiwtM3MtMTk0LC00MjIsLTE5NCwtNDIyXFxucy02NSw0NywtNjUsNDd6IE04MzQgXCIgKyBoTGluZVBhZCArIFwiSDQwMDAwMHY0MEg4NDV6XCIsXG5cbiAgICAvLyBzaXplMSBpcyBmcm9tIGdseXBoIFUyMjFBIGluIHRoZSBmb250IEthVGVYX1NpemUxLVJlZ3VsYXJcbiAgICBzcXJ0U2l6ZTE6IFwiTTI2MyxcIiArICg2MDEgKyBoTGluZVBhZCkgKyBcImMwLjcsMCwxOCwzOS43LDUyLDExOWMzNCw3OS4zLDY4LjE2NyxcXG4xNTguNywxMDIuNSwyMzhjMzQuMyw3OS4zLDUxLjgsMTE5LjMsNTIuNSwxMjBjMzQwLC03MDQuNyw1MTAuNywtMTA2MC4zLDUxMiwtMTA2N1xcbmM0LjcsLTcuMywxMSwtMTEsMTksLTExSDQwMDAwdjQwSDEwMTIuM3MtMjcxLjMsNTY3LC0yNzEuMyw1NjdjLTM4LjcsODAuNywtODQsXFxuMTc1LC0xMzYsMjgzYy01MiwxMDgsLTg5LjE2NywxODUuMywtMTExLjUsMjMyYy0yMi4zLDQ2LjcsLTMzLjgsNzAuMywtMzQuNSw3MVxcbmMtNC43LDQuNywtMTIuMyw3LC0yMyw3cy0xMiwtMSwtMTIsLTFzLTEwOSwtMjUzLC0xMDksLTI1M2MtNzIuNywtMTY4LC0xMDkuMyxcXG4tMjUyLC0xMTAsLTI1MmMtMTAuNyw4LC0yMiwxNi43LC0zNCwyNmMtMjIsMTcuMywtMzMuMywyNiwtMzQsMjZzLTI2LC0yNiwtMjYsLTI2XFxuczc2LC01OSw3NiwtNTlzNzYsLTYwLDc2LC02MHogTTEwMDEgXCIgKyBoTGluZVBhZCArIFwiSDQwMDAwdjQwSDEwMTJ6XCIsXG5cbiAgICAvLyBzaXplMiBpcyBmcm9tIGdseXBoIFUyMjFBIGluIHRoZSBmb250IEthVGVYX1NpemUyLVJlZ3VsYXJcbiAgICAvLyBUaGUgODAgdW5pdHMgcGFkZGluZyBpcyBtb3N0IG9idmlvdXMgaGVyZS4gTm90ZSBzdGFydCBub2RlIGF0IE0xMDAxIDgwLlxuICAgIHNxcnRTaXplMjogXCJNMTAwMSxcIiArIGhMaW5lUGFkICsgXCJINDAwMDAwdjQwSDEwMTMuMXMtODMuNCwyNjgsLTI2NC4xLDg0MGMtMTgwLjcsXFxuNTcyLC0yNzcsODc2LjMsLTI4OSw5MTNjLTQuNyw0LjcsLTEyLjcsNywtMjQsN3MtMTIsMCwtMTIsMGMtMS4zLC0zLjMsLTMuNywtMTEuNyxcXG4tNywtMjVjLTM1LjMsLTEyNS4zLC0xMDYuNywtMzczLjMsLTIxNCwtNzQ0Yy0xMCwxMiwtMjEsMjUsLTMzLDM5cy0zMiwzOSwtMzIsMzlcXG5jLTYsLTUuMywtMTUsLTE0LC0yNywtMjZzMjUsLTMwLDI1LC0zMGMyNi43LC0zMi43LDUyLC02Myw3NiwtOTFzNTIsLTYwLDUyLC02MFxcbnMyMDgsNzIyLDIwOCw3MjJjNTYsLTE3NS4zLDEyNi4zLC0zOTcuMywyMTEsLTY2NmM4NC43LC0yNjguNywxNTMuOCwtNDg4LjIsMjA3LjUsXFxuLTY1OC41YzUzLjcsLTE3MC4zLDg0LjUsLTI2Ni44LDkyLjUsLTI4OS41YzQsLTYuNywxMCwtMTAsMTgsLTEwelxcbk0xMDAxIFwiICsgaExpbmVQYWQgKyBcIkg0MDAwMDB2NDBIMTAxM3pcIixcblxuICAgIC8vIHNpemUzIGlzIGZyb20gZ2x5cGggVTIyMUEgaW4gdGhlIGZvbnQgS2FUZVhfU2l6ZTMtUmVndWxhclxuICAgIHNxcnRTaXplMzogXCJNNDI0LFwiICsgKDIzOTggKyBoTGluZVBhZCkgKyBcImMtMS4zLC0wLjcsLTM4LjUsLTE3MiwtMTExLjUsLTUxNGMtNzMsXFxuLTM0MiwtMTA5LjgsLTUxMy4zLC0xMTAuNSwtNTE0YzAsLTIsLTEwLjcsMTQuMywtMzIsNDljLTQuNyw3LjMsLTkuOCwxNS43LC0xNS41LFxcbjI1Yy01LjcsOS4zLC05LjgsMTYsLTEyLjUsMjBzLTUsNywtNSw3Yy00LC0zLjMsLTguMywtNy43LC0xMywtMTNzLTEzLC0xMywtMTMsXFxuLTEzczc2LC0xMjIsNzYsLTEyMnM3NywtMTIxLDc3LC0xMjFzMjA5LDk2OCwyMDksOTY4YzAsLTIsODQuNywtMzYxLjcsMjU0LC0xMDc5XFxuYzE2OS4zLC03MTcuMywyNTQuNywtMTA3Ny43LDI1NiwtMTA4MWM0LC02LjcsMTAsLTEwLDE4LC0xMEg0MDAwMDB2NDBIMTAxNC42XFxucy04Ny4zLDM3OC43LC0yNzIuNiwxMTY2Yy0xODUuMyw3ODcuMywtMjc5LjMsMTE4Mi4zLC0yODIsMTE4NWMtMiw2LC0xMCw5LC0yNCw5XFxuYy04LDAsLTEyLC0wLjcsLTEyLC0yeiBNMTAwMSBcIiArIGhMaW5lUGFkICsgXCJINDAwMDAwdjQwSDEwMTR6XCIsXG5cbiAgICAvLyBzaXplNCBpcyBmcm9tIGdseXBoIFUyMjFBIGluIHRoZSBmb250IEthVGVYX1NpemU0LVJlZ3VsYXJcbiAgICBzcXJ0U2l6ZTQ6IFwiTTQ3MyxcIiArICgyNzEzICsgaExpbmVQYWQpICsgXCJjMzM5LjMsLTE3OTkuMyw1MDkuMywtMjcwMCw1MTAsLTI3MDJcXG5jMy4zLC03LjMsOS4zLC0xMSwxOCwtMTFINDAwMDAwdjQwSDEwMTcuN3MtOTAuNSw0NzgsLTI3Ni4yLDE0NjZjLTE4NS43LDk4OCxcXG4tMjc5LjUsMTQ4MywtMjgxLjUsMTQ4NWMtMiw2LC0xMCw5LC0yNCw5Yy04LDAsLTEyLC0wLjcsLTEyLC0yYzAsLTEuMywtNS4zLC0zMixcXG4tMTYsLTkyYy01MC43LC0yOTMuMywtMTE5LjcsLTY5My4zLC0yMDcsLTEyMDBjMCwtMS4zLC01LjMsOC43LC0xNiwzMGMtMTAuNyxcXG4yMS4zLC0yMS4zLDQyLjcsLTMyLDY0cy0xNiwzMywtMTYsMzNzLTI2LC0yNiwtMjYsLTI2czc2LC0xNTMsNzYsLTE1M3M3NywtMTUxLFxcbjc3LC0xNTFjMC43LDAuNywzNS43LDIwMiwxMDUsNjA0YzY3LjMsNDAwLjcsMTAyLDYwMi43LDEwNCw2MDZ6XFxuTTEwMDEgXCIgKyBoTGluZVBhZCArIFwiSDQwMDAwMHY0MEgxMDE3elwiLFxuXG4gICAgLy8gVGhlIGRvdWJsZWxlZnRhcnJvdyBnZW9tZXRyeSBpcyBmcm9tIGdseXBoIFUrMjFEMCBpbiB0aGUgZm9udCBLYVRlWCBNYWluXG4gICAgZG91YmxlbGVmdGFycm93OiBcIk0yNjIgMTU3XFxubDEwLTEwYzM0LTM2IDYyLjctNzcgODYtMTIzIDMuMy04IDUtMTMuMyA1LTE2IDAtNS4zLTYuNy04LTIwLTgtNy4zXFxuIDAtMTIuMi41LTE0LjUgMS41LTIuMyAxLTQuOCA0LjUtNy41IDEwLjUtNDkuMyA5Ny4zLTEyMS43IDE2OS4zLTIxNyAyMTYtMjhcXG4gMTQtNTcuMyAyNS04OCAzMy02LjcgMi0xMSAzLjgtMTMgNS41LTIgMS43LTMgNC4yLTMgNy41czEgNS44IDMgNy41XFxuYzIgMS43IDYuMyAzLjUgMTMgNS41IDY4IDE3LjMgMTI4LjIgNDcuOCAxODAuNSA5MS41IDUyLjMgNDMuNyA5My44IDk2LjIgMTI0LjVcXG4gMTU3LjUgOS4zIDggMTUuMyAxMi4zIDE4IDEzaDZjMTItLjcgMTgtNCAxOC0xMCAwLTItMS43LTctNS0xNS0yMy4zLTQ2LTUyLTg3XFxuLTg2LTEyM2wtMTAtMTBoMzk5NzM4di00MEgyMThjMzI4IDAgMCAwIDAgMGwtMTAtOGMtMjYuNy0yMC02NS43LTQzLTExNy02OSAyLjdcXG4tMiA2LTMuNyAxMC01IDM2LjctMTYgNzIuMy0zNy4zIDEwNy02NGwxMC04aDM5OTc4MnYtNDB6XFxubTggMHY0MGgzOTk3MzB2LTQwem0wIDE5NHY0MGgzOTk3MzB2LTQwelwiLFxuXG4gICAgLy8gZG91YmxlcmlnaHRhcnJvdyBpcyBmcm9tIGdseXBoIFUrMjFEMiBpbiBmb250IEthVGVYIE1haW5cbiAgICBkb3VibGVyaWdodGFycm93OiBcIk0zOTk3MzggMzkybFxcbi0xMCAxMGMtMzQgMzYtNjIuNyA3Ny04NiAxMjMtMy4zIDgtNSAxMy4zLTUgMTYgMCA1LjMgNi43IDggMjAgOCA3LjMgMCAxMi4yLS41XFxuIDE0LjUtMS41IDIuMy0xIDQuOC00LjUgNy41LTEwLjUgNDkuMy05Ny4zIDEyMS43LTE2OS4zIDIxNy0yMTYgMjgtMTQgNTcuMy0yNSA4OFxcbi0zMyA2LjctMiAxMS0zLjggMTMtNS41IDItMS43IDMtNC4yIDMtNy41cy0xLTUuOC0zLTcuNWMtMi0xLjctNi4zLTMuNS0xMy01LjUtNjhcXG4tMTcuMy0xMjguMi00Ny44LTE4MC41LTkxLjUtNTIuMy00My43LTkzLjgtOTYuMi0xMjQuNS0xNTcuNS05LjMtOC0xNS4zLTEyLjMtMThcXG4tMTNoLTZjLTEyIC43LTE4IDQtMTggMTAgMCAyIDEuNyA3IDUgMTUgMjMuMyA0NiA1MiA4NyA4NiAxMjNsMTAgMTBIMHY0MGgzOTk3ODJcXG5jLTMyOCAwIDAgMCAwIDBsMTAgOGMyNi43IDIwIDY1LjcgNDMgMTE3IDY5LTIuNyAyLTYgMy43LTEwIDUtMzYuNyAxNi03Mi4zIDM3LjNcXG4tMTA3IDY0bC0xMCA4SDB2NDB6TTAgMTU3djQwaDM5OTczMHYtNDB6bTAgMTk0djQwaDM5OTczMHYtNDB6XCIsXG5cbiAgICAvLyBsZWZ0YXJyb3cgaXMgZnJvbSBnbHlwaCBVKzIxOTAgaW4gZm9udCBLYVRlWCBNYWluXG4gICAgbGVmdGFycm93OiBcIk00MDAwMDAgMjQxSDExMGwzLTNjNjguNy01Mi43IDExMy43LTEyMFxcbiAxMzUtMjAyIDQtMTQuNyA2LTIzIDYtMjUgMC03LjMtNy0xMS0yMS0xMS04IDAtMTMuMi44LTE1LjUgMi41LTIuMyAxLjctNC4yIDUuOFxcbi01LjUgMTIuNS0xLjMgNC43LTIuNyAxMC4zLTQgMTctMTIgNDguNy0zNC44IDkyLTY4LjUgMTMwUzY1LjMgMjI4LjMgMTggMjQ3XFxuYy0xMCA0LTE2IDcuNy0xOCAxMSAwIDguNyA2IDE0LjMgMTggMTcgNDcuMyAxOC43IDg3LjggNDcgMTIxLjUgODVTMTk2IDQ0MS4zIDIwOFxcbiA0OTBjLjcgMiAxLjMgNSAyIDlzMS4yIDYuNyAxLjUgOGMuMyAxLjMgMSAzLjMgMiA2czIuMiA0LjUgMy41IDUuNWMxLjMgMSAzLjNcXG4gMS44IDYgMi41czYgMSAxMCAxYzE0IDAgMjEtMy43IDIxLTExIDAtMi0yLTEwLjMtNi0yNS0yMC03OS4zLTY1LTE0Ni43LTEzNS0yMDJcXG4gbC0zLTNoMzk5ODkwek0xMDAgMjQxdjQwaDM5OTkwMHYtNDB6XCIsXG5cbiAgICAvLyBvdmVyYnJhY2UgaXMgZnJvbSBnbHlwaHMgVSsyM0E5LzIzQTgvMjNBNyBpbiBmb250IEthVGVYX1NpemU0LVJlZ3VsYXJcbiAgICBsZWZ0YnJhY2U6IFwiTTYgNTQ4bC02LTZ2LTM1bDYtMTFjNTYtMTA0IDEzNS4zLTE4MS4zIDIzOC0yMzIgNTcuMy0yOC43IDExN1xcbi00NSAxNzktNTBoMzk5NTc3djEyMEg0MDNjLTQzLjMgNy04MSAxNS0xMTMgMjYtMTAwLjcgMzMtMTc5LjcgOTEtMjM3IDE3NC0yLjdcXG4gNS02IDktMTAgMTMtLjcgMS03LjMgMS0yMCAxSDZ6XCIsXG5cbiAgICBsZWZ0YnJhY2V1bmRlcjogXCJNMCA2bDYtNmgxN2MxMi42ODggMCAxOS4zMTMuMyAyMCAxIDQgNCA3LjMxMyA4LjMgMTAgMTNcXG4gMzUuMzEzIDUxLjMgODAuODEzIDkzLjggMTM2LjUgMTI3LjUgNTUuNjg4IDMzLjcgMTE3LjE4OCA1NS44IDE4NC41IDY2LjUuNjg4XFxuIDAgMiAuMyA0IDEgMTguNjg4IDIuNyA3NiA0LjMgMTcyIDVoMzk5NDUwdjEyMEg0MjlsLTYtMWMtMTI0LjY4OC04LTIzNS02MS43XFxuLTMzMS0xNjFDNjAuNjg3IDEzOC43IDMyLjMxMiA5OS4zIDcgNTRMMCA0MVY2elwiLFxuXG4gICAgLy8gb3Zlcmdyb3VwIGlzIGZyb20gdGhlIE1uU3ltYm9sIHBhY2thZ2UgKHB1YmxpYyBkb21haW4pXG4gICAgbGVmdGdyb3VwOiBcIk00MDAwMDAgODBcXG5INDM1QzY0IDgwIDE2OC4zIDIyOS40IDIxIDI2MGMtNS45IDEuMi0xOCAwLTE4IDAtMiAwLTMtMS0zLTN2LTM4Qzc2IDYxIDI1NyAwXFxuIDQzNSAwaDM5OTU2NXpcIixcblxuICAgIGxlZnRncm91cHVuZGVyOiBcIk00MDAwMDAgMjYyXFxuSDQzNUM2NCAyNjIgMTY4LjMgMTEyLjYgMjEgODJjLTUuOS0xLjItMTggMC0xOCAwLTIgMC0zIDEtMyAzdjM4Yzc2IDE1OCAyNTcgMjE5XFxuIDQzNSAyMTloMzk5NTY1elwiLFxuXG4gICAgLy8gSGFycG9vbnMgYXJlIGZyb20gZ2x5cGggVSsyMUJEIGluIGZvbnQgS2FUZVggTWFpblxuICAgIGxlZnRoYXJwb29uOiBcIk0wIDI2N2MuNyA1LjMgMyAxMCA3IDE0aDM5OTk5M3YtNDBIOTNjMy4zXFxuLTMuMyAxMC4yLTkuNSAyMC41LTE4LjVzMTcuOC0xNS44IDIyLjUtMjAuNWM1MC43LTUyIDg4LTExMC4zIDExMi0xNzUgNC0xMS4zIDVcXG4tMTguMyAzLTIxLTEuMy00LTcuMy02LTE4LTYtOCAwLTEzIC43LTE1IDJzLTQuNyA2LjctOCAxNmMtNDIgOTguNy0xMDcuMyAxNzQuN1xcbi0xOTYgMjI4LTYuNyA0LjctMTAuNyA4LTEyIDEwLTEuMyAyLTIgNS43LTIgMTF6bTEwMC0yNnY0MGgzOTk5MDB2LTQwelwiLFxuXG4gICAgbGVmdGhhcnBvb25wbHVzOiBcIk0wIDI2N2MuNyA1LjMgMyAxMCA3IDE0aDM5OTk5M3YtNDBIOTNjMy4zLTMuMyAxMC4yLTkuNVxcbiAyMC41LTE4LjVzMTcuOC0xNS44IDIyLjUtMjAuNWM1MC43LTUyIDg4LTExMC4zIDExMi0xNzUgNC0xMS4zIDUtMTguMyAzLTIxLTEuM1xcbi00LTcuMy02LTE4LTYtOCAwLTEzIC43LTE1IDJzLTQuNyA2LjctOCAxNmMtNDIgOTguNy0xMDcuMyAxNzQuNy0xOTYgMjI4LTYuNyA0LjdcXG4tMTAuNyA4LTEyIDEwLTEuMyAyLTIgNS43LTIgMTF6bTEwMC0yNnY0MGgzOTk5MDB2LTQwek0wIDQzNXY0MGg0MDAwMDB2LTQwelxcbm0wIDB2NDBoNDAwMDAwdi00MHpcIixcblxuICAgIGxlZnRoYXJwb29uZG93bjogXCJNNyAyNDFjLTQgNC02LjMzMyA4LjY2Ny03IDE0IDAgNS4zMzMuNjY3IDkgMiAxMXM1LjMzM1xcbiA1LjMzMyAxMiAxMGM5MC42NjcgNTQgMTU2IDEzMCAxOTYgMjI4IDMuMzMzIDEwLjY2NyA2LjMzMyAxNi4zMzMgOSAxNyAyIC42NjcgNVxcbiAxIDkgMWg1YzEwLjY2NyAwIDE2LjY2Ny0yIDE4LTYgMi0yLjY2NyAxLTkuNjY3LTMtMjEtMzItODcuMzMzLTgyLjY2Ny0xNTcuNjY3XFxuLTE1Mi0yMTFsLTMtM2gzOTk5MDd2LTQwek05MyAyODEgSDQwMDAwMCB2LTQwTDcgMjQxelwiLFxuXG4gICAgbGVmdGhhcnBvb25kb3ducGx1czogXCJNNyA0MzVjLTQgNC02LjMgOC43LTcgMTQgMCA1LjMuNyA5IDIgMTFzNS4zIDUuMyAxMlxcbiAxMGM5MC43IDU0IDE1NiAxMzAgMTk2IDIyOCAzLjMgMTAuNyA2LjMgMTYuMyA5IDE3IDIgLjcgNSAxIDkgMWg1YzEwLjcgMCAxNi43XFxuLTIgMTgtNiAyLTIuNyAxLTkuNy0zLTIxLTMyLTg3LjMtODIuNy0xNTcuNy0xNTItMjExbC0zLTNoMzk5OTA3di00MEg3em05MyAwXFxudjQwaDM5OTkwMHYtNDB6TTAgMjQxdjQwaDM5OTkwMHYtNDB6bTAgMHY0MGgzOTk5MDB2LTQwelwiLFxuXG4gICAgLy8gaG9vayBpcyBmcm9tIGdseXBoIFUrMjFBOSBpbiBmb250IEthVGVYIE1haW5cbiAgICBsZWZ0aG9vazogXCJNNDAwMDAwIDI4MSBIMTAzcy0zMy0xMS4yLTYxLTMzLjVTMCAxOTcuMyAwIDE2NHMxNC4yLTYxLjIgNDIuNVxcbi04My41QzcwLjggNTguMiAxMDQgNDcgMTQyIDQ3IGMxNi43IDAgMjUgNi43IDI1IDIwIDAgMTItOC43IDE4LjctMjYgMjAtNDAgMy4zXFxuLTY4LjcgMTUuNy04NiAzNy0xMCAxMi0xNSAyNS4zLTE1IDQwIDAgMjIuNyA5LjggNDAuNyAyOS41IDU0IDE5LjcgMTMuMyA0My41IDIxXFxuIDcxLjUgMjNoMzk5ODU5ek0xMDMgMjgxdi00MGgzOTk4OTd2NDB6XCIsXG5cbiAgICBsZWZ0bGluZXNlZ21lbnQ6IFwiTTQwIDI4MSBWNDI4IEgwIFY5NCBINDAgVjI0MSBINDAwMDAwIHY0MHpcXG5NNDAgMjgxIFY0MjggSDAgVjk0IEg0MCBWMjQxIEg0MDAwMDAgdjQwelwiLFxuXG4gICAgbGVmdG1hcHN0bzogXCJNNDAgMjgxIFY0NDhIMFY3NEg0MFYyNDFINDAwMDAwdjQwelxcbk00MCAyODEgVjQ0OEgwVjc0SDQwVjI0MUg0MDAwMDB2NDB6XCIsXG5cbiAgICAvLyB0b2Zyb20gaXMgZnJvbSBnbHlwaCBVKzIxQzQgaW4gZm9udCBLYVRlWCBBTVMgUmVndWxhclxuICAgIGxlZnRUb0Zyb206IFwiTTAgMTQ3aDQwMDAwMHY0MEgwem0wIDIxNGM2OCA0MCAxMTUuNyA5NS43IDE0MyAxNjdoMjJjMTUuMyAwIDIzXFxuLS4zIDIzLTEgMC0xLjMtNS4zLTEzLjctMTYtMzctMTgtMzUuMy00MS4zLTY5LTcwLTEwMWwtNy04aDM5OTkwNXYtNDBIOTVsNy04XFxuYzI4LjctMzIgNTItNjUuNyA3MC0xMDEgMTAuNy0yMy4zIDE2LTM1LjcgMTYtMzcgMC0uNy03LjctMS0yMy0xaC0yMkMxMTUuNyAyNjUuM1xcbiA2OCAzMjEgMCAzNjF6bTAtMTc0di00MGgzOTk5MDB2NDB6bTEwMCAxNTR2NDBoMzk5OTAwdi00MHpcIixcblxuICAgIGxvbmdlcXVhbDogXCJNMCA1MCBoNDAwMDAwIHY0MEgweiBtMCAxOTRoNDAwMDB2NDBIMHpcXG5NMCA1MCBoNDAwMDAwIHY0MEgweiBtMCAxOTRoNDAwMDB2NDBIMHpcIixcblxuICAgIG1pZGJyYWNlOiBcIk0yMDA0MjggMzM0XFxuYy0xMDAuNy04LjMtMTk1LjMtNDQtMjgwLTEwOC01NS4zLTQyLTEwMS43LTkzLTEzOS0xNTNsLTktMTRjLTIuNyA0LTUuNyA4LjctOSAxNFxcbi01My4zIDg2LjctMTIzLjcgMTUzLTIxMSAxOTktNjYuNyAzNi0xMzcuMyA1Ni4zLTIxMiA2MkgwVjIxNGgxOTk1NjhjMTc4LjMtMTEuN1xcbiAzMTEuNy03OC4zIDQwMy0yMDEgNi04IDkuNy0xMiAxMS0xMiAuNy0uNyA2LjctMSAxOC0xczE3LjMuMyAxOCAxYzEuMyAwIDUgNCAxMVxcbiAxMiA0NC43IDU5LjMgMTAxLjMgMTA2LjMgMTcwIDE0MXMxNDUuMyA1NC4zIDIyOSA2MGgxOTk1NzJ2MTIwelwiLFxuXG4gICAgbWlkYnJhY2V1bmRlcjogXCJNMTk5NTcyIDIxNFxcbmMxMDAuNyA4LjMgMTk1LjMgNDQgMjgwIDEwOCA1NS4zIDQyIDEwMS43IDkzIDEzOSAxNTNsOSAxNGMyLjctNCA1LjctOC43IDktMTRcXG4gNTMuMy04Ni43IDEyMy43LTE1MyAyMTEtMTk5IDY2LjctMzYgMTM3LjMtNTYuMyAyMTItNjJoMTk5NTY4djEyMEgyMDA0MzJjLTE3OC4zXFxuIDExLjctMzExLjcgNzguMy00MDMgMjAxLTYgOC05LjcgMTItMTEgMTItLjcuNy02LjcgMS0xOCAxcy0xNy4zLS4zLTE4LTFjLTEuMyAwXFxuLTUtNC0xMS0xMi00NC43LTU5LjMtMTAxLjMtMTA2LjMtMTcwLTE0MXMtMTQ1LjMtNTQuMy0yMjktNjBIMFYyMTR6XCIsXG5cbiAgICByaWdodGFycm93OiBcIk0wIDI0MXY0MGgzOTk4OTFjLTQ3LjMgMzUuMy04NCA3OC0xMTAgMTI4XFxuLTE2LjcgMzItMjcuNyA2My43LTMzIDk1IDAgMS4zLS4yIDIuNy0uNSA0LS4zIDEuMy0uNSAyLjMtLjUgMyAwIDcuMyA2LjcgMTEgMjBcXG4gMTEgOCAwIDEzLjItLjggMTUuNS0yLjUgMi4zLTEuNyA0LjItNS41IDUuNS0xMS41IDItMTMuMyA1LjctMjcgMTEtNDEgMTQuNy00NC43XFxuIDM5LTg0LjUgNzMtMTE5LjVzNzMuNy02MC4yIDExOS03NS41YzYtMiA5LTUuNyA5LTExcy0zLTktOS0xMWMtNDUuMy0xNS4zLTg1XFxuLTQwLjUtMTE5LTc1LjVzLTU4LjMtNzQuOC03My0xMTkuNWMtNC43LTE0LTguMy0yNy4zLTExLTQwLTEuMy02LjctMy4yLTEwLjgtNS41XFxuLTEyLjUtMi4zLTEuNy03LjUtMi41LTE1LjUtMi41LTE0IDAtMjEgMy43LTIxIDExIDAgMiAyIDEwLjMgNiAyNSAyMC43IDgzLjMgNjdcXG4gMTUxLjcgMTM5IDIwNXptMCAwdjQwaDM5OTkwMHYtNDB6XCIsXG5cbiAgICByaWdodGJyYWNlOiBcIk00MDAwMDAgNTQybFxcbi02IDZoLTE3Yy0xMi43IDAtMTkuMy0uMy0yMC0xLTQtNC03LjMtOC4zLTEwLTEzLTM1LjMtNTEuMy04MC44LTkzLjgtMTM2LjUtMTI3LjVcXG5zLTExNy4yLTU1LjgtMTg0LjUtNjYuNWMtLjcgMC0yLS4zLTQtMS0xOC43LTIuNy03Ni00LjMtMTcyLTVIMFYyMTRoMzk5NTcxbDYgMVxcbmMxMjQuNyA4IDIzNSA2MS43IDMzMSAxNjEgMzEuMyAzMy4zIDU5LjcgNzIuNyA4NSAxMThsNyAxM3YzNXpcIixcblxuICAgIHJpZ2h0YnJhY2V1bmRlcjogXCJNMzk5OTk0IDBsNiA2djM1bC02IDExYy01NiAxMDQtMTM1LjMgMTgxLjMtMjM4IDIzMi01Ny4zXFxuIDI4LjctMTE3IDQ1LTE3OSA1MEgtMzAwVjIxNGgzOTk4OTdjNDMuMy03IDgxLTE1IDExMy0yNiAxMDAuNy0zMyAxNzkuNy05MSAyMzdcXG4tMTc0IDIuNy01IDYtOSAxMC0xMyAuNy0xIDcuMy0xIDIwLTFoMTd6XCIsXG5cbiAgICByaWdodGdyb3VwOiBcIk0wIDgwaDM5OTU2NWMzNzEgMCAyNjYuNyAxNDkuNCA0MTQgMTgwIDUuOSAxLjIgMTggMCAxOCAwIDIgMFxcbiAzLTEgMy0zdi0zOGMtNzYtMTU4LTI1Ny0yMTktNDM1LTIxOUgwelwiLFxuXG4gICAgcmlnaHRncm91cHVuZGVyOiBcIk0wIDI2MmgzOTk1NjVjMzcxIDAgMjY2LjctMTQ5LjQgNDE0LTE4MCA1LjktMS4yIDE4IDAgMThcXG4gMCAyIDAgMyAxIDMgM3YzOGMtNzYgMTU4LTI1NyAyMTktNDM1IDIxOUgwelwiLFxuXG4gICAgcmlnaHRoYXJwb29uOiBcIk0wIDI0MXY0MGgzOTk5OTNjNC43LTQuNyA3LTkuMyA3LTE0IDAtOS4zXFxuLTMuNy0xNS4zLTExLTE4LTkyLjctNTYuNy0xNTktMTMzLjctMTk5LTIzMS0zLjMtOS4zLTYtMTQuNy04LTE2LTItMS4zLTctMi0xNS0yXFxuLTEwLjcgMC0xNi43IDItMTggNi0yIDIuNy0xIDkuNyAzIDIxIDE1LjMgNDIgMzYuNyA4MS44IDY0IDExOS41IDI3LjMgMzcuNyA1OFxcbiA2OS4yIDkyIDk0LjV6bTAgMHY0MGgzOTk5MDB2LTQwelwiLFxuXG4gICAgcmlnaHRoYXJwb29ucGx1czogXCJNMCAyNDF2NDBoMzk5OTkzYzQuNy00LjcgNy05LjMgNy0xNCAwLTkuMy0zLjctMTUuMy0xMVxcbi0xOC05Mi43LTU2LjctMTU5LTEzMy43LTE5OS0yMzEtMy4zLTkuMy02LTE0LjctOC0xNi0yLTEuMy03LTItMTUtMi0xMC43IDAtMTYuN1xcbiAyLTE4IDYtMiAyLjctMSA5LjcgMyAyMSAxNS4zIDQyIDM2LjcgODEuOCA2NCAxMTkuNSAyNy4zIDM3LjcgNTggNjkuMiA5MiA5NC41elxcbm0wIDB2NDBoMzk5OTAwdi00MHogbTEwMCAxOTR2NDBoMzk5OTAwdi00MHptMCAwdjQwaDM5OTkwMHYtNDB6XCIsXG5cbiAgICByaWdodGhhcnBvb25kb3duOiBcIk0zOTk3NDcgNTExYzAgNy4zIDYuNyAxMSAyMCAxMSA4IDAgMTMtLjggMTUtMi41czQuNy02LjhcXG4gOC0xNS41YzQwLTk0IDk5LjMtMTY2LjMgMTc4LTIxNyAxMy4zLTggMjAuMy0xMi4zIDIxLTEzIDUuMy0zLjMgOC41LTUuOCA5LjVcXG4tNy41IDEtMS43IDEuNS01LjIgMS41LTEwLjVzLTIuMy0xMC4zLTctMTVIMHY0MGgzOTk5MDhjLTM0IDI1LjMtNjQuNyA1Ny05MiA5NVxcbi0yNy4zIDM4LTQ4LjcgNzcuNy02NCAxMTktMy4zIDguNy01IDE0LTUgMTZ6TTAgMjQxdjQwaDM5OTkwMHYtNDB6XCIsXG5cbiAgICByaWdodGhhcnBvb25kb3ducGx1czogXCJNMzk5NzQ3IDcwNWMwIDcuMyA2LjcgMTEgMjAgMTEgOCAwIDEzLS44XFxuIDE1LTIuNXM0LjctNi44IDgtMTUuNWM0MC05NCA5OS4zLTE2Ni4zIDE3OC0yMTcgMTMuMy04IDIwLjMtMTIuMyAyMS0xMyA1LjMtMy4zXFxuIDguNS01LjggOS41LTcuNSAxLTEuNyAxLjUtNS4yIDEuNS0xMC41cy0yLjMtMTAuMy03LTE1SDB2NDBoMzk5OTA4Yy0zNCAyNS4zXFxuLTY0LjcgNTctOTIgOTUtMjcuMyAzOC00OC43IDc3LjctNjQgMTE5LTMuMyA4LjctNSAxNC01IDE2ek0wIDQzNXY0MGgzOTk5MDB2LTQwelxcbm0wLTE5NHY0MGg0MDAwMDB2LTQwem0wIDB2NDBoNDAwMDAwdi00MHpcIixcblxuICAgIHJpZ2h0aG9vazogXCJNMzk5ODU5IDI0MWMtNzY0IDAgMCAwIDAgMCA0MC0zLjMgNjguNy0xNS43IDg2LTM3IDEwLTEyIDE1LTI1LjNcXG4gMTUtNDAgMC0yMi43LTkuOC00MC43LTI5LjUtNTQtMTkuNy0xMy4zLTQzLjUtMjEtNzEuNS0yMy0xNy4zLTEuMy0yNi04LTI2LTIwIDBcXG4tMTMuMyA4LjctMjAgMjYtMjAgMzggMCA3MSAxMS4yIDk5IDMzLjUgMCAwIDcgNS42IDIxIDE2LjcgMTQgMTEuMiAyMSAzMy41IDIxXFxuIDY2LjhzLTE0IDYxLjItNDIgODMuNWMtMjggMjIuMy02MSAzMy41LTk5IDMzLjVMMCAyNDF6IE0wIDI4MXYtNDBoMzk5ODU5djQwelwiLFxuXG4gICAgcmlnaHRsaW5lc2VnbWVudDogXCJNMzk5OTYwIDI0MSBWOTQgaDQwIFY0MjggaC00MCBWMjgxIEgwIHYtNDB6XFxuTTM5OTk2MCAyNDEgVjk0IGg0MCBWNDI4IGgtNDAgVjI4MSBIMCB2LTQwelwiLFxuXG4gICAgcmlnaHRUb0Zyb206IFwiTTQwMDAwMCAxNjdjLTcwLjctNDItMTE4LTk3LjctMTQyLTE2N2gtMjNjLTE1LjMgMC0yMyAuMy0yM1xcbiAxIDAgMS4zIDUuMyAxMy43IDE2IDM3IDE4IDM1LjMgNDEuMyA2OSA3MCAxMDFsNyA4SDB2NDBoMzk5OTA1bC03IDhjLTI4LjcgMzJcXG4tNTIgNjUuNy03MCAxMDEtMTAuNyAyMy4zLTE2IDM1LjctMTYgMzcgMCAuNyA3LjcgMSAyMyAxaDIzYzI0LTY5LjMgNzEuMy0xMjUgMTQyXFxuLTE2N3ogTTEwMCAxNDd2NDBoMzk5OTAwdi00MHpNMCAzNDF2NDBoMzk5OTAwdi00MHpcIixcblxuICAgIC8vIHR3b2hlYWRsZWZ0YXJyb3cgaXMgZnJvbSBnbHlwaCBVKzIxOUUgaW4gZm9udCBLYVRlWCBBTVMgUmVndWxhclxuICAgIHR3b2hlYWRsZWZ0YXJyb3c6IFwiTTAgMTY3YzY4IDQwXFxuIDExNS43IDk1LjcgMTQzIDE2N2gyMmMxNS4zIDAgMjMtLjMgMjMtMSAwLTEuMy01LjMtMTMuNy0xNi0zNy0xOC0zNS4zLTQxLjMtNjlcXG4tNzAtMTAxbC03LThoMTI1bDkgN2M1MC43IDM5LjMgODUgODYgMTAzIDE0MGg0NmMwLTQuNy02LjMtMTguNy0xOS00Mi0xOC0zNS4zXFxuLTQwLTY3LjMtNjYtOTZsLTktOWgzOTk3MTZ2LTQwSDI4NGw5LTljMjYtMjguNyA0OC02MC43IDY2LTk2IDEyLjctMjMuMzMzIDE5XFxuLTM3LjMzMyAxOS00MmgtNDZjLTE4IDU0LTUyLjMgMTAwLjctMTAzIDE0MGwtOSA3SDk1bDctOGMyOC43LTMyIDUyLTY1LjcgNzAtMTAxXFxuIDEwLjctMjMuMzMzIDE2LTM1LjcgMTYtMzcgMC0uNy03LjctMS0yMy0xaC0yMkMxMTUuNyA3MS4zIDY4IDEyNyAwIDE2N3pcIixcblxuICAgIHR3b2hlYWRyaWdodGFycm93OiBcIk00MDAwMDAgMTY3XFxuYy02OC00MC0xMTUuNy05NS43LTE0My0xNjdoLTIyYy0xNS4zIDAtMjMgLjMtMjMgMSAwIDEuMyA1LjMgMTMuNyAxNiAzNyAxOCAzNS4zXFxuIDQxLjMgNjkgNzAgMTAxbDcgOGgtMTI1bC05LTdjLTUwLjctMzkuMy04NS04Ni0xMDMtMTQwaC00NmMwIDQuNyA2LjMgMTguNyAxOSA0MlxcbiAxOCAzNS4zIDQwIDY3LjMgNjYgOTZsOSA5SDB2NDBoMzk5NzE2bC05IDljLTI2IDI4LjctNDggNjAuNy02NiA5Ni0xMi43IDIzLjMzM1xcbi0xOSAzNy4zMzMtMTkgNDJoNDZjMTgtNTQgNTIuMy0xMDAuNyAxMDMtMTQwbDktN2gxMjVsLTcgOGMtMjguNyAzMi01MiA2NS43LTcwXFxuIDEwMS0xMC43IDIzLjMzMy0xNiAzNS43LTE2IDM3IDAgLjcgNy43IDEgMjMgMWgyMmMyNy4zLTcxLjMgNzUtMTI3IDE0My0xNjd6XCIsXG5cbiAgICAvLyB0aWxkZTEgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIGEgZ2x5cGggZnJvbSB0aGUgTW5TeW1ib2wgcGFja2FnZVxuICAgIHRpbGRlMTogXCJNMjAwIDU1LjUzOGMtNzcgMC0xNjggNzMuOTUzLTE3NyA3My45NTMtMyAwLTdcXG4tMi4xNzUtOS01LjQzN0wyIDk3Yy0xLTItMi00LTItNiAwLTQgMi03IDUtOWwyMC0xMkMxMTYgMTIgMTcxIDAgMjA3IDBjODYgMFxcbiAxMTQgNjggMTkxIDY4IDc4IDAgMTY4LTY4IDE3Ny02OCA0IDAgNyAyIDkgNWwxMiAxOWMxIDIuMTc1IDIgNC4zNSAyIDYuNTI1IDBcXG4gNC4zNS0yIDcuNjEzLTUgOS43ODhsLTE5IDEzLjA1Yy05MiA2My4wNzctMTE2LjkzNyA3NS4zMDgtMTgzIDc2LjEyOFxcbi02OC4yNjcuODQ3LTExMy03My45NTItMTkxLTczLjk1MnpcIixcblxuICAgIC8vIGRpdHRvIHRpbGRlMiwgdGlsZGUzLCAmIHRpbGRlNFxuICAgIHRpbGRlMjogXCJNMzQ0IDU1LjI2NmMtMTQyIDAtMzAwLjYzOCA4MS4zMTYtMzExLjUgODYuNDE4XFxuLTguMDEgMy43NjItMjIuNSAxMC45MS0yMy41IDUuNTYyTDEgMTIwYy0xLTItMS0zLTEtNCAwLTUgMy05IDgtMTBsMTguNC05QzE2MC45XFxuIDMxLjkgMjgzIDAgMzU4IDBjMTQ4IDAgMTg4IDEyMiAzMzEgMTIyczMxNC05NyAzMjYtOTdjNCAwIDggMiAxMCA3bDcgMjEuMTE0XFxuYzEgMi4xNCAxIDMuMjEgMSA0LjI4IDAgNS4zNDctMyA5LjYyNi03IDEwLjY5NmwtMjIuMyAxMi42MjJDODUyLjYgMTU4LjM3MiA3NTFcXG4gMTgxLjQ3NiA2NzYgMTgxLjQ3NmMtMTQ5IDAtMTg5LTEyNi4yMS0zMzItMTI2LjIxelwiLFxuXG4gICAgdGlsZGUzOiBcIk03ODYgNTlDNDU3IDU5IDMyIDE3NS4yNDIgMTMgMTc1LjI0MmMtNiAwLTEwLTMuNDU3XFxuLTExLTEwLjM3TC4xNSAxMzhjLTEtNyAzLTEyIDEwLTEzbDE5LjItNi40QzM3OC40IDQwLjcgNjM0LjMgMCA4MDQuMyAwYzMzNyAwXFxuIDQxMS44IDE1NyA3NDYuOCAxNTcgMzI4IDAgNzU0LTExMiA3NzMtMTEyIDUgMCAxMCAzIDExIDlsMSAxNC4wNzVjMSA4LjA2Ni0uNjk3XFxuIDE2LjU5NS02LjY5NyAxNy40OTJsLTIxLjA1MiA3LjMxYy0zNjcuOSA5OC4xNDYtNjA5LjE1IDEyMi42OTYtNzc4LjE1IDEyMi42OTZcXG4gLTMzOCAwLTQwOS0xNTYuNTczLTc0NC0xNTYuNTczelwiLFxuXG4gICAgdGlsZGU0OiBcIk03ODYgNThDNDU3IDU4IDMyIDE3Ny40ODcgMTMgMTc3LjQ4N2MtNiAwLTEwLTMuMzQ1XFxuLTExLTEwLjAzNUwuMTUgMTQzYy0xLTcgMy0xMiAxMC0xM2wyMi02LjdDMzgxLjIgMzUgNjM3LjE1IDAgODA3LjE1IDBjMzM3IDAgNDA5XFxuIDE3NyA3NDQgMTc3IDMyOCAwIDc1NC0xMjcgNzczLTEyNyA1IDAgMTAgMyAxMSA5bDEgMTQuNzk0YzEgNy44MDUtMyAxMy4zOC05XFxuIDE0LjQ5NWwtMjAuNyA1LjU3NGMtMzY2Ljg1IDk5Ljc5LTYwNy4zIDEzOS4zNzItNzc2LjMgMTM5LjM3Mi0zMzggMC00MDlcXG4gLTE3NS4yMzYtNzQ0LTE3NS4yMzZ6XCIsXG5cbiAgICAvLyB2ZWMgaXMgZnJvbSBnbHlwaCBVKzIwRDcgaW4gZm9udCBLYVRlWCBNYWluXG4gICAgdmVjOiBcIk0zNzcgMjBjMC01LjMzMyAxLjgzMy0xMCA1LjUtMTRTMzkxIDAgMzk3IDBjNC42NjcgMCA4LjY2NyAxLjY2NyAxMiA1XFxuMy4zMzMgMi42NjcgNi42NjcgOSAxMCAxOSA2LjY2NyAyNC42NjcgMjAuMzMzIDQzLjY2NyA0MSA1NyA3LjMzMyA0LjY2NyAxMVxcbjEwLjY2NyAxMSAxOCAwIDYtMSAxMC0zIDEycy02LjY2NyA1LTE0IDljLTI4LjY2NyAxNC42NjctNTMuNjY3IDM1LjY2Ny03NSA2M1xcbi0xLjMzMyAxLjMzMy0zLjE2NyAzLjUtNS41IDYuNXMtNCA0LjgzMy01IDUuNWMtMSAuNjY3LTIuNSAxLjMzMy00LjUgMnMtNC4zMzMgMVxcbi03IDFjLTQuNjY3IDAtOS4xNjctMS44MzMtMTMuNS01LjVTMzM3IDE4NCAzMzcgMTc4YzAtMTIuNjY3IDE1LjY2Ny0zMi4zMzMgNDctNTlcXG5IMjEzbC0xNzEtMWMtOC42NjctNi0xMy0xMi4zMzMtMTMtMTkgMC00LjY2NyA0LjMzMy0xMS4zMzMgMTMtMjBoMzU5XFxuYy0xNi0yNS4zMzMtMjQtNDUtMjQtNTl6XCIsXG5cbiAgICAvLyB3aWRlaGF0MSBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgYSBnbHlwaCBmcm9tIHRoZSBNblN5bWJvbCBwYWNrYWdlXG4gICAgd2lkZWhhdDE6IFwiTTUyOSAwaDVsNTE5IDExNWM1IDEgOSA1IDkgMTAgMCAxLTEgMi0xIDNsLTQgMjJcXG5jLTEgNS01IDktMTEgOWgtMkw1MzIgNjcgMTkgMTU5aC0yYy01IDAtOS00LTExLTlsLTUtMjJjLTEtNiAyLTEyIDgtMTN6XCIsXG5cbiAgICAvLyBkaXR0byB3aWRlaGF0Miwgd2lkZWhhdDMsICYgd2lkZWhhdDRcbiAgICB3aWRlaGF0MjogXCJNMTE4MSAwaDJsMTE3MSAxNzZjNiAwIDEwIDUgMTAgMTFsLTIgMjNjLTEgNi01IDEwXFxuLTExIDEwaC0xTDExODIgNjcgMTUgMjIwaC0xYy02IDAtMTAtNC0xMS0xMGwtMi0yM2MtMS02IDQtMTEgMTAtMTF6XCIsXG5cbiAgICB3aWRlaGF0MzogXCJNMTE4MSAwaDJsMTE3MSAyMzZjNiAwIDEwIDUgMTAgMTFsLTIgMjNjLTEgNi01IDEwXFxuLTExIDEwaC0xTDExODIgNjcgMTUgMjgwaC0xYy02IDAtMTAtNC0xMS0xMGwtMi0yM2MtMS02IDQtMTEgMTAtMTF6XCIsXG5cbiAgICB3aWRlaGF0NDogXCJNMTE4MSAwaDJsMTE3MSAyOTZjNiAwIDEwIDUgMTAgMTFsLTIgMjNjLTEgNi01IDEwXFxuLTExIDEwaC0xTDExODIgNjcgMTUgMzQwaC0xYy02IDAtMTAtNC0xMS0xMGwtMi0yM2MtMS02IDQtMTEgMTAtMTF6XCIsXG5cbiAgICAvLyBiYXJhYm92ZWxlZnRhcnJvdyBpcyBmcm9tIGdseXBoIFUrMjFDNCBpbiBmb250IEthVGVYIEFNUyBSZWd1bGFyXG4gICAgYmFyYWJvdmVsZWZ0YXJyb3c6IFwiTTEgNTAwYzMwLjY3LTE4IDU5LTQxLjgzMyA4NS03MS41czQ1LTYxLjE3IDU3LTk0LjVoMjNcXG5jMTUuMzMgMCAyMyAuMzMgMjMgMSAwIC42Ny01LjMzIDEyLjY3LTE2IDM2LTE2LjY3IDM0LjY3LTM5IDY3LjMzLTY3IDk4bC0xMCAxMVxcbmgzOTkwNHY0MEg5Nmw5IDEwYzI3LjMzIDMwLjY3IDUwLjY3IDY1IDcwIDEwM2wxNCAzM2MwIC42Ny03LjY3IDEtMjMgMWgtMjJcXG5DMTE2LjY3IDU5Ni4zMyA2OSA1NDAuNjcgMSA1MDB6IE05NiA0ODAgSDQwMDAwMCB2NDAgSDk2elxcbk0xIDE0NyBIMzk5OTA1IHY0MCAgSDF6IE0wIDE0NyBIMzk5OTA1IHY0MCAgSDB6XCIsXG5cbiAgICAvLyBkaXR0byByaWdodGFycm93YWJvdmViYXJcbiAgICByaWdodGFycm93YWJvdmViYXI6IFwiTTQwMDAwMCAxNjdjLTcwLjY3IDQyLTExOCA5Ny42Ny0xNDIgMTY3aC0yM2MtMTUuMzMgMFxcbi0yMy0uMzMtMjMtMSAwLTEuMzMgNS4zMy0xMy42NyAxNi0zNyAxOC0zNS4zMyA0MS4zMy02OSA3MC0xMDFsNy04aC0zOTkwNVxcbnYtNDBoMzk5MDVjLTM4OSAwIDAgMCAwIDBsLTctOGMtMjguNjctMzItNTItNjUuNjctNzAtMTAxLTEwLjY3LTIzLjMzLTE2LTM1LjY3XFxuLTE2LTM3IDAtLjY3IDcuNjctMSAyMy0xaDIzYzExLjMzIDMzLjMzIDMwIDY0LjgzMyA1NiA5NC41czU0LjY3IDUzLjgzIDg2IDcyLjV6XFxuTTAgMTQ3IEgzOTk5MDUgdjQwICBIMHogTTk2IDQ4MCBINDAwMDAwIHY0MCBIMHogTTk2IDQ4MCBINDAwMDAwIHY0MCBIMHpcIixcblxuICAgIC8vIFRoZSBuZXh0IGVpZ2h0IHBhdGhzIHN1cHBvcnQgcmVhY3Rpb24gYXJyb3dzIGZyb20gdGhlIG1oY2hlbSBwYWNrYWdlLlxuXG4gICAgLy8gVGhlIHNob3J0IGxlZnQgaGFycG9vbiBoYXMgMC41ZW0gKGkuZS4gNTAwIHVuaXRzKSBrZXJuIG9uIHRoZSBsZWZ0IGVuZC5cbiAgICAvLyBSZWYgZnJvbSBtaGNoZW0uc3R5OiBcXHJsYXB7XFxyYWlzZWJveHstLjIyZXh9eyRcXGtlcm4wLjVlbVxuICAgIGJhcmFib3Zlc2hvcnRsZWZ0aGFycG9vbjogXCJNNTA3LDQzNWMtNCw0LC02LjMsOC43LC03LDE0YzAsNS4zLDAuNyw5LDIsMTFcXG5jMS4zLDIsNS4zLDUuMywxMiwxMGM5MC43LDU0LDE1NiwxMzAsMTk2LDIyOGMzLjMsMTAuNyw2LjMsMTYuMyw5LDE3XFxuYzIsMC43LDUsMSw5LDFjMCwwLDUsMCw1LDBjMTAuNywwLDE2LjcsLTIsMTgsLTZjMiwtMi43LDEsLTkuNywtMywtMjFcXG5jLTMyLC04Ny4zLC04Mi43LC0xNTcuNywtMTUyLC0yMTFjMCwwLC0zLC0zLC0zLC0zbDM5OTM1MSwwbDAsLTQwXFxuYy0zOTg1NzAsMCwtMzk5NDM3LDAsLTM5OTQzNywweiBNNTkzIDQzNSB2NDAgSDM5OTUwMCB2LTQwelxcbk0wIDI4MSB2LTQwIEgzOTk5MDggdjQweiBNMCAyODEgdi00MCBIMzk5OTA4IHY0MHpcIixcblxuICAgIHJpZ2h0aGFycG9vbmFib3Zlc2hvcnRiYXI6IFwiTTAsMjQxIGwwLDQwYzM5OTEyNiwwLDM5OTk5MywwLDM5OTk5MywwXFxuYzQuNywtNC43LDcsLTkuMyw3LC0xNGMwLC05LjMsLTMuNywtMTUuMywtMTEsLTE4Yy05Mi43LC01Ni43LC0xNTksLTEzMy43LC0xOTksXFxuLTIzMWMtMy4zLC05LjMsLTYsLTE0LjcsLTgsLTE2Yy0yLC0xLjMsLTcsLTIsLTE1LC0yYy0xMC43LDAsLTE2LjcsMiwtMTgsNlxcbmMtMiwyLjcsLTEsOS43LDMsMjFjMTUuMyw0MiwzNi43LDgxLjgsNjQsMTE5LjVjMjcuMywzNy43LDU4LDY5LjIsOTIsOTQuNXpcXG5NMCAyNDEgdjQwIEgzOTk5MDggdi00MHogTTAgNDc1IHYtNDAgSDM5OTUwMCB2NDB6IE0wIDQ3NSB2LTQwIEgzOTk1MDAgdjQwelwiLFxuXG4gICAgc2hvcnRiYXJhYm92ZWxlZnRoYXJwb29uOiBcIk03LDQzNWMtNCw0LC02LjMsOC43LC03LDE0YzAsNS4zLDAuNyw5LDIsMTFcXG5jMS4zLDIsNS4zLDUuMywxMiwxMGM5MC43LDU0LDE1NiwxMzAsMTk2LDIyOGMzLjMsMTAuNyw2LjMsMTYuMyw5LDE3YzIsMC43LDUsMSw5LFxcbjFjMCwwLDUsMCw1LDBjMTAuNywwLDE2LjcsLTIsMTgsLTZjMiwtMi43LDEsLTkuNywtMywtMjFjLTMyLC04Ny4zLC04Mi43LC0xNTcuNyxcXG4tMTUyLC0yMTFjMCwwLC0zLC0zLC0zLC0zbDM5OTkwNywwbDAsLTQwYy0zOTkxMjYsMCwtMzk5OTkzLDAsLTM5OTk5Mywwelxcbk05MyA0MzUgdjQwIEg0MDAwMDAgdi00MHogTTUwMCAyNDEgdjQwIEg0MDAwMDAgdi00MHogTTUwMCAyNDEgdjQwIEg0MDAwMDAgdi00MHpcIixcblxuICAgIHNob3J0cmlnaHRoYXJwb29uYWJvdmViYXI6IFwiTTUzLDI0MWwwLDQwYzM5ODU3MCwwLDM5OTQzNywwLDM5OTQzNywwXFxuYzQuNywtNC43LDcsLTkuMyw3LC0xNGMwLC05LjMsLTMuNywtMTUuMywtMTEsLTE4Yy05Mi43LC01Ni43LC0xNTksLTEzMy43LC0xOTksXFxuLTIzMWMtMy4zLC05LjMsLTYsLTE0LjcsLTgsLTE2Yy0yLC0xLjMsLTcsLTIsLTE1LC0yYy0xMC43LDAsLTE2LjcsMiwtMTgsNlxcbmMtMiwyLjcsLTEsOS43LDMsMjFjMTUuMyw0MiwzNi43LDgxLjgsNjQsMTE5LjVjMjcuMywzNy43LDU4LDY5LjIsOTIsOTQuNXpcXG5NNTAwIDI0MSB2NDAgSDM5OTQwOCB2LTQweiBNNTAwIDQzNSB2NDAgSDQwMDAwMCB2LTQwelwiXG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHsgcGF0aDogcGF0aCB9KTtcblxuLyoqKi8gfSksXG4vKiAxMTIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHNwYWNpbmdzOyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJiXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gdGlnaHRTcGFjaW5nczsgfSk7XG4vKipcbiAqIERlc2NyaWJlcyBzcGFjZXMgYmV0d2VlbiBkaWZmZXJlbnQgY2xhc3NlcyBvZiBhdG9tcy5cbiAqL1xuXG52YXIgdGhpbnNwYWNlID0ge1xuICAgIG51bWJlcjogMyxcbiAgICB1bml0OiBcIm11XCJcbn07XG52YXIgbWVkaXVtc3BhY2UgPSB7XG4gICAgbnVtYmVyOiA0LFxuICAgIHVuaXQ6IFwibXVcIlxufTtcbnZhciB0aGlja3NwYWNlID0ge1xuICAgIG51bWJlcjogNSxcbiAgICB1bml0OiBcIm11XCJcbn07XG5cbi8vIFNwYWNpbmcgcmVsYXRpb25zaGlwcyBmb3IgZGlzcGxheSBhbmQgdGV4dCBzdHlsZXNcbnZhciBzcGFjaW5ncyA9IHtcbiAgICBtb3JkOiB7XG4gICAgICAgIG1vcDogdGhpbnNwYWNlLFxuICAgICAgICBtYmluOiBtZWRpdW1zcGFjZSxcbiAgICAgICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICAgICAgbWlubmVyOiB0aGluc3BhY2VcbiAgICB9LFxuICAgIG1vcDoge1xuICAgICAgICBtb3JkOiB0aGluc3BhY2UsXG4gICAgICAgIG1vcDogdGhpbnNwYWNlLFxuICAgICAgICBtcmVsOiB0aGlja3NwYWNlLFxuICAgICAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICAgIH0sXG4gICAgbWJpbjoge1xuICAgICAgICBtb3JkOiBtZWRpdW1zcGFjZSxcbiAgICAgICAgbW9wOiBtZWRpdW1zcGFjZSxcbiAgICAgICAgbW9wZW46IG1lZGl1bXNwYWNlLFxuICAgICAgICBtaW5uZXI6IG1lZGl1bXNwYWNlXG4gICAgfSxcbiAgICBtcmVsOiB7XG4gICAgICAgIG1vcmQ6IHRoaWNrc3BhY2UsXG4gICAgICAgIG1vcDogdGhpY2tzcGFjZSxcbiAgICAgICAgbW9wZW46IHRoaWNrc3BhY2UsXG4gICAgICAgIG1pbm5lcjogdGhpY2tzcGFjZVxuICAgIH0sXG4gICAgbW9wZW46IHt9LFxuICAgIG1jbG9zZToge1xuICAgICAgICBtb3A6IHRoaW5zcGFjZSxcbiAgICAgICAgbWJpbjogbWVkaXVtc3BhY2UsXG4gICAgICAgIG1yZWw6IHRoaWNrc3BhY2UsXG4gICAgICAgIG1pbm5lcjogdGhpbnNwYWNlXG4gICAgfSxcbiAgICBtcHVuY3Q6IHtcbiAgICAgICAgbW9yZDogdGhpbnNwYWNlLFxuICAgICAgICBtb3A6IHRoaW5zcGFjZSxcbiAgICAgICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICAgICAgbW9wZW46IHRoaW5zcGFjZSxcbiAgICAgICAgbWNsb3NlOiB0aGluc3BhY2UsXG4gICAgICAgIG1wdW5jdDogdGhpbnNwYWNlLFxuICAgICAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICAgIH0sXG4gICAgbWlubmVyOiB7XG4gICAgICAgIG1vcmQ6IHRoaW5zcGFjZSxcbiAgICAgICAgbW9wOiB0aGluc3BhY2UsXG4gICAgICAgIG1iaW46IG1lZGl1bXNwYWNlLFxuICAgICAgICBtcmVsOiB0aGlja3NwYWNlLFxuICAgICAgICBtb3BlbjogdGhpbnNwYWNlLFxuICAgICAgICBtcHVuY3Q6IHRoaW5zcGFjZSxcbiAgICAgICAgbWlubmVyOiB0aGluc3BhY2VcbiAgICB9XG59O1xuXG4vLyBTcGFjaW5nIHJlbGF0aW9uc2hpcHMgZm9yIHNjcmlwdCBhbmQgc2NyaXB0c2NyaXB0IHN0eWxlc1xudmFyIHRpZ2h0U3BhY2luZ3MgPSB7XG4gICAgbW9yZDoge1xuICAgICAgICBtb3A6IHRoaW5zcGFjZVxuICAgIH0sXG4gICAgbW9wOiB7XG4gICAgICAgIG1vcmQ6IHRoaW5zcGFjZSxcbiAgICAgICAgbW9wOiB0aGluc3BhY2VcbiAgICB9LFxuICAgIG1iaW46IHt9LFxuICAgIG1yZWw6IHt9LFxuICAgIG1vcGVuOiB7fSxcbiAgICBtY2xvc2U6IHtcbiAgICAgICAgbW9wOiB0aGluc3BhY2VcbiAgICB9LFxuICAgIG1wdW5jdDoge30sXG4gICAgbWlubmVyOiB7XG4gICAgICAgIG1vcDogdGhpbnNwYWNlXG4gICAgfVxufTtcblxuLyoqKi8gfSksXG4vKiAxMTMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19QYXJzZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTE0KTtcblxuLyoqXG4gKiBQcm92aWRlcyBhIHNpbmdsZSBmdW5jdGlvbiBmb3IgcGFyc2luZyBhbiBleHByZXNzaW9uIHVzaW5nIGEgUGFyc2VyXG4gKiBUT0RPKGVtaWx5KTogUmVtb3ZlIHRoaXNcbiAqL1xuXG5cblxuLyoqXG4gKiBQYXJzZXMgYW4gZXhwcmVzc2lvbiB1c2luZyBhIFBhcnNlciwgdGhlbiByZXR1cm5zIHRoZSBwYXJzZWQgcmVzdWx0LlxuICovXG52YXIgcGFyc2VUcmVlID0gZnVuY3Rpb24gcGFyc2VUcmVlKHRvUGFyc2UsIHNldHRpbmdzKSB7XG4gIGlmICghKHR5cGVvZiB0b1BhcnNlID09PSAnc3RyaW5nJyB8fCB0b1BhcnNlIGluc3RhbmNlb2YgU3RyaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0thVGVYIGNhbiBvbmx5IHBhcnNlIHN0cmluZyB0eXBlZCBleHByZXNzaW9uJyk7XG4gIH1cbiAgdmFyIHBhcnNlciA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1BhcnNlcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKHRvUGFyc2UsIHNldHRpbmdzKTtcblxuICByZXR1cm4gcGFyc2VyLnBhcnNlKCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHBhcnNlVHJlZSk7XG5cbi8qKiovIH0pLFxuLyogMTE0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZnVuY3Rpb25zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19lbnZpcm9ubWVudHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX01hY3JvRXhwYW5kZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX3N5bWJvbHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fdW5pdHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fdW5pY29kZVNjcmlwdHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fdW5pY29kZUFjY2VudHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX3VuaWNvZGVBY2NlbnRzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX3VuaWNvZGVBY2NlbnRzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fdW5pY29kZVN5bWJvbHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ5KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX1BhcnNlRXJyb3JfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMl9fTGV4ZXJfanNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTNfX1NldHRpbmdzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE0X19Ub2tlbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cblxuXG4vKiBlc2xpbnQgbm8tY29uc3RhbnQtY29uZGl0aW9uOjAgKi9cbi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgcGFyc2VyIHVzZWQgdG8gcGFyc2Ugb3V0IGEgVGVYIGV4cHJlc3Npb24gZnJvbSB0aGVcbiAqIGlucHV0LiBTaW5jZSBUZVggaXNuJ3QgY29udGV4dC1mcmVlLCBzdGFuZGFyZCBwYXJzZXJzIGRvbid0IHdvcmsgcGFydGljdWxhcmx5XG4gKiB3ZWxsLlxuICpcbiAqIFRoZSBzdHJhdGVneSBvZiB0aGlzIHBhcnNlciBpcyBhcyBzdWNoOlxuICpcbiAqIFRoZSBtYWluIGZ1bmN0aW9ucyAodGhlIGAucGFyc2UuLi5gIG9uZXMpIHRha2UgYSBwb3NpdGlvbiBpbiB0aGUgY3VycmVudFxuICogcGFyc2Ugc3RyaW5nIHRvIHBhcnNlIHRva2VucyBmcm9tLiBUaGUgbGV4ZXIgKGZvdW5kIGluIExleGVyLmpzLCBzdG9yZWQgYXRcbiAqIHRoaXMubGV4ZXIpIGFsc28gc3VwcG9ydHMgcHVsbGluZyBvdXQgdG9rZW5zIGF0IGFyYml0cmFyeSBwbGFjZXMuIFdoZW5cbiAqIGluZGl2aWR1YWwgdG9rZW5zIGFyZSBuZWVkZWQgYXQgYSBwb3NpdGlvbiwgdGhlIGxleGVyIGlzIGNhbGxlZCB0byBwdWxsIG91dCBhXG4gKiB0b2tlbiwgd2hpY2ggaXMgdGhlbiB1c2VkLlxuICpcbiAqIFRoZSBwYXJzZXIgaGFzIGEgcHJvcGVydHkgY2FsbGVkIFwibW9kZVwiIGluZGljYXRpbmcgdGhlIG1vZGUgdGhhdFxuICogdGhlIHBhcnNlciBpcyBjdXJyZW50bHkgaW4uIEN1cnJlbnRseSBpdCBoYXMgdG8gYmUgb25lIG9mIFwibWF0aFwiIG9yXG4gKiBcInRleHRcIiwgd2hpY2ggZGVub3RlcyB3aGV0aGVyIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIGEgbWF0aC15XG4gKiBvbmUgb3IgYSB0ZXh0LXkgb25lIChlLmcuIGluc2lkZSBcXHRleHQpLiBDdXJyZW50bHksIHRoaXMgc2VydmVzIHRvXG4gKiBsaW1pdCB0aGUgZnVuY3Rpb25zIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRleHQgbW9kZS5cbiAqXG4gKiBUaGUgbWFpbiBmdW5jdGlvbnMgdGhlbiByZXR1cm4gYW4gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIHRoZSB1c2VmdWwgZGF0YSB0aGF0XG4gKiB3YXMgcGFyc2VkIGF0IGl0cyBnaXZlbiBwb2ludCwgYW5kIGEgbmV3IHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YgdGhlIHBhcnNlZFxuICogZGF0YS4gVGhlIG1haW4gZnVuY3Rpb25zIGNhbiBjYWxsIGVhY2ggb3RoZXIgYW5kIGNvbnRpbnVlIHRoZSBwYXJzaW5nIGJ5XG4gKiB1c2luZyB0aGUgcmV0dXJuZWQgcG9zaXRpb24gYXMgYSBuZXcgc3RhcnRpbmcgcG9pbnQuXG4gKlxuICogVGhlcmUgYXJlIGFsc28gZXh0cmEgYC5oYW5kbGUuLi5gIGZ1bmN0aW9ucywgd2hpY2ggcHVsbCBvdXQgc29tZSByZXVzZWRcbiAqIGZ1bmN0aW9uYWxpdHkgaW50byBzZWxmLWNvbnRhaW5lZCBmdW5jdGlvbnMuXG4gKlxuICogVGhlIGVhcmxpZXIgZnVuY3Rpb25zIHJldHVybiBQYXJzZU5vZGVzLlxuICogVGhlIGxhdGVyIGZ1bmN0aW9ucyAod2hpY2ggYXJlIGNhbGxlZCBkZWVwZXIgaW4gdGhlIHBhcnNlKSBzb21ldGltZXMgcmV0dXJuXG4gKiBQYXJzZWRGdW5jT3JBcmdPckRvbGxhciwgd2hpY2ggY29udGFpbiBhIFBhcnNlTm9kZSBhcyB3ZWxsIGFzIHNvbWUgZGF0YSBhYm91dFxuICogd2hldGhlciB0aGUgcGFyc2VkIG9iamVjdCBpcyBhIGZ1bmN0aW9uIHdoaWNoIGlzIG1pc3Npbmcgc29tZSBhcmd1bWVudHMsIG9yIGFcbiAqIHN0YW5kYWxvbmUgb2JqZWN0IHdoaWNoIGNhbiBiZSB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGFub3RoZXIgZnVuY3Rpb24uXG4gKi9cblxuZnVuY3Rpb24gbmV3QXJndW1lbnQocmVzdWx0LCB0b2tlbikge1xuICAgIHJldHVybiB7IHR5cGU6IFwiYXJnXCIsIHJlc3VsdDogcmVzdWx0LCB0b2tlbjogdG9rZW4gfTtcbn1cblxuZnVuY3Rpb24gbmV3RnVuY3Rpb24odG9rZW4pIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImZuXCIsIHJlc3VsdDogdG9rZW4udGV4dCwgdG9rZW46IHRva2VuIH07XG59XG5cbmZ1bmN0aW9uIG5ld0RvbGxhcih0b2tlbikge1xuICAgIHJldHVybiB7IHR5cGU6IFwiJFwiLCByZXN1bHQ6IFwiJFwiLCB0b2tlbjogdG9rZW4gfTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0RnVuY09yQXJnKHBhcnNlZCkge1xuICAgIGlmIChwYXJzZWQudHlwZSA9PT0gXCIkXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIlVuZXhwZWN0ZWQgJFwiLCBwYXJzZWQudG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VkO1xufVxuXG52YXIgUGFyc2VyID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFBhcnNlcihpbnB1dCwgc2V0dGluZ3MpIHtcbiAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQoKSh0aGlzLCBQYXJzZXIpO1xuXG4gICAgICAgIC8vIFN0YXJ0IGluIG1hdGggbW9kZVxuICAgICAgICB0aGlzLm1vZGUgPSBcIm1hdGhcIjtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IG1hY3JvIGV4cGFuZGVyIChndWxsZXQpIGFuZCAoaW5kaXJlY3RseSB2aWEgdGhhdCkgYWxzbyBhXG4gICAgICAgIC8vIG5ldyBsZXhlciAobW91dGgpIGZvciB0aGlzIHBhcnNlciAoc3RvbWFjaCwgaW4gdGhlIGxhbmd1YWdlIG9mIFRlWClcbiAgICAgICAgdGhpcy5ndWxsZXQgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19NYWNyb0V4cGFuZGVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10oaW5wdXQsIHNldHRpbmdzLm1hY3JvcywgdGhpcy5tb2RlKTtcbiAgICAgICAgLy8gVXNlIG9sZCBcXGNvbG9yIGJlaGF2aW9yIChzYW1lIGFzIExhVGVYJ3MgXFx0ZXh0Y29sb3IpIGlmIHJlcXVlc3RlZC5cbiAgICAgICAgLy8gV2UgZG8gdGhpcyBhZnRlciB0aGUgbWFjcm9zIG9iamVjdCBoYXMgYmVlbiBjb3BpZWQgYnkgTWFjcm9FeHBhbmRlci5cbiAgICAgICAgaWYgKHNldHRpbmdzLmNvbG9ySXNUZXh0Q29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMuZ3VsbGV0Lm1hY3Jvc1tcIlxcXFxjb2xvclwiXSA9IFwiXFxcXHRleHRjb2xvclwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIFN0b3JlIHRoZSBzZXR0aW5ncyBmb3IgdXNlIGluIHBhcnNpbmdcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICAvLyBDb3VudCBsZWZ0cmlnaHQgZGVwdGggKGZvciBcXG1pZGRsZSBlcnJvcnMpXG4gICAgICAgIHRoaXMubGVmdHJpZ2h0RGVwdGggPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBhIHJlc3VsdCB0byBtYWtlIHN1cmUgaXQgaGFzIHRoZSByaWdodCB0eXBlLCBhbmQgdGhyb3dzIGFuXG4gICAgICogYXBwcm9wcmlhdGUgZXJyb3Igb3RoZXJ3aXNlLlxuICAgICAqL1xuXG5cbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCgpKFBhcnNlciwgW3tcbiAgICAgICAga2V5OiBcImV4cGVjdFwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZXhwZWN0KHRleHQpIHtcbiAgICAgICAgICAgIHZhciBjb25zdW1lID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5uZXh0VG9rZW4udGV4dCAhPT0gdGV4dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJFeHBlY3RlZCAnXCIgKyB0ZXh0ICsgXCInLCBnb3QgJ1wiICsgdGhpcy5uZXh0VG9rZW4udGV4dCArIFwiJ1wiLCB0aGlzLm5leHRUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29uc3VtZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbnNpZGVycyB0aGUgY3VycmVudCBsb29rIGFoZWFkIHRva2VuIGFzIGNvbnN1bWVkLFxuICAgICAgICAgKiBhbmQgZmV0Y2hlcyB0aGUgb25lIGFmdGVyIHRoYXQgYXMgdGhlIG5ldyBsb29rIGFoZWFkLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImNvbnN1bWVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNvbnN1bWUoKSB7XG4gICAgICAgICAgICB0aGlzLm5leHRUb2tlbiA9IHRoaXMuZ3VsbGV0LmV4cGFuZE5leHRUb2tlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN3aXRjaGVzIGJldHdlZW4gXCJ0ZXh0XCIgYW5kIFwibWF0aFwiIG1vZGVzLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInN3aXRjaE1vZGVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHN3aXRjaE1vZGUobmV3TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlID0gbmV3TW9kZTtcbiAgICAgICAgICAgIHRoaXMuZ3VsbGV0LnN3aXRjaE1vZGUobmV3TW9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogTWFpbiBwYXJzaW5nIGZ1bmN0aW9uLCB3aGljaCBwYXJzZXMgYW4gZW50aXJlIGlucHV0LlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInBhcnNlXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZSgpIHtcbiAgICAgICAgICAgIC8vIFRyeSB0byBwYXJzZSB0aGUgaW5wdXRcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgdmFyIHBhcnNlID0gdGhpcy5wYXJzZUlucHV0KCk7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUGFyc2VzIGFuIGVudGlyZSBpbnB1dCB0cmVlLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInBhcnNlSW5wdXRcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlSW5wdXQoKSB7XG4gICAgICAgICAgICAvLyBQYXJzZSBhbiBleHByZXNzaW9uXG4gICAgICAgICAgICB2YXIgZXhwcmVzc2lvbiA9IHRoaXMucGFyc2VFeHByZXNzaW9uKGZhbHNlKTtcbiAgICAgICAgICAgIC8vIElmIHdlIHN1Y2NlZWRlZCwgbWFrZSBzdXJlIHRoZXJlJ3MgYW4gRU9GIGF0IHRoZSBlbmRcbiAgICAgICAgICAgIHRoaXMuZXhwZWN0KFwiRU9GXCIsIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiBleHByZXNzaW9uO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6IFwicGFyc2VFeHByZXNzaW9uXCIsXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogUGFyc2VzIGFuIFwiZXhwcmVzc2lvblwiLCB3aGljaCBpcyBhIGxpc3Qgb2YgYXRvbXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIGBicmVha09uSW5maXhgOiBTaG91bGQgdGhlIHBhcnNpbmcgc3RvcCB3aGVuIHdlIGhpdCBpbmZpeCBub2Rlcz8gVGhpc1xuICAgICAgICAgKiAgICAgICAgICAgICAgICAgaGFwcGVucyB3aGVuIGZ1bmN0aW9ucyBoYXZlIGhpZ2hlciBwcmVjZW5kZW5jZSBoYW4gaW5maXhcbiAgICAgICAgICogICAgICAgICAgICAgICAgIG5vZGVzIGluIGltcGxpY2l0IHBhcnNlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogYGJyZWFrT25Ub2tlblRleHRgOiBUaGUgdGV4dCBvZiB0aGUgdG9rZW4gdGhhdCB0aGUgZXhwcmVzc2lvbiBzaG91bGQgZW5kXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgd2l0aCwgb3IgYG51bGxgIGlmIHNvbWV0aGluZyBlbHNlIHNob3VsZCBlbmQgdGhlXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5cbiAgICAgICAgICovXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oYnJlYWtPbkluZml4LCBicmVha09uVG9rZW5UZXh0KSB7XG4gICAgICAgICAgICB2YXIgYm9keSA9IFtdO1xuICAgICAgICAgICAgLy8gS2VlcCBhZGRpbmcgYXRvbXMgdG8gdGhlIGJvZHkgdW50aWwgd2UgY2FuJ3QgcGFyc2UgYW55IG1vcmUgYXRvbXMgKGVpdGhlclxuICAgICAgICAgICAgLy8gd2UgcmVhY2hlZCB0aGUgZW5kLCBhIH0sIG9yIGEgXFxyaWdodClcbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHNwYWNlcyBpbiBtYXRoIG1vZGVcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSBcIm1hdGhcIikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWVTcGFjZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGxleCA9IHRoaXMubmV4dFRva2VuO1xuICAgICAgICAgICAgICAgIGlmIChQYXJzZXIuZW5kT2ZFeHByZXNzaW9uLmluZGV4T2YobGV4LnRleHQpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGJyZWFrT25Ub2tlblRleHQgJiYgbGV4LnRleHQgPT09IGJyZWFrT25Ub2tlblRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChicmVha09uSW5maXggJiYgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19mdW5jdGlvbnNfX1tcImFcIiAvKiBkZWZhdWx0ICovXVtsZXgudGV4dF0gJiYgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19mdW5jdGlvbnNfX1tcImFcIiAvKiBkZWZhdWx0ICovXVtsZXgudGV4dF0uaW5maXgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBhdG9tID0gdGhpcy5wYXJzZUF0b20oYnJlYWtPblRva2VuVGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKCFhdG9tKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZXR0aW5ncy50aHJvd09uRXJyb3IgJiYgbGV4LnRleHRbMF0gPT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JOb2RlID0gdGhpcy5oYW5kbGVVbnN1cHBvcnRlZENtZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keS5wdXNoKGVycm9yTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBib2R5LnB1c2goYXRvbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVJbmZpeE5vZGVzKGJvZHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJld3JpdGVzIGluZml4IG9wZXJhdG9ycyBzdWNoIGFzIFxcb3ZlciB3aXRoIGNvcnJlc3BvbmRpbmcgY29tbWFuZHMgc3VjaFxuICAgICAgICAgKiBhcyBcXGZyYWMuXG4gICAgICAgICAqXG4gICAgICAgICAqIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBpbmZpeCBvcGVyYXRvciBwZXIgZ3JvdXAuICBJZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmVcbiAgICAgICAgICogdGhlbiB0aGUgZXhwcmVzc2lvbiBpcyBhbWJpZ3VvdXMuICBUaGlzIGNhbiBiZSByZXNvbHZlZCBieSBhZGRpbmcge30uXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiaGFuZGxlSW5maXhOb2Rlc1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlSW5maXhOb2Rlcyhib2R5KSB7XG4gICAgICAgICAgICB2YXIgb3ZlckluZGV4ID0gLTE7XG4gICAgICAgICAgICB2YXIgZnVuY05hbWUgPSB2b2lkIDA7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBub2RlID0gYm9keVtpXTtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS50eXBlID09PSBcImluZml4XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG92ZXJJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJvbmx5IG9uZSBpbmZpeCBvcGVyYXRvciBwZXIgZ3JvdXBcIiwgbm9kZS52YWx1ZS50b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3ZlckluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgZnVuY05hbWUgPSBub2RlLnZhbHVlLnJlcGxhY2VXaXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG92ZXJJbmRleCAhPT0gLTEgJiYgZnVuY05hbWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbnVtZXJOb2RlID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIHZhciBkZW5vbU5vZGUgPSB2b2lkIDA7XG5cbiAgICAgICAgICAgICAgICB2YXIgbnVtZXJCb2R5ID0gYm9keS5zbGljZSgwLCBvdmVySW5kZXgpO1xuICAgICAgICAgICAgICAgIHZhciBkZW5vbUJvZHkgPSBib2R5LnNsaWNlKG92ZXJJbmRleCArIDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG51bWVyQm9keS5sZW5ndGggPT09IDEgJiYgbnVtZXJCb2R5WzBdLnR5cGUgPT09IFwib3JkZ3JvdXBcIikge1xuICAgICAgICAgICAgICAgICAgICBudW1lck5vZGUgPSBudW1lckJvZHlbMF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbnVtZXJOb2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfX1BhcnNlTm9kZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwib3JkZ3JvdXBcIiwgbnVtZXJCb2R5LCB0aGlzLm1vZGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkZW5vbUJvZHkubGVuZ3RoID09PSAxICYmIGRlbm9tQm9keVswXS50eXBlID09PSBcIm9yZGdyb3VwXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVub21Ob2RlID0gZGVub21Cb2R5WzBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbm9tTm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIm9yZGdyb3VwXCIsIGRlbm9tQm9keSwgdGhpcy5tb2RlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmNhbGxGdW5jdGlvbihmdW5jTmFtZSwgW251bWVyTm9kZSwgZGVub21Ob2RlXSwgW10pO1xuICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfX1BhcnNlTm9kZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKHZhbHVlLnR5cGUsIHZhbHVlLCB0aGlzLm1vZGUpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJvZHk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZ3JlZWRpbmVzcyBvZiBhIHN1cGVyc2NyaXB0IG9yIHN1YnNjcmlwdFxuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiaGFuZGxlU3VwU3Vic2NyaXB0XCIsXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogSGFuZGxlIGEgc3Vic2NyaXB0IG9yIHN1cGVyc2NyaXB0IHdpdGggbmljZSBlcnJvcnMuXG4gICAgICAgICAqL1xuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlU3VwU3Vic2NyaXB0KG5hbWUpIHtcbiAgICAgICAgICAgIHZhciBzeW1ib2xUb2tlbiA9IHRoaXMubmV4dFRva2VuO1xuICAgICAgICAgICAgdmFyIHN5bWJvbCA9IHN5bWJvbFRva2VuLnRleHQ7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpOyAvLyBpZ25vcmUgc3BhY2VzIGJlZm9yZSBzdXAvc3Vic2NyaXB0IGFyZ3VtZW50XG4gICAgICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLnBhcnNlR3JvdXAoKTtcblxuICAgICAgICAgICAgaWYgKCFncm91cCkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZXR0aW5ncy50aHJvd09uRXJyb3IgJiYgdGhpcy5uZXh0VG9rZW4udGV4dFswXSA9PT0gXCJcXFxcXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVW5zdXBwb3J0ZWRDbWQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiRXhwZWN0ZWQgZ3JvdXAgYWZ0ZXIgJ1wiICsgc3ltYm9sICsgXCInXCIsIHN5bWJvbFRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBhcmcgPSBhc3NlcnRGdW5jT3JBcmcoZ3JvdXApO1xuICAgICAgICAgICAgaWYgKGFyZy50eXBlID09PSBcImZuXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBeIGFuZCBfIGhhdmUgYSBncmVlZGluZXNzLCBzbyBoYW5kbGUgaW50ZXJhY3Rpb25zIHdpdGggZnVuY3Rpb25zJ1xuICAgICAgICAgICAgICAgIC8vIGdyZWVkaW5lc3NcbiAgICAgICAgICAgICAgICB2YXIgZnVuY0dyZWVkaW5lc3MgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2Z1bmN0aW9uc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dW2FyZy5yZXN1bHRdLmdyZWVkaW5lc3M7XG4gICAgICAgICAgICAgICAgaWYgKGZ1bmNHcmVlZGluZXNzID4gUGFyc2VyLlNVUFNVQl9HUkVFRElORVNTKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlR2l2ZW5GdW5jdGlvbihncm91cCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIkdvdCBmdW5jdGlvbiAnXCIgKyBhcmcucmVzdWx0ICsgXCInIHdpdGggbm8gYXJndW1lbnRzIFwiICsgXCJhcyBcIiArIG5hbWUsIHN5bWJvbFRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcmcucmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbnZlcnRzIHRoZSB0ZXh0dWFsIGlucHV0IG9mIGFuIHVuc3VwcG9ydGVkIGNvbW1hbmQgaW50byBhIHRleHQgbm9kZVxuICAgICAgICAgKiBjb250YWluZWQgd2l0aGluIGEgY29sb3Igbm9kZSB3aG9zZSBjb2xvciBpcyBkZXRlcm1pbmVkIGJ5IGVycm9yQ29sb3JcbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJoYW5kbGVVbnN1cHBvcnRlZENtZFwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVW5zdXBwb3J0ZWRDbWQoKSB7XG4gICAgICAgICAgICB2YXIgdGV4dCA9IHRoaXMubmV4dFRva2VuLnRleHQ7XG4gICAgICAgICAgICB2YXIgdGV4dG9yZEFycmF5ID0gW107XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRleHRvcmRBcnJheS5wdXNoKG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcInRleHRvcmRcIiwgdGV4dFtpXSwgXCJ0ZXh0XCIpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHRleHROb2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfX1BhcnNlTm9kZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwidGV4dFwiLCB7XG4gICAgICAgICAgICAgICAgYm9keTogdGV4dG9yZEFycmF5LFxuICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiXG4gICAgICAgICAgICB9LCB0aGlzLm1vZGUpO1xuXG4gICAgICAgICAgICB2YXIgY29sb3JOb2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfX1BhcnNlTm9kZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiY29sb3JcIiwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLnNldHRpbmdzLmVycm9yQ29sb3IsXG4gICAgICAgICAgICAgICAgdmFsdWU6IFt0ZXh0Tm9kZV0sXG4gICAgICAgICAgICAgICAgdHlwZTogXCJjb2xvclwiXG4gICAgICAgICAgICB9LCB0aGlzLm1vZGUpO1xuXG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIHJldHVybiBjb2xvck5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUGFyc2VzIGEgZ3JvdXAgd2l0aCBvcHRpb25hbCBzdXBlci9zdWJzY3JpcHRzLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInBhcnNlQXRvbVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2VBdG9tKGJyZWFrT25Ub2tlblRleHQpIHtcbiAgICAgICAgICAgIC8vIFRoZSBib2R5IG9mIGFuIGF0b20gaXMgYW4gaW1wbGljaXQgZ3JvdXAsIHNvIHRoYXQgdGhpbmdzIGxpa2VcbiAgICAgICAgICAgIC8vIFxcbGVmdCh4XFxyaWdodCleMiB3b3JrIGNvcnJlY3RseS5cbiAgICAgICAgICAgIHZhciBiYXNlID0gdGhpcy5wYXJzZUltcGxpY2l0R3JvdXAoYnJlYWtPblRva2VuVGV4dCk7XG5cbiAgICAgICAgICAgIC8vIEluIHRleHQgbW9kZSwgd2UgZG9uJ3QgaGF2ZSBzdXBlcnNjcmlwdHMgb3Igc3Vic2NyaXB0c1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGJhc2UgbWF5IGJlIGVtcHR5IChpLmUuIG51bGwpIGF0IHRoaXMgcG9pbnQuXG5cbiAgICAgICAgICAgIHZhciBzdXBlcnNjcmlwdCA9IHZvaWQgMDtcbiAgICAgICAgICAgIHZhciBzdWJzY3JpcHQgPSB2b2lkIDA7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIC8vIEd1YXJhbnRlZWQgaW4gbWF0aCBtb2RlLCBzbyBlYXQgYW55IHNwYWNlcyBmaXJzdC5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWVTcGFjZXMoKTtcblxuICAgICAgICAgICAgICAgIC8vIExleCB0aGUgZmlyc3QgdG9rZW5cbiAgICAgICAgICAgICAgICB2YXIgbGV4ID0gdGhpcy5uZXh0VG9rZW47XG5cbiAgICAgICAgICAgICAgICBpZiAobGV4LnRleHQgPT09IFwiXFxcXGxpbWl0c1wiIHx8IGxleC50ZXh0ID09PSBcIlxcXFxub2xpbWl0c1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGdvdCBhIGxpbWl0IGNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlIHx8IGJhc2UudHlwZSAhPT0gXCJvcFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiTGltaXQgY29udHJvbHMgbXVzdCBmb2xsb3cgYSBtYXRoIG9wZXJhdG9yXCIsIGxleCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGltaXRzID0gbGV4LnRleHQgPT09IFwiXFxcXGxpbWl0c1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS52YWx1ZS5saW1pdHMgPSBsaW1pdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYXNlLnZhbHVlLmFsd2F5c0hhbmRsZVN1cFN1YiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsZXgudGV4dCA9PT0gXCJeXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgZ290IGEgc3VwZXJzY3JpcHQgc3RhcnRcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cGVyc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiRG91YmxlIHN1cGVyc2NyaXB0XCIsIGxleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3VwZXJzY3JpcHQgPSB0aGlzLmhhbmRsZVN1cFN1YnNjcmlwdChcInN1cGVyc2NyaXB0XCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGV4LnRleHQgPT09IFwiX1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGdvdCBhIHN1YnNjcmlwdCBzdGFydFxuICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiRG91YmxlIHN1YnNjcmlwdFwiLCBsZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCA9IHRoaXMuaGFuZGxlU3VwU3Vic2NyaXB0KFwic3Vic2NyaXB0XCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGV4LnRleHQgPT09IFwiJ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGdvdCBhIHByaW1lXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdXBlcnNjcmlwdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIkRvdWJsZSBzdXBlcnNjcmlwdFwiLCBsZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmltZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcInRleHRvcmRcIiwgXCJcXFxccHJpbWVcIiwgdGhpcy5tb2RlKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBNYW55IHByaW1lcyBjYW4gYmUgZ3JvdXBlZCB0b2dldGhlciwgc28gd2UgaGFuZGxlIHRoaXMgaGVyZVxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJpbWVzID0gW3ByaW1lXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEtlZXAgbGV4aW5nIHRva2VucyB1bnRpbCB3ZSBnZXQgc29tZXRoaW5nIHRoYXQncyBub3QgYSBwcmltZVxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAodGhpcy5uZXh0VG9rZW4udGV4dCA9PT0gXCInXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBlYWNoIG9uZSwgYWRkIGFub3RoZXIgcHJpbWUgdG8gdGhlIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW1lcy5wdXNoKHByaW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYSBzdXBlcnNjcmlwdCBmb2xsb3dpbmcgdGhlIHByaW1lcywgY29tYmluZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgIC8vIHN1cGVyc2NyaXB0IGluIHdpdGggdGhlIHByaW1lcy5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmV4dFRva2VuLnRleHQgPT09IFwiXlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmltZXMucHVzaCh0aGlzLmhhbmRsZVN1cFN1YnNjcmlwdChcInN1cGVyc2NyaXB0XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBQdXQgZXZlcnl0aGluZyBpbnRvIGFuIG9yZGdyb3VwIGFzIHRoZSBzdXBlcnNjcmlwdFxuICAgICAgICAgICAgICAgICAgICBzdXBlcnNjcmlwdCA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIm9yZGdyb3VwXCIsIHByaW1lcywgdGhpcy5tb2RlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBpdCB3YXNuJ3QgXiwgXywgb3IgJywgc3RvcCBwYXJzaW5nIHN1cGVyL3N1YnNjcmlwdHNcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3VwZXJzY3JpcHQgfHwgc3Vic2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgZ290IGVpdGhlciBhIHN1cGVyc2NyaXB0IG9yIHN1YnNjcmlwdCwgY3JlYXRlIGEgc3Vwc3ViXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcInN1cHN1YlwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGJhc2U6IGJhc2UsXG4gICAgICAgICAgICAgICAgICAgIHN1cDogc3VwZXJzY3JpcHQsXG4gICAgICAgICAgICAgICAgICAgIHN1Yjogc3Vic2NyaXB0XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5tb2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHJldHVybiB0aGUgb3JpZ2luYWwgYm9keVxuICAgICAgICAgICAgICAgIHJldHVybiBiYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhcnNlcyBhbiBpbXBsaWNpdCBncm91cCwgd2hpY2ggaXMgYSBncm91cCB0aGF0IHN0YXJ0cyBhdCB0aGUgZW5kIG9mIGFcbiAgICAgICAgICogc3BlY2lmaWVkLCBhbmQgZW5kcyByaWdodCBiZWZvcmUgYSBoaWdoZXIgZXhwbGljaXQgZ3JvdXAgZW5kcywgb3IgYXQgRU9MLiBJdFxuICAgICAgICAgKiBpcyB1c2VkIGZvciBmdW5jdGlvbnMgdGhhdCBhcHBlYXIgdG8gYWZmZWN0IHRoZSBjdXJyZW50IHN0eWxlLCBsaWtlIFxcTGFyZ2Ugb3JcbiAgICAgICAgICogXFx0ZXh0cm0sIHdoZXJlIGluc3RlYWQgb2Yga2VlcGluZyBhIHN0eWxlIHdlIGp1c3QgcHJldGVuZCB0aGF0IHRoZXJlIGlzIGFuXG4gICAgICAgICAqIGltcGxpY2l0IGdyb3VwaW5nIGFmdGVyIGl0IHVudGlsIHRoZSBlbmQgb2YgdGhlIGdyb3VwLiBFLmcuXG4gICAgICAgICAqICAgc21hbGwgdGV4dCB7XFxMYXJnZSBsYXJnZSB0ZXh0fSBzbWFsbCB0ZXh0IGFnYWluXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwicGFyc2VJbXBsaWNpdEdyb3VwXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZUltcGxpY2l0R3JvdXAoYnJlYWtPblRva2VuVGV4dCkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5wYXJzZVN5bWJvbCgpO1xuXG4gICAgICAgICAgICBpZiAoc3RhcnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIGRpZG4ndCBnZXQgYW55dGhpbmcgd2UgaGFuZGxlLCBmYWxsIGJhY2sgdG8gcGFyc2VGdW5jdGlvblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRnVuY3Rpb24oKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnQudHlwZSA9PT0gXCJhcmdcIikge1xuICAgICAgICAgICAgICAgIC8vIERlZmVyIHRvIHBhcnNlR2l2ZW5GdW5jdGlvbiBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uIHdlIGhhbmRsZVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlR2l2ZW5GdW5jdGlvbihzdGFydCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBmdW5jID0gc3RhcnQucmVzdWx0O1xuXG4gICAgICAgICAgICBpZiAoZnVuYyA9PT0gXCIkXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSBcIm1hdGhcIikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiJCB3aXRoaW4gbWF0aCBtb2RlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgb3V0ZXJNb2RlID0gdGhpcy5tb2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3dpdGNoTW9kZShcIm1hdGhcIik7XG4gICAgICAgICAgICAgICAgLy8gRXhwYW5kIG5leHQgc3ltYm9sIG5vdyB0aGF0IHdlJ3JlIGluIG1hdGggbW9kZS5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgICAgICB2YXIgYm9keSA9IHRoaXMucGFyc2VFeHByZXNzaW9uKGZhbHNlLCBcIiRcIik7XG4gICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgZXhwYW5kIHRoZSBuZXh0IHN5bWJvbCBhZnRlciB0aGUgJCB1bnRpbCBhZnRlclxuICAgICAgICAgICAgICAgIC8vIHN3aXRjaGluZyBtb2RlcyBiYWNrLiAgU28gZG9uJ3QgY29uc3VtZSB3aXRoaW4gZXhwZWN0LlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0KFwiJFwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zd2l0Y2hNb2RlKG91dGVyTW9kZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcInN0eWxpbmdcIiwge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBib2R5XG4gICAgICAgICAgICAgICAgfSwgXCJtYXRoXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmdW5jID09PSBcIlxcXFxiZWdpblwiKSB7XG4gICAgICAgICAgICAgICAgLy8gYmVnaW4uLi5lbmQgaXMgc2ltaWxhciB0byBsZWZ0Li4ucmlnaHRcbiAgICAgICAgICAgICAgICB2YXIgYmVnaW4gPSB0aGlzLnBhcnNlR2l2ZW5GdW5jdGlvbihzdGFydCk7XG4gICAgICAgICAgICAgICAgdmFyIGVudk5hbWUgPSBiZWdpbi52YWx1ZS5uYW1lO1xuICAgICAgICAgICAgICAgIGlmICghX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19lbnZpcm9ubWVudHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5oYXNPd25Qcm9wZXJ0eShlbnZOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiTm8gc3VjaCBlbnZpcm9ubWVudDogXCIgKyBlbnZOYW1lLCBiZWdpbi52YWx1ZS5uYW1lR3JvdXApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBCdWlsZCB0aGUgZW52aXJvbm1lbnQgb2JqZWN0LiBBcmd1bWVudHMgYW5kIG90aGVyIGluZm9ybWF0aW9uIHdpbGxcbiAgICAgICAgICAgICAgICAvLyBiZSBtYWRlIGF2YWlsYWJsZSB0byB0aGUgYmVnaW4gYW5kIGVuZCBtZXRob2RzIHVzaW5nIHByb3BlcnRpZXMuXG4gICAgICAgICAgICAgICAgdmFyIGVudiA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fZW52aXJvbm1lbnRzX19bXCJhXCIgLyogZGVmYXVsdCAqL11bZW52TmFtZV07XG5cbiAgICAgICAgICAgICAgICB2YXIgX3BhcnNlQXJndW1lbnRzID0gdGhpcy5wYXJzZUFyZ3VtZW50cyhcIlxcXFxiZWdpbntcIiArIGVudk5hbWUgKyBcIn1cIiwgZW52KSxcbiAgICAgICAgICAgICAgICAgICAgYXJncyA9IF9wYXJzZUFyZ3VtZW50cy5hcmdzLFxuICAgICAgICAgICAgICAgICAgICBvcHRBcmdzID0gX3BhcnNlQXJndW1lbnRzLm9wdEFyZ3M7XG5cbiAgICAgICAgICAgICAgICB2YXIgY29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgICAgICAgICAgICBlbnZOYW1lOiBlbnZOYW1lLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZXI6IHRoaXNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHZhciBfcmVzdWx0ID0gZW52LmhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncyk7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoXCJcXFxcZW5kXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB2YXIgZW5kTmFtZVRva2VuID0gdGhpcy5uZXh0VG9rZW47XG4gICAgICAgICAgICAgICAgdmFyIGVuZCA9IHRoaXMucGFyc2VGdW5jdGlvbigpO1xuICAgICAgICAgICAgICAgIGlmICghZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJmYWlsZWQgdG8gcGFyc2UgZnVuY3Rpb24gYWZ0ZXIgXFxcXGVuZFwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVuZC52YWx1ZS5uYW1lICE9PSBlbnZOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJNaXNtYXRjaDogXFxcXGJlZ2lue1wiICsgZW52TmFtZSArIFwifSBtYXRjaGVkIFwiICsgXCJieSBcXFxcZW5ke1wiICsgZW5kLnZhbHVlLm5hbWUgKyBcIn1cIiwgZW5kTmFtZVRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIERlZmVyIHRvIHBhcnNlR2l2ZW5GdW5jdGlvbiBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uIHdlIGhhbmRsZVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlR2l2ZW5GdW5jdGlvbihzdGFydCwgYnJlYWtPblRva2VuVGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUGFyc2VzIGFuIGVudGlyZSBmdW5jdGlvbiwgaW5jbHVkaW5nIGl0cyBiYXNlIGFuZCBhbGwgb2YgaXRzIGFyZ3VtZW50cy5cbiAgICAgICAgICogSXQgYWxzbyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZSBwYXJzZWQgbm9kZSBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJwYXJzZUZ1bmN0aW9uXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGJhc2VHcm91cCA9IHRoaXMucGFyc2VHcm91cCgpO1xuICAgICAgICAgICAgcmV0dXJuIGJhc2VHcm91cCA/IHRoaXMucGFyc2VHaXZlbkZ1bmN0aW9uKGJhc2VHcm91cCkgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMgcGFyc2VGdW5jdGlvbigpLCBleGNlcHQgdGhhdCB0aGUgYmFzZSBpcyBwcm92aWRlZCwgZ3VhcmFudGVlaW5nIGFcbiAgICAgICAgICogbm9uLW51bGxhYmxlIHJlc3VsdC5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJwYXJzZUdpdmVuRnVuY3Rpb25cIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlR2l2ZW5GdW5jdGlvbihiYXNlR3JvdXAsIGJyZWFrT25Ub2tlblRleHQpIHtcbiAgICAgICAgICAgIGJhc2VHcm91cCA9IGFzc2VydEZ1bmNPckFyZyhiYXNlR3JvdXApO1xuICAgICAgICAgICAgaWYgKGJhc2VHcm91cC50eXBlID09PSBcImZuXCIpIHtcbiAgICAgICAgICAgICAgICB2YXIgZnVuYyA9IGJhc2VHcm91cC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgdmFyIGZ1bmNEYXRhID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19mdW5jdGlvbnNfX1tcImFcIiAvKiBkZWZhdWx0ICovXVtmdW5jXTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSBcInRleHRcIiAmJiAhZnVuY0RhdGEuYWxsb3dlZEluVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiQ2FuJ3QgdXNlIGZ1bmN0aW9uICdcIiArIGZ1bmMgKyBcIicgaW4gdGV4dCBtb2RlXCIsIGJhc2VHcm91cC50b2tlbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09IFwibWF0aFwiICYmIGZ1bmNEYXRhLmFsbG93ZWRJbk1hdGggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJDYW4ndCB1c2UgZnVuY3Rpb24gJ1wiICsgZnVuYyArIFwiJyBpbiBtYXRoIG1vZGVcIiwgYmFzZUdyb3VwLnRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgX3BhcnNlQXJndW1lbnRzMiA9IHRoaXMucGFyc2VBcmd1bWVudHMoZnVuYywgZnVuY0RhdGEpLFxuICAgICAgICAgICAgICAgICAgICBhcmdzID0gX3BhcnNlQXJndW1lbnRzMi5hcmdzLFxuICAgICAgICAgICAgICAgICAgICBvcHRBcmdzID0gX3BhcnNlQXJndW1lbnRzMi5vcHRBcmdzO1xuXG4gICAgICAgICAgICAgICAgdmFyIF90b2tlbiA9IGJhc2VHcm91cC50b2tlbjtcbiAgICAgICAgICAgICAgICB2YXIgX3Jlc3VsdDIgPSB0aGlzLmNhbGxGdW5jdGlvbihmdW5jLCBhcmdzLCBvcHRBcmdzLCBfdG9rZW4sIGJyZWFrT25Ub2tlblRleHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fUGFyc2VOb2RlX19bXCJhXCIgLyogZGVmYXVsdCAqL10oX3Jlc3VsdDIudHlwZSwgX3Jlc3VsdDIsIHRoaXMubW9kZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBiYXNlR3JvdXAucmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENhbGwgYSBmdW5jdGlvbiBoYW5kbGVyIHdpdGggYSBzdWl0YWJsZSBjb250ZXh0IGFuZCBhcmd1bWVudHMuXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiY2FsbEZ1bmN0aW9uXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBjYWxsRnVuY3Rpb24obmFtZSwgYXJncywgb3B0QXJncywgdG9rZW4sIGJyZWFrT25Ub2tlblRleHQpIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgIGZ1bmNOYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgIHBhcnNlcjogdGhpcyxcbiAgICAgICAgICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgICAgICAgICAgYnJlYWtPblRva2VuVGV4dDogYnJlYWtPblRva2VuVGV4dFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBmdW5jID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19mdW5jdGlvbnNfX1tcImFcIiAvKiBkZWZhdWx0ICovXVtuYW1lXTtcbiAgICAgICAgICAgIGlmIChmdW5jICYmIGZ1bmMuaGFuZGxlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jLmhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJObyBmdW5jdGlvbiBoYW5kbGVyIGZvciBcIiArIG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhcnNlcyB0aGUgYXJndW1lbnRzIG9mIGEgZnVuY3Rpb24gb3IgZW52aXJvbm1lbnRcbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJwYXJzZUFyZ3VtZW50c1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2VBcmd1bWVudHMoZnVuYywgLy8gU2hvdWxkIGxvb2sgbGlrZSBcIlxcbmFtZVwiIG9yIFwiXFxiZWdpbntuYW1lfVwiLlxuICAgICAgICBmdW5jRGF0YSkge1xuICAgICAgICAgICAgdmFyIHRvdGFsQXJncyA9IGZ1bmNEYXRhLm51bUFyZ3MgKyBmdW5jRGF0YS5udW1PcHRpb25hbEFyZ3M7XG4gICAgICAgICAgICBpZiAodG90YWxBcmdzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgYXJnczogW10sIG9wdEFyZ3M6IFtdIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBiYXNlR3JlZWRpbmVzcyA9IGZ1bmNEYXRhLmdyZWVkaW5lc3M7XG4gICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgdmFyIG9wdEFyZ3MgPSBbXTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3RhbEFyZ3M7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBhcmdUeXBlID0gZnVuY0RhdGEuYXJnVHlwZXMgJiYgZnVuY0RhdGEuYXJnVHlwZXNbaV07XG4gICAgICAgICAgICAgICAgdmFyIGlzT3B0aW9uYWwgPSBpIDwgZnVuY0RhdGEubnVtT3B0aW9uYWxBcmdzO1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSBzcGFjZXMgYmV0d2VlbiBhcmd1bWVudHMuICBBcyB0aGUgVGVYYm9vayBzYXlzOlxuICAgICAgICAgICAgICAgIC8vIFwiQWZ0ZXIgeW91IGhhdmUgc2FpZCDigJhcXGRlZlxccm93IzEjMnsuLi594oCZLCB5b3UgYXJlIGFsbG93ZWQgdG9cbiAgICAgICAgICAgICAgICAvLyAgcHV0IHNwYWNlcyBiZXR3ZWVuIHRoZSBhcmd1bWVudHMgKGUuZy4sIOKAmFxccm93IHggbuKAmSksIGJlY2F1c2VcbiAgICAgICAgICAgICAgICAvLyAgVGVYIGRvZXNu4oCZdCB1c2Ugc2luZ2xlIHNwYWNlcyBhcyB1bmRlbGltaXRlZCBhcmd1bWVudHMuXCJcbiAgICAgICAgICAgICAgICBpZiAoaSA+IDAgJiYgIWlzT3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEFsc28gY29uc3VtZSBsZWFkaW5nIHNwYWNlcyBpbiBtYXRoIG1vZGUsIGFzIHBhcnNlU3ltYm9sXG4gICAgICAgICAgICAgICAgLy8gd29uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggdGhlbS4gIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGhcbiAgICAgICAgICAgICAgICAvLyBtYWNyb3MsIGUuZy4gXFxmcmFjXFxmb29cXGZvbyB3aGVyZSBcXGZvbyBleHBhbmRzIHRvIGEgc3BhY2Ugc3ltYm9sLlxuICAgICAgICAgICAgICAgIC8vIEluIExhVGVYLCB0aGUgXFxmb28ncyBnZXQgdHJlYXRlZCBhcyAoYmxhbmspIGFyZ3VtZW50cykuXG4gICAgICAgICAgICAgICAgLy8gSW4gS2FUZVgsIGZvciBub3csIGJvdGggc3BhY2VzIHdpbGwgZ2V0IGNvbnN1bWVkLlxuICAgICAgICAgICAgICAgIC8vIFRPRE8oZWRlbWFpbmUpXG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDAgJiYgIWlzT3B0aW9uYWwgJiYgdGhpcy5tb2RlID09PSBcIm1hdGhcIikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWVTcGFjZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIG5leHRUb2tlbiA9IHRoaXMubmV4dFRva2VuO1xuICAgICAgICAgICAgICAgIHZhciBhcmcgPSBhcmdUeXBlID8gdGhpcy5wYXJzZUdyb3VwT2ZUeXBlKGFyZ1R5cGUsIGlzT3B0aW9uYWwpIDogdGhpcy5wYXJzZUdyb3VwKGlzT3B0aW9uYWwpO1xuICAgICAgICAgICAgICAgIGlmICghYXJnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRBcmdzLnB1c2gobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2V0dGluZ3MudGhyb3dPbkVycm9yICYmIHRoaXMubmV4dFRva2VuLnRleHRbMF0gPT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBuZXdBcmd1bWVudCh0aGlzLmhhbmRsZVVuc3VwcG9ydGVkQ21kKCksIG5leHRUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiRXhwZWN0ZWQgZ3JvdXAgYWZ0ZXIgJ1wiICsgZnVuYyArIFwiJ1wiLCBuZXh0VG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBhcmdOb2RlID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIGFyZyA9IGFzc2VydEZ1bmNPckFyZyhhcmcpO1xuICAgICAgICAgICAgICAgIGlmIChhcmcudHlwZSA9PT0gXCJmblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhcmdHcmVlZGluZXNzID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19mdW5jdGlvbnNfX1tcImFcIiAvKiBkZWZhdWx0ICovXVthcmcucmVzdWx0XS5ncmVlZGluZXNzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXJnR3JlZWRpbmVzcyA+IGJhc2VHcmVlZGluZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdOb2RlID0gdGhpcy5wYXJzZUdpdmVuRnVuY3Rpb24oYXJnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJHb3QgZnVuY3Rpb24gJ1wiICsgYXJnLnJlc3VsdCArIFwiJyBhcyBcIiArIFwiYXJndW1lbnQgdG8gJ1wiICsgZnVuYyArIFwiJ1wiLCBuZXh0VG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnTm9kZSA9IGFyZy5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIChpc09wdGlvbmFsID8gb3B0QXJncyA6IGFyZ3MpLnB1c2goYXJnTm9kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7IGFyZ3M6IGFyZ3MsIG9wdEFyZ3M6IG9wdEFyZ3MgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQYXJzZXMgYSBncm91cCB3aGVuIHRoZSBtb2RlIGlzIGNoYW5naW5nLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInBhcnNlR3JvdXBPZlR5cGVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlR3JvdXBPZlR5cGUodHlwZSwgLy8gVXNlZCB0byBkZXNjcmliZSB0aGUgbW9kZSBpbiBlcnJvciBtZXNzYWdlcy5cbiAgICAgICAgb3B0aW9uYWwpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBgb3JpZ2luYWxgIGFyZ1R5cGVzXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJvcmlnaW5hbFwiKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IHRoaXMubW9kZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwiY29sb3JcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlQ29sb3JHcm91cChvcHRpb25hbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJzaXplXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVNpemVHcm91cChvcHRpb25hbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJ1cmxcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlVXJsR3JvdXAob3B0aW9uYWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBCeSB0aGUgdGltZSB3ZSBnZXQgaGVyZSwgdHlwZSBpcyBvbmUgb2YgXCJ0ZXh0XCIgb3IgXCJtYXRoXCIuXG4gICAgICAgICAgICAvLyBTcGVjaWZ5IHRoaXMgYXMgbW9kZSB0byBwYXJzZUdyb3VwLlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VHcm91cChvcHRpb25hbCwgdHlwZSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJjb25zdW1lU3BhY2VzXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBjb25zdW1lU3BhY2VzKCkge1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMubmV4dFRva2VuLnRleHQgPT09IFwiIFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUGFyc2VzIGEgZ3JvdXAsIGVzc2VudGlhbGx5IHJldHVybmluZyB0aGUgc3RyaW5nIGZvcm1lZCBieSB0aGVcbiAgICAgICAgICogYnJhY2UtZW5jbG9zZWQgdG9rZW5zIHBsdXMgc29tZSBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJwYXJzZVN0cmluZ0dyb3VwXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZVN0cmluZ0dyb3VwKG1vZGVOYW1lLCAvLyBVc2VkIHRvIGRlc2NyaWJlIHRoZSBtb2RlIGluIGVycm9yIG1lc3NhZ2VzLlxuICAgICAgICBvcHRpb25hbCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbmFsICYmIHRoaXMubmV4dFRva2VuLnRleHQgIT09IFwiW1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgb3V0ZXJNb2RlID0gdGhpcy5tb2RlO1xuICAgICAgICAgICAgdGhpcy5tb2RlID0gXCJ0ZXh0XCI7XG4gICAgICAgICAgICB0aGlzLmV4cGVjdChvcHRpb25hbCA/IFwiW1wiIDogXCJ7XCIpO1xuICAgICAgICAgICAgdmFyIHN0ciA9IFwiXCI7XG4gICAgICAgICAgICB2YXIgZmlyc3RUb2tlbiA9IHRoaXMubmV4dFRva2VuO1xuICAgICAgICAgICAgdmFyIGxhc3RUb2tlbiA9IGZpcnN0VG9rZW47XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5uZXh0VG9rZW4udGV4dCAhPT0gKG9wdGlvbmFsID8gXCJdXCIgOiBcIn1cIikpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5uZXh0VG9rZW4udGV4dCA9PT0gXCJFT0ZcIikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgaW4gXCIgKyBtb2RlTmFtZSwgZmlyc3RUb2tlbi5yYW5nZSh0aGlzLm5leHRUb2tlbiwgc3RyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhc3RUb2tlbiA9IHRoaXMubmV4dFRva2VuO1xuICAgICAgICAgICAgICAgIHN0ciArPSBsYXN0VG9rZW4udGV4dDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubW9kZSA9IG91dGVyTW9kZTtcbiAgICAgICAgICAgIHRoaXMuZXhwZWN0KG9wdGlvbmFsID8gXCJdXCIgOiBcIn1cIik7XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RUb2tlbi5yYW5nZShsYXN0VG9rZW4sIHN0cik7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUGFyc2VzIGEgZ3JvdXAsIGVzc2VudGlhbGx5IHJldHVybmluZyB0aGUgc3RyaW5nIGZvcm1lZCBieSB0aGVcbiAgICAgICAgICogYnJhY2UtZW5jbG9zZWQgdG9rZW5zIHBsdXMgc29tZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiwgcG9zc2libHlcbiAgICAgICAgICogd2l0aCBuZXN0ZWQgYnJhY2VzLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInBhcnNlU3RyaW5nR3JvdXBXaXRoQmFsYW5jZWRCcmFjZXNcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlU3RyaW5nR3JvdXBXaXRoQmFsYW5jZWRCcmFjZXMobW9kZU5hbWUsIC8vIFVzZWQgdG8gZGVzY3JpYmUgdGhlIG1vZGUgaW4gZXJyb3IgbWVzc2FnZXMuXG4gICAgICAgIG9wdGlvbmFsKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uYWwgJiYgdGhpcy5uZXh0VG9rZW4udGV4dCAhPT0gXCJbXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBvdXRlck1vZGUgPSB0aGlzLm1vZGU7XG4gICAgICAgICAgICB0aGlzLm1vZGUgPSBcInRleHRcIjtcbiAgICAgICAgICAgIHRoaXMuZXhwZWN0KG9wdGlvbmFsID8gXCJbXCIgOiBcIntcIik7XG4gICAgICAgICAgICB2YXIgc3RyID0gXCJcIjtcbiAgICAgICAgICAgIHZhciBuZXN0ID0gMDtcbiAgICAgICAgICAgIHZhciBmaXJzdFRva2VuID0gdGhpcy5uZXh0VG9rZW47XG4gICAgICAgICAgICB2YXIgbGFzdFRva2VuID0gZmlyc3RUb2tlbjtcbiAgICAgICAgICAgIHdoaWxlIChuZXN0ID4gMCB8fCB0aGlzLm5leHRUb2tlbi50ZXh0ICE9PSAob3B0aW9uYWwgPyBcIl1cIiA6IFwifVwiKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5leHRUb2tlbi50ZXh0ID09PSBcIkVPRlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBpbiBcIiArIG1vZGVOYW1lLCBmaXJzdFRva2VuLnJhbmdlKHRoaXMubmV4dFRva2VuLCBzdHIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFzdFRva2VuID0gdGhpcy5uZXh0VG9rZW47XG4gICAgICAgICAgICAgICAgc3RyICs9IGxhc3RUb2tlbi50ZXh0O1xuICAgICAgICAgICAgICAgIGlmIChsYXN0VG9rZW4udGV4dCA9PT0gXCJ7XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgbmVzdCArPSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdFRva2VuLnRleHQgPT09IFwifVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXN0IDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJVbmJhbGFuY2VkIGJyYWNlIG9mIGlucHV0IGluIFwiICsgbW9kZU5hbWUsIGZpcnN0VG9rZW4ucmFuZ2UodGhpcy5uZXh0VG9rZW4sIHN0cikpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmVzdCAtPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tb2RlID0gb3V0ZXJNb2RlO1xuICAgICAgICAgICAgdGhpcy5leHBlY3Qob3B0aW9uYWwgPyBcIl1cIiA6IFwifVwiKTtcbiAgICAgICAgICAgIHJldHVybiBmaXJzdFRva2VuLnJhbmdlKGxhc3RUb2tlbiwgc3RyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQYXJzZXMgYSByZWdleC1kZWxpbWl0ZWQgZ3JvdXA6IHRoZSBsYXJnZXN0IHNlcXVlbmNlIG9mIHRva2Vuc1xuICAgICAgICAgKiB3aG9zZSBjb25jYXRlbmF0ZWQgc3RyaW5ncyBtYXRjaCBgcmVnZXhgLiBSZXR1cm5zIHRoZSBzdHJpbmdcbiAgICAgICAgICogZm9ybWVkIGJ5IHRoZSB0b2tlbnMgcGx1cyBzb21lIHBvc2l0aW9uIGluZm9ybWF0aW9uLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInBhcnNlUmVnZXhHcm91cFwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2VSZWdleEdyb3VwKHJlZ2V4LCBtb2RlTmFtZSkge1xuICAgICAgICAgICAgdmFyIG91dGVyTW9kZSA9IHRoaXMubW9kZTtcbiAgICAgICAgICAgIHRoaXMubW9kZSA9IFwidGV4dFwiO1xuICAgICAgICAgICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLm5leHRUb2tlbjtcbiAgICAgICAgICAgIHZhciBsYXN0VG9rZW4gPSBmaXJzdFRva2VuO1xuICAgICAgICAgICAgdmFyIHN0ciA9IFwiXCI7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5uZXh0VG9rZW4udGV4dCAhPT0gXCJFT0ZcIiAmJiByZWdleC50ZXN0KHN0ciArIHRoaXMubmV4dFRva2VuLnRleHQpKSB7XG4gICAgICAgICAgICAgICAgbGFzdFRva2VuID0gdGhpcy5uZXh0VG9rZW47XG4gICAgICAgICAgICAgICAgc3RyICs9IGxhc3RUb2tlbi50ZXh0O1xuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0ciA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJJbnZhbGlkIFwiICsgbW9kZU5hbWUgKyBcIjogJ1wiICsgZmlyc3RUb2tlbi50ZXh0ICsgXCInXCIsIGZpcnN0VG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tb2RlID0gb3V0ZXJNb2RlO1xuICAgICAgICAgICAgcmV0dXJuIGZpcnN0VG9rZW4ucmFuZ2UobGFzdFRva2VuLCBzdHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhcnNlcyBhIGNvbG9yIGRlc2NyaXB0aW9uLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInBhcnNlQ29sb3JHcm91cFwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2VDb2xvckdyb3VwKG9wdGlvbmFsKSB7XG4gICAgICAgICAgICB2YXIgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwiY29sb3JcIiwgb3B0aW9uYWwpO1xuICAgICAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eKCNbYS1mMC05XXszfXwjW2EtZjAtOV17Nn18W2Etel0rKSQvaS5leGVjKHJlcy50ZXh0KTtcbiAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiSW52YWxpZCBjb2xvcjogJ1wiICsgcmVzLnRleHQgKyBcIidcIiwgcmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXdBcmd1bWVudChuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fUGFyc2VOb2RlX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJjb2xvclwiLCBtYXRjaFswXSwgdGhpcy5tb2RlKSwgcmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQYXJzZXMgYSB1cmwgc3RyaW5nLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcInBhcnNlVXJsR3JvdXBcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlVXJsR3JvdXAob3B0aW9uYWwpIHtcbiAgICAgICAgICAgIHZhciByZXMgPSB0aGlzLnBhcnNlU3RyaW5nR3JvdXBXaXRoQmFsYW5jZWRCcmFjZXMoXCJ1cmxcIiwgb3B0aW9uYWwpO1xuICAgICAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciByYXcgPSByZXMudGV4dDtcbiAgICAgICAgICAgIC8vIGh5cGVycmVmIHBhY2thZ2UgYWxsb3dzIGJhY2tzbGFzaGVzIGFsb25lIGluIGhyZWYsIGJ1dCBkb2Vzbid0IGdlbmVyYXRlXG4gICAgICAgICAgICAvLyB2YWxpZCBsaW5rcyBpbiBzdWNoIGNhc2VzOyB3ZSBpbnRlcnByZXQgdGhpcyBhcyBcInVuZGVmaWVuZFwiIGJlaGF2aW91cixcbiAgICAgICAgICAgIC8vIGFuZCBrZWVwIHRoZW0gYXMtaXMuIFNvbWUgYnJvd3NlciB3aWxsIHJlcGxhY2UgYmFja3NsYXNoZXMgd2l0aFxuICAgICAgICAgICAgLy8gZm9yd2FyZCBzbGFzaGVzLlxuICAgICAgICAgICAgdmFyIHVybCA9IHJhdy5yZXBsYWNlKC9cXFxcKFsjJCUmfl9ee31dKS9nLCAnJDEnKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdBcmd1bWVudChuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fUGFyc2VOb2RlX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJ1cmxcIiwgdXJsLCB0aGlzLm1vZGUpLCByZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhcnNlcyBhIHNpemUgc3BlY2lmaWNhdGlvbiwgY29uc2lzdGluZyBvZiBtYWduaXR1ZGUgYW5kIHVuaXQuXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwicGFyc2VTaXplR3JvdXBcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlU2l6ZUdyb3VwKG9wdGlvbmFsKSB7XG4gICAgICAgICAgICB2YXIgcmVzID0gdm9pZCAwO1xuICAgICAgICAgICAgaWYgKCFvcHRpb25hbCAmJiB0aGlzLm5leHRUb2tlbi50ZXh0ICE9PSBcIntcIikge1xuICAgICAgICAgICAgICAgIHJlcyA9IHRoaXMucGFyc2VSZWdleEdyb3VwKC9eWy0rXT8gKig/OiR8XFxkK3xcXGQrXFwuXFxkKnxcXC5cXGQqKSAqW2Etel17MCwyfSAqJC8sIFwic2l6ZVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwic2l6ZVwiLCBvcHRpb25hbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG1hdGNoID0gLyhbLStdPykgKihcXGQrKD86XFwuXFxkKik/fFxcLlxcZCspICooW2Etel17Mn0pLy5leGVjKHJlcy50ZXh0KTtcbiAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiSW52YWxpZCBzaXplOiAnXCIgKyByZXMudGV4dCArIFwiJ1wiLCByZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyOiArKG1hdGNoWzFdICsgbWF0Y2hbMl0pLCAvLyBzaWduICsgbWFnbml0dWRlLCBjYXN0IHRvIG51bWJlclxuICAgICAgICAgICAgICAgIHVuaXQ6IG1hdGNoWzNdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X191bml0c19fW1wiYlwiIC8qIHZhbGlkVW5pdCAqL10pKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIkludmFsaWQgdW5pdDogJ1wiICsgZGF0YS51bml0ICsgXCInXCIsIHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3QXJndW1lbnQobmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfX1BhcnNlTm9kZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwic2l6ZVwiLCBkYXRhLCB0aGlzLm1vZGUpLCByZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIGBvcHRpb25hbGAgaXMgZmFsc2Ugb3IgYWJzZW50LCB0aGlzIHBhcnNlcyBhbiBvcmRpbmFyeSBncm91cCxcbiAgICAgICAgICogd2hpY2ggaXMgZWl0aGVyIGEgc2luZ2xlIG51Y2xldXMgKGxpa2UgXCJ4XCIpIG9yIGFuIGV4cHJlc3Npb25cbiAgICAgICAgICogaW4gYnJhY2VzIChsaWtlIFwie3greX1cIikuXG4gICAgICAgICAqIElmIGBvcHRpb25hbGAgaXMgdHJ1ZSwgaXQgcGFyc2VzIGVpdGhlciBhIGJyYWNrZXQtZGVsaW1pdGVkIGV4cHJlc3Npb25cbiAgICAgICAgICogKGxpa2UgXCJbeCt5XVwiKSBvciByZXR1cm5zIG51bGwgdG8gaW5kaWNhdGUgdGhlIGFic2VuY2Ugb2YgYVxuICAgICAgICAgKiBicmFja2V0LWVuY2xvc2VkIGdyb3VwLlxuICAgICAgICAgKiBJZiBgbW9kZWAgaXMgcHJlc2VudCwgc3dpdGNoZXMgdG8gdGhhdCBtb2RlIHdoaWxlIHBhcnNpbmcgdGhlIGdyb3VwLFxuICAgICAgICAgKiBhbmQgc3dpdGNoZXMgYmFjayBhZnRlci5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJwYXJzZUdyb3VwXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZUdyb3VwKG9wdGlvbmFsLCBtb2RlKSB7XG4gICAgICAgICAgICB2YXIgb3V0ZXJNb2RlID0gdGhpcy5tb2RlO1xuICAgICAgICAgICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLm5leHRUb2tlbjtcbiAgICAgICAgICAgIC8vIFRyeSB0byBwYXJzZSBhbiBvcGVuIGJyYWNlXG4gICAgICAgICAgICBpZiAodGhpcy5uZXh0VG9rZW4udGV4dCA9PT0gKG9wdGlvbmFsID8gXCJbXCIgOiBcIntcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggdG8gc3BlY2lmaWVkIG1vZGUgYmVmb3JlIHdlIGV4cGFuZCBzeW1ib2wgYWZ0ZXIgYnJhY2VcbiAgICAgICAgICAgICAgICBpZiAobW9kZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN3aXRjaE1vZGUobW9kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHdlIGdldCBhIGJyYWNlLCBwYXJzZSBhbiBleHByZXNzaW9uXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICAgICAgdmFyIGV4cHJlc3Npb24gPSB0aGlzLnBhcnNlRXhwcmVzc2lvbihmYWxzZSwgb3B0aW9uYWwgPyBcIl1cIiA6IFwifVwiKTtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFRva2VuID0gdGhpcy5uZXh0VG9rZW47XG4gICAgICAgICAgICAgICAgLy8gU3dpdGNoIG1vZGUgYmFjayBiZWZvcmUgY29uc3VtaW5nIHN5bWJvbCBhZnRlciBjbG9zZSBicmFjZVxuICAgICAgICAgICAgICAgIGlmIChtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpdGNoTW9kZShvdXRlck1vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZ2V0IGEgY2xvc2UgYnJhY2VcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdChvcHRpb25hbCA/IFwiXVwiIDogXCJ9XCIpO1xuICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSBcInRleHRcIikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1MaWdhdHVyZXMoZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdBcmd1bWVudChuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fUGFyc2VOb2RlX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJvcmRncm91cFwiLCBleHByZXNzaW9uLCB0aGlzLm1vZGUsIGZpcnN0VG9rZW4sIGxhc3RUb2tlbiksIGZpcnN0VG9rZW4ucmFuZ2UobGFzdFRva2VuLCBmaXJzdFRva2VuLnRleHQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHJldHVybiBhIG51Y2xldXMsIG9yIG5vdGhpbmcgZm9yIGFuIG9wdGlvbmFsIGdyb3VwXG4gICAgICAgICAgICAgICAgaWYgKG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zd2l0Y2hNb2RlKG1vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgX3Jlc3VsdDMgPSBvcHRpb25hbCA/IG51bGwgOiB0aGlzLnBhcnNlU3ltYm9sKCk7XG4gICAgICAgICAgICAgICAgaWYgKG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zd2l0Y2hNb2RlKG91dGVyTW9kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBfcmVzdWx0MztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3JtIGxpZ2F0dXJlLWxpa2UgY29tYmluYXRpb25zIG9mIGNoYXJhY3RlcnMgZm9yIHRleHQgbW9kZS5cbiAgICAgICAgICogVGhpcyBpbmNsdWRlcyBpbnB1dHMgbGlrZSBcIi0tXCIsIFwiLS0tXCIsIFwiYGBcIiBhbmQgXCInJ1wiLlxuICAgICAgICAgKiBUaGUgcmVzdWx0IHdpbGwgc2ltcGx5IHJlcGxhY2UgbXVsdGlwbGUgdGV4dG9yZCBub2RlcyB3aXRoIGEgc2luZ2xlXG4gICAgICAgICAqIGNoYXJhY3RlciBpbiBlYWNoIHZhbHVlIGJ5IGEgc2luZ2xlIHRleHRvcmQgbm9kZSBoYXZpbmcgbXVsdGlwbGVcbiAgICAgICAgICogY2hhcmFjdGVycyBpbiBpdHMgdmFsdWUuICBUaGUgcmVwcmVzZW50YXRpb24gaXMgc3RpbGwgQVNDSUkgc291cmNlLlxuICAgICAgICAgKiBUaGUgZ3JvdXAgd2lsbCBiZSBtb2RpZmllZCBpbiBwbGFjZS5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJmb3JtTGlnYXR1cmVzXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtTGlnYXR1cmVzKGdyb3VwKSB7XG4gICAgICAgICAgICB2YXIgbiA9IGdyb3VwLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICAgICAgICAgIHZhciBhID0gZ3JvdXBbaV07XG4gICAgICAgICAgICAgICAgdmFyIHYgPSBhLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh2ID09PSBcIi1cIiAmJiBncm91cFtpICsgMV0udmFsdWUgPT09IFwiLVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IG4gJiYgZ3JvdXBbaSArIDJdLnZhbHVlID09PSBcIi1cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuc3BsaWNlKGksIDMsIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcInRleHRvcmRcIiwgXCItLS1cIiwgXCJ0ZXh0XCIsIGEsIGdyb3VwW2kgKyAyXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbiAtPSAyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuc3BsaWNlKGksIDIsIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcInRleHRvcmRcIiwgXCItLVwiLCBcInRleHRcIiwgYSwgZ3JvdXBbaSArIDFdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCh2ID09PSBcIidcIiB8fCB2ID09PSBcImBcIikgJiYgZ3JvdXBbaSArIDFdLnZhbHVlID09PSB2KSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLnNwbGljZShpLCAyLCBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fUGFyc2VOb2RlX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJ0ZXh0b3JkXCIsIHYgKyB2LCBcInRleHRcIiwgYSwgZ3JvdXBbaSArIDFdKSk7XG4gICAgICAgICAgICAgICAgICAgIG4gLT0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUGFyc2UgYSBzaW5nbGUgc3ltYm9sIG91dCBvZiB0aGUgc3RyaW5nLiBIZXJlLCB3ZSBoYW5kbGUgYm90aCB0aGUgZnVuY3Rpb25zXG4gICAgICAgICAqIHdlIGhhdmUgZGVmaW5lZCwgYXMgd2VsbCBhcyB0aGUgc2luZ2xlIGNoYXJhY3RlciBzeW1ib2xzXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwicGFyc2VTeW1ib2xcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlU3ltYm9sKCkge1xuICAgICAgICAgICAgdmFyIG51Y2xldXMgPSB0aGlzLm5leHRUb2tlbjtcbiAgICAgICAgICAgIHZhciB0ZXh0ID0gbnVjbGV1cy50ZXh0O1xuXG4gICAgICAgICAgICBpZiAoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19mdW5jdGlvbnNfX1tcImFcIiAvKiBkZWZhdWx0ICovXVt0ZXh0XSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGV4aXN0cyBhIGZ1bmN0aW9uIHdpdGggdGhpcyBuYW1lLCB3ZSByZXR1cm4gdGhlIGZ1bmN0aW9uIGFuZFxuICAgICAgICAgICAgICAgIC8vIHNheSB0aGF0IGl0IGlzIGEgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uKG51Y2xldXMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvXlxcXFx2ZXJiW15hLXpBLVpdLy50ZXN0KHRleHQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICAgICAgdmFyIGFyZyA9IHRleHQuc2xpY2UoNSk7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXIgPSBhcmcuY2hhckF0KDApID09PSBcIipcIjtcbiAgICAgICAgICAgICAgICBpZiAoc3Rhcikge1xuICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmcuc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIExleGVyJ3MgdG9rZW5SZWdleCBpcyBjb25zdHJ1Y3RlZCB0byBhbHdheXMgaGF2ZSBtYXRjaGluZ1xuICAgICAgICAgICAgICAgIC8vIGZpcnN0L2xhc3QgY2hhcmFjdGVycy5cbiAgICAgICAgICAgICAgICBpZiAoYXJnLmxlbmd0aCA8IDIgfHwgYXJnLmNoYXJBdCgwKSAhPT0gYXJnLnNsaWNlKC0xKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiXFxcXHZlcmIgYXNzZXJ0aW9uIGZhaWxlZCAtLVxcbiAgICAgICAgICAgICAgICAgICAgcGxlYXNlIHJlcG9ydCB3aGF0IGlucHV0IGNhdXNlZCB0aGlzIGJ1Z1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXJnID0gYXJnLnNsaWNlKDEsIC0xKTsgLy8gcmVtb3ZlIGZpcnN0IGFuZCBsYXN0IGNoYXJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3QXJndW1lbnQobmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfX1BhcnNlTm9kZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwidmVyYlwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IGFyZyxcbiAgICAgICAgICAgICAgICAgICAgc3Rhcjogc3RhclxuICAgICAgICAgICAgICAgIH0sIFwidGV4dFwiKSwgbnVjbGV1cyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRleHQgPT09IFwiJFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0RvbGxhcihudWNsZXVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIHNob3VsZCBoYXZlIGEgc3ltYm9sLCBwb3NzaWJseSB3aXRoIGFjY2VudHMuXG4gICAgICAgICAgICAvLyBGaXJzdCBleHBhbmQgYW55IGFjY2VudGVkIGJhc2Ugc3ltYm9sIGFjY29yZGluZyB0byB1bmljb2RlU3ltYm9scy5cbiAgICAgICAgICAgIGlmIChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfX3VuaWNvZGVTeW1ib2xzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uaGFzT3duUHJvcGVydHkodGV4dFswXSkgJiYgIV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fc3ltYm9sc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dW3RoaXMubW9kZV1bdGV4dFswXV0pIHtcbiAgICAgICAgICAgICAgICB0ZXh0ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85X191bmljb2RlU3ltYm9sc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dW3RleHRbMF1dICsgdGV4dC5zdWJzdHIoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTdHJpcCBvZmYgYW55IGNvbWJpbmluZyBjaGFyYWN0ZXJzXG4gICAgICAgICAgICB2YXIgbWF0Y2ggPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEyX19MZXhlcl9qc19fW1wiYVwiIC8qIGNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya3NFbmRSZWdleCAqL10uZXhlYyh0ZXh0KTtcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZygwLCBtYXRjaC5pbmRleCk7XG4gICAgICAgICAgICAgICAgaWYgKHRleHQgPT09ICdpJykge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJcXHUwMTMxXCI7IC8vIGRvdGxlc3MgaSwgaW4gbWF0aCBhbmQgdGV4dCBtb2RlXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXh0ID09PSAnaicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dCA9IFwiXFx1MDIzN1wiOyAvLyBkb3RsZXNzIGosIGluIG1hdGggYW5kIHRleHQgbW9kZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlY29nbml6ZSBiYXNlIHN5bWJvbFxuICAgICAgICAgICAgdmFyIHN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19zeW1ib2xzX19bXCJhXCIgLyogZGVmYXVsdCAqL11bdGhpcy5tb2RlXVt0ZXh0XSkge1xuICAgICAgICAgICAgICAgIHN5bWJvbCA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX3N5bWJvbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXVt0aGlzLm1vZGVdW3RleHRdLmdyb3VwLCB0ZXh0LCB0aGlzLm1vZGUsIG51Y2xldXMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09IFwidGV4dFwiICYmIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX3VuaWNvZGVTY3JpcHRzX19bXCJiXCIgLyogc3VwcG9ydGVkQ29kZXBvaW50ICovXSkodGV4dC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgIHN5bWJvbCA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcInRleHRvcmRcIiwgdGV4dCwgdGhpcy5tb2RlLCBudWNsZXVzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7IC8vIEVPRiwgXiwgXywgeywgfSwgZXRjLlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm0gY29tYmluaW5nIGNoYXJhY3RlcnMgaW50byBhY2NlbnRzXG4gICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoWzBdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhY2NlbnQgPSBtYXRjaFswXVtpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX3VuaWNvZGVBY2NlbnRzX19fZGVmYXVsdC5hW2FjY2VudF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJVbmtub3duIGFjY2VudCAnIFwiICsgYWNjZW50ICsgXCInXCIsIG51Y2xldXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBjb21tYW5kID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X191bmljb2RlQWNjZW50c19fX2RlZmF1bHQuYVthY2NlbnRdW3RoaXMubW9kZV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghY29tbWFuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIkFjY2VudCBcIiArIGFjY2VudCArIFwiIHVuc3VwcG9ydGVkIGluIFwiICsgdGhpcy5tb2RlICsgXCIgbW9kZVwiLCBudWNsZXVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fUGFyc2VOb2RlX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJhY2NlbnRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJhY2NlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjb21tYW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTdHJldGNoeTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NoaWZ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6IHN5bWJvbFxuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLm1vZGUsIG51Y2xldXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXdBcmd1bWVudChzeW1ib2wsIG51Y2xldXMpO1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIFBhcnNlcjtcbn0oKTtcblxuUGFyc2VyLmVuZE9mRXhwcmVzc2lvbiA9IFtcIn1cIiwgXCJcXFxcZW5kXCIsIFwiXFxcXHJpZ2h0XCIsIFwiJlwiLCBcIlxcXFxcXFxcXCIsIFwiXFxcXGNyXCJdO1xuUGFyc2VyLlNVUFNVQl9HUkVFRElORVNTID0gMTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoUGFyc2VyKTtcblxuLyoqKi8gfSksXG4vKiAxMTUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19QYXJzZUVycm9yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fUGFyc2VOb2RlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2RlZmluZUZ1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fZnVuY3Rpb25zX3NxcnRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTE2KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2Z1bmN0aW9uc19jb2xvcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTcpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fZnVuY3Rpb25zX3RleHRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTE4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX2Z1bmN0aW9uc19lbmNsb3NlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExOSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19mdW5jdGlvbnNfb3ZlcmxpbmVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX2Z1bmN0aW9uc191bmRlcmxpbmVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfX2Z1bmN0aW9uc19ydWxlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fZnVuY3Rpb25zX2tlcm5fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19mdW5jdGlvbnNfcGhhbnRvbV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTJfX2Z1bmN0aW9uc19tb2RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTI1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEzX19mdW5jdGlvbnNfb3BfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTI2KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE0X19mdW5jdGlvbnNfb3BlcmF0b3JuYW1lX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNV9fZnVuY3Rpb25zX2dlbmZyYWNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTI4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE2X19mdW5jdGlvbnNfbGFwX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyOSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xN19fZnVuY3Rpb25zX3NtYXNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xOF9fZnVuY3Rpb25zX2RlbGltc2l6aW5nX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xOV9fZnVuY3Rpb25zX3NpemluZ19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMF9fZnVuY3Rpb25zX3N0eWxpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIxX19mdW5jdGlvbnNfZm9udF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjJfX2Z1bmN0aW9uc19hY2NlbnRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTM3KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIzX19mdW5jdGlvbnNfYWNjZW50dW5kZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTM4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI0X19mdW5jdGlvbnNfdmVyYl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjVfX2Z1bmN0aW9uc19ocmVmX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0MCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNl9fZnVuY3Rpb25zX21hdGhjaG9pY2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQxKTtcblxuLyoqIEluY2x1ZGUgdGhpcyB0byBlbnN1cmUgdGhhdCBhbGwgZnVuY3Rpb25zIGFyZSBkZWZpbmVkLiAqL1xuXG5cblxuXG4vLyBXQVJOSU5HOiBOZXcgZnVuY3Rpb25zIHNob3VsZCBiZSBhZGRlZCB0byBzcmMvZnVuY3Rpb25zIGFuZCBpbXBvcnRlZCBoZXJlLlxuXG52YXIgZnVuY3Rpb25zID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kZWZpbmVGdW5jdGlvbl9fW1wiYVwiIC8qIF9mdW5jdGlvbnMgKi9dO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbnMpO1xuXG4vLyBEZWZpbmUgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IG1pbWNzIHRoZSBvbGQgc2VtYW50aWNzIG9mIGRlZmluZUZ1bmN0aW9uXG4vLyB0byBzdXBwb3J0IGV4aXN0aW5nIGNvZGUgc28gdGhhdCB3ZSBjYW4gbWlncmF0ZSBpdCBhIGxpdHRsZSBiaXQgYXQgYSB0aW1lLlxudmFyIGRlZmluZUZ1bmN0aW9uID0gZnVuY3Rpb24gZGVmaW5lRnVuY3Rpb24obmFtZXMsIHByb3BzLCBoYW5kbGVyKSAvLyBudWxsIG9ubHkgaWYgaGFuZGxlZCBpbiBwYXJzZXJcbntcbiAgICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kZWZpbmVGdW5jdGlvbl9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7IG5hbWVzOiBuYW1lcywgcHJvcHM6IHByb3BzLCBoYW5kbGVyOiBoYW5kbGVyIH0pO1xufTtcblxuLy8gVE9ETyhrZXZpbmIpOiBoYXZlIGZ1bmN0aW9ucyByZXR1cm4gYW4gb2JqZWN0IGFuZCBjYWxsIGRlZmluZUZ1bmN0aW9uIHdpdGhcbi8vIHRoYXQgb2JqZWN0IGluIHRoaXMgZmlsZSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gc2lkZS1lZmZlY3RzLlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy8gTWF0aCBjbGFzcyBjb21tYW5kcyBleGNlcHQgXFxtYXRob3BcbmRlZmluZUZ1bmN0aW9uKFtcIlxcXFxtYXRob3JkXCIsIFwiXFxcXG1hdGhiaW5cIiwgXCJcXFxcbWF0aHJlbFwiLCBcIlxcXFxtYXRob3BlblwiLCBcIlxcXFxtYXRoY2xvc2VcIiwgXCJcXFxcbWF0aHB1bmN0XCIsIFwiXFxcXG1hdGhpbm5lclwiXSwge1xuICAgIG51bUFyZ3M6IDFcbn0sIGZ1bmN0aW9uIChjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwibWNsYXNzXCIsXG4gICAgICAgIG1jbGFzczogXCJtXCIgKyBjb250ZXh0LmZ1bmNOYW1lLnN1YnN0cig1KSxcbiAgICAgICAgdmFsdWU6IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2RlZmluZUZ1bmN0aW9uX19bXCJjXCIgLyogb3JkYXJndW1lbnQgKi9dKShib2R5KVxuICAgIH07XG59KTtcblxuLy8gQnVpbGQgYSByZWxhdGlvbiBieSBwbGFjaW5nIG9uZSBzeW1ib2wgb24gdG9wIG9mIGFub3RoZXJcbmRlZmluZUZ1bmN0aW9uKFtcIlxcXFxzdGFja3JlbFwiXSwge1xuICAgIG51bUFyZ3M6IDJcbn0sIGZ1bmN0aW9uIChjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIHRvcCA9IGFyZ3NbMF07XG4gICAgdmFyIGJvdHRvbSA9IGFyZ3NbMV07XG5cbiAgICB2YXIgYm90dG9tb3AgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIm9wXCIsIHtcbiAgICAgICAgdHlwZTogXCJvcFwiLFxuICAgICAgICBsaW1pdHM6IHRydWUsXG4gICAgICAgIGFsd2F5c0hhbmRsZVN1cFN1YjogdHJ1ZSxcbiAgICAgICAgc3ltYm9sOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2RlZmluZUZ1bmN0aW9uX19bXCJjXCIgLyogb3JkYXJndW1lbnQgKi9dKShib3R0b20pXG4gICAgfSwgYm90dG9tLm1vZGUpO1xuXG4gICAgdmFyIHN1cHN1YiA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1BhcnNlTm9kZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwic3Vwc3ViXCIsIHtcbiAgICAgICAgYmFzZTogYm90dG9tb3AsXG4gICAgICAgIHN1cDogdG9wLFxuICAgICAgICBzdWI6IG51bGxcbiAgICB9LCB0b3AubW9kZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcIm1jbGFzc1wiLFxuICAgICAgICBtY2xhc3M6IFwibXJlbFwiLFxuICAgICAgICB2YWx1ZTogW3N1cHN1Yl1cbiAgICB9O1xufSk7XG5cblxuXG52YXIgc2luZ2xlQ2hhckludGVncmFscyA9IHtcbiAgICBcIlxcdTIyMkJcIjogXCJcXFxcaW50XCIsXG4gICAgXCJcXHUyMjJDXCI6IFwiXFxcXGlpbnRcIixcbiAgICBcIlxcdTIyMkRcIjogXCJcXFxcaWlpbnRcIixcbiAgICBcIlxcdTIyMkVcIjogXCJcXFxcb2ludFwiXG59O1xuXG4vLyBUaGVyZSBhcmUgMiBmbGFncyBmb3Igb3BlcmF0b3JzOyB3aGV0aGVyIHRoZXkgcHJvZHVjZSBsaW1pdHMgaW5cbi8vIGRpc3BsYXlzdHlsZSwgYW5kIHdoZXRoZXIgdGhleSBhcmUgc3ltYm9scyBhbmQgc2hvdWxkIGdyb3cgaW5cbi8vIGRpc3BsYXlzdHlsZS4gVGhlc2UgZm91ciBncm91cHMgY292ZXIgdGhlIGZvdXIgcG9zc2libGUgY2hvaWNlcy5cblxuLy8gTm8gbGltaXRzLCBub3Qgc3ltYm9sc1xuZGVmaW5lRnVuY3Rpb24oW1wiXFxcXGFyY3NpblwiLCBcIlxcXFxhcmNjb3NcIiwgXCJcXFxcYXJjdGFuXCIsIFwiXFxcXGFyY3RnXCIsIFwiXFxcXGFyY2N0Z1wiLCBcIlxcXFxhcmdcIiwgXCJcXFxcY2hcIiwgXCJcXFxcY29zXCIsIFwiXFxcXGNvc2VjXCIsIFwiXFxcXGNvc2hcIiwgXCJcXFxcY290XCIsIFwiXFxcXGNvdGdcIiwgXCJcXFxcY290aFwiLCBcIlxcXFxjc2NcIiwgXCJcXFxcY3RnXCIsIFwiXFxcXGN0aFwiLCBcIlxcXFxkZWdcIiwgXCJcXFxcZGltXCIsIFwiXFxcXGV4cFwiLCBcIlxcXFxob21cIiwgXCJcXFxca2VyXCIsIFwiXFxcXGxnXCIsIFwiXFxcXGxuXCIsIFwiXFxcXGxvZ1wiLCBcIlxcXFxzZWNcIiwgXCJcXFxcc2luXCIsIFwiXFxcXHNpbmhcIiwgXCJcXFxcc2hcIiwgXCJcXFxcdGFuXCIsIFwiXFxcXHRhbmhcIiwgXCJcXFxcdGdcIiwgXCJcXFxcdGhcIl0sIHtcbiAgICBudW1BcmdzOiAwXG59LCBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgICAgc3ltYm9sOiBmYWxzZSxcbiAgICAgICAgYm9keTogY29udGV4dC5mdW5jTmFtZVxuICAgIH07XG59KTtcblxuLy8gTGltaXRzLCBub3Qgc3ltYm9sc1xuZGVmaW5lRnVuY3Rpb24oW1wiXFxcXGRldFwiLCBcIlxcXFxnY2RcIiwgXCJcXFxcaW5mXCIsIFwiXFxcXGxpbVwiLCBcIlxcXFxtYXhcIiwgXCJcXFxcbWluXCIsIFwiXFxcXFByXCIsIFwiXFxcXHN1cFwiXSwge1xuICAgIG51bUFyZ3M6IDBcbn0sIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJvcFwiLFxuICAgICAgICBsaW1pdHM6IHRydWUsXG4gICAgICAgIHN5bWJvbDogZmFsc2UsXG4gICAgICAgIGJvZHk6IGNvbnRleHQuZnVuY05hbWVcbiAgICB9O1xufSk7XG5cbi8vIE5vIGxpbWl0cywgc3ltYm9sc1xuZGVmaW5lRnVuY3Rpb24oW1wiXFxcXGludFwiLCBcIlxcXFxpaW50XCIsIFwiXFxcXGlpaW50XCIsIFwiXFxcXG9pbnRcIiwgXCJcXHUyMjJCXCIsIFwiXFx1MjIyQ1wiLCBcIlxcdTIyMkRcIiwgXCJcXHUyMjJFXCJdLCB7XG4gICAgbnVtQXJnczogMFxufSwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgZk5hbWUgPSBjb250ZXh0LmZ1bmNOYW1lO1xuICAgIGlmIChmTmFtZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZk5hbWUgPSBzaW5nbGVDaGFySW50ZWdyYWxzW2ZOYW1lXTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJvcFwiLFxuICAgICAgICBsaW1pdHM6IGZhbHNlLFxuICAgICAgICBzeW1ib2w6IHRydWUsXG4gICAgICAgIGJvZHk6IGZOYW1lXG4gICAgfTtcbn0pO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy8gSG9yaXpvbnRhbCBzdHJldGNoeSBicmFjZXNcbmRlZmluZUZ1bmN0aW9uKFtcIlxcXFxvdmVyYnJhY2VcIiwgXCJcXFxcdW5kZXJicmFjZVwiXSwge1xuICAgIG51bUFyZ3M6IDFcbn0sIGZ1bmN0aW9uIChjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIGJhc2UgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiaG9yaXpCcmFjZVwiLFxuICAgICAgICBsYWJlbDogY29udGV4dC5mdW5jTmFtZSxcbiAgICAgICAgaXNPdmVyOiAvXlxcXFxvdmVyLy50ZXN0KGNvbnRleHQuZnVuY05hbWUpLFxuICAgICAgICBiYXNlOiBiYXNlXG4gICAgfTtcbn0pO1xuXG4vLyBTdHJldGNoeSBhY2NlbnRzIHVuZGVyIHRoZSBib2R5XG5cblxuLy8gU3RyZXRjaHkgYXJyb3dzIHdpdGggYW4gb3B0aW9uYWwgYXJndW1lbnRcbmRlZmluZUZ1bmN0aW9uKFtcIlxcXFx4bGVmdGFycm93XCIsIFwiXFxcXHhyaWdodGFycm93XCIsIFwiXFxcXHhMZWZ0YXJyb3dcIiwgXCJcXFxceFJpZ2h0YXJyb3dcIiwgXCJcXFxceGxlZnRyaWdodGFycm93XCIsIFwiXFxcXHhMZWZ0cmlnaHRhcnJvd1wiLCBcIlxcXFx4aG9va2xlZnRhcnJvd1wiLCBcIlxcXFx4aG9va3JpZ2h0YXJyb3dcIiwgXCJcXFxceG1hcHN0b1wiLCBcIlxcXFx4cmlnaHRoYXJwb29uZG93blwiLCBcIlxcXFx4cmlnaHRoYXJwb29udXBcIiwgXCJcXFxceGxlZnRoYXJwb29uZG93blwiLCBcIlxcXFx4bGVmdGhhcnBvb251cFwiLCBcIlxcXFx4cmlnaHRsZWZ0aGFycG9vbnNcIiwgXCJcXFxceGxlZnRyaWdodGhhcnBvb25zXCIsIFwiXFxcXHhsb25nZXF1YWxcIiwgXCJcXFxceHR3b2hlYWRyaWdodGFycm93XCIsIFwiXFxcXHh0d29oZWFkbGVmdGFycm93XCIsIFwiXFxcXHh0b2Zyb21cIixcbi8vIFRoZSBuZXh0IDMgZnVuY3Rpb25zIGFyZSBoZXJlIHRvIHN1cHBvcnQgdGhlIG1oY2hlbSBleHRlbnNpb24uXG4vLyBEaXJlY3QgdXNlIG9mIHRoZXNlIGZ1bmN0aW9ucyBpcyBkaXNjb3VyYWdlZCBhbmQgbWF5IGJyZWFrIHNvbWVkYXkuXG5cIlxcXFx4cmlnaHRsZWZ0YXJyb3dzXCIsIFwiXFxcXHhyaWdodGVxdWlsaWJyaXVtXCIsIFwiXFxcXHhsZWZ0ZXF1aWxpYnJpdW1cIl0sIHtcbiAgICBudW1BcmdzOiAxLFxuICAgIG51bU9wdGlvbmFsQXJnczogMVxufSwgZnVuY3Rpb24gKGNvbnRleHQsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgYmVsb3cgPSBvcHRBcmdzWzBdO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInhBcnJvd1wiLCAvLyB4IGZvciBleHRlbnNpYmxlXG4gICAgICAgIGxhYmVsOiBjb250ZXh0LmZ1bmNOYW1lLFxuICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICBiZWxvdzogYmVsb3dcbiAgICB9O1xufSk7XG5cbi8vIEluZml4IGdlbmVyYWxpemVkIGZyYWN0aW9uc1xuZGVmaW5lRnVuY3Rpb24oW1wiXFxcXG92ZXJcIiwgXCJcXFxcY2hvb3NlXCIsIFwiXFxcXGF0b3BcIl0sIHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGluZml4OiB0cnVlXG59LCBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciByZXBsYWNlV2l0aCA9IHZvaWQgMDtcbiAgICBzd2l0Y2ggKGNvbnRleHQuZnVuY05hbWUpIHtcbiAgICAgICAgY2FzZSBcIlxcXFxvdmVyXCI6XG4gICAgICAgICAgICByZXBsYWNlV2l0aCA9IFwiXFxcXGZyYWNcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiXFxcXGNob29zZVwiOlxuICAgICAgICAgICAgcmVwbGFjZVdpdGggPSBcIlxcXFxiaW5vbVwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJcXFxcYXRvcFwiOlxuICAgICAgICAgICAgcmVwbGFjZVdpdGggPSBcIlxcXFxcXFxcYXRvcGZyYWNcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIGluZml4IGdlbmZyYWMgY29tbWFuZFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJpbmZpeFwiLFxuICAgICAgICByZXBsYWNlV2l0aDogcmVwbGFjZVdpdGgsXG4gICAgICAgIHRva2VuOiBjb250ZXh0LnRva2VuXG4gICAgfTtcbn0pO1xuXG4vLyBSb3cgYnJlYWtzIGZvciBhbGlnbmVkIGRhdGFcbmRlZmluZUZ1bmN0aW9uKFtcIlxcXFxcXFxcXCIsIFwiXFxcXGNyXCJdLCB7XG4gICAgbnVtQXJnczogMCxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIl1cbn0sIGZ1bmN0aW9uIChjb250ZXh0LCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgdmFyIHNpemUgPSBvcHRBcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiY3JcIixcbiAgICAgICAgc2l6ZTogc2l6ZVxuICAgIH07XG59KTtcblxuLy8gRW52aXJvbm1lbnQgZGVsaW1pdGVyc1xuZGVmaW5lRnVuY3Rpb24oW1wiXFxcXGJlZ2luXCIsIFwiXFxcXGVuZFwiXSwge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInRleHRcIl1cbn0sIGZ1bmN0aW9uIChjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIG5hbWVHcm91cCA9IGFyZ3NbMF07XG4gICAgaWYgKG5hbWVHcm91cC50eXBlICE9PSBcIm9yZGdyb3VwXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiSW52YWxpZCBlbnZpcm9ubWVudCBuYW1lXCIsIG5hbWVHcm91cCk7XG4gICAgfVxuICAgIHZhciBuYW1lID0gXCJcIjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVHcm91cC52YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBuYW1lICs9IG5hbWVHcm91cC52YWx1ZVtpXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJlbnZpcm9ubWVudFwiLFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICBuYW1lR3JvdXA6IG5hbWVHcm91cFxuICAgIH07XG59KTtcblxuLy8gQm94IG1hbmlwdWxhdGlvblxuZGVmaW5lRnVuY3Rpb24oW1wiXFxcXHJhaXNlYm94XCJdLCB7XG4gICAgbnVtQXJnczogMixcbiAgICBhcmdUeXBlczogW1wic2l6ZVwiLCBcInRleHRcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxufSwgZnVuY3Rpb24gKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB2YXIgYW1vdW50ID0gYXJnc1swXTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMV07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJyYWlzZWJveFwiLFxuICAgICAgICBkeTogYW1vdW50LFxuICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICB2YWx1ZTogT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZGVmaW5lRnVuY3Rpb25fX1tcImNcIiAvKiBvcmRhcmd1bWVudCAqL10pKGJvZHkpXG4gICAgfTtcbn0pO1xuXG5cblxuLy8gSHlwZXJsaW5rc1xuXG5cbi8vIE1hdGhDaG9pY2VcblxuXG4vKioqLyB9KSxcbi8qIDExNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kb21UcmVlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19kZWxpbWl0ZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fU3R5bGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19idWlsZEhUTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19idWlsZE1hdGhNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuXG5cblxuXG5cblxuXG5cblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwic3FydFwiLFxuICAgIG5hbWVzOiBbXCJcXFxcc3FydFwiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAxLFxuICAgICAgICBudW1PcHRpb25hbEFyZ3M6IDFcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncykge1xuICAgICAgICB2YXIgaW5kZXggPSBvcHRBcmdzWzBdO1xuICAgICAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcInNxcnRcIixcbiAgICAgICAgICAgIGJvZHk6IGJvZHksXG4gICAgICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICAvLyBTcXVhcmUgcm9vdHMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgcGcuIDQ0MywgUnVsZSAxMS5cblxuICAgICAgICAvLyBGaXJzdCwgd2UgZG8gdGhlIHNhbWUgc3RlcHMgYXMgaW4gb3ZlcmxpbmUgdG8gYnVpbGQgdGhlIGlubmVyIGdyb3VwXG4gICAgICAgIC8vIGFuZCBsaW5lXG4gICAgICAgIHZhciBpbm5lciA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fYnVpbGRIVE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucy5oYXZpbmdDcmFtcGVkU3R5bGUoKSk7XG4gICAgICAgIGlmIChpbm5lci5oZWlnaHQgPT09IDApIHtcbiAgICAgICAgICAgIC8vIFJlbmRlciBhIHNtYWxsIHN1cmQuXG4gICAgICAgICAgICBpbm5lci5oZWlnaHQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNvbWUgZ3JvdXBzIGNhbiByZXR1cm4gZG9jdW1lbnQgZnJhZ21lbnRzLiAgSGFuZGxlIHRob3NlIGJ5IHdyYXBwaW5nXG4gICAgICAgIC8vIHRoZW0gaW4gYSBzcGFuLlxuICAgICAgICBpZiAoaW5uZXIgaW5zdGFuY2VvZiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2RvbVRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5kb2N1bWVudEZyYWdtZW50KSB7XG4gICAgICAgICAgICBpbm5lciA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXSwgW2lubmVyXSwgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pbmltdW0gc2l6ZSBmb3IgdGhlIFxcc3VyZCBkZWxpbWl0ZXJcbiAgICAgICAgdmFyIG1ldHJpY3MgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCk7XG4gICAgICAgIHZhciB0aGV0YSA9IG1ldHJpY3MuZGVmYXVsdFJ1bGVUaGlja25lc3M7XG5cbiAgICAgICAgdmFyIHBoaSA9IHRoZXRhO1xuICAgICAgICBpZiAob3B0aW9ucy5zdHlsZS5pZCA8IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5URVhULmlkKSB7XG4gICAgICAgICAgICBwaGkgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgY2xlYXJhbmNlIGJldHdlZW4gdGhlIGJvZHkgYW5kIGxpbmVcbiAgICAgICAgdmFyIGxpbmVDbGVhcmFuY2UgPSB0aGV0YSArIHBoaSAvIDQ7XG5cbiAgICAgICAgdmFyIG1pbkRlbGltaXRlckhlaWdodCA9IChpbm5lci5oZWlnaHQgKyBpbm5lci5kZXB0aCArIGxpbmVDbGVhcmFuY2UgKyB0aGV0YSkgKiBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIHNxcnQgU1ZHIG9mIHRoZSByZXF1aXJlZCBtaW5pbXVtIHNpemVcblxuICAgICAgICB2YXIgX2RlbGltaXRlciRzcXJ0SW1hZ2UgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2RlbGltaXRlcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnNxcnRJbWFnZShtaW5EZWxpbWl0ZXJIZWlnaHQsIG9wdGlvbnMpLFxuICAgICAgICAgICAgaW1nID0gX2RlbGltaXRlciRzcXJ0SW1hZ2Uuc3BhbixcbiAgICAgICAgICAgIHJ1bGVXaWR0aCA9IF9kZWxpbWl0ZXIkc3FydEltYWdlLnJ1bGVXaWR0aDtcblxuICAgICAgICB2YXIgZGVsaW1EZXB0aCA9IGltZy5oZWlnaHQgLSBydWxlV2lkdGg7XG5cbiAgICAgICAgLy8gQWRqdXN0IHRoZSBjbGVhcmFuY2UgYmFzZWQgb24gdGhlIGRlbGltaXRlciBzaXplXG4gICAgICAgIGlmIChkZWxpbURlcHRoID4gaW5uZXIuaGVpZ2h0ICsgaW5uZXIuZGVwdGggKyBsaW5lQ2xlYXJhbmNlKSB7XG4gICAgICAgICAgICBsaW5lQ2xlYXJhbmNlID0gKGxpbmVDbGVhcmFuY2UgKyBkZWxpbURlcHRoIC0gaW5uZXIuaGVpZ2h0IC0gaW5uZXIuZGVwdGgpIC8gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNoaWZ0IHRoZSBzcXJ0IGltYWdlXG4gICAgICAgIHZhciBpbWdTaGlmdCA9IGltZy5oZWlnaHQgLSBpbm5lci5oZWlnaHQgLSBsaW5lQ2xlYXJhbmNlIC0gcnVsZVdpZHRoO1xuXG4gICAgICAgIGlubmVyLnN0eWxlLnBhZGRpbmdMZWZ0ID0gaW1nLmFkdmFuY2VXaWR0aCArIFwiZW1cIjtcblxuICAgICAgICAvLyBPdmVybGF5IHRoZSBpbWFnZSBhbmQgdGhlIGFyZ3VtZW50LlxuICAgICAgICB2YXIgYm9keSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlVkxpc3Qoe1xuICAgICAgICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogaW5uZXIsIHdyYXBwZXJDbGFzc2VzOiBbXCJzdmctYWxpZ25cIl0gfSwgeyB0eXBlOiBcImtlcm5cIiwgc2l6ZTogLShpbm5lci5oZWlnaHQgKyBpbWdTaGlmdCkgfSwgeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogaW1nIH0sIHsgdHlwZTogXCJrZXJuXCIsIHNpemU6IHJ1bGVXaWR0aCB9XVxuICAgICAgICB9LCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoIWdyb3VwLnZhbHVlLmluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJzcXJ0XCJdLCBbYm9keV0sIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBvcHRpb25hbCByb290IGluZGV4XG5cbiAgICAgICAgICAgIC8vIFRoZSBpbmRleCBpcyBhbHdheXMgaW4gc2NyaXB0c2NyaXB0IHN0eWxlXG4gICAgICAgICAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlNDUklQVFNDUklQVCk7XG4gICAgICAgICAgICB2YXIgcm9vdG0gPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX2J1aWxkSFRNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKGdyb3VwLnZhbHVlLmluZGV4LCBuZXdPcHRpb25zLCBvcHRpb25zKTtcblxuICAgICAgICAgICAgLy8gVGhlIGFtb3VudCB0aGUgaW5kZXggaXMgc2hpZnRlZCBieS4gVGhpcyBpcyB0YWtlbiBmcm9tIHRoZSBUZVhcbiAgICAgICAgICAgIC8vIHNvdXJjZSwgaW4gdGhlIGRlZmluaXRpb24gb2YgYFxcckBAdGAuXG4gICAgICAgICAgICB2YXIgdG9TaGlmdCA9IDAuNiAqIChib2R5LmhlaWdodCAtIGJvZHkuZGVwdGgpO1xuXG4gICAgICAgICAgICAvLyBCdWlsZCBhIFZMaXN0IHdpdGggdGhlIHN1cGVyc2NyaXB0IHNoaWZ0ZWQgdXAgY29ycmVjdGx5XG4gICAgICAgICAgICB2YXIgcm9vdFZMaXN0ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWTGlzdCh7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25UeXBlOiBcInNoaWZ0XCIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb25EYXRhOiAtdG9TaGlmdCxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW3sgdHlwZTogXCJlbGVtXCIsIGVsZW06IHJvb3RtIH1dXG4gICAgICAgICAgICB9LCBvcHRpb25zKTtcbiAgICAgICAgICAgIC8vIEFkZCBhIGNsYXNzIHN1cnJvdW5kaW5nIGl0IHNvIHdlIGNhbiBhZGQgb24gdGhlIGFwcHJvcHJpYXRlXG4gICAgICAgICAgICAvLyBrZXJuaW5nXG4gICAgICAgICAgICB2YXIgcm9vdFZMaXN0V3JhcCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJyb290XCJdLCBbcm9vdFZMaXN0XSk7XG5cbiAgICAgICAgICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wibW9yZFwiLCBcInNxcnRcIl0sIFtyb290Vkxpc3RXcmFwLCBib2R5XSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIG5vZGUgPSB2b2lkIDA7XG4gICAgICAgIGlmIChncm91cC52YWx1ZS5pbmRleCkge1xuICAgICAgICAgICAgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1yb290XCIsIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX2J1aWxkTWF0aE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucyksIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fYnVpbGRNYXRoTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShncm91cC52YWx1ZS5pbmRleCwgb3B0aW9ucyldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtc3FydFwiLCBbX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19idWlsZE1hdGhNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKGdyb3VwLnZhbHVlLmJvZHksIG9wdGlvbnMpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMTcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1BhcnNlRXJyb3JfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZEhUTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19idWlsZE1hdGhNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuXG5cblxuXG5cblxuXG52YXIgaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBlbGVtZW50cyA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRIVE1MX19bXCJhXCIgLyogYnVpbGRFeHByZXNzaW9uICovXShncm91cC52YWx1ZS52YWx1ZSwgb3B0aW9ucy53aXRoQ29sb3IoZ3JvdXAudmFsdWUuY29sb3IpLCBmYWxzZSk7XG5cbiAgICAvLyBcXGNvbG9yIGlzbid0IHN1cHBvc2VkIHRvIGFmZmVjdCB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudHMgaXQgY29udGFpbnMuXG4gICAgLy8gVG8gYWNjb21wbGlzaCB0aGlzLCB3ZSB3cmFwIHRoZSByZXN1bHRzIGluIGEgZnJhZ21lbnQsIHNvIHRoZSBpbm5lclxuICAgIC8vIGVsZW1lbnRzIHdpbGwgYmUgYWJsZSB0byBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIHRoZWlyIG5laWdoYm9ycy4gRm9yXG4gICAgLy8gZXhhbXBsZSwgYFxcY29sb3J7cmVkfXsyICt9IDNgIGhhcyB0aGUgc2FtZSBzcGFjaW5nIGFzIGAyICsgM2BcbiAgICByZXR1cm4gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlRnJhZ21lbnQoZWxlbWVudHMpO1xufTtcblxudmFyIG1hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGlubmVyID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19idWlsZE1hdGhNTF9fW1wiYVwiIC8qIGJ1aWxkRXhwcmVzc2lvbiAqL10oZ3JvdXAudmFsdWUudmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgdmFyIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtc3R5bGVcIiwgaW5uZXIpO1xuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRoY29sb3JcIiwgZ3JvdXAudmFsdWUuY29sb3IpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG59O1xuXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJjb2xvclwiLFxuICAgIG5hbWVzOiBbXCJcXFxcdGV4dGNvbG9yXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDIsXG4gICAgICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgICAgIGdyZWVkaW5lc3M6IDMsXG4gICAgICAgIGFyZ1R5cGVzOiBbXCJjb2xvclwiLCBcIm9yaWdpbmFsXCJdXG4gICAgfSxcbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICAgICAgdmFyIGNvbG9yID0gYXJnc1swXTtcbiAgICAgICAgdmFyIGJvZHkgPSBhcmdzWzFdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJjb2xvclwiLFxuICAgICAgICAgICAgY29sb3I6IGNvbG9yLnZhbHVlLFxuICAgICAgICAgICAgdmFsdWU6IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJjXCIgLyogb3JkYXJndW1lbnQgKi9dKShib2R5KVxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxufSk7XG5cbi8vIFRPRE8oa2V2aW5iKTogZGVmaW5lIHRoZXNlIHVzaW5nIG1hY3Jvc1xuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwiY29sb3JcIixcbiAgICBuYW1lczogW1wiXFxcXGJsdWVcIiwgXCJcXFxcb3JhbmdlXCIsIFwiXFxcXHBpbmtcIiwgXCJcXFxccmVkXCIsIFwiXFxcXGdyZWVuXCIsIFwiXFxcXGdyYXlcIiwgXCJcXFxccHVycGxlXCIsIFwiXFxcXGJsdWVBXCIsIFwiXFxcXGJsdWVCXCIsIFwiXFxcXGJsdWVDXCIsIFwiXFxcXGJsdWVEXCIsIFwiXFxcXGJsdWVFXCIsIFwiXFxcXHRlYWxBXCIsIFwiXFxcXHRlYWxCXCIsIFwiXFxcXHRlYWxDXCIsIFwiXFxcXHRlYWxEXCIsIFwiXFxcXHRlYWxFXCIsIFwiXFxcXGdyZWVuQVwiLCBcIlxcXFxncmVlbkJcIiwgXCJcXFxcZ3JlZW5DXCIsIFwiXFxcXGdyZWVuRFwiLCBcIlxcXFxncmVlbkVcIiwgXCJcXFxcZ29sZEFcIiwgXCJcXFxcZ29sZEJcIiwgXCJcXFxcZ29sZENcIiwgXCJcXFxcZ29sZERcIiwgXCJcXFxcZ29sZEVcIiwgXCJcXFxccmVkQVwiLCBcIlxcXFxyZWRCXCIsIFwiXFxcXHJlZENcIiwgXCJcXFxccmVkRFwiLCBcIlxcXFxyZWRFXCIsIFwiXFxcXG1hcm9vbkFcIiwgXCJcXFxcbWFyb29uQlwiLCBcIlxcXFxtYXJvb25DXCIsIFwiXFxcXG1hcm9vbkRcIiwgXCJcXFxcbWFyb29uRVwiLCBcIlxcXFxwdXJwbGVBXCIsIFwiXFxcXHB1cnBsZUJcIiwgXCJcXFxccHVycGxlQ1wiLCBcIlxcXFxwdXJwbGVEXCIsIFwiXFxcXHB1cnBsZUVcIiwgXCJcXFxcbWludEFcIiwgXCJcXFxcbWludEJcIiwgXCJcXFxcbWludENcIiwgXCJcXFxcZ3JheUFcIiwgXCJcXFxcZ3JheUJcIiwgXCJcXFxcZ3JheUNcIiwgXCJcXFxcZ3JheURcIiwgXCJcXFxcZ3JheUVcIiwgXCJcXFxcZ3JheUZcIiwgXCJcXFxcZ3JheUdcIiwgXCJcXFxcZ3JheUhcIiwgXCJcXFxcZ3JheUlcIiwgXCJcXFxca2FCbHVlXCIsIFwiXFxcXGthR3JlZW5cIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMSxcbiAgICAgICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICAgICAgZ3JlZWRpbmVzczogM1xuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwiY29sb3JcIixcbiAgICAgICAgICAgIGNvbG9yOiBcImthdGV4LVwiICsgY29udGV4dC5mdW5jTmFtZS5zbGljZSgxKSxcbiAgICAgICAgICAgIHZhbHVlOiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiY1wiIC8qIG9yZGFyZ3VtZW50ICovXSkoYm9keSlcbiAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgaHRtbEJ1aWxkZXI6IGh0bWxCdWlsZGVyLFxuICAgIG1hdGhtbEJ1aWxkZXI6IG1hdGhtbEJ1aWxkZXJcbn0pO1xuXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJjb2xvclwiLFxuICAgIG5hbWVzOiBbXCJcXFxcY29sb3JcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMSxcbiAgICAgICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICAgICAgZ3JlZWRpbmVzczogMyxcbiAgICAgICAgYXJnVHlwZXM6IFtcImNvbG9yXCJdXG4gICAgfSxcbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICAgICAgdmFyIHBhcnNlciA9IGNvbnRleHQucGFyc2VyLFxuICAgICAgICAgICAgYnJlYWtPblRva2VuVGV4dCA9IGNvbnRleHQuYnJlYWtPblRva2VuVGV4dDtcblxuXG4gICAgICAgIHZhciBjb2xvciA9IGFyZ3NbMF07XG4gICAgICAgIGlmICghY29sb3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIlxcXFxjb2xvciBub3QgZm9sbG93ZWQgYnkgY29sb3JcIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB3ZSBzZWUgYSBzdHlsaW5nIGZ1bmN0aW9uLCBwYXJzZSBvdXQgdGhlIGltcGxpY2l0IGJvZHlcbiAgICAgICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKHRydWUsIGJyZWFrT25Ub2tlblRleHQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcImNvbG9yXCIsXG4gICAgICAgICAgICBjb2xvcjogY29sb3IudmFsdWUsXG4gICAgICAgICAgICB2YWx1ZTogYm9keVxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxufSk7XG5cbi8qKiovIH0pLFxuLyogMTE4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZEhUTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZE1hdGhNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuXG5cblxuXG5cblxuLy8gTm9uLW1hdGh5IHRleHQsIHBvc3NpYmx5IGluIGEgZm9udFxudmFyIHRleHRGb250RmFtaWxpZXMgPSB7XG4gICAgXCJcXFxcdGV4dFwiOiB1bmRlZmluZWQsIFwiXFxcXHRleHRybVwiOiBcInRleHRybVwiLCBcIlxcXFx0ZXh0c2ZcIjogXCJ0ZXh0c2ZcIixcbiAgICBcIlxcXFx0ZXh0dHRcIjogXCJ0ZXh0dHRcIiwgXCJcXFxcdGV4dG5vcm1hbFwiOiBcInRleHRybVwiXG59O1xuXG52YXIgdGV4dEZvbnRXZWlnaHRzID0ge1xuICAgIFwiXFxcXHRleHRiZlwiOiBcInRleHRiZlwiXG59O1xuXG52YXIgdGV4dEZvbnRTaGFwZXMgPSB7XG4gICAgXCJcXFxcdGV4dGl0XCI6IFwidGV4dGl0XCJcbn07XG5cbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcInRleHRcIixcbiAgICBuYW1lczogW1xuICAgIC8vIEZvbnQgZmFtaWxpZXNcbiAgICBcIlxcXFx0ZXh0XCIsIFwiXFxcXHRleHRybVwiLCBcIlxcXFx0ZXh0c2ZcIiwgXCJcXFxcdGV4dHR0XCIsIFwiXFxcXHRleHRub3JtYWxcIixcbiAgICAvLyBGb250IHdlaWdodHNcbiAgICBcIlxcXFx0ZXh0YmZcIixcbiAgICAvLyBGb250IFNoYXBlc1xuICAgIFwiXFxcXHRleHRpdFwiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAxLFxuICAgICAgICBhcmdUeXBlczogW1widGV4dFwiXSxcbiAgICAgICAgZ3JlZWRpbmVzczogMixcbiAgICAgICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgYm9keTogT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImNcIiAvKiBvcmRhcmd1bWVudCAqL10pKGJvZHkpLFxuICAgICAgICAgICAgZm9udDogY29udGV4dC5mdW5jTmFtZVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBmb250ID0gZ3JvdXAudmFsdWUuZm9udDtcbiAgICAgICAgLy8gQ2hlY2tzIGlmIHRoZSBhcmd1bWVudCBpcyBhIGZvbnQgZmFtaWx5IG9yIGEgZm9udCBzdHlsZS5cbiAgICAgICAgdmFyIG5ld09wdGlvbnMgPSB2b2lkIDA7XG4gICAgICAgIGlmICh0ZXh0Rm9udEZhbWlsaWVzW2ZvbnRdKSB7XG4gICAgICAgICAgICBuZXdPcHRpb25zID0gb3B0aW9ucy53aXRoRm9udEZhbWlseSh0ZXh0Rm9udEZhbWlsaWVzW2ZvbnRdKTtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXh0Rm9udFdlaWdodHNbZm9udF0pIHtcbiAgICAgICAgICAgIG5ld09wdGlvbnMgPSBvcHRpb25zLndpdGhGb250V2VpZ2h0KHRleHRGb250V2VpZ2h0c1tmb250XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdPcHRpb25zID0gb3B0aW9ucy53aXRoRm9udFNoYXBlKHRleHRGb250U2hhcGVzW2ZvbnRdKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5uZXIgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkSFRNTF9fW1wiYVwiIC8qIGJ1aWxkRXhwcmVzc2lvbiAqL10oZ3JvdXAudmFsdWUuYm9keSwgbmV3T3B0aW9ucywgdHJ1ZSk7XG4gICAgICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS50cnlDb21iaW5lQ2hhcnMoaW5uZXIpO1xuICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJ0ZXh0XCJdLCBpbm5lciwgbmV3T3B0aW9ucyk7XG4gICAgfSxcbiAgICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBib2R5ID0gZ3JvdXAudmFsdWUuYm9keTtcblxuICAgICAgICAvLyBDb252ZXJ0IGVhY2ggZWxlbWVudCBvZiB0aGUgYm9keSBpbnRvIE1hdGhNTCwgYW5kIGNvbWJpbmUgY29uc2VjdXRpdmVcbiAgICAgICAgLy8gPG10ZXh0PiBvdXRwdXRzIGludG8gYSBzaW5nbGUgPG10ZXh0PiB0YWcuICBJbiB0aGlzIHdheSwgd2UgZG9uJ3RcbiAgICAgICAgLy8gbmVzdCBub24tdGV4dCBpdGVtcyAoZS5nLiwgJG5lc3RlZC1tYXRoJCkgd2l0aGluIGFuIDxtdGV4dD4uXG4gICAgICAgIHZhciBpbm5lciA9IFtdO1xuICAgICAgICB2YXIgY3VycmVudFRleHQgPSBudWxsO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvZHkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBfZ3JvdXAgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oYm9keVtpXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoX2dyb3VwLnR5cGUgPT09ICdtdGV4dCcgJiYgY3VycmVudFRleHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGN1cnJlbnRUZXh0LmNoaWxkcmVuLCBfZ3JvdXAuY2hpbGRyZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbm5lci5wdXNoKF9ncm91cCk7XG4gICAgICAgICAgICAgICAgaWYgKF9ncm91cC50eXBlID09PSAnbXRleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUZXh0ID0gX2dyb3VwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgc2luZ2xlIHRhZyBpbiB0aGUgZW5kIChwcmVzdW1hYmx5IDxtdGV4dD4pLFxuICAgICAgICAvLyBqdXN0IHJldHVybiBpdC4gIE90aGVyd2lzZSwgd3JhcCB0aGVtIGluIGFuIDxtcm93Pi5cbiAgICAgICAgaWYgKGlubmVyLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGlubmVyWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1yb3dcIiwgaW5uZXIpO1xuICAgICAgICB9XG4gICAgfVxufSk7XG5cbi8qKiovIH0pLFxuLyogMTE5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX191dGlsc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3N0cmV0Y2h5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2J1aWxkSFRNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG5cblxuXG5cblxuXG5cblxudmFyIGh0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBcXGNhbmNlbCwgXFxiY2FuY2VsLCBcXHhjYW5jZWwsIFxcc291dCwgXFxmYm94LCBcXGNvbG9yYm94LCBcXGZjb2xvcmJveFxuICAgIHZhciBpbm5lciA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRIVE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucyk7XG5cbiAgICB2YXIgbGFiZWwgPSBncm91cC52YWx1ZS5sYWJlbC5zdWJzdHIoMSk7XG4gICAgdmFyIHNjYWxlID0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICB2YXIgaW1nID0gdm9pZCAwO1xuICAgIHZhciBpbWdTaGlmdCA9IDA7XG4gICAgdmFyIGlzQ29sb3Jib3ggPSAvY29sb3IvLnRlc3QobGFiZWwpO1xuXG4gICAgaWYgKGxhYmVsID09PSBcInNvdXRcIikge1xuICAgICAgICBpbWcgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wic3RyZXRjaHlcIiwgXCJzb3V0XCJdKTtcbiAgICAgICAgaW1nLmhlaWdodCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWZhdWx0UnVsZVRoaWNrbmVzcyAvIHNjYWxlO1xuICAgICAgICBpbWdTaGlmdCA9IC0wLjUgKiBvcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgaG9yaXpvbnRhbCBwYWRkaW5nXG4gICAgICAgIGlubmVyLmNsYXNzZXMucHVzaCgvY2FuY2VsLy50ZXN0KGxhYmVsKSA/IFwiY2FuY2VsLXBhZFwiIDogXCJib3hwYWRcIik7XG5cbiAgICAgICAgLy8gQWRkIHZlcnRpY2FsIHBhZGRpbmdcbiAgICAgICAgdmFyIHZlcnRQYWQgPSAwO1xuICAgICAgICAvLyByZWY6IExhVGVYIHNvdXJjZTJlOiBcXGZib3hzZXAgPSAzcHQ7ICBcXGZib3hydWxlID0gLjRwdFxuICAgICAgICAvLyByZWY6IGNhbmNlbCBwYWNrYWdlOiBcXGFkdmFuY2VcXHRvdGFsaGVpZ2h0MlxccEAgJSBcIisyXCJcbiAgICAgICAgaWYgKC9ib3gvLnRlc3QobGFiZWwpKSB7XG4gICAgICAgICAgICB2ZXJ0UGFkID0gbGFiZWwgPT09IFwiY29sb3Jib3hcIiA/IDAuMyA6IDAuMzQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJ0UGFkID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmlzQ2hhcmFjdGVyQm94KGdyb3VwLnZhbHVlLmJvZHkpID8gMC4yIDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZyA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fc3RyZXRjaHlfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5lbmNsb3NlU3Bhbihpbm5lciwgbGFiZWwsIHZlcnRQYWQsIG9wdGlvbnMpO1xuICAgICAgICBpbWdTaGlmdCA9IGlubmVyLmRlcHRoICsgdmVydFBhZDtcblxuICAgICAgICBpZiAoaXNDb2xvcmJveCkge1xuICAgICAgICAgICAgaW1nLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGdyb3VwLnZhbHVlLmJhY2tncm91bmRDb2xvci52YWx1ZTtcbiAgICAgICAgICAgIGlmIChsYWJlbCA9PT0gXCJmY29sb3Jib3hcIikge1xuICAgICAgICAgICAgICAgIGltZy5zdHlsZS5ib3JkZXJDb2xvciA9IGdyb3VwLnZhbHVlLmJvcmRlckNvbG9yLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHZsaXN0ID0gdm9pZCAwO1xuICAgIGlmIChpc0NvbG9yYm94KSB7XG4gICAgICAgIHZsaXN0ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWTGlzdCh7XG4gICAgICAgICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgLy8gUHV0IHRoZSBjb2xvciBiYWNrZ3JvdW5kIGJlaGluZCBpbm5lcjtcbiAgICAgICAgICAgIHsgdHlwZTogXCJlbGVtXCIsIGVsZW06IGltZywgc2hpZnQ6IGltZ1NoaWZ0IH0sIHsgdHlwZTogXCJlbGVtXCIsIGVsZW06IGlubmVyLCBzaGlmdDogMCB9XVxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2bGlzdCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlVkxpc3Qoe1xuICAgICAgICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIC8vIFdyaXRlIHRoZSBcXGNhbmNlbCBzdHJva2Ugb24gdG9wIG9mIGlubmVyLlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgICAgICAgIGVsZW06IGlubmVyLFxuICAgICAgICAgICAgICAgIHNoaWZ0OiAwXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgICAgICAgZWxlbTogaW1nLFxuICAgICAgICAgICAgICAgIHNoaWZ0OiBpbWdTaGlmdCxcbiAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3NlczogL2NhbmNlbC8udGVzdChsYWJlbCkgPyBbXCJzdmctYWxpZ25cIl0gOiBbXVxuICAgICAgICAgICAgfV1cbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKC9jYW5jZWwvLnRlc3QobGFiZWwpKSB7XG4gICAgICAgIC8vIGNhbmNlbCBkb2VzIG5vdCBjcmVhdGUgaG9yaXogc3BhY2UgZm9yIGl0cyBsaW5lIGV4dGVuc2lvbi5cbiAgICAgICAgLy8gVGhhdCBpcywgbm90IHdoZW4gYWRqYWNlbnQgdG8gYSBtb3JkLlxuICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJjYW5jZWwtbGFwXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICAgIH1cbn07XG5cbnZhciBtYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibWVuY2xvc2VcIiwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fYnVpbGRNYXRoTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShncm91cC52YWx1ZS5ib2R5LCBvcHRpb25zKV0pO1xuICAgIHN3aXRjaCAoZ3JvdXAudmFsdWUubGFiZWwpIHtcbiAgICAgICAgY2FzZSBcIlxcXFxjYW5jZWxcIjpcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJ1cGRpYWdvbmFsc3RyaWtlXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJcXFxcYmNhbmNlbFwiOlxuICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcImRvd25kaWFnb25hbHN0cmlrZVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiXFxcXHNvdXRcIjpcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJob3Jpem9udGFsc3RyaWtlXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJcXFxcZmJveFwiOlxuICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcImJveFwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiXFxcXGNvbG9yYm94XCI6XG4gICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm1hdGhiYWNrZ3JvdW5kXCIsIGdyb3VwLnZhbHVlLmJhY2tncm91bmRDb2xvci52YWx1ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlxcXFxmY29sb3Jib3hcIjpcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aGJhY2tncm91bmRcIiwgZ3JvdXAudmFsdWUuYmFja2dyb3VuZENvbG9yLnZhbHVlKTtcbiAgICAgICAgICAgIC8vIFRPRE8ocm9uKTogSSBkb24ndCBrbm93IGFueSB3YXkgdG8gc2V0IHRoZSBib3JkZXIgY29sb3IuXG4gICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm5vdGF0aW9uXCIsIFwiYm94XCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyB4Y2FuY2VsXG4gICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm5vdGF0aW9uXCIsIFwidXBkaWFnb25hbHN0cmlrZSBkb3duZGlhZ29uYWxzdHJpa2VcIik7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xufTtcblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwiZW5jbG9zZVwiLFxuICAgIG5hbWVzOiBbXCJcXFxcY29sb3Jib3hcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMixcbiAgICAgICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICAgICAgZ3JlZWRpbmVzczogMyxcbiAgICAgICAgYXJnVHlwZXM6IFtcImNvbG9yXCIsIFwidGV4dFwiXVxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgICAgIHZhciBjb2xvciA9IGFyZ3NbMF07XG4gICAgICAgIHZhciBib2R5ID0gYXJnc1sxXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwiZW5jbG9zZVwiLFxuICAgICAgICAgICAgbGFiZWw6IGNvbnRleHQuZnVuY05hbWUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLFxuICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxufSk7XG5cbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcImVuY2xvc2VcIixcbiAgICBuYW1lczogW1wiXFxcXGZjb2xvcmJveFwiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAzLFxuICAgICAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgICAgICBncmVlZGluZXNzOiAzLFxuICAgICAgICBhcmdUeXBlczogW1wiY29sb3JcIiwgXCJjb2xvclwiLCBcInRleHRcIl1cbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncykge1xuICAgICAgICB2YXIgYm9yZGVyQ29sb3IgPSBhcmdzWzBdO1xuICAgICAgICB2YXIgYmFja2dyb3VuZENvbG9yID0gYXJnc1sxXTtcbiAgICAgICAgdmFyIGJvZHkgPSBhcmdzWzJdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJlbmNsb3NlXCIsXG4gICAgICAgICAgICBsYWJlbDogY29udGV4dC5mdW5jTmFtZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxufSk7XG5cbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcImVuY2xvc2VcIixcbiAgICBuYW1lczogW1wiXFxcXGNhbmNlbFwiLCBcIlxcXFxiY2FuY2VsXCIsIFwiXFxcXHhjYW5jZWxcIiwgXCJcXFxcc291dFwiLCBcIlxcXFxmYm94XCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDFcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncykge1xuICAgICAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcImVuY2xvc2VcIixcbiAgICAgICAgICAgIGxhYmVsOiBjb250ZXh0LmZ1bmNOYW1lLFxuICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxufSk7XG5cbi8qKiovIH0pLFxuLyogMTIwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZEhUTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZE1hdGhNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuXG5cblxuXG5cblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwib3ZlcmxpbmVcIixcbiAgICBuYW1lczogW1wiXFxcXG92ZXJsaW5lXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDFcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgICAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcIm92ZXJsaW5lXCIsXG4gICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgIH07XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgLy8gT3ZlcmxpbmVzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIHBnIDQ0MywgUnVsZSA5LlxuXG4gICAgICAgIC8vIEJ1aWxkIHRoZSBpbm5lciBncm91cCBpbiB0aGUgY3JhbXBlZCBzdHlsZS5cbiAgICAgICAgdmFyIGlubmVyR3JvdXAgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkSFRNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKGdyb3VwLnZhbHVlLmJvZHksIG9wdGlvbnMuaGF2aW5nQ3JhbXBlZFN0eWxlKCkpO1xuXG4gICAgICAgIC8vIENyZWF0ZSB0aGUgbGluZSBhYm92ZSB0aGUgYm9keVxuICAgICAgICB2YXIgbGluZSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlTGluZVNwYW4oXCJvdmVybGluZS1saW5lXCIsIG9wdGlvbnMpO1xuXG4gICAgICAgIC8vIEdlbmVyYXRlIHRoZSB2bGlzdCwgd2l0aCB0aGUgYXBwcm9wcmlhdGUga2VybnNcbiAgICAgICAgdmFyIHZsaXN0ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWTGlzdCh7XG4gICAgICAgICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgICAgICAgY2hpbGRyZW46IFt7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBpbm5lckdyb3VwIH0sXG4gICAgICAgICAgICAvLyBUaGUga2VybiBvbiB0aGUgbmV4dCBsaW5lIHdvdWxkIG9yZGluYXJpbHkgYmUgMyAqIGxpbmUuaGVpZ2h0XG4gICAgICAgICAgICAvLyBCdXQgd2UgcHV0IHRoZSBsaW5lIGludG8gYSBzcGFuIHRoYXQgaXMgNSBsaW5lcyB0YWxsLCB0b1xuICAgICAgICAgICAgLy8gb3ZlcmNvbWUgYSBDaHJvbWUgcmVuZGVyaW5nIGlzc3VlLiBUaGUgU1ZHIGhhcyBhIHNwYWNlIGluXG4gICAgICAgICAgICAvLyB0aGUgYm90dG9tIHRoYXQgaXMgMiBsaW5lcyBoaWdoLiBUaGF0IGFuZCB0aGUgMS1saW5lLWhpZ2hcbiAgICAgICAgICAgIC8vIGtlcm4gc3VtIHVwIHRvIHRoZSBzYW1lIGRpc3RhbmNlIGFzIHRoZSBvbGQgMyBsaW5lIGtlcm4uXG4gICAgICAgICAgICB7IHR5cGU6IFwia2VyblwiLCBzaXplOiBsaW5lLmhlaWdodCB9LCB7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBsaW5lIH1dXG4gICAgICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wibW9yZFwiLCBcIm92ZXJsaW5lXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIG9wZXJhdG9yID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibW9cIiwgW25ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5UZXh0Tm9kZShcIlxcdTIwM0VcIildKTtcbiAgICAgICAgb3BlcmF0b3Iuc2V0QXR0cmlidXRlKFwic3RyZXRjaHlcIiwgXCJ0cnVlXCIpO1xuXG4gICAgICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibW92ZXJcIiwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRNYXRoTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShncm91cC52YWx1ZS5ib2R5LCBvcHRpb25zKSwgb3BlcmF0b3JdKTtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhY2NlbnRcIiwgXCJ0cnVlXCIpO1xuXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEyMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYnVpbGRIVE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRNYXRoTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cblxuXG5cblxuXG5cbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcInVuZGVybGluZVwiLFxuICAgIG5hbWVzOiBbXCJcXFxcdW5kZXJsaW5lXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDEsXG4gICAgICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgICAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcInVuZGVybGluZVwiLFxuICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIC8vIFVuZGVybGluZXMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgcGcgNDQzLCBSdWxlIDEwLlxuICAgICAgICAvLyBCdWlsZCB0aGUgaW5uZXIgZ3JvdXAuXG4gICAgICAgIHZhciBpbm5lckdyb3VwID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZEhUTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShncm91cC52YWx1ZS5ib2R5LCBvcHRpb25zKTtcblxuICAgICAgICAvLyBDcmVhdGUgdGhlIGxpbmUgdG8gZ28gYmVsb3cgdGhlIGJvZHlcbiAgICAgICAgdmFyIGxpbmUgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZUxpbmVTcGFuKFwidW5kZXJsaW5lLWxpbmVcIiwgb3B0aW9ucyk7XG5cbiAgICAgICAgLy8gR2VuZXJhdGUgdGhlIHZsaXN0LCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBrZXJuc1xuICAgICAgICB2YXIgdmxpc3QgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVZMaXN0KHtcbiAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogXCJ0b3BcIixcbiAgICAgICAgICAgIHBvc2l0aW9uRGF0YTogaW5uZXJHcm91cC5oZWlnaHQsXG4gICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgLy8gVGhlIFNWRyBpbWFnZSBpcyA1eCBhcyB0YWxsIGFzIHRoZSBsaW5lLlxuICAgICAgICAgICAgLy8gVGhlIGJvdHRvbSAyLzUgb2YgdGhlIGltYWdlIGlzIGJsYW5rIGFuZCBhY3RzIGxpa2UgYSBrZXJuLlxuICAgICAgICAgICAgLy8gU28gd2Ugb21pdCB0aGUga2VybiB0aGF0IHdvdWxkIG90aGVyd2lzZSBnbyBhdCB0aGUgYm90dG9tLlxuICAgICAgICAgICAgeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogbGluZSB9LCB7IHR5cGU6IFwia2VyblwiLCBzaXplOiA1ICogbGluZS5oZWlnaHQgfSwgeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogaW5uZXJHcm91cCB9XVxuICAgICAgICB9LCBvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJ1bmRlcmxpbmVcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICB2YXIgb3BlcmF0b3IgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb1wiLCBbbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlRleHROb2RlKFwiXFx1MjAzRVwiKV0pO1xuICAgICAgICBvcGVyYXRvci5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcInRydWVcIik7XG5cbiAgICAgICAgdmFyIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtdW5kZXJcIiwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRNYXRoTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShncm91cC52YWx1ZS5ib2R5LCBvcHRpb25zKSwgb3BlcmF0b3JdKTtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhY2NlbnR1bmRlclwiLCBcInRydWVcIik7XG5cbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxufSk7XG5cbi8qKiovIH0pLFxuLyogMTIyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRDb21tb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kZWZpbmVGdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX191bml0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cblxuXG5cblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwicnVsZVwiLFxuICAgIG5hbWVzOiBbXCJcXFxccnVsZVwiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAyLFxuICAgICAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgICAgIGFyZ1R5cGVzOiBbXCJzaXplXCIsIFwic2l6ZVwiLCBcInNpemVcIl1cbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncykge1xuICAgICAgICB2YXIgc2hpZnQgPSBvcHRBcmdzWzBdO1xuICAgICAgICB2YXIgd2lkdGggPSBhcmdzWzBdO1xuICAgICAgICB2YXIgaGVpZ2h0ID0gYXJnc1sxXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwicnVsZVwiLFxuICAgICAgICAgICAgc2hpZnQ6IHNoaWZ0ICYmIHNoaWZ0LnZhbHVlLFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoLnZhbHVlLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQudmFsdWVcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICAvLyBNYWtlIGFuIGVtcHR5IHNwYW4gZm9yIHRoZSBydWxlXG4gICAgICAgIHZhciBydWxlID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJydWxlXCJdLCBbXSwgb3B0aW9ucyk7XG5cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzaGlmdCwgd2lkdGgsIGFuZCBoZWlnaHQgb2YgdGhlIHJ1bGUsIGFuZCBhY2NvdW50IGZvciB1bml0c1xuICAgICAgICB2YXIgc2hpZnQgPSAwO1xuICAgICAgICBpZiAoZ3JvdXAudmFsdWUuc2hpZnQpIHtcbiAgICAgICAgICAgIHNoaWZ0ID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdW5pdHNfX1tcImFcIiAvKiBjYWxjdWxhdGVTaXplICovXSkoZ3JvdXAudmFsdWUuc2hpZnQsIG9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHdpZHRoID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdW5pdHNfX1tcImFcIiAvKiBjYWxjdWxhdGVTaXplICovXSkoZ3JvdXAudmFsdWUud2lkdGgsIG9wdGlvbnMpO1xuICAgICAgICB2YXIgaGVpZ2h0ID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdW5pdHNfX1tcImFcIiAvKiBjYWxjdWxhdGVTaXplICovXSkoZ3JvdXAudmFsdWUuaGVpZ2h0LCBvcHRpb25zKTtcblxuICAgICAgICAvLyBTdHlsZSB0aGUgcnVsZSB0byB0aGUgcmlnaHQgc2l6ZVxuICAgICAgICBydWxlLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGggPSB3aWR0aCArIFwiZW1cIjtcbiAgICAgICAgcnVsZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCA9IGhlaWdodCArIFwiZW1cIjtcbiAgICAgICAgcnVsZS5zdHlsZS5ib3R0b20gPSBzaGlmdCArIFwiZW1cIjtcblxuICAgICAgICAvLyBSZWNvcmQgdGhlIGhlaWdodCBhbmQgd2lkdGhcbiAgICAgICAgcnVsZS53aWR0aCA9IHdpZHRoO1xuICAgICAgICBydWxlLmhlaWdodCA9IGhlaWdodCArIHNoaWZ0O1xuICAgICAgICBydWxlLmRlcHRoID0gLXNoaWZ0O1xuICAgICAgICAvLyBGb250IHNpemUgaXMgdGhlIG51bWJlciBsYXJnZSBlbm91Z2ggdGhhdCB0aGUgYnJvd3NlciB3aWxsXG4gICAgICAgIC8vIHJlc2VydmUgYXQgbGVhc3QgYGFic0hlaWdodGAgc3BhY2UgYWJvdmUgdGhlIGJhc2VsaW5lLlxuICAgICAgICAvLyBUaGUgMS4xMjUgZmFjdG9yIHdhcyBlbXBpcmljYWxseSBkZXRlcm1pbmVkXG4gICAgICAgIHJ1bGUubWF4Rm9udFNpemUgPSBoZWlnaHQgKiAxLjEyNSAqIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG5cbiAgICAgICAgcmV0dXJuIHJ1bGU7XG4gICAgfSxcbiAgICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIC8vIFRPRE8oZW1pbHkpOiBGaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW4gYWN0dWFsIHdheSB0byBkcmF3IGJsYWNrIGJveGVzXG4gICAgICAgIC8vIGluIE1hdGhNTC5cbiAgICAgICAgdmFyIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtcm93XCIpO1xuXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEyMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdW5pdHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fUGFyc2VFcnJvcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblxuLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xuLy8gSG9yaXpvbnRhbCBzcGFjaW5nIGNvbW1hbmRzXG5cblxuXG5cblxuXG5cbi8vIFRPRE86IFxcaHNraXAgYW5kIFxcbXNraXAgc2hvdWxkIHN1cHBvcnQgcGx1cyBhbmQgbWludXMgaW4gbGVuZ3Roc1xuXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJrZXJuXCIsXG4gICAgbmFtZXM6IFtcIlxcXFxrZXJuXCIsIFwiXFxcXG1rZXJuXCIsIFwiXFxcXGhza2lwXCIsIFwiXFxcXG1za2lwXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDEsXG4gICAgICAgIGFyZ1R5cGVzOiBbXCJzaXplXCJdLFxuICAgICAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gICAgfSxcbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICAgICAgdmFyIG1hdGhGdW5jdGlvbiA9IGNvbnRleHQuZnVuY05hbWVbMV0gPT09ICdtJzsgLy8gXFxta2VybiwgXFxtc2tpcFxuICAgICAgICB2YXIgbXVVbml0ID0gYXJnc1swXS52YWx1ZS51bml0ID09PSAnbXUnO1xuICAgICAgICBpZiAobWF0aEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoIW11VW5pdCkge1xuICAgICAgICAgICAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkluIExhVGVYLCBcIiArIGNvbnRleHQuZnVuY05hbWUgKyBcIiBzdXBwb3J0cyBvbmx5IG11IHVuaXRzLCBcIiArIChcIm5vdCBcIiArIGFyZ3NbMF0udmFsdWUudW5pdCArIFwiIHVuaXRzXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb250ZXh0LnBhcnNlci5tb2RlICE9PSBcIm1hdGhcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIkNhbid0IHVzZSBmdW5jdGlvbiAnXCIgKyBjb250ZXh0LmZ1bmNOYW1lICsgXCInIGluIHRleHQgbW9kZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vICFtYXRoRnVuY3Rpb25cbiAgICAgICAgICAgIGlmIChtdVVuaXQpIHtcbiAgICAgICAgICAgICAgICB0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlLndhcm4oXCJJbiBMYVRlWCwgXCIgKyBjb250ZXh0LmZ1bmNOYW1lICsgXCIgZG9lcyBub3Qgc3VwcG9ydCBtdSB1bml0c1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgICAgICBkaW1lbnNpb246IGFyZ3NbMF0udmFsdWVcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VHbHVlKGdyb3VwLnZhbHVlLmRpbWVuc2lvbiwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXNwYWNlXCIpO1xuXG4gICAgICAgIHZhciBkaW1lbnNpb24gPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX191bml0c19fW1wiYVwiIC8qIGNhbGN1bGF0ZVNpemUgKi9dKShncm91cC52YWx1ZS5kaW1lbnNpb24sIG9wdGlvbnMpO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGRpbWVuc2lvbiArIFwiZW1cIik7XG5cbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxufSk7XG5cbi8qKiovIH0pLFxuLyogMTI0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZEhUTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZE1hdGhNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuXG5cblxuXG5cblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwicGhhbnRvbVwiLFxuICAgIG5hbWVzOiBbXCJcXFxccGhhbnRvbVwiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAxXG4gICAgfSxcbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICAgICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJwaGFudG9tXCIsXG4gICAgICAgICAgICB2YWx1ZTogT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImNcIiAvKiBvcmRhcmd1bWVudCAqL10pKGJvZHkpXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZEhUTUxfX1tcImFcIiAvKiBidWlsZEV4cHJlc3Npb24gKi9dKGdyb3VwLnZhbHVlLnZhbHVlLCBvcHRpb25zLndpdGhQaGFudG9tKCksIGZhbHNlKTtcblxuICAgICAgICAvLyBcXHBoYW50b20gaXNuJ3Qgc3VwcG9zZWQgdG8gYWZmZWN0IHRoZSBlbGVtZW50cyBpdCBjb250YWlucy5cbiAgICAgICAgLy8gU2VlIFwiY29sb3JcIiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICByZXR1cm4gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlRnJhZ21lbnQoZWxlbWVudHMpO1xuICAgIH0sXG4gICAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICB2YXIgaW5uZXIgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX19bXCJhXCIgLyogYnVpbGRFeHByZXNzaW9uICovXShncm91cC52YWx1ZS52YWx1ZSwgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtcGhhbnRvbVwiLCBpbm5lcik7XG4gICAgfVxufSk7XG5cbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcImhwaGFudG9tXCIsXG4gICAgbmFtZXM6IFtcIlxcXFxocGhhbnRvbVwiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAxXG4gICAgfSxcbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICAgICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJocGhhbnRvbVwiLFxuICAgICAgICAgICAgdmFsdWU6IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJjXCIgLyogb3JkYXJndW1lbnQgKi9dKShib2R5KSxcbiAgICAgICAgICAgIGJvZHk6IGJvZHlcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICB2YXIgbm9kZSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXSwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYnVpbGRIVE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucy53aXRoUGhhbnRvbSgpKV0pO1xuICAgICAgICBub2RlLmhlaWdodCA9IDA7XG4gICAgICAgIG5vZGUuZGVwdGggPSAwO1xuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbltpXS5oZWlnaHQgPSAwO1xuICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW5baV0uZGVwdGggPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VlIHNtYXNoIGZvciBjb21tZW50IHJlOiB1c2Ugb2YgbWFrZVZMaXN0XG4gICAgICAgIG5vZGUgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVZMaXN0KHtcbiAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogXCJmaXJzdEJhc2VsaW5lXCIsXG4gICAgICAgICAgICBjaGlsZHJlbjogW3sgdHlwZTogXCJlbGVtXCIsIGVsZW06IG5vZGUgfV1cbiAgICAgICAgfSwgb3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfSxcbiAgICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBpbm5lciA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRNYXRoTUxfX1tcImFcIiAvKiBidWlsZEV4cHJlc3Npb24gKi9dKGdyb3VwLnZhbHVlLnZhbHVlLCBvcHRpb25zKTtcbiAgICAgICAgdmFyIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtcGhhbnRvbVwiLCBpbm5lcik7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIFwiMHB4XCIpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG59KTtcblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwidnBoYW50b21cIixcbiAgICBuYW1lczogW1wiXFxcXHZwaGFudG9tXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDFcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgICAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcInZwaGFudG9tXCIsXG4gICAgICAgICAgICB2YWx1ZTogT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImNcIiAvKiBvcmRhcmd1bWVudCAqL10pKGJvZHkpLFxuICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBpbm5lciA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJpbm5lclwiXSwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYnVpbGRIVE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucy53aXRoUGhhbnRvbSgpKV0pO1xuICAgICAgICB2YXIgZml4ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcImZpeFwiXSwgW10pO1xuICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJybGFwXCJdLCBbaW5uZXIsIGZpeF0sIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICB2YXIgaW5uZXIgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX19bXCJhXCIgLyogYnVpbGRFeHByZXNzaW9uICovXShncm91cC52YWx1ZS52YWx1ZSwgb3B0aW9ucyk7XG4gICAgICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXBoYW50b21cIiwgaW5uZXIpO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiMHB4XCIpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMjUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1N0eWxlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRIVE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRNYXRoTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbi8vIFxcbW9kLXR5cGUgZnVuY3Rpb25zXG5cblxuXG5cblxuXG5cblxudmFyIGh0bWxNb2RCdWlsZGVyID0gZnVuY3Rpb24gaHRtbE1vZEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgaW5uZXIgPSBbXTtcblxuICAgIGlmIChncm91cC52YWx1ZS5tb2RUeXBlID09PSBcImJtb2RcIikge1xuICAgICAgICAvLyDigJxcXG5vbnNjcmlwdFxcbXNraXAtXFxtZWRtdXNraXBcXG1rZXJuNW114oCdLCB3aGVyZSBcXG1lZG11c2tpcCBpc1xuICAgICAgICAvLyA0bXUgcGx1cyAybXUgbWludXMgMW11LCB0cmFuc2xhdGVzIHRvIDFtdSBzcGFjZSBpblxuICAgICAgICAvLyBkaXNwbGF5L3RleHRzdHlsZSBhbmQgNW11IHNwYWNlIGluIHNjcmlwdC9zY3JpcHRzY3JpcHRzdHlsZS5cbiAgICAgICAgaWYgKCFvcHRpb25zLnN0eWxlLmlzVGlnaHQoKSkge1xuICAgICAgICAgICAgaW5uZXIucHVzaChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wibXNwYWNlXCIsIFwibXVzcGFjZVwiXSwgW10sIG9wdGlvbnMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlubmVyLnB1c2goX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1zcGFjZVwiLCBcInRoaWNrc3BhY2VcIl0sIFtdLCBvcHRpb25zKSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuc3R5bGUuc2l6ZSA9PT0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLkRJU1BMQVkuc2l6ZSkge1xuICAgICAgICBpbm5lci5wdXNoKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJtc3BhY2VcIiwgXCJxdWFkXCJdLCBbXSwgb3B0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAoZ3JvdXAudmFsdWUubW9kVHlwZSA9PT0gXCJtb2RcIikge1xuICAgICAgICBpbm5lci5wdXNoKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJtc3BhY2VcIiwgXCJ0d2VsdmVtdXNwYWNlXCJdLCBbXSwgb3B0aW9ucykpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlubmVyLnB1c2goX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1zcGFjZVwiLCBcImVpZ2h0bXVzcGFjZVwiXSwgW10sIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAudmFsdWUubW9kVHlwZSA9PT0gXCJwb2RcIiB8fCBncm91cC52YWx1ZS5tb2RUeXBlID09PSBcInBtb2RcIikge1xuICAgICAgICBpbm5lci5wdXNoKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYXRoc3ltKFwiKFwiLCBncm91cC5tb2RlKSk7XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnZhbHVlLm1vZFR5cGUgIT09IFwicG9kXCIpIHtcbiAgICAgICAgdmFyIG1vZElubmVyID0gW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYXRoc3ltKFwibVwiLCBncm91cC5tb2RlKSwgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1hdGhzeW0oXCJvXCIsIGdyb3VwLm1vZGUpLCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWF0aHN5bShcImRcIiwgZ3JvdXAubW9kZSldO1xuICAgICAgICBpZiAoZ3JvdXAudmFsdWUubW9kVHlwZSA9PT0gXCJibW9kXCIpIHtcbiAgICAgICAgICAgIGlubmVyLnB1c2goX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1iaW5cIl0sIG1vZElubmVyLCBvcHRpb25zKSk7XG4gICAgICAgICAgICAvLyDigJxcXG1rZXJuNW11XFxub25zY3JpcHRcXG1za2lwLVxcbWVkbXVza2lw4oCdIGFzIGFib3ZlXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc3R5bGUuaXNUaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgaW5uZXIucHVzaChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wibXNwYWNlXCIsIFwibXVzcGFjZVwiXSwgW10sIG9wdGlvbnMpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5uZXIucHVzaChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wibXNwYWNlXCIsIFwidGhpY2tzcGFjZVwiXSwgW10sIG9wdGlvbnMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGlubmVyLCBtb2RJbm5lcik7XG4gICAgICAgICAgICBpbm5lci5wdXNoKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJtc3BhY2VcIiwgXCJzaXhtdXNwYWNlXCJdLCBbXSwgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnZhbHVlLnZhbHVlKSB7XG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGlubmVyLCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkSFRNTF9fW1wiYVwiIC8qIGJ1aWxkRXhwcmVzc2lvbiAqL10oZ3JvdXAudmFsdWUudmFsdWUsIG9wdGlvbnMsIGZhbHNlKSk7XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnZhbHVlLm1vZFR5cGUgPT09IFwicG9kXCIgfHwgZ3JvdXAudmFsdWUubW9kVHlwZSA9PT0gXCJwbW9kXCIpIHtcbiAgICAgICAgaW5uZXIucHVzaChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWF0aHN5bShcIilcIiwgZ3JvdXAubW9kZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZUZyYWdtZW50KGlubmVyKTtcbn07XG5cbnZhciBtbWxNb2RCdWlsZGVyID0gZnVuY3Rpb24gbW1sTW9kQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IFtdO1xuXG4gICAgaWYgKGdyb3VwLnZhbHVlLm1vZFR5cGUgPT09IFwicG9kXCIgfHwgZ3JvdXAudmFsdWUubW9kVHlwZSA9PT0gXCJwbW9kXCIpIHtcbiAgICAgICAgaW5uZXIucHVzaChuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb1wiLCBbX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19idWlsZE1hdGhNTF9fW1wiZVwiIC8qIG1ha2VUZXh0ICovXShcIihcIiwgZ3JvdXAubW9kZSldKSk7XG4gICAgfVxuICAgIGlmIChncm91cC52YWx1ZS5tb2RUeXBlICE9PSBcInBvZFwiKSB7XG4gICAgICAgIGlubmVyLnB1c2gobmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibW9cIiwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRNYXRoTUxfX1tcImVcIiAvKiBtYWtlVGV4dCAqL10oXCJtb2RcIiwgZ3JvdXAubW9kZSldKSk7XG4gICAgfVxuICAgIGlmIChncm91cC52YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YXIgc3BhY2UgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtc3BhY2VcIik7XG4gICAgICAgIHNwYWNlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiMC4zMzMzMzNlbVwiKTtcbiAgICAgICAgaW5uZXIucHVzaChzcGFjZSk7XG4gICAgICAgIGlubmVyID0gaW5uZXIuY29uY2F0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRNYXRoTUxfX1tcImFcIiAvKiBidWlsZEV4cHJlc3Npb24gKi9dKGdyb3VwLnZhbHVlLnZhbHVlLCBvcHRpb25zKSk7XG4gICAgfVxuICAgIGlmIChncm91cC52YWx1ZS5tb2RUeXBlID09PSBcInBvZFwiIHx8IGdyb3VwLnZhbHVlLm1vZFR5cGUgPT09IFwicG1vZFwiKSB7XG4gICAgICAgIGlubmVyLnB1c2gobmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibW9cIiwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRNYXRoTUxfX1tcImVcIiAvKiBtYWtlVGV4dCAqL10oXCIpXCIsIGdyb3VwLm1vZGUpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb1wiLCBpbm5lcik7XG59O1xuXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJtb2RcIixcbiAgICBuYW1lczogW1wiXFxcXGJtb2RcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMFxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcIm1vZFwiLFxuICAgICAgICAgICAgbW9kVHlwZTogXCJibW9kXCIsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGh0bWxNb2RCdWlsZGVyLFxuICAgIG1hdGhtbEJ1aWxkZXI6IG1tbE1vZEJ1aWxkZXJcbn0pO1xuXG4vLyBOb3RlOiBjYWxsaW5nIGRlZmluZUZ1bmN0aW9uIHdpdGggYSB0eXBlIHRoYXQncyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBvbmx5XG4vLyB3b3JrcyBiZWNhdXNlIHRoZSBzYW1lIGh0bWxCdWlsZGVyIGFuZCBtYXRobWxCdWlsZGVyIGFyZSBiZWluZyB1c2VkLlxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwibW9kXCIsXG4gICAgbmFtZXM6IFtcIlxcXFxwb2RcIiwgXCJcXFxccG1vZFwiLCBcIlxcXFxtb2RcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMVxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwibW9kXCIsXG4gICAgICAgICAgICBtb2RUeXBlOiBjb250ZXh0LmZ1bmNOYW1lLnN1YnN0cigxKSxcbiAgICAgICAgICAgIHZhbHVlOiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiY1wiIC8qIG9yZGFyZ3VtZW50ICovXSkoYm9keSlcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBodG1sTW9kQnVpbGRlcixcbiAgICBtYXRobWxCdWlsZGVyOiBtbWxNb2RCdWlsZGVyXG59KTtcblxuLyoqKi8gfSksXG4vKiAxMjYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZG9tVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXRoTUxUcmVlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fdXRpbHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19TdHlsZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX2J1aWxkSFRNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG4vLyBMaW1pdHMsIHN5bWJvbHNcblxuXG5cblxuXG5cblxuXG5cblxudmFyIGh0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBPcGVyYXRvcnMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgcGcuIDQ0My00NDQsIHJ1bGUgMTMoYSkuXG4gICAgdmFyIHN1cEdyb3VwID0gdm9pZCAwO1xuICAgIHZhciBzdWJHcm91cCA9IHZvaWQgMDtcbiAgICB2YXIgaGFzTGltaXRzID0gZmFsc2U7XG4gICAgaWYgKGdyb3VwLnR5cGUgPT09IFwic3Vwc3ViXCIpIHtcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBsaW1pdHMsIHN1cHN1YiB3aWxsIHBhc3MgdXMgaXRzIGdyb3VwIHRvIGhhbmRsZS4gUHVsbFxuICAgICAgICAvLyBvdXQgdGhlIHN1cGVyc2NyaXB0IGFuZCBzdWJzY3JpcHQgYW5kIHNldCB0aGUgZ3JvdXAgdG8gdGhlIG9wIGluXG4gICAgICAgIC8vIGl0cyBiYXNlLlxuICAgICAgICBzdXBHcm91cCA9IGdyb3VwLnZhbHVlLnN1cDtcbiAgICAgICAgc3ViR3JvdXAgPSBncm91cC52YWx1ZS5zdWI7XG4gICAgICAgIGdyb3VwID0gZ3JvdXAudmFsdWUuYmFzZTtcbiAgICAgICAgaGFzTGltaXRzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgc3R5bGUgPSBvcHRpb25zLnN0eWxlO1xuXG4gICAgLy8gTW9zdCBvcGVyYXRvcnMgaGF2ZSBhIGxhcmdlIHN1Y2Nlc3NvciBzeW1ib2wsIGJ1dCB0aGVzZSBkb24ndC5cbiAgICB2YXIgbm9TdWNjZXNzb3IgPSBbXCJcXFxcc21hbGxpbnRcIl07XG5cbiAgICB2YXIgbGFyZ2UgPSBmYWxzZTtcbiAgICBpZiAoc3R5bGUuc2l6ZSA9PT0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLkRJU1BMQVkuc2l6ZSAmJiBncm91cC52YWx1ZS5zeW1ib2wgJiYgIV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5jb250YWlucyhub1N1Y2Nlc3NvciwgZ3JvdXAudmFsdWUuYm9keSkpIHtcblxuICAgICAgICAvLyBNb3N0IHN5bWJvbCBvcGVyYXRvcnMgZ2V0IGxhcmdlciBpbiBkaXNwbGF5c3R5bGUgKHJ1bGUgMTMpXG4gICAgICAgIGxhcmdlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgYmFzZSA9IHZvaWQgMDtcbiAgICBpZiAoZ3JvdXAudmFsdWUuc3ltYm9sKSB7XG4gICAgICAgIC8vIElmIHRoaXMgaXMgYSBzeW1ib2wsIGNyZWF0ZSB0aGUgc3ltYm9sLlxuICAgICAgICB2YXIgZm9udE5hbWUgPSBsYXJnZSA/IFwiU2l6ZTItUmVndWxhclwiIDogXCJTaXplMS1SZWd1bGFyXCI7XG4gICAgICAgIGJhc2UgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVN5bWJvbChncm91cC52YWx1ZS5ib2R5LCBmb250TmFtZSwgXCJtYXRoXCIsIG9wdGlvbnMsIFtcIm1vcFwiLCBcIm9wLXN5bWJvbFwiLCBsYXJnZSA/IFwibGFyZ2Utb3BcIiA6IFwic21hbGwtb3BcIl0pO1xuICAgIH0gZWxzZSBpZiAoZ3JvdXAudmFsdWUudmFsdWUpIHtcbiAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGxpc3QsIGNvbXBvc2UgdGhhdCBsaXN0LlxuICAgICAgICB2YXIgaW5uZXIgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX2J1aWxkSFRNTF9fW1wiYVwiIC8qIGJ1aWxkRXhwcmVzc2lvbiAqL10oZ3JvdXAudmFsdWUudmFsdWUsIG9wdGlvbnMsIHRydWUpO1xuICAgICAgICBpZiAoaW5uZXIubGVuZ3RoID09PSAxICYmIGlubmVyWzBdIGluc3RhbmNlb2YgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kb21UcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uc3ltYm9sTm9kZSkge1xuICAgICAgICAgICAgYmFzZSA9IGlubmVyWzBdO1xuICAgICAgICAgICAgYmFzZS5jbGFzc2VzWzBdID0gXCJtb3BcIjsgLy8gcmVwbGFjZSBvbGQgbWNsYXNzXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNlID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1vcFwiXSwgaW5uZXIsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIGlzIGEgdGV4dCBvcGVyYXRvci4gQnVpbGQgdGhlIHRleHQgZnJvbSB0aGVcbiAgICAgICAgLy8gb3BlcmF0b3IncyBuYW1lLlxuICAgICAgICAvLyBUT0RPKGVtaWx5KTogQWRkIGEgc3BhY2UgaW4gdGhlIG1pZGRsZSBvZiBzb21lIG9mIHRoZXNlXG4gICAgICAgIC8vIG9wZXJhdG9ycywgbGlrZSBcXGxpbXN1cFxuICAgICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZ3JvdXAudmFsdWUuYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgb3V0cHV0LnB1c2goX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1hdGhzeW0oZ3JvdXAudmFsdWUuYm9keVtpXSwgZ3JvdXAubW9kZSkpO1xuICAgICAgICB9XG4gICAgICAgIGJhc2UgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wibW9wXCJdLCBvdXRwdXQsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8vIElmIGNvbnRlbnQgb2Ygb3AgaXMgYSBzaW5nbGUgc3ltYm9sLCBzaGlmdCBpdCB2ZXJ0aWNhbGx5LlxuICAgIHZhciBiYXNlU2hpZnQgPSAwO1xuICAgIHZhciBzbGFudCA9IDA7XG4gICAgaWYgKGJhc2UgaW5zdGFuY2VvZiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2RvbVRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5zeW1ib2xOb2RlKSB7XG4gICAgICAgIC8vIFNoaWZ0IHRoZSBzeW1ib2wgc28gaXRzIGNlbnRlciBsaWVzIG9uIHRoZSBheGlzIChydWxlIDEzKS4gSXRcbiAgICAgICAgLy8gYXBwZWFycyB0aGF0IG91ciBmb250cyBoYXZlIHRoZSBjZW50ZXJzIG9mIHRoZSBzeW1ib2xzIGFscmVhZHlcbiAgICAgICAgLy8gYWxtb3N0IG9uIHRoZSBheGlzLCBzbyB0aGVzZSBudW1iZXJzIGFyZSB2ZXJ5IHNtYWxsLiBOb3RlIHdlXG4gICAgICAgIC8vIGRvbid0IGFjdHVhbGx5IGFwcGx5IHRoaXMgaGVyZSwgYnV0IGluc3RlYWQgaXQgaXMgdXNlZCBlaXRoZXIgaW5cbiAgICAgICAgLy8gdGhlIHZsaXN0IGNyZWF0aW9uIG9yIHNlcGFyYXRlbHkgd2hlbiB0aGVyZSBhcmUgbm8gbGltaXRzLlxuICAgICAgICBiYXNlU2hpZnQgPSAoYmFzZS5oZWlnaHQgLSBiYXNlLmRlcHRoKSAvIDIgLSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDtcblxuICAgICAgICAvLyBUaGUgc2xhbnQgb2YgdGhlIHN5bWJvbCBpcyBqdXN0IGl0cyBpdGFsaWMgY29ycmVjdGlvbi5cbiAgICAgICAgc2xhbnQgPSBiYXNlLml0YWxpYztcbiAgICB9XG5cbiAgICBpZiAoaGFzTGltaXRzKSB7XG4gICAgICAgIC8vIElFIDggY2xpcHMgXFxpbnQgaWYgaXQgaXMgaW4gYSBkaXNwbGF5OiBpbmxpbmUtYmxvY2suIFdlIHdyYXAgaXRcbiAgICAgICAgLy8gaW4gYSBuZXcgc3BhbiBzbyBpdCBpcyBhbiBpbmxpbmUsIGFuZCB3b3Jrcy5cbiAgICAgICAgYmFzZSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXSwgW2Jhc2VdKTtcblxuICAgICAgICB2YXIgc3ViID0gdm9pZCAwO1xuICAgICAgICB2YXIgc3VwID0gdm9pZCAwO1xuICAgICAgICAvLyBXZSBtYW51YWxseSBoYXZlIHRvIGhhbmRsZSB0aGUgc3VwZXJzY3JpcHRzIGFuZCBzdWJzY3JpcHRzLiBUaGlzLFxuICAgICAgICAvLyBhc2lkZSBmcm9tIHRoZSBrZXJuIGNhbGN1bGF0aW9ucywgaXMgY29waWVkIGZyb20gc3Vwc3ViLlxuICAgICAgICBpZiAoc3VwR3JvdXApIHtcbiAgICAgICAgICAgIHZhciBlbGVtID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19idWlsZEhUTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShzdXBHcm91cCwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdXAoKSksIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBzdXAgPSB7XG4gICAgICAgICAgICAgICAgZWxlbTogZWxlbSxcbiAgICAgICAgICAgICAgICBrZXJuOiBNYXRoLm1heChvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nMSwgb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzMgLSBlbGVtLmRlcHRoKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJHcm91cCkge1xuICAgICAgICAgICAgdmFyIF9lbGVtID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19idWlsZEhUTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShzdWJHcm91cCwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdWIoKSksIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBzdWIgPSB7XG4gICAgICAgICAgICAgICAgZWxlbTogX2VsZW0sXG4gICAgICAgICAgICAgICAga2VybjogTWF0aC5tYXgob3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzIsIG9wdGlvbnMuZm9udE1ldHJpY3MoKS5iaWdPcFNwYWNpbmc0IC0gX2VsZW0uaGVpZ2h0KVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJ1aWxkIHRoZSBmaW5hbCBncm91cCBhcyBhIHZsaXN0IG9mIHRoZSBwb3NzaWJsZSBzdWJzY3JpcHQsIGJhc2UsXG4gICAgICAgIC8vIGFuZCBwb3NzaWJsZSBzdXBlcnNjcmlwdC5cbiAgICAgICAgdmFyIGZpbmFsR3JvdXAgPSB2b2lkIDA7XG4gICAgICAgIGlmIChzdXAgJiYgc3ViKSB7XG4gICAgICAgICAgICB2YXIgYm90dG9tID0gb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzUgKyBzdWIuZWxlbS5oZWlnaHQgKyBzdWIuZWxlbS5kZXB0aCArIHN1Yi5rZXJuICsgYmFzZS5kZXB0aCArIGJhc2VTaGlmdDtcblxuICAgICAgICAgICAgZmluYWxHcm91cCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlVkxpc3Qoe1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgICAgICAgICAgICBwb3NpdGlvbkRhdGE6IGJvdHRvbSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW3sgdHlwZTogXCJrZXJuXCIsIHNpemU6IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5iaWdPcFNwYWNpbmc1IH0sIHsgdHlwZTogXCJlbGVtXCIsIGVsZW06IHN1Yi5lbGVtLCBtYXJnaW5MZWZ0OiAtc2xhbnQgKyBcImVtXCIgfSwgeyB0eXBlOiBcImtlcm5cIiwgc2l6ZTogc3ViLmtlcm4gfSwgeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogYmFzZSB9LCB7IHR5cGU6IFwia2VyblwiLCBzaXplOiBzdXAua2VybiB9LCB7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBzdXAuZWxlbSwgbWFyZ2luTGVmdDogc2xhbnQgKyBcImVtXCIgfSwgeyB0eXBlOiBcImtlcm5cIiwgc2l6ZTogb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzUgfV1cbiAgICAgICAgICAgIH0sIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2UgaWYgKHN1Yikge1xuICAgICAgICAgICAgdmFyIHRvcCA9IGJhc2UuaGVpZ2h0IC0gYmFzZVNoaWZ0O1xuXG4gICAgICAgICAgICAvLyBTaGlmdCB0aGUgbGltaXRzIGJ5IHRoZSBzbGFudCBvZiB0aGUgc3ltYm9sLiBOb3RlXG4gICAgICAgICAgICAvLyB0aGF0IHdlIGFyZSBzdXBwb3NlZCB0byBzaGlmdCB0aGUgbGltaXRzIGJ5IDEvMiBvZiB0aGUgc2xhbnQsXG4gICAgICAgICAgICAvLyBidXQgc2luY2Ugd2UgYXJlIGNlbnRlcmluZyB0aGUgbGltaXRzIGFkZGluZyBhIGZ1bGwgc2xhbnQgb2ZcbiAgICAgICAgICAgIC8vIG1hcmdpbiB3aWxsIHNoaWZ0IGJ5IDEvMiB0aGF0LlxuICAgICAgICAgICAgZmluYWxHcm91cCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlVkxpc3Qoe1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogXCJ0b3BcIixcbiAgICAgICAgICAgICAgICBwb3NpdGlvbkRhdGE6IHRvcCxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW3sgdHlwZTogXCJrZXJuXCIsIHNpemU6IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5iaWdPcFNwYWNpbmc1IH0sIHsgdHlwZTogXCJlbGVtXCIsIGVsZW06IHN1Yi5lbGVtLCBtYXJnaW5MZWZ0OiAtc2xhbnQgKyBcImVtXCIgfSwgeyB0eXBlOiBcImtlcm5cIiwgc2l6ZTogc3ViLmtlcm4gfSwgeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogYmFzZSB9XVxuICAgICAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3VwKSB7XG4gICAgICAgICAgICB2YXIgX2JvdHRvbSA9IGJhc2UuZGVwdGggKyBiYXNlU2hpZnQ7XG5cbiAgICAgICAgICAgIGZpbmFsR3JvdXAgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVZMaXN0KHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblR5cGU6IFwiYm90dG9tXCIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb25EYXRhOiBfYm90dG9tLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogYmFzZSB9LCB7IHR5cGU6IFwia2VyblwiLCBzaXplOiBzdXAua2VybiB9LCB7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBzdXAuZWxlbSwgbWFyZ2luTGVmdDogc2xhbnQgKyBcImVtXCIgfSwgeyB0eXBlOiBcImtlcm5cIiwgc2l6ZTogb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzUgfV1cbiAgICAgICAgICAgIH0sIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVGhpcyBjYXNlIHByb2JhYmx5IHNob3VsZG4ndCBvY2N1ciAodGhpcyB3b3VsZCBtZWFuIHRoZVxuICAgICAgICAgICAgLy8gc3Vwc3ViIHdhcyBzZW5kaW5nIHVzIGEgZ3JvdXAgd2l0aCBubyBzdXBlcnNjcmlwdCBvclxuICAgICAgICAgICAgLy8gc3Vic2NyaXB0KSBidXQgYmUgc2FmZS5cbiAgICAgICAgICAgIHJldHVybiBiYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJtb3BcIiwgXCJvcC1saW1pdHNcIl0sIFtmaW5hbEdyb3VwXSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGJhc2VTaGlmdCkge1xuICAgICAgICAgICAgYmFzZS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcbiAgICAgICAgICAgIGJhc2Uuc3R5bGUudG9wID0gYmFzZVNoaWZ0ICsgXCJlbVwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfVxufTtcblxudmFyIG1hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSB2b2lkIDA7XG5cbiAgICAvLyBUT0RPKGVtaWx5KTogaGFuZGxlIGJpZyBvcGVyYXRvcnMgdXNpbmcgdGhlIGBsYXJnZW9wYCBhdHRyaWJ1dGVcblxuICAgIGlmIChncm91cC52YWx1ZS5zeW1ib2wpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIHN5bWJvbC4gSnVzdCBhZGQgdGhlIHN5bWJvbC5cbiAgICAgICAgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1vXCIsIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX2J1aWxkTWF0aE1MX19bXCJlXCIgLyogbWFrZVRleHQgKi9dKGdyb3VwLnZhbHVlLmJvZHksIGdyb3VwLm1vZGUpXSk7XG4gICAgfSBlbHNlIGlmIChncm91cC52YWx1ZS52YWx1ZSkge1xuICAgICAgICAvLyBUaGlzIGlzIGFuIG9wZXJhdG9yIHdpdGggY2hpbGRyZW4uIEFkZCB0aGVtLlxuICAgICAgICBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibW9cIiwgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19idWlsZE1hdGhNTF9fW1wiYVwiIC8qIGJ1aWxkRXhwcmVzc2lvbiAqL10oZ3JvdXAudmFsdWUudmFsdWUsIG9wdGlvbnMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGlzIGlzIGEgdGV4dCBvcGVyYXRvci4gQWRkIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBmcm9tIHRoZVxuICAgICAgICAvLyBvcGVyYXRvcidzIG5hbWUuXG4gICAgICAgIC8vIFRPRE8oZW1pbHkpOiBBZGQgYSBzcGFjZSBpbiB0aGUgbWlkZGxlIG9mIHNvbWUgb2YgdGhlc2VcbiAgICAgICAgLy8gb3BlcmF0b3JzLCBsaWtlIFxcbGltc3VwLlxuICAgICAgICBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibWlcIiwgW25ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5UZXh0Tm9kZShncm91cC52YWx1ZS5ib2R5LnNsaWNlKDEpKV0pO1xuXG4gICAgICAgIC8vIEFwcGVuZCBhbiA8bW8+JkFwcGx5RnVuY3Rpb247PC9tbz4uXG4gICAgICAgIC8vIHJlZjogaHR0cHM6Ly93d3cudzMub3JnL1RSL1JFQy1NYXRoTUwvY2hhcDNfMi5odG1sI3NlYzMuMi40XG4gICAgICAgIHZhciBvcGVyYXRvciA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1vXCIsIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX2J1aWxkTWF0aE1MX19bXCJlXCIgLyogbWFrZVRleHQgKi9dKFwiXFx1MjA2MVwiLCBcInRleHRcIildKTtcblxuICAgICAgICByZXR1cm4gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZG9tVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmRvY3VtZW50RnJhZ21lbnQoW25vZGUsIG9wZXJhdG9yXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG59O1xuXG52YXIgc2luZ2xlQ2hhckJpZ09wcyA9IHtcbiAgICBcIlxcdTIyMEZcIjogXCJcXFxccHJvZFwiLFxuICAgIFwiXFx1MjIxMFwiOiBcIlxcXFxjb3Byb2RcIixcbiAgICBcIlxcdTIyMTFcIjogXCJcXFxcc3VtXCIsXG4gICAgXCJcXHUyMkMwXCI6IFwiXFxcXGJpZ3dlZGdlXCIsXG4gICAgXCJcXHUyMkMxXCI6IFwiXFxcXGJpZ3ZlZVwiLFxuICAgIFwiXFx1MjJDMlwiOiBcIlxcXFxiaWdjYXBcIixcbiAgICBcIlxcdTIyQzNcIjogXCJcXFxcYmlnY2FwXCIsXG4gICAgXCJcXHUyQTAwXCI6IFwiXFxcXGJpZ29kb3RcIixcbiAgICBcIlxcdTJBMDFcIjogXCJcXFxcYmlnb3BsdXNcIixcbiAgICBcIlxcdTJBMDJcIjogXCJcXFxcYmlnb3RpbWVzXCIsXG4gICAgXCJcXHUyQTA0XCI6IFwiXFxcXGJpZ3VwbHVzXCIsXG4gICAgXCJcXHUyQTA2XCI6IFwiXFxcXGJpZ3NxY3VwXCJcbn07XG5cbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcIm9wXCIsXG4gICAgbmFtZXM6IFtcIlxcXFxjb3Byb2RcIiwgXCJcXFxcYmlndmVlXCIsIFwiXFxcXGJpZ3dlZGdlXCIsIFwiXFxcXGJpZ3VwbHVzXCIsIFwiXFxcXGJpZ2NhcFwiLCBcIlxcXFxiaWdjdXBcIiwgXCJcXFxcaW50b3BcIiwgXCJcXFxccHJvZFwiLCBcIlxcXFxzdW1cIiwgXCJcXFxcYmlnb3RpbWVzXCIsIFwiXFxcXGJpZ29wbHVzXCIsIFwiXFxcXGJpZ29kb3RcIiwgXCJcXFxcYmlnc3FjdXBcIiwgXCJcXFxcc21hbGxpbnRcIiwgXCJcXHUyMjBGXCIsIFwiXFx1MjIxMFwiLCBcIlxcdTIyMTFcIiwgXCJcXHUyMkMwXCIsIFwiXFx1MjJDMVwiLCBcIlxcdTIyQzJcIiwgXCJcXHUyMkMzXCIsIFwiXFx1MkEwMFwiLCBcIlxcdTJBMDFcIiwgXCJcXHUyQTAyXCIsIFwiXFx1MkEwNFwiLCBcIlxcdTJBMDZcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMFxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHZhciBmTmFtZSA9IGNvbnRleHQuZnVuY05hbWU7XG4gICAgICAgIGlmIChmTmFtZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGZOYW1lID0gc2luZ2xlQ2hhckJpZ09wc1tmTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgICAgICAgIGxpbWl0czogdHJ1ZSxcbiAgICAgICAgICAgIHN5bWJvbDogdHJ1ZSxcbiAgICAgICAgICAgIGJvZHk6IGZOYW1lXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxufSk7XG5cbi8vIE5vdGU6IGNhbGxpbmcgZGVmaW5lRnVuY3Rpb24gd2l0aCBhIHR5cGUgdGhhdCdzIGFscmVhZHkgYmVlbiBkZWZpbmVkIG9ubHlcbi8vIHdvcmtzIGJlY2F1c2UgdGhlIHNhbWUgaHRtbEJ1aWxkZXIgYW5kIG1hdGhtbEJ1aWxkZXIgYXJlIGJlaW5nIHVzZWQuXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJvcFwiLFxuICAgIG5hbWVzOiBbXCJcXFxcbWF0aG9wXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDFcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgICAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9wXCIsXG4gICAgICAgICAgICBsaW1pdHM6IGZhbHNlLFxuICAgICAgICAgICAgc3ltYm9sOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiY1wiIC8qIG9yZGFyZ3VtZW50ICovXSkoYm9keSlcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBodG1sQnVpbGRlcixcbiAgICBtYXRobWxCdWlsZGVyOiBtYXRobWxCdWlsZGVyXG59KTtcblxuLyoqKi8gfSksXG4vKiAxMjcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19nZXRfaXRlcmF0b3JfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfZ2V0X2l0ZXJhdG9yX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RlZmluZUZ1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fYnVpbGRDb21tb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXRoTUxUcmVlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fZG9tVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19idWlsZEhUTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19idWlsZE1hdGhNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuXG5cblxuXG5cblxuXG5cbi8vIFxcb3BlcmF0b3JuYW1lXG4vLyBhbXNvcG4uZHR4OiBcXG1hdGhvcHsjMVxca2VyblxcekBcXG9wZXJhdG9yQGZvbnQjM31cXG5ld21jb2Rlc0Bcbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcIm9wZXJhdG9ybmFtZVwiLFxuICAgIG5hbWVzOiBbXCJcXFxcb3BlcmF0b3JuYW1lXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDFcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgICAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9wZXJhdG9ybmFtZVwiLFxuICAgICAgICAgICAgdmFsdWU6IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RlZmluZUZ1bmN0aW9uX19bXCJjXCIgLyogb3JkYXJndW1lbnQgKi9dKShib2R5KVxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9IFtdO1xuICAgICAgICBpZiAoZ3JvdXAudmFsdWUudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyIGxldHRlciA9IFwiXCI7XG4gICAgICAgICAgICB2YXIgbW9kZSA9IFwiXCI7XG5cbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIF9pdGVyYXRvckVycm9yID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfZ2V0X2l0ZXJhdG9yX19fZGVmYXVsdCgpKGdyb3VwLnZhbHVlLnZhbHVlKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBfc3RlcC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgYW1zb3BuIHBhY2thZ2UsIFxcbmV3bWNvZGVzQCBjaGFuZ2VzIGZvdXJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycywgKi0vOuKAmSwgZnJvbSBtYXRoIG9wZXJhdG9ycyBiYWNrIGludG8gdGV4dC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFwiKi0vOlwiLmluZGV4T2YoY2hpbGQudmFsdWUpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQudHlwZSA9IFwidGV4dG9yZFwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gQ29uc29saWRhdGUgR3JlZWsgbGV0dGVyIGZ1bmN0aW9uIG5hbWVzIGludG8gc3ltYm9sIGNoYXJhY3RlcnMuXG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3IgPSBlcnI7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiAmJiBfaXRlcmF0b3IucmV0dXJuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IucmV0dXJuKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdGVtcCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRIVE1MX19bXCJhXCIgLyogYnVpbGRFeHByZXNzaW9uICovXShncm91cC52YWx1ZS52YWx1ZSwgb3B0aW9ucy53aXRoRm9udEZhbWlseShcIm1hdGhybVwiKSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIC8vIEFsbCB3ZSB3YW50IGZyb20gdGVtcCBhcmUgdGhlIGxldHRlcnMuIFdpdGggdGhlbSwgd2UnbGxcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBhIHRleHQgb3BlcmF0b3Igc2ltaWxhciB0byBcXHRhbiBvciBcXGNvcy5cbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fX2RlZmF1bHQoKSh0ZW1wKSwgX3N0ZXAyOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gKF9zdGVwMiA9IF9pdGVyYXRvcjIubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfY2hpbGQgPSBfc3RlcDIudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jaGlsZCBpbnN0YW5jZW9mIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fZG9tVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnN5bWJvbE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldHRlciA9IF9jaGlsZC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGFtc29wbiBwYWNrYWdlLCBcXG5ld21jb2Rlc0AgY2hhbmdlcyBmb3VyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzLCAqLS864oCZLCBmcm9tIG1hdGggb3BlcmF0b3JzIGJhY2sgaW50byB0ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2l2ZW4gd2hhdCBpcyBpbiB0ZW1wLCB3ZSBoYXZlIHRvIGFkZHJlc3MgdHdvIG9mIHRoZW0uXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXR0ZXIgPSBsZXR0ZXIucmVwbGFjZSgvXFx1MjIxMi8sIFwiLVwiKTsgLy8gbWludXMgPT4gaHlwaGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXR0ZXIgPSBsZXR0ZXIucmVwbGFjZSgvXFx1MjIxNy8sIFwiKlwiKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlIG1hdGggbW9kZSBmb3IgR3JlZWsgbGV0dGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IC9bXFx1MDM5MS1cXHUwM0Q3XS8udGVzdChsZXR0ZXIpID8gXCJtYXRoXCIgOiBcInRleHRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYXRoc3ltKGxldHRlciwgbW9kZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1c2goX2NoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMiA9IHRydWU7XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3IyID0gZXJyO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yICYmIF9pdGVyYXRvcjIucmV0dXJuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLnJldHVybigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wibW9wXCJdLCBvdXRwdXQsIG9wdGlvbnMpO1xuICAgIH0sXG5cbiAgICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIC8vIFRoZSBzdGVwcyB0YWtlbiBoZXJlIGFyZSBzaW1pbGFyIHRvIHRoZSBodG1sIHZlcnNpb24uXG4gICAgICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICAgICAgaWYgKGdyb3VwLnZhbHVlLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHZhciB0ZW1wID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19idWlsZE1hdGhNTF9fW1wiYVwiIC8qIGJ1aWxkRXhwcmVzc2lvbiAqL10oZ3JvdXAudmFsdWUudmFsdWUsIG9wdGlvbnMud2l0aEZvbnRGYW1pbHkoXCJtYXRocm1cIikpO1xuXG4gICAgICAgICAgICB2YXIgd29yZCA9IHRlbXAubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudG9UZXh0KCk7XG4gICAgICAgICAgICB9KS5qb2luKFwiXCIpO1xuXG4gICAgICAgICAgICB3b3JkID0gd29yZC5yZXBsYWNlKC9cXHUyMjEyL2csIFwiLVwiKTtcbiAgICAgICAgICAgIHdvcmQgPSB3b3JkLnJlcGxhY2UoL1xcdTIyMTcvZywgXCIqXCIpO1xuICAgICAgICAgICAgb3V0cHV0ID0gW25ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5UZXh0Tm9kZSh3b3JkKV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlkZW50aWZpZXIgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtaVwiLCBvdXRwdXQpO1xuICAgICAgICBpZGVudGlmaWVyLnNldEF0dHJpYnV0ZShcIm1hdGh2YXJpYW50XCIsIFwibm9ybWFsXCIpO1xuXG4gICAgICAgIC8vIFxcdTIwNjEgaXMgdGhlIHNhbWUgYXMgJkFwcGx5RnVuY3Rpb247XG4gICAgICAgIC8vIHJlZjogaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9jaGFyc2V0cy9yZWZfaHRtbF9lbnRpdGllc19hLmFzcFxuICAgICAgICB2YXIgb3BlcmF0b3IgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb1wiLCBbX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19idWlsZE1hdGhNTF9fW1wiZVwiIC8qIG1ha2VUZXh0ICovXShcIlxcdTIwNjFcIiwgXCJ0ZXh0XCIpXSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2RvbVRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5kb2N1bWVudEZyYWdtZW50KFtpZGVudGlmaWVyLCBvcGVyYXRvcl0pO1xuICAgIH1cbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEyOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kZWxpbWl0ZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fbWF0aE1MVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1N0eWxlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRIVE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fYnVpbGRNYXRoTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cblxuXG5cblxuXG5cblxuXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJnZW5mcmFjXCIsXG4gICAgbmFtZXM6IFtcIlxcXFxkZnJhY1wiLCBcIlxcXFxmcmFjXCIsIFwiXFxcXHRmcmFjXCIsIFwiXFxcXGRiaW5vbVwiLCBcIlxcXFxiaW5vbVwiLCBcIlxcXFx0Ymlub21cIiwgXCJcXFxcXFxcXGF0b3BmcmFjXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDIsXG4gICAgICAgIGdyZWVkaW5lc3M6IDJcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgICAgICB2YXIgbnVtZXIgPSBhcmdzWzBdO1xuICAgICAgICB2YXIgZGVub20gPSBhcmdzWzFdO1xuICAgICAgICB2YXIgaGFzQmFyTGluZSA9IHZvaWQgMDtcbiAgICAgICAgdmFyIGxlZnREZWxpbSA9IG51bGw7XG4gICAgICAgIHZhciByaWdodERlbGltID0gbnVsbDtcbiAgICAgICAgdmFyIHNpemUgPSBcImF1dG9cIjtcblxuICAgICAgICBzd2l0Y2ggKGNvbnRleHQuZnVuY05hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJcXFxcZGZyYWNcIjpcbiAgICAgICAgICAgIGNhc2UgXCJcXFxcZnJhY1wiOlxuICAgICAgICAgICAgY2FzZSBcIlxcXFx0ZnJhY1wiOlxuICAgICAgICAgICAgICAgIGhhc0JhckxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIlxcXFxcXFxcYXRvcGZyYWNcIjpcbiAgICAgICAgICAgICAgICBoYXNCYXJMaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiXFxcXGRiaW5vbVwiOlxuICAgICAgICAgICAgY2FzZSBcIlxcXFxiaW5vbVwiOlxuICAgICAgICAgICAgY2FzZSBcIlxcXFx0Ymlub21cIjpcbiAgICAgICAgICAgICAgICBoYXNCYXJMaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbGVmdERlbGltID0gXCIoXCI7XG4gICAgICAgICAgICAgICAgcmlnaHREZWxpbSA9IFwiKVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgZ2VuZnJhYyBjb21tYW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChjb250ZXh0LmZ1bmNOYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFwiXFxcXGRmcmFjXCI6XG4gICAgICAgICAgICBjYXNlIFwiXFxcXGRiaW5vbVwiOlxuICAgICAgICAgICAgICAgIHNpemUgPSBcImRpc3BsYXlcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJcXFxcdGZyYWNcIjpcbiAgICAgICAgICAgIGNhc2UgXCJcXFxcdGJpbm9tXCI6XG4gICAgICAgICAgICAgICAgc2l6ZSA9IFwidGV4dFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwiZ2VuZnJhY1wiLFxuICAgICAgICAgICAgbnVtZXI6IG51bWVyLFxuICAgICAgICAgICAgZGVub206IGRlbm9tLFxuICAgICAgICAgICAgaGFzQmFyTGluZTogaGFzQmFyTGluZSxcbiAgICAgICAgICAgIGxlZnREZWxpbTogbGVmdERlbGltLFxuICAgICAgICAgICAgcmlnaHREZWxpbTogcmlnaHREZWxpbSxcbiAgICAgICAgICAgIHNpemU6IHNpemVcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICAvLyBGcmFjdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgb24gcGFnZXMgNDQ0LTQ0NSwgcnVsZXMgMTUoYS1lKS5cbiAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHN0eWxlIHRoaXMgZnJhY3Rpb24gc2hvdWxkIGJlIGluIGJhc2VkIG9uIHRoZVxuICAgICAgICAvLyBmdW5jdGlvbiB1c2VkXG4gICAgICAgIHZhciBzdHlsZSA9IG9wdGlvbnMuc3R5bGU7XG4gICAgICAgIGlmIChncm91cC52YWx1ZS5zaXplID09PSBcImRpc3BsYXlcIikge1xuICAgICAgICAgICAgc3R5bGUgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uRElTUExBWTtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cC52YWx1ZS5zaXplID09PSBcInRleHRcIikge1xuICAgICAgICAgICAgc3R5bGUgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uVEVYVDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuc3R5bGUgPSBzdHlsZS5mcmFjTnVtKCk7XG4gICAgICAgIHZhciBkc3R5bGUgPSBzdHlsZS5mcmFjRGVuKCk7XG4gICAgICAgIHZhciBuZXdPcHRpb25zID0gdm9pZCAwO1xuXG4gICAgICAgIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG5zdHlsZSk7XG4gICAgICAgIHZhciBudW1lcm0gPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2J1aWxkSFRNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKGdyb3VwLnZhbHVlLm51bWVyLCBuZXdPcHRpb25zLCBvcHRpb25zKTtcblxuICAgICAgICBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShkc3R5bGUpO1xuICAgICAgICB2YXIgZGVub21tID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19idWlsZEhUTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShncm91cC52YWx1ZS5kZW5vbSwgbmV3T3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgdmFyIHJ1bGUgPSB2b2lkIDA7XG4gICAgICAgIHZhciBydWxlV2lkdGggPSB2b2lkIDA7XG4gICAgICAgIHZhciBydWxlU3BhY2luZyA9IHZvaWQgMDtcbiAgICAgICAgaWYgKGdyb3VwLnZhbHVlLmhhc0JhckxpbmUpIHtcbiAgICAgICAgICAgIHJ1bGUgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZUxpbmVTcGFuKFwiZnJhYy1saW5lXCIsIG9wdGlvbnMpO1xuICAgICAgICAgICAgcnVsZVdpZHRoID0gcnVsZS5oZWlnaHQ7XG4gICAgICAgICAgICBydWxlU3BhY2luZyA9IHJ1bGUuaGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcnVsZSA9IG51bGw7XG4gICAgICAgICAgICBydWxlV2lkdGggPSAwO1xuICAgICAgICAgICAgcnVsZVNwYWNpbmcgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVmYXVsdFJ1bGVUaGlja25lc3M7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSdWxlIDE1YlxuICAgICAgICB2YXIgbnVtU2hpZnQgPSB2b2lkIDA7XG4gICAgICAgIHZhciBjbGVhcmFuY2UgPSB2b2lkIDA7XG4gICAgICAgIHZhciBkZW5vbVNoaWZ0ID0gdm9pZCAwO1xuICAgICAgICBpZiAoc3R5bGUuc2l6ZSA9PT0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLkRJU1BMQVkuc2l6ZSkge1xuICAgICAgICAgICAgbnVtU2hpZnQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkubnVtMTtcbiAgICAgICAgICAgIGlmIChydWxlV2lkdGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJhbmNlID0gMyAqIHJ1bGVTcGFjaW5nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjbGVhcmFuY2UgPSA3ICogcnVsZVNwYWNpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZW5vbVNoaWZ0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRlbm9tMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChydWxlV2lkdGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbnVtU2hpZnQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkubnVtMjtcbiAgICAgICAgICAgICAgICBjbGVhcmFuY2UgPSBydWxlU3BhY2luZztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbnVtU2hpZnQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkubnVtMztcbiAgICAgICAgICAgICAgICBjbGVhcmFuY2UgPSAzICogcnVsZVNwYWNpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZW5vbVNoaWZ0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRlbm9tMjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBmcmFjID0gdm9pZCAwO1xuICAgICAgICBpZiAoIXJ1bGUpIHtcbiAgICAgICAgICAgIC8vIFJ1bGUgMTVjXG4gICAgICAgICAgICB2YXIgY2FuZGlkYXRlQ2xlYXJhbmNlID0gbnVtU2hpZnQgLSBudW1lcm0uZGVwdGggLSAoZGVub21tLmhlaWdodCAtIGRlbm9tU2hpZnQpO1xuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUNsZWFyYW5jZSA8IGNsZWFyYW5jZSkge1xuICAgICAgICAgICAgICAgIG51bVNoaWZ0ICs9IDAuNSAqIChjbGVhcmFuY2UgLSBjYW5kaWRhdGVDbGVhcmFuY2UpO1xuICAgICAgICAgICAgICAgIGRlbm9tU2hpZnQgKz0gMC41ICogKGNsZWFyYW5jZSAtIGNhbmRpZGF0ZUNsZWFyYW5jZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZyYWMgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVZMaXN0KHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFt7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBkZW5vbW0sIHNoaWZ0OiBkZW5vbVNoaWZ0IH0sIHsgdHlwZTogXCJlbGVtXCIsIGVsZW06IG51bWVybSwgc2hpZnQ6IC1udW1TaGlmdCB9XVxuICAgICAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBSdWxlIDE1ZFxuICAgICAgICAgICAgdmFyIGF4aXNIZWlnaHQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDtcblxuICAgICAgICAgICAgaWYgKG51bVNoaWZ0IC0gbnVtZXJtLmRlcHRoIC0gKGF4aXNIZWlnaHQgKyAwLjUgKiBydWxlV2lkdGgpIDwgY2xlYXJhbmNlKSB7XG4gICAgICAgICAgICAgICAgbnVtU2hpZnQgKz0gY2xlYXJhbmNlIC0gKG51bVNoaWZ0IC0gbnVtZXJtLmRlcHRoIC0gKGF4aXNIZWlnaHQgKyAwLjUgKiBydWxlV2lkdGgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGF4aXNIZWlnaHQgLSAwLjUgKiBydWxlV2lkdGggLSAoZGVub21tLmhlaWdodCAtIGRlbm9tU2hpZnQpIDwgY2xlYXJhbmNlKSB7XG4gICAgICAgICAgICAgICAgZGVub21TaGlmdCArPSBjbGVhcmFuY2UgLSAoYXhpc0hlaWdodCAtIDAuNSAqIHJ1bGVXaWR0aCAtIChkZW5vbW0uaGVpZ2h0IC0gZGVub21TaGlmdCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgbWlkU2hpZnQgPSAtKGF4aXNIZWlnaHQgLSAwLjUgKiBydWxlV2lkdGgpO1xuXG4gICAgICAgICAgICBmcmFjID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWTGlzdCh7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogZGVub21tLCBzaGlmdDogZGVub21TaGlmdCB9LFxuICAgICAgICAgICAgICAgIC8vIFRoZSBuZXh0IGxpbmUgd291bGQgb3JkaW5hcmlseSBjb250YWluIFwic2hpZnQ6IG1pZFNoaWZ0XCIuXG4gICAgICAgICAgICAgICAgLy8gQnV0IHdlIHB1dCB0aGUgcnVsZSBpbnRvIGEgYSBzcGFuIHRoYXQgaXMgNSBydWxlcyB0YWxsLFxuICAgICAgICAgICAgICAgIC8vIHRvIG92ZXJjb21lIGEgQ2hyb21lIHJlbmRlcmluZyBpc3N1ZS4gUHV0IGFub3RoZXIgd2F5LFxuICAgICAgICAgICAgICAgIC8vIHdlJ3ZlIHJlcGxhY2VkIGEga2VybiBvZiB3aWR0aCA9IDIgKiBydWxlV2lkdGggd2l0aCBhXG4gICAgICAgICAgICAgICAgLy8gYm90dG9tIHBhZGRpbmcgaW5zaWRlIHRoZSBTVkcgPSAyICogcnVsZVdpZHRoLlxuICAgICAgICAgICAgICAgIHsgdHlwZTogXCJlbGVtXCIsIGVsZW06IHJ1bGUsIHNoaWZ0OiBtaWRTaGlmdCArIDIgKiBydWxlV2lkdGggfSwgeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogbnVtZXJtLCBzaGlmdDogLW51bVNoaWZ0IH1dXG4gICAgICAgICAgICB9LCBvcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpbmNlIHdlIG1hbnVhbGx5IGNoYW5nZSB0aGUgc3R5bGUgc29tZXRpbWVzICh3aXRoIFxcZGZyYWMgb3IgXFx0ZnJhYyksXG4gICAgICAgIC8vIGFjY291bnQgZm9yIHRoZSBwb3NzaWJsZSBzaXplIGNoYW5nZSBoZXJlLlxuICAgICAgICBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZSk7XG4gICAgICAgIGZyYWMuaGVpZ2h0ICo9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgICAgICBmcmFjLmRlcHRoICo9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuXG4gICAgICAgIC8vIFJ1bGUgMTVlXG4gICAgICAgIHZhciBkZWxpbVNpemUgPSB2b2lkIDA7XG4gICAgICAgIGlmIChzdHlsZS5zaXplID09PSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uRElTUExBWS5zaXplKSB7XG4gICAgICAgICAgICBkZWxpbVNpemUgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVsaW0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVsaW1TaXplID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRlbGltMjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBsZWZ0RGVsaW0gPSB2b2lkIDA7XG4gICAgICAgIHZhciByaWdodERlbGltID0gdm9pZCAwO1xuICAgICAgICBpZiAoZ3JvdXAudmFsdWUubGVmdERlbGltID09IG51bGwpIHtcbiAgICAgICAgICAgIGxlZnREZWxpbSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRIVE1MX19bXCJlXCIgLyogbWFrZU51bGxEZWxpbWl0ZXIgKi9dKG9wdGlvbnMsIFtcIm1vcGVuXCJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxlZnREZWxpbSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZGVsaW1pdGVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10uY3VzdG9tU2l6ZWREZWxpbShncm91cC52YWx1ZS5sZWZ0RGVsaW0sIGRlbGltU2l6ZSwgdHJ1ZSwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZSksIGdyb3VwLm1vZGUsIFtcIm1vcGVuXCJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ3JvdXAudmFsdWUucmlnaHREZWxpbSA9PSBudWxsKSB7XG4gICAgICAgICAgICByaWdodERlbGltID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19idWlsZEhUTUxfX1tcImVcIiAvKiBtYWtlTnVsbERlbGltaXRlciAqL10ob3B0aW9ucywgW1wibWNsb3NlXCJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJpZ2h0RGVsaW0gPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2RlbGltaXRlcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmN1c3RvbVNpemVkRGVsaW0oZ3JvdXAudmFsdWUucmlnaHREZWxpbSwgZGVsaW1TaXplLCB0cnVlLCBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlKSwgZ3JvdXAubW9kZSwgW1wibWNsb3NlXCJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wibW9yZFwiXS5jb25jYXQobmV3T3B0aW9ucy5zaXppbmdDbGFzc2VzKG9wdGlvbnMpKSwgW2xlZnREZWxpbSwgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1mcmFjXCJdLCBbZnJhY10pLCByaWdodERlbGltXSwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibWZyYWNcIiwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fYnVpbGRNYXRoTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShncm91cC52YWx1ZS5udW1lciwgb3B0aW9ucyksIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fYnVpbGRNYXRoTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShncm91cC52YWx1ZS5kZW5vbSwgb3B0aW9ucyldKTtcblxuICAgICAgICBpZiAoIWdyb3VwLnZhbHVlLmhhc0JhckxpbmUpIHtcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibGluZXRoaWNrbmVzc1wiLCBcIjBweFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChncm91cC52YWx1ZS5sZWZ0RGVsaW0gIT0gbnVsbCB8fCBncm91cC52YWx1ZS5yaWdodERlbGltICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhciB3aXRoRGVsaW1zID0gW107XG5cbiAgICAgICAgICAgIGlmIChncm91cC52YWx1ZS5sZWZ0RGVsaW0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHZhciBsZWZ0T3AgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb1wiLCBbbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlRleHROb2RlKGdyb3VwLnZhbHVlLmxlZnREZWxpbSldKTtcblxuICAgICAgICAgICAgICAgIGxlZnRPcC5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcInRydWVcIik7XG5cbiAgICAgICAgICAgICAgICB3aXRoRGVsaW1zLnB1c2gobGVmdE9wKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2l0aERlbGltcy5wdXNoKG5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZ3JvdXAudmFsdWUucmlnaHREZWxpbSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJpZ2h0T3AgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb1wiLCBbbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlRleHROb2RlKGdyb3VwLnZhbHVlLnJpZ2h0RGVsaW0pXSk7XG5cbiAgICAgICAgICAgICAgICByaWdodE9wLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcblxuICAgICAgICAgICAgICAgIHdpdGhEZWxpbXMucHVzaChyaWdodE9wKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG91dGVyTm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1yb3dcIiwgd2l0aERlbGltcyk7XG5cbiAgICAgICAgICAgIHJldHVybiBvdXRlck5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMjkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkSFRNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG4vLyBIb3Jpem9udGFsIG92ZXJsYXAgZnVuY3Rpb25zXG5cblxuXG5cblxuXG5cbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcImxhcFwiLFxuICAgIG5hbWVzOiBbXCJcXFxcbWF0aGxsYXBcIiwgXCJcXFxcbWF0aHJsYXBcIiwgXCJcXFxcbWF0aGNsYXBcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMSxcbiAgICAgICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwibGFwXCIsXG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGNvbnRleHQuZnVuY05hbWUuc2xpY2UoNSksXG4gICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgIH07XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgLy8gbWF0aGxsYXAsIG1hdGhybGFwLCBtYXRoY2xhcFxuICAgICAgICB2YXIgaW5uZXIgPSB2b2lkIDA7XG4gICAgICAgIGlmIChncm91cC52YWx1ZS5hbGlnbm1lbnQgPT09IFwiY2xhcFwiKSB7XG4gICAgICAgICAgICAvLyByZWY6IGh0dHBzOi8vd3d3Lm1hdGgubHN1LmVkdS9+YXBlcmxpcy9wdWJsaWNhdGlvbnMvbWF0aGNsYXAvXG4gICAgICAgICAgICBpbm5lciA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXSwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYnVpbGRIVE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucyldKTtcbiAgICAgICAgICAgIC8vIHdyYXAsIHNpbmNlIENTUyB3aWxsIGNlbnRlciBhIC5jbGFwID4gLmlubmVyID4gc3BhblxuICAgICAgICAgICAgaW5uZXIgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wiaW5uZXJcIl0sIFtpbm5lcl0sIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5uZXIgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wiaW5uZXJcIl0sIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkSFRNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKGdyb3VwLnZhbHVlLmJvZHksIG9wdGlvbnMpXSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZpeCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJmaXhcIl0sIFtdKTtcbiAgICAgICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJtb3JkXCIsIGdyb3VwLnZhbHVlLmFsaWdubWVudF0sIFtpbm5lciwgZml4XSwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIC8vIG1hdGhsbGFwLCBtYXRocmxhcCwgbWF0aGNsYXBcbiAgICAgICAgdmFyIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtcGFkZGVkXCIsIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucyldKTtcblxuICAgICAgICBpZiAoZ3JvdXAudmFsdWUuYWxpZ25tZW50ICE9PSBcInJsYXBcIikge1xuICAgICAgICAgICAgdmFyIG9mZnNldCA9IGdyb3VwLnZhbHVlLmFsaWdubWVudCA9PT0gXCJsbGFwXCIgPyBcIi0xXCIgOiBcIi0wLjVcIjtcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibHNwYWNlXCIsIG9mZnNldCArIFwid2lkdGhcIik7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIjBweFwiKTtcblxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMzAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkSFRNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG4vLyBzbWFzaCwgd2l0aCBvcHRpb25hbCBbdGJdLCBhcyBpbiBBTVNcblxuXG5cblxuXG5cblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwic21hc2hcIixcbiAgICBuYW1lczogW1wiXFxcXHNtYXNoXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDEsXG4gICAgICAgIG51bU9wdGlvbmFsQXJnczogMSxcbiAgICAgICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgICAgIHZhciBzbWFzaEhlaWdodCA9IGZhbHNlO1xuICAgICAgICB2YXIgc21hc2hEZXB0aCA9IGZhbHNlO1xuICAgICAgICB2YXIgdGJBcmcgPSBvcHRBcmdzWzBdO1xuICAgICAgICBpZiAodGJBcmcpIHtcbiAgICAgICAgICAgIC8vIE9wdGlvbmFsIFt0Yl0gYXJndW1lbnQgaXMgZW5nYWdlZC5cbiAgICAgICAgICAgIC8vIHJlZjogYW1zbWF0aDogXFxyZW5ld2NvbW1hbmR7XFxzbWFzaH1bMV1bdGJdeyVcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgZGVmXFxtYkB0e1xcaHR9XFxkZWZcXG1iQGJ7XFxkcH1cXGRlZlxcbWJAdGJ7XFxodFxcekBcXHpAXFxkcH0lXG4gICAgICAgICAgICB2YXIgbGV0dGVyID0gXCJcIjtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGJBcmcudmFsdWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBsZXR0ZXIgPSB0YkFyZy52YWx1ZVtpXS52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAobGV0dGVyID09PSBcInRcIikge1xuICAgICAgICAgICAgICAgICAgICBzbWFzaEhlaWdodCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09IFwiYlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHNtYXNoRGVwdGggPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNtYXNoSGVpZ2h0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHNtYXNoRGVwdGggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc21hc2hIZWlnaHQgPSB0cnVlO1xuICAgICAgICAgICAgc21hc2hEZXB0aCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcInNtYXNoXCIsXG4gICAgICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICAgICAgc21hc2hIZWlnaHQ6IHNtYXNoSGVpZ2h0LFxuICAgICAgICAgICAgc21hc2hEZXB0aDogc21hc2hEZXB0aFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBub2RlID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkSFRNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKGdyb3VwLnZhbHVlLmJvZHksIG9wdGlvbnMpXSk7XG5cbiAgICAgICAgaWYgKCFncm91cC52YWx1ZS5zbWFzaEhlaWdodCAmJiAhZ3JvdXAudmFsdWUuc21hc2hEZXB0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZ3JvdXAudmFsdWUuc21hc2hIZWlnaHQpIHtcbiAgICAgICAgICAgIG5vZGUuaGVpZ2h0ID0gMDtcbiAgICAgICAgICAgIC8vIEluIG9yZGVyIHRvIGluZmx1ZW5jZSBtYWtlVkxpc3QsIHdlIGhhdmUgdG8gcmVzZXQgdGhlIGNoaWxkcmVuLlxuICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbltpXS5oZWlnaHQgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChncm91cC52YWx1ZS5zbWFzaERlcHRoKSB7XG4gICAgICAgICAgICBub2RlLmRlcHRoID0gMDtcbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW5bX2ldLmRlcHRoID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSd2ZSByZXNldCB0aGUgVGVYLWxpa2UgaGVpZ2h0IGFuZCBkZXB0aCB2YWx1ZXMuXG4gICAgICAgIC8vIEJ1dCB0aGUgc3BhbiBzdGlsbCBoYXMgYW4gSFRNTCBsaW5lIGhlaWdodC5cbiAgICAgICAgLy8gbWFrZVZMaXN0IGFwcGxpZXMgXCJkaXNwbGF5OiB0YWJsZS1jZWxsXCIsIHdoaWNoIHByZXZlbnRzIHRoZSBicm93c2VyXG4gICAgICAgIC8vIGZyb20gYWN0aW5nIG9uIHRoYXQgbGluZSBoZWlnaHQuIFNvIHdlJ2xsIGNhbGwgbWFrZVZMaXN0IG5vdy5cblxuICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWTGlzdCh7XG4gICAgICAgICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgICAgICAgY2hpbGRyZW46IFt7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBub2RlIH1dXG4gICAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICB2YXIgbm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRNYXRoTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShncm91cC52YWx1ZS5ib2R5LCBvcHRpb25zKV0pO1xuXG4gICAgICAgIGlmIChncm91cC52YWx1ZS5zbWFzaEhlaWdodCkge1xuICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgXCIwcHhcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZ3JvdXAudmFsdWUuc21hc2hEZXB0aCkge1xuICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkZXB0aFwiLCBcIjBweFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEzMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2J1aWxkQ29tbW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZGVmaW5lRnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kZWxpbWl0ZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fbWF0aE1MVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1BhcnNlRXJyb3JfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X191dGlsc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX2J1aWxkSFRNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG5cblxuXG5cblxuXG5cblxuXG4vLyBFeHRyYSBkYXRhIG5lZWRlZCBmb3IgdGhlIGRlbGltaXRlciBoYW5kbGVyIGRvd24gYmVsb3dcbnZhciBkZWxpbWl0ZXJTaXplcyA9IHtcbiAgICBcIlxcXFxiaWdsXCI6IHsgbWNsYXNzOiBcIm1vcGVuXCIsIHNpemU6IDEgfSxcbiAgICBcIlxcXFxCaWdsXCI6IHsgbWNsYXNzOiBcIm1vcGVuXCIsIHNpemU6IDIgfSxcbiAgICBcIlxcXFxiaWdnbFwiOiB7IG1jbGFzczogXCJtb3BlblwiLCBzaXplOiAzIH0sXG4gICAgXCJcXFxcQmlnZ2xcIjogeyBtY2xhc3M6IFwibW9wZW5cIiwgc2l6ZTogNCB9LFxuICAgIFwiXFxcXGJpZ3JcIjogeyBtY2xhc3M6IFwibWNsb3NlXCIsIHNpemU6IDEgfSxcbiAgICBcIlxcXFxCaWdyXCI6IHsgbWNsYXNzOiBcIm1jbG9zZVwiLCBzaXplOiAyIH0sXG4gICAgXCJcXFxcYmlnZ3JcIjogeyBtY2xhc3M6IFwibWNsb3NlXCIsIHNpemU6IDMgfSxcbiAgICBcIlxcXFxCaWdnclwiOiB7IG1jbGFzczogXCJtY2xvc2VcIiwgc2l6ZTogNCB9LFxuICAgIFwiXFxcXGJpZ21cIjogeyBtY2xhc3M6IFwibXJlbFwiLCBzaXplOiAxIH0sXG4gICAgXCJcXFxcQmlnbVwiOiB7IG1jbGFzczogXCJtcmVsXCIsIHNpemU6IDIgfSxcbiAgICBcIlxcXFxiaWdnbVwiOiB7IG1jbGFzczogXCJtcmVsXCIsIHNpemU6IDMgfSxcbiAgICBcIlxcXFxCaWdnbVwiOiB7IG1jbGFzczogXCJtcmVsXCIsIHNpemU6IDQgfSxcbiAgICBcIlxcXFxiaWdcIjogeyBtY2xhc3M6IFwibW9yZFwiLCBzaXplOiAxIH0sXG4gICAgXCJcXFxcQmlnXCI6IHsgbWNsYXNzOiBcIm1vcmRcIiwgc2l6ZTogMiB9LFxuICAgIFwiXFxcXGJpZ2dcIjogeyBtY2xhc3M6IFwibW9yZFwiLCBzaXplOiAzIH0sXG4gICAgXCJcXFxcQmlnZ1wiOiB7IG1jbGFzczogXCJtb3JkXCIsIHNpemU6IDQgfVxufTtcblxudmFyIGRlbGltaXRlcnMgPSBbXCIoXCIsIFwiKVwiLCBcIltcIiwgXCJcXFxcbGJyYWNrXCIsIFwiXVwiLCBcIlxcXFxyYnJhY2tcIiwgXCJcXFxce1wiLCBcIlxcXFxsYnJhY2VcIiwgXCJcXFxcfVwiLCBcIlxcXFxyYnJhY2VcIiwgXCJcXFxcbGZsb29yXCIsIFwiXFxcXHJmbG9vclwiLCBcIlxcXFxsY2VpbFwiLCBcIlxcXFxyY2VpbFwiLCBcIjxcIiwgXCI+XCIsIFwiXFxcXGxhbmdsZVwiLCBcIlxcdTI3RThcIiwgXCJcXFxccmFuZ2xlXCIsIFwiXFx1MjdFOVwiLCBcIlxcXFxsdFwiLCBcIlxcXFxndFwiLCBcIlxcXFxsdmVydFwiLCBcIlxcXFxydmVydFwiLCBcIlxcXFxsVmVydFwiLCBcIlxcXFxyVmVydFwiLCBcIlxcXFxsZ3JvdXBcIiwgXCJcXFxccmdyb3VwXCIsIFwiXFxcXGxtb3VzdGFjaGVcIiwgXCJcXFxccm1vdXN0YWNoZVwiLCBcIi9cIiwgXCJcXFxcYmFja3NsYXNoXCIsIFwifFwiLCBcIlxcXFx2ZXJ0XCIsIFwiXFxcXHxcIiwgXCJcXFxcVmVydFwiLCBcIlxcXFx1cGFycm93XCIsIFwiXFxcXFVwYXJyb3dcIiwgXCJcXFxcZG93bmFycm93XCIsIFwiXFxcXERvd25hcnJvd1wiLCBcIlxcXFx1cGRvd25hcnJvd1wiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCBcIi5cIl07XG5cbi8vIERlbGltaXRlciBmdW5jdGlvbnNcbmZ1bmN0aW9uIGNoZWNrRGVsaW1pdGVyKGRlbGltLCBjb250ZXh0KSB7XG4gICAgaWYgKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5jb250YWlucyhkZWxpbWl0ZXJzLCBkZWxpbS52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGRlbGltO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIkludmFsaWQgZGVsaW1pdGVyOiAnXCIgKyBkZWxpbS52YWx1ZSArIFwiJyBhZnRlciAnXCIgKyBjb250ZXh0LmZ1bmNOYW1lICsgXCInXCIsIGRlbGltKTtcbiAgICB9XG59XG5cbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcImRlbGltc2l6aW5nXCIsXG4gICAgbmFtZXM6IFtcIlxcXFxiaWdsXCIsIFwiXFxcXEJpZ2xcIiwgXCJcXFxcYmlnZ2xcIiwgXCJcXFxcQmlnZ2xcIiwgXCJcXFxcYmlnclwiLCBcIlxcXFxCaWdyXCIsIFwiXFxcXGJpZ2dyXCIsIFwiXFxcXEJpZ2dyXCIsIFwiXFxcXGJpZ21cIiwgXCJcXFxcQmlnbVwiLCBcIlxcXFxiaWdnbVwiLCBcIlxcXFxCaWdnbVwiLCBcIlxcXFxiaWdcIiwgXCJcXFxcQmlnXCIsIFwiXFxcXGJpZ2dcIiwgXCJcXFxcQmlnZ1wiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAxXG4gICAgfSxcbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICAgICAgdmFyIGRlbGltID0gY2hlY2tEZWxpbWl0ZXIoYXJnc1swXSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwiZGVsaW1zaXppbmdcIixcbiAgICAgICAgICAgIHNpemU6IGRlbGltaXRlclNpemVzW2NvbnRleHQuZnVuY05hbWVdLnNpemUsXG4gICAgICAgICAgICBtY2xhc3M6IGRlbGltaXRlclNpemVzW2NvbnRleHQuZnVuY05hbWVdLm1jbGFzcyxcbiAgICAgICAgICAgIHZhbHVlOiBkZWxpbS52YWx1ZVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBkZWxpbSA9IGdyb3VwLnZhbHVlLnZhbHVlO1xuXG4gICAgICAgIGlmIChkZWxpbSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICAgIC8vIEVtcHR5IGRlbGltaXRlcnMgc3RpbGwgY291bnQgYXMgZWxlbWVudHMsIGV2ZW4gdGhvdWdoIHRoZXkgZG9uJ3RcbiAgICAgICAgICAgIC8vIHNob3cgYW55dGhpbmcuXG4gICAgICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtncm91cC52YWx1ZS5tY2xhc3NdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZSBkZWxpbWl0ZXIuc2l6ZWREZWxpbSB0byBnZW5lcmF0ZSB0aGUgZGVsaW1pdGVyLlxuICAgICAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kZWxpbWl0ZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5zaXplZERlbGltKGRlbGltLCBncm91cC52YWx1ZS5zaXplLCBvcHRpb25zLCBncm91cC5tb2RlLCBbZ3JvdXAudmFsdWUubWNsYXNzXSk7XG4gICAgfSxcbiAgICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IFtdO1xuXG4gICAgICAgIGlmIChncm91cC52YWx1ZS52YWx1ZSAhPT0gXCIuXCIpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19idWlsZE1hdGhNTF9fW1wiZVwiIC8qIG1ha2VUZXh0ICovXShncm91cC52YWx1ZS52YWx1ZSwgZ3JvdXAubW9kZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb1wiLCBjaGlsZHJlbik7XG5cbiAgICAgICAgaWYgKGdyb3VwLnZhbHVlLm1jbGFzcyA9PT0gXCJtb3BlblwiIHx8IGdyb3VwLnZhbHVlLm1jbGFzcyA9PT0gXCJtY2xvc2VcIikge1xuICAgICAgICAgICAgLy8gT25seSBzb21lIG9mIHRoZSBkZWxpbXNpemluZyBmdW5jdGlvbnMgYWN0IGFzIGZlbmNlcywgYW5kIHRoZXlcbiAgICAgICAgICAgIC8vIHJldHVybiBcIm1vcGVuXCIgb3IgXCJtY2xvc2VcIiBtY2xhc3MuXG4gICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEV4cGxpY2l0bHkgZGlzYWJsZSBmZW5jaW5nIGlmIGl0J3Mgbm90IGEgZmVuY2UsIHRvIG92ZXJyaWRlIHRoZVxuICAgICAgICAgICAgLy8gZGVmYXVsdHMuXG4gICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwiZmFsc2VcIik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG59KTtcblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwibGVmdHJpZ2h0XCIsXG4gICAgbmFtZXM6IFtcIlxcXFxsZWZ0XCIsIFwiXFxcXHJpZ2h0XCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDFcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgICAgICB2YXIgZGVsaW0gPSBjaGVja0RlbGltaXRlcihhcmdzWzBdLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAoY29udGV4dC5mdW5jTmFtZSA9PT0gXCJcXFxcbGVmdFwiKSB7XG4gICAgICAgICAgICB2YXIgcGFyc2VyID0gY29udGV4dC5wYXJzZXI7XG4gICAgICAgICAgICAvLyBQYXJzZSBvdXQgdGhlIGltcGxpY2l0IGJvZHlcbiAgICAgICAgICAgICsrcGFyc2VyLmxlZnRyaWdodERlcHRoO1xuICAgICAgICAgICAgLy8gcGFyc2VFeHByZXNzaW9uIHN0b3BzIGJlZm9yZSAnXFxcXHJpZ2h0J1xuICAgICAgICAgICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKGZhbHNlKTtcbiAgICAgICAgICAgIC0tcGFyc2VyLmxlZnRyaWdodERlcHRoO1xuICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIG5leHQgdG9rZW5cbiAgICAgICAgICAgIHBhcnNlci5leHBlY3QoXCJcXFxccmlnaHRcIiwgZmFsc2UpO1xuICAgICAgICAgICAgdmFyIHJpZ2h0ID0gcGFyc2VyLnBhcnNlRnVuY3Rpb24oKTtcbiAgICAgICAgICAgIGlmICghcmlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oJ2ZhaWxlZCB0byBwYXJzZSBmdW5jdGlvbiBhZnRlciBcXFxccmlnaHQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJsZWZ0cmlnaHRcIixcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICAgICAgICAgIGxlZnQ6IGRlbGltLnZhbHVlLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiByaWdodC52YWx1ZS52YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBsaXR0bGUgd2VpcmQuIFdlIHJldHVybiB0aGlzIG9iamVjdCB3aGljaCBnZXRzIHR1cm5lZFxuICAgICAgICAgICAgLy8gaW50byBhIFBhcnNlTm9kZSB3aGljaCBnZXRzIHJldHVybmVkIGJ5XG4gICAgICAgICAgICAvLyBgY29uc3QgcmlnaHQgPSBwYXJzZXIucGFyc2VGdW5jdGlvbigpO2AgdXAgYWJvdmUuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwibGVmdHJpZ2h0XCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGRlbGltLnZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgLy8gQnVpbGQgdGhlIGlubmVyIGV4cHJlc3Npb25cbiAgICAgICAgdmFyIGlubmVyID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19idWlsZEhUTUxfX1tcImFcIiAvKiBidWlsZEV4cHJlc3Npb24gKi9dKGdyb3VwLnZhbHVlLmJvZHksIG9wdGlvbnMsIHRydWUsIFtudWxsLCBcIm1jbG9zZVwiXSk7XG5cbiAgICAgICAgdmFyIGlubmVySGVpZ2h0ID0gMDtcbiAgICAgICAgdmFyIGlubmVyRGVwdGggPSAwO1xuICAgICAgICB2YXIgaGFkTWlkZGxlID0gZmFsc2U7XG5cbiAgICAgICAgLy8gQ2FsY3VsYXRlIGl0cyBoZWlnaHQgYW5kIGRlcHRoXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChpbm5lcltpXS5pc01pZGRsZSkge1xuICAgICAgICAgICAgICAgIGhhZE1pZGRsZSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlubmVySGVpZ2h0ID0gTWF0aC5tYXgoaW5uZXJbaV0uaGVpZ2h0LCBpbm5lckhlaWdodCk7XG4gICAgICAgICAgICAgICAgaW5uZXJEZXB0aCA9IE1hdGgubWF4KGlubmVyW2ldLmRlcHRoLCBpbm5lckRlcHRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBzaXplIG9mIGRlbGltaXRlcnMgaXMgdGhlIHNhbWUsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBzdHlsZSB3ZSBhcmVcbiAgICAgICAgLy8gaW4uIFRodXMsIHRvIGNvcnJlY3RseSBjYWxjdWxhdGUgdGhlIHNpemUgb2YgZGVsaW1pdGVyIHdlIG5lZWQgYXJvdW5kXG4gICAgICAgIC8vIGEgZ3JvdXAsIHdlIHNjYWxlIGRvd24gdGhlIGlubmVyIHNpemUgYmFzZWQgb24gdGhlIHNpemUuXG4gICAgICAgIGlubmVySGVpZ2h0ICo9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgICAgIGlubmVyRGVwdGggKj0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcblxuICAgICAgICB2YXIgbGVmdERlbGltID0gdm9pZCAwO1xuICAgICAgICBpZiAoZ3JvdXAudmFsdWUubGVmdCA9PT0gXCIuXCIpIHtcbiAgICAgICAgICAgIC8vIEVtcHR5IGRlbGltaXRlcnMgaW4gXFxsZWZ0IGFuZCBcXHJpZ2h0IG1ha2UgbnVsbCBkZWxpbWl0ZXIgc3BhY2VzLlxuICAgICAgICAgICAgbGVmdERlbGltID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19idWlsZEhUTUxfX1tcImVcIiAvKiBtYWtlTnVsbERlbGltaXRlciAqL10ob3B0aW9ucywgW1wibW9wZW5cIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2UgbGVmdFJpZ2h0RGVsaW0gdG8gZ2VuZXJhdGUgdGhlIGNvcnJlY3Qgc2l6ZWRcbiAgICAgICAgICAgIC8vIGRlbGltaXRlci5cbiAgICAgICAgICAgIGxlZnREZWxpbSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZGVsaW1pdGVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubGVmdFJpZ2h0RGVsaW0oZ3JvdXAudmFsdWUubGVmdCwgaW5uZXJIZWlnaHQsIGlubmVyRGVwdGgsIG9wdGlvbnMsIGdyb3VwLm1vZGUsIFtcIm1vcGVuXCJdKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgaXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZXhwcmVzc2lvblxuICAgICAgICBpbm5lci51bnNoaWZ0KGxlZnREZWxpbSk7XG5cbiAgICAgICAgLy8gSGFuZGxlIG1pZGRsZSBkZWxpbWl0ZXJzXG4gICAgICAgIGlmIChoYWRNaWRkbGUpIHtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBpbm5lci5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgbWlkZGxlRGVsaW0gPSBpbm5lcltfaV07XG4gICAgICAgICAgICAgICAgaWYgKG1pZGRsZURlbGltLmlzTWlkZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBvcHRpb25zIHRoYXQgd2VyZSBhY3RpdmUgd2hlbiBcXG1pZGRsZSB3YXMgY2FsbGVkXG4gICAgICAgICAgICAgICAgICAgIGlubmVyW19pXSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZGVsaW1pdGVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubGVmdFJpZ2h0RGVsaW0obWlkZGxlRGVsaW0uaXNNaWRkbGUudmFsdWUsIGlubmVySGVpZ2h0LCBpbm5lckRlcHRoLCBtaWRkbGVEZWxpbS5pc01pZGRsZS5vcHRpb25zLCBncm91cC5tb2RlLCBbXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJpZ2h0RGVsaW0gPSB2b2lkIDA7XG4gICAgICAgIC8vIFNhbWUgZm9yIHRoZSByaWdodCBkZWxpbWl0ZXJcbiAgICAgICAgaWYgKGdyb3VwLnZhbHVlLnJpZ2h0ID09PSBcIi5cIikge1xuICAgICAgICAgICAgcmlnaHREZWxpbSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fYnVpbGRIVE1MX19bXCJlXCIgLyogbWFrZU51bGxEZWxpbWl0ZXIgKi9dKG9wdGlvbnMsIFtcIm1jbG9zZVwiXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByaWdodERlbGltID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kZWxpbWl0ZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5sZWZ0UmlnaHREZWxpbShncm91cC52YWx1ZS5yaWdodCwgaW5uZXJIZWlnaHQsIGlubmVyRGVwdGgsIG9wdGlvbnMsIGdyb3VwLm1vZGUsIFtcIm1jbG9zZVwiXSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIGl0IHRvIHRoZSBlbmQgb2YgdGhlIGV4cHJlc3Npb24uXG4gICAgICAgIGlubmVyLnB1c2gocmlnaHREZWxpbSk7XG5cbiAgICAgICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJtaW5uZXJcIl0sIGlubmVyLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIGlubmVyID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19idWlsZE1hdGhNTF9fW1wiYVwiIC8qIGJ1aWxkRXhwcmVzc2lvbiAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKGdyb3VwLnZhbHVlLmxlZnQgIT09IFwiLlwiKSB7XG4gICAgICAgICAgICB2YXIgbGVmdE5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb1wiLCBbX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19idWlsZE1hdGhNTF9fW1wiZVwiIC8qIG1ha2VUZXh0ICovXShncm91cC52YWx1ZS5sZWZ0LCBncm91cC5tb2RlKV0pO1xuXG4gICAgICAgICAgICBsZWZ0Tm9kZS5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcInRydWVcIik7XG5cbiAgICAgICAgICAgIGlubmVyLnVuc2hpZnQobGVmdE5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGdyb3VwLnZhbHVlLnJpZ2h0ICE9PSBcIi5cIikge1xuICAgICAgICAgICAgdmFyIHJpZ2h0Tm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1vXCIsIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX2J1aWxkTWF0aE1MX19bXCJlXCIgLyogbWFrZVRleHQgKi9dKGdyb3VwLnZhbHVlLnJpZ2h0LCBncm91cC5tb2RlKV0pO1xuXG4gICAgICAgICAgICByaWdodE5vZGUuc2V0QXR0cmlidXRlKFwiZmVuY2VcIiwgXCJ0cnVlXCIpO1xuXG4gICAgICAgICAgICBpbm5lci5wdXNoKHJpZ2h0Tm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb3V0ZXJOb2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXJvd1wiLCBpbm5lcik7XG5cbiAgICAgICAgcmV0dXJuIG91dGVyTm9kZTtcbiAgICB9XG59KTtcblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwibWlkZGxlXCIsXG4gICAgbmFtZXM6IFtcIlxcXFxtaWRkbGVcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMVxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHZhciBkZWxpbSA9IGNoZWNrRGVsaW1pdGVyKGFyZ3NbMF0sIGNvbnRleHQpO1xuICAgICAgICBpZiAoIWNvbnRleHQucGFyc2VyLmxlZnRyaWdodERlcHRoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJcXFxcbWlkZGxlIHdpdGhvdXQgcHJlY2VkaW5nIFxcXFxsZWZ0XCIsIGRlbGltKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcIm1pZGRsZVwiLFxuICAgICAgICAgICAgdmFsdWU6IGRlbGltLnZhbHVlXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIG1pZGRsZURlbGltID0gdm9pZCAwO1xuICAgICAgICBpZiAoZ3JvdXAudmFsdWUudmFsdWUgPT09IFwiLlwiKSB7XG4gICAgICAgICAgICBtaWRkbGVEZWxpbSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fYnVpbGRIVE1MX19bXCJlXCIgLyogbWFrZU51bGxEZWxpbWl0ZXIgKi9dKG9wdGlvbnMsIFtdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1pZGRsZURlbGltID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19kZWxpbWl0ZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5zaXplZERlbGltKGdyb3VwLnZhbHVlLnZhbHVlLCAxLCBvcHRpb25zLCBncm91cC5tb2RlLCBbXSk7XG4gICAgICAgICAgICBtaWRkbGVEZWxpbS5pc01pZGRsZSA9IHsgdmFsdWU6IGdyb3VwLnZhbHVlLnZhbHVlLCBvcHRpb25zOiBvcHRpb25zIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pZGRsZURlbGltO1xuICAgIH0sXG4gICAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICB2YXIgbWlkZGxlTm9kZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm1vXCIsIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX2J1aWxkTWF0aE1MX19bXCJlXCIgLyogbWFrZVRleHQgKi9dKGdyb3VwLnZhbHVlLm1pZGRsZSwgZ3JvdXAubW9kZSldKTtcbiAgICAgICAgbWlkZGxlTm9kZS5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcInRydWVcIik7XG4gICAgICAgIHJldHVybiBtaWRkbGVOb2RlO1xuICAgIH1cbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEzMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWF0aE1MVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX1N0eWxlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc2l6aW5nX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG5cblxuXG5cblxuXG52YXIgc3R5bGVNYXAgPSB7XG4gICAgXCJkaXNwbGF5XCI6IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5ESVNQTEFZLFxuICAgIFwidGV4dFwiOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uVEVYVCxcbiAgICBcInNjcmlwdFwiOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uU0NSSVBULFxuICAgIFwic2NyaXB0c2NyaXB0XCI6IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5TQ1JJUFRTQ1JJUFRcbn07XG5cbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcInN0eWxpbmdcIixcbiAgICBuYW1lczogW1wiXFxcXGRpc3BsYXlzdHlsZVwiLCBcIlxcXFx0ZXh0c3R5bGVcIiwgXCJcXFxcc2NyaXB0c3R5bGVcIiwgXCJcXFxcc2NyaXB0c2NyaXB0c3R5bGVcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMCxcbiAgICAgICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHZhciBicmVha09uVG9rZW5UZXh0ID0gY29udGV4dC5icmVha09uVG9rZW5UZXh0LFxuICAgICAgICAgICAgZnVuY05hbWUgPSBjb250ZXh0LmZ1bmNOYW1lLFxuICAgICAgICAgICAgcGFyc2VyID0gY29udGV4dC5wYXJzZXI7XG5cbiAgICAgICAgLy8gcGFyc2Ugb3V0IHRoZSBpbXBsaWNpdCBib2R5XG5cbiAgICAgICAgcGFyc2VyLmNvbnN1bWVTcGFjZXMoKTtcbiAgICAgICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKHRydWUsIGJyZWFrT25Ub2tlblRleHQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcInN0eWxpbmdcIixcbiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBzdHlsZSB0byB1c2UgYnkgcHVsbGluZyBvdXQgdGhlIHN0eWxlIGZyb21cbiAgICAgICAgICAgIC8vIHRoZSBmdW5jdGlvbiBuYW1lXG4gICAgICAgICAgICBzdHlsZTogZnVuY05hbWUuc2xpY2UoMSwgZnVuY05hbWUubGVuZ3RoIC0gNSksXG4gICAgICAgICAgICB2YWx1ZTogYm9keVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIC8vIFN0eWxlIGNoYW5nZXMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgb24gcGcuIDQ0MiwgUnVsZSAzLlxuICAgICAgICB2YXIgbmV3U3R5bGUgPSBzdHlsZU1hcFtncm91cC52YWx1ZS5zdHlsZV07XG4gICAgICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShuZXdTdHlsZSk7XG4gICAgICAgIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19zaXppbmdfX1tcImFcIiAvKiBzaXppbmdHcm91cCAqL10pKGdyb3VwLnZhbHVlLnZhbHVlLCBuZXdPcHRpb25zLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHN0eWxlIHdlJ3JlIGNoYW5naW5nIHRvLlxuICAgICAgICAvLyBUT0RPKGtldmluYik6IGRlZHVwZSB0aGlzIHdpdGggYnVpbGRIVE1MLmpzXG4gICAgICAgIC8vIFRoaXMgd2lsbCBiZSBlYXNpZXIgb2YgaGFuZGxpbmcgb2Ygc3R5bGluZyBub2RlcyBpcyBpbiB0aGUgc2FtZSBmaWxlLlxuICAgICAgICB2YXIgc3R5bGVNYXAgPSB7XG4gICAgICAgICAgICBcImRpc3BsYXlcIjogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLkRJU1BMQVksXG4gICAgICAgICAgICBcInRleHRcIjogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlRFWFQsXG4gICAgICAgICAgICBcInNjcmlwdFwiOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uU0NSSVBULFxuICAgICAgICAgICAgXCJzY3JpcHRzY3JpcHRcIjogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlNDUklQVFNDUklQVFxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBuZXdTdHlsZSA9IHN0eWxlTWFwW2dyb3VwLnZhbHVlLnN0eWxlXTtcbiAgICAgICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG5ld1N0eWxlKTtcblxuICAgICAgICB2YXIgaW5uZXIgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX19bXCJhXCIgLyogYnVpbGRFeHByZXNzaW9uICovXShncm91cC52YWx1ZS52YWx1ZSwgbmV3T3B0aW9ucyk7XG5cbiAgICAgICAgdmFyIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtc3R5bGVcIiwgaW5uZXIpO1xuXG4gICAgICAgIHZhciBzdHlsZUF0dHJpYnV0ZXMgPSB7XG4gICAgICAgICAgICBcImRpc3BsYXlcIjogW1wiMFwiLCBcInRydWVcIl0sXG4gICAgICAgICAgICBcInRleHRcIjogW1wiMFwiLCBcImZhbHNlXCJdLFxuICAgICAgICAgICAgXCJzY3JpcHRcIjogW1wiMVwiLCBcImZhbHNlXCJdLFxuICAgICAgICAgICAgXCJzY3JpcHRzY3JpcHRcIjogW1wiMlwiLCBcImZhbHNlXCJdXG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGF0dHIgPSBzdHlsZUF0dHJpYnV0ZXNbZ3JvdXAudmFsdWUuc3R5bGVdO1xuXG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic2NyaXB0bGV2ZWxcIiwgYXR0clswXSk7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZGlzcGxheXN0eWxlXCIsIGF0dHJbMV0pO1xuXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEzMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9jb3JlX2pzX29iamVjdF9rZXlzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19vYmplY3Rfa2V5c19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19vYmplY3Rfa2V5c19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RlZmluZUZ1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fUGFyc2VOb2RlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkSFRNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG5cbi8vIFRPRE8oa2V2aW5iKTogaW1wbGVtZW50IFxcXFxzbCBhbmQgXFxcXHNjXG5cblxuXG5cblxuXG5cbnZhciBodG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGZvbnQgPSBncm91cC52YWx1ZS5mb250O1xuICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2J1aWxkSFRNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKGdyb3VwLnZhbHVlLmJvZHksIG9wdGlvbnMud2l0aEZvbnRGYW1pbHkoZm9udCkpO1xufTtcblxudmFyIG1hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGZvbnQgPSBncm91cC52YWx1ZS5mb250O1xuICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucy53aXRoRm9udEZhbWlseShmb250KSk7XG59O1xuXG52YXIgZm9udEFsaWFzZXMgPSB7XG4gICAgXCJcXFxcQmJiXCI6IFwiXFxcXG1hdGhiYlwiLFxuICAgIFwiXFxcXGJvbGRcIjogXCJcXFxcbWF0aGJmXCIsXG4gICAgXCJcXFxcZnJha1wiOiBcIlxcXFxtYXRoZnJha1wiLFxuICAgIFwiXFxcXGJtXCI6IFwiXFxcXGJvbGRzeW1ib2xcIlxufTtcblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwiZm9udFwiLFxuICAgIG5hbWVzOiBbXG4gICAgLy8gc3R5bGVzXG4gICAgXCJcXFxcbWF0aHJtXCIsIFwiXFxcXG1hdGhpdFwiLCBcIlxcXFxtYXRoYmZcIiwgXCJcXFxcYm9sZHN5bWJvbFwiLFxuXG4gICAgLy8gZmFtaWxpZXNcbiAgICBcIlxcXFxtYXRoYmJcIiwgXCJcXFxcbWF0aGNhbFwiLCBcIlxcXFxtYXRoZnJha1wiLCBcIlxcXFxtYXRoc2NyXCIsIFwiXFxcXG1hdGhzZlwiLCBcIlxcXFxtYXRodHRcIixcblxuICAgIC8vIGFsaWFzZXNcbiAgICBcIlxcXFxCYmJcIiwgXCJcXFxcYm9sZFwiLCBcIlxcXFxmcmFrXCIsIFwiXFxcXGJtXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDEsXG4gICAgICAgIGdyZWVkaW5lc3M6IDJcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgICAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgICAgIHZhciBmdW5jID0gY29udGV4dC5mdW5jTmFtZTtcbiAgICAgICAgaWYgKGZ1bmMgaW4gZm9udEFsaWFzZXMpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmb250QWxpYXNlc1tmdW5jXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJmb250XCIsXG4gICAgICAgICAgICBmb250OiBmdW5jLnNsaWNlKDEpLFxuICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGh0bWxCdWlsZGVyLFxuICAgIG1hdGhtbEJ1aWxkZXI6IG1hdGhtbEJ1aWxkZXJcbn0pO1xuXG52YXIgb2xkRm9udEZ1bmNzTWFwID0ge1xuICAgIFwiXFxcXHJtXCI6IFwibWF0aHJtXCIsXG4gICAgXCJcXFxcc2ZcIjogXCJtYXRoc2ZcIixcbiAgICBcIlxcXFx0dFwiOiBcIm1hdGh0dFwiLFxuICAgIFwiXFxcXGJmXCI6IFwibWF0aGJmXCIsXG4gICAgXCJcXFxcaXRcIjogXCJtYXRoaXRcIlxufTtcblxuLy8gT2xkIGZvbnQgY2hhbmdpbmcgZnVuY3Rpb25zXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kZWZpbmVGdW5jdGlvbl9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJmb250XCIsXG4gICAgbmFtZXM6IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfb2JqZWN0X2tleXNfX19kZWZhdWx0KCkob2xkRm9udEZ1bmNzTWFwKSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAwLFxuICAgICAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gICAgfSxcbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICAgICAgdmFyIHBhcnNlciA9IGNvbnRleHQucGFyc2VyLFxuICAgICAgICAgICAgZnVuY05hbWUgPSBjb250ZXh0LmZ1bmNOYW1lLFxuICAgICAgICAgICAgYnJlYWtPblRva2VuVGV4dCA9IGNvbnRleHQuYnJlYWtPblRva2VuVGV4dDtcblxuXG4gICAgICAgIHBhcnNlci5jb25zdW1lU3BhY2VzKCk7XG4gICAgICAgIHZhciBib2R5ID0gcGFyc2VyLnBhcnNlRXhwcmVzc2lvbih0cnVlLCBicmVha09uVG9rZW5UZXh0KTtcbiAgICAgICAgdmFyIHN0eWxlID0gb2xkRm9udEZ1bmNzTWFwW2Z1bmNOYW1lXTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJmb250XCIsXG4gICAgICAgICAgICBmb250OiBzdHlsZSxcbiAgICAgICAgICAgIGJvZHk6IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX1BhcnNlTm9kZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwib3JkZ3JvdXBcIiwgYm9keSwgcGFyc2VyLm1vZGUpXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxufSk7XG5cbi8qKiovIH0pLFxuLyogMTM0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXygxMzUpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0pLFxuLyogMTM1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oMTM2KTtcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KS5PYmplY3Qua2V5cztcblxuLyoqKi8gfSksXG4vKiAxMzYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gMTkuMS4yLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KVxuICAsICRrZXlzICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSk7XG5cbl9fd2VicGFja19yZXF1aXJlX18oNDYpKCdrZXlzJywgZnVuY3Rpb24oKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpe1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG5cbi8qKiovIH0pLFxuLyogMTM3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX191dGlsc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3N0cmV0Y2h5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2J1aWxkSFRNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG5cblxuXG5cblxuXG5cblxudmFyIGh0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBBY2NlbnRzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIHBnLiA0NDMsIHJ1bGUgMTIuXG4gICAgdmFyIGJhc2UgPSBncm91cC52YWx1ZS5iYXNlO1xuXG4gICAgdmFyIHN1cHN1Ykdyb3VwID0gdm9pZCAwO1xuICAgIGlmIChncm91cC50eXBlID09PSBcInN1cHN1YlwiKSB7XG4gICAgICAgIC8vIElmIG91ciBiYXNlIGlzIGEgY2hhcmFjdGVyIGJveCwgYW5kIHdlIGhhdmUgc3VwZXJzY3JpcHRzIGFuZFxuICAgICAgICAvLyBzdWJzY3JpcHRzLCB0aGUgc3Vwc3ViIHdpbGwgZGVmZXIgdG8gdXMuIEluIHBhcnRpY3VsYXIsIHdlIHdhbnRcbiAgICAgICAgLy8gdG8gYXR0YWNoIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgdG8gdGhlIGlubmVyIGJvZHkgKHNvXG4gICAgICAgIC8vIHRoYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgd29uJ3QgYmVcbiAgICAgICAgLy8gYWZmZWN0ZWQgYnkgdGhlIGhlaWdodCBvZiB0aGUgYWNjZW50KS4gV2UgYWNjb21wbGlzaCB0aGlzIGJ5XG4gICAgICAgIC8vIHN0aWNraW5nIHRoZSBiYXNlIG9mIHRoZSBhY2NlbnQgaW50byB0aGUgYmFzZSBvZiB0aGUgc3Vwc3ViLCBhbmRcbiAgICAgICAgLy8gcmVuZGVyaW5nIHRoYXQsIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2Ygd2hlcmUgdGhlIGFjY2VudCBpcy5cblxuICAgICAgICAvLyBUaGUgc3Vwc3ViIGdyb3VwIGlzIHRoZSBncm91cCB0aGF0IHdhcyBwYXNzZWQgaW5cbiAgICAgICAgdmFyIHN1cHN1YiA9IGdyb3VwO1xuICAgICAgICAvLyBUaGUgcmVhbCBhY2NlbnQgZ3JvdXAgaXMgdGhlIGJhc2Ugb2YgdGhlIHN1cHN1YiBncm91cFxuICAgICAgICBncm91cCA9IHN1cHN1Yi52YWx1ZS5iYXNlO1xuICAgICAgICAvLyBUaGUgY2hhcmFjdGVyIGJveCBpcyB0aGUgYmFzZSBvZiB0aGUgYWNjZW50IGdyb3VwXG4gICAgICAgIGJhc2UgPSBncm91cC52YWx1ZS5iYXNlO1xuICAgICAgICAvLyBTdGljayB0aGUgY2hhcmFjdGVyIGJveCBpbnRvIHRoZSBiYXNlIG9mIHRoZSBzdXBzdWIgZ3JvdXBcbiAgICAgICAgc3Vwc3ViLnZhbHVlLmJhc2UgPSBiYXNlO1xuXG4gICAgICAgIC8vIFJlcmVuZGVyIHRoZSBzdXBzdWIgZ3JvdXAgd2l0aCBpdHMgbmV3IGJhc2UsIGFuZCBzdG9yZSB0aGF0XG4gICAgICAgIC8vIHJlc3VsdC5cbiAgICAgICAgc3Vwc3ViR3JvdXAgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2J1aWxkSFRNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKHN1cHN1Yiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGhlIGJhc2UgZ3JvdXBcbiAgICB2YXIgYm9keSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRIVE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oYmFzZSwgb3B0aW9ucy5oYXZpbmdDcmFtcGVkU3R5bGUoKSk7XG5cbiAgICAvLyBEb2VzIHRoZSBhY2NlbnQgbmVlZCB0byBzaGlmdCBmb3IgdGhlIHNrZXcgb2YgYSBjaGFyYWN0ZXI/XG4gICAgdmFyIG11c3RTaGlmdCA9IGdyb3VwLnZhbHVlLmlzU2hpZnR5ICYmIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5pc0NoYXJhY3RlckJveChiYXNlKTtcblxuICAgIC8vIENhbGN1bGF0ZSB0aGUgc2tldyBvZiB0aGUgYWNjZW50LiBUaGlzIGlzIGJhc2VkIG9uIHRoZSBsaW5lIFwiSWYgdGhlXG4gICAgLy8gbnVjbGV1cyBpcyBub3QgYSBzaW5nbGUgY2hhcmFjdGVyLCBsZXQgcyA9IDA7IG90aGVyd2lzZSBzZXQgcyB0byB0aGVcbiAgICAvLyBrZXJuIGFtb3VudCBmb3IgdGhlIG51Y2xldXMgZm9sbG93ZWQgYnkgdGhlIFxcc2tld2NoYXIgb2YgaXRzIGZvbnQuXCJcbiAgICAvLyBOb3RlIHRoYXQgb3VyIHNrZXcgbWV0cmljcyBhcmUganVzdCB0aGUga2VybiBiZXR3ZWVuIGVhY2ggY2hhcmFjdGVyXG4gICAgLy8gYW5kIHRoZSBza2V3Y2hhci5cbiAgICB2YXIgc2tldyA9IDA7XG4gICAgaWYgKG11c3RTaGlmdCkge1xuICAgICAgICAvLyBJZiB0aGUgYmFzZSBpcyBhIGNoYXJhY3RlciBib3gsIHRoZW4gd2Ugd2FudCB0aGUgc2tldyBvZiB0aGVcbiAgICAgICAgLy8gaW5uZXJtb3N0IGNoYXJhY3Rlci4gVG8gZG8gdGhhdCwgd2UgZmluZCB0aGUgaW5uZXJtb3N0IGNoYXJhY3RlcjpcbiAgICAgICAgdmFyIGJhc2VDaGFyID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmdldEJhc2VFbGVtKGJhc2UpO1xuICAgICAgICAvLyBUaGVuLCB3ZSByZW5kZXIgaXRzIGdyb3VwIHRvIGdldCB0aGUgc3ltYm9sIGluc2lkZSBpdFxuICAgICAgICB2YXIgYmFzZUdyb3VwID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19idWlsZEhUTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShiYXNlQ2hhciwgb3B0aW9ucy5oYXZpbmdDcmFtcGVkU3R5bGUoKSk7XG4gICAgICAgIC8vIEZpbmFsbHksIHdlIHB1bGwgdGhlIHNrZXcgb2ZmIG9mIHRoZSBzeW1ib2wuXG4gICAgICAgIHNrZXcgPSBiYXNlR3JvdXAuc2tldztcbiAgICAgICAgLy8gTm90ZSB0aGF0IHdlIG5vdyB0aHJvdyBhd2F5IGJhc2VHcm91cCwgYmVjYXVzZSB0aGUgbGF5ZXJzIHdlXG4gICAgICAgIC8vIHJlbW92ZWQgd2l0aCBnZXRCYXNlRWxlbSBtaWdodCBjb250YWluIHRoaW5ncyBsaWtlIFxcY29sb3Igd2hpY2hcbiAgICAgICAgLy8gd2UgY2FuJ3QgZ2V0IHJpZCBvZi5cbiAgICAgICAgLy8gVE9ETyhlbWlseSk6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGdldCB0aGUgc2tld1xuICAgIH1cblxuICAgIC8vIGNhbGN1bGF0ZSB0aGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIGJvZHkgYW5kIHRoZSBhY2NlbnRcbiAgICB2YXIgY2xlYXJhbmNlID0gTWF0aC5taW4oYm9keS5oZWlnaHQsIG9wdGlvbnMuZm9udE1ldHJpY3MoKS54SGVpZ2h0KTtcblxuICAgIC8vIEJ1aWxkIHRoZSBhY2NlbnRcbiAgICB2YXIgYWNjZW50Qm9keSA9IHZvaWQgMDtcbiAgICBpZiAoIWdyb3VwLnZhbHVlLmlzU3RyZXRjaHkpIHtcbiAgICAgICAgdmFyIGFjY2VudCA9IHZvaWQgMDtcbiAgICAgICAgdmFyIHdpZHRoID0gdm9pZCAwO1xuICAgICAgICBpZiAoZ3JvdXAudmFsdWUubGFiZWwgPT09IFwiXFxcXHZlY1wiKSB7XG4gICAgICAgICAgICAvLyBCZWZvcmUgdmVyc2lvbiAwLjksIFxcdmVjIHVzZWQgdGhlIGNvbWJpbmluZyBmb250IGdseXBoIFUrMjBENy5cbiAgICAgICAgICAgIC8vIEJ1dCBicm93c2VycywgZXNwZWNpYWxseSBTYWZhcmksIGFyZSBub3QgY29uc2lzdGVudCBpbiBob3cgdGhleVxuICAgICAgICAgICAgLy8gcmVuZGVyIGNvbWJpbmluZyBjaGFyYWN0ZXJzIHdoZW4gbm90IHByZWNlZGVkIGJ5IGEgY2hhcmFjdGVyLlxuICAgICAgICAgICAgLy8gU28gbm93IHdlIHVzZSBhbiBTVkcuXG4gICAgICAgICAgICAvLyBJZiBTYWZhcmkgcmVmb3Jtcywgd2Ugc2hvdWxkIGNvbnNpZGVyIHJldmVydGluZyB0byB0aGUgZ2x5cGguXG4gICAgICAgICAgICBhY2NlbnQgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10uc3RhdGljU3ZnKFwidmVjXCIsIG9wdGlvbnMpO1xuICAgICAgICAgICAgd2lkdGggPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10uc3ZnRGF0YS52ZWNbMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY2NlbnQgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVN5bWJvbChncm91cC52YWx1ZS5sYWJlbCwgXCJNYWluLVJlZ3VsYXJcIiwgZ3JvdXAubW9kZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGl0YWxpYyBjb3JyZWN0aW9uIG9mIHRoZSBhY2NlbnQsIGJlY2F1c2UgaXQgb25seSBzZXJ2ZXMgdG9cbiAgICAgICAgICAgIC8vIHNoaWZ0IHRoZSBhY2NlbnQgb3ZlciB0byBhIHBsYWNlIHdlIGRvbid0IHdhbnQuXG4gICAgICAgICAgICBhY2NlbnQuaXRhbGljID0gMDtcbiAgICAgICAgICAgIHdpZHRoID0gYWNjZW50LndpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgYWNjZW50Qm9keSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJhY2NlbnQtYm9keVwiXSwgW2FjY2VudF0pO1xuXG4gICAgICAgIC8vIENTUyBkZWZpbmVzIGAua2F0ZXggLmFjY2VudCAuYWNjZW50LWJvZHkgeyB3aWR0aDogMCB9YFxuICAgICAgICAvLyBzbyB0aGF0IHRoZSBhY2NlbnQgZG9lc24ndCBjb250cmlidXRlIHRvIHRoZSBib3VuZGluZyBib3guXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gc2hpZnQgdGhlIGNoYXJhY3RlciBieSBpdHMgd2lkdGggKGVmZmVjdGl2ZWx5IGhhbGZcbiAgICAgICAgLy8gaXRzIHdpZHRoKSB0byBjb21wZW5zYXRlLlxuICAgICAgICB2YXIgbGVmdCA9IC13aWR0aCAvIDI7XG5cbiAgICAgICAgLy8gU2hpZnQgdGhlIGFjY2VudCBvdmVyIGJ5IHRoZSBza2V3LlxuICAgICAgICBsZWZ0ICs9IHNrZXc7XG5cbiAgICAgICAgYWNjZW50Qm9keS5zdHlsZS5sZWZ0ID0gbGVmdCArIFwiZW1cIjtcblxuICAgICAgICBhY2NlbnRCb2R5ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWTGlzdCh7XG4gICAgICAgICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgICAgICAgY2hpbGRyZW46IFt7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBib2R5IH0sIHsgdHlwZTogXCJrZXJuXCIsIHNpemU6IC1jbGVhcmFuY2UgfSwgeyB0eXBlOiBcImVsZW1cIiwgZWxlbTogYWNjZW50Qm9keSB9XVxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhY2NlbnRCb2R5ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19zdHJldGNoeV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpO1xuXG4gICAgICAgIGFjY2VudEJvZHkgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVZMaXN0KHtcbiAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogXCJmaXJzdEJhc2VsaW5lXCIsXG4gICAgICAgICAgICBjaGlsZHJlbjogW3sgdHlwZTogXCJlbGVtXCIsIGVsZW06IGJvZHkgfSwge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgICAgICAgIGVsZW06IGFjY2VudEJvZHksXG4gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzZXM6IFtcInN2Zy1hbGlnblwiXSxcbiAgICAgICAgICAgICAgICB3cmFwcGVyU3R5bGU6IHNrZXcgPiAwID8ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCJjYWxjKDEwMCUgLSBcIiArIDIgKiBza2V3ICsgXCJlbSlcIixcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogMiAqIHNrZXcgKyBcImVtXCJcbiAgICAgICAgICAgICAgICB9IDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9XVxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICB2YXIgYWNjZW50V3JhcCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJtb3JkXCIsIFwiYWNjZW50XCJdLCBbYWNjZW50Qm9keV0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKHN1cHN1Ykdyb3VwKSB7XG4gICAgICAgIC8vIEhlcmUsIHdlIHJlcGxhY2UgdGhlIFwiYmFzZVwiIGNoaWxkIG9mIHRoZSBzdXBzdWIgd2l0aCBvdXIgbmV3bHlcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGFjY2VudC5cbiAgICAgICAgc3Vwc3ViR3JvdXAuY2hpbGRyZW5bMF0gPSBhY2NlbnRXcmFwO1xuXG4gICAgICAgIC8vIFNpbmNlIHdlIGRvbid0IHJlcnVuIHRoZSBoZWlnaHQgY2FsY3VsYXRpb24gYWZ0ZXIgcmVwbGFjaW5nIHRoZVxuICAgICAgICAvLyBhY2NlbnQsIHdlIG1hbnVhbGx5IHJlY2FsY3VsYXRlIGhlaWdodC5cbiAgICAgICAgc3Vwc3ViR3JvdXAuaGVpZ2h0ID0gTWF0aC5tYXgoYWNjZW50V3JhcC5oZWlnaHQsIHN1cHN1Ykdyb3VwLmhlaWdodCk7XG5cbiAgICAgICAgLy8gQWNjZW50cyBzaG91bGQgYWx3YXlzIGJlIG9yZHMsIGV2ZW4gd2hlbiB0aGVpciBpbm5hcmRzIGFyZSBub3QuXG4gICAgICAgIHN1cHN1Ykdyb3VwLmNsYXNzZXNbMF0gPSBcIm1vcmRcIjtcblxuICAgICAgICByZXR1cm4gc3Vwc3ViR3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGFjY2VudFdyYXA7XG4gICAgfVxufTtcblxudmFyIG1hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGFjY2VudE5vZGUgPSB2b2lkIDA7XG4gICAgaWYgKGdyb3VwLnZhbHVlLmlzU3RyZXRjaHkpIHtcbiAgICAgICAgYWNjZW50Tm9kZSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fc3RyZXRjaHlfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYXRoTUxub2RlKGdyb3VwLnZhbHVlLmxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhY2NlbnROb2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibW9cIiwgW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fYnVpbGRNYXRoTUxfX1tcImVcIiAvKiBtYWtlVGV4dCAqL10oZ3JvdXAudmFsdWUubGFiZWwsIGdyb3VwLm1vZGUpXSk7XG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtb3ZlclwiLCBbX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19idWlsZE1hdGhNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKGdyb3VwLnZhbHVlLmJhc2UsIG9wdGlvbnMpLCBhY2NlbnROb2RlXSk7XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImFjY2VudFwiLCBcInRydWVcIik7XG5cbiAgICByZXR1cm4gbm9kZTtcbn07XG5cbnZhciBOT05fU1RSRVRDSFlfQUNDRU5UX1JFR0VYID0gbmV3IFJlZ0V4cChbXCJcXFxcYWN1dGVcIiwgXCJcXFxcZ3JhdmVcIiwgXCJcXFxcZGRvdFwiLCBcIlxcXFx0aWxkZVwiLCBcIlxcXFxiYXJcIiwgXCJcXFxcYnJldmVcIiwgXCJcXFxcY2hlY2tcIiwgXCJcXFxcaGF0XCIsIFwiXFxcXHZlY1wiLCBcIlxcXFxkb3RcIiwgXCJcXFxcbWF0aHJpbmdcIl0ubWFwKGZ1bmN0aW9uIChhY2NlbnQpIHtcbiAgICByZXR1cm4gXCJcXFxcXCIgKyBhY2NlbnQ7XG59KS5qb2luKFwifFwiKSk7XG5cbi8vIEFjY2VudHNcbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcImFjY2VudFwiLFxuICAgIG5hbWVzOiBbXCJcXFxcYWN1dGVcIiwgXCJcXFxcZ3JhdmVcIiwgXCJcXFxcZGRvdFwiLCBcIlxcXFx0aWxkZVwiLCBcIlxcXFxiYXJcIiwgXCJcXFxcYnJldmVcIiwgXCJcXFxcY2hlY2tcIiwgXCJcXFxcaGF0XCIsIFwiXFxcXHZlY1wiLCBcIlxcXFxkb3RcIiwgXCJcXFxcbWF0aHJpbmdcIiwgXCJcXFxcd2lkZWhhdFwiLCBcIlxcXFx3aWRldGlsZGVcIiwgXCJcXFxcb3ZlcnJpZ2h0YXJyb3dcIiwgXCJcXFxcb3ZlcmxlZnRhcnJvd1wiLCBcIlxcXFxPdmVycmlnaHRhcnJvd1wiLCBcIlxcXFxvdmVybGVmdHJpZ2h0YXJyb3dcIiwgXCJcXFxcb3Zlcmdyb3VwXCIsIFwiXFxcXG92ZXJsaW5lc2VnbWVudFwiLCBcIlxcXFxvdmVybGVmdGhhcnBvb25cIiwgXCJcXFxcb3ZlcnJpZ2h0aGFycG9vblwiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAxXG4gICAgfSxcbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICAgICAgdmFyIGJhc2UgPSBhcmdzWzBdO1xuXG4gICAgICAgIHZhciBpc1N0cmV0Y2h5ID0gIU5PTl9TVFJFVENIWV9BQ0NFTlRfUkVHRVgudGVzdChjb250ZXh0LmZ1bmNOYW1lKTtcbiAgICAgICAgdmFyIGlzU2hpZnR5ID0gIWlzU3RyZXRjaHkgfHwgY29udGV4dC5mdW5jTmFtZSA9PT0gXCJcXFxcd2lkZWhhdFwiIHx8IGNvbnRleHQuZnVuY05hbWUgPT09IFwiXFxcXHdpZGV0aWxkZVwiO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcImFjY2VudFwiLFxuICAgICAgICAgICAgbGFiZWw6IGNvbnRleHQuZnVuY05hbWUsXG4gICAgICAgICAgICBpc1N0cmV0Y2h5OiBpc1N0cmV0Y2h5LFxuICAgICAgICAgICAgaXNTaGlmdHk6IGlzU2hpZnR5LFxuICAgICAgICAgICAgYmFzZTogYmFzZVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGh0bWxCdWlsZGVyLFxuICAgIG1hdGhtbEJ1aWxkZXI6IG1hdGhtbEJ1aWxkZXJcbn0pO1xuXG4vLyBUZXh0LW1vZGUgYWNjZW50c1xuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwiYWNjZW50XCIsXG4gICAgbmFtZXM6IFtcIlxcXFwnXCIsIFwiXFxcXGBcIiwgXCJcXFxcXlwiLCBcIlxcXFx+XCIsIFwiXFxcXD1cIiwgXCJcXFxcdVwiLCBcIlxcXFwuXCIsICdcXFxcXCInLCBcIlxcXFxyXCIsIFwiXFxcXEhcIiwgXCJcXFxcdlwiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAxLFxuICAgICAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgICAgICBhbGxvd2VkSW5NYXRoOiBmYWxzZVxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHZhciBiYXNlID0gYXJnc1swXTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJhY2NlbnRcIixcbiAgICAgICAgICAgIGxhYmVsOiBjb250ZXh0LmZ1bmNOYW1lLFxuICAgICAgICAgICAgaXNTdHJldGNoeTogZmFsc2UsXG4gICAgICAgICAgICBpc1NoaWZ0eTogdHJ1ZSxcbiAgICAgICAgICAgIGJhc2U6IGJhc2VcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBodG1sQnVpbGRlcixcbiAgICBtYXRobWxCdWlsZGVyOiBtYXRobWxCdWlsZGVyXG59KTtcblxuLyoqKi8gfSksXG4vKiAxMzggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3N0cmV0Y2h5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkSFRNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG4vLyBIb3Jpem9udGFsIG92ZXJsYXAgZnVuY3Rpb25zXG5cblxuXG5cblxuXG5cblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwiYWNjZW50VW5kZXJcIixcbiAgICBuYW1lczogW1wiXFxcXHVuZGVybGVmdGFycm93XCIsIFwiXFxcXHVuZGVycmlnaHRhcnJvd1wiLCBcIlxcXFx1bmRlcmxlZnRyaWdodGFycm93XCIsIFwiXFxcXHVuZGVyZ3JvdXBcIiwgXCJcXFxcdW5kZXJsaW5lc2VnbWVudFwiLCBcIlxcXFx1dGlsZGVcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMVxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHZhciBiYXNlID0gYXJnc1swXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYWNjZW50VW5kZXJcIixcbiAgICAgICAgICAgIGxhYmVsOiBjb250ZXh0LmZ1bmNOYW1lLFxuICAgICAgICAgICAgYmFzZTogYmFzZVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIC8vIFRyZWF0IHVuZGVyIGFjY2VudHMgbXVjaCBsaWtlIHVuZGVybGluZXMuXG4gICAgICAgIHZhciBpbm5lckdyb3VwID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZEhUTUxfX1tcImJcIiAvKiBidWlsZEdyb3VwICovXShncm91cC52YWx1ZS5iYXNlLCBvcHRpb25zKTtcblxuICAgICAgICB2YXIgYWNjZW50Qm9keSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc3RyZXRjaHlfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5zdmdTcGFuKGdyb3VwLCBvcHRpb25zKTtcbiAgICAgICAgdmFyIGtlcm4gPSBncm91cC52YWx1ZS5sYWJlbCA9PT0gXCJcXFxcdXRpbGRlXCIgPyAwLjEyIDogMDtcblxuICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgdmxpc3QsIHdpdGggdGhlIGFwcHJvcHJpYXRlIGtlcm5zXG4gICAgICAgIHZhciB2bGlzdCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlVkxpc3Qoe1xuICAgICAgICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgICAgICAgcG9zaXRpb25EYXRhOiBhY2NlbnRCb2R5LmhlaWdodCArIGtlcm4sXG4gICAgICAgICAgICBjaGlsZHJlbjogW3sgdHlwZTogXCJlbGVtXCIsIGVsZW06IGFjY2VudEJvZHksIHdyYXBwZXJDbGFzc2VzOiBbXCJzdmctYWxpZ25cIl0gfSwgeyB0eXBlOiBcImtlcm5cIiwgc2l6ZToga2VybiB9LCB7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBpbm5lckdyb3VwIH1dXG4gICAgICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wibW9yZFwiLCBcImFjY2VudHVuZGVyXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIGFjY2VudE5vZGUgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3N0cmV0Y2h5X19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWF0aE1Mbm9kZShncm91cC52YWx1ZS5sYWJlbCk7XG4gICAgICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXVuZGVyXCIsIFtfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2J1aWxkTWF0aE1MX19bXCJiXCIgLyogYnVpbGRHcm91cCAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucyksIGFjY2VudE5vZGVdKTtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhY2NlbnR1bmRlclwiLCBcInRydWVcIik7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEzOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fUGFyc2VFcnJvcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblxuXG5cblxuXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJ2ZXJiXCIsXG4gICAgbmFtZXM6IFtcIlxcXFx2ZXJiXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDAsXG4gICAgICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncykge1xuICAgICAgICAvLyBcXHZlcmIgYW5kIFxcdmVyYiogYXJlIGRlYWx0IHdpdGggZGlyZWN0bHkgaW4gUGFyc2VyLmpzLlxuICAgICAgICAvLyBJZiB3ZSBlbmQgdXAgaGVyZSwgaXQncyBiZWNhdXNlIG9mIGEgZmFpbHVyZSB0byBtYXRjaCB0aGUgdHdvIGRlbGltaXRlcnNcbiAgICAgICAgLy8gaW4gdGhlIHJlZ2V4IGluIExleGVyLmpzLiAgTGFUZVggcmFpc2VzIHRoZSBmb2xsb3dpbmcgZXJyb3Igd2hlbiBcXHZlcmIgaXNcbiAgICAgICAgLy8gdGVybWluYXRlZCBieSBlbmQgb2YgbGluZSAob3IgZmlsZSkuXG4gICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIlxcXFx2ZXJiIGVuZGVkIGJ5IGVuZCBvZiBsaW5lIGluc3RlYWQgb2YgbWF0Y2hpbmcgZGVsaW1pdGVyXCIpO1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciB0ZXh0ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWZXJiKGdyb3VwLCBvcHRpb25zKTtcbiAgICAgICAgdmFyIGJvZHkgPSBbXTtcbiAgICAgICAgLy8gXFx2ZXJiIGVudGVycyB0ZXh0IG1vZGUgYW5kIHRoZXJlZm9yZSBpcyBzaXplZCBsaWtlIFxcdGV4dHN0eWxlXG4gICAgICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShvcHRpb25zLnN0eWxlLnRleHQoKSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRleHRbaV0gPT09ICdcXHhBMCcpIHtcbiAgICAgICAgICAgICAgICAvLyBzcGFjZXMgYXBwZWFyIGFzIG5vbmJyZWFraW5nIHNwYWNlXG4gICAgICAgICAgICAgICAgLy8gVGhlIHNwYWNlIGNoYXJhY3RlciBpc24ndCBpbiB0aGUgVHlwZXdyaXRlci1SZWd1bGFyIGZvbnQsXG4gICAgICAgICAgICAgICAgLy8gc28gd2UgaW1wbGVtZW50IGl0IGFzIGEga2VybiBvZiB0aGUgc2FtZSBzaXplIGFzIGEgY2hhcmFjdGVyLlxuICAgICAgICAgICAgICAgIC8vIDAuNTI1IGlzIHRoZSB3aWR0aCBvZiBhIHRleHR0dCBjaGFyYWN0ZXIgaW4gTGFUZVguXG4gICAgICAgICAgICAgICAgLy8gSXQgYXV0b21hdGljYWxseSBnZXRzIHNjYWxlZCBieSB0aGUgZm9udCBzaXplLlxuICAgICAgICAgICAgICAgIHZhciBydWxlID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJydWxlXCJdLCBbXSwgbmV3T3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgcnVsZS5zdHlsZS5tYXJnaW5MZWZ0ID0gXCIwLjUyNWVtXCI7XG4gICAgICAgICAgICAgICAgYm9keS5wdXNoKHJ1bGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBib2R5LnB1c2goX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTeW1ib2wodGV4dFtpXSwgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIiwgZ3JvdXAubW9kZSwgbmV3T3B0aW9ucywgW1wibWF0aHR0XCJdKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnRyeUNvbWJpbmVDaGFycyhib2R5KTtcbiAgICAgICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJtb3JkXCIsIFwidGV4dFwiXS5jb25jYXQobmV3T3B0aW9ucy5zaXppbmdDbGFzc2VzKG9wdGlvbnMpKSxcbiAgICAgICAgLy8gdHJ5Q29tYmluQ2hhcnMgZXhwZWN0cyBDb21iaW5hYmxlRG9tTm9kZVtdIHdoaWxlIG1ha2VTcGFuIGV4cGVjdHNcbiAgICAgICAgLy8gRG9tQ2hpbGROb2RlW10uXG4gICAgICAgIC8vICRGbG93Rml4TWU6IENvbWJpbmFibGVEb21Ob2RlW10gaXMgbm90IGNvbXBhdGlibGUgd2l0aCBEb21DaGlsZE5vZGVbXVxuICAgICAgICBib2R5LCBuZXdPcHRpb25zKTtcbiAgICB9LFxuICAgIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHRleHQgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uVGV4dE5vZGUoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VWZXJiKGdyb3VwLCBvcHRpb25zKSk7XG4gICAgICAgIHZhciBub2RlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXRleHRcIiwgW3RleHRdKTtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRodmFyaWFudFwiLCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10uZm9udE1hcFtcIm1hdGh0dFwiXS52YXJpYW50KTtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxufSk7XG5cbi8qKiovIH0pLFxuLyogMTQwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZEhUTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZE1hdGhNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuXG5cblxuXG5cblxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwiaHJlZlwiLFxuICAgIG5hbWVzOiBbXCJcXFxcaHJlZlwiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAyLFxuICAgICAgICBhcmdUeXBlczogW1widXJsXCIsIFwib3JpZ2luYWxcIl1cbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgICAgICB2YXIgYm9keSA9IGFyZ3NbMV07XG4gICAgICAgIHZhciBocmVmID0gYXJnc1swXS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHJlZlwiLFxuICAgICAgICAgICAgaHJlZjogaHJlZixcbiAgICAgICAgICAgIGJvZHk6IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJjXCIgLyogb3JkYXJndW1lbnQgKi9dKShib2R5KVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBlbGVtZW50cyA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYnVpbGRIVE1MX19bXCJhXCIgLyogYnVpbGRFeHByZXNzaW9uICovXShncm91cC52YWx1ZS5ib2R5LCBvcHRpb25zLCBmYWxzZSk7XG5cbiAgICAgICAgdmFyIGhyZWYgPSBncm91cC52YWx1ZS5ocmVmO1xuXG4gICAgICAgIHJldHVybiBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VBbmNob3IoaHJlZiwgW10sIGVsZW1lbnRzLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIGlubmVyID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZE1hdGhNTF9fW1wiYVwiIC8qIGJ1aWxkRXhwcmVzc2lvbiAqL10oZ3JvdXAudmFsdWUuYm9keSwgb3B0aW9ucyk7XG4gICAgICAgIHZhciBtYXRoID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXJvd1wiLCBpbm5lcik7XG4gICAgICAgIG1hdGguc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBncm91cC52YWx1ZS5ocmVmKTtcbiAgICAgICAgcmV0dXJuIG1hdGg7XG4gICAgfVxufSk7XG5cbi8qKiovIH0pLFxuLyogMTQxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19TdHlsZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkSFRNTF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2J1aWxkTWF0aE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG5cblxuXG5cblxuXG52YXIgY2hvb3NlTWF0aFN0eWxlID0gZnVuY3Rpb24gY2hvb3NlTWF0aFN0eWxlKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHN0eWxlID0gb3B0aW9ucy5zdHlsZTtcbiAgICBpZiAoc3R5bGUuc2l6ZSA9PT0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19TdHlsZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLkRJU1BMQVkuc2l6ZSkge1xuICAgICAgICByZXR1cm4gZ3JvdXAudmFsdWUuZGlzcGxheTtcbiAgICB9IGVsc2UgaWYgKHN0eWxlLnNpemUgPT09IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5URVhULnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwLnZhbHVlLnRleHQ7XG4gICAgfSBlbHNlIGlmIChzdHlsZS5zaXplID09PSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1N0eWxlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uU0NSSVBULnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwLnZhbHVlLnNjcmlwdDtcbiAgICB9IGVsc2UgaWYgKHN0eWxlLnNpemUgPT09IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fU3R5bGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5TQ1JJUFRTQ1JJUFQuc2l6ZSkge1xuICAgICAgICByZXR1cm4gZ3JvdXAudmFsdWUuc2NyaXB0c2NyaXB0O1xuICAgIH1cbiAgICByZXR1cm4gZ3JvdXAudmFsdWUudGV4dDtcbn07XG5cbk9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJiXCIgLyogZGVmYXVsdCAqL10pKHtcbiAgICB0eXBlOiBcIm1hdGhjaG9pY2VcIixcbiAgICBuYW1lczogW1wiXFxcXG1hdGhjaG9pY2VcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogNFxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBcIm1hdGhjaG9pY2VcIixcbiAgICAgICAgICAgIGRpc3BsYXk6IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJjXCIgLyogb3JkYXJndW1lbnQgKi9dKShhcmdzWzBdKSxcbiAgICAgICAgICAgIHRleHQ6IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX19bXCJjXCIgLyogb3JkYXJndW1lbnQgKi9dKShhcmdzWzFdKSxcbiAgICAgICAgICAgIHNjcmlwdDogT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRnVuY3Rpb25fX1tcImNcIiAvKiBvcmRhcmd1bWVudCAqL10pKGFyZ3NbMl0pLFxuICAgICAgICAgICAgc2NyaXB0c2NyaXB0OiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVGdW5jdGlvbl9fW1wiY1wiIC8qIG9yZGFyZ3VtZW50ICovXSkoYXJnc1szXSlcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgICAgICB2YXIgYm9keSA9IGNob29zZU1hdGhTdHlsZShncm91cCwgb3B0aW9ucyk7XG4gICAgICAgIHZhciBlbGVtZW50cyA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYnVpbGRIVE1MX19bXCJhXCIgLyogYnVpbGRFeHByZXNzaW9uICovXShib2R5LCBvcHRpb25zLCBmYWxzZSk7XG4gICAgICAgIHJldHVybiBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VGcmFnbWVudChlbGVtZW50cyk7XG4gICAgfSxcbiAgICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBib2R5ID0gY2hvb3NlTWF0aFN0eWxlKGdyb3VwLCBvcHRpb25zKTtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19idWlsZE1hdGhNTF9fW1wiYVwiIC8qIGJ1aWxkRXhwcmVzc2lvbiAqL10oYm9keSwgb3B0aW9ucywgZmFsc2UpO1xuICAgICAgICByZXR1cm4gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbWF0aE1MVHJlZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLk1hdGhOb2RlKFwibXJvd1wiLCBlbGVtZW50cyk7XG4gICAgfVxufSk7XG5cbi8qKiovIH0pLFxuLyogMTQyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRW52aXJvbm1lbnRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjEpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZW52aXJvbm1lbnRzX2FycmF5X2pzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0Myk7XG5cblxudmFyIGVudmlyb25tZW50cyA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZGVmaW5lRW52aXJvbm1lbnRfX1tcImFcIiAvKiBfZW52aXJvbm1lbnRzICovXTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChlbnZpcm9ubWVudHMpO1xuXG4vLyBBbGwgZW52aXJvbm1lbnQgZGVmaW5pdGlvbnMgc2hvdWxkIGJlIGltcG9ydGVkIGJlbG93XG5cblxuLyoqKi8gfSksXG4vKiAxNDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19idWlsZENvbW1vbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RlZmluZUVudmlyb25tZW50X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19QYXJzZUVycm9yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fUGFyc2VOb2RlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX3VuaXRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX3V0aWxzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fc3RyZXRjaHlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fYnVpbGRIVE1MX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fYnVpbGRNYXRoTUxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vLyBEYXRhIHN0b3JlZCBpbiB0aGUgUGFyc2VOb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZW52aXJvbm1lbnQuXG5cblxuLyoqXG4gKiBQYXJzZSB0aGUgYm9keSBvZiB0aGUgZW52aXJvbm1lbnQsIHdpdGggcm93cyBkZWxpbWl0ZWQgYnkgXFxcXCBhbmRcbiAqIGNvbHVtbnMgZGVsaW1pdGVkIGJ5ICYsIGFuZCBjcmVhdGUgYSBuZXN0ZWQgbGlzdCBpbiByb3ctbWFqb3Igb3JkZXJcbiAqIHdpdGggb25lIGdyb3VwIHBlciBjZWxsLiAgSWYgZ2l2ZW4gYW4gb3B0aW9uYWwgYXJndW1lbnQgc3R5bGVcbiAqIChcInRleHRcIiwgXCJkaXNwbGF5XCIsIGV0Yy4pLCB0aGVuIGVhY2ggY2VsbCBpcyBjYXN0IGludG8gdGhhdCBzdHlsZS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VBcnJheShwYXJzZXIsIHJlc3VsdCwgc3R5bGUpIHtcbiAgICB2YXIgcm93ID0gW107XG4gICAgdmFyIGJvZHkgPSBbcm93XTtcbiAgICB2YXIgcm93R2FwcyA9IFtdO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgICAgIHZhciBjZWxsID0gcGFyc2VyLnBhcnNlRXhwcmVzc2lvbihmYWxzZSwgdW5kZWZpbmVkKTtcbiAgICAgICAgY2VsbCA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1BhcnNlTm9kZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwib3JkZ3JvdXBcIiwgY2VsbCwgcGFyc2VyLm1vZGUpO1xuICAgICAgICBpZiAoc3R5bGUpIHtcbiAgICAgICAgICAgIGNlbGwgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcInN0eWxpbmdcIiwge1xuICAgICAgICAgICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogW2NlbGxdXG4gICAgICAgICAgICB9LCBwYXJzZXIubW9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcm93LnB1c2goY2VsbCk7XG4gICAgICAgIHZhciBuZXh0ID0gcGFyc2VyLm5leHRUb2tlbi50ZXh0O1xuICAgICAgICBpZiAobmV4dCA9PT0gXCImXCIpIHtcbiAgICAgICAgICAgIHBhcnNlci5jb25zdW1lKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobmV4dCA9PT0gXCJcXFxcZW5kXCIpIHtcbiAgICAgICAgICAgIC8vIEFycmF5cyB0ZXJtaW5hdGUgbmV3bGluZXMgd2l0aCBgXFxjcmNyYCB3aGljaCBjb25zdW1lcyBhIGBcXGNyYCBpZlxuICAgICAgICAgICAgLy8gdGhlIGxhc3QgbGluZSBpcyBlbXB0eS5cbiAgICAgICAgICAgIHZhciBsYXN0Um93ID0gYm9keVtib2R5Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgaWYgKGJvZHkubGVuZ3RoID4gMSAmJiBsYXN0Um93Lmxlbmd0aCA9PT0gMSAmJiBsYXN0Um93WzBdLnZhbHVlLnZhbHVlWzBdLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGJvZHkucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmIChuZXh0ID09PSBcIlxcXFxcXFxcXCIgfHwgbmV4dCA9PT0gXCJcXFxcY3JcIikge1xuICAgICAgICAgICAgdmFyIGNyID0gcGFyc2VyLnBhcnNlRnVuY3Rpb24oKTtcbiAgICAgICAgICAgIGlmICghY3IpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJGYWlsZWQgdG8gcGFyc2UgZnVuY3Rpb24gYWZ0ZXIgXCIgKyBuZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvd0dhcHMucHVzaChjci52YWx1ZS5zaXplKTtcbiAgICAgICAgICAgIHJvdyA9IFtdO1xuICAgICAgICAgICAgYm9keS5wdXNoKHJvdyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJFeHBlY3RlZCAmIG9yIFxcXFxcXFxcIG9yIFxcXFxlbmRcIiwgcGFyc2VyLm5leHRUb2tlbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0LmJvZHkgPSBib2R5O1xuICAgIHJlc3VsdC5yb3dHYXBzID0gcm93R2FwcztcbiAgICByZXR1cm4gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fUGFyc2VOb2RlX19bXCJhXCIgLyogZGVmYXVsdCAqL10ocmVzdWx0LnR5cGUsIHJlc3VsdCwgcGFyc2VyLm1vZGUpO1xufVxuXG4vLyBEZWNpZGVzIG9uIGEgc3R5bGUgZm9yIGNlbGxzIGluIGFuIGFycmF5IGFjY29yZGluZyB0byB3aGV0aGVyIHRoZSBnaXZlblxuLy8gZW52aXJvbm1lbnQgbmFtZSBzdGFydHMgd2l0aCB0aGUgbGV0dGVyICdkJy5cbmZ1bmN0aW9uIGRDZWxsU3R5bGUoZW52TmFtZSkge1xuICAgIGlmIChlbnZOYW1lLnN1YnN0cigwLCAxKSA9PT0gXCJkXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiZGlzcGxheVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBcInRleHRcIjtcbiAgICB9XG59XG5cbnZhciBodG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHIgPSB2b2lkIDA7XG4gICAgdmFyIGMgPSB2b2lkIDA7XG4gICAgdmFyIG5yID0gZ3JvdXAudmFsdWUuYm9keS5sZW5ndGg7XG4gICAgdmFyIG5jID0gMDtcbiAgICB2YXIgYm9keSA9IG5ldyBBcnJheShucik7XG5cbiAgICAvLyBIb3Jpem9udGFsIHNwYWNpbmdcbiAgICB2YXIgcHQgPSAxIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG4gICAgdmFyIGFycmF5Y29sc2VwID0gNSAqIHB0OyAvLyBcXGFycmF5Y29sc2VwIGluIGFydGljbGUuY2xzXG5cbiAgICAvLyBWZXJ0aWNhbCBzcGFjaW5nXG4gICAgdmFyIGJhc2VsaW5lc2tpcCA9IDEyICogcHQ7IC8vIHNlZSBzaXplMTAuY2xvXG4gICAgLy8gRGVmYXVsdCBcXGpvdCBmcm9tIGx0bWF0aC5kdHhcbiAgICAvLyBUT0RPKGVkZW1haW5lKTogYWxsb3cgb3ZlcnJpZGluZyBcXGpvdCB2aWEgXFxzZXRsZW5ndGggKCM2ODcpXG4gICAgdmFyIGpvdCA9IDMgKiBwdDtcbiAgICAvLyBEZWZhdWx0IFxcYXJyYXlzdHJldGNoIGZyb20gbHR0YWIuZHR4XG4gICAgLy8gVE9ETyhnYWdlcm4pOiBtYXkgZ2V0IHJlZGVmaW5lZCBvbmNlIHdlIGhhdmUgdXNlci1kZWZpbmVkIG1hY3Jvc1xuICAgIHZhciBhcnJheXN0cmV0Y2ggPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX3V0aWxzX19bXCJhXCIgLyogZGVmYXVsdCAqL10uZGVmbHQoZ3JvdXAudmFsdWUuYXJyYXlzdHJldGNoLCAxKTtcbiAgICB2YXIgYXJyYXlza2lwID0gYXJyYXlzdHJldGNoICogYmFzZWxpbmVza2lwO1xuICAgIHZhciBhcnN0cnV0SGVpZ2h0ID0gMC43ICogYXJyYXlza2lwOyAvLyBcXHN0cnV0Ym94IGluIGx0ZnNzdHJjLmR0eCBhbmRcbiAgICB2YXIgYXJzdHJ1dERlcHRoID0gMC4zICogYXJyYXlza2lwOyAvLyBcXEBhcnN0cnV0Ym94IGluIGx0dGFiLmR0eFxuXG4gICAgdmFyIHRvdGFsSGVpZ2h0ID0gMDtcbiAgICBmb3IgKHIgPSAwOyByIDwgZ3JvdXAudmFsdWUuYm9keS5sZW5ndGg7ICsrcikge1xuICAgICAgICB2YXIgaW5yb3cgPSBncm91cC52YWx1ZS5ib2R5W3JdO1xuICAgICAgICB2YXIgX2hlaWdodCA9IGFyc3RydXRIZWlnaHQ7IC8vIFxcQGFycmF5IGFkZHMgYW4gXFxAYXJzdHJ1dFxuICAgICAgICB2YXIgX2RlcHRoID0gYXJzdHJ1dERlcHRoOyAvLyB0byBlYWNoIHRvdyAodmlhIHRoZSB0ZW1wbGF0ZSlcblxuICAgICAgICBpZiAobmMgPCBpbnJvdy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5jID0gaW5yb3cubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG91dHJvdyA9IG5ldyBBcnJheShpbnJvdy5sZW5ndGgpO1xuICAgICAgICBmb3IgKGMgPSAwOyBjIDwgaW5yb3cubGVuZ3RoOyArK2MpIHtcbiAgICAgICAgICAgIHZhciBlbHQgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX2J1aWxkSFRNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKGlucm93W2NdLCBvcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChfZGVwdGggPCBlbHQuZGVwdGgpIHtcbiAgICAgICAgICAgICAgICBfZGVwdGggPSBlbHQuZGVwdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoX2hlaWdodCA8IGVsdC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBfaGVpZ2h0ID0gZWx0LmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dHJvd1tjXSA9IGVsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBnYXAgPSAwO1xuICAgICAgICBpZiAoZ3JvdXAudmFsdWUucm93R2Fwc1tyXSkge1xuICAgICAgICAgICAgZ2FwID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdW5pdHNfX1tcImFcIiAvKiBjYWxjdWxhdGVTaXplICovXSkoZ3JvdXAudmFsdWUucm93R2Fwc1tyXS52YWx1ZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoZ2FwID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIFxcQGFyZ2FycmF5Y3JcbiAgICAgICAgICAgICAgICBnYXAgKz0gYXJzdHJ1dERlcHRoO1xuICAgICAgICAgICAgICAgIGlmIChfZGVwdGggPCBnYXApIHtcbiAgICAgICAgICAgICAgICAgICAgX2RlcHRoID0gZ2FwOyAvLyBcXEB4YXJnYXJyYXljclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBnYXAgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEluIEFNUyBtdWx0aWxpbmUgZW52aXJvbm1lbnRzIHN1Y2ggYXMgYWxpZ25lZCBhbmQgZ2F0aGVyZWQsIHJvd3NcbiAgICAgICAgLy8gY29ycmVzcG9uZCB0byBsaW5lcyB0aGF0IGhhdmUgYWRkaXRpb25hbCBcXGpvdCBhZGRlZCB0byB0aGVcbiAgICAgICAgLy8gXFxiYXNlbGluZXNraXAgdmlhIFxcb3BlbnVwLlxuICAgICAgICBpZiAoZ3JvdXAudmFsdWUuYWRkSm90KSB7XG4gICAgICAgICAgICBfZGVwdGggKz0gam90O1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0cm93LmhlaWdodCA9IF9oZWlnaHQ7XG4gICAgICAgIG91dHJvdy5kZXB0aCA9IF9kZXB0aDtcbiAgICAgICAgdG90YWxIZWlnaHQgKz0gX2hlaWdodDtcbiAgICAgICAgb3V0cm93LnBvcyA9IHRvdGFsSGVpZ2h0O1xuICAgICAgICB0b3RhbEhlaWdodCArPSBfZGVwdGggKyBnYXA7IC8vIFxcQHlhcmdhcnJheWNyXG4gICAgICAgIGJvZHlbcl0gPSBvdXRyb3c7XG4gICAgfVxuXG4gICAgdmFyIG9mZnNldCA9IHRvdGFsSGVpZ2h0IC8gMiArIG9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0O1xuICAgIHZhciBjb2xEZXNjcmlwdGlvbnMgPSBncm91cC52YWx1ZS5jb2xzIHx8IFtdO1xuICAgIHZhciBjb2xzID0gW107XG4gICAgdmFyIGNvbFNlcCA9IHZvaWQgMDtcbiAgICB2YXIgY29sRGVzY3JOdW0gPSB2b2lkIDA7XG4gICAgZm9yIChjID0gMCwgY29sRGVzY3JOdW0gPSAwO1xuICAgIC8vIENvbnRpbnVlIHdoaWxlIGVpdGhlciB0aGVyZSBhcmUgbW9yZSBjb2x1bW5zIG9yIG1vcmUgY29sdW1uXG4gICAgLy8gZGVzY3JpcHRpb25zLCBzbyB0cmFpbGluZyBzZXBhcmF0b3JzIGRvbid0IGdldCBsb3N0LlxuICAgIGMgPCBuYyB8fCBjb2xEZXNjck51bSA8IGNvbERlc2NyaXB0aW9ucy5sZW5ndGg7ICsrYywgKytjb2xEZXNjck51bSkge1xuXG4gICAgICAgIHZhciBjb2xEZXNjciA9IGNvbERlc2NyaXB0aW9uc1tjb2xEZXNjck51bV0gfHwge307XG5cbiAgICAgICAgdmFyIGZpcnN0U2VwYXJhdG9yID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKGNvbERlc2NyLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgc2VwYXJhdG9yIGluIGEgcm93LCBhZGQgYSBzcGFjZVxuICAgICAgICAgICAgLy8gYmV0d2VlbiB0aGVtLlxuICAgICAgICAgICAgaWYgKCFmaXJzdFNlcGFyYXRvcikge1xuICAgICAgICAgICAgICAgIGNvbFNlcCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJhcnJheWNvbHNlcFwiXSwgW10pO1xuICAgICAgICAgICAgICAgIGNvbFNlcC5zdHlsZS53aWR0aCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kb3VibGVSdWxlU2VwICsgXCJlbVwiO1xuICAgICAgICAgICAgICAgIGNvbHMucHVzaChjb2xTZXApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY29sRGVzY3Iuc2VwYXJhdG9yID09PSBcInxcIikge1xuICAgICAgICAgICAgICAgIHZhciBfc2VwYXJhdG9yID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19zdHJldGNoeV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLnJ1bGVTcGFuKFwidmVydGljYWwtc2VwYXJhdG9yXCIsIDAuMDUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIF9zZXBhcmF0b3Iuc3R5bGUuaGVpZ2h0ID0gdG90YWxIZWlnaHQgKyBcImVtXCI7XG4gICAgICAgICAgICAgICAgX3NlcGFyYXRvci5zdHlsZS52ZXJ0aWNhbEFsaWduID0gLSh0b3RhbEhlaWdodCAtIG9mZnNldCkgKyBcImVtXCI7XG5cbiAgICAgICAgICAgICAgICBjb2xzLnB1c2goX3NlcGFyYXRvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIkludmFsaWQgc2VwYXJhdG9yIHR5cGU6IFwiICsgY29sRGVzY3Iuc2VwYXJhdG9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29sRGVzY3JOdW0rKztcbiAgICAgICAgICAgIGNvbERlc2NyID0gY29sRGVzY3JpcHRpb25zW2NvbERlc2NyTnVtXSB8fCB7fTtcbiAgICAgICAgICAgIGZpcnN0U2VwYXJhdG9yID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyA+PSBuYykge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc2Vwd2lkdGggPSB2b2lkIDA7XG4gICAgICAgIGlmIChjID4gMCB8fCBncm91cC52YWx1ZS5oc2tpcEJlZm9yZUFuZEFmdGVyKSB7XG4gICAgICAgICAgICBzZXB3aWR0aCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5kZWZsdChjb2xEZXNjci5wcmVnYXAsIGFycmF5Y29sc2VwKTtcbiAgICAgICAgICAgIGlmIChzZXB3aWR0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbFNlcCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJhcnJheWNvbHNlcFwiXSwgW10pO1xuICAgICAgICAgICAgICAgIGNvbFNlcC5zdHlsZS53aWR0aCA9IHNlcHdpZHRoICsgXCJlbVwiO1xuICAgICAgICAgICAgICAgIGNvbHMucHVzaChjb2xTZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNvbCA9IFtdO1xuICAgICAgICBmb3IgKHIgPSAwOyByIDwgbnI7ICsrcikge1xuICAgICAgICAgICAgdmFyIHJvdyA9IGJvZHlbcl07XG4gICAgICAgICAgICB2YXIgZWxlbSA9IHJvd1tjXTtcbiAgICAgICAgICAgIGlmICghZWxlbSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHNoaWZ0ID0gcm93LnBvcyAtIG9mZnNldDtcbiAgICAgICAgICAgIGVsZW0uZGVwdGggPSByb3cuZGVwdGg7XG4gICAgICAgICAgICBlbGVtLmhlaWdodCA9IHJvdy5oZWlnaHQ7XG4gICAgICAgICAgICBjb2wucHVzaCh7IHR5cGU6IFwiZWxlbVwiLCBlbGVtOiBlbGVtLCBzaGlmdDogc2hpZnQgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb2wgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVZMaXN0KHtcbiAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgICAgICAgIGNoaWxkcmVuOiBjb2xcbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgIGNvbCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJjb2wtYWxpZ24tXCIgKyAoY29sRGVzY3IuYWxpZ24gfHwgXCJjXCIpXSwgW2NvbF0pO1xuICAgICAgICBjb2xzLnB1c2goY29sKTtcblxuICAgICAgICBpZiAoYyA8IG5jIC0gMSB8fCBncm91cC52YWx1ZS5oc2tpcEJlZm9yZUFuZEFmdGVyKSB7XG4gICAgICAgICAgICBzZXB3aWR0aCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fdXRpbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5kZWZsdChjb2xEZXNjci5wb3N0Z2FwLCBhcnJheWNvbHNlcCk7XG4gICAgICAgICAgICBpZiAoc2Vwd2lkdGggIT09IDApIHtcbiAgICAgICAgICAgICAgICBjb2xTZXAgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2J1aWxkQ29tbW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWFrZVNwYW4oW1wiYXJyYXljb2xzZXBcIl0sIFtdKTtcbiAgICAgICAgICAgICAgICBjb2xTZXAuc3R5bGUud2lkdGggPSBzZXB3aWR0aCArIFwiZW1cIjtcbiAgICAgICAgICAgICAgICBjb2xzLnB1c2goY29sU2VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBib2R5ID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19idWlsZENvbW1vbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLm1ha2VTcGFuKFtcIm10YWJsZVwiXSwgY29scyk7XG4gICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYnVpbGRDb21tb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYWtlU3BhbihbXCJtb3JkXCJdLCBbYm9keV0sIG9wdGlvbnMpO1xufTtcblxudmFyIG1hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm10YWJsZVwiLCBncm91cC52YWx1ZS5ib2R5Lm1hcChmdW5jdGlvbiAocm93KSB7XG4gICAgICAgIHJldHVybiBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tYXRoTUxUcmVlX19bXCJhXCIgLyogZGVmYXVsdCAqL10uTWF0aE5vZGUoXCJtdHJcIiwgcm93Lm1hcChmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5NYXRoTm9kZShcIm10ZFwiLCBbX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85X19idWlsZE1hdGhNTF9fW1wiYlwiIC8qIGJ1aWxkR3JvdXAgKi9dKGNlbGwsIG9wdGlvbnMpXSk7XG4gICAgICAgIH0pKTtcbiAgICB9KSk7XG59O1xuXG4vLyBDb252aW5pZW50IGZ1bmN0aW9uIGZvciBhbGlnbmVkIGFuZCBhbGlnbmVkYXQgZW52aXJvbm1lbnRzLlxudmFyIGFsaWduZWRIYW5kbGVyID0gZnVuY3Rpb24gYWxpZ25lZEhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIHZhciByZXMgPSB7XG4gICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgY29sczogW10sXG4gICAgICAgIGFkZEpvdDogdHJ1ZVxuICAgIH07XG4gICAgcmVzID0gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBcImRpc3BsYXlcIik7XG5cbiAgICAvLyBEZXRlcm1pbmluZyBudW1iZXIgb2YgY29sdW1ucy5cbiAgICAvLyAxLiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgZ2l2ZW4sIHdlIHVzZSBpdCBhcyBhIG51bWJlciBvZiBjb2x1bW5zLFxuICAgIC8vICAgIGFuZCBtYWtlcyBzdXJlIHRoYXQgZWFjaCByb3cgZG9lc24ndCBleGNlZWQgdGhhdCBudW1iZXIuXG4gICAgLy8gMi4gT3RoZXJ3aXNlLCBqdXN0IGNvdW50IG51bWJlciBvZiBjb2x1bW5zID0gbWF4aW11bSBudW1iZXJcbiAgICAvLyAgICBvZiBjZWxscyBpbiBlYWNoIHJvdyAoXCJhbGlnbmVkXCIgbW9kZSAtLSBpc0FsaWduZWQgd2lsbCBiZSB0cnVlKS5cbiAgICAvL1xuICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIHByZXBlbmQgZW1wdHkgZ3JvdXAge30gYXQgYmVnaW5uaW5nIG9mIGV2ZXJ5IHNlY29uZFxuICAgIC8vIGNlbGwgaW4gZWFjaCByb3cgKHN0YXJ0aW5nIHdpdGggc2Vjb25kIGNlbGwpIHNvIHRoYXQgb3BlcmF0b3JzIGJlY29tZVxuICAgIC8vIGJpbmFyeS4gIFRoaXMgYmVoYXZpb3IgaXMgaW1wbGVtZW50ZWQgaW4gYW1zbWF0aCdzIFxcc3RhcnRAYWxpZ25lZC5cbiAgICB2YXIgbnVtTWF0aHMgPSB2b2lkIDA7XG4gICAgdmFyIG51bUNvbHMgPSAwO1xuICAgIHZhciBlbXB0eUdyb3VwID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fUGFyc2VOb2RlX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJvcmRncm91cFwiLCBbXSwgY29udGV4dC5tb2RlKTtcbiAgICBpZiAoYXJnc1swXSAmJiBhcmdzWzBdLnZhbHVlKSB7XG4gICAgICAgIHZhciBhcmcwID0gXCJcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzWzBdLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmcwICs9IGFyZ3NbMF0udmFsdWVbaV0udmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgbnVtTWF0aHMgPSBOdW1iZXIoYXJnMCk7XG4gICAgICAgIG51bUNvbHMgPSBudW1NYXRocyAqIDI7XG4gICAgfVxuICAgIHZhciBpc0FsaWduZWQgPSAhbnVtQ29scztcbiAgICByZXMudmFsdWUuYm9keS5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IHJvdy5sZW5ndGg7IF9pICs9IDIpIHtcbiAgICAgICAgICAgIC8vIE1vZGlmeSBvcmRncm91cCBub2RlIHdpdGhpbiBzdHlsaW5nIG5vZGVcbiAgICAgICAgICAgIHZhciBvcmRncm91cCA9IHJvd1tfaV0udmFsdWUudmFsdWVbMF07XG4gICAgICAgICAgICBvcmRncm91cC52YWx1ZS51bnNoaWZ0KGVtcHR5R3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNBbGlnbmVkKSB7XG4gICAgICAgICAgICAvLyBDYXNlIDFcbiAgICAgICAgICAgIHZhciBjdXJNYXRocyA9IHJvdy5sZW5ndGggLyAyO1xuICAgICAgICAgICAgaWYgKG51bU1hdGhzIDwgY3VyTWF0aHMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJUb28gbWFueSBtYXRoIGluIGEgcm93OiBcIiArIChcImV4cGVjdGVkIFwiICsgbnVtTWF0aHMgKyBcIiwgYnV0IGdvdCBcIiArIGN1ck1hdGhzKSwgcm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChudW1Db2xzIDwgcm93Lmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gQ2FzZSAyXG4gICAgICAgICAgICBudW1Db2xzID0gcm93Lmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gQWRqdXN0aW5nIGFsaWdubWVudC5cbiAgICAvLyBJbiBhbGlnbmVkIG1vZGUsIHdlIGFkZCBvbmUgXFxxcXVhZCBiZXR3ZWVuIGNvbHVtbnM7XG4gICAgLy8gb3RoZXJ3aXNlIHdlIGFkZCBub3RoaW5nLlxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IG51bUNvbHM7ICsrX2kyKSB7XG4gICAgICAgIHZhciBfYWxpZ24gPSBcInJcIjtcbiAgICAgICAgdmFyIF9wcmVnYXAgPSAwO1xuICAgICAgICBpZiAoX2kyICUgMiA9PT0gMSkge1xuICAgICAgICAgICAgX2FsaWduID0gXCJsXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoX2kyID4gMCAmJiBpc0FsaWduZWQpIHtcbiAgICAgICAgICAgIC8vIFwiYWxpZ25lZFwiIG1vZGUuXG4gICAgICAgICAgICBfcHJlZ2FwID0gMTsgLy8gYWRkIG9uZSBcXHF1YWRcbiAgICAgICAgfVxuICAgICAgICByZXMudmFsdWUuY29sc1tfaTJdID0ge1xuICAgICAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICAgICAgYWxpZ246IF9hbGlnbixcbiAgICAgICAgICAgIHByZWdhcDogX3ByZWdhcCxcbiAgICAgICAgICAgIHBvc3RnYXA6IDBcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG5cbi8vIEFycmF5cyBhcmUgcGFydCBvZiBMYVRlWCwgZGVmaW5lZCBpbiBsdHRhYi5kdHggc28gaXRzIGRvY3VtZW50YXRpb25cbi8vIGlzIHBhcnQgb2YgdGhlIHNvdXJjZTJlLnBkZiBmaWxlIG9mIExhVGVYMmUgc291cmNlIGRvY3VtZW50YXRpb24uXG4vLyB7ZGFycmF5fSBpcyBhbiB7YXJyYXl9IGVudmlyb25tZW50IHdoZXJlIGNlbGxzIGFyZSBzZXQgaW4gXFxkaXNwbGF5c3R5bGUsXG4vLyBhcyBkZWZpbmVkIGluIG5jY21hdGguc3R5LlxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZGVmaW5lRW52aXJvbm1lbnRfX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICBuYW1lczogW1wiYXJyYXlcIiwgXCJkYXJyYXlcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMVxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgICAgIHZhciBjb2xhbGlnbiA9IGFyZ3NbMF07XG4gICAgICAgIGNvbGFsaWduID0gY29sYWxpZ24udmFsdWUubWFwID8gY29sYWxpZ24udmFsdWUgOiBbY29sYWxpZ25dO1xuICAgICAgICB2YXIgY29scyA9IGNvbGFsaWduLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgdmFyIGNhID0gbm9kZS52YWx1ZTtcbiAgICAgICAgICAgIGlmIChcImxjclwiLmluZGV4T2YoY2EpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYWxpZ25cIixcbiAgICAgICAgICAgICAgICAgICAgYWxpZ246IGNhXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2EgPT09IFwifFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICAgICAgc2VwYXJhdG9yOiBcInxcIlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJVbmtub3duIGNvbHVtbiBhbGlnbm1lbnQ6IFwiICsgbm9kZS52YWx1ZSwgbm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVzID0ge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgY29sczogY29scyxcbiAgICAgICAgICAgIGhza2lwQmVmb3JlQW5kQWZ0ZXI6IHRydWUgLy8gXFxAcHJlYW1ibGUgaW4gbHR0YWIuZHR4XG4gICAgICAgIH07XG4gICAgICAgIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHJlcywgZENlbGxTdHlsZShjb250ZXh0LmVudk5hbWUpKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBodG1sQnVpbGRlcixcbiAgICBtYXRobWxCdWlsZGVyOiBtYXRobWxCdWlsZGVyXG59KTtcblxuLy8gVGhlIG1hdHJpeCBlbnZpcm9ubWVudHMgb2YgYW1zbWF0aCBidWlsZHMgb24gdGhlIGFycmF5IGVudmlyb25tZW50XG4vLyBvZiBMYVRlWCwgd2hpY2ggaXMgZGlzY3Vzc2VkIGFib3ZlLlxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZGVmaW5lRW52aXJvbm1lbnRfX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICBuYW1lczogW1wibWF0cml4XCIsIFwicG1hdHJpeFwiLCBcImJtYXRyaXhcIiwgXCJCbWF0cml4XCIsIFwidm1hdHJpeFwiLCBcIlZtYXRyaXhcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMFxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0KSB7XG4gICAgICAgIHZhciBkZWxpbWl0ZXJzID0ge1xuICAgICAgICAgICAgXCJtYXRyaXhcIjogbnVsbCxcbiAgICAgICAgICAgIFwicG1hdHJpeFwiOiBbXCIoXCIsIFwiKVwiXSxcbiAgICAgICAgICAgIFwiYm1hdHJpeFwiOiBbXCJbXCIsIFwiXVwiXSxcbiAgICAgICAgICAgIFwiQm1hdHJpeFwiOiBbXCJcXFxce1wiLCBcIlxcXFx9XCJdLFxuICAgICAgICAgICAgXCJ2bWF0cml4XCI6IFtcInxcIiwgXCJ8XCJdLFxuICAgICAgICAgICAgXCJWbWF0cml4XCI6IFtcIlxcXFxWZXJ0XCIsIFwiXFxcXFZlcnRcIl1cbiAgICAgICAgfVtjb250ZXh0LmVudk5hbWVdO1xuICAgICAgICB2YXIgcmVzID0ge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgaHNraXBCZWZvcmVBbmRBZnRlcjogZmFsc2UgLy8gXFxoc2tpcCAtXFxhcnJheWNvbHNlcCBpbiBhbXNtYXRoXG4gICAgICAgIH07XG4gICAgICAgIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHJlcywgZENlbGxTdHlsZShjb250ZXh0LmVudk5hbWUpKTtcbiAgICAgICAgaWYgKGRlbGltaXRlcnMpIHtcbiAgICAgICAgICAgIHJlcyA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1BhcnNlTm9kZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwibGVmdHJpZ2h0XCIsIHtcbiAgICAgICAgICAgICAgICBib2R5OiBbcmVzXSxcbiAgICAgICAgICAgICAgICBsZWZ0OiBkZWxpbWl0ZXJzWzBdLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBkZWxpbWl0ZXJzWzFdXG4gICAgICAgICAgICB9LCBjb250ZXh0Lm1vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxufSk7XG5cbi8vIEEgY2FzZXMgZW52aXJvbm1lbnQgKGluIGFtc21hdGguc3R5KSBpcyBhbG1vc3QgZXF1aXZhbGVudCB0b1xuLy8gXFxkZWZcXGFycmF5c3RyZXRjaHsxLjJ9JVxuLy8gXFxsZWZ0XFx7XFxiZWdpbnthcnJheX17QHt9bEB7XFxxdWFkfWxAe319IOKApiBcXGVuZHthcnJheX1cXHJpZ2h0LlxuLy8ge2RjYXNlc30gaXMgYSB7Y2FzZXN9IGVudmlyb25tZW50IHdoZXJlIGNlbGxzIGFyZSBzZXQgaW4gXFxkaXNwbGF5c3R5bGUsXG4vLyBhcyBkZWZpbmVkIGluIG1hdGh0b29scy5zdHkuXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kZWZpbmVFbnZpcm9ubWVudF9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJhcnJheVwiLFxuICAgIG5hbWVzOiBbXCJjYXNlc1wiLCBcImRjYXNlc1wiXSxcbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAwXG4gICAgfSxcbiAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIHJlcyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIGFycmF5c3RyZXRjaDogMS4yLFxuICAgICAgICAgICAgY29sczogW3tcbiAgICAgICAgICAgICAgICB0eXBlOiBcImFsaWduXCIsXG4gICAgICAgICAgICAgICAgYWxpZ246IFwibFwiLFxuICAgICAgICAgICAgICAgIHByZWdhcDogMCxcbiAgICAgICAgICAgICAgICAvLyBUT0RPKGtldmluYikgZ2V0IHRoZSBjdXJyZW50IHN0eWxlLlxuICAgICAgICAgICAgICAgIC8vIEZvciBub3cgd2UgdXNlIHRoZSBtZXRyaWNzIGZvciBURVhUIHN0eWxlIHdoaWNoIGlzIHdoYXQgd2Ugd2VyZVxuICAgICAgICAgICAgICAgIC8vIGRvaW5nIGJlZm9yZS4gIEJlZm9yZSBhdHRlbXB0aW5nIHRvIGdldCB0aGUgY3VycmVudCBzdHlsZSB3ZVxuICAgICAgICAgICAgICAgIC8vIHNob3VsZCBsb29rIGF0IFRlWCdzIGJlaGF2aW9yIGVzcGVjaWFsbHkgZm9yIFxcb3ZlciBhbmQgbWF0cmljZXMuXG4gICAgICAgICAgICAgICAgcG9zdGdhcDogMS4wIC8qIDFlbSBxdWFkICovXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICAgICAgICAgIGFsaWduOiBcImxcIixcbiAgICAgICAgICAgICAgICBwcmVnYXA6IDAsXG4gICAgICAgICAgICAgICAgcG9zdGdhcDogMFxuICAgICAgICAgICAgfV1cbiAgICAgICAgfTtcbiAgICAgICAgcmVzID0gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBkQ2VsbFN0eWxlKGNvbnRleHQuZW52TmFtZSkpO1xuICAgICAgICByZXMgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19QYXJzZU5vZGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcImxlZnRyaWdodFwiLCB7XG4gICAgICAgICAgICBib2R5OiBbcmVzXSxcbiAgICAgICAgICAgIGxlZnQ6IFwiXFxcXHtcIixcbiAgICAgICAgICAgIHJpZ2h0OiBcIi5cIlxuICAgICAgICB9LCBjb250ZXh0Lm1vZGUpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGh0bWxCdWlsZGVyLFxuICAgIG1hdGhtbEJ1aWxkZXI6IG1hdGhtbEJ1aWxkZXJcbn0pO1xuXG4vLyBBbiBhbGlnbmVkIGVudmlyb25tZW50IGlzIGxpa2UgdGhlIGFsaWduKiBlbnZpcm9ubWVudFxuLy8gZXhjZXB0IGl0IG9wZXJhdGVzIHdpdGhpbiBtYXRoIG1vZGUuXG4vLyBOb3RlIHRoYXQgd2UgYXNzdW1lIFxcbm9tYWxsaW5lc2tpcGxpbWl0IHRvIGJlIHplcm8sXG4vLyBzbyB0aGF0IFxcc3RydXRAIGlzIHRoZSBzYW1lIGFzIFxcc3RydXQuXG5PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kZWZpbmVFbnZpcm9ubWVudF9fW1wiYlwiIC8qIGRlZmF1bHQgKi9dKSh7XG4gICAgdHlwZTogXCJhcnJheVwiLFxuICAgIG5hbWVzOiBbXCJhbGlnbmVkXCJdLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG51bUFyZ3M6IDBcbiAgICB9LFxuICAgIGhhbmRsZXI6IGFsaWduZWRIYW5kbGVyLFxuICAgIGh0bWxCdWlsZGVyOiBodG1sQnVpbGRlcixcbiAgICBtYXRobWxCdWlsZGVyOiBtYXRobWxCdWlsZGVyXG59KTtcblxuLy8gQSBnYXRoZXJlZCBlbnZpcm9ubWVudCBpcyBsaWtlIGFuIGFycmF5IGVudmlyb25tZW50IHdpdGggb25lIGNlbnRlcmVkXG4vLyBjb2x1bW4sIGJ1dCB3aGVyZSByb3dzIGFyZSBjb25zaWRlcmVkIGxpbmVzIHNvIGdldCBcXGpvdCBsaW5lIHNwYWNpbmdcbi8vIGFuZCBjb250ZW50cyBhcmUgc2V0IGluIFxcZGlzcGxheXN0eWxlLlxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZGVmaW5lRW52aXJvbm1lbnRfX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICBuYW1lczogW1wiZ2F0aGVyZWRcIl0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbnVtQXJnczogMFxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0KSB7XG4gICAgICAgIHZhciByZXMgPSB7XG4gICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICBjb2xzOiBbe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiYWxpZ25cIixcbiAgICAgICAgICAgICAgICBhbGlnbjogXCJjXCJcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgYWRkSm90OiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHJlcywgXCJkaXNwbGF5XCIpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0sXG4gICAgaHRtbEJ1aWxkZXI6IGh0bWxCdWlsZGVyLFxuICAgIG1hdGhtbEJ1aWxkZXI6IG1hdGhtbEJ1aWxkZXJcbn0pO1xuXG4vLyBhbGlnbmF0IGVudmlyb25tZW50IGlzIGxpa2UgYW4gYWxpZ24gZW52aXJvbm1lbnQsIGJ1dCBvbmUgbXVzdCBleHBsaWNpdGx5XG4vLyBzcGVjaWZ5IG1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMgaW4gZWFjaCByb3csIGFuZCBjYW4gYWRqdXN0IHNwYWNpbmcgYmV0d2VlblxuLy8gZWFjaCBjb2x1bW5zLlxuT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZGVmaW5lRW52aXJvbm1lbnRfX1tcImJcIiAvKiBkZWZhdWx0ICovXSkoe1xuICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICBuYW1lczogW1wiYWxpZ25lZGF0XCJdLFxuICAgIC8vIE9uZSBmb3IgbnVtYmVyZWQgYW5kIGZvciB1bm51bWJlcmVkO1xuICAgIC8vIGJ1dCwgS2FUZVggZG9lc24ndCBzdXBwb3J0cyBtYXRoIG51bWJlcmluZyB5ZXQsXG4gICAgLy8gdGhleSBtYWtlIG5vIGRpZmZlcmVuY2UgZm9yIG5vdy5cbiAgICBwcm9wczoge1xuICAgICAgICBudW1BcmdzOiAxXG4gICAgfSxcbiAgICBoYW5kbGVyOiBhbGlnbmVkSGFuZGxlcixcbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxufSk7XG5cbi8qKiovIH0pLFxuLyogMTQ0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfdG9Db25zdW1hYmxlQXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfdG9Db25zdW1hYmxlQXJyYXlfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfdG9Db25zdW1hYmxlQXJyYXlfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19MZXhlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Mik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19Ub2tlbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19tYWNyb3NfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ2KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1BhcnNlRXJyb3JfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X29iamVjdF9hc3NpZ25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ3KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfb2JqZWN0X2Fzc2lnbl9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X29iamVjdF9hc3NpZ25fXyk7XG5cblxuXG5cbi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSDigJxndWxsZXTigJ0gd2hlcmUgbWFjcm9zIGFyZSBleHBhbmRlZFxuICogdW50aWwgb25seSBub24tbWFjcm8gdG9rZW5zIHJlbWFpbi5cbiAqL1xuXG5cblxuXG5cblxuXG5cbnZhciBNYWNyb0V4cGFuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE1hY3JvRXhwYW5kZXIoaW5wdXQsIG1hY3JvcywgbW9kZSkge1xuICAgICAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19fZGVmYXVsdCgpKHRoaXMsIE1hY3JvRXhwYW5kZXIpO1xuXG4gICAgICAgIHRoaXMubGV4ZXIgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19MZXhlcl9fW1wiY1wiIC8qIGRlZmF1bHQgKi9dKGlucHV0KTtcbiAgICAgICAgdGhpcy5tYWNyb3MgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfb2JqZWN0X2Fzc2lnbl9fX2RlZmF1bHQoKSh7fSwgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19tYWNyb3NfX1tcImFcIiAvKiBkZWZhdWx0ICovXSwgbWFjcm9zKTtcbiAgICAgICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICAgICAgdGhpcy5zdGFjayA9IFtdOyAvLyBjb250YWlucyB0b2tlbnMgaW4gUkVWRVJTRSBvcmRlclxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN3aXRjaGVzIGJldHdlZW4gXCJ0ZXh0XCIgYW5kIFwibWF0aFwiIG1vZGVzLlxuICAgICAqL1xuXG5cbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCgpKE1hY3JvRXhwYW5kZXIsIFt7XG4gICAgICAgIGtleTogXCJzd2l0Y2hNb2RlXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzd2l0Y2hNb2RlKG5ld01vZGUpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZSA9IG5ld01vZGU7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJucyB0aGUgdG9wbW9zdCB0b2tlbiBvbiB0aGUgc3RhY2ssIHdpdGhvdXQgZXhwYW5kaW5nIGl0LlxuICAgICAgICAgKiBTaW1pbGFyIGluIGJlaGF2aW9yIHRvIFRlWCdzIGBcXGZ1dHVyZWxldGAuXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiZnV0dXJlXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBmdXR1cmUoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnB1c2hUb2tlbih0aGlzLmxleGVyLmxleCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVtb3ZlIGFuZCByZXR1cm4gdGhlIG5leHQgdW5leHBhbmRlZCB0b2tlbi5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJwb3BUb2tlblwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcG9wVG9rZW4oKSB7XG4gICAgICAgICAgICB0aGlzLmZ1dHVyZSgpOyAvLyBlbnN1cmUgbm9uLWVtcHR5IHN0YWNrXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5wb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGQgYSBnaXZlbiB0b2tlbiB0byB0aGUgdG9rZW4gc3RhY2suICBJbiBwYXJ0aWN1bGFyLCB0aGlzIGdldCBiZSB1c2VkXG4gICAgICAgICAqIHRvIHB1dCBiYWNrIGEgdG9rZW4gcmV0dXJuZWQgZnJvbSBvbmUgb2YgdGhlIG90aGVyIG1ldGhvZHMuXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwicHVzaFRva2VuXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBwdXNoVG9rZW4odG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaCh0b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQXBwZW5kIGFuIGFycmF5IG9mIHRva2VucyB0byB0aGUgdG9rZW4gc3RhY2suXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwicHVzaFRva2Vuc1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcHVzaFRva2Vucyh0b2tlbnMpIHtcbiAgICAgICAgICAgIHZhciBfc3RhY2s7XG5cbiAgICAgICAgICAgIChfc3RhY2sgPSB0aGlzLnN0YWNrKS5wdXNoLmFwcGx5KF9zdGFjaywgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc190b0NvbnN1bWFibGVBcnJheV9fX2RlZmF1bHQoKSh0b2tlbnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb25zdW1lIGFsbCBmb2xsb3dpbmcgc3BhY2UgdG9rZW5zLCB3aXRob3V0IGV4cGFuc2lvbi5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJjb25zdW1lU3BhY2VzXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBjb25zdW1lU3BhY2VzKCkge1xuICAgICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9IHRoaXMuZnV0dXJlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnRleHQgPT09IFwiIFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbnN1bWUgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYXJndW1lbnRzIGZyb20gdGhlIHRva2VuIHN0cmVhbSxcbiAgICAgICAgICogYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJjb25zdW1lQXJnc1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY29uc3VtZUFyZ3MobnVtQXJncykge1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIC8vIG9idGFpbiBhcmd1bWVudHMsIGVpdGhlciBzaW5nbGUgdG9rZW4gb3IgYmFsYW5jZWQge+KApn0gZ3JvdXBcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7IC8vIGlnbm9yZSBzcGFjZXMgYmVmb3JlIGVhY2ggYXJndW1lbnRcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnRPZkFyZyA9IHRoaXMucG9wVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRPZkFyZy50ZXh0ID09PSBcIntcIikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYXJnID0gW107XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZXB0aCA9IDE7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChkZXB0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvayA9IHRoaXMucG9wVG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZy5wdXNoKHRvayk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rLnRleHQgPT09IFwie1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytkZXB0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodG9rLnRleHQgPT09IFwifVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kZXB0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodG9rLnRleHQgPT09IFwiRU9GXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJFbmQgb2YgaW5wdXQgaW4gbWFjcm8gYXJndW1lbnRcIiwgc3RhcnRPZkFyZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJnLnBvcCgpOyAvLyByZW1vdmUgbGFzdCB9XG4gICAgICAgICAgICAgICAgICAgIGFyZy5yZXZlcnNlKCk7IC8vIGxpa2UgYWJvdmUsIHRvIGZpdCBpbiB3aXRoIHN0YWNrIG9yZGVyXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBhcmc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydE9mQXJnLnRleHQgPT09IFwiRU9GXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fUGFyc2VFcnJvcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKFwiRW5kIG9mIGlucHV0IGV4cGVjdGluZyBtYWNybyBhcmd1bWVudFwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gW3N0YXJ0T2ZBcmddO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEV4cGFuZCB0aGUgbmV4dCB0b2tlbiBvbmx5IG9uY2UgaWYgcG9zc2libGUuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSB0b2tlbiBpcyBleHBhbmRlZCwgdGhlIHJlc3VsdGluZyB0b2tlbnMgd2lsbCBiZSBwdXNoZWQgb250b1xuICAgICAgICAgKiB0aGUgc3RhY2sgaW4gcmV2ZXJzZSBvcmRlciBhbmQgd2lsbCBiZSByZXR1cm5lZCBhcyBhbiBhcnJheSxcbiAgICAgICAgICogYWxzbyBpbiByZXZlcnNlIG9yZGVyLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiBub3QsIHRoZSBuZXh0IHRva2VuIHdpbGwgYmUgcmV0dXJuZWQgd2l0aG91dCByZW1vdmluZyBpdFxuICAgICAgICAgKiBmcm9tIHRoZSBzdGFjay4gIFRoaXMgY2FzZSBjYW4gYmUgZGV0ZWN0ZWQgYnkgYSBgVG9rZW5gIHJldHVybiB2YWx1ZVxuICAgICAgICAgKiBpbnN0ZWFkIG9mIGFuIGBBcnJheWAgcmV0dXJuIHZhbHVlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJbiBlaXRoZXIgY2FzZSwgdGhlIG5leHQgdG9rZW4gd2lsbCBiZSBvbiB0aGUgdG9wIG9mIHRoZSBzdGFjayxcbiAgICAgICAgICogb3IgdGhlIHN0YWNrIHdpbGwgYmUgZW1wdHkuXG4gICAgICAgICAqXG4gICAgICAgICAqIFVzZWQgdG8gaW1wbGVtZW50IGBleHBhbmRBZnRlckZ1dHVyZWAgYW5kIGBleHBhbmROZXh0VG9rZW5gLlxuICAgICAgICAgKlxuICAgICAgICAgKiBBdCB0aGUgbW9tZW50LCBtYWNybyBleHBhbnNpb24gZG9lc24ndCBoYW5kbGUgZGVsaW1pdGVkIG1hY3JvcyxcbiAgICAgICAgICogaS5lLiB0aGluZ3MgbGlrZSB0aG9zZSBkZWZpbmVkIGJ5IFxcZGVmXFxmb28jMVxcZW5ke+KApn0uXG4gICAgICAgICAqIFNlZSB0aGUgVGVYIGJvb2sgcGFnZSAyMDJmZi4gZm9yIGRldGFpbHMgb24gaG93IHRob3NlIHNob3VsZCBiZWhhdmUuXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiZXhwYW5kT25jZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZXhwYW5kT25jZSgpIHtcbiAgICAgICAgICAgIHZhciB0b3BUb2tlbiA9IHRoaXMucG9wVG9rZW4oKTtcbiAgICAgICAgICAgIHZhciBuYW1lID0gdG9wVG9rZW4udGV4dDtcbiAgICAgICAgICAgIHZhciBpc01hY3JvID0gbmFtZS5jaGFyQXQoMCkgPT09IFwiXFxcXFwiO1xuICAgICAgICAgICAgaWYgKGlzTWFjcm8gJiYgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19MZXhlcl9fW1wiYlwiIC8qIGNvbnRyb2xXb3JkUmVnZXggKi9dLnRlc3QobmFtZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBDb25zdW1lIGFsbCBzcGFjZXMgYWZ0ZXIgXFxtYWNybyAoYnV0IG5vdCBcXFxcLCBcXCcsIGV0Yy4pXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMubWFjcm9zLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgLy8gRnVsbHkgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICB0aGlzLnB1c2hUb2tlbih0b3BUb2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvcFRva2VuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgX2dldEV4cGFuc2lvbjIgPSB0aGlzLl9nZXRFeHBhbnNpb24obmFtZSksXG4gICAgICAgICAgICAgICAgdG9rZW5zID0gX2dldEV4cGFuc2lvbjIudG9rZW5zLFxuICAgICAgICAgICAgICAgIG51bUFyZ3MgPSBfZ2V0RXhwYW5zaW9uMi5udW1BcmdzO1xuXG4gICAgICAgICAgICB2YXIgZXhwYW5zaW9uID0gdG9rZW5zO1xuICAgICAgICAgICAgaWYgKG51bUFyZ3MpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncyA9IHRoaXMuY29uc3VtZUFyZ3MobnVtQXJncyk7XG4gICAgICAgICAgICAgICAgLy8gcGFzdGUgYXJndW1lbnRzIGluIHBsYWNlIG9mIHRoZSBwbGFjZWhvbGRlcnNcbiAgICAgICAgICAgICAgICBleHBhbnNpb24gPSBleHBhbnNpb24uc2xpY2UoKTsgLy8gbWFrZSBhIHNoYWxsb3cgY29weVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBleHBhbnNpb24ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRvayA9IGV4cGFuc2lvbltpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvay50ZXh0ID09PSBcIiNcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19QYXJzZUVycm9yX19bXCJhXCIgLyogZGVmYXVsdCAqL10oXCJJbmNvbXBsZXRlIHBsYWNlaG9sZGVyIGF0IGVuZCBvZiBtYWNybyBib2R5XCIsIHRvayk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2sgPSBleHBhbnNpb25bLS1pXTsgLy8gbmV4dCB0b2tlbiBvbiBzdGFja1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvay50ZXh0ID09PSBcIiNcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMjIOKGkiAjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5zaW9uLnNwbGljZShpICsgMSwgMSk7IC8vIGRyb3AgZmlyc3QgI1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgvXlsxLTldJC8udGVzdCh0b2sudGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2V4cGFuc2lvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcGxhY2UgdGhlIHBsYWNlaG9sZGVyIHdpdGggdGhlIGluZGljYXRlZCBhcmd1bWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfZXhwYW5zaW9uID0gZXhwYW5zaW9uKS5zcGxpY2UuYXBwbHkoX2V4cGFuc2lvbiwgW2ksIDJdLmNvbmNhdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X19fZGVmYXVsdCgpKGFyZ3NbK3Rvay50ZXh0IC0gMV0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1BhcnNlRXJyb3JfX1tcImFcIiAvKiBkZWZhdWx0ICovXShcIk5vdCBhIHZhbGlkIGFyZ3VtZW50IG51bWJlclwiLCB0b2spO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ29uY2F0ZW5hdGUgZXhwYW5zaW9uIG9udG8gdG9wIG9mIHN0YWNrLlxuICAgICAgICAgICAgdGhpcy5wdXNoVG9rZW5zKGV4cGFuc2lvbik7XG4gICAgICAgICAgICByZXR1cm4gZXhwYW5zaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEV4cGFuZCB0aGUgbmV4dCB0b2tlbiBvbmx5IG9uY2UgKGlmIHBvc3NpYmxlKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nXG4gICAgICAgICAqIHRvcCB0b2tlbiBvbiB0aGUgc3RhY2sgKHdpdGhvdXQgcmVtb3ZpbmcgYW55dGhpbmcgZnJvbSB0aGUgc3RhY2spLlxuICAgICAgICAgKiBTaW1pbGFyIGluIGJlaGF2aW9yIHRvIFRlWCdzIGBcXGV4cGFuZGFmdGVyXFxmdXR1cmVsZXRgLlxuICAgICAgICAgKiBFcXVpdmFsZW50IHRvIGV4cGFuZE9uY2UoKSBmb2xsb3dlZCBieSBmdXR1cmUoKS5cbiAgICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJleHBhbmRBZnRlckZ1dHVyZVwiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZXhwYW5kQWZ0ZXJGdXR1cmUoKSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZE9uY2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZ1dHVyZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlY3Vyc2l2ZWx5IGV4cGFuZCBmaXJzdCB0b2tlbiwgdGhlbiByZXR1cm4gZmlyc3Qgbm9uLWV4cGFuZGFibGUgdG9rZW4uXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiZXhwYW5kTmV4dFRva2VuXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBleHBhbmROZXh0VG9rZW4oKSB7XG4gICAgICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGV4cGFuZGVkID0gdGhpcy5leHBhbmRPbmNlKCk7XG4gICAgICAgICAgICAgICAgLy8gZXhwYW5kT25jZSByZXR1cm5zIFRva2VuIGlmIGFuZCBvbmx5IGlmIGl0J3MgZnVsbHkgZXhwYW5kZWQuXG4gICAgICAgICAgICAgICAgaWYgKGV4cGFuZGVkIGluc3RhbmNlb2YgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19Ub2tlbl9fW1wiYVwiIC8qIFRva2VuICovXSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBcXHJlbGF4IHN0b3BzIHRoZSBleHBhbnNpb24sIGJ1dCBzaG91bGRuJ3QgZ2V0IHJldHVybmVkIChhXG4gICAgICAgICAgICAgICAgICAgIC8vIG51bGwgcmV0dXJuIHZhbHVlIGNvdWxkbid0IGdldCBpbXBsZW1lbnRlZCBhcyBhIGZ1bmN0aW9uKS5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGFuZGVkLnRleHQgPT09IFwiXFxcXHJlbGF4XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5wb3AoKTsgLy8gPT09IGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEZsb3cgdW5hYmxlIHRvIGZpZ3VyZSBvdXQgdGhhdCB0aGlzIHBhdGh3YXkgaXMgaW1wb3NzaWJsZS5cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy80ODA4XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnJlYWNoYWJsZVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHVybnMgdGhlIGV4cGFuZGVkIG1hY3JvIGFzIGEgcmV2ZXJzZWQgYXJyYXkgb2YgdG9rZW5zIGFuZCBhIG1hY3JvXG4gICAgICAgICAqIGFyZ3VtZW50IGNvdW50LlxuICAgICAgICAgKiBDYWNoZXMgbWFjcm8gZXhwYW5zaW9ucyBmb3IgdGhvc2UgdGhhdCB3ZXJlIGRlZmluZWQgc2ltcGxlIFRlWCBzdHJpbmdzLlxuICAgICAgICAgKi9cblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcIl9nZXRFeHBhbnNpb25cIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRFeHBhbnNpb24obmFtZSkge1xuICAgICAgICAgICAgdmFyIGRlZmluaXRpb24gPSB0aGlzLm1hY3Jvc1tuYW1lXTtcbiAgICAgICAgICAgIHZhciBleHBhbnNpb24gPSB0eXBlb2YgZGVmaW5pdGlvbiA9PT0gXCJmdW5jdGlvblwiID8gZGVmaW5pdGlvbih0aGlzKSA6IGRlZmluaXRpb247XG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4cGFuc2lvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHZhciBudW1BcmdzID0gMDtcbiAgICAgICAgICAgICAgICBpZiAoZXhwYW5zaW9uLmluZGV4T2YoXCIjXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RyaXBwZWQgPSBleHBhbnNpb24ucmVwbGFjZSgvIyMvZywgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChzdHJpcHBlZC5pbmRleE9mKFwiI1wiICsgKG51bUFyZ3MgKyAxKSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICArK251bUFyZ3M7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGJvZHlMZXhlciA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX0xleGVyX19bXCJjXCIgLyogZGVmYXVsdCAqL10oZXhwYW5zaW9uKTtcbiAgICAgICAgICAgICAgICB2YXIgdG9rZW5zID0gW107XG4gICAgICAgICAgICAgICAgdmFyIHRvayA9IGJvZHlMZXhlci5sZXgoKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAodG9rLnRleHQgIT09IFwiRU9GXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnB1c2godG9rKTtcbiAgICAgICAgICAgICAgICAgICAgdG9rID0gYm9keUxleGVyLmxleCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b2tlbnMucmV2ZXJzZSgpOyAvLyB0byBmaXQgaW4gd2l0aCBzdGFjayB1c2luZyBwdXNoIGFuZCBwb3BcbiAgICAgICAgICAgICAgICB2YXIgZXhwYW5kZWQgPSB7IHRva2VuczogdG9rZW5zLCBudW1BcmdzOiBudW1BcmdzIH07XG4gICAgICAgICAgICAgICAgLy8gQ2Fubm90IGNhY2hlIGEgbWFjcm8gZGVmaW5lZCB1c2luZyBhIGZ1bmN0aW9uIHNpbmNlIGl0IHJlbGllcyBvblxuICAgICAgICAgICAgICAgIC8vIHBhcnNlciBjb250ZXh0LlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVmaW5pdGlvbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFjcm9zW25hbWVdID0gZXhwYW5kZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBleHBhbmRlZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGV4cGFuc2lvbjtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBNYWNyb0V4cGFuZGVyO1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKE1hY3JvRXhwYW5kZXIpO1xuXG4vKioqLyB9KSxcbi8qIDE0NSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5mdW5jdGlvbiBnZXRSZWxvY2F0YWJsZShyZSkge1xuICAvLyBJbiB0aGUgZnV0dXJlLCB0aGlzIGNvdWxkIHVzZSBhIFdlYWtNYXAgaW5zdGVhZCBvZiBhbiBleHBhbmRvLlxuICBpZiAoIXJlLl9fbWF0Y2hBdFJlbG9jYXRhYmxlKSB7XG4gICAgLy8gRGlzanVuY3Rpb25zIGFyZSB0aGUgbG93ZXN0LXByZWNlZGVuY2Ugb3BlcmF0b3IsIHNvIHdlIGNhbiBtYWtlIGFueVxuICAgIC8vIHBhdHRlcm4gbWF0Y2ggdGhlIGVtcHR5IHN0cmluZyBieSBhcHBlbmRpbmcgYHwoKWAgdG8gaXQ6XG4gICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXBhdHRlcm5zXG4gICAgdmFyIHNvdXJjZSA9IHJlLnNvdXJjZSArICd8KCknO1xuXG4gICAgLy8gV2UgYWx3YXlzIG1ha2UgdGhlIG5ldyByZWdleCBnbG9iYWwuXG4gICAgdmFyIGZsYWdzID0gJ2cnICsgKHJlLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgKyAocmUubXVsdGlsaW5lID8gJ20nIDogJycpICsgKHJlLnVuaWNvZGUgPyAndScgOiAnJylcbiAgICAvLyBzdGlja3kgKC8uLi4veSkgZG9lc24ndCBtYWtlIHNlbnNlIGluIGNvbmp1bmN0aW9uIHdpdGggb3VyIHJlbG9jYXRpb25cbiAgICAvLyBsb2dpYywgc28gd2UgaWdub3JlIGl0IGhlcmUuXG4gICAgO1xuXG4gICAgcmUuX19tYXRjaEF0UmVsb2NhdGFibGUgPSBuZXcgUmVnRXhwKHNvdXJjZSwgZmxhZ3MpO1xuICB9XG4gIHJldHVybiByZS5fX21hdGNoQXRSZWxvY2F0YWJsZTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hBdChyZSwgc3RyLCBwb3MpIHtcbiAgaWYgKHJlLmdsb2JhbCB8fCByZS5zdGlja3kpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21hdGNoQXQoLi4uKTogT25seSBub24tZ2xvYmFsIHJlZ2V4ZXMgYXJlIHN1cHBvcnRlZCcpO1xuICB9XG4gIHZhciByZWxvYyA9IGdldFJlbG9jYXRhYmxlKHJlKTtcbiAgcmVsb2MubGFzdEluZGV4ID0gcG9zO1xuICB2YXIgbWF0Y2ggPSByZWxvYy5leGVjKHN0cik7XG4gIC8vIExhc3QgY2FwdHVyaW5nIGdyb3VwIGlzIG91ciBzZW50aW5lbCB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSByZWdleFxuICAvLyBtYXRjaGVkIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi5cbiAgaWYgKG1hdGNoW21hdGNoLmxlbmd0aCAtIDFdID09IG51bGwpIHtcbiAgICAvLyBPcmlnaW5hbCByZWdleCBtYXRjaGVkLlxuICAgIG1hdGNoLmxlbmd0aCA9IG1hdGNoLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hBdDtcblxuLyoqKi8gfSksXG4vKiAxNDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiB1bnVzZWQgaGFybW9ueSBleHBvcnQgZGVmaW5lTWFjcm8gKi9cbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3N1Ym1vZHVsZXNfa2F0ZXhfZm9udHNfZm9udE1ldHJpY3NEYXRhX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU5KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX3N5bWJvbHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fdXRpbHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19Ub2tlbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cbi8qKlxuICogUHJlZGVmaW5lZCBtYWNyb3MgZm9yIEthVGVYLlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBkZWZpbmUgc29tZSBjb21tYW5kcyBpbiB0ZXJtcyBvZiBvdGhlcnMuXG4gKi9cblxuXG5cblxuXG5cbi8qKlxuICogUHJvdmlkZXMgY29udGV4dCB0byBtYWNyb3MgZGVmaW5lZCBieSBmdW5jdGlvbnMuIEltcGxlbWVudGVkIGJ5XG4gKiBNYWNyb0V4cGFuZGVyLlxuICovXG5cblxuLyoqIE1hY3JvIHRva2VucyAoaW4gcmV2ZXJzZSBvcmRlcikuICovXG5cblxudmFyIGJ1aWx0aW5NYWNyb3MgPSB7fTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoYnVpbHRpbk1hY3Jvcyk7XG5cbi8vIFRoaXMgZnVuY3Rpb24gbWlnaHQgb25lIGRheSBhY2NlcHQgYW4gYWRkaXRpb25hbCBhcmd1bWVudCBhbmQgZG8gbW9yZSB0aGluZ3MuXG5mdW5jdGlvbiBkZWZpbmVNYWNybyhuYW1lLCBib2R5KSB7XG4gICAgYnVpbHRpbk1hY3Jvc1tuYW1lXSA9IGJvZHk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIG1hY3JvIHRvb2xzXG5cbi8vIExhVGVYJ3MgXFxAZmlyc3RvZnR3b3sjMX17IzJ9IGV4cGFuZHMgdG8gIzEsIHNraXBwaW5nICMyXG4vLyBUZVggc291cmNlOiBcXGxvbmdcXGRlZlxcQGZpcnN0b2Z0d28jMSMyeyMxfVxuZGVmaW5lTWFjcm8oXCJcXFxcQGZpcnN0b2Z0d29cIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgYXJncyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMik7XG4gICAgcmV0dXJuIHsgdG9rZW5zOiBhcmdzWzBdLCBudW1BcmdzOiAwIH07XG59KTtcblxuLy8gTGFUZVgncyBcXEBzZWNvbmRvZnR3b3sjMX17IzJ9IGV4cGFuZHMgdG8gIzIsIHNraXBwaW5nICMxXG4vLyBUZVggc291cmNlOiBcXGxvbmdcXGRlZlxcQHNlY29uZG9mdHdvIzEjMnsjMn1cbmRlZmluZU1hY3JvKFwiXFxcXEBzZWNvbmRvZnR3b1wiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBhcmdzID0gY29udGV4dC5jb25zdW1lQXJncygyKTtcbiAgICByZXR1cm4geyB0b2tlbnM6IGFyZ3NbMV0sIG51bUFyZ3M6IDAgfTtcbn0pO1xuXG4vLyBMYVRlWCdzIFxcQGlmbmV4dGNoYXJ7IzF9eyMyfXsjM30gbG9va3MgYWhlYWQgdG8gdGhlIG5leHQgKHVuZXhwYW5kZWQpXG4vLyBzeW1ib2wuICBJZiBpdCBtYXRjaGVzICMxLCB0aGVuIHRoZSBtYWNybyBleHBhbmRzIHRvICMyOyBvdGhlcndpc2UsICMzLlxuLy8gTm90ZSwgaG93ZXZlciwgdGhhdCBpdCBkb2VzIG5vdCBjb25zdW1lIHRoZSBuZXh0IHN5bWJvbCBpbiBlaXRoZXIgY2FzZS5cbmRlZmluZU1hY3JvKFwiXFxcXEBpZm5leHRjaGFyXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdmFyIGFyZ3MgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDMpOyAvLyBzeW1ib2wsIGlmLCBlbHNlXG4gICAgdmFyIG5leHRUb2tlbiA9IGNvbnRleHQuZnV0dXJlKCk7XG4gICAgaWYgKGFyZ3NbMF0ubGVuZ3RoID09PSAxICYmIGFyZ3NbMF1bMF0udGV4dCA9PT0gbmV4dFRva2VuLnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHsgdG9rZW5zOiBhcmdzWzFdLCBudW1BcmdzOiAwIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHsgdG9rZW5zOiBhcmdzWzJdLCBudW1BcmdzOiAwIH07XG4gICAgfVxufSk7XG5cbi8vIExhVGVYJ3MgXFxAaWZzdGFyeyMxfXsjMn0gbG9va3MgYWhlYWQgdG8gdGhlIG5leHQgKHVuZXhwYW5kZWQpIHN5bWJvbC5cbi8vIElmIGl0IGlzIGAqYCwgdGhlbiBpdCBjb25zdW1lcyB0aGUgc3ltYm9sLCBhbmQgdGhlIG1hY3JvIGV4cGFuZHMgdG8gIzE7XG4vLyBvdGhlcndpc2UsIHRoZSBtYWNybyBleHBhbmRzIHRvICMyICh3aXRob3V0IGNvbnN1bWluZyB0aGUgc3ltYm9sKS5cbi8vIFRlWCBzb3VyY2U6IFxcZGVmXFxAaWZzdGFyIzF7XFxAaWZuZXh0Y2hhciAqe1xcQGZpcnN0b2Z0d297IzF9fX1cbmRlZmluZU1hY3JvKFwiXFxcXEBpZnN0YXJcIiwgXCJcXFxcQGlmbmV4dGNoYXIgKntcXFxcQGZpcnN0b2Z0d297IzF9fVwiKTtcblxuLy8gTGFUZVgncyBcXFRleHRPck1hdGh7IzF9eyMyfSBleHBhbmRzIHRvICMxIGluIHRleHQgbW9kZSwgIzIgaW4gbWF0aCBtb2RlXG5kZWZpbmVNYWNybyhcIlxcXFxUZXh0T3JNYXRoXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdmFyIGFyZ3MgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDIpO1xuICAgIGlmIChjb250ZXh0Lm1vZGUgPT09ICd0ZXh0Jykge1xuICAgICAgICByZXR1cm4geyB0b2tlbnM6IGFyZ3NbMF0sIG51bUFyZ3M6IDAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4geyB0b2tlbnM6IGFyZ3NbMV0sIG51bUFyZ3M6IDAgfTtcbiAgICB9XG59KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR3JvdXBpbmdcbi8vIFxcbGV0XFxiZ3JvdXA9eyBcXGxldFxcZWdyb3VwPX1cbmRlZmluZU1hY3JvKFwiXFxcXGJncm91cFwiLCBcIntcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxlZ3JvdXBcIiwgXCJ9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYmVnaW5ncm91cFwiLCBcIntcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxlbmRncm91cFwiLCBcIn1cIik7XG5cbi8vIFN5bWJvbHMgZnJvbSBsYXRleC5sdHg6XG4vLyBcXGRlZlxcbHF7YH1cbi8vIFxcZGVmXFxycXsnfVxuLy8gXFxkZWZcXGxicmFja3tbfVxuLy8gXFxkZWZcXHJicmFja3tdfVxuLy8gXFxkZWYgXFxhYSB7XFxyIGF9XG4vLyBcXGRlZiBcXEFBIHtcXHIgQX1cbmRlZmluZU1hY3JvKFwiXFxcXGxxXCIsIFwiYFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJxXCIsIFwiJ1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGxicmFja1wiLCBcIltcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyYnJhY2tcIiwgXCJdXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYWFcIiwgXCJcXFxcciBhXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcQUFcIiwgXCJcXFxcciBBXCIpO1xuXG4vLyBVbmljb2RlIGRvdWJsZS1zdHJ1Y2sgbGV0dGVyc1xuZGVmaW5lTWFjcm8oXCJcXHUyMTAyXCIsIFwiXFxcXG1hdGhiYntDfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjEwRFwiLCBcIlxcXFxtYXRoYmJ7SH1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMTVcIiwgXCJcXFxcbWF0aGJie059XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTE5XCIsIFwiXFxcXG1hdGhiYntQfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjExQVwiLCBcIlxcXFxtYXRoYmJ7UX1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMURcIiwgXCJcXFxcbWF0aGJie1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTI0XCIsIFwiXFxcXG1hdGhiYntafVwiKTtcblxuLy8gVW5pY29kZSBtaWRkbGUgZG90XG4vLyBUaGUgS2FUZVggZm9udHMgZG8gbm90IGNvbnRhaW4gVSswMEI3LiBJbnN0ZWFkLCBcXGNkb3RwIGRpc3BsYXlzXG4vLyB0aGUgZG90IGF0IFUrMjJDNSBhbmQgZ2l2ZXMgaXQgcHVuY3Qgc3BhY2luZy5cbmRlZmluZU1hY3JvKFwiXFx4QjdcIiwgXCJcXFxcY2RvdHBcIik7XG5cbi8vIFxcbGxhcCBhbmQgXFxybGFwIHJlbmRlciB0aGVpciBjb250ZW50cyBpbiB0ZXh0IG1vZGVcbmRlZmluZU1hY3JvKFwiXFxcXGxsYXBcIiwgXCJcXFxcbWF0aGxsYXB7XFxcXHRleHRybXsjMX19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmxhcFwiLCBcIlxcXFxtYXRocmxhcHtcXFxcdGV4dHJteyMxfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxjbGFwXCIsIFwiXFxcXG1hdGhjbGFwe1xcXFx0ZXh0cm17IzF9fVwiKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gYW1zbWF0aC5zdHlcbi8vIGh0dHA6Ly9taXJyb3JzLmNvbmNlcnRwYXNzLmNvbS90ZXgtYXJjaGl2ZS9tYWNyb3MvbGF0ZXgvcmVxdWlyZWQvYW1zbWF0aC9hbXNtYXRoLnBkZlxuXG4vLyBJdGFsaWMgR3JlZWsgY2FwaXRhbCBsZXR0ZXJzLiAgQU1TIGRlZmluZXMgdGhlc2Ugd2l0aCBcXERlY2xhcmVNYXRoU3ltYm9sLFxuLy8gYnV0IHRoZXkgYXJlIGVxdWl2YWxlbnQgdG8gXFxtYXRoaXR7XFxMZXR0ZXJ9LlxuZGVmaW5lTWFjcm8oXCJcXFxcdmFyR2FtbWFcIiwgXCJcXFxcbWF0aGl0e1xcXFxHYW1tYX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJEZWx0YVwiLCBcIlxcXFxtYXRoaXR7XFxcXERlbHRhfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclRoZXRhXCIsIFwiXFxcXG1hdGhpdHtcXFxcVGhldGF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyTGFtYmRhXCIsIFwiXFxcXG1hdGhpdHtcXFxcTGFtYmRhfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclhpXCIsIFwiXFxcXG1hdGhpdHtcXFxcWGl9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyUGlcIiwgXCJcXFxcbWF0aGl0e1xcXFxQaX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJTaWdtYVwiLCBcIlxcXFxtYXRoaXR7XFxcXFNpZ21hfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclVwc2lsb25cIiwgXCJcXFxcbWF0aGl0e1xcXFxVcHNpbG9ufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclBoaVwiLCBcIlxcXFxtYXRoaXR7XFxcXFBoaX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJQc2lcIiwgXCJcXFxcbWF0aGl0e1xcXFxQc2l9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyT21lZ2FcIiwgXCJcXFxcbWF0aGl0e1xcXFxPbWVnYX1cIik7XG5cbi8vIFxcZGVmXFxvdmVyc2V0IzEjMntcXGJpbnJlbEB7IzJ9XFxiaW5yZWxAQHtcXG1hdGhvcHtcXGtlcm5cXHpAIzJ9XFxsaW1pdHNeeyMxfX19XG5kZWZpbmVNYWNybyhcIlxcXFxvdmVyc2V0XCIsIFwiXFxcXG1hdGhvcHsjMn1cXFxcbGltaXRzXnsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx1bmRlcnNldFwiLCBcIlxcXFxtYXRob3B7IzJ9XFxcXGxpbWl0c197IzF9XCIpO1xuXG4vLyBcXG5ld2NvbW1hbmR7XFxib3hlZH1bMV17XFxmYm94e1xcbUB0aCRcXGRpc3BsYXlzdHlsZSMxJH19XG5kZWZpbmVNYWNybyhcIlxcXFxib3hlZFwiLCBcIlxcXFxmYm94e1xcXFxkaXNwbGF5c3R5bGV7IzF9fVwiKTtcblxuLy8gXFxkZWZcXGlmZntcXERPVFNCXFw7XFxMb25nbGVmdHJpZ2h0YXJyb3dcXDt9XG4vLyBcXGRlZlxcaW1wbGllc3tcXERPVFNCXFw7XFxMb25ncmlnaHRhcnJvd1xcO31cbi8vIFxcZGVmXFxpbXBsaWVkYnl7XFxET1RTQlxcO1xcTG9uZ2xlZnRhcnJvd1xcO31cbmRlZmluZU1hY3JvKFwiXFxcXGlmZlwiLCBcIlxcXFxET1RTQlxcXFw7XFxcXExvbmdsZWZ0cmlnaHRhcnJvd1xcXFw7XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaW1wbGllc1wiLCBcIlxcXFxET1RTQlxcXFw7XFxcXExvbmdyaWdodGFycm93XFxcXDtcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxpbXBsaWVkYnlcIiwgXCJcXFxcRE9UU0JcXFxcO1xcXFxMb25nbGVmdGFycm93XFxcXDtcIik7XG5cbi8vIEFNU01hdGgncyBhdXRvbWF0aWMgXFxkb3RzLCBiYXNlZCBvbiBcXG1kb3RzQEAgbWFjcm8uXG52YXIgZG90c0J5VG9rZW4gPSB7XG4gICAgJywnOiAnXFxcXGRvdHNjJyxcbiAgICAnXFxcXG5vdCc6ICdcXFxcZG90c2InLFxuICAgIC8vIFxca2V5YmluQCBjaGVja3MgZm9yIHRoZSBmb2xsb3dpbmc6XG4gICAgJysnOiAnXFxcXGRvdHNiJyxcbiAgICAnPSc6ICdcXFxcZG90c2InLFxuICAgICc8JzogJ1xcXFxkb3RzYicsXG4gICAgJz4nOiAnXFxcXGRvdHNiJyxcbiAgICAnLSc6ICdcXFxcZG90c2InLFxuICAgICcqJzogJ1xcXFxkb3RzYicsXG4gICAgJzonOiAnXFxcXGRvdHNiJyxcbiAgICAvLyBTeW1ib2xzIHdob3NlIGRlZmluaXRpb24gc3RhcnRzIHdpdGggXFxET1RTQjpcbiAgICAnXFxcXERPVFNCJzogJ1xcXFxkb3RzYicsXG4gICAgJ1xcXFxjb3Byb2QnOiAnXFxcXGRvdHNiJyxcbiAgICAnXFxcXGJpZ3ZlZSc6ICdcXFxcZG90c2InLFxuICAgICdcXFxcYmlnd2VkZ2UnOiAnXFxcXGRvdHNiJyxcbiAgICAnXFxcXGJpZ3VwbHVzJzogJ1xcXFxkb3RzYicsXG4gICAgJ1xcXFxiaWdjYXAnOiAnXFxcXGRvdHNiJyxcbiAgICAnXFxcXGJpZ2N1cCc6ICdcXFxcZG90c2InLFxuICAgICdcXFxccHJvZCc6ICdcXFxcZG90c2InLFxuICAgICdcXFxcc3VtJzogJ1xcXFxkb3RzYicsXG4gICAgJ1xcXFxiaWdvdGltZXMnOiAnXFxcXGRvdHNiJyxcbiAgICAnXFxcXGJpZ29wbHVzJzogJ1xcXFxkb3RzYicsXG4gICAgJ1xcXFxiaWdvZG90JzogJ1xcXFxkb3RzYicsXG4gICAgJ1xcXFxiaWdzcWN1cCc6ICdcXFxcZG90c2InLFxuICAgICdcXFxcaW1wbGllcyc6ICdcXFxcZG90c2InLFxuICAgICdcXFxcaW1wbGllZGJ5JzogJ1xcXFxkb3RzYicsXG4gICAgJ1xcXFxBbmQnOiAnXFxcXGRvdHNiJyxcbiAgICAnXFxcXGxvbmdyaWdodGFycm93JzogJ1xcXFxkb3RzYicsXG4gICAgJ1xcXFxMb25ncmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAgICdcXFxcbG9uZ2xlZnRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAgICdcXFxcTG9uZ2xlZnRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAgICdcXFxcbG9uZ2xlZnRyaWdodGFycm93JzogJ1xcXFxkb3RzYicsXG4gICAgJ1xcXFxMb25nbGVmdHJpZ2h0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgICAnXFxcXG1hcHN0byc6ICdcXFxcZG90c2InLFxuICAgICdcXFxcbG9uZ21hcHN0byc6ICdcXFxcZG90c2InLFxuICAgICdcXFxcaG9va3JpZ2h0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgICAnXFxcXGlmZic6ICdcXFxcZG90c2InLFxuICAgICdcXFxcZG90ZXEnOiAnXFxcXGRvdHNiJyxcbiAgICAvLyBTeW1ib2xzIHdob3NlIGRlZmluaXRpb24gc3RhcnRzIHdpdGggXFxtYXRoYmluOlxuICAgICdcXFxcbWF0aGJpbic6ICdcXFxcZG90c2InLFxuICAgICdcXFxcYm1vZCc6ICdcXFxcZG90c2InLFxuICAgIC8vIFN5bWJvbHMgd2hvc2UgZGVmaW5pdGlvbiBzdGFydHMgd2l0aCBcXG1hdGhyZWw6XG4gICAgJ1xcXFxtYXRocmVsJzogJ1xcXFxkb3RzYicsXG4gICAgJ1xcXFxyZWxiYXInOiAnXFxcXGRvdHNiJyxcbiAgICAnXFxcXFJlbGJhcic6ICdcXFxcZG90c2InLFxuICAgICdcXFxceHJpZ2h0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgICAnXFxcXHhsZWZ0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgICAvLyBTeW1ib2xzIHdob3NlIGRlZmluaXRpb24gc3RhcnRzIHdpdGggXFxET1RTSTpcbiAgICAnXFxcXERPVFNJJzogJ1xcXFxkb3RzaScsXG4gICAgJ1xcXFxpbnQnOiAnXFxcXGRvdHNpJyxcbiAgICAnXFxcXG9pbnQnOiAnXFxcXGRvdHNpJyxcbiAgICAnXFxcXGlpbnQnOiAnXFxcXGRvdHNpJyxcbiAgICAnXFxcXGlpaW50JzogJ1xcXFxkb3RzaScsXG4gICAgJ1xcXFxpaWlpbnQnOiAnXFxcXGRvdHNpJyxcbiAgICAnXFxcXGlkb3RzaW50JzogJ1xcXFxkb3RzaScsXG4gICAgLy8gU3ltYm9scyB3aG9zZSBkZWZpbml0aW9uIHN0YXJ0cyB3aXRoIFxcRE9UU1g6XG4gICAgJ1xcXFxET1RTWCc6ICdcXFxcZG90c3gnXG59O1xuXG5kZWZpbmVNYWNybyhcIlxcXFxkb3RzXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgLy8gVE9ETzogSWYgdXNlZCBpbiB0ZXh0IG1vZGUsIHNob3VsZCBleHBhbmQgdG8gXFx0ZXh0ZWxsaXBzaXMuXG4gICAgLy8gSG93ZXZlciwgaW4gS2FUZVgsIFxcdGV4dGVsbGlwc2lzIGFuZCBcXGxkb3RzIGJlaGF2ZSB0aGUgc2FtZVxuICAgIC8vIChpbiB0ZXh0IG1vZGUpLCBhbmQgaXQncyB1bmxpa2VseSB3ZSdkIHNlZSBhbnkgb2YgdGhlIG1hdGggY29tbWFuZHNcbiAgICAvLyB0aGF0IGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgXFxkb3RzIHdoZW4gaW4gdGV4dCBtb2RlLiAgU28gZmluZSBmb3Igbm93XG4gICAgLy8gKHVudGlsIHdlIHN1cHBvcnQgXFxpZm1tb2RlIC4uLiBcXGVsc2UgLi4uIFxcZmkpLlxuICAgIHZhciB0aGVkb3RzID0gJ1xcXFxkb3Rzbyc7XG4gICAgdmFyIG5leHQgPSBjb250ZXh0LmV4cGFuZEFmdGVyRnV0dXJlKCkudGV4dDtcbiAgICBpZiAobmV4dCBpbiBkb3RzQnlUb2tlbikge1xuICAgICAgICB0aGVkb3RzID0gZG90c0J5VG9rZW5bbmV4dF07XG4gICAgfSBlbHNlIGlmIChuZXh0LnN1YnN0cigwLCA0KSA9PT0gJ1xcXFxub3QnKSB7XG4gICAgICAgIHRoZWRvdHMgPSAnXFxcXGRvdHNiJztcbiAgICB9IGVsc2UgaWYgKG5leHQgaW4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19zeW1ib2xzX19bXCJhXCIgLyogZGVmYXVsdCAqL10ubWF0aCkge1xuICAgICAgICBpZiAoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX191dGlsc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmNvbnRhaW5zKFsnYmluJywgJ3JlbCddLCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX3N5bWJvbHNfX1tcImFcIiAvKiBkZWZhdWx0ICovXS5tYXRoW25leHRdLmdyb3VwKSkge1xuICAgICAgICAgICAgdGhlZG90cyA9ICdcXFxcZG90c2InO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGVkb3RzO1xufSk7XG5cbnZhciBzcGFjZUFmdGVyRG90cyA9IHtcbiAgICAvLyBcXHJpZ2h0ZGVsaW1AIGNoZWNrcyBmb3IgdGhlIGZvbGxvd2luZzpcbiAgICAnKSc6IHRydWUsXG4gICAgJ10nOiB0cnVlLFxuICAgICdcXFxccmJyYWNrJzogdHJ1ZSxcbiAgICAnXFxcXH0nOiB0cnVlLFxuICAgICdcXFxccmJyYWNlJzogdHJ1ZSxcbiAgICAnXFxcXHJhbmdsZSc6IHRydWUsXG4gICAgJ1xcXFxyY2VpbCc6IHRydWUsXG4gICAgJ1xcXFxyZmxvb3InOiB0cnVlLFxuICAgICdcXFxccmdyb3VwJzogdHJ1ZSxcbiAgICAnXFxcXHJtb3VzdGFjaGUnOiB0cnVlLFxuICAgICdcXFxccmlnaHQnOiB0cnVlLFxuICAgICdcXFxcYmlncic6IHRydWUsXG4gICAgJ1xcXFxiaWdncic6IHRydWUsXG4gICAgJ1xcXFxCaWdyJzogdHJ1ZSxcbiAgICAnXFxcXEJpZ2dyJzogdHJ1ZSxcbiAgICAvLyBcXGV4dHJhQCBhbHNvIHRlc3RzIGZvciB0aGUgZm9sbG93aW5nOlxuICAgICckJzogdHJ1ZSxcbiAgICAvLyBcXGV4dHJhcEAgY2hlY2tzIGZvciB0aGUgZm9sbG93aW5nOlxuICAgICc7JzogdHJ1ZSxcbiAgICAnLic6IHRydWUsXG4gICAgJywnOiB0cnVlXG59O1xuXG5kZWZpbmVNYWNybyhcIlxcXFxkb3Rzb1wiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBuZXh0ID0gY29udGV4dC5mdXR1cmUoKS50ZXh0O1xuICAgIGlmIChuZXh0IGluIHNwYWNlQWZ0ZXJEb3RzKSB7XG4gICAgICAgIHJldHVybiBcIlxcXFxsZG90c1xcXFwsXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiXFxcXGxkb3RzXCI7XG4gICAgfVxufSk7XG5cbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNjXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdmFyIG5leHQgPSBjb250ZXh0LmZ1dHVyZSgpLnRleHQ7XG4gICAgLy8gXFxkb3RzYyB1c2VzIFxcZXh0cmFAIGJ1dCBub3QgXFxleHRyYXBALCBpbnN0ZWFkIHNwZWNpYWxseSBjaGVja2luZyBmb3JcbiAgICAvLyAnOycgYW5kICcuJywgYnV0IGRvZXNuJ3QgY2hlY2sgZm9yICcsJy5cbiAgICBpZiAobmV4dCBpbiBzcGFjZUFmdGVyRG90cyAmJiBuZXh0ICE9PSAnLCcpIHtcbiAgICAgICAgcmV0dXJuIFwiXFxcXGxkb3RzXFxcXCxcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJcXFxcbGRvdHNcIjtcbiAgICB9XG59KTtcblxuZGVmaW5lTWFjcm8oXCJcXFxcY2RvdHNcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgbmV4dCA9IGNvbnRleHQuZnV0dXJlKCkudGV4dDtcbiAgICBpZiAobmV4dCBpbiBzcGFjZUFmdGVyRG90cykge1xuICAgICAgICByZXR1cm4gXCJcXFxcQGNkb3RzXFxcXCxcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJcXFxcQGNkb3RzXCI7XG4gICAgfVxufSk7XG5cbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNiXCIsIFwiXFxcXGNkb3RzXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZG90c21cIiwgXCJcXFxcY2RvdHNcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxkb3RzaVwiLCBcIlxcXFwhXFxcXGNkb3RzXCIpO1xuLy8gYW1zbWF0aCBkb2Vzbid0IGFjdHVhbGx5IGRlZmluZSBcXGRvdHN4LCBidXQgXFxkb3RzIGZvbGxvd2VkIGJ5IGEgbWFjcm9cbi8vIHN0YXJ0aW5nIHdpdGggXFxET1RTWCBpbXBsaWVzIFxcZG90c28sIGFuZCB0aGVuIFxcZXh0cmFAIGRldGVjdHMgdGhpcyBjYXNlXG4vLyBhbmQgZm9yY2VzIHRoZSBhZGRlZCBgXFwsYC5cbmRlZmluZU1hY3JvKFwiXFxcXGRvdHN4XCIsIFwiXFxcXGxkb3RzXFxcXCxcIik7XG5cbi8vIFxcbGV0XFxET1RTSVxccmVsYXhcbi8vIFxcbGV0XFxET1RTQlxccmVsYXhcbi8vIFxcbGV0XFxET1RTWFxccmVsYXhcbmRlZmluZU1hY3JvKFwiXFxcXERPVFNJXCIsIFwiXFxcXHJlbGF4XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcRE9UU0JcIiwgXCJcXFxccmVsYXhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxET1RTWFwiLCBcIlxcXFxyZWxheFwiKTtcblxuLy8gaHR0cDovL3RleGRvYy5uZXQvdGV4bWYtZGlzdC9kb2MvbGF0ZXgvYW1zbWF0aC9hbXNtYXRoLnBkZlxuZGVmaW5lTWFjcm8oXCJcXFxcdGhpbnNwYWNlXCIsIFwiXFxcXCxcIik7IC8vICAgXFxsZXRcXHRoaW5zcGFjZVxcLFxuZGVmaW5lTWFjcm8oXCJcXFxcbWVkc3BhY2VcIiwgXCJcXFxcOlwiKTsgLy8gICBcXGxldFxcbWVkc3BhY2VcXDpcbmRlZmluZU1hY3JvKFwiXFxcXHRoaWNrc3BhY2VcIiwgXCJcXFxcO1wiKTsgLy8gICBcXGxldFxcdGhpY2tzcGFjZVxcO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMYVRlWCBzb3VyY2UyZVxuXG4vLyBcXGRlZlxcVGVYe1RcXGtlcm4tLjE2NjdlbVxcbG93ZXIuNWV4XFxoYm94e0V9XFxrZXJuLS4xMjVlbVhcXEB9XG4vLyBUT0RPOiBEb2Vzbid0IG5vcm1hbGx5IHdvcmsgaW4gbWF0aCBtb2RlIGJlY2F1c2UgXFxAIGZhaWxzLiAgS2FUZVggZG9lc24ndFxuLy8gc3VwcG9ydCBcXEAgeWV0LCBzbyB0aGF0J3Mgb21pdHRlZCwgYW5kIHdlIGFkZCBcXHRleHQgc28gdGhhdCB0aGUgcmVzdWx0XG4vLyBkb2Vzbid0IGxvb2sgZnVubnkgaW4gbWF0aCBtb2RlLlxuZGVmaW5lTWFjcm8oXCJcXFxcVGVYXCIsIFwiXFxcXHRleHRybXtUXFxcXGtlcm4tLjE2NjdlbVxcXFxyYWlzZWJveHstLjVleH17RX1cXFxca2Vybi0uMTI1ZW1YfVwiKTtcblxuLy8gXFxEZWNsYXJlUm9idXN0Q29tbWFuZHtcXExhVGVYfXtMXFxrZXJuLS4zNmVtJVxuLy8gICAgICAgICB7XFxzYm94XFx6QCBUJVxuLy8gICAgICAgICAgXFx2Ym94IHRvXFxodFxcekB7XFxoYm94e1xcY2hlY2tAbWF0aGZvbnRzXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXGZvbnRzaXplXFxzZkBzaXplXFx6QFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxtYXRoQGZvbnRzZmFsc2VcXHNlbGVjdGZvbnRcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF9JVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgXFx2c3N9JVxuLy8gICAgICAgICB9JVxuLy8gICAgICAgICBcXGtlcm4tLjE1ZW0lXG4vLyAgICAgICAgIFxcVGVYfVxuLy8gVGhpcyBjb2RlIGFsaWducyB0aGUgdG9wIG9mIHRoZSBBIHdpdGggdGhlIFQgKGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIFRlWCdzXG4vLyBib3hlcywgdGhvdWdoIHZpc3VhbGx5IHRoZSBBIGFwcGVhcnMgdG8gZXh0ZW5kIGFib3ZlIHNsaWdodGx5KS5cbi8vIFdlIGNvbXB1dGUgdGhlIGNvcnJlc3BvbmRpbmcgXFxyYWlzZWJveCB3aGVuIEEgaXMgcmVuZGVyZWQgYXQgXFxzY3JpcHRzaXplLFxuLy8gd2hpY2ggaXMgc2l6ZTMsIHdoaWNoIGhhcyBhIHNjYWxlIGZhY3RvciBvZiAwLjcgKHNlZSBPcHRpb25zLmpzKS5cbnZhciBsYXRleFJhaXNlQSA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fc3VibW9kdWxlc19rYXRleF9mb250c19mb250TWV0cmljc0RhdGFfX1tcImFcIiAvKiBkZWZhdWx0ICovXVsnTWFpbi1SZWd1bGFyJ11bXCJUXCIuY2hhckNvZGVBdCgwKV1bMV0gLSAwLjcgKiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3N1Ym1vZHVsZXNfa2F0ZXhfZm9udHNfZm9udE1ldHJpY3NEYXRhX19bXCJhXCIgLyogZGVmYXVsdCAqL11bJ01haW4tUmVndWxhciddW1wiQVwiLmNoYXJDb2RlQXQoMCldWzFdICsgXCJlbVwiO1xuZGVmaW5lTWFjcm8oXCJcXFxcTGFUZVhcIiwgXCJcXFxcdGV4dHJte0xcXFxca2Vybi0uMzZlbVxcXFxyYWlzZWJveHtcIiArIGxhdGV4UmFpc2VBICsgXCJ9e1xcXFxzY3JpcHRzaXplIEF9XCIgKyBcIlxcXFxrZXJuLS4xNWVtXFxcXFRlWH1cIik7XG5cbi8vIE5ldyBLYVRlWCBsb2dvIGJhc2VkIG9uIHR3ZWFraW5nIExhVGVYIGxvZ29cbmRlZmluZU1hY3JvKFwiXFxcXEthVGVYXCIsIFwiXFxcXHRleHRybXtLXFxcXGtlcm4tLjE3ZW1cXFxccmFpc2Vib3h7XCIgKyBsYXRleFJhaXNlQSArIFwifXtcXFxcc2NyaXB0c2l6ZSBBfVwiICsgXCJcXFxca2Vybi0uMTVlbVxcXFxUZVh9XCIpO1xuXG4vLyBcXERlY2xhcmVSb2J1c3RDb21tYW5kXFxoc3BhY2V7XFxAaWZzdGFyXFxAaHNwYWNlclxcQGhzcGFjZX1cbi8vIFxcZGVmXFxAaHNwYWNlIzF7XFxoc2tpcCAgIzFcXHJlbGF4fVxuLy8gS2FUZVggZG9lc24ndCBkbyBsaW5lIGJyZWFrcywgc28gXFxoc3BhY2UgYW5kIFxcaHNwYWNlKiBhcmUgdGhlIHNhbWUgYXMgXFxrZXJuXG5kZWZpbmVNYWNybyhcIlxcXFxoc3BhY2VcIiwgXCJcXFxcQGlmc3RhclxcXFxrZXJuXFxcXGtlcm5cIik7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIG1hdGh0b29scy5zdHlcblxuLy9cXHByb3ZpZGVjb21tYW5kXFxvcmRpbmFyeWNvbG9uezp9XG5kZWZpbmVNYWNybyhcIlxcXFxvcmRpbmFyeWNvbG9uXCIsIFwiOlwiKTtcbi8vXFxkZWZcXHZjZW50Y29sb257XFxtYXRocmVse1xcbWF0aG9wXFxvcmRpbmFyeWNvbG9ufX1cbi8vVE9ETyhlZGVtYWluZSk6IE5vdCB5ZXQgY2VudGVyZWQuIEZpeCB2aWEgXFxyYWlzZWJveCBvciAjNzI2XG5kZWZpbmVNYWNybyhcIlxcXFx2Y2VudGNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXG1hdGhvcFxcXFxvcmRpbmFyeWNvbG9ufVwiKTtcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxkYmxjb2xvbntcXHZjZW50Y29sb25cXG1hdGhyZWx7XFxta2Vybi0uOW11fVxcdmNlbnRjb2xvbn1cbmRlZmluZU1hY3JvKFwiXFxcXGRibGNvbG9uXCIsIFwiXFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tLjltdX1cXFxcdmNlbnRjb2xvblwiKTtcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxjb2xvbmVxcXtcXHZjZW50Y29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX09fVxuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25lcXFcIiwgXCJcXFxcdmNlbnRjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX09XCIpO1xuLy8gXFxwcm92aWRlY29tbWFuZCpcXENvbG9uZXFxe1xcZGJsY29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX09fVxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25lcXFcIiwgXCJcXFxcZGJsY29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9PVwiKTtcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxjb2xvbmVxe1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcbWF0aHJlbHstfX1cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uZXFcIiwgXCJcXFxcdmNlbnRjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcbWF0aHJlbHstfVwiKTtcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxDb2xvbmVxe1xcZGJsY29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXG1hdGhyZWx7LX19XG5kZWZpbmVNYWNybyhcIlxcXFxDb2xvbmVxXCIsIFwiXFxcXGRibGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxtYXRocmVsey19XCIpO1xuLy8gXFxwcm92aWRlY29tbWFuZCpcXGVxcWNvbG9uez1cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXHZjZW50Y29sb259XG5kZWZpbmVNYWNybyhcIlxcXFxlcXFjb2xvblwiLCBcIj1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHZjZW50Y29sb25cIik7XG4vLyBcXHByb3ZpZGVjb21tYW5kKlxcRXFxY29sb257PVxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcZGJsY29sb259XG5kZWZpbmVNYWNybyhcIlxcXFxFcXFjb2xvblwiLCBcIj1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGRibGNvbG9uXCIpO1xuLy8gXFxwcm92aWRlY29tbWFuZCpcXGVxY29sb257XFxtYXRocmVsey19XFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFx2Y2VudGNvbG9ufVxuZGVmaW5lTWFjcm8oXCJcXFxcZXFjb2xvblwiLCBcIlxcXFxtYXRocmVsey19XFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFx2Y2VudGNvbG9uXCIpO1xuLy8gXFxwcm92aWRlY29tbWFuZCpcXEVxY29sb257XFxtYXRocmVsey19XFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxkYmxjb2xvbn1cbmRlZmluZU1hY3JvKFwiXFxcXEVxY29sb25cIiwgXCJcXFxcbWF0aHJlbHstfVxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcZGJsY29sb25cIik7XG4vLyBcXHByb3ZpZGVjb21tYW5kKlxcY29sb25hcHByb3h7XFx2Y2VudGNvbG9uXFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxhcHByb3h9XG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbmFwcHJveFwiLCBcIlxcXFx2Y2VudGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxhcHByb3hcIik7XG4vLyBcXHByb3ZpZGVjb21tYW5kKlxcQ29sb25hcHByb3h7XFxkYmxjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcYXBwcm94fVxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25hcHByb3hcIiwgXCJcXFxcZGJsY29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGFwcHJveFwiKTtcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxjb2xvbnNpbXtcXHZjZW50Y29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXHNpbX1cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uc2ltXCIsIFwiXFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHNpbVwiKTtcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxDb2xvbnNpbXtcXGRibGNvbG9uXFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxzaW19XG5kZWZpbmVNYWNybyhcIlxcXFxDb2xvbnNpbVwiLCBcIlxcXFxkYmxjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcc2ltXCIpO1xuXG4vLyBTb21lIFVuaWNvZGUgY2hhcmFjdGVycyBhcmUgaW1wbGVtZW50ZWQgd2l0aCBtYWNyb3MgdG8gbWF0aHRvb2xzIGZ1bmN0aW9ucy5cbmRlZmluZU1hY3JvKFwiXFx1MjI1NFwiLCBcIlxcXFxjb2xvbmVxcVwiKTsgLy8gOj1cbmRlZmluZU1hY3JvKFwiXFx1MjI1NVwiLCBcIlxcXFxlcXFjb2xvblwiKTsgLy8gPTpcbmRlZmluZU1hY3JvKFwiXFx1MkE3NFwiLCBcIlxcXFxDb2xvbmVxcVwiKTsgLy8gOjo9XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIGNvbG9uZXF1YWxzLnN0eVxuXG4vLyBBbHRlcm5hdGUgbmFtZXMgZm9yIG1hdGh0b29scydzIG1hY3JvczpcbmRlZmluZU1hY3JvKFwiXFxcXHJhdGlvXCIsIFwiXFxcXHZjZW50Y29sb25cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbmNvbG9uXCIsIFwiXFxcXGRibGNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25lcXVhbHNcIiwgXCJcXFxcY29sb25lcXFcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbmNvbG9uZXF1YWxzXCIsIFwiXFxcXENvbG9uZXFxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZXF1YWxzY29sb25cIiwgXCJcXFxcZXFxY29sb25cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxlcXVhbHNjb2xvbmNvbG9uXCIsIFwiXFxcXEVxcWNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25taW51c1wiLCBcIlxcXFxjb2xvbmVxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25jb2xvbm1pbnVzXCIsIFwiXFxcXENvbG9uZXFcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtaW51c2NvbG9uXCIsIFwiXFxcXGVxY29sb25cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtaW51c2NvbG9uY29sb25cIiwgXCJcXFxcRXFjb2xvblwiKTtcbi8vIFxcY29sb25hcHByb3ggbmFtZSBpcyBzYW1lIGluIG1hdGh0b29scyBhbmQgY29sb25lcXVhbHMuXG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbmNvbG9uYXBwcm94XCIsIFwiXFxcXENvbG9uYXBwcm94XCIpO1xuLy8gXFxjb2xvbnNpbSBuYW1lIGlzIHNhbWUgaW4gbWF0aHRvb2xzIGFuZCBjb2xvbmVxdWFscy5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uY29sb25zaW1cIiwgXCJcXFxcQ29sb25zaW1cIik7XG5cbi8vIEFkZGl0aW9uYWwgbWFjcm9zLCBpbXBsZW1lbnRlZCBieSBhbmFsb2d5IHdpdGggbWF0aHRvb2xzIGRlZmluaXRpb25zOlxuZGVmaW5lTWFjcm8oXCJcXFxcc2ltY29sb25cIiwgXCJcXFxcc2ltXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFx2Y2VudGNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc2ltY29sb25jb2xvblwiLCBcIlxcXFxzaW1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGRibGNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYXBwcm94Y29sb25cIiwgXCJcXFxcYXBwcm94XFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFx2Y2VudGNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYXBwcm94Y29sb25jb2xvblwiLCBcIlxcXFxhcHByb3hcXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGRibGNvbG9uXCIpO1xuXG4vLyBQcmVzZW50IGluIG5ld3R4bWF0aCwgcHhmb250cyBhbmQgdHhmb250c1xuLy8gVE9ETzogVGhlIHVuaWNvZGUgY2hhcmFjdGVyIFUrMjIwQyDiiIwgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmb250LCBhbmQgdGhpc1xuLy8gICAgICAgbWFjcm8gdHVybmVkIGludG8gYSBwcm9wcGVyIGRlZmluZVN5bWJvbCBpbiBzeW1ib2xzLmpzLiBUaGF0IHdheSwgdGhlXG4vLyAgICAgICBNYXRoTUwgcmVzdWx0IHdpbGwgYmUgbXVjaCBjbGVhbmVyLlxuZGVmaW5lTWFjcm8oXCJcXFxcbm90bmlcIiwgXCJcXFxcbm90XFxcXG5pXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbGltc3VwXCIsIFwiXFxcXERPVFNCXFxcXG1hdGhvcHtcXFxcb3BlcmF0b3JuYW1le2xpbVxcXFwsc3VwfX1cXFxcbGltaXRzXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbGltaW5mXCIsIFwiXFxcXERPVFNCXFxcXG1hdGhvcHtcXFxcb3BlcmF0b3JuYW1le2xpbVxcXFwsaW5mfX1cXFxcbGltaXRzXCIpO1xuXG4vKioqLyB9KSxcbi8qIDE0NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcblxuXG4vKioqLyB9KSxcbi8qIDE0OCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBNYXBwaW5nIG9mIFVuaWNvZGUgYWNjZW50IGNoYXJhY3RlcnMgdG8gdGhlaXIgTGFUZVggZXF1aXZhbGVudCBpbiB0ZXh0IGFuZFxuLy8gbWF0aCBtb2RlICh3aGVuIHRoZXkgZXhpc3QpLlxuXG4vLyBOT1RFOiBUaGlzIG1vZHVsZSBuZWVkcyB0byBiZSB3cml0dGVuIHdpdGggTm9kZS1zdHlsZSBtb2R1bGVzIChub3Rcbi8vIEVTNiBtb2R1bGVzKSBzbyB0aGF0IHVuaWNvZGVNYWtlLmpzIChhIE5vZGUgYXBwbGljYXRpb24pIGNhbiBpbXBvcnQgaXQuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICAnXFx1MDMwMSc6IHsgdGV4dDogXCJcXFxcJ1wiLCBtYXRoOiAnXFxcXGFjdXRlJyB9LFxuICAgICdcXHUwMzAwJzogeyB0ZXh0OiAnXFxcXGAnLCBtYXRoOiAnXFxcXGdyYXZlJyB9LFxuICAgICdcXHUwMzA4JzogeyB0ZXh0OiAnXFxcXFwiJywgbWF0aDogJ1xcXFxkZG90JyB9LFxuICAgICdcXHUwMzAzJzogeyB0ZXh0OiAnXFxcXH4nLCBtYXRoOiAnXFxcXHRpbGRlJyB9LFxuICAgICdcXHUwMzA0JzogeyB0ZXh0OiAnXFxcXD0nLCBtYXRoOiAnXFxcXGJhcicgfSxcbiAgICAnXFx1MDMwNic6IHsgdGV4dDogJ1xcXFx1JywgbWF0aDogJ1xcXFxicmV2ZScgfSxcbiAgICAnXFx1MDMwQyc6IHsgdGV4dDogJ1xcXFx2JywgbWF0aDogJ1xcXFxjaGVjaycgfSxcbiAgICAnXFx1MDMwMic6IHsgdGV4dDogJ1xcXFxeJywgbWF0aDogJ1xcXFxoYXQnIH0sXG4gICAgJ1xcdTAzMDcnOiB7IHRleHQ6ICdcXFxcLicsIG1hdGg6ICdcXFxcZG90JyB9LFxuICAgICdcXHUwMzBBJzogeyB0ZXh0OiAnXFxcXHInLCBtYXRoOiAnXFxcXG1hdGhyaW5nJyB9LFxuICAgICdcXHUwMzBCJzogeyB0ZXh0OiAnXFxcXEgnIH1cbn07XG5cbi8qKiovIH0pLFxuLyogMTQ5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLy8gVGhpcyBmaWxlIGlzIEdFTkVSQVRFRCBieSB1bmljb2RlTWFrZS5qcy4gRE8gTk9UIE1PRElGWS5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh7XG4gICAgXCJcXHhFMVwiOiBcImFcXHUwMzAxXCIsIC8vIMOhID0gXFwne2F9XG4gICAgXCJcXHhFMFwiOiBcImFcXHUwMzAwXCIsIC8vIMOgID0gXFxge2F9XG4gICAgXCJcXHhFNFwiOiBcImFcXHUwMzA4XCIsIC8vIMOkID0gXFxcInthfVxuICAgIFwiXFx1MDFERlwiOiBcImFcXHUwMzA4XFx1MDMwNFwiLCAvLyDHnyA9IFxcXCJcXD17YX1cbiAgICBcIlxceEUzXCI6IFwiYVxcdTAzMDNcIiwgLy8gw6MgPSBcXH57YX1cbiAgICBcIlxcdTAxMDFcIjogXCJhXFx1MDMwNFwiLCAvLyDEgSA9IFxcPXthfVxuICAgIFwiXFx1MDEwM1wiOiBcImFcXHUwMzA2XCIsIC8vIMSDID0gXFx1e2F9XG4gICAgXCJcXHUxRUFGXCI6IFwiYVxcdTAzMDZcXHUwMzAxXCIsIC8vIOG6ryA9IFxcdVxcJ3thfVxuICAgIFwiXFx1MUVCMVwiOiBcImFcXHUwMzA2XFx1MDMwMFwiLCAvLyDhurEgPSBcXHVcXGB7YX1cbiAgICBcIlxcdTFFQjVcIjogXCJhXFx1MDMwNlxcdTAzMDNcIiwgLy8g4bq1ID0gXFx1XFx+e2F9XG4gICAgXCJcXHUwMUNFXCI6IFwiYVxcdTAzMENcIiwgLy8gx44gPSBcXHZ7YX1cbiAgICBcIlxceEUyXCI6IFwiYVxcdTAzMDJcIiwgLy8gw6IgPSBcXF57YX1cbiAgICBcIlxcdTFFQTVcIjogXCJhXFx1MDMwMlxcdTAzMDFcIiwgLy8g4bqlID0gXFxeXFwne2F9XG4gICAgXCJcXHUxRUE3XCI6IFwiYVxcdTAzMDJcXHUwMzAwXCIsIC8vIOG6pyA9IFxcXlxcYHthfVxuICAgIFwiXFx1MUVBQlwiOiBcImFcXHUwMzAyXFx1MDMwM1wiLCAvLyDhuqsgPSBcXF5cXH57YX1cbiAgICBcIlxcdTAyMjdcIjogXCJhXFx1MDMwN1wiLCAvLyDIpyA9IFxcLnthfVxuICAgIFwiXFx1MDFFMVwiOiBcImFcXHUwMzA3XFx1MDMwNFwiLCAvLyDHoSA9IFxcLlxcPXthfVxuICAgIFwiXFx4RTVcIjogXCJhXFx1MDMwQVwiLCAvLyDDpSA9IFxccnthfVxuICAgIFwiXFx1MDFGQlwiOiBcImFcXHUwMzBBXFx1MDMwMVwiLCAvLyDHuyA9IFxcclxcJ3thfVxuICAgIFwiXFx1MUUwM1wiOiBcImJcXHUwMzA3XCIsIC8vIOG4gyA9IFxcLntifVxuICAgIFwiXFx1MDEwN1wiOiBcImNcXHUwMzAxXCIsIC8vIMSHID0gXFwne2N9XG4gICAgXCJcXHUwMTBEXCI6IFwiY1xcdTAzMENcIiwgLy8gxI0gPSBcXHZ7Y31cbiAgICBcIlxcdTAxMDlcIjogXCJjXFx1MDMwMlwiLCAvLyDEiSA9IFxcXntjfVxuICAgIFwiXFx1MDEwQlwiOiBcImNcXHUwMzA3XCIsIC8vIMSLID0gXFwue2N9XG4gICAgXCJcXHUwMTBGXCI6IFwiZFxcdTAzMENcIiwgLy8gxI8gPSBcXHZ7ZH1cbiAgICBcIlxcdTFFMEJcIjogXCJkXFx1MDMwN1wiLCAvLyDhuIsgPSBcXC57ZH1cbiAgICBcIlxceEU5XCI6IFwiZVxcdTAzMDFcIiwgLy8gw6kgPSBcXCd7ZX1cbiAgICBcIlxceEU4XCI6IFwiZVxcdTAzMDBcIiwgLy8gw6ggPSBcXGB7ZX1cbiAgICBcIlxceEVCXCI6IFwiZVxcdTAzMDhcIiwgLy8gw6sgPSBcXFwie2V9XG4gICAgXCJcXHUxRUJEXCI6IFwiZVxcdTAzMDNcIiwgLy8g4bq9ID0gXFx+e2V9XG4gICAgXCJcXHUwMTEzXCI6IFwiZVxcdTAzMDRcIiwgLy8gxJMgPSBcXD17ZX1cbiAgICBcIlxcdTFFMTdcIjogXCJlXFx1MDMwNFxcdTAzMDFcIiwgLy8g4biXID0gXFw9XFwne2V9XG4gICAgXCJcXHUxRTE1XCI6IFwiZVxcdTAzMDRcXHUwMzAwXCIsIC8vIOG4lSA9IFxcPVxcYHtlfVxuICAgIFwiXFx1MDExNVwiOiBcImVcXHUwMzA2XCIsIC8vIMSVID0gXFx1e2V9XG4gICAgXCJcXHUwMTFCXCI6IFwiZVxcdTAzMENcIiwgLy8gxJsgPSBcXHZ7ZX1cbiAgICBcIlxceEVBXCI6IFwiZVxcdTAzMDJcIiwgLy8gw6ogPSBcXF57ZX1cbiAgICBcIlxcdTFFQkZcIjogXCJlXFx1MDMwMlxcdTAzMDFcIiwgLy8g4bq/ID0gXFxeXFwne2V9XG4gICAgXCJcXHUxRUMxXCI6IFwiZVxcdTAzMDJcXHUwMzAwXCIsIC8vIOG7gSA9IFxcXlxcYHtlfVxuICAgIFwiXFx1MUVDNVwiOiBcImVcXHUwMzAyXFx1MDMwM1wiLCAvLyDhu4UgPSBcXF5cXH57ZX1cbiAgICBcIlxcdTAxMTdcIjogXCJlXFx1MDMwN1wiLCAvLyDElyA9IFxcLntlfVxuICAgIFwiXFx1MUUxRlwiOiBcImZcXHUwMzA3XCIsIC8vIOG4nyA9IFxcLntmfVxuICAgIFwiXFx1MDFGNVwiOiBcImdcXHUwMzAxXCIsIC8vIMe1ID0gXFwne2d9XG4gICAgXCJcXHUxRTIxXCI6IFwiZ1xcdTAzMDRcIiwgLy8g4bihID0gXFw9e2d9XG4gICAgXCJcXHUwMTFGXCI6IFwiZ1xcdTAzMDZcIiwgLy8gxJ8gPSBcXHV7Z31cbiAgICBcIlxcdTAxRTdcIjogXCJnXFx1MDMwQ1wiLCAvLyDHpyA9IFxcdntnfVxuICAgIFwiXFx1MDExRFwiOiBcImdcXHUwMzAyXCIsIC8vIMSdID0gXFxee2d9XG4gICAgXCJcXHUwMTIxXCI6IFwiZ1xcdTAzMDdcIiwgLy8gxKEgPSBcXC57Z31cbiAgICBcIlxcdTFFMjdcIjogXCJoXFx1MDMwOFwiLCAvLyDhuKcgPSBcXFwie2h9XG4gICAgXCJcXHUwMjFGXCI6IFwiaFxcdTAzMENcIiwgLy8gyJ8gPSBcXHZ7aH1cbiAgICBcIlxcdTAxMjVcIjogXCJoXFx1MDMwMlwiLCAvLyDEpSA9IFxcXntofVxuICAgIFwiXFx1MUUyM1wiOiBcImhcXHUwMzA3XCIsIC8vIOG4oyA9IFxcLntofVxuICAgIFwiXFx4RURcIjogXCJpXFx1MDMwMVwiLCAvLyDDrSA9IFxcJ3tpfVxuICAgIFwiXFx4RUNcIjogXCJpXFx1MDMwMFwiLCAvLyDDrCA9IFxcYHtpfVxuICAgIFwiXFx4RUZcIjogXCJpXFx1MDMwOFwiLCAvLyDDryA9IFxcXCJ7aX1cbiAgICBcIlxcdTFFMkZcIjogXCJpXFx1MDMwOFxcdTAzMDFcIiwgLy8g4bivID0gXFxcIlxcJ3tpfVxuICAgIFwiXFx1MDEyOVwiOiBcImlcXHUwMzAzXCIsIC8vIMSpID0gXFx+e2l9XG4gICAgXCJcXHUwMTJCXCI6IFwiaVxcdTAzMDRcIiwgLy8gxKsgPSBcXD17aX1cbiAgICBcIlxcdTAxMkRcIjogXCJpXFx1MDMwNlwiLCAvLyDErSA9IFxcdXtpfVxuICAgIFwiXFx1MDFEMFwiOiBcImlcXHUwMzBDXCIsIC8vIMeQID0gXFx2e2l9XG4gICAgXCJcXHhFRVwiOiBcImlcXHUwMzAyXCIsIC8vIMOuID0gXFxee2l9XG4gICAgXCJcXHUwMUYwXCI6IFwialxcdTAzMENcIiwgLy8gx7AgPSBcXHZ7an1cbiAgICBcIlxcdTAxMzVcIjogXCJqXFx1MDMwMlwiLCAvLyDEtSA9IFxcXntqfVxuICAgIFwiXFx1MUUzMVwiOiBcImtcXHUwMzAxXCIsIC8vIOG4sSA9IFxcJ3trfVxuICAgIFwiXFx1MDFFOVwiOiBcImtcXHUwMzBDXCIsIC8vIMepID0gXFx2e2t9XG4gICAgXCJcXHUwMTNBXCI6IFwibFxcdTAzMDFcIiwgLy8gxLogPSBcXCd7bH1cbiAgICBcIlxcdTAxM0VcIjogXCJsXFx1MDMwQ1wiLCAvLyDEviA9IFxcdntsfVxuICAgIFwiXFx1MUUzRlwiOiBcIm1cXHUwMzAxXCIsIC8vIOG4vyA9IFxcJ3ttfVxuICAgIFwiXFx1MUU0MVwiOiBcIm1cXHUwMzA3XCIsIC8vIOG5gSA9IFxcLnttfVxuICAgIFwiXFx1MDE0NFwiOiBcIm5cXHUwMzAxXCIsIC8vIMWEID0gXFwne259XG4gICAgXCJcXHUwMUY5XCI6IFwiblxcdTAzMDBcIiwgLy8gx7kgPSBcXGB7bn1cbiAgICBcIlxceEYxXCI6IFwiblxcdTAzMDNcIiwgLy8gw7EgPSBcXH57bn1cbiAgICBcIlxcdTAxNDhcIjogXCJuXFx1MDMwQ1wiLCAvLyDFiCA9IFxcdntufVxuICAgIFwiXFx1MUU0NVwiOiBcIm5cXHUwMzA3XCIsIC8vIOG5hSA9IFxcLntufVxuICAgIFwiXFx4RjNcIjogXCJvXFx1MDMwMVwiLCAvLyDDsyA9IFxcJ3tvfVxuICAgIFwiXFx4RjJcIjogXCJvXFx1MDMwMFwiLCAvLyDDsiA9IFxcYHtvfVxuICAgIFwiXFx4RjZcIjogXCJvXFx1MDMwOFwiLCAvLyDDtiA9IFxcXCJ7b31cbiAgICBcIlxcdTAyMkJcIjogXCJvXFx1MDMwOFxcdTAzMDRcIiwgLy8gyKsgPSBcXFwiXFw9e299XG4gICAgXCJcXHhGNVwiOiBcIm9cXHUwMzAzXCIsIC8vIMO1ID0gXFx+e299XG4gICAgXCJcXHUxRTREXCI6IFwib1xcdTAzMDNcXHUwMzAxXCIsIC8vIOG5jSA9IFxcflxcJ3tvfVxuICAgIFwiXFx1MUU0RlwiOiBcIm9cXHUwMzAzXFx1MDMwOFwiLCAvLyDhuY8gPSBcXH5cXFwie299XG4gICAgXCJcXHUwMjJEXCI6IFwib1xcdTAzMDNcXHUwMzA0XCIsIC8vIMitID0gXFx+XFw9e299XG4gICAgXCJcXHUwMTREXCI6IFwib1xcdTAzMDRcIiwgLy8gxY0gPSBcXD17b31cbiAgICBcIlxcdTFFNTNcIjogXCJvXFx1MDMwNFxcdTAzMDFcIiwgLy8g4bmTID0gXFw9XFwne299XG4gICAgXCJcXHUxRTUxXCI6IFwib1xcdTAzMDRcXHUwMzAwXCIsIC8vIOG5kSA9IFxcPVxcYHtvfVxuICAgIFwiXFx1MDE0RlwiOiBcIm9cXHUwMzA2XCIsIC8vIMWPID0gXFx1e299XG4gICAgXCJcXHUwMUQyXCI6IFwib1xcdTAzMENcIiwgLy8gx5IgPSBcXHZ7b31cbiAgICBcIlxceEY0XCI6IFwib1xcdTAzMDJcIiwgLy8gw7QgPSBcXF57b31cbiAgICBcIlxcdTFFRDFcIjogXCJvXFx1MDMwMlxcdTAzMDFcIiwgLy8g4buRID0gXFxeXFwne299XG4gICAgXCJcXHUxRUQzXCI6IFwib1xcdTAzMDJcXHUwMzAwXCIsIC8vIOG7kyA9IFxcXlxcYHtvfVxuICAgIFwiXFx1MUVEN1wiOiBcIm9cXHUwMzAyXFx1MDMwM1wiLCAvLyDhu5cgPSBcXF5cXH57b31cbiAgICBcIlxcdTAyMkZcIjogXCJvXFx1MDMwN1wiLCAvLyDIryA9IFxcLntvfVxuICAgIFwiXFx1MDIzMVwiOiBcIm9cXHUwMzA3XFx1MDMwNFwiLCAvLyDIsSA9IFxcLlxcPXtvfVxuICAgIFwiXFx1MDE1MVwiOiBcIm9cXHUwMzBCXCIsIC8vIMWRID0gXFxIe299XG4gICAgXCJcXHUxRTU1XCI6IFwicFxcdTAzMDFcIiwgLy8g4bmVID0gXFwne3B9XG4gICAgXCJcXHUxRTU3XCI6IFwicFxcdTAzMDdcIiwgLy8g4bmXID0gXFwue3B9XG4gICAgXCJcXHUwMTU1XCI6IFwiclxcdTAzMDFcIiwgLy8gxZUgPSBcXCd7cn1cbiAgICBcIlxcdTAxNTlcIjogXCJyXFx1MDMwQ1wiLCAvLyDFmSA9IFxcdntyfVxuICAgIFwiXFx1MUU1OVwiOiBcInJcXHUwMzA3XCIsIC8vIOG5mSA9IFxcLntyfVxuICAgIFwiXFx1MDE1QlwiOiBcInNcXHUwMzAxXCIsIC8vIMWbID0gXFwne3N9XG4gICAgXCJcXHUxRTY1XCI6IFwic1xcdTAzMDFcXHUwMzA3XCIsIC8vIOG5pSA9IFxcJ1xcLntzfVxuICAgIFwiXFx1MDE2MVwiOiBcInNcXHUwMzBDXCIsIC8vIMWhID0gXFx2e3N9XG4gICAgXCJcXHUxRTY3XCI6IFwic1xcdTAzMENcXHUwMzA3XCIsIC8vIOG5pyA9IFxcdlxcLntzfVxuICAgIFwiXFx1MDE1RFwiOiBcInNcXHUwMzAyXCIsIC8vIMWdID0gXFxee3N9XG4gICAgXCJcXHUxRTYxXCI6IFwic1xcdTAzMDdcIiwgLy8g4bmhID0gXFwue3N9XG4gICAgXCJcXHUxRTk3XCI6IFwidFxcdTAzMDhcIiwgLy8g4bqXID0gXFxcInt0fVxuICAgIFwiXFx1MDE2NVwiOiBcInRcXHUwMzBDXCIsIC8vIMWlID0gXFx2e3R9XG4gICAgXCJcXHUxRTZCXCI6IFwidFxcdTAzMDdcIiwgLy8g4bmrID0gXFwue3R9XG4gICAgXCJcXHhGQVwiOiBcInVcXHUwMzAxXCIsIC8vIMO6ID0gXFwne3V9XG4gICAgXCJcXHhGOVwiOiBcInVcXHUwMzAwXCIsIC8vIMO5ID0gXFxge3V9XG4gICAgXCJcXHhGQ1wiOiBcInVcXHUwMzA4XCIsIC8vIMO8ID0gXFxcInt1fVxuICAgIFwiXFx1MDFEOFwiOiBcInVcXHUwMzA4XFx1MDMwMVwiLCAvLyDHmCA9IFxcXCJcXCd7dX1cbiAgICBcIlxcdTAxRENcIjogXCJ1XFx1MDMwOFxcdTAzMDBcIiwgLy8gx5wgPSBcXFwiXFxge3V9XG4gICAgXCJcXHUwMUQ2XCI6IFwidVxcdTAzMDhcXHUwMzA0XCIsIC8vIMeWID0gXFxcIlxcPXt1fVxuICAgIFwiXFx1MDFEQVwiOiBcInVcXHUwMzA4XFx1MDMwQ1wiLCAvLyDHmiA9IFxcXCJcXHZ7dX1cbiAgICBcIlxcdTAxNjlcIjogXCJ1XFx1MDMwM1wiLCAvLyDFqSA9IFxcfnt1fVxuICAgIFwiXFx1MUU3OVwiOiBcInVcXHUwMzAzXFx1MDMwMVwiLCAvLyDhubkgPSBcXH5cXCd7dX1cbiAgICBcIlxcdTAxNkJcIjogXCJ1XFx1MDMwNFwiLCAvLyDFqyA9IFxcPXt1fVxuICAgIFwiXFx1MUU3QlwiOiBcInVcXHUwMzA0XFx1MDMwOFwiLCAvLyDhubsgPSBcXD1cXFwie3V9XG4gICAgXCJcXHUwMTZEXCI6IFwidVxcdTAzMDZcIiwgLy8gxa0gPSBcXHV7dX1cbiAgICBcIlxcdTAxRDRcIjogXCJ1XFx1MDMwQ1wiLCAvLyDHlCA9IFxcdnt1fVxuICAgIFwiXFx4RkJcIjogXCJ1XFx1MDMwMlwiLCAvLyDDuyA9IFxcXnt1fVxuICAgIFwiXFx1MDE2RlwiOiBcInVcXHUwMzBBXCIsIC8vIMWvID0gXFxye3V9XG4gICAgXCJcXHUwMTcxXCI6IFwidVxcdTAzMEJcIiwgLy8gxbEgPSBcXEh7dX1cbiAgICBcIlxcdTFFN0RcIjogXCJ2XFx1MDMwM1wiLCAvLyDhub0gPSBcXH57dn1cbiAgICBcIlxcdTFFODNcIjogXCJ3XFx1MDMwMVwiLCAvLyDhuoMgPSBcXCd7d31cbiAgICBcIlxcdTFFODFcIjogXCJ3XFx1MDMwMFwiLCAvLyDhuoEgPSBcXGB7d31cbiAgICBcIlxcdTFFODVcIjogXCJ3XFx1MDMwOFwiLCAvLyDhuoUgPSBcXFwie3d9XG4gICAgXCJcXHUwMTc1XCI6IFwid1xcdTAzMDJcIiwgLy8gxbUgPSBcXF57d31cbiAgICBcIlxcdTFFODdcIjogXCJ3XFx1MDMwN1wiLCAvLyDhuocgPSBcXC57d31cbiAgICBcIlxcdTFFOThcIjogXCJ3XFx1MDMwQVwiLCAvLyDhupggPSBcXHJ7d31cbiAgICBcIlxcdTFFOERcIjogXCJ4XFx1MDMwOFwiLCAvLyDhuo0gPSBcXFwie3h9XG4gICAgXCJcXHUxRThCXCI6IFwieFxcdTAzMDdcIiwgLy8g4bqLID0gXFwue3h9XG4gICAgXCJcXHhGRFwiOiBcInlcXHUwMzAxXCIsIC8vIMO9ID0gXFwne3l9XG4gICAgXCJcXHUxRUYzXCI6IFwieVxcdTAzMDBcIiwgLy8g4buzID0gXFxge3l9XG4gICAgXCJcXHhGRlwiOiBcInlcXHUwMzA4XCIsIC8vIMO/ID0gXFxcInt5fVxuICAgIFwiXFx1MUVGOVwiOiBcInlcXHUwMzAzXCIsIC8vIOG7uSA9IFxcfnt5fVxuICAgIFwiXFx1MDIzM1wiOiBcInlcXHUwMzA0XCIsIC8vIMizID0gXFw9e3l9XG4gICAgXCJcXHUwMTc3XCI6IFwieVxcdTAzMDJcIiwgLy8gxbcgPSBcXF57eX1cbiAgICBcIlxcdTFFOEZcIjogXCJ5XFx1MDMwN1wiLCAvLyDhuo8gPSBcXC57eX1cbiAgICBcIlxcdTFFOTlcIjogXCJ5XFx1MDMwQVwiLCAvLyDhupkgPSBcXHJ7eX1cbiAgICBcIlxcdTAxN0FcIjogXCJ6XFx1MDMwMVwiLCAvLyDFuiA9IFxcJ3t6fVxuICAgIFwiXFx1MDE3RVwiOiBcInpcXHUwMzBDXCIsIC8vIMW+ID0gXFx2e3p9XG4gICAgXCJcXHUxRTkxXCI6IFwielxcdTAzMDJcIiwgLy8g4bqRID0gXFxee3p9XG4gICAgXCJcXHUwMTdDXCI6IFwielxcdTAzMDdcIiwgLy8gxbwgPSBcXC57en1cbiAgICBcIlxceEMxXCI6IFwiQVxcdTAzMDFcIiwgLy8gw4EgPSBcXCd7QX1cbiAgICBcIlxceEMwXCI6IFwiQVxcdTAzMDBcIiwgLy8gw4AgPSBcXGB7QX1cbiAgICBcIlxceEM0XCI6IFwiQVxcdTAzMDhcIiwgLy8gw4QgPSBcXFwie0F9XG4gICAgXCJcXHUwMURFXCI6IFwiQVxcdTAzMDhcXHUwMzA0XCIsIC8vIMeeID0gXFxcIlxcPXtBfVxuICAgIFwiXFx4QzNcIjogXCJBXFx1MDMwM1wiLCAvLyDDgyA9IFxcfntBfVxuICAgIFwiXFx1MDEwMFwiOiBcIkFcXHUwMzA0XCIsIC8vIMSAID0gXFw9e0F9XG4gICAgXCJcXHUwMTAyXCI6IFwiQVxcdTAzMDZcIiwgLy8gxIIgPSBcXHV7QX1cbiAgICBcIlxcdTFFQUVcIjogXCJBXFx1MDMwNlxcdTAzMDFcIiwgLy8g4bquID0gXFx1XFwne0F9XG4gICAgXCJcXHUxRUIwXCI6IFwiQVxcdTAzMDZcXHUwMzAwXCIsIC8vIOG6sCA9IFxcdVxcYHtBfVxuICAgIFwiXFx1MUVCNFwiOiBcIkFcXHUwMzA2XFx1MDMwM1wiLCAvLyDhurQgPSBcXHVcXH57QX1cbiAgICBcIlxcdTAxQ0RcIjogXCJBXFx1MDMwQ1wiLCAvLyDHjSA9IFxcdntBfVxuICAgIFwiXFx4QzJcIjogXCJBXFx1MDMwMlwiLCAvLyDDgiA9IFxcXntBfVxuICAgIFwiXFx1MUVBNFwiOiBcIkFcXHUwMzAyXFx1MDMwMVwiLCAvLyDhuqQgPSBcXF5cXCd7QX1cbiAgICBcIlxcdTFFQTZcIjogXCJBXFx1MDMwMlxcdTAzMDBcIiwgLy8g4bqmID0gXFxeXFxge0F9XG4gICAgXCJcXHUxRUFBXCI6IFwiQVxcdTAzMDJcXHUwMzAzXCIsIC8vIOG6qiA9IFxcXlxcfntBfVxuICAgIFwiXFx1MDIyNlwiOiBcIkFcXHUwMzA3XCIsIC8vIMimID0gXFwue0F9XG4gICAgXCJcXHUwMUUwXCI6IFwiQVxcdTAzMDdcXHUwMzA0XCIsIC8vIMegID0gXFwuXFw9e0F9XG4gICAgXCJcXHhDNVwiOiBcIkFcXHUwMzBBXCIsIC8vIMOFID0gXFxye0F9XG4gICAgXCJcXHUwMUZBXCI6IFwiQVxcdTAzMEFcXHUwMzAxXCIsIC8vIMe6ID0gXFxyXFwne0F9XG4gICAgXCJcXHUxRTAyXCI6IFwiQlxcdTAzMDdcIiwgLy8g4biCID0gXFwue0J9XG4gICAgXCJcXHUwMTA2XCI6IFwiQ1xcdTAzMDFcIiwgLy8gxIYgPSBcXCd7Q31cbiAgICBcIlxcdTAxMENcIjogXCJDXFx1MDMwQ1wiLCAvLyDEjCA9IFxcdntDfVxuICAgIFwiXFx1MDEwOFwiOiBcIkNcXHUwMzAyXCIsIC8vIMSIID0gXFxee0N9XG4gICAgXCJcXHUwMTBBXCI6IFwiQ1xcdTAzMDdcIiwgLy8gxIogPSBcXC57Q31cbiAgICBcIlxcdTAxMEVcIjogXCJEXFx1MDMwQ1wiLCAvLyDEjiA9IFxcdntEfVxuICAgIFwiXFx1MUUwQVwiOiBcIkRcXHUwMzA3XCIsIC8vIOG4iiA9IFxcLntEfVxuICAgIFwiXFx4QzlcIjogXCJFXFx1MDMwMVwiLCAvLyDDiSA9IFxcJ3tFfVxuICAgIFwiXFx4QzhcIjogXCJFXFx1MDMwMFwiLCAvLyDDiCA9IFxcYHtFfVxuICAgIFwiXFx4Q0JcIjogXCJFXFx1MDMwOFwiLCAvLyDDiyA9IFxcXCJ7RX1cbiAgICBcIlxcdTFFQkNcIjogXCJFXFx1MDMwM1wiLCAvLyDhurwgPSBcXH57RX1cbiAgICBcIlxcdTAxMTJcIjogXCJFXFx1MDMwNFwiLCAvLyDEkiA9IFxcPXtFfVxuICAgIFwiXFx1MUUxNlwiOiBcIkVcXHUwMzA0XFx1MDMwMVwiLCAvLyDhuJYgPSBcXD1cXCd7RX1cbiAgICBcIlxcdTFFMTRcIjogXCJFXFx1MDMwNFxcdTAzMDBcIiwgLy8g4biUID0gXFw9XFxge0V9XG4gICAgXCJcXHUwMTE0XCI6IFwiRVxcdTAzMDZcIiwgLy8gxJQgPSBcXHV7RX1cbiAgICBcIlxcdTAxMUFcIjogXCJFXFx1MDMwQ1wiLCAvLyDEmiA9IFxcdntFfVxuICAgIFwiXFx4Q0FcIjogXCJFXFx1MDMwMlwiLCAvLyDDiiA9IFxcXntFfVxuICAgIFwiXFx1MUVCRVwiOiBcIkVcXHUwMzAyXFx1MDMwMVwiLCAvLyDhur4gPSBcXF5cXCd7RX1cbiAgICBcIlxcdTFFQzBcIjogXCJFXFx1MDMwMlxcdTAzMDBcIiwgLy8g4buAID0gXFxeXFxge0V9XG4gICAgXCJcXHUxRUM0XCI6IFwiRVxcdTAzMDJcXHUwMzAzXCIsIC8vIOG7hCA9IFxcXlxcfntFfVxuICAgIFwiXFx1MDExNlwiOiBcIkVcXHUwMzA3XCIsIC8vIMSWID0gXFwue0V9XG4gICAgXCJcXHUxRTFFXCI6IFwiRlxcdTAzMDdcIiwgLy8g4bieID0gXFwue0Z9XG4gICAgXCJcXHUwMUY0XCI6IFwiR1xcdTAzMDFcIiwgLy8gx7QgPSBcXCd7R31cbiAgICBcIlxcdTFFMjBcIjogXCJHXFx1MDMwNFwiLCAvLyDhuKAgPSBcXD17R31cbiAgICBcIlxcdTAxMUVcIjogXCJHXFx1MDMwNlwiLCAvLyDEniA9IFxcdXtHfVxuICAgIFwiXFx1MDFFNlwiOiBcIkdcXHUwMzBDXCIsIC8vIMemID0gXFx2e0d9XG4gICAgXCJcXHUwMTFDXCI6IFwiR1xcdTAzMDJcIiwgLy8gxJwgPSBcXF57R31cbiAgICBcIlxcdTAxMjBcIjogXCJHXFx1MDMwN1wiLCAvLyDEoCA9IFxcLntHfVxuICAgIFwiXFx1MUUyNlwiOiBcIkhcXHUwMzA4XCIsIC8vIOG4piA9IFxcXCJ7SH1cbiAgICBcIlxcdTAyMUVcIjogXCJIXFx1MDMwQ1wiLCAvLyDIniA9IFxcdntIfVxuICAgIFwiXFx1MDEyNFwiOiBcIkhcXHUwMzAyXCIsIC8vIMSkID0gXFxee0h9XG4gICAgXCJcXHUxRTIyXCI6IFwiSFxcdTAzMDdcIiwgLy8g4biiID0gXFwue0h9XG4gICAgXCJcXHhDRFwiOiBcIklcXHUwMzAxXCIsIC8vIMONID0gXFwne0l9XG4gICAgXCJcXHhDQ1wiOiBcIklcXHUwMzAwXCIsIC8vIMOMID0gXFxge0l9XG4gICAgXCJcXHhDRlwiOiBcIklcXHUwMzA4XCIsIC8vIMOPID0gXFxcIntJfVxuICAgIFwiXFx1MUUyRVwiOiBcIklcXHUwMzA4XFx1MDMwMVwiLCAvLyDhuK4gPSBcXFwiXFwne0l9XG4gICAgXCJcXHUwMTI4XCI6IFwiSVxcdTAzMDNcIiwgLy8gxKggPSBcXH57SX1cbiAgICBcIlxcdTAxMkFcIjogXCJJXFx1MDMwNFwiLCAvLyDEqiA9IFxcPXtJfVxuICAgIFwiXFx1MDEyQ1wiOiBcIklcXHUwMzA2XCIsIC8vIMSsID0gXFx1e0l9XG4gICAgXCJcXHUwMUNGXCI6IFwiSVxcdTAzMENcIiwgLy8gx48gPSBcXHZ7SX1cbiAgICBcIlxceENFXCI6IFwiSVxcdTAzMDJcIiwgLy8gw44gPSBcXF57SX1cbiAgICBcIlxcdTAxMzBcIjogXCJJXFx1MDMwN1wiLCAvLyDEsCA9IFxcLntJfVxuICAgIFwiXFx1MDEzNFwiOiBcIkpcXHUwMzAyXCIsIC8vIMS0ID0gXFxee0p9XG4gICAgXCJcXHUxRTMwXCI6IFwiS1xcdTAzMDFcIiwgLy8g4biwID0gXFwne0t9XG4gICAgXCJcXHUwMUU4XCI6IFwiS1xcdTAzMENcIiwgLy8gx6ggPSBcXHZ7S31cbiAgICBcIlxcdTAxMzlcIjogXCJMXFx1MDMwMVwiLCAvLyDEuSA9IFxcJ3tMfVxuICAgIFwiXFx1MDEzRFwiOiBcIkxcXHUwMzBDXCIsIC8vIMS9ID0gXFx2e0x9XG4gICAgXCJcXHUxRTNFXCI6IFwiTVxcdTAzMDFcIiwgLy8g4bi+ID0gXFwne019XG4gICAgXCJcXHUxRTQwXCI6IFwiTVxcdTAzMDdcIiwgLy8g4bmAID0gXFwue019XG4gICAgXCJcXHUwMTQzXCI6IFwiTlxcdTAzMDFcIiwgLy8gxYMgPSBcXCd7Tn1cbiAgICBcIlxcdTAxRjhcIjogXCJOXFx1MDMwMFwiLCAvLyDHuCA9IFxcYHtOfVxuICAgIFwiXFx4RDFcIjogXCJOXFx1MDMwM1wiLCAvLyDDkSA9IFxcfntOfVxuICAgIFwiXFx1MDE0N1wiOiBcIk5cXHUwMzBDXCIsIC8vIMWHID0gXFx2e059XG4gICAgXCJcXHUxRTQ0XCI6IFwiTlxcdTAzMDdcIiwgLy8g4bmEID0gXFwue059XG4gICAgXCJcXHhEM1wiOiBcIk9cXHUwMzAxXCIsIC8vIMOTID0gXFwne099XG4gICAgXCJcXHhEMlwiOiBcIk9cXHUwMzAwXCIsIC8vIMOSID0gXFxge099XG4gICAgXCJcXHhENlwiOiBcIk9cXHUwMzA4XCIsIC8vIMOWID0gXFxcIntPfVxuICAgIFwiXFx1MDIyQVwiOiBcIk9cXHUwMzA4XFx1MDMwNFwiLCAvLyDIqiA9IFxcXCJcXD17T31cbiAgICBcIlxceEQ1XCI6IFwiT1xcdTAzMDNcIiwgLy8gw5UgPSBcXH57T31cbiAgICBcIlxcdTFFNENcIjogXCJPXFx1MDMwM1xcdTAzMDFcIiwgLy8g4bmMID0gXFx+XFwne099XG4gICAgXCJcXHUxRTRFXCI6IFwiT1xcdTAzMDNcXHUwMzA4XCIsIC8vIOG5jiA9IFxcflxcXCJ7T31cbiAgICBcIlxcdTAyMkNcIjogXCJPXFx1MDMwM1xcdTAzMDRcIiwgLy8gyKwgPSBcXH5cXD17T31cbiAgICBcIlxcdTAxNENcIjogXCJPXFx1MDMwNFwiLCAvLyDFjCA9IFxcPXtPfVxuICAgIFwiXFx1MUU1MlwiOiBcIk9cXHUwMzA0XFx1MDMwMVwiLCAvLyDhuZIgPSBcXD1cXCd7T31cbiAgICBcIlxcdTFFNTBcIjogXCJPXFx1MDMwNFxcdTAzMDBcIiwgLy8g4bmQID0gXFw9XFxge099XG4gICAgXCJcXHUwMTRFXCI6IFwiT1xcdTAzMDZcIiwgLy8gxY4gPSBcXHV7T31cbiAgICBcIlxcdTAxRDFcIjogXCJPXFx1MDMwQ1wiLCAvLyDHkSA9IFxcdntPfVxuICAgIFwiXFx4RDRcIjogXCJPXFx1MDMwMlwiLCAvLyDDlCA9IFxcXntPfVxuICAgIFwiXFx1MUVEMFwiOiBcIk9cXHUwMzAyXFx1MDMwMVwiLCAvLyDhu5AgPSBcXF5cXCd7T31cbiAgICBcIlxcdTFFRDJcIjogXCJPXFx1MDMwMlxcdTAzMDBcIiwgLy8g4buSID0gXFxeXFxge099XG4gICAgXCJcXHUxRUQ2XCI6IFwiT1xcdTAzMDJcXHUwMzAzXCIsIC8vIOG7liA9IFxcXlxcfntPfVxuICAgIFwiXFx1MDIyRVwiOiBcIk9cXHUwMzA3XCIsIC8vIMiuID0gXFwue099XG4gICAgXCJcXHUwMjMwXCI6IFwiT1xcdTAzMDdcXHUwMzA0XCIsIC8vIMiwID0gXFwuXFw9e099XG4gICAgXCJcXHUwMTUwXCI6IFwiT1xcdTAzMEJcIiwgLy8gxZAgPSBcXEh7T31cbiAgICBcIlxcdTFFNTRcIjogXCJQXFx1MDMwMVwiLCAvLyDhuZQgPSBcXCd7UH1cbiAgICBcIlxcdTFFNTZcIjogXCJQXFx1MDMwN1wiLCAvLyDhuZYgPSBcXC57UH1cbiAgICBcIlxcdTAxNTRcIjogXCJSXFx1MDMwMVwiLCAvLyDFlCA9IFxcJ3tSfVxuICAgIFwiXFx1MDE1OFwiOiBcIlJcXHUwMzBDXCIsIC8vIMWYID0gXFx2e1J9XG4gICAgXCJcXHUxRTU4XCI6IFwiUlxcdTAzMDdcIiwgLy8g4bmYID0gXFwue1J9XG4gICAgXCJcXHUwMTVBXCI6IFwiU1xcdTAzMDFcIiwgLy8gxZogPSBcXCd7U31cbiAgICBcIlxcdTFFNjRcIjogXCJTXFx1MDMwMVxcdTAzMDdcIiwgLy8g4bmkID0gXFwnXFwue1N9XG4gICAgXCJcXHUwMTYwXCI6IFwiU1xcdTAzMENcIiwgLy8gxaAgPSBcXHZ7U31cbiAgICBcIlxcdTFFNjZcIjogXCJTXFx1MDMwQ1xcdTAzMDdcIiwgLy8g4bmmID0gXFx2XFwue1N9XG4gICAgXCJcXHUwMTVDXCI6IFwiU1xcdTAzMDJcIiwgLy8gxZwgPSBcXF57U31cbiAgICBcIlxcdTFFNjBcIjogXCJTXFx1MDMwN1wiLCAvLyDhuaAgPSBcXC57U31cbiAgICBcIlxcdTAxNjRcIjogXCJUXFx1MDMwQ1wiLCAvLyDFpCA9IFxcdntUfVxuICAgIFwiXFx1MUU2QVwiOiBcIlRcXHUwMzA3XCIsIC8vIOG5qiA9IFxcLntUfVxuICAgIFwiXFx4REFcIjogXCJVXFx1MDMwMVwiLCAvLyDDmiA9IFxcJ3tVfVxuICAgIFwiXFx4RDlcIjogXCJVXFx1MDMwMFwiLCAvLyDDmSA9IFxcYHtVfVxuICAgIFwiXFx4RENcIjogXCJVXFx1MDMwOFwiLCAvLyDDnCA9IFxcXCJ7VX1cbiAgICBcIlxcdTAxRDdcIjogXCJVXFx1MDMwOFxcdTAzMDFcIiwgLy8gx5cgPSBcXFwiXFwne1V9XG4gICAgXCJcXHUwMURCXCI6IFwiVVxcdTAzMDhcXHUwMzAwXCIsIC8vIMebID0gXFxcIlxcYHtVfVxuICAgIFwiXFx1MDFENVwiOiBcIlVcXHUwMzA4XFx1MDMwNFwiLCAvLyDHlSA9IFxcXCJcXD17VX1cbiAgICBcIlxcdTAxRDlcIjogXCJVXFx1MDMwOFxcdTAzMENcIiwgLy8gx5kgPSBcXFwiXFx2e1V9XG4gICAgXCJcXHUwMTY4XCI6IFwiVVxcdTAzMDNcIiwgLy8gxaggPSBcXH57VX1cbiAgICBcIlxcdTFFNzhcIjogXCJVXFx1MDMwM1xcdTAzMDFcIiwgLy8g4bm4ID0gXFx+XFwne1V9XG4gICAgXCJcXHUwMTZBXCI6IFwiVVxcdTAzMDRcIiwgLy8gxaogPSBcXD17VX1cbiAgICBcIlxcdTFFN0FcIjogXCJVXFx1MDMwNFxcdTAzMDhcIiwgLy8g4bm6ID0gXFw9XFxcIntVfVxuICAgIFwiXFx1MDE2Q1wiOiBcIlVcXHUwMzA2XCIsIC8vIMWsID0gXFx1e1V9XG4gICAgXCJcXHUwMUQzXCI6IFwiVVxcdTAzMENcIiwgLy8gx5MgPSBcXHZ7VX1cbiAgICBcIlxceERCXCI6IFwiVVxcdTAzMDJcIiwgLy8gw5sgPSBcXF57VX1cbiAgICBcIlxcdTAxNkVcIjogXCJVXFx1MDMwQVwiLCAvLyDFriA9IFxccntVfVxuICAgIFwiXFx1MDE3MFwiOiBcIlVcXHUwMzBCXCIsIC8vIMWwID0gXFxIe1V9XG4gICAgXCJcXHUxRTdDXCI6IFwiVlxcdTAzMDNcIiwgLy8g4bm8ID0gXFx+e1Z9XG4gICAgXCJcXHUxRTgyXCI6IFwiV1xcdTAzMDFcIiwgLy8g4bqCID0gXFwne1d9XG4gICAgXCJcXHUxRTgwXCI6IFwiV1xcdTAzMDBcIiwgLy8g4bqAID0gXFxge1d9XG4gICAgXCJcXHUxRTg0XCI6IFwiV1xcdTAzMDhcIiwgLy8g4bqEID0gXFxcIntXfVxuICAgIFwiXFx1MDE3NFwiOiBcIldcXHUwMzAyXCIsIC8vIMW0ID0gXFxee1d9XG4gICAgXCJcXHUxRTg2XCI6IFwiV1xcdTAzMDdcIiwgLy8g4bqGID0gXFwue1d9XG4gICAgXCJcXHUxRThDXCI6IFwiWFxcdTAzMDhcIiwgLy8g4bqMID0gXFxcIntYfVxuICAgIFwiXFx1MUU4QVwiOiBcIlhcXHUwMzA3XCIsIC8vIOG6iiA9IFxcLntYfVxuICAgIFwiXFx4RERcIjogXCJZXFx1MDMwMVwiLCAvLyDDnSA9IFxcJ3tZfVxuICAgIFwiXFx1MUVGMlwiOiBcIllcXHUwMzAwXCIsIC8vIOG7siA9IFxcYHtZfVxuICAgIFwiXFx1MDE3OFwiOiBcIllcXHUwMzA4XCIsIC8vIMW4ID0gXFxcIntZfVxuICAgIFwiXFx1MUVGOFwiOiBcIllcXHUwMzAzXCIsIC8vIOG7uCA9IFxcfntZfVxuICAgIFwiXFx1MDIzMlwiOiBcIllcXHUwMzA0XCIsIC8vIMiyID0gXFw9e1l9XG4gICAgXCJcXHUwMTc2XCI6IFwiWVxcdTAzMDJcIiwgLy8gxbYgPSBcXF57WX1cbiAgICBcIlxcdTFFOEVcIjogXCJZXFx1MDMwN1wiLCAvLyDhuo4gPSBcXC57WX1cbiAgICBcIlxcdTAxNzlcIjogXCJaXFx1MDMwMVwiLCAvLyDFuSA9IFxcJ3tafVxuICAgIFwiXFx1MDE3RFwiOiBcIlpcXHUwMzBDXCIsIC8vIMW9ID0gXFx2e1p9XG4gICAgXCJcXHUxRTkwXCI6IFwiWlxcdTAzMDJcIiwgLy8g4bqQID0gXFxee1p9XG4gICAgXCJcXHUwMTdCXCI6IFwiWlxcdTAzMDdcIiwgLy8gxbsgPSBcXC57Wn1cbiAgICBcIlxcdTAzQUNcIjogXCJcXHUwM0IxXFx1MDMwMVwiLCAvLyDOrCA9IFxcJ3vOsX1cbiAgICBcIlxcdTFGNzBcIjogXCJcXHUwM0IxXFx1MDMwMFwiLCAvLyDhvbAgPSBcXGB7zrF9XG4gICAgXCJcXHUxRkIxXCI6IFwiXFx1MDNCMVxcdTAzMDRcIiwgLy8g4b6xID0gXFw9e86xfVxuICAgIFwiXFx1MUZCMFwiOiBcIlxcdTAzQjFcXHUwMzA2XCIsIC8vIOG+sCA9IFxcdXvOsX1cbiAgICBcIlxcdTAzQURcIjogXCJcXHUwM0I1XFx1MDMwMVwiLCAvLyDOrSA9IFxcJ3vOtX1cbiAgICBcIlxcdTFGNzJcIjogXCJcXHUwM0I1XFx1MDMwMFwiLCAvLyDhvbIgPSBcXGB7zrV9XG4gICAgXCJcXHUwM0FFXCI6IFwiXFx1MDNCN1xcdTAzMDFcIiwgLy8gzq4gPSBcXCd7zrd9XG4gICAgXCJcXHUxRjc0XCI6IFwiXFx1MDNCN1xcdTAzMDBcIiwgLy8g4b20ID0gXFxge863fVxuICAgIFwiXFx1MDNBRlwiOiBcIlxcdTAzQjlcXHUwMzAxXCIsIC8vIM6vID0gXFwne865fVxuICAgIFwiXFx1MUY3NlwiOiBcIlxcdTAzQjlcXHUwMzAwXCIsIC8vIOG9tiA9IFxcYHvOuX1cbiAgICBcIlxcdTAzQ0FcIjogXCJcXHUwM0I5XFx1MDMwOFwiLCAvLyDPiiA9IFxcXCJ7zrl9XG4gICAgXCJcXHUwMzkwXCI6IFwiXFx1MDNCOVxcdTAzMDhcXHUwMzAxXCIsIC8vIM6QID0gXFxcIlxcJ3vOuX1cbiAgICBcIlxcdTFGRDJcIjogXCJcXHUwM0I5XFx1MDMwOFxcdTAzMDBcIiwgLy8g4b+SID0gXFxcIlxcYHvOuX1cbiAgICBcIlxcdTFGRDFcIjogXCJcXHUwM0I5XFx1MDMwNFwiLCAvLyDhv5EgPSBcXD17zrl9XG4gICAgXCJcXHUxRkQwXCI6IFwiXFx1MDNCOVxcdTAzMDZcIiwgLy8g4b+QID0gXFx1e865fVxuICAgIFwiXFx1MDNDQ1wiOiBcIlxcdTAzQkZcXHUwMzAxXCIsIC8vIM+MID0gXFwne86/fVxuICAgIFwiXFx1MUY3OFwiOiBcIlxcdTAzQkZcXHUwMzAwXCIsIC8vIOG9uCA9IFxcYHvOv31cbiAgICBcIlxcdTAzQ0RcIjogXCJcXHUwM0M1XFx1MDMwMVwiLCAvLyDPjSA9IFxcJ3vPhX1cbiAgICBcIlxcdTFGN0FcIjogXCJcXHUwM0M1XFx1MDMwMFwiLCAvLyDhvbogPSBcXGB7z4V9XG4gICAgXCJcXHUwM0NCXCI6IFwiXFx1MDNDNVxcdTAzMDhcIiwgLy8gz4sgPSBcXFwie8+FfVxuICAgIFwiXFx1MDNCMFwiOiBcIlxcdTAzQzVcXHUwMzA4XFx1MDMwMVwiLCAvLyDOsCA9IFxcXCJcXCd7z4V9XG4gICAgXCJcXHUxRkUyXCI6IFwiXFx1MDNDNVxcdTAzMDhcXHUwMzAwXCIsIC8vIOG/oiA9IFxcXCJcXGB7z4V9XG4gICAgXCJcXHUxRkUxXCI6IFwiXFx1MDNDNVxcdTAzMDRcIiwgLy8g4b+hID0gXFw9e8+FfVxuICAgIFwiXFx1MUZFMFwiOiBcIlxcdTAzQzVcXHUwMzA2XCIsIC8vIOG/oCA9IFxcdXvPhX1cbiAgICBcIlxcdTAzQ0VcIjogXCJcXHUwM0M5XFx1MDMwMVwiLCAvLyDPjiA9IFxcJ3vPiX1cbiAgICBcIlxcdTFGN0NcIjogXCJcXHUwM0M5XFx1MDMwMFwiLCAvLyDhvbwgPSBcXGB7z4l9XG4gICAgXCJcXHUwMzhFXCI6IFwiXFx1MDNBNVxcdTAzMDFcIiwgLy8gzo4gPSBcXCd7zqV9XG4gICAgXCJcXHUxRkVBXCI6IFwiXFx1MDNBNVxcdTAzMDBcIiwgLy8g4b+qID0gXFxge86lfVxuICAgIFwiXFx1MDNBQlwiOiBcIlxcdTAzQTVcXHUwMzA4XCIsIC8vIM6rID0gXFxcInvOpX1cbiAgICBcIlxcdTFGRTlcIjogXCJcXHUwM0E1XFx1MDMwNFwiLCAvLyDhv6kgPSBcXD17zqV9XG4gICAgXCJcXHUxRkU4XCI6IFwiXFx1MDNBNVxcdTAzMDZcIiwgLy8g4b+oID0gXFx1e86lfVxuICAgIFwiXFx1MDM4RlwiOiBcIlxcdTAzQTlcXHUwMzAxXCIsIC8vIM6PID0gXFwne86pfVxuICAgIFwiXFx1MUZGQVwiOiBcIlxcdTAzQTlcXHUwMzAwXCIgLy8g4b+6ID0gXFxge86pfVxufSk7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKVtcImRlZmF1bHRcIl07XG59KTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxudmFyIGlzQXJyYXkgPSBmdW5jdGlvbiBpc0FycmF5KGFycikge1xuXHRpZiAodHlwZW9mIEFycmF5LmlzQXJyYXkgPT09ICdmdW5jdGlvbicpIHtcblx0XHRyZXR1cm4gQXJyYXkuaXNBcnJheShhcnIpO1xuXHR9XG5cblx0cmV0dXJuIHRvU3RyLmNhbGwoYXJyKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG5cbnZhciBpc1BsYWluT2JqZWN0ID0gZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcblx0aWYgKCFvYmogfHwgdG9TdHIuY2FsbChvYmopICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHZhciBoYXNPd25Db25zdHJ1Y3RvciA9IGhhc093bi5jYWxsKG9iaiwgJ2NvbnN0cnVjdG9yJyk7XG5cdHZhciBoYXNJc1Byb3RvdHlwZU9mID0gb2JqLmNvbnN0cnVjdG9yICYmIG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgJiYgaGFzT3duLmNhbGwob2JqLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgJ2lzUHJvdG90eXBlT2YnKTtcblx0Ly8gTm90IG93biBjb25zdHJ1Y3RvciBwcm9wZXJ0eSBtdXN0IGJlIE9iamVjdFxuXHRpZiAob2JqLmNvbnN0cnVjdG9yICYmICFoYXNPd25Db25zdHJ1Y3RvciAmJiAhaGFzSXNQcm90b3R5cGVPZikge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8vIE93biBwcm9wZXJ0aWVzIGFyZSBlbnVtZXJhdGVkIGZpcnN0bHksIHNvIHRvIHNwZWVkIHVwLFxuXHQvLyBpZiBsYXN0IG9uZSBpcyBvd24sIHRoZW4gYWxsIHByb3BlcnRpZXMgYXJlIG93bi5cblx0dmFyIGtleTtcblx0Zm9yIChrZXkgaW4gb2JqKSB7IC8qKi8gfVxuXG5cdHJldHVybiB0eXBlb2Yga2V5ID09PSAndW5kZWZpbmVkJyB8fCBoYXNPd24uY2FsbChvYmosIGtleSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGV4dGVuZCgpIHtcblx0dmFyIG9wdGlvbnMsIG5hbWUsIHNyYywgY29weSwgY29weUlzQXJyYXksIGNsb25lO1xuXHR2YXIgdGFyZ2V0ID0gYXJndW1lbnRzWzBdO1xuXHR2YXIgaSA9IDE7XG5cdHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuXHR2YXIgZGVlcCA9IGZhbHNlO1xuXG5cdC8vIEhhbmRsZSBhIGRlZXAgY29weSBzaXR1YXRpb25cblx0aWYgKHR5cGVvZiB0YXJnZXQgPT09ICdib29sZWFuJykge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWzFdIHx8IHt9O1xuXHRcdC8vIHNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXRcblx0XHRpID0gMjtcblx0fVxuXHRpZiAodGFyZ2V0ID09IG51bGwgfHwgKHR5cGVvZiB0YXJnZXQgIT09ICdvYmplY3QnICYmIHR5cGVvZiB0YXJnZXQgIT09ICdmdW5jdGlvbicpKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHRmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7XG5cdFx0b3B0aW9ucyA9IGFyZ3VtZW50c1tpXTtcblx0XHQvLyBPbmx5IGRlYWwgd2l0aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzXG5cdFx0aWYgKG9wdGlvbnMgIT0gbnVsbCkge1xuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yIChuYW1lIGluIG9wdGlvbnMpIHtcblx0XHRcdFx0c3JjID0gdGFyZ2V0W25hbWVdO1xuXHRcdFx0XHRjb3B5ID0gb3B0aW9uc1tuYW1lXTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICh0YXJnZXQgIT09IGNvcHkpIHtcblx0XHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0XHRpZiAoZGVlcCAmJiBjb3B5ICYmIChpc1BsYWluT2JqZWN0KGNvcHkpIHx8IChjb3B5SXNBcnJheSA9IGlzQXJyYXkoY29weSkpKSkge1xuXHRcdFx0XHRcdFx0aWYgKGNvcHlJc0FycmF5KSB7XG5cdFx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGlzQXJyYXkoc3JjKSA/IHNyYyA6IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgaXNQbGFpbk9iamVjdChzcmMpID8gc3JjIDoge307XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdFx0dGFyZ2V0W25hbWVdID0gZXh0ZW5kKGRlZXAsIGNsb25lLCBjb3B5KTtcblxuXHRcdFx0XHRcdC8vIERvbid0IGJyaW5nIGluIHVuZGVmaW5lZCB2YWx1ZXNcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBjb3B5ICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0XHRcdFx0dGFyZ2V0W25hbWVdID0gY29weTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdFxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBiYWlsO1xuXG5mdW5jdGlvbiBiYWlsKGVycikge1xuICBpZiAoZXJyKSB7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdpZnk7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZSkge1xuICAvKiBOb3RoaW5nLiAqL1xuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qIE5vZGUuICovXG4gIGlmIChvd24uY2FsbCh2YWx1ZSwgJ3Bvc2l0aW9uJykgfHwgb3duLmNhbGwodmFsdWUsICd0eXBlJykpIHtcbiAgICByZXR1cm4gbG9jYXRpb24odmFsdWUucG9zaXRpb24pO1xuICB9XG5cbiAgLyogTG9jYXRpb24uICovXG4gIGlmIChvd24uY2FsbCh2YWx1ZSwgJ3N0YXJ0JykgfHwgb3duLmNhbGwodmFsdWUsICdlbmQnKSkge1xuICAgIHJldHVybiBsb2NhdGlvbih2YWx1ZSk7XG4gIH1cblxuICAvKiBQb3NpdGlvbi4gKi9cbiAgaWYgKG93bi5jYWxsKHZhbHVlLCAnbGluZScpIHx8IG93bi5jYWxsKHZhbHVlLCAnY29sdW1uJykpIHtcbiAgICByZXR1cm4gcG9zaXRpb24odmFsdWUpO1xuICB9XG5cbiAgLyogPyAqL1xuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb24ocG9zKSB7XG4gIGlmICghcG9zIHx8IHR5cGVvZiBwb3MgIT09ICdvYmplY3QnKSB7XG4gICAgcG9zID0ge307XG4gIH1cblxuICByZXR1cm4gaW5kZXgocG9zLmxpbmUpICsgJzonICsgaW5kZXgocG9zLmNvbHVtbik7XG59XG5cbmZ1bmN0aW9uIGxvY2F0aW9uKGxvYykge1xuICBpZiAoIWxvYyB8fCB0eXBlb2YgbG9jICE9PSAnb2JqZWN0Jykge1xuICAgIGxvYyA9IHt9O1xuICB9XG5cbiAgcmV0dXJuIHBvc2l0aW9uKGxvYy5zdGFydCkgKyAnLScgKyBwb3NpdGlvbihsb2MuZW5kKTtcbn1cblxuZnVuY3Rpb24gaW5kZXgodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IDE7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBzdHJpbmdpZnkgPSByZXF1aXJlKCd1bmlzdC11dGlsLXN0cmluZ2lmeS1wb3NpdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZNZXNzYWdlO1xuXG4vKiBJbmhlcml0IGZyb20gYEVycm9yI2AuICovXG5mdW5jdGlvbiBWTWVzc2FnZVByb3RvdHlwZSgpIHt9XG5WTWVzc2FnZVByb3RvdHlwZS5wcm90b3R5cGUgPSBFcnJvci5wcm90b3R5cGU7XG5WTWVzc2FnZS5wcm90b3R5cGUgPSBuZXcgVk1lc3NhZ2VQcm90b3R5cGUoKTtcblxuLyogTWVzc2FnZSBwcm9wZXJ0aWVzLiAqL1xudmFyIHByb3RvID0gVk1lc3NhZ2UucHJvdG90eXBlO1xuXG5wcm90by5maWxlID0gJyc7XG5wcm90by5uYW1lID0gJyc7XG5wcm90by5yZWFzb24gPSAnJztcbnByb3RvLm1lc3NhZ2UgPSAnJztcbnByb3RvLnN0YWNrID0gJyc7XG5wcm90by5mYXRhbCA9IG51bGw7XG5wcm90by5jb2x1bW4gPSBudWxsO1xucHJvdG8ubGluZSA9IG51bGw7XG5cbi8qIENvbnN0cnVjdCBhIG5ldyBWTWVzc2FnZS5cbiAqXG4gKiBOb3RlOiBXZSBjYW5ub3QgaW52b2tlIGBFcnJvcmAgb24gdGhlIGNyZWF0ZWQgY29udGV4dCxcbiAqIGFzIHRoYXQgYWRkcyByZWFkb25seSBgbGluZWAgYW5kIGBjb2x1bW5gIGF0dHJpYnV0ZXMgb25cbiAqIFNhZmFyaSA5LCB0aHVzIHRocm93aW5nIGFuZCBmYWlsaW5nIHRoZSBkYXRhLiAqL1xuZnVuY3Rpb24gVk1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbiwgb3JpZ2luKSB7XG4gIHZhciBwYXJ0cztcbiAgdmFyIHJhbmdlO1xuICB2YXIgbG9jYXRpb247XG5cbiAgaWYgKHR5cGVvZiBwb3NpdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICBvcmlnaW4gPSBwb3NpdGlvbjtcbiAgICBwb3NpdGlvbiA9IG51bGw7XG4gIH1cblxuICBwYXJ0cyA9IHBhcnNlT3JpZ2luKG9yaWdpbik7XG4gIHJhbmdlID0gc3RyaW5naWZ5KHBvc2l0aW9uKSB8fCAnMToxJztcblxuICBsb2NhdGlvbiA9IHtcbiAgICBzdGFydDoge2xpbmU6IG51bGwsIGNvbHVtbjogbnVsbH0sXG4gICAgZW5kOiB7bGluZTogbnVsbCwgY29sdW1uOiBudWxsfVxuICB9O1xuXG4gIC8qIE5vZGUuICovXG4gIGlmIChwb3NpdGlvbiAmJiBwb3NpdGlvbi5wb3NpdGlvbikge1xuICAgIHBvc2l0aW9uID0gcG9zaXRpb24ucG9zaXRpb247XG4gIH1cblxuICBpZiAocG9zaXRpb24pIHtcbiAgICAvKiBQb3NpdGlvbi4gKi9cbiAgICBpZiAocG9zaXRpb24uc3RhcnQpIHtcbiAgICAgIGxvY2F0aW9uID0gcG9zaXRpb247XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uLnN0YXJ0O1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBQb2ludC4gKi9cbiAgICAgIGxvY2F0aW9uLnN0YXJ0ID0gcG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgaWYgKHJlYXNvbi5zdGFjaykge1xuICAgIHRoaXMuc3RhY2sgPSByZWFzb24uc3RhY2s7XG4gICAgcmVhc29uID0gcmVhc29uLm1lc3NhZ2U7XG4gIH1cblxuICB0aGlzLm1lc3NhZ2UgPSByZWFzb247XG4gIHRoaXMubmFtZSA9IHJhbmdlO1xuICB0aGlzLnJlYXNvbiA9IHJlYXNvbjtcbiAgdGhpcy5saW5lID0gcG9zaXRpb24gPyBwb3NpdGlvbi5saW5lIDogbnVsbDtcbiAgdGhpcy5jb2x1bW4gPSBwb3NpdGlvbiA/IHBvc2l0aW9uLmNvbHVtbiA6IG51bGw7XG4gIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgdGhpcy5zb3VyY2UgPSBwYXJ0c1swXTtcbiAgdGhpcy5ydWxlSWQgPSBwYXJ0c1sxXTtcbn1cblxuZnVuY3Rpb24gcGFyc2VPcmlnaW4ob3JpZ2luKSB7XG4gIHZhciByZXN1bHQgPSBbbnVsbCwgbnVsbF07XG4gIHZhciBpbmRleDtcblxuICBpZiAodHlwZW9mIG9yaWdpbiA9PT0gJ3N0cmluZycpIHtcbiAgICBpbmRleCA9IG9yaWdpbi5pbmRleE9mKCc6Jyk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXN1bHRbMV0gPSBvcmlnaW47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFswXSA9IG9yaWdpbi5zbGljZSgwLCBpbmRleCk7XG4gICAgICByZXN1bHRbMV0gPSBvcmlnaW4uc2xpY2UoaW5kZXggKyAxKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIHJlc29sdmVzIC4gYW5kIC4uIGVsZW1lbnRzIGluIGEgcGF0aCBhcnJheSB3aXRoIGRpcmVjdG9yeSBuYW1lcyB0aGVyZVxuLy8gbXVzdCBiZSBubyBzbGFzaGVzLCBlbXB0eSBlbGVtZW50cywgb3IgZGV2aWNlIG5hbWVzIChjOlxcKSBpbiB0aGUgYXJyYXlcbi8vIChzbyBhbHNvIG5vIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNsYXNoZXMgLSBpdCBkb2VzIG5vdCBkaXN0aW5ndWlzaFxuLy8gcmVsYXRpdmUgYW5kIGFic29sdXRlIHBhdGhzKVxuZnVuY3Rpb24gbm9ybWFsaXplQXJyYXkocGFydHMsIGFsbG93QWJvdmVSb290KSB7XG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBsYXN0ID0gcGFydHNbaV07XG4gICAgaWYgKGxhc3QgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAobGFzdCA9PT0gJy4uJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cC0tO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBwYXRoIGlzIGFsbG93ZWQgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIHJlc3RvcmUgbGVhZGluZyAuLnNcbiAgaWYgKGFsbG93QWJvdmVSb290KSB7XG4gICAgZm9yICg7IHVwLS07IHVwKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCcuLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJ0cztcbn1cblxuLy8gU3BsaXQgYSBmaWxlbmFtZSBpbnRvIFtyb290LCBkaXIsIGJhc2VuYW1lLCBleHRdLCB1bml4IHZlcnNpb25cbi8vICdyb290JyBpcyBqdXN0IGEgc2xhc2gsIG9yIG5vdGhpbmcuXG52YXIgc3BsaXRQYXRoUmUgPVxuICAgIC9eKFxcLz98KShbXFxzXFxTXSo/KSgoPzpcXC57MSwyfXxbXlxcL10rP3wpKFxcLlteLlxcL10qfCkpKD86W1xcL10qKSQvO1xudmFyIHNwbGl0UGF0aCA9IGZ1bmN0aW9uKGZpbGVuYW1lKSB7XG4gIHJldHVybiBzcGxpdFBhdGhSZS5leGVjKGZpbGVuYW1lKS5zbGljZSgxKTtcbn07XG5cbi8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKCkge1xuICB2YXIgcmVzb2x2ZWRQYXRoID0gJycsXG4gICAgICByZXNvbHZlZEFic29sdXRlID0gZmFsc2U7XG5cbiAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICB2YXIgcGF0aCA9IChpID49IDApID8gYXJndW1lbnRzW2ldIDogJy8nO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBhbmQgaW52YWxpZCBlbnRyaWVzXG4gICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9IGVsc2UgaWYgKCFwYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBwYXRoICsgJy8nICsgcmVzb2x2ZWRQYXRoO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xuICB9XG5cbiAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcGF0aCBzaG91bGQgYmUgcmVzb2x2ZWQgdG8gYSBmdWxsIGFic29sdXRlIHBhdGgsIGJ1dFxuICAvLyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgdG8gYmUgc2FmZSAobWlnaHQgaGFwcGVuIHdoZW4gcHJvY2Vzcy5jd2QoKSBmYWlscylcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHJlc29sdmVkUGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFyZXNvbHZlZEFic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgcmV0dXJuICgocmVzb2x2ZWRBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHJlc29sdmVkUGF0aCkgfHwgJy4nO1xufTtcblxuLy8gcGF0aC5ub3JtYWxpemUocGF0aClcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUocGF0aCkge1xuICB2YXIgaXNQYXRoQWJzb2x1dGUgPSBpc0Fic29sdXRlKHBhdGgpLFxuICAgICAgdHJhaWxpbmdTbGFzaCA9IHN1YnN0cihwYXRoLCAtMSkgPT09ICcvJztcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihwYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIWlzUGF0aEFic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgaWYgKCFwYXRoICYmICFpc1BhdGhBYnNvbHV0ZSkge1xuICAgIHBhdGggPSAnLic7XG4gIH1cbiAgaWYgKHBhdGggJiYgdHJhaWxpbmdTbGFzaCkge1xuICAgIHBhdGggKz0gJy8nO1xuICB9XG5cbiAgcmV0dXJuIChpc1BhdGhBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHBhdGg7XG59O1xuXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoKSB7XG4gIHJldHVybiBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xufVxuXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnQgZnVuY3Rpb24gam9pbigpIHtcbiAgdmFyIHBhdGhzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcbiAgcmV0dXJuIG5vcm1hbGl6ZShmaWx0ZXIocGF0aHMsIGZ1bmN0aW9uKHAsIGluZGV4KSB7XG4gICAgaWYgKHR5cGVvZiBwICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9XG4gICAgcmV0dXJuIHA7XG4gIH0pLmpvaW4oJy8nKSk7XG59XG5cblxuLy8gcGF0aC5yZWxhdGl2ZShmcm9tLCB0bylcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGl2ZShmcm9tLCB0bykge1xuICBmcm9tID0gcmVzb2x2ZShmcm9tKS5zdWJzdHIoMSk7XG4gIHRvID0gcmVzb2x2ZSh0bykuc3Vic3RyKDEpO1xuXG4gIGZ1bmN0aW9uIHRyaW0oYXJyKSB7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBmb3IgKDsgc3RhcnQgPCBhcnIubGVuZ3RoOyBzdGFydCsrKSB7XG4gICAgICBpZiAoYXJyW3N0YXJ0XSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSBhcnIubGVuZ3RoIC0gMTtcbiAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7XG4gICAgICBpZiAoYXJyW2VuZF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpO1xuICB9XG5cbiAgdmFyIGZyb21QYXJ0cyA9IHRyaW0oZnJvbS5zcGxpdCgnLycpKTtcbiAgdmFyIHRvUGFydHMgPSB0cmltKHRvLnNwbGl0KCcvJykpO1xuXG4gIHZhciBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7XG4gIHZhciBzYW1lUGFydHNMZW5ndGggPSBsZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7XG4gICAgICBzYW1lUGFydHNMZW5ndGggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIG91dHB1dFBhcnRzID0gW107XG4gIGZvciAodmFyIGkgPSBzYW1lUGFydHNMZW5ndGg7IGkgPCBmcm9tUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXRQYXJ0cy5wdXNoKCcuLicpO1xuICB9XG5cbiAgb3V0cHV0UGFydHMgPSBvdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgpKTtcblxuICByZXR1cm4gb3V0cHV0UGFydHMuam9pbignLycpO1xufVxuXG5leHBvcnQgdmFyIHNlcCA9ICcvJztcbmV4cG9ydCB2YXIgZGVsaW1pdGVyID0gJzonO1xuXG5leHBvcnQgZnVuY3Rpb24gZGlybmFtZShwYXRoKSB7XG4gIHZhciByZXN1bHQgPSBzcGxpdFBhdGgocGF0aCksXG4gICAgICByb290ID0gcmVzdWx0WzBdLFxuICAgICAgZGlyID0gcmVzdWx0WzFdO1xuXG4gIGlmICghcm9vdCAmJiAhZGlyKSB7XG4gICAgLy8gTm8gZGlybmFtZSB3aGF0c29ldmVyXG4gICAgcmV0dXJuICcuJztcbiAgfVxuXG4gIGlmIChkaXIpIHtcbiAgICAvLyBJdCBoYXMgYSBkaXJuYW1lLCBzdHJpcCB0cmFpbGluZyBzbGFzaFxuICAgIGRpciA9IGRpci5zdWJzdHIoMCwgZGlyLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmV0dXJuIHJvb3QgKyBkaXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYXNlbmFtZShwYXRoLCBleHQpIHtcbiAgdmFyIGYgPSBzcGxpdFBhdGgocGF0aClbMl07XG4gIC8vIFRPRE86IG1ha2UgdGhpcyBjb21wYXJpc29uIGNhc2UtaW5zZW5zaXRpdmUgb24gd2luZG93cz9cbiAgaWYgKGV4dCAmJiBmLnN1YnN0cigtMSAqIGV4dC5sZW5ndGgpID09PSBleHQpIHtcbiAgICBmID0gZi5zdWJzdHIoMCwgZi5sZW5ndGggLSBleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZjtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZXh0bmFtZShwYXRoKSB7XG4gIHJldHVybiBzcGxpdFBhdGgocGF0aClbM107XG59XG5leHBvcnQgZGVmYXVsdCB7XG4gIGV4dG5hbWU6IGV4dG5hbWUsXG4gIGJhc2VuYW1lOiBiYXNlbmFtZSxcbiAgZGlybmFtZTogZGlybmFtZSxcbiAgc2VwOiBzZXAsXG4gIGRlbGltaXRlcjogZGVsaW1pdGVyLFxuICByZWxhdGl2ZTogcmVsYXRpdmUsXG4gIGpvaW46IGpvaW4sXG4gIGlzQWJzb2x1dGU6IGlzQWJzb2x1dGUsXG4gIG5vcm1hbGl6ZTogbm9ybWFsaXplLFxuICByZXNvbHZlOiByZXNvbHZlXG59O1xuZnVuY3Rpb24gZmlsdGVyICh4cywgZikge1xuICAgIGlmICh4cy5maWx0ZXIpIHJldHVybiB4cy5maWx0ZXIoZik7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGYoeHNbaV0sIGksIHhzKSkgcmVzLnB1c2goeHNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBTdHJpbmcucHJvdG90eXBlLnN1YnN0ciAtIG5lZ2F0aXZlIGluZGV4IGRvbid0IHdvcmsgaW4gSUU4XG52YXIgc3Vic3RyID0gJ2FiJy5zdWJzdHIoLTEpID09PSAnYicgP1xuICAgIGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHsgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbikgfSA6XG4gICAgZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikge1xuICAgICAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IHN0ci5sZW5ndGggKyBzdGFydDtcbiAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbik7XG4gICAgfVxuO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcblxuZnVuY3Rpb24gcmVwbGFjZUV4dChucGF0aCwgZXh0KSB7XG4gIGlmICh0eXBlb2YgbnBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5wYXRoO1xuICB9XG5cbiAgaWYgKG5wYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBucGF0aDtcbiAgfVxuXG4gIHZhciBuRmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKG5wYXRoLCBwYXRoLmV4dG5hbWUobnBhdGgpKSArIGV4dDtcbiAgcmV0dXJuIHBhdGguam9pbihwYXRoLmRpcm5hbWUobnBhdGgpLCBuRmlsZU5hbWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcGxhY2VFeHQ7XG4iLCIvKiFcbiAqIERldGVybWluZSBpZiBhbiBvYmplY3QgaXMgYSBCdWZmZXJcbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5cbi8vIFRoZSBfaXNCdWZmZXIgY2hlY2sgaXMgZm9yIFNhZmFyaSA1LTcgc3VwcG9ydCwgYmVjYXVzZSBpdCdzIG1pc3Npbmdcbi8vIE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgKGlzQnVmZmVyKG9iaikgfHwgaXNTbG93QnVmZmVyKG9iaikgfHwgISFvYmouX2lzQnVmZmVyKVxufVxuXG5mdW5jdGlvbiBpc0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiAhIW9iai5jb25zdHJ1Y3RvciAmJiB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopXG59XG5cbi8vIEZvciBOb2RlIHYwLjEwIHN1cHBvcnQuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHkuXG5mdW5jdGlvbiBpc1Nsb3dCdWZmZXIgKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iai5yZWFkRmxvYXRMRSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLnNsaWNlID09PSAnZnVuY3Rpb24nICYmIGlzQnVmZmVyKG9iai5zbGljZSgwLCAwKSlcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG52YXIgcmVwbGFjZSA9IHJlcXVpcmUoJ3JlcGxhY2UtZXh0Jyk7XG52YXIgYnVmZmVyID0gcmVxdWlyZSgnaXMtYnVmZmVyJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gVkZpbGU7XG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwcm90byA9IFZGaWxlLnByb3RvdHlwZTtcblxucHJvdG8udG9TdHJpbmcgPSB0b1N0cmluZztcblxuLyogT3JkZXIgb2Ygc2V0dGluZyAobGVhc3Qgc3BlY2lmaWMgdG8gbW9zdCksIHdlIG5lZWQgdGhpcyBiZWNhdXNlXG4gKiBvdGhlcndpc2UgYHtzdGVtOiAnYScsIHBhdGg6ICd+L2IuanMnfWAgd291bGQgdGhyb3csIGFzIGEgcGF0aFxuICogaXMgbmVlZGVkIGJlZm9yZSBhIHN0ZW0gY2FuIGJlIHNldC4gKi9cbnZhciBvcmRlciA9IFtcbiAgJ2hpc3RvcnknLFxuICAncGF0aCcsXG4gICdiYXNlbmFtZScsXG4gICdzdGVtJyxcbiAgJ2V4dG5hbWUnLFxuICAnZGlybmFtZSdcbl07XG5cbi8qIENvbnN0cnVjdCBhIG5ldyBmaWxlLiAqL1xuZnVuY3Rpb24gVkZpbGUob3B0aW9ucykge1xuICB2YXIgcHJvcDtcbiAgdmFyIGluZGV4O1xuICB2YXIgbGVuZ3RoO1xuXG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgfHwgYnVmZmVyKG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucyA9IHtjb250ZW50czogb3B0aW9uc307XG4gIH0gZWxzZSBpZiAoJ21lc3NhZ2UnIGluIG9wdGlvbnMgJiYgJ21lc3NhZ2VzJyBpbiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVkZpbGUpKSB7XG4gICAgcmV0dXJuIG5ldyBWRmlsZShvcHRpb25zKTtcbiAgfVxuXG4gIHRoaXMuZGF0YSA9IHt9O1xuICB0aGlzLm1lc3NhZ2VzID0gW107XG4gIHRoaXMuaGlzdG9yeSA9IFtdO1xuICB0aGlzLmN3ZCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLyogU2V0IHBhdGggcmVsYXRlZCBwcm9wZXJ0aWVzIGluIHRoZSBjb3JyZWN0IG9yZGVyLiAqL1xuICBpbmRleCA9IC0xO1xuICBsZW5ndGggPSBvcmRlci5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBwcm9wID0gb3JkZXJbaW5kZXhdO1xuXG4gICAgaWYgKG93bi5jYWxsKG9wdGlvbnMsIHByb3ApKSB7XG4gICAgICB0aGlzW3Byb3BdID0gb3B0aW9uc1twcm9wXTtcbiAgICB9XG4gIH1cblxuICAvKiBTZXQgbm9uLXBhdGggcmVsYXRlZCBwcm9wZXJ0aWVzLiAqL1xuICBmb3IgKHByb3AgaW4gb3B0aW9ucykge1xuICAgIGlmIChvcmRlci5pbmRleE9mKHByb3ApID09PSAtMSkge1xuICAgICAgdGhpc1twcm9wXSA9IG9wdGlvbnNbcHJvcF07XG4gICAgfVxuICB9XG59XG5cbi8qIEFjY2VzcyBmdWxsIHBhdGggKGB+L2luZGV4Lm1pbi5qc2ApLiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAncGF0aCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMV07XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHBhdGgpIHtcbiAgICBhc3NlcnROb25FbXB0eShwYXRoLCAncGF0aCcpO1xuXG4gICAgaWYgKHBhdGggIT09IHRoaXMucGF0aCkge1xuICAgICAgdGhpcy5oaXN0b3J5LnB1c2gocGF0aCk7XG4gICAgfVxuICB9XG59KTtcblxuLyogQWNjZXNzIHBhcmVudCBwYXRoIChgfmApLiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAnZGlybmFtZScsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnID8gcGF0aC5kaXJuYW1lKHRoaXMucGF0aCkgOiB1bmRlZmluZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKGRpcm5hbWUpIHtcbiAgICBhc3NlcnRQYXRoKHRoaXMucGF0aCwgJ2Rpcm5hbWUnKTtcbiAgICB0aGlzLnBhdGggPSBwYXRoLmpvaW4oZGlybmFtZSB8fCAnJywgdGhpcy5iYXNlbmFtZSk7XG4gIH1cbn0pO1xuXG4vKiBBY2Nlc3MgYmFzZW5hbWUgKGBpbmRleC5taW4uanNgKS4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgJ2Jhc2VuYW1lJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoLmJhc2VuYW1lKHRoaXMucGF0aCkgOiB1bmRlZmluZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKGJhc2VuYW1lKSB7XG4gICAgYXNzZXJ0Tm9uRW1wdHkoYmFzZW5hbWUsICdiYXNlbmFtZScpO1xuICAgIGFzc2VydFBhcnQoYmFzZW5hbWUsICdiYXNlbmFtZScpO1xuICAgIHRoaXMucGF0aCA9IHBhdGguam9pbih0aGlzLmRpcm5hbWUgfHwgJycsIGJhc2VuYW1lKTtcbiAgfVxufSk7XG5cbi8qIEFjY2VzcyBleHRuYW1lIChgLmpzYCkuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sICdleHRuYW1lJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoLmV4dG5hbWUodGhpcy5wYXRoKSA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAoZXh0bmFtZSkge1xuICAgIHZhciBleHQgPSBleHRuYW1lIHx8ICcnO1xuXG4gICAgYXNzZXJ0UGFydChleHQsICdleHRuYW1lJyk7XG4gICAgYXNzZXJ0UGF0aCh0aGlzLnBhdGgsICdleHRuYW1lJyk7XG5cbiAgICBpZiAoZXh0KSB7XG4gICAgICBpZiAoZXh0LmNoYXJBdCgwKSAhPT0gJy4nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYGV4dG5hbWVgIG11c3Qgc3RhcnQgd2l0aCBgLmAnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dC5pbmRleE9mKCcuJywgMSkgIT09IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYGV4dG5hbWVgIGNhbm5vdCBjb250YWluIG11bHRpcGxlIGRvdHMnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnBhdGggPSByZXBsYWNlKHRoaXMucGF0aCwgZXh0KTtcbiAgfVxufSk7XG5cbi8qIEFjY2VzcyBzdGVtIChgaW5kZXgubWluYCkuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sICdzdGVtJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoLmJhc2VuYW1lKHRoaXMucGF0aCwgdGhpcy5leHRuYW1lKSA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAoc3RlbSkge1xuICAgIGFzc2VydE5vbkVtcHR5KHN0ZW0sICdzdGVtJyk7XG4gICAgYXNzZXJ0UGFydChzdGVtLCAnc3RlbScpO1xuICAgIHRoaXMucGF0aCA9IHBhdGguam9pbih0aGlzLmRpcm5hbWUgfHwgJycsIHN0ZW0gKyAodGhpcy5leHRuYW1lIHx8ICcnKSk7XG4gIH1cbn0pO1xuXG4vKiBHZXQgdGhlIHZhbHVlIG9mIHRoZSBmaWxlLiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcoZW5jb2RpbmcpIHtcbiAgdmFyIHZhbHVlID0gdGhpcy5jb250ZW50cyB8fCAnJztcbiAgcmV0dXJuIGJ1ZmZlcih2YWx1ZSkgPyB2YWx1ZS50b1N0cmluZyhlbmNvZGluZykgOiBTdHJpbmcodmFsdWUpO1xufVxuXG4vKiBBc3NlcnQgdGhhdCBgcGFydGAgaXMgbm90IGEgcGF0aCAoaS5lLiwgZG9lc1xuICogbm90IGNvbnRhaW4gYHBhdGguc2VwYCkuICovXG5mdW5jdGlvbiBhc3NlcnRQYXJ0KHBhcnQsIG5hbWUpIHtcbiAgaWYgKHBhcnQuaW5kZXhPZihwYXRoLnNlcCkgIT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdgJyArIG5hbWUgKyAnYCBjYW5ub3QgYmUgYSBwYXRoOiBkaWQgbm90IGV4cGVjdCBgJyArIHBhdGguc2VwICsgJ2AnKTtcbiAgfVxufVxuXG4vKiBBc3NlcnQgdGhhdCBgcGFydGAgaXMgbm90IGVtcHR5LiAqL1xuZnVuY3Rpb24gYXNzZXJ0Tm9uRW1wdHkocGFydCwgbmFtZSkge1xuICBpZiAoIXBhcnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2AnICsgbmFtZSArICdgIGNhbm5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbi8qIEFzc2VydCBgcGF0aGAgZXhpc3RzLiAqL1xuZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoLCBuYW1lKSB7XG4gIGlmICghcGF0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU2V0dGluZyBgJyArIG5hbWUgKyAnYCByZXF1aXJlcyBgcGF0aGAgdG8gYmUgc2V0IHRvbycpO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBWTWVzc2FnZSA9IHJlcXVpcmUoJ3ZmaWxlLW1lc3NhZ2UnKTtcbnZhciBWRmlsZSA9IHJlcXVpcmUoJy4vY29yZS5qcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZGaWxlO1xuXG52YXIgcHJvdG8gPSBWRmlsZS5wcm90b3R5cGU7XG5cbnByb3RvLm1lc3NhZ2UgPSBtZXNzYWdlO1xucHJvdG8uaW5mbyA9IGluZm87XG5wcm90by5mYWlsID0gZmFpbDtcblxuLyogU2xpZ2h0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAgUmVtb3ZlIGluIHRoZSBmdXR1cmUuICovXG5wcm90by53YXJuID0gbWVzc2FnZTtcblxuLyogQ3JlYXRlIGEgbWVzc2FnZSB3aXRoIGByZWFzb25gIGF0IGBwb3NpdGlvbmAuXG4gKiBXaGVuIGFuIGVycm9yIGlzIHBhc3NlZCBpbiBhcyBgcmVhc29uYCwgY29waWVzIHRoZSBzdGFjay4gKi9cbmZ1bmN0aW9uIG1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbiwgb3JpZ2luKSB7XG4gIHZhciBmaWxlUGF0aCA9IHRoaXMucGF0aDtcbiAgdmFyIG1lc3NhZ2UgPSBuZXcgVk1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbiwgb3JpZ2luKTtcblxuICBpZiAoZmlsZVBhdGgpIHtcbiAgICBtZXNzYWdlLm5hbWUgPSBmaWxlUGF0aCArICc6JyArIG1lc3NhZ2UubmFtZTtcbiAgICBtZXNzYWdlLmZpbGUgPSBmaWxlUGF0aDtcbiAgfVxuXG4gIG1lc3NhZ2UuZmF0YWwgPSBmYWxzZTtcblxuICB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XG5cbiAgcmV0dXJuIG1lc3NhZ2U7XG59XG5cbi8qIEZhaWwuIENyZWF0ZXMgYSB2bWVzc2FnZSwgYXNzb2NpYXRlcyBpdCB3aXRoIHRoZSBmaWxlLFxuICogYW5kIHRocm93cyBpdC4gKi9cbmZ1bmN0aW9uIGZhaWwoKSB7XG4gIHZhciBtZXNzYWdlID0gdGhpcy5tZXNzYWdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgbWVzc2FnZS5mYXRhbCA9IHRydWU7XG5cbiAgdGhyb3cgbWVzc2FnZTtcbn1cblxuLyogSW5mby4gQ3JlYXRlcyBhIHZtZXNzYWdlLCBhc3NvY2lhdGVzIGl0IHdpdGggdGhlIGZpbGUsXG4gKiBhbmQgbWFya3MgdGhlIGZhdGFsaXR5IGFzIG51bGwuICovXG5mdW5jdGlvbiBpbmZvKCkge1xuICB2YXIgbWVzc2FnZSA9IHRoaXMubWVzc2FnZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gIG1lc3NhZ2UuZmF0YWwgPSBudWxsO1xuXG4gIHJldHVybiBtZXNzYWdlO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBFeHBvc2UuICovXG5tb2R1bGUuZXhwb3J0cyA9IHRyb3VnaDtcblxuLyogTWV0aG9kcy4gKi9cbnZhciBzbGljZSA9IFtdLnNsaWNlO1xuXG4vKiBDcmVhdGUgbmV3IG1pZGRsZXdhcmUuICovXG5mdW5jdGlvbiB0cm91Z2goKSB7XG4gIHZhciBmbnMgPSBbXTtcbiAgdmFyIG1pZGRsZXdhcmUgPSB7fTtcblxuICBtaWRkbGV3YXJlLnJ1biA9IHJ1bjtcbiAgbWlkZGxld2FyZS51c2UgPSB1c2U7XG5cbiAgcmV0dXJuIG1pZGRsZXdhcmU7XG5cbiAgLyogUnVuIGBmbnNgLiAgTGFzdCBhcmd1bWVudCBtdXN0IGJlXG4gICAqIGEgY29tcGxldGlvbiBoYW5kbGVyLiAqL1xuICBmdW5jdGlvbiBydW4oKSB7XG4gICAgdmFyIGluZGV4ID0gLTE7XG4gICAgdmFyIGlucHV0ID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDAsIC0xKTtcbiAgICB2YXIgZG9uZSA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAodHlwZW9mIGRvbmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgZnVuY3Rpb24gYXMgbGFzdCBhcmd1bWVudCwgbm90ICcgKyBkb25lKTtcbiAgICB9XG5cbiAgICBuZXh0LmFwcGx5KG51bGwsIFtudWxsXS5jb25jYXQoaW5wdXQpKTtcblxuICAgIC8qIFJ1biB0aGUgbmV4dCBgZm5gLCBpZiBhbnkuICovXG4gICAgZnVuY3Rpb24gbmV4dChlcnIpIHtcbiAgICAgIHZhciBmbiA9IGZuc1srK2luZGV4XTtcbiAgICAgIHZhciBwYXJhbXMgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG4gICAgICB2YXIgdmFsdWVzID0gcGFyYW1zLnNsaWNlKDEpO1xuICAgICAgdmFyIGxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgICAgIHZhciBwb3MgPSAtMTtcblxuICAgICAgaWYgKGVycikge1xuICAgICAgICBkb25lKGVycik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLyogQ29weSBub24tbnVsbHkgaW5wdXQgaW50byB2YWx1ZXMuICovXG4gICAgICB3aGlsZSAoKytwb3MgPCBsZW5ndGgpIHtcbiAgICAgICAgaWYgKHZhbHVlc1twb3NdID09PSBudWxsIHx8IHZhbHVlc1twb3NdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YWx1ZXNbcG9zXSA9IGlucHV0W3Bvc107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5wdXQgPSB2YWx1ZXM7XG5cbiAgICAgIC8qIE5leHQgb3IgZG9uZS4gKi9cbiAgICAgIGlmIChmbikge1xuICAgICAgICB3cmFwKGZuLCBuZXh0KS5hcHBseShudWxsLCBpbnB1dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb25lLmFwcGx5KG51bGwsIFtudWxsXS5jb25jYXQoaW5wdXQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiBBZGQgYGZuYCB0byB0aGUgbGlzdC4gKi9cbiAgZnVuY3Rpb24gdXNlKGZuKSB7XG4gICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBgZm5gIHRvIGJlIGEgZnVuY3Rpb24sIG5vdCAnICsgZm4pO1xuICAgIH1cblxuICAgIGZucy5wdXNoKGZuKTtcblxuICAgIHJldHVybiBtaWRkbGV3YXJlO1xuICB9XG59XG5cbi8qIFdyYXAgYGZuYC4gIENhbiBiZSBzeW5jIG9yIGFzeW5jOyByZXR1cm4gYSBwcm9taXNlLFxuICogcmVjZWl2ZSBhIGNvbXBsZXRpb24gaGFuZGxlciwgcmV0dXJuIG5ldyB2YWx1ZXMgYW5kXG4gKiBlcnJvcnMuICovXG5mdW5jdGlvbiB3cmFwKGZuLCBuZXh0KSB7XG4gIHZhciBpbnZva2VkO1xuXG4gIHJldHVybiB3cmFwcGVkO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWQoKSB7XG4gICAgdmFyIHBhcmFtcyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcbiAgICB2YXIgY2FsbGJhY2sgPSBmbi5sZW5ndGggPiBwYXJhbXMubGVuZ3RoO1xuICAgIHZhciByZXN1bHQ7XG5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIHBhcmFtcy5wdXNoKGRvbmUpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBmbi5hcHBseShudWxsLCBwYXJhbXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLyogV2VsbCwgdGhpcyBpcyBxdWl0ZSB0aGUgcGlja2xlLiAgYGZuYCByZWNlaXZlZFxuICAgICAgICogYSBjYWxsYmFjayBhbmQgaW52b2tlZCBpdCAodGh1cyBjb250aW51aW5nIHRoZVxuICAgICAgICogcGlwZWxpbmUpLCBidXQgbGF0ZXIgYWxzbyB0aHJldyBhbiBlcnJvci5cbiAgICAgICAqIFdl4oCZcmUgbm90IGFib3V0IHRvIHJlc3RhcnQgdGhlIHBpcGVsaW5lIGFnYWluLFxuICAgICAgICogc28gdGhlIG9ubHkgdGhpbmcgbGVmdCB0byBkbyBpcyB0byB0aHJvdyB0aGVcbiAgICAgICAqIHRoaW5nIGluc3RlYS4gKi9cbiAgICAgIGlmIChjYWxsYmFjayAmJiBpbnZva2VkKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICB9XG5cbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXN1bHQudGhlbih0aGVuLCBkb25lKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0IGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgZG9uZShyZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhlbihyZXN1bHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qIEludm9rZSBgbmV4dGAsIG9ubHkgb25jZS4gKi9cbiAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICBpZiAoIWludm9rZWQpIHtcbiAgICAgIGludm9rZWQgPSB0cnVlO1xuXG4gICAgICBuZXh0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgLyogSW52b2tlIGBkb25lYCB3aXRoIG9uZSB2YWx1ZS5cbiAgICogVHJhY2tzIGlmIGFuIGVycm9yIGlzIHBhc3NlZCwgdG9vLiAqL1xuICBmdW5jdGlvbiB0aGVuKHZhbHVlKSB7XG4gICAgZG9uZShudWxsLCB2YWx1ZSk7XG4gIH1cbn1cbiIsInZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmluZ1xuXG5mdW5jdGlvbiBpc1N0cmluZyhvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzRnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZm4pID09PSAnW29iamVjdCBGdW5jdGlvbl0nXG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh4KSB7XG5cdHZhciBwcm90b3R5cGU7XG5cdHJldHVybiB0b1N0cmluZy5jYWxsKHgpID09PSAnW29iamVjdCBPYmplY3RdJyAmJiAocHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHgpLCBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoe30pKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIERlcGVuZGVuY2llcy4gKi9cbnZhciBleHRlbmQgPSByZXF1aXJlKCdleHRlbmQnKTtcbnZhciBiYWlsID0gcmVxdWlyZSgnYmFpbCcpO1xudmFyIHZmaWxlID0gcmVxdWlyZSgndmZpbGUnKTtcbnZhciB0cm91Z2ggPSByZXF1aXJlKCd0cm91Z2gnKTtcbnZhciBzdHJpbmcgPSByZXF1aXJlKCd4LWlzLXN0cmluZycpO1xudmFyIGZ1bmMgPSByZXF1aXJlKCd4LWlzLWZ1bmN0aW9uJyk7XG52YXIgcGxhaW4gPSByZXF1aXJlKCdpcy1wbGFpbi1vYmonKTtcblxuLyogRXhwb3NlIGEgZnJvemVuIHByb2Nlc3Nvci4gKi9cbm1vZHVsZS5leHBvcnRzID0gdW5pZmllZCgpLmZyZWV6ZSgpO1xuXG52YXIgc2xpY2UgPSBbXS5zbGljZTtcbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuLyogUHJvY2VzcyBwaXBlbGluZS4gKi9cbnZhciBwaXBlbGluZSA9IHRyb3VnaCgpLnVzZShwaXBlbGluZVBhcnNlKS51c2UocGlwZWxpbmVSdW4pLnVzZShwaXBlbGluZVN0cmluZ2lmeSk7XG5cbmZ1bmN0aW9uIHBpcGVsaW5lUGFyc2UocCwgY3R4KSB7XG4gIGN0eC50cmVlID0gcC5wYXJzZShjdHguZmlsZSk7XG59XG5cbmZ1bmN0aW9uIHBpcGVsaW5lUnVuKHAsIGN0eCwgbmV4dCkge1xuICBwLnJ1bihjdHgudHJlZSwgY3R4LmZpbGUsIGRvbmUpO1xuXG4gIGZ1bmN0aW9uIGRvbmUoZXJyLCB0cmVlLCBmaWxlKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgbmV4dChlcnIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdHgudHJlZSA9IHRyZWU7XG4gICAgICBjdHguZmlsZSA9IGZpbGU7XG4gICAgICBuZXh0KCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBpcGVsaW5lU3RyaW5naWZ5KHAsIGN0eCkge1xuICBjdHguZmlsZS5jb250ZW50cyA9IHAuc3RyaW5naWZ5KGN0eC50cmVlLCBjdHguZmlsZSk7XG59XG5cbi8qIEZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgZmlyc3QgcHJvY2Vzc29yLiAqL1xuZnVuY3Rpb24gdW5pZmllZCgpIHtcbiAgdmFyIGF0dGFjaGVycyA9IFtdO1xuICB2YXIgdHJhbnNmb3JtZXJzID0gdHJvdWdoKCk7XG4gIHZhciBuYW1lc3BhY2UgPSB7fTtcbiAgdmFyIGZyb3plbiA9IGZhbHNlO1xuICB2YXIgZnJlZXplSW5kZXggPSAtMTtcblxuICAvKiBEYXRhIG1hbmFnZW1lbnQuICovXG4gIHByb2Nlc3Nvci5kYXRhID0gZGF0YTtcblxuICAvKiBMb2NrLiAqL1xuICBwcm9jZXNzb3IuZnJlZXplID0gZnJlZXplO1xuXG4gIC8qIFBsdWctaW5zLiAqL1xuICBwcm9jZXNzb3IuYXR0YWNoZXJzID0gYXR0YWNoZXJzO1xuICBwcm9jZXNzb3IudXNlID0gdXNlO1xuXG4gIC8qIEFQSS4gKi9cbiAgcHJvY2Vzc29yLnBhcnNlID0gcGFyc2U7XG4gIHByb2Nlc3Nvci5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG4gIHByb2Nlc3Nvci5ydW4gPSBydW47XG4gIHByb2Nlc3Nvci5ydW5TeW5jID0gcnVuU3luYztcbiAgcHJvY2Vzc29yLnByb2Nlc3MgPSBwcm9jZXNzO1xuICBwcm9jZXNzb3IucHJvY2Vzc1N5bmMgPSBwcm9jZXNzU3luYztcblxuICAvKiBFeHBvc2UuICovXG4gIHJldHVybiBwcm9jZXNzb3I7XG5cbiAgLyogQ3JlYXRlIGEgbmV3IHByb2Nlc3NvciBiYXNlZCBvbiB0aGUgcHJvY2Vzc29yXG4gICAqIGluIHRoZSBjdXJyZW50IHNjb3BlLiAqL1xuICBmdW5jdGlvbiBwcm9jZXNzb3IoKSB7XG4gICAgdmFyIGRlc3RpbmF0aW9uID0gdW5pZmllZCgpO1xuICAgIHZhciBsZW5ndGggPSBhdHRhY2hlcnMubGVuZ3RoO1xuICAgIHZhciBpbmRleCA9IC0xO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGRlc3RpbmF0aW9uLnVzZS5hcHBseShudWxsLCBhdHRhY2hlcnNbaW5kZXhdKTtcbiAgICB9XG5cbiAgICBkZXN0aW5hdGlvbi5kYXRhKGV4dGVuZCh0cnVlLCB7fSwgbmFtZXNwYWNlKSk7XG5cbiAgICByZXR1cm4gZGVzdGluYXRpb247XG4gIH1cblxuICAvKiBGcmVlemU6IHVzZWQgdG8gc2lnbmFsIGEgcHJvY2Vzc29yIHRoYXQgaGFzIGZpbmlzaGVkXG4gICAqIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCB0YWtlIHVuaWZpZWQgaXRzZWxmLiAgSXTigJlzIGZyb3plbi5cbiAgICogUGx1Zy1pbnMgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byBpdC4gIFJhdGhlciwgaXQgc2hvdWxkXG4gICAqIGJlIGV4dGVuZGVkLCBieSBpbnZva2luZyBpdCwgYmVmb3JlIG1vZGlmeWluZyBpdC5cbiAgICpcbiAgICogSW4gZXNzZW5jZSwgYWx3YXlzIGludm9rZSB0aGlzIHdoZW4gZXhwb3J0aW5nIGFcbiAgICogcHJvY2Vzc29yLiAqL1xuICBmdW5jdGlvbiBmcmVlemUoKSB7XG4gICAgdmFyIHZhbHVlcztcbiAgICB2YXIgcGx1Z2luO1xuICAgIHZhciBvcHRpb25zO1xuICAgIHZhciB0cmFuc2Zvcm1lcjtcblxuICAgIGlmIChmcm96ZW4pIHtcbiAgICAgIHJldHVybiBwcm9jZXNzb3I7XG4gICAgfVxuXG4gICAgd2hpbGUgKCsrZnJlZXplSW5kZXggPCBhdHRhY2hlcnMubGVuZ3RoKSB7XG4gICAgICB2YWx1ZXMgPSBhdHRhY2hlcnNbZnJlZXplSW5kZXhdO1xuICAgICAgcGx1Z2luID0gdmFsdWVzWzBdO1xuICAgICAgb3B0aW9ucyA9IHZhbHVlc1sxXTtcbiAgICAgIHRyYW5zZm9ybWVyID0gbnVsbDtcblxuICAgICAgaWYgKG9wdGlvbnMgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgICB2YWx1ZXNbMV0gPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHRyYW5zZm9ybWVyID0gcGx1Z2luLmFwcGx5KHByb2Nlc3NvciwgdmFsdWVzLnNsaWNlKDEpKTtcblxuICAgICAgaWYgKGZ1bmModHJhbnNmb3JtZXIpKSB7XG4gICAgICAgIHRyYW5zZm9ybWVycy51c2UodHJhbnNmb3JtZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZyb3plbiA9IHRydWU7XG4gICAgZnJlZXplSW5kZXggPSBJbmZpbml0eTtcblxuICAgIHJldHVybiBwcm9jZXNzb3I7XG4gIH1cblxuICAvKiBEYXRhIG1hbmFnZW1lbnQuXG4gICAqIEdldHRlciAvIHNldHRlciBmb3IgcHJvY2Vzc29yLXNwZWNpZmljIGluZm9ybXRpb24uICovXG4gIGZ1bmN0aW9uIGRhdGEoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChzdHJpbmcoa2V5KSkge1xuICAgICAgLyogU2V0IGBrZXlgLiAqL1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgYXNzZXJ0VW5mcm96ZW4oJ2RhdGEnLCBmcm96ZW4pO1xuXG4gICAgICAgIG5hbWVzcGFjZVtrZXldID0gdmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIHByb2Nlc3NvcjtcbiAgICAgIH1cblxuICAgICAgLyogR2V0IGBrZXlgLiAqL1xuICAgICAgcmV0dXJuIChvd24uY2FsbChuYW1lc3BhY2UsIGtleSkgJiYgbmFtZXNwYWNlW2tleV0pIHx8IG51bGw7XG4gICAgfVxuXG4gICAgLyogU2V0IHNwYWNlLiAqL1xuICAgIGlmIChrZXkpIHtcbiAgICAgIGFzc2VydFVuZnJvemVuKCdkYXRhJywgZnJvemVuKTtcbiAgICAgIG5hbWVzcGFjZSA9IGtleTtcbiAgICAgIHJldHVybiBwcm9jZXNzb3I7XG4gICAgfVxuXG4gICAgLyogR2V0IHNwYWNlLiAqL1xuICAgIHJldHVybiBuYW1lc3BhY2U7XG4gIH1cblxuICAvKiBQbHVnLWluIG1hbmFnZW1lbnQuXG4gICAqXG4gICAqIFBhc3MgaXQ6XG4gICAqICogICBhbiBhdHRhY2hlciBhbmQgb3B0aW9ucyxcbiAgICogKiAgIGEgcHJlc2V0LFxuICAgKiAqICAgYSBsaXN0IG9mIHByZXNldHMsIGF0dGFjaGVycywgYW5kIGFyZ3VtZW50cyAobGlzdFxuICAgKiAgICAgb2YgYXR0YWNoZXJzIGFuZCBvcHRpb25zKS4gKi9cbiAgZnVuY3Rpb24gdXNlKHZhbHVlKSB7XG4gICAgdmFyIHNldHRpbmdzO1xuXG4gICAgYXNzZXJ0VW5mcm96ZW4oJ3VzZScsIGZyb3plbik7XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLyogRW1wdHkgKi9cbiAgICB9IGVsc2UgaWYgKGZ1bmModmFsdWUpKSB7XG4gICAgICBhZGRQbHVnaW4uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICgnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgICAgICBhZGRMaXN0KHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZFByZXNldCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdXNhYmxlIHZhbHVlLCBub3QgYCcgKyB2YWx1ZSArICdgJyk7XG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzKSB7XG4gICAgICBuYW1lc3BhY2Uuc2V0dGluZ3MgPSBleHRlbmQobmFtZXNwYWNlLnNldHRpbmdzIHx8IHt9LCBzZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2Nlc3NvcjtcblxuICAgIGZ1bmN0aW9uIGFkZFByZXNldChyZXN1bHQpIHtcbiAgICAgIGFkZExpc3QocmVzdWx0LnBsdWdpbnMpO1xuXG4gICAgICBpZiAocmVzdWx0LnNldHRpbmdzKSB7XG4gICAgICAgIHNldHRpbmdzID0gZXh0ZW5kKHNldHRpbmdzIHx8IHt9LCByZXN1bHQuc2V0dGluZ3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgICAgaWYgKGZ1bmModmFsdWUpKSB7XG4gICAgICAgIGFkZFBsdWdpbih2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKCdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgICAgICAgYWRkUGx1Z2luLmFwcGx5KG51bGwsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRQcmVzZXQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHVzYWJsZSB2YWx1ZSwgbm90IGAnICsgdmFsdWUgKyAnYCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZExpc3QocGx1Z2lucykge1xuICAgICAgdmFyIGxlbmd0aDtcbiAgICAgIHZhciBpbmRleDtcblxuICAgICAgaWYgKHBsdWdpbnMgPT09IG51bGwgfHwgcGx1Z2lucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8qIEVtcHR5ICovXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwbHVnaW5zID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiBwbHVnaW5zKSB7XG4gICAgICAgIGxlbmd0aCA9IHBsdWdpbnMubGVuZ3RoO1xuICAgICAgICBpbmRleCA9IC0xO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYWRkKHBsdWdpbnNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBhIGxpc3Qgb2YgcGx1Z2lucywgbm90IGAnICsgcGx1Z2lucyArICdgJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkUGx1Z2luKHBsdWdpbiwgdmFsdWUpIHtcbiAgICAgIHZhciBlbnRyeSA9IGZpbmQocGx1Z2luKTtcblxuICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIGlmIChwbGFpbihlbnRyeVsxXSkgJiYgcGxhaW4odmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUgPSBleHRlbmQoZW50cnlbMV0sIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVudHJ5WzFdID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhdHRhY2hlcnMucHVzaChzbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmQocGx1Z2luKSB7XG4gICAgdmFyIGxlbmd0aCA9IGF0dGFjaGVycy5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gLTE7XG4gICAgdmFyIGVudHJ5O1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gYXR0YWNoZXJzW2luZGV4XTtcblxuICAgICAgaWYgKGVudHJ5WzBdID09PSBwbHVnaW4pIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qIFBhcnNlIGEgZmlsZSAoaW4gc3RyaW5nIG9yIFZGaWxlIHJlcHJlc2VudGF0aW9uKVxuICAgKiBpbnRvIGEgVW5pc3Qgbm9kZSB1c2luZyB0aGUgYFBhcnNlcmAgb24gdGhlXG4gICAqIHByb2Nlc3Nvci4gKi9cbiAgZnVuY3Rpb24gcGFyc2UoZG9jKSB7XG4gICAgdmFyIGZpbGUgPSB2ZmlsZShkb2MpO1xuICAgIHZhciBQYXJzZXI7XG5cbiAgICBmcmVlemUoKTtcbiAgICBQYXJzZXIgPSBwcm9jZXNzb3IuUGFyc2VyO1xuICAgIGFzc2VydFBhcnNlcigncGFyc2UnLCBQYXJzZXIpO1xuXG4gICAgaWYgKG5ld2FibGUoUGFyc2VyKSkge1xuICAgICAgcmV0dXJuIG5ldyBQYXJzZXIoU3RyaW5nKGZpbGUpLCBmaWxlKS5wYXJzZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBQYXJzZXIoU3RyaW5nKGZpbGUpLCBmaWxlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG4gIH1cblxuICAvKiBSdW4gdHJhbnNmb3JtcyBvbiBhIFVuaXN0IG5vZGUgcmVwcmVzZW50YXRpb24gb2YgYSBmaWxlXG4gICAqIChpbiBzdHJpbmcgb3IgVkZpbGUgcmVwcmVzZW50YXRpb24pLCBhc3luYy4gKi9cbiAgZnVuY3Rpb24gcnVuKG5vZGUsIGZpbGUsIGNiKSB7XG4gICAgYXNzZXJ0Tm9kZShub2RlKTtcbiAgICBmcmVlemUoKTtcblxuICAgIGlmICghY2IgJiYgZnVuYyhmaWxlKSkge1xuICAgICAgY2IgPSBmaWxlO1xuICAgICAgZmlsZSA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCFjYikge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGV4ZWN1dG9yKTtcbiAgICB9XG5cbiAgICBleGVjdXRvcihudWxsLCBjYik7XG5cbiAgICBmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHRyYW5zZm9ybWVycy5ydW4obm9kZSwgdmZpbGUoZmlsZSksIGRvbmUpO1xuXG4gICAgICBmdW5jdGlvbiBkb25lKGVyciwgdHJlZSwgZmlsZSkge1xuICAgICAgICB0cmVlID0gdHJlZSB8fCBub2RlO1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZSkge1xuICAgICAgICAgIHJlc29sdmUodHJlZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2IobnVsbCwgdHJlZSwgZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiBSdW4gdHJhbnNmb3JtcyBvbiBhIFVuaXN0IG5vZGUgcmVwcmVzZW50YXRpb24gb2YgYSBmaWxlXG4gICAqIChpbiBzdHJpbmcgb3IgVkZpbGUgcmVwcmVzZW50YXRpb24pLCBzeW5jLiAqL1xuICBmdW5jdGlvbiBydW5TeW5jKG5vZGUsIGZpbGUpIHtcbiAgICB2YXIgY29tcGxldGUgPSBmYWxzZTtcbiAgICB2YXIgcmVzdWx0O1xuXG4gICAgcnVuKG5vZGUsIGZpbGUsIGRvbmUpO1xuXG4gICAgYXNzZXJ0RG9uZSgncnVuU3luYycsICdydW4nLCBjb21wbGV0ZSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgZnVuY3Rpb24gZG9uZShlcnIsIHRyZWUpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIGJhaWwoZXJyKTtcbiAgICAgIHJlc3VsdCA9IHRyZWU7XG4gICAgfVxuICB9XG5cbiAgLyogU3RyaW5naWZ5IGEgVW5pc3Qgbm9kZSByZXByZXNlbnRhdGlvbiBvZiBhIGZpbGVcbiAgICogKGluIHN0cmluZyBvciBWRmlsZSByZXByZXNlbnRhdGlvbikgaW50byBhIHN0cmluZ1xuICAgKiB1c2luZyB0aGUgYENvbXBpbGVyYCBvbiB0aGUgcHJvY2Vzc29yLiAqL1xuICBmdW5jdGlvbiBzdHJpbmdpZnkobm9kZSwgZG9jKSB7XG4gICAgdmFyIGZpbGUgPSB2ZmlsZShkb2MpO1xuICAgIHZhciBDb21waWxlcjtcblxuICAgIGZyZWV6ZSgpO1xuICAgIENvbXBpbGVyID0gcHJvY2Vzc29yLkNvbXBpbGVyO1xuICAgIGFzc2VydENvbXBpbGVyKCdzdHJpbmdpZnknLCBDb21waWxlcik7XG4gICAgYXNzZXJ0Tm9kZShub2RlKTtcblxuICAgIGlmIChuZXdhYmxlKENvbXBpbGVyKSkge1xuICAgICAgcmV0dXJuIG5ldyBDb21waWxlcihub2RlLCBmaWxlKS5jb21waWxlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbXBpbGVyKG5vZGUsIGZpbGUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcbiAgfVxuXG4gIC8qIFBhcnNlIGEgZmlsZSAoaW4gc3RyaW5nIG9yIFZGaWxlIHJlcHJlc2VudGF0aW9uKVxuICAgKiBpbnRvIGEgVW5pc3Qgbm9kZSB1c2luZyB0aGUgYFBhcnNlcmAgb24gdGhlIHByb2Nlc3NvcixcbiAgICogdGhlbiBydW4gdHJhbnNmb3JtcyBvbiB0aGF0IG5vZGUsIGFuZCBjb21waWxlIHRoZVxuICAgKiByZXN1bHRpbmcgbm9kZSB1c2luZyB0aGUgYENvbXBpbGVyYCBvbiB0aGUgcHJvY2Vzc29yLFxuICAgKiBhbmQgc3RvcmUgdGhhdCByZXN1bHQgb24gdGhlIFZGaWxlLiAqL1xuICBmdW5jdGlvbiBwcm9jZXNzKGRvYywgY2IpIHtcbiAgICBmcmVlemUoKTtcbiAgICBhc3NlcnRQYXJzZXIoJ3Byb2Nlc3MnLCBwcm9jZXNzb3IuUGFyc2VyKTtcbiAgICBhc3NlcnRDb21waWxlcigncHJvY2VzcycsIHByb2Nlc3Nvci5Db21waWxlcik7XG5cbiAgICBpZiAoIWNiKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZXhlY3V0b3IpO1xuICAgIH1cblxuICAgIGV4ZWN1dG9yKG51bGwsIGNiKTtcblxuICAgIGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGZpbGUgPSB2ZmlsZShkb2MpO1xuXG4gICAgICBwaXBlbGluZS5ydW4ocHJvY2Vzc29yLCB7ZmlsZTogZmlsZX0sIGRvbmUpO1xuXG4gICAgICBmdW5jdGlvbiBkb25lKGVycikge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZSkge1xuICAgICAgICAgIHJlc29sdmUoZmlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2IobnVsbCwgZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiBQcm9jZXNzIHRoZSBnaXZlbiBkb2N1bWVudCAoaW4gc3RyaW5nIG9yIFZGaWxlXG4gICAqIHJlcHJlc2VudGF0aW9uKSwgc3luYy4gKi9cbiAgZnVuY3Rpb24gcHJvY2Vzc1N5bmMoZG9jKSB7XG4gICAgdmFyIGNvbXBsZXRlID0gZmFsc2U7XG4gICAgdmFyIGZpbGU7XG5cbiAgICBmcmVlemUoKTtcbiAgICBhc3NlcnRQYXJzZXIoJ3Byb2Nlc3NTeW5jJywgcHJvY2Vzc29yLlBhcnNlcik7XG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3Byb2Nlc3NTeW5jJywgcHJvY2Vzc29yLkNvbXBpbGVyKTtcbiAgICBmaWxlID0gdmZpbGUoZG9jKTtcblxuICAgIHByb2Nlc3MoZmlsZSwgZG9uZSk7XG5cbiAgICBhc3NlcnREb25lKCdwcm9jZXNzU3luYycsICdwcm9jZXNzJywgY29tcGxldGUpO1xuXG4gICAgcmV0dXJuIGZpbGU7XG5cbiAgICBmdW5jdGlvbiBkb25lKGVycikge1xuICAgICAgY29tcGxldGUgPSB0cnVlO1xuICAgICAgYmFpbChlcnIpO1xuICAgIH1cbiAgfVxufVxuXG4vKiBDaGVjayBpZiBgZnVuY2AgaXMgYSBjb25zdHJ1Y3Rvci4gKi9cbmZ1bmN0aW9uIG5ld2FibGUodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmModmFsdWUpICYmIGtleXModmFsdWUucHJvdG90eXBlKTtcbn1cblxuLyogQ2hlY2sgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3Qgd2l0aCBrZXlzLiAqL1xuZnVuY3Rpb24ga2V5cyh2YWx1ZSkge1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiB2YWx1ZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyogQXNzZXJ0IGEgcGFyc2VyIGlzIGF2YWlsYWJsZS4gKi9cbmZ1bmN0aW9uIGFzc2VydFBhcnNlcihuYW1lLCBQYXJzZXIpIHtcbiAgaWYgKCFmdW5jKFBhcnNlcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBgJyArIG5hbWUgKyAnYCB3aXRob3V0IGBQYXJzZXJgJyk7XG4gIH1cbn1cblxuLyogQXNzZXJ0IGEgY29tcGlsZXIgaXMgYXZhaWxhYmxlLiAqL1xuZnVuY3Rpb24gYXNzZXJ0Q29tcGlsZXIobmFtZSwgQ29tcGlsZXIpIHtcbiAgaWYgKCFmdW5jKENvbXBpbGVyKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGAnICsgbmFtZSArICdgIHdpdGhvdXQgYENvbXBpbGVyYCcpO1xuICB9XG59XG5cbi8qIEFzc2VydCB0aGUgcHJvY2Vzc29yIGlzIG5vdCBmcm96ZW4uICovXG5mdW5jdGlvbiBhc3NlcnRVbmZyb3plbihuYW1lLCBmcm96ZW4pIHtcbiAgaWYgKGZyb3plbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW5ub3QgaW52b2tlIGAnICsgbmFtZSArICdgIG9uIGEgZnJvemVuIHByb2Nlc3Nvci5cXG4nICtcbiAgICAgICdDcmVhdGUgYSBuZXcgcHJvY2Vzc29yIGZpcnN0LCBieSBpbnZva2luZyBpdDogJyArXG4gICAgICAndXNlIGBwcm9jZXNzb3IoKWAgaW5zdGVhZCBvZiBgcHJvY2Vzc29yYC4nXG4gICAgKTtcbiAgfVxufVxuXG4vKiBBc3NlcnQgYG5vZGVgIGlzIGEgVW5pc3Qgbm9kZS4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vZGUobm9kZSkge1xuICBpZiAoIW5vZGUgfHwgIXN0cmluZyhub2RlLnR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBub2RlLCBnb3QgYCcgKyBub2RlICsgJ2AnKTtcbiAgfVxufVxuXG4vKiBBc3NlcnQgdGhhdCBgY29tcGxldGVgIGlzIGB0cnVlYC4gKi9cbmZ1bmN0aW9uIGFzc2VydERvbmUobmFtZSwgYXN5bmNOYW1lLCBjb21wbGV0ZSkge1xuICBpZiAoIWNvbXBsZXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdgJyArIG5hbWUgKyAnYCBmaW5pc2hlZCBhc3luYy4gVXNlIGAnICsgYXN5bmNOYW1lICsgJ2AgaW5zdGVhZCcpO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIGVzbGludCBuby1pbnZhbGlkLXRoaXM6IDEgKi9cblxudmFyIEVSUk9SX01FU1NBR0UgPSAnRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgY2FsbGVkIG9uIGluY29tcGF0aWJsZSAnO1xudmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBmdW5jVHlwZSA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmluZCh0aGF0KSB7XG4gICAgdmFyIHRhcmdldCA9IHRoaXM7XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgIT09ICdmdW5jdGlvbicgfHwgdG9TdHIuY2FsbCh0YXJnZXQpICE9PSBmdW5jVHlwZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEVSUk9SX01FU1NBR0UgKyB0YXJnZXQpO1xuICAgIH1cbiAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICAgIHZhciBib3VuZDtcbiAgICB2YXIgYmluZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIGJvdW5kKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGFyZ2V0LmFwcGx5KFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChPYmplY3QocmVzdWx0KSA9PT0gcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5hcHBseShcbiAgICAgICAgICAgICAgICB0aGF0LFxuICAgICAgICAgICAgICAgIGFyZ3MuY29uY2F0KHNsaWNlLmNhbGwoYXJndW1lbnRzKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGJvdW5kTGVuZ3RoID0gTWF0aC5tYXgoMCwgdGFyZ2V0Lmxlbmd0aCAtIGFyZ3MubGVuZ3RoKTtcbiAgICB2YXIgYm91bmRBcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3VuZExlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJvdW5kQXJncy5wdXNoKCckJyArIGkpO1xuICAgIH1cblxuICAgIGJvdW5kID0gRnVuY3Rpb24oJ2JpbmRlcicsICdyZXR1cm4gZnVuY3Rpb24gKCcgKyBib3VuZEFyZ3Muam9pbignLCcpICsgJyl7IHJldHVybiBiaW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOyB9JykoYmluZGVyKTtcblxuICAgIGlmICh0YXJnZXQucHJvdG90eXBlKSB7XG4gICAgICAgIHZhciBFbXB0eSA9IGZ1bmN0aW9uIEVtcHR5KCkge307XG4gICAgICAgIEVtcHR5LnByb3RvdHlwZSA9IHRhcmdldC5wcm90b3R5cGU7XG4gICAgICAgIGJvdW5kLnByb3RvdHlwZSA9IG5ldyBFbXB0eSgpO1xuICAgICAgICBFbXB0eS5wcm90b3R5cGUgPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBib3VuZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpbXBsZW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vaW1wbGVtZW50YXRpb24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCB8fCBpbXBsZW1lbnRhdGlvbjtcbiIsInZhciBiaW5kID0gcmVxdWlyZSgnZnVuY3Rpb24tYmluZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbiIsIi8qKlxuICogQGF1dGhvciBUaXR1cyBXb3JtZXJcbiAqIEBjb3B5cmlnaHQgMjAxNiBUaXR1cyBXb3JtZXJcbiAqIEBsaWNlbnNlIE1JVFxuICogQG1vZHVsZSBoYXN0LXV0aWwtZnJvbS1wYXJzZTVcbiAqIEBmaWxlb3ZlcnZpZXcgVHJhbnNmb3JtIFBhcnNlNeKAmXMgQVNUIHRvIEhBU1QuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKiBEZXBlbmRlbmNpZXMuICovXG52YXIgaW5mb3JtYXRpb24gPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbicpO1xudmFyIGNhbWVsY2FzZSA9IHJlcXVpcmUoJ2NhbWVsY2FzZScpO1xudmFyIHZmaWxlTG9jYXRpb24gPSByZXF1aXJlKCd2ZmlsZS1sb2NhdGlvbicpO1xudmFyIGhhcyA9IHJlcXVpcmUoJ2hhcycpO1xudmFyIGggPSByZXF1aXJlKCdoYXN0c2NyaXB0Jyk7XG5cbi8qIEV4cG9zZS4gKi9cbm1vZHVsZS5leHBvcnRzID0gd3JhcHBlcjtcblxuLyogSGFuZGxlcnMuICovXG52YXIgbWFwID0ge1xuICAnI2RvY3VtZW50Jzogcm9vdCxcbiAgJyNkb2N1bWVudC1mcmFnbWVudCc6IHJvb3QsXG4gICcjdGV4dCc6IHRleHQsXG4gICcjY29tbWVudCc6IGNvbW1lbnQsXG4gICcjZG9jdW1lbnRUeXBlJzogZG9jdHlwZVxufTtcblxuLyoqXG4gKiBXcmFwcGVyIHRvIG5vcm1hbGlzZSBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSB7QVNUTm9kZX0gYXN0IC0gUGFyc2U1IG5vZGUuXG4gKiBAcGFyYW0ge1ZGaWxlfE9iamVjdD99IFtvcHRpb25zXSAtIENvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJuIHtIQVNUTm9kZX0gLSBIQVNUIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIHdyYXBwZXIoYXN0LCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBmaWxlO1xuXG4gIGlmIChzZXR0aW5ncy5tZXNzYWdlcykge1xuICAgIGZpbGUgPSBzZXR0aW5ncztcbiAgICBzZXR0aW5ncyA9IHt9O1xuICB9IGVsc2Uge1xuICAgIGZpbGUgPSBzZXR0aW5ncy5maWxlO1xuICB9XG5cbiAgcmV0dXJuIHRyYW5zZm9ybShhc3QsIHtcbiAgICBmaWxlOiBmaWxlLFxuICAgIHRvUG9zaXRpb246IGZpbGUgPyB2ZmlsZUxvY2F0aW9uKGZpbGUpLnRvUG9zaXRpb24gOiBudWxsLFxuICAgIHZlcmJvc2U6IHNldHRpbmdzLnZlcmJvc2UsXG4gICAgbG9jYXRpb246IGZhbHNlXG4gIH0pO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhIG5vZGUuXG4gKlxuICogQHBhcmFtIHtBU1ROb2RlfSBhc3QgLSBQYXJzZTUgbm9kZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmF0aW9uLlxuICogQHJldHVybiB7SEFTVE5vZGV9IC0gSEFTVCBub2RlLlxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm0oYXN0LCBjb25maWcpIHtcbiAgdmFyIGZuID0gaGFzKG1hcCwgYXN0Lm5vZGVOYW1lKSA/IG1hcFthc3Qubm9kZU5hbWVdIDogZWxlbWVudDtcbiAgdmFyIGNoaWxkcmVuO1xuICB2YXIgbm9kZTtcbiAgdmFyIHBvc2l0aW9uO1xuXG4gIGlmIChhc3QuY2hpbGROb2Rlcykge1xuICAgIGNoaWxkcmVuID0gbm9kZXMoYXN0LmNoaWxkTm9kZXMsIGNvbmZpZyk7XG4gIH1cblxuICBub2RlID0gZm4oYXN0LCBjaGlsZHJlbiwgY29uZmlnKTtcblxuICBpZiAoYXN0Ll9fbG9jYXRpb24gJiYgY29uZmlnLnRvUG9zaXRpb24pIHtcbiAgICBjb25maWcubG9jYXRpb24gPSB0cnVlO1xuICAgIHBvc2l0aW9uID0gbG9jYXRpb24oYXN0Ll9fbG9jYXRpb24sIGFzdCwgbm9kZSwgY29uZmlnKTtcblxuICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgbm9kZS5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBjaGlsZHJlbi5cbiAqXG4gKiBAcGFyYW0ge0FycmF5LjxBU1ROb2RlPn0gY2hpbGRyZW4gLSBQYXJzZTUgbm9kZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm4ge0FycmF5LjxIQVNUTm9kZT59IC0gSEFTVCBub2Rlcy5cbiAqL1xuZnVuY3Rpb24gbm9kZXMoY2hpbGRyZW4sIGNvbmZpZykge1xuICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IHRyYW5zZm9ybShjaGlsZHJlbltpbmRleF0sIGNvbmZpZyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhIGRvY3VtZW50LlxuICpcbiAqIFN0b3JlcyBgYXN0LnF1aXJrc01vZGVgIGluIGBub2RlLmRhdGEucXVpcmtzTW9kZWAuXG4gKlxuICogQHBhcmFtIHtBU1ROb2RlLjxEb2N1bWVudD59IGFzdCAtIFBhcnNlNSBkb2N1bWVudC5cbiAqIEBwYXJhbSB7QXJyYXkuPEFTVE5vZGU+fSBjaGlsZHJlbiAtIENoaWxkcmVuIG9mIGBhc3RgLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJuIHtIQVNUUm9vdH0gLSBSb290IG5vZGUuXG4gKi9cbmZ1bmN0aW9uIHJvb3QoYXN0LCBjaGlsZHJlbiwgY29uZmlnKSB7XG4gIHZhciBub2RlID0ge1xuICAgIHR5cGU6ICdyb290JyxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgZGF0YToge1xuICAgICAgcXVpcmtzTW9kZTogYXN0LnF1aXJrc01vZGVcbiAgICB9XG4gIH07XG5cbiAgaWYgKGNvbmZpZy5maWxlICYmIGNvbmZpZy5sb2NhdGlvbikge1xuICAgIG5vZGUucG9zaXRpb24gPSBsb2NhdGlvbih7XG4gICAgICBzdGFydE9mZnNldDogMCxcbiAgICAgIGVuZE9mZnNldDogU3RyaW5nKGNvbmZpZy5maWxlKS5sZW5ndGhcbiAgICB9LCBhc3QsIG5vZGUsIGNvbmZpZyk7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYSBkb2N0eXBlLlxuICpcbiAqIEBwYXJhbSB7QVNUTm9kZS48RG9jdW1lbnRUeXBlPn0gYXN0IC0gUGFyc2U1IGRvY3R5cGUuXG4gKiBAcmV0dXJuIHtIQVNURG9jdHlwZX0gLSBEb2N0eXBlIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGRvY3R5cGUoYXN0KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ2RvY3R5cGUnLFxuICAgIG5hbWU6IGFzdC5uYW1lIHx8ICcnLFxuICAgIHB1YmxpYzogYXN0LnB1YmxpY0lkIHx8IG51bGwsXG4gICAgc3lzdGVtOiBhc3Quc3lzdGVtSWQgfHwgbnVsbFxuICB9O1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhIHRleHQuXG4gKlxuICogQHBhcmFtIHtBU1ROb2RlLjxUZXh0Pn0gYXN0IC0gUGFyc2U1IHRleHQuXG4gKiBAcmV0dXJuIHtIQVNUVGV4dH0gLSBUZXh0IG5vZGUuXG4gKi9cbmZ1bmN0aW9uIHRleHQoYXN0KSB7XG4gIHJldHVybiB7dHlwZTogJ3RleHQnLCB2YWx1ZTogYXN0LnZhbHVlfTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYSBjb21tZW50LlxuICpcbiAqIEBwYXJhbSB7QVNUTm9kZS48Q29tbWVudD59IGFzdCAtIFBhcnNlNSBjb21tZW50LlxuICogQHJldHVybiB7SEFTVENvbW1lbnR9IC0gQ29tbWVudCBub2RlLlxuICovXG5mdW5jdGlvbiBjb21tZW50KGFzdCkge1xuICByZXR1cm4ge3R5cGU6ICdjb21tZW50JywgdmFsdWU6IGFzdC5kYXRhfTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYW4gZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge0FTVE5vZGUuPEVsZW1lbnQ+fSBhc3QgLSBQYXJzZTUgZWxlbWVudC5cbiAqIEBwYXJhbSB7QXJyYXkuPEFTVE5vZGU+fSBjaGlsZHJlbiAtIENoaWxkcmVuIG9mIGBhc3RgLlxuICogQHJldHVybiB7SEFTVEVsZW1lbnR9IC0gRWxlbWVudCBub2RlLlxuICovXG5mdW5jdGlvbiBlbGVtZW50KGFzdCwgY2hpbGRyZW4pIHtcbiAgdmFyIHByb3BzID0ge307XG4gIHZhciB2YWx1ZXMgPSBhc3QuYXR0cnM7XG4gIHZhciBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGF0dHI7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhdHRyID0gdmFsdWVzW2luZGV4XTtcbiAgICBwcm9wc1soYXR0ci5wcmVmaXggPyBhdHRyLnByZWZpeCArICc6JyA6ICcnKSArIGF0dHIubmFtZV0gPSBhdHRyLnZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIGgoYXN0LnRhZ05hbWUsIHByb3BzLCBjaGlsZHJlbik7XG59XG5cbi8qKlxuICogQ3JlYXRlIGNsZWFuIHBvc2l0aW9uYWwgaW5mb3JtYXRpb24uXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdG9Qb3NpdGlvbiAtIE9mZnNldCB0byBwb3NpdGlvbi5cbiAqIEBwYXJhbSB7T2JqZWN0P30gW2RpcnR5XSAtIFBhcnNlNSBsb2NhdGlvbiBpbmZvcm1hdGlvbi5cbiAqIEByZXR1cm4ge0xvY2F0aW9ufSAtIFN0YXJ0IGFuZCBlbmQgcG9zaXRpb25zLlxuICovXG5mdW5jdGlvbiBsb2ModG9Qb3NpdGlvbiwgZGlydHkpIHtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDogdG9Qb3NpdGlvbihkaXJ0eS5zdGFydE9mZnNldCksXG4gICAgZW5kOiB0b1Bvc2l0aW9uKGRpcnR5LmVuZE9mZnNldClcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgY2xlYW4gcG9zaXRpb25hbCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaW5mbyAtIFBhcnNlNSBsb2NhdGlvbiBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSB7SEFTVE5vZGV9IG5vZGUgLSBIQVNUIG5vZGUuXG4gKiBAcGFyYW0ge09iamVjdH0gYXN0IC0gUGFyc2U1IG5vZGUuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gT3B0aW9ucy5cbiAqIEByZXR1cm4ge0xvY2F0aW9ufSAtIFN0YXJ0IGFuZCBlbmQgcG9zaXRpb25zLlxuICovXG5mdW5jdGlvbiBsb2NhdGlvbihpbmZvLCBhc3QsIG5vZGUsIGNvbmZpZykge1xuICB2YXIgc3RhcnQgPSBpbmZvLnN0YXJ0T2Zmc2V0O1xuICB2YXIgZW5kID0gaW5mby5lbmRPZmZzZXQ7XG4gIHZhciB2YWx1ZXMgPSBpbmZvLmF0dHJzIHx8IHt9O1xuICB2YXIgcHJvcFBvc2l0aW9ucyA9IHt9O1xuICB2YXIgcHJvcDtcbiAgdmFyIG5hbWU7XG4gIHZhciByZWZlcmVuY2U7XG5cbiAgZm9yIChwcm9wIGluIHZhbHVlcykge1xuICAgIG5hbWUgPSAoaW5mb3JtYXRpb24ocHJvcCkgfHwge30pLnByb3BlcnR5TmFtZSB8fCBjYW1lbGNhc2UocHJvcCk7XG4gICAgcHJvcFBvc2l0aW9uc1tuYW1lXSA9IGxvYyhjb25maWcudG9Qb3NpdGlvbiwgdmFsdWVzW3Byb3BdKTtcbiAgfVxuXG4gIC8qIFVwc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2lzc3Vlcy8xMDkgKi9cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnICYmICFpbmZvLmVuZFRhZykge1xuICAgIHJlZmVyZW5jZSA9IG5vZGUuY2hpbGRyZW5bbm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxXTtcblxuICAgIC8qIFVuY2xvc2VkIHdpdGggY2hpbGRyZW46ICovXG4gICAgaWYgKHJlZmVyZW5jZSAmJiByZWZlcmVuY2UucG9zaXRpb24pIHtcbiAgICAgIGlmIChyZWZlcmVuY2UucG9zaXRpb24uZW5kKSB7XG4gICAgICAgIGVuZCA9IHJlZmVyZW5jZS5wb3NpdGlvbi5lbmQub2Zmc2V0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kID0gbnVsbDtcbiAgICAgIH1cbiAgICAvKiBVbmNsb3NlZCB3aXRob3V0IGNoaWxkcmVuOiAqL1xuICAgIH0gZWxzZSBpZiAoaW5mby5zdGFydFRhZykge1xuICAgICAgZW5kID0gaW5mby5zdGFydFRhZy5lbmRPZmZzZXQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNvbmZpZy52ZXJib3NlICYmIG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgbm9kZS5kYXRhID0ge1xuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgb3BlbmluZzogbG9jKGNvbmZpZy50b1Bvc2l0aW9uLCBpbmZvLnN0YXJ0VGFnIHx8IGluZm8pLFxuICAgICAgICBjbG9zaW5nOiBpbmZvLmVuZFRhZyA/IGxvYyhjb25maWcudG9Qb3NpdGlvbiwgaW5mby5lbmRUYWcpIDogbnVsbCxcbiAgICAgICAgcHJvcGVydGllczogcHJvcFBvc2l0aW9uc1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGFydCA9IHR5cGVvZiBzdGFydCA9PT0gJ251bWJlcicgPyBjb25maWcudG9Qb3NpdGlvbihzdGFydCkgOiBudWxsO1xuICBlbmQgPSB0eXBlb2YgZW5kID09PSAnbnVtYmVyJyA/IGNvbmZpZy50b1Bvc2l0aW9uKGVuZCkgOiBudWxsO1xuXG4gIGlmICghc3RhcnQgJiYgIWVuZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge3N0YXJ0OiBzdGFydCwgZW5kOiBlbmR9O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0cy5SRVBMQUNFTUVOVF9DSEFSQUNURVIgPSAnXFx1RkZGRCc7XHJcblxyXG5leHBvcnRzLkNPREVfUE9JTlRTID0ge1xyXG4gICAgRU9GOiAtMSxcclxuICAgIE5VTEw6IDB4MDAsXHJcbiAgICBUQUJVTEFUSU9OOiAweDA5LFxyXG4gICAgQ0FSUklBR0VfUkVUVVJOOiAweDBELFxyXG4gICAgTElORV9GRUVEOiAweDBBLFxyXG4gICAgRk9STV9GRUVEOiAweDBDLFxyXG4gICAgU1BBQ0U6IDB4MjAsXHJcbiAgICBFWENMQU1BVElPTl9NQVJLOiAweDIxLFxyXG4gICAgUVVPVEFUSU9OX01BUks6IDB4MjIsXHJcbiAgICBOVU1CRVJfU0lHTjogMHgyMyxcclxuICAgIEFNUEVSU0FORDogMHgyNixcclxuICAgIEFQT1NUUk9QSEU6IDB4MjcsXHJcbiAgICBIWVBIRU5fTUlOVVM6IDB4MkQsXHJcbiAgICBTT0xJRFVTOiAweDJGLFxyXG4gICAgRElHSVRfMDogMHgzMCxcclxuICAgIERJR0lUXzk6IDB4MzksXHJcbiAgICBTRU1JQ09MT046IDB4M0IsXHJcbiAgICBMRVNTX1RIQU5fU0lHTjogMHgzQyxcclxuICAgIEVRVUFMU19TSUdOOiAweDNELFxyXG4gICAgR1JFQVRFUl9USEFOX1NJR046IDB4M0UsXHJcbiAgICBRVUVTVElPTl9NQVJLOiAweDNGLFxyXG4gICAgTEFUSU5fQ0FQSVRBTF9BOiAweDQxLFxyXG4gICAgTEFUSU5fQ0FQSVRBTF9GOiAweDQ2LFxyXG4gICAgTEFUSU5fQ0FQSVRBTF9YOiAweDU4LFxyXG4gICAgTEFUSU5fQ0FQSVRBTF9aOiAweDVBLFxyXG4gICAgR1JBVkVfQUNDRU5UOiAweDYwLFxyXG4gICAgTEFUSU5fU01BTExfQTogMHg2MSxcclxuICAgIExBVElOX1NNQUxMX0Y6IDB4NjYsXHJcbiAgICBMQVRJTl9TTUFMTF9YOiAweDc4LFxyXG4gICAgTEFUSU5fU01BTExfWjogMHg3QSxcclxuICAgIFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjogMHhGRkZEXHJcbn07XHJcblxyXG5leHBvcnRzLkNPREVfUE9JTlRfU0VRVUVOQ0VTID0ge1xyXG4gICAgREFTSF9EQVNIX1NUUklORzogWzB4MkQsIDB4MkRdLCAvLy0tXHJcbiAgICBET0NUWVBFX1NUUklORzogWzB4NDQsIDB4NEYsIDB4NDMsIDB4NTQsIDB4NTksIDB4NTAsIDB4NDVdLCAvL0RPQ1RZUEVcclxuICAgIENEQVRBX1NUQVJUX1NUUklORzogWzB4NUIsIDB4NDMsIDB4NDQsIDB4NDEsIDB4NTQsIDB4NDEsIDB4NUJdLCAvL1tDREFUQVtcclxuICAgIENEQVRBX0VORF9TVFJJTkc6IFsweDVELCAweDVELCAweDNFXSwgLy9dXT5cclxuICAgIFNDUklQVF9TVFJJTkc6IFsweDczLCAweDYzLCAweDcyLCAweDY5LCAweDcwLCAweDc0XSwgLy9zY3JpcHRcclxuICAgIFBVQkxJQ19TVFJJTkc6IFsweDUwLCAweDU1LCAweDQyLCAweDRDLCAweDQ5LCAweDQzXSwgLy9QVUJMSUNcclxuICAgIFNZU1RFTV9TVFJJTkc6IFsweDUzLCAweDU5LCAweDUzLCAweDU0LCAweDQ1LCAweDREXSAvL1NZU1RFTVxyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBVTklDT0RFID0gcmVxdWlyZSgnLi4vY29tbW9uL3VuaWNvZGUnKTtcblxuLy9BbGlhc2VzXG52YXIgJCA9IFVOSUNPREUuQ09ERV9QT0lOVFM7XG5cbi8vVXRpbHNcblxuLy9PUFRJTUlaQVRJT046IHRoZXNlIHV0aWxpdHkgZnVuY3Rpb25zIHNob3VsZCBub3QgYmUgbW92ZWQgb3V0IG9mIHRoaXMgbW9kdWxlLiBWOCBDcmFua3NoYWZ0IHdpbGwgbm90IGlubGluZVxuLy90aGlzIGZ1bmN0aW9ucyBpZiB0aGV5IHdpbGwgYmUgc2l0dWF0ZWQgaW4gYW5vdGhlciBtb2R1bGUgZHVlIHRvIGNvbnRleHQgc3dpdGNoLlxuLy9BbHdheXMgcGVyZm9ybSBpbmxpbmluZyBjaGVjayBiZWZvcmUgbW9kaWZ5aW5nIHRoaXMgZnVuY3Rpb25zICgnbm9kZSAtLXRyYWNlLWlubGluaW5nJykuXG5mdW5jdGlvbiBpc1N1cnJvZ2F0ZVBhaXIoY3AxLCBjcDIpIHtcbiAgICByZXR1cm4gY3AxID49IDB4RDgwMCAmJiBjcDEgPD0gMHhEQkZGICYmIGNwMiA+PSAweERDMDAgJiYgY3AyIDw9IDB4REZGRjtcbn1cblxuZnVuY3Rpb24gZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludChjcDEsIGNwMikge1xuICAgIHJldHVybiAoY3AxIC0gMHhEODAwKSAqIDB4NDAwICsgMHgyNDAwICsgY3AyO1xufVxuXG5cbi8vQ29uc3RcbnZhciBERUZBVUxUX0JVRkZFUl9XQVRFUkxJTkUgPSAxIDw8IDE2O1xuXG5cbi8vUHJlcHJvY2Vzc29yXG4vL05PVEU6IEhUTUwgaW5wdXQgcHJlcHJvY2Vzc2luZ1xuLy8oc2VlOiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjcHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtKVxudmFyIFByZXByb2Nlc3NvciA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaHRtbCA9IG51bGw7XG5cbiAgICB0aGlzLnBvcyA9IC0xO1xuICAgIHRoaXMubGFzdEdhcFBvcyA9IC0xO1xuICAgIHRoaXMubGFzdENoYXJQb3MgPSAtMTtcbiAgICB0aGlzLmRyb3BwZWRCdWZmZXJTaXplID0gMDtcblxuICAgIHRoaXMuZ2FwU3RhY2sgPSBbXTtcblxuICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG5cbiAgICB0aGlzLmxhc3RDaHVua1dyaXR0ZW4gPSBmYWxzZTtcbiAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSBmYWxzZTtcbiAgICB0aGlzLmJ1ZmZlcldhdGVybGluZSA9IERFRkFVTFRfQlVGRkVSX1dBVEVSTElORTtcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShQcmVwcm9jZXNzb3IucHJvdG90eXBlLCAnc291cmNlUG9zJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kcm9wcGVkQnVmZmVyU2l6ZSArIHRoaXMucG9zO1xuICAgIH1cbn0pO1xuXG5QcmVwcm9jZXNzb3IucHJvdG90eXBlLmRyb3BQYXJzZWRDaHVuayA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5wb3MgPiB0aGlzLmJ1ZmZlcldhdGVybGluZSkge1xuICAgICAgICB0aGlzLmxhc3RDaGFyUG9zIC09IHRoaXMucG9zO1xuICAgICAgICB0aGlzLmRyb3BwZWRCdWZmZXJTaXplICs9IHRoaXMucG9zO1xuICAgICAgICB0aGlzLmh0bWwgPSB0aGlzLmh0bWwuc3Vic3RyaW5nKHRoaXMucG9zKTtcbiAgICAgICAgdGhpcy5wb3MgPSAwO1xuICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSAtMTtcbiAgICAgICAgdGhpcy5nYXBTdGFjayA9IFtdO1xuICAgIH1cbn07XG5cblByZXByb2Nlc3Nvci5wcm90b3R5cGUuX2FkZEdhcCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdhcFN0YWNrLnB1c2godGhpcy5sYXN0R2FwUG9zKTtcbiAgICB0aGlzLmxhc3RHYXBQb3MgPSB0aGlzLnBvcztcbn07XG5cblByZXByb2Nlc3Nvci5wcm90b3R5cGUuX3Byb2Nlc3NIaWdoUmFuZ2VDb2RlUG9pbnQgPSBmdW5jdGlvbiAoY3ApIHtcbiAgICAvL05PVEU6IHRyeSB0byBwZWVrIGEgc3Vycm9nYXRlIHBhaXJcbiAgICBpZiAodGhpcy5wb3MgIT09IHRoaXMubGFzdENoYXJQb3MpIHtcbiAgICAgICAgdmFyIG5leHRDcCA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSk7XG5cbiAgICAgICAgaWYgKGlzU3Vycm9nYXRlUGFpcihjcCwgbmV4dENwKSkge1xuICAgICAgICAgICAgLy9OT1RFOiB3ZSBoYXZlIGEgc3Vycm9nYXRlIHBhaXIuIFBlZWsgcGFpciBjaGFyYWN0ZXIgYW5kIHJlY2FsY3VsYXRlIGNvZGUgcG9pbnQuXG4gICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICAgICAgY3AgPSBnZXRTdXJyb2dhdGVQYWlyQ29kZVBvaW50KGNwLCBuZXh0Q3ApO1xuXG4gICAgICAgICAgICAvL05PVEU6IGFkZCBnYXAgdGhhdCBzaG91bGQgYmUgYXZvaWRlZCBkdXJpbmcgcmV0cmVhdFxuICAgICAgICAgICAgdGhpcy5fYWRkR2FwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOT1RFOiB3ZSd2ZSBoaXQgdGhlIGVuZCBvZiBjaHVuaywgc3RvcCBwcm9jZXNzaW5nIGF0IHRoaXMgcG9pbnRcbiAgICBlbHNlIGlmICghdGhpcy5sYXN0Q2h1bmtXcml0dGVuKSB7XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IHRydWU7XG4gICAgICAgIHJldHVybiAkLkVPRjtcbiAgICB9XG5cbiAgICByZXR1cm4gY3A7XG59O1xuXG5QcmVwcm9jZXNzb3IucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBpc0xhc3RDaHVuaykge1xuICAgIGlmICh0aGlzLmh0bWwpXG4gICAgICAgIHRoaXMuaHRtbCArPSBjaHVuaztcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5odG1sID0gY2h1bms7XG5cbiAgICB0aGlzLmxhc3RDaGFyUG9zID0gdGhpcy5odG1sLmxlbmd0aCAtIDE7XG4gICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gZmFsc2U7XG4gICAgdGhpcy5sYXN0Q2h1bmtXcml0dGVuID0gaXNMYXN0Q2h1bms7XG59O1xuXG5QcmVwcm9jZXNzb3IucHJvdG90eXBlLmluc2VydEh0bWxBdEN1cnJlbnRQb3MgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICB0aGlzLmh0bWwgPSB0aGlzLmh0bWwuc3Vic3RyaW5nKDAsIHRoaXMucG9zICsgMSkgK1xuICAgICAgICAgICAgICAgIGNodW5rICtcbiAgICAgICAgICAgICAgICB0aGlzLmh0bWwuc3Vic3RyaW5nKHRoaXMucG9zICsgMSwgdGhpcy5odG1sLmxlbmd0aCk7XG5cbiAgICB0aGlzLmxhc3RDaGFyUG9zID0gdGhpcy5odG1sLmxlbmd0aCAtIDE7XG4gICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gZmFsc2U7XG59O1xuXG5cblByZXByb2Nlc3Nvci5wcm90b3R5cGUuYWR2YW5jZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnBvcysrO1xuXG4gICAgaWYgKHRoaXMucG9zID4gdGhpcy5sYXN0Q2hhclBvcykge1xuICAgICAgICBpZiAoIXRoaXMubGFzdENodW5rV3JpdHRlbilcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuICQuRU9GO1xuICAgIH1cblxuICAgIHZhciBjcCA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcblxuICAgIC8vTk9URTogYW55IFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXJzIHRoYXQgaW1tZWRpYXRlbHkgZm9sbG93IGEgVSswMDBEIENBUlJJQUdFIFJFVFVSTiAoQ1IpIGNoYXJhY3RlclxuICAgIC8vbXVzdCBiZSBpZ25vcmVkLlxuICAgIGlmICh0aGlzLnNraXBOZXh0TmV3TGluZSAmJiBjcCA9PT0gJC5MSU5FX0ZFRUQpIHtcbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fYWRkR2FwKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkdmFuY2UoKTtcbiAgICB9XG5cbiAgICAvL05PVEU6IGFsbCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVycyBtdXN0IGJlIGNvbnZlcnRlZCB0byBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyc1xuICAgIGlmIChjcCA9PT0gJC5DQVJSSUFHRV9SRVRVUk4pIHtcbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gJC5MSU5FX0ZFRUQ7XG4gICAgfVxuXG4gICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcblxuICAgIC8vT1BUSU1JWkFUSU9OOiBmaXJzdCBwZXJmb3JtIGNoZWNrIGlmIHRoZSBjb2RlIHBvaW50IGluIHRoZSBhbGxvd2VkIHJhbmdlIHRoYXQgY292ZXJzIG1vc3QgY29tbW9uXG4gICAgLy9IVE1MIGlucHV0IChlLmcuIEFTQ0lJIGNvZGVzKSB0byBhdm9pZCBwZXJmb3JtYW5jZS1jb3N0IG9wZXJhdGlvbnMgZm9yIGhpZ2gtcmFuZ2UgY29kZSBwb2ludHMuXG4gICAgcmV0dXJuIGNwID49IDB4RDgwMCA/IHRoaXMuX3Byb2Nlc3NIaWdoUmFuZ2VDb2RlUG9pbnQoY3ApIDogY3A7XG59O1xuXG5QcmVwcm9jZXNzb3IucHJvdG90eXBlLnJldHJlYXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMucG9zID09PSB0aGlzLmxhc3RHYXBQb3MpIHtcbiAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gdGhpcy5nYXBTdGFjay5wb3AoKTtcbiAgICAgICAgdGhpcy5wb3MtLTtcbiAgICB9XG5cbiAgICB0aGlzLnBvcy0tO1xufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVU5JQ09ERSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91bmljb2RlJyk7XG5cbi8vQWxpYXNlc1xudmFyICQgPSBVTklDT0RFLkNPREVfUE9JTlRTO1xuXG5cbmV4cG9ydHMuYXNzaWduID0gZnVuY3Rpb24gKHRva2VuaXplcikge1xuICAgIC8vTk9URTogb2J0YWluIFRva2VuaXplciBwcm90byB0aGlzIHdheSB0byBhdm9pZCBtb2R1bGUgY2lyY3VsYXIgcmVmZXJlbmNlc1xuICAgIHZhciB0b2tlbml6ZXJQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0b2tlbml6ZXIpLFxuICAgICAgICB0b2tlblN0YXJ0T2Zmc2V0ID0gLTEsXG4gICAgICAgIHRva2VuQ29sID0gLTEsXG4gICAgICAgIHRva2VuTGluZSA9IDEsXG4gICAgICAgIGlzRW9sID0gZmFsc2UsXG4gICAgICAgIGxpbmVTdGFydFBvc1N0YWNrID0gWzBdLFxuICAgICAgICBsaW5lU3RhcnRQb3MgPSAwLFxuICAgICAgICBjb2wgPSAtMSxcbiAgICAgICAgbGluZSA9IDE7XG5cbiAgICBmdW5jdGlvbiBhdHRhY2hMb2NhdGlvbkluZm8odG9rZW4pIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlZGVmIHtPYmplY3R9IExvY2F0aW9uSW5mb1xuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJvcGVydHkge051bWJlcn0gbGluZSAtIE9uZS1iYXNlZCBsaW5lIGluZGV4XG4gICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBjb2wgLSBPbmUtYmFzZWQgY29sdW1uIGluZGV4XG4gICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBzdGFydE9mZnNldCAtIFplcm8tYmFzZWQgZmlyc3QgY2hhcmFjdGVyIGluZGV4XG4gICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBlbmRPZmZzZXQgLSBaZXJvLWJhc2VkIGxhc3QgY2hhcmFjdGVyIGluZGV4XG4gICAgICAgICAqL1xuICAgICAgICB0b2tlbi5sb2NhdGlvbiA9IHtcbiAgICAgICAgICAgIGxpbmU6IHRva2VuTGluZSxcbiAgICAgICAgICAgIGNvbDogdG9rZW5Db2wsXG4gICAgICAgICAgICBzdGFydE9mZnNldDogdG9rZW5TdGFydE9mZnNldCxcbiAgICAgICAgICAgIGVuZE9mZnNldDogLTFcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvL05PVEU6IHBhdGNoIGNvbnN1bXB0aW9uIG1ldGhvZCB0byB0cmFjayBsaW5lL2NvbCBpbmZvcm1hdGlvblxuICAgIHRva2VuaXplci5fY29uc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNwID0gdG9rZW5pemVyUHJvdG8uX2NvbnN1bWUuY2FsbCh0aGlzKTtcblxuICAgICAgICAvL05PVEU6IExGIHNob3VsZCBiZSBpbiB0aGUgbGFzdCBjb2x1bW4gb2YgdGhlIGxpbmVcbiAgICAgICAgaWYgKGlzRW9sKSB7XG4gICAgICAgICAgICBpc0VvbCA9IGZhbHNlO1xuICAgICAgICAgICAgbGluZSsrO1xuICAgICAgICAgICAgbGluZVN0YXJ0UG9zU3RhY2sucHVzaCh0aGlzLnByZXByb2Nlc3Nvci5zb3VyY2VQb3MpO1xuICAgICAgICAgICAgbGluZVN0YXJ0UG9zID0gdGhpcy5wcmVwcm9jZXNzb3Iuc291cmNlUG9zO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkxJTkVfRkVFRClcbiAgICAgICAgICAgIGlzRW9sID0gdHJ1ZTtcblxuICAgICAgICBjb2wgPSB0aGlzLnByZXByb2Nlc3Nvci5zb3VyY2VQb3MgLSBsaW5lU3RhcnRQb3MgKyAxO1xuXG4gICAgICAgIHJldHVybiBjcDtcbiAgICB9O1xuXG4gICAgdG9rZW5pemVyLl91bmNvbnN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRva2VuaXplclByb3RvLl91bmNvbnN1bWUuY2FsbCh0aGlzKTtcbiAgICAgICAgaXNFb2wgPSBmYWxzZTtcblxuICAgICAgICB3aGlsZSAobGluZVN0YXJ0UG9zID4gdGhpcy5wcmVwcm9jZXNzb3Iuc291cmNlUG9zICYmIGxpbmVTdGFydFBvc1N0YWNrLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxpbmVTdGFydFBvcyA9IGxpbmVTdGFydFBvc1N0YWNrLnBvcCgpO1xuICAgICAgICAgICAgbGluZS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgY29sID0gdGhpcy5wcmVwcm9jZXNzb3Iuc291cmNlUG9zIC0gbGluZVN0YXJ0UG9zICsgMTtcbiAgICB9O1xuXG4gICAgLy9OT1RFOiBwYXRjaCB0b2tlbiBjcmVhdGlvbiBtZXRob2RzIGFuZCBhdHRhY2ggbG9jYXRpb24gb2JqZWN0c1xuICAgIHRva2VuaXplci5fY3JlYXRlU3RhcnRUYWdUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdG9rZW5pemVyUHJvdG8uX2NyZWF0ZVN0YXJ0VGFnVG9rZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgYXR0YWNoTG9jYXRpb25JbmZvKHRoaXMuY3VycmVudFRva2VuKTtcbiAgICB9O1xuXG4gICAgdG9rZW5pemVyLl9jcmVhdGVFbmRUYWdUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdG9rZW5pemVyUHJvdG8uX2NyZWF0ZUVuZFRhZ1Rva2VuLmNhbGwodGhpcyk7XG4gICAgICAgIGF0dGFjaExvY2F0aW9uSW5mbyh0aGlzLmN1cnJlbnRUb2tlbik7XG4gICAgfTtcblxuICAgIHRva2VuaXplci5fY3JlYXRlQ29tbWVudFRva2VuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0b2tlbml6ZXJQcm90by5fY3JlYXRlQ29tbWVudFRva2VuLmNhbGwodGhpcyk7XG4gICAgICAgIGF0dGFjaExvY2F0aW9uSW5mbyh0aGlzLmN1cnJlbnRUb2tlbik7XG4gICAgfTtcblxuICAgIHRva2VuaXplci5fY3JlYXRlRG9jdHlwZVRva2VuID0gZnVuY3Rpb24gKGluaXRpYWxOYW1lKSB7XG4gICAgICAgIHRva2VuaXplclByb3RvLl9jcmVhdGVEb2N0eXBlVG9rZW4uY2FsbCh0aGlzLCBpbml0aWFsTmFtZSk7XG4gICAgICAgIGF0dGFjaExvY2F0aW9uSW5mbyh0aGlzLmN1cnJlbnRUb2tlbik7XG4gICAgfTtcblxuICAgIHRva2VuaXplci5fY3JlYXRlQ2hhcmFjdGVyVG9rZW4gPSBmdW5jdGlvbiAodHlwZSwgY2gpIHtcbiAgICAgICAgdG9rZW5pemVyUHJvdG8uX2NyZWF0ZUNoYXJhY3RlclRva2VuLmNhbGwodGhpcywgdHlwZSwgY2gpO1xuICAgICAgICBhdHRhY2hMb2NhdGlvbkluZm8odGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pO1xuICAgIH07XG5cbiAgICB0b2tlbml6ZXIuX2NyZWF0ZUF0dHIgPSBmdW5jdGlvbiAoYXR0ck5hbWVGaXJzdENoKSB7XG4gICAgICAgIHRva2VuaXplclByb3RvLl9jcmVhdGVBdHRyLmNhbGwodGhpcywgYXR0ck5hbWVGaXJzdENoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ckxvY2F0aW9uID0ge1xuICAgICAgICAgICAgbGluZTogbGluZSxcbiAgICAgICAgICAgIGNvbDogY29sLFxuICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IHRoaXMucHJlcHJvY2Vzc29yLnNvdXJjZVBvcyxcbiAgICAgICAgICAgIGVuZE9mZnNldDogLTFcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgdG9rZW5pemVyLl9sZWF2ZUF0dHJOYW1lID0gZnVuY3Rpb24gKHRvU3RhdGUpIHtcbiAgICAgICAgdG9rZW5pemVyUHJvdG8uX2xlYXZlQXR0ck5hbWUuY2FsbCh0aGlzLCB0b1N0YXRlKTtcbiAgICAgICAgdGhpcy5fYXR0YWNoQ3VycmVudEF0dHJMb2NhdGlvbkluZm8oKTtcbiAgICB9O1xuXG4gICAgdG9rZW5pemVyLl9sZWF2ZUF0dHJWYWx1ZSA9IGZ1bmN0aW9uICh0b1N0YXRlKSB7XG4gICAgICAgIHRva2VuaXplclByb3RvLl9sZWF2ZUF0dHJWYWx1ZS5jYWxsKHRoaXMsIHRvU3RhdGUpO1xuICAgICAgICB0aGlzLl9hdHRhY2hDdXJyZW50QXR0ckxvY2F0aW9uSW5mbygpO1xuICAgIH07XG5cbiAgICB0b2tlbml6ZXIuX2F0dGFjaEN1cnJlbnRBdHRyTG9jYXRpb25JbmZvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyTG9jYXRpb24uZW5kT2Zmc2V0ID0gdGhpcy5wcmVwcm9jZXNzb3Iuc291cmNlUG9zO1xuXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24uYXR0cnMpXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbi5hdHRycyA9IHt9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydFRhZ0xvY2F0aW9uSW5mb1xuICAgICAgICAgKiBAZXh0ZW5kcyBMb2NhdGlvbkluZm9cbiAgICAgICAgICpcbiAgICAgICAgICogQHByb3BlcnR5IHtEaWN0aW9uYXJ5PFN0cmluZywgTG9jYXRpb25JbmZvPn0gYXR0cnMgLSBTdGFydCB0YWcgYXR0cmlidXRlcycgbG9jYXRpb24gaW5mby5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uLmF0dHJzW3RoaXMuY3VycmVudEF0dHIubmFtZV0gPSB0aGlzLmN1cnJlbnRBdHRyTG9jYXRpb247XG4gICAgfTtcblxuICAgIC8vTk9URTogcGF0Y2ggdG9rZW4gZW1pc3Npb24gbWV0aG9kcyB0byBkZXRlcm1pbmUgZW5kIGxvY2F0aW9uXG4gICAgdG9rZW5pemVyLl9lbWl0Q3VycmVudFRva2VuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvL05PVEU6IGlmIHdlIGhhdmUgcGVuZGluZyBjaGFyYWN0ZXIgdG9rZW4gbWFrZSBpdCdzIGVuZCBsb2NhdGlvbiBlcXVhbCB0byB0aGVcbiAgICAgICAgLy9jdXJyZW50IHRva2VuJ3Mgc3RhcnQgbG9jYXRpb24uXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbilcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZE9mZnNldCA9IHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uLnN0YXJ0T2Zmc2V0O1xuXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uLmVuZE9mZnNldCA9IHRoaXMucHJlcHJvY2Vzc29yLnNvdXJjZVBvcyArIDE7XG4gICAgICAgIHRva2VuaXplclByb3RvLl9lbWl0Q3VycmVudFRva2VuLmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRva2VuaXplci5fZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy9OT1RFOiBpZiB3ZSBoYXZlIGNoYXJhY3RlciB0b2tlbiBhbmQgaXQncyBsb2NhdGlvbiB3YXNuJ3Qgc2V0IGluIHRoZSBfZW1pdEN1cnJlbnRUb2tlbigpLFxuICAgICAgICAvL3RoZW4gc2V0IGl0J3MgbG9jYXRpb24gYXQgdGhlIGN1cnJlbnQgcHJlcHJvY2Vzc29yIHBvc2l0aW9uLlxuICAgICAgICAvL1dlIGRvbid0IG5lZWQgdG8gaW5jcmVtZW50IHByZXByb2Nlc3NvciBwb3NpdGlvbiwgc2luY2UgY2hhcmFjdGVyIHRva2VuXG4gICAgICAgIC8vZW1pc3Npb24gaXMgYWx3YXlzIGZvcmNlZCBieSB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRva2VuIGhlcmUuXG4gICAgICAgIC8vU28sIHdlIGFscmVhZHkgaGF2ZSBhZHZhbmNlZCBwb3NpdGlvbi5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuICYmIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZE9mZnNldCA9PT0gLTEpXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbi5lbmRPZmZzZXQgPSB0aGlzLnByZXByb2Nlc3Nvci5zb3VyY2VQb3M7XG5cbiAgICAgICAgdG9rZW5pemVyUHJvdG8uX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4uY2FsbCh0aGlzKTtcbiAgICB9O1xuXG4gICAgLy9OT1RFOiBwYXRjaCBpbml0aWFsIHN0YXRlcyBmb3IgZWFjaCBtb2RlIHRvIG9idGFpbiB0b2tlbiBzdGFydCBwb3NpdGlvblxuICAgIE9iamVjdC5rZXlzKHRva2VuaXplclByb3RvLk1PREUpXG5cbiAgICAgICAgLm1hcChmdW5jdGlvbiAobW9kZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbml6ZXJQcm90by5NT0RFW21vZGVOYW1lXTtcbiAgICAgICAgfSlcblxuICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgICAgIHRva2VuaXplcltzdGF0ZV0gPSBmdW5jdGlvbiAoY3ApIHtcbiAgICAgICAgICAgICAgICB0b2tlblN0YXJ0T2Zmc2V0ID0gdGhpcy5wcmVwcm9jZXNzb3Iuc291cmNlUG9zO1xuICAgICAgICAgICAgICAgIHRva2VuTGluZSA9IGxpbmU7XG4gICAgICAgICAgICAgICAgdG9rZW5Db2wgPSBjb2w7XG4gICAgICAgICAgICAgICAgdG9rZW5pemVyUHJvdG9bc3RhdGVdLmNhbGwodGhpcywgY3ApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxuLy9OT1RFOiB0aGlzIGZpbGUgY29udGFpbnMgYXV0by1nZW5lcmF0ZWQgdHJpZSBzdHJ1Y3R1cmUgdGhhdCBpcyB1c2VkIGZvciBuYW1lZCBlbnRpdHkgcmVmZXJlbmNlcyBjb25zdW1wdGlvblxyXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI3Rva2VuaXppbmctY2hhcmFjdGVyLXJlZmVyZW5jZXMgYW5kXHJcbi8vaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZXMuaHRtbCNuYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlcylcclxubW9kdWxlLmV4cG9ydHMgPSB7NjU6e2w6ezY5OntsOnsxMDg6e2w6ezEwNTp7bDp7MTAzOntsOns1OTp7YzpbMTk4XX19LGM6WzE5OF19fX19fX19LDc3OntsOns4MDp7bDp7NTk6e2M6WzM4XX19LGM6WzM4XX19fSw5Nzp7bDp7OTk6e2w6ezExNzp7bDp7MTE2OntsOnsxMDE6e2w6ezU5OntjOlsxOTNdfX0sYzpbMTkzXX19fX19fX19fSw5ODp7bDp7MTE0OntsOnsxMDE6e2w6ezExODp7bDp7MTAxOntsOns1OTp7YzpbMjU4XX19fX19fX19fX19LDk5OntsOnsxMDU6e2w6ezExNDp7bDp7OTk6e2w6ezU5OntjOlsxOTRdfX0sYzpbMTk0XX19fX19LDEyMTp7bDp7NTk6e2M6WzEwNDBdfX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwNjhdfX19fX0sMTAzOntsOnsxMTQ6e2w6ezk3OntsOnsxMTg6e2w6ezEwMTp7bDp7NTk6e2M6WzE5Ml19fSxjOlsxOTJdfX19fX19fX19LDEwODp7bDp7MTEyOntsOnsxMDQ6e2w6ezk3OntsOns1OTp7YzpbOTEzXX19fX19fX19fSwxMDk6e2w6ezk3OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMjU2XX19fX19fX19fSwxMTA6e2w6ezEwMDp7bDp7NTk6e2M6WzEwODM1XX19fX19LDExMTp7bDp7MTAzOntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzI2MF19fX19fX19LDExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTIwXX19fX19fX0sMTEyOntsOnsxMTI6e2w6ezEwODp7bDp7MTIxOntsOns3MDp7bDp7MTE3OntsOnsxMTA6e2w6ezk5OntsOnsxMTY6e2w6ezEwNTp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOls4Mjg5XX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezExMDp7bDp7MTAzOntsOns1OTp7YzpbMTk3XX19LGM6WzE5N119fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk2NF19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTAzOntsOnsxMTA6e2w6ezU5OntjOls4Nzg4XX19fX19fX19fX19LDExNjp7bDp7MTA1OntsOnsxMDg6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbMTk1XX19LGM6WzE5NV19fX19fX19fX0sMTE3OntsOnsxMDk6e2w6ezEwODp7bDp7NTk6e2M6WzE5Nl19fSxjOlsxOTZdfX19fX19fSw2Njp7bDp7OTc6e2w6ezk5OntsOnsxMDc6e2w6ezExNTp7bDp7MTA4OntsOns5Nzp7bDp7MTE1OntsOnsxMDQ6e2w6ezU5OntjOls4NzI2XX19fX19fX19fX19fX19fSwxMTQ6e2w6ezExODp7bDp7NTk6e2M6WzEwOTgzXX19fSwxMTk6e2w6ezEwMTp7bDp7MTAwOntsOns1OTp7YzpbODk2Nl19fX19fX19fX19fSw5OTp7bDp7MTIxOntsOns1OTp7YzpbMTA0MV19fX19fSwxMDE6e2w6ezk5OntsOns5Nzp7bDp7MTE3OntsOnsxMTU6e2w6ezEwMTp7bDp7NTk6e2M6Wzg3NTddfX19fX19fX19fX0sMTE0OntsOnsxMTA6e2w6ezExMTp7bDp7MTE3OntsOnsxMDg6e2w6ezEwODp7bDp7MTA1OntsOnsxMTU6e2w6ezU5OntjOls4NDkyXX19fX19fX19fX19fX19fX19LDExNjp7bDp7OTc6e2w6ezU5OntjOls5MTRdfX19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDA2OV19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTIxXX19fX19fX0sMTE0OntsOnsxMDE6e2w6ezExODp7bDp7MTAxOntsOns1OTp7YzpbNzI4XX19fX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOls4NDkyXX19fX19fX0sMTE3OntsOnsxMDk6e2w6ezExMjp7bDp7MTAxOntsOnsxMTM6e2w6ezU5OntjOls4NzgyXX19fX19fX19fX19fX0sNjc6e2w6ezcyOntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTA2M119fX19fX19LDc5OntsOns4MDp7bDp7ODk6e2w6ezU5OntjOlsxNjldfX0sYzpbMTY5XX19fX19LDk3OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzI2Ml19fX19fX19fX0sMTEyOntsOns1OTp7YzpbODkxNF19LDEwNTp7bDp7MTE2OntsOns5Nzp7bDp7MTA4OntsOns2ODp7bDp7MTA1OntsOnsxMDI6e2w6ezEwMjp7bDp7MTAxOntsOnsxMTQ6e2w6ezEwMTp7bDp7MTEwOntsOnsxMTY6e2w6ezEwNTp7bDp7OTc6e2w6ezEwODp7bDp7Njg6e2w6ezU5OntjOls4NTE3XX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sMTIxOntsOnsxMDg6e2w6ezEwMTp7bDp7MTIxOntsOnsxMTU6e2w6ezU5OntjOls4NDkzXX19fX19fX19fX19fX0sOTk6e2w6ezk3OntsOnsxMTQ6e2w6ezExMTp7bDp7MTEwOntsOns1OTp7YzpbMjY4XX19fX19fX19fSwxMDE6e2w6ezEwMDp7bDp7MTA1OntsOnsxMDg6e2w6ezU5OntjOlsxOTldfX0sYzpbMTk5XX19fX19fX0sMTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbMjY0XX19fX19fX0sMTExOntsOnsxMTA6e2w6ezEwNTp7bDp7MTEwOntsOnsxMTY6e2w6ezU5OntjOls4NzUyXX19fX19fX19fX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzI2Nl19fX19fX19LDEwMTp7bDp7MTAwOntsOnsxMDU6e2w6ezEwODp7bDp7MTA4OntsOns5Nzp7bDp7NTk6e2M6WzE4NF19fX19fX19fX19fSwxMTA6e2w6ezExNjp7bDp7MTAxOntsOnsxMTQ6e2w6ezY4OntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzE4M119fX19fX19fX19fX19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6Wzg0OTNdfX19fX0sMTA0OntsOnsxMDU6e2w6ezU5OntjOls5MzVdfX19fX0sMTA1OntsOnsxMTQ6e2w6ezk5OntsOnsxMDg6e2w6ezEwMTp7bDp7Njg6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbODg1N119fX19fX19LDc3OntsOnsxMDU6e2w6ezExMDp7bDp7MTE3OntsOnsxMTU6e2w6ezU5OntjOls4ODU0XX19fX19fX19fX19LDgwOntsOnsxMDg6e2w6ezExNzp7bDp7MTE1OntsOns1OTp7YzpbODg1M119fX19fX19fX0sODQ6e2w6ezEwNTp7bDp7MTA5OntsOnsxMDE6e2w6ezExNTp7bDp7NTk6e2M6Wzg4NTVdfX19fX19fX19fX19fX19fX19fX19LDEwODp7bDp7MTExOntsOns5OTp7bDp7MTA3OntsOnsxMTk6e2w6ezEwNTp7bDp7MTE1OntsOnsxMDE6e2w6ezY3OntsOnsxMTE6e2w6ezExMDp7bDp7MTE2OntsOnsxMTE6e2w6ezExNzp7bDp7MTE0OntsOns3Mzp7bDp7MTEwOntsOnsxMTY6e2w6ezEwMTp7bDp7MTAzOntsOnsxMTQ6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4NzU0XX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE1OntsOnsxMDE6e2w6ezY3OntsOnsxMTc6e2w6ezExNDp7bDp7MTA4OntsOnsxMjE6e2w6ezY4OntsOnsxMTE6e2w6ezExNzp7bDp7OTg6e2w6ezEwODp7bDp7MTAxOntsOns4MTp7bDp7MTE3OntsOnsxMTE6e2w6ezExNjp7bDp7MTAxOntsOns1OTp7YzpbODIyMV19fX19fX19fX19fX19fX19fX19fX19fSw4MTp7bDp7MTE3OntsOnsxMTE6e2w6ezExNjp7bDp7MTAxOntsOns1OTp7YzpbODIxN119fX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMTE6e2w6ezEwODp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOls4NzU5XX0sMTAxOntsOns1OTp7YzpbMTA4NjhdfX19fX19fX19LDExMDp7bDp7MTAzOntsOnsxMTQ6e2w6ezExNzp7bDp7MTAxOntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6Wzg4MDFdfX19fX19fX19fX19fSwxMDU6e2w6ezExMDp7bDp7MTE2OntsOns1OTp7YzpbODc1MV19fX19fX19LDExNjp7bDp7MTExOntsOnsxMTc6e2w6ezExNDp7bDp7NzM6e2w6ezExMDp7bDp7MTE2OntsOnsxMDE6e2w6ezEwMzp7bDp7MTE0OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODc1MF19fX19fX19fX19fX19fX19fX19fX19fX19fX0sMTEyOntsOnsxMDI6e2w6ezU5OntjOls4NDUwXX19fSwxMTQ6e2w6ezExMTp7bDp7MTAwOntsOnsxMTc6e2w6ezk5OntsOnsxMTY6e2w6ezU5OntjOls4NzIwXX19fX19fX19fX19fX19fSwxMTc6e2w6ezExMDp7bDp7MTE2OntsOnsxMDE6e2w6ezExNDp7bDp7Njc6e2w6ezEwODp7bDp7MTExOntsOns5OTp7bDp7MTA3OntsOnsxMTk6e2w6ezEwNTp7bDp7MTE1OntsOnsxMDE6e2w6ezY3OntsOnsxMTE6e2w6ezExMDp7bDp7MTE2OntsOnsxMTE6e2w6ezExNzp7bDp7MTE0OntsOns3Mzp7bDp7MTEwOntsOnsxMTY6e2w6ezEwMTp7bDp7MTAzOntsOnsxMTQ6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4NzU1XX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE0OntsOnsxMTE6e2w6ezExNTp7bDp7MTE1OntsOns1OTp7YzpbMTA3OTldfX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk2Nl19fX19fX19LDExNzp7bDp7MTEyOntsOns1OTp7YzpbODkxNV19LDY3OntsOns5Nzp7bDp7MTEyOntsOns1OTp7YzpbODc4MV19fX19fX19fX19fX19LDY4OntsOns2ODp7bDp7NTk6e2M6Wzg1MTddfSwxMTE6e2w6ezExNjp7bDp7MTE0OntsOns5Nzp7bDp7MTA0OntsOnsxMDA6e2w6ezU5OntjOlsxMDUxM119fX19fX19fX19fX19fX0sNzQ6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDI2XX19fX19fX0sODM6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDI5XX19fX19fX0sOTA6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDM5XX19fX19fX0sOTc6e2w6ezEwMzp7bDp7MTAzOntsOnsxMDE6e2w6ezExNDp7bDp7NTk6e2M6WzgyMjVdfX19fX19fX19LDExNDp7bDp7MTE0OntsOns1OTp7YzpbODYwOV19fX19fSwxMTU6e2w6ezEwNDp7bDp7MTE4OntsOns1OTp7YzpbMTA5ODBdfX19fX19fX19LDk5OntsOns5Nzp7bDp7MTE0OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzI3MF19fX19fX19fX0sMTIxOntsOns1OTp7YzpbMTA0NF19fX19fSwxMDE6e2w6ezEwODp7bDp7NTk6e2M6Wzg3MTFdfSwxMTY6e2w6ezk3OntsOns1OTp7YzpbOTE2XX19fX19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDA3MV19fX19fSwxMDU6e2w6ezk3OntsOns5OTp7bDp7MTE0OntsOnsxMDU6e2w6ezExNjp7bDp7MTA1OntsOns5OTp7bDp7OTc6e2w6ezEwODp7bDp7NjU6e2w6ezk5OntsOnsxMTc6e2w6ezExNjp7bDp7MTAxOntsOns1OTp7YzpbMTgwXX19fX19fX19fX19LDY4OntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzcyOV19fX0sMTE3OntsOns5ODp7bDp7MTA4OntsOnsxMDE6e2w6ezY1OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzczM119fX19fX19fX19fX19fX19fX19fX19fSw3MTp7bDp7MTE0OntsOns5Nzp7bDp7MTE4OntsOnsxMDE6e2w6ezU5OntjOls5Nl19fX19fX19fX19fSw4NDp7bDp7MTA1OntsOnsxMDg6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbNzMyXX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMDk6e2w6ezExMTp7bDp7MTEwOntsOnsxMDA6e2w6ezU5OntjOls4OTAwXX19fX19fX19fX19LDEwMjp7bDp7MTAyOntsOnsxMDE6e2w6ezExNDp7bDp7MTAxOntsOnsxMTA6e2w6ezExNjp7bDp7MTA1OntsOns5Nzp7bDp7MTA4OntsOns2ODp7bDp7NTk6e2M6Wzg1MThdfX19fX19fX19fX19fX19fX19fX19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTIzXX19fX19LDExNjp7bDp7NTk6e2M6WzE2OF19LDY4OntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg0MTJdfX19fX19fSw2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4Nzg0XX19fX19fX19fX19fX0sMTE3OntsOns5ODp7bDp7MTA4OntsOnsxMDE6e2w6ezY3OntsOnsxMTE6e2w6ezExMDp7bDp7MTE2OntsOnsxMTE6e2w6ezExNzp7bDp7MTE0OntsOns3Mzp7bDp7MTEwOntsOnsxMTY6e2w6ezEwMTp7bDp7MTAzOntsOnsxMTQ6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4NzUxXX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sNjg6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMTY4XX19fSwxMTk6e2w6ezExMDp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NTldfX19fX19fX19fX19fX19fX19fSw3Njp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NTZdfX19fX19fX19fX0sODI6e2w6ezEwNTp7bDp7MTAzOntsOnsxMDQ6e2w6ezExNjp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NjBdfX19fX19fX19fX19fX19fX19fX19LDg0OntsOnsxMDE6e2w6ezEwMTp7bDp7NTk6e2M6WzEwOTgwXX19fX19fX19fX19fX0sMTExOntsOnsxMTA6e2w6ezEwMzp7bDp7NzY6e2w6ezEwMTp7bDp7MTAyOntsOnsxMTY6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOlsxMDIzMl19fX19fX19fX19fSw4Mjp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbMTAyMzRdfX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sODI6e2w6ezEwNTp7bDp7MTAzOntsOnsxMDQ6e2w6ezExNjp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6WzEwMjMzXX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDgyOntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjU4XX19fX19fX19fX19LDg0OntsOnsxMDE6e2w6ezEwMTp7bDp7NTk6e2M6Wzg4NzJdfX19fX19fX19fX19fX19fX0sODU6e2w6ezExMjp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NTddfX19fX19fX19fX0sNjg6e2w6ezExMTp7bDp7MTE5OntsOnsxMTA6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjYxXX19fX19fX19fX19fX19fX19fX19fX19LDg2OntsOnsxMDE6e2w6ezExNDp7bDp7MTE2OntsOnsxMDU6e2w6ezk5OntsOns5Nzp7bDp7MTA4OntsOns2Njp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6Wzg3NDFdfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMTk6e2w6ezExMDp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg1OTVdfSw2Njp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTE1XX19fX19fX0sODU6e2w6ezExMjp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2OTNdfX19fX19fX19fX19fX19fX19fX19fX19fSw2Njp7bDp7MTE0OntsOnsxMDE6e2w6ezExODp7bDp7MTAxOntsOns1OTp7YzpbNzg1XX19fX19fX19fX19LDc2OntsOnsxMDE6e2w6ezEwMjp7bDp7MTE2OntsOns4Mjp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns4Njp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOnsxMTE6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTc2XX19fX19fX19fX19fX19fX19fX19fX19LDg0OntsOnsxMDE6e2w6ezEwMTp7bDp7ODY6e2w6ezEwMTp7bDp7OTk6e2w6ezExNjp7bDp7MTExOntsOnsxMTQ6e2w6ezU5OntjOlsxMDU5MF19fX19fX19fX19fX19fX19fX19LDg2OntsOnsxMDE6e2w6ezk5OntsOnsxMTY6e2w6ezExMTp7bDp7MTE0OntsOns1OTp7YzpbODYzN119LDY2OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA1ODJdfX19fX19fX19fX19fX19fX19fX19fX19fX19LDgyOntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezg0OntsOnsxMDE6e2w6ezEwMTp7bDp7ODY6e2w6ezEwMTp7bDp7OTk6e2w6ezExNjp7bDp7MTExOntsOnsxMTQ6e2w6ezU5OntjOlsxMDU5MV19fX19fX19fX19fX19fX19fX19LDg2OntsOnsxMDE6e2w6ezk5OntsOnsxMTY6e2w6ezExMTp7bDp7MTE0OntsOns1OTp7YzpbODY0MV19LDY2OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA1ODNdfX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sODQ6e2w6ezEwMTp7bDp7MTAxOntsOns1OTp7YzpbODg2OF19LDY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjE1XX19fX19fX19fX19fX19fX19LDk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjU5XX19fX19fX19fX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk2N119fX19fSwxMTY6e2w6ezExNDp7bDp7MTExOntsOnsxMDc6e2w6ezU5OntjOlsyNzJdfX19fX19fX19fX19fSw2OTp7bDp7Nzg6e2w6ezcxOntsOns1OTp7YzpbMzMwXX19fX19LDg0OntsOns3Mjp7bDp7NTk6e2M6WzIwOF19fSxjOlsyMDhdfX19LDk3OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzIwMV19fSxjOlsyMDFdfX19fX19fX19LDk5OntsOns5Nzp7bDp7MTE0OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzI4Ml19fX19fX19fX0sMTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbMjAyXX19LGM6WzIwMl19fX19fSwxMjE6e2w6ezU5OntjOlsxMDY5XX19fX19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOlsyNzhdfX19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDA3Ml19fX19fSwxMDM6e2w6ezExNDp7bDp7OTc6e2w6ezExODp7bDp7MTAxOntsOns1OTp7YzpbMjAwXX19LGM6WzIwMF19fX19fX19fX0sMTA4OntsOnsxMDE6e2w6ezEwOTp7bDp7MTAxOntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6Wzg3MTJdfX19fX19fX19fX19fSwxMDk6e2w6ezk3OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMjc0XX19fX19fX0sMTEyOntsOnsxMTY6e2w6ezEyMTp7bDp7ODM6e2w6ezEwOTp7bDp7OTc6e2w6ezEwODp7bDp7MTA4OntsOns4Mzp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMTQ6e2w6ezEwMTp7bDp7NTk6e2M6Wzk3MjNdfX19fX19fX19fX19fX19fX19fX19fX0sODY6e2w6ezEwMTp7bDp7MTE0OntsOnsxMjE6e2w6ezgzOntsOnsxMDk6e2w6ezk3OntsOnsxMDg6e2w6ezEwODp7bDp7ODM6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTE0OntsOnsxMDE6e2w6ezU5OntjOls5NjQzXX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMTE6e2w6ezEwMzp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOlsyODBdfX19fX19fSwxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDEyNF19fX19fX19LDExMjp7bDp7MTE1OntsOnsxMDU6e2w6ezEwODp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOls5MTddfX19fX19fX19fX19fSwxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6WzEwODY5XX0sODQ6e2w6ezEwNTp7bDp7MTA4OntsOnsxMDA6e2w6ezEwMTp7bDp7NTk6e2M6Wzg3NzBdfX19fX19fX19fX19fX19LDEwNTp7bDp7MTA4OntsOnsxMDU6e2w6ezk4OntsOnsxMTQ6e2w6ezEwNTp7bDp7MTE3OntsOnsxMDk6e2w6ezU5OntjOls4NjUyXX19fX19fX19fX19fX19fX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOls4NDk2XX19fX19LDEwNTp7bDp7MTA5OntsOns1OTp7YzpbMTA4NjddfX19fX19fSwxMTY6e2w6ezk3OntsOns1OTp7YzpbOTE5XX19fX19LDExNzp7bDp7MTA5OntsOnsxMDg6e2w6ezU5OntjOlsyMDNdfX0sYzpbMjAzXX19fX19LDEyMDp7bDp7MTA1OntsOnsxMTU6e2w6ezExNjp7bDp7MTE1OntsOns1OTp7YzpbODcwN119fX19fX19fX0sMTEyOntsOnsxMTE6e2w6ezExMDp7bDp7MTAxOntsOnsxMTA6e2w6ezExNjp7bDp7MTA1OntsOns5Nzp7bDp7MTA4OntsOns2OTp7bDp7NTk6e2M6Wzg1MTldfX19fX19fX19fX19fX19fX19fX19fX19fSw3MDp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzEwNjBdfX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwNzNdfX19fX0sMTA1OntsOnsxMDg6e2w6ezEwODp7bDp7MTAxOntsOnsxMDA6e2w6ezgzOntsOnsxMDk6e2w6ezk3OntsOnsxMDg6e2w6ezEwODp7bDp7ODM6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTE0OntsOnsxMDE6e2w6ezU5OntjOls5NzI0XX19fX19fX19fX19fX19fX19fX19fX19LDg2OntsOnsxMDE6e2w6ezExNDp7bDp7MTIxOntsOns4Mzp7bDp7MTA5OntsOns5Nzp7bDp7MTA4OntsOnsxMDg6e2w6ezgzOntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezExNDp7bDp7MTAxOntsOns1OTp7YzpbOTY0Ml19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTI1XX19fX19LDExNDp7bDp7NjU6e2w6ezEwODp7bDp7MTA4OntsOns1OTp7YzpbODcwNF19fX19fX19fX0sMTE3OntsOnsxMTQ6e2w6ezEwNTp7bDp7MTAxOntsOnsxMTQ6e2w6ezExNjp7bDp7MTE0OntsOnsxMDI6e2w6ezU5OntjOls4NDk3XX19fX19fX19fX19fX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbODQ5N119fX19fX19fX0sNzE6e2w6ezc0OntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTAyN119fX19fX19LDg0OntsOns1OTp7YzpbNjJdfX0sYzpbNjJdfSw5Nzp7bDp7MTA5OntsOnsxMDk6e2w6ezk3OntsOns1OTp7YzpbOTE1XX0sMTAwOntsOns1OTp7YzpbOTg4XX19fX19fX19fX19LDk4OntsOnsxMTQ6e2w6ezEwMTp7bDp7MTE4OntsOnsxMDE6e2w6ezU5OntjOlsyODZdfX19fX19fX19fX0sOTk6e2w6ezEwMTp7bDp7MTAwOntsOnsxMDU6e2w6ezEwODp7bDp7NTk6e2M6WzI5MF19fX19fX19fX0sMTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbMjg0XX19fX19fX0sMTIxOntsOns1OTp7YzpbMTA0M119fX19fSwxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMjg4XX19fX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwNzRdfX19fX0sMTAzOntsOns1OTp7YzpbODkyMV19fX0sMTExOntsOnsxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDEyNl19fX19fX19LDExNDp7bDp7MTAxOntsOns5Nzp7bDp7MTE2OntsOnsxMDE6e2w6ezExNDp7bDp7Njk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODgwNV19LDc2OntsOnsxMDE6e2w6ezExNTp7bDp7MTE1OntsOns1OTp7YzpbODkyM119fX19fX19fX19fX19fX19fX19LDcwOntsOnsxMTc6e2w6ezEwODp7bDp7MTA4OntsOns2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4ODA3XX19fX19fX19fX19fX19fX19fX0sNzE6e2w6ezExNDp7bDp7MTAxOntsOns5Nzp7bDp7MTE2OntsOnsxMDE6e2w6ezExNDp7bDp7NTk6e2M6WzEwOTE0XX19fX19fX19fX19fX19fSw3Njp7bDp7MTAxOntsOnsxMTU6e2w6ezExNTp7bDp7NTk6e2M6Wzg4MjNdfX19fX19fX19LDgzOntsOnsxMDg6e2w6ezk3OntsOnsxMTA6e2w6ezExNjp7bDp7Njk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbMTA4NzhdfX19fX19fX19fX19fX19fX19fX19LDg0OntsOnsxMDU6e2w6ezEwODp7bDp7MTAwOntsOnsxMDE6e2w6ezU5OntjOls4ODE5XX19fX19fX19fX19fX19fX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk3MF19fX19fX19LDExNjp7bDp7NTk6e2M6Wzg4MTFdfX19fX0sNzI6e2w6ezY1OntsOns4Mjp7bDp7Njg6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDY2XX19fX19fX19fX19LDk3OntsOns5OTp7bDp7MTAxOntsOnsxMDc6e2w6ezU5OntjOls3MTFdfX19fX19fSwxMTY6e2w6ezU5OntjOls5NF19fX19fSw5OTp7bDp7MTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbMjkyXX19fX19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6Wzg0NjBdfX19fX0sMTA1OntsOnsxMDg6e2w6ezk4OntsOnsxMDE6e2w6ezExNDp7bDp7MTE2OntsOns4Mzp7bDp7MTEyOntsOns5Nzp7bDp7OTk6e2w6ezEwMTp7bDp7NTk6e2M6Wzg0NTldfX19fX19fX19fX19fX19fX19fX19fX0sMTExOntsOnsxMTI6e2w6ezEwMjp7bDp7NTk6e2M6Wzg0NjFdfX19fX0sMTE0OntsOnsxMDU6e2w6ezEyMjp7bDp7MTExOntsOnsxMTA6e2w6ezExNjp7bDp7OTc6e2w6ezEwODp7bDp7NzY6e2w6ezEwNTp7bDp7MTEwOntsOnsxMDE6e2w6ezU5OntjOls5NDcyXX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOls4NDU5XX19fX19LDExNjp7bDp7MTE0OntsOnsxMTE6e2w6ezEwNzp7bDp7NTk6e2M6WzI5NF19fX19fX19fX19fSwxMTc6e2w6ezEwOTp7bDp7MTEyOntsOns2ODp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7NzI6e2w6ezExNzp7bDp7MTA5OntsOnsxMTI6e2w6ezU5OntjOls4NzgyXX19fX19fX19fX19fX19fX19LDY5OntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6Wzg3ODNdfX19fX19fX19fX19fX19fX19fSw3Mzp7bDp7Njk6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDQ1XX19fX19fX0sNzQ6e2w6ezEwODp7bDp7MTA1OntsOnsxMDM6e2w6ezU5OntjOlszMDZdfX19fX19fX19LDc5OntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTAyNV19fX19fX19LDk3OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzIwNV19fSxjOlsyMDVdfX19fX19fX19LDk5OntsOnsxMDU6e2w6ezExNDp7bDp7OTk6e2w6ezU5OntjOlsyMDZdfX0sYzpbMjA2XX19fX19LDEyMTp7bDp7NTk6e2M6WzEwNDhdfX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzMwNF19fX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbODQ2NV19fX19fSwxMDM6e2w6ezExNDp7bDp7OTc6e2w6ezExODp7bDp7MTAxOntsOns1OTp7YzpbMjA0XX19LGM6WzIwNF19fX19fX19fX0sMTA5OntsOns1OTp7YzpbODQ2NV19LDk3OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMjk4XX19fX19LDEwMzp7bDp7MTA1OntsOnsxMTA6e2w6ezk3OntsOnsxMTQ6e2w6ezEyMTp7bDp7NzM6e2w6ezU5OntjOls4NTIwXX19fX19fX19fX19fX19fX19LDExMjp7bDp7MTA4OntsOnsxMDU6e2w6ezEwMTp7bDp7MTE1OntsOns1OTp7YzpbODY1OF19fX19fX19fX19fX19LDExMDp7bDp7MTE2OntsOns1OTp7YzpbODc0OF19LDEwMTp7bDp7MTAzOntsOnsxMTQ6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4NzQ3XX19fX19fX19fSwxMTQ6e2w6ezExNTp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOnsxMDU6e2w6ezExMTp7bDp7MTEwOntsOns1OTp7YzpbODg5OF19fX19fX19fX19fX19fX19fX19fX0sMTE4OntsOnsxMDU6e2w6ezExNTp7bDp7MTA1OntsOns5ODp7bDp7MTA4OntsOnsxMDE6e2w6ezY3OntsOnsxMTE6e2w6ezEwOTp7bDp7MTA5OntsOns5Nzp7bDp7NTk6e2M6WzgyOTFdfX19fX19fX19fX0sODQ6e2w6ezEwNTp7bDp7MTA5OntsOnsxMDE6e2w6ezExNTp7bDp7NTk6e2M6WzgyOTBdfX19fX19fX19fX19fX19fX19fX19fX19fX19LDExMTp7bDp7MTAzOntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzMwMl19fX19fX19LDExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTI4XX19fX19LDExNjp7bDp7OTc6e2w6ezU5OntjOls5MjFdfX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOls4NDY0XX19fX19fX0sMTE2OntsOnsxMDU6e2w6ezEwODp7bDp7MTAwOntsOnsxMDE6e2w6ezU5OntjOlsyOTZdfX19fX19fX19fX0sMTE3OntsOnsxMDc6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDMwXX19fX19fX0sMTA5OntsOnsxMDg6e2w6ezU5OntjOlsyMDddfX0sYzpbMjA3XX19fX19fX0sNzQ6e2w6ezk5OntsOnsxMDU6e2w6ezExNDp7bDp7OTk6e2w6ezU5OntjOlszMDhdfX19fX19fSwxMjE6e2w6ezU5OntjOlsxMDQ5XX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDc3XX19fX19LDExMTp7bDp7MTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxMjldfX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOlsxMTk5NzNdfX19fX0sMTAxOntsOnsxMTQ6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDMyXX19fX19fX19fX19LDExNzp7bDp7MTA3OntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTAyOF19fX19fX19fX19fSw3NTp7bDp7NzI6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDYxXX19fX19fX0sNzQ6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDM2XX19fX19fX0sOTc6e2w6ezExMjp7bDp7MTEyOntsOns5Nzp7bDp7NTk6e2M6WzkyMl19fX19fX19fX0sOTk6e2w6ezEwMTp7bDp7MTAwOntsOnsxMDU6e2w6ezEwODp7bDp7NTk6e2M6WzMxMF19fX19fX19fX0sMTIxOntsOns1OTp7YzpbMTA1MF19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDA3OF19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTMwXX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTE5OTc0XX19fX19fX19fSw3Njp7bDp7NzQ6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDMzXX19fX19fX0sODQ6e2w6ezU5OntjOls2MF19fSxjOls2MF19LDk3OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzMxM119fX19fX19fX0sMTA5OntsOns5ODp7bDp7MTAwOntsOns5Nzp7bDp7NTk6e2M6WzkyM119fX19fX19fX0sMTEwOntsOnsxMDM6e2w6ezU5OntjOlsxMDIxOF19fX19fSwxMTI6e2w6ezEwODp7bDp7OTc6e2w6ezk5OntsOnsxMDE6e2w6ezExNjp7bDp7MTE0OntsOnsxMDI6e2w6ezU5OntjOls4NDY2XX19fX19fX19fX19fX19fX19LDExNDp7bDp7MTE0OntsOns1OTp7YzpbODYwNl19fX19fX19LDk5OntsOns5Nzp7bDp7MTE0OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzMxN119fX19fX19fX0sMTAxOntsOnsxMDA6e2w6ezEwNTp7bDp7MTA4OntsOns1OTp7YzpbMzE1XX19fX19fX19fSwxMjE6e2w6ezU5OntjOlsxMDUxXX19fX19LDEwMTp7bDp7MTAyOntsOnsxMTY6e2w6ezY1OntsOnsxMTA6e2w6ezEwMzp7bDp7MTA4OntsOnsxMDE6e2w6ezY2OntsOnsxMTQ6e2w6ezk3OntsOns5OTp7bDp7MTA3OntsOnsxMDE6e2w6ezExNjp7bDp7NTk6e2M6WzEwMjE2XX19fX19fX19fX19fX19fX19fX19fX19LDExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg1OTJdfSw2Njp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NzZdfX19fX19fSw4Mjp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODY0Nl19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDY3OntsOnsxMDE6e2w6ezEwNTp7bDp7MTA4OntsOnsxMDU6e2w6ezExMDp7bDp7MTAzOntsOns1OTp7YzpbODk2OF19fX19fX19fX19fX19fX0sNjg6e2w6ezExMTp7bDp7MTE3OntsOns5ODp7bDp7MTA4OntsOnsxMDE6e2w6ezY2OntsOnsxMTQ6e2w6ezk3OntsOns5OTp7bDp7MTA3OntsOnsxMDE6e2w6ezExNjp7bDp7NTk6e2M6WzEwMjE0XX19fX19fX19fX19fX19fX19fX19fX19LDExOTp7bDp7MTEwOntsOns4NDp7bDp7MTAxOntsOnsxMDE6e2w6ezg2OntsOnsxMDE6e2w6ezk5OntsOnsxMTY6e2w6ezExMTp7bDp7MTE0OntsOns1OTp7YzpbMTA1OTNdfX19fX19fX19fX19fX19fX19fSw4Njp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOnsxMTE6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NDNdfSw2Njp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTg1XX19fX19fX19fX19fX19fX19fX19fX19fX19fSw3MDp7bDp7MTA4OntsOnsxMTE6e2w6ezExMTp7bDp7MTE0OntsOns1OTp7YzpbODk3MF19fX19fX19fX19fSw4Mjp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODU5Nl19fX19fX19fX19fSw4Njp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOnsxMTE6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTc0XX19fX19fX19fX19fX19fX19fX19fX19LDg0OntsOnsxMDE6e2w6ezEwMTp7bDp7NTk6e2M6Wzg4NjddfSw2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODYxMl19fX19fX19fX19fSw4Njp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOnsxMTE6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTg2XX19fX19fX19fX19fX19fX19LDExNDp7bDp7MTA1OntsOns5Nzp7bDp7MTEwOntsOnsxMDM6e2w6ezEwODp7bDp7MTAxOntsOns1OTp7YzpbODg4Ml19LDY2OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA3MDNdfX19fX19fSw2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4ODg0XX19fX19fX19fX19fX19fX19fX19fX19fX19fSw4NTp7bDp7MTEyOntsOns2ODp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7ODY6e2w6ezEwMTp7bDp7OTk6e2w6ezExNjp7bDp7MTExOntsOnsxMTQ6e2w6ezU5OntjOlsxMDU3N119fX19fX19fX19fX19fX19fX19fX0sODQ6e2w6ezEwMTp7bDp7MTAxOntsOns4Njp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOnsxMTE6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTkyXX19fX19fX19fX19fX19fX19fX0sODY6e2w6ezEwMTp7bDp7OTk6e2w6ezExNjp7bDp7MTExOntsOnsxMTQ6e2w6ezU5OntjOls4NjM5XX0sNjY6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDU4NF19fX19fX19fX19fX19fX19fX19fX19fSw4Njp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOnsxMTE6e2w6ezExNDp7bDp7NTk6e2M6Wzg2MzZdfSw2Njp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTc4XX19fX19fX19fX19fX19fX19fX0sOTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NTZdfX19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjYwXX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE1OntsOnsxMTU6e2w6ezY5OntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NzE6e2w6ezExNDp7bDp7MTAxOntsOns5Nzp7bDp7MTE2OntsOnsxMDE6e2w6ezExNDp7bDp7NTk6e2M6Wzg5MjJdfX19fX19fX19fX19fX19fX19fX19fX19fSw3MDp7bDp7MTE3OntsOnsxMDg6e2w6ezEwODp7bDp7Njk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODgwNl19fX19fX19fX19fX19fX19fX19LDcxOntsOnsxMTQ6e2w6ezEwMTp7bDp7OTc6e2w6ezExNjp7bDp7MTAxOntsOnsxMTQ6e2w6ezU5OntjOls4ODIyXX19fX19fX19fX19fX19fSw3Njp7bDp7MTAxOntsOnsxMTU6e2w6ezExNTp7bDp7NTk6e2M6WzEwOTEzXX19fX19fX19fSw4Mzp7bDp7MTA4OntsOns5Nzp7bDp7MTEwOntsOnsxMTY6e2w6ezY5OntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6WzEwODc3XX19fX19fX19fX19fX19fX19fX19fSw4NDp7bDp7MTA1OntsOnsxMDg6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbODgxOF19fX19fX19fX19fX19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDA3OV19fX19fSwxMDg6e2w6ezU5OntjOls4OTIwXX0sMTAxOntsOnsxMDI6e2w6ezExNjp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NjZdfX19fX19fX19fX19fX19fX19fSwxMDk6e2w6ezEwNTp7bDp7MTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzMxOV19fX19fX19fX19fSwxMTE6e2w6ezExMDp7bDp7MTAzOntsOns3Njp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6WzEwMjI5XX19fX19fX19fX19LDgyOntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOlsxMDIzMV19fX19fX19fX19fX19fX19fX19fX19fX19fX19fSw4Mjp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbMTAyMzBdfX19fX19fX19fX19fX19fX19fX19LDEwODp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6WzEwMjMyXX19fX19fX19fX19LDExNDp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbMTAyMzRdfX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOlsxMDIzM119fX19fX19fX19fX19fX19fX19fX19fX19LDExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTMxXX19fX19LDExOTp7bDp7MTAxOntsOnsxMTQ6e2w6ezc2OntsOnsxMDE6e2w6ezEwMjp7bDp7MTE2OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODYwMV19fX19fX19fX19fX19fX19fX19LDgyOntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjAwXX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6Wzg0NjZdfX19fX0sMTA0OntsOns1OTp7YzpbODYyNF19fX0sMTE2OntsOnsxMTQ6e2w6ezExMTp7bDp7MTA3OntsOns1OTp7YzpbMzIxXX19fX19fX19fX19LDExNjp7bDp7NTk6e2M6Wzg4MTBdfX19fX0sNzc6e2w6ezk3OntsOnsxMTI6e2w6ezU5OntjOlsxMDUwMV19fX19fSw5OTp7bDp7MTIxOntsOns1OTp7YzpbMTA1Ml19fX19fSwxMDE6e2w6ezEwMDp7bDp7MTA1OntsOnsxMTc6e2w6ezEwOTp7bDp7ODM6e2w6ezExMjp7bDp7OTc6e2w6ezk5OntsOnsxMDE6e2w6ezU5OntjOls4Mjg3XX19fX19fX19fX19fX19fX19fX0sMTA4OntsOnsxMDg6e2w6ezEwNTp7bDp7MTEwOntsOnsxMTY6e2w6ezExNDp7bDp7MTAyOntsOns1OTp7YzpbODQ5OV19fX19fX19fX19fX19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDA4MF19fX19fSwxMDU6e2w6ezExMDp7bDp7MTE3OntsOnsxMTU6e2w6ezgwOntsOnsxMDg6e2w6ezExNzp7bDp7MTE1OntsOns1OTp7YzpbODcyM119fX19fX19fX19fX19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTMyXX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbODQ5OV19fX19fX19LDExNzp7bDp7NTk6e2M6WzkyNF19fX19fSw3ODp7bDp7NzQ6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDM0XX19fX19fX0sOTc6e2w6ezk5OntsOnsxMTc6e2w6ezExNjp7bDp7MTAxOntsOns1OTp7YzpbMzIzXX19fX19fX19fX19LDk5OntsOns5Nzp7bDp7MTE0OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzMyN119fX19fX19fX0sMTAxOntsOnsxMDA6e2w6ezEwNTp7bDp7MTA4OntsOns1OTp7YzpbMzI1XX19fX19fX19fSwxMjE6e2w6ezU5OntjOlsxMDUzXX19fX19LDEwMTp7bDp7MTAzOntsOns5Nzp7bDp7MTE2OntsOnsxMDU6e2w6ezExODp7bDp7MTAxOntsOns3Nzp7bDp7MTAxOntsOnsxMDA6e2w6ezEwNTp7bDp7MTE3OntsOnsxMDk6e2w6ezgzOntsOnsxMTI6e2w6ezk3OntsOns5OTp7bDp7MTAxOntsOns1OTp7YzpbODIwM119fX19fX19fX19fX19fX19fX19fX19fSw4NDp7bDp7MTA0OntsOnsxMDU6e2w6ezk5OntsOnsxMDc6e2w6ezgzOntsOnsxMTI6e2w6ezk3OntsOns5OTp7bDp7MTAxOntsOns1OTp7YzpbODIwM119fX19fX19fX19fX19fX0sMTEwOntsOns4Mzp7bDp7MTEyOntsOns5Nzp7bDp7OTk6e2w6ezEwMTp7bDp7NTk6e2M6WzgyMDNdfX19fX19fX19fX19fX19fX19fSw4Njp7bDp7MTAxOntsOnsxMTQ6e2w6ezEyMTp7bDp7ODQ6e2w6ezEwNDp7bDp7MTA1OntsOnsxMTA6e2w6ezgzOntsOnsxMTI6e2w6ezk3OntsOns5OTp7bDp7MTAxOntsOns1OTp7YzpbODIwM119fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE1OntsOnsxMTY6e2w6ezEwMTp7bDp7MTAwOntsOns3MTp7bDp7MTE0OntsOnsxMDE6e2w6ezk3OntsOnsxMTY6e2w6ezEwMTp7bDp7MTE0OntsOns3MTp7bDp7MTE0OntsOnsxMDE6e2w6ezk3OntsOnsxMTY6e2w6ezEwMTp7bDp7MTE0OntsOns1OTp7YzpbODgxMV19fX19fX19fX19fX19fX19fX19fX19fX19fX19fSw3Njp7bDp7MTAxOntsOnsxMTU6e2w6ezExNTp7bDp7NzY6e2w6ezEwMTp7bDp7MTE1OntsOnsxMTU6e2w6ezU5OntjOls4ODEwXX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE5OntsOns3Njp7bDp7MTA1OntsOnsxMTA6e2w6ezEwMTp7bDp7NTk6e2M6WzEwXX19fX19fX19fX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwODFdfX19fX0sMTExOntsOns2Njp7bDp7MTE0OntsOnsxMDE6e2w6ezk3OntsOnsxMDc6e2w6ezU5OntjOls4Mjg4XX19fX19fX19fX19LDExMDp7bDp7NjY6e2w6ezExNDp7bDp7MTAxOntsOns5Nzp7bDp7MTA3OntsOnsxMDU6e2w6ezExMDp7bDp7MTAzOntsOns4Mzp7bDp7MTEyOntsOns5Nzp7bDp7OTk6e2w6ezEwMTp7bDp7NTk6e2M6WzE2MF19fX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMTI6e2w6ezEwMjp7bDp7NTk6e2M6Wzg0NjldfX19fX0sMTE2OntsOns1OTp7YzpbMTA5ODhdfSw2Nzp7bDp7MTExOntsOnsxMTA6e2w6ezEwMzp7bDp7MTE0OntsOnsxMTc6e2w6ezEwMTp7bDp7MTEwOntsOnsxMTY6e2w6ezU5OntjOls4ODAyXX19fX19fX19fX19fX19fX19LDExNzp7bDp7MTEyOntsOns2Nzp7bDp7OTc6e2w6ezExMjp7bDp7NTk6e2M6Wzg4MTNdfX19fX19fX19fX19fSw2ODp7bDp7MTExOntsOnsxMTc6e2w6ezk4OntsOnsxMDg6e2w6ezEwMTp7bDp7ODY6e2w6ezEwMTp7bDp7MTE0OntsOnsxMTY6e2w6ezEwNTp7bDp7OTk6e2w6ezk3OntsOnsxMDg6e2w6ezY2OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbODc0Ml19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fSw2OTp7bDp7MTA4OntsOnsxMDE6e2w6ezEwOTp7bDp7MTAxOntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6Wzg3MTNdfX19fX19fX19fX19fSwxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6Wzg4MDBdfSw4NDp7bDp7MTA1OntsOnsxMDg6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbODc3MCw4MjRdfX19fX19fX19fX19fX19fX19fSwxMjA6e2w6ezEwNTp7bDp7MTE1OntsOnsxMTY6e2w6ezExNTp7bDp7NTk6e2M6Wzg3MDhdfX19fX19fX19fX19fSw3MTp7bDp7MTE0OntsOnsxMDE6e2w6ezk3OntsOnsxMTY6e2w6ezEwMTp7bDp7MTE0OntsOns1OTp7YzpbODgxNV19LDY5OntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6Wzg4MTddfX19fX19fX19fX0sNzA6e2w6ezExNzp7bDp7MTA4OntsOnsxMDg6e2w6ezY5OntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6Wzg4MDcsODI0XX19fX19fX19fX19fX19fX19fX0sNzE6e2w6ezExNDp7bDp7MTAxOntsOns5Nzp7bDp7MTE2OntsOnsxMDE6e2w6ezExNDp7bDp7NTk6e2M6Wzg4MTEsODI0XX19fX19fX19fX19fX19fSw3Njp7bDp7MTAxOntsOnsxMTU6e2w6ezExNTp7bDp7NTk6e2M6Wzg4MjVdfX19fX19fX19LDgzOntsOnsxMDg6e2w6ezk3OntsOnsxMTA6e2w6ezExNjp7bDp7Njk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbMTA4NzgsODI0XX19fX19fX19fX19fX19fX19fX19fSw4NDp7bDp7MTA1OntsOnsxMDg6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbODgyMV19fX19fX19fX19fX19fX19fX19fX19fX19LDcyOntsOnsxMTc6e2w6ezEwOTp7bDp7MTEyOntsOns2ODp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7NzI6e2w6ezExNzp7bDp7MTA5OntsOnsxMTI6e2w6ezU5OntjOls4NzgyLDgyNF19fX19fX19fX19fX19fX19fSw2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4NzgzLDgyNF19fX19fX19fX19fX19fX19fX19LDc2OntsOnsxMDE6e2w6ezEwMjp7bDp7MTE2OntsOns4NDp7bDp7MTE0OntsOnsxMDU6e2w6ezk3OntsOnsxMTA6e2w6ezEwMzp7bDp7MTA4OntsOnsxMDE6e2w6ezU5OntjOls4OTM4XX0sNjY6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDcwMyw4MjRdfX19fX19fSw2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4OTQwXX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE1OntsOnsxMTU6e2w6ezU5OntjOls4ODE0XX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODgxNl19fX19fX19fX19fSw3MTp7bDp7MTE0OntsOnsxMDE6e2w6ezk3OntsOnsxMTY6e2w6ezEwMTp7bDp7MTE0OntsOns1OTp7YzpbODgyNF19fX19fX19fX19fX19fX0sNzY6e2w6ezEwMTp7bDp7MTE1OntsOnsxMTU6e2w6ezU5OntjOls4ODEwLDgyNF19fX19fX19fX0sODM6e2w6ezEwODp7bDp7OTc6e2w6ezExMDp7bDp7MTE2OntsOns2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOlsxMDg3Nyw4MjRdfX19fX19fX19fX19fX19fX19fX19LDg0OntsOnsxMDU6e2w6ezEwODp7bDp7MTAwOntsOnsxMDE6e2w6ezU5OntjOls4ODIwXX19fX19fX19fX19fX19fX19fX0sNzg6e2w6ezEwMTp7bDp7MTE1OntsOnsxMTY6e2w6ezEwMTp7bDp7MTAwOntsOns3MTp7bDp7MTE0OntsOnsxMDE6e2w6ezk3OntsOnsxMTY6e2w6ezEwMTp7bDp7MTE0OntsOns3MTp7bDp7MTE0OntsOnsxMDE6e2w6ezk3OntsOnsxMTY6e2w6ezEwMTp7bDp7MTE0OntsOns1OTp7YzpbMTA5MTQsODI0XX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDc2OntsOnsxMDE6e2w6ezExNTp7bDp7MTE1OntsOns3Njp7bDp7MTAxOntsOnsxMTU6e2w6ezExNTp7bDp7NTk6e2M6WzEwOTEzLDgyNF19fX19fX19fX19fX19fX19fX19fX19fX19fX19fSw4MDp7bDp7MTE0OntsOnsxMDE6e2w6ezk5OntsOnsxMDE6e2w6ezEwMDp7bDp7MTAxOntsOnsxMTU6e2w6ezU5OntjOls4ODMyXX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbMTA5MjcsODI0XX19fX19fX19fX19LDgzOntsOnsxMDg6e2w6ezk3OntsOnsxMTA6e2w6ezExNjp7bDp7Njk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODkyOF19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDgyOntsOnsxMDE6e2w6ezExODp7bDp7MTAxOntsOnsxMTQ6e2w6ezExNTp7bDp7MTAxOntsOns2OTp7bDp7MTA4OntsOnsxMDE6e2w6ezEwOTp7bDp7MTAxOntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6Wzg3MTZdfX19fX19fX19fX19fX19fX19fX19fX19fX19LDEwNTp7bDp7MTAzOntsOnsxMDQ6e2w6ezExNjp7bDp7ODQ6e2w6ezExNDp7bDp7MTA1OntsOns5Nzp7bDp7MTEwOntsOnsxMDM6e2w6ezEwODp7bDp7MTAxOntsOns1OTp7YzpbODkzOV19LDY2OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA3MDQsODI0XX19fX19fX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODk0MV19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDgzOntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezExNDp7bDp7MTAxOntsOns4Mzp7bDp7MTE3OntsOns5ODp7bDp7MTE1OntsOnsxMDE6e2w6ezExNjp7bDp7NTk6e2M6Wzg4NDcsODI0XX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODkzMF19fX19fX19fX19fX19fX19fX19LDExMjp7bDp7MTAxOntsOnsxMTQ6e2w6ezExNTp7bDp7MTAxOntsOnsxMTY6e2w6ezU5OntjOls4ODQ4LDgyNF19LDY5OntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6Wzg5MzFdfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMTc6e2w6ezk4OntsOnsxMTU6e2w6ezEwMTp7bDp7MTE2OntsOns1OTp7YzpbODgzNCw4NDAyXX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODg0MF19fX19fX19fX19fX19fX19fX19LDk5OntsOns5OTp7bDp7MTAxOntsOnsxMDE6e2w6ezEwMDp7bDp7MTE1OntsOns1OTp7YzpbODgzM119LDY5OntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6WzEwOTI4LDgyNF19fX19fX19fX19fSw4Mzp7bDp7MTA4OntsOns5Nzp7bDp7MTEwOntsOnsxMTY6e2w6ezY5OntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6Wzg5MjldfX19fX19fX19fX19fX19fX19fX19LDg0OntsOnsxMDU6e2w6ezEwODp7bDp7MTAwOntsOnsxMDE6e2w6ezU5OntjOls4ODMxLDgyNF19fX19fX19fX19fX19fX19fX19fX19fSwxMTI6e2w6ezEwMTp7bDp7MTE0OntsOnsxMTU6e2w6ezEwMTp7bDp7MTE2OntsOns1OTp7YzpbODgzNSw4NDAyXX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODg0MV19fX19fX19fX19fX19fX19fX19fX19fX19fX0sODQ6e2w6ezEwNTp7bDp7MTA4OntsOnsxMDA6e2w6ezEwMTp7bDp7NTk6e2M6Wzg3NjldfSw2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4NzcyXX19fX19fX19fX19LDcwOntsOnsxMTc6e2w6ezEwODp7bDp7MTA4OntsOns2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4Nzc1XX19fX19fX19fX19fX19fX19fX0sODQ6e2w6ezEwNTp7bDp7MTA4OntsOnsxMDA6e2w6ezEwMTp7bDp7NTk6e2M6Wzg3NzddfX19fX19fX19fX19fX19fX19fX19LDg2OntsOnsxMDE6e2w6ezExNDp7bDp7MTE2OntsOnsxMDU6e2w6ezk5OntsOns5Nzp7bDp7MTA4OntsOns2Njp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6Wzg3NDBdfX19fX19fX19fX19fX19fX19fX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk3N119fX19fX19LDExNjp7bDp7MTA1OntsOnsxMDg6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbMjA5XX19LGM6WzIwOV19fX19fX19fX0sMTE3OntsOns1OTp7YzpbOTI1XX19fX19LDc5OntsOns2OTp7bDp7MTA4OntsOnsxMDU6e2w6ezEwMzp7bDp7NTk6e2M6WzMzOF19fX19fX19fX0sOTc6e2w6ezk5OntsOnsxMTc6e2w6ezExNjp7bDp7MTAxOntsOns1OTp7YzpbMjExXX19LGM6WzIxMV19fX19fX19fX0sOTk6e2w6ezEwNTp7bDp7MTE0OntsOns5OTp7bDp7NTk6e2M6WzIxMl19fSxjOlsyMTJdfX19fX0sMTIxOntsOns1OTp7YzpbMTA1NF19fX19fSwxMDA6e2w6ezk4OntsOnsxMDg6e2w6ezk3OntsOns5OTp7bDp7NTk6e2M6WzMzNl19fX19fX19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDA4Ml19fX19fSwxMDM6e2w6ezExNDp7bDp7OTc6e2w6ezExODp7bDp7MTAxOntsOns1OTp7YzpbMjEwXX19LGM6WzIxMF19fX19fX19fX0sMTA5OntsOns5Nzp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzMzMl19fX19fX19LDEwMTp7bDp7MTAzOntsOns5Nzp7bDp7NTk6e2M6WzkzN119fX19fX19LDEwNTp7bDp7OTk6e2w6ezExNDp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOls5MjddfX19fX19fX19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTM0XX19fX19fX0sMTEyOntsOnsxMDE6e2w6ezExMDp7bDp7Njc6e2w6ezExNzp7bDp7MTE0OntsOnsxMDg6e2w6ezEyMTp7bDp7Njg6e2w6ezExMTp7bDp7MTE3OntsOns5ODp7bDp7MTA4OntsOnsxMDE6e2w6ezgxOntsOnsxMTc6e2w6ezExMTp7bDp7MTE2OntsOnsxMDE6e2w6ezU5OntjOls4MjIwXX19fX19fX19fX19fX19fX19fX19fX19LDgxOntsOnsxMTc6e2w6ezExMTp7bDp7MTE2OntsOnsxMDE6e2w6ezU5OntjOls4MjE2XX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMTQ6e2w6ezU5OntjOlsxMDgzNl19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTE5OTc4XX19fX19LDEwODp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbMjE2XX19LGM6WzIxNl19fX19fX19fX0sMTE2OntsOnsxMDU6e2w6ezEwODp7bDp7MTAwOntsOnsxMDE6e2w6ezU5OntjOlsyMTNdfX0sYzpbMjEzXX19fX19LDEwOTp7bDp7MTAxOntsOnsxMTU6e2w6ezU5OntjOlsxMDgwN119fX19fX19fX19fSwxMTc6e2w6ezEwOTp7bDp7MTA4OntsOns1OTp7YzpbMjE0XX19LGM6WzIxNF19fX19fSwxMTg6e2w6ezEwMTp7bDp7MTE0OntsOns2Njp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzgyNTRdfX19fX0sMTE0OntsOns5Nzp7bDp7OTk6e2w6ezEwMTp7bDp7NTk6e2M6WzkxODJdfX19LDEwNzp7bDp7MTAxOntsOnsxMTY6e2w6ezU5OntjOls5MTQwXX19fX19fX19fX19fX19fSw4MDp7bDp7OTc6e2w6ezExNDp7bDp7MTAxOntsOnsxMTA6e2w6ezExNjp7bDp7MTA0OntsOnsxMDE6e2w6ezExNTp7bDp7MTA1OntsOnsxMTU6e2w6ezU5OntjOls5MTgwXX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sODA6e2w6ezk3OntsOnsxMTQ6e2w6ezExNjp7bDp7MTA1OntsOns5Nzp7bDp7MTA4OntsOns2ODp7bDp7NTk6e2M6Wzg3MDZdfX19fX19fX19fX19fX19LDk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDU1XX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDgzXX19fX19LDEwNDp7bDp7MTA1OntsOns1OTp7YzpbOTM0XX19fX19LDEwNTp7bDp7NTk6e2M6WzkyOF19fX0sMTA4OntsOnsxMTc6e2w6ezExNTp7bDp7Nzc6e2w6ezEwNTp7bDp7MTEwOntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6WzE3N119fX19fX19fX19fX19fX19fSwxMTE6e2w6ezEwNTp7bDp7MTEwOntsOns5OTp7bDp7OTc6e2w6ezExNDp7bDp7MTAxOntsOnsxMTI6e2w6ezEwODp7bDp7OTc6e2w6ezExMDp7bDp7MTAxOntsOns1OTp7YzpbODQ2MF19fX19fX19fX19fX19fX19fX19fX19fSwxMTI6e2w6ezEwMjp7bDp7NTk6e2M6Wzg0NzNdfX19fX19fSwxMTQ6e2w6ezU5OntjOlsxMDkzOV19LDEwMTp7bDp7OTk6e2w6ezEwMTp7bDp7MTAwOntsOnsxMDE6e2w6ezExNTp7bDp7NTk6e2M6Wzg4MjZdfSw2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOlsxMDkyN119fX19fX19fX19fSw4Mzp7bDp7MTA4OntsOns5Nzp7bDp7MTEwOntsOnsxMTY6e2w6ezY5OntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6Wzg4MjhdfX19fX19fX19fX19fX19fX19fX19LDg0OntsOnsxMDU6e2w6ezEwODp7bDp7MTAwOntsOnsxMDE6e2w6ezU5OntjOls4ODMwXX19fX19fX19fX19fX19fX19fX19fX19LDEwNTp7bDp7MTA5OntsOnsxMDE6e2w6ezU5OntjOls4MjQzXX19fX19fX0sMTExOntsOnsxMDA6e2w6ezExNzp7bDp7OTk6e2w6ezExNjp7bDp7NTk6e2M6Wzg3MTldfX19fX19fX19LDExMjp7bDp7MTExOntsOnsxMTQ6e2w6ezExNjp7bDp7MTA1OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6Wzg3NTldfSw5Nzp7bDp7MTA4OntsOns1OTp7YzpbODczM119fX19fX19fX19fX19fX19fX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOlsxMTk5NzldfX19fX0sMTA1OntsOns1OTp7YzpbOTM2XX19fX19fX0sODE6e2w6ezg1OntsOns3OTp7bDp7ODQ6e2w6ezU5OntjOlszNF19fSxjOlszNF19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDA4NF19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbODQ3NF19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk4MF19fX19fX19fX0sODI6e2w6ezY2OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDUxMl19fX19fX19fX0sNjk6e2w6ezcxOntsOns1OTp7YzpbMTc0XX19LGM6WzE3NF19fX0sOTc6e2w6ezk5OntsOnsxMTc6e2w6ezExNjp7bDp7MTAxOntsOns1OTp7YzpbMzQwXX19fX19fX19fSwxMTA6e2w6ezEwMzp7bDp7NTk6e2M6WzEwMjE5XX19fX19LDExNDp7bDp7MTE0OntsOns1OTp7YzpbODYwOF19LDExNjp7bDp7MTA4OntsOns1OTp7YzpbMTA1MThdfX19fX19fX19fX0sOTk6e2w6ezk3OntsOnsxMTQ6e2w6ezExMTp7bDp7MTEwOntsOns1OTp7YzpbMzQ0XX19fX19fX19fSwxMDE6e2w6ezEwMDp7bDp7MTA1OntsOnsxMDg6e2w6ezU5OntjOlszNDJdfX19fX19fX19LDEyMTp7bDp7NTk6e2M6WzEwNTZdfX19fX0sMTAxOntsOns1OTp7YzpbODQ3Nl19LDExODp7bDp7MTAxOntsOnsxMTQ6e2w6ezExNTp7bDp7MTAxOntsOns2OTp7bDp7MTA4OntsOnsxMDE6e2w6ezEwOTp7bDp7MTAxOntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6Wzg3MTVdfX19fX19fX19fX19fSwxMTM6e2w6ezExNzp7bDp7MTA1OntsOnsxMDg6e2w6ezEwNTp7bDp7OTg6e2w6ezExNDp7bDp7MTA1OntsOnsxMTc6e2w6ezEwOTp7bDp7NTk6e2M6Wzg2NTFdfX19fX19fX19fX19fX19fX19fX19fX0sODU6e2w6ezExMjp7bDp7Njk6e2w6ezExMzp7bDp7MTE3OntsOnsxMDU6e2w6ezEwODp7bDp7MTA1OntsOns5ODp7bDp7MTE0OntsOnsxMDU6e2w6ezExNzp7bDp7MTA5OntsOns1OTp7YzpbMTA2MDddfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbODQ3Nl19fX19fSwxMDQ6e2w6ezExMTp7bDp7NTk6e2M6WzkyOV19fX19fSwxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezY1OntsOnsxMTA6e2w6ezEwMzp7bDp7MTA4OntsOnsxMDE6e2w6ezY2OntsOnsxMTQ6e2w6ezk3OntsOns5OTp7bDp7MTA3OntsOnsxMDE6e2w6ezExNjp7bDp7NTk6e2M6WzEwMjE3XX19fX19fX19fX19fX19fX19fX19fX19LDExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg1OTRdfSw2Njp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NzddfX19fX19fSw3Njp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NDRdfX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sNjc6e2w6ezEwMTp7bDp7MTA1OntsOnsxMDg6e2w6ezEwNTp7bDp7MTEwOntsOnsxMDM6e2w6ezU5OntjOls4OTY5XX19fX19fX19fX19fX19fSw2ODp7bDp7MTExOntsOnsxMTc6e2w6ezk4OntsOnsxMDg6e2w6ezEwMTp7bDp7NjY6e2w6ezExNDp7bDp7OTc6e2w6ezk5OntsOnsxMDc6e2w6ezEwMTp7bDp7MTE2OntsOns1OTp7YzpbMTAyMTVdfX19fX19fX19fX19fX19fX19fX19fX0sMTE5OntsOnsxMTA6e2w6ezg0OntsOnsxMDE6e2w6ezEwMTp7bDp7ODY6e2w6ezEwMTp7bDp7OTk6e2w6ezExNjp7bDp7MTExOntsOnsxMTQ6e2w6ezU5OntjOlsxMDU4OV19fX19fX19fX19fX19fX19fX19LDg2OntsOnsxMDE6e2w6ezk5OntsOnsxMTY6e2w6ezExMTp7bDp7MTE0OntsOns1OTp7YzpbODY0Ml19LDY2OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA1ODFdfX19fX19fX19fX19fX19fX19fX19fX19fX19LDcwOntsOnsxMDg6e2w6ezExMTp7bDp7MTExOntsOnsxMTQ6e2w6ezU5OntjOls4OTcxXX19fX19fX19fX19LDg0OntsOnsxMDE6e2w6ezEwMTp7bDp7NTk6e2M6Wzg4NjZdfSw2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODYxNF19fX19fX19fX19fSw4Njp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOnsxMTE6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTg3XX19fX19fX19fX19fX19fX19LDExNDp7bDp7MTA1OntsOns5Nzp7bDp7MTEwOntsOnsxMDM6e2w6ezEwODp7bDp7MTAxOntsOns1OTp7YzpbODg4M119LDY2OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA3MDRdfX19fX19fSw2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4ODg1XX19fX19fX19fX19fX19fX19fX19fX19fX19fSw4NTp7bDp7MTEyOntsOns2ODp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7ODY6e2w6ezEwMTp7bDp7OTk6e2w6ezExNjp7bDp7MTExOntsOnsxMTQ6e2w6ezU5OntjOlsxMDU3NV19fX19fX19fX19fX19fX19fX19fX0sODQ6e2w6ezEwMTp7bDp7MTAxOntsOns4Njp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOnsxMTE6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTg4XX19fX19fX19fX19fX19fX19fX0sODY6e2w6ezEwMTp7bDp7OTk6e2w6ezExNjp7bDp7MTExOntsOnsxMTQ6e2w6ezU5OntjOls4NjM4XX0sNjY6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDU4MF19fX19fX19fX19fX19fX19fX19fX19fSw4Njp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOnsxMTE6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NDBdfSw2Njp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTc5XX19fX19fX19fX19fX19fX19fX0sOTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NThdfX19fX19fX19fX19fX19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbODQ3N119fX19fSwxMTc6e2w6ezExMDp7bDp7MTAwOntsOns3Mzp7bDp7MTA5OntsOnsxMTI6e2w6ezEwODp7bDp7MTA1OntsOnsxMDE6e2w6ezExNTp7bDp7NTk6e2M6WzEwNjA4XX19fX19fX19fX19fX19fX19fX19fX19LDExNDp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODY2N119fX19fX19fX19fX19fX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbODQ3NV19fX19fSwxMDQ6e2w6ezU5OntjOls4NjI1XX19fX19LDExNzp7bDp7MTA4OntsOnsxMDE6e2w6ezY4OntsOnsxMDE6e2w6ezEwODp7bDp7OTc6e2w6ezEyMTp7bDp7MTAxOntsOnsxMDA6e2w6ezU5OntjOlsxMDc0MF19fX19fX19fX19fX19fX19fX19fX19fSw4Mzp7bDp7NzI6e2w6ezY3OntsOns3Mjp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzEwNjVdfX19fX19fX19LDk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDY0XX19fX19fX0sNzk6e2w6ezcwOntsOns4NDp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzEwNjhdfX19fX19fX19fX0sOTc6e2w6ezk5OntsOnsxMTc6e2w6ezExNjp7bDp7MTAxOntsOns1OTp7YzpbMzQ2XX19fX19fX19fX19LDk5OntsOns1OTp7YzpbMTA5NDBdfSw5Nzp7bDp7MTE0OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzM1Ml19fX19fX19fX0sMTAxOntsOnsxMDA6e2w6ezEwNTp7bDp7MTA4OntsOns1OTp7YzpbMzUwXX19fX19fX19fSwxMDU6e2w6ezExNDp7bDp7OTk6e2w6ezU5OntjOlszNDhdfX19fX19fSwxMjE6e2w6ezU5OntjOlsxMDU3XX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDg2XX19fX19LDEwNDp7bDp7MTExOntsOnsxMTQ6e2w6ezExNjp7bDp7Njg6e2w6ezExMTp7bDp7MTE5OntsOnsxMTA6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NTk1XX19fX19fX19fX19fX19fX19fX0sNzY6e2w6ezEwMTp7bDp7MTAyOntsOnsxMTY6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NTkyXX19fX19fX19fX19fX19fX19fX0sODI6e2w6ezEwNTp7bDp7MTAzOntsOnsxMDQ6e2w6ezExNjp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg1OTRdfX19fX19fX19fX19fX19fX19fX19LDg1OntsOnsxMTI6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NTkzXX19fX19fX19fX19fX19fX19fX19fX19LDEwNTp7bDp7MTAzOntsOnsxMDk6e2w6ezk3OntsOns1OTp7YzpbOTMxXX19fX19fX19fSwxMDk6e2w6ezk3OntsOnsxMDg6e2w6ezEwODp7bDp7Njc6e2w6ezEwNTp7bDp7MTE0OntsOns5OTp7bDp7MTA4OntsOnsxMDE6e2w6ezU5OntjOls4NzI4XX19fX19fX19fX19fX19fX19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTM4XX19fX19fX0sMTEzOntsOnsxMTQ6e2w6ezExNjp7bDp7NTk6e2M6Wzg3MzBdfX19fX0sMTE3OntsOns5Nzp7bDp7MTE0OntsOnsxMDE6e2w6ezU5OntjOls5NjMzXX0sNzM6e2w6ezExMDp7bDp7MTE2OntsOnsxMDE6e2w6ezExNDp7bDp7MTE1OntsOnsxMDE6e2w6ezk5OntsOnsxMTY6e2w6ezEwNTp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOls4ODUxXX19fX19fX19fX19fX19fX19fX19fX19fX0sODM6e2w6ezExNzp7bDp7OTg6e2w6ezExNTp7bDp7MTAxOntsOnsxMTY6e2w6ezU5OntjOls4ODQ3XX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODg0OV19fX19fX19fX19fX19fX19fX19LDExMjp7bDp7MTAxOntsOnsxMTQ6e2w6ezExNTp7bDp7MTAxOntsOnsxMTY6e2w6ezU5OntjOls4ODQ4XX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODg1MF19fX19fX19fX19fX19fX19fX19fX19fX19fX0sODU6e2w6ezExMDp7bDp7MTA1OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6Wzg4NTJdfX19fX19fX19fX19fX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk4Ml19fX19fX19LDExNjp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6Wzg5MDJdfX19fX19fSwxMTc6e2w6ezk4OntsOns1OTp7YzpbODkxMl19LDExNTp7bDp7MTAxOntsOnsxMTY6e2w6ezU5OntjOls4OTEyXX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODgzOF19fX19fX19fX19fX19fX19fX19LDk5OntsOns5OTp7bDp7MTAxOntsOnsxMDE6e2w6ezEwMDp7bDp7MTE1OntsOns1OTp7YzpbODgyN119LDY5OntsOnsxMTM6e2w6ezExNzp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6WzEwOTI4XX19fX19fX19fX19LDgzOntsOnsxMDg6e2w6ezk3OntsOnsxMTA6e2w6ezExNjp7bDp7Njk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODgyOV19fX19fX19fX19fX19fX19fX19fX0sODQ6e2w6ezEwNTp7bDp7MTA4OntsOnsxMDA6e2w6ezEwMTp7bDp7NTk6e2M6Wzg4MzFdfX19fX19fX19fX19fX19fX19fX19LDEwNDp7bDp7ODQ6e2w6ezEwNDp7bDp7OTc6e2w6ezExNjp7bDp7NTk6e2M6Wzg3MTVdfX19fX19fX19fX19fSwxMDk6e2w6ezU5OntjOls4NzIxXX19fSwxMTI6e2w6ezU5OntjOls4OTEzXX0sMTAxOntsOnsxMTQ6e2w6ezExNTp7bDp7MTAxOntsOnsxMTY6e2w6ezU5OntjOls4ODM1XX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODgzOV19fX19fX19fX19fX19fX19fX19fX0sMTE1OntsOnsxMDE6e2w6ezExNjp7bDp7NTk6e2M6Wzg5MTNdfX19fX19fX19fX19fSw4NDp7bDp7NzI6e2w6ezc5OntsOns4Mjp7bDp7Nzg6e2w6ezU5OntjOlsyMjJdfX0sYzpbMjIyXX19fX19fX0sODI6e2w6ezY1OntsOns2ODp7bDp7Njk6e2w6ezU5OntjOls4NDgyXX19fX19fX19fSw4Mzp7bDp7NzI6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDM1XX19fX19fX0sOTk6e2w6ezEyMTp7bDp7NTk6e2M6WzEwNjJdfX19fX19fSw5Nzp7bDp7OTg6e2w6ezU5OntjOls5XX19fSwxMTc6e2w6ezU5OntjOls5MzJdfX19fX0sOTk6e2w6ezk3OntsOnsxMTQ6e2w6ezExMTp7bDp7MTEwOntsOns1OTp7YzpbMzU2XX19fX19fX19fSwxMDE6e2w6ezEwMDp7bDp7MTA1OntsOnsxMDg6e2w6ezU5OntjOlszNTRdfX19fX19fX19LDEyMTp7bDp7NTk6e2M6WzEwNThdfX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwODddfX19fX0sMTA0OntsOnsxMDE6e2w6ezExNDp7bDp7MTAxOntsOnsxMDI6e2w6ezExMTp7bDp7MTE0OntsOnsxMDE6e2w6ezU5OntjOls4NzU2XX19fX19fX19fX19fX0sMTE2OntsOns5Nzp7bDp7NTk6e2M6WzkyMF19fX19fX19LDEwNTp7bDp7OTk6e2w6ezEwNzp7bDp7ODM6e2w6ezExMjp7bDp7OTc6e2w6ezk5OntsOnsxMDE6e2w6ezU5OntjOls4Mjg3LDgyMDJdfX19fX19fX19fX19fX19LDExMDp7bDp7ODM6e2w6ezExMjp7bDp7OTc6e2w6ezk5OntsOnsxMDE6e2w6ezU5OntjOls4MjAxXX19fX19fX19fX19fX19fX19LDEwNTp7bDp7MTA4OntsOnsxMDA6e2w6ezEwMTp7bDp7NTk6e2M6Wzg3NjRdfSw2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4NzcxXX19fX19fX19fX19LDcwOntsOnsxMTc6e2w6ezEwODp7bDp7MTA4OntsOns2OTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4NzczXX19fX19fX19fX19fX19fX19fX0sODQ6e2w6ezEwNTp7bDp7MTA4OntsOnsxMDA6e2w6ezEwMTp7bDp7NTk6e2M6Wzg3NzZdfX19fX19fX19fX19fX19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTM5XX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezExMjp7bDp7MTA4OntsOnsxMDE6e2w6ezY4OntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg0MTFdfX19fX19fX19fX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTE5OTgzXX19fX19LDExNjp7bDp7MTE0OntsOnsxMTE6e2w6ezEwNzp7bDp7NTk6e2M6WzM1OF19fX19fX19fX19fX19LDg1OntsOns5Nzp7bDp7OTk6e2w6ezExNzp7bDp7MTE2OntsOnsxMDE6e2w6ezU5OntjOlsyMThdfX0sYzpbMjE4XX19fX19fX0sMTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjA3XX0sMTExOntsOns5OTp7bDp7MTA1OntsOnsxMTQ6e2w6ezU5OntjOlsxMDU2OV19fX19fX19fX19fX19fX0sOTg6e2w6ezExNDp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzEwMzhdfX19fX0sMTAxOntsOnsxMTg6e2w6ezEwMTp7bDp7NTk6e2M6WzM2NF19fX19fX19fX19fSw5OTp7bDp7MTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbMjE5XX19LGM6WzIxOV19fX19fSwxMjE6e2w6ezU5OntjOlsxMDU5XX19fX19LDEwMDp7bDp7OTg6e2w6ezEwODp7bDp7OTc6e2w6ezk5OntsOns1OTp7YzpbMzY4XX19fX19fX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDg4XX19fX19LDEwMzp7bDp7MTE0OntsOns5Nzp7bDp7MTE4OntsOnsxMDE6e2w6ezU5OntjOlsyMTddfX0sYzpbMjE3XX19fX19fX19fSwxMDk6e2w6ezk3OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMzYyXX19fX19fX19fSwxMTA6e2w6ezEwMDp7bDp7MTAxOntsOnsxMTQ6e2w6ezY2OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbOTVdfX19fX0sMTE0OntsOns5Nzp7bDp7OTk6e2w6ezEwMTp7bDp7NTk6e2M6WzkxODNdfX19LDEwNzp7bDp7MTAxOntsOnsxMTY6e2w6ezU5OntjOls5MTQxXX19fX19fX19fX19fX19fSw4MDp7bDp7OTc6e2w6ezExNDp7bDp7MTAxOntsOnsxMTA6e2w6ezExNjp7bDp7MTA0OntsOnsxMDE6e2w6ezExNTp7bDp7MTA1OntsOnsxMTU6e2w6ezU5OntjOls5MTgxXX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDEwNTp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOls4ODk5XX0sODA6e2w6ezEwODp7bDp7MTE3OntsOnsxMTU6e2w6ezU5OntjOls4ODQ2XX19fX19fX19fX19fX19fX19LDExMTp7bDp7MTAzOntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzM3MF19fX19fX19LDExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTQwXX19fX19fX0sMTEyOntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODU5M119LDY2OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA1MTRdfX19fX19fSw2ODp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NDVdfX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sNjg6e2w6ezExMTp7bDp7MTE5OntsOnsxMTA6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NTk3XX19fX19fX19fX19fX19fX19fX0sNjk6e2w6ezExMzp7bDp7MTE3OntsOnsxMDU6e2w6ezEwODp7bDp7MTA1OntsOns5ODp7bDp7MTE0OntsOnsxMDU6e2w6ezExNzp7bDp7MTA5OntsOns1OTp7YzpbMTA2MDZdfX19fX19fX19fX19fX19fX19fX19fX0sODQ6e2w6ezEwMTp7bDp7MTAxOntsOns1OTp7YzpbODg2OV19LDY1OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjEzXX19fX19fX19fX19fX19fX19LDk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjU3XX19fX19fX19fX19LDEwMDp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NjFdfX19fX19fX19fX19fX19fX19fSwxMTI6e2w6ezEwMTp7bDp7MTE0OntsOns3Njp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg1OThdfX19fX19fX19fX19fX19fX19fSw4Mjp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODU5OV19fX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE1OntsOnsxMDU6e2w6ezU5OntjOls5NzhdfSwxMDg6e2w6ezExMTp7bDp7MTEwOntsOns1OTp7YzpbOTMzXX19fX19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezExMDp7bDp7MTAzOntsOns1OTp7YzpbMzY2XX19fX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOlsxMTk5ODRdfX19fX19fSwxMTY6e2w6ezEwNTp7bDp7MTA4OntsOnsxMDA6e2w6ezEwMTp7bDp7NTk6e2M6WzM2MF19fX19fX19fX19fSwxMTc6e2w6ezEwOTp7bDp7MTA4OntsOns1OTp7YzpbMjIwXX19LGM6WzIyMF19fX19fX19LDg2OntsOns2ODp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbODg3NV19fX19fX19fX0sOTg6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDk4N119fX19fX19LDk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDQyXX19fX19LDEwMDp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbODg3M119LDEwODp7bDp7NTk6e2M6WzEwOTgyXX19fX19fX19fX19LDEwMTp7bDp7MTAxOntsOns1OTp7YzpbODg5N119fX0sMTE0OntsOns5ODp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzgyMTRdfX19fX19fSwxMTY6e2w6ezU5OntjOls4MjE0XX0sMTA1OntsOns5OTp7bDp7OTc6e2w6ezEwODp7bDp7NjY6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOls4NzM5XX19fX19fX0sNzY6e2w6ezEwNTp7bDp7MTEwOntsOnsxMDE6e2w6ezU5OntjOlsxMjRdfX19fX19fX19LDgzOntsOnsxMDE6e2w6ezExMjp7bDp7OTc6e2w6ezExNDp7bDp7OTc6e2w6ezExNjp7bDp7MTExOntsOnsxMTQ6e2w6ezU5OntjOlsxMDA3Ml19fX19fX19fX19fX19fX19fX19LDg0OntsOnsxMDU6e2w6ezEwODp7bDp7MTAwOntsOnsxMDE6e2w6ezU5OntjOls4NzY4XX19fX19fX19fX19fX19fX19fX19fSwxMjE6e2w6ezg0OntsOnsxMDQ6e2w6ezEwNTp7bDp7MTEwOntsOns4Mzp7bDp7MTEyOntsOns5Nzp7bDp7OTk6e2w6ezEwMTp7bDp7NTk6e2M6WzgyMDJdfX19fX19fX19fX19fX19fX19fX19fX19fSwxMDI6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDA4OV19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTQxXX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTE5OTg1XX19fX19fX0sMTE4OntsOnsxMDA6e2w6ezk3OntsOnsxMTU6e2w6ezEwNDp7bDp7NTk6e2M6Wzg4NzRdfX19fX19fX19fX19fSw4Nzp7bDp7OTk6e2w6ezEwNTp7bDp7MTE0OntsOns5OTp7bDp7NTk6e2M6WzM3Ml19fX19fX19fX0sMTAxOntsOnsxMDA6e2w6ezEwMzp7bDp7MTAxOntsOns1OTp7YzpbODg5Nl19fX19fX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwOTBdfX19fX0sMTExOntsOnsxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDE0Ml19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk4Nl19fX19fX19fX0sODg6e2w6ezEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDkxXX19fX19LDEwNTp7bDp7NTk6e2M6WzkyNl19fX0sMTExOntsOnsxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDE0M119fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk4N119fX19fX19fX0sODk6e2w6ezY1OntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTA3MV19fX19fX19LDczOntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTAzMV19fX19fX19LDg1OntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTA3MF19fX19fX19LDk3OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzIyMV19fSxjOlsyMjFdfX19fX19fX19LDk5OntsOnsxMDU6e2w6ezExNDp7bDp7OTk6e2w6ezU5OntjOlszNzRdfX19fX19fSwxMjE6e2w6ezU5OntjOlsxMDY3XX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDkyXX19fX19LDExMTp7bDp7MTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNDRdfX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOlsxMTk5ODhdfX19fX19fSwxMTc6e2w6ezEwOTp7bDp7MTA4OntsOns1OTp7YzpbMzc2XX19fX19fX19fSw5MDp7bDp7NzI6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDQ2XX19fX19fX0sOTc6e2w6ezk5OntsOnsxMTc6e2w6ezExNjp7bDp7MTAxOntsOns1OTp7YzpbMzc3XX19fX19fX19fX19LDk5OntsOns5Nzp7bDp7MTE0OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzM4MV19fX19fX19fX0sMTIxOntsOns1OTp7YzpbMTA0N119fX19fSwxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMzc5XX19fX19fX0sMTAxOntsOnsxMTQ6e2w6ezExMTp7bDp7ODc6e2w6ezEwNTp7bDp7MTAwOntsOnsxMTY6e2w6ezEwNDp7bDp7ODM6e2w6ezExMjp7bDp7OTc6e2w6ezk5OntsOnsxMDE6e2w6ezU5OntjOls4MjAzXX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE2OntsOns5Nzp7bDp7NTk6e2M6WzkxOF19fX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbODQ4OF19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbODQ4NF19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk4OV19fX19fX19fX0sOTc6e2w6ezk3OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzIyNV19fSxjOlsyMjVdfX19fX19fX19LDk4OntsOnsxMTQ6e2w6ezEwMTp7bDp7MTE4OntsOnsxMDE6e2w6ezU5OntjOlsyNTldfX19fX19fX19fX0sOTk6e2w6ezU5OntjOls4NzY2XX0sNjk6e2w6ezU5OntjOls4NzY2LDgxOV19fX0sMTAwOntsOns1OTp7YzpbODc2N119fX0sMTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbMjI2XX19LGM6WzIyNl19fX19fSwxMTc6e2w6ezExNjp7bDp7MTAxOntsOns1OTp7YzpbMTgwXX19LGM6WzE4MF19fX19fSwxMjE6e2w6ezU5OntjOlsxMDcyXX19fX19LDEwMTp7bDp7MTA4OntsOnsxMDU6e2w6ezEwMzp7bDp7NTk6e2M6WzIzMF19fSxjOlsyMzBdfX19fX19fSwxMDI6e2w6ezU5OntjOls4Mjg5XX0sMTE0OntsOns1OTp7YzpbMTIwMDk0XX19fX19LDEwMzp7bDp7MTE0OntsOns5Nzp7bDp7MTE4OntsOnsxMDE6e2w6ezU5OntjOlsyMjRdfX0sYzpbMjI0XX19fX19fX19fSwxMDg6e2w6ezEwMTp7bDp7MTAyOntsOnsxMTU6e2w6ezEyMTp7bDp7MTA5OntsOns1OTp7YzpbODUwMV19fX19fX19fX0sMTEyOntsOnsxMDQ6e2w6ezU5OntjOls4NTAxXX19fX19fX0sMTEyOntsOnsxMDQ6e2w6ezk3OntsOns1OTp7YzpbOTQ1XX19fX19fX19fSwxMDk6e2w6ezk3OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMjU3XX19fX19LDEwODp7bDp7MTAzOntsOns1OTp7YzpbMTA4MTVdfX19fX19fSwxMTI6e2w6ezU5OntjOlszOF19fSxjOlszOF19fX0sMTEwOntsOnsxMDA6e2w6ezU5OntjOls4NzQzXX0sOTc6e2w6ezExMDp7bDp7MTAwOntsOns1OTp7YzpbMTA4MzddfX19fX19fSwxMDA6e2w6ezU5OntjOlsxMDg0NF19fX0sMTE1OntsOnsxMDg6e2w6ezExMTp7bDp7MTEyOntsOnsxMDE6e2w6ezU5OntjOlsxMDg0MF19fX19fX19fX19fSwxMTg6e2w6ezU5OntjOlsxMDg0Ml19fX19fSwxMDM6e2w6ezU5OntjOls4NzM2XX0sMTAxOntsOns1OTp7YzpbMTA2NjBdfX19LDEwODp7bDp7MTAxOntsOns1OTp7YzpbODczNl19fX19fSwxMDk6e2w6ezExNTp7bDp7MTAwOntsOns1OTp7YzpbODczN119LDk3OntsOns5Nzp7bDp7NTk6e2M6WzEwNjY0XX19fSw5ODp7bDp7NTk6e2M6WzEwNjY1XX19fSw5OTp7bDp7NTk6e2M6WzEwNjY2XX19fSwxMDA6e2w6ezU5OntjOlsxMDY2N119fX0sMTAxOntsOns1OTp7YzpbMTA2NjhdfX19LDEwMjp7bDp7NTk6e2M6WzEwNjY5XX19fSwxMDM6e2w6ezU5OntjOlsxMDY3MF19fX0sMTA0OntsOns1OTp7YzpbMTA2NzFdfX19fX19fX19fX0sMTE0OntsOnsxMTY6e2w6ezU5OntjOls4NzM1XX0sMTE4OntsOns5ODp7bDp7NTk6e2M6Wzg4OTRdfSwxMDA6e2w6ezU5OntjOlsxMDY1M119fX19fX19fX19fSwxMTU6e2w6ezExMjp7bDp7MTA0OntsOns1OTp7YzpbODczOF19fX19fSwxMTY6e2w6ezU5OntjOlsxOTddfX19fX0sMTIyOntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls5MDg0XX19fX19fX19fX19fX0sMTExOntsOnsxMDM6e2w6ezExMTp7bDp7MTEwOntsOns1OTp7YzpbMjYxXX19fX19fX0sMTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNDZdfX19fX19fSwxMTI6e2w6ezU5OntjOls4Nzc2XX0sNjk6e2w6ezU5OntjOlsxMDg2NF19fX0sOTc6e2w6ezk5OntsOnsxMDU6e2w6ezExNDp7bDp7NTk6e2M6WzEwODYzXX19fX19fX19fSwxMDE6e2w6ezU5OntjOls4Nzc4XX19fSwxMDU6e2w6ezEwMDp7bDp7NTk6e2M6Wzg3NzldfX19fX0sMTExOntsOnsxMTU6e2w6ezU5OntjOlszOV19fX19fSwxMTI6e2w6ezExNDp7bDp7MTExOntsOnsxMjA6e2w6ezU5OntjOls4Nzc2XX0sMTAxOntsOnsxMTM6e2w6ezU5OntjOls4Nzc4XX19fX19fX19fX19fX19fSwxMTQ6e2w6ezEwNTp7bDp7MTEwOntsOnsxMDM6e2w6ezU5OntjOlsyMjldfX0sYzpbMjI5XX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTE5OTkwXX19fX19LDExNjp7bDp7NTk6e2M6WzQyXX19fSwxMjE6e2w6ezEwOTp7bDp7MTEyOntsOns1OTp7YzpbODc3Nl19LDEwMTp7bDp7MTEzOntsOns1OTp7YzpbODc4MV19fX19fX19fX19fX19LDExNjp7bDp7MTA1OntsOnsxMDg6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbMjI3XX19LGM6WzIyN119fX19fX19fX0sMTE3OntsOnsxMDk6e2w6ezEwODp7bDp7NTk6e2M6WzIyOF19fSxjOlsyMjhdfX19fX0sMTE5OntsOns5OTp7bDp7MTExOntsOnsxMTA6e2w6ezEwNTp7bDp7MTEwOntsOnsxMTY6e2w6ezU5OntjOls4NzU1XX19fX19fX19fX19fX0sMTA1OntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6WzEwNzY5XX19fX19fX19fX19LDk4OntsOns3ODp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOlsxMDk4OV19fX19fX19LDk3OntsOns5OTp7bDp7MTA3OntsOns5OTp7bDp7MTExOntsOnsxMTA6e2w6ezEwMzp7bDp7NTk6e2M6Wzg3ODBdfX19fX19fX19LDEwMTp7bDp7MTEyOntsOnsxMTU6e2w6ezEwNTp7bDp7MTA4OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzEwMTRdfX19fX19fX19fX19fX19LDExMjp7bDp7MTE0OntsOnsxMDU6e2w6ezEwOTp7bDp7MTAxOntsOns1OTp7YzpbODI0NV19fX19fX19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTA5OntsOns1OTp7YzpbODc2NV19LDEwMTp7bDp7MTEzOntsOns1OTp7YzpbODkwOV19fX19fX19fX19fX19fX0sMTE0OntsOnsxMTg6e2w6ezEwMTp7bDp7MTAxOntsOns1OTp7YzpbODg5M119fX19fX19LDExOTp7bDp7MTAxOntsOnsxMDA6e2w6ezU5OntjOls4OTY1XX0sMTAzOntsOnsxMDE6e2w6ezU5OntjOls4OTY1XX19fX19fX19fX19fX19fSw5ODp7bDp7MTE0OntsOnsxMDc6e2w6ezU5OntjOls5MTQxXX0sMTE2OntsOns5ODp7bDp7MTE0OntsOnsxMDc6e2w6ezU5OntjOls5MTQyXX19fX19fX19fX19fX19fSw5OTp7bDp7MTExOntsOnsxMTA6e2w6ezEwMzp7bDp7NTk6e2M6Wzg3ODBdfX19fX19fSwxMjE6e2w6ezU5OntjOlsxMDczXX19fX19LDEwMDp7bDp7MTEzOntsOnsxMTc6e2w6ezExMTp7bDp7NTk6e2M6WzgyMjJdfX19fX19fX19LDEwMTp7bDp7OTk6e2w6ezk3OntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6Wzg3NTddfSwxMDE6e2w6ezU5OntjOls4NzU3XX19fX19fX19fX19LDEwOTp7bDp7MTEyOntsOnsxMTY6e2w6ezEyMTp7bDp7MTE4OntsOns1OTp7YzpbMTA2NzJdfX19fX19fX19fX0sMTEyOntsOnsxMTU6e2w6ezEwNTp7bDp7NTk6e2M6WzEwMTRdfX19fX19fSwxMTQ6e2w6ezExMDp7bDp7MTExOntsOnsxMTc6e2w6ezU5OntjOls4NDkyXX19fX19fX19fSwxMTY6e2w6ezk3OntsOns1OTp7YzpbOTQ2XX19fSwxMDQ6e2w6ezU5OntjOls4NTAyXX19fSwxMTk6e2w6ezEwMTp7bDp7MTAxOntsOnsxMTA6e2w6ezU5OntjOls4ODEyXX19fX19fX19fX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwOTVdfX19fX0sMTA1OntsOnsxMDM6e2w6ezk5OntsOns5Nzp7bDp7MTEyOntsOns1OTp7YzpbODg5OF19fX19fSwxMDU6e2w6ezExNDp7bDp7OTk6e2w6ezU5OntjOls5NzExXX19fX19fX0sMTE3OntsOnsxMTI6e2w6ezU5OntjOls4ODk5XX19fX19fX0sMTExOntsOnsxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMTA3NTJdfX19fX19fSwxMTI6e2w6ezEwODp7bDp7MTE3OntsOnsxMTU6e2w6ezU5OntjOlsxMDc1M119fX19fX19fX0sMTE2OntsOnsxMDU6e2w6ezEwOTp7bDp7MTAxOntsOnsxMTU6e2w6ezU5OntjOlsxMDc1NF19fX19fX19fX19fX19LDExNTp7bDp7MTEzOntsOns5OTp7bDp7MTE3OntsOnsxMTI6e2w6ezU5OntjOlsxMDc1OF19fX19fX19fX0sMTE2OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbOTczM119fX19fX19fX0sMTE2OntsOnsxMTQ6e2w6ezEwNTp7bDp7OTc6e2w6ezExMDp7bDp7MTAzOntsOnsxMDg6e2w6ezEwMTp7bDp7MTAwOntsOnsxMTE6e2w6ezExOTp7bDp7MTEwOntsOns1OTp7YzpbOTY2MV19fX19fX19fX0sMTE3OntsOnsxMTI6e2w6ezU5OntjOls5NjUxXX19fX19fX19fX19fX19fX19fX19fSwxMTc6e2w6ezExMjp7bDp7MTA4OntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6WzEwNzU2XX19fX19fX19fX19LDExODp7bDp7MTAxOntsOnsxMDE6e2w6ezU5OntjOls4ODk3XX19fX19fX0sMTE5OntsOnsxMDE6e2w6ezEwMDp7bDp7MTAzOntsOnsxMDE6e2w6ezU5OntjOls4ODk2XX19fX19fX19fX19fX19fSwxMDc6e2w6ezk3OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbMTA1MDldfX19fX19fX19fX0sMTA4OntsOns5Nzp7bDp7OTk6e2w6ezEwNzp7bDp7MTA4OntsOnsxMTE6e2w6ezEyMjp7bDp7MTAxOntsOnsxMTA6e2w6ezEwMzp7bDp7MTAxOntsOns1OTp7YzpbMTA3MzFdfX19fX19fX19fX19fX19LDExNTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMTQ6e2w6ezEwMTp7bDp7NTk6e2M6Wzk2NDJdfX19fX19fX19fX19fSwxMTY6e2w6ezExNDp7bDp7MTA1OntsOns5Nzp7bDp7MTEwOntsOnsxMDM6e2w6ezEwODp7bDp7MTAxOntsOns1OTp7YzpbOTY1Ml19LDEwMDp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7NTk6e2M6Wzk2NjJdfX19fX19fX19LDEwODp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7NTk6e2M6Wzk2NjZdfX19fX19fX19LDExNDp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns1OTp7YzpbOTY1Nl19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDExMDp7bDp7MTA3OntsOns1OTp7YzpbOTI1MV19fX19fX19LDEwNzp7bDp7NDk6e2w6ezUwOntsOns1OTp7YzpbOTYxOF19fX0sNTI6e2w6ezU5OntjOls5NjE3XX19fX19LDUxOntsOns1Mjp7bDp7NTk6e2M6Wzk2MTldfX19fX19fSwxMTE6e2w6ezk5OntsOnsxMDc6e2w6ezU5OntjOls5NjA4XX19fX19fX19fSwxMTA6e2w6ezEwMTp7bDp7NTk6e2M6WzYxLDg0MjFdfSwxMTM6e2w6ezExNzp7bDp7MTA1OntsOnsxMTg6e2w6ezU5OntjOls4ODAxLDg0MjFdfX19fX19fX19fX0sMTExOntsOnsxMTY6e2w6ezU5OntjOls4OTc2XX19fX19fX0sMTExOntsOnsxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDE0N119fX19fSwxMTY6e2w6ezU5OntjOls4ODY5XX0sMTE2OntsOnsxMTE6e2w6ezEwOTp7bDp7NTk6e2M6Wzg4NjldfX19fX19fX19LDExOTp7bDp7MTE2OntsOnsxMDU6e2w6ezEwMTp7bDp7NTk6e2M6Wzg5MDRdfX19fX19fX19LDEyMDp7bDp7Njg6e2w6ezc2OntsOns1OTp7YzpbOTU1OV19fX0sODI6e2w6ezU5OntjOls5NTU2XX19fSwxMDg6e2w6ezU5OntjOls5NTU4XX19fSwxMTQ6e2w6ezU5OntjOls5NTU1XX19fX19LDcyOntsOns1OTp7YzpbOTU1Ml19LDY4OntsOns1OTp7YzpbOTU3NF19fX0sODU6e2w6ezU5OntjOls5NTc3XX19fSwxMDA6e2w6ezU5OntjOls5NTcyXX19fSwxMTc6e2w6ezU5OntjOls5NTc1XX19fX19LDg1OntsOns3Njp7bDp7NTk6e2M6Wzk1NjVdfX19LDgyOntsOns1OTp7YzpbOTU2Ml19fX0sMTA4OntsOns1OTp7YzpbOTU2NF19fX0sMTE0OntsOns1OTp7YzpbOTU2MV19fX19fSw4Njp7bDp7NTk6e2M6Wzk1NTNdfSw3Mjp7bDp7NTk6e2M6Wzk1ODBdfX19LDc2OntsOns1OTp7YzpbOTU3MV19fX0sODI6e2w6ezU5OntjOls5NTY4XX19fSwxMDQ6e2w6ezU5OntjOls5NTc5XX19fSwxMDg6e2w6ezU5OntjOls5NTcwXX19fSwxMTQ6e2w6ezU5OntjOls5NTY3XX19fX19LDk4OntsOnsxMTE6e2w6ezEyMDp7bDp7NTk6e2M6WzEwNjk3XX19fX19fX0sMTAwOntsOns3Njp7bDp7NTk6e2M6Wzk1NTddfX19LDgyOntsOns1OTp7YzpbOTU1NF19fX0sMTA4OntsOns1OTp7YzpbOTQ4OF19fX0sMTE0OntsOns1OTp7YzpbOTQ4NF19fX19fSwxMDQ6e2w6ezU5OntjOls5NDcyXX0sNjg6e2w6ezU5OntjOls5NTczXX19fSw4NTp7bDp7NTk6e2M6Wzk1NzZdfX19LDEwMDp7bDp7NTk6e2M6Wzk1MTZdfX19LDExNzp7bDp7NTk6e2M6Wzk1MjRdfX19fX0sMTA5OntsOnsxMDU6e2w6ezExMDp7bDp7MTE3OntsOnsxMTU6e2w6ezU5OntjOls4ODYzXX19fX19fX19fX19LDExMjp7bDp7MTA4OntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6Wzg4NjJdfX19fX19fX19LDExNjp7bDp7MTA1OntsOnsxMDk6e2w6ezEwMTp7bDp7MTE1OntsOns1OTp7YzpbODg2NF19fX19fX19fX19fSwxMTc6e2w6ezc2OntsOns1OTp7YzpbOTU2M119fX0sODI6e2w6ezU5OntjOls5NTYwXX19fSwxMDg6e2w6ezU5OntjOls5NDk2XX19fSwxMTQ6e2w6ezU5OntjOls5NDkyXX19fX19LDExODp7bDp7NTk6e2M6Wzk0NzRdfSw3Mjp7bDp7NTk6e2M6Wzk1NzhdfX19LDc2OntsOns1OTp7YzpbOTU2OV19fX0sODI6e2w6ezU5OntjOls5NTY2XX19fSwxMDQ6e2w6ezU5OntjOls5NTMyXX19fSwxMDg6e2w6ezU5OntjOls5NTA4XX19fSwxMTQ6e2w6ezU5OntjOls5NTAwXX19fX19fX19fSwxMTI6e2w6ezExNDp7bDp7MTA1OntsOnsxMDk6e2w6ezEwMTp7bDp7NTk6e2M6WzgyNDVdfX19fX19fX19fX0sMTE0OntsOnsxMDE6e2w6ezExODp7bDp7MTAxOntsOns1OTp7YzpbNzI4XX19fX19fX0sMTE4OntsOns5ODp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzE2Nl19fSxjOlsxNjZdfX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk5MV19fX19fSwxMDE6e2w6ezEwOTp7bDp7MTA1OntsOns1OTp7YzpbODI3MV19fX19fX19LDEwNTp7bDp7MTA5OntsOns1OTp7YzpbODc2NV19LDEwMTp7bDp7NTk6e2M6Wzg5MDldfX19fX19fSwxMTE6e2w6ezEwODp7bDp7NTk6e2M6WzkyXX0sOTg6e2w6ezU5OntjOlsxMDY5M119fX0sMTA0OntsOnsxMTU6e2w6ezExNzp7bDp7OTg6e2w6ezU5OntjOlsxMDE4NF19fX19fX19fX19fX19fX0sMTE3OntsOnsxMDg6e2w6ezEwODp7bDp7NTk6e2M6WzgyMjZdfSwxMDE6e2w6ezExNjp7bDp7NTk6e2M6WzgyMjZdfX19fX19fX19LDEwOTp7bDp7MTEyOntsOns1OTp7YzpbODc4Ml19LDY5OntsOns1OTp7YzpbMTA5MjZdfX19LDEwMTp7bDp7NTk6e2M6Wzg3ODNdfSwxMTM6e2w6ezU5OntjOls4NzgzXX19fX19fX19fX19fX0sOTk6e2w6ezk3OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzI2M119fX19fX19fX0sMTEyOntsOns1OTp7YzpbODc0NV19LDk3OntsOnsxMTA6e2w6ezEwMDp7bDp7NTk6e2M6WzEwODIwXX19fX19fX0sOTg6e2w6ezExNDp7bDp7OTk6e2w6ezExNzp7bDp7MTEyOntsOns1OTp7YzpbMTA4MjVdfX19fX19fX19fX0sOTk6e2w6ezk3OntsOnsxMTI6e2w6ezU5OntjOlsxMDgyN119fX19fSwxMTc6e2w6ezExMjp7bDp7NTk6e2M6WzEwODIzXX19fX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzEwODE2XX19fX19fX0sMTE1OntsOns1OTp7YzpbODc0NSw2NTAyNF19fX19fSwxMTQ6e2w6ezEwMTp7bDp7MTE2OntsOns1OTp7YzpbODI1N119fX19fSwxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzcxMV19fX19fX19fX0sOTk6e2w6ezk3OntsOnsxMTI6e2w6ezExNTp7bDp7NTk6e2M6WzEwODI5XX19fX19LDExNDp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOlsyNjldfX19fX19fX19LDEwMTp7bDp7MTAwOntsOnsxMDU6e2w6ezEwODp7bDp7NTk6e2M6WzIzMV19fSxjOlsyMzFdfX19fX19fSwxMDU6e2w6ezExNDp7bDp7OTk6e2w6ezU5OntjOlsyNjVdfX19fX19fSwxMTc6e2w6ezExMjp7bDp7MTE1OntsOns1OTp7YzpbMTA4MjhdfSwxMTU6e2w6ezEwOTp7bDp7NTk6e2M6WzEwODMyXX19fX19fX19fX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzI2N119fX19fX19LDEwMTp7bDp7MTAwOntsOnsxMDU6e2w6ezEwODp7bDp7NTk6e2M6WzE4NF19fSxjOlsxODRdfX19fX0sMTA5OntsOnsxMTI6e2w6ezExNjp7bDp7MTIxOntsOnsxMTg6e2w6ezU5OntjOlsxMDY3NF19fX19fX19fX19fSwxMTA6e2w6ezExNjp7bDp7NTk6e2M6WzE2Ml19LDEwMTp7bDp7MTE0OntsOnsxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMTgzXX19fX19fX19fX19fSxjOlsxNjJdfX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwOTZdfX19fX0sMTA0OntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTA5NV19fX19fSwxMDE6e2w6ezk5OntsOnsxMDc6e2w6ezU5OntjOlsxMDAwM119LDEwOTp7bDp7OTc6e2w6ezExNDp7bDp7MTA3OntsOns1OTp7YzpbMTAwMDNdfX19fX19fX19fX19fX19LDEwNTp7bDp7NTk6e2M6Wzk2N119fX19fSwxMDU6e2w6ezExNDp7bDp7NTk6e2M6Wzk2NzVdfSw2OTp7bDp7NTk6e2M6WzEwNjkxXX19fSw5OTp7bDp7NTk6e2M6WzcxMF19LDEwMTp7bDp7MTEzOntsOns1OTp7YzpbODc5MV19fX19fSwxMDg6e2w6ezEwMTp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7MTA4OntsOnsxMDE6e2w6ezEwMjp7bDp7MTE2OntsOns1OTp7YzpbODYzNF19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezU5OntjOls4NjM1XX19fX19fX19fX19fX19fX19fX19fSwxMDA6e2w6ezgyOntsOns1OTp7YzpbMTc0XX19fSw4Mzp7bDp7NTk6e2M6Wzk0MTZdfX19LDk3OntsOnsxMTU6e2w6ezExNjp7bDp7NTk6e2M6Wzg4NTldfX19fX19fSw5OTp7bDp7MTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbODg1OF19fX19fX19fX0sMTAwOntsOns5Nzp7bDp7MTE1OntsOnsxMDQ6e2w6ezU5OntjOls4ODYxXX19fX19fX19fX19fX19fX19LDEwMTp7bDp7NTk6e2M6Wzg3OTFdfX19LDEwMjp7bDp7MTEwOntsOnsxMDU6e2w6ezExMDp7bDp7MTE2OntsOns1OTp7YzpbMTA3NjhdfX19fX19fX19fX0sMTA5OntsOnsxMDU6e2w6ezEwMDp7bDp7NTk6e2M6WzEwOTkxXX19fX19fX0sMTE1OntsOns5OTp7bDp7MTA1OntsOnsxMTQ6e2w6ezU5OntjOlsxMDY5MF19fX19fX19fX19fX19LDEwODp7bDp7MTE3OntsOns5ODp7bDp7MTE1OntsOns1OTp7YzpbOTgyN119LDExNzp7bDp7MTA1OntsOnsxMTY6e2w6ezU5OntjOls5ODI3XX19fX19fX19fX19fX19fSwxMTE6e2w6ezEwODp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOls1OF19LDEwMTp7bDp7NTk6e2M6Wzg3ODhdfSwxMTM6e2w6ezU5OntjOls4Nzg4XX19fX19fX19fX19LDEwOTp7bDp7MTA5OntsOns5Nzp7bDp7NTk6e2M6WzQ0XX0sMTE2OntsOns1OTp7YzpbNjRdfX19fX19fSwxMTI6e2w6ezU5OntjOls4NzA1XX0sMTAyOntsOnsxMTA6e2w6ezU5OntjOls4NzI4XX19fX19LDEwODp7bDp7MTAxOntsOnsxMDk6e2w6ezEwMTp7bDp7MTEwOntsOnsxMTY6e2w6ezU5OntjOls4NzA1XX19fX19fX19fSwxMjA6e2w6ezEwMTp7bDp7MTE1OntsOns1OTp7YzpbODQ1MF19fX19fX19fX19fX19fX0sMTEwOntsOnsxMDM6e2w6ezU5OntjOls4NzczXX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzEwODYxXX19fX19fX19fSwxMDU6e2w6ezExMDp7bDp7MTE2OntsOns1OTp7YzpbODc1MF19fX19fX19fX0sMTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNDhdfX19LDExNDp7bDp7MTExOntsOnsxMDA6e2w6ezU5OntjOls4NzIwXX19fX19fX0sMTIxOntsOns1OTp7YzpbMTY5XX0sMTE1OntsOnsxMTQ6e2w6ezU5OntjOls4NDcxXX19fX19fSxjOlsxNjldfX19fX0sMTE0OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjI5XX19fX19fX0sMTExOntsOnsxMTU6e2w6ezExNTp7bDp7NTk6e2M6WzEwMDA3XX19fX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOlsxMTk5OTJdfX19fX0sMTE3OntsOns5ODp7bDp7NTk6e2M6WzEwOTU5XX0sMTAxOntsOns1OTp7YzpbMTA5NjFdfX19fX0sMTEyOntsOns1OTp7YzpbMTA5NjBdfSwxMDE6e2w6ezU5OntjOlsxMDk2Ml19fX19fX19fX0sMTE2OntsOnsxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbODk0M119fX19fX19fX0sMTE3OntsOnsxMDA6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTA4OntsOns1OTp7YzpbMTA1NTJdfX19LDExNDp7bDp7NTk6e2M6WzEwNTQ5XX19fX19fX19fX19LDEwMTp7bDp7MTEyOntsOnsxMTQ6e2w6ezU5OntjOls4OTI2XX19fX19LDExNTp7bDp7OTk6e2w6ezU5OntjOls4OTI3XX19fX19fX0sMTA4OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjMwXX0sMTEyOntsOns1OTp7YzpbMTA1NTddfX19fX19fX19fX0sMTEyOntsOns1OTp7YzpbODc0Nl19LDk4OntsOnsxMTQ6e2w6ezk5OntsOns5Nzp7bDp7MTEyOntsOns1OTp7YzpbMTA4MjRdfX19fX19fX19fX0sOTk6e2w6ezk3OntsOnsxMTI6e2w6ezU5OntjOlsxMDgyMl19fX19fSwxMTc6e2w6ezExMjp7bDp7NTk6e2M6WzEwODI2XX19fX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg4NDVdfX19fX19fSwxMTE6e2w6ezExNDp7bDp7NTk6e2M6WzEwODIxXX19fX19LDExNTp7bDp7NTk6e2M6Wzg3NDYsNjUwMjRdfX19fX0sMTE0OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjMxXX0sMTA5OntsOns1OTp7YzpbMTA1NTZdfX19fX19fX19LDEwODp7bDp7MTIxOntsOnsxMDE6e2w6ezExMzp7bDp7MTEyOntsOnsxMTQ6e2w6ezEwMTp7bDp7OTk6e2w6ezU5OntjOls4OTI2XX19fX19fX19fSwxMTU6e2w6ezExNzp7bDp7OTk6e2w6ezk5OntsOns1OTp7YzpbODkyN119fX19fX19fX19fX19LDExODp7bDp7MTAxOntsOnsxMDE6e2w6ezU5OntjOls4OTEwXX19fX19fX0sMTE5OntsOnsxMDE6e2w6ezEwMDp7bDp7MTAzOntsOnsxMDE6e2w6ezU5OntjOls4OTExXX19fX19fX19fX19fX19fSwxMTQ6e2w6ezEwMTp7bDp7MTEwOntsOns1OTp7YzpbMTY0XX19LGM6WzE2NF19fX19fSwxMTg6e2w6ezEwMTp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7MTA4OntsOnsxMDE6e2w6ezEwMjp7bDp7MTE2OntsOns1OTp7YzpbODYzMF19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezU5OntjOls4NjMxXX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMTg6e2w6ezEwMTp7bDp7MTAxOntsOns1OTp7YzpbODkxMF19fX19fX19LDExOTp7bDp7MTAxOntsOnsxMDA6e2w6ezU5OntjOls4OTExXX19fX19fX19fSwxMTk6e2w6ezk5OntsOnsxMTE6e2w6ezExMDp7bDp7MTA1OntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6Wzg3NTRdfX19fX19fX19fX19fSwxMDU6e2w6ezExMDp7bDp7MTE2OntsOns1OTp7YzpbODc1M119fX19fX19fX0sMTIxOntsOnsxMDg6e2w6ezk5OntsOnsxMTY6e2w6ezEyMTp7bDp7NTk6e2M6WzkwMDVdfX19fX19fX19fX19fSwxMDA6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NTldfX19fX19fSw3Mjp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTk3XX19fX19fX0sOTc6e2w6ezEwMzp7bDp7MTAzOntsOnsxMDE6e2w6ezExNDp7bDp7NTk6e2M6WzgyMjRdfX19fX19fX19LDEwODp7bDp7MTAxOntsOnsxMTY6e2w6ezEwNDp7bDp7NTk6e2M6Wzg1MDRdfX19fX19fX19LDExNDp7bDp7MTE0OntsOns1OTp7YzpbODU5NV19fX19fSwxMTU6e2w6ezEwNDp7bDp7NTk6e2M6WzgyMDhdfSwxMTg6e2w6ezU5OntjOls4ODY3XX19fX19fX19fSw5ODp7bDp7MTA3OntsOns5Nzp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6WzEwNTExXX19fX19fX19fX19LDEwODp7bDp7OTc6e2w6ezk5OntsOns1OTp7YzpbNzMzXX19fX19fX19fSw5OTp7bDp7OTc6e2w6ezExNDp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOlsyNzFdfX19fX19fX19LDEyMTp7bDp7NTk6e2M6WzEwNzZdfX19fX0sMTAwOntsOns1OTp7YzpbODUxOF19LDk3OntsOnsxMDM6e2w6ezEwMzp7bDp7MTAxOntsOnsxMTQ6e2w6ezU5OntjOls4MjI1XX19fX19fX19fSwxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NTBdfX19fX19fSwxMTE6e2w6ezExNjp7bDp7MTE1OntsOnsxMDE6e2w6ezExMzp7bDp7NTk6e2M6WzEwODcxXX19fX19fX19fX19fX0sMTAxOntsOnsxMDM6e2w6ezU5OntjOlsxNzZdfX0sYzpbMTc2XX0sMTA4OntsOnsxMTY6e2w6ezk3OntsOns1OTp7YzpbOTQ4XX19fX19fX0sMTA5OntsOnsxMTI6e2w6ezExNjp7bDp7MTIxOntsOnsxMTg6e2w6ezU5OntjOlsxMDY3M119fX19fX19fX19fX19LDEwMjp7bDp7MTA1OntsOnsxMTU6e2w6ezEwNDp7bDp7MTE2OntsOns1OTp7YzpbMTA2MjNdfX19fX19fX19LDExNDp7bDp7NTk6e2M6WzEyMDA5N119fX19fSwxMDQ6e2w6ezk3OntsOnsxMTQ6e2w6ezEwODp7bDp7NTk6e2M6Wzg2NDNdfX19LDExNDp7bDp7NTk6e2M6Wzg2NDJdfX19fX19fX19LDEwNTp7bDp7OTc6e2w6ezEwOTp7bDp7NTk6e2M6Wzg5MDBdfSwxMTE6e2w6ezExMDp7bDp7MTAwOntsOns1OTp7YzpbODkwMF19LDExNTp7bDp7MTE3OntsOnsxMDU6e2w6ezExNjp7bDp7NTk6e2M6Wzk4MzBdfX19fX19fX19fX19fX19LDExNTp7bDp7NTk6e2M6Wzk4MzBdfX19fX19fSwxMDE6e2w6ezU5OntjOlsxNjhdfX19LDEwMzp7bDp7OTc6e2w6ezEwOTp7bDp7MTA5OntsOns5Nzp7bDp7NTk6e2M6Wzk4OV19fX19fX19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTEwOntsOns1OTp7YzpbODk0Nl19fX19fX19LDExODp7bDp7NTk6e2M6WzI0N119LDEwNTp7bDp7MTAwOntsOnsxMDE6e2w6ezU5OntjOlsyNDddfSwxMTE6e2w6ezExMDp7bDp7MTE2OntsOnsxMDU6e2w6ezEwOTp7bDp7MTAxOntsOnsxMTU6e2w6ezU5OntjOls4OTAzXX19fX19fX19fX19fX19fX0sYzpbMjQ3XX19fX19LDExMTp7bDp7MTEwOntsOnsxMjA6e2w6ezU5OntjOls4OTAzXX19fX19fX19fX19LDEwNjp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzExMDZdfX19fX19fSwxMDg6e2w6ezk5OntsOnsxMTE6e2w6ezExNDp7bDp7MTEwOntsOns1OTp7YzpbODk5MF19fX19fX19LDExNDp7bDp7MTExOntsOnsxMTI6e2w6ezU5OntjOls4OTczXX19fX19fX19fX19LDExMTp7bDp7MTA4OntsOnsxMDg6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlszNl19fX19fX19fX0sMTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNDldfX19fX0sMTE2OntsOns1OTp7YzpbNzI5XX0sMTAxOntsOnsxMTM6e2w6ezU5OntjOls4Nzg0XX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg3ODVdfX19fX19fX19fX0sMTA5OntsOnsxMDU6e2w6ezExMDp7bDp7MTE3OntsOnsxMTU6e2w6ezU5OntjOls4NzYwXX19fX19fX19fX19LDExMjp7bDp7MTA4OntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6Wzg3MjRdfX19fX19fX19LDExNTp7bDp7MTEzOntsOnsxMTc6e2w6ezk3OntsOnsxMTQ6e2w6ezEwMTp7bDp7NTk6e2M6Wzg4NjVdfX19fX19fX19fX19fX19LDExNzp7bDp7OTg6e2w6ezEwODp7bDp7MTAxOntsOns5ODp7bDp7OTc6e2w6ezExNDp7bDp7MTE5OntsOnsxMDE6e2w6ezEwMDp7bDp7MTAzOntsOnsxMDE6e2w6ezU5OntjOls4OTY2XX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE5OntsOnsxMTA6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NTk1XX19fX19fX19fX19LDEwMDp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7MTE1OntsOns1OTp7YzpbODY1MF19fX19fX19fX19fX19fX19fX19fX0sMTA0OntsOns5Nzp7bDp7MTE0OntsOnsxMTI6e2w6ezExMTp7bDp7MTExOntsOnsxMTA6e2w6ezEwODp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7NTk6e2M6Wzg2NDNdfX19fX19fX19LDExNDp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns1OTp7YzpbODY0Ml19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDExNDp7bDp7OTg6e2w6ezEwNzp7bDp7OTc6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOlsxMDUxMl19fX19fX19fX19fX19LDk5OntsOnsxMTE6e2w6ezExNDp7bDp7MTEwOntsOns1OTp7YzpbODk5MV19fX19fX19LDExNDp7bDp7MTExOntsOnsxMTI6e2w6ezU5OntjOls4OTcyXX19fX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk5M119fX0sMTIxOntsOns1OTp7YzpbMTEwOV19fX19fSwxMTE6e2w6ezEwODp7bDp7NTk6e2M6WzEwNzQyXX19fX19LDExNjp7bDp7MTE0OntsOnsxMTE6e2w6ezEwNzp7bDp7NTk6e2M6WzI3M119fX19fX19fX19fSwxMTY6e2w6ezEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOls4OTQ1XX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezU5OntjOls5NjYzXX0sMTAyOntsOns1OTp7YzpbOTY2Ml19fX19fX19fX0sMTE3OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjkzXX19fX19fX0sMTA0OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA2MDddfX19fX19fX19LDExOTp7bDp7OTc6e2w6ezExMDp7bDp7MTAzOntsOnsxMDg6e2w6ezEwMTp7bDp7NTk6e2M6WzEwNjYyXX19fX19fX19fX19fX0sMTIyOntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTExOV19fX19fSwxMDU6e2w6ezEwMzp7bDp7MTE0OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDIzOV19fX19fX19fX19fX19fX19fSwxMDE6e2w6ezY4OntsOns2ODp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOlsxMDg3MV19fX19fX19LDExMTp7bDp7MTE2OntsOns1OTp7YzpbODc4NV19fX19fX19LDk3OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzIzM119fSxjOlsyMzNdfX19fX19fSwxMTU6e2w6ezExNjp7bDp7MTAxOntsOnsxMTQ6e2w6ezU5OntjOlsxMDg2Ml19fX19fX19fX19fSw5OTp7bDp7OTc6e2w6ezExNDp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOlsyODNdfX19fX19fX19LDEwNTp7bDp7MTE0OntsOns1OTp7YzpbODc5MF19LDk5OntsOns1OTp7YzpbMjM0XX19LGM6WzIzNF19fX19fSwxMTE6e2w6ezEwODp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOls4Nzg5XX19fX19fX19fSwxMjE6e2w6ezU5OntjOlsxMTAxXX19fX19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOlsyNzldfX19fX19fSwxMDE6e2w6ezU5OntjOls4NTE5XX19fSwxMDI6e2w6ezY4OntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg3ODZdfX19fX19fSwxMTQ6e2w6ezU5OntjOlsxMjAwOThdfX19fX0sMTAzOntsOns1OTp7YzpbMTA5MDZdfSwxMTQ6e2w6ezk3OntsOnsxMTg6e2w6ezEwMTp7bDp7NTk6e2M6WzIzMl19fSxjOlsyMzJdfX19fX19fSwxMTU6e2w6ezU5OntjOlsxMDkwMl19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOlsxMDkwNF19fX19fX19fX19fSwxMDg6e2w6ezU5OntjOlsxMDkwNV19LDEwNTp7bDp7MTEwOntsOnsxMTY6e2w6ezEwMTp7bDp7MTE0OntsOnsxMTU6e2w6ezU5OntjOls5MTkxXX19fX19fX19fX19fX0sMTA4OntsOns1OTp7YzpbODQ2N119fX0sMTE1OntsOns1OTp7YzpbMTA5MDFdfSwxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMTA5MDNdfX19fX19fX19fX0sMTA5OntsOns5Nzp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzI3NV19fX19fX19LDExMjp7bDp7MTE2OntsOnsxMjE6e2w6ezU5OntjOls4NzA5XX0sMTE1OntsOnsxMDE6e2w6ezExNjp7bDp7NTk6e2M6Wzg3MDldfX19fX19fSwxMTg6e2w6ezU5OntjOls4NzA5XX19fX19fX19fSwxMTU6e2w6ezExMjp7bDp7NDk6e2w6ezUxOntsOns1OTp7YzpbODE5Nl19fX0sNTI6e2w6ezU5OntjOls4MTk3XX19fX19LDU5OntjOls4MTk1XX19fX19fX0sMTEwOntsOnsxMDM6e2w6ezU5OntjOlszMzFdfX19LDExNTp7bDp7MTEyOntsOns1OTp7YzpbODE5NF19fX19fX19LDExMTp7bDp7MTAzOntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzI4MV19fX19fX19LDExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTUwXX19fX19fX0sMTEyOntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbODkxN119LDExNTp7bDp7MTA4OntsOns1OTp7YzpbMTA3MjNdfX19fX19fX19LDEwODp7bDp7MTE3OntsOnsxMTU6e2w6ezU5OntjOlsxMDg2NV19fX19fX19LDExNTp7bDp7MTA1OntsOns1OTp7YzpbOTQ5XX0sMTA4OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6Wzk0OV19fX19fX19LDExODp7bDp7NTk6e2M6WzEwMTNdfX19fX19fX19LDExMzp7bDp7OTk6e2w6ezEwNTp7bDp7MTE0OntsOns5OTp7bDp7NTk6e2M6Wzg3OTBdfX19fX19fSwxMTE6e2w6ezEwODp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOls4Nzg5XX19fX19fX19fX19LDExNTp7bDp7MTA1OntsOnsxMDk6e2w6ezU5OntjOls4NzcwXX19fX19LDEwODp7bDp7OTc6e2w6ezExMDp7bDp7MTE2OntsOnsxMDM6e2w6ezExNjp7bDp7MTE0OntsOns1OTp7YzpbMTA5MDJdfX19fX19fSwxMDg6e2w6ezEwMTp7bDp7MTE1OntsOnsxMTU6e2w6ezU5OntjOlsxMDkwMV19fX19fX19fX19fX19fX19fX19LDExNzp7bDp7OTc6e2w6ezEwODp7bDp7MTE1OntsOns1OTp7YzpbNjFdfX19fX19fSwxMDE6e2w6ezExNTp7bDp7MTE2OntsOns1OTp7YzpbODc5OV19fX19fX19LDEwNTp7bDp7MTE4OntsOns1OTp7YzpbODgwMV19LDY4OntsOns2ODp7bDp7NTk6e2M6WzEwODcyXX19fX19fX19fX19LDExODp7bDp7MTEyOntsOns5Nzp7bDp7MTE0OntsOnsxMTU6e2w6ezEwODp7bDp7NTk6e2M6WzEwNzI1XX19fX19fX19fX19fX19fSwxMTQ6e2w6ezY4OntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg3ODddfX19fX19fSw5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDYwOV19fX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbODQ5NV19fX19fSwxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbODc4NF19fX19fX19LDEwNTp7bDp7MTA5OntsOns1OTp7YzpbODc3MF19fX19fX19LDExNjp7bDp7OTc6e2w6ezU5OntjOls5NTFdfX19LDEwNDp7bDp7NTk6e2M6WzI0MF19fSxjOlsyNDBdfX19LDExNzp7bDp7MTA5OntsOnsxMDg6e2w6ezU5OntjOlsyMzVdfX0sYzpbMjM1XX19fSwxMTQ6e2w6ezExMTp7bDp7NTk6e2M6WzgzNjRdfX19fX19fSwxMjA6e2w6ezk5OntsOnsxMDg6e2w6ezU5OntjOlszM119fX19fSwxMDU6e2w6ezExNTp7bDp7MTE2OntsOns1OTp7YzpbODcwN119fX19fX19LDExMjp7bDp7MTAxOntsOns5OTp7bDp7MTE2OntsOns5Nzp7bDp7MTE2OntsOnsxMDU6e2w6ezExMTp7bDp7MTEwOntsOns1OTp7YzpbODQ5Nl19fX19fX19fX19fX19fX19fSwxMTE6e2w6ezExMDp7bDp7MTAxOntsOnsxMTA6e2w6ezExNjp7bDp7MTA1OntsOns5Nzp7bDp7MTA4OntsOnsxMDE6e2w6ezU5OntjOls4NTE5XX19fX19fX19fX19fX19fX19fX19fX19fX0sMTAyOntsOns5Nzp7bDp7MTA4OntsOnsxMDg6e2w6ezEwNTp7bDp7MTEwOntsOnsxMDM6e2w6ezEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezExNTp7bDp7MTAxOntsOnsxMTM6e2w6ezU5OntjOls4Nzg2XX19fX19fX19fX19fX19fX19fX19fX19fX0sOTk6e2w6ezEyMTp7bDp7NTk6e2M6WzEwOTJdfX19fX0sMTAxOntsOnsxMDk6e2w6ezk3OntsOnsxMDg6e2w6ezEwMTp7bDp7NTk6e2M6Wzk3OTJdfX19fX19fX19fX0sMTAyOntsOnsxMDU6e2w6ezEwODp7bDp7MTA1OntsOnsxMDM6e2w6ezU5OntjOls2NDI1OV19fX19fX19fX0sMTA4OntsOnsxMDU6e2w6ezEwMzp7bDp7NTk6e2M6WzY0MjU2XX19fX19LDEwODp7bDp7MTA1OntsOnsxMDM6e2w6ezU5OntjOls2NDI2MF19fX19fX19fX0sMTE0OntsOns1OTp7YzpbMTIwMDk5XX19fX19LDEwNTp7bDp7MTA4OntsOnsxMDU6e2w6ezEwMzp7bDp7NTk6e2M6WzY0MjU3XX19fX19fX19fSwxMDY6e2w6ezEwODp7bDp7MTA1OntsOnsxMDM6e2w6ezU5OntjOlsxMDIsMTA2XX19fX19fX19fSwxMDg6e2w6ezk3OntsOnsxMTY6e2w6ezU5OntjOls5ODM3XX19fX19LDEwODp7bDp7MTA1OntsOnsxMDM6e2w6ezU5OntjOls2NDI1OF19fX19fX19LDExNjp7bDp7MTEwOntsOnsxMTU6e2w6ezU5OntjOls5NjQ5XX19fX19fX19fSwxMTA6e2w6ezExMTp7bDp7MTAyOntsOns1OTp7YzpbNDAyXX19fX19fX0sMTExOntsOnsxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDE1MV19fX19fSwxMTQ6e2w6ezk3OntsOnsxMDg6e2w6ezEwODp7bDp7NTk6e2M6Wzg3MDRdfX19fX19fSwxMDc6e2w6ezU5OntjOls4OTE2XX0sMTE4OntsOns1OTp7YzpbMTA5NjldfX19fX19fX19LDExMjp7bDp7OTc6e2w6ezExNDp7bDp7MTE2OntsOnsxMDU6e2w6ezExMDp7bDp7MTE2OntsOns1OTp7YzpbMTA3NjVdfX19fX19fX19fX19fX19LDExNDp7bDp7OTc6e2w6ezk5OntsOns0OTp7bDp7NTA6e2w6ezU5OntjOlsxODldfX0sYzpbMTg5XX0sNTE6e2w6ezU5OntjOls4NTMxXX19fSw1Mjp7bDp7NTk6e2M6WzE4OF19fSxjOlsxODhdfSw1Mzp7bDp7NTk6e2M6Wzg1MzNdfX19LDU0OntsOns1OTp7YzpbODUzN119fX0sNTY6e2w6ezU5OntjOls4NTM5XX19fX19LDUwOntsOns1MTp7bDp7NTk6e2M6Wzg1MzJdfX19LDUzOntsOns1OTp7YzpbODUzNF19fX19fSw1MTp7bDp7NTI6e2w6ezU5OntjOlsxOTBdfX0sYzpbMTkwXX0sNTM6e2w6ezU5OntjOls4NTM1XX19fSw1Njp7bDp7NTk6e2M6Wzg1NDBdfX19fX0sNTI6e2w6ezUzOntsOns1OTp7YzpbODUzNl19fX19fSw1Mzp7bDp7NTQ6e2w6ezU5OntjOls4NTM4XX19fSw1Njp7bDp7NTk6e2M6Wzg1NDFdfX19fX0sNTU6e2w6ezU2OntsOns1OTp7YzpbODU0Ml19fX19fX19LDExNTp7bDp7MTA4OntsOns1OTp7YzpbODI2MF19fX19fX19LDExMTp7bDp7MTE5OntsOnsxMTA6e2w6ezU5OntjOls4OTk0XX19fX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOlsxMTk5OTVdfX19fX19fX19LDEwMzp7bDp7Njk6e2w6ezU5OntjOls4ODA3XX0sMTA4OntsOns1OTp7YzpbMTA4OTJdfX19fX0sOTc6e2w6ezk5OntsOnsxMTc6e2w6ezExNjp7bDp7MTAxOntsOns1OTp7YzpbNTAxXX19fX19fX19fSwxMDk6e2w6ezEwOTp7bDp7OTc6e2w6ezU5OntjOls5NDddfSwxMDA6e2w6ezU5OntjOls5ODldfX19fX19fX19LDExMjp7bDp7NTk6e2M6WzEwODg2XX19fX19LDk4OntsOnsxMTQ6e2w6ezEwMTp7bDp7MTE4OntsOnsxMDE6e2w6ezU5OntjOlsyODddfX19fX19fX19fX0sOTk6e2w6ezEwNTp7bDp7MTE0OntsOns5OTp7bDp7NTk6e2M6WzI4NV19fX19fX19LDEyMTp7bDp7NTk6e2M6WzEwNzVdfX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzI4OV19fX19fX19LDEwMTp7bDp7NTk6e2M6Wzg4MDVdfSwxMDg6e2w6ezU5OntjOls4OTIzXX19fSwxMTM6e2w6ezU5OntjOls4ODA1XX0sMTEzOntsOns1OTp7YzpbODgwN119fX0sMTE1OntsOnsxMDg6e2w6ezk3OntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6WzEwODc4XX19fX19fX19fX19fX0sMTE1OntsOns1OTp7YzpbMTA4NzhdfSw5OTp7bDp7OTk6e2w6ezU5OntjOlsxMDkyMV19fX19fSwxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMTA4ODBdfSwxMTE6e2w6ezU5OntjOlsxMDg4Ml19LDEwODp7bDp7NTk6e2M6WzEwODg0XX19fX19fX19fX19LDEwODp7bDp7NTk6e2M6Wzg5MjMsNjUwMjRdfSwxMDE6e2w6ezExNTp7bDp7NTk6e2M6WzEwOTAwXX19fX19fX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMTAwXX19fX19LDEwMzp7bDp7NTk6e2M6Wzg4MTFdfSwxMDM6e2w6ezU5OntjOls4OTIxXX19fX19LDEwNTp7bDp7MTA5OntsOnsxMDE6e2w6ezEwODp7bDp7NTk6e2M6Wzg1MDNdfX19fX19fX19LDEwNjp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzExMDddfX19fX19fSwxMDg6e2w6ezU5OntjOls4ODIzXX0sNjk6e2w6ezU5OntjOlsxMDg5OF19fX0sOTc6e2w6ezU5OntjOlsxMDkxN119fX0sMTA2OntsOns1OTp7YzpbMTA5MTZdfX19fX0sMTEwOntsOns2OTp7bDp7NTk6e2M6Wzg4MDldfX19LDk3OntsOnsxMTI6e2w6ezU5OntjOlsxMDg5MF19LDExMjp7bDp7MTE0OntsOnsxMTE6e2w6ezEyMDp7bDp7NTk6e2M6WzEwODkwXX19fX19fX19fX19fX0sMTAxOntsOns1OTp7YzpbMTA4ODhdfSwxMTM6e2w6ezU5OntjOlsxMDg4OF19LDExMzp7bDp7NTk6e2M6Wzg4MDldfX19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTA5OntsOns1OTp7YzpbODkzNV19fX19fX19fX0sMTExOntsOnsxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDE1Ml19fX19fX19LDExNDp7bDp7OTc6e2w6ezExODp7bDp7MTAxOntsOns1OTp7YzpbOTZdfX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6Wzg0NThdfX19fX0sMTA1OntsOnsxMDk6e2w6ezU5OntjOls4ODE5XX0sMTAxOntsOns1OTp7YzpbMTA4OTRdfX19LDEwODp7bDp7NTk6e2M6WzEwODk2XX19fX19fX19fSwxMTY6e2w6ezU5OntjOls2Ml19LDk5OntsOns5OTp7bDp7NTk6e2M6WzEwOTE5XX19fSwxMDU6e2w6ezExNDp7bDp7NTk6e2M6WzEwODc0XX19fX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg5MTldfX19fX19fSwxMDg6e2w6ezgwOntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA2NDVdfX19fX19fX19LDExMzp7bDp7MTE3OntsOnsxMDE6e2w6ezExNTp7bDp7MTE2OntsOns1OTp7YzpbMTA4NzZdfX19fX19fX19fX0sMTE0OntsOns5Nzp7bDp7MTEyOntsOnsxMTI6e2w6ezExNDp7bDp7MTExOntsOnsxMjA6e2w6ezU5OntjOlsxMDg4Nl19fX19fX19fX19fSwxMTQ6e2w6ezExNDp7bDp7NTk6e2M6WzEwNjE2XX19fX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg5MTldfX19fX19fSwxMDE6e2w6ezExMzp7bDp7MTA4OntsOnsxMDE6e2w6ezExNTp7bDp7MTE1OntsOns1OTp7YzpbODkyM119fX19fX19fX0sMTEzOntsOnsxMDg6e2w6ezEwMTp7bDp7MTE1OntsOnsxMTU6e2w6ezU5OntjOlsxMDg5Ml19fX19fX19fX19fX19fX0sMTA4OntsOnsxMDE6e2w6ezExNTp7bDp7MTE1OntsOns1OTp7YzpbODgyM119fX19fX19fX0sMTE1OntsOnsxMDU6e2w6ezEwOTp7bDp7NTk6e2M6Wzg4MTldfX19fX19fX19fSxjOls2Ml19LDExODp7bDp7MTAxOntsOnsxMTQ6e2w6ezExNjp7bDp7MTEwOntsOnsxMDE6e2w6ezExMzp7bDp7MTEzOntsOns1OTp7YzpbODgwOSw2NTAyNF19fX19fX19fX19fX19fX0sMTEwOntsOns2OTp7bDp7NTk6e2M6Wzg4MDksNjUwMjRdfX19fX19fX19LDEwNDp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODY2MF19fX19fX19LDk3OntsOnsxMDU6e2w6ezExNDp7bDp7MTE1OntsOnsxMTI6e2w6ezU5OntjOls4MjAyXX19fX19fX19fSwxMDg6e2w6ezEwMjp7bDp7NTk6e2M6WzE4OV19fX19fSwxMDk6e2w6ezEwNTp7bDp7MTA4OntsOnsxMTY6e2w6ezU5OntjOls4NDU5XX19fX19fX19fSwxMTQ6e2w6ezEwMDp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzEwOThdfX19fX19fSwxMTQ6e2w6ezU5OntjOls4NTk2XX0sOTk6e2w6ezEwNTp7bDp7MTE0OntsOns1OTp7YzpbMTA1NjhdfX19fX19fSwxMTk6e2w6ezU5OntjOls4NjIxXX19fX19fX19fSw5ODp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6Wzg0NjNdfX19fX19fSw5OTp7bDp7MTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbMjkzXX19fX19fX19fSwxMDE6e2w6ezk3OntsOnsxMTQ6e2w6ezExNjp7bDp7MTE1OntsOns1OTp7YzpbOTgyOV19LDExNzp7bDp7MTA1OntsOnsxMTY6e2w6ezU5OntjOls5ODI5XX19fX19fX19fX19fX19fSwxMDg6e2w6ezEwODp7bDp7MTA1OntsOnsxMTI6e2w6ezU5OntjOls4MjMwXX19fX19fX19fSwxMTQ6e2w6ezk5OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6Wzg4ODldfX19fX19fX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAxMDFdfX19fX0sMTA3OntsOnsxMTU6e2w6ezEwMTp7bDp7OTc6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOlsxMDUzM119fX19fX19fX19fSwxMTk6e2w6ezk3OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbMTA1MzRdfX19fX19fX19fX19fX19LDExMTp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODcwM119fX19fX19LDEwOTp7bDp7MTE2OntsOnsxMDQ6e2w6ezExNjp7bDp7NTk6e2M6Wzg3NjNdfX19fX19fX19LDExMTp7bDp7MTA3OntsOnsxMDg6e2w6ezEwMTp7bDp7MTAyOntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjE3XX19fX19fX19fX19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjE4XX19fX19fX19fX19fX19fX19fX19fX19fX0sMTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNTNdfX19fX0sMTE0OntsOns5ODp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzgyMTNdfX19fX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTE5OTk3XX19fX19LDEwODp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbODQ2M119fX19fX19fX0sMTE2OntsOnsxMTQ6e2w6ezExMTp7bDp7MTA3OntsOns1OTp7YzpbMjk1XX19fX19fX19fX19LDEyMTp7bDp7OTg6e2w6ezExNzp7bDp7MTA4OntsOnsxMDg6e2w6ezU5OntjOls4MjU5XX19fX19fX19fSwxMTI6e2w6ezEwNDp7bDp7MTAxOntsOnsxMTA6e2w6ezU5OntjOls4MjA4XX19fX19fX19fX19fX0sMTA1OntsOns5Nzp7bDp7OTk6e2w6ezExNzp7bDp7MTE2OntsOnsxMDE6e2w6ezU5OntjOlsyMzddfX0sYzpbMjM3XX19fX19fX19fSw5OTp7bDp7NTk6e2M6WzgyOTFdfSwxMDU6e2w6ezExNDp7bDp7OTk6e2w6ezU5OntjOlsyMzhdfX0sYzpbMjM4XX19fX19LDEyMTp7bDp7NTk6e2M6WzEwODBdfX19fX0sMTAxOntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTA3N119fX19fSwxMjA6e2w6ezk5OntsOnsxMDg6e2w6ezU5OntjOlsxNjFdfX0sYzpbMTYxXX19fX19fX0sMTAyOntsOnsxMDI6e2w6ezU5OntjOls4NjYwXX19fSwxMTQ6e2w6ezU5OntjOlsxMjAxMDJdfX19fX0sMTAzOntsOnsxMTQ6e2w6ezk3OntsOnsxMTg6e2w6ezEwMTp7bDp7NTk6e2M6WzIzNl19fSxjOlsyMzZdfX19fX19fX19LDEwNTp7bDp7NTk6e2M6Wzg1MjBdfSwxMDU6e2w6ezEwNTp7bDp7MTEwOntsOnsxMTY6e2w6ezU5OntjOlsxMDc2NF19fX19fX19LDExMDp7bDp7MTE2OntsOns1OTp7YzpbODc0OV19fX19fX19LDExMDp7bDp7MTAyOntsOnsxMDU6e2w6ezExMDp7bDp7NTk6e2M6WzEwNzE2XX19fX19fX19fSwxMTE6e2w6ezExNjp7bDp7OTc6e2w6ezU5OntjOls4NDg5XX19fX19fX19fSwxMDY6e2w6ezEwODp7bDp7MTA1OntsOnsxMDM6e2w6ezU5OntjOlszMDddfX19fX19fX19LDEwOTp7bDp7OTc6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOlsyOTldfX19fX0sMTAzOntsOnsxMDE6e2w6ezU5OntjOls4NDY1XX19fSwxMDg6e2w6ezEwNTp7bDp7MTEwOntsOnsxMDE6e2w6ezU5OntjOls4NDY0XX19fX19fX19fSwxMTI6e2w6ezk3OntsOnsxMTQ6e2w6ezExNjp7bDp7NTk6e2M6Wzg0NjVdfX19fX19fX19fX0sMTE2OntsOnsxMDQ6e2w6ezU5OntjOlszMDVdfX19fX19fSwxMTE6e2w6ezEwMjp7bDp7NTk6e2M6Wzg4ODddfX19fX0sMTEyOntsOnsxMDE6e2w6ezEwMDp7bDp7NTk6e2M6WzQzN119fX19fX19fX0sMTEwOntsOns1OTp7YzpbODcxMl19LDk5OntsOns5Nzp7bDp7MTE0OntsOnsxMDE6e2w6ezU5OntjOls4NDUzXX19fX19fX19fSwxMDI6e2w6ezEwNTp7bDp7MTEwOntsOns1OTp7YzpbODczNF19LDExNjp7bDp7MTA1OntsOnsxMDE6e2w6ezU5OntjOlsxMDcxN119fX19fX19fX19fX19LDExMTp7bDp7MTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzMwNV19fX19fX19fX0sMTE2OntsOns1OTp7YzpbODc0N119LDk5OntsOns5Nzp7bDp7MTA4OntsOns1OTp7YzpbODg5MF19fX19fX19LDEwMTp7bDp7MTAzOntsOnsxMDE6e2w6ezExNDp7bDp7MTE1OntsOns1OTp7YzpbODQ4NF19fX19fX19fX0sMTE0OntsOns5OTp7bDp7OTc6e2w6ezEwODp7bDp7NTk6e2M6Wzg4OTBdfX19fX19fX19fX0sMTA4OntsOns5Nzp7bDp7MTE0OntsOnsxMDQ6e2w6ezEwNzp7bDp7NTk6e2M6WzEwNzc1XX19fX19fX19fX19LDExMjp7bDp7MTE0OntsOnsxMTE6e2w6ezEwMDp7bDp7NTk6e2M6WzEwODEyXX19fX19fX19fX19fX0sMTExOntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTEwNV19fX19fSwxMDM6e2w6ezExMTp7bDp7MTEwOntsOns1OTp7YzpbMzAzXX19fX19fX0sMTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNTRdfX19fX0sMTE2OntsOns5Nzp7bDp7NTk6e2M6Wzk1M119fX19fX19LDExMjp7bDp7MTE0OntsOnsxMTE6e2w6ezEwMDp7bDp7NTk6e2M6WzEwODEyXX19fX19fX19fSwxMTM6e2w6ezExNzp7bDp7MTAxOntsOnsxMTU6e2w6ezExNjp7bDp7NTk6e2M6WzE5MV19fSxjOlsxOTFdfX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzExOTk5OF19fX19fSwxMDU6e2w6ezExMDp7bDp7NTk6e2M6Wzg3MTJdfSw2OTp7bDp7NTk6e2M6Wzg5NTNdfX19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOls4OTQ5XX19fX19fX0sMTE1OntsOns1OTp7YzpbODk0OF19LDExODp7bDp7NTk6e2M6Wzg5NDddfX19fX0sMTE4OntsOns1OTp7YzpbODcxMl19fX19fX19fX0sMTE2OntsOns1OTp7YzpbODI5MF19LDEwNTp7bDp7MTA4OntsOnsxMDA6e2w6ezEwMTp7bDp7NTk6e2M6WzI5N119fX19fX19fX19fSwxMTc6e2w6ezEwNzp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzExMTBdfX19fX19fSwxMDk6e2w6ezEwODp7bDp7NTk6e2M6WzIzOV19fSxjOlsyMzldfX19fX19fSwxMDY6e2w6ezk5OntsOnsxMDU6e2w6ezExNDp7bDp7OTk6e2w6ezU5OntjOlszMDldfX19fX19fSwxMjE6e2w6ezU5OntjOlsxMDgxXX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMTAzXX19fX19LDEwOTp7bDp7OTc6e2w6ezExNjp7bDp7MTA0OntsOns1OTp7YzpbNTY3XX19fX19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTU1XX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTE5OTk5XX19fX19LDEwMTp7bDp7MTE0OntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTExMl19fX19fX19fX19fSwxMTc6e2w6ezEwNzp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzExMDhdfX19fX19fX19fX0sMTA3OntsOns5Nzp7bDp7MTEyOntsOnsxMTI6e2w6ezk3OntsOns1OTp7YzpbOTU0XX0sMTE4OntsOns1OTp7YzpbMTAwOF19fX19fX19fX19fSw5OTp7bDp7MTAxOntsOnsxMDA6e2w6ezEwNTp7bDp7MTA4OntsOns1OTp7YzpbMzExXX19fX19fX19fSwxMjE6e2w6ezU5OntjOlsxMDgyXX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMTA0XX19fX19LDEwMzp7bDp7MTE0OntsOnsxMDE6e2w6ezEwMTp7bDp7MTEwOntsOns1OTp7YzpbMzEyXX19fX19fX19fX19LDEwNDp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzEwOTNdfX19fX19fSwxMDY6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMTE2XX19fX19fX0sMTExOntsOnsxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDE1Nl19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDAwMF19fX19fX19fX0sMTA4OntsOns2NTp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODY2Nl19fX19fX19LDExNDp7bDp7MTE0OntsOns1OTp7YzpbODY1Nl19fX19fSwxMTY6e2w6ezk3OntsOnsxMDU6e2w6ezEwODp7bDp7NTk6e2M6WzEwNTIzXX19fX19fX19fX19LDY2OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDUxMF19fX19fX19fX0sNjk6e2w6ezU5OntjOls4ODA2XX0sMTAzOntsOns1OTp7YzpbMTA4OTFdfX19fX0sNzI6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDU5NF19fX19fX19LDk3OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzMxNF19fX19fX19fX0sMTAxOntsOnsxMDk6e2w6ezExMjp7bDp7MTE2OntsOnsxMjE6e2w6ezExODp7bDp7NTk6e2M6WzEwNjc2XX19fX19fX19fX19fX0sMTAzOntsOnsxMTQ6e2w6ezk3OntsOnsxMTA6e2w6ezU5OntjOls4NDY2XX19fX19fX19fSwxMDk6e2w6ezk4OntsOnsxMDA6e2w6ezk3OntsOns1OTp7YzpbOTU1XX19fX19fX19fSwxMTA6e2w6ezEwMzp7bDp7NTk6e2M6WzEwMjE2XX0sMTAwOntsOns1OTp7YzpbMTA2NDFdfX19LDEwODp7bDp7MTAxOntsOns1OTp7YzpbMTAyMTZdfX19fX19fX19LDExMjp7bDp7NTk6e2M6WzEwODg1XX19fSwxMTM6e2w6ezExNzp7bDp7MTExOntsOns1OTp7YzpbMTcxXX19LGM6WzE3MV19fX19fSwxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg1OTJdfSw5ODp7bDp7NTk6e2M6Wzg2NzZdfSwxMDI6e2w6ezExNTp7bDp7NTk6e2M6WzEwNTI3XX19fX19fX0sMTAyOntsOnsxMTU6e2w6ezU5OntjOlsxMDUyNV19fX19fSwxMDQ6e2w6ezEwNzp7bDp7NTk6e2M6Wzg2MTddfX19fX0sMTA4OntsOnsxMTI6e2w6ezU5OntjOls4NjE5XX19fX19LDExMjp7bDp7MTA4OntsOns1OTp7YzpbMTA1NTNdfX19fX0sMTE1OntsOnsxMDU6e2w6ezEwOTp7bDp7NTk6e2M6WzEwNjExXX19fX19fX0sMTE2OntsOnsxMDg6e2w6ezU5OntjOls4NjEwXX19fX19fX19fSwxMTY6e2w6ezU5OntjOlsxMDkyM119LDk3OntsOnsxMDU6e2w6ezEwODp7bDp7NTk6e2M6WzEwNTIxXX19fX19fX0sMTAxOntsOns1OTp7YzpbMTA5MjVdfSwxMTU6e2w6ezU5OntjOlsxMDkyNSw2NTAyNF19fX19fX19fX0sOTg6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTA4XX19fX19fX0sOTg6e2w6ezExNDp7bDp7MTA3OntsOns1OTp7YzpbMTAwOThdfX19fX19fSwxMTQ6e2w6ezk3OntsOns5OTp7bDp7MTAxOntsOns1OTp7YzpbMTIzXX19fSwxMDc6e2w6ezU5OntjOls5MV19fX19fX19LDEwNzp7bDp7MTAxOntsOns1OTp7YzpbMTA2MzVdfX19LDExNTp7bDp7MTA4OntsOnsxMDA6e2w6ezU5OntjOlsxMDYzOV19fX0sMTE3OntsOns1OTp7YzpbMTA2MzddfX19fX19fX19fX19fSw5OTp7bDp7OTc6e2w6ezExNDp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOlszMThdfX19fX19fX19LDEwMTp7bDp7MTAwOntsOnsxMDU6e2w6ezEwODp7bDp7NTk6e2M6WzMxNl19fX19fX19LDEwNTp7bDp7MTA4OntsOns1OTp7YzpbODk2OF19fX19fX19LDExNzp7bDp7OTg6e2w6ezU5OntjOlsxMjNdfX19fX0sMTIxOntsOns1OTp7YzpbMTA4M119fX19fSwxMDA6e2w6ezk5OntsOns5Nzp7bDp7NTk6e2M6WzEwNTUwXX19fX19LDExMzp7bDp7MTE3OntsOnsxMTE6e2w6ezU5OntjOls4MjIwXX0sMTE0OntsOns1OTp7YzpbODIyMl19fX19fX19fX0sMTE0OntsOnsxMDA6e2w6ezEwNDp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTk5XX19fX19fX19fSwxMTc6e2w6ezExNTp7bDp7MTA0OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA1NzFdfX19fX19fX19fX19fSwxMTU6e2w6ezEwNDp7bDp7NTk6e2M6Wzg2MjZdfX19fX19fSwxMDE6e2w6ezU5OntjOls4ODA0XX0sMTAyOntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NTkyXX0sMTE2OntsOns5Nzp7bDp7MTA1OntsOnsxMDg6e2w6ezU5OntjOls4NjEwXX19fX19fX19fX19fX19fX19fX0sMTA0OntsOns5Nzp7bDp7MTE0OntsOnsxMTI6e2w6ezExMTp7bDp7MTExOntsOnsxMTA6e2w6ezEwMDp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7NTk6e2M6Wzg2MzddfX19fX19fX19LDExNzp7bDp7MTEyOntsOns1OTp7YzpbODYzNl19fX19fX19fX19fX19fX19fX19LDEwODp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7MTE1OntsOns1OTp7YzpbODY0N119fX19fX19fX19fX19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NTk2XX0sMTE1OntsOns1OTp7YzpbODY0Nl19fX19fX19fX19fX19LDEwNDp7bDp7OTc6e2w6ezExNDp7bDp7MTEyOntsOnsxMTE6e2w6ezExMTp7bDp7MTEwOntsOnsxMTU6e2w6ezU5OntjOls4NjUxXX19fX19fX19fX19fX19fX19LDExNTp7bDp7MTEzOntsOnsxMTc6e2w6ezEwNTp7bDp7MTAzOntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODYyMV19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDExNjp7bDp7MTA0OntsOnsxMTQ6e2w6ezEwMTp7bDp7MTAxOntsOnsxMTY6e2w6ezEwNTp7bDp7MTA5OntsOnsxMDE6e2w6ezExNTp7bDp7NTk6e2M6Wzg5MDddfX19fX19fX19fX19fX19fX19fX19fX19fSwxMDM6e2w6ezU5OntjOls4OTIyXX19fSwxMTM6e2w6ezU5OntjOls4ODA0XX0sMTEzOntsOns1OTp7YzpbODgwNl19fX0sMTE1OntsOnsxMDg6e2w6ezk3OntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6WzEwODc3XX19fX19fX19fX19fX0sMTE1OntsOns1OTp7YzpbMTA4NzddfSw5OTp7bDp7OTk6e2w6ezU5OntjOlsxMDkyMF19fX19fSwxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMTA4NzldfSwxMTE6e2w6ezU5OntjOlsxMDg4MV19LDExNDp7bDp7NTk6e2M6WzEwODgzXX19fX19fX19fX19LDEwMzp7bDp7NTk6e2M6Wzg5MjIsNjUwMjRdfSwxMDE6e2w6ezExNTp7bDp7NTk6e2M6WzEwODk5XX19fX19fX0sMTE1OntsOns5Nzp7bDp7MTEyOntsOnsxMTI6e2w6ezExNDp7bDp7MTExOntsOnsxMjA6e2w6ezU5OntjOlsxMDg4NV19fX19fX19fX19fX19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOls4OTE4XX19fX19fX0sMTAxOntsOnsxMTM6e2w6ezEwMzp7bDp7MTE2OntsOnsxMTQ6e2w6ezU5OntjOls4OTIyXX19fX19fX0sMTEzOntsOnsxMDM6e2w6ezExNjp7bDp7MTE0OntsOns1OTp7YzpbMTA4OTFdfX19fX19fX19fX19fSwxMDM6e2w6ezExNjp7bDp7MTE0OntsOns1OTp7YzpbODgyMl19fX19fX19LDExNTp7bDp7MTA1OntsOnsxMDk6e2w6ezU5OntjOls4ODE4XX19fX19fX19fX19fX0sMTAyOntsOnsxMDU6e2w6ezExNTp7bDp7MTA0OntsOnsxMTY6e2w6ezU5OntjOlsxMDYyMF19fX19fX19fX0sMTA4OntsOnsxMTE6e2w6ezExMTp7bDp7MTE0OntsOns1OTp7YzpbODk3MF19fX19fX19fX0sMTE0OntsOns1OTp7YzpbMTIwMTA1XX19fX19LDEwMzp7bDp7NTk6e2M6Wzg4MjJdfSw2OTp7bDp7NTk6e2M6WzEwODk3XX19fX19LDEwNDp7bDp7OTc6e2w6ezExNDp7bDp7MTAwOntsOns1OTp7YzpbODYzN119fX0sMTE3OntsOns1OTp7YzpbODYzNl19LDEwODp7bDp7NTk6e2M6WzEwNjAyXX19fX19fX19fSw5ODp7bDp7MTA4OntsOnsxMDc6e2w6ezU5OntjOls5NjA0XX19fX19fX19fSwxMDY6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMTEzXX19fX19fX0sMTA4OntsOns1OTp7YzpbODgxMF19LDk3OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NDddfX19fX19fSw5OTp7bDp7MTExOntsOnsxMTQ6e2w6ezExMDp7bDp7MTAxOntsOnsxMTQ6e2w6ezU5OntjOls4OTkwXX19fX19fX19fX19fX0sMTA0OntsOns5Nzp7bDp7MTE0OntsOnsxMDA6e2w6ezU5OntjOlsxMDYwM119fX19fX19fX0sMTE2OntsOnsxMTQ6e2w6ezEwNTp7bDp7NTk6e2M6Wzk3MjJdfX19fX19fX19LDEwOTp7bDp7MTA1OntsOnsxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMzIwXX19fX19fX19fSwxMTE6e2w6ezExNzp7bDp7MTE1OntsOnsxMTY6e2w6ezU5OntjOls5MTM2XX0sOTc6e2w6ezk5OntsOnsxMDQ6e2w6ezEwMTp7bDp7NTk6e2M6WzkxMzZdfX19fX19fX19fX19fX19fX19fSwxMTA6e2w6ezY5OntsOns1OTp7YzpbODgwOF19fX0sOTc6e2w6ezExMjp7bDp7NTk6e2M6WzEwODg5XX0sMTEyOntsOnsxMTQ6e2w6ezExMTp7bDp7MTIwOntsOns1OTp7YzpbMTA4ODldfX19fX19fX19fX19fSwxMDE6e2w6ezU5OntjOlsxMDg4N119LDExMzp7bDp7NTk6e2M6WzEwODg3XX0sMTEzOntsOns1OTp7YzpbODgwOF19fX19fX19LDExNTp7bDp7MTA1OntsOnsxMDk6e2w6ezU5OntjOls4OTM0XX19fX19fX19fSwxMTE6e2w6ezk3OntsOnsxMTA6e2w6ezEwMzp7bDp7NTk6e2M6WzEwMjIwXX19fX19LDExNDp7bDp7MTE0OntsOns1OTp7YzpbODcwMV19fX19fX19LDk4OntsOnsxMTQ6e2w6ezEwNzp7bDp7NTk6e2M6WzEwMjE0XX19fX19fX0sMTEwOntsOnsxMDM6e2w6ezEwODp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6WzEwMjI5XX19fX19fX19fX19LDExNDp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbMTAyMzFdfX19fX19fX19fX19fX19fX19fX19fX19fX19fX0sMTA5OntsOns5Nzp7bDp7MTEyOntsOnsxMTU6e2w6ezExNjp7bDp7MTExOntsOns1OTp7YzpbMTAyMzZdfX19fX19fX19fX19fSwxMTQ6e2w6ezEwNTp7bDp7MTAzOntsOnsxMDQ6e2w6ezExNjp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6WzEwMjMwXX19fX19fX19fX19fX19fX19fX19fX19fX0sMTExOntsOnsxMTI6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezEwODp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7NTk6e2M6Wzg2MTldfX19fX19fX19LDExNDp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns1OTp7YzpbODYyMF19fX19fX19fX19fX19fX19fX19fX19fX19LDExMjp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEwNjI5XX19fX19LDEwMjp7bDp7NTk6e2M6WzEyMDE1N119fX0sMTA4OntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6WzEwNzk3XX19fX19fX19fSwxMTY6e2w6ezEwNTp7bDp7MTA5OntsOnsxMDE6e2w6ezExNTp7bDp7NTk6e2M6WzEwODA0XX19fX19fX19fX19LDExOTp7bDp7OTc6e2w6ezExNTp7bDp7MTE2OntsOns1OTp7YzpbODcyN119fX19fX19LDk4OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbOTVdfX19fX19fX19LDEyMjp7bDp7NTk6e2M6Wzk2NzRdfSwxMDE6e2w6ezExMDp7bDp7MTAzOntsOnsxMDE6e2w6ezU5OntjOls5Njc0XX19fX19fX19fSwxMDI6e2w6ezU5OntjOlsxMDczMV19fX19fX19LDExMjp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzQwXX0sMTA4OntsOnsxMTY6e2w6ezU5OntjOlsxMDY0M119fX19fX19fX19fSwxMTQ6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NDZdfX19fX19fSw5OTp7bDp7MTExOntsOnsxMTQ6e2w6ezExMDp7bDp7MTAxOntsOnsxMTQ6e2w6ezU5OntjOls4OTkxXX19fX19fX19fX19fX0sMTA0OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbODY1MV19LDEwMDp7bDp7NTk6e2M6WzEwNjA1XX19fX19fX19fSwxMDk6e2w6ezU5OntjOls4MjA2XX19fSwxMTY6e2w6ezExNDp7bDp7MTA1OntsOns1OTp7YzpbODg5NV19fX19fX19fX0sMTE1OntsOns5Nzp7bDp7MTEzOntsOnsxMTc6e2w6ezExMTp7bDp7NTk6e2M6WzgyNDldfX19fX19fX19LDk5OntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwMDFdfX19fX0sMTA0OntsOns1OTp7YzpbODYyNF19fX0sMTA1OntsOnsxMDk6e2w6ezU5OntjOls4ODE4XX0sMTAxOntsOns1OTp7YzpbMTA4OTNdfX19LDEwMzp7bDp7NTk6e2M6WzEwODk1XX19fX19fX0sMTEzOntsOns5ODp7bDp7NTk6e2M6WzkxXX19fSwxMTc6e2w6ezExMTp7bDp7NTk6e2M6WzgyMTZdfSwxMTQ6e2w6ezU5OntjOls4MjE4XX19fX19fX19fSwxMTY6e2w6ezExNDp7bDp7MTExOntsOnsxMDc6e2w6ezU5OntjOlszMjJdfX19fX19fX19fX0sMTE2OntsOns1OTp7YzpbNjBdfSw5OTp7bDp7OTk6e2w6ezU5OntjOlsxMDkxOF19fX0sMTA1OntsOnsxMTQ6e2w6ezU5OntjOlsxMDg3M119fX19fX19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOls4OTE4XX19fX19fX0sMTA0OntsOnsxMTQ6e2w6ezEwMTp7bDp7MTAxOntsOns1OTp7YzpbODkwN119fX19fX19fX0sMTA1OntsOnsxMDk6e2w6ezEwMTp7bDp7MTE1OntsOns1OTp7YzpbODkwNV19fX19fX19fX0sMTA4OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDYxNF19fX19fX19fX0sMTEzOntsOnsxMTc6e2w6ezEwMTp7bDp7MTE1OntsOnsxMTY6e2w6ezU5OntjOlsxMDg3NV19fX19fX19fX19fSwxMTQ6e2w6ezgwOntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA2NDZdfX19fX19fSwxMDU6e2w6ezU5OntjOls5NjY3XX0sMTAxOntsOns1OTp7YzpbODg4NF19fX0sMTAyOntsOns1OTp7YzpbOTY2Nl19fX19fX19fSxjOls2MF19LDExNzp7bDp7MTE0OntsOnsxMDA6e2w6ezExNTp7bDp7MTA0OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA1NzBdfX19fX19fX19fX0sMTE3OntsOnsxMDQ6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDU5OF19fX19fX19fX19fX19LDExODp7bDp7MTAxOntsOnsxMTQ6e2w6ezExNjp7bDp7MTEwOntsOnsxMDE6e2w6ezExMzp7bDp7MTEzOntsOns1OTp7YzpbODgwOCw2NTAyNF19fX19fX19fX19fX19fX0sMTEwOntsOns2OTp7bDp7NTk6e2M6Wzg4MDgsNjUwMjRdfX19fX19fX19LDEwOTp7bDp7Njg6e2w6ezY4OntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg3NjJdfX19fX19fX19LDk3OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTc1XX19LGM6WzE3NV19fX0sMTA4OntsOnsxMDE6e2w6ezU5OntjOls5Nzk0XX19fSwxMTY6e2w6ezU5OntjOlsxMDAxNl19LDEwMTp7bDp7MTE1OntsOnsxMDE6e2w6ezU5OntjOlsxMDAxNl19fX19fX19fX19fSwxMTI6e2w6ezU5OntjOls4NjE0XX0sMTE1OntsOnsxMTY6e2w6ezExMTp7bDp7NTk6e2M6Wzg2MTRdfSwxMDA6e2w6ezExMTp7bDp7MTE5OntsOnsxMTA6e2w6ezU5OntjOls4NjE1XX19fX19fX19fSwxMDg6e2w6ezEwMTp7bDp7MTAyOntsOnsxMTY6e2w6ezU5OntjOls4NjEyXX19fX19fX19fSwxMTc6e2w6ezExMjp7bDp7NTk6e2M6Wzg2MTNdfX19fX19fX19fX19fSwxMTQ6e2w6ezEwNzp7bDp7MTAxOntsOnsxMTQ6e2w6ezU5OntjOls5NjQ2XX19fX19fX19fX19LDk5OntsOnsxMTE6e2w6ezEwOTp7bDp7MTA5OntsOns5Nzp7bDp7NTk6e2M6WzEwNzkzXX19fX19fX19fSwxMjE6e2w6ezU5OntjOlsxMDg0XX19fX19LDEwMDp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbODIxMl19fX19fX19fX0sMTAxOntsOns5Nzp7bDp7MTE1OntsOnsxMTc6e2w6ezExNDp7bDp7MTAxOntsOnsxMDA6e2w6ezk3OntsOnsxMTA6e2w6ezEwMzp7bDp7MTA4OntsOnsxMDE6e2w6ezU5OntjOls4NzM3XX19fX19fX19fX19fX19fX19fX19fX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAxMDZdfX19fX0sMTA0OntsOnsxMTE6e2w6ezU5OntjOls4NDg3XX19fX19LDEwNTp7bDp7OTk6e2w6ezExNDp7bDp7MTExOntsOns1OTp7YzpbMTgxXX19LGM6WzE4MV19fX19fSwxMDA6e2w6ezU5OntjOls4NzM5XX0sOTc6e2w6ezExNTp7bDp7MTE2OntsOns1OTp7YzpbNDJdfX19fX19fSw5OTp7bDp7MTA1OntsOnsxMTQ6e2w6ezU5OntjOlsxMDk5Ml19fX19fX19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOlsxODNdfX0sYzpbMTgzXX19fX19fX0sMTEwOntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6Wzg3MjJdfSw5ODp7bDp7NTk6e2M6Wzg4NjNdfX19LDEwMDp7bDp7NTk6e2M6Wzg3NjBdfSwxMTc6e2w6ezU5OntjOlsxMDc5NF19fX19fX19fX19fX19LDEwODp7bDp7OTk6e2w6ezExMjp7bDp7NTk6e2M6WzEwOTcxXX19fX19LDEwMDp7bDp7MTE0OntsOns1OTp7YzpbODIzMF19fX19fX19LDExMDp7bDp7MTEyOntsOnsxMDg6e2w6ezExNzp7bDp7MTE1OntsOns1OTp7YzpbODcyM119fX19fX19fX19fSwxMTE6e2w6ezEwMDp7bDp7MTAxOntsOnsxMDg6e2w6ezExNTp7bDp7NTk6e2M6Wzg4NzFdfX19fX19fX19LDExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTU4XX19fX19fX0sMTEyOntsOns1OTp7YzpbODcyM119fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDAyXX19fX19LDExNjp7bDp7MTEyOntsOnsxMTE6e2w6ezExNTp7bDp7NTk6e2M6Wzg3NjZdfX19fX19fX19fX0sMTE3OntsOns1OTp7YzpbOTU2XX0sMTA4OntsOnsxMTY6e2w6ezEwNTp7bDp7MTA5OntsOns5Nzp7bDp7MTEyOntsOns1OTp7YzpbODg4OF19fX19fX19fX19fX19LDEwOTp7bDp7OTc6e2w6ezExMjp7bDp7NTk6e2M6Wzg4ODhdfX19fX19fX19fX0sMTEwOntsOns3MTp7bDp7MTAzOntsOns1OTp7YzpbODkyMSw4MjRdfX19LDExNjp7bDp7NTk6e2M6Wzg4MTEsODQwMl19LDExODp7bDp7NTk6e2M6Wzg4MTEsODI0XX19fX19fX0sNzY6e2w6ezEwMTp7bDp7MTAyOntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjUzXX19fX19fX19fX19LDExNDp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODY1NF19fX19fX19fX19fX19fX19fX19fX19fX19fX0sMTA4OntsOns1OTp7YzpbODkyMCw4MjRdfX19LDExNjp7bDp7NTk6e2M6Wzg4MTAsODQwMl19LDExODp7bDp7NTk6e2M6Wzg4MTAsODI0XX19fX19fX0sODI6e2w6ezEwNTp7bDp7MTAzOntsOnsxMDQ6e2w6ezExNjp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2NTVdfX19fX19fX19fX19fX19fX19fX19LDg2OntsOns2ODp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbODg3OV19fX19fX19fX0sMTAwOntsOns5Nzp7bDp7MTE1OntsOnsxMDQ6e2w6ezU5OntjOls4ODc4XX19fX19fX19fX19LDk3OntsOns5ODp7bDp7MTA4OntsOns5Nzp7bDp7NTk6e2M6Wzg3MTFdfX19fX19fSw5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzMyNF19fX19fX19fX0sMTEwOntsOnsxMDM6e2w6ezU5OntjOls4NzM2LDg0MDJdfX19fX0sMTEyOntsOns1OTp7YzpbODc3N119LDY5OntsOns1OTp7YzpbMTA4NjQsODI0XX19fSwxMDU6e2w6ezEwMDp7bDp7NTk6e2M6Wzg3NzksODI0XX19fX19LDExMTp7bDp7MTE1OntsOns1OTp7YzpbMzI5XX19fX19LDExMjp7bDp7MTE0OntsOnsxMTE6e2w6ezEyMDp7bDp7NTk6e2M6Wzg3NzddfX19fX19fX19fX0sMTE2OntsOnsxMTc6e2w6ezExNDp7bDp7NTk6e2M6Wzk4MzhdfSw5Nzp7bDp7MTA4OntsOns1OTp7YzpbOTgzOF19LDExNTp7bDp7NTk6e2M6Wzg0NjldfX19fX19fX19fX19fX19LDk4OntsOnsxMTU6e2w6ezExMjp7bDp7NTk6e2M6WzE2MF19fSxjOlsxNjBdfX19LDExNzp7bDp7MTA5OntsOnsxMTI6e2w6ezU5OntjOls4NzgyLDgyNF19LDEwMTp7bDp7NTk6e2M6Wzg3ODMsODI0XX19fX19fX19fX19LDk5OntsOns5Nzp7bDp7MTEyOntsOns1OTp7YzpbMTA4MTldfX19LDExNDp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOlszMjhdfX19fX19fX19LDEwMTp7bDp7MTAwOntsOnsxMDU6e2w6ezEwODp7bDp7NTk6e2M6WzMyNl19fX19fX19fX0sMTExOntsOnsxMTA6e2w6ezEwMzp7bDp7NTk6e2M6Wzg3NzVdfSwxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMTA4NjEsODI0XX19fX19fX19fX19fX0sMTE3OntsOnsxMTI6e2w6ezU5OntjOlsxMDgxOF19fX19fSwxMjE6e2w6ezU5OntjOlsxMDg1XX19fX19LDEwMDp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbODIxMV19fX19fX19fX0sMTAxOntsOns1OTp7YzpbODgwMF19LDY1OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NjNdfX19fX19fSw5Nzp7bDp7MTE0OntsOnsxMDQ6e2w6ezEwNzp7bDp7NTk6e2M6WzEwNTMyXX19fX19LDExNDp7bDp7NTk6e2M6Wzg1OTldfSwxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg1OTldfX19fX19fX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg3ODQsODI0XX19fX19fX0sMTEzOntsOnsxMTc6e2w6ezEwNTp7bDp7MTE4OntsOns1OTp7YzpbODgwMl19fX19fX19fX0sMTE1OntsOnsxMDE6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDUzNl19fX19fX19LDEwNTp7bDp7MTA5OntsOns1OTp7YzpbODc3MCw4MjRdfX19fX19fSwxMjA6e2w6ezEwNTp7bDp7MTE1OntsOnsxMTY6e2w6ezU5OntjOls4NzA4XX0sMTE1OntsOns1OTp7YzpbODcwOF19fX19fX19fX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMTA3XX19fX19LDEwMzp7bDp7Njk6e2w6ezU5OntjOls4ODA3LDgyNF19fX0sMTAxOntsOns1OTp7YzpbODgxN119LDExMzp7bDp7NTk6e2M6Wzg4MTddfSwxMTM6e2w6ezU5OntjOls4ODA3LDgyNF19fX0sMTE1OntsOnsxMDg6e2w6ezk3OntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6WzEwODc4LDgyNF19fX19fX19fX19fX19LDExNTp7bDp7NTk6e2M6WzEwODc4LDgyNF19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTA5OntsOns1OTp7YzpbODgyMV19fX19fX19LDExNjp7bDp7NTk6e2M6Wzg4MTVdfSwxMTQ6e2w6ezU5OntjOls4ODE1XX19fX19fX0sMTA0OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjU0XX19fX19fX0sOTc6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODYyMl19fX19fX19LDExMjp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEwOTk0XX19fX19fX19fSwxMDU6e2w6ezU5OntjOls4NzE1XX0sMTE1OntsOns1OTp7YzpbODk1Nl19LDEwMDp7bDp7NTk6e2M6Wzg5NTRdfX19fX0sMTE4OntsOns1OTp7YzpbODcxNV19fX19fSwxMDY6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMTE0XX19fX19fX0sMTA4OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjUzXX19fX19fX0sNjk6e2w6ezU5OntjOls4ODA2LDgyNF19fX0sOTc6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODYwMl19fX19fX19LDEwMDp7bDp7MTE0OntsOns1OTp7YzpbODIyOV19fX19fSwxMDE6e2w6ezU5OntjOls4ODE2XX0sMTAyOntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjAyXX19fX19fX19fX19LDExNDp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezExMTp7bDp7MTE5OntsOns1OTp7YzpbODYyMl19fX19fX19fX19fX19fX19fX19fX19fX19LDExMzp7bDp7NTk6e2M6Wzg4MTZdfSwxMTM6e2w6ezU5OntjOls4ODA2LDgyNF19fX0sMTE1OntsOnsxMDg6e2w6ezk3OntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6WzEwODc3LDgyNF19fX19fX19fX19fX19LDExNTp7bDp7NTk6e2M6WzEwODc3LDgyNF19LDExNTp7bDp7NTk6e2M6Wzg4MTRdfX19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTA5OntsOns1OTp7YzpbODgyMF19fX19fX19LDExNjp7bDp7NTk6e2M6Wzg4MTRdfSwxMTQ6e2w6ezEwNTp7bDp7NTk6e2M6Wzg5MzhdfSwxMDE6e2w6ezU5OntjOls4OTQwXX19fX19fX19fX19LDEwOTp7bDp7MTA1OntsOnsxMDA6e2w6ezU5OntjOls4NzQwXX19fX19fX0sMTExOntsOnsxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDE1OV19fX19fSwxMTY6e2w6ezU5OntjOlsxNzJdfSwxMDU6e2w6ezExMDp7bDp7NTk6e2M6Wzg3MTNdfSw2OTp7bDp7NTk6e2M6Wzg5NTMsODI0XX19fSwxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbODk0OSw4MjRdfX19fX19fSwxMTg6e2w6ezk3OntsOns1OTp7YzpbODcxM119fX0sOTg6e2w6ezU5OntjOls4OTUxXX19fSw5OTp7bDp7NTk6e2M6Wzg5NTBdfX19fX19fX19LDExMDp7bDp7MTA1OntsOns1OTp7YzpbODcxNl19LDExODp7bDp7OTc6e2w6ezU5OntjOls4NzE2XX19fSw5ODp7bDp7NTk6e2M6Wzg5NThdfX19LDk5OntsOns1OTp7YzpbODk1N119fX19fX19fX19LGM6WzE3Ml19fX0sMTEyOntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbODc0Ml19LDk3OntsOnsxMDg6e2w6ezEwODp7bDp7MTAxOntsOnsxMDg6e2w6ezU5OntjOls4NzQyXX19fX19fX19fX19LDExNTp7bDp7MTA4OntsOns1OTp7YzpbMTEwMDUsODQyMV19fX19fSwxMTY6e2w6ezU5OntjOls4NzA2LDgyNF19fX19fX19LDExMTp7bDp7MTA4OntsOnsxMDU6e2w6ezExMDp7bDp7MTE2OntsOns1OTp7YzpbMTA3NzJdfX19fX19fX19fX0sMTE0OntsOns1OTp7YzpbODgzMl19LDk5OntsOnsxMTc6e2w6ezEwMTp7bDp7NTk6e2M6Wzg5MjhdfX19fX19fSwxMDE6e2w6ezU5OntjOlsxMDkyNyw4MjRdfSw5OTp7bDp7NTk6e2M6Wzg4MzJdfSwxMDE6e2w6ezExMzp7bDp7NTk6e2M6WzEwOTI3LDgyNF19fX19fX19fX19fX19LDExNDp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODY1NV19fX19fX19LDk3OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2MDNdfSw5OTp7bDp7NTk6e2M6WzEwNTQ3LDgyNF19fX0sMTE5OntsOns1OTp7YzpbODYwNSw4MjRdfX19fX19fX19LDEwNTp7bDp7MTAzOntsOnsxMDQ6e2w6ezExNjp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2MDNdfX19fX19fX19fX19fX19fX19fSwxMTY6e2w6ezExNDp7bDp7MTA1OntsOns1OTp7YzpbODkzOV19LDEwMTp7bDp7NTk6e2M6Wzg5NDFdfX19fX19fX19fX0sMTE1OntsOns5OTp7bDp7NTk6e2M6Wzg4MzNdfSw5OTp7bDp7MTE3OntsOnsxMDE6e2w6ezU5OntjOls4OTI5XX19fX19fX0sMTAxOntsOns1OTp7YzpbMTA5MjgsODI0XX19fSwxMTQ6e2w6ezU5OntjOlsxMjAwMDNdfX19fX0sMTA0OntsOnsxMTE6e2w6ezExNDp7bDp7MTE2OntsOnsxMDk6e2w6ezEwNTp7bDp7MTAwOntsOns1OTp7YzpbODc0MF19fX19fX19LDExMjp7bDp7OTc6e2w6ezExNDp7bDp7OTc6e2w6ezEwODp7bDp7MTA4OntsOnsxMDE6e2w6ezEwODp7bDp7NTk6e2M6Wzg3NDJdfX19fX19fX19fX19fX19fX19fX19fX19fSwxMDU6e2w6ezEwOTp7bDp7NTk6e2M6Wzg3NjldfSwxMDE6e2w6ezU5OntjOls4NzcyXX0sMTEzOntsOns1OTp7YzpbODc3Ml19fX19fX19fX0sMTA5OntsOnsxMDU6e2w6ezEwMDp7bDp7NTk6e2M6Wzg3NDBdfX19fX19fSwxMTI6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOls4NzQyXX19fX19fX0sMTEzOntsOnsxMTU6e2w6ezExNzp7bDp7OTg6e2w6ezEwMTp7bDp7NTk6e2M6Wzg5MzBdfX19fX0sMTEyOntsOnsxMDE6e2w6ezU5OntjOls4OTMxXX19fX19fX19fX19LDExNzp7bDp7OTg6e2w6ezU5OntjOls4ODM2XX0sNjk6e2w6ezU5OntjOlsxMDk0OSw4MjRdfX19LDEwMTp7bDp7NTk6e2M6Wzg4NDBdfX19LDExNTp7bDp7MTAxOntsOnsxMTY6e2w6ezU5OntjOls4ODM0LDg0MDJdfSwxMDE6e2w6ezExMzp7bDp7NTk6e2M6Wzg4NDBdfSwxMTM6e2w6ezU5OntjOlsxMDk0OSw4MjRdfX19fX19fX19fX19fX19LDk5OntsOns5OTp7bDp7NTk6e2M6Wzg4MzNdfSwxMDE6e2w6ezExMzp7bDp7NTk6e2M6WzEwOTI4LDgyNF19fX19fX19fX0sMTEyOntsOns1OTp7YzpbODgzN119LDY5OntsOns1OTp7YzpbMTA5NTAsODI0XX19fSwxMDE6e2w6ezU5OntjOls4ODQxXX19fSwxMTU6e2w6ezEwMTp7bDp7MTE2OntsOns1OTp7YzpbODgzNSw4NDAyXX0sMTAxOntsOnsxMTM6e2w6ezU5OntjOls4ODQxXX0sMTEzOntsOns1OTp7YzpbMTA5NTAsODI0XX19fX19fX19fX19fX19fX19fX0sMTE2OntsOnsxMDM6e2w6ezEwODp7bDp7NTk6e2M6Wzg4MjVdfX19fX0sMTA1OntsOnsxMDg6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbMjQxXX19LGM6WzI0MV19fX19fX19LDEwODp7bDp7MTAzOntsOns1OTp7YzpbODgyNF19fX19fSwxMTQ6e2w6ezEwNTp7bDp7OTc6e2w6ezExMDp7bDp7MTAzOntsOnsxMDg6e2w6ezEwMTp7bDp7MTA4OntsOnsxMDE6e2w6ezEwMjp7bDp7MTE2OntsOns1OTp7YzpbODkzOF19LDEwMTp7bDp7MTEzOntsOns1OTp7YzpbODk0MF19fX19fX19fX19fX19LDExNDp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns1OTp7YzpbODkzOV19LDEwMTp7bDp7MTEzOntsOns1OTp7YzpbODk0MV19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDExNzp7bDp7NTk6e2M6Wzk1N119LDEwOTp7bDp7NTk6e2M6WzM1XX0sMTAxOntsOnsxMTQ6e2w6ezExMTp7bDp7NTk6e2M6Wzg0NzBdfX19fX19fSwxMTU6e2w6ezExMjp7bDp7NTk6e2M6WzgxOTldfX19fX19fX19LDExODp7bDp7Njg6e2w6ezk3OntsOnsxMTU6e2w6ezEwNDp7bDp7NTk6e2M6Wzg4NzddfX19fX19fX19LDcyOntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDUwMF19fX19fX19fX0sOTc6e2w6ezExMjp7bDp7NTk6e2M6Wzg3ODEsODQwMl19fX19fSwxMDA6e2w6ezk3OntsOnsxMTU6e2w6ezEwNDp7bDp7NTk6e2M6Wzg4NzZdfX19fX19fX19LDEwMzp7bDp7MTAxOntsOns1OTp7YzpbODgwNSw4NDAyXX19fSwxMTY6e2w6ezU5OntjOls2Miw4NDAyXX19fX19LDEwNTp7bDp7MTEwOntsOnsxMDI6e2w6ezEwNTp7bDp7MTEwOntsOns1OTp7YzpbMTA3MThdfX19fX19fX19fX0sMTA4OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDQ5OF19fX19fX19LDEwMTp7bDp7NTk6e2M6Wzg4MDQsODQwMl19fX0sMTE2OntsOns1OTp7YzpbNjAsODQwMl19LDExNDp7bDp7MTA1OntsOnsxMDE6e2w6ezU5OntjOls4ODg0LDg0MDJdfX19fX19fX19fX0sMTE0OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDQ5OV19fX19fX19LDExNjp7bDp7MTE0OntsOnsxMDU6e2w6ezEwMTp7bDp7NTk6e2M6Wzg4ODUsODQwMl19fX19fX19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTA5OntsOns1OTp7YzpbODc2NCw4NDAyXX19fX19fX19fSwxMTk6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NjJdfX19fX19fSw5Nzp7bDp7MTE0OntsOnsxMDQ6e2w6ezEwNzp7bDp7NTk6e2M6WzEwNTMxXX19fX19LDExNDp7bDp7NTk6e2M6Wzg1OThdfSwxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg1OThdfX19fX19fX19fX0sMTEwOntsOnsxMDE6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDUzNV19fX19fX19fX19fX19LDExMTp7bDp7ODM6e2w6ezU5OntjOls5NDE2XX19fSw5Nzp7bDp7OTk6e2w6ezExNzp7bDp7MTE2OntsOnsxMDE6e2w6ezU5OntjOlsyNDNdfX0sYzpbMjQzXX19fX19fX0sMTE1OntsOnsxMTY6e2w6ezU5OntjOls4ODU5XX19fX19fX0sOTk6e2w6ezEwNTp7bDp7MTE0OntsOns1OTp7YzpbODg1OF19LDk5OntsOns1OTp7YzpbMjQ0XX19LGM6WzI0NF19fX19fSwxMjE6e2w6ezU5OntjOlsxMDg2XX19fX19LDEwMDp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbODg2MV19fX19fX19LDk4OntsOnsxMDg6e2w6ezk3OntsOns5OTp7bDp7NTk6e2M6WzMzN119fX19fX19fX0sMTA1OntsOnsxMTg6e2w6ezU5OntjOlsxMDgwOF19fX19fSwxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg4NTddfX19fX0sMTE1OntsOnsxMTE6e2w6ezEwODp7bDp7MTAwOntsOns1OTp7YzpbMTA2ODRdfX19fX19fX19fX0sMTAxOntsOnsxMDg6e2w6ezEwNTp7bDp7MTAzOntsOns1OTp7YzpbMzM5XX19fX19fX19fSwxMDI6e2w6ezk5OntsOnsxMDU6e2w6ezExNDp7bDp7NTk6e2M6WzEwNjg3XX19fX19fX0sMTE0OntsOns1OTp7YzpbMTIwMTA4XX19fX19LDEwMzp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOls3MzFdfX19fX0sMTE0OntsOns5Nzp7bDp7MTE4OntsOnsxMDE6e2w6ezU5OntjOlsyNDJdfX0sYzpbMjQyXX19fX19fX0sMTE2OntsOns1OTp7YzpbMTA2ODldfX19fX0sMTA0OntsOns5ODp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEwNjc3XX19fX19fX0sMTA5OntsOns1OTp7YzpbOTM3XX19fX19LDEwNTp7bDp7MTEwOntsOnsxMTY6e2w6ezU5OntjOls4NzUwXX19fX19fX0sMTA4OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjM0XX19fX19fX0sOTk6e2w6ezEwNTp7bDp7MTE0OntsOns1OTp7YzpbMTA2ODZdfX19fX0sMTE0OntsOnsxMTE6e2w6ezExNTp7bDp7MTE1OntsOns1OTp7YzpbMTA2ODNdfX19fX19fX19fX0sMTA1OntsOnsxMTA6e2w6ezEwMTp7bDp7NTk6e2M6WzgyNTRdfX19fX19fSwxMTY6e2w6ezU5OntjOlsxMDY4OF19fX19fSwxMDk6e2w6ezk3OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMzMzXX19fX19fX0sMTAxOntsOnsxMDM6e2w6ezk3OntsOns1OTp7YzpbOTY5XX19fX19fX0sMTA1OntsOns5OTp7bDp7MTE0OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6Wzk1OV19fX19fX19fX0sMTAwOntsOns1OTp7YzpbMTA2NzhdfX19LDExMDp7bDp7MTE3OntsOnsxMTU6e2w6ezU5OntjOls4ODU0XX19fX19fX19fX19LDExMTp7bDp7MTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNjBdfX19fX19fSwxMTI6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDY3OV19fX19fSwxMDE6e2w6ezExNDp7bDp7MTEyOntsOns1OTp7YzpbMTA2ODFdfX19fX19fSwxMDg6e2w6ezExNzp7bDp7MTE1OntsOns1OTp7YzpbODg1M119fX19fX19fX0sMTE0OntsOns1OTp7YzpbODc0NF19LDk3OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2MzVdfX19fX19fSwxMDA6e2w6ezU5OntjOlsxMDg0NV19LDEwMTp7bDp7MTE0OntsOns1OTp7YzpbODUwMF19LDExMTp7bDp7MTAyOntsOns1OTp7YzpbODUwMF19fX19fX19fX0sMTAyOntsOns1OTp7YzpbMTcwXX19LGM6WzE3MF19LDEwOTp7bDp7NTk6e2M6WzE4Nl19fSxjOlsxODZdfX19LDEwNTp7bDp7MTAzOntsOnsxMTE6e2w6ezEwMjp7bDp7NTk6e2M6Wzg4ODZdfX19fX19fX19LDExMTp7bDp7MTE0OntsOns1OTp7YzpbMTA4MzhdfX19fX0sMTE1OntsOnsxMDg6e2w6ezExMTp7bDp7MTEyOntsOnsxMDE6e2w6ezU5OntjOlsxMDgzOV19fX19fX19fX19fSwxMTg6e2w6ezU5OntjOlsxMDg0M119fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOls4NTAwXX19fX19LDEwODp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbMjQ4XX19LGM6WzI0OF19fX19fX19LDExMTp7bDp7MTA4OntsOns1OTp7YzpbODg1Nl19fX19fX19LDExNjp7bDp7MTA1OntsOnsxMDg6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbMjQ1XX19LGM6WzI0NV19fX19fSwxMDk6e2w6ezEwMTp7bDp7MTE1OntsOns1OTp7YzpbODg1NV19LDk3OntsOnsxMTU6e2w6ezU5OntjOlsxMDgwNl19fX19fX19fX19fX19fX0sMTE3OntsOnsxMDk6e2w6ezEwODp7bDp7NTk6e2M6WzI0Nl19fSxjOlsyNDZdfX19fX0sMTE4OntsOns5ODp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzkwMjFdfX19fX19fX19fX0sMTEyOntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbODc0MV19LDk3OntsOns1OTp7YzpbMTgyXX0sMTA4OntsOnsxMDg6e2w6ezEwMTp7bDp7MTA4OntsOns1OTp7YzpbODc0MV19fX19fX19fX19LGM6WzE4Ml19LDExNTp7bDp7MTA1OntsOnsxMDk6e2w6ezU5OntjOlsxMDk5NV19fX19fSwxMDg6e2w6ezU5OntjOlsxMTAwNV19fX19fSwxMTY6e2w6ezU5OntjOls4NzA2XX19fX19fX0sOTk6e2w6ezEyMTp7bDp7NTk6e2M6WzEwODddfX19fX0sMTAxOntsOnsxMTQ6e2w6ezk5OntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6WzM3XX19fX19fX0sMTA1OntsOnsxMTE6e2w6ezEwMDp7bDp7NTk6e2M6WzQ2XX19fX19fX0sMTA5OntsOnsxMDU6e2w6ezEwODp7bDp7NTk6e2M6WzgyNDBdfX19fX19fSwxMTI6e2w6ezU5OntjOls4ODY5XX19fSwxMTY6e2w6ezEwMTp7bDp7MTEwOntsOnsxMDc6e2w6ezU5OntjOls4MjQxXX19fX19fX19fX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAxMDldfX19fX0sMTA0OntsOnsxMDU6e2w6ezU5OntjOls5NjZdfSwxMTg6e2w6ezU5OntjOls5ODFdfX19fX0sMTA5OntsOnsxMDk6e2w6ezk3OntsOnsxMTY6e2w6ezU5OntjOls4NDk5XX19fX19fX19fSwxMTE6e2w6ezExMDp7bDp7MTAxOntsOns1OTp7YzpbOTc0Ml19fX19fX19fX0sMTA1OntsOns1OTp7YzpbOTYwXX0sMTE2OntsOns5OTp7bDp7MTA0OntsOnsxMDI6e2w6ezExMTp7bDp7MTE0OntsOnsxMDc6e2w6ezU5OntjOls4OTE2XX19fX19fX19fX19fX19fSwxMTg6e2w6ezU5OntjOls5ODJdfX19fX0sMTA4OntsOns5Nzp7bDp7MTEwOntsOns5OTp7bDp7MTA3OntsOns1OTp7YzpbODQ2M119LDEwNDp7bDp7NTk6e2M6Wzg0NjJdfX19fX19fSwxMDc6e2w6ezExODp7bDp7NTk6e2M6Wzg0NjNdfX19fX19fX19LDExNzp7bDp7MTE1OntsOns1OTp7YzpbNDNdfSw5Nzp7bDp7OTk6e2w6ezEwNTp7bDp7MTE0OntsOns1OTp7YzpbMTA3ODddfX19fX19fX19LDk4OntsOns1OTp7YzpbODg2Ml19fX0sOTk6e2w6ezEwNTp7bDp7MTE0OntsOns1OTp7YzpbMTA3ODZdfX19fX19fSwxMDA6e2w6ezExMTp7bDp7NTk6e2M6Wzg3MjRdfX19LDExNzp7bDp7NTk6e2M6WzEwNzg5XX19fX19LDEwMTp7bDp7NTk6e2M6WzEwODY2XX19fSwxMDk6e2w6ezExMDp7bDp7NTk6e2M6WzE3N119fSxjOlsxNzddfX19LDExNTp7bDp7MTA1OntsOnsxMDk6e2w6ezU5OntjOlsxMDc5MF19fX19fX19LDExNjp7bDp7MTE5OntsOnsxMTE6e2w6ezU5OntjOlsxMDc5MV19fX19fX19fX19fX19LDEwOTp7bDp7NTk6e2M6WzE3N119fX0sMTExOntsOnsxMDU6e2w6ezExMDp7bDp7MTE2OntsOnsxMDU6e2w6ezExMDp7bDp7MTE2OntsOns1OTp7YzpbMTA3NzNdfX19fX19fX19fX19fSwxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDE2MV19fX19fSwxMTc6e2w6ezExMDp7bDp7MTAwOntsOns1OTp7YzpbMTYzXX19LGM6WzE2M119fX19fX19LDExNDp7bDp7NTk6e2M6Wzg4MjZdfSw2OTp7bDp7NTk6e2M6WzEwOTMxXX19fSw5Nzp7bDp7MTEyOntsOns1OTp7YzpbMTA5MzVdfX19fX0sOTk6e2w6ezExNzp7bDp7MTAxOntsOns1OTp7YzpbODgyOF19fX19fX19LDEwMTp7bDp7NTk6e2M6WzEwOTI3XX0sOTk6e2w6ezU5OntjOls4ODI2XX0sOTc6e2w6ezExMjp7bDp7MTEyOntsOnsxMTQ6e2w6ezExMTp7bDp7MTIwOntsOns1OTp7YzpbMTA5MzVdfX19fX19fX19fX19fSw5OTp7bDp7MTE3OntsOnsxMTQ6e2w6ezEwODp7bDp7MTIxOntsOnsxMDE6e2w6ezExMzp7bDp7NTk6e2M6Wzg4MjhdfX19fX19fX19fX19fX19LDEwMTp7bDp7MTEzOntsOns1OTp7YzpbMTA5MjddfX19fX0sMTEwOntsOns5Nzp7bDp7MTEyOntsOnsxMTI6e2w6ezExNDp7bDp7MTExOntsOnsxMjA6e2w6ezU5OntjOlsxMDkzN119fX19fX19fX19fX19LDEwMTp7bDp7MTEzOntsOnsxMTM6e2w6ezU5OntjOlsxMDkzM119fX19fX19LDExNTp7bDp7MTA1OntsOnsxMDk6e2w6ezU5OntjOls4OTM2XX19fX19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTA5OntsOns1OTp7YzpbODgzMF19fX19fX19fX19fSwxMDU6e2w6ezEwOTp7bDp7MTAxOntsOns1OTp7YzpbODI0Ml19LDExNTp7bDp7NTk6e2M6Wzg0NzNdfX19fX19fX19LDExMDp7bDp7Njk6e2w6ezU5OntjOlsxMDkzM119fX0sOTc6e2w6ezExMjp7bDp7NTk6e2M6WzEwOTM3XX19fX19LDExNTp7bDp7MTA1OntsOnsxMDk6e2w6ezU5OntjOls4OTM2XX19fX19fX19fSwxMTE6e2w6ezEwMDp7bDp7NTk6e2M6Wzg3MTldfX19LDEwMjp7bDp7OTc6e2w6ezEwODp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzkwMDZdfX19fX19fX19LDEwODp7bDp7MTA1OntsOnsxMTA6e2w6ezEwMTp7bDp7NTk6e2M6Wzg5NzhdfX19fX19fX19LDExNTp7bDp7MTE3OntsOnsxMTQ6e2w6ezEwMjp7bDp7NTk6e2M6Wzg5NzldfX19fX19fX19fX0sMTEyOntsOns1OTp7YzpbODczM119LDExNjp7bDp7MTExOntsOns1OTp7YzpbODczM119fX19fX19fX0sMTE1OntsOnsxMDU6e2w6ezEwOTp7bDp7NTk6e2M6Wzg4MzBdfX19fX19fSwxMTc6e2w6ezExNDp7bDp7MTAxOntsOnsxMDg6e2w6ezU5OntjOls4ODgwXX19fX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDAwNV19fX19fSwxMDU6e2w6ezU5OntjOls5NjhdfX19fX0sMTE3OntsOnsxMTA6e2w6ezk5OntsOnsxMTU6e2w6ezExMjp7bDp7NTk6e2M6WzgyMDBdfX19fX19fX19fX19fSwxMTM6e2w6ezEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMTEwXX19fX19LDEwNTp7bDp7MTEwOntsOnsxMTY6e2w6ezU5OntjOlsxMDc2NF19fX19fX19LDExMTp7bDp7MTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNjJdfX19fX19fSwxMTI6e2w6ezExNDp7bDp7MTA1OntsOnsxMDk6e2w6ezEwMTp7bDp7NTk6e2M6WzgyNzldfX19fX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDA2XX19fX19fX0sMTE3OntsOns5Nzp7bDp7MTE2OntsOnsxMDE6e2w6ezExNDp7bDp7MTEwOntsOnsxMDU6e2w6ezExMTp7bDp7MTEwOntsOnsxMTU6e2w6ezU5OntjOls4NDYxXX19fX19fX19fX19fX19fSwxMDU6e2w6ezExMDp7bDp7MTE2OntsOns1OTp7YzpbMTA3NzRdfX19fX19fX19fX0sMTAxOntsOnsxMTU6e2w6ezExNjp7bDp7NTk6e2M6WzYzXX0sMTAxOntsOnsxMTM6e2w6ezU5OntjOls4Nzk5XX19fX19fX19fX19LDExMTp7bDp7MTE2OntsOns1OTp7YzpbMzRdfX0sYzpbMzRdfX19fX19fSwxMTQ6e2w6ezY1OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjY3XX19fX19fX0sMTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjU4XX19fX19LDExNjp7bDp7OTc6e2w6ezEwNTp7bDp7MTA4OntsOns1OTp7YzpbMTA1MjRdfX19fX19fX19fX0sNjY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTExXX19fX19fX19fSw3Mjp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEwNTk2XX19fX19fX0sOTc6e2w6ezk5OntsOnsxMDE6e2w6ezU5OntjOls4NzY1LDgxN119fX0sMTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzM0MV19fX19fX19fX0sMTAwOntsOnsxMDU6e2w6ezk5OntsOns1OTp7YzpbODczMF19fX19fX19LDEwMTp7bDp7MTA5OntsOnsxMTI6e2w6ezExNjp7bDp7MTIxOntsOnsxMTg6e2w6ezU5OntjOlsxMDY3NV19fX19fX19fX19fX19LDExMDp7bDp7MTAzOntsOns1OTp7YzpbMTAyMTddfSwxMDA6e2w6ezU5OntjOlsxMDY0Ml19fX0sMTAxOntsOns1OTp7YzpbMTA2NjFdfX19LDEwODp7bDp7MTAxOntsOns1OTp7YzpbMTAyMTddfX19fX19fX19LDExMzp7bDp7MTE3OntsOnsxMTE6e2w6ezU5OntjOlsxODddfX0sYzpbMTg3XX19fX19LDExNDp7bDp7MTE0OntsOns1OTp7YzpbODU5NF19LDk3OntsOnsxMTI6e2w6ezU5OntjOlsxMDYxM119fX19fSw5ODp7bDp7NTk6e2M6Wzg2NzddfSwxMDI6e2w6ezExNTp7bDp7NTk6e2M6WzEwNTI4XX19fX19fX0sOTk6e2w6ezU5OntjOlsxMDU0N119fX0sMTAyOntsOnsxMTU6e2w6ezU5OntjOlsxMDUyNl19fX19fSwxMDQ6e2w6ezEwNzp7bDp7NTk6e2M6Wzg2MThdfX19fX0sMTA4OntsOnsxMTI6e2w6ezU5OntjOls4NjIwXX19fX19LDExMjp7bDp7MTA4OntsOns1OTp7YzpbMTA1NjVdfX19fX0sMTE1OntsOnsxMDU6e2w6ezEwOTp7bDp7NTk6e2M6WzEwNjEyXX19fX19fX0sMTE2OntsOnsxMDg6e2w6ezU5OntjOls4NjExXX19fX19LDExOTp7bDp7NTk6e2M6Wzg2MDVdfX19fX19fSwxMTY6e2w6ezk3OntsOnsxMDU6e2w6ezEwODp7bDp7NTk6e2M6WzEwNTIyXX19fX19fX0sMTA1OntsOnsxMTE6e2w6ezU5OntjOls4NzU4XX0sMTEwOntsOns5Nzp7bDp7MTA4OntsOnsxMTU6e2w6ezU5OntjOls4NDc0XX19fX19fX19fX19fX19fX19LDk4OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDUwOV19fX19fX19LDk4OntsOnsxMTQ6e2w6ezEwNzp7bDp7NTk6e2M6WzEwMDk5XX19fX19fX0sMTE0OntsOns5Nzp7bDp7OTk6e2w6ezEwMTp7bDp7NTk6e2M6WzEyNV19fX0sMTA3OntsOns1OTp7YzpbOTNdfX19fX19fSwxMDc6e2w6ezEwMTp7bDp7NTk6e2M6WzEwNjM2XX19fSwxMTU6e2w6ezEwODp7bDp7MTAwOntsOns1OTp7YzpbMTA2MzhdfX19LDExNzp7bDp7NTk6e2M6WzEwNjQwXX19fX19fX19fX19fX0sOTk6e2w6ezk3OntsOnsxMTQ6e2w6ezExMTp7bDp7MTEwOntsOns1OTp7YzpbMzQ1XX19fX19fX19fSwxMDE6e2w6ezEwMDp7bDp7MTA1OntsOnsxMDg6e2w6ezU5OntjOlszNDNdfX19fX19fSwxMDU6e2w6ezEwODp7bDp7NTk6e2M6Wzg5NjldfX19fX19fSwxMTc6e2w6ezk4OntsOns1OTp7YzpbMTI1XX19fX19LDEyMTp7bDp7NTk6e2M6WzEwODhdfX19fX0sMTAwOntsOns5OTp7bDp7OTc6e2w6ezU5OntjOlsxMDU1MV19fX19fSwxMDg6e2w6ezEwMDp7bDp7MTA0OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA2MDFdfX19fX19fX19fX0sMTEzOntsOnsxMTc6e2w6ezExMTp7bDp7NTk6e2M6WzgyMjFdfSwxMTQ6e2w6ezU5OntjOls4MjIxXX19fX19fX19fSwxMTU6e2w6ezEwNDp7bDp7NTk6e2M6Wzg2MjddfX19fX19fSwxMDE6e2w6ezk3OntsOnsxMDg6e2w6ezU5OntjOls4NDc2XX0sMTA1OntsOnsxMTA6e2w6ezEwMTp7bDp7NTk6e2M6Wzg0NzVdfX19fX19fSwxMTI6e2w6ezk3OntsOnsxMTQ6e2w6ezExNjp7bDp7NTk6e2M6Wzg0NzZdfX19fX19fX19LDExNTp7bDp7NTk6e2M6Wzg0NzddfX19fX19fSw5OTp7bDp7MTE2OntsOns1OTp7YzpbOTY0NV19fX19fSwxMDM6e2w6ezU5OntjOlsxNzRdfX0sYzpbMTc0XX19fSwxMDI6e2w6ezEwNTp7bDp7MTE1OntsOnsxMDQ6e2w6ezExNjp7bDp7NTk6e2M6WzEwNjIxXX19fX19fX19fSwxMDg6e2w6ezExMTp7bDp7MTExOntsOnsxMTQ6e2w6ezU5OntjOls4OTcxXX19fX19fX19fSwxMTQ6e2w6ezU5OntjOlsxMjAxMTFdfX19fX0sMTA0OntsOns5Nzp7bDp7MTE0OntsOnsxMDA6e2w6ezU5OntjOls4NjQxXX19fSwxMTc6e2w6ezU5OntjOls4NjQwXX0sMTA4OntsOns1OTp7YzpbMTA2MDRdfX19fX19fX19LDExMTp7bDp7NTk6e2M6Wzk2MV19LDExODp7bDp7NTk6e2M6WzEwMDldfX19fX19fSwxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NTk0XX0sMTE2OntsOns5Nzp7bDp7MTA1OntsOnsxMDg6e2w6ezU5OntjOls4NjExXX19fX19fX19fX19fX19fX19fX0sMTA0OntsOns5Nzp7bDp7MTE0OntsOnsxMTI6e2w6ezExMTp7bDp7MTExOntsOnsxMTA6e2w6ezEwMDp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7NTk6e2M6Wzg2NDFdfX19fX19fX19LDExNzp7bDp7MTEyOntsOns1OTp7YzpbODY0MF19fX19fX19fX19fX19fX19fX19LDEwODp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7MTE1OntsOns1OTp7YzpbODY0NF19fX19fX19fX19fX19LDEwNDp7bDp7OTc6e2w6ezExNDp7bDp7MTEyOntsOnsxMTE6e2w6ezExMTp7bDp7MTEwOntsOnsxMTU6e2w6ezU5OntjOls4NjUyXX19fX19fX19fX19fX19fX19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezExNTp7bDp7NTk6e2M6Wzg2NDldfX19fX19fX19fX19fX19fX19fX19fX0sMTE1OntsOnsxMTM6e2w6ezExNzp7bDp7MTA1OntsOnsxMDM6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjA1XX19fX19fX19fX19fX19fX19fX19fSwxMTY6e2w6ezEwNDp7bDp7MTE0OntsOnsxMDE6e2w6ezEwMTp7bDp7MTE2OntsOnsxMDU6e2w6ezEwOTp7bDp7MTAxOntsOnsxMTU6e2w6ezU5OntjOls4OTA4XX19fX19fX19fX19fX19fX19fX19fX19fX19fSwxMTA6e2w6ezEwMzp7bDp7NTk6e2M6WzczMF19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTEwOntsOnsxMDM6e2w6ezEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezExNTp7bDp7MTAxOntsOnsxMTM6e2w6ezU5OntjOls4Nzg3XX19fX19fX19fX19fX19fX19fX19fX19LDEwODp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODY0NF19fX19fX19LDEwNDp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NTJdfX19fX19fSwxMDk6e2w6ezU5OntjOls4MjA3XX19fX19LDEwOTp7bDp7MTExOntsOnsxMTc6e2w6ezExNTp7bDp7MTE2OntsOns1OTp7YzpbOTEzN119LDk3OntsOns5OTp7bDp7MTA0OntsOnsxMDE6e2w6ezU5OntjOls5MTM3XX19fX19fX19fX19fX19fX19fX0sMTEwOntsOnsxMDk6e2w6ezEwNTp7bDp7MTAwOntsOns1OTp7YzpbMTA5OTBdfX19fX19fX19LDExMTp7bDp7OTc6e2w6ezExMDp7bDp7MTAzOntsOns1OTp7YzpbMTAyMjFdfX19fX0sMTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NzAyXX19fX19fX0sOTg6e2w6ezExNDp7bDp7MTA3OntsOns1OTp7YzpbMTAyMTVdfX19fX19fSwxMTI6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDYzMF19fX19fSwxMDI6e2w6ezU5OntjOlsxMjAxNjNdfX19LDEwODp7bDp7MTE3OntsOnsxMTU6e2w6ezU5OntjOlsxMDc5OF19fX19fX19fX0sMTE2OntsOnsxMDU6e2w6ezEwOTp7bDp7MTAxOntsOnsxMTU6e2w6ezU5OntjOlsxMDgwNV19fX19fX19fX19fX19LDExMjp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzQxXX0sMTAzOntsOnsxMTY6e2w6ezU5OntjOlsxMDY0NF19fX19fX19fX0sMTEyOntsOnsxMTE6e2w6ezEwODp7bDp7MTA1OntsOnsxMTA6e2w6ezExNjp7bDp7NTk6e2M6WzEwNzcwXX19fX19fX19fX19fX19fSwxMTQ6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NDldfX19fX19fX19LDExNTp7bDp7OTc6e2w6ezExMzp7bDp7MTE3OntsOnsxMTE6e2w6ezU5OntjOls4MjUwXX19fX19fX19fSw5OTp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDA3XX19fX19LDEwNDp7bDp7NTk6e2M6Wzg2MjVdfX19LDExMzp7bDp7OTg6e2w6ezU5OntjOls5M119fX0sMTE3OntsOnsxMTE6e2w6ezU5OntjOls4MjE3XX0sMTE0OntsOns1OTp7YzpbODIxN119fX19fX19fX19fSwxMTY6e2w6ezEwNDp7bDp7MTE0OntsOnsxMDE6e2w6ezEwMTp7bDp7NTk6e2M6Wzg5MDhdfX19fX19fX19LDEwNTp7bDp7MTA5OntsOnsxMDE6e2w6ezExNTp7bDp7NTk6e2M6Wzg5MDZdfX19fX19fX19LDExNDp7bDp7MTA1OntsOns1OTp7YzpbOTY1N119LDEwMTp7bDp7NTk6e2M6Wzg4ODVdfX19LDEwMjp7bDp7NTk6e2M6Wzk2NTZdfX19LDEwODp7bDp7MTE2OntsOnsxMTQ6e2w6ezEwNTp7bDp7NTk6e2M6WzEwNzAyXX19fX19fX19fX19fX19fSwxMTc6e2w6ezEwODp7bDp7MTE3OntsOnsxMDQ6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDYwMF19fX19fX19fX19fX19LDEyMDp7bDp7NTk6e2M6Wzg0NzhdfX19fX0sMTE1OntsOns5Nzp7bDp7OTk6e2w6ezExNzp7bDp7MTE2OntsOnsxMDE6e2w6ezU5OntjOlszNDddfX19fX19fX19fX0sOTg6e2w6ezExMzp7bDp7MTE3OntsOnsxMTE6e2w6ezU5OntjOls4MjE4XX19fX19fX19fSw5OTp7bDp7NTk6e2M6Wzg4MjddfSw2OTp7bDp7NTk6e2M6WzEwOTMyXX19fSw5Nzp7bDp7MTEyOntsOns1OTp7YzpbMTA5MzZdfX19LDExNDp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOlszNTNdfX19fX19fX19LDk5OntsOnsxMTc6e2w6ezEwMTp7bDp7NTk6e2M6Wzg4MjldfX19fX19fSwxMDE6e2w6ezU5OntjOlsxMDkyOF19LDEwMDp7bDp7MTA1OntsOnsxMDg6e2w6ezU5OntjOlszNTFdfX19fX19fX19LDEwNTp7bDp7MTE0OntsOns5OTp7bDp7NTk6e2M6WzM0OV19fX19fX19LDExMDp7bDp7Njk6e2w6ezU5OntjOlsxMDkzNF19fX0sOTc6e2w6ezExMjp7bDp7NTk6e2M6WzEwOTM4XX19fX19LDExNTp7bDp7MTA1OntsOnsxMDk6e2w6ezU5OntjOls4OTM3XX19fX19fX19fSwxMTI6e2w6ezExMTp7bDp7MTA4OntsOnsxMDU6e2w6ezExMDp7bDp7MTE2OntsOns1OTp7YzpbMTA3NzFdfX19fX19fX19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTA5OntsOns1OTp7YzpbODgzMV19fX19fX19LDEyMTp7bDp7NTk6e2M6WzEwODldfX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg5MDFdfSw5ODp7bDp7NTk6e2M6Wzg4NjVdfX19LDEwMTp7bDp7NTk6e2M6WzEwODU0XX19fX19fX19fSwxMDE6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NjRdfX19fX19fSw5Nzp7bDp7MTE0OntsOnsxMDQ6e2w6ezEwNzp7bDp7NTk6e2M6WzEwNTMzXX19fX19LDExNDp7bDp7NTk6e2M6Wzg2MDBdfSwxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2MDBdfX19fX19fX19fX0sOTk6e2w6ezExNjp7bDp7NTk6e2M6WzE2N119fSxjOlsxNjddfX19LDEwOTp7bDp7MTA1OntsOns1OTp7YzpbNTldfX19fX0sMTE1OntsOnsxMTk6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDUzN119fX19fX19fX0sMTE2OntsOnsxMDk6e2w6ezEwNTp7bDp7MTEwOntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6Wzg3MjZdfX19fX19fX19LDExMDp7bDp7NTk6e2M6Wzg3MjZdfX19fX19fSwxMjA6e2w6ezExNjp7bDp7NTk6e2M6WzEwMDM4XX19fX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAxMTJdfSwxMTE6e2w6ezExOTp7bDp7MTEwOntsOns1OTp7YzpbODk5NF19fX19fX19fX19fSwxMDQ6e2w6ezk3OntsOnsxMTQ6e2w6ezExMjp7bDp7NTk6e2M6Wzk4MzldfX19fX19fSw5OTp7bDp7MTA0OntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTA5N119fX19fX19LDEyMTp7bDp7NTk6e2M6WzEwOTZdfX19fX0sMTExOntsOnsxMTQ6e2w6ezExNjp7bDp7MTA5OntsOnsxMDU6e2w6ezEwMDp7bDp7NTk6e2M6Wzg3MzldfX19fX19fSwxMTI6e2w6ezk3OntsOnsxMTQ6e2w6ezk3OntsOnsxMDg6e2w6ezEwODp7bDp7MTAxOntsOnsxMDg6e2w6ezU5OntjOls4NzQxXX19fX19fX19fX19fX19fX19fX19fX19LDEyMTp7bDp7NTk6e2M6WzE3M119fSxjOlsxNzNdfX19LDEwNTp7bDp7MTAzOntsOnsxMDk6e2w6ezk3OntsOns1OTp7YzpbOTYzXX0sMTAyOntsOns1OTp7YzpbOTYyXX19fSwxMTg6e2w6ezU5OntjOls5NjJdfX19fX19fX19LDEwOTp7bDp7NTk6e2M6Wzg3NjRdfSwxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMTA4NThdfX19fX19fSwxMDE6e2w6ezU5OntjOls4NzcxXX0sMTEzOntsOns1OTp7YzpbODc3MV19fX19fSwxMDM6e2w6ezU5OntjOlsxMDkxMF19LDY5OntsOns1OTp7YzpbMTA5MTJdfX19fX0sMTA4OntsOns1OTp7YzpbMTA5MDldfSw2OTp7bDp7NTk6e2M6WzEwOTExXX19fX19LDExMDp7bDp7MTAxOntsOns1OTp7YzpbODc3NF19fX19fSwxMTI6e2w6ezEwODp7bDp7MTE3OntsOnsxMTU6e2w6ezU5OntjOlsxMDc4OF19fX19fX19fX0sMTE0OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDYxMF19fX19fX19fX19fX19LDEwODp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODU5Ml19fX19fX19fX0sMTA5OntsOns5Nzp7bDp7MTA4OntsOnsxMDg6e2w6ezExNTp7bDp7MTAxOntsOnsxMTY6e2w6ezEwOTp7bDp7MTA1OntsOnsxMTA6e2w6ezExNzp7bDp7MTE1OntsOns1OTp7YzpbODcyNl19fX19fX19fX19fX19fX19fX19fX0sMTE1OntsOnsxMDQ6e2w6ezExMjp7bDp7NTk6e2M6WzEwODAzXX19fX19fX19fSwxMDE6e2w6ezExMjp7bDp7OTc6e2w6ezExNDp7bDp7MTE1OntsOnsxMDg6e2w6ezU5OntjOlsxMDcyNF19fX19fX19fX19fX19LDEwNTp7bDp7MTAwOntsOns1OTp7YzpbODczOV19fX0sMTA4OntsOnsxMDE6e2w6ezU5OntjOls4OTk1XX19fX19fX0sMTE2OntsOns1OTp7YzpbMTA5MjJdfSwxMDE6e2w6ezU5OntjOlsxMDkyNF19LDExNTp7bDp7NTk6e2M6WzEwOTI0LDY1MDI0XX19fX19fX19fSwxMTE6e2w6ezEwMjp7bDp7MTE2OntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTEwMF19fX19fX19fX0sMTA4OntsOns1OTp7YzpbNDddfSw5ODp7bDp7NTk6e2M6WzEwNjkyXX0sOTc6e2w6ezExNDp7bDp7NTk6e2M6WzkwMjNdfX19fX19fX19LDExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTY0XX19fX19fX0sMTEyOntsOns5Nzp7bDp7MTAwOntsOnsxMDE6e2w6ezExNTp7bDp7NTk6e2M6Wzk4MjRdfSwxMTc6e2w6ezEwNTp7bDp7MTE2OntsOns1OTp7YzpbOTgyNF19fX19fX19fX19fX19LDExNDp7bDp7NTk6e2M6Wzg3NDFdfX19fX19fSwxMTM6e2w6ezk5OntsOns5Nzp7bDp7MTEyOntsOns1OTp7YzpbODg1MV19LDExNTp7bDp7NTk6e2M6Wzg4NTEsNjUwMjRdfX19fX19fSwxMTc6e2w6ezExMjp7bDp7NTk6e2M6Wzg4NTJdfSwxMTU6e2w6ezU5OntjOls4ODUyLDY1MDI0XX19fX19fX19fSwxMTU6e2w6ezExNzp7bDp7OTg6e2w6ezU5OntjOls4ODQ3XX0sMTAxOntsOns1OTp7YzpbODg0OV19fX0sMTE1OntsOnsxMDE6e2w6ezExNjp7bDp7NTk6e2M6Wzg4NDddfSwxMDE6e2w6ezExMzp7bDp7NTk6e2M6Wzg4NDldfX19fX19fX19fX19fSwxMTI6e2w6ezU5OntjOls4ODQ4XX0sMTAxOntsOns1OTp7YzpbODg1MF19fX0sMTE1OntsOnsxMDE6e2w6ezExNjp7bDp7NTk6e2M6Wzg4NDhdfSwxMDE6e2w6ezExMzp7bDp7NTk6e2M6Wzg4NTBdfX19fX19fX19fX19fX19fX0sMTE3OntsOns1OTp7YzpbOTYzM119LDk3OntsOnsxMTQ6e2w6ezEwMTp7bDp7NTk6e2M6Wzk2MzNdfX19LDEwMjp7bDp7NTk6e2M6Wzk2NDJdfX19fX19fSwxMDI6e2w6ezU5OntjOls5NjQyXX19fX19fX0sMTE0OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NTk0XX19fX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwMDhdfX19fX0sMTAxOntsOnsxMTY6e2w6ezEwOTp7bDp7MTEwOntsOns1OTp7YzpbODcyNl19fX19fX19fX0sMTA5OntsOnsxMDU6e2w6ezEwODp7bDp7MTAxOntsOns1OTp7YzpbODk5NV19fX19fX19fX0sMTE2OntsOns5Nzp7bDp7MTE0OntsOnsxMDI6e2w6ezU5OntjOls4OTAyXX19fX19fX19fX19LDExNjp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6Wzk3MzRdfSwxMDI6e2w6ezU5OntjOls5NzMzXX19fX19fX0sMTE0OntsOns5Nzp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOnsxMDE6e2w6ezExMjp7bDp7MTE1OntsOnsxMDU6e2w6ezEwODp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOlsxMDEzXX19fX19fX19fX19fX19fSwxMTI6e2w6ezEwNDp7bDp7MTA1OntsOns1OTp7YzpbOTgxXX19fX19fX19fX19fX19fX19LDExMDp7bDp7MTE1OntsOns1OTp7YzpbMTc1XX19fX19fX19fSwxMTc6e2w6ezk4OntsOns1OTp7YzpbODgzNF19LDY5OntsOns1OTp7YzpbMTA5NDldfX19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOlsxMDk0MV19fX19fX19LDEwMTp7bDp7NTk6e2M6Wzg4MzhdfSwxMDA6e2w6ezExMTp7bDp7MTE2OntsOns1OTp7YzpbMTA5NDddfX19fX19fX19LDEwOTp7bDp7MTE3OntsOnsxMDg6e2w6ezExNjp7bDp7NTk6e2M6WzEwOTQ1XX19fX19fX19fSwxMTA6e2w6ezY5OntsOns1OTp7YzpbMTA5NTVdfX19LDEwMTp7bDp7NTk6e2M6Wzg4NDJdfX19fX0sMTEyOntsOnsxMDg6e2w6ezExNzp7bDp7MTE1OntsOns1OTp7YzpbMTA5NDNdfX19fX19fX19LDExNDp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbMTA2MTddfX19fX19fX19LDExNTp7bDp7MTAxOntsOnsxMTY6e2w6ezU5OntjOls4ODM0XX0sMTAxOntsOnsxMTM6e2w6ezU5OntjOls4ODM4XX0sMTEzOntsOns1OTp7YzpbMTA5NDldfX19fX19fSwxMTA6e2w6ezEwMTp7bDp7MTEzOntsOns1OTp7YzpbODg0Ml19LDExMzp7bDp7NTk6e2M6WzEwOTU1XX19fX19fX19fX19fX0sMTA1OntsOnsxMDk6e2w6ezU5OntjOlsxMDk1MV19fX19fSwxMTc6e2w6ezk4OntsOns1OTp7YzpbMTA5NjVdfX19LDExMjp7bDp7NTk6e2M6WzEwOTYzXX19fX19fX19fSw5OTp7bDp7OTk6e2w6ezU5OntjOls4ODI3XX0sOTc6e2w6ezExMjp7bDp7MTEyOntsOnsxMTQ6e2w6ezExMTp7bDp7MTIwOntsOns1OTp7YzpbMTA5MzZdfX19fX19fX19fX19fSw5OTp7bDp7MTE3OntsOnsxMTQ6e2w6ezEwODp7bDp7MTIxOntsOnsxMDE6e2w6ezExMzp7bDp7NTk6e2M6Wzg4MjldfX19fX19fX19fX19fX19LDEwMTp7bDp7MTEzOntsOns1OTp7YzpbMTA5MjhdfX19fX0sMTEwOntsOns5Nzp7bDp7MTEyOntsOnsxMTI6e2w6ezExNDp7bDp7MTExOntsOnsxMjA6e2w6ezU5OntjOlsxMDkzOF19fX19fX19fX19fX19LDEwMTp7bDp7MTEzOntsOnsxMTM6e2w6ezU5OntjOlsxMDkzNF19fX19fX19LDExNTp7bDp7MTA1OntsOnsxMDk6e2w6ezU5OntjOls4OTM3XX19fX19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTA5OntsOns1OTp7YzpbODgzMV19fX19fX19fX19fSwxMDk6e2w6ezU5OntjOls4NzIxXX19fSwxMTA6e2w6ezEwMzp7bDp7NTk6e2M6Wzk4MzRdfX19fX0sMTEyOntsOns0OTp7bDp7NTk6e2M6WzE4NV19fSxjOlsxODVdfSw1MDp7bDp7NTk6e2M6WzE3OF19fSxjOlsxNzhdfSw1MTp7bDp7NTk6e2M6WzE3OV19fSxjOlsxNzldfSw1OTp7YzpbODgzNV19LDY5OntsOns1OTp7YzpbMTA5NTBdfX19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOlsxMDk0Ml19fX19fSwxMTU6e2w6ezExNzp7bDp7OTg6e2w6ezU5OntjOlsxMDk2OF19fX19fX19fX0sMTAxOntsOns1OTp7YzpbODgzOV19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOlsxMDk0OF19fX19fX19fX0sMTA0OntsOnsxMTU6e2w6ezExMTp7bDp7MTA4OntsOns1OTp7YzpbMTAxODVdfX19fX0sMTE3OntsOns5ODp7bDp7NTk6e2M6WzEwOTY3XX19fX19fX19fSwxMDg6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6WzEwNjE5XX19fX19fX19fSwxMDk6e2w6ezExNzp7bDp7MTA4OntsOnsxMTY6e2w6ezU5OntjOlsxMDk0Nl19fX19fX19fX0sMTEwOntsOns2OTp7bDp7NTk6e2M6WzEwOTU2XX19fSwxMDE6e2w6ezU5OntjOls4ODQzXX19fX19LDExMjp7bDp7MTA4OntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6WzEwOTQ0XX19fX19fX19fSwxMTU6e2w6ezEwMTp7bDp7MTE2OntsOns1OTp7YzpbODgzNV19LDEwMTp7bDp7MTEzOntsOns1OTp7YzpbODgzOV19LDExMzp7bDp7NTk6e2M6WzEwOTUwXX19fX19fX0sMTEwOntsOnsxMDE6e2w6ezExMzp7bDp7NTk6e2M6Wzg4NDNdfSwxMTM6e2w6ezU5OntjOlsxMDk1Nl19fX19fX19fX19fX19LDEwNTp7bDp7MTA5OntsOns1OTp7YzpbMTA5NTJdfX19fX0sMTE3OntsOns5ODp7bDp7NTk6e2M6WzEwOTY0XX19fSwxMTI6e2w6ezU5OntjOlsxMDk2Nl19fX19fX19fX19fSwxMTk6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6Wzg2NjVdfX19fX19fSw5Nzp7bDp7MTE0OntsOnsxMDQ6e2w6ezEwNzp7bDp7NTk6e2M6WzEwNTM0XX19fX19LDExNDp7bDp7NTk6e2M6Wzg2MDFdfSwxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg2MDFdfX19fX19fX19fX0sMTEwOntsOnsxMTk6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDUzOF19fX19fX19fX19fSwxMjI6e2w6ezEwODp7bDp7MTA1OntsOnsxMDM6e2w6ezU5OntjOlsyMjNdfX0sYzpbMjIzXX19fX19fX19fSwxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezEwMzp7bDp7MTAxOntsOnsxMTY6e2w6ezU5OntjOls4OTgyXX19fX19fX19fSwxMTc6e2w6ezU5OntjOls5NjRdfX19fX0sOTg6e2w6ezExNDp7bDp7MTA3OntsOns1OTp7YzpbOTE0MF19fX19fX19LDk5OntsOns5Nzp7bDp7MTE0OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzM1N119fX19fX19fX0sMTAxOntsOnsxMDA6e2w6ezEwNTp7bDp7MTA4OntsOns1OTp7YzpbMzU1XX19fX19fX19fSwxMjE6e2w6ezU5OntjOlsxMDkwXX19fX19LDEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOls4NDExXX19fX19fX0sMTAxOntsOnsxMDg6e2w6ezExNDp7bDp7MTAxOntsOns5OTp7bDp7NTk6e2M6Wzg5ODFdfX19fX19fX19fX0sMTAyOntsOnsxMTQ6e2w6ezU5OntjOlsxMjAxMTNdfX19fX0sMTA0OntsOnsxMDE6e2w6ezExNDp7bDp7MTAxOntsOns1Mjp7bDp7NTk6e2M6Wzg3NTZdfX19LDEwMjp7bDp7MTExOntsOnsxMTQ6e2w6ezEwMTp7bDp7NTk6e2M6Wzg3NTZdfX19fX19fX19fX19fSwxMTY6e2w6ezk3OntsOns1OTp7YzpbOTUyXX0sMTE1OntsOnsxMjE6e2w6ezEwOTp7bDp7NTk6e2M6Wzk3N119fX19fX19LDExODp7bDp7NTk6e2M6Wzk3N119fX19fX19fX0sMTA1OntsOns5OTp7bDp7MTA3OntsOns5Nzp7bDp7MTEyOntsOnsxMTI6e2w6ezExNDp7bDp7MTExOntsOnsxMjA6e2w6ezU5OntjOls4Nzc2XX19fX19fX19fX19fX0sMTE1OntsOnsxMDU6e2w6ezEwOTp7bDp7NTk6e2M6Wzg3NjRdfX19fX19fX19fX0sMTEwOntsOnsxMTU6e2w6ezExMjp7bDp7NTk6e2M6WzgyMDFdfX19fX19fX19LDEwNzp7bDp7OTc6e2w6ezExMjp7bDp7NTk6e2M6Wzg3NzZdfX19fX0sMTE1OntsOnsxMDU6e2w6ezEwOTp7bDp7NTk6e2M6Wzg3NjRdfX19fX19fX19LDExMTp7bDp7MTE0OntsOnsxMTA6e2w6ezU5OntjOlsyNTRdfX0sYzpbMjU0XX19fX19fX0sMTA1OntsOnsxMDg6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbNzMyXX19fX19fX0sMTA5OntsOnsxMDE6e2w6ezExNTp7bDp7NTk6e2M6WzIxNV19LDk4OntsOns1OTp7YzpbODg2NF19LDk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDgwMV19fX19fX19LDEwMDp7bDp7NTk6e2M6WzEwODAwXX19fX0sYzpbMjE1XX19fX19LDExMDp7bDp7MTE2OntsOns1OTp7YzpbODc0OV19fX19fX19LDExMTp7bDp7MTAxOntsOns5Nzp7bDp7NTk6e2M6WzEwNTM2XX19fX19LDExMjp7bDp7NTk6e2M6Wzg4NjhdfSw5ODp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOls5MDE0XX19fX19fX0sOTk6e2w6ezEwNTp7bDp7MTE0OntsOns1OTp7YzpbMTA5OTNdfX19fX19fSwxMDI6e2w6ezU5OntjOlsxMjAxNjVdfSwxMTE6e2w6ezExNDp7bDp7MTA3OntsOns1OTp7YzpbMTA5NzBdfX19fX19fX19fX0sMTE1OntsOns5Nzp7bDp7NTk6e2M6WzEwNTM3XX19fX19fX0sMTEyOntsOnsxMTQ6e2w6ezEwNTp7bDp7MTA5OntsOnsxMDE6e2w6ezU5OntjOls4MjQ0XX19fX19fX19fX19LDExNDp7bDp7OTc6e2w6ezEwMDp7bDp7MTAxOntsOns1OTp7YzpbODQ4Ml19fX19fX19LDEwNTp7bDp7OTc6e2w6ezExMDp7bDp7MTAzOntsOnsxMDg6e2w6ezEwMTp7bDp7NTk6e2M6Wzk2NTNdfSwxMDA6e2w6ezExMTp7bDp7MTE5OntsOnsxMTA6e2w6ezU5OntjOls5NjYzXX19fX19fX19fSwxMDg6e2w6ezEwMTp7bDp7MTAyOntsOnsxMTY6e2w6ezU5OntjOls5NjY3XX0sMTAxOntsOnsxMTM6e2w6ezU5OntjOls4ODg0XX19fX19fX19fX19fX0sMTEzOntsOns1OTp7YzpbODc5Nl19fX0sMTE0OntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezU5OntjOls5NjU3XX0sMTAxOntsOnsxMTM6e2w6ezU5OntjOls4ODg1XX19fX19fX19fX19fX19fX19fX19fX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzk3MDhdfX19fX19fSwxMDE6e2w6ezU5OntjOls4Nzk2XX19fSwxMDk6e2w6ezEwNTp7bDp7MTEwOntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6WzEwODEwXX19fX19fX19fX19LDExMjp7bDp7MTA4OntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6WzEwODA5XX19fX19fX19fSwxMTU6e2w6ezk4OntsOns1OTp7YzpbMTA3MDFdfX19fX0sMTE2OntsOnsxMDU6e2w6ezEwOTp7bDp7MTAxOntsOns1OTp7YzpbMTA4MTFdfX19fX19fX19fX0sMTEyOntsOnsxMDE6e2w6ezEyMjp7bDp7MTA1OntsOnsxMTc6e2w6ezEwOTp7bDp7NTk6e2M6WzkxODZdfX19fX19fX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDAwOV19fX0sMTIxOntsOns1OTp7YzpbMTA5NF19fX19fSwxMDQ6e2w6ezk5OntsOnsxMjE6e2w6ezU5OntjOlsxMTE1XX19fX19fX0sMTE2OntsOnsxMTQ6e2w6ezExMTp7bDp7MTA3OntsOns1OTp7YzpbMzU5XX19fX19fX19fX19LDExOTp7bDp7MTA1OntsOnsxMjA6e2w6ezExNjp7bDp7NTk6e2M6Wzg4MTJdfX19fX19fSwxMTE6e2w6ezEwNDp7bDp7MTAxOntsOns5Nzp7bDp7MTAwOntsOnsxMDg6e2w6ezEwMTp7bDp7MTAyOntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjA2XX19fX19fX19fX19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NjA4XX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDExNzp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODY1N119fX19fX19LDcyOntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA1OTVdfX19fX19fSw5Nzp7bDp7OTk6e2w6ezExNzp7bDp7MTE2OntsOnsxMDE6e2w6ezU5OntjOlsyNTBdfX0sYzpbMjUwXX19fX19fX0sMTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NTkzXX19fX19fX0sOTg6e2w6ezExNDp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzExMThdfX19fX0sMTAxOntsOnsxMTg6e2w6ezEwMTp7bDp7NTk6e2M6WzM2NV19fX19fX19fX19fSw5OTp7bDp7MTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbMjUxXX19LGM6WzI1MV19fX19fSwxMjE6e2w6ezU5OntjOlsxMDkxXX19fX19LDEwMDp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODY0NV19fX19fX19LDk4OntsOnsxMDg6e2w6ezk3OntsOns5OTp7bDp7NTk6e2M6WzM2OV19fX19fX19fX0sMTA0OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA2MDZdfX19fX19fX19LDEwMjp7bDp7MTA1OntsOnsxMTU6e2w6ezEwNDp7bDp7MTE2OntsOns1OTp7YzpbMTA2MjJdfX19fX19fX19LDExNDp7bDp7NTk6e2M6WzEyMDExNF19fX19fSwxMDM6e2w6ezExNDp7bDp7OTc6e2w6ezExODp7bDp7MTAxOntsOns1OTp7YzpbMjQ5XX19LGM6WzI0OV19fX19fX19fX0sMTA0OntsOns5Nzp7bDp7MTE0OntsOnsxMDg6e2w6ezU5OntjOls4NjM5XX19fSwxMTQ6e2w6ezU5OntjOls4NjM4XX19fX19fX0sOTg6e2w6ezEwODp7bDp7MTA3OntsOns1OTp7YzpbOTYwMF19fX19fX19fX0sMTA4OntsOns5OTp7bDp7MTExOntsOnsxMTQ6e2w6ezExMDp7bDp7NTk6e2M6Wzg5ODhdfSwxMDE6e2w6ezExNDp7bDp7NTk6e2M6Wzg5ODhdfX19fX19fX19fX0sMTE0OntsOnsxMTE6e2w6ezExMjp7bDp7NTk6e2M6Wzg5NzVdfX19fX19fX19LDExNjp7bDp7MTE0OntsOnsxMDU6e2w6ezU5OntjOls5NzIwXX19fX19fX19fSwxMDk6e2w6ezk3OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMzYzXX19fX19fX0sMTA4OntsOns1OTp7YzpbMTY4XX19LGM6WzE2OF19fX0sMTExOntsOnsxMDM6e2w6ezExMTp7bDp7MTEwOntsOns1OTp7YzpbMzcxXX19fX19fX0sMTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNjZdfX19fX19fSwxMTI6e2w6ezk3OntsOnsxMTQ6e2w6ezExNDp7bDp7MTExOntsOnsxMTk6e2w6ezU5OntjOls4NTkzXX19fX19fX19fX19LDEwMDp7bDp7MTExOntsOnsxMTk6e2w6ezExMDp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7NTk6e2M6Wzg1OTddfX19fX19fX19fX19fX19fX19fSwxMDQ6e2w6ezk3OntsOnsxMTQ6e2w6ezExMjp7bDp7MTExOntsOnsxMTE6e2w6ezExMDp7bDp7MTA4OntsOnsxMDE6e2w6ezEwMjp7bDp7MTE2OntsOns1OTp7YzpbODYzOV19fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezEwMzp7bDp7MTA0OntsOnsxMTY6e2w6ezU5OntjOls4NjM4XX19fX19fX19fX19fX19fX19fX19fX19fX0sMTA4OntsOnsxMTc6e2w6ezExNTp7bDp7NTk6e2M6Wzg4NDZdfX19fX19fSwxMTU6e2w6ezEwNTp7bDp7NTk6e2M6Wzk2NV19LDEwNDp7bDp7NTk6e2M6Wzk3OF19fX0sMTA4OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6Wzk2NV19fX19fX19fX19fSwxMTc6e2w6ezExMjp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOnsxMTE6e2w6ezExOTp7bDp7MTE1OntsOns1OTp7YzpbODY0OF19fX19fX19fX19fX19fX19fX19LDExNDp7bDp7OTk6e2w6ezExMTp7bDp7MTE0OntsOnsxMTA6e2w6ezU5OntjOls4OTg5XX0sMTAxOntsOnsxMTQ6e2w6ezU5OntjOls4OTg5XX19fX19fX19fX19LDExNDp7bDp7MTExOntsOnsxMTI6e2w6ezU5OntjOls4OTc0XX19fX19fX19fSwxMDU6e2w6ezExMDp7bDp7MTAzOntsOns1OTp7YzpbMzY3XX19fX19fX0sMTE2OntsOnsxMTQ6e2w6ezEwNTp7bDp7NTk6e2M6Wzk3MjFdfX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDAxMF19fX19fX19LDExNjp7bDp7MTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6Wzg5NDRdfX19fX19fSwxMDU6e2w6ezEwODp7bDp7MTAwOntsOnsxMDE6e2w6ezU5OntjOlszNjFdfX19fX19fX19LDExNDp7bDp7MTA1OntsOns1OTp7YzpbOTY1M119LDEwMjp7bDp7NTk6e2M6Wzk2NTJdfX19fX19fX19LDExNzp7bDp7OTc6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbODY0OF19fX19fX19LDEwOTp7bDp7MTA4OntsOns1OTp7YzpbMjUyXX19LGM6WzI1Ml19fX19fSwxMTk6e2w6ezk3OntsOnsxMTA6e2w6ezEwMzp7bDp7MTA4OntsOnsxMDE6e2w6ezU5OntjOlsxMDY2M119fX19fX19fX19fX19fX0sMTE4OntsOns2NTp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjYxXX19fX19fX0sNjY6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOlsxMDk4NF19LDExODp7bDp7NTk6e2M6WzEwOTg1XX19fX19fX19fSw2ODp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbODg3Ml19fX19fX19fX0sOTc6e2w6ezExMDp7bDp7MTAzOntsOnsxMTQ6e2w6ezExNjp7bDp7NTk6e2M6WzEwNjUyXX19fX19fX19fSwxMTQ6e2w6ezEwMTp7bDp7MTEyOntsOnsxMTU6e2w6ezEwNTp7bDp7MTA4OntsOnsxMTE6e2w6ezExMDp7bDp7NTk6e2M6WzEwMTNdfX19fX19fX19fX19fX19LDEwNzp7bDp7OTc6e2w6ezExMjp7bDp7MTEyOntsOns5Nzp7bDp7NTk6e2M6WzEwMDhdfX19fX19fX19fX0sMTEwOntsOnsxMTE6e2w6ezExNjp7bDp7MTA0OntsOnsxMDU6e2w6ezExMDp7bDp7MTAzOntsOns1OTp7YzpbODcwOV19fX19fX19fX19fX19fX0sMTEyOntsOnsxMDQ6e2w6ezEwNTp7bDp7NTk6e2M6Wzk4MV19fX19fSwxMDU6e2w6ezU5OntjOls5ODJdfX19LDExNDp7bDp7MTExOntsOnsxMTI6e2w6ezExNjp7bDp7MTExOntsOns1OTp7YzpbODczM119fX19fX19fX19fX19LDExNDp7bDp7NTk6e2M6Wzg1OTddfSwxMDQ6e2w6ezExMTp7bDp7NTk6e2M6WzEwMDldfX19fX19fSwxMTU6e2w6ezEwNTp7bDp7MTAzOntsOnsxMDk6e2w6ezk3OntsOns1OTp7YzpbOTYyXX19fX19fX19fSwxMTc6e2w6ezk4OntsOnsxMTU6e2w6ezEwMTp7bDp7MTE2OntsOnsxMTA6e2w6ezEwMTp7bDp7MTEzOntsOns1OTp7YzpbODg0Miw2NTAyNF19LDExMzp7bDp7NTk6e2M6WzEwOTU1LDY1MDI0XX19fX19fX19fX19fX19fX19LDExMjp7bDp7MTE1OntsOnsxMDE6e2w6ezExNjp7bDp7MTEwOntsOnsxMDE6e2w6ezExMzp7bDp7NTk6e2M6Wzg4NDMsNjUwMjRdfSwxMTM6e2w6ezU5OntjOlsxMDk1Niw2NTAyNF19fX19fX19fX19fX19fX19fX19fX0sMTE2OntsOnsxMDQ6e2w6ezEwMTp7bDp7MTE2OntsOns5Nzp7bDp7NTk6e2M6Wzk3N119fX19fX19fX0sMTE0OntsOnsxMDU6e2w6ezk3OntsOnsxMTA6e2w6ezEwMzp7bDp7MTA4OntsOnsxMDE6e2w6ezEwODp7bDp7MTAxOntsOnsxMDI6e2w6ezExNjp7bDp7NTk6e2M6Wzg4ODJdfX19fX19fX19LDExNDp7bDp7MTA1OntsOnsxMDM6e2w6ezEwNDp7bDp7MTE2OntsOns1OTp7YzpbODg4M119fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19LDk5OntsOnsxMjE6e2w6ezU5OntjOlsxMDc0XX19fX19LDEwMDp7bDp7OTc6e2w6ezExNTp7bDp7MTA0OntsOns1OTp7YzpbODg2Nl19fX19fX19fX0sMTAxOntsOnsxMDE6e2w6ezU5OntjOls4NzQ0XX0sOTg6e2w6ezk3OntsOnsxMTQ6e2w6ezU5OntjOls4ODkxXX19fX19fX0sMTAxOntsOnsxMTM6e2w6ezU5OntjOls4Nzk0XX19fX19fX0sMTA4OntsOnsxMDg6e2w6ezEwNTp7bDp7MTEyOntsOns1OTp7YzpbODk0Ml19fX19fX19fX0sMTE0OntsOns5ODp7bDp7OTc6e2w6ezExNDp7bDp7NTk6e2M6WzEyNF19fX19fX19LDExNjp7bDp7NTk6e2M6WzEyNF19fX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMTE1XX19fX19LDEwODp7bDp7MTE2OntsOnsxMTQ6e2w6ezEwNTp7bDp7NTk6e2M6Wzg4ODJdfX19fX19fX19LDExMDp7bDp7MTE1OntsOnsxMTc6e2w6ezk4OntsOns1OTp7YzpbODgzNCw4NDAyXX19fSwxMTI6e2w6ezU5OntjOls4ODM1LDg0MDJdfX19fX19fX19LDExMTp7bDp7MTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNjddfX19fX19fSwxMTI6e2w6ezExNDp7bDp7MTExOntsOnsxMTI6e2w6ezU5OntjOls4NzMzXX19fX19fX19fSwxMTQ6e2w6ezExNjp7bDp7MTE0OntsOnsxMDU6e2w6ezU5OntjOls4ODgzXX19fX19fX19fSwxMTU6e2w6ezk5OntsOnsxMTQ6e2w6ezU5OntjOlsxMjAwMTFdfX19fX0sMTE3OntsOns5ODp7bDp7MTEwOntsOns2OTp7bDp7NTk6e2M6WzEwOTU1LDY1MDI0XX19fSwxMDE6e2w6ezU5OntjOls4ODQyLDY1MDI0XX19fX19fX0sMTEyOntsOnsxMTA6e2w6ezY5OntsOns1OTp7YzpbMTA5NTYsNjUwMjRdfX19LDEwMTp7bDp7NTk6e2M6Wzg4NDMsNjUwMjRdfX19fX19fX19fX0sMTIyOntsOnsxMDU6e2w6ezEwMzp7bDp7MTIyOntsOns5Nzp7bDp7MTAzOntsOns1OTp7YzpbMTA2NTBdfX19fX19fX19fX19fX19LDExOTp7bDp7OTk6e2w6ezEwNTp7bDp7MTE0OntsOns5OTp7bDp7NTk6e2M6WzM3M119fX19fX19fX0sMTAxOntsOnsxMDA6e2w6ezk4OntsOns5Nzp7bDp7MTE0OntsOns1OTp7YzpbMTA4NDddfX19fX19fSwxMDM6e2w6ezEwMTp7bDp7NTk6e2M6Wzg3NDNdfSwxMTM6e2w6ezU5OntjOls4NzkzXX19fX19fX19fSwxMDU6e2w6ezEwMTp7bDp7MTE0OntsOnsxMTI6e2w6ezU5OntjOls4NDcyXX19fX19fX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMTE2XX19fX19LDExMTp7bDp7MTEyOntsOnsxMDI6e2w6ezU5OntjOlsxMjAxNjhdfX19fX19fSwxMTI6e2w6ezU5OntjOls4NDcyXX19fSwxMTQ6e2w6ezU5OntjOls4NzY4XX0sMTAxOntsOns5Nzp7bDp7MTE2OntsOnsxMDQ6e2w6ezU5OntjOls4NzY4XX19fX19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDAxMl19fX19fX19fX0sMTIwOntsOns5OTp7bDp7OTc6e2w6ezExMjp7bDp7NTk6e2M6Wzg4OThdfX19fX0sMTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbOTcxMV19fX19fX19LDExNzp7bDp7MTEyOntsOns1OTp7YzpbODg5OV19fX19fX19LDEwMDp7bDp7MTE2OntsOnsxMTQ6e2w6ezEwNTp7bDp7NTk6e2M6Wzk2NjFdfX19fX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMTE3XX19fX19LDEwNDp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbMTAyMzRdfX19fX19fSw5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDIzMV19fX19fX19fX0sMTA1OntsOns1OTp7YzpbOTU4XX19fSwxMDg6e2w6ezY1OntsOnsxMTQ6e2w6ezExNDp7bDp7NTk6e2M6WzEwMjMyXX19fX19fX0sOTc6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbMTAyMjldfX19fX19fX19LDEwOTp7bDp7OTc6e2w6ezExMjp7bDp7NTk6e2M6WzEwMjM2XX19fX19fX0sMTEwOntsOnsxMDU6e2w6ezExNTp7bDp7NTk6e2M6Wzg5NTVdfX19fX19fSwxMTE6e2w6ezEwMDp7bDp7MTExOntsOnsxMTY6e2w6ezU5OntjOlsxMDc1Ml19fX19fX19LDExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTY5XX19fSwxMDg6e2w6ezExNzp7bDp7MTE1OntsOns1OTp7YzpbMTA3NTNdfX19fX19fX19LDExNjp7bDp7MTA1OntsOnsxMDk6e2w6ezEwMTp7bDp7NTk6e2M6WzEwNzU0XX19fX19fX19fX19LDExNDp7bDp7NjU6e2w6ezExNDp7bDp7MTE0OntsOns1OTp7YzpbMTAyMzNdfX19fX19fSw5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOlsxMDIzMF19fX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDEzXX19fX19LDExMzp7bDp7OTk6e2w6ezExNzp7bDp7MTEyOntsOns1OTp7YzpbMTA3NThdfX19fX19fX19fX0sMTE3OntsOnsxMTI6e2w6ezEwODp7bDp7MTE3OntsOnsxMTU6e2w6ezU5OntjOlsxMDc1Nl19fX19fX19fX0sMTE2OntsOnsxMTQ6e2w6ezEwNTp7bDp7NTk6e2M6Wzk2NTFdfX19fX19fX19LDExODp7bDp7MTAxOntsOnsxMDE6e2w6ezU5OntjOls4ODk3XX19fX19fX0sMTE5OntsOnsxMDE6e2w6ezEwMDp7bDp7MTAzOntsOnsxMDE6e2w6ezU5OntjOls4ODk2XX19fX19fX19fX19fX0sMTIxOntsOns5Nzp7bDp7OTk6e2w6ezExNzp7bDp7MTE2OntsOnsxMDE6e2w6ezU5OntjOlsyNTNdfX0sYzpbMjUzXX19fX19LDEyMTp7bDp7NTk6e2M6WzExMDNdfX19fX19fSw5OTp7bDp7MTA1OntsOnsxMTQ6e2w6ezk5OntsOns1OTp7YzpbMzc1XX19fX19fX0sMTIxOntsOns1OTp7YzpbMTA5OV19fX19fSwxMDE6e2w6ezExMDp7bDp7NTk6e2M6WzE2NV19fSxjOlsxNjVdfX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMTE4XX19fX19LDEwNTp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzExMTFdfX19fX19fSwxMTE6e2w6ezExMjp7bDp7MTAyOntsOns1OTp7YzpbMTIwMTcwXX19fX19fX0sMTE1OntsOns5OTp7bDp7MTE0OntsOns1OTp7YzpbMTIwMDE0XX19fX19fX0sMTE3OntsOns5OTp7bDp7MTIxOntsOns1OTp7YzpbMTEwMl19fX19fSwxMDk6e2w6ezEwODp7bDp7NTk6e2M6WzI1NV19fSxjOlsyNTVdfX19fX19fSwxMjI6e2w6ezk3OntsOns5OTp7bDp7MTE3OntsOnsxMTY6e2w6ezEwMTp7bDp7NTk6e2M6WzM3OF19fX19fX19fX19fSw5OTp7bDp7OTc6e2w6ezExNDp7bDp7MTExOntsOnsxMTA6e2w6ezU5OntjOlszODJdfX19fX19fX19LDEyMTp7bDp7NTk6e2M6WzEwNzldfX19fX0sMTAwOntsOnsxMTE6e2w6ezExNjp7bDp7NTk6e2M6WzM4MF19fX19fX19LDEwMTp7bDp7MTAxOntsOnsxMTY6e2w6ezExNDp7bDp7MTAyOntsOns1OTp7YzpbODQ4OF19fX19fX19fX0sMTE2OntsOns5Nzp7bDp7NTk6e2M6Wzk1MF19fX19fX19LDEwMjp7bDp7MTE0OntsOns1OTp7YzpbMTIwMTE5XX19fX19LDEwNDp7bDp7OTk6e2w6ezEyMTp7bDp7NTk6e2M6WzEwNzhdfX19fX19fSwxMDU6e2w6ezEwMzp7bDp7MTE0OntsOns5Nzp7bDp7MTE0OntsOnsxMTQ6e2w6ezU5OntjOls4NjY5XX19fX19fX19fX19fX0sMTExOntsOnsxMTI6e2w6ezEwMjp7bDp7NTk6e2M6WzEyMDE3MV19fX19fX19LDExNTp7bDp7OTk6e2w6ezExNDp7bDp7NTk6e2M6WzEyMDAxNV19fX19fX19LDExOTp7bDp7MTA2OntsOns1OTp7YzpbODIwNV19fX0sMTEwOntsOnsxMDY6e2w6ezU5OntjOls4MjA0XX19fX19fX19fX07XHJcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFByZXByb2Nlc3NvciA9IHJlcXVpcmUoJy4vcHJlcHJvY2Vzc29yJyksXG4gICAgbG9jYXRpb25JbmZvTWl4aW4gPSByZXF1aXJlKCcuLi9sb2NhdGlvbl9pbmZvL3Rva2VuaXplcl9taXhpbicpLFxuICAgIFVOSUNPREUgPSByZXF1aXJlKCcuLi9jb21tb24vdW5pY29kZScpLFxuICAgIE5BTUVEX0VOVElUWV9UUklFID0gcmVxdWlyZSgnLi9uYW1lZF9lbnRpdHlfdHJpZScpO1xuXG4vL0FsaWFzZXNcbnZhciAkID0gVU5JQ09ERS5DT0RFX1BPSU5UUyxcbiAgICAkJCA9IFVOSUNPREUuQ09ERV9QT0lOVF9TRVFVRU5DRVM7XG5cbi8vUmVwbGFjZW1lbnQgY29kZSBwb2ludHMgZm9yIG51bWVyaWMgZW50aXRpZXNcbnZhciBOVU1FUklDX0VOVElUWV9SRVBMQUNFTUVOVFMgPSB7XG4gICAgMHgwMDogMHhGRkZELCAweDBEOiAweDAwMEQsIDB4ODA6IDB4MjBBQywgMHg4MTogMHgwMDgxLCAweDgyOiAweDIwMUEsIDB4ODM6IDB4MDE5MiwgMHg4NDogMHgyMDFFLFxuICAgIDB4ODU6IDB4MjAyNiwgMHg4NjogMHgyMDIwLCAweDg3OiAweDIwMjEsIDB4ODg6IDB4MDJDNiwgMHg4OTogMHgyMDMwLCAweDhBOiAweDAxNjAsIDB4OEI6IDB4MjAzOSxcbiAgICAweDhDOiAweDAxNTIsIDB4OEQ6IDB4MDA4RCwgMHg4RTogMHgwMTdELCAweDhGOiAweDAwOEYsIDB4OTA6IDB4MDA5MCwgMHg5MTogMHgyMDE4LCAweDkyOiAweDIwMTksXG4gICAgMHg5MzogMHgyMDFDLCAweDk0OiAweDIwMUQsIDB4OTU6IDB4MjAyMiwgMHg5NjogMHgyMDEzLCAweDk3OiAweDIwMTQsIDB4OTg6IDB4MDJEQywgMHg5OTogMHgyMTIyLFxuICAgIDB4OUE6IDB4MDE2MSwgMHg5QjogMHgyMDNBLCAweDlDOiAweDAxNTMsIDB4OUQ6IDB4MDA5RCwgMHg5RTogMHgwMTdFLCAweDlGOiAweDAxNzhcbn07XG5cbi8vU3RhdGVzXG52YXIgREFUQV9TVEFURSA9ICdEQVRBX1NUQVRFJyxcbiAgICBDSEFSQUNURVJfUkVGRVJFTkNFX0lOX0RBVEFfU1RBVEUgPSAnQ0hBUkFDVEVSX1JFRkVSRU5DRV9JTl9EQVRBX1NUQVRFJyxcbiAgICBSQ0RBVEFfU1RBVEUgPSAnUkNEQVRBX1NUQVRFJyxcbiAgICBDSEFSQUNURVJfUkVGRVJFTkNFX0lOX1JDREFUQV9TVEFURSA9ICdDSEFSQUNURVJfUkVGRVJFTkNFX0lOX1JDREFUQV9TVEFURScsXG4gICAgUkFXVEVYVF9TVEFURSA9ICdSQVdURVhUX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9TVEFURSA9ICdTQ1JJUFRfREFUQV9TVEFURScsXG4gICAgUExBSU5URVhUX1NUQVRFID0gJ1BMQUlOVEVYVF9TVEFURScsXG4gICAgVEFHX09QRU5fU1RBVEUgPSAnVEFHX09QRU5fU1RBVEUnLFxuICAgIEVORF9UQUdfT1BFTl9TVEFURSA9ICdFTkRfVEFHX09QRU5fU1RBVEUnLFxuICAgIFRBR19OQU1FX1NUQVRFID0gJ1RBR19OQU1FX1NUQVRFJyxcbiAgICBSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUgPSAnUkNEQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFJyxcbiAgICBSQ0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFID0gJ1JDREFUQV9FTkRfVEFHX09QRU5fU1RBVEUnLFxuICAgIFJDREFUQV9FTkRfVEFHX05BTUVfU1RBVEUgPSAnUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURScsXG4gICAgUkFXVEVYVF9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdSQVdURVhUX0xFU1NfVEhBTl9TSUdOX1NUQVRFJyxcbiAgICBSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURSA9ICdSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURScsXG4gICAgUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUgPSAnUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUnLFxuICAgIFNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ1NDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FTkRfVEFHX09QRU5fU1RBVEUgPSAnU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFJyxcbiAgICBTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEUnLFxuICAgIFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUnLFxuICAgIFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURScsXG4gICAgU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEUnLFxuICAgIFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EX1NUQVRFJyxcbiAgICBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUgPSAnQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFJyxcbiAgICBBVFRSSUJVVEVfTkFNRV9TVEFURSA9ICdBVFRSSUJVVEVfTkFNRV9TVEFURScsXG4gICAgQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUgPSAnQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUnLFxuICAgIEJFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEUgPSAnQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURScsXG4gICAgQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURfU1RBVEUgPSAnQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURfU1RBVEUnLFxuICAgIEFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFID0gJ0FUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFJyxcbiAgICBBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUgPSAnQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFJyxcbiAgICBDSEFSQUNURVJfUkVGRVJFTkNFX0lOX0FUVFJJQlVURV9WQUxVRV9TVEFURSA9ICdDSEFSQUNURVJfUkVGRVJFTkNFX0lOX0FUVFJJQlVURV9WQUxVRV9TVEFURScsXG4gICAgQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRF9TVEFURSA9ICdBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFJyxcbiAgICBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFID0gJ1NFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEUnLFxuICAgIEJPR1VTX0NPTU1FTlRfU1RBVEUgPSAnQk9HVVNfQ09NTUVOVF9TVEFURScsXG4gICAgQk9HVVNfQ09NTUVOVF9TVEFURV9DT05USU5VQVRJT04gPSAnQk9HVVNfQ09NTUVOVF9TVEFURV9DT05USU5VQVRJT04nLFxuICAgIE1BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFID0gJ01BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFJyxcbiAgICBDT01NRU5UX1NUQVJUX1NUQVRFID0gJ0NPTU1FTlRfU1RBUlRfU1RBVEUnLFxuICAgIENPTU1FTlRfU1RBUlRfREFTSF9TVEFURSA9ICdDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEUnLFxuICAgIENPTU1FTlRfU1RBVEUgPSAnQ09NTUVOVF9TVEFURScsXG4gICAgQ09NTUVOVF9FTkRfREFTSF9TVEFURSA9ICdDT01NRU5UX0VORF9EQVNIX1NUQVRFJyxcbiAgICBDT01NRU5UX0VORF9TVEFURSA9ICdDT01NRU5UX0VORF9TVEFURScsXG4gICAgQ09NTUVOVF9FTkRfQkFOR19TVEFURSA9ICdDT01NRU5UX0VORF9CQU5HX1NUQVRFJyxcbiAgICBET0NUWVBFX1NUQVRFID0gJ0RPQ1RZUEVfU1RBVEUnLFxuICAgIERPQ1RZUEVfTkFNRV9TVEFURSA9ICdET0NUWVBFX05BTUVfU1RBVEUnLFxuICAgIEFGVEVSX0RPQ1RZUEVfTkFNRV9TVEFURSA9ICdBRlRFUl9ET0NUWVBFX05BTUVfU1RBVEUnLFxuICAgIEJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFID0gJ0JFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFJyxcbiAgICBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFJyxcbiAgICBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFJyxcbiAgICBCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEUgPSAnQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTX1NUQVRFJyxcbiAgICBCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSA9ICdCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURScsXG4gICAgRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFID0gJ0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURScsXG4gICAgRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFID0gJ0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURScsXG4gICAgQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSA9ICdBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFJyxcbiAgICBCT0dVU19ET0NUWVBFX1NUQVRFID0gJ0JPR1VTX0RPQ1RZUEVfU1RBVEUnLFxuICAgIENEQVRBX1NFQ1RJT05fU1RBVEUgPSAnQ0RBVEFfU0VDVElPTl9TVEFURSc7XG5cbi8vVXRpbHNcblxuLy9PUFRJTUlaQVRJT046IHRoZXNlIHV0aWxpdHkgZnVuY3Rpb25zIHNob3VsZCBub3QgYmUgbW92ZWQgb3V0IG9mIHRoaXMgbW9kdWxlLiBWOCBDcmFua3NoYWZ0IHdpbGwgbm90IGlubGluZVxuLy90aGlzIGZ1bmN0aW9ucyBpZiB0aGV5IHdpbGwgYmUgc2l0dWF0ZWQgaW4gYW5vdGhlciBtb2R1bGUgZHVlIHRvIGNvbnRleHQgc3dpdGNoLlxuLy9BbHdheXMgcGVyZm9ybSBpbmxpbmluZyBjaGVjayBiZWZvcmUgbW9kaWZ5aW5nIHRoaXMgZnVuY3Rpb25zICgnbm9kZSAtLXRyYWNlLWlubGluaW5nJykuXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UoY3ApIHtcbiAgICByZXR1cm4gY3AgPT09ICQuU1BBQ0UgfHwgY3AgPT09ICQuTElORV9GRUVEIHx8IGNwID09PSAkLlRBQlVMQVRJT04gfHwgY3AgPT09ICQuRk9STV9GRUVEO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpRGlnaXQoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5ESUdJVF8wICYmIGNwIDw9ICQuRElHSVRfOTtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaVVwcGVyKGNwKSB7XG4gICAgcmV0dXJuIGNwID49ICQuTEFUSU5fQ0FQSVRBTF9BICYmIGNwIDw9ICQuTEFUSU5fQ0FQSVRBTF9aO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpTG93ZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9TTUFMTF9BICYmIGNwIDw9ICQuTEFUSU5fU01BTExfWjtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUxldHRlcihjcCkge1xuICAgIHJldHVybiBpc0FzY2lpTG93ZXIoY3ApIHx8IGlzQXNjaWlVcHBlcihjcCk7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlBbHBoYU51bWVyaWMoY3ApIHtcbiAgICByZXR1cm4gaXNBc2NpaUxldHRlcihjcCkgfHwgaXNBc2NpaURpZ2l0KGNwKTtcbn1cblxuZnVuY3Rpb24gaXNEaWdpdChjcCwgaXNIZXgpIHtcbiAgICByZXR1cm4gaXNBc2NpaURpZ2l0KGNwKSB8fCBpc0hleCAmJiAoY3AgPj0gJC5MQVRJTl9DQVBJVEFMX0EgJiYgY3AgPD0gJC5MQVRJTl9DQVBJVEFMX0YgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3AgPj0gJC5MQVRJTl9TTUFMTF9BICYmIGNwIDw9ICQuTEFUSU5fU01BTExfRik7XG59XG5cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWRDb2RlUG9pbnQoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gMHhEODAwICYmIGNwIDw9IDB4REZGRiB8fCBjcCA+IDB4MTBGRkZGO1xufVxuXG5mdW5jdGlvbiB0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApIHtcbiAgICByZXR1cm4gY3AgKyAweDAwMjA7XG59XG5cbi8vTk9URTogU3RyaW5nLmZyb21DaGFyQ29kZSgpIGZ1bmN0aW9uIGNhbiBoYW5kbGUgb25seSBjaGFyYWN0ZXJzIGZyb20gQk1QIHN1YnNldC5cbi8vU28sIHdlIG5lZWQgdG8gd29ya2Fyb3VuZCB0aGlzIG1hbnVhbGx5LlxuLy8oc2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9mcm9tQ2hhckNvZGUjR2V0dGluZ19pdF90b193b3JrX3dpdGhfaGlnaGVyX3ZhbHVlcylcbmZ1bmN0aW9uIHRvQ2hhcihjcCkge1xuICAgIGlmIChjcCA8PSAweEZGRkYpXG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNwKTtcblxuICAgIGNwIC09IDB4MTAwMDA7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY3AgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApICsgU3RyaW5nLmZyb21DaGFyQ29kZSgweERDMDAgfCBjcCAmIDB4M0ZGKTtcbn1cblxuZnVuY3Rpb24gdG9Bc2NpaUxvd2VyQ2hhcihjcCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHRvQXNjaWlMb3dlckNvZGVQb2ludChjcCkpO1xufVxuXG4vL1Rva2VuaXplclxudmFyIFRva2VuaXplciA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB0aGlzLnByZXByb2Nlc3NvciA9IG5ldyBQcmVwcm9jZXNzb3IoKTtcblxuICAgIHRoaXMudG9rZW5RdWV1ZSA9IFtdO1xuXG4gICAgdGhpcy5hbGxvd0NEQVRBID0gZmFsc2U7XG5cbiAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICB0aGlzLnJldHVyblN0YXRlID0gJyc7XG5cbiAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgdGhpcy5hZGRpdGlvbmFsQWxsb3dlZENwID0gdm9pZCAwO1xuICAgIHRoaXMubGFzdFN0YXJ0VGFnTmFtZSA9ICcnO1xuXG4gICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAtMTtcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSBudWxsO1xuICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnRBdHRyID0gbnVsbDtcblxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMubG9jYXRpb25JbmZvKVxuICAgICAgICBsb2NhdGlvbkluZm9NaXhpbi5hc3NpZ24odGhpcyk7XG59O1xuXG4vL1Rva2VuIHR5cGVzXG5Ub2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOID0gJ0NIQVJBQ1RFUl9UT0tFTic7XG5Ub2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU4gPSAnTlVMTF9DSEFSQUNURVJfVE9LRU4nO1xuVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOID0gJ1dISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOJztcblRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gPSAnU1RBUlRfVEFHX1RPS0VOJztcblRva2VuaXplci5FTkRfVEFHX1RPS0VOID0gJ0VORF9UQUdfVE9LRU4nO1xuVG9rZW5pemVyLkNPTU1FTlRfVE9LRU4gPSAnQ09NTUVOVF9UT0tFTic7XG5Ub2tlbml6ZXIuRE9DVFlQRV9UT0tFTiA9ICdET0NUWVBFX1RPS0VOJztcblRva2VuaXplci5FT0ZfVE9LRU4gPSAnRU9GX1RPS0VOJztcblRva2VuaXplci5ISUJFUk5BVElPTl9UT0tFTiA9ICdISUJFUk5BVElPTl9UT0tFTic7XG5cbi8vVG9rZW5pemVyIGluaXRpYWwgc3RhdGVzIGZvciBkaWZmZXJlbnQgbW9kZXNcblRva2VuaXplci5NT0RFID0gVG9rZW5pemVyLnByb3RvdHlwZS5NT0RFID0ge1xuICAgIERBVEE6IERBVEFfU1RBVEUsXG4gICAgUkNEQVRBOiBSQ0RBVEFfU1RBVEUsXG4gICAgUkFXVEVYVDogUkFXVEVYVF9TVEFURSxcbiAgICBTQ1JJUFRfREFUQTogU0NSSVBUX0RBVEFfU1RBVEUsXG4gICAgUExBSU5URVhUOiBQTEFJTlRFWFRfU1RBVEVcbn07XG5cbi8vU3RhdGljXG5Ub2tlbml6ZXIuZ2V0VG9rZW5BdHRyID0gZnVuY3Rpb24gKHRva2VuLCBhdHRyTmFtZSkge1xuICAgIGZvciAodmFyIGkgPSB0b2tlbi5hdHRycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAodG9rZW4uYXR0cnNbaV0ubmFtZSA9PT0gYXR0ck5hbWUpXG4gICAgICAgICAgICByZXR1cm4gdG9rZW4uYXR0cnNbaV0udmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG4vL0FQSVxuVG9rZW5pemVyLnByb3RvdHlwZS5nZXROZXh0VG9rZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgd2hpbGUgKCF0aGlzLnRva2VuUXVldWUubGVuZ3RoICYmIHRoaXMuYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuX2hpYmVybmF0aW9uU25hcHNob3QoKTtcblxuICAgICAgICB2YXIgY3AgPSB0aGlzLl9jb25zdW1lKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKVxuICAgICAgICAgICAgdGhpc1t0aGlzLnN0YXRlXShjcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudG9rZW5RdWV1ZS5zaGlmdCgpO1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgaXNMYXN0Q2h1bmspIHtcbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5wcmVwcm9jZXNzb3Iud3JpdGUoY2h1bmssIGlzTGFzdENodW5rKTtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyA9IGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLnByZXByb2Nlc3Nvci5pbnNlcnRIdG1sQXRDdXJyZW50UG9zKGNodW5rKTtcbn07XG5cbi8vSGliZXJuYXRpb25cblRva2VuaXplci5wcm90b3R5cGUuX2hpYmVybmF0aW9uU25hcHNob3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAwO1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fZW5zdXJlSGliZXJuYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMucHJlcHJvY2Vzc29yLmVuZE9mQ2h1bmtIaXQpIHtcbiAgICAgICAgZm9yICg7IHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90ID4gMDsgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QtLSlcbiAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLnJldHJlYXQoKTtcblxuICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRva2VuUXVldWUucHVzaCh7dHlwZTogVG9rZW5pemVyLkhJQkVSTkFUSU9OX1RPS0VOfSk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuXG4vL0NvbnN1bXB0aW9uXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9jb25zdW1lID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90Kys7XG4gICAgcmV0dXJuIHRoaXMucHJlcHJvY2Vzc29yLmFkdmFuY2UoKTtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuX3VuY29uc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdC0tO1xuICAgIHRoaXMucHJlcHJvY2Vzc29yLnJldHJlYXQoKTtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuX3VuY29uc3VtZVNldmVyYWwgPSBmdW5jdGlvbiAoY291bnQpIHtcbiAgICB3aGlsZSAoY291bnQtLSlcbiAgICAgICAgdGhpcy5fdW5jb25zdW1lKCk7XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9yZWNvbnN1bWVJblN0YXRlID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuX3VuY29uc3VtZSgpO1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fY29uc3VtZVN1YnNlcXVlbnRJZk1hdGNoID0gZnVuY3Rpb24gKHBhdHRlcm4sIHN0YXJ0Q3AsIGNhc2VTZW5zaXRpdmUpIHtcbiAgICB2YXIgY29uc3VtZWRDb3VudCA9IDAsXG4gICAgICAgIGlzTWF0Y2ggPSB0cnVlLFxuICAgICAgICBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGgsXG4gICAgICAgIHBhdHRlcm5Qb3MgPSAwLFxuICAgICAgICBjcCA9IHN0YXJ0Q3AsXG4gICAgICAgIHBhdHRlcm5DcCA9IHZvaWQgMDtcblxuICAgIGZvciAoOyBwYXR0ZXJuUG9zIDwgcGF0dGVybkxlbmd0aDsgcGF0dGVyblBvcysrKSB7XG4gICAgICAgIGlmIChwYXR0ZXJuUG9zID4gMCkge1xuICAgICAgICAgICAgY3AgPSB0aGlzLl9jb25zdW1lKCk7XG4gICAgICAgICAgICBjb25zdW1lZENvdW50Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICBpc01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHBhdHRlcm5DcCA9IHBhdHRlcm5bcGF0dGVyblBvc107XG5cbiAgICAgICAgaWYgKGNwICE9PSBwYXR0ZXJuQ3AgJiYgKGNhc2VTZW5zaXRpdmUgfHwgY3AgIT09IHRvQXNjaWlMb3dlckNvZGVQb2ludChwYXR0ZXJuQ3ApKSkge1xuICAgICAgICAgICAgaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWlzTWF0Y2gpXG4gICAgICAgIHRoaXMuX3VuY29uc3VtZVNldmVyYWwoY29uc3VtZWRDb3VudCk7XG5cbiAgICByZXR1cm4gaXNNYXRjaDtcbn07XG5cbi8vTG9va2FoZWFkXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9sb29rYWhlYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNwID0gdGhpcy5fY29uc3VtZSgpO1xuXG4gICAgdGhpcy5fdW5jb25zdW1lKCk7XG5cbiAgICByZXR1cm4gY3A7XG59O1xuXG4vL1RlbXAgYnVmZmVyXG5Ub2tlbml6ZXIucHJvdG90eXBlLmlzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMudGVtcEJ1ZmYubGVuZ3RoICE9PSAkJC5TQ1JJUFRfU1RSSU5HLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnRlbXBCdWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBCdWZmW2ldICE9PSAkJC5TQ1JJUFRfU1RSSU5HW2ldKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xufTtcblxuLy9Ub2tlbiBjcmVhdGlvblxuVG9rZW5pemVyLnByb3RvdHlwZS5fY3JlYXRlU3RhcnRUYWdUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgdHlwZTogVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTixcbiAgICAgICAgdGFnTmFtZTogJycsXG4gICAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgYXR0cnM6IFtdXG4gICAgfTtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuX2NyZWF0ZUVuZFRhZ1Rva2VuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY3VycmVudFRva2VuID0ge1xuICAgICAgICB0eXBlOiBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTixcbiAgICAgICAgdGFnTmFtZTogJycsXG4gICAgICAgIGF0dHJzOiBbXVxuICAgIH07XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9jcmVhdGVDb21tZW50VG9rZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgIHR5cGU6IFRva2VuaXplci5DT01NRU5UX1RPS0VOLFxuICAgICAgICBkYXRhOiAnJ1xuICAgIH07XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9jcmVhdGVEb2N0eXBlVG9rZW4gPSBmdW5jdGlvbiAoaW5pdGlhbE5hbWUpIHtcbiAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgdHlwZTogVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU4sXG4gICAgICAgIG5hbWU6IGluaXRpYWxOYW1lLFxuICAgICAgICBmb3JjZVF1aXJrczogZmFsc2UsXG4gICAgICAgIHB1YmxpY0lkOiBudWxsLFxuICAgICAgICBzeXN0ZW1JZDogbnVsbFxuICAgIH07XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9jcmVhdGVDaGFyYWN0ZXJUb2tlbiA9IGZ1bmN0aW9uICh0eXBlLCBjaCkge1xuICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuID0ge1xuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjaGFyczogY2hcbiAgICB9O1xufTtcblxuLy9UYWcgYXR0cmlidXRlc1xuVG9rZW5pemVyLnByb3RvdHlwZS5fY3JlYXRlQXR0ciA9IGZ1bmN0aW9uIChhdHRyTmFtZUZpcnN0Q2gpIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyID0ge1xuICAgICAgICBuYW1lOiBhdHRyTmFtZUZpcnN0Q2gsXG4gICAgICAgIHZhbHVlOiAnJ1xuICAgIH07XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9pc0R1cGxpY2F0ZUF0dHIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFRva2VuaXplci5nZXRUb2tlbkF0dHIodGhpcy5jdXJyZW50VG9rZW4sIHRoaXMuY3VycmVudEF0dHIubmFtZSkgIT09IG51bGw7XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9sZWF2ZUF0dHJOYW1lID0gZnVuY3Rpb24gKHRvU3RhdGUpIHtcbiAgICB0aGlzLnN0YXRlID0gdG9TdGF0ZTtcblxuICAgIGlmICghdGhpcy5faXNEdXBsaWNhdGVBdHRyKCkpXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmF0dHJzLnB1c2godGhpcy5jdXJyZW50QXR0cik7XG59O1xuXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9sZWF2ZUF0dHJWYWx1ZSA9IGZ1bmN0aW9uICh0b1N0YXRlKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHRvU3RhdGU7XG59O1xuXG4vL0FwcHJvcHJpYXRlIGVuZCB0YWcgdG9rZW5cbi8vKHNlZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjYXBwcm9wcmlhdGUtZW5kLXRhZy10b2tlbilcblRva2VuaXplci5wcm90b3R5cGUuX2lzQXBwcm9wcmlhdGVFbmRUYWdUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lO1xufTtcblxuLy9Ub2tlbiBlbWlzc2lvblxuVG9rZW5pemVyLnByb3RvdHlwZS5fZW1pdEN1cnJlbnRUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCk7XG5cbiAgICAvL05PVEU6IHN0b3JlIGVtaXRlZCBzdGFydCB0YWcncyB0YWdOYW1lIHRvIGRldGVybWluZSBpcyB0aGUgZm9sbG93aW5nIGVuZCB0YWcgdG9rZW4gaXMgYXBwcm9wcmlhdGUuXG4gICAgaWYgKHRoaXMuY3VycmVudFRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4pXG4gICAgICAgIHRoaXMubGFzdFN0YXJ0VGFnTmFtZSA9IHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWU7XG5cbiAgICB0aGlzLnRva2VuUXVldWUucHVzaCh0aGlzLmN1cnJlbnRUb2tlbik7XG4gICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgdGhpcy50b2tlblF1ZXVlLnB1c2godGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pO1xuICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGw7XG4gICAgfVxufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fZW1pdEVPRlRva2VuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4oKTtcbiAgICB0aGlzLnRva2VuUXVldWUucHVzaCh7dHlwZTogVG9rZW5pemVyLkVPRl9UT0tFTn0pO1xufTtcblxuLy9DaGFyYWN0ZXJzIGVtaXNzaW9uXG5cbi8vT1BUSU1JWkFUSU9OOiBzcGVjaWZpY2F0aW9uIHVzZXMgb25seSBvbmUgdHlwZSBvZiBjaGFyYWN0ZXIgdG9rZW5zIChvbmUgdG9rZW4gcGVyIGNoYXJhY3RlcikuXG4vL1RoaXMgY2F1c2VzIGEgaHVnZSBtZW1vcnkgb3ZlcmhlYWQgYW5kIGEgbG90IG9mIHVubmVjZXNzYXJ5IHBhcnNlciBsb29wcy4gcGFyc2U1IHVzZXMgMyBncm91cHMgb2YgY2hhcmFjdGVycy5cbi8vSWYgd2UgaGF2ZSBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgZ3JvdXAsIHBhcnNlciBjYW4gcHJvY2VzcyBpdFxuLy9hcyBhIHNpbmdsZSBzb2xpZCBjaGFyYWN0ZXIgdG9rZW4uXG4vL1NvLCB0aGVyZSBhcmUgMyB0eXBlcyBvZiBjaGFyYWN0ZXIgdG9rZW5zIGluIHBhcnNlNTpcbi8vMSlOVUxMX0NIQVJBQ1RFUl9UT0tFTiAtIFxcdTAwMDAtY2hhcmFjdGVyIHNlcXVlbmNlcyAoZS5nLiAnXFx1MDAwMFxcdTAwMDBcXHUwMDAwJylcbi8vMilXSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTiAtIGFueSB3aGl0ZXNwYWNlL25ldy1saW5lIGNoYXJhY3RlciBzZXF1ZW5jZXMgKGUuZy4gJ1xcbiAgXFxyXFx0ICAgXFxmJylcbi8vMylDSEFSQUNURVJfVE9LRU4gLSBhbnkgY2hhcmFjdGVyIHNlcXVlbmNlIHdoaWNoIGRvbid0IGJlbG9uZyB0byBncm91cHMgMSBhbmQgMiAoZS5nLiAnYWJjZGVmMTIzNEBAIyQlXicpXG5Ub2tlbml6ZXIucHJvdG90eXBlLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSBmdW5jdGlvbiAodHlwZSwgY2gpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gJiYgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4udHlwZSAhPT0gdHlwZSlcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbigpO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKVxuICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5jaGFycyArPSBjaDtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2hhcmFjdGVyVG9rZW4odHlwZSwgY2gpO1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fZW1pdENvZGVQb2ludCA9IGZ1bmN0aW9uIChjcCkge1xuICAgIHZhciB0eXBlID0gVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTjtcblxuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKVxuICAgICAgICB0eXBlID0gVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdHlwZSA9IFRva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTjtcblxuICAgIHRoaXMuX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbih0eXBlLCB0b0NoYXIoY3ApKTtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyA9IGZ1bmN0aW9uIChjb2RlUG9pbnRzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlUG9pbnRzLmxlbmd0aDsgaSsrKVxuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNvZGVQb2ludHNbaV0pO1xufTtcblxuLy9OT1RFOiB1c2VkIHRoZW4gd2UgZW1pdCBjaGFyYWN0ZXIgZXhwbGljaXRseS4gVGhpcyBpcyBhbHdheXMgYSBub24td2hpdGVzcGFjZSBhbmQgYSBub24tbnVsbCBjaGFyYWN0ZXIuXG4vL1NvIHdlIGNhbiBhdm9pZCBhZGRpdGlvbmFsIGNoZWNrcyBoZXJlLlxuVG9rZW5pemVyLnByb3RvdHlwZS5fZW1pdENoYXIgPSBmdW5jdGlvbiAoY2gpIHtcbiAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4oVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTiwgY2gpO1xufTtcblxuLy9DaGFyYWN0ZXIgcmVmZXJlbmNlIHRva2VuaXphdGlvblxuVG9rZW5pemVyLnByb3RvdHlwZS5fY29uc3VtZU51bWVyaWNFbnRpdHkgPSBmdW5jdGlvbiAoaXNIZXgpIHtcbiAgICB2YXIgZGlnaXRzID0gJycsXG4gICAgICAgIG5leHRDcCA9IHZvaWQgMDtcblxuICAgIGRvIHtcbiAgICAgICAgZGlnaXRzICs9IHRvQ2hhcih0aGlzLl9jb25zdW1lKCkpO1xuICAgICAgICBuZXh0Q3AgPSB0aGlzLl9sb29rYWhlYWQoKTtcbiAgICB9IHdoaWxlIChuZXh0Q3AgIT09ICQuRU9GICYmIGlzRGlnaXQobmV4dENwLCBpc0hleCkpO1xuXG4gICAgaWYgKHRoaXMuX2xvb2thaGVhZCgpID09PSAkLlNFTUlDT0xPTilcbiAgICAgICAgdGhpcy5fY29uc3VtZSgpO1xuXG4gICAgdmFyIHJlZmVyZW5jZWRDcCA9IHBhcnNlSW50KGRpZ2l0cywgaXNIZXggPyAxNiA6IDEwKSxcbiAgICAgICAgcmVwbGFjZW1lbnQgPSBOVU1FUklDX0VOVElUWV9SRVBMQUNFTUVOVFNbcmVmZXJlbmNlZENwXTtcblxuICAgIGlmIChyZXBsYWNlbWVudClcbiAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50O1xuXG4gICAgaWYgKGlzUmVzZXJ2ZWRDb2RlUG9pbnQocmVmZXJlbmNlZENwKSlcbiAgICAgICAgcmV0dXJuICQuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZWRDcDtcbn07XG5cblRva2VuaXplci5wcm90b3R5cGUuX2NvbnN1bWVOYW1lZEVudGl0eSA9IGZ1bmN0aW9uIChzdGFydENwLCBpbkF0dHIpIHtcbiAgICB2YXIgcmVmZXJlbmNlZENvZGVQb2ludHMgPSBudWxsLFxuICAgICAgICBlbnRpdHlDb2RlUG9pbnRzQ291bnQgPSAwLFxuICAgICAgICBjcCA9IHN0YXJ0Q3AsXG4gICAgICAgIGxlYWYgPSBOQU1FRF9FTlRJVFlfVFJJRVtjcF0sXG4gICAgICAgIGNvbnN1bWVkQ291bnQgPSAxLFxuICAgICAgICBzZW1pY29sb25UZXJtaW5hdGVkID0gZmFsc2U7XG5cbiAgICBmb3IgKDsgbGVhZiAmJiBjcCAhPT0gJC5FT0Y7IGNwID0gdGhpcy5fY29uc3VtZSgpLCBjb25zdW1lZENvdW50KyssIGxlYWYgPSBsZWFmLmwgJiYgbGVhZi5sW2NwXSkge1xuICAgICAgICBpZiAobGVhZi5jKSB7XG4gICAgICAgICAgICAvL05PVEU6IHdlIGhhdmUgYXQgbGVhc3Qgb25lIG5hbWVkIHJlZmVyZW5jZSBtYXRjaC4gQnV0IHdlIGRvbid0IHN0b3AgbG9va3VwIGF0IHRoaXMgcG9pbnQsXG4gICAgICAgICAgICAvL2JlY2F1c2UgbG9uZ2VyIG1hdGNoZXMgc3RpbGwgY2FuIGJlIGZvdW5kIChlLmcuICcmbm90JyBhbmQgJyZub3RpbjsnKSBleGNlcHQgdGhlIGNhc2VcbiAgICAgICAgICAgIC8vdGhlbiBmb3VuZCBtYXRjaCBpcyB0ZXJtaW5hdGVkIGJ5IHNlbWljb2xvbi5cbiAgICAgICAgICAgIHJlZmVyZW5jZWRDb2RlUG9pbnRzID0gbGVhZi5jO1xuICAgICAgICAgICAgZW50aXR5Q29kZVBvaW50c0NvdW50ID0gY29uc3VtZWRDb3VudDtcblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgICAgIHNlbWljb2xvblRlcm1pbmF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlZmVyZW5jZWRDb2RlUG9pbnRzKSB7XG4gICAgICAgIGlmICghc2VtaWNvbG9uVGVybWluYXRlZCkge1xuICAgICAgICAgICAgLy9OT1RFOiB1bmNvbnN1bWUgZXhjZXNzIChlLmcuICdpdCcgaW4gJyZub3RpdCcpXG4gICAgICAgICAgICB0aGlzLl91bmNvbnN1bWVTZXZlcmFsKGNvbnN1bWVkQ291bnQgLSBlbnRpdHlDb2RlUG9pbnRzQ291bnQpO1xuXG4gICAgICAgICAgICAvL05PVEU6IElmIHRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlIGlzIGJlaW5nIGNvbnN1bWVkIGFzIHBhcnQgb2YgYW4gYXR0cmlidXRlIGFuZCB0aGUgbmV4dCBjaGFyYWN0ZXJcbiAgICAgICAgICAgIC8vaXMgZWl0aGVyIGEgVSswMDNEIEVRVUFMUyBTSUdOIGNoYXJhY3RlciAoPSkgb3IgYW4gYWxwaGFudW1lcmljIEFTQ0lJIGNoYXJhY3RlciwgdGhlbiwgZm9yIGhpc3RvcmljYWxcbiAgICAgICAgICAgIC8vcmVhc29ucywgYWxsIHRoZSBjaGFyYWN0ZXJzIHRoYXQgd2VyZSBtYXRjaGVkIGFmdGVyIHRoZSBVKzAwMjYgQU1QRVJTQU5EIGNoYXJhY3RlciAoJikgbXVzdCBiZVxuICAgICAgICAgICAgLy91bmNvbnN1bWVkLCBhbmQgbm90aGluZyBpcyByZXR1cm5lZC5cbiAgICAgICAgICAgIC8vSG93ZXZlciwgaWYgdGhpcyBuZXh0IGNoYXJhY3RlciBpcyBpbiBmYWN0IGEgVSswMDNEIEVRVUFMUyBTSUdOIGNoYXJhY3RlciAoPSksIHRoZW4gdGhpcyBpcyBhXG4gICAgICAgICAgICAvL3BhcnNlIGVycm9yLCBiZWNhdXNlIHNvbWUgbGVnYWN5IHVzZXIgYWdlbnRzIHdpbGwgbWlzaW50ZXJwcmV0IHRoZSBtYXJrdXAgaW4gdGhvc2UgY2FzZXMuXG4gICAgICAgICAgICAvLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI3Rva2VuaXppbmctY2hhcmFjdGVyLXJlZmVyZW5jZXMpXG4gICAgICAgICAgICBpZiAoaW5BdHRyKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5leHRDcCA9IHRoaXMuX2xvb2thaGVhZCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5leHRDcCA9PT0gJC5FUVVBTFNfU0lHTiB8fCBpc0FzY2lpQWxwaGFOdW1lcmljKG5leHRDcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdW5jb25zdW1lU2V2ZXJhbChlbnRpdHlDb2RlUG9pbnRzQ291bnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlZENvZGVQb2ludHM7XG4gICAgfVxuXG4gICAgdGhpcy5fdW5jb25zdW1lU2V2ZXJhbChjb25zdW1lZENvdW50KTtcblxuICAgIHJldHVybiBudWxsO1xufTtcblxuVG9rZW5pemVyLnByb3RvdHlwZS5fY29uc3VtZUNoYXJhY3RlclJlZmVyZW5jZSA9IGZ1bmN0aW9uIChzdGFydENwLCBpbkF0dHIpIHtcbiAgICBpZiAoaXNXaGl0ZXNwYWNlKHN0YXJ0Q3ApIHx8IHN0YXJ0Q3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04gfHxcbiAgICAgICAgc3RhcnRDcCA9PT0gJC5BTVBFUlNBTkQgfHwgc3RhcnRDcCA9PT0gdGhpcy5hZGRpdGlvbmFsQWxsb3dlZENwIHx8IHN0YXJ0Q3AgPT09ICQuRU9GKSB7XG4gICAgICAgIC8vTk9URTogbm90IGEgY2hhcmFjdGVyIHJlZmVyZW5jZS4gTm8gY2hhcmFjdGVycyBhcmUgY29uc3VtZWQsIGFuZCBub3RoaW5nIGlzIHJldHVybmVkLlxuICAgICAgICB0aGlzLl91bmNvbnN1bWUoKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0Q3AgPT09ICQuTlVNQkVSX1NJR04pIHtcbiAgICAgICAgLy9OT1RFOiB3ZSBoYXZlIGEgbnVtZXJpYyBlbnRpdHkgY2FuZGlkYXRlLCBub3cgd2Ugc2hvdWxkIGRldGVybWluZSBpZiBpdCdzIGhleCBvciBkZWNpbWFsXG4gICAgICAgIHZhciBpc0hleCA9IGZhbHNlLFxuICAgICAgICAgICAgbmV4dENwID0gdGhpcy5fbG9va2FoZWFkKCk7XG5cbiAgICAgICAgaWYgKG5leHRDcCA9PT0gJC5MQVRJTl9TTUFMTF9YIHx8IG5leHRDcCA9PT0gJC5MQVRJTl9DQVBJVEFMX1gpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnN1bWUoKTtcbiAgICAgICAgICAgIGlzSGV4ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5leHRDcCA9IHRoaXMuX2xvb2thaGVhZCgpO1xuXG4gICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgZGlnaXQgdGhpcyBpcyBhIG51bWVyaWMgZW50aXR5IGZvciBzdXJlLCBzbyB3ZSBjb25zdW1lIGl0XG4gICAgICAgIGlmIChuZXh0Q3AgIT09ICQuRU9GICYmIGlzRGlnaXQobmV4dENwLCBpc0hleCkpXG4gICAgICAgICAgICByZXR1cm4gW3RoaXMuX2NvbnN1bWVOdW1lcmljRW50aXR5KGlzSGV4KV07XG5cbiAgICAgICAgLy9OT1RFOiBvdGhlcndpc2UgdGhpcyBpcyBhIGJvZ3VzIG51bWJlciBlbnRpdHkgYW5kIGEgcGFyc2UgZXJyb3IuIFVuY29uc3VtZSB0aGUgbnVtYmVyIHNpZ25cbiAgICAgICAgLy9hbmQgdGhlICd4Jy1jaGFyYWN0ZXIgaWYgYXBwcm9wcmlhdGUuXG4gICAgICAgIHRoaXMuX3VuY29uc3VtZVNldmVyYWwoaXNIZXggPyAyIDogMSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jb25zdW1lTmFtZWRFbnRpdHkoc3RhcnRDcCwgaW5BdHRyKTtcbn07XG5cbi8vU3RhdGUgbWFjaGluZVxudmFyIF8gPSBUb2tlbml6ZXIucHJvdG90eXBlO1xuXG4vLzEyLjIuNC4xIERhdGEgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0RBVEFfU1RBVEVdID0gZnVuY3Rpb24gZGF0YVN0YXRlKGNwKSB7XG4gICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG5cbiAgICBpZiAoY3AgPT09ICQuQU1QRVJTQU5EKVxuICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9JTl9EQVRBX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pXG4gICAgICAgIHRoaXMuc3RhdGUgPSBUQUdfT1BFTl9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpXG4gICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG59O1xuXG5cbi8vMTIuMi40LjIgQ2hhcmFjdGVyIHJlZmVyZW5jZSBpbiBkYXRhIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tDSEFSQUNURVJfUkVGRVJFTkNFX0lOX0RBVEFfU1RBVEVdID0gZnVuY3Rpb24gY2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUoY3ApIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxBbGxvd2VkQ3AgPSB2b2lkIDA7XG5cbiAgICB2YXIgcmVmZXJlbmNlZENvZGVQb2ludHMgPSB0aGlzLl9jb25zdW1lQ2hhcmFjdGVyUmVmZXJlbmNlKGNwLCBmYWxzZSk7XG5cbiAgICBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZWRDb2RlUG9pbnRzKVxuICAgICAgICAgICAgdGhpcy5fZW1pdFNldmVyYWxDb2RlUG9pbnRzKHJlZmVyZW5jZWRDb2RlUG9pbnRzKTtcblxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcignJicpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMyBSQ0RBVEEgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1JDREFUQV9TVEFURV0gPSBmdW5jdGlvbiByY2RhdGFTdGF0ZShjcCkge1xuICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgaWYgKGNwID09PSAkLkFNUEVSU0FORClcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENIQVJBQ1RFUl9SRUZFUkVOQ0VfSU5fUkNEQVRBX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pXG4gICAgICAgIHRoaXMuc3RhdGUgPSBSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLl9lbWl0Q2hhcihVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbn07XG5cblxuLy8xMi4yLjQuNCBDaGFyYWN0ZXIgcmVmZXJlbmNlIGluIFJDREFUQSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQ0hBUkFDVEVSX1JFRkVSRU5DRV9JTl9SQ0RBVEFfU1RBVEVdID0gZnVuY3Rpb24gY2hhcmFjdGVyUmVmZXJlbmNlSW5SY2RhdGFTdGF0ZShjcCkge1xuICAgIHRoaXMuYWRkaXRpb25hbEFsbG93ZWRDcCA9IHZvaWQgMDtcblxuICAgIHZhciByZWZlcmVuY2VkQ29kZVBvaW50cyA9IHRoaXMuX2NvbnN1bWVDaGFyYWN0ZXJSZWZlcmVuY2UoY3AsIGZhbHNlKTtcblxuICAgIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICBpZiAocmVmZXJlbmNlZENvZGVQb2ludHMpXG4gICAgICAgICAgICB0aGlzLl9lbWl0U2V2ZXJhbENvZGVQb2ludHMocmVmZXJlbmNlZENvZGVQb2ludHMpO1xuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFyKCcmJyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IFJDREFUQV9TVEFURTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjUgUkFXVEVYVCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bUkFXVEVYVF9TVEFURV0gPSBmdW5jdGlvbiByYXd0ZXh0U3RhdGUoY3ApIHtcbiAgICB0aGlzLnByZXByb2Nlc3Nvci5kcm9wUGFyc2VkQ2h1bmsoKTtcblxuICAgIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTilcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFJBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLl9lbWl0Q2hhcihVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbn07XG5cblxuLy8xMi4yLjQuNiBTY3JpcHQgZGF0YSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YVN0YXRlKGNwKSB7XG4gICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG5cbiAgICBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pXG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpXG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xufTtcblxuXG4vLzEyLjIuNC43IFBMQUlOVEVYVCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bUExBSU5URVhUX1NUQVRFXSA9IGZ1bmN0aW9uIHBsYWludGV4dFN0YXRlKGNwKSB7XG4gICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG5cbiAgICBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG59O1xuXG5cbi8vMTIuMi40LjggVGFnIG9wZW4gc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1RBR19PUEVOX1NUQVRFXSA9IGZ1bmN0aW9uIHRhZ09wZW5TdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5FWENMQU1BVElPTl9NQVJLKVxuICAgICAgICB0aGlzLnN0YXRlID0gTUFSS1VQX0RFQ0xBUkFUSU9OX09QRU5fU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5TT0xJRFVTKVxuICAgICAgICB0aGlzLnN0YXRlID0gRU5EX1RBR19PUEVOX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlU3RhcnRUYWdUb2tlbigpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFRBR19OQU1FX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5RVUVTVElPTl9NQVJLKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0NPTU1FTlRfU1RBVEUpO1xuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC45IEVuZCB0YWcgb3BlbiBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bRU5EX1RBR19PUEVOX1NUQVRFXSA9IGZ1bmN0aW9uIGVuZFRhZ09wZW5TdGF0ZShjcCkge1xuICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFRBR19OQU1FX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTilcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJzwnKTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy8nKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfQ09NTUVOVF9TVEFURSk7XG59O1xuXG5cbi8vMTIuMi40LjEwIFRhZyBuYW1lIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tUQUdfTkFNRV9TVEFURV0gPSBmdW5jdGlvbiB0YWdOYW1lU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSlcbiAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLlNPTElEVVMpXG4gICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0NoYXIoY3ApO1xufTtcblxuXG4vLzEyLjIuNC4xMSBSQ0RBVEEgbGVzcy10aGFuIHNpZ24gc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1JDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURV0gPSBmdW5jdGlvbiByY2RhdGFMZXNzVGhhblNpZ25TdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFJDREFUQV9FTkRfVEFHX09QRU5fU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjEyIFJDREFUQSBlbmQgdGFnIG9wZW4gc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1JDREFUQV9FTkRfVEFHX09QRU5fU1RBVEVdID0gZnVuY3Rpb24gcmNkYXRhRW5kVGFnT3BlblN0YXRlKGNwKSB7XG4gICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUVuZFRhZ1Rva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCcvJyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjEzIFJDREFUQSBlbmQgdGFnIG5hbWUgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1JDREFUQV9FTkRfVEFHX05BTUVfU1RBVEVdID0gZnVuY3Rpb24gcmNkYXRhRW5kVGFnTmFtZVN0YXRlKGNwKSB7XG4gICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChpc0FzY2lpTG93ZXIoY3ApKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQXBwcm9wcmlhdGVFbmRUYWdUb2tlbigpKSB7XG4gICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCcvJyk7XG4gICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQ0RBVEFfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMTQgUkFXVEVYVCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bUkFXVEVYVF9MRVNTX1RIQU5fU0lHTl9TVEFURV0gPSBmdW5jdGlvbiByYXd0ZXh0TGVzc1RoYW5TaWduU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgIHRoaXMuc3RhdGUgPSBSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJzwnKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQVdURVhUX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjE1IFJBV1RFWFQgZW5kIHRhZyBvcGVuIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURV0gPSBmdW5jdGlvbiByYXd0ZXh0RW5kVGFnT3BlblN0YXRlKGNwKSB7XG4gICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUVuZFRhZ1Rva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUpO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPCcpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLycpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJBV1RFWFRfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMTYgUkFXVEVYVCBlbmQgdGFnIG5hbWUgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1JBV1RFWFRfRU5EX1RBR19OQU1FX1NUQVRFXSA9IGZ1bmN0aW9uIHJhd3RleHRFbmRUYWdOYW1lU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5faXNBcHByb3ByaWF0ZUVuZFRhZ1Rva2VuKCkpIHtcbiAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJzwnKTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy8nKTtcbiAgICAgICAgdGhpcy5fZW1pdFNldmVyYWxDb2RlUG9pbnRzKHRoaXMudGVtcEJ1ZmYpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJBV1RFWFRfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMTcgU2NyaXB0IGRhdGEgbGVzcy10aGFuIHNpZ24gc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FWENMQU1BVElPTl9NQVJLKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCchJyk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMTggU2NyaXB0IGRhdGEgZW5kIHRhZyBvcGVuIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTQ1JJUFRfREFUQV9FTkRfVEFHX09QRU5fU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZShjcCkge1xuICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCcvJyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMTkgU2NyaXB0IGRhdGEgZW5kIHRhZyBuYW1lIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZShjcCkge1xuICAgIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoaXNBc2NpaUxvd2VyKGNwKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9pc0FwcHJvcHJpYXRlRW5kVGFnVG9rZW4oKSkge1xuICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWxzZSBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJzwnKTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy8nKTtcbiAgICAgICAgdGhpcy5fZW1pdFNldmVyYWxDb2RlUG9pbnRzKHRoaXMudGVtcEJ1ZmYpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjIwIFNjcmlwdCBkYXRhIGVzY2FwZSBzdGFydCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFFc2NhcGVTdGFydFN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCctJyk7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbn07XG5cblxuLy8xMi4yLjQuMjEgU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IGRhc2ggc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFFc2NhcGVTdGFydERhc2hTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLScpO1xuICAgIH1cblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9TVEFURSk7XG59O1xuXG5cbi8vMTIuMi40LjIyIFNjcmlwdCBkYXRhIGVzY2FwZWQgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YUVzY2FwZWRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy0nKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTilcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLl9lbWl0Q2hhcihVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xufTtcblxuXG4vLzEyLjIuNC4yMyBTY3JpcHQgZGF0YSBlc2NhcGVkIGRhc2ggc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLScpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKVxuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMjQgU2NyaXB0IGRhdGEgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpXG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCctJyk7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTilcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc+Jyk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC4yNSBTY3JpcHQgZGF0YSBlc2NhcGVkIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC4yNiBTY3JpcHQgZGF0YSBlc2NhcGVkIGVuZCB0YWcgb3BlbiBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX09QRU5fU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCcvJyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC4yNyBTY3JpcHQgZGF0YSBlc2NhcGVkIGVuZCB0YWcgbmFtZSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5faXNBcHByb3ByaWF0ZUVuZFRhZ1Rva2VuKCkpIHtcbiAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJzwnKTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy8nKTtcbiAgICAgICAgdGhpcy5fZW1pdFNldmVyYWxDb2RlUG9pbnRzKHRoaXMudGVtcEJ1ZmYpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMjggU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZSBzdGFydCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApIHx8IGNwID09PSAkLlNPTElEVVMgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuaXNUZW1wQnVmZmVyRXF1YWxUb1NjcmlwdFN0cmluZygpID8gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUgOiBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaCh0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApKTtcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoaXNBc2NpaUxvd2VyKGNwKSkge1xuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSk7XG59O1xuXG5cbi8vMTIuMi40LjI5IFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy0nKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbn07XG5cblxuLy8xMi4yLjQuMzAgU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgZGFzaCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENoYXIoJy0nKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjMxIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIGRhc2ggZGFzaCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFXSA9IGZ1bmN0aW9uIHNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpXG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCctJyk7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFyKCc8Jyk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignPicpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcihVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC4zMiBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEVdID0gZnVuY3Rpb24gc2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhcignLycpO1xuICAgIH1cblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURSk7XG59O1xuXG5cbi8vMTIuMi40LjMzIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGUgZW5kIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURV0gPSBmdW5jdGlvbiBzY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSB8fCBjcCA9PT0gJC5TT0xJRFVTIHx8IGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmlzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmcoKSA/IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUgOiBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURTtcblxuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaCh0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApKTtcbiAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoaXNBc2NpaUxvd2VyKGNwKSkge1xuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUpO1xufTtcblxuXG4vLzEyLjIuNC4zNCBCZWZvcmUgYXR0cmlidXRlIG5hbWUgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0JFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURV0gPSBmdW5jdGlvbiBiZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSlcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgaWYgKGNwID09PSAkLlNPTElEVVMgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04gfHwgY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVRVUFMU19TSUdOKSB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUF0dHIoJz0nKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IEFUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCcnKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShBVFRSSUJVVEVfTkFNRV9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC4zNSBBdHRyaWJ1dGUgbmFtZSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQVRUUklCVVRFX05BTUVfU1RBVEVdID0gZnVuY3Rpb24gYXR0cmlidXRlTmFtZVN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTiB8fCBjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5fbGVhdmVBdHRyTmFtZShBRlRFUl9BVFRSSUJVVEVfTkFNRV9TVEFURSk7XG4gICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVRVUFMU19TSUdOKVxuICAgICAgICB0aGlzLl9sZWF2ZUF0dHJOYW1lKEJFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEUpO1xuXG4gICAgZWxzZSBpZiAoaXNBc2NpaVVwcGVyKGNwKSlcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUksgfHwgY3AgPT09ICQuQVBPU1RST1BIRSB8fCBjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTilcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IHRvQ2hhcihjcCk7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSB0b0NoYXIoY3ApO1xufTtcblxuXG4vLzEyLjIuNC4zNiBBZnRlciBhdHRyaWJ1dGUgbmFtZSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEVdID0gZnVuY3Rpb24gYWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSlcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgaWYgKGNwID09PSAkLlNPTElEVVMpXG4gICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRVFVQUxTX1NJR04pXG4gICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX1ZBTFVFX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignJyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuMzcgQmVmb3JlIGF0dHJpYnV0ZSB2YWx1ZSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURV0gPSBmdW5jdGlvbiBiZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpXG4gICAgICAgIHJldHVybjtcblxuICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IEFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSlcbiAgICAgICAgdGhpcy5zdGF0ZSA9IEFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRF9TVEFURSk7XG59O1xuXG5cbi8vMTIuMi40LjM4IEF0dHJpYnV0ZSB2YWx1ZSAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0FUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFXSA9IGZ1bmN0aW9uIGF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUoY3ApIHtcbiAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspXG4gICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuQU1QRVJTQU5EKSB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbEFsbG93ZWRDcCA9ICQuUVVPVEFUSU9OX01BUks7XG4gICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9JTl9BVFRSSUJVVEVfVkFMVUVfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRilcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSB0b0NoYXIoY3ApO1xufTtcblxuXG4vLzEyLjIuNC4zOSBBdHRyaWJ1dGUgdmFsdWUgKHNpbmdsZS1xdW90ZWQpIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURV0gPSBmdW5jdGlvbiBhdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpXG4gICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuQU1QRVJTQU5EKSB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbEFsbG93ZWRDcCA9ICQuQVBPU1RST1BIRTtcbiAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDSEFSQUNURVJfUkVGRVJFTkNFX0lOX0FUVFJJQlVURV9WQUxVRV9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcihjcCk7XG59O1xuXG5cbi8vMTIuMi40LjQwIEF0dHJpYnV0ZSB2YWx1ZSAodW5xdW90ZWQpIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEVdID0gZnVuY3Rpb24gYXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpXG4gICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSk7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5BTVBFUlNBTkQpIHtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsQWxsb3dlZENwID0gJC5HUkVBVEVSX1RIQU5fU0lHTjtcbiAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDSEFSQUNURVJfUkVGRVJFTkNFX0lOX0FUVFJJQlVURV9WQUxVRV9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShEQVRBX1NUQVRFKTtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpXG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSyB8fCBjcCA9PT0gJC5BUE9TVFJPUEhFIHx8IGNwID09PSAkLkxFU1NfVEhBTl9TSUdOIHx8XG4gICAgICAgICAgICAgY3AgPT09ICQuRVFVQUxTX1NJR04gfHwgY3AgPT09ICQuR1JBVkVfQUNDRU5UKVxuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcihjcCk7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbn07XG5cblxuLy8xMi4yLjQuNDEgQ2hhcmFjdGVyIHJlZmVyZW5jZSBpbiBhdHRyaWJ1dGUgdmFsdWUgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0NIQVJBQ1RFUl9SRUZFUkVOQ0VfSU5fQVRUUklCVVRFX1ZBTFVFX1NUQVRFXSA9IGZ1bmN0aW9uIGNoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZShjcCkge1xuICAgIHZhciByZWZlcmVuY2VkQ29kZVBvaW50cyA9IHRoaXMuX2NvbnN1bWVDaGFyYWN0ZXJSZWZlcmVuY2UoY3AsIHRydWUpO1xuXG4gICAgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgIGlmIChyZWZlcmVuY2VkQ29kZVBvaW50cykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWZlcmVuY2VkQ29kZVBvaW50cy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcihyZWZlcmVuY2VkQ29kZVBvaW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSAnJic7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMucmV0dXJuU3RhdGU7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC40MiBBZnRlciBhdHRyaWJ1dGUgdmFsdWUgKHF1b3RlZCkgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0FGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURfU1RBVEVdID0gZnVuY3Rpb24gYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpXG4gICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSk7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5TT0xJRFVTKVxuICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFKTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKERBVEFfU1RBVEUpO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSk7XG59O1xuXG5cbi8vMTIuMi40LjQzIFNlbGYtY2xvc2luZyBzdGFydCB0YWcgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW1NFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEVdID0gZnVuY3Rpb24gc2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbn07XG5cblxuLy8xMi4yLjQuNDQgQm9ndXMgY29tbWVudCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQk9HVVNfQ09NTUVOVF9TVEFURV0gPSBmdW5jdGlvbiBib2d1c0NvbW1lbnRTdGF0ZSgpIHtcbiAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oKTtcbiAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0NPTU1FTlRfU1RBVEVfQ09OVElOVUFUSU9OKTtcbn07XG5cbi8vSEFDSzogdG8gc3VwcG9ydCBzdHJlYW1pbmcgYW5kIG1ha2UgQk9HVVNfQ09NTUVOVF9TVEFURSByZWVudHJhbnQgd2UndmVcbi8vaW50cm9kdWNlZCBCT0dVU19DT01NRU5UX1NUQVRFX0NPTlRJTlVBVElPTiBzdGF0ZSB3aGljaCB3aWxsIG5vdCBwcm9kdWNlXG4vL2NvbW1lbnQgdG9rZW4gb24gZWFjaCBjYWxsLlxuX1tCT0dVU19DT01NRU5UX1NUQVRFX0NPTlRJTlVBVElPTl0gPSBmdW5jdGlvbiBib2d1c0NvbW1lbnRTdGF0ZUNvbnRpbnVhdGlvbihjcCkge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9IGNwID09PSAkLk5VTEwgPyBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUiA6IHRvQ2hhcihjcCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2hpYmVybmF0aW9uU25hcHNob3QoKTtcbiAgICAgICAgICAgIGNwID0gdGhpcy5fY29uc3VtZSgpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG59O1xuXG4vLzEyLjIuNC40NSBNYXJrdXAgZGVjbGFyYXRpb24gb3BlbiBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bTUFSS1VQX0RFQ0xBUkFUSU9OX09QRU5fU1RBVEVdID0gZnVuY3Rpb24gbWFya3VwRGVjbGFyYXRpb25PcGVuU3RhdGUoY3ApIHtcbiAgICB2YXIgZGFzaERhc2hNYXRjaCA9IHRoaXMuX2NvbnN1bWVTdWJzZXF1ZW50SWZNYXRjaCgkJC5EQVNIX0RBU0hfU1RSSU5HLCBjcCwgdHJ1ZSksXG4gICAgICAgIGRvY3R5cGVNYXRjaCA9ICFkYXNoRGFzaE1hdGNoICYmIHRoaXMuX2NvbnN1bWVTdWJzZXF1ZW50SWZNYXRjaCgkJC5ET0NUWVBFX1NUUklORywgY3AsIGZhbHNlKSxcbiAgICAgICAgY2RhdGFNYXRjaCA9ICFkYXNoRGFzaE1hdGNoICYmICFkb2N0eXBlTWF0Y2ggJiZcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsb3dDREFUQSAmJlxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZVN1YnNlcXVlbnRJZk1hdGNoKCQkLkNEQVRBX1NUQVJUX1NUUklORywgY3AsIHRydWUpO1xuXG4gICAgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgIGlmIChkYXNoRGFzaE1hdGNoKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVJUX1NUQVRFO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxzZSBpZiAoZG9jdHlwZU1hdGNoKVxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1RBVEU7XG5cbiAgICAgICAgZWxzZSBpZiAoY2RhdGFNYXRjaClcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDREFUQV9TRUNUSU9OX1NUQVRFO1xuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfQ09NTUVOVF9TVEFURSk7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC40NiBDb21tZW50IHN0YXJ0IHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tDT01NRU5UX1NUQVJUX1NUQVRFXSA9IGZ1bmN0aW9uIGNvbW1lbnRTdGFydFN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfU1RBUlRfREFTSF9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVRFO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuNDcgQ29tbWVudCBzdGFydCBkYXNoIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEVdID0gZnVuY3Rpb24gY29tbWVudFN0YXJ0RGFzaFN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFURTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjQ4IENvbW1lbnQgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0NPTU1FTlRfU1RBVEVdID0gZnVuY3Rpb24gY29tbWVudFN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX0RBU0hfU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9IFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbn07XG5cblxuLy8xMi4yLjQuNDkgQ29tbWVudCBlbmQgZGFzaCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQ09NTUVOVF9FTkRfREFTSF9TVEFURV0gPSBmdW5jdGlvbiBjb21tZW50RW5kRGFzaFN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfU1RBVEU7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC41MCBDb21tZW50IGVuZCBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQ09NTUVOVF9FTkRfU1RBVEVdID0gZnVuY3Rpb24gY29tbWVudEVuZFN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRVhDTEFNQVRJT05fTUFSSylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX0JBTkdfU1RBVEU7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0nO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0tJztcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFURTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjUxIENvbW1lbnQgZW5kIGJhbmcgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0NPTU1FTlRfRU5EX0JBTkdfU1RBVEVdID0gZnVuY3Rpb24gY29tbWVudEVuZEJhbmdTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLS0hJztcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX0RBU0hfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0tISc7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0tISc7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfU1RBVEU7XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC41MiBET0NUWVBFIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tET0NUWVBFX1NUQVRFXSA9IGZ1bmN0aW9uIGRvY3R5cGVTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKVxuICAgICAgICByZXR1cm47XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKG51bGwpO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbignJyk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoRE9DVFlQRV9OQU1FX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjU0IERPQ1RZUEUgbmFtZSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bRE9DVFlQRV9OQU1FX1NUQVRFXSA9IGZ1bmN0aW9uIGRvY3R5cGVOYW1lU3RhdGUoY3ApIHtcbiAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTiB8fCBjcCA9PT0gJC5FT0YpXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFKTtcblxuICAgIGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLm5hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5uYW1lICs9IFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuXG4gICAgZWxzZVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5uYW1lICs9IHRvQ2hhcihjcCk7XG59O1xuXG5cbi8vMTIuMi40LjU1IEFmdGVyIERPQ1RZUEUgbmFtZSBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFXSA9IGZ1bmN0aW9uIGFmdGVyRG9jdHlwZU5hbWVTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKVxuICAgICAgICByZXR1cm47XG5cbiAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHB1YmxpY01hdGNoID0gdGhpcy5fY29uc3VtZVN1YnNlcXVlbnRJZk1hdGNoKCQkLlBVQkxJQ19TVFJJTkcsIGNwLCBmYWxzZSksXG4gICAgICAgICAgICBzeXN0ZW1NYXRjaCA9ICFwdWJsaWNNYXRjaCAmJiB0aGlzLl9jb25zdW1lU3Vic2VxdWVudElmTWF0Y2goJCQuU1lTVEVNX1NUUklORywgY3AsIGZhbHNlKTtcblxuICAgICAgICBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIGlmIChwdWJsaWNNYXRjaClcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEU7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKHN5c3RlbU1hdGNoKVxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURTtcblxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCT0dVU19ET0NUWVBFX1NUQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcblxuXG4vLzEyLjIuNC41NyBCZWZvcmUgRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciBzdGF0ZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbl9bQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEVdID0gZnVuY3Rpb24gYmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXJTdGF0ZShjcCkge1xuICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKVxuICAgICAgICByZXR1cm47XG5cbiAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjU4IERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEVdID0gZnVuY3Rpb24gZG9jdHlwZVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSylcbiAgICAgICAgdGhpcy5zdGF0ZSA9IEJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSU19TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLk5VTEwpXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkICs9IFVOSUNPREUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkICs9IHRvQ2hhcihjcCk7XG59O1xuXG5cbi8vMTIuMi40LjU5IERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgKHNpbmdsZS1xdW90ZWQpIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEVdID0gZnVuY3Rpb24gZG9jdHlwZVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKVxuICAgICAgICB0aGlzLnN0YXRlID0gQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTX1NUQVRFO1xuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuTlVMTClcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgKz0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuICAgIH1cblxuICAgIGVsc2VcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgKz0gdG9DaGFyKGNwKTtcbn07XG5cblxuLy8xMi4yLjQuNjEgQmV0d2VlbiBET0NUWVBFIHB1YmxpYyBhbmQgc3lzdGVtIGlkZW50aWZpZXJzIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEVdID0gZnVuY3Rpb24gYmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpXG4gICAgICAgIHJldHVybjtcblxuICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEU7XG4gICAgfVxuXG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjYzIEJlZm9yZSBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURV0gPSBmdW5jdGlvbiBiZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllclN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpXG4gICAgICAgIHJldHVybjtcblxuICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgIH1cbn07XG5cblxuLy8xMi4yLjQuNjQgRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURV0gPSBmdW5jdGlvbiBkb2N0eXBlU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKVxuICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkICs9IHRvQ2hhcihjcCk7XG59O1xuXG5cbi8vMTIuMi40LjY1IERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgKHNpbmdsZS1xdW90ZWQpIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEVdID0gZnVuY3Rpb24gZG9jdHlwZVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZShjcCkge1xuICAgIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKVxuICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURTtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSBVTklDT0RFLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkICs9IHRvQ2hhcihjcCk7XG59O1xuXG5cbi8vMTIuMi40LjY2IEFmdGVyIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0FGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEVdID0gZnVuY3Rpb24gYWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllclN0YXRlKGNwKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpXG4gICAgICAgIHJldHVybjtcblxuICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG5cbiAgICBlbHNlXG4gICAgICAgIHRoaXMuc3RhdGUgPSBCT0dVU19ET0NUWVBFX1NUQVRFO1xufTtcblxuXG4vLzEyLjIuNC42NyBCb2d1cyBET0NUWVBFIHN0YXRlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuX1tCT0dVU19ET0NUWVBFX1NUQVRFXSA9IGZ1bmN0aW9uIGJvZ3VzRG9jdHlwZVN0YXRlKGNwKSB7XG4gICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShEQVRBX1NUQVRFKTtcbiAgICB9XG59O1xuXG5cbi8vMTIuMi40LjY4IENEQVRBIHNlY3Rpb24gc3RhdGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5fW0NEQVRBX1NFQ1RJT05fU1RBVEVdID0gZnVuY3Rpb24gY2RhdGFTZWN0aW9uU3RhdGUoY3ApIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjZGF0YUVuZE1hdGNoID0gdGhpcy5fY29uc3VtZVN1YnNlcXVlbnRJZk1hdGNoKCQkLkNEQVRBX0VORF9TVFJJTkcsIGNwLCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGlmIChjZGF0YUVuZE1hdGNoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuXG4gICAgICAgICAgICB0aGlzLl9oaWJlcm5hdGlvblNuYXBzaG90KCk7XG4gICAgICAgICAgICBjcCA9IHRoaXMuX2NvbnN1bWUoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIE5TID0gZXhwb3J0cy5OQU1FU1BBQ0VTID0ge1xyXG4gICAgSFRNTDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLFxyXG4gICAgTUFUSE1MOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCcsXHJcbiAgICBTVkc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXHJcbiAgICBYTElOSzogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnLFxyXG4gICAgWE1MOiAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJyxcclxuICAgIFhNTE5TOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nXHJcbn07XHJcblxyXG5leHBvcnRzLkFUVFJTID0ge1xyXG4gICAgVFlQRTogJ3R5cGUnLFxyXG4gICAgQUNUSU9OOiAnYWN0aW9uJyxcclxuICAgIEVOQ09ESU5HOiAnZW5jb2RpbmcnLFxyXG4gICAgUFJPTVBUOiAncHJvbXB0JyxcclxuICAgIE5BTUU6ICduYW1lJyxcclxuICAgIENPTE9SOiAnY29sb3InLFxyXG4gICAgRkFDRTogJ2ZhY2UnLFxyXG4gICAgU0laRTogJ3NpemUnXHJcbn07XHJcblxyXG52YXIgJCA9IGV4cG9ydHMuVEFHX05BTUVTID0ge1xyXG4gICAgQTogJ2EnLFxyXG4gICAgQUREUkVTUzogJ2FkZHJlc3MnLFxyXG4gICAgQU5OT1RBVElPTl9YTUw6ICdhbm5vdGF0aW9uLXhtbCcsXHJcbiAgICBBUFBMRVQ6ICdhcHBsZXQnLFxyXG4gICAgQVJFQTogJ2FyZWEnLFxyXG4gICAgQVJUSUNMRTogJ2FydGljbGUnLFxyXG4gICAgQVNJREU6ICdhc2lkZScsXHJcblxyXG4gICAgQjogJ2InLFxyXG4gICAgQkFTRTogJ2Jhc2UnLFxyXG4gICAgQkFTRUZPTlQ6ICdiYXNlZm9udCcsXHJcbiAgICBCR1NPVU5EOiAnYmdzb3VuZCcsXHJcbiAgICBCSUc6ICdiaWcnLFxyXG4gICAgQkxPQ0tRVU9URTogJ2Jsb2NrcXVvdGUnLFxyXG4gICAgQk9EWTogJ2JvZHknLFxyXG4gICAgQlI6ICdicicsXHJcbiAgICBCVVRUT046ICdidXR0b24nLFxyXG5cclxuICAgIENBUFRJT046ICdjYXB0aW9uJyxcclxuICAgIENFTlRFUjogJ2NlbnRlcicsXHJcbiAgICBDT0RFOiAnY29kZScsXHJcbiAgICBDT0w6ICdjb2wnLFxyXG4gICAgQ09MR1JPVVA6ICdjb2xncm91cCcsXHJcblxyXG4gICAgREQ6ICdkZCcsXHJcbiAgICBERVNDOiAnZGVzYycsXHJcbiAgICBERVRBSUxTOiAnZGV0YWlscycsXHJcbiAgICBESUFMT0c6ICdkaWFsb2cnLFxyXG4gICAgRElSOiAnZGlyJyxcclxuICAgIERJVjogJ2RpdicsXHJcbiAgICBETDogJ2RsJyxcclxuICAgIERUOiAnZHQnLFxyXG5cclxuICAgIEVNOiAnZW0nLFxyXG4gICAgRU1CRUQ6ICdlbWJlZCcsXHJcblxyXG4gICAgRklFTERTRVQ6ICdmaWVsZHNldCcsXHJcbiAgICBGSUdDQVBUSU9OOiAnZmlnY2FwdGlvbicsXHJcbiAgICBGSUdVUkU6ICdmaWd1cmUnLFxyXG4gICAgRk9OVDogJ2ZvbnQnLFxyXG4gICAgRk9PVEVSOiAnZm9vdGVyJyxcclxuICAgIEZPUkVJR05fT0JKRUNUOiAnZm9yZWlnbk9iamVjdCcsXHJcbiAgICBGT1JNOiAnZm9ybScsXHJcbiAgICBGUkFNRTogJ2ZyYW1lJyxcclxuICAgIEZSQU1FU0VUOiAnZnJhbWVzZXQnLFxyXG5cclxuICAgIEgxOiAnaDEnLFxyXG4gICAgSDI6ICdoMicsXHJcbiAgICBIMzogJ2gzJyxcclxuICAgIEg0OiAnaDQnLFxyXG4gICAgSDU6ICdoNScsXHJcbiAgICBINjogJ2g2JyxcclxuICAgIEhFQUQ6ICdoZWFkJyxcclxuICAgIEhFQURFUjogJ2hlYWRlcicsXHJcbiAgICBIR1JPVVA6ICdoZ3JvdXAnLFxyXG4gICAgSFI6ICdocicsXHJcbiAgICBIVE1MOiAnaHRtbCcsXHJcblxyXG4gICAgSTogJ2knLFxyXG4gICAgSU1HOiAnaW1nJyxcclxuICAgIElNQUdFOiAnaW1hZ2UnLFxyXG4gICAgSU5QVVQ6ICdpbnB1dCcsXHJcbiAgICBJRlJBTUU6ICdpZnJhbWUnLFxyXG5cclxuICAgIEtFWUdFTjogJ2tleWdlbicsXHJcblxyXG4gICAgTEFCRUw6ICdsYWJlbCcsXHJcbiAgICBMSTogJ2xpJyxcclxuICAgIExJTks6ICdsaW5rJyxcclxuICAgIExJU1RJTkc6ICdsaXN0aW5nJyxcclxuXHJcbiAgICBNQUlOOiAnbWFpbicsXHJcbiAgICBNQUxJR05NQVJLOiAnbWFsaWdubWFyaycsXHJcbiAgICBNQVJRVUVFOiAnbWFycXVlZScsXHJcbiAgICBNQVRIOiAnbWF0aCcsXHJcbiAgICBNRU5VOiAnbWVudScsXHJcbiAgICBNRU5VSVRFTTogJ21lbnVpdGVtJyxcclxuICAgIE1FVEE6ICdtZXRhJyxcclxuICAgIE1HTFlQSDogJ21nbHlwaCcsXHJcbiAgICBNSTogJ21pJyxcclxuICAgIE1POiAnbW8nLFxyXG4gICAgTU46ICdtbicsXHJcbiAgICBNUzogJ21zJyxcclxuICAgIE1URVhUOiAnbXRleHQnLFxyXG5cclxuICAgIE5BVjogJ25hdicsXHJcbiAgICBOT0JSOiAnbm9icicsXHJcbiAgICBOT0ZSQU1FUzogJ25vZnJhbWVzJyxcclxuICAgIE5PRU1CRUQ6ICdub2VtYmVkJyxcclxuICAgIE5PU0NSSVBUOiAnbm9zY3JpcHQnLFxyXG5cclxuICAgIE9CSkVDVDogJ29iamVjdCcsXHJcbiAgICBPTDogJ29sJyxcclxuICAgIE9QVEdST1VQOiAnb3B0Z3JvdXAnLFxyXG4gICAgT1BUSU9OOiAnb3B0aW9uJyxcclxuXHJcbiAgICBQOiAncCcsXHJcbiAgICBQQVJBTTogJ3BhcmFtJyxcclxuICAgIFBMQUlOVEVYVDogJ3BsYWludGV4dCcsXHJcbiAgICBQUkU6ICdwcmUnLFxyXG5cclxuICAgIFJCOiAncmInLFxyXG4gICAgUlA6ICdycCcsXHJcbiAgICBSVDogJ3J0JyxcclxuICAgIFJUQzogJ3J0YycsXHJcbiAgICBSVUJZOiAncnVieScsXHJcblxyXG4gICAgUzogJ3MnLFxyXG4gICAgU0NSSVBUOiAnc2NyaXB0JyxcclxuICAgIFNFQ1RJT046ICdzZWN0aW9uJyxcclxuICAgIFNFTEVDVDogJ3NlbGVjdCcsXHJcbiAgICBTT1VSQ0U6ICdzb3VyY2UnLFxyXG4gICAgU01BTEw6ICdzbWFsbCcsXHJcbiAgICBTUEFOOiAnc3BhbicsXHJcbiAgICBTVFJJS0U6ICdzdHJpa2UnLFxyXG4gICAgU1RST05HOiAnc3Ryb25nJyxcclxuICAgIFNUWUxFOiAnc3R5bGUnLFxyXG4gICAgU1VCOiAnc3ViJyxcclxuICAgIFNVTU1BUlk6ICdzdW1tYXJ5JyxcclxuICAgIFNVUDogJ3N1cCcsXHJcblxyXG4gICAgVEFCTEU6ICd0YWJsZScsXHJcbiAgICBUQk9EWTogJ3Rib2R5JyxcclxuICAgIFRFTVBMQVRFOiAndGVtcGxhdGUnLFxyXG4gICAgVEVYVEFSRUE6ICd0ZXh0YXJlYScsXHJcbiAgICBURk9PVDogJ3Rmb290JyxcclxuICAgIFREOiAndGQnLFxyXG4gICAgVEg6ICd0aCcsXHJcbiAgICBUSEVBRDogJ3RoZWFkJyxcclxuICAgIFRJVExFOiAndGl0bGUnLFxyXG4gICAgVFI6ICd0cicsXHJcbiAgICBUUkFDSzogJ3RyYWNrJyxcclxuICAgIFRUOiAndHQnLFxyXG5cclxuICAgIFU6ICd1JyxcclxuICAgIFVMOiAndWwnLFxyXG5cclxuICAgIFNWRzogJ3N2ZycsXHJcblxyXG4gICAgVkFSOiAndmFyJyxcclxuXHJcbiAgICBXQlI6ICd3YnInLFxyXG5cclxuICAgIFhNUDogJ3htcCdcclxufTtcclxuXHJcbnZhciBTUEVDSUFMX0VMRU1FTlRTID0gZXhwb3J0cy5TUEVDSUFMX0VMRU1FTlRTID0ge307XHJcblxyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdID0ge307XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5BRERSRVNTXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5BUFBMRVRdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkFSRUFdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkFSVElDTEVdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkFTSURFXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5CQVNFXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5CQVNFRk9OVF0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQkdTT1VORF0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQkxPQ0tRVU9URV0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQk9EWV0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQlJdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkJVVFRPTl0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQ0FQVElPTl0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuQ0VOVEVSXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5DT0xdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkNPTEdST1VQXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5ERF0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuREVUQUlMU10gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRElSXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5ESVZdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkRMXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5EVF0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRU1CRURdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkZJRUxEU0VUXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5GSUdDQVBUSU9OXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5GSUdVUkVdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkZPT1RFUl0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRk9STV0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuRlJBTUVdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkZSQU1FU0VUXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5IMV0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSDJdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkgzXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5INF0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSDVdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkg2XSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5IRUFEXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5IRUFERVJdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkhHUk9VUF0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSFJdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkhUTUxdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLklGUkFNRV0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuSU1HXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5JTlBVVF0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuTEldID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkxJTktdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLkxJU1RJTkddID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk1BSU5dID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk1BUlFVRUVdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk1FTlVdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk1FVEFdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk5BVl0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuTk9FTUJFRF0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuTk9GUkFNRVNdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk5PU0NSSVBUXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5PQkpFQ1RdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLk9MXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5QXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5QQVJBTV0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuUExBSU5URVhUXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5QUkVdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlNDUklQVF0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuU0VDVElPTl0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuU0VMRUNUXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5TT1VSQ0VdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlNUWUxFXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5TVU1NQVJZXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5UQUJMRV0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuVEJPRFldID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlREXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5URU1QTEFURV0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuVEVYVEFSRUFdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlRGT09UXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5USF0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuVEhFQURdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlRJVExFXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5UUl0gPSB0cnVlO1xyXG5TUEVDSUFMX0VMRU1FTlRTW05TLkhUTUxdWyQuVFJBQ0tdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlVMXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuSFRNTF1bJC5XQlJdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5IVE1MXVskLlhNUF0gPSB0cnVlO1xyXG5cclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5NQVRITUxdID0ge307XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuTUFUSE1MXVskLk1JXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuTUFUSE1MXVskLk1PXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuTUFUSE1MXVskLk1OXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuTUFUSE1MXVskLk1TXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuTUFUSE1MXVskLk1URVhUXSA9IHRydWU7XHJcblNQRUNJQUxfRUxFTUVOVFNbTlMuTUFUSE1MXVskLkFOTk9UQVRJT05fWE1MXSA9IHRydWU7XHJcblxyXG5TUEVDSUFMX0VMRU1FTlRTW05TLlNWR10gPSB7fTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5TVkddWyQuVElUTEVdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5TVkddWyQuRk9SRUlHTl9PQkpFQ1RdID0gdHJ1ZTtcclxuU1BFQ0lBTF9FTEVNRU5UU1tOUy5TVkddWyQuREVTQ10gPSB0cnVlO1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgSFRNTCA9IHJlcXVpcmUoJy4uL2NvbW1vbi9odG1sJyk7XHJcblxyXG4vL0FsaWFzZXNcclxudmFyICQgPSBIVE1MLlRBR19OQU1FUyxcclxuICAgIE5TID0gSFRNTC5OQU1FU1BBQ0VTO1xyXG5cclxuLy9FbGVtZW50IHV0aWxzXHJcblxyXG4vL09QVElNSVpBVElPTjogSW50ZWdlciBjb21wYXJpc29ucyBhcmUgbG93LWNvc3QsIHNvIHdlIGNhbiB1c2UgdmVyeSBmYXN0IHRhZyBuYW1lIGxlbmd0aCBmaWx0ZXJzIGhlcmUuXHJcbi8vSXQncyBmYXN0ZXIgdGhhbiB1c2luZyBkaWN0aW9uYXJ5LlxyXG5mdW5jdGlvbiBpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCh0bikge1xyXG4gICAgc3dpdGNoICh0bi5sZW5ndGgpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5QO1xyXG5cclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5SQiB8fCB0biA9PT0gJC5SUCB8fCB0biA9PT0gJC5SVCB8fCB0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCB8fCB0biA9PT0gJC5MSTtcclxuXHJcbiAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuUlRDO1xyXG5cclxuICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5PUFRJT047XHJcblxyXG4gICAgICAgIGNhc2UgODpcclxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLk9QVEdST1VQIHx8IHRuID09PSAkLk1FTlVJVEVNO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNTY29waW5nRWxlbWVudCh0biwgbnMpIHtcclxuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEgpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLkhUTUw7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5NSSB8fCB0biA9PT0gJC5NTyB8fCB0biA9PT0gJC5NTiB8fCB0biA9PT0gJC5NUylcclxuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuTUFUSE1MO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkhUTUwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLkhUTUw7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5ERVNDKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5zID09PSBOUy5TVkc7XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLkhUTUw7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5NVEVYVClcclxuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuTUFUSE1MO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuVElUTEUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLlNWRztcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgIHJldHVybiAodG4gPT09ICQuQVBQTEVUIHx8IHRuID09PSAkLk9CSkVDVCkgJiYgbnMgPT09IE5TLkhUTUw7XHJcblxyXG4gICAgICAgIGNhc2UgNzpcclxuICAgICAgICAgICAgcmV0dXJuICh0biA9PT0gJC5DQVBUSU9OIHx8IHRuID09PSAkLk1BUlFVRUUpICYmIG5zID09PSBOUy5IVE1MO1xyXG5cclxuICAgICAgICBjYXNlIDg6XHJcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5URU1QTEFURSAmJiBucyA9PT0gTlMuSFRNTDtcclxuXHJcbiAgICAgICAgY2FzZSAxMzpcclxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLkZPUkVJR05fT0JKRUNUICYmIG5zID09PSBOUy5TVkc7XHJcblxyXG4gICAgICAgIGNhc2UgMTQ6XHJcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5BTk5PVEFUSU9OX1hNTCAmJiBucyA9PT0gTlMuTUFUSE1MO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuLy9TdGFjayBvZiBvcGVuIGVsZW1lbnRzXHJcbnZhciBPcGVuRWxlbWVudFN0YWNrID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9jdW1lbnQsIHRyZWVBZGFwdGVyKSB7XHJcbiAgICB0aGlzLnN0YWNrVG9wID0gLTE7XHJcbiAgICB0aGlzLml0ZW1zID0gW107XHJcbiAgICB0aGlzLmN1cnJlbnQgPSBkb2N1bWVudDtcclxuICAgIHRoaXMuY3VycmVudFRhZ05hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50VG1wbENvbnRlbnQgPSBudWxsO1xyXG4gICAgdGhpcy50bXBsQ291bnQgPSAwO1xyXG4gICAgdGhpcy50cmVlQWRhcHRlciA9IHRyZWVBZGFwdGVyO1xyXG59O1xyXG5cclxuLy9JbmRleCBvZiBlbGVtZW50XHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLl9pbmRleE9mID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcclxuICAgIHZhciBpZHggPSAtMTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtc1tpXSA9PT0gZWxlbWVudCkge1xyXG4gICAgICAgICAgICBpZHggPSBpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaWR4O1xyXG59O1xyXG5cclxuLy9VcGRhdGUgY3VycmVudCBlbGVtZW50XHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLl9pc0luVGVtcGxhdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VGFnTmFtZSA9PT0gJC5URU1QTEFURSAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpID09PSBOUy5IVE1MO1xyXG59O1xyXG5cclxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuX3VwZGF0ZUN1cnJlbnRFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdGhpcy5jdXJyZW50ID0gdGhpcy5pdGVtc1t0aGlzLnN0YWNrVG9wXTtcclxuICAgIHRoaXMuY3VycmVudFRhZ05hbWUgPSB0aGlzLmN1cnJlbnQgJiYgdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuY3VycmVudCk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50VG1wbENvbnRlbnQgPSB0aGlzLl9pc0luVGVtcGxhdGUoKSA/IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KHRoaXMuY3VycmVudCkgOiBudWxsO1xyXG59O1xyXG5cclxuLy9NdXRhdGlvbnNcclxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICB0aGlzLml0ZW1zWysrdGhpcy5zdGFja1RvcF0gPSBlbGVtZW50O1xyXG4gICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5faXNJblRlbXBsYXRlKCkpXHJcbiAgICAgICAgdGhpcy50bXBsQ291bnQrKztcclxuXHJcbn07XHJcblxyXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLnN0YWNrVG9wLS07XHJcblxyXG4gICAgaWYgKHRoaXMudG1wbENvdW50ID4gMCAmJiB0aGlzLl9pc0luVGVtcGxhdGUoKSlcclxuICAgICAgICB0aGlzLnRtcGxDb3VudC0tO1xyXG5cclxuICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XHJcbn07XHJcblxyXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24gKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQpIHtcclxuICAgIHZhciBpZHggPSB0aGlzLl9pbmRleE9mKG9sZEVsZW1lbnQpO1xyXG5cclxuICAgIHRoaXMuaXRlbXNbaWR4XSA9IG5ld0VsZW1lbnQ7XHJcblxyXG4gICAgaWYgKGlkeCA9PT0gdGhpcy5zdGFja1RvcClcclxuICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xyXG59O1xyXG5cclxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXIgPSBmdW5jdGlvbiAocmVmZXJlbmNlRWxlbWVudCwgbmV3RWxlbWVudCkge1xyXG4gICAgdmFyIGluc2VydGlvbklkeCA9IHRoaXMuX2luZGV4T2YocmVmZXJlbmNlRWxlbWVudCkgKyAxO1xyXG5cclxuICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3RWxlbWVudCk7XHJcblxyXG4gICAgaWYgKGluc2VydGlvbklkeCA9PT0gKyt0aGlzLnN0YWNrVG9wKVxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XHJcbn07XHJcblxyXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5wb3BVbnRpbFRhZ05hbWVQb3BwZWQgPSBmdW5jdGlvbiAodGFnTmFtZSkge1xyXG4gICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPiAtMSkge1xyXG4gICAgICAgIHZhciB0biA9IHRoaXMuY3VycmVudFRhZ05hbWUsXHJcbiAgICAgICAgICAgIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KTtcclxuXHJcbiAgICAgICAgdGhpcy5wb3AoKTtcclxuXHJcbiAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lICYmIG5zID09PSBOUy5IVE1MKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxufTtcclxuXHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLnBvcFVudGlsRWxlbWVudFBvcHBlZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+IC0xKSB7XHJcbiAgICAgICAgdmFyIHBvcHBlZEVsZW1lbnQgPSB0aGlzLmN1cnJlbnQ7XHJcblxyXG4gICAgICAgIHRoaXMucG9wKCk7XHJcblxyXG4gICAgICAgIGlmIChwb3BwZWRFbGVtZW50ID09PSBlbGVtZW50KVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxufTtcclxuXHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLnBvcFVudGlsTnVtYmVyZWRIZWFkZXJQb3BwZWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+IC0xKSB7XHJcbiAgICAgICAgdmFyIHRuID0gdGhpcy5jdXJyZW50VGFnTmFtZSxcclxuICAgICAgICAgICAgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpO1xyXG5cclxuICAgICAgICB0aGlzLnBvcCgpO1xyXG5cclxuICAgICAgICBpZiAodG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDYgJiYgbnMgPT09IE5TLkhUTUwpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG59O1xyXG5cclxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUucG9wVW50aWxUYWJsZUNlbGxQb3BwZWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+IC0xKSB7XHJcbiAgICAgICAgdmFyIHRuID0gdGhpcy5jdXJyZW50VGFnTmFtZSxcclxuICAgICAgICAgICAgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpO1xyXG5cclxuICAgICAgICB0aGlzLnBvcCgpO1xyXG5cclxuICAgICAgICBpZiAodG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEggJiYgbnMgPT09IE5TLkhUTUwpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG59O1xyXG5cclxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUucG9wQWxsVXBUb0h0bWxFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgLy9OT1RFOiBoZXJlIHdlIGFzc3VtZSB0aGF0IHJvb3QgPGh0bWw+IGVsZW1lbnQgaXMgYWx3YXlzIGZpcnN0IGluIHRoZSBvcGVuIGVsZW1lbnQgc3RhY2ssIHNvXHJcbiAgICAvL3dlIHBlcmZvcm0gdGhpcyBmYXN0IHN0YWNrIGNsZWFuIHVwLlxyXG4gICAgdGhpcy5zdGFja1RvcCA9IDA7XHJcbiAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xyXG59O1xyXG5cclxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB3aGlsZSAodGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5UQUJMRSAmJlxyXG4gICAgICAgICAgIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEVNUExBVEUgJiZcclxuICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLkhUTUwgfHxcclxuICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpICE9PSBOUy5IVE1MKVxyXG4gICAgICAgIHRoaXMucG9wKCk7XHJcbn07XHJcblxyXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB3aGlsZSAodGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5UQk9EWSAmJlxyXG4gICAgICAgICAgIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEZPT1QgJiZcclxuICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRIRUFEICYmXHJcbiAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5URU1QTEFURSAmJlxyXG4gICAgICAgICAgIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuSFRNTCB8fFxyXG4gICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCkgIT09IE5TLkhUTUwpXHJcbiAgICAgICAgdGhpcy5wb3AoKTtcclxufTtcclxuXHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgd2hpbGUgKHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVFIgJiZcclxuICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRFTVBMQVRFICYmXHJcbiAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5IVE1MIHx8XHJcbiAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSAhPT0gTlMuSFRNTClcclxuICAgICAgICB0aGlzLnBvcCgpO1xyXG59O1xyXG5cclxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcclxuICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1zW2ldID09PSBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YWNrVG9wLS07XHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbi8vU2VhcmNoXHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLnRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgLy9Qcm9wZXJseSBuZXN0ZWQgPGJvZHk+IGVsZW1lbnQgKHNob3VsZCBiZSBzZWNvbmQgZWxlbWVudCBpbiBzdGFjaykuXHJcbiAgICB2YXIgZWxlbWVudCA9IHRoaXMuaXRlbXNbMV07XHJcblxyXG4gICAgcmV0dXJuIGVsZW1lbnQgJiYgdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpID09PSAkLkJPRFkgPyBlbGVtZW50IDogbnVsbDtcclxufTtcclxuXHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmRleE9mKGVsZW1lbnQpID4gLTE7XHJcbn07XHJcblxyXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5nZXRDb21tb25BbmNlc3RvciA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICB2YXIgZWxlbWVudElkeCA9IHRoaXMuX2luZGV4T2YoZWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIC0tZWxlbWVudElkeCA+PSAwID8gdGhpcy5pdGVtc1tlbGVtZW50SWR4XSA6IG51bGw7XHJcbn07XHJcblxyXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5pc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLmN1cnJlbnRUYWdOYW1lID09PSAkLkhUTUw7XHJcbn07XHJcblxyXG4vL0VsZW1lbnQgaW4gc2NvcGVcclxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuaGFzSW5TY29wZSA9IGZ1bmN0aW9uICh0YWdOYW1lKSB7XHJcbiAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICB2YXIgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSksXHJcbiAgICAgICAgICAgIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XHJcblxyXG4gICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gTlMuSFRNTClcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIGlmIChpc1Njb3BpbmdFbGVtZW50KHRuLCBucykpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmhhc051bWJlcmVkSGVhZGVySW5TY29wZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKSxcclxuICAgICAgICAgICAgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcclxuXHJcbiAgICAgICAgaWYgKCh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INikgJiYgbnMgPT09IE5TLkhUTUwpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICBpZiAoaXNTY29waW5nRWxlbWVudCh0biwgbnMpKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5oYXNJbkxpc3RJdGVtU2NvcGUgPSBmdW5jdGlvbiAodGFnTmFtZSkge1xyXG4gICAgZm9yICh2YXIgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgdmFyIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pLFxyXG4gICAgICAgICAgICBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xyXG5cclxuICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IE5TLkhUTUwpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICBpZiAoKHRuID09PSAkLlVMIHx8IHRuID09PSAkLk9MKSAmJiBucyA9PT0gTlMuSFRNTCB8fCBpc1Njb3BpbmdFbGVtZW50KHRuLCBucykpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmhhc0luQnV0dG9uU2NvcGUgPSBmdW5jdGlvbiAodGFnTmFtZSkge1xyXG4gICAgZm9yICh2YXIgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgdmFyIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pLFxyXG4gICAgICAgICAgICBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xyXG5cclxuICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IE5TLkhUTUwpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodG4gPT09ICQuQlVUVE9OICYmIG5zID09PSBOUy5IVE1MIHx8IGlzU2NvcGluZ0VsZW1lbnQodG4sIG5zKSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG59O1xyXG5cclxuT3BlbkVsZW1lbnRTdGFjay5wcm90b3R5cGUuaGFzSW5UYWJsZVNjb3BlID0gZnVuY3Rpb24gKHRhZ05hbWUpIHtcclxuICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKSxcclxuICAgICAgICAgICAgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcclxuXHJcbiAgICAgICAgaWYgKG5zICE9PSBOUy5IVE1MKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLlRFTVBMQVRFIHx8IHRuID09PSAkLkhUTUwpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmhhc1RhYmxlQm9keUNvbnRleHRJblRhYmxlU2NvcGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICB2YXIgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSksXHJcbiAgICAgICAgICAgIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XHJcblxyXG4gICAgICAgIGlmIChucyAhPT0gTlMuSFRNTClcclxuICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5USEVBRCB8fCB0biA9PT0gJC5URk9PVClcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0biA9PT0gJC5UQUJMRSB8fCB0biA9PT0gJC5IVE1MKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5PcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5oYXNJblNlbGVjdFNjb3BlID0gZnVuY3Rpb24gKHRhZ05hbWUpIHtcclxuICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKSxcclxuICAgICAgICAgICAgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcclxuXHJcbiAgICAgICAgaWYgKG5zICE9PSBOUy5IVE1MKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRuICE9PSAkLk9QVElPTiAmJiB0biAhPT0gJC5PUFRHUk9VUClcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG59O1xyXG5cclxuLy9JbXBsaWVkIGVuZCB0YWdzXHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB3aGlsZSAoaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWQodGhpcy5jdXJyZW50VGFnTmFtZSkpXHJcbiAgICAgICAgdGhpcy5wb3AoKTtcclxufTtcclxuXHJcbk9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uID0gZnVuY3Rpb24gKGV4Y2x1c2lvblRhZ05hbWUpIHtcclxuICAgIHdoaWxlIChpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCh0aGlzLmN1cnJlbnRUYWdOYW1lKSAmJiB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSBleGNsdXNpb25UYWdOYW1lKVxyXG4gICAgICAgIHRoaXMucG9wKCk7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbi8vQ29uc3RcclxudmFyIE5PQUhfQVJLX0NBUEFDSVRZID0gMztcclxuXHJcbi8vTGlzdCBvZiBmb3JtYXR0aW5nIGVsZW1lbnRzXHJcbnZhciBGb3JtYXR0aW5nRWxlbWVudExpc3QgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0cmVlQWRhcHRlcikge1xyXG4gICAgdGhpcy5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5lbnRyaWVzID0gW107XHJcbiAgICB0aGlzLnRyZWVBZGFwdGVyID0gdHJlZUFkYXB0ZXI7XHJcbiAgICB0aGlzLmJvb2ttYXJrID0gbnVsbDtcclxufTtcclxuXHJcbi8vRW50cnkgdHlwZXNcclxuRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSA9ICdNQVJLRVJfRU5UUlknO1xyXG5Gb3JtYXR0aW5nRWxlbWVudExpc3QuRUxFTUVOVF9FTlRSWSA9ICdFTEVNRU5UX0VOVFJZJztcclxuXHJcbi8vTm9haCBBcmsncyBjb25kaXRpb25cclxuLy9PUFRJTUlaQVRJT046IGF0IGZpcnN0IHdlIHRyeSB0byBmaW5kIHBvc3NpYmxlIGNhbmRpZGF0ZXMgZm9yIGV4Y2x1c2lvbiB1c2luZ1xyXG4vL2xpZ2h0d2VpZ2h0IGhldXJpc3RpY3Mgd2l0aG91dCB0aG9yb3VnaCBhdHRyaWJ1dGVzIGNoZWNrLlxyXG5Gb3JtYXR0aW5nRWxlbWVudExpc3QucHJvdG90eXBlLl9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyA9IGZ1bmN0aW9uIChuZXdFbGVtZW50KSB7XHJcbiAgICB2YXIgY2FuZGlkYXRlcyA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLmxlbmd0aCA+PSBOT0FIX0FSS19DQVBBQ0lUWSkge1xyXG4gICAgICAgIHZhciBuZUF0dHJzTGVuZ3RoID0gdGhpcy50cmVlQWRhcHRlci5nZXRBdHRyTGlzdChuZXdFbGVtZW50KS5sZW5ndGgsXHJcbiAgICAgICAgICAgIG5lVGFnTmFtZSA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShuZXdFbGVtZW50KSxcclxuICAgICAgICAgICAgbmVOYW1lc3BhY2VVUkkgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShuZXdFbGVtZW50KTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnRyaWVzW2ldO1xyXG5cclxuICAgICAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5NQVJLRVJfRU5UUlkpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZW50cnkuZWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRBdHRycyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QoZWxlbWVudCksXHJcbiAgICAgICAgICAgICAgICBpc0NhbmRpZGF0ZSA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gbmVUYWdOYW1lICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpID09PSBuZU5hbWVzcGFjZVVSSSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50QXR0cnMubGVuZ3RoID09PSBuZUF0dHJzTGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzQ2FuZGlkYXRlKVxyXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKHtpZHg6IGksIGF0dHJzOiBlbGVtZW50QXR0cnN9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNhbmRpZGF0ZXMubGVuZ3RoIDwgTk9BSF9BUktfQ0FQQUNJVFkgPyBbXSA6IGNhbmRpZGF0ZXM7XHJcbn07XHJcblxyXG5Gb3JtYXR0aW5nRWxlbWVudExpc3QucHJvdG90eXBlLl9lbnN1cmVOb2FoQXJrQ29uZGl0aW9uID0gZnVuY3Rpb24gKG5ld0VsZW1lbnQpIHtcclxuICAgIHZhciBjYW5kaWRhdGVzID0gdGhpcy5fZ2V0Tm9haEFya0NvbmRpdGlvbkNhbmRpZGF0ZXMobmV3RWxlbWVudCksXHJcbiAgICAgICAgY0xlbmd0aCA9IGNhbmRpZGF0ZXMubGVuZ3RoO1xyXG5cclxuICAgIGlmIChjTGVuZ3RoKSB7XHJcbiAgICAgICAgdmFyIG5lQXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5ld0VsZW1lbnQpLFxyXG4gICAgICAgICAgICBuZUF0dHJzTGVuZ3RoID0gbmVBdHRycy5sZW5ndGgsXHJcbiAgICAgICAgICAgIG5lQXR0cnNNYXAgPSB7fTtcclxuXHJcbiAgICAgICAgLy9OT1RFOiBidWlsZCBhdHRycyBtYXAgZm9yIHRoZSBuZXcgZWxlbWVudCBzbyB3ZSBjYW4gcGVyZm9ybSBmYXN0IGxvb2t1cHNcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5lQXR0cnNMZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgbmVBdHRyID0gbmVBdHRyc1tpXTtcclxuXHJcbiAgICAgICAgICAgIG5lQXR0cnNNYXBbbmVBdHRyLm5hbWVdID0gbmVBdHRyLnZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG5lQXR0cnNMZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNMZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNBdHRyID0gY2FuZGlkYXRlc1tqXS5hdHRyc1tpXTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobmVBdHRyc01hcFtjQXR0ci5uYW1lXSAhPT0gY0F0dHIudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBjTGVuZ3RoLS07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXMubGVuZ3RoIDwgTk9BSF9BUktfQ0FQQUNJVFkpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL05PVEU6IHJlbW92ZSBib3R0b21tb3N0IGNhbmRpZGF0ZXMgdW50aWwgTm9haCdzIEFyayBjb25kaXRpb24gd2lsbCBub3QgYmUgbWV0XHJcbiAgICAgICAgZm9yIChpID0gY0xlbmd0aCAtIDE7IGkgPj0gTk9BSF9BUktfQ0FQQUNJVFkgLSAxOyBpLS0pIHtcclxuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZShjYW5kaWRhdGVzW2ldLmlkeCwgMSk7XHJcbiAgICAgICAgICAgIHRoaXMubGVuZ3RoLS07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuLy9NdXRhdGlvbnNcclxuRm9ybWF0dGluZ0VsZW1lbnRMaXN0LnByb3RvdHlwZS5pbnNlcnRNYXJrZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLmVudHJpZXMucHVzaCh7dHlwZTogRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWX0pO1xyXG4gICAgdGhpcy5sZW5ndGgrKztcclxufTtcclxuXHJcbkZvcm1hdHRpbmdFbGVtZW50TGlzdC5wcm90b3R5cGUucHVzaEVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgdG9rZW4pIHtcclxuICAgIHRoaXMuX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24oZWxlbWVudCk7XHJcblxyXG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5FTEVNRU5UX0VOVFJZLFxyXG4gICAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXHJcbiAgICAgICAgdG9rZW46IHRva2VuXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxlbmd0aCsrO1xyXG59O1xyXG5cclxuRm9ybWF0dGluZ0VsZW1lbnRMaXN0LnByb3RvdHlwZS5pbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayA9IGZ1bmN0aW9uIChlbGVtZW50LCB0b2tlbikge1xyXG4gICAgdmFyIGJvb2ttYXJrSWR4ID0gdGhpcy5sZW5ndGggLSAxO1xyXG5cclxuICAgIGZvciAoOyBib29rbWFya0lkeCA+PSAwOyBib29rbWFya0lkeC0tKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW50cmllc1tib29rbWFya0lkeF0gPT09IHRoaXMuYm9va21hcmspXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW50cmllcy5zcGxpY2UoYm9va21hcmtJZHggKyAxLCAwLCB7XHJcbiAgICAgICAgdHlwZTogRm9ybWF0dGluZ0VsZW1lbnRMaXN0LkVMRU1FTlRfRU5UUlksXHJcbiAgICAgICAgZWxlbWVudDogZWxlbWVudCxcclxuICAgICAgICB0b2tlbjogdG9rZW5cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubGVuZ3RoKys7XHJcbn07XHJcblxyXG5Gb3JtYXR0aW5nRWxlbWVudExpc3QucHJvdG90eXBlLnJlbW92ZUVudHJ5ID0gZnVuY3Rpb24gKGVudHJ5KSB7XHJcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIGlmICh0aGlzLmVudHJpZXNbaV0gPT09IGVudHJ5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIHRoaXMubGVuZ3RoLS07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbkZvcm1hdHRpbmdFbGVtZW50TGlzdC5wcm90b3R5cGUuY2xlYXJUb0xhc3RNYXJrZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB3aGlsZSAodGhpcy5sZW5ndGgpIHtcclxuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLmVudHJpZXMucG9wKCk7XHJcblxyXG4gICAgICAgIHRoaXMubGVuZ3RoLS07XHJcblxyXG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSBGb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxufTtcclxuXHJcbi8vU2VhcmNoXHJcbkZvcm1hdHRpbmdFbGVtZW50TGlzdC5wcm90b3R5cGUuZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lID0gZnVuY3Rpb24gKHRhZ05hbWUpIHtcclxuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnRyaWVzW2ldO1xyXG5cclxuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZW50cnkuZWxlbWVudCkgPT09IHRhZ05hbWUpXHJcbiAgICAgICAgICAgIHJldHVybiBlbnRyeTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbkZvcm1hdHRpbmdFbGVtZW50TGlzdC5wcm90b3R5cGUuZ2V0RWxlbWVudEVudHJ5ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcclxuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnRyaWVzW2ldO1xyXG5cclxuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0LkVMRU1FTlRfRU5UUlkgJiYgZW50cnkuZWxlbWVudCA9PT0gZWxlbWVudClcclxuICAgICAgICAgICAgcmV0dXJuIGVudHJ5O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBPcGVuRWxlbWVudFN0YWNrID0gcmVxdWlyZSgnLi4vcGFyc2VyL29wZW5fZWxlbWVudF9zdGFjaycpLFxuICAgIFRva2VuaXplciA9IHJlcXVpcmUoJy4uL3Rva2VuaXplcicpLFxuICAgIEhUTUwgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbCcpO1xuXG5cbi8vQWxpYXNlc1xudmFyICQgPSBIVE1MLlRBR19OQU1FUztcblxuXG5mdW5jdGlvbiBzZXRFbmRMb2NhdGlvbihlbGVtZW50LCBjbG9zaW5nVG9rZW4sIHRyZWVBZGFwdGVyKSB7XG4gICAgdmFyIGxvYyA9IGVsZW1lbnQuX19sb2NhdGlvbjtcblxuICAgIGlmICghbG9jKVxuICAgICAgICByZXR1cm47XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBFbGVtZW50TG9jYXRpb25JbmZvXG4gICAgICogQGV4dGVuZHMgU3RhcnRUYWdMb2NhdGlvbkluZm9cbiAgICAgKlxuICAgICAqIEBwcm9wZXJ0eSB7U3RhcnRUYWdMb2NhdGlvbkluZm99IHN0YXJ0VGFnIC0gRWxlbWVudCdzIHN0YXJ0IHRhZyBsb2NhdGlvbiBpbmZvLlxuICAgICAqIEBwcm9wZXJ0eSB7TG9jYXRpb25JbmZvfSBlbmRUYWcgLSBFbGVtZW50J3MgZW5kIHRhZyBsb2NhdGlvbiBpbmZvLlxuICAgICAqL1xuICAgIGlmICghbG9jLnN0YXJ0VGFnKSB7XG4gICAgICAgIGxvYy5zdGFydFRhZyA9IHtcbiAgICAgICAgICAgIGxpbmU6IGxvYy5saW5lLFxuICAgICAgICAgICAgY29sOiBsb2MuY29sLFxuICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IGxvYy5zdGFydE9mZnNldCxcbiAgICAgICAgICAgIGVuZE9mZnNldDogbG9jLmVuZE9mZnNldFxuICAgICAgICB9O1xuICAgICAgICBpZiAobG9jLmF0dHJzKVxuICAgICAgICAgICAgbG9jLnN0YXJ0VGFnLmF0dHJzID0gbG9jLmF0dHJzO1xuICAgIH1cblxuICAgIGlmIChjbG9zaW5nVG9rZW4ubG9jYXRpb24pIHtcbiAgICAgICAgdmFyIGN0TG9jYXRpb24gPSBjbG9zaW5nVG9rZW4ubG9jYXRpb24sXG4gICAgICAgICAgICB0biA9IHRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCksXG4gICAgICAgIC8vIE5PVEU6IEZvciBjYXNlcyBsaWtlIDxwPiA8cD4gPC9wPiAtIEZpcnN0ICdwJyBjbG9zZXMgd2l0aG91dCBhIGNsb3NpbmcgdGFnIGFuZFxuICAgICAgICAvLyBmb3IgY2FzZXMgbGlrZSA8dGQ+IDxwPiA8L3RkPiAtICdwJyBjbG9zZXMgd2l0aG91dCBhIGNsb3NpbmcgdGFnXG4gICAgICAgICAgICBpc0Nsb3NpbmdFbmRUYWcgPSBjbG9zaW5nVG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVORF9UQUdfVE9LRU4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRuID09PSBjbG9zaW5nVG9rZW4udGFnTmFtZTtcblxuICAgICAgICBpZiAoaXNDbG9zaW5nRW5kVGFnKSB7XG4gICAgICAgICAgICBsb2MuZW5kVGFnID0ge1xuICAgICAgICAgICAgICAgIGxpbmU6IGN0TG9jYXRpb24ubGluZSxcbiAgICAgICAgICAgICAgICBjb2w6IGN0TG9jYXRpb24uY29sLFxuICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0OiBjdExvY2F0aW9uLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgICAgIGVuZE9mZnNldDogY3RMb2NhdGlvbi5lbmRPZmZzZXRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNDbG9zaW5nRW5kVGFnKVxuICAgICAgICAgICAgbG9jLmVuZE9mZnNldCA9IGN0TG9jYXRpb24uZW5kT2Zmc2V0O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb2MuZW5kT2Zmc2V0ID0gY3RMb2NhdGlvbi5zdGFydE9mZnNldDtcbiAgICB9XG59XG5cblxuZXhwb3J0cy5hc3NpZ24gPSBmdW5jdGlvbiAocGFyc2VyKSB7XG4gICAgLy9OT1RFOiBvYnRhaW4gUGFyc2VyIHByb3RvIHRoaXMgd2F5IHRvIGF2b2lkIG1vZHVsZSBjaXJjdWxhciByZWZlcmVuY2VzXG4gICAgdmFyIHBhcnNlclByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBhcnNlciksXG4gICAgICAgIHRyZWVBZGFwdGVyID0gcGFyc2VyLnRyZWVBZGFwdGVyLFxuICAgICAgICBhdHRhY2hhYmxlRWxlbWVudExvY2F0aW9uID0gbnVsbCxcbiAgICAgICAgbGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uID0gbnVsbCxcbiAgICAgICAgY3VycmVudFRva2VuID0gbnVsbDtcblxuXG4gICAgLy9OT1RFOiBwYXRjaCBfYm9vdHN0cmFwIG1ldGhvZFxuICAgIHBhcnNlci5fYm9vdHN0cmFwID0gZnVuY3Rpb24gKGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgcGFyc2VyUHJvdG8uX2Jvb3RzdHJhcC5jYWxsKHRoaXMsIGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQpO1xuXG4gICAgICAgIGF0dGFjaGFibGVFbGVtZW50TG9jYXRpb24gPSBudWxsO1xuICAgICAgICBsYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBudWxsO1xuICAgICAgICBjdXJyZW50VG9rZW4gPSBudWxsO1xuXG4gICAgICAgIC8vT3BlbkVsZW1lbnRTdGFja1xuICAgICAgICBwYXJzZXIub3BlbkVsZW1lbnRzLnBvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldEVuZExvY2F0aW9uKHRoaXMuY3VycmVudCwgY3VycmVudFRva2VuLCB0cmVlQWRhcHRlcik7XG4gICAgICAgICAgICBPcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5wb3AuY2FsbCh0aGlzKTtcbiAgICAgICAgfTtcblxuICAgICAgICBwYXJzZXIub3BlbkVsZW1lbnRzLnBvcEFsbFVwVG9IdG1sRWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YWNrVG9wOyBpID4gMDsgaS0tKVxuICAgICAgICAgICAgICAgIHNldEVuZExvY2F0aW9uKHRoaXMuaXRlbXNbaV0sIGN1cnJlbnRUb2tlbiwgdHJlZUFkYXB0ZXIpO1xuXG4gICAgICAgICAgICBPcGVuRWxlbWVudFN0YWNrLnByb3RvdHlwZS5wb3BBbGxVcFRvSHRtbEVsZW1lbnQuY2FsbCh0aGlzKTtcbiAgICAgICAgfTtcblxuICAgICAgICBwYXJzZXIub3BlbkVsZW1lbnRzLnJlbW92ZSA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICBzZXRFbmRMb2NhdGlvbihlbGVtZW50LCBjdXJyZW50VG9rZW4sIHRyZWVBZGFwdGVyKTtcbiAgICAgICAgICAgIE9wZW5FbGVtZW50U3RhY2sucHJvdG90eXBlLnJlbW92ZS5jYWxsKHRoaXMsIGVsZW1lbnQpO1xuICAgICAgICB9O1xuICAgIH07XG5cblxuICAgIC8vVG9rZW4gcHJvY2Vzc2luZ1xuICAgIHBhcnNlci5fcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCA9IGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICBjdXJyZW50VG9rZW4gPSB0b2tlbjtcbiAgICAgICAgcGFyc2VyUHJvdG8uX3Byb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQuY2FsbCh0aGlzLCB0b2tlbik7XG4gICAgfTtcblxuICAgIHBhcnNlci5fcHJvY2Vzc1Rva2VuID0gZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICBwYXJzZXJQcm90by5fcHJvY2Vzc1Rva2VuLmNhbGwodGhpcywgdG9rZW4pO1xuXG4gICAgICAgIC8vTk9URTogPGJvZHk+IGFuZCA8aHRtbD4gYXJlIG5ldmVyIHBvcHBlZCBmcm9tIHRoZSBzdGFjaywgc28gd2UgbmVlZCB0byB1cGRhdGVkXG4gICAgICAgIC8vdGhlaXIgZW5kIGxvY2F0aW9uIGV4cGxpY2l0bHkuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTiAmJlxuICAgICAgICAgICAgKHRva2VuLnRhZ05hbWUgPT09ICQuSFRNTCB8fFxuICAgICAgICAgICAgIHRva2VuLnRhZ05hbWUgPT09ICQuQk9EWSAmJiB0aGlzLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQk9EWSkpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IHRva2VuLnRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0RW5kTG9jYXRpb24oZWxlbWVudCwgdG9rZW4sIHRyZWVBZGFwdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuXG4gICAgLy9Eb2N0eXBlXG4gICAgcGFyc2VyLl9zZXREb2N1bWVudFR5cGUgPSBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgcGFyc2VyUHJvdG8uX3NldERvY3VtZW50VHlwZS5jYWxsKHRoaXMsIHRva2VuKTtcblxuICAgICAgICB2YXIgZG9jdW1lbnRDaGlsZHJlbiA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2Rlcyh0aGlzLmRvY3VtZW50KSxcbiAgICAgICAgICAgIGNuTGVuZ3RoID0gZG9jdW1lbnRDaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbkxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50Q2hpbGRyZW5baV07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmlzRG9jdW1lbnRUeXBlTm9kZShub2RlKSkge1xuICAgICAgICAgICAgICAgIG5vZGUuX19sb2NhdGlvbiA9IHRva2VuLmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuXG4gICAgLy9FbGVtZW50c1xuICAgIHBhcnNlci5fYXR0YWNoRWxlbWVudFRvVHJlZSA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIC8vTk9URTogX2F0dGFjaEVsZW1lbnRUb1RyZWUgaXMgY2FsbGVkIGZyb20gX2FwcGVuZEVsZW1lbnQsIF9pbnNlcnRFbGVtZW50IGFuZCBfaW5zZXJ0VGVtcGxhdGUgbWV0aG9kcy5cbiAgICAgICAgLy9TbyB3ZSB3aWxsIHVzZSB0b2tlbiBsb2NhdGlvbiBzdG9yZWQgaW4gdGhpcyBtZXRob2RzIGZvciB0aGUgZWxlbWVudC5cbiAgICAgICAgZWxlbWVudC5fX2xvY2F0aW9uID0gYXR0YWNoYWJsZUVsZW1lbnRMb2NhdGlvbiB8fCBudWxsO1xuICAgICAgICBhdHRhY2hhYmxlRWxlbWVudExvY2F0aW9uID0gbnVsbDtcbiAgICAgICAgcGFyc2VyUHJvdG8uX2F0dGFjaEVsZW1lbnRUb1RyZWUuY2FsbCh0aGlzLCBlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgcGFyc2VyLl9hcHBlbmRFbGVtZW50ID0gZnVuY3Rpb24gKHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgYXR0YWNoYWJsZUVsZW1lbnRMb2NhdGlvbiA9IHRva2VuLmxvY2F0aW9uO1xuICAgICAgICBwYXJzZXJQcm90by5fYXBwZW5kRWxlbWVudC5jYWxsKHRoaXMsIHRva2VuLCBuYW1lc3BhY2VVUkkpO1xuICAgIH07XG5cbiAgICBwYXJzZXIuX2luc2VydEVsZW1lbnQgPSBmdW5jdGlvbiAodG9rZW4sIG5hbWVzcGFjZVVSSSkge1xuICAgICAgICBhdHRhY2hhYmxlRWxlbWVudExvY2F0aW9uID0gdG9rZW4ubG9jYXRpb247XG4gICAgICAgIHBhcnNlclByb3RvLl9pbnNlcnRFbGVtZW50LmNhbGwodGhpcywgdG9rZW4sIG5hbWVzcGFjZVVSSSk7XG4gICAgfTtcblxuICAgIHBhcnNlci5faW5zZXJ0VGVtcGxhdGUgPSBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgYXR0YWNoYWJsZUVsZW1lbnRMb2NhdGlvbiA9IHRva2VuLmxvY2F0aW9uO1xuICAgICAgICBwYXJzZXJQcm90by5faW5zZXJ0VGVtcGxhdGUuY2FsbCh0aGlzLCB0b2tlbik7XG5cbiAgICAgICAgdmFyIHRtcGxDb250ZW50ID0gdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQodGhpcy5vcGVuRWxlbWVudHMuY3VycmVudCk7XG5cbiAgICAgICAgdG1wbENvbnRlbnQuX19sb2NhdGlvbiA9IG51bGw7XG4gICAgfTtcblxuICAgIHBhcnNlci5faW5zZXJ0RmFrZVJvb3RFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBwYXJzZXJQcm90by5faW5zZXJ0RmFrZVJvb3RFbGVtZW50LmNhbGwodGhpcyk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQuX19sb2NhdGlvbiA9IG51bGw7XG4gICAgfTtcblxuXG4gICAgLy9Db21tZW50c1xuICAgIHBhcnNlci5fYXBwZW5kQ29tbWVudE5vZGUgPSBmdW5jdGlvbiAodG9rZW4sIHBhcmVudCkge1xuICAgICAgICBwYXJzZXJQcm90by5fYXBwZW5kQ29tbWVudE5vZGUuY2FsbCh0aGlzLCB0b2tlbiwgcGFyZW50KTtcblxuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXMocGFyZW50KSxcbiAgICAgICAgICAgIGNvbW1lbnROb2RlID0gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgY29tbWVudE5vZGUuX19sb2NhdGlvbiA9IHRva2VuLmxvY2F0aW9uO1xuICAgIH07XG5cblxuICAgIC8vVGV4dFxuICAgIHBhcnNlci5fZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvL05PVEU6IHN0b3JlIGxhc3QgZm9zdGVyIHBhcmVudGluZyBsb2NhdGlvbiwgc28gd2Ugd2lsbCBiZSBhYmxlIHRvIGZpbmQgaW5zZXJ0ZWQgdGV4dFxuICAgICAgICAvL2luIGNhc2Ugb2YgZm9zdGVyIHBhcmVudGluZ1xuICAgICAgICBsYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBwYXJzZXJQcm90by5fZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBsYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb247XG4gICAgfTtcblxuICAgIHBhcnNlci5faW5zZXJ0Q2hhcmFjdGVycyA9IGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICBwYXJzZXJQcm90by5faW5zZXJ0Q2hhcmFjdGVycy5jYWxsKHRoaXMsIHRva2VuKTtcblxuICAgICAgICB2YXIgaGFzRm9zdGVyUGFyZW50ID0gdGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKSxcbiAgICAgICAgICAgIHBhcmVudCA9IGhhc0Zvc3RlclBhcmVudCAmJiBsYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24ucGFyZW50IHx8XG4gICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50VG1wbENvbnRlbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQsXG4gICAgICAgICAgICBzaWJsaW5ncyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2RlcyhwYXJlbnQpLFxuICAgICAgICAgICAgdGV4dE5vZGVJZHggPSBoYXNGb3N0ZXJQYXJlbnQgJiYgbGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uLmJlZm9yZUVsZW1lbnQgP1xuICAgICAgICAgICAgc2libGluZ3MuaW5kZXhPZihsYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24uYmVmb3JlRWxlbWVudCkgLSAxIDpcbiAgICAgICAgICAgIHNpYmxpbmdzLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICB0ZXh0Tm9kZSA9IHNpYmxpbmdzW3RleHROb2RlSWR4XTtcblxuICAgICAgICAvL05PVEU6IGlmIHdlIGhhdmUgbG9jYXRpb24gYXNzaWduZWQgYnkgYW5vdGhlciB0b2tlbiwgdGhlbiBqdXN0IHVwZGF0ZSBlbmQgcG9zaXRpb25cbiAgICAgICAgaWYgKHRleHROb2RlLl9fbG9jYXRpb24pXG4gICAgICAgICAgICB0ZXh0Tm9kZS5fX2xvY2F0aW9uLmVuZE9mZnNldCA9IHRva2VuLmxvY2F0aW9uLmVuZE9mZnNldDtcblxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0ZXh0Tm9kZS5fX2xvY2F0aW9uID0gdG9rZW4ubG9jYXRpb247XG4gICAgfTtcbn07XG5cbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbi8qKlxyXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBUcmVlQWRhcHRlclxyXG4gKi9cclxuXHJcbi8vTm9kZSBjb25zdHJ1Y3Rpb25cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgZG9jdW1lbnQgbm9kZS5cclxuICpcclxuICogQGZ1bmN0aW9uIGNyZWF0ZURvY3VtZW50XHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcmV0dXJucyB7QVNUTm9kZTxEb2N1bWVudD59IGRvY3VtZW50XHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMMTl8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLmNyZWF0ZURvY3VtZW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudCcsXHJcbiAgICAgICAgcXVpcmtzTW9kZTogZmFsc2UsXHJcbiAgICAgICAgY2hpbGROb2RlczogW11cclxuICAgIH07XHJcbn07XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIGRvY3VtZW50IGZyYWdtZW50IG5vZGUuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBjcmVhdGVEb2N1bWVudEZyYWdtZW50XHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcmV0dXJucyB7QVNUTm9kZTxEb2N1bWVudEZyYWdtZW50Pn0gZnJhZ21lbnRcclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0wzN3xkZWZhdWx0IGltcGxlbWVudGF0aW9uLn1cclxuICovXHJcbmV4cG9ydHMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnQtZnJhZ21lbnQnLFxyXG4gICAgICAgIHF1aXJrc01vZGU6IGZhbHNlLFxyXG4gICAgICAgIGNoaWxkTm9kZXM6IFtdXHJcbiAgICB9O1xyXG59O1xyXG5cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGFuIGVsZW1lbnQgbm9kZS5cclxuICpcclxuICogQGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRcclxuICogQG1lbWJlcm9mIFRyZWVBZGFwdGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSB0YWdOYW1lIC0gVGFnIG5hbWUgb2YgdGhlIGVsZW1lbnQuXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VVUkkgLSBOYW1lc3BhY2Ugb2YgdGhlIGVsZW1lbnQuXHJcbiAqIEBwYXJhbSB7QXJyYXl9ICBhdHRycyAtIEF0dHJpYnV0ZSBuYW1lLXZhbHVlIHBhaXIgYXJyYXkuXHJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgIEZvcmVpZ24gYXR0cmlidXRlcyBtYXkgY29udGFpbiBgbmFtZXNwYWNlYCBhbmQgYHByZWZpeGAgZmllbGRzIGFzIHdlbGwuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtBU1ROb2RlPEVsZW1lbnQ+fSBlbGVtZW50XHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMNjF8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodGFnTmFtZSwgbmFtZXNwYWNlVVJJLCBhdHRycykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBub2RlTmFtZTogdGFnTmFtZSxcclxuICAgICAgICB0YWdOYW1lOiB0YWdOYW1lLFxyXG4gICAgICAgIGF0dHJzOiBhdHRycyxcclxuICAgICAgICBuYW1lc3BhY2VVUkk6IG5hbWVzcGFjZVVSSSxcclxuICAgICAgICBjaGlsZE5vZGVzOiBbXSxcclxuICAgICAgICBwYXJlbnROb2RlOiBudWxsXHJcbiAgICB9O1xyXG59O1xyXG5cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgY29tbWVudCBub2RlLlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gY3JlYXRlQ29tbWVudE5vZGVcclxuICogQG1lbWJlcm9mIFRyZWVBZGFwdGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBkYXRhIC0gQ29tbWVudCB0ZXh0LlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7QVNUTm9kZTxDb21tZW50Tm9kZT59IGNvbW1lbnRcclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0w4NXxkZWZhdWx0IGltcGxlbWVudGF0aW9uLn1cclxuICovXHJcbmV4cG9ydHMuY3JlYXRlQ29tbWVudE5vZGUgPSBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBub2RlTmFtZTogJyNjb21tZW50JyxcclxuICAgICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICAgIHBhcmVudE5vZGU6IG51bGxcclxuICAgIH07XHJcbn07XHJcblxyXG52YXIgY3JlYXRlVGV4dE5vZGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgbm9kZU5hbWU6ICcjdGV4dCcsXHJcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgIHBhcmVudE5vZGU6IG51bGxcclxuICAgIH07XHJcbn07XHJcblxyXG5cclxuLy9UcmVlIG11dGF0aW9uXHJcbi8qKlxyXG4gKiBBcHBlbmRzIGEgY2hpbGQgbm9kZSB0byB0aGUgZ2l2ZW4gcGFyZW50IG5vZGUuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBhcHBlbmRDaGlsZFxyXG4gKiBAbWVtYmVyb2YgVHJlZUFkYXB0ZXJcclxuICpcclxuICogQHBhcmFtIHtBU1ROb2RlfSBwYXJlbnROb2RlIC0gUGFyZW50IG5vZGUuXHJcbiAqIEBwYXJhbSB7QVNUTm9kZX0gbmV3Tm9kZSAtICBDaGlsZCBub2RlLlxyXG4gKlxyXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2Jsb2IvdHJlZS1hZGFwdGVyLWRvY3MtcmV2L2xpYi90cmVlX2FkYXB0ZXJzL2RlZmF1bHQuanMjTDExNHxkZWZhdWx0IGltcGxlbWVudGF0aW9uLn1cclxuICovXHJcbnZhciBhcHBlbmRDaGlsZCA9IGV4cG9ydHMuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiAocGFyZW50Tm9kZSwgbmV3Tm9kZSkge1xyXG4gICAgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLnB1c2gobmV3Tm9kZSk7XHJcbiAgICBuZXdOb2RlLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEluc2VydHMgYSBjaGlsZCBub2RlIHRvIHRoZSBnaXZlbiBwYXJlbnQgbm9kZSBiZWZvcmUgdGhlIGdpdmVuIHJlZmVyZW5jZSBub2RlLlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gaW5zZXJ0QmVmb3JlXHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcGFyYW0ge0FTVE5vZGV9IHBhcmVudE5vZGUgLSBQYXJlbnQgbm9kZS5cclxuICogQHBhcmFtIHtBU1ROb2RlfSBuZXdOb2RlIC0gIENoaWxkIG5vZGUuXHJcbiAqIEBwYXJhbSB7QVNUTm9kZX0gcmVmZXJlbmNlTm9kZSAtICBSZWZlcmVuY2Ugbm9kZS5cclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0wxMzF8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG52YXIgaW5zZXJ0QmVmb3JlID0gZXhwb3J0cy5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbiAocGFyZW50Tm9kZSwgbmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSkge1xyXG4gICAgdmFyIGluc2VydGlvbklkeCA9IHBhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpO1xyXG5cclxuICAgIHBhcmVudE5vZGUuY2hpbGROb2Rlcy5zcGxpY2UoaW5zZXJ0aW9uSWR4LCAwLCBuZXdOb2RlKTtcclxuICAgIG5ld05vZGUucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XHJcbn07XHJcblxyXG4vKipcclxuICogU2V0cyB0aGUgYDx0ZW1wbGF0ZT5gIGVsZW1lbnQgY29udGVudCBlbGVtZW50LlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gc2V0VGVtcGxhdGVDb250ZW50XHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcGFyYW0ge0FTVE5vZGU8VGVtcGxhdGVFbGVtZW50Pn0gdGVtcGxhdGVFbGVtZW50IC0gYDx0ZW1wbGF0ZT5gIGVsZW1lbnQuXHJcbiAqIEBwYXJhbSB7QVNUTm9kZTxEb2N1bWVudEZyYWdtZW50Pn0gY29udGVudFRlbXBsYXRlIC0gIENvbnRlbnQgZWxlbWVudC5cclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0wxNDl8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLnNldFRlbXBsYXRlQ29udGVudCA9IGZ1bmN0aW9uICh0ZW1wbGF0ZUVsZW1lbnQsIGNvbnRlbnRFbGVtZW50KSB7XHJcbiAgICB0ZW1wbGF0ZUVsZW1lbnQuY29udGVudCA9IGNvbnRlbnRFbGVtZW50O1xyXG59O1xyXG5cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBgPHRlbXBsYXRlPmAgZWxlbWVudCBjb250ZW50IGVsZW1lbnQuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBnZXRUZW1wbGF0ZUNvbnRlbnRcclxuICogQG1lbWJlcm9mIFRyZWVBZGFwdGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7QVNUTm9kZTxUZW1wbGF0ZUVsZW1lbnQ+fSB0ZW1wbGF0ZUVsZW1lbnQgLSBgPHRlbXBsYXRlPmAgZWxlbWVudC5cclxuXHJcbiAqIEByZXR1cm5zIHtBU1ROb2RlPERvY3VtZW50RnJhZ21lbnQ+fVxyXG4gKlxyXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2Jsb2IvdHJlZS1hZGFwdGVyLWRvY3MtcmV2L2xpYi90cmVlX2FkYXB0ZXJzL2RlZmF1bHQuanMjTDE2NnxkZWZhdWx0IGltcGxlbWVudGF0aW9uLn1cclxuICovXHJcbmV4cG9ydHMuZ2V0VGVtcGxhdGVDb250ZW50ID0gZnVuY3Rpb24gKHRlbXBsYXRlRWxlbWVudCkge1xyXG4gICAgcmV0dXJuIHRlbXBsYXRlRWxlbWVudC5jb250ZW50O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFNldHMgdGhlIGRvY3VtZW50IHR5cGUuIElmIHRoZSBgZG9jdW1lbnRgIGFscmVhZHkgY29udGFpbnMgYSBkb2N1bWVudCB0eXBlIG5vZGUsIHRoZSBgbmFtZWAsIGBwdWJsaWNJZGAgYW5kIGBzeXN0ZW1JZGBcclxuICogcHJvcGVydGllcyBvZiB0aGlzIG5vZGUgd2lsbCBiZSB1cGRhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlcy4gT3RoZXJ3aXNlLCBjcmVhdGVzIGEgbmV3IGRvY3VtZW50IHR5cGUgbm9kZVxyXG4gKiB3aXRoIHRoZSBnaXZlbiBwcm9wZXJ0aWVzIGFuZCBpbnNlcnRzIGl0IGludG8gdGhlIGBkb2N1bWVudGAuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBzZXREb2N1bWVudFR5cGVcclxuICogQG1lbWJlcm9mIFRyZWVBZGFwdGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7QVNUTm9kZTxEb2N1bWVudD59IGRvY3VtZW50IC0gRG9jdW1lbnQgbm9kZS5cclxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSAgRG9jdW1lbnQgdHlwZSBuYW1lLlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gcHVibGljSWQgLSBEb2N1bWVudCB0eXBlIHB1YmxpYyBpZGVudGlmaWVyLlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gc3lzdGVtSWQgLSBEb2N1bWVudCB0eXBlIHN5c3RlbSBpZGVudGlmaWVyLlxyXG4gKlxyXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2Jsb2IvdHJlZS1hZGFwdGVyLWRvY3MtcmV2L2xpYi90cmVlX2FkYXB0ZXJzL2RlZmF1bHQuanMjTDE4NXxkZWZhdWx0IGltcGxlbWVudGF0aW9uLn1cclxuICovXHJcbmV4cG9ydHMuc2V0RG9jdW1lbnRUeXBlID0gZnVuY3Rpb24gKGRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcclxuICAgIHZhciBkb2N0eXBlTm9kZSA9IG51bGw7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb2N1bWVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmNoaWxkTm9kZXNbaV0ubm9kZU5hbWUgPT09ICcjZG9jdW1lbnRUeXBlJykge1xyXG4gICAgICAgICAgICBkb2N0eXBlTm9kZSA9IGRvY3VtZW50LmNoaWxkTm9kZXNbaV07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoZG9jdHlwZU5vZGUpIHtcclxuICAgICAgICBkb2N0eXBlTm9kZS5uYW1lID0gbmFtZTtcclxuICAgICAgICBkb2N0eXBlTm9kZS5wdWJsaWNJZCA9IHB1YmxpY0lkO1xyXG4gICAgICAgIGRvY3R5cGVOb2RlLnN5c3RlbUlkID0gc3lzdGVtSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgYXBwZW5kQ2hpbGQoZG9jdW1lbnQsIHtcclxuICAgICAgICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnRUeXBlJyxcclxuICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgcHVibGljSWQ6IHB1YmxpY0lkLFxyXG4gICAgICAgICAgICBzeXN0ZW1JZDogc3lzdGVtSWRcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBTZXRzIHRoZSBkb2N1bWVudCdzIHF1aXJrcyBtb2RlIGZsYWcuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBzZXRRdWlya3NNb2RlXHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcGFyYW0ge0FTVE5vZGU8RG9jdW1lbnQ+fSBkb2N1bWVudCAtIERvY3VtZW50IG5vZGUuXHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMMjIxfGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5zZXRRdWlya3NNb2RlID0gZnVuY3Rpb24gKGRvY3VtZW50KSB7XHJcbiAgICBkb2N1bWVudC5xdWlya3NNb2RlID0gdHJ1ZTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBkb2N1bWVudCdzIHF1aXJrcyBtb2RlIGZsYWcgaXMgc2V0LlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gaXNRdWlya3NNb2RlXHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcGFyYW0ge0FTVE5vZGU8RG9jdW1lbnQ+fSBkb2N1bWVudCAtIERvY3VtZW50IG5vZGUuXHJcblxyXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0wyMzd8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLmlzUXVpcmtzTW9kZSA9IGZ1bmN0aW9uIChkb2N1bWVudCkge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LnF1aXJrc01vZGU7XHJcbn07XHJcblxyXG4vKipcclxuICogUmVtb3ZlcyBhIG5vZGUgZnJvbSBpdHMgcGFyZW50LlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gZGV0YWNoTm9kZVxyXG4gKiBAbWVtYmVyb2YgVHJlZUFkYXB0ZXJcclxuICpcclxuICogQHBhcmFtIHtBU1ROb2RlfSBub2RlIC0gTm9kZS5cclxuXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMMjUxfGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5kZXRhY2hOb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcclxuICAgIGlmIChub2RlLnBhcmVudE5vZGUpIHtcclxuICAgICAgICB2YXIgaWR4ID0gbm9kZS5wYXJlbnROb2RlLmNoaWxkTm9kZXMuaW5kZXhPZihub2RlKTtcclxuXHJcbiAgICAgICAgbm9kZS5wYXJlbnROb2RlLmNoaWxkTm9kZXMuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgICAgbm9kZS5wYXJlbnROb2RlID0gbnVsbDtcclxuICAgIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBJbnNlcnRzIHRleHQgaW50byBhIG5vZGUuIElmIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBub2RlIGlzIGEgdGV4dCBub2RlLCB0aGUgcHJvdmlkZWQgdGV4dCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZVxyXG4gKiB0ZXh0IG5vZGUgY29udGVudC4gT3RoZXJ3aXNlLCBpbnNlcnRzIGEgbmV3IHRleHQgbm9kZSB3aXRoIHRoZSBnaXZlbiB0ZXh0LlxyXG4gKlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gaW5zZXJ0VGV4dFxyXG4gKiBAbWVtYmVyb2YgVHJlZUFkYXB0ZXJcclxuICpcclxuICogQHBhcmFtIHtBU1ROb2RlfSBwYXJlbnROb2RlIC0gTm9kZSB0byBpbnNlcnQgdGV4dCBpbnRvLlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gdGV4dCAtIFRleHQgdG8gaW5zZXJ0LlxyXG5cclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0wyNzN8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLmluc2VydFRleHQgPSBmdW5jdGlvbiAocGFyZW50Tm9kZSwgdGV4dCkge1xyXG4gICAgaWYgKHBhcmVudE5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcclxuICAgICAgICB2YXIgcHJldk5vZGUgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXNbcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCAtIDFdO1xyXG5cclxuICAgICAgICBpZiAocHJldk5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCcpIHtcclxuICAgICAgICAgICAgcHJldk5vZGUudmFsdWUgKz0gdGV4dDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhcHBlbmRDaGlsZChwYXJlbnROb2RlLCBjcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XHJcbn07XHJcblxyXG4vKipcclxuICogSW5zZXJ0cyB0ZXh0IGludG8gYSBzaWJsaW5nIG5vZGUgdGhhdCBnb2VzIGJlZm9yZSB0aGUgcmVmZXJlbmNlIG5vZGUuIElmIHRoaXMgc2libGluZyBub2RlIGlzIHRoZSB0ZXh0IG5vZGUsXHJcbiAqIHRoZSBwcm92aWRlZCB0ZXh0IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHRleHQgbm9kZSBjb250ZW50LiBPdGhlcndpc2UsIGluc2VydHMgYSBuZXcgc2libGluZyB0ZXh0IG5vZGUgd2l0aFxyXG4gKiB0aGUgZ2l2ZW4gdGV4dCBiZWZvcmUgdGhlIHJlZmVyZW5jZSBub2RlLlxyXG4gKlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gaW5zZXJ0VGV4dEJlZm9yZVxyXG4gKiBAbWVtYmVyb2YgVHJlZUFkYXB0ZXJcclxuICpcclxuICogQHBhcmFtIHtBU1ROb2RlfSBwYXJlbnROb2RlIC0gTm9kZSB0byBpbnNlcnQgdGV4dCBpbnRvLlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gdGV4dCAtIFRleHQgdG8gaW5zZXJ0LlxyXG4gKiBAcGFyYW0ge0FTVE5vZGV9IHJlZmVyZW5jZU5vZGUgLSBOb2RlIHRvIGluc2VydCB0ZXh0IGJlZm9yZS5cclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0wzMDF8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLmluc2VydFRleHRCZWZvcmUgPSBmdW5jdGlvbiAocGFyZW50Tm9kZSwgdGV4dCwgcmVmZXJlbmNlTm9kZSkge1xyXG4gICAgdmFyIHByZXZOb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzW3BhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpIC0gMV07XHJcblxyXG4gICAgaWYgKHByZXZOb2RlICYmIHByZXZOb2RlLm5vZGVOYW1lID09PSAnI3RleHQnKVxyXG4gICAgICAgIHByZXZOb2RlLnZhbHVlICs9IHRleHQ7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgaW5zZXJ0QmVmb3JlKHBhcmVudE5vZGUsIGNyZWF0ZVRleHROb2RlKHRleHQpLCByZWZlcmVuY2VOb2RlKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBDb3BpZXMgYXR0cmlidXRlcyB0byB0aGUgZ2l2ZW4gbm9kZS4gT25seSBhdHRyaWJ1dGVzIHRoYXQgYXJlIG5vdCB5ZXQgcHJlc2VudCBpbiB0aGUgbm9kZSBhcmUgY29waWVkLlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gYWRvcHRBdHRyaWJ1dGVzXHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcGFyYW0ge0FTVE5vZGV9IHJlY2lwaWVudE5vZGUgLSBOb2RlIHRvIGNvcHkgYXR0cmlidXRlcyBpbnRvLlxyXG4gKiBAcGFyYW0ge0FycmF5fSBhdHRycyAtIEF0dHJpYnV0ZXMgdG8gY29weS5cclxuXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMMzIxfGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5hZG9wdEF0dHJpYnV0ZXMgPSBmdW5jdGlvbiAocmVjaXBpZW50Tm9kZSwgYXR0cnMpIHtcclxuICAgIHZhciByZWNpcGllbnRBdHRyc01hcCA9IFtdO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVjaXBpZW50Tm9kZS5hdHRycy5sZW5ndGg7IGkrKylcclxuICAgICAgICByZWNpcGllbnRBdHRyc01hcC5wdXNoKHJlY2lwaWVudE5vZGUuYXR0cnNbaV0ubmFtZSk7XHJcblxyXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChyZWNpcGllbnRBdHRyc01hcC5pbmRleE9mKGF0dHJzW2pdLm5hbWUpID09PSAtMSlcclxuICAgICAgICAgICAgcmVjaXBpZW50Tm9kZS5hdHRycy5wdXNoKGF0dHJzW2pdKTtcclxuICAgIH1cclxufTtcclxuXHJcblxyXG4vL1RyZWUgdHJhdmVyc2luZ1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBnaXZlbiBub2RlLlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gZ2V0Rmlyc3RDaGlsZFxyXG4gKiBAbWVtYmVyb2YgVHJlZUFkYXB0ZXJcclxuICpcclxuICogQHBhcmFtIHtBU1ROb2RlfSBub2RlIC0gTm9kZS5cclxuICpcclxuICogQHJldHVybnMge0FTVE5vZGV9IGZpcnN0Q2hpbGRcclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0wzNDh8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLmdldEZpcnN0Q2hpbGQgPSBmdW5jdGlvbiAobm9kZSkge1xyXG4gICAgcmV0dXJuIG5vZGUuY2hpbGROb2Rlc1swXTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBnaXZlbiBub2RlJ3MgY2hpbGRyZW4gaW4gYW4gYXJyYXkuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBnZXRDaGlsZE5vZGVzXHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcGFyYW0ge0FTVE5vZGV9IG5vZGUgLSBOb2RlLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7QXJyYXl9IGNoaWxkcmVuXHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMMzY0fGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5nZXRDaGlsZE5vZGVzID0gZnVuY3Rpb24gKG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLmNoaWxkTm9kZXM7XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgZ2l2ZW4gbm9kZSdzIHBhcmVudC5cclxuICpcclxuICogQGZ1bmN0aW9uIGdldFBhcmVudE5vZGVcclxuICogQG1lbWJlcm9mIFRyZWVBZGFwdGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7QVNUTm9kZX0gbm9kZSAtIE5vZGUuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtBU1ROb2RlfSBwYXJlbnRcclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0wzODB8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLmdldFBhcmVudE5vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xyXG4gICAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBnaXZlbiBub2RlJ3MgYXR0cmlidXRlcyBpbiBhbiBhcnJheSwgaW4gdGhlIGZvcm0gb2YgbmFtZS12YWx1ZSBwYWlycy5cclxuICogRm9yZWlnbiBhdHRyaWJ1dGVzIG1heSBjb250YWluIGBuYW1lc3BhY2VgIGFuZCBgcHJlZml4YCBmaWVsZHMgYXMgd2VsbC5cclxuICpcclxuICogQGZ1bmN0aW9uIGdldEF0dHJMaXN0XHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcGFyYW0ge0FTVE5vZGV9IG5vZGUgLSBOb2RlLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7QXJyYXl9IGF0dHJpYnV0ZXNcclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0wzOTd8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLmdldEF0dHJMaXN0ID0gZnVuY3Rpb24gKG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLmF0dHJzO1xyXG59O1xyXG5cclxuLy9Ob2RlIGRhdGFcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBnaXZlbiBlbGVtZW50J3MgdGFnIG5hbWUuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBnZXRUYWdOYW1lXHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcGFyYW0ge0FTVE5vZGU8RWxlbWVudD59IGVsZW1lbnQgLSBFbGVtZW50LlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0YWdOYW1lXHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMNDE1fGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5nZXRUYWdOYW1lID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcclxuICAgIHJldHVybiBlbGVtZW50LnRhZ05hbWU7XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgZ2l2ZW4gZWxlbWVudCdzIG5hbWVzcGFjZS5cclxuICpcclxuICogQGZ1bmN0aW9uIGdldE5hbWVzcGFjZVVSSVxyXG4gKiBAbWVtYmVyb2YgVHJlZUFkYXB0ZXJcclxuICpcclxuICogQHBhcmFtIHtBU1ROb2RlPEVsZW1lbnQ+fSBlbGVtZW50IC0gRWxlbWVudC5cclxuICpcclxuICogQHJldHVybnMge1N0cmluZ30gbmFtZXNwYWNlVVJJXHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMNDMxfGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5nZXROYW1lc3BhY2VVUkkgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQubmFtZXNwYWNlVVJJO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGdpdmVuIHRleHQgbm9kZSdzIGNvbnRlbnQuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBnZXRUZXh0Tm9kZUNvbnRlbnRcclxuICogQG1lbWJlcm9mIFRyZWVBZGFwdGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7QVNUTm9kZTxUZXh0Pn0gdGV4dE5vZGUgLSBUZXh0IG5vZGUuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRleHRcclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0w0NDd8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLmdldFRleHROb2RlQ29udGVudCA9IGZ1bmN0aW9uICh0ZXh0Tm9kZSkge1xyXG4gICAgcmV0dXJuIHRleHROb2RlLnZhbHVlO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGdpdmVuIGNvbW1lbnQgbm9kZSdzIGNvbnRlbnQuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBnZXRDb21tZW50Tm9kZUNvbnRlbnRcclxuICogQG1lbWJlcm9mIFRyZWVBZGFwdGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7QVNUTm9kZTxDb21tZW50Pn0gY29tbWVudE5vZGUgLSBDb21tZW50IG5vZGUuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9IGNvbW1lbnRUZXh0XHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMNDYzfGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5nZXRDb21tZW50Tm9kZUNvbnRlbnQgPSBmdW5jdGlvbiAoY29tbWVudE5vZGUpIHtcclxuICAgIHJldHVybiBjb21tZW50Tm9kZS5kYXRhO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGdpdmVuIGRvY3VtZW50IHR5cGUgbm9kZSdzIG5hbWUuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBnZXREb2N1bWVudFR5cGVOb2RlTmFtZVxyXG4gKiBAbWVtYmVyb2YgVHJlZUFkYXB0ZXJcclxuICpcclxuICogQHBhcmFtIHtBU1ROb2RlPERvY3VtZW50VHlwZT59IGRvY3R5cGVOb2RlIC0gRG9jdW1lbnQgdHlwZSBub2RlLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBuYW1lXHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMNDc5fGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5nZXREb2N1bWVudFR5cGVOb2RlTmFtZSA9IGZ1bmN0aW9uIChkb2N0eXBlTm9kZSkge1xyXG4gICAgcmV0dXJuIGRvY3R5cGVOb2RlLm5hbWU7XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgZ2l2ZW4gZG9jdW1lbnQgdHlwZSBub2RlJ3MgcHVibGljIGlkZW50aWZpZXIuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBnZXREb2N1bWVudFR5cGVOb2RlUHVibGljSWRcclxuICogQG1lbWJlcm9mIFRyZWVBZGFwdGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7QVNUTm9kZTxEb2N1bWVudFR5cGU+fSBkb2N0eXBlTm9kZSAtIERvY3VtZW50IHR5cGUgbm9kZS5cclxuICpcclxuICogQHJldHVybnMge1N0cmluZ30gcHVibGljSWRcclxuICpcclxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iL3RyZWUtYWRhcHRlci1kb2NzLXJldi9saWIvdHJlZV9hZGFwdGVycy9kZWZhdWx0LmpzI0w0OTV8ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi59XHJcbiAqL1xyXG5leHBvcnRzLmdldERvY3VtZW50VHlwZU5vZGVQdWJsaWNJZCA9IGZ1bmN0aW9uIChkb2N0eXBlTm9kZSkge1xyXG4gICAgcmV0dXJuIGRvY3R5cGVOb2RlLnB1YmxpY0lkO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGdpdmVuIGRvY3VtZW50IHR5cGUgbm9kZSdzIHN5c3RlbSBpZGVudGlmaWVyLlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gZ2V0RG9jdW1lbnRUeXBlTm9kZVN5c3RlbUlkXHJcbiAqIEBtZW1iZXJvZiBUcmVlQWRhcHRlclxyXG4gKlxyXG4gKiBAcGFyYW0ge0FTVE5vZGU8RG9jdW1lbnRUeXBlPn0gZG9jdHlwZU5vZGUgLSBEb2N1bWVudCB0eXBlIG5vZGUuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHN5c3RlbUlkXHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMNTExfGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5nZXREb2N1bWVudFR5cGVOb2RlU3lzdGVtSWQgPSBmdW5jdGlvbiAoZG9jdHlwZU5vZGUpIHtcclxuICAgIHJldHVybiBkb2N0eXBlTm9kZS5zeXN0ZW1JZDtcclxufTtcclxuXHJcbi8vTm9kZSB0eXBlc1xyXG4vKipcclxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gbm9kZSBpcyBhIHRleHQgbm9kZS5cclxuICpcclxuICogQGZ1bmN0aW9uIGlzVGV4dE5vZGVcclxuICogQG1lbWJlcm9mIFRyZWVBZGFwdGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7QVNUTm9kZX0gbm9kZSAtIE5vZGUuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtCb29sZWFufVxyXG4gKlxyXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2Jsb2IvdHJlZS1hZGFwdGVyLWRvY3MtcmV2L2xpYi90cmVlX2FkYXB0ZXJzL2RlZmF1bHQuanMjTDUyNnxkZWZhdWx0IGltcGxlbWVudGF0aW9uLn1cclxuICovXHJcbmV4cG9ydHMuaXNUZXh0Tm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XHJcbiAgICByZXR1cm4gbm9kZS5ub2RlTmFtZSA9PT0gJyN0ZXh0JztcclxufTtcclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBub2RlIGlzIGEgY29tbWVudCBub2RlLlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gaXNDb21tZW50Tm9kZVxyXG4gKiBAbWVtYmVyb2YgVHJlZUFkYXB0ZXJcclxuICpcclxuICogQHBhcmFtIHtBU1ROb2RlfSBub2RlIC0gTm9kZS5cclxuICpcclxuICogQHJldHVybnMge0Jvb2xlYW59XHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMNTQ0fGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5pc0NvbW1lbnROb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI2NvbW1lbnQnO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIG5vZGUgaXMgYSBkb2N1bWVudCB0eXBlIG5vZGUuXHJcbiAqXHJcbiAqIEBmdW5jdGlvbiBpc0RvY3VtZW50VHlwZU5vZGVcclxuICogQG1lbWJlcm9mIFRyZWVBZGFwdGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7QVNUTm9kZX0gbm9kZSAtIE5vZGUuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtCb29sZWFufVxyXG4gKlxyXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2Jsb2IvdHJlZS1hZGFwdGVyLWRvY3MtcmV2L2xpYi90cmVlX2FkYXB0ZXJzL2RlZmF1bHQuanMjTDU2MHxkZWZhdWx0IGltcGxlbWVudGF0aW9uLn1cclxuICovXHJcbmV4cG9ydHMuaXNEb2N1bWVudFR5cGVOb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI2RvY3VtZW50VHlwZSc7XHJcbn07XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gbm9kZSBpcyBhbiBlbGVtZW50LlxyXG4gKlxyXG4gKiBAZnVuY3Rpb24gaXNFbGVtZW50Tm9kZVxyXG4gKiBAbWVtYmVyb2YgVHJlZUFkYXB0ZXJcclxuICpcclxuICogQHBhcmFtIHtBU1ROb2RlfSBub2RlIC0gTm9kZS5cclxuICpcclxuICogQHJldHVybnMge0Jvb2xlYW59XHJcbiAqXHJcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi90cmVlLWFkYXB0ZXItZG9jcy1yZXYvbGliL3RyZWVfYWRhcHRlcnMvZGVmYXVsdC5qcyNMNTc2fGRlZmF1bHQgaW1wbGVtZW50YXRpb24ufVxyXG4gKi9cclxuZXhwb3J0cy5pc0VsZW1lbnROb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcclxuICAgIHJldHVybiAhIW5vZGUudGFnTmFtZTtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxuLy9Db25zdFxyXG52YXIgVkFMSURfRE9DVFlQRV9OQU1FID0gJ2h0bWwnLFxyXG4gICAgUVVJUktTX01PREVfU1lTVEVNX0lEID0gJ2h0dHA6Ly93d3cuaWJtLmNvbS9kYXRhL2R0ZC92MTEvaWJteGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnLFxyXG4gICAgUVVJUktTX01PREVfUFVCTElDX0lEX1BSRUZJWEVTID0gW1xyXG4gICAgICAgICcrLy9zaWxtYXJpbC8vZHRkIGh0bWwgcHJvIHYwcjExIDE5OTcwMTAxLy9lbicsXHJcbiAgICAgICAgJy0vL2FkdmFzb2Z0IGx0ZC8vZHRkIGh0bWwgMy4wIGFzd2VkaXQgKyBleHRlbnNpb25zLy9lbicsXHJcbiAgICAgICAgJy0vL2FzLy9kdGQgaHRtbCAzLjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvL2VuJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDEvL2VuJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDIvL2VuJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdCBsZXZlbCAxLy9lbicsXHJcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QgbGV2ZWwgMi8vZW4nLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0Ly9lbicsXHJcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMC8vZW4nLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjFlLy9lbicsXHJcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIDMuMC8vZW4nLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjAvL2VuLy8nLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjIgZmluYWwvL2VuJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4yLy9lbicsXHJcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIDMvL2VuJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMC8vZW4nLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAwLy9lbi8vMi4wJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMS8vZW4nLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAxLy9lbi8vMi4wJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMi8vZW4nLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAyLy9lbi8vMi4wJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMy8vZW4nLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAzLy9lbi8vMy4wJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDAvL2VuJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDAvL2VuLy8yLjAnLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMS8vZW4nLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMS8vZW4vLzIuMCcsXHJcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAyLy9lbicsXHJcbiAgICAgICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAyLy9lbi8vMi4wJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDMvL2VuJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDMvL2VuLy8zLjAnLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QvL2VuJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0Ly9lbi8vMi4wJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0Ly9lbi8vMy4wJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwvL2VuJyxcclxuICAgICAgICAnLS8vaWV0Zi8vZHRkIGh0bWwvL2VuLy8yLjAnLFxyXG4gICAgICAgICctLy9pZXRmLy9kdGQgaHRtbC8vZW4vLzMuMCcsXHJcbiAgICAgICAgJy0vL21ldHJpdXMvL2R0ZCBtZXRyaXVzIHByZXNlbnRhdGlvbmFsLy9lbicsXHJcbiAgICAgICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCBodG1sIHN0cmljdC8vZW4nLFxyXG4gICAgICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgaHRtbC8vZW4nLFxyXG4gICAgICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgdGFibGVzLy9lbicsXHJcbiAgICAgICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCBodG1sIHN0cmljdC8vZW4nLFxyXG4gICAgICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgaHRtbC8vZW4nLFxyXG4gICAgICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgdGFibGVzLy9lbicsXHJcbiAgICAgICAgJy0vL25ldHNjYXBlIGNvbW0uIGNvcnAuLy9kdGQgaHRtbC8vZW4nLFxyXG4gICAgICAgICctLy9uZXRzY2FwZSBjb21tLiBjb3JwLi8vZHRkIHN0cmljdCBodG1sLy9lbicsXHJcbiAgICAgICAgJy0vL29cXCdyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIDIuMC8vZW4nLFxyXG4gICAgICAgICctLy9vXFwncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCBleHRlbmRlZCAxLjAvL2VuJyxcclxuICAgICAgICAnLS8vc3B5Z2xhc3MvL2R0ZCBodG1sIDIuMCBleHRlbmRlZC8vZW4nLFxyXG4gICAgICAgICctLy9zcS8vZHRkIGh0bWwgMi4wIGhvdG1ldGFsICsgZXh0ZW5zaW9ucy8vZW4nLFxyXG4gICAgICAgICctLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90amF2YSBodG1sLy9lbicsXHJcbiAgICAgICAgJy0vL3N1biBtaWNyb3N5c3RlbXMgY29ycC4vL2R0ZCBob3RqYXZhIHN0cmljdCBodG1sLy9lbicsXHJcbiAgICAgICAgJy0vL3czYy8vZHRkIGh0bWwgMyAxOTk1LTAzLTI0Ly9lbicsXHJcbiAgICAgICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yIGRyYWZ0Ly9lbicsXHJcbiAgICAgICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yIGZpbmFsLy9lbicsXHJcbiAgICAgICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yLy9lbicsXHJcbiAgICAgICAgJy0vL3czYy8vZHRkIGh0bWwgMy4ycyBkcmFmdC8vZW4nLFxyXG4gICAgICAgICctLy93M2MvL2R0ZCBodG1sIDQuMCBmcmFtZXNldC8vZW4nLFxyXG4gICAgICAgICctLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuJyxcclxuICAgICAgICAnLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50YWwgMTk5NjA3MTIvL2VuJyxcclxuICAgICAgICAnLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50YWwgOTcwNDIxLy9lbicsXHJcbiAgICAgICAgJy0vL3czYy8vZHRkIHczIGh0bWwvL2VuJyxcclxuICAgICAgICAnLS8vdzNvLy9kdGQgdzMgaHRtbCAzLjAvL2VuJyxcclxuICAgICAgICAnLS8vdzNvLy9kdGQgdzMgaHRtbCAzLjAvL2VuLy8nLFxyXG4gICAgICAgICctLy93ZWJ0ZWNocy8vZHRkIG1vemlsbGEgaHRtbCAyLjAvL2VuJyxcclxuICAgICAgICAnLS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwvL2VuJ1xyXG4gICAgXSxcclxuICAgIFFVSVJLU19NT0RFX05PX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBbXHJcbiAgICAgICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSBmcmFtZXNldC8vJyxcclxuICAgICAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIHRyYW5zaXRpb25hbC8vJ1xyXG4gICAgXSxcclxuICAgIFFVSVJLU19NT0RFX1BVQkxJQ19JRFMgPSBbXHJcbiAgICAgICAgJy0vL3czby8vZHRkIHczIGh0bWwgc3RyaWN0IDMuMC8vZW4vLycsXHJcbiAgICAgICAgJy0vdzNjL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvZW4nLFxyXG4gICAgICAgICdodG1sJ1xyXG4gICAgXTtcclxuXHJcblxyXG4vL1V0aWxzXHJcbmZ1bmN0aW9uIGVucXVvdGVEb2N0eXBlSWQoaWQpIHtcclxuICAgIHZhciBxdW90ZSA9IGlkLmluZGV4T2YoJ1wiJykgIT09IC0xID8gJ1xcJycgOiAnXCInO1xyXG5cclxuICAgIHJldHVybiBxdW90ZSArIGlkICsgcXVvdGU7XHJcbn1cclxuXHJcblxyXG4vL0FQSVxyXG5leHBvcnRzLmlzUXVpcmtzID0gZnVuY3Rpb24gKG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCkge1xyXG4gICAgaWYgKG5hbWUgIT09IFZBTElEX0RPQ1RZUEVfTkFNRSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICBpZiAoc3lzdGVtSWQgJiYgc3lzdGVtSWQudG9Mb3dlckNhc2UoKSA9PT0gUVVJUktTX01PREVfU1lTVEVNX0lEKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGlmIChwdWJsaWNJZCAhPT0gbnVsbCkge1xyXG4gICAgICAgIHB1YmxpY0lkID0gcHVibGljSWQudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgaWYgKFFVSVJLU19NT0RFX1BVQkxJQ19JRFMuaW5kZXhPZihwdWJsaWNJZCkgPiAtMSlcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIHZhciBwcmVmaXhlcyA9IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUztcclxuXHJcbiAgICAgICAgaWYgKHN5c3RlbUlkID09PSBudWxsKVxyXG4gICAgICAgICAgICBwcmVmaXhlcyA9IHByZWZpeGVzLmNvbmNhdChRVUlSS1NfTU9ERV9OT19TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTKTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAocHVibGljSWQuaW5kZXhPZihwcmVmaXhlc1tpXSkgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuZXhwb3J0cy5zZXJpYWxpemVDb250ZW50ID0gZnVuY3Rpb24gKG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCkge1xyXG4gICAgdmFyIHN0ciA9ICchRE9DVFlQRSAnO1xyXG5cclxuICAgIGlmIChuYW1lKVxyXG4gICAgICAgIHN0ciArPSBuYW1lO1xyXG5cclxuICAgIGlmIChwdWJsaWNJZCAhPT0gbnVsbClcclxuICAgICAgICBzdHIgKz0gJyBQVUJMSUMgJyArIGVucXVvdGVEb2N0eXBlSWQocHVibGljSWQpO1xyXG5cclxuICAgIGVsc2UgaWYgKHN5c3RlbUlkICE9PSBudWxsKVxyXG4gICAgICAgIHN0ciArPSAnIFNZU1RFTSc7XHJcblxyXG4gICAgaWYgKHN5c3RlbUlkICE9PSBudWxsKVxyXG4gICAgICAgIHN0ciArPSAnICcgKyBlbnF1b3RlRG9jdHlwZUlkKHN5c3RlbUlkKTtcclxuXHJcbiAgICByZXR1cm4gc3RyO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUb2tlbml6ZXIgPSByZXF1aXJlKCcuLi90b2tlbml6ZXInKSxcbiAgICBIVE1MID0gcmVxdWlyZSgnLi9odG1sJyk7XG5cbi8vQWxpYXNlc1xudmFyICQgPSBIVE1MLlRBR19OQU1FUyxcbiAgICBOUyA9IEhUTUwuTkFNRVNQQUNFUyxcbiAgICBBVFRSUyA9IEhUTUwuQVRUUlM7XG5cblxuLy9NSU1FIHR5cGVzXG52YXIgTUlNRV9UWVBFUyA9IHtcbiAgICBURVhUX0hUTUw6ICd0ZXh0L2h0bWwnLFxuICAgIEFQUExJQ0FUSU9OX1hNTDogJ2FwcGxpY2F0aW9uL3hodG1sK3htbCdcbn07XG5cbi8vQXR0cmlidXRlc1xudmFyIERFRklOSVRJT05fVVJMX0FUVFIgPSAnZGVmaW5pdGlvbnVybCcsXG4gICAgQURKVVNURURfREVGSU5JVElPTl9VUkxfQVRUUiA9ICdkZWZpbml0aW9uVVJMJyxcbiAgICBTVkdfQVRUUlNfQURKVVNUTUVOVF9NQVAgPSB7XG4gICAgICAgICdhdHRyaWJ1dGVuYW1lJzogJ2F0dHJpYnV0ZU5hbWUnLFxuICAgICAgICAnYXR0cmlidXRldHlwZSc6ICdhdHRyaWJ1dGVUeXBlJyxcbiAgICAgICAgJ2Jhc2VmcmVxdWVuY3knOiAnYmFzZUZyZXF1ZW5jeScsXG4gICAgICAgICdiYXNlcHJvZmlsZSc6ICdiYXNlUHJvZmlsZScsXG4gICAgICAgICdjYWxjbW9kZSc6ICdjYWxjTW9kZScsXG4gICAgICAgICdjbGlwcGF0aHVuaXRzJzogJ2NsaXBQYXRoVW5pdHMnLFxuICAgICAgICAnZGlmZnVzZWNvbnN0YW50JzogJ2RpZmZ1c2VDb25zdGFudCcsXG4gICAgICAgICdlZGdlbW9kZSc6ICdlZGdlTW9kZScsXG4gICAgICAgICdmaWx0ZXJ1bml0cyc6ICdmaWx0ZXJVbml0cycsXG4gICAgICAgICdnbHlwaHJlZic6ICdnbHlwaFJlZicsXG4gICAgICAgICdncmFkaWVudHRyYW5zZm9ybSc6ICdncmFkaWVudFRyYW5zZm9ybScsXG4gICAgICAgICdncmFkaWVudHVuaXRzJzogJ2dyYWRpZW50VW5pdHMnLFxuICAgICAgICAna2VybmVsbWF0cml4JzogJ2tlcm5lbE1hdHJpeCcsXG4gICAgICAgICdrZXJuZWx1bml0bGVuZ3RoJzogJ2tlcm5lbFVuaXRMZW5ndGgnLFxuICAgICAgICAna2V5cG9pbnRzJzogJ2tleVBvaW50cycsXG4gICAgICAgICdrZXlzcGxpbmVzJzogJ2tleVNwbGluZXMnLFxuICAgICAgICAna2V5dGltZXMnOiAna2V5VGltZXMnLFxuICAgICAgICAnbGVuZ3RoYWRqdXN0JzogJ2xlbmd0aEFkanVzdCcsXG4gICAgICAgICdsaW1pdGluZ2NvbmVhbmdsZSc6ICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gICAgICAgICdtYXJrZXJoZWlnaHQnOiAnbWFya2VySGVpZ2h0JyxcbiAgICAgICAgJ21hcmtlcnVuaXRzJzogJ21hcmtlclVuaXRzJyxcbiAgICAgICAgJ21hcmtlcndpZHRoJzogJ21hcmtlcldpZHRoJyxcbiAgICAgICAgJ21hc2tjb250ZW50dW5pdHMnOiAnbWFza0NvbnRlbnRVbml0cycsXG4gICAgICAgICdtYXNrdW5pdHMnOiAnbWFza1VuaXRzJyxcbiAgICAgICAgJ251bW9jdGF2ZXMnOiAnbnVtT2N0YXZlcycsXG4gICAgICAgICdwYXRobGVuZ3RoJzogJ3BhdGhMZW5ndGgnLFxuICAgICAgICAncGF0dGVybmNvbnRlbnR1bml0cyc6ICdwYXR0ZXJuQ29udGVudFVuaXRzJyxcbiAgICAgICAgJ3BhdHRlcm50cmFuc2Zvcm0nOiAncGF0dGVyblRyYW5zZm9ybScsXG4gICAgICAgICdwYXR0ZXJudW5pdHMnOiAncGF0dGVyblVuaXRzJyxcbiAgICAgICAgJ3BvaW50c2F0eCc6ICdwb2ludHNBdFgnLFxuICAgICAgICAncG9pbnRzYXR5JzogJ3BvaW50c0F0WScsXG4gICAgICAgICdwb2ludHNhdHonOiAncG9pbnRzQXRaJyxcbiAgICAgICAgJ3ByZXNlcnZlYWxwaGEnOiAncHJlc2VydmVBbHBoYScsXG4gICAgICAgICdwcmVzZXJ2ZWFzcGVjdHJhdGlvJzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLFxuICAgICAgICAncHJpbWl0aXZldW5pdHMnOiAncHJpbWl0aXZlVW5pdHMnLFxuICAgICAgICAncmVmeCc6ICdyZWZYJyxcbiAgICAgICAgJ3JlZnknOiAncmVmWScsXG4gICAgICAgICdyZXBlYXRjb3VudCc6ICdyZXBlYXRDb3VudCcsXG4gICAgICAgICdyZXBlYXRkdXInOiAncmVwZWF0RHVyJyxcbiAgICAgICAgJ3JlcXVpcmVkZXh0ZW5zaW9ucyc6ICdyZXF1aXJlZEV4dGVuc2lvbnMnLFxuICAgICAgICAncmVxdWlyZWRmZWF0dXJlcyc6ICdyZXF1aXJlZEZlYXR1cmVzJyxcbiAgICAgICAgJ3NwZWN1bGFyY29uc3RhbnQnOiAnc3BlY3VsYXJDb25zdGFudCcsXG4gICAgICAgICdzcGVjdWxhcmV4cG9uZW50JzogJ3NwZWN1bGFyRXhwb25lbnQnLFxuICAgICAgICAnc3ByZWFkbWV0aG9kJzogJ3NwcmVhZE1ldGhvZCcsXG4gICAgICAgICdzdGFydG9mZnNldCc6ICdzdGFydE9mZnNldCcsXG4gICAgICAgICdzdGRkZXZpYXRpb24nOiAnc3RkRGV2aWF0aW9uJyxcbiAgICAgICAgJ3N0aXRjaHRpbGVzJzogJ3N0aXRjaFRpbGVzJyxcbiAgICAgICAgJ3N1cmZhY2VzY2FsZSc6ICdzdXJmYWNlU2NhbGUnLFxuICAgICAgICAnc3lzdGVtbGFuZ3VhZ2UnOiAnc3lzdGVtTGFuZ3VhZ2UnLFxuICAgICAgICAndGFibGV2YWx1ZXMnOiAndGFibGVWYWx1ZXMnLFxuICAgICAgICAndGFyZ2V0eCc6ICd0YXJnZXRYJyxcbiAgICAgICAgJ3RhcmdldHknOiAndGFyZ2V0WScsXG4gICAgICAgICd0ZXh0bGVuZ3RoJzogJ3RleHRMZW5ndGgnLFxuICAgICAgICAndmlld2JveCc6ICd2aWV3Qm94JyxcbiAgICAgICAgJ3ZpZXd0YXJnZXQnOiAndmlld1RhcmdldCcsXG4gICAgICAgICd4Y2hhbm5lbHNlbGVjdG9yJzogJ3hDaGFubmVsU2VsZWN0b3InLFxuICAgICAgICAneWNoYW5uZWxzZWxlY3Rvcic6ICd5Q2hhbm5lbFNlbGVjdG9yJyxcbiAgICAgICAgJ3pvb21hbmRwYW4nOiAnem9vbUFuZFBhbidcbiAgICB9LFxuICAgIFhNTF9BVFRSU19BREpVU1RNRU5UX01BUCA9IHtcbiAgICAgICAgJ3hsaW5rOmFjdHVhdGUnOiB7cHJlZml4OiAneGxpbmsnLCBuYW1lOiAnYWN0dWF0ZScsIG5hbWVzcGFjZTogTlMuWExJTkt9LFxuICAgICAgICAneGxpbms6YXJjcm9sZSc6IHtwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdhcmNyb2xlJywgbmFtZXNwYWNlOiBOUy5YTElOS30sXG4gICAgICAgICd4bGluazpocmVmJzoge3ByZWZpeDogJ3hsaW5rJywgbmFtZTogJ2hyZWYnLCBuYW1lc3BhY2U6IE5TLlhMSU5LfSxcbiAgICAgICAgJ3hsaW5rOnJvbGUnOiB7cHJlZml4OiAneGxpbmsnLCBuYW1lOiAncm9sZScsIG5hbWVzcGFjZTogTlMuWExJTkt9LFxuICAgICAgICAneGxpbms6c2hvdyc6IHtwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdzaG93JywgbmFtZXNwYWNlOiBOUy5YTElOS30sXG4gICAgICAgICd4bGluazp0aXRsZSc6IHtwcmVmaXg6ICd4bGluaycsIG5hbWU6ICd0aXRsZScsIG5hbWVzcGFjZTogTlMuWExJTkt9LFxuICAgICAgICAneGxpbms6dHlwZSc6IHtwcmVmaXg6ICd4bGluaycsIG5hbWU6ICd0eXBlJywgbmFtZXNwYWNlOiBOUy5YTElOS30sXG4gICAgICAgICd4bWw6YmFzZSc6IHtwcmVmaXg6ICd4bWwnLCBuYW1lOiAnYmFzZScsIG5hbWVzcGFjZTogTlMuWE1MfSxcbiAgICAgICAgJ3htbDpsYW5nJzoge3ByZWZpeDogJ3htbCcsIG5hbWU6ICdsYW5nJywgbmFtZXNwYWNlOiBOUy5YTUx9LFxuICAgICAgICAneG1sOnNwYWNlJzoge3ByZWZpeDogJ3htbCcsIG5hbWU6ICdzcGFjZScsIG5hbWVzcGFjZTogTlMuWE1MfSxcbiAgICAgICAgJ3htbG5zJzoge3ByZWZpeDogJycsIG5hbWU6ICd4bWxucycsIG5hbWVzcGFjZTogTlMuWE1MTlN9LFxuICAgICAgICAneG1sbnM6eGxpbmsnOiB7cHJlZml4OiAneG1sbnMnLCBuYW1lOiAneGxpbmsnLCBuYW1lc3BhY2U6IE5TLlhNTE5TfVxuXG4gICAgfTtcblxuLy9TVkcgdGFnIG5hbWVzIGFkanVzdG1lbnQgbWFwXG52YXIgU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUCA9IGV4cG9ydHMuU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUCA9IHtcbiAgICAnYWx0Z2x5cGgnOiAnYWx0R2x5cGgnLFxuICAgICdhbHRnbHlwaGRlZic6ICdhbHRHbHlwaERlZicsXG4gICAgJ2FsdGdseXBoaXRlbSc6ICdhbHRHbHlwaEl0ZW0nLFxuICAgICdhbmltYXRlY29sb3InOiAnYW5pbWF0ZUNvbG9yJyxcbiAgICAnYW5pbWF0ZW1vdGlvbic6ICdhbmltYXRlTW90aW9uJyxcbiAgICAnYW5pbWF0ZXRyYW5zZm9ybSc6ICdhbmltYXRlVHJhbnNmb3JtJyxcbiAgICAnY2xpcHBhdGgnOiAnY2xpcFBhdGgnLFxuICAgICdmZWJsZW5kJzogJ2ZlQmxlbmQnLFxuICAgICdmZWNvbG9ybWF0cml4JzogJ2ZlQ29sb3JNYXRyaXgnLFxuICAgICdmZWNvbXBvbmVudHRyYW5zZmVyJzogJ2ZlQ29tcG9uZW50VHJhbnNmZXInLFxuICAgICdmZWNvbXBvc2l0ZSc6ICdmZUNvbXBvc2l0ZScsXG4gICAgJ2ZlY29udm9sdmVtYXRyaXgnOiAnZmVDb252b2x2ZU1hdHJpeCcsXG4gICAgJ2ZlZGlmZnVzZWxpZ2h0aW5nJzogJ2ZlRGlmZnVzZUxpZ2h0aW5nJyxcbiAgICAnZmVkaXNwbGFjZW1lbnRtYXAnOiAnZmVEaXNwbGFjZW1lbnRNYXAnLFxuICAgICdmZWRpc3RhbnRsaWdodCc6ICdmZURpc3RhbnRMaWdodCcsXG4gICAgJ2ZlZmxvb2QnOiAnZmVGbG9vZCcsXG4gICAgJ2ZlZnVuY2EnOiAnZmVGdW5jQScsXG4gICAgJ2ZlZnVuY2InOiAnZmVGdW5jQicsXG4gICAgJ2ZlZnVuY2cnOiAnZmVGdW5jRycsXG4gICAgJ2ZlZnVuY3InOiAnZmVGdW5jUicsXG4gICAgJ2ZlZ2F1c3NpYW5ibHVyJzogJ2ZlR2F1c3NpYW5CbHVyJyxcbiAgICAnZmVpbWFnZSc6ICdmZUltYWdlJyxcbiAgICAnZmVtZXJnZSc6ICdmZU1lcmdlJyxcbiAgICAnZmVtZXJnZW5vZGUnOiAnZmVNZXJnZU5vZGUnLFxuICAgICdmZW1vcnBob2xvZ3knOiAnZmVNb3JwaG9sb2d5JyxcbiAgICAnZmVvZmZzZXQnOiAnZmVPZmZzZXQnLFxuICAgICdmZXBvaW50bGlnaHQnOiAnZmVQb2ludExpZ2h0JyxcbiAgICAnZmVzcGVjdWxhcmxpZ2h0aW5nJzogJ2ZlU3BlY3VsYXJMaWdodGluZycsXG4gICAgJ2Zlc3BvdGxpZ2h0JzogJ2ZlU3BvdExpZ2h0JyxcbiAgICAnZmV0aWxlJzogJ2ZlVGlsZScsXG4gICAgJ2ZldHVyYnVsZW5jZSc6ICdmZVR1cmJ1bGVuY2UnLFxuICAgICdmb3JlaWdub2JqZWN0JzogJ2ZvcmVpZ25PYmplY3QnLFxuICAgICdnbHlwaHJlZic6ICdnbHlwaFJlZicsXG4gICAgJ2xpbmVhcmdyYWRpZW50JzogJ2xpbmVhckdyYWRpZW50JyxcbiAgICAncmFkaWFsZ3JhZGllbnQnOiAncmFkaWFsR3JhZGllbnQnLFxuICAgICd0ZXh0cGF0aCc6ICd0ZXh0UGF0aCdcbn07XG5cbi8vVGFncyB0aGF0IGNhdXNlcyBleGl0IGZyb20gZm9yZWlnbiBjb250ZW50XG52YXIgRVhJVFNfRk9SRUlHTl9DT05URU5UID0ge307XG5cbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkJdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkJJR10gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuQkxPQ0tRVU9URV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuQk9EWV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuQlJdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkNFTlRFUl0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuQ09ERV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuRERdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkRJVl0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuRExdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkRUXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5FTV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuRU1CRURdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkgxXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5IMl0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuSDNdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkg0XSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5INV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuSDZdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkhFQURdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkhSXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5JXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5JTUddID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLkxJXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5MSVNUSU5HXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5NRU5VXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5NRVRBXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5OT0JSXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5PTF0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuUF0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuUFJFXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5SVUJZXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5TXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5TTUFMTF0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuU1BBTl0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuU1RST05HXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5TVFJJS0VdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLlNVQl0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuU1VQXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5UQUJMRV0gPSB0cnVlO1xuRVhJVFNfRk9SRUlHTl9DT05URU5UWyQuVFRdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLlVdID0gdHJ1ZTtcbkVYSVRTX0ZPUkVJR05fQ09OVEVOVFskLlVMXSA9IHRydWU7XG5FWElUU19GT1JFSUdOX0NPTlRFTlRbJC5WQVJdID0gdHJ1ZTtcblxuLy9DaGVjayBleGl0IGZyb20gZm9yZWlnbiBjb250ZW50XG5leHBvcnRzLmNhdXNlc0V4aXQgPSBmdW5jdGlvbiAoc3RhcnRUYWdUb2tlbikge1xuICAgIHZhciB0biA9IHN0YXJ0VGFnVG9rZW4udGFnTmFtZTtcbiAgICB2YXIgaXNGb250V2l0aEF0dHJzID0gdG4gPT09ICQuRk9OVCAmJiAoVG9rZW5pemVyLmdldFRva2VuQXR0cihzdGFydFRhZ1Rva2VuLCBBVFRSUy5DT0xPUikgIT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW5pemVyLmdldFRva2VuQXR0cihzdGFydFRhZ1Rva2VuLCBBVFRSUy5TSVpFKSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb2tlbml6ZXIuZ2V0VG9rZW5BdHRyKHN0YXJ0VGFnVG9rZW4sIEFUVFJTLkZBQ0UpICE9PSBudWxsKTtcblxuICAgIHJldHVybiBpc0ZvbnRXaXRoQXR0cnMgPyB0cnVlIDogRVhJVFNfRk9SRUlHTl9DT05URU5UW3RuXTtcbn07XG5cbi8vVG9rZW4gYWRqdXN0bWVudHNcbmV4cG9ydHMuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyA9IGZ1bmN0aW9uICh0b2tlbikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW4uYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRva2VuLmF0dHJzW2ldLm5hbWUgPT09IERFRklOSVRJT05fVVJMX0FUVFIpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWUgPSBBREpVU1RFRF9ERUZJTklUSU9OX1VSTF9BVFRSO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnRzLmFkanVzdFRva2VuU1ZHQXR0cnMgPSBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhZGp1c3RlZEF0dHJOYW1lID0gU1ZHX0FUVFJTX0FESlVTVE1FTlRfTUFQW3Rva2VuLmF0dHJzW2ldLm5hbWVdO1xuXG4gICAgICAgIGlmIChhZGp1c3RlZEF0dHJOYW1lKVxuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ubmFtZSA9IGFkanVzdGVkQXR0ck5hbWU7XG4gICAgfVxufTtcblxuZXhwb3J0cy5hZGp1c3RUb2tlblhNTEF0dHJzID0gZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbi5hdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYWRqdXN0ZWRBdHRyRW50cnkgPSBYTUxfQVRUUlNfQURKVVNUTUVOVF9NQVBbdG9rZW4uYXR0cnNbaV0ubmFtZV07XG5cbiAgICAgICAgaWYgKGFkanVzdGVkQXR0ckVudHJ5KSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5wcmVmaXggPSBhZGp1c3RlZEF0dHJFbnRyeS5wcmVmaXg7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gYWRqdXN0ZWRBdHRyRW50cnkubmFtZTtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWVzcGFjZSA9IGFkanVzdGVkQXR0ckVudHJ5Lm5hbWVzcGFjZTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydHMuYWRqdXN0VG9rZW5TVkdUYWdOYW1lID0gZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgdmFyIGFkanVzdGVkVGFnTmFtZSA9IFNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVBbdG9rZW4udGFnTmFtZV07XG5cbiAgICBpZiAoYWRqdXN0ZWRUYWdOYW1lKVxuICAgICAgICB0b2tlbi50YWdOYW1lID0gYWRqdXN0ZWRUYWdOYW1lO1xufTtcblxuLy9JbnRlZ3JhdGlvbiBwb2ludHNcbmZ1bmN0aW9uIGlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQodG4sIG5zKSB7XG4gICAgcmV0dXJuIG5zID09PSBOUy5NQVRITUwgJiYgKHRuID09PSAkLk1JIHx8IHRuID09PSAkLk1PIHx8IHRuID09PSAkLk1OIHx8IHRuID09PSAkLk1TIHx8IHRuID09PSAkLk1URVhUKTtcbn1cblxuZnVuY3Rpb24gaXNIdG1sSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzKSB7XG4gICAgaWYgKG5zID09PSBOUy5NQVRITUwgJiYgdG4gPT09ICQuQU5OT1RBVElPTl9YTUwpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGF0dHJzW2ldLm5hbWUgPT09IEFUVFJTLkVOQ09ESU5HKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gYXR0cnNbaV0udmFsdWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gTUlNRV9UWVBFUy5URVhUX0hUTUwgfHwgdmFsdWUgPT09IE1JTUVfVFlQRVMuQVBQTElDQVRJT05fWE1MO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5zID09PSBOUy5TVkcgJiYgKHRuID09PSAkLkZPUkVJR05fT0JKRUNUIHx8IHRuID09PSAkLkRFU0MgfHwgdG4gPT09ICQuVElUTEUpO1xufVxuXG5leHBvcnRzLmlzSW50ZWdyYXRpb25Qb2ludCA9IGZ1bmN0aW9uICh0biwgbnMsIGF0dHJzLCBmb3JlaWduTlMpIHtcbiAgICBpZiAoKCFmb3JlaWduTlMgfHwgZm9yZWlnbk5TID09PSBOUy5IVE1MKSAmJiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGlmICgoIWZvcmVpZ25OUyB8fCBmb3JlaWduTlMgPT09IE5TLk1BVEhNTCkgJiYgaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCh0biwgbnMpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgVG9rZW5pemVyID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyJyksXHJcbiAgICBPcGVuRWxlbWVudFN0YWNrID0gcmVxdWlyZSgnLi9vcGVuX2VsZW1lbnRfc3RhY2snKSxcclxuICAgIEZvcm1hdHRpbmdFbGVtZW50TGlzdCA9IHJlcXVpcmUoJy4vZm9ybWF0dGluZ19lbGVtZW50X2xpc3QnKSxcclxuICAgIGxvY2F0aW9uSW5mb01peGluID0gcmVxdWlyZSgnLi4vbG9jYXRpb25faW5mby9wYXJzZXJfbWl4aW4nKSxcclxuICAgIGRlZmF1bHRUcmVlQWRhcHRlciA9IHJlcXVpcmUoJy4uL3RyZWVfYWRhcHRlcnMvZGVmYXVsdCcpLFxyXG4gICAgZG9jdHlwZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi9kb2N0eXBlJyksXHJcbiAgICBmb3JlaWduQ29udGVudCA9IHJlcXVpcmUoJy4uL2NvbW1vbi9mb3JlaWduX2NvbnRlbnQnKSxcclxuICAgIG1lcmdlT3B0aW9ucyA9IHJlcXVpcmUoJy4uL2NvbW1vbi9tZXJnZV9vcHRpb25zJyksXHJcbiAgICBVTklDT0RFID0gcmVxdWlyZSgnLi4vY29tbW9uL3VuaWNvZGUnKSxcclxuICAgIEhUTUwgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbCcpO1xyXG5cclxuLy9BbGlhc2VzXHJcbnZhciAkID0gSFRNTC5UQUdfTkFNRVMsXHJcbiAgICBOUyA9IEhUTUwuTkFNRVNQQUNFUyxcclxuICAgIEFUVFJTID0gSFRNTC5BVFRSUztcclxuXHJcbi8qKlxyXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBQYXJzZXJPcHRpb25zXHJcbiAqXHJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2xvY2F0aW9uSW5mbz1mYWxzZV0gLSBFbmFibGVzIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgbm9kZXMuXHJcbiAqIFdoZW4gZW5hYmxlZCwgZWFjaCBub2RlIChleGNlcHQgcm9vdCBub2RlKSBoYXMgdGhlIGBfX2xvY2F0aW9uYCBwcm9wZXJ0eS4gSW4gY2FzZSB0aGUgbm9kZSBpcyBub3QgYW4gZW1wdHkgZWxlbWVudCxcclxuICogYF9fbG9jYXRpb25gIHdpbGwgYmUge0BsaW5rIEVsZW1lbnRMb2NhdGlvbkluZm99IG9iamVjdCwgb3RoZXJ3aXNlIGl0J3Mge0BsaW5rIExvY2F0aW9uSW5mb30uXHJcbiAqIElmIHRoZSBlbGVtZW50IHdhcyBpbXBsaWNpdGx5IGNyZWF0ZWQgYnkgdGhlIHBhcnNlciBpdCdzIGBfX2xvY2F0aW9uYCBwcm9wZXJ0eSB3aWxsIGJlIGBudWxsYC5cclxuICpcclxuICogQHByb3BlcnR5IHtUcmVlQWRhcHRlcn0gW3RyZWVBZGFwdGVyPXBhcnNlNS50cmVlQWRhcHRlcnMuZGVmYXVsdF0gLSBTcGVjaWZpZXMgdGhlIHJlc3VsdGluZyB0cmVlIGZvcm1hdC5cclxuICovXHJcbnZhciBERUZBVUxUX09QVElPTlMgPSB7XHJcbiAgICBsb2NhdGlvbkluZm86IGZhbHNlLFxyXG4gICAgdHJlZUFkYXB0ZXI6IGRlZmF1bHRUcmVlQWRhcHRlclxyXG59O1xyXG5cclxuLy9NaXNjIGNvbnN0YW50c1xyXG52YXIgSElEREVOX0lOUFVUX1RZUEUgPSAnaGlkZGVuJztcclxuXHJcbi8vQWRvcHRpb24gYWdlbmN5IGxvb3BzIGl0ZXJhdGlvbiBjb3VudFxyXG52YXIgQUFfT1VURVJfTE9PUF9JVEVSID0gOCxcclxuICAgIEFBX0lOTkVSX0xPT1BfSVRFUiA9IDM7XHJcblxyXG4vL0luc2VydGlvbiBtb2Rlc1xyXG52YXIgSU5JVElBTF9NT0RFID0gJ0lOSVRJQUxfTU9ERScsXHJcbiAgICBCRUZPUkVfSFRNTF9NT0RFID0gJ0JFRk9SRV9IVE1MX01PREUnLFxyXG4gICAgQkVGT1JFX0hFQURfTU9ERSA9ICdCRUZPUkVfSEVBRF9NT0RFJyxcclxuICAgIElOX0hFQURfTU9ERSA9ICdJTl9IRUFEX01PREUnLFxyXG4gICAgQUZURVJfSEVBRF9NT0RFID0gJ0FGVEVSX0hFQURfTU9ERScsXHJcbiAgICBJTl9CT0RZX01PREUgPSAnSU5fQk9EWV9NT0RFJyxcclxuICAgIFRFWFRfTU9ERSA9ICdURVhUX01PREUnLFxyXG4gICAgSU5fVEFCTEVfTU9ERSA9ICdJTl9UQUJMRV9NT0RFJyxcclxuICAgIElOX1RBQkxFX1RFWFRfTU9ERSA9ICdJTl9UQUJMRV9URVhUX01PREUnLFxyXG4gICAgSU5fQ0FQVElPTl9NT0RFID0gJ0lOX0NBUFRJT05fTU9ERScsXHJcbiAgICBJTl9DT0xVTU5fR1JPVVBfTU9ERSA9ICdJTl9DT0xVTU5fR1JPVVBfTU9ERScsXHJcbiAgICBJTl9UQUJMRV9CT0RZX01PREUgPSAnSU5fVEFCTEVfQk9EWV9NT0RFJyxcclxuICAgIElOX1JPV19NT0RFID0gJ0lOX1JPV19NT0RFJyxcclxuICAgIElOX0NFTExfTU9ERSA9ICdJTl9DRUxMX01PREUnLFxyXG4gICAgSU5fU0VMRUNUX01PREUgPSAnSU5fU0VMRUNUX01PREUnLFxyXG4gICAgSU5fU0VMRUNUX0lOX1RBQkxFX01PREUgPSAnSU5fU0VMRUNUX0lOX1RBQkxFX01PREUnLFxyXG4gICAgSU5fVEVNUExBVEVfTU9ERSA9ICdJTl9URU1QTEFURV9NT0RFJyxcclxuICAgIEFGVEVSX0JPRFlfTU9ERSA9ICdBRlRFUl9CT0RZX01PREUnLFxyXG4gICAgSU5fRlJBTUVTRVRfTU9ERSA9ICdJTl9GUkFNRVNFVF9NT0RFJyxcclxuICAgIEFGVEVSX0ZSQU1FU0VUX01PREUgPSAnQUZURVJfRlJBTUVTRVRfTU9ERScsXHJcbiAgICBBRlRFUl9BRlRFUl9CT0RZX01PREUgPSAnQUZURVJfQUZURVJfQk9EWV9NT0RFJyxcclxuICAgIEFGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREUgPSAnQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERSc7XHJcblxyXG4vL0luc2VydGlvbiBtb2RlIHJlc2V0IG1hcFxyXG52YXIgSU5TRVJUSU9OX01PREVfUkVTRVRfTUFQID0ge307XHJcblxyXG5JTlNFUlRJT05fTU9ERV9SRVNFVF9NQVBbJC5UUl0gPSBJTl9ST1dfTU9ERTtcclxuSU5TRVJUSU9OX01PREVfUkVTRVRfTUFQWyQuVEJPRFldID1cclxuSU5TRVJUSU9OX01PREVfUkVTRVRfTUFQWyQuVEhFQURdID1cclxuSU5TRVJUSU9OX01PREVfUkVTRVRfTUFQWyQuVEZPT1RdID0gSU5fVEFCTEVfQk9EWV9NT0RFO1xyXG5JTlNFUlRJT05fTU9ERV9SRVNFVF9NQVBbJC5DQVBUSU9OXSA9IElOX0NBUFRJT05fTU9ERTtcclxuSU5TRVJUSU9OX01PREVfUkVTRVRfTUFQWyQuQ09MR1JPVVBdID0gSU5fQ09MVU1OX0dST1VQX01PREU7XHJcbklOU0VSVElPTl9NT0RFX1JFU0VUX01BUFskLlRBQkxFXSA9IElOX1RBQkxFX01PREU7XHJcbklOU0VSVElPTl9NT0RFX1JFU0VUX01BUFskLkJPRFldID0gSU5fQk9EWV9NT0RFO1xyXG5JTlNFUlRJT05fTU9ERV9SRVNFVF9NQVBbJC5GUkFNRVNFVF0gPSBJTl9GUkFNRVNFVF9NT0RFO1xyXG5cclxuLy9UZW1wbGF0ZSBpbnNlcnRpb24gbW9kZSBzd2l0Y2ggbWFwXHJcbnZhciBURU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQID0ge307XHJcblxyXG5URU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQWyQuQ0FQVElPTl0gPVxyXG5URU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQWyQuQ09MR1JPVVBdID1cclxuVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUFskLlRCT0RZXSA9XHJcblRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVBbJC5URk9PVF0gPVxyXG5URU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQWyQuVEhFQURdID0gSU5fVEFCTEVfTU9ERTtcclxuVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUFskLkNPTF0gPSBJTl9DT0xVTU5fR1JPVVBfTU9ERTtcclxuVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUFskLlRSXSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcclxuVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUFskLlREXSA9XHJcblRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVBbJC5USF0gPSBJTl9ST1dfTU9ERTtcclxuXHJcbi8vVG9rZW4gaGFuZGxlcnMgbWFwIGZvciBpbnNlcnRpb24gbW9kZXNcclxudmFyIF8gPSB7fTtcclxuXHJcbl9bSU5JVElBTF9NT0RFXSA9IHt9O1xyXG5fW0lOSVRJQUxfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPVxyXG5fW0lOSVRJQUxfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IHRva2VuSW5Jbml0aWFsTW9kZTtcclxuX1tJTklUSUFMX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tJTklUSUFMX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnQ7XHJcbl9bSU5JVElBTF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBkb2N0eXBlSW5Jbml0aWFsTW9kZTtcclxuX1tJTklUSUFMX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID1cclxuX1tJTklUSUFMX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9XHJcbl9bSU5JVElBTF9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IHRva2VuSW5Jbml0aWFsTW9kZTtcclxuXHJcbl9bQkVGT1JFX0hUTUxfTU9ERV0gPSB7fTtcclxuX1tCRUZPUkVfSFRNTF9NT0RFXVtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXSA9XHJcbl9bQkVGT1JFX0hUTUxfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IHRva2VuQmVmb3JlSHRtbDtcclxuX1tCRUZPUkVfSFRNTF9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bQkVGT1JFX0hUTUxfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcclxuX1tCRUZPUkVfSFRNTF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tCRUZPUkVfSFRNTF9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnQmVmb3JlSHRtbDtcclxuX1tCRUZPUkVfSFRNTF9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdCZWZvcmVIdG1sO1xyXG5fW0JFRk9SRV9IVE1MX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gdG9rZW5CZWZvcmVIdG1sO1xyXG5cclxuX1tCRUZPUkVfSEVBRF9NT0RFXSA9IHt9O1xyXG5fW0JFRk9SRV9IRUFEX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cclxuX1tCRUZPUkVfSEVBRF9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID0gdG9rZW5CZWZvcmVIZWFkO1xyXG5fW0JFRk9SRV9IRUFEX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tCRUZPUkVfSEVBRF9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50O1xyXG5fW0JFRk9SRV9IRUFEX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0JFRk9SRV9IRUFEX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdCZWZvcmVIZWFkO1xyXG5fW0JFRk9SRV9IRUFEX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9IGVuZFRhZ0JlZm9yZUhlYWQ7XHJcbl9bQkVGT1JFX0hFQURfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSB0b2tlbkJlZm9yZUhlYWQ7XHJcblxyXG5fW0lOX0hFQURfTU9ERV0gPSB7fTtcclxuX1tJTl9IRUFEX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cclxuX1tJTl9IRUFEX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSB0b2tlbkluSGVhZDtcclxuX1tJTl9IRUFEX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSBpbnNlcnRDaGFyYWN0ZXJzO1xyXG5fW0lOX0hFQURfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcclxuX1tJTl9IRUFEX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0lOX0hFQURfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBzdGFydFRhZ0luSGVhZDtcclxuX1tJTl9IRUFEX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9IGVuZFRhZ0luSGVhZDtcclxuX1tJTl9IRUFEX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gdG9rZW5JbkhlYWQ7XHJcblxyXG5fW0FGVEVSX0hFQURfTU9ERV0gPSB7fTtcclxuX1tBRlRFUl9IRUFEX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cclxuX1tBRlRFUl9IRUFEX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSB0b2tlbkFmdGVySGVhZDtcclxuX1tBRlRFUl9IRUFEX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSBpbnNlcnRDaGFyYWN0ZXJzO1xyXG5fW0FGVEVSX0hFQURfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcclxuX1tBRlRFUl9IRUFEX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0FGVEVSX0hFQURfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBzdGFydFRhZ0FmdGVySGVhZDtcclxuX1tBRlRFUl9IRUFEX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9IGVuZFRhZ0FmdGVySGVhZDtcclxuX1tBRlRFUl9IRUFEX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gdG9rZW5BZnRlckhlYWQ7XHJcblxyXG5fW0lOX0JPRFlfTU9ERV0gPSB7fTtcclxuX1tJTl9CT0RZX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID0gY2hhcmFjdGVySW5Cb2R5O1xyXG5fW0lOX0JPRFlfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0lOX0JPRFlfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHk7XHJcbl9bSU5fQk9EWV9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50O1xyXG5fW0lOX0JPRFlfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bSU5fQk9EWV9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnSW5Cb2R5O1xyXG5fW0lOX0JPRFlfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID0gZW5kVGFnSW5Cb2R5O1xyXG5fW0lOX0JPRFlfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBlb2ZJbkJvZHk7XHJcblxyXG5fW1RFWFRfTU9ERV0gPSB7fTtcclxuX1tURVhUX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cclxuX1tURVhUX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPVxyXG5fW1RFWFRfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGluc2VydENoYXJhY3RlcnM7XHJcbl9bVEVYVF9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPVxyXG5fW1RFWFRfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID1cclxuX1tURVhUX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bVEVYVF9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJblRleHQ7XHJcbl9bVEVYVF9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IGVvZkluVGV4dDtcclxuXHJcbl9bSU5fVEFCTEVfTU9ERV0gPSB7fTtcclxuX1tJTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXSA9XHJcbl9bSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9XHJcbl9bSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGNoYXJhY3RlckluVGFibGU7XHJcbl9bSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcclxuX1tJTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tJTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnSW5UYWJsZTtcclxuX1tJTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJblRhYmxlO1xyXG5fW0lOX1RBQkxFX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gZW9mSW5Cb2R5O1xyXG5cclxuX1tJTl9UQUJMRV9URVhUX01PREVdID0ge307XHJcbl9bSU5fVEFCTEVfVEVYVF9NT0RFXVtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXSA9IGNoYXJhY3RlckluVGFibGVUZXh0O1xyXG5fW0lOX1RBQkxFX1RFWFRfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0lOX1RBQkxFX1RFWFRfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IHdoaXRlc3BhY2VDaGFyYWN0ZXJJblRhYmxlVGV4dDtcclxuX1tJTl9UQUJMRV9URVhUX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9XHJcbl9bSU5fVEFCTEVfVEVYVF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPVxyXG5fW0lOX1RBQkxFX1RFWFRfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPVxyXG5fW0lOX1RBQkxFX1RFWFRfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID1cclxuX1tJTl9UQUJMRV9URVhUX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gdG9rZW5JblRhYmxlVGV4dDtcclxuXHJcbl9bSU5fQ0FQVElPTl9NT0RFXSA9IHt9O1xyXG5fW0lOX0NBUFRJT05fTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPSBjaGFyYWN0ZXJJbkJvZHk7XHJcbl9bSU5fQ0FQVElPTl9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bSU5fQ0FQVElPTl9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keTtcclxuX1tJTl9DQVBUSU9OX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnQ7XHJcbl9bSU5fQ0FQVElPTl9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tJTl9DQVBUSU9OX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdJbkNhcHRpb247XHJcbl9bSU5fQ0FQVElPTl9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJbkNhcHRpb247XHJcbl9bSU5fQ0FQVElPTl9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IGVvZkluQm9keTtcclxuXHJcbl9bSU5fQ09MVU1OX0dST1VQX01PREVdID0ge307XHJcbl9bSU5fQ09MVU1OX0dST1VQX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cclxuX1tJTl9DT0xVTU5fR1JPVVBfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IHRva2VuSW5Db2x1bW5Hcm91cDtcclxuX1tJTl9DT0xVTU5fR1JPVVBfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGluc2VydENoYXJhY3RlcnM7XHJcbl9bSU5fQ09MVU1OX0dST1VQX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnQ7XHJcbl9bSU5fQ09MVU1OX0dST1VQX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0lOX0NPTFVNTl9HUk9VUF9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnSW5Db2x1bW5Hcm91cDtcclxuX1tJTl9DT0xVTU5fR1JPVVBfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID0gZW5kVGFnSW5Db2x1bW5Hcm91cDtcclxuX1tJTl9DT0xVTU5fR1JPVVBfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBlb2ZJbkJvZHk7XHJcblxyXG5fW0lOX1RBQkxFX0JPRFlfTU9ERV0gPSB7fTtcclxuX1tJTl9UQUJMRV9CT0RZX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cclxuX1tJTl9UQUJMRV9CT0RZX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPVxyXG5fW0lOX1RBQkxFX0JPRFlfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGNoYXJhY3RlckluVGFibGU7XHJcbl9bSU5fVEFCTEVfQk9EWV9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50O1xyXG5fW0lOX1RBQkxFX0JPRFlfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bSU5fVEFCTEVfQk9EWV9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnSW5UYWJsZUJvZHk7XHJcbl9bSU5fVEFCTEVfQk9EWV9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJblRhYmxlQm9keTtcclxuX1tJTl9UQUJMRV9CT0RZX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gZW9mSW5Cb2R5O1xyXG5cclxuX1tJTl9ST1dfTU9ERV0gPSB7fTtcclxuX1tJTl9ST1dfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPVxyXG5fW0lOX1JPV19NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID1cclxuX1tJTl9ST1dfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGNoYXJhY3RlckluVGFibGU7XHJcbl9bSU5fUk9XX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnQ7XHJcbl9bSU5fUk9XX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0lOX1JPV19NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnSW5Sb3c7XHJcbl9bSU5fUk9XX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9IGVuZFRhZ0luUm93O1xyXG5fW0lOX1JPV19NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IGVvZkluQm9keTtcclxuXHJcbl9bSU5fQ0VMTF9NT0RFXSA9IHt9O1xyXG5fW0lOX0NFTExfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPSBjaGFyYWN0ZXJJbkJvZHk7XHJcbl9bSU5fQ0VMTF9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bSU5fQ0VMTF9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keTtcclxuX1tJTl9DRUxMX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnQ7XHJcbl9bSU5fQ0VMTF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tJTl9DRUxMX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdJbkNlbGw7XHJcbl9bSU5fQ0VMTF9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJbkNlbGw7XHJcbl9bSU5fQ0VMTF9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IGVvZkluQm9keTtcclxuXHJcbl9bSU5fU0VMRUNUX01PREVdID0ge307XHJcbl9bSU5fU0VMRUNUX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID0gaW5zZXJ0Q2hhcmFjdGVycztcclxuX1tJTl9TRUxFQ1RfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0lOX1NFTEVDVF9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gaW5zZXJ0Q2hhcmFjdGVycztcclxuX1tJTl9TRUxFQ1RfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcclxuX1tJTl9TRUxFQ1RfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bSU5fU0VMRUNUX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdJblNlbGVjdDtcclxuX1tJTl9TRUxFQ1RfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID0gZW5kVGFnSW5TZWxlY3Q7XHJcbl9bSU5fU0VMRUNUX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gZW9mSW5Cb2R5O1xyXG5cclxuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV0gPSB7fTtcclxuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPSBpbnNlcnRDaGFyYWN0ZXJzO1xyXG5fW0lOX1NFTEVDVF9JTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bSU5fU0VMRUNUX0lOX1RBQkxFX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSBpbnNlcnRDaGFyYWN0ZXJzO1xyXG5fW0lOX1NFTEVDVF9JTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50O1xyXG5fW0lOX1NFTEVDVF9JTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl0gPSBzdGFydFRhZ0luU2VsZWN0SW5UYWJsZTtcclxuX1tJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID0gZW5kVGFnSW5TZWxlY3RJblRhYmxlO1xyXG5fW0lOX1NFTEVDVF9JTl9UQUJMRV9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IGVvZkluQm9keTtcclxuXHJcbl9bSU5fVEVNUExBVEVfTU9ERV0gPSB7fTtcclxuX1tJTl9URU1QTEFURV9NT0RFXVtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXSA9IGNoYXJhY3RlckluQm9keTtcclxuX1tJTl9URU1QTEFURV9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bSU5fVEVNUExBVEVfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHk7XHJcbl9bSU5fVEVNUExBVEVfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcclxuX1tJTl9URU1QTEFURV9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tJTl9URU1QTEFURV9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnSW5UZW1wbGF0ZTtcclxuX1tJTl9URU1QTEFURV9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJblRlbXBsYXRlO1xyXG5fW0lOX1RFTVBMQVRFX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gZW9mSW5UZW1wbGF0ZTtcclxuXHJcbl9bQUZURVJfQk9EWV9NT0RFXSA9IHt9O1xyXG5fW0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPVxyXG5fW0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IHRva2VuQWZ0ZXJCb2R5O1xyXG5fW0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHk7XHJcbl9bQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50VG9Sb290SHRtbEVsZW1lbnQ7XHJcbl9bQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tBRlRFUl9CT0RZX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdBZnRlckJvZHk7XHJcbl9bQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdBZnRlckJvZHk7XHJcbl9bQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuRU9GX1RPS0VOXSA9IHN0b3BQYXJzaW5nO1xyXG5cclxuX1tJTl9GUkFNRVNFVF9NT0RFXSA9IHt9O1xyXG5fW0lOX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dID1cclxuX1tJTl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bSU5fRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXSA9IGluc2VydENoYXJhY3RlcnM7XHJcbl9bSU5fRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dID0gYXBwZW5kQ29tbWVudDtcclxuX1tJTl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tJTl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnSW5GcmFtZXNldDtcclxuX1tJTl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSBlbmRUYWdJbkZyYW1lc2V0O1xyXG5fW0lOX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5FT0ZfVE9LRU5dID0gc3RvcFBhcnNpbmc7XHJcblxyXG5fW0FGVEVSX0ZSQU1FU0VUX01PREVdID0ge307XHJcbl9bQUZURVJfRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPVxyXG5fW0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl0gPSBpZ25vcmVUb2tlbjtcclxuX1tBRlRFUl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gaW5zZXJ0Q2hhcmFjdGVycztcclxuX1tBRlRFUl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl0gPSBhcHBlbmRDb21tZW50O1xyXG5fW0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdBZnRlckZyYW1lc2V0O1xyXG5fW0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXSA9IGVuZFRhZ0FmdGVyRnJhbWVzZXQ7XHJcbl9bQUZURVJfRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBzdG9wUGFyc2luZztcclxuXHJcbl9bQUZURVJfQUZURVJfQk9EWV9NT0RFXSA9IHt9O1xyXG5fW0FGVEVSX0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl0gPSB0b2tlbkFmdGVyQWZ0ZXJCb2R5O1xyXG5fW0FGVEVSX0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IHRva2VuQWZ0ZXJBZnRlckJvZHk7XHJcbl9bQUZURVJfQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dID0gd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keTtcclxuX1tBRlRFUl9BRlRFUl9CT0RZX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnRUb0RvY3VtZW50O1xyXG5fW0FGVEVSX0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bQUZURVJfQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXSA9IHN0YXJ0VGFnQWZ0ZXJBZnRlckJvZHk7XHJcbl9bQUZURVJfQUZURVJfQk9EWV9NT0RFXVtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl0gPSB0b2tlbkFmdGVyQWZ0ZXJCb2R5O1xyXG5fW0FGVEVSX0FGVEVSX0JPRFlfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBzdG9wUGFyc2luZztcclxuXHJcbl9bQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERV0gPSB7fTtcclxuX1tBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFXVtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXSA9XHJcbl9bQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0FGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl0gPSB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5O1xyXG5fW0FGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXSA9IGFwcGVuZENvbW1lbnRUb0RvY3VtZW50O1xyXG5fW0FGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXSA9IGlnbm9yZVRva2VuO1xyXG5fW0FGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREVdW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dID0gc3RhcnRUYWdBZnRlckFmdGVyRnJhbWVzZXQ7XHJcbl9bQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dID0gaWdub3JlVG9rZW47XHJcbl9bQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERV1bVG9rZW5pemVyLkVPRl9UT0tFTl0gPSBzdG9wUGFyc2luZztcclxuXHJcblxyXG4vL1BhcnNlclxyXG52YXIgUGFyc2VyID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xyXG4gICAgdGhpcy5vcHRpb25zID0gbWVyZ2VPcHRpb25zKERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucyk7XHJcblxyXG4gICAgdGhpcy50cmVlQWRhcHRlciA9IHRoaXMub3B0aW9ucy50cmVlQWRhcHRlcjtcclxuICAgIHRoaXMucGVuZGluZ1NjcmlwdCA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sb2NhdGlvbkluZm8pXHJcbiAgICAgICAgbG9jYXRpb25JbmZvTWl4aW4uYXNzaWduKHRoaXMpO1xyXG59O1xyXG5cclxuLy8gQVBJXHJcblBhcnNlci5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAoaHRtbCkge1xyXG4gICAgdmFyIGRvY3VtZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudCgpO1xyXG5cclxuICAgIHRoaXMuX2Jvb3RzdHJhcChkb2N1bWVudCwgbnVsbCk7XHJcbiAgICB0aGlzLnRva2VuaXplci53cml0ZShodG1sLCB0cnVlKTtcclxuICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKG51bGwsIG51bGwpO1xyXG5cclxuICAgIHJldHVybiBkb2N1bWVudDtcclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUucGFyc2VGcmFnbWVudCA9IGZ1bmN0aW9uIChodG1sLCBmcmFnbWVudENvbnRleHQpIHtcclxuICAgIC8vTk9URTogdXNlIDx0ZW1wbGF0ZT4gZWxlbWVudCBhcyBhIGZyYWdtZW50IGNvbnRleHQgaWYgY29udGV4dCBlbGVtZW50IHdhcyBub3QgcHJvdmlkZWQsXHJcbiAgICAvL3NvIHdlIHdpbGwgcGFyc2UgaW4gXCJmb3JnaXZpbmdcIiBtYW5uZXJcclxuICAgIGlmICghZnJhZ21lbnRDb250ZXh0KVxyXG4gICAgICAgIGZyYWdtZW50Q29udGV4dCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgkLlRFTVBMQVRFLCBOUy5IVE1MLCBbXSk7XHJcblxyXG4gICAgLy9OT1RFOiBjcmVhdGUgZmFrZSBlbGVtZW50IHdoaWNoIHdpbGwgYmUgdXNlZCBhcyAnZG9jdW1lbnQnIGZvciBmcmFnbWVudCBwYXJzaW5nLlxyXG4gICAgLy9UaGlzIGlzIGltcG9ydGFudCBmb3IganNkb20gdGhlcmUgJ2RvY3VtZW50JyBjYW4ndCBiZSByZWNyZWF0ZWQsIHRoZXJlZm9yZVxyXG4gICAgLy9mcmFnbWVudCBwYXJzaW5nIGNhdXNlcyBtZXNzaW5nIG9mIHRoZSBtYWluIGBkb2N1bWVudGAuXHJcbiAgICB2YXIgZG9jdW1lbnRNb2NrID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KCdkb2N1bWVudG1vY2snLCBOUy5IVE1MLCBbXSk7XHJcblxyXG4gICAgdGhpcy5fYm9vdHN0cmFwKGRvY3VtZW50TW9jaywgZnJhZ21lbnRDb250ZXh0KTtcclxuXHJcbiAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGZyYWdtZW50Q29udGV4dCkgPT09ICQuVEVNUExBVEUpXHJcbiAgICAgICAgdGhpcy5fcHVzaFRtcGxJbnNlcnRpb25Nb2RlKElOX1RFTVBMQVRFX01PREUpO1xyXG5cclxuICAgIHRoaXMuX2luaXRUb2tlbml6ZXJGb3JGcmFnbWVudFBhcnNpbmcoKTtcclxuICAgIHRoaXMuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xyXG4gICAgdGhpcy5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XHJcbiAgICB0aGlzLl9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0KCk7XHJcbiAgICB0aGlzLnRva2VuaXplci53cml0ZShodG1sLCB0cnVlKTtcclxuICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKG51bGwsIG51bGwpO1xyXG5cclxuICAgIHZhciByb290RWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Rmlyc3RDaGlsZChkb2N1bWVudE1vY2spLFxyXG4gICAgICAgIGZyYWdtZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XHJcblxyXG4gICAgdGhpcy5fYWRvcHROb2Rlcyhyb290RWxlbWVudCwgZnJhZ21lbnQpO1xyXG5cclxuICAgIHJldHVybiBmcmFnbWVudDtcclxufTtcclxuXHJcbi8vQm9vdHN0cmFwIHBhcnNlclxyXG5QYXJzZXIucHJvdG90eXBlLl9ib290c3RyYXAgPSBmdW5jdGlvbiAoZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCkge1xyXG4gICAgdGhpcy50b2tlbml6ZXIgPSBuZXcgVG9rZW5pemVyKHRoaXMub3B0aW9ucyk7XHJcblxyXG4gICAgdGhpcy5zdG9wcGVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5JVElBTF9NT0RFO1xyXG4gICAgdGhpcy5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSAnJztcclxuXHJcbiAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XHJcbiAgICB0aGlzLmZyYWdtZW50Q29udGV4dCA9IGZyYWdtZW50Q29udGV4dDtcclxuXHJcbiAgICB0aGlzLmhlYWRFbGVtZW50ID0gbnVsbDtcclxuICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBudWxsO1xyXG5cclxuICAgIHRoaXMub3BlbkVsZW1lbnRzID0gbmV3IE9wZW5FbGVtZW50U3RhY2sodGhpcy5kb2N1bWVudCwgdGhpcy50cmVlQWRhcHRlcik7XHJcbiAgICB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cyA9IG5ldyBGb3JtYXR0aW5nRWxlbWVudExpc3QodGhpcy50cmVlQWRhcHRlcik7XHJcblxyXG4gICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrID0gW107XHJcbiAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AgPSAtMTtcclxuICAgIHRoaXMuY3VycmVudFRtcGxJbnNlcnRpb25Nb2RlID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMgPSBbXTtcclxuICAgIHRoaXMuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuZnJhbWVzZXRPayA9IHRydWU7XHJcbiAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5mb3N0ZXJQYXJlbnRpbmdFbmFibGVkID0gZmFsc2U7XHJcbn07XHJcblxyXG4vL1BhcnNpbmcgbG9vcFxyXG5QYXJzZXIucHJvdG90eXBlLl9ydW5QYXJzaW5nTG9vcCA9IGZ1bmN0aW9uICh3cml0ZUNhbGxiYWNrLCBzY3JpcHRIYW5kbGVyKSB7XHJcbiAgICB3aGlsZSAoIXRoaXMuc3RvcHBlZCkge1xyXG4gICAgICAgIHRoaXMuX3NldHVwVG9rZW5pemVyQ0RBVEFNb2RlKCk7XHJcblxyXG4gICAgICAgIHZhciB0b2tlbiA9IHRoaXMudG9rZW5pemVyLmdldE5leHRUb2tlbigpO1xyXG5cclxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkhJQkVSTkFUSU9OX1RPS0VOKVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2tpcE5leHROZXdMaW5lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOICYmIHRva2VuLmNoYXJzWzBdID09PSAnXFxuJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLmNoYXJzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgICAgICAgICB0b2tlbi5jaGFycyA9IHRva2VuLmNoYXJzLnN1YnN0cigxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0lucHV0VG9rZW4odG9rZW4pO1xyXG5cclxuICAgICAgICBpZiAoc2NyaXB0SGFuZGxlciAmJiB0aGlzLnBlbmRpbmdTY3JpcHQpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzY3JpcHRIYW5kbGVyICYmIHRoaXMucGVuZGluZ1NjcmlwdCkge1xyXG4gICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLnBlbmRpbmdTY3JpcHQ7XHJcblxyXG4gICAgICAgIHRoaXMucGVuZGluZ1NjcmlwdCA9IG51bGw7XHJcblxyXG4gICAgICAgIHNjcmlwdEhhbmRsZXIoc2NyaXB0KTtcclxuXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3cml0ZUNhbGxiYWNrKVxyXG4gICAgICAgIHdyaXRlQ2FsbGJhY2soKTtcclxufTtcclxuXHJcbi8vVGV4dCBwYXJzaW5nXHJcblBhcnNlci5wcm90b3R5cGUuX3NldHVwVG9rZW5pemVyQ0RBVEFNb2RlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCk7XHJcblxyXG4gICAgdGhpcy50b2tlbml6ZXIuYWxsb3dDREFUQSA9IGN1cnJlbnQgJiYgY3VycmVudCAhPT0gdGhpcy5kb2N1bWVudCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpICE9PSBOUy5IVE1MICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludChjdXJyZW50KTtcclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUuX3N3aXRjaFRvVGV4dFBhcnNpbmcgPSBmdW5jdGlvbiAoY3VycmVudFRva2VuLCBuZXh0VG9rZW5pemVyU3RhdGUpIHtcclxuICAgIHRoaXMuX2luc2VydEVsZW1lbnQoY3VycmVudFRva2VuLCBOUy5IVE1MKTtcclxuICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gbmV4dFRva2VuaXplclN0YXRlO1xyXG4gICAgdGhpcy5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSB0aGlzLmluc2VydGlvbk1vZGU7XHJcbiAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBURVhUX01PREU7XHJcbn07XHJcblxyXG4vL0ZyYWdtZW50IHBhcnNpbmdcclxuUGFyc2VyLnByb3RvdHlwZS5fZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLmZyYWdtZW50Q29udGV4dCA/XHJcbiAgICAgICAgICAgdGhpcy5mcmFnbWVudENvbnRleHQgOlxyXG4gICAgICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XHJcbn07XHJcblxyXG5QYXJzZXIucHJvdG90eXBlLl9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIG5vZGUgPSB0aGlzLmZyYWdtZW50Q29udGV4dDtcclxuXHJcbiAgICBkbyB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShub2RlKSA9PT0gJC5GT1JNKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBub2RlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG5vZGUgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFBhcmVudE5vZGUobm9kZSk7XHJcbiAgICB9IHdoaWxlIChub2RlKTtcclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUuX2luaXRUb2tlbml6ZXJGb3JGcmFnbWVudFBhcnNpbmcgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5mcmFnbWVudENvbnRleHQpID09PSBOUy5IVE1MKSB7XHJcbiAgICAgICAgdmFyIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuZnJhZ21lbnRDb250ZXh0KTtcclxuXHJcbiAgICAgICAgaWYgKHRuID09PSAkLlRJVExFIHx8IHRuID09PSAkLlRFWFRBUkVBKVxyXG4gICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlJDREFUQTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuU1RZTEUgfHwgdG4gPT09ICQuWE1QIHx8IHRuID09PSAkLklGUkFNRSB8fFxyXG4gICAgICAgICAgICAgICAgIHRuID09PSAkLk5PRU1CRUQgfHwgdG4gPT09ICQuTk9GUkFNRVMgfHwgdG4gPT09ICQuTk9TQ1JJUFQpXHJcbiAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyLk1PREUuUkFXVEVYVDtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuU0NSSVBUKVxyXG4gICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlNDUklQVF9EQVRBO1xyXG5cclxuICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5QTEFJTlRFWFQpXHJcbiAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyLk1PREUuUExBSU5URVhUO1xyXG4gICAgfVxyXG59O1xyXG5cclxuLy9UcmVlIG11dGF0aW9uXHJcblBhcnNlci5wcm90b3R5cGUuX3NldERvY3VtZW50VHlwZSA9IGZ1bmN0aW9uICh0b2tlbikge1xyXG4gICAgdGhpcy50cmVlQWRhcHRlci5zZXREb2N1bWVudFR5cGUodGhpcy5kb2N1bWVudCwgdG9rZW4ubmFtZSwgdG9rZW4ucHVibGljSWQsIHRva2VuLnN5c3RlbUlkKTtcclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUuX2F0dGFjaEVsZW1lbnRUb1RyZWUgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xyXG4gICAgaWYgKHRoaXMuX3Nob3VsZEZvc3RlclBhcmVudE9uSW5zZXJ0aW9uKCkpXHJcbiAgICAgICAgdGhpcy5fZm9zdGVyUGFyZW50RWxlbWVudChlbGVtZW50KTtcclxuXHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50IHx8IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XHJcblxyXG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcclxuICAgIH1cclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUuX2FwcGVuZEVsZW1lbnQgPSBmdW5jdGlvbiAodG9rZW4sIG5hbWVzcGFjZVVSSSkge1xyXG4gICAgdmFyIGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgbmFtZXNwYWNlVVJJLCB0b2tlbi5hdHRycyk7XHJcblxyXG4gICAgdGhpcy5fYXR0YWNoRWxlbWVudFRvVHJlZShlbGVtZW50KTtcclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUuX2luc2VydEVsZW1lbnQgPSBmdW5jdGlvbiAodG9rZW4sIG5hbWVzcGFjZVVSSSkge1xyXG4gICAgdmFyIGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgbmFtZXNwYWNlVVJJLCB0b2tlbi5hdHRycyk7XHJcblxyXG4gICAgdGhpcy5fYXR0YWNoRWxlbWVudFRvVHJlZShlbGVtZW50KTtcclxuICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCk7XHJcbn07XHJcblxyXG5QYXJzZXIucHJvdG90eXBlLl9pbnNlcnRGYWtlRWxlbWVudCA9IGZ1bmN0aW9uICh0YWdOYW1lKSB7XHJcbiAgICB2YXIgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBOUy5IVE1MLCBbXSk7XHJcblxyXG4gICAgdGhpcy5fYXR0YWNoRWxlbWVudFRvVHJlZShlbGVtZW50KTtcclxuICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCk7XHJcbn07XHJcblxyXG5QYXJzZXIucHJvdG90eXBlLl9pbnNlcnRUZW1wbGF0ZSA9IGZ1bmN0aW9uICh0b2tlbikge1xyXG4gICAgdmFyIHRtcGwgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgTlMuSFRNTCwgdG9rZW4uYXR0cnMpLFxyXG4gICAgICAgIGNvbnRlbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcclxuXHJcbiAgICB0aGlzLnRyZWVBZGFwdGVyLnNldFRlbXBsYXRlQ29udGVudCh0bXBsLCBjb250ZW50KTtcclxuICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUodG1wbCk7XHJcbiAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKHRtcGwpO1xyXG59O1xyXG5cclxuUGFyc2VyLnByb3RvdHlwZS5faW5zZXJ0RmFrZVJvb3RFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQoJC5IVE1MLCBOUy5IVE1MLCBbXSk7XHJcblxyXG4gICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZCh0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50LCBlbGVtZW50KTtcclxuICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCk7XHJcbn07XHJcblxyXG5QYXJzZXIucHJvdG90eXBlLl9hcHBlbmRDb21tZW50Tm9kZSA9IGZ1bmN0aW9uICh0b2tlbiwgcGFyZW50KSB7XHJcbiAgICB2YXIgY29tbWVudE5vZGUgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUNvbW1lbnROb2RlKHRva2VuLmRhdGEpO1xyXG5cclxuICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBjb21tZW50Tm9kZSk7XHJcbn07XHJcblxyXG5QYXJzZXIucHJvdG90eXBlLl9pbnNlcnRDaGFyYWN0ZXJzID0gZnVuY3Rpb24gKHRva2VuKSB7XHJcbiAgICBpZiAodGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKSlcclxuICAgICAgICB0aGlzLl9mb3N0ZXJQYXJlbnRUZXh0KHRva2VuLmNoYXJzKTtcclxuXHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50IHx8IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XHJcblxyXG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dChwYXJlbnQsIHRva2VuLmNoYXJzKTtcclxuICAgIH1cclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUuX2Fkb3B0Tm9kZXMgPSBmdW5jdGlvbiAoZG9ub3IsIHJlY2lwaWVudCkge1xyXG4gICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9ub3IpO1xyXG5cclxuICAgICAgICBpZiAoIWNoaWxkKVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGNoaWxkKTtcclxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHJlY2lwaWVudCwgY2hpbGQpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuLy9Ub2tlbiBwcm9jZXNzaW5nXHJcblBhcnNlci5wcm90b3R5cGUuX3Nob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQgPSBmdW5jdGlvbiAodG9rZW4pIHtcclxuICAgIHZhciBjdXJyZW50ID0gdGhpcy5fZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCgpO1xyXG5cclxuICAgIGlmICghY3VycmVudCB8fCBjdXJyZW50ID09PSB0aGlzLmRvY3VtZW50KVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICB2YXIgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KTtcclxuXHJcbiAgICBpZiAobnMgPT09IE5TLkhUTUwpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoY3VycmVudCkgPT09ICQuQU5OT1RBVElPTl9YTUwgJiYgbnMgPT09IE5TLk1BVEhNTCAmJlxyXG4gICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gJiYgdG9rZW4udGFnTmFtZSA9PT0gJC5TVkcpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHZhciBpc0NoYXJhY3RlclRva2VuID0gdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU4gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOLFxyXG4gICAgICAgIGlzTWF0aE1MVGV4dFN0YXJ0VGFnID0gdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTiAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udGFnTmFtZSAhPT0gJC5NR0xZUEggJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnRhZ05hbWUgIT09ICQuTUFMSUdOTUFSSztcclxuXHJcbiAgICBpZiAoKGlzTWF0aE1MVGV4dFN0YXJ0VGFnIHx8IGlzQ2hhcmFjdGVyVG9rZW4pICYmIHRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludChjdXJyZW50LCBOUy5NQVRITUwpKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gfHwgaXNDaGFyYWN0ZXJUb2tlbikgJiYgdGhpcy5faXNJbnRlZ3JhdGlvblBvaW50KGN1cnJlbnQsIE5TLkhUTUwpKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gdG9rZW4udHlwZSAhPT0gVG9rZW5pemVyLkVPRl9UT0tFTjtcclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUuX3Byb2Nlc3NUb2tlbiA9IGZ1bmN0aW9uICh0b2tlbikge1xyXG4gICAgX1t0aGlzLmluc2VydGlvbk1vZGVdW3Rva2VuLnR5cGVdKHRoaXMsIHRva2VuKTtcclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUuX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUgPSBmdW5jdGlvbiAodG9rZW4pIHtcclxuICAgIF9bSU5fQk9EWV9NT0RFXVt0b2tlbi50eXBlXSh0aGlzLCB0b2tlbik7XHJcbn07XHJcblxyXG5QYXJzZXIucHJvdG90eXBlLl9wcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50ID0gZnVuY3Rpb24gKHRva2VuKSB7XHJcbiAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTilcclxuICAgICAgICBjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcclxuXHJcbiAgICBlbHNlIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU4pXHJcbiAgICAgICAgbnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xyXG5cclxuICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTilcclxuICAgICAgICBpbnNlcnRDaGFyYWN0ZXJzKHRoaXMsIHRva2VuKTtcclxuXHJcbiAgICBlbHNlIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTilcclxuICAgICAgICBhcHBlbmRDb21tZW50KHRoaXMsIHRva2VuKTtcclxuXHJcbiAgICBlbHNlIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOKVxyXG4gICAgICAgIHN0YXJ0VGFnSW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XHJcblxyXG4gICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVORF9UQUdfVE9LRU4pXHJcbiAgICAgICAgZW5kVGFnSW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XHJcbn07XHJcblxyXG5QYXJzZXIucHJvdG90eXBlLl9wcm9jZXNzSW5wdXRUb2tlbiA9IGZ1bmN0aW9uICh0b2tlbikge1xyXG4gICAgaWYgKHRoaXMuX3Nob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQodG9rZW4pKVxyXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQodG9rZW4pO1xyXG5cclxuICAgIGVsc2VcclxuICAgICAgICB0aGlzLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG59O1xyXG5cclxuLy9JbnRlZ3JhdGlvbiBwb2ludHNcclxuUGFyc2VyLnByb3RvdHlwZS5faXNJbnRlZ3JhdGlvblBvaW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIGZvcmVpZ25OUykge1xyXG4gICAgdmFyIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpLFxyXG4gICAgICAgIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCksXHJcbiAgICAgICAgYXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KGVsZW1lbnQpO1xyXG5cclxuICAgIHJldHVybiBmb3JlaWduQ29udGVudC5pc0ludGVncmF0aW9uUG9pbnQodG4sIG5zLCBhdHRycywgZm9yZWlnbk5TKTtcclxufTtcclxuXHJcbi8vQWN0aXZlIGZvcm1hdHRpbmcgZWxlbWVudHMgcmVjb25zdHJ1Y3Rpb25cclxuUGFyc2VyLnByb3RvdHlwZS5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbGlzdExlbmd0aCA9IHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmxlbmd0aDtcclxuXHJcbiAgICBpZiAobGlzdExlbmd0aCkge1xyXG4gICAgICAgIHZhciB1bm9wZW5JZHggPSBsaXN0TGVuZ3RoLFxyXG4gICAgICAgICAgICBlbnRyeSA9IG51bGw7XHJcblxyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgdW5vcGVuSWR4LS07XHJcbiAgICAgICAgICAgIGVudHJ5ID0gdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZW50cmllc1t1bm9wZW5JZHhdO1xyXG5cclxuICAgICAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5NQVJLRVJfRU5UUlkgfHwgdGhpcy5vcGVuRWxlbWVudHMuY29udGFpbnMoZW50cnkuZWxlbWVudCkpIHtcclxuICAgICAgICAgICAgICAgIHVub3BlbklkeCsrO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IHdoaWxlICh1bm9wZW5JZHggPiAwKTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IHVub3BlbklkeDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBlbnRyeSA9IHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmVudHJpZXNbaV07XHJcbiAgICAgICAgICAgIHRoaXMuX2luc2VydEVsZW1lbnQoZW50cnkudG9rZW4sIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVudHJ5LmVsZW1lbnQpKTtcclxuICAgICAgICAgICAgZW50cnkuZWxlbWVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuLy9DbG9zZSBlbGVtZW50c1xyXG5QYXJzZXIucHJvdG90eXBlLl9jbG9zZVRhYmxlQ2VsbCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHRoaXMub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcclxuICAgIHRoaXMub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFibGVDZWxsUG9wcGVkKCk7XHJcbiAgICB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xyXG4gICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fUk9XX01PREU7XHJcbn07XHJcblxyXG5QYXJzZXIucHJvdG90eXBlLl9jbG9zZVBFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdGhpcy5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5QKTtcclxuICAgIHRoaXMub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlApO1xyXG59O1xyXG5cclxuLy9JbnNlcnRpb24gbW9kZXNcclxuUGFyc2VyLnByb3RvdHlwZS5fcmVzZXRJbnNlcnRpb25Nb2RlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgZm9yICh2YXIgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wLCBsYXN0ID0gZmFsc2U7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcclxuXHJcbiAgICAgICAgaWYgKGkgPT09IDApIHtcclxuICAgICAgICAgICAgbGFzdCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5mcmFnbWVudENvbnRleHQpXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gdGhpcy5mcmFnbWVudENvbnRleHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCksXHJcbiAgICAgICAgICAgIG5ld0luc2VydGlvbk1vZGUgPSBJTlNFUlRJT05fTU9ERV9SRVNFVF9NQVBbdG5dO1xyXG5cclxuICAgICAgICBpZiAobmV3SW5zZXJ0aW9uTW9kZSkge1xyXG4gICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBuZXdJbnNlcnRpb25Nb2RlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKCFsYXN0ICYmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCkpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fQ0VMTF9NT0RFO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKCFsYXN0ICYmIHRuID09PSAkLkhFQUQpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9NT0RFO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlNFTEVDVCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNldEluc2VydGlvbk1vZGVGb3JTZWxlY3QoaSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuSFRNTCkge1xyXG4gICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSB0aGlzLmhlYWRFbGVtZW50ID8gQUZURVJfSEVBRF9NT0RFIDogQkVGT1JFX0hFQURfTU9ERTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmIChsYXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuUGFyc2VyLnByb3RvdHlwZS5fcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0ID0gZnVuY3Rpb24gKHNlbGVjdElkeCkge1xyXG4gICAgaWYgKHNlbGVjdElkeCA+IDApIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gc2VsZWN0SWR4IC0gMTsgaSA+IDA7IGktLSkge1xyXG4gICAgICAgICAgICB2YXIgYW5jZXN0b3IgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXSxcclxuICAgICAgICAgICAgICAgIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGFuY2VzdG9yKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5URU1QTEFURSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuVEFCTEUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9JTl9UQUJMRV9NT0RFO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9NT0RFO1xyXG59O1xyXG5cclxuUGFyc2VyLnByb3RvdHlwZS5fcHVzaFRtcGxJbnNlcnRpb25Nb2RlID0gZnVuY3Rpb24gKG1vZGUpIHtcclxuICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFjay5wdXNoKG1vZGUpO1xyXG4gICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrVG9wKys7XHJcbiAgICB0aGlzLmN1cnJlbnRUbXBsSW5zZXJ0aW9uTW9kZSA9IG1vZGU7XHJcbn07XHJcblxyXG5QYXJzZXIucHJvdG90eXBlLl9wb3BUbXBsSW5zZXJ0aW9uTW9kZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFjay5wb3AoKTtcclxuICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFja1RvcC0tO1xyXG4gICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrVG9wXTtcclxufTtcclxuXHJcbi8vRm9zdGVyIHBhcmVudGluZ1xyXG5QYXJzZXIucHJvdG90eXBlLl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xyXG4gICAgdmFyIHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xyXG5cclxuICAgIHJldHVybiB0biA9PT0gJC5UQUJMRSB8fCB0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCB8fCB0biA9PT0gJC5UUjtcclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUuX3Nob3VsZEZvc3RlclBhcmVudE9uSW5zZXJ0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCAmJiB0aGlzLl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcodGhpcy5vcGVuRWxlbWVudHMuY3VycmVudCk7XHJcbn07XHJcblxyXG5QYXJzZXIucHJvdG90eXBlLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbG9jYXRpb24gPSB7XHJcbiAgICAgICAgcGFyZW50OiBudWxsLFxyXG4gICAgICAgIGJlZm9yZUVsZW1lbnQ6IG51bGxcclxuICAgIH07XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBvcGVuRWxlbWVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldLFxyXG4gICAgICAgICAgICB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShvcGVuRWxlbWVudCksXHJcbiAgICAgICAgICAgIG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkob3BlbkVsZW1lbnQpO1xyXG5cclxuICAgICAgICBpZiAodG4gPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUwpIHtcclxuICAgICAgICAgICAgbG9jYXRpb24ucGFyZW50ID0gdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQob3BlbkVsZW1lbnQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uLnBhcmVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0UGFyZW50Tm9kZShvcGVuRWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgICBpZiAobG9jYXRpb24ucGFyZW50KVxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb24uYmVmb3JlRWxlbWVudCA9IG9wZW5FbGVtZW50O1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBsb2NhdGlvbi5wYXJlbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpIC0gMV07XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFsb2NhdGlvbi5wYXJlbnQpXHJcbiAgICAgICAgbG9jYXRpb24ucGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuaXRlbXNbMF07XHJcblxyXG4gICAgcmV0dXJuIGxvY2F0aW9uO1xyXG59O1xyXG5cclxuUGFyc2VyLnByb3RvdHlwZS5fZm9zdGVyUGFyZW50RWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKTtcclxuXHJcbiAgICBpZiAobG9jYXRpb24uYmVmb3JlRWxlbWVudClcclxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydEJlZm9yZShsb2NhdGlvbi5wYXJlbnQsIGVsZW1lbnQsIGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpO1xyXG4gICAgZWxzZVxyXG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQobG9jYXRpb24ucGFyZW50LCBlbGVtZW50KTtcclxufTtcclxuXHJcblBhcnNlci5wcm90b3R5cGUuX2Zvc3RlclBhcmVudFRleHQgPSBmdW5jdGlvbiAoY2hhcnMpIHtcclxuICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpO1xyXG5cclxuICAgIGlmIChsb2NhdGlvbi5iZWZvcmVFbGVtZW50KVxyXG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dEJlZm9yZShsb2NhdGlvbi5wYXJlbnQsIGNoYXJzLCBsb2NhdGlvbi5iZWZvcmVFbGVtZW50KTtcclxuICAgIGVsc2VcclxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHQobG9jYXRpb24ucGFyZW50LCBjaGFycyk7XHJcbn07XHJcblxyXG4vL1NwZWNpYWwgZWxlbWVudHNcclxuUGFyc2VyLnByb3RvdHlwZS5faXNTcGVjaWFsRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICB2YXIgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCksXHJcbiAgICAgICAgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KTtcclxuXHJcbiAgICByZXR1cm4gSFRNTC5TUEVDSUFMX0VMRU1FTlRTW25zXVt0bl07XHJcbn07XHJcblxyXG4vL0Fkb3B0aW9uIGFnZW5jeSBhbGdvcml0aG1cclxuLy8oc2VlOiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5odG1sI2Fkb3B0aW9uQWdlbmN5KVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuLy9TdGVwcyA1LTggb2YgdGhlIGFsZ29yaXRobVxyXG5mdW5jdGlvbiBhYU9idGFpbkZvcm1hdHRpbmdFbGVtZW50RW50cnkocCwgdG9rZW4pIHtcclxuICAgIHZhciBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lKHRva2VuLnRhZ05hbWUpO1xyXG5cclxuICAgIGlmIChmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XHJcbiAgICAgICAgaWYgKCFwLm9wZW5FbGVtZW50cy5jb250YWlucyhmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpKSB7XHJcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xyXG4gICAgICAgICAgICBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKCFwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRva2VuLnRhZ05hbWUpKVxyXG4gICAgICAgICAgICBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlXHJcbiAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XHJcbn1cclxuXHJcbi8vU3RlcHMgOSBhbmQgMTAgb2YgdGhlIGFsZ29yaXRobVxyXG5mdW5jdGlvbiBhYU9idGFpbkZ1cnRoZXN0QmxvY2socCwgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSkge1xyXG4gICAgdmFyIGZ1cnRoZXN0QmxvY2sgPSBudWxsO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSBwLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICB2YXIgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xyXG5cclxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgaWYgKHAuX2lzU3BlY2lhbEVsZW1lbnQoZWxlbWVudCkpXHJcbiAgICAgICAgICAgIGZ1cnRoZXN0QmxvY2sgPSBlbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghZnVydGhlc3RCbG9jaykge1xyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsRWxlbWVudFBvcHBlZChmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xyXG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmdXJ0aGVzdEJsb2NrO1xyXG59XHJcblxyXG4vL1N0ZXAgMTMgb2YgdGhlIGFsZ29yaXRobVxyXG5mdW5jdGlvbiBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudCkge1xyXG4gICAgdmFyIGxhc3RFbGVtZW50ID0gZnVydGhlc3RCbG9jayxcclxuICAgICAgICBuZXh0RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZ1cnRoZXN0QmxvY2spO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwLCBlbGVtZW50ID0gbmV4dEVsZW1lbnQ7IGVsZW1lbnQgIT09IGZvcm1hdHRpbmdFbGVtZW50OyBpKyssIGVsZW1lbnQgPSBuZXh0RWxlbWVudCkge1xyXG4gICAgICAgIC8vTk9URTogc3RvcmUgbmV4dCBlbGVtZW50IGZvciB0aGUgbmV4dCBsb29wIGl0ZXJhdGlvbiAoaXQgbWF5IGJlIGRlbGV0ZWQgZnJvbSB0aGUgc3RhY2sgYnkgc3RlcCA5LjUpXHJcbiAgICAgICAgbmV4dEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5nZXRDb21tb25BbmNlc3RvcihlbGVtZW50KTtcclxuXHJcbiAgICAgICAgdmFyIGVsZW1lbnRFbnRyeSA9IHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmdldEVsZW1lbnRFbnRyeShlbGVtZW50KSxcclxuICAgICAgICAgICAgY291bnRlck92ZXJmbG93ID0gZWxlbWVudEVudHJ5ICYmIGkgPj0gQUFfSU5ORVJfTE9PUF9JVEVSLFxyXG4gICAgICAgICAgICBzaG91bGRSZW1vdmVGcm9tT3BlbkVsZW1lbnRzID0gIWVsZW1lbnRFbnRyeSB8fCBjb3VudGVyT3ZlcmZsb3c7XHJcblxyXG4gICAgICAgIGlmIChzaG91bGRSZW1vdmVGcm9tT3BlbkVsZW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGlmIChjb3VudGVyT3ZlcmZsb3cpXHJcbiAgICAgICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShlbGVtZW50RW50cnkpO1xyXG5cclxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQgPSBhYVJlY3JlYXRlRWxlbWVudEZyb21FbnRyeShwLCBlbGVtZW50RW50cnkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGxhc3RFbGVtZW50ID09PSBmdXJ0aGVzdEJsb2NrKVxyXG4gICAgICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuYm9va21hcmsgPSBlbGVtZW50RW50cnk7XHJcblxyXG4gICAgICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUobGFzdEVsZW1lbnQpO1xyXG4gICAgICAgICAgICBwLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGVsZW1lbnQsIGxhc3RFbGVtZW50KTtcclxuICAgICAgICAgICAgbGFzdEVsZW1lbnQgPSBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbGFzdEVsZW1lbnQ7XHJcbn1cclxuXHJcbi8vU3RlcCAxMy43IG9mIHRoZSBhbGdvcml0aG1cclxuZnVuY3Rpb24gYWFSZWNyZWF0ZUVsZW1lbnRGcm9tRW50cnkocCwgZWxlbWVudEVudHJ5KSB7XHJcbiAgICB2YXIgbnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50RW50cnkuZWxlbWVudCksXHJcbiAgICAgICAgbmV3RWxlbWVudCA9IHAudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudChlbGVtZW50RW50cnkudG9rZW4udGFnTmFtZSwgbnMsIGVsZW1lbnRFbnRyeS50b2tlbi5hdHRycyk7XHJcblxyXG4gICAgcC5vcGVuRWxlbWVudHMucmVwbGFjZShlbGVtZW50RW50cnkuZWxlbWVudCwgbmV3RWxlbWVudCk7XHJcbiAgICBlbGVtZW50RW50cnkuZWxlbWVudCA9IG5ld0VsZW1lbnQ7XHJcblxyXG4gICAgcmV0dXJuIG5ld0VsZW1lbnQ7XHJcbn1cclxuXHJcbi8vU3RlcCAxNCBvZiB0aGUgYWxnb3JpdGhtXHJcbmZ1bmN0aW9uIGFhSW5zZXJ0TGFzdE5vZGVJbkNvbW1vbkFuY2VzdG9yKHAsIGNvbW1vbkFuY2VzdG9yLCBsYXN0RWxlbWVudCkge1xyXG4gICAgaWYgKHAuX2lzRWxlbWVudENhdXNlc0Zvc3RlclBhcmVudGluZyhjb21tb25BbmNlc3RvcikpXHJcbiAgICAgICAgcC5fZm9zdGVyUGFyZW50RWxlbWVudChsYXN0RWxlbWVudCk7XHJcblxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIHRuID0gcC50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGNvbW1vbkFuY2VzdG9yKSxcclxuICAgICAgICAgICAgbnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjb21tb25BbmNlc3Rvcik7XHJcblxyXG4gICAgICAgIGlmICh0biA9PT0gJC5URU1QTEFURSAmJiBucyA9PT0gTlMuSFRNTClcclxuICAgICAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBwLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudChjb21tb25BbmNlc3Rvcik7XHJcblxyXG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KTtcclxuICAgIH1cclxufVxyXG5cclxuLy9TdGVwcyAxNS0xOSBvZiB0aGUgYWxnb3JpdGhtXHJcbmZ1bmN0aW9uIGFhUmVwbGFjZUZvcm1hdHRpbmdFbGVtZW50KHAsIGZ1cnRoZXN0QmxvY2ssIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcclxuICAgIHZhciBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCksXHJcbiAgICAgICAgdG9rZW4gPSBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LnRva2VuLFxyXG4gICAgICAgIG5ld0VsZW1lbnQgPSBwLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgbnMsIHRva2VuLmF0dHJzKTtcclxuXHJcbiAgICBwLl9hZG9wdE5vZGVzKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xyXG4gICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChmdXJ0aGVzdEJsb2NrLCBuZXdFbGVtZW50KTtcclxuXHJcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayhuZXdFbGVtZW50LCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LnRva2VuKTtcclxuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xyXG5cclxuICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xyXG4gICAgcC5vcGVuRWxlbWVudHMuaW5zZXJ0QWZ0ZXIoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCk7XHJcbn1cclxuXHJcbi8vQWxnb3JpdGhtIGVudHJ5IHBvaW50XHJcbmZ1bmN0aW9uIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbikge1xyXG4gICAgdmFyIGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBBQV9PVVRFUl9MT09QX0lURVI7IGkrKykge1xyXG4gICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBhYU9idGFpbkZvcm1hdHRpbmdFbGVtZW50RW50cnkocCwgdG9rZW4sIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xyXG5cclxuICAgICAgICBpZiAoIWZvcm1hdHRpbmdFbGVtZW50RW50cnkpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICB2YXIgZnVydGhlc3RCbG9jayA9IGFhT2J0YWluRnVydGhlc3RCbG9jayhwLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcclxuXHJcbiAgICAgICAgaWYgKCFmdXJ0aGVzdEJsb2NrKVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuYm9va21hcmsgPSBmb3JtYXR0aW5nRWxlbWVudEVudHJ5O1xyXG5cclxuICAgICAgICB2YXIgbGFzdEVsZW1lbnQgPSBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpLFxyXG4gICAgICAgICAgICBjb21tb25BbmNlc3RvciA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XHJcblxyXG4gICAgICAgIHAudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShsYXN0RWxlbWVudCk7XHJcbiAgICAgICAgYWFJbnNlcnRMYXN0Tm9kZUluQ29tbW9uQW5jZXN0b3IocCwgY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KTtcclxuICAgICAgICBhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbi8vR2VuZXJpYyB0b2tlbiBoYW5kbGVyc1xyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiBpZ25vcmVUb2tlbigpIHtcclxuICAgIC8vTk9URTogZG8gbm90aGluZyA9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBhcHBlbmRDb21tZW50KHAsIHRva2VuKSB7XHJcbiAgICBwLl9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcC5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50IHx8IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhcHBlbmRDb21tZW50VG9Sb290SHRtbEVsZW1lbnQocCwgdG9rZW4pIHtcclxuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5pdGVtc1swXSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb0RvY3VtZW50KHAsIHRva2VuKSB7XHJcbiAgICBwLl9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcC5kb2N1bWVudCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluc2VydENoYXJhY3RlcnMocCwgdG9rZW4pIHtcclxuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzdG9wUGFyc2luZyhwKSB7XHJcbiAgICBwLnN0b3BwZWQgPSB0cnVlO1xyXG59XHJcblxyXG4vLzEyLjIuNS40LjEgVGhlIFwiaW5pdGlhbFwiIGluc2VydGlvbiBtb2RlXHJcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbmZ1bmN0aW9uIGRvY3R5cGVJbkluaXRpYWxNb2RlKHAsIHRva2VuKSB7XHJcbiAgICBwLl9zZXREb2N1bWVudFR5cGUodG9rZW4pO1xyXG5cclxuICAgIGlmICh0b2tlbi5mb3JjZVF1aXJrcyB8fCBkb2N0eXBlLmlzUXVpcmtzKHRva2VuLm5hbWUsIHRva2VuLnB1YmxpY0lkLCB0b2tlbi5zeXN0ZW1JZCkpXHJcbiAgICAgICAgcC50cmVlQWRhcHRlci5zZXRRdWlya3NNb2RlKHAuZG9jdW1lbnQpO1xyXG5cclxuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IVE1MX01PREU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRva2VuSW5Jbml0aWFsTW9kZShwLCB0b2tlbikge1xyXG4gICAgcC50cmVlQWRhcHRlci5zZXRRdWlya3NNb2RlKHAuZG9jdW1lbnQpO1xyXG4gICAgcC5pbnNlcnRpb25Nb2RlID0gQkVGT1JFX0hUTUxfTU9ERTtcclxuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbn1cclxuXHJcblxyXG4vLzEyLjIuNS40LjIgVGhlIFwiYmVmb3JlIGh0bWxcIiBpbnNlcnRpb24gbW9kZVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiBzdGFydFRhZ0JlZm9yZUh0bWwocCwgdG9rZW4pIHtcclxuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwpIHtcclxuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBCRUZPUkVfSEVBRF9NT0RFO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2VcclxuICAgICAgICB0b2tlbkJlZm9yZUh0bWwocCwgdG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmRUYWdCZWZvcmVIdG1sKHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5IVE1MIHx8IHRuID09PSAkLkhFQUQgfHwgdG4gPT09ICQuQk9EWSB8fCB0biA9PT0gJC5CUilcclxuICAgICAgICB0b2tlbkJlZm9yZUh0bWwocCwgdG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b2tlbkJlZm9yZUh0bWwocCwgdG9rZW4pIHtcclxuICAgIHAuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xyXG4gICAgcC5pbnNlcnRpb25Nb2RlID0gQkVGT1JFX0hFQURfTU9ERTtcclxuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbn1cclxuXHJcblxyXG4vLzEyLjIuNS40LjMgVGhlIFwiYmVmb3JlIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiBzdGFydFRhZ0JlZm9yZUhlYWQocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgaWYgKHRuID09PSAkLkhUTUwpXHJcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgIGVsc2UgaWYgKHRuID09PSAkLkhFQUQpIHtcclxuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxuICAgICAgICBwLmhlYWRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcclxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9IRUFEX01PREU7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICAgIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVuZFRhZ0JlZm9yZUhlYWQocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgaWYgKHRuID09PSAkLkhFQUQgfHwgdG4gPT09ICQuQk9EWSB8fCB0biA9PT0gJC5IVE1MIHx8IHRuID09PSAkLkJSKVxyXG4gICAgICAgIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbikge1xyXG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5IRUFEKTtcclxuICAgIHAuaGVhZEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xyXG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9NT0RFO1xyXG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcclxufVxyXG5cclxuXHJcbi8vMTIuMi41LjQuNCBUaGUgXCJpbiBoZWFkXCIgaW5zZXJ0aW9uIG1vZGVcclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuZnVuY3Rpb24gc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgaWYgKHRuID09PSAkLkhUTUwpXHJcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgIGVsc2UgaWYgKHRuID09PSAkLkJBU0UgfHwgdG4gPT09ICQuQkFTRUZPTlQgfHwgdG4gPT09ICQuQkdTT1VORCB8fCB0biA9PT0gJC5MSU5LIHx8IHRuID09PSAkLk1FVEEpXHJcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVElUTEUpXHJcbiAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkNEQVRBKTtcclxuXHJcbiAgICAvL05PVEU6IGhlcmUgd2UgYXNzdW1lIHRoYXQgd2UgYWx3YXlzIGFjdCBhcyBhbiBpbnRlcmFjdGl2ZSB1c2VyIGFnZW50IHdpdGggZW5hYmxlZCBzY3JpcHRpbmcsIHNvIHdlIHBhcnNlXHJcbiAgICAvLzxub3NjcmlwdD4gYXMgYSByYXd0ZXh0LlxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuTk9TQ1JJUFQgfHwgdG4gPT09ICQuTk9GUkFNRVMgfHwgdG4gPT09ICQuU1RZTEUpXHJcbiAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkFXVEVYVCk7XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuU0NSSVBUKVxyXG4gICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlNDUklQVF9EQVRBKTtcclxuXHJcbiAgICBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xyXG4gICAgICAgIHAuX2luc2VydFRlbXBsYXRlKHRva2VuLCBOUy5IVE1MKTtcclxuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcclxuICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcclxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9URU1QTEFURV9NT0RFO1xyXG4gICAgICAgIHAuX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZShJTl9URU1QTEFURV9NT0RFKTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICh0biAhPT0gJC5IRUFEKVxyXG4gICAgICAgIHRva2VuSW5IZWFkKHAsIHRva2VuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZW5kVGFnSW5IZWFkKHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5IRUFEKSB7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XHJcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfSEVBRF9NT0RFO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuQlIgfHwgdG4gPT09ICQuSFRNTClcclxuICAgICAgICB0b2tlbkluSGVhZChwLCB0b2tlbik7XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUgJiYgcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMCkge1xyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5URU1QTEFURSk7XHJcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcclxuICAgICAgICBwLl9wb3BUbXBsSW5zZXJ0aW9uTW9kZSgpO1xyXG4gICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b2tlbkluSGVhZChwLCB0b2tlbikge1xyXG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBBRlRFUl9IRUFEX01PREU7XHJcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG59XHJcblxyXG5cclxuLy8xMi4yLjUuNC42IFRoZSBcImFmdGVyIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVySGVhZChwLCB0b2tlbikge1xyXG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcclxuXHJcbiAgICBpZiAodG4gPT09ICQuSFRNTClcclxuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuQk9EWSkge1xyXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xyXG4gICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xyXG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICh0biA9PT0gJC5GUkFNRVNFVCkge1xyXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xyXG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0ZSQU1FU0VUX01PREU7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuQkFTRSB8fCB0biA9PT0gJC5CQVNFRk9OVCB8fCB0biA9PT0gJC5CR1NPVU5EIHx8IHRuID09PSAkLkxJTksgfHwgdG4gPT09ICQuTUVUQSB8fFxyXG4gICAgICAgICAgICAgdG4gPT09ICQuTk9GUkFNRVMgfHwgdG4gPT09ICQuU0NSSVBUIHx8IHRuID09PSAkLlNUWUxFIHx8IHRuID09PSAkLlRFTVBMQVRFIHx8IHRuID09PSAkLlRJVExFKSB7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucHVzaChwLmhlYWRFbGVtZW50KTtcclxuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKHAuaGVhZEVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHRuICE9PSAkLkhFQUQpXHJcbiAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmRUYWdBZnRlckhlYWQocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgaWYgKHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuSFRNTCB8fCB0biA9PT0gJC5CUilcclxuICAgICAgICB0b2tlbkFmdGVySGVhZChwLCB0b2tlbik7XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpXHJcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pIHtcclxuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuQk9EWSk7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XHJcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG59XHJcblxyXG5cclxuLy8xMi4yLjUuNC43IFRoZSBcImluIGJvZHlcIiBpbnNlcnRpb24gbW9kZVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xyXG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoYXJhY3RlckluQm9keShwLCB0b2tlbikge1xyXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcclxuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xyXG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGh0bWxTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA9PT0gMClcclxuICAgICAgICBwLnRyZWVBZGFwdGVyLmFkb3B0QXR0cmlidXRlcyhwLm9wZW5FbGVtZW50cy5pdGVtc1swXSwgdG9rZW4uYXR0cnMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBib2R5U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIHZhciBib2R5RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLnRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50KCk7XHJcblxyXG4gICAgaWYgKGJvZHlFbGVtZW50ICYmIHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA9PT0gMCkge1xyXG4gICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xyXG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYWRvcHRBdHRyaWJ1dGVzKGJvZHlFbGVtZW50LCB0b2tlbi5hdHRycyk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZyYW1lc2V0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIHZhciBib2R5RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLnRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50KCk7XHJcblxyXG4gICAgaWYgKHAuZnJhbWVzZXRPayAmJiBib2R5RWxlbWVudCkge1xyXG4gICAgICAgIHAudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShib2R5RWxlbWVudCk7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wQWxsVXBUb0h0bWxFbGVtZW50KCk7XHJcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fRlJBTUVTRVRfTU9ERTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKVxyXG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcclxuXHJcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxufVxyXG5cclxuZnVuY3Rpb24gbnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSlcclxuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XHJcblxyXG4gICAgdmFyIHRuID0gcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWU7XHJcblxyXG4gICAgaWYgKHRuID09PSAkLkgxIHx8IHRuID09PSAkLkgyIHx8IHRuID09PSAkLkgzIHx8IHRuID09PSAkLkg0IHx8IHRuID09PSAkLkg1IHx8IHRuID09PSAkLkg2KVxyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xyXG5cclxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcmVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSlcclxuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XHJcblxyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICAvL05PVEU6IElmIHRoZSBuZXh0IHRva2VuIGlzIGEgVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlciB0b2tlbiwgdGhlbiBpZ25vcmUgdGhhdCB0b2tlbiBhbmQgbW92ZVxyXG4gICAgLy9vbiB0byB0aGUgbmV4dCBvbmUuIChOZXdsaW5lcyBhdCB0aGUgc3RhcnQgb2YgcHJlIGJsb2NrcyBhcmUgaWdub3JlZCBhcyBhbiBhdXRob3JpbmcgY29udmVuaWVuY2UuKVxyXG4gICAgcC5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xyXG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZvcm1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgdmFyIGluVGVtcGxhdGUgPSBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwO1xyXG5cclxuICAgIGlmICghcC5mb3JtRWxlbWVudCB8fCBpblRlbXBsYXRlKSB7XHJcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSlcclxuICAgICAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xyXG5cclxuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxuXHJcbiAgICAgICAgaWYgKCFpblRlbXBsYXRlKVxyXG4gICAgICAgICAgICBwLmZvcm1FbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gbGlzdEl0ZW1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XHJcblxyXG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpXSxcclxuICAgICAgICAgICAgZWxlbWVudFRuID0gcC50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpLFxyXG4gICAgICAgICAgICBjbG9zZVRuID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHRuID09PSAkLkxJICYmIGVsZW1lbnRUbiA9PT0gJC5MSSlcclxuICAgICAgICAgICAgY2xvc2VUbiA9ICQuTEk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKCh0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCkgJiYgKGVsZW1lbnRUbiA9PT0gJC5ERCB8fCBlbGVtZW50VG4gPT09ICQuRFQpKVxyXG4gICAgICAgICAgICBjbG9zZVRuID0gZWxlbWVudFRuO1xyXG5cclxuICAgICAgICBpZiAoY2xvc2VUbikge1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihjbG9zZVRuKTtcclxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKGNsb3NlVG4pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlbGVtZW50VG4gIT09ICQuQUREUkVTUyAmJiBlbGVtZW50VG4gIT09ICQuRElWICYmIGVsZW1lbnRUbiAhPT0gJC5QICYmIHAuX2lzU3BlY2lhbEVsZW1lbnQoZWxlbWVudCkpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpXHJcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xyXG5cclxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwbGFpbnRleHRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSlcclxuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XHJcblxyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICBwLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlBMQUlOVEVYVDtcclxufVxyXG5cclxuZnVuY3Rpb24gYnV0dG9uU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQlVUVE9OKSkge1xyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5CVVRUT04pO1xyXG4gICAgfVxyXG5cclxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XHJcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIHZhciBhY3RpdmVFbGVtZW50RW50cnkgPSBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5nZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUoJC5BKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlRWxlbWVudEVudHJ5KSB7XHJcbiAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoYWN0aXZlRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xyXG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGFjdGl2ZUVsZW1lbnRFbnRyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcclxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xyXG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XHJcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnB1c2hFbGVtZW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQsIHRva2VuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gbm9iclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xyXG5cclxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuTk9CUikpIHtcclxuICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xyXG4gICAgICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5wdXNoRWxlbWVudChwLm9wZW5FbGVtZW50cy5jdXJyZW50LCB0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFwcGxldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcclxuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0YWJsZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBpZiAoIXAudHJlZUFkYXB0ZXIuaXNRdWlya3NNb2RlKHAuZG9jdW1lbnQpICYmIHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSlcclxuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XHJcblxyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcclxuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcclxuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xyXG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlucHV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XHJcbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxuXHJcbiAgICB2YXIgaW5wdXRUeXBlID0gVG9rZW5pemVyLmdldFRva2VuQXR0cih0b2tlbiwgQVRUUlMuVFlQRSk7XHJcblxyXG4gICAgaWYgKCFpbnB1dFR5cGUgfHwgaW5wdXRUeXBlLnRvTG93ZXJDYXNlKCkgIT09IEhJRERFTl9JTlBVVF9UWVBFKVxyXG4gICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gcGFyYW1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpXHJcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xyXG5cclxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5NRU5VSVRFTSlcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcclxuXHJcbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpbWFnZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICB0b2tlbi50YWdOYW1lID0gJC5JTUc7XHJcbiAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxuICAgIC8vTk9URTogSWYgdGhlIG5leHQgdG9rZW4gaXMgYSBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyIHRva2VuLCB0aGVuIGlnbm9yZSB0aGF0IHRva2VuIGFuZCBtb3ZlXHJcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiB0ZXh0YXJlYSBlbGVtZW50cyBhcmUgaWdub3JlZCBhcyBhbiBhdXRob3JpbmcgY29udmVuaWVuY2UuKVxyXG4gICAgcC5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xyXG4gICAgcC50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5SQ0RBVEE7XHJcbiAgICBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHAuaW5zZXJ0aW9uTW9kZTtcclxuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xyXG4gICAgcC5pbnNlcnRpb25Nb2RlID0gVEVYVF9NT0RFO1xyXG59XHJcblxyXG5mdW5jdGlvbiB4bXBTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSlcclxuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XHJcblxyXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcclxuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xyXG4gICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkFXVEVYVCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlmcmFtZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcclxuICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlJBV1RFWFQpO1xyXG59XHJcblxyXG4vL05PVEU6IGhlcmUgd2UgYXNzdW1lIHRoYXQgd2UgYWx3YXlzIGFjdCBhcyBhbiB1c2VyIGFnZW50IHdpdGggZW5hYmxlZCBwbHVnaW5zLCBzbyB3ZSBwYXJzZVxyXG4vLzxub2VtYmVkPiBhcyBhIHJhd3RleHQuXHJcbmZ1bmN0aW9uIG5vZW1iZWRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkFXVEVYVCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNlbGVjdFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAocC5pbnNlcnRpb25Nb2RlID09PSBJTl9UQUJMRV9NT0RFIHx8XHJcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID09PSBJTl9DQVBUSU9OX01PREUgfHxcclxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX1RBQkxFX0JPRFlfTU9ERSB8fFxyXG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fUk9XX01PREUgfHxcclxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX0NFTExfTU9ERSlcclxuXHJcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fU0VMRUNUX0lOX1RBQkxFX01PREU7XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9NT0RFO1xyXG59XHJcblxyXG5mdW5jdGlvbiBvcHRncm91cFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUSU9OKVxyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xyXG5cclxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XHJcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5SVUJZKSlcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XHJcblxyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJ0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuUlVCWSkpXHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5SVEMpO1xyXG5cclxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZW51aXRlbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuTUVOVUlURU0pXHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XHJcblxyXG4gICAgLy8gVE9ETyBuZWVkcyBjbGFyaWZpY2F0aW9uLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL3B1bGwvOTA3L2ZpbGVzI3I3MzUwNTg3N1xyXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcclxuXHJcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWVudVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKVxyXG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcclxuXHJcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuTUVOVUlURU0pXHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XHJcblxyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1hdGhTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcclxuXHJcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlbk1hdGhNTEF0dHJzKHRva2VuKTtcclxuICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuWE1MQXR0cnModG9rZW4pO1xyXG5cclxuICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZylcclxuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5NQVRITUwpO1xyXG4gICAgZWxzZVxyXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLk1BVEhNTCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xyXG5cclxuICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuU1ZHQXR0cnModG9rZW4pO1xyXG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XHJcblxyXG4gICAgaWYgKHRva2VuLnNlbGZDbG9zaW5nKVxyXG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLlNWRyk7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuU1ZHKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbn1cclxuXHJcbi8vT1BUSU1JWkFUSU9OOiBJbnRlZ2VyIGNvbXBhcmlzb25zIGFyZSBsb3ctY29zdCwgc28gd2UgY2FuIHVzZSB2ZXJ5IGZhc3QgdGFnIG5hbWUgbGVuZ3RoIGZpbHRlcnMgaGVyZS5cclxuLy9JdCdzIGZhc3RlciB0aGFuIHVzaW5nIGRpY3Rpb25hcnkuXHJcbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuSSB8fCB0biA9PT0gJC5TIHx8IHRuID09PSAkLkIgfHwgdG4gPT09ICQuVSlcclxuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5QKVxyXG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkEpXHJcbiAgICAgICAgICAgICAgICBhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5ETCB8fCB0biA9PT0gJC5PTCB8fCB0biA9PT0gJC5VTClcclxuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INilcclxuICAgICAgICAgICAgICAgIG51bWJlcmVkSGVhZGVyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuTEkgfHwgdG4gPT09ICQuREQgfHwgdG4gPT09ICQuRFQpXHJcbiAgICAgICAgICAgICAgICBsaXN0SXRlbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkVNIHx8IHRuID09PSAkLlRUKVxyXG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkJSKVxyXG4gICAgICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkhSKVxyXG4gICAgICAgICAgICAgICAgaHJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5SQilcclxuICAgICAgICAgICAgICAgIHJiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuUlQgfHwgdG4gPT09ICQuUlApXHJcbiAgICAgICAgICAgICAgICBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuICE9PSAkLlRIICYmIHRuICE9PSAkLlREICYmIHRuICE9PSAkLlRSKVxyXG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5ESVYgfHwgdG4gPT09ICQuRElSIHx8IHRuID09PSAkLk5BVilcclxuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5QUkUpXHJcbiAgICAgICAgICAgICAgICBwcmVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5CSUcpXHJcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuSU1HIHx8IHRuID09PSAkLldCUilcclxuICAgICAgICAgICAgICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5YTVApXHJcbiAgICAgICAgICAgICAgICB4bXBTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5TVkcpXHJcbiAgICAgICAgICAgICAgICBzdmdTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5SVEMpXHJcbiAgICAgICAgICAgICAgICByYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuICE9PSAkLkNPTClcclxuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuSFRNTClcclxuICAgICAgICAgICAgICAgIGh0bWxTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5CQVNFIHx8IHRuID09PSAkLkxJTksgfHwgdG4gPT09ICQuTUVUQSlcclxuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkJPRFkpXHJcbiAgICAgICAgICAgICAgICBib2R5U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuTUFJTilcclxuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5GT1JNKVxyXG4gICAgICAgICAgICAgICAgZm9ybVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkNPREUgfHwgdG4gPT09ICQuRk9OVClcclxuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5OT0JSKVxyXG4gICAgICAgICAgICAgICAgbm9iclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkFSRUEpXHJcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuTUFUSClcclxuICAgICAgICAgICAgICAgIG1hdGhTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5NRU5VKVxyXG4gICAgICAgICAgICAgICAgbWVudVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuICE9PSAkLkhFQUQpXHJcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgNTpcclxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlNUWUxFIHx8IHRuID09PSAkLlRJVExFKVxyXG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuQVNJREUpXHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuU01BTEwpXHJcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuVEFCTEUpXHJcbiAgICAgICAgICAgICAgICB0YWJsZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkVNQkVEKVxyXG4gICAgICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLklOUFVUKVxyXG4gICAgICAgICAgICAgICAgaW5wdXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5QQVJBTSB8fCB0biA9PT0gJC5UUkFDSylcclxuICAgICAgICAgICAgICAgIHBhcmFtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuSU1BR0UpXHJcbiAgICAgICAgICAgICAgICBpbWFnZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuICE9PSAkLkZSQU1FICYmIHRuICE9PSAkLlRCT0RZICYmIHRuICE9PSAkLlRGT09UICYmIHRuICE9PSAkLlRIRUFEKVxyXG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5TQ1JJUFQpXHJcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5DRU5URVIgfHwgdG4gPT09ICQuRklHVVJFIHx8IHRuID09PSAkLkZPT1RFUiB8fCB0biA9PT0gJC5IRUFERVIgfHwgdG4gPT09ICQuSEdST1VQKVxyXG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkJVVFRPTilcclxuICAgICAgICAgICAgICAgIGJ1dHRvblN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlNUUklLRSB8fCB0biA9PT0gJC5TVFJPTkcpXHJcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuQVBQTEVUIHx8IHRuID09PSAkLk9CSkVDVClcclxuICAgICAgICAgICAgICAgIGFwcGxldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLktFWUdFTilcclxuICAgICAgICAgICAgICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5TT1VSQ0UpXHJcbiAgICAgICAgICAgICAgICBwYXJhbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLklGUkFNRSlcclxuICAgICAgICAgICAgICAgIGlmcmFtZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlNFTEVDVClcclxuICAgICAgICAgICAgICAgIHNlbGVjdFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLk9QVElPTilcclxuICAgICAgICAgICAgICAgIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDc6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5CR1NPVU5EKVxyXG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuREVUQUlMUyB8fCB0biA9PT0gJC5BRERSRVNTIHx8IHRuID09PSAkLkFSVElDTEUgfHwgdG4gPT09ICQuU0VDVElPTiB8fCB0biA9PT0gJC5TVU1NQVJZKVxyXG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkxJU1RJTkcpXHJcbiAgICAgICAgICAgICAgICBwcmVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5NQVJRVUVFKVxyXG4gICAgICAgICAgICAgICAgYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuTk9FTUJFRClcclxuICAgICAgICAgICAgICAgIG5vZW1iZWRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biAhPT0gJC5DQVBUSU9OKVxyXG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDg6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5CQVNFRk9OVClcclxuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLk1FTlVJVEVNKVxyXG4gICAgICAgICAgICAgICAgbWVudWl0ZW1TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5GUkFNRVNFVClcclxuICAgICAgICAgICAgICAgIGZyYW1lc2V0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuRklFTERTRVQpXHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuVEVYVEFSRUEpXHJcbiAgICAgICAgICAgICAgICB0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKVxyXG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuTk9TQ1JJUFQpXHJcbiAgICAgICAgICAgICAgICBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuT1BUR1JPVVApXHJcbiAgICAgICAgICAgICAgICBvcHRncm91cFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuICE9PSAkLkNPTEdST1VQKVxyXG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDk6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5QTEFJTlRFWFQpXHJcbiAgICAgICAgICAgICAgICBwbGFpbnRleHRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgMTA6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5CTE9DS1FVT1RFIHx8IHRuID09PSAkLkZJR0NBUFRJT04pXHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBib2R5RW5kVGFnSW5Cb2R5KHApIHtcclxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQk9EWSkpXHJcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfQk9EWV9NT0RFO1xyXG59XHJcblxyXG5mdW5jdGlvbiBodG1sRW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSB7XHJcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfQk9EWV9NT0RFO1xyXG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG4pKSB7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCh0bik7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZvcm1FbmRUYWdJbkJvZHkocCkge1xyXG4gICAgdmFyIGluVGVtcGxhdGUgPSBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwLFxyXG4gICAgICAgIGZvcm1FbGVtZW50ID0gcC5mb3JtRWxlbWVudDtcclxuXHJcbiAgICBpZiAoIWluVGVtcGxhdGUpXHJcbiAgICAgICAgcC5mb3JtRWxlbWVudCA9IG51bGw7XHJcblxyXG4gICAgaWYgKChmb3JtRWxlbWVudCB8fCBpblRlbXBsYXRlKSAmJiBwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuRk9STSkpIHtcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XHJcblxyXG4gICAgICAgIGlmIChpblRlbXBsYXRlKVxyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5GT1JNKTtcclxuXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoZm9ybUVsZW1lbnQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBwRW5kVGFnSW5Cb2R5KHApIHtcclxuICAgIGlmICghcC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKVxyXG4gICAgICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuUCk7XHJcblxyXG4gICAgcC5fY2xvc2VQRWxlbWVudCgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBsaUVuZFRhZ0luQm9keShwKSB7XHJcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5MaXN0SXRlbVNjb3BlKCQuTEkpKSB7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5MSSk7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuTEkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkZEVuZFRhZ0luQm9keShwLCB0b2tlbikge1xyXG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcclxuXHJcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbih0bik7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gbnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkocCkge1xyXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc051bWJlcmVkSGVhZGVySW5TY29wZSgpKSB7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsTnVtYmVyZWRIZWFkZXJQb3BwZWQoKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gYXBwbGV0RW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRuKSkge1xyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xyXG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGJyRW5kVGFnSW5Cb2R5KHApIHtcclxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XHJcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLkJSKTtcclxuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xyXG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XHJcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcclxuXHJcbiAgICAgICAgaWYgKHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gdG4pIHtcclxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24odG4pO1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbEVsZW1lbnRQb3BwZWQoZWxlbWVudCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHAuX2lzU3BlY2lhbEVsZW1lbnQoZWxlbWVudCkpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG59XHJcblxyXG4vL09QVElNSVpBVElPTjogSW50ZWdlciBjb21wYXJpc29ucyBhcmUgbG93LWNvc3QsIHNvIHdlIGNhbiB1c2UgdmVyeSBmYXN0IHRhZyBuYW1lIGxlbmd0aCBmaWx0ZXJzIGhlcmUuXHJcbi8vSXQncyBmYXN0ZXIgdGhhbiB1c2luZyBkaWN0aW9uYXJ5LlxyXG5mdW5jdGlvbiBlbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgc3dpdGNoICh0bi5sZW5ndGgpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5BIHx8IHRuID09PSAkLkIgfHwgdG4gPT09ICQuSSB8fCB0biA9PT0gJC5TIHx8IHRuID09PSAkLlUpXHJcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuUClcclxuICAgICAgICAgICAgICAgIHBFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuREwgfHwgdG4gPT09ICQuVUwgfHwgdG4gPT09ICQuT0wpXHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkxJKVxyXG4gICAgICAgICAgICAgICAgbGlFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuREQgfHwgdG4gPT09ICQuRFQpXHJcbiAgICAgICAgICAgICAgICBkZEVuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INilcclxuICAgICAgICAgICAgICAgIG51bWJlcmVkSGVhZGVyRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkJSKVxyXG4gICAgICAgICAgICAgICAgYnJFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuRU0gfHwgdG4gPT09ICQuVFQpXHJcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQklHKVxyXG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLkRJUiB8fCB0biA9PT0gJC5ESVYgfHwgdG4gPT09ICQuTkFWKVxyXG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5CT0RZKVxyXG4gICAgICAgICAgICAgICAgYm9keUVuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5IVE1MKVxyXG4gICAgICAgICAgICAgICAgaHRtbEVuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5GT1JNKVxyXG4gICAgICAgICAgICAgICAgZm9ybUVuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5DT0RFIHx8IHRuID09PSAkLkZPTlQgfHwgdG4gPT09ICQuTk9CUilcclxuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5NQUlOIHx8IHRuID09PSAkLk1FTlUpXHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgNTpcclxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkFTSURFKVxyXG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5TTUFMTClcclxuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DRU5URVIgfHwgdG4gPT09ICQuRklHVVJFIHx8IHRuID09PSAkLkZPT1RFUiB8fCB0biA9PT0gJC5IRUFERVIgfHwgdG4gPT09ICQuSEdST1VQKVxyXG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5BUFBMRVQgfHwgdG4gPT09ICQuT0JKRUNUKVxyXG4gICAgICAgICAgICAgICAgYXBwbGV0RW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLlNUUklLRSB8fCB0biA9PT0gJC5TVFJPTkcpXHJcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSA3OlxyXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQUREUkVTUyB8fCB0biA9PT0gJC5BUlRJQ0xFIHx8IHRuID09PSAkLkRFVEFJTFMgfHwgdG4gPT09ICQuU0VDVElPTiB8fCB0biA9PT0gJC5TVU1NQVJZKVxyXG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5NQVJRVUVFKVxyXG4gICAgICAgICAgICAgICAgYXBwbGV0RW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgODpcclxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkZJRUxEU0VUKVxyXG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSlcclxuICAgICAgICAgICAgICAgIGVuZFRhZ0luSGVhZChwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDEwOlxyXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkxPQ0tRVU9URSB8fCB0biA9PT0gJC5GSUdDQVBUSU9OKVxyXG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0IDpcclxuICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVvZkluQm9keShwLCB0b2tlbikge1xyXG4gICAgaWYgKHAudG1wbEluc2VydGlvbk1vZGVTdGFja1RvcCA+IC0xKVxyXG4gICAgICAgIGVvZkluVGVtcGxhdGUocCwgdG9rZW4pO1xyXG5cclxuICAgIGVsc2VcclxuICAgICAgICBwLnN0b3BwZWQgPSB0cnVlO1xyXG59XHJcblxyXG4vLzEyLjIuNS40LjggVGhlIFwidGV4dFwiIGluc2VydGlvbiBtb2RlXHJcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbmZ1bmN0aW9uIGVuZFRhZ0luVGV4dChwLCB0b2tlbikge1xyXG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuU0NSSVBUKVxyXG4gICAgICAgIHAucGVuZGluZ1NjcmlwdCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XHJcblxyXG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZTtcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGVvZkluVGV4dChwLCB0b2tlbikge1xyXG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZTtcclxuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbn1cclxuXHJcblxyXG4vLzEyLjIuNS40LjkgVGhlIFwiaW4gdGFibGVcIiBpbnNlcnRpb24gbW9kZVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiBjaGFyYWN0ZXJJblRhYmxlKHAsIHRva2VuKSB7XHJcbiAgICB2YXIgY3VyVG4gPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZTtcclxuXHJcbiAgICBpZiAoY3VyVG4gPT09ICQuVEFCTEUgfHwgY3VyVG4gPT09ICQuVEJPRFkgfHwgY3VyVG4gPT09ICQuVEZPT1QgfHwgY3VyVG4gPT09ICQuVEhFQUQgfHwgY3VyVG4gPT09ICQuVFIpIHtcclxuICAgICAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMgPSBbXTtcclxuICAgICAgICBwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4gPSBmYWxzZTtcclxuICAgICAgICBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHAuaW5zZXJ0aW9uTW9kZTtcclxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9URVhUX01PREU7XHJcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlXHJcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FwdGlvblN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xyXG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcclxuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9DQVBUSU9OX01PREU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvbGdyb3VwU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XHJcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9DT0xVTU5fR1JPVVBfTU9ERTtcclxufVxyXG5cclxuZnVuY3Rpb24gY29sU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XHJcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xyXG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5DT0xHUk9VUCk7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9DT0xVTU5fR1JPVVBfTU9ERTtcclxuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRib2R5U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XHJcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xyXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRkU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XHJcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xyXG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5UQk9EWSk7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XHJcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xyXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRBQkxFKSkge1xyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRBQkxFKTtcclxuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcclxuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xyXG4gICAgdmFyIGlucHV0VHlwZSA9IFRva2VuaXplci5nZXRUb2tlbkF0dHIodG9rZW4sIEFUVFJTLlRZUEUpO1xyXG5cclxuICAgIGlmIChpbnB1dFR5cGUgJiYgaW5wdXRUeXBlLnRvTG93ZXJDYXNlKCkgPT09IEhJRERFTl9JTlBVVF9UWVBFKVxyXG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xyXG5cclxuICAgIGVsc2VcclxuICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmb3JtU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XHJcbiAgICBpZiAoIXAuZm9ybUVsZW1lbnQgJiYgcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID09PSAwKSB7XHJcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICAgICAgcC5mb3JtRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xyXG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcclxuXHJcbiAgICBzd2l0Y2ggKHRuLmxlbmd0aCkge1xyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlREIHx8IHRuID09PSAkLlRIIHx8IHRuID09PSAkLlRSKVxyXG4gICAgICAgICAgICAgICAgdGRTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DT0wpXHJcbiAgICAgICAgICAgICAgICBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5GT1JNKVxyXG4gICAgICAgICAgICAgICAgZm9ybVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgNTpcclxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFKVxyXG4gICAgICAgICAgICAgICAgdGFibGVTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuU1RZTEUpXHJcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRClcclxuICAgICAgICAgICAgICAgIHRib2R5U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSAkLklOUFVUKVxyXG4gICAgICAgICAgICAgICAgaW5wdXRTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5TQ1JJUFQpXHJcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgNzpcclxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkNBUFRJT04pXHJcbiAgICAgICAgICAgICAgICBjYXB0aW9uU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSA4OlxyXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQ09MR1JPVVApXHJcbiAgICAgICAgICAgICAgICBjb2xncm91cFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSlcclxuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcclxuICAgIH1cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgaWYgKHRuID09PSAkLlRBQkxFKSB7XHJcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRBQkxFKSkge1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5UQUJMRSk7XHJcbiAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSlcclxuICAgICAgICBlbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xyXG5cclxuICAgIGVsc2UgaWYgKHRuICE9PSAkLkJPRFkgJiYgdG4gIT09ICQuQ0FQVElPTiAmJiB0biAhPT0gJC5DT0wgJiYgdG4gIT09ICQuQ09MR1JPVVAgJiYgdG4gIT09ICQuSFRNTCAmJlxyXG4gICAgICAgICAgICAgdG4gIT09ICQuVEJPRFkgJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVEZPT1QgJiYgdG4gIT09ICQuVEggJiYgdG4gIT09ICQuVEhFQUQgJiYgdG4gIT09ICQuVFIpXHJcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9rZW5JblRhYmxlKHAsIHRva2VuKSB7XHJcbiAgICB2YXIgc2F2ZWRGb3N0ZXJQYXJlbnRpbmdTdGF0ZSA9IHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZDtcclxuXHJcbiAgICBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSB0cnVlO1xyXG4gICAgcC5fcHJvY2Vzc1Rva2VuSW5Cb2R5TW9kZSh0b2tlbik7XHJcbiAgICBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSBzYXZlZEZvc3RlclBhcmVudGluZ1N0YXRlO1xyXG59XHJcblxyXG5cclxuLy8xMi4yLjUuNC4xMCBUaGUgXCJpbiB0YWJsZSB0ZXh0XCIgaW5zZXJ0aW9uIG1vZGVcclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuZnVuY3Rpb24gd2hpdGVzcGFjZUNoYXJhY3RlckluVGFibGVUZXh0KHAsIHRva2VuKSB7XHJcbiAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMucHVzaCh0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoYXJhY3RlckluVGFibGVUZXh0KHAsIHRva2VuKSB7XHJcbiAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMucHVzaCh0b2tlbik7XHJcbiAgICBwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4gPSB0cnVlO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b2tlbkluVGFibGVUZXh0KHAsIHRva2VuKSB7XHJcbiAgICB2YXIgaSA9IDA7XHJcblxyXG4gICAgaWYgKHAuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbikge1xyXG4gICAgICAgIGZvciAoOyBpIDwgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICB0b2tlbkluVGFibGUocCwgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zW2ldKTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIHtcclxuICAgICAgICBmb3IgKDsgaSA8IHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgcC5faW5zZXJ0Q2hhcmFjdGVycyhwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnNbaV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xyXG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcclxufVxyXG5cclxuXHJcbi8vMTIuMi41LjQuMTEgVGhlIFwiaW4gY2FwdGlvblwiIGluc2VydGlvbiBtb2RlXHJcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbmZ1bmN0aW9uIHN0YXJ0VGFnSW5DYXB0aW9uKHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5DQVBUSU9OIHx8IHRuID09PSAkLkNPTCB8fCB0biA9PT0gJC5DT0xHUk9VUCB8fCB0biA9PT0gJC5UQk9EWSB8fFxyXG4gICAgICAgIHRuID09PSAkLlREIHx8IHRuID09PSAkLlRGT09UIHx8IHRuID09PSAkLlRIIHx8IHRuID09PSAkLlRIRUFEIHx8IHRuID09PSAkLlRSKSB7XHJcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLkNBUFRJT04pKSB7XHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcclxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuQ0FQVElPTik7XHJcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XHJcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XHJcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGVsc2VcclxuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVuZFRhZ0luQ2FwdGlvbihwLCB0b2tlbikge1xyXG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcclxuXHJcbiAgICBpZiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5UQUJMRSkge1xyXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5DQVBUSU9OKSkge1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkNBUFRJT04pO1xyXG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xyXG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFKVxyXG4gICAgICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gIT09ICQuQk9EWSAmJiB0biAhPT0gJC5DT0wgJiYgdG4gIT09ICQuQ09MR1JPVVAgJiYgdG4gIT09ICQuSFRNTCAmJiB0biAhPT0gJC5UQk9EWSAmJlxyXG4gICAgICAgICAgICAgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVEZPT1QgJiYgdG4gIT09ICQuVEggJiYgdG4gIT09ICQuVEhFQUQgJiYgdG4gIT09ICQuVFIpXHJcbiAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxufVxyXG5cclxuXHJcbi8vMTIuMi41LjQuMTIgVGhlIFwiaW4gY29sdW1uIGdyb3VwXCIgaW5zZXJ0aW9uIG1vZGVcclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuZnVuY3Rpb24gc3RhcnRUYWdJbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5IVE1MKVxyXG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICBlbHNlIGlmICh0biA9PT0gJC5DT0wpXHJcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpXHJcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xyXG5cclxuICAgIGVsc2VcclxuICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmRUYWdJbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5DT0xHUk9VUCkge1xyXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5DT0xHUk9VUCkge1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcclxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpXHJcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcclxuXHJcbiAgICBlbHNlIGlmICh0biAhPT0gJC5DT0wpXHJcbiAgICAgICAgdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XHJcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuQ09MR1JPVVApIHtcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcclxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xyXG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vMTIuMi41LjQuMTMgVGhlIFwiaW4gdGFibGUgYm9keVwiIGluc2VydGlvbiBtb2RlXHJcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgaWYgKHRuID09PSAkLlRSKSB7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XHJcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fUk9XX01PREU7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEggfHwgdG4gPT09ICQuVEQpIHtcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcclxuICAgICAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLlRSKTtcclxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9ST1dfTU9ERTtcclxuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHRuID09PSAkLkNBUFRJT04gfHwgdG4gPT09ICQuQ09MIHx8IHRuID09PSAkLkNPTEdST1VQIHx8XHJcbiAgICAgICAgICAgICB0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xyXG5cclxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcclxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcclxuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVuZFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xyXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcclxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEFCTEUpIHtcclxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcclxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcclxuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gIT09ICQuQk9EWSAmJiB0biAhPT0gJC5DQVBUSU9OICYmIHRuICE9PSAkLkNPTCAmJiB0biAhPT0gJC5DT0xHUk9VUCB8fFxyXG4gICAgICAgICAgICAgdG4gIT09ICQuSFRNTCAmJiB0biAhPT0gJC5URCAmJiB0biAhPT0gJC5USCAmJiB0biAhPT0gJC5UUilcclxuICAgICAgICBlbmRUYWdJblRhYmxlKHAsIHRva2VuKTtcclxufVxyXG5cclxuLy8xMi4yLjUuNC4xNCBUaGUgXCJpbiByb3dcIiBpbnNlcnRpb24gbW9kZVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiBzdGFydFRhZ0luUm93KHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5USCB8fCB0biA9PT0gJC5URCkge1xyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XHJcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQ0VMTF9NT0RFO1xyXG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHRuID09PSAkLkNBUFRJT04gfHwgdG4gPT09ICQuQ09MIHx8IHRuID09PSAkLkNPTEdST1VQIHx8IHRuID09PSAkLlRCT0RZIHx8XHJcbiAgICAgICAgICAgICB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCB8fCB0biA9PT0gJC5UUikge1xyXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcclxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcclxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XHJcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcclxuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVuZFRhZ0luUm93KHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5UUikge1xyXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcclxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcclxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XHJcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEFCTEUpIHtcclxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVFIpKSB7XHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xyXG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XHJcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRGT09UIHx8IHRuID09PSAkLlRIRUFEKSB7XHJcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikgfHwgcC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVFIpKSB7XHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xyXG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XHJcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHRuICE9PSAkLkJPRFkgJiYgdG4gIT09ICQuQ0FQVElPTiAmJiB0biAhPT0gJC5DT0wgJiYgdG4gIT09ICQuQ09MR1JPVVAgfHxcclxuICAgICAgICAgICAgIHRuICE9PSAkLkhUTUwgJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVEgpXHJcbiAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XHJcbn1cclxuXHJcblxyXG4vLzEyLjIuNS40LjE1IFRoZSBcImluIGNlbGxcIiBpbnNlcnRpb24gbW9kZVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiBzdGFydFRhZ0luQ2VsbChwLCB0b2tlbikge1xyXG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcclxuXHJcbiAgICBpZiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5DT0wgfHwgdG4gPT09ICQuQ09MR1JPVVAgfHwgdG4gPT09ICQuVEJPRFkgfHxcclxuICAgICAgICB0biA9PT0gJC5URCB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USCB8fCB0biA9PT0gJC5USEVBRCB8fCB0biA9PT0gJC5UUikge1xyXG5cclxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEQpIHx8IHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRIKSkge1xyXG4gICAgICAgICAgICBwLl9jbG9zZVRhYmxlQ2VsbCgpO1xyXG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbHNlXHJcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmRUYWdJbkNlbGwocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgaWYgKHRuID09PSAkLlREIHx8IHRuID09PSAkLlRIKSB7XHJcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcclxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xyXG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xyXG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9ST1dfTU9ERTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEFCTEUgfHwgdG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVFIpIHtcclxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xyXG4gICAgICAgICAgICBwLl9jbG9zZVRhYmxlQ2VsbCgpO1xyXG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICh0biAhPT0gJC5CT0RZICYmIHRuICE9PSAkLkNBUFRJT04gJiYgdG4gIT09ICQuQ09MICYmIHRuICE9PSAkLkNPTEdST1VQICYmIHRuICE9PSAkLkhUTUwpXHJcbiAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcclxufVxyXG5cclxuLy8xMi4yLjUuNC4xNiBUaGUgXCJpbiBzZWxlY3RcIiBpbnNlcnRpb24gbW9kZVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiBzdGFydFRhZ0luU2VsZWN0KHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5IVE1MKVxyXG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICBlbHNlIGlmICh0biA9PT0gJC5PUFRJT04pIHtcclxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUSU9OKVxyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcclxuXHJcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuT1BUR1JPVVApIHtcclxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUSU9OKVxyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcclxuXHJcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVEdST1VQKVxyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcclxuXHJcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuSU5QVVQgfHwgdG4gPT09ICQuS0VZR0VOIHx8IHRuID09PSAkLlRFWFRBUkVBIHx8IHRuID09PSAkLlNFTEVDVCkge1xyXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNlbGVjdFNjb3BlKCQuU0VMRUNUKSkge1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xyXG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0biAhPT0gJC5TRUxFQ1QpXHJcbiAgICAgICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICh0biA9PT0gJC5TQ1JJUFQgfHwgdG4gPT09ICQuVEVNUExBVEUpXHJcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmRUYWdJblNlbGVjdChwLCB0b2tlbikge1xyXG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcclxuXHJcbiAgICBpZiAodG4gPT09ICQuT1BUR1JPVVApIHtcclxuICAgICAgICB2YXIgcHJldk9wZW5FbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbcC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgLSAxXSxcclxuICAgICAgICAgICAgcHJldk9wZW5FbGVtZW50VG4gPSBwcmV2T3BlbkVsZW1lbnQgJiYgcC50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHByZXZPcGVuRWxlbWVudCk7XHJcblxyXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04gJiYgcHJldk9wZW5FbGVtZW50VG4gPT09ICQuT1BUR1JPVVApXHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xyXG5cclxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUR1JPVVApXHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHRuID09PSAkLk9QVElPTikge1xyXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04pXHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHRuID09PSAkLlNFTEVDVCAmJiBwLm9wZW5FbGVtZW50cy5oYXNJblNlbGVjdFNjb3BlKCQuU0VMRUNUKSkge1xyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XHJcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpXHJcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcclxufVxyXG5cclxuLy8xMi4yLjUuNC4xNyBUaGUgXCJpbiBzZWxlY3QgaW4gdGFibGVcIiBpbnNlcnRpb24gbW9kZVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiBzdGFydFRhZ0luU2VsZWN0SW5UYWJsZShwLCB0b2tlbikge1xyXG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcclxuXHJcbiAgICBpZiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5UQUJMRSB8fCB0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fFxyXG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8IHRuID09PSAkLlRSIHx8IHRuID09PSAkLlREIHx8IHRuID09PSAkLlRIKSB7XHJcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcclxuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcclxuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2VcclxuICAgICAgICBzdGFydFRhZ0luU2VsZWN0KHAsIHRva2VuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZW5kVGFnSW5TZWxlY3RJblRhYmxlKHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5DQVBUSU9OIHx8IHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRGT09UIHx8XHJcbiAgICAgICAgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVFIgfHwgdG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEgpIHtcclxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xyXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xyXG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcclxuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICAgIGVuZFRhZ0luU2VsZWN0KHAsIHRva2VuKTtcclxufVxyXG5cclxuLy8xMi4yLjUuNC4xOCBUaGUgXCJpbiB0ZW1wbGF0ZVwiIGluc2VydGlvbiBtb2RlXHJcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xyXG4gICAgdmFyIHRuID0gdG9rZW4udGFnTmFtZTtcclxuXHJcbiAgICBpZiAodG4gPT09ICQuQkFTRSB8fCB0biA9PT0gJC5CQVNFRk9OVCB8fCB0biA9PT0gJC5CR1NPVU5EIHx8IHRuID09PSAkLkxJTksgfHwgdG4gPT09ICQuTUVUQSB8fFxyXG4gICAgICAgIHRuID09PSAkLk5PRlJBTUVTIHx8IHRuID09PSAkLlNDUklQVCB8fCB0biA9PT0gJC5TVFlMRSB8fCB0biA9PT0gJC5URU1QTEFURSB8fCB0biA9PT0gJC5USVRMRSlcclxuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XHJcblxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIG5ld0luc2VydGlvbk1vZGUgPSBURU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQW3RuXSB8fCBJTl9CT0RZX01PREU7XHJcblxyXG4gICAgICAgIHAuX3BvcFRtcGxJbnNlcnRpb25Nb2RlKCk7XHJcbiAgICAgICAgcC5fcHVzaFRtcGxJbnNlcnRpb25Nb2RlKG5ld0luc2VydGlvbk1vZGUpO1xyXG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IG5ld0luc2VydGlvbk1vZGU7XHJcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZW5kVGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xyXG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuVEVNUExBVEUpXHJcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZW9mSW5UZW1wbGF0ZShwLCB0b2tlbikge1xyXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDApIHtcclxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5URU1QTEFURSk7XHJcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcclxuICAgICAgICBwLl9wb3BUbXBsSW5zZXJ0aW9uTW9kZSgpO1xyXG4gICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xyXG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICAgIHAuc3RvcHBlZCA9IHRydWU7XHJcbn1cclxuXHJcblxyXG4vLzEyLjIuNS40LjE5IFRoZSBcImFmdGVyIGJvZHlcIiBpbnNlcnRpb24gbW9kZVxyXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyQm9keShwLCB0b2tlbikge1xyXG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuSFRNTClcclxuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICAgIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZW5kVGFnQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XHJcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKSB7XHJcbiAgICAgICAgaWYgKCFwLmZyYWdtZW50Q29udGV4dClcclxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfQUZURVJfQk9EWV9NT0RFO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2VcclxuICAgICAgICB0b2tlbkFmdGVyQm9keShwLCB0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XHJcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG59XHJcblxyXG4vLzEyLjIuNS40LjIwIFRoZSBcImluIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuZnVuY3Rpb24gc3RhcnRUYWdJbkZyYW1lc2V0KHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5IVE1MKVxyXG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICBlbHNlIGlmICh0biA9PT0gJC5GUkFNRVNFVClcclxuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxuXHJcbiAgICBlbHNlIGlmICh0biA9PT0gJC5GUkFNRSlcclxuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcclxuXHJcbiAgICBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUylcclxuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVuZFRhZ0luRnJhbWVzZXQocCwgdG9rZW4pIHtcclxuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkZSQU1FU0VUICYmICFwLm9wZW5FbGVtZW50cy5pc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQoKSkge1xyXG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xyXG5cclxuICAgICAgICBpZiAoIXAuZnJhZ21lbnRDb250ZXh0ICYmIHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lICE9PSAkLkZSQU1FU0VUKVxyXG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBBRlRFUl9GUkFNRVNFVF9NT0RFO1xyXG4gICAgfVxyXG59XHJcblxyXG4vLzEyLjIuNS40LjIxIFRoZSBcImFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckZyYW1lc2V0KHAsIHRva2VuKSB7XHJcbiAgICB2YXIgdG4gPSB0b2tlbi50YWdOYW1lO1xyXG5cclxuICAgIGlmICh0biA9PT0gJC5IVE1MKVxyXG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcclxuXHJcbiAgICBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUylcclxuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVuZFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcclxuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwpXHJcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERTtcclxufVxyXG5cclxuLy8xMi4yLjUuNC4yMiBUaGUgXCJhZnRlciBhZnRlciBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckFmdGVyQm9keShwLCB0b2tlbikge1xyXG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuSFRNTClcclxuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICAgIHRva2VuQWZ0ZXJBZnRlckJvZHkocCwgdG9rZW4pO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XHJcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XHJcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG59XHJcblxyXG4vLzEyLjIuNS40LjIzIFRoZSBcImFmdGVyIGFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckFmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcclxuICAgIHZhciB0biA9IHRva2VuLnRhZ05hbWU7XHJcblxyXG4gICAgaWYgKHRuID09PSAkLkhUTUwpXHJcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xyXG5cclxuICAgIGVsc2UgaWYgKHRuID09PSAkLk5PRlJBTUVTKVxyXG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcclxufVxyXG5cclxuXHJcbi8vMTIuMi41LjUgVGhlIHJ1bGVzIGZvciBwYXJzaW5nIHRva2VucyBpbiBmb3JlaWduIGNvbnRlbnRcclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuZnVuY3Rpb24gbnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcclxuICAgIHRva2VuLmNoYXJzID0gVU5JQ09ERS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XHJcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2hhcmFjdGVySW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xyXG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XHJcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcclxufVxyXG5cclxuZnVuY3Rpb24gc3RhcnRUYWdJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XHJcbiAgICBpZiAoZm9yZWlnbkNvbnRlbnQuY2F1c2VzRXhpdCh0b2tlbikgJiYgIXAuZnJhZ21lbnRDb250ZXh0KSB7XHJcbiAgICAgICAgd2hpbGUgKHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpICE9PSBOUy5IVE1MICYmICFwLl9pc0ludGVncmF0aW9uUG9pbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCkpXHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xyXG5cclxuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBjdXJyZW50ID0gcC5fZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCgpLFxyXG4gICAgICAgICAgICBjdXJyZW50TnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KTtcclxuXHJcbiAgICAgICAgaWYgKGN1cnJlbnROcyA9PT0gTlMuTUFUSE1MKVxyXG4gICAgICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlbk1hdGhNTEF0dHJzKHRva2VuKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAoY3VycmVudE5zID09PSBOUy5TVkcpIHtcclxuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5TVkdUYWdOYW1lKHRva2VuKTtcclxuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5TVkdBdHRycyh0b2tlbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcclxuXHJcbiAgICAgICAgaWYgKHRva2VuLnNlbGZDbG9zaW5nKVxyXG4gICAgICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBjdXJyZW50TnMpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgY3VycmVudE5zKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZW5kVGFnSW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xyXG4gICAgZm9yICh2YXIgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XHJcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcclxuXHJcbiAgICAgICAgaWYgKHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpID09PSBOUy5IVE1MKSB7XHJcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KS50b0xvd2VyQ2FzZSgpID09PSB0b2tlbi50YWdOYW1lKSB7XHJcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsRWxlbWVudFBvcHBlZChlbGVtZW50KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VPcHRpb25zKGRlZmF1bHRzLCBvcHRpb25zKSB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgICByZXR1cm4gW2RlZmF1bHRzLCBvcHRpb25zXS5yZWR1Y2UoZnVuY3Rpb24gKG1lcmdlZCwgb3B0T2JqKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMob3B0T2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgbWVyZ2VkW2tleV0gPSBvcHRPYmpba2V5XTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG1lcmdlZDtcclxuICAgIH0sIHt9KTtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZnJvbVBhcnNlNSA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1mcm9tLXBhcnNlNScpO1xudmFyIFBhcnNlcjUgPSByZXF1aXJlKCdwYXJzZTUvbGliL3BhcnNlcicpO1xudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZTtcblxuZnVuY3Rpb24gcGFyc2Uob3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSB4dGVuZChvcHRpb25zLCB0aGlzLmRhdGEoJ3NldHRpbmdzJykpO1xuICB2YXIgcG9zaXRpb24gPSB0eXBlb2Ygc2V0dGluZ3MucG9zaXRpb24gPT09ICdib29sZWFuJyA/IHNldHRpbmdzLnBvc2l0aW9uIDogdHJ1ZTtcbiAgdmFyIHBhcnNlNSA9IG5ldyBQYXJzZXI1KHtsb2NhdGlvbkluZm86IHBvc2l0aW9ufSk7XG5cbiAgdGhpcy5QYXJzZXIgPSBwYXJzZXI7XG5cbiAgZnVuY3Rpb24gcGFyc2VyKGRvYywgZmlsZSkge1xuICAgIHZhciBmbiA9IHNldHRpbmdzLmZyYWdtZW50ID8gJ3BhcnNlRnJhZ21lbnQnIDogJ3BhcnNlJztcblxuICAgIHJldHVybiBmcm9tUGFyc2U1KHBhcnNlNVtmbl0oU3RyaW5nKGZpbGUpKSwge1xuICAgICAgZmlsZTogZmlsZSxcbiAgICAgIHZlcmJvc2U6IHNldHRpbmdzLnZlcmJvc2VcbiAgICB9KTtcbiAgfVxufVxuIiwiY29uc3QgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcbmNvbnN0IGthdGV4ID0gcmVxdWlyZSgna2F0ZXgnKVxuY29uc3QgdW5pZmllZCA9IHJlcXVpcmUoJ3VuaWZpZWQnKVxuY29uc3QgcGFyc2UgPSByZXF1aXJlKCdyZWh5cGUtcGFyc2UnKVxuY29uc3QgcG9zaXRpb24gPSByZXF1aXJlKCd1bmlzdC11dGlsLXBvc2l0aW9uJylcblxuZnVuY3Rpb24gcGFyc2VNYXRoSHRtbCAoaHRtbCkge1xuICByZXR1cm4gdW5pZmllZCgpXG4gICAgLnVzZShwYXJzZSwge1xuICAgICAgZnJhZ21lbnQ6IHRydWUsXG4gICAgICBwb3NpdGlvbjogZmFsc2VcbiAgICB9KVxuICAgIC5wYXJzZShodG1sKVxufVxuXG5mdW5jdGlvbiBoYXNDbGFzcyAoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gIHJldHVybiBlbGVtZW50LnByb3BlcnRpZXMuY2xhc3NOYW1lICYmIGVsZW1lbnQucHJvcGVydGllcy5jbGFzc05hbWUuaW5jbHVkZXMoY2xhc3NOYW1lKVxufVxuXG5mdW5jdGlvbiBpc1RhZyAoZWxlbWVudCwgdGFnKSB7XG4gIHJldHVybiBlbGVtZW50LnRhZ05hbWUgPT09IHRhZ1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBsdWdpbiAob3B0cyA9IHt9KSB7XG4gIGlmIChvcHRzLnRocm93T25FcnJvciA9PSBudWxsKSBvcHRzLnRocm93T25FcnJvciA9IGZhbHNlXG4gIGlmIChvcHRzLmVycm9yQ29sb3IgPT0gbnVsbCkgb3B0cy5lcnJvckNvbG9yID0gJyNjYzAwMDAnXG4gIGlmIChvcHRzLm1hY3JvcyA9PSBudWxsKSBvcHRzLm1hY3JvcyA9IHt9XG4gIHJldHVybiBmdW5jdGlvbiB0cmFuc2Zvcm0gKG5vZGUsIGZpbGUpIHtcbiAgICB2aXNpdChub2RlLCAnZWxlbWVudCcsIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICBjb25zdCBpc0lubGluZU1hdGggPSBpc1RhZyhlbGVtZW50LCAnc3BhbicpICYmIGhhc0NsYXNzKGVsZW1lbnQsICdpbmxpbmVNYXRoJylcbiAgICAgIGNvbnN0IGlzTWF0aCA9IChvcHRzLmlubGluZU1hdGhEb3VibGVEaXNwbGF5ICYmIGhhc0NsYXNzKGVsZW1lbnQsICdpbmxpbmVNYXRoRG91YmxlJykpIHx8IChpc1RhZyhlbGVtZW50LCAnZGl2JykgJiYgaGFzQ2xhc3MoZWxlbWVudCwgJ21hdGgnKSlcblxuICAgICAgaWYgKGlzSW5saW5lTWF0aCB8fCBpc01hdGgpIHtcbiAgICAgICAgbGV0IHJlbmRlcmVkVmFsdWVcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZW5kZXJlZFZhbHVlID0ga2F0ZXgucmVuZGVyVG9TdHJpbmcoZWxlbWVudC5jaGlsZHJlblswXS52YWx1ZSwge1xuICAgICAgICAgICAgZGlzcGxheU1vZGU6IGlzTWF0aCxcbiAgICAgICAgICAgIG1hY3Jvczogb3B0cy5tYWNyb3NcbiAgICAgICAgICB9KVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBpZiAob3B0cy50aHJvd09uRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGVyclxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWxlLm1lc3NhZ2UoXG4gICAgICAgICAgICAgIGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICBwb3NpdGlvbi5zdGFydChlbGVtZW50KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmVuZGVyZWRWYWx1ZSA9IGthdGV4LnJlbmRlclRvU3RyaW5nKGVsZW1lbnQuY2hpbGRyZW5bMF0udmFsdWUsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5TW9kZTogaXNNYXRoLFxuICAgICAgICAgICAgICAgIG1hY3Jvczogb3B0cy5tYWNyb3MsXG4gICAgICAgICAgICAgICAgdGhyb3dPbkVycm9yOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlcnJvckNvbG9yOiBvcHRzLmVycm9yQ29sb3JcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICByZW5kZXJlZFZhbHVlID0gJzxjb2RlIGNsYXNzPVwia2F0ZXhcIiBzdHlsZT1cImNvbG9yOiAnICsgb3B0cy5lcnJvckNvbG9yICsgJ1wiPicgKyBlbGVtZW50LmNoaWxkcmVuWzBdLnZhbHVlICsgJzwvY29kZT4nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5saW5lTWF0aEFzdCA9IHBhcnNlTWF0aEh0bWwocmVuZGVyZWRWYWx1ZSkuY2hpbGRyZW5bMF1cblxuICAgICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQucHJvcGVydGllcywge2NsYXNzTmFtZTogZWxlbWVudC5wcm9wZXJ0aWVzLmNsYXNzTmFtZX0pXG4gICAgICAgIGVsZW1lbnQuY2hpbGRyZW4gPSBbaW5saW5lTWF0aEFzdF1cbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBub2RlXG4gIH1cbn1cbiIsIi8qKlxuICogQGF1dGhvciBUaXR1cyBXb3JtZXJcbiAqIEBjb3B5cmlnaHQgMjAxNiBUaXR1cyBXb3JtZXJcbiAqIEBsaWNlbnNlIE1JVFxuICogQG1vZHVsZSByZWh5cGU6bGludDp1dGlsOmlzLWVsZW1lbnRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qIGVzbGludC1lbnYgY29tbW9uanMgKi9cblxuLyoqXG4gKiBDaGVjayBpZiBhIG5vZGUgaXMgYSAoY2VydGFpbikgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IG5vZGUgLSBUaGluZyB0byBjaGVjay5cbiAqIEBwYXJhbSB7c3RyaW5nfEFycmF5LjxzdHJpbmc+P30gW3RhZ05hbWVzXSAtIE5hbWUgb2YgZWxlbWVudC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IC0gV2hldGhlciBhIG5vZGUgaXMgYSAoY2VydGFpbikgZWxlbWVudC5cbiAqIEB0aHJvd3Mge0Vycm9yfSAtIFdoZW4gYHRhZ05hbWVzYCBpcyBnaXZlbiBidXQgaW52YWxpZC5cbiAqL1xuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUsIHRhZ05hbWVzKSB7XG4gICAgdmFyIG5hbWU7XG5cbiAgICBpZiAoXG4gICAgICAgICEoXG4gICAgICAgICAgICB0YWdOYW1lcyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgdGFnTmFtZXMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgdHlwZW9mIHRhZ05hbWVzID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgKHR5cGVvZiB0YWdOYW1lcyA9PT0gJ29iamVjdCcgJiYgdGFnTmFtZXMubGVuZ3RoKVxuICAgICAgICApXG4gICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdFeHBlY3RlZCBgc3RyaW5nYCBvciBgQXJyYXkuPHN0cmluZz5gIGZvciAnICtcbiAgICAgICAgICAgICdgdGFnTmFtZXNgLCBub3QgYCcgKyB0YWdOYW1lcyArICdgJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICAgIW5vZGUgfHxcbiAgICAgICAgdHlwZW9mIG5vZGUgIT09ICdvYmplY3QnIHx8XG4gICAgICAgIG5vZGUudHlwZSAhPT0gJ2VsZW1lbnQnIHx8XG4gICAgICAgIHR5cGVvZiBub2RlLnRhZ05hbWUgIT09ICdzdHJpbmcnXG4gICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGFnTmFtZXMgPT09IG51bGwgfHwgdGFnTmFtZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBuYW1lID0gbm9kZS50YWdOYW1lO1xuXG4gICAgaWYgKHR5cGVvZiB0YWdOYW1lcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG5hbWUgPT09IHRhZ05hbWVzO1xuICAgIH1cblxuICAgIHJldHVybiB0YWdOYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbn1cblxuLypcbiAqIEV4cG9zZS5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRWxlbWVudDtcbiIsIi8qKlxuICogQGF1dGhvciBUaXR1cyBXb3JtZXJcbiAqIEBjb3B5cmlnaHQgMjAxNiBUaXR1cyBXb3JtZXJcbiAqIEBsaWNlbnNlIE1JVFxuICogQG1vZHVsZSBoYXN0OnV0aWw6d2hpdGVzcGFjZVxuICogQGZpbGVvdmVydmlldyBDaGVjayB3aGV0aGVyIGEgbm9kZSBpcyBpbnRlci1lbGVtZW50XG4gKiAgIHdoaXRlc3BhY2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQtZW52IGNvbW1vbmpzICovXG5cbi8qXG4gKiBIVE1MIHdoaXRlLXNwYWNlIGV4cHJlc3Npb24uXG4gKlxuICogU2VlIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNzcGFjZS1jaGFyYWN0ZXI+LlxuICovXG5cbnZhciBFWFBSRVNTSU9OID0gL1tcXCBcXHRcXG5cXGZcXHJdL2c7XG5cbi8qKlxuICogQ2hlY2sgaWYgYG5vZGVgIGlzIGEgaW50ZXItZWxlbWVudCB3aGl0ZS1zcGFjZS5cbiAqXG4gKiBAcGFyYW0ge05vZGV8c3RyaW5nfSBub2RlIC0gVmFsdWUgdG8gY2hlY2ssIG9yIE5vZGVcbiAqICAgd2hvc2UgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJuIHtib29sZWFufSAtIFdoZXRoZXIgYG5vZGVgIGlzIGludGVyLWVsZW1lbnRcbiAqICAgd2hpdGUtc3BhY2UuXG4gKi9cbmZ1bmN0aW9uIGludGVyRWxlbWVudFdoaXRlU3BhY2Uobm9kZSkge1xuICAgIHZhciB2YWx1ZTtcblxuICAgIGlmIChub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiBub2RlLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICB2YWx1ZSA9IG5vZGUudmFsdWUgfHwgJydcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBub2RlID09PSAnc3RyaW5nJykge1xuICAgICAgICB2YWx1ZSA9IG5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKEVYUFJFU1NJT04sICcnKSA9PT0gJyc7XG59XG5cbi8qXG4gKiBFeHBvc2UuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBpbnRlckVsZW1lbnRXaGl0ZVNwYWNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgd2hpdGVTcGFjZSA9IHJlcXVpcmUoJ2hhc3QtdXRpbC13aGl0ZXNwYWNlJyk7XG5cbmV4cG9ydHMuYmVmb3JlID0gc2libGluZ3MoLTEpO1xuZXhwb3J0cy5hZnRlciA9IHNpYmxpbmdzKDEpO1xuXG4vKiBGYWN0b3J5IHRvIGNoZWNrIHNpYmxpbmdzIGluIGEgZGlyZWN0aW9uLiAqL1xuZnVuY3Rpb24gc2libGluZ3MoaW5jcmVtZW50KSB7XG4gIHJldHVybiBzaWJsaW5nO1xuXG4gIC8qIEZpbmQgYXBwbGljYWJsZSBzaWJsaW5ncyBpbiBhIGRpcmVjdGlvbi4gICAqL1xuICBmdW5jdGlvbiBzaWJsaW5nKHBhcmVudCwgaW5kZXgsIGluY2x1ZGVXaGl0ZVNwYWNlKSB7XG4gICAgdmFyIHNpYmxpbmdzID0gcGFyZW50ICYmIHBhcmVudC5jaGlsZHJlbjtcbiAgICB2YXIgbmV4dDtcblxuICAgIGluZGV4ICs9IGluY3JlbWVudDtcbiAgICBuZXh0ID0gc2libGluZ3MgJiYgc2libGluZ3NbaW5kZXhdO1xuXG4gICAgaWYgKCFpbmNsdWRlV2hpdGVTcGFjZSkge1xuICAgICAgd2hpbGUgKG5leHQgJiYgd2hpdGVTcGFjZShuZXh0KSkge1xuICAgICAgICBpbmRleCArPSBpbmNyZW1lbnQ7XG4gICAgICAgIG5leHQgPSBzaWJsaW5nc1tpbmRleF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFmdGVyID0gcmVxdWlyZSgnLi9zaWJsaW5ncycpLmFmdGVyO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpcnN0O1xuXG4vKiBHZXQgdGhlIGZpcnN0IGNoaWxkIGluIGBwYXJlbnRgLiAqL1xuZnVuY3Rpb24gZmlyc3QocGFyZW50LCBpbmNsdWRlV2hpdGVTcGFjZSkge1xuICByZXR1cm4gYWZ0ZXIocGFyZW50LCAtMSwgaW5jbHVkZVdoaXRlU3BhY2UpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBsYWNlO1xuXG4vKiBHZXQgdGhlIHBvc2l0aW9uIG9mIGBub2RlYCBpbiBgcGFyZW50YC4gKi9cbmZ1bmN0aW9uIHBsYWNlKHBhcmVudCwgY2hpbGQpIHtcbiAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQuY2hpbGRyZW4gJiYgcGFyZW50LmNoaWxkcmVuLmluZGV4T2YoY2hpbGQpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXMgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzJyk7XG52YXIgd2hpdGVTcGFjZSA9IHJlcXVpcmUoJ2hhc3QtdXRpbC13aGl0ZXNwYWNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gd2hpdGVTcGFjZUxlZnQ7XG5cbi8qIENoZWNrIGlmIGBub2RlYCBzdGFydHMgd2l0aCB3aGl0ZS1zcGFjZS4gKi9cbmZ1bmN0aW9uIHdoaXRlU3BhY2VMZWZ0KG5vZGUpIHtcbiAgcmV0dXJuIGlzKCd0ZXh0Jywgbm9kZSkgJiYgd2hpdGVTcGFjZShub2RlLnZhbHVlLmNoYXJBdCgwKSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gb21pc3Npb247XG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuLyogRmFjdG9yeSB0byBjaGVjayBpZiBhIGdpdmVuIG5vZGUgY2FuIGhhdmUgYSB0YWcgb21pdHRlZC4gKi9cbmZ1bmN0aW9uIG9taXNzaW9uKGhhbmRsZXJzKSB7XG4gIHJldHVybiBvbWl0O1xuXG4gIC8qIENoZWNrIGlmIGEgZ2l2ZW4gbm9kZSBjYW4gaGF2ZSBhIHRhZyBvbWl0dGVkLiAgICovXG4gIGZ1bmN0aW9uIG9taXQobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICAgIHZhciBuYW1lID0gbm9kZS50YWdOYW1lO1xuICAgIHZhciBmbiA9IG93bi5jYWxsKGhhbmRsZXJzLCBuYW1lKSA/IGhhbmRsZXJzW25hbWVdIDogZmFsc2U7XG5cbiAgICByZXR1cm4gZm4gPyBmbihub2RlLCBpbmRleCwgcGFyZW50KSA6IGZhbHNlO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpcyA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtaXMnKTtcbnZhciBlbGVtZW50ID0gcmVxdWlyZSgnaGFzdC11dGlsLWlzLWVsZW1lbnQnKTtcbnZhciB3aGl0ZVNwYWNlTGVmdCA9IHJlcXVpcmUoJy4vdXRpbC93aGl0ZS1zcGFjZS1sZWZ0Jyk7XG52YXIgYWZ0ZXIgPSByZXF1aXJlKCcuL3V0aWwvc2libGluZ3MnKS5hZnRlcjtcbnZhciBvbWlzc2lvbiA9IHJlcXVpcmUoJy4vb21pc3Npb24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBvbWlzc2lvbih7XG4gIGh0bWw6IGh0bWwsXG4gIGhlYWQ6IGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uLFxuICBib2R5OiBib2R5LFxuICBwOiBwLFxuICBsaTogbGksXG4gIGR0OiBkdCxcbiAgZGQ6IGRkLFxuICBydDogcnVieUVsZW1lbnQsXG4gIHJwOiBydWJ5RWxlbWVudCxcbiAgb3B0Z3JvdXA6IG9wdGdyb3VwLFxuICBvcHRpb246IG9wdGlvbixcbiAgbWVudWl0ZW06IG1lbnVpdGVtLFxuICBjb2xncm91cDogaGVhZE9yQ29sZ3JvdXBPckNhcHRpb24sXG4gIGNhcHRpb246IGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uLFxuICB0aGVhZDogdGhlYWQsXG4gIHRib2R5OiB0Ym9keSxcbiAgdGZvb3Q6IHRmb290LFxuICB0cjogdHIsXG4gIHRkOiBjZWxscyxcbiAgdGg6IGNlbGxzXG59KTtcblxuLyogTWFjcm8gZm9yIGA8L2hlYWQ+YCwgYDwvY29sZ3JvdXA+YCwgYW5kIGA8L2NhcHRpb24+YC4gKi9cbmZ1bmN0aW9uIGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4LCB0cnVlKTtcbiAgcmV0dXJuICFuZXh0IHx8ICghaXMoJ2NvbW1lbnQnLCBuZXh0KSAmJiAhd2hpdGVTcGFjZUxlZnQobmV4dCkpO1xufVxuXG4vKiBXaGV0aGVyIHRvIG9taXQgYDwvaHRtbD5gLiAqL1xuZnVuY3Rpb24gaHRtbChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleCk7XG4gIHJldHVybiAhbmV4dCB8fCAhaXMoJ2NvbW1lbnQnLCBuZXh0KTtcbn1cblxuLyogV2hldGhlciB0byBvbWl0IGA8L2JvZHk+YC4gKi9cbmZ1bmN0aW9uIGJvZHkobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpO1xuICByZXR1cm4gIW5leHQgfHwgIWlzKCdjb21tZW50JywgbmV4dCk7XG59XG5cbi8qIFdoZXRoZXIgdG8gb21pdCBgPC9wPmAuICovXG5mdW5jdGlvbiBwKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KTtcblxuICBpZiAobmV4dCkge1xuICAgIHJldHVybiBlbGVtZW50KG5leHQsIFtcbiAgICAgICdhZGRyZXNzJywgJ2FydGljbGUnLCAnYXNpZGUnLCAnYmxvY2txdW90ZScsICdkZXRhaWxzJyxcbiAgICAgICdkaXYnLCAnZGwnLCAnZmllbGRzZXQnLCAnZmlnY2FwdGlvbicsICdmaWd1cmUnLCAnZm9vdGVyJyxcbiAgICAgICdmb3JtJywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ2hlYWRlcicsXG4gICAgICAnaGdyb3VwJywgJ2hyJywgJ21haW4nLCAnbWVudScsICduYXYnLCAnb2wnLCAncCcsICdwcmUnLFxuICAgICAgJ3NlY3Rpb24nLCAndGFibGUnLCAndWwnXG4gICAgXSk7XG4gIH1cblxuICByZXR1cm4gIXBhcmVudCB8fCAhZWxlbWVudChwYXJlbnQsIFtcbiAgICAnYScsICdhdWRpbycsICdkZWwnLCAnaW5zJywgJ21hcCcsICdub3NjcmlwdCcsICd2aWRlbydcbiAgXSk7XG59XG5cbi8qIFdoZXRoZXIgdG8gb21pdCBgPC9saT5gLiAqL1xuZnVuY3Rpb24gbGkobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpO1xuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCAnbGknKTtcbn1cblxuLyogV2hldGhlciB0byBvbWl0IGA8L2R0PmAuICovXG5mdW5jdGlvbiBkdChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleCk7XG4gIHJldHVybiBuZXh0ICYmIGVsZW1lbnQobmV4dCwgWydkdCcsICdkZCddKTtcbn1cblxuLyogV2hldGhlciB0byBvbWl0IGA8L2RkPmAuICovXG5mdW5jdGlvbiBkZChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleCk7XG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIFsnZHQnLCAnZGQnXSk7XG59XG5cbi8qIFdoZXRoZXIgdG8gb21pdCBgPC9ydD5gIG9yIGA8L3JwPmAuICovXG5mdW5jdGlvbiBydWJ5RWxlbWVudChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleCk7XG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIFsncnAnLCAncnQnXSk7XG59XG5cbi8qIFdoZXRoZXIgdG8gb21pdCBgPC9vcHRncm91cD5gLiAqL1xuZnVuY3Rpb24gb3B0Z3JvdXAobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpO1xuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCAnb3B0Z3JvdXAnKTtcbn1cblxuLyogV2hldGhlciB0byBvbWl0IGA8L29wdGlvbj5gLiAqL1xuZnVuY3Rpb24gb3B0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KTtcbiAgcmV0dXJuICFuZXh0IHx8IGVsZW1lbnQobmV4dCwgWydvcHRpb24nLCAnb3B0Z3JvdXAnXSk7XG59XG5cbi8qIFdoZXRoZXIgdG8gb21pdCBgPC9tZW51aXRlbT5gLiAqL1xuZnVuY3Rpb24gbWVudWl0ZW0obm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpO1xuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBbJ21lbnVpdGVtJywgJ2hyJywgJ21lbnUnXSk7XG59XG5cbi8qIFdoZXRoZXIgdG8gb21pdCBgPC90aGVhZD5gLiAqL1xuZnVuY3Rpb24gdGhlYWQobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpO1xuICByZXR1cm4gbmV4dCAmJiBlbGVtZW50KG5leHQsIFsndGJvZHknLCAndGZvb3QnXSk7XG59XG5cbi8qIFdoZXRoZXIgdG8gb21pdCBgPC90Ym9keT5gLiAqL1xuZnVuY3Rpb24gdGJvZHkobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpO1xuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBbJ3Rib2R5JywgJ3Rmb290J10pO1xufVxuXG4vKiBXaGV0aGVyIHRvIG9taXQgYDwvdGZvb3Q+YC4gKi9cbmZ1bmN0aW9uIHRmb290KG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgcmV0dXJuICFhZnRlcihwYXJlbnQsIGluZGV4KTtcbn1cblxuLyogV2hldGhlciB0byBvbWl0IGA8L3RyPmAuICovXG5mdW5jdGlvbiB0cihub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleCk7XG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsICd0cicpO1xufVxuXG4vKiBXaGV0aGVyIHRvIG9taXQgYDwvdGQ+YCBvciBgPC90aD5gLiAqL1xuZnVuY3Rpb24gY2VsbHMobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpO1xuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBbJ3RkJywgJ3RoJ10pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXMgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzJyk7XG52YXIgZWxlbWVudCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1pcy1lbGVtZW50Jyk7XG52YXIgYmVmb3JlID0gcmVxdWlyZSgnLi91dGlsL3NpYmxpbmdzJykuYmVmb3JlO1xudmFyIGZpcnN0ID0gcmVxdWlyZSgnLi91dGlsL2ZpcnN0Jyk7XG52YXIgcGxhY2UgPSByZXF1aXJlKCcuL3V0aWwvcGxhY2UnKTtcbnZhciB3aGl0ZVNwYWNlTGVmdCA9IHJlcXVpcmUoJy4vdXRpbC93aGl0ZS1zcGFjZS1sZWZ0Jyk7XG52YXIgY2xvc2luZyA9IHJlcXVpcmUoJy4vY2xvc2luZycpO1xudmFyIG9taXNzaW9uID0gcmVxdWlyZSgnLi9vbWlzc2lvbicpO1xuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gb21pc3Npb24oe1xuICBodG1sOiBodG1sLFxuICBoZWFkOiBoZWFkLFxuICBib2R5OiBib2R5LFxuICBjb2xncm91cDogY29sZ3JvdXAsXG4gIHRib2R5OiB0Ym9keVxufSk7XG5cbi8qIFdoZXRoZXIgdG8gb21pdCBgPGh0bWw+YC4gKi9cbmZ1bmN0aW9uIGh0bWwobm9kZSkge1xuICB2YXIgaGVhZCA9IGZpcnN0KG5vZGUpO1xuICByZXR1cm4gIWhlYWQgfHwgIWlzKCdjb21tZW50JywgaGVhZCk7XG59XG5cbi8qIFdoZXRoZXIgdG8gb21pdCBgPGhlYWQ+YC4gKi9cbmZ1bmN0aW9uIGhlYWQobm9kZSkge1xuICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuICB2YXIgbWFwID0ge307XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgY2hpbGQ7XG4gIHZhciBuYW1lO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hpbGQgPSBjaGlsZHJlbltpbmRleF07XG4gICAgbmFtZSA9IGNoaWxkLnRhZ05hbWU7XG5cbiAgICBpZiAoXG4gICAgICBjaGlsZC50eXBlID09PSAnZWxlbWVudCcgJiZcbiAgICAgIChuYW1lID09PSAndGl0bGUnIHx8IG5hbWUgPT09ICdiYXNlJylcbiAgICApIHtcbiAgICAgIGlmIChvd24uY2FsbChtYXAsIG5hbWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgbWFwW25hbWVdID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gQm9vbGVhbihsZW5ndGgpO1xufVxuXG4vKiBXaGV0aGVyIHRvIG9taXQgYDxib2R5PmAuICovXG5mdW5jdGlvbiBib2R5KG5vZGUpIHtcbiAgdmFyIGhlYWQgPSBmaXJzdChub2RlLCB0cnVlKTtcblxuICByZXR1cm4gIWhlYWQgfHwgKFxuICAgICFpcygnY29tbWVudCcsIGhlYWQpICYmXG4gICAgIXdoaXRlU3BhY2VMZWZ0KGhlYWQpICYmXG4gICAgIWVsZW1lbnQoaGVhZCwgWydtZXRhJywgJ2xpbmsnLCAnc2NyaXB0JywgJ3N0eWxlJywgJ3RlbXBsYXRlJ10pXG4gICk7XG59XG5cbi8qIFdoZXRoZXIgdG8gb21pdCBgPGNvbGdyb3VwPmAuXG4gKiBUaGUgc3BlYyBkZXNjcmliZXMgc29tZSBsb2dpYyBmb3IgdGhlIG9wZW5pbmcgdGFnLFxuICogYnV0IGl04oCZcyBlYXNpZXIgdG8gaW1wbGVtZW50IGluIHRoZSBjbG9zaW5nIHRhZywgdG9cbiAqIHRoZSBzYW1lIGVmZmVjdCwgc28gd2UgaGFuZGxlIGl0IHRoZXJlIGluc3RlYWQuICovXG5mdW5jdGlvbiBjb2xncm91cChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBwcmV2ID0gYmVmb3JlKHBhcmVudCwgaW5kZXgpO1xuICB2YXIgaGVhZCA9IGZpcnN0KG5vZGUsIHRydWUpO1xuXG4gIC8qIFByZXZpb3VzIGNvbGdyb3VwIHdhcyBhbHJlYWR5IG9taXR0ZWQuICovXG4gIGlmIChcbiAgICBlbGVtZW50KHByZXYsICdjb2xncm91cCcpICYmXG4gICAgY2xvc2luZyhwcmV2LCBwbGFjZShwYXJlbnQsIHByZXYpLCBwYXJlbnQpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBoZWFkICYmIGVsZW1lbnQoaGVhZCwgJ2NvbCcpO1xufVxuXG4vKiBXaGV0aGVyIHRvIG9taXQgYDx0Ym9keT5gLiAqL1xuZnVuY3Rpb24gdGJvZHkobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgcHJldiA9IGJlZm9yZShwYXJlbnQsIGluZGV4KTtcbiAgdmFyIGhlYWQgPSBmaXJzdChub2RlKTtcblxuICAvKiBQcmV2aW91cyB0YWJsZSBzZWN0aW9uIHdhcyBhbHJlYWR5IG9taXR0ZWQuICovXG4gIGlmIChcbiAgICBlbGVtZW50KHByZXYsIFsndGhlYWQnLCAndGJvZHknXSkgJiZcbiAgICBjbG9zaW5nKHByZXYsIHBsYWNlKHBhcmVudCwgcHJldiksIHBhcmVudClcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGhlYWQgJiYgZWxlbWVudChoZWFkLCAndHInKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbmV4cG9ydHMub3BlbmluZyA9IHJlcXVpcmUoJy4vb3BlbmluZycpO1xuZXhwb3J0cy5jbG9zaW5nID0gcmVxdWlyZSgnLi9jbG9zaW5nJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBvbmUgPSByZXF1aXJlKCcuL29uZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFsbDtcblxuLyogU3RyaW5naWZ5IGFsbCBjaGlsZHJlbiBvZiBgcGFyZW50YC4gKi9cbmZ1bmN0aW9uIGFsbChjdHgsIHBhcmVudCkge1xuICB2YXIgY2hpbGRyZW4gPSBwYXJlbnQgJiYgcGFyZW50LmNoaWxkcmVuO1xuICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdHNbaW5kZXhdID0gb25lKGN0eCwgY2hpbGRyZW5baW5kZXhdLCBpbmRleCwgcGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJycpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGhleGFkZWNpbWFsO1xuXG4vKiBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXJcbiAqIGNvZGUgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgaXMgaGV4YWRlY2ltYWwuICovXG5mdW5jdGlvbiBoZXhhZGVjaW1hbChjaGFyYWN0ZXIpIHtcbiAgdmFyIGNvZGUgPSB0eXBlb2YgY2hhcmFjdGVyID09PSAnc3RyaW5nJyA/XG4gICAgY2hhcmFjdGVyLmNoYXJDb2RlQXQoMCkgOiBjaGFyYWN0ZXI7XG5cbiAgcmV0dXJuIChjb2RlID49IDk3IC8qIGEgKi8gJiYgY29kZSA8PSAxMDIgLyogeiAqLykgfHxcbiAgICAoY29kZSA+PSA2NSAvKiBBICovICYmIGNvZGUgPD0gNzAgLyogWiAqLykgfHxcbiAgICAoY29kZSA+PSA0OCAvKiBBICovICYmIGNvZGUgPD0gNTcgLyogWiAqLyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gYWxwaGFiZXRpY2FsO1xuXG4vKiBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXJcbiAqIGNvZGUgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgaXMgYWxwaGFiZXRpY2FsLiAqL1xuZnVuY3Rpb24gYWxwaGFiZXRpY2FsKGNoYXJhY3Rlcikge1xuICB2YXIgY29kZSA9IHR5cGVvZiBjaGFyYWN0ZXIgPT09ICdzdHJpbmcnID9cbiAgICBjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKSA6IGNoYXJhY3RlcjtcblxuICByZXR1cm4gKGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMjIpIHx8IC8qIGEteiAqL1xuICAgIChjb2RlID49IDY1ICYmIGNvZGUgPD0gOTApOyAvKiBBLVogKi9cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBkZWNpbWFsO1xuXG4vKiBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXJcbiAqIGNvZGUgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgaXMgZGVjaW1hbC4gKi9cbmZ1bmN0aW9uIGRlY2ltYWwoY2hhcmFjdGVyKSB7XG4gIHZhciBjb2RlID0gdHlwZW9mIGNoYXJhY3RlciA9PT0gJ3N0cmluZycgP1xuICAgIGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApIDogY2hhcmFjdGVyO1xuXG4gIHJldHVybiBjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTc7IC8qIDAtOSAqL1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYWxwaGFiZXRpY2FsID0gcmVxdWlyZSgnaXMtYWxwaGFiZXRpY2FsJyk7XG52YXIgZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWRlY2ltYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBhbHBoYW51bWVyaWNhbDtcblxuLyogQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyXG4gKiBjb2RlIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIsIGlzIGFscGhhbnVtZXJpY2FsLiAqL1xuZnVuY3Rpb24gYWxwaGFudW1lcmljYWwoY2hhcmFjdGVyKSB7XG4gIHJldHVybiBhbHBoYWJldGljYWwoY2hhcmFjdGVyKSB8fCBkZWNpbWFsKGNoYXJhY3Rlcik7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJ2NoYXJhY3Rlci1lbnRpdGllcy1odG1sNCcpO1xudmFyIGxlZ2FjeSA9IHJlcXVpcmUoJ2NoYXJhY3Rlci1lbnRpdGllcy1sZWdhY3knKTtcbnZhciBoZXhhZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWhleGFkZWNpbWFsJyk7XG52YXIgYWxwaGFudW1lcmljYWwgPSByZXF1aXJlKCdpcy1hbHBoYW51bWVyaWNhbCcpO1xudmFyIGRhbmdlcm91cyA9IHJlcXVpcmUoJy4vZGFuZ2Vyb3VzLmpzb24nKTtcblxuLyogRXhwb3NlLiAqL1xubW9kdWxlLmV4cG9ydHMgPSBlbmNvZGU7XG5cbmVuY29kZS5lc2NhcGUgPSBlc2NhcGU7XG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuLyogTGlzdCBvZiBlbmZvcmNlZCBlc2NhcGVzLiAqL1xudmFyIGVzY2FwZXMgPSBbJ1wiJywgJ1xcJycsICc8JywgJz4nLCAnJicsICdgJ107XG5cbi8qIE1hcCBvZiBjaGFyYWN0ZXJzIHRvIG5hbWVzLiAqL1xudmFyIGNoYXJhY3RlcnMgPSBjb25zdHJ1Y3QoKTtcblxuLyogRGVmYXVsdCBlc2NhcGVzLiAqL1xudmFyIEVYUFJFU1NJT05fRVNDQVBFID0gdG9FeHByZXNzaW9uKGVzY2FwZXMpO1xuXG4vKiBTdXJyb2dhdGUgcGFpcnMuICovXG52YXIgRVhQUkVTU0lPTl9TVVJST0dBVEVfUEFJUiA9IC9bXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdL2c7XG5cbi8qIE5vbi1BU0NJSSBjaGFyYWN0ZXJzLiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbnZhciBFWFBSRVNTSU9OX0JNUCA9IC9bXFx4MDEtXFx0XFx4MEJcXGZcXHgwRS1cXHgxRlxceDdGXFx4ODFcXHg4RFxceDhGXFx4OTBcXHg5RFxceEEwLVxcdUZGRkZdL2c7XG5cbi8qIEVuY29kZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYHZhbHVlYC4gKi9cbmZ1bmN0aW9uIGVuY29kZSh2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgc3Vic2V0ID0gc2V0dGluZ3Muc3Vic2V0O1xuICB2YXIgc2V0ID0gc3Vic2V0ID8gdG9FeHByZXNzaW9uKHN1YnNldCkgOiBFWFBSRVNTSU9OX0VTQ0FQRTtcbiAgdmFyIGVzY2FwZU9ubHkgPSBzZXR0aW5ncy5lc2NhcGVPbmx5O1xuICB2YXIgb21pdCA9IHNldHRpbmdzLm9taXRPcHRpb25hbFNlbWljb2xvbnM7XG5cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHNldCwgZnVuY3Rpb24gKGNoYXIsIHBvcywgdmFsKSB7XG4gICAgcmV0dXJuIG9uZShjaGFyLCB2YWwuY2hhckF0KHBvcyArIDEpLCBzZXR0aW5ncyk7XG4gIH0pO1xuXG4gIGlmIChzdWJzZXQgfHwgZXNjYXBlT25seSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZVxuICAgIC5yZXBsYWNlKEVYUFJFU1NJT05fU1VSUk9HQVRFX1BBSVIsIGZ1bmN0aW9uIChwYWlyLCBwb3MsIHZhbCkge1xuICAgICAgcmV0dXJuIHRvSGV4UmVmZXJlbmNlKFxuICAgICAgICAoKHBhaXIuY2hhckNvZGVBdCgwKSAtIDB4RDgwMCkgKiAweDQwMCkgK1xuICAgICAgICBwYWlyLmNoYXJDb2RlQXQoMSkgLSAweERDMDAgKyAweDEwMDAwLFxuICAgICAgICB2YWwuY2hhckF0KHBvcyArIDIpLFxuICAgICAgICBvbWl0XG4gICAgICApO1xuICAgIH0pXG4gICAgLnJlcGxhY2UoRVhQUkVTU0lPTl9CTVAsIGZ1bmN0aW9uIChjaGFyLCBwb3MsIHZhbCkge1xuICAgICAgcmV0dXJuIG9uZShjaGFyLCB2YWwuY2hhckF0KHBvcyArIDEpLCBzZXR0aW5ncyk7XG4gICAgfSk7XG59XG5cbi8qIFNob3J0Y3V0IHRvIGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gSFRNTC4gKi9cbmZ1bmN0aW9uIGVzY2FwZSh2YWx1ZSkge1xuICByZXR1cm4gZW5jb2RlKHZhbHVlLCB7XG4gICAgZXNjYXBlT25seTogdHJ1ZSxcbiAgICB1c2VOYW1lZFJlZmVyZW5jZXM6IHRydWVcbiAgfSk7XG59XG5cbi8qIEVuY29kZSBgY2hhcmAgYWNjb3JkaW5nIHRvIGBvcHRpb25zYC4gKi9cbmZ1bmN0aW9uIG9uZShjaGFyLCBuZXh0LCBvcHRpb25zKSB7XG4gIHZhciBzaG9ydGVzdCA9IG9wdGlvbnMudXNlU2hvcnRlc3RSZWZlcmVuY2VzO1xuICB2YXIgb21pdCA9IG9wdGlvbnMub21pdE9wdGlvbmFsU2VtaWNvbG9ucztcbiAgdmFyIG5hbWVkO1xuICB2YXIgbnVtZXJpYztcblxuICBpZiAoXG4gICAgKHNob3J0ZXN0IHx8IG9wdGlvbnMudXNlTmFtZWRSZWZlcmVuY2VzKSAmJlxuICAgIG93bi5jYWxsKGNoYXJhY3RlcnMsIGNoYXIpXG4gICkge1xuICAgIG5hbWVkID0gdG9OYW1lZChjaGFyYWN0ZXJzW2NoYXJdLCBuZXh0LCBvbWl0LCBvcHRpb25zLmF0dHJpYnV0ZSk7XG4gIH1cblxuICBpZiAoc2hvcnRlc3QgfHwgIW5hbWVkKSB7XG4gICAgbnVtZXJpYyA9IHRvSGV4UmVmZXJlbmNlKGNoYXIuY2hhckNvZGVBdCgwKSwgbmV4dCwgb21pdCk7XG4gIH1cblxuICBpZiAobmFtZWQgJiYgKCFzaG9ydGVzdCB8fCBuYW1lZC5sZW5ndGggPCBudW1lcmljLmxlbmd0aCkpIHtcbiAgICByZXR1cm4gbmFtZWQ7XG4gIH1cblxuICByZXR1cm4gbnVtZXJpYztcbn1cblxuLyogVHJhbnNmb3JtIGBjb2RlYCBpbnRvIGFuIGVudGl0eS4gKi9cbmZ1bmN0aW9uIHRvTmFtZWQobmFtZSwgbmV4dCwgb21pdCwgYXR0cmlidXRlKSB7XG4gIHZhciB2YWx1ZSA9ICcmJyArIG5hbWU7XG5cbiAgaWYgKFxuICAgIG9taXQgJiZcbiAgICBvd24uY2FsbChsZWdhY3ksIG5hbWUpICYmXG4gICAgZGFuZ2Vyb3VzLmluZGV4T2YobmFtZSkgPT09IC0xICYmXG4gICAgKCFhdHRyaWJ1dGUgfHwgKG5leHQgJiYgbmV4dCAhPT0gJz0nICYmICFhbHBoYW51bWVyaWNhbChuZXh0KSkpXG4gICkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZSArICc7Jztcbn1cblxuLyogVHJhbnNmb3JtIGBjb2RlYCBpbnRvIGEgaGV4YWRlY2ltYWwgY2hhcmFjdGVyIHJlZmVyZW5jZS4gKi9cbmZ1bmN0aW9uIHRvSGV4UmVmZXJlbmNlKGNvZGUsIG5leHQsIG9taXQpIHtcbiAgdmFyIHZhbHVlID0gJyYjeCcgKyBjb2RlLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICByZXR1cm4gb21pdCAmJiBuZXh0ICYmICFoZXhhZGVjaW1hbChuZXh0KSA/IHZhbHVlIDogdmFsdWUgKyAnOyc7XG59XG5cbi8qIENyZWF0ZSBhbiBleHByZXNzaW9uIGZvciBgY2hhcmFjdGVyc2AuICovXG5mdW5jdGlvbiB0b0V4cHJlc3Npb24oY2hhcmFjdGVycykge1xuICByZXR1cm4gbmV3IFJlZ0V4cCgnWycgKyBjaGFyYWN0ZXJzLmpvaW4oJycpICsgJ10nLCAnZycpO1xufVxuXG4vKiBDb25zdHJ1Y3QgdGhlIG1hcC4gKi9cbmZ1bmN0aW9uIGNvbnN0cnVjdCgpIHtcbiAgdmFyIGNoYXJzID0ge307XG4gIHZhciBuYW1lO1xuXG4gIGZvciAobmFtZSBpbiBlbnRpdGllcykge1xuICAgIGNoYXJzW2VudGl0aWVzW25hbWVdXSA9IG5hbWU7XG4gIH1cblxuICByZXR1cm4gY2hhcnM7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJyk7XG52YXIgZW50aXRpZXMgPSByZXF1aXJlKCdzdHJpbmdpZnktZW50aXRpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB0ZXh0O1xuXG4vKiBTdHJpbmdpZnkgYHRleHRgLiAqL1xuZnVuY3Rpb24gdGV4dChjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHZhbHVlID0gbm9kZS52YWx1ZTtcblxuICByZXR1cm4gaXNMaXRlcmFsKHBhcmVudCkgPyB2YWx1ZSA6IGVudGl0aWVzKHZhbHVlLCB4dGVuZChjdHguZW50aXRpZXMsIHtcbiAgICBzdWJzZXQ6IFsnPCcsICcmJ11cbiAgfSkpO1xufVxuXG4vKiBDaGVjayBpZiBjb250ZW50IG9mIGBub2RlYCBzaG91bGQgYmUgZXNjYXBlZC4gKi9cbmZ1bmN0aW9uIGlzTGl0ZXJhbChub2RlKSB7XG4gIHJldHVybiBub2RlICYmIChub2RlLnRhZ05hbWUgPT09ICdzY3JpcHQnIHx8IG5vZGUudGFnTmFtZSA9PT0gJ3N0eWxlJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gY2NvdW50O1xuXG5mdW5jdGlvbiBjY291bnQodmFsdWUsIGNoYXJhY3Rlcikge1xuICB2YXIgY291bnQgPSAwO1xuICB2YXIgaW5kZXg7XG5cbiAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGlmICh0eXBlb2YgY2hhcmFjdGVyICE9PSAnc3RyaW5nJyB8fCBjaGFyYWN0ZXIubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBjaGFyYWN0ZXInKTtcbiAgfVxuXG4gIGluZGV4ID0gdmFsdWUuaW5kZXhPZihjaGFyYWN0ZXIpO1xuXG4gIHdoaWxlIChpbmRleCAhPT0gLTEpIHtcbiAgICBjb3VudCsrO1xuICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZihjaGFyYWN0ZXIsIGluZGV4ICsgMSk7XG4gIH1cblxuICByZXR1cm4gY291bnQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJyk7XG52YXIgc3BhY2VzID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpLnN0cmluZ2lmeTtcbnZhciBjb21tYXMgPSByZXF1aXJlKCdjb21tYS1zZXBhcmF0ZWQtdG9rZW5zJykuc3RyaW5naWZ5O1xudmFyIGluZm9ybWF0aW9uID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24nKTtcbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJ3N0cmluZ2lmeS1lbnRpdGllcycpO1xudmFyIGtlYmFiID0gcmVxdWlyZSgna2ViYWItY2FzZScpO1xudmFyIGNjb3VudCA9IHJlcXVpcmUoJ2Njb3VudCcpO1xudmFyIGFsbCA9IHJlcXVpcmUoJy4vYWxsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZWxlbWVudDtcblxuLyogQ29uc3RhbnRzLiAqL1xudmFyIERBVEEgPSAnZGF0YSc7XG52YXIgRU1QVFkgPSAnJztcblxuLyogQ2hhcmFjdGVycy4gKi9cbnZhciBTUEFDRSA9ICcgJztcbnZhciBEUSA9ICdcIic7XG52YXIgU1EgPSAnXFwnJztcbnZhciBFUSA9ICc9JztcbnZhciBMVCA9ICc8JztcbnZhciBHVCA9ICc+JztcbnZhciBTTyA9ICcvJztcblxuLyogU3RyaW5naWZ5IGFuIGVsZW1lbnQgYG5vZGVgLiAqL1xuZnVuY3Rpb24gZWxlbWVudChjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5hbWUgPSBub2RlLnRhZ05hbWU7XG4gIHZhciBjb250ZW50ID0gYWxsKGN0eCwgbmFtZSA9PT0gJ3RlbXBsYXRlJyA/IG5vZGUuY29udGVudCA6IG5vZGUpO1xuICB2YXIgc2VsZkNsb3NpbmcgPSBjdHgudm9pZHMuaW5kZXhPZihuYW1lLnRvTG93ZXJDYXNlKCkpICE9PSAtMTtcbiAgdmFyIGF0dHJzID0gYXR0cmlidXRlcyhjdHgsIG5vZGUucHJvcGVydGllcyk7XG4gIHZhciBvbWl0ID0gY3R4Lm9taXQ7XG4gIHZhciB2YWx1ZSA9ICcnO1xuXG4gIC8qIElmIHRoZSBub2RlIGlzIGNhdGVnb3Jpc2VkIGFzIHZvaWQsIGJ1dCBpdCBoYXNcbiAgICogY2hpbGRyZW4sIHJlbW92ZSB0aGUgY2F0ZWdvcmlzYXRpb24uICBUaGlzXG4gICAqIGVuYWJsZXMgZm9yIGV4YW1wbGUgYG1lbnVpdGVtYHMsIHdoaWNoIGFyZVxuICAgKiB2b2lkIGluIFczQyBIVE1MIGJ1dCBub3Qgdm9pZCBpbiBXSEFUV0cgSFRNTCwgdG9cbiAgICogYmUgc3RyaW5naWZpZWQgcHJvcGVybHkuICovXG4gIHNlbGZDbG9zaW5nID0gY29udGVudCA/IGZhbHNlIDogc2VsZkNsb3Npbmc7XG5cbiAgaWYgKGF0dHJzIHx8ICFvbWl0IHx8ICFvbWl0Lm9wZW5pbmcobm9kZSwgaW5kZXgsIHBhcmVudCkpIHtcbiAgICB2YWx1ZSA9IExUICsgbmFtZSArIChhdHRycyA/IFNQQUNFICsgYXR0cnMgOiBFTVBUWSk7XG5cbiAgICBpZiAoc2VsZkNsb3NpbmcgJiYgY3R4LmNsb3NlKSB7XG4gICAgICBpZiAoIWN0eC50aWdodENsb3NlIHx8IGF0dHJzLmNoYXJBdChhdHRycy5sZW5ndGggLSAxKSA9PT0gU08pIHtcbiAgICAgICAgdmFsdWUgKz0gU1BBQ0U7XG4gICAgICB9XG5cbiAgICAgIHZhbHVlICs9IFNPO1xuICAgIH1cblxuICAgIHZhbHVlICs9IEdUO1xuICB9XG5cbiAgdmFsdWUgKz0gY29udGVudDtcblxuICBpZiAoIXNlbGZDbG9zaW5nICYmICghb21pdCB8fCAhb21pdC5jbG9zaW5nKG5vZGUsIGluZGV4LCBwYXJlbnQpKSkge1xuICAgIHZhbHVlICs9IExUICsgU08gKyBuYW1lICsgR1Q7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qIFN0cmluZ2lmeSBhbGwgYXR0cmlidXRlcy4gKi9cbmZ1bmN0aW9uIGF0dHJpYnV0ZXMoY3R4LCBwcm9wcykge1xuICB2YXIgdmFsdWVzID0gW107XG4gIHZhciBrZXk7XG4gIHZhciB2YWx1ZTtcbiAgdmFyIHJlc3VsdDtcbiAgdmFyIGxlbmd0aDtcbiAgdmFyIGluZGV4O1xuICB2YXIgbGFzdDtcblxuICBmb3IgKGtleSBpbiBwcm9wcykge1xuICAgIHZhbHVlID0gcHJvcHNba2V5XTtcblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXN1bHQgPSBhdHRyaWJ1dGUoY3R4LCBrZXksIHZhbHVlKTtcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcbiAgaW5kZXggPSAtMTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdCA9IHZhbHVlc1tpbmRleF07XG4gICAgbGFzdCA9IGN0eC50aWdodCAmJiByZXN1bHQuY2hhckF0KHJlc3VsdC5sZW5ndGggLSAxKTtcblxuICAgIC8qIEluIHRpZ2h0IG1vZGUsIGRvbuKAmXQgYWRkIGEgc3BhY2UgYWZ0ZXIgcXVvdGVkIGF0dHJpYnV0ZXMuICovXG4gICAgaWYgKGluZGV4ICE9PSBsZW5ndGggLSAxICYmIGxhc3QgIT09IERRICYmIGxhc3QgIT09IFNRKSB7XG4gICAgICB2YWx1ZXNbaW5kZXhdID0gcmVzdWx0ICsgU1BBQ0U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlcy5qb2luKEVNUFRZKTtcbn1cblxuLyogU3RyaW5naWZ5IG9uZSBhdHRyaWJ1dGUuICovXG5mdW5jdGlvbiBhdHRyaWJ1dGUoY3R4LCBrZXksIHZhbHVlKSB7XG4gIHZhciBpbmZvID0gaW5mb3JtYXRpb24oa2V5KSB8fCB7fTtcbiAgdmFyIG5hbWU7XG5cbiAgaWYgKFxuICAgIHZhbHVlID09IG51bGwgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWx1ZSkpIHx8XG4gICAgKCF2YWx1ZSAmJiBpbmZvLmJvb2xlYW4pIHx8XG4gICAgKHZhbHVlID09PSBmYWxzZSAmJiBpbmZvLm92ZXJsb2FkZWRCb29sZWFuKVxuICApIHtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICBuYW1lID0gYXR0cmlidXRlTmFtZShjdHgsIGtleSk7XG5cbiAgaWYgKCh2YWx1ZSAmJiBpbmZvLmJvb2xlYW4pIHx8ICh2YWx1ZSA9PT0gdHJ1ZSAmJiBpbmZvLm92ZXJsb2FkZWRCb29sZWFuKSkge1xuICAgIHJldHVybiBuYW1lO1xuICB9XG5cbiAgcmV0dXJuIG5hbWUgKyBhdHRyaWJ1dGVWYWx1ZShjdHgsIGtleSwgdmFsdWUpO1xufVxuXG4vKiBTdHJpbmdpZnkgdGhlIGF0dHJpYnV0ZSBuYW1lLiAqL1xuZnVuY3Rpb24gYXR0cmlidXRlTmFtZShjdHgsIGtleSkge1xuICB2YXIgaW5mbyA9IGluZm9ybWF0aW9uKGtleSkgfHwge307XG4gIHZhciBuYW1lID0gaW5mby5uYW1lIHx8IGtlYmFiKGtleSk7XG5cbiAgaWYgKFxuICAgIG5hbWUuc2xpY2UoMCwgREFUQS5sZW5ndGgpID09PSBEQVRBICYmXG4gICAgL1swLTldLy50ZXN0KG5hbWUuY2hhckF0KERBVEEubGVuZ3RoKSlcbiAgKSB7XG4gICAgbmFtZSA9IERBVEEgKyAnLScgKyBuYW1lLnNsaWNlKDQpO1xuICB9XG5cbiAgcmV0dXJuIGVudGl0aWVzKG5hbWUsIHh0ZW5kKGN0eC5lbnRpdGllcywge1xuICAgIHN1YnNldDogY3R4Lk5BTUVcbiAgfSkpO1xufVxuXG4vKiBTdHJpbmdpZnkgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4gKi9cbmZ1bmN0aW9uIGF0dHJpYnV0ZVZhbHVlKGN0eCwga2V5LCB2YWx1ZSkge1xuICB2YXIgaW5mbyA9IGluZm9ybWF0aW9uKGtleSkgfHwge307XG4gIHZhciBvcHRpb25zID0gY3R4LmVudGl0aWVzO1xuICB2YXIgcXVvdGUgPSBjdHgucXVvdGU7XG4gIHZhciBhbHRlcm5hdGl2ZSA9IGN0eC5hbHRlcm5hdGl2ZTtcbiAgdmFyIHVucXVvdGVkO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgLyogYHNwYWNlc2AgZG9lc27igJl0IGFjY2VwdCBhIHNlY29uZCBhcmd1bWVudCwgYnV0IGl04oCZc1xuICAgICAqIGdpdmVuIGhlcmUganVzdCB0byBrZWVwIHRoZSBjb2RlIGNsZWFuZXIuICovXG4gICAgdmFsdWUgPSAoaW5mby5jb21tYVNlcGFyYXRlZCA/IGNvbW1hcyA6IHNwYWNlcykodmFsdWUsIHtcbiAgICAgIHBhZExlZnQ6ICFjdHgudGlnaHRMaXN0c1xuICAgIH0pO1xuICB9XG5cbiAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGlmICh2YWx1ZSB8fCAhY3R4LmNvbGxhcHNlRW1wdHkpIHtcbiAgICB1bnF1b3RlZCA9IHZhbHVlO1xuXG4gICAgLyogQ2hlY2sgdW5xdW90ZWQgdmFsdWUuICovXG4gICAgaWYgKGN0eC51bnF1b3RlZCkge1xuICAgICAgdW5xdW90ZWQgPSBlbnRpdGllcyh2YWx1ZSwgeHRlbmQob3B0aW9ucywge1xuICAgICAgICBzdWJzZXQ6IGN0eC5VTlFVT1RFRCxcbiAgICAgICAgYXR0cmlidXRlOiB0cnVlXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyogSWYgYHZhbHVlYCBjb250YWlucyBlbnRpdGllcyB3aGVuIHVucXVvdGVkLi4uICovXG4gICAgaWYgKCFjdHgudW5xdW90ZWQgfHwgdW5xdW90ZWQgIT09IHZhbHVlKSB7XG4gICAgICAvKiBJZiB0aGUgYWx0ZXJuYXRpdmUgaXMgbGVzcyBjb21tb24gdGhhbiBgcXVvdGVgLCBzd2l0Y2guICovXG4gICAgICBpZiAoXG4gICAgICAgIGFsdGVybmF0aXZlICYmXG4gICAgICAgIGNjb3VudCh2YWx1ZSwgcXVvdGUpID4gY2NvdW50KHZhbHVlLCBhbHRlcm5hdGl2ZSlcbiAgICAgICkge1xuICAgICAgICBxdW90ZSA9IGFsdGVybmF0aXZlO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IGVudGl0aWVzKHZhbHVlLCB4dGVuZChvcHRpb25zLCB7XG4gICAgICAgIHN1YnNldDogcXVvdGUgPT09IFNRID8gY3R4LlNJTkdMRV9RVU9URUQgOiBjdHguRE9VQkxFX1FVT1RFRCxcbiAgICAgICAgYXR0cmlidXRlOiB0cnVlXG4gICAgICB9KSk7XG5cbiAgICAgIHZhbHVlID0gcXVvdGUgKyB2YWx1ZSArIHF1b3RlO1xuICAgIH1cblxuICAgIC8qIERvbuKAmXQgYWRkIGEgYD1gIGZvciB1bnF1b3RlZCBlbXB0aWVzLiAqL1xuICAgIHZhbHVlID0gdmFsdWUgPyBFUSArIHZhbHVlIDogdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZG9jdHlwZTtcblxuLyogU3RyaW5naWZ5IGEgZG9jdHlwZSBgbm9kZWAuICovXG5mdW5jdGlvbiBkb2N0eXBlKGN0eCwgbm9kZSkge1xuICB2YXIgcHViID0gbm9kZS5wdWJsaWM7XG4gIHZhciBzeXMgPSBub2RlLnN5c3RlbTtcbiAgdmFyIHZhbCA9ICc8IURPQ1RZUEUnO1xuXG4gIGlmICghbm9kZS5uYW1lKSB7XG4gICAgcmV0dXJuIHZhbCArICc+JztcbiAgfVxuXG4gIHZhbCArPSAnICcgKyBub2RlLm5hbWU7XG5cbiAgaWYgKHB1YiAhPSBudWxsKSB7XG4gICAgdmFsICs9ICcgUFVCTElDICcgKyBzbWFydChwdWIpO1xuICB9IGVsc2UgaWYgKHN5cyAhPSBudWxsKSB7XG4gICAgdmFsICs9ICcgU1lTVEVNJztcbiAgfVxuXG4gIGlmIChzeXMgIT0gbnVsbCkge1xuICAgIHZhbCArPSAnICcgKyBzbWFydChzeXMpO1xuICB9XG5cbiAgcmV0dXJuIHZhbCArICc+Jztcbn1cblxuZnVuY3Rpb24gc21hcnQodmFsdWUpIHtcbiAgdmFyIHF1b3RlID0gdmFsdWUuaW5kZXhPZignXCInKSA9PT0gLTEgPyAnXCInIDogJ1xcJyc7XG4gIHJldHVybiBxdW90ZSArIHZhbHVlICsgcXVvdGU7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gY29tbWVudDtcblxuLyogU3RyaW5naWZ5IGEgY29tbWVudCBgbm9kZWAuICovXG5mdW5jdGlvbiBjb21tZW50KGN0eCwgbm9kZSkge1xuICByZXR1cm4gJzwhLS0nICsgbm9kZS52YWx1ZSArICctLT4nO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdGV4dCA9IHJlcXVpcmUoJy4vdGV4dCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhdztcblxuLyogU3RyaW5naWZ5IGByYXdgLiAqL1xuZnVuY3Rpb24gcmF3KGN0eCwgbm9kZSkge1xuICByZXR1cm4gY3R4LmRhbmdlcm91cyA/IG5vZGUudmFsdWUgOiB0ZXh0KGN0eCwgbm9kZSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gb25lO1xuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cbnZhciBoYW5kbGVycyA9IHt9O1xuXG5oYW5kbGVycy5yb290ID0gcmVxdWlyZSgnLi9hbGwnKTtcbmhhbmRsZXJzLnRleHQgPSByZXF1aXJlKCcuL3RleHQnKTtcbmhhbmRsZXJzLmVsZW1lbnQgPSByZXF1aXJlKCcuL2VsZW1lbnQnKTtcbmhhbmRsZXJzLmRvY3R5cGUgPSByZXF1aXJlKCcuL2RvY3R5cGUnKTtcbmhhbmRsZXJzLmNvbW1lbnQgPSByZXF1aXJlKCcuL2NvbW1lbnQnKTtcbmhhbmRsZXJzLnJhdyA9IHJlcXVpcmUoJy4vcmF3Jyk7XG5cbi8qIFN0cmluZ2lmeSBgbm9kZWAuICovXG5mdW5jdGlvbiBvbmUoY3R4LCBub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciB0eXBlID0gbm9kZSAmJiBub2RlLnR5cGU7XG5cbiAgaWYgKCF0eXBlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBub2RlLCBub3QgYCcgKyBub2RlICsgJ2AnKTtcbiAgfVxuXG4gIGlmICghb3duLmNhbGwoaGFuZGxlcnMsIHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29tcGlsZSB1bmtub3duIG5vZGUgYCcgKyB0eXBlICsgJ2AnKTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVyc1t0eXBlXShjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdm9pZHMgPSByZXF1aXJlKCdodG1sLXZvaWQtZWxlbWVudHMnKTtcbnZhciBvbWlzc2lvbiA9IHJlcXVpcmUoJy4vb21pc3Npb24nKTtcbnZhciBvbmUgPSByZXF1aXJlKCcuL29uZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRvSFRNTDtcblxuLyogQ2hhcmFjdGVycy4gKi9cbnZhciBOVUxMID0gJ1xcMCc7XG52YXIgQU1QID0gJyYnO1xudmFyIFNQQUNFID0gJyAnO1xudmFyIFRBQiA9ICdcXHQnO1xudmFyIEdSID0gJ2AnO1xudmFyIERRID0gJ1wiJztcbnZhciBTUSA9ICdcXCcnO1xudmFyIEVRID0gJz0nO1xudmFyIExUID0gJzwnO1xudmFyIEdUID0gJz4nO1xudmFyIFNPID0gJy8nO1xudmFyIExGID0gJ1xcbic7XG52YXIgQ1IgPSAnXFxyJztcbnZhciBGRiA9ICdcXGYnO1xuXG4vKiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhdHRyaWJ1dGUtbmFtZS1zdGF0ZSAqL1xudmFyIE5BTUUgPSBbQU1QLCBTUEFDRSwgVEFCLCBMRiwgQ1IsIEZGLCBTTywgR1QsIEVRXTtcbnZhciBDTEVBTl9OQU1FID0gTkFNRS5jb25jYXQoTlVMTCwgRFEsIFNRLCBMVCk7XG5cbi8qIEluIHNhZmUgbW9kZSwgYWxsIGF0dHJpYnV0ZSB2YWx1ZXMgY29udGFpbiBEUSAoYFwiYCksXG4gKiBTUSAoYCdgKSwgYW5kIEdSIChgYCBgIGBgKSwgYXMgdGhvc2UgY2FuIGNyZWF0ZSBYU1NcbiAqIGlzc3VlcyBpbiBvbGRlciBicm93c2VyczpcbiAqIC0gaHR0cHM6Ly9odG1sNXNlYy5vcmcvIzU5XG4gKiAtIGh0dHBzOi8vaHRtbDVzZWMub3JnLyMxMDJcbiAqIC0gaHR0cHM6Ly9odG1sNXNlYy5vcmcvIzEwOCAqL1xudmFyIFFVT1RFUyA9IFtEUSwgU1EsIEdSXTtcblxuLyogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLXZhbHVlLSh1bnF1b3RlZCktc3RhdGUgKi9cbnZhciBVUV9WQUxVRSA9IFtBTVAsIFNQQUNFLCBUQUIsIExGLCBDUiwgRkYsIEdUXTtcbnZhciBVUV9WQUxVRV9DTEVBTiA9IFVRX1ZBTFVFLmNvbmNhdChOVUxMLCBEUSwgU1EsIExULCBFUSwgR1IpO1xuXG4vKiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhdHRyaWJ1dGUtdmFsdWUtKHNpbmdsZS1xdW90ZWQpLXN0YXRlICovXG52YXIgU1FfVkFMVUUgPSBbQU1QLCBTUV07XG52YXIgU1FfVkFMVUVfQ0xFQU4gPSBTUV9WQUxVRS5jb25jYXQoTlVMTCk7XG5cbi8qIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2F0dHJpYnV0ZS12YWx1ZS0oZG91YmxlLXF1b3RlZCktc3RhdGUgKi9cbnZhciBEUV9WQUxVRSA9IFtBTVAsIERRXTtcbnZhciBEUV9WQUxVRV9DTEVBTiA9IERRX1ZBTFVFLmNvbmNhdChOVUxMKTtcblxuLyogU3RyaW5naWZ5IHRoZSBnaXZlbiBIQVNUIG5vZGUuICovXG5mdW5jdGlvbiB0b0hUTUwobm9kZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgcXVvdGUgPSBzZXR0aW5ncy5xdW90ZSB8fCBEUTtcbiAgdmFyIHNtYXJ0ID0gc2V0dGluZ3MucXVvdGVTbWFydDtcbiAgdmFyIGVycm9ycyA9IHNldHRpbmdzLmFsbG93UGFyc2VFcnJvcnM7XG4gIHZhciBjaGFyYWN0ZXJzID0gc2V0dGluZ3MuYWxsb3dEYW5nZXJvdXNDaGFyYWN0ZXJzO1xuICB2YXIgYWx0ZXJuYXRpdmUgPSBxdW90ZSA9PT0gRFEgPyBTUSA6IERRO1xuICB2YXIgbmFtZSA9IGVycm9ycyA/IE5BTUUgOiBDTEVBTl9OQU1FO1xuICB2YXIgdW5xdW90ZWQgPSBlcnJvcnMgPyBVUV9WQUxVRSA6IFVRX1ZBTFVFX0NMRUFOO1xuICB2YXIgc2luZ2xlUXVvdGVkID0gZXJyb3JzID8gU1FfVkFMVUUgOiBTUV9WQUxVRV9DTEVBTjtcbiAgdmFyIGRvdWJsZVF1b3RlZCA9IGVycm9ycyA/IERRX1ZBTFVFIDogRFFfVkFMVUVfQ0xFQU47XG5cbiAgaWYgKHF1b3RlICE9PSBEUSAmJiBxdW90ZSAhPT0gU1EpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnSW52YWxpZCBxdW90ZSBgJyArIHF1b3RlICsgJ2AsIGV4cGVjdGVkIGAnICtcbiAgICAgIFNRICsgJ2Agb3IgYCcgKyBEUSArICdgJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gb25lKHtcbiAgICBOQU1FOiBuYW1lLmNvbmNhdChjaGFyYWN0ZXJzID8gW10gOiBRVU9URVMpLFxuICAgIFVOUVVPVEVEOiB1bnF1b3RlZC5jb25jYXQoY2hhcmFjdGVycyA/IFtdIDogUVVPVEVTKSxcbiAgICBET1VCTEVfUVVPVEVEOiBkb3VibGVRdW90ZWQuY29uY2F0KGNoYXJhY3RlcnMgPyBbXSA6IFFVT1RFUyksXG4gICAgU0lOR0xFX1FVT1RFRDogc2luZ2xlUXVvdGVkLmNvbmNhdChjaGFyYWN0ZXJzID8gW10gOiBRVU9URVMpLFxuICAgIG9taXQ6IHNldHRpbmdzLm9taXRPcHRpb25hbFRhZ3MgJiYgb21pc3Npb24sXG4gICAgcXVvdGU6IHF1b3RlLFxuICAgIGFsdGVybmF0aXZlOiBzbWFydCA/IGFsdGVybmF0aXZlIDogbnVsbCxcbiAgICB1bnF1b3RlZDogQm9vbGVhbihzZXR0aW5ncy5wcmVmZXJVbnF1b3RlZCksXG4gICAgdGlnaHQ6IHNldHRpbmdzLnRpZ2h0QXR0cmlidXRlcyxcbiAgICB0aWdodExpc3RzOiBzZXR0aW5ncy50aWdodENvbW1hU2VwYXJhdGVkTGlzdHMsXG4gICAgdGlnaHRDbG9zZTogc2V0dGluZ3MudGlnaHRTZWxmQ2xvc2luZyxcbiAgICBjb2xsYXBzZUVtcHR5OiBzZXR0aW5ncy5jb2xsYXBzZUVtcHR5QXR0cmlidXRlcyxcbiAgICBkYW5nZXJvdXM6IHNldHRpbmdzLmFsbG93RGFuZ2Vyb3VzSFRNTCxcbiAgICB2b2lkczogc2V0dGluZ3Mudm9pZHMgfHwgdm9pZHMuY29uY2F0KCksXG4gICAgZW50aXRpZXM6IHNldHRpbmdzLmVudGl0aWVzIHx8IHt9LFxuICAgIGNsb3NlOiBzZXR0aW5ncy5jbG9zZVNlbGZDbG9zaW5nXG4gIH0sIG5vZGUpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpO1xudmFyIHRvSFRNTCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC10by1odG1sJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5naWZ5O1xuXG5mdW5jdGlvbiBzdHJpbmdpZnkoY29uZmlnKSB7XG4gIHZhciBzZXR0aW5ncyA9IHh0ZW5kKGNvbmZpZywgdGhpcy5kYXRhKCdzZXR0aW5ncycpKTtcblxuICB0aGlzLkNvbXBpbGVyID0gY29tcGlsZXI7XG5cbiAgZnVuY3Rpb24gY29tcGlsZXIodHJlZSkge1xuICAgIHJldHVybiB0b0hUTUwodHJlZSwgc2V0dGluZ3MpO1xuICB9XG59XG4iLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGVcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gIH1cbn1cbiIsIi8qKlxuICogQGF1dGhvciBUaXR1cyBXb3JtZXJcbiAqIEBjb3B5cmlnaHQgMjAxNSBUaXR1cyBXb3JtZXJcbiAqIEBsaWNlbnNlIE1JVFxuICogQG1vZHVsZSB1bmhlcml0XG4gKiBAZmlsZW92ZXJ2aWV3IENyZWF0ZSBhIGN1c3RvbSBjb25zdHJ1Y3RvciB3aGljaCBjYW4gYmUgbW9kaWZpZWRcbiAqICAgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG9yaWdpbmFsIGNsYXNzLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyogRGVwZW5kZW5jaWVzLiAqL1xudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbi8qIEV4cG9zZS4gKi9cbm1vZHVsZS5leHBvcnRzID0gdW5oZXJpdDtcblxuLyoqXG4gKiBDcmVhdGUgYSBjdXN0b20gY29uc3RydWN0b3Igd2hpY2ggY2FuIGJlIG1vZGlmaWVkXG4gKiB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3JpZ2luYWwgY2xhc3MuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gU3VwZXIgLSBTdXBlci1jbGFzcy5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSAtIENvbnN0cnVjdG9yIGFjdGluZyBsaWtlIGBTdXBlcmAsXG4gKiAgIHdoaWNoIGNhbiBiZSBtb2RpZmllZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3JpZ2luYWxcbiAqICAgY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIHVuaGVyaXQoU3VwZXIpIHtcbiAgdmFyIHJlc3VsdDtcbiAgdmFyIGtleTtcbiAgdmFyIHZhbHVlO1xuXG4gIGluaGVyaXRzKE9mLCBTdXBlcik7XG4gIGluaGVyaXRzKEZyb20sIE9mKTtcblxuICAvKiBDbG9uZSB2YWx1ZXMuICovXG4gIHJlc3VsdCA9IE9mLnByb3RvdHlwZTtcblxuICBmb3IgKGtleSBpbiByZXN1bHQpIHtcbiAgICB2YWx1ZSA9IHJlc3VsdFtrZXldO1xuXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gJ2NvbmNhdCcgaW4gdmFsdWUgPyB2YWx1ZS5jb25jYXQoKSA6IHh0ZW5kKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gT2Y7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yIGFjY2VwdGluZyBhIHNpbmdsZSBhcmd1bWVudCxcbiAgICogd2hpY2ggaXRzZWxmIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAgICovXG4gIGZ1bmN0aW9uIEZyb20ocGFyYW1ldGVycykge1xuICAgIHJldHVybiBTdXBlci5hcHBseSh0aGlzLCBwYXJhbWV0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RvciBhY2NlcHRpbmcgdmFyaWFkaWMgYXJndW1lbnRzLlxuICAgKi9cbiAgZnVuY3Rpb24gT2YoKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIE9mKSkge1xuICAgICAgcmV0dXJuIG5ldyBGcm9tKGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cbn1cbiIsIi8qKlxuICogQGF1dGhvciBUaXR1cyBXb3JtZXJcbiAqIEBjb3B5cmlnaHQgMjAxNiBUaXR1cyBXb3JtZXJcbiAqIEBsaWNlbnNlIE1JVFxuICogQG1vZHVsZSBzdGF0ZS10b2dnbGVcbiAqIEBmaWxlb3ZlcnZpZXcgRW50ZXIvZXhpdCBhIHN0YXRlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyogZXNsaW50LWVudiBjb21tb25qcyAqL1xuXG4vKiBFeHBvc2UuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnk7XG5cbi8qKlxuICogQ29uc3RydWN0IGEgc3RhdGUgYHRvZ2dsZXJgOiBhIGZ1bmN0aW9uIHdoaWNoIGludmVyc2VzXG4gKiBgcHJvcGVydHlgIGluIGNvbnRleHQgYmFzZWQgb24gaXRzIGN1cnJlbnQgdmFsdWUuXG4gKiBUaGUgYnkgYHRvZ2dsZXJgIHJldHVybmVkIGZ1bmN0aW9uIHJlc3RvcmVzIHRoYXQgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFByb3BlcnR5IHRvIHRvZ2dsZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhdGUgLSBEZWZhdWx0IHN0YXRlLlxuICogQHBhcmFtIHtPYmplY3Q/fSBbY3R4XSAtIENvbnRleHQgb2JqZWN0LlxuICogQHJldHVybiB7RnVuY3Rpb259IC0gRW50ZXIuXG4gKi9cbmZ1bmN0aW9uIGZhY3Rvcnkoa2V5LCBzdGF0ZSwgY3R4KSB7XG4gIC8qKlxuICAgKiBFbnRlciBhIHN0YXRlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn0gLSBFeGl0IHN0YXRlLlxuICAgKi9cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY29udGV4dCA9IGN0eCB8fCB0aGlzO1xuICAgIHZhciBjdXJyZW50ID0gY29udGV4dFtrZXldO1xuXG4gICAgY29udGV4dFtrZXldID0gIXN0YXRlO1xuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIHN0YXRlIHRvIGl0cyB2YWx1ZSBiZWZvcmUgZW50ZXJpbmcuXG4gICAgICovXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnRleHRba2V5XSA9IGN1cnJlbnQ7XG4gICAgfTtcbiAgfTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5O1xuXG4vKiBGYWN0b3J5IHRvIGRlLWVzY2FwZSBhIHZhbHVlLCBiYXNlZCBvbiBhIGxpc3QgYXQgYGtleWBcbiAqIGluIGBjdHhgLiAqL1xuZnVuY3Rpb24gZmFjdG9yeShjdHgsIGtleSkge1xuICByZXR1cm4gdW5lc2NhcGU7XG5cbiAgLyogRGUtZXNjYXBlIGEgc3RyaW5nIHVzaW5nIHRoZSBleHByZXNzaW9uIGF0IGBrZXlgXG4gICAqIGluIGBjdHhgLiAqL1xuICBmdW5jdGlvbiB1bmVzY2FwZSh2YWx1ZSkge1xuICAgIHZhciBwcmV2ID0gMDtcbiAgICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKCdcXFxcJyk7XG4gICAgdmFyIGVzY2FwZSA9IGN0eFtrZXldO1xuICAgIHZhciBxdWV1ZSA9IFtdO1xuICAgIHZhciBjaGFyYWN0ZXI7XG5cbiAgICB3aGlsZSAoaW5kZXggIT09IC0xKSB7XG4gICAgICBxdWV1ZS5wdXNoKHZhbHVlLnNsaWNlKHByZXYsIGluZGV4KSk7XG4gICAgICBwcmV2ID0gaW5kZXggKyAxO1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KHByZXYpO1xuXG4gICAgICAvKiBJZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpcyBub3QgYSB2YWxpZCBlc2NhcGUsXG4gICAgICAgKiBhZGQgdGhlIHNsYXNoLiAqL1xuICAgICAgaWYgKCFjaGFyYWN0ZXIgfHwgZXNjYXBlLmluZGV4T2YoY2hhcmFjdGVyKSA9PT0gLTEpIHtcbiAgICAgICAgcXVldWUucHVzaCgnXFxcXCcpO1xuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHZhbHVlLmluZGV4T2YoJ1xcXFwnLCBwcmV2KTtcbiAgICB9XG5cbiAgICBxdWV1ZS5wdXNoKHZhbHVlLnNsaWNlKHByZXYpKTtcblxuICAgIHJldHVybiBxdWV1ZS5qb2luKCcnKTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBEZXBlbmRlbmNpZXMuICovXG52YXIgY2hhcmFjdGVyRW50aXRpZXMgPSByZXF1aXJlKCdjaGFyYWN0ZXItZW50aXRpZXMnKTtcbnZhciBsZWdhY3kgPSByZXF1aXJlKCdjaGFyYWN0ZXItZW50aXRpZXMtbGVnYWN5Jyk7XG52YXIgaW52YWxpZCA9IHJlcXVpcmUoJ2NoYXJhY3Rlci1yZWZlcmVuY2UtaW52YWxpZCcpO1xudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJyk7XG52YXIgaGV4YWRlY2ltYWwgPSByZXF1aXJlKCdpcy1oZXhhZGVjaW1hbCcpO1xudmFyIGFscGhhbnVtZXJpY2FsID0gcmVxdWlyZSgnaXMtYWxwaGFudW1lcmljYWwnKTtcblxuLyogRXhwb3NlLiAqL1xubW9kdWxlLmV4cG9ydHMgPSB3cmFwcGVyO1xuXG4vKiBNZXRob2RzLiAqL1xudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5O1xudmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG52YXIgbm9vcCA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuLyogQ2hhcmFjdGVycy4gKi9cbnZhciBSRVBMQUNFTUVOVCA9ICdcXHVGRkZEJztcbnZhciBGT1JNX0ZFRUQgPSAnXFxmJztcbnZhciBBTVBFUlNBTkQgPSAnJic7XG52YXIgT0NUT1RIT1JQID0gJyMnO1xudmFyIFNFTUlDT0xPTiA9ICc7JztcbnZhciBORVdMSU5FID0gJ1xcbic7XG52YXIgWF9MT1dFUiA9ICd4JztcbnZhciBYX1VQUEVSID0gJ1gnO1xudmFyIFNQQUNFID0gJyAnO1xudmFyIExFU1NfVEhBTiA9ICc8JztcbnZhciBFUVVBTCA9ICc9JztcbnZhciBFTVBUWSA9ICcnO1xudmFyIFRBQiA9ICdcXHQnO1xuXG4vKiBEZWZhdWx0IHNldHRpbmdzLiAqL1xudmFyIGRlZmF1bHRzID0ge1xuICB3YXJuaW5nOiBudWxsLFxuICByZWZlcmVuY2U6IG51bGwsXG4gIHRleHQ6IG51bGwsXG4gIHdhcm5pbmdDb250ZXh0OiBudWxsLFxuICByZWZlcmVuY2VDb250ZXh0OiBudWxsLFxuICB0ZXh0Q29udGV4dDogbnVsbCxcbiAgcG9zaXRpb246IHt9LFxuICBhZGRpdGlvbmFsOiBudWxsLFxuICBhdHRyaWJ1dGU6IGZhbHNlLFxuICBub25UZXJtaW5hdGVkOiB0cnVlXG59O1xuXG4vKiBSZWZlcmVuY2UgdHlwZXMuICovXG52YXIgTkFNRUQgPSAnbmFtZWQnO1xudmFyIEhFWEFERUNJTUFMID0gJ2hleGFkZWNpbWFsJztcbnZhciBERUNJTUFMID0gJ2RlY2ltYWwnO1xuXG4vKiBNYXAgb2YgYmFzZXMuICovXG52YXIgQkFTRSA9IHt9O1xuXG5CQVNFW0hFWEFERUNJTUFMXSA9IDE2O1xuQkFTRVtERUNJTUFMXSA9IDEwO1xuXG4vKiBNYXAgb2YgdHlwZXMgdG8gdGVzdHMuIEVhY2ggdHlwZSBvZiBjaGFyYWN0ZXIgcmVmZXJlbmNlXG4gKiBhY2NlcHRzIGRpZmZlcmVudCBjaGFyYWN0ZXJzLiBUaGlzIHRlc3QgaXMgdXNlZCB0b1xuICogZGV0ZWN0IHdoZXRoZXIgYSByZWZlcmVuY2UgaGFzIGVuZGVkIChhcyB0aGUgc2VtaWNvbG9uXG4gKiBpcyBub3Qgc3RyaWN0bHkgbmVlZGVkKS4gKi9cbnZhciBURVNUUyA9IHt9O1xuXG5URVNUU1tOQU1FRF0gPSBhbHBoYW51bWVyaWNhbDtcblRFU1RTW0RFQ0lNQUxdID0gZGVjaW1hbDtcblRFU1RTW0hFWEFERUNJTUFMXSA9IGhleGFkZWNpbWFsO1xuXG4vKiBXYXJuaW5nIG1lc3NhZ2VzLiAqL1xudmFyIE5BTUVEX05PVF9URVJNSU5BVEVEID0gMTtcbnZhciBOVU1FUklDX05PVF9URVJNSU5BVEVEID0gMjtcbnZhciBOQU1FRF9FTVBUWSA9IDM7XG52YXIgTlVNRVJJQ19FTVBUWSA9IDQ7XG52YXIgTkFNRURfVU5LTk9XTiA9IDU7XG52YXIgTlVNRVJJQ19ESVNBTExPV0VEID0gNjtcbnZhciBOVU1FUklDX1BST0hJQklURUQgPSA3O1xuXG52YXIgTlVNRVJJQ19SRUZFUkVOQ0UgPSAnTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyc7XG52YXIgTkFNRURfUkVGRVJFTkNFID0gJ05hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzJztcbnZhciBURVJNSU5BVEVEID0gJyBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgYSBzZW1pY29sb24nO1xudmFyIFZPSUQgPSAnIGNhbm5vdCBiZSBlbXB0eSc7XG5cbnZhciBNRVNTQUdFUyA9IHt9O1xuXG5NRVNTQUdFU1tOQU1FRF9OT1RfVEVSTUlOQVRFRF0gPSBOQU1FRF9SRUZFUkVOQ0UgKyBURVJNSU5BVEVEO1xuTUVTU0FHRVNbTlVNRVJJQ19OT1RfVEVSTUlOQVRFRF0gPSBOVU1FUklDX1JFRkVSRU5DRSArIFRFUk1JTkFURUQ7XG5NRVNTQUdFU1tOQU1FRF9FTVBUWV0gPSBOQU1FRF9SRUZFUkVOQ0UgKyBWT0lEO1xuTUVTU0FHRVNbTlVNRVJJQ19FTVBUWV0gPSBOVU1FUklDX1JFRkVSRU5DRSArIFZPSUQ7XG5NRVNTQUdFU1tOQU1FRF9VTktOT1dOXSA9IE5BTUVEX1JFRkVSRU5DRSArICcgbXVzdCBiZSBrbm93bic7XG5NRVNTQUdFU1tOVU1FUklDX0RJU0FMTE9XRURdID0gTlVNRVJJQ19SRUZFUkVOQ0UgKyAnIGNhbm5vdCBiZSBkaXNhbGxvd2VkJztcbk1FU1NBR0VTW05VTUVSSUNfUFJPSElCSVRFRF0gPSBOVU1FUklDX1JFRkVSRU5DRSArICcgY2Fubm90IGJlIG91dHNpZGUgdGhlICcgK1xuICAgICdwZXJtaXNzaWJsZSBVbmljb2RlIHJhbmdlJztcblxuLyogV3JhcCB0byBlbnN1cmUgY2xlYW4gcGFyYW1ldGVycyBhcmUgZ2l2ZW4gdG8gYHBhcnNlYC4gKi9cbmZ1bmN0aW9uIHdyYXBwZXIodmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0ge307XG4gIHZhciBvcHRpb247XG4gIHZhciBrZXk7XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgZm9yIChrZXkgaW4gZGVmYXVsdHMpIHtcbiAgICBvcHRpb24gPSBvcHRpb25zW2tleV07XG4gICAgc2V0dGluZ3Nba2V5XSA9IG9wdGlvbiA9PT0gbnVsbCB8fCBvcHRpb24gPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRzW2tleV0gOiBvcHRpb247XG4gIH1cblxuICBpZiAoc2V0dGluZ3MucG9zaXRpb24uaW5kZW50IHx8IHNldHRpbmdzLnBvc2l0aW9uLnN0YXJ0KSB7XG4gICAgc2V0dGluZ3MuaW5kZW50ID0gc2V0dGluZ3MucG9zaXRpb24uaW5kZW50IHx8IFtdO1xuICAgIHNldHRpbmdzLnBvc2l0aW9uID0gc2V0dGluZ3MucG9zaXRpb24uc3RhcnQ7XG4gIH1cblxuICByZXR1cm4gcGFyc2UodmFsdWUsIHNldHRpbmdzKTtcbn1cblxuLyogUGFyc2UgZW50aXRpZXMuICovXG5mdW5jdGlvbiBwYXJzZSh2YWx1ZSwgc2V0dGluZ3MpIHtcbiAgdmFyIGFkZGl0aW9uYWwgPSBzZXR0aW5ncy5hZGRpdGlvbmFsO1xuICB2YXIgbm9uVGVybWluYXRlZCA9IHNldHRpbmdzLm5vblRlcm1pbmF0ZWQ7XG4gIHZhciBoYW5kbGVUZXh0ID0gc2V0dGluZ3MudGV4dDtcbiAgdmFyIGhhbmRsZVJlZmVyZW5jZSA9IHNldHRpbmdzLnJlZmVyZW5jZTtcbiAgdmFyIGhhbmRsZVdhcm5pbmcgPSBzZXR0aW5ncy53YXJuaW5nO1xuICB2YXIgdGV4dENvbnRleHQgPSBzZXR0aW5ncy50ZXh0Q29udGV4dDtcbiAgdmFyIHJlZmVyZW5jZUNvbnRleHQgPSBzZXR0aW5ncy5yZWZlcmVuY2VDb250ZXh0O1xuICB2YXIgd2FybmluZ0NvbnRleHQgPSBzZXR0aW5ncy53YXJuaW5nQ29udGV4dDtcbiAgdmFyIHBvcyA9IHNldHRpbmdzLnBvc2l0aW9uO1xuICB2YXIgaW5kZW50ID0gc2V0dGluZ3MuaW5kZW50IHx8IFtdO1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGluZXMgPSAtMTtcbiAgdmFyIGNvbHVtbiA9IHBvcy5jb2x1bW4gfHwgMTtcbiAgdmFyIGxpbmUgPSBwb3MubGluZSB8fCAxO1xuICB2YXIgcXVldWUgPSBFTVBUWTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgZW50aXR5Q2hhcmFjdGVycztcbiAgdmFyIHRlcm1pbmF0ZWQ7XG4gIHZhciBjaGFyYWN0ZXJzO1xuICB2YXIgY2hhcmFjdGVyO1xuICB2YXIgcmVmZXJlbmNlO1xuICB2YXIgZm9sbG93aW5nO1xuICB2YXIgd2FybmluZztcbiAgdmFyIHJlYXNvbjtcbiAgdmFyIG91dHB1dDtcbiAgdmFyIGVudGl0eTtcbiAgdmFyIGJlZ2luO1xuICB2YXIgc3RhcnQ7XG4gIHZhciB0eXBlO1xuICB2YXIgdGVzdDtcbiAgdmFyIHByZXY7XG4gIHZhciBuZXh0O1xuICB2YXIgZGlmZjtcbiAgdmFyIGVuZDtcblxuICAvKiBDYWNoZSB0aGUgY3VycmVudCBwb2ludC4gKi9cbiAgcHJldiA9IG5vdygpO1xuXG4gIC8qIFdyYXAgYGhhbmRsZVdhcm5pbmdgLiAqL1xuICB3YXJuaW5nID0gaGFuZGxlV2FybmluZyA/IHBhcnNlRXJyb3IgOiBub29wO1xuXG4gIC8qIEVuc3VyZSB0aGUgYWxnb3JpdGhtIHdhbGtzIG92ZXIgdGhlIGZpcnN0IGNoYXJhY3RlclxuICAgKiBhbmQgdGhlIGVuZCAoaW5jbHVzaXZlKS4gKi9cbiAgaW5kZXgtLTtcbiAgbGVuZ3RoKys7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAvKiBJZiB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIHdhcyBhIG5ld2xpbmUuICovXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gTkVXTElORSkge1xuICAgICAgY29sdW1uID0gaW5kZW50W2xpbmVzXSB8fCAxO1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IGF0KGluZGV4KTtcblxuICAgIC8qIEhhbmRsZSBhbnl0aGluZyBvdGhlciB0aGFuIGFuIGFtcGVyc2FuZCxcbiAgICAgKiBpbmNsdWRpbmcgbmV3bGluZXMgYW5kIEVPRi4gKi9cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBBTVBFUlNBTkQpIHtcbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IE5FV0xJTkUpIHtcbiAgICAgICAgbGluZSsrO1xuICAgICAgICBsaW5lcysrO1xuICAgICAgICBjb2x1bW4gPSAwO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhcmFjdGVyKSB7XG4gICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgICAgY29sdW1uKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmbHVzaCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb2xsb3dpbmcgPSBhdChpbmRleCArIDEpO1xuXG4gICAgICAvKiBUaGUgYmVoYXZpb3VyIGRlcGVuZHMgb24gdGhlIGlkZW50aXR5IG9mIHRoZSBuZXh0XG4gICAgICAgKiBjaGFyYWN0ZXIuICovXG4gICAgICBpZiAoXG4gICAgICAgIGZvbGxvd2luZyA9PT0gVEFCIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gTkVXTElORSB8fFxuICAgICAgICBmb2xsb3dpbmcgPT09IEZPUk1fRkVFRCB8fFxuICAgICAgICBmb2xsb3dpbmcgPT09IFNQQUNFIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gTEVTU19USEFOIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gQU1QRVJTQU5EIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gRU1QVFkgfHxcbiAgICAgICAgKGFkZGl0aW9uYWwgJiYgZm9sbG93aW5nID09PSBhZGRpdGlvbmFsKVxuICAgICAgKSB7XG4gICAgICAgIC8qIE5vdCBhIGNoYXJhY3RlciByZWZlcmVuY2UuIE5vIGNoYXJhY3RlcnNcbiAgICAgICAgICogYXJlIGNvbnN1bWVkLCBhbmQgbm90aGluZyBpcyByZXR1cm5lZC5cbiAgICAgICAgICogVGhpcyBpcyBub3QgYW4gZXJyb3IsIGVpdGhlci4gKi9cbiAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgICBjb2x1bW4rKztcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc3RhcnQgPSBpbmRleCArIDE7XG4gICAgICBiZWdpbiA9IHN0YXJ0O1xuICAgICAgZW5kID0gc3RhcnQ7XG5cbiAgICAgIC8qIE51bWVyaWNhbCBlbnRpdHkuICovXG4gICAgICBpZiAoZm9sbG93aW5nICE9PSBPQ1RPVEhPUlApIHtcbiAgICAgICAgdHlwZSA9IE5BTUVEO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kID0gKytiZWdpbjtcblxuICAgICAgICAvKiBUaGUgYmVoYXZpb3VyIGZ1cnRoZXIgZGVwZW5kcyBvbiB0aGVcbiAgICAgICAgICogY2hhcmFjdGVyIGFmdGVyIHRoZSBVKzAwMjMgTlVNQkVSIFNJR04uICovXG4gICAgICAgIGZvbGxvd2luZyA9IGF0KGVuZCk7XG5cbiAgICAgICAgaWYgKGZvbGxvd2luZyA9PT0gWF9MT1dFUiB8fCBmb2xsb3dpbmcgPT09IFhfVVBQRVIpIHtcbiAgICAgICAgICAvKiBBU0NJSSBoZXggZGlnaXRzLiAqL1xuICAgICAgICAgIHR5cGUgPSBIRVhBREVDSU1BTDtcbiAgICAgICAgICBlbmQgPSArK2JlZ2luO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8qIEFTQ0lJIGRpZ2l0cy4gKi9cbiAgICAgICAgICB0eXBlID0gREVDSU1BTDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBlbnRpdHlDaGFyYWN0ZXJzID0gRU1QVFk7XG4gICAgICBlbnRpdHkgPSBFTVBUWTtcbiAgICAgIGNoYXJhY3RlcnMgPSBFTVBUWTtcbiAgICAgIHRlc3QgPSBURVNUU1t0eXBlXTtcbiAgICAgIGVuZC0tO1xuXG4gICAgICB3aGlsZSAoKytlbmQgPCBsZW5ndGgpIHtcbiAgICAgICAgZm9sbG93aW5nID0gYXQoZW5kKTtcblxuICAgICAgICBpZiAoIXRlc3QoZm9sbG93aW5nKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2hhcmFjdGVycyArPSBmb2xsb3dpbmc7XG5cbiAgICAgICAgLyogQ2hlY2sgaWYgd2UgY2FuIG1hdGNoIGEgbGVnYWN5IG5hbWVkXG4gICAgICAgICAqIHJlZmVyZW5jZS4gIElmIHNvLCB3ZSBjYWNoZSB0aGF0IGFzIHRoZVxuICAgICAgICAgKiBsYXN0IHZpYWJsZSBuYW1lZCByZWZlcmVuY2UuICBUaGlzXG4gICAgICAgICAqIGVuc3VyZXMgd2UgZG8gbm90IG5lZWQgdG8gd2FsayBiYWNrd2FyZHNcbiAgICAgICAgICogbGF0ZXIuICovXG4gICAgICAgIGlmICh0eXBlID09PSBOQU1FRCAmJiBvd24uY2FsbChsZWdhY3ksIGNoYXJhY3RlcnMpKSB7XG4gICAgICAgICAgZW50aXR5Q2hhcmFjdGVycyA9IGNoYXJhY3RlcnM7XG4gICAgICAgICAgZW50aXR5ID0gbGVnYWN5W2NoYXJhY3RlcnNdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRlcm1pbmF0ZWQgPSBhdChlbmQpID09PSBTRU1JQ09MT047XG5cbiAgICAgIGlmICh0ZXJtaW5hdGVkKSB7XG4gICAgICAgIGVuZCsrO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBOQU1FRCAmJiBvd24uY2FsbChjaGFyYWN0ZXJFbnRpdGllcywgY2hhcmFjdGVycykpIHtcbiAgICAgICAgICBlbnRpdHlDaGFyYWN0ZXJzID0gY2hhcmFjdGVycztcbiAgICAgICAgICBlbnRpdHkgPSBjaGFyYWN0ZXJFbnRpdGllc1tjaGFyYWN0ZXJzXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkaWZmID0gMSArIGVuZCAtIHN0YXJ0O1xuXG4gICAgICBpZiAoIXRlcm1pbmF0ZWQgJiYgIW5vblRlcm1pbmF0ZWQpIHtcbiAgICAgICAgLyogRW1wdHkuICovXG4gICAgICB9IGVsc2UgaWYgKCFjaGFyYWN0ZXJzKSB7XG4gICAgICAgIC8qIEFuIGVtcHR5IChwb3NzaWJsZSkgZW50aXR5IGlzIHZhbGlkLCB1bmxlc3NcbiAgICAgICAgICogaXRzIG51bWVyaWMgKHRodXMgYW4gYW1wZXJzYW5kIGZvbGxvd2VkIGJ5XG4gICAgICAgICAqIGFuIG9jdG90aG9ycCkuICovXG4gICAgICAgIGlmICh0eXBlICE9PSBOQU1FRCkge1xuICAgICAgICAgIHdhcm5pbmcoTlVNRVJJQ19FTVBUWSwgZGlmZik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gTkFNRUQpIHtcbiAgICAgICAgLyogQW4gYW1wZXJzYW5kIGZvbGxvd2VkIGJ5IGFueXRoaW5nXG4gICAgICAgICAqIHVua25vd24sIGFuZCBub3QgdGVybWluYXRlZCwgaXMgaW52YWxpZC4gKi9cbiAgICAgICAgaWYgKHRlcm1pbmF0ZWQgJiYgIWVudGl0eSkge1xuICAgICAgICAgIHdhcm5pbmcoTkFNRURfVU5LTk9XTiwgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLyogSWYgdGhlcmVzIHNvbWV0aGluZyBhZnRlciBhbiBlbnRpdHlcbiAgICAgICAgICAgKiBuYW1lIHdoaWNoIGlzIG5vdCBrbm93biwgY2FwIHRoZVxuICAgICAgICAgICAqIHJlZmVyZW5jZS4gKi9cbiAgICAgICAgICBpZiAoZW50aXR5Q2hhcmFjdGVycyAhPT0gY2hhcmFjdGVycykge1xuICAgICAgICAgICAgZW5kID0gYmVnaW4gKyBlbnRpdHlDaGFyYWN0ZXJzLmxlbmd0aDtcbiAgICAgICAgICAgIGRpZmYgPSAxICsgZW5kIC0gYmVnaW47XG4gICAgICAgICAgICB0ZXJtaW5hdGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLyogSWYgdGhlIHJlZmVyZW5jZSBpcyBub3QgdGVybWluYXRlZCxcbiAgICAgICAgICAgKiB3YXJuLiAqL1xuICAgICAgICAgIGlmICghdGVybWluYXRlZCkge1xuICAgICAgICAgICAgcmVhc29uID0gZW50aXR5Q2hhcmFjdGVycyA/XG4gICAgICAgICAgICAgIE5BTUVEX05PVF9URVJNSU5BVEVEIDpcbiAgICAgICAgICAgICAgTkFNRURfRU1QVFk7XG5cbiAgICAgICAgICAgIGlmICghc2V0dGluZ3MuYXR0cmlidXRlKSB7XG4gICAgICAgICAgICAgIHdhcm5pbmcocmVhc29uLCBkaWZmKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvbGxvd2luZyA9IGF0KGVuZCk7XG5cbiAgICAgICAgICAgICAgaWYgKGZvbGxvd2luZyA9PT0gRVFVQUwpIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nKHJlYXNvbiwgZGlmZik7XG4gICAgICAgICAgICAgICAgZW50aXR5ID0gbnVsbDtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChhbHBoYW51bWVyaWNhbChmb2xsb3dpbmcpKSB7XG4gICAgICAgICAgICAgICAgZW50aXR5ID0gbnVsbDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nKHJlYXNvbiwgZGlmZik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZWZlcmVuY2UgPSBlbnRpdHk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHtcbiAgICAgICAgICAvKiBBbGwgbm9uLXRlcm1pbmF0ZWQgbnVtZXJpYyBlbnRpdGllcyBhcmVcbiAgICAgICAgICAgKiBub3QgcmVuZGVyZWQsIGFuZCB0cmlnZ2VyIGEgd2FybmluZy4gKi9cbiAgICAgICAgICB3YXJuaW5nKE5VTUVSSUNfTk9UX1RFUk1JTkFURUQsIGRpZmYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogV2hlbiB0ZXJtaW5hdGVkIGFuZCBudW1iZXIsIHBhcnNlIGFzXG4gICAgICAgICAqIGVpdGhlciBoZXhhZGVjaW1hbCBvciBkZWNpbWFsLiAqL1xuICAgICAgICByZWZlcmVuY2UgPSBwYXJzZUludChjaGFyYWN0ZXJzLCBCQVNFW3R5cGVdKTtcblxuICAgICAgICAvKiBUcmlnZ2VyIGEgd2FybmluZyB3aGVuIHRoZSBwYXJzZWQgbnVtYmVyXG4gICAgICAgICAqIGlzIHByb2hpYml0ZWQsIGFuZCByZXBsYWNlIHdpdGhcbiAgICAgICAgICogcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiAqL1xuICAgICAgICBpZiAoaXNQcm9oaWJpdGVkKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICB3YXJuaW5nKE5VTUVSSUNfUFJPSElCSVRFRCwgZGlmZik7XG5cbiAgICAgICAgICByZWZlcmVuY2UgPSBSRVBMQUNFTUVOVDtcbiAgICAgICAgfSBlbHNlIGlmIChyZWZlcmVuY2UgaW4gaW52YWxpZCkge1xuICAgICAgICAgIC8qIFRyaWdnZXIgYSB3YXJuaW5nIHdoZW4gdGhlIHBhcnNlZCBudW1iZXJcbiAgICAgICAgICAgKiBpcyBkaXNhbGxvd2VkLCBhbmQgcmVwbGFjZSBieSBhblxuICAgICAgICAgICAqIGFsdGVybmF0aXZlLiAqL1xuICAgICAgICAgIHdhcm5pbmcoTlVNRVJJQ19ESVNBTExPV0VELCBkaWZmKTtcblxuICAgICAgICAgIHJlZmVyZW5jZSA9IGludmFsaWRbcmVmZXJlbmNlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvKiBQYXJzZSB0aGUgbnVtYmVyLiAqL1xuICAgICAgICAgIG91dHB1dCA9IEVNUFRZO1xuXG4gICAgICAgICAgLyogVHJpZ2dlciBhIHdhcm5pbmcgd2hlbiB0aGUgcGFyc2VkXG4gICAgICAgICAgICogbnVtYmVyIHNob3VsZCBub3QgYmUgdXNlZC4gKi9cbiAgICAgICAgICBpZiAoaXNXYXJuaW5nKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgIHdhcm5pbmcoTlVNRVJJQ19ESVNBTExPV0VELCBkaWZmKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvKiBTdHJpbmdpZnkgdGhlIG51bWJlci4gKi9cbiAgICAgICAgICBpZiAocmVmZXJlbmNlID4gMHhGRkZGKSB7XG4gICAgICAgICAgICByZWZlcmVuY2UgLT0gMHgxMDAwMDtcbiAgICAgICAgICAgIG91dHB1dCArPSBmcm9tQ2hhckNvZGUoKHJlZmVyZW5jZSA+Pj4gKDEwICYgMHgzRkYpKSB8IDB4RDgwMCk7XG4gICAgICAgICAgICByZWZlcmVuY2UgPSAweERDMDAgfCAocmVmZXJlbmNlICYgMHgzRkYpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlZmVyZW5jZSA9IG91dHB1dCArIGZyb21DaGFyQ29kZShyZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qIElmIHdlIGNvdWxkIG5vdCBmaW5kIGEgcmVmZXJlbmNlLCBxdWV1ZSB0aGVcbiAgICAgICAqIGNoZWNrZWQgY2hhcmFjdGVycyAoYXMgbm9ybWFsIGNoYXJhY3RlcnMpLFxuICAgICAgICogYW5kIG1vdmUgdGhlIHBvaW50ZXIgdG8gdGhlaXIgZW5kLiBUaGlzIGlzXG4gICAgICAgKiBwb3NzaWJsZSBiZWNhdXNlIHdlIGNhbiBiZSBjZXJ0YWluIG5laXRoZXJcbiAgICAgICAqIG5ld2xpbmVzIG5vciBhbXBlcnNhbmRzIGFyZSBpbmNsdWRlZC4gKi9cbiAgICAgIGlmICghcmVmZXJlbmNlKSB7XG4gICAgICAgIGNoYXJhY3RlcnMgPSB2YWx1ZS5zbGljZShzdGFydCAtIDEsIGVuZCk7XG4gICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcnM7XG4gICAgICAgIGNvbHVtbiArPSBjaGFyYWN0ZXJzLmxlbmd0aDtcbiAgICAgICAgaW5kZXggPSBlbmQgLSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogRm91bmQgaXQhIEZpcnN0IGVhdCB0aGUgcXVldWVkXG4gICAgICAgICAqIGNoYXJhY3RlcnMgYXMgbm9ybWFsIHRleHQsIHRoZW4gZWF0XG4gICAgICAgICAqIGFuIGVudGl0eS4gKi9cbiAgICAgICAgZmx1c2goKTtcblxuICAgICAgICBwcmV2ID0gbm93KCk7XG4gICAgICAgIGluZGV4ID0gZW5kIC0gMTtcbiAgICAgICAgY29sdW1uICs9IGVuZCAtIHN0YXJ0ICsgMTtcbiAgICAgICAgcmVzdWx0LnB1c2gocmVmZXJlbmNlKTtcbiAgICAgICAgbmV4dCA9IG5vdygpO1xuICAgICAgICBuZXh0Lm9mZnNldCsrO1xuXG4gICAgICAgIGlmIChoYW5kbGVSZWZlcmVuY2UpIHtcbiAgICAgICAgICBoYW5kbGVSZWZlcmVuY2UuY2FsbChyZWZlcmVuY2VDb250ZXh0LCByZWZlcmVuY2UsIHtcbiAgICAgICAgICAgIHN0YXJ0OiBwcmV2LFxuICAgICAgICAgICAgZW5kOiBuZXh0XG4gICAgICAgICAgfSwgdmFsdWUuc2xpY2Uoc3RhcnQgLSAxLCBlbmQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXYgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qIFJldHVybiB0aGUgcmVkdWNlZCBub2RlcywgYW5kIGFueSBwb3NzaWJsZSB3YXJuaW5ncy4gKi9cbiAgcmV0dXJuIHJlc3VsdC5qb2luKEVNUFRZKTtcblxuICAvKiBHZXQgY3VycmVudCBwb3NpdGlvbi4gKi9cbiAgZnVuY3Rpb24gbm93KCkge1xuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBsaW5lLFxuICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICBvZmZzZXQ6IGluZGV4ICsgKHBvcy5vZmZzZXQgfHwgMClcbiAgICB9O1xuICB9XG5cbiAgLyog4oCcVGhyb3figJ0gYSBwYXJzZS1lcnJvcjogYSB3YXJuaW5nLiAqL1xuICBmdW5jdGlvbiBwYXJzZUVycm9yKGNvZGUsIG9mZnNldCkge1xuICAgIHZhciBwb3NpdGlvbiA9IG5vdygpO1xuXG4gICAgcG9zaXRpb24uY29sdW1uICs9IG9mZnNldDtcbiAgICBwb3NpdGlvbi5vZmZzZXQgKz0gb2Zmc2V0O1xuXG4gICAgaGFuZGxlV2FybmluZy5jYWxsKHdhcm5pbmdDb250ZXh0LCBNRVNTQUdFU1tjb2RlXSwgcG9zaXRpb24sIGNvZGUpO1xuICB9XG5cbiAgLyogR2V0IGNoYXJhY3RlciBhdCBwb3NpdGlvbi4gKi9cbiAgZnVuY3Rpb24gYXQocG9zaXRpb24pIHtcbiAgICByZXR1cm4gdmFsdWUuY2hhckF0KHBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qIEZsdXNoIGBxdWV1ZWAgKG5vcm1hbCB0ZXh0KS4gTWFjcm8gaW52b2tlZCBiZWZvcmVcbiAgICogZWFjaCBlbnRpdHkgYW5kIGF0IHRoZSBlbmQgb2YgYHZhbHVlYC5cbiAgICogRG9lcyBub3RoaW5nIHdoZW4gYHF1ZXVlYCBpcyBlbXB0eS4gKi9cbiAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgaWYgKHF1ZXVlKSB7XG4gICAgICByZXN1bHQucHVzaChxdWV1ZSk7XG5cbiAgICAgIGlmIChoYW5kbGVUZXh0KSB7XG4gICAgICAgIGhhbmRsZVRleHQuY2FsbCh0ZXh0Q29udGV4dCwgcXVldWUsIHtcbiAgICAgICAgICBzdGFydDogcHJldixcbiAgICAgICAgICBlbmQ6IG5vdygpXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSA9IEVNUFRZO1xuICAgIH1cbiAgfVxufVxuXG4vKiBDaGVjayBpZiBgY2hhcmFjdGVyYCBpcyBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZVxuICogdW5pY29kZSByYW5nZS4gKi9cbmZ1bmN0aW9uIGlzUHJvaGliaXRlZChjb2RlKSB7XG4gIHJldHVybiAoY29kZSA+PSAweEQ4MDAgJiYgY29kZSA8PSAweERGRkYpIHx8IChjb2RlID4gMHgxMEZGRkYpO1xufVxuXG4vKiBDaGVjayBpZiBgY2hhcmFjdGVyYCBpcyBkaXNhbGxvd2VkLiAqL1xuZnVuY3Rpb24gaXNXYXJuaW5nKGNvZGUpIHtcbiAgaWYgKFxuICAgIChjb2RlID49IDB4MDAwMSAmJiBjb2RlIDw9IDB4MDAwOCkgfHxcbiAgICBjb2RlID09PSAweDAwMEIgfHxcbiAgICAoY29kZSA+PSAweDAwMEQgJiYgY29kZSA8PSAweDAwMUYpIHx8XG4gICAgKGNvZGUgPj0gMHgwMDdGICYmIGNvZGUgPD0gMHgwMDlGKSB8fFxuICAgIChjb2RlID49IDB4RkREMCAmJiBjb2RlIDw9IDB4RkRFRikgfHxcbiAgICAoY29kZSAmIDB4RkZGRikgPT09IDB4RkZGRiB8fFxuICAgIChjb2RlICYgMHhGRkZGKSA9PT0gMHhGRkZFXG4gICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpO1xudmFyIGVudGl0aWVzID0gcmVxdWlyZSgncGFyc2UtZW50aXRpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5O1xuXG4vKiBGYWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnRpdHkgZGVjb2Rlci4gKi9cbmZ1bmN0aW9uIGZhY3RvcnkoY3R4KSB7XG4gIGRlY29kZXIucmF3ID0gZGVjb2RlUmF3O1xuXG4gIHJldHVybiBkZWNvZGVyO1xuXG4gIC8qIE5vcm1hbGl6ZSBgcG9zaXRpb25gIHRvIGFkZCBhbiBgaW5kZW50YC4gKi9cbiAgZnVuY3Rpb24gbm9ybWFsaXplKHBvc2l0aW9uKSB7XG4gICAgdmFyIG9mZnNldHMgPSBjdHgub2Zmc2V0O1xuICAgIHZhciBsaW5lID0gcG9zaXRpb24ubGluZTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoKytsaW5lKSB7XG4gICAgICBpZiAoIShsaW5lIGluIG9mZnNldHMpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXN1bHQucHVzaCgob2Zmc2V0c1tsaW5lXSB8fCAwKSArIDEpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydDogcG9zaXRpb24sXG4gICAgICBpbmRlbnQ6IHJlc3VsdFxuICAgIH07XG4gIH1cblxuICAvKiBIYW5kbGUgYSB3YXJuaW5nLlxuICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9wYXJzZS1lbnRpdGllc1xuICAgKiBmb3IgdGhlIHdhcm5pbmdzLiAqL1xuICBmdW5jdGlvbiBoYW5kbGVXYXJuaW5nKHJlYXNvbiwgcG9zaXRpb24sIGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gMykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGN0eC5maWxlLm1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbik7XG4gIH1cblxuICAvKiBEZWNvZGUgYHZhbHVlYCAoYXQgYHBvc2l0aW9uYCkgaW50byB0ZXh0LW5vZGVzLiAqL1xuICBmdW5jdGlvbiBkZWNvZGVyKHZhbHVlLCBwb3NpdGlvbiwgaGFuZGxlcikge1xuICAgIGVudGl0aWVzKHZhbHVlLCB7XG4gICAgICBwb3NpdGlvbjogbm9ybWFsaXplKHBvc2l0aW9uKSxcbiAgICAgIHdhcm5pbmc6IGhhbmRsZVdhcm5pbmcsXG4gICAgICB0ZXh0OiBoYW5kbGVyLFxuICAgICAgcmVmZXJlbmNlOiBoYW5kbGVyLFxuICAgICAgdGV4dENvbnRleHQ6IGN0eCxcbiAgICAgIHJlZmVyZW5jZUNvbnRleHQ6IGN0eFxuICAgIH0pO1xuICB9XG5cbiAgLyogRGVjb2RlIGB2YWx1ZWAgKGF0IGBwb3NpdGlvbmApIGludG8gYSBzdHJpbmcuICovXG4gIGZ1bmN0aW9uIGRlY29kZVJhdyh2YWx1ZSwgcG9zaXRpb24sIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZW50aXRpZXModmFsdWUsIHh0ZW5kKG9wdGlvbnMsIHtcbiAgICAgIHBvc2l0aW9uOiBub3JtYWxpemUocG9zaXRpb24pLFxuICAgICAgd2FybmluZzogaGFuZGxlV2FybmluZ1xuICAgIH0pKTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnk7XG5cbnZhciBNRVJHRUFCTEVfTk9ERVMgPSB7XG4gIHRleHQ6IG1lcmdlVGV4dCxcbiAgYmxvY2txdW90ZTogbWVyZ2VCbG9ja3F1b3RlXG59O1xuXG4vKiBDaGVjayB3aGV0aGVyIGEgbm9kZSBpcyBtZXJnZWFibGUgd2l0aCBhZGphY2VudCBub2Rlcy4gKi9cbmZ1bmN0aW9uIG1lcmdlYWJsZShub2RlKSB7XG4gIHZhciBzdGFydDtcbiAgdmFyIGVuZDtcblxuICBpZiAobm9kZS50eXBlICE9PSAndGV4dCcgfHwgIW5vZGUucG9zaXRpb24pIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHN0YXJ0ID0gbm9kZS5wb3NpdGlvbi5zdGFydDtcbiAgZW5kID0gbm9kZS5wb3NpdGlvbi5lbmQ7XG5cbiAgLyogT25seSBtZXJnZSBub2RlcyB3aGljaCBvY2N1cHkgdGhlIHNhbWUgc2l6ZSBhcyB0aGVpclxuICAgKiBgdmFsdWVgLiAqL1xuICByZXR1cm4gc3RhcnQubGluZSAhPT0gZW5kLmxpbmUgfHxcbiAgICAgIGVuZC5jb2x1bW4gLSBzdGFydC5jb2x1bW4gPT09IG5vZGUudmFsdWUubGVuZ3RoO1xufVxuXG4vKiBNZXJnZSB0d28gdGV4dCBub2RlczogYG5vZGVgIGludG8gYHByZXZgLiAqL1xuZnVuY3Rpb24gbWVyZ2VUZXh0KHByZXYsIG5vZGUpIHtcbiAgcHJldi52YWx1ZSArPSBub2RlLnZhbHVlO1xuXG4gIHJldHVybiBwcmV2O1xufVxuXG4vKiBNZXJnZSB0d28gYmxvY2txdW90ZXM6IGBub2RlYCBpbnRvIGBwcmV2YCwgdW5sZXNzIGluXG4gKiBDb21tb25NYXJrIG1vZGUuICovXG5mdW5jdGlvbiBtZXJnZUJsb2NrcXVvdGUocHJldiwgbm9kZSkge1xuICBpZiAodGhpcy5vcHRpb25zLmNvbW1vbm1hcmspIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHByZXYuY2hpbGRyZW4gPSBwcmV2LmNoaWxkcmVuLmNvbmNhdChub2RlLmNoaWxkcmVuKTtcblxuICByZXR1cm4gcHJldjtcbn1cblxuLyogQ29uc3RydWN0IGEgdG9rZW5pemVyLiAgVGhpcyBjcmVhdGVzIGJvdGhcbiAqIGB0b2tlbml6ZUlubGluZWAgYW5kIGB0b2tlbml6ZUJsb2NrYC4gKi9cbmZ1bmN0aW9uIGZhY3RvcnkodHlwZSkge1xuICByZXR1cm4gdG9rZW5pemU7XG5cbiAgLyogVG9rZW5pemVyIGZvciBhIGJvdW5kIGB0eXBlYC4gKi9cbiAgZnVuY3Rpb24gdG9rZW5pemUodmFsdWUsIGxvY2F0aW9uKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBvZmZzZXQgPSBzZWxmLm9mZnNldDtcbiAgICB2YXIgdG9rZW5zID0gW107XG4gICAgdmFyIG1ldGhvZHMgPSBzZWxmW3R5cGUgKyAnTWV0aG9kcyddO1xuICAgIHZhciB0b2tlbml6ZXJzID0gc2VsZlt0eXBlICsgJ1Rva2VuaXplcnMnXTtcbiAgICB2YXIgbGluZSA9IGxvY2F0aW9uLmxpbmU7XG4gICAgdmFyIGNvbHVtbiA9IGxvY2F0aW9uLmNvbHVtbjtcbiAgICB2YXIgaW5kZXg7XG4gICAgdmFyIGxlbmd0aDtcbiAgICB2YXIgbWV0aG9kO1xuICAgIHZhciBuYW1lO1xuICAgIHZhciBtYXRjaGVkO1xuICAgIHZhciB2YWx1ZUxlbmd0aDtcblxuICAgIC8qIFRyaW0gd2hpdGUgc3BhY2Ugb25seSBsaW5lcy4gKi9cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gdG9rZW5zO1xuICAgIH1cblxuICAgIC8qIEV4cG9zZSBvbiBgZWF0YC4gKi9cbiAgICBlYXQubm93ID0gbm93O1xuICAgIGVhdC5maWxlID0gc2VsZi5maWxlO1xuXG4gICAgLyogU3luYyBpbml0aWFsIG9mZnNldC4gKi9cbiAgICB1cGRhdGVQb3NpdGlvbignJyk7XG5cbiAgICAvKiBJdGVyYXRlIG92ZXIgYHZhbHVlYCwgYW5kIGl0ZXJhdGUgb3ZlciBhbGxcbiAgICAgKiB0b2tlbml6ZXJzLiAgV2hlbiBvbmUgZWF0cyBzb21ldGhpbmcsIHJlLWl0ZXJhdGVcbiAgICAgKiB3aXRoIHRoZSByZW1haW5pbmcgdmFsdWUuICBJZiBubyB0b2tlbml6ZXIgZWF0cyxcbiAgICAgKiBzb21ldGhpbmcgZmFpbGVkIChzaG91bGQgbm90IGhhcHBlbikgYW5kIGFuXG4gICAgICogZXhjZXB0aW9uIGlzIHRocm93bi4gKi9cbiAgICB3aGlsZSAodmFsdWUpIHtcbiAgICAgIGluZGV4ID0gLTE7XG4gICAgICBsZW5ndGggPSBtZXRob2RzLmxlbmd0aDtcbiAgICAgIG1hdGNoZWQgPSBmYWxzZTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgbmFtZSA9IG1ldGhvZHNbaW5kZXhdO1xuICAgICAgICBtZXRob2QgPSB0b2tlbml6ZXJzW25hbWVdO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBtZXRob2QgJiZcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyAoIW1ldGhvZC5vbmx5QXRTdGFydCB8fCBzZWxmLmF0U3RhcnQpICYmXG4gICAgICAgICAgKCFtZXRob2Qubm90SW5MaXN0IHx8ICFzZWxmLmluTGlzdCkgJiZcbiAgICAgICAgICAoIW1ldGhvZC5ub3RJbkJsb2NrIHx8ICFzZWxmLmluQmxvY2spICYmXG4gICAgICAgICAgKCFtZXRob2Qubm90SW5MaW5rIHx8ICFzZWxmLmluTGluaylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdmFsdWVMZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICBtZXRob2QuYXBwbHkoc2VsZiwgW2VhdCwgdmFsdWVdKTtcblxuICAgICAgICAgIG1hdGNoZWQgPSB2YWx1ZUxlbmd0aCAhPT0gdmFsdWUubGVuZ3RoO1xuXG4gICAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghbWF0Y2hlZCkge1xuICAgICAgICBzZWxmLmZpbGUuZmFpbChuZXcgRXJyb3IoJ0luZmluaXRlIGxvb3AnKSwgZWF0Lm5vdygpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxmLmVvZiA9IG5vdygpO1xuXG4gICAgcmV0dXJuIHRva2VucztcblxuICAgIC8qIFVwZGF0ZSBsaW5lLCBjb2x1bW4sIGFuZCBvZmZzZXQgYmFzZWQgb25cbiAgICAgKiBgdmFsdWVgLiAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKHN1YnZhbHVlKSB7XG4gICAgICB2YXIgbGFzdEluZGV4ID0gLTE7XG4gICAgICB2YXIgaW5kZXggPSBzdWJ2YWx1ZS5pbmRleE9mKCdcXG4nKTtcblxuICAgICAgd2hpbGUgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaW5lKys7XG4gICAgICAgIGxhc3RJbmRleCA9IGluZGV4O1xuICAgICAgICBpbmRleCA9IHN1YnZhbHVlLmluZGV4T2YoJ1xcbicsIGluZGV4ICsgMSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChsYXN0SW5kZXggPT09IC0xKSB7XG4gICAgICAgIGNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2x1bW4gPSBzdWJ2YWx1ZS5sZW5ndGggLSBsYXN0SW5kZXg7XG4gICAgICB9XG5cbiAgICAgIGlmIChsaW5lIGluIG9mZnNldCkge1xuICAgICAgICBpZiAobGFzdEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIGNvbHVtbiArPSBvZmZzZXRbbGluZV07XG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uIDw9IG9mZnNldFtsaW5lXSkge1xuICAgICAgICAgIGNvbHVtbiA9IG9mZnNldFtsaW5lXSArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBHZXQgb2Zmc2V0LiAgQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzXG4gICAgICogZWF0ZW4gdG8gcmV0cmlldmUgdGhlIHJhbmdlJ3Mgb2Zmc2V0cy4gKi9cbiAgICBmdW5jdGlvbiBnZXRPZmZzZXQoKSB7XG4gICAgICB2YXIgaW5kZW50YXRpb24gPSBbXTtcbiAgICAgIHZhciBwb3MgPSBsaW5lICsgMTtcblxuICAgICAgLyogRG9uZS4gIENhbGxlZCB3aGVuIHRoZSBsYXN0IGNoYXJhY3RlciBpc1xuICAgICAgICogZWF0ZW4gdG8gcmV0cmlldmUgdGhlIHJhbmdl4oCZcyBvZmZzZXRzLiAqL1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhc3QgPSBsaW5lICsgMTtcblxuICAgICAgICB3aGlsZSAocG9zIDwgbGFzdCkge1xuICAgICAgICAgIGluZGVudGF0aW9uLnB1c2goKG9mZnNldFtwb3NdIHx8IDApICsgMSk7XG5cbiAgICAgICAgICBwb3MrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRlbnRhdGlvbjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyogR2V0IHRoZSBjdXJyZW50IHBvc2l0aW9uLiAqL1xuICAgIGZ1bmN0aW9uIG5vdygpIHtcbiAgICAgIHZhciBwb3MgPSB7bGluZTogbGluZSwgY29sdW1uOiBjb2x1bW59O1xuXG4gICAgICBwb3Mub2Zmc2V0ID0gc2VsZi50b09mZnNldChwb3MpO1xuXG4gICAgICByZXR1cm4gcG9zO1xuICAgIH1cblxuICAgIC8qIFN0b3JlIHBvc2l0aW9uIGluZm9ybWF0aW9uIGZvciBhIG5vZGUuICovXG4gICAgZnVuY3Rpb24gUG9zaXRpb24oc3RhcnQpIHtcbiAgICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICAgIHRoaXMuZW5kID0gbm93KCk7XG4gICAgfVxuXG4gICAgLyogVGhyb3cgd2hlbiBhIHZhbHVlIGlzIGluY29ycmVjdGx5IGVhdGVuLlxuICAgICAqIFRoaXMgc2hvdWxkbuKAmXQgaGFwcGVuIGJ1dCB3aWxsIHRocm93IG9uIG5ldyxcbiAgICAgKiBpbmNvcnJlY3QgcnVsZXMuICovXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVFYXQoc3VidmFsdWUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHZhbHVlLnN1YnN0cmluZygwLCBzdWJ2YWx1ZS5sZW5ndGgpICE9PSBzdWJ2YWx1ZSkge1xuICAgICAgICAvKiBDYXB0dXJlIHN0YWNrLXRyYWNlLiAqL1xuICAgICAgICBzZWxmLmZpbGUuZmFpbChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnSW5jb3JyZWN0bHkgZWF0ZW4gdmFsdWU6IHBsZWFzZSByZXBvcnQgdGhpcyAnICtcbiAgICAgICAgICAgICd3YXJuaW5nIG9uIGh0dHA6Ly9naXQuaW8vdmc1RnQnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBub3coKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qIE1hcmsgcG9zaXRpb24gYW5kIHBhdGNoIGBub2RlLnBvc2l0aW9uYC4gKi9cbiAgICBmdW5jdGlvbiBwb3NpdGlvbigpIHtcbiAgICAgIHZhciBiZWZvcmUgPSBub3coKTtcblxuICAgICAgcmV0dXJuIHVwZGF0ZTtcblxuICAgICAgLyogQWRkIHRoZSBwb3NpdGlvbiB0byBhIG5vZGUuICovXG4gICAgICBmdW5jdGlvbiB1cGRhdGUobm9kZSwgaW5kZW50KSB7XG4gICAgICAgIHZhciBwcmV2ID0gbm9kZS5wb3NpdGlvbjtcbiAgICAgICAgdmFyIHN0YXJ0ID0gcHJldiA/IHByZXYuc3RhcnQgOiBiZWZvcmU7XG4gICAgICAgIHZhciBjb21iaW5lZCA9IFtdO1xuICAgICAgICB2YXIgbiA9IHByZXYgJiYgcHJldi5lbmQubGluZTtcbiAgICAgICAgdmFyIGwgPSBiZWZvcmUubGluZTtcblxuICAgICAgICBub2RlLnBvc2l0aW9uID0gbmV3IFBvc2l0aW9uKHN0YXJ0KTtcblxuICAgICAgICAvKiBJZiB0aGVyZSB3YXMgYWxyZWFkeSBhIGBwb3NpdGlvbmAsIHRoaXNcbiAgICAgICAgICogbm9kZSB3YXMgbWVyZ2VkLiAgRml4aW5nIGBzdGFydGAgd2FzbuKAmXRcbiAgICAgICAgICogaGFyZCwgYnV0IHRoZSBpbmRlbnQgaXMgZGlmZmVyZW50LlxuICAgICAgICAgKiBFc3BlY2lhbGx5IGJlY2F1c2Ugc29tZSBpbmZvcm1hdGlvbiwgdGhlXG4gICAgICAgICAqIGluZGVudCBiZXR3ZWVuIGBuYCBhbmQgYGxgIHdhc27igJl0XG4gICAgICAgICAqIHRyYWNrZWQuICBMdWNraWx5LCB0aGF0IHNwYWNlIGlzXG4gICAgICAgICAqIChzaG91bGQgYmU/KSBlbXB0eSwgc28gd2UgY2FuIHNhZmVseVxuICAgICAgICAgKiBjaGVjayBmb3IgaXQgbm93LiAqL1xuICAgICAgICBpZiAocHJldiAmJiBpbmRlbnQgJiYgcHJldi5pbmRlbnQpIHtcbiAgICAgICAgICBjb21iaW5lZCA9IHByZXYuaW5kZW50O1xuXG4gICAgICAgICAgaWYgKG4gPCBsKSB7XG4gICAgICAgICAgICB3aGlsZSAoKytuIDwgbCkge1xuICAgICAgICAgICAgICBjb21iaW5lZC5wdXNoKChvZmZzZXRbbl0gfHwgMCkgKyAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29tYmluZWQucHVzaChiZWZvcmUuY29sdW1uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpbmRlbnQgPSBjb21iaW5lZC5jb25jYXQoaW5kZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vZGUucG9zaXRpb24uaW5kZW50ID0gaW5kZW50IHx8IFtdO1xuXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qIEFkZCBgbm9kZWAgdG8gYHBhcmVudGBzIGNoaWxkcmVuIG9yIHRvIGB0b2tlbnNgLlxuICAgICAqIFBlcmZvcm1zIG1lcmdlcyB3aGVyZSBwb3NzaWJsZS4gKi9cbiAgICBmdW5jdGlvbiBhZGQobm9kZSwgcGFyZW50KSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBwYXJlbnQgPyBwYXJlbnQuY2hpbGRyZW4gOiB0b2tlbnM7XG4gICAgICB2YXIgcHJldiA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHByZXYgJiZcbiAgICAgICAgbm9kZS50eXBlID09PSBwcmV2LnR5cGUgJiZcbiAgICAgICAgbm9kZS50eXBlIGluIE1FUkdFQUJMRV9OT0RFUyAmJlxuICAgICAgICBtZXJnZWFibGUocHJldikgJiZcbiAgICAgICAgbWVyZ2VhYmxlKG5vZGUpXG4gICAgICApIHtcbiAgICAgICAgbm9kZSA9IE1FUkdFQUJMRV9OT0RFU1tub2RlLnR5cGVdLmNhbGwoc2VsZiwgcHJldiwgbm9kZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlICE9PSBwcmV2KSB7XG4gICAgICAgIGNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLmF0U3RhcnQgJiYgdG9rZW5zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBzZWxmLmV4aXRTdGFydCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG5cbiAgICAvKiBSZW1vdmUgYHN1YnZhbHVlYCBmcm9tIGB2YWx1ZWAuXG4gICAgICogYHN1YnZhbHVlYCBtdXN0IGJlIGF0IHRoZSBzdGFydCBvZiBgdmFsdWVgLiAqL1xuICAgIGZ1bmN0aW9uIGVhdChzdWJ2YWx1ZSkge1xuICAgICAgdmFyIGluZGVudCA9IGdldE9mZnNldCgpO1xuICAgICAgdmFyIHBvcyA9IHBvc2l0aW9uKCk7XG4gICAgICB2YXIgY3VycmVudCA9IG5vdygpO1xuXG4gICAgICB2YWxpZGF0ZUVhdChzdWJ2YWx1ZSk7XG5cbiAgICAgIGFwcGx5LnJlc2V0ID0gcmVzZXQ7XG4gICAgICByZXNldC50ZXN0ID0gdGVzdDtcbiAgICAgIGFwcGx5LnRlc3QgPSB0ZXN0O1xuXG4gICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyhzdWJ2YWx1ZS5sZW5ndGgpO1xuXG4gICAgICB1cGRhdGVQb3NpdGlvbihzdWJ2YWx1ZSk7XG5cbiAgICAgIGluZGVudCA9IGluZGVudCgpO1xuXG4gICAgICByZXR1cm4gYXBwbHk7XG5cbiAgICAgIC8qIEFkZCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhZGQgYHBvc2l0aW9uYCB0b1xuICAgICAgICogdGhlIHJldHVybmVkIG5vZGUsIGFuZCByZXR1cm4gdGhlIG5vZGUuICovXG4gICAgICBmdW5jdGlvbiBhcHBseShub2RlLCBwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHBvcyhhZGQocG9zKG5vZGUpLCBwYXJlbnQpLCBpbmRlbnQpO1xuICAgICAgfVxuXG4gICAgICAvKiBGdW5jdGlvbnMganVzdCBsaWtlIGFwcGx5LCBidXQgcmVzZXRzIHRoZVxuICAgICAgICogY29udGVudDogIHRoZSBsaW5lIGFuZCBjb2x1bW4gYXJlIHJldmVyc2VkLFxuICAgICAgICogYW5kIHRoZSBlYXRlbiB2YWx1ZSBpcyByZS1hZGRlZC5cbiAgICAgICAqIFRoaXMgaXMgdXNlZnVsIGZvciBub2RlcyB3aXRoIGEgc2luZ2xlXG4gICAgICAgKiB0eXBlIG9mIGNvbnRlbnQsIHN1Y2ggYXMgbGlzdHMgYW5kIHRhYmxlcy5cbiAgICAgICAqIFNlZSBgYXBwbHlgIGFib3ZlIGZvciB3aGF0IHBhcmFtZXRlcnMgYXJlXG4gICAgICAgKiBleHBlY3RlZC4gKi9cbiAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICB2YXIgbm9kZSA9IGFwcGx5LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG5cbiAgICAgICAgbGluZSA9IGN1cnJlbnQubGluZTtcbiAgICAgICAgY29sdW1uID0gY3VycmVudC5jb2x1bW47XG4gICAgICAgIHZhbHVlID0gc3VidmFsdWUgKyB2YWx1ZTtcblxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH1cblxuICAgICAgLyogVGVzdCB0aGUgcG9zaXRpb24sIGFmdGVyIGVhdGluZywgYW5kIHJldmVyc2VcbiAgICAgICAqIHRvIGEgbm90LWVhdGVuIHN0YXRlLiAqL1xuICAgICAgZnVuY3Rpb24gdGVzdCgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHBvcyh7fSk7XG5cbiAgICAgICAgbGluZSA9IGN1cnJlbnQubGluZTtcbiAgICAgICAgY29sdW1uID0gY3VycmVudC5jb2x1bW47XG4gICAgICAgIHZhbHVlID0gc3VidmFsdWUgKyB2YWx1ZTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0LnBvc2l0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVzY2FwZXM7XG5cbnZhciBkZWZhdWx0cyA9IFtcbiAgJ1xcXFwnLFxuICAnYCcsXG4gICcqJyxcbiAgJ3snLFxuICAnfScsXG4gICdbJyxcbiAgJ10nLFxuICAnKCcsXG4gICcpJyxcbiAgJyMnLFxuICAnKycsXG4gICctJyxcbiAgJy4nLFxuICAnIScsXG4gICdfJyxcbiAgJz4nXG5dO1xuXG52YXIgZ2ZtID0gZGVmYXVsdHMuY29uY2F0KFsnficsICd8J10pO1xuXG52YXIgY29tbW9ubWFyayA9IGdmbS5jb25jYXQoW1xuICAnXFxuJyxcbiAgJ1wiJyxcbiAgJyQnLFxuICAnJScsXG4gICcmJyxcbiAgJ1xcJycsXG4gICcsJyxcbiAgJy8nLFxuICAnOicsXG4gICc7JyxcbiAgJzwnLFxuICAnPScsXG4gICc/JyxcbiAgJ0AnLFxuICAnXidcbl0pO1xuXG5lc2NhcGVzLmRlZmF1bHQgPSBkZWZhdWx0cztcbmVzY2FwZXMuZ2ZtID0gZ2ZtO1xuZXNjYXBlcy5jb21tb25tYXJrID0gY29tbW9ubWFyaztcblxuLyogR2V0IG1hcmtkb3duIGVzY2FwZXMuICovXG5mdW5jdGlvbiBlc2NhcGVzKG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoc2V0dGluZ3MuY29tbW9ubWFyaykge1xuICAgIHJldHVybiBjb21tb25tYXJrO1xuICB9XG5cbiAgcmV0dXJuIHNldHRpbmdzLmdmbSA/IGdmbSA6IGRlZmF1bHRzO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgcG9zaXRpb246IHRydWUsXG4gIGdmbTogdHJ1ZSxcbiAgY29tbW9ubWFyazogZmFsc2UsXG4gIGZvb3Rub3RlczogZmFsc2UsXG4gIHBlZGFudGljOiBmYWxzZSxcbiAgYmxvY2tzOiByZXF1aXJlKCcuL2Jsb2NrLWVsZW1lbnRzLmpzb24nKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKTtcbnZhciBlc2NhcGVzID0gcmVxdWlyZSgnbWFya2Rvd24tZXNjYXBlcycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldE9wdGlvbnM7XG5cbmZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBjdXJyZW50ID0gc2VsZi5vcHRpb25zO1xuICB2YXIga2V5O1xuICB2YXIgdmFsdWU7XG5cbiAgaWYgKG9wdGlvbnMgPT0gbnVsbCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICBvcHRpb25zID0geHRlbmQob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0ludmFsaWQgdmFsdWUgYCcgKyBvcHRpb25zICsgJ2AgJyArXG4gICAgICAnZm9yIHNldHRpbmcgYG9wdGlvbnNgJ1xuICAgICk7XG4gIH1cblxuICBmb3IgKGtleSBpbiBkZWZhdWx0cykge1xuICAgIHZhbHVlID0gb3B0aW9uc1trZXldO1xuXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHZhbHVlID0gY3VycmVudFtrZXldO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIChrZXkgIT09ICdibG9ja3MnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB8fFxuICAgICAgKGtleSA9PT0gJ2Jsb2NrcycgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSBgJyArIHZhbHVlICsgJ2AgZm9yIHNldHRpbmcgYG9wdGlvbnMuJyArIGtleSArICdgJyk7XG4gICAgfVxuXG4gICAgb3B0aW9uc1trZXldID0gdmFsdWU7XG4gIH1cblxuICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zO1xuICBzZWxmLmVzY2FwZSA9IGVzY2FwZXMob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHNlbGY7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB2aXNpdCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtdmlzaXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZW1vdmVQb3NpdGlvbjtcblxuLyogUmVtb3ZlIGBwb3NpdGlvbmBzIGZyb20gYHRyZWVgLiAqL1xuZnVuY3Rpb24gcmVtb3ZlUG9zaXRpb24obm9kZSwgZm9yY2UpIHtcbiAgdmlzaXQobm9kZSwgZm9yY2UgPyBoYXJkIDogc29mdCk7XG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiBoYXJkKG5vZGUpIHtcbiAgZGVsZXRlIG5vZGUucG9zaXRpb247XG59XG5cbmZ1bmN0aW9uIHNvZnQobm9kZSkge1xuICBub2RlLnBvc2l0aW9uID0gdW5kZWZpbmVkO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpO1xudmFyIHJlbW92ZVBvc2l0aW9uID0gcmVxdWlyZSgndW5pc3QtdXRpbC1yZW1vdmUtcG9zaXRpb24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZTtcblxudmFyIENfTkVXTElORSA9ICdcXG4nO1xudmFyIEVYUFJFU1NJT05fTElORV9CUkVBS1MgPSAvXFxyXFxufFxcci9nO1xuXG4vKiBQYXJzZSB0aGUgYm91bmQgZmlsZS4gKi9cbmZ1bmN0aW9uIHBhcnNlKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB2YWx1ZSA9IFN0cmluZyhzZWxmLmZpbGUpO1xuICB2YXIgc3RhcnQgPSB7bGluZTogMSwgY29sdW1uOiAxLCBvZmZzZXQ6IDB9O1xuICB2YXIgY29udGVudCA9IHh0ZW5kKHN0YXJ0KTtcbiAgdmFyIG5vZGU7XG5cbiAgLyogQ2xlYW4gbm9uLXVuaXggbmV3bGluZXM6IGBcXHJcXG5gIGFuZCBgXFxyYCBhcmUgYWxsXG4gICAqIGNoYW5nZWQgdG8gYFxcbmAuICBUaGlzIHNob3VsZCBub3QgYWZmZWN0IHBvc2l0aW9uYWxcbiAgICogaW5mb3JtYXRpb24uICovXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShFWFBSRVNTSU9OX0xJTkVfQlJFQUtTLCBDX05FV0xJTkUpO1xuXG4gIGlmICh2YWx1ZS5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuXG4gICAgY29udGVudC5jb2x1bW4rKztcbiAgICBjb250ZW50Lm9mZnNldCsrO1xuICB9XG5cbiAgbm9kZSA9IHtcbiAgICB0eXBlOiAncm9vdCcsXG4gICAgY2hpbGRyZW46IHNlbGYudG9rZW5pemVCbG9jayh2YWx1ZSwgY29udGVudCksXG4gICAgcG9zaXRpb246IHtcbiAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgIGVuZDogc2VsZi5lb2YgfHwgeHRlbmQoc3RhcnQpXG4gICAgfVxuICB9O1xuXG4gIGlmICghc2VsZi5vcHRpb25zLnBvc2l0aW9uKSB7XG4gICAgcmVtb3ZlUG9zaXRpb24obm9kZSwgdHJ1ZSk7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ld2xpbmU7XG5cbi8qIFRva2VuaXNlIG5ld2xpbmUuICovXG5mdW5jdGlvbiBuZXdsaW5lKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDApO1xuICB2YXIgbGVuZ3RoO1xuICB2YXIgc3VidmFsdWU7XG4gIHZhciBxdWV1ZTtcbiAgdmFyIGluZGV4O1xuXG4gIGlmIChjaGFyYWN0ZXIgIT09ICdcXG4nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpbmRleCA9IDE7XG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgc3VidmFsdWUgPSBjaGFyYWN0ZXI7XG4gIHF1ZXVlID0gJyc7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSAnXFxuJykge1xuICAgICAgc3VidmFsdWUgKz0gcXVldWU7XG4gICAgICBxdWV1ZSA9ICcnO1xuICAgIH1cblxuICAgIGluZGV4Kys7XG4gIH1cblxuICBlYXQoc3VidmFsdWUpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpO1xudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltLXRyYWlsaW5nLWxpbmVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gaW5kZW50ZWRDb2RlO1xuXG52YXIgQ19ORVdMSU5FID0gJ1xcbic7XG52YXIgQ19UQUIgPSAnXFx0JztcbnZhciBDX1NQQUNFID0gJyAnO1xuXG52YXIgQ09ERV9JTkRFTlRfQ09VTlQgPSA0O1xudmFyIENPREVfSU5ERU5UID0gcmVwZWF0KENfU1BBQ0UsIENPREVfSU5ERU5UX0NPVU5UKTtcblxuLyogVG9rZW5pc2UgaW5kZW50ZWQgY29kZS4gKi9cbmZ1bmN0aW9uIGluZGVudGVkQ29kZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gIHZhciBzdWJ2YWx1ZSA9ICcnO1xuICB2YXIgY29udGVudCA9ICcnO1xuICB2YXIgc3VidmFsdWVRdWV1ZSA9ICcnO1xuICB2YXIgY29udGVudFF1ZXVlID0gJyc7XG4gIHZhciBjaGFyYWN0ZXI7XG4gIHZhciBibGFua1F1ZXVlO1xuICB2YXIgaW5kZW50O1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChpbmRlbnQpIHtcbiAgICAgIGluZGVudCA9IGZhbHNlO1xuXG4gICAgICBzdWJ2YWx1ZSArPSBzdWJ2YWx1ZVF1ZXVlO1xuICAgICAgY29udGVudCArPSBjb250ZW50UXVldWU7XG4gICAgICBzdWJ2YWx1ZVF1ZXVlID0gJyc7XG4gICAgICBjb250ZW50UXVldWUgPSAnJztcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gQ19ORVdMSU5FKSB7XG4gICAgICAgIHN1YnZhbHVlUXVldWUgPSBjaGFyYWN0ZXI7XG4gICAgICAgIGNvbnRlbnRRdWV1ZSA9IGNoYXJhY3RlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlcjtcbiAgICAgICAgY29udGVudCArPSBjaGFyYWN0ZXI7XG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICAgICAgaWYgKCFjaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09PSBDX05FV0xJTkUpIHtcbiAgICAgICAgICAgIGNvbnRlbnRRdWV1ZSA9IGNoYXJhY3RlcjtcbiAgICAgICAgICAgIHN1YnZhbHVlUXVldWUgPSBjaGFyYWN0ZXI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXI7XG4gICAgICAgICAgY29udGVudCArPSBjaGFyYWN0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSBDX1NQQUNFICYmXG4gICAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSA9PT0gY2hhcmFjdGVyICYmXG4gICAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAyKSA9PT0gY2hhcmFjdGVyICYmXG4gICAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAzKSA9PT0gY2hhcmFjdGVyXG4gICAgKSB7XG4gICAgICBzdWJ2YWx1ZVF1ZXVlICs9IENPREVfSU5ERU5UO1xuICAgICAgaW5kZXggKz0gMztcbiAgICAgIGluZGVudCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IENfVEFCKSB7XG4gICAgICBzdWJ2YWx1ZVF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgIGluZGVudCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJsYW5rUXVldWUgPSAnJztcblxuICAgICAgd2hpbGUgKGNoYXJhY3RlciA9PT0gQ19UQUIgfHwgY2hhcmFjdGVyID09PSBDX1NQQUNFKSB7XG4gICAgICAgIGJsYW5rUXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IENfTkVXTElORSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgc3VidmFsdWVRdWV1ZSArPSBibGFua1F1ZXVlICsgY2hhcmFjdGVyO1xuICAgICAgY29udGVudFF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICB9XG4gIH1cblxuICBpZiAoY29udGVudCkge1xuICAgIGlmIChzaWxlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICAgIHR5cGU6ICdjb2RlJyxcbiAgICAgIGxhbmc6IG51bGwsXG4gICAgICB2YWx1ZTogdHJpbShjb250ZW50KVxuICAgIH0pO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbS10cmFpbGluZy1saW5lcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZlbmNlZENvZGU7XG5cbnZhciBDX05FV0xJTkUgPSAnXFxuJztcbnZhciBDX1RBQiA9ICdcXHQnO1xudmFyIENfU1BBQ0UgPSAnICc7XG52YXIgQ19USUxERSA9ICd+JztcbnZhciBDX1RJQ0sgPSAnYCc7XG5cbnZhciBNSU5fRkVOQ0VfQ09VTlQgPSAzO1xudmFyIENPREVfSU5ERU5UX0NPVU5UID0gNDtcblxuZnVuY3Rpb24gZmVuY2VkQ29kZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgc2V0dGluZ3MgPSBzZWxmLm9wdGlvbnM7XG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgc3VidmFsdWUgPSAnJztcbiAgdmFyIGZlbmNlQ291bnQ7XG4gIHZhciBtYXJrZXI7XG4gIHZhciBjaGFyYWN0ZXI7XG4gIHZhciBmbGFnO1xuICB2YXIgcXVldWU7XG4gIHZhciBjb250ZW50O1xuICB2YXIgZXhkZW50ZWRDb250ZW50O1xuICB2YXIgY2xvc2luZztcbiAgdmFyIGV4ZGVudGVkQ2xvc2luZztcbiAgdmFyIGluZGVudDtcbiAgdmFyIG5vdztcblxuICBpZiAoIXNldHRpbmdzLmdmbSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qIEVhdCBpbml0aWFsIHNwYWNpbmcuICovXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBDX1NQQUNFICYmIGNoYXJhY3RlciAhPT0gQ19UQUIpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlcjtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgaW5kZW50ID0gaW5kZXg7XG5cbiAgLyogRWF0IHRoZSBmZW5jZS4gKi9cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICBpZiAoY2hhcmFjdGVyICE9PSBDX1RJTERFICYmIGNoYXJhY3RlciAhPT0gQ19USUNLKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaW5kZXgrKztcbiAgbWFya2VyID0gY2hhcmFjdGVyO1xuICBmZW5jZUNvdW50ID0gMTtcbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyO1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlcjtcbiAgICBmZW5jZUNvdW50Kys7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIGlmIChmZW5jZUNvdW50IDwgTUlOX0ZFTkNFX0NPVU5UKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyogRWF0IHNwYWNpbmcgYmVmb3JlIGZsYWcuICovXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBDX1NQQUNFICYmIGNoYXJhY3RlciAhPT0gQ19UQUIpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlcjtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgLyogRWF0IGZsYWcuICovXG4gIGZsYWcgPSAnJztcbiAgcXVldWUgPSAnJztcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSBDX05FV0xJTkUgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gQ19USUxERSB8fFxuICAgICAgY2hhcmFjdGVyID09PSBDX1RJQ0tcbiAgICApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IENfU1BBQ0UgfHwgY2hhcmFjdGVyID09PSBDX1RBQikge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGFnICs9IHF1ZXVlICsgY2hhcmFjdGVyO1xuICAgICAgcXVldWUgPSAnJztcbiAgICB9XG5cbiAgICBpbmRleCsrO1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICBpZiAoY2hhcmFjdGVyICYmIGNoYXJhY3RlciAhPT0gQ19ORVdMSU5FKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbm93ID0gZWF0Lm5vdygpO1xuICBub3cuY29sdW1uICs9IHN1YnZhbHVlLmxlbmd0aDtcbiAgbm93Lm9mZnNldCArPSBzdWJ2YWx1ZS5sZW5ndGg7XG5cbiAgc3VidmFsdWUgKz0gZmxhZztcbiAgZmxhZyA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKGZsYWcpLCBub3cpO1xuXG4gIGlmIChxdWV1ZSkge1xuICAgIHN1YnZhbHVlICs9IHF1ZXVlO1xuICB9XG5cbiAgcXVldWUgPSAnJztcbiAgY2xvc2luZyA9ICcnO1xuICBleGRlbnRlZENsb3NpbmcgPSAnJztcbiAgY29udGVudCA9ICcnO1xuICBleGRlbnRlZENvbnRlbnQgPSAnJztcblxuICAvKiBFYXQgY29udGVudC4gKi9cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcbiAgICBjb250ZW50ICs9IGNsb3Npbmc7XG4gICAgZXhkZW50ZWRDb250ZW50ICs9IGV4ZGVudGVkQ2xvc2luZztcbiAgICBjbG9zaW5nID0gJyc7XG4gICAgZXhkZW50ZWRDbG9zaW5nID0gJyc7XG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBDX05FV0xJTkUpIHtcbiAgICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyO1xuICAgICAgZXhkZW50ZWRDbG9zaW5nICs9IGNoYXJhY3RlcjtcbiAgICAgIGluZGV4Kys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKiBBZGQgdGhlIG5ld2xpbmUgdG8gYHN1YnZhbHVlYCBpZiBpdHMgdGhlIGZpcnN0XG4gICAgICogY2hhcmFjdGVyLiAgT3RoZXJ3aXNlLCBhZGQgaXQgdG8gdGhlIGBjbG9zaW5nYFxuICAgICAqIHF1ZXVlLiAqL1xuICAgIGlmIChjb250ZW50KSB7XG4gICAgICBjbG9zaW5nICs9IGNoYXJhY3RlcjtcbiAgICAgIGV4ZGVudGVkQ2xvc2luZyArPSBjaGFyYWN0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlcjtcbiAgICB9XG5cbiAgICBxdWV1ZSA9ICcnO1xuICAgIGluZGV4Kys7XG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IENfU1BBQ0UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgY2xvc2luZyArPSBxdWV1ZTtcbiAgICBleGRlbnRlZENsb3NpbmcgKz0gcXVldWUuc2xpY2UoaW5kZW50KTtcblxuICAgIGlmIChxdWV1ZS5sZW5ndGggPj0gQ09ERV9JTkRFTlRfQ09VTlQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHF1ZXVlID0gJyc7XG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICBjbG9zaW5nICs9IHF1ZXVlO1xuICAgIGV4ZGVudGVkQ2xvc2luZyArPSBxdWV1ZTtcblxuICAgIGlmIChxdWV1ZS5sZW5ndGggPCBmZW5jZUNvdW50KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBxdWV1ZSA9ICcnO1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBDX1NQQUNFICYmIGNoYXJhY3RlciAhPT0gQ19UQUIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNsb3NpbmcgKz0gY2hhcmFjdGVyO1xuICAgICAgZXhkZW50ZWRDbG9zaW5nICs9IGNoYXJhY3RlcjtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgaWYgKCFjaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09PSBDX05FV0xJTkUpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlICs9IGNvbnRlbnQgKyBjbG9zaW5nO1xuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnY29kZScsXG4gICAgbGFuZzogZmxhZyB8fCBudWxsLFxuICAgIHZhbHVlOiB0cmltKGV4ZGVudGVkQ29udGVudClcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaW50ZXJydXB0O1xuXG5mdW5jdGlvbiBpbnRlcnJ1cHQoaW50ZXJydXB0b3JzLCB0b2tlbml6ZXJzLCBjdHgsIHBhcmFtcykge1xuICB2YXIgYm9vbHMgPSBbJ3BlZGFudGljJywgJ2NvbW1vbm1hcmsnXTtcbiAgdmFyIGNvdW50ID0gYm9vbHMubGVuZ3RoO1xuICB2YXIgbGVuZ3RoID0gaW50ZXJydXB0b3JzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBpbnRlcnJ1cHRvcjtcbiAgdmFyIGNvbmZpZztcbiAgdmFyIGZuO1xuICB2YXIgb2Zmc2V0O1xuICB2YXIgYm9vbDtcbiAgdmFyIGlnbm9yZTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGludGVycnVwdG9yID0gaW50ZXJydXB0b3JzW2luZGV4XTtcbiAgICBjb25maWcgPSBpbnRlcnJ1cHRvclsxXSB8fCB7fTtcbiAgICBmbiA9IGludGVycnVwdG9yWzBdO1xuICAgIG9mZnNldCA9IC0xO1xuICAgIGlnbm9yZSA9IGZhbHNlO1xuXG4gICAgd2hpbGUgKCsrb2Zmc2V0IDwgY291bnQpIHtcbiAgICAgIGJvb2wgPSBib29sc1tvZmZzZXRdO1xuXG4gICAgICBpZiAoY29uZmlnW2Jvb2xdICE9PSB1bmRlZmluZWQgJiYgY29uZmlnW2Jvb2xdICE9PSBjdHgub3B0aW9uc1tib29sXSkge1xuICAgICAgICBpZ25vcmUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaWdub3JlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW5pemVyc1tmbl0uYXBwbHkoY3R4LCBwYXJhbXMpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpO1xudmFyIGludGVycnVwdCA9IHJlcXVpcmUoJy4uL3V0aWwvaW50ZXJydXB0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmxvY2txdW90ZTtcblxudmFyIENfTkVXTElORSA9ICdcXG4nO1xudmFyIENfVEFCID0gJ1xcdCc7XG52YXIgQ19TUEFDRSA9ICcgJztcbnZhciBDX0dUID0gJz4nO1xuXG4vKiBUb2tlbmlzZSBhIGJsb2NrcXVvdGUuICovXG5mdW5jdGlvbiBibG9ja3F1b3RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBvZmZzZXRzID0gc2VsZi5vZmZzZXQ7XG4gIHZhciB0b2tlbml6ZXJzID0gc2VsZi5ibG9ja1Rva2VuaXplcnM7XG4gIHZhciBpbnRlcnJ1cHRvcnMgPSBzZWxmLmludGVycnVwdEJsb2NrcXVvdGU7XG4gIHZhciBub3cgPSBlYXQubm93KCk7XG4gIHZhciBjdXJyZW50TGluZSA9IG5vdy5saW5lO1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICB2YXIgdmFsdWVzID0gW107XG4gIHZhciBjb250ZW50cyA9IFtdO1xuICB2YXIgaW5kZW50cyA9IFtdO1xuICB2YXIgYWRkO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgY2hhcmFjdGVyO1xuICB2YXIgcmVzdDtcbiAgdmFyIG5leHRJbmRleDtcbiAgdmFyIGNvbnRlbnQ7XG4gIHZhciBsaW5lO1xuICB2YXIgc3RhcnRJbmRleDtcbiAgdmFyIHByZWZpeGVkO1xuICB2YXIgZXhpdDtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gQ19TUEFDRSAmJiBjaGFyYWN0ZXIgIT09IENfVEFCKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpbmRleCsrO1xuICB9XG5cbiAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IENfR1QpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpbmRleCA9IDA7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgbmV4dEluZGV4ID0gdmFsdWUuaW5kZXhPZihDX05FV0xJTkUsIGluZGV4KTtcbiAgICBzdGFydEluZGV4ID0gaW5kZXg7XG4gICAgcHJlZml4ZWQgPSBmYWxzZTtcblxuICAgIGlmIChuZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBsZW5ndGg7XG4gICAgfVxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBDX1NQQUNFICYmIGNoYXJhY3RlciAhPT0gQ19UQUIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgPT09IENfR1QpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgICBwcmVmaXhlZCA9IHRydWU7XG5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBDX1NQQUNFKSB7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleDtcbiAgICB9XG5cbiAgICBjb250ZW50ID0gdmFsdWUuc2xpY2UoaW5kZXgsIG5leHRJbmRleCk7XG5cbiAgICBpZiAoIXByZWZpeGVkICYmICF0cmltKGNvbnRlbnQpKSB7XG4gICAgICBpbmRleCA9IHN0YXJ0SW5kZXg7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoIXByZWZpeGVkKSB7XG4gICAgICByZXN0ID0gdmFsdWUuc2xpY2UoaW5kZXgpO1xuXG4gICAgICAvKiBDaGVjayBpZiB0aGUgZm9sbG93aW5nIGNvZGUgY29udGFpbnMgYSBwb3NzaWJsZVxuICAgICAgICogYmxvY2suICovXG4gICAgICBpZiAoaW50ZXJydXB0KGludGVycnVwdG9ycywgdG9rZW5pemVycywgc2VsZiwgW2VhdCwgcmVzdCwgdHJ1ZV0pKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxpbmUgPSBzdGFydEluZGV4ID09PSBpbmRleCA/IGNvbnRlbnQgOiB2YWx1ZS5zbGljZShzdGFydEluZGV4LCBuZXh0SW5kZXgpO1xuXG4gICAgaW5kZW50cy5wdXNoKGluZGV4IC0gc3RhcnRJbmRleCk7XG4gICAgdmFsdWVzLnB1c2gobGluZSk7XG4gICAgY29udGVudHMucHVzaChjb250ZW50KTtcblxuICAgIGluZGV4ID0gbmV4dEluZGV4ICsgMTtcbiAgfVxuXG4gIGluZGV4ID0gLTE7XG4gIGxlbmd0aCA9IGluZGVudHMubGVuZ3RoO1xuICBhZGQgPSBlYXQodmFsdWVzLmpvaW4oQ19ORVdMSU5FKSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBvZmZzZXRzW2N1cnJlbnRMaW5lXSA9IChvZmZzZXRzW2N1cnJlbnRMaW5lXSB8fCAwKSArIGluZGVudHNbaW5kZXhdO1xuICAgIGN1cnJlbnRMaW5lKys7XG4gIH1cblxuICBleGl0ID0gc2VsZi5lbnRlckJsb2NrKCk7XG4gIGNvbnRlbnRzID0gc2VsZi50b2tlbml6ZUJsb2NrKGNvbnRlbnRzLmpvaW4oQ19ORVdMSU5FKSwgbm93KTtcbiAgZXhpdCgpO1xuXG4gIHJldHVybiBhZGQoe1xuICAgIHR5cGU6ICdibG9ja3F1b3RlJyxcbiAgICBjaGlsZHJlbjogY29udGVudHNcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gYXR4SGVhZGluZztcblxudmFyIENfTkVXTElORSA9ICdcXG4nO1xudmFyIENfVEFCID0gJ1xcdCc7XG52YXIgQ19TUEFDRSA9ICcgJztcbnZhciBDX0hBU0ggPSAnIyc7XG5cbnZhciBNQVhfQVRYX0NPVU5UID0gNjtcblxuZnVuY3Rpb24gYXR4SGVhZGluZyhlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgc2V0dGluZ3MgPSBzZWxmLm9wdGlvbnM7XG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxO1xuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIG5vdyA9IGVhdC5ub3coKTtcbiAgdmFyIHN1YnZhbHVlID0gJyc7XG4gIHZhciBjb250ZW50ID0gJyc7XG4gIHZhciBjaGFyYWN0ZXI7XG4gIHZhciBxdWV1ZTtcbiAgdmFyIGRlcHRoO1xuXG4gIC8qIEVhdCBpbml0aWFsIHNwYWNpbmcuICovXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IENfU1BBQ0UgJiYgY2hhcmFjdGVyICE9PSBDX1RBQikge1xuICAgICAgaW5kZXgtLTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlcjtcbiAgfVxuXG4gIC8qIEVhdCBoYXNoZXMuICovXG4gIGRlcHRoID0gMDtcblxuICB3aGlsZSAoKytpbmRleCA8PSBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gQ19IQVNIKSB7XG4gICAgICBpbmRleC0tO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyO1xuICAgIGRlcHRoKys7XG4gIH1cblxuICBpZiAoZGVwdGggPiBNQVhfQVRYX0NPVU5UKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKFxuICAgICFkZXB0aCB8fFxuICAgICghc2V0dGluZ3MucGVkYW50aWMgJiYgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IENfSEFTSClcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoICsgMTtcblxuICAvKiBFYXQgaW50ZXJtZWRpYXRlIHdoaXRlLXNwYWNlLiAqL1xuICBxdWV1ZSA9ICcnO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IENfU1BBQ0UgJiYgY2hhcmFjdGVyICE9PSBDX1RBQikge1xuICAgICAgaW5kZXgtLTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgfVxuXG4gIC8qIEV4aXQgd2hlbiBub3QgaW4gcGVkYW50aWMgbW9kZSB3aXRob3V0IHNwYWNpbmcuICovXG4gIGlmIChcbiAgICAhc2V0dGluZ3MucGVkYW50aWMgJiZcbiAgICBxdWV1ZS5sZW5ndGggPT09IDAgJiZcbiAgICBjaGFyYWN0ZXIgJiZcbiAgICBjaGFyYWN0ZXIgIT09IENfTkVXTElORVxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiBFYXQgY29udGVudC4gKi9cbiAgc3VidmFsdWUgKz0gcXVldWU7XG4gIHF1ZXVlID0gJyc7XG4gIGNvbnRlbnQgPSAnJztcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IENfTkVXTElORSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyICE9PSBDX1NQQUNFICYmXG4gICAgICBjaGFyYWN0ZXIgIT09IENfVEFCICYmXG4gICAgICBjaGFyYWN0ZXIgIT09IENfSEFTSFxuICAgICkge1xuICAgICAgY29udGVudCArPSBxdWV1ZSArIGNoYXJhY3RlcjtcbiAgICAgIHF1ZXVlID0gJyc7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB3aGlsZSAoY2hhcmFjdGVyID09PSBDX1NQQUNFIHx8IGNoYXJhY3RlciA9PT0gQ19UQUIpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KTtcbiAgICB9XG5cbiAgICB3aGlsZSAoY2hhcmFjdGVyID09PSBDX0hBU0gpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KTtcbiAgICB9XG5cbiAgICB3aGlsZSAoY2hhcmFjdGVyID09PSBDX1NQQUNFIHx8IGNoYXJhY3RlciA9PT0gQ19UQUIpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KTtcbiAgICB9XG5cbiAgICBpbmRleC0tO1xuICB9XG5cbiAgbm93LmNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGg7XG4gIG5vdy5vZmZzZXQgKz0gc3VidmFsdWUubGVuZ3RoO1xuICBzdWJ2YWx1ZSArPSBjb250ZW50ICsgcXVldWU7XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgIHR5cGU6ICdoZWFkaW5nJyxcbiAgICBkZXB0aDogZGVwdGgsXG4gICAgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgbm93KVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB0aGVtYXRpY0JyZWFrO1xuXG52YXIgQ19ORVdMSU5FID0gJ1xcbic7XG52YXIgQ19UQUIgPSAnXFx0JztcbnZhciBDX1NQQUNFID0gJyAnO1xudmFyIENfQVNURVJJU0sgPSAnKic7XG52YXIgQ19VTkRFUlNDT1JFID0gJ18nO1xudmFyIENfREFTSCA9ICctJztcblxudmFyIFRIRU1BVElDX0JSRUFLX01BUktFUl9DT1VOVCA9IDM7XG5cbmZ1bmN0aW9uIHRoZW1hdGljQnJlYWsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoICsgMTtcbiAgdmFyIHN1YnZhbHVlID0gJyc7XG4gIHZhciBjaGFyYWN0ZXI7XG4gIHZhciBtYXJrZXI7XG4gIHZhciBtYXJrZXJDb3VudDtcbiAgdmFyIHF1ZXVlO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IENfVEFCICYmIGNoYXJhY3RlciAhPT0gQ19TUEFDRSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyO1xuICB9XG5cbiAgaWYgKFxuICAgIGNoYXJhY3RlciAhPT0gQ19BU1RFUklTSyAmJlxuICAgIGNoYXJhY3RlciAhPT0gQ19EQVNIICYmXG4gICAgY2hhcmFjdGVyICE9PSBDX1VOREVSU0NPUkVcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbWFya2VyID0gY2hhcmFjdGVyO1xuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXI7XG4gIG1hcmtlckNvdW50ID0gMTtcbiAgcXVldWUgPSAnJztcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBtYXJrZXIpIHtcbiAgICAgIG1hcmtlckNvdW50Kys7XG4gICAgICBzdWJ2YWx1ZSArPSBxdWV1ZSArIG1hcmtlcjtcbiAgICAgIHF1ZXVlID0gJyc7XG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IENfU1BBQ0UpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbWFya2VyQ291bnQgPj0gVEhFTUFUSUNfQlJFQUtfTUFSS0VSX0NPVU5UICYmXG4gICAgICAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IENfTkVXTElORSlcbiAgICApIHtcbiAgICAgIHN1YnZhbHVlICs9IHF1ZXVlO1xuXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7dHlwZTogJ3RoZW1hdGljQnJlYWsnfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBpbmRlbnRhdGlvbjtcblxuLyogTWFwIG9mIGNoYXJhY3RlcnMsIGFuZCB0aGVpciBjb2x1bW4gbGVuZ3RoLFxuICogd2hpY2ggY2FuIGJlIHVzZWQgYXMgaW5kZW50YXRpb24uICovXG52YXIgY2hhcmFjdGVycyA9IHsnICc6IDEsICdcXHQnOiA0fTtcblxuLyogR2V0cyBpbmRlbnRhdGlvbiBpbmZvcm1hdGlvbiBmb3IgYSBsaW5lLiAqL1xuZnVuY3Rpb24gaW5kZW50YXRpb24odmFsdWUpIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGluZGVudCA9IDA7XG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuICB2YXIgc3RvcHMgPSB7fTtcbiAgdmFyIHNpemU7XG5cbiAgd2hpbGUgKGNoYXJhY3RlciBpbiBjaGFyYWN0ZXJzKSB7XG4gICAgc2l6ZSA9IGNoYXJhY3RlcnNbY2hhcmFjdGVyXTtcblxuICAgIGluZGVudCArPSBzaXplO1xuXG4gICAgaWYgKHNpemUgPiAxKSB7XG4gICAgICBpbmRlbnQgPSBNYXRoLmZsb29yKGluZGVudCAvIHNpemUpICogc2l6ZTtcbiAgICB9XG5cbiAgICBzdG9wc1tpbmRlbnRdID0gaW5kZXg7XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleCk7XG4gIH1cblxuICByZXR1cm4ge2luZGVudDogaW5kZW50LCBzdG9wczogc3RvcHN9O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKTtcbnZhciByZXBlYXQgPSByZXF1aXJlKCdyZXBlYXQtc3RyaW5nJyk7XG52YXIgZ2V0SW5kZW50ID0gcmVxdWlyZSgnLi9nZXQtaW5kZW50YXRpb24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbmRlbnRhdGlvbjtcblxudmFyIENfU1BBQ0UgPSAnICc7XG52YXIgQ19ORVdMSU5FID0gJ1xcbic7XG52YXIgQ19UQUIgPSAnXFx0JztcblxuLyogUmVtb3ZlIHRoZSBtaW5pbXVtIGluZGVudCBmcm9tIGV2ZXJ5IGxpbmUgaW4gYHZhbHVlYC5cbiAqIFN1cHBvcnRzIGJvdGggdGFiLCBzcGFjZWQsIGFuZCBtaXhlZCBpbmRlbnRhdGlvbiAoYXNcbiAqIHdlbGwgYXMgcG9zc2libGUpLiAqL1xuZnVuY3Rpb24gaW5kZW50YXRpb24odmFsdWUsIG1heGltdW0pIHtcbiAgdmFyIHZhbHVlcyA9IHZhbHVlLnNwbGl0KENfTkVXTElORSk7XG4gIHZhciBwb3NpdGlvbiA9IHZhbHVlcy5sZW5ndGggKyAxO1xuICB2YXIgbWluSW5kZW50ID0gSW5maW5pdHk7XG4gIHZhciBtYXRyaXggPSBbXTtcbiAgdmFyIGluZGV4O1xuICB2YXIgaW5kZW50YXRpb247XG4gIHZhciBzdG9wcztcbiAgdmFyIHBhZGRpbmc7XG5cbiAgdmFsdWVzLnVuc2hpZnQocmVwZWF0KENfU1BBQ0UsIG1heGltdW0pICsgJyEnKTtcblxuICB3aGlsZSAocG9zaXRpb24tLSkge1xuICAgIGluZGVudGF0aW9uID0gZ2V0SW5kZW50KHZhbHVlc1twb3NpdGlvbl0pO1xuXG4gICAgbWF0cml4W3Bvc2l0aW9uXSA9IGluZGVudGF0aW9uLnN0b3BzO1xuXG4gICAgaWYgKHRyaW0odmFsdWVzW3Bvc2l0aW9uXSkubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50YXRpb24uaW5kZW50KSB7XG4gICAgICBpZiAoaW5kZW50YXRpb24uaW5kZW50ID4gMCAmJiBpbmRlbnRhdGlvbi5pbmRlbnQgPCBtaW5JbmRlbnQpIHtcbiAgICAgICAgbWluSW5kZW50ID0gaW5kZW50YXRpb24uaW5kZW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtaW5JbmRlbnQgPSBJbmZpbml0eTtcblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKG1pbkluZGVudCAhPT0gSW5maW5pdHkpIHtcbiAgICBwb3NpdGlvbiA9IHZhbHVlcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAocG9zaXRpb24tLSkge1xuICAgICAgc3RvcHMgPSBtYXRyaXhbcG9zaXRpb25dO1xuICAgICAgaW5kZXggPSBtaW5JbmRlbnQ7XG5cbiAgICAgIHdoaWxlIChpbmRleCAmJiAhKGluZGV4IGluIHN0b3BzKSkge1xuICAgICAgICBpbmRleC0tO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHRyaW0odmFsdWVzW3Bvc2l0aW9uXSkubGVuZ3RoICE9PSAwICYmXG4gICAgICAgIG1pbkluZGVudCAmJlxuICAgICAgICBpbmRleCAhPT0gbWluSW5kZW50XG4gICAgICApIHtcbiAgICAgICAgcGFkZGluZyA9IENfVEFCO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFkZGluZyA9ICcnO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZXNbcG9zaXRpb25dID0gcGFkZGluZyArIHZhbHVlc1twb3NpdGlvbl0uc2xpY2UoXG4gICAgICAgIGluZGV4IGluIHN0b3BzID8gc3RvcHNbaW5kZXhdICsgMSA6IDBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFsdWVzLnNoaWZ0KCk7XG5cbiAgcmV0dXJuIHZhbHVlcy5qb2luKENfTkVXTElORSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIG1heC1wYXJhbXMgKi9cblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJyk7XG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpO1xudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJyk7XG52YXIgZ2V0SW5kZW50ID0gcmVxdWlyZSgnLi4vdXRpbC9nZXQtaW5kZW50YXRpb24nKTtcbnZhciByZW1vdmVJbmRlbnQgPSByZXF1aXJlKCcuLi91dGlsL3JlbW92ZS1pbmRlbnRhdGlvbicpO1xudmFyIGludGVycnVwdCA9IHJlcXVpcmUoJy4uL3V0aWwvaW50ZXJydXB0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdDtcblxudmFyIENfQVNURVJJU0sgPSAnKic7XG52YXIgQ19VTkRFUlNDT1JFID0gJ18nO1xudmFyIENfUExVUyA9ICcrJztcbnZhciBDX0RBU0ggPSAnLSc7XG52YXIgQ19ET1QgPSAnLic7XG52YXIgQ19TUEFDRSA9ICcgJztcbnZhciBDX05FV0xJTkUgPSAnXFxuJztcbnZhciBDX1RBQiA9ICdcXHQnO1xudmFyIENfUEFSRU5fQ0xPU0UgPSAnKSc7XG52YXIgQ19YX0xPV0VSID0gJ3gnO1xuXG52YXIgVEFCX1NJWkUgPSA0O1xudmFyIEVYUFJFU1NJT05fTE9PU0VfTElTVF9JVEVNID0gL1xcblxcbig/IVxccyokKS87XG52YXIgRVhQUkVTU0lPTl9UQVNLX0lURU0gPSAvXlxcWyhbIFxcdF18eHxYKV1bIFxcdF0vO1xudmFyIEVYUFJFU1NJT05fQlVMTEVUID0gL14oWyBcXHRdKikoWyorLV18XFxkK1suKV0pKCB7MSw0fSg/ISApfCB8XFx0fCR8KD89XFxuKSkoW15cXG5dKikvO1xudmFyIEVYUFJFU1NJT05fUEVEQU5USUNfQlVMTEVUID0gL14oWyBcXHRdKikoWyorLV18XFxkK1suKV0pKFsgXFx0XSspLztcbnZhciBFWFBSRVNTSU9OX0lOSVRJQUxfSU5ERU5UID0gL14oIHsxLDR9fFxcdCk/L2dtO1xuXG4vKiBNYXAgb2YgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgdXNlZCB0byBtYXJrXG4gKiBsaXN0LWl0ZW1zLiAqL1xudmFyIExJU1RfVU5PUkRFUkVEX01BUktFUlMgPSB7fTtcblxuTElTVF9VTk9SREVSRURfTUFSS0VSU1tDX0FTVEVSSVNLXSA9IHRydWU7XG5MSVNUX1VOT1JERVJFRF9NQVJLRVJTW0NfUExVU10gPSB0cnVlO1xuTElTVF9VTk9SREVSRURfTUFSS0VSU1tDX0RBU0hdID0gdHJ1ZTtcblxuLyogTWFwIG9mIGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gbWFya1xuICogbGlzdC1pdGVtcyBhZnRlciBhIGRpZ2l0LiAqL1xudmFyIExJU1RfT1JERVJFRF9NQVJLRVJTID0ge307XG5cbkxJU1RfT1JERVJFRF9NQVJLRVJTW0NfRE9UXSA9IHRydWU7XG5cbi8qIE1hcCBvZiBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1hcmtcbiAqIGxpc3QtaXRlbXMgYWZ0ZXIgYSBkaWdpdC4gKi9cbnZhciBMSVNUX09SREVSRURfQ09NTU9OTUFSS19NQVJLRVJTID0ge307XG5cbkxJU1RfT1JERVJFRF9DT01NT05NQVJLX01BUktFUlNbQ19ET1RdID0gdHJ1ZTtcbkxJU1RfT1JERVJFRF9DT01NT05NQVJLX01BUktFUlNbQ19QQVJFTl9DTE9TRV0gPSB0cnVlO1xuXG5mdW5jdGlvbiBsaXN0KGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBjb21tb25tYXJrID0gc2VsZi5vcHRpb25zLmNvbW1vbm1hcms7XG4gIHZhciBwZWRhbnRpYyA9IHNlbGYub3B0aW9ucy5wZWRhbnRpYztcbiAgdmFyIHRva2VuaXplcnMgPSBzZWxmLmJsb2NrVG9rZW5pemVycztcbiAgdmFyIGludGVydXB0b3JzID0gc2VsZi5pbnRlcnJ1cHRMaXN0O1xuICB2YXIgbWFya2VycztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgdmFyIHN0YXJ0ID0gbnVsbDtcbiAgdmFyIHNpemUgPSAwO1xuICB2YXIgcXVldWU7XG4gIHZhciBvcmRlcmVkO1xuICB2YXIgY2hhcmFjdGVyO1xuICB2YXIgbWFya2VyO1xuICB2YXIgbmV4dEluZGV4O1xuICB2YXIgc3RhcnRJbmRleDtcbiAgdmFyIHByZWZpeGVkO1xuICB2YXIgY3VycmVudE1hcmtlcjtcbiAgdmFyIGNvbnRlbnQ7XG4gIHZhciBsaW5lO1xuICB2YXIgcHJldkVtcHR5O1xuICB2YXIgZW1wdHk7XG4gIHZhciBpdGVtcztcbiAgdmFyIGFsbExpbmVzO1xuICB2YXIgZW1wdHlMaW5lcztcbiAgdmFyIGl0ZW07XG4gIHZhciBlbnRlclRvcDtcbiAgdmFyIGV4aXRCbG9ja3F1b3RlO1xuICB2YXIgaXNMb29zZTtcbiAgdmFyIG5vZGU7XG4gIHZhciBub3c7XG4gIHZhciBlbmQ7XG4gIHZhciBpbmRlbnRlZDtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gQ19UQUIpIHtcbiAgICAgIHNpemUgKz0gVEFCX1NJWkUgLSAoc2l6ZSAlIFRBQl9TSVpFKTtcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gQ19TUEFDRSkge1xuICAgICAgc2l6ZSsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpbmRleCsrO1xuICB9XG5cbiAgaWYgKHNpemUgPj0gVEFCX1NJWkUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gIG1hcmtlcnMgPSBjb21tb25tYXJrID9cbiAgICBMSVNUX09SREVSRURfQ09NTU9OTUFSS19NQVJLRVJTIDpcbiAgICBMSVNUX09SREVSRURfTUFSS0VSUztcblxuICBpZiAoTElTVF9VTk9SREVSRURfTUFSS0VSU1tjaGFyYWN0ZXJdID09PSB0cnVlKSB7XG4gICAgbWFya2VyID0gY2hhcmFjdGVyO1xuICAgIG9yZGVyZWQgPSBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBvcmRlcmVkID0gdHJ1ZTtcbiAgICBxdWV1ZSA9ICcnO1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICBpZiAoIWRlY2ltYWwoY2hhcmFjdGVyKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKCFxdWV1ZSB8fCBtYXJrZXJzW2NoYXJhY3Rlcl0gIT09IHRydWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdGFydCA9IHBhcnNlSW50KHF1ZXVlLCAxMCk7XG4gICAgbWFya2VyID0gY2hhcmFjdGVyO1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpO1xuXG4gIGlmIChjaGFyYWN0ZXIgIT09IENfU1BBQ0UgJiYgY2hhcmFjdGVyICE9PSBDX1RBQikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGluZGV4ID0gMDtcbiAgaXRlbXMgPSBbXTtcbiAgYWxsTGluZXMgPSBbXTtcbiAgZW1wdHlMaW5lcyA9IFtdO1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIG5leHRJbmRleCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FLCBpbmRleCk7XG4gICAgc3RhcnRJbmRleCA9IGluZGV4O1xuICAgIHByZWZpeGVkID0gZmFsc2U7XG4gICAgaW5kZW50ZWQgPSBmYWxzZTtcblxuICAgIGlmIChuZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBsZW5ndGg7XG4gICAgfVxuXG4gICAgZW5kID0gaW5kZXggKyBUQUJfU0laRTtcbiAgICBzaXplID0gMDtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gQ19UQUIpIHtcbiAgICAgICAgc2l6ZSArPSBUQUJfU0laRSAtIChzaXplICUgVEFCX1NJWkUpO1xuICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IENfU1BBQ0UpIHtcbiAgICAgICAgc2l6ZSsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgaWYgKHNpemUgPj0gVEFCX1NJWkUpIHtcbiAgICAgIGluZGVudGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbSAmJiBzaXplID49IGl0ZW0uaW5kZW50KSB7XG4gICAgICBpbmRlbnRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcbiAgICBjdXJyZW50TWFya2VyID0gbnVsbDtcblxuICAgIGlmICghaW5kZW50ZWQpIHtcbiAgICAgIGlmIChMSVNUX1VOT1JERVJFRF9NQVJLRVJTW2NoYXJhY3Rlcl0gPT09IHRydWUpIHtcbiAgICAgICAgY3VycmVudE1hcmtlciA9IGNoYXJhY3RlcjtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgc2l6ZSsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWUgPSAnJztcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICAgICAgaWYgKCFkZWNpbWFsKGNoYXJhY3RlcikpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcbiAgICAgICAgaW5kZXgrKztcblxuICAgICAgICBpZiAocXVldWUgJiYgbWFya2Vyc1tjaGFyYWN0ZXJdID09PSB0cnVlKSB7XG4gICAgICAgICAgY3VycmVudE1hcmtlciA9IGNoYXJhY3RlcjtcbiAgICAgICAgICBzaXplICs9IHF1ZXVlLmxlbmd0aCArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnRNYXJrZXIpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBDX1RBQikge1xuICAgICAgICAgIHNpemUgKz0gVEFCX1NJWkUgLSAoc2l6ZSAlIFRBQl9TSVpFKTtcbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gQ19TUEFDRSkge1xuICAgICAgICAgIGVuZCA9IGluZGV4ICsgVEFCX1NJWkU7XG5cbiAgICAgICAgICB3aGlsZSAoaW5kZXggPCBlbmQpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBDX1NQQUNFKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgc2l6ZSsrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpbmRleCA9PT0gZW5kICYmIHZhbHVlLmNoYXJBdChpbmRleCkgPT09IENfU1BBQ0UpIHtcbiAgICAgICAgICAgIGluZGV4IC09IFRBQl9TSVpFIC0gMTtcbiAgICAgICAgICAgIHNpemUgLT0gVEFCX1NJWkUgLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgIT09IENfTkVXTElORSAmJiBjaGFyYWN0ZXIgIT09ICcnKSB7XG4gICAgICAgICAgY3VycmVudE1hcmtlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudE1hcmtlcikge1xuICAgICAgaWYgKCFwZWRhbnRpYyAmJiBtYXJrZXIgIT09IGN1cnJlbnRNYXJrZXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHByZWZpeGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjb21tb25tYXJrICYmICFpbmRlbnRlZCAmJiB2YWx1ZS5jaGFyQXQoc3RhcnRJbmRleCkgPT09IENfU1BBQ0UpIHtcbiAgICAgICAgaW5kZW50ZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChjb21tb25tYXJrICYmIGl0ZW0pIHtcbiAgICAgICAgaW5kZW50ZWQgPSBzaXplID49IGl0ZW0uaW5kZW50IHx8IHNpemUgPiBUQUJfU0laRTtcbiAgICAgIH1cblxuICAgICAgcHJlZml4ZWQgPSBmYWxzZTtcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleDtcbiAgICB9XG5cbiAgICBsaW5lID0gdmFsdWUuc2xpY2Uoc3RhcnRJbmRleCwgbmV4dEluZGV4KTtcbiAgICBjb250ZW50ID0gc3RhcnRJbmRleCA9PT0gaW5kZXggPyBsaW5lIDogdmFsdWUuc2xpY2UoaW5kZXgsIG5leHRJbmRleCk7XG5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50TWFya2VyID09PSBDX0FTVEVSSVNLIHx8XG4gICAgICBjdXJyZW50TWFya2VyID09PSBDX1VOREVSU0NPUkUgfHxcbiAgICAgIGN1cnJlbnRNYXJrZXIgPT09IENfREFTSFxuICAgICkge1xuICAgICAgaWYgKHRva2VuaXplcnMudGhlbWF0aWNCcmVhay5jYWxsKHNlbGYsIGVhdCwgbGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJldkVtcHR5ID0gZW1wdHk7XG4gICAgZW1wdHkgPSAhdHJpbShjb250ZW50KS5sZW5ndGg7XG5cbiAgICBpZiAoaW5kZW50ZWQgJiYgaXRlbSkge1xuICAgICAgaXRlbS52YWx1ZSA9IGl0ZW0udmFsdWUuY29uY2F0KGVtcHR5TGluZXMsIGxpbmUpO1xuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSk7XG4gICAgICBlbXB0eUxpbmVzID0gW107XG4gICAgfSBlbHNlIGlmIChwcmVmaXhlZCkge1xuICAgICAgaWYgKGVtcHR5TGluZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGl0ZW0udmFsdWUucHVzaCgnJyk7XG4gICAgICAgIGl0ZW0udHJhaWwgPSBlbXB0eUxpbmVzLmNvbmNhdCgpO1xuICAgICAgfVxuXG4gICAgICBpdGVtID0ge1xuICAgICAgICB2YWx1ZTogW2xpbmVdLFxuICAgICAgICBpbmRlbnQ6IHNpemUsXG4gICAgICAgIHRyYWlsOiBbXVxuICAgICAgfTtcblxuICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIGFsbExpbmVzID0gYWxsTGluZXMuY29uY2F0KGVtcHR5TGluZXMsIGxpbmUpO1xuICAgICAgZW1wdHlMaW5lcyA9IFtdO1xuICAgIH0gZWxzZSBpZiAoZW1wdHkpIHtcbiAgICAgIGlmIChwcmV2RW1wdHkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGVtcHR5TGluZXMucHVzaChsaW5lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByZXZFbXB0eSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGludGVycnVwdChpbnRlcnVwdG9ycywgdG9rZW5pemVycywgc2VsZiwgW2VhdCwgbGluZSwgdHJ1ZV0pKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpdGVtLnZhbHVlID0gaXRlbS52YWx1ZS5jb25jYXQoZW1wdHlMaW5lcywgbGluZSk7XG4gICAgICBhbGxMaW5lcyA9IGFsbExpbmVzLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKTtcbiAgICAgIGVtcHR5TGluZXMgPSBbXTtcbiAgICB9XG5cbiAgICBpbmRleCA9IG5leHRJbmRleCArIDE7XG4gIH1cblxuICBub2RlID0gZWF0KGFsbExpbmVzLmpvaW4oQ19ORVdMSU5FKSkucmVzZXQoe1xuICAgIHR5cGU6ICdsaXN0JyxcbiAgICBvcmRlcmVkOiBvcmRlcmVkLFxuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBsb29zZTogbnVsbCxcbiAgICBjaGlsZHJlbjogW11cbiAgfSk7XG5cbiAgZW50ZXJUb3AgPSBzZWxmLmVudGVyTGlzdCgpO1xuICBleGl0QmxvY2txdW90ZSA9IHNlbGYuZW50ZXJCbG9jaygpO1xuICBpc0xvb3NlID0gZmFsc2U7XG4gIGluZGV4ID0gLTE7XG4gIGxlbmd0aCA9IGl0ZW1zLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGl0ZW0gPSBpdGVtc1tpbmRleF0udmFsdWUuam9pbihDX05FV0xJTkUpO1xuICAgIG5vdyA9IGVhdC5ub3coKTtcblxuICAgIGl0ZW0gPSBlYXQoaXRlbSkobGlzdEl0ZW0oc2VsZiwgaXRlbSwgbm93KSwgbm9kZSk7XG5cbiAgICBpZiAoaXRlbS5sb29zZSkge1xuICAgICAgaXNMb29zZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaXRlbSA9IGl0ZW1zW2luZGV4XS50cmFpbC5qb2luKENfTkVXTElORSk7XG5cbiAgICBpZiAoaW5kZXggIT09IGxlbmd0aCAtIDEpIHtcbiAgICAgIGl0ZW0gKz0gQ19ORVdMSU5FO1xuICAgIH1cblxuICAgIGVhdChpdGVtKTtcbiAgfVxuXG4gIGVudGVyVG9wKCk7XG4gIGV4aXRCbG9ja3F1b3RlKCk7XG5cbiAgbm9kZS5sb29zZSA9IGlzTG9vc2U7XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtKGN0eCwgdmFsdWUsIHBvc2l0aW9uKSB7XG4gIHZhciBvZmZzZXRzID0gY3R4Lm9mZnNldDtcbiAgdmFyIGZuID0gY3R4Lm9wdGlvbnMucGVkYW50aWMgPyBwZWRhbnRpY0xpc3RJdGVtIDogbm9ybWFsTGlzdEl0ZW07XG4gIHZhciBjaGVja2VkID0gbnVsbDtcbiAgdmFyIHRhc2s7XG4gIHZhciBpbmRlbnQ7XG5cbiAgdmFsdWUgPSBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuXG4gIGlmIChjdHgub3B0aW9ucy5nZm0pIHtcbiAgICB0YXNrID0gdmFsdWUubWF0Y2goRVhQUkVTU0lPTl9UQVNLX0lURU0pO1xuXG4gICAgaWYgKHRhc2spIHtcbiAgICAgIGluZGVudCA9IHRhc2tbMF0ubGVuZ3RoO1xuICAgICAgY2hlY2tlZCA9IHRhc2tbMV0udG9Mb3dlckNhc2UoKSA9PT0gQ19YX0xPV0VSO1xuICAgICAgb2Zmc2V0c1twb3NpdGlvbi5saW5lXSArPSBpbmRlbnQ7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKGluZGVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnbGlzdEl0ZW0nLFxuICAgIGxvb3NlOiBFWFBSRVNTSU9OX0xPT1NFX0xJU1RfSVRFTS50ZXN0KHZhbHVlKSB8fFxuICAgICAgdmFsdWUuY2hhckF0KHZhbHVlLmxlbmd0aCAtIDEpID09PSBDX05FV0xJTkUsXG4gICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICBjaGlsZHJlbjogY3R4LnRva2VuaXplQmxvY2sodmFsdWUsIHBvc2l0aW9uKVxuICB9O1xufVxuXG4vKiBDcmVhdGUgYSBsaXN0LWl0ZW0gdXNpbmcgb3Zlcmx5IHNpbXBsZSBtZWNoYW5pY3MuICovXG5mdW5jdGlvbiBwZWRhbnRpY0xpc3RJdGVtKGN0eCwgdmFsdWUsIHBvc2l0aW9uKSB7XG4gIHZhciBvZmZzZXRzID0gY3R4Lm9mZnNldDtcbiAgdmFyIGxpbmUgPSBwb3NpdGlvbi5saW5lO1xuXG4gIC8qIFJlbW92ZSB0aGUgbGlzdC1pdGVt4oCZcyBidWxsZXQuICovXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShFWFBSRVNTSU9OX1BFREFOVElDX0JVTExFVCwgcmVwbGFjZXIpO1xuXG4gIC8qIFRoZSBpbml0aWFsIGxpbmUgd2FzIGFsc28gbWF0Y2hlZCBieSB0aGUgYmVsb3csIHNvXG4gICAqIHdlIHJlc2V0IHRoZSBgbGluZWAuICovXG4gIGxpbmUgPSBwb3NpdGlvbi5saW5lO1xuXG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKEVYUFJFU1NJT05fSU5JVElBTF9JTkRFTlQsIHJlcGxhY2VyKTtcblxuICAvKiBBIHNpbXBsZSByZXBsYWNlciB3aGljaCByZW1vdmVkIGFsbCBtYXRjaGVzLFxuICAgKiBhbmQgYWRkcyB0aGVpciBsZW5ndGggdG8gYG9mZnNldGAuICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VyKCQwKSB7XG4gICAgb2Zmc2V0c1tsaW5lXSA9IChvZmZzZXRzW2xpbmVdIHx8IDApICsgJDAubGVuZ3RoO1xuICAgIGxpbmUrKztcblxuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG4vKiBDcmVhdGUgYSBsaXN0LWl0ZW0gdXNpbmcgc2FuZSBtZWNoYW5pY3MuICovXG5mdW5jdGlvbiBub3JtYWxMaXN0SXRlbShjdHgsIHZhbHVlLCBwb3NpdGlvbikge1xuICB2YXIgb2Zmc2V0cyA9IGN0eC5vZmZzZXQ7XG4gIHZhciBsaW5lID0gcG9zaXRpb24ubGluZTtcbiAgdmFyIG1heDtcbiAgdmFyIGJ1bGxldDtcbiAgdmFyIHJlc3Q7XG4gIHZhciBsaW5lcztcbiAgdmFyIHRyaW1tZWRMaW5lcztcbiAgdmFyIGluZGV4O1xuICB2YXIgbGVuZ3RoO1xuXG4gIC8qIFJlbW92ZSB0aGUgbGlzdC1pdGVt4oCZcyBidWxsZXQuICovXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShFWFBSRVNTSU9OX0JVTExFVCwgcmVwbGFjZXIpO1xuXG4gIGxpbmVzID0gdmFsdWUuc3BsaXQoQ19ORVdMSU5FKTtcblxuICB0cmltbWVkTGluZXMgPSByZW1vdmVJbmRlbnQodmFsdWUsIGdldEluZGVudChtYXgpLmluZGVudCkuc3BsaXQoQ19ORVdMSU5FKTtcblxuICAvKiBXZSByZXBsYWNlZCB0aGUgaW5pdGlhbCBidWxsZXQgd2l0aCBzb21ldGhpbmdcbiAgICogZWxzZSBhYm92ZSwgd2hpY2ggd2FzIHVzZWQgdG8gdHJpY2tcbiAgICogYHJlbW92ZUluZGVudGF0aW9uYCBpbnRvIHJlbW92aW5nIHNvbWUgbW9yZVxuICAgKiBjaGFyYWN0ZXJzIHdoZW4gcG9zc2libGUuICBIb3dldmVyLCB0aGF0IGNvdWxkXG4gICAqIHJlc3VsdCBpbiB0aGUgaW5pdGlhbCBsaW5lIHRvIGJlIHN0cmlwcGVkIG1vcmVcbiAgICogdGhhbiBpdCBzaG91bGQgYmUuICovXG4gIHRyaW1tZWRMaW5lc1swXSA9IHJlc3Q7XG5cbiAgb2Zmc2V0c1tsaW5lXSA9IChvZmZzZXRzW2xpbmVdIHx8IDApICsgYnVsbGV0Lmxlbmd0aDtcbiAgbGluZSsrO1xuXG4gIGluZGV4ID0gMDtcbiAgbGVuZ3RoID0gbGluZXMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgb2Zmc2V0c1tsaW5lXSA9IChvZmZzZXRzW2xpbmVdIHx8IDApICtcbiAgICAgIGxpbmVzW2luZGV4XS5sZW5ndGggLSB0cmltbWVkTGluZXNbaW5kZXhdLmxlbmd0aDtcbiAgICBsaW5lKys7XG4gIH1cblxuICByZXR1cm4gdHJpbW1lZExpbmVzLmpvaW4oQ19ORVdMSU5FKTtcblxuICBmdW5jdGlvbiByZXBsYWNlcigkMCwgJDEsICQyLCAkMywgJDQpIHtcbiAgICBidWxsZXQgPSAkMSArICQyICsgJDM7XG4gICAgcmVzdCA9ICQ0O1xuXG4gICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IG5pbmUgbnVtYmVyZWQgbGlzdCBpdGVtc1xuICAgICAqIGNhbiBpbmRlbnQgd2l0aCBhbiBleHRyYSBzcGFjZS4gIFRoYXQgaXMsIHdoZW5cbiAgICAgKiB0aGUgYnVsbGV0IGRpZCBub3QgcmVjZWl2ZSBhbiBleHRyYSBmaW5hbCBzcGFjZS4gKi9cbiAgICBpZiAoTnVtYmVyKCQyKSA8IDEwICYmIGJ1bGxldC5sZW5ndGggJSAyID09PSAxKSB7XG4gICAgICAkMiA9IENfU1BBQ0UgKyAkMjtcbiAgICB9XG5cbiAgICBtYXggPSAkMSArIHJlcGVhdChDX1NQQUNFLCAkMi5sZW5ndGgpICsgJDM7XG5cbiAgICByZXR1cm4gbWF4ICsgcmVzdDtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldGV4dEhlYWRpbmc7XG5cbnZhciBDX05FV0xJTkUgPSAnXFxuJztcbnZhciBDX1RBQiA9ICdcXHQnO1xudmFyIENfU1BBQ0UgPSAnICc7XG52YXIgQ19FUVVBTFMgPSAnPSc7XG52YXIgQ19EQVNIID0gJy0nO1xuXG52YXIgTUFYX0hFQURJTkdfSU5ERU5UID0gMztcblxuLyogTWFwIG9mIGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gbWFyayBzZXRleHRcbiAqIGhlYWRlcnMsIG1hcHBpbmcgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBkZXB0aC4gKi9cbnZhciBTRVRFWFRfTUFSS0VSUyA9IHt9O1xuXG5TRVRFWFRfTUFSS0VSU1tDX0VRVUFMU10gPSAxO1xuU0VURVhUX01BUktFUlNbQ19EQVNIXSA9IDI7XG5cbmZ1bmN0aW9uIHNldGV4dEhlYWRpbmcoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIG5vdyA9IGVhdC5ub3coKTtcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBzdWJ2YWx1ZSA9ICcnO1xuICB2YXIgY29udGVudDtcbiAgdmFyIHF1ZXVlO1xuICB2YXIgY2hhcmFjdGVyO1xuICB2YXIgbWFya2VyO1xuICB2YXIgZGVwdGg7XG5cbiAgLyogRWF0IGluaXRpYWwgaW5kZW50YXRpb24uICovXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IENfU1BBQ0UgfHwgaW5kZXggPj0gTUFYX0hFQURJTkdfSU5ERU5UKSB7XG4gICAgICBpbmRleC0tO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyO1xuICB9XG5cbiAgLyogRWF0IGNvbnRlbnQuICovXG4gIGNvbnRlbnQgPSAnJztcbiAgcXVldWUgPSAnJztcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBDX05FV0xJTkUpIHtcbiAgICAgIGluZGV4LS07XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBDX1NQQUNFIHx8IGNoYXJhY3RlciA9PT0gQ19UQUIpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCArPSBxdWV1ZSArIGNoYXJhY3RlcjtcbiAgICAgIHF1ZXVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgbm93LmNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGg7XG4gIG5vdy5vZmZzZXQgKz0gc3VidmFsdWUubGVuZ3RoO1xuICBzdWJ2YWx1ZSArPSBjb250ZW50ICsgcXVldWU7XG5cbiAgLyogRW5zdXJlIHRoZSBjb250ZW50IGlzIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBhbmQgYVxuICAgKiB2YWxpZCBtYXJrZXIuICovXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KTtcbiAgbWFya2VyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpO1xuXG4gIGlmIChjaGFyYWN0ZXIgIT09IENfTkVXTElORSB8fCAhU0VURVhUX01BUktFUlNbbWFya2VyXSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN1YnZhbHVlICs9IGNoYXJhY3RlcjtcblxuICAvKiBFYXQgU2V0ZXh0LWxpbmUuICovXG4gIHF1ZXVlID0gbWFya2VyO1xuICBkZXB0aCA9IFNFVEVYVF9NQVJLRVJTW21hcmtlcl07XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gbWFya2VyKSB7XG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBDX05FV0xJTkUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpbmRleC0tO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSArIHF1ZXVlKSh7XG4gICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgIGRlcHRoOiBkZXB0aCxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShjb250ZW50LCBub3cpXG4gIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXR0cmlidXRlTmFtZSA9ICdbYS16QS1aXzpdW2EtekEtWjAtOTouXy1dKic7XG52YXIgdW5xdW90ZWQgPSAnW15cIlxcJz08PmBcXFxcdTAwMDAtXFxcXHUwMDIwXSsnO1xudmFyIHNpbmdsZVF1b3RlZCA9ICdcXCdbXlxcJ10qXFwnJztcbnZhciBkb3VibGVRdW90ZWQgPSAnXCJbXlwiXSpcIic7XG52YXIgYXR0cmlidXRlVmFsdWUgPSAnKD86JyArIHVucXVvdGVkICsgJ3wnICsgc2luZ2xlUXVvdGVkICsgJ3wnICsgZG91YmxlUXVvdGVkICsgJyknO1xudmFyIGF0dHJpYnV0ZSA9ICcoPzpcXFxccysnICsgYXR0cmlidXRlTmFtZSArICcoPzpcXFxccyo9XFxcXHMqJyArIGF0dHJpYnV0ZVZhbHVlICsgJyk/KSc7XG52YXIgb3BlblRhZyA9ICc8W0EtWmEtel1bQS1aYS16MC05XFxcXC1dKicgKyBhdHRyaWJ1dGUgKyAnKlxcXFxzKlxcXFwvPz4nO1xudmFyIGNsb3NlVGFnID0gJzxcXFxcL1tBLVphLXpdW0EtWmEtejAtOVxcXFwtXSpcXFxccyo+JztcbnZhciBjb21tZW50ID0gJzwhLS0tLT58PCEtLSg/Oi0/W14+LV0pKD86LT9bXi1dKSotLT4nO1xudmFyIHByb2Nlc3NpbmcgPSAnPFs/XS4qP1s/XT4nO1xudmFyIGRlY2xhcmF0aW9uID0gJzwhW0EtWmEtel0rXFxcXHMrW14+XSo+JztcbnZhciBjZGF0YSA9ICc8IVxcXFxbQ0RBVEFcXFxcW1tcXFxcc1xcXFxTXSo/XFxcXF1cXFxcXT4nO1xuXG5leHBvcnRzLm9wZW5DbG9zZVRhZyA9IG5ldyBSZWdFeHAoJ14oPzonICsgb3BlblRhZyArICd8JyArIGNsb3NlVGFnICsgJyknKTtcblxuZXhwb3J0cy50YWcgPSBuZXcgUmVnRXhwKCdeKD86JyArXG4gIG9wZW5UYWcgKyAnfCcgK1xuICBjbG9zZVRhZyArICd8JyArXG4gIGNvbW1lbnQgKyAnfCcgK1xuICBwcm9jZXNzaW5nICsgJ3wnICtcbiAgZGVjbGFyYXRpb24gKyAnfCcgK1xuICBjZGF0YSArXG4nKScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgb3BlbkNsb3NlVGFnID0gcmVxdWlyZSgnLi4vdXRpbC9odG1sJykub3BlbkNsb3NlVGFnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJsb2NrSFRNTDtcblxudmFyIENfVEFCID0gJ1xcdCc7XG52YXIgQ19TUEFDRSA9ICcgJztcbnZhciBDX05FV0xJTkUgPSAnXFxuJztcbnZhciBDX0xUID0gJzwnO1xuXG5mdW5jdGlvbiBibG9ja0hUTUwoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGJsb2NrcyA9IHNlbGYub3B0aW9ucy5ibG9ja3M7XG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBuZXh0O1xuICB2YXIgbGluZTtcbiAgdmFyIG9mZnNldDtcbiAgdmFyIGNoYXJhY3RlcjtcbiAgdmFyIGNvdW50O1xuICB2YXIgc2VxdWVuY2U7XG4gIHZhciBzdWJ2YWx1ZTtcblxuICB2YXIgc2VxdWVuY2VzID0gW1xuICAgIFsvXjwoc2NyaXB0fHByZXxzdHlsZSkoPz0oXFxzfD58JCkpL2ksIC88XFwvKHNjcmlwdHxwcmV8c3R5bGUpPi9pLCB0cnVlXSxcbiAgICBbL148IS0tLywgLy0tPi8sIHRydWVdLFxuICAgIFsvXjxcXD8vLCAvXFw/Pi8sIHRydWVdLFxuICAgIFsvXjwhW0EtWmEtel0vLCAvPi8sIHRydWVdLFxuICAgIFsvXjwhXFxbQ0RBVEFcXFsvLCAvXFxdXFxdPi8sIHRydWVdLFxuICAgIFtuZXcgUmVnRXhwKCdePC8/KCcgKyBibG9ja3Muam9pbignfCcpICsgJykoPz0oXFxcXHN8Lz8+fCQpKScsICdpJyksIC9eJC8sIHRydWVdLFxuICAgIFtuZXcgUmVnRXhwKG9wZW5DbG9zZVRhZy5zb3VyY2UgKyAnXFxcXHMqJCcpLCAvXiQvLCBmYWxzZV1cbiAgXTtcblxuICAvKiBFYXQgaW5pdGlhbCBzcGFjaW5nLiAqL1xuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gQ19UQUIgJiYgY2hhcmFjdGVyICE9PSBDX1NQQUNFKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpbmRleCsrO1xuICB9XG5cbiAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IENfTFQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBuZXh0ID0gdmFsdWUuaW5kZXhPZihDX05FV0xJTkUsIGluZGV4ICsgMSk7XG4gIG5leHQgPSBuZXh0ID09PSAtMSA/IGxlbmd0aCA6IG5leHQ7XG4gIGxpbmUgPSB2YWx1ZS5zbGljZShpbmRleCwgbmV4dCk7XG4gIG9mZnNldCA9IC0xO1xuICBjb3VudCA9IHNlcXVlbmNlcy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsrb2Zmc2V0IDwgY291bnQpIHtcbiAgICBpZiAoc2VxdWVuY2VzW29mZnNldF1bMF0udGVzdChsaW5lKSkge1xuICAgICAgc2VxdWVuY2UgPSBzZXF1ZW5jZXNbb2Zmc2V0XTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmICghc2VxdWVuY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHNlcXVlbmNlWzJdO1xuICB9XG5cbiAgaW5kZXggPSBuZXh0O1xuXG4gIGlmICghc2VxdWVuY2VbMV0udGVzdChsaW5lKSkge1xuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgbmV4dCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FLCBpbmRleCArIDEpO1xuICAgICAgbmV4dCA9IG5leHQgPT09IC0xID8gbGVuZ3RoIDogbmV4dDtcbiAgICAgIGxpbmUgPSB2YWx1ZS5zbGljZShpbmRleCArIDEsIG5leHQpO1xuXG4gICAgICBpZiAoc2VxdWVuY2VbMV0udGVzdChsaW5lKSkge1xuICAgICAgICBpZiAobGluZSkge1xuICAgICAgICAgIGluZGV4ID0gbmV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpbmRleCA9IG5leHQ7XG4gICAgfVxuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5zbGljZSgwLCBpbmRleCk7XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe3R5cGU6ICdodG1sJywgdmFsdWU6IHN1YnZhbHVlfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjb2xsYXBzZVdoaXRlU3BhY2UgPSByZXF1aXJlKCdjb2xsYXBzZS13aGl0ZS1zcGFjZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vcm1hbGl6ZTtcblxuLyogTm9ybWFsaXplIGFuIGlkZW50aWZpZXIuICBDb2xsYXBzZXMgbXVsdGlwbGUgd2hpdGUgc3BhY2VcbiAqIGNoYXJhY3RlcnMgaW50byBhIHNpbmdsZSBzcGFjZSwgYW5kIHJlbW92ZXMgY2FzaW5nLiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplKHZhbHVlKSB7XG4gIHJldHVybiBjb2xsYXBzZVdoaXRlU3BhY2UodmFsdWUpLnRvTG93ZXJDYXNlKCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKTtcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCcuLi91dGlsL25vcm1hbGl6ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZvb3Rub3RlRGVmaW5pdGlvbjtcbmZvb3Rub3RlRGVmaW5pdGlvbi5ub3RJbkxpc3QgPSB0cnVlO1xuZm9vdG5vdGVEZWZpbml0aW9uLm5vdEluQmxvY2sgPSB0cnVlO1xuXG52YXIgQ19CQUNLU0xBU0ggPSAnXFxcXCc7XG52YXIgQ19ORVdMSU5FID0gJ1xcbic7XG52YXIgQ19UQUIgPSAnXFx0JztcbnZhciBDX1NQQUNFID0gJyAnO1xudmFyIENfQlJBQ0tFVF9PUEVOID0gJ1snO1xudmFyIENfQlJBQ0tFVF9DTE9TRSA9ICddJztcbnZhciBDX0NBUkVUID0gJ14nO1xudmFyIENfQ09MT04gPSAnOic7XG5cbnZhciBFWFBSRVNTSU9OX0lOSVRJQUxfVEFCID0gL14oIHs0fXxcXHQpPy9nbTtcblxuZnVuY3Rpb24gZm9vdG5vdGVEZWZpbml0aW9uKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBvZmZzZXRzID0gc2VsZi5vZmZzZXQ7XG4gIHZhciBpbmRleDtcbiAgdmFyIGxlbmd0aDtcbiAgdmFyIHN1YnZhbHVlO1xuICB2YXIgbm93O1xuICB2YXIgY3VycmVudExpbmU7XG4gIHZhciBjb250ZW50O1xuICB2YXIgcXVldWU7XG4gIHZhciBzdWJxdWV1ZTtcbiAgdmFyIGNoYXJhY3RlcjtcbiAgdmFyIGlkZW50aWZpZXI7XG4gIHZhciBhZGQ7XG4gIHZhciBleGl0O1xuXG4gIGlmICghc2VsZi5vcHRpb25zLmZvb3Rub3Rlcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGluZGV4ID0gMDtcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICBzdWJ2YWx1ZSA9ICcnO1xuICBub3cgPSBlYXQubm93KCk7XG4gIGN1cnJlbnRMaW5lID0gbm93LmxpbmU7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXI7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIGlmIChcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBDX0JSQUNLRVRfT1BFTiB8fFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBDX0NBUkVUXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN1YnZhbHVlICs9IENfQlJBQ0tFVF9PUEVOICsgQ19DQVJFVDtcbiAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGg7XG4gIHF1ZXVlID0gJyc7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IENfQlJBQ0tFVF9DTE9TRSkge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IENfQkFDS1NMQVNIKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgICBpbmRleCsrO1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIGlmIChcbiAgICAhcXVldWUgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBDX0JSQUNLRVRfQ0xPU0UgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSAhPT0gQ19DT0xPTlxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZGVudGlmaWVyID0gbm9ybWFsaXplKHF1ZXVlKTtcbiAgc3VidmFsdWUgKz0gcXVldWUgKyBDX0JSQUNLRVRfQ0xPU0UgKyBDX0NPTE9OO1xuICBpbmRleCA9IHN1YnZhbHVlLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gQ19UQUIgJiYgY2hhcmFjdGVyICE9PSBDX1NQQUNFKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXI7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIG5vdy5jb2x1bW4gKz0gc3VidmFsdWUubGVuZ3RoO1xuICBub3cub2Zmc2V0ICs9IHN1YnZhbHVlLmxlbmd0aDtcbiAgcXVldWUgPSAnJztcbiAgY29udGVudCA9ICcnO1xuICBzdWJxdWV1ZSA9ICcnO1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBDX05FV0xJTkUpIHtcbiAgICAgIHN1YnF1ZXVlID0gY2hhcmFjdGVyO1xuICAgICAgaW5kZXgrKztcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciAhPT0gQ19ORVdMSU5FKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IHN1YnF1ZXVlO1xuICAgICAgc3VicXVldWUgPSAnJztcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciAhPT0gQ19TUEFDRSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VicXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgICBpbmRleCsrO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3VicXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBzdWJxdWV1ZTtcbiAgICB9XG5cbiAgICBpZiAocXVldWUpIHtcbiAgICAgIGNvbnRlbnQgKz0gcXVldWU7XG4gICAgICBxdWV1ZSA9ICcnO1xuICAgIH1cblxuICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBzdWJ2YWx1ZSArPSBjb250ZW50O1xuXG4gIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoRVhQUkVTU0lPTl9JTklUSUFMX1RBQiwgZnVuY3Rpb24gKGxpbmUpIHtcbiAgICBvZmZzZXRzW2N1cnJlbnRMaW5lXSA9IChvZmZzZXRzW2N1cnJlbnRMaW5lXSB8fCAwKSArIGxpbmUubGVuZ3RoO1xuICAgIGN1cnJlbnRMaW5lKys7XG5cbiAgICByZXR1cm4gJyc7XG4gIH0pO1xuXG4gIGFkZCA9IGVhdChzdWJ2YWx1ZSk7XG5cbiAgZXhpdCA9IHNlbGYuZW50ZXJCbG9jaygpO1xuICBjb250ZW50ID0gc2VsZi50b2tlbml6ZUJsb2NrKGNvbnRlbnQsIG5vdyk7XG4gIGV4aXQoKTtcblxuICByZXR1cm4gYWRkKHtcbiAgICB0eXBlOiAnZm9vdG5vdGVEZWZpbml0aW9uJyxcbiAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgIGNoaWxkcmVuOiBjb250ZW50XG4gIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJyk7XG52YXIgbm9ybWFsaXplID0gcmVxdWlyZSgnLi4vdXRpbC9ub3JtYWxpemUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbml0aW9uO1xuZGVmaW5pdGlvbi5ub3RJbkxpc3QgPSB0cnVlO1xuZGVmaW5pdGlvbi5ub3RJbkJsb2NrID0gdHJ1ZTtcblxudmFyIENfRE9VQkxFX1FVT1RFID0gJ1wiJztcbnZhciBDX1NJTkdMRV9RVU9URSA9ICdcXCcnO1xudmFyIENfQkFDS1NMQVNIID0gJ1xcXFwnO1xudmFyIENfTkVXTElORSA9ICdcXG4nO1xudmFyIENfVEFCID0gJ1xcdCc7XG52YXIgQ19TUEFDRSA9ICcgJztcbnZhciBDX0JSQUNLRVRfT1BFTiA9ICdbJztcbnZhciBDX0JSQUNLRVRfQ0xPU0UgPSAnXSc7XG52YXIgQ19QQVJFTl9PUEVOID0gJygnO1xudmFyIENfUEFSRU5fQ0xPU0UgPSAnKSc7XG52YXIgQ19DT0xPTiA9ICc6JztcbnZhciBDX0xUID0gJzwnO1xudmFyIENfR1QgPSAnPic7XG5cbmZ1bmN0aW9uIGRlZmluaXRpb24oZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZWxmLm9wdGlvbnMuY29tbW9ubWFyaztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgdmFyIHN1YnZhbHVlID0gJyc7XG4gIHZhciBiZWZvcmVVUkw7XG4gIHZhciBiZWZvcmVUaXRsZTtcbiAgdmFyIHF1ZXVlO1xuICB2YXIgY2hhcmFjdGVyO1xuICB2YXIgdGVzdDtcbiAgdmFyIGlkZW50aWZpZXI7XG4gIHZhciB1cmw7XG4gIHZhciB0aXRsZTtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gQ19TUEFDRSAmJiBjaGFyYWN0ZXIgIT09IENfVEFCKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXI7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gQ19CUkFDS0VUX09QRU4pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpbmRleCsrO1xuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXI7XG4gIHF1ZXVlID0gJyc7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IENfQlJBQ0tFVF9DTE9TRSkge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IENfQkFDS1NMQVNIKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgICBpbmRleCsrO1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIGlmIChcbiAgICAhcXVldWUgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBDX0JSQUNLRVRfQ0xPU0UgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSAhPT0gQ19DT0xPTlxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZGVudGlmaWVyID0gcXVldWU7XG4gIHN1YnZhbHVlICs9IHF1ZXVlICsgQ19CUkFDS0VUX0NMT1NFICsgQ19DT0xPTjtcbiAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGg7XG4gIHF1ZXVlID0gJyc7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChcbiAgICAgIGNoYXJhY3RlciAhPT0gQ19UQUIgJiZcbiAgICAgIGNoYXJhY3RlciAhPT0gQ19TUEFDRSAmJlxuICAgICAgY2hhcmFjdGVyICE9PSBDX05FV0xJTkVcbiAgICApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlcjtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcbiAgcXVldWUgPSAnJztcbiAgYmVmb3JlVVJMID0gc3VidmFsdWU7XG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gQ19MVCkge1xuICAgIGluZGV4Kys7XG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgIGlmICghaXNFbmNsb3NlZFVSTENoYXJhY3RlcihjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBpc0VuY2xvc2VkVVJMQ2hhcmFjdGVyLmRlbGltaXRlcikge1xuICAgICAgc3VidmFsdWUgKz0gQ19MVCArIHF1ZXVlICsgY2hhcmFjdGVyO1xuICAgICAgaW5kZXgrKztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvbW1vbm1hcmspIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpbmRleCAtPSBxdWV1ZS5sZW5ndGggKyAxO1xuICAgICAgcXVldWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICBpZiAoIWlzVW5jbG9zZWRVUkxDaGFyYWN0ZXIoY2hhcmFjdGVyKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZTtcbiAgfVxuXG4gIGlmICghcXVldWUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB1cmwgPSBxdWV1ZTtcbiAgcXVldWUgPSAnJztcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyICE9PSBDX1RBQiAmJlxuICAgICAgY2hhcmFjdGVyICE9PSBDX1NQQUNFICYmXG4gICAgICBjaGFyYWN0ZXIgIT09IENfTkVXTElORVxuICAgICkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuICB0ZXN0ID0gbnVsbDtcblxuICBpZiAoY2hhcmFjdGVyID09PSBDX0RPVUJMRV9RVU9URSkge1xuICAgIHRlc3QgPSBDX0RPVUJMRV9RVU9URTtcbiAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IENfU0lOR0xFX1FVT1RFKSB7XG4gICAgdGVzdCA9IENfU0lOR0xFX1FVT1RFO1xuICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gQ19QQVJFTl9PUEVOKSB7XG4gICAgdGVzdCA9IENfUEFSRU5fQ0xPU0U7XG4gIH1cblxuICBpZiAoIXRlc3QpIHtcbiAgICBxdWV1ZSA9ICcnO1xuICAgIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoO1xuICB9IGVsc2UgaWYgKHF1ZXVlKSB7XG4gICAgc3VidmFsdWUgKz0gcXVldWUgKyBjaGFyYWN0ZXI7XG4gICAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGg7XG4gICAgcXVldWUgPSAnJztcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGVzdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gQ19ORVdMSU5FKSB7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gQ19ORVdMSU5FIHx8IGNoYXJhY3RlciA9PT0gdGVzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHF1ZXVlICs9IENfTkVXTElORTtcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGVzdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJlZm9yZVRpdGxlID0gc3VidmFsdWU7XG4gICAgc3VidmFsdWUgKz0gcXVldWUgKyBjaGFyYWN0ZXI7XG4gICAgaW5kZXgrKztcbiAgICB0aXRsZSA9IHF1ZXVlO1xuICAgIHF1ZXVlID0gJyc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IENfVEFCICYmIGNoYXJhY3RlciAhPT0gQ19TUEFDRSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gIGlmICghY2hhcmFjdGVyIHx8IGNoYXJhY3RlciA9PT0gQ19ORVdMSU5FKSB7XG4gICAgaWYgKHNpbGVudCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYmVmb3JlVVJMID0gZWF0KGJlZm9yZVVSTCkudGVzdCgpLmVuZDtcbiAgICB1cmwgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZSh1cmwpLCBiZWZvcmVVUkwsIHtub25UZXJtaW5hdGVkOiBmYWxzZX0pO1xuXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICBiZWZvcmVUaXRsZSA9IGVhdChiZWZvcmVUaXRsZSkudGVzdCgpLmVuZDtcbiAgICAgIHRpdGxlID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUodGl0bGUpLCBiZWZvcmVUaXRsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgICAgdHlwZTogJ2RlZmluaXRpb24nLFxuICAgICAgaWRlbnRpZmllcjogbm9ybWFsaXplKGlkZW50aWZpZXIpLFxuICAgICAgdGl0bGU6IHRpdGxlIHx8IG51bGwsXG4gICAgICB1cmw6IHVybFxuICAgIH0pO1xuICB9XG59XG5cbi8qIENoZWNrIGlmIGBjaGFyYWN0ZXJgIGNhbiBiZSBpbnNpZGUgYW4gZW5jbG9zZWQgVVJJLiAqL1xuZnVuY3Rpb24gaXNFbmNsb3NlZFVSTENoYXJhY3RlcihjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIGNoYXJhY3RlciAhPT0gQ19HVCAmJlxuICAgIGNoYXJhY3RlciAhPT0gQ19CUkFDS0VUX09QRU4gJiZcbiAgICBjaGFyYWN0ZXIgIT09IENfQlJBQ0tFVF9DTE9TRTtcbn1cblxuaXNFbmNsb3NlZFVSTENoYXJhY3Rlci5kZWxpbWl0ZXIgPSBDX0dUO1xuXG4vKiBDaGVjayBpZiBgY2hhcmFjdGVyYCBjYW4gYmUgaW5zaWRlIGFuIHVuY2xvc2VkIFVSSS4gKi9cbmZ1bmN0aW9uIGlzVW5jbG9zZWRVUkxDaGFyYWN0ZXIoY2hhcmFjdGVyKSB7XG4gIHJldHVybiBjaGFyYWN0ZXIgIT09IENfQlJBQ0tFVF9PUEVOICYmXG4gICAgY2hhcmFjdGVyICE9PSBDX0JSQUNLRVRfQ0xPU0UgJiZcbiAgICAhd2hpdGVzcGFjZShjaGFyYWN0ZXIpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdGFibGU7XG5cbnZhciBDX0JBQ0tTTEFTSCA9ICdcXFxcJztcbnZhciBDX1RJQ0sgPSAnYCc7XG52YXIgQ19EQVNIID0gJy0nO1xudmFyIENfUElQRSA9ICd8JztcbnZhciBDX0NPTE9OID0gJzonO1xudmFyIENfU1BBQ0UgPSAnICc7XG52YXIgQ19ORVdMSU5FID0gJ1xcbic7XG52YXIgQ19UQUIgPSAnXFx0JztcblxudmFyIE1JTl9UQUJMRV9DT0xVTU5TID0gMTtcbnZhciBNSU5fVEFCTEVfUk9XUyA9IDI7XG5cbnZhciBUQUJMRV9BTElHTl9MRUZUID0gJ2xlZnQnO1xudmFyIFRBQkxFX0FMSUdOX0NFTlRFUiA9ICdjZW50ZXInO1xudmFyIFRBQkxFX0FMSUdOX1JJR0hUID0gJ3JpZ2h0JztcbnZhciBUQUJMRV9BTElHTl9OT05FID0gbnVsbDtcblxuZnVuY3Rpb24gdGFibGUoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGluZGV4O1xuICB2YXIgYWxpZ25tZW50cztcbiAgdmFyIGFsaWdubWVudDtcbiAgdmFyIHN1YnZhbHVlO1xuICB2YXIgcm93O1xuICB2YXIgbGVuZ3RoO1xuICB2YXIgbGluZXM7XG4gIHZhciBxdWV1ZTtcbiAgdmFyIGNoYXJhY3RlcjtcbiAgdmFyIGhhc0Rhc2g7XG4gIHZhciBhbGlnbjtcbiAgdmFyIGNlbGw7XG4gIHZhciBwcmVhbWJsZTtcbiAgdmFyIGNvdW50O1xuICB2YXIgb3BlbmluZztcbiAgdmFyIG5vdztcbiAgdmFyIHBvc2l0aW9uO1xuICB2YXIgbGluZUNvdW50O1xuICB2YXIgbGluZTtcbiAgdmFyIHJvd3M7XG4gIHZhciB0YWJsZTtcbiAgdmFyIGxpbmVJbmRleDtcbiAgdmFyIHBpcGVJbmRleDtcbiAgdmFyIGZpcnN0O1xuXG4gIC8qIEV4aXQgd2hlbiBub3QgaW4gZ2ZtLW1vZGUuICovXG4gIGlmICghc2VsZi5vcHRpb25zLmdmbSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qIEdldCB0aGUgcm93cy5cbiAgICogRGV0ZWN0aW5nIHRhYmxlcyBzb29uIGlzIGhhcmQsIHNvIHRoZXJlIGFyZSBzb21lXG4gICAqIGNoZWNrcyBmb3IgcGVyZm9ybWFuY2UgaGVyZSwgc3VjaCBhcyB0aGUgbWluaW11bVxuICAgKiBudW1iZXIgb2Ygcm93cywgYW5kIGFsbG93ZWQgY2hhcmFjdGVycyBpbiB0aGVcbiAgICogYWxpZ25tZW50IHJvdy4gKi9cbiAgaW5kZXggPSAwO1xuICBsaW5lQ291bnQgPSAwO1xuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxO1xuICBsaW5lcyA9IFtdO1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGxpbmVJbmRleCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FLCBpbmRleCk7XG4gICAgcGlwZUluZGV4ID0gdmFsdWUuaW5kZXhPZihDX1BJUEUsIGluZGV4ICsgMSk7XG5cbiAgICBpZiAobGluZUluZGV4ID09PSAtMSkge1xuICAgICAgbGluZUluZGV4ID0gdmFsdWUubGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChwaXBlSW5kZXggPT09IC0xIHx8IHBpcGVJbmRleCA+IGxpbmVJbmRleCkge1xuICAgICAgaWYgKGxpbmVDb3VudCA8IE1JTl9UQUJMRV9ST1dTKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbGluZXMucHVzaCh2YWx1ZS5zbGljZShpbmRleCwgbGluZUluZGV4KSk7XG4gICAgbGluZUNvdW50Kys7XG4gICAgaW5kZXggPSBsaW5lSW5kZXggKyAxO1xuICB9XG5cbiAgLyogUGFyc2UgdGhlIGFsaWdubWVudCByb3cuICovXG4gIHN1YnZhbHVlID0gbGluZXMuam9pbihDX05FV0xJTkUpO1xuICBhbGlnbm1lbnRzID0gbGluZXMuc3BsaWNlKDEsIDEpWzBdIHx8IFtdO1xuICBpbmRleCA9IDA7XG4gIGxlbmd0aCA9IGFsaWdubWVudHMubGVuZ3RoO1xuICBsaW5lQ291bnQtLTtcbiAgYWxpZ25tZW50ID0gZmFsc2U7XG4gIGFsaWduID0gW107XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gYWxpZ25tZW50cy5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gQ19QSVBFKSB7XG4gICAgICBoYXNEYXNoID0gbnVsbDtcblxuICAgICAgaWYgKGFsaWdubWVudCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGZpcnN0ID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxpZ24ucHVzaChhbGlnbm1lbnQpO1xuICAgICAgICBhbGlnbm1lbnQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gQ19EQVNIKSB7XG4gICAgICBoYXNEYXNoID0gdHJ1ZTtcbiAgICAgIGFsaWdubWVudCA9IGFsaWdubWVudCB8fCBUQUJMRV9BTElHTl9OT05FO1xuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBDX0NPTE9OKSB7XG4gICAgICBpZiAoYWxpZ25tZW50ID09PSBUQUJMRV9BTElHTl9MRUZUKSB7XG4gICAgICAgIGFsaWdubWVudCA9IFRBQkxFX0FMSUdOX0NFTlRFUjtcbiAgICAgIH0gZWxzZSBpZiAoaGFzRGFzaCAmJiBhbGlnbm1lbnQgPT09IFRBQkxFX0FMSUdOX05PTkUpIHtcbiAgICAgICAgYWxpZ25tZW50ID0gVEFCTEVfQUxJR05fUklHSFQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbGlnbm1lbnQgPSBUQUJMRV9BTElHTl9MRUZUO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGluZGV4Kys7XG4gIH1cblxuICBpZiAoYWxpZ25tZW50ICE9PSBmYWxzZSkge1xuICAgIGFsaWduLnB1c2goYWxpZ25tZW50KTtcbiAgfVxuXG4gIC8qIEV4aXQgd2hlbiB3aXRob3V0IGVub3VnaCBjb2x1bW5zLiAqL1xuICBpZiAoYWxpZ24ubGVuZ3RoIDwgTUlOX1RBQkxFX0NPTFVNTlMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qIFBhcnNlIHRoZSByb3dzLiAqL1xuICBwb3NpdGlvbiA9IC0xO1xuICByb3dzID0gW107XG5cbiAgdGFibGUgPSBlYXQoc3VidmFsdWUpLnJlc2V0KHtcbiAgICB0eXBlOiAndGFibGUnLFxuICAgIGFsaWduOiBhbGlnbixcbiAgICBjaGlsZHJlbjogcm93c1xuICB9KTtcblxuICB3aGlsZSAoKytwb3NpdGlvbiA8IGxpbmVDb3VudCkge1xuICAgIGxpbmUgPSBsaW5lc1twb3NpdGlvbl07XG4gICAgcm93ID0ge3R5cGU6ICd0YWJsZVJvdycsIGNoaWxkcmVuOiBbXX07XG5cbiAgICAvKiBFYXQgYSBuZXdsaW5lIGNoYXJhY3RlciB3aGVuIHRoaXMgaXMgbm90IHRoZVxuICAgICAqIGZpcnN0IHJvdy4gKi9cbiAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgIGVhdChDX05FV0xJTkUpO1xuICAgIH1cblxuICAgIC8qIEVhdCB0aGUgcm93LiAqL1xuICAgIGVhdChsaW5lKS5yZXNldChyb3csIHRhYmxlKTtcblxuICAgIGxlbmd0aCA9IGxpbmUubGVuZ3RoICsgMTtcbiAgICBpbmRleCA9IDA7XG4gICAgcXVldWUgPSAnJztcbiAgICBjZWxsID0gJyc7XG4gICAgcHJlYW1ibGUgPSB0cnVlO1xuICAgIGNvdW50ID0gbnVsbDtcbiAgICBvcGVuaW5nID0gbnVsbDtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gbGluZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSBDX1RBQiB8fCBjaGFyYWN0ZXIgPT09IENfU1BBQ0UpIHtcbiAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWF0KGNoYXJhY3Rlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gJycgfHwgY2hhcmFjdGVyID09PSBDX1BJUEUpIHtcbiAgICAgICAgaWYgKHByZWFtYmxlKSB7XG4gICAgICAgICAgZWF0KGNoYXJhY3Rlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGNoYXJhY3RlciAmJiBvcGVuaW5nKSB7XG4gICAgICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKChjZWxsIHx8IGNoYXJhY3RlcikgJiYgIXByZWFtYmxlKSB7XG4gICAgICAgICAgICBzdWJ2YWx1ZSA9IGNlbGw7XG5cbiAgICAgICAgICAgIGlmIChxdWV1ZS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIpIHtcbiAgICAgICAgICAgICAgICBzdWJ2YWx1ZSArPSBxdWV1ZS5zbGljZSgwLCBxdWV1ZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICBxdWV1ZSA9IHF1ZXVlLmNoYXJBdChxdWV1ZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdWJ2YWx1ZSArPSBxdWV1ZTtcbiAgICAgICAgICAgICAgICBxdWV1ZSA9ICcnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5vdyA9IGVhdC5ub3coKTtcblxuICAgICAgICAgICAgZWF0KHN1YnZhbHVlKSh7XG4gICAgICAgICAgICAgIHR5cGU6ICd0YWJsZUNlbGwnLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShjZWxsLCBub3cpXG4gICAgICAgICAgICB9LCByb3cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVhdChxdWV1ZSArIGNoYXJhY3Rlcik7XG5cbiAgICAgICAgICBxdWV1ZSA9ICcnO1xuICAgICAgICAgIGNlbGwgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHF1ZXVlKSB7XG4gICAgICAgICAgY2VsbCArPSBxdWV1ZTtcbiAgICAgICAgICBxdWV1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgY2VsbCArPSBjaGFyYWN0ZXI7XG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gQ19CQUNLU0xBU0ggJiYgaW5kZXggIT09IGxlbmd0aCAtIDIpIHtcbiAgICAgICAgICBjZWxsICs9IGxpbmUuY2hhckF0KGluZGV4ICsgMSk7XG4gICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IENfVElDSykge1xuICAgICAgICAgIGNvdW50ID0gMTtcblxuICAgICAgICAgIHdoaWxlIChsaW5lLmNoYXJBdChpbmRleCArIDEpID09PSBjaGFyYWN0ZXIpIHtcbiAgICAgICAgICAgIGNlbGwgKz0gY2hhcmFjdGVyO1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFvcGVuaW5nKSB7XG4gICAgICAgICAgICBvcGVuaW5nID0gY291bnQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChjb3VudCA+PSBvcGVuaW5nKSB7XG4gICAgICAgICAgICBvcGVuaW5nID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJlYW1ibGUgPSBmYWxzZTtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgLyogRWF0IHRoZSBhbGlnbm1lbnQgcm93LiAqL1xuICAgIGlmICghcG9zaXRpb24pIHtcbiAgICAgIGVhdChDX05FV0xJTkUgKyBhbGlnbm1lbnRzKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFibGU7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpO1xudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJyk7XG52YXIgdHJpbVRyYWlsaW5nTGluZXMgPSByZXF1aXJlKCd0cmltLXRyYWlsaW5nLWxpbmVzJyk7XG52YXIgaW50ZXJydXB0ID0gcmVxdWlyZSgnLi4vdXRpbC9pbnRlcnJ1cHQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJhZ3JhcGg7XG5cbnZhciBDX05FV0xJTkUgPSAnXFxuJztcbnZhciBDX1RBQiA9ICdcXHQnO1xudmFyIENfU1BBQ0UgPSAnICc7XG5cbnZhciBUQUJfU0laRSA9IDQ7XG5cbi8qIFRva2VuaXNlIHBhcmFncmFwaC4gKi9cbmZ1bmN0aW9uIHBhcmFncmFwaChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgc2V0dGluZ3MgPSBzZWxmLm9wdGlvbnM7XG4gIHZhciBjb21tb25tYXJrID0gc2V0dGluZ3MuY29tbW9ubWFyaztcbiAgdmFyIGdmbSA9IHNldHRpbmdzLmdmbTtcbiAgdmFyIHRva2VuaXplcnMgPSBzZWxmLmJsb2NrVG9rZW5pemVycztcbiAgdmFyIGludGVycnVwdG9ycyA9IHNlbGYuaW50ZXJydXB0UGFyYWdyYXBoO1xuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKENfTkVXTElORSk7XG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gIHZhciBwb3NpdGlvbjtcbiAgdmFyIHN1YnZhbHVlO1xuICB2YXIgY2hhcmFjdGVyO1xuICB2YXIgc2l6ZTtcbiAgdmFyIG5vdztcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAvKiBFYXQgZXZlcnl0aGluZyBpZiB0aGVyZeKAmXMgbm8gZm9sbG93aW5nIG5ld2xpbmUuICovXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgaW5kZXggPSBsZW5ndGg7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvKiBTdG9wIGlmIHRoZSBuZXh0IGNoYXJhY3RlciBpcyBORVdMSU5FLiAqL1xuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSA9PT0gQ19ORVdMSU5FKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvKiBJbiBjb21tb25tYXJrLW1vZGUsIGZvbGxvd2luZyBpbmRlbnRlZCBsaW5lc1xuICAgICAqIGFyZSBwYXJ0IG9mIHRoZSBwYXJhZ3JhcGguICovXG4gICAgaWYgKGNvbW1vbm1hcmspIHtcbiAgICAgIHNpemUgPSAwO1xuICAgICAgcG9zaXRpb24gPSBpbmRleCArIDE7XG5cbiAgICAgIHdoaWxlIChwb3NpdGlvbiA8IGxlbmd0aCkge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQocG9zaXRpb24pO1xuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IENfVEFCKSB7XG4gICAgICAgICAgc2l6ZSA9IFRBQl9TSVpFO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gQ19TUEFDRSkge1xuICAgICAgICAgIHNpemUrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHBvc2l0aW9uKys7XG4gICAgICB9XG5cbiAgICAgIGlmIChzaXplID49IFRBQl9TSVpFKSB7XG4gICAgICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZihDX05FV0xJTkUsIGluZGV4ICsgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoaW5kZXggKyAxKTtcblxuICAgIC8qIENoZWNrIGlmIHRoZSBmb2xsb3dpbmcgY29kZSBjb250YWlucyBhIHBvc3NpYmxlXG4gICAgICogYmxvY2suICovXG4gICAgaWYgKGludGVycnVwdChpbnRlcnJ1cHRvcnMsIHRva2VuaXplcnMsIHNlbGYsIFtlYXQsIHN1YnZhbHVlLCB0cnVlXSkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8qIEJyZWFrIGlmIHRoZSBmb2xsb3dpbmcgbGluZSBzdGFydHMgYSBsaXN0LCB3aGVuXG4gICAgICogYWxyZWFkeSBpbiBhIGxpc3QsIG9yIHdoZW4gaW4gY29tbW9ubWFyaywgb3Igd2hlblxuICAgICAqIGluIGdmbSBtb2RlIGFuZCB0aGUgYnVsbGV0IGlzICpub3QqIG51bWVyaWMuICovXG4gICAgaWYgKFxuICAgICAgdG9rZW5pemVycy5saXN0LmNhbGwoc2VsZiwgZWF0LCBzdWJ2YWx1ZSwgdHJ1ZSkgJiZcbiAgICAgIChcbiAgICAgICAgc2VsZi5pbkxpc3QgfHxcbiAgICAgICAgY29tbW9ubWFyayB8fFxuICAgICAgICAoZ2ZtICYmICFkZWNpbWFsKHRyaW0ubGVmdChzdWJ2YWx1ZSkuY2hhckF0KDApKSlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHBvc2l0aW9uID0gaW5kZXg7XG4gICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKENfTkVXTElORSwgaW5kZXggKyAxKTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEgJiYgdHJpbSh2YWx1ZS5zbGljZShwb3NpdGlvbiwgaW5kZXgpKSA9PT0gJycpIHtcbiAgICAgIGluZGV4ID0gcG9zaXRpb247XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzdWJ2YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIGluZGV4KTtcblxuICBpZiAodHJpbShzdWJ2YWx1ZSkgPT09ICcnKSB7XG4gICAgZWF0KHN1YnZhbHVlKTtcblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBub3cgPSBlYXQubm93KCk7XG4gIHN1YnZhbHVlID0gdHJpbVRyYWlsaW5nTGluZXMoc3VidmFsdWUpO1xuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGU7XG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZS5pbmRleE9mKCdcXFxcJywgZnJvbUluZGV4KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9lc2NhcGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBlc2NhcGU7XG5lc2NhcGUubG9jYXRvciA9IGxvY2F0ZTtcblxuZnVuY3Rpb24gZXNjYXBlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBjaGFyYWN0ZXI7XG4gIHZhciBub2RlO1xuXG4gIGlmICh2YWx1ZS5jaGFyQXQoMCkgPT09ICdcXFxcJykge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgxKTtcblxuICAgIGlmIChzZWxmLmVzY2FwZS5pbmRleE9mKGNoYXJhY3RlcikgIT09IC0xKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSAnXFxuJykge1xuICAgICAgICBub2RlID0ge3R5cGU6ICdicmVhayd9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdmFsdWU6IGNoYXJhY3RlclxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWF0KCdcXFxcJyArIGNoYXJhY3Rlcikobm9kZSk7XG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlO1xuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUuaW5kZXhPZignPCcsIGZyb21JbmRleCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKTtcbnZhciBkZWNvZGUgPSByZXF1aXJlKCdwYXJzZS1lbnRpdGllcycpO1xudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS90YWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBhdXRvTGluaztcbmF1dG9MaW5rLmxvY2F0b3IgPSBsb2NhdGU7XG5hdXRvTGluay5ub3RJbkxpbmsgPSB0cnVlO1xuXG52YXIgQ19MVCA9ICc8JztcbnZhciBDX0dUID0gJz4nO1xudmFyIENfQVRfU0lHTiA9ICdAJztcbnZhciBDX1NMQVNIID0gJy8nO1xudmFyIE1BSUxUTyA9ICdtYWlsdG86JztcbnZhciBNQUlMVE9fTEVOR1RIID0gTUFJTFRPLmxlbmd0aDtcblxuLyogVG9rZW5pc2UgYSBsaW5rLiAqL1xuZnVuY3Rpb24gYXV0b0xpbmsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmO1xuICB2YXIgc3VidmFsdWU7XG4gIHZhciBsZW5ndGg7XG4gIHZhciBpbmRleDtcbiAgdmFyIHF1ZXVlO1xuICB2YXIgY2hhcmFjdGVyO1xuICB2YXIgaGFzQXRDaGFyYWN0ZXI7XG4gIHZhciBsaW5rO1xuICB2YXIgbm93O1xuICB2YXIgY29udGVudDtcbiAgdmFyIHRva2VuaXplcnM7XG4gIHZhciBleGl0O1xuXG4gIGlmICh2YWx1ZS5jaGFyQXQoMCkgIT09IENfTFQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzZWxmID0gdGhpcztcbiAgc3VidmFsdWUgPSAnJztcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICBpbmRleCA9IDA7XG4gIHF1ZXVlID0gJyc7XG4gIGhhc0F0Q2hhcmFjdGVyID0gZmFsc2U7XG4gIGxpbmsgPSAnJztcblxuICBpbmRleCsrO1xuICBzdWJ2YWx1ZSA9IENfTFQ7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChcbiAgICAgIHdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fFxuICAgICAgY2hhcmFjdGVyID09PSBDX0dUIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IENfQVRfU0lHTiB8fFxuICAgICAgKGNoYXJhY3RlciA9PT0gJzonICYmIHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBDX1NMQVNIKVxuICAgICkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGluayArPSBxdWV1ZTtcbiAgcXVldWUgPSAnJztcblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuICBsaW5rICs9IGNoYXJhY3RlcjtcbiAgaW5kZXgrKztcblxuICBpZiAoY2hhcmFjdGVyID09PSBDX0FUX1NJR04pIHtcbiAgICBoYXNBdENoYXJhY3RlciA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyICE9PSAnOicgfHxcbiAgICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBDX1NMQVNIXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGluayArPSBDX1NMQVNIO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKHdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT09IENfR1QpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICBpZiAoIXF1ZXVlIHx8IGNoYXJhY3RlciAhPT0gQ19HVCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbGluayArPSBxdWV1ZTtcbiAgY29udGVudCA9IGxpbms7XG4gIHN1YnZhbHVlICs9IGxpbmsgKyBjaGFyYWN0ZXI7XG4gIG5vdyA9IGVhdC5ub3coKTtcbiAgbm93LmNvbHVtbisrO1xuICBub3cub2Zmc2V0Kys7XG5cbiAgaWYgKGhhc0F0Q2hhcmFjdGVyKSB7XG4gICAgaWYgKGxpbmsuc2xpY2UoMCwgTUFJTFRPX0xFTkdUSCkudG9Mb3dlckNhc2UoKSA9PT0gTUFJTFRPKSB7XG4gICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHIoTUFJTFRPX0xFTkdUSCk7XG4gICAgICBub3cuY29sdW1uICs9IE1BSUxUT19MRU5HVEg7XG4gICAgICBub3cub2Zmc2V0ICs9IE1BSUxUT19MRU5HVEg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmsgPSBNQUlMVE8gKyBsaW5rO1xuICAgIH1cbiAgfVxuXG4gIC8qIFRlbXBvcmFyaWx5IHJlbW92ZSBhbGwgdG9rZW5pemVycyBleGNlcHQgdGV4dCBpbiBhdXRvbGlua3MuICovXG4gIHRva2VuaXplcnMgPSBzZWxmLmlubGluZVRva2VuaXplcnM7XG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHt0ZXh0OiB0b2tlbml6ZXJzLnRleHR9O1xuXG4gIGV4aXQgPSBzZWxmLmVudGVyTGluaygpO1xuXG4gIGNvbnRlbnQgPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdyk7XG5cbiAgc2VsZi5pbmxpbmVUb2tlbml6ZXJzID0gdG9rZW5pemVycztcbiAgZXhpdCgpO1xuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnbGluaycsXG4gICAgdGl0bGU6IG51bGwsXG4gICAgdXJsOiBkZWNvZGUobGluaywge25vblRlcm1pbmF0ZWQ6IGZhbHNlfSksXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlO1xuXG52YXIgUFJPVE9DT0xTID0gWydodHRwczovLycsICdodHRwOi8vJywgJ21haWx0bzonXTtcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGxlbmd0aCA9IFBST1RPQ09MUy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgbWluID0gLTE7XG4gIHZhciBwb3NpdGlvbjtcblxuICBpZiAoIXRoaXMub3B0aW9ucy5nZm0pIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHBvc2l0aW9uID0gdmFsdWUuaW5kZXhPZihQUk9UT0NPTFNbaW5kZXhdLCBmcm9tSW5kZXgpO1xuXG4gICAgaWYgKHBvc2l0aW9uICE9PSAtMSAmJiAocG9zaXRpb24gPCBtaW4gfHwgbWluID09PSAtMSkpIHtcbiAgICAgIG1pbiA9IHBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtaW47XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBkZWNvZGUgPSByZXF1aXJlKCdwYXJzZS1lbnRpdGllcycpO1xudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpO1xudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS91cmwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1cmw7XG51cmwubG9jYXRvciA9IGxvY2F0ZTtcbnVybC5ub3RJbkxpbmsgPSB0cnVlO1xuXG52YXIgQ19CUkFDS0VUX09QRU4gPSAnWyc7XG52YXIgQ19CUkFDS0VUX0NMT1NFID0gJ10nO1xudmFyIENfUEFSRU5fT1BFTiA9ICcoJztcbnZhciBDX1BBUkVOX0NMT1NFID0gJyknO1xudmFyIENfTFQgPSAnPCc7XG52YXIgQ19BVF9TSUdOID0gJ0AnO1xuXG52YXIgSFRUUF9QUk9UT0NPTCA9ICdodHRwOi8vJztcbnZhciBIVFRQU19QUk9UT0NPTCA9ICdodHRwczovLyc7XG52YXIgTUFJTFRPX1BST1RPQ09MID0gJ21haWx0bzonO1xuXG52YXIgUFJPVE9DT0xTID0gW1xuICBIVFRQX1BST1RPQ09MLFxuICBIVFRQU19QUk9UT0NPTCxcbiAgTUFJTFRPX1BST1RPQ09MXG5dO1xuXG52YXIgUFJPVE9DT0xTX0xFTkdUSCA9IFBST1RPQ09MUy5sZW5ndGg7XG5cbmZ1bmN0aW9uIHVybChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgc3VidmFsdWU7XG4gIHZhciBjb250ZW50O1xuICB2YXIgY2hhcmFjdGVyO1xuICB2YXIgaW5kZXg7XG4gIHZhciBwb3NpdGlvbjtcbiAgdmFyIHByb3RvY29sO1xuICB2YXIgbWF0Y2g7XG4gIHZhciBsZW5ndGg7XG4gIHZhciBxdWV1ZTtcbiAgdmFyIHBhcmVuQ291bnQ7XG4gIHZhciBuZXh0Q2hhcmFjdGVyO1xuICB2YXIgZXhpdDtcblxuICBpZiAoIXNlbGYub3B0aW9ucy5nZm0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdWJ2YWx1ZSA9ICcnO1xuICBpbmRleCA9IC0xO1xuICBsZW5ndGggPSBQUk9UT0NPTFNfTEVOR1RIO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcHJvdG9jb2wgPSBQUk9UT0NPTFNbaW5kZXhdO1xuICAgIG1hdGNoID0gdmFsdWUuc2xpY2UoMCwgcHJvdG9jb2wubGVuZ3RoKTtcblxuICAgIGlmIChtYXRjaC50b0xvd2VyQ2FzZSgpID09PSBwcm90b2NvbCkge1xuICAgICAgc3VidmFsdWUgPSBtYXRjaDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmICghc3VidmFsdWUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpbmRleCA9IHN1YnZhbHVlLmxlbmd0aDtcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICBxdWV1ZSA9ICcnO1xuICBwYXJlbkNvdW50ID0gMDtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKHdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT09IENfTFQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNoYXJhY3RlciA9PT0gJy4nIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09ICcsJyB8fFxuICAgICAgY2hhcmFjdGVyID09PSAnOicgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gJzsnIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09ICdcIicgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gJ1xcJycgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gJyknIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09ICddJ1xuICAgICkge1xuICAgICAgbmV4dENoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCArIDEpO1xuXG4gICAgICBpZiAoIW5leHRDaGFyYWN0ZXIgfHwgd2hpdGVzcGFjZShuZXh0Q2hhcmFjdGVyKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBDX1BBUkVOX09QRU4gfHwgY2hhcmFjdGVyID09PSBDX0JSQUNLRVRfT1BFTikge1xuICAgICAgcGFyZW5Db3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IENfUEFSRU5fQ0xPU0UgfHwgY2hhcmFjdGVyID09PSBDX0JSQUNLRVRfQ0xPU0UpIHtcbiAgICAgIHBhcmVuQ291bnQtLTtcblxuICAgICAgaWYgKHBhcmVuQ291bnQgPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN1YnZhbHVlICs9IHF1ZXVlO1xuICBjb250ZW50ID0gc3VidmFsdWU7XG5cbiAgaWYgKHByb3RvY29sID09PSBNQUlMVE9fUFJPVE9DT0wpIHtcbiAgICBwb3NpdGlvbiA9IHF1ZXVlLmluZGV4T2YoQ19BVF9TSUdOKTtcblxuICAgIGlmIChwb3NpdGlvbiA9PT0gLTEgfHwgcG9zaXRpb24gPT09IGxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHIoTUFJTFRPX1BST1RPQ09MLmxlbmd0aCk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGV4aXQgPSBzZWxmLmVudGVyTGluaygpO1xuICBjb250ZW50ID0gc2VsZi50b2tlbml6ZUlubGluZShjb250ZW50LCBlYXQubm93KCkpO1xuICBleGl0KCk7XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgIHR5cGU6ICdsaW5rJyxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB1cmw6IGRlY29kZShzdWJ2YWx1ZSwge25vblRlcm1pbmF0ZWQ6IGZhbHNlfSksXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhbHBoYWJldGljYWwgPSByZXF1aXJlKCdpcy1hbHBoYWJldGljYWwnKTtcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvdGFnJyk7XG52YXIgdGFnID0gcmVxdWlyZSgnLi4vdXRpbC9odG1sJykudGFnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlubGluZUhUTUw7XG5pbmxpbmVIVE1MLmxvY2F0b3IgPSBsb2NhdGU7XG5cbnZhciBFWFBSRVNTSU9OX0hUTUxfTElOS19PUEVOID0gL148YSAvaTtcbnZhciBFWFBSRVNTSU9OX0hUTUxfTElOS19DTE9TRSA9IC9ePFxcL2E+L2k7XG5cbmZ1bmN0aW9uIGlubGluZUhUTUwoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgdmFyIGNoYXJhY3RlcjtcbiAgdmFyIHN1YnZhbHVlO1xuXG4gIGlmICh2YWx1ZS5jaGFyQXQoMCkgIT09ICc8JyB8fCBsZW5ndGggPCAzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDEpO1xuXG4gIGlmIChcbiAgICAhYWxwaGFiZXRpY2FsKGNoYXJhY3RlcikgJiZcbiAgICBjaGFyYWN0ZXIgIT09ICc/JyAmJlxuICAgIGNoYXJhY3RlciAhPT0gJyEnICYmXG4gICAgY2hhcmFjdGVyICE9PSAnLydcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5tYXRjaCh0YWcpO1xuXG4gIGlmICghc3VidmFsdWUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBub3QgdXNlZCB5ZXQuICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHN1YnZhbHVlID0gc3VidmFsdWVbMF07XG5cbiAgaWYgKCFzZWxmLmluTGluayAmJiBFWFBSRVNTSU9OX0hUTUxfTElOS19PUEVOLnRlc3Qoc3VidmFsdWUpKSB7XG4gICAgc2VsZi5pbkxpbmsgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHNlbGYuaW5MaW5rICYmIEVYUFJFU1NJT05fSFRNTF9MSU5LX0NMT1NFLnRlc3Qoc3VidmFsdWUpKSB7XG4gICAgc2VsZi5pbkxpbmsgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHt0eXBlOiAnaHRtbCcsIHZhbHVlOiBzdWJ2YWx1ZX0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZTtcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGxpbmsgPSB2YWx1ZS5pbmRleE9mKCdbJywgZnJvbUluZGV4KTtcbiAgdmFyIGltYWdlID0gdmFsdWUuaW5kZXhPZignIVsnLCBmcm9tSW5kZXgpO1xuXG4gIGlmIChpbWFnZSA9PT0gLTEpIHtcbiAgICByZXR1cm4gbGluaztcbiAgfVxuXG4gIC8qIExpbmsgY2FuIG5ldmVyIGJlIGAtMWAgaWYgYW4gaW1hZ2UgaXMgZm91bmQsIHNvIHdlIGRvbuKAmXQgbmVlZFxuICAgKiB0byBjaGVjayBmb3IgdGhhdCA6KSAqL1xuICByZXR1cm4gbGluayA8IGltYWdlID8gbGluayA6IGltYWdlO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJyk7XG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2xpbmsnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBsaW5rO1xubGluay5sb2NhdG9yID0gbG9jYXRlO1xuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cbnZhciBDX0JBQ0tTTEFTSCA9ICdcXFxcJztcbnZhciBDX0JSQUNLRVRfT1BFTiA9ICdbJztcbnZhciBDX0JSQUNLRVRfQ0xPU0UgPSAnXSc7XG52YXIgQ19QQVJFTl9PUEVOID0gJygnO1xudmFyIENfUEFSRU5fQ0xPU0UgPSAnKSc7XG52YXIgQ19MVCA9ICc8JztcbnZhciBDX0dUID0gJz4nO1xudmFyIENfVElDSyA9ICdgJztcbnZhciBDX0RPVUJMRV9RVU9URSA9ICdcIic7XG52YXIgQ19TSU5HTEVfUVVPVEUgPSAnXFwnJztcblxuLyogTWFwIG9mIGNoYXJhY3RlcnMsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1hcmsgbGlua1xuICogYW5kIGltYWdlIHRpdGxlcy4gKi9cbnZhciBMSU5LX01BUktFUlMgPSB7fTtcblxuTElOS19NQVJLRVJTW0NfRE9VQkxFX1FVT1RFXSA9IENfRE9VQkxFX1FVT1RFO1xuTElOS19NQVJLRVJTW0NfU0lOR0xFX1FVT1RFXSA9IENfU0lOR0xFX1FVT1RFO1xuXG4vKiBNYXAgb2YgY2hhcmFjdGVycywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gbWFyayBsaW5rXG4gKiBhbmQgaW1hZ2UgdGl0bGVzIGluIGNvbW1vbm1hcmstbW9kZS4gKi9cbnZhciBDT01NT05NQVJLX0xJTktfTUFSS0VSUyA9IHt9O1xuXG5DT01NT05NQVJLX0xJTktfTUFSS0VSU1tDX0RPVUJMRV9RVU9URV0gPSBDX0RPVUJMRV9RVU9URTtcbkNPTU1PTk1BUktfTElOS19NQVJLRVJTW0NfU0lOR0xFX1FVT1RFXSA9IENfU0lOR0xFX1FVT1RFO1xuQ09NTU9OTUFSS19MSU5LX01BUktFUlNbQ19QQVJFTl9PUEVOXSA9IENfUEFSRU5fQ0xPU0U7XG5cbmZ1bmN0aW9uIGxpbmsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHN1YnZhbHVlID0gJyc7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMCk7XG4gIHZhciBwZWRhbnRpYyA9IHNlbGYub3B0aW9ucy5wZWRhbnRpYztcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZWxmLm9wdGlvbnMuY29tbW9ubWFyaztcbiAgdmFyIGdmbSA9IHNlbGYub3B0aW9ucy5nZm07XG4gIHZhciBjbG9zZWQ7XG4gIHZhciBjb3VudDtcbiAgdmFyIG9wZW5pbmc7XG4gIHZhciBiZWZvcmVVUkw7XG4gIHZhciBiZWZvcmVUaXRsZTtcbiAgdmFyIHN1YnF1ZXVlO1xuICB2YXIgaGFzTWFya2VyO1xuICB2YXIgbWFya2VycztcbiAgdmFyIGlzSW1hZ2U7XG4gIHZhciBjb250ZW50O1xuICB2YXIgbWFya2VyO1xuICB2YXIgbGVuZ3RoO1xuICB2YXIgdGl0bGU7XG4gIHZhciBkZXB0aDtcbiAgdmFyIHF1ZXVlO1xuICB2YXIgdXJsO1xuICB2YXIgbm93O1xuICB2YXIgZXhpdDtcbiAgdmFyIG5vZGU7XG5cbiAgLyogRGV0ZWN0IHdoZXRoZXIgdGhpcyBpcyBhbiBpbWFnZS4gKi9cbiAgaWYgKGNoYXJhY3RlciA9PT0gJyEnKSB7XG4gICAgaXNJbWFnZSA9IHRydWU7XG4gICAgc3VidmFsdWUgPSBjaGFyYWN0ZXI7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpO1xuICB9XG5cbiAgLyogRWF0IHRoZSBvcGVuaW5nLiAqL1xuICBpZiAoY2hhcmFjdGVyICE9PSBDX0JSQUNLRVRfT1BFTikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qIEV4aXQgd2hlbiB0aGlzIGlzIGEgbGluayBhbmQgd2XigJlyZSBhbHJlYWR5IGluc2lkZVxuICAgKiBhIGxpbmsuICovXG4gIGlmICghaXNJbWFnZSAmJiBzZWxmLmluTGluaykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN1YnZhbHVlICs9IGNoYXJhY3RlcjtcbiAgcXVldWUgPSAnJztcbiAgaW5kZXgrKztcblxuICAvKiBFYXQgdGhlIGNvbnRlbnQuICovXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgbm93ID0gZWF0Lm5vdygpO1xuICBkZXB0aCA9IDA7XG5cbiAgbm93LmNvbHVtbiArPSBpbmRleDtcbiAgbm93Lm9mZnNldCArPSBpbmRleDtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuICAgIHN1YnF1ZXVlID0gY2hhcmFjdGVyO1xuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gQ19USUNLKSB7XG4gICAgICAvKiBJbmxpbmUtY29kZSBpbiBsaW5rIGNvbnRlbnQuICovXG4gICAgICBjb3VudCA9IDE7XG5cbiAgICAgIHdoaWxlICh2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSA9PT0gQ19USUNLKSB7XG4gICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cblxuICAgICAgaWYgKCFvcGVuaW5nKSB7XG4gICAgICAgIG9wZW5pbmcgPSBjb3VudDtcbiAgICAgIH0gZWxzZSBpZiAoY291bnQgPj0gb3BlbmluZykge1xuICAgICAgICBvcGVuaW5nID0gMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gQ19CQUNLU0xBU0gpIHtcbiAgICAgIC8qIEFsbG93IGJyYWNrZXRzIHRvIGJlIGVzY2FwZWQuICovXG4gICAgICBpbmRleCsrO1xuICAgICAgc3VicXVldWUgKz0gdmFsdWUuY2hhckF0KGluZGV4KTtcbiAgICAvKiBJbiBHRk0gbW9kZSwgYnJhY2tldHMgaW4gY29kZSBzdGlsbCBjb3VudC5cbiAgICAgKiBJbiBhbGwgb3RoZXIgbW9kZXMsIHRoZXkgZG9u4oCZdC4gIFRoaXMgZW1wdHlcbiAgICAgKiBibG9jayBwcmV2ZW50cyB0aGUgbmV4dCBzdGF0ZW1lbnRzIGFyZVxuICAgICAqIGVudGVyZWQuICovXG4gICAgfSBlbHNlIGlmICgoIW9wZW5pbmcgfHwgZ2ZtKSAmJiBjaGFyYWN0ZXIgPT09IENfQlJBQ0tFVF9PUEVOKSB7XG4gICAgICBkZXB0aCsrO1xuICAgIH0gZWxzZSBpZiAoKCFvcGVuaW5nIHx8IGdmbSkgJiYgY2hhcmFjdGVyID09PSBDX0JSQUNLRVRfQ0xPU0UpIHtcbiAgICAgIGlmIChkZXB0aCkge1xuICAgICAgICBkZXB0aC0tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogQWxsb3cgd2hpdGUtc3BhY2UgYmV0d2VlbiBjb250ZW50IGFuZFxuICAgICAgICAgKiB1cmwgaW4gR0ZNIG1vZGUuICovXG4gICAgICAgIGlmICghcGVkYW50aWMpIHtcbiAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCArIDEpO1xuXG4gICAgICAgICAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VicXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4ICsgMSkgIT09IENfUEFSRU5fT1BFTikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnF1ZXVlICs9IENfUEFSRU5fT1BFTjtcbiAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgaW5kZXgrKztcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBxdWV1ZSArPSBzdWJxdWV1ZTtcbiAgICBzdWJxdWV1ZSA9ICcnO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICAvKiBFYXQgdGhlIGNvbnRlbnQgY2xvc2luZy4gKi9cbiAgaWYgKCFjbG9zZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb250ZW50ID0gcXVldWU7XG4gIHN1YnZhbHVlICs9IHF1ZXVlICsgc3VicXVldWU7XG4gIGluZGV4Kys7XG5cbiAgLyogRWF0IHdoaXRlLXNwYWNlLiAqL1xuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlcjtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgLyogRWF0IHRoZSBVUkwuICovXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG4gIG1hcmtlcnMgPSBjb21tb25tYXJrID8gQ09NTU9OTUFSS19MSU5LX01BUktFUlMgOiBMSU5LX01BUktFUlM7XG4gIHF1ZXVlID0gJyc7XG4gIGJlZm9yZVVSTCA9IHN1YnZhbHVlO1xuXG4gIGlmIChjaGFyYWN0ZXIgPT09IENfTFQpIHtcbiAgICBpbmRleCsrO1xuICAgIGJlZm9yZVVSTCArPSBDX0xUO1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSBDX0dUKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tbW9ubWFyayAmJiBjaGFyYWN0ZXIgPT09ICdcXG4nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4KSAhPT0gQ19HVCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IENfTFQgKyBxdWV1ZSArIENfR1Q7XG4gICAgdXJsID0gcXVldWU7XG4gICAgaW5kZXgrKztcbiAgfSBlbHNlIHtcbiAgICBjaGFyYWN0ZXIgPSBudWxsO1xuICAgIHN1YnF1ZXVlID0gJyc7XG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgIGlmIChzdWJxdWV1ZSAmJiBvd24uY2FsbChtYXJrZXJzLCBjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAod2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGlmICghcGVkYW50aWMpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IENfUEFSRU5fT1BFTikge1xuICAgICAgICAgIGRlcHRoKys7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBDX1BBUkVOX0NMT1NFKSB7XG4gICAgICAgICAgaWYgKGRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZXB0aC0tO1xuICAgICAgICB9XG5cbiAgICAgICAgcXVldWUgKz0gc3VicXVldWU7XG4gICAgICAgIHN1YnF1ZXVlID0gJyc7XG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gQ19CQUNLU0xBU0gpIHtcbiAgICAgICAgICBxdWV1ZSArPSBDX0JBQ0tTTEFTSDtcbiAgICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgICB9XG5cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gcXVldWU7XG4gICAgdXJsID0gcXVldWU7XG4gICAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGg7XG4gIH1cblxuICAvKiBFYXQgd2hpdGUtc3BhY2UuICovXG4gIHF1ZXVlID0gJyc7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG4gIHN1YnZhbHVlICs9IHF1ZXVlO1xuXG4gIC8qIEVhdCB0aGUgdGl0bGUuICovXG4gIGlmIChxdWV1ZSAmJiBvd24uY2FsbChtYXJrZXJzLCBjaGFyYWN0ZXIpKSB7XG4gICAgaW5kZXgrKztcbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXI7XG4gICAgcXVldWUgPSAnJztcbiAgICBtYXJrZXIgPSBtYXJrZXJzW2NoYXJhY3Rlcl07XG4gICAgYmVmb3JlVGl0bGUgPSBzdWJ2YWx1ZTtcblxuICAgIC8qIEluIGNvbW1vbm1hcmstbW9kZSwgdGhpbmdzIGFyZSBwcmV0dHkgZWFzeTogdGhlXG4gICAgICogbWFya2VyIGNhbm5vdCBvY2N1ciBpbnNpZGUgdGhlIHRpdGxlLlxuICAgICAqXG4gICAgICogTm9uLWNvbW1vbm1hcmsgZG9lcywgaG93ZXZlciwgc3VwcG9ydCBuZXN0ZWRcbiAgICAgKiBkZWxpbWl0ZXJzLiAqL1xuICAgIGlmIChjb21tb25tYXJrKSB7XG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBtYXJrZXIpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IENfQkFDS1NMQVNIKSB7XG4gICAgICAgICAgcXVldWUgKz0gQ19CQUNLU0xBU0g7XG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgfVxuXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aXRsZSA9IHF1ZXVlO1xuICAgICAgc3VidmFsdWUgKz0gcXVldWUgKyBjaGFyYWN0ZXI7XG4gICAgICBpbmRleCsrO1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgICAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyO1xuICAgICAgICBpbmRleCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdWJxdWV1ZSA9ICcnO1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBtYXJrZXIpIHtcbiAgICAgICAgICBpZiAoaGFzTWFya2VyKSB7XG4gICAgICAgICAgICBxdWV1ZSArPSBtYXJrZXIgKyBzdWJxdWV1ZTtcbiAgICAgICAgICAgIHN1YnF1ZXVlID0gJyc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaGFzTWFya2VyID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICghaGFzTWFya2VyKSB7XG4gICAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gQ19QQVJFTl9DTE9TRSkge1xuICAgICAgICAgIHN1YnZhbHVlICs9IHF1ZXVlICsgbWFya2VyICsgc3VicXVldWU7XG4gICAgICAgICAgdGl0bGUgPSBxdWV1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcXVldWUgKz0gbWFya2VyICsgc3VicXVldWUgKyBjaGFyYWN0ZXI7XG4gICAgICAgICAgc3VicXVldWUgPSAnJztcbiAgICAgICAgICBoYXNNYXJrZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluZGV4Kys7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IENfUEFSRU5fQ0xPU0UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHN1YnZhbHVlICs9IENfUEFSRU5fQ0xPU0U7XG5cbiAgdXJsID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUodXJsKSwgZWF0KGJlZm9yZVVSTCkudGVzdCgpLmVuZCwge25vblRlcm1pbmF0ZWQ6IGZhbHNlfSk7XG5cbiAgaWYgKHRpdGxlKSB7XG4gICAgYmVmb3JlVGl0bGUgPSBlYXQoYmVmb3JlVGl0bGUpLnRlc3QoKS5lbmQ7XG4gICAgdGl0bGUgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZSh0aXRsZSksIGJlZm9yZVRpdGxlKTtcbiAgfVxuXG4gIG5vZGUgPSB7XG4gICAgdHlwZTogaXNJbWFnZSA/ICdpbWFnZScgOiAnbGluaycsXG4gICAgdGl0bGU6IHRpdGxlIHx8IG51bGwsXG4gICAgdXJsOiB1cmxcbiAgfTtcblxuICBpZiAoaXNJbWFnZSkge1xuICAgIG5vZGUuYWx0ID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUoY29udGVudCksIG5vdykgfHwgbnVsbDtcbiAgfSBlbHNlIHtcbiAgICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKTtcbiAgICBub2RlLmNoaWxkcmVuID0gc2VsZi50b2tlbml6ZUlubGluZShjb250ZW50LCBub3cpO1xuICAgIGV4aXQoKTtcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKG5vZGUpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJyk7XG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2xpbmsnKTtcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCcuLi91dGlsL25vcm1hbGl6ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlZmVyZW5jZTtcbnJlZmVyZW5jZS5sb2NhdG9yID0gbG9jYXRlO1xuXG52YXIgVF9MSU5LID0gJ2xpbmsnO1xudmFyIFRfSU1BR0UgPSAnaW1hZ2UnO1xudmFyIFRfRk9PVE5PVEUgPSAnZm9vdG5vdGUnO1xudmFyIFJFRkVSRU5DRV9UWVBFX1NIT1JUQ1VUID0gJ3Nob3J0Y3V0JztcbnZhciBSRUZFUkVOQ0VfVFlQRV9DT0xMQVBTRUQgPSAnY29sbGFwc2VkJztcbnZhciBSRUZFUkVOQ0VfVFlQRV9GVUxMID0gJ2Z1bGwnO1xudmFyIENfQ0FSRVQgPSAnXic7XG52YXIgQ19CQUNLU0xBU0ggPSAnXFxcXCc7XG52YXIgQ19CUkFDS0VUX09QRU4gPSAnWyc7XG52YXIgQ19CUkFDS0VUX0NMT1NFID0gJ10nO1xuXG5mdW5jdGlvbiByZWZlcmVuY2UoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgwKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgdmFyIHN1YnZhbHVlID0gJyc7XG4gIHZhciBpbnRybyA9ICcnO1xuICB2YXIgdHlwZSA9IFRfTElOSztcbiAgdmFyIHJlZmVyZW5jZVR5cGUgPSBSRUZFUkVOQ0VfVFlQRV9TSE9SVENVVDtcbiAgdmFyIGNvbnRlbnQ7XG4gIHZhciBpZGVudGlmaWVyO1xuICB2YXIgbm93O1xuICB2YXIgbm9kZTtcbiAgdmFyIGV4aXQ7XG4gIHZhciBxdWV1ZTtcbiAgdmFyIGJyYWNrZXRlZDtcbiAgdmFyIGRlcHRoO1xuXG4gIC8qIENoZWNrIHdoZXRoZXIgd2XigJlyZSBlYXRpbmcgYW4gaW1hZ2UuICovXG4gIGlmIChjaGFyYWN0ZXIgPT09ICchJykge1xuICAgIHR5cGUgPSBUX0lNQUdFO1xuICAgIGludHJvID0gY2hhcmFjdGVyO1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KTtcbiAgfVxuXG4gIGlmIChjaGFyYWN0ZXIgIT09IENfQlJBQ0tFVF9PUEVOKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaW5kZXgrKztcbiAgaW50cm8gKz0gY2hhcmFjdGVyO1xuICBxdWV1ZSA9ICcnO1xuXG4gIC8qIENoZWNrIHdoZXRoZXIgd2XigJlyZSBlYXRpbmcgYSBmb290bm90ZS4gKi9cbiAgaWYgKHNlbGYub3B0aW9ucy5mb290bm90ZXMgJiYgdmFsdWUuY2hhckF0KGluZGV4KSA9PT0gQ19DQVJFVCkge1xuICAgIC8qIEV4aXQgaWYgYCFbXmAgaXMgZm91bmQsIHNvIHRoZSBgIWAgd2lsbCBiZSBzZWVuIGFzIHRleHQgYWZ0ZXIgdGhpcyxcbiAgICAgKiBhbmQgd2XigJlsbCBlbnRlciB0aGlzIGZ1bmN0aW9uIGFnYWluIHdoZW4gYFteYCBpcyBmb3VuZC4gKi9cbiAgICBpZiAodHlwZSA9PT0gVF9JTUFHRSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGludHJvICs9IENfQ0FSRVQ7XG4gICAgaW5kZXgrKztcbiAgICB0eXBlID0gVF9GT09UTk9URTtcbiAgfVxuXG4gIC8qIEVhdCB0aGUgdGV4dC4gKi9cbiAgZGVwdGggPSAwO1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBDX0JSQUNLRVRfT1BFTikge1xuICAgICAgYnJhY2tldGVkID0gdHJ1ZTtcbiAgICAgIGRlcHRoKys7XG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IENfQlJBQ0tFVF9DTE9TRSkge1xuICAgICAgaWYgKCFkZXB0aCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGVwdGgtLTtcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBDX0JBQ0tTTEFTSCkge1xuICAgICAgcXVldWUgKz0gQ19CQUNLU0xBU0g7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleCk7XG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBzdWJ2YWx1ZSA9IHF1ZXVlO1xuICBjb250ZW50ID0gcXVldWU7XG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gQ19CUkFDS0VUX0NMT1NFKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaW5kZXgrKztcbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyO1xuICBxdWV1ZSA9ICcnO1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuXG4gIC8qIElubGluZSBmb290bm90ZXMgY2Fubm90IGhhdmUgYW4gaWRlbnRpZmllci4gKi9cbiAgaWYgKHR5cGUgIT09IFRfRk9PVE5PVEUgJiYgY2hhcmFjdGVyID09PSBDX0JSQUNLRVRfT1BFTikge1xuICAgIGlkZW50aWZpZXIgPSAnJztcbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgaW5kZXgrKztcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gQ19CUkFDS0VUX09QRU4gfHwgY2hhcmFjdGVyID09PSBDX0JSQUNLRVRfQ0xPU0UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IENfQkFDS1NMQVNIKSB7XG4gICAgICAgIGlkZW50aWZpZXIgKz0gQ19CQUNLU0xBU0g7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KTtcbiAgICAgIH1cblxuICAgICAgaWRlbnRpZmllciArPSBjaGFyYWN0ZXI7XG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBDX0JSQUNLRVRfQ0xPU0UpIHtcbiAgICAgIHJlZmVyZW5jZVR5cGUgPSBpZGVudGlmaWVyID8gUkVGRVJFTkNFX1RZUEVfRlVMTCA6IFJFRkVSRU5DRV9UWVBFX0NPTExBUFNFRDtcbiAgICAgIHF1ZXVlICs9IGlkZW50aWZpZXIgKyBjaGFyYWN0ZXI7XG4gICAgICBpbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZGVudGlmaWVyID0gJyc7XG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gcXVldWU7XG4gICAgcXVldWUgPSAnJztcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVyID0gY29udGVudDtcbiAgfVxuXG4gIC8qIEJyYWNrZXRzIGNhbm5vdCBiZSBpbnNpZGUgdGhlIGlkZW50aWZpZXIuICovXG4gIGlmIChyZWZlcmVuY2VUeXBlICE9PSBSRUZFUkVOQ0VfVFlQRV9GVUxMICYmIGJyYWNrZXRlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN1YnZhbHVlID0gaW50cm8gKyBzdWJ2YWx1ZTtcblxuICBpZiAodHlwZSA9PT0gVF9MSU5LICYmIHNlbGYuaW5MaW5rKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSBUX0ZPT1ROT1RFICYmIGNvbnRlbnQuaW5kZXhPZignICcpICE9PSAtMSkge1xuICAgIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICAgIHR5cGU6ICdmb290bm90ZScsXG4gICAgICBjaGlsZHJlbjogdGhpcy50b2tlbml6ZUlubGluZShjb250ZW50LCBlYXQubm93KCkpXG4gICAgfSk7XG4gIH1cblxuICBub3cgPSBlYXQubm93KCk7XG4gIG5vdy5jb2x1bW4gKz0gaW50cm8ubGVuZ3RoO1xuICBub3cub2Zmc2V0ICs9IGludHJvLmxlbmd0aDtcbiAgaWRlbnRpZmllciA9IHJlZmVyZW5jZVR5cGUgPT09IFJFRkVSRU5DRV9UWVBFX0ZVTEwgPyBpZGVudGlmaWVyIDogY29udGVudDtcblxuICBub2RlID0ge1xuICAgIHR5cGU6IHR5cGUgKyAnUmVmZXJlbmNlJyxcbiAgICBpZGVudGlmaWVyOiBub3JtYWxpemUoaWRlbnRpZmllcilcbiAgfTtcblxuICBpZiAodHlwZSA9PT0gVF9MSU5LIHx8IHR5cGUgPT09IFRfSU1BR0UpIHtcbiAgICBub2RlLnJlZmVyZW5jZVR5cGUgPSByZWZlcmVuY2VUeXBlO1xuICB9XG5cbiAgaWYgKHR5cGUgPT09IFRfTElOSykge1xuICAgIGV4aXQgPSBzZWxmLmVudGVyTGluaygpO1xuICAgIG5vZGUuY2hpbGRyZW4gPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdyk7XG4gICAgZXhpdCgpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFRfSU1BR0UpIHtcbiAgICBub2RlLmFsdCA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKGNvbnRlbnQpLCBub3cpIHx8IG51bGw7XG4gIH1cblxuICByZXR1cm4gZWF0KHN1YnZhbHVlKShub2RlKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGU7XG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBhc3RlcmlzayA9IHZhbHVlLmluZGV4T2YoJyoqJywgZnJvbUluZGV4KTtcbiAgdmFyIHVuZGVyc2NvcmUgPSB2YWx1ZS5pbmRleE9mKCdfXycsIGZyb21JbmRleCk7XG5cbiAgaWYgKHVuZGVyc2NvcmUgPT09IC0xKSB7XG4gICAgcmV0dXJuIGFzdGVyaXNrO1xuICB9XG5cbiAgaWYgKGFzdGVyaXNrID09PSAtMSkge1xuICAgIHJldHVybiB1bmRlcnNjb3JlO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVyc2NvcmUgPCBhc3RlcmlzayA/IHVuZGVyc2NvcmUgOiBhc3Rlcmlzaztcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJyk7XG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJyk7XG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL3N0cm9uZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cm9uZztcbnN0cm9uZy5sb2NhdG9yID0gbG9jYXRlO1xuXG52YXIgQ19BU1RFUklTSyA9ICcqJztcbnZhciBDX1VOREVSU0NPUkUgPSAnXyc7XG5cbmZ1bmN0aW9uIHN0cm9uZyhlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcbiAgdmFyIG5vdztcbiAgdmFyIHBlZGFudGljO1xuICB2YXIgbWFya2VyO1xuICB2YXIgcXVldWU7XG4gIHZhciBzdWJ2YWx1ZTtcbiAgdmFyIGxlbmd0aDtcbiAgdmFyIHByZXY7XG5cbiAgaWYgKFxuICAgIChjaGFyYWN0ZXIgIT09IENfQVNURVJJU0sgJiYgY2hhcmFjdGVyICE9PSBDX1VOREVSU0NPUkUpIHx8XG4gICAgdmFsdWUuY2hhckF0KCsraW5kZXgpICE9PSBjaGFyYWN0ZXJcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWM7XG4gIG1hcmtlciA9IGNoYXJhY3RlcjtcbiAgc3VidmFsdWUgPSBtYXJrZXIgKyBtYXJrZXI7XG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgaW5kZXgrKztcbiAgcXVldWUgPSAnJztcbiAgY2hhcmFjdGVyID0gJyc7XG5cbiAgaWYgKHBlZGFudGljICYmIHdoaXRlc3BhY2UodmFsdWUuY2hhckF0KGluZGV4KSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBwcmV2ID0gY2hhcmFjdGVyO1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IG1hcmtlciAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IG1hcmtlciAmJlxuICAgICAgKCFwZWRhbnRpYyB8fCAhd2hpdGVzcGFjZShwcmV2KSlcbiAgICApIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCArIDIpO1xuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgICAgaWYgKCF0cmltKHF1ZXVlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbm93ID0gZWF0Lm5vdygpO1xuICAgICAgICBub3cuY29sdW1uICs9IDI7XG4gICAgICAgIG5vdy5vZmZzZXQgKz0gMjtcblxuICAgICAgICByZXR1cm4gZWF0KHN1YnZhbHVlICsgcXVldWUgKyBzdWJ2YWx1ZSkoe1xuICAgICAgICAgIHR5cGU6ICdzdHJvbmcnLFxuICAgICAgICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKHF1ZXVlLCBub3cpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcGVkYW50aWMgJiYgY2hhcmFjdGVyID09PSAnXFxcXCcpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KTtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgaW5kZXgrKztcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdvcmRDaGFyYWN0ZXI7XG5cbnZhciBmcm9tQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG52YXIgcmUgPSAvXFx3LztcblxuLyogQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyXG4gKiBjb2RlIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIsIGlzIGEgd29yZCBjaGFyYWN0ZXIuICovXG5mdW5jdGlvbiB3b3JkQ2hhcmFjdGVyKGNoYXJhY3Rlcikge1xuICByZXR1cm4gcmUudGVzdChcbiAgICB0eXBlb2YgY2hhcmFjdGVyID09PSAnbnVtYmVyJyA/IGZyb21Db2RlKGNoYXJhY3RlcikgOiBjaGFyYWN0ZXIuY2hhckF0KDApXG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlO1xuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgYXN0ZXJpc2sgPSB2YWx1ZS5pbmRleE9mKCcqJywgZnJvbUluZGV4KTtcbiAgdmFyIHVuZGVyc2NvcmUgPSB2YWx1ZS5pbmRleE9mKCdfJywgZnJvbUluZGV4KTtcblxuICBpZiAodW5kZXJzY29yZSA9PT0gLTEpIHtcbiAgICByZXR1cm4gYXN0ZXJpc2s7XG4gIH1cblxuICBpZiAoYXN0ZXJpc2sgPT09IC0xKSB7XG4gICAgcmV0dXJuIHVuZGVyc2NvcmU7XG4gIH1cblxuICByZXR1cm4gdW5kZXJzY29yZSA8IGFzdGVyaXNrID8gdW5kZXJzY29yZSA6IGFzdGVyaXNrO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKTtcbnZhciB3b3JkID0gcmVxdWlyZSgnaXMtd29yZC1jaGFyYWN0ZXInKTtcbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKTtcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvZW1waGFzaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBlbXBoYXNpcztcbmVtcGhhc2lzLmxvY2F0b3IgPSBsb2NhdGU7XG5cbnZhciBDX0FTVEVSSVNLID0gJyonO1xudmFyIENfVU5ERVJTQ09SRSA9ICdfJztcblxuZnVuY3Rpb24gZW1waGFzaXMoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG4gIHZhciBub3c7XG4gIHZhciBwZWRhbnRpYztcbiAgdmFyIG1hcmtlcjtcbiAgdmFyIHF1ZXVlO1xuICB2YXIgc3VidmFsdWU7XG4gIHZhciBsZW5ndGg7XG4gIHZhciBwcmV2O1xuXG4gIGlmIChjaGFyYWN0ZXIgIT09IENfQVNURVJJU0sgJiYgY2hhcmFjdGVyICE9PSBDX1VOREVSU0NPUkUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBwZWRhbnRpYyA9IHNlbGYub3B0aW9ucy5wZWRhbnRpYztcbiAgc3VidmFsdWUgPSBjaGFyYWN0ZXI7XG4gIG1hcmtlciA9IGNoYXJhY3RlcjtcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICBpbmRleCsrO1xuICBxdWV1ZSA9ICcnO1xuICBjaGFyYWN0ZXIgPSAnJztcblxuICBpZiAocGVkYW50aWMgJiYgd2hpdGVzcGFjZSh2YWx1ZS5jaGFyQXQoaW5kZXgpKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIHByZXYgPSBjaGFyYWN0ZXI7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IG1hcmtlciAmJiAoIXBlZGFudGljIHx8ICF3aGl0ZXNwYWNlKHByZXYpKSkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpO1xuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgICAgaWYgKCF0cmltKHF1ZXVlKSB8fCBwcmV2ID09PSBtYXJrZXIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBlZGFudGljICYmIG1hcmtlciA9PT0gQ19VTkRFUlNDT1JFICYmIHdvcmQoY2hhcmFjdGVyKSkge1xuICAgICAgICAgIHF1ZXVlICs9IG1hcmtlcjtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbm93ID0gZWF0Lm5vdygpO1xuICAgICAgICBub3cuY29sdW1uKys7XG4gICAgICAgIG5vdy5vZmZzZXQrKztcblxuICAgICAgICByZXR1cm4gZWF0KHN1YnZhbHVlICsgcXVldWUgKyBtYXJrZXIpKHtcbiAgICAgICAgICB0eXBlOiAnZW1waGFzaXMnLFxuICAgICAgICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKHF1ZXVlLCBub3cpXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBtYXJrZXI7XG4gICAgfVxuXG4gICAgaWYgKCFwZWRhbnRpYyAmJiBjaGFyYWN0ZXIgPT09ICdcXFxcJykge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyO1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpO1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICBpbmRleCsrO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlO1xuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUuaW5kZXhPZignfn4nLCBmcm9tSW5kZXgpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJyk7XG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2RlbGV0ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmlrZXRocm91Z2g7XG5zdHJpa2V0aHJvdWdoLmxvY2F0b3IgPSBsb2NhdGU7XG5cbnZhciBDX1RJTERFID0gJ34nO1xudmFyIERPVUJMRSA9ICd+fic7XG5cbmZ1bmN0aW9uIHN0cmlrZXRocm91Z2goZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGNoYXJhY3RlciA9ICcnO1xuICB2YXIgcHJldmlvdXMgPSAnJztcbiAgdmFyIHByZWNlZGluZyA9ICcnO1xuICB2YXIgc3VidmFsdWUgPSAnJztcbiAgdmFyIGluZGV4O1xuICB2YXIgbGVuZ3RoO1xuICB2YXIgbm93O1xuXG4gIGlmIChcbiAgICAhc2VsZi5vcHRpb25zLmdmbSB8fFxuICAgIHZhbHVlLmNoYXJBdCgwKSAhPT0gQ19USUxERSB8fFxuICAgIHZhbHVlLmNoYXJBdCgxKSAhPT0gQ19USUxERSB8fFxuICAgIHdoaXRlc3BhY2UodmFsdWUuY2hhckF0KDIpKVxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpbmRleCA9IDE7XG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgbm93ID0gZWF0Lm5vdygpO1xuICBub3cuY29sdW1uICs9IDI7XG4gIG5vdy5vZmZzZXQgKz0gMjtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IENfVElMREUgJiZcbiAgICAgIHByZXZpb3VzID09PSBDX1RJTERFICYmXG4gICAgICAoIXByZWNlZGluZyB8fCAhd2hpdGVzcGFjZShwcmVjZWRpbmcpKVxuICAgICkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVhdChET1VCTEUgKyBzdWJ2YWx1ZSArIERPVUJMRSkoe1xuICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUoc3VidmFsdWUsIG5vdylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IHByZXZpb3VzO1xuICAgIHByZWNlZGluZyA9IHByZXZpb3VzO1xuICAgIHByZXZpb3VzID0gY2hhcmFjdGVyO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlO1xuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUuaW5kZXhPZignYCcsIGZyb21JbmRleCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKTtcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvY29kZS1pbmxpbmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbmxpbmVDb2RlO1xuaW5saW5lQ29kZS5sb2NhdG9yID0gbG9jYXRlO1xuXG52YXIgQ19USUNLID0gJ2AnO1xuXG4vKiBUb2tlbmlzZSBpbmxpbmUgY29kZS4gKi9cbmZ1bmN0aW9uIGlubGluZUNvZGUoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBxdWV1ZSA9ICcnO1xuICB2YXIgdGlja1F1ZXVlID0gJyc7XG4gIHZhciBjb250ZW50UXVldWU7XG4gIHZhciBzdWJxdWV1ZTtcbiAgdmFyIGNvdW50O1xuICB2YXIgb3BlbmluZ0NvdW50O1xuICB2YXIgc3VidmFsdWU7XG4gIHZhciBjaGFyYWN0ZXI7XG4gIHZhciBmb3VuZDtcbiAgdmFyIG5leHQ7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IENfVElDSykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcXVldWUgKz0gQ19USUNLO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3VidmFsdWUgPSBxdWV1ZTtcbiAgb3BlbmluZ0NvdW50ID0gaW5kZXg7XG4gIHF1ZXVlID0gJyc7XG4gIG5leHQgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpO1xuICBjb3VudCA9IDA7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gbmV4dDtcbiAgICBuZXh0ID0gdmFsdWUuY2hhckF0KGluZGV4ICsgMSk7XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBDX1RJQ0spIHtcbiAgICAgIGNvdW50Kys7XG4gICAgICB0aWNrUXVldWUgKz0gY2hhcmFjdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb3VudCA9IDA7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gICAgfVxuXG4gICAgaWYgKGNvdW50ICYmIG5leHQgIT09IENfVElDSykge1xuICAgICAgaWYgKGNvdW50ID09PSBvcGVuaW5nQ291bnQpIHtcbiAgICAgICAgc3VidmFsdWUgKz0gcXVldWUgKyB0aWNrUXVldWU7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IHRpY2tRdWV1ZTtcbiAgICAgIHRpY2tRdWV1ZSA9ICcnO1xuICAgIH1cblxuICAgIGluZGV4Kys7XG4gIH1cblxuICBpZiAoIWZvdW5kKSB7XG4gICAgaWYgKG9wZW5pbmdDb3VudCAlIDIgIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBxdWV1ZSA9ICcnO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb250ZW50UXVldWUgPSAnJztcbiAgc3VicXVldWUgPSAnJztcbiAgbGVuZ3RoID0gcXVldWUubGVuZ3RoO1xuICBpbmRleCA9IC0xO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gcXVldWUuY2hhckF0KGluZGV4KTtcblxuICAgIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChzdWJxdWV1ZSkge1xuICAgICAgaWYgKGNvbnRlbnRRdWV1ZSkge1xuICAgICAgICBjb250ZW50UXVldWUgKz0gc3VicXVldWU7XG4gICAgICB9XG5cbiAgICAgIHN1YnF1ZXVlID0gJyc7XG4gICAgfVxuXG4gICAgY29udGVudFF1ZXVlICs9IGNoYXJhY3RlcjtcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnaW5saW5lQ29kZScsXG4gICAgdmFsdWU6IGNvbnRlbnRRdWV1ZVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGU7XG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBpbmRleCA9IHZhbHVlLmluZGV4T2YoJ1xcbicsIGZyb21JbmRleCk7XG5cbiAgd2hpbGUgKGluZGV4ID4gZnJvbUluZGV4KSB7XG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCAtIDEpICE9PSAnICcpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGluZGV4LS07XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvYnJlYWsnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBoYXJkQnJlYWs7XG5oYXJkQnJlYWsubG9jYXRvciA9IGxvY2F0ZTtcblxudmFyIE1JTl9CUkVBS19MRU5HVEggPSAyO1xuXG5mdW5jdGlvbiBoYXJkQnJlYWsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgcXVldWUgPSAnJztcbiAgdmFyIGNoYXJhY3RlcjtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSAnXFxuJykge1xuICAgICAgaWYgKGluZGV4IDwgTUlOX0JSRUFLX0xFTkdUSCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcjtcblxuICAgICAgcmV0dXJuIGVhdChxdWV1ZSkoe3R5cGU6ICdicmVhayd9KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSAnICcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXI7XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB0ZXh0O1xuXG5mdW5jdGlvbiB0ZXh0KGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBtZXRob2RzO1xuICB2YXIgdG9rZW5pemVycztcbiAgdmFyIGluZGV4O1xuICB2YXIgbGVuZ3RoO1xuICB2YXIgc3VidmFsdWU7XG4gIHZhciBwb3NpdGlvbjtcbiAgdmFyIHRva2VuaXplcjtcbiAgdmFyIG5hbWU7XG4gIHZhciBtaW47XG4gIHZhciBub3c7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBtZXRob2RzID0gc2VsZi5pbmxpbmVNZXRob2RzO1xuICBsZW5ndGggPSBtZXRob2RzLmxlbmd0aDtcbiAgdG9rZW5pemVycyA9IHNlbGYuaW5saW5lVG9rZW5pemVycztcbiAgaW5kZXggPSAtMTtcbiAgbWluID0gdmFsdWUubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgbmFtZSA9IG1ldGhvZHNbaW5kZXhdO1xuXG4gICAgaWYgKG5hbWUgPT09ICd0ZXh0JyB8fCAhdG9rZW5pemVyc1tuYW1lXSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdG9rZW5pemVyID0gdG9rZW5pemVyc1tuYW1lXS5sb2NhdG9yO1xuXG4gICAgaWYgKCF0b2tlbml6ZXIpIHtcbiAgICAgIGVhdC5maWxlLmZhaWwoJ01pc3NpbmcgbG9jYXRvcjogYCcgKyBuYW1lICsgJ2AnKTtcbiAgICB9XG5cbiAgICBwb3NpdGlvbiA9IHRva2VuaXplci5jYWxsKHNlbGYsIHZhbHVlLCAxKTtcblxuICAgIGlmIChwb3NpdGlvbiAhPT0gLTEgJiYgcG9zaXRpb24gPCBtaW4pIHtcbiAgICAgIG1pbiA9IHBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgbWluKTtcbiAgbm93ID0gZWF0Lm5vdygpO1xuXG4gIHNlbGYuZGVjb2RlKHN1YnZhbHVlLCBub3csIGZ1bmN0aW9uIChjb250ZW50LCBwb3NpdGlvbiwgc291cmNlKSB7XG4gICAgZWF0KHNvdXJjZSB8fCBjb250ZW50KSh7XG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICB2YWx1ZTogY29udGVudFxuICAgIH0pO1xuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKTtcbnZhciB0b2dnbGUgPSByZXF1aXJlKCdzdGF0ZS10b2dnbGUnKTtcbnZhciB2ZmlsZUxvY2F0aW9uID0gcmVxdWlyZSgndmZpbGUtbG9jYXRpb24nKTtcbnZhciB1bmVzY2FwZSA9IHJlcXVpcmUoJy4vdW5lc2NhcGUnKTtcbnZhciBkZWNvZGUgPSByZXF1aXJlKCcuL2RlY29kZScpO1xudmFyIHRva2VuaXplciA9IHJlcXVpcmUoJy4vdG9rZW5pemVyJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyO1xuXG5mdW5jdGlvbiBQYXJzZXIoZG9jLCBmaWxlKSB7XG4gIHRoaXMuZmlsZSA9IGZpbGU7XG4gIHRoaXMub2Zmc2V0ID0ge307XG4gIHRoaXMub3B0aW9ucyA9IHh0ZW5kKHRoaXMub3B0aW9ucyk7XG4gIHRoaXMuc2V0T3B0aW9ucyh7fSk7XG5cbiAgdGhpcy5pbkxpc3QgPSBmYWxzZTtcbiAgdGhpcy5pbkJsb2NrID0gZmFsc2U7XG4gIHRoaXMuaW5MaW5rID0gZmFsc2U7XG4gIHRoaXMuYXRTdGFydCA9IHRydWU7XG5cbiAgdGhpcy50b09mZnNldCA9IHZmaWxlTG9jYXRpb24oZmlsZSkudG9PZmZzZXQ7XG4gIHRoaXMudW5lc2NhcGUgPSB1bmVzY2FwZSh0aGlzLCAnZXNjYXBlJyk7XG4gIHRoaXMuZGVjb2RlID0gZGVjb2RlKHRoaXMpO1xufVxuXG52YXIgcHJvdG8gPSBQYXJzZXIucHJvdG90eXBlO1xuXG4vKiBFeHBvc2UgY29yZS4gKi9cbnByb3RvLnNldE9wdGlvbnMgPSByZXF1aXJlKCcuL3NldC1vcHRpb25zJyk7XG5wcm90by5wYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKTtcblxuLyogRXhwb3NlIGBkZWZhdWx0c2AuICovXG5wcm90by5vcHRpb25zID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xuXG4vKiBFbnRlciBhbmQgZXhpdCBoZWxwZXJzLiAqL1xucHJvdG8uZXhpdFN0YXJ0ID0gdG9nZ2xlKCdhdFN0YXJ0JywgdHJ1ZSk7XG5wcm90by5lbnRlckxpc3QgPSB0b2dnbGUoJ2luTGlzdCcsIGZhbHNlKTtcbnByb3RvLmVudGVyTGluayA9IHRvZ2dsZSgnaW5MaW5rJywgZmFsc2UpO1xucHJvdG8uZW50ZXJCbG9jayA9IHRvZ2dsZSgnaW5CbG9jaycsIGZhbHNlKTtcblxuLyogTm9kZXMgdGhhdCBjYW4gaW50ZXJ1cHQgYSBwYXJhZ3JhcGg6XG4gKlxuICogYGBgbWFya2Rvd25cbiAqIEEgcGFyYWdyYXBoLCBmb2xsb3dlZCBieSBhIHRoZW1hdGljIGJyZWFrLlxuICogX19fXG4gKiBgYGBcbiAqXG4gKiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIHRoZW1hdGljIGJyZWFrIOKAnGludGVydXB0c+KAnVxuICogdGhlIHBhcmFncmFwaC4gKi9cbnByb3RvLmludGVycnVwdFBhcmFncmFwaCA9IFtcbiAgWyd0aGVtYXRpY0JyZWFrJ10sXG4gIFsnYXR4SGVhZGluZyddLFxuICBbJ2ZlbmNlZENvZGUnXSxcbiAgWydibG9ja3F1b3RlJ10sXG4gIFsnaHRtbCddLFxuICBbJ3NldGV4dEhlYWRpbmcnLCB7Y29tbW9ubWFyazogZmFsc2V9XSxcbiAgWydkZWZpbml0aW9uJywge2NvbW1vbm1hcms6IGZhbHNlfV0sXG4gIFsnZm9vdG5vdGUnLCB7Y29tbW9ubWFyazogZmFsc2V9XVxuXTtcblxuLyogTm9kZXMgdGhhdCBjYW4gaW50ZXJ1cHQgYSBsaXN0OlxuICpcbiAqIGBgYG1hcmtkb3duXG4gKiAtIE9uZVxuICogX19fXG4gKiBgYGBcbiAqXG4gKiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIHRoZW1hdGljIGJyZWFrIOKAnGludGVydXB0c+KAnVxuICogdGhlIGxpc3QuICovXG5wcm90by5pbnRlcnJ1cHRMaXN0ID0gW1xuICBbJ2F0eEhlYWRpbmcnLCB7cGVkYW50aWM6IGZhbHNlfV0sXG4gIFsnZmVuY2VkQ29kZScsIHtwZWRhbnRpYzogZmFsc2V9XSxcbiAgWyd0aGVtYXRpY0JyZWFrJywge3BlZGFudGljOiBmYWxzZX1dLFxuICBbJ2RlZmluaXRpb24nLCB7Y29tbW9ubWFyazogZmFsc2V9XSxcbiAgWydmb290bm90ZScsIHtjb21tb25tYXJrOiBmYWxzZX1dXG5dO1xuXG4vKiBOb2RlcyB0aGF0IGNhbiBpbnRlcnVwdCBhIGJsb2NrcXVvdGU6XG4gKlxuICogYGBgbWFya2Rvd25cbiAqID4gQSBwYXJhZ3JhcGguXG4gKiBfX19cbiAqIGBgYFxuICpcbiAqIEluIHRoZSBhYm92ZSBleGFtcGxlLCB0aGUgdGhlbWF0aWMgYnJlYWsg4oCcaW50ZXJ1cHRz4oCdXG4gKiB0aGUgYmxvY2txdW90ZS4gKi9cbnByb3RvLmludGVycnVwdEJsb2NrcXVvdGUgPSBbXG4gIFsnaW5kZW50ZWRDb2RlJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydmZW5jZWRDb2RlJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydhdHhIZWFkaW5nJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydzZXRleHRIZWFkaW5nJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWyd0aGVtYXRpY0JyZWFrJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydodG1sJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydsaXN0Jywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydkZWZpbml0aW9uJywge2NvbW1vbm1hcms6IGZhbHNlfV0sXG4gIFsnZm9vdG5vdGUnLCB7Y29tbW9ubWFyazogZmFsc2V9XVxuXTtcblxuLyogSGFuZGxlcnMuICovXG5wcm90by5ibG9ja1Rva2VuaXplcnMgPSB7XG4gIG5ld2xpbmU6IHJlcXVpcmUoJy4vdG9rZW5pemUvbmV3bGluZScpLFxuICBpbmRlbnRlZENvZGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvY29kZS1pbmRlbnRlZCcpLFxuICBmZW5jZWRDb2RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2NvZGUtZmVuY2VkJyksXG4gIGJsb2NrcXVvdGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvYmxvY2txdW90ZScpLFxuICBhdHhIZWFkaW5nOiByZXF1aXJlKCcuL3Rva2VuaXplL2hlYWRpbmctYXR4JyksXG4gIHRoZW1hdGljQnJlYWs6IHJlcXVpcmUoJy4vdG9rZW5pemUvdGhlbWF0aWMtYnJlYWsnKSxcbiAgbGlzdDogcmVxdWlyZSgnLi90b2tlbml6ZS9saXN0JyksXG4gIHNldGV4dEhlYWRpbmc6IHJlcXVpcmUoJy4vdG9rZW5pemUvaGVhZGluZy1zZXRleHQnKSxcbiAgaHRtbDogcmVxdWlyZSgnLi90b2tlbml6ZS9odG1sLWJsb2NrJyksXG4gIGZvb3Rub3RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2Zvb3Rub3RlLWRlZmluaXRpb24nKSxcbiAgZGVmaW5pdGlvbjogcmVxdWlyZSgnLi90b2tlbml6ZS9kZWZpbml0aW9uJyksXG4gIHRhYmxlOiByZXF1aXJlKCcuL3Rva2VuaXplL3RhYmxlJyksXG4gIHBhcmFncmFwaDogcmVxdWlyZSgnLi90b2tlbml6ZS9wYXJhZ3JhcGgnKVxufTtcblxucHJvdG8uaW5saW5lVG9rZW5pemVycyA9IHtcbiAgZXNjYXBlOiByZXF1aXJlKCcuL3Rva2VuaXplL2VzY2FwZScpLFxuICBhdXRvTGluazogcmVxdWlyZSgnLi90b2tlbml6ZS9hdXRvLWxpbmsnKSxcbiAgdXJsOiByZXF1aXJlKCcuL3Rva2VuaXplL3VybCcpLFxuICBodG1sOiByZXF1aXJlKCcuL3Rva2VuaXplL2h0bWwtaW5saW5lJyksXG4gIGxpbms6IHJlcXVpcmUoJy4vdG9rZW5pemUvbGluaycpLFxuICByZWZlcmVuY2U6IHJlcXVpcmUoJy4vdG9rZW5pemUvcmVmZXJlbmNlJyksXG4gIHN0cm9uZzogcmVxdWlyZSgnLi90b2tlbml6ZS9zdHJvbmcnKSxcbiAgZW1waGFzaXM6IHJlcXVpcmUoJy4vdG9rZW5pemUvZW1waGFzaXMnKSxcbiAgZGVsZXRpb246IHJlcXVpcmUoJy4vdG9rZW5pemUvZGVsZXRlJyksXG4gIGNvZGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvY29kZS1pbmxpbmUnKSxcbiAgYnJlYWs6IHJlcXVpcmUoJy4vdG9rZW5pemUvYnJlYWsnKSxcbiAgdGV4dDogcmVxdWlyZSgnLi90b2tlbml6ZS90ZXh0Jylcbn07XG5cbi8qIEV4cG9zZSBwcmVjZWRlbmNlLiAqL1xucHJvdG8uYmxvY2tNZXRob2RzID0ga2V5cyhwcm90by5ibG9ja1Rva2VuaXplcnMpO1xucHJvdG8uaW5saW5lTWV0aG9kcyA9IGtleXMocHJvdG8uaW5saW5lVG9rZW5pemVycyk7XG5cbi8qIFRva2VuaXplcnMuICovXG5wcm90by50b2tlbml6ZUJsb2NrID0gdG9rZW5pemVyKCdibG9jaycpO1xucHJvdG8udG9rZW5pemVJbmxpbmUgPSB0b2tlbml6ZXIoJ2lubGluZScpO1xucHJvdG8udG9rZW5pemVGYWN0b3J5ID0gdG9rZW5pemVyO1xuXG4vKiBHZXQgYWxsIGtleXMgaW4gYHZhbHVlYC4gKi9cbmZ1bmN0aW9uIGtleXModmFsdWUpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuXG4gIGZvciAoa2V5IGluIHZhbHVlKSB7XG4gICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1bmhlcml0ID0gcmVxdWlyZSgndW5oZXJpdCcpO1xudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKTtcbnZhciBQYXJzZXIgPSByZXF1aXJlKCcuL2xpYi9wYXJzZXIuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZTtcbnBhcnNlLlBhcnNlciA9IFBhcnNlcjtcblxuZnVuY3Rpb24gcGFyc2Uob3B0aW9ucykge1xuICB2YXIgTG9jYWwgPSB1bmhlcml0KFBhcnNlcik7XG4gIExvY2FsLnByb3RvdHlwZS5vcHRpb25zID0geHRlbmQoTG9jYWwucHJvdG90eXBlLm9wdGlvbnMsIHRoaXMuZGF0YSgnc2V0dGluZ3MnKSwgb3B0aW9ucyk7XG4gIHRoaXMuUGFyc2VyID0gTG9jYWw7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBfc2xpY2VkVG9BcnJheSA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0pIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfSByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IHJldHVybiBhcnI7IH0gZWxzZSBpZiAoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpKSB7IHJldHVybiBzbGljZUl0ZXJhdG9yKGFyciwgaSk7IH0gZWxzZSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpOyB9IH07IH0oKTtcblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSBlbHNlIHsgcmV0dXJuIEFycmF5LmZyb20oYXJyKTsgfSB9XG5cbnZhciBzcGFjZVNlcGFyYXRlZCA9IHJlcXVpcmUoJ3NwYWNlLXNlcGFyYXRlZC10b2tlbnMnKTtcblxuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1stW11cXC9cXHtcXH1cXChcXClcXCpcXCtcXD9cXC5cXFxcXFxeXFwkXFx8XS9nLCAnXFxcXCQmJyk7XG59XG5cbnZhciBDX05FV0xJTkUgPSAnXFxuJztcbnZhciBDX0ZFTkNFID0gJ3wnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJsb2NrUGx1Z2luKCkge1xuICB2YXIgYXZhaWxhYmxlQmxvY2tzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcblxuICB2YXIgcGF0dGVybiA9IE9iamVjdC5rZXlzKGF2YWlsYWJsZUJsb2NrcykubWFwKGVzY2FwZVJlZ0V4cCkuam9pbignfCcpO1xuXG4gIGlmICghcGF0dGVybikge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVtYXJrLWN1c3RvbS1ibG9ja3MgbmVlZHMgdG8gYmUgcGFzc2VkIGEgY29uZmlndXJhdGlvbiBvYmplY3QgYXMgb3B0aW9uJyk7XG4gIH1cblxuICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCdcXFxcW1xcXFxbKCcgKyBwYXR0ZXJuICsgJykoPzogKlxcXFx8ICooLiopKT9cXFxcXVxcXFxdXFxuJyk7XG5cbiAgZnVuY3Rpb24gYmxvY2tUb2tlbml6ZXIoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gICAgdmFyIG5vdyA9IGVhdC5ub3coKTtcbiAgICB2YXIga2VlcCA9IHJlZ2V4LmV4ZWModmFsdWUpO1xuICAgIGlmICgha2VlcCkgcmV0dXJuO1xuICAgIGlmIChrZWVwLmluZGV4ICE9PSAwKSByZXR1cm47XG5cbiAgICB2YXIgX2tlZXAgPSBfc2xpY2VkVG9BcnJheShrZWVwLCAzKSxcbiAgICAgICAgZWF0ZW4gPSBfa2VlcFswXSxcbiAgICAgICAgYmxvY2tUeXBlID0gX2tlZXBbMV0sXG4gICAgICAgIGJsb2NrVGl0bGUgPSBfa2VlcFsyXTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cblxuXG4gICAgaWYgKHNpbGVudCkgcmV0dXJuIHRydWU7XG5cbiAgICB2YXIgbGluZXNUb0VhdCA9IFtdO1xuICAgIHZhciBjb250ZW50ID0gW107XG5cbiAgICB2YXIgaWR4ID0gMDtcbiAgICB3aGlsZSAoKGlkeCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FKSkgIT09IC0xKSB7XG4gICAgICB2YXIgbmV4dCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FLCBpZHggKyAxKTtcbiAgICAgIC8vIGVpdGhlciBzbGljZSB1bnRpbCBuZXh0IE5FV0xJTkUgb3Igc2xpY2UgdW50aWwgZW5kIG9mIHN0cmluZ1xuICAgICAgdmFyIGxpbmVUb0VhdCA9IG5leHQgIT09IC0xID8gdmFsdWUuc2xpY2UoaWR4ICsgMSwgbmV4dCkgOiB2YWx1ZS5zbGljZShpZHggKyAxKTtcbiAgICAgIGlmIChsaW5lVG9FYXRbMF0gIT09IENfRkVOQ0UpIGJyZWFrO1xuICAgICAgLy8gcmVtb3ZlIGxlYWRpbmcgYEZFTkNFIGAgb3IgbGVhZGluZyBgRkVOQ0VgXG4gICAgICB2YXIgbGluZSA9IGxpbmVUb0VhdC5zbGljZShsaW5lVG9FYXQuc3RhcnRzV2l0aChDX0ZFTkNFICsgJyAnKSA/IDIgOiAxKTtcbiAgICAgIGxpbmVzVG9FYXQucHVzaChsaW5lVG9FYXQpO1xuICAgICAgY29udGVudC5wdXNoKGxpbmUpO1xuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShpZHggKyAxKTtcbiAgICB9XG5cbiAgICB2YXIgY29udGVudFN0cmluZyA9IGNvbnRlbnQuam9pbihDX05FV0xJTkUpO1xuXG4gICAgdmFyIHN0cmluZ1RvRWF0ID0gZWF0ZW4gKyBsaW5lc1RvRWF0LmpvaW4oQ19ORVdMSU5FKTtcblxuICAgIHZhciBwb3RlbnRpYWxCbG9jayA9IGF2YWlsYWJsZUJsb2Nrc1tibG9ja1R5cGVdO1xuICAgIHZhciB0aXRsZUFsbG93ZWQgPSBwb3RlbnRpYWxCbG9jay50aXRsZSAmJiBbJ29wdGlvbmFsJywgJ3JlcXVpcmVkJ10uaW5jbHVkZXMocG90ZW50aWFsQmxvY2sudGl0bGUpO1xuICAgIHZhciB0aXRsZVJlcXVpcmVkID0gcG90ZW50aWFsQmxvY2sudGl0bGUgJiYgcG90ZW50aWFsQmxvY2sudGl0bGUgPT09ICdyZXF1aXJlZCc7XG5cbiAgICBpZiAodGl0bGVSZXF1aXJlZCAmJiAhYmxvY2tUaXRsZSkgcmV0dXJuO1xuICAgIGlmICghdGl0bGVBbGxvd2VkICYmIGJsb2NrVGl0bGUpIHJldHVybjtcblxuICAgIHZhciBhZGQgPSBlYXQoc3RyaW5nVG9FYXQpO1xuXG4gICAgdmFyIGV4aXQgPSB0aGlzLmVudGVyQmxvY2soKTtcbiAgICB2YXIgY29udGVudHMgPSB7XG4gICAgICB0eXBlOiBibG9ja1R5cGUgKyAnQ3VzdG9tQmxvY2tCb2R5JyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaE5hbWU6ICdkaXYnLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2N1c3RvbS1ibG9jay1ib2R5J1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IHRoaXMudG9rZW5pemVCbG9jayhjb250ZW50U3RyaW5nLCBub3cpXG4gICAgfTtcbiAgICBleGl0KCk7XG5cbiAgICB2YXIgYmxvY2tDaGlsZHJlbiA9IFtjb250ZW50c107XG4gICAgaWYgKHRpdGxlQWxsb3dlZCAmJiBibG9ja1RpdGxlKSB7XG4gICAgICB2YXIgdGl0bGVOb2RlID0ge1xuICAgICAgICB0eXBlOiBibG9ja1R5cGUgKyAnQ3VzdG9tQmxvY2tIZWFkaW5nJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAnZGl2JyxcbiAgICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnY3VzdG9tLWJsb2NrLWhlYWRpbmcnXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogdGhpcy50b2tlbml6ZUlubGluZShibG9ja1RpdGxlLCBub3cpXG4gICAgICB9O1xuICAgICAgYmxvY2tDaGlsZHJlbi51bnNoaWZ0KHRpdGxlTm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIGNsYXNzTGlzdCA9IHNwYWNlU2VwYXJhdGVkLnBhcnNlKHBvdGVudGlhbEJsb2NrLmNsYXNzZXMgfHwgJycpO1xuXG4gICAgcmV0dXJuIGFkZCh7XG4gICAgICB0eXBlOiBibG9ja1R5cGUgKyAnQ3VzdG9tQmxvY2snLFxuICAgICAgY2hpbGRyZW46IGJsb2NrQ2hpbGRyZW4sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGhOYW1lOiAnZGl2JyxcbiAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6IFsnY3VzdG9tLWJsb2NrJ10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShjbGFzc0xpc3QpKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7XG5cbiAgLy8gSW5qZWN0IGJsb2NrVG9rZW5pemVyXG4gIHZhciBibG9ja1Rva2VuaXplcnMgPSBQYXJzZXIucHJvdG90eXBlLmJsb2NrVG9rZW5pemVycztcbiAgdmFyIGJsb2NrTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tNZXRob2RzO1xuICBibG9ja1Rva2VuaXplcnMuY3VzdG9tQmxvY2tzID0gYmxvY2tUb2tlbml6ZXI7XG4gIGJsb2NrTWV0aG9kcy5zcGxpY2UoYmxvY2tNZXRob2RzLmluZGV4T2YoJ2ZlbmNlZENvZGUnKSArIDEsIDAsICdjdXN0b21CbG9ja3MnKTtcblxuICAvLyBJbmplY3QgaW50byBpbnRlcnJ1cHQgcnVsZXNcbiAgdmFyIGludGVycnVwdFBhcmFncmFwaCA9IFBhcnNlci5wcm90b3R5cGUuaW50ZXJydXB0UGFyYWdyYXBoO1xuICB2YXIgaW50ZXJydXB0TGlzdCA9IFBhcnNlci5wcm90b3R5cGUuaW50ZXJydXB0TGlzdDtcbiAgdmFyIGludGVycnVwdEJsb2NrcXVvdGUgPSBQYXJzZXIucHJvdG90eXBlLmludGVycnVwdEJsb2NrcXVvdGU7XG4gIGludGVycnVwdFBhcmFncmFwaC5zcGxpY2UoaW50ZXJydXB0UGFyYWdyYXBoLmluZGV4T2YoJ2ZlbmNlZENvZGUnKSArIDEsIDAsIFsnY3VzdG9tQmxvY2tzJ10pO1xuICBpbnRlcnJ1cHRMaXN0LnNwbGljZShpbnRlcnJ1cHRMaXN0LmluZGV4T2YoJ2ZlbmNlZENvZGUnKSArIDEsIDAsIFsnY3VzdG9tQmxvY2tzJ10pO1xuICBpbnRlcnJ1cHRCbG9ja3F1b3RlLnNwbGljZShpbnRlcnJ1cHRCbG9ja3F1b3RlLmluZGV4T2YoJ2ZlbmNlZENvZGUnKSArIDEsIDAsIFsnY3VzdG9tQmxvY2tzJ10pO1xufTsiLCIvKiEgaHR0cHM6Ly9tdGhzLmJlL3B1bnljb2RlIHYxLjQuMSBieSBAbWF0aGlhcyAqL1xuXG5cbi8qKiBIaWdoZXN0IHBvc2l0aXZlIHNpZ25lZCAzMi1iaXQgZmxvYXQgdmFsdWUgKi9cbnZhciBtYXhJbnQgPSAyMTQ3NDgzNjQ3OyAvLyBha2EuIDB4N0ZGRkZGRkYgb3IgMl4zMS0xXG5cbi8qKiBCb290c3RyaW5nIHBhcmFtZXRlcnMgKi9cbnZhciBiYXNlID0gMzY7XG52YXIgdE1pbiA9IDE7XG52YXIgdE1heCA9IDI2O1xudmFyIHNrZXcgPSAzODtcbnZhciBkYW1wID0gNzAwO1xudmFyIGluaXRpYWxCaWFzID0gNzI7XG52YXIgaW5pdGlhbE4gPSAxMjg7IC8vIDB4ODBcbnZhciBkZWxpbWl0ZXIgPSAnLSc7IC8vICdcXHgyRCdcblxuLyoqIFJlZ3VsYXIgZXhwcmVzc2lvbnMgKi9cbnZhciByZWdleFB1bnljb2RlID0gL154bi0tLztcbnZhciByZWdleE5vbkFTQ0lJID0gL1teXFx4MjAtXFx4N0VdLzsgLy8gdW5wcmludGFibGUgQVNDSUkgY2hhcnMgKyBub24tQVNDSUkgY2hhcnNcbnZhciByZWdleFNlcGFyYXRvcnMgPSAvW1xceDJFXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nOyAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG5cbi8qKiBFcnJvciBtZXNzYWdlcyAqL1xudmFyIGVycm9ycyA9IHtcbiAgJ292ZXJmbG93JzogJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJyxcbiAgJ25vdC1iYXNpYyc6ICdJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpJyxcbiAgJ2ludmFsaWQtaW5wdXQnOiAnSW52YWxpZCBpbnB1dCdcbn07XG5cbi8qKiBDb252ZW5pZW5jZSBzaG9ydGN1dHMgKi9cbnZhciBiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW47XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHN0cmluZ0Zyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBlcnJvciB1dGlsaXR5IGZ1bmN0aW9uLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBlcnJvciB0eXBlLlxuICogQHJldHVybnMge0Vycm9yfSBUaHJvd3MgYSBgUmFuZ2VFcnJvcmAgd2l0aCB0aGUgYXBwbGljYWJsZSBlcnJvciBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBlcnJvcih0eXBlKSB7XG4gIHRocm93IG5ldyBSYW5nZUVycm9yKGVycm9yc1t0eXBlXSk7XG59XG5cbi8qKlxuICogQSBnZW5lcmljIGBBcnJheSNtYXBgIHV0aWxpdHkgZnVuY3Rpb24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBhcnJheVxuICogaXRlbS5cbiAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgYXJyYXkgb2YgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFwKGFycmF5LCBmbikge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHJlc3VsdFtsZW5ndGhdID0gZm4oYXJyYXlbbGVuZ3RoXSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBBIHNpbXBsZSBgQXJyYXkjbWFwYC1saWtlIHdyYXBwZXIgdG8gd29yayB3aXRoIGRvbWFpbiBuYW1lIHN0cmluZ3Mgb3IgZW1haWxcbiAqIGFkZHJlc3Nlcy5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5XG4gKiBjaGFyYWN0ZXIuXG4gKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IHN0cmluZyBvZiBjaGFyYWN0ZXJzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFja1xuICogZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hcERvbWFpbihzdHJpbmcsIGZuKSB7XG4gIHZhciBwYXJ0cyA9IHN0cmluZy5zcGxpdCgnQCcpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgLy8gSW4gZW1haWwgYWRkcmVzc2VzLCBvbmx5IHRoZSBkb21haW4gbmFtZSBzaG91bGQgYmUgcHVueWNvZGVkLiBMZWF2ZVxuICAgIC8vIHRoZSBsb2NhbCBwYXJ0IChpLmUuIGV2ZXJ5dGhpbmcgdXAgdG8gYEBgKSBpbnRhY3QuXG4gICAgcmVzdWx0ID0gcGFydHNbMF0gKyAnQCc7XG4gICAgc3RyaW5nID0gcGFydHNbMV07XG4gIH1cbiAgLy8gQXZvaWQgYHNwbGl0KHJlZ2V4KWAgZm9yIElFOCBjb21wYXRpYmlsaXR5LiBTZWUgIzE3LlxuICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShyZWdleFNlcGFyYXRvcnMsICdcXHgyRScpO1xuICB2YXIgbGFiZWxzID0gc3RyaW5nLnNwbGl0KCcuJyk7XG4gIHZhciBlbmNvZGVkID0gbWFwKGxhYmVscywgZm4pLmpvaW4oJy4nKTtcbiAgcmV0dXJuIHJlc3VsdCArIGVuY29kZWQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgYSBwYWlyIG9mIHN1cnJvZ2F0ZSBoYWx2ZXMgKGVhY2ggb2Ygd2hpY2hcbiAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuICogbWF0Y2hpbmcgVVRGLTE2LlxuICogQHNlZSBgcHVueWNvZGUudWNzMi5lbmNvZGVgXG4gKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG4gKiBAbmFtZSBkZWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcgVGhlIFVuaWNvZGUgaW5wdXQgc3RyaW5nIChVQ1MtMikuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFRoZSBuZXcgYXJyYXkgb2YgY29kZSBwb2ludHMuXG4gKi9cbmZ1bmN0aW9uIHVjczJkZWNvZGUoc3RyaW5nKSB7XG4gIHZhciBvdXRwdXQgPSBbXSxcbiAgICBjb3VudGVyID0gMCxcbiAgICBsZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuICAgIHZhbHVlLFxuICAgIGV4dHJhO1xuICB3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuICAgIHZhbHVlID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcbiAgICBpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgICAvLyBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXJcbiAgICAgIGV4dHJhID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcbiAgICAgIGlmICgoZXh0cmEgJiAweEZDMDApID09IDB4REMwMCkgeyAvLyBsb3cgc3Vycm9nYXRlXG4gICAgICAgIG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB1bm1hdGNoZWQgc3Vycm9nYXRlOyBvbmx5IGFwcGVuZCB0aGlzIGNvZGUgdW5pdCwgaW4gY2FzZSB0aGUgbmV4dFxuICAgICAgICAvLyBjb2RlIHVuaXQgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXJcbiAgICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgICAgICBjb3VudGVyLS07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RyaW5nIGJhc2VkIG9uIGFuIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmRlY29kZWBcbiAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG4gKiBAbmFtZSBlbmNvZGVcbiAqIEBwYXJhbSB7QXJyYXl9IGNvZGVQb2ludHMgVGhlIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgbmV3IFVuaWNvZGUgc3RyaW5nIChVQ1MtMikuXG4gKi9cbmZ1bmN0aW9uIHVjczJlbmNvZGUoYXJyYXkpIHtcbiAgcmV0dXJuIG1hcChhcnJheSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgb3V0cHV0ID0gJyc7XG4gICAgaWYgKHZhbHVlID4gMHhGRkZGKSB7XG4gICAgICB2YWx1ZSAtPSAweDEwMDAwO1xuICAgICAgb3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMCk7XG4gICAgICB2YWx1ZSA9IDB4REMwMCB8IHZhbHVlICYgMHgzRkY7XG4gICAgfVxuICAgIG91dHB1dCArPSBzdHJpbmdGcm9tQ2hhckNvZGUodmFsdWUpO1xuICAgIHJldHVybiBvdXRwdXQ7XG4gIH0pLmpvaW4oJycpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgYmFzaWMgY29kZSBwb2ludCBpbnRvIGEgZGlnaXQvaW50ZWdlci5cbiAqIEBzZWUgYGRpZ2l0VG9CYXNpYygpYFxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlUG9pbnQgVGhlIGJhc2ljIG51bWVyaWMgY29kZSBwb2ludCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludCAoZm9yIHVzZSBpblxuICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpbiB0aGUgcmFuZ2UgYDBgIHRvIGBiYXNlIC0gMWAsIG9yIGBiYXNlYCBpZlxuICogdGhlIGNvZGUgcG9pbnQgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2ljVG9EaWdpdChjb2RlUG9pbnQpIHtcbiAgaWYgKGNvZGVQb2ludCAtIDQ4IDwgMTApIHtcbiAgICByZXR1cm4gY29kZVBvaW50IC0gMjI7XG4gIH1cbiAgaWYgKGNvZGVQb2ludCAtIDY1IDwgMjYpIHtcbiAgICByZXR1cm4gY29kZVBvaW50IC0gNjU7XG4gIH1cbiAgaWYgKGNvZGVQb2ludCAtIDk3IDwgMjYpIHtcbiAgICByZXR1cm4gY29kZVBvaW50IC0gOTc7XG4gIH1cbiAgcmV0dXJuIGJhc2U7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBkaWdpdC9pbnRlZ2VyIGludG8gYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHNlZSBgYmFzaWNUb0RpZ2l0KClgXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGRpZ2l0IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludC5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBiYXNpYyBjb2RlIHBvaW50IHdob3NlIHZhbHVlICh3aGVuIHVzZWQgZm9yXG4gKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGlzIGBkaWdpdGAsIHdoaWNoIG5lZWRzIHRvIGJlIGluIHRoZSByYW5nZVxuICogYDBgIHRvIGBiYXNlIC0gMWAuIElmIGBmbGFnYCBpcyBub24temVybywgdGhlIHVwcGVyY2FzZSBmb3JtIGlzXG4gKiB1c2VkOyBlbHNlLCB0aGUgbG93ZXJjYXNlIGZvcm0gaXMgdXNlZC4gVGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZFxuICogaWYgYGZsYWdgIGlzIG5vbi16ZXJvIGFuZCBgZGlnaXRgIGhhcyBubyB1cHBlcmNhc2UgZm9ybS5cbiAqL1xuZnVuY3Rpb24gZGlnaXRUb0Jhc2ljKGRpZ2l0LCBmbGFnKSB7XG4gIC8vICAwLi4yNSBtYXAgdG8gQVNDSUkgYS4ueiBvciBBLi5aXG4gIC8vIDI2Li4zNSBtYXAgdG8gQVNDSUkgMC4uOVxuICByZXR1cm4gZGlnaXQgKyAyMiArIDc1ICogKGRpZ2l0IDwgMjYpIC0gKChmbGFnICE9IDApIDw8IDUpO1xufVxuXG4vKipcbiAqIEJpYXMgYWRhcHRhdGlvbiBmdW5jdGlvbiBhcyBwZXIgc2VjdGlvbiAzLjQgb2YgUkZDIDM0OTIuXG4gKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gYWRhcHQoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG4gIHZhciBrID0gMDtcbiAgZGVsdGEgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YSAvIGRhbXApIDogZGVsdGEgPj4gMTtcbiAgZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuICBmb3IgKCAvKiBubyBpbml0aWFsaXphdGlvbiAqLyA7IGRlbHRhID4gYmFzZU1pbnVzVE1pbiAqIHRNYXggPj4gMTsgayArPSBiYXNlKSB7XG4gICAgZGVsdGEgPSBmbG9vcihkZWx0YSAvIGJhc2VNaW51c1RNaW4pO1xuICB9XG4gIHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhIC8gKGRlbHRhICsgc2tldykpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG4gKiBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGUoaW5wdXQpIHtcbiAgLy8gRG9uJ3QgdXNlIFVDUy0yXG4gIHZhciBvdXRwdXQgPSBbXSxcbiAgICBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCxcbiAgICBvdXQsXG4gICAgaSA9IDAsXG4gICAgbiA9IGluaXRpYWxOLFxuICAgIGJpYXMgPSBpbml0aWFsQmlhcyxcbiAgICBiYXNpYyxcbiAgICBqLFxuICAgIGluZGV4LFxuICAgIG9sZGksXG4gICAgdyxcbiAgICBrLFxuICAgIGRpZ2l0LFxuICAgIHQsXG4gICAgLyoqIENhY2hlZCBjYWxjdWxhdGlvbiByZXN1bHRzICovXG4gICAgYmFzZU1pbnVzVDtcblxuICAvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzOiBsZXQgYGJhc2ljYCBiZSB0aGUgbnVtYmVyIG9mIGlucHV0IGNvZGVcbiAgLy8gcG9pbnRzIGJlZm9yZSB0aGUgbGFzdCBkZWxpbWl0ZXIsIG9yIGAwYCBpZiB0aGVyZSBpcyBub25lLCB0aGVuIGNvcHlcbiAgLy8gdGhlIGZpcnN0IGJhc2ljIGNvZGUgcG9pbnRzIHRvIHRoZSBvdXRwdXQuXG5cbiAgYmFzaWMgPSBpbnB1dC5sYXN0SW5kZXhPZihkZWxpbWl0ZXIpO1xuICBpZiAoYmFzaWMgPCAwKSB7XG4gICAgYmFzaWMgPSAwO1xuICB9XG5cbiAgZm9yIChqID0gMDsgaiA8IGJhc2ljOyArK2opIHtcbiAgICAvLyBpZiBpdCdzIG5vdCBhIGJhc2ljIGNvZGUgcG9pbnRcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChqKSA+PSAweDgwKSB7XG4gICAgICBlcnJvcignbm90LWJhc2ljJyk7XG4gICAgfVxuICAgIG91dHB1dC5wdXNoKGlucHV0LmNoYXJDb2RlQXQoaikpO1xuICB9XG5cbiAgLy8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuICAvLyBwb2ludHMgd2VyZSBjb3BpZWQ7IHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb3RoZXJ3aXNlLlxuXG4gIGZvciAoaW5kZXggPSBiYXNpYyA+IDAgPyBiYXNpYyArIDEgOiAwOyBpbmRleCA8IGlucHV0TGVuZ3RoOyAvKiBubyBmaW5hbCBleHByZXNzaW9uICovICkge1xuXG4gICAgLy8gYGluZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGNvbnN1bWVkLlxuICAgIC8vIERlY29kZSBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIGludG8gYGRlbHRhYCxcbiAgICAvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuICAgIC8vIGlmIHdlIGluY3JlYXNlIGBpYCBhcyB3ZSBnbywgdGhlbiBzdWJ0cmFjdCBvZmYgaXRzIHN0YXJ0aW5nXG4gICAgLy8gdmFsdWUgYXQgdGhlIGVuZCB0byBvYnRhaW4gYGRlbHRhYC5cbiAgICBmb3IgKG9sZGkgPSBpLCB3ID0gMSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLyA7IGsgKz0gYmFzZSkge1xuXG4gICAgICBpZiAoaW5kZXggPj0gaW5wdXRMZW5ndGgpIHtcbiAgICAgICAgZXJyb3IoJ2ludmFsaWQtaW5wdXQnKTtcbiAgICAgIH1cblxuICAgICAgZGlnaXQgPSBiYXNpY1RvRGlnaXQoaW5wdXQuY2hhckNvZGVBdChpbmRleCsrKSk7XG5cbiAgICAgIGlmIChkaWdpdCA+PSBiYXNlIHx8IGRpZ2l0ID4gZmxvb3IoKG1heEludCAtIGkpIC8gdykpIHtcbiAgICAgICAgZXJyb3IoJ292ZXJmbG93Jyk7XG4gICAgICB9XG5cbiAgICAgIGkgKz0gZGlnaXQgKiB3O1xuICAgICAgdCA9IGsgPD0gYmlhcyA/IHRNaW4gOiAoayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcyk7XG5cbiAgICAgIGlmIChkaWdpdCA8IHQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcbiAgICAgIGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcbiAgICAgICAgZXJyb3IoJ292ZXJmbG93Jyk7XG4gICAgICB9XG5cbiAgICAgIHcgKj0gYmFzZU1pbnVzVDtcblxuICAgIH1cblxuICAgIG91dCA9IG91dHB1dC5sZW5ndGggKyAxO1xuICAgIGJpYXMgPSBhZGFwdChpIC0gb2xkaSwgb3V0LCBvbGRpID09IDApO1xuXG4gICAgLy8gYGlgIHdhcyBzdXBwb3NlZCB0byB3cmFwIGFyb3VuZCBmcm9tIGBvdXRgIHRvIGAwYCxcbiAgICAvLyBpbmNyZW1lbnRpbmcgYG5gIGVhY2ggdGltZSwgc28gd2UnbGwgZml4IHRoYXQgbm93OlxuICAgIGlmIChmbG9vcihpIC8gb3V0KSA+IG1heEludCAtIG4pIHtcbiAgICAgIGVycm9yKCdvdmVyZmxvdycpO1xuICAgIH1cblxuICAgIG4gKz0gZmxvb3IoaSAvIG91dCk7XG4gICAgaSAlPSBvdXQ7XG5cbiAgICAvLyBJbnNlcnQgYG5gIGF0IHBvc2l0aW9uIGBpYCBvZiB0aGUgb3V0cHV0XG4gICAgb3V0cHV0LnNwbGljZShpKyssIDAsIG4pO1xuXG4gIH1cblxuICByZXR1cm4gdWNzMmVuY29kZShvdXRwdXQpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG4gKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGUoaW5wdXQpIHtcbiAgdmFyIG4sXG4gICAgZGVsdGEsXG4gICAgaGFuZGxlZENQQ291bnQsXG4gICAgYmFzaWNMZW5ndGgsXG4gICAgYmlhcyxcbiAgICBqLFxuICAgIG0sXG4gICAgcSxcbiAgICBrLFxuICAgIHQsXG4gICAgY3VycmVudFZhbHVlLFxuICAgIG91dHB1dCA9IFtdLFxuICAgIC8qKiBgaW5wdXRMZW5ndGhgIHdpbGwgaG9sZCB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIGBpbnB1dGAuICovXG4gICAgaW5wdXRMZW5ndGgsXG4gICAgLyoqIENhY2hlZCBjYWxjdWxhdGlvbiByZXN1bHRzICovXG4gICAgaGFuZGxlZENQQ291bnRQbHVzT25lLFxuICAgIGJhc2VNaW51c1QsXG4gICAgcU1pbnVzVDtcblxuICAvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBVbmljb2RlXG4gIGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cbiAgLy8gQ2FjaGUgdGhlIGxlbmd0aFxuICBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuICAvLyBJbml0aWFsaXplIHRoZSBzdGF0ZVxuICBuID0gaW5pdGlhbE47XG4gIGRlbHRhID0gMDtcbiAgYmlhcyA9IGluaXRpYWxCaWFzO1xuXG4gIC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHNcbiAgZm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcbiAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcbiAgICBpZiAoY3VycmVudFZhbHVlIDwgMHg4MCkge1xuICAgICAgb3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuXG4gIC8vIGBoYW5kbGVkQ1BDb3VudGAgaXMgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuICAvLyBgYmFzaWNMZW5ndGhgIGlzIHRoZSBudW1iZXIgb2YgYmFzaWMgY29kZSBwb2ludHMuXG5cbiAgLy8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgLSBpZiBpdCBpcyBub3QgZW1wdHkgLSB3aXRoIGEgZGVsaW1pdGVyXG4gIGlmIChiYXNpY0xlbmd0aCkge1xuICAgIG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG4gIH1cblxuICAvLyBNYWluIGVuY29kaW5nIGxvb3A6XG4gIHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG5cbiAgICAvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0XG4gICAgLy8gbGFyZ2VyIG9uZTpcbiAgICBmb3IgKG0gPSBtYXhJbnQsIGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuICAgICAgY3VycmVudFZhbHVlID0gaW5wdXRbal07XG4gICAgICBpZiAoY3VycmVudFZhbHVlID49IG4gJiYgY3VycmVudFZhbHVlIDwgbSkge1xuICAgICAgICBtID0gY3VycmVudFZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPixcbiAgICAvLyBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvd1xuICAgIGhhbmRsZWRDUENvdW50UGx1c09uZSA9IGhhbmRsZWRDUENvdW50ICsgMTtcbiAgICBpZiAobSAtIG4gPiBmbG9vcigobWF4SW50IC0gZGVsdGEpIC8gaGFuZGxlZENQQ291bnRQbHVzT25lKSkge1xuICAgICAgZXJyb3IoJ292ZXJmbG93Jyk7XG4gICAgfVxuXG4gICAgZGVsdGEgKz0gKG0gLSBuKSAqIGhhbmRsZWRDUENvdW50UGx1c09uZTtcbiAgICBuID0gbTtcblxuICAgIGZvciAoaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuICAgICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBuKSB7XG4gICAgICAgIC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyXG4gICAgICAgIGZvciAocSA9IGRlbHRhLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovIDsgayArPSBiYXNlKSB7XG4gICAgICAgICAgdCA9IGsgPD0gYmlhcyA/IHRNaW4gOiAoayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcyk7XG4gICAgICAgICAgaWYgKHEgPCB0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcU1pbnVzVCA9IHEgLSB0O1xuICAgICAgICAgIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcbiAgICAgICAgICBvdXRwdXQucHVzaChcbiAgICAgICAgICAgIHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWModCArIHFNaW51c1QgJSBiYXNlTWludXNULCAwKSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHEgPSBmbG9vcihxTWludXNUIC8gYmFzZU1pbnVzVCk7XG4gICAgICAgIH1cblxuICAgICAgICBvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEsIDApKSk7XG4gICAgICAgIGJpYXMgPSBhZGFwdChkZWx0YSwgaGFuZGxlZENQQ291bnRQbHVzT25lLCBoYW5kbGVkQ1BDb3VudCA9PSBiYXNpY0xlbmd0aCk7XG4gICAgICAgIGRlbHRhID0gMDtcbiAgICAgICAgKytoYW5kbGVkQ1BDb3VudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICArK2RlbHRhO1xuICAgICsrbjtcblxuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzc1xuICogdG8gVW5pY29kZS4gT25seSB0aGUgUHVueWNvZGVkIHBhcnRzIG9mIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCwgaS5lLlxuICogaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgb24gYSBzdHJpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuXG4gKiBjb252ZXJ0ZWQgdG8gVW5pY29kZS5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZWQgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0b1xuICogY29udmVydCB0byBVbmljb2RlLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFVuaWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIFB1bnljb2RlXG4gKiBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1VuaWNvZGUoaW5wdXQpIHtcbiAgcmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlZ2V4UHVueWNvZGUudGVzdChzdHJpbmcpID9cbiAgICAgIGRlY29kZShzdHJpbmcuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSkgOlxuICAgICAgc3RyaW5nO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFVuaWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGRvbWFpbiBuYW1lIG9yIGFuIGVtYWlsIGFkZHJlc3MgdG9cbiAqIFB1bnljb2RlLiBPbmx5IHRoZSBub24tQVNDSUkgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHdpbGwgYmUgY29udmVydGVkLFxuICogaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQncyBhbHJlYWR5IGluXG4gKiBBU0NJSS5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvIGNvbnZlcnQsIGFzIGFcbiAqIFVuaWNvZGUgc3RyaW5nLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFB1bnljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBkb21haW4gbmFtZSBvclxuICogZW1haWwgYWRkcmVzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQVNDSUkoaW5wdXQpIHtcbiAgcmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlZ2V4Tm9uQVNDSUkudGVzdChzdHJpbmcpID9cbiAgICAgICd4bi0tJyArIGVuY29kZShzdHJpbmcpIDpcbiAgICAgIHN0cmluZztcbiAgfSk7XG59XG5leHBvcnQgdmFyIHZlcnNpb24gPSAnMS40LjEnO1xuLyoqXG4gKiBBbiBvYmplY3Qgb2YgbWV0aG9kcyB0byBjb252ZXJ0IGZyb20gSmF2YVNjcmlwdCdzIGludGVybmFsIGNoYXJhY3RlclxuICogcmVwcmVzZW50YXRpb24gKFVDUy0yKSB0byBVbmljb2RlIGNvZGUgcG9pbnRzLCBhbmQgYmFjay5cbiAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAdHlwZSBPYmplY3RcbiAqL1xuXG5leHBvcnQgdmFyIHVjczIgPSB7XG4gIGRlY29kZTogdWNzMmRlY29kZSxcbiAgZW5jb2RlOiB1Y3MyZW5jb2RlXG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICB1Y3MyOiB1Y3MyLFxuICB0b0FTQ0lJOiB0b0FTQ0lJLFxuICB0b1VuaWNvZGU6IHRvVW5pY29kZSxcbiAgZW5jb2RlOiBlbmNvZGUsXG4gIGRlY29kZTogZGVjb2RlXG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuXG4vLyBJZiBvYmouaGFzT3duUHJvcGVydHkgaGFzIGJlZW4gb3ZlcnJpZGRlbiwgdGhlbiBjYWxsaW5nXG4vLyBvYmouaGFzT3duUHJvcGVydHkocHJvcCkgd2lsbCBicmVhay5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2pveWVudC9ub2RlL2lzc3Vlcy8xNzA3XG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh4cykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHhzKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG5mdW5jdGlvbiBzdHJpbmdpZnlQcmltaXRpdmUodikge1xuICBzd2l0Y2ggKHR5cGVvZiB2KSB7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiB2O1xuXG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gdiA/ICd0cnVlJyA6ICdmYWxzZSc7XG5cbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgcmV0dXJuIGlzRmluaXRlKHYpID8gdiA6ICcnO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5IChvYmosIHNlcCwgZXEsIG5hbWUpIHtcbiAgc2VwID0gc2VwIHx8ICcmJztcbiAgZXEgPSBlcSB8fCAnPSc7XG4gIGlmIChvYmogPT09IG51bGwpIHtcbiAgICBvYmogPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbWFwKG9iamVjdEtleXMob2JqKSwgZnVuY3Rpb24oaykge1xuICAgICAgdmFyIGtzID0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShrKSkgKyBlcTtcbiAgICAgIGlmIChpc0FycmF5KG9ialtrXSkpIHtcbiAgICAgICAgcmV0dXJuIG1hcChvYmpba10sIGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ga3MgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKHYpKTtcbiAgICAgICAgfSkuam9pbihzZXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGtzICsgZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShvYmpba10pKTtcbiAgICAgIH1cbiAgICB9KS5qb2luKHNlcCk7XG5cbiAgfVxuXG4gIGlmICghbmFtZSkgcmV0dXJuICcnO1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShuYW1lKSkgKyBlcSArXG4gICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG9iaikpO1xufTtcblxuZnVuY3Rpb24gbWFwICh4cywgZikge1xuICBpZiAoeHMubWFwKSByZXR1cm4geHMubWFwKGYpO1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICByZXMucHVzaChmKHhzW2ldLCBpKSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSByZXMucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UocXMsIHNlcCwgZXEsIG9wdGlvbnMpIHtcbiAgc2VwID0gc2VwIHx8ICcmJztcbiAgZXEgPSBlcSB8fCAnPSc7XG4gIHZhciBvYmogPSB7fTtcblxuICBpZiAodHlwZW9mIHFzICE9PSAnc3RyaW5nJyB8fCBxcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgdmFyIHJlZ2V4cCA9IC9cXCsvZztcbiAgcXMgPSBxcy5zcGxpdChzZXApO1xuXG4gIHZhciBtYXhLZXlzID0gMTAwMDtcbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMubWF4S2V5cyA9PT0gJ251bWJlcicpIHtcbiAgICBtYXhLZXlzID0gb3B0aW9ucy5tYXhLZXlzO1xuICB9XG5cbiAgdmFyIGxlbiA9IHFzLmxlbmd0aDtcbiAgLy8gbWF4S2V5cyA8PSAwIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIG5vdCBsaW1pdCBrZXlzIGNvdW50XG4gIGlmIChtYXhLZXlzID4gMCAmJiBsZW4gPiBtYXhLZXlzKSB7XG4gICAgbGVuID0gbWF4S2V5cztcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICB2YXIgeCA9IHFzW2ldLnJlcGxhY2UocmVnZXhwLCAnJTIwJyksXG4gICAgICAgIGlkeCA9IHguaW5kZXhPZihlcSksXG4gICAgICAgIGtzdHIsIHZzdHIsIGssIHY7XG5cbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgIGtzdHIgPSB4LnN1YnN0cigwLCBpZHgpO1xuICAgICAgdnN0ciA9IHguc3Vic3RyKGlkeCArIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBrc3RyID0geDtcbiAgICAgIHZzdHIgPSAnJztcbiAgICB9XG5cbiAgICBrID0gZGVjb2RlVVJJQ29tcG9uZW50KGtzdHIpO1xuICAgIHYgPSBkZWNvZGVVUklDb21wb25lbnQodnN0cik7XG5cbiAgICBpZiAoIWhhc093blByb3BlcnR5KG9iaiwgaykpIHtcbiAgICAgIG9ialtrXSA9IHY7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KG9ialtrXSkpIHtcbiAgICAgIG9ialtrXS5wdXNoKHYpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpba10gPSBbb2JqW2tdLCB2XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZW5jb2RlOiBzdHJpbmdpZnksXG4gIHN0cmluZ2lmeTogc3RyaW5naWZ5LFxuICBkZWNvZGU6IHBhcnNlLFxuICBwYXJzZTogcGFyc2Vcbn1cbmV4cG9ydCB7c3RyaW5naWZ5IGFzIGVuY29kZSwgcGFyc2UgYXMgZGVjb2RlfTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5cbmltcG9ydCB7dG9BU0NJSX0gZnJvbSAncHVueWNvZGUnO1xuaW1wb3J0IHtpc09iamVjdCxpc1N0cmluZyxpc051bGxPclVuZGVmaW5lZCxpc051bGx9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHtwYXJzZSBhcyBxc1BhcnNlLHN0cmluZ2lmeSBhcyBxc1N0cmluZ2lmeX0gZnJvbSAncXVlcnlzdHJpbmcnO1xuZXhwb3J0IHtcbiAgdXJsUGFyc2UgYXMgcGFyc2UsXG4gIHVybFJlc29sdmUgYXMgcmVzb2x2ZSxcbiAgdXJsUmVzb2x2ZU9iamVjdCBhcyByZXNvbHZlT2JqZWN0LFxuICB1cmxGb3JtYXQgYXMgZm9ybWF0XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBwYXJzZTogdXJsUGFyc2UsXG4gIHJlc29sdmU6IHVybFJlc29sdmUsXG4gIHJlc29sdmVPYmplY3Q6IHVybFJlc29sdmVPYmplY3QsXG4gIGZvcm1hdDogdXJsRm9ybWF0LFxuICBVcmw6IFVybFxufVxuZXhwb3J0IGZ1bmN0aW9uIFVybCgpIHtcbiAgdGhpcy5wcm90b2NvbCA9IG51bGw7XG4gIHRoaXMuc2xhc2hlcyA9IG51bGw7XG4gIHRoaXMuYXV0aCA9IG51bGw7XG4gIHRoaXMuaG9zdCA9IG51bGw7XG4gIHRoaXMucG9ydCA9IG51bGw7XG4gIHRoaXMuaG9zdG5hbWUgPSBudWxsO1xuICB0aGlzLmhhc2ggPSBudWxsO1xuICB0aGlzLnNlYXJjaCA9IG51bGw7XG4gIHRoaXMucXVlcnkgPSBudWxsO1xuICB0aGlzLnBhdGhuYW1lID0gbnVsbDtcbiAgdGhpcy5wYXRoID0gbnVsbDtcbiAgdGhpcy5ocmVmID0gbnVsbDtcbn1cblxuLy8gUmVmZXJlbmNlOiBSRkMgMzk4NiwgUkZDIDE4MDgsIFJGQyAyMzk2XG5cbi8vIGRlZmluZSB0aGVzZSBoZXJlIHNvIGF0IGxlYXN0IHRoZXkgb25seSBoYXZlIHRvIGJlXG4vLyBjb21waWxlZCBvbmNlIG9uIHRoZSBmaXJzdCBtb2R1bGUgbG9hZC5cbnZhciBwcm90b2NvbFBhdHRlcm4gPSAvXihbYS16MC05ListXSs6KS9pLFxuICBwb3J0UGF0dGVybiA9IC86WzAtOV0qJC8sXG5cbiAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbXBsZSBwYXRoIFVSTFxuICBzaW1wbGVQYXRoUGF0dGVybiA9IC9eKFxcL1xcLz8oPyFcXC8pW15cXD9cXHNdKikoXFw/W15cXHNdKik/JC8sXG5cbiAgLy8gUkZDIDIzOTY6IGNoYXJhY3RlcnMgcmVzZXJ2ZWQgZm9yIGRlbGltaXRpbmcgVVJMcy5cbiAgLy8gV2UgYWN0dWFsbHkganVzdCBhdXRvLWVzY2FwZSB0aGVzZS5cbiAgZGVsaW1zID0gWyc8JywgJz4nLCAnXCInLCAnYCcsICcgJywgJ1xccicsICdcXG4nLCAnXFx0J10sXG5cbiAgLy8gUkZDIDIzOTY6IGNoYXJhY3RlcnMgbm90IGFsbG93ZWQgZm9yIHZhcmlvdXMgcmVhc29ucy5cbiAgdW53aXNlID0gWyd7JywgJ30nLCAnfCcsICdcXFxcJywgJ14nLCAnYCddLmNvbmNhdChkZWxpbXMpLFxuXG4gIC8vIEFsbG93ZWQgYnkgUkZDcywgYnV0IGNhdXNlIG9mIFhTUyBhdHRhY2tzLiAgQWx3YXlzIGVzY2FwZSB0aGVzZS5cbiAgYXV0b0VzY2FwZSA9IFsnXFwnJ10uY29uY2F0KHVud2lzZSksXG4gIC8vIENoYXJhY3RlcnMgdGhhdCBhcmUgbmV2ZXIgZXZlciBhbGxvd2VkIGluIGEgaG9zdG5hbWUuXG4gIC8vIE5vdGUgdGhhdCBhbnkgaW52YWxpZCBjaGFycyBhcmUgYWxzbyBoYW5kbGVkLCBidXQgdGhlc2VcbiAgLy8gYXJlIHRoZSBvbmVzIHRoYXQgYXJlICpleHBlY3RlZCogdG8gYmUgc2Vlbiwgc28gd2UgZmFzdC1wYXRoXG4gIC8vIHRoZW0uXG4gIG5vbkhvc3RDaGFycyA9IFsnJScsICcvJywgJz8nLCAnOycsICcjJ10uY29uY2F0KGF1dG9Fc2NhcGUpLFxuICBob3N0RW5kaW5nQ2hhcnMgPSBbJy8nLCAnPycsICcjJ10sXG4gIGhvc3RuYW1lTWF4TGVuID0gMjU1LFxuICBob3N0bmFtZVBhcnRQYXR0ZXJuID0gL15bK2EtejAtOUEtWl8tXXswLDYzfSQvLFxuICBob3N0bmFtZVBhcnRTdGFydCA9IC9eKFsrYS16MC05QS1aXy1dezAsNjN9KSguKikkLyxcbiAgLy8gcHJvdG9jb2xzIHRoYXQgY2FuIGFsbG93IFwidW5zYWZlXCIgYW5kIFwidW53aXNlXCIgY2hhcnMuXG4gIHVuc2FmZVByb3RvY29sID0ge1xuICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gIH0sXG4gIC8vIHByb3RvY29scyB0aGF0IG5ldmVyIGhhdmUgYSBob3N0bmFtZS5cbiAgaG9zdGxlc3NQcm90b2NvbCA9IHtcbiAgICAnamF2YXNjcmlwdCc6IHRydWUsXG4gICAgJ2phdmFzY3JpcHQ6JzogdHJ1ZVxuICB9LFxuICAvLyBwcm90b2NvbHMgdGhhdCBhbHdheXMgY29udGFpbiBhIC8vIGJpdC5cbiAgc2xhc2hlZFByb3RvY29sID0ge1xuICAgICdodHRwJzogdHJ1ZSxcbiAgICAnaHR0cHMnOiB0cnVlLFxuICAgICdmdHAnOiB0cnVlLFxuICAgICdnb3BoZXInOiB0cnVlLFxuICAgICdmaWxlJzogdHJ1ZSxcbiAgICAnaHR0cDonOiB0cnVlLFxuICAgICdodHRwczonOiB0cnVlLFxuICAgICdmdHA6JzogdHJ1ZSxcbiAgICAnZ29waGVyOic6IHRydWUsXG4gICAgJ2ZpbGU6JzogdHJ1ZVxuICB9O1xuXG5mdW5jdGlvbiB1cmxQYXJzZSh1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICh1cmwgJiYgaXNPYmplY3QodXJsKSAmJiB1cmwgaW5zdGFuY2VvZiBVcmwpIHJldHVybiB1cmw7XG5cbiAgdmFyIHUgPSBuZXcgVXJsO1xuICB1LnBhcnNlKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpO1xuICByZXR1cm4gdTtcbn1cblVybC5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbih1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIHJldHVybiBwYXJzZSh0aGlzLCB1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KTtcbn1cblxuZnVuY3Rpb24gcGFyc2Uoc2VsZiwgdXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCkge1xuICBpZiAoIWlzU3RyaW5nKHVybCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJhbWV0ZXIgXFwndXJsXFwnIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAnICsgdHlwZW9mIHVybCk7XG4gIH1cblxuICAvLyBDb3B5IGNocm9tZSwgSUUsIG9wZXJhIGJhY2tzbGFzaC1oYW5kbGluZyBiZWhhdmlvci5cbiAgLy8gQmFjayBzbGFzaGVzIGJlZm9yZSB0aGUgcXVlcnkgc3RyaW5nIGdldCBjb252ZXJ0ZWQgdG8gZm9yd2FyZCBzbGFzaGVzXG4gIC8vIFNlZTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTI1OTE2XG4gIHZhciBxdWVyeUluZGV4ID0gdXJsLmluZGV4T2YoJz8nKSxcbiAgICBzcGxpdHRlciA9XG4gICAgKHF1ZXJ5SW5kZXggIT09IC0xICYmIHF1ZXJ5SW5kZXggPCB1cmwuaW5kZXhPZignIycpKSA/ICc/JyA6ICcjJyxcbiAgICB1U3BsaXQgPSB1cmwuc3BsaXQoc3BsaXR0ZXIpLFxuICAgIHNsYXNoUmVnZXggPSAvXFxcXC9nO1xuICB1U3BsaXRbMF0gPSB1U3BsaXRbMF0ucmVwbGFjZShzbGFzaFJlZ2V4LCAnLycpO1xuICB1cmwgPSB1U3BsaXQuam9pbihzcGxpdHRlcik7XG5cbiAgdmFyIHJlc3QgPSB1cmw7XG5cbiAgLy8gdHJpbSBiZWZvcmUgcHJvY2VlZGluZy5cbiAgLy8gVGhpcyBpcyB0byBzdXBwb3J0IHBhcnNlIHN0dWZmIGxpa2UgXCIgIGh0dHA6Ly9mb28uY29tICBcXG5cIlxuICByZXN0ID0gcmVzdC50cmltKCk7XG5cbiAgaWYgKCFzbGFzaGVzRGVub3RlSG9zdCAmJiB1cmwuc3BsaXQoJyMnKS5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBUcnkgZmFzdCBwYXRoIHJlZ2V4cFxuICAgIHZhciBzaW1wbGVQYXRoID0gc2ltcGxlUGF0aFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgICBpZiAoc2ltcGxlUGF0aCkge1xuICAgICAgc2VsZi5wYXRoID0gcmVzdDtcbiAgICAgIHNlbGYuaHJlZiA9IHJlc3Q7XG4gICAgICBzZWxmLnBhdGhuYW1lID0gc2ltcGxlUGF0aFsxXTtcbiAgICAgIGlmIChzaW1wbGVQYXRoWzJdKSB7XG4gICAgICAgIHNlbGYuc2VhcmNoID0gc2ltcGxlUGF0aFsyXTtcbiAgICAgICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgICBzZWxmLnF1ZXJ5ID0gcXNQYXJzZShzZWxmLnNlYXJjaC5zdWJzdHIoMSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGYucXVlcnkgPSBzZWxmLnNlYXJjaC5zdWJzdHIoMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICBzZWxmLnNlYXJjaCA9ICcnO1xuICAgICAgICBzZWxmLnF1ZXJ5ID0ge307XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VsZjtcbiAgICB9XG4gIH1cblxuICB2YXIgcHJvdG8gPSBwcm90b2NvbFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgaWYgKHByb3RvKSB7XG4gICAgcHJvdG8gPSBwcm90b1swXTtcbiAgICB2YXIgbG93ZXJQcm90byA9IHByb3RvLnRvTG93ZXJDYXNlKCk7XG4gICAgc2VsZi5wcm90b2NvbCA9IGxvd2VyUHJvdG87XG4gICAgcmVzdCA9IHJlc3Quc3Vic3RyKHByb3RvLmxlbmd0aCk7XG4gIH1cblxuICAvLyBmaWd1cmUgb3V0IGlmIGl0J3MgZ290IGEgaG9zdFxuICAvLyB1c2VyQHNlcnZlciBpcyAqYWx3YXlzKiBpbnRlcnByZXRlZCBhcyBhIGhvc3RuYW1lLCBhbmQgdXJsXG4gIC8vIHJlc29sdXRpb24gd2lsbCB0cmVhdCAvL2Zvby9iYXIgYXMgaG9zdD1mb28scGF0aD1iYXIgYmVjYXVzZSB0aGF0J3NcbiAgLy8gaG93IHRoZSBicm93c2VyIHJlc29sdmVzIHJlbGF0aXZlIFVSTHMuXG4gIGlmIChzbGFzaGVzRGVub3RlSG9zdCB8fCBwcm90byB8fCByZXN0Lm1hdGNoKC9eXFwvXFwvW15AXFwvXStAW15AXFwvXSsvKSkge1xuICAgIHZhciBzbGFzaGVzID0gcmVzdC5zdWJzdHIoMCwgMikgPT09ICcvLyc7XG4gICAgaWYgKHNsYXNoZXMgJiYgIShwcm90byAmJiBob3N0bGVzc1Byb3RvY29sW3Byb3RvXSkpIHtcbiAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigyKTtcbiAgICAgIHNlbGYuc2xhc2hlcyA9IHRydWU7XG4gICAgfVxuICB9XG4gIHZhciBpLCBoZWMsIGwsIHA7XG4gIGlmICghaG9zdGxlc3NQcm90b2NvbFtwcm90b10gJiZcbiAgICAoc2xhc2hlcyB8fCAocHJvdG8gJiYgIXNsYXNoZWRQcm90b2NvbFtwcm90b10pKSkge1xuXG4gICAgLy8gdGhlcmUncyBhIGhvc3RuYW1lLlxuICAgIC8vIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiAvLCA/LCA7LCBvciAjIGVuZHMgdGhlIGhvc3QuXG4gICAgLy9cbiAgICAvLyBJZiB0aGVyZSBpcyBhbiBAIGluIHRoZSBob3N0bmFtZSwgdGhlbiBub24taG9zdCBjaGFycyAqYXJlKiBhbGxvd2VkXG4gICAgLy8gdG8gdGhlIGxlZnQgb2YgdGhlIGxhc3QgQCBzaWduLCB1bmxlc3Mgc29tZSBob3N0LWVuZGluZyBjaGFyYWN0ZXJcbiAgICAvLyBjb21lcyAqYmVmb3JlKiB0aGUgQC1zaWduLlxuICAgIC8vIFVSTHMgYXJlIG9ibm94aW91cy5cbiAgICAvL1xuICAgIC8vIGV4OlxuICAgIC8vIGh0dHA6Ly9hQGJAYy8gPT4gdXNlcjphQGIgaG9zdDpjXG4gICAgLy8gaHR0cDovL2FAYj9AYyA9PiB1c2VyOmEgaG9zdDpjIHBhdGg6Lz9AY1xuXG4gICAgLy8gdjAuMTIgVE9ETyhpc2FhY3MpOiBUaGlzIGlzIG5vdCBxdWl0ZSBob3cgQ2hyb21lIGRvZXMgdGhpbmdzLlxuICAgIC8vIFJldmlldyBvdXIgdGVzdCBjYXNlIGFnYWluc3QgYnJvd3NlcnMgbW9yZSBjb21wcmVoZW5zaXZlbHkuXG5cbiAgICAvLyBmaW5kIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBhbnkgaG9zdEVuZGluZ0NoYXJzXG4gICAgdmFyIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaG9zdEVuZGluZ0NoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoZWMgPSByZXN0LmluZGV4T2YoaG9zdEVuZGluZ0NoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSlcbiAgICAgICAgaG9zdEVuZCA9IGhlYztcbiAgICB9XG5cbiAgICAvLyBhdCB0aGlzIHBvaW50LCBlaXRoZXIgd2UgaGF2ZSBhbiBleHBsaWNpdCBwb2ludCB3aGVyZSB0aGVcbiAgICAvLyBhdXRoIHBvcnRpb24gY2Fubm90IGdvIHBhc3QsIG9yIHRoZSBsYXN0IEAgY2hhciBpcyB0aGUgZGVjaWRlci5cbiAgICB2YXIgYXV0aCwgYXRTaWduO1xuICAgIGlmIChob3N0RW5kID09PSAtMSkge1xuICAgICAgLy8gYXRTaWduIGNhbiBiZSBhbnl3aGVyZS5cbiAgICAgIGF0U2lnbiA9IHJlc3QubGFzdEluZGV4T2YoJ0AnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYXRTaWduIG11c3QgYmUgaW4gYXV0aCBwb3J0aW9uLlxuICAgICAgLy8gaHR0cDovL2FAYi9jQGQgPT4gaG9zdDpiIGF1dGg6YSBwYXRoOi9jQGRcbiAgICAgIGF0U2lnbiA9IHJlc3QubGFzdEluZGV4T2YoJ0AnLCBob3N0RW5kKTtcbiAgICB9XG5cbiAgICAvLyBOb3cgd2UgaGF2ZSBhIHBvcnRpb24gd2hpY2ggaXMgZGVmaW5pdGVseSB0aGUgYXV0aC5cbiAgICAvLyBQdWxsIHRoYXQgb2ZmLlxuICAgIGlmIChhdFNpZ24gIT09IC0xKSB7XG4gICAgICBhdXRoID0gcmVzdC5zbGljZSgwLCBhdFNpZ24pO1xuICAgICAgcmVzdCA9IHJlc3Quc2xpY2UoYXRTaWduICsgMSk7XG4gICAgICBzZWxmLmF1dGggPSBkZWNvZGVVUklDb21wb25lbnQoYXV0aCk7XG4gICAgfVxuXG4gICAgLy8gdGhlIGhvc3QgaXMgdGhlIHJlbWFpbmluZyB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3Qgbm9uLWhvc3QgY2hhclxuICAgIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbm9uSG9zdENoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoZWMgPSByZXN0LmluZGV4T2Yobm9uSG9zdENoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSlcbiAgICAgICAgaG9zdEVuZCA9IGhlYztcbiAgICB9XG4gICAgLy8gaWYgd2Ugc3RpbGwgaGF2ZSBub3QgaGl0IGl0LCB0aGVuIHRoZSBlbnRpcmUgdGhpbmcgaXMgYSBob3N0LlxuICAgIGlmIChob3N0RW5kID09PSAtMSlcbiAgICAgIGhvc3RFbmQgPSByZXN0Lmxlbmd0aDtcblxuICAgIHNlbGYuaG9zdCA9IHJlc3Quc2xpY2UoMCwgaG9zdEVuZCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoaG9zdEVuZCk7XG5cbiAgICAvLyBwdWxsIG91dCBwb3J0LlxuICAgIHBhcnNlSG9zdChzZWxmKTtcblxuICAgIC8vIHdlJ3ZlIGluZGljYXRlZCB0aGF0IHRoZXJlIGlzIGEgaG9zdG5hbWUsXG4gICAgLy8gc28gZXZlbiBpZiBpdCdzIGVtcHR5LCBpdCBoYXMgdG8gYmUgcHJlc2VudC5cbiAgICBzZWxmLmhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZSB8fCAnJztcblxuICAgIC8vIGlmIGhvc3RuYW1lIGJlZ2lucyB3aXRoIFsgYW5kIGVuZHMgd2l0aCBdXG4gICAgLy8gYXNzdW1lIHRoYXQgaXQncyBhbiBJUHY2IGFkZHJlc3MuXG4gICAgdmFyIGlwdjZIb3N0bmFtZSA9IHNlbGYuaG9zdG5hbWVbMF0gPT09ICdbJyAmJlxuICAgICAgc2VsZi5ob3N0bmFtZVtzZWxmLmhvc3RuYW1lLmxlbmd0aCAtIDFdID09PSAnXSc7XG5cbiAgICAvLyB2YWxpZGF0ZSBhIGxpdHRsZS5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgdmFyIGhvc3RwYXJ0cyA9IHNlbGYuaG9zdG5hbWUuc3BsaXQoL1xcLi8pO1xuICAgICAgZm9yIChpID0gMCwgbCA9IGhvc3RwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdmFyIHBhcnQgPSBob3N0cGFydHNbaV07XG4gICAgICAgIGlmICghcGFydCkgY29udGludWU7XG4gICAgICAgIGlmICghcGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgIHZhciBuZXdwYXJ0ID0gJyc7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGsgPSBwYXJ0Lmxlbmd0aDsgaiA8IGs7IGorKykge1xuICAgICAgICAgICAgaWYgKHBhcnQuY2hhckNvZGVBdChqKSA+IDEyNykge1xuICAgICAgICAgICAgICAvLyB3ZSByZXBsYWNlIG5vbi1BU0NJSSBjaGFyIHdpdGggYSB0ZW1wb3JhcnkgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0aGlzIHRvIG1ha2Ugc3VyZSBzaXplIG9mIGhvc3RuYW1lIGlzIG5vdFxuICAgICAgICAgICAgICAvLyBicm9rZW4gYnkgcmVwbGFjaW5nIG5vbi1BU0NJSSBieSBub3RoaW5nXG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gJ3gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3cGFydCArPSBwYXJ0W2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB3ZSB0ZXN0IGFnYWluIHdpdGggQVNDSUkgY2hhciBvbmx5XG4gICAgICAgICAgaWYgKCFuZXdwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgICB2YXIgdmFsaWRQYXJ0cyA9IGhvc3RwYXJ0cy5zbGljZSgwLCBpKTtcbiAgICAgICAgICAgIHZhciBub3RIb3N0ID0gaG9zdHBhcnRzLnNsaWNlKGkgKyAxKTtcbiAgICAgICAgICAgIHZhciBiaXQgPSBwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFN0YXJ0KTtcbiAgICAgICAgICAgIGlmIChiaXQpIHtcbiAgICAgICAgICAgICAgdmFsaWRQYXJ0cy5wdXNoKGJpdFsxXSk7XG4gICAgICAgICAgICAgIG5vdEhvc3QudW5zaGlmdChiaXRbMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vdEhvc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJlc3QgPSAnLycgKyBub3RIb3N0LmpvaW4oJy4nKSArIHJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLmhvc3RuYW1lID0gdmFsaWRQYXJ0cy5qb2luKCcuJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2VsZi5ob3N0bmFtZS5sZW5ndGggPiBob3N0bmFtZU1heExlbikge1xuICAgICAgc2VsZi5ob3N0bmFtZSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBob3N0bmFtZXMgYXJlIGFsd2F5cyBsb3dlciBjYXNlLlxuICAgICAgc2VsZi5ob3N0bmFtZSA9IHNlbGYuaG9zdG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgLy8gSUROQSBTdXBwb3J0OiBSZXR1cm5zIGEgcHVueWNvZGVkIHJlcHJlc2VudGF0aW9uIG9mIFwiZG9tYWluXCIuXG4gICAgICAvLyBJdCBvbmx5IGNvbnZlcnRzIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB0aGF0XG4gICAgICAvLyBoYXZlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmXG4gICAgICAvLyB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQgYWxyZWFkeSBpcyBBU0NJSS1vbmx5LlxuICAgICAgc2VsZi5ob3N0bmFtZSA9IHRvQVNDSUkoc2VsZi5ob3N0bmFtZSk7XG4gICAgfVxuXG4gICAgcCA9IHNlbGYucG9ydCA/ICc6JyArIHNlbGYucG9ydCA6ICcnO1xuICAgIHZhciBoID0gc2VsZi5ob3N0bmFtZSB8fCAnJztcbiAgICBzZWxmLmhvc3QgPSBoICsgcDtcbiAgICBzZWxmLmhyZWYgKz0gc2VsZi5ob3N0O1xuXG4gICAgLy8gc3RyaXAgWyBhbmQgXSBmcm9tIHRoZSBob3N0bmFtZVxuICAgIC8vIHRoZSBob3N0IGZpZWxkIHN0aWxsIHJldGFpbnMgdGhlbSwgdGhvdWdoXG4gICAgaWYgKGlwdjZIb3N0bmFtZSkge1xuICAgICAgc2VsZi5ob3N0bmFtZSA9IHNlbGYuaG9zdG5hbWUuc3Vic3RyKDEsIHNlbGYuaG9zdG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBpZiAocmVzdFswXSAhPT0gJy8nKSB7XG4gICAgICAgIHJlc3QgPSAnLycgKyByZXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIG5vdyByZXN0IGlzIHNldCB0byB0aGUgcG9zdC1ob3N0IHN0dWZmLlxuICAvLyBjaG9wIG9mZiBhbnkgZGVsaW0gY2hhcnMuXG4gIGlmICghdW5zYWZlUHJvdG9jb2xbbG93ZXJQcm90b10pIHtcblxuICAgIC8vIEZpcnN0LCBtYWtlIDEwMCUgc3VyZSB0aGF0IGFueSBcImF1dG9Fc2NhcGVcIiBjaGFycyBnZXRcbiAgICAvLyBlc2NhcGVkLCBldmVuIGlmIGVuY29kZVVSSUNvbXBvbmVudCBkb2Vzbid0IHRoaW5rIHRoZXlcbiAgICAvLyBuZWVkIHRvIGJlLlxuICAgIGZvciAoaSA9IDAsIGwgPSBhdXRvRXNjYXBlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIGFlID0gYXV0b0VzY2FwZVtpXTtcbiAgICAgIGlmIChyZXN0LmluZGV4T2YoYWUpID09PSAtMSlcbiAgICAgICAgY29udGludWU7XG4gICAgICB2YXIgZXNjID0gZW5jb2RlVVJJQ29tcG9uZW50KGFlKTtcbiAgICAgIGlmIChlc2MgPT09IGFlKSB7XG4gICAgICAgIGVzYyA9IGVzY2FwZShhZSk7XG4gICAgICB9XG4gICAgICByZXN0ID0gcmVzdC5zcGxpdChhZSkuam9pbihlc2MpO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gY2hvcCBvZmYgZnJvbSB0aGUgdGFpbCBmaXJzdC5cbiAgdmFyIGhhc2ggPSByZXN0LmluZGV4T2YoJyMnKTtcbiAgaWYgKGhhc2ggIT09IC0xKSB7XG4gICAgLy8gZ290IGEgZnJhZ21lbnQgc3RyaW5nLlxuICAgIHNlbGYuaGFzaCA9IHJlc3Quc3Vic3RyKGhhc2gpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIGhhc2gpO1xuICB9XG4gIHZhciBxbSA9IHJlc3QuaW5kZXhPZignPycpO1xuICBpZiAocW0gIT09IC0xKSB7XG4gICAgc2VsZi5zZWFyY2ggPSByZXN0LnN1YnN0cihxbSk7XG4gICAgc2VsZi5xdWVyeSA9IHJlc3Quc3Vic3RyKHFtICsgMSk7XG4gICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgIHNlbGYucXVlcnkgPSBxc1BhcnNlKHNlbGYucXVlcnkpO1xuICAgIH1cbiAgICByZXN0ID0gcmVzdC5zbGljZSgwLCBxbSk7XG4gIH0gZWxzZSBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgIC8vIG5vIHF1ZXJ5IHN0cmluZywgYnV0IHBhcnNlUXVlcnlTdHJpbmcgc3RpbGwgcmVxdWVzdGVkXG4gICAgc2VsZi5zZWFyY2ggPSAnJztcbiAgICBzZWxmLnF1ZXJ5ID0ge307XG4gIH1cbiAgaWYgKHJlc3QpIHNlbGYucGF0aG5hbWUgPSByZXN0O1xuICBpZiAoc2xhc2hlZFByb3RvY29sW2xvd2VyUHJvdG9dICYmXG4gICAgc2VsZi5ob3N0bmFtZSAmJiAhc2VsZi5wYXRobmFtZSkge1xuICAgIHNlbGYucGF0aG5hbWUgPSAnLyc7XG4gIH1cblxuICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gIGlmIChzZWxmLnBhdGhuYW1lIHx8IHNlbGYuc2VhcmNoKSB7XG4gICAgcCA9IHNlbGYucGF0aG5hbWUgfHwgJyc7XG4gICAgdmFyIHMgPSBzZWxmLnNlYXJjaCB8fCAnJztcbiAgICBzZWxmLnBhdGggPSBwICsgcztcbiAgfVxuXG4gIC8vIGZpbmFsbHksIHJlY29uc3RydWN0IHRoZSBocmVmIGJhc2VkIG9uIHdoYXQgaGFzIGJlZW4gdmFsaWRhdGVkLlxuICBzZWxmLmhyZWYgPSBmb3JtYXQoc2VsZik7XG4gIHJldHVybiBzZWxmO1xufVxuXG4vLyBmb3JtYXQgYSBwYXJzZWQgb2JqZWN0IGludG8gYSB1cmwgc3RyaW5nXG5mdW5jdGlvbiB1cmxGb3JtYXQob2JqKSB7XG4gIC8vIGVuc3VyZSBpdCdzIGFuIG9iamVjdCwgYW5kIG5vdCBhIHN0cmluZyB1cmwuXG4gIC8vIElmIGl0J3MgYW4gb2JqLCB0aGlzIGlzIGEgbm8tb3AuXG4gIC8vIHRoaXMgd2F5LCB5b3UgY2FuIGNhbGwgdXJsX2Zvcm1hdCgpIG9uIHN0cmluZ3NcbiAgLy8gdG8gY2xlYW4gdXAgcG90ZW50aWFsbHkgd29ua3kgdXJscy5cbiAgaWYgKGlzU3RyaW5nKG9iaikpIG9iaiA9IHBhcnNlKHt9LCBvYmopO1xuICByZXR1cm4gZm9ybWF0KG9iaik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdChzZWxmKSB7XG4gIHZhciBhdXRoID0gc2VsZi5hdXRoIHx8ICcnO1xuICBpZiAoYXV0aCkge1xuICAgIGF1dGggPSBlbmNvZGVVUklDb21wb25lbnQoYXV0aCk7XG4gICAgYXV0aCA9IGF1dGgucmVwbGFjZSgvJTNBL2ksICc6Jyk7XG4gICAgYXV0aCArPSAnQCc7XG4gIH1cblxuICB2YXIgcHJvdG9jb2wgPSBzZWxmLnByb3RvY29sIHx8ICcnLFxuICAgIHBhdGhuYW1lID0gc2VsZi5wYXRobmFtZSB8fCAnJyxcbiAgICBoYXNoID0gc2VsZi5oYXNoIHx8ICcnLFxuICAgIGhvc3QgPSBmYWxzZSxcbiAgICBxdWVyeSA9ICcnO1xuXG4gIGlmIChzZWxmLmhvc3QpIHtcbiAgICBob3N0ID0gYXV0aCArIHNlbGYuaG9zdDtcbiAgfSBlbHNlIGlmIChzZWxmLmhvc3RuYW1lKSB7XG4gICAgaG9zdCA9IGF1dGggKyAoc2VsZi5ob3N0bmFtZS5pbmRleE9mKCc6JykgPT09IC0xID9cbiAgICAgIHNlbGYuaG9zdG5hbWUgOlxuICAgICAgJ1snICsgdGhpcy5ob3N0bmFtZSArICddJyk7XG4gICAgaWYgKHNlbGYucG9ydCkge1xuICAgICAgaG9zdCArPSAnOicgKyBzZWxmLnBvcnQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNlbGYucXVlcnkgJiZcbiAgICBpc09iamVjdChzZWxmLnF1ZXJ5KSAmJlxuICAgIE9iamVjdC5rZXlzKHNlbGYucXVlcnkpLmxlbmd0aCkge1xuICAgIHF1ZXJ5ID0gcXNTdHJpbmdpZnkoc2VsZi5xdWVyeSk7XG4gIH1cblxuICB2YXIgc2VhcmNoID0gc2VsZi5zZWFyY2ggfHwgKHF1ZXJ5ICYmICgnPycgKyBxdWVyeSkpIHx8ICcnO1xuXG4gIGlmIChwcm90b2NvbCAmJiBwcm90b2NvbC5zdWJzdHIoLTEpICE9PSAnOicpIHByb3RvY29sICs9ICc6JztcblxuICAvLyBvbmx5IHRoZSBzbGFzaGVkUHJvdG9jb2xzIGdldCB0aGUgLy8uICBOb3QgbWFpbHRvOiwgeG1wcDosIGV0Yy5cbiAgLy8gdW5sZXNzIHRoZXkgaGFkIHRoZW0gdG8gYmVnaW4gd2l0aC5cbiAgaWYgKHNlbGYuc2xhc2hlcyB8fFxuICAgICghcHJvdG9jb2wgfHwgc2xhc2hlZFByb3RvY29sW3Byb3RvY29sXSkgJiYgaG9zdCAhPT0gZmFsc2UpIHtcbiAgICBob3N0ID0gJy8vJyArIChob3N0IHx8ICcnKTtcbiAgICBpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWUuY2hhckF0KDApICE9PSAnLycpIHBhdGhuYW1lID0gJy8nICsgcGF0aG5hbWU7XG4gIH0gZWxzZSBpZiAoIWhvc3QpIHtcbiAgICBob3N0ID0gJyc7XG4gIH1cblxuICBpZiAoaGFzaCAmJiBoYXNoLmNoYXJBdCgwKSAhPT0gJyMnKSBoYXNoID0gJyMnICsgaGFzaDtcbiAgaWYgKHNlYXJjaCAmJiBzZWFyY2guY2hhckF0KDApICE9PSAnPycpIHNlYXJjaCA9ICc/JyArIHNlYXJjaDtcblxuICBwYXRobmFtZSA9IHBhdGhuYW1lLnJlcGxhY2UoL1s/I10vZywgZnVuY3Rpb24obWF0Y2gpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KG1hdGNoKTtcbiAgfSk7XG4gIHNlYXJjaCA9IHNlYXJjaC5yZXBsYWNlKCcjJywgJyUyMycpO1xuXG4gIHJldHVybiBwcm90b2NvbCArIGhvc3QgKyBwYXRobmFtZSArIHNlYXJjaCArIGhhc2g7XG59XG5cblVybC5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBmb3JtYXQodGhpcyk7XG59XG5cbmZ1bmN0aW9uIHVybFJlc29sdmUoc291cmNlLCByZWxhdGl2ZSkge1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZShyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIHJldHVybiB0aGlzLnJlc29sdmVPYmplY3QodXJsUGFyc2UocmVsYXRpdmUsIGZhbHNlLCB0cnVlKSkuZm9ybWF0KCk7XG59O1xuXG5mdW5jdGlvbiB1cmxSZXNvbHZlT2JqZWN0KHNvdXJjZSwgcmVsYXRpdmUpIHtcbiAgaWYgKCFzb3VyY2UpIHJldHVybiByZWxhdGl2ZTtcbiAgcmV0dXJuIHVybFBhcnNlKHNvdXJjZSwgZmFsc2UsIHRydWUpLnJlc29sdmVPYmplY3QocmVsYXRpdmUpO1xufVxuXG5VcmwucHJvdG90eXBlLnJlc29sdmVPYmplY3QgPSBmdW5jdGlvbihyZWxhdGl2ZSkge1xuICBpZiAoaXNTdHJpbmcocmVsYXRpdmUpKSB7XG4gICAgdmFyIHJlbCA9IG5ldyBVcmwoKTtcbiAgICByZWwucGFyc2UocmVsYXRpdmUsIGZhbHNlLCB0cnVlKTtcbiAgICByZWxhdGl2ZSA9IHJlbDtcbiAgfVxuXG4gIHZhciByZXN1bHQgPSBuZXcgVXJsKCk7XG4gIHZhciB0a2V5cyA9IE9iamVjdC5rZXlzKHRoaXMpO1xuICBmb3IgKHZhciB0ayA9IDA7IHRrIDwgdGtleXMubGVuZ3RoOyB0aysrKSB7XG4gICAgdmFyIHRrZXkgPSB0a2V5c1t0a107XG4gICAgcmVzdWx0W3RrZXldID0gdGhpc1t0a2V5XTtcbiAgfVxuXG4gIC8vIGhhc2ggaXMgYWx3YXlzIG92ZXJyaWRkZW4sIG5vIG1hdHRlciB3aGF0LlxuICAvLyBldmVuIGhyZWY9XCJcIiB3aWxsIHJlbW92ZSBpdC5cbiAgcmVzdWx0Lmhhc2ggPSByZWxhdGl2ZS5oYXNoO1xuXG4gIC8vIGlmIHRoZSByZWxhdGl2ZSB1cmwgaXMgZW1wdHksIHRoZW4gdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gZG8gaGVyZS5cbiAgaWYgKHJlbGF0aXZlLmhyZWYgPT09ICcnKSB7XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGhyZWZzIGxpa2UgLy9mb28vYmFyIGFsd2F5cyBjdXQgdG8gdGhlIHByb3RvY29sLlxuICBpZiAocmVsYXRpdmUuc2xhc2hlcyAmJiAhcmVsYXRpdmUucHJvdG9jb2wpIHtcbiAgICAvLyB0YWtlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBwcm90b2NvbCBmcm9tIHJlbGF0aXZlXG4gICAgdmFyIHJrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgIGZvciAodmFyIHJrID0gMDsgcmsgPCBya2V5cy5sZW5ndGg7IHJrKyspIHtcbiAgICAgIHZhciBya2V5ID0gcmtleXNbcmtdO1xuICAgICAgaWYgKHJrZXkgIT09ICdwcm90b2NvbCcpXG4gICAgICAgIHJlc3VsdFtya2V5XSA9IHJlbGF0aXZlW3JrZXldO1xuICAgIH1cblxuICAgIC8vdXJsUGFyc2UgYXBwZW5kcyB0cmFpbGluZyAvIHRvIHVybHMgbGlrZSBodHRwOi8vd3d3LmV4YW1wbGUuY29tXG4gICAgaWYgKHNsYXNoZWRQcm90b2NvbFtyZXN1bHQucHJvdG9jb2xdICYmXG4gICAgICByZXN1bHQuaG9zdG5hbWUgJiYgIXJlc3VsdC5wYXRobmFtZSkge1xuICAgICAgcmVzdWx0LnBhdGggPSByZXN1bHQucGF0aG5hbWUgPSAnLyc7XG4gICAgfVxuXG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICB2YXIgcmVsUGF0aDtcbiAgaWYgKHJlbGF0aXZlLnByb3RvY29sICYmIHJlbGF0aXZlLnByb3RvY29sICE9PSByZXN1bHQucHJvdG9jb2wpIHtcbiAgICAvLyBpZiBpdCdzIGEga25vd24gdXJsIHByb3RvY29sLCB0aGVuIGNoYW5naW5nXG4gICAgLy8gdGhlIHByb3RvY29sIGRvZXMgd2VpcmQgdGhpbmdzXG4gICAgLy8gZmlyc3QsIGlmIGl0J3Mgbm90IGZpbGU6LCB0aGVuIHdlIE1VU1QgaGF2ZSBhIGhvc3QsXG4gICAgLy8gYW5kIGlmIHRoZXJlIHdhcyBhIHBhdGhcbiAgICAvLyB0byBiZWdpbiB3aXRoLCB0aGVuIHdlIE1VU1QgaGF2ZSBhIHBhdGguXG4gICAgLy8gaWYgaXQgaXMgZmlsZTosIHRoZW4gdGhlIGhvc3QgaXMgZHJvcHBlZCxcbiAgICAvLyBiZWNhdXNlIHRoYXQncyBrbm93biB0byBiZSBob3N0bGVzcy5cbiAgICAvLyBhbnl0aGluZyBlbHNlIGlzIGFzc3VtZWQgdG8gYmUgYWJzb2x1dGUuXG4gICAgaWYgKCFzbGFzaGVkUHJvdG9jb2xbcmVsYXRpdmUucHJvdG9jb2xdKSB7XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHJlbGF0aXZlKTtcbiAgICAgIGZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICAgICAgICB2YXIgayA9IGtleXNbdl07XG4gICAgICAgIHJlc3VsdFtrXSA9IHJlbGF0aXZlW2tdO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHJlc3VsdC5wcm90b2NvbCA9IHJlbGF0aXZlLnByb3RvY29sO1xuICAgIGlmICghcmVsYXRpdmUuaG9zdCAmJiAhaG9zdGxlc3NQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHJlbFBhdGggPSAocmVsYXRpdmUucGF0aG5hbWUgfHwgJycpLnNwbGl0KCcvJyk7XG4gICAgICB3aGlsZSAocmVsUGF0aC5sZW5ndGggJiYgIShyZWxhdGl2ZS5ob3N0ID0gcmVsUGF0aC5zaGlmdCgpKSk7XG4gICAgICBpZiAoIXJlbGF0aXZlLmhvc3QpIHJlbGF0aXZlLmhvc3QgPSAnJztcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdG5hbWUpIHJlbGF0aXZlLmhvc3RuYW1lID0gJyc7XG4gICAgICBpZiAocmVsUGF0aFswXSAhPT0gJycpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICBpZiAocmVsUGF0aC5sZW5ndGggPCAyKSByZWxQYXRoLnVuc2hpZnQoJycpO1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsUGF0aC5qb2luKCcvJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRobmFtZSA9IHJlbGF0aXZlLnBhdGhuYW1lO1xuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHJlc3VsdC5ob3N0ID0gcmVsYXRpdmUuaG9zdCB8fCAnJztcbiAgICByZXN1bHQuYXV0aCA9IHJlbGF0aXZlLmF1dGg7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gcmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdDtcbiAgICByZXN1bHQucG9ydCA9IHJlbGF0aXZlLnBvcnQ7XG4gICAgLy8gdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnBhdGhuYW1lIHx8IHJlc3VsdC5zZWFyY2gpIHtcbiAgICAgIHZhciBwID0gcmVzdWx0LnBhdGhuYW1lIHx8ICcnO1xuICAgICAgdmFyIHMgPSByZXN1bHQuc2VhcmNoIHx8ICcnO1xuICAgICAgcmVzdWx0LnBhdGggPSBwICsgcztcbiAgICB9XG4gICAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2YXIgaXNTb3VyY2VBYnMgPSAocmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJyksXG4gICAgaXNSZWxBYnMgPSAoXG4gICAgICByZWxhdGl2ZS5ob3N0IHx8XG4gICAgICByZWxhdGl2ZS5wYXRobmFtZSAmJiByZWxhdGl2ZS5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJ1xuICAgICksXG4gICAgbXVzdEVuZEFicyA9IChpc1JlbEFicyB8fCBpc1NvdXJjZUFicyB8fFxuICAgICAgKHJlc3VsdC5ob3N0ICYmIHJlbGF0aXZlLnBhdGhuYW1lKSksXG4gICAgcmVtb3ZlQWxsRG90cyA9IG11c3RFbmRBYnMsXG4gICAgc3JjUGF0aCA9IHJlc3VsdC5wYXRobmFtZSAmJiByZXN1bHQucGF0aG5hbWUuc3BsaXQoJy8nKSB8fCBbXSxcbiAgICBwc3ljaG90aWMgPSByZXN1bHQucHJvdG9jb2wgJiYgIXNsYXNoZWRQcm90b2NvbFtyZXN1bHQucHJvdG9jb2xdO1xuICByZWxQYXRoID0gcmVsYXRpdmUucGF0aG5hbWUgJiYgcmVsYXRpdmUucGF0aG5hbWUuc3BsaXQoJy8nKSB8fCBbXTtcbiAgLy8gaWYgdGhlIHVybCBpcyBhIG5vbi1zbGFzaGVkIHVybCwgdGhlbiByZWxhdGl2ZVxuICAvLyBsaW5rcyBsaWtlIC4uLy4uIHNob3VsZCBiZSBhYmxlXG4gIC8vIHRvIGNyYXdsIHVwIHRvIHRoZSBob3N0bmFtZSwgYXMgd2VsbC4gIFRoaXMgaXMgc3RyYW5nZS5cbiAgLy8gcmVzdWx0LnByb3RvY29sIGhhcyBhbHJlYWR5IGJlZW4gc2V0IGJ5IG5vdy5cbiAgLy8gTGF0ZXIgb24sIHB1dCB0aGUgZmlyc3QgcGF0aCBwYXJ0IGludG8gdGhlIGhvc3QgZmllbGQuXG4gIGlmIChwc3ljaG90aWMpIHtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAnJztcbiAgICByZXN1bHQucG9ydCA9IG51bGw7XG4gICAgaWYgKHJlc3VsdC5ob3N0KSB7XG4gICAgICBpZiAoc3JjUGF0aFswXSA9PT0gJycpIHNyY1BhdGhbMF0gPSByZXN1bHQuaG9zdDtcbiAgICAgIGVsc2Ugc3JjUGF0aC51bnNoaWZ0KHJlc3VsdC5ob3N0KTtcbiAgICB9XG4gICAgcmVzdWx0Lmhvc3QgPSAnJztcbiAgICBpZiAocmVsYXRpdmUucHJvdG9jb2wpIHtcbiAgICAgIHJlbGF0aXZlLmhvc3RuYW1lID0gbnVsbDtcbiAgICAgIHJlbGF0aXZlLnBvcnQgPSBudWxsO1xuICAgICAgaWYgKHJlbGF0aXZlLmhvc3QpIHtcbiAgICAgICAgaWYgKHJlbFBhdGhbMF0gPT09ICcnKSByZWxQYXRoWzBdID0gcmVsYXRpdmUuaG9zdDtcbiAgICAgICAgZWxzZSByZWxQYXRoLnVuc2hpZnQocmVsYXRpdmUuaG9zdCk7XG4gICAgICB9XG4gICAgICByZWxhdGl2ZS5ob3N0ID0gbnVsbDtcbiAgICB9XG4gICAgbXVzdEVuZEFicyA9IG11c3RFbmRBYnMgJiYgKHJlbFBhdGhbMF0gPT09ICcnIHx8IHNyY1BhdGhbMF0gPT09ICcnKTtcbiAgfVxuICB2YXIgYXV0aEluSG9zdDtcbiAgaWYgKGlzUmVsQWJzKSB7XG4gICAgLy8gaXQncyBhYnNvbHV0ZS5cbiAgICByZXN1bHQuaG9zdCA9IChyZWxhdGl2ZS5ob3N0IHx8IHJlbGF0aXZlLmhvc3QgPT09ICcnKSA/XG4gICAgICByZWxhdGl2ZS5ob3N0IDogcmVzdWx0Lmhvc3Q7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gKHJlbGF0aXZlLmhvc3RuYW1lIHx8IHJlbGF0aXZlLmhvc3RuYW1lID09PSAnJykgP1xuICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgOiByZXN1bHQuaG9zdG5hbWU7XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICBzcmNQYXRoID0gcmVsUGF0aDtcbiAgICAvLyBmYWxsIHRocm91Z2ggdG8gdGhlIGRvdC1oYW5kbGluZyBiZWxvdy5cbiAgfSBlbHNlIGlmIChyZWxQYXRoLmxlbmd0aCkge1xuICAgIC8vIGl0J3MgcmVsYXRpdmVcbiAgICAvLyB0aHJvdyBhd2F5IHRoZSBleGlzdGluZyBmaWxlLCBhbmQgdGFrZSB0aGUgbmV3IHBhdGggaW5zdGVhZC5cbiAgICBpZiAoIXNyY1BhdGgpIHNyY1BhdGggPSBbXTtcbiAgICBzcmNQYXRoLnBvcCgpO1xuICAgIHNyY1BhdGggPSBzcmNQYXRoLmNvbmNhdChyZWxQYXRoKTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICB9IGVsc2UgaWYgKCFpc051bGxPclVuZGVmaW5lZChyZWxhdGl2ZS5zZWFyY2gpKSB7XG4gICAgLy8ganVzdCBwdWxsIG91dCB0aGUgc2VhcmNoLlxuICAgIC8vIGxpa2UgaHJlZj0nP2ZvbycuXG4gICAgLy8gUHV0IHRoaXMgYWZ0ZXIgdGhlIG90aGVyIHR3byBjYXNlcyBiZWNhdXNlIGl0IHNpbXBsaWZpZXMgdGhlIGJvb2xlYW5zXG4gICAgaWYgKHBzeWNob3RpYykge1xuICAgICAgcmVzdWx0Lmhvc3RuYW1lID0gcmVzdWx0Lmhvc3QgPSBzcmNQYXRoLnNoaWZ0KCk7XG4gICAgICAvL29jY2F0aW9uYWx5IHRoZSBhdXRoIGNhbiBnZXQgc3R1Y2sgb25seSBpbiBob3N0XG4gICAgICAvL3RoaXMgZXNwZWNpYWxseSBoYXBwZW5zIGluIGNhc2VzIGxpa2VcbiAgICAgIC8vdXJsLnJlc29sdmVPYmplY3QoJ21haWx0bzpsb2NhbDFAZG9tYWluMScsICdsb2NhbDJAZG9tYWluMicpXG4gICAgICBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/XG4gICAgICAgIHJlc3VsdC5ob3N0LnNwbGl0KCdAJykgOiBmYWxzZTtcbiAgICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICAgIHJlc3VsdC5hdXRoID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZSA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKCFpc051bGwocmVzdWx0LnBhdGhuYW1lKSB8fCAhaXNOdWxsKHJlc3VsdC5zZWFyY2gpKSB7XG4gICAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgICAocmVzdWx0LnNlYXJjaCA/IHJlc3VsdC5zZWFyY2ggOiAnJyk7XG4gICAgfVxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAoIXNyY1BhdGgubGVuZ3RoKSB7XG4gICAgLy8gbm8gcGF0aCBhdCBhbGwuICBlYXN5LlxuICAgIC8vIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCB0aGUgb3RoZXIgc3R1ZmYgYWJvdmUuXG4gICAgcmVzdWx0LnBhdGhuYW1lID0gbnVsbDtcbiAgICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKHJlc3VsdC5zZWFyY2gpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gJy8nICsgcmVzdWx0LnNlYXJjaDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGggPSBudWxsO1xuICAgIH1cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaWYgYSB1cmwgRU5EcyBpbiAuIG9yIC4uLCB0aGVuIGl0IG11c3QgZ2V0IGEgdHJhaWxpbmcgc2xhc2guXG4gIC8vIGhvd2V2ZXIsIGlmIGl0IGVuZHMgaW4gYW55dGhpbmcgZWxzZSBub24tc2xhc2h5LFxuICAvLyB0aGVuIGl0IG11c3QgTk9UIGdldCBhIHRyYWlsaW5nIHNsYXNoLlxuICB2YXIgbGFzdCA9IHNyY1BhdGguc2xpY2UoLTEpWzBdO1xuICB2YXIgaGFzVHJhaWxpbmdTbGFzaCA9IChcbiAgICAocmVzdWx0Lmhvc3QgfHwgcmVsYXRpdmUuaG9zdCB8fCBzcmNQYXRoLmxlbmd0aCA+IDEpICYmXG4gICAgKGxhc3QgPT09ICcuJyB8fCBsYXN0ID09PSAnLi4nKSB8fCBsYXN0ID09PSAnJyk7XG5cbiAgLy8gc3RyaXAgc2luZ2xlIGRvdHMsIHJlc29sdmUgZG91YmxlIGRvdHMgdG8gcGFyZW50IGRpclxuICAvLyBpZiB0aGUgcGF0aCB0cmllcyB0byBnbyBhYm92ZSB0aGUgcm9vdCwgYHVwYCBlbmRzIHVwID4gMFxuICB2YXIgdXAgPSAwO1xuICBmb3IgKHZhciBpID0gc3JjUGF0aC5sZW5ndGg7IGkgPj0gMDsgaS0tKSB7XG4gICAgbGFzdCA9IHNyY1BhdGhbaV07XG4gICAgaWYgKGxhc3QgPT09ICcuJykge1xuICAgICAgc3JjUGF0aC5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCkge1xuICAgICAgc3JjUGF0aC5zcGxpY2UoaSwgMSk7XG4gICAgICB1cC0tO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBwYXRoIGlzIGFsbG93ZWQgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIHJlc3RvcmUgbGVhZGluZyAuLnNcbiAgaWYgKCFtdXN0RW5kQWJzICYmICFyZW1vdmVBbGxEb3RzKSB7XG4gICAgZm9yICg7IHVwLS07IHVwKSB7XG4gICAgICBzcmNQYXRoLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG11c3RFbmRBYnMgJiYgc3JjUGF0aFswXSAhPT0gJycgJiZcbiAgICAoIXNyY1BhdGhbMF0gfHwgc3JjUGF0aFswXS5jaGFyQXQoMCkgIT09ICcvJykpIHtcbiAgICBzcmNQYXRoLnVuc2hpZnQoJycpO1xuICB9XG5cbiAgaWYgKGhhc1RyYWlsaW5nU2xhc2ggJiYgKHNyY1BhdGguam9pbignLycpLnN1YnN0cigtMSkgIT09ICcvJykpIHtcbiAgICBzcmNQYXRoLnB1c2goJycpO1xuICB9XG5cbiAgdmFyIGlzQWJzb2x1dGUgPSBzcmNQYXRoWzBdID09PSAnJyB8fFxuICAgIChzcmNQYXRoWzBdICYmIHNyY1BhdGhbMF0uY2hhckF0KDApID09PSAnLycpO1xuXG4gIC8vIHB1dCB0aGUgaG9zdCBiYWNrXG4gIGlmIChwc3ljaG90aWMpIHtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IGlzQWJzb2x1dGUgPyAnJyA6XG4gICAgICBzcmNQYXRoLmxlbmd0aCA/IHNyY1BhdGguc2hpZnQoKSA6ICcnO1xuICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAvL3RoaXMgZXNwZWNpYWxseSBoYXBwZW5zIGluIGNhc2VzIGxpa2VcbiAgICAvL3VybC5yZXNvbHZlT2JqZWN0KCdtYWlsdG86bG9jYWwxQGRvbWFpbjEnLCAnbG9jYWwyQGRvbWFpbjInKVxuICAgIGF1dGhJbkhvc3QgPSByZXN1bHQuaG9zdCAmJiByZXN1bHQuaG9zdC5pbmRleE9mKCdAJykgPiAwID9cbiAgICAgIHJlc3VsdC5ob3N0LnNwbGl0KCdAJykgOiBmYWxzZTtcbiAgICBpZiAoYXV0aEluSG9zdCkge1xuICAgICAgcmVzdWx0LmF1dGggPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZSA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICB9XG4gIH1cblxuICBtdXN0RW5kQWJzID0gbXVzdEVuZEFicyB8fCAocmVzdWx0Lmhvc3QgJiYgc3JjUGF0aC5sZW5ndGgpO1xuXG4gIGlmIChtdXN0RW5kQWJzICYmICFpc0Fic29sdXRlKSB7XG4gICAgc3JjUGF0aC51bnNoaWZ0KCcnKTtcbiAgfVxuXG4gIGlmICghc3JjUGF0aC5sZW5ndGgpIHtcbiAgICByZXN1bHQucGF0aG5hbWUgPSBudWxsO1xuICAgIHJlc3VsdC5wYXRoID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQucGF0aG5hbWUgPSBzcmNQYXRoLmpvaW4oJy8nKTtcbiAgfVxuXG4gIC8vdG8gc3VwcG9ydCByZXF1ZXN0Lmh0dHBcbiAgaWYgKCFpc051bGwocmVzdWx0LnBhdGhuYW1lKSB8fCAhaXNOdWxsKHJlc3VsdC5zZWFyY2gpKSB7XG4gICAgcmVzdWx0LnBhdGggPSAocmVzdWx0LnBhdGhuYW1lID8gcmVzdWx0LnBhdGhuYW1lIDogJycpICtcbiAgICAgIChyZXN1bHQuc2VhcmNoID8gcmVzdWx0LnNlYXJjaCA6ICcnKTtcbiAgfVxuICByZXN1bHQuYXV0aCA9IHJlbGF0aXZlLmF1dGggfHwgcmVzdWx0LmF1dGg7XG4gIHJlc3VsdC5zbGFzaGVzID0gcmVzdWx0LnNsYXNoZXMgfHwgcmVsYXRpdmUuc2xhc2hlcztcbiAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5VcmwucHJvdG90eXBlLnBhcnNlSG9zdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcGFyc2VIb3N0KHRoaXMpO1xufTtcblxuZnVuY3Rpb24gcGFyc2VIb3N0KHNlbGYpIHtcbiAgdmFyIGhvc3QgPSBzZWxmLmhvc3Q7XG4gIHZhciBwb3J0ID0gcG9ydFBhdHRlcm4uZXhlYyhob3N0KTtcbiAgaWYgKHBvcnQpIHtcbiAgICBwb3J0ID0gcG9ydFswXTtcbiAgICBpZiAocG9ydCAhPT0gJzonKSB7XG4gICAgICBzZWxmLnBvcnQgPSBwb3J0LnN1YnN0cigxKTtcbiAgICB9XG4gICAgaG9zdCA9IGhvc3Quc3Vic3RyKDAsIGhvc3QubGVuZ3RoIC0gcG9ydC5sZW5ndGgpO1xuICB9XG4gIGlmIChob3N0KSBzZWxmLmhvc3RuYW1lID0gaG9zdDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIF9zbGljZWRUb0FycmF5ID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBzbGljZUl0ZXJhdG9yKGFyciwgaSkgeyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9IHJldHVybiBmdW5jdGlvbiAoYXJyLCBpKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgcmV0dXJuIGFycjsgfSBlbHNlIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGFycikpIHsgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTsgfSBlbHNlIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH0gfTsgfSgpO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJ3VybCcpLFxuICAgIGZvcm1hdCA9IF9yZXF1aXJlLmZvcm1hdCxcbiAgICBwYXJzZSA9IF9yZXF1aXJlLnBhcnNlLFxuICAgIFVSTFNlYXJjaFBhcmFtcyA9IF9yZXF1aXJlLlVSTFNlYXJjaFBhcmFtcztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwbHVnaW4ob3B0cykge1xuICBpZiAoKHR5cGVvZiBvcHRzID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvcHRzKSkgIT09ICdvYmplY3QnIHx8ICFPYmplY3Qua2V5cyhvcHRzKS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbWFyay1pZnJhbWVzIG5lZWRzIHRvIGJlIHBhc3NlZCBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGFzIG9wdGlvbicpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGV0ZWN0UHJvdmlkZXIodXJsKSB7XG4gICAgdmFyIGhvc3RuYW1lID0gcGFyc2UodXJsKS5ob3N0bmFtZTtcbiAgICByZXR1cm4gb3B0c1tob3N0bmFtZV07XG4gIH1cblxuICBmdW5jdGlvbiBibG9ja1Rva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoJyEoaHR0cCcpKSByZXR1cm47XG5cbiAgICB2YXIgZWF0ZW5WYWx1ZSA9ICcnO1xuICAgIHZhciB1cmwgPSAnJztcbiAgICB2YXIgc3BlY2lhbENoYXJzID0gWychJywgJygnLCAnKSddO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoICYmIHZhbHVlW2kgLSAxXSAhPT0gJyknOyBpKyspIHtcbiAgICAgIGVhdGVuVmFsdWUgKz0gdmFsdWVbaV07XG4gICAgICBpZiAoIXNwZWNpYWxDaGFycy5pbmNsdWRlcyh2YWx1ZVtpXSkpIHtcbiAgICAgICAgdXJsICs9IHZhbHVlW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICBpZiAoc2lsZW50KSByZXR1cm4gdHJ1ZTtcblxuICAgIHZhciBwcm92aWRlciA9IGRldGVjdFByb3ZpZGVyKHVybCk7XG4gICAgaWYgKCFwcm92aWRlciB8fCBwcm92aWRlci5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCBwcm92aWRlci5tYXRjaCAmJiBwcm92aWRlci5tYXRjaCBpbnN0YW5jZW9mIFJlZ0V4cCAmJiAhcHJvdmlkZXIubWF0Y2gudGVzdCh1cmwpKSB7XG4gICAgICByZXR1cm4gZWF0KGVhdGVuVmFsdWUpKHtcbiAgICAgICAgdHlwZTogJ3BhcmFncmFwaCcsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICB2YWx1ZTogZWF0ZW5WYWx1ZVxuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGZpbmFsVXJsID0gY29tcHV0ZUZpbmFsVXJsKHByb3ZpZGVyLCB1cmwpO1xuICAgIHZhciB0aHVtYm5haWwgPSBjb21wdXRlVGh1bWJuYWlsKHByb3ZpZGVyLCBmaW5hbFVybCk7XG4gICAgZWF0KGVhdGVuVmFsdWUpKHtcbiAgICAgIHR5cGU6ICdpZnJhbWUnLFxuICAgICAgc3JjOiB1cmwsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGhOYW1lOiBwcm92aWRlci50YWcsXG4gICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgc3JjOiBmaW5hbFVybCxcbiAgICAgICAgICB3aWR0aDogcHJvdmlkZXIud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBwcm92aWRlci5oZWlnaHQsXG4gICAgICAgICAgYWxsb3dmdWxsc2NyZWVuOiB0cnVlLFxuICAgICAgICAgIGZyYW1lYm9yZGVyOiAnMCdcbiAgICAgICAgfSxcbiAgICAgICAgdGh1bWJuYWlsOiB0aHVtYm5haWxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBQYXJzZXIgPSB0aGlzLlBhcnNlcjtcblxuICAvLyBJbmplY3QgYmxvY2tUb2tlbml6ZXJcbiAgdmFyIGJsb2NrVG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tUb2tlbml6ZXJzO1xuICB2YXIgYmxvY2tNZXRob2RzID0gUGFyc2VyLnByb3RvdHlwZS5ibG9ja01ldGhvZHM7XG4gIGJsb2NrVG9rZW5pemVycy5pZnJhbWVzID0gYmxvY2tUb2tlbml6ZXI7XG4gIGJsb2NrTWV0aG9kcy5zcGxpY2UoYmxvY2tNZXRob2RzLmluZGV4T2YoJ2Jsb2NrcXVvdGUnKSArIDEsIDAsICdpZnJhbWVzJyk7XG5cbiAgdmFyIENvbXBpbGVyID0gdGhpcy5Db21waWxlcjtcbiAgaWYgKENvbXBpbGVyKSB7XG4gICAgdmFyIHZpc2l0b3JzID0gQ29tcGlsZXIucHJvdG90eXBlLnZpc2l0b3JzO1xuICAgIGlmICghdmlzaXRvcnMpIHJldHVybjtcbiAgICB2aXNpdG9ycy5pZnJhbWUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuICchKCcgKyBub2RlLnNyYyArICcpJztcbiAgICB9O1xuICB9XG59O1xuXG5mdW5jdGlvbiBjb21wdXRlRmluYWxVcmwocHJvdmlkZXIsIHVybCkge1xuICB2YXIgZmluYWxVcmwgPSB1cmw7XG4gIHZhciBwYXJzZWQgPSBwYXJzZShmaW5hbFVybCk7XG5cbiAgaWYgKHByb3ZpZGVyLmRyb3BwZWRRdWVyeVBhcmFtZXRlcnMgJiYgcGFyc2VkLnNlYXJjaCkge1xuICAgIHZhciBzZWFyY2ggPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcnNlZC5zZWFyY2gpO1xuICAgIHByb3ZpZGVyLmRyb3BwZWRRdWVyeVBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbiAoaWdub3JlZCkge1xuICAgICAgcmV0dXJuIHNlYXJjaC5kZWxldGUoaWdub3JlZCk7XG4gICAgfSk7XG4gICAgcGFyc2VkLnNlYXJjaCA9IHNlYXJjaC50b1N0cmluZygpO1xuICAgIGZpbmFsVXJsID0gZm9ybWF0KHBhcnNlZCk7XG4gIH1cblxuICBpZiAocHJvdmlkZXIucmVwbGFjZSAmJiBwcm92aWRlci5yZXBsYWNlLmxlbmd0aCkge1xuICAgIHByb3ZpZGVyLnJlcGxhY2UuZm9yRWFjaChmdW5jdGlvbiAocnVsZSkge1xuICAgICAgdmFyIF9ydWxlID0gX3NsaWNlZFRvQXJyYXkocnVsZSwgMiksXG4gICAgICAgICAgZnJvbSA9IF9ydWxlWzBdLFxuICAgICAgICAgIHRvID0gX3J1bGVbMV07XG5cbiAgICAgIGlmIChmcm9tICYmIHRvKSBmaW5hbFVybCA9IGZpbmFsVXJsLnJlcGxhY2UoZnJvbSwgdG8pO1xuICAgICAgcGFyc2VkID0gcGFyc2UoZmluYWxVcmwpO1xuICAgIH0pO1xuICAgIGZpbmFsVXJsID0gZm9ybWF0KHBhcnNlZCk7XG4gIH1cblxuICBpZiAocHJvdmlkZXIucmVtb3ZlRmlsZU5hbWUpIHtcbiAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXJzZWQucGF0aG5hbWUuc3Vic3RyaW5nKDAsIHBhcnNlZC5wYXRobmFtZS5sYXN0SW5kZXhPZignLycpKTtcbiAgICBmaW5hbFVybCA9IGZvcm1hdChwYXJzZWQpO1xuICB9XG5cbiAgaWYgKHByb3ZpZGVyLnJlbW92ZUFmdGVyICYmIGZpbmFsVXJsLmluY2x1ZGVzKHByb3ZpZGVyLnJlbW92ZUFmdGVyKSkge1xuICAgIGZpbmFsVXJsID0gZmluYWxVcmwuc3Vic3RyaW5nKDAsIGZpbmFsVXJsLmluZGV4T2YocHJvdmlkZXIucmVtb3ZlQWZ0ZXIpKTtcbiAgfVxuXG4gIGlmIChwcm92aWRlci5hcHBlbmQpIHtcbiAgICBmaW5hbFVybCArPSBwcm92aWRlci5hcHBlbmQ7XG4gIH1cblxuICByZXR1cm4gZmluYWxVcmw7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVUaHVtYm5haWwocHJvdmlkZXIsIHVybCkge1xuICB2YXIgdGh1bWJuYWlsVVJMID0gJyc7XG4gIHZhciB0aHVtYm5haWxDb25maWcgPSBwcm92aWRlci50aHVtYm5haWw7XG4gIGlmICh0aHVtYm5haWxDb25maWcgJiYgdGh1bWJuYWlsQ29uZmlnLmZvcm1hdCkge1xuICAgIHRodW1ibmFpbFVSTCA9IHRodW1ibmFpbENvbmZpZy5mb3JtYXQ7XG4gICAgT2JqZWN0LmtleXModGh1bWJuYWlsQ29uZmlnKS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIGtleSAhPT0gJ2Zvcm1hdCc7XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgc2VhcmNoID0gbmV3IFJlZ0V4cCgneycgKyBrZXkgKyAnfScsICdnJyk7XG4gICAgICB2YXIgcmVwbGFjZSA9IG5ldyBSZWdFeHAodGh1bWJuYWlsQ29uZmlnW2tleV0pLmV4ZWModXJsKTtcbiAgICAgIGlmIChyZXBsYWNlKSB0aHVtYm5haWxVUkwgPSB0aHVtYm5haWxVUkwucmVwbGFjZShzZWFyY2gsIHJlcGxhY2VbMV0pO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB0aHVtYm5haWxVUkw7XG59IiwiJ3VzZS1zdHJpY3QnO1xuXG4vKiBUT0RPIDogU2VuZCB0aGUgcmVzdWx0IG9mIGd1aWRlIDpcbiAgY29uc3QgZ3VpZGUgPSByZXF1aXJlKCdyZW1hcmstcHJlc2V0LWxpbnQtbWFya2Rvd24tc3R5bGUtZ3VpZGUnKTtcbiovXG5cbmNvbnN0IGh0bWwgPSByZXF1aXJlKCdyZW1hcmstcmVoeXBlJyk7XG5jb25zdCBrYmQgPSByZXF1aXJlKCdyZW1hcmsta2JkJyk7XG5jb25zdCBtYXRoID0gcmVxdWlyZSgncmVtYXJrLW1hdGgnKTtcbmNvbnN0IGhpZ2hsaWdodCA9IHJlcXVpcmUoJ3JlbWFyay1oaWdobGlnaHQuanMnKTtcbmNvbnN0IHNiID0gcmVxdWlyZSgncmVtYXJrLXNwZWNpYWwtYm94Jyk7XG5jb25zdCBtdWx0aUNob2ljZSA9IHJlcXVpcmUoJ3JlbWFyay1tdWx0aXBsZS1jaG9pY2UnKTtcbmNvbnN0IGxpbmVJbnB1dCA9IHJlcXVpcmUoJ3JlbWFyay1saW5lLWlucHV0Jyk7XG5jb25zdCBzZWxlY3QgPSByZXF1aXJlKCdyZW1hcmstc2VsZWN0Jyk7XG5jb25zdCB0ZXh0SW5wdXQgPSByZXF1aXJlKCdyZW1hcmstdGV4dC1pbnB1dCcpO1xuY29uc3QgcmF3ID0gcmVxdWlyZSgncmVoeXBlLXJhdycpO1xuY29uc3QgcmVoeXBlS2F0ZXggPSByZXF1aXJlKCdyZWh5cGUta2F0ZXgnKTtcbmNvbnN0IHJlaHlwZVN0cmluZ2lmeSA9IHJlcXVpcmUoJ3JlaHlwZS1zdHJpbmdpZnknKTtcbmNvbnN0IHVuaWZpZWQgPSByZXF1aXJlKCd1bmlmaWVkJyk7XG5jb25zdCByZW1hcmsgPSByZXF1aXJlKCdyZW1hcmstcGFyc2UnKTtcbmNvbnN0IGN1c3RvbUJsb2NrcyA9IHJlcXVpcmUoJ3JlbWFyay1jdXN0b20tYmxvY2tzJyk7XG5jb25zdCBpZnJhbWVzID0gcmVxdWlyZSgncmVtYXJrLWlmcmFtZXMnKTtcblxuZnVuY3Rpb24gdG9IVE1MKGRhdGEsIGZuYykge1xuICB1bmlmaWVkKClcbiAgICAudXNlKHJlbWFyaylcbiAgICAudXNlKGxpbmVJbnB1dClcbiAgICAudXNlKHRleHRJbnB1dClcbiAgICAudXNlKHNlbGVjdClcbiAgICAudXNlKG11bHRpQ2hvaWNlKVxuICAgIC51c2UobWF0aClcbiAgICAudXNlKGtiZClcbiAgICAudXNlKHNiKVxuICAgIC51c2UoY3VzdG9tQmxvY2tzLCB7XG4gICAgICBpbmZvcm1hdGlvbjoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggaW5mb3JtYXRpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBjb21tZW50OiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBjb21tZW50JyxcbiAgICAgICAgdGl0bGU6ICdvcHRpb25hbCcsXG4gICAgICB9LFxuICAgICAgYXR0ZW50aW9uOiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBhdHRlbnRpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBxdWVzdGlvbjoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggcXVlc3Rpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBnb29kOiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBnb29kJyxcbiAgICAgIH0sXG4gICAgICBzZWNyZXQ6IHtcbiAgICAgICAgY2xhc3NlczogJ3NwZWNpYWwtYm94IHNlY3JldCcsXG4gICAgICAgIHRpdGxlOiAnb3B0aW9uYWwnLFxuICAgICAgfSxcbiAgICAgIGJhZDoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggYmFkJyxcbiAgICAgIH19KVxuICAgIC51c2UoaGlnaGxpZ2h0KVxuICAgIC51c2UoaWZyYW1lcywge1xuICAgICAgLy8gdGhpcyBrZXkgY29ycmVzcG9uZHMgdG8gdGhlIGhvc3RuYW1lOiAhKGh0dHA6Ly9ob3N0bmFtZS9mb28pXG4gICAgICAvLyB0aGUgY29uZmlnIGFzc29jaWF0ZWQgdG8gdGhpcyBob3N0bmFtZSB3aWxsIGFwcGx5IHRvIGFueSBpZnJhbWVcbiAgICAgIC8vIHdpdGggYSBtYXRjaGluZyBob3N0bmFtZVxuICAgICAgJ3d3dy55b3V0dWJlLmNvbSc6IHtcbiAgICAgICAgdGFnOiAnSUZSQU1FJyxcbiAgICAgICAgd2lkdGg6IDU2MCxcbiAgICAgICAgaGVpZ2h0OiAzMTUsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgcmVwbGFjZTogW1xuICAgICAgICAgIFsnd2F0Y2g/dj0nLCAnZW1iZWQvJ10sXG4gICAgICAgICAgWydodHRwOi8vJywgJ2h0dHBzOi8vJ10sXG4gICAgICAgIF0sXG4gICAgICAgIHRodW1ibmFpbDoge1xuICAgICAgICAgIGZvcm1hdDogJ2h0dHA6Ly9pbWcueW91dHViZS5jb20vdmkve2lkfS8wLmpwZycsXG4gICAgICAgICAgaWQ6ICcuKy8oLispJCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlQWZ0ZXI6ICcmJ1xuICAgICAgfVxuICAgIH0pXG4gICAgLnVzZShodG1sLCB7YWxsb3dEYW5nZXJvdXNIVE1MOiB0cnVlfSlcbiAgICAudXNlKHJlaHlwZUthdGV4KVxuICAgIC51c2UocmF3KVxuICAgIC51c2UocmVoeXBlU3RyaW5naWZ5KVxuXG4gICAgLnByb2Nlc3MoZGF0YSwgZm5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0hUTUw7XG4iXSwibmFtZXMiOlsidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsInByb3RvdHlwZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BJc0VudW1lcmFibGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImFzc2lnbiIsInRlc3QxIiwiU3RyaW5nIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInRlc3QyIiwiZnJvbUNoYXJDb2RlIiwibWFwIiwibiIsImpvaW4iLCJ0ZXN0MyIsInNwbGl0IiwiZm9yRWFjaCIsImxldHRlciIsImtleXMiLCJlcnIiLCJzaG91bGRVc2VOYXRpdmUiLCJmcm9tIiwic3ltYm9scyIsInRvIiwidmFsIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwidG9PYmplY3QiLCJzIiwidHlwZSIsInByb3BzIiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZHJlbiIsImlzIiwidGVzdCIsIm5vZGUiLCJpbmRleCIsInBhcmVudCIsImNvbnRleHQiLCJoYXNQYXJlbnQiLCJoYXNJbmRleCIsImNoZWNrIiwiY29udmVydCIsIkluZmluaXR5IiwiRXJyb3IiLCJCb29sZWFuIiwidHlwZUZhY3RvcnkiLCJvayIsInRlc3RzIiwiY2hlY2tzIiwicmVzdWx0cyIsImNvbnZlcnRBbGwiLCJhcHBseSIsInRoaXMiLCJ2aXNpdCIsIkNPTlRJTlVFIiwiU0tJUCIsIkVYSVQiLCJ0cmVlIiwidmlzaXRvciIsInJldmVyc2UiLCJvbmUiLCJyZXN1bHQiLCJjaGlsZCIsInN0ZXAiLCJhbGwiLCJwb3NpdGlvbiIsImV4cG9ydHMiLCJwb3NpdGlvbkZhY3RvcnkiLCJwb3MiLCJsaW5lIiwiY29sdW1uIiwib2Zmc2V0IiwiaXNOYU4iLCJzdGFydCIsImVuZCIsIm9wdGlvbmFsIiwib3B0aW9ucyIsImNhY2hlIiwiaWRlbnRpZmllciIsImlkIiwibm9ybWFsaXNlIiwib3duIiwiZ2V0dGVyRmFjdG9yeSIsImNvbW1vbm1hcmsiLCJkZWZpbml0aW9uIiwiZ2F0aGVyIiwidG9VcHBlckNhc2UiLCJtb2R1bGUiLCJzdHIiLCJyZXBsYWNlIiwiaCIsImhlYWQiLCJub2RlcyIsInZhbHVlcyIsInRyaW0iLCJsZWZ0IiwiY29uY2F0IiwiZm4iLCJoYW5kbGVycyIsImRhdGEiLCJ0ZXh0IiwiYXVnbWVudCIsInUiLCJsb29zZSIsInB1c2giLCJuYW1lIiwib3JkZXJlZCIsIndyYXAiLCJkZWYiLCJmb290bm90ZXMiLCJsaXN0SXRlbXMiLCJoUHJvcGVydGllcyIsInVybCIsImNsYXNzTmFtZSIsInRoZW1hdGljQnJlYWsiLCJsaXN0IiwicmVzIiwibnVtIiwibWF4Iiwic3Vic3RyIiwic2l6ZSIsImNvZGUiLCJhZGQiLCJzdHJpbmciLCJ0YWJTaXplIiwiY2hhckNvZGVBdCIsIlRBQiIsInNsaWNlIiwicmVwZWF0IiwiTEYiLCJDUiIsImRldGFiIiwibGFuZyIsIm1hdGNoIiwiaHJlZiIsImlkZW50aWZpZXJzIiwiaW5kZXhPZiIsImZvb3Rub3RlUmVmZXJlbmNlIiwiZGVwdGgiLCJkYW5nZXJvdXMiLCJlbmNvZGVDYWNoZSIsImVuY29kZSIsImV4Y2x1ZGUiLCJrZWVwRXNjYXBlZCIsImwiLCJuZXh0Q29kZSIsImRlZmF1bHRDaGFycyIsImNoIiwidG9TdHJpbmciLCJnZXRFbmNvZGVDYWNoZSIsImVuY29kZVVSSUNvbXBvbmVudCIsImNvbXBvbmVudENoYXJzIiwic3VidHlwZSIsInJlZmVyZW5jZVR5cGUiLCJhbHQiLCJ3cyIsIm5ld2xpbmUiLCJibG9ja3F1b3RlIiwicmVxdWlyZSQkMCIsImJyZWFrIiwicmVxdWlyZSQkMSIsInJlcXVpcmUkJDIiLCJkZWxldGUiLCJyZXF1aXJlJCQzIiwiZW1waGFzaXMiLCJyZXF1aXJlJCQ0IiwicmVxdWlyZSQkNSIsImZvb3Rub3RlIiwicmVxdWlyZSQkNiIsImhlYWRpbmciLCJyZXF1aXJlJCQ3IiwiaHRtbCIsInJlcXVpcmUkJDgiLCJpbWFnZVJlZmVyZW5jZSIsInNyYyIsIm5vcm1hbGl6ZSIsInRpdGxlIiwiZmFpbHNhZmUiLCJpbWFnZSIsImlubGluZUNvZGUiLCJjb2xsYXBzZSIsImxpbmtSZWZlcmVuY2UiLCJsaW5rIiwibGlzdEl0ZW0iLCJjb250YWluZXIiLCJzaW5nbGUiLCJjaGVja2VkIiwidW5zaGlmdCIsImRpc2FibGVkIiwicmVxdWlyZSQkMTUiLCJwYXJhZ3JhcGgiLCJyb290Iiwic3Ryb25nIiwidGFibGUiLCJyb3ciLCJvdXQiLCJjZWxsIiwicm93cyIsImFsaWduIiwiYWxpZ25MZW5ndGgiLCJ0cmltTGluZXMiLCJyZXF1aXJlJCQyMSIsInRvbWwiLCJpZ25vcmUiLCJ5YW1sIiwiZm9vdG5vdGVEZWZpbml0aW9uIiwic2V0dGluZ3MiLCJhbGxvd0Rhbmdlcm91c0hUTUwiLCJkZWZpbml0aW9ucyIsInh0ZW5kIiwicmlnaHQiLCJjdHgiLCJoTmFtZSIsInRhZ05hbWUiLCJwcm9wZXJ0aWVzIiwiaENoaWxkcmVuIiwiZ2VuZXJhdGVkIiwiZmFjdG9yeSIsImZvb3RlciIsImRlc3RpbmF0aW9uIiwicHJvY2VzcyIsImZpbGUiLCJuZXh0IiwicnVuIiwibWRhc3QyaGFzdCIsImJyaWRnZSIsIm11dGF0ZSIsImNoYXJhY3RlciIsInJlIiwiZnJvbUNvZGUiLCJjaGFyQXQiLCJDX1BJUEUiLCJET1VCTEUiLCJsb2NhdG9yIiwiZnJvbUluZGV4IiwiaW5saW5lVG9rZW5pemVyIiwiZWF0Iiwic2lsZW50IiwiZ2ZtIiwic3RhcnRzV2l0aCIsIndoaXRlc3BhY2UiLCJwcmV2aW91cyIsInByZWNlZGluZyIsInN1YnZhbHVlIiwibm93IiwidG9rZW5pemVJbmxpbmUiLCJQYXJzZXIiLCJpbmxpbmVUb2tlbml6ZXJzIiwiaW5saW5lTWV0aG9kcyIsImtiZCIsInNwbGljZSIsIkNvbXBpbGVyIiwidmlzaXRvcnMiLCJFU0NBUEVEX0lOTElORV9NQVRIIiwiSU5MSU5FX01BVEgiLCJJTkxJTkVfTUFUSF9ET1VCTEUiLCJDX05FV0xJTkUiLCJDX1RBQiIsIkNfU1BBQ0UiLCJDX0RPTExBUiIsIk1JTl9GRU5DRV9DT1VOVCIsIkNPREVfSU5ERU5UX0NPVU5UIiwib3B0cyIsImJsb2NrVG9rZW5pemVycyIsImJsb2NrTWV0aG9kcyIsIm1hdGgiLCJmZW5jZUNvdW50IiwibWFya2VyIiwicXVldWUiLCJjb250ZW50IiwiZXhkZW50ZWRDb250ZW50IiwiY2xvc2luZyIsImV4ZGVudGVkQ2xvc2luZyIsImluZGVudCIsInRyaW1tZWRDb250ZW50IiwiaW50ZXJydXB0UGFyYWdyYXBoIiwiaW50ZXJydXB0TGlzdCIsImludGVycnVwdEJsb2NrcXVvdGUiLCJpc0RvdWJsZSIsImV4ZWMiLCJlc2NhcGVkIiwiaW5jbHVkZXMiLCJ0b0VhdCIsImlubGluZU1hdGhEb3VibGUiLCJpbmxpbmVNYXRoIiwiaGxqcyIsIkFycmF5UHJvdG8iLCJvYmplY3RLZXlzIiwibGFuZ3VhZ2VzIiwiYWxpYXNlcyIsIm5vSGlnaGxpZ2h0UmUiLCJsYW5ndWFnZVByZWZpeFJlIiwiZml4TWFya3VwUmUiLCJzcGFuRW5kVGFnIiwiY2xhc3NQcmVmaXgiLCJ0YWJSZXBsYWNlIiwidXNlQlIiLCJlc2NhcGUiLCJ0YWciLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwidGVzdFJlIiwibGV4ZW1lIiwiaXNOb3RIaWdobGlnaHRlZCIsImxhbmd1YWdlIiwiaW5oZXJpdCIsIm9iamVjdHMiLCJvYmoiLCJub2RlU3RyZWFtIiwiX25vZGVTdHJlYW0iLCJmaXJzdENoaWxkIiwibmV4dFNpYmxpbmciLCJub2RlVHlwZSIsIm5vZGVWYWx1ZSIsImV2ZW50IiwiY29tcGlsZUxhbmd1YWdlIiwicmVTdHIiLCJsYW5nUmUiLCJnbG9iYWwiLCJSZWdFeHAiLCJjYXNlX2luc2Vuc2l0aXZlIiwiY29tcGlsZU1vZGUiLCJtb2RlIiwiY29tcGlsZWQiLCJrZXl3b3JkcyIsImJlZ2luS2V5d29yZHMiLCJjb21waWxlZF9rZXl3b3JkcyIsImZsYXR0ZW4iLCJrdyIsInBhaXIiLCJOdW1iZXIiLCJsZXhlbWVzUmUiLCJsZXhlbWVzIiwiYmVnaW4iLCJiZWdpblJlIiwiZW5kc1dpdGhQYXJlbnQiLCJlbmRSZSIsInRlcm1pbmF0b3JfZW5kIiwiaWxsZWdhbCIsImlsbGVnYWxSZSIsInJlbGV2YW5jZSIsImNvbnRhaW5zIiwiYyIsInZhcmlhbnRzIiwiY2FjaGVkX3ZhcmlhbnRzIiwidmFyaWFudCIsImV4cGFuZF9tb2RlIiwic3RhcnRzIiwidGVybWluYXRvcnMiLCJmaWx0ZXIiLCJoaWdobGlnaHQiLCJpZ25vcmVfaWxsZWdhbHMiLCJjb250aW51YXRpb24iLCJrZXl3b3JkTWF0Y2giLCJtYXRjaF9zdHIiLCJidWlsZFNwYW4iLCJjbGFzc25hbWUiLCJpbnNpZGVTcGFuIiwibGVhdmVPcGVuIiwibm9QcmVmaXgiLCJvcGVuU3BhbiIsImNsb3NlU3BhbiIsInByb2Nlc3NCdWZmZXIiLCJ0b3AiLCJzdWJMYW5ndWFnZSIsImV4cGxpY2l0IiwibW9kZV9idWZmZXIiLCJjb250aW51YXRpb25zIiwiaGlnaGxpZ2h0QXV0byIsInByb2Nlc3NTdWJMYW5ndWFnZSIsImtleXdvcmRfbWF0Y2giLCJsYXN0X2luZGV4IiwibGFzdEluZGV4Iiwic3Vic3RyaW5nIiwicHJvY2Vzc0tleXdvcmRzIiwic3RhcnROZXdNb2RlIiwiY3JlYXRlIiwicHJvY2Vzc0xleGVtZSIsImJ1ZmZlciIsIm5ld19tb2RlIiwic3ViTW9kZSIsInNraXAiLCJleGNsdWRlQmVnaW4iLCJyZXR1cm5CZWdpbiIsImVuZF9tb2RlIiwiZW5kT2ZNb2RlIiwiZW5kc1BhcmVudCIsIm9yaWdpbiIsInJldHVybkVuZCIsImV4Y2x1ZGVFbmQiLCJpc0lsbGVnYWwiLCJnZXRMYW5ndWFnZSIsImN1cnJlbnQiLCJjb3VudCIsImUiLCJtZXNzYWdlIiwibGFuZ3VhZ2VTdWJzZXQiLCJzZWNvbmRfYmVzdCIsImZpeE1hcmt1cCIsInAxIiwiaGlnaGxpZ2h0QmxvY2siLCJibG9jayIsIm9yaWdpbmFsU3RyZWFtIiwicmVzdWx0Tm9kZSIsIl9jbGFzcyIsImNsYXNzZXMiLCJwYXJlbnROb2RlIiwiYmxvY2tMYW5ndWFnZSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudE5TIiwiaW5uZXJIVE1MIiwidGV4dENvbnRlbnQiLCJvcmlnaW5hbCIsImhpZ2hsaWdodGVkIiwicHJvY2Vzc2VkIiwibm9kZVN0YWNrIiwic2VsZWN0U3RyZWFtIiwib3BlbiIsImF0dHJpYnV0ZXMiLCJhIiwiY2xvc2UiLCJyZW5kZXIiLCJzdHJlYW0iLCJwb3AiLCJtZXJnZVN0cmVhbXMiLCJwcmV2Q2xhc3NOYW1lIiwiY3VycmVudExhbmciLCJyZXN1bHRMYW5nIiwiYnVpbGRDbGFzc05hbWUiLCJpbml0SGlnaGxpZ2h0aW5nIiwiY2FsbGVkIiwiYmxvY2tzIiwicXVlcnlTZWxlY3RvckFsbCIsImNvbmZpZ3VyZSIsInVzZXJfb3B0aW9ucyIsImluaXRIaWdobGlnaHRpbmdPbkxvYWQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVnaXN0ZXJMYW5ndWFnZSIsImFsaWFzIiwibGlzdExhbmd1YWdlcyIsIklERU5UX1JFIiwiVU5ERVJTQ09SRV9JREVOVF9SRSIsIk5VTUJFUl9SRSIsIkNfTlVNQkVSX1JFIiwiQklOQVJZX05VTUJFUl9SRSIsIlJFX1NUQVJURVJTX1JFIiwiQkFDS1NMQVNIX0VTQ0FQRSIsIkFQT1NfU1RSSU5HX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsIlBIUkFTQUxfV09SRFNfTU9ERSIsIkNPTU1FTlQiLCJpbmhlcml0cyIsIkNfTElORV9DT01NRU5UX01PREUiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkhBU0hfQ09NTUVOVF9NT0RFIiwiTlVNQkVSX01PREUiLCJDX05VTUJFUl9NT0RFIiwiQklOQVJZX05VTUJFUl9NT0RFIiwiQ1NTX05VTUJFUl9NT0RFIiwiUkVHRVhQX01PREUiLCJUSVRMRV9NT0RFIiwiVU5ERVJTQ09SRV9USVRMRV9NT0RFIiwiTUVUSE9EX0dVQVJEIiwiSGlnaCIsImhpZ2giLCJsb3ciLCJwcmVmaXgiLCJERUZBVUxUX1BSRUZJWCIsImNvcmVIaWdobGlnaHQiLCJhdXRvSGlnaGxpZ2h0Iiwic3ludGF4IiwibGFuZ3VhZ2VOYW1lcyIsIktFWV9JTlNFTlNJVElWRSIsIktFWV9DQUNIRURfVkFSSUFOVFMiLCJFTVBUWSIsIlRfRUxFTUVOVCIsIlRfVEVYVCIsIlRfU1BBTiIsInNlY29uZEJlc3QiLCJzdWJzZXQiLCJjdXJyZW50Q2hpbGRyZW4iLCJzdGFjayIsIm1vZGVCdWZmZXIiLCJjb21waWxlZEtleXdvcmRzIiwidGVybWluYXRvckVuZCIsImV4cGFuZE1vZGUiLCJleGVjTm9vcCIsInBhaXJzIiwiYWRkVGV4dCIsIm5ld01vZGUiLCJlbmRNb2RlIiwiYWRkU2libGluZ3MiLCJidWlsZCIsImtleXdvcmQiLCJzdWJtYXRjaCIsInNpYmxpbmdzIiwic2libGluZyIsInRhaWwiLCJidWlsZFRleHQiLCJjb250ZW50cyIsImV4cHJlc3Npb24iLCJLRVlXT1JEIiwidjdfa2V5d29yZHMiLCJMSVRFUkFMIiwiTlVNQkVSUyIsIlNUUklOR1MiLCJEQVRFIiwiQ09NTUVOVFMiLCJidWlsdF9pbiIsInY3X3N5c3RlbV9jb25zdGFudHMiLCJjbGFzcyIsInY4X3N5c3RlbV9zZXRzX29mX3ZhbHVlcyIsInY4X3NoYXJlZF9vYmplY3QiLCJsaXRlcmFsIiwibWV0YS1rZXl3b3JkIiwidjdfbWV0YV9rZXl3b3JkcyIsInJlZ2V4ZXMiLCJjb21tZW50TW9kZSIsInJ1bGVEZWNsYXJhdGlvbk1vZGUiLCJBUzNfUkVTVF9BUkdfTU9ERSIsIklEX1JFR0VYIiwiVkFSX0RFQ0xTIiwiTlVNQkVSIiwibm9tYXJrdXAiLCJTVFJJTkciLCJQQVJBTVMiLCJDT01NRU5UX01PREVfMSIsIkNQUF9QUklNSVRJVkVfVFlQRVMiLCJQUkVQUk9DRVNTT1IiLCJGVU5DVElPTl9USVRMRSIsIkNQUF9LRVlXT1JEUyIsIkVYUFJFU1NJT05fQ09OVEFJTlMiLCJwcmVwcm9jZXNzb3IiLCJzdHJpbmdzIiwiQ1BQIiwibWV0YSIsIlRBR19JTlRFUk5BTFMiLCJLRVlXT1JEUyIsIkJBQ0tUSUNLX0VTQ0FQRSIsIlZBUklBQkxFIiwiVkFSIiwiUVVPVEVfU1RSSU5HIiwiXyIsIkNPTU1FTlRfTU9ERVMiLCJDSEFSX1NUUklORyIsIlBST0NFRFVSRSIsIk9CSkVDVCIsIlNVQlNUIiwiRVhQUkVTU0lPTlMiLCJTWU1CT0xfUkUiLCJTWU1CT0wiLCJDT0xMRUNUSU9OIiwiSElOVCIsIkhJTlRfQ09MIiwiS0VZIiwiTElTVCIsIkJPRFkiLCJOQU1FIiwiYnVpbHRpbi1uYW1lIiwiREVGQVVMVF9DT05UQUlOUyIsIkpTX0lERU5UX1JFIiwiVElUTEUiLCJDT01NQU5EUyIsIk5VTV9TVUZGSVgiLCJDUllTVEFMX01FVEhPRF9SRSIsIkNSWVNUQUxfS0VZV09SRFMiLCJFWFBBTlNJT04iLCJyZWN1cnNpdmVQYXJlbiIsIkNSWVNUQUxfREVGQVVMVF9DT05UQUlOUyIsIlZFUkJBVElNX1NUUklORyIsIlZFUkJBVElNX1NUUklOR19OT19MRiIsIlNVQlNUX05PX0xGIiwiSU5URVJQT0xBVEVEX1NUUklORyIsIklOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkciLCJJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HX05PX0xGIiwiVFlQRV9JREVOVF9SRSIsIlJVTEUiLCJpbnRlZ2VyX3JlIiwiZXNjYXBlX3NlcXVlbmNlX3JlIiwiRF9JTlRFR0VSX01PREUiLCJEX0ZMT0FUX01PREUiLCJEX0NIQVJBQ1RFUl9NT0RFIiwiRF9TVFJJTkdfTU9ERSIsIkRfTkVTVElOR19DT01NRU5UX01PREUiLCJESVJFQ1RJVkUiLCJDTEFTUyIsIkZVTkNUSU9OIiwiRklMVEVSIiwiRFRTX1JFRkVSRU5DRSIsIkRUU19LRVlXT1JEIiwiRFRTX0xBQkVMIiwiRFRTX0NFTExfUFJPUEVSVFkiLCJEVFNfTk9ERSIsIkVMSVhJUl9JREVOVF9SRSIsIkVMSVhJUl9LRVlXT1JEUyIsIkVMSVhJUl9ERUZBVUxUX0NPTlRBSU5TIiwiQ09OU1RSVUNUT1IiLCJSVUJZX01FVEhPRF9SRSIsIlJVQllfS0VZV09SRFMiLCJZQVJET0NUQUciLCJJUkJfT0JKRUNUIiwiUlVCWV9ERUZBVUxUX0NPTlRBSU5TIiwiSVJCX0RFRkFVTFQiLCJCQVNJQ19BVE9NX1JFIiwiRlVOQ1RJT05fTkFNRV9SRSIsIkVSTEFOR19SRVNFUlZFRCIsIk5BTUVEX0ZVTiIsIkZVTkNUSU9OX0NBTEwiLCJUVVBMRSIsIlZBUjEiLCJWQVIyIiwiUkVDT1JEX0FDQ0VTUyIsIkJMT0NLX1NUQVRFTUVOVFMiLCJCQVNJQ19NT0RFUyIsIk1FVEhPRCIsIlRZUEVQQVJBTSIsImJ1aWx0LWluIiwiU1lNQk9MUyIsIlFTVFIiLCJBU1NJR05NRU5UIiwiREVTQ1RFWFQiLCJQQVJTRV9QQVJBTVMiLCJHQ09ERV9DT0RFIiwiR09fS0VZV09SRFMiLCJCVUlMVF9JTlMiLCJQUkFHTUEiLCJUQUdfSU5OQVJEUyIsIlZFUlNJT04iLCJKQVZBX05VTUJFUl9NT0RFIiwiVEVNUExBVEVfU1RSSU5HIiwiUEFSQU1TX0NPTlRBSU5TIiwiUEFSQU1TQkxPQ0siLCJMSVRFUkFMUyIsIlRZUEVTIiwiVkFMVUVfQ09OVEFJTkVSIiwiQVJSQVkiLCJWQVJJQUJMRV9OQU1FX1JFIiwiREVGQVVMVCIsIklOVEVSUE9MQVRJT04iLCJJTlRFUlBPTEFURURfVkFSSUFCTEUiLCJDT01NQU5EIiwiTUFDUk9DQUxMIiwiTEFCRUwiLCJBTk5PVEFUSU9OX1VTRV9TSVRFIiwiQU5OT1RBVElPTiIsIkxBU1NPX0NMT1NFX1JFIiwiTEFTU09fS0VZV09SRFMiLCJIVE1MX0NPTU1FTlQiLCJMQVNTT19OT1BST0NFU1MiLCJMQVNTT19TVEFSVCIsIkxBU1NPX0RBVEFNRU1CRVIiLCJMQVNTT19DT0RFIiwiTEFTU09fSURFTlRfUkUiLCJJTlRFUlBfSURFTlRfUkUiLCJSVUxFUyIsIlZBTFVFIiwiU1RSSU5HX01PREUiLCJJREVOVF9NT0RFIiwiUEFSRU5TX01PREUiLCJWQUxVRV9XSVRIX1JVTEVTRVRTIiwiTUlYSU5fR1VBUkRfTU9ERSIsIlJVTEVfTU9ERSIsIkFUX1JVTEVfTU9ERSIsIlZBUl9SVUxFX01PREUiLCJTRUxFQ1RPUl9NT0RFIiwiTElTUF9JREVOVF9SRSIsIkxJU1BfU0lNUExFX05VTUJFUl9SRSIsIklERU5UIiwiTUVDIiwiUVVPVEVEIiwiUVVPVEVEX0FUT00iLCJUSVRMRTEiLCJUSVRMRTIiLCJTVUJTVF9TSU1QTEUiLCJMU0xfU1RSSU5HUyIsIkxTTF9OVU1CRVJTIiwiTE9OR19CUkFDS0VUUyIsIkZVTkMiLCJWQVJfQVNTSUciLCJUQVJHRVQiLCJDT01NT05fQ09OVEFJTlMiLCJUUkFOU1BPU0UiLCJzeW1ib2wiLCJBVE9NIiwiUEVSTF9LRVlXT1JEUyIsIlNUUklOR19DT05UQUlOUyIsIlBFUkxfREVGQVVMVF9DT05UQUlOUyIsIk5JWF9LRVlXT1JEUyIsIkFOVElRVU9URSIsIkRFRklORVMiLCJWQVJJQUJMRVMiLCJMQU5HVUFHRVMiLCJMRVhFTUVTIiwiQ0xBU1NfS0VZV09SRFMiLCJTUEVDSUFMX1ZBUlMiLCJGVU5DVElPTlMiLCJPWFlHRU5FX0tFWVdPUkRTIiwiQ1VSTFlfQ09NTUVOVCIsIlBBUkVOX0NPTU1FTlQiLCJDVVJMWV9TVUJDT01NRU5UIiwiU0lOR0xFX1FVT1RFX0NIQVJfTU9ERSIsIlRZUEVfTkFNRSIsIlBSSU1FRF9OQU1FIiwiUFNfQ09NTUVOVCIsIlBBUkVOVEVEIiwiTElORV9DT01NRU5UIiwiQkFDS1RJQ0tfU1RSSU5HIiwiaW5uZXIiLCJQUk9NUFQiLCJRTUxfSURFTlRfUkUiLCJJRF9JRCIsIlFNTF9BVFRSSUJVVEUiLCJRTUxfT0JKRUNUIiwiSURFTlRJRklFUiIsIlBST1BFUlRZIiwiU1RBVEVNRU5UUyIsIkFQT1NfU1RSSU5HIiwiQlVJTFRJTlMiLCJUWVBFIiwiU0NIRU1FX0lERU5UX1JFIiwiU0NIRU1FX1NJTVBMRV9OVU1CRVJfUkUiLCJRVU9URURfSURFTlQiLCJRVU9URURfTElTVCIsIkhFWENPTE9SIiwic21hbGlfaW5zdHJfbG93X3ByaW8iLCJDSEFSIiwiVkFSX0lERU5UX1JFIiwiQ09NTUVOVF9NT0RFIiwic2VsZWN0b3ItdGFnIiwiSEVYX0NPTE9SIiwiVEFHX0VORCIsIlNXSUZUX0tFWVdPUkRTIiwiQkxPQ0tfQ09NTUVOVCIsImtleU5hbWUiLCJrZXlQcmVmaXgiLCJUUElEIiwiVFBMQUJFTCIsIkZVTkNUSU9OX05BTUVTIiwiVEFHUyIsInQiLCJYTF9LRVlXT1JEUyIsIkRPVUJMRV9RVU9URV9URVhUIiwiSU1QT1JUIiwiRlVOQ1RJT05fREVGSU5JVElPTiIsIkNPTlRBSU5TIiwicmVxdWlyZSQkOSIsInJlcXVpcmUkJDEwIiwicmVxdWlyZSQkMTEiLCJyZXF1aXJlJCQxMiIsInJlcXVpcmUkJDEzIiwicmVxdWlyZSQkMTQiLCJyZXF1aXJlJCQxNiIsInJlcXVpcmUkJDE3IiwicmVxdWlyZSQkMTgiLCJyZXF1aXJlJCQxOSIsInJlcXVpcmUkJDIwIiwicmVxdWlyZSQkMjIiLCJyZXF1aXJlJCQyMyIsInJlcXVpcmUkJDI0IiwicmVxdWlyZSQkMjUiLCJyZXF1aXJlJCQyNiIsInJlcXVpcmUkJDI3IiwicmVxdWlyZSQkMjgiLCJyZXF1aXJlJCQyOSIsInJlcXVpcmUkJDMwIiwicmVxdWlyZSQkMzEiLCJyZXF1aXJlJCQzMiIsInJlcXVpcmUkJDMzIiwicmVxdWlyZSQkMzQiLCJyZXF1aXJlJCQzNSIsInJlcXVpcmUkJDM2IiwicmVxdWlyZSQkMzciLCJyZXF1aXJlJCQzOCIsInJlcXVpcmUkJDM5IiwicmVxdWlyZSQkNDAiLCJyZXF1aXJlJCQ0MSIsInJlcXVpcmUkJDQyIiwicmVxdWlyZSQkNDMiLCJyZXF1aXJlJCQ0NCIsInJlcXVpcmUkJDQ1IiwicmVxdWlyZSQkNDYiLCJyZXF1aXJlJCQ0NyIsInJlcXVpcmUkJDQ4IiwicmVxdWlyZSQkNDkiLCJyZXF1aXJlJCQ1MCIsInJlcXVpcmUkJDUxIiwicmVxdWlyZSQkNTIiLCJyZXF1aXJlJCQ1MyIsInJlcXVpcmUkJDU0IiwicmVxdWlyZSQkNTUiLCJyZXF1aXJlJCQ1NiIsInJlcXVpcmUkJDU3IiwicmVxdWlyZSQkNTgiLCJyZXF1aXJlJCQ1OSIsInJlcXVpcmUkJDYwIiwicmVxdWlyZSQkNjEiLCJyZXF1aXJlJCQ2MiIsInJlcXVpcmUkJDYzIiwicmVxdWlyZSQkNjQiLCJyZXF1aXJlJCQ2NSIsInJlcXVpcmUkJDY2IiwicmVxdWlyZSQkNjciLCJyZXF1aXJlJCQ2OCIsInJlcXVpcmUkJDY5IiwicmVxdWlyZSQkNzAiLCJyZXF1aXJlJCQ3MSIsInJlcXVpcmUkJDcyIiwicmVxdWlyZSQkNzMiLCJyZXF1aXJlJCQ3NCIsInJlcXVpcmUkJDc1IiwicmVxdWlyZSQkNzYiLCJyZXF1aXJlJCQ3NyIsInJlcXVpcmUkJDc4IiwicmVxdWlyZSQkNzkiLCJyZXF1aXJlJCQ4MCIsInJlcXVpcmUkJDgxIiwicmVxdWlyZSQkODIiLCJyZXF1aXJlJCQ4MyIsInJlcXVpcmUkJDg0IiwicmVxdWlyZSQkODUiLCJyZXF1aXJlJCQ4NiIsInJlcXVpcmUkJDg3IiwicmVxdWlyZSQkODgiLCJyZXF1aXJlJCQ4OSIsInJlcXVpcmUkJDkwIiwicmVxdWlyZSQkOTEiLCJyZXF1aXJlJCQ5MiIsInJlcXVpcmUkJDkzIiwicmVxdWlyZSQkOTQiLCJyZXF1aXJlJCQ5NSIsInJlcXVpcmUkJDk2IiwicmVxdWlyZSQkOTciLCJyZXF1aXJlJCQ5OCIsInJlcXVpcmUkJDk5IiwicmVxdWlyZSQkMTAwIiwicmVxdWlyZSQkMTAxIiwicmVxdWlyZSQkMTAyIiwicmVxdWlyZSQkMTAzIiwicmVxdWlyZSQkMTA0IiwicmVxdWlyZSQkMTA1IiwicmVxdWlyZSQkMTA2IiwicmVxdWlyZSQkMTA3IiwicmVxdWlyZSQkMTA4IiwicmVxdWlyZSQkMTA5IiwicmVxdWlyZSQkMTEwIiwicmVxdWlyZSQkMTExIiwicmVxdWlyZSQkMTEyIiwicmVxdWlyZSQkMTEzIiwicmVxdWlyZSQkMTE0IiwicmVxdWlyZSQkMTE1IiwicmVxdWlyZSQkMTE2IiwicmVxdWlyZSQkMTE3IiwicmVxdWlyZSQkMTE4IiwicmVxdWlyZSQkMTE5IiwicmVxdWlyZSQkMTIwIiwicmVxdWlyZSQkMTIxIiwicmVxdWlyZSQkMTIyIiwicmVxdWlyZSQkMTIzIiwicmVxdWlyZSQkMTI0IiwicmVxdWlyZSQkMTI1IiwicmVxdWlyZSQkMTI2IiwicmVxdWlyZSQkMTI3IiwicmVxdWlyZSQkMTI4IiwicmVxdWlyZSQkMTI5IiwicmVxdWlyZSQkMTMwIiwicmVxdWlyZSQkMTMxIiwicmVxdWlyZSQkMTMyIiwicmVxdWlyZSQkMTMzIiwicmVxdWlyZSQkMTM0IiwicmVxdWlyZSQkMTM1IiwicmVxdWlyZSQkMTM2IiwicmVxdWlyZSQkMTM3IiwicmVxdWlyZSQkMTM4IiwicmVxdWlyZSQkMTM5IiwicmVxdWlyZSQkMTQwIiwicmVxdWlyZSQkMTQxIiwicmVxdWlyZSQkMTQyIiwicmVxdWlyZSQkMTQzIiwicmVxdWlyZSQkMTQ0IiwicmVxdWlyZSQkMTQ1IiwicmVxdWlyZSQkMTQ2IiwicmVxdWlyZSQkMTQ3IiwicmVxdWlyZSQkMTQ4IiwicmVxdWlyZSQkMTQ5IiwicmVxdWlyZSQkMTUwIiwicmVxdWlyZSQkMTUxIiwicmVxdWlyZSQkMTUyIiwicmVxdWlyZSQkMTUzIiwicmVxdWlyZSQkMTU0IiwicmVxdWlyZSQkMTU1IiwicmVxdWlyZSQkMTU2IiwicmVxdWlyZSQkMTU3IiwicmVxdWlyZSQkMTU4IiwicmVxdWlyZSQkMTU5IiwicmVxdWlyZSQkMTYwIiwicmVxdWlyZSQkMTYxIiwicmVxdWlyZSQkMTYyIiwicmVxdWlyZSQkMTYzIiwicmVxdWlyZSQkMTY0IiwicmVxdWlyZSQkMTY1IiwicmVxdWlyZSQkMTY2IiwicmVxdWlyZSQkMTY3IiwicmVxdWlyZSQkMTY4IiwicmVxdWlyZSQkMTY5IiwicmVxdWlyZSQkMTcwIiwicmVxdWlyZSQkMTcxIiwicmVxdWlyZSQkMTcyIiwicmVxdWlyZSQkMTczIiwicmVxdWlyZSQkMTc0IiwicmVxdWlyZSQkMTc1IiwicmVxdWlyZSQkMTc2IiwiX3JlZiIsImluY2x1ZGUiLCJfbG93bGlnaHQyIiwiZGVmYXVsdCIsImFzdCIsIl91bmlzdFV0aWxWaXNpdDIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xvd2xpZ2h0IiwiX3VuaXN0VXRpbFZpc2l0IiwiX19lc01vZHVsZSIsInZGaWxlIiwiZmlyc3ROb2RlIiwic3VtIiwic2VjcmV0IiwiYm94IiwidmlzaXRCbG9ja3F1b3RlIiwibmJNQyIsImlzTXVsdGlwbGVDaG9pc2UiLCJuYlEiLCJ0YWIiLCJub2RlQyIsIngiLCJmb3IiLCJsaXN0Q2hpbGQiLCJkZWFsTGFiZWxDaGlsZHJlbiIsIm9uY2xpY2siLCJ2aXNpdExpc3QiLCJub3RoaW5nSGFwcGVuZCIsInByb3AiLCJlYXRlbiIsImluZGV4TmV4dCIsImxhYmVsU2Vjb25kIiwibGV0c0VhdCIsInN0b3BPbkJyYWNlIiwiZXJyb3JEZXRlY3RlZCIsImxhYmVsRmlyc3QiLCJzaG91bGRTdG9wIiwiY2hhcnMiLCJlYXRVbnRpbCIsImVhdEluUXVvdGUiLCJxdW90ZSIsImVhdE9uZSIsImFkZEF0dHJpYnV0ZSIsIlNUQVJUIiwiRU5EIiwicGFyc2VBdHRyIiwicGxhY2Vob2xkZXIiLCJpbnB1dCIsImxpbmVpbnB1dCIsIkVORF9SR1giLCJyZXQiLCJ1bnRyaW0iLCJzZWxlY3QiLCJsaW5lc2VsZWN0IiwiYmxvY2tUb2tlbml6ZXIiLCJzZWFyY2giLCJ0ZXh0aW5wdXQiLCJFT0YiLCJOVUxMIiwiVEFCVUxBVElPTiIsIkNBUlJJQUdFX1JFVFVSTiIsIkxJTkVfRkVFRCIsIkZPUk1fRkVFRCIsIlNQQUNFIiwiRVhDTEFNQVRJT05fTUFSSyIsIlFVT1RBVElPTl9NQVJLIiwiTlVNQkVSX1NJR04iLCJBTVBFUlNBTkQiLCJBUE9TVFJPUEhFIiwiSFlQSEVOX01JTlVTIiwiU09MSURVUyIsIkRJR0lUXzAiLCJESUdJVF85IiwiU0VNSUNPTE9OIiwiTEVTU19USEFOX1NJR04iLCJFUVVBTFNfU0lHTiIsIkdSRUFURVJfVEhBTl9TSUdOIiwiUVVFU1RJT05fTUFSSyIsIkxBVElOX0NBUElUQUxfQSIsIkxBVElOX0NBUElUQUxfRiIsIkxBVElOX0NBUElUQUxfWCIsIkxBVElOX0NBUElUQUxfWiIsIkdSQVZFX0FDQ0VOVCIsIkxBVElOX1NNQUxMX0EiLCJMQVRJTl9TTUFMTF9GIiwiTEFUSU5fU01BTExfWCIsIkxBVElOX1NNQUxMX1oiLCJSRVBMQUNFTUVOVF9DSEFSQUNURVIiLCJEQVNIX0RBU0hfU1RSSU5HIiwiRE9DVFlQRV9TVFJJTkciLCJDREFUQV9TVEFSVF9TVFJJTkciLCJDREFUQV9FTkRfU1RSSU5HIiwiU0NSSVBUX1NUUklORyIsIlBVQkxJQ19TVFJJTkciLCJTWVNURU1fU1RSSU5HIiwiJCIsIlVOSUNPREUiLCJDT0RFX1BPSU5UUyIsIlByZXByb2Nlc3NvciIsImxhc3RHYXBQb3MiLCJsYXN0Q2hhclBvcyIsImdhcFN0YWNrIiwic2tpcE5leHROZXdMaW5lIiwibGFzdENodW5rV3JpdHRlbiIsImVuZE9mQ2h1bmtIaXQiLCJidWZmZXJXYXRlcmxpbmUiLCJkcm9wUGFyc2VkQ2h1bmsiLCJfYWRkR2FwIiwiX3Byb2Nlc3NIaWdoUmFuZ2VDb2RlUG9pbnQiLCJjcCIsIm5leHRDcCIsImNwMiIsImNwMSIsImdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQiLCJ3cml0ZSIsImNodW5rIiwiaXNMYXN0Q2h1bmsiLCJpbnNlcnRIdG1sQXRDdXJyZW50UG9zIiwiYWR2YW5jZSIsInJldHJlYXQiLCJVaW50MTZBcnJheSIsIiQkIiwiQ09ERV9QT0lOVF9TRVFVRU5DRVMiLCJOVU1FUklDX0VOVElUWV9SRVBMQUNFTUVOVFMiLCIwIiwiMTMiLCIxMjgiLCIxMjkiLCIxMzAiLCIxMzEiLCIxMzIiLCIxMzMiLCIxMzQiLCIxMzUiLCIxMzYiLCIxMzciLCIxMzgiLCIxMzkiLCIxNDAiLCIxNDEiLCIxNDIiLCIxNDMiLCIxNDQiLCIxNDUiLCIxNDYiLCIxNDciLCIxNDgiLCIxNDkiLCIxNTAiLCIxNTEiLCIxNTIiLCIxNTMiLCIxNTQiLCIxNTUiLCIxNTYiLCIxNTciLCIxNTgiLCIxNTkiLCJEQVRBX1NUQVRFIiwiaXNXaGl0ZXNwYWNlIiwiaXNBc2NpaURpZ2l0IiwiaXNBc2NpaVVwcGVyIiwiaXNBc2NpaUxvd2VyIiwiaXNBc2NpaUxldHRlciIsImlzRGlnaXQiLCJpc0hleCIsInRvQXNjaWlMb3dlckNvZGVQb2ludCIsInRvQ2hhciIsInRvQXNjaWlMb3dlckNoYXIiLCJmaW5kTmFtZWRFbnRpdHlUcmVlQnJhbmNoIiwibm9kZUl4IiwiYnJhbmNoQ291bnQiLCJuZVRyZWUiLCJsbyIsImhpIiwibWlkIiwibWlkQ3AiLCJUb2tlbml6ZXIiLCJ0b2tlblF1ZXVlIiwiYWxsb3dDREFUQSIsInN0YXRlIiwicmV0dXJuU3RhdGUiLCJ0ZW1wQnVmZiIsImFkZGl0aW9uYWxBbGxvd2VkQ3AiLCJsYXN0U3RhcnRUYWdOYW1lIiwiY29uc3VtZWRBZnRlclNuYXBzaG90IiwiYWN0aXZlIiwiY3VycmVudENoYXJhY3RlclRva2VuIiwiY3VycmVudFRva2VuIiwiY3VycmVudEF0dHIiLCJDSEFSQUNURVJfVE9LRU4iLCJOVUxMX0NIQVJBQ1RFUl9UT0tFTiIsIldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOIiwiU1RBUlRfVEFHX1RPS0VOIiwiRU5EX1RBR19UT0tFTiIsIkNPTU1FTlRfVE9LRU4iLCJET0NUWVBFX1RPS0VOIiwiRU9GX1RPS0VOIiwiSElCRVJOQVRJT05fVE9LRU4iLCJNT0RFIiwiREFUQSIsIlJDREFUQSIsIlJBV1RFWFQiLCJTQ1JJUFRfREFUQSIsIlBMQUlOVEVYVCIsImdldFRva2VuQXR0ciIsInRva2VuIiwiYXR0ck5hbWUiLCJhdHRycyIsImdldE5leHRUb2tlbiIsIl9oaWJlcm5hdGlvblNuYXBzaG90IiwiX2NvbnN1bWUiLCJfZW5zdXJlSGliZXJuYXRpb24iLCJzaGlmdCIsIl91bmNvbnN1bWUiLCJfdW5jb25zdW1lU2V2ZXJhbCIsIl9yZWNvbnN1bWVJblN0YXRlIiwiX2NvbnN1bWVTdWJzZXF1ZW50SWZNYXRjaCIsInBhdHRlcm4iLCJzdGFydENwIiwiY2FzZVNlbnNpdGl2ZSIsImNvbnN1bWVkQ291bnQiLCJpc01hdGNoIiwicGF0dGVybkxlbmd0aCIsInBhdHRlcm5Qb3MiLCJwYXR0ZXJuQ3AiLCJfbG9va2FoZWFkIiwiaXNUZW1wQnVmZmVyRXF1YWxUb1NjcmlwdFN0cmluZyIsIl9jcmVhdGVTdGFydFRhZ1Rva2VuIiwic2VsZkNsb3NpbmciLCJfY3JlYXRlRW5kVGFnVG9rZW4iLCJfY3JlYXRlQ29tbWVudFRva2VuIiwiX2NyZWF0ZURvY3R5cGVUb2tlbiIsImluaXRpYWxOYW1lIiwiZm9yY2VRdWlya3MiLCJwdWJsaWNJZCIsInN5c3RlbUlkIiwiX2NyZWF0ZUNoYXJhY3RlclRva2VuIiwiX2NyZWF0ZUF0dHIiLCJhdHRyTmFtZUZpcnN0Q2giLCJfaXNEdXBsaWNhdGVBdHRyIiwiX2xlYXZlQXR0ck5hbWUiLCJ0b1N0YXRlIiwiX2xlYXZlQXR0clZhbHVlIiwiX2lzQXBwcm9wcmlhdGVFbmRUYWdUb2tlbiIsIl9lbWl0Q3VycmVudFRva2VuIiwiX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4iLCJfZW1pdEVPRlRva2VuIiwiX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbiIsIl9lbWl0Q29kZVBvaW50IiwiX2VtaXRTZXZlcmFsQ29kZVBvaW50cyIsImNvZGVQb2ludHMiLCJfZW1pdENoYXIiLCJfY29uc3VtZU51bWVyaWNFbnRpdHkiLCJkaWdpdHMiLCJyZWZlcmVuY2VkQ3AiLCJwYXJzZUludCIsInJlcGxhY2VtZW50IiwiX2NvbnN1bWVOYW1lZEVudGl0eSIsImluQXR0ciIsInJlZmVyZW5jZWRDb2RlUG9pbnRzIiwicmVmZXJlbmNlU2l6ZSIsInNlbWljb2xvblRlcm1pbmF0ZWQiLCJpbk5vZGUiLCJIQVNfREFUQV9GTEFHIiwiaXNBc2NpaUFscGhhTnVtZXJpYyIsIl9jb25zdW1lQ2hhcmFjdGVyUmVmZXJlbmNlIiwiZGFzaERhc2hNYXRjaCIsImRvY3R5cGVNYXRjaCIsImNkYXRhTWF0Y2giLCJwdWJsaWNNYXRjaCIsInN5c3RlbU1hdGNoIiwiY2RhdGFFbmRNYXRjaCIsIk5TIiwiSFRNTCIsIk1BVEhNTCIsIlNWRyIsIlhMSU5LIiwiWE1MIiwiWE1MTlMiLCJBQ1RJT04iLCJFTkNPRElORyIsIkNPTE9SIiwiRkFDRSIsIlNJWkUiLCJOT19RVUlSS1MiLCJRVUlSS1MiLCJMSU1JVEVEX1FVSVJLUyIsIkEiLCJBRERSRVNTIiwiQU5OT1RBVElPTl9YTUwiLCJBUFBMRVQiLCJBUkVBIiwiQVJUSUNMRSIsIkFTSURFIiwiQiIsIkJBU0UiLCJCQVNFRk9OVCIsIkJHU09VTkQiLCJCSUciLCJCTE9DS1FVT1RFIiwiQlIiLCJCVVRUT04iLCJDQVBUSU9OIiwiQ0VOVEVSIiwiQ09ERSIsIkNPTCIsIkNPTEdST1VQIiwiREQiLCJERVNDIiwiREVUQUlMUyIsIkRJQUxPRyIsIkRJUiIsIkRJViIsIkRMIiwiRFQiLCJFTSIsIkVNQkVEIiwiRklFTERTRVQiLCJGSUdDQVBUSU9OIiwiRklHVVJFIiwiRk9OVCIsIkZPT1RFUiIsIkZPUkVJR05fT0JKRUNUIiwiRk9STSIsIkZSQU1FIiwiRlJBTUVTRVQiLCJIMSIsIkgyIiwiSDMiLCJINCIsIkg1IiwiSDYiLCJIRUFEIiwiSEVBREVSIiwiSEdST1VQIiwiSFIiLCJJIiwiSU1HIiwiSU1BR0UiLCJJTlBVVCIsIklGUkFNRSIsIktFWUdFTiIsIkxJIiwiTElOSyIsIkxJU1RJTkciLCJNQUlOIiwiTUFMSUdOTUFSSyIsIk1BUlFVRUUiLCJNQVRIIiwiTUVOVSIsIk1FTlVJVEVNIiwiTUVUQSIsIk1HTFlQSCIsIk1JIiwiTU8iLCJNTiIsIk1TIiwiTVRFWFQiLCJOQVYiLCJOT0JSIiwiTk9GUkFNRVMiLCJOT0VNQkVEIiwiTk9TQ1JJUFQiLCJPTCIsIk9QVEdST1VQIiwiT1BUSU9OIiwiUCIsIlBBUkFNIiwiUFJFIiwiUkIiLCJSUCIsIlJUIiwiUlRDIiwiUlVCWSIsIlMiLCJTQ1JJUFQiLCJTRUNUSU9OIiwiU0VMRUNUIiwiU09VUkNFIiwiU01BTEwiLCJTUEFOIiwiU1RSSUtFIiwiU1RST05HIiwiU1RZTEUiLCJTVUIiLCJTVU1NQVJZIiwiU1VQIiwiVEFCTEUiLCJUQk9EWSIsIlRFTVBMQVRFIiwiVEVYVEFSRUEiLCJURk9PVCIsIlREIiwiVEgiLCJUSEVBRCIsIlRSIiwiVFJBQ0siLCJUVCIsIlUiLCJVTCIsIldCUiIsIlhNUCIsIlNQRUNJQUxfRUxFTUVOVFMiLCJUQUdfTkFNRVMiLCJOQU1FU1BBQ0VTIiwiaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWQiLCJ0biIsImlzU2NvcGluZ0VsZW1lbnQiLCJucyIsIk9wZW5FbGVtZW50U3RhY2siLCJ0cmVlQWRhcHRlciIsInN0YWNrVG9wIiwiaXRlbXMiLCJjdXJyZW50VGFnTmFtZSIsImN1cnJlbnRUbXBsQ29udGVudCIsInRtcGxDb3VudCIsIl9pbmRleE9mIiwiZWxlbWVudCIsImlkeCIsIl9pc0luVGVtcGxhdGUiLCJnZXROYW1lc3BhY2VVUkkiLCJfdXBkYXRlQ3VycmVudEVsZW1lbnQiLCJnZXRUYWdOYW1lIiwiZ2V0VGVtcGxhdGVDb250ZW50Iiwib2xkRWxlbWVudCIsIm5ld0VsZW1lbnQiLCJpbnNlcnRBZnRlciIsInJlZmVyZW5jZUVsZW1lbnQiLCJpbnNlcnRpb25JZHgiLCJwb3BVbnRpbFRhZ05hbWVQb3BwZWQiLCJwb3BVbnRpbEVsZW1lbnRQb3BwZWQiLCJwb3BwZWRFbGVtZW50IiwicG9wVW50aWxOdW1iZXJlZEhlYWRlclBvcHBlZCIsInBvcFVudGlsVGFibGVDZWxsUG9wcGVkIiwicG9wQWxsVXBUb0h0bWxFbGVtZW50IiwiY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQiLCJjbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQiLCJjbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCIsInJlbW92ZSIsInRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50IiwiZ2V0Q29tbW9uQW5jZXN0b3IiLCJlbGVtZW50SWR4IiwiaXNSb290SHRtbEVsZW1lbnRDdXJyZW50IiwiaGFzSW5TY29wZSIsImhhc051bWJlcmVkSGVhZGVySW5TY29wZSIsImhhc0luTGlzdEl0ZW1TY29wZSIsImhhc0luQnV0dG9uU2NvcGUiLCJoYXNJblRhYmxlU2NvcGUiLCJoYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlIiwiaGFzSW5TZWxlY3RTY29wZSIsImdlbmVyYXRlSW1wbGllZEVuZFRhZ3MiLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbiIsImV4Y2x1c2lvblRhZ05hbWUiLCJGb3JtYXR0aW5nRWxlbWVudExpc3QiLCJlbnRyaWVzIiwiYm9va21hcmsiLCJNQVJLRVJfRU5UUlkiLCJFTEVNRU5UX0VOVFJZIiwiX2dldE5vYWhBcmtDb25kaXRpb25DYW5kaWRhdGVzIiwiY2FuZGlkYXRlcyIsIm5lQXR0cnNMZW5ndGgiLCJnZXRBdHRyTGlzdCIsIm5lVGFnTmFtZSIsIm5lTmFtZXNwYWNlVVJJIiwiZW50cnkiLCJlbGVtZW50QXR0cnMiLCJfZW5zdXJlTm9haEFya0NvbmRpdGlvbiIsImNMZW5ndGgiLCJuZUF0dHJzIiwibmVBdHRyc01hcCIsIm5lQXR0ciIsImoiLCJjQXR0ciIsIk5PQUhfQVJLX0NBUEFDSVRZIiwiaW5zZXJ0TWFya2VyIiwicHVzaEVsZW1lbnQiLCJpbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayIsImJvb2ttYXJrSWR4IiwicmVtb3ZlRW50cnkiLCJjbGVhclRvTGFzdE1hcmtlciIsImdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZSIsImdldEVsZW1lbnRFbnRyeSIsImhvc3QiLCJvcmlnaW5hbE1ldGhvZHMiLCJvdmVycmlkZGVuTWV0aG9kcyIsIl9nZXRPdmVycmlkZGVuTWV0aG9kcyIsInNlbGYiLCJ3aW5kb3ciLCJsb29rdXAiLCJyZXZMb29rdXAiLCJBcnIiLCJVaW50OEFycmF5IiwiaW5pdGVkIiwiaW5pdCIsImxlbiIsImVuY29kZUNodW5rIiwidWludDgiLCJ0bXAiLCJvdXRwdXQiLCJmcm9tQnl0ZUFycmF5IiwiZXh0cmFCeXRlcyIsInBhcnRzIiwibGVuMiIsInJlYWQiLCJpc0xFIiwibUxlbiIsIm5CeXRlcyIsIm0iLCJlTGVuIiwiZU1heCIsImVCaWFzIiwibkJpdHMiLCJkIiwiTmFOIiwiTWF0aCIsInBvdyIsInJ0IiwiYWJzIiwiZmxvb3IiLCJsb2ciLCJMTjIiLCJhcnIiLCJrTWF4TGVuZ3RoIiwiQnVmZmVyIiwiVFlQRURfQVJSQVlfU1VQUE9SVCIsImNyZWF0ZUJ1ZmZlciIsInRoYXQiLCJSYW5nZUVycm9yIiwiX19wcm90b19fIiwiYXJnIiwiZW5jb2RpbmdPck9mZnNldCIsImFsbG9jVW5zYWZlIiwiQXJyYXlCdWZmZXIiLCJhcnJheSIsImJ5dGVPZmZzZXQiLCJieXRlTGVuZ3RoIiwiZnJvbUFycmF5TGlrZSIsImZyb21BcnJheUJ1ZmZlciIsImVuY29kaW5nIiwiaXNFbmNvZGluZyIsImFjdHVhbCIsImZyb21TdHJpbmciLCJpbnRlcm5hbElzQnVmZmVyIiwiY29weSIsImZyb21PYmplY3QiLCJhc3NlcnRTaXplIiwiYiIsIl9pc0J1ZmZlciIsImlzVmlldyIsImxvd2VyZWRDYXNlIiwidXRmOFRvQnl0ZXMiLCJiYXNlNjRUb0J5dGVzIiwic3dhcCIsImJpZGlyZWN0aW9uYWxJbmRleE9mIiwiZGlyIiwiYXJyYXlJbmRleE9mIiwibGFzdEluZGV4T2YiLCJpbmRleFNpemUiLCJhcnJMZW5ndGgiLCJ2YWxMZW5ndGgiLCJidWYiLCJyZWFkVUludDE2QkUiLCJmb3VuZEluZGV4IiwiZm91bmQiLCJoZXhXcml0ZSIsInJlbWFpbmluZyIsInN0ckxlbiIsInBhcnNlZCIsInV0ZjhXcml0ZSIsImJsaXRCdWZmZXIiLCJhc2NpaVdyaXRlIiwiYnl0ZUFycmF5IiwiYXNjaWlUb0J5dGVzIiwibGF0aW4xV3JpdGUiLCJiYXNlNjRXcml0ZSIsInVjczJXcml0ZSIsInVuaXRzIiwidXRmMTZsZVRvQnl0ZXMiLCJiYXNlNjRTbGljZSIsImJhc2U2NC5mcm9tQnl0ZUFycmF5IiwidXRmOFNsaWNlIiwibWluIiwic2Vjb25kQnl0ZSIsInRoaXJkQnl0ZSIsImZvdXJ0aEJ5dGUiLCJ0ZW1wQ29kZVBvaW50IiwiZmlyc3RCeXRlIiwiY29kZVBvaW50IiwiYnl0ZXNQZXJTZXF1ZW5jZSIsIk1BWF9BUkdVTUVOVFNfTEVOR1RIIiwiZGVjb2RlQ29kZVBvaW50c0FycmF5IiwicG9vbFNpemUiLCJfYXVnbWVudCIsImFsbG9jIiwiZmlsbCIsImFsbG9jVW5zYWZlU2xvdyIsImlzQnVmZmVyIiwiY29tcGFyZSIsInkiLCJzd2FwMTYiLCJzd2FwMzIiLCJzd2FwNjQiLCJoZXhTbGljZSIsImFzY2lpU2xpY2UiLCJsYXRpbjFTbGljZSIsInV0ZjE2bGVTbGljZSIsImVxdWFscyIsImluc3BlY3QiLCJ0aGlzU3RhcnQiLCJ0aGlzRW5kIiwidGhpc0NvcHkiLCJ0YXJnZXRDb3B5IiwiaXNGaW5pdGUiLCJ0b0pTT04iLCJfYXJyIiwidG9IZXgiLCJieXRlcyIsImNoZWNrT2Zmc2V0IiwiZXh0IiwiY2hlY2tJbnQiLCJvYmplY3RXcml0ZVVJbnQxNiIsImxpdHRsZUVuZGlhbiIsIm9iamVjdFdyaXRlVUludDMyIiwiY2hlY2tJRUVFNzU0Iiwid3JpdGVGbG9hdCIsIm5vQXNzZXJ0IiwiaWVlZTc1NC53cml0ZSIsIndyaXRlRG91YmxlIiwibmV3QnVmIiwic3ViYXJyYXkiLCJzbGljZUxlbiIsInJlYWRVSW50TEUiLCJtdWwiLCJyZWFkVUludEJFIiwicmVhZFVJbnQ4IiwicmVhZFVJbnQxNkxFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEludExFIiwicmVhZEludEJFIiwicmVhZEludDgiLCJyZWFkSW50MTZMRSIsInJlYWRJbnQxNkJFIiwicmVhZEludDMyTEUiLCJyZWFkSW50MzJCRSIsInJlYWRGbG9hdExFIiwiaWVlZTc1NC5yZWFkIiwicmVhZEZsb2F0QkUiLCJyZWFkRG91YmxlTEUiLCJyZWFkRG91YmxlQkUiLCJ3cml0ZVVJbnRMRSIsIndyaXRlVUludEJFIiwid3JpdGVVSW50OCIsIndyaXRlVUludDE2TEUiLCJ3cml0ZVVJbnQxNkJFIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDMyQkUiLCJ3cml0ZUludExFIiwibGltaXQiLCJzdWIiLCJ3cml0ZUludEJFIiwid3JpdGVJbnQ4Iiwid3JpdGVJbnQxNkxFIiwid3JpdGVJbnQxNkJFIiwid3JpdGVJbnQzMkxFIiwid3JpdGVJbnQzMkJFIiwid3JpdGVGbG9hdExFIiwid3JpdGVGbG9hdEJFIiwid3JpdGVEb3VibGVMRSIsIndyaXRlRG91YmxlQkUiLCJ0YXJnZXRTdGFydCIsInNldCIsIklOVkFMSURfQkFTRTY0X1JFIiwibGVhZFN1cnJvZ2F0ZSIsImI2NCIsInBsYWNlSG9sZGVycyIsIkwiLCJiYXNlNjQudG9CeXRlQXJyYXkiLCJzdHJpbmd0cmltIiwiYmFzZTY0Y2xlYW4iLCJkc3QiLCJpc0Zhc3RCdWZmZXIiLCJpc1Nsb3dCdWZmZXIiLCJjb25zdHJ1Y3RvciIsImRlZmF1bHRTZXRUaW1vdXQiLCJkZWZhdWx0Q2xlYXJUaW1lb3V0IiwiY2FjaGVkU2V0VGltZW91dCIsImNhY2hlZENsZWFyVGltZW91dCIsInJ1blRpbWVvdXQiLCJmdW4iLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiY3VycmVudFF1ZXVlIiwiZHJhaW5pbmciLCJxdWV1ZUluZGV4IiwiY2xlYW5VcE5leHRUaWNrIiwiZHJhaW5RdWV1ZSIsInRpbWVvdXQiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwibm9vcCIsIm9uIiwiYWRkTGlzdGVuZXIiLCJvbmNlIiwib2ZmIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJlbWl0IiwicGVyZm9ybWFuY2UiLCJwZXJmb3JtYW5jZU5vdyIsIm1vek5vdyIsIm1zTm93Iiwib05vdyIsIndlYmtpdE5vdyIsIkRhdGUiLCJnZXRUaW1lIiwic3RhcnRUaW1lIiwibmV4dFRpY2siLCJhcmdzIiwiYnJvd3NlciIsImVudiIsImFyZ3YiLCJ2ZXJzaW9uIiwidmVyc2lvbnMiLCJiaW5kaW5nIiwiY3dkIiwiY2hkaXIiLCJ1bWFzayIsImhydGltZSIsInByZXZpb3VzVGltZXN0YW1wIiwiY2xvY2t0aW1lIiwic2Vjb25kcyIsIm5hbm9zZWNvbmRzIiwicGxhdGZvcm0iLCJyZWxlYXNlIiwiY29uZmlnIiwidXB0aW1lIiwiY3RvciIsInN1cGVyQ3RvciIsInN1cGVyXyIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsIlRlbXBDdG9yIiwiZm9ybWF0UmVnRXhwIiwiZm9ybWF0IiwiZiIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImlzTnVsbCIsImlzT2JqZWN0IiwiZGVwcmVjYXRlIiwibXNnIiwiaXNVbmRlZmluZWQiLCJub0RlcHJlY2F0aW9uIiwid2FybmVkIiwidGhyb3dEZXByZWNhdGlvbiIsInRyYWNlRGVwcmVjYXRpb24iLCJjb25zb2xlIiwidHJhY2UiLCJlcnJvciIsImRlYnVnRW52aXJvbiIsImRlYnVncyIsImRlYnVnbG9nIiwiTk9ERV9ERUJVRyIsInNlZW4iLCJzdHlsaXplIiwic3R5bGl6ZU5vQ29sb3IiLCJjb2xvcnMiLCJpc0Jvb2xlYW4iLCJzaG93SGlkZGVuIiwiX2V4dGVuZCIsImN1c3RvbUluc3BlY3QiLCJzdHlsaXplV2l0aENvbG9yIiwiZm9ybWF0VmFsdWUiLCJzdHlsZVR5cGUiLCJzdHlsZSIsInN0eWxlcyIsInJlY3Vyc2VUaW1lcyIsImlzRnVuY3Rpb24iLCJwcmltaXRpdmUiLCJzaW1wbGUiLCJpc051bWJlciIsImZvcm1hdFByaW1pdGl2ZSIsInZpc2libGVLZXlzIiwiaGFzaCIsImFycmF5VG9IYXNoIiwiaXNFcnJvciIsImZvcm1hdEVycm9yIiwiaXNSZWdFeHAiLCJpc0RhdGUiLCJiYXNlIiwiYnJhY2VzIiwidG9VVENTdHJpbmciLCJmb3JtYXRQcm9wZXJ0eSIsImZvcm1hdEFycmF5IiwicmVkdWNlIiwicHJldiIsImN1ciIsIm51bUxpbmVzRXN0IiwicmVkdWNlVG9TaW5nbGVTdHJpbmciLCJkZXNjIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0IiwiYXIiLCJpc051bGxPclVuZGVmaW5lZCIsImlzU3ltYm9sIiwib2JqZWN0VG9TdHJpbmciLCJpc1ByaW1pdGl2ZSIsIm1heWJlQnVmIiwiQnVmZmVyLmlzQnVmZmVyIiwibyIsInBhZCIsImJvbGQiLCJpdGFsaWMiLCJ1bmRlcmxpbmUiLCJpbnZlcnNlIiwid2hpdGUiLCJncmV5IiwiYmxhY2siLCJibHVlIiwiY3lhbiIsImdyZWVuIiwibWFnZW50YSIsInJlZCIsInllbGxvdyIsInNwZWNpYWwiLCJudW1iZXIiLCJib29sZWFuIiwibnVsbCIsImRhdGUiLCJyZWdleHAiLCJtb250aHMiLCJ0aW1lIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsImdldERhdGUiLCJnZXRNb250aCIsIlBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbiIsIl9fbG9jVHJhY2tlciIsIk1peGluIiwiaXNFb2wiLCJsaW5lU3RhcnRQb3MiLCJkcm9wcGVkQnVmZmVyU2l6ZSIsImNvbCIsImRlZmluZVByb3BlcnR5IiwibXhuIiwib3JpZyIsInByZXZQb3MiLCJMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbiIsInRva2VuaXplciIsInBvc1RyYWNrZXIiLCJjdXJyZW50QXR0ckxvY2F0aW9uIiwiY3VycmVudFRva2VuTG9jYXRpb24iLCJfZ2V0Q3VycmVudExvY2F0aW9uIiwic3RhcnRPZmZzZXQiLCJlbmRPZmZzZXQiLCJfYXR0YWNoQ3VycmVudEF0dHJMb2NhdGlvbkluZm8iLCJsb2NhdGlvbiIsIm1ldGhvZHMiLCJtb2RlTmFtZSIsIkxvY2F0aW9uSW5mb09wZW5FbGVtZW50U3RhY2tNaXhpbiIsIm9uSXRlbVBvcCIsIkxvY2F0aW9uSW5mb1BhcnNlck1peGluIiwicGFyc2VyIiwibGFzdFN0YXJ0VGFnVG9rZW4iLCJsYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24iLCJfc2V0U3RhcnRMb2NhdGlvbiIsIl9fbG9jYXRpb24iLCJzdGFydFRhZyIsIl9zZXRFbmRMb2NhdGlvbiIsImNsb3NpbmdUb2tlbiIsImxvYyIsImN0TG9jIiwiZW5kVGFnIiwiX2Jvb3RzdHJhcCIsImZyYWdtZW50Q29udGV4dCIsIm9wZW5FbGVtZW50cyIsIl9ydW5QYXJzaW5nTG9vcCIsInNjcmlwdEhhbmRsZXIiLCJfcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCIsIl9wcm9jZXNzVG9rZW4iLCJfc2V0RG9jdW1lbnRUeXBlIiwiZG9jdW1lbnRDaGlsZHJlbiIsImdldENoaWxkTm9kZXMiLCJjbkxlbmd0aCIsImlzRG9jdW1lbnRUeXBlTm9kZSIsIl9hdHRhY2hFbGVtZW50VG9UcmVlIiwiX2FwcGVuZEVsZW1lbnQiLCJuYW1lc3BhY2VVUkkiLCJfaW5zZXJ0RWxlbWVudCIsIl9pbnNlcnRUZW1wbGF0ZSIsIl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQiLCJfYXBwZW5kQ29tbWVudE5vZGUiLCJfZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uIiwiX2luc2VydENoYXJhY3RlcnMiLCJoYXNGb3N0ZXJQYXJlbnQiLCJfc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24iLCJ0ZXh0Tm9kZSIsImJlZm9yZUVsZW1lbnQiLCJET0NVTUVOVF9NT0RFIiwiY2hpbGROb2RlcyIsImNyZWF0ZVRleHROb2RlIiwiYXBwZW5kQ2hpbGQiLCJuZXdOb2RlIiwiaW5zZXJ0QmVmb3JlIiwicmVmZXJlbmNlTm9kZSIsInRlbXBsYXRlRWxlbWVudCIsImNvbnRlbnRFbGVtZW50IiwiZG9jdHlwZU5vZGUiLCJwcmV2Tm9kZSIsInJlY2lwaWVudCIsInJlY2lwaWVudEF0dHJzTWFwIiwiY29tbWVudE5vZGUiLCJRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMiLCJRVUlSS1NfTU9ERV9OT19TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTIiwiUVVJUktTX01PREVfUFVCTElDX0lEUyIsIkxJTUlURURfUVVJUktTX1BVQkxJQ19JRF9QUkVGSVhFUyIsIkxJTUlURURfUVVJUktTX1dJVEhfU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyIsImVucXVvdGVEb2N0eXBlSWQiLCJoYXNQcmVmaXgiLCJwcmVmaXhlcyIsInByb3BlcnR5IiwiQVRUUlMiLCJNSU1FX1RZUEVTIiwiVEVYVF9IVE1MIiwiQVBQTElDQVRJT05fWE1MIiwiU1ZHX0FUVFJTX0FESlVTVE1FTlRfTUFQIiwiYXR0cmlidXRlbmFtZSIsImF0dHJpYnV0ZXR5cGUiLCJiYXNlZnJlcXVlbmN5IiwiYmFzZXByb2ZpbGUiLCJjYWxjbW9kZSIsImNsaXBwYXRodW5pdHMiLCJkaWZmdXNlY29uc3RhbnQiLCJlZGdlbW9kZSIsImZpbHRlcnVuaXRzIiwiZ2x5cGhyZWYiLCJncmFkaWVudHRyYW5zZm9ybSIsImdyYWRpZW50dW5pdHMiLCJrZXJuZWxtYXRyaXgiLCJrZXJuZWx1bml0bGVuZ3RoIiwia2V5cG9pbnRzIiwia2V5c3BsaW5lcyIsImtleXRpbWVzIiwibGVuZ3RoYWRqdXN0IiwibGltaXRpbmdjb25lYW5nbGUiLCJtYXJrZXJoZWlnaHQiLCJtYXJrZXJ1bml0cyIsIm1hcmtlcndpZHRoIiwibWFza2NvbnRlbnR1bml0cyIsIm1hc2t1bml0cyIsIm51bW9jdGF2ZXMiLCJwYXRobGVuZ3RoIiwicGF0dGVybmNvbnRlbnR1bml0cyIsInBhdHRlcm50cmFuc2Zvcm0iLCJwYXR0ZXJudW5pdHMiLCJwb2ludHNhdHgiLCJwb2ludHNhdHkiLCJwb2ludHNhdHoiLCJwcmVzZXJ2ZWFscGhhIiwicHJlc2VydmVhc3BlY3RyYXRpbyIsInByaW1pdGl2ZXVuaXRzIiwicmVmeCIsInJlZnkiLCJyZXBlYXRjb3VudCIsInJlcGVhdGR1ciIsInJlcXVpcmVkZXh0ZW5zaW9ucyIsInJlcXVpcmVkZmVhdHVyZXMiLCJzcGVjdWxhcmNvbnN0YW50Iiwic3BlY3VsYXJleHBvbmVudCIsInNwcmVhZG1ldGhvZCIsInN0YXJ0b2Zmc2V0Iiwic3RkZGV2aWF0aW9uIiwic3RpdGNodGlsZXMiLCJzdXJmYWNlc2NhbGUiLCJzeXN0ZW1sYW5ndWFnZSIsInRhYmxldmFsdWVzIiwidGFyZ2V0eCIsInRhcmdldHkiLCJ0ZXh0bGVuZ3RoIiwidmlld2JveCIsInZpZXd0YXJnZXQiLCJ4Y2hhbm5lbHNlbGVjdG9yIiwieWNoYW5uZWxzZWxlY3RvciIsInpvb21hbmRwYW4iLCJYTUxfQVRUUlNfQURKVVNUTUVOVF9NQVAiLCJ4bGluazphY3R1YXRlIiwibmFtZXNwYWNlIiwieGxpbms6YXJjcm9sZSIsInhsaW5rOmhyZWYiLCJ4bGluazpyb2xlIiwieGxpbms6c2hvdyIsInhsaW5rOnRpdGxlIiwieGxpbms6dHlwZSIsInhtbDpiYXNlIiwieG1sOmxhbmciLCJ4bWw6c3BhY2UiLCJ4bWxucyIsInhtbG5zOnhsaW5rIiwiU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUCIsImFsdGdseXBoIiwiYWx0Z2x5cGhkZWYiLCJhbHRnbHlwaGl0ZW0iLCJhbmltYXRlY29sb3IiLCJhbmltYXRlbW90aW9uIiwiYW5pbWF0ZXRyYW5zZm9ybSIsImNsaXBwYXRoIiwiZmVibGVuZCIsImZlY29sb3JtYXRyaXgiLCJmZWNvbXBvbmVudHRyYW5zZmVyIiwiZmVjb21wb3NpdGUiLCJmZWNvbnZvbHZlbWF0cml4IiwiZmVkaWZmdXNlbGlnaHRpbmciLCJmZWRpc3BsYWNlbWVudG1hcCIsImZlZGlzdGFudGxpZ2h0IiwiZmVmbG9vZCIsImZlZnVuY2EiLCJmZWZ1bmNiIiwiZmVmdW5jZyIsImZlZnVuY3IiLCJmZWdhdXNzaWFuYmx1ciIsImZlaW1hZ2UiLCJmZW1lcmdlIiwiZmVtZXJnZW5vZGUiLCJmZW1vcnBob2xvZ3kiLCJmZW9mZnNldCIsImZlcG9pbnRsaWdodCIsImZlc3BlY3VsYXJsaWdodGluZyIsImZlc3BvdGxpZ2h0IiwiZmV0aWxlIiwiZmV0dXJidWxlbmNlIiwiZm9yZWlnbm9iamVjdCIsImxpbmVhcmdyYWRpZW50IiwicmFkaWFsZ3JhZGllbnQiLCJ0ZXh0cGF0aCIsIkVYSVRTX0ZPUkVJR05fQ09OVEVOVCIsInN0YXJ0VGFnVG9rZW4iLCJhZGp1c3RlZEF0dHJOYW1lIiwiYWRqdXN0ZWRBdHRyRW50cnkiLCJhZGp1c3RlZFRhZ05hbWUiLCJmb3JlaWduTlMiLCJpc0h0bWxJbnRlZ3JhdGlvblBvaW50IiwiaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCIsIkRFRkFVTFRfT1BUSU9OUyIsImxvY2F0aW9uSW5mbyIsImRlZmF1bHRUcmVlQWRhcHRlciIsIkhJRERFTl9JTlBVVF9UWVBFIiwiQUFfT1VURVJfTE9PUF9JVEVSIiwiQUFfSU5ORVJfTE9PUF9JVEVSIiwiQkVGT1JFX0hUTUxfTU9ERSIsIkJFRk9SRV9IRUFEX01PREUiLCJJTl9IRUFEX01PREUiLCJBRlRFUl9IRUFEX01PREUiLCJJTl9CT0RZX01PREUiLCJURVhUX01PREUiLCJJTl9UQUJMRV9NT0RFIiwiSU5fVEFCTEVfVEVYVF9NT0RFIiwiSU5fQ0FQVElPTl9NT0RFIiwiSU5fQ09MVU1OX0dST1VQX01PREUiLCJJTl9UQUJMRV9CT0RZX01PREUiLCJJTl9ST1dfTU9ERSIsIklOX0NFTExfTU9ERSIsIklOX1NFTEVDVF9NT0RFIiwiSU5fU0VMRUNUX0lOX1RBQkxFX01PREUiLCJJTl9URU1QTEFURV9NT0RFIiwiQUZURVJfQk9EWV9NT0RFIiwiSU5fRlJBTUVTRVRfTU9ERSIsIkFGVEVSX0ZSQU1FU0VUX01PREUiLCJBRlRFUl9BRlRFUl9CT0RZX01PREUiLCJBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFIiwiSU5TRVJUSU9OX01PREVfUkVTRVRfTUFQIiwiVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUCIsInRva2VuSW5Jbml0aWFsTW9kZSIsImlnbm9yZVRva2VuIiwiYXBwZW5kQ29tbWVudCIsInAiLCJkb2N0eXBlIiwiZ2V0RG9jdW1lbnRNb2RlIiwic2V0RG9jdW1lbnRNb2RlIiwiaW5zZXJ0aW9uTW9kZSIsInRva2VuQmVmb3JlSHRtbCIsInRva2VuQmVmb3JlSGVhZCIsInN0YXJ0VGFnSW5Cb2R5IiwiaGVhZEVsZW1lbnQiLCJ0b2tlbkluSGVhZCIsImluc2VydENoYXJhY3RlcnMiLCJzdGFydFRhZ0luSGVhZCIsImVuZFRhZ0luSGVhZCIsInRva2VuQWZ0ZXJIZWFkIiwiZnJhbWVzZXRPayIsImNoYXJhY3RlckluQm9keSIsIndoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHkiLCJlbmRUYWdJbkJvZHkiLCJlb2ZJbkJvZHkiLCJwZW5kaW5nU2NyaXB0Iiwib3JpZ2luYWxJbnNlcnRpb25Nb2RlIiwiY2hhcmFjdGVySW5UYWJsZSIsInN0YXJ0VGFnSW5UYWJsZSIsImVuZFRhZ0luVGFibGUiLCJwZW5kaW5nQ2hhcmFjdGVyVG9rZW5zIiwiaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbiIsInRva2VuSW5UYWJsZSIsImFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cyIsInRva2VuSW5Db2x1bW5Hcm91cCIsIl9pbnNlcnRGYWtlRWxlbWVudCIsIl9jbG9zZVRhYmxlQ2VsbCIsInN0YXJ0VGFnSW5TZWxlY3QiLCJlbmRUYWdJblNlbGVjdCIsIl9yZXNldEluc2VydGlvbk1vZGUiLCJuZXdJbnNlcnRpb25Nb2RlIiwiX3BvcFRtcGxJbnNlcnRpb25Nb2RlIiwiX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZSIsImVvZkluVGVtcGxhdGUiLCJ0b2tlbkFmdGVyQm9keSIsInN0b3BQYXJzaW5nIiwidG9rZW5BZnRlckFmdGVyQm9keSIsImFwcGVuZENvbW1lbnRUb0RvY3VtZW50IiwiZGVmYXVsdHMiLCJtZXJnZWQiLCJvcHRPYmoiLCJtZXJnZU9wdGlvbnMiLCJhYU9idGFpbkZvcm1hdHRpbmdFbGVtZW50RW50cnkiLCJmb3JtYXR0aW5nRWxlbWVudEVudHJ5IiwiZ2VuZXJpY0VuZFRhZ0luQm9keSIsImFhT2J0YWluRnVydGhlc3RCbG9jayIsImZ1cnRoZXN0QmxvY2siLCJfaXNTcGVjaWFsRWxlbWVudCIsImFhSW5uZXJMb29wIiwiZm9ybWF0dGluZ0VsZW1lbnQiLCJsYXN0RWxlbWVudCIsIm5leHRFbGVtZW50IiwiZWxlbWVudEVudHJ5IiwiY291bnRlck92ZXJmbG93IiwiYWFSZWNyZWF0ZUVsZW1lbnRGcm9tRW50cnkiLCJkZXRhY2hOb2RlIiwiY3JlYXRlRWxlbWVudCIsImFhSW5zZXJ0TGFzdE5vZGVJbkNvbW1vbkFuY2VzdG9yIiwiY29tbW9uQW5jZXN0b3IiLCJfaXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nIiwiX2Zvc3RlclBhcmVudEVsZW1lbnQiLCJhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudCIsIl9hZG9wdE5vZGVzIiwiY2FsbEFkb3B0aW9uQWdlbmN5Iiwic3RvcHBlZCIsIl9zd2l0Y2hUb1RleHRQYXJzaW5nIiwiX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzIiwiYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5IiwiX2Nsb3NlUEVsZW1lbnQiLCJwcmVTdGFydFRhZ0luQm9keSIsImJTdGFydFRhZ0luQm9keSIsImFwcGxldFN0YXJ0VGFnSW5Cb2R5IiwiYXJlYVN0YXJ0VGFnSW5Cb2R5IiwicGFyYW1TdGFydFRhZ0luQm9keSIsIm5vZW1iZWRTdGFydFRhZ0luQm9keSIsIm9wdGdyb3VwU3RhcnRUYWdJbkJvZHkiLCJyYlN0YXJ0VGFnSW5Cb2R5IiwiZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5IiwiYWN0aXZlRWxlbWVudEVudHJ5IiwiYVN0YXJ0VGFnSW5Cb2R5IiwibnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keSIsImVsZW1lbnRUbiIsImNsb3NlVG4iLCJsaXN0SXRlbVN0YXJ0VGFnSW5Cb2R5IiwiaHJTdGFydFRhZ0luQm9keSIsInJ0U3RhcnRUYWdJbkJvZHkiLCJ4bXBTdGFydFRhZ0luQm9keSIsImZvcmVpZ25Db250ZW50IiwiYWRqdXN0VG9rZW5TVkdBdHRycyIsImFkanVzdFRva2VuWE1MQXR0cnMiLCJzdmdTdGFydFRhZ0luQm9keSIsImFkb3B0QXR0cmlidXRlcyIsImh0bWxTdGFydFRhZ0luQm9keSIsImJvZHlFbGVtZW50IiwiYm9keVN0YXJ0VGFnSW5Cb2R5IiwiaW5UZW1wbGF0ZSIsImZvcm1FbGVtZW50IiwiZm9ybVN0YXJ0VGFnSW5Cb2R5Iiwibm9iclN0YXJ0VGFnSW5Cb2R5IiwiYWRqdXN0VG9rZW5NYXRoTUxBdHRycyIsIm1hdGhTdGFydFRhZ0luQm9keSIsIm1lbnVTdGFydFRhZ0luQm9keSIsInRhYmxlU3RhcnRUYWdJbkJvZHkiLCJpbnB1dFR5cGUiLCJpbnB1dFN0YXJ0VGFnSW5Cb2R5IiwiaW1hZ2VTdGFydFRhZ0luQm9keSIsImJ1dHRvblN0YXJ0VGFnSW5Cb2R5IiwiaWZyYW1lU3RhcnRUYWdJbkJvZHkiLCJzZWxlY3RTdGFydFRhZ0luQm9keSIsIm1lbnVpdGVtU3RhcnRUYWdJbkJvZHkiLCJmcmFtZXNldFN0YXJ0VGFnSW5Cb2R5IiwidGV4dGFyZWFTdGFydFRhZ0luQm9keSIsInBsYWludGV4dFN0YXJ0VGFnSW5Cb2R5IiwiYWRkcmVzc0VuZFRhZ0luQm9keSIsImFwcGxldEVuZFRhZ0luQm9keSIsInBFbmRUYWdJbkJvZHkiLCJsaUVuZFRhZ0luQm9keSIsImRkRW5kVGFnSW5Cb2R5IiwibnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkiLCJickVuZFRhZ0luQm9keSIsImJvZHlFbmRUYWdJbkJvZHkiLCJodG1sRW5kVGFnSW5Cb2R5IiwiZm9ybUVuZFRhZ0luQm9keSIsInRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AiLCJjdXJUbiIsInRkU3RhcnRUYWdJblRhYmxlIiwiY29sU3RhcnRUYWdJblRhYmxlIiwiZm9ybVN0YXJ0VGFnSW5UYWJsZSIsInRhYmxlU3RhcnRUYWdJblRhYmxlIiwidGJvZHlTdGFydFRhZ0luVGFibGUiLCJpbnB1dFN0YXJ0VGFnSW5UYWJsZSIsImNhcHRpb25TdGFydFRhZ0luVGFibGUiLCJjb2xncm91cFN0YXJ0VGFnSW5UYWJsZSIsInNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGUiLCJmb3N0ZXJQYXJlbnRpbmdFbmFibGVkIiwiX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUiLCJwcmV2T3BlbkVsZW1lbnQiLCJwcmV2T3BlbkVsZW1lbnRUbiIsInBhcnNlIiwiY3JlYXRlRG9jdW1lbnQiLCJwYXJzZUZyYWdtZW50IiwiZG9jdW1lbnRNb2NrIiwiX2luaXRUb2tlbml6ZXJGb3JGcmFnbWVudFBhcnNpbmciLCJfZmluZEZvcm1JbkZyYWdtZW50Q29udGV4dCIsInJvb3RFbGVtZW50IiwiZ2V0Rmlyc3RDaGlsZCIsImZyYWdtZW50IiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsInRtcGxJbnNlcnRpb25Nb2RlU3RhY2siLCJjdXJyZW50VG1wbEluc2VydGlvbk1vZGUiLCJfc2V0dXBUb2tlbml6ZXJDREFUQU1vZGUiLCJfcHJvY2Vzc0lucHV0VG9rZW4iLCJydW5QYXJzaW5nTG9vcEZvckN1cnJlbnRDaHVuayIsIndyaXRlQ2FsbGJhY2siLCJzY3JpcHQiLCJfZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCIsIl9pc0ludGVncmF0aW9uUG9pbnQiLCJuZXh0VG9rZW5pemVyU3RhdGUiLCJzd2l0Y2hUb1BsYWludGV4dFBhcnNpbmciLCJnZXRQYXJlbnROb2RlIiwic2V0RG9jdW1lbnRUeXBlIiwidG1wbCIsInNldFRlbXBsYXRlQ29udGVudCIsImNyZWF0ZUNvbW1lbnROb2RlIiwiX2Zvc3RlclBhcmVudFRleHQiLCJpbnNlcnRUZXh0IiwiZG9ub3IiLCJfc2hvdWxkUHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCIsImlzQ2hhcmFjdGVyVG9rZW4iLCJjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50IiwibnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQiLCJjYXVzZXNFeGl0IiwiY3VycmVudE5zIiwiYWRqdXN0VG9rZW5TVkdUYWdOYW1lIiwic3RhcnRUYWdJbkZvcmVpZ25Db250ZW50IiwiZW5kVGFnSW5Gb3JlaWduQ29udGVudCIsImlzSW50ZWdyYXRpb25Qb2ludCIsImxpc3RMZW5ndGgiLCJ1bm9wZW5JZHgiLCJsYXN0IiwiX3Jlc2V0SW5zZXJ0aW9uTW9kZUZvclNlbGVjdCIsInNlbGVjdElkeCIsImFuY2VzdG9yIiwib3BlbkVsZW1lbnQiLCJpbnNlcnRUZXh0QmVmb3JlIiwiZ2V0UHJvcGVydHlJbmZvcm1hdGlvbiIsInByb3BlcnR5Q29uZmlnIiwiYWJiciIsImFjY2VwdCIsImFjY2VwdENoYXJzZXQiLCJhY2Nlc3NLZXkiLCJhY3Rpb24iLCJhbGxvd0Z1bGxTY3JlZW4iLCJVU0VfQVRUUklCVVRFIiwiYWxsb3dUcmFuc3BhcmVuY3kiLCJhcyIsImFzeW5jIiwiYXV0b0NvbXBsZXRlIiwiYXV0b0ZvY3VzIiwiYXV0b1BsYXkiLCJjYXB0dXJlIiwiY2VsbFBhZGRpbmciLCJjZWxsU3BhY2luZyIsImNoYWxsZW5nZSIsImNoYXJTZXQiLCJVU0VfUFJPUEVSVFkiLCJjaXRlIiwiY29scyIsImNvbFNwYW4iLCJjb21tYW5kIiwiY29udGVudEVkaXRhYmxlIiwiY29udGV4dE1lbnUiLCJjb250cm9scyIsImNvbnRyb2xzTGlzdCIsImNvb3JkcyIsIk5VTUVSSUNfVkFMVUUiLCJjcm9zc09yaWdpbiIsImRhdGVUaW1lIiwiZGVmZXIiLCJkaXJOYW1lIiwiZG93bmxvYWQiLCJkcmFnZ2FibGUiLCJkcm9wem9uZSIsImVuY1R5cGUiLCJmb3JtIiwiZm9ybUFjdGlvbiIsImZvcm1FbmNUeXBlIiwiZm9ybU1ldGhvZCIsImZvcm1Ob1ZhbGlkYXRlIiwiZm9ybVRhcmdldCIsImZyYW1lQm9yZGVyIiwiaGVhZGVycyIsImhlaWdodCIsImhpZGRlbiIsImhyZWZMYW5nIiwiaHRtbEZvciIsImh0dHBFcXVpdiIsImlucHV0TW9kZSIsImlzTWFwIiwia2V5UGFyYW1zIiwia2V5VHlwZSIsImtpbmQiLCJsYWJlbCIsImxvb3AiLCJtYW5pZmVzdCIsIm1hcmdpbkhlaWdodCIsIm1hcmdpbldpZHRoIiwibWF4TGVuZ3RoIiwibWVkaWEiLCJtZWRpYUdyb3VwIiwibWVudSIsIm1ldGhvZCIsIm1pbkxlbmd0aCIsIm11bHRpcGxlIiwibXV0ZWQiLCJub25jZSIsIm5vVmFsaWRhdGUiLCJvcHRpbXVtIiwicGluZyIsInBsYXlzSW5saW5lIiwicG9zdGVyIiwicHJlbG9hZCIsInByb2ZpbGUiLCJyYWRpb0dyb3VwIiwicmVhZE9ubHkiLCJyZWZlcnJlclBvbGljeSIsInJlbCIsIlNQQUNFX1NFUEFSQVRFRCIsInJlcXVpcmVkIiwicmV2ZXJzZWQiLCJyb2xlIiwicm93U3BhbiIsInNhbmRib3giLCJzY29wZSIsInNjb3BlZCIsInNjcm9sbGluZyIsInNlYW1sZXNzIiwic2VsZWN0ZWQiLCJzaGFwZSIsInNpemVzIiwic2xvdCIsInNvcnRhYmxlIiwic29ydGVkIiwic3BhbiIsInNwZWxsQ2hlY2siLCJzcmNEb2MiLCJzcmNMYW5nIiwic3JjU2V0Iiwic3VtbWFyeSIsInRhYkluZGV4IiwidHJhbnNsYXRlIiwidHlwZU11c3RNYXRjaCIsInVzZU1hcCIsInZvbHVtZSIsIndpZHRoIiwid21vZGUiLCJhdXRvQ2FwaXRhbGl6ZSIsImF1dG9Db3JyZWN0IiwiYXV0b1NhdmUiLCJpdGVtUHJvcCIsIml0ZW1TY29wZSIsIml0ZW1UeXBlIiwiaXRlbUlEIiwiaXRlbVJlZiIsInNlY3VyaXR5IiwidW5zZWxlY3RhYmxlIiwieG1sTGFuZyIsInhtbEJhc2UiLCJwcm9wZXJ0eVRvQXR0cmlidXRlTWFwcGluZyIsInhtbGJhc2UiLCJ4bWxsYW5nIiwiaHRtbGZvciIsImh0dHBlcXVpdiIsImFjY2VwdGNoYXJzZXQiLCJpbmZvcm1hdGlvbiIsImxvd2VyIiwicHJvcGVydHlOYW1lIiwibXVzdFVzZUF0dHJpYnV0ZSIsIm11c3RVc2VQcm9wZXJ0eSIsIm92ZXJsb2FkZWRCb29sZWFuIiwibnVtZXJpYyIsInBvc2l0aXZlTnVtZXJpYyIsImNvbW1hU2VwYXJhdGVkIiwic3BhY2VTZXBhcmF0ZWQiLCJpbnNlbnNpdGl2ZSIsImJpdG1hc2siLCJpc0xhc3RDaGFyTG93ZXIiLCJwcmVzZXJ2ZUNhbWVsQ2FzZSIsImluZGljZXMiLCJ0b1Bvc2l0aW9uIiwib2Zmc2V0VG9Qb3NpdGlvbkZhY3RvcnkiLCJ0b09mZnNldCIsInBvc2l0aW9uVG9PZmZzZXRGYWN0b3J5Iiwic2VsZWN0b3IiLCJkb3QiLCJlbXB0eSIsIndoaXRlU3BhY2UiLCJzcGFjZSIsIkNfQ09NTUEiLCJwYWRMZWZ0IiwicGFkUmlnaHQiLCJzcGFjZXMiLCJjb21tYXMiLCJwYXJzZVNlbGVjdG9yIiwiaXNOb2RlIiwiYWRkUHJvcGVydHkiLCJhZGRDaGlsZCIsImluZm8iLCJwcm9wZXJ0eUluZm9ybWF0aW9uIiwicGFyc2VQcmltaXRpdmUiLCJjYW1lbGNhc2UiLCJtZXNzYWdlcyIsInRyYW5zZm9ybSIsInZmaWxlTG9jYXRpb24iLCJ2ZXJib3NlIiwiI2RvY3VtZW50IiwiI2RvY3VtZW50LWZyYWdtZW50IiwiI3RleHQiLCIjY29tbWVudCIsIiNkb2N1bWVudFR5cGUiLCJwdWJsaWMiLCJzeXN0ZW0iLCJxdWlya3MiLCJxdWlya3NNb2RlIiwiYXR0ciIsImRpcnR5IiwicmVmZXJlbmNlIiwicHJvcFBvc2l0aW9ucyIsIm9wZW5pbmciLCJLRUJBQl9SRUdFWCIsIlJFVkVSU0VfUkVHRVgiLCJ0b1N0ciIsImlzQXJncyIsImNhbGxlZSIsImhhcyIsImlzRW51bWVyYWJsZSIsImhhc0RvbnRFbnVtQnVnIiwiaGFzUHJvdG9FbnVtQnVnIiwiZG9udEVudW1zIiwiZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUiLCJleGNsdWRlZEtleXMiLCIkY29uc29sZSIsIiRleHRlcm5hbCIsIiRmcmFtZSIsIiRmcmFtZUVsZW1lbnQiLCIkZnJhbWVzIiwiJGlubmVySGVpZ2h0IiwiJGlubmVyV2lkdGgiLCIkb3V0ZXJIZWlnaHQiLCIkb3V0ZXJXaWR0aCIsIiRwYWdlWE9mZnNldCIsIiRwYWdlWU9mZnNldCIsIiRwYXJlbnQiLCIkc2Nyb2xsTGVmdCIsIiRzY3JvbGxUb3AiLCIkc2Nyb2xsWCIsIiRzY3JvbGxZIiwiJHNlbGYiLCIkd2Via2l0SW5kZXhlZERCIiwiJHdlYmtpdFN0b3JhZ2VJbmZvIiwiJHdpbmRvdyIsImhhc0F1dG9tYXRpb25FcXVhbGl0eUJ1ZyIsImsiLCJrZXlzU2hpbSIsIm9iamVjdCIsImlzQXJndW1lbnRzIiwidGhlS2V5cyIsInNraXBQcm90byIsInNraXBDb25zdHJ1Y3RvciIsImVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlSWZOb3RCdWdneSIsInNoaW0iLCJvcmlnaW5hbEtleXMiLCJoYXNPd24iLCJoYXNTeW1ib2xzIiwiU3ltYm9sIiwic3VwcG9ydHNEZXNjcmlwdG9ycyIsImFyZVByb3BlcnR5RGVzY3JpcHRvcnNTdXBwb3J0ZWQiLCJwcmVkaWNhdGUiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJlZGljYXRlcyIsImZvcmVhY2giLCJpbXBsZW1lbnRhdGlvbiIsImdldFBvbHlmaWxsIiwicG9seWZpbGwiLCJkZWZpbmUiLCJyIiwidiIsInJlYWN0IiwidmRvbSIsInRvSCIsImVsZW1lbnRzIiwiaHlwZXJzY3JpcHQiLCJkZWNsYXJhdGlvbiIsImRlY2xhcmF0aW9ucyIsImNhbWVsQ2FzZSIsInBhcnNlU3R5bGUiLCJjbGVhbnVwIiwic3VicHJvcCIsIm5hbiIsInBhcmFtQ2FzZSIsIiQwIiwiJDEiLCJpbnZhbGlkIiwidW5rbm93biIsIkZ1bmN0aW9uIiwibmF0aXZlSXNBcnJheSIsImdhcGxlc3MiLCJ6d2l0Y2giLCJtYXB6IiwiY3VzdG9tUHJvcHMiLCJzaGFsbG93IiwiYXR0cmlidXRlU3BhY2VzIiwiY29tbWVudCIsIm5hbWVzcGFjZXMiLCJtYXRobWwiLCJzdmciLCJ4bGluayIsInhtbCIsInBhdGNoIiwiRE9DVU1FTlQiLCJGUkFHTUVOVCIsImluZmVyTW9kZSIsInZvaWRzIiwidG9QYXJzZTUiLCJwNSIsInJhdyIsImZyb21QYXJzZTUiLCJtb2NrIiwiZG9jIiwidXRpbCIsIm1vZHVsZXMiLCJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiZ2V0dGVyIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfc2xpY2VkVG9BcnJheV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfaGVscGVyc19zbGljZWRUb0FycmF5X19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2NvcmVfanNfZ2V0X2l0ZXJhdG9yX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9jb3JlX2pzX2dldF9pdGVyYXRvcl9fX2RlZmF1bHQiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2RvbVRyZWVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fZm9udE1ldHJpY3NfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fc3ltYm9sc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X191dGlsc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19zdHJldGNoeV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X191bml0c19fIiwibWFpbml0TGV0dGVycyIsImxvb2t1cFN5bWJvbCIsImZvbnRGYW1pbHkiLCJtZXRyaWNzIiwiZ2V0Q2hhcmFjdGVyTWV0cmljcyIsIm1ha2VTeW1ib2wiLCJzeW1ib2xOb2RlIiwic2tldyIsIndhcm4iLCJtYXhGb250U2l6ZSIsInNpemVNdWx0aXBsaWVyIiwiaXNUaWdodCIsImNvbG9yIiwiZ2V0Q29sb3IiLCJtYXRoRGVmYXVsdCIsImZvbnRMb29rdXAiLCJtYXRoaXQiLCJmb250TmFtZSIsImZvbnRDbGFzcyIsImZvbnQiLCJfZm9udE5hbWUiLCJyZXRyaWV2ZVRleHRGb250TmFtZSIsImZvbnRXZWlnaHQiLCJmb250U2hhcGUiLCJfZm9udE5hbWUyIiwic2l6ZUVsZW1lbnRGcm9tQ2hpbGRyZW4iLCJlbGVtIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiIsIl9kaWRJdGVyYXRvckVycm9yIiwiX2l0ZXJhdG9yRXJyb3IiLCJfc3RlcCIsIl9pdGVyYXRvciIsImRvbmUiLCJyZXR1cm4iLCJtYWtlU3BhbiIsInJldHJpZXZlQmFzZUZvbnROYW1lIiwicmV0cmlldmVGb250U3R5bGVzTmFtZSIsImJhc2VGb250TmFtZSIsImZvbnRTdHlsZXNOYW1lIiwiZm9udE1hcCIsIm1hdGhiZiIsIm1hdGhybSIsInRleHRpdCIsIm1hdGhiYiIsIm1hdGhjYWwiLCJtYXRoZnJhayIsIm1hdGhzY3IiLCJtYXRoc2YiLCJtYXRodHQiLCJzdmdEYXRhIiwidmVjIiwibWF0aHN5bSIsIm1ha2VMaW5lU3BhbiIsImxpbmVIZWlnaHQiLCJmb250TWV0cmljcyIsImRlZmF1bHRSdWxlVGhpY2tuZXNzIiwicnVsZVNwYW4iLCJtYWtlQW5jaG9yIiwiYW5jaG9yIiwibWFrZUZyYWdtZW50IiwiZG9jdW1lbnRGcmFnbWVudCIsIm1ha2VWTGlzdCIsInBhcmFtcyIsIl9nZXRWTGlzdENoaWxkcmVuQW5kRCIsInBvc2l0aW9uVHlwZSIsIm9sZENoaWxkcmVuIiwiX2NoaWxkcmVuIiwiX2RlcHRoIiwiY3VyclBvcyIsImRpZmYiLCJfc2l6ZSIsImJvdHRvbSIsInBvc2l0aW9uRGF0YSIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yIiwiX2RpZEl0ZXJhdG9yRXJyb3IyIiwiX2l0ZXJhdG9yRXJyb3IyIiwiX3N0ZXAyIiwiX2l0ZXJhdG9yMiIsImdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aCIsInBzdHJ1dFNpemUiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyIsIl9kaWRJdGVyYXRvckVycm9yMyIsIl9pdGVyYXRvckVycm9yMyIsIl9zdGVwMyIsIl9pdGVyYXRvcjMiLCJfZWxlbSIsInBzdHJ1dCIsInJlYWxDaGlsZHJlbiIsIm1pblBvcyIsIm1heFBvcyIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240IiwiX2RpZEl0ZXJhdG9yRXJyb3I0IiwiX2l0ZXJhdG9yRXJyb3I0IiwiX3N0ZXA0IiwiX2l0ZXJhdG9yNCIsIl9jaGlsZCIsIl9lbGVtMiIsIndyYXBwZXJDbGFzc2VzIiwid3JhcHBlclN0eWxlIiwiY2hpbGRXcmFwIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0Iiwidmxpc3QiLCJkZXB0aFN0cnV0IiwidG9wU3RydXQiLCJ2dGFibGUiLCJtYWtlT3JkIiwiZ3JvdXAiLCJfZm9udE5hbWUzIiwiZm9udENsYXNzZXMiLCJmb250RGF0YSIsImJvbGRzeW1ib2wiLCJfZm9udERhdGEiLCJtYWtlVmVyYiIsImJvZHkiLCJzdGFyIiwibWFrZUdsdWUiLCJtZWFzdXJlbWVudCIsInJ1bGUiLCJzdGF0aWNTdmciLCJfc3ZnRGF0YSR2YWx1ZSIsInBhdGhOYW1lIiwicGF0aCIsInBhdGhOb2RlIiwic3ZnTm9kZSIsInZpZXdCb3giLCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwidHJ5Q29tYmluZUNoYXJzIiwidHJ5Q29tYmluZSIsInNwYWNpbmdGdW5jdGlvbnMiLCJcXHFxdWFkIiwiXFxxdWFkIiwiXFxlbnNwYWNlIiwiXFw7IiwiXFw6IiwiXFwsIiwiXFwhIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19nZXRfaXRlcmF0b3JfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfZ2V0X2l0ZXJhdG9yX19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fX2RlZmF1bHQiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3V0aWxzX18iLCJNYXRoTm9kZSIsInNldEF0dHJpYnV0ZSIsInRvTm9kZSIsIm1hcmt1cCIsInRvTWFya3VwIiwidG9UZXh0IiwiVGV4dE5vZGUiLCJtYWtlVGV4dCIsImdyb3VwVHlwZXMiLCJidWlsZEV4cHJlc3Npb24iLCJidWlsZEdyb3VwIiwidGV4RXhwcmVzc2lvbiIsIndyYXBwZXIiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hdGhNTFRyZWVfXyIsImFubm90YXRpb24iLCJzZW1hbnRpY3MiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2J1aWxkQ29tbW9uX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2ZvbnRNZXRyaWNzX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1BhcnNlRXJyb3JfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fU3R5bGVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fc3ltYm9sc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X191dGlsc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19zdHJldGNoeV9fIiwiZ2V0VmFyaWFudCIsImRlZmF1bHRWYXJpYW50IiwibWkiLCJtbiIsIm10ZXh0IiwibWF0aG9yZCIsInRleHRvcmQiLCJiaW4iLCJwdW5jdCIsIm9yZGdyb3VwIiwic3Vwc3ViIiwiaXNCcmFjZSIsImlzT3ZlciIsInN1cCIsIl9iYXNlMiIsImxpbWl0cyIsIkRJU1BMQVkiLCJfYmFzZSIsInNwYWNpbmciLCJob3JpekJyYWNlIiwiYWNjZW50Tm9kZSIsIm1hdGhNTG5vZGUiLCJ4QXJyb3ciLCJhcnJvd05vZGUiLCJsb3dlck5vZGUiLCJ1cHBlck5vZGUiLCJiZWxvdyIsIm1jbGFzcyIsInJhaXNlYm94IiwiZHkiLCJ1bml0IiwiZ3JvdXBzIiwicmVtb3ZlVW5uZWNlc3NhcnlSb3ciLCJfZnVuY3Rpb25zIiwibmFtZXMiLCJoYW5kbGVyIiwiaHRtbEJ1aWxkZXIiLCJtYXRobWxCdWlsZGVyIiwibnVtQXJncyIsImFyZ1R5cGVzIiwiZ3JlZWRpbmVzcyIsImFsbG93ZWRJblRleHQiLCJhbGxvd2VkSW5NYXRoIiwibnVtT3B0aW9uYWxBcmdzIiwiaW5maXgiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2J1aWxkSFRNTF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19idWlsZE1hdGhNTF9fIiwib3JkYXJndW1lbnQiLCJtYWtlTnVsbERlbGltaXRlciIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfanNvbl9zdHJpbmdpZnlfX19kZWZhdWx0IiwiYm90dG9tU3RydXQiLCJ2ZXJ0aWNhbEFsaWduIiwiaHRtbE5vZGUiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9jb3JlX2pzX2pzb25fc3RyaW5naWZ5X18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9oZWxwZXJzX3RvQ29uc3VtYWJsZUFycmF5X19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fUGFyc2VFcnJvcl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19TdHlsZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19idWlsZENvbW1vbl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19kb21UcmVlX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX3VuaXRzX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX3V0aWxzX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX3N0cmV0Y2h5X18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfX3NwYWNpbmdEYXRhX18iLCJpc0JpbkxlZnRDYW5jZWxsZXIiLCJpc1JlYWxHcm91cCIsImdldFR5cGVPZkRvbVRyZWUiLCJpc0JpblJpZ2h0Q2FuY2VsbGVyIiwic3R5bGVNYXAiLCJkaXNwbGF5IiwiVEVYVCIsInNjcmlwdHNjcmlwdCIsIlNDUklQVFNDUklQVCIsInN1cnJvdW5kaW5nIiwicmF3R3JvdXBzIiwibm9uU3BhY2VzIiwiX2kiLCJnZXRPdXRlcm1vc3ROb2RlIiwiX2kyIiwiX2xlZnQiLCJfcmlnaHQiLCJpc0xlZnRUaWdodCIsImdsdWVPcHRpb25zIiwiaGF2aW5nU2l6ZSIsImhhdmluZ1N0eWxlIiwiX2kzIiwicGFkZGluZ0xlZnQiLCJzaWRlIiwibW9yZUNsYXNzZXMiLCJiYXNlU2l6aW5nQ2xhc3NlcyIsImFsd2F5c0hhbmRsZVN1cFN1YiIsImlzQ2hhcmFjdGVyQm94Iiwic2hvdWxkSGFuZGxlU3VwU3ViIiwic3VwbSIsInN1Ym0iLCJuZXdPcHRpb25zIiwic3VwU2hpZnQiLCJzdWJTaGlmdCIsInN1cERyb3AiLCJzdWJEcm9wIiwibWluU3VwU2hpZnQiLCJzdXAxIiwiY3JhbXBlZCIsInN1cDMiLCJzdXAyIiwibXVsdGlwbGllciIsInNjcmlwdHNwYWNlIiwicHRQZXJFbSIsInhIZWlnaHQiLCJzdWIyIiwicnVsZVdpZHRoIiwicHNpIiwiX3ZsaXN0RWxlbSIsInN1YjEiLCJ2bGlzdEVsZW0iLCJoYXNTdXBTdWIiLCJzdXBTdWJHcm91cCIsImhhdmluZ0Jhc2VTdHlsZSIsImJyYWNlQm9keSIsInN2Z1NwYW4iLCJ2U3BhbiIsInVwcGVyR3JvdXAiLCJsb3dlckdyb3VwIiwiYXJyb3dCb2R5IiwiYXJyb3dTaGlmdCIsImF4aXNIZWlnaHQiLCJ1cHBlclNoaWZ0IiwibG93ZXJTaGlmdCIsInNpemluZyIsImJhc2VPcHRpb25zIiwiZ3JvdXBOb2RlIiwic2l6aW5nQ2xhc3NlcyIsIm5hdGl2ZUluZGV4T2YiLCJ1cHBlcmNhc2UiLCJFU0NBUEVfTE9PS1VQIiwiJiIsIj4iLCI8IiwiXCIiLCInIiwiRVNDQVBFX1JFR0VYIiwic2V0VGV4dENvbnRlbnQiLCJ0ZXN0Tm9kZSIsImlubmVyVGV4dCIsImdldEJhc2VFbGVtIiwiZGVmbHQiLCJzZXR0aW5nIiwiZGVmYXVsdElmVW5kZWZpbmVkIiwiaHlwaGVuYXRlIiwiY2xlYXJOb2RlIiwiYmFzZUVsZW0iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19fZGVmYXVsdCIsIlBhcnNlRXJyb3IiLCJsZXhlciIsInVuZGVybGluZWQiLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiY29yZSIsIl9fZSIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX19kZWZhdWx0IiwiU3R5bGUiLCJfc3VwIiwiX3N1YiIsIl9mcmFjTnVtIiwiX2ZyYWNEZW4iLCJfY3JhbXAiLCJfdGV4dCIsIl9kZWZpbmVQcm9wZXJ0eSIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZXNjcmlwdG9yIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwic3RvcmUiLCJ1aWQiLCJVU0VfU1lNQk9MIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2JhYmVsX3J1bnRpbWVfY29yZV9qc19vYmplY3RfYXNzaWduX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfYmFiZWxfcnVudGltZV9jb3JlX2pzX29iamVjdF9hc3NpZ25fX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fX2RlZmF1bHQiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fdW5pY29kZVNjcmlwdHNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fc3ZnR2VvbWV0cnlfXyIsImNyZWF0ZUNsYXNzIiwiYXR0cmlidXRlIiwiZnJhZyIsImlDb21iaW5hdGlvbnMiLCLDriIsIsOvIiwiw60iLCLDrCIsIl9zdHlsZSIsIm5lZWRzU3BhbiIsImFsdGVybmF0ZSIsImxpbmVOb2RlIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kb21UcmVlX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2J1aWxkQ29tbW9uX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX21hdGhNTFRyZWVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fdXRpbHNfXyIsInN0cmV0Y2h5Q29kZVBvaW50Iiwid2lkZWhhdCIsIndpZGV0aWxkZSIsInV0aWxkZSIsIm92ZXJsZWZ0YXJyb3ciLCJ1bmRlcmxlZnRhcnJvdyIsInhsZWZ0YXJyb3ciLCJvdmVycmlnaHRhcnJvdyIsInVuZGVycmlnaHRhcnJvdyIsInhyaWdodGFycm93IiwidW5kZXJicmFjZSIsIm92ZXJicmFjZSIsIm92ZXJsZWZ0cmlnaHRhcnJvdyIsInVuZGVybGVmdHJpZ2h0YXJyb3ciLCJ4bGVmdHJpZ2h0YXJyb3ciLCJPdmVycmlnaHRhcnJvdyIsInhSaWdodGFycm93Iiwib3ZlcmxlZnRoYXJwb29uIiwieGxlZnRoYXJwb29udXAiLCJvdmVycmlnaHRoYXJwb29uIiwieHJpZ2h0aGFycG9vbnVwIiwieExlZnRhcnJvdyIsInhMZWZ0cmlnaHRhcnJvdyIsInhob29rbGVmdGFycm93IiwieGhvb2tyaWdodGFycm93IiwieG1hcHN0byIsInhyaWdodGhhcnBvb25kb3duIiwieGxlZnRoYXJwb29uZG93biIsInhyaWdodGxlZnRoYXJwb29ucyIsInhsZWZ0cmlnaHRoYXJwb29ucyIsInh0d29oZWFkbGVmdGFycm93IiwieHR3b2hlYWRyaWdodGFycm93IiwieGxvbmdlcXVhbCIsInh0b2Zyb20iLCJ4cmlnaHRsZWZ0YXJyb3dzIiwieHJpZ2h0ZXF1aWxpYnJpdW0iLCJ4bGVmdGVxdWlsaWJyaXVtIiwia2F0ZXhJbWFnZXNEYXRhIiwib3ZlcmxpbmVzZWdtZW50IiwidW5kZXJsaW5lc2VnbWVudCIsIm92ZXJncm91cCIsInVuZGVyZ3JvdXAiLCJncm91cExlbmd0aCIsImVuY2xvc2VTcGFuIiwiaW1nIiwidG90YWxIZWlnaHQiLCJib3JkZXJDb2xvciIsImxpbmVzIiwieDEiLCJ5MSIsIngyIiwieTIiLCJzdHJva2Utd2lkdGgiLCJsaW5lVGhpY2tuZXNzIiwicGFyZW50Q2xhc3MiLCJfYnVpbGRTdmdTcGFuXyIsInZpZXdCb3hXaWR0aCIsIm51bUNoYXJzIiwidmlld0JveEhlaWdodCIsIl9oZWlnaHQiLCJpbWdJbmRleCIsIm1pbldpZHRoIiwic3BhbnMiLCJfa2F0ZXhJbWFnZXNEYXRhJGxhYmUiLCJwYXRocyIsIl9taW5XaWR0aCIsIl92aWV3Qm94SGVpZ2h0IiwiYWxpZ24xIiwiX2hlaWdodDIiLCJudW1TdmdDaGlsZHJlbiIsIndpZHRoQ2xhc3NlcyIsImFsaWducyIsIl9wYXRoIiwiX3N2Z05vZGUiLCJfc3BhbiIsImJ1aWxkU3ZnU3Bhbl8iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1NvdXJjZUxvY2F0aW9uX18iLCJQYXJzZU5vZGUiLCJmaXJzdCIsInJhbmdlIiwiYW5PYmplY3QiLCJJRThfRE9NX0RFRklORSIsInRvUHJpbWl0aXZlIiwiZFAiLCJPIiwiQXR0cmlidXRlcyIsIl9fZyIsInZhbGlkVW5pdCIsImNhbGN1bGF0ZVNpemUiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1BhcnNlRXJyb3JfXyIsInB0UGVyVW5pdCIsInB0IiwibW0iLCJjbSIsImluIiwiYnAiLCJwYyIsImRkIiwiY2MiLCJuZCIsIm5jIiwic3AiLCJweCIsInJlbGF0aXZlVW5pdCIsImV4IiwiZW0iLCJtdSIsInNpemVWYWx1ZSIsInNjYWxlIiwiY3NzRW1QZXJNdSIsInVuaXRPcHRpb25zIiwicXVhZCIsIm1heFNpemUiLCJpdCIsImhpZGUiLCIkZXhwb3J0IiwiSVNfRk9SQ0VEIiwiRiIsIklTX0dMT0JBTCIsIkciLCJJU19TVEFUSUMiLCJJU19QUk9UTyIsIklTX0JJTkQiLCJJU19XUkFQIiwiVyIsImV4cFByb3RvIiwiQyIsInZpcnR1YWwiLCJSIiwiY3JlYXRlRGVzYyIsIlRva2VuIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19Tb3VyY2VMb2NhdGlvbl9fIiwiZW5kVG9rZW4iLCJkZWZpbmVTeW1ib2wiLCJhY2NlcHRVbmljb2RlQ2hhciIsIm1haW4iLCJhbXMiLCJhY2NlbnQiLCJvcCIsIl9jaCIsImxldHRlcnMiLCJfY2gyIiwiX2NoMyIsImRlZmluZWQiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3VuaWNvZGVTY3JpcHRzX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX3N1Ym1vZHVsZXNfa2F0ZXhfZm9udHNfZm9udE1ldHJpY3NEYXRhX18iLCJzaWdtYXNBbmRYaXMiLCJzbGFudCIsInN0cmV0Y2giLCJzaHJpbmsiLCJleHRyYVNwYWNlIiwibnVtMSIsIm51bTIiLCJudW0zIiwiZGVub20xIiwiZGVub20yIiwiZGVsaW0xIiwiZGVsaW0yIiwiYmlnT3BTcGFjaW5nMSIsImJpZ09wU3BhY2luZzIiLCJiaWdPcFNwYWNpbmczIiwiYmlnT3BTcGFjaW5nNCIsImJpZ09wU3BhY2luZzUiLCJzcXJ0UnVsZVRoaWNrbmVzcyIsImRvdWJsZVJ1bGVTZXAiLCJleHRyYUNoYXJhY3Rlck1hcCIsIsOFIiwiw4ciLCLDkCIsIsOeIiwiw6UiLCLDpyIsIsOwIiwiw74iLCLQkCIsItCRIiwi0JIiLCLQkyIsItCUIiwi0JUiLCLQliIsItCXIiwi0JgiLCLQmSIsItCaIiwi0JsiLCLQnCIsItCdIiwi0J4iLCLQnyIsItCgIiwi0KEiLCLQoiIsItCjIiwi0KQiLCLQpSIsItCmIiwi0KciLCLQqCIsItCpIiwi0KoiLCLQqyIsItCsIiwi0K0iLCLQriIsItCvIiwi0LAiLCLQsSIsItCyIiwi0LMiLCLQtCIsItC1Iiwi0LYiLCLQtyIsItC4Iiwi0LkiLCLQuiIsItC7Iiwi0LwiLCLQvSIsItC+Iiwi0L8iLCLRgCIsItGBIiwi0YIiLCLRgyIsItGEIiwi0YUiLCLRhiIsItGHIiwi0YgiLCLRiSIsItGKIiwi0YsiLCLRjCIsItGNIiwi0Y4iLCLRjyIsImZvbnRNZXRyaWNzQnlTaXplSW5kZXgiLCJnZXRGb250TWV0cmljcyIsInNpemVJbmRleCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfb2JqZWN0X2ZyZWV6ZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2JhYmVsX3J1bnRpbWVfY29yZV9qc19vYmplY3RfZnJlZXplX19fZGVmYXVsdCIsIlNvdXJjZUxvY2F0aW9uIiwic2Vjb25kIiwicmFuZG9tIiwiYml0bWFwIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX191dGlsc19fIiwiU2V0dGluZ3MiLCJkaXNwbGF5TW9kZSIsInRocm93T25FcnJvciIsImVycm9yQ29sb3IiLCJtYWNyb3MiLCJjb2xvcklzVGV4dENvbG9yIiwiX2Zyb20iLCJfZnJvbTIiLCJhcnIyIiwiJGF0IiwiaXRlcmF0ZWQiLCJfdCIsInBvaW50IiwiY2VpbCIsIiRrZXlzIiwiZW51bUJ1Z0tleXMiLCJJT2JqZWN0Iiwic2hhcmVkIiwiY29kZXBvaW50Iiwic2NyaXB0RGF0YSIsImFsbEJsb2NrcyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfdG9Db25zdW1hYmxlQXJyYXlfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfdG9Db25zdW1hYmxlQXJyYXlfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19mb250TWV0cmljc19fIiwic2l6ZVN0eWxlTWFwIiwic2l6ZU11bHRpcGxpZXJzIiwic2l6ZUF0U3R5bGUiLCJPcHRpb25zIiwiQkFTRVNJWkUiLCJ0ZXh0U2l6ZSIsInBoYW50b20iLCJfZm9udE1ldHJpY3MiLCJleHRlbnNpb24iLCJleHRlbmQiLCJjcmFtcCIsIndhbnRTaXplIiwib2xkT3B0aW9ucyIsImNvbG9yTWFwIiwia2F0ZXgtYmx1ZSIsImthdGV4LW9yYW5nZSIsImthdGV4LXBpbmsiLCJrYXRleC1yZWQiLCJrYXRleC1ncmVlbiIsImthdGV4LWdyYXkiLCJrYXRleC1wdXJwbGUiLCJrYXRleC1ibHVlQSIsImthdGV4LWJsdWVCIiwia2F0ZXgtYmx1ZUMiLCJrYXRleC1ibHVlRCIsImthdGV4LWJsdWVFIiwia2F0ZXgtdGVhbEEiLCJrYXRleC10ZWFsQiIsImthdGV4LXRlYWxDIiwia2F0ZXgtdGVhbEQiLCJrYXRleC10ZWFsRSIsImthdGV4LWdyZWVuQSIsImthdGV4LWdyZWVuQiIsImthdGV4LWdyZWVuQyIsImthdGV4LWdyZWVuRCIsImthdGV4LWdyZWVuRSIsImthdGV4LWdvbGRBIiwia2F0ZXgtZ29sZEIiLCJrYXRleC1nb2xkQyIsImthdGV4LWdvbGREIiwia2F0ZXgtZ29sZEUiLCJrYXRleC1yZWRBIiwia2F0ZXgtcmVkQiIsImthdGV4LXJlZEMiLCJrYXRleC1yZWREIiwia2F0ZXgtcmVkRSIsImthdGV4LW1hcm9vbkEiLCJrYXRleC1tYXJvb25CIiwia2F0ZXgtbWFyb29uQyIsImthdGV4LW1hcm9vbkQiLCJrYXRleC1tYXJvb25FIiwia2F0ZXgtcHVycGxlQSIsImthdGV4LXB1cnBsZUIiLCJrYXRleC1wdXJwbGVDIiwia2F0ZXgtcHVycGxlRCIsImthdGV4LXB1cnBsZUUiLCJrYXRleC1taW50QSIsImthdGV4LW1pbnRCIiwia2F0ZXgtbWludEMiLCJrYXRleC1ncmF5QSIsImthdGV4LWdyYXlCIiwia2F0ZXgtZ3JheUMiLCJrYXRleC1ncmF5RCIsImthdGV4LWdyYXlFIiwia2F0ZXgtZ3JheUYiLCJrYXRleC1ncmF5RyIsImthdGV4LWdyYXlIIiwia2F0ZXgtZ3JheUkiLCJrYXRleC1rYUJsdWUiLCJrYXRleC1rYUdyZWVuIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19TdHlsZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19idWlsZENvbW1vbl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19mb250TWV0cmljc19fIiwiZ2V0TWV0cmljcyIsInN0eWxlV3JhcCIsImRlbGltIiwidG9TdHlsZSIsImRlbGltU2l6ZU11bHRpcGxpZXIiLCJjZW50ZXJTcGFuIiwibWFrZUxhcmdlRGVsaW0iLCJjZW50ZXIiLCJtYXRocm1TaXplIiwibWFrZUlubmVyIiwic2l6ZUNsYXNzIiwibWFrZVN0YWNrZWREZWxpbSIsImhlaWdodFRvdGFsIiwibWlkZGxlIiwidG9wTWV0cmljcyIsInRvcEhlaWdodFRvdGFsIiwicmVwZWF0TWV0cmljcyIsInJlcGVhdEhlaWdodFRvdGFsIiwiYm90dG9tTWV0cmljcyIsImJvdHRvbUhlaWdodFRvdGFsIiwibWlkZGxlSGVpZ2h0VG90YWwiLCJtaWRkbGVGYWN0b3IiLCJtaWRkbGVNZXRyaWNzIiwibWluSGVpZ2h0IiwicmVwZWF0Q291bnQiLCJyZWFsSGVpZ2h0VG90YWwiLCJpbm5lcnMiLCJzcXJ0U3ZnIiwic3FydE5hbWUiLCJzdGFja0xhcmdlRGVsaW1pdGVycyIsInN0YWNrQWx3YXlzRGVsaW1pdGVycyIsInN0YWNrTmV2ZXJEZWxpbWl0ZXJzIiwic2l6ZVRvTWF4SGVpZ2h0Iiwic3RhY2tOZXZlckRlbGltaXRlclNlcXVlbmNlIiwic3RhY2tBbHdheXNEZWxpbWl0ZXJTZXF1ZW5jZSIsInN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZSIsInRyYXZlcnNlU2VxdWVuY2UiLCJzZXF1ZW5jZSIsImhlaWdodERlcHRoIiwibWFrZUN1c3RvbVNpemVkRGVsaW0iLCJkZWxpbVR5cGUiLCJtYWtlU21hbGxEZWxpbSIsInNxcnRJbWFnZSIsInNwYW5IZWlnaHQiLCJ0ZXhIZWlnaHQiLCJhZHZhbmNlV2lkdGgiLCJzaXplZERlbGltIiwiY3VzdG9tU2l6ZWREZWxpbSIsImxlZnRSaWdodERlbGltIiwiZGVsaW1pdGVyRXh0ZW5kIiwibWF4RGlzdEZyb21BeGlzIiwiZmFpbHMiLCJleHAiLCJhRnVuY3Rpb24iLCJMSUJSQVJZIiwicmVkZWZpbmUiLCJJdGVyYXRvcnMiLCIkaXRlckNyZWF0ZSIsInNldFRvU3RyaW5nVGFnIiwiZ2V0UHJvdG90eXBlT2YiLCJJVEVSQVRPUiIsIkJVR0dZIiwicmV0dXJuVGhpcyIsIkJhc2UiLCJJU19TRVQiLCJGT1JDRUQiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldE1ldGhvZCIsInByb3RvIiwiVEFHIiwiREVGX1ZBTFVFUyIsIlZBTFVFU19CVUciLCIkbmF0aXZlIiwiJGRlZmF1bHQiLCIkZW50cmllcyIsIiRhbnlOYXRpdmUiLCJjb2YiLCJ0b0ludGVnZXIiLCJzdGF0IiwiY2xhc3NvZiIsImdldEl0ZXJhdG9yTWV0aG9kIiwiQVJHIiwiVCIsInRyeUdldCIsIl9pc0l0ZXJhYmxlMyIsIl9nZXRJdGVyYXRvcjMiLCJfbiIsIl9kIiwiX2UiLCJfcyIsInNsaWNlSXRlcmF0b3IiLCJUT19TVFJJTkdfVEFHIiwiY29sbGVjdGlvbnMiLCJDb2xsZWN0aW9uIiwiQU1TLVJlZ3VsYXIiLCI2NSIsIjY2IiwiNjciLCI2OCIsIjY5IiwiNzAiLCI3MSIsIjcyIiwiNzMiLCI3NCIsIjc1IiwiNzYiLCI3NyIsIjc4IiwiNzkiLCI4MCIsIjgxIiwiODIiLCI4MyIsIjg0IiwiODUiLCI4NiIsIjg3IiwiODgiLCI4OSIsIjkwIiwiMTA3IiwiMTY1IiwiMTc0IiwiMjQwIiwiMjk1IiwiNzEwIiwiNzMyIiwiNzcwIiwiNzcxIiwiOTg5IiwiMTAwOCIsIjgyNDUiLCI4NDYzIiwiODQ4NyIsIjg0OTgiLCI4NTAyIiwiODUwMyIsIjg1MDQiLCI4NTEzIiwiODU5MiIsIjg1OTQiLCI4NjAyIiwiODYwMyIsIjg2MDYiLCI4NjA4IiwiODYxMCIsIjg2MTEiLCI4NjE5IiwiODYyMCIsIjg2MjEiLCI4NjIyIiwiODYyNCIsIjg2MjUiLCI4NjMwIiwiODYzMSIsIjg2MzQiLCI4NjM1IiwiODYzOCIsIjg2MzkiLCI4NjQyIiwiODY0MyIsIjg2NDQiLCI4NjQ2IiwiODY0NyIsIjg2NDgiLCI4NjQ5IiwiODY1MCIsIjg2NTEiLCI4NjUyIiwiODY1MyIsIjg2NTQiLCI4NjU1IiwiODY2NiIsIjg2NjciLCI4NjY5IiwiODY3MiIsIjg2NzQiLCI4NzA1IiwiODcwOCIsIjg3MDkiLCI4NzE3IiwiODcyMiIsIjg3MjQiLCI4NzI2IiwiODczMyIsIjg3MzYiLCI4NzM3IiwiODczOCIsIjg3MzkiLCI4NzQwIiwiODc0MSIsIjg3NDIiLCI4NzU2IiwiODc1NyIsIjg3NjQiLCI4NzY1IiwiODc2OSIsIjg3NzAiLCI4Nzc0IiwiODc3NiIsIjg3NzgiLCI4NzgyIiwiODc4MyIsIjg3ODUiLCI4Nzg2IiwiODc4NyIsIjg3OTAiLCI4NzkxIiwiODc5NiIsIjg4MDYiLCI4ODA3IiwiODgwOCIsIjg4MDkiLCI4ODEyIiwiODgxNCIsIjg4MTUiLCI4ODE2IiwiODgxNyIsIjg4MTgiLCI4ODE5IiwiODgyMiIsIjg4MjMiLCI4ODI4IiwiODgyOSIsIjg4MzAiLCI4ODMxIiwiODgzMiIsIjg4MzMiLCI4ODQwIiwiODg0MSIsIjg4NDIiLCI4ODQzIiwiODg0NyIsIjg4NDgiLCI4ODU4IiwiODg1OSIsIjg4NjEiLCI4ODYyIiwiODg2MyIsIjg4NjQiLCI4ODY1IiwiODg3MiIsIjg4NzMiLCI4ODc0IiwiODg3NiIsIjg4NzciLCI4ODc4IiwiODg3OSIsIjg4ODIiLCI4ODgzIiwiODg4NCIsIjg4ODUiLCI4ODg4IiwiODg5MCIsIjg4OTEiLCI4ODkyIiwiODkwMSIsIjg5MDMiLCI4OTA1IiwiODkwNiIsIjg5MDciLCI4OTA4IiwiODkwOSIsIjg5MTAiLCI4OTExIiwiODkxMiIsIjg5MTMiLCI4OTE0IiwiODkxNSIsIjg5MTYiLCI4OTE4IiwiODkxOSIsIjg5MjAiLCI4OTIxIiwiODkyMiIsIjg5MjMiLCI4OTI2IiwiODkyNyIsIjg5MjgiLCI4OTI5IiwiODkzNCIsIjg5MzUiLCI4OTM2IiwiODkzNyIsIjg5MzgiLCI4OTM5IiwiODk0MCIsIjg5NDEiLCI4OTk0IiwiODk5NSIsIjk0MTYiLCI5NDg0IiwiOTQ4OCIsIjk0OTIiLCI5NDk2IiwiOTU4NSIsIjk1ODYiLCI5NjMyIiwiOTYzMyIsIjk2NTAiLCI5NjUxIiwiOTY1NCIsIjk2NjAiLCI5NjYxIiwiOTY2NCIsIjk2NzQiLCI5NzMzIiwiMTAwMDMiLCIxMDAxNiIsIjEwNzMxIiwiMTA4NDYiLCIxMDg3NyIsIjEwODc4IiwiMTA4ODUiLCIxMDg4NiIsIjEwODg3IiwiMTA4ODgiLCIxMDg4OSIsIjEwODkwIiwiMTA4OTEiLCIxMDg5MiIsIjEwOTAxIiwiMTA5MDIiLCIxMDkzMyIsIjEwOTM0IiwiMTA5MzUiLCIxMDkzNiIsIjEwOTM3IiwiMTA5MzgiLCIxMDk0OSIsIjEwOTUwIiwiMTA5NTUiLCIxMDk1NiIsIjU3MzUwIiwiNTczNTEiLCI1NzM1MiIsIjU3MzUzIiwiNTczNTYiLCI1NzM1NyIsIjU3MzU4IiwiNTczNTkiLCI1NzM2MCIsIjU3MzYxIiwiNTczNjYiLCI1NzM2NyIsIjU3MzY4IiwiNTczNjkiLCI1NzM3MCIsIjU3MzcxIiwiQ2FsaWdyYXBoaWMtUmVndWxhciIsIjQ4IiwiNDkiLCI1MCIsIjUxIiwiNTIiLCI1MyIsIjU0IiwiNTUiLCI1NiIsIjU3IiwiRnJha3R1ci1SZWd1bGFyIiwiMzMiLCIzNCIsIjM4IiwiMzkiLCI0MCIsIjQxIiwiNDIiLCI0MyIsIjQ0IiwiNDUiLCI0NiIsIjQ3IiwiNTgiLCI1OSIsIjYxIiwiNjMiLCI5MSIsIjkzIiwiOTQiLCI5NyIsIjk4IiwiOTkiLCIxMDAiLCIxMDEiLCIxMDIiLCIxMDMiLCIxMDQiLCIxMDUiLCIxMDYiLCIxMDgiLCIxMDkiLCIxMTAiLCIxMTEiLCIxMTIiLCIxMTMiLCIxMTQiLCIxMTUiLCIxMTYiLCIxMTciLCIxMTgiLCIxMTkiLCIxMjAiLCIxMjEiLCIxMjIiLCI4MjE2IiwiODIxNyIsIjU4MTEyIiwiNTgxMTMiLCI1ODExNCIsIjU4MTE1IiwiNTgxMTYiLCI1ODExNyIsIjU4MTE4IiwiNTgxMTkiLCJNYWluLUJvbGQiLCIzNSIsIjM2IiwiMzciLCI2MCIsIjYyIiwiNjQiLCI5MiIsIjk1IiwiMTIzIiwiMTI0IiwiMTI1IiwiMTI2IiwiMTY4IiwiMTcyIiwiMTc2IiwiMTc3IiwiMTk4IiwiMjE1IiwiMjE2IiwiMjIzIiwiMjMwIiwiMjQ3IiwiMjQ4IiwiMzA1IiwiMzM4IiwiMzM5IiwiNTY3IiwiNzExIiwiNzEzIiwiNzE0IiwiNzE1IiwiNzI4IiwiNzI5IiwiNzMwIiwiNzMzIiwiODI0IiwiOTE1IiwiOTE2IiwiOTIwIiwiOTIzIiwiOTI2IiwiOTI4IiwiOTMxIiwiOTMzIiwiOTM0IiwiOTM2IiwiOTM3IiwiODIxMSIsIjgyMTIiLCI4MjIwIiwiODIyMSIsIjgyMjQiLCI4MjI1IiwiODI0MiIsIjg0MDciLCI4NDY1IiwiODQ2NyIsIjg0NzIiLCI4NDc2IiwiODUwMSIsIjg1OTMiLCI4NTk1IiwiODU5NiIsIjg1OTciLCI4NTk4IiwiODU5OSIsIjg2MDAiLCI4NjAxIiwiODYzNiIsIjg2MzciLCI4NjQwIiwiODY0MSIsIjg2NTYiLCI4NjU3IiwiODY1OCIsIjg2NTkiLCI4NjYwIiwiODY2MSIsIjg3MDQiLCI4NzA2IiwiODcwNyIsIjg3MTEiLCI4NzEyIiwiODcxNSIsIjg3MjMiLCI4NzI1IiwiODcyNyIsIjg3MjgiLCI4NzI5IiwiODczMCIsIjg3MzQiLCI4NzQzIiwiODc0NCIsIjg3NDUiLCI4NzQ2IiwiODc0NyIsIjg3NjgiLCI4NzcxIiwiODc4MSIsIjg4MDEiLCI4ODA0IiwiODgwNSIsIjg4MTAiLCI4ODExIiwiODgyNiIsIjg4MjciLCI4ODM0IiwiODgzNSIsIjg4MzgiLCI4ODM5IiwiODg0NiIsIjg4NDkiLCI4ODUwIiwiODg1MSIsIjg4NTIiLCI4ODUzIiwiODg1NCIsIjg4NTUiLCI4ODU2IiwiODg1NyIsIjg4NjYiLCI4ODY3IiwiODg2OCIsIjg4NjkiLCI4OTAwIiwiODkwMiIsIjg5NjgiLCI4OTY5IiwiODk3MCIsIjg5NzEiLCI5NjU3IiwiOTY2NyIsIjk3MTEiLCI5ODI0IiwiOTgyNSIsIjk4MjYiLCI5ODI3IiwiOTgzNyIsIjk4MzgiLCI5ODM5IiwiMTAyMTYiLCIxMDIxNyIsIjEwODE1IiwiMTA5MjciLCIxMDkyOCIsIk1haW4tQm9sZEl0YWxpYyIsIjE2MyIsIk1haW4tSXRhbGljIiwiTWFpbi1SZWd1bGFyIiwiMzIiLCIxNjAiLCI4MjMwIiwiODYxNCIsIjg2MTciLCI4NjE4IiwiODc3MyIsIjg3ODQiLCI4ODAwIiwiODkwNCIsIjg5NDIiLCI4OTQzIiwiODk0NSIsIjkxMzYiLCI5MTM3IiwiMTAyMjIiLCIxMDIyMyIsIjEwMjI5IiwiMTAyMzAiLCIxMDIzMSIsIjEwMjMyIiwiMTAyMzMiLCIxMDIzNCIsIjEwMjM2IiwiTWF0aC1Cb2xkSXRhbGljIiwiOTQ1IiwiOTQ2IiwiOTQ3IiwiOTQ4IiwiOTQ5IiwiOTUwIiwiOTUxIiwiOTUyIiwiOTUzIiwiOTU0IiwiOTU1IiwiOTU2IiwiOTU3IiwiOTU4IiwiOTU5IiwiOTYwIiwiOTYxIiwiOTYyIiwiOTYzIiwiOTY0IiwiOTY1IiwiOTY2IiwiOTY3IiwiOTY4IiwiOTY5IiwiOTc3IiwiOTgxIiwiOTgyIiwiMTAwOSIsIjEwMTMiLCJNYXRoLUl0YWxpYyIsIk1hdGgtUmVndWxhciIsIlNhbnNTZXJpZi1Cb2xkIiwiMTgwIiwiU2Fuc1NlcmlmLUl0YWxpYyIsIlNhbnNTZXJpZi1SZWd1bGFyIiwiNzc2IiwiU2NyaXB0LVJlZ3VsYXIiLCJTaXplMS1SZWd1bGFyIiwiODIxNCIsIjg3MTkiLCI4NzIwIiwiODcyMSIsIjg3NDgiLCI4NzQ5IiwiODc1MCIsIjg4OTYiLCI4ODk3IiwiODg5OCIsIjg4OTkiLCI5MTY4IiwiMTA3NTIiLCIxMDc1MyIsIjEwNzU0IiwiMTA3NTYiLCIxMDc1OCIsIlNpemUyLVJlZ3VsYXIiLCJTaXplMy1SZWd1bGFyIiwiU2l6ZTQtUmVndWxhciIsIjkxMTUiLCI5MTE2IiwiOTExNyIsIjkxMTgiLCI5MTE5IiwiOTEyMCIsIjkxMjEiLCI5MTIyIiwiOTEyMyIsIjkxMjQiLCI5MTI1IiwiOTEyNiIsIjkxMjciLCI5MTI4IiwiOTEyOSIsIjkxMzAiLCI5MTMxIiwiOTEzMiIsIjkxMzMiLCI5MTQzIiwiNTczNDQiLCI1NzM0NSIsIjU3NjgwIiwiNTc2ODEiLCI1NzY4MiIsIjU3NjgzIiwiVHlwZXdyaXRlci1SZWd1bGFyIiwiOTYiLCIxMjciLCI5MjUxIiwic2l6aW5nR3JvdXAiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RlZmluZUZ1bmN0aW9uX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkSFRNTF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19idWlsZE1hdGhNTF9fIiwic2l6ZUZ1bmNzIiwiYnJlYWtPblRva2VuVGV4dCIsImZ1bmNOYW1lIiwiY29uc3VtZVNwYWNlcyIsInBhcnNlRXhwcmVzc2lvbiIsIl9lbnZpcm9ubWVudHMiLCJjb21iaW5pbmdEaWFjcml0aWNhbE1hcmtzRW5kUmVnZXgiLCJjb250cm9sV29yZFJlZ2V4IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX21hdGNoX2F0X18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfbWF0Y2hfYXRfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19Tb3VyY2VMb2NhdGlvbl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19Ub2tlbl9fIiwiY29tYmluaW5nRGlhY3JpdGljYWxNYXJrU3RyaW5nIiwidG9rZW5SZWdleCIsImNvbW1lbnRSZWdleCIsIkxleGVyIiwibGV4IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19zcmNfa2F0ZXhfbGVzc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19rYXRleF9qc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19zcmNfUGFyc2VFcnJvcl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19zcmNfU2V0dGluZ3NfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fc3JjX2J1aWxkVHJlZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19zcmNfcGFyc2VUcmVlX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3NyY191dGlsc19fIiwiYmFzZU5vZGUiLCJyZW5kZXJUb0RvbVRyZWUiLCJjb21wYXRNb2RlIiwicmVuZGVyVG9TdHJpbmciLCJfX3BhcnNlIiwiX19yZW5kZXJUb0RvbVRyZWUiLCJfX3JlbmRlclRvSFRNTFRyZWUiLCJmcmVlemUiLCJvbkZyZWV6ZSIsIiRmcmVlemUiLCJzZXREZXNjIiwiaXNFeHRlbnNpYmxlIiwiRlJFRVpFIiwicHJldmVudEV4dGVuc2lvbnMiLCJzZXRNZXRhIiwidyIsIk5FRUQiLCJmYXN0S2V5IiwiZ2V0V2VhayIsInZhbHVlT2YiLCIkT2JqZWN0IiwiYnVpbGRUcmVlIiwiYnVpbGRIVE1MVHJlZSIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fT3B0aW9uc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19TdHlsZV9fIiwib3B0aW9uc0Zyb21TZXR0aW5ncyIsIm1hdGhNTE5vZGUiLCJrYXRleE5vZGUiLCIkSlNPTiIsIlRPX1NUUklORyIsImRQcyIsIklFX1BST1RPIiwiRW1wdHkiLCJjcmVhdGVEaWN0IiwiaWZyYW1lRG9jdW1lbnQiLCJpZnJhbWUiLCJjb250ZW50V2luZG93IiwibHQiLCJQcm9wZXJ0aWVzIiwiZ2V0S2V5cyIsInRvSU9iamVjdCIsInRvTGVuZ3RoIiwidG9JbmRleCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJlbCIsImRvY3VtZW50RWxlbWVudCIsIk9iamVjdFByb3RvIiwiaXNBcnJheUl0ZXIiLCJjcmVhdGVQcm9wZXJ0eSIsImdldEl0ZXJGbiIsIml0ZXIiLCJhcnJheUxpa2UiLCJpdGVyYXRvciIsImFMZW4iLCJtYXBmbiIsIm1hcHBpbmciLCJpdGVyRm4iLCIkZGVmaW5lUHJvcGVydHkiLCJTQUZFX0NMT1NJTkciLCJza2lwQ2xvc2luZyIsInNhZmUiLCJhZGRUb1Vuc2NvcGFibGVzIiwiX2siLCJBcmd1bWVudHMiLCJpc0l0ZXJhYmxlIiwiZ2V0SXRlcmF0b3IiLCJnT1BTIiwicElFIiwiJGFzc2lnbiIsIksiLCJnZXRTeW1ib2xzIiwiaXNFbnVtIiwic3RkSG9yaXpSdWxlIiwidmVydFNlcGFyYXRvciIsInNxcnRNYWluIiwic3FydFNpemUxIiwic3FydFNpemUyIiwic3FydFNpemUzIiwic3FydFNpemU0IiwiZG91YmxlbGVmdGFycm93IiwiZG91YmxlcmlnaHRhcnJvdyIsImxlZnRhcnJvdyIsImxlZnRicmFjZSIsImxlZnRicmFjZXVuZGVyIiwibGVmdGdyb3VwIiwibGVmdGdyb3VwdW5kZXIiLCJsZWZ0aGFycG9vbiIsImxlZnRoYXJwb29ucGx1cyIsImxlZnRoYXJwb29uZG93biIsImxlZnRoYXJwb29uZG93bnBsdXMiLCJsZWZ0aG9vayIsImxlZnRsaW5lc2VnbWVudCIsImxlZnRtYXBzdG8iLCJsZWZ0VG9Gcm9tIiwibG9uZ2VxdWFsIiwibWlkYnJhY2UiLCJtaWRicmFjZXVuZGVyIiwicmlnaHRhcnJvdyIsInJpZ2h0YnJhY2UiLCJyaWdodGJyYWNldW5kZXIiLCJyaWdodGdyb3VwIiwicmlnaHRncm91cHVuZGVyIiwicmlnaHRoYXJwb29uIiwicmlnaHRoYXJwb29ucGx1cyIsInJpZ2h0aGFycG9vbmRvd24iLCJyaWdodGhhcnBvb25kb3ducGx1cyIsInJpZ2h0aG9vayIsInJpZ2h0bGluZXNlZ21lbnQiLCJyaWdodFRvRnJvbSIsInR3b2hlYWRsZWZ0YXJyb3ciLCJ0d29oZWFkcmlnaHRhcnJvdyIsInRpbGRlMSIsInRpbGRlMiIsInRpbGRlMyIsInRpbGRlNCIsIndpZGVoYXQxIiwid2lkZWhhdDIiLCJ3aWRlaGF0MyIsIndpZGVoYXQ0IiwiYmFyYWJvdmVsZWZ0YXJyb3ciLCJyaWdodGFycm93YWJvdmViYXIiLCJiYXJhYm92ZXNob3J0bGVmdGhhcnBvb24iLCJyaWdodGhhcnBvb25hYm92ZXNob3J0YmFyIiwic2hvcnRiYXJhYm92ZWxlZnRoYXJwb29uIiwic2hvcnRyaWdodGhhcnBvb25hYm92ZWJhciIsInNwYWNpbmdzIiwidGlnaHRTcGFjaW5ncyIsInRoaW5zcGFjZSIsIm1lZGl1bXNwYWNlIiwidGhpY2tzcGFjZSIsIm1vcmQiLCJtb3AiLCJtYmluIiwibXJlbCIsIm1pbm5lciIsIm1vcGVuIiwibWNsb3NlIiwibXB1bmN0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19QYXJzZXJfXyIsInRvUGFyc2UiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2Z1bmN0aW9uc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19lbnZpcm9ubWVudHNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fTWFjcm9FeHBhbmRlcl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X191bmljb2RlU2NyaXB0c19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X191bmljb2RlQWNjZW50c19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X191bmljb2RlQWNjZW50c19fX2RlZmF1bHQiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfX3VuaWNvZGVTeW1ib2xzX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19QYXJzZU5vZGVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX1BhcnNlRXJyb3JfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTJfX0xleGVyX2pzX18iLCJuZXdBcmd1bWVudCIsImFzc2VydEZ1bmNPckFyZyIsImd1bGxldCIsImxlZnRyaWdodERlcHRoIiwiY29uc3VtZSIsIm5leHRUb2tlbiIsImV4cGFuZE5leHRUb2tlbiIsInN3aXRjaE1vZGUiLCJwYXJzZUlucHV0IiwiZXhwZWN0IiwiYnJlYWtPbkluZml4IiwiZW5kT2ZFeHByZXNzaW9uIiwiYXRvbSIsInBhcnNlQXRvbSIsImVycm9yTm9kZSIsImhhbmRsZVVuc3VwcG9ydGVkQ21kIiwiaGFuZGxlSW5maXhOb2RlcyIsIm92ZXJJbmRleCIsInJlcGxhY2VXaXRoIiwibnVtZXJOb2RlIiwiZGVub21Ob2RlIiwibnVtZXJCb2R5IiwiZGVub21Cb2R5IiwiY2FsbEZ1bmN0aW9uIiwic3ltYm9sVG9rZW4iLCJwYXJzZUdyb3VwIiwiU1VQU1VCX0dSRUVESU5FU1MiLCJwYXJzZUdpdmVuRnVuY3Rpb24iLCJ0ZXh0b3JkQXJyYXkiLCJjb2xvck5vZGUiLCJwYXJzZUltcGxpY2l0R3JvdXAiLCJzdXBlcnNjcmlwdCIsInN1YnNjcmlwdCIsImhhbmRsZVN1cFN1YnNjcmlwdCIsInByaW1lIiwicHJpbWVzIiwicGFyc2VTeW1ib2wiLCJwYXJzZUZ1bmN0aW9uIiwiZnVuYyIsIm91dGVyTW9kZSIsImVudk5hbWUiLCJuYW1lR3JvdXAiLCJfcGFyc2VBcmd1bWVudHMiLCJwYXJzZUFyZ3VtZW50cyIsIm9wdEFyZ3MiLCJfcmVzdWx0IiwiZW5kTmFtZVRva2VuIiwiYmFzZUdyb3VwIiwiZnVuY0RhdGEiLCJfcGFyc2VBcmd1bWVudHMyIiwiX3Rva2VuIiwiX3Jlc3VsdDIiLCJ0b3RhbEFyZ3MiLCJiYXNlR3JlZWRpbmVzcyIsImFyZ1R5cGUiLCJpc09wdGlvbmFsIiwicGFyc2VHcm91cE9mVHlwZSIsImFyZ05vZGUiLCJwYXJzZUNvbG9yR3JvdXAiLCJwYXJzZVNpemVHcm91cCIsInBhcnNlVXJsR3JvdXAiLCJmaXJzdFRva2VuIiwibGFzdFRva2VuIiwibmVzdCIsInJlZ2V4IiwicGFyc2VTdHJpbmdHcm91cCIsInBhcnNlU3RyaW5nR3JvdXBXaXRoQmFsYW5jZWRCcmFjZXMiLCJwYXJzZVJlZ2V4R3JvdXAiLCJmb3JtTGlnYXR1cmVzIiwiX3Jlc3VsdDMiLCJudWNsZXVzIiwibmV3RG9sbGFyIiwiaXNTdHJldGNoeSIsImlzU2hpZnR5IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19QYXJzZU5vZGVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZGVmaW5lRnVuY3Rpb25fXyIsImZ1bmN0aW9ucyIsImRlZmluZUZ1bmN0aW9uIiwiYm90dG9tb3AiLCJzaW5nbGVDaGFySW50ZWdyYWxzIiwi4oirIiwi4oisIiwi4oitIiwi4oiuIiwiZk5hbWUiLCJhbW91bnQiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2RlZmluZUZ1bmN0aW9uX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2J1aWxkQ29tbW9uX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2RlbGltaXRlcl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19idWlsZEhUTUxfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fYnVpbGRNYXRoTUxfXyIsImhhdmluZ0NyYW1wZWRTdHlsZSIsInRoZXRhIiwicGhpIiwibGluZUNsZWFyYW5jZSIsIm1pbkRlbGltaXRlckhlaWdodCIsIl9kZWxpbWl0ZXIkc3FydEltYWdlIiwiZGVsaW1EZXB0aCIsImltZ1NoaWZ0Iiwicm9vdG0iLCJ0b1NoaWZ0Iiwicm9vdFZMaXN0Iiwicm9vdFZMaXN0V3JhcCIsIndpdGhDb2xvciIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYnVpbGRIVE1MX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2J1aWxkTWF0aE1MX18iLCJ0ZXh0Rm9udEZhbWlsaWVzIiwiXFx0ZXh0IiwiXFx0ZXh0cm0iLCJcXHRleHRzZiIsIlxcdGV4dHR0IiwiXFx0ZXh0bm9ybWFsIiwidGV4dEZvbnRXZWlnaHRzIiwiXFx0ZXh0YmYiLCJ0ZXh0Rm9udFNoYXBlcyIsIlxcdGV4dGl0Iiwid2l0aEZvbnRGYW1pbHkiLCJ3aXRoRm9udFdlaWdodCIsIndpdGhGb250U2hhcGUiLCJjdXJyZW50VGV4dCIsIl9ncm91cCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fc3RyZXRjaHlfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYnVpbGRIVE1MX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX2J1aWxkTWF0aE1MX18iLCJpc0NvbG9yYm94IiwidmVydFBhZCIsImJhY2tncm91bmRDb2xvciIsImlubmVyR3JvdXAiLCJvcGVyYXRvciIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdW5pdHNfXyIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJUb3BXaWR0aCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fUGFyc2VFcnJvcl9fIiwibWF0aEZ1bmN0aW9uIiwibXVVbml0IiwiZGltZW5zaW9uIiwid2l0aFBoYW50b20iLCJmaXgiLCJodG1sTW9kQnVpbGRlciIsIm1vZFR5cGUiLCJtb2RJbm5lciIsIm1tbE1vZEJ1aWxkZXIiLCJzdXBHcm91cCIsInN1Ykdyb3VwIiwiaGFzTGltaXRzIiwibGFyZ2UiLCJiYXNlU2hpZnQiLCJrZXJuIiwiZmluYWxHcm91cCIsIl9ib3R0b20iLCJzaW5nbGVDaGFyQmlnT3BzIiwi4oiPIiwi4oiQIiwi4oiRIiwi4ouAIiwi4ouBIiwi4ouCIiwi4ouDIiwi4qiAIiwi4qiBIiwi4qiCIiwi4qiEIiwi4qiGIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19kb21UcmVlX18iLCJ0ZW1wIiwid29yZCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZGVsaW1pdGVyX18iLCJudW1lciIsImRlbm9tIiwiaGFzQmFyTGluZSIsImxlZnREZWxpbSIsInJpZ2h0RGVsaW0iLCJuc3R5bGUiLCJmcmFjTnVtIiwiZHN0eWxlIiwiZnJhY0RlbiIsIm51bWVybSIsImRlbm9tbSIsInJ1bGVTcGFjaW5nIiwibnVtU2hpZnQiLCJjbGVhcmFuY2UiLCJkZW5vbVNoaWZ0IiwiZnJhYyIsIm1pZFNoaWZ0IiwiY2FuZGlkYXRlQ2xlYXJhbmNlIiwiZGVsaW1TaXplIiwid2l0aERlbGltcyIsImxlZnRPcCIsInJpZ2h0T3AiLCJhbGlnbm1lbnQiLCJzbWFzaEhlaWdodCIsInNtYXNoRGVwdGgiLCJ0YkFyZyIsImRlbGltaXRlclNpemVzIiwiXFxiaWdsIiwiXFxCaWdsIiwiXFxiaWdnbCIsIlxcQmlnZ2wiLCJcXGJpZ3IiLCJcXEJpZ3IiLCJcXGJpZ2dyIiwiXFxCaWdnciIsIlxcYmlnbSIsIlxcQmlnbSIsIlxcYmlnZ20iLCJcXEJpZ2dtIiwiXFxiaWciLCJcXEJpZyIsIlxcYmlnZyIsIlxcQmlnZyIsImRlbGltaXRlcnMiLCJjaGVja0RlbGltaXRlciIsImlubmVySGVpZ2h0IiwiaW5uZXJEZXB0aCIsImhhZE1pZGRsZSIsImlzTWlkZGxlIiwibWlkZGxlRGVsaW0iLCJsZWZ0Tm9kZSIsInJpZ2h0Tm9kZSIsIm1pZGRsZU5vZGUiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21hdGhNTFRyZWVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fU3R5bGVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc2l6aW5nX18iLCJuZXdTdHlsZSIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfb2JqZWN0X2tleXNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9iYWJlbF9ydW50aW1lX2NvcmVfanNfb2JqZWN0X2tleXNfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19QYXJzZU5vZGVfXyIsImZvbnRBbGlhc2VzIiwiXFxCYmIiLCJcXGJvbGQiLCJcXGZyYWsiLCJcXGJtIiwib2xkRm9udEZ1bmNzTWFwIiwiXFxybSIsIlxcc2YiLCJcXHR0IiwiXFxiZiIsIlxcaXQiLCJzdXBzdWJHcm91cCIsImJhc2VDaGFyIiwiYWNjZW50Qm9keSIsImFjY2VudFdyYXAiLCJOT05fU1RSRVRDSFlfQUNDRU5UX1JFR0VYIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19zdHJldGNoeV9fIiwiY2hvb3NlTWF0aFN0eWxlIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19kZWZpbmVFbnZpcm9ubWVudF9fIiwiZW52aXJvbm1lbnRzIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kZWZpbmVFbnZpcm9ubWVudF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19QYXJzZU5vZGVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fdW5pdHNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fYnVpbGRIVE1MX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfX2J1aWxkTWF0aE1MX18iLCJwYXJzZUFycmF5Iiwicm93R2FwcyIsImxhc3RSb3ciLCJjciIsImRDZWxsU3R5bGUiLCJuciIsImFycmF5Y29sc2VwIiwiYmFzZWxpbmVza2lwIiwiam90IiwiYXJyYXlza2lwIiwiYXJyYXlzdHJldGNoIiwiYXJzdHJ1dEhlaWdodCIsImFyc3RydXREZXB0aCIsImlucm93Iiwib3V0cm93IiwiZWx0IiwiZ2FwIiwiYWRkSm90IiwiY29sRGVzY3JpcHRpb25zIiwiY29sU2VwIiwiY29sRGVzY3JOdW0iLCJjb2xEZXNjciIsImZpcnN0U2VwYXJhdG9yIiwic2VwYXJhdG9yIiwiX3NlcGFyYXRvciIsInNlcHdpZHRoIiwiaHNraXBCZWZvcmVBbmRBZnRlciIsInByZWdhcCIsInBvc3RnYXAiLCJhbGlnbmVkSGFuZGxlciIsIm51bU1hdGhzIiwibnVtQ29scyIsImVtcHR5R3JvdXAiLCJhcmcwIiwiaXNBbGlnbmVkIiwiY3VyTWF0aHMiLCJfYWxpZ24iLCJfcHJlZ2FwIiwiY29sYWxpZ24iLCJjYSIsIm1hdHJpeCIsInBtYXRyaXgiLCJibWF0cml4IiwiQm1hdHJpeCIsInZtYXRyaXgiLCJWbWF0cml4IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19MZXhlcl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19Ub2tlbl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19tYWNyb3NfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fUGFyc2VFcnJvcl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X29iamVjdF9hc3NpZ25fXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19vYmplY3RfYXNzaWduX19fZGVmYXVsdCIsIk1hY3JvRXhwYW5kZXIiLCJwdXNoVG9rZW4iLCJmdXR1cmUiLCJ0b2tlbnMiLCJfc3RhY2siLCJzdGFydE9mQXJnIiwicG9wVG9rZW4iLCJ0b2siLCJ0b3BUb2tlbiIsIl9nZXRFeHBhbnNpb24yIiwiX2dldEV4cGFuc2lvbiIsImV4cGFuc2lvbiIsImNvbnN1bWVBcmdzIiwiX2V4cGFuc2lvbiIsInB1c2hUb2tlbnMiLCJleHBhbmRPbmNlIiwiZXhwYW5kZWQiLCJzdHJpcHBlZCIsImJvZHlMZXhlciIsInN0aWNreSIsInJlbG9jIiwiX19tYXRjaEF0UmVsb2NhdGFibGUiLCJmbGFncyIsImlnbm9yZUNhc2UiLCJtdWx0aWxpbmUiLCJ1bmljb2RlIiwiZ2V0UmVsb2NhdGFibGUiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3N1Ym1vZHVsZXNfa2F0ZXhfZm9udHNfZm9udE1ldHJpY3NEYXRhX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX3N5bWJvbHNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fdXRpbHNfXyIsImJ1aWx0aW5NYWNyb3MiLCJkZWZpbmVNYWNybyIsImRvdHNCeVRva2VuIiwiLCIsIlxcbm90IiwiKyIsIj0iLCItIiwiKiIsIjoiLCJcXERPVFNCIiwiXFxjb3Byb2QiLCJcXGJpZ3ZlZSIsIlxcYmlnd2VkZ2UiLCJcXGJpZ3VwbHVzIiwiXFxiaWdjYXAiLCJcXGJpZ2N1cCIsIlxccHJvZCIsIlxcc3VtIiwiXFxiaWdvdGltZXMiLCJcXGJpZ29wbHVzIiwiXFxiaWdvZG90IiwiXFxiaWdzcWN1cCIsIlxcaW1wbGllcyIsIlxcaW1wbGllZGJ5IiwiXFxBbmQiLCJcXGxvbmdyaWdodGFycm93IiwiXFxMb25ncmlnaHRhcnJvdyIsIlxcbG9uZ2xlZnRhcnJvdyIsIlxcTG9uZ2xlZnRhcnJvdyIsIlxcbG9uZ2xlZnRyaWdodGFycm93IiwiXFxMb25nbGVmdHJpZ2h0YXJyb3ciLCJcXG1hcHN0byIsIlxcbG9uZ21hcHN0byIsIlxcaG9va3JpZ2h0YXJyb3ciLCJcXGlmZiIsIlxcZG90ZXEiLCJcXG1hdGhiaW4iLCJcXGJtb2QiLCJcXG1hdGhyZWwiLCJcXHJlbGJhciIsIlxcUmVsYmFyIiwiXFx4cmlnaHRhcnJvdyIsIlxceGxlZnRhcnJvdyIsIlxcRE9UU0kiLCJcXGludCIsIlxcb2ludCIsIlxcaWludCIsIlxcaWlpbnQiLCJcXGlpaWludCIsIlxcaWRvdHNpbnQiLCJcXERPVFNYIiwidGhlZG90cyIsImV4cGFuZEFmdGVyRnV0dXJlIiwic3BhY2VBZnRlckRvdHMiLCIpIiwiXSIsIlxccmJyYWNrIiwiXFx9IiwiXFxyYnJhY2UiLCJcXHJhbmdsZSIsIlxccmNlaWwiLCJcXHJmbG9vciIsIlxccmdyb3VwIiwiXFxybW91c3RhY2hlIiwiXFxyaWdodCIsIjsiLCIuIiwibGF0ZXhSYWlzZUEiLCLMgSIsIsyAIiwizIgiLCLMgyIsIsyEIiwizIYiLCLMjCIsIsyCIiwizIciLCLMiiIsIsyLIiwiw6EiLCLDoCIsIsOkIiwix58iLCLDoyIsIsSBIiwixIMiLCLhuq8iLCLhurEiLCLhurUiLCLHjiIsIsOiIiwi4bqlIiwi4bqnIiwi4bqrIiwiyKciLCLHoSIsIse7Iiwi4biDIiwixIciLCLEjSIsIsSJIiwixIsiLCLEjyIsIuG4iyIsIsOpIiwiw6giLCLDqyIsIuG6vSIsIsSTIiwi4biXIiwi4biVIiwixJUiLCLEmyIsIsOqIiwi4bq/Iiwi4buBIiwi4buFIiwixJciLCLhuJ8iLCLHtSIsIuG4oSIsIsSfIiwix6ciLCLEnSIsIsShIiwi4binIiwiyJ8iLCLEpSIsIuG4oyIsIuG4ryIsIsSpIiwixKsiLCLErSIsIseQIiwix7AiLCLEtSIsIuG4sSIsIsepIiwixLoiLCLEviIsIuG4vyIsIuG5gSIsIsWEIiwix7kiLCLDsSIsIsWIIiwi4bmFIiwiw7MiLCLDsiIsIsO2IiwiyKsiLCLDtSIsIuG5jSIsIuG5jyIsIsitIiwixY0iLCLhuZMiLCLhuZEiLCLFjyIsIseSIiwiw7QiLCLhu5EiLCLhu5MiLCLhu5ciLCLIryIsIsixIiwixZEiLCLhuZUiLCLhuZciLCLFlSIsIsWZIiwi4bmZIiwixZsiLCLhuaUiLCLFoSIsIuG5pyIsIsWdIiwi4bmhIiwi4bqXIiwixaUiLCLhuasiLCLDuiIsIsO5Iiwiw7wiLCLHmCIsIsecIiwix5YiLCLHmiIsIsWpIiwi4bm5IiwixasiLCLhubsiLCLFrSIsIseUIiwiw7siLCLFryIsIsWxIiwi4bm9Iiwi4bqDIiwi4bqBIiwi4bqFIiwixbUiLCLhuociLCLhupgiLCLhuo0iLCLhuosiLCLDvSIsIuG7syIsIsO/Iiwi4bu5IiwiyLMiLCLFtyIsIuG6jyIsIuG6mSIsIsW6Iiwixb4iLCLhupEiLCLFvCIsIsOBIiwiw4AiLCLDhCIsIseeIiwiw4MiLCLEgCIsIsSCIiwi4bquIiwi4bqwIiwi4bq0Iiwix40iLCLDgiIsIuG6pCIsIuG6piIsIuG6qiIsIsimIiwix6AiLCLHuiIsIuG4giIsIsSGIiwixIwiLCLEiCIsIsSKIiwixI4iLCLhuIoiLCLDiSIsIsOIIiwiw4siLCLhurwiLCLEkiIsIuG4liIsIuG4lCIsIsSUIiwixJoiLCLDiiIsIuG6viIsIuG7gCIsIuG7hCIsIsSWIiwi4bieIiwix7QiLCLhuKAiLCLEniIsIsemIiwixJwiLCLEoCIsIuG4piIsIsieIiwixKQiLCLhuKIiLCLDjSIsIsOMIiwiw48iLCLhuK4iLCLEqCIsIsSqIiwixKwiLCLHjyIsIsOOIiwixLAiLCLEtCIsIuG4sCIsIseoIiwixLkiLCLEvSIsIuG4viIsIuG5gCIsIsWDIiwix7giLCLDkSIsIsWHIiwi4bmEIiwiw5MiLCLDkiIsIsOWIiwiyKoiLCLDlSIsIuG5jCIsIuG5jiIsIsisIiwixYwiLCLhuZIiLCLhuZAiLCLFjiIsIseRIiwiw5QiLCLhu5AiLCLhu5IiLCLhu5YiLCLIriIsIsiwIiwixZAiLCLhuZQiLCLhuZYiLCLFlCIsIsWYIiwi4bmYIiwixZoiLCLhuaQiLCLFoCIsIuG5piIsIsWcIiwi4bmgIiwixaQiLCLhuaoiLCLDmiIsIsOZIiwiw5wiLCLHlyIsIsebIiwix5UiLCLHmSIsIsWoIiwi4bm4IiwixaoiLCLhuboiLCLFrCIsIseTIiwiw5siLCLFriIsIsWwIiwi4bm8Iiwi4bqCIiwi4bqAIiwi4bqEIiwixbQiLCLhuoYiLCLhuowiLCLhuooiLCLDnSIsIuG7siIsIsW4Iiwi4bu4IiwiyLIiLCLFtiIsIuG6jiIsIsW5Iiwixb0iLCLhupAiLCLFuyIsIs6sIiwi4b2wIiwi4b6xIiwi4b6wIiwizq0iLCLhvbIiLCLOriIsIuG9tCIsIs6vIiwi4b22Iiwiz4oiLCLOkCIsIuG/kiIsIuG/kSIsIuG/kCIsIs+MIiwi4b24Iiwiz40iLCLhvboiLCLPiyIsIs6wIiwi4b+iIiwi4b+hIiwi4b+gIiwiz44iLCLhvbwiLCLOjiIsIuG/qiIsIs6rIiwi4b+pIiwi4b+oIiwizo8iLCLhv7oiLCJpc1BsYWluT2JqZWN0IiwiaGFzT3duQ29uc3RydWN0b3IiLCJoYXNJc1Byb3RvdHlwZU9mIiwiY29weUlzQXJyYXkiLCJjbG9uZSIsImRlZXAiLCJWTWVzc2FnZSIsIlZNZXNzYWdlUHJvdG90eXBlIiwicmVhc29uIiwicGFyc2VPcmlnaW4iLCJydWxlSWQiLCJub3JtYWxpemVBcnJheSIsImFsbG93QWJvdmVSb290IiwidXAiLCJmYXRhbCIsInNwbGl0UGF0aFJlIiwic3BsaXRQYXRoIiwiZmlsZW5hbWUiLCJyZXNvbHZlIiwicmVzb2x2ZWRQYXRoIiwicmVzb2x2ZWRBYnNvbHV0ZSIsImlzUGF0aEFic29sdXRlIiwiaXNBYnNvbHV0ZSIsInRyYWlsaW5nU2xhc2giLCJyZWxhdGl2ZSIsImZyb21QYXJ0cyIsInRvUGFydHMiLCJzYW1lUGFydHNMZW5ndGgiLCJvdXRwdXRQYXJ0cyIsImRpcm5hbWUiLCJiYXNlbmFtZSIsImV4dG5hbWUiLCJzZXAiLCJkZWxpbWl0ZXIiLCJ4cyIsIm5wYXRoIiwibkZpbGVOYW1lIiwiVkZpbGUiLCJvcmRlciIsImhpc3RvcnkiLCJhc3NlcnRQYXJ0IiwicGFydCIsImFzc2VydE5vbkVtcHR5IiwiYXNzZXJ0UGF0aCIsInN0ZW0iLCJmaWxlUGF0aCIsImZhaWwiLCJmbnMiLCJtaWRkbGV3YXJlIiwiaW52b2tlZCIsImNhbGxiYWNrIiwidGhlbiIsInVzZSIsInVuaWZpZWQiLCJhdHRhY2hlcnMiLCJ0cmFuc2Zvcm1lcnMiLCJ0cm91Z2giLCJmcm96ZW4iLCJmcmVlemVJbmRleCIsInByb2Nlc3NvciIsImFzc2VydFVuZnJvemVuIiwiYWRkUGx1Z2luIiwiYWRkTGlzdCIsImFkZFByZXNldCIsInBsdWdpbnMiLCJwbHVnaW4iLCJmaW5kIiwicGxhaW4iLCJ2ZmlsZSIsImFzc2VydFBhcnNlciIsIm5ld2FibGUiLCJhc3NlcnRDb21waWxlciIsImFzc2VydE5vZGUiLCJjb21waWxlIiwicnVuU3luYyIsImNvbXBsZXRlIiwiYmFpbCIsImFzc2VydERvbmUiLCJwcm9jZXNzU3luYyIsInRyYW5zZm9ybWVyIiwiY2IiLCJQcm9taXNlIiwiZXhlY3V0b3IiLCJyZWplY3QiLCJwaXBlbGluZSIsImFzeW5jTmFtZSIsImJpbmQiLCJib3VuZCIsImJvdW5kTGVuZ3RoIiwiYm91bmRBcmdzIiwidG9rZW5pemVyUHJvdG8iLCJ0b2tlblN0YXJ0T2Zmc2V0IiwidG9rZW5Db2wiLCJ0b2tlbkxpbmUiLCJsaW5lU3RhcnRQb3NTdGFjayIsImF0dGFjaExvY2F0aW9uSW5mbyIsInNvdXJjZVBvcyIsImxvY2F0aW9uSW5mb01peGluIiwiZW50aXR5Q29kZVBvaW50c0NvdW50IiwibGVhZiIsIk5BTUVEX0VOVElUWV9UUklFIiwic2V0RW5kTG9jYXRpb24iLCJjdExvY2F0aW9uIiwiaXNDbG9zaW5nRW5kVGFnIiwicGFyc2VyUHJvdG8iLCJhdHRhY2hhYmxlRWxlbWVudExvY2F0aW9uIiwicmVjaXBpZW50Tm9kZSIsIklOSVRJQUxfTU9ERSIsImlzUXVpcmtzIiwic2V0UXVpcmtzTW9kZSIsImlzUXVpcmtzTW9kZSIsInBhcnNlNSIsIlBhcnNlcjUiLCJoYXNDbGFzcyIsImlzVGFnIiwiaXNJbmxpbmVNYXRoIiwiaXNNYXRoIiwiaW5saW5lTWF0aERvdWJsZURpc3BsYXkiLCJyZW5kZXJlZFZhbHVlIiwia2F0ZXgiLCJpbmxpbmVNYXRoQXN0IiwidGFnTmFtZXMiLCJFWFBSRVNTSU9OIiwiaW5jcmVtZW50IiwiaW5jbHVkZVdoaXRlU3BhY2UiLCJhZnRlciIsIm9taXNzaW9uIiwiaGVhZE9yQ29sZ3JvdXBPckNhcHRpb24iLCJsaSIsImR0IiwicnVieUVsZW1lbnQiLCJycCIsIm9wdGdyb3VwIiwib3B0aW9uIiwibWVudWl0ZW0iLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciIsInRkIiwiY2VsbHMiLCJ0aCIsIndoaXRlU3BhY2VMZWZ0IiwiYmVmb3JlIiwicGxhY2UiLCJhbHBoYWJldGljYWwiLCJkZWNpbWFsIiwiZXNjYXBlT25seSIsInVzZU5hbWVkUmVmZXJlbmNlcyIsImNoYXJhY3RlcnMiLCJlbnRpdGllcyIsImNvbnN0cnVjdCIsIkVYUFJFU1NJT05fRVNDQVBFIiwidG9FeHByZXNzaW9uIiwiRVhQUkVTU0lPTl9TVVJST0dBVEVfUEFJUiIsIkVYUFJFU1NJT05fQk1QIiwib21pdCIsIm9taXRPcHRpb25hbFNlbWljb2xvbnMiLCJjaGFyIiwidG9IZXhSZWZlcmVuY2UiLCJuYW1lZCIsInNob3J0ZXN0IiwidXNlU2hvcnRlc3RSZWZlcmVuY2VzIiwibGVnYWN5IiwiYWxwaGFudW1lcmljYWwiLCJ0b05hbWVkIiwiaGV4YWRlY2ltYWwiLCJpc0xpdGVyYWwiLCJ0aWdodCIsIkRRIiwiU1EiLCJMVCIsInRpZ2h0Q2xvc2UiLCJTTyIsIkdUIiwiRVEiLCJrZWJhYiIsImF0dHJpYnV0ZU5hbWUiLCJ1bnF1b3RlZCIsImFsdGVybmF0aXZlIiwidGlnaHRMaXN0cyIsImNvbGxhcHNlRW1wdHkiLCJVTlFVT1RFRCIsImNjb3VudCIsIlNJTkdMRV9RVU9URUQiLCJET1VCTEVfUVVPVEVEIiwiYXR0cmlidXRlVmFsdWUiLCJwdWIiLCJzeXMiLCJzbWFydCIsInF1b3RlU21hcnQiLCJlcnJvcnMiLCJhbGxvd1BhcnNlRXJyb3JzIiwiYWxsb3dEYW5nZXJvdXNDaGFyYWN0ZXJzIiwiQ0xFQU5fTkFNRSIsIlVRX1ZBTFVFIiwiVVFfVkFMVUVfQ0xFQU4iLCJzaW5nbGVRdW90ZWQiLCJTUV9WQUxVRSIsIlNRX1ZBTFVFX0NMRUFOIiwiZG91YmxlUXVvdGVkIiwiRFFfVkFMVUUiLCJEUV9WQUxVRV9DTEVBTiIsIlFVT1RFUyIsIm9taXRPcHRpb25hbFRhZ3MiLCJwcmVmZXJVbnF1b3RlZCIsInRpZ2h0QXR0cmlidXRlcyIsInRpZ2h0Q29tbWFTZXBhcmF0ZWRMaXN0cyIsInRpZ2h0U2VsZkNsb3NpbmciLCJjb2xsYXBzZUVtcHR5QXR0cmlidXRlcyIsImNsb3NlU2VsZkNsb3NpbmciLCJ0b0hUTUwiLCJTdXBlciIsIk9mIiwiRnJvbSIsInBhcmFtZXRlcnMiLCJlbnRpdHlDaGFyYWN0ZXJzIiwidGVybWluYXRlZCIsImZvbGxvd2luZyIsIndhcm5pbmciLCJlbnRpdHkiLCJhZGRpdGlvbmFsIiwibm9uVGVybWluYXRlZCIsImhhbmRsZVRleHQiLCJoYW5kbGVSZWZlcmVuY2UiLCJoYW5kbGVXYXJuaW5nIiwidGV4dENvbnRleHQiLCJyZWZlcmVuY2VDb250ZXh0Iiwid2FybmluZ0NvbnRleHQiLCJNRVNTQUdFUyIsIk5FV0xJTkUiLCJhdCIsImZsdXNoIiwiTEVTU19USEFOIiwiT0NUT1RIT1JQIiwiTkFNRUQiLCJYX0xPV0VSIiwiWF9VUFBFUiIsIkhFWEFERUNJTUFMIiwiREVDSU1BTCIsIlRFU1RTIiwiY2hhcmFjdGVyRW50aXRpZXMiLCJOQU1FRF9VTktOT1dOIiwiTkFNRURfTk9UX1RFUk1JTkFURUQiLCJOQU1FRF9FTVBUWSIsIkVRVUFMIiwiTlVNRVJJQ19OT1RfVEVSTUlOQVRFRCIsIk5VTUVSSUNfUFJPSElCSVRFRCIsIlJFUExBQ0VNRU5UIiwiTlVNRVJJQ19ESVNBTExPV0VEIiwiaXNXYXJuaW5nIiwiTlVNRVJJQ19FTVBUWSIsIk5VTUVSSUNfUkVGRVJFTkNFIiwiVEVSTUlOQVRFRCIsIlZPSUQiLCJOQU1FRF9SRUZFUkVOQ0UiLCJkZWNvZGVyIiwib2Zmc2V0cyIsIm1hdGNoZWQiLCJ2YWx1ZUxlbmd0aCIsInRva2VuaXplcnMiLCJ1cGRhdGVQb3NpdGlvbiIsIm9ubHlBdFN0YXJ0IiwiYXRTdGFydCIsIm5vdEluTGlzdCIsImluTGlzdCIsIm5vdEluQmxvY2siLCJpbkJsb2NrIiwibm90SW5MaW5rIiwiaW5MaW5rIiwiZW9mIiwiY29tYmluZWQiLCJpbmRlbnRhdGlvbiIsImdldE9mZnNldCIsInZhbGlkYXRlRWF0IiwicmVzZXQiLCJNRVJHRUFCTEVfTk9ERVMiLCJtZXJnZWFibGUiLCJleGl0U3RhcnQiLCJlc2NhcGVzIiwicGVkYW50aWMiLCJmb3JjZSIsImhhcmQiLCJzb2Z0IiwiRVhQUkVTU0lPTl9MSU5FX0JSRUFLUyIsInRva2VuaXplQmxvY2siLCJyZW1vdmVQb3NpdGlvbiIsImJsYW5rUXVldWUiLCJzdWJ2YWx1ZVF1ZXVlIiwiY29udGVudFF1ZXVlIiwiQ09ERV9JTkRFTlQiLCJmbGFnIiwiQ19USUxERSIsIkNfVElDSyIsImRlY29kZSIsInVuZXNjYXBlIiwiaW50ZXJydXB0b3JzIiwiaW50ZXJydXB0b3IiLCJib29sIiwiYm9vbHMiLCJyZXN0IiwibmV4dEluZGV4Iiwic3RhcnRJbmRleCIsInByZWZpeGVkIiwiZXhpdCIsImN1cnJlbnRMaW5lIiwiaW5kZW50cyIsIkNfR1QiLCJpbnRlcnJ1cHQiLCJlbnRlckJsb2NrIiwiQ19IQVNIIiwiTUFYX0FUWF9DT1VOVCIsIm1hcmtlckNvdW50IiwiQ19BU1RFUklTSyIsIkNfREFTSCIsIkNfVU5ERVJTQ09SRSIsIlRIRU1BVElDX0JSRUFLX01BUktFUl9DT1VOVCIsInN0b3BzIiwiICIsIlx0IiwibWF4aW11bSIsInBhZGRpbmciLCJtaW5JbmRlbnQiLCJnZXRJbmRlbnQiLCJtYXJrZXJzIiwiY3VycmVudE1hcmtlciIsInByZXZFbXB0eSIsImFsbExpbmVzIiwiZW1wdHlMaW5lcyIsIml0ZW0iLCJlbnRlclRvcCIsImV4aXRCbG9ja3F1b3RlIiwiaXNMb29zZSIsImluZGVudGVkIiwiaW50ZXJ1cHRvcnMiLCJUQUJfU0laRSIsIkxJU1RfT1JERVJFRF9DT01NT05NQVJLX01BUktFUlMiLCJMSVNUX09SREVSRURfTUFSS0VSUyIsIkxJU1RfVU5PUkRFUkVEX01BUktFUlMiLCJ0cmFpbCIsImVudGVyTGlzdCIsIkNfWF9MT1dFUiIsIkVYUFJFU1NJT05fTE9PU0VfTElTVF9JVEVNIiwiRVhQUkVTU0lPTl9UQVNLX0lURU0iLCJFWFBSRVNTSU9OX0JVTExFVCIsIkVYUFJFU1NJT05fUEVEQU5USUNfQlVMTEVUIiwiRVhQUkVTU0lPTl9JTklUSUFMX0lOREVOVCIsInRhc2siLCJwZWRhbnRpY0xpc3RJdGVtIiwibm9ybWFsTGlzdEl0ZW0iLCJyZXBsYWNlciIsImJ1bGxldCIsInRyaW1tZWRMaW5lcyIsIiQyIiwiJDMiLCIkNCIsInJlbW92ZUluZGVudCIsIk1BWF9IRUFESU5HX0lOREVOVCIsIlNFVEVYVF9NQVJLRVJTIiwib3BlblRhZyIsImNsb3NlVGFnIiwib3BlbkNsb3NlVGFnIiwic2VxdWVuY2VzIiwiQ19MVCIsImNvbGxhcHNlV2hpdGVTcGFjZSIsIkNfQkFDS1NMQVNIIiwiQ19CUkFDS0VUX09QRU4iLCJDX0JSQUNLRVRfQ0xPU0UiLCJDX0NBUkVUIiwiQ19DT0xPTiIsIkVYUFJFU1NJT05fSU5JVElBTF9UQUIiLCJzdWJxdWV1ZSIsIkNfRE9VQkxFX1FVT1RFIiwiQ19TSU5HTEVfUVVPVEUiLCJDX1BBUkVOX09QRU4iLCJDX1BBUkVOX0NMT1NFIiwiYmVmb3JlVVJMIiwiYmVmb3JlVGl0bGUiLCJpc0VuY2xvc2VkVVJMQ2hhcmFjdGVyIiwiaXNVbmNsb3NlZFVSTENoYXJhY3RlciIsImFsaWdubWVudHMiLCJoYXNEYXNoIiwicHJlYW1ibGUiLCJsaW5lQ291bnQiLCJsaW5lSW5kZXgiLCJwaXBlSW5kZXgiLCJNSU5fVEFCTEVfUk9XUyIsIlRBQkxFX0FMSUdOX05PTkUiLCJUQUJMRV9BTElHTl9MRUZUIiwiVEFCTEVfQUxJR05fQ0VOVEVSIiwiVEFCTEVfQUxJR05fUklHSFQiLCJNSU5fVEFCTEVfQ09MVU1OUyIsInRyaW1UcmFpbGluZ0xpbmVzIiwibG9jYXRlIiwiYXV0b0xpbmsiLCJDX0FUX1NJR04iLCJDX1NMQVNIIiwiTUFJTFRPIiwiTUFJTFRPX0xFTkdUSCIsImhhc0F0Q2hhcmFjdGVyIiwiZW50ZXJMaW5rIiwiUFJPVE9DT0xTIiwiTUFJTFRPX1BST1RPQ09MIiwiUFJPVE9DT0xTX0xFTkdUSCIsInByb3RvY29sIiwicGFyZW5Db3VudCIsIm5leHRDaGFyYWN0ZXIiLCJpbmxpbmVIVE1MIiwiRVhQUkVTU0lPTl9IVE1MX0xJTktfT1BFTiIsIkVYUFJFU1NJT05fSFRNTF9MSU5LX0NMT1NFIiwiTElOS19NQVJLRVJTIiwiQ09NTU9OTUFSS19MSU5LX01BUktFUlMiLCJjbG9zZWQiLCJoYXNNYXJrZXIiLCJpc0ltYWdlIiwiVF9MSU5LIiwiVF9JTUFHRSIsIlRfRk9PVE5PVEUiLCJSRUZFUkVOQ0VfVFlQRV9TSE9SVENVVCIsIlJFRkVSRU5DRV9UWVBFX0NPTExBUFNFRCIsIlJFRkVSRU5DRV9UWVBFX0ZVTEwiLCJicmFja2V0ZWQiLCJpbnRybyIsImFzdGVyaXNrIiwidW5kZXJzY29yZSIsInN0cmlrZXRocm91Z2giLCJvcGVuaW5nQ291bnQiLCJ0aWNrUXVldWUiLCJoYXJkQnJlYWsiLCJNSU5fQlJFQUtfTEVOR1RIIiwic2V0T3B0aW9ucyIsInRvZ2dsZSIsImluZGVudGVkQ29kZSIsImZlbmNlZENvZGUiLCJhdHhIZWFkaW5nIiwic2V0ZXh0SGVhZGluZyIsImRlbGV0aW9uIiwidG9rZW5pemVGYWN0b3J5IiwiTG9jYWwiLCJ1bmhlcml0IiwiX3NsaWNlZFRvQXJyYXkiLCJlc2NhcGVSZWdFeHAiLCJDX0ZFTkNFIiwiYXZhaWxhYmxlQmxvY2tzIiwiY3VzdG9tQmxvY2tzIiwia2VlcCIsIl9rZWVwIiwiYmxvY2tUeXBlIiwiYmxvY2tUaXRsZSIsImxpbmVzVG9FYXQiLCJsaW5lVG9FYXQiLCJjb250ZW50U3RyaW5nIiwic3RyaW5nVG9FYXQiLCJwb3RlbnRpYWxCbG9jayIsInRpdGxlQWxsb3dlZCIsImJsb2NrQ2hpbGRyZW4iLCJ0aXRsZU5vZGUiLCJjbGFzc0xpc3QiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJtYXhJbnQiLCJ0TWluIiwidE1heCIsImRhbXAiLCJpbml0aWFsQmlhcyIsImluaXRpYWxOIiwicmVnZXhOb25BU0NJSSIsInJlZ2V4U2VwYXJhdG9ycyIsIm92ZXJmbG93Iiwibm90LWJhc2ljIiwiaW52YWxpZC1pbnB1dCIsImJhc2VNaW51c1RNaW4iLCJzdHJpbmdGcm9tQ2hhckNvZGUiLCJkaWdpdFRvQmFzaWMiLCJkaWdpdCIsImFkYXB0IiwiZGVsdGEiLCJudW1Qb2ludHMiLCJmaXJzdFRpbWUiLCJ0b0FTQ0lJIiwiZW5jb2RlZCIsIm1hcERvbWFpbiIsImhhbmRsZWRDUENvdW50IiwiYmFzaWNMZW5ndGgiLCJiaWFzIiwicSIsImN1cnJlbnRWYWx1ZSIsImlucHV0TGVuZ3RoIiwiaGFuZGxlZENQQ291bnRQbHVzT25lIiwiYmFzZU1pbnVzVCIsInFNaW51c1QiLCJleHRyYSIsImNvdW50ZXIiLCJ1Y3MyZGVjb2RlIiwic3RyaW5naWZ5UHJpbWl0aXZlIiwicXMiLCJlcSIsIm1heEtleXMiLCJrc3RyIiwidnN0ciIsImRlY29kZVVSSUNvbXBvbmVudCIsInVybFBhcnNlIiwidXJsUmVzb2x2ZSIsInJlc29sdmVPYmplY3QiLCJ1cmxSZXNvbHZlT2JqZWN0IiwidXJsRm9ybWF0IiwiVXJsIiwic2xhc2hlcyIsImF1dGgiLCJwb3J0IiwiaG9zdG5hbWUiLCJxdWVyeSIsInBhdGhuYW1lIiwicHJvdG9jb2xQYXR0ZXJuIiwicG9ydFBhdHRlcm4iLCJzaW1wbGVQYXRoUGF0dGVybiIsInVud2lzZSIsImF1dG9Fc2NhcGUiLCJub25Ib3N0Q2hhcnMiLCJob3N0RW5kaW5nQ2hhcnMiLCJob3N0bmFtZU1heExlbiIsImhvc3RuYW1lUGFydFBhdHRlcm4iLCJob3N0bmFtZVBhcnRTdGFydCIsInVuc2FmZVByb3RvY29sIiwiamF2YXNjcmlwdCIsImphdmFzY3JpcHQ6IiwiaG9zdGxlc3NQcm90b2NvbCIsInNsYXNoZWRQcm90b2NvbCIsImh0dHAiLCJodHRwcyIsImZ0cCIsImdvcGhlciIsImh0dHA6IiwiaHR0cHM6IiwiZnRwOiIsImdvcGhlcjoiLCJmaWxlOiIsInBhcnNlUXVlcnlTdHJpbmciLCJzbGFzaGVzRGVub3RlSG9zdCIsInF1ZXJ5SW5kZXgiLCJzcGxpdHRlciIsInVTcGxpdCIsInNpbXBsZVBhdGgiLCJxc1BhcnNlIiwiaGVjIiwibG93ZXJQcm90byIsImF0U2lnbiIsImhvc3RFbmQiLCJwYXJzZUhvc3QiLCJpcHY2SG9zdG5hbWUiLCJob3N0cGFydHMiLCJuZXdwYXJ0IiwidmFsaWRQYXJ0cyIsIm5vdEhvc3QiLCJiaXQiLCJhZSIsImVzYyIsInFtIiwia3MiLCJyZWxQYXRoIiwidGtleXMiLCJ0ayIsInRrZXkiLCJya2V5cyIsInJrIiwicmtleSIsImF1dGhJbkhvc3QiLCJpc1NvdXJjZUFicyIsImlzUmVsQWJzIiwibXVzdEVuZEFicyIsInJlbW92ZUFsbERvdHMiLCJzcmNQYXRoIiwicHN5Y2hvdGljIiwiaGFzVHJhaWxpbmdTbGFzaCIsIl90eXBlb2YiLCJfcmVxdWlyZSIsIlVSTFNlYXJjaFBhcmFtcyIsImlmcmFtZXMiLCJlYXRlblZhbHVlIiwic3BlY2lhbENoYXJzIiwicHJvdmlkZXIiLCJkZXRlY3RQcm92aWRlciIsImZpbmFsVXJsIiwiZHJvcHBlZFF1ZXJ5UGFyYW1ldGVycyIsImlnbm9yZWQiLCJfcnVsZSIsInJlbW92ZUZpbGVOYW1lIiwicmVtb3ZlQWZ0ZXIiLCJhcHBlbmQiLCJjb21wdXRlRmluYWxVcmwiLCJ0aHVtYm5haWwiLCJ0aHVtYm5haWxVUkwiLCJ0aHVtYm5haWxDb25maWciLCJjb21wdXRlVGh1bWJuYWlsIiwiYWxsb3dmdWxsc2NyZWVuIiwiZnJhbWVib3JkZXIiLCJmbmMiLCJyZW1hcmsiLCJsaW5lSW5wdXQiLCJ0ZXh0SW5wdXQiLCJtdWx0aUNob2ljZSIsInNiIiwiYXR0ZW50aW9uIiwicXVlc3Rpb24iLCJnb29kIiwiYmFkIiwid3d3LnlvdXR1YmUuY29tIiwicmVoeXBlS2F0ZXgiLCJyZWh5cGVTdHJpbmdpZnkiXSwibWFwcGluZ3MiOiJnQ0FBQSxNQUlBLFdBR0ksSUFGQSxJQUFJQSxLQUVLQyxFQUFJLEVBQUdBLEVBQUlDLFVBQVVDLE9BQVFGLElBQUssQ0FDdkMsSUFBSUcsRUFBU0YsVUFBVUQsR0FFdkIsSUFBSyxJQUFJSSxLQUFPRCxFQUNSRSxFQUFlQyxLQUFLSCxFQUFRQyxLQUM1QkwsRUFBT0ssR0FBT0QsRUFBT0MsSUFLakMsT0FBT0wsR0FmUE0sRUFBaUJFLE9BQU9DLFVBQVVILGVDTXRDLElB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LEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksS0FBSyxJQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLE1BQU0sR0FBRyxHQUFHLEVBQUUsS0FBSyxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLE1BQU0sR0FBRyxHQUFHLEVBQUUsS0FBSyxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxLQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFF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RUFBRyxFQUFHLEdBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLEdBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsR0FDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2xDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLEdBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsR0FDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsTUFBUSxLQUFPLEVBQUcsRUFBRyxHQUM5QkMsTUFBUyxNQUFRLEtBQU8sRUFBRyxFQUFHLEdBQzlCQyxNQUFTLE1BQVEsS0FBTyxFQUFHLEVBQUcsR0FDOUJDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxNQUFRLEtBQU8sRUFBRyxFQUFHLEdBQzlCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNqQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2xDQyxPQUFVLEtBQU8sS0FBTyxFQUFHLEVBQUcsTUFDOUJDLE9BQVUsS0FBTyxLQUFPLEVBQUcsRUFBRyxNQUM5QkMsTUFBUyxFQUFHLEtBQU8sRUFBRyxFQUFHLElBQ3pCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE1BQVEsS0FBTyxFQUFHLEVBQUcsUUFDOUJDLE1BQVMsTUFBUSxLQUFPLEVBQUcsRUFBRyxRQUM5QkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLEtBQU8sRUFBRyxFQUFHLFFBQ3pCQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN6QkMsTUFBUyxFQUFHLEtBQU8sRUFBRyxFQUFHLFFBQ3pCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQy9CQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLEtBQU8sRUFBRyxFQUFHLFFBQ3pCQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxPQUFVLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDNUJDLE9BQVUsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUM1QkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBRXRDQyx1QkFDSUMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQy9CelEsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxPQUFTLE9BQVMsTUFBUSxPQUFTLFFBQzFDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzNDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLEVBQUcsT0FBUyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsS0FBTyxPQUFTLFFBQ25DQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxPQUNyQ0MsSUFBTyxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzNDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsU0FFekNpUCxtQkFDSUMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQnRCLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQmMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCMVIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE9BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsT0FDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JrUSxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsT0FDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI3USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI4USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxPQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsT0FBVSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzVCQyxPQUFVLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDNUJDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUM1QkMsT0FBVSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzVCQyxPQUFVLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FFaENDLGFBQ0l0RCxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QnNELElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLE1BQzVCQyxJQUFPLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUJ2RCxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxJQUFNLEVBQUcsRUFBRyxNQUN0QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsTUFDekJ0QixJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJjLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CNkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CNUMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDNkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CNUMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCNkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCdlUsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxPQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJrUSxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsTUFDekI1QyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QjRDLElBQU8sSUFBTSxPQUFTLE9BQVMsRUFBRyxNQUNsQzNDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxNQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzdRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQjhRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJvQixLQUFRLElBQU0sSUFBTSxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzFCQyxLQUFRLElBQU0sT0FBUyxFQUFHLEVBQUcsTUFDN0JDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3VCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUI4VCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJuVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJvVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxNQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IyRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQ2pDbFYsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCbVYsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JoVixPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENpVixNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDakNoVixPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENpVixNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQjdULE1BQVMsT0FBUyxJQUFNLEVBQUcsRUFBRyxNQUM5QjhULE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakM5VCxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakMrVCxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMzQjlULE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMzQitULE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDbENDLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMzQmpVLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQmtVLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUMzQmpVLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkcsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCRSxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsTUFDM0I2VCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN2QzdULE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQzhULE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDMVQsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDMlQsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNsQzVSLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQzZSLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNsQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCalEsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENXLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ3NQLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNsQ25QLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ29QLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxJQUFNLEVBQUcsRUFBRyxRQUN4QkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUM1QkMsT0FBVSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzVCQyxPQUFVLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDNUJDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBRXRDQyxtQkFDSXhNLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9Cc0QsSUFBTyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3JDRSxJQUFPLE9BQVMsSUFBTSxPQUFTLEVBQUcsUUFDbEN2RCxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxJQUFNLE9BQVMsRUFBRyxRQUM1QkMsSUFBTyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3JDQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0J0QixJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JjLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3JDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQjZDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnZVLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsTUFBUSxFQUFHLFFBQzlCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEtBQU8sRUFBRyxRQUM3QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9Ca1EsSUFBTyxJQUFNLElBQU0sTUFBUSxFQUFHLFFBQzlCQyxJQUFPLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQjRDLElBQU8sSUFBTSxPQUFTLE9BQVMsRUFBRyxRQUNsQzNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsS0FBTyxFQUFHLFFBQzlCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsSUFDdENDLEtBQVEsT0FBUyxPQUFTLEtBQU8sRUFBRyxRQUNwQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNyQzdRLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQzhRLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxLQUFPLEVBQUcsUUFDcENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsS0FBTyxFQUFHLFFBQ3BDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaEN1QixLQUFRLElBQU0sT0FBUyxPQUFTLEVBQUcsUUFDbkN1SSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJ0SSxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkUsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2hDRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxNQUN0Q0MsS0FBUSxFQUFHLE9BQVMsS0FBTyxFQUFHLFFBQzlCRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2hDQyxLQUFRLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDOUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxNQUN0QzdULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQzhULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQm5VLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ29VLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0UsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDL0JDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUVyQ2lHLGVBQ0kxTSxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnNELElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0UsSUFBTyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsSUFBTSxPQUFTLEVBQUcsUUFDNUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CdEIsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CYyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNwQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUI2QyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLElBQU8sSUFBTSxJQUFNLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsUUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLEtBQy9CQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsS0FDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsTUFBUSxFQUFHLFFBQy9CQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsS0FDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLEtBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsS0FBUSxJQUFNLE9BQVMsT0FBUyxFQUFHLFFBQ25DdUksS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdEksS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJFLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0UsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0UsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdEM3VCxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaEM4VCxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFR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QUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEtBQU8sRUFBRyxLQUM3QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCa1EsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCNkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLElBQ3pCNUMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsSUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsSUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI4USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCb0IsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLElBQzFCQyxLQUFRLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsSUFBTSxJQUFNLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxJQUFNLE9BQVMsRUFBRyxFQUFHLElBQzdCMkksS0FBUSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQ3BCMUksS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzdULEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQjhULEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQm5VLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQm9VLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsR0FDakMzRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQjJELE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ21HLE1BQVMsRUFBRyxJQUFNLEVBQUcsRUFBRyxNQUN4QmxHLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMzQkMsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2pDbFYsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCbVYsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVB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VSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDMlQsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDMEQsT0FBVSxLQUFPLElBQU0sRUFBRyxFQUFHLEtBQzdCQyxNQUFTLEtBQU8sS0FBTyxFQUFHLEVBQUcsS0FDN0IxRCxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsR0FDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxHQUMvQkMsTUFBUyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQy9CQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxRQUMvQkMsTUFBUyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQy9CQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFT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RUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JxUSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsT0FDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE9BQzFCQyxLQUFRLE9BQVMsT0FBUyxNQUFRLEVBQUcsUUFDckM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaEM4USxLQUFRLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDL0JDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDZ0QsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaENnSSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsSUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxPQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE9BQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDaENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxPQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBRS9CQyxlQUNJeFAsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQy9CdFIsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLEtBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNxUSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDZ0QsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsSUFBTSxPQUFTLFFBQ25DQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDdENnSSxLQUFRLEVBQUcsT0FBUyxNQUFRLE9BQVMsT0FDckNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLE9BQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxPQUM1Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE1BQVEsT0FBUyxRQUNyQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN2Q0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBRXJDRSxnQkFDSS9nQixJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsS0FDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxPQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ3FRLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0QzdRLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQzhRLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENnRCxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxJQUFNLE9BQVMsUUFDbkNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxPQUN0Q2dJLEtBQVEsRUFBRyxPQUFTLE1BQVEsT0FBUyxPQUNyQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsT0FDNUNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLE9BQzVDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsTUFBUSxPQUFTLFFBQ3JDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3ZDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFFckNHLGtCQUNJclEsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJzRCxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxJQUFNLEVBQUcsRUFBRyxLQUM1QkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLFNBQzVCdkQsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsSUFBTSxFQUFHLEVBQUcsS0FDdEJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLEtBQ3pCdEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsS0FDbEMzQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsS0FDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI4USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdUIsS0FBUSxJQUFNLE9BQVMsRUFBRyxFQUFHLEtBQzdCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQmlNLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQnhMLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkcsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDN1QsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzFCOFQsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJHLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJuVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJvVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsS0FDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUNqQzNELE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCMkQsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FFL0I4SixvQkFDSXZRLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9Cc0QsSUFBTyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3JDQyxJQUFPLE9BQVMsSUFBTSxPQUFTLEVBQUcsSUFDbENDLElBQU8sT0FBUyxJQUFNLE9BQVMsRUFBRyxRQUNsQ3ZELElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLElBQU0sT0FBUyxFQUFHLElBQzVCQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sS0FBTyxPQUFTLEVBQUcsRUFBRyxRQUM3QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxJQUMvQnRCLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQmMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEtBQU8sT0FBUyxPQUFTLEVBQUcsUUFDbkNDLEtBQVEsSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CNkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CdlUsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEtBQU8sT0FBUyxPQUFTLEVBQUcsUUFDbkNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsTUFBUSxFQUFHLFFBQzlCQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JrUSxJQUFPLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsTUFBUSxFQUFHLElBQzlCNEMsSUFBTyxJQUFNLE9BQVMsT0FBUyxFQUFHLElBQ2xDM0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLElBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDN1EsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDOFEsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDQyxLQUFRLE9BQVMsT0FBUyxNQUFRLEVBQUcsUUFDckNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDL0JDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ3VCLEtBQVEsSUFBTSxPQUFTLE9BQVMsRUFBRyxJQUNuQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDRSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJTLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0csS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDN1QsS0FBUSxFQUFHLE9BQVMsTUFBUSxFQUFHLElBQy9COFQsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCblUsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDb1UsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDRSxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsR0FDakMzRCxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQzJELE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLEtBRXJDK0oscUJBQ0l4USxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QnNELElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLElBQzVCQyxJQUFPLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUJ2RCxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxJQUFNLEVBQUcsRUFBRyxJQUN0QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEtBQU8sT0FBUyxFQUFHLEVBQUcsUUFDN0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDekJ0QixJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJjLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxLQUFPLE9BQVMsRUFBRyxFQUFHLFFBQzdCQyxLQUFRLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDMUJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QjZDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QnZVLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxLQUFPLE9BQVMsRUFBRyxFQUFHLFFBQzdCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEtBQU8sRUFBRyxRQUM3QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCa1EsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QjRDLElBQU8sSUFBTSxPQUFTLE9BQVMsRUFBRyxJQUNsQzNDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzdRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQjhRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJ1QixLQUFRLElBQU0sT0FBUyxFQUFHLEVBQUcsSUFDN0JHLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQlMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCRyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3VCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUI4VCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCRSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJsVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJrZixLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUI5SyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsR0FDakMzRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQjJELE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBRS9CaUssa0JBQ0lyaEIsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE1BQVEsRUFBRyxRQUMxQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxPQUFTLEdBQUssT0FBUyxFQUFHLFNBQ2pDQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFNBQzNCQyxJQUFPLEVBQUcsR0FBSyxNQUFRLEVBQUcsT0FDMUJDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFNBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxLQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVB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QUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQjZDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQzVDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQzZDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQzVDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QjZDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QnZVLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCa1EsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQy9CNkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQy9CNUMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekI0QyxJQUFPLE9BQVMsRUFBRyxFQUFHLEVBQUcsTUFDekI2UCxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJ4UyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM3USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUI4USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCb0IsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCMFAsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCdlAsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCUyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJHLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQmxVLEtBQVEsRUFBRyxPQUFTLEVBQUcs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VSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBUSxLQUNSQyxJQUFVLE1BQ1ZDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWN29ELElBQVEsS0FDUkMsSUFBUSxLQUNSRixJQUFRLEtBQ1Irb0QsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZwcEQsSUFBUSxLQUNScXBELElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBUSxLQUNSQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBUSxLQUNSQyxJQUFRLEtBQ1JDLElBQVEsS0FDUkMsSUFBVSxNQUNWQyxJQUFRLEtBQ1JDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLE1BQ1ZDLElBQVUsS0FDVkMsSUFBVSxNQUNWQyxJQUFVLE1BQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFRLEtBQ1JDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLE1BQ1ZDLElBQVUsS0FDVkMsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsTUFDVkMsSUFBVSxLQUNWQyxJQUFVLE1BQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFRLEtBQ1JDLElBQVEsS0FDUkMsSUFBUSxLQUNSQyxJQUFVLE1BQ1ZDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLE1BQ1ZDLElBQVUsS0FDVkMsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsTUFDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVEsS0FDUkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVEsS0FDUkMsSUFBVSxLQUNWQyxJQUFRLEtBQ1JDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVEsS0FDUkMsSUFBUSxLQUNSQyxJQUFRLEtBQ1JDLElBQVUsTUFDVkMsSUFBUSxLQUNSQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxNQUNWQyxJQUFVLE1BQ1ZDLElBQVUsTUFDVkMsSUFBVSxLQUNWQyxJQUFRLEtBQ1JDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLE1BQ1ZDLElBQVUsS0FDVkMsSUFBVSxNQUNWdmtELElBQVEsS0FDUndrRCxJQUFVLE1BQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBUSxLQUNSQyxJQUFRLEtBQ1JDLElBQVEsS0FDUkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBUSxLQUNSQyxJQUFVLE1BQ1ZDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFRLEtBQ1JDLElBQVEsS0FDUkMsSUFBUSxLQUNSQyxJQUFVLE1BQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBUSxLQUNSQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVEsS0FDUkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVEsS0FDUkMsSUFBUSxLQUNSQyxJQUFRLEtBQ1JDLElBQVUsTUFDVkMsSUFBUSxLQUNSQyxJQUFVLE1BQ1ZDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBUSxLQUNSQyxJQUFVLE1BQ1ZDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsTUFDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLE1BQ1ZDLElBQVUsS0FDVkMsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVEsS0FDUkMsSUFBUSxLQUNSQyxJQUFRLEtBQ1JDLElBQVUsTUFDVkMsSUFBVSxNQUNWQyxJQUFVLE1BQ1ZDLElBQVUsTUFDVkMsSUFBVSxLQUNWQyxJQUFVLE1BQ1ZDLElBQVUsS0FDVkMsSUFBVSxNQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBUSxLQUNSQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVUsS0FDVkMsSUFBVSxLQUNWQyxJQUFVLEtBQ1ZDLElBQVEsS0FDUkMsSUFBVSxLQUNWQyxJQUFVLEtB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
+var hmd=function(){"use strict";var e=function(){for(var e={},n=0;n<arguments.length;n++){var r=arguments[n];for(var a in r)t.call(r,a)&&(e[a]=r[a])}return e},t=Object.prototype.hasOwnProperty;var n=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;var i=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var i,o,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l<arguments.length;l++){for(var c in i=Object(arguments[l]))r.call(i,c)&&(s[c]=i[c]);if(n){o=n(i);for(var d=0;d<o.length;d++)a.call(i,o[d])&&(s[o[d]]=i[o[d]])}}return s},o=function(e,t,n){var r;null!==n&&void 0!==n||"object"==typeof t&&!Array.isArray(t)||(n=t,t={});r=i({type:String(e)},t),Array.isArray(n)?r.children=n:null!==n&&void 0!==n&&(r.value=String(n));return r};var s=l;function l(e){if("string"==typeof e)return function(e){return function(t){return Boolean(t&&t.type===e)}}(e);if(null===e||void 0===e)return c;if("object"==typeof e)return("length"in e?function(e){var t=function(e){var t=[],n=e.length,r=-1;for(;++r<n;)t[r]=l(e[r]);return t}(e),n=t.length;return function(){var e=-1;for(;++e<n;)if(t[e].apply(this,arguments))return!0;return!1}}:function(e){return function(t){var n;for(n in e)if(t[n]!==e[n])return!1;return!0}})(e);if("function"==typeof e)return e;throw new Error("Expected function, string, or object as test")}function c(){return!0}var d=p,_=!0,u="skip",m=!1;function p(e,t,n,r){var a;function i(e,o,s){var l,c=[];return(t&&!a(e,o,s[s.length-1]||null)||(c=g(n(e,s)))[0]!==m)&&e.children&&c[0]!==u&&(l=g(function(e,t){var n,a=r?-1:1,o=(r?e.length:-1)+a;for(;o>-1&&o<e.length;){if((n=i(e[o],o,t))[0]===m)return n;o="number"==typeof n[1]?n[1]:o+a}}(e.children,s.concat(e))))[0]===m?l:c}"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),a=s(t),i(e,null,[])}function g(e){return null!==e&&"object"==typeof e&&"length"in e?e:"number"==typeof e?[_,e]:[e]}p.CONTINUE=_,p.SKIP=u,p.EXIT=m;var E=T,h=d.CONTINUE,S=d.SKIP,f=d.EXIT;function T(e,t,n,r){"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),d(e,t,function(e,t){var r=t[t.length-1],a=r?r.children.indexOf(e):null;return n(e,a,r)},r)}T.CONTINUE=h,T.SKIP=S,T.EXIT=f;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function b(e,t){return e(t={exports:{}},t.exports),t.exports}function C(e){return e&&e.default||e}var N=b(function(e,t){var n=t;function r(e){return t.displayName=e,t;function t(t){var n=t&&t.position&&t.position[e]||{};return{line:n.line||null,column:n.column||null,offset:isNaN(n.offset)?null:n.offset}}}n.start=r("start"),n.end=r("end")}),v=function(e){var t=R(R(e).position),n=R(t.start),r=R(t.end);return!(n.line&&n.column&&r.line&&r.column)};function R(e){return e&&"object"==typeof e?e:{}}var A=function(e,t){return function(e){return function(t){var n=t&&y(t);return n&&O.call(e,n)?e[n]:null}}(function(e,t){var n={};if(!e||!e.type)throw new Error("mdast-util-definitions expected node");return E(e,"definition",t&&t.commonmark?function(e){var t=y(e.identifier);O.call(n,t)||(n[t]=e)}:function(e){n[y(e.identifier)]=e}),n}(e,t))},O={}.hasOwnProperty;function y(e){return e.toUpperCase()}var I=b(function(e,t){(t=e.exports=function(e){return e.replace(/^\s*|\s*$/g,"")}).left=function(e){return e.replace(/^\s*/,"")},t.right=function(e){return e.replace(/\s*$/,"")}}),D=(I.left,I.right,function(e,t){var n,r,a=t.children||[],i=a.length,o=[],s=-1;for(;++s<i;)(n=x(e,a[s],t))&&(s&&"break"===a[s-1].type&&(n.value&&(n.value=I.left(n.value)),(r=n.children&&n.children[0])&&r.value&&(r.value=I.left(r.value))),o=o.concat(n));return o});var x=function(e,t,n){var r=t&&t.type,a=M.call(e.handlers,r)?e.handlers[r]:null;if(!r)throw new Error("Expected node, got `"+t+"`");return("function"==typeof a?a:function(e,t){if(function(e){var t=e.data||{};if(M.call(t,"hName")||M.call(t,"hProperties")||M.call(t,"hChildren"))return!1;return"value"in e}(t))return e.augment(t,o("text",t.value));return e(t,"div",D(e,t))})(e,t,n)},M={}.hasOwnProperty;var w=function(e,t){return e(t,"hr")};var L=function(e,t){var n=[],r=-1,a=e.length;t&&n.push(o("text","\n"));for(;++r<a;)r&&n.push(o("text","\n")),n.push(e[r]);t&&0!==e.length&&n.push(o("text","\n"));return n};var P=function(e,t){var n,r,a={},i=t.ordered?"ol":"ul",o=-1;"number"==typeof t.start&&1!==t.start&&(a.start=t.start);n=D(e,t),r=n.length;for(;++o<r;)if(n[o].properties.className&&-1!==n[o].properties.className.indexOf("task-list-item")){a.className=["contains-task-list"];break}return e(t,i,a,L(n,!0))};var k=function(e){var t,n,r,a,i=e.footnoteById,o=e.footnoteOrder,s=o.length,l=-1,c=[];for(;++l<s;)(t=i[o[l].toUpperCase()])&&(r=t.children.concat(),a=r[r.length-1],n={type:"link",url:"#fnref-"+t.identifier,data:{hProperties:{className:["footnote-backref"]}},children:[{type:"text",value:"↩"}]},a&&"paragraph"===a.type||(a={type:"paragraph",children:[]},r.push(a)),a.children.push(n),c.push({type:"listItem",data:{hProperties:{id:"fn-"+t.identifier}},children:r,position:t.position}));if(0===c.length)return null;return e(null,"div",{className:["footnotes"]},L([w(e),P(e,{type:"list",ordered:!0,children:c})],!0))};var U=function(e,t){return e(t,"blockquote",L(D(e,t),!0))};var F=function(e,t){return[e(t,"br"),o("text","\n")]};var B,G="",H=function(e,t){if("string"!=typeof e)throw new TypeError("expected a string");if(1===t)return e;if(2===t)return e+e;var n=e.length*t;if(B!==e||void 0===B)B=e,G="";else if(G.length>=n)return G.substr(0,n);for(;n>G.length&&t>1;)1&t&&(G+=e),t>>=1,e+=e;return G=(G+=e).substr(0,n)};var Y=function(e,t){var n,r,a="string"==typeof e,i=a&&e.length,o=0,s=-1,l=-1,c=t||4,d=[];if(!a)throw new Error("detab expected string");for(;++s<i;)(n=e.charCodeAt(s))===V?(l+=r=c-(l+1)%c,d.push(e.slice(o,s)+H(" ",r)),o=s+1):n===z||n===q?l=-1:l++;return d.push(e.slice(o)),d.join("")},V=9,z=10,q=13;var K=function(e,t){var n=t.value?Y(t.value+"\n"):"",r=t.lang&&t.lang.match(/^[^ \t]+(?=[ \t]|$)/),a={};r&&(a.className=["language-"+r]);return e(t.position,"pre",[e(t,"code",a,[o("text",n)])])};var W=function(e,t){return e(t,"del",D(e,t))};var Q=function(e,t){return e(t,"em",D(e,t))};var $=function(e,t){var n=e.footnoteOrder,r=String(t.identifier);-1===n.indexOf(r)&&n.push(r);return e(t.position,"sup",{id:"fnref-"+r},[e(t,"a",{href:"#fn-"+r,className:["footnote-ref"]},[o("text",t.label||r)])])};var j=function(e,t){var n=e.footnoteById,r=e.footnoteOrder,a=1;for(;a in n;)a++;return a=String(a),r.push(a),n[a]={type:"footnoteDefinition",identifier:a,children:[{type:"paragraph",children:t.children}],position:t.position},$(e,{type:"footnoteReference",identifier:a,position:t.position})};var X=function(e,t){return e(t,"h"+t.depth,D(e,t))};var Z=function(e,t){return e.dangerous?e.augment(t,o("raw",t.value)):null};var J={};function ee(e,t,n){var r,a,i,o,s,l="";for("string"!=typeof t&&(n=t,t=ee.defaultChars),void 0===n&&(n=!0),s=function(e){var t,n,r=J[e];if(r)return r;for(r=J[e]=[],t=0;t<128;t++)n=String.fromCharCode(t),/^[0-9a-z]$/i.test(n)?r.push(n):r.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t<e.length;t++)r[e.charCodeAt(t)]=e[t];return r}(t),r=0,a=e.length;r<a;r++)if(i=e.charCodeAt(r),n&&37===i&&r+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(r+1,r+3)))l+=e.slice(r,r+3),r+=2;else if(i<128)l+=s[i];else if(i>=55296&&i<=57343){if(i>=55296&&i<=56319&&r+1<a&&(o=e.charCodeAt(r+1))>=56320&&o<=57343){l+=encodeURIComponent(e[r]+e[r+1]),r++;continue}l+="%EF%BF%BD"}else l+=encodeURIComponent(e[r]);return l}ee.defaultChars=";/?:@&=+$,-_.!~*'()#",ee.componentChars="-_.!~*'()";var te=ee,ne=function(e,t){var n,r,a,i=t.referenceType,s="]";"collapsed"===i?s+="[]":"full"===i&&(s+="["+(t.label||t.identifier)+"]");if("imageReference"===t.type)return o("text","!["+t.alt+s);n=D(e,t),(r=n[0])&&"text"===r.type?r.value="["+r.value:n.unshift(o("text","["));(a=n[n.length-1])&&"text"===a.type?a.value+=s:n.push(o("text",s));return n};var re=function(e){return String(e).replace(/\s+/g," ")};function ae(e){var t=e.spread;return void 0===t||null===t?e.children.length>1:t}var ie=function(e){return String(e).replace(oe,se)},oe=/[ \t]*\n+[ \t]*/g,se="\n";var le={blockquote:U,break:F,code:K,delete:W,emphasis:Q,footnoteReference:$,footnote:j,heading:X,html:Z,imageReference:function(e,t){var n,r=e.definition(t.identifier);if(!r)return ne(e,t);n={src:te(r.url||""),alt:t.alt},null!==r.title&&void 0!==r.title&&(n.title=r.title);return e(t,"img",n)},image:function(e,t){var n={src:te(t.url),alt:t.alt};null!==t.title&&void 0!==t.title&&(n.title=t.title);return e(t,"img",n)},inlineCode:function(e,t){return e(t,"code",[o("text",re(t.value))])},linkReference:function(e,t){var n,r=e.definition(t.identifier);if(!r)return ne(e,t);n={href:te(r.url||"")},null!==r.title&&void 0!==r.title&&(n.title=r.title);return e(t,"a",n,D(e,t))},link:function(e,t){var n={href:te(t.url)};null!==t.title&&void 0!==t.title&&(n.title=t.title);return e(t,"a",n,D(e,t))},listItem:function(e,t,n){var r,a,i,s,l,c=t.children[0],d=D(e,t),_=n?function(e){var t=e.spread,n=e.children,r=n.length,a=-1;for(;!t&&++a<r;)t=ae(n[a]);return t}(n):ae(t),u={};if(_)r=d;else for(r=[],s=d.length,i=-1;++i<s;)"p"===(l=d[i]).tagName?r=r.concat(l.children):r.push(l);"boolean"==typeof t.checked&&(!_||c&&"paragraph"===c.type||r.unshift(e(null,"p",[])),0!==(a=_?r[0].children:r).length&&a.unshift(o("text"," ")),a.unshift(e(null,"input",{type:"checkbox",checked:t.checked,disabled:!0})),u.className=["task-list-item"]);_&&0!==r.length&&(r=L(r,!0));return e(t,"li",u,r)},list:P,paragraph:function(e,t){return e(t,"p",D(e,t))},root:function(e,t){return e.augment(t,o("root",L(D(e,t))))},strong:function(e,t){return e(t,"strong",D(e,t))},table:function(e,t){var n,r,a,i,o,s=t.children,l=s.length,c=t.align,d=c.length,_=[];for(;l--;){for(r=s[l].children,i=0===l?"th":"td",n=d,a=[];n--;)o=r[n],a[n]=e(o,i,{align:c[n]},o?D(e,o):[]);_[l]=e(s[l],"tr",L(a,!0))}return e(t,"table",L([e(_[0].position,"thead",L([_[0]],!0)),e({start:N.start(_[1]),end:N.end(_[_.length-1])},"tbody",L(_.slice(1),!0))],!0))},text:function(e,t){return e.augment(t,o("text",ie(t.value)))},thematicBreak:w,toml:ce,yaml:ce,definition:ce,footnoteDefinition:ce};function ce(){return null}var de=function(t,n){var r=function(t,n){var r=n||{},a=r.allowDangerousHTML,i={};return s.dangerous=a,s.definition=A(t,r),s.footnoteById=i,s.footnoteOrder=[],s.augment=o,s.handlers=e(le,r.handlers||{}),E(t,"footnoteDefinition",function(e){var t=String(e.identifier).toUpperCase();_e.call(i,t)||(i[t]=e)}),s;function o(t,n){var r,a;return t&&"data"in t&&(r=t.data,"element"===n.type&&r.hName&&(n.tagName=r.hName),"element"===n.type&&r.hProperties&&(n.properties=e(n.properties,r.hProperties)),n.children&&r.hChildren&&(n.children=r.hChildren)),a=t&&t.position?t:{position:t},v(a)||(n.position={start:N.start(a),end:N.end(a)}),n}function s(e,t,n,r){return(void 0===r||null===r)&&"object"==typeof n&&"length"in n&&(r=n,n={}),o(e,{type:"element",tagName:t,properties:n||{},children:r||[]})}}(t,n),a=x(r,t),i=k(r);i&&(a.children=a.children.concat(o("text","\n"),i));return a},_e={}.hasOwnProperty;var ue=de,me=function(e,t){e&&!e.process&&(t=e,e=null);return e?function(e,t){return function(n,r,a){e.run(ue(n,t),r,function(e){a(e)})}}(e,t):function(e){return function(t){return ue(t,e)}}(t)};var pe=function(e){return Ee.test("number"==typeof e?ge(e):e.charAt(0))},ge=String.fromCharCode,Ee=/\s/;var he="|",Se="||";function fe(e,t){return e.indexOf(Se,t)}var Te=function(){function e(e,t,n){if(this.options.gfm&&t.substr(0,2)===Se&&t.substr(0,4)!==Se+Se&&!pe(t.charAt(2))){var r="",a="",i="",o="",s=1,l=t.length,c=e.now();for(c.column+=2,c.offset+=2;++s<l;){if(!((r=t.charAt(s))!==he||a!==he||i&&pe(i)))return!!n||e(Se+o+Se)({type:"kbd",children:this.tokenizeInline(o,c),data:{hName:"kbd"}});o+=a,i=a,a=r}}}e.locator=fe;var t=this.Parser,n=t.prototype.inlineTokenizers,r=t.prototype.inlineMethods;n.kbd=e,r.splice(r.indexOf("text"),0,"kbd");var a=this.Compiler;a&&(a.prototype.visitors.kbd=function(e){return"||".concat(this.all(e).join(""),"||")})};var be={isRemarkParser:function(e){return Boolean(e&&e.prototype&&e.prototype.blockTokenizers)},isRemarkCompiler:function(e){return Boolean(e&&e.prototype&&e.prototype.visitors)}},Ce=function(e){const t=this.Parser,n=this.Compiler;be.isRemarkParser(t)&&function(e,t){const n=e.prototype,r=n.inlineMethods;function a(e,n,r){const a=n.length;let i,o,s,l,c,d,_,u=!1,m=!1,p=0;if(n.charCodeAt(p)===ye&&(m=!0,p++),n.charCodeAt(p)===Re){if(p++,m)return!!r||e(n.slice(0,p))({type:"text",value:"$"});if(n.charCodeAt(p)===Re&&(u=!0,p++),(s=n.charCodeAt(p))!==ve&&s!==Ne){for(l=p;p<a;){if(o=s,s=n.charCodeAt(p+1),o===Re){if((i=n.charCodeAt(p-1))!==ve&&i!==Ne&&(s!=s||s<Ae||s>Oe)&&(!u||s===Re)){c=p-1,p++,u&&p++,d=p;break}}else o===ye&&(p++,s=n.charCodeAt(p+1));p++}if(void 0!==d)return!!r||(_=n.slice(l,c+1),e(n.slice(0,d))({type:"inlineMath",value:_,data:{hName:"span",hProperties:{className:Ie.concat(u&&t.inlineMathDouble?[De]:[])},hChildren:[{type:"text",value:_}]}}))}}}a.locator=function(e,t){return e.indexOf("$",t)},n.inlineTokenizers.math=a,r.splice(r.indexOf("text"),0,"math")}(t,e);be.isRemarkCompiler(n)&&function(e){e.prototype.visitors.inlineMath=function(e){let t="$";(e.data&&e.data.hProperties&&e.data.hProperties.className||[]).includes(De)&&(t="$$");return t+e.value+t}}(n)};const Ne=9,ve=32,Re=36,Ae=48,Oe=57,ye=92,Ie=["math","math-inline"],De="math-display";var xe=function(){const e=this.Parser,t=this.Compiler;be.isRemarkParser(e)&&function(e){const t=e.prototype,n=t.blockMethods,r=t.interruptParagraph,a=t.interruptList,i=t.interruptBlockquote;t.blockTokenizers.math=function(e,t,n){var r=t.length,a=0;let i,o,s,l,c,d,_,u,m,p,g;for(;a<r&&t.charCodeAt(a)===we;)a++;c=a;for(;a<r&&t.charCodeAt(a)===Le;)a++;if((d=a-c)<Ue)return;for(;a<r&&t.charCodeAt(a)===we;)a++;_=a;for(;a<r;){if((i=t.charCodeAt(a))===Le)return;if(i===Me)break;a++}if(t.charCodeAt(a)!==Me)return;if(n)return!0;o=[],_!==a&&o.push(t.slice(_,a));a++,s=-1===(s=t.indexOf(Pe,a+1))?r:s;for(;a<r;){for(u=!1,p=a,g=s,l=s,m=0;l>p&&t.charCodeAt(l-1)===we;)l--;for(;l>p&&t.charCodeAt(l-1)===Le;)m++,l--;for(d<=m&&t.indexOf(ke,p)===l&&(u=!0,g=l);p<=g&&p-a<c&&t.charCodeAt(p)===we;)p++;if(u)for(;g>p&&t.charCodeAt(g-1)===we;)g--;if(u&&p===g||o.push(t.slice(p,g)),u)break;a=s+1,s=-1===(s=t.indexOf(Pe,a+1))?r:s}return o=o.join("\n"),e(t.slice(0,s))({type:"math",value:o,data:{hName:"div",hProperties:{className:Fe.concat()},hChildren:[{type:"text",value:o}]}})},n.splice(n.indexOf("fencedCode")+1,0,"math"),r.splice(r.indexOf("fencedCode")+1,0,["math"]),a.splice(a.indexOf("fencedCode")+1,0,["math"]),i.splice(i.indexOf("fencedCode")+1,0,["math"])}(e);be.isRemarkCompiler(t)&&function(e){e.prototype.visitors.math=function(e){return"$$\n"+e.value+"\n$$"}}(t)};const Me=10,we=32,Le=36,Pe="\n",ke="$",Ue=2,Fe=["math","math-display"];var Be=function(e){null==e&&(e={});xe.call(this,e),Ce.call(this,e)};var Ge=b(function(e,t){var n,r;n=function(e){var t,n=[],r=Object.keys,a={},i={},o=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,l=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,c="</span>",d={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},_="of and for in not or if then".split(" ");function u(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function m(e){return e.nodeName.toLowerCase()}function p(e){return o.test(e)}function g(e){var t,n={},r=Array.prototype.slice.call(arguments,1);for(t in e)n[t]=e[t];return r.forEach(function(e){for(t in e)n[t]=e[t]}),n}function E(e){var t=[];return function e(n,r){for(var a=n.firstChild;a;a=a.nextSibling)3===a.nodeType?r+=a.nodeValue.length:1===a.nodeType&&(t.push({event:"start",offset:r,node:a}),r=e(a,r),m(a).match(/br|hr|img|input/)||t.push({event:"stop",offset:r,node:a}));return r}(e,0),t}function h(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return g(e,{variants:null},t)})),e.cached_variants?e.cached_variants:function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(e)?[g(e,{starts:e.starts?g(e.starts):null})]:[e]}function S(e){if(t&&!e.langApiRestored){for(var n in e.langApiRestored=!0,t)e[n]&&(e[t[n]]=e[n]);(e.contains||[]).concat(e.variants||[]).forEach(S)}}function f(e,t){var n={};return"string"==typeof e?a("keyword",e):r(e).forEach(function(t){a(t,e[t])}),n;function a(e,r){t&&(r=r.toLowerCase()),r.split(" ").forEach(function(t){var r=t.split("|");n[r[0]]=[e,function(e,t){return t?Number(t):(n=e,-1!=_.indexOf(n.toLowerCase())?0:1);var n}(r[0],r[1])]})}}function T(e){function t(e){return e&&e.source||e}function n(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}function r(e){var r,a,i={},o=[],s={},l=1;function c(e,t){i[l]=e,o.push([e,t]),l+=new RegExp(t.toString()+"|").exec("").length-1+1}for(var d=0;d<e.contains.length;d++){c(a=e.contains[d],a.beginKeywords?"\\.?(?:"+a.begin+")\\.?":a.begin)}e.terminator_end&&c("end",e.terminator_end),e.illegal&&c("illegal",e.illegal);var _=o.map(function(e){return e[1]});return r=n(function(e,n){for(var r=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,a=0,i="",o=0;o<e.length;o++){var s=a+=1,l=t(e[o]);for(o>0&&(i+=n),i+="(";l.length>0;){var c=r.exec(l);if(null==c){i+=l;break}i+=l.substring(0,c.index),l=l.substring(c.index+c[0].length),"\\"==c[0][0]&&c[1]?i+="\\"+String(Number(c[1])+s):(i+=c[0],"("==c[0]&&a++)}i+=")"}return i}(_,"|"),!0),s.lastIndex=0,s.exec=function(t){var n;if(0===o.length)return null;r.lastIndex=s.lastIndex;var a=r.exec(t);if(!a)return null;for(var l=0;l<a.length;l++)if(void 0!=a[l]&&void 0!=i[""+l]){n=i[""+l];break}return"string"==typeof n?(a.type=n,a.extra=[e.illegal,e.terminator_end]):(a.type="begin",a.rule=n),a},s}!function a(i,o){i.compiled||(i.compiled=!0,i.keywords=i.keywords||i.beginKeywords,i.keywords&&(i.keywords=f(i.keywords,e.case_insensitive)),i.lexemesRe=n(i.lexemes||/\w+/,!0),o&&(i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")\\b"),i.begin||(i.begin=/\B|\b/),i.beginRe=n(i.begin),i.endSameAsBegin&&(i.end=i.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),i.end&&(i.endRe=n(i.end)),i.terminator_end=t(i.end)||"",i.endsWithParent&&o.terminator_end&&(i.terminator_end+=(i.end?"|":"")+o.terminator_end)),i.illegal&&(i.illegalRe=n(i.illegal)),null==i.relevance&&(i.relevance=1),i.contains||(i.contains=[]),i.contains=Array.prototype.concat.apply([],i.contains.map(function(e){return h("self"===e?i:e)})),i.contains.forEach(function(e){a(e,i)}),i.starts&&a(i.starts,o),i.terminators=r(i))}(e)}function b(e,t,n,r){function i(e,t){var n=E.case_insensitive?t[0].toLowerCase():t[0];return e.keywords.hasOwnProperty(n)&&e.keywords[n]}function o(e,t,n,r){if(!n&&""===t)return"";if(!e)return t;var a='<span class="'+(r?"":d.classPrefix);return(a+=e+'">')+t+(n?"":c)}function s(){N+=null!=S.subLanguage?function(){var e="string"==typeof S.subLanguage;if(e&&!a[S.subLanguage])return u(v);var t=e?b(S.subLanguage,v,!0,f[S.subLanguage]):C(v,S.subLanguage.length?S.subLanguage:void 0);return S.relevance>0&&(R+=t.relevance),e&&(f[S.subLanguage]=t.top),o(t.language,t.value,!1,!0)}():function(){var e,t,n,r;if(!S.keywords)return u(v);for(r="",t=0,S.lexemesRe.lastIndex=0,n=S.lexemesRe.exec(v);n;)r+=u(v.substring(t,n.index)),(e=i(S,n))?(R+=e[1],r+=o(e[0],u(n[0]))):r+=u(n[0]),t=S.lexemesRe.lastIndex,n=S.lexemesRe.exec(v);return r+u(v.substr(t))}(),v=""}function l(e){N+=e.className?o(e.className,"",!0):"",S=Object.create(e,{parent:{value:S}})}function _(e){var t=e[0],n=e.rule;return n&&n.endSameAsBegin&&(n.endRe=new RegExp(t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),n.skip?v+=t:(n.excludeBegin&&(v+=t),s(),n.returnBegin||n.excludeBegin||(v=t)),l(n),n.returnBegin?0:t.length}function m(e){var t=e[0],n=function e(t,n){if(function(e,t){var n=e&&e.exec(t);return n&&0===n.index}(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(S,t);if(n){var r=S;r.skip?v+=t:(r.returnEnd||r.excludeEnd||(v+=t),s(),r.excludeEnd&&(v=t));do{S.className&&(N+=c),S.skip||S.subLanguage||(R+=S.relevance),S=S.parent}while(S!==n.parent);return n.starts&&(n.endSameAsBegin&&(n.starts.endRe=n.endRe),l(n.starts)),r.returnEnd?0:t.length}}var p={};function g(e,r){var a=r&&r[0];if(v+=e,null==a)return s(),0;if("begin"==p.type&&"end"==r.type&&p.index==r.index&&""===a)return v+=t.slice(r.index,r.index+1),1;if(p=r,"begin"===r.type)return _(r);if("illegal"===r.type&&!n)throw new Error('Illegal lexeme "'+a+'" for mode "'+(S.className||"<unnamed>")+'"');if("end"===r.type){var i=m(r);if(void 0!=i)return i}return v+=a,a.length}var E=A(e);if(!E)throw new Error('Unknown language: "'+e+'"');T(E);var h,S=r||E,f={},N="";for(h=S;h!==E;h=h.parent)h.className&&(N=o(h.className,"",!0)+N);var v="",R=0;try{for(var O,y,I=0;S.terminators.lastIndex=I,O=S.terminators.exec(t);)y=g(t.substring(I,O.index),O),I=O.index+y;for(g(t.substr(I)),h=S;h.parent;h=h.parent)h.className&&(N+=c);return{relevance:R,value:N,illegal:!1,language:e,top:S}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{illegal:!0,relevance:0,value:u(t)};throw e}}function C(e,t){t=t||d.languages||r(a);var n={relevance:0,value:u(e)},i=n;return t.filter(A).filter(O).forEach(function(t){var r=b(t,e,!1);r.language=t,r.relevance>i.relevance&&(i=r),r.relevance>n.relevance&&(i=n,n=r)}),i.language&&(n.second_best=i),n}function N(e){return d.tabReplace||d.useBR?e.replace(l,function(e,t){return d.useBR&&"\n"===e?"<br>":d.tabReplace?t.replace(/\t/g,d.tabReplace):""}):e}function v(e){var t,r,a,o,l,c=function(e){var t,n,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",n=s.exec(i))return A(n[1])?n[1]:"no-highlight";for(t=0,r=(i=i.split(/\s+/)).length;t<r;t++)if(p(a=i[t])||A(a))return a}(e);p(c)||(d.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):t=e,l=t.textContent,a=c?b(c,l,!0):C(l),(r=E(t)).length&&((o=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=a.value,a.value=function(e,t,r){var a=0,i="",o=[];function s(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset<t[0].offset?e:t:"start"===t[0].event?e:t:e.length?e:t}function l(e){i+="<"+m(e)+n.map.call(e.attributes,function(e){return" "+e.nodeName+'="'+u(e.value).replace('"',"&quot;")+'"'}).join("")+">"}function c(e){i+="</"+m(e)+">"}function d(e){("start"===e.event?l:c)(e.node)}for(;e.length||t.length;){var _=s();if(i+=u(r.substring(a,_[0].offset)),a=_[0].offset,_===e){o.reverse().forEach(c);do{d(_.splice(0,1)[0]),_=s()}while(_===e&&_.length&&_[0].offset===a);o.reverse().forEach(l)}else"start"===_[0].event?o.push(_[0].node):o.pop(),d(_.splice(0,1)[0])}return i+u(r.substr(a))}(r,E(o),l)),a.value=N(a.value),e.innerHTML=a.value,e.className=function(e,t,n){var r=t?i[t]:n,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,c,a.language),e.result={language:a.language,re:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance}))}function R(){if(!R.called){R.called=!0;var e=document.querySelectorAll("pre code");n.forEach.call(e,v)}}function A(e){return e=(e||"").toLowerCase(),a[e]||a[i[e]]}function O(e){var t=A(e);return t&&!t.disableAutodetect}return e.highlight=b,e.highlightAuto=C,e.fixMarkup=N,e.highlightBlock=v,e.configure=function(e){d=g(d,e)},e.initHighlighting=R,e.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",R,!1),addEventListener("load",R,!1)},e.registerLanguage=function(t,n){var r=a[t]=n(e);S(r),r.rawDefinition=n.bind(null,e),r.aliases&&r.aliases.forEach(function(e){i[e]=t})},e.listLanguages=function(){return r(a)},e.getLanguage=A,e.autoDetection=O,e.inherit=g,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var a=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return a.contains.push(e.PHRASAL_WORDS_MODE),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),a},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e},r="object"==typeof window&&window||"object"==typeof self&&self,t.nodeType?r&&(r.hljs=n({})):n(t)}),He=b(function(e){!function(){var t;function n(e){for(var t,n,r,a,i=1,o=[].slice.call(arguments),s=0,l=e.length,c="",d=!1,_=!1,u=function(){return o[i++]},m=function(){for(var n="";/\d/.test(e[s]);)n+=e[s++],t=e[s];return n.length>0?parseInt(n):null};s<l;++s)if(t=e[s],d)switch(d=!1,"."==t?(_=!1,t=e[++s]):"0"==t&&"."==e[s+1]?(_=!0,t=e[s+=2]):_=!0,a=m(),t){case"b":c+=parseInt(u(),10).toString(2);break;case"c":"string"==typeof(n=u())||n instanceof String?c+=n:c+=String.fromCharCode(parseInt(n,10));break;case"d":c+=parseInt(u(),10);break;case"f":r=String(parseFloat(u()).toFixed(a||6)),c+=_?r:r.replace(/^0/,"");break;case"j":c+=JSON.stringify(u());break;case"o":c+="0"+parseInt(u(),10).toString(8);break;case"s":c+=u();break;case"x":c+="0x"+parseInt(u(),10).toString(16);break;case"X":c+="0x"+parseInt(u(),10).toString(16).toUpperCase();break;default:c+=t}else"%"===t?d=!0:c+=t;return c}(t=e.exports=n).format=n,t.vsprintf=function(e,t){return n.apply(null,[e].concat(t))},"undefined"!=typeof console&&"function"==typeof console.log&&(t.printf=function(){console.log(n.apply(null,arguments))})}()}),Ye=ze(Error),Ve=Ye;function ze(e){return t.displayName=e.displayName||e.name,t;function t(t){return t&&(t=He.apply(null,arguments)),new e(t)}}function qe(){}Ye.eval=ze(EvalError),Ye.range=ze(RangeError),Ye.reference=ze(ReferenceError),Ye.syntax=ze(SyntaxError),Ye.type=ze(TypeError),Ye.uri=ze(URIError),Ye.create=ze,qe.prototype=Ge;var Ke=new qe,We=Ke;Ke.highlight=function(e,t,n){var r=(n||{}).prefix;null!==r&&void 0!==r||(r=je);return mt(_t(e,t,!0,r))},Ke.highlightAuto=ct,Ke.registerLanguage=function(e,t){var n=t(Ke);n.rawDefinition=t.bind(null,Ke),st[e]=n,ot.push(e),n.aliases&&dt(e,n.aliases)},Ke.listLanguages=function(){return ot.concat()},Ke.registerAlias=dt,Ke.getLanguage=pt;var Qe=Ge.inherit,$e={}.hasOwnProperty,je="hljs-",Xe="case_insensitive",Ze="cached_variants",Je="terminator_end",et=" ",tt="|",nt="(",rt=")",at="\\",it=["of","and","for","in","not","or","if","then"],ot=[],st={},lt={};function ct(e,t){var n,r,a,i,o=t||{},s=o.subset||ot,l=o.prefix,c=s.length,d=-1;if(null!==l&&void 0!==l||(l=je),"string"!=typeof e)throw Ve("Expected `string` for value, got `%s`",e);for(r=mt({}),n=mt({});++d<c;)pt(i=s[d])&&((a=mt(_t(i,e,!1,l))).language=i,a.relevance>r.relevance&&(r=a),a.relevance>n.relevance&&(r=n,n=a));return r.language&&(n.secondBest=r),n}function dt(e,t){var n,r,a,i,o=e;for(n in t&&((o={})[e]=t),o)for(a=(r="string"==typeof(r=o[n])?[r]:r).length,i=-1;++i<a;)lt[r[i]]=n}function _t(e,t,n,r,a){var i,o,s,l,c,d,_,u,m={},p={},g=[],E="",h=0;if("string"!=typeof e)throw Ve("Expected `string` for name, got `%s`",e);if("string"!=typeof t)throw Ve("Expected `string` for value, got `%s`",t);if(i=pt(e),s=o=a||i,l=u=[],!i)throw Ve("Unknown language: `%s` is not registered",e);!function(e){function t(a,i){a.compiled||(a.compiled=!0,a.keywords=a.keywords||a.beginKeywords,a.keywords&&(a.keywords=function(e,t){var n,r={};if("string"==typeof e)a("keyword",e);else for(n in e)a(n,e[n]);return r;function a(e,n){var a=t?n.toLowerCase():n;!function(e,t){var n,a=t.length,i=-1;for(;++i<a;)n=t[i].split(tt),r[n[0]]=[e,Number(n[1])||(o=n[0],-1!==it.indexOf(o.toLowerCase()))?0:1];var o}(e,a.split(et))}}(a.keywords,e[Xe])),a.lexemesRe=n(a.lexemes||/\w+/,!0),i&&(a.beginKeywords&&(a.begin="\\b("+a.beginKeywords.split(et).join(tt)+")\\b"),a.begin||(a.begin=/\B|\b/),a.beginRe=n(a.begin),a.endSameAsBegin&&(a.end=a.begin),a.end||a.endsWithParent||(a.end=/\B|\b/),a.end&&(a.endRe=n(a.end)),a[Je]=r(a.end)||"",a.endsWithParent&&i[Je]&&(a[Je]+=(a.end?tt:"")+i[Je])),a.illegal&&(a.illegalRe=n(a.illegal)),void 0===a.relevance&&(a.relevance=1),a.contains=function(e,n){var r,a=[],i=e.length,o=-1;for(;++o<i;)r=e[o],a=a.concat(ut("self"===r?n:r));i=a.length,o=-1;for(;++o<i;)t(a[o],n);return a}(a.contains||[],a),a.starts&&t(a.starts,i),a.terminators=function(e){var t,a,i={},o=[],s={},l=1,c=e.contains,d=c.length,_=-1,u=[];for(;++_<d;)m(a=c[_],a.beginKeywords?"\\.?(?:"+a.begin+")\\.?":a.begin);e[Je]&&m("end",e[Je]);e.illegal&&m("illegal",e.illegal);d=o.length,_=-1;for(;++_<d;)u[_]=o[_][1];return t=n(function(e,t){for(var n,a,i,o,s=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9]\d*)|\\./,l=0,c="",d=e.length,_=-1;++_<d;){for(n=e[_],i=r(n),a=l+=1,0!==_&&(c+=t),c+=nt;i.length>0;){if(null===(o=s.exec(i))){c+=i;break}c+=i.slice(0,o.index),i=i.slice(o.index+o[0].length),o[0][0]===at&&o[1]?c+=at+String(Number(o[1])+a):(c+=o[0],o[0]===nt&&l++)}c+=rt}return c}(u,tt),!0),s={lastIndex:0,exec:function(n){var r,a,l,c;if(0===o.length)return null;if(t.lastIndex=s.lastIndex,!(c=t.exec(n)))return null;for(r=c.length,a=-1;++a<r;)if(void 0!==c[a]&&void 0!==i[a]){l=i[a];break}return"string"==typeof l?(c.type=l,c.extra=[e.illegal,e.terminator_end]):(c.type="begin",c.rule=l),c}};function m(e,t){i[l]=e,o.push([e,t]),l+=new RegExp(t.toString()+tt).exec("").length}}(a))}function n(t,n){return new RegExp(r(t),"m"+(e[Xe]?"i":"")+(n?"g":""))}function r(e){return e&&e.source||e}t(e)}(i);try{for(o.terminators.lastIndex=0,c=0,_=o.terminators.exec(t);_;)d=T(t.slice(c,_.index),_),c=_.index+d,o.terminators.lastIndex=c,_=o.terminators.exec(t);for(T(t.slice(c)),s=o;s.parent;)s.className&&y(),s=s.parent;return{relevance:h,value:l,illegal:!1,language:e,top:o}}catch(e){if(-1===e.message.indexOf("Illegal"))throw e;return{relevance:0,illegal:!0,value:v(t,[])}}function S(e){var t=e[0],n=e.rule;return n&&n.endSameAsBegin&&(n.endRe=new RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),n.skip?E+=t:(n.excludeBegin&&(E+=t),N(C(),l),n.returnBegin||n.excludeBegin||(E=t)),b(n),n.returnBegin?0:t.length}function f(e){var n=e[0],r=t.slice(e.index),a=function e(t,n){if(function(e,t){var n=e&&e.exec(t);return n&&0===n.index}(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(o,r);if(a){var i=o;i.skip?E+=n:(i.returnEnd||i.excludeEnd||(E+=n),N(C(),l),i.excludeEnd&&(E=n));do{o.className&&y(),o.skip||o.subLanguage||(h+=o.relevance),o=o.parent}while(o!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.endRe=a.endRe),b(a.starts)),i.returnEnd?0:n.length}}function T(e,r){var a,i=r&&r[0];if(E+=e,void 0===i)return N(C(),l),0;if("begin"===m.type&&"end"===r.type&&m.index===r.index&&""===i)return E+=t.slice(r.index,r.index+1),1;if(m=r,"begin"===r.type)return S(r);if("end"===r.type&&void 0!==(a=f(r)))return a;if("illegal"===r.type&&!n)throw Ve('Illegal lexeme "%s" for mode "%s"',i,o.className||"<unnamed>");return E+=i,i.length}function b(e){var t;e.className&&(t=A(e.className,[])),t&&(l.push(t),g.push(l),l=t.children),o=Object.create(e,{parent:{value:o}})}function C(){var e=o.subLanguage?function(){var e,t="string"==typeof o.subLanguage;if(t&&!st[o.subLanguage])return v(E,[]);e=t?_t(o.subLanguage,E,!0,r,p[o.subLanguage]):ct(E,{subset:0===o.subLanguage.length?void 0:o.subLanguage,prefix:r});if(!e.language)return[R(E)];o.relevance>0&&(h+=e.relevance);t&&(p[o.subLanguage]=e.top);return[A(e.language,e.value,!0)]}():function(){var e,t,n,r,a=[];if(!o.keywords)return v(E,a);e=0,o.lexemesRe.lastIndex=0,t=o.lexemesRe.exec(E);for(;t;)v(E.slice(e,t.index),a),(r=O(o,t))?(h+=r[1],n=A(r[0],[]),a.push(n),v(t[0],n.children)):v(t[0],a),e=o.lexemesRe.lastIndex,t=o.lexemesRe.exec(E);return v(E.slice(e),a),a}();return E="",e}function N(e,t){for(var n,r=e.length,a=-1;++a<r;)"text"===(n=e[a]).type?v(n.value,t):t.push(n)}function v(e,t){var n;return e&&((n=t[t.length-1])&&"text"===n.type?n.value+=e:t.push(R(e))),t}function R(e){return{type:"text",value:e}}function A(e,t,n){return{type:"element",tagName:"span",properties:{className:[(n?"":r)+e]},children:t}}function O(e,t){var n=t[0];return i[Xe]&&(n=n.toLowerCase()),$e.call(e.keywords,n)&&e.keywords[n]}function y(){l=g.pop()||u}}function ut(e){var t,n,r,a;if(e.variants&&!e[Ze]){for(t=(r=e.variants).length,n=-1,a=[];++n<t;)a[n]=Qe(e,{variants:null},r[n]);e[Ze]=a}return e.cached_variants?e.cached_variants:function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(e)?[Qe(e,{starts:e.starts?Qe(e.starts):null})]:[e]}function mt(e){return{relevance:e.relevance||0,language:e.language||null,value:e.value||[]}}function pt(e){return e=e.toLowerCase(),st[e]||st[lt[e]]}var gt=We;function Et({include:e,exclude:t}={}){return e=>E(e,"code",n);function n(n){let{lang:r,data:a}=n;!r||e&&-1===e.indexOf(r)||t&&-1!==t.indexOf(r)||(a||(a={},n.data=a),a.hProperties||(a.hProperties={}),a.hChildren=gt.highlight(r,n.value).value,a.hProperties.className=["hljs",...a.hProperties.className||[],"language-"+r])}}We.registerLanguage("1c",function(e){var t="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+",n="далее возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ",r="null истина ложь неопределено",a=e.inherit(e.NUMBER_MODE),i={className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},o={begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},s=e.inherit(e.C_LINE_COMMENT_MODE);return{case_insensitive:!0,lexemes:t,keywords:{keyword:n,built_in:"разделительстраниц разделительстрок символтабуляции ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ",class:"webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц отображениевремениэлементовпланировщика типфайлаформатированногодокумента обходрезультатазапроса типзаписизапроса видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов доступкфайлу режимдиалогавыборафайла режимоткрытияфайла типизмеренияпостроителязапроса видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты",type:"comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив ",literal:r},contains:[{className:"meta",lexemes:t,begin:"#|&",end:"$",keywords:{"meta-keyword":n+"загрузитьизфайла вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент "},contains:[s]},{className:"function",lexemes:t,variants:[{begin:"процедура|функция",end:"\\)",keywords:"процедура функция"},{begin:"конецпроцедуры|конецфункции",keywords:"конецпроцедуры конецфункции"}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",lexemes:t,begin:t,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{keyword:"знач",literal:r},contains:[a,i,o]},s]},e.inherit(e.TITLE_MODE,{begin:t})]},s,{className:"symbol",begin:"~",end:";|:",excludeEnd:!0},a,i,o]}}),We.registerLanguage("abnf",function(e){var t="^[a-zA-Z][a-zA-Z0-9-]*",n="[!@#$^&',?+~`|:]",r=e.COMMENT(";","$"),a={className:"attribute",begin:t+"(?=\\s*=)"};return{illegal:n,keywords:["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"].join(" "),contains:[a,r,{className:"symbol",begin:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/},{className:"symbol",begin:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/},{className:"symbol",begin:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/},{className:"symbol",begin:/%[si]/},e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}),We.registerLanguage("accesslog",function(e){var t=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"];return{contains:[{className:"number",begin:"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b",relevance:5},{className:"number",begin:"\\b\\d+\\b",relevance:0},{className:"string",begin:'"('+t.join("|")+")",end:'"',keywords:t.join(" "),illegal:"\\n",relevance:5,contains:[{begin:"HTTP/[12]\\.\\d",relevance:5}]},{className:"string",begin:/\[\d[^\]\n]{8,}\]/,illegal:"\\n",relevance:1},{className:"string",begin:/\[/,end:/\]/,illegal:"\\n",relevance:0},{className:"string",begin:'"Mozilla/\\d\\.\\d \\(',end:'"',illegal:"\\n",relevance:3},{className:"string",begin:'"',end:'"',illegal:"\\n",relevance:0}]}}),We.registerLanguage("actionscript",function(e){var t={className:"rest_arg",begin:"[.]{3}",end:"[a-zA-Z_$][a-zA-Z0-9_$]*",relevance:10};return{aliases:["as"],keywords:{keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with",literal:"true false null undefined"},contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"class",beginKeywords:"package",end:"{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.TITLE_MODE]},{className:"meta",beginKeywords:"import include",end:";",keywords:{"meta-keyword":"import include"}},{className:"function",beginKeywords:"function",end:"[{;]",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t]},{begin:":\\s*([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)"}]},e.METHOD_GUARD],illegal:/#/}}),We.registerLanguage("ada",function(e){var t="[A-Za-z](_?[A-Za-z0-9.])*",n=e.COMMENT("--","$"),r={begin:"\\s+:\\s+",end:"\\s*(:=|;|\\)|=>|$)",illegal:"[]{}%#'\"",contains:[{beginKeywords:"loop for declare others",endsParent:!0},{className:"keyword",beginKeywords:"not null constant access function procedure in out aliased exception"},{className:"type",begin:t,endsParent:!0,relevance:0}]};return{case_insensitive:!0,keywords:{keyword:"abort else new return abs elsif not reverse abstract end accept entry select access exception of separate aliased exit or some all others subtype and for out synchronized array function overriding at tagged generic package task begin goto pragma terminate body private then if procedure type case in protected constant interface is raise use declare range delay limited record when delta loop rem while digits renames with do mod requeue xor",literal:"True False"},contains:[n,{className:"string",begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{className:"string",begin:/'.'/},{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"symbol",begin:"'"+t},{className:"title",begin:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?",end:"(is|$)",keywords:"package body",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},{begin:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+",end:"(\\bis|\\bwith|\\brenames|\\)\\s*;)",keywords:"overriding function procedure with is renames return",returnBegin:!0,contains:[n,{className:"title",begin:"(\\bwith\\s+)?\\b(function|procedure)\\s+",end:"(\\(|\\s+|$)",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},r,{className:"type",begin:"\\breturn\\s+",end:"(\\s+|;|$)",keywords:"return",excludeBegin:!0,excludeEnd:!0,endsParent:!0,illegal:"[]{}%#'\""}]},{className:"type",begin:"\\b(sub)?type\\s+",end:"\\s+",keywords:"type",excludeBegin:!0,illegal:"[]{}%#'\""},r]}}),We.registerLanguage("angelscript",function(e){var t={className:"built_in",begin:"\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)"},n={className:"symbol",begin:"[a-zA-Z0-9_]+@"},r={className:"keyword",begin:"<",end:">",contains:[t,n]};return t.contains=[r],n.contains=[r],{aliases:["asc"],keywords:"for in|0 break continue while do|0 return if else case switch namespace is cast or and xor not get|0 in inout|10 out override set|0 private public const default|0 final shared external mixin|10 enum typedef funcdef this super import from interface abstract|0 try catch protected explicit property",illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunctions*[^\\(])",contains:[{className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""',end:'"""'},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{beginKeywords:"interface namespace",end:"{",illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{beginKeywords:"class",end:"{",illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]}]}]},t,n,{className:"literal",begin:"\\b(null|true|false)"},{className:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"}]}}),We.registerLanguage("apache",function(e){var t={className:"number",begin:"[\\$%]\\d+"};return{aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:"</?",end:">"},{className:"attribute",begin:/\w+/,relevance:0,keywords:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{end:/$/,relevance:0,keywords:{literal:"on off all"},contains:[{className:"meta",begin:"\\s\\[",end:"\\]$"},{className:"variable",begin:"[\\$%]\\{",end:"\\}",contains:["self",t]},t,e.QUOTE_STRING_MODE]}}],illegal:/\S/}}),We.registerLanguage("applescript",function(e){var t=e.inherit(e.QUOTE_STRING_MODE,{illegal:""}),n={className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_NUMBER_MODE,t]},r=e.COMMENT("--","$"),a=[r,e.COMMENT("\\(\\*","\\*\\)",{contains:["self",r]}),e.HASH_COMMENT_MODE];return{aliases:["osascript"],keywords:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"},contains:[t,e.C_NUMBER_MODE,{className:"built_in",begin:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{className:"literal",begin:"\\b(text item delimiters|current application|missing value)\\b"},{className:"keyword",begin:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference)|POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{beginKeywords:"on",illegal:"[${=;\\n]",contains:[e.UNDERSCORE_TITLE_MODE,n]}].concat(a),illegal:"//|->|=>|\\[\\["}}),We.registerLanguage("arcade",function(e){var t="[A-Za-z_][0-9A-Za-z_]*",n={keyword:"if for while var new function do return void else break",literal:"BackSlash DoubleQuote false ForwardSlash Infinity NaN NewLine null PI SingleQuote Tab TextFormatting true undefined",built_in:"Abs Acos Angle Attachments Area AreaGeodetic Asin Atan Atan2 Average Bearing Boolean Buffer BufferGeodetic Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance DistanceGeodetic Distinct DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetByAssociation FeatureSetById FeatureSetByPortalItem FeatureSetByRelationshipName FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry GroupBy Guid HasKey Hour IIf IndexOf Intersection Intersects IsEmpty IsNan IsSelfIntersecting Length LengthGeodetic Log Max Mean Millisecond Min Minute Month MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon Polyline Portal Pow Random Relate Reverse RingIsClockWise Round Second SetGeometry Sin Sort Sqrt Stdev Sum SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TrackCurrentTime TrackGeometryWindow TrackIndex TrackStartTime TrackWindow TypeOf Union UrlEncode Variance Weekday When Within Year "},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,a]};a.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,r,e.REGEXP_MODE];var o=a.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["arcade"],keywords:n,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"symbol",begin:"\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+"},r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(return)\\b)\\s*",keywords:"return",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:o}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o}],illegal:/\[|%/},{begin:/\$[(.]/}],illegal:/#(?!!)/}}),We.registerLanguage("cpp",function(e){var t={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},n={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},{begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/}]},r={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},a={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(n,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},i=e.IDENT_RE+"\\s*\\(",o={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},s=[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,n];return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:o,illegal:"</",contains:s.concat([a,{begin:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",end:">",keywords:o,contains:["self",t]},{begin:e.IDENT_RE+"::",keywords:o},{variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:o,contains:s.concat([{begin:/\(/,end:/\)/,keywords:o,contains:s.concat(["self"]),relevance:0}]),relevance:0},{className:"function",begin:"("+e.IDENT_RE+"[\\*&\\s]+)+"+i,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:o,illegal:/[^\w\s\*&]/,contains:[{begin:i,returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t,{begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a]},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin:/</,end:/>/,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:a,strings:n,keywords:o}}}),We.registerLanguage("arduino",function(e){var t="boolean byte word String",n="setup loopKeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put",r="DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW",a=e.getLanguage("cpp").rawDefinition(),i=a.keywords;return i.keyword+=" "+t,i.literal+=" "+r,i.built_in+=" "+n,a}),We.registerLanguage("armasm",function(e){return{case_insensitive:!0,aliases:["arm"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?",end:"\\s"},e.COMMENT("[;@]","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"[=#]\\w+"}],relevance:0}]}}),We.registerLanguage("xml",function(e){var t={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:"[A-Za-z0-9\\._:-]+",relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/},{begin:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"<!DOCTYPE",end:">",relevance:10,contains:[{begin:"\\[",end:"\\]"}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]},{className:"tag",begin:"<style(?=\\s|>)",end:">",keywords:{name:"style"},contains:[t],starts:{end:"</style>",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:"<script(?=\\s|>)",end:">",keywords:{name:"script"},contains:[t],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml"]}},{className:"tag",begin:"</?",end:"/?>",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},t]}]}}),We.registerLanguage("asciidoc",function(e){return{aliases:["adoc"],contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,5}) .+?( \\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{className:"bullet",begin:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol",begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{className:"strong",begin:"\\B\\*(?![\\*\\s])",end:"(\\n{2}|\\*)",contains:[{begin:"\\\\*\\w",relevance:0}]},{className:"emphasis",begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0}],relevance:0},{className:"emphasis",begin:"_(?![_\\s])",end:"(\\n{2}|_)",relevance:0},{className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{className:"code",begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]}}),We.registerLanguage("aspectj",function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance";return{keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"aspect",end:/[{;=]/,excludeEnd:!0,illegal:/[:;"\[\]]/,contains:[{beginKeywords:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"},e.UNDERSCORE_TITLE_MODE,{begin:/\([^\)]*/,end:/[)]+/,keywords:t+" get set args call",excludeEnd:!1}]},{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,relevance:0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"pointcut after before around throwing returning",end:/[)]/,excludeEnd:!1,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE]}]},{begin:/[:]/,returnBegin:!0,end:/[{;]/,relevance:0,excludeEnd:!1,keywords:t,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",keywords:t+" get set args call",relevance:0},e.QUOTE_STRING_MODE]},{beginKeywords:"new throw",relevance:0},{className:"function",begin:/\w+ +\w+(\.)?\w+\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,returnBegin:!0,end:/[{;=]/,keywords:t,excludeEnd:!0,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,relevance:0,keywords:t,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("autohotkey",function(e){var t={begin:"`[\\s\\S]"};return{case_insensitive:!0,aliases:["ahk"],keywords:{keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group",literal:"true false NOT AND OR",built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},contains:[t,e.inherit(e.QUOTE_STRING_MODE,{contains:[t]}),e.COMMENT(";","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,{className:"number",begin:e.NUMBER_RE,relevance:0},{className:"variable",begin:"%[a-zA-Z0-9#_$@]+%"},{className:"built_in",begin:"^\\s*\\w+\\s*(,|%)"},{className:"title",variants:[{begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{className:"meta",begin:"^\\s*#\\w+",end:"$",relevance:0},{className:"built_in",begin:"A_[a-zA-Z0-9]+"},{begin:",\\s*,"}]}}),We.registerLanguage("autoit",function(e){var t={variants:[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#cs","#ce"),e.COMMENT("#comments-start","#comments-end")]},n={begin:"\\$[A-z0-9_]+"},r={className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"ByRef Case Const ContinueCase ContinueLoop Default Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With",built_in:"Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait",literal:"True False And Null Not Or"},contains:[t,n,r,a,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",keywords:{"meta-keyword":"include"},end:"$",contains:[r,{className:"meta-string",variants:[{begin:"<",end:">"},{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]}]},r,t]},{className:"symbol",begin:"@[A-z0-9_]+"},{className:"function",beginKeywords:"Func",end:"$",illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[n,r,a]}]}]}}),We.registerLanguage("avrasm",function(e){return{case_insensitive:!0,lexemes:"\\.?"+e.IDENT_RE,keywords:{keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf",meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set"},contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),e.C_NUMBER_MODE,e.BINARY_NUMBER_MODE,{className:"number",begin:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"},{className:"symbol",begin:"^[A-Za-z0-9_.$]+:"},{className:"meta",begin:"#",end:"$"},{className:"subst",begin:"@[0-9]+"}]}}),We.registerLanguage("awk",function(e){return{keywords:{keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10"},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]}}),We.registerLanguage("axapta",function(e){return{keywords:"false int abstract private char boolean static null if for true while long throw finally protected final return void enum else break new catch byte super case short default double public try this switch continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count order group by asc desc index hint like dispaly edit client server ttsbegin ttscommit str real date container anytype common div mod",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]}]}}),We.registerLanguage("bash",function(e){var t={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]};return{aliases:["sh","zsh"],lexemes:/\b-?[a-z\._]+\b/,keywords:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[{className:"meta",begin:/^#![^\n]+sh\s*$/,relevance:10},{className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},e.HASH_COMMENT_MODE,n,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}),We.registerLanguage("basic",function(e){return{case_insensitive:!0,illegal:"^.",lexemes:"[a-zA-Z][a-zA-Z0-9_$%!#]*",keywords:{keyword:"ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO HEX$ IF THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE WEND WIDTH WINDOW WRITE XOR"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("REM","$",{relevance:10}),e.COMMENT("'","$",{relevance:0}),{className:"symbol",begin:"^[0-9]+ ",relevance:10},{className:"number",begin:"\\b([0-9]+[0-9edED.]*[#!]?)",relevance:0},{className:"number",begin:"(&[hH][0-9a-fA-F]{1,4})"},{className:"number",begin:"(&[oO][0-7]{1,6})"}]}}),We.registerLanguage("bnf",function(e){return{contains:[{className:"attribute",begin:/</,end:/>/},{begin:/::=/,starts:{end:/$/,contains:[{begin:/</,end:/>/},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}}]}}),We.registerLanguage("brainfuck",function(e){var t={className:"literal",begin:"[\\+\\-]",relevance:0};return{aliases:["bf"],contains:[e.COMMENT("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{returnEnd:!0,relevance:0}),{className:"title",begin:"[\\[\\]]",relevance:0},{className:"string",begin:"[\\.,]",relevance:0},{begin:/(?:\+\+|\-\-)/,contains:[t]},t]}}),We.registerLanguage("cal",function(e){var t="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},a={className:"string",begin:/(#\d+)+/},i={className:"function",beginKeywords:"procedure",end:/[:;]/,keywords:"procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[r,a]}].concat(n)},o={className:"class",begin:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)",returnBegin:!0,contains:[e.TITLE_MODE,i]};return{case_insensitive:!0,keywords:{keyword:t,literal:"false true"},illegal:/\/\*/,contains:[r,a,{className:"number",begin:"\\b\\d+(\\.\\d+)?(DT|D|T)",relevance:0},{className:"string",begin:'"',end:'"'},e.NUMBER_MODE,o,i]}}),We.registerLanguage("capnproto",function(e){return{aliases:["capnp"],keywords:{keyword:"struct enum interface union group import using const annotation extends in of on as with from fixed",built_in:"Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.HASH_COMMENT_MODE,{className:"meta",begin:/@0x[\w\d]{16};/,illegal:/\n/},{className:"symbol",begin:/@\d+\b/},{className:"class",beginKeywords:"struct enum",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"class",beginKeywords:"interface",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]}]}}),We.registerLanguage("ceylon",function(e){var t="assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty",n={className:"subst",excludeBegin:!0,excludeEnd:!0,begin:/``/,end:/``/,keywords:t,relevance:10},r=[{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[n]},{className:"string",begin:"'",end:"'"},{className:"number",begin:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?",relevance:0}];return n.contains=r,{keywords:{keyword:t+" shared abstract formal default actual variable late native deprecatedfinal sealed annotation suppressWarnings small",meta:"doc by license see throws tagged"},illegal:"\\$[^01]|#[^0-9a-fA-F]",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),{className:"meta",begin:'@[a-z]\\w*(?:\\:"[^"]*")?'}].concat(r)}}),We.registerLanguage("clean",function(e){return{aliases:["clean","icl","dcl"],keywords:{keyword:"if let in with where case of class instance otherwise implementation definition system module from import qualified as special code inline foreign export ccall stdcall generic derive infix infixl infixr",built_in:"Int Real Char Bool",literal:"True False"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{begin:"->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>"}]}}),We.registerLanguage("clojure",function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),o={className:"literal",begin:/\b(true|false|nil)\b/},s={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+t},c=e.COMMENT("\\^\\{","\\}"),d={className:"symbol",begin:"[:]{1,2}"+t},_={begin:"\\(",end:"\\)"},u={endsWithParent:!0,relevance:0},m={keywords:{"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},lexemes:t,className:"name",begin:t,starts:u},p=[_,a,l,c,i,d,s,r,o,n];return _.contains=[e.COMMENT("comment",""),m,u],u.contains=p,s.contains=p,c.contains=[s],{aliases:["clj"],illegal:/\S/,contains:[_,a,l,c,i,d,s,r,o]}}),We.registerLanguage("clojure-repl",function(e){return{contains:[{className:"meta",begin:/^([\w.-]+|\s*#_)?=>/,starts:{end:/$/,subLanguage:"clojure"}}]}}),We.registerLanguage("cmake",function(e){return{aliases:["cmake.in"],case_insensitive:!0,keywords:{keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined"},contains:[{className:"variable",begin:"\\${",end:"}"},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}),We.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},a=[e.BINARY_NUMBER_MODE,e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,r]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[r,e.HASH_COMMENT_MODE]},{begin:"//[gim]*",relevance:0},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W)/}]},{begin:"@"+n},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];r.contains=a;var i=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("###","###"),e.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,o]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[o]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}),We.registerLanguage("coq",function(e){return{keywords:{keyword:"_|0 as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies DependentDerive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with",built_in:"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("\\(\\*","\\*\\)"),e.C_NUMBER_MODE,{className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]}}),We.registerLanguage("cos",function(e){return{case_insensitive:!0,aliases:["cos","cls"],keywords:"property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii",contains:[{className:"number",begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",relevance:0},{className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"comment",begin:/;/,end:"$",relevance:0},{className:"built_in",begin:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{className:"built_in",begin:/\$\$\$[a-zA-Z]+/},{className:"built_in",begin:/%[a-z]+(?:\.[a-z]+)*/},{className:"symbol",begin:/\^%?[a-zA-Z][\w]*/},{className:"keyword",begin:/##class|##super|#define|#dim/},{begin:/&sql\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,subLanguage:"sql"},{begin:/&(js|jscript|javascript)</,end:/>/,excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"},{begin:/&html<\s*</,end:/>\s*>/,subLanguage:"xml"}]}}),We.registerLanguage("crmsh",function(e){var t="group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml";return{aliases:["crm","pcmk"],case_insensitive:!0,keywords:{keyword:"params meta operations op rule attributes utilization read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\ number string",literal:"Master Started Slave Stopped start promote demote stop monitor true false"},contains:[e.HASH_COMMENT_MODE,{beginKeywords:"node",starts:{end:"\\s*([\\w_-]+:)?",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*"}}},{beginKeywords:"primitive rsc_template",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*",starts:{end:"\\s*@?[\\w_][\\w_\\.:-]*"}}},{begin:"\\b("+t.split(" ").join("|")+")\\s+",keywords:t,starts:{className:"title",end:"[\\$\\w_][\\w_-]*"}},{beginKeywords:"property rsc_defaults op_defaults",starts:{className:"title",end:"\\s*([\\w_-]+:)?"}},e.QUOTE_STRING_MODE,{className:"meta",begin:"(ocf|systemd|service|lsb):[\\w_:-]+",relevance:0},{className:"number",begin:"\\b\\d+(\\.\\d+)?(ms|s|h|m)?",relevance:0},{className:"literal",begin:"[-]?(infinity|inf)",relevance:0},{className:"attr",begin:/([A-Za-z\$_\#][\w_-]+)=/,relevance:0},{className:"tag",begin:"</?",end:"/?>",relevance:0}]}}),We.registerLanguage("crystal",function(e){var t="(_*[ui](8|16|32|64|128))?",n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?",r="[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",a={keyword:"abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield __DIR__ __END_LINE__ __FILE__ __LINE__",literal:"false nil true"},i={className:"subst",begin:"#{",end:"}",keywords:a},o={className:"template-variable",variants:[{begin:"\\{\\{",end:"\\}\\}"},{begin:"\\{%",end:"%\\}"}],keywords:a};function s(e,t){var n=[{begin:e,end:t}];return n[0].contains=n,n}var l={className:"string",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[Qwi]?\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%[Qwi]?\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%[Qwi]?{",end:"}",contains:s("{","}")},{begin:"%[Qwi]?<",end:">",contains:s("<",">")},{begin:"%[Qwi]?\\|",end:"\\|"},{begin:/<<-\w+$/,end:/^\s*\w+$/}],relevance:0},c={className:"string",variants:[{begin:"%q\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%q\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%q{",end:"}",contains:s("{","}")},{begin:"%q<",end:">",contains:s("<",">")},{begin:"%q\\|",end:"\\|"},{begin:/<<-'\w+'$/,end:/^\s*\w+$/}],relevance:0},d={begin:"(?!%})("+e.RE_STARTERS_RE+"|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*",keywords:"case if select unless until when while",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:"//[a-z]*",relevance:0},{begin:"/(?!\\/)",end:"/[a-z]*"}]}],relevance:0},_=[o,l,c,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:"%r\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%r\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%r{",end:"}",contains:s("{","}")},{begin:"%r<",end:">",contains:s("<",">")},{begin:"%r\\|",end:"\\|"}],relevance:0},d,{className:"meta",begin:"@\\[",end:"\\]",contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"})]},e.HASH_COMMENT_MODE,{className:"class",beginKeywords:"class module struct",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r}),{begin:"<"}]},{className:"class",beginKeywords:"lib enum union",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r})],relevance:10},{beginKeywords:"annotation",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r})],relevance:10},{className:"function",beginKeywords:"def",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})]},{className:"function",beginKeywords:"fun macro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})],relevance:5},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":",contains:[l,{begin:n}],relevance:0},{className:"number",variants:[{begin:"\\b0b([01_]+)"+t},{begin:"\\b0o([0-7_]+)"+t},{begin:"\\b0x([A-Fa-f0-9_]+)"+t},{begin:"\\b([1-9][0-9_]*[0-9]|[0-9])(\\.[0-9][0-9_]*)?([eE]_*[-+]?[0-9_]*)?(_*f(32|64))?(?!_)"},{begin:"\\b([1-9][0-9_]*|0)"+t}],relevance:0}];return i.contains=_,o.contains=_.slice(1),{aliases:["cr"],lexemes:"[a-zA-Z_]\\w*[!?=]?",keywords:a,contains:_}}),We.registerLanguage("cs",function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},n={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},r={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},a=e.inherit(r,{illegal:/\n/}),i={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(i,{illegal:/\n/}),s={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},l={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},i]},c=e.inherit(l,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});i.contains=[l,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE],o.contains=[c,s,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var d={variants:[l,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},d,n,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[d,n,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}),We.registerLanguage("csp",function(e){return{case_insensitive:!1,lexemes:"[a-zA-Z][a-zA-Z0-9_-]*",keywords:{keyword:"base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src"},contains:[{className:"string",begin:"'",end:"'"},{className:"attribute",begin:"^Content",end:":",excludeEnd:!0}]}}),We.registerLanguage("css",function(e){var t={begin:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(font-face|page)",lexemes:"[a-z-]+",keywords:"font-face page"},{begin:"@",end:"[{;]",illegal:/:/,contains:[{className:"keyword",begin:/\w+/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,t]}]}}),We.registerLanguage("d",function(e){var t="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",r={className:"number",begin:"\\b"+t+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},a={className:"number",begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+t+"(i|[fF]i|Li))",relevance:0},i={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},o={className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},o,{className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},a,r,i,{className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",begin:"#(line)",end:"$",relevance:5},{className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}}),We.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^\\s*([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```\\w*\\s*$",end:"^```[ ]*$"},{begin:"`.+?`"},{begin:"^( {4}|\\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}),We.registerLanguage("dart",function(e){var t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"}]},n={className:"subst",variants:[{begin:"\\${",end:"}"}],keywords:"true false null this is new super"},r={className:"string",variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'",illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''",contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:'"""',end:'"""',contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t,n]}]};n.contains=[e.C_NUMBER_MODE,r];return{keywords:{keyword:"abstract as assert async await break case catch class const continue covariant default deferred do dynamic else enum export extends extension external factory false final finally for Function get hide if implements import in inferface is library mixin new null on operator part rethrow return set show static super switch sync this throw true try typedef var void while with yield",built_in:"Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set Stopwatch String StringBuffer StringSink Symbol Type Uri bool double dynamic int num print Element ElementList document querySelector querySelectorAll window"},contains:[r,e.COMMENT("/\\*\\*","\\*/",{subLanguage:"markdown"}),e.COMMENT("///+\\s*","$",{contains:[{subLanguage:"markdown",begin:".",end:"$"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}),We.registerLanguage("delphi",function(e){var t="exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs ",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"meta",variants:[{begin:/\{\$/,end:/\}/},{begin:/\(\*\$/,end:/\*\)/}]},a={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},i={className:"string",begin:/(#\d+)+/},o={begin:e.IDENT_RE+"\\s*=\\s*class\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE]},s={className:"function",beginKeywords:"function constructor destructor procedure",end:/[:;]/,keywords:"function constructor|10 destructor|10 procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[a,i,r].concat(n)},r].concat(n)};return{aliases:["dpr","dfm","pas","pascal","freepascal","lazarus","lpr","lfm"],case_insensitive:!0,keywords:t,illegal:/"|\$[G-Zg-z]|\/\*|<\/|\|/,contains:[a,i,e.NUMBER_MODE,o,s,r].concat(n)}}),We.registerLanguage("diff",function(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}),We.registerLanguage("django",function(e){var t={begin:/\|[A-Za-z]+:?/,keywords:{name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{aliases:["jinja"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{%\s*comment\s*%}/,/\{%\s*endcomment\s*%}/),e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:{name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:[t]}]}}),We.registerLanguage("dns",function(e){return{aliases:["bind","zone"],keywords:{keyword:"IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:/^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/},{className:"number",begin:"((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b"},{className:"number",begin:"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b"},e.inherit(e.NUMBER_MODE,{begin:/\b\d+[dhwm]?/})]}}),We.registerLanguage("dockerfile",function(e){return{aliases:["docker"],case_insensitive:!0,keywords:"from maintainer expose env arg user onbuild stopsignal",contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}),We.registerLanguage("dos",function(e){var t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{aliases:["bat","cmd"],case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shiftsort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{className:"number",begin:"\\b\\d+",relevance:0},t]}}),We.registerLanguage("dsconfig",function(e){return{keywords:"dsconfig",contains:[{className:"keyword",begin:"^dsconfig",end:"\\s",excludeEnd:!0,relevance:10},{className:"built_in",begin:"(list|create|get|set|delete)-(\\w+)",end:"\\s",excludeEnd:!0,illegal:"!@#$%^&*()",relevance:10},{className:"built_in",begin:"--(\\w+)",end:"\\s",excludeEnd:!0},{className:"string",begin:/"/,end:/"/},{className:"string",begin:/'/,end:/'/},{className:"string",begin:"[\\w-?]+:\\w+",end:"\\W",relevance:0},{className:"string",begin:"\\w+-?\\w+",end:"\\W",relevance:0},e.HASH_COMMENT_MODE]}}),We.registerLanguage("dts",function(e){var t={className:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{begin:'((u8?|U)|L)?"'}),{begin:'(u8?|U)?R"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{begin:"'\\\\?.",end:"'",illegal:"."}]},n={className:"number",variants:[{begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef ifdef ifndef"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[e.inherit(t,{className:"meta-string"}),{className:"meta-string",begin:"<",end:">",illegal:"\\n"}]},t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},a={className:"variable",begin:"\\&[a-z\\d_]*\\b"},i={className:"meta-keyword",begin:"/[a-z][a-z\\d-]*/"},o={className:"symbol",begin:"^\\s*[a-zA-Z_][a-zA-Z\\d_]*:"},s={className:"params",begin:"<",end:">",contains:[n,a]},l={className:"class",begin:/[a-zA-Z_][a-zA-Z\d_@]*\s{/,end:/[{;=]/,returnBegin:!0,excludeEnd:!0};return{keywords:"",contains:[{className:"class",begin:"/\\s*{",end:"};",relevance:10,contains:[a,i,o,l,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t]},a,i,o,l,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t,r,{begin:e.IDENT_RE+"::",keywords:""}]}}),We.registerLanguage("dust",function(e){return{aliases:["dst"],case_insensitive:!0,subLanguage:"xml",contains:[{className:"template-tag",begin:/\{[#\/]/,end:/\}/,illegal:/;/,contains:[{className:"name",begin:/[a-zA-Z\.-]+/,starts:{endsWithParent:!0,relevance:0,contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{/,end:/\}/,illegal:/;/,keywords:"if eq ne lt lte gt gte select default math sep"}]}}),We.registerLanguage("ebnf",function(e){var t=e.COMMENT(/\(\*/,/\*\)/);return{illegal:/\S/,contains:[t,{className:"attribute",begin:/^[ ]*[a-zA-Z][a-zA-Z-]*([\s-]+[a-zA-Z][a-zA-Z]*)*/},{begin:/=/,end:/;/,contains:[t,{className:"meta",begin:/\?.*\?/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]}}),We.registerLanguage("elixir",function(e){var t="[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?",n="and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0",r={className:"subst",begin:"#\\{",end:"}",lexemes:t,keywords:n},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},i={className:"function",beginKeywords:"def defp defmacro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:t,endsParent:!0})]},o=e.inherit(i,{className:"class",beginKeywords:"defimpl defmodule defprotocol defrecord",end:/\bdo\b|$|;/}),s=[a,e.HASH_COMMENT_MODE,o,i,{begin:"::"},{className:"symbol",begin:":(?![\\s:])",contains:[a,{begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"}],relevance:0},{className:"symbol",begin:t+":(?!:)",relevance:0},{className:"number",begin:"(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)",relevance:0},{className:"variable",begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{begin:"->"},{begin:"("+e.RE_STARTERS_RE+")\\s*",contains:[e.HASH_COMMENT_MODE,{className:"regexp",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}],relevance:0}];return r.contains=s,{lexemes:t,keywords:n,contains:s}}),We.registerLanguage("elm",function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},r={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},t]};return{keywords:"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription",contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,r,{begin:"{",end:"}",contains:r.contains},t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"port",end:"$",keywords:"port",contains:[t]},{className:"string",begin:"'\\\\?.",end:"'",illegal:"."},e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,n,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}],illegal:/;/}}),We.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},r={className:"doctag",begin:"@[A-Za-z]+"},a={begin:"#<",end:">"},i=[e.COMMENT("#","$",{contains:[r]}),e.COMMENT("^\\=begin","^\\=end",{contains:[r],relevance:10}),e.COMMENT("^__END__","\\n$")],o={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,o],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},{begin:/\w+/,endSameAsBegin:!0,contains:[e.BACKSLASH_ESCAPE,o]}]}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,a,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(i)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(i)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[a,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(i),relevance:0}].concat(i);o.contains=c,l.contains=c;var d=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:i.concat(d).concat(c)}}),We.registerLanguage("erb",function(e){return{subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]}}),We.registerLanguage("erlang-repl",function(e){return{keywords:{built_in:"spawn spawn_link self",keyword:"after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor"},contains:[{className:"meta",begin:"^[0-9]+> ",relevance:10},e.COMMENT("%","$"),{className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\?(::)?([A-Z]\\w*(::)?)+"},{begin:"->"},{begin:"ok"},{begin:"!"},{begin:"(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)",relevance:0},{begin:"[A-Z][a-zA-Z0-9_']*",relevance:0}]}}),We.registerLanguage("erlang",function(e){var t="[a-z'][a-zA-Z0-9_']*",n="("+t+":"+t+"|"+t+")",r={keyword:"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor",literal:"false true"},a=e.COMMENT("%","$"),i={className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},o={begin:"fun\\s+"+t+"/\\d+"},s={begin:n+"\\(",end:"\\)",returnBegin:!0,relevance:0,contains:[{begin:n,relevance:0},{begin:"\\(",end:"\\)",endsWithParent:!0,returnEnd:!0,relevance:0}]},l={begin:"{",end:"}",relevance:0},c={begin:"\\b_([A-Z][A-Za-z0-9_]*)?",relevance:0},d={begin:"[A-Z][a-zA-Z0-9_]*",relevance:0},_={begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0,returnBegin:!0,contains:[{begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0},{begin:"{",end:"}",relevance:0}]},u={beginKeywords:"fun receive if try case",end:"end",keywords:r};u.contains=[a,o,e.inherit(e.APOS_STRING_MODE,{className:""}),u,s,e.QUOTE_STRING_MODE,i,l,c,d,_];var m=[a,o,u,s,e.QUOTE_STRING_MODE,i,l,c,d,_];s.contains[1].contains=m,l.contains=m,_.contains[1].contains=m;var p={className:"params",begin:"\\(",end:"\\)",contains:m};return{aliases:["erl"],keywords:r,illegal:"(</|\\*=|\\+=|-=|/\\*|\\*/|\\(\\*|\\*\\))",contains:[{className:"function",begin:"^"+t+"\\s*\\(",end:"->",returnBegin:!0,illegal:"\\(|#|//|/\\*|\\\\|:|;",contains:[p,e.inherit(e.TITLE_MODE,{begin:t})],starts:{end:";|\\.",keywords:r,contains:m}},a,{begin:"^-",end:"\\.",relevance:0,excludeEnd:!0,returnBegin:!0,lexemes:"-"+e.IDENT_RE,keywords:"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",contains:[p]},i,e.QUOTE_STRING_MODE,_,c,d,l,{begin:/\.$/}]}}),We.registerLanguage("excel",function(e){return{aliases:["xlsx","xls"],case_insensitive:!0,lexemes:/[a-zA-Z][\w\.]*/,keywords:{built_in:"ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST"},contains:[{begin:/^=/,end:/[^=]/,returnEnd:!0,illegal:/=/,relevance:10},{className:"symbol",begin:/\b[A-Z]{1,2}\d+\b/,end:/[^\d]/,excludeEnd:!0,relevance:0},{className:"symbol",begin:/[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,relevance:0},e.BACKSLASH_ESCAPE,e.QUOTE_STRING_MODE,{className:"number",begin:e.NUMBER_RE+"(%)?",relevance:0},e.COMMENT(/\bN\(/,/\)/,{excludeBegin:!0,excludeEnd:!0,illegal:/\n/})]}}),We.registerLanguage("fix",function(e){return{contains:[{begin:/[^\u2401\u0001]+/,end:/[\u2401\u0001]/,excludeEnd:!0,returnBegin:!0,returnEnd:!1,contains:[{begin:/([^\u2401\u0001=]+)/,end:/=([^\u2401\u0001=]+)/,returnEnd:!0,returnBegin:!1,className:"attr"},{begin:/=/,end:/([\u2401\u0001])/,excludeEnd:!0,excludeBegin:!0,className:"string"}]}],case_insensitive:!0}}),We.registerLanguage("flix",function(e){var t={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[{className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/}]};return{keywords:{literal:"true false",keyword:"case class def else enum if impl import in lat rel index let match namespace switch type yield with"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},{className:"string",variants:[{begin:'"',end:'"'}]},t,e.C_NUMBER_MODE]}}),We.registerLanguage("fortran",function(e){return{case_insensitive:!0,aliases:["f90","f95"],keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}}),We.registerLanguage("fsharp",function(e){var t={begin:"<",end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{aliases:["fs"],keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield",illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*","\\*\\)"),{className:"class",beginKeywords:"type",end:"\\(|=|$",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,t]},{className:"meta",begin:"\\[<",end:">\\]",relevance:10},{className:"symbol",begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE]},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),e.C_NUMBER_MODE]}}),We.registerLanguage("gams",function(e){var t={keyword:"abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes",literal:"eps inf na","built-in":"abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart"},n={className:"symbol",variants:[{begin:/\=[lgenxc]=/},{begin:/\$/}]},r={className:"comment",variants:[{begin:"'",end:"'"},{begin:'"',end:'"'}],illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},a={begin:"/",end:"/",keywords:t,contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},i={begin:/[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,excludeBegin:!0,end:"$",endsWithParent:!0,contains:[r,a,{className:"comment",begin:/([ ]*[a-z0-9&#*=?@>\\<:\-,()$\[\]_.{}!+%^]+)+/,relevance:0}]};return{aliases:["gms"],case_insensitive:!0,keywords:t,contains:[e.COMMENT(/^\$ontext/,/^\$offtext/),{className:"meta",begin:"^\\$[a-z0-9]+",end:"$",returnBegin:!0,contains:[{className:"meta-keyword",begin:"^\\$[a-z0-9]+"}]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{beginKeywords:"set sets parameter parameters variable variables scalar scalars equation equations",end:";",contains:[e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,a,i]},{beginKeywords:"table",end:";",returnBegin:!0,contains:[{beginKeywords:"table",end:"$",contains:[i]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},{className:"function",begin:/^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,returnBegin:!0,contains:[{className:"title",begin:/^[a-z0-9_]+/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0},n]},e.C_NUMBER_MODE,n]}}),We.registerLanguage("gauss",function(e){var t={keyword:"bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint ne ge le gt lt and xor or not eq eqv",built_in:"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester strtrim",literal:"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR"},n=e.COMMENT("@","@"),r={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[{className:"meta-string",begin:'"',end:'"',illegal:"\\n"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n]},a={begin:/\bstruct\s+/,end:/\s/,keywords:"struct",contains:[{className:"type",begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},i=[{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,endsWithParent:!0,relevance:0,contains:[{className:"literal",begin:/\.\.\./},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,a]}],o={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},s=function(t,r,a){var s=e.inherit({className:"function",beginKeywords:t,end:r,excludeEnd:!0,contains:[].concat(i)},a||{});return s.contains.push(o),s.contains.push(e.C_NUMBER_MODE),s.contains.push(e.C_BLOCK_COMMENT_MODE),s.contains.push(n),s},l={className:"built_in",begin:"\\b("+t.built_in.split(" ").join("|")+")\\b"},c={className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0},d={begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,keywords:t,relevance:0,contains:[{beginKeywords:t.keyword},l,{className:"built_in",begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},_={begin:/\(/,end:/\)/,relevance:0,keywords:{built_in:t.built_in,literal:t.literal},contains:[e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,l,d,c,"self"]};return d.contains.push(_),{aliases:["gss"],case_insensitive:!0,keywords:t,illegal:/(\{[%#]|[%#]\}| <- )/,contains:[e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,c,r,{className:"keyword",begin:/\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/},s("proc keyword",";"),s("fn","="),{beginKeywords:"for threadfor",end:/;/,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE,n,_]},{variants:[{begin:e.UNDERSCORE_IDENT_RE+"\\."+e.UNDERSCORE_IDENT_RE},{begin:e.UNDERSCORE_IDENT_RE+"\\s*="}],relevance:0},d,a]}}),We.registerLanguage("gcode",function(e){var t=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(/\(/,/\)/),e.inherit(e.C_NUMBER_MODE,{begin:"([-+]?([0-9]*\\.?[0-9]+\\.?))|"+e.C_NUMBER_RE}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"name",begin:"([G])([0-9]+\\.?[0-9]?)"},{className:"name",begin:"([M])([0-9]+\\.?[0-9]?)"},{className:"attr",begin:"(VC|VS|#)",end:"(\\d+)"},{className:"attr",begin:"(VZOFX|VZOFY|VZOFZ)"},{className:"built_in",begin:"(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)",end:"([-+]?([0-9]*\\.?[0-9]+\\.?))(\\])"},{className:"symbol",variants:[{begin:"N",end:"\\d+",illegal:"\\W"}]}];return{aliases:["nc"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:"IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR",contains:[{className:"meta",begin:"\\%"},{className:"meta",begin:"([O])([0-9]+)"}].concat(t)}}),We.registerLanguage("gherkin",function(e){return{aliases:["feature"],keywords:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When",contains:[{className:"symbol",begin:"\\*",relevance:0},{className:"meta",begin:"@[^@\\s]+"},{begin:"\\|",end:"\\|\\w*$",contains:[{className:"string",begin:"[^|]+"}]},{className:"variable",begin:"<",end:">"},e.HASH_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},e.QUOTE_STRING_MODE]}}),We.registerLanguage("glsl",function(e){return{keywords:{keyword:"break continue discard do else for if return while switch case default attribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly",type:"atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBufferiimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void",built_in:"gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow",literal:"true false"},illegal:'"',contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"}]}}),We.registerLanguage("gml",function(e){return{aliases:["gml","GML"],case_insensitive:!1,keywords:{keywords:"begin end if then else while do for break continue with until repeat exit and or xor not return mod div switch case default var globalvar enum #macro #region #endregion",built_in:"is_real is_string is_array is_undefined is_int32 is_int64 is_ptr is_vec3 is_vec4 is_matrix is_bool typeof variable_global_exists variable_global_get variable_global_set variable_instance_exists variable_instance_get variable_instance_set variable_instance_get_names array_length_1d array_length_2d array_height_2d array_equals array_create array_copy random random_range irandom irandom_range random_set_seed random_get_seed randomize randomise choose abs round floor ceil sign frac sqrt sqr exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn min max mean median clamp lerp dot_product dot_product_3d dot_product_normalised dot_product_3d_normalised dot_product_normalized dot_product_3d_normalized math_set_epsilon math_get_epsilon angle_difference point_distance_3d point_distance point_direction lengthdir_x lengthdir_y real string int64 ptr string_format chr ansi_char ord string_length string_byte_length string_pos string_copy string_char_at string_ord_at string_byte_at string_set_byte_at string_delete string_insert string_lower string_upper string_repeat string_letters string_digits string_lettersdigits string_replace string_replace_all string_count string_hash_to_newline clipboard_has_text clipboard_set_text clipboard_get_text date_current_datetime date_create_datetime date_valid_datetime date_inc_year date_inc_month date_inc_week date_inc_day date_inc_hour date_inc_minute date_inc_second date_get_year date_get_month date_get_week date_get_day date_get_hour date_get_minute date_get_second date_get_weekday date_get_day_of_year date_get_hour_of_year date_get_minute_of_year date_get_second_of_year date_year_span date_month_span date_week_span date_day_span date_hour_span date_minute_span date_second_span date_compare_datetime date_compare_date date_compare_time date_date_of date_time_of date_datetime_string date_date_string date_time_string date_days_in_month date_days_in_year date_leap_year date_is_today date_set_timezone date_get_timezone game_set_speed game_get_speed motion_set motion_add place_free place_empty place_meeting place_snapped move_random move_snap move_towards_point move_contact_solid move_contact_all move_outside_solid move_outside_all move_bounce_solid move_bounce_all move_wrap distance_to_point distance_to_object position_empty position_meeting path_start path_end mp_linear_step mp_potential_step mp_linear_step_object mp_potential_step_object mp_potential_settings mp_linear_path mp_potential_path mp_linear_path_object mp_potential_path_object mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell mp_grid_add_rectangle mp_grid_add_instances mp_grid_path mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle collision_circle collision_ellipse collision_line collision_point_list collision_rectangle_list collision_circle_list collision_ellipse_list collision_line_list instance_position_list instance_place_list point_in_rectangle point_in_triangle point_in_circle rectangle_in_rectangle rectangle_in_triangle rectangle_in_circle instance_find instance_exists instance_number instance_position instance_nearest instance_furthest instance_place instance_create_depth instance_create_layer instance_copy instance_change instance_destroy position_destroy position_change instance_id_get instance_deactivate_all instance_deactivate_object instance_deactivate_region instance_activate_all instance_activate_object instance_activate_region room_goto room_goto_previous room_goto_next room_previous room_next room_restart game_end game_restart game_load game_save game_save_buffer game_load_buffer event_perform event_user event_perform_object event_inherited show_debug_message show_debug_overlay debug_event debug_get_callstack alarm_get alarm_set font_texture_page_size keyboard_set_map keyboard_get_map keyboard_unset_map keyboard_check keyboard_check_pressed keyboard_check_released keyboard_check_direct keyboard_get_numlock keyboard_set_numlock keyboard_key_press keyboard_key_release keyboard_clear io_clear mouse_check_button mouse_check_button_pressed mouse_check_button_released mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite draw_sprite_pos draw_sprite_ext draw_sprite_stretched draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle draw_roundrect draw_roundrect_ext draw_triangle draw_circle draw_ellipse draw_set_circle_precision draw_arrow draw_button draw_path draw_healthbar draw_getpixel draw_getpixel_ext draw_set_colour draw_set_color draw_set_alpha draw_get_colour draw_get_color draw_get_alpha merge_colour make_colour_rgb make_colour_hsv colour_get_red colour_get_green colour_get_blue colour_get_hue colour_get_saturation colour_get_value merge_color make_color_rgb make_color_hsv color_get_red color_get_green color_get_blue color_get_hue color_get_saturation color_get_value merge_color screen_save screen_save_part draw_set_font draw_set_halign draw_set_valign draw_text draw_text_ext string_width string_height string_width_ext string_height_ext draw_text_transformed draw_text_ext_transformed draw_text_colour draw_text_ext_colour draw_text_transformed_colour draw_text_ext_transformed_colour draw_text_color draw_text_ext_color draw_text_transformed_color draw_text_ext_transformed_color draw_point_colour draw_line_colour draw_line_width_colour draw_rectangle_colour draw_roundrect_colour draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour draw_ellipse_colour draw_point_color draw_line_color draw_line_width_color draw_rectangle_color draw_roundrect_color draw_roundrect_color_ext draw_triangle_color draw_circle_color draw_ellipse_color draw_primitive_begin draw_vertex draw_vertex_colour draw_vertex_color draw_primitive_end sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture texture_get_width texture_get_height texture_get_uvs draw_primitive_begin_texture draw_vertex_texture draw_vertex_texture_colour draw_vertex_texture_color texture_global_scale surface_create surface_create_ext surface_resize surface_free surface_exists surface_get_width surface_get_height surface_get_texture surface_set_target surface_set_target_ext surface_reset_target surface_depth_disable surface_get_depth_disable draw_surface draw_surface_stretched draw_surface_tiled draw_surface_part draw_surface_ext draw_surface_stretched_ext draw_surface_tiled_ext draw_surface_part_ext draw_surface_general surface_getpixel surface_getpixel_ext surface_save surface_save_part surface_copy surface_copy_part application_surface_draw_enable application_get_position application_surface_enable application_surface_is_enabled display_get_width display_get_height display_get_orientation display_get_gui_width display_get_gui_height display_reset display_mouse_get_x display_mouse_get_y display_mouse_set display_set_ui_visibility window_set_fullscreen window_get_fullscreen window_set_caption window_set_min_width window_set_max_width window_set_min_height window_set_max_height window_get_visible_rects window_get_caption window_set_cursor window_get_cursor window_set_colour window_get_colour window_set_color window_get_color window_set_position window_set_size window_set_rectangle window_center window_get_x window_get_y window_get_width window_get_height window_mouse_get_x window_mouse_get_y window_mouse_set window_view_mouse_get_x window_view_mouse_get_y window_views_mouse_get_x window_views_mouse_get_y audio_listener_position audio_listener_velocity audio_listener_orientation audio_emitter_position audio_emitter_create audio_emitter_free audio_emitter_exists audio_emitter_pitch audio_emitter_velocity audio_emitter_falloff audio_emitter_gain audio_play_sound audio_play_sound_on audio_play_sound_at audio_stop_sound audio_resume_music audio_music_is_playing audio_resume_sound audio_pause_sound audio_pause_music audio_channel_num audio_sound_length audio_get_type audio_falloff_set_model audio_play_music audio_stop_music audio_master_gain audio_music_gain audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all audio_pause_all audio_is_playing audio_is_paused audio_exists audio_sound_set_track_position audio_sound_get_track_position audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx audio_emitter_get_vy audio_emitter_get_vz audio_listener_set_position audio_listener_set_velocity audio_listener_set_orientation audio_listener_get_data audio_set_master_gain audio_get_master_gain audio_sound_get_gain audio_sound_get_pitch audio_get_name audio_sound_set_track_position audio_sound_get_track_position audio_create_stream audio_destroy_stream audio_create_sync_group audio_destroy_sync_group audio_play_in_sync_group audio_start_sync_group audio_stop_sync_group audio_pause_sync_group audio_resume_sync_group audio_sync_group_get_track_pos audio_sync_group_debug audio_sync_group_is_playing audio_debug audio_group_load audio_group_unload audio_group_is_loaded audio_group_load_progress audio_group_name audio_group_stop_all audio_group_set_gain audio_create_buffer_sound audio_free_buffer_sound audio_create_play_queue audio_free_play_queue audio_queue_sound audio_get_recorder_count audio_get_recorder_info audio_start_recording audio_stop_recording audio_sound_get_listener_mask audio_emitter_get_listener_mask audio_get_listener_mask audio_sound_set_listener_mask audio_emitter_set_listener_mask audio_set_listener_mask audio_get_listener_count audio_get_listener_info audio_system show_message show_message_async clickable_add clickable_add_ext clickable_change clickable_change_ext clickable_delete clickable_exists clickable_set_style show_question show_question_async get_integer get_string get_integer_async get_string_async get_login_async get_open_filename get_save_filename get_open_filename_ext get_save_filename_ext show_error highscore_clear highscore_add highscore_value highscore_name draw_highscore sprite_exists sprite_get_name sprite_get_number sprite_get_width sprite_get_height sprite_get_xoffset sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right sprite_get_bbox_top sprite_get_bbox_bottom sprite_save sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush sprite_flush_multi sprite_set_speed sprite_get_speed_type sprite_get_speed font_exists font_get_name font_get_fontname font_get_bold font_get_italic font_get_first font_get_last font_get_size font_set_cache_size path_exists path_get_name path_get_length path_get_time path_get_kind path_get_closed path_get_precision path_get_number path_get_point_x path_get_point_y path_get_point_speed path_get_x path_get_y path_get_speed script_exists script_get_name timeline_add timeline_delete timeline_clear timeline_exists timeline_get_name timeline_moment_clear timeline_moment_add_script timeline_size timeline_max_moment object_exists object_get_name object_get_sprite object_get_solid object_get_visible object_get_persistent object_get_mask object_get_parent object_get_physics object_is_ancestor room_exists room_get_name sprite_set_offset sprite_duplicate sprite_assign sprite_merge sprite_add sprite_replace sprite_create_from_surface sprite_add_from_surface sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite font_add_sprite_ext font_replace font_replace_sprite font_replace_sprite_ext font_delete path_set_kind path_set_closed path_set_precision path_add path_assign path_duplicate path_append path_delete path_add_point path_insert_point path_change_point path_delete_point path_clear_points path_reverse path_mirror path_flip path_rotate path_rescale path_shift script_execute object_set_sprite object_set_solid object_set_visible object_set_persistent object_set_mask room_set_width room_set_height room_set_persistent room_set_background_colour room_set_background_color room_set_view room_set_viewport room_get_viewport room_set_view_enabled room_add room_duplicate room_assign room_instance_add room_instance_clear room_get_camera room_set_camera asset_get_index asset_get_type file_text_open_from_string file_text_open_read file_text_open_write file_text_open_append file_text_close file_text_write_string file_text_write_real file_text_writeln file_text_read_string file_text_read_real file_text_readln file_text_eof file_text_eoln file_exists file_delete file_rename file_copy directory_exists directory_create directory_destroy file_find_first file_find_next file_find_close file_attributes filename_name filename_path filename_dir filename_drive filename_ext filename_change_ext file_bin_open file_bin_rewrite file_bin_close file_bin_position file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte parameter_count parameter_string environment_get_variable ini_open_from_string ini_open ini_close ini_read_string ini_read_real ini_write_string ini_write_real ini_key_exists ini_section_exists ini_key_delete ini_section_delete ds_set_precision ds_exists ds_stack_create ds_stack_destroy ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ds_list_create ds_list_destroy ds_list_clear ds_list_copy ds_list_size ds_list_empty ds_list_add ds_list_insert ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ds_map_find_value ds_map_find_previous ds_map_find_next ds_map_find_first ds_map_find_last ds_map_write ds_map_read ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ds_map_secure_save_buffer ds_map_set ds_priority_create ds_priority_destroy ds_priority_clear ds_priority_copy ds_priority_size ds_priority_empty ds_priority_add ds_priority_change_priority ds_priority_find_priority ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ds_priority_delete_max ds_priority_find_max ds_priority_write ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ds_grid_sort ds_grid_set ds_grid_get effect_create_below effect_create_above effect_clear part_type_create part_type_destroy part_type_exists part_type_clear part_type_shape part_type_sprite part_type_size part_type_scale part_type_orientation part_type_life part_type_step part_type_death part_type_speed part_type_direction part_type_gravity part_type_colour1 part_type_colour2 part_type_colour3 part_type_colour_mix part_type_colour_rgb part_type_colour_hsv part_type_color1 part_type_color2 part_type_color3 part_type_color_mix part_type_color_rgb part_type_color_hsv part_type_alpha1 part_type_alpha2 part_type_alpha3 part_type_blend part_system_create part_system_create_layer part_system_destroy part_system_exists part_system_clear part_system_draw_order part_system_depth part_system_position part_system_automatic_update part_system_automatic_draw part_system_update part_system_drawit part_system_get_layer part_system_layer part_particles_create part_particles_create_colour part_particles_create_color part_particles_clear part_particles_count part_emitter_create part_emitter_destroy part_emitter_destroy_all part_emitter_exists part_emitter_clear part_emitter_region part_emitter_burst part_emitter_stream external_call external_define external_free window_handle window_device matrix_get matrix_set matrix_build_identity matrix_build matrix_build_lookat matrix_build_projection_ortho matrix_build_projection_perspective matrix_build_projection_perspective_fov matrix_multiply matrix_transform_vertex matrix_stack_push matrix_stack_pop matrix_stack_multiply matrix_stack_set matrix_stack_clear matrix_stack_top matrix_stack_is_empty browser_input_capture os_get_config os_get_info os_get_language os_get_region os_lock_orientation display_get_dpi_x display_get_dpi_y display_set_gui_size display_set_gui_maximise display_set_gui_maximize device_mouse_dbclick_enable display_set_timing_method display_get_timing_method display_set_sleep_margin display_get_sleep_margin virtual_key_add virtual_key_hide virtual_key_delete virtual_key_show draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level draw_get_swf_aa_level draw_texture_flush draw_flush gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable gpu_set_colourwriteenable gpu_set_alphatestenable gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat gpu_set_tex_repeat_ext gpu_set_tex_mip_filter gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src gpu_get_blendmode_dest gpu_get_blendmode_srcalpha gpu_get_blendmode_destalpha gpu_get_colorwriteenable gpu_get_colourwriteenable gpu_get_alphatestenable gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat gpu_get_tex_repeat_ext gpu_get_tex_mip_filter gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state gpu_get_state gpu_set_state draw_light_define_ambient draw_light_define_direction draw_light_define_point draw_light_enable draw_set_lighting draw_light_get_ambient draw_light_get draw_get_lighting shop_leave_rating url_get_domain url_open url_open_ext url_open_full get_timer achievement_login achievement_logout achievement_post achievement_increment achievement_post_score achievement_available achievement_show_achievements achievement_show_leaderboards achievement_load_friends achievement_load_leaderboard achievement_send_challenge achievement_load_progress achievement_reset achievement_login_status achievement_get_pic achievement_show_challenge_notifications achievement_get_challenges achievement_event achievement_show achievement_get_info cloud_file_save cloud_string_save cloud_synchronise ads_enable ads_disable ads_setup ads_engagement_launch ads_engagement_available ads_engagement_active ads_event ads_event_preload ads_set_reward_callback ads_get_display_height ads_get_display_width ads_move ads_interstitial_available ads_interstitial_display device_get_tilt_x device_get_tilt_y device_get_tilt_z device_is_keypad_open device_mouse_check_button device_mouse_check_button_pressed device_mouse_check_button_released device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status iap_enumerate_products iap_restore_all iap_acquire iap_consume iap_product_details iap_purchase_details facebook_init facebook_login facebook_status facebook_graph_request facebook_dialog facebook_logout facebook_launch_offerwall facebook_post_message facebook_send_invite facebook_user_id facebook_accesstoken facebook_check_permission facebook_request_read_permissions facebook_request_publish_permissions gamepad_is_supported gamepad_get_device_count gamepad_is_connected gamepad_get_description gamepad_get_button_threshold gamepad_set_button_threshold gamepad_get_axis_deadzone gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check gamepad_button_check_pressed gamepad_button_check_released gamepad_button_value gamepad_axis_count gamepad_axis_value gamepad_set_vibration gamepad_set_colour gamepad_set_color os_is_paused window_has_focus code_is_compiled http_get http_get_file http_post_string http_request json_encode json_decode zip_unzip load_csv base64_encode base64_decode md5_string_unicode md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode sha1_string_utf8 sha1_file os_powersave_enable analytics_event analytics_event_ext win8_livetile_tile_notification win8_livetile_tile_clear win8_livetile_badge_notification win8_livetile_badge_clear win8_livetile_queue_enable win8_secondarytile_pin win8_secondarytile_badge_notification win8_secondarytile_delete win8_livetile_notification_begin win8_livetile_notification_secondary_begin win8_livetile_notification_expiry win8_livetile_notification_tag win8_livetile_notification_text_add win8_livetile_notification_image_add win8_livetile_notification_end win8_appbar_enable win8_appbar_add_element win8_appbar_remove_element win8_settingscharm_add_entry win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry win8_settingscharm_set_xaml_property win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry win8_share_image win8_share_screenshot win8_share_file win8_share_url win8_share_text win8_search_enable win8_search_disable win8_search_add_suggestions win8_device_touchscreen_available win8_license_initialize_sandbox win8_license_trial_version winphone_license_trial_version winphone_tile_title winphone_tile_count winphone_tile_back_title winphone_tile_back_content winphone_tile_back_content_wide winphone_tile_front_image winphone_tile_front_image_small winphone_tile_front_image_wide winphone_tile_back_image winphone_tile_back_image_wide winphone_tile_background_colour winphone_tile_background_color winphone_tile_icon_image winphone_tile_small_icon_image winphone_tile_wide_content winphone_tile_cycle_images winphone_tile_small_background_image physics_world_create physics_world_gravity physics_world_update_speed physics_world_update_iterations physics_world_draw_debug physics_pause_enable physics_fixture_create physics_fixture_set_kinematic physics_fixture_set_density physics_fixture_set_awake physics_fixture_set_restitution physics_fixture_set_friction physics_fixture_set_collision_group physics_fixture_set_sensor physics_fixture_set_linear_damping physics_fixture_set_angular_damping physics_fixture_set_circle_shape physics_fixture_set_box_shape physics_fixture_set_edge_shape physics_fixture_set_polygon_shape physics_fixture_set_chain_shape physics_fixture_add_point physics_fixture_bind physics_fixture_bind_ext physics_fixture_delete physics_apply_force physics_apply_impulse physics_apply_angular_impulse physics_apply_local_force physics_apply_local_impulse physics_apply_torque physics_mass_properties physics_draw_debug physics_test_overlap physics_remove_fixture physics_set_friction physics_set_density physics_set_restitution physics_get_friction physics_get_density physics_get_restitution physics_joint_distance_create physics_joint_rope_create physics_joint_revolute_create physics_joint_prismatic_create physics_joint_pulley_create physics_joint_wheel_create physics_joint_weld_create physics_joint_friction_create physics_joint_gear_create physics_joint_enable_motor physics_joint_get_value physics_joint_set_value physics_joint_delete physics_particle_create physics_particle_delete physics_particle_delete_region_circle physics_particle_delete_region_box physics_particle_delete_region_poly physics_particle_set_flags physics_particle_set_category_flags physics_particle_draw physics_particle_draw_ext physics_particle_count physics_particle_get_data physics_particle_get_data_particle physics_particle_group_begin physics_particle_group_circle physics_particle_group_box physics_particle_group_polygon physics_particle_group_add_point physics_particle_group_end physics_particle_group_join physics_particle_group_delete physics_particle_group_count physics_particle_group_get_data physics_particle_group_get_mass physics_particle_group_get_inertia physics_particle_group_get_centre_x physics_particle_group_get_centre_y physics_particle_group_get_vel_x physics_particle_group_get_vel_y physics_particle_group_get_ang_vel physics_particle_group_get_x physics_particle_group_get_y physics_particle_group_get_angle physics_particle_set_group_flags physics_particle_get_group_flags physics_particle_get_max_count physics_particle_get_radius physics_particle_get_density physics_particle_get_damping physics_particle_get_gravity_scale physics_particle_set_max_count physics_particle_set_radius physics_particle_set_density physics_particle_set_damping physics_particle_set_gravity_scale network_create_socket network_create_socket_ext network_create_server network_create_server_raw network_connect network_connect_raw network_send_packet network_send_raw network_send_broadcast network_send_udp network_send_udp_raw network_set_timeout network_set_config network_resolve network_destroy buffer_create buffer_write buffer_read buffer_seek buffer_get_surface buffer_set_surface buffer_delete buffer_exists buffer_get_type buffer_get_alignment buffer_poke buffer_peek buffer_save buffer_save_ext buffer_load buffer_load_ext buffer_load_partial buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode buffer_base64_decode_ext buffer_sizeof buffer_get_address buffer_create_from_vertex_buffer buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer buffer_async_group_begin buffer_async_group_option buffer_async_group_end buffer_load_async buffer_save_async gml_release_mode gml_pragma steam_activate_overlay steam_is_overlay_enabled steam_is_overlay_activated steam_get_persona_name steam_initialised steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account steam_file_persisted steam_get_quota_total steam_get_quota_free steam_file_write steam_file_write_file steam_file_read steam_file_delete steam_file_exists steam_file_size steam_file_share steam_is_screenshot_requested steam_send_screenshot steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc steam_user_installed_dlc steam_set_achievement steam_get_achievement steam_clear_achievement steam_set_stat_int steam_set_stat_float steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float steam_get_stat_avg_rate steam_reset_all_stats steam_reset_all_stats_achievements steam_stats_ready steam_create_leaderboard steam_upload_score steam_upload_score_ext steam_download_scores_around_user steam_download_scores steam_download_friends_scores steam_upload_score_buffer steam_upload_score_buffer_ext steam_current_game_language steam_available_languages steam_activate_overlay_browser steam_activate_overlay_user steam_activate_overlay_store steam_get_user_persona_name steam_get_app_id steam_get_user_account_id steam_ugc_download steam_ugc_create_item steam_ugc_start_item_update steam_ugc_set_item_title steam_ugc_set_item_description steam_ugc_set_item_visibility steam_ugc_set_item_tags steam_ugc_set_item_content steam_ugc_set_item_preview steam_ugc_submit_item_update steam_ugc_get_item_update_progress steam_ugc_subscribe_item steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items steam_ugc_get_subscribed_items steam_ugc_get_item_install_info steam_ugc_get_item_update_info steam_ugc_request_item_details steam_ugc_create_query_user steam_ugc_create_query_user_ex steam_ugc_create_query_all steam_ugc_create_query_all_ex steam_ugc_query_set_cloud_filename_filter steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text steam_ugc_query_set_ranked_by_trend_days steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag steam_ugc_query_set_return_long_description steam_ugc_query_set_return_total_only steam_ugc_query_set_allow_cached_response steam_ugc_send_query shader_set shader_get_name shader_reset shader_current shader_is_compiled shader_get_sampler_index shader_get_uniform shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f shader_set_uniform_f_array shader_set_uniform_matrix shader_set_uniform_matrix_array shader_enable_corner_id texture_set_stage texture_get_texel_width texture_get_texel_height shaders_are_supported vertex_format_begin vertex_format_end vertex_format_delete vertex_format_add_position vertex_format_add_position_3d vertex_format_add_colour vertex_format_add_color vertex_format_add_normal vertex_format_add_texcoord vertex_format_add_textcoord vertex_format_add_custom vertex_create_buffer vertex_create_buffer_ext vertex_delete_buffer vertex_begin vertex_end vertex_position vertex_position_3d vertex_colour vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size vertex_create_buffer_from_buffer vertex_create_buffer_from_buffer_ext push_local_notification push_get_first_local_notification push_get_next_local_notification push_cancel_local_notification skeleton_animation_set skeleton_animation_get skeleton_animation_mix skeleton_animation_set_ext skeleton_animation_get_ext skeleton_animation_get_duration skeleton_animation_get_frames skeleton_animation_clear skeleton_skin_set skeleton_skin_get skeleton_attachment_set skeleton_attachment_get skeleton_attachment_create skeleton_collision_draw_set skeleton_bone_data_get skeleton_bone_data_set skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax skeleton_get_num_bounds skeleton_get_bounds skeleton_animation_get_frame skeleton_animation_set_frame draw_skeleton draw_skeleton_time draw_skeleton_instance draw_skeleton_collision skeleton_animation_list skeleton_skin_list skeleton_slot_data layer_get_id layer_get_id_at_depth layer_get_depth layer_create layer_destroy layer_destroy_instances layer_add_instance layer_has_instance layer_set_visible layer_get_visible layer_exists layer_x layer_y layer_get_x layer_get_y layer_hspeed layer_vspeed layer_get_hspeed layer_get_vspeed layer_script_begin layer_script_end layer_shader layer_get_script_begin layer_get_script_end layer_get_shader layer_set_target_room layer_get_target_room layer_reset_target_room layer_get_all layer_get_all_elements layer_get_name layer_depth layer_get_element_layer layer_get_element_type layer_element_move layer_force_draw_depth layer_is_draw_depth_forced layer_get_forced_depth layer_background_get_id layer_background_exists layer_background_create layer_background_destroy layer_background_visible layer_background_change layer_background_sprite layer_background_htiled layer_background_vtiled layer_background_stretch layer_background_yscale layer_background_xscale layer_background_blend layer_background_alpha layer_background_index layer_background_speed layer_background_get_visible layer_background_get_sprite layer_background_get_htiled layer_background_get_vtiled layer_background_get_stretch layer_background_get_yscale layer_background_get_xscale layer_background_get_blend layer_background_get_alpha layer_background_get_index layer_background_get_speed layer_sprite_get_id layer_sprite_exists layer_sprite_create layer_sprite_destroy layer_sprite_change layer_sprite_index layer_sprite_speed layer_sprite_xscale layer_sprite_yscale layer_sprite_angle layer_sprite_blend layer_sprite_alpha layer_sprite_x layer_sprite_y layer_sprite_get_sprite layer_sprite_get_index layer_sprite_get_speed layer_sprite_get_xscale layer_sprite_get_yscale layer_sprite_get_angle layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get tilemap_get_at_pixel tilemap_get_cell_x_at_pixel tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty tile_get_index tile_get_flip tile_get_mirror tile_get_rotate layer_tile_exists layer_tile_create layer_tile_destroy layer_tile_change layer_tile_xscale layer_tile_yscale layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y layer_tile_region layer_tile_visible layer_tile_get_sprite layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend layer_tile_get_alpha layer_tile_get_x layer_tile_get_y layer_tile_get_region layer_tile_get_visible layer_instance_get_instance instance_activate_layer instance_deactivate_layer camera_create camera_create_view camera_destroy camera_apply camera_get_active camera_get_default camera_set_default camera_set_view_mat camera_set_proj_mat camera_set_update_script camera_set_begin_script camera_set_end_script camera_set_view_pos camera_set_view_size camera_set_view_speed camera_set_view_border camera_set_view_angle camera_set_view_target camera_get_view_mat camera_get_proj_mat camera_get_update_script camera_get_begin_script camera_get_end_script camera_get_view_x camera_get_view_y camera_get_view_width camera_get_view_height camera_get_view_speed_x camera_get_view_speed_y camera_get_view_border_x camera_get_view_border_y camera_get_view_angle camera_get_view_target view_get_camera view_get_visible view_get_xport view_get_yport view_get_wport view_get_hport view_get_surface_id view_set_camera view_set_visible view_set_xport view_set_yport view_set_wport view_set_hport view_set_surface_id gesture_drag_time gesture_drag_distance gesture_flick_speed gesture_double_tap_time gesture_double_tap_distance gesture_pinch_distance gesture_pinch_angle_towards gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle gesture_tap_count gesture_get_drag_time gesture_get_drag_distance gesture_get_flick_speed gesture_get_double_tap_time gesture_get_double_tap_distance gesture_get_pinch_distance gesture_get_pinch_angle_towards gesture_get_pinch_angle_away gesture_get_rotate_time gesture_get_rotate_angle gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide keyboard_virtual_status keyboard_virtual_height",literal:"self other all noone global local undefined pointer_invalid pointer_null path_action_stop path_action_restart path_action_continue path_action_reverse true false pi GM_build_date GM_version GM_runtime_version timezone_local timezone_utc gamespeed_fps gamespeed_microseconds ev_create ev_destroy ev_step ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ev_keyrelease ev_trigger ev_left_button ev_right_button ev_middle_button ev_no_button ev_left_press ev_right_press ev_middle_press ev_left_release ev_right_release ev_middle_release ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ev_global_left_button ev_global_right_button ev_global_middle_button ev_global_left_press ev_global_right_press ev_global_middle_press ev_global_left_release ev_global_right_release ev_global_middle_release ev_joystick1_left ev_joystick1_right ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ev_joystick2_button8 ev_outside ev_boundary ev_game_start ev_game_end ev_room_start ev_room_end ev_no_more_lives ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ev_global_gesture_tap ev_global_gesture_double_tap ev_global_gesture_drag_start ev_global_gesture_dragging ev_global_gesture_drag_end ev_global_gesture_flick ev_global_gesture_pinch_start ev_global_gesture_pinch_in ev_global_gesture_pinch_out ev_global_gesture_pinch_end ev_global_gesture_rotate_start ev_global_gesture_rotating ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift vk_rcontrol vk_ralt mb_any mb_none mb_left mb_right mb_middle c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal c_white c_yellow c_orange fa_left fa_center fa_right fa_top fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly audio_falloff_none audio_falloff_inverse_distance audio_falloff_inverse_distance_clamped audio_falloff_linear_distance audio_falloff_linear_distance_clamped audio_falloff_exponent_distance audio_falloff_exponent_distance_clamped audio_old_system audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint cr_size_all spritespeed_framespersecond spritespeed_framespergameframe asset_object asset_unknown asset_sprite asset_sound asset_room asset_path asset_script asset_font asset_timeline asset_tiles asset_shader fa_readonly fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl dll_stdcall matrix_view matrix_projection matrix_world os_win32 os_windows os_macosx os_ios os_android os_symbian os_linux os_unknown os_winphone os_tizen os_win8native os_wiiu os_3ds os_psvita os_bb10 os_ps4 os_xboxone os_ps3 os_xbox360 os_uwp os_tvos os_switch browser_not_a_browser browser_unknown browser_ie browser_firefox browser_chrome browser_safari browser_safari_mobile browser_opera browser_tizen browser_edge browser_windows_store browser_ie_mobile device_ios_unknown device_ios_iphone device_ios_iphone_retina device_ios_ipad device_ios_ipad_retina device_ios_iphone5 device_ios_iphone6 device_ios_iphone6plus device_emulator device_tablet display_landscape display_landscape_flipped display_portrait display_portrait_flipped tm_sleep tm_countvsyncs of_challenge_win of_challen ge_lose of_challenge_tie leaderboard_type_number leaderboard_type_time_mins_secs cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always cull_noculling cull_clockwise cull_counterclockwise lighttype_dir lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed iap_status_uninitialised iap_status_unavailable iap_status_loading iap_status_available iap_status_processing iap_status_restoring iap_failed iap_unavailable iap_available iap_purchased iap_canceled iap_refunded fb_login_default fb_login_fallback_to_webview fb_login_no_fallback_to_webview fb_login_forcing_webview fb_login_use_system_account fb_login_forcing_safari phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x phy_joint_anchor_2_y phy_joint_reaction_force_x phy_joint_reaction_force_y phy_joint_reaction_torque phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque phy_joint_max_motor_torque phy_joint_translation phy_joint_speed phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency phy_joint_lower_angle_limit phy_joint_upper_angle_limit phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque phy_joint_max_force phy_debug_render_aabb phy_debug_render_collision_pairs phy_debug_render_coms phy_debug_render_core_shapes phy_debug_render_joints phy_debug_render_obb phy_debug_render_shapes phy_particle_flag_water phy_particle_flag_zombie phy_particle_flag_wall phy_particle_flag_spring phy_particle_flag_elastic phy_particle_flag_viscous phy_particle_flag_powder phy_particle_flag_tensile phy_particle_flag_colourmixing phy_particle_flag_colormixing phy_particle_group_flag_solid phy_particle_group_flag_rigid phy_particle_data_flag_typeflags phy_particle_data_flag_position phy_particle_data_flag_velocity phy_particle_data_flag_colour phy_particle_data_flag_color phy_particle_data_flag_category achievement_our_info achievement_friends_info achievement_leaderboard_info achievement_achievement_info achievement_filter_all_players achievement_filter_friends_only achievement_filter_favorites_only achievement_type_achievement_challenge achievement_type_score_challenge achievement_pic_loaded achievement_show_ui achievement_show_profile achievement_show_leaderboard achievement_show_achievement achievement_show_bank achievement_show_friend_picker achievement_show_purchase_prompt network_socket_tcp network_socket_udp network_socket_bluetooth network_type_connect network_type_disconnect network_type_data network_type_non_blocking_connect network_config_connect_timeout network_config_use_non_blocking_socket network_config_enable_reliable_udp network_config_disable_reliable_udp buffer_fixed buffer_grow buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text buffer_string buffer_surface_copy buffer_seek_start buffer_seek_relative buffer_seek_end buffer_generalerror buffer_outofspace buffer_outofbounds buffer_invalidtype text_type button_type input_type ANSI_CHARSET DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET BALTIC_CHARSET OEM_CHARSET gp_face1 gp_face2 gp_face3 gp_face4 gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric lb_disp_time_sec lb_disp_time_ms ugc_result_success ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ugc_visibility_friends_only ugc_visibility_private ugc_query_RankedByVote ugc_query_RankedByPublicationDate ugc_query_AcceptedForGameRankedByAcceptanceDate ugc_query_RankedByTrend ugc_query_FavoritedByFriendsRankedByPublicationDate ugc_query_CreatedByFriendsRankedByPublicationDate ugc_query_RankedByNumTimesReported ugc_query_CreatedByFollowedUsersRankedByPublicationDate ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ugc_match_WebGuides ugc_match_IntegratedGuides ugc_match_UsableInGame ugc_match_ControllerBindings vertex_usage_position vertex_usage_colour vertex_usage_color vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord vertex_usage_blendweight vertex_usage_blendindices vertex_usage_psize vertex_usage_tangent vertex_usage_binormal vertex_usage_fog vertex_usage_depth vertex_usage_sample vertex_type_float1 vertex_type_float2 vertex_type_float3 vertex_type_float4 vertex_type_colour vertex_type_color vertex_type_ubyte4 layerelementtype_undefined layerelementtype_background layerelementtype_instance layerelementtype_oldtilemap layerelementtype_sprite layerelementtype_tilemap layerelementtype_particlesystem layerelementtype_tile tile_rotate tile_flip tile_mirror tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency kbv_autocapitalize_none kbv_autocapitalize_words kbv_autocapitalize_sentences kbv_autocapitalize_characters",symbol:"argument_relative argument argument0 argument1 argument2 argument3 argument4 argument5 argument6 argument7 argument8 argument9 argument10 argument11 argument12 argument13 argument14 argument15 argument_count x y xprevious yprevious xstart ystart hspeed vspeed direction speed friction gravity gravity_direction path_index path_position path_positionprevious path_speed path_scale path_orientation path_endaction object_index id solid persistent mask_index instance_count instance_id room_speed fps fps_real current_time current_year current_month current_day current_weekday current_hour current_minute current_second alarm timeline_index timeline_position timeline_speed timeline_running timeline_loop room room_first room_last room_width room_height room_caption room_persistent score lives health show_score show_lives show_health caption_score caption_lives caption_health event_type event_number event_object event_action application_surface gamemaker_pro gamemaker_registered gamemaker_version error_occurred error_last debug_mode keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite visible sprite_index sprite_width sprite_height sprite_xoffset sprite_yoffset image_number image_index image_speed depth image_xscale image_yscale image_angle image_alpha image_blend bbox_left bbox_right bbox_top bbox_bottom layer background_colour background_showcolour background_color background_showcolor view_enabled view_current view_visible view_xview view_yview view_wview view_hview view_xport view_yport view_wport view_hport view_angle view_hborder view_vborder view_hspeed view_vspeed view_object view_surface_id view_camera game_id game_display_name game_project_name game_save_id working_directory temp_directory program_directory browser_width browser_height os_type os_device os_browser os_version display_aa async_load delta_time webgl_enabled event_data iap_data phy_rotation phy_position_x phy_position_y phy_angular_velocity phy_linear_velocity_x phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed phy_angular_damping phy_linear_damping phy_bullet phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x phy_com_y phy_dynamic phy_kinematic phy_sleeping phy_collision_points phy_collision_x phy_collision_y phy_col_normal_x phy_col_normal_y phy_position_xprevious phy_position_yprevious"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("go",function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],keywords:t,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"`"}]},{className:"number",variants:[{begin:e.C_NUMBER_RE+"[i]",relevance:1},e.C_NUMBER_MODE]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,illegal:/["']/}]}]}}),We.registerLanguage("golo",function(e){return{keywords:{keyword:"println readln print import module function local return let var while for foreach times in case when match with break continue augment augmentation each find filter reduce if then else otherwise try catch finally raise throw orIfNull DynamicObject|10 DynamicVariable struct Observable map set vector list array",literal:"true false null"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("gradle",function(e){return{case_insensitive:!0,keywords:{keyword:"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.REGEXP_MODE]}}),We.registerLanguage("groovy",function(e){return{keywords:{literal:"true false null",keyword:"byte short char int long boolean float double void def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof"},contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},{className:"string",begin:"'''",end:"'''"},{className:"string",begin:"\\$/",end:"/\\$",relevance:10},e.APOS_STRING_MODE,{className:"regexp",begin:/~?\/[^\/\n]+\//,contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},e.BINARY_NUMBER_MODE,{className:"class",beginKeywords:"class interface trait enum",end:"{",illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{className:"string",begin:/[^\?]{0}[A-Za-z0-9_$]+ *:/},{begin:/\?/,end:/\:/},{className:"symbol",begin:"^\\s*[A-Za-z0-9_$]+:",relevance:0}],illegal:/#|<\//}}),We.registerLanguage("haml",function(e){return{case_insensitive:!0,contains:[{className:"meta",begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+"},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class",begin:"\\.[\\w-]+"},{begin:"{\\s*",end:"\\s*}",contains:[{begin:":\\w+\\s*=>",end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=",end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:"#{",starts:{end:"}",subLanguage:"ruby"}}]}}),We.registerLanguage("handlebars",function(e){var t={"builtin-name":"each in with if else unless bindattr action collection debugger log outlet template unbound view yield lookup"},n={begin:/".*?"|'.*?'|\[.*?\]|\w+/},r=e.inherit(n,{keywords:t,starts:{endsWithParent:!0,relevance:0,contains:[e.inherit(n,{relevance:0})]}}),a=e.inherit(r,{className:"name"}),i=e.inherit(r,{relevance:0});return{aliases:["hbs","html.hbs","html.handlebars"],case_insensitive:!0,subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,skip:!0},e.COMMENT(/\{\{!--/,/--\}\}/),e.COMMENT(/\{\{!/,/\}\}/),{className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[a],starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[a]},{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[a]},{className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,keywords:t,contains:[i]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,keywords:t,contains:[i]}]}}),We.registerLanguage("haskell",function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"meta",begin:"{-#",end:"#-}"},r={className:"meta",begin:"^#",end:"$"},a={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},i={begin:"\\(",end:"\\)",illegal:'"',contains:[n,r,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),t]};return{aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[i,t],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[i,t],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[a,i,t]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[n,a,i,{begin:"{",end:"}",contains:i.contains},t]},{beginKeywords:"default",end:"$",contains:[a,i,t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[a,e.QUOTE_STRING_MODE,t]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},n,r,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,a,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}]}}),We.registerLanguage("haxe",function(e){return{aliases:["hx"],keywords:{keyword:"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while Int Float String Bool Dynamic Void Array ",built_in:"trace this",literal:"true false null _"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"},{className:"subst",begin:"\\$",end:"\\W}"}]},e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@:",end:"$"},{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end error"}},{className:"type",begin:":[ \t]*",end:"[^A-Za-z0-9_ \t\\->]",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:":[ \t]*",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"new *",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"class",beginKeywords:"enum",end:"\\{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"abstract",end:"[\\{$]",contains:[{className:"type",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"from +",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"to +",end:"\\W",excludeBegin:!0,excludeEnd:!0},e.TITLE_MODE],keywords:{keyword:"abstract from to"}},{className:"class",begin:"\\b(class|interface) +",end:"[\\{$]",excludeEnd:!0,keywords:"class interface",contains:[{className:"keyword",begin:"\\b(extends|implements) +",keywords:"extends implements",contains:[{className:"type",begin:e.IDENT_RE,relevance:0}]},e.TITLE_MODE]},{className:"function",beginKeywords:"function",end:"\\(",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE]}],illegal:/<\//}}),We.registerLanguage("hsp",function(e){return{case_insensitive:!0,lexemes:/[\w\._]+/,keywords:"goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",begin:'{"',end:'"}',contains:[e.BACKSLASH_ESCAPE]},e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib"},contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),e.NUMBER_MODE,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"symbol",begin:"^\\*(\\w+|@)"},e.NUMBER_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("htmlbars",function(e){var t="action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view",n=(e.QUOTE_STRING_MODE,{endsWithParent:!0,relevance:0,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE,{illegal:/\}\}/,begin:/[a-zA-Z0-9_]+=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[a-zA-Z0-9_]+/}]},e.NUMBER_MODE]});return{case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT("{{!(--)?","(--)?}}"),{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[{className:"name",begin:/[a-zA-Z\.\-]+/,keywords:{"builtin-name":t},starts:n}]},{className:"template-variable",begin:/\{\{[a-zA-Z][a-zA-Z\-]+/,end:/\}\}/,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE]}]}}),We.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],illegal:"\\S",contains:[{begin:"^"+t,end:"$",contains:[{className:"number",begin:"\\b\\d{3}\\b"}]},{begin:"^[A-Z]+ (.*?) "+t+"$",returnBegin:!0,end:"$",contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{begin:t},{className:"keyword",begin:"[A-Z]+"}]},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,illegal:"\\n|\\s|=",starts:{end:"$",relevance:0}},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}]}}),We.registerLanguage("hy",function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),o={className:"literal",begin:/\b([Tt]rue|[Ff]alse|nil|None)\b/},s={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+t},c=e.COMMENT("\\^\\{","\\}"),d={className:"symbol",begin:"[:]{1,2}"+t},_={begin:"\\(",end:"\\)"},u={endsWithParent:!0,relevance:0},m={keywords:{"builtin-name":"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . / // //= /= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile/calls profile/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~"},lexemes:t,className:"name",begin:t,starts:u},p=[_,a,l,c,i,d,s,r,o,n];return _.contains=[e.COMMENT("comment",""),m,u],u.contains=p,s.contains=p,{aliases:["hylang"],illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},_,a,l,c,i,d,s,r,o]}}),We.registerLanguage("inform7",function(e){return{aliases:["i7"],case_insensitive:!0,keywords:{keyword:"thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule"},contains:[{className:"string",begin:'"',end:'"',relevance:0,contains:[{className:"subst",begin:"\\[",end:"\\]"}]},{className:"section",begin:/^(Volume|Book|Part|Chapter|Section|Table)\b/,end:"$"},{begin:/^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,end:":",contains:[{begin:"\\(This",end:"\\)"}]},{className:"comment",begin:"\\[",end:"\\]",contains:["self"]}]}}),We.registerLanguage("ini",function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]};return{aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT(";","$"),e.HASH_COMMENT_MODE,{className:"section",begin:/^\s*\[+/,end:/\]+/},{begin:/^[a-z0-9\[\]_\.-]+\s*=\s*/,end:"$",returnBegin:!0,contains:[{className:"attr",begin:/[a-z0-9\[\]_\.-]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[e.COMMENT(";","$"),e.HASH_COMMENT_MODE,{className:"literal",begin:/\bon|off|true|false|yes|no\b/},{className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)}/}]},t,{className:"number",begin:/([\+\-]+)?[\d]+_[\d_]+/},e.NUMBER_MODE]}]}]}}),We.registerLanguage("irpf90",function(e){return{case_insensitive:!0,keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),e.COMMENT("begin_doc","end_doc",{relevance:10}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}}),We.registerLanguage("isbl",function(e){var t="[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*",n={className:"number",begin:e.NUMBER_RE,relevance:0},r={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]},a={className:"doctag",begin:"\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b",relevance:0},i={variants:[{className:"comment",begin:"//",end:"$",relevance:0,contains:[e.PHRASAL_WORDS_MODE,a]},{className:"comment",begin:"/\\*",end:"\\*/",relevance:0,contains:[e.PHRASAL_WORDS_MODE,a]}]},o={keyword:"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока except exitfor finally foreach все if если in в not не or или try while пока ",built_in:"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE smHidden smMaximized smMinimized smNormal wmNo wmYes COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STATЕ SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID RESULT_VAR_NAME RESULT_VAR_NAME_ENG AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ISBL_SYNTAX NO_SYNTAX XML_SYNTAX WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP atUser atGroup atRole aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty apBegin apEnd alLeft alRight asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways cirCommon cirRevoked ctSignature ctEncode ctSignatureEncode clbUnchecked clbChecked clbGrayed ceISB ceAlways ceNever ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob cfInternal cfDisplay ciUnspecified ciWrite ciRead ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton cctDate cctInteger cctNumeric cctPick cctReference cctString cctText cltInternal cltPrimary cltGUI dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange dssEdit dssInsert dssBrowse dssInActive dftDate dftShortDate dftDateTime dftTimeStamp dotDays dotHours dotMinutes dotSeconds dtkndLocal dtkndUTC arNone arView arEdit arFull ddaView ddaEdit emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ecotFile ecotProcess eaGet eaCopy eaCreate eaCreateStandardRoute edltAll edltNothing edltQuery essmText essmCard esvtLast esvtLastActive esvtSpecified edsfExecutive edsfArchive edstSQLServer edstFile edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile vsDefault vsDesign vsActive vsObsolete etNone etCertificate etPassword etCertificatePassword ecException ecWarning ecInformation estAll estApprovingOnly evtLast evtLastActive evtQuery fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch grhAuto grhX1 grhX2 grhX3 hltText hltRTF hltHTML iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG im8bGrayscale im24bRGB im1bMonochrome itBMP itJPEG itWMF itPNG ikhInformation ikhWarning ikhError ikhNoIcon icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler isShow isHide isByUserSettings jkJob jkNotice jkControlJob jtInner jtLeft jtRight jtFull jtCross lbpAbove lbpBelow lbpLeft lbpRight eltPerConnection eltPerUser sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac sfsItalic sfsStrikeout sfsNormal ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom vtEqual vtGreaterOrEqual vtLessOrEqual vtRange rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth rdWindow rdFile rdPrinter rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument reOnChange reOnChangeValues ttGlobal ttLocal ttUser ttSystem ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal smSelect smLike smCard stNone stAuthenticating stApproving sctString sctStream sstAnsiSort sstNaturalSort svtEqual svtContain soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown tarAbortByUser tarAbortByWorkflowException tvtAllWords tvtExactPhrase tvtAnyWord usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected btAnd btDetailAnd btOr btNotOr btOnly vmView vmSelect vmNavigation vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection wfatPrevious wfatNext wfatCancel wfatFinish wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 wfetQueryParameter wfetText wfetDelimiter wfetLabel wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal waAll waPerformers waManual wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection wiLow wiNormal wiHigh wrtSoft wrtHard wsInit wsRunning wsDone wsControlled wsAborted wsContinued wtmFull wtmFromCurrent wtmOnlyCurrent ",class:"AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work ВызовСпособ ИмяОтчета РеквЗнач ",literal:"null true false nil "},s={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,keywords:o,relevance:0},l={className:"type",begin:":[ \\t]*("+"IApplication IAccessRights IAccountRepository IAccountSelectionRestrictions IAction IActionList IAdministrationHistoryDescription IAnchors IApplication IArchiveInfo IAttachment IAttachmentList ICheckListBox ICheckPointedList IColumn IComponent IComponentDescription IComponentToken IComponentTokenFactory IComponentTokenInfo ICompRecordInfo IConnection IContents IControl IControlJob IControlJobInfo IControlList ICrypto ICrypto2 ICustomJob ICustomJobInfo ICustomListBox ICustomObjectWizardStep ICustomWork ICustomWorkInfo IDataSet IDataSetAccessInfo IDataSigner IDateCriterion IDateRequisite IDateRequisiteDescription IDateValue IDeaAccessRights IDeaObjectInfo IDevelopmentComponentLock IDialog IDialogFactory IDialogPickRequisiteItems IDialogsFactory IDICSFactory IDocRequisite IDocumentInfo IDualListDialog IECertificate IECertificateInfo IECertificates IEditControl IEditorForm IEdmsExplorer IEdmsObject IEdmsObjectDescription IEdmsObjectFactory IEdmsObjectInfo IEDocument IEDocumentAccessRights IEDocumentDescription IEDocumentEditor IEDocumentFactory IEDocumentInfo IEDocumentStorage IEDocumentVersion IEDocumentVersionListDialog IEDocumentVersionSource IEDocumentWizardStep IEDocVerSignature IEDocVersionState IEnabledMode IEncodeProvider IEncrypter IEvent IEventList IException IExternalEvents IExternalHandler IFactory IField IFileDialog IFolder IFolderDescription IFolderDialog IFolderFactory IFolderInfo IForEach IForm IFormTitle IFormWizardStep IGlobalIDFactory IGlobalIDInfo IGrid IHasher IHistoryDescription IHyperLinkControl IImageButton IImageControl IInnerPanel IInplaceHint IIntegerCriterion IIntegerList IIntegerRequisite IIntegerValue IISBLEditorForm IJob IJobDescription IJobFactory IJobForm IJobInfo ILabelControl ILargeIntegerCriterion ILargeIntegerRequisite ILargeIntegerValue ILicenseInfo ILifeCycleStage IList IListBox ILocalIDInfo ILocalization ILock IMemoryDataSet IMessagingFactory IMetadataRepository INotice INoticeInfo INumericCriterion INumericRequisite INumericValue IObject IObjectDescription IObjectImporter IObjectInfo IObserver IPanelGroup IPickCriterion IPickProperty IPickRequisite IPickRequisiteDescription IPickRequisiteItem IPickRequisiteItems IPickValue IPrivilege IPrivilegeList IProcess IProcessFactory IProcessMessage IProgress IProperty IPropertyChangeEvent IQuery IReference IReferenceCriterion IReferenceEnabledMode IReferenceFactory IReferenceHistoryDescription IReferenceInfo IReferenceRecordCardWizardStep IReferenceRequisiteDescription IReferencesFactory IReferenceValue IRefRequisite IReport IReportFactory IRequisite IRequisiteDescription IRequisiteDescriptionList IRequisiteFactory IRichEdit IRouteStep IRule IRuleList ISchemeBlock IScript IScriptFactory ISearchCriteria ISearchCriterion ISearchDescription ISearchFactory ISearchFolderInfo ISearchForObjectDescription ISearchResultRestrictions ISecuredContext ISelectDialog IServerEvent IServerEventFactory IServiceDialog IServiceFactory ISignature ISignProvider ISignProvider2 ISignProvider3 ISimpleCriterion IStringCriterion IStringList IStringRequisite IStringRequisiteDescription IStringValue ISystemDialogsFactory ISystemInfo ITabSheet ITask ITaskAbortReasonInfo ITaskCardWizardStep ITaskDescription ITaskFactory ITaskInfo ITaskRoute ITextCriterion ITextRequisite ITextValue ITreeListSelectDialog IUser IUserList IValue IView IWebBrowserControl IWizard IWizardAction IWizardFactory IWizardFormElement IWizardParam IWizardPickParam IWizardReferenceParam IWizardStep IWorkAccessRights IWorkDescription IWorkflowAskableParam IWorkflowAskableParams IWorkflowBlock IWorkflowBlockResult IWorkflowEnabledMode IWorkflowParam IWorkflowPickParam IWorkflowReferenceParam IWorkState IWorkTreeCustomNode IWorkTreeJobNode IWorkTreeTaskNode IXMLEditorForm SBCrypto ".trim().replace(/\s/g,"|")+")",end:"[ \\t]*=",excludeEnd:!0},c={className:"variable",lexemes:t,keywords:o,begin:t,relevance:0,contains:[l,s]};return{aliases:["isbl"],case_insensitive:!0,lexemes:t,keywords:o,illegal:"\\$|\\?|%|,|;$|~|#|@|</",contains:[{className:"function",begin:"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\\(",end:"\\)$",returnBegin:!0,lexemes:t,keywords:o,illegal:"[\\[\\]\\|\\$\\?%,~#@]",contains:[{className:"title",lexemes:t,keywords:{built_in:"AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory Анализ БазаДанных БлокЕсть БлокЕстьРасш БлокИнфо БлокСнять БлокСнятьРасш БлокУстановить Ввод ВводМеню ВедС ВедСпр ВерхняяГраницаМассива ВнешПрогр Восст ВременнаяПапка Время ВыборSQL ВыбратьЗапись ВыделитьСтр Вызвать Выполнить ВыпПрогр ГрафическийФайл ГруппаДополнительно ДатаВремяСерв ДеньНедели ДиалогДаНет ДлинаСтр ДобПодстр ЕПусто ЕслиТо ЕЧисло ЗамПодстр ЗаписьСправочника ЗначПоляСпр ИДТипСпр ИзвлечьДиск ИзвлечьИмяФайла ИзвлечьПуть ИзвлечьРасширение ИзмДат ИзменитьРазмерМассива ИзмеренийМассива ИмяОрг ИмяПоляСпр Индекс ИндикаторЗакрыть ИндикаторОткрыть ИндикаторШаг ИнтерактивныйРежим ИтогТблСпр КодВидВедСпр КодВидСпрПоИД КодПоAnalit КодСимвола КодСпр КолПодстр КолПроп КонМес Конст КонстЕсть КонстЗнач КонТран КопироватьФайл КопияСтр КПериод КСтрТблСпр Макс МаксСтрТблСпр Массив Меню МенюРасш Мин НаборДанныхНайтиРасш НаимВидСпр НаимПоAnalit НаимСпр НастроитьПереводыСтрок НачМес НачТран НижняяГраницаМассива НомерСпр НПериод Окно Окр Окружение ОтлИнфДобавить ОтлИнфУдалить Отчет ОтчетАнал ОтчетИнт ПапкаСуществует Пауза ПВыборSQL ПереименоватьФайл Переменные ПереместитьФайл Подстр ПоискПодстр ПоискСтр ПолучитьИДТаблицы ПользовательДополнительно ПользовательИД ПользовательИмя ПользовательСтатус Прервать ПроверитьПараметр ПроверитьПараметрЗнач ПроверитьУсловие РазбСтр РазнВремя РазнДат РазнДатаВремя РазнРабВремя РегУстВрем РегУстДат РегУстЧсл РедТекст РеестрЗапись РеестрСписокИменПарам РеестрЧтение РеквСпр РеквСпрПр Сегодня Сейчас Сервер СерверПроцессИД СертификатФайлСчитать СжПроб Символ СистемаДиректумКод СистемаИнформация СистемаКод Содержит СоединениеЗакрыть СоединениеОткрыть СоздатьДиалог СоздатьДиалогВыбораИзДвухСписков СоздатьДиалогВыбораПапки СоздатьДиалогОткрытияФайла СоздатьДиалогСохраненияФайла СоздатьЗапрос СоздатьИндикатор СоздатьИсключение СоздатьКэшированныйСправочник СоздатьМассив СоздатьНаборДанных СоздатьОбъект СоздатьОтчет СоздатьПапку СоздатьРедактор СоздатьСоединение СоздатьСписок СоздатьСписокСтрок СоздатьСправочник СоздатьСценарий СоздСпр СостСпр Сохр СохрСпр СписокСистем Спр Справочник СпрБлокЕсть СпрБлокСнять СпрБлокСнятьРасш СпрБлокУстановить СпрИзмНабДан СпрКод СпрНомер СпрОбновить СпрОткрыть СпрОтменить СпрПарам СпрПолеЗнач СпрПолеИмя СпрРекв СпрРеквВведЗн СпрРеквНовые СпрРеквПр СпрРеквПредЗн СпрРеквРежим СпрРеквТипТекст СпрСоздать СпрСост СпрСохранить СпрТблИтог СпрТблСтр СпрТблСтрКол СпрТблСтрМакс СпрТблСтрМин СпрТблСтрПред СпрТблСтрСлед СпрТблСтрСозд СпрТблСтрУд СпрТекПредст СпрУдалить СравнитьСтр СтрВерхРегистр СтрНижнРегистр СтрТблСпр СумПроп Сценарий СценарийПарам ТекВерсия ТекОрг Точн Тран Транслитерация УдалитьТаблицу УдалитьФайл УдСпр УдСтрТблСпр Уст УстановкиКонстант ФайлАтрибутСчитать ФайлАтрибутУстановить ФайлВремя ФайлВремяУстановить ФайлВыбрать ФайлЗанят ФайлЗаписать ФайлИскать ФайлКопировать ФайлМожноЧитать ФайлОткрыть ФайлПереименовать ФайлПерекодировать ФайлПереместить ФайлПросмотреть ФайлРазмер ФайлСоздать ФайлСсылкаСоздать ФайлСуществует ФайлСчитать ФайлУдалить ФмтSQLДат ФмтДат ФмтСтр ФмтЧсл Формат ЦМассивЭлемент ЦНаборДанныхРеквизит ЦПодстр "},begin:"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\\(",end:"\\(",returnBegin:!0,excludeEnd:!0},s,c,r,n,i]},l,s,c,r,n,i]}}),We.registerLanguage("java",function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("javascript",function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"xml"}},o={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"css"}},s={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,a]};a.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,o,s,r,e.REGEXP_MODE];var l=a.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,o,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,\n]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:l}]}]},{className:"",begin:/\s/,end:/\s*/,skip:!0},{begin:/</,end:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,subLanguage:"xml",contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},{begin:/<[A-Za-z0-9\\._:-]+/,end:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,skip:!0,contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:l}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor get set",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}),We.registerLanguage("jboss-cli",function(e){var t={className:"params",begin:/\(/,end:/\)/,contains:[{begin:/[\w-]+ *=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[\w-]+/}]}],relevance:0};return{aliases:["wildfly-cli"],lexemes:"[a-z-]+",keywords:{keyword:"alias batch cd clear command connect connection-factory connection-info data-source deploy deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias undeploy unset version xa-data-source",literal:"true false"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"params",begin:/--[\w\-=\/]+/},{className:"function",begin:/:[\w\-.]+/,relevance:0},{className:"string",begin:/\B(([\/.])[\w\-.\/=]+)+/},t]}}),We.registerLanguage("json",function(e){var t={literal:"true false null"},n=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],r=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],a={end:",",endsWithParent:!0,excludeEnd:!0,contains:r,keywords:t},i={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(a,{begin:/:/})].concat(n),illegal:"\\S"},o={begin:"\\[",end:"\\]",contains:[e.inherit(a)],illegal:"\\S"};return r.push(i,o),n.forEach(function(e){r.push(e)}),{contains:r,keywords:t,illegal:"\\S"}}),We.registerLanguage("julia",function(e){var t={keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},n="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",r={lexemes:n,keywords:t,illegal:/<\//},a={className:"subst",begin:/\$\(/,end:/\)/,keywords:t},i={className:"variable",begin:"\\$"+n},o={className:"string",contains:[e.BACKSLASH_ESCAPE,a,i],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a,i],begin:"`",end:"`"},l={className:"meta",begin:"@"+n};return r.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},o,s,l,{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],a.contains=r.contains,r}),We.registerLanguage("julia-repl",function(e){return{contains:[{className:"meta",begin:/^julia>/,relevance:10,starts:{end:/^(?![ ]{6})/,subLanguage:"julia"},aliases:["jldoctest"]}]}}),We.registerLanguage("kotlin",function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},a={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},i={className:"string",variants:[{begin:'"""',end:'"""',contains:[a,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,a,r]}]};r.contains.push(i);var o={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},s={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(i,{className:"meta-string"})]}]},l={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0},c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},_=d;return _.variants[1].contains=[d],d.variants[1].contains=[_],{aliases:["kt"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},n,o,s,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,o,s,i,e.C_NUMBER_MODE]},c]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},o,s]},i,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},l]}}),We.registerLanguage("lasso",function(e){var t="\\]|\\?>",n={literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"},r=e.COMMENT("\x3c!--","--\x3e",{relevance:0}),a={className:"meta",begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[r]}},i={className:"meta",begin:"\\[/noprocess|<\\?(lasso(script)?|=)"},o={className:"symbol",begin:"'[a-zA-Z_][\\w.]*'"},s=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(e.C_NUMBER_MODE,{begin:e.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$][a-zA-Z_][\\w.]*"},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*",end:"[a-zA-Z_][\\w.]*",illegal:"\\W"},{className:"params",variants:[{begin:"-(?!infinity)[a-zA-Z_][\\w.]*",relevance:0},{begin:"(\\.\\.\\.)"}]},{begin:/(->|\.)\s*/,relevance:0,contains:[o]},{className:"class",beginKeywords:"define",returnEnd:!0,end:"\\(|=>",contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z_][\\w.]*(=(?!>))?|[-+*/%](?!>)"})]}];return{aliases:["ls","lassoscript"],case_insensitive:!0,lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[|<\\?(lasso(script)?|=)",returnEnd:!0,relevance:0,contains:[r]}},a,i,{className:"meta",begin:"\\[no_square_brackets",starts:{end:"\\[/no_square_brackets\\]",lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[noprocess\\]|<\\?(lasso(script)?|=)",returnEnd:!0,contains:[r]}},a,i].concat(s)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta",begin:"^#!",end:"lasso9$",relevance:10}].concat(s)}}),We.registerLanguage("ldif",function(e){return{contains:[{className:"attribute",begin:"^dn",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0},relevance:10},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0}},{className:"literal",begin:"^-",end:"$"},e.HASH_COMMENT_MODE]}}),We.registerLanguage("leaf",function(e){return{contains:[{className:"function",begin:"#+[A-Za-z_0-9]*\\(",end:" {",returnBegin:!0,excludeEnd:!0,contains:[{className:"keyword",begin:"#+"},{className:"title",begin:"[A-Za-z_][A-Za-z_0-9]*"},{className:"params",begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"string",begin:'"',end:'"'},{className:"variable",begin:"[A-Za-z_][A-Za-z_0-9]*"}]}]}]}}),We.registerLanguage("less",function(e){var t="([\\w-]+|@{[\\w-]+})",n=[],r=[],a=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},i=function(e,t,n){return{className:e,begin:t,relevance:n}},o={begin:"\\(",end:"\\)",contains:r,relevance:0};r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a("'"),a('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},i("number","#[0-9A-Fa-f]+\\b"),o,i("variable","@@?[\\w-]+",10),i("variable","@{[\\w-]+}"),i("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var s=r.concat({begin:"{",end:"}",contains:n}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(r)},c={begin:t+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:t,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:r}}]},d={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:r,relevance:0}},_={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:s}},u={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:t,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,i("keyword","all\\b"),i("variable","@{[\\w-]+}"),i("selector-tag",t+"%?",0),i("selector-id","#"+t),i("selector-class","\\."+t,0),i("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:s},{begin:"!important"}]};return n.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,d,_,c,u),{case_insensitive:!0,illegal:"[=>'/<($\"]",contains:n}}),We.registerLanguage("lisp",function(e){var t="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",n="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",r={className:"literal",begin:"\\b(t{1}|nil)\\b"},a={className:"number",variants:[{begin:n,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{begin:"#(c|C)\\("+n+" +"+n,end:"\\)"}]},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),o=e.COMMENT(";","$",{relevance:0}),s={begin:"\\*",end:"\\*"},l={className:"symbol",begin:"[:&]"+t},c={begin:t,relevance:0},d={begin:"\\|[^]*?\\|"},_={contains:[a,i,s,l,{begin:"\\(",end:"\\)",contains:["self",r,i,a,c]},c],variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{name:"quote"}},{begin:"'\\|[^]*?\\|"}]},u={variants:[{begin:"'"+t},{begin:"#'"+t+"(::"+t+")*"}]},m={begin:"\\(\\s*",end:"\\)"},p={endsWithParent:!0,relevance:0};return m.contains=[{className:"name",variants:[{begin:t},{begin:"\\|[^]*?\\|"}]},p],p.contains=[_,u,m,r,a,i,o,s,l,d,c],{illegal:/\S/,contains:[a,{className:"meta",begin:"^#!",end:"$"},r,i,o,_,u,m,c]}}),We.registerLanguage("livecodeserver",function(e){var t={className:"variable",variants:[{begin:"\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)"},{begin:"\\$_[A-Z]+"}],relevance:0},n=[e.C_BLOCK_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("--","$"),e.COMMENT("[^:]//","$")],r=e.inherit(e.TITLE_MODE,{variants:[{begin:"\\b_*rig[A-Z]+[A-Za-z0-9_\\-]*"},{begin:"\\b_[a-z0-9\\-]+"}]}),a=e.inherit(e.TITLE_MODE,{begin:"\\b([A-Za-z0-9_\\-]+)\\b"});return{case_insensitive:!1,keywords:{keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress difference directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract symmetric union unload vectorDotProduct wait write"},contains:[t,{className:"keyword",begin:"\\bend\\sif\\b"},{className:"function",beginKeywords:"function",end:"$",contains:[t,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"function",begin:"\\bend\\s+",end:"$",keywords:"end",contains:[a,r],relevance:0},{beginKeywords:"command on",end:"$",contains:[t,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"meta",variants:[{begin:"<\\?(rev|lc|livecode)",relevance:10},{begin:"<\\?"},{begin:"\\?>"}]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r].concat(n),illegal:";$|^\\[|^=|&|{"}}),We.registerLanguage("livescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger case default function var with then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super case default function var void const let enum export import native list map __hasProp __extends __slice __bind __indexOf",literal:"true false null undefined yes no on off it that void",built_in:"npm require console print module global window document"},n="[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*",r=e.inherit(e.TITLE_MODE,{begin:n}),a={className:"subst",begin:/#\{/,end:/}/,keywords:t},i={className:"subst",begin:/#[A-Za-z$_]/,end:/(?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,keywords:t},o=[e.BINARY_NUMBER_MODE,{className:"number",begin:"(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)",relevance:0,starts:{end:"(\\s*/)?",relevance:0}},{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,a,i]},{begin:/\\/,end:/(\s|$)/,excludeEnd:!0}]},{className:"regexp",variants:[{begin:"//",end:"//[gim]*",contains:[a,e.HASH_COMMENT_MODE]},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W)/}]},{begin:"@"+n},{begin:"``",end:"``",excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"}];a.contains=o;var s={className:"params",begin:"\\(",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{aliases:["ls"],keywords:t,illegal:/\/\*/,contains:o.concat([e.COMMENT("\\/\\*","\\*\\/"),e.HASH_COMMENT_MODE,{begin:"(#=>|=>|\\|>>|-?->|\\!->)"},{className:"function",contains:[r,s],returnBegin:!0,variants:[{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B\\->\\*?",end:"\\->\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?!?(\\(.*\\))?\\s*\\B[-~]{1,2}>\\*?",end:"[-~]{1,2}>\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B!?[-~]{1,2}>\\*?",end:"!?[-~]{1,2}>\\*?"}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[r]},r]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}),We.registerLanguage("llvm",function(e){var t="([-a-zA-Z$._][\\w\\-$.]*)";return{keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[{className:"keyword",begin:"i\\d+"},e.COMMENT(";","\\n",{relevance:0}),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'"',end:'[^\\\\]"'}],relevance:0},{className:"title",variants:[{begin:"@"+t},{begin:"@\\d+"},{begin:"!"+t},{begin:"!\\d+"+t}]},{className:"symbol",variants:[{begin:"%"+t},{begin:"%\\d+"},{begin:"#\\d+"}]},{className:"number",variants:[{begin:"0[xX][a-fA-F0-9]+"},{begin:"-?\\d+(?:[.]\\d+)?(?:[eE][-+]?\\d+(?:[.]\\d+)?)?"}],relevance:0}]}}),We.registerLanguage("lsl",function(e){var t={className:"string",begin:'"',end:'"',contains:[{className:"subst",begin:/\\[tn"\\]/}]},n={className:"number",begin:e.C_NUMBER_RE};return{illegal:":",contains:[t,{className:"comment",variants:[e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/")],relevance:0},n,{className:"section",variants:[{begin:"\\b(?:state|default)\\b"},{begin:"\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\b"}]},{className:"built_in",begin:"\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|SitOnLink|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b"},{className:"literal",variants:[{begin:"\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b"},{begin:"\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(?:ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(?:_TAG)?|CREATOR|ATTACHED_(?:POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALLOW_UNSIT|ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(?:INVALID_(?:AGENT|LINK_OBJECT)|NO(?:T_EXPERIENCE|_(?:ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b"},{begin:"\\b(?:FALSE|TRUE)\\b"},{begin:"\\b(?:ZERO_ROTATION)\\b"},{begin:"\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\b"},{begin:"\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\b"}]},{className:"type",begin:"\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\b"}]}}),We.registerLanguage("lua",function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},n=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:n.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:n}].concat(n)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}}),We.registerLanguage("makefile",function(e){var t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t]},r={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[t]},a={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*[:+?]?=",illegal:"\\n",returnBegin:!0,contains:[{begin:"^"+e.UNDERSCORE_IDENT_RE,end:"[:+?]?=",excludeEnd:!0}]},i={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[t]};return{aliases:["mk","mak"],keywords:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",lexemes:/[\w-]+/,contains:[e.HASH_COMMENT_MODE,t,n,r,a,{className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{"meta-keyword":".PHONY"},lexemes:/[\.\w]+/},i]}}),We.registerLanguage("mathematica",function(e){return{aliases:["mma","wl"],lexemes:"(\\$|\\b)"+e.IDENT_RE+"\\b",keywords:"AASTriangle AbelianGroup Abort AbortKernels AbortProtect AbortScheduledTask Above Abs AbsArg AbsArgPlot Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AcceptanceThreshold AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Activate Active ActiveClassification ActiveClassificationObject ActiveItem ActivePrediction ActivePredictionObject ActiveStyle AcyclicGraphQ AddOnHelpPath AddSides AddTo AddToSearchIndex AddUsers AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AdministrativeDivisionData AffineHalfSpace AffineSpace AffineStateSpaceModel AffineTransform After AggregatedEntityClass AggregationLayer AircraftData AirportData AirPressureData AirTemperatureData AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowAdultContent AllowedCloudExtraParameters AllowedCloudParameterExtensions AllowedDimensions AllowedFrequencyRange AllowedHeads AllowGroupClose AllowIncomplete AllowInlineCells AllowKernelInitialization AllowLooseGrammar AllowReverseGroupClose AllowScriptLevelChange AllTrue Alphabet AlphabeticOrder AlphabeticSort AlphaChannel AlternateImage AlternatingFactorial AlternatingGroup AlternativeHypothesis Alternatives AltitudeMethod AmbientLight AmbiguityFunction AmbiguityList Analytic AnatomyData AnatomyForm AnatomyPlot3D AnatomySkinStyle AnatomyStyling AnchoredSearch And AndersonDarlingTest AngerJ AngleBisector AngleBracket AnglePath AnglePath3D AngleVector AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning AnimationRunTime AnimationTimeIndex Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotate Annotation AnnotationDelete AnnotationNames AnnotationRules AnnotationValue Annuity AnnuityDue Annulus AnomalyDetection AnomalyDetectorFunction Anonymous Antialiasing AntihermitianMatrixQ Antisymmetric AntisymmetricMatrixQ Antonyms AnyOrder AnySubset AnyTrue Apart ApartSquareFree APIFunction Appearance AppearanceElements AppearanceRules AppellF1 Append AppendCheck AppendLayer AppendTo ApplicationIdentificationKey Apply ApplySides ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcCurvature ARCHProcess ArcLength ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Area Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess Around AroundReplace ARProcess Array ArrayComponents ArrayDepth ArrayFilter ArrayFlatten ArrayMesh ArrayPad ArrayPlot ArrayQ ArrayResample ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads ASATriangle Ask AskAppend AskConfirm AskDisplay AskedQ AskedValue AskFunction AskState AskTemplateDisplay AspectRatio AspectRatioFixed Assert AssociateTo Association AssociationFormat AssociationMap AssociationQ AssociationThread AssumeDeterministic Assuming Assumptions AstronomicalData AsymptoticDSolveValue AsymptoticEqual AsymptoticEquivalent AsymptoticGreater AsymptoticGreaterEqual AsymptoticIntegrate AsymptoticLess AsymptoticLessEqual AsymptoticOutputTracker AsymptoticRSolveValue AsymptoticSolve AsymptoticSum Asynchronous AsynchronousTaskObject AsynchronousTasks Atom AtomCoordinates AtomCount AtomDiagramCoordinates AtomList AtomQ AttentionLayer Attributes Audio AudioAmplify AudioAnnotate AudioAnnotationLookup AudioBlockMap AudioCapture AudioChannelAssignment AudioChannelCombine AudioChannelMix AudioChannels AudioChannelSeparate AudioData AudioDelay AudioDelete AudioDevice AudioDistance AudioFade AudioFrequencyShift AudioGenerator AudioIdentify AudioInputDevice AudioInsert AudioIntervals AudioJoin AudioLabel AudioLength AudioLocalMeasurements AudioLooping AudioLoudness AudioMeasurements AudioNormalize AudioOutputDevice AudioOverlay AudioPad AudioPan AudioPartition AudioPause AudioPitchShift AudioPlay AudioPlot AudioQ AudioRecord AudioReplace AudioResample AudioReverb AudioSampleRate AudioSpectralMap AudioSpectralTransformation AudioSplit AudioStop AudioStream AudioStreams AudioTimeStretch AudioTrim AudioType AugmentedPolyhedron AugmentedSymmetricPolynomial Authenticate Authentication AuthenticationDialog AutoAction Autocomplete AutocompletionFunction AutoCopy AutocorrelationTest AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutoQuoteCharacters AutoRefreshed AutoRemove AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords AutoSubmitting Axes AxesEdge AxesLabel AxesOrigin AxesStyle AxiomaticTheory AxisBabyMonsterGroupB Back Background BackgroundAppearance BackgroundTasksSettings Backslash Backsubstitution Backward Ball Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarcodeImage BarcodeRecognize BaringhausHenzeTest BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseDecode BaseEncode BaseForm Baseline BaselinePosition BaseStyle BasicRecurrentLayer BatchNormalizationLayer BatchSize BatesDistribution BattleLemarieWavelet BayesianMaximization BayesianMaximizationObject BayesianMinimization BayesianMinimizationObject Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized Between BetweennessCentrality BeveledPolyhedron BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryDeserialize BinaryDistance BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinarySerialize BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BiquadraticFilterModel BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor BiweightLocation BiweightMidvariance Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockchainAddressData BlockchainBase BlockchainBlockData BlockchainContractValue BlockchainData BlockchainGet BlockchainKeyEncode BlockchainPut BlockchainTokenData BlockchainTransaction BlockchainTransactionData BlockchainTransactionSign BlockchainTransactionSubmit BlockMap BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bond BondCount BondList BondQ Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms BooleanQ BooleanRegion Booleans BooleanStrings BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryDiscretizeGraphics BoundaryDiscretizeRegion BoundaryMesh BoundaryMeshRegion BoundaryMeshRegionQ BoundaryStyle BoundedRegionQ BoundingRegion Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxObject BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break BridgeData BrightnessEqualize BroadcastStationData Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurve3DBoxOptions BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BSplineSurface3DBoxOptions BubbleChart BubbleChart3D BubbleScale BubbleSizes BuildingData BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteArray ByteArrayFormat ByteArrayQ ByteArrayToString ByteCount ByteOrderingC CachedValue CacheGraphics CachePersistence CalendarConvert CalendarData CalendarType Callout CalloutMarker CalloutStyle CallPacket CanberraDistance Cancel CancelButton CandlestickChart CanonicalGraph CanonicalizePolygon CanonicalizePolyhedron CanonicalName CanonicalWarpingCorrespondence CanonicalWarpingDistance CantorMesh CantorStaircase Cap CapForm CapitalDifferentialD Capitalize CapsuleShape CaptureRunning CardinalBSplineBasis CarlemanLinearize CarmichaelLambda CaseOrdering Cases CaseSensitive Cashflow Casoratian Catalan CatalanNumber Catch Catenate CatenateLayer CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling CelestialSystem Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEvaluationLanguage CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellLabelStyle CellLabelTemplate CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterArray CenterDot CentralFeature CentralMoment CentralMomentGeneratingFunction Cepstrogram CepstrogramArray CepstrumArray CForm ChampernowneNumber ChangeOptions ChannelBase ChannelBrokerAction ChannelDatabin ChannelHistoryLength ChannelListen ChannelListener ChannelListeners ChannelListenerWait ChannelObject ChannelPreSendFunction ChannelReceiverFunction ChannelSend ChannelSubscribers ChanVeseBinarize Character CharacterCounts CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterName CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop ChromaticityPlot ChromaticityPlot3D ChromaticPolynomial Circle CircleBox CircleDot CircleMinus CirclePlus CirclePoints CircleThrough CircleTimes CirculantGraph CircularOrthogonalMatrixDistribution CircularQuaternionMatrixDistribution CircularRealMatrixDistribution CircularSymplecticMatrixDistribution CircularUnitaryMatrixDistribution Circumsphere CityData ClassifierFunction ClassifierInformation ClassifierMeasurements ClassifierMeasurementsObject Classify ClassPriors Clear ClearAll ClearAttributes ClearCookies ClearPermissions ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipPlanesStyle ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent CloudAccountData CloudBase CloudConnect CloudDeploy CloudDirectory CloudDisconnect CloudEvaluate CloudExport CloudExpression CloudExpressions CloudFunction CloudGet CloudImport CloudLoggingData CloudObject CloudObjectInformation CloudObjectInformationData CloudObjectNameFormat CloudObjects CloudObjectURLType CloudPublish CloudPut CloudRenderingMethod CloudSave CloudShare CloudSubmit CloudSymbol CloudUnshare ClusterClassify ClusterDissimilarityFunction ClusteringComponents ClusteringTree CMYKColor Coarse CodeAssistOptions Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorBalance ColorCombine ColorConvert ColorCoverage ColorData ColorDataFunction ColorDetect ColorDistance ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQ ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorsNear ColorSpace ColorToneMapping Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CombinedEntityClass CombinerFunction CometData CommonDefaultFormatTypes Commonest CommonestFilter CommonName CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompanyData CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledCodeFunction CompiledFunction CompilerOptions Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComplexListPlot ComplexPlot ComplexPlot3D ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries CompositeQ Composition CompoundElement CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData ComputeUncertainty Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath ConformAudio ConformImages Congruent ConicHullRegion ConicHullRegion3DBox ConicHullRegionBox ConicOptimization Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphComponents ConnectedGraphQ ConnectedMeshComponents ConnectedMoleculeComponents ConnectedMoleculeQ ConnectionSettings ConnectLibraryCallbackFunction ConnectSystemModelComponents ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray ConstantArrayLayer ConstantImage ConstantPlusLayer ConstantRegionQ Constants ConstantTimesLayer ConstellationData ConstrainedMax ConstrainedMin Construct Containing ContainsAll ContainsAny ContainsExactly ContainsNone ContainsOnly ContentFieldOptions ContentLocationFunction ContentObject ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTask ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean ContrastiveLossLayer Control ControlActive ControlAlignment ControlGroupContentsBox ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket ConvexHullMesh ConvexPolygonQ ConvexPolyhedronQ ConvolutionLayer Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CookieFunction Cookies CoordinateBoundingBox CoordinateBoundingBoxArray CoordinateBounds CoordinateBoundsArray CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDatabin CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CountDistinct CountDistinctBy CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Counts CountsBy Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateCellID CreateChannel CreateCloudExpression CreateDatabin CreateDataSystemModel CreateDialog CreateDirectory CreateDocument CreateFile CreateIntermediateDirectories CreateManagedLibraryExpression CreateNotebook CreatePalette CreatePalettePacket CreatePermissionsGroup CreateScheduledTask CreateSearchIndex CreateSystemModel CreateTemporary CreateUUID CreateWindow CriterionFunction CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossEntropyLossLayer CrossingCount CrossingDetect CrossingPolygon CrossMatrix Csc Csch CTCLossLayer Cube CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrencyConvert CurrentDate CurrentImage CurrentlySpeakingPacket CurrentNotebookImage CurrentScreenImage CurrentValue Curry CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecompositionD DagumDistribution DamData DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DatabaseConnect DatabaseDisconnect DatabaseReference Databin DatabinAdd DatabinRemove Databins DatabinUpload DataCompression DataDistribution DataRange DataReversed Dataset Date DateBounds Dated DateDelimiters DateDifference DatedUnit DateFormat DateFunction DateHistogram DateList DateListLogPlot DateListPlot DateListStepPlot DateObject DateObjectQ DateOverlapsQ DatePattern DatePlus DateRange DateReduction DateString DateTicksFormat DateValue DateWithinQ DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayHemisphere DaylightQ DayMatchQ DayName DayNightTerminator DayPlus DayRange DayRound DeBruijnGraph DeBruijnSequence Debug DebugTag Decapitalize Decimal DecimalForm DeclareKnownSymbols DeclarePackage Decompose DeconvolutionLayer Decrement Decrypt DecryptFile DedekindEta DeepSpaceProbeData Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultPrintPrecision DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValue DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod DefineResourceFunction Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic DEigensystem DEigenvalues Deinitialization Del DelaunayMesh Delayed Deletable Delete DeleteAnomalies DeleteBorderComponents DeleteCases DeleteChannel DeleteCloudExpression DeleteContents DeleteDirectory DeleteDuplicates DeleteDuplicatesBy DeleteFile DeleteMissing DeleteObject DeletePermissionsKey DeleteSearchIndex DeleteSmallComponents DeleteStopwords DeleteWithContents DeletionWarning DelimitedArray DelimitedSequence Delimiter DelimiterFlashTime DelimiterMatching Delimiters DeliveryFunction Dendrogram Denominator DensityGraphics DensityHistogram DensityPlot DensityPlot3D DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DerivedKey DescriptorStateSpace DesignMatrix DestroyAfterEvaluation Det DeviceClose DeviceConfigure DeviceExecute DeviceExecuteAsynchronous DeviceObject DeviceOpen DeviceOpenQ DeviceRead DeviceReadBuffer DeviceReadLatest DeviceReadList DeviceReadTimeSeries Devices DeviceStreams DeviceWrite DeviceWriteBuffer DGaussianWavelet DiacriticalPositioning Diagonal DiagonalizableMatrixQ DiagonalMatrix DiagonalMatrixQ Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DictionaryWordQ DifferenceDelta DifferenceOrder DifferenceQuotient DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitalSignature DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralAngle DihedralGroup Dilation DimensionalCombinations DimensionalMeshComponents DimensionReduce DimensionReducerFunction DimensionReduction Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletBeta DirichletCharacter DirichletCondition DirichletConvolve DirichletDistribution DirichletEta DirichletL DirichletLambda DirichletTransform DirichletWindow DisableConsolePrintPacket DisableFormatting DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLimit DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscreteMaxLimit DiscreteMinLimit DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform DiscretizeGraphics DiscretizeRegion Discriminant DisjointQ Disjunction Disk DiskBox DiskMatrix DiskSegment Dispatch DispatchQ DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceMatrix DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers DivideSides Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentGenerator DocumentGeneratorInformation DocumentGeneratorInformationData DocumentGenerators DocumentNotebook DocumentWeightingRules Dodecahedron DomainRegistrationInformation DominantColors DOSTextFormat Dot DotDashed DotEqual DotLayer DotPlusLayer Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DropoutLayer DSolve DSolveValue Dt DualLinearProgramming DualPolyhedron DualSystemsModel DumpGet DumpSave DuplicateFreeQ Duration Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicGeoGraphics DynamicImage DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptionsE EarthImpactData EarthquakeData EccentricityCentrality Echo EchoFunction EclipseType EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeContract EdgeCost EdgeCount EdgeCoverQ EdgeCycleMatrix EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight EdgeWeightedGraphQ Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData ElementwiseLayer ElidedForms Eliminate EliminationOrder Ellipsoid EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmbedCode EmbeddedHTML EmbeddedService EmbeddingLayer EmbeddingObject EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EmptyRegion EnableConsolePrintPacket Enabled Encode Encrypt EncryptedObject EncryptFile End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfBuffer EndOfFile EndOfLine EndOfString EndPackage EngineEnvironment EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entity EntityClass EntityClassList EntityCopies EntityFunction EntityGroup EntityInstance EntityList EntityPrefetch EntityProperties EntityProperty EntityPropertyClass EntityRegister EntityStore EntityStores EntityTypeName EntityUnregister EntityValue Entropy EntropyFilter Environment Epilog EpilogFunction Equal EqualColumns EqualRows EqualTilde EqualTo EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EscapeRadius EstimatedBackground EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerAngles EulerCharacteristic EulerE EulerGamma EulerianGraphQ EulerMatrix EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluateScheduledTask EvaluationBox EvaluationCell EvaluationCompletionAction EvaluationData EvaluationElements EvaluationEnvironment EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels EventSeries ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludedLines ExcludedPhysicalQuantities ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog ExoplanetData Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi ExpirationDate Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportByteArray ExportForm ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpressionUUID ExpToTrig ExtendedEntityClass ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalBundle ExternalCall ExternalDataCharacterEncoding ExternalEvaluate ExternalFunction ExternalFunctionName ExternalObject ExternalOptions ExternalSessionObject ExternalSessions ExternalTypeSignature ExternalValue Extract ExtractArchive ExtractLayer ExtremeValueDistributionFaceForm FaceGrids FaceGridsStyle FacialFeatures Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail Failure FailureAction FailureDistribution FailureQ False FareySequence FARIMAProcess FeatureDistance FeatureExtract FeatureExtraction FeatureExtractor FeatureExtractorFunction FeatureNames FeatureNearest FeatureSpacePlot FeatureSpacePlot3D FeatureTypes FEDisableConsolePrintPacket FeedbackLinearize FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket FetalGrowthData Fibonacci Fibonorial FieldCompletionFunction FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileConvert FileDate FileExistsQ FileExtension FileFormat FileHandler FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameForms FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileSize FileSystemMap FileSystemScan FileTemplate FileTemplateApply FileType FilledCurve FilledCurveBox FilledCurveBoxOptions Filling FillingStyle FillingTransform FilteredEntityClass FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindAnomalies FindArgMax FindArgMin FindChannels FindClique FindClusters FindCookies FindCurvePath FindCycle FindDevices FindDistribution FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEdgeIndependentPaths FindEquationalProof FindEulerianCycle FindExternalEvaluators FindFaces FindFile FindFit FindFormula FindFundamentalCycles FindGeneratingFunction FindGeoLocation FindGeometricConjectures FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindHamiltonianPath FindHiddenMarkovStates FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMatchingColor FindMaximum FindMaximumFlow FindMaxValue FindMeshDefects FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindMoleculeSubstructure FindPath FindPeaks FindPermutation FindPostmanTour FindProcessParameters FindRepeat FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindSpanningTree FindSystemModelEquilibrium FindTextualAnswer FindThreshold FindTransientRepeat FindVertexCover FindVertexCut FindVertexIndependentPaths Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstCase FirstPassageTimeDistribution FirstPosition FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FitRegularization FittedModel FixedOrder FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlattenLayer FlatTopWindow FlipView Floor FlowPolynomial FlushPrintOutputPacket Fold FoldList FoldPair FoldPairList FollowRedirects Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FormControl FormFunction FormLayoutFunction FormObject FormPage FormTheme FormulaData FormulaLookup FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalGaussianNoiseProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameRate FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrenetSerretSystem FrequencySamplingFilterKernel FresnelC FresnelF FresnelG FresnelS Friday FrobeniusNumber FrobeniusSolve FromAbsoluteTime FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS FromEntity FromJulianDate FromLetterNumber FromPolarCoordinates FromRomanNumeral FromSphericalCoordinates FromUnixTime Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullInformationOutputRegulator FullOptions FullRegion FullSimplify Function FunctionCompile FunctionCompileExport FunctionCompileExportByteArray FunctionCompileExportLibrary FunctionCompileExportString FunctionDomain FunctionExpand FunctionInterpolation FunctionPeriod FunctionRange FunctionSpace FussellVeselyImportanceGaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins GalaxyData GalleryView Gamma GammaDistribution GammaRegularized GapPenalty GARCHProcess GatedRecurrentLayer Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianOrthogonalMatrixDistribution GaussianSymplecticMatrixDistribution GaussianUnitaryMatrixDistribution GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateAsymmetricKeyPair GenerateConditions GeneratedCell GeneratedDocumentBinding GenerateDerivedKey GenerateDigitalSignature GenerateDocument GeneratedParameters GeneratedQuantityMagnitudes GenerateHTTPResponse GenerateSecuredAuthenticationKey GenerateSymmetricKey GeneratingFunction GeneratorDescription GeneratorHistoryLength GeneratorOutputType Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeoAntipode GeoArea GeoArraySize GeoBackground GeoBoundingBox GeoBounds GeoBoundsRegion GeoBubbleChart GeoCenter GeoCircle GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDisk GeoDisplacement GeoDistance GeoDistanceList GeoElevationData GeoEntities GeoGraphics GeogravityModelData GeoGridDirectionDifference GeoGridLines GeoGridLinesStyle GeoGridPosition GeoGridRange GeoGridRangePadding GeoGridUnitArea GeoGridUnitDistance GeoGridVector GeoGroup GeoHemisphere GeoHemisphereBoundary GeoHistogram GeoIdentify GeoImage GeoLabels GeoLength GeoListPlot GeoLocation GeologicalPeriodData GeomagneticModelData GeoMarker GeometricAssertion GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricScene GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoModel GeoNearest GeoPath GeoPosition GeoPositionENU GeoPositionXYZ GeoProjection GeoProjectionData GeoRange GeoRangePadding GeoRegionValuePlot GeoResolution GeoScaleBar GeoServer GeoSmoothHistogram GeoStreamPlot GeoStyling GeoStylingImageFunction GeoVariant GeoVector GeoVectorENU GeoVectorPlot GeoVectorXYZ GeoVisibleRegion GeoVisibleRegionBoundary GeoWithinQ GeoZoomLevel GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenAngle GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter GrammarApply GrammarRules GrammarToken Graph Graph3D GraphAssortativity GraphAutomorphismGroup GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel Greater GreaterEqual GreaterEqualLess GreaterEqualThan GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterThan GreaterTilde Green GreenFunction Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupBy GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators Groupings GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain GroupTogetherGrouping GroupTogetherNestedGrouping GrowCutComponents Gudermannian GuidedFilter GumbelDistributionHaarWavelet HadamardMatrix HalfLine HalfNormalDistribution HalfPlane HalfSpace HamiltonianGraphQ HammingDistance HammingWindow HandlerFunctions HandlerFunctionsKeys HankelH1 HankelH2 HankelMatrix HankelTransform HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash Haversine HazardFunction Head HeadCompose HeaderLines Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings Here HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenMarkovProcess HiddenSurface Highlighted HighlightGraph HighlightImage HighlightMesh HighpassFilter HigmanSimsGroupHS HilbertCurve HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HistoricalPeriodData HitMissTransform HITSCentrality HjorthDistribution HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HostLookup HotellingTSquareDistribution HoytDistribution HTMLSave HTTPErrorResponse HTTPRedirect HTTPRequest HTTPRequestData HTTPResponse Hue HumanGrowthData HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyperplane Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestDataI IconData Iconize IconizedObject IconRules Icosahedron Identity IdentityMatrix If IgnoreCase IgnoreDiacritics IgnorePunctuation IgnoreSpellCheck IgnoringInactive Im Image Image3D Image3DProjection Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageApplyIndexed ImageAspectRatio ImageAssemble ImageAugmentationLayer ImageBoundingBoxes ImageCache ImageCacheValid ImageCapture ImageCaptureFunction ImageCases ImageChannels ImageClip ImageCollage ImageColorSpace ImageCompose ImageContainsQ ImageContents ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDisplacements ImageDistance ImageEffect ImageExposureCombine ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageFocusCombine ImageForestingComponents ImageFormattingWidth ImageForwardTransformation ImageGraphics ImageHistogram ImageIdentify ImageInstanceQ ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarker ImageMarkers ImageMeasurements ImageMesh ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImagePosition ImagePreviewFunction ImagePyramid ImagePyramidApply ImageQ ImageRangeCache ImageRecolor ImageReflect ImageRegion ImageResize ImageResolution ImageRestyle ImageRotate ImageRotated ImageSaliencyFilter ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions ImagingDevice ImplicitRegion Implies Import ImportAutoReplacements ImportByteArray ImportOptions ImportString ImprovementImportance In Inactivate Inactive IncidenceGraph IncidenceList IncidenceMatrix IncludeAromaticBonds IncludeConstantBasis IncludeDefinitions IncludeDirectories IncludeFileExtension IncludeGeneratorTasks IncludeHydrogens IncludeInflections IncludeMetaInformation IncludePods IncludeQuantities IncludeRelatedTables IncludeSingularTerm IncludeWindowTimes Increment IndefiniteMatrixQ Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentPhysicalQuantity IndependentUnit IndependentUnitDimension IndependentVertexSetQ Indeterminate IndeterminateThreshold IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers InfiniteLine InfinitePlane Infinity Infix InflationAdjust InflationMethod Information InformationData InformationDataGrid Inherited InheritScope InhomogeneousPoissonProcess InitialEvaluationHistory Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InitializationObjects InitializationValue Initialize InitialSeeding InlineCounterAssignments InlineCounterIncrements InlineRules Inner InnerPolygon InnerPolyhedron Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionFunction InsertionPointObject InsertLinebreaks InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Insphere Install InstallService InstanceNormalizationLayer InString Integer IntegerDigits IntegerExponent IntegerLength IntegerName IntegerPart IntegerPartitions IntegerQ IntegerReverse Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction Interpreter InterpretTemplate InterquartileRange Interrupt InterruptSettings IntersectingQ Intersection Interval IntervalIntersection IntervalMarkers IntervalMarkersStyle IntervalMemberQ IntervalSlider IntervalUnion Into Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHankelTransform InverseHaversine InverseImagePyramid InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InverseMellinTransform InversePermutation InverseRadon InverseRadonTransform InverseSeries InverseShortTimeFourier InverseSpectrogram InverseSurvivalFunction InverseTransformedRegion InverseWaveletTransform InverseWeierstrassP InverseWishartMatrixDistribution InverseZTransform Invisible InvisibleApplication InvisibleTimes IPAddress IrreduciblePolynomialQ IslandData IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemAspectRatio ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcessJaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join JoinAcross Joined JoinedCurve JoinedCurveBox JoinedCurveBoxOptions JoinForm JordanDecomposition JordanModelDecomposition JulianDate JuliaSetBoettcher JuliaSetIterationCount JuliaSetPlot JuliaSetPointsK KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KEdgeConnectedComponents KEdgeConnectedGraphQ KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelFunction KernelMixtureDistribution Kernels Ket Key KeyCollisionFunction KeyComplement KeyDrop KeyDropFrom KeyExistsQ KeyFreeQ KeyIntersection KeyMap KeyMemberQ KeypointStrength Keys KeySelect KeySort KeySortBy KeyTake KeyUnion KeyValueMap KeyValuePattern Khinchin KillProcess KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnapsackSolve KnightTourGraph KnotData KnownUnitQ KochCurve KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter KVertexConnectedComponents KVertexConnectedGraphQLABColor Label Labeled LabeledSlider LabelingFunction LabelingSize LabelStyle LabelVisibility LaguerreL LakeData LambdaComponents LambertW LaminaData LanczosWindow LandauDistribution Language LanguageCategory LanguageData LanguageIdentify LanguageOptions LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCHColor LCM LeaderSize LeafCount LeapYearQ LearnDistribution LearnedDistribution LearningRate LearningRateMultipliers LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessEqualThan LessFullEqual LessGreater LessLess LessSlantEqual LessThan LessTilde LetterCharacter LetterCounts LetterNumber LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryDataType LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox Line3DBoxOptions LinearFilter LinearFractionalOptimization LinearFractionalTransform LinearGradientImage LinearizingTransformationData LinearLayer LinearModelFit LinearOffsetFunction LinearOptimization LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBoxOptions LineBreak LinebreakAdjustments LineBreakChart LinebreakSemicolonWeighting LineBreakWithin LineColor LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRankCentrality LinkRead LinkReadHeld LinkReadyQ Links LinkService LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot ListDensityPlot3D Listen ListFormat ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListSliceContourPlot3D ListSliceDensityPlot3D ListSliceVectorPlot3D ListStepPlot ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalAdaptiveBinarize LocalCache LocalClusteringCoefficient LocalizeDefinitions LocalizeVariables LocalObject LocalObjects LocalResponseNormalizationLayer LocalSubmit LocalSymbol LocalTime LocalTimeZone LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogisticSigmoid LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongestOrderedSequence LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow LongShortTermMemoryLayer Lookup Loopback LoopFreeGraphQ LossFunction LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowerTriangularMatrixQ LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LunarEclipse LUVColor LyapunovSolve LyonsGroupLyMachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MailAddressValidation MailExecute MailFolder MailItem MailReceiverFunction MailResponseFunction MailSearch MailServerConnect MailServerConnection MailSettings MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules ManagedLibraryExpressionID ManagedLibraryExpressionQ MandelbrotSetBoettcher MandelbrotSetDistance MandelbrotSetIterationCount MandelbrotSetMemberQ MandelbrotSetPlot MangoldtLambda ManhattanDistance Manipulate Manipulator MannedSpaceMissionData MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarchenkoPasturDistribution MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicalFunctionData MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixNormalDistribution MatrixPlot MatrixPower MatrixPropertyDistribution MatrixQ MatrixRank MatrixTDistribution Max MaxBend MaxCellMeasure MaxColorDistance MaxDetect MaxDuration MaxExtraBandwidths MaxExtraConditions MaxFeatureDisplacement MaxFeatures MaxFilter MaximalBy Maximize MaxItems MaxIterations MaxLimit MaxMemoryUsed MaxMixtureKernels MaxOverlapFraction MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxTrainingRounds MaxValue MaxwellDistribution MaxWordGap McLaughlinGroupMcL Mean MeanAbsoluteLossLayer MeanAround MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter MeanSquaredLossLayer Median MedianDeviation MedianFilter MedicalTestData Medium MeijerG MeijerGReduce MeixnerDistribution MellinConvolve MellinTransform MemberQ MemoryAvailable MemoryConstrained MemoryConstraint MemoryInUse MengerMesh Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuList MenuPacket MenuSortingValue MenuStyle MenuView Merge MergeDifferences MergingFunction MersennePrimeExponent MersennePrimeExponentQ Mesh MeshCellCentroid MeshCellCount MeshCellHighlight MeshCellIndex MeshCellLabel MeshCellMarker MeshCellMeasure MeshCellQuality MeshCells MeshCellShapeFunction MeshCellStyle MeshCoordinates MeshFunctions MeshPrimitives MeshQualityGoal MeshRange MeshRefinementFunction MeshRegion MeshRegionQ MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageObject MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation MeteorShowerData Method MethodOptions MexicanHatWavelet MeyerWavelet Midpoint Min MinColorDistance MinDetect MineralData MinFilter MinimalBy MinimalPolynomial MinimalStateSpaceModel Minimize MinimumTimeIncrement MinIntervalSize MinkowskiQuestionMark MinLimit MinMax MinorPlanetData Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingBehavior MissingDataMethod MissingDataRules MissingQ MissingString MissingStyle MissingValuePattern MittagLefflerE MixedFractionParts MixedGraphQ MixedMagnitude MixedRadix MixedRadixQuantity MixedUnit MixtureDistribution Mod Modal Mode Modular ModularInverse ModularLambda Module Modulus MoebiusMu Molecule MoleculeContainsQ MoleculeEquivalentQ MoleculeGraph MoleculeModify MoleculePattern MoleculePlot MoleculePlot3D MoleculeProperty MoleculeQ MoleculeValue Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction MomentOfInertia Monday Monitor MonomialList MonomialOrder MonsterGroupM MoonPhase MoonPosition MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform MortalityData Most MountainData MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovieData MovingAverage MovingMap MovingMedian MoyalDistribution Multicolumn MultiedgeStyle MultigraphQ MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity MultiplySides Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistributionN NakagamiDistribution NameQ Names NamespaceBox NamespaceBoxOptions Nand NArgMax NArgMin NBernoulliB NBodySimulation NBodySimulationData NCache NDEigensystem NDEigenvalues NDSolve NDSolveValue Nearest NearestFunction NearestNeighborGraph NearestTo NebulaData NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeDefiniteMatrixQ NegativeIntegers NegativeMultinomialDistribution NegativeRationals NegativeReals NegativeSemidefiniteMatrixQ NeighborhoodData NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestGraph NestList NestWhile NestWhileList NetAppend NetBidirectionalOperator NetChain NetDecoder NetDelete NetDrop NetEncoder NetEvaluationMode NetExtract NetFlatten NetFoldOperator NetGraph NetInformation NetInitialize NetInsert NetInsertSharedArrays NetJoin NetMapOperator NetMapThreadOperator NetMeasurements NetModel NetNestOperator NetPairEmbeddingOperator NetPort NetPortGradient NetPrepend NetRename NetReplace NetReplacePart NetSharedArray NetStateObject NetTake NetTrain NetTrainResultsObject NetworkPacketCapture NetworkPacketRecording NetworkPacketRecordingDuring NetworkPacketTrace NeumannValue NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextCell NextDate NextPrime NextScheduledTaskTime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NightHemisphere NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants NondimensionalizationTransform None NoneTrue NonlinearModelFit NonlinearStateSpaceModel NonlocalMeansFilter NonNegative NonNegativeIntegers NonNegativeRationals NonNegativeReals NonPositive NonPositiveIntegers NonPositiveRationals NonPositiveReals Nor NorlundB Norm Normal NormalDistribution NormalGrouping NormalizationLayer Normalize Normalized NormalizedSquaredEuclideanDistance NormalMatrixQ NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookImport NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookTemplate NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde Nothing NotHumpDownHump NotHumpEqual NotificationFunction NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar Now NoWhitespace NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms NuclearExplosionData NuclearReactorData Null NullRecords NullSpace NullWords Number NumberCompose NumberDecompose NumberExpand NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberLinePlot NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumeratorDenominator NumericalOrder NumericalSort NumericArray NumericArrayQ NumericArrayType NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlotO ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OceanData Octahedron OddQ Off Offset OLEData On ONanGroupON Once OneIdentity Opacity OpacityFunction OpacityFunctionScaling Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionalElement OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering OrderingBy OrderingLayer Orderless OrderlessPatternSequence OrnsteinUhlenbeckProcess Orthogonalize OrthogonalMatrixQ Out Outer OuterPolygon OuterPolyhedron OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OverwriteTarget OwenT OwnValuesPackage PackingMethod PaddedForm Padding PaddingLayer PaddingSize PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageTheme PageWidth Pagination PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath PalindromeQ Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo Parallelepiped ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds Parallelogram ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParametricRegion ParentBox ParentCell ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParentNotebook ParetoDistribution ParetoPickandsDistribution ParkData Part PartBehavior PartialCorrelationFunction PartialD ParticleAcceleratorData ParticleData Partition PartitionGranularity PartitionsP PartitionsQ PartLayer PartOfSpeech PartProtection ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteAutoQuoteCharacters PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PeakDetect PeanoCurve PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PercentForm PerfectNumber PerfectNumberQ PerformanceGoal Perimeter PeriodicBoundaryCondition PeriodicInterpolation Periodogram PeriodogramArray Permanent Permissions PermissionsGroup PermissionsGroupMemberQ PermissionsGroups PermissionsKey PermissionsKeys PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PerpendicularBisector PersistenceLocation PersistenceTime PersistentObject PersistentObjects PersistentValue PersonData PERTDistribution PetersenGraph PhaseMargins PhaseRange PhysicalSystemData Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest PingTime Pink PitchRecognize Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarAngle PlanarGraph PlanarGraphQ PlanckRadiationLaw PlaneCurveData PlanetaryMoonData PlanetData PlantData Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLabels PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangeClipPlanesStyle PlotRangePadding PlotRegion PlotStyle PlotTheme Pluralize Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox Point3DBoxOptions PointBox PointBoxOptions PointFigureChart PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonalNumber PolygonAngle PolygonBox PolygonBoxOptions PolygonCoordinates PolygonDecomposition PolygonHoleScale PolygonIntersections PolygonScale Polyhedron PolyhedronAngle PolyhedronCoordinates PolyhedronData PolyhedronDecomposition PolyhedronGenus PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PoolingLayer PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position PositionIndex Positive PositiveDefiniteMatrixQ PositiveIntegers PositiveRationals PositiveReals PositiveSemidefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerRange PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement Predict PredictionRoot PredictorFunction PredictorInformation PredictorMeasurements PredictorMeasurementsObject PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependLayer PrependTo PreprocessingRules PreserveColor PreserveImageOptions Previous PreviousCell PreviousDate PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitivePolynomialQ PrimitiveRoot PrimitiveRootList PrincipalComponents PrincipalValue Print PrintableASCIIQ PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment Printout3D Printout3DPreviewer PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateKey PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessConnection ProcessDirectory ProcessEnvironment Processes ProcessEstimator ProcessInformation ProcessObject ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessStatus ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm ProofObject Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse PsychrometricPropertyData PublicKey PublisherID PulsarData PunctuationCharacter Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptionsQBinomial QFactorial QGamma QHypergeometricPFQ QnDispersion QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ QuadraticOptimization Quantile QuantilePlot Quantity QuantityArray QuantityDistribution QuantityForm QuantityMagnitude QuantityQ QuantityUnit QuantityVariable QuantityVariableCanonicalUnit QuantityVariableDimensions QuantityVariableIdentifier QuantityVariablePhysicalQuantity Quartics QuartileDeviation Quartiles QuartileSkewness Query QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainderRadialGradientImage RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RadonTransform RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Ramp Random RandomChoice RandomColor RandomComplex RandomEntity RandomFunction RandomGeoPosition RandomGraph RandomImage RandomInstance RandomInteger RandomPermutation RandomPoint RandomPolygon RandomPolyhedron RandomPrime RandomReal RandomSample RandomSeed RandomSeeding RandomVariate RandomWalkProcess RandomWord Range RangeFilter RangeSpecification RankedMax RankedMin RarerProbability Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadByteArray ReadLine ReadList ReadProtected ReadString Real RealAbs RealBlockDiagonalForm RealDigits RealExponent Reals RealSign Reap RecognitionPrior RecognitionThreshold Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RectangularRepeatingElement RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate Region RegionBinarize RegionBoundary RegionBounds RegionCentroid RegionDifference RegionDimension RegionDisjoint RegionDistance RegionDistanceFunction RegionEmbeddingDimension RegionEqual RegionFunction RegionImage RegionIntersection RegionMeasure RegionMember RegionMemberFunction RegionMoment RegionNearest RegionNearestFunction RegionPlot RegionPlot3D RegionProduct RegionQ RegionResize RegionSize RegionSymmetricDifference RegionUnion RegionWithin RegisterExternalEvaluator RegularExpression Regularization RegularlySampledQ RegularPolygon ReIm ReImLabels ReImPlot ReImStyle Reinstall RelationalDatabase RelationGraph Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot RemoteAuthorizationCaching RemoteConnect RemoteConnectionObject RemoteFile RemoteRun RemoteRunProcess Remove RemoveAlphaChannel RemoveAsynchronousTask RemoveAudioStream RemoveBackground RemoveChannelListener RemoveChannelSubscribers Removed RemoveDiacritics RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RemoveUsers RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart RepairMesh Repeated RepeatedNull RepeatedString RepeatedTiming RepeatingElement Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated ReplicateLayer RequiredPhysicalQuantities Resampling ResamplingAlgorithmData ResamplingMethod Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask ReshapeLayer Residue ResizeLayer Resolve ResourceAcquire ResourceData ResourceFunction ResourceObject ResourceRegister ResourceRemove ResourceSearch ResourceSubmissionObject ResourceSubmit ResourceSystemBase ResourceUpdate ResponseForm Rest RestartInterval Restricted Resultant ResumePacket Return ReturnEntersInput ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnReceiptFunction ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseSort ReverseSortBy ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ RiemannXi Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightComposition RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity RollPitchYawAngles RollPitchYawMatrix RomanNumeral Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RSolveValue RudinShapiro RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulePlot RulerUnits Run RunProcess RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilaritySameQ SameTest SampledEntityClass SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SASTriangle SatelliteData SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveConnection SaveDefinitions SavitzkyGolayMatrix SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTask ScheduledTaskActiveQ ScheduledTaskInformation ScheduledTaskInformationData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScientificNotationThreshold ScorerGi ScorerGiPrime ScorerHi ScorerHiPrime ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptForm ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition SearchAdjustment SearchIndexObject SearchIndices SearchQueryString SearchResultObject Sec Sech SechDistribution SecondOrderConeOptimization SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SecuredAuthenticationKey SecuredAuthenticationKeys SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook SelectFirst Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemanticImport SemanticImportString SemanticInterpretation SemialgebraicComponentInstances SemidefiniteOptimization SendMail SendMessage Sequence SequenceAlignment SequenceAttentionLayer SequenceCases SequenceCount SequenceFold SequenceFoldList SequenceForm SequenceHold SequenceLastLayer SequenceMostLayer SequencePosition SequencePredict SequencePredictorFunction SequenceReplace SequenceRestLayer SequenceReverseLayer SequenceSplit Series SeriesCoefficient SeriesData ServiceConnect ServiceDisconnect ServiceExecute ServiceObject ServiceRequest ServiceResponse ServiceSubmit SessionSubmit SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetCloudDirectory SetCookies SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPermissions SetPrecision SetProperty SetSecuredAuthenticationKey SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemModel SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetUsers SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share SharingList Sharpen ShearingMatrix ShearingTransform ShellRegion ShenCastanMatrix ShiftedGompertzDistribution ShiftRegisterSequence Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortTimeFourier ShortTimeFourierData ShortUpArrow Show ShowAutoConvert ShowAutoSpellCheck ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowCodeAssist ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiderealTime SiegelTheta SiegelTukeyTest SierpinskiCurve SierpinskiMesh Sign Signature SignedRankTest SignedRegionDistance SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ SimplePolygonQ SimplePolyhedronQ Simplex Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution SkinStyle Skip SliceContourPlot3D SliceDensityPlot3D SliceDistribution SliceVectorPlot3D Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDecomposition SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SnDispersion Snippet SnubPolyhedron SocialMediaData Socket SocketConnect SocketListen SocketListener SocketObject SocketOpen SocketReadMessage SocketReadyQ Sockets SocketWaitAll SocketWaitNext SoftmaxLayer SokalSneathDissimilarity SolarEclipse SolarSystemFeatureData SolidAngle SolidData SolidRegionQ Solve SolveAlways SolveDelayed Sort SortBy SortedBy SortedEntityClass Sound SoundAndGraphics SoundNote SoundVolume SourceLink Sow Space SpaceCurveData SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution SpatialMedian SpatialTransformationLayer Speak SpeakTextPacket SpearmanRankTest SpearmanRho SpeciesData SpecificityGoal SpectralLineData Spectrogram SpectrogramArray Specularity SpeechRecognize SpeechSynthesize SpellingCorrection SpellingCorrectionList SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SpherePoints SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SphericalShell SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquareMatrixQ SquareRepeatingElement SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave SSSTriangle StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackedDateListPlot StackedListPlot StackInhibit StadiumShape StandardAtmosphereData StandardDeviation StandardDeviationFilter StandardForm Standardize Standardized StandardOceanData StandbyDistribution Star StarClusterData StarData StarGraph StartAsynchronousTask StartExternalSession StartingStepSize StartOfLine StartOfString StartProcess StartScheduledTask StartupSound StartWebSession StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StateTransformationLinearize StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StereochemistryElements StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StoppingPowerData StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamMarkers StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringContainsQ StringCount StringDelete StringDrop StringEndsQ StringExpression StringExtract StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPadLeft StringPadRight StringPart StringPartition StringPosition StringQ StringRepeat StringReplace StringReplaceList StringReplacePart StringReverse StringRiffle StringRotateLeft StringRotateRight StringSkeleton StringSplit StringStartsQ StringTake StringTemplate StringToByteArray StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleData StyleDefinitions StyleForm StyleHints StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subdivide Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subsequences Subset SubsetEqual SubsetMap SubsetQ Subsets SubStar SubstitutionSystem Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubtractSides SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde Success SuchThat Sum SumConvergence SummationLayer Sunday SunPosition Sunrise Sunset SuperDagger SuperMinus SupernovaData SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceArea SurfaceColor SurfaceData SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricKey SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Synonyms Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SynthesizeMissingValues SystemDialogInput SystemException SystemGet SystemHelpPath SystemInformation SystemInformationData SystemInstall SystemModel SystemModeler SystemModelExamples SystemModelLinearize SystemModelParametricSimulate SystemModelPlot SystemModelProgressReporting SystemModelReliability SystemModels SystemModelSimulate SystemModelSimulateSensitivity SystemModelSimulationData SystemOpen SystemOptions SystemProcessData SystemProcesses SystemsConnectionsModel SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelLinearity SystemsModelMerge SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemsModelVectorRelativeOrders SystemStub SystemTestTab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TableViewBoxBackground TableViewBoxOptions TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeDrop TakeLargest TakeLargestBy TakeList TakeSmallest TakeSmallestBy TakeWhile Tally Tan Tanh TargetDevice TargetFunctions TargetSystem TargetUnits TaskAbort TaskExecute TaskObject TaskRemove TaskResume Tasks TaskSuspend TaskWait TautologyQ TelegraphProcess TemplateApply TemplateArgBox TemplateBox TemplateBoxOptions TemplateEvaluate TemplateExpression TemplateIf TemplateObject TemplateSequence TemplateSlot TemplateSlotSequence TemplateUnevaluated TemplateVerbatim TemplateWith TemporalData TemporalRegularity Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge TestID TestReport TestReportObject TestResultObject Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCases TextCell TextClipboardType TextContents TextData TextElement TextForm TextGrid TextJustification TextLine TextPacket TextParagraph TextPosition TextRecognize TextSearch TextSearchReport TextSentences TextString TextStructure TextStyle TextTranslation Texture TextureCoordinateFunction TextureCoordinateScaling TextWords Therefore ThermodynamicData ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreadingLayer ThreeJSymbol Threshold Through Throw ThueMorse Thumbnail Thursday Ticks TicksStyle TideData Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint TimeDirection TimeFormat TimeGoal TimelinePlot TimeObject TimeObjectQ Times TimesBy TimeSeries TimeSeriesAggregate TimeSeriesForecast TimeSeriesInsert TimeSeriesInvertibility TimeSeriesMap TimeSeriesMapThread TimeSeriesModel TimeSeriesModelFit TimeSeriesResample TimeSeriesRescale TimeSeriesShift TimeSeriesThread TimeSeriesWindow TimeUsed TimeValue TimeWarpingCorrespondence TimeWarpingDistance TimeZone TimeZoneConvert TimeZoneOffset Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate Today ToDiscreteTimeModel ToEntity ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase Tomorrow ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform ToPolarCoordinates TopologicalSort ToRadicals ToRules ToSphericalCoordinates ToString Total TotalHeight TotalLayer TotalVariationFilter TotalWidth TouchPosition TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TrackingFunction TracyWidomDistribution TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TrainingProgressCheckpointing TrainingProgressFunction TrainingProgressMeasurements TrainingProgressReporting TrainingStoppingCriterion TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationClass TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField TransformedProcess TransformedRegion TransitionDirection TransitionDuration TransitionEffect TransitiveClosureGraph TransitiveReductionGraph Translate TranslationOptions TranslationTransform Transliterate Transparent TransparentColor Transpose TransposeLayer TrapSelection TravelDirections TravelDirectionsData TravelDistance TravelDistanceList TravelMethod TravelTime TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle Triangle TriangleCenter TriangleConstruct TriangleMeasurement TriangleWave TriangularDistribution TriangulateMesh Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean TrimmedVariance TropicalStormData True TrueQ TruncatedDistribution TruncatedPolyhedron TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBoxOptions TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow TunnelData Tuples TuranGraph TuringMachine TuttePolynomial TwoWayRule Typed TypeSpecifierUnateQ Uncompress UnconstrainedParameters Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UnderseaFeatureData UndirectedEdge UndirectedGraph UndirectedGraphQ UndoOptions UndoTrackedVariables Unequal UnequalTo Unevaluated UniformDistribution UniformGraphDistribution UniformPolyhedron UniformSumDistribution Uninstall Union UnionPlus Unique UnitaryMatrixQ UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitSystem UnitTriangle UnitVector UnitVectorLayer UnityDimensions UniverseModelData UniversityData UnixTime Unprotect UnregisterExternalEvaluator UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpdateSearchIndex UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize UpperTriangularMatrixQ Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpTo UpValues URL URLBuild URLDecode URLDispatcher URLDownload URLDownloadSubmit URLEncode URLExecute URLExpand URLFetch URLFetchAsynchronous URLParse URLQueryDecode URLQueryEncode URLRead URLResponseTime URLSave URLSaveAsynchronous URLShorten URLSubmit UseGraphicsRange UserDefinedWavelet Using UsingFrontEnd UtilityFunctionV2Get ValenceErrorHandling ValidationLength ValidationSet Value ValueBox ValueBoxOptions ValueDimensions ValueForm ValuePreprocessingFunction ValueQ Values ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorAround VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorGreater VectorGreaterEqual VectorLess VectorLessEqual VectorMarkers VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerificationTest VerifyConvergence VerifyDerivedKey VerifyDigitalSignature VerifyInterpretation VerifySecurityCertificates VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexContract VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight VertexWeightedGraphQ Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewProjection ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoiceStyleData VoigtDistribution VolcanoData Volume VonMisesDistribution VoronoiMeshWaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WarpingCorrespondence WarpingDistance WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeatherForecastData WebAudioSearch WebElementObject WeberE WebExecute WebImage WebImageSearch WebSearch WebSessionObject WebSessions WebWindowObject Wedge Wednesday WeibullDistribution WeierstrassE1 WeierstrassE2 WeierstrassE3 WeierstrassEta1 WeierstrassEta2 WeierstrassEta3 WeierstrassHalfPeriods WeierstrassHalfPeriodW1 WeierstrassHalfPeriodW2 WeierstrassHalfPeriodW3 WeierstrassInvariantG2 WeierstrassInvariantG3 WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White WhiteNoiseProcess WhitePoint Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WikipediaData WikipediaSearch WilksW WilksWTest WindDirectionData WindingCount WindingPolygon WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowPersistentStyles WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth WindSpeedData WindVectorData WinsorizedMean WinsorizedVariance WishartMatrixDistribution With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult WolframLanguageData Word WordBoundary WordCharacter WordCloud WordCount WordCounts WordData WordDefinition WordFrequency WordFrequencyData WordList WordOrientation WordSearch WordSelectionFunction WordSeparators WordSpacings WordStem WordTranslation WorkingPrecision WrapAround Write WriteLine WriteString WronskianXMLElement XMLObject XMLTemplate Xnor Xor XYZColorYellow Yesterday YuleDissimilarityZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZIPCodeData ZipfDistribution ZoomCenter ZoomFactor ZTest ZTransform$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AllowExternalChannelFunctions $AssertFunction $Assumptions $AsynchronousTask $AudioInputDevices $AudioOutputDevices $BaseDirectory $BatchInput $BatchOutput $BlockchainBase $BoxForms $ByteOrdering $CacheBaseDirectory $Canceled $ChannelBase $CharacterEncoding $CharacterEncodings $CloudBase $CloudConnected $CloudCreditsAvailable $CloudEvaluation $CloudExpressionBase $CloudObjectNameFormat $CloudObjectURLType $CloudRootDirectory $CloudSymbolBase $CloudUserID $CloudUserUUID $CloudVersion $CloudVersionNumber $CloudWolframEngineVersionNumber $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $Cookies $CookieStore $CreationDate $CurrentLink $CurrentTask $CurrentWebSession $DateStringFormat $DefaultAudioInputDevice $DefaultAudioOutputDevice $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultLocalBase $DefaultMailbox $DefaultNetworkInterface $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $EmbedCodeEnvironments $EmbeddableServices $EntityStores $Epilog $EvaluationCloudBase $EvaluationCloudObject $EvaluationEnvironment $ExportFormats $Failed $FinancialDataSource $FontFamilies $FormatType $FrontEnd $FrontEndSession $GeoEntityTypes $GeoLocation $GeoLocationCity $GeoLocationCountry $GeoLocationPrecision $GeoLocationSource $HistoryLength $HomeDirectory $HTMLExportRules $HTTPCookies $HTTPRequest $IgnoreEOF $ImageFormattingWidth $ImagingDevice $ImagingDevices $ImportFormats $IncomingMailSettings $InitialDirectory $Initialization $InitializationContexts $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $InterpreterTypes $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $LocalBase $LocalSymbolBase $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $MobilePhone $ModuleNumber $NetworkConnected $NetworkInterfaces $NetworkLicense $NewMessage $NewSymbol $Notebooks $NoValue $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $Permissions $PermissionsGroupBase $PersistenceBase $PersistencePath $PipeSupported $PlotTheme $Post $Pre $PreferencesDirectory $PreInitialization $PrePrint $PreRead $PrintForms $PrintLiteral $Printout3DPreviewer $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $PublisherID $RandomState $RecursionLimit $RegisteredDeviceClasses $RegisteredUserName $ReleaseNumber $RequesterAddress $RequesterWolframID $RequesterWolframUUID $ResourceSystemBase $RootDirectory $ScheduledTask $ScriptCommandLine $ScriptInputString $SecuredAuthenticationKeyTokens $ServiceCreditsAvailable $Services $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SourceLink $SSHAuthentication $SummaryBoxDataSizeLimit $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemMemory $SystemShell $SystemTimeZone $SystemWordLength $TemplatePath $TemporaryDirectory $TemporaryPrefix $TestFileName $TextStyle $TimedOut $TimeUnit $TimeZone $TimeZoneEntity $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $UnitSystem $Urgent $UserAddOnsDirectory $UserAgentLanguages $UserAgentMachine $UserAgentName $UserAgentOperatingSystem $UserAgentString $UserAgentVersion $UserBaseDirectory $UserDocumentsDirectory $Username $UserName $UserURLBase $Version $VersionNumber $VoiceStyles $WolframID $WolframUUID",contains:[e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("matlab",function(e){var t={relevance:0,contains:[{begin:"('|\\.')+"}]};return{keywords:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell "},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}]},{className:"built_in",begin:/true|false/,relevance:0,starts:t},{begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number",begin:e.C_NUMBER_RE,relevance:0,starts:t},{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|}|\)/,relevance:0,starts:t},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}],starts:t},e.COMMENT("^\\s*\\%\\{\\s*$","^\\s*\\%\\}\\s*$"),e.COMMENT("\\%","$")]}}),We.registerLanguage("maxima",function(e){return{lexemes:"[A-Za-z_%][0-9A-Za-z_%]*",keywords:{keyword:"if then else elseif for thru do while unless step in and or not",literal:"true false unknown inf minf ind und %e %i %pi %phi %gamma",built_in:" abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest",symbol:"_ __ %|0 %%|0"},contains:[{className:"comment",begin:"/\\*",end:"\\*/",contains:["self"]},e.QUOTE_STRING_MODE,{className:"number",relevance:0,variants:[{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b"},{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b",relevance:10},{begin:"\\b(\\.\\d+|\\d+\\.\\d+)\\b"},{begin:"\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b"}]}],illegal:/@/}}),We.registerLanguage("mel",function(e){return{keywords:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",illegal:"</",contains:[e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"[\\$\\%\\@](\\^\\w\\b|#\\w+|[^\\s\\w{]|{\\w+}|\\w+)"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("mercury",function(e){var t=e.COMMENT("%","$"),n=e.inherit(e.APOS_STRING_MODE,{relevance:0}),r=e.inherit(e.QUOTE_STRING_MODE,{relevance:0});r.contains.push({className:"subst",begin:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",relevance:0});return{aliases:["m","moo"],keywords:{keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure",meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing",built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure"},contains:[{className:"built_in",variants:[{begin:"<=>"},{begin:"<=",relevance:0},{begin:"=>",relevance:0},{begin:"/\\\\"},{begin:"\\\\/"}]},{className:"built_in",variants:[{begin:":-\\|--\x3e"},{begin:"=",relevance:0}]},t,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"0'.\\|0[box][0-9a-fA-F]*"},e.NUMBER_MODE,n,r,{begin:/:-/},{begin:/\.$/}]}}),We.registerLanguage("mipsasm",function(e){return{case_insensitive:!0,aliases:["mips"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ",built_in:"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt "},contains:[{className:"keyword",begin:"\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(.hb)?|jr(.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs.[sd]|add.[sd]|alnv.ps|bc1[ft]l?|c.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et]).[sd]|(ceil|floor|round|trunc).[lw].[sd]|cfc1|cvt.d.[lsw]|cvt.l.[dsw]|cvt.ps.s|cvt.s.[dlw]|cvt.s.p[lu]|cvt.w.[dls]|div.[ds]|ldx?c1|luxc1|lwx?c1|madd.[sd]|mfc1|mov[fntz]?.[ds]|msub.[sd]|mth?c1|mul.[ds]|neg.[ds]|nmadd.[ds]|nmsub.[ds]|p[lu][lu].ps|recip.fmt|r?sqrt.[ds]|sdx?c1|sub.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)",end:"\\s"},e.COMMENT("[;#](?!s*$)","$"),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"0x[0-9a-f]+"},{begin:"\\b-?\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^\\s*[0-9]+:"},{begin:"[0-9]+[bf]"}],relevance:0}],illegal:"/"}}),We.registerLanguage("mizar",function(e){return{keywords:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity",contains:[e.COMMENT("::","$")]}}),We.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",n={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:t},r={begin:"->{",end:"}"},a={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,n,a],o=[a,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),r,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return n.contains=o,r.contains=o,{aliases:["pl","pm"],lexemes:/[\w\.]+/,keywords:t,contains:o}}),We.registerLanguage("mojolicious",function(e){return{subLanguage:"xml",contains:[{className:"meta",begin:"^__(END|DATA)__$"},{begin:"^\\s*%{1,2}={0,2}",end:"$",subLanguage:"perl"},{begin:"<%{1,2}={0,2}",end:"={0,1}%>",subLanguage:"perl",excludeBegin:!0,excludeEnd:!0}]}}),We.registerLanguage("monkey",function(e){var t={className:"number",relevance:0,variants:[{begin:"[$][a-fA-F0-9]+"},e.NUMBER_MODE]};return{case_insensitive:!0,keywords:{keyword:"public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import",built_in:"DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI",literal:"true false null and or shl shr mod"},illegal:/\/\*/,contains:[e.COMMENT("#rem","#end"),e.COMMENT("'","$",{relevance:0}),{className:"function",beginKeywords:"function method",end:"[(=:]|$",illegal:/\n/,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"$",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{className:"built_in",begin:"\\b(self|super)\\b"},{className:"meta",begin:"\\s*#",end:"$",keywords:{"meta-keyword":"if else elseif endif end then"}},{className:"meta",begin:"^\\s*strict\\b"},{beginKeywords:"alias",end:"=",contains:[e.UNDERSCORE_TITLE_MODE]},e.QUOTE_STRING_MODE,t]}}),We.registerLanguage("moonscript",function(e){var t={keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",literal:"true false nil",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},a=[e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"built_in",begin:"@__"+e.IDENT_RE},{begin:"@"+e.IDENT_RE},{begin:e.IDENT_RE+"\\\\"+e.IDENT_RE}];r.contains=a;var i=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["moon"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("--","$"),{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,o]},{begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[o]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{className:"name",begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}),We.registerLanguage("n1ql",function(e){return{case_insensitive:!0,contains:[{beginKeywords:"build create index delete drop explain infer|10 insert merge prepare select update upsert|10",end:/;/,endsWithParent:!0,keywords:{keyword:"all alter analyze and any array as asc begin between binary boolean break bucket build by call case cast cluster collate collection commit connect continue correlate cover create database dataset datastore declare decrement delete derived desc describe distinct do drop each element else end every except exclude execute exists explain fetch first flatten for force from function grant group gsi having if ignore ilike in include increment index infer inline inner insert intersect into is join key keys keyspace known last left let letting like limit lsm map mapping matched materialized merge minus namespace nest not number object offset on option or order outer over parse partition password path pool prepare primary private privilege procedure public raw realm reduce rename return returning revoke right role rollback satisfies schema select self semi set show some start statistics string system then to transaction trigger truncate under union unique unknown unnest unset update upsert use user using validate value valued values via view when where while with within work xor",literal:"true false null missing|5",built_in:"array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"symbol",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE],relevance:2},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("nginx",function(e){var t={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},n={endsWithParent:!0,lexemes:"[a-z/_]+",keywords:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[t]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},t]};return{aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:n}],relevance:0}],illegal:"[^\\s\\}]"}}),We.registerLanguage("nimrod",function(e){return{aliases:["nim"],keywords:{keyword:"addr and as asm bind block break case cast const continue converter discard distinct div do elif else end enum except export finally for from generic if import in include interface is isnot iterator let macro method mixin mod nil not notin object of or out proc ptr raise ref return shl shr static template try tuple type using var when while with without xor yield",literal:"shared guarded stdin stdout stderr result true false",built_in:"int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool char string cstring pointer expr stmt void auto any range array openarray varargs seq set clong culong cchar cschar cshort cint csize clonglong cfloat cdouble clongdouble cuchar cushort cuint culonglong cstringarray semistatic"},contains:[{className:"meta",begin:/{\./,end:/\.}/,relevance:10},{className:"string",begin:/[a-zA-Z]\w*"/,end:/"/,contains:[{begin:/""/}]},{className:"string",begin:/([a-zA-Z]\w*)?"""/,end:/"""/},e.QUOTE_STRING_MODE,{className:"type",begin:/\b[A-Z]\w+\b/,relevance:0},{className:"number",relevance:0,variants:[{begin:/\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},{begin:/\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/}]},e.HASH_COMMENT_MODE]}}),We.registerLanguage("nix",function(e){var t={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},n={className:"subst",begin:/\$\{/,end:/}/,keywords:t},r={className:"string",contains:[n],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}]},a=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/\S+/}]}];return n.contains=a,{aliases:["nixos"],keywords:t,contains:a}}),We.registerLanguage("nsis",function(e){var t={className:"variable",begin:/\$+{[\w\.:-]+}/},n={className:"variable",begin:/\$+\w+/,illegal:/\(\){}/},r={className:"variable",begin:/\$+\([\w\^\.:-]+\)/},a={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"},{begin:"`",end:"`"}],illegal:/\n/,contains:[{className:"meta",begin:/\$(\\[nrt]|\$)/},{className:"variable",begin:/\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/},t,n,r]};return{case_insensitive:!1,keywords:{keyword:"Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle",literal:"admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib"},contains:[e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),{className:"function",beginKeywords:"Function PageEx Section SectionGroup",end:"$"},a,{className:"keyword",begin:/\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/},t,n,r,{className:"params",begin:"(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)"},{className:"class",begin:/\w+\:\:\w+/},e.NUMBER_MODE]}}),We.registerLanguage("objectivec",function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],keywords:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},lexemes:t,illegal:"</",contains:[{className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"}]},{className:"meta",begin:"#",end:"$",contains:[{className:"meta-string",variants:[{begin:'"',end:'"'},{begin:"<",end:">"}]}]},{className:"class",begin:"("+n.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:n,lexemes:t,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}),We.registerLanguage("ocaml",function(e){return{aliases:["ml"],keywords:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}}),We.registerLanguage("openscad",function(e){var t={className:"keyword",begin:"\\$(f[asn]|t|vp[rtd]|children)"},n={className:"number",begin:"\\b\\d+(\\.\\d+)?(e-?\\d+)?",relevance:0},r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),a={className:"function",beginKeywords:"module function",end:"\\=|\\{",contains:[{className:"params",begin:"\\(",end:"\\)",contains:["self",n,r,t,{className:"literal",begin:"false|true|PI|undef"}]},e.UNDERSCORE_TITLE_MODE]};return{aliases:["scad"],keywords:{keyword:"function module include use for intersection_for if else \\%",literal:"false true PI undef",built_in:"circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"meta",keywords:{"meta-keyword":"include use"},begin:"include|use <",end:">"},r,t,{begin:"[*!#%]",relevance:0},a]}}),We.registerLanguage("oxygene",function(e){var t="abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained",n=e.COMMENT("{","}",{relevance:0}),r=e.COMMENT("\\(\\*","\\*\\)",{relevance:10}),a={className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},i={className:"string",begin:"(#\\d+)+"},o={className:"function",beginKeywords:"function constructor destructor procedure method",end:"[:;]",keywords:"function constructor|10 destructor|10 procedure|10 method|10",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",keywords:t,contains:[a,i]},n,r]};return{case_insensitive:!0,lexemes:/\.?\w+/,keywords:t,illegal:'("|\\$[G-Zg-z]|\\/\\*|</|=>|->)',contains:[n,r,e.C_LINE_COMMENT_MODE,a,i,e.NUMBER_MODE,o,{className:"class",begin:"=\\bclass\\b",end:"end;",keywords:t,contains:[a,i,n,r,e.C_LINE_COMMENT_MODE,o]}]}}),We.registerLanguage("parser3",function(e){var t=e.COMMENT("{","}",{contains:["self"]});return{subLanguage:"xml",relevance:0,contains:[e.COMMENT("^#","$"),e.COMMENT("\\^rem{","}",{relevance:10,contains:[t]}),{className:"meta",begin:"^@(?:BASE|USE|CLASS|OPTIONS)$",relevance:10},{className:"title",begin:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{className:"variable",begin:"\\$\\{?[\\w\\-\\.\\:]+\\}?"},{className:"keyword",begin:"\\^[\\w\\-\\.\\:]+"},{className:"number",begin:"\\^#[0-9a-fA-F]+"},e.C_NUMBER_MODE]}}),We.registerLanguage("pf",function(e){return{aliases:["pf.conf"],lexemes:/[a-z0-9_<>-]+/,keywords:{built_in:"block match pass load anchor|5 antispoof|10 set table",keyword:"in out log quick on rdomain inet inet6 proto from port os to routeallow-opts divert-packet divert-reply divert-to flags group icmp-typeicmp6-type label once probability recieved-on rtable prio queuetos tag tagged user keep fragment for os dropaf-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robinsource-hash static-portdup-to reply-to route-toparent bandwidth default min max qlimitblock-policy debug fingerprints hostid limit loginterface optimizationreassemble ruleset-optimization basic none profile skip state-defaultsstate-policy timeoutconst counters persistno modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppysource-track global rule max-src-nodes max-src-states max-src-connmax-src-conn-rate overload flushscrub|5 max-mss min-ttl no-df|10 random-id",literal:"all any no-route self urpf-failed egress|5 unknown"},contains:[e.HASH_COMMENT_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"variable",begin:/\$[\w\d#@][\w\d_]*/},{className:"variable",begin:/<(?!\/)/,end:/>/}]}}),We.registerLanguage("pgsql",function(e){var t=e.COMMENT("--","$"),n="BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ",r=n.trim().split(" ").map(function(e){return e.split("|")[0]}).join("|"),a="ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAPLEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILYINET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST ".trim().split(" ").map(function(e){return e.split("|")[0]}).join("|");return{aliases:["postgres","postgresql"],case_insensitive:!0,keywords:{keyword:"ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ",built_in:"CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED "},illegal:/:==|\W\s*\(\*|(^|\s)\$[a-z]|{{|[a-z]:\s*$|\.\.\.|TO:|DO:/,contains:[{className:"keyword",variants:[{begin:/\bTEXT\s*SEARCH\b/},{begin:/\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/},{begin:/\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/},{begin:/\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/},{begin:/\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/},{begin:/\bNULLS\s+(FIRST|LAST)\b/},{begin:/\bEVENT\s+TRIGGER\b/},{begin:/\b(MAPPING|OR)\s+REPLACE\b/},{begin:/\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/},{begin:/\b(SHARE|EXCLUSIVE)\s+MODE\b/},{begin:/\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/},{begin:/\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/},{begin:/\bPRESERVE\s+ROWS\b/},{begin:/\bDISCARD\s+PLANS\b/},{begin:/\bREFERENCING\s+(OLD|NEW)\b/},{begin:/\bSKIP\s+LOCKED\b/},{begin:/\bGROUPING\s+SETS\b/},{begin:/\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/},{begin:/\b(WITH|WITHOUT)\s+HOLD\b/},{begin:/\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/},{begin:/\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/},{begin:/\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/},{begin:/\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/},{begin:/\bIS\s+(NOT\s+)?UNKNOWN\b/},{begin:/\bSECURITY\s+LABEL\b/},{begin:/\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/},{begin:/\bWITH\s+(NO\s+)?DATA\b/},{begin:/\b(FOREIGN|SET)\s+DATA\b/},{begin:/\bSET\s+(CATALOG|CONSTRAINTS)\b/},{begin:/\b(WITH|FOR)\s+ORDINALITY\b/},{begin:/\bIS\s+(NOT\s+)?DOCUMENT\b/},{begin:/\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/},{begin:/\b(STRIP|PRESERVE)\s+WHITESPACE\b/},{begin:/\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/},{begin:/\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/},{begin:/\bAT\s+TIME\s+ZONE\b/},{begin:/\bGRANTED\s+BY\b/},{begin:/\bRETURN\s+(QUERY|NEXT)\b/},{begin:/\b(ATTACH|DETACH)\s+PARTITION\b/},{begin:/\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/},{begin:/\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/},{begin:/\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/}]},{begin:/\b(FORMAT|FAMILY|VERSION)\s*\(/},{begin:/\bINCLUDE\s*\(/,keywords:"INCLUDE"},{begin:/\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/},{begin:/\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/},{begin:/\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,relevance:10},{begin:/\bEXTRACT\s*\(/,end:/\bFROM\b/,returnEnd:!0,keywords:{type:"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR"}},{begin:/\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,keywords:{keyword:"NAME"}},{begin:/\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,keywords:{keyword:"DOCUMENT CONTENT"}},{beginKeywords:"CACHE INCREMENT MAXVALUE MINVALUE",end:e.C_NUMBER_RE,returnEnd:!0,keywords:"BY CACHE INCREMENT MAXVALUE MINVALUE"},{className:"type",begin:/\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/},{className:"type",begin:/\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/},{begin:/\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/,keywords:{keyword:"RETURNS",type:"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER"}},{begin:"\\b("+a+")\\s*\\("},{begin:"\\.("+r+")\\b"},{begin:"\\b("+r+")\\s+PATH\\b",keywords:{keyword:"PATH",type:n.replace("PATH ","")}},{className:"type",begin:"\\b("+r+")\\b"},{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:"(e|E|u&|U&)'",end:"'",contains:[{begin:"\\\\."}],relevance:10},{begin:"\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$",endSameAsBegin:!0,contains:[{subLanguage:["pgsql","perl","python","tcl","r","lua","java","php","ruby","bash","scheme","xml","json"],endsWithParent:!0}]},{begin:'"',end:'"',contains:[{begin:'""'}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"meta",variants:[{begin:"%(ROW)?TYPE",relevance:10},{begin:"\\$\\d+"},{begin:"^#\\w",end:"$"}]},{className:"symbol",begin:"<<\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\s*>>",relevance:10}]}}),We.registerLanguage("php",function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},r={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,r,a]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},r,a]}}),We.registerLanguage("plaintext",function(e){return{disableAutodetect:!0}}),We.registerLanguage("pony",function(e){return{keywords:{keyword:"actor addressof and as be break class compile_error compile_intrinsic consume continue delegate digestof do else elseif embed end error for fun if ifdef in interface is isnt lambda let match new not object or primitive recover repeat return struct then trait try type until use var where while with xor",meta:"iso val tag trn box ref",literal:"this false true"},contains:[{className:"type",begin:"\\b_?[A-Z][\\w]*",relevance:0},{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},{begin:e.IDENT_RE+"'",relevance:0},{className:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("powershell",function(e){var t={begin:"`[\\s\\S]",relevance:0},n={className:"variable",variants:[{begin:/\$[\w\d][\w\d_:]*/}]},r={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[t,n,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},a=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]});return{aliases:["ps","ps1"],lexemes:/-?[A-z\.\-]+/,case_insensitive:!0,keywords:{keyword:"if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catchValidateNoCircleInNodeResources ValidateNodeExclusiveResources ValidateNodeManager ValidateNodeResources ValidateNodeResourceSource ValidateNoNameNodeResources ThrowError IsHiddenResourceIsPatternMatched ",built_in:"Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning Add-MDTPersistentDrive Disable-MDTMonitorService Enable-MDTMonitorService Get-MDTDeploymentShareStatistics Get-MDTMonitorData Get-MDTOperatingSystemCatalog Get-MDTPersistentDrive Import-MDTApplication Import-MDTDriver Import-MDTOperatingSystem Import-MDTPackage Import-MDTTaskSequence New-MDTDatabase Remove-MDTMonitorData Remove-MDTPersistentDrive Restore-MDTPersistentDrive Set-MDTMonitorData Test-MDTDeploymentShare Test-MDTMonitorData Update-MDTDatabaseSchema Update-MDTDeploymentShare Update-MDTLinkedDS Update-MDTMedia Add-VamtProductKey Export-VamtData Find-VamtManagedMachine Get-VamtConfirmationId Get-VamtProduct Get-VamtProductKey Import-VamtData Initialize-VamtData Install-VamtConfirmationId Install-VamtProductActivation Install-VamtProductKey Update-VamtProduct Add-CIDatastore Add-KeyManagementServer Add-NodeKeys Add-NsxDynamicCriteria Add-NsxDynamicMemberSet Add-NsxEdgeInterfaceAddress Add-NsxFirewallExclusionListMember Add-NsxFirewallRuleMember Add-NsxIpSetMember Add-NsxLicense Add-NsxLoadBalancerPoolMember Add-NsxLoadBalancerVip Add-NsxSecondaryManager Add-NsxSecurityGroupMember Add-NsxSecurityPolicyRule Add-NsxSecurityPolicyRuleGroup Add-NsxSecurityPolicyRuleService Add-NsxServiceGroupMember Add-NsxTransportZoneMember Add-PassthroughDevice Add-VDSwitchPhysicalNetworkAdapter Add-VDSwitchVMHost Add-VMHost Add-VMHostNtpServer Add-VirtualSwitchPhysicalNetworkAdapter Add-XmlElement Add-vRACustomForm Add-vRAPrincipalToTenantRole Add-vRAReservationNetwork Add-vRAReservationStorage Clear-NsxEdgeInterface Clear-NsxManagerTimeSettings Compress-Archive Connect-CIServer Connect-CisServer Connect-HCXServer Connect-NIServer Connect-NsxLogicalSwitch Connect-NsxServer Connect-NsxtServer Connect-SrmServer Connect-VIServer Connect-Vmc Connect-vRAServer Connect-vRNIServer ConvertFrom-Markdown ConvertTo-MOFInstance Copy-DatastoreItem Copy-HardDisk Copy-NsxEdge Copy-VDisk Copy-VMGuestFile Debug-Runspace Disable-NsxEdgeSsh Disable-RunspaceDebug Disable-vRNIDataSource Disconnect-CIServer Disconnect-CisServer Disconnect-HCXServer Disconnect-NsxLogicalSwitch Disconnect-NsxServer Disconnect-NsxtServer Disconnect-SrmServer Disconnect-VIServer Disconnect-Vmc Disconnect-vRAServer Disconnect-vRNIServer Dismount-Tools Enable-NsxEdgeSsh Enable-RunspaceDebug Enable-vRNIDataSource Expand-Archive Export-NsxObject Export-SpbmStoragePolicy Export-VApp Export-VDPortGroup Export-VDSwitch Export-VMHostProfile Export-vRAIcon Export-vRAPackage Find-Command Find-DscResource Find-Module Find-NsxWhereVMUsed Find-Package Find-PackageProvider Find-RoleCapability Find-Script Format-Hex Format-VMHostDiskPartition Format-XML Generate-VersionInfo Get-AdvancedSetting Get-AlarmAction Get-AlarmActionTrigger Get-AlarmDefinition Get-Annotation Get-CDDrive Get-CIAccessControlRule Get-CIDatastore Get-CINetworkAdapter Get-CIRole Get-CIUser Get-CIVApp Get-CIVAppNetwork Get-CIVAppStartRule Get-CIVAppTemplate Get-CIVM Get-CIVMTemplate Get-CIView Get-Catalog Get-CisCommand Get-CisService Get-CloudCommand Get-Cluster Get-CompatibleVersionAddtionaPropertiesStr Get-ComplexResourceQualifier Get-ConfigurationErrorCount Get-ContentLibraryItem Get-CustomAttribute Get-DSCResourceModules Get-Datacenter Get-Datastore Get-DatastoreCluster Get-DrsClusterGroup Get-DrsRecommendation Get-DrsRule Get-DrsVMHostRule Get-DscResource Get-EdgeGateway Get-EncryptedPassword Get-ErrorReport Get-EsxCli Get-EsxTop Get-ExternalNetwork Get-FileHash Get-FloppyDrive Get-Folder Get-HAPrimaryVMHost Get-HCXAppliance Get-HCXApplianceCompute Get-HCXApplianceDVS Get-HCXApplianceDatastore Get-HCXApplianceNetwork Get-HCXContainer Get-HCXDatastore Get-HCXGateway Get-HCXInterconnectStatus Get-HCXJob Get-HCXMigration Get-HCXNetwork Get-HCXNetworkExtension Get-HCXReplication Get-HCXReplicationSnapshot Get-HCXService Get-HCXSite Get-HCXSitePairing Get-HCXVM Get-HardDisk Get-IScsiHbaTarget Get-InnerMostErrorRecord Get-InstallPath Get-InstalledModule Get-InstalledScript Get-Inventory Get-ItemPropertyValue Get-KeyManagementServer Get-KmipClientCertificate Get-KmsCluster Get-Log Get-LogType Get-MarkdownOption Get-Media Get-MofInstanceName Get-MofInstanceText Get-NetworkAdapter Get-NetworkPool Get-NfsUser Get-NicTeamingPolicy Get-NsxApplicableMember Get-NsxApplicableSecurityAction Get-NsxBackingDVSwitch Get-NsxBackingPortGroup Get-NsxCliDfwAddrSet Get-NsxCliDfwFilter Get-NsxCliDfwRule Get-NsxClusterStatus Get-NsxController Get-NsxDynamicCriteria Get-NsxDynamicMemberSet Get-NsxEdge Get-NsxEdgeBgp Get-NsxEdgeBgpNeighbour Get-NsxEdgeCertificate Get-NsxEdgeCsr Get-NsxEdgeFirewall Get-NsxEdgeFirewallRule Get-NsxEdgeInterface Get-NsxEdgeInterfaceAddress Get-NsxEdgeNat Get-NsxEdgeNatRule Get-NsxEdgeOspf Get-NsxEdgeOspfArea Get-NsxEdgeOspfInterface Get-NsxEdgePrefix Get-NsxEdgeRedistributionRule Get-NsxEdgeRouting Get-NsxEdgeStaticRoute Get-NsxEdgeSubInterface Get-NsxFirewallExclusionListMember Get-NsxFirewallGlobalConfiguration Get-NsxFirewallPublishStatus Get-NsxFirewallRule Get-NsxFirewallRuleMember Get-NsxFirewallSavedConfiguration Get-NsxFirewallSection Get-NsxFirewallThreshold Get-NsxIpPool Get-NsxIpSet Get-NsxLicense Get-NsxLoadBalancer Get-NsxLoadBalancerApplicationProfile Get-NsxLoadBalancerApplicationRule Get-NsxLoadBalancerMonitor Get-NsxLoadBalancerPool Get-NsxLoadBalancerPoolMember Get-NsxLoadBalancerStats Get-NsxLoadBalancerVip Get-NsxLogicalRouter Get-NsxLogicalRouterBgp Get-NsxLogicalRouterBgpNeighbour Get-NsxLogicalRouterBridge Get-NsxLogicalRouterBridging Get-NsxLogicalRouterInterface Get-NsxLogicalRouterOspf Get-NsxLogicalRouterOspfArea Get-NsxLogicalRouterOspfInterface Get-NsxLogicalRouterPrefix Get-NsxLogicalRouterRedistributionRule Get-NsxLogicalRouterRouting Get-NsxLogicalRouterStaticRoute Get-NsxLogicalSwitch Get-NsxMacSet Get-NsxManagerBackup Get-NsxManagerCertificate Get-NsxManagerComponentSummary Get-NsxManagerNetwork Get-NsxManagerRole Get-NsxManagerSsoConfig Get-NsxManagerSyncStatus Get-NsxManagerSyslogServer Get-NsxManagerSystemSummary Get-NsxManagerTimeSettings Get-NsxManagerVcenterConfig Get-NsxSecondaryManager Get-NsxSecurityGroup Get-NsxSecurityGroupEffectiveIpAddress Get-NsxSecurityGroupEffectiveMacAddress Get-NsxSecurityGroupEffectiveMember Get-NsxSecurityGroupEffectiveVirtualMachine Get-NsxSecurityGroupEffectiveVnic Get-NsxSecurityGroupMemberTypes Get-NsxSecurityPolicy Get-NsxSecurityPolicyHighestUsedPrecedence Get-NsxSecurityPolicyRule Get-NsxSecurityTag Get-NsxSecurityTagAssignment Get-NsxSegmentIdRange Get-NsxService Get-NsxServiceDefinition Get-NsxServiceGroup Get-NsxServiceGroupMember Get-NsxServiceProfile Get-NsxSpoofguardNic Get-NsxSpoofguardPolicy Get-NsxSslVpn Get-NsxSslVpnAuthServer Get-NsxSslVpnClientInstallationPackage Get-NsxSslVpnIpPool Get-NsxSslVpnPrivateNetwork Get-NsxSslVpnUser Get-NsxTransportZone Get-NsxUserRole Get-NsxVdsContext Get-NsxtPolicyService Get-NsxtService Get-OSCustomizationNicMapping Get-OSCustomizationSpec Get-Org Get-OrgNetwork Get-OrgVdc Get-OrgVdcNetwork Get-OvfConfiguration Get-PSCurrentConfigurationNode Get-PSDefaultConfigurationDocument Get-PSMetaConfigDocumentInstVersionInfo Get-PSMetaConfigurationProcessed Get-PSReadLineKeyHandler Get-PSReadLineOption Get-PSRepository Get-PSTopConfigurationName Get-PSVersion Get-Package Get-PackageProvider Get-PackageSource Get-PassthroughDevice Get-PositionInfo Get-PowerCLICommunity Get-PowerCLIConfiguration Get-PowerCLIHelp Get-PowerCLIVersion Get-PowerNsxVersion Get-ProviderVdc Get-PublicKeyFromFile Get-PublicKeyFromStore Get-ResourcePool Get-Runspace Get-RunspaceDebug Get-ScsiController Get-ScsiLun Get-ScsiLunPath Get-SecurityInfo Get-SecurityPolicy Get-Snapshot Get-SpbmCapability Get-SpbmCompatibleStorage Get-SpbmEntityConfiguration Get-SpbmFaultDomain Get-SpbmPointInTimeReplica Get-SpbmReplicationGroup Get-SpbmReplicationPair Get-SpbmStoragePolicy Get-Stat Get-StatInterval Get-StatType Get-Tag Get-TagAssignment Get-TagCategory Get-Task Get-Template Get-TimeZone Get-Uptime Get-UsbDevice Get-VAIOFilter Get-VApp Get-VDBlockedPolicy Get-VDPort Get-VDPortgroup Get-VDPortgroupOverridePolicy Get-VDSecurityPolicy Get-VDSwitch Get-VDSwitchPrivateVlan Get-VDTrafficShapingPolicy Get-VDUplinkLacpPolicy Get-VDUplinkTeamingPolicy Get-VDisk Get-VIAccount Get-VICommand Get-VICredentialStoreItem Get-VIEvent Get-VIObjectByVIView Get-VIPermission Get-VIPrivilege Get-VIProperty Get-VIRole Get-VM Get-VMGuest Get-VMHost Get-VMHostAccount Get-VMHostAdvancedConfiguration Get-VMHostAuthentication Get-VMHostAvailableTimeZone Get-VMHostDiagnosticPartition Get-VMHostDisk Get-VMHostDiskPartition Get-VMHostFirewallDefaultPolicy Get-VMHostFirewallException Get-VMHostFirmware Get-VMHostHardware Get-VMHostHba Get-VMHostModule Get-VMHostNetwork Get-VMHostNetworkAdapter Get-VMHostNtpServer Get-VMHostPatch Get-VMHostPciDevice Get-VMHostProfile Get-VMHostProfileImageCacheConfiguration Get-VMHostProfileRequiredInput Get-VMHostProfileStorageDeviceConfiguration Get-VMHostProfileUserConfiguration Get-VMHostProfileVmPortGroupConfiguration Get-VMHostRoute Get-VMHostService Get-VMHostSnmp Get-VMHostStartPolicy Get-VMHostStorage Get-VMHostSysLogServer Get-VMQuestion Get-VMResourceConfiguration Get-VMStartPolicy Get-VTpm Get-VTpmCSR Get-VTpmCertificate Get-VasaProvider Get-VasaStorageArray Get-View Get-VirtualPortGroup Get-VirtualSwitch Get-VmcSddcNetworkService Get-VmcService Get-VsanClusterConfiguration Get-VsanComponent Get-VsanDisk Get-VsanDiskGroup Get-VsanEvacuationPlan Get-VsanFaultDomain Get-VsanIscsiInitiatorGroup Get-VsanIscsiInitiatorGroupTargetAssociation Get-VsanIscsiLun Get-VsanIscsiTarget Get-VsanObject Get-VsanResyncingComponent Get-VsanRuntimeInfo Get-VsanSpaceUsage Get-VsanStat Get-VsanView Get-vRAApplianceServiceStatus Get-vRAAuthorizationRole Get-vRABlueprint Get-vRABusinessGroup Get-vRACatalogItem Get-vRACatalogItemRequestTemplate Get-vRACatalogPrincipal Get-vRAComponentRegistryService Get-vRAComponentRegistryServiceEndpoint Get-vRAComponentRegistryServiceStatus Get-vRAContent Get-vRAContentData Get-vRAContentType Get-vRACustomForm Get-vRAEntitledCatalogItem Get-vRAEntitledService Get-vRAEntitlement Get-vRAExternalNetworkProfile Get-vRAGroupPrincipal Get-vRAIcon Get-vRANATNetworkProfile Get-vRANetworkProfileIPAddressList Get-vRANetworkProfileIPRangeSummary Get-vRAPackage Get-vRAPackageContent Get-vRAPropertyDefinition Get-vRAPropertyGroup Get-vRARequest Get-vRARequestDetail Get-vRAReservation Get-vRAReservationComputeResource Get-vRAReservationComputeResourceMemory Get-vRAReservationComputeResourceNetwork Get-vRAReservationComputeResourceResourcePool Get-vRAReservationComputeResourceStorage Get-vRAReservationPolicy Get-vRAReservationTemplate Get-vRAReservationType Get-vRAResource Get-vRAResourceAction Get-vRAResourceActionRequestTemplate Get-vRAResourceMetric Get-vRAResourceOperation Get-vRAResourceType Get-vRARoutedNetworkProfile Get-vRAService Get-vRAServiceBlueprint Get-vRASourceMachine Get-vRAStorageReservationPolicy Get-vRATenant Get-vRATenantDirectory Get-vRATenantDirectoryStatus Get-vRATenantRole Get-vRAUserPrincipal Get-vRAUserPrincipalGroupMembership Get-vRAVersion Get-vRNIAPIVersion Get-vRNIApplication Get-vRNIApplicationTier Get-vRNIDataSource Get-vRNIDataSourceSNMPConfig Get-vRNIDatastore Get-vRNIDistributedSwitch Get-vRNIDistributedSwitchPortGroup Get-vRNIEntity Get-vRNIEntityName Get-vRNIFirewallRule Get-vRNIFlow Get-vRNIHost Get-vRNIHostVMKNic Get-vRNIIPSet Get-vRNIL2Network Get-vRNINSXManager Get-vRNINodes Get-vRNIProblem Get-vRNIRecommendedRules Get-vRNIRecommendedRulesNsxBundle Get-vRNISecurityGroup Get-vRNISecurityTag Get-vRNIService Get-vRNIServiceGroup Get-vRNIVM Get-vRNIVMvNIC Get-vRNIvCenter Get-vRNIvCenterCluster Get-vRNIvCenterDatacenter Get-vRNIvCenterFolder Grant-NsxSpoofguardNicApproval Import-CIVApp Import-CIVAppTemplate Import-NsxObject Import-PackageProvider Import-PowerShellDataFile Import-SpbmStoragePolicy Import-VApp Import-VMHostProfile Import-vRAContentData Import-vRAIcon Import-vRAPackage Initialize-ConfigurationRuntimeState Install-Module Install-NsxCluster Install-Package Install-PackageProvider Install-Script Install-VMHostPatch Invoke-DrsRecommendation Invoke-NsxCli Invoke-NsxClusterResolveAll Invoke-NsxManagerSync Invoke-NsxRestMethod Invoke-NsxWebRequest Invoke-VMHostProfile Invoke-VMScript Invoke-XpathQuery Invoke-vRADataCollection Invoke-vRARestMethod Invoke-vRATenantDirectorySync Invoke-vRNIRestMethod Join-String Mount-Tools Move-Cluster Move-Datacenter Move-Datastore Move-Folder Move-HardDisk Move-Inventory Move-NsxSecurityPolicyRule Move-ResourcePool Move-Template Move-VApp Move-VDisk Move-VM Move-VMHost New-AdvancedSetting New-AlarmAction New-AlarmActionTrigger New-CDDrive New-CIAccessControlRule New-CIVApp New-CIVAppNetwork New-CIVAppTemplate New-CIVM New-Cluster New-CustomAttribute New-Datacenter New-Datastore New-DatastoreCluster New-DatastoreDrive New-DrsClusterGroup New-DrsRule New-DrsVMHostRule New-DscChecksum New-FloppyDrive New-Folder New-Guid New-HCXAppliance New-HCXMigration New-HCXNetworkExtension New-HCXNetworkMapping New-HCXReplication New-HCXSitePairing New-HCXStaticRoute New-HardDisk New-IScsiHbaTarget New-KmipClientCertificate New-NetworkAdapter New-NfsUser New-NsxAddressSpec New-NsxClusterVxlanConfig New-NsxController New-NsxDynamicCriteriaSpec New-NsxEdge New-NsxEdgeBgpNeighbour New-NsxEdgeCsr New-NsxEdgeFirewallRule New-NsxEdgeInterfaceSpec New-NsxEdgeNatRule New-NsxEdgeOspfArea New-NsxEdgeOspfInterface New-NsxEdgePrefix New-NsxEdgeRedistributionRule New-NsxEdgeSelfSignedCertificate New-NsxEdgeStaticRoute New-NsxEdgeSubInterface New-NsxEdgeSubInterfaceSpec New-NsxFirewallRule New-NsxFirewallSavedConfiguration New-NsxFirewallSection New-NsxIpPool New-NsxIpSet New-NsxLoadBalancerApplicationProfile New-NsxLoadBalancerApplicationRule New-NsxLoadBalancerMemberSpec New-NsxLoadBalancerMonitor New-NsxLoadBalancerPool New-NsxLogicalRouter New-NsxLogicalRouterBgpNeighbour New-NsxLogicalRouterBridge New-NsxLogicalRouterInterface New-NsxLogicalRouterInterfaceSpec New-NsxLogicalRouterOspfArea New-NsxLogicalRouterOspfInterface New-NsxLogicalRouterPrefix New-NsxLogicalRouterRedistributionRule New-NsxLogicalRouterStaticRoute New-NsxLogicalSwitch New-NsxMacSet New-NsxManager New-NsxSecurityGroup New-NsxSecurityPolicy New-NsxSecurityPolicyAssignment New-NsxSecurityPolicyFirewallRuleSpec New-NsxSecurityPolicyGuestIntrospectionSpec New-NsxSecurityPolicyNetworkIntrospectionSpec New-NsxSecurityTag New-NsxSecurityTagAssignment New-NsxSegmentIdRange New-NsxService New-NsxServiceGroup New-NsxSpoofguardPolicy New-NsxSslVpnAuthServer New-NsxSslVpnClientInstallationPackage New-NsxSslVpnIpPool New-NsxSslVpnPrivateNetwork New-NsxSslVpnUser New-NsxTransportZone New-NsxVdsContext New-OSCustomizationNicMapping New-OSCustomizationSpec New-Org New-OrgNetwork New-OrgVdc New-OrgVdcNetwork New-ResourcePool New-ScriptFileInfo New-ScsiController New-Snapshot New-SpbmRule New-SpbmRuleSet New-SpbmStoragePolicy New-StatInterval New-Tag New-TagAssignment New-TagCategory New-Template New-TemporaryFile New-VAIOFilter New-VApp New-VDPortgroup New-VDSwitch New-VDSwitchPrivateVlan New-VDisk New-VICredentialStoreItem New-VIInventoryDrive New-VIPermission New-VIProperty New-VIRole New-VISamlSecurityContext New-VM New-VMHostAccount New-VMHostNetworkAdapter New-VMHostProfile New-VMHostProfileVmPortGroupConfiguration New-VMHostRoute New-VTpm New-VasaProvider New-VcsOAuthSecurityContext New-VirtualPortGroup New-VirtualSwitch New-VsanDisk New-VsanDiskGroup New-VsanFaultDomain New-VsanIscsiInitiatorGroup New-VsanIscsiInitiatorGroupTargetAssociation New-VsanIscsiLun New-VsanIscsiTarget New-vRABusinessGroup New-vRAEntitlement New-vRAExternalNetworkProfile New-vRAGroupPrincipal New-vRANATNetworkProfile New-vRANetworkProfileIPRangeDefinition New-vRAPackage New-vRAPropertyDefinition New-vRAPropertyGroup New-vRAReservation New-vRAReservationNetworkDefinition New-vRAReservationPolicy New-vRAReservationStorageDefinition New-vRARoutedNetworkProfile New-vRAService New-vRAStorageReservationPolicy New-vRATenant New-vRATenantDirectory New-vRAUserPrincipal New-vRNIApplication New-vRNIApplicationTier New-vRNIDataSource Open-VMConsoleWindow Publish-Module Publish-NsxSpoofguardPolicy Publish-Script Register-PSRepository Register-PackageSource Remove-AdvancedSetting Remove-AlarmAction Remove-AlarmActionTrigger Remove-Alias Remove-CDDrive Remove-CIAccessControlRule Remove-CIVApp Remove-CIVAppNetwork Remove-CIVAppTemplate Remove-Cluster Remove-CustomAttribute Remove-Datacenter Remove-Datastore Remove-DatastoreCluster Remove-DrsClusterGroup Remove-DrsRule Remove-DrsVMHostRule Remove-FloppyDrive Remove-Folder Remove-HCXAppliance Remove-HCXNetworkExtension Remove-HCXReplication Remove-HCXSitePairing Remove-HardDisk Remove-IScsiHbaTarget Remove-Inventory Remove-KeyManagementServer Remove-NetworkAdapter Remove-NfsUser Remove-NsxCluster Remove-NsxClusterVxlanConfig Remove-NsxController Remove-NsxDynamicCriteria Remove-NsxDynamicMemberSet Remove-NsxEdge Remove-NsxEdgeBgpNeighbour Remove-NsxEdgeCertificate Remove-NsxEdgeCsr Remove-NsxEdgeFirewallRule Remove-NsxEdgeInterfaceAddress Remove-NsxEdgeNatRule Remove-NsxEdgeOspfArea Remove-NsxEdgeOspfInterface Remove-NsxEdgePrefix Remove-NsxEdgeRedistributionRule Remove-NsxEdgeStaticRoute Remove-NsxEdgeSubInterface Remove-NsxFirewallExclusionListMember Remove-NsxFirewallRule Remove-NsxFirewallRuleMember Remove-NsxFirewallSavedConfiguration Remove-NsxFirewallSection Remove-NsxIpPool Remove-NsxIpSet Remove-NsxIpSetMember Remove-NsxLoadBalancerApplicationProfile Remove-NsxLoadBalancerMonitor Remove-NsxLoadBalancerPool Remove-NsxLoadBalancerPoolMember Remove-NsxLoadBalancerVip Remove-NsxLogicalRouter Remove-NsxLogicalRouterBgpNeighbour Remove-NsxLogicalRouterBridge Remove-NsxLogicalRouterInterface Remove-NsxLogicalRouterOspfArea Remove-NsxLogicalRouterOspfInterface Remove-NsxLogicalRouterPrefix Remove-NsxLogicalRouterRedistributionRule Remove-NsxLogicalRouterStaticRoute Remove-NsxLogicalSwitch Remove-NsxMacSet Remove-NsxSecondaryManager Remove-NsxSecurityGroup Remove-NsxSecurityGroupMember Remove-NsxSecurityPolicy Remove-NsxSecurityPolicyAssignment Remove-NsxSecurityPolicyRule Remove-NsxSecurityPolicyRuleGroup Remove-NsxSecurityPolicyRuleService Remove-NsxSecurityTag Remove-NsxSecurityTagAssignment Remove-NsxSegmentIdRange Remove-NsxService Remove-NsxServiceGroup Remove-NsxSpoofguardPolicy Remove-NsxSslVpnClientInstallationPackage Remove-NsxSslVpnIpPool Remove-NsxSslVpnPrivateNetwork Remove-NsxSslVpnUser Remove-NsxTransportZone Remove-NsxTransportZoneMember Remove-NsxVdsContext Remove-OSCustomizationNicMapping Remove-OSCustomizationSpec Remove-Org Remove-OrgNetwork Remove-OrgVdc Remove-OrgVdcNetwork Remove-PSReadLineKeyHandler Remove-PassthroughDevice Remove-ResourcePool Remove-Snapshot Remove-SpbmStoragePolicy Remove-StatInterval Remove-Tag Remove-TagAssignment Remove-TagCategory Remove-Template Remove-UsbDevice Remove-VAIOFilter Remove-VApp Remove-VDPortGroup Remove-VDSwitch Remove-VDSwitchPhysicalNetworkAdapter Remove-VDSwitchPrivateVlan Remove-VDSwitchVMHost Remove-VDisk Remove-VICredentialStoreItem Remove-VIPermission Remove-VIProperty Remove-VIRole Remove-VM Remove-VMHost Remove-VMHostAccount Remove-VMHostNetworkAdapter Remove-VMHostNtpServer Remove-VMHostProfile Remove-VMHostProfileVmPortGroupConfiguration Remove-VMHostRoute Remove-VTpm Remove-VasaProvider Remove-VirtualPortGroup Remove-VirtualSwitch Remove-VirtualSwitchPhysicalNetworkAdapter Remove-VsanDisk Remove-VsanDiskGroup Remove-VsanFaultDomain Remove-VsanIscsiInitiatorGroup Remove-VsanIscsiInitiatorGroupTargetAssociation Remove-VsanIscsiLun Remove-VsanIscsiTarget Remove-vRABusinessGroup Remove-vRACustomForm Remove-vRAExternalNetworkProfile Remove-vRAGroupPrincipal Remove-vRAIcon Remove-vRANATNetworkProfile Remove-vRAPackage Remove-vRAPrincipalFromTenantRole Remove-vRAPropertyDefinition Remove-vRAPropertyGroup Remove-vRAReservation Remove-vRAReservationNetwork Remove-vRAReservationPolicy Remove-vRAReservationStorage Remove-vRARoutedNetworkProfile Remove-vRAService Remove-vRAStorageReservationPolicy Remove-vRATenant Remove-vRATenantDirectory Remove-vRAUserPrincipal Remove-vRNIApplication Remove-vRNIApplicationTier Remove-vRNIDataSource Repair-NsxEdge Repair-VsanObject Request-vRACatalogItem Request-vRAResourceAction Restart-CIVApp Restart-CIVAppGuest Restart-CIVM Restart-CIVMGuest Restart-VM Restart-VMGuest Restart-VMHost Restart-VMHostService Resume-HCXReplication Revoke-NsxSpoofguardNicApproval Save-Module Save-Package Save-Script Search-Cloud Set-AdvancedSetting Set-AlarmDefinition Set-Annotation Set-CDDrive Set-CIAccessControlRule Set-CINetworkAdapter Set-CIVApp Set-CIVAppNetwork Set-CIVAppStartRule Set-CIVAppTemplate Set-Cluster Set-CustomAttribute Set-Datacenter Set-Datastore Set-DatastoreCluster Set-DrsClusterGroup Set-DrsRule Set-DrsVMHostRule Set-FloppyDrive Set-Folder Set-HCXAppliance Set-HCXMigration Set-HCXReplication Set-HardDisk Set-IScsiHbaTarget Set-KeyManagementServer Set-KmsCluster Set-MarkdownOption Set-NetworkAdapter Set-NfsUser Set-NicTeamingPolicy Set-NodeExclusiveResources Set-NodeManager Set-NodeResourceSource Set-NodeResources Set-NsxEdge Set-NsxEdgeBgp Set-NsxEdgeFirewall Set-NsxEdgeInterface Set-NsxEdgeNat Set-NsxEdgeOspf Set-NsxEdgeRouting Set-NsxFirewallGlobalConfiguration Set-NsxFirewallRule Set-NsxFirewallSavedConfiguration Set-NsxFirewallThreshold Set-NsxLoadBalancer Set-NsxLoadBalancerPoolMember Set-NsxLogicalRouter Set-NsxLogicalRouterBgp Set-NsxLogicalRouterBridging Set-NsxLogicalRouterInterface Set-NsxLogicalRouterOspf Set-NsxLogicalRouterRouting Set-NsxManager Set-NsxManagerRole Set-NsxManagerTimeSettings Set-NsxSecurityPolicy Set-NsxSecurityPolicyFirewallRule Set-NsxSslVpn Set-OSCustomizationNicMapping Set-OSCustomizationSpec Set-Org Set-OrgNetwork Set-OrgVdc Set-OrgVdcNetwork Set-PSCurrentConfigurationNode Set-PSDefaultConfigurationDocument Set-PSMetaConfigDocInsProcessedBeforeMeta Set-PSMetaConfigVersionInfoV2 Set-PSReadLineKeyHandler Set-PSReadLineOption Set-PSRepository Set-PSTopConfigurationName Set-PackageSource Set-PowerCLIConfiguration Set-ResourcePool Set-ScsiController Set-ScsiLun Set-ScsiLunPath Set-SecurityPolicy Set-Snapshot Set-SpbmEntityConfiguration Set-SpbmStoragePolicy Set-StatInterval Set-Tag Set-TagCategory Set-Template Set-VAIOFilter Set-VApp Set-VDBlockedPolicy Set-VDPort Set-VDPortgroup Set-VDPortgroupOverridePolicy Set-VDSecurityPolicy Set-VDSwitch Set-VDTrafficShapingPolicy Set-VDUplinkLacpPolicy Set-VDUplinkTeamingPolicy Set-VDVlanConfiguration Set-VDisk Set-VIPermission Set-VIRole Set-VM Set-VMHost Set-VMHostAccount Set-VMHostAdvancedConfiguration Set-VMHostAuthentication Set-VMHostDiagnosticPartition Set-VMHostFirewallDefaultPolicy Set-VMHostFirewallException Set-VMHostFirmware Set-VMHostHba Set-VMHostModule Set-VMHostNetwork Set-VMHostNetworkAdapter Set-VMHostProfile Set-VMHostProfileImageCacheConfiguration Set-VMHostProfileStorageDeviceConfiguration Set-VMHostProfileUserConfiguration Set-VMHostProfileVmPortGroupConfiguration Set-VMHostRoute Set-VMHostService Set-VMHostSnmp Set-VMHostStartPolicy Set-VMHostStorage Set-VMHostSysLogServer Set-VMQuestion Set-VMResourceConfiguration Set-VMStartPolicy Set-VTpm Set-VirtualPortGroup Set-VirtualSwitch Set-VsanClusterConfiguration Set-VsanFaultDomain Set-VsanIscsiInitiatorGroup Set-VsanIscsiLun Set-VsanIscsiTarget Set-vRABusinessGroup Set-vRACatalogItem Set-vRACustomForm Set-vRAEntitlement Set-vRAExternalNetworkProfile Set-vRANATNetworkProfile Set-vRAReservation Set-vRAReservationNetwork Set-vRAReservationPolicy Set-vRAReservationStorage Set-vRARoutedNetworkProfile Set-vRAService Set-vRAStorageReservationPolicy Set-vRATenant Set-vRATenantDirectory Set-vRAUserPrincipal Set-vRNIDataSourceSNMPConfig Show-Markdown Start-CIVApp Start-CIVM Start-HCXMigration Start-HCXReplication Start-SpbmReplicationFailover Start-SpbmReplicationPrepareFailover Start-SpbmReplicationPromote Start-SpbmReplicationReverse Start-SpbmReplicationTestFailover Start-ThreadJob Start-VApp Start-VM Start-VMHost Start-VMHostService Start-VsanClusterDiskUpdate Start-VsanClusterRebalance Start-VsanEncryptionConfiguration Stop-CIVApp Stop-CIVAppGuest Stop-CIVM Stop-CIVMGuest Stop-SpbmReplicationTestFailover Stop-Task Stop-VApp Stop-VM Stop-VMGuest Stop-VMHost Stop-VMHostService Stop-VsanClusterRebalance Suspend-CIVApp Suspend-CIVM Suspend-HCXReplication Suspend-VM Suspend-VMGuest Suspend-VMHost Sync-SpbmReplicationGroup Test-ConflictingResources Test-HCXMigration Test-HCXReplication Test-Json Test-ModuleReloadRequired Test-MofInstanceText Test-NodeManager Test-NodeResourceSource Test-NodeResources Test-ScriptFileInfo Test-VMHostProfileCompliance Test-VMHostSnmp Test-VsanClusterHealth Test-VsanNetworkPerformance Test-VsanStoragePerformance Test-VsanVMCreation Test-vRAPackage Uninstall-Module Uninstall-Package Uninstall-Script Unlock-VM Unregister-PSRepository Unregister-PackageSource Update-ConfigurationDocumentRef Update-ConfigurationErrorCount Update-DependsOn Update-LocalConfigManager Update-Module Update-ModuleManifest Update-ModuleVersion Update-PowerNsx Update-Script Update-ScriptFileInfo Update-Tools Update-VsanHclDatabase ValidateUpdate-ConfigurationData Wait-Debugger Wait-NsxControllerJob Wait-NsxGenericJob Wait-NsxJob Wait-Task Wait-Tools Write-Information Write-Log Write-MetaConfigFile Write-NodeMOFFile",nomarkup:"-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace"},contains:[t,e.NUMBER_MODE,r,{className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},{className:"literal",begin:/\$(null|true|false)\b/},n,a]}}),We.registerLanguage("processing",function(e){return{keywords:{keyword:"BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI",title:"setup draw",built_in:"displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("profile",function(e){return{contains:[e.C_NUMBER_MODE,{begin:"[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}",end:":",excludeEnd:!0},{begin:"(ncalls|tottime|cumtime)",end:"$",keywords:"ncalls tottime|10 cumtime|10 filename",relevance:10},{begin:"function calls",end:"$",contains:[e.C_NUMBER_MODE],relevance:10},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\(",end:"\\)$",excludeBegin:!0,excludeEnd:!0,relevance:0}]}}),We.registerLanguage("prolog",function(e){var t={begin:/\(/,end:/\)/,relevance:0},n={begin:/\[/,end:/\]/},r={className:"comment",begin:/%/,end:/$/,contains:[e.PHRASAL_WORDS_MODE]},a={className:"string",begin:/`/,end:/`/,contains:[e.BACKSLASH_ESCAPE]},i=[{begin:/[a-z][A-Za-z0-9_]*/,relevance:0},{className:"symbol",variants:[{begin:/[A-Z][a-zA-Z0-9_]*/},{begin:/_[A-Za-z0-9_]*/}],relevance:0},t,{begin:/:-/},n,r,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,a,{className:"string",begin:/0\'(\\\'|.)/},{className:"string",begin:/0\'\\s/},e.C_NUMBER_MODE];return t.contains=i,n.contains=i,{contains:i.concat([{begin:/\.$/}])}}),We.registerLanguage("properties",function(e){var t="[ \\t\\f]*",n="("+t+"[:=]"+t+"|[ \\t\\f]+)",r="([^\\\\:= \\t\\f\\n]|\\\\.)+",a={end:n,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+"+n,returnBegin:!0,contains:[{className:"attr",begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",endsParent:!0,relevance:0}],starts:a},{begin:r+n,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:r,endsParent:!0,relevance:0}],starts:a},{className:"attr",relevance:0,begin:r+t+"$"}]}}),We.registerLanguage("protobuf",function(e){return{keywords:{keyword:"package import option optional required repeated group oneof",built_in:"double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,{className:"class",beginKeywords:"message enum service",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"function",beginKeywords:"rpc",end:/;/,excludeEnd:!0,keywords:"rpc returns"},{begin:/^\s*[A-Z_]+/,end:/\s*=/,excludeEnd:!0}]}}),We.registerLanguage("puppet",function(e){var t=e.COMMENT("#","$"),n=e.inherit(e.TITLE_MODE,{begin:"([A-Za-z_]|::)(\\w|::)*"}),r={className:"variable",begin:"\\$([A-Za-z_]|::)(\\w|::)*"},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]};return{aliases:["pp"],contains:[t,r,a,{beginKeywords:"class",end:"\\{|;",illegal:/=/,contains:[n,t]},{beginKeywords:"define",end:/\{/,contains:[{className:"section",begin:e.IDENT_RE,endsParent:!0}]},{begin:e.IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\S/,contains:[{className:"keyword",begin:e.IDENT_RE},{begin:/\{/,end:/\}/,keywords:{keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"},relevance:0,contains:[a,t,{begin:"[a-zA-Z_]+\\s*=>",returnBegin:!0,end:"=>",contains:[{className:"attr",begin:e.IDENT_RE}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},r]}],relevance:0}]}}),We.registerLanguage("purebasic",function(e){return{aliases:["pb","pbi"],keywords:"Align And Array As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount Map Module NewList NewMap Next Not Or Procedure ProcedureC ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim Read Repeat Restore Return Runtime Select Shared Static Step Structure StructureUnion Swap Threaded To UndefineMacro Until Until UnuseModule UseModule Wend While With XIncludeFile XOr",contains:[e.COMMENT(";","$",{relevance:0}),{className:"function",begin:"\\b(Procedure|Declare)(C|CDLL|DLL)?\\b",end:"\\(",excludeEnd:!0,returnBegin:!0,contains:[{className:"keyword",begin:"(Procedure|Declare)(C|CDLL|DLL)?",excludeEnd:!0},{className:"type",begin:"\\.\\w*"},e.UNDERSCORE_TITLE_MODE]},{className:"string",begin:'(~)?"',end:'"',illegal:"\\n"},{className:"symbol",begin:"#[a-zA-Z_]\\w*\\$?"}]}}),We.registerLanguage("python",function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},n={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},a={begin:/\{\{/,relevance:0},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n,a,r]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n,a,r]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,a,r]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,a,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},s={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,i,e.HASH_COMMENT_MODE]};return r.contains=[i,o,n],{aliases:["py","gyp","ipython"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,i,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,s,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}),We.registerLanguage("q",function(e){return{aliases:["k","kdb"],keywords:{keyword:"do while select delete by update from",literal:"0b 1b",built_in:"neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum",type:"`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid"},lexemes:/(`?)[A-Za-z0-9_]+\b/,contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("qml",function(e){var t="[a-zA-Z_][a-zA-Z0-9\\._]*",n={className:"attribute",begin:"\\bid\\s*:",starts:{className:"string",end:t,returnEnd:!1}},r={begin:t+"\\s*:",returnBegin:!0,contains:[{className:"attribute",begin:t,end:"\\s*:",excludeEnd:!0,relevance:0}],relevance:0},a={begin:t+"\\s*{",end:"{",returnBegin:!0,relevance:0,contains:[e.inherit(e.TITLE_MODE,{begin:t})]};return{aliases:["qt"],case_insensitive:!1,keywords:{keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4dPromise"},contains:[{className:"meta",begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{begin:/</,end:/>\s*[);\]]/,relevance:0,subLanguage:"xml"}],relevance:0},{className:"keyword",begin:"\\bsignal\\b",starts:{className:"string",end:"(\\(|:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"keyword",begin:"\\bproperty\\b",starts:{className:"string",end:"(:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}],illegal:/\[|%/},{begin:"\\."+e.IDENT_RE,relevance:0},n,r,a],illegal:/#/}}),We.registerLanguage("r",function(e){var t="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{contains:[e.HASH_COMMENT_MODE,{begin:t,lexemes:t,keywords:{keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}}),We.registerLanguage("reasonml",function(e){var t="~?[a-z$_][0-9a-zA-Z$_]*",n="`?[A-Z$_][0-9a-zA-Z$_]*",r="("+["||","&&","++","**","+.","*","/","*.","/.","...","|>"].map(function(e){return e.split("").map(function(e){return"\\"+e}).join("")}).join("|")+"|==|===)",a="\\s+"+r+"\\s+",i={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"},o="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",s={className:"number",relevance:0,variants:[{begin:o},{begin:"\\(\\-"+o+"\\)"}]},l={className:"operator",relevance:0,begin:r},c=[{className:"identifier",relevance:0,begin:t},l,s],d=[e.QUOTE_STRING_MODE,l,{className:"module",begin:"\\b"+n,returnBegin:!0,end:".",contains:[{className:"identifier",begin:n,relevance:0}]}],_=[{className:"module",begin:"\\b"+n,returnBegin:!0,end:".",relevance:0,contains:[{className:"identifier",begin:n,relevance:0}]}],u={className:"function",relevance:0,keywords:i,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+t+")\\s*=>",end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params",variants:[{begin:t},{begin:"~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>",returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{begin:t,end:"(,|\\n|\\))",relevance:0,contains:[l,{className:"typing",begin:":",end:"(,|\\n)",returnBegin:!0,relevance:0,contains:_}]}]}]},{begin:"\\(\\.\\s"+t+"\\)\\s*=>"}]};d.push(u);var m={className:"constructor",begin:n+"\\(",end:"\\)",illegal:"\\n",keywords:i,contains:[e.QUOTE_STRING_MODE,l,{className:"params",begin:"\\b"+t}]},p={className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:i,end:"=>",relevance:0,contains:[m,l,{relevance:0,className:"constructor",begin:n}]},g={className:"module-access",keywords:i,returnBegin:!0,variants:[{begin:"\\b("+n+"\\.)+"+t},{begin:"\\b("+n+"\\.)+\\(",end:"\\)",returnBegin:!0,contains:[u,{begin:"\\(",end:"\\)",skip:!0}].concat(d)},{begin:"\\b("+n+"\\.)+{",end:"}"}],contains:d};return _.push(g),{aliases:["re"],keywords:i,illegal:"(:\\-|:=|\\${|\\+=)",contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(\\#,\\/\\/)"}),{className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:c},{className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:c},m,{className:"operator",begin:a,illegal:"\\-\\->",relevance:0},s,e.C_LINE_COMMENT_MODE,p,u,{className:"module-def",begin:"\\bmodule\\s+"+t+"\\s+"+n+"\\s+=\\s+{",end:"}",returnBegin:!0,keywords:i,relevance:0,contains:[{className:"module",relevance:0,begin:n},{begin:"{",end:"}",skip:!0}].concat(d)},g]}}),We.registerLanguage("rib",function(e){return{keywords:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",illegal:"</",contains:[e.HASH_COMMENT_MODE,e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}}),We.registerLanguage("roboconf",function(e){var t="[a-zA-Z-_][^\\n{]+\\{",n={className:"attribute",begin:/[a-zA-Z-_]+/,end:/\s*:/,excludeEnd:!0,starts:{end:";",relevance:0,contains:[{className:"variable",begin:/\.[a-zA-Z-_]+/},{className:"keyword",begin:/\(optional\)/}]}};return{aliases:["graph","instances"],case_insensitive:!0,keywords:"import",contains:[{begin:"^facet "+t,end:"}",keywords:"facet",contains:[n,e.HASH_COMMENT_MODE]},{begin:"^\\s*instance of "+t,end:"}",keywords:"name count channels instance-data instance-state instance of",illegal:/\S/,contains:["self",n,e.HASH_COMMENT_MODE]},{begin:"^"+t,end:"}",contains:[n,e.HASH_COMMENT_MODE]},e.HASH_COMMENT_MODE]}}),We.registerLanguage("routeros",function(e){var t="foreach do while for if from to step else on-error and or not in",n="true false yes no nothing nil null",r={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]},i={className:"string",begin:/'/,end:/'/};return{aliases:["routeros","mikrotik"],case_insensitive:!0,lexemes:/:?[\w-]+/,keywords:{literal:n,keyword:t+" :"+t.split(" ").join(" :")+" :"+"global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime".split(" ").join(" :")},contains:[{variants:[{begin:/^@/,end:/$/},{begin:/\/\*/,end:/\*\//},{begin:/%%/,end:/$/},{begin:/^'/,end:/$/},{begin:/^\s*\/[\w-]+=/,end:/$/},{begin:/\/\//,end:/$/},{begin:/^\[\</,end:/\>\]$/},{begin:/<\//,end:/>/},{begin:/^facet /,end:/\}/},{begin:"^1\\.\\.(\\d+)$",end:/$/}],illegal:/./},e.COMMENT("^#","$"),a,i,r,{begin:/[\w-]+\=([^\s\{\}\[\]\(\)]+)/,relevance:0,returnBegin:!0,contains:[{className:"attribute",begin:/[^=]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[a,i,r,{className:"literal",begin:"\\b("+n.split(" ").join("|")+")\\b"},{begin:/("[^"]*"|[^\s\{\}\[\]]+)/}]}]},{className:"number",begin:/\*[0-9a-fA-F]+/},{begin:"\\b("+"add remove enable disable set get print export edit find run debug error info warning".split(" ").join("|")+")([\\s[(]|])",returnBegin:!0,contains:[{className:"builtin-name",begin:/\w+/}]},{className:"built_in",variants:[{begin:"(\\.\\./|/|\\s)(("+"traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firewall firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw".split(" ").join("|")+");?\\s)+",relevance:10},{begin:/\.\./}]}]}}),We.registerLanguage("rsl",function(e){return{keywords:{keyword:"float color point normal vector matrix while for if do return else break extern continue",built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"surface displacement light volume imager",end:"\\("},{beginKeywords:"illuminate illuminance gather",end:"\\("}]}}),We.registerLanguage("ruleslanguage",function(e){return{keywords:{keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING",built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"literal",variants:[{begin:"#\\s+[a-zA-Z\\ \\.]*",relevance:0},{begin:"#[a-zA-Z\\ \\.]+"}]}]}}),We.registerLanguage("rust",function(e){var t="([ui](8|16|32|64|128|size)|f(32|64))?",n="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{aliases:["rs"],keywords:{keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:n},lexemes:e.IDENT_RE+"!?",illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"string",variants:[{begin:/r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:"number",variants:[{begin:"\\b0b([01_]+)"+t},{begin:"\\b0o([0-7_]+)"+t},{begin:"\\b0x([A-Fa-f0-9_]+)"+t},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+t}],relevance:0},{className:"function",beginKeywords:"fn",end:"(\\(|<)",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"meta",begin:"#\\!?\\[",end:"\\]",contains:[{className:"meta-string",begin:/"/,end:/"/}]},{className:"class",beginKeywords:"type",end:";",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"\\S"},{className:"class",beginKeywords:"trait enum struct union",end:"{",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"[\\w\\d]"},{begin:e.IDENT_RE+"::",keywords:{built_in:n}},{begin:"->"}]}}),We.registerLanguage("sas",function(e){return{aliases:["sas","SAS"],case_insensitive:!0,keywords:{literal:"null missing _all_ _automatic_ _character_ _infile_ _n_ _name_ _null_ _numeric_ _user_ _webout_",meta:"do if then else end until while abort array attrib by call cards cards4 catname continue datalines datalines4 delete delim delimiter display dm drop endsas error file filename footnote format goto in infile informat input keep label leave length libname link list lostcard merge missing modify options output out page put redirect remove rename replace retain return select set skip startsas stop title update waitsas where window x systask add and alter as cascade check create delete describe distinct drop foreign from group having index insert into in key like message modify msgtype not null on or order primary references reset restrict select set table unique update validate view where"},contains:[{className:"keyword",begin:/^\s*(proc [\w\d_]+|data|run|quit)[\s\;]/},{className:"variable",begin:/\&[a-zA-Z_\&][a-zA-Z0-9_]*\.?/},{className:"emphasis",begin:/^\s*datalines|cards.*;/,end:/^\s*;\s*$/},{className:"built_in",begin:"%(bquote|nrbquote|cmpres|qcmpres|compstor|datatyp|display|do|else|end|eval|global|goto|if|index|input|keydef|label|left|length|let|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qcmpres|qleft|qlowcase|qscan|qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|substr|superq|syscall|sysevalf|sysexec|sysfunc|sysget|syslput|sysprod|sysrc|sysrput|then|to|trim|unquote|until|upcase|verify|while|window)"},{className:"name",begin:/%[a-zA-Z_][a-zA-Z_0-9]*/},{className:"meta",begin:"[^%](abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|cexist|cinv|close|cnonct|collate|compbl|compound|compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|filename|fileref|finfo|finv|fipname|fipnamel|fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|hms|hosthelp|hour|ibessel|index|indexc|indexw|input|inputc|inputn|int|intck|intnx|intrr|irr|jbessel|juldate|kurtosis|lag|lbound|left|length|lgamma|libname|libref|log|log10|log2|logpdf|logpmf|logsdf|lowcase|max|mdy|mean|min|minute|mod|month|mopen|mort|n|netpv|nmiss|normal|note|npv|open|ordinal|pathname|pdf|peek|peekc|pmf|point|poisson|poke|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probt|put|putc|putn|qtr|quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|rewind|right|round|saving|scan|sdf|second|sign|sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|stfips|stname|stnamel|substr|sum|symget|sysget|sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|tinv|tnonct|today|translate|tranwrd|trigamma|trim|trimn|trunc|uniform|upcase|uss|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|zipnamel|zipstate)[(]"},{className:"string",variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.COMMENT("\\*",";"),e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("scala",function(e){var t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},n={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[t],relevance:10}]},r={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},a={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},a]},o={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[a]};return{keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},r,o,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("scheme",function(e){var t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},r={className:"number",variants:[{begin:"(\\-|\\+)?\\d+([./]\\d+)?",relevance:0},{begin:"(\\-|\\+)?\\d+([./]\\d+)?[+\\-](\\-|\\+)?\\d+([./]\\d+)?i",relevance:0},{begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},a=e.QUOTE_STRING_MODE,i=[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#\\|","\\|#")],o={begin:t,relevance:0},s={className:"symbol",begin:"'"+t},l={endsWithParent:!0,relevance:0},c={variants:[{begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)",contains:["self",n,a,r,o,s]}]},d={className:"name",begin:t,lexemes:t,keywords:{"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"}},_={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}],contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[d,{begin:/\(/,end:/\)/,endsParent:!0,contains:[o]}]},d,l]};return l.contains=[n,r,a,o,s,c,_].concat(i),{illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},r,a,s,c,_].concat(i)}}),We.registerLanguage("scilab",function(e){var t=[e.C_NUMBER_MODE,{className:"string",begin:"'|\"",end:"'|\"",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]}];return{aliases:["sci"],lexemes:/%?\w+/,keywords:{keyword:"abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while",literal:"%f %F %t %T %pi %eps %inf %nan %e %i %z %s",built_in:"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix"},illegal:'("|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{begin:"[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",end:"",relevance:0},{begin:"\\[",end:"\\]'*[\\.']*",relevance:0,contains:t},e.COMMENT("//","$")].concat(t)}}),We.registerLanguage("scss",function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},n={className:"number",begin:"#[0-9A-Fa-f]+"};e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE;return{case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,n,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@",end:"[{;]",keywords:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",contains:[t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n,e.CSS_NUMBER_MODE,{begin:"\\s[A-Za-z0-9_.-]+",relevance:0}]}]}}),We.registerLanguage("shell",function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}),We.registerLanguage("smali",function(e){var t=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"];return{aliases:["smali"],contains:[{className:"string",begin:'"',end:'"',relevance:0},e.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{begin:"\\s("+["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"].join("|")+")"}]},{className:"built_in",variants:[{begin:"\\s("+t.join("|")+")\\s"},{begin:"\\s("+t.join("|")+")((\\-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{begin:"\\s("+["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"].join("|")+")((\\-|/)[a-zA-Z0-9]+)*\\s",relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{begin:"[vp][0-9]+"}]}}),We.registerLanguage("smalltalk",function(e){var t={className:"string",begin:"\\$.{1}"},n={className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{aliases:["st"],keywords:"self super nil true false thisContext",contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:"[a-z][a-zA-Z0-9_]*:",relevance:0},e.C_NUMBER_MODE,n,t,{begin:"\\|[ ]*[a-z][a-zA-Z0-9_]*([ ]+[a-z][a-zA-Z0-9_]*)*[ ]*\\|",returnBegin:!0,end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?[a-z][a-zA-Z0-9_]*"}]},{begin:"\\#\\(",end:"\\)",contains:[e.APOS_STRING_MODE,t,e.C_NUMBER_MODE,n]}]}}),We.registerLanguage("sml",function(e){return{aliases:["ml"],keywords:{keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while",built_in:"array bool char exn int list option order real ref string substring vector unit word",literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}}),We.registerLanguage("sqf",function(e){var t={className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'",end:"'",contains:[{begin:"''",relevance:0}]}]},n={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"define undef ifdef ifndef else endif include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(t,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]};return{aliases:["sqf"],case_insensitive:!0,keywords:{keyword:"case catch default do else exit exitWith for forEach from if private switch then throw to try waitUntil while with",built_in:"abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configProperties configSourceAddonList configSourceMod configSourceModList confirmSensorTarget connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ",literal:"blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic sideUnknown taskNull teamMemberNull true west"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.NUMBER_MODE,{className:"variable",begin:/\b_+[a-zA-Z_]\w*/},{className:"title",begin:/[a-zA-Z][a-zA-Z0-9]+_fnc_\w*/},t,n],illegal:/#|^\$ /}}),We.registerLanguage("sql",function(e){var t=e.COMMENT("--","$");return{case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,lexemes:/[\w\.]+/,keywords:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}]},{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}),We.registerLanguage("stan",function(e){return{contains:[e.HASH_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE,lexemes:e.UNDERSCORE_IDENT_RE,keywords:{name:"for in while repeat until if then else",symbol:"bernoulli bernoulli_logit binomial binomial_logit beta_binomial hypergeometric categorical categorical_logit ordered_logistic neg_binomial neg_binomial_2 neg_binomial_2_log poisson poisson_log multinomial normal exp_mod_normal skew_normal student_t cauchy double_exponential logistic gumbel lognormal chi_square inv_chi_square scaled_inv_chi_square exponential inv_gamma weibull frechet rayleigh wiener pareto pareto_type_2 von_mises uniform multi_normal multi_normal_prec multi_normal_cholesky multi_gp multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet lkj_corr lkj_corr_cholesky wishart inv_wishart","selector-tag":"int real vector simplex unit_vector ordered positive_ordered row_vector matrix cholesky_factor_corr cholesky_factor_cov corr_matrix cov_matrix",title:"functions model data parameters quantities transformed generated",literal:"true false"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0}]}}),We.registerLanguage("stata",function(e){return{aliases:["do","ado"],case_insensitive:!0,keywords:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5",contains:[{className:"symbol",begin:/`[a-zA-Z0-9_]+'/},{className:"variable",begin:/\$\{?[a-zA-Z0-9_]+\}?/},{className:"string",variants:[{begin:'`"[^\r\n]*?"\''},{begin:'"[^\r\n"]*"'}]},{className:"built_in",variants:[{begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()"}]},e.COMMENT("^[ \t]*\\*.*$",!1),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("step21",function(e){return{aliases:["p21","step","stp"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:{keyword:"HEADER ENDSEC DATA"},contains:[{className:"meta",begin:"ISO-10303-21;",relevance:10},{className:"meta",begin:"END-ISO-10303-21;",relevance:10},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("/\\*\\*!","\\*/"),e.C_NUMBER_MODE,e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"'",end:"'"},{className:"symbol",variants:[{begin:"#",end:"\\d+",illegal:"\\W"}]}]}}),We.registerLanguage("stylus",function(e){var t={className:"variable",begin:"\\$"+e.IDENT_RE},n={className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"};return{aliases:["styl"],case_insensitive:!1,keywords:"if else for in",illegal:"("+["\\?","(\\bReturn\\b)","(\\bEnd\\b)","(\\bend\\b)","(\\bdef\\b)",";","#\\s","\\*\\s","===\\s","\\|","%"].join("|")+")",contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{begin:"\\.[a-zA-Z][a-zA-Z0-9_-]*(?=[\\.\\s\\n\\[\\:,])",className:"selector-class"},{begin:"\\#[a-zA-Z][a-zA-Z0-9_-]*(?=[\\.\\s\\n\\[\\:,])",className:"selector-id"},{begin:"\\b("+["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"].join("|")+")(?=[\\.\\s\\n\\[\\:,])",className:"selector-tag"},{begin:"&?:?:\\b("+["after","before","first-letter","first-line","active","first-child","focus","hover","lang","link","visited"].join("|")+")(?=[\\.\\s\\n\\[\\:,])"},{begin:"@("+["charset","css","debug","extend","font-face","for","import","include","media","mixin","page","warn","while"].join("|")+")\\b"},t,e.CSS_NUMBER_MODE,e.NUMBER_MODE,{className:"function",begin:"^[a-zA-Z][a-zA-Z0-9_-]*\\(.*\\)",illegal:"[\\n]",returnBegin:!0,contains:[{className:"title",begin:"\\b[a-zA-Z][a-zA-Z0-9_-]*"},{className:"params",begin:/\(/,end:/\)/,contains:[n,t,e.APOS_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE]}]},{className:"attribute",begin:"\\b("+["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse().join("|")+")\\b",starts:{end:/;|$/,contains:[n,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/\./,relevance:0}}]}}),We.registerLanguage("subunit",function(e){return{case_insensitive:!0,contains:[{className:"string",begin:"\\[\n(multipart)?",end:"\\]\n"},{className:"string",begin:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z"},{className:"string",begin:"(\\+|-)\\d+"},{className:"keyword",relevance:10,variants:[{begin:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?"},{begin:"^progress(:?)(\\s+)?(pop|push)?"},{begin:"^tags:"},{begin:"^time:"}]}]}}),We.registerLanguage("swift",function(e){var t={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}]},i={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return r.contains=[i],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,n,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin:/</,end:/>/},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",i,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}}),We.registerLanguage("taggerscript",function(e){return{contains:[{className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\(/,end:/\)/,contains:["self",{begin:/\\./}]}],relevance:10},{className:"keyword",begin:/\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,end:/\(/,excludeEnd:!0},{className:"variable",begin:/%[_a-zA-Z0-9:]*/,end:"%"},{className:"symbol",begin:/\\./}]}}),We.registerLanguage("yaml",function(e){var t={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]};return{case_insensitive:!0,aliases:["yml","YAML","yaml"],contains:[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!"+e.UNDERSCORE_IDENT_RE},{className:"type",begin:"!!"+e.UNDERSCORE_IDENT_RE},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},{className:"number",begin:e.C_NUMBER_RE+"\\b"},t]}}),We.registerLanguage("tap",function(e){return{case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"meta",variants:[{begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:"(s+)?---$",end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number",begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}]}]}}),We.registerLanguage("tcl",function(e){return{aliases:["tk"],keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while",contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title",begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]",endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)",end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},{className:"number",variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]}}),We.registerLanguage("tex",function(e){var t={className:"tag",begin:/\\/,relevance:0,contains:[{className:"name",variants:[{begin:/[a-zA-Z\u0430-\u044f\u0410-\u042f]+[*]?/},{begin:/[^a-zA-Z\u0430-\u044f\u0410-\u042f0-9]/}],starts:{endsWithParent:!0,relevance:0,contains:[{className:"string",variants:[{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/}]},{begin:/\s*=\s*/,endsWithParent:!0,relevance:0,contains:[{className:"number",begin:/-?\d*\.?\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/}]}]}}]};return{contains:[t,{className:"formula",contains:[t],relevance:0,variants:[{begin:/\$\$/,end:/\$\$/},{begin:/\$/,end:/\$/}]},e.COMMENT("%","$",{relevance:0})]}}),We.registerLanguage("thrift",function(e){return{keywords:{keyword:"namespace const typedef struct enum service exception void oneway set list map required optional",built_in:"bool byte i16 i32 i64 double string binary",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"struct enum service exception",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{begin:"\\b(set|list|map)\\s*<",end:">",keywords:"bool byte i16 i32 i64 double string binary",contains:["self"]}]}}),We.registerLanguage("tp",function(e){var t={className:"number",begin:"[1-9][0-9]*",relevance:0},n={className:"symbol",begin:":[^\\]]+"};return{keywords:{keyword:"ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN SUBSTR FINDSTR VOFFSET PROG ATTR MN POS",literal:"ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET"},contains:[{className:"built_in",begin:"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[",end:"\\]",contains:["self",t,n]},{className:"built_in",begin:"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[",end:"\\]",contains:["self",t,e.QUOTE_STRING_MODE,n]},{className:"keyword",begin:"/(PROG|ATTR|MN|POS|END)\\b"},{className:"keyword",begin:"(CALL|RUN|POINT_LOGIC|LBL)\\b"},{className:"keyword",begin:"\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)"},{className:"number",begin:"\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b",relevance:0},e.COMMENT("//","[;$]"),e.COMMENT("!","[;$]"),e.COMMENT("--eg:","$"),e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"'"},e.C_NUMBER_MODE,{className:"variable",begin:"\\$[A-Za-z0-9_]+"}]}}),We.registerLanguage("twig",function(e){var t="attribute block constant cycle date dump include max min parent random range source template_from_string",n={beginKeywords:t,keywords:{name:t},relevance:0,contains:[{className:"params",begin:"\\(",end:"\\)"}]},r={begin:/\|[A-Za-z_]+:?/,keywords:"abs batch capitalize column convert_encoding date date_modify default escape filter first format inky_to_html inline_css join json_encode keys last length lower map markdown merge nl2br number_format raw reduce replace reverse round slice sort spaceless split striptags title trim upper url_encode",contains:[n]},a="apply autoescape block deprecated do embed extends filter flush for from if import include macro sandbox set use verbatim with";return a=a+" "+a.split(" ").map(function(e){return"end"+e}).join(" "),{aliases:["craftcms"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:a,starts:{endsWithParent:!0,contains:[r,n],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:["self",r,n]}]}}),We.registerLanguage("typescript",function(e){var t={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"},n={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},r={begin:"\\(",end:/\)/,keywords:t,contains:["self",e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.NUMBER_MODE]},a={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r]},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:t,contains:[]},s={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},l={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"css"}},c={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,o]};return o.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,l,c,i,e.REGEXP_MODE],{aliases:["ts"],keywords:t,contains:[{className:"meta",begin:/^\s*['"]use strict['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,l,c,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+e.IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.IDENT_RE},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",e.inherit(e.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*"}),a],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/[\{;]/,excludeEnd:!0,contains:["self",a]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+e.IDENT_RE,relevance:0},n,r]}}),We.registerLanguage("vala",function(e){return{keywords:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"},contains:[{className:"class",beginKeywords:"class interface namespace",end:"{",excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"^#",end:"$",relevance:2}]}}),We.registerLanguage("vbnet",function(e){return{aliases:["vb"],case_insensitive:!0,keywords:{keyword:"addhandler addressof alias and andalso aggregate ansi as async assembly auto await binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue iterator join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor yield",built_in:"boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort",literal:"true false nothing"},illegal:"//|{|}|endif|gosub|variant|wend|^\\$ ",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT("'","$",{returnBegin:!0,contains:[{className:"doctag",begin:"'''|\x3c!--|--\x3e",contains:[e.PHRASAL_WORDS_MODE]},{className:"doctag",begin:"</?",end:">",contains:[e.PHRASAL_WORDS_MODE]}]}),e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end region externalsource"}}]}}),We.registerLanguage("vbscript",function(e){return{aliases:["vbs"],case_insensitive:!0,keywords:{keyword:"call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto",built_in:"lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err",literal:"true false null nothing empty"},illegal:"//",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT(/'/,/$/,{relevance:0}),e.C_NUMBER_MODE]}}),We.registerLanguage("vbscript-html",function(e){return{subLanguage:"xml",contains:[{begin:"<%",end:"%>",subLanguage:"vbscript"}]}}),We.registerLanguage("verilog",function(e){return{aliases:["v","sv","svh"],case_insensitive:!1,keywords:{keyword:"accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import incdir include initial inout input inside instance int integer interconnect interface intersect join join_any join_none large let liblist library local localparam logic longint macromodule matches medium modport module nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor",literal:"null",built_in:"$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale $bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat $realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson $assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff $assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk $fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control $coverage_get $coverage_save $set_coverage_db_name $rose $stable $past $rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display $coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename $unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow $floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning $dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh $tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson $dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array $async$nand$array $async$or$array $async$nor$array $sync$and$array $sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf $async$and$plane $async$nand$plane $async$or$plane $async$nor$plane $sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system $display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo $write $readmemb $readmemh $writememh $value$plusargs $dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit $writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb $dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall $dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo $fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh $swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb $fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat $sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror"},lexemes:/[\w\$]+/,contains:[e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"number",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"\\b((\\d+'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\B(('(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\b([0-9_])+",relevance:0}]},{className:"variable",variants:[{begin:"#\\((?!parameter).+\\)"},{begin:"\\.\\w+",relevance:0}]},{className:"meta",begin:"`",end:"$",keywords:{"meta-keyword":"define __FILE__ __LINE__ begin_keywords celldefine default_nettype define else elsif end_keywords endcelldefine endif ifdef ifndef include line nounconnected_drive pragma resetall timescale unconnected_drive undef undefineall"},relevance:0}]}}),We.registerLanguage("vhdl",function(e){return{case_insensitive:!0,keywords:{keyword:"abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package parameter port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable view vmode vprop vunit wait when while with xnor xor",built_in:"boolean bit character integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_logic std_logic_vector unsigned signed boolean_vector integer_vector std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed real_vector time_vector",literal:"false true note warning error failure line text side width"},illegal:"{",contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT("--","$"),e.QUOTE_STRING_MODE,{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'",contains:[e.BACKSLASH_ESCAPE]},{className:"symbol",begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[e.BACKSLASH_ESCAPE]}]}}),We.registerLanguage("vim",function(e){return{lexemes:/[!#@\w]+/,keywords:{keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank",built_in:"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp"},illegal:/;/,contains:[e.NUMBER_MODE,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:/"(\\"|\n\\|[^"\n])*"/},e.COMMENT('"',"$"),{className:"variable",begin:/[bwtglsav]:[\w\d_]*/},{className:"function",beginKeywords:"function function!",end:"$",relevance:0,contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{className:"symbol",begin:/<[\w-]+>/}]}}),We.registerLanguage("x86asm",function(e){return{case_insensitive:!0,lexemes:"[.%]?"+e.IDENT_RE,keywords:{keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}}),We.registerLanguage("xl",function(e){var t={keyword:"if then else do while until for loop import with is as where when by data constant integer real text name boolean symbol infix prefix postfix block tree",literal:"true false nil",built_in:"in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin acos atan exp expm1 log log2 log10 log1p pi at text_length text_range text_find text_replace contains page slide basic_slide title_slide title subtitle fade_in fade_out fade_at clear_color color line_color line_width texture_wrap texture_transform texture scale_?x scale_?y scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y rotate_?z? rectangle circle ellipse sphere path line_to move_to quad_to curve_to theme background contents locally time mouse_?x mouse_?y mouse_buttons ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts"},n={className:"string",begin:'"',end:'"',illegal:"\\n"},r={beginKeywords:"import",end:"$",keywords:t,contains:[n]},a={className:"function",begin:/[a-z][^\n]*->/,returnBegin:!0,end:/->/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,keywords:t}})]};return{aliases:["tao"],lexemes:/[a-zA-Z][a-zA-Z0-9_?]*/,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:"<<",end:">>"},a,r,{className:"number",begin:"[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?"},e.NUMBER_MODE]}}),We.registerLanguage("xquery",function(e){return{aliases:["xpath","xq"],case_insensitive:!1,lexemes:/[a-zA-Z\$][a-zA-Z0-9_:\-]*/,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update",type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration",literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN"},contains:[{className:"variable",begin:/[\$][\w-:]+/},{className:"built_in",variants:[{begin:/\barray\:/,end:/(?:append|filter|flatten|fold\-(?:left|right)|for-each(?:\-pair)?|get|head|insert\-before|join|put|remove|reverse|size|sort|subarray|tail)\b/},{begin:/\bmap\:/,end:/(?:contains|entry|find|for\-each|get|keys|merge|put|remove|size)\b/},{begin:/\bmath\:/,end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/},{begin:/\bop\:/,end:/\(/,excludeEnd:!0},{begin:/\bfn\:/,end:/\(/,excludeEnd:!0},{begin:/[^<\/\$\:'"-]\b(?:abs|accumulator\-(?:after|before)|adjust\-(?:date(?:Time)?|time)\-to\-timezone|analyze\-string|apply|available\-(?:environment\-variables|system\-properties)|avg|base\-uri|boolean|ceiling|codepoints?\-(?:equal|to\-string)|collation\-key|collection|compare|concat|contains(?:\-token)?|copy\-of|count|current(?:\-)?(?:date(?:Time)?|time|group(?:ing\-key)?|output\-uri|merge\-(?:group|key))?data|dateTime|days?\-from\-(?:date(?:Time)?|duration)|deep\-equal|default\-(?:collation|language)|distinct\-values|document(?:\-uri)?|doc(?:\-available)?|element\-(?:available|with\-id)|empty|encode\-for\-uri|ends\-with|environment\-variable|error|escape\-html\-uri|exactly\-one|exists|false|filter|floor|fold\-(?:left|right)|for\-each(?:\-pair)?|format\-(?:date(?:Time)?|time|integer|number)|function\-(?:arity|available|lookup|name)|generate\-id|has\-children|head|hours\-from\-(?:dateTime|duration|time)|id(?:ref)?|implicit\-timezone|in\-scope\-prefixes|index\-of|innermost|insert\-before|iri\-to\-uri|json\-(?:doc|to\-xml)|key|lang|last|load\-xquery\-module|local\-name(?:\-from\-QName)?|(?:lower|upper)\-case|matches|max|minutes\-from\-(?:dateTime|duration|time)|min|months?\-from\-(?:date(?:Time)?|duration)|name(?:space\-uri\-?(?:for\-prefix|from\-QName)?)?|nilled|node\-name|normalize\-(?:space|unicode)|not|number|one\-or\-more|outermost|parse\-(?:ietf\-date|json)|path|position|(?:prefix\-from\-)?QName|random\-number\-generator|regex\-group|remove|replace|resolve\-(?:QName|uri)|reverse|root|round(?:\-half\-to\-even)?|seconds\-from\-(?:dateTime|duration|time)|snapshot|sort|starts\-with|static\-base\-uri|stream\-available|string\-?(?:join|length|to\-codepoints)?|subsequence|substring\-?(?:after|before)?|sum|system\-property|tail|timezone\-from\-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type\-available|unordered|unparsed\-(?:entity|text)?\-?(?:public\-id|uri|available|lines)?|uri\-collection|xml\-to\-json|years?\-from\-(?:date(?:Time)?|duration)|zero\-or\-one)\b/},{begin:/\blocal\:/,end:/\(/,excludeEnd:!0},{begin:/\bzip\:/,end:/(?:zip\-file|(?:xml|html|text|binary)\-entry| (?:update\-)?entries)\b/},{begin:/\b(?:util|db|functx|app|xdmp|xmldb)\:/,end:/\(/,excludeEnd:!0}]},{className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{className:"comment",begin:"\\(:",end:":\\)",relevance:10,contains:[{className:"doctag",begin:"@\\w+"}]},{className:"meta",begin:/%[\w-:]+/},{className:"title",begin:/\bxquery version "[13]\.[01]"\s?(?:encoding ".+")?/,end:/;/},{beginKeywords:"element attribute comment document processing-instruction",end:"{",excludeEnd:!0},{begin:/<([\w\._:\-]+)((\s*.*)=('|").*('|"))?>/,end:/(\/[\w\._:\-]+>)/,subLanguage:"xml",contains:[{begin:"{",end:"}",subLanguage:"xquery"},"self"]}]}}),We.registerLanguage("zephir",function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["zep"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var let while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally int uint long ulong char uchar double float bool boolean stringlikely unlikely",contains:[e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:"<<<['\"]?\\w+['\"]?$",end:"^\\w+;",contains:[e.BACKSLASH_ESCAPE]},{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_BLOCK_COMMENT_MODE,t,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},t,n]}});var ht=function(){return function(e,t,n){return function(e){let t=0;E(e,"list",e=>{let n=!0,r=0;const a=[];return Array.from(e.children).forEach(e=>{e.children&&"paragraph"===e.children[0].type&&e.children[0].children&&e.children[0].children[0].value?"~!=".indexOf(e.children[0].children[0].value[0])<0&&(n=!1):n=!1}),n&&(Array.from(e.children).forEach(e=>{"paragraph"===e.children[0].type&&("~"===e.children[0].children[0].value[0]?a.push(.5):"!"===e.children[0].children[0].value[0]?a.push(0):a.push(1),e.children[0].children[0].value=`${e.children[0].children[0].value.slice(1)}\r`)}),e.type="mc",e.data={hName:"fieldset",hProperties:{className:"mc check",id:`mc_${t}`}},e.children=[{type:"list-item-mc",data:{hName:"ul"},children:e.children.map(e=>({type:"input-list-item",data:{hName:"li"},children:[{type:"input-list-input",data:{hName:"input",hProperties:{checked:e.checked,type:"checkbox",id:`mc_${t}_${r}`,className:"!~="[2*a[r]]}}},{type:"input-list-label",data:{hName:"label",hProperties:{for:`mc_${t}_${r++}`}},children:function(e){let t=[];return"paragraph"===e[0].type&&(t=e[0].children),t[0].value=t[0].value.trim(),"blockquote"===e[e.length-1].type&&(e[e.length-1].type="div",e[e.length-1].data={hName:"blockquote",hProperties:{className:"hiden_block_quote"}}),t=t.concat(e.slice(1))}(e.children)}]}))},{type:"field-button",data:{hName:"input",hProperties:{onclick:`check('mc_${t}',[${String(a)}])`,value:"Validate",type:"button"}}}],t++),e})}(e),"function"==typeof n?n(null,e,t):e}};function St(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ft(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Tt={prop:{},eaten:""},bt={defaultValue:function(){}};var Ct=function(e,t,n){var r="",a=!1,i=!1,o=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?St(n,!0).forEach(function(t){ft(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):St(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},bt,{},n);if("function"!=typeof o.defaultValue){var s=o.defaultValue;o.defaultValue=function(){return s}}var l,c,d={},_="";void 0===t&&(t=0);var u=function(){return t>=e.length||"\n\r{}".indexOf(e[t])>-1?(a&&"}"!==e[t]&&(i=!0),!0):"}"===e[t]&&a},m="",p=function(n){for(m="";t<e.length&&"\n\r{}".indexOf(e.charAt(t))<0&&n.indexOf(e.charAt(t))>=0;)r+=e.charAt(t),m+=e.charAt(t),t++;return u()},g=function(n){for(m="";t<e.length&&"\n\r{}".indexOf(e.charAt(t))<0&&n.indexOf(e.charAt(t))<0;)r+=e.charAt(t),m+=e.charAt(t),t++;return _?l=m:_=m,u()},E=function(e,n){return r+=e,t++,!n&&u()},h=function(n){return E(n,!0),function(n){if(m="",e[t]!==n){for(;t<e.length&&(n!==e[t]||"\\"===e[t-1])&&"\n"!==e[t]&&"\r"!==e[t];)r+=e.charAt(t),m+=e.charAt(t),t++;"\n"===e[t]||"\r"===e[t]||t>=e.length?i=!0:(_?l=m.replace(/\\"/g,'"'):_=m.replace(/\\"/g,'"'),u())}}(n),e.charAt(t)!==n?Tt:E(n)?-1:void 0},S=!1,f=function(){switch(c){case"id":S?(d.id=_,S=!1):d.id=d.id||_;break;case"class":d.class||(d.class=[]),d.class.indexOf(_)<0&&d.class.push(_);break;case"key":if(!_)return Tt;_ in d?"class"===_&&Boolean(l)&&d.class.push(l):(d[_]=void 0===l?o.defaultValue(_):"class"===_?[l]:l,"id"===_&&(S=!0))}c=void 0,_="",l=void 0};for(p(" \t\v"),"{"===e[t]&&(E("{"),a=!0);!u()&&!p(" \t\v");){if("."===e.charAt(t)){if(c="class",E(".")){i=!0;break}}else if("#"===e.charAt(t)){if(c="id",E("#")){i=!0;break}}else c="key";if(g("=\t\b\v  ")||!_)break;if("="===e.charAt(t)&&"key"===c){if(E("="))break;if('"'===e.charAt(t)){var T=h('"');if(-1===T)break;if(T===Tt)return Tt}else if("'"===e.charAt(t)){var b=h("'");if(-1===b)break;if(b===Tt)return Tt}else if(g(" \t\n\r\v=}"))break}f()}if(f(),a){if(!(t<e.length&&"}"===e[t]))return Tt;a=!1,E("}")}return i?Tt:{prop:d,eaten:r}},Nt="[__",vt="__]";function Rt(e,t){return e.indexOf(Nt,t)}var At=function(){function e(e,t){if(t.startsWith(Nt)){for(var n="",r=Nt.length,a=t.length;!t.startsWith(vt,r)&&r<a;){if(n+=t.charAt(r),"\n"===t.charAt(r))return!0;r++}var i="",o={};if("{"===t.charAt(r+vt.length)){var s=Ct(t,r+vt.length);i=s.eaten,o=s.prop}return"password"!==o.type&&(o.type="text"),o.placeholder=n.replace(/^_*/g,"").replace(/_*$/g,"")||void 0,!(r<a)||e(Nt+n+vt+i)({type:"line-input",children:[],data:{hName:"input",hProperties:o}})}}e.locator=Rt;var t=this.Parser,n=t.prototype.inlineTokenizers,r=t.prototype.inlineMethods;n.input=e,r.splice(r.indexOf("url"),0,"input");var a=this.Compiler;a&&(a.prototype.visitors.lineinput=function(e){return"[__".concat(this.all(e).join(""),"__]")})};const Ot="[",yt=/(\| *[vV] *])({[^\n]*})?/;function It(e,t){return e.indexOf(Ot,t)}var Dt=function(){let e="|v]";function t(t,n){if(!this.options.gfm||!n.startsWith(Ot))return;let r="",a=1;const{length:i}=n,o=t.now();o.column+=2,o.offset+=2;let s=null;if(!((s=n.substr(1).match(yt))&&a<i))return;r+=n.substr(1,s.index),e=s[1],a+=s.index+e.length;let l="",c={};if("{"===n.charAt(a)){const e=Ct(n,a);a+=(l=e.eaten).length,c=e.prop}return!(a<=i)||t(Ot+r+e+l)({type:"select",children:[],data:{hName:"select",hProperties:c,hChildren:r.split("|").filter(e=>e).map(e=>{const t=e.trim();return{type:"element",tagName:"option",properties:{value:t},children:[{type:"text",value:t}]}})}})}t.locator=It;const{Parser:n}=this,{inlineTokenizers:r}=n.prototype,{inlineMethods:a}=n.prototype;r.select=t,a.splice(a.indexOf("url"),0,"select");const{Compiler:i}=this;if(i){const{visitors:t}=i.prototype;t.lineselect=function(t){return Ot+this.all(t).join("")+e}}};const xt=/^(\[_+\n)/g,Mt=/(_+])/g;function wt(e,t){return e.indexOf(xt,t)}var Lt=function(){function e(e,t){if(!this.options.gfm||0!==t.search(xt))return;let n={class:void 0,id:void 0},r="";if(t.search(Mt)>0){if(t.search(Mt)+t.match(Mt)[0].length<t.length&&"{"===t.charAt(t.search(Mt)+t.match(Mt)[0].length)){const e=Ct(t,t.search(Mt)+t.match(Mt)[0].length);r=e.eaten,n=e.prop}let a=t.search(Mt);return a!==t.match(xt)[0].length&&(a-=1),e(t.slice(0,t.search(Mt)+t.match(Mt)[0].length)+r)({type:"textarea",data:{hName:"TEXTAREA",hProperties:n,hChildren:[{type:"text",value:t.slice(t.match(xt)[0].length,a)}]}})}return!0}e.locator=wt;const{Parser:t}=this,{blockTokenizers:n}=t.prototype,{blockMethods:r}=t.prototype;n.textinput=e,r.splice(r.indexOf("fencedCode")+1,0,"textinput");const{Compiler:a}=this;if(a){const{visitors:e}=a.prototype;e.textinput=function(e){return`[__${this.all(e).join("")}__]`}}};const Pt=[65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];var kt={REPLACEMENT_CHARACTER:"�",CODE_POINTS:{EOF:-1,NULL:0,TABULATION:9,CARRIAGE_RETURN:13,LINE_FEED:10,FORM_FEED:12,SPACE:32,EXCLAMATION_MARK:33,QUOTATION_MARK:34,NUMBER_SIGN:35,AMPERSAND:38,APOSTROPHE:39,HYPHEN_MINUS:45,SOLIDUS:47,DIGIT_0:48,DIGIT_9:57,SEMICOLON:59,LESS_THAN_SIGN:60,EQUALS_SIGN:61,GREATER_THAN_SIGN:62,QUESTION_MARK:63,LATIN_CAPITAL_A:65,LATIN_CAPITAL_F:70,LATIN_CAPITAL_X:88,LATIN_CAPITAL_Z:90,RIGHT_SQUARE_BRACKET:93,GRAVE_ACCENT:96,LATIN_SMALL_A:97,LATIN_SMALL_F:102,LATIN_SMALL_X:120,LATIN_SMALL_Z:122,REPLACEMENT_CHARACTER:65533},CODE_POINT_SEQUENCES:{DASH_DASH_STRING:[45,45],DOCTYPE_STRING:[68,79,67,84,89,80,69],CDATA_START_STRING:[91,67,68,65,84,65,91],SCRIPT_STRING:[115,99,114,105,112,116],PUBLIC_STRING:[80,85,66,76,73,67],SYSTEM_STRING:[83,89,83,84,69,77]},isSurrogate:function(e){return e>=55296&&e<=57343},isSurrogatePair:function(e){return e>=56320&&e<=57343},getSurrogatePairCodePoint:function(e,t){return 1024*(e-55296)+9216+t},isControlCodePoint:function(e){return 32!==e&&10!==e&&13!==e&&9!==e&&12!==e&&e>=1&&e<=31||e>=127&&e<=159},isUndefinedCodePoint:function(e){return e>=64976&&e<=65007||Pt.indexOf(e)>-1}},Ut={controlCharacterInInputStream:"control-character-in-input-stream",noncharacterInInputStream:"noncharacter-in-input-stream",surrogateInInputStream:"surrogate-in-input-stream",nonVoidHtmlElementStartTagWithTrailingSolidus:"non-void-html-element-start-tag-with-trailing-solidus",endTagWithAttributes:"end-tag-with-attributes",endTagWithTrailingSolidus:"end-tag-with-trailing-solidus",unexpectedSolidusInTag:"unexpected-solidus-in-tag",unexpectedNullCharacter:"unexpected-null-character",unexpectedQuestionMarkInsteadOfTagName:"unexpected-question-mark-instead-of-tag-name",invalidFirstCharacterOfTagName:"invalid-first-character-of-tag-name",unexpectedEqualsSignBeforeAttributeName:"unexpected-equals-sign-before-attribute-name",missingEndTagName:"missing-end-tag-name",unexpectedCharacterInAttributeName:"unexpected-character-in-attribute-name",unknownNamedCharacterReference:"unknown-named-character-reference",missingSemicolonAfterCharacterReference:"missing-semicolon-after-character-reference",unexpectedCharacterAfterDoctypeSystemIdentifier:"unexpected-character-after-doctype-system-identifier",unexpectedCharacterInUnquotedAttributeValue:"unexpected-character-in-unquoted-attribute-value",eofBeforeTagName:"eof-before-tag-name",eofInTag:"eof-in-tag",missingAttributeValue:"missing-attribute-value",missingWhitespaceBetweenAttributes:"missing-whitespace-between-attributes",missingWhitespaceAfterDoctypePublicKeyword:"missing-whitespace-after-doctype-public-keyword",missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:"missing-whitespace-between-doctype-public-and-system-identifiers",missingWhitespaceAfterDoctypeSystemKeyword:"missing-whitespace-after-doctype-system-keyword",missingQuoteBeforeDoctypePublicIdentifier:"missing-quote-before-doctype-public-identifier",missingQuoteBeforeDoctypeSystemIdentifier:"missing-quote-before-doctype-system-identifier",missingDoctypePublicIdentifier:"missing-doctype-public-identifier",missingDoctypeSystemIdentifier:"missing-doctype-system-identifier",abruptDoctypePublicIdentifier:"abrupt-doctype-public-identifier",abruptDoctypeSystemIdentifier:"abrupt-doctype-system-identifier",cdataInHtmlContent:"cdata-in-html-content",incorrectlyOpenedComment:"incorrectly-opened-comment",eofInScriptHtmlCommentLikeText:"eof-in-script-html-comment-like-text",eofInDoctype:"eof-in-doctype",nestedComment:"nested-comment",abruptClosingOfEmptyComment:"abrupt-closing-of-empty-comment",eofInComment:"eof-in-comment",incorrectlyClosedComment:"incorrectly-closed-comment",eofInCdata:"eof-in-cdata",absenceOfDigitsInNumericCharacterReference:"absence-of-digits-in-numeric-character-reference",nullCharacterReference:"null-character-reference",surrogateCharacterReference:"surrogate-character-reference",characterReferenceOutsideUnicodeRange:"character-reference-outside-unicode-range",controlCharacterReference:"control-character-reference",noncharacterCharacterReference:"noncharacter-character-reference",missingWhitespaceBeforeDoctypeName:"missing-whitespace-before-doctype-name",missingDoctypeName:"missing-doctype-name",invalidCharacterSequenceAfterDoctypeName:"invalid-character-sequence-after-doctype-name",duplicateAttribute:"duplicate-attribute",nonConformingDoctype:"non-conforming-doctype",missingDoctype:"missing-doctype",misplacedDoctype:"misplaced-doctype",endTagWithoutMatchingOpenElement:"end-tag-without-matching-open-element",closingOfElementWithOpenChildElements:"closing-of-element-with-open-child-elements",disallowedContentInNoscriptInHead:"disallowed-content-in-noscript-in-head",openElementsLeftAfterEof:"open-elements-left-after-eof",abandonedHeadElementChild:"abandoned-head-element-child",misplacedStartTagForHeadElement:"misplaced-start-tag-for-head-element",nestedNoscriptInHead:"nested-noscript-in-head",eofInElementThatCanContainOnlyText:"eof-in-element-that-can-contain-only-text"};const Ft=kt.CODE_POINTS,Bt=65536;var Gt=class{constructor(){this.html=null,this.pos=-1,this.lastGapPos=-1,this.lastCharPos=-1,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=Bt}_err(){}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(e){if(this.pos!==this.lastCharPos){const t=this.html.charCodeAt(this.pos+1);if(kt.isSurrogatePair(t))return this.pos++,this._addGap(),kt.getSurrogatePairCodePoint(e,t)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,Ft.EOF;return this._err(Ut.surrogateInInputStream),e}dropParsedChunk(){this.pos>this.bufferWaterline&&(this.lastCharPos-=this.pos,this.html=this.html.substring(this.pos),this.pos=0,this.lastGapPos=-1,this.gapStack=[])}write(e,t){this.html?this.html+=e:this.html=e,this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1,this.html.length),this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1}advance(){if(this.pos++,this.pos>this.lastCharPos)return this.endOfChunkHit=!this.lastChunkWritten,Ft.EOF;let e=this.html.charCodeAt(this.pos);return this.skipNextNewLine&&e===Ft.LINE_FEED?(this.skipNextNewLine=!1,this._addGap(),this.advance()):e===Ft.CARRIAGE_RETURN?(this.skipNextNewLine=!0,Ft.LINE_FEED):(this.skipNextNewLine=!1,kt.isSurrogate(e)&&(e=this._processSurrogate(e)),e>31&&e<127||e===Ft.LINE_FEED||e===Ft.CARRIAGE_RETURN||e>159&&e<64976||this._checkForProblematicCharacters(e),e)}_checkForProblematicCharacters(e){kt.isControlCodePoint(e)?this._err(Ut.controlCharacterInInputStream):kt.isUndefinedCodePoint(e)&&this._err(Ut.noncharacterInInputStream)}retreat(){this.pos===this.lastGapPos&&(this.lastGapPos=this.gapStack.pop(),this.pos--),this.pos--}},Ht=new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4e3,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,1e4,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13e3,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);const Yt=kt.CODE_POINTS,Vt=kt.CODE_POINT_SEQUENCES,zt={128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},qt=1,Kt=2,Wt=4,Qt=qt|Kt|Wt,$t="DATA_STATE",jt="RCDATA_STATE",Xt="RAWTEXT_STATE",Zt="SCRIPT_DATA_STATE",Jt="PLAINTEXT_STATE",en="TAG_OPEN_STATE",tn="END_TAG_OPEN_STATE",nn="TAG_NAME_STATE",rn="RCDATA_LESS_THAN_SIGN_STATE",an="RCDATA_END_TAG_OPEN_STATE",on="RCDATA_END_TAG_NAME_STATE",sn="RAWTEXT_LESS_THAN_SIGN_STATE",ln="RAWTEXT_END_TAG_OPEN_STATE",cn="RAWTEXT_END_TAG_NAME_STATE",dn="SCRIPT_DATA_LESS_THAN_SIGN_STATE",_n="SCRIPT_DATA_END_TAG_OPEN_STATE",un="SCRIPT_DATA_END_TAG_NAME_STATE",mn="SCRIPT_DATA_ESCAPE_START_STATE",pn="SCRIPT_DATA_ESCAPE_START_DASH_STATE",gn="SCRIPT_DATA_ESCAPED_STATE",En="SCRIPT_DATA_ESCAPED_DASH_STATE",hn="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",Sn="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE",fn="SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE",Tn="SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE",bn="SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE",Cn="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",Nn="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE",vn="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE",Rn="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",An="SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE",On="BEFORE_ATTRIBUTE_NAME_STATE",yn="ATTRIBUTE_NAME_STATE",In="AFTER_ATTRIBUTE_NAME_STATE",Dn="BEFORE_ATTRIBUTE_VALUE_STATE",xn="ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE",Mn="ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE",wn="ATTRIBUTE_VALUE_UNQUOTED_STATE",Ln="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE",Pn="SELF_CLOSING_START_TAG_STATE",kn="BOGUS_COMMENT_STATE",Un="MARKUP_DECLARATION_OPEN_STATE",Fn="COMMENT_START_STATE",Bn="COMMENT_START_DASH_STATE",Gn="COMMENT_STATE",Hn="COMMENT_LESS_THAN_SIGN_STATE",Yn="COMMENT_LESS_THAN_SIGN_BANG_STATE",Vn="COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE",zn="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE",qn="COMMENT_END_DASH_STATE",Kn="COMMENT_END_STATE",Wn="COMMENT_END_BANG_STATE",Qn="DOCTYPE_STATE",$n="BEFORE_DOCTYPE_NAME_STATE",jn="DOCTYPE_NAME_STATE",Xn="AFTER_DOCTYPE_NAME_STATE",Zn="AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE",Jn="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE",er="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE",tr="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE",nr="AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE",rr="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE",ar="AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE",ir="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE",or="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE",sr="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE",lr="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE",cr="BOGUS_DOCTYPE_STATE",dr="CDATA_SECTION_STATE",_r="CDATA_SECTION_BRACKET_STATE",ur="CDATA_SECTION_END_STATE",mr="CHARACTER_REFERENCE_STATE",pr="NAMED_CHARACTER_REFERENCE_STATE",gr="AMBIGUOS_AMPERSAND_STATE",Er="NUMERIC_CHARACTER_REFERENCE_STATE",hr="HEXADEMICAL_CHARACTER_REFERENCE_START_STATE",Sr="DECIMAL_CHARACTER_REFERENCE_START_STATE",fr="HEXADEMICAL_CHARACTER_REFERENCE_STATE",Tr="DECIMAL_CHARACTER_REFERENCE_STATE",br="NUMERIC_CHARACTER_REFERENCE_END_STATE";function Cr(e){return e===Yt.SPACE||e===Yt.LINE_FEED||e===Yt.TABULATION||e===Yt.FORM_FEED}function Nr(e){return e>=Yt.DIGIT_0&&e<=Yt.DIGIT_9}function vr(e){return e>=Yt.LATIN_CAPITAL_A&&e<=Yt.LATIN_CAPITAL_Z}function Rr(e){return e>=Yt.LATIN_SMALL_A&&e<=Yt.LATIN_SMALL_Z}function Ar(e){return Rr(e)||vr(e)}function Or(e){return Ar(e)||Nr(e)}function yr(e){return e>=Yt.LATIN_CAPITAL_A&&e<=Yt.LATIN_CAPITAL_F}function Ir(e){return e>=Yt.LATIN_SMALL_A&&e<=Yt.LATIN_SMALL_F}function Dr(e){return e+32}function xr(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(e>>>10&1023|55296)+String.fromCharCode(56320|1023&e))}function Mr(e){return String.fromCharCode(Dr(e))}function wr(e,t){const n=Ht[++e];let r=++e,a=r+n-1;for(;r<=a;){const e=r+a>>>1,i=Ht[e];if(i<t)r=e+1;else{if(!(i>t))return Ht[e+n];a=e-1}}return-1}class Lr{constructor(){this.preprocessor=new Gt,this.tokenQueue=[],this.allowCDATA=!1,this.state=$t,this.returnState="",this.charRefCode=-1,this.tempBuff=[],this.lastStartTagName="",this.consumedAfterSnapshot=-1,this.active=!1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr=null}_err(){}_errOnNextCodePoint(e){this._consume(),this._err(e),this._unconsume()}getNextToken(){for(;!this.tokenQueue.length&&this.active;){this.consumedAfterSnapshot=0;const e=this._consume();this._ensureHibernation()||this[this.state](e)}return this.tokenQueue.shift()}write(e,t){this.active=!0,this.preprocessor.write(e,t)}insertHtmlAtCurrentPos(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e)}_ensureHibernation(){if(this.preprocessor.endOfChunkHit){for(;this.consumedAfterSnapshot>0;this.consumedAfterSnapshot--)this.preprocessor.retreat();return this.active=!1,this.tokenQueue.push({type:Lr.HIBERNATION_TOKEN}),!0}return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_unconsume(){this.consumedAfterSnapshot--,this.preprocessor.retreat()}_reconsumeInState(e){this.state=e,this._unconsume()}_consumeSequenceIfMatch(e,t,n){let r=0,a=!0;const i=e.length;let o=0,s=t,l=void 0;for(;o<i;o++){if(o>0&&(s=this._consume(),r++),s===Yt.EOF){a=!1;break}if(s!==(l=e[o])&&(n||s!==Dr(l))){a=!1;break}}if(!a)for(;r--;)this._unconsume();return a}_isTempBufferEqualToScriptString(){if(this.tempBuff.length!==Vt.SCRIPT_STRING.length)return!1;for(let e=0;e<this.tempBuff.length;e++)if(this.tempBuff[e]!==Vt.SCRIPT_STRING[e])return!1;return!0}_createStartTagToken(){this.currentToken={type:Lr.START_TAG_TOKEN,tagName:"",selfClosing:!1,ackSelfClosing:!1,attrs:[]}}_createEndTagToken(){this.currentToken={type:Lr.END_TAG_TOKEN,tagName:"",selfClosing:!1,attrs:[]}}_createCommentToken(){this.currentToken={type:Lr.COMMENT_TOKEN,data:""}}_createDoctypeToken(e){this.currentToken={type:Lr.DOCTYPE_TOKEN,name:e,forceQuirks:!1,publicId:null,systemId:null}}_createCharacterToken(e,t){this.currentCharacterToken={type:e,chars:t}}_createEOFToken(){this.currentToken={type:Lr.EOF_TOKEN}}_createAttr(e){this.currentAttr={name:e,value:""}}_leaveAttrName(e){null===Lr.getTokenAttr(this.currentToken,this.currentAttr.name)?this.currentToken.attrs.push(this.currentAttr):this._err(Ut.duplicateAttribute),this.state=e}_leaveAttrValue(e){this.state=e}_emitCurrentToken(){this._emitCurrentCharacterToken();const e=this.currentToken;this.currentToken=null,e.type===Lr.START_TAG_TOKEN?this.lastStartTagName=e.tagName:e.type===Lr.END_TAG_TOKEN&&(e.attrs.length>0&&this._err(Ut.endTagWithAttributes),e.selfClosing&&this._err(Ut.endTagWithTrailingSolidus)),this.tokenQueue.push(e)}_emitCurrentCharacterToken(){this.currentCharacterToken&&(this.tokenQueue.push(this.currentCharacterToken),this.currentCharacterToken=null)}_emitEOFToken(){this._createEOFToken(),this._emitCurrentToken()}_appendCharToCurrentCharacterToken(e,t){this.currentCharacterToken&&this.currentCharacterToken.type!==e&&this._emitCurrentCharacterToken(),this.currentCharacterToken?this.currentCharacterToken.chars+=t:this._createCharacterToken(e,t)}_emitCodePoint(e){let t=Lr.CHARACTER_TOKEN;Cr(e)?t=Lr.WHITESPACE_CHARACTER_TOKEN:e===Yt.NULL&&(t=Lr.NULL_CHARACTER_TOKEN),this._appendCharToCurrentCharacterToken(t,xr(e))}_emitSeveralCodePoints(e){for(let t=0;t<e.length;t++)this._emitCodePoint(e[t])}_emitChars(e){this._appendCharToCurrentCharacterToken(Lr.CHARACTER_TOKEN,e)}_matchNamedCharacterReference(e){let t=null,n=1,r=wr(0,e);for(this.tempBuff.push(e);r>-1;){const e=Ht[r],a=e<Qt;a&&e&qt&&(t=e&Kt?[Ht[++r],Ht[++r]]:[Ht[++r]],n=0);const i=this._consume();if(this.tempBuff.push(i),n++,i===Yt.EOF)break;r=a?e&Wt?wr(r,i):-1:i===e?++r:-1}for(;n--;)this.tempBuff.pop(),this._unconsume();return t}_isCharacterReferenceInAttribute(){return this.returnState===xn||this.returnState===Mn||this.returnState===wn}_isCharacterReferenceAttributeQuirk(e){if(!e&&this._isCharacterReferenceInAttribute()){const e=this._consume();return this._unconsume(),e===Yt.EQUALS_SIGN||Or(e)}return!1}_flushCodePointsConsumedAsCharacterReference(){if(this._isCharacterReferenceInAttribute())for(let e=0;e<this.tempBuff.length;e++)this.currentAttr.value+=xr(this.tempBuff[e]);else this._emitSeveralCodePoints(this.tempBuff);this.tempBuff=[]}[$t](e){this.preprocessor.dropParsedChunk(),e===Yt.LESS_THAN_SIGN?this.state=en:e===Yt.AMPERSAND?(this.returnState=$t,this.state=mr):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitCodePoint(e)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[jt](e){this.preprocessor.dropParsedChunk(),e===Yt.AMPERSAND?(this.returnState=jt,this.state=mr):e===Yt.LESS_THAN_SIGN?this.state=rn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[Xt](e){this.preprocessor.dropParsedChunk(),e===Yt.LESS_THAN_SIGN?this.state=sn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[Zt](e){this.preprocessor.dropParsedChunk(),e===Yt.LESS_THAN_SIGN?this.state=dn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[Jt](e){this.preprocessor.dropParsedChunk(),e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[en](e){e===Yt.EXCLAMATION_MARK?this.state=Un:e===Yt.SOLIDUS?this.state=tn:Ar(e)?(this._createStartTagToken(),this._reconsumeInState(nn)):e===Yt.QUESTION_MARK?(this._err(Ut.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(),this._reconsumeInState(kn)):e===Yt.EOF?(this._err(Ut.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken()):(this._err(Ut.invalidFirstCharacterOfTagName),this._emitChars("<"),this._reconsumeInState($t))}[tn](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(nn)):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingEndTagName),this.state=$t):e===Yt.EOF?(this._err(Ut.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken()):(this._err(Ut.invalidFirstCharacterOfTagName),this._createCommentToken(),this._reconsumeInState(kn))}[nn](e){Cr(e)?this.state=On:e===Yt.SOLIDUS?this.state=Pn:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):vr(e)?this.currentToken.tagName+=Mr(e):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.tagName+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentToken.tagName+=xr(e)}[rn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=an):(this._emitChars("<"),this._reconsumeInState(jt))}[an](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(on)):(this._emitChars("</"),this._reconsumeInState(jt))}[on](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this.state=$t,void this._emitCurrentToken()}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(jt)}}[sn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=ln):(this._emitChars("<"),this._reconsumeInState(Xt))}[ln](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(cn)):(this._emitChars("</"),this._reconsumeInState(Xt))}[cn](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=$t)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(Xt)}}[dn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=_n):e===Yt.EXCLAMATION_MARK?(this.state=mn,this._emitChars("<!")):(this._emitChars("<"),this._reconsumeInState(Zt))}[_n](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(un)):(this._emitChars("</"),this._reconsumeInState(Zt))}[un](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=$t)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(Zt)}}[mn](e){e===Yt.HYPHEN_MINUS?(this.state=pn,this._emitChars("-")):this._reconsumeInState(Zt)}[pn](e){e===Yt.HYPHEN_MINUS?(this.state=hn,this._emitChars("-")):this._reconsumeInState(Zt)}[gn](e){e===Yt.HYPHEN_MINUS?(this.state=En,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?this.state=Sn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):this._emitCodePoint(e)}[En](e){e===Yt.HYPHEN_MINUS?(this.state=hn,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?this.state=Sn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=gn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=gn,this._emitCodePoint(e))}[hn](e){e===Yt.HYPHEN_MINUS?this._emitChars("-"):e===Yt.LESS_THAN_SIGN?this.state=Sn:e===Yt.GREATER_THAN_SIGN?(this.state=Zt,this._emitChars(">")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=gn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=gn,this._emitCodePoint(e))}[Sn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=fn):Ar(e)?(this.tempBuff=[],this._emitChars("<"),this._reconsumeInState(bn)):(this._emitChars("<"),this._reconsumeInState(gn))}[fn](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(Tn)):(this._emitChars("</"),this._reconsumeInState(gn))}[Tn](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=$t)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(gn)}}[bn](e){Cr(e)||e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?Cn:gn,this._emitCodePoint(e)):vr(e)?(this.tempBuff.push(Dr(e)),this._emitCodePoint(e)):Rr(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(gn)}[Cn](e){e===Yt.HYPHEN_MINUS?(this.state=Nn,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?(this.state=Rn,this._emitChars("<")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):this._emitCodePoint(e)}[Nn](e){e===Yt.HYPHEN_MINUS?(this.state=vn,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?(this.state=Rn,this._emitChars("<")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=Cn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=Cn,this._emitCodePoint(e))}[vn](e){e===Yt.HYPHEN_MINUS?this._emitChars("-"):e===Yt.LESS_THAN_SIGN?(this.state=Rn,this._emitChars("<")):e===Yt.GREATER_THAN_SIGN?(this.state=Zt,this._emitChars(">")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=Cn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=Cn,this._emitCodePoint(e))}[Rn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=An,this._emitChars("/")):this._reconsumeInState(Cn)}[An](e){Cr(e)||e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?gn:Cn,this._emitCodePoint(e)):vr(e)?(this.tempBuff.push(Dr(e)),this._emitCodePoint(e)):Rr(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(Cn)}[On](e){Cr(e)||(e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN||e===Yt.EOF?this._reconsumeInState(In):e===Yt.EQUALS_SIGN?(this._err(Ut.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=yn):(this._createAttr(""),this._reconsumeInState(yn)))}[yn](e){Cr(e)||e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN||e===Yt.EOF?(this._leaveAttrName(In),this._unconsume()):e===Yt.EQUALS_SIGN?this._leaveAttrName(Dn):vr(e)?this.currentAttr.name+=Mr(e):e===Yt.QUOTATION_MARK||e===Yt.APOSTROPHE||e===Yt.LESS_THAN_SIGN?(this._err(Ut.unexpectedCharacterInAttributeName),this.currentAttr.name+=xr(e)):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.name+=kt.REPLACEMENT_CHARACTER):this.currentAttr.name+=xr(e)}[In](e){Cr(e)||(e===Yt.SOLIDUS?this.state=Pn:e===Yt.EQUALS_SIGN?this.state=Dn:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):(this._createAttr(""),this._reconsumeInState(yn)))}[Dn](e){Cr(e)||(e===Yt.QUOTATION_MARK?this.state=xn:e===Yt.APOSTROPHE?this.state=Mn:e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingAttributeValue),this.state=$t,this._emitCurrentToken()):this._reconsumeInState(wn))}[xn](e){e===Yt.QUOTATION_MARK?this.state=Ln:e===Yt.AMPERSAND?(this.returnState=xn,this.state=mr):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.value+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentAttr.value+=xr(e)}[Mn](e){e===Yt.APOSTROPHE?this.state=Ln:e===Yt.AMPERSAND?(this.returnState=Mn,this.state=mr):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.value+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentAttr.value+=xr(e)}[wn](e){Cr(e)?this._leaveAttrValue(On):e===Yt.AMPERSAND?(this.returnState=wn,this.state=mr):e===Yt.GREATER_THAN_SIGN?(this._leaveAttrValue($t),this._emitCurrentToken()):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.value+=kt.REPLACEMENT_CHARACTER):e===Yt.QUOTATION_MARK||e===Yt.APOSTROPHE||e===Yt.LESS_THAN_SIGN||e===Yt.EQUALS_SIGN||e===Yt.GRAVE_ACCENT?(this._err(Ut.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=xr(e)):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentAttr.value+=xr(e)}[Ln](e){Cr(e)?this._leaveAttrValue(On):e===Yt.SOLIDUS?this._leaveAttrValue(Pn):e===Yt.GREATER_THAN_SIGN?(this._leaveAttrValue($t),this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):(this._err(Ut.missingWhitespaceBetweenAttributes),this._reconsumeInState(On))}[Pn](e){e===Yt.GREATER_THAN_SIGN?(this.currentToken.selfClosing=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):(this._err(Ut.unexpectedSolidusInTag),this._reconsumeInState(On))}[kn](e){e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._emitCurrentToken(),this._emitEOFToken()):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.data+=kt.REPLACEMENT_CHARACTER):this.currentToken.data+=xr(e)}[Un](e){this._consumeSequenceIfMatch(Vt.DASH_DASH_STRING,e,!0)?(this._createCommentToken(),this.state=Fn):this._consumeSequenceIfMatch(Vt.DOCTYPE_STRING,e,!1)?this.state=Qn:this._consumeSequenceIfMatch(Vt.CDATA_START_STRING,e,!0)?this.allowCDATA?this.state=dr:(this._err(Ut.cdataInHtmlContent),this._createCommentToken(),this.currentToken.data="[CDATA[",this.state=kn):this._ensureHibernation()||(this._err(Ut.incorrectlyOpenedComment),this._createCommentToken(),this._reconsumeInState(kn))}[Fn](e){e===Yt.HYPHEN_MINUS?this.state=Bn:e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptClosingOfEmptyComment),this.state=$t,this._emitCurrentToken()):this._reconsumeInState(Gn)}[Bn](e){e===Yt.HYPHEN_MINUS?this.state=Kn:e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptClosingOfEmptyComment),this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(Gn))}[Gn](e){e===Yt.HYPHEN_MINUS?this.state=qn:e===Yt.LESS_THAN_SIGN?(this.currentToken.data+="<",this.state=Hn):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.data+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.data+=xr(e)}[Hn](e){e===Yt.EXCLAMATION_MARK?(this.currentToken.data+="!",this.state=Yn):e===Yt.LESS_THAN_SIGN?this.currentToken.data+="!":this._reconsumeInState(Gn)}[Yn](e){e===Yt.HYPHEN_MINUS?this.state=Vn:this._reconsumeInState(Gn)}[Vn](e){e===Yt.HYPHEN_MINUS?this.state=zn:this._reconsumeInState(qn)}[zn](e){e!==Yt.GREATER_THAN_SIGN&&e!==Yt.EOF&&this._err(Ut.nestedComment),this._reconsumeInState(Kn)}[qn](e){e===Yt.HYPHEN_MINUS?this.state=Kn:e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(Gn))}[Kn](e){e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EXCLAMATION_MARK?this.state=Wn:e===Yt.HYPHEN_MINUS?this.currentToken.data+="-":e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--",this._reconsumeInState(Gn))}[Wn](e){e===Yt.HYPHEN_MINUS?(this.currentToken.data+="--!",this.state=qn):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.incorrectlyClosedComment),this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--!",this._reconsumeInState(Gn))}[Qn](e){Cr(e)?this.state=$n:e===Yt.GREATER_THAN_SIGN?this._reconsumeInState($n):e===Yt.EOF?(this._err(Ut.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingWhitespaceBeforeDoctypeName),this._reconsumeInState($n))}[$n](e){Cr(e)||(vr(e)?(this._createDoctypeToken(Mr(e)),this.state=jn):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._createDoctypeToken(kt.REPLACEMENT_CHARACTER),this.state=jn):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypeName),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._createDoctypeToken(xr(e)),this.state=jn))}[jn](e){Cr(e)?this.state=Xn:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):vr(e)?this.currentToken.name+=Mr(e):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.name+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.name+=xr(e)}[Xn](e){Cr(e)||(e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this._consumeSequenceIfMatch(Vt.PUBLIC_STRING,e,!1)?this.state=Zn:this._consumeSequenceIfMatch(Vt.SYSTEM_STRING,e,!1)?this.state=ar:this._ensureHibernation()||(this._err(Ut.invalidCharacterSequenceAfterDoctypeName),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[Zn](e){Cr(e)?this.state=Jn:e===Yt.QUOTATION_MARK?(this._err(Ut.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=er):e===Yt.APOSTROPHE?(this._err(Ut.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=tr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr))}[Jn](e){Cr(e)||(e===Yt.QUOTATION_MARK?(this.currentToken.publicId="",this.state=er):e===Yt.APOSTROPHE?(this.currentToken.publicId="",this.state=tr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[er](e){e===Yt.QUOTATION_MARK?this.state=nr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.publicId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=xr(e)}[tr](e){e===Yt.APOSTROPHE?this.state=nr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.publicId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=xr(e)}[nr](e){Cr(e)?this.state=rr:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.QUOTATION_MARK?(this._err(Ut.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this._err(Ut.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=sr):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr))}[rr](e){Cr(e)||(e===Yt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=$t):e===Yt.QUOTATION_MARK?(this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this.currentToken.systemId="",this.state=sr):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[ar](e){Cr(e)?this.state=ir:e===Yt.QUOTATION_MARK?(this._err(Ut.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this._err(Ut.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=sr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr))}[ir](e){Cr(e)||(e===Yt.QUOTATION_MARK?(this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this.currentToken.systemId="",this.state=sr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[or](e){e===Yt.QUOTATION_MARK?this.state=lr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.systemId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=xr(e)}[sr](e){e===Yt.APOSTROPHE?this.state=lr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.systemId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=xr(e)}[lr](e){Cr(e)||(e===Yt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.unexpectedCharacterAfterDoctypeSystemIdentifier),this._reconsumeInState(cr)))}[cr](e){e===Yt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=$t):e===Yt.NULL?this._err(Ut.unexpectedNullCharacter):e===Yt.EOF&&(this._emitCurrentToken(),this._emitEOFToken())}[dr](e){e===Yt.RIGHT_SQUARE_BRACKET?this.state=_r:e===Yt.EOF?(this._err(Ut.eofInCdata),this._emitEOFToken()):this._emitCodePoint(e)}[_r](e){e===Yt.RIGHT_SQUARE_BRACKET?this.state=ur:(this._emitChars("]"),this._reconsumeInState(dr))}[ur](e){e===Yt.GREATER_THAN_SIGN?this.state=$t:e===Yt.RIGHT_SQUARE_BRACKET?this._emitChars("]"):(this._emitChars("]]"),this._reconsumeInState(dr))}[mr](e){this.tempBuff=[Yt.AMPERSAND],e===Yt.NUMBER_SIGN?(this.tempBuff.push(e),this.state=Er):Or(e)?this._reconsumeInState(pr):(this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[pr](e){const t=this._matchNamedCharacterReference(e);if(this._ensureHibernation())this.tempBuff=[Yt.AMPERSAND];else if(t){const e=this.tempBuff[this.tempBuff.length-1]===Yt.SEMICOLON;this._isCharacterReferenceAttributeQuirk(e)||(e||this._errOnNextCodePoint(Ut.missingSemicolonAfterCharacterReference),this.tempBuff=t),this._flushCodePointsConsumedAsCharacterReference(),this.state=this.returnState}else this._flushCodePointsConsumedAsCharacterReference(),this.state=gr}[gr](e){Or(e)?this._isCharacterReferenceInAttribute()?this.currentAttr.value+=xr(e):this._emitCodePoint(e):(e===Yt.SEMICOLON&&this._err(Ut.unknownNamedCharacterReference),this._reconsumeInState(this.returnState))}[Er](e){this.charRefCode=0,e===Yt.LATIN_SMALL_X||e===Yt.LATIN_CAPITAL_X?(this.tempBuff.push(e),this.state=hr):this._reconsumeInState(Sr)}[hr](e){!function(e){return Nr(e)||yr(e)||Ir(e)}(e)?(this._err(Ut.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)):this._reconsumeInState(fr)}[Sr](e){Nr(e)?this._reconsumeInState(Tr):(this._err(Ut.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[fr](e){yr(e)?this.charRefCode=16*this.charRefCode+e-55:Ir(e)?this.charRefCode=16*this.charRefCode+e-87:Nr(e)?this.charRefCode=16*this.charRefCode+e-48:e===Yt.SEMICOLON?this.state=br:(this._err(Ut.missingSemicolonAfterCharacterReference),this._reconsumeInState(br))}[Tr](e){Nr(e)?this.charRefCode=10*this.charRefCode+e-48:e===Yt.SEMICOLON?this.state=br:(this._err(Ut.missingSemicolonAfterCharacterReference),this._reconsumeInState(br))}[br](){if(this.charRefCode===Yt.NULL)this._err(Ut.nullCharacterReference),this.charRefCode=Yt.REPLACEMENT_CHARACTER;else if(this.charRefCode>1114111)this._err(Ut.characterReferenceOutsideUnicodeRange),this.charRefCode=Yt.REPLACEMENT_CHARACTER;else if(kt.isSurrogate(this.charRefCode))this._err(Ut.surrogateCharacterReference),this.charRefCode=Yt.REPLACEMENT_CHARACTER;else if(kt.isUndefinedCodePoint(this.charRefCode))this._err(Ut.noncharacterCharacterReference);else if(kt.isControlCodePoint(this.charRefCode)||this.charRefCode===Yt.CARRIAGE_RETURN){this._err(Ut.controlCharacterReference);const e=zt[this.charRefCode];e&&(this.charRefCode=e)}this.tempBuff=[this.charRefCode],this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)}}Lr.CHARACTER_TOKEN="CHARACTER_TOKEN",Lr.NULL_CHARACTER_TOKEN="NULL_CHARACTER_TOKEN",Lr.WHITESPACE_CHARACTER_TOKEN="WHITESPACE_CHARACTER_TOKEN",Lr.START_TAG_TOKEN="START_TAG_TOKEN",Lr.END_TAG_TOKEN="END_TAG_TOKEN",Lr.COMMENT_TOKEN="COMMENT_TOKEN",Lr.DOCTYPE_TOKEN="DOCTYPE_TOKEN",Lr.EOF_TOKEN="EOF_TOKEN",Lr.HIBERNATION_TOKEN="HIBERNATION_TOKEN",Lr.MODE={DATA:$t,RCDATA:jt,RAWTEXT:Xt,SCRIPT_DATA:Zt,PLAINTEXT:Jt},Lr.getTokenAttr=function(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null};var Pr=Lr,kr=b(function(e,t){const n=t.NAMESPACES={HTML:"http://www.w3.org/1999/xhtml",MATHML:"http://www.w3.org/1998/Math/MathML",SVG:"http://www.w3.org/2000/svg",XLINK:"http://www.w3.org/1999/xlink",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"};t.ATTRS={TYPE:"type",ACTION:"action",ENCODING:"encoding",PROMPT:"prompt",NAME:"name",COLOR:"color",FACE:"face",SIZE:"size"},t.DOCUMENT_MODE={NO_QUIRKS:"no-quirks",QUIRKS:"quirks",LIMITED_QUIRKS:"limited-quirks"};const r=t.TAG_NAMES={A:"a",ADDRESS:"address",ANNOTATION_XML:"annotation-xml",APPLET:"applet",AREA:"area",ARTICLE:"article",ASIDE:"aside",B:"b",BASE:"base",BASEFONT:"basefont",BGSOUND:"bgsound",BIG:"big",BLOCKQUOTE:"blockquote",BODY:"body",BR:"br",BUTTON:"button",CAPTION:"caption",CENTER:"center",CODE:"code",COL:"col",COLGROUP:"colgroup",DD:"dd",DESC:"desc",DETAILS:"details",DIALOG:"dialog",DIR:"dir",DIV:"div",DL:"dl",DT:"dt",EM:"em",EMBED:"embed",FIELDSET:"fieldset",FIGCAPTION:"figcaption",FIGURE:"figure",FONT:"font",FOOTER:"footer",FOREIGN_OBJECT:"foreignObject",FORM:"form",FRAME:"frame",FRAMESET:"frameset",H1:"h1",H2:"h2",H3:"h3",H4:"h4",H5:"h5",H6:"h6",HEAD:"head",HEADER:"header",HGROUP:"hgroup",HR:"hr",HTML:"html",I:"i",IMG:"img",IMAGE:"image",INPUT:"input",IFRAME:"iframe",KEYGEN:"keygen",LABEL:"label",LI:"li",LINK:"link",LISTING:"listing",MAIN:"main",MALIGNMARK:"malignmark",MARQUEE:"marquee",MATH:"math",MENU:"menu",META:"meta",MGLYPH:"mglyph",MI:"mi",MO:"mo",MN:"mn",MS:"ms",MTEXT:"mtext",NAV:"nav",NOBR:"nobr",NOFRAMES:"noframes",NOEMBED:"noembed",NOSCRIPT:"noscript",OBJECT:"object",OL:"ol",OPTGROUP:"optgroup",OPTION:"option",P:"p",PARAM:"param",PLAINTEXT:"plaintext",PRE:"pre",RB:"rb",RP:"rp",RT:"rt",RTC:"rtc",RUBY:"ruby",S:"s",SCRIPT:"script",SECTION:"section",SELECT:"select",SOURCE:"source",SMALL:"small",SPAN:"span",STRIKE:"strike",STRONG:"strong",STYLE:"style",SUB:"sub",SUMMARY:"summary",SUP:"sup",TABLE:"table",TBODY:"tbody",TEMPLATE:"template",TEXTAREA:"textarea",TFOOT:"tfoot",TD:"td",TH:"th",THEAD:"thead",TITLE:"title",TR:"tr",TRACK:"track",TT:"tt",U:"u",UL:"ul",SVG:"svg",VAR:"var",WBR:"wbr",XMP:"xmp"};t.SPECIAL_ELEMENTS={[n.HTML]:{[r.ADDRESS]:!0,[r.APPLET]:!0,[r.AREA]:!0,[r.ARTICLE]:!0,[r.ASIDE]:!0,[r.BASE]:!0,[r.BASEFONT]:!0,[r.BGSOUND]:!0,[r.BLOCKQUOTE]:!0,[r.BODY]:!0,[r.BR]:!0,[r.BUTTON]:!0,[r.CAPTION]:!0,[r.CENTER]:!0,[r.COL]:!0,[r.COLGROUP]:!0,[r.DD]:!0,[r.DETAILS]:!0,[r.DIR]:!0,[r.DIV]:!0,[r.DL]:!0,[r.DT]:!0,[r.EMBED]:!0,[r.FIELDSET]:!0,[r.FIGCAPTION]:!0,[r.FIGURE]:!0,[r.FOOTER]:!0,[r.FORM]:!0,[r.FRAME]:!0,[r.FRAMESET]:!0,[r.H1]:!0,[r.H2]:!0,[r.H3]:!0,[r.H4]:!0,[r.H5]:!0,[r.H6]:!0,[r.HEAD]:!0,[r.HEADER]:!0,[r.HGROUP]:!0,[r.HR]:!0,[r.HTML]:!0,[r.IFRAME]:!0,[r.IMG]:!0,[r.INPUT]:!0,[r.LI]:!0,[r.LINK]:!0,[r.LISTING]:!0,[r.MAIN]:!0,[r.MARQUEE]:!0,[r.MENU]:!0,[r.META]:!0,[r.NAV]:!0,[r.NOEMBED]:!0,[r.NOFRAMES]:!0,[r.NOSCRIPT]:!0,[r.OBJECT]:!0,[r.OL]:!0,[r.P]:!0,[r.PARAM]:!0,[r.PLAINTEXT]:!0,[r.PRE]:!0,[r.SCRIPT]:!0,[r.SECTION]:!0,[r.SELECT]:!0,[r.SOURCE]:!0,[r.STYLE]:!0,[r.SUMMARY]:!0,[r.TABLE]:!0,[r.TBODY]:!0,[r.TD]:!0,[r.TEMPLATE]:!0,[r.TEXTAREA]:!0,[r.TFOOT]:!0,[r.TH]:!0,[r.THEAD]:!0,[r.TITLE]:!0,[r.TR]:!0,[r.TRACK]:!0,[r.UL]:!0,[r.WBR]:!0,[r.XMP]:!0},[n.MATHML]:{[r.MI]:!0,[r.MO]:!0,[r.MN]:!0,[r.MS]:!0,[r.MTEXT]:!0,[r.ANNOTATION_XML]:!0},[n.SVG]:{[r.TITLE]:!0,[r.FOREIGN_OBJECT]:!0,[r.DESC]:!0}}});kr.NAMESPACES,kr.ATTRS,kr.DOCUMENT_MODE,kr.TAG_NAMES,kr.SPECIAL_ELEMENTS;const Ur=kr.TAG_NAMES,Fr=kr.NAMESPACES;function Br(e){switch(e.length){case 1:return e===Ur.P;case 2:return e===Ur.RB||e===Ur.RP||e===Ur.RT||e===Ur.DD||e===Ur.DT||e===Ur.LI;case 3:return e===Ur.RTC;case 6:return e===Ur.OPTION;case 8:return e===Ur.OPTGROUP}return!1}function Gr(e){switch(e.length){case 1:return e===Ur.P;case 2:return e===Ur.RB||e===Ur.RP||e===Ur.RT||e===Ur.DD||e===Ur.DT||e===Ur.LI||e===Ur.TD||e===Ur.TH||e===Ur.TR;case 3:return e===Ur.RTC;case 5:return e===Ur.TBODY||e===Ur.TFOOT||e===Ur.THEAD;case 6:return e===Ur.OPTION;case 7:return e===Ur.CAPTION;case 8:return e===Ur.OPTGROUP||e===Ur.COLGROUP}return!1}function Hr(e,t){switch(e.length){case 2:if(e===Ur.TD||e===Ur.TH)return t===Fr.HTML;if(e===Ur.MI||e===Ur.MO||e===Ur.MN||e===Ur.MS)return t===Fr.MATHML;break;case 4:if(e===Ur.HTML)return t===Fr.HTML;if(e===Ur.DESC)return t===Fr.SVG;break;case 5:if(e===Ur.TABLE)return t===Fr.HTML;if(e===Ur.MTEXT)return t===Fr.MATHML;if(e===Ur.TITLE)return t===Fr.SVG;break;case 6:return(e===Ur.APPLET||e===Ur.OBJECT)&&t===Fr.HTML;case 7:return(e===Ur.CAPTION||e===Ur.MARQUEE)&&t===Fr.HTML;case 8:return e===Ur.TEMPLATE&&t===Fr.HTML;case 13:return e===Ur.FOREIGN_OBJECT&&t===Fr.SVG;case 14:return e===Ur.ANNOTATION_XML&&t===Fr.MATHML}return!1}var Yr=class{constructor(e,t){this.stackTop=-1,this.items=[],this.current=e,this.currentTagName=null,this.currentTmplContent=null,this.tmplCount=0,this.treeAdapter=t}_indexOf(e){let t=-1;for(let n=this.stackTop;n>=0;n--)if(this.items[n]===e){t=n;break}return t}_isInTemplate(){return this.currentTagName===Ur.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===Fr.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagName=this.current&&this.treeAdapter.getTagName(this.current),this.currentTmplContent=this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):null}push(e){this.items[++this.stackTop]=e,this._updateCurrentElement(),this._isInTemplate()&&this.tmplCount++}pop(){this.stackTop--,this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this._updateCurrentElement()}replace(e,t){const n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&this._updateCurrentElement()}insertAfter(e,t){const n=this._indexOf(e)+1;this.items.splice(n,0,t),n===++this.stackTop&&this._updateCurrentElement()}popUntilTagNamePopped(e){for(;this.stackTop>-1;){const t=this.currentTagName,n=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),t===e&&n===Fr.HTML)break}}popUntilElementPopped(e){for(;this.stackTop>-1;){const t=this.current;if(this.pop(),t===e)break}}popUntilNumberedHeaderPopped(){for(;this.stackTop>-1;){const e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===Ur.H1||e===Ur.H2||e===Ur.H3||e===Ur.H4||e===Ur.H5||e===Ur.H6&&t===Fr.HTML)break}}popUntilTableCellPopped(){for(;this.stackTop>-1;){const e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===Ur.TD||e===Ur.TH&&t===Fr.HTML)break}}popAllUpToHtmlElement(){this.stackTop=0,this._updateCurrentElement()}clearBackToTableContext(){for(;this.currentTagName!==Ur.TABLE&&this.currentTagName!==Ur.TEMPLATE&&this.currentTagName!==Ur.HTML||this.treeAdapter.getNamespaceURI(this.current)!==Fr.HTML;)this.pop()}clearBackToTableBodyContext(){for(;this.currentTagName!==Ur.TBODY&&this.currentTagName!==Ur.TFOOT&&this.currentTagName!==Ur.THEAD&&this.currentTagName!==Ur.TEMPLATE&&this.currentTagName!==Ur.HTML||this.treeAdapter.getNamespaceURI(this.current)!==Fr.HTML;)this.pop()}clearBackToTableRowContext(){for(;this.currentTagName!==Ur.TR&&this.currentTagName!==Ur.TEMPLATE&&this.currentTagName!==Ur.HTML||this.treeAdapter.getNamespaceURI(this.current)!==Fr.HTML;)this.pop()}remove(e){for(let t=this.stackTop;t>=0;t--)if(this.items[t]===e){this.items.splice(t,1),this.stackTop--,this._updateCurrentElement();break}}tryPeekProperlyNestedBodyElement(){const e=this.items[1];return e&&this.treeAdapter.getTagName(e)===Ur.BODY?e:null}contains(e){return this._indexOf(e)>-1}getCommonAncestor(e){let t=this._indexOf(e);return--t>=0?this.items[t]:null}isRootHtmlElementCurrent(){return 0===this.stackTop&&this.currentTagName===Ur.HTML}hasInScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===Fr.HTML)return!0;if(Hr(n,r))return!1}return!0}hasNumberedHeaderInScope(){for(let e=this.stackTop;e>=0;e--){const t=this.treeAdapter.getTagName(this.items[e]),n=this.treeAdapter.getNamespaceURI(this.items[e]);if((t===Ur.H1||t===Ur.H2||t===Ur.H3||t===Ur.H4||t===Ur.H5||t===Ur.H6)&&n===Fr.HTML)return!0;if(Hr(t,n))return!1}return!0}hasInListItemScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===Fr.HTML)return!0;if((n===Ur.UL||n===Ur.OL)&&r===Fr.HTML||Hr(n,r))return!1}return!0}hasInButtonScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===Fr.HTML)return!0;if(n===Ur.BUTTON&&r===Fr.HTML||Hr(n,r))return!1}return!0}hasInTableScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]);if(this.treeAdapter.getNamespaceURI(this.items[t])===Fr.HTML){if(n===e)return!0;if(n===Ur.TABLE||n===Ur.TEMPLATE||n===Ur.HTML)return!1}}return!0}hasTableBodyContextInTableScope(){for(let e=this.stackTop;e>=0;e--){const t=this.treeAdapter.getTagName(this.items[e]);if(this.treeAdapter.getNamespaceURI(this.items[e])===Fr.HTML){if(t===Ur.TBODY||t===Ur.THEAD||t===Ur.TFOOT)return!0;if(t===Ur.TABLE||t===Ur.HTML)return!1}}return!0}hasInSelectScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]);if(this.treeAdapter.getNamespaceURI(this.items[t])===Fr.HTML){if(n===e)return!0;if(n!==Ur.OPTION&&n!==Ur.OPTGROUP)return!1}}return!0}generateImpliedEndTags(){for(;Br(this.currentTagName);)this.pop()}generateImpliedEndTagsThoroughly(){for(;Gr(this.currentTagName);)this.pop()}generateImpliedEndTagsWithExclusion(e){for(;Br(this.currentTagName)&&this.currentTagName!==e;)this.pop()}};const Vr=3;class zr{constructor(e){this.length=0,this.entries=[],this.treeAdapter=e,this.bookmark=null}_getNoahArkConditionCandidates(e){const t=[];if(this.length>=Vr){const n=this.treeAdapter.getAttrList(e).length,r=this.treeAdapter.getTagName(e),a=this.treeAdapter.getNamespaceURI(e);for(let e=this.length-1;e>=0;e--){const i=this.entries[e];if(i.type===zr.MARKER_ENTRY)break;const o=i.element,s=this.treeAdapter.getAttrList(o);this.treeAdapter.getTagName(o)===r&&this.treeAdapter.getNamespaceURI(o)===a&&s.length===n&&t.push({idx:e,attrs:s})}}return t.length<Vr?[]:t}_ensureNoahArkCondition(e){const t=this._getNoahArkConditionCandidates(e);let n=t.length;if(n){const r=this.treeAdapter.getAttrList(e),a=r.length,i=Object.create(null);for(let e=0;e<a;e++){const t=r[e];i[t.name]=t.value}for(let e=0;e<a;e++)for(let r=0;r<n;r++){const a=t[r].attrs[e];if(i[a.name]!==a.value&&(t.splice(r,1),n--),t.length<Vr)return}for(let e=n-1;e>=Vr-1;e--)this.entries.splice(t[e].idx,1),this.length--}}insertMarker(){this.entries.push({type:zr.MARKER_ENTRY}),this.length++}pushElement(e,t){this._ensureNoahArkCondition(e),this.entries.push({type:zr.ELEMENT_ENTRY,element:e,token:t}),this.length++}insertElementAfterBookmark(e,t){let n=this.length-1;for(;n>=0&&this.entries[n]!==this.bookmark;n--);this.entries.splice(n+1,0,{type:zr.ELEMENT_ENTRY,element:e,token:t}),this.length++}removeEntry(e){for(let t=this.length-1;t>=0;t--)if(this.entries[t]===e){this.entries.splice(t,1),this.length--;break}}clearToLastMarker(){for(;this.length;){const e=this.entries.pop();if(this.length--,e.type===zr.MARKER_ENTRY)break}}getElementEntryInScopeWithTagName(e){for(let t=this.length-1;t>=0;t--){const n=this.entries[t];if(n.type===zr.MARKER_ENTRY)return null;if(this.treeAdapter.getTagName(n.element)===e)return n}return null}getElementEntry(e){for(let t=this.length-1;t>=0;t--){const n=this.entries[t];if(n.type===zr.ELEMENT_ENTRY&&n.element===e)return n}return null}}zr.MARKER_ENTRY="MARKER_ENTRY",zr.ELEMENT_ENTRY="ELEMENT_ENTRY";var qr=zr;class Kr{constructor(e){const t={},n=this._getOverriddenMethods(this,t);for(const r of Object.keys(n))"function"==typeof n[r]&&(t[r]=e[r],e[r]=n[r])}_getOverriddenMethods(){throw new Error("Not implemented")}}Kr.install=function(e,t,n){e.__mixins||(e.__mixins=[]);for(let n=0;n<e.__mixins.length;n++)if(e.__mixins[n].constructor===t)return e.__mixins[n];const r=new t(e,n);return e.__mixins.push(r),r};var Wr=Kr;var Qr=class extends Wr{constructor(e){super(e),this.preprocessor=e,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.offset=0,this.col=0,this.line=1}_getOverriddenMethods(e,t){return{advance(){const n=this.pos+1,r=this.html[n];return e.isEol&&(e.isEol=!1,e.line++,e.lineStartPos=n),("\n"===r||"\r"===r&&"\n"!==this.html[n+1])&&(e.isEol=!0),e.col=n-e.lineStartPos+1,e.offset=e.droppedBufferSize+n,t.advance.call(this)},retreat(){t.retreat.call(this),e.isEol=!1,e.col=this.pos-e.lineStartPos+1},dropParsedChunk(){const n=this.pos;t.dropParsedChunk.call(this);const r=n-this.pos;e.lineStartPos-=r,e.droppedBufferSize+=r,e.offset=e.droppedBufferSize+this.pos}}}};var $r=class extends Wr{constructor(e){super(e),this.tokenizer=e,this.posTracker=Wr.install(e.preprocessor,Qr),this.currentAttrLocation=null,this.ctLoc=null}_getCurrentLocation(){return{startLine:this.posTracker.line,startCol:this.posTracker.col,startOffset:this.posTracker.offset,endLine:-1,endCol:-1,endOffset:-1}}_attachCurrentAttrLocationInfo(){this.currentAttrLocation.endLine=this.posTracker.line,this.currentAttrLocation.endCol=this.posTracker.col,this.currentAttrLocation.endOffset=this.posTracker.offset;const e=this.tokenizer.currentToken,t=this.tokenizer.currentAttr;e.location.attrs||(e.location.attrs=Object.create(null)),e.location.attrs[t.name]=this.currentAttrLocation}_getOverriddenMethods(e,t){const n={_createStartTagToken(){t._createStartTagToken.call(this),this.currentToken.location=e.ctLoc},_createEndTagToken(){t._createEndTagToken.call(this),this.currentToken.location=e.ctLoc},_createCommentToken(){t._createCommentToken.call(this),this.currentToken.location=e.ctLoc},_createDoctypeToken(n){t._createDoctypeToken.call(this,n),this.currentToken.location=e.ctLoc},_createCharacterToken(n,r){t._createCharacterToken.call(this,n,r),this.currentCharacterToken.location=e.ctLoc},_createEOFToken(){t._createEOFToken.call(this),this.currentToken.location=e._getCurrentLocation()},_createAttr(n){t._createAttr.call(this,n),e.currentAttrLocation=e._getCurrentLocation()},_leaveAttrName(n){t._leaveAttrName.call(this,n),e._attachCurrentAttrLocationInfo()},_leaveAttrValue(n){t._leaveAttrValue.call(this,n),e._attachCurrentAttrLocationInfo()},_emitCurrentToken(){const n=this.currentToken.location;this.currentCharacterToken&&(this.currentCharacterToken.location.endLine=n.startLine,this.currentCharacterToken.location.endCol=n.startCol,this.currentCharacterToken.location.endOffset=n.startOffset),this.currentToken.type===Pr.EOF_TOKEN?(n.endLine=n.startLine,n.endCol=n.startCol,n.endOffset=n.startOffset):(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col+1,n.endOffset=e.posTracker.offset+1),t._emitCurrentToken.call(this)},_emitCurrentCharacterToken(){const n=this.currentCharacterToken&&this.currentCharacterToken.location;n&&-1===n.endOffset&&(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col,n.endOffset=e.posTracker.offset),t._emitCurrentCharacterToken.call(this)}};return Object.keys(Pr.MODE).forEach(r=>{const a=Pr.MODE[r];n[a]=function(n){e.ctLoc=e._getCurrentLocation(),t[a].call(this,n)}}),n}};var jr=class extends Wr{constructor(e,t){super(e),this.onItemPop=t.onItemPop}_getOverriddenMethods(e,t){return{pop(){e.onItemPop(this.current),t.pop.call(this)},popAllUpToHtmlElement(){for(let t=this.stackTop;t>0;t--)e.onItemPop(this.items[t]);t.popAllUpToHtmlElement.call(this)},remove(n){e.onItemPop(this.current),t.remove.call(this,n)}}}};const Xr=kr.TAG_NAMES;var Zr=class extends Wr{constructor(e){super(e),this.parser=e,this.treeAdapter=this.parser.treeAdapter,this.posTracker=null,this.lastStartTagToken=null,this.lastFosterParentingLocation=null,this.currentToken=null}_setStartLocation(e){let t=null;this.lastStartTagToken&&((t=Object.assign({},this.lastStartTagToken.location)).startTag=this.lastStartTagToken.location),this.treeAdapter.setNodeSourceCodeLocation(e,t)}_setEndLocation(e,t){const n=this.treeAdapter.getNodeSourceCodeLocation(e);if(n&&t.location){const r=t.location,a=this.treeAdapter.getTagName(e);t.type===Pr.END_TAG_TOKEN&&a===t.tagName?(n.endTag=Object.assign({},r),n.endLine=r.endLine,n.endCol=r.endCol,n.endOffset=r.endOffset):(n.endLine=r.startLine,n.endCol=r.startCol,n.endOffset=r.startOffset)}}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),e.lastStartTagToken=null,e.lastFosterParentingLocation=null,e.currentToken=null;const a=Wr.install(this.tokenizer,$r);e.posTracker=a.posTracker,Wr.install(this.openElements,jr,{onItemPop:function(t){e._setEndLocation(t,e.currentToken)}})},_runParsingLoop(n){t._runParsingLoop.call(this,n);for(let t=this.openElements.stackTop;t>=0;t--)e._setEndLocation(this.openElements.items[t],e.currentToken)},_processTokenInForeignContent(n){e.currentToken=n,t._processTokenInForeignContent.call(this,n)},_processToken(n){if(e.currentToken=n,t._processToken.call(this,n),n.type===Pr.END_TAG_TOKEN&&(n.tagName===Xr.HTML||n.tagName===Xr.BODY&&this.openElements.hasInScope(Xr.BODY)))for(let t=this.openElements.stackTop;t>=0;t--){const r=this.openElements.items[t];if(this.treeAdapter.getTagName(r)===n.tagName){e._setEndLocation(r,n);break}}},_setDocumentType(e){t._setDocumentType.call(this,e);const n=this.treeAdapter.getChildNodes(this.document),r=n.length;for(let t=0;t<r;t++){const r=n[t];if(this.treeAdapter.isDocumentTypeNode(r)){this.treeAdapter.setNodeSourceCodeLocation(r,e.location);break}}},_attachElementToTree(n){e._setStartLocation(n),e.lastStartTagToken=null,t._attachElementToTree.call(this,n)},_appendElement(n,r){e.lastStartTagToken=n,t._appendElement.call(this,n,r)},_insertElement(n,r){e.lastStartTagToken=n,t._insertElement.call(this,n,r)},_insertTemplate(n){e.lastStartTagToken=n,t._insertTemplate.call(this,n);const r=this.treeAdapter.getTemplateContent(this.openElements.current);this.treeAdapter.setNodeSourceCodeLocation(r,null)},_insertFakeRootElement(){t._insertFakeRootElement.call(this),this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current,null)},_appendCommentNode(e,n){t._appendCommentNode.call(this,e,n);const r=this.treeAdapter.getChildNodes(n),a=r[r.length-1];this.treeAdapter.setNodeSourceCodeLocation(a,e.location)},_findFosterParentingLocation(){return e.lastFosterParentingLocation=t._findFosterParentingLocation.call(this),e.lastFosterParentingLocation},_insertCharacters(n){t._insertCharacters.call(this,n);const r=this._shouldFosterParentOnInsertion(),a=r&&e.lastFosterParentingLocation.parent||this.openElements.currentTmplContent||this.openElements.current,i=this.treeAdapter.getChildNodes(a),o=i[r&&e.lastFosterParentingLocation.beforeElement?i.indexOf(e.lastFosterParentingLocation.beforeElement)-1:i.length-1],s=this.treeAdapter.getNodeSourceCodeLocation(o);s?(s.endLine=n.location.endLine,s.endCol=n.location.endCol,s.endOffset=n.location.endOffset):this.treeAdapter.setNodeSourceCodeLocation(o,n.location)}}}};var Jr=class extends Wr{constructor(e,t){super(e),this.posTracker=null,this.onParseError=t.onParseError}_setErrorLocation(e){e.startLine=e.endLine=this.posTracker.line,e.startCol=e.endCol=this.posTracker.col,e.startOffset=e.endOffset=this.posTracker.offset}_reportError(e){const t={code:e,startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1};this._setErrorLocation(t),this.onParseError(t)}_getOverriddenMethods(e){return{_err(t){e._reportError(t)}}}};var ea=class extends Jr{constructor(e,t){super(e,t),this.posTracker=Wr.install(e,Qr),this.lastErrOffset=-1}_reportError(e){this.lastErrOffset!==this.posTracker.offset&&(this.lastErrOffset=this.posTracker.offset,super._reportError(e))}};var ta=class extends Jr{constructor(e,t){super(e,t);const n=Wr.install(e.preprocessor,ea,t);this.posTracker=n.posTracker}};var na=class extends Jr{constructor(e,t){super(e,t),this.opts=t,this.ctLoc=null,this.locBeforeToken=!1}_setErrorLocation(e){this.ctLoc&&(e.startLine=this.ctLoc.startLine,e.startCol=this.ctLoc.startCol,e.startOffset=this.ctLoc.startOffset,e.endLine=this.locBeforeToken?this.ctLoc.startLine:this.ctLoc.endLine,e.endCol=this.locBeforeToken?this.ctLoc.startCol:this.ctLoc.endCol,e.endOffset=this.locBeforeToken?this.ctLoc.startOffset:this.ctLoc.endOffset)}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),Wr.install(this.tokenizer,ta,e.opts),Wr.install(this.tokenizer,$r)},_processInputToken(n){e.ctLoc=n.location,t._processInputToken.call(this,n)},_err(t,n){e.locBeforeToken=n&&n.beforeToken,e._reportError(t)}}}},ra=b(function(e,t){const{DOCUMENT_MODE:n}=kr;t.createDocument=function(){return{nodeName:"#document",mode:n.NO_QUIRKS,childNodes:[]}},t.createDocumentFragment=function(){return{nodeName:"#document-fragment",childNodes:[]}},t.createElement=function(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},t.createCommentNode=function(e){return{nodeName:"#comment",data:e,parentNode:null}};const r=function(e){return{nodeName:"#text",value:e,parentNode:null}},a=t.appendChild=function(e,t){e.childNodes.push(t),t.parentNode=e},i=t.insertBefore=function(e,t,n){const r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e};t.setTemplateContent=function(e,t){e.content=t},t.getTemplateContent=function(e){return e.content},t.setDocumentType=function(e,t,n,r){let i=null;for(let t=0;t<e.childNodes.length;t++)if("#documentType"===e.childNodes[t].nodeName){i=e.childNodes[t];break}i?(i.name=t,i.publicId=n,i.systemId=r):a(e,{nodeName:"#documentType",name:t,publicId:n,systemId:r})},t.setDocumentMode=function(e,t){e.mode=t},t.getDocumentMode=function(e){return e.mode},t.detachNode=function(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},t.insertText=function(e,t){if(e.childNodes.length){const n=e.childNodes[e.childNodes.length-1];if("#text"===n.nodeName)return void(n.value+=t)}a(e,r(t))},t.insertTextBefore=function(e,t,n){const a=e.childNodes[e.childNodes.indexOf(n)-1];a&&"#text"===a.nodeName?a.value+=t:i(e,r(t),n)},t.adoptAttributes=function(e,t){const n=[];for(let t=0;t<e.attrs.length;t++)n.push(e.attrs[t].name);for(let r=0;r<t.length;r++)-1===n.indexOf(t[r].name)&&e.attrs.push(t[r])},t.getFirstChild=function(e){return e.childNodes[0]},t.getChildNodes=function(e){return e.childNodes},t.getParentNode=function(e){return e.parentNode},t.getAttrList=function(e){return e.attrs},t.getTagName=function(e){return e.tagName},t.getNamespaceURI=function(e){return e.namespaceURI},t.getTextNodeContent=function(e){return e.value},t.getCommentNodeContent=function(e){return e.data},t.getDocumentTypeNodeName=function(e){return e.name},t.getDocumentTypeNodePublicId=function(e){return e.publicId},t.getDocumentTypeNodeSystemId=function(e){return e.systemId},t.isTextNode=function(e){return"#text"===e.nodeName},t.isCommentNode=function(e){return"#comment"===e.nodeName},t.isDocumentTypeNode=function(e){return"#documentType"===e.nodeName},t.isElementNode=function(e){return!!e.tagName},t.setNodeSourceCodeLocation=function(e,t){e.sourceCodeLocation=t},t.getNodeSourceCodeLocation=function(e){return e.sourceCodeLocation}}),aa=(ra.createDocument,ra.createDocumentFragment,ra.createElement,ra.createCommentNode,ra.appendChild,ra.insertBefore,ra.setTemplateContent,ra.getTemplateContent,ra.setDocumentType,ra.setDocumentMode,ra.getDocumentMode,ra.detachNode,ra.insertText,ra.insertTextBefore,ra.adoptAttributes,ra.getFirstChild,ra.getChildNodes,ra.getParentNode,ra.getAttrList,ra.getTagName,ra.getNamespaceURI,ra.getTextNodeContent,ra.getCommentNodeContent,ra.getDocumentTypeNodeName,ra.getDocumentTypeNodePublicId,ra.getDocumentTypeNodeSystemId,ra.isTextNode,ra.isCommentNode,ra.isDocumentTypeNode,ra.isElementNode,ra.setNodeSourceCodeLocation,ra.getNodeSourceCodeLocation,function(e,t){return[e,t=t||Object.create(null)].reduce((e,t)=>(Object.keys(t).forEach(n=>{e[n]=t[n]}),e),Object.create(null))});const{DOCUMENT_MODE:ia}=kr,oa=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],sa=oa.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]),la=["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"],ca=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],da=ca.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]);function _a(e){const t=-1!==e.indexOf('"')?"'":'"';return t+e+t}function ua(e,t){for(let n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return!0;return!1}var ma={isConforming:function(e){return"html"===e.name&&null===e.publicId&&(null===e.systemId||"about:legacy-compat"===e.systemId)},getDocumentMode:function(e){if("html"!==e.name)return ia.QUIRKS;const t=e.systemId;if(t&&"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"===t.toLowerCase())return ia.QUIRKS;let n=e.publicId;if(null!==n){if(n=n.toLowerCase(),la.indexOf(n)>-1)return ia.QUIRKS;let e=null===t?sa:oa;if(ua(n,e))return ia.QUIRKS;if(ua(n,e=null===t?ca:da))return ia.LIMITED_QUIRKS}return ia.NO_QUIRKS},serializeContent:function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=" PUBLIC "+_a(t):n&&(r+=" SYSTEM"),null!==n&&(r+=" "+_a(n)),r}},pa=b(function(e,t){const n=kr.TAG_NAMES,r=kr.NAMESPACES,a=kr.ATTRS,i={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},o={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},s={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:r.XLINK},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:r.XLINK},"xlink:href":{prefix:"xlink",name:"href",namespace:r.XLINK},"xlink:role":{prefix:"xlink",name:"role",namespace:r.XLINK},"xlink:show":{prefix:"xlink",name:"show",namespace:r.XLINK},"xlink:title":{prefix:"xlink",name:"title",namespace:r.XLINK},"xlink:type":{prefix:"xlink",name:"type",namespace:r.XLINK},"xml:base":{prefix:"xml",name:"base",namespace:r.XML},"xml:lang":{prefix:"xml",name:"lang",namespace:r.XML},"xml:space":{prefix:"xml",name:"space",namespace:r.XML},xmlns:{prefix:"",name:"xmlns",namespace:r.XMLNS},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:r.XMLNS}},l=t.SVG_TAG_NAMES_ADJUSTMENT_MAP={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},c={[n.B]:!0,[n.BIG]:!0,[n.BLOCKQUOTE]:!0,[n.BODY]:!0,[n.BR]:!0,[n.CENTER]:!0,[n.CODE]:!0,[n.DD]:!0,[n.DIV]:!0,[n.DL]:!0,[n.DT]:!0,[n.EM]:!0,[n.EMBED]:!0,[n.H1]:!0,[n.H2]:!0,[n.H3]:!0,[n.H4]:!0,[n.H5]:!0,[n.H6]:!0,[n.HEAD]:!0,[n.HR]:!0,[n.I]:!0,[n.IMG]:!0,[n.LI]:!0,[n.LISTING]:!0,[n.MENU]:!0,[n.META]:!0,[n.NOBR]:!0,[n.OL]:!0,[n.P]:!0,[n.PRE]:!0,[n.RUBY]:!0,[n.S]:!0,[n.SMALL]:!0,[n.SPAN]:!0,[n.STRONG]:!0,[n.STRIKE]:!0,[n.SUB]:!0,[n.SUP]:!0,[n.TABLE]:!0,[n.TT]:!0,[n.U]:!0,[n.UL]:!0,[n.VAR]:!0};t.causesExit=function(e){const t=e.tagName;return!!(t===n.FONT&&(null!==Pr.getTokenAttr(e,a.COLOR)||null!==Pr.getTokenAttr(e,a.SIZE)||null!==Pr.getTokenAttr(e,a.FACE)))||c[t]},t.adjustTokenMathMLAttrs=function(e){for(let t=0;t<e.attrs.length;t++)if("definitionurl"===e.attrs[t].name){e.attrs[t].name="definitionURL";break}},t.adjustTokenSVGAttrs=function(e){for(let t=0;t<e.attrs.length;t++){const n=o[e.attrs[t].name];n&&(e.attrs[t].name=n)}},t.adjustTokenXMLAttrs=function(e){for(let t=0;t<e.attrs.length;t++){const n=s[e.attrs[t].name];n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace)}},t.adjustTokenSVGTagName=function(e){const t=l[e.tagName];t&&(e.tagName=t)},t.isIntegrationPoint=function(e,t,o,s){return!(s&&s!==r.HTML||!function(e,t,o){if(t===r.MATHML&&e===n.ANNOTATION_XML)for(let e=0;e<o.length;e++)if(o[e].name===a.ENCODING){const t=o[e].value.toLowerCase();return t===i.TEXT_HTML||t===i.APPLICATION_XML}return t===r.SVG&&(e===n.FOREIGN_OBJECT||e===n.DESC||e===n.TITLE)}(e,t,o))||!(s&&s!==r.MATHML||!function(e,t){return t===r.MATHML&&(e===n.MI||e===n.MO||e===n.MN||e===n.MS||e===n.MTEXT)}(e,t))}});pa.SVG_TAG_NAMES_ADJUSTMENT_MAP,pa.causesExit,pa.adjustTokenMathMLAttrs,pa.adjustTokenSVGAttrs,pa.adjustTokenXMLAttrs,pa.adjustTokenSVGTagName,pa.isIntegrationPoint;const ga=kr.TAG_NAMES,Ea=kr.NAMESPACES,ha=kr.ATTRS,Sa={scriptingEnabled:!0,sourceCodeLocationInfo:!1,onParseError:null,treeAdapter:ra},fa="hidden",Ta=8,ba=3,Ca="INITIAL_MODE",Na="BEFORE_HTML_MODE",va="BEFORE_HEAD_MODE",Ra="IN_HEAD_MODE",Aa="IN_HEAD_NO_SCRIPT_MODE",Oa="AFTER_HEAD_MODE",ya="IN_BODY_MODE",Ia="TEXT_MODE",Da="IN_TABLE_MODE",xa="IN_TABLE_TEXT_MODE",Ma="IN_CAPTION_MODE",wa="IN_COLUMN_GROUP_MODE",La="IN_TABLE_BODY_MODE",Pa="IN_ROW_MODE",ka="IN_CELL_MODE",Ua="IN_SELECT_MODE",Fa="IN_SELECT_IN_TABLE_MODE",Ba="IN_TEMPLATE_MODE",Ga="AFTER_BODY_MODE",Ha="IN_FRAMESET_MODE",Ya="AFTER_FRAMESET_MODE",Va="AFTER_AFTER_BODY_MODE",za="AFTER_AFTER_FRAMESET_MODE",qa={[ga.TR]:Pa,[ga.TBODY]:La,[ga.THEAD]:La,[ga.TFOOT]:La,[ga.CAPTION]:Ma,[ga.COLGROUP]:wa,[ga.TABLE]:Da,[ga.BODY]:ya,[ga.FRAMESET]:Ha},Ka={[ga.CAPTION]:Da,[ga.COLGROUP]:Da,[ga.TBODY]:Da,[ga.TFOOT]:Da,[ga.THEAD]:Da,[ga.COL]:wa,[ga.TR]:La,[ga.TD]:Pa,[ga.TH]:Pa},Wa={[Ca]:{[Pr.CHARACTER_TOKEN]:li,[Pr.NULL_CHARACTER_TOKEN]:li,[Pr.WHITESPACE_CHARACTER_TOKEN]:ni,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:function(e,t){e._setDocumentType(t);const n=t.forceQuirks?kr.DOCUMENT_MODE.QUIRKS:ma.getDocumentMode(t);ma.isConforming(t)||e._err(Ut.nonConformingDoctype);e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=Na},[Pr.START_TAG_TOKEN]:li,[Pr.END_TAG_TOKEN]:li,[Pr.EOF_TOKEN]:li},[Na]:{[Pr.CHARACTER_TOKEN]:ci,[Pr.NULL_CHARACTER_TOKEN]:ci,[Pr.WHITESPACE_CHARACTER_TOKEN]:ni,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?(e._insertElement(t,Ea.HTML),e.insertionMode=va):ci(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n!==ga.HTML&&n!==ga.HEAD&&n!==ga.BODY&&n!==ga.BR||ci(e,t)},[Pr.EOF_TOKEN]:ci},[va]:{[Pr.CHARACTER_TOKEN]:di,[Pr.NULL_CHARACTER_TOKEN]:di,[Pr.WHITESPACE_CHARACTER_TOKEN]:ni,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.HEAD?(e._insertElement(t,Ea.HTML),e.headElement=e.openElements.current,e.insertionMode=Ra):di(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HEAD||n===ga.BODY||n===ga.HTML||n===ga.BR?di(e,t):e._err(Ut.endTagWithoutMatchingOpenElement)},[Pr.EOF_TOKEN]:di},[Ra]:{[Pr.CHARACTER_TOKEN]:mi,[Pr.NULL_CHARACTER_TOKEN]:mi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:_i,[Pr.END_TAG_TOKEN]:ui,[Pr.EOF_TOKEN]:mi},[Aa]:{[Pr.CHARACTER_TOKEN]:pi,[Pr.NULL_CHARACTER_TOKEN]:pi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.BASEFONT||n===ga.BGSOUND||n===ga.HEAD||n===ga.LINK||n===ga.META||n===ga.NOFRAMES||n===ga.STYLE?_i(e,t):n===ga.NOSCRIPT?e._err(Ut.nestedNoscriptInHead):pi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.NOSCRIPT?(e.openElements.pop(),e.insertionMode=Ra):n===ga.BR?pi(e,t):e._err(Ut.endTagWithoutMatchingOpenElement)},[Pr.EOF_TOKEN]:pi},[Oa]:{[Pr.CHARACTER_TOKEN]:gi,[Pr.NULL_CHARACTER_TOKEN]:gi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.BODY?(e._insertElement(t,Ea.HTML),e.framesetOk=!1,e.insertionMode=ya):n===ga.FRAMESET?(e._insertElement(t,Ea.HTML),e.insertionMode=Ha):n===ga.BASE||n===ga.BASEFONT||n===ga.BGSOUND||n===ga.LINK||n===ga.META||n===ga.NOFRAMES||n===ga.SCRIPT||n===ga.STYLE||n===ga.TEMPLATE||n===ga.TITLE?(e._err(Ut.abandonedHeadElementChild),e.openElements.push(e.headElement),_i(e,t),e.openElements.remove(e.headElement)):n===ga.HEAD?e._err(Ut.misplacedStartTagForHeadElement):gi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.BODY||n===ga.HTML||n===ga.BR?gi(e,t):n===ga.TEMPLATE?ui(e,t):e._err(Ut.endTagWithoutMatchingOpenElement)},[Pr.EOF_TOKEN]:gi},[ya]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:yi,[Pr.END_TAG_TOKEN]:Mi,[Pr.EOF_TOKEN]:wi},[Ia]:{[Pr.CHARACTER_TOKEN]:oi,[Pr.NULL_CHARACTER_TOKEN]:oi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ni,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:ni,[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.SCRIPT&&(e.pendingScript=e.openElements.current);e.openElements.pop(),e.insertionMode=e.originalInsertionMode},[Pr.EOF_TOKEN]:function(e,t){e._err(Ut.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e._processToken(t)}},[Da]:{[Pr.CHARACTER_TOKEN]:Li,[Pr.NULL_CHARACTER_TOKEN]:Li,[Pr.WHITESPACE_CHARACTER_TOKEN]:Li,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:Pi,[Pr.END_TAG_TOKEN]:ki,[Pr.EOF_TOKEN]:wi},[xa]:{[Pr.CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0},[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t)},[Pr.COMMENT_TOKEN]:Fi,[Pr.DOCTYPE_TOKEN]:Fi,[Pr.START_TAG_TOKEN]:Fi,[Pr.END_TAG_TOKEN]:Fi,[Pr.EOF_TOKEN]:Fi},[Ma]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TD||n===ga.TFOOT||n===ga.TH||n===ga.THEAD||n===ga.TR?e.openElements.hasInTableScope(ga.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ga.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Da,e._processToken(t)):yi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.TABLE?e.openElements.hasInTableScope(ga.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ga.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Da,n===ga.TABLE&&e._processToken(t)):n!==ga.BODY&&n!==ga.COL&&n!==ga.COLGROUP&&n!==ga.HTML&&n!==ga.TBODY&&n!==ga.TD&&n!==ga.TFOOT&&n!==ga.TH&&n!==ga.THEAD&&n!==ga.TR&&Mi(e,t)},[Pr.EOF_TOKEN]:wi},[wa]:{[Pr.CHARACTER_TOKEN]:Bi,[Pr.NULL_CHARACTER_TOKEN]:Bi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.COL?(e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0):n===ga.TEMPLATE?_i(e,t):Bi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.COLGROUP?e.openElements.currentTagName===ga.COLGROUP&&(e.openElements.pop(),e.insertionMode=Da):n===ga.TEMPLATE?ui(e,t):n!==ga.COL&&Bi(e,t)},[Pr.EOF_TOKEN]:wi},[La]:{[Pr.CHARACTER_TOKEN]:Li,[Pr.NULL_CHARACTER_TOKEN]:Li,[Pr.WHITESPACE_CHARACTER_TOKEN]:Li,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TR?(e.openElements.clearBackToTableBodyContext(),e._insertElement(t,Ea.HTML),e.insertionMode=Pa):n===ga.TH||n===ga.TD?(e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(ga.TR),e.insertionMode=Pa,e._processToken(t)):n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=Da,e._processToken(t)):Pi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=Da):n===ga.TABLE?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=Da,e._processToken(t)):(n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP||n!==ga.HTML&&n!==ga.TD&&n!==ga.TH&&n!==ga.TR)&&ki(e,t)},[Pr.EOF_TOKEN]:wi},[Pa]:{[Pr.CHARACTER_TOKEN]:Li,[Pr.NULL_CHARACTER_TOKEN]:Li,[Pr.WHITESPACE_CHARACTER_TOKEN]:Li,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TH||n===ga.TD?(e.openElements.clearBackToTableRowContext(),e._insertElement(t,Ea.HTML),e.insertionMode=ka,e.activeFormattingElements.insertMarker()):n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR?e.openElements.hasInTableScope(ga.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La,e._processToken(t)):Pi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TR?e.openElements.hasInTableScope(ga.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La):n===ga.TABLE?e.openElements.hasInTableScope(ga.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La,e._processToken(t)):n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?(e.openElements.hasInTableScope(n)||e.openElements.hasInTableScope(ga.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La,e._processToken(t)):(n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP||n!==ga.HTML&&n!==ga.TD&&n!==ga.TH)&&ki(e,t)},[Pr.EOF_TOKEN]:wi},[ka]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TD||n===ga.TFOOT||n===ga.TH||n===ga.THEAD||n===ga.TR?(e.openElements.hasInTableScope(ga.TD)||e.openElements.hasInTableScope(ga.TH))&&(e._closeTableCell(),e._processToken(t)):yi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TD||n===ga.TH?e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Pa):n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR?e.openElements.hasInTableScope(n)&&(e._closeTableCell(),e._processToken(t)):n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP&&n!==ga.HTML&&Mi(e,t)},[Pr.EOF_TOKEN]:wi},[Ua]:{[Pr.CHARACTER_TOKEN]:oi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:Gi,[Pr.END_TAG_TOKEN]:Hi,[Pr.EOF_TOKEN]:wi},[Fa]:{[Pr.CHARACTER_TOKEN]:oi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR||n===ga.TD||n===ga.TH?(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode(),e._processToken(t)):Gi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR||n===ga.TD||n===ga.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode(),e._processToken(t)):Hi(e,t)},[Pr.EOF_TOKEN]:wi},[Ba]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;if(n===ga.BASE||n===ga.BASEFONT||n===ga.BGSOUND||n===ga.LINK||n===ga.META||n===ga.NOFRAMES||n===ga.SCRIPT||n===ga.STYLE||n===ga.TEMPLATE||n===ga.TITLE)_i(e,t);else{const r=Ka[n]||ya;e._popTmplInsertionMode(),e._pushTmplInsertionMode(r),e.insertionMode=r,e._processToken(t)}},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.TEMPLATE&&ui(e,t)},[Pr.EOF_TOKEN]:Yi},[Ga]:{[Pr.CHARACTER_TOKEN]:Vi,[Pr.NULL_CHARACTER_TOKEN]:Vi,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:function(e,t){e._appendCommentNode(t,e.openElements.items[0])},[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?yi(e,t):Vi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?e.fragmentContext||(e.insertionMode=Va):Vi(e,t)},[Pr.EOF_TOKEN]:si},[Ha]:{[Pr.CHARACTER_TOKEN]:ni,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.FRAMESET?e._insertElement(t,Ea.HTML):n===ga.FRAME?(e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0):n===ga.NOFRAMES&&_i(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName!==ga.FRAMESET||e.openElements.isRootHtmlElementCurrent()||(e.openElements.pop(),e.fragmentContext||e.openElements.currentTagName===ga.FRAMESET||(e.insertionMode=Ya))},[Pr.EOF_TOKEN]:si},[Ya]:{[Pr.CHARACTER_TOKEN]:ni,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.NOFRAMES&&_i(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML&&(e.insertionMode=za)},[Pr.EOF_TOKEN]:si},[Va]:{[Pr.CHARACTER_TOKEN]:zi,[Pr.NULL_CHARACTER_TOKEN]:zi,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ii,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?yi(e,t):zi(e,t)},[Pr.END_TAG_TOKEN]:zi,[Pr.EOF_TOKEN]:si},[za]:{[Pr.CHARACTER_TOKEN]:ni,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ii,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.NOFRAMES&&_i(e,t)},[Pr.END_TAG_TOKEN]:ni,[Pr.EOF_TOKEN]:si}};var Qa=class{constructor(e){this.options=aa(Sa,e),this.treeAdapter=this.options.treeAdapter,this.pendingScript=null,this.options.sourceCodeLocationInfo&&Wr.install(this,Zr),this.options.onParseError&&Wr.install(this,na,{onParseError:this.options.onParseError})}parse(e){const t=this.treeAdapter.createDocument();return this._bootstrap(t,null),this.tokenizer.write(e,!0),this._runParsingLoop(null),t}parseFragment(e,t){t||(t=this.treeAdapter.createElement(ga.TEMPLATE,Ea.HTML,[]));const n=this.treeAdapter.createElement("documentmock",Ea.HTML,[]);this._bootstrap(n,t),this.treeAdapter.getTagName(t)===ga.TEMPLATE&&this._pushTmplInsertionMode(Ba),this._initTokenizerForFragmentParsing(),this._insertFakeRootElement(),this._resetInsertionMode(),this._findFormInFragmentContext(),this.tokenizer.write(e,!0),this._runParsingLoop(null);const r=this.treeAdapter.getFirstChild(n),a=this.treeAdapter.createDocumentFragment();return this._adoptNodes(r,a),a}_bootstrap(e,t){this.tokenizer=new Pr(this.options),this.stopped=!1,this.insertionMode=Ca,this.originalInsertionMode="",this.document=e,this.fragmentContext=t,this.headElement=null,this.formElement=null,this.openElements=new Yr(this.document,this.treeAdapter),this.activeFormattingElements=new qr(this.treeAdapter),this.tmplInsertionModeStack=[],this.tmplInsertionModeStackTop=-1,this.currentTmplInsertionMode=null,this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1}_err(){}_runParsingLoop(e){for(;!this.stopped;){this._setupTokenizerCDATAMode();const t=this.tokenizer.getNextToken();if(t.type===Pr.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.type===Pr.WHITESPACE_CHARACTER_TOKEN&&"\n"===t.chars[0])){if(1===t.chars.length)continue;t.chars=t.chars.substr(1)}if(this._processInputToken(t),e&&this.pendingScript)break}}runParsingLoopForCurrentChunk(e,t){if(this._runParsingLoop(t),t&&this.pendingScript){const e=this.pendingScript;return this.pendingScript=null,void t(e)}e&&e()}_setupTokenizerCDATAMode(){const e=this._getAdjustedCurrentElement();this.tokenizer.allowCDATA=e&&e!==this.document&&this.treeAdapter.getNamespaceURI(e)!==Ea.HTML&&!this._isIntegrationPoint(e)}_switchToTextParsing(e,t){this._insertElement(e,Ea.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=Ia}switchToPlaintextParsing(){this.insertionMode=Ia,this.originalInsertionMode=ya,this.tokenizer.state=Pr.MODE.PLAINTEXT}_getAdjustedCurrentElement(){return 0===this.openElements.stackTop&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let e=this.fragmentContext;do{if(this.treeAdapter.getTagName(e)===ga.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}while(e)}_initTokenizerForFragmentParsing(){if(this.treeAdapter.getNamespaceURI(this.fragmentContext)===Ea.HTML){const e=this.treeAdapter.getTagName(this.fragmentContext);e===ga.TITLE||e===ga.TEXTAREA?this.tokenizer.state=Pr.MODE.RCDATA:e===ga.STYLE||e===ga.XMP||e===ga.IFRAME||e===ga.NOEMBED||e===ga.NOFRAMES||e===ga.NOSCRIPT?this.tokenizer.state=Pr.MODE.RAWTEXT:e===ga.SCRIPT?this.tokenizer.state=Pr.MODE.SCRIPT_DATA:e===ga.PLAINTEXT&&(this.tokenizer.state=Pr.MODE.PLAINTEXT)}}_setDocumentType(e){const t=e.name||"",n=e.publicId||"",r=e.systemId||"";this.treeAdapter.setDocumentType(this.document,t,n,r)}_attachElementToTree(e){if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{const t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.appendChild(t,e)}}_appendElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n)}_insertElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n),this.openElements.push(n)}_insertFakeElement(e){const t=this.treeAdapter.createElement(e,Ea.HTML,[]);this._attachElementToTree(t),this.openElements.push(t)}_insertTemplate(e){const t=this.treeAdapter.createElement(e.tagName,Ea.HTML,e.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,n),this._attachElementToTree(t),this.openElements.push(t)}_insertFakeRootElement(){const e=this.treeAdapter.createElement(ga.HTML,Ea.HTML,[]);this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e)}_appendCommentNode(e,t){const n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n)}_insertCharacters(e){if(this._shouldFosterParentOnInsertion())this._fosterParentText(e.chars);else{const t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.insertText(t,e.chars)}}_adoptNodes(e,t){for(let n=this.treeAdapter.getFirstChild(e);n;n=this.treeAdapter.getFirstChild(e))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}_shouldProcessTokenInForeignContent(e){const t=this._getAdjustedCurrentElement();if(!t||t===this.document)return!1;const n=this.treeAdapter.getNamespaceURI(t);if(n===Ea.HTML)return!1;if(this.treeAdapter.getTagName(t)===ga.ANNOTATION_XML&&n===Ea.MATHML&&e.type===Pr.START_TAG_TOKEN&&e.tagName===ga.SVG)return!1;const r=e.type===Pr.CHARACTER_TOKEN||e.type===Pr.NULL_CHARACTER_TOKEN||e.type===Pr.WHITESPACE_CHARACTER_TOKEN;return!((e.type===Pr.START_TAG_TOKEN&&e.tagName!==ga.MGLYPH&&e.tagName!==ga.MALIGNMARK||r)&&this._isIntegrationPoint(t,Ea.MATHML)||(e.type===Pr.START_TAG_TOKEN||r)&&this._isIntegrationPoint(t,Ea.HTML)||e.type===Pr.EOF_TOKEN)}_processToken(e){Wa[this.insertionMode][e.type](this,e)}_processTokenInBodyMode(e){Wa[ya][e.type](this,e)}_processTokenInForeignContent(e){e.type===Pr.CHARACTER_TOKEN?function(e,t){e._insertCharacters(t),e.framesetOk=!1}(this,e):e.type===Pr.NULL_CHARACTER_TOKEN?function(e,t){t.chars=kt.REPLACEMENT_CHARACTER,e._insertCharacters(t)}(this,e):e.type===Pr.WHITESPACE_CHARACTER_TOKEN?oi(this,e):e.type===Pr.COMMENT_TOKEN?ai(this,e):e.type===Pr.START_TAG_TOKEN?function(e,t){if(pa.causesExit(t)&&!e.fragmentContext){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==Ea.HTML&&!e._isIntegrationPoint(e.openElements.current);)e.openElements.pop();e._processToken(t)}else{const n=e._getAdjustedCurrentElement(),r=e.treeAdapter.getNamespaceURI(n);r===Ea.MATHML?pa.adjustTokenMathMLAttrs(t):r===Ea.SVG&&(pa.adjustTokenSVGTagName(t),pa.adjustTokenSVGAttrs(t)),pa.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,r):e._insertElement(t,r),t.ackSelfClosing=!0}}(this,e):e.type===Pr.END_TAG_TOKEN&&function(e,t){for(let n=e.openElements.stackTop;n>0;n--){const r=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(r)===Ea.HTML){e._processToken(t);break}if(e.treeAdapter.getTagName(r).toLowerCase()===t.tagName){e.openElements.popUntilElementPopped(r);break}}}(this,e)}_processInputToken(e){this._shouldProcessTokenInForeignContent(e)?this._processTokenInForeignContent(e):this._processToken(e),e.type===Pr.START_TAG_TOKEN&&e.selfClosing&&!e.ackSelfClosing&&this._err(Ut.nonVoidHtmlElementStartTagWithTrailingSolidus)}_isIntegrationPoint(e,t){const n=this.treeAdapter.getTagName(e),r=this.treeAdapter.getNamespaceURI(e),a=this.treeAdapter.getAttrList(e);return pa.isIntegrationPoint(n,r,a,t)}_reconstructActiveFormattingElements(){const e=this.activeFormattingElements.length;if(e){let t=e,n=null;do{if(t--,(n=this.activeFormattingElements.entries[t]).type===qr.MARKER_ENTRY||this.openElements.contains(n.element)){t++;break}}while(t>0);for(let r=t;r<e;r++)n=this.activeFormattingElements.entries[r],this._insertElement(n.token,this.treeAdapter.getNamespaceURI(n.element)),n.element=this.openElements.current}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=Pa}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(ga.P),this.openElements.popUntilTagNamePopped(ga.P)}_resetInsertionMode(){for(let e=this.openElements.stackTop,t=!1;e>=0;e--){let n=this.openElements.items[e];0===e&&(t=!0,this.fragmentContext&&(n=this.fragmentContext));const r=this.treeAdapter.getTagName(n),a=qa[r];if(a){this.insertionMode=a;break}if(!(t||r!==ga.TD&&r!==ga.TH)){this.insertionMode=ka;break}if(!t&&r===ga.HEAD){this.insertionMode=Ra;break}if(r===ga.SELECT){this._resetInsertionModeForSelect(e);break}if(r===ga.TEMPLATE){this.insertionMode=this.currentTmplInsertionMode;break}if(r===ga.HTML){this.insertionMode=this.headElement?Oa:va;break}if(t){this.insertionMode=ya;break}}}_resetInsertionModeForSelect(e){if(e>0)for(let t=e-1;t>0;t--){const e=this.openElements.items[t],n=this.treeAdapter.getTagName(e);if(n===ga.TEMPLATE)break;if(n===ga.TABLE)return void(this.insertionMode=Fa)}this.insertionMode=Ua}_pushTmplInsertionMode(e){this.tmplInsertionModeStack.push(e),this.tmplInsertionModeStackTop++,this.currentTmplInsertionMode=e}_popTmplInsertionMode(){this.tmplInsertionModeStack.pop(),this.tmplInsertionModeStackTop--,this.currentTmplInsertionMode=this.tmplInsertionModeStack[this.tmplInsertionModeStackTop]}_isElementCausesFosterParenting(e){const t=this.treeAdapter.getTagName(e);return t===ga.TABLE||t===ga.TBODY||t===ga.TFOOT||t===ga.THEAD||t===ga.TR}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.current)}_findFosterParentingLocation(){const e={parent:null,beforeElement:null};for(let t=this.openElements.stackTop;t>=0;t--){const n=this.openElements.items[t],r=this.treeAdapter.getTagName(n),a=this.treeAdapter.getNamespaceURI(n);if(r===ga.TEMPLATE&&a===Ea.HTML){e.parent=this.treeAdapter.getTemplateContent(n);break}if(r===ga.TABLE){e.parent=this.treeAdapter.getParentNode(n),e.parent?e.beforeElement=n:e.parent=this.openElements.items[t-1];break}}return e.parent||(e.parent=this.openElements.items[0]),e}_fosterParentElement(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)}_fosterParentText(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertTextBefore(t.parent,e,t.beforeElement):this.treeAdapter.insertText(t.parent,e)}_isSpecialElement(e){const t=this.treeAdapter.getTagName(e),n=this.treeAdapter.getNamespaceURI(e);return kr.SPECIAL_ELEMENTS[n][t]}};function $a(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagName)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):xi(e,t),n}function ja(e,t){let n=null;for(let r=e.openElements.stackTop;r>=0;r--){const a=e.openElements.items[r];if(a===t.element)break;e._isSpecialElement(a)&&(n=a)}return n||(e.openElements.popUntilElementPopped(t.element),e.activeFormattingElements.removeEntry(t)),n}function Xa(e,t,n){let r=t,a=e.openElements.getCommonAncestor(t);for(let i=0,o=a;o!==n;i++,o=a){a=e.openElements.getCommonAncestor(o);const n=e.activeFormattingElements.getElementEntry(o),s=n&&i>=ba;!n||s?(s&&e.activeFormattingElements.removeEntry(n),e.openElements.remove(o)):(o=Za(e,n),r===t&&(e.activeFormattingElements.bookmark=n),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(o,r),r=o)}return r}function Za(e,t){const n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}function Ja(e,t,n){if(e._isElementCausesFosterParenting(t))e._fosterParentElement(n);else{const r=e.treeAdapter.getTagName(t),a=e.treeAdapter.getNamespaceURI(t);r===ga.TEMPLATE&&a===Ea.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n)}}function ei(e,t,n){const r=e.treeAdapter.getNamespaceURI(n.element),a=n.token,i=e.treeAdapter.createElement(a.tagName,r,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,n.token),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i)}function ti(e,t){let n;for(let r=0;r<Ta&&(n=$a(e,t));r++){const t=ja(e,n);if(!t)break;e.activeFormattingElements.bookmark=n;const r=Xa(e,t,n.element),a=e.openElements.getCommonAncestor(n.element);e.treeAdapter.detachNode(r),Ja(e,a,r),ei(e,t,n)}}function ni(){}function ri(e){e._err(Ut.misplacedDoctype)}function ai(e,t){e._appendCommentNode(t,e.openElements.currentTmplContent||e.openElements.current)}function ii(e,t){e._appendCommentNode(t,e.document)}function oi(e,t){e._insertCharacters(t)}function si(e){e.stopped=!0}function li(e,t){e._err(Ut.missingDoctype,{beforeToken:!0}),e.treeAdapter.setDocumentMode(e.document,kr.DOCUMENT_MODE.QUIRKS),e.insertionMode=Na,e._processToken(t)}function ci(e,t){e._insertFakeRootElement(),e.insertionMode=va,e._processToken(t)}function di(e,t){e._insertFakeElement(ga.HEAD),e.headElement=e.openElements.current,e.insertionMode=Ra,e._processToken(t)}function _i(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.BASE||n===ga.BASEFONT||n===ga.BGSOUND||n===ga.LINK||n===ga.META?(e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0):n===ga.TITLE?e._switchToTextParsing(t,Pr.MODE.RCDATA):n===ga.NOSCRIPT?e.options.scriptingEnabled?e._switchToTextParsing(t,Pr.MODE.RAWTEXT):(e._insertElement(t,Ea.HTML),e.insertionMode=Aa):n===ga.NOFRAMES||n===ga.STYLE?e._switchToTextParsing(t,Pr.MODE.RAWTEXT):n===ga.SCRIPT?e._switchToTextParsing(t,Pr.MODE.SCRIPT_DATA):n===ga.TEMPLATE?(e._insertTemplate(t,Ea.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=Ba,e._pushTmplInsertionMode(Ba)):n===ga.HEAD?e._err(Ut.misplacedStartTagForHeadElement):mi(e,t)}function ui(e,t){const n=t.tagName;n===ga.HEAD?(e.openElements.pop(),e.insertionMode=Oa):n===ga.BODY||n===ga.BR||n===ga.HTML?mi(e,t):n===ga.TEMPLATE&&e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagName!==ga.TEMPLATE&&e._err(Ut.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(ga.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode()):e._err(Ut.endTagWithoutMatchingOpenElement)}function mi(e,t){e.openElements.pop(),e.insertionMode=Oa,e._processToken(t)}function pi(e,t){const n=t.type===Pr.EOF_TOKEN?Ut.openElementsLeftAfterEof:Ut.disallowedContentInNoscriptInHead;e._err(n),e.openElements.pop(),e.insertionMode=Ra,e._processToken(t)}function gi(e,t){e._insertFakeElement(ga.BODY),e.insertionMode=ya,e._processToken(t)}function Ei(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function hi(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function Si(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML)}function fi(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function Ti(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function bi(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function Ci(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Ea.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function Ni(e,t){e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0}function vi(e,t){e._switchToTextParsing(t,Pr.MODE.RAWTEXT)}function Ri(e,t){e.openElements.currentTagName===ga.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML)}function Ai(e,t){e.openElements.hasInScope(ga.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,Ea.HTML)}function Oi(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML)}function yi(e,t){const n=t.tagName;switch(n.length){case 1:n===ga.I||n===ga.S||n===ga.B||n===ga.U?Ti(e,t):n===ga.P?Si(e,t):n===ga.A?function(e,t){const n=e.activeFormattingElements.getElementEntryInScopeWithTagName(ga.A);n&&(ti(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):Oi(e,t);break;case 2:n===ga.DL||n===ga.OL||n===ga.UL?Si(e,t):n===ga.H1||n===ga.H2||n===ga.H3||n===ga.H4||n===ga.H5||n===ga.H6?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement();const n=e.openElements.currentTagName;n!==ga.H1&&n!==ga.H2&&n!==ga.H3&&n!==ga.H4&&n!==ga.H5&&n!==ga.H6||e.openElements.pop(),e._insertElement(t,Ea.HTML)}(e,t):n===ga.LI||n===ga.DD||n===ga.DT?function(e,t){e.framesetOk=!1;const n=t.tagName;for(let t=e.openElements.stackTop;t>=0;t--){const r=e.openElements.items[t],a=e.treeAdapter.getTagName(r);let i=null;if(n===ga.LI&&a===ga.LI?i=ga.LI:n!==ga.DD&&n!==ga.DT||a!==ga.DD&&a!==ga.DT||(i=a),i){e.openElements.generateImpliedEndTagsWithExclusion(i),e.openElements.popUntilTagNamePopped(i);break}if(a!==ga.ADDRESS&&a!==ga.DIV&&a!==ga.P&&e._isSpecialElement(r))break}e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML)}(e,t):n===ga.EM||n===ga.TT?Ti(e,t):n===ga.BR?Ci(e,t):n===ga.HR?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._appendElement(t,Ea.HTML),e.framesetOk=!1,e.ackSelfClosing=!0}(e,t):n===ga.RB?Ai(e,t):n===ga.RT||n===ga.RP?function(e,t){e.openElements.hasInScope(ga.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(ga.RTC),e._insertElement(t,Ea.HTML)}(e,t):n!==ga.TH&&n!==ga.TD&&n!==ga.TR&&Oi(e,t);break;case 3:n===ga.DIV||n===ga.DIR||n===ga.NAV?Si(e,t):n===ga.PRE?fi(e,t):n===ga.BIG?Ti(e,t):n===ga.IMG||n===ga.WBR?Ci(e,t):n===ga.XMP?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,Pr.MODE.RAWTEXT)}(e,t):n===ga.SVG?function(e,t){e._reconstructActiveFormattingElements(),pa.adjustTokenSVGAttrs(t),pa.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,Ea.SVG):e._insertElement(t,Ea.SVG),t.ackSelfClosing=!0}(e,t):n===ga.RTC?Ai(e,t):n!==ga.COL&&Oi(e,t);break;case 4:n===ga.HTML?function(e,t){0===e.openElements.tmplCount&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}(e,t):n===ga.BASE||n===ga.LINK||n===ga.META?_i(e,t):n===ga.BODY?function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&0===e.openElements.tmplCount&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}(e,t):n===ga.MAIN||n===ga.MENU?Si(e,t):n===ga.FORM?function(e,t){const n=e.openElements.tmplCount>0;e.formElement&&!n||(e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),n||(e.formElement=e.openElements.current))}(e,t):n===ga.CODE||n===ga.FONT?Ti(e,t):n===ga.NOBR?function(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(ga.NOBR)&&(ti(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,Ea.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):n===ga.AREA?Ci(e,t):n===ga.MATH?function(e,t){e._reconstructActiveFormattingElements(),pa.adjustTokenMathMLAttrs(t),pa.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,Ea.MATHML):e._insertElement(t,Ea.MATHML),t.ackSelfClosing=!0}(e,t):n===ga.MENU?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML)}(e,t):n!==ga.HEAD&&Oi(e,t);break;case 5:n===ga.STYLE||n===ga.TITLE?_i(e,t):n===ga.ASIDE?Si(e,t):n===ga.SMALL?Ti(e,t):n===ga.TABLE?function(e,t){e.treeAdapter.getDocumentMode(e.document)!==kr.DOCUMENT_MODE.QUIRKS&&e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),e.framesetOk=!1,e.insertionMode=Da}(e,t):n===ga.EMBED?Ci(e,t):n===ga.INPUT?function(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Ea.HTML);const n=Pr.getTokenAttr(t,ha.TYPE);n&&n.toLowerCase()===fa||(e.framesetOk=!1),t.ackSelfClosing=!0}(e,t):n===ga.PARAM||n===ga.TRACK?Ni(e,t):n===ga.IMAGE?function(e,t){t.tagName=ga.IMG,Ci(e,t)}(e,t):n!==ga.FRAME&&n!==ga.TBODY&&n!==ga.TFOOT&&n!==ga.THEAD&&Oi(e,t);break;case 6:n===ga.SCRIPT?_i(e,t):n===ga.CENTER||n===ga.FIGURE||n===ga.FOOTER||n===ga.HEADER||n===ga.HGROUP||n===ga.DIALOG?Si(e,t):n===ga.BUTTON?function(e,t){e.openElements.hasInScope(ga.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ga.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.framesetOk=!1}(e,t):n===ga.STRIKE||n===ga.STRONG?Ti(e,t):n===ga.APPLET||n===ga.OBJECT?bi(e,t):n===ga.KEYGEN?Ci(e,t):n===ga.SOURCE?Ni(e,t):n===ga.IFRAME?function(e,t){e.framesetOk=!1,e._switchToTextParsing(t,Pr.MODE.RAWTEXT)}(e,t):n===ga.SELECT?function(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.framesetOk=!1,e.insertionMode===Da||e.insertionMode===Ma||e.insertionMode===La||e.insertionMode===Pa||e.insertionMode===ka?e.insertionMode=Fa:e.insertionMode=Ua}(e,t):n===ga.OPTION?Ri(e,t):Oi(e,t);break;case 7:n===ga.BGSOUND?_i(e,t):n===ga.DETAILS||n===ga.ADDRESS||n===ga.ARTICLE||n===ga.SECTION||n===ga.SUMMARY?Si(e,t):n===ga.LISTING?fi(e,t):n===ga.MARQUEE?bi(e,t):n===ga.NOEMBED?vi(e,t):n!==ga.CAPTION&&Oi(e,t);break;case 8:n===ga.BASEFONT?_i(e,t):n===ga.FRAMESET?function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,Ea.HTML),e.insertionMode=Ha)}(e,t):n===ga.FIELDSET?Si(e,t):n===ga.TEXTAREA?function(e,t){e._insertElement(t,Ea.HTML),e.skipNextNewLine=!0,e.tokenizer.state=Pr.MODE.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=Ia}(e,t):n===ga.TEMPLATE?_i(e,t):n===ga.NOSCRIPT?e.options.scriptingEnabled?vi(e,t):Oi(e,t):n===ga.OPTGROUP?Ri(e,t):n!==ga.COLGROUP&&Oi(e,t);break;case 9:n===ga.PLAINTEXT?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),e.tokenizer.state=Pr.MODE.PLAINTEXT}(e,t):Oi(e,t);break;case 10:n===ga.BLOCKQUOTE||n===ga.FIGCAPTION?Si(e,t):Oi(e,t);break;default:Oi(e,t)}}function Ii(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function Di(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function xi(e,t){const n=t.tagName;for(let t=e.openElements.stackTop;t>0;t--){const r=e.openElements.items[t];if(e.treeAdapter.getTagName(r)===n){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilElementPopped(r);break}if(e._isSpecialElement(r))break}}function Mi(e,t){const n=t.tagName;switch(n.length){case 1:n===ga.A||n===ga.B||n===ga.I||n===ga.S||n===ga.U?ti(e,t):n===ga.P?function(e){e.openElements.hasInButtonScope(ga.P)||e._insertFakeElement(ga.P),e._closePElement()}(e):xi(e,t);break;case 2:n===ga.DL||n===ga.UL||n===ga.OL?Ii(e,t):n===ga.LI?function(e){e.openElements.hasInListItemScope(ga.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(ga.LI),e.openElements.popUntilTagNamePopped(ga.LI))}(e):n===ga.DD||n===ga.DT?function(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}(e,t):n===ga.H1||n===ga.H2||n===ga.H3||n===ga.H4||n===ga.H5||n===ga.H6?function(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}(e):n===ga.BR?function(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(ga.BR),e.openElements.pop(),e.framesetOk=!1}(e):n===ga.EM||n===ga.TT?ti(e,t):xi(e,t);break;case 3:n===ga.BIG?ti(e,t):n===ga.DIR||n===ga.DIV||n===ga.NAV||n===ga.PRE?Ii(e,t):xi(e,t);break;case 4:n===ga.BODY?function(e){e.openElements.hasInScope(ga.BODY)&&(e.insertionMode=Ga)}(e):n===ga.HTML?function(e,t){e.openElements.hasInScope(ga.BODY)&&(e.insertionMode=Ga,e._processToken(t))}(e,t):n===ga.FORM?function(e){const t=e.openElements.tmplCount>0,n=e.formElement;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(ga.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(ga.FORM):e.openElements.remove(n))}(e):n===ga.CODE||n===ga.FONT||n===ga.NOBR?ti(e,t):n===ga.MAIN||n===ga.MENU?Ii(e,t):xi(e,t);break;case 5:n===ga.ASIDE?Ii(e,t):n===ga.SMALL?ti(e,t):xi(e,t);break;case 6:n===ga.CENTER||n===ga.FIGURE||n===ga.FOOTER||n===ga.HEADER||n===ga.HGROUP||n===ga.DIALOG?Ii(e,t):n===ga.APPLET||n===ga.OBJECT?Di(e,t):n===ga.STRIKE||n===ga.STRONG?ti(e,t):xi(e,t);break;case 7:n===ga.ADDRESS||n===ga.ARTICLE||n===ga.DETAILS||n===ga.SECTION||n===ga.SUMMARY||n===ga.LISTING?Ii(e,t):n===ga.MARQUEE?Di(e,t):xi(e,t);break;case 8:n===ga.FIELDSET?Ii(e,t):n===ga.TEMPLATE?ui(e,t):xi(e,t);break;case 10:n===ga.BLOCKQUOTE||n===ga.FIGCAPTION?Ii(e,t):xi(e,t);break;default:xi(e,t)}}function wi(e,t){e.tmplInsertionModeStackTop>-1?Yi(e,t):e.stopped=!0}function Li(e,t){const n=e.openElements.currentTagName;n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR?(e.pendingCharacterTokens=[],e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=xa,e._processToken(t)):Ui(e,t)}function Pi(e,t){const n=t.tagName;switch(n.length){case 2:n===ga.TD||n===ga.TH||n===ga.TR?function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(ga.TBODY),e.insertionMode=La,e._processToken(t)}(e,t):Ui(e,t);break;case 3:n===ga.COL?function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(ga.COLGROUP),e.insertionMode=wa,e._processToken(t)}(e,t):Ui(e,t);break;case 4:n===ga.FORM?function(e,t){e.formElement||0!==e.openElements.tmplCount||(e._insertElement(t,Ea.HTML),e.formElement=e.openElements.current,e.openElements.pop())}(e,t):Ui(e,t);break;case 5:n===ga.TABLE?function(e,t){e.openElements.hasInTableScope(ga.TABLE)&&(e.openElements.popUntilTagNamePopped(ga.TABLE),e._resetInsertionMode(),e._processToken(t))}(e,t):n===ga.STYLE?_i(e,t):n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Ea.HTML),e.insertionMode=La}(e,t):n===ga.INPUT?function(e,t){const n=Pr.getTokenAttr(t,ha.TYPE);n&&n.toLowerCase()===fa?e._appendElement(t,Ea.HTML):Ui(e,t),t.ackSelfClosing=!0}(e,t):Ui(e,t);break;case 6:n===ga.SCRIPT?_i(e,t):Ui(e,t);break;case 7:n===ga.CAPTION?function(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,Ea.HTML),e.insertionMode=Ma}(e,t):Ui(e,t);break;case 8:n===ga.COLGROUP?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Ea.HTML),e.insertionMode=wa}(e,t):n===ga.TEMPLATE?_i(e,t):Ui(e,t);break;default:Ui(e,t)}}function ki(e,t){const n=t.tagName;n===ga.TABLE?e.openElements.hasInTableScope(ga.TABLE)&&(e.openElements.popUntilTagNamePopped(ga.TABLE),e._resetInsertionMode()):n===ga.TEMPLATE?ui(e,t):n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP&&n!==ga.HTML&&n!==ga.TBODY&&n!==ga.TD&&n!==ga.TFOOT&&n!==ga.TH&&n!==ga.THEAD&&n!==ga.TR&&Ui(e,t)}function Ui(e,t){const n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,e._processTokenInBodyMode(t),e.fosterParentingEnabled=n}function Fi(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)Ui(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t)}function Bi(e,t){e.openElements.currentTagName===ga.COLGROUP&&(e.openElements.pop(),e.insertionMode=Da,e._processToken(t))}function Gi(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.OPTION?(e.openElements.currentTagName===ga.OPTION&&e.openElements.pop(),e._insertElement(t,Ea.HTML)):n===ga.OPTGROUP?(e.openElements.currentTagName===ga.OPTION&&e.openElements.pop(),e.openElements.currentTagName===ga.OPTGROUP&&e.openElements.pop(),e._insertElement(t,Ea.HTML)):n===ga.INPUT||n===ga.KEYGEN||n===ga.TEXTAREA||n===ga.SELECT?e.openElements.hasInSelectScope(ga.SELECT)&&(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode(),n!==ga.SELECT&&e._processToken(t)):n!==ga.SCRIPT&&n!==ga.TEMPLATE||_i(e,t)}function Hi(e,t){const n=t.tagName;if(n===ga.OPTGROUP){const t=e.openElements.items[e.openElements.stackTop-1],n=t&&e.treeAdapter.getTagName(t);e.openElements.currentTagName===ga.OPTION&&n===ga.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagName===ga.OPTGROUP&&e.openElements.pop()}else n===ga.OPTION?e.openElements.currentTagName===ga.OPTION&&e.openElements.pop():n===ga.SELECT&&e.openElements.hasInSelectScope(ga.SELECT)?(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode()):n===ga.TEMPLATE&&ui(e,t)}function Yi(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(ga.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode(),e._processToken(t)):e.stopped=!0}function Vi(e,t){e.insertionMode=ya,e._processToken(t)}function zi(e,t){e.insertionMode=ya,e._processToken(t)}var qi=Wi,Ki=Wi.prototype;function Wi(e,t,n){this.property=e,this.normal=t,n&&(this.space=n)}Ki.space=null,Ki.normal={},Ki.property={};var Qi=function(t){var n,r,a=t.length,i=[],o=[],s=-1;for(;++s<a;)n=t[s],i.push(n.property),o.push(n.normal),r=n.space;return new qi(e.apply(null,i),e.apply(null,o),r)};var $i=function(e){return e.toLowerCase()};var ji=Zi,Xi=Zi.prototype;function Zi(e,t){this.property=e,this.attribute=t}Xi.space=null,Xi.attribute=null,Xi.property=null,Xi.boolean=!1,Xi.booleanish=!1,Xi.overloadedBoolean=!1,Xi.number=!1,Xi.commaSeparated=!1,Xi.spaceSeparated=!1,Xi.commaOrSpaceSeparated=!1,Xi.mustUseProperty=!1,Xi.defined=!1;var Ji=0;function eo(){return Math.pow(2,++Ji)}var to={boolean:eo(),booleanish:eo(),overloadedBoolean:eo(),number:eo(),spaceSeparated:eo(),commaSeparated:eo(),commaOrSpaceSeparated:eo()},no=io;io.prototype=new ji,io.prototype.defined=!0;var ro=["boolean","booleanish","overloadedBoolean","number","commaSeparated","spaceSeparated","commaOrSpaceSeparated"],ao=ro.length;function io(e,t,n,r){var a,i=-1;for(oo(this,"space",r),ji.call(this,e,t);++i<ao;)oo(this,a=ro[i],(n&to[a])===to[a])}function oo(e,t,n){n&&(e[t]=n)}var so=function(e){var t,n,r=e.space,a=e.mustUseProperty||[],i=e.attributes||{},o=e.properties,s=e.transform,l={},c={};for(t in o)n=new no(t,s(i,t),o[t],r),-1!==a.indexOf(t)&&(n.mustUseProperty=!0),l[t]=n,c[$i(t)]=t,c[$i(n.attribute)]=t;return new qi(l,c,r)};var lo=so({space:"xlink",transform:function(e,t){return"xlink:"+t.slice(5).toLowerCase()},properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null}});var co=so({space:"xml",transform:function(e,t){return"xml:"+t.slice(3).toLowerCase()},properties:{xmlLang:null,xmlBase:null,xmlSpace:null}});var _o=function(e,t){return t in e?e[t]:t};var uo=function(e,t){return _o(e,t.toLowerCase())};var mo=so({space:"xmlns",attributes:{xmlnsxlink:"xmlns:xlink"},transform:uo,properties:{xmlns:null,xmlnsXLink:null}}),po=to.booleanish,go=to.number,Eo=to.spaceSeparated,ho=so({transform:function(e,t){return"role"===t?t:"aria-"+t.slice(4).toLowerCase()},properties:{ariaActiveDescendant:null,ariaAtomic:po,ariaAutoComplete:null,ariaBusy:po,ariaChecked:po,ariaColCount:go,ariaColIndex:go,ariaColSpan:go,ariaControls:Eo,ariaCurrent:null,ariaDescribedBy:Eo,ariaDetails:null,ariaDisabled:po,ariaDropEffect:Eo,ariaErrorMessage:null,ariaExpanded:po,ariaFlowTo:Eo,ariaGrabbed:po,ariaHasPopup:null,ariaHidden:po,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Eo,ariaLevel:go,ariaLive:null,ariaModal:po,ariaMultiLine:po,ariaMultiSelectable:po,ariaOrientation:null,ariaOwns:Eo,ariaPlaceholder:null,ariaPosInSet:go,ariaPressed:po,ariaReadOnly:po,ariaRelevant:null,ariaRequired:po,ariaRoleDescription:Eo,ariaRowCount:go,ariaRowIndex:go,ariaRowSpan:go,ariaSelected:po,ariaSetSize:go,ariaSort:null,ariaValueMax:go,ariaValueMin:go,ariaValueNow:go,ariaValueText:null,role:null}});var So=to.boolean,fo=to.overloadedBoolean,To=to.booleanish,bo=to.number,Co=to.spaceSeparated,No=to.commaSeparated,vo=Qi([co,lo,mo,ho,so({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:uo,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:No,acceptCharset:Co,accessKey:Co,action:null,allow:null,allowFullScreen:So,allowPaymentRequest:So,allowUserMedia:So,alt:null,as:null,async:So,autoCapitalize:null,autoComplete:Co,autoFocus:So,autoPlay:So,capture:So,charSet:null,checked:So,cite:null,className:Co,cols:bo,colSpan:null,content:null,contentEditable:To,controls:So,controlsList:Co,coords:bo|No,crossOrigin:null,data:null,dateTime:null,decoding:null,default:So,defer:So,dir:null,dirName:null,disabled:So,download:fo,draggable:To,encType:null,enterKeyHint:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:So,formTarget:null,headers:Co,height:bo,hidden:So,high:bo,href:null,hrefLang:null,htmlFor:Co,httpEquiv:Co,id:null,imageSizes:null,imageSrcSet:No,inputMode:null,integrity:null,is:null,isMap:So,itemId:null,itemProp:Co,itemRef:Co,itemScope:So,itemType:Co,kind:null,label:null,lang:null,language:null,list:null,loop:So,low:bo,manifest:null,max:null,maxLength:bo,media:null,method:null,min:null,minLength:bo,multiple:So,muted:So,name:null,nonce:null,noModule:So,noValidate:So,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforePrint:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextMenu:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:So,optimum:bo,pattern:null,ping:Co,placeholder:null,playsInline:So,poster:null,preload:null,readOnly:So,referrerPolicy:null,rel:Co,required:So,reversed:So,rows:bo,rowSpan:bo,sandbox:Co,scope:null,scoped:So,seamless:So,selected:So,shape:null,size:bo,sizes:null,slot:null,span:bo,spellCheck:To,src:null,srcDoc:null,srcLang:null,srcSet:No,start:bo,step:null,style:null,tabIndex:bo,target:null,title:null,translate:null,type:null,typeMustMatch:So,useMap:null,value:To,width:bo,wrap:null,align:null,aLink:null,archive:Co,axis:null,background:null,bgColor:null,border:bo,borderColor:null,bottomMargin:bo,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:So,declare:So,event:null,face:null,frame:null,frameBorder:null,hSpace:bo,leftMargin:bo,link:null,longDesc:null,lowSrc:null,marginHeight:bo,marginWidth:bo,noResize:So,noHref:So,noShade:So,noWrap:So,object:null,profile:null,prompt:null,rev:null,rightMargin:bo,rules:null,scheme:null,scrolling:To,standby:null,summary:null,text:null,topMargin:bo,valueType:null,version:null,vAlign:null,vLink:null,vSpace:bo,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:So,prefix:null,property:null,results:bo,security:null,unselectable:null}})]),Ro=to.boolean,Ao=to.number,Oo=to.spaceSeparated,yo=to.commaSeparated,Io=to.commaOrSpaceSeparated,Do=Qi([co,lo,mo,ho,so({space:"svg",attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},transform:_o,properties:{about:Io,accentHeight:Ao,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:Ao,amplitude:Ao,arabicForm:null,ascent:Ao,attributeName:null,attributeType:null,azimuth:Ao,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:Ao,by:null,calcMode:null,capHeight:Ao,className:Oo,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:Ao,diffuseConstant:Ao,direction:null,display:null,dur:null,divisor:Ao,dominantBaseline:null,download:Ro,dx:null,dy:null,edgeMode:null,editable:null,elevation:Ao,enableBackground:null,end:null,event:null,exponent:Ao,externalResourcesRequired:null,fill:null,fillOpacity:Ao,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:yo,g2:yo,glyphName:yo,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:Ao,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:Ao,horizOriginX:Ao,horizOriginY:Ao,id:null,ideographic:Ao,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:Ao,k:Ao,k1:Ao,k2:Ao,k3:Ao,k4:Ao,kernelMatrix:Io,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:Ao,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:Ao,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:Ao,overlineThickness:Ao,paintOrder:null,panose1:null,path:null,pathLength:Ao,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:Oo,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:Ao,pointsAtY:Ao,pointsAtZ:Ao,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Io,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Io,rev:Io,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Io,requiredFeatures:Io,requiredFonts:Io,requiredFormats:Io,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:Ao,specularExponent:Ao,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:Ao,strikethroughThickness:Ao,string:null,stroke:null,strokeDashArray:Io,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:Ao,strokeOpacity:Ao,strokeWidth:null,style:null,surfaceScale:Ao,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Io,tabIndex:Ao,tableValues:null,target:null,targetX:Ao,targetY:Ao,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Io,to:null,transform:null,u1:null,u2:null,underlinePosition:Ao,underlineThickness:Ao,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:Ao,values:null,vAlphabetic:Ao,vMathematical:Ao,vectorEffect:null,vHanging:Ao,vIdeographic:Ao,version:null,vertAdvY:Ao,vertOriginX:Ao,vertOriginY:Ao,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:Ao,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null}})]),xo="data",Mo=function(e,t){var n=$i(t),r=t,a=ji;if(n in e.normal)return e.property[e.normal[n]];n.length>4&&n.slice(0,4)===xo&&wo.test(t)&&("-"===t.charAt(4)?r=function(e){var t=e.slice(5).replace(Lo,Uo);return xo+t.charAt(0).toUpperCase()+t.slice(1)}(t):t=function(e){var t=e.slice(4);if(Lo.test(t))return e;"-"!==(t=t.replace(Po,ko)).charAt(0)&&(t="-"+t);return xo+t}(t),a=no);return new a(r,t)},wo=/^data[-a-z0-9.:_]+$/i,Lo=/-[a-z]/g,Po=/[A-Z]/g;function ko(e){return"-"+e.toLowerCase()}function Uo(e){return e.charAt(1).toUpperCase()}const Fo="http://www.w3.org/1999/xhtml",Bo="http://www.w3.org/1998/Math/MathML",Go="http://www.w3.org/2000/svg",Ho="http://www.w3.org/1999/xlink",Yo="http://www.w3.org/XML/1998/namespace",Vo="http://www.w3.org/2000/xmlns/";var zo={html:Fo,mathml:Bo,svg:Go,xlink:Ho,xml:Yo,xmlns:Vo},qo=Object.freeze({html:Fo,mathml:Bo,svg:Go,xlink:Ho,xml:Yo,xmlns:Vo,default:zo}),Ko=Object.freeze({default:["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","solidColor","textArea","textPath"]}),Wo=function(e,t){var n,r,a,i,o,s=e||"",l=t||"div",c={},d=-1,_=s.length;for(;++d<=_;)(a=s.charCodeAt(d))&&a!==$o&&a!==Qo||((i=s.slice(o,d))&&(r===$o?n?n.push(i):(n=[i],c.className=n):r===Qo?c.id=i:l=i),o=d+1,r=a);return{type:"element",tagName:l,properties:c,children:[]}},Qo=35,$o=46;var jo=function(e){var t=String(e||Zo).trim();return t===Zo?[]:t.split(es)},Xo=function(e){return e.join(Jo).trim()},Zo="",Jo=" ",es=/[ \t\n\r\f]+/g;var ts={parse:jo,stringify:Xo},ns=function(e){var t,n=[],r=String(e||os),a=r.indexOf(as),i=0,o=!1;for(;!o;)-1===a&&(a=r.length,o=!0),!(t=r.slice(i,a).trim())&&o||n.push(t),i=a+1,a=r.indexOf(as,i);return n},rs=function(e,t){var n=t||{},r=!1===n.padLeft?os:is,a=n.padRight?is:os;e[e.length-1]===os&&(e=e.concat(os));return e.join(a+as+r).trim()},as=",",is=" ",os="";var ss={parse:ns,stringify:rs},ls=ts.parse,cs=ss.parse,ds=function(e,t,n){var r=n?function(e){var t,n=e.length,r=-1,a={};for(;++r<n;)t=e[r],a[t.toLowerCase()]=t;return a}(n):null;return function(e,n){var i,o=Wo(e,t),s=Array.prototype.slice.call(arguments,2),l=o.tagName.toLowerCase();o.tagName=r&&_s.call(r,l)?r[l]:l,n&&function(e,t){return"string"==typeof e||"length"in e||function(e,t){var n=t.type;return!("input"===e||!n||"string"!=typeof n)&&("object"==typeof t.children&&"length"in t.children||(n=n.toLowerCase(),"button"===e?"menu"!==n&&"submit"!==n&&"reset"!==n&&"button"!==n:"value"in t))}(t.tagName,e)}(n,o)&&(s.unshift(n),n=null);if(n)for(i in n)a(o.properties,i,n[i]);(function e(t,n){var r,a;if("string"!=typeof n&&"number"!=typeof n)if("object"==typeof n&&"length"in n)for(r=-1,a=n.length;++r<a;)e(t,n[r]);else{if("object"!=typeof n||!("type"in n))throw new Error("Expected node, nodes, or string, got `"+n+"`");t.push(n)}else t.push({type:"text",value:String(n)})})(o.children,s),"template"===o.tagName&&(o.content={type:"root",children:o.children},o.children=[]);return o};function a(t,n,r){var a,i,o;null!==r&&void 0!==r&&r==r&&(a=Mo(e,n),i=a.property,"string"==typeof(o=r)&&(a.spaceSeparated?o=ls(o):a.commaSeparated?o=cs(o):a.commaOrSpaceSeparated&&(o=ls(cs(o).join(" ")))),"style"===i&&"string"!=typeof r&&(o=function(e){var t,n=[];for(t in e)n.push([t,e[t]].join(": "));return n.join("; ")}(o)),"className"===i&&t.className&&(o=t.className.concat(o)),t[i]=function(e,t,n){var r,a,i;if("object"!=typeof n||!("length"in n))return us(e,t,n);a=n.length,r=-1,i=[];for(;++r<a;)i[r]=us(e,t,n[r]);return i}(a,i,o))}},_s={}.hasOwnProperty;function us(e,t,n){var r=n;return e.number||e.positiveNumber?isNaN(r)||""===r||(r=Number(r)):(e.boolean||e.overloadedBoolean)&&("string"!=typeof r||""!==r&&$i(n)!==$i(t)||(r=!0)),r}var ms=C(Ko),ps=ds(Do,"g",ms);ps.displayName="svg";var gs=ps,Es=ds(vo,"div");Es.displayName="html";var hs=Es,Ss=function(e,t){var n,r=0;if(e=String(e),"string"!=typeof t||1!==t.length)throw new Error("Expected character");n=e.indexOf(t);for(;-1!==n;)r++,n=e.indexOf(t,n+1);return r};var fs=C(qo),Ts=function(e,t){var n,r=t||{};r.messages?(n=r,r={}):n=r.file;return Ns(e,{schema:"svg"===r.space?Do:vo,file:n,verbose:r.verbose,location:!1})},bs={}.hasOwnProperty,Cs={"#document":vs,"#document-fragment":vs,"#text":function(e){return{type:"text",value:e.value}},"#comment":function(e){return{type:"comment",value:e.data}},"#documentType":function(e){return{type:"doctype",name:e.name||"",public:e.publicId||null,system:e.systemId||null}}};function Ns(t,n){var r,a,i,o=n.schema,s=bs.call(Cs,t.nodeName)?Cs[t.nodeName]:Rs;return s===Rs&&(n.schema=t.namespaceURI===fs.svg?Do:vo),t.childNodes&&(r=function(e,t){var n=e.length,r=-1,a=[];for(;++r<n;)a[r]=Ns(e[r],t);return a}(t.childNodes,n)),a=s(t,r,n),t.sourceCodeLocation&&n.file&&(i=function(t,n,r){var a,i,o,s,l,c=r.schema,d=r.verbose,_=As(n);if("element"===t.type&&(a=t.children[t.children.length-1],!n.endTag&&a&&a.position&&a.position.end&&(_.end=e(a.position.end)),d)){for(o in i=n.attrs,s={},i)l=Mo(c,o).property,s[l]=As(i[o]);t.data={position:{opening:As(n.startTag),closing:n.endTag?As(n.endTag):null,properties:s}}}return _}(a,t.sourceCodeLocation,n))&&(n.location=!0,a.position=i),n.schema=o,a}function vs(e,t,n){var r,a={type:"root",children:t,data:{}};return a.data.quirksMode="quirks"===e.mode||"limited-quirks"===e.mode,n.file&&n.location&&(r=String(n.file),a.position={start:{line:1,column:1,offset:0},end:{line:Ss(r,"\n")+1,column:r.length-r.lastIndexOf("\n"),offset:r.length}}),a}function Rs(e,t,n){for(var r,a,i,o,s,l="svg"===n.schema.space?gs:hs,c=e.tagName,d=e.attrs,_=d.length,u={},m=-1;++m<_;)u[((r=d[m]).prefix?r.prefix+":":"")+r.name]=r.value;return a=l(c,u,t),"template"===c&&"content"in e&&(o=(i=e.sourceCodeLocation)&&i.startTag&&As(i.startTag).end,s=i&&i.endTag&&As(i.endTag).start,a.content=Ns(e.content,n),(o||s)&&n.file&&(a.content.position={start:o,end:s})),a}function As(e){var t=Os({line:e.startLine,column:e.startCol,offset:e.startOffset}),n=Os({line:e.endLine,column:e.endCol,offset:e.endOffset});return t||n?{start:t,end:n}:null}function Os(e){return e.line&&e.column?e:null}var ys={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},Is=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,Ds=/\n/g,xs=/^\s*/,Ms=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,ws=/^:\s*/,Ls=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,Ps=/^[;\s]*/,ks=/^\s+|\s+$/g,Us="\n",Fs="/",Bs="*",Gs="",Hs="comment",Ys="declaration",Vs=function(e,t){if("string"!=typeof e)throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var n=1,r=1;function a(e){var t=e.match(Ds);t&&(n+=t.length);var a=e.lastIndexOf(Us);r=~a?e.length-a:r+e.length}function i(){var e={line:n,column:r};return function(t){return t.position=new o(e),c(),t}}function o(e){this.start=e,this.end={line:n,column:r},this.source=t.source}function s(a){var i=new Error(t.source+":"+n+":"+r+": "+a);if(i.reason=a,i.filename=t.source,i.line=n,i.column=r,i.source=e,!t.silent)throw i}function l(t){var n=t.exec(e);if(n){var r=n[0];return a(r),e=e.slice(r.length),n}}function c(){l(xs)}function d(e){var t;for(e=e||[];t=_();)!1!==t&&e.push(t);return e}function _(){var t=i();if(Fs==e.charAt(0)&&Bs==e.charAt(1)){for(var n=2;Gs!=e.charAt(n)&&(Bs!=e.charAt(n)||Fs!=e.charAt(n+1));)++n;if(n+=2,Gs===e.charAt(n-1))return s("End of comment missing");var o=e.slice(2,n-2);return r+=2,a(o),e=e.slice(n),r+=2,t({type:Hs,comment:o})}}function u(){var e=i(),t=l(Ms);if(t){if(_(),!l(ws))return s("property missing ':'");var n=l(Ls),r=e({type:Ys,property:zs(t[0].replace(Is,Gs)),value:n?zs(n[0].replace(Is,Gs)):Gs});return l(Ps),r}}return o.prototype.content=e,c(),function(){var e,t=[];for(d(t);e=u();)!1!==e&&(t.push(e),d(t));return t}()};function zs(e){return e?e.replace(ks,Gs):Gs}var qs=function(e,t){var n,r=null;if(!e||"string"!=typeof e)return r;for(var a,i,o=Vs(e),s="function"==typeof t,l=0,c=o.length;l<c;l++)a=(n=o[l]).property,i=n.value,s?t(a,i,n):i&&(r||(r={}),r[a]=i);return r},Ks=C(Object.freeze({classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink",default:ys})),Ws=s("root"),Qs=s("element"),$s=s("text"),js=/-([a-z])/g,Xs=function(e,t,n){var r,a,i,o,s=n||{};if("function"!=typeof e)throw new Error("h is not a function");"string"==typeof s||"boolean"==typeof s?(r=s,s={}):r=s.prefix;a=function(e){var t=e&&e("div");return Boolean(t&&("_owner"in t||"_store"in t)&&null===t.key)}(e),i=function(e){var t=e&&e("div");return Boolean(t&&t.context&&t.context._isVue)}(e),o=function(e){return e&&"VirtualNode"===e("div").type}(e),(null===r||void 0===r)&&(r=(!0===a||!0===i||!0===o)&&"h-");if(Ws(t))t=1===t.children.length&&Qs(t.children[0])?t.children[0]:{type:"element",tagName:"div",properties:{},children:t.children};else if(!Qs(t))throw new Error("Expected root or element, not `"+(t&&t.type||t)+"`");return function e(t,n,r){var a=r.schema;var i=a;var o=n.tagName;var s;var l;var c;var d;var _;var u;var m;var p;var g;"html"===a.space&&"svg"===o.toLowerCase()&&(i=Do,r.schema=i);!0===r.vdom&&"html"===i.space&&(o=o.toUpperCase());s=n.properties;l={};for(d in s)Zs(l,d,s[d],r);"string"!=typeof l.style||!0!==r.vdom&&!0!==r.vue&&!0!==r.react||(l.style=function(e,t){var n={};try{qs(e,function(e,t){n[function(e){"-ms-"===e.slice(0,4)&&(e="ms-"+e.slice(4));return e.replace(js,Js)}(e)]=t})}catch(e){throw e.message=t+"[style]"+e.message.slice("undefined".length),e}return n}(l.style,o));r.prefix&&(r.key++,l.key=r.prefix+r.key);r.vdom&&"html"!==i.space&&(l.namespace=fs[i.space]);_=[];c=n.children;u=c?c.length:0;m=-1;for(;++m<u;)p=c[m],Qs(p)?_.push(e(t,p,r)):$s(p)&&_.push(p.value);g=0===_.length?t(o,l):t(o,l,_);r.schema=a;return g}(e,t,{schema:"svg"===s.space?Do:vo,prefix:r,key:0,react:a,vue:i,vdom:o,hyperscript:function(e){return Boolean(e&&e.context&&e.cleanup)}(e)})};function Zs(e,t,n,r){var a,i=r.hyperscript||r.vdom||r.vue,o=r.schema,s=Mo(o,t);null===n||void 0===n||n!=n||i&&!1===n||i&&s.boolean&&!n||(null!==n&&"object"==typeof n&&"length"in n&&(n=(s.commaSeparated?ss:ts).stringify(n)),s.boolean&&!0===r.hyperscript&&(n=""),r.vue?"style"!==t&&(a="attrs"):s.mustUseProperty||(!0===r.vdom?a="attributes":!0===r.hyperscript&&(a="attrs")),a?(void 0===e[a]&&(e[a]={}),e[a][s.attribute]=n):r.react&&s.space?e[Ks[s.property]||s.property]=n:e[s.attribute]=n)}function Js(e,t){return t.toUpperCase()}var el=function(e,t){var n=t||{};function r(t){var n=r.invalid,a=r.handlers;return t&&nl.call(t,e)&&(n=nl.call(a,t[e])?a[t[e]]:r.unknown),(n||tl).apply(this,arguments)}return r.handlers=n.handlers||{},r.invalid=n.invalid,r.unknown=n.unknown,r},tl=Function.prototype,nl={}.hasOwnProperty;var rl=function(e,t){return il(e,"svg"===t?Do:vo)},al=["svg","html"],il=el("type");function ol(e,t,n){var r,a=n,i=e.position,o=e.children,s=[],l=o?o.length:0,c=-1;for("element"===e.type&&("html"===a.space&&"svg"===e.tagName&&(a=Do),t.namespaceURI=fs[a.space]);++c<l;)(r=il(o[c],a)).parentNode=t,s[c]=r;return"element"!==e.type&&"root"!==e.type||(t.childNodes=s),i&&i.start&&i.end&&(t.sourceCodeLocation={startLine:i.start.line,startCol:i.start.column,startOffset:i.start.offset,endLine:i.end.line,endCol:i.end.column,endOffset:i.end.offset}),t}il.handlers.root=function(e,t){var n=(e.data||{}).quirksMode?"quirks":"no-quirks";return ol(e,{nodeName:"#document",mode:n},t)},il.handlers.element=function(t,n){var r=n.space,a=e(t,{children:[]});return Xs(function(e,r){var i,o,s,l,c,d,_=[];for(l in r)c=Mo(n,l),!1===(o=r[l])||c.boolean&&!o||(s={name:l,value:!0===o?"":String(o)},c.space&&-1===al.indexOf(c.space)&&(-1===(d=l.indexOf(":"))?s.prefix="":(s.name=l.slice(d+1),s.prefix=l.slice(0,d)),s.namespace=fs[c.space]),_.push(s));i=ol(t,{nodeName:e,tagName:e,attrs:_},n),"template"===e&&(i.content=function(e,t){return ol(e,{nodeName:"#document-fragment"},t)}(a.content,n));return i},a,{space:r})},il.handlers.text=function(e,t){return ol(e,{nodeName:"#text",value:e.value},t)},il.handlers.comment=function(e,t){return ol(e,{nodeName:"#comment",data:e.value},t)},il.handlers.doctype=function(e,t){return ol(e,{nodeName:"#documentType",name:e.name,publicId:e.public||"",systemId:e.system||""},t)};var sl=C(Object.freeze({default:["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","isindex","keygen","link","menuitem","meta","nextid","param","source","track","wbr"]})),ll=function(t,n){var r,a,i,o,s,l=new Qa(El),c=el("type");if(c.handlers.root=function(e){m(e.children)},c.handlers.element=function(t){var n=-1!==sl.indexOf(t.tagName);l._processToken(function(t){var n=Sl(t);return n.startTag=e(n),{type:ul,tagName:t.tagName,selfClosing:!1,attrs:function(e){return rl({tagName:e.tagName,type:"element",properties:e.properties}).attrs}(t),location:n}}(t),fs.html),m(t.children),n||(l._processToken(function(t){var n=Sl(t);return n.endTag=e(n),{type:ml,tagName:t.tagName,attrs:[],location:n}}(t)),r.state=dl)},c.handlers.text=function(e){l._processToken({type:_l,chars:e.value,location:Sl(e)})},c.handlers.comment=function(e){l._processToken({type:pl,data:e.value,location:Sl(e)})},c.handlers.doctype=function(e){var t=rl(e);l._processToken({type:gl,name:t.name,forceQuirks:!1,publicId:t.publicId,systemId:t.systemId,location:Sl(e)})},c.handlers.raw=function(e){var t,n=N.start(e);a.html=null,a.endOfChunkHit=!1,a.lastChunkWritten=!1,a.lastCharPos=-1,a.pos=-1,i.droppedBufferSize=0,i.line=n.line,i.col=1,i.offset=0,i.lineStartPos=1-n.column,i.droppedBufferSize=n.offset,o.currentAttrLocation=null,o.ctLoc=Sl(e),r.write(e.value),l._runParsingLoop(null),(t=r.currentCharacterToken)&&(t.location.endLine=i.line,t.location.endCol=i.col+1,t.location.endOffset=i.offset+1,l._processToken(t)),r.currentToken=null,r.currentCharacterToken=null,r.currentAttr=null},c.unknown=hl,s=Ts((_=t,u="root"===_.type?_.children[0]:_,!u||"doctype"!==u.type&&"html"!==u.tagName?function(){var e,n,s;return e={nodeName:"template",tagName:"template",attrs:[],namespaceURI:fs.html,childNodes:[]},n={nodeName:"documentmock",tagName:"documentmock",attrs:[],namespaceURI:fs.html,childNodes:[]},s={nodeName:"#document-fragment",childNodes:[]},l._bootstrap(n,e),l._pushTmplInsertionMode(cl),l._initTokenizerForFragmentParsing(),l._insertFakeRootElement(),l._resetInsertionMode(),l._findFormInFragmentContext(),r=l.tokenizer,a=r.preprocessor,o=r.__mixins[0],i=o.posTracker,c(t),l._adoptNodes(n.childNodes[0],s),s}():(d=l.treeAdapter.createDocument(),l._bootstrap(d,null),r=l.tokenizer,a=r.preprocessor,o=r.__mixins[0],i=o.posTracker,c(t),d)),n),"root"!==t.type&&1===s.children.length)return s.children[0];var d;var _,u;return s;function m(e){var t=0,n=-1;for(e&&(t=e.length);++n<t;)c(e[n])}},cl="IN_TEMPLATE_MODE",dl="DATA_STATE",_l="CHARACTER_TOKEN",ul="START_TAG_TOKEN",ml="END_TAG_TOKEN",pl="COMMENT_TOKEN",gl="DOCTYPE_TOKEN",El={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function hl(e){throw new Error("Cannot compile `"+e.type+"` node")}function Sl(e){var t=N.start(e),n=N.end(e);return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:n.line,endCol:n.column,endOffset:n.offset}}var fl=function(){return ll};var Tl=bl;function bl(e){if("string"==typeof e)return function(e){return function(t){return Boolean(t&&t.type===e)}}(e);if(null===e||void 0===e)return Cl;if("object"==typeof e)return("length"in e?function(e){var t=function(e){var t=[],n=e.length,r=-1;for(;++r<n;)t[r]=bl(e[r]);return t}(e),n=t.length;return function(){var e=-1;for(;++e<n;)if(t[e].apply(this,arguments))return!0;return!1}}:function(e){return function(t){var n;for(n in e)if(t[n]!==e[n])return!1;return!0}})(e);if("function"==typeof e)return e;throw new Error("Expected function, string, or object as test")}function Cl(){return!0}var Nl=Ol,vl=!0,Rl="skip",Al=!1;function Ol(e,t,n,r){var a;function i(e,o,s){var l,c=[];return(t&&!a(e,o,s[s.length-1]||null)||(c=yl(n(e,s)))[0]!==Al)&&e.children&&c[0]!==Rl&&(l=yl(function(e,t){var n,a=r?-1:1,o=(r?e.length:-1)+a;for(;o>-1&&o<e.length;){if((n=i(e[o],o,t))[0]===Al)return n;o="number"==typeof n[1]?n[1]:o+a}}(e.children,s.concat(e))))[0]===Al?l:c}"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),a=Tl(t),i(e,null,[])}function yl(e){return null!==e&&"object"==typeof e&&"length"in e?e:"number"==typeof e?[vl,e]:[e]}Ol.CONTINUE=vl,Ol.SKIP=Rl,Ol.EXIT=Al;var Il=wl,Dl=Nl.CONTINUE,xl=Nl.SKIP,Ml=Nl.EXIT;function wl(e,t,n,r){"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),Nl(e,t,function(e,t){var r=t[t.length-1],a=r?r.children.indexOf(e):null;return n(e,a,r)},r)}wl.CONTINUE=Dl,wl.SKIP=xl,wl.EXIT=Ml;var Ll,Pl=b(function(e,t){var n;"undefined"!=typeof self&&self,n=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){},function(e,t,n){n.r(t);n(0);var r=function(){function e(e,t,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=n}return e.range=function(t,n){return n?t&&t.loc&&n.loc&&t.loc.lexer===n.loc.lexer?new e(t.loc.lexer,t.loc.start,n.loc.end):null:t&&t.loc},e}(),a=function(){function e(e,t){this.text=void 0,this.loc=void 0,this.text=e,this.loc=t}return e.prototype.range=function(t,n){return new e(n,r.range(this,t))},e}(),i=function e(t,n){this.position=void 0;var r,a="KaTeX parse error: "+t,i=n&&n.loc;if(i&&i.start<=i.end){var o=i.lexer.input;r=i.start;var s=i.end;r===o.length?a+=" at end of input: ":a+=" at position "+(r+1)+": ";var l=o.slice(r,s).replace(/[^]/g,"$&̲");a+=(r>15?"…"+o.slice(r-15,r):o.slice(0,r))+l+(s+15<o.length?o.slice(s,s+15)+"…":o.slice(s))}var c=new Error(a);return c.name="ParseError",c.__proto__=e.prototype,c.position=r,c};i.prototype.__proto__=Error.prototype;var o=i,s=/([A-Z])/g,l={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},c=/[&><"']/g;var d=function e(t){return"ordgroup"===t.type?1===t.body.length?e(t.body[0]):t:"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},_={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(c,function(e){return l[e]})},hyphenate:function(e){return e.replace(s,"-$1").toLowerCase()},getBaseElem:d,isCharacterBox:function(e){var t=d(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^\s*([^\\/#]*?)(?::|&#0*58|&#x0*3a)/i.exec(e);return null!=t?t[1]:"_relative"}},u=function(){function e(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,e=e||{},this.displayMode=_.deflt(e.displayMode,!1),this.output=_.deflt(e.output,"htmlAndMathml"),this.leqno=_.deflt(e.leqno,!1),this.fleqn=_.deflt(e.fleqn,!1),this.throwOnError=_.deflt(e.throwOnError,!0),this.errorColor=_.deflt(e.errorColor,"#cc0000"),this.macros=e.macros||{},this.minRuleThickness=Math.max(0,_.deflt(e.minRuleThickness,0)),this.colorIsTextColor=_.deflt(e.colorIsTextColor,!1),this.strict=_.deflt(e.strict,"warn"),this.trust=_.deflt(e.trust,!1),this.maxSize=Math.max(0,_.deflt(e.maxSize,1/0)),this.maxExpand=Math.max(0,_.deflt(e.maxExpand,1e3))}var t=e.prototype;return t.reportNonstrict=function(e,t,n){var r=this.strict;if("function"==typeof r&&(r=r(e,t,n)),r&&"ignore"!==r){if(!0===r||"error"===r)throw new o("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",n);"warn"===r?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+r+"': "+t+" ["+e+"]")}},t.useStrictBehavior=function(e,t,n){var r=this.strict;if("function"==typeof r)try{r=r(e,t,n)}catch(e){r="error"}return!(!r||"ignore"===r)&&(!0===r||"error"===r||("warn"===r?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+r+"': "+t+" ["+e+"]"),!1)))},t.isTrusted=function(e){e.url&&!e.protocol&&(e.protocol=_.protocolFromUrl(e.url));var t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)},e}(),m=function(){function e(e,t,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=n}var t=e.prototype;return t.sup=function(){return p[g[this.id]]},t.sub=function(){return p[E[this.id]]},t.fracNum=function(){return p[h[this.id]]},t.fracDen=function(){return p[S[this.id]]},t.cramp=function(){return p[f[this.id]]},t.text=function(){return p[T[this.id]]},t.isTight=function(){return this.size>=2},e}(),p=[new m(0,0,!1),new m(1,0,!0),new m(2,1,!1),new m(3,1,!0),new m(4,2,!1),new m(5,2,!0),new m(6,3,!1),new m(7,3,!0)],g=[4,5,4,5,6,7,6,7],E=[5,5,5,5,7,7,7,7],h=[2,3,4,5,6,7,6,7],S=[3,3,5,5,7,7,7,7],f=[1,1,3,3,5,5,7,7],T=[0,1,2,3,2,3,2,3],b={DISPLAY:p[0],TEXT:p[2],SCRIPT:p[4],SCRIPTSCRIPT:p[6]},C=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var N=[];function v(e){for(var t=0;t<N.length;t+=2)if(e>=N[t]&&e<=N[t+1])return!0;return!1}C.forEach(function(e){return e.blocks.forEach(function(e){return N.push.apply(N,e)})});var R={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e},t.toMarkup=function(){for(var e="",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e},t.toText=function(){var e=function(e){return e.toText()};return this.children.map(e).join("")},e}(),O=function(e){return e.filter(function(e){return e}).join(" ")},y=function(e,t,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},t){t.style.isTight()&&this.classes.push("mtight");var r=t.getColor();r&&(this.style.color=r)}},I=function(e){var t=document.createElement(e);for(var n in t.className=O(this.classes),this.style)this.style.hasOwnProperty(n)&&(t.style[n]=this.style[n]);for(var r in this.attributes)this.attributes.hasOwnProperty(r)&&t.setAttribute(r,this.attributes[r]);for(var a=0;a<this.children.length;a++)t.appendChild(this.children[a].toNode());return t},D=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+_.escape(O(this.classes))+'"');var n="";for(var r in this.style)this.style.hasOwnProperty(r)&&(n+=_.hyphenate(r)+":"+this.style[r]+";");for(var a in n&&(t+=' style="'+_.escape(n)+'"'),this.attributes)this.attributes.hasOwnProperty(a)&&(t+=" "+a+'="'+_.escape(this.attributes[a])+'"');t+=">";for(var i=0;i<this.children.length;i++)t+=this.children[i].toMarkup();return t+="</"+e+">"},x=function(){function e(e,t,n,r){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,y.call(this,e,n,r),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){return I.call(this,"span")},t.toMarkup=function(){return D.call(this,"span")},e}(),M=function(){function e(e,t,n,r){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,y.call(this,t,r),this.children=n||[],this.setAttribute("href",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){return I.call(this,"a")},t.toMarkup=function(){return D.call(this,"a")},e}(),w=function(){function e(e,t,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=n}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e},t.toMarkup=function(){var e="<img src='"+this.src+" 'alt='"+this.alt+"' ",t="";for(var n in this.style)this.style.hasOwnProperty(n)&&(t+=_.hyphenate(n)+":"+this.style[n]+";");return t&&(e+=' style="'+_.escape(t)+'"'),e+="'/>"},e}(),L={"î":"ı̂","ï":"ı̈","í":"ı́","ì":"ı̀"},P=function(){function e(e,t,n,r,a,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=n||0,this.italic=r||0,this.skew=a||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t<C.length;t++)for(var n=C[t],r=0;r<n.blocks.length;r++){var a=n.blocks[r];if(e>=a[0]&&e<=a[1])return n.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[îïíì]/.test(this.text)&&(this.text=L[this.text])}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var n in this.italic>0&&((t=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((t=t||document.createElement("span")).className=O(this.classes)),this.style)this.style.hasOwnProperty(n)&&((t=t||document.createElement("span")).style[n]=this.style[n]);return t?(t.appendChild(e),t):e},t.toMarkup=function(){var e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=_.escape(O(this.classes)),t+='"');var n="";for(var r in this.italic>0&&(n+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(r)&&(n+=_.hyphenate(r)+":"+this.style[r]+";");n&&(e=!0,t+=' style="'+_.escape(n)+'"');var a=_.escape(this.text);return e?(t+=">",t+=a,t+="</span>"):a},e}(),k=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},t.toMarkup=function(){var e="<svg";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");e+=">";for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+="</svg>"},e}(),U=function(){function e(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",R[this.pathName]),e},t.toMarkup=function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+R[this.pathName]+"'/>"},e}(),F=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e="<line";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");return e+="/>"},e}();function B(e){if(e instanceof P)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}var G={"AMS-Regular":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},"Fraktur-Regular":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,1],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.9,0,0,.278],8943:[-.19,.31,0,0,1.172],8945:[-.1,.82,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.744,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.744,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},"Math-Italic":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"Math-Regular":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"SansSerif-Bold":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},"Size1-Regular":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},H={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Y={"Å":"A","Ç":"C","Ð":"D","Þ":"o","å":"a","ç":"c","ð":"d","þ":"o","А":"A","Б":"B","В":"B","Г":"F","Д":"A","Е":"E","Ж":"K","З":"3","И":"N","Й":"N","К":"K","Л":"N","М":"M","Н":"H","О":"O","П":"N","Р":"P","С":"C","Т":"T","У":"y","Ф":"O","Х":"X","Ц":"U","Ч":"h","Ш":"W","Щ":"W","Ъ":"B","Ы":"X","Ь":"B","Э":"3","Ю":"X","Я":"R","а":"a","б":"b","в":"a","г":"r","д":"y","е":"e","ж":"m","з":"e","и":"n","й":"n","к":"n","л":"n","м":"m","н":"n","о":"o","п":"n","р":"p","с":"c","т":"o","у":"y","ф":"b","х":"x","ц":"n","ч":"n","ш":"w","щ":"w","ъ":"a","ы":"m","ь":"a","э":"e","ю":"m","я":"r"};function V(e,t,n){if(!G[t])throw new Error("Font metrics not found for font: "+t+".");var r=e.charCodeAt(0),a=G[t][r];if(!a&&e[0]in Y&&(r=Y[e[0]].charCodeAt(0),a=G[t][r]),a||"text"!==n||v(r)&&(a=G[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var z={};var q={bin:1,close:1,inner:1,open:1,punct:1,rel:1},K={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},W={math:{},text:{}},Q=W;function $(e,t,n,r,a,i){W[e][a]={font:t,group:n,replace:r},i&&r&&(W[e][r]=W[e][a])}var j="main",X="ams",Z="bin",J="mathord",ee="op-token",te="rel";$("math",j,te,"≡","\\equiv",!0),$("math",j,te,"≺","\\prec",!0),$("math",j,te,"≻","\\succ",!0),$("math",j,te,"∼","\\sim",!0),$("math",j,te,"⊥","\\perp"),$("math",j,te,"⪯","\\preceq",!0),$("math",j,te,"⪰","\\succeq",!0),$("math",j,te,"≃","\\simeq",!0),$("math",j,te,"∣","\\mid",!0),$("math",j,te,"≪","\\ll",!0),$("math",j,te,"≫","\\gg",!0),$("math",j,te,"≍","\\asymp",!0),$("math",j,te,"∥","\\parallel"),$("math",j,te,"⋈","\\bowtie",!0),$("math",j,te,"⌣","\\smile",!0),$("math",j,te,"⊑","\\sqsubseteq",!0),$("math",j,te,"⊒","\\sqsupseteq",!0),$("math",j,te,"≐","\\doteq",!0),$("math",j,te,"⌢","\\frown",!0),$("math",j,te,"∋","\\ni",!0),$("math",j,te,"∝","\\propto",!0),$("math",j,te,"⊢","\\vdash",!0),$("math",j,te,"⊣","\\dashv",!0),$("math",j,te,"∋","\\owns"),$("math",j,"punct",".","\\ldotp"),$("math",j,"punct","⋅","\\cdotp"),$("math",j,"textord","#","\\#"),$("text",j,"textord","#","\\#"),$("math",j,"textord","&","\\&"),$("text",j,"textord","&","\\&"),$("math",j,"textord","ℵ","\\aleph",!0),$("math",j,"textord","∀","\\forall",!0),$("math",j,"textord","ℏ","\\hbar",!0),$("math",j,"textord","∃","\\exists",!0),$("math",j,"textord","∇","\\nabla",!0),$("math",j,"textord","♭","\\flat",!0),$("math",j,"textord","ℓ","\\ell",!0),$("math",j,"textord","♮","\\natural",!0),$("math",j,"textord","♣","\\clubsuit",!0),$("math",j,"textord","℘","\\wp",!0),$("math",j,"textord","♯","\\sharp",!0),$("math",j,"textord","♢","\\diamondsuit",!0),$("math",j,"textord","ℜ","\\Re",!0),$("math",j,"textord","♡","\\heartsuit",!0),$("math",j,"textord","ℑ","\\Im",!0),$("math",j,"textord","♠","\\spadesuit",!0),$("text",j,"textord","§","\\S",!0),$("text",j,"textord","¶","\\P",!0),$("math",j,"textord","†","\\dag"),$("text",j,"textord","†","\\dag"),$("text",j,"textord","†","\\textdagger"),$("math",j,"textord","‡","\\ddag"),$("text",j,"textord","‡","\\ddag"),$("text",j,"textord","‡","\\textdaggerdbl"),$("math",j,"close","⎱","\\rmoustache",!0),$("math",j,"open","⎰","\\lmoustache",!0),$("math",j,"close","⟯","\\rgroup",!0),$("math",j,"open","⟮","\\lgroup",!0),$("math",j,Z,"∓","\\mp",!0),$("math",j,Z,"⊖","\\ominus",!0),$("math",j,Z,"⊎","\\uplus",!0),$("math",j,Z,"⊓","\\sqcap",!0),$("math",j,Z,"∗","\\ast"),$("math",j,Z,"⊔","\\sqcup",!0),$("math",j,Z,"◯","\\bigcirc"),$("math",j,Z,"∙","\\bullet"),$("math",j,Z,"‡","\\ddagger"),$("math",j,Z,"≀","\\wr",!0),$("math",j,Z,"⨿","\\amalg"),$("math",j,Z,"&","\\And"),$("math",j,te,"⟵","\\longleftarrow",!0),$("math",j,te,"⇐","\\Leftarrow",!0),$("math",j,te,"⟸","\\Longleftarrow",!0),$("math",j,te,"⟶","\\longrightarrow",!0),$("math",j,te,"⇒","\\Rightarrow",!0),$("math",j,te,"⟹","\\Longrightarrow",!0),$("math",j,te,"↔","\\leftrightarrow",!0),$("math",j,te,"⟷","\\longleftrightarrow",!0),$("math",j,te,"⇔","\\Leftrightarrow",!0),$("math",j,te,"⟺","\\Longleftrightarrow",!0),$("math",j,te,"↦","\\mapsto",!0),$("math",j,te,"⟼","\\longmapsto",!0),$("math",j,te,"↗","\\nearrow",!0),$("math",j,te,"↩","\\hookleftarrow",!0),$("math",j,te,"↪","\\hookrightarrow",!0),$("math",j,te,"↘","\\searrow",!0),$("math",j,te,"↼","\\leftharpoonup",!0),$("math",j,te,"⇀","\\rightharpoonup",!0),$("math",j,te,"↙","\\swarrow",!0),$("math",j,te,"↽","\\leftharpoondown",!0),$("math",j,te,"⇁","\\rightharpoondown",!0),$("math",j,te,"↖","\\nwarrow",!0),$("math",j,te,"⇌","\\rightleftharpoons",!0),$("math",X,te,"≮","\\nless",!0),$("math",X,te,"","\\@nleqslant"),$("math",X,te,"","\\@nleqq"),$("math",X,te,"⪇","\\lneq",!0),$("math",X,te,"≨","\\lneqq",!0),$("math",X,te,"","\\@lvertneqq"),$("math",X,te,"⋦","\\lnsim",!0),$("math",X,te,"⪉","\\lnapprox",!0),$("math",X,te,"⊀","\\nprec",!0),$("math",X,te,"⋠","\\npreceq",!0),$("math",X,te,"⋨","\\precnsim",!0),$("math",X,te,"⪹","\\precnapprox",!0),$("math",X,te,"≁","\\nsim",!0),$("math",X,te,"","\\@nshortmid"),$("math",X,te,"∤","\\nmid",!0),$("math",X,te,"⊬","\\nvdash",!0),$("math",X,te,"⊭","\\nvDash",!0),$("math",X,te,"⋪","\\ntriangleleft"),$("math",X,te,"⋬","\\ntrianglelefteq",!0),$("math",X,te,"⊊","\\subsetneq",!0),$("math",X,te,"","\\@varsubsetneq"),$("math",X,te,"⫋","\\subsetneqq",!0),$("math",X,te,"","\\@varsubsetneqq"),$("math",X,te,"≯","\\ngtr",!0),$("math",X,te,"","\\@ngeqslant"),$("math",X,te,"","\\@ngeqq"),$("math",X,te,"⪈","\\gneq",!0),$("math",X,te,"≩","\\gneqq",!0),$("math",X,te,"","\\@gvertneqq"),$("math",X,te,"⋧","\\gnsim",!0),$("math",X,te,"⪊","\\gnapprox",!0),$("math",X,te,"⊁","\\nsucc",!0),$("math",X,te,"⋡","\\nsucceq",!0),$("math",X,te,"⋩","\\succnsim",!0),$("math",X,te,"⪺","\\succnapprox",!0),$("math",X,te,"≆","\\ncong",!0),$("math",X,te,"","\\@nshortparallel"),$("math",X,te,"∦","\\nparallel",!0),$("math",X,te,"⊯","\\nVDash",!0),$("math",X,te,"⋫","\\ntriangleright"),$("math",X,te,"⋭","\\ntrianglerighteq",!0),$("math",X,te,"","\\@nsupseteqq"),$("math",X,te,"⊋","\\supsetneq",!0),$("math",X,te,"","\\@varsupsetneq"),$("math",X,te,"⫌","\\supsetneqq",!0),$("math",X,te,"","\\@varsupsetneqq"),$("math",X,te,"⊮","\\nVdash",!0),$("math",X,te,"⪵","\\precneqq",!0),$("math",X,te,"⪶","\\succneqq",!0),$("math",X,te,"","\\@nsubseteqq"),$("math",X,Z,"⊴","\\unlhd"),$("math",X,Z,"⊵","\\unrhd"),$("math",X,te,"↚","\\nleftarrow",!0),$("math",X,te,"↛","\\nrightarrow",!0),$("math",X,te,"⇍","\\nLeftarrow",!0),$("math",X,te,"⇏","\\nRightarrow",!0),$("math",X,te,"↮","\\nleftrightarrow",!0),$("math",X,te,"⇎","\\nLeftrightarrow",!0),$("math",X,te,"△","\\vartriangle"),$("math",X,"textord","ℏ","\\hslash"),$("math",X,"textord","▽","\\triangledown"),$("math",X,"textord","◊","\\lozenge"),$("math",X,"textord","Ⓢ","\\circledS"),$("math",X,"textord","®","\\circledR"),$("text",X,"textord","®","\\circledR"),$("math",X,"textord","∡","\\measuredangle",!0),$("math",X,"textord","∄","\\nexists"),$("math",X,"textord","℧","\\mho"),$("math",X,"textord","Ⅎ","\\Finv",!0),$("math",X,"textord","⅁","\\Game",!0),$("math",X,"textord","‵","\\backprime"),$("math",X,"textord","▲","\\blacktriangle"),$("math",X,"textord","▼","\\blacktriangledown"),$("math",X,"textord","■","\\blacksquare"),$("math",X,"textord","⧫","\\blacklozenge"),$("math",X,"textord","★","\\bigstar"),$("math",X,"textord","∢","\\sphericalangle",!0),$("math",X,"textord","∁","\\complement",!0),$("math",X,"textord","ð","\\eth",!0),$("math",X,"textord","╱","\\diagup"),$("math",X,"textord","╲","\\diagdown"),$("math",X,"textord","□","\\square"),$("math",X,"textord","□","\\Box"),$("math",X,"textord","◊","\\Diamond"),$("math",X,"textord","¥","\\yen",!0),$("text",X,"textord","¥","\\yen",!0),$("math",X,"textord","✓","\\checkmark",!0),$("text",X,"textord","✓","\\checkmark"),$("math",X,"textord","ℶ","\\beth",!0),$("math",X,"textord","ℸ","\\daleth",!0),$("math",X,"textord","ℷ","\\gimel",!0),$("math",X,"textord","ϝ","\\digamma",!0),$("math",X,"textord","ϰ","\\varkappa"),$("math",X,"open","┌","\\ulcorner",!0),$("math",X,"close","┐","\\urcorner",!0),$("math",X,"open","└","\\llcorner",!0),$("math",X,"close","┘","\\lrcorner",!0),$("math",X,te,"≦","\\leqq",!0),$("math",X,te,"⩽","\\leqslant",!0),$("math",X,te,"⪕","\\eqslantless",!0),$("math",X,te,"≲","\\lesssim",!0),$("math",X,te,"⪅","\\lessapprox",!0),$("math",X,te,"≊","\\approxeq",!0),$("math",X,Z,"⋖","\\lessdot"),$("math",X,te,"⋘","\\lll",!0),$("math",X,te,"≶","\\lessgtr",!0),$("math",X,te,"⋚","\\lesseqgtr",!0),$("math",X,te,"⪋","\\lesseqqgtr",!0),$("math",X,te,"≑","\\doteqdot"),$("math",X,te,"≓","\\risingdotseq",!0),$("math",X,te,"≒","\\fallingdotseq",!0),$("math",X,te,"∽","\\backsim",!0),$("math",X,te,"⋍","\\backsimeq",!0),$("math",X,te,"⫅","\\subseteqq",!0),$("math",X,te,"⋐","\\Subset",!0),$("math",X,te,"⊏","\\sqsubset",!0),$("math",X,te,"≼","\\preccurlyeq",!0),$("math",X,te,"⋞","\\curlyeqprec",!0),$("math",X,te,"≾","\\precsim",!0),$("math",X,te,"⪷","\\precapprox",!0),$("math",X,te,"⊲","\\vartriangleleft"),$("math",X,te,"⊴","\\trianglelefteq"),$("math",X,te,"⊨","\\vDash",!0),$("math",X,te,"⊪","\\Vvdash",!0),$("math",X,te,"⌣","\\smallsmile"),$("math",X,te,"⌢","\\smallfrown"),$("math",X,te,"≏","\\bumpeq",!0),$("math",X,te,"≎","\\Bumpeq",!0),$("math",X,te,"≧","\\geqq",!0),$("math",X,te,"⩾","\\geqslant",!0),$("math",X,te,"⪖","\\eqslantgtr",!0),$("math",X,te,"≳","\\gtrsim",!0),$("math",X,te,"⪆","\\gtrapprox",!0),$("math",X,Z,"⋗","\\gtrdot"),$("math",X,te,"⋙","\\ggg",!0),$("math",X,te,"≷","\\gtrless",!0),$("math",X,te,"⋛","\\gtreqless",!0),$("math",X,te,"⪌","\\gtreqqless",!0),$("math",X,te,"≖","\\eqcirc",!0),$("math",X,te,"≗","\\circeq",!0),$("math",X,te,"≜","\\triangleq",!0),$("math",X,te,"∼","\\thicksim"),$("math",X,te,"≈","\\thickapprox"),$("math",X,te,"⫆","\\supseteqq",!0),$("math",X,te,"⋑","\\Supset",!0),$("math",X,te,"⊐","\\sqsupset",!0),$("math",X,te,"≽","\\succcurlyeq",!0),$("math",X,te,"⋟","\\curlyeqsucc",!0),$("math",X,te,"≿","\\succsim",!0),$("math",X,te,"⪸","\\succapprox",!0),$("math",X,te,"⊳","\\vartriangleright"),$("math",X,te,"⊵","\\trianglerighteq"),$("math",X,te,"⊩","\\Vdash",!0),$("math",X,te,"∣","\\shortmid"),$("math",X,te,"∥","\\shortparallel"),$("math",X,te,"≬","\\between",!0),$("math",X,te,"⋔","\\pitchfork",!0),$("math",X,te,"∝","\\varpropto"),$("math",X,te,"◀","\\blacktriangleleft"),$("math",X,te,"∴","\\therefore",!0),$("math",X,te,"∍","\\backepsilon"),$("math",X,te,"▶","\\blacktriangleright"),$("math",X,te,"∵","\\because",!0),$("math",X,te,"⋘","\\llless"),$("math",X,te,"⋙","\\gggtr"),$("math",X,Z,"⊲","\\lhd"),$("math",X,Z,"⊳","\\rhd"),$("math",X,te,"≂","\\eqsim",!0),$("math",j,te,"⋈","\\Join"),$("math",X,te,"≑","\\Doteq",!0),$("math",X,Z,"∔","\\dotplus",!0),$("math",X,Z,"∖","\\smallsetminus"),$("math",X,Z,"⋒","\\Cap",!0),$("math",X,Z,"⋓","\\Cup",!0),$("math",X,Z,"⩞","\\doublebarwedge",!0),$("math",X,Z,"⊟","\\boxminus",!0),$("math",X,Z,"⊞","\\boxplus",!0),$("math",X,Z,"⋇","\\divideontimes",!0),$("math",X,Z,"⋉","\\ltimes",!0),$("math",X,Z,"⋊","\\rtimes",!0),$("math",X,Z,"⋋","\\leftthreetimes",!0),$("math",X,Z,"⋌","\\rightthreetimes",!0),$("math",X,Z,"⋏","\\curlywedge",!0),$("math",X,Z,"⋎","\\curlyvee",!0),$("math",X,Z,"⊝","\\circleddash",!0),$("math",X,Z,"⊛","\\circledast",!0),$("math",X,Z,"⋅","\\centerdot"),$("math",X,Z,"⊺","\\intercal",!0),$("math",X,Z,"⋒","\\doublecap"),$("math",X,Z,"⋓","\\doublecup"),$("math",X,Z,"⊠","\\boxtimes",!0),$("math",X,te,"⇢","\\dashrightarrow",!0),$("math",X,te,"⇠","\\dashleftarrow",!0),$("math",X,te,"⇇","\\leftleftarrows",!0),$("math",X,te,"⇆","\\leftrightarrows",!0),$("math",X,te,"⇚","\\Lleftarrow",!0),$("math",X,te,"↞","\\twoheadleftarrow",!0),$("math",X,te,"↢","\\leftarrowtail",!0),$("math",X,te,"↫","\\looparrowleft",!0),$("math",X,te,"⇋","\\leftrightharpoons",!0),$("math",X,te,"↶","\\curvearrowleft",!0),$("math",X,te,"↺","\\circlearrowleft",!0),$("math",X,te,"↰","\\Lsh",!0),$("math",X,te,"⇈","\\upuparrows",!0),$("math",X,te,"↿","\\upharpoonleft",!0),$("math",X,te,"⇃","\\downharpoonleft",!0),$("math",X,te,"⊸","\\multimap",!0),$("math",X,te,"↭","\\leftrightsquigarrow",!0),$("math",X,te,"⇉","\\rightrightarrows",!0),$("math",X,te,"⇄","\\rightleftarrows",!0),$("math",X,te,"↠","\\twoheadrightarrow",!0),$("math",X,te,"↣","\\rightarrowtail",!0),$("math",X,te,"↬","\\looparrowright",!0),$("math",X,te,"↷","\\curvearrowright",!0),$("math",X,te,"↻","\\circlearrowright",!0),$("math",X,te,"↱","\\Rsh",!0),$("math",X,te,"⇊","\\downdownarrows",!0),$("math",X,te,"↾","\\upharpoonright",!0),$("math",X,te,"⇂","\\downharpoonright",!0),$("math",X,te,"⇝","\\rightsquigarrow",!0),$("math",X,te,"⇝","\\leadsto"),$("math",X,te,"⇛","\\Rrightarrow",!0),$("math",X,te,"↾","\\restriction"),$("math",j,"textord","‘","`"),$("math",j,"textord","$","\\$"),$("text",j,"textord","$","\\$"),$("text",j,"textord","$","\\textdollar"),$("math",j,"textord","%","\\%"),$("text",j,"textord","%","\\%"),$("math",j,"textord","_","\\_"),$("text",j,"textord","_","\\_"),$("text",j,"textord","_","\\textunderscore"),$("math",j,"textord","∠","\\angle",!0),$("math",j,"textord","∞","\\infty",!0),$("math",j,"textord","′","\\prime"),$("math",j,"textord","△","\\triangle"),$("math",j,"textord","Γ","\\Gamma",!0),$("math",j,"textord","Δ","\\Delta",!0),$("math",j,"textord","Θ","\\Theta",!0),$("math",j,"textord","Λ","\\Lambda",!0),$("math",j,"textord","Ξ","\\Xi",!0),$("math",j,"textord","Π","\\Pi",!0),$("math",j,"textord","Σ","\\Sigma",!0),$("math",j,"textord","Υ","\\Upsilon",!0),$("math",j,"textord","Φ","\\Phi",!0),$("math",j,"textord","Ψ","\\Psi",!0),$("math",j,"textord","Ω","\\Omega",!0),$("math",j,"textord","A","Α"),$("math",j,"textord","B","Β"),$("math",j,"textord","E","Ε"),$("math",j,"textord","Z","Ζ"),$("math",j,"textord","H","Η"),$("math",j,"textord","I","Ι"),$("math",j,"textord","K","Κ"),$("math",j,"textord","M","Μ"),$("math",j,"textord","N","Ν"),$("math",j,"textord","O","Ο"),$("math",j,"textord","P","Ρ"),$("math",j,"textord","T","Τ"),$("math",j,"textord","X","Χ"),$("math",j,"textord","¬","\\neg",!0),$("math",j,"textord","¬","\\lnot"),$("math",j,"textord","⊤","\\top"),$("math",j,"textord","⊥","\\bot"),$("math",j,"textord","∅","\\emptyset"),$("math",X,"textord","∅","\\varnothing"),$("math",j,J,"α","\\alpha",!0),$("math",j,J,"β","\\beta",!0),$("math",j,J,"γ","\\gamma",!0),$("math",j,J,"δ","\\delta",!0),$("math",j,J,"ϵ","\\epsilon",!0),$("math",j,J,"ζ","\\zeta",!0),$("math",j,J,"η","\\eta",!0),$("math",j,J,"θ","\\theta",!0),$("math",j,J,"ι","\\iota",!0),$("math",j,J,"κ","\\kappa",!0),$("math",j,J,"λ","\\lambda",!0),$("math",j,J,"μ","\\mu",!0),$("math",j,J,"ν","\\nu",!0),$("math",j,J,"ξ","\\xi",!0),$("math",j,J,"ο","\\omicron",!0),$("math",j,J,"π","\\pi",!0),$("math",j,J,"ρ","\\rho",!0),$("math",j,J,"σ","\\sigma",!0),$("math",j,J,"τ","\\tau",!0),$("math",j,J,"υ","\\upsilon",!0),$("math",j,J,"ϕ","\\phi",!0),$("math",j,J,"χ","\\chi",!0),$("math",j,J,"ψ","\\psi",!0),$("math",j,J,"ω","\\omega",!0),$("math",j,J,"ε","\\varepsilon",!0),$("math",j,J,"ϑ","\\vartheta",!0),$("math",j,J,"ϖ","\\varpi",!0),$("math",j,J,"ϱ","\\varrho",!0),$("math",j,J,"ς","\\varsigma",!0),$("math",j,J,"φ","\\varphi",!0),$("math",j,Z,"∗","*"),$("math",j,Z,"+","+"),$("math",j,Z,"−","-"),$("math",j,Z,"⋅","\\cdot",!0),$("math",j,Z,"∘","\\circ"),$("math",j,Z,"÷","\\div",!0),$("math",j,Z,"±","\\pm",!0),$("math",j,Z,"×","\\times",!0),$("math",j,Z,"∩","\\cap",!0),$("math",j,Z,"∪","\\cup",!0),$("math",j,Z,"∖","\\setminus"),$("math",j,Z,"∧","\\land"),$("math",j,Z,"∨","\\lor"),$("math",j,Z,"∧","\\wedge",!0),$("math",j,Z,"∨","\\vee",!0),$("math",j,"textord","√","\\surd"),$("math",j,"open","(","("),$("math",j,"open","[","["),$("math",j,"open","⟨","\\langle",!0),$("math",j,"open","∣","\\lvert"),$("math",j,"open","∥","\\lVert"),$("math",j,"close",")",")"),$("math",j,"close","]","]"),$("math",j,"close","?","?"),$("math",j,"close","!","!"),$("math",j,"close","⟩","\\rangle",!0),$("math",j,"close","∣","\\rvert"),$("math",j,"close","∥","\\rVert"),$("math",j,te,"=","="),$("math",j,te,"<","<"),$("math",j,te,">",">"),$("math",j,te,":",":"),$("math",j,te,"≈","\\approx",!0),$("math",j,te,"≅","\\cong",!0),$("math",j,te,"≥","\\ge"),$("math",j,te,"≥","\\geq",!0),$("math",j,te,"←","\\gets"),$("math",j,te,">","\\gt"),$("math",j,te,"∈","\\in",!0),$("math",j,te,"","\\@not"),$("math",j,te,"⊂","\\subset",!0),$("math",j,te,"⊃","\\supset",!0),$("math",j,te,"⊆","\\subseteq",!0),$("math",j,te,"⊇","\\supseteq",!0),$("math",X,te,"⊈","\\nsubseteq",!0),$("math",X,te,"⊉","\\nsupseteq",!0),$("math",j,te,"⊨","\\models"),$("math",j,te,"←","\\leftarrow",!0),$("math",j,te,"≤","\\le"),$("math",j,te,"≤","\\leq",!0),$("math",j,te,"<","\\lt"),$("math",j,te,"→","\\rightarrow",!0),$("math",j,te,"→","\\to"),$("math",X,te,"≱","\\ngeq",!0),$("math",X,te,"≰","\\nleq",!0),$("math",j,"spacing"," ","\\ "),$("math",j,"spacing"," ","~"),$("math",j,"spacing"," ","\\space"),$("math",j,"spacing"," ","\\nobreakspace"),$("text",j,"spacing"," ","\\ "),$("text",j,"spacing"," ","~"),$("text",j,"spacing"," ","\\space"),$("text",j,"spacing"," ","\\nobreakspace"),$("math",j,"spacing",null,"\\nobreak"),$("math",j,"spacing",null,"\\allowbreak"),$("math",j,"punct",",",","),$("math",j,"punct",";",";"),$("math",X,Z,"⊼","\\barwedge",!0),$("math",X,Z,"⊻","\\veebar",!0),$("math",j,Z,"⊙","\\odot",!0),$("math",j,Z,"⊕","\\oplus",!0),$("math",j,Z,"⊗","\\otimes",!0),$("math",j,"textord","∂","\\partial",!0),$("math",j,Z,"⊘","\\oslash",!0),$("math",X,Z,"⊚","\\circledcirc",!0),$("math",X,Z,"⊡","\\boxdot",!0),$("math",j,Z,"△","\\bigtriangleup"),$("math",j,Z,"▽","\\bigtriangledown"),$("math",j,Z,"†","\\dagger"),$("math",j,Z,"⋄","\\diamond"),$("math",j,Z,"⋆","\\star"),$("math",j,Z,"◃","\\triangleleft"),$("math",j,Z,"▹","\\triangleright"),$("math",j,"open","{","\\{"),$("text",j,"textord","{","\\{"),$("text",j,"textord","{","\\textbraceleft"),$("math",j,"close","}","\\}"),$("text",j,"textord","}","\\}"),$("text",j,"textord","}","\\textbraceright"),$("math",j,"open","{","\\lbrace"),$("math",j,"close","}","\\rbrace"),$("math",j,"open","[","\\lbrack"),$("text",j,"textord","[","\\lbrack"),$("math",j,"close","]","\\rbrack"),$("text",j,"textord","]","\\rbrack"),$("math",j,"open","(","\\lparen"),$("math",j,"close",")","\\rparen"),$("text",j,"textord","<","\\textless"),$("text",j,"textord",">","\\textgreater"),$("math",j,"open","⌊","\\lfloor",!0),$("math",j,"close","⌋","\\rfloor",!0),$("math",j,"open","⌈","\\lceil",!0),$("math",j,"close","⌉","\\rceil",!0),$("math",j,"textord","\\","\\backslash"),$("math",j,"textord","∣","|"),$("math",j,"textord","∣","\\vert"),$("text",j,"textord","|","\\textbar"),$("math",j,"textord","∥","\\|"),$("math",j,"textord","∥","\\Vert"),$("text",j,"textord","∥","\\textbardbl"),$("text",j,"textord","~","\\textasciitilde"),$("text",j,"textord","\\","\\textbackslash"),$("text",j,"textord","^","\\textasciicircum"),$("math",j,te,"↑","\\uparrow",!0),$("math",j,te,"⇑","\\Uparrow",!0),$("math",j,te,"↓","\\downarrow",!0),$("math",j,te,"⇓","\\Downarrow",!0),$("math",j,te,"↕","\\updownarrow",!0),$("math",j,te,"⇕","\\Updownarrow",!0),$("math",j,ee,"∐","\\coprod"),$("math",j,ee,"⋁","\\bigvee"),$("math",j,ee,"⋀","\\bigwedge"),$("math",j,ee,"⨄","\\biguplus"),$("math",j,ee,"⋂","\\bigcap"),$("math",j,ee,"⋃","\\bigcup"),$("math",j,ee,"∫","\\int"),$("math",j,ee,"∫","\\intop"),$("math",j,ee,"∬","\\iint"),$("math",j,ee,"∭","\\iiint"),$("math",j,ee,"∏","\\prod"),$("math",j,ee,"∑","\\sum"),$("math",j,ee,"⨂","\\bigotimes"),$("math",j,ee,"⨁","\\bigoplus"),$("math",j,ee,"⨀","\\bigodot"),$("math",j,ee,"∮","\\oint"),$("math",j,ee,"∯","\\oiint"),$("math",j,ee,"∰","\\oiiint"),$("math",j,ee,"⨆","\\bigsqcup"),$("math",j,ee,"∫","\\smallint"),$("text",j,"inner","…","\\textellipsis"),$("math",j,"inner","…","\\mathellipsis"),$("text",j,"inner","…","\\ldots",!0),$("math",j,"inner","…","\\ldots",!0),$("math",j,"inner","⋯","\\@cdots",!0),$("math",j,"inner","⋱","\\ddots",!0),$("math",j,"textord","⋮","\\varvdots"),$("math",j,"accent-token","ˊ","\\acute"),$("math",j,"accent-token","ˋ","\\grave"),$("math",j,"accent-token","¨","\\ddot"),$("math",j,"accent-token","~","\\tilde"),$("math",j,"accent-token","ˉ","\\bar"),$("math",j,"accent-token","˘","\\breve"),$("math",j,"accent-token","ˇ","\\check"),$("math",j,"accent-token","^","\\hat"),$("math",j,"accent-token","⃗","\\vec"),$("math",j,"accent-token","˙","\\dot"),$("math",j,"accent-token","˚","\\mathring"),$("math",j,J,"ı","\\imath",!0),$("math",j,J,"ȷ","\\jmath",!0),$("text",j,"textord","ı","\\i",!0),$("text",j,"textord","ȷ","\\j",!0),$("text",j,"textord","ß","\\ss",!0),$("text",j,"textord","æ","\\ae",!0),$("text",j,"textord","æ","\\ae",!0),$("text",j,"textord","œ","\\oe",!0),$("text",j,"textord","ø","\\o",!0),$("text",j,"textord","Æ","\\AE",!0),$("text",j,"textord","Œ","\\OE",!0),$("text",j,"textord","Ø","\\O",!0),$("text",j,"accent-token","ˊ","\\'"),$("text",j,"accent-token","ˋ","\\`"),$("text",j,"accent-token","ˆ","\\^"),$("text",j,"accent-token","˜","\\~"),$("text",j,"accent-token","ˉ","\\="),$("text",j,"accent-token","˘","\\u"),$("text",j,"accent-token","˙","\\."),$("text",j,"accent-token","˚","\\r"),$("text",j,"accent-token","ˇ","\\v"),$("text",j,"accent-token","¨",'\\"'),$("text",j,"accent-token","˝","\\H"),$("text",j,"accent-token","◯","\\textcircled");var ne={"--":!0,"---":!0,"``":!0,"''":!0};$("text",j,"textord","–","--"),$("text",j,"textord","–","\\textendash"),$("text",j,"textord","—","---"),$("text",j,"textord","—","\\textemdash"),$("text",j,"textord","‘","`"),$("text",j,"textord","‘","\\textquoteleft"),$("text",j,"textord","’","'"),$("text",j,"textord","’","\\textquoteright"),$("text",j,"textord","“","``"),$("text",j,"textord","“","\\textquotedblleft"),$("text",j,"textord","”","''"),$("text",j,"textord","”","\\textquotedblright"),$("math",j,"textord","°","\\degree",!0),$("text",j,"textord","°","\\degree"),$("text",j,"textord","°","\\textdegree",!0),$("math",j,J,"£","\\pounds"),$("math",j,J,"£","\\mathsterling",!0),$("text",j,J,"£","\\pounds"),$("text",j,J,"£","\\textsterling",!0),$("math",X,"textord","✠","\\maltese"),$("text",X,"textord","✠","\\maltese"),$("text",j,"spacing"," ","\\ "),$("text",j,"spacing"," "," "),$("text",j,"spacing"," ","~");for(var re=0;re<'0123456789/@."'.length;re++){var ae='0123456789/@."'.charAt(re);$("math",j,"textord",ae,ae)}for(var ie=0;ie<'0123456789!@*()-=+[]<>|";:?/.,'.length;ie++){var oe='0123456789!@*()-=+[]<>|";:?/.,'.charAt(ie);$("text",j,"textord",oe,oe)}for(var se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",le=0;le<se.length;le++){var ce=se.charAt(le);$("math",j,J,ce,ce),$("text",j,"textord",ce,ce)}$("math",X,"textord","C","ℂ"),$("text",X,"textord","C","ℂ"),$("math",X,"textord","H","ℍ"),$("text",X,"textord","H","ℍ"),$("math",X,"textord","N","ℕ"),$("text",X,"textord","N","ℕ"),$("math",X,"textord","P","ℙ"),$("text",X,"textord","P","ℙ"),$("math",X,"textord","Q","ℚ"),$("text",X,"textord","Q","ℚ"),$("math",X,"textord","R","ℝ"),$("text",X,"textord","R","ℝ"),$("math",X,"textord","Z","ℤ"),$("text",X,"textord","Z","ℤ"),$("math",j,J,"h","ℎ"),$("text",j,J,"h","ℎ");for(var de="",_e=0;_e<se.length;_e++){var ue=se.charAt(_e);$("math",j,J,ue,de=String.fromCharCode(55349,56320+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56372+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56424+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56580+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56736+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56788+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56840+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56944+_e)),$("text",j,"textord",ue,de),_e<26&&($("math",j,J,ue,de=String.fromCharCode(55349,56632+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56476+_e)),$("text",j,"textord",ue,de))}$("math",j,J,"k",de=String.fromCharCode(55349,56668)),$("text",j,"textord","k",de);for(var me=0;me<10;me++){var pe=me.toString();$("math",j,J,pe,de=String.fromCharCode(55349,57294+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57314+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57324+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57334+me)),$("text",j,"textord",pe,de)}for(var ge=0;ge<"ÇÐÞçþ".length;ge++){var Ee="ÇÐÞçþ".charAt(ge);$("math",j,J,Ee,Ee),$("text",j,"textord",Ee,Ee)}$("text",j,"textord","ð","ð"),$("text",j,"textord","–","–"),$("text",j,"textord","—","—"),$("text",j,"textord","‘","‘"),$("text",j,"textord","’","’"),$("text",j,"textord","“","“"),$("text",j,"textord","”","”");var he=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathdefault","textit","Math-Italic"],["mathdefault","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["","",""],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Se=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],fe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Te=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],be=function(e,t){return t.size<2?e:fe[e-1][t.size-1]},Ce=function(){function e(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=Te[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}var t=e.prototype;return t.extend=function(t){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);return new e(n)},t.havingStyle=function(e){return this.style===e?this:this.extend({style:e,size:be(this.textSize,e)})},t.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},t.havingSize=function(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Te[e-1]})},t.havingBaseStyle=function(t){t=t||this.style.text();var n=be(e.BASESIZE,t);return this.size===n&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:n})},t.havingBaseSizing=function(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})},t.withColor=function(e){return this.extend({color:e})},t.withPhantom=function(){return this.extend({phantom:!0})},t.withFont=function(e){return this.extend({font:e})},t.withTextFontFamily=function(e){return this.extend({fontFamily:e,font:""})},t.withTextFontWeight=function(e){return this.extend({fontWeight:e,font:""})},t.withTextFontShape=function(e){return this.extend({fontShape:e,font:""})},t.sizingClasses=function(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]},t.baseSizingClasses=function(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]},t.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!z[t=e>=5?0:e>=3?1:2]){var n=z[t]={cssEmPerMu:H.quad[t]/18};for(var r in H)H.hasOwnProperty(r)&&(n[r]=H[r][t])}return z[t]}(this.size)),this._fontMetrics},t.getColor=function(){return this.phantom?"transparent":this.color},e}();Ce.BASESIZE=6;var Ne=Ce,ve={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},Re={ex:!0,em:!0,mu:!0},Ae=function(e){return"string"!=typeof e&&(e=e.unit),e in ve||e in Re||"ex"===e},Oe=function(e,t){var n;if(e.unit in ve)n=ve[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)n=t.fontMetrics().cssEmPerMu;else{var r;if(r=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)n=r.fontMetrics().xHeight;else{if("em"!==e.unit)throw new o("Invalid unit: '"+e.unit+"'");n=r.fontMetrics().quad}r!==t&&(n*=r.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*n,t.maxSize)},ye=["\\imath","ı","\\jmath","ȷ","\\pounds","\\mathsterling","\\textsterling","£"],Ie=function(e,t,n){return Q[n][e]&&Q[n][e].replace&&(e=Q[n][e].replace),{value:e,metrics:V(e,t,n)}},De=function(e,t,n,r,a){var i,o=Ie(e,t,n),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===n||r&&"mathit"===r.font)&&(l=0),i=new P(e,s.height,s.depth,l,s.skew,s.width,a)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+n+"'"),i=new P(e,0,0,0,0,0,a);if(r){i.maxFontSize=r.sizeMultiplier,r.style.isTight()&&i.classes.push("mtight");var c=r.getColor();c&&(i.style.color=c)}return i},xe=function(e,t){if(O(e.classes)!==O(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;for(var n in e.style)if(e.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&e.style[r]!==t.style[r])return!1;return!0},Me=function(e){for(var t=0,n=0,r=0,a=0;a<e.children.length;a++){var i=e.children[a];i.height>t&&(t=i.height),i.depth>n&&(n=i.depth),i.maxFontSize>r&&(r=i.maxFontSize)}e.height=t,e.depth=n,e.maxFontSize=r},we=function(e,t,n,r){var a=new x(e,t,n,r);return Me(a),a},Le=function(e,t,n,r){return new x(e,t,n,r)},Pe=function(e){var t=new A(e);return Me(t),t},ke=function(e,t,n){var r="";switch(e){case"amsrm":r="AMS";break;case"textrm":r="Main";break;case"textsf":r="SansSerif";break;case"texttt":r="Typewriter";break;default:r=e}return r+"-"+("textbf"===t&&"textit"===n?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},Ue={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Fe={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Be={fontMap:Ue,makeSymbol:De,mathsym:function(e,t,n,r){return void 0===r&&(r=[]),"boldsymbol"===n.font&&Ie(e,"Main-Bold",t).metrics?De(e,"Main-Bold",t,n,r.concat(["mathbf"])):"\\"===e||"main"===Q[t][e].font?De(e,"Main-Regular",t,n,r):De(e,"AMS-Regular",t,n,r.concat(["amsrm"]))},makeSpan:we,makeSvgSpan:Le,makeLineSpan:function(e,t,n){var r=we([e],[],t);return r.height=Math.max(n||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),r.style.borderBottomWidth=r.height+"em",r.maxFontSize=1,r},makeAnchor:function(e,t,n,r){var a=new M(e,t,n,r);return Me(a),a},makeFragment:Pe,wrapFragment:function(e,t){return e instanceof A?we([],[e],t):e},makeVList:function(e,t){for(var n=function(e){if("individualShift"===e.positionType){for(var t=e.children,n=[t[0]],r=-t[0].shift-t[0].elem.depth,a=r,i=1;i<t.length;i++){var o=-t[i].shift-a-t[i].elem.depth,s=o-(t[i-1].elem.height+t[i-1].elem.depth);a+=o,n.push({type:"kern",size:s}),n.push(t[i])}return{children:n,depth:r}}var l;if("top"===e.positionType){for(var c=e.positionData,d=0;d<e.children.length;d++){var _=e.children[d];c-="kern"===_.type?_.size:_.elem.height+_.elem.depth}l=c}else if("bottom"===e.positionType)l=-e.positionData;else{var u=e.children[0];if("elem"!==u.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)l=-u.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");l=-u.elem.depth}}return{children:e.children,depth:l}}(e),r=n.children,a=n.depth,i=0,o=0;o<r.length;o++){var s=r[o];if("elem"===s.type){var l=s.elem;i=Math.max(i,l.maxFontSize,l.height)}}i+=2;var c=we(["pstrut"],[]);c.style.height=i+"em";for(var d=[],_=a,u=a,m=a,p=0;p<r.length;p++){var g=r[p];if("kern"===g.type)m+=g.size;else{var E=g.elem,h=g.wrapperClasses||[],S=g.wrapperStyle||{},f=we(h,[c,E],void 0,S);f.style.top=-i-m-E.depth+"em",g.marginLeft&&(f.style.marginLeft=g.marginLeft),g.marginRight&&(f.style.marginRight=g.marginRight),d.push(f),m+=E.height+E.depth}_=Math.min(_,m),u=Math.max(u,m)}var T,b=we(["vlist"],d);if(b.style.height=u+"em",_<0){var C=we([],[]),N=we(["vlist"],[C]);N.style.height=-_+"em";var v=we(["vlist-s"],[new P("​")]);T=[we(["vlist-r"],[b,v]),we(["vlist-r"],[N])]}else T=[we(["vlist-r"],[b])];var R=we(["vlist-t"],T);return 2===T.length&&R.classes.push("vlist-t2"),R.height=u,R.depth=-_,R},makeOrd:function(e,t,n){var r,a=e.mode,i=e.text,s=["mord"],l="math"===a||"text"===a&&t.font,c=l?t.font:t.fontFamily;if(55349===i.charCodeAt(0)){var d=function(e,t){var n=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,r="math"===t?0:1;if(119808<=n&&n<120484){var a=Math.floor((n-119808)/26);return[he[a][2],he[a][r]]}if(120782<=n&&n<=120831){var i=Math.floor((n-120782)/10);return[Se[i][2],Se[i][r]]}if(120485===n||120486===n)return[he[0][2],he[0][r]];if(120486<n&&n<120782)return["",""];throw new o("Unsupported character: "+e)}(i,a),u=d[0],m=d[1];return De(i,u,a,t,s.concat(m))}if(c){var p,g;if("boldsymbol"===c||"mathnormal"===c){var E="boldsymbol"===c?function(e,t,n,r){return Ie(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(i,a):(r=i,_.contains(ye,r)?{fontName:"Main-Italic",fontClass:"mathit"}:/[0-9]/.test(r.charAt(0))?{fontName:"Caligraphic-Regular",fontClass:"mathcal"}:{fontName:"Math-Italic",fontClass:"mathdefault"});p=E.fontName,g=[E.fontClass]}else _.contains(ye,i)?(p="Main-Italic",g=["mathit"]):l?(p=Ue[c].fontName,g=[c]):(p=ke(c,t.fontWeight,t.fontShape),g=[c,t.fontWeight,t.fontShape]);if(Ie(i,p,a).metrics)return De(i,p,a,t,s.concat(g));if(ne.hasOwnProperty(i)&&"Typewriter"===p.substr(0,10)){for(var h=[],S=0;S<i.length;S++)h.push(De(i[S],p,a,t,s.concat(g)));return Pe(h)}}if("mathord"===n){var f=function(e,t,n,r){return/[0-9]/.test(e.charAt(0))||_.contains(ye,e)?{fontName:"Main-Italic",fontClass:"mathit"}:{fontName:"Math-Italic",fontClass:"mathdefault"}}(i);return De(i,f.fontName,a,t,s.concat([f.fontClass]))}if("textord"===n){var T=Q[a][i]&&Q[a][i].font;if("ams"===T){var b=ke("amsrm",t.fontWeight,t.fontShape);return De(i,b,a,t,s.concat("amsrm",t.fontWeight,t.fontShape))}if("main"!==T&&T){var C=ke(T,t.fontWeight,t.fontShape);return De(i,C,a,t,s.concat(C,t.fontWeight,t.fontShape))}var N=ke("textrm",t.fontWeight,t.fontShape);return De(i,N,a,t,s.concat(t.fontWeight,t.fontShape))}throw new Error("unexpected type: "+n+" in makeOrd")},makeGlue:function(e,t){var n=we(["mspace"],[],t),r=Oe(e,t);return n.style.marginRight=r+"em",n},staticSvg:function(e,t){var n=Fe[e],r=n[0],a=n[1],i=n[2],o=new U(r),s=new k([o],{width:a+"em",height:i+"em",style:"width:"+a+"em",viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=Le(["overlay"],[s],t);return l.height=i,l.style.height=i+"em",l.style.width=a+"em",l},svgData:Fe,tryCombineChars:function(e){for(var t=0;t<e.length-1;t++){var n=e[t],r=e[t+1];n instanceof P&&r instanceof P&&xe(n,r)&&(n.text+=r.text,n.height=Math.max(n.height,r.height),n.depth=Math.max(n.depth,r.depth),n.italic=r.italic,e.splice(t+1,1),t--)}return e}};function Ge(e,t){var n=He(e,t);if(!n)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return n}function He(e,t){return e&&e.type===t?e:null}function Ye(e,t){var n=function(e,t){return e&&"atom"===e.type&&e.family===t?e:null}(e,t);if(!n)throw new Error('Expected node of type "atom" and family "'+t+'", but got '+(e?"atom"===e.type?"atom of family "+e.family:"node of type "+e.type:String(e)));return n}function Ve(e){var t=ze(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function ze(e){return e&&("atom"===e.type||K.hasOwnProperty(e.type))?e:null}var qe={number:3,unit:"mu"},Ke={number:4,unit:"mu"},We={number:5,unit:"mu"},Qe={mord:{mop:qe,mbin:Ke,mrel:We,minner:qe},mop:{mord:qe,mop:qe,mrel:We,minner:qe},mbin:{mord:Ke,mop:Ke,mopen:Ke,minner:Ke},mrel:{mord:We,mop:We,mopen:We,minner:We},mopen:{},mclose:{mop:qe,mbin:Ke,mrel:We,minner:qe},mpunct:{mord:qe,mop:qe,mrel:We,mopen:qe,mclose:qe,mpunct:qe,minner:qe},minner:{mord:qe,mop:qe,mbin:Ke,mrel:We,mopen:qe,mpunct:qe,minner:qe}},$e={mord:{mop:qe},mop:{mord:qe,mop:qe},mbin:{},mrel:{},mopen:{},mclose:{mop:qe},mpunct:{},minner:{mop:qe}},je={},Xe={},Ze={};function Je(e){for(var t=e.type,n=e.names,r=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:r.numArgs,argTypes:r.argTypes,greediness:void 0===r.greediness?1:r.greediness,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a},l=0;l<n.length;++l)je[n[l]]=s;t&&(i&&(Xe[t]=i),o&&(Ze[t]=o))}function et(e){Je({type:e.type,names:[],props:{numArgs:0},handler:function(){throw new Error("Should never be called.")},htmlBuilder:e.htmlBuilder,mathmlBuilder:e.mathmlBuilder})}var tt=function(e){var t=He(e,"ordgroup");return t?t.body:[e]},nt=Be.makeSpan,rt=["leftmost","mbin","mopen","mrel","mop","mpunct"],at=["rightmost","mrel","mclose","mpunct"],it={display:b.DISPLAY,text:b.TEXT,script:b.SCRIPT,scriptscript:b.SCRIPTSCRIPT},ot={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},st=function(e,t,n,r){void 0===r&&(r=[null,null]);for(var a=[],i=0;i<e.length;i++){var o=ut(e[i],t);if(o instanceof A){var s=o.children;a.push.apply(a,s)}else a.push(o)}if(!n)return a;var l=t;if(1===e.length){var c=He(e[0],"sizing")||He(e[0],"styling");c&&("sizing"===c.type?l=t.havingSize(c.size):"styling"===c.type&&(l=t.havingStyle(it[c.style])))}var d=nt([r[0]||"leftmost"],[],t),u=nt([r[1]||"rightmost"],[],t);return lt(a,function(e,t){var n=t.classes[0],r=e.classes[0];"mbin"===n&&_.contains(at,r)?t.classes[0]="mord":"mbin"===r&&_.contains(rt,n)&&(e.classes[0]="mord")},{node:d},u),lt(a,function(e,t){var n=dt(t),r=dt(e),a=n&&r?e.hasClass("mtight")?$e[n][r]:Qe[n][r]:null;if(a)return Be.makeGlue(a,l)},{node:d},u),a},lt=function e(t,n,r,a){a&&t.push(a);for(var i=0;i<t.length;i++){var o=t[i],s=ct(o);if(s)e(s.children,n,r);else if("mspace"!==o.classes[0]){var l=n(o,r.node);l&&(r.insertAfter?r.insertAfter(l):(t.unshift(l),i++)),r.node=o,r.insertAfter=function(e){return function(n){t.splice(e+1,0,n),i++}}(i)}}a&&t.pop()},ct=function(e){return e instanceof A||e instanceof M?e:null},dt=function(e,t){return e?(t&&(e=function e(t,n){var r=ct(t);if(r){var a=r.children;if(a.length){if("right"===n)return e(a[a.length-1],"right");if("left"===n)return e(a[0],"left")}}return t}(e,t)),ot[e.classes[0]]||null):null},_t=function(e,t){var n=["nulldelimiter"].concat(e.baseSizingClasses());return nt(t.concat(n))},ut=function(e,t,n){if(!e)return nt();if(Xe[e.type]){var r=Xe[e.type](e,t);if(n&&t.size!==n.size){r=nt(t.sizingClasses(n),[r],t);var a=t.sizeMultiplier/n.sizeMultiplier;r.height*=a,r.depth*=a}return r}throw new o("Got group of unknown type: '"+e.type+"'")};function mt(e,t){var n=nt(["base"],e,t),r=nt(["strut"]);return r.style.height=n.height+n.depth+"em",r.style.verticalAlign=-n.depth+"em",n.children.unshift(r),n}function pt(e,t){var n=null;1===e.length&&"tag"===e[0].type&&(n=e[0].tag,e=e[0].body);for(var r,a=st(e,t,!0),i=[],o=[],s=0;s<a.length;s++)if(o.push(a[s]),a[s].hasClass("mbin")||a[s].hasClass("mrel")||a[s].hasClass("allowbreak")){for(var l=!1;s<a.length-1&&a[s+1].hasClass("mspace")&&!a[s+1].hasClass("newline");)s++,o.push(a[s]),a[s].hasClass("nobreak")&&(l=!0);l||(i.push(mt(o,t)),o=[])}else a[s].hasClass("newline")&&(o.pop(),o.length>0&&(i.push(mt(o,t)),o=[]),i.push(a[s]));o.length>0&&i.push(mt(o,t)),n&&((r=mt(st(n,t,!0))).classes=["tag"],i.push(r));var c=nt(["katex-html"],i);if(c.setAttribute("aria-hidden","true"),r){var d=r.children[0];d.style.height=c.height+c.depth+"em",d.style.verticalAlign=-c.depth+"em"}return c}function gt(e){return new A(e)}var Et=function(){function e(e,t){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=e,this.attributes={},this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.getAttribute=function(e){return this.attributes[e]},t.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},t.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=_.escape(this.attributes[t]),e+='"');e+=">";for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+="</"+this.type+">"},t.toText=function(){return this.children.map(function(e){return e.toText()}).join("")},e}(),ht=function(){function e(e){this.text=void 0,this.text=e}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.text)},t.toMarkup=function(){return _.escape(this.toText())},t.toText=function(){return this.text},e}(),St={MathNode:Et,TextNode:ht,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?" ":e>=.1666&&e<=.1667?" ":e>=.2222&&e<=.2223?" ":e>=.2777&&e<=.2778?"  ":e>=-.05556&&e<=-.05555?" ⁣":e>=-.1667&&e<=-.1666?" ⁣":e>=-.2223&&e<=-.2222?" ⁣":e>=-.2778&&e<=-.2777?" ⁣":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",this.width+"em"),e},t.toMarkup=function(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+this.width+'em"/>'},t.toText=function(){return this.character?this.character:" "},e}(),newDocumentFragment:gt},ft=function(e,t,n){return!Q[t][e]||!Q[t][e].replace||55349===e.charCodeAt(0)||ne.hasOwnProperty(e)&&n&&(n.fontFamily&&"tt"===n.fontFamily.substr(4,2)||n.font&&"tt"===n.font.substr(4,2))||(e=Q[t][e].replace),new St.TextNode(e)},Tt=function(e){return 1===e.length?e[0]:new St.MathNode("mrow",e)},bt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var n=t.font;if(!n||"mathnormal"===n)return null;var r=e.mode;if("mathit"===n)return"italic";if("boldsymbol"===n)return"bold-italic";if("mathbf"===n)return"bold";if("mathbb"===n)return"double-struck";if("mathfrak"===n)return"fraktur";if("mathscr"===n||"mathcal"===n)return"script";if("mathsf"===n)return"sans-serif";if("mathtt"===n)return"monospace";var a=e.text;return _.contains(["\\imath","\\jmath"],a)?null:(Q[r][a]&&Q[r][a].replace&&(a=Q[r][a].replace),V(a,Be.fontMap[n].fontName,r)?Be.fontMap[n].variant:null)},Ct=function(e,t,n){if(1===e.length){var r=vt(e[0],t);return n&&r instanceof Et&&"mo"===r.type&&(r.setAttribute("lspace","0em"),r.setAttribute("rspace","0em")),[r]}for(var a,i=[],o=0;o<e.length;o++){var s=vt(e[o],t);if(s instanceof Et&&a instanceof Et){if("mtext"===s.type&&"mtext"===a.type&&s.getAttribute("mathvariant")===a.getAttribute("mathvariant")){var l;(l=a.children).push.apply(l,s.children);continue}if("mn"===s.type&&"mn"===a.type){var c;(c=a.children).push.apply(c,s.children);continue}if("mi"===s.type&&1===s.children.length&&"mn"===a.type){var d=s.children[0];if(d instanceof ht&&"."===d.text){var _;(_=a.children).push.apply(_,s.children);continue}}else if("mi"===a.type&&1===a.children.length){var u=a.children[0];if(u instanceof ht&&"̸"===u.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var m=s.children[0];m instanceof ht&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(s),a=s}return i},Nt=function(e,t,n){return Tt(Ct(e,t,n))},vt=function(e,t){if(!e)return new St.MathNode("mrow");if(Ze[e.type])return Ze[e.type](e,t);throw new o("Got group of unknown type: '"+e.type+"'")};function Rt(e,t,n,r){var a,i=Ct(e,n);a=1===i.length&&i[0]instanceof Et&&_.contains(["mrow","mtable"],i[0].type)?i[0]:new St.MathNode("mrow",i);var o=new St.MathNode("annotation",[new St.TextNode(t)]);o.setAttribute("encoding","application/x-tex");var s=new St.MathNode("semantics",[a,o]),l=new St.MathNode("math",[s]);l.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");var c=r?"katex":"katex-mathml";return Be.makeSpan([c],[l])}var At=function(e){return new Ne({style:e.displayMode?b.DISPLAY:b.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Ot=function(e,t){if(t.displayMode){var n=["katex-display"];t.leqno&&n.push("leqno"),t.fleqn&&n.push("fleqn"),e=Be.makeSpan(n,[e])}return e},yt={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋"},It={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Dt=function(e){return"ordgroup"===e.type?e.body.length:1},xt=function(e,t,n,r){var a,i=e.height+e.depth+2*n;if(/fbox|color/.test(t)){if(a=Be.makeSpan(["stretchy",t],[],r),"fbox"===t){var o=r.color&&r.getColor();o&&(a.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(t)&&s.push(new F({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&s.push(new F({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var l=new k(s,{width:"100%",height:i+"em"});a=Be.makeSvgSpan([],[l],r)}return a.height=i,a.style.height=i+"em",a},Mt=function(e){var t=new St.MathNode("mo",[new St.TextNode(yt[e.substr(1)])]);return t.setAttribute("stretchy","true"),t},wt=function(e,t){var n=function(){var n=4e5,r=e.label.substr(1);if(_.contains(["widehat","widecheck","widetilde","utilde"],r)){var a,i,o,s=Dt(e.base);if(s>5)"widehat"===r||"widecheck"===r?(a=420,n=2364,o=.42,i=r+"4"):(a=312,n=2340,o=.34,i="tilde4");else{var l=[1,1,2,2,3,3][s];"widehat"===r||"widecheck"===r?(n=[0,1062,2364,2364,2364][l],a=[0,239,300,360,420][l],o=[0,.24,.3,.3,.36,.42][l],i=r+l):(n=[0,600,1033,2339,2340][l],a=[0,260,286,306,312][l],o=[0,.26,.286,.3,.306,.34][l],i="tilde"+l)}var c=new U(i),d=new k([c],{width:"100%",height:o+"em",viewBox:"0 0 "+n+" "+a,preserveAspectRatio:"none"});return{span:Be.makeSvgSpan([],[d],t),minWidth:0,height:o}}var u,m,p=[],g=It[r],E=g[0],h=g[1],S=g[2],f=S/1e3,T=E.length;if(1===T)u=["hide-tail"],m=[g[3]];else if(2===T)u=["halfarrow-left","halfarrow-right"],m=["xMinYMin","xMaxYMin"];else{if(3!==T)throw new Error("Correct katexImagesData or update code here to support\n "+T+" children.");u=["brace-left","brace-center","brace-right"],m=["xMinYMin","xMidYMin","xMaxYMin"]}for(var b=0;b<T;b++){var C=new U(E[b]),N=new k([C],{width:"400em",height:f+"em",viewBox:"0 0 "+n+" "+S,preserveAspectRatio:m[b]+" slice"}),v=Be.makeSvgSpan([u[b]],[N],t);if(1===T)return{span:v,minWidth:h,height:f};v.style.height=f+"em",p.push(v)}return{span:Be.makeSpan(["stretchy"],p,t),minWidth:h,height:f}}(),r=n.span,a=n.minWidth,i=n.height;return r.height=i,r.style.height=i+"em",a>0&&(r.style.minWidth=a+"em"),r},Lt=function(e,t){var n,r,a,i=He(e,"supsub");i?(n=(r=Ge(i.base,"accent")).base,i.base=n,a=function(e){if(e instanceof x)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}(ut(i,t)),i.base=r):n=(r=Ge(e,"accent")).base;var o=ut(n,t.havingCrampedStyle()),s=0;if(r.isShifty&&_.isCharacterBox(n)){var l=_.getBaseElem(n);s=B(ut(l,t.havingCrampedStyle())).skew}var c,d=Math.min(o.height,t.fontMetrics().xHeight);if(r.isStretchy)c=wt(r,t),c=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:c,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},t);else{var u,m;"\\vec"===r.label?(u=Be.staticSvg("vec",t),m=Be.svgData.vec[1]):((u=B(u=Be.makeOrd({mode:r.mode,text:r.label},t,"textord"))).italic=0,m=u.width),c=Be.makeSpan(["accent-body"],[u]);var p="\\textcircled"===r.label;p&&(c.classes.push("accent-full"),d=o.height);var g=s;p||(g-=m/2),c.style.left=g+"em","\\textcircled"===r.label&&(c.style.top=".2em"),c=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:-d},{type:"elem",elem:c}]},t)}var E=Be.makeSpan(["mord","accent"],[c],t);return a?(a.children[0]=E,a.height=Math.max(E.height,a.height),a.classes[0]="mord",a):E},Pt=function(e,t){var n=e.isStretchy?Mt(e.label):new St.MathNode("mo",[ft(e.label,e.mode)]),r=new St.MathNode("mover",[vt(e.base,t),n]);return r.setAttribute("accent","true"),r},kt=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(e){return"\\"+e}).join("|"));Je({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(e,t){var n=t[0],r=!kt.test(e.funcName),a=!r||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:r,isShifty:a,base:n}},htmlBuilder:Lt,mathmlBuilder:Pt}),Je({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var n=t[0];return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:Lt,mathmlBuilder:Pt}),Je({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"accentUnder",mode:n.mode,label:r,base:a}},htmlBuilder:function(e,t){var n=ut(e.base,t),r=wt(e,t),a="\\utilde"===e.label?.12:0,i=Be.makeVList({positionType:"bottom",positionData:r.height+a,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:n}]},t);return Be.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:function(e,t){var n=Mt(e.label),r=new St.MathNode("munder",[vt(e.base,t),n]);return r.setAttribute("accentunder","true"),r}});var Ut=function(e){var t=new St.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};Je({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,n){var r=e.parser,a=e.funcName;return{type:"xArrow",mode:r.mode,label:a,body:t[0],below:n[0]}},htmlBuilder:function(e,t){var n,r=t.style,a=t.havingStyle(r.sup()),i=Be.wrapFragment(ut(e.body,a,t),t);i.classes.push("x-arrow-pad"),e.below&&(a=t.havingStyle(r.sub()),(n=Be.wrapFragment(ut(e.below,a,t),t)).classes.push("x-arrow-pad"));var o,s=wt(e,t),l=-t.fontMetrics().axisHeight+.5*s.height,c=-t.fontMetrics().axisHeight-.5*s.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(c-=i.depth),n){var d=-t.fontMetrics().axisHeight+n.height+.5*s.height+.111;o=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:s,shift:l},{type:"elem",elem:n,shift:d}]},t)}else o=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:s,shift:l}]},t);return o.children[0].children[0].children[1].classes.push("svg-align"),Be.makeSpan(["mrel","x-arrow"],[o],t)},mathmlBuilder:function(e,t){var n,r=Mt(e.label);if(e.body){var a=Ut(vt(e.body,t));if(e.below){var i=Ut(vt(e.below,t));n=new St.MathNode("munderover",[r,i,a])}else n=new St.MathNode("mover",[r,a])}else if(e.below){var o=Ut(vt(e.below,t));n=new St.MathNode("munder",[r,o])}else n=Ut(),n=new St.MathNode("mover",[r,n]);return n}}),Je({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){for(var n=e.parser,r=Ge(t[0],"ordgroup").body,a="",i=0;i<r.length;i++){a+=Ge(r[i],"textord").text}var s=parseInt(a);if(isNaN(s))throw new o("\\@char has non-numeric argument "+a);return{type:"textord",mode:n.mode,text:String.fromCharCode(s)}}});var Ft=function(e,t){var n=st(e.body,t.withColor(e.color),!1);return Be.makeFragment(n)},Bt=function(e,t){var n=Ct(e.body,t.withColor(e.color)),r=new St.MathNode("mstyle",n);return r.setAttribute("mathcolor",e.color),r};Je({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","original"]},handler:function(e,t){var n=e.parser,r=Ge(t[0],"color-token").color,a=t[1];return{type:"color",mode:n.mode,color:r,body:tt(a)}},htmlBuilder:Ft,mathmlBuilder:Bt}),Je({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:["color"]},handler:function(e,t){var n=e.parser,r=e.breakOnTokenText,a=Ge(t[0],"color-token").color;n.gullet.macros.set("\\current@color",a);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:a,body:i}},htmlBuilder:Ft,mathmlBuilder:Bt}),Je({type:"cr",names:["\\cr","\\newline"],props:{numArgs:0,numOptionalArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=n[0],o="\\cr"===a,s=!1;return o||(s=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode")),{type:"cr",mode:r.mode,newLine:s,newRow:o,size:i&&Ge(i,"size").value}},htmlBuilder:function(e,t){if(e.newRow)throw new o("\\cr valid only within a tabular/array environment");var n=Be.makeSpan(["mspace"],[],t);return e.newLine&&(n.classes.push("newline"),e.size&&(n.style.marginTop=Oe(e.size,t)+"em")),n},mathmlBuilder:function(e,t){var n=new St.MathNode("mspace");return e.newLine&&(n.setAttribute("linebreak","newline"),e.size&&n.setAttribute("height",Oe(e.size,t)+"em")),n}});var Gt=function(e,t,n){var r=V(Q.math[e]&&Q.math[e].replace||e,t,n);if(!r)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return r},Ht=function(e,t,n,r){var a=n.havingBaseStyle(t),i=Be.makeSpan(r.concat(a.sizingClasses(n)),[e],n),o=a.sizeMultiplier/n.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=a.sizeMultiplier,i},Yt=function(e,t,n){var r=t.havingBaseStyle(n),a=(1-t.sizeMultiplier/r.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=a+"em",e.height-=a,e.depth+=a},Vt=function(e,t,n,r,a,i){var o=function(e,t,n,r){return Be.makeSymbol(e,"Size"+t+"-Regular",n,r)}(e,t,a,r),s=Ht(Be.makeSpan(["delimsizing","size"+t],[o],r),b.TEXT,r,i);return n&&Yt(s,r,b.TEXT),s},zt=function(e,t,n){var r;return r="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Be.makeSpan(["delimsizinginner",r],[Be.makeSpan([],[Be.makeSymbol(e,t,n)])])}},qt={type:"kern",size:-.005},Kt=function(e,t,n,r,a,i){var o,s,l,c;o=l=c=e,s=null;var d="Size1-Regular";"\\uparrow"===e?l=c="⏐":"\\Uparrow"===e?l=c="‖":"\\downarrow"===e?o=l="⏐":"\\Downarrow"===e?o=l="‖":"\\updownarrow"===e?(o="\\uparrow",l="⏐",c="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",l="‖",c="\\Downarrow"):"["===e||"\\lbrack"===e?(o="⎡",l="⎢",c="⎣",d="Size4-Regular"):"]"===e||"\\rbrack"===e?(o="⎤",l="⎥",c="⎦",d="Size4-Regular"):"\\lfloor"===e||"⌊"===e?(l=o="⎢",c="⎣",d="Size4-Regular"):"\\lceil"===e||"⌈"===e?(o="⎡",l=c="⎢",d="Size4-Regular"):"\\rfloor"===e||"⌋"===e?(l=o="⎥",c="⎦",d="Size4-Regular"):"\\rceil"===e||"⌉"===e?(o="⎤",l=c="⎥",d="Size4-Regular"):"("===e||"\\lparen"===e?(o="⎛",l="⎜",c="⎝",d="Size4-Regular"):")"===e||"\\rparen"===e?(o="⎞",l="⎟",c="⎠",d="Size4-Regular"):"\\{"===e||"\\lbrace"===e?(o="⎧",s="⎨",c="⎩",l="⎪",d="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="⎫",s="⎬",c="⎭",l="⎪",d="Size4-Regular"):"\\lgroup"===e||"⟮"===e?(o="⎧",c="⎩",l="⎪",d="Size4-Regular"):"\\rgroup"===e||"⟯"===e?(o="⎫",c="⎭",l="⎪",d="Size4-Regular"):"\\lmoustache"===e||"⎰"===e?(o="⎧",c="⎭",l="⎪",d="Size4-Regular"):"\\rmoustache"!==e&&"⎱"!==e||(o="⎫",c="⎩",l="⎪",d="Size4-Regular");var _=Gt(o,d,a),u=_.height+_.depth,m=Gt(l,d,a),p=m.height+m.depth,g=Gt(c,d,a),E=g.height+g.depth,h=0,S=1;if(null!==s){var f=Gt(s,d,a);h=f.height+f.depth,S=2}var T=u+E+h,C=Math.max(0,Math.ceil((t-T)/(S*p))),N=T+C*S*p,v=r.fontMetrics().axisHeight;n&&(v*=r.sizeMultiplier);var R=N/2-v,A=.005*(C+1)-p,O=[];if(O.push(zt(c,d,a)),null===s)for(var y=0;y<C;y++)O.push(qt),O.push(zt(l,d,a));else{for(var I=0;I<C;I++)O.push(qt),O.push(zt(l,d,a));O.push({type:"kern",size:A}),O.push(zt(l,d,a)),O.push(qt),O.push(zt(s,d,a));for(var D=0;D<C;D++)O.push(qt),O.push(zt(l,d,a))}O.push({type:"kern",size:A}),O.push(zt(l,d,a)),O.push(qt),O.push(zt(o,d,a));var x=r.havingBaseStyle(b.TEXT),M=Be.makeVList({positionType:"bottom",positionData:R,children:O},x);return Ht(Be.makeSpan(["delimsizing","mult"],[M],x),b.TEXT,r,i)},Wt=function(e,t,n,r,a){var i=function(e,t,n){t*=1e3;var r="";switch(e){case"sqrtMain":r=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize1":r=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize2":r=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize3":r=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize4":r=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,80);break;case"sqrtTall":r=function(e,t,n){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(n-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,80,n)}return r}(e,r,n),o=new U(e,i),s=new k([o],{width:"400em",height:t+"em",viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Be.makeSvgSpan(["hide-tail"],[s],a)},Qt=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],$t=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],jt=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Xt=[0,1.2,1.8,2.4,3],Zt=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Jt=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"stack"}],en=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],tn=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},nn=function(e,t,n,r){for(var a=Math.min(2,3-r.style.size);a<n.length&&"stack"!==n[a].type;a++){var i=Gt(e,tn(n[a]),"math"),o=i.height+i.depth;if("small"===n[a].type&&(o*=r.havingBaseStyle(n[a].style).sizeMultiplier),o>t)return n[a]}return n[n.length-1]},rn=function(e,t,n,r,a,i){var o;"<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),o=_.contains(jt,e)?Zt:_.contains(Qt,e)?en:Jt;var s=nn(e,t,o,r);return"small"===s.type?function(e,t,n,r,a,i){var o=Be.makeSymbol(e,"Main-Regular",a,r),s=Ht(o,t,r,i);return n&&Yt(s,r,t),s}(e,s.style,n,r,a,i):"large"===s.type?Vt(e,s.size,n,r,a,i):Kt(e,t,n,r,a,i)},an=function(e,t){var n,r,a=t.havingBaseSizing(),i=nn("\\surd",e*a.sizeMultiplier,en,a),o=a.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,c=0,d=0;return"small"===i.type?(d=1e3+1e3*s+80,e<1?o=1:e<1.4&&(o=.7),c=(1+s)/o,(n=Wt("sqrtMain",l=(1+s+.08)/o,d,s,t)).style.minWidth="0.853em",r=.833/o):"large"===i.type?(d=1080*Xt[i.size],c=(Xt[i.size]+s)/o,l=(Xt[i.size]+s+.08)/o,(n=Wt("sqrtSize"+i.size,l,d,s,t)).style.minWidth="1.02em",r=1/o):(l=e+s+.08,c=e+s,d=Math.floor(1e3*e+s)+80,(n=Wt("sqrtTall",l,d,s,t)).style.minWidth="0.742em",r=1.056),n.height=c,n.style.height=l+"em",{span:n,advanceWidth:r,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},on=function(e,t,n,r,a){if("<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),_.contains(Qt,e)||_.contains(jt,e))return Vt(e,t,!1,n,r,a);if(_.contains($t,e))return Kt(e,Xt[t],!1,n,r,a);throw new o("Illegal delimiter: '"+e+"'")},sn=rn,ln=function(e,t,n,r,a,i){var o=r.fontMetrics().axisHeight*r.sizeMultiplier,s=5/r.fontMetrics().ptPerEm,l=Math.max(t-o,n+o),c=Math.max(l/500*901,2*l-s);return rn(e,c,!0,r,a,i)},cn={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},dn=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function _n(e,t){var n=ze(e);if(n&&_.contains(dn,n.text))return n;throw new o("Invalid delimiter: '"+(n?n.text:JSON.stringify(e))+"' after '"+t.funcName+"'",e)}function un(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Je({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:cn[e.funcName].size,mclass:cn[e.funcName].mclass,delim:n.text}},htmlBuilder:function(e,t){return"."===e.delim?Be.makeSpan([e.mclass]):on(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(ft(e.delim,e.mode));var n=new St.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n}}),Je({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(e,t){var n=e.parser.gullet.macros.get("\\current@color");if(n&&"string"!=typeof n)throw new o("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:_n(t[0],e).text,color:n}}}),Je({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e),r=e.parser;++r.leftrightDepth;var a=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=Ge(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:a,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(e,t){un(e);for(var n,r,a=st(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l<a.length;l++)a[l].isMiddle?s=!0:(i=Math.max(a[l].height,i),o=Math.max(a[l].depth,o));if(i*=t.sizeMultiplier,o*=t.sizeMultiplier,n="."===e.left?_t(t,["mopen"]):ln(e.left,i,o,t,e.mode,["mopen"]),a.unshift(n),s)for(var c=1;c<a.length;c++){var d=a[c].isMiddle;d&&(a[c]=ln(d.delim,i,o,d.options,e.mode,[]))}if("."===e.right)r=_t(t,["mclose"]);else{var _=e.rightColor?t.withColor(e.rightColor):t;r=ln(e.right,i,o,_,e.mode,["mclose"])}return a.push(r),Be.makeSpan(["minner"],a,t)},mathmlBuilder:function(e,t){un(e);var n=Ct(e.body,t);if("."!==e.left){var r=new St.MathNode("mo",[ft(e.left,e.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if("."!==e.right){var a=new St.MathNode("mo",[ft(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),n.push(a)}return Tt(n)}}),Je({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e);if(!e.parser.leftrightDepth)throw new o("\\middle without preceding \\left",n);return{type:"middle",mode:e.parser.mode,delim:n.text}},htmlBuilder:function(e,t){var n;if("."===e.delim)n=_t(t,[]);else{n=on(e.delim,1,t,e.mode,[]);var r={delim:e.delim,options:t};n.isMiddle=r}return n},mathmlBuilder:function(e,t){var n="\\vert"===e.delim||"|"===e.delim?ft("|","text"):ft(e.delim,e.mode),r=new St.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var mn=function(e,t){var n,r,a=Be.wrapFragment(ut(e.body,t),t),i=e.label.substr(1),o=t.sizeMultiplier,s=0,l=_.isCharacterBox(e.body);if("sout"===i)(n=Be.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/o,s=-.5*t.fontMetrics().xHeight;else{/cancel/.test(i)?l||a.classes.push("cancel-pad"):a.classes.push("boxpad");var c=0,d=0;/box/.test(i)?(d=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),c=t.fontMetrics().fboxsep+("colorbox"===i?0:d)):c=l?.2:0,n=xt(a,i,c,t),/fbox|boxed|fcolorbox/.test(i)&&(n.style.borderStyle="solid",n.style.borderWidth=d+"em"),s=a.depth+c,e.backgroundColor&&(n.style.backgroundColor=e.backgroundColor,e.borderColor&&(n.style.borderColor=e.borderColor))}return r=e.backgroundColor?Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:s},{type:"elem",elem:a,shift:0}]},t):Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:0},{type:"elem",elem:n,shift:s,wrapperClasses:/cancel/.test(i)?["svg-align"]:[]}]},t),/cancel/.test(i)&&(r.height=a.height,r.depth=a.depth),/cancel/.test(i)&&!l?Be.makeSpan(["mord","cancel-lap"],[r],t):Be.makeSpan(["mord"],[r],t)},pn=function(e,t){var n=0,r=new St.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[vt(e.body,t)]);switch(e.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(n=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),"\\fcolorbox"===e.label){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);r.setAttribute("style","border: "+a+"em solid "+String(e.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&r.setAttribute("mathbackground",e.backgroundColor),r};Je({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=Ge(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:r.mode,label:a,backgroundColor:i,body:o}},htmlBuilder:mn,mathmlBuilder:pn}),Je({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=Ge(t[0],"color-token").color,o=Ge(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:r.mode,label:a,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:mn,mathmlBuilder:pn}),Je({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\fbox",body:t[0]}}}),Je({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=t[0];return{type:"enclose",mode:r.mode,label:a,body:i}},htmlBuilder:mn,mathmlBuilder:pn});var gn={};function En(e){for(var t=e.type,n=e.names,r=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:r.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l<n.length;++l)gn[n[l]]=s;i&&(Xe[t]=i),o&&(Ze[t]=o)}function hn(e){var t=[];e.consumeSpaces();for(var n=e.fetch().text;"\\hline"===n||"\\hdashline"===n;)e.consume(),t.push("\\hdashline"===n),e.consumeSpaces(),n=e.fetch().text;return t}function Sn(e,t,n){var r=t.hskipBeforeAndAfter,a=t.addJot,i=t.cols,s=t.arraystretch,l=t.colSeparationType;if(e.gullet.beginGroup(),e.gullet.macros.set("\\\\","\\cr"),!s){var c=e.gullet.expandMacroAsText("\\arraystretch");if(null==c)s=1;else if(!(s=parseFloat(c))||s<0)throw new o("Invalid \\arraystretch: "+c)}e.gullet.beginGroup();var d=[],_=[d],u=[],m=[];for(m.push(hn(e));;){var p=e.parseExpression(!1,"\\cr");e.gullet.endGroup(),e.gullet.beginGroup(),p={type:"ordgroup",mode:e.mode,body:p},n&&(p={type:"styling",mode:e.mode,style:n,body:[p]}),d.push(p);var g=e.fetch().text;if("&"===g)e.consume();else{if("\\end"===g){1===d.length&&"styling"===p.type&&0===p.body[0].body.length&&_.pop(),m.length<_.length+1&&m.push([]);break}if("\\cr"!==g)throw new o("Expected & or \\\\ or \\cr or \\end",e.nextToken);var E=Ge(e.parseFunction(),"cr");u.push(E.size),m.push(hn(e)),d=[],_.push(d)}}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:a,arraystretch:s,body:_,cols:i,rowGaps:u,hskipBeforeAndAfter:r,hLinesBeforeRow:m,colSeparationType:l}}function fn(e){return"d"===e.substr(0,1)?"display":"text"}var Tn=function(e,t){var n,r,a=e.body.length,i=e.hLinesBeforeRow,s=0,l=new Array(a),c=[],d=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),u=1/t.fontMetrics().ptPerEm,m=5*u;e.colSeparationType&&"small"===e.colSeparationType&&(m=t.havingStyle(b.SCRIPT).sizeMultiplier/t.sizeMultiplier*.2778);var p=12*u,g=3*u,E=e.arraystretch*p,h=.7*E,S=.3*E,f=0;function T(e){for(var t=0;t<e.length;++t)t>0&&(f+=.25),c.push({pos:f,isDashed:e[t]})}for(T(i[0]),n=0;n<e.body.length;++n){var C=e.body[n],N=h,v=S;s<C.length&&(s=C.length);var R=new Array(C.length);for(r=0;r<C.length;++r){var A=ut(C[r],t);v<A.depth&&(v=A.depth),N<A.height&&(N=A.height),R[r]=A}var O=e.rowGaps[n],y=0;O&&(y=Oe(O,t))>0&&(v<(y+=S)&&(v=y),y=0),e.addJot&&(v+=g),R.height=N,R.depth=v,f+=N,R.pos=f,f+=v+y,l[n]=R,T(i[n+1])}var I,D,x=f/2+t.fontMetrics().axisHeight,M=e.cols||[],w=[];for(r=0,D=0;r<s||D<M.length;++r,++D){for(var L=M[D]||{},P=!0;"separator"===L.type;){if(P||((I=Be.makeSpan(["arraycolsep"],[])).style.width=t.fontMetrics().doubleRuleSep+"em",w.push(I)),"|"!==L.separator&&":"!==L.separator)throw new o("Invalid separator type: "+L.separator);var k="|"===L.separator?"solid":"dashed",U=Be.makeSpan(["vertical-separator"],[],t);U.style.height=f+"em",U.style.borderRightWidth=d+"em",U.style.borderRightStyle=k,U.style.margin="0 -"+d/2+"em",U.style.verticalAlign=-(f-x)+"em",w.push(U),L=M[++D]||{},P=!1}if(!(r>=s)){var F=void 0;(r>0||e.hskipBeforeAndAfter)&&0!==(F=_.deflt(L.pregap,m))&&((I=Be.makeSpan(["arraycolsep"],[])).style.width=F+"em",w.push(I));var B=[];for(n=0;n<a;++n){var G=l[n],H=G[r];if(H){var Y=G.pos-x;H.depth=G.depth,H.height=G.height,B.push({type:"elem",elem:H,shift:Y})}}B=Be.makeVList({positionType:"individualShift",children:B},t),B=Be.makeSpan(["col-align-"+(L.align||"c")],[B]),w.push(B),(r<s-1||e.hskipBeforeAndAfter)&&0!==(F=_.deflt(L.postgap,m))&&((I=Be.makeSpan(["arraycolsep"],[])).style.width=F+"em",w.push(I))}}if(l=Be.makeSpan(["mtable"],w),c.length>0){for(var V=Be.makeLineSpan("hline",t,d),z=Be.makeLineSpan("hdashline",t,d),q=[{type:"elem",elem:l,shift:0}];c.length>0;){var K=c.pop(),W=K.pos-x;K.isDashed?q.push({type:"elem",elem:z,shift:W}):q.push({type:"elem",elem:V,shift:W})}l=Be.makeVList({positionType:"individualShift",children:q},t)}return Be.makeSpan(["mord"],[l],t)},bn={c:"center ",l:"left ",r:"right "},Cn=function(e,t){var n=new St.MathNode("mtable",e.body.map(function(e){return new St.MathNode("mtr",e.map(function(e){return new St.MathNode("mtd",[vt(e,t)])}))})),r=.5===e.arraystretch?.1:.16+e.arraystretch-1+(e.addJot?.09:0);n.setAttribute("rowspacing",r+"em");var a="",i="";if(e.cols){var o=e.cols,s="",l=!1,c=0,d=o.length;"separator"===o[0].type&&(a+="top ",c=1),"separator"===o[o.length-1].type&&(a+="bottom ",d-=1);for(var _=c;_<d;_++)"align"===o[_].type?(i+=bn[o[_].align],l&&(s+="none "),l=!0):"separator"===o[_].type&&l&&(s+="|"===o[_].separator?"solid ":"dashed ",l=!1);n.setAttribute("columnalign",i.trim()),/[sd]/.test(s)&&n.setAttribute("columnlines",s.trim())}if("align"===e.colSeparationType){for(var u=e.cols||[],m="",p=1;p<u.length;p++)m+=p%2?"0em ":"1em ";n.setAttribute("columnspacing",m.trim())}else"alignat"===e.colSeparationType?n.setAttribute("columnspacing","0em"):"small"===e.colSeparationType?n.setAttribute("columnspacing","0.2778em"):n.setAttribute("columnspacing","1em");var g="",E=e.hLinesBeforeRow;a+=E[0].length>0?"left ":"",a+=E[E.length-1].length>0?"right ":"";for(var h=1;h<E.length-1;h++)g+=0===E[h].length?"none ":E[h][0]?"dashed ":"solid ";return/[sd]/.test(g)&&n.setAttribute("rowlines",g.trim()),""!==a&&(n=new St.MathNode("menclose",[n])).setAttribute("notation",a.trim()),e.arraystretch&&e.arraystretch<1&&(n=new St.MathNode("mstyle",[n])).setAttribute("scriptlevel","1"),n},Nn=function(e,t){var n,r=[],a=Sn(e.parser,{cols:r,addJot:!0},"display"),i=0,s={type:"ordgroup",mode:e.mode,body:[]},l=He(t[0],"ordgroup");if(l){for(var c="",d=0;d<l.body.length;d++){c+=Ge(l.body[d],"textord").text}n=Number(c),i=2*n}var _=!i;a.body.forEach(function(e){for(var t=1;t<e.length;t+=2){Ge(Ge(e[t],"styling").body[0],"ordgroup").body.unshift(s)}if(_)i<e.length&&(i=e.length);else{var r=e.length/2;if(n<r)throw new o("Too many math in a row: expected "+n+", but got "+r,e[0])}});for(var u=0;u<i;++u){var m="r",p=0;u%2==1?m="l":u>0&&_&&(p=1),r[u]={type:"align",align:m,pregap:p,postgap:0}}return a.colSeparationType=_?"align":"alignat",a};En({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(e,t){var n={cols:(ze(t[0])?[t[0]]:Ge(t[0],"ordgroup").body).map(function(e){var t=Ve(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new o("Unknown column alignment: "+t,e)}),hskipBeforeAndAfter:!0};return Sn(e.parser,n,fn(e.envName))},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName],n=Sn(e.parser,{hskipBeforeAndAfter:!1},fn(e.envName));return t?{type:"leftright",mode:e.mode,body:[n],left:t[0],right:t[1],rightColor:void 0}:n},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(e){var t=Sn(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["subarray"],props:{numArgs:1},handler:function(e,t){var n=(ze(t[0])?[t[0]]:Ge(t[0],"ordgroup").body).map(function(e){var t=Ve(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new o("Unknown column alignment: "+t,e)});if(n.length>1)throw new o("{subarray} can contain only one column");var r={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5};if((r=Sn(e.parser,r,"script")).body[0].length>1)throw new o("{subarray} can contain only one column");return r},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(e){var t=Sn(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},fn(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:"\\{",right:".",rightColor:void 0}},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["aligned"],props:{numArgs:0},handler:Nn,htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["gathered"],props:{numArgs:0},handler:function(e){return Sn(e.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["alignedat"],props:{numArgs:1},handler:Nn,htmlBuilder:Tn,mathmlBuilder:Cn}),Je({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(e,t){throw new o(e.funcName+" valid only within array environment")}});var vn=gn;Je({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];if("ordgroup"!==a.type)throw new o("Invalid environment name",a);for(var i="",s=0;s<a.body.length;++s)i+=Ge(a.body[s],"textord").text;if("\\begin"===r){if(!vn.hasOwnProperty(i))throw new o("No such environment: "+i,a);var l=vn[i],c=n.parseArguments("\\begin{"+i+"}",l),d=c.args,_=c.optArgs,u={mode:n.mode,envName:i,parser:n},m=l.handler(u,d,_);n.expect("\\end",!1);var p=n.nextToken,g=Ge(n.parseFunction(),"environment");if(g.name!==i)throw new o("Mismatch: \\begin{"+i+"} matched by \\end{"+g.name+"}",p);return m}return{type:"environment",mode:n.mode,name:i,nameGroup:a}}});var Rn=Be.makeSpan;function An(e,t){var n=st(e.body,t,!0);return Rn([e.mclass],n,t)}function On(e,t){var n,r=Ct(e.body,t);return"minner"===e.mclass?St.newDocumentFragment(r):("mord"===e.mclass?e.isCharacterBox?(n=r[0]).type="mi":n=new St.MathNode("mi",r):(e.isCharacterBox?(n=r[0]).type="mo":n=new St.MathNode("mo",r),"mbin"===e.mclass?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):"mpunct"===e.mclass?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):"mopen"!==e.mclass&&"mclose"!==e.mclass||(n.attributes.lspace="0em",n.attributes.rspace="0em")),n)}Je({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.substr(5),body:tt(a),isCharacterBox:_.isCharacterBox(a)}},htmlBuilder:An,mathmlBuilder:On});var yn=function(e){var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};Je({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:function(e,t){return{type:"mclass",mode:e.parser.mode,mclass:yn(t[0]),body:[t[1]],isCharacterBox:_.isCharacterBox(t[1])}}}),Je({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler:function(e,t){var n,r=e.parser,a=e.funcName,i=t[1],o=t[0];n="\\stackrel"!==a?yn(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==a,body:tt(i)},l={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===a?null:o,sub:"\\underset"===a?o:null};return{type:"mclass",mode:r.mode,mclass:n,body:[l],isCharacterBox:_.isCharacterBox(l)}},htmlBuilder:An,mathmlBuilder:On});var In=function(e,t){var n=e.font,r=t.withFont(n);return ut(e.body,r)},Dn=function(e,t){var n=e.font,r=t.withFont(n);return vt(e.body,r)},xn={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Je({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,greediness:2},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0],i=r;return i in xn&&(i=xn[i]),{type:"font",mode:n.mode,font:i.slice(1),body:a}},htmlBuilder:In,mathmlBuilder:Dn}),Je({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1,greediness:2},handler:function(e,t){var n=e.parser,r=t[0],a=_.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:yn(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:a}}}),Je({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=e.breakOnTokenText,i=n.mode,o=n.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+r.slice(1),body:{type:"ordgroup",mode:n.mode,body:o}}},htmlBuilder:In,mathmlBuilder:Dn});var Mn=function(e,t){var n=t;return"display"===e?n=n.id>=b.SCRIPT.id?n.text():b.DISPLAY:"text"===e&&n.size===b.DISPLAY.size?n=b.TEXT:"script"===e?n=b.SCRIPT:"scriptscript"===e&&(n=b.SCRIPTSCRIPT),n},wn=function(e,t){var n,r=Mn(e.size,t.style),a=r.fracNum(),i=r.fracDen();n=t.havingStyle(a);var o=ut(e.numer,n,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<l?l:o.depth}n=t.havingStyle(i);var c,d,_,u,m,p,g,E,h,S,f=ut(e.denom,n,t);if(e.hasBarLine?(e.barSize?(d=Oe(e.barSize,t),c=Be.makeLineSpan("frac-line",t,d)):c=Be.makeLineSpan("frac-line",t),d=c.height,_=c.height):(c=null,d=0,_=t.fontMetrics().defaultRuleThickness),r.size===b.DISPLAY.size||"display"===e.size?(u=t.fontMetrics().num1,m=d>0?3*_:7*_,p=t.fontMetrics().denom1):(d>0?(u=t.fontMetrics().num2,m=_):(u=t.fontMetrics().num3,m=3*_),p=t.fontMetrics().denom2),c){var T=t.fontMetrics().axisHeight;u-o.depth-(T+.5*d)<m&&(u+=m-(u-o.depth-(T+.5*d))),T-.5*d-(f.height-p)<m&&(p+=m-(T-.5*d-(f.height-p)));var C=-(T-.5*d);g=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:p},{type:"elem",elem:c,shift:C},{type:"elem",elem:o,shift:-u}]},t)}else{var N=u-o.depth-(f.height-p);N<m&&(u+=.5*(m-N),p+=.5*(m-N)),g=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:p},{type:"elem",elem:o,shift:-u}]},t)}return n=t.havingStyle(r),g.height*=n.sizeMultiplier/t.sizeMultiplier,g.depth*=n.sizeMultiplier/t.sizeMultiplier,E=r.size===b.DISPLAY.size?t.fontMetrics().delim1:t.fontMetrics().delim2,h=null==e.leftDelim?_t(t,["mopen"]):sn(e.leftDelim,E,!0,t.havingStyle(r),e.mode,["mopen"]),S=e.continued?Be.makeSpan([]):null==e.rightDelim?_t(t,["mclose"]):sn(e.rightDelim,E,!0,t.havingStyle(r),e.mode,["mclose"]),Be.makeSpan(["mord"].concat(n.sizingClasses(t)),[h,Be.makeSpan(["mfrac"],[g]),S],t)},Ln=function(e,t){var n=new St.MathNode("mfrac",[vt(e.numer,t),vt(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var r=Oe(e.barSize,t);n.setAttribute("linethickness",r+"em")}}else n.setAttribute("linethickness","0px");var a=Mn(e.size,t.style);if(a.size!==t.style.size){n=new St.MathNode("mstyle",[n]);var i=a.size===b.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){var o=[];if(null!=e.leftDelim){var s=new St.MathNode("mo",[new St.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(n),null!=e.rightDelim){var l=new St.MathNode("mo",[new St.TextNode(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),o.push(l)}return Tt(o)}return n};Je({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,greediness:2},handler:function(e,t){var n,r=e.parser,a=e.funcName,i=t[0],o=t[1],s=null,l=null,c="auto";switch(a){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":n=!0;break;case"\\\\atopfrac":n=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":n=!1,s="(",l=")";break;case"\\\\bracefrac":n=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":n=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(a){case"\\cfrac":case"\\dfrac":case"\\dbinom":c="display";break;case"\\tfrac":case"\\tbinom":c="text"}return{type:"genfrac",mode:r.mode,continued:"\\cfrac"===a,numer:i,denom:o,hasBarLine:n,leftDelim:s,rightDelim:l,size:c,barSize:null}},htmlBuilder:wn,mathmlBuilder:Ln}),Je({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler:function(e){var t,n=e.parser,r=e.funcName,a=e.token;switch(r){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:n.mode,replaceWith:t,token:a}}});var Pn=["display","text","script","scriptscript"],kn=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};Je({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(e,t){var n=e.parser,r=t[4],a=t[5],i=He(t[0],"atom");i&&(i=Ye(t[0],"open"));var o=i?kn(i.text):null,s=He(t[1],"atom");s&&(s=Ye(t[1],"close"));var l,c=s?kn(s.text):null,d=Ge(t[2],"size"),_=null;l=!!d.isBlank||(_=d.value).number>0;var u="auto",m=He(t[3],"ordgroup");if(m){if(m.body.length>0){var p=Ge(m.body[0],"textord");u=Pn[Number(p.text)]}}else m=Ge(t[3],"textord"),u=Pn[Number(m.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:a,continued:!1,hasBarLine:l,barSize:_,leftDelim:o,rightDelim:c,size:u}},htmlBuilder:wn,mathmlBuilder:Ln}),Je({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(e,t){var n=e.parser,r=(e.funcName,e.token);return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:Ge(t[0],"size").value,token:r}}}),Je({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(e,t){var n=e.parser,r=(e.funcName,t[0]),a=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ge(t[1],"infix").size),i=t[2],o=a.number>0;return{type:"genfrac",mode:n.mode,numer:r,denom:i,continued:!1,hasBarLine:o,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:wn,mathmlBuilder:Ln});var Un=function(e,t){var n,r,a=t.style,i=He(e,"supsub");i?(n=i.sup?ut(i.sup,t.havingStyle(a.sup()),t):ut(i.sub,t.havingStyle(a.sub()),t),r=Ge(i.base,"horizBrace")):r=Ge(e,"horizBrace");var o,s=ut(r.base,t.havingBaseStyle(b.DISPLAY)),l=wt(r,t);if(r.isOver?(o=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:l}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(o=Be.makeVList({positionType:"bottom",positionData:s.depth+.1+l.height,children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[0].classes.push("svg-align"),n){var c=Be.makeSpan(["mord",r.isOver?"mover":"munder"],[o],t);o=r.isOver?Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:n}]},t):Be.makeVList({positionType:"bottom",positionData:c.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:c}]},t)}return Be.makeSpan(["mord",r.isOver?"mover":"munder"],[o],t)};Je({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:t[0]}},htmlBuilder:Un,mathmlBuilder:function(e,t){var n=Mt(e.label);return new St.MathNode(e.isOver?"mover":"munder",[vt(e.base,t),n])}}),Je({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[1],a=Ge(t[0],"url").url;return n.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:n.mode,href:a,body:tt(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:function(e,t){var n=st(e.body,t,!1);return Be.makeAnchor(e.href,[],n,t)},mathmlBuilder:function(e,t){var n=Nt(e.body,t);return n instanceof Et||(n=new Et("mrow",[n])),n.setAttribute("href",e.href),n}}),Je({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=Ge(t[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var a=[],i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),a.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:n.mode,font:"\\texttt",body:a};return{type:"href",mode:n.mode,href:r,body:tt(s)}}}),Je({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:function(e,t){return{type:"htmlmathml",mode:e.parser.mode,html:tt(t[0]),mathml:tt(t[1])}},htmlBuilder:function(e,t){var n=st(e.html,t,!1);return Be.makeFragment(n)},mathmlBuilder:function(e,t){return Nt(e.mathml,t)}});var Fn=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new o("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(t[1]+t[2]),unit:t[3]};if(!Ae(n))throw new o("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};Je({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:function(e,t,n){var r=e.parser,a={number:0,unit:"em"},i={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(n[0])for(var c=Ge(n[0],"raw").string.split(","),d=0;d<c.length;d++){var _=c[d].split("=");if(2===_.length){var u=_[1].trim();switch(_[0].trim()){case"alt":l=u;break;case"width":a=Fn(u);break;case"height":i=Fn(u);break;case"totalheight":s=Fn(u);break;default:throw new o("Invalid key: '"+_[0]+"' in \\includegraphics.")}}}var m=Ge(t[0],"url").url;return""===l&&(l=(l=(l=m).replace(/^.*[\\/]/,"")).substring(0,l.lastIndexOf("."))),r.settings.isTrusted({command:"\\includegraphics",url:m})?{type:"includegraphics",mode:r.mode,alt:l,width:a,height:i,totalheight:s,src:m}:r.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:function(e,t){var n=Oe(e.height,t),r=0;e.totalheight.number>0&&(r=Oe(e.totalheight,t)-n,r=Number(r.toFixed(2)));var a=0;e.width.number>0&&(a=Oe(e.width,t));var i={height:n+r+"em"};a>0&&(i.width=a+"em"),r>0&&(i.verticalAlign=-r+"em");var o=new w(e.src,e.alt,i);return o.height=n,o.depth=r,o},mathmlBuilder:function(e,t){var n=new St.MathNode("mglyph",[]);n.setAttribute("alt",e.alt);var r=Oe(e.height,t),a=0;if(e.totalheight.number>0&&(a=(a=Oe(e.totalheight,t)-r).toFixed(2),n.setAttribute("valign","-"+a+"em")),n.setAttribute("height",r+a+"em"),e.width.number>0){var i=Oe(e.width,t);n.setAttribute("width",i+"em")}return n.setAttribute("src",e.src),n}}),Je({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=Ge(t[0],"size");if(n.settings.strict){var i="m"===r[1],o="mu"===a.value.unit;i?(o||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, not "+a.value.unit+" units"),"math"!==n.mode&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):o&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:a.value}},htmlBuilder:function(e,t){return Be.makeGlue(e.dimension,t)},mathmlBuilder:function(e,t){var n=Oe(e.dimension,t);return new St.SpaceNode(n)}}),Je({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:a}},htmlBuilder:function(e,t){var n;"clap"===e.alignment?(n=Be.makeSpan([],[ut(e.body,t)]),n=Be.makeSpan(["inner"],[n],t)):n=Be.makeSpan(["inner"],[ut(e.body,t)]);var r=Be.makeSpan(["fix"],[]),a=Be.makeSpan([e.alignment],[n,r],t),i=Be.makeSpan(["strut"]);return i.style.height=a.height+a.depth+"em",i.style.verticalAlign=-a.depth+"em",a.children.unshift(i),a=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},t),Be.makeSpan(["mord"],[a],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]);if("rlap"!==e.alignment){var r="llap"===e.alignment?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}}),Je({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var n=e.funcName,r=e.parser,a=r.mode;r.switchMode("math");var i="\\("===n?"\\)":"$",o=r.parseExpression(!1,i);return r.expect(i),r.switchMode(a),{type:"styling",mode:r.mode,style:"text",body:o}}}),Je({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){throw new o("Mismatched "+e.funcName)}});var Bn=function(e,t){switch(t.style.size){case b.DISPLAY.size:return e.display;case b.TEXT.size:return e.text;case b.SCRIPT.size:return e.script;case b.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};Je({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(e,t){return{type:"mathchoice",mode:e.parser.mode,display:tt(t[0]),text:tt(t[1]),script:tt(t[2]),scriptscript:tt(t[3])}},htmlBuilder:function(e,t){var n=Bn(e,t),r=st(n,t,!1);return Be.makeFragment(r)},mathmlBuilder:function(e,t){var n=Bn(e,t);return Nt(n,t)}});var Gn=function(e,t,n,r,a,i,o){var s,l,c;if(e=Be.makeSpan([],[e]),t){var d=ut(t,r.havingStyle(a.sup()),r);l={elem:d,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-d.depth)}}if(n){var _=ut(n,r.havingStyle(a.sub()),r);s={elem:_,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-_.height)}}if(l&&s){var u=r.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;c=Be.makeVList({positionType:"bottom",positionData:u,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:i+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(s){var m=e.height-o;c=Be.makeVList({positionType:"top",positionData:m,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:e}]},r)}else{if(!l)return e;var p=e.depth+o;c=Be.makeVList({positionType:"bottom",positionData:p,children:[{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:i+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}return Be.makeSpan(["mop","op-limits"],[c],r)},Hn=["\\smallint"],Yn=function(e,t){var n,r,a,i=!1,o=He(e,"supsub");o?(n=o.sup,r=o.sub,a=Ge(o.base,"op"),i=!0):a=Ge(e,"op");var s,l=t.style,c=!1;if(l.size===b.DISPLAY.size&&a.symbol&&!_.contains(Hn,a.name)&&(c=!0),a.symbol){var d=c?"Size2-Regular":"Size1-Regular",u="";if("\\oiint"!==a.name&&"\\oiiint"!==a.name||(u=a.name.substr(1),a.name="oiint"===u?"\\iint":"\\iiint"),s=Be.makeSymbol(a.name,d,"math",t,["mop","op-symbol",c?"large-op":"small-op"]),u.length>0){var m=s.italic,p=Be.staticSvg(u+"Size"+(c?"2":"1"),t);s=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:p,shift:c?.08:0}]},t),a.name="\\"+u,s.classes.unshift("mop"),s.italic=m}}else if(a.body){var g=st(a.body,t,!0);1===g.length&&g[0]instanceof P?(s=g[0]).classes[0]="mop":s=Be.makeSpan(["mop"],Be.tryCombineChars(g),t)}else{for(var E=[],h=1;h<a.name.length;h++)E.push(Be.mathsym(a.name[h],a.mode,t));s=Be.makeSpan(["mop"],E,t)}var S=0,f=0;return(s instanceof P||"\\oiint"===a.name||"\\oiiint"===a.name)&&!a.suppressBaseShift&&(S=(s.height-s.depth)/2-t.fontMetrics().axisHeight,f=s.italic),i?Gn(s,n,r,t,l,f,S):(S&&(s.style.position="relative",s.style.top=S+"em"),s)},Vn=function(e,t){var n;if(e.symbol)n=new Et("mo",[ft(e.name,e.mode)]),_.contains(Hn,e.name)&&n.setAttribute("largeop","false");else if(e.body)n=new Et("mo",Ct(e.body,t));else{n=new Et("mi",[new ht(e.name.slice(1))]);var r=new Et("mo",[ft("⁡","text")]);n=e.parentIsSupSub?new Et("mo",[n,r]):gt([n,r])}return n},zn={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};Je({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:function(e,t){var n=e.parser,r=e.funcName;return 1===r.length&&(r=zn[r]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=t[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:tt(r)}},htmlBuilder:Yn,mathmlBuilder:Vn});var qn={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};Je({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return 1===n.length&&(n=qn[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn});var Kn=function(e,t){var n,r,a,i,o=!1,s=He(e,"supsub");if(s?(n=s.sup,r=s.sub,a=Ge(s.base,"operatorname"),o=!0):a=Ge(e,"operatorname"),a.body.length>0){for(var l=a.body.map(function(e){var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e}),c=st(l,t.withFont("mathrm"),!0),d=0;d<c.length;d++){var _=c[d];_ instanceof P&&(_.text=_.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=Be.makeSpan(["mop"],c,t)}else i=Be.makeSpan(["mop"],[],t);return o?Gn(i,n,r,t,t.style,0,0):i};function Wn(e,t,n){for(var r=st(e,t,!1),a=t.sizeMultiplier/n.sizeMultiplier,i=0;i<r.length;i++){var o=r[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(r[i].classes,t.sizingClasses(n)):r[i].classes[o+1]==="reset-size"+t.size&&(r[i].classes[o+1]="reset-size"+n.size),r[i].height*=a,r[i].depth*=a}return Be.makeFragment(r)}Je({type:"operatorname",names:["\\operatorname","\\operatorname*"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"operatorname",mode:n.mode,body:tt(a),alwaysHandleSupSub:"\\operatorname*"===r,limits:!1,parentIsSupSub:!1}},htmlBuilder:Kn,mathmlBuilder:function(e,t){for(var n=Ct(e.body,t.withFont("mathrm")),r=!0,a=0;a<n.length;a++){var i=n[a];if(i instanceof St.SpaceNode);else if(i instanceof St.MathNode)switch(i.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof St.TextNode?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):r=!1;break;default:r=!1}else r=!1}if(r){var s=n.map(function(e){return e.toText()}).join("");n=[new St.TextNode(s)]}var l=new St.MathNode("mi",n);l.setAttribute("mathvariant","normal");var c=new St.MathNode("mo",[ft("⁡","text")]);return e.parentIsSupSub?new St.MathNode("mo",[l,c]):St.newDocumentFragment([l,c])}}),et({type:"ordgroup",htmlBuilder:function(e,t){return e.semisimple?Be.makeFragment(st(e.body,t,!1)):Be.makeSpan(["mord"],st(e.body,t,!0),t)},mathmlBuilder:function(e,t){return Nt(e.body,t,!0)}}),Je({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=t[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=ut(e.body,t.havingCrampedStyle()),r=Be.makeLineSpan("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r},{type:"kern",size:a}]},t);return Be.makeSpan(["mord","overline"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[new St.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new St.MathNode("mover",[vt(e.body,t),n]);return r.setAttribute("accent","true"),r}}),Je({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"phantom",mode:n.mode,body:tt(r)}},htmlBuilder:function(e,t){var n=st(e.body,t.withPhantom(),!1);return Be.makeFragment(n)},mathmlBuilder:function(e,t){var n=Ct(e.body,t);return new St.MathNode("mphantom",n)}}),Je({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=Be.makeSpan([],[ut(e.body,t.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r<n.children.length;r++)n.children[r].height=0,n.children[r].depth=0;return n=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},t),Be.makeSpan(["mord"],[n],t)},mathmlBuilder:function(e,t){var n=Ct(tt(e.body),t),r=new St.MathNode("mphantom",n),a=new St.MathNode("mpadded",[r]);return a.setAttribute("height","0px"),a.setAttribute("depth","0px"),a}}),Je({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=Be.makeSpan(["inner"],[ut(e.body,t.withPhantom())]),r=Be.makeSpan(["fix"],[]);return Be.makeSpan(["mord","rlap"],[n,r],t)},mathmlBuilder:function(e,t){var n=Ct(tt(e.body),t),r=new St.MathNode("mphantom",n),a=new St.MathNode("mpadded",[r]);return a.setAttribute("width","0px"),a}}),Je({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=Ge(t[0],"size").value,a=t[1];return{type:"raisebox",mode:n.mode,dy:r,body:a}},htmlBuilder:function(e,t){var n=ut(e.body,t),r=Oe(e.dy,t);return Be.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]),r=e.dy.number+e.dy.unit;return n.setAttribute("voffset",r),n}}),Je({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(e,t,n){var r=e.parser,a=n[0],i=Ge(t[0],"size"),o=Ge(t[1],"size");return{type:"rule",mode:r.mode,shift:a&&Ge(a,"size").value,width:i.value,height:o.value}},htmlBuilder:function(e,t){var n=Be.makeSpan(["mord","rule"],[],t),r=Oe(e.width,t),a=Oe(e.height,t),i=e.shift?Oe(e.shift,t):0;return n.style.borderRightWidth=r+"em",n.style.borderTopWidth=a+"em",n.style.bottom=i+"em",n.width=r,n.height=a+i,n.depth=-i,n.maxFontSize=1.125*a*t.sizeMultiplier,n},mathmlBuilder:function(e,t){var n=Oe(e.width,t),r=Oe(e.height,t),a=e.shift?Oe(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new St.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",n+"em"),o.setAttribute("height",r+"em");var s=new St.MathNode("mpadded",[o]);return a>=0?s.setAttribute("height","+"+a+"em"):(s.setAttribute("height",a+"em"),s.setAttribute("depth","+"+-a+"em")),s.setAttribute("voffset",a+"em"),s}});var Qn=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Je({type:"sizing",names:Qn,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.breakOnTokenText,r=e.funcName,a=e.parser,i=a.parseExpression(!1,n);return{type:"sizing",mode:a.mode,size:Qn.indexOf(r)+1,body:i}},htmlBuilder:function(e,t){var n=t.havingSize(e.size);return Wn(e.body,n,t)},mathmlBuilder:function(e,t){var n=t.havingSize(e.size),r=Ct(e.body,n),a=new St.MathNode("mstyle",r);return a.setAttribute("mathsize",n.sizeMultiplier+"em"),a}}),Je({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,n){var r=e.parser,a=!1,i=!1,o=n[0]&&Ge(n[0],"ordgroup");if(o)for(var s="",l=0;l<o.body.length;++l){if("t"===(s=o.body[l].text))a=!0;else{if("b"!==s){a=!1,i=!1;break}i=!0}}else a=!0,i=!0;var c=t[0];return{type:"smash",mode:r.mode,body:c,smashHeight:a,smashDepth:i}},htmlBuilder:function(e,t){var n=Be.makeSpan([],[ut(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return n;if(e.smashHeight&&(n.height=0,n.children))for(var r=0;r<n.children.length;r++)n.children[r].height=0;if(e.smashDepth&&(n.depth=0,n.children))for(var a=0;a<n.children.length;a++)n.children[a].depth=0;var i=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},t);return Be.makeSpan(["mord"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]);return e.smashHeight&&n.setAttribute("height","0px"),e.smashDepth&&n.setAttribute("depth","0px"),n}}),Je({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,n){var r=e.parser,a=n[0],i=t[0];return{type:"sqrt",mode:r.mode,body:i,index:a}},htmlBuilder:function(e,t){var n=ut(e.body,t.havingCrampedStyle());0===n.height&&(n.height=t.fontMetrics().xHeight),n=Be.wrapFragment(n,t);var r=t.fontMetrics().defaultRuleThickness,a=r;t.style.id<b.TEXT.id&&(a=t.fontMetrics().xHeight);var i=r+a/4,o=n.height+n.depth+i+r,s=an(o,t),l=s.span,c=s.ruleWidth,d=s.advanceWidth,_=l.height-c;_>n.height+n.depth+i&&(i=(i+_-n.height-n.depth)/2);var u=l.height-n.height-i-c;n.style.paddingLeft=d+"em";var m=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+u)},{type:"elem",elem:l},{type:"kern",size:c}]},t);if(e.index){var p=t.havingStyle(b.SCRIPTSCRIPT),g=ut(e.index,p,t),E=.6*(m.height-m.depth),h=Be.makeVList({positionType:"shift",positionData:-E,children:[{type:"elem",elem:g}]},t),S=Be.makeSpan(["root"],[h]);return Be.makeSpan(["mord","sqrt"],[S,m],t)}return Be.makeSpan(["mord","sqrt"],[m],t)},mathmlBuilder:function(e,t){var n=e.body,r=e.index;return r?new St.MathNode("mroot",[vt(n,t),vt(r,t)]):new St.MathNode("msqrt",[vt(n,t)])}});var $n={display:b.DISPLAY,text:b.TEXT,script:b.SCRIPT,scriptscript:b.SCRIPTSCRIPT};Je({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.breakOnTokenText,r=e.funcName,a=e.parser,i=a.parseExpression(!0,n),o=r.slice(1,r.length-5);return{type:"styling",mode:a.mode,style:o,body:i}},htmlBuilder:function(e,t){var n=$n[e.style],r=t.havingStyle(n).withFont("");return Wn(e.body,r,t)},mathmlBuilder:function(e,t){var n=$n[e.style],r=t.havingStyle(n),a=Ct(e.body,r),i=new St.MathNode("mstyle",a),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});et({type:"supsub",htmlBuilder:function(e,t){var n=function(e,t){var n=e.base;return n?"op"===n.type?n.limits&&(t.style.size===b.DISPLAY.size||n.alwaysHandleSupSub)?Yn:null:"operatorname"===n.type?n.alwaysHandleSupSub&&(t.style.size===b.DISPLAY.size||n.limits)?Kn:null:"accent"===n.type?_.isCharacterBox(n.base)?Lt:null:"horizBrace"===n.type&&!e.sub===n.isOver?Un:null:null}(e,t);if(n)return n(e,t);var r,a,i,o=e.base,s=e.sup,l=e.sub,c=ut(o,t),d=t.fontMetrics(),u=0,m=0,p=o&&_.isCharacterBox(o);if(s){var g=t.havingStyle(t.style.sup());r=ut(s,g,t),p||(u=c.height-g.fontMetrics().supDrop*g.sizeMultiplier/t.sizeMultiplier)}if(l){var E=t.havingStyle(t.style.sub());a=ut(l,E,t),p||(m=c.depth+E.fontMetrics().subDrop*E.sizeMultiplier/t.sizeMultiplier)}i=t.style===b.DISPLAY?d.sup1:t.style.cramped?d.sup3:d.sup2;var h,S=t.sizeMultiplier,f=.5/d.ptPerEm/S+"em",T=null;if(a){var C=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(c instanceof P||C)&&(T=-c.italic+"em")}if(r&&a){u=Math.max(u,i,r.depth+.25*d.xHeight),m=Math.max(m,d.sub2);var N=4*d.defaultRuleThickness;if(u-r.depth-(a.height-m)<N){m=N-(u-r.depth)+a.height;var v=.8*d.xHeight-(u-r.depth);v>0&&(u+=v,m-=v)}var R=[{type:"elem",elem:a,shift:m,marginRight:f,marginLeft:T},{type:"elem",elem:r,shift:-u,marginRight:f}];h=Be.makeVList({positionType:"individualShift",children:R},t)}else if(a){m=Math.max(m,d.sub1,a.height-.8*d.xHeight);var A=[{type:"elem",elem:a,marginLeft:T,marginRight:f}];h=Be.makeVList({positionType:"shift",positionData:m,children:A},t)}else{if(!r)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,r.depth+.25*d.xHeight),h=Be.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:r,marginRight:f}]},t)}var O=dt(c,"right")||"mord";return Be.makeSpan([O],[c,Be.makeSpan(["msupsub"],[h])],t)},mathmlBuilder:function(e,t){var n,r=!1,a=He(e.base,"horizBrace");a&&!!e.sup===a.isOver&&(r=!0,n=a.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var i,o=[vt(e.base,t)];if(e.sub&&o.push(vt(e.sub,t)),e.sup&&o.push(vt(e.sup,t)),r)i=n?"mover":"munder";else if(e.sub)if(e.sup){var s=e.base;i=s&&"op"===s.type&&s.limits&&t.style===b.DISPLAY?"munderover":s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(t.style===b.DISPLAY||s.limits)?"munderover":"msubsup"}else{var l=e.base;i=l&&"op"===l.type&&l.limits&&(t.style===b.DISPLAY||l.alwaysHandleSupSub)?"munder":l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===b.DISPLAY)?"munder":"msub"}else{var c=e.base;i=c&&"op"===c.type&&c.limits&&(t.style===b.DISPLAY||c.alwaysHandleSupSub)?"mover":c&&"operatorname"===c.type&&c.alwaysHandleSupSub&&(c.limits||t.style===b.DISPLAY)?"mover":"msup"}return new St.MathNode(i,o)}}),et({type:"atom",htmlBuilder:function(e,t){return Be.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[ft(e.text,e.mode)]);if("bin"===e.family){var r=bt(e,t);"bold-italic"===r&&n.setAttribute("mathvariant",r)}else"punct"===e.family?n.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||n.setAttribute("stretchy","false");return n}});var jn={mi:"italic",mn:"normal",mtext:"normal"};et({type:"mathord",htmlBuilder:function(e,t){return Be.makeOrd(e,t,"mathord")},mathmlBuilder:function(e,t){var n=new St.MathNode("mi",[ft(e.text,e.mode,t)]),r=bt(e,t)||"italic";return r!==jn[n.type]&&n.setAttribute("mathvariant",r),n}}),et({type:"textord",htmlBuilder:function(e,t){return Be.makeOrd(e,t,"textord")},mathmlBuilder:function(e,t){var n,r=ft(e.text,e.mode,t),a=bt(e,t)||"normal";return n="text"===e.mode?new St.MathNode("mtext",[r]):/[0-9]/.test(e.text)?new St.MathNode("mn",[r]):"\\prime"===e.text?new St.MathNode("mo",[r]):new St.MathNode("mi",[r]),a!==jn[n.type]&&n.setAttribute("mathvariant",a),n}});var Xn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Zn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};et({type:"spacing",htmlBuilder:function(e,t){if(Zn.hasOwnProperty(e.text)){var n=Zn[e.text].className||"";if("text"===e.mode){var r=Be.makeOrd(e,t,"textord");return r.classes.push(n),r}return Be.makeSpan(["mspace",n],[Be.mathsym(e.text,e.mode,t)],t)}if(Xn.hasOwnProperty(e.text))return Be.makeSpan(["mspace",Xn[e.text]],[],t);throw new o('Unknown type of space "'+e.text+'"')},mathmlBuilder:function(e,t){if(!Zn.hasOwnProperty(e.text)){if(Xn.hasOwnProperty(e.text))return new St.MathNode("mspace");throw new o('Unknown type of space "'+e.text+'"')}return new St.MathNode("mtext",[new St.TextNode(" ")])}});var Jn=function(){var e=new St.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};et({type:"tag",mathmlBuilder:function(e,t){var n=new St.MathNode("mtable",[new St.MathNode("mtr",[Jn(),new St.MathNode("mtd",[Nt(e.body,t)]),Jn(),new St.MathNode("mtd",[Nt(e.tag,t)])])]);return n.setAttribute("width","100%"),n}});var er={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},tr={"\\textbf":"textbf","\\textmd":"textmd"},nr={"\\textit":"textit","\\textup":"textup"},rr=function(e,t){var n=e.font;return n?er[n]?t.withTextFontFamily(er[n]):tr[n]?t.withTextFontWeight(tr[n]):t.withTextFontShape(nr[n]):t};Je({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"text",mode:n.mode,body:tt(a),font:r}},htmlBuilder:function(e,t){var n=rr(e,t),r=st(e.body,n,!0);return Be.makeSpan(["mord","text"],Be.tryCombineChars(r),n)},mathmlBuilder:function(e,t){var n=rr(e,t);return Nt(e.body,n)}}),Je({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var n=ut(e.body,t),r=Be.makeLineSpan("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Be.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:a},{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n}]},t);return Be.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[new St.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new St.MathNode("munder",[vt(e.body,t),n]);return r.setAttribute("accentunder","true"),r}}),Je({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,n){throw new o("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var n=ar(e),r=[],a=t.havingStyle(t.style.text()),i=0;i<n.length;i++){var o=n[i];"~"===o&&(o="\\textasciitilde"),r.push(Be.makeSymbol(o,"Typewriter-Regular",e.mode,a,["mord","texttt"]))}return Be.makeSpan(["mord","text"].concat(a.sizingClasses(t)),Be.tryCombineChars(r),a)},mathmlBuilder:function(e,t){var n=new St.TextNode(ar(e)),r=new St.MathNode("mtext",[n]);return r.setAttribute("mathvariant","monospace"),r}});var ar=function(e){return e.body.replace(/ /g,e.star?"␣":" ")},ir=je,or=new RegExp("^(\\\\[a-zA-Z@]+)[ \r\n\t]*$"),sr=new RegExp("[̀-ͯ]+$"),lr="([ \r\n\t]+)|([!-\\[\\]-‧‪-퟿豈-￿][̀-ͯ]*|[\ud800-\udbff][\udc00-\udfff][̀-ͯ]*|\\\\verb\\*([^]).*?\\3|\\\\verb([^*a-zA-Z]).*?\\4|\\\\operatorname\\*|\\\\[a-zA-Z@]+[ \r\n\t]*|\\\\[^\ud800-\udfff])",cr=function(){function e(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(lr,"g"),this.catcodes={"%":14}}var t=e.prototype;return t.setCatcode=function(e,t){this.catcodes[e]=t},t.lex=function(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new a("EOF",new r(this,t,t));var n=this.tokenRegex.exec(e);if(null===n||n.index!==t)throw new o("Unexpected character: '"+e[t]+"'",new a(e[t],new r(this,t,t+1)));var i=n[2]||" ";if(14===this.catcodes[i]){var s=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}var l=i.match(or);return l&&(i=l[1]),new a(i,new r(this,t,this.tokenRegex.lastIndex))},e}(),dr=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}var t=e.prototype;return t.beginGroup=function(){this.undefStack.push({})},t.endGroup=function(){if(0===this.undefStack.length)throw new o("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(void 0===e[t]?delete this.current[t]:this.current[t]=e[t])},t.has=function(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)},t.get=function(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]},t.set=function(e,t,n){if(void 0===n&&(n=!1),n){for(var r=0;r<this.undefStack.length;r++)delete this.undefStack[r][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}this.current[e]=t},e}(),_r={},ur=_r;function mr(e,t){_r[e]=t}mr("\\@firstoftwo",function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}}),mr("\\@secondoftwo",function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}}),mr("\\@ifnextchar",function(e){var t=e.consumeArgs(3),n=e.future();return 1===t[0].length&&t[0][0].text===n.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}}),mr("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),mr("\\TextOrMath",function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var pr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};mr("\\char",function(e){var t,n=e.popToken(),r="";if("'"===n.text)t=8,n=e.popToken();else if('"'===n.text)t=16,n=e.popToken();else if("`"===n.text)if("\\"===(n=e.popToken()).text[0])r=n.text.charCodeAt(1);else{if("EOF"===n.text)throw new o("\\char` missing argument");r=n.text.charCodeAt(0)}else t=10;if(t){if(null==(r=pr[n.text])||r>=t)throw new o("Invalid base-"+t+" digit "+n.text);for(var a;null!=(a=pr[e.future().text])&&a<t;)r*=t,r+=a,e.popToken()}return"\\@char{"+r+"}"});var gr=function(e,t){var n=e.consumeArgs(1)[0];if(1!==n.length)throw new o("\\gdef's first argument must be a macro name");var r=n[0].text,a=0;for(n=e.consumeArgs(1)[0];1===n.length&&"#"===n[0].text;){if(1!==(n=e.consumeArgs(1)[0]).length)throw new o('Invalid argument number length "'+n.length+'"');if(!/^[1-9]$/.test(n[0].text))throw new o('Invalid argument number "'+n[0].text+'"');if(a++,parseInt(n[0].text)!==a)throw new o('Argument number "'+n[0].text+'" out of order');n=e.consumeArgs(1)[0]}return e.macros.set(r,{tokens:n,numArgs:a},t),""};mr("\\gdef",function(e){return gr(e,!0)}),mr("\\def",function(e){return gr(e,!1)}),mr("\\global",function(e){var t=e.consumeArgs(1)[0];if(1!==t.length)throw new o("Invalid command after \\global");var n=t[0].text;if("\\def"===n)return gr(e,!0);throw new o("Invalid command '"+n+"' after \\global")});var Er=function(e,t,n){var r=e.consumeArgs(1)[0];if(1!==r.length)throw new o("\\newcommand's first argument must be a macro name");var a=r[0].text,i=e.isDefined(a);if(i&&!t)throw new o("\\newcommand{"+a+"} attempting to redefine "+a+"; use \\renewcommand");if(!i&&!n)throw new o("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var s=0;if(1===(r=e.consumeArgs(1)[0]).length&&"["===r[0].text){for(var l="",c=e.expandNextToken();"]"!==c.text&&"EOF"!==c.text;)l+=c.text,c=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new o("Invalid number of arguments: "+l);s=parseInt(l),r=e.consumeArgs(1)[0]}return e.macros.set(a,{tokens:r,numArgs:s}),""};mr("\\newcommand",function(e){return Er(e,!1,!0)}),mr("\\renewcommand",function(e){return Er(e,!0,!1)}),mr("\\providecommand",function(e){return Er(e,!0,!0)}),mr("\\bgroup","{"),mr("\\egroup","}"),mr("\\lq","`"),mr("\\rq","'"),mr("\\aa","\\r a"),mr("\\AA","\\r A"),mr("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}"),mr("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),mr("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"),mr("ℬ","\\mathscr{B}"),mr("ℰ","\\mathscr{E}"),mr("ℱ","\\mathscr{F}"),mr("ℋ","\\mathscr{H}"),mr("ℐ","\\mathscr{I}"),mr("ℒ","\\mathscr{L}"),mr("ℳ","\\mathscr{M}"),mr("ℛ","\\mathscr{R}"),mr("ℭ","\\mathfrak{C}"),mr("ℌ","\\mathfrak{H}"),mr("ℨ","\\mathfrak{Z}"),mr("\\Bbbk","\\Bbb{k}"),mr("·","\\cdotp"),mr("\\llap","\\mathllap{\\textrm{#1}}"),mr("\\rlap","\\mathrlap{\\textrm{#1}}"),mr("\\clap","\\mathclap{\\textrm{#1}}"),mr("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),mr("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"),mr("\\ne","\\neq"),mr("≠","\\neq"),mr("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"),mr("∉","\\notin"),mr("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"),mr("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"),mr("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"),mr("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"),mr("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"),mr("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"),mr("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"),mr("⟂","\\perp"),mr("‼","\\mathclose{!\\mkern-0.8mu!}"),mr("∌","\\notni"),mr("⌜","\\ulcorner"),mr("⌝","\\urcorner"),mr("⌞","\\llcorner"),mr("⌟","\\lrcorner"),mr("©","\\copyright"),mr("®","\\textregistered"),mr("️","\\textregistered"),mr("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}"),mr("⋮","\\vdots"),mr("\\varGamma","\\mathit{\\Gamma}"),mr("\\varDelta","\\mathit{\\Delta}"),mr("\\varTheta","\\mathit{\\Theta}"),mr("\\varLambda","\\mathit{\\Lambda}"),mr("\\varXi","\\mathit{\\Xi}"),mr("\\varPi","\\mathit{\\Pi}"),mr("\\varSigma","\\mathit{\\Sigma}"),mr("\\varUpsilon","\\mathit{\\Upsilon}"),mr("\\varPhi","\\mathit{\\Phi}"),mr("\\varPsi","\\mathit{\\Psi}"),mr("\\varOmega","\\mathit{\\Omega}"),mr("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),mr("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu"),mr("\\boxed","\\fbox{$\\displaystyle{#1}$}"),mr("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),mr("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),mr("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var hr={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};mr("\\dots",function(e){var t="\\dotso",n=e.expandAfterFuture().text;return n in hr?t=hr[n]:"\\not"===n.substr(0,4)?t="\\dotsb":n in Q.math&&_.contains(["bin","rel"],Q.math[n].group)&&(t="\\dotsb"),t});var Sr={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};mr("\\dotso",function(e){return e.future().text in Sr?"\\ldots\\,":"\\ldots"}),mr("\\dotsc",function(e){var t=e.future().text;return t in Sr&&","!==t?"\\ldots\\,":"\\ldots"}),mr("\\cdots",function(e){return e.future().text in Sr?"\\@cdots\\,":"\\@cdots"}),mr("\\dotsb","\\cdots"),mr("\\dotsm","\\cdots"),mr("\\dotsi","\\!\\cdots"),mr("\\dotsx","\\ldots\\,"),mr("\\DOTSI","\\relax"),mr("\\DOTSB","\\relax"),mr("\\DOTSX","\\relax"),mr("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),mr("\\,","\\tmspace+{3mu}{.1667em}"),mr("\\thinspace","\\,"),mr("\\>","\\mskip{4mu}"),mr("\\:","\\tmspace+{4mu}{.2222em}"),mr("\\medspace","\\:"),mr("\\;","\\tmspace+{5mu}{.2777em}"),mr("\\thickspace","\\;"),mr("\\!","\\tmspace-{3mu}{.1667em}"),mr("\\negthinspace","\\!"),mr("\\negmedspace","\\tmspace-{4mu}{.2222em}"),mr("\\negthickspace","\\tmspace-{5mu}{.277em}"),mr("\\enspace","\\kern.5em "),mr("\\enskip","\\hskip.5em\\relax"),mr("\\quad","\\hskip1em\\relax"),mr("\\qquad","\\hskip2em\\relax"),mr("\\tag","\\@ifstar\\tag@literal\\tag@paren"),mr("\\tag@paren","\\tag@literal{({#1})}"),mr("\\tag@literal",function(e){if(e.macros.get("\\df@tag"))throw new o("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),mr("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),mr("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),mr("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),mr("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),mr("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),mr("\\\\","\\newline"),mr("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var fr=G["Main-Regular"]["T".charCodeAt(0)][1]-.7*G["Main-Regular"]["A".charCodeAt(0)][1]+"em";mr("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+fr+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),mr("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+fr+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),mr("\\hspace","\\@ifstar\\@hspacer\\@hspace"),mr("\\@hspace","\\hskip #1\\relax"),mr("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),mr("\\ordinarycolon",":"),mr("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),mr("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),mr("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),mr("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),mr("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),mr("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),mr("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),mr("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),mr("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),mr("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),mr("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),mr("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),mr("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),mr("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),mr("∷","\\dblcolon"),mr("∹","\\eqcolon"),mr("≔","\\coloneqq"),mr("≕","\\eqqcolon"),mr("⩴","\\Coloneqq"),mr("\\ratio","\\vcentcolon"),mr("\\coloncolon","\\dblcolon"),mr("\\colonequals","\\coloneqq"),mr("\\coloncolonequals","\\Coloneqq"),mr("\\equalscolon","\\eqqcolon"),mr("\\equalscoloncolon","\\Eqqcolon"),mr("\\colonminus","\\coloneq"),mr("\\coloncolonminus","\\Coloneq"),mr("\\minuscolon","\\eqcolon"),mr("\\minuscoloncolon","\\Eqcolon"),mr("\\coloncolonapprox","\\Colonapprox"),mr("\\coloncolonsim","\\Colonsim"),mr("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),mr("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),mr("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),mr("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),mr("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),mr("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),mr("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),mr("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}"),mr("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}"),mr("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}"),mr("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}"),mr("\\nleqq","\\html@mathml{\\@nleqq}{≰}"),mr("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}"),mr("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}"),mr("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}"),mr("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}"),mr("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}"),mr("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}"),mr("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}"),mr("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}"),mr("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}"),mr("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),mr("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),mr("⟦","\\llbracket"),mr("⟧","\\rrbracket"),mr("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),mr("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),mr("⦃","\\lBrace"),mr("⦄","\\rBrace"),mr("\\darr","\\downarrow"),mr("\\dArr","\\Downarrow"),mr("\\Darr","\\Downarrow"),mr("\\lang","\\langle"),mr("\\rang","\\rangle"),mr("\\uarr","\\uparrow"),mr("\\uArr","\\Uparrow"),mr("\\Uarr","\\Uparrow"),mr("\\N","\\mathbb{N}"),mr("\\R","\\mathbb{R}"),mr("\\Z","\\mathbb{Z}"),mr("\\alef","\\aleph"),mr("\\alefsym","\\aleph"),mr("\\Alpha","\\mathrm{A}"),mr("\\Beta","\\mathrm{B}"),mr("\\bull","\\bullet"),mr("\\Chi","\\mathrm{X}"),mr("\\clubs","\\clubsuit"),mr("\\cnums","\\mathbb{C}"),mr("\\Complex","\\mathbb{C}"),mr("\\Dagger","\\ddagger"),mr("\\diamonds","\\diamondsuit"),mr("\\empty","\\emptyset"),mr("\\Epsilon","\\mathrm{E}"),mr("\\Eta","\\mathrm{H}"),mr("\\exist","\\exists"),mr("\\harr","\\leftrightarrow"),mr("\\hArr","\\Leftrightarrow"),mr("\\Harr","\\Leftrightarrow"),mr("\\hearts","\\heartsuit"),mr("\\image","\\Im"),mr("\\infin","\\infty"),mr("\\Iota","\\mathrm{I}"),mr("\\isin","\\in"),mr("\\Kappa","\\mathrm{K}"),mr("\\larr","\\leftarrow"),mr("\\lArr","\\Leftarrow"),mr("\\Larr","\\Leftarrow"),mr("\\lrarr","\\leftrightarrow"),mr("\\lrArr","\\Leftrightarrow"),mr("\\Lrarr","\\Leftrightarrow"),mr("\\Mu","\\mathrm{M}"),mr("\\natnums","\\mathbb{N}"),mr("\\Nu","\\mathrm{N}"),mr("\\Omicron","\\mathrm{O}"),mr("\\plusmn","\\pm"),mr("\\rarr","\\rightarrow"),mr("\\rArr","\\Rightarrow"),mr("\\Rarr","\\Rightarrow"),mr("\\real","\\Re"),mr("\\reals","\\mathbb{R}"),mr("\\Reals","\\mathbb{R}"),mr("\\Rho","\\mathrm{P}"),mr("\\sdot","\\cdot"),mr("\\sect","\\S"),mr("\\spades","\\spadesuit"),mr("\\sub","\\subset"),mr("\\sube","\\subseteq"),mr("\\supe","\\supseteq"),mr("\\Tau","\\mathrm{T}"),mr("\\thetasym","\\vartheta"),mr("\\weierp","\\wp"),mr("\\Zeta","\\mathrm{Z}"),mr("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),mr("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),mr("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),mr("\\blue","\\textcolor{##6495ed}{#1}"),mr("\\orange","\\textcolor{##ffa500}{#1}"),mr("\\pink","\\textcolor{##ff00af}{#1}"),mr("\\red","\\textcolor{##df0030}{#1}"),mr("\\green","\\textcolor{##28ae7b}{#1}"),mr("\\gray","\\textcolor{gray}{#1}"),mr("\\purple","\\textcolor{##9d38bd}{#1}"),mr("\\blueA","\\textcolor{##ccfaff}{#1}"),mr("\\blueB","\\textcolor{##80f6ff}{#1}"),mr("\\blueC","\\textcolor{##63d9ea}{#1}"),mr("\\blueD","\\textcolor{##11accd}{#1}"),mr("\\blueE","\\textcolor{##0c7f99}{#1}"),mr("\\tealA","\\textcolor{##94fff5}{#1}"),mr("\\tealB","\\textcolor{##26edd5}{#1}"),mr("\\tealC","\\textcolor{##01d1c1}{#1}"),mr("\\tealD","\\textcolor{##01a995}{#1}"),mr("\\tealE","\\textcolor{##208170}{#1}"),mr("\\greenA","\\textcolor{##b6ffb0}{#1}"),mr("\\greenB","\\textcolor{##8af281}{#1}"),mr("\\greenC","\\textcolor{##74cf70}{#1}"),mr("\\greenD","\\textcolor{##1fab54}{#1}"),mr("\\greenE","\\textcolor{##0d923f}{#1}"),mr("\\goldA","\\textcolor{##ffd0a9}{#1}"),mr("\\goldB","\\textcolor{##ffbb71}{#1}"),mr("\\goldC","\\textcolor{##ff9c39}{#1}"),mr("\\goldD","\\textcolor{##e07d10}{#1}"),mr("\\goldE","\\textcolor{##a75a05}{#1}"),mr("\\redA","\\textcolor{##fca9a9}{#1}"),mr("\\redB","\\textcolor{##ff8482}{#1}"),mr("\\redC","\\textcolor{##f9685d}{#1}"),mr("\\redD","\\textcolor{##e84d39}{#1}"),mr("\\redE","\\textcolor{##bc2612}{#1}"),mr("\\maroonA","\\textcolor{##ffbde0}{#1}"),mr("\\maroonB","\\textcolor{##ff92c6}{#1}"),mr("\\maroonC","\\textcolor{##ed5fa6}{#1}"),mr("\\maroonD","\\textcolor{##ca337c}{#1}"),mr("\\maroonE","\\textcolor{##9e034e}{#1}"),mr("\\purpleA","\\textcolor{##ddd7ff}{#1}"),mr("\\purpleB","\\textcolor{##c6b9fc}{#1}"),mr("\\purpleC","\\textcolor{##aa87ff}{#1}"),mr("\\purpleD","\\textcolor{##7854ab}{#1}"),mr("\\purpleE","\\textcolor{##543b78}{#1}"),mr("\\mintA","\\textcolor{##f5f9e8}{#1}"),mr("\\mintB","\\textcolor{##edf2df}{#1}"),mr("\\mintC","\\textcolor{##e0e5cc}{#1}"),mr("\\grayA","\\textcolor{##f6f7f7}{#1}"),mr("\\grayB","\\textcolor{##f0f1f2}{#1}"),mr("\\grayC","\\textcolor{##e3e5e6}{#1}"),mr("\\grayD","\\textcolor{##d6d8da}{#1}"),mr("\\grayE","\\textcolor{##babec2}{#1}"),mr("\\grayF","\\textcolor{##888d93}{#1}"),mr("\\grayG","\\textcolor{##626569}{#1}"),mr("\\grayH","\\textcolor{##3b3e40}{#1}"),mr("\\grayI","\\textcolor{##21242c}{#1}"),mr("\\kaBlue","\\textcolor{##314453}{#1}"),mr("\\kaGreen","\\textcolor{##71B307}{#1}");var Tr={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},br=function(){function e(e,t,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new dr(ur,t.macros),this.mode=n,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new cr(e,this.settings)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},t.consumeArgs=function(e){for(var t=[],n=0;n<e;++n){this.consumeSpaces();var r=this.popToken();if("{"===r.text){for(var a=[],i=1;0!==i;){var s=this.popToken();if(a.push(s),"{"===s.text)++i;else if("}"===s.text)--i;else if("EOF"===s.text)throw new o("End of input in macro argument",r)}a.pop(),a.reverse(),t[n]=a}else{if("EOF"===r.text)throw new o("End of input expecting macro argument");t[n]=[r]}}return t},t.expandOnce=function(){var e=this.popToken(),t=e.text,n=this._getExpansion(t);if(null==n)return this.pushToken(e),e;if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new o("Too many expansions: infinite loop or need to increase maxExpand setting");var r=n.tokens;if(n.numArgs)for(var a=this.consumeArgs(n.numArgs),i=(r=r.slice()).length-1;i>=0;--i){var s=r[i];if("#"===s.text){if(0===i)throw new o("Incomplete placeholder at end of macro body",s);if("#"===(s=r[--i]).text)r.splice(i+1,1);else{if(!/^[1-9]$/.test(s.text))throw new o("Not a valid argument number",s);var l;(l=r).splice.apply(l,[i,2].concat(a[+s.text-1]))}}}return this.pushTokens(r),r},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof a){if("\\relax"!==e.text)return this.stack.pop();this.stack.pop()}}throw new Error},t.expandMacro=function(e){if(this.macros.get(e)){var t=[],n=this.stack.length;for(this.pushToken(new a(e));this.stack.length>n;){this.expandOnce()instanceof a&&t.push(this.stack.pop())}return t}},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map(function(e){return e.text}).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;var n="function"==typeof t?t(this):t;if("string"==typeof n){var r=0;if(-1!==n.indexOf("#"))for(var a=n.replace(/##/g,"");-1!==a.indexOf("#"+(r+1));)++r;for(var i=new cr(n,this.settings),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();return o.reverse(),{tokens:o,numArgs:r}}return n},t.isDefined=function(e){return this.macros.has(e)||ir.hasOwnProperty(e)||Q.math.hasOwnProperty(e)||Q.text.hasOwnProperty(e)||Tr.hasOwnProperty(e)},e}(),Cr={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"}},Nr={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"},vr=function(){function e(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new br(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var t=e.prototype;return t.expect=function(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new o("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()},t.consume=function(){this.nextToken=null},t.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},t.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},t.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var e=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),e},t.parseExpression=function(t,n){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==e.endOfExpression.indexOf(a.text))break;if(n&&a.text===n)break;if(t&&ir[a.text]&&ir[a.text].infix)break;var i=this.parseAtom(n);if(!i)break;r.push(i)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)},t.handleInfixNodes=function(e){for(var t,n=-1,r=0;r<e.length;r++){var a=He(e[r],"infix");if(a){if(-1!==n)throw new o("only one infix operator per group",a.token);n=r,t=a.replaceWith}}if(-1!==n&&t){var i,s,l=e.slice(0,n),c=e.slice(n+1);return i=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},s=1===c.length&&"ordgroup"===c[0].type?c[0]:{type:"ordgroup",mode:this.mode,body:c},["\\\\abovefrac"===t?this.callFunction(t,[i,e[n],s],[]):this.callFunction(t,[i,s],[])]}return e},t.handleSupSubscript=function(t){var n=this.fetch(),r=n.text;this.consume();var a=this.parseGroup(t,!1,e.SUPSUB_GREEDINESS,void 0,void 0,!0);if(!a)throw new o("Expected group after '"+r+"'",n);return a},t.formatUnsupportedCmd=function(e){for(var t=[],n=0;n<e.length;n++)t.push({type:"textord",mode:"text",text:e[n]});var r={type:"text",mode:this.mode,body:t};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[r]}},t.parseAtom=function(e){var t,n,r=this.parseGroup("atom",!1,null,e);if("text"===this.mode)return r;for(;;){this.consumeSpaces();var a=this.fetch();if("\\limits"===a.text||"\\nolimits"===a.text){var i=He(r,"op");if(i){var s="\\limits"===a.text;i.limits=s,i.alwaysHandleSupSub=!0}else{if(!(i=He(r,"operatorname"))||!i.alwaysHandleSupSub)throw new o("Limit controls must follow a math operator",a);var l="\\limits"===a.text;i.limits=l}this.consume()}else if("^"===a.text){if(t)throw new o("Double superscript",a);t=this.handleSupSubscript("superscript")}else if("_"===a.text){if(n)throw new o("Double subscript",a);n=this.handleSupSubscript("subscript")}else{if("'"!==a.text)break;if(t)throw new o("Double superscript",a);var c={type:"textord",mode:this.mode,text:"\\prime"},d=[c];for(this.consume();"'"===this.fetch().text;)d.push(c),this.consume();"^"===this.fetch().text&&d.push(this.handleSupSubscript("superscript")),t={type:"ordgroup",mode:this.mode,body:d}}}return t||n?{type:"supsub",mode:this.mode,base:r,sup:t,sub:n}:r},t.parseFunction=function(e,t,n){var r=this.fetch(),a=r.text,i=ir[a];if(!i)return null;if(this.consume(),null!=n&&i.greediness<=n)throw new o("Got function '"+a+"' with no arguments"+(t?" as "+t:""),r);if("text"===this.mode&&!i.allowedInText)throw new o("Can't use function '"+a+"' in text mode",r);if("math"===this.mode&&!1===i.allowedInMath)throw new o("Can't use function '"+a+"' in math mode",r);var s=this.parseArguments(a,i),l=s.args,c=s.optArgs;return this.callFunction(a,l,c,r,e)},t.callFunction=function(e,t,n,r,a){var i={funcName:e,parser:this,token:r,breakOnTokenText:a},s=ir[e];if(s&&s.handler)return s.handler(i,t,n);throw new o("No function handler for "+e)},t.parseArguments=function(e,t){var n=t.numArgs+t.numOptionalArgs;if(0===n)return{args:[],optArgs:[]};for(var r=t.greediness,a=[],i=[],s=0;s<n;s++){var l=t.argTypes&&t.argTypes[s],c=s<t.numOptionalArgs,d=s>0&&!c||0===s&&!c&&"math"===this.mode,_=this.parseGroupOfType("argument to '"+e+"'",l,c,r,d);if(!_){if(c){i.push(null);continue}throw new o("Expected group after '"+e+"'",this.fetch())}(c?i:a).push(_)}return{args:a,optArgs:i}},t.parseGroupOfType=function(e,t,n,r,a){switch(t){case"color":return a&&this.consumeSpaces(),this.parseColorGroup(n);case"size":return a&&this.consumeSpaces(),this.parseSizeGroup(n);case"url":return this.parseUrlGroup(n,a);case"math":case"text":return this.parseGroup(e,n,r,void 0,t,a);case"hbox":var i=this.parseGroup(e,n,r,void 0,"text",a);return i?{type:"styling",mode:i.mode,body:[i],style:"text"}:i;case"raw":if(a&&this.consumeSpaces(),n&&"{"===this.fetch().text)return null;var s=this.parseStringGroup("raw",n,!0);if(s)return{type:"raw",mode:"text",string:s.text};throw new o("Expected raw group",this.fetch());case"original":case null:case void 0:return this.parseGroup(e,n,r,void 0,void 0,a);default:throw new o("Unknown group type as "+e,this.fetch())}},t.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},t.parseStringGroup=function(e,t,n){var r=t?"[":"{",a=t?"]":"}",i=this.fetch();if(i.text!==r){if(t)return null;if(n&&"EOF"!==i.text&&/[^{}[\]]/.test(i.text))return this.consume(),i}var s=this.mode;this.mode="text",this.expect(r);for(var l,c="",d=this.fetch(),_=0,u=d;(l=this.fetch()).text!==a||n&&_>0;){switch(l.text){case"EOF":throw new o("Unexpected end of input in "+e,d.range(u,c));case r:_++;break;case a:_--}c+=(u=l).text,this.consume()}return this.expect(a),this.mode=s,d.range(u,c)},t.parseRegexGroup=function(e,t){var n=this.mode;this.mode="text";for(var r,a=this.fetch(),i=a,s="";"EOF"!==(r=this.fetch()).text&&e.test(s+r.text);)s+=(i=r).text,this.consume();if(""===s)throw new o("Invalid "+t+": '"+a.text+"'",a);return this.mode=n,a.range(i,s)},t.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(!t)return null;var n=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!n)throw new o("Invalid color: '"+t.text+"'",t);var r=n[0];return/^[0-9a-f]{6}$/i.test(r)&&(r="#"+r),{type:"color-token",mode:this.mode,color:r}},t.parseSizeGroup=function(e){var t,n=!1;if(!(t=e||"{"===this.fetch().text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;e||0!==t.text.length||(t.text="0pt",n=!0);var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!r)throw new o("Invalid size: '"+t.text+"'",t);var a={number:+(r[1]+r[2]),unit:r[3]};if(!Ae(a))throw new o("Invalid unit: '"+a.unit+"'",t);return{type:"size",mode:this.mode,value:a,isBlank:n}},t.parseUrlGroup=function(e,t){this.gullet.lexer.setCatcode("%",13);var n=this.parseStringGroup("url",e,!0);if(this.gullet.lexer.setCatcode("%",14),!n)return null;var r=n.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:r}},t.parseGroup=function(t,n,a,i,s,l){var c=this.mode;s&&this.switchMode(s),l&&this.consumeSpaces();var d,_=this.fetch(),u=_.text;if(n?"["===u:"{"===u||"\\begingroup"===u){this.consume();var m=e.endOfGroup[u];this.gullet.beginGroup();var p=this.parseExpression(!1,m),g=this.fetch();this.expect(m),this.gullet.endGroup(),d={type:"ordgroup",mode:this.mode,loc:r.range(_,g),body:p,semisimple:"\\begingroup"===u||void 0}}else if(n)d=null;else if(null==(d=this.parseFunction(i,t,a)||this.parseSymbol())&&"\\"===u[0]&&!Tr.hasOwnProperty(u)){if(this.settings.throwOnError)throw new o("Undefined control sequence: "+u,_);d=this.formatUnsupportedCmd(u),this.consume()}return s&&this.switchMode(c),d},t.formLigatures=function(e){for(var t=e.length-1,n=0;n<t;++n){var a=e[n],i=a.text;"-"===i&&"-"===e[n+1].text&&(n+1<t&&"-"===e[n+2].text?(e.splice(n,3,{type:"textord",mode:"text",loc:r.range(a,e[n+2]),text:"---"}),t-=2):(e.splice(n,2,{type:"textord",mode:"text",loc:r.range(a,e[n+1]),text:"--"}),t-=1)),"'"!==i&&"`"!==i||e[n+1].text!==i||(e.splice(n,2,{type:"textord",mode:"text",loc:r.range(a,e[n+1]),text:i+i}),t-=1)}},t.parseSymbol=function(){var e=this.fetch(),t=e.text;if(/^\\verb[^a-zA-Z]/.test(t)){this.consume();var n=t.slice(5),a="*"===n.charAt(0);if(a&&(n=n.slice(1)),n.length<2||n.charAt(0)!==n.slice(-1))throw new o("\\verb assertion failed --\n please report what input caused this bug");return{type:"verb",mode:"text",body:n=n.slice(1,-1),star:a}}Nr.hasOwnProperty(t[0])&&!Q[this.mode][t[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+t[0]+'" used in math mode',e),t=Nr[t[0]]+t.substr(1));var i,s=sr.exec(t);if(s&&("i"===(t=t.substring(0,s.index))?t="ı":"j"===t&&(t="ȷ")),Q[this.mode][t]){this.settings.strict&&"math"===this.mode&&"ÇÐÞçþ".indexOf(t)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var l,c=Q[this.mode][t].group,d=r.range(e);if(q.hasOwnProperty(c)){var _=c;l={type:"atom",mode:this.mode,family:_,loc:d,text:t}}else l={type:c,mode:this.mode,loc:d,text:t};i=l}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(v(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),i={type:"textord",mode:"text",loc:r.range(e),text:t}}if(this.consume(),s)for(var u=0;u<s[0].length;u++){var m=s[0][u];if(!Cr[m])throw new o("Unknown accent ' "+m+"'",e);var p=Cr[m][this.mode];if(!p)throw new o("Accent "+m+" unsupported in "+this.mode+" mode",e);i={type:"accent",mode:this.mode,loc:r.range(e),label:p,isStretchy:!1,isShifty:!0,base:i}}return i},e}();vr.endOfExpression=["}","\\endgroup","\\end","\\right","&"],vr.endOfGroup={"[":"]","{":"}","\\begingroup":"\\endgroup"},vr.SUPSUB_GREEDINESS=1;var Rr=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var n=new vr(e,t);delete n.gullet.macros.current["\\df@tag"];var r=n.parse();if(n.gullet.macros.get("\\df@tag")){if(!t.displayMode)throw new o("\\tag works only in display equations");n.gullet.feed("\\df@tag"),r=[{type:"tag",mode:"text",body:r,tag:n.parse()}]}return r},Ar=function(e,t,n){t.textContent="";var r=yr(e,n).toNode();t.appendChild(r)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),Ar=function(){throw new o("KaTeX doesn't work in quirks mode.")});var Or=function(e,t,n){if(n.throwOnError||!(e instanceof o))throw e;var r=Be.makeSpan(["katex-error"],[new P(t)]);return r.setAttribute("title",e.toString()),r.setAttribute("style","color:"+n.errorColor),r},yr=function(e,t){var n=new u(t);try{return function(e,t,n){var r,a=At(n);if("mathml"===n.output)return Rt(e,t,a,!0);if("html"===n.output){var i=pt(e,a);r=Be.makeSpan(["katex"],[i])}else{var o=Rt(e,t,a,!1),s=pt(e,a);r=Be.makeSpan(["katex"],[o,s])}return Ot(r,n)}(Rr(e,n),e,n)}catch(t){return Or(t,e,n)}},Ir={version:"0.11.1",render:Ar,renderToString:function(e,t){return yr(e,t).toMarkup()},ParseError:o,__parse:function(e,t){var n=new u(t);return Rr(e,n)},__renderToDomTree:yr,__renderToHTMLTree:function(e,t){var n=new u(t);try{return function(e,t,n){var r=pt(e,At(n)),a=Be.makeSpan(["katex"],[r]);return Ot(a,n)}(Rr(e,n),0,n)}catch(t){return Or(t,e,n)}},__setFontMetrics:function(e,t){G[e]=t},__defineSymbol:$,__defineMacro:mr,__domTree:{Span:x,Anchor:M,SymbolNode:P,SvgNode:k,PathNode:U,LineNode:F}};t.default=Ir}]).default},e.exports=n()});(Ll=Pl)&&Ll.__esModule&&Object.prototype.hasOwnProperty.call(Ll,"default")&&Ll.default;var kl=Object.prototype.hasOwnProperty,Ul=Object.prototype.toString,Fl=Object.defineProperty,Bl=Object.getOwnPropertyDescriptor,Gl=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===Ul.call(e)},Hl=function(e){if(!e||"[object Object]"!==Ul.call(e))return!1;var t,n=kl.call(e,"constructor"),r=e.constructor&&e.constructor.prototype&&kl.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||kl.call(e,t)},Yl=function(e,t){Fl&&"__proto__"===t.name?Fl(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},Vl=function(e,t){if("__proto__"===t){if(!kl.call(e,t))return;if(Bl)return Bl(e,t).value}return e[t]},zl=function e(){var t,n,r,a,i,o,s=arguments[0],l=1,c=arguments.length,d=!1;for("boolean"==typeof s&&(d=s,s=arguments[1]||{},l=2),(null==s||"object"!=typeof s&&"function"!=typeof s)&&(s={});l<c;++l)if(null!=(t=arguments[l]))for(n in t)r=Vl(s,n),s!==(a=Vl(t,n))&&(d&&a&&(Hl(a)||(i=Gl(a)))?(i?(i=!1,o=r&&Gl(r)?r:[]):o=r&&Hl(r)?r:{},Yl(s,{name:n,newValue:e(d,o,a)})):void 0!==a&&Yl(s,{name:n,newValue:a}));return s},ql=function(e){if(e)throw e};var Kl={}.hasOwnProperty,Wl=function(e){if(!e||"object"!=typeof e)return"";if(Kl.call(e,"position")||Kl.call(e,"type"))return $l(e.position);if(Kl.call(e,"start")||Kl.call(e,"end"))return $l(e);if(Kl.call(e,"line")||Kl.call(e,"column"))return Ql(e);return""};function Ql(e){return e&&"object"==typeof e||(e={}),jl(e.line)+":"+jl(e.column)}function $l(e){return e&&"object"==typeof e||(e={}),Ql(e.start)+"-"+Ql(e.end)}function jl(e){return e&&"number"==typeof e?e:1}var Xl=ec;function Zl(){}Zl.prototype=Error.prototype,ec.prototype=new Zl;var Jl=ec.prototype;function ec(e,t,n){var r,a,i;"string"==typeof t&&(n=t,t=null),r=function(e){var t,n=[null,null];"string"==typeof e&&(-1===(t=e.indexOf(":"))?n[1]=e:(n[0]=e.slice(0,t),n[1]=e.slice(t+1)));return n}(n),a=Wl(t)||"1:1",i={start:{line:null,column:null},end:{line:null,column:null}},t&&t.position&&(t=t.position),t&&(t.start?(i=t,t=t.start):i.start=t),e.stack&&(this.stack=e.stack,e=e.message),this.message=e,this.name=a,this.reason=e,this.line=t?t.line:null,this.column=t?t.column:null,this.location=i,this.source=r[0],this.ruleId=r[1]}Jl.file="",Jl.name="",Jl.reason="",Jl.message="",Jl.stack="",Jl.fatal=null,Jl.column=null,Jl.line=null;var tc="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function nc(){throw new Error("setTimeout has not been defined")}function rc(){throw new Error("clearTimeout has not been defined")}var ac=nc,ic=rc;function oc(e){if(ac===setTimeout)return setTimeout(e,0);if((ac===nc||!ac)&&setTimeout)return ac=setTimeout,setTimeout(e,0);try{return ac(e,0)}catch(t){try{return ac.call(null,e,0)}catch(t){return ac.call(this,e,0)}}}"function"==typeof tc.setTimeout&&(ac=setTimeout),"function"==typeof tc.clearTimeout&&(ic=clearTimeout);var sc,lc=[],cc=!1,dc=-1;function _c(){cc&&sc&&(cc=!1,sc.length?lc=sc.concat(lc):dc=-1,lc.length&&uc())}function uc(){if(!cc){var e=oc(_c);cc=!0;for(var t=lc.length;t;){for(sc=lc,lc=[];++dc<t;)sc&&sc[dc].run();dc=-1,t=lc.length}sc=null,cc=!1,function(e){if(ic===clearTimeout)return clearTimeout(e);if((ic===rc||!ic)&&clearTimeout)return ic=clearTimeout,clearTimeout(e);try{ic(e)}catch(t){try{return ic.call(null,e)}catch(t){return ic.call(this,e)}}}(e)}}function mc(e,t){this.fun=e,this.array=t}mc.prototype.run=function(){this.fun.apply(null,this.array)};function pc(){}var gc=pc,Ec=pc,hc=pc,Sc=pc,fc=pc,Tc=pc,bc=pc;var Cc=tc.performance||{},Nc=Cc.now||Cc.mozNow||Cc.msNow||Cc.oNow||Cc.webkitNow||function(){return(new Date).getTime()};var vc=new Date;var Rc={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];lc.push(new mc(e,t)),1!==lc.length||cc||oc(uc)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:gc,addListener:Ec,once:hc,off:Sc,removeListener:fc,removeAllListeners:Tc,emit:bc,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*Nc.call(Cc),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-vc)/1e3}};function Ac(e,t){for(var n=0,r=e.length-1;r>=0;r--){var a=e[r];"."===a?e.splice(r,1):".."===a?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var Oc=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,yc=function(e){return Oc.exec(e).slice(1)};function Ic(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var r=n>=0?arguments[n]:"/";if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return e=Ac(wc(e.split("/"),function(e){return!!e}),!t).join("/"),(t?"/":"")+e||"."}function Dc(e){var t=xc(e),n="/"===Lc(e,-1);return(e=Ac(wc(e.split("/"),function(e){return!!e}),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e}function xc(e){return"/"===e.charAt(0)}var Mc={extname:function(e){return yc(e)[3]},basename:function(e,t){var n=yc(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},dirname:function(e){var t=yc(e),n=t[0],r=t[1];return n||r?(r&&(r=r.substr(0,r.length-1)),n+r):"."},sep:"/",delimiter:":",relative:function(e,t){function n(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=Ic(e).substr(1),t=Ic(t).substr(1);for(var r=n(e.split("/")),a=n(t.split("/")),i=Math.min(r.length,a.length),o=i,s=0;s<i;s++)if(r[s]!==a[s]){o=s;break}var l=[];for(s=o;s<r.length;s++)l.push("..");return(l=l.concat(a.slice(o))).join("/")},join:function(){return Dc(wc(Array.prototype.slice.call(arguments,0),function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},isAbsolute:xc,normalize:Dc,resolve:Ic};function wc(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}var Lc="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)};var Pc=function(e,t){if("string"!=typeof e)return e;if(0===e.length)return e;var n=Mc.basename(e,Mc.extname(e))+t;return Mc.join(Mc.dirname(e),n)},kc=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},Uc=Hc,Fc={}.hasOwnProperty,Bc=Hc.prototype,Gc=["history","path","basename","stem","extname","dirname"];function Hc(e){var t,n,r;if(e){if("string"==typeof e||kc(e))e={contents:e};else if("message"in e&&"messages"in e)return e}else e={};if(!(this instanceof Hc))return new Hc(e);for(this.data={},this.messages=[],this.history=[],this.cwd=Rc.cwd(),n=-1,r=Gc.length;++n<r;)t=Gc[n],Fc.call(e,t)&&(this[t]=e[t]);for(t in e)-1===Gc.indexOf(t)&&(this[t]=e[t])}function Yc(e,t){if(-1!==e.indexOf(Mc.sep))throw new Error("`"+t+"` cannot be a path: did not expect `"+Mc.sep+"`")}function Vc(e,t){if(!e)throw new Error("`"+t+"` cannot be empty")}function zc(e,t){if(!e)throw new Error("Setting `"+t+"` requires `path` to be set too")}Bc.toString=function(e){var t=this.contents||"";return kc(t)?t.toString(e):String(t)},Object.defineProperty(Bc,"path",{get:function(){return this.history[this.history.length-1]},set:function(e){Vc(e,"path"),e!==this.path&&this.history.push(e)}}),Object.defineProperty(Bc,"dirname",{get:function(){return"string"==typeof this.path?Mc.dirname(this.path):void 0},set:function(e){zc(this.path,"dirname"),this.path=Mc.join(e||"",this.basename)}}),Object.defineProperty(Bc,"basename",{get:function(){return"string"==typeof this.path?Mc.basename(this.path):void 0},set:function(e){Vc(e,"basename"),Yc(e,"basename"),this.path=Mc.join(this.dirname||"",e)}}),Object.defineProperty(Bc,"extname",{get:function(){return"string"==typeof this.path?Mc.extname(this.path):void 0},set:function(e){var t=e||"";if(Yc(t,"extname"),zc(this.path,"extname"),t){if("."!==t.charAt(0))throw new Error("`extname` must start with `.`");if(-1!==t.indexOf(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=Pc(this.path,t)}}),Object.defineProperty(Bc,"stem",{get:function(){return"string"==typeof this.path?Mc.basename(this.path,this.extname):void 0},set:function(e){Vc(e,"stem"),Yc(e,"stem"),this.path=Mc.join(this.dirname||"",e+(this.extname||""))}});var qc=Uc,Kc=Uc.prototype;Kc.message=function(e,t,n){var r=this.path,a=new Xl(e,t,n);r&&(a.name=r+":"+a.name,a.file=r);return a.fatal=!1,this.messages.push(a),a},Kc.info=function(){var e=this.message.apply(this,arguments);return e.fatal=null,e},Kc.fail=function(){var e=this.message.apply(this,arguments);throw e.fatal=!0,e};var Wc=[].slice,Qc=function(e,t){var n;return function(){var t,i=Wc.call(arguments,0),o=e.length>i.length;o&&i.push(r);try{t=e.apply(null,i)}catch(e){if(o&&n)throw e;return r(e)}o||(t&&"function"==typeof t.then?t.then(a,r):t instanceof Error?r(t):a(t))};function r(){n||(n=!0,t.apply(null,arguments))}function a(e){r(null,e)}};var $c=Xc;Xc.wrap=Qc;var jc=[].slice;function Xc(){var e=[],t={run:function(){var t=-1,n=jc.call(arguments,0,-1),r=arguments[arguments.length-1];if("function"!=typeof r)throw new Error("Expected function as last argument, not "+r);(function a(i){var o=e[++t];var s=jc.call(arguments,0);var l=s.slice(1);var c=n.length;var d=-1;if(i)return void r(i);for(;++d<c;)null!==l[d]&&void 0!==l[d]||(l[d]=n[d]);n=l;o?Qc(o,a).apply(null,n):r.apply(null,[null].concat(n))}).apply(null,[null].concat(n))},use:function(n){if("function"!=typeof n)throw new Error("Expected `fn` to be a function, not "+n);return e.push(n),t}};return t}var Zc=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.getPrototypeOf({})},Jc=function e(){var t=[];var n=$c();var r={};var a=!1;var i=-1;o.data=function(e,t){if("string"==typeof e)return 2===arguments.length?(od("data",a),r[e]=t,o):td.call(r,e)&&r[e]||null;if(e)return od("data",a),r=e,o;return r};o.freeze=s;o.attachers=t;o.use=function(e){var n;if(od("use",a),null===e||void 0===e);else if("function"==typeof e)c.apply(null,arguments);else{if("object"!=typeof e)throw new Error("Expected usable value, not `"+e+"`");"length"in e?l(e):i(e)}n&&(r.settings=zl(r.settings||{},n));return o;function i(e){l(e.plugins),e.settings&&(n=zl(n||{},e.settings))}function s(e){if("function"==typeof e)c(e);else{if("object"!=typeof e)throw new Error("Expected usable value, not `"+e+"`");"length"in e?c.apply(null,e):i(e)}}function l(e){var t,n;if(null===e||void 0===e);else{if(!("object"==typeof e&&"length"in e))throw new Error("Expected a list of plugins, not `"+e+"`");for(t=e.length,n=-1;++n<t;)s(e[n])}}function c(e,n){var r=function(e){var n,r=t.length,a=-1;for(;++a<r;)if((n=t[a])[0]===e)return n}(e);r?(Zc(r[1])&&Zc(n)&&(n=zl(r[1],n)),r[1]=n):t.push(ed.call(arguments))}};o.parse=function(e){var t,n=qc(e);if(s(),ad("parse",t=o.Parser),rd(t,"parse"))return new t(String(n),n).parse();return t(String(n),n)};o.stringify=function(e,t){var n,r=qc(t);if(s(),id("stringify",n=o.Compiler),sd(e),rd(n,"compile"))return new n(e,r).compile();return n(e,r)};o.run=l;o.runSync=function(e,t){var n,r=!1;return l(e,t,function(e,t){r=!0,ql(e),n=t}),ld("runSync","run",r),n};o.process=c;o.processSync=function(e){var t,n=!1;return s(),ad("processSync",o.Parser),id("processSync",o.Compiler),c(t=qc(e),function(e){n=!0,ql(e)}),ld("processSync","process",n),t};return o;function o(){for(var n=e(),a=t.length,i=-1;++i<a;)n.use.apply(null,t[i]);return n.data(zl(!0,{},r)),n}function s(){var e,r,s,l;if(a)return o;for(;++i<t.length;)e=t[i],r=e[0],s=e[1],l=null,!1!==s&&(!0===s&&(e[1]=void 0),"function"==typeof(l=r.apply(o,e.slice(1)))&&n.use(l));return a=!0,i=1/0,o}function l(e,t,r){if(sd(e),s(),r||"function"!=typeof t||(r=t,t=null),!r)return new Promise(a);function a(a,i){n.run(e,qc(t),function(t,n,o){n=n||e,t?i(t):a?a(n):r(null,n,o)})}a(null,r)}function c(e,t){if(s(),ad("process",o.Parser),id("process",o.Compiler),!t)return new Promise(n);function n(n,r){var a=qc(e);nd.run(o,{file:a},function(e){e?r(e):n?n(a):t(null,a)})}n(null,t)}}().freeze(),ed=[].slice,td={}.hasOwnProperty,nd=$c().use(function(e,t){t.tree=e.parse(t.file)}).use(function(e,t,n){e.run(t.tree,t.file,function(e,r,a){e?n(e):(t.tree=r,t.file=a,n())})}).use(function(e,t){t.file.contents=e.stringify(t.tree,t.file)});function rd(e,t){return"function"==typeof e&&e.prototype&&(function(e){var t;for(t in e)return!0;return!1}(e.prototype)||t in e.prototype)}function ad(e,t){if("function"!=typeof t)throw new Error("Cannot `"+e+"` without `Parser`")}function id(e,t){if("function"!=typeof t)throw new Error("Cannot `"+e+"` without `Compiler`")}function od(e,t){if(t)throw new Error("Cannot invoke `"+e+"` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.")}function sd(e){if(!e||"string"!=typeof e.type)throw new Error("Expected node, got `"+e+"`")}function ld(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}const cd={reason:"Unexpected metadata element after head",description:"Unexpected element after head. Expected the element before `</head>`",url:!1},dd={reason:"Unexpected abruptly closed empty comment",description:"Unexpected `>` or `->`. Expected `--\x3e` to close comments"},_d={reason:"Unexpected abruptly closed public identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the public identifier"},ud={reason:"Unexpected abruptly closed system identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the identifier identifier"},md={reason:"Unexpected non-digit at start of numeric character reference",description:"Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references"},pd={reason:"Unexpected CDATA section in HTML",description:"Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead"},gd={reason:"Unexpected too big numeric character reference",description:"Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)"},Ed={reason:"Unexpected closing tag with open child elements",description:"Unexpectedly closing tag. Expected other tags to be closed first",url:!1},hd={reason:"Unexpected control character",description:"Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace"},Sd={reason:"Unexpected control character reference",description:"Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace"},fd={reason:"Disallowed content inside `<noscript>` in `<head>`",description:"Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`",url:!1},Td={reason:"Unexpected duplicate attribute",description:"Unexpectedly double attribute. Expected attributes to occur only once"},bd={reason:"Unexpected attribute on closing tag",description:"Unexpected attribute. Expected `>` instead"},Cd={reason:"Unexpected slash at end of closing tag",description:"Unexpected `%c-1`. Expected `>` instead"},Nd={reason:"Unexpected unopened end tag",description:"Unexpected end tag. Expected no end tag or another end tag",url:!1},vd={reason:"Unexpected end of file",description:"Unexpected end of file. Expected tag name instead"},Rd={reason:"Unexpected end of file in CDATA",description:"Unexpected end of file. Expected `]]>` to close the CDATA"},Ad={reason:"Unexpected end of file in comment",description:"Unexpected end of file. Expected `--\x3e` to close the comment"},Od={reason:"Unexpected end of file in doctype",description:"Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)"},yd={reason:"Unexpected end of file in element that can only contain text",description:"Unexpected end of file. Expected text or a closing tag",url:!1},Id={reason:"Unexpected end of file in comment inside script",description:"Unexpected end of file. Expected `--\x3e` to close the comment"},Dd={reason:"Unexpected end of file in tag",description:"Unexpected end of file. Expected `>` to close the tag"},xd={reason:"Incorrectly closed comment",description:"Unexpected `%c-1`. Expected `--\x3e` to close the comment"},Md={reason:"Incorrectly opened comment",description:"Unexpected `%c`. Expected `\x3c!--` to open the comment"},wd={reason:"Invalid sequence after doctype name",description:"Unexpected sequence at `%c`. Expected `public` or `system`"},Ld={reason:"Invalid first character in tag name",description:"Unexpected `%c`. Expected an ASCII letter instead"},Pd={reason:"Misplaced doctype",description:"Unexpected doctype. Expected doctype before head",url:!1},kd={reason:"Misplaced `<head>` start tag",description:"Unexpected start tag `<head>`. Expected `<head>` directly after doctype",url:!1},Ud={reason:"Missing attribute value",description:"Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead"},Fd={reason:"Missing doctype before other content",description:"Expected a `<!doctype html>` before anything else",url:!1},Bd={reason:"Missing doctype name",description:"Unexpected doctype end at `%c`. Expected `html` instead"},Gd={reason:"Missing public identifier in doctype",description:"Unexpected `%c`. Expected identifier for `public` instead"},Hd={reason:"Missing system identifier in doctype",description:'Unexpected `%c`. Expected identifier for `system` instead (suggested: `"about:legacy-compat"`)'},Yd={reason:"Missing name in end tag",description:"Unexpected `%c`. Expected an ASCII letter instead"},Vd={reason:"Missing quote before public identifier in doctype",description:"Unexpected `%c`. Expected `\"` or `'` instead"},zd={reason:"Missing quote before system identifier in doctype",description:"Unexpected `%c`. Expected `\"` or `'` instead"},qd={reason:"Missing semicolon after character reference",description:"Unexpected `%c`. Expected `;` instead"},Kd={reason:"Missing whitespace after public identifier in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},Wd={reason:"Missing whitespace after system identifier in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},Qd={reason:"Missing whitespace before doctype name",description:"Unexpected `%c`. Expected ASCII whitespace instead"},$d={reason:"Missing whitespace between attributes",description:"Unexpected `%c`. Expected ASCII whitespace instead"},jd={reason:"Missing whitespace between public and system identifiers in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},Xd={reason:"Unexpected nested comment",description:"Unexpected `\x3c!--`. Expected `--\x3e`"},Zd={reason:"Unexpected nested `<noscript>` in `<head>`",description:"Unexpected `<noscript>`. Expected a closing tag or a meta element",url:!1},Jd={reason:"Unexpected non-conforming doctype declaration",description:'Expected `<!doctype html>` or `<!doctype html system "about:legacy-compat">`',url:!1},e_={reason:"Unexpected trailing slash on start tag of non-void element",description:"Unexpected `/`. Expected `>` instead"},t_={reason:"Unexpected noncharacter code point referenced by character reference",description:"Unexpected code point. Do not use noncharacters in HTML"},n_={reason:"Unexpected noncharacter character",description:"Unexpected code point `%x`. Do not use noncharacters in HTML"},r_={reason:"Unexpected NULL character referenced by character reference",description:"Unexpected code point. Do not use NULL characters in HTML"},a_={reason:"Unexpected end of file",description:"Unexpected end of file. Expected closing tag instead",url:!1},i_={reason:"Unexpected surrogate character referenced by character reference",description:"Unexpected code point. Do not use lone surrogate characters in HTML"},o_={reason:"Unexpected surrogate character",description:"Unexpected code point `%x`. Do not use lone surrogate characters in HTML"},s_={reason:"Invalid character after system identifier in doctype",description:"Unexpected character at `%c`. Expected `>`"},l_={reason:"Unexpected character in attribute name",description:"Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter"},c_={reason:"Unexpected character in unquoted attribute value",description:"Unexpected `%c`. Quote the attribute value to include it"},d_={reason:"Unexpected equals sign before attribute name ",description:"Unexpected `%c`. Add an attribute name before it"},__={reason:"Unexpected NULL character",description:"Unexpected code point `%x`. Do not use NULL characters in HTML"},u_={reason:"Unexpected question mark instead of tag name",description:"Unexpected `%c`. Expected an ASCII letter instead"},m_={reason:"Unexpected slash in tag",description:"Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value"},p_={reason:"Unexpected unknown named character reference",description:"Unexpected character reference. Expected known named character references"};var g_={abandonedHeadElementChild:cd,abruptClosingOfEmptyComment:dd,abruptDoctypePublicIdentifier:_d,abruptDoctypeSystemIdentifier:ud,absenceOfDigitsInNumericCharacterReference:md,cdataInHtmlContent:pd,characterReferenceOutsideUnicodeRange:gd,closingOfElementWithOpenChildElements:Ed,controlCharacterInInputStream:hd,controlCharacterReference:Sd,disallowedContentInNoscriptInHead:fd,duplicateAttribute:Td,endTagWithAttributes:bd,endTagWithTrailingSolidus:Cd,endTagWithoutMatchingOpenElement:Nd,eofBeforeTagName:vd,eofInCdata:Rd,eofInComment:Ad,eofInDoctype:Od,eofInElementThatCanContainOnlyText:yd,eofInScriptHtmlCommentLikeText:Id,eofInTag:Dd,incorrectlyClosedComment:xd,incorrectlyOpenedComment:Md,invalidCharacterSequenceAfterDoctypeName:wd,invalidFirstCharacterOfTagName:Ld,misplacedDoctype:Pd,misplacedStartTagForHeadElement:kd,missingAttributeValue:Ud,missingDoctype:Fd,missingDoctypeName:Bd,missingDoctypePublicIdentifier:Gd,missingDoctypeSystemIdentifier:Hd,missingEndTagName:Yd,missingQuoteBeforeDoctypePublicIdentifier:Vd,missingQuoteBeforeDoctypeSystemIdentifier:zd,missingSemicolonAfterCharacterReference:qd,missingWhitespaceAfterDoctypePublicKeyword:Kd,missingWhitespaceAfterDoctypeSystemKeyword:Wd,missingWhitespaceBeforeDoctypeName:Qd,missingWhitespaceBetweenAttributes:$d,missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:jd,nestedComment:Xd,nestedNoscriptInHead:Zd,nonConformingDoctype:Jd,nonVoidHtmlElementStartTagWithTrailingSolidus:e_,noncharacterCharacterReference:t_,noncharacterInInputStream:n_,nullCharacterReference:r_,openElementsLeftAfterEof:a_,surrogateCharacterReference:i_,surrogateInInputStream:o_,unexpectedCharacterAfterDoctypeSystemIdentifier:s_,unexpectedCharacterInAttributeName:l_,unexpectedCharacterInUnquotedAttributeValue:c_,unexpectedEqualsSignBeforeAttributeName:d_,unexpectedNullCharacter:__,unexpectedQuestionMarkInsteadOfTagName:u_,unexpectedSolidusInTag:m_,unknownNamedCharacterReference:p_},E_=C(Object.freeze({abandonedHeadElementChild:cd,abruptClosingOfEmptyComment:dd,abruptDoctypePublicIdentifier:_d,abruptDoctypeSystemIdentifier:ud,absenceOfDigitsInNumericCharacterReference:md,cdataInHtmlContent:pd,characterReferenceOutsideUnicodeRange:gd,closingOfElementWithOpenChildElements:Ed,controlCharacterInInputStream:hd,controlCharacterReference:Sd,disallowedContentInNoscriptInHead:fd,duplicateAttribute:Td,endTagWithAttributes:bd,endTagWithTrailingSolidus:Cd,endTagWithoutMatchingOpenElement:Nd,eofBeforeTagName:vd,eofInCdata:Rd,eofInComment:Ad,eofInDoctype:Od,eofInElementThatCanContainOnlyText:yd,eofInScriptHtmlCommentLikeText:Id,eofInTag:Dd,incorrectlyClosedComment:xd,incorrectlyOpenedComment:Md,invalidCharacterSequenceAfterDoctypeName:wd,invalidFirstCharacterOfTagName:Ld,misplacedDoctype:Pd,misplacedStartTagForHeadElement:kd,missingAttributeValue:Ud,missingDoctype:Fd,missingDoctypeName:Bd,missingDoctypePublicIdentifier:Gd,missingDoctypeSystemIdentifier:Hd,missingEndTagName:Yd,missingQuoteBeforeDoctypePublicIdentifier:Vd,missingQuoteBeforeDoctypeSystemIdentifier:zd,missingSemicolonAfterCharacterReference:qd,missingWhitespaceAfterDoctypePublicKeyword:Kd,missingWhitespaceAfterDoctypeSystemKeyword:Wd,missingWhitespaceBeforeDoctypeName:Qd,missingWhitespaceBetweenAttributes:$d,missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:jd,nestedComment:Xd,nestedNoscriptInHead:Zd,nonConformingDoctype:Jd,nonVoidHtmlElementStartTagWithTrailingSolidus:e_,noncharacterCharacterReference:t_,noncharacterInInputStream:n_,nullCharacterReference:r_,openElementsLeftAfterEof:a_,surrogateCharacterReference:i_,surrogateInInputStream:o_,unexpectedCharacterAfterDoctypeSystemIdentifier:s_,unexpectedCharacterInAttributeName:l_,unexpectedCharacterInUnquotedAttributeValue:c_,unexpectedEqualsSignBeforeAttributeName:d_,unexpectedNullCharacter:__,unexpectedQuestionMarkInsteadOfTagName:u_,unexpectedSolidusInTag:m_,unknownNamedCharacterReference:p_,default:g_})),h_="https://html.spec.whatwg.org/multipage/parsing.html#parse-error-",S_={2:!0,1:!1,0:null},f_=function(t){var n=e(t,this.data("settings")),r=n.position;r="boolean"!=typeof r||r,this.Parser=function(e,t){var a=n.fragment?"parseFragment":"parse",i=n.emitParseErrors?function(r){var a,i,o=r.code,s=(m=o,m.replace(/-[a-z]/g,T_)),l=n[s],c=void 0===l||null===l||l,d="number"==typeof c?c:c?1:0,_={line:r.startLine,column:r.startCol,offset:r.startOffset},u={line:r.endLine,column:r.endCol,offset:r.endOffset};var m;d&&(a=E_[s]||{reason:"",description:""},(i=t.message(p(a.reason),{start:_,end:u})).source="parse-error",i.ruleId=o,i.fatal=S_[d],i.note=p(a.description),i.url=!1===a.url?null:h_+o);function p(e){return e.replace(/%c(?:-(\d+))?/g,g).replace(/%x/g,E)}function g(t,n){var a=n?-parseInt(n,10):0,i=e.charAt(r.startOffset+a);return"`"===i?"` ` `":i}function E(){var t=e.charCodeAt(r.startOffset).toString(16).toUpperCase();return"0x"+t}}:null,o=new Qa({sourceCodeLocationInfo:r,onParseError:i,scriptingEnabled:!1});return Ts(o[a](e),{space:n.space,file:t,verbose:n.verbose})}};function T_(e){return e.charAt(1).toUpperCase()}var b_=function(e,t){var n;if(null!==t&&void 0!==t&&"string"!=typeof t&&("object"!=typeof t||0===t.length))throw new Error("Expected `string` or `Array.<string>` for `tagNames`, not `"+t+"`");if(!e||"object"!=typeof e||"element"!==e.type||"string"!=typeof e.tagName)return!1;if(null===t||void 0===t)return!0;if(n=e.tagName,"string"==typeof t)return n===t;return-1!==t.indexOf(n)};var C_=function(e,t,n){var r,a,i,o=s(n);if(!e||!e.type||!e.children)throw new Error("Expected parent node");r=e.children,i=r.length,t&&t.type&&(t=r.indexOf(t));if(isNaN(t)||t<0||t===1/0)throw new Error("Expected positive finite index or child node");for(;++t<i;)if(a=r[t],o(a,t,e))return a;return null};var N_=function(e){var t,n,r,a,i,o=e.children||[],s=o.length,l=Z_(e),c=Q_(e,{}),d=-1;if("text"===e.type||"comment"===e.type)return q_(e,{whiteSpace:c,breakBefore:!0,breakAfter:!0});t=[];for(;++d<s;)n=z_(o[d],d,e,{whiteSpace:c,breakBefore:0===d&&l,breakAfter:d===s-1?l:b_(o[d+1],"br")}),t=t.concat(n);d=-1,s=t.length,r=[];for(;++d<s;)"number"==typeof(a=t[d])?void 0!==i&&a>i&&(i=a):""!==a&&(i&&r.push(H(Y_,i)),i=0,r.push(a));return r.join("")},v_=Math.min,R_=Math.max,A_=9,O_=32,y_=8203,I_=1564,D_=8206,x_=8207,M_=8234,w_=8235,L_=8236,P_=8237,k_=8238,U_=8294,F_=8295,B_=8296,G_=8297,H_="\t",Y_="\n",V_=" ";function z_(e,t,n,r){return"element"===e.type?function(e,t,n,r){var a,i,o,s=Q_(e,r),l=e.children||[],c=l.length,d=-1,_=[];if(function(e){var t=e.properties||{};return b_(e,["datalist","head","noembed","noframes","rp","script","style","template","title","noscript"])||t.hidden||b_(e,"dialog")&&!t.open}(e))return _;b_(e,"br")?o=Y_:X_(e)&&C_(n,e,X_)?o=Y_:b_(e,"p")?(i=2,o=2):Z_(e)&&(i=1,o=1);for(;++d<c;)a=z_(l[d],d,e,{whiteSpace:s,breakBefore:0===d&&i,breakAfter:d===c-1?o:b_(l[d+1],"br")}),_=_.concat(a);j_(e)&&C_(n,e,j_)&&_.push(H_);i&&_.unshift(i);o&&_.push(o);return _}(e,0,n,r):"text"===e.type?["normal"===r.whiteSpace?q_(e,r):function(e){return String(e.value)}(e)]:[]}function q_(e,t){var n,r,a,i,o,s=t.breakBefore,l=t.breakAfter,c=String(e.value),d=-1,_=c.length,u=[],m=[];for(n=0,r=-1===(r=c.indexOf(Y_))?c.length:r;-1!==r&&(a=W_(a=K_(a=c.slice(n,r)),s,l),u.push(a),r!==c.length);)n=r+1,r=-1===(r=c.indexOf(Y_,n))?c.length:r;for(d=-1,_=u.length,o="";++d<_;)a=u[d],i=u[d+1]||"",a.charCodeAt(a.length-1)!==y_&&i.charCodeAt(0)!==y_?a&&(o&&m.push(o),m.push(a),o=V_):(m.push(a),o="");return m.join("")}function K_(e){for(var t=-1,n=e.length,r="";++t<n;)$_(e.charCodeAt(t))||(r+=e.charAt(t));return r}function W_(e,t,n){for(var r,a,i=0,o=e.length,s=[];i<=o&&((a=e.charCodeAt(i))===O_||a===A_);)i++;for(0===i||t||s.push(""),r=l(i-1);i<o;){for(r=-1===r?o:r,s.push(e.slice(i,r)),i=r;i<=o&&((a=e.charCodeAt(i))===O_||a===A_);)i++;i!==o||i===r||n||s.push(""),r=l(i)}return s.join(" ");function l(t){var n=e.indexOf(V_,t+1),r=e.indexOf(H_,t+1);return(-1===n||-1===r?R_:v_)(n,r)}}function Q_(e,t){var n=e.properties||{},r=t.whiteSpace||"normal";switch(e.tagName){case"listing":case"plaintext":case"xmp":return"pre";case"nobr":return"nowrap";case"pre":return n.wrap?"pre-wrap":"pre";case"td":case"th":return n.noWrap?"nowrap":r;case"textarea":return"pre-wrap";default:return r}}function $_(e){switch(e){case I_:case D_:case x_:case M_:case w_:case L_:case P_:case k_:case U_:case F_:case B_:case G_:return!0;default:return!1}}function j_(e){return b_(e,["th","td"])}function X_(e){return b_(e,["tr"])}function Z_(e){return b_(e,["caption","html","body","address","blockquote","center","dialog","div","figure","figcaption","footer","form,","header","hr","legend","listing","main","p","plaintext","pre","xmp","article","aside","h1","h2","h3","h4","h5","h6","hgroup","nav","section","dir","dd","dl","dt","menu","ol","ul"])}const J_=Pl.renderToString;var eu=function(e){const t=(e||{}).throwOnError||!1;return function(n,r){Il(n,"element",function(n){const a=n.properties.className||[],i=a.includes("math-inline"),o=a.includes("math-display");if(!i&&!o)return;const s=N_(n);let l;try{l=J_(s,tu({},e,{displayMode:o,throwOnError:!0}))}catch(a){const i=t?"fail":"message",c=[ru,a.name.toLowerCase()].join(":");r[i](a.message,n.position,c),l=J_(s,tu({},e,{displayMode:o,throwOnError:!1,strict:"ignore"}))}n.children=nu.parse(l).children})}};const tu=Object.assign,nu=Jc().use(f_,{fragment:!0,position:!1}),ru="rehype-katex";var au=function(e){var t;if(e&&"object"==typeof e&&"text"===e.type)t=e.value||"";else{if("string"!=typeof e)return!1;t=e}return""===t.replace(iu,"")},iu=/[ \t\n\f\r]/g;function ou(e){return function(t,n,r){var a,i=t&&t.children;if(n+=e,a=i&&i[n],!r)for(;a&&au(a);)a=i[n+=e];return a}}var su={before:ou(-1),after:ou(1)},lu=su.after,cu=function(e,t){return lu(e,-1,t)};var du=function(e,t){return e&&e.children&&e.children.indexOf(t)};var _u=function(e){return uu(e)&&au(e.value.charAt(0))},uu=s("text");var mu=function(e){return function(t,n,r){var a=t.tagName,i=!!pu.call(e,a)&&e[a];return!!i&&i(t,n,r)}},pu={}.hasOwnProperty;var gu=su.after,Eu=s("comment"),hu="optgroup",Su=["option"].concat(hu),fu=["dt","dd"],Tu="li",bu=["menuitem","hr","menu"],Cu=["rp","rt"],Nu=["tbody","tfoot"],vu="tr",Ru=["td","th"],Au=["a","audio","del","ins","map","noscript","video"],Ou=["address","article","aside","blockquote","details","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","menu","nav","ol","p","pre","section","table","ul"],yu=mu({html:function(e,t,n){var r=gu(n,t);return!r||!Eu(r)},head:Iu,body:function(e,t,n){var r=gu(n,t);return!r||!Eu(r)},p:function(e,t,n){var r=gu(n,t);return r?b_(r,Ou):!n||!b_(n,Au)},li:function(e,t,n){var r=gu(n,t);return!r||b_(r,Tu)},dt:function(e,t,n){var r=gu(n,t);return r&&b_(r,fu)},dd:function(e,t,n){var r=gu(n,t);return!r||b_(r,fu)},rt:Du,rp:Du,optgroup:function(e,t,n){var r=gu(n,t);return!r||b_(r,hu)},option:function(e,t,n){var r=gu(n,t);return!r||b_(r,Su)},menuitem:function(e,t,n){var r=gu(n,t);return!r||b_(r,bu)},colgroup:Iu,caption:Iu,thead:function(e,t,n){var r=gu(n,t);return r&&b_(r,Nu)},tbody:function(e,t,n){var r=gu(n,t);return!r||b_(r,Nu)},tfoot:function(e,t,n){return!gu(n,t)},tr:function(e,t,n){var r=gu(n,t);return!r||b_(r,vu)},td:xu,th:xu});function Iu(e,t,n){var r=gu(n,t,!0);return!r||!Eu(r)&&!_u(r)}function Du(e,t,n){var r=gu(n,t);return!r||b_(r,Cu)}function xu(e,t,n){var r=gu(n,t);return!r||b_(r,Ru)}var Mu=su.before,wu={}.hasOwnProperty,Lu=s("comment"),Pu=["title","base"],ku=["meta","link","script","style","template"],Uu=["thead","tbody"],Fu="tr";var Bu={opening:mu({html:function(e){var t=cu(e);return!t||!Lu(t)},head:function(e){var t,n,r=e.children,a=r.length,i={},o=-1;for(;++o<a;)if(t=r[o],n=t.tagName,b_(t,Pu)){if(wu.call(i,n))return!1;i[n]=!0}return Boolean(a)},body:function(e){var t=cu(e,!0);return!t||!Lu(t)&&!_u(t)&&!b_(t,ku)},colgroup:function(e,t,n){var r=Mu(n,t),a=cu(e,!0);if(b_(r,"colgroup")&&yu(r,du(n,r),n))return!1;return a&&b_(a,"col")},tbody:function(e,t,n){var r=Mu(n,t),a=cu(e);if(b_(r,Uu)&&yu(r,du(n,r),n))return!1;return a&&b_(a,Fu)}}),closing:yu},Gu=function(e,t){var n=t&&t.children,r=n&&n.length,a=-1,i=[];for(;++a<r;)i[a]=Mm(e,n[a],a,t);return i.join("")};var Hu={nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",fnof:"ƒ",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€"},Yu=Object.freeze({nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",fnof:"ƒ",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€",default:Hu});var Vu={AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ"},zu=Object.freeze({AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ",default:Vu}),qu=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57};var Ku=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57};var Wu=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90};var Qu=function(e){return Wu(e)||Ku(e)};var $u=Object.freeze({default:["cent","copy","divide","gt","lt","not","para","times"]}),ju=C(Yu),Xu=C(zu),Zu=C($u),Ju=Ku,em=om;om.escape=function(e){return om(e,{escapeOnly:!0,useNamedReferences:!0})};var tm={}.hasOwnProperty,nm=function(){var e,t={};for(e in ju)t[ju[e]]=e;return t}(),rm=lm(['"',"'","<",">","&","`"]),am=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,im=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;function om(e,t){var n=t||{},r=n.subset,a=r?lm(r):rm,i=n.escapeOnly,o=n.omitOptionalSemicolons;return e=e.replace(a,s),r||i?e:e.replace(am,function(e,t,n){return sm(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)-56320+65536,n.charAt(t+2),o)}).replace(im,s);function s(e,t,r){return function(e,t,n){var r,a,i,o,s=n.useShortestReferences,l=n.omitOptionalSemicolons;(s||n.useNamedReferences)&&tm.call(nm,e)&&(r=function(e,t,n,r){var a="&"+e;if(n&&tm.call(Xu,e)&&-1===Zu.indexOf(e)&&(!r||t&&"="!==t&&!Qu(t)))return a;return a+";"}(nm[e],t,l,n.attribute));!s&&r||(a=e.charCodeAt(0),i=sm(a,t,l),s&&(o=function(e,t,n){var r="&#"+String(e);return n&&t&&!Ju(t)?r:r+";"}(a,t,l)).length<i.length&&(i=o));if(r&&(!s||r.length<i.length))return r;return i}(e,r.charAt(t+1),n)}}function sm(e,t,n){var r="&#x"+e.toString(16).toUpperCase();return n&&t&&!qu(t)?r:r+";"}function lm(e){return new RegExp("["+e.join("")+"]","g")}var cm=function(t,n,r,a){var i=n.value;return function(e){return e&&("script"===e.tagName||"style"===e.tagName)}(a)?i:em(i,e(t.entities,{subset:["<","&"]}))};var dm=[" ","\t","\n","\r","\f"],_m=dm.concat("&","/",">","="),um=dm.concat("&",">"),mm=um.concat("\0",'"',"'","<","=","`"),pm=["&","'"],gm=["&",'"'],Em={name:[[_m,_m.concat('"',"'","`")],[_m.concat("\0",'"',"'","<"),_m.concat("\0",'"',"'","<","`")]],unquoted:[[um,mm],[mm,mm]],single:[[pm,pm.concat('"',"`")],[pm.concat("\0"),pm.concat("\0",'"',"`")]],double:[[gm,gm.concat("'","`")],[gm.concat("\0"),gm.concat("\0","'","`")]]},hm=ts.stringify,Sm=ss.stringify,fm=function(e,t,n,r){var a,i,o,s,l,c,d=e.schema,_=t.tagName,u="",m=t;"html"===d.space&&"svg"===_&&(e.schema=Do);l=function(e,t){var n,r,a,i,o,s,l=[];for(n in t)null!=(r=t[n])&&(a=Om(e,n,r))&&l.push(a);for(i=l.length,o=-1;++o<i;)a=l[o],s=null,e.tight&&(s=a.charAt(a.length-1)),o!==i-1&&s!==bm&&s!==Cm&&(l[o]=a+Tm);return l.join("")}(e,t.properties),"svg"===e.schema.space?(o=!1,i=!0,a=e.closeEmpty):(o=e.omit,i=e.close,a=-1!==e.voids.indexOf(_.toLowerCase()),"template"===_&&(m=t.content));s=Gu(e,m),a=!s&&a,!l&&o&&o.opening(t,n,r)||(u=vm+_+(l?Tm+l:""),a&&i&&(c=l.charAt(l.length-1),(!e.tightClose||c===Am||"svg"===e.schema.space&&c&&c!==bm&&c!==Cm)&&(u+=Tm),u+=Am),u+=Rm);u+=s,a||o&&o.closing(t,n,r)||(u+=vm+Am+_+Rm);return e.schema=d,u},Tm=" ",bm='"',Cm="'",Nm="=",vm="<",Rm=">",Am="/";function Om(t,n,r){var a=t.schema,i=Mo(a,n),o=i.attribute;return!i.overloadedBoolean||r!==o&&""!==r?(i.boolean||i.overloadedBoolean&&"string"!=typeof r)&&(r=Boolean(r)):r=!0,null==r||!1===r||"number"==typeof r&&isNaN(r)?"":(o=function(t,n){var r="html"===t.schema.space?t.valid:1,a=Em.name[r][t.safe];return em(n,e(t.entities,{subset:a}))}(t,o),!0===r?o:o+function(t,n,r,a){var i,o,s=t.entities,l=t.quote,c=t.alternative;"object"==typeof r&&"length"in r&&(r=(a.commaSeparated?Sm:hm)(r,{padLeft:!t.tightLists}));!(r=String(r))&&t.collapseEmpty||(i=r,t.unquoted&&(o=Em.unquoted[t.valid][t.safe],i=em(r,e(s,{subset:o,attribute:!0}))),t.unquoted&&i===r||(c&&Ss(r,l)>Ss(r,c)&&(l=c),o=(o=l===Cm?Em.single:Em.double)["html"===t.schema.space?t.valid:1][t.safe],r=em(r,e(s,{subset:o,attribute:!0})),r=l+r+l),r=r?Nm+r:r);return r}(t,0,r,i))}var ym=function(e,t){var n=e.tightDoctype?"":" ",r=t.name,a=t.public,i=t.system,o=["<!doctype"];r&&(o.push(n,r),null!=a?o.push(" public",n,Im(a)):null!=i&&o.push(" system"),null!=i&&o.push(n,Im(i)));return o.join("")+">"};function Im(e){var t=-1===e.indexOf('"')?'"':"'";return t+e+t}var Dm=function(e,t){return"\x3c!--"+t.value+"--\x3e"};var xm=function(e,t){return e.dangerous?t.value:cm(e,t)};var Mm=function(e,t,n,r){var a=t&&t.type;if(!a)throw new Error("Expected node, not `"+t+"`");if(!wm.call(Lm,a))throw new Error("Cannot compile unknown node `"+a+"`");return Lm[a](e,t,n,r)},wm={}.hasOwnProperty,Lm={};Lm.root=Gu,Lm.text=cm,Lm.element=fm,Lm.doctype=ym,Lm.comment=Dm,Lm.raw=xm;var Pm=function(e,t){var n=t||{},r=n.quote||km,a=r===km?Um:km,i=n.quoteSmart;if(r!==km&&r!==Um)throw new Error("Invalid quote `"+r+"`, expected `"+Um+"` or `"+km+"`");return Mm({valid:n.allowParseErrors?0:1,safe:n.allowDangerousCharacters?0:1,schema:"svg"===n.space?Do:vo,omit:n.omitOptionalTags&&Bu,quote:r,alternative:i?a:null,unquoted:Boolean(n.preferUnquoted),tight:n.tightAttributes,tightDoctype:Boolean(n.tightDoctype),tightLists:n.tightCommaSeparatedLists,tightClose:n.tightSelfClosing,collapseEmpty:n.collapseEmptyAttributes,dangerous:n.allowDangerousHTML,voids:n.voids||sl.concat(),entities:n.entities||{},close:n.closeSelfClosing,closeEmpty:n.closeEmptyElements},e)},km='"',Um="'";var Fm=Pm,Bm=function(t){var n=e(t,this.data("settings"));this.Compiler=function(e){return Fm(e,n)}};var Gm=b(function(e){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}),Hm=function(t){var n,r,a;for(r in Gm(o,t),Gm(i,o),n=o.prototype)(a=n[r])&&"object"==typeof a&&(n[r]="concat"in a?a.concat():e(a));return o;function i(e){return t.apply(this,e)}function o(){return this instanceof o?t.apply(this,arguments):new i(arguments)}};var Ym=function(e,t,n){return function(){var r=n||this,a=r[e];return r[e]=!t,function(){r[e]=a}}};var Vm=function(e){var t=function(e){var t=[],n=e.indexOf("\n");for(;-1!==n;)t.push(n+1),n=e.indexOf("\n",n+1);return t.push(e.length+1),t}(String(e));return{toPosition:function(e){return function(t){var n=-1,r=e.length;if(t<0)return{};for(;++n<r;)if(e[n]>t)return{line:n+1,column:t-(e[n-1]||0)+1,offset:t};return{}}}(t),toOffset:function(e){return function(t){var n=t&&t.line,r=t&&t.column;if(!isNaN(n)&&!isNaN(r)&&n-1 in e)return(e[n-2]||0)+r-1||0;return-1}}(t)}};var zm=function(e,t){return function(n){var r,a=0,i=n.indexOf(qm),o=e[t],s=[];for(;-1!==i;)s.push(n.slice(a,i)),a=i+1,(r=n.charAt(a))&&-1!==o.indexOf(r)||s.push(qm),i=n.indexOf(qm,a+1);return s.push(n.slice(a)),s.join("")}},qm="\\";var Km,Wm=59,Qm=function(e){var t,n="&"+e+";";if((Km=Km||document.createElement("i")).innerHTML=n,(t=Km.textContent).charCodeAt(t.length-1)===Wm&&"semi"!==e)return!1;return t!==n&&t};var $m=C(Object.freeze({default:{0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"}})),jm=function(e,t){var n,r,a={};t||(t={});for(r in ep)n=t[r],a[r]=null===n||void 0===n?ep[r]:n;(a.position.indent||a.position.start)&&(a.indent=a.position.indent||[],a.position=a.position.start);return function(e,t){var n,r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b=t.additional,C=t.nonTerminated,N=t.text,v=t.reference,R=t.warning,A=t.textContext,O=t.referenceContext,y=t.warningContext,I=t.position,D=t.indent||[],x=e.length,M=0,w=-1,L=I.column||1,P=I.line||1,k="",U=[];"string"==typeof b&&(b=b.charCodeAt(0));h=B(),c=R?function(e,t){var n=B();n.column+=t,n.offset+=t,R.call(y,Rp[e],n,e)}:Jm,M--,x++;for(;++M<x;)if(o===np&&(L=D[w]||1),(o=e.charCodeAt(M))===ip){if((l=e.charCodeAt(M+1))===tp||l===np||l===rp||l===ap||l===ip||l===sp||l!=l||b&&l===b){k+=Zm(o),L++;continue}for(m=p=M+1,T=p,l===cp?(T=++m,(l=e.charCodeAt(T))===dp||l===_p?(g=pp,T=++m):g=gp):g=mp,n="",u="",i="",E=hp[g],T--;++T<x&&(l=e.charCodeAt(T),E(l));)i+=Zm(l),g===mp&&Xm.call(Xu,i)&&(n=i,u=Xu[i]);(a=e.charCodeAt(T)===op)&&(T++,(r=g===mp&&Qm(i))&&(n=i,u=r)),f=1+T-p,(a||C)&&(i?g===mp?(a&&!u?c(Cp,1):(n!==i&&(T=m+n.length,f=1+T-m,a=!1),a||(d=n?Sp:Tp,t.attribute?(l=e.charCodeAt(T))===lp?(c(d,f),u=null):Qu(l)?u=null:c(d,f):c(d,f))),s=u):(a||c(fp,f),s=parseInt(i,Ep[g]),(F=s)>=55296&&F<=57343||F>1114111?(c(vp,f),s=Zm(up)):s in $m?(c(Np,f),s=$m[s]):(_="",Ap(s)&&c(Np,f),s>65535&&(_+=Zm((s-=65536)>>>10|55296),s=56320|1023&s),s=_+Zm(s))):g!==mp&&c(bp,f)),s?(G(),h=B(),M=T-1,L+=T-p+1,U.push(s),(S=B()).offset++,v&&v.call(O,s,{start:h,end:S},e.slice(p-1,T)),h=S):(i=e.slice(p-1,T),k+=i,L+=i.length,M=T-1)}else 10===o&&(P++,w++,L=0),o==o?(k+=Zm(o),L++):G();var F;return U.join("");function B(){return{line:P,column:L,offset:M+(I.offset||0)}}function G(){k&&(U.push(k),N&&N.call(A,k,{start:h,end:B()}),k="")}}(e,a)},Xm={}.hasOwnProperty,Zm=String.fromCharCode,Jm=Function.prototype,ep={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},tp=9,np=10,rp=12,ap=32,ip=38,op=59,sp=60,lp=61,cp=35,dp=88,_p=120,up=65533,mp="named",pp="hexadecimal",gp="decimal",Ep={};Ep[pp]=16,Ep[gp]=10;var hp={};hp[mp]=Qu,hp[gp]=Ku,hp[pp]=qu;var Sp=1,fp=2,Tp=3,bp=4,Cp=5,Np=6,vp=7,Rp={};function Ap(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||65535==(65535&e)||65534==(65535&e)}Rp[Sp]="Named character references must be terminated by a semicolon",Rp[fp]="Numeric character references must be terminated by a semicolon",Rp[Tp]="Named character references cannot be empty",Rp[bp]="Numeric character references cannot be empty",Rp[Cp]="Named character references must be known",Rp[Np]="Numeric character references cannot be disallowed",Rp[vp]="Numeric character references cannot be outside the permissible Unicode range";var Op=function(t){return r.raw=function(t,r,i){return jm(t,e(i,{position:n(r),warning:a}))},r;function n(e){for(var n=t.offset,r=e.line,a=[];++r&&r in n;)a.push((n[r]||0)+1);return{start:e,indent:a}}function r(e,r,i){jm(e,{position:n(r),warning:a,text:i,reference:i,textContext:t,referenceContext:t})}function a(e,n,r){3!==r&&t.file.message(e,n)}};var yp=function(e){return function(t,n){var r,a,i,o,s,l,c=this,d=c.offset,_=[],u=c[e+"Methods"],m=c[e+"Tokenizers"],p=n.line,g=n.column;if(!t)return _;f.now=h,f.file=c.file,E("");for(;t;){for(r=-1,a=u.length,s=!1;++r<a&&(o=u[r],!(i=m[o])||i.onlyAtStart&&!c.atStart||i.notInList&&c.inList||i.notInBlock&&c.inBlock||i.notInLink&&c.inLink||(l=t.length,i.apply(c,[f,t]),!(s=l!==t.length))););s||c.file.fail(new Error("Infinite loop"),f.now())}return c.eof=h(),_;function E(e){for(var t=-1,n=e.indexOf("\n");-1!==n;)p++,t=n,n=e.indexOf("\n",n+1);-1===t?g+=e.length:g=e.length-t,p in d&&(-1!==t?g+=d[p]:g<=d[p]&&(g=d[p]+1))}function h(){var e={line:p,column:g};return e.offset=c.toOffset(e),e}function S(){var e=h();return function(t,n){var r=t.position,a=r?r.start:e,i=[],o=r&&r.end.line,s=e.line;if(t.position=new function(e){this.start=e,this.end=h()}(a),r&&n&&r.indent){if(i=r.indent,o<s){for(;++o<s;)i.push((d[o]||0)+1);i.push(e.column)}n=i.concat(n)}return t.position.indent=n||[],t}}function f(e){var n=function(){var e=[],t=p+1;return function(){for(var n=p+1;t<n;)e.push((d[t]||0)+1),t++;return e}}(),r=S(),a=h();return function(e){t.slice(0,e.length)!==e&&c.file.fail(new Error("Incorrectly eaten value: please report this warning on https://git.io/vg5Ft"),h())}(e),i.reset=o,o.test=s,i.test=s,t=t.slice(e.length),E(e),n=n(),i;function i(e,t){return r(function(e,t){var n,r=t?t.children:_,a=r[r.length-1];a&&e.type===a.type&&("text"===e.type||"blockquote"===e.type)&&Ip(a)&&Ip(e)&&(n="text"===e.type?Dp:xp,e=n.call(c,a,e));e!==a&&r.push(e);c.atStart&&0!==_.length&&c.exitStart();return e}(r(e),t),n)}function o(){var n=i.apply(null,arguments);return p=a.line,g=a.column,t=e+t,n}function s(){var n=r({});return p=a.line,g=a.column,t=e+t,n.position}}}};function Ip(e){var t,n;return"text"!==e.type||!e.position||(t=e.position.start,n=e.position.end,t.line!==n.line||n.column-t.column===e.value.length)}function Dp(e,t){return e.value+=t.value,e}function xp(e,t){return this.options.commonmark||this.options.gfm?t:(e.children=e.children.concat(t.children),e)}var Mp=kp,wp=["\\","`","*","{","}","[","]","(",")","#","+","-",".","!","_",">"],Lp=wp.concat(["~","|"]),Pp=Lp.concat(["\n",'"',"$","%","&","'",",","/",":",";","<","=","?","@","^"]);function kp(e){var t=e||{};return t.commonmark?Pp:t.gfm?Lp:wp}kp.default=wp,kp.gfm=Lp,kp.commonmark=Pp;var Up={position:!0,gfm:!0,commonmark:!1,footnotes:!1,pedantic:!1,blocks:["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","pre","section","source","title","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},Fp=function(t){var n,r,a=this.options;if(null==t)t={};else{if("object"!=typeof t)throw new Error("Invalid value `"+t+"` for setting `options`");t=e(t)}for(n in Up){if(null==(r=t[n])&&(r=a[n]),"blocks"!==n&&"boolean"!=typeof r||"blocks"===n&&"object"!=typeof r)throw new Error("Invalid value `"+r+"` for setting `options."+n+"`");t[n]=r}return this.options=t,this.escape=Mp(t),this};var Bp=function(e,t){return E(e,t?Gp:Hp),e};function Gp(e){delete e.position}function Hp(e){e.position=void 0}var Yp=function(){var t,n=String(this.file),r={line:1,column:1,offset:0},a=e(r);65279===(n=n.replace(zp,Vp)).charCodeAt(0)&&(n=n.slice(1),a.column++,a.offset++);t={type:"root",children:this.tokenizeBlock(n,a),position:{start:r,end:this.eof||e(r)}},this.options.position||Bp(t,!0);return t},Vp="\n",zp=/\r\n|\r/g;var qp=function(e,t,n){var r,a,i,o,s=t.charAt(0);if(s!==Kp)return;if(n)return!0;o=1,r=t.length,a=s,i="";for(;o<r&&(s=t.charAt(o),pe(s));)i+=s,s===Kp&&(a+=i,i=""),o++;e(a)},Kp="\n";var Wp=function(e){var t=String(e),n=t.length;for(;t.charAt(--n)===Qp;);return t.slice(0,n+1)},Qp="\n";var $p=function(e,t,n){var r,a,i,o=-1,s=t.length,l="",c="",d="",_="";for(;++o<s;)if(r=t.charAt(o),i)if(i=!1,l+=d,c+=_,d="",_="",r===jp)d=r,_=r;else for(l+=r,c+=r;++o<s;){if(!(r=t.charAt(o))||r===jp){_=r,d=r;break}l+=r,c+=r}else if(r===Zp&&t.charAt(o+1)===r&&t.charAt(o+2)===r&&t.charAt(o+3)===r)d+=Jp,o+=3,i=!0;else if(r===Xp)d+=r,i=!0;else{for(a="";r===Xp||r===Zp;)a+=r,r=t.charAt(++o);if(r!==jp)break;d+=a+r,_+=r}if(c)return!!n||e(l)({type:"code",lang:null,meta:null,value:Wp(c)})},jp="\n",Xp="\t",Zp=" ",Jp=H(Zp,4);var eg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E=this.options.gfm,h=t.length+1,S=0,f="";if(!E)return;for(;S<h&&((i=t.charAt(S))===rg||i===ng);)f+=i,S++;if(p=S,(i=t.charAt(S))!==ag&&i!==ig)return;S++,a=i,r=1,f+=i;for(;S<h&&(i=t.charAt(S))===a;)f+=i,r++,S++;if(r<og)return;for(;S<h&&((i=t.charAt(S))===rg||i===ng);)f+=i,S++;o="",c="";for(;S<h&&(i=t.charAt(S))!==tg&&(a!==ig||i!==a);)i===rg||i===ng?c+=i:(o+=c+i,c=""),S++;if((i=t.charAt(S))&&i!==tg)return;if(n)return!0;(g=e.now()).column+=f.length,g.offset+=f.length,f+=o,o=this.decode.raw(this.unescape(o),g),c&&(f+=c);c="",u="",m="",d="",_="";var T=!0;for(;S<h;)if(i=t.charAt(S),d+=u,_+=m,u="",m="",i===tg){for(T?(f+=i,T=!1):(u+=i,m+=i),c="",S++;S<h&&(i=t.charAt(S))===rg;)c+=i,S++;if(u+=c,m+=c.slice(p),!(c.length>=sg)){for(c="";S<h&&(i=t.charAt(S))===a;)c+=i,S++;if(u+=c,m+=c,!(c.length<r)){for(c="";S<h&&((i=t.charAt(S))===rg||i===ng);)u+=i,m+=i,S++;if(!i||i===tg)break}}}else d+=i,m+=i,S++;f+=d+u,S=-1,h=o.length;for(;++S<h;)if((i=o.charAt(S))===rg||i===ng)s||(s=o.slice(0,S));else if(s){l=o.slice(S);break}return e(f)({type:"code",lang:s||o||null,meta:l||null,value:_})},tg="\n",ng="\t",rg=" ",ag="~",ig="`",og=3,sg=4;var lg=function(e,t,n,r){var a,i,o=e.length,s=-1;for(;++s<o;)if(a=e[s],(void 0===(i=a[1]||{}).pedantic||i.pedantic===n.options.pedantic)&&(void 0===i.commonmark||i.commonmark===n.options.commonmark)&&t[a[0]].apply(n,r))return!0;return!1};var cg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u=this.offset,m=this.blockTokenizers,p=this.interruptBlockquote,g=e.now(),E=g.line,h=t.length,S=[],f=[],T=[],b=0;for(;b<h&&((a=t.charAt(b))===ug||a===_g);)b++;if(t.charAt(b)!==mg)return;if(n)return!0;b=0;for(;b<h;){for(o=t.indexOf(dg,b),c=b,d=!1,-1===o&&(o=h);b<h&&((a=t.charAt(b))===ug||a===_g);)b++;if(t.charAt(b)===mg?(b++,d=!0,t.charAt(b)===ug&&b++):b=c,s=t.slice(b,o),!d&&!I(s)){b=c;break}if(!d&&(i=t.slice(b),lg(p,m,this,[e,i,!0])))break;l=c===b?s:t.slice(c,o),T.push(b-c),S.push(l),f.push(s),b=o+1}b=-1,h=T.length,r=e(S.join(dg));for(;++b<h;)u[E]=(u[E]||0)+T[b],E++;return _=this.enterBlock(),f=this.tokenizeBlock(f.join(dg),g),_(),r({type:"blockquote",children:f})},dg="\n",_g="\t",ug=" ",mg=">";var pg=function(e,t,n){var r,a,i,o=this.options.pedantic,s=t.length+1,l=-1,c=e.now(),d="",_="";for(;++l<s;){if((r=t.charAt(l))!==hg&&r!==Eg){l--;break}d+=r}i=0;for(;++l<=s;){if((r=t.charAt(l))!==Sg){l--;break}d+=r,i++}if(i>fg)return;if(!i||!o&&t.charAt(l+1)===Sg)return;s=t.length+1,a="";for(;++l<s;){if((r=t.charAt(l))!==hg&&r!==Eg){l--;break}a+=r}if(!o&&0===a.length&&r&&r!==gg)return;if(n)return!0;d+=a,a="",_="";for(;++l<s&&(r=t.charAt(l))&&r!==gg;)if(r===hg||r===Eg||r===Sg){for(;r===hg||r===Eg;)a+=r,r=t.charAt(++l);if(o||!_||a||r!==Sg){for(;r===Sg;)a+=r,r=t.charAt(++l);for(;r===hg||r===Eg;)a+=r,r=t.charAt(++l);l--}else _+=r}else _+=a+r,a="";return c.column+=d.length,c.offset+=d.length,e(d+=_+a)({type:"heading",depth:i,children:this.tokenizeInline(_,c)})},gg="\n",Eg="\t",hg=" ",Sg="#",fg=6;var Tg=function(e,t,n){var r,a,i,o,s=-1,l=t.length+1,c="";for(;++s<l&&((r=t.charAt(s))===bg||r===Ng);)c+=r;if(r!==vg&&r!==Rg&&r!==Ag)return;a=r,c+=r,i=1,o="";for(;++s<l;)if((r=t.charAt(s))===a)i++,c+=o+a,o="";else{if(r!==Ng)return i>=Og&&(!r||r===Cg)?(c+=o,!!n||e(c)({type:"thematicBreak"})):void 0;o+=r}},bg="\t",Cg="\n",Ng=" ",vg="*",Rg="-",Ag="_",Og=3;var yg=function(e){var t,n=0,r=0,a=e.charAt(n),i={};for(;a===Ig||a===Dg;)r+=t=a===Ig?Mg:xg,t>1&&(r=Math.floor(r/t)*t),i[r]=n,a=e.charAt(++n);return{indent:r,stops:i}},Ig="\t",Dg=" ",xg=1,Mg=4;var wg=function(e,t){var n,r,a,i,o=e.split(Pg),s=o.length+1,l=1/0,c=[];o.unshift(H(kg,t)+Ug);for(;s--;)if(r=yg(o[s]),c[s]=r.stops,0!==I(o[s]).length){if(!r.indent){l=1/0;break}r.indent>0&&r.indent<l&&(l=r.indent)}if(l!==1/0)for(s=o.length;s--;){for(a=c[s],n=l;n&&!(n in a);)n--;i=0!==I(o[s]).length&&l&&n!==l?Lg:"",o[s]=i+o[s].slice(n in a?a[n]+1:0)}return o.shift(),o.join(Pg)},Lg="\t",Pg="\n",kg=" ",Ug="!";var Fg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b,C,N,v,R=this.options.commonmark,A=this.options.pedantic,O=this.blockTokenizers,y=this.interruptList,D=0,x=t.length,M=null,w=0,L=!1;for(;D<x;){if((i=t.charAt(D))===Kg)w+=$g-w%$g;else{if(i!==zg)break;w++}D++}if(w>=$g)return;if((i=t.charAt(D))===Bg||i===Hg||i===Yg)o=i,a=!1;else{for(a=!0,r="";D<x&&(i=t.charAt(D),Ku(i));)r+=i,D++;if(i=t.charAt(D),!r||!(i===Vg||R&&i===Wg))return;M=parseInt(r,10),o=i}if((i=t.charAt(++D))!==zg&&i!==Kg&&(A||i!==qg&&""!==i))return;if(n)return!0;D=0,g=[],E=[],h=[];for(;D<x;){for(s=t.indexOf(qg,D),l=D,c=!1,v=!1,-1===s&&(s=x),N=D+$g,w=0;D<x;){if((i=t.charAt(D))===Kg)w+=$g-w%$g;else{if(i!==zg)break;w++}D++}if(w>=$g&&(v=!0),S&&w>=S.indent&&(v=!0),i=t.charAt(D),d=null,!v){if(i===Bg||i===Hg||i===Yg)d=i,D++,w++;else{for(r="";D<x&&(i=t.charAt(D),Ku(i));)r+=i,D++;i=t.charAt(D),D++,r&&(i===Vg||R&&i===Wg)&&(d=i,w+=r.length+1)}if(d)if((i=t.charAt(D))===Kg)w+=$g-w%$g,D++;else if(i===zg){for(N=D+$g;D<N&&t.charAt(D)===zg;)D++,w++;D===N&&t.charAt(D)===zg&&(D-=$g-1,w-=$g-1)}else i!==qg&&""!==i&&(d=null)}if(d){if(!A&&o!==d)break;c=!0}else R||v||t.charAt(l)!==zg?R&&S&&(v=w>=S.indent||w>$g):v=!0,c=!1,D=l;if(u=t.slice(l,s),_=l===D?u:t.slice(D,s),(d===Bg||d===Gg||d===Yg)&&O.thematicBreak.call(this,e,u,!0))break;if(m=p,p=!c&&!I(_).length,v&&S)S.value=S.value.concat(h,u),E=E.concat(h,u),h=[];else if(c)0!==h.length&&(L=!0,S.value.push(""),S.trail=h.concat()),S={value:[u],indent:w,trail:[]},g.push(S),E=E.concat(h,u),h=[];else if(p){if(m&&!R)break;h.push(u)}else{if(m)break;if(lg(y,O,this,[e,u,!0]))break;S.value=S.value.concat(h,u),E=E.concat(h,u),h=[]}D=s+1}b=e(E.join(qg)).reset({type:"list",ordered:a,start:M,spread:L,children:[]}),f=this.enterList(),T=this.enterBlock(),D=-1,x=g.length;for(;++D<x;)S=g[D].value.join(qg),C=e.now(),e(S)(tE(this,S,C),b),S=g[D].trail.join(qg),D!==x-1&&(S+=qg),e(S);return f(),T(),b},Bg="*",Gg="_",Hg="+",Yg="-",Vg=".",zg=" ",qg="\n",Kg="\t",Wg=")",Qg="x",$g=4,jg=/\n\n(?!\s*$)/,Xg=/^\[([ \t]|x|X)][ \t]/,Zg=/^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/,Jg=/^([ \t]*)([*+-]|\d+[.)])([ \t]+)/,eE=/^( {1,4}|\t)?/gm;function tE(e,t,n){var r,a,i=e.offset,o=null;return t=(e.options.pedantic?nE:rE).apply(null,arguments),e.options.gfm&&(r=t.match(Xg))&&(a=r[0].length,o=r[1].toLowerCase()===Qg,i[n.line]+=a,t=t.slice(a)),{type:"listItem",spread:jg.test(t),checked:o,children:e.tokenizeBlock(t,n)}}function nE(e,t,n){var r=e.offset,a=n.line;return t=t.replace(Jg,i),a=n.line,t.replace(eE,i);function i(e){return r[a]=(r[a]||0)+e.length,a++,""}}function rE(e,t,n){var r,a,i,o,s,l,c,d=e.offset,_=n.line;for(o=(t=t.replace(Zg,function(e,t,n,o,s){a=t+n+o,i=s,Number(n)<10&&a.length%2==1&&(n=zg+n);return(r=t+H(zg,n.length)+o)+i})).split(qg),(s=wg(t,yg(r).indent).split(qg))[0]=i,d[_]=(d[_]||0)+a.length,_++,l=0,c=o.length;++l<c;)d[_]=(d[_]||0)+o[l].length-s[l].length,_++;return s.join(qg)}var aE=function(e,t,n){var r,a,i,o,s,l=e.now(),c=t.length,d=-1,_="";for(;++d<c;){if((i=t.charAt(d))!==sE||d>=dE){d--;break}_+=i}r="",a="";for(;++d<c;){if((i=t.charAt(d))===iE){d--;break}i===sE||i===oE?a+=i:(r+=a+i,a="")}if(l.column+=_.length,l.offset+=_.length,_+=r+a,i=t.charAt(++d),o=t.charAt(++d),i!==iE||o!==lE&&o!==cE)return;_+=i,a=o,s=o===lE?_E:uE;for(;++d<c;){if((i=t.charAt(d))!==o){if(i!==iE)return;d--;break}a+=i}if(n)return!0;return e(_+a)({type:"heading",depth:s,children:this.tokenizeInline(r,l)})},iE="\n",oE="\t",sE=" ",lE="=",cE="-",dE=3,_E=1,uE=2;var mE="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",pE="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",gE={openCloseTag:new RegExp("^(?:"+mE+"|"+pE+")"),tag:new RegExp("^(?:"+mE+"|"+pE+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|<![A-Za-z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)")},EE=function(e,t,n){var r,a,i,o,s,l,c,d=this.options.blocks.join("|"),_=new RegExp("^</?("+d+")(?=(\\s|/?>|$))","i"),u=t.length,m=0,p=[[bE,CE,!0],[NE,vE,!0],[RE,AE,!0],[OE,yE,!0],[IE,DE,!0],[_,xE,!0],[ME,xE,!1]];for(;m<u&&((o=t.charAt(m))===hE||o===SE);)m++;if(t.charAt(m)!==TE)return;r=-1===(r=t.indexOf(fE,m+1))?u:r,a=t.slice(m,r),i=-1,s=p.length;for(;++i<s;)if(p[i][0].test(a)){l=p[i];break}if(!l)return;if(n)return l[2];if(m=r,!l[1].test(a))for(;m<u;){if(r=-1===(r=t.indexOf(fE,m+1))?u:r,a=t.slice(m+1,r),l[1].test(a)){a&&(m=r);break}m=r}return c=t.slice(0,m),e(c)({type:"html",value:c})},hE="\t",SE=" ",fE="\n",TE="<",bE=/^<(script|pre|style)(?=(\s|>|$))/i,CE=/<\/(script|pre|style)>/i,NE=/^<!--/,vE=/-->/,RE=/^<\?/,AE=/\?>/,OE=/^<![A-Za-z]/,yE=/>/,IE=/^<!\[CDATA\[/,DE=/\]\]>/,xE=/^$/,ME=new RegExp(gE.openCloseTag.source+"\\s*$");var wE=function(e){return re(e).toLowerCase()};var LE=zE;zE.notInList=!0,zE.notInBlock=!0;var PE="\\",kE="\n",UE="\t",FE=" ",BE="[",GE="]",HE="^",YE=":",VE=/^( {4}|\t)?/gm;function zE(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g=this.offset;if(this.options.footnotes){for(r=0,a=t.length,i="",o=e.now(),s=o.line;r<a&&(_=t.charAt(r),pe(_));)i+=_,r++;if(t.charAt(r)===BE&&t.charAt(r+1)===HE){for(r=(i+=BE+HE).length,c="";r<a&&(_=t.charAt(r))!==GE;)_===PE&&(c+=_,r++,_=t.charAt(r)),c+=_,r++;if(c&&t.charAt(r)===GE&&t.charAt(r+1)===YE){if(n)return!0;for(u=c,r=(i+=c+GE+YE).length;r<a&&((_=t.charAt(r))===UE||_===FE);)i+=_,r++;for(o.column+=i.length,o.offset+=i.length,c="",l="",d="";r<a;){if((_=t.charAt(r))===kE){for(d=_,r++;r<a&&(_=t.charAt(r))===kE;)d+=_,r++;for(c+=d,d="";r<a&&(_=t.charAt(r))===FE;)d+=_,r++;if(0===d.length)break;c+=d}c&&(l+=c,c=""),l+=_,r++}return i+=l,l=l.replace(VE,function(e){return g[s]=(g[s]||0)+e.length,s++,""}),m=e(i),p=this.enterBlock(),l=this.tokenizeBlock(l,o),p(),m({type:"footnoteDefinition",identifier:wE(u),label:u,children:l})}}}}var qE=function(e,t,n){var r,a,i,o,s,l,c,d,_=this.options.commonmark,u=0,m=t.length,p="";for(;u<m&&((o=t.charAt(u))===XE||o===jE);)p+=o,u++;if((o=t.charAt(u))!==ZE)return;u++,p+=o,i="";for(;u<m&&(o=t.charAt(u))!==JE;)o===QE&&(i+=o,u++,o=t.charAt(u)),i+=o,u++;if(!i||t.charAt(u)!==JE||t.charAt(u+1)!==nh)return;l=i,u=(p+=i+JE+nh).length,i="";for(;u<m&&((o=t.charAt(u))===jE||o===XE||o===$E);)p+=o,u++;if(o=t.charAt(u),i="",r=p,o===rh){for(u++;u<m&&ih(o=t.charAt(u));)i+=o,u++;if((o=t.charAt(u))===ih.delimiter)p+=rh+i+o,u++;else{if(_)return;u-=i.length+1,i=""}}if(!i){for(;u<m&&oh(o=t.charAt(u));)i+=o,u++;p+=i}if(!i)return;c=i,i="";for(;u<m&&((o=t.charAt(u))===jE||o===XE||o===$E);)i+=o,u++;o=t.charAt(u),s=null,o===KE?s=KE:o===WE?s=WE:o===eh&&(s=th);if(s){if(!i)return;for(u=(p+=i+o).length,i="";u<m&&(o=t.charAt(u))!==s;){if(o===$E){if(u++,(o=t.charAt(u))===$E||o===s)return;i+=$E}i+=o,u++}if((o=t.charAt(u))!==s)return;a=p,p+=i+o,u++,d=i,i=""}else i="",u=p.length;for(;u<m&&((o=t.charAt(u))===jE||o===XE);)p+=o,u++;if(!(o=t.charAt(u))||o===$E)return!!n||(r=e(r).test().end,c=this.decode.raw(this.unescape(c),r,{nonTerminated:!1}),d&&(a=e(a).test().end,d=this.decode.raw(this.unescape(d),a)),e(p)({type:"definition",identifier:wE(l),label:l,title:d||null,url:c}))},KE='"',WE="'",QE="\\",$E="\n",jE="\t",XE=" ",ZE="[",JE="]",eh="(",th=")",nh=":",rh="<",ah=">";function ih(e){return e!==ah&&e!==ZE&&e!==JE}function oh(e){return e!==ZE&&e!==JE&&!pe(e)}ih.delimiter=ah;var sh=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b,C,N,v;if(!this.options.gfm)return;r=0,S=0,l=t.length+1,c=[];for(;r<l;){if(C=t.indexOf(ch,r),N=t.indexOf(ph,r+1),-1===C&&(C=t.length),-1===N||N>C){if(S<Eh)return;break}c.push(t.slice(r,C)),S++,r=C+1}o=c.join(ch),a=c.splice(1,1)[0]||[],r=0,l=a.length,S--,i=!1,m=[];for(;r<l;){if((_=a.charAt(r))===ph){if(u=null,!1===i){if(!1===v)return}else m.push(i),i=!1;v=!1}else if(_===_h)u=!0,i=i||null;else if(_===uh)i=i===hh?Sh:u&&null===i?fh:hh;else if(!pe(_))return;r++}!1!==i&&m.push(i);if(m.length<gh)return;if(n)return!0;h=-1,T=[],b=e(o).reset({type:"table",align:m,children:T});for(;++h<S;){for(f=c[h],s={type:"tableRow",children:[]},h&&e(ch),e(f).reset(s,b),l=f.length+1,r=0,d="",p="",g=!0;r<l;)(_=f.charAt(r))!==lh&&_!==dh?(""===_||_===ph?g?e(_):(!p&&!_||g||(o=p,d.length>1&&(_?(o+=d.slice(0,d.length-1),d=d.charAt(d.length-1)):(o+=d,d="")),E=e.now(),e(o)({type:"tableCell",children:this.tokenizeInline(p,E)},s)),e(d+_),d="",p=""):(d&&(p+=d,d=""),p+=_,_===mh&&r!==l-2&&(p+=f.charAt(r+1),r++)),g=!1,r++):(p?d+=_:e(_),r++);h||e(ch+a)}return b},lh="\t",ch="\n",dh=" ",_h="-",uh=":",mh="\\",ph="|",gh=1,Eh=2,hh="left",Sh="center",fh="right";var Th=function(e,t,n){var r,a,i,o,s,l=this.options,c=l.commonmark,d=l.gfm,_=this.blockTokenizers,u=this.interruptParagraph,m=t.indexOf(Ch),p=t.length;for(;m<p;){if(-1===m){m=p;break}if(t.charAt(m+1)===Ch)break;if(c){for(o=0,r=m+1;r<p;){if((i=t.charAt(r))===bh){o=vh;break}if(i!==Nh)break;o++,r++}if(o>=vh&&i!==Ch){m=t.indexOf(Ch,m+1);continue}}if(a=t.slice(m+1),lg(u,_,this,[e,a,!0]))break;if(_.list.call(this,e,a,!0)&&(this.inList||c||d&&!Ku(I.left(a).charAt(0))))break;if(r=m,-1!==(m=t.indexOf(Ch,m+1))&&""===I(t.slice(r,m))){m=r;break}}if(a=t.slice(0,m),""===I(a))return e(a),null;if(n)return!0;return s=e.now(),a=Wp(a),e(a)({type:"paragraph",children:this.tokenizeInline(a,s)})},bh="\t",Ch="\n",Nh=" ",vh=4;var Rh=function(e,t){return e.indexOf("\\",t)};var Ah=Ih;Ih.locator=Rh;var Oh="\n",yh="\\";function Ih(e,t,n){var r,a;if(t.charAt(0)===yh&&(r=t.charAt(1),-1!==this.escape.indexOf(r)))return!!n||(a=r===Oh?{type:"break"}:{type:"text",value:r},e(yh+r)(a))}var Dh=function(e,t){return e.indexOf("<",t)};var xh=Fh;Fh.locator=Dh,Fh.notInLink=!0;var Mh="<",wh=">",Lh="@",Ph="/",kh="mailto:",Uh=kh.length;function Fh(e,t,n){var r,a,i,o,s,l="",c=t.length,d=0,_="",u=!1,m="";if(t.charAt(0)===Mh){for(d++,l=Mh;d<c&&(r=t.charAt(d),!(pe(r)||r===wh||r===Lh||":"===r&&t.charAt(d+1)===Ph));)_+=r,d++;if(_){if(m+=_,_="",m+=r=t.charAt(d),d++,r===Lh)u=!0;else{if(":"!==r||t.charAt(d+1)!==Ph)return;m+=Ph,d++}for(;d<c&&(r=t.charAt(d),!pe(r)&&r!==wh);)_+=r,d++;if(r=t.charAt(d),_&&r===wh)return!!n||(i=m+=_,l+=m+r,(a=e.now()).column++,a.offset++,u&&(m.slice(0,Uh).toLowerCase()===kh?(i=i.slice(Uh),a.column+=Uh,a.offset+=Uh):m=kh+m),o=this.inlineTokenizers,this.inlineTokenizers={text:o.text},s=this.enterLink(),i=this.tokenizeInline(i,a),this.inlineTokenizers=o,s(),e(l)({type:"link",title:null,url:jm(m,{nonTerminated:!1}),children:i}))}}}var Bh=function(e,t){var n,r=Gh.length,a=-1,i=-1;if(!this.options.gfm)return-1;for(;++a<r;)-1!==(n=e.indexOf(Gh[a],t))&&(n<i||-1===i)&&(i=n);return i},Gh=["https://","http://","mailto:"];var Hh=rS;rS.locator=Bh,rS.notInLink=!0;var Yh='"',Vh="'",zh="(",qh=")",Kh=",",Wh=".",Qh=":",$h=";",jh="<",Xh="@",Zh="[",Jh="]",eS="mailto:",tS=["http://","https://",eS],nS=tS.length;function rS(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g;if(this.options.gfm){for(r="",o=-1;++o<nS;)if(l=tS[o],(c=t.slice(0,l.length)).toLowerCase()===l){r=c;break}if(r){for(o=r.length,d=t.length,_="",u=0;o<d&&(i=t.charAt(o),!pe(i)&&i!==jh)&&(i!==Wh&&i!==Kh&&i!==Qh&&i!==$h&&i!==Yh&&i!==Vh&&i!==qh&&i!==Jh||(m=t.charAt(o+1))&&!pe(m))&&(i!==zh&&i!==Zh||u++,i!==qh&&i!==Jh||!(--u<0));)_+=i,o++;if(_){if(a=r+=_,l===eS){if(-1===(s=_.indexOf(Xh))||s===d-1)return;a=a.slice(eS.length)}return!!n||(g=this.enterLink(),p=this.inlineTokenizers,this.inlineTokenizers={text:p.text},a=this.tokenizeInline(a,e.now()),this.inlineTokenizers=p,g(),e(r)({type:"link",title:null,url:jm(r,{nonTerminated:!1}),children:a}))}}}}var aS=gE.tag,iS=uS;uS.locator=Dh;var oS="<",sS="?",lS="!",cS="/",dS=/^<a /i,_S=/^<\/a>/i;function uS(e,t,n){var r,a,i=t.length;if(!(t.charAt(0)!==oS||i<3)&&(r=t.charAt(1),(Wu(r)||r===sS||r===lS||r===cS)&&(a=t.match(aS))))return!!n||(a=a[0],!this.inLink&&dS.test(a)?this.inLink=!0:this.inLink&&_S.test(a)&&(this.inLink=!1),e(a)({type:"html",value:a}))}var mS=function(e,t){var n=e.indexOf("[",t),r=e.indexOf("![",t);if(-1===r)return n;return n<r?n:r};var pS=OS;OS.locator=mS;var gS="\n",ES="!",hS='"',SS="'",fS="(",TS=")",bS="<",CS=">",NS="[",vS="\\",RS="]",AS="`";function OS(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b="",C=0,N=t.charAt(0),v=this.options.pedantic,R=this.options.commonmark,A=this.options.gfm;if(N===ES&&(d=!0,b=N,N=t.charAt(++C)),N===NS&&(d||!this.inLink)){for(b+=N,E="",C++,m=t.length,g=0,(S=e.now()).column+=C,S.offset+=C;C<m;){if(l=N=t.charAt(C),N===AS){for(a=1;t.charAt(C+1)===AS;)l+=N,C++,a++;i?a>=i&&(i=0):i=a}else if(N===vS)C++,l+=t.charAt(C);else if(i&&!A||N!==NS){if((!i||A)&&N===RS){if(!g){if(!v)for(;C<m&&(N=t.charAt(C+1),pe(N));)l+=N,C++;if(t.charAt(C+1)!==fS)return;l+=fS,r=!0,C++;break}g--}}else g++;E+=l,l="",C++}if(r){for(_=E,b+=E+l,C++;C<m&&(N=t.charAt(C),pe(N));)b+=N,C++;if(E="",o=b,(N=t.charAt(C))===bS){for(C++,o+=bS;C<m&&(N=t.charAt(C))!==CS;){if(R&&N===gS)return;E+=N,C++}if(t.charAt(C)!==CS)return;b+=bS+E+CS,h=E,C++}else{for(N=null,l="";C<m&&(N=t.charAt(C),!l||!(N===hS||N===SS||R&&N===fS));){if(pe(N)){if(!v)break;l+=N}else{if(N===fS)g++;else if(N===TS){if(0===g)break;g--}E+=l,l="",N===vS&&(E+=vS,N=t.charAt(++C)),E+=N}C++}h=E,C=(b+=E).length}for(E="";C<m&&(N=t.charAt(C),pe(N));)E+=N,C++;if(N=t.charAt(C),b+=E,E&&(N===hS||N===SS||R&&N===fS))if(C++,b+=N,E="",u=N===fS?TS:N,s=b,R){for(;C<m&&(N=t.charAt(C))!==u;)N===vS&&(E+=vS,N=t.charAt(++C)),C++,E+=N;if((N=t.charAt(C))!==u)return;for(p=E,b+=E+N,C++;C<m&&(N=t.charAt(C),pe(N));)b+=N,C++}else for(l="";C<m;){if((N=t.charAt(C))===u)c&&(E+=u+l,l=""),c=!0;else if(c){if(N===TS){b+=E+u+l,p=E;break}pe(N)?l+=N:(E+=u+l+N,l="",c=!1)}else E+=N;C++}if(t.charAt(C)===TS)return!!n||(b+=TS,h=this.decode.raw(this.unescape(h),e(o).test().end,{nonTerminated:!1}),p&&(s=e(s).test().end,p=this.decode.raw(this.unescape(p),s)),T={type:d?"image":"link",title:p||null,url:h},d?T.alt=this.decode.raw(this.unescape(_),S)||null:(f=this.enterLink(),T.children=this.tokenizeInline(_,S),f()),e(b)(T))}}}var yS=HS;HS.locator=mS;var IS="link",DS="image",xS="footnote",MS="shortcut",wS="collapsed",LS="full",PS=" ",kS="!",US="[",FS="\\",BS="]",GS="^";function HS(e,t,n){var r,a,i,o,s,l,c,d,_=this.options.commonmark,u=this.options.footnotes,m=t.charAt(0),p=0,g=t.length,E="",h="",S=IS,f=MS;if(m===kS&&(S=DS,h=m,m=t.charAt(++p)),m===US){if(p++,h+=m,l="",u&&t.charAt(p)===GS){if(S===DS)return;h+=GS,p++,S=xS}for(d=0;p<g;){if((m=t.charAt(p))===US)c=!0,d++;else if(m===BS){if(!d)break;d--}m===FS&&(l+=FS,m=t.charAt(++p)),l+=m,p++}if(E=l,r=l,(m=t.charAt(p))===BS){if(p++,E+=m,l="",!_)for(;p<g&&(m=t.charAt(p),pe(m));)l+=m,p++;if(m=t.charAt(p),S===xS||m!==US||u&&t.charAt(p+1)===GS){if(!r)return;a=r}else{for(a="",l+=m,p++;p<g&&(m=t.charAt(p))!==US&&m!==BS;)m===FS&&(a+=FS,m=t.charAt(++p)),a+=m,p++;(m=t.charAt(p))===BS?(f=a?LS:wS,l+=a+m,p++):a="",E+=l,l=""}if(f===LS||!c)return E=h+E,S===IS&&this.inLink?null:!!n||(S===xS&&-1!==r.indexOf(PS)?e(E)({type:xS,children:this.tokenizeInline(r,e.now())}):((i=e.now()).column+=h.length,i.offset+=h.length,o={type:S+"Reference",identifier:wE(a=f===LS?a:r),label:a},S!==IS&&S!==DS||(o.referenceType=f),S===IS?(s=this.enterLink(),o.children=this.tokenizeInline(r,i),s()):S===DS&&(o.alt=this.decode.raw(this.unescape(r),i)||null),e(E)(o)))}}}var YS=function(e,t){var n=e.indexOf("**",t),r=e.indexOf("__",t);if(-1===r)return n;if(-1===n)return r;return r<n?r:n};var VS=WS;WS.locator=YS;var zS="\\",qS="*",KS="_";function WS(e,t,n){var r,a,i,o,s,l,c,d=0,_=t.charAt(d);if(!(_!==qS&&_!==KS||t.charAt(++d)!==_||(a=this.options.pedantic,s=(i=_)+i,l=t.length,d++,o="",_="",a&&pe(t.charAt(d)))))for(;d<l;){if(c=_,!((_=t.charAt(d))!==i||t.charAt(d+1)!==i||a&&pe(c))&&(_=t.charAt(d+2))!==i){if(!I(o))return;return!!n||((r=e.now()).column+=2,r.offset+=2,e(s+o+s)({type:"strong",children:this.tokenizeInline(o,r)}))}a||_!==zS||(o+=_,_=t.charAt(++d)),o+=_,d++}}var QS=function(e){return jS.test("number"==typeof e?$S(e):e.charAt(0))},$S=String.fromCharCode,jS=/\w/;var XS=function(e,t){var n=e.indexOf("*",t),r=e.indexOf("_",t);if(-1===r)return n;if(-1===n)return r;return r<n?r:n};var ZS=nf;nf.locator=XS;var JS="*",ef="_",tf="\\";function nf(e,t,n){var r,a,i,o,s,l,c,d=0,_=t.charAt(d);if(!(_!==JS&&_!==ef||(a=this.options.pedantic,s=_,i=_,l=t.length,d++,o="",_="",a&&pe(t.charAt(d)))))for(;d<l;){if(c=_,!((_=t.charAt(d))!==i||a&&pe(c))){if((_=t.charAt(++d))!==i){if(!I(o)||c===i)return;if(!a&&i===ef&&QS(_)){o+=i;continue}return!!n||((r=e.now()).column++,r.offset++,e(s+o+i)({type:"emphasis",children:this.tokenizeInline(o,r)}))}o+=i}a||_!==tf||(o+=_,_=t.charAt(++d)),o+=_,d++}}var rf=function(e,t){return e.indexOf("~~",t)};var af=lf;lf.locator=rf;var of="~",sf="~~";function lf(e,t,n){var r,a,i,o="",s="",l="",c="";if(this.options.gfm&&t.charAt(0)===of&&t.charAt(1)===of&&!pe(t.charAt(2)))for(r=1,a=t.length,(i=e.now()).column+=2,i.offset+=2;++r<a;){if(!((o=t.charAt(r))!==of||s!==of||l&&pe(l)))return!!n||e(sf+c+sf)({type:"delete",children:this.tokenizeInline(c,i)});c+=s,l=s,s=o}}var cf=function(e,t){return e.indexOf("`",t)};var df=pf;pf.locator=cf;var _f=10,uf=32,mf=96;function pf(e,t,n){for(var r,a,i,o,s,l,c=t.length,d=0;d<c&&t.charCodeAt(d)===mf;)d++;if(0!==d&&d!==c){for(r=d,s=t.charCodeAt(d);d<c;){if(o=s,s=t.charCodeAt(d+1),o===mf){if(void 0===a&&(a=d),i=d+1,s!==mf&&i-a===r){l=!0;break}}else void 0!==a&&(a=void 0,i=void 0);d++}if(l){if(n)return!0;if(d=r,c=a,o=t.charCodeAt(d),s=t.charCodeAt(c-1),l=!1,c-d>2&&(o===uf||o===_f)&&(s===uf||s===_f)){for(d++,c--;d<c;){if((o=t.charCodeAt(d))!==uf&&o!==_f){l=!0;break}d++}!0===l&&(r++,a--)}return e(t.slice(0,i))({type:"inlineCode",value:t.slice(r,a)})}}}var gf=function(e,t){var n=e.indexOf("\n",t);for(;n>t&&" "===e.charAt(n-1);)n--;return n};var Ef=Tf;Tf.locator=gf;var hf=" ",Sf="\n",ff=2;function Tf(e,t,n){for(var r,a=t.length,i=-1,o="";++i<a;){if((r=t.charAt(i))===Sf){if(i<ff)return;return!!n||e(o+=r)({type:"break"})}if(r!==hf)return;o+=r}}var bf=function(e,t,n){var r,a,i,o,s,l,c,d,_,u;if(n)return!0;r=this.inlineMethods,o=r.length,a=this.inlineTokenizers,i=-1,_=t.length;for(;++i<o;)"text"!==(d=r[i])&&a[d]&&((c=a[d].locator)||e.file.fail("Missing locator: `"+d+"`"),-1!==(l=c.call(this,t,1))&&l<_&&(_=l));s=t.slice(0,_),u=e.now(),this.decode(s,u,function(t,n,r){e(r||t)({type:"text",value:t})})};var Cf=Nf;function Nf(t,n){this.file=n,this.offset={},this.options=e(this.options),this.setOptions({}),this.inList=!1,this.inBlock=!1,this.inLink=!1,this.atStart=!0,this.toOffset=Vm(n).toOffset,this.unescape=zm(this,"escape"),this.decode=Op(this)}var vf=Nf.prototype;function Rf(e){var t,n=[];for(t in e)n.push(t);return n}vf.setOptions=Fp,vf.parse=Yp,vf.options=Up,vf.exitStart=Ym("atStart",!0),vf.enterList=Ym("inList",!1),vf.enterLink=Ym("inLink",!1),vf.enterBlock=Ym("inBlock",!1),vf.interruptParagraph=[["thematicBreak"],["atxHeading"],["fencedCode"],["blockquote"],["html"],["setextHeading",{commonmark:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],vf.interruptList=[["atxHeading",{pedantic:!1}],["fencedCode",{pedantic:!1}],["thematicBreak",{pedantic:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],vf.interruptBlockquote=[["indentedCode",{commonmark:!0}],["fencedCode",{commonmark:!0}],["atxHeading",{commonmark:!0}],["setextHeading",{commonmark:!0}],["thematicBreak",{commonmark:!0}],["html",{commonmark:!0}],["list",{commonmark:!0}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],vf.blockTokenizers={newline:qp,indentedCode:$p,fencedCode:eg,blockquote:cg,atxHeading:pg,thematicBreak:Tg,list:Fg,setextHeading:aE,html:EE,footnote:LE,definition:qE,table:sh,paragraph:Th},vf.inlineTokenizers={escape:Ah,autoLink:xh,url:Hh,html:iS,link:pS,reference:yS,strong:VS,emphasis:ZS,deletion:af,code:df,break:Ef,text:bf},vf.blockMethods=Rf(vf.blockTokenizers),vf.inlineMethods=Rf(vf.inlineTokenizers),vf.tokenizeBlock=yp("block"),vf.tokenizeInline=yp("inline"),vf.tokenizeFactory=yp;var Af=Of;function Of(t){var n=this.data("settings"),r=Hm(Cf);r.prototype.options=e(r.prototype.options,n,t),this.Parser=r}function yf(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function If(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function Df(e){return e.replace(new RegExp("[-[\\]{}()*+?.\\\\^$|/]","g"),"\\$&")}Of.Parser=Cf;var xf="\n",Mf="|";var wf=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(e).map(Df).join("|");if(!t)throw new Error("remark-custom-blocks needs to be passed a configuration object as option");var n=new RegExp("\\[\\[(".concat(t,")(?: *\\| *(.*))?\\]\\]\n"));var r=this.Parser,a=r.prototype.blockTokenizers,i=r.prototype.blockMethods;a.customBlocks=function(t,r,a){var i=t.now(),o=n.exec(r);if(o&&0===o.index){var s=If(o,3),l=s[0],c=s[1],d=s[2];if(a)return!0;for(var _=[],u=[],m=0;-1!==(m=r.indexOf(xf));){var p=r.indexOf(xf,m+1),g=-1!==p?r.slice(m+1,p):r.slice(m+1);if(g[0]!==Mf)break;var E=g.slice(g.startsWith("".concat(Mf," "))?2:1);_.push(g),u.push(E),r=r.slice(m+1)}var h=u.join(xf),S=l+_.join(xf),f=e[c],T=f.title&&["optional","required"].includes(f.title);if((!f.title||"required"!==f.title||d)&&(T||!d)){var b=t(S),C=this.enterBlock(),N={type:"".concat(c,"CustomBlockBody"),data:{hName:"div",hProperties:{className:"custom-block-body"}},children:this.tokenizeBlock(h,i)};C();var v=[N];if(T&&d){var R={type:"".concat(c,"CustomBlockHeading"),data:{hName:f.details?"summary":"div",hProperties:{className:"custom-block-heading"}},children:this.tokenizeInline(d,i)};v.unshift(R)}var A=ts.parse(f.classes||"");return b({type:"".concat(c,"CustomBlock"),children:v,data:{hName:f.details?"details":"div",hProperties:{className:["custom-block"].concat(yf(A))}}})}}},i.splice(i.indexOf("fencedCode")+1,0,"customBlocks");var o=this.Compiler;if(o){var s=o.prototype.visitors;if(!s)return;Object.keys(e).forEach(function(e){var t,n,r,a=(t=e,{blockHeading:function(e){return r=this.all(e).join(""),""},blockBody:function(e){return n=this.all(e).map(function(e){return e.replace(/\n/g,"\n| ")}).join("\n|\n| ")},block:function(e){return n="",r="",this.all(e),r?"[[".concat(t," | ").concat(r,"]]\n| ").concat(n):"[[".concat(t,"]]\n| ").concat(n)}});s["".concat(e,"CustomBlock")]=a.block,s["".concat(e,"CustomBlockHeading")]=a.blockHeading,s["".concat(e,"CustomBlockBody")]=a.blockBody})}var l=r.prototype.interruptParagraph,c=r.prototype.interruptList,d=r.prototype.interruptBlockquote;l.splice(l.indexOf("fencedCode")+1,0,["customBlocks"]),c.splice(c.indexOf("fencedCode")+1,0,["customBlocks"]),d.splice(d.indexOf("fencedCode")+1,0,["customBlocks"])},Lf=2147483647,Pf=36,kf=1,Uf=26,Ff=38,Bf=700,Gf=72,Hf=128,Yf="-",Vf=/[^\x20-\x7E]/,zf=/[\x2E\u3002\uFF0E\uFF61]/g,qf={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Kf=Pf-kf,Wf=Math.floor,Qf=String.fromCharCode;function $f(e){throw new RangeError(qf[e])}function jf(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function Xf(e,t,n){var r=0;for(e=n?Wf(e/Bf):e>>1,e+=Wf(e/t);e>Kf*Uf>>1;r+=Pf)e=Wf(e/Kf);return Wf(r+(Kf+1)*e/(e+Ff))}function Zf(e){return function(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]);var a=function(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}((e=e.replace(zf,".")).split("."),t).join(".");return r+a}(e,function(e){return Vf.test(e)?"xn--"+function(e){var t,n,r,a,i,o,s,l,c,d,_,u,m,p,g,E=[];for(u=(e=function(e){for(var t,n,r=[],a=0,i=e.length;a<i;)(t=e.charCodeAt(a++))>=55296&&t<=56319&&a<i?56320==(64512&(n=e.charCodeAt(a++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),a--):r.push(t);return r}(e)).length,t=Hf,n=0,i=Gf,o=0;o<u;++o)(_=e[o])<128&&E.push(Qf(_));for(r=a=E.length,a&&E.push(Yf);r<u;){for(s=Lf,o=0;o<u;++o)(_=e[o])>=t&&_<s&&(s=_);for(s-t>Wf((Lf-n)/(m=r+1))&&$f("overflow"),n+=(s-t)*m,t=s,o=0;o<u;++o)if((_=e[o])<t&&++n>Lf&&$f("overflow"),_==t){for(l=n,c=Pf;!(l<(d=c<=i?kf:c>=i+Uf?Uf:c-i));c+=Pf)g=l-d,p=Pf-d,E.push(Qf(jf(d+g%p,0))),l=Wf(g/p);E.push(Qf(jf(l,0))),i=Xf(n,m,r==a),n=0,++r}++n,++t}return E.join("")}(e):e})}var Jf=[],eT=[],tT="undefined"!=typeof Uint8Array?Uint8Array:Array,nT=!1;function rT(){nT=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)Jf[t]=e[t],eT[e.charCodeAt(t)]=t;eT["-".charCodeAt(0)]=62,eT["_".charCodeAt(0)]=63}function aT(e,t,n){for(var r,a,i=[],o=t;o<n;o+=3)r=(e[o]<<16)+(e[o+1]<<8)+e[o+2],i.push(Jf[(a=r)>>18&63]+Jf[a>>12&63]+Jf[a>>6&63]+Jf[63&a]);return i.join("")}function iT(e){var t;nT||rT();for(var n=e.length,r=n%3,a="",i=[],o=0,s=n-r;o<s;o+=16383)i.push(aT(e,o,o+16383>s?s:o+16383));return 1===r?(t=e[n-1],a+=Jf[t>>2],a+=Jf[t<<4&63],a+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],a+=Jf[t>>10],a+=Jf[t>>4&63],a+=Jf[t<<2&63],a+="="),i.push(a),i.join("")}function oT(e,t,n,r,a){var i,o,s=8*a-r-1,l=(1<<s)-1,c=l>>1,d=-7,_=n?a-1:0,u=n?-1:1,m=e[t+_];for(_+=u,i=m&(1<<-d)-1,m>>=-d,d+=s;d>0;i=256*i+e[t+_],_+=u,d-=8);for(o=i&(1<<-d)-1,i>>=-d,d+=r;d>0;o=256*o+e[t+_],_+=u,d-=8);if(0===i)i=1-c;else{if(i===l)return o?NaN:1/0*(m?-1:1);o+=Math.pow(2,r),i-=c}return(m?-1:1)*o*Math.pow(2,i-r)}function sT(e,t,n,r,a,i){var o,s,l,c=8*i-a-1,d=(1<<c)-1,_=d>>1,u=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,m=r?0:i-1,p=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=d):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+_>=1?u/l:u*Math.pow(2,1-_))*l>=2&&(o++,l/=2),o+_>=d?(s=0,o=d):o+_>=1?(s=(t*l-1)*Math.pow(2,a),o+=_):(s=t*Math.pow(2,_-1)*Math.pow(2,a),o=0));a>=8;e[n+m]=255&s,m+=p,s/=256,a-=8);for(o=o<<a|s,c+=a;c>0;e[n+m]=255&o,m+=p,o/=256,c-=8);e[n+m-p]|=128*g}var lT={}.toString,cT=Array.isArray||function(e){return"[object Array]"==lT.call(e)};function dT(){return uT.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function _T(e,t){if(dT()<t)throw new RangeError("Invalid typed array length");return uT.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=uT.prototype:(null===e&&(e=new uT(t)),e.length=t),e}function uT(e,t,n){if(!(uT.TYPED_ARRAY_SUPPORT||this instanceof uT))return new uT(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return gT(this,e)}return mT(this,e,t,n)}function mT(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);uT.TYPED_ARRAY_SUPPORT?(e=t).__proto__=uT.prototype:e=ET(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!uT.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|fT(t,n),a=(e=_T(e,r)).write(t,n);a!==r&&(e=e.slice(0,a));return e}(e,t,n):function(e,t){if(ST(t)){var n=0|hT(t.length);return 0===(e=_T(e,n)).length?e:(t.copy(e,0,0,n),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?_T(e,0):ET(e,t);if("Buffer"===t.type&&cT(t.data))return ET(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function pT(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function gT(e,t){if(pT(t),e=_T(e,t<0?0:0|hT(t)),!uT.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function ET(e,t){var n=t.length<0?0:0|hT(t.length);e=_T(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function hT(e){if(e>=dT())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+dT().toString(16)+" bytes");return 0|e}function ST(e){return!(null==e||!e._isBuffer)}function fT(e,t){if(ST(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return qT(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return KT(e).length;default:if(r)return qT(e).length;t=(""+t).toLowerCase(),r=!0}}function TT(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function bT(e,t,n,r,a){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=a?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(a)return-1;n=e.length-1}else if(n<0){if(!a)return-1;n=0}if("string"==typeof t&&(t=uT.from(t,r)),ST(t))return 0===t.length?-1:CT(e,t,n,r,a);if("number"==typeof t)return t&=255,uT.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):CT(e,[t],n,r,a);throw new TypeError("val must be string, number or Buffer")}function CT(e,t,n,r,a){var i,o=1,s=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,s/=2,l/=2,n/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(a){var d=-1;for(i=n;i<s;i++)if(c(e,i)===c(t,-1===d?0:i-d)){if(-1===d&&(d=i),i-d+1===l)return d*o}else-1!==d&&(i-=i-d),d=-1}else for(n+l>s&&(n=s-l),i=n;i>=0;i--){for(var _=!0,u=0;u<l;u++)if(c(e,i+u)!==c(t,u)){_=!1;break}if(_)return i}return-1}function NT(e,t,n,r){n=Number(n)||0;var a=e.length-n;r?(r=Number(r))>a&&(r=a):r=a;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var o=0;o<r;++o){var s=parseInt(t.substr(2*o,2),16);if(isNaN(s))return o;e[n+o]=s}return o}function vT(e,t,n,r){return WT(qT(t,e.length-n),e,n,r)}function RT(e,t,n,r){return WT(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function AT(e,t,n,r){return RT(e,t,n,r)}function OT(e,t,n,r){return WT(KT(t),e,n,r)}function yT(e,t,n,r){return WT(function(e,t){for(var n,r,a,i=[],o=0;o<e.length&&!((t-=2)<0);++o)n=e.charCodeAt(o),r=n>>8,a=n%256,i.push(a),i.push(r);return i}(t,e.length-n),e,n,r)}function IT(e,t,n){return 0===t&&n===e.length?iT(e):iT(e.slice(t,n))}function DT(e,t,n){n=Math.min(e.length,n);for(var r=[],a=t;a<n;){var i,o,s,l,c=e[a],d=null,_=c>239?4:c>223?3:c>191?2:1;if(a+_<=n)switch(_){case 1:c<128&&(d=c);break;case 2:128==(192&(i=e[a+1]))&&(l=(31&c)<<6|63&i)>127&&(d=l);break;case 3:i=e[a+1],o=e[a+2],128==(192&i)&&128==(192&o)&&(l=(15&c)<<12|(63&i)<<6|63&o)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:i=e[a+1],o=e[a+2],s=e[a+3],128==(192&i)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&i)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(d=l)}null===d?(d=65533,_=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),a+=_}return function(e){var t=e.length;if(t<=xT)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=xT));return n}(r)}uT.TYPED_ARRAY_SUPPORT=void 0===tc.TYPED_ARRAY_SUPPORT||tc.TYPED_ARRAY_SUPPORT,uT.poolSize=8192,uT._augment=function(e){return e.__proto__=uT.prototype,e},uT.from=function(e,t,n){return mT(null,e,t,n)},uT.TYPED_ARRAY_SUPPORT&&(uT.prototype.__proto__=Uint8Array.prototype,uT.__proto__=Uint8Array),uT.alloc=function(e,t,n){return function(e,t,n,r){return pT(t),t<=0?_T(e,t):void 0!==n?"string"==typeof r?_T(e,t).fill(n,r):_T(e,t).fill(n):_T(e,t)}(null,e,t,n)},uT.allocUnsafe=function(e){return gT(null,e)},uT.allocUnsafeSlow=function(e){return gT(null,e)},uT.isBuffer=function(e){return null!=e&&(!!e._isBuffer||QT(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&QT(e.slice(0,0))}(e))},uT.compare=function(e,t){if(!ST(e)||!ST(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,a=0,i=Math.min(n,r);a<i;++a)if(e[a]!==t[a]){n=e[a],r=t[a];break}return n<r?-1:r<n?1:0},uT.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},uT.concat=function(e,t){if(!cT(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return uT.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=uT.allocUnsafe(t),a=0;for(n=0;n<e.length;++n){var i=e[n];if(!ST(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,a),a+=i.length}return r},uT.byteLength=fT,uT.prototype._isBuffer=!0,uT.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)TT(this,t,t+1);return this},uT.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)TT(this,t,t+3),TT(this,t+1,t+2);return this},uT.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)TT(this,t,t+7),TT(this,t+1,t+6),TT(this,t+2,t+5),TT(this,t+3,t+4);return this},uT.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?DT(this,0,e):function(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return LT(this,t,n);case"utf8":case"utf-8":return DT(this,t,n);case"ascii":return MT(this,t,n);case"latin1":case"binary":return wT(this,t,n);case"base64":return IT(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return PT(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},uT.prototype.equals=function(e){if(!ST(e))throw new TypeError("Argument must be a Buffer");return this===e||0===uT.compare(this,e)},uT.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},uT.prototype.compare=function(e,t,n,r,a){if(!ST(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===a&&(a=this.length),t<0||n>e.length||r<0||a>this.length)throw new RangeError("out of range index");if(r>=a&&t>=n)return 0;if(r>=a)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,a>>>=0,this===e)return 0;for(var i=a-r,o=n-t,s=Math.min(i,o),l=this.slice(r,a),c=e.slice(t,n),d=0;d<s;++d)if(l[d]!==c[d]){i=l[d],o=c[d];break}return i<o?-1:o<i?1:0},uT.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},uT.prototype.indexOf=function(e,t,n){return bT(this,e,t,n,!0)},uT.prototype.lastIndexOf=function(e,t,n){return bT(this,e,t,n,!1)},uT.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var a=this.length-t;if((void 0===n||n>a)&&(n=a),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return NT(this,e,t,n);case"utf8":case"utf-8":return vT(this,e,t,n);case"ascii":return RT(this,e,t,n);case"latin1":case"binary":return AT(this,e,t,n);case"base64":return OT(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return yT(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},uT.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var xT=4096;function MT(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(127&e[a]);return r}function wT(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(e[a]);return r}function LT(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var a="",i=t;i<n;++i)a+=zT(e[i]);return a}function PT(e,t,n){for(var r=e.slice(t,n),a="",i=0;i<r.length;i+=2)a+=String.fromCharCode(r[i]+256*r[i+1]);return a}function kT(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function UT(e,t,n,r,a,i){if(!ST(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||t<i)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function FT(e,t,n,r){t<0&&(t=65535+t+1);for(var a=0,i=Math.min(e.length-n,2);a<i;++a)e[n+a]=(t&255<<8*(r?a:1-a))>>>8*(r?a:1-a)}function BT(e,t,n,r){t<0&&(t=4294967295+t+1);for(var a=0,i=Math.min(e.length-n,4);a<i;++a)e[n+a]=t>>>8*(r?a:3-a)&255}function GT(e,t,n,r,a,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function HT(e,t,n,r,a){return a||GT(e,0,n,4),sT(e,t,n,r,23,4),n+4}function YT(e,t,n,r,a){return a||GT(e,0,n,8),sT(e,t,n,r,52,8),n+8}uT.prototype.slice=function(e,t){var n,r=this.length;if(e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),uT.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=uT.prototype;else{var a=t-e;n=new uT(a,void 0);for(var i=0;i<a;++i)n[i]=this[i+e]}return n},uT.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=this[e],a=1,i=0;++i<t&&(a*=256);)r+=this[e+i]*a;return r},uT.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=this[e+--t],a=1;t>0&&(a*=256);)r+=this[e+--t]*a;return r},uT.prototype.readUInt8=function(e,t){return t||kT(e,1,this.length),this[e]},uT.prototype.readUInt16LE=function(e,t){return t||kT(e,2,this.length),this[e]|this[e+1]<<8},uT.prototype.readUInt16BE=function(e,t){return t||kT(e,2,this.length),this[e]<<8|this[e+1]},uT.prototype.readUInt32LE=function(e,t){return t||kT(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},uT.prototype.readUInt32BE=function(e,t){return t||kT(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},uT.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=this[e],a=1,i=0;++i<t&&(a*=256);)r+=this[e+i]*a;return r>=(a*=128)&&(r-=Math.pow(2,8*t)),r},uT.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=t,a=1,i=this[e+--r];r>0&&(a*=256);)i+=this[e+--r]*a;return i>=(a*=128)&&(i-=Math.pow(2,8*t)),i},uT.prototype.readInt8=function(e,t){return t||kT(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},uT.prototype.readInt16LE=function(e,t){t||kT(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},uT.prototype.readInt16BE=function(e,t){t||kT(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},uT.prototype.readInt32LE=function(e,t){return t||kT(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},uT.prototype.readInt32BE=function(e,t){return t||kT(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},uT.prototype.readFloatLE=function(e,t){return t||kT(e,4,this.length),oT(this,e,!0,23,4)},uT.prototype.readFloatBE=function(e,t){return t||kT(e,4,this.length),oT(this,e,!1,23,4)},uT.prototype.readDoubleLE=function(e,t){return t||kT(e,8,this.length),oT(this,e,!0,52,8)},uT.prototype.readDoubleBE=function(e,t){return t||kT(e,8,this.length),oT(this,e,!1,52,8)},uT.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||UT(this,e,t,n,Math.pow(2,8*n)-1,0);var a=1,i=0;for(this[t]=255&e;++i<n&&(a*=256);)this[t+i]=e/a&255;return t+n},uT.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||UT(this,e,t,n,Math.pow(2,8*n)-1,0);var a=n-1,i=1;for(this[t+a]=255&e;--a>=0&&(i*=256);)this[t+a]=e/i&255;return t+n},uT.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,1,255,0),uT.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},uT.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,65535,0),uT.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):FT(this,e,t,!0),t+2},uT.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,65535,0),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):FT(this,e,t,!1),t+2},uT.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,4294967295,0),uT.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):BT(this,e,t,!0),t+4},uT.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,4294967295,0),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):BT(this,e,t,!1),t+4},uT.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);UT(this,e,t,n,a-1,-a)}var i=0,o=1,s=0;for(this[t]=255&e;++i<n&&(o*=256);)e<0&&0===s&&0!==this[t+i-1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+n},uT.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);UT(this,e,t,n,a-1,-a)}var i=n-1,o=1,s=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+n},uT.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,1,127,-128),uT.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},uT.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,32767,-32768),uT.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):FT(this,e,t,!0),t+2},uT.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,32767,-32768),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):FT(this,e,t,!1),t+2},uT.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,2147483647,-2147483648),uT.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):BT(this,e,t,!0),t+4},uT.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):BT(this,e,t,!1),t+4},uT.prototype.writeFloatLE=function(e,t,n){return HT(this,e,t,!0,n)},uT.prototype.writeFloatBE=function(e,t,n){return HT(this,e,t,!1,n)},uT.prototype.writeDoubleLE=function(e,t,n){return YT(this,e,t,!0,n)},uT.prototype.writeDoubleBE=function(e,t,n){return YT(this,e,t,!1,n)},uT.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var a,i=r-n;if(this===e&&n<t&&t<r)for(a=i-1;a>=0;--a)e[a+t]=this[a+n];else if(i<1e3||!uT.TYPED_ARRAY_SUPPORT)for(a=0;a<i;++a)e[a+t]=this[a+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+i),t);return i},uT.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var a=e.charCodeAt(0);a<256&&(e=a)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!uT.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var i;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i<n;++i)this[i]=e;else{var o=ST(e)?e:qT(new uT(e,r).toString()),s=o.length;for(i=0;i<n-t;++i)this[i+t]=o[i%s]}return this};var VT=/[^+\/0-9A-Za-z-_]/g;function zT(e){return e<16?"0"+e.toString(16):e.toString(16)}function qT(e,t){var n;t=t||1/0;for(var r=e.length,a=null,i=[],o=0;o<r;++o){if((n=e.charCodeAt(o))>55295&&n<57344){if(!a){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&i.push(239,191,189);continue}a=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),a=n;continue}n=65536+(a-55296<<10|n-56320)}else a&&(t-=3)>-1&&i.push(239,191,189);if(a=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function KT(e){return function(e){var t,n,r,a,i,o;nT||rT();var s=e.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");i="="===e[s-2]?2:"="===e[s-1]?1:0,o=new tT(3*s/4-i),r=i>0?s-4:s;var l=0;for(t=0,n=0;t<r;t+=4,n+=3)a=eT[e.charCodeAt(t)]<<18|eT[e.charCodeAt(t+1)]<<12|eT[e.charCodeAt(t+2)]<<6|eT[e.charCodeAt(t+3)],o[l++]=a>>16&255,o[l++]=a>>8&255,o[l++]=255&a;return 2===i?(a=eT[e.charCodeAt(t)]<<2|eT[e.charCodeAt(t+1)]>>4,o[l++]=255&a):1===i&&(a=eT[e.charCodeAt(t)]<<10|eT[e.charCodeAt(t+1)]<<4|eT[e.charCodeAt(t+2)]>>2,o[l++]=a>>8&255,o[l++]=255&a),o}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(VT,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function WT(e,t,n,r){for(var a=0;a<r&&!(a+n>=t.length||a>=e.length);++a)t[a+n]=e[a];return a}function QT(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function $T(e){return null===e}function jT(e){return"string"==typeof e}function XT(e){return"object"==typeof e&&null!==e}function ZT(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var JT=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function eb(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}}function tb(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var nb=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t};function rb(e,t,n,r){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var i=/\+/g;e=e.split(t);var o=1e3;r&&"number"==typeof r.maxKeys&&(o=r.maxKeys);var s=e.length;o>0&&s>o&&(s=o);for(var l=0;l<s;++l){var c,d,_,u,m=e[l].replace(i,"%20"),p=m.indexOf(n);p>=0?(c=m.substr(0,p),d=m.substr(p+1)):(c=m,d=""),_=decodeURIComponent(c),u=decodeURIComponent(d),ZT(a,_)?JT(a[_])?a[_].push(u):a[_]=[a[_],u]:a[_]=u}return a}var ab={parse:fb,resolve:function(e,t){return fb(e,!1,!0).resolve(t)},resolveObject:function(e,t){return e?fb(e,!1,!0).resolveObject(t):t},format:function(e){jT(e)&&(e=Tb({},e));return bb(e)},Url:ib};function ib(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var ob=/^([a-z0-9.+-]+:)/i,sb=/:[0-9]*$/,lb=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,cb=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),db=["'"].concat(cb),_b=["%","/","?",";","#"].concat(db),ub=["/","?","#"],mb=255,pb=/^[+a-z0-9A-Z_-]{0,63}$/,gb=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Eb={javascript:!0,"javascript:":!0},hb={javascript:!0,"javascript:":!0},Sb={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function fb(e,t,n){if(e&&XT(e)&&e instanceof ib)return e;var r=new ib;return r.parse(e,t,n),r}function Tb(e,t,n,r){if(!jT(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var a=t.indexOf("?"),i=-1!==a&&a<t.indexOf("#")?"?":"#",o=t.split(i);o[0]=o[0].replace(/\\/g,"/");var s=t=o.join(i);if(s=s.trim(),!r&&1===t.split("#").length){var l=lb.exec(s);if(l)return e.path=s,e.href=s,e.pathname=l[1],l[2]?(e.search=l[2],e.query=n?rb(e.search.substr(1)):e.search.substr(1)):n&&(e.search="",e.query={}),e}var c,d,_,u,m=ob.exec(s);if(m){var p=(m=m[0]).toLowerCase();e.protocol=p,s=s.substr(m.length)}if(r||m||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var g="//"===s.substr(0,2);!g||m&&hb[m]||(s=s.substr(2),e.slashes=!0)}if(!hb[m]&&(g||m&&!Sb[m])){var E,h,S=-1;for(c=0;c<ub.length;c++)-1!==(d=s.indexOf(ub[c]))&&(-1===S||d<S)&&(S=d);for(-1!==(h=-1===S?s.lastIndexOf("@"):s.lastIndexOf("@",S))&&(E=s.slice(0,h),s=s.slice(h+1),e.auth=decodeURIComponent(E)),S=-1,c=0;c<_b.length;c++)-1!==(d=s.indexOf(_b[c]))&&(-1===S||d<S)&&(S=d);-1===S&&(S=s.length),e.host=s.slice(0,S),s=s.slice(S),Cb(e),e.hostname=e.hostname||"";var f="["===e.hostname[0]&&"]"===e.hostname[e.hostname.length-1];if(!f){var T=e.hostname.split(/\./);for(c=0,_=T.length;c<_;c++){var b=T[c];if(b&&!b.match(pb)){for(var C="",N=0,v=b.length;N<v;N++)b.charCodeAt(N)>127?C+="x":C+=b[N];if(!C.match(pb)){var R=T.slice(0,c),A=T.slice(c+1),O=b.match(gb);O&&(R.push(O[1]),A.unshift(O[2])),A.length&&(s="/"+A.join(".")+s),e.hostname=R.join(".");break}}}}e.hostname.length>mb?e.hostname="":e.hostname=e.hostname.toLowerCase(),f||(e.hostname=Zf(e.hostname)),u=e.port?":"+e.port:"";var y=e.hostname||"";e.host=y+u,e.href+=e.host,f&&(e.hostname=e.hostname.substr(1,e.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!Eb[p])for(c=0,_=db.length;c<_;c++){var I=db[c];if(-1!==s.indexOf(I)){var D=encodeURIComponent(I);D===I&&(D=escape(I)),s=s.split(I).join(D)}}var x=s.indexOf("#");-1!==x&&(e.hash=s.substr(x),s=s.slice(0,x));var M=s.indexOf("?");if(-1!==M?(e.search=s.substr(M),e.query=s.substr(M+1),n&&(e.query=rb(e.query)),s=s.slice(0,M)):n&&(e.search="",e.query={}),s&&(e.pathname=s),Sb[p]&&e.hostname&&!e.pathname&&(e.pathname="/"),e.pathname||e.search){u=e.pathname||"";var w=e.search||"";e.path=u+w}return e.href=bb(e),e}function bb(e){var t=e.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var n,r,a,i,o=e.protocol||"",s=e.pathname||"",l=e.hash||"",c=!1,d="";e.host?c=t+e.host:e.hostname&&(c=t+(-1===e.hostname.indexOf(":")?e.hostname:"["+this.hostname+"]"),e.port&&(c+=":"+e.port)),e.query&&XT(e.query)&&Object.keys(e.query).length&&(n=e.query,r=r||"&",a=a||"=",null===n&&(n=void 0),d="object"==typeof n?tb(nb(n),function(e){var t=encodeURIComponent(eb(e))+a;return JT(n[e])?tb(n[e],function(e){return t+encodeURIComponent(eb(e))}).join(r):t+encodeURIComponent(eb(n[e]))}).join(r):i?encodeURIComponent(eb(i))+a+encodeURIComponent(eb(n)):"");var _=e.search||d&&"?"+d||"";return o&&":"!==o.substr(-1)&&(o+=":"),e.slashes||(!o||Sb[o])&&!1!==c?(c="//"+(c||""),s&&"/"!==s.charAt(0)&&(s="/"+s)):c||(c=""),l&&"#"!==l.charAt(0)&&(l="#"+l),_&&"?"!==_.charAt(0)&&(_="?"+_),o+c+(s=s.replace(/[?#]/g,function(e){return encodeURIComponent(e)}))+(_=_.replace("#","%23"))+l}function Cb(e){var t=e.host,n=sb.exec(t);n&&(":"!==(n=n[0])&&(e.port=n.substr(1)),t=t.substr(0,t.length-n.length)),t&&(e.hostname=t)}function Nb(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function vb(e){return(vb="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}ib.prototype.parse=function(e,t,n){return Tb(this,e,t,n)},ib.prototype.format=function(){return bb(this)},ib.prototype.resolve=function(e){return this.resolveObject(fb(e,!1,!0)).format()},ib.prototype.resolveObject=function(e){if(jT(e)){var t=new ib;t.parse(e,!1,!0),e=t}for(var n,r=new ib,a=Object.keys(this),i=0;i<a.length;i++){var o=a[i];r[o]=this[o]}if(r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),l=0;l<s.length;l++){var c=s[l];"protocol"!==c&&(r[c]=e[c])}return Sb[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!Sb[e.protocol]){for(var d=Object.keys(e),_=0;_<d.length;_++){var u=d[_];r[u]=e[u]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||hb[e.protocol])r.pathname=e.pathname;else{for(n=(e.pathname||"").split("/");n.length&&!(e.host=n.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==n[0]&&n.unshift(""),n.length<2&&n.unshift(""),r.pathname=n.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",p=r.search||"";r.path=m+p}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var g,E=r.pathname&&"/"===r.pathname.charAt(0),h=e.host||e.pathname&&"/"===e.pathname.charAt(0),S=h||E||r.host&&e.pathname,f=S,T=r.pathname&&r.pathname.split("/")||[],b=r.protocol&&!Sb[r.protocol];if(n=e.pathname&&e.pathname.split("/")||[],b&&(r.hostname="",r.port=null,r.host&&(""===T[0]?T[0]=r.host:T.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===n[0]?n[0]=e.host:n.unshift(e.host)),e.host=null),S=S&&(""===n[0]||""===T[0])),h)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,T=n;else if(n.length)T||(T=[]),T.pop(),T=T.concat(n),r.search=e.search,r.query=e.query;else if(null!=e.search)return b&&(r.hostname=r.host=T.shift(),(g=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=g.shift(),r.host=r.hostname=g.shift())),r.search=e.search,r.query=e.query,$T(r.pathname)&&$T(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!T.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var C=T.slice(-1)[0],N=(r.host||e.host||T.length>1)&&("."===C||".."===C)||""===C,v=0,R=T.length;R>=0;R--)"."===(C=T[R])?T.splice(R,1):".."===C?(T.splice(R,1),v++):v&&(T.splice(R,1),v--);if(!S&&!f)for(;v--;v)T.unshift("..");!S||""===T[0]||T[0]&&"/"===T[0].charAt(0)||T.unshift(""),N&&"/"!==T.join("/").substr(-1)&&T.push("");var A=""===T[0]||T[0]&&"/"===T[0].charAt(0);return b&&(r.hostname=r.host=A?"":T.length?T.shift():"",(g=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=g.shift(),r.host=r.hostname=g.shift())),(S=S||r.host&&T.length)&&!A&&T.unshift(""),T.length?r.pathname=T.join("/"):(r.pathname=null,r.path=null),$T(r.pathname)&&$T(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},ib.prototype.parseHost=function(){return Cb(this)};var Rb=ab.format,Ab=ab.parse,Ob=ab.URLSearchParams,yb=function(e){if("object"!==vb(e)||!Object.keys(e).length)throw new Error("remark-iframes needs to be passed a configuration object as option");var t=this.Parser,n=t.prototype.blockTokenizers,r=t.prototype.blockMethods;n.iframes=function(t,n,r){if(n.startsWith("!(http")){for(var a="",i="",o=["!","(",")"],s=0;s<n.length&&")"!==n[s-1];s++)a+=n[s],o.includes(n[s])||(i+=n[s]);if(r)return!0;var l=function(t){var n=Ab(t).hostname;return e[n]}(i);if(!l||!0===l.disabled||l.match&&l.match instanceof RegExp&&!l.match.test(i))return t(a)({type:"paragraph",children:[{type:"text",value:a}]});var c=function(e,t){var n=t,r=Ab(n);if(e.droppedQueryParameters&&r.search){var a=new Ob(r.search);e.droppedQueryParameters.forEach(function(e){return a.delete(e)}),r.search=a.toString(),n=Rb(r)}return e.replace&&e.replace.length&&(e.replace.forEach(function(e){var t=Nb(e,2),a=t[0],i=t[1];a&&i&&(n=n.replace(a,i)),r=Ab(n)}),n=Rb(r)),e.removeFileName&&(r.pathname=r.pathname.substring(0,r.pathname.lastIndexOf("/")),n=Rb(r)),e.removeAfter&&n.includes(e.removeAfter)&&(n=n.substring(0,n.indexOf(e.removeAfter))),e.append&&(n+=e.append),n}(l,i),d=function(e,t){var n="",r=e.thumbnail;return r&&r.format&&(n=r.format,Object.keys(r).filter(function(e){return"format"!==e}).forEach(function(e){var a=new RegExp("{".concat(e,"}"),"g"),i=new RegExp(r[e]).exec(t);i&&(n=n.replace(a,i[1]))})),n}(l,c);t(a)({type:"iframe",src:i,data:{hName:l.tag,hProperties:{src:c,width:l.width,height:l.height,allowfullscreen:!0,frameborder:"0"},thumbnail:d}})}},r.splice(r.indexOf("blockquote")+1,0,"iframes");var a=this.Compiler;if(a){var i=a.prototype.visitors;if(!i)return;i.iframe=function(e){return"!(".concat(e.src,")")}}};return function(e,t){Jc().use(Af).use(At).use(Lt).use(Dt).use(ht).use(Be).use(Te).use(wf,{information:{classes:"special-box information",title:"optional"},comment:{classes:"special-box comment",title:"optional"},attention:{classes:"special-box attention",title:"optional"},question:{classes:"special-box question",title:"optional"},good:{classes:"special-box good"},secret:{classes:"special-box secret",title:"optional"},bad:{classes:"special-box bad"}}).use(Et).use(yb,{"www.youtube.com":{tag:"IFRAME",width:560,height:315,disabled:!1,replace:[["watch?v=","embed/"],["http://","https://"]],thumbnail:{format:"http://img.youtube.com/vi/{id}/0.jpg",id:".+/(.+)$"},removeAfter:"&"}}).use(me,{allowDangerousHTML:!0}).use(eu).use(fl).use(Bm).process(e,t)}}();
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1kLm1pbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3h0ZW5kL2ltbXV0YWJsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LWJ1aWxkZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1pcy9jb252ZXJ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtcG9zaXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1nZW5lcmF0ZWQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC1kZWZpbml0aW9ucy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmltL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvYWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvb25lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvdGhlbWF0aWMtYnJlYWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi93cmFwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGlzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2Zvb3Rlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2Jsb2NrcXVvdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZXBlYXQtc3RyaW5nL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RldGFiL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2RlbGV0ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2VtcGhhc2lzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvZm9vdG5vdGUtcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvZm9vdG5vdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9oZWFkaW5nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZHVybC9lbmNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9yZXZlcnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY29sbGFwc2Utd2hpdGUtc3BhY2UvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9saXN0LWl0ZW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHJpbS1saW5lcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaW1hZ2UtcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaW1hZ2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9pbmxpbmUtY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2xpbmstcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGluay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3BhcmFncmFwaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3Jvb3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9zdHJvbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy90YWJsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy13aGl0ZXNwYWNlLWNoYXJhY3Rlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmsta2JkL2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvdXRpbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbWF0aC9pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvYmxvY2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9oaWdobGlnaHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm9ybWF0L2Zvcm1hdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mYXVsdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9sb3dsaWdodC9saWIvY29yZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy8xYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9sb3dsaWdodC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstaGlnaGxpZ2h0LmpzL3NyYy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hYm5mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FjY2Vzc2xvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY3Rpb25zY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYWRhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FuZ2Vsc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FwYWNoZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcHBsZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcmNhZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3BwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FyZHVpbm8uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXJtYXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3htbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hc2NpaWRvYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hc3BlY3RqLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9ob3RrZXkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXV0b2l0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F2cmFzbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hd2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXhhcHRhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Jhc2guanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYmFzaWMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYm5mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2JyYWluZnVjay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jYWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2FwbnByb3RvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NleWxvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbGVhbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbG9qdXJlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nsb2p1cmUtcmVwbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbWFrZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb2ZmZWVzY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29xLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nvcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcm1zaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcnlzdGFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jc3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXJrZG93bi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kYXJ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RlbHBoaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kaWZmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RqYW5nby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kbnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9ja2VyZmlsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kb3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHNjb25maWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2R1c3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWJuZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbGl4aXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWxtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1YnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJiLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy1yZXBsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9leGNlbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9maXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZmxpeC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9mb3J0cmFuLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZzaGFycC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nYW1zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dhdXNzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2djb2RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2doZXJraW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2xzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ28uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ29sby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ncmFkbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3Jvb3Z5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaGFuZGxlYmFycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYXNrZWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hheGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHNwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0bWxiYXJzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0dHAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaW5mb3JtNy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pbmkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaXJwZjkwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2lzYmwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamF2YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2pib3NzLWNsaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qc29uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLXJlcGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMva290bGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xhc3NvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xkaWYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGVhZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sZXNzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpc3AuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGl2ZWNvZGVzZXJ2ZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGl2ZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sbHZtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sdWEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWFrZWZpbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF0aGVtYXRpY2EuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF0bGFiLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21heGltYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tZWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWVyY3VyeS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXBzYXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21pemFyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BlcmwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9qb2xpY2lvdXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9ua2V5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21vb25zY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbjFxbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uZ2lueC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uaW1yb2QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbml4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25zaXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb2JqZWN0aXZlYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vY2FtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vcGVuc2NhZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9veHlnZW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BhcnNlcjMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGdzcWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGhwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BsYWludGV4dC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wb255LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Bvd2Vyc2hlbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvY2Vzc2luZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9maWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb2xvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9wZXJ0aWVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb3RvYnVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3B1cHBldC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wdXJlYmFzaWMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHl0aG9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3EuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcW1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcmVhc29ubWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcmliLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvYm9jb25mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvdXRlcm9zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ydWxlc2xhbmd1YWdlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1c3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2FzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NjYWxhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NjaGVtZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2lsYWIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2Nzcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zaGVsbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWFsaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWFsbHRhbGsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NxZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zcWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3Rhbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGF0YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGVwMjEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3R5bHVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N1YnVuaXQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3dpZnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGFnZ2Vyc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3lhbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGFwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RjbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90ZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGhyaWZ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R3aWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdHlwZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YWxhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZibmV0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LWh0bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmVyaWxvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92aGRsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZpbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94ODZhc20uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveHF1ZXJ5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3plcGhpci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbXVsdGlwbGUtY2hvaWNlL2FwcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZC1hdHRyLXBhcnNlci9kaXN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1saW5lLWlucHV0L2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXNlbGVjdC9kaXN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay10ZXh0LWlucHV0L2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vdW5pY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9lcnJvci1jb2Rlcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3Rva2VuaXplci9wcmVwcm9jZXNzb3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvbmFtZWQtZW50aXR5LWRhdGEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3BhcnNlci9vcGVuLWVsZW1lbnQtc3RhY2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvZm9ybWF0dGluZy1lbGVtZW50LWxpc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi91dGlscy9taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9sb2NhdGlvbi1pbmZvL3Rva2VuaXplci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvbG9jYXRpb24taW5mby9vcGVuLWVsZW1lbnQtc3RhY2stbWl4aW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL2xvY2F0aW9uLWluZm8vcGFyc2VyLW1peGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9lcnJvci1yZXBvcnRpbmcvbWl4aW4tYmFzZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3ByZXByb2Nlc3Nvci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3Rva2VuaXplci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3BhcnNlci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3RyZWUtYWRhcHRlcnMvZGVmYXVsdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3V0aWxzL21lcmdlLW9wdGlvbnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vZG9jdHlwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3V0aWwvc2NoZW1hLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL21lcmdlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL25vcm1hbGl6ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvdXRpbC9pbmZvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL3R5cGVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL2RlZmluZWQtaW5mby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvdXRpbC9jcmVhdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3hsaW5rLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi94bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3V0aWwvY2FzZS1zZW5zaXRpdmUtdHJhbnNmb3JtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL2Nhc2UtaW5zZW5zaXRpdmUtdHJhbnNmb3JtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi94bWxucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvYXJpYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi9zdmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vc3ZnLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2ZpbmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXBhcnNlLXNlbGVjdG9yL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3NwYWNlLXNlcGFyYXRlZC10b2tlbnMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY29tbWEtc2VwYXJhdGVkLXRva2Vucy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0c2NyaXB0L2ZhY3RvcnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdHNjcmlwdC9zdmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdHNjcmlwdC9odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Njb3VudC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtZnJvbS1wYXJzZTUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaW5saW5lLXN0eWxlLXBhcnNlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS10by1vYmplY3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC10by1oeXBlcnNjcmlwdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy96d2l0Y2gvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLXBhcnNlNS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtcmF3L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlaHlwZS1yYXcvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLWlzL2NvbnZlcnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0LXBhcmVudHMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2thdGV4L2Rpc3Qva2F0ZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZXh0ZW5kL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JhaWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUtbWVzc2FnZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yb2xsdXAtcGx1Z2luLW5vZGUtZ2xvYmFscy9zcmMvZ2xvYmFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MtZXM2L2Jyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcGF0aC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZXBsYWNlLWV4dC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy1idWZmZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUvY29yZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy92ZmlsZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cm91Z2gvd3JhcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cm91Z2gvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtcGxhaW4tb2JqL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaWZpZWQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLXBhcnNlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1pcy1lbGVtZW50L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtZmluZC1hZnRlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8tdGV4dC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWh5cGUta2F0ZXgvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXdoaXRlc3BhY2UvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvc2libGluZ3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvZmlyc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvcGxhY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvd2hpdGUtc3BhY2UtbGVmdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvb21pc3Npb24vb21pc3Npb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL2Nsb3NpbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL29wZW5pbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9hbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtaGV4YWRlY2ltYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtZGVjaW1hbC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy1hbHBoYWJldGljYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtYWxwaGFudW1lcmljYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3RyaW5naWZ5LWVudGl0aWVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi90ZXh0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9jb25zdGFudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2VsZW1lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2RvY3R5cGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2NvbW1lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL3Jhdy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvb25lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWh5cGUtc3RyaW5naWZ5L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5oZXJpdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdGF0ZS10b2dnbGUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUtbG9jYXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91bmVzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZS1lbnRpdGllcy9kZWNvZGUtZW50aXR5LmJyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2UtZW50aXRpZXMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9kZWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWFya2Rvd24tZXNjYXBlcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2Jsb2NrLWVsZW1lbnRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvZGVmYXVsdHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9zZXQtb3B0aW9ucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXJlbW92ZS1wb3NpdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3BhcnNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvbmV3bGluZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmltLXRyYWlsaW5nLWxpbmVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmRlbnRlZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2NvZGUtZmVuY2VkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9pbnRlcnJ1cHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9ibG9ja3F1b3RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1hdHguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS90aGVtYXRpYy1icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3V0aWwvZ2V0LWluZGVudGF0aW9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9yZW1vdmUtaW5kZW50YXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9saXN0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1zZXRleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91dGlsL2h0bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9odG1sLWJsb2NrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9ub3JtYWxpemUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9mb290bm90ZS1kZWZpbml0aW9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZGVmaW5pdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RhYmxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvcGFyYWdyYXBoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2VzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS90YWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9hdXRvLWxpbmsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaHRtbC1pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvbGluay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2xpbmsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9yZWZlcmVuY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvc3Ryb25nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvc3Ryb25nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2lzLXdvcmQtY2hhcmFjdGVyL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VtcGhhc2lzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZW1waGFzaXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvZGVsZXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZGVsZXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2NvZGUtaW5saW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvYnJlYWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9wYXJzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1jdXN0b20tYmxvY2tzL2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcHVueWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnVmZmVyLWVzNi9iYXNlNjQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnVmZmVyLWVzNi9pZWVlNzU0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2J1ZmZlci1lczYvaXNBcnJheS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9idWZmZXItZXM2L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JvbGx1cC1wbHVnaW4tbm9kZS1idWlsdGlucy9zcmMvZXM2L3V0aWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1pZnJhbWVzL2Rpc3QvaW5kZXguanMiLCIuLi8uLi90b2h0bWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBleHRlbmRcblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gZXh0ZW5kKCkge1xuICAgIHZhciB0YXJnZXQgPSB7fVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRcbn1cbiIsIi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ldy13cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0bztcbn07XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVcblxuZnVuY3Rpb24gdSh0eXBlLCBwcm9wcywgdmFsdWUpIHtcbiAgdmFyIG5vZGVcblxuICBpZiAoXG4gICAgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpICYmXG4gICAgKHR5cGVvZiBwcm9wcyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShwcm9wcykpXG4gICkge1xuICAgIHZhbHVlID0gcHJvcHNcbiAgICBwcm9wcyA9IHt9XG4gIH1cblxuICBub2RlID0gYXNzaWduKHt0eXBlOiBTdHJpbmcodHlwZSl9LCBwcm9wcylcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBub2RlLmNoaWxkcmVuID0gdmFsdWVcbiAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbm9kZS52YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuXG4gIHJldHVybiBub2RlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0XG5cbmZ1bmN0aW9uIGNvbnZlcnQodGVzdCkge1xuICBpZiAodHlwZW9mIHRlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGVGYWN0b3J5KHRlc3QpXG4gIH1cblxuICBpZiAodGVzdCA9PT0gbnVsbCB8fCB0ZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gb2tcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gKCdsZW5ndGgnIGluIHRlc3QgPyBhbnlGYWN0b3J5IDogbWF0Y2hlc0ZhY3RvcnkpKHRlc3QpXG4gIH1cblxuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdGVzdFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiwgc3RyaW5nLCBvciBvYmplY3QgYXMgdGVzdCcpXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRBbGwodGVzdHMpIHtcbiAgdmFyIHJlc3VsdHMgPSBbXVxuICB2YXIgbGVuZ3RoID0gdGVzdHMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRzW2luZGV4XSA9IGNvbnZlcnQodGVzdHNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHNcbn1cblxuLy8gVXRpbGl0eSBhc3NlcnQgZWFjaCBwcm9wZXJ0eSBpbiBgdGVzdGAgaXMgcmVwcmVzZW50ZWQgaW4gYG5vZGVgLCBhbmQgZWFjaFxuLy8gdmFsdWVzIGFyZSBzdHJpY3RseSBlcXVhbC5cbmZ1bmN0aW9uIG1hdGNoZXNGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIG1hdGNoZXNcblxuICBmdW5jdGlvbiBtYXRjaGVzKG5vZGUpIHtcbiAgICB2YXIga2V5XG5cbiAgICBmb3IgKGtleSBpbiB0ZXN0KSB7XG4gICAgICBpZiAobm9kZVtrZXldICE9PSB0ZXN0W2tleV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG5mdW5jdGlvbiBhbnlGYWN0b3J5KHRlc3RzKSB7XG4gIHZhciBjaGVja3MgPSBjb252ZXJ0QWxsKHRlc3RzKVxuICB2YXIgbGVuZ3RoID0gY2hlY2tzLmxlbmd0aFxuXG4gIHJldHVybiBtYXRjaGVzXG5cbiAgZnVuY3Rpb24gbWF0Y2hlcygpIHtcbiAgICB2YXIgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjaGVja3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIGNvbnZlcnQgYSBzdHJpbmcgaW50byBhIGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBhIGdpdmVuIG5vZGXigJlzIHR5cGVcbi8vIGZvciBzYWlkIHN0cmluZy5cbmZ1bmN0aW9uIHR5cGVGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIHR5cGVcblxuICBmdW5jdGlvbiB0eXBlKG5vZGUpIHtcbiAgICByZXR1cm4gQm9vbGVhbihub2RlICYmIG5vZGUudHlwZSA9PT0gdGVzdClcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIHJldHVybiB0cnVlLlxuZnVuY3Rpb24gb2soKSB7XG4gIHJldHVybiB0cnVlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB2aXNpdFBhcmVudHNcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG52YXIgQ09OVElOVUUgPSB0cnVlXG52YXIgU0tJUCA9ICdza2lwJ1xudmFyIEVYSVQgPSBmYWxzZVxuXG52aXNpdFBhcmVudHMuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXRQYXJlbnRzLlNLSVAgPSBTS0lQXG52aXNpdFBhcmVudHMuRVhJVCA9IEVYSVRcblxuZnVuY3Rpb24gdmlzaXRQYXJlbnRzKHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgdmFyIGlzXG5cbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICBpcyA9IGNvbnZlcnQodGVzdClcblxuICBvbmUodHJlZSwgbnVsbCwgW10pXG5cbiAgLy8gVmlzaXQgYSBzaW5nbGUgbm9kZS5cbiAgZnVuY3Rpb24gb25lKG5vZGUsIGluZGV4LCBwYXJlbnRzKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdXG4gICAgdmFyIHN1YnJlc3VsdFxuXG4gICAgaWYgKCF0ZXN0IHx8IGlzKG5vZGUsIGluZGV4LCBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV0gfHwgbnVsbCkpIHtcbiAgICAgIHJlc3VsdCA9IHRvUmVzdWx0KHZpc2l0b3Iobm9kZSwgcGFyZW50cykpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLmNoaWxkcmVuICYmIHJlc3VsdFswXSAhPT0gU0tJUCkge1xuICAgICAgc3VicmVzdWx0ID0gdG9SZXN1bHQoYWxsKG5vZGUuY2hpbGRyZW4sIHBhcmVudHMuY29uY2F0KG5vZGUpKSlcbiAgICAgIHJldHVybiBzdWJyZXN1bHRbMF0gPT09IEVYSVQgPyBzdWJyZXN1bHQgOiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBWaXNpdCBjaGlsZHJlbiBpbiBgcGFyZW50YC5cbiAgZnVuY3Rpb24gYWxsKGNoaWxkcmVuLCBwYXJlbnRzKSB7XG4gICAgdmFyIG1pbiA9IC0xXG4gICAgdmFyIHN0ZXAgPSByZXZlcnNlID8gLTEgOiAxXG4gICAgdmFyIGluZGV4ID0gKHJldmVyc2UgPyBjaGlsZHJlbi5sZW5ndGggOiBtaW4pICsgc3RlcFxuICAgIHZhciByZXN1bHRcblxuICAgIHdoaWxlIChpbmRleCA+IG1pbiAmJiBpbmRleCA8IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmVzdWx0ID0gb25lKGNoaWxkcmVuW2luZGV4XSwgaW5kZXgsIHBhcmVudHMpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHR5cGVvZiByZXN1bHRbMV0gPT09ICdudW1iZXInID8gcmVzdWx0WzFdIDogaW5kZXggKyBzdGVwXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRvUmVzdWx0KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbQ09OVElOVUUsIHZhbHVlXVxuICB9XG5cbiAgcmV0dXJuIFt2YWx1ZV1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0XG5cbnZhciB2aXNpdFBhcmVudHMgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0LXBhcmVudHMnKVxuXG52YXIgQ09OVElOVUUgPSB2aXNpdFBhcmVudHMuQ09OVElOVUVcbnZhciBTS0lQID0gdmlzaXRQYXJlbnRzLlNLSVBcbnZhciBFWElUID0gdmlzaXRQYXJlbnRzLkVYSVRcblxudmlzaXQuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXQuU0tJUCA9IFNLSVBcbnZpc2l0LkVYSVQgPSBFWElUXG5cbmZ1bmN0aW9uIHZpc2l0KHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICB2aXNpdFBhcmVudHModHJlZSwgdGVzdCwgb3ZlcmxvYWQsIHJldmVyc2UpXG5cbiAgZnVuY3Rpb24gb3ZlcmxvYWQobm9kZSwgcGFyZW50cykge1xuICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV1cbiAgICB2YXIgaW5kZXggPSBwYXJlbnQgPyBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihub2RlKSA6IG51bGxcbiAgICByZXR1cm4gdmlzaXRvcihub2RlLCBpbmRleCwgcGFyZW50KVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHBvc2l0aW9uID0gZXhwb3J0c1xuXG5wb3NpdGlvbi5zdGFydCA9IGZhY3RvcnkoJ3N0YXJ0JylcbnBvc2l0aW9uLmVuZCA9IGZhY3RvcnkoJ2VuZCcpXG5cbmZ1bmN0aW9uIGZhY3RvcnkodHlwZSkge1xuICBwb2ludC5kaXNwbGF5TmFtZSA9IHR5cGVcblxuICByZXR1cm4gcG9pbnRcblxuICBmdW5jdGlvbiBwb2ludChub2RlKSB7XG4gICAgdmFyIHBvaW50ID0gKG5vZGUgJiYgbm9kZS5wb3NpdGlvbiAmJiBub2RlLnBvc2l0aW9uW3R5cGVdKSB8fCB7fVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IHBvaW50LmxpbmUgfHwgbnVsbCxcbiAgICAgIGNvbHVtbjogcG9pbnQuY29sdW1uIHx8IG51bGwsXG4gICAgICBvZmZzZXQ6IGlzTmFOKHBvaW50Lm9mZnNldCkgPyBudWxsIDogcG9pbnQub2Zmc2V0XG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBnZW5lcmF0ZWRcblxuZnVuY3Rpb24gZ2VuZXJhdGVkKG5vZGUpIHtcbiAgdmFyIHBvc2l0aW9uID0gb3B0aW9uYWwob3B0aW9uYWwobm9kZSkucG9zaXRpb24pXG4gIHZhciBzdGFydCA9IG9wdGlvbmFsKHBvc2l0aW9uLnN0YXJ0KVxuICB2YXIgZW5kID0gb3B0aW9uYWwocG9zaXRpb24uZW5kKVxuXG4gIHJldHVybiAhc3RhcnQubGluZSB8fCAhc3RhcnQuY29sdW1uIHx8ICFlbmQubGluZSB8fCAhZW5kLmNvbHVtblxufVxuXG5mdW5jdGlvbiBvcHRpb25hbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlIDoge31cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcblxubW9kdWxlLmV4cG9ydHMgPSBnZXREZWZpbml0aW9uRmFjdG9yeVxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gR2V0IGEgZGVmaW5pdGlvbiBpbiBgbm9kZWAgYnkgYGlkZW50aWZpZXJgLlxuZnVuY3Rpb24gZ2V0RGVmaW5pdGlvbkZhY3Rvcnkobm9kZSwgb3B0aW9ucykge1xuICByZXR1cm4gZ2V0dGVyRmFjdG9yeShnYXRoZXIobm9kZSwgb3B0aW9ucykpXG59XG5cbi8vIEdhdGhlciBhbGwgZGVmaW5pdGlvbnMgaW4gYG5vZGVgXG5mdW5jdGlvbiBnYXRoZXIobm9kZSwgb3B0aW9ucykge1xuICB2YXIgY2FjaGUgPSB7fVxuXG4gIGlmICghbm9kZSB8fCAhbm9kZS50eXBlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZGFzdC11dGlsLWRlZmluaXRpb25zIGV4cGVjdGVkIG5vZGUnKVxuICB9XG5cbiAgdmlzaXQobm9kZSwgJ2RlZmluaXRpb24nLCBvcHRpb25zICYmIG9wdGlvbnMuY29tbW9ubWFyayA/IGNvbW1vbm1hcmsgOiBub3JtYWwpXG5cbiAgcmV0dXJuIGNhY2hlXG5cbiAgZnVuY3Rpb24gY29tbW9ubWFyayhkZWZpbml0aW9uKSB7XG4gICAgdmFyIGlkID0gbm9ybWFsaXNlKGRlZmluaXRpb24uaWRlbnRpZmllcilcbiAgICBpZiAoIW93bi5jYWxsKGNhY2hlLCBpZCkpIHtcbiAgICAgIGNhY2hlW2lkXSA9IGRlZmluaXRpb25cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBub3JtYWwoZGVmaW5pdGlvbikge1xuICAgIGNhY2hlW25vcm1hbGlzZShkZWZpbml0aW9uLmlkZW50aWZpZXIpXSA9IGRlZmluaXRpb25cbiAgfVxufVxuXG4vLyBGYWN0b3J5IHRvIGdldCBhIG5vZGUgZnJvbSB0aGUgZ2l2ZW4gZGVmaW5pdGlvbi1jYWNoZS5cbmZ1bmN0aW9uIGdldHRlckZhY3RvcnkoY2FjaGUpIHtcbiAgcmV0dXJuIGdldHRlclxuXG4gIC8vIEdldCBhIG5vZGUgZnJvbSB0aGUgYm91bmQgZGVmaW5pdGlvbi1jYWNoZS5cbiAgZnVuY3Rpb24gZ2V0dGVyKGlkZW50aWZpZXIpIHtcbiAgICB2YXIgaWQgPSBpZGVudGlmaWVyICYmIG5vcm1hbGlzZShpZGVudGlmaWVyKVxuICAgIHJldHVybiBpZCAmJiBvd24uY2FsbChjYWNoZSwgaWQpID8gY2FjaGVbaWRdIDogbnVsbFxuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGlzZShpZGVudGlmaWVyKSB7XG4gIHJldHVybiBpZGVudGlmaWVyLnRvVXBwZXJDYXNlKClcbn1cbiIsIlxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gdHJpbTtcblxuZnVuY3Rpb24gdHJpbShzdHIpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMqfFxccyokL2csICcnKTtcbn1cblxuZXhwb3J0cy5sZWZ0ID0gZnVuY3Rpb24oc3RyKXtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzKi8sICcnKTtcbn07XG5cbmV4cG9ydHMucmlnaHQgPSBmdW5jdGlvbihzdHIpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xccyokLywgJycpO1xufTtcbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFsbFxuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIG9uZSA9IHJlcXVpcmUoJy4vb25lJylcblxuZnVuY3Rpb24gYWxsKGgsIHBhcmVudCkge1xuICB2YXIgbm9kZXMgPSBwYXJlbnQuY2hpbGRyZW4gfHwgW11cbiAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aFxuICB2YXIgdmFsdWVzID0gW11cbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHJlc3VsdFxuICB2YXIgaGVhZFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0ID0gb25lKGgsIG5vZGVzW2luZGV4XSwgcGFyZW50KVxuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgaWYgKGluZGV4ICYmIG5vZGVzW2luZGV4IC0gMV0udHlwZSA9PT0gJ2JyZWFrJykge1xuICAgICAgICBpZiAocmVzdWx0LnZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdHJpbS5sZWZ0KHJlc3VsdC52YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGhlYWQgPSByZXN1bHQuY2hpbGRyZW4gJiYgcmVzdWx0LmNoaWxkcmVuWzBdXG5cbiAgICAgICAgaWYgKGhlYWQgJiYgaGVhZC52YWx1ZSkge1xuICAgICAgICAgIGhlYWQudmFsdWUgPSB0cmltLmxlZnQoaGVhZC52YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KHJlc3VsdClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsdWVzXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBvbmVcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciBhbGwgPSByZXF1aXJlKCcuL2FsbCcpXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBUcmFuc2Zvcm0gYW4gdW5rbm93biBub2RlLlxuZnVuY3Rpb24gdW5rbm93bihoLCBub2RlKSB7XG4gIGlmICh0ZXh0KG5vZGUpKSB7XG4gICAgcmV0dXJuIGguYXVnbWVudChub2RlLCB1KCd0ZXh0Jywgbm9kZS52YWx1ZSkpXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnZGl2JywgYWxsKGgsIG5vZGUpKVxufVxuXG4vLyBWaXNpdCBhIG5vZGUuXG5mdW5jdGlvbiBvbmUoaCwgbm9kZSwgcGFyZW50KSB7XG4gIHZhciB0eXBlID0gbm9kZSAmJiBub2RlLnR5cGVcbiAgdmFyIGZuID0gb3duLmNhbGwoaC5oYW5kbGVycywgdHlwZSkgPyBoLmhhbmRsZXJzW3R5cGVdIDogbnVsbFxuXG4gIC8vIEZhaWwgb24gbm9uLW5vZGVzLlxuICBpZiAoIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG5vZGUsIGdvdCBgJyArIG5vZGUgKyAnYCcpXG4gIH1cblxuICByZXR1cm4gKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyA/IGZuIDogdW5rbm93bikoaCwgbm9kZSwgcGFyZW50KVxufVxuXG4vLyBDaGVjayBpZiB0aGUgbm9kZSBzaG91bGQgYmUgcmVuZGVyZXJlZCBhcyBhIHRleHQgbm9kZS5cbmZ1bmN0aW9uIHRleHQobm9kZSkge1xuICB2YXIgZGF0YSA9IG5vZGUuZGF0YSB8fCB7fVxuXG4gIGlmIChcbiAgICBvd24uY2FsbChkYXRhLCAnaE5hbWUnKSB8fFxuICAgIG93bi5jYWxsKGRhdGEsICdoUHJvcGVydGllcycpIHx8XG4gICAgb3duLmNhbGwoZGF0YSwgJ2hDaGlsZHJlbicpXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuICd2YWx1ZScgaW4gbm9kZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdGhlbWF0aWNCcmVha1xuXG5mdW5jdGlvbiB0aGVtYXRpY0JyZWFrKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2hyJylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXBcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcblxuLy8gV3JhcCBgbm9kZXNgIHdpdGggbGluZSBmZWVkcyBiZXR3ZWVuIGVhY2ggZW50cnkuXG4vLyBPcHRpb25hbGx5IGFkZHMgbGluZSBmZWVkcyBhdCB0aGUgc3RhcnQgYW5kIGVuZC5cbmZ1bmN0aW9uIHdyYXAobm9kZXMsIGxvb3NlKSB7XG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoID0gbm9kZXMubGVuZ3RoXG5cbiAgaWYgKGxvb3NlKSB7XG4gICAgcmVzdWx0LnB1c2godSgndGV4dCcsICdcXG4nKSlcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGluZGV4KSB7XG4gICAgICByZXN1bHQucHVzaCh1KCd0ZXh0JywgJ1xcbicpKVxuICAgIH1cblxuICAgIHJlc3VsdC5wdXNoKG5vZGVzW2luZGV4XSlcbiAgfVxuXG4gIGlmIChsb29zZSAmJiBub2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICByZXN1bHQucHVzaCh1KCd0ZXh0JywgJ1xcbicpKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdFxuXG52YXIgd3JhcCA9IHJlcXVpcmUoJy4uL3dyYXAnKVxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIGxpc3QoaCwgbm9kZSkge1xuICB2YXIgcHJvcHMgPSB7fVxuICB2YXIgbmFtZSA9IG5vZGUub3JkZXJlZCA/ICdvbCcgOiAndWwnXG4gIHZhciBpdGVtc1xuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoXG5cbiAgaWYgKHR5cGVvZiBub2RlLnN0YXJ0ID09PSAnbnVtYmVyJyAmJiBub2RlLnN0YXJ0ICE9PSAxKSB7XG4gICAgcHJvcHMuc3RhcnQgPSBub2RlLnN0YXJ0XG4gIH1cblxuICBpdGVtcyA9IGFsbChoLCBub2RlKVxuICBsZW5ndGggPSBpdGVtcy5sZW5ndGhcblxuICAvLyBMaWtlIEdpdEh1YiwgYWRkIGEgY2xhc3MgZm9yIGN1c3RvbSBzdHlsaW5nLlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChcbiAgICAgIGl0ZW1zW2luZGV4XS5wcm9wZXJ0aWVzLmNsYXNzTmFtZSAmJlxuICAgICAgaXRlbXNbaW5kZXhdLnByb3BlcnRpZXMuY2xhc3NOYW1lLmluZGV4T2YoJ3Rhc2stbGlzdC1pdGVtJykgIT09IC0xXG4gICAgKSB7XG4gICAgICBwcm9wcy5jbGFzc05hbWUgPSBbJ2NvbnRhaW5zLXRhc2stbGlzdCddXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsIG5hbWUsIHByb3BzLCB3cmFwKGl0ZW1zLCB0cnVlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdlbmVyYXRlRm9vdG5vdGVzXG5cbnZhciB0aGVtYXRpY0JyZWFrID0gcmVxdWlyZSgnLi9oYW5kbGVycy90aGVtYXRpYy1icmVhaycpXG52YXIgbGlzdCA9IHJlcXVpcmUoJy4vaGFuZGxlcnMvbGlzdCcpXG52YXIgd3JhcCA9IHJlcXVpcmUoJy4vd3JhcCcpXG5cbmZ1bmN0aW9uIGdlbmVyYXRlRm9vdG5vdGVzKGgpIHtcbiAgdmFyIGZvb3Rub3RlQnlJZCA9IGguZm9vdG5vdGVCeUlkXG4gIHZhciBmb290bm90ZU9yZGVyID0gaC5mb290bm90ZU9yZGVyXG4gIHZhciBsZW5ndGggPSBmb290bm90ZU9yZGVyLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGlzdEl0ZW1zID0gW11cbiAgdmFyIGRlZlxuICB2YXIgYmFja1JlZmVyZW5jZVxuICB2YXIgY29udGVudFxuICB2YXIgdGFpbFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGVmID0gZm9vdG5vdGVCeUlkW2Zvb3Rub3RlT3JkZXJbaW5kZXhdLnRvVXBwZXJDYXNlKCldXG5cbiAgICBpZiAoIWRlZikge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb250ZW50ID0gZGVmLmNoaWxkcmVuLmNvbmNhdCgpXG4gICAgdGFpbCA9IGNvbnRlbnRbY29udGVudC5sZW5ndGggLSAxXVxuICAgIGJhY2tSZWZlcmVuY2UgPSB7XG4gICAgICB0eXBlOiAnbGluaycsXG4gICAgICB1cmw6ICcjZm5yZWYtJyArIGRlZi5pZGVudGlmaWVyLFxuICAgICAgZGF0YToge2hQcm9wZXJ0aWVzOiB7Y2xhc3NOYW1lOiBbJ2Zvb3Rub3RlLWJhY2tyZWYnXX19LFxuICAgICAgY2hpbGRyZW46IFt7dHlwZTogJ3RleHQnLCB2YWx1ZTogJ+KGqSd9XVxuICAgIH1cblxuICAgIGlmICghdGFpbCB8fCB0YWlsLnR5cGUgIT09ICdwYXJhZ3JhcGgnKSB7XG4gICAgICB0YWlsID0ge3R5cGU6ICdwYXJhZ3JhcGgnLCBjaGlsZHJlbjogW119XG4gICAgICBjb250ZW50LnB1c2godGFpbClcbiAgICB9XG5cbiAgICB0YWlsLmNoaWxkcmVuLnB1c2goYmFja1JlZmVyZW5jZSlcblxuICAgIGxpc3RJdGVtcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdsaXN0SXRlbScsXG4gICAgICBkYXRhOiB7aFByb3BlcnRpZXM6IHtpZDogJ2ZuLScgKyBkZWYuaWRlbnRpZmllcn19LFxuICAgICAgY2hpbGRyZW46IGNvbnRlbnQsXG4gICAgICBwb3NpdGlvbjogZGVmLnBvc2l0aW9uXG4gICAgfSlcbiAgfVxuXG4gIGlmIChsaXN0SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBoKFxuICAgIG51bGwsXG4gICAgJ2RpdicsXG4gICAge2NsYXNzTmFtZTogWydmb290bm90ZXMnXX0sXG4gICAgd3JhcChcbiAgICAgIFtcbiAgICAgICAgdGhlbWF0aWNCcmVhayhoKSxcbiAgICAgICAgbGlzdChoLCB7dHlwZTogJ2xpc3QnLCBvcmRlcmVkOiB0cnVlLCBjaGlsZHJlbjogbGlzdEl0ZW1zfSlcbiAgICAgIF0sXG4gICAgICB0cnVlXG4gICAgKVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBibG9ja3F1b3RlXG5cbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gYmxvY2txdW90ZShoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdibG9ja3F1b3RlJywgd3JhcChhbGwoaCwgbm9kZSksIHRydWUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaGFyZEJyZWFrXG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbmZ1bmN0aW9uIGhhcmRCcmVhayhoLCBub2RlKSB7XG4gIHJldHVybiBbaChub2RlLCAnYnInKSwgdSgndGV4dCcsICdcXG4nKV1cbn1cbiIsIi8qIVxuICogcmVwZWF0LXN0cmluZyA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvcmVwZWF0LXN0cmluZz5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNSwgSm9uIFNjaGxpbmtlcnQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFJlc3VsdHMgY2FjaGVcbiAqL1xuXG52YXIgcmVzID0gJyc7XG52YXIgY2FjaGU7XG5cbi8qKlxuICogRXhwb3NlIGByZXBlYXRgXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSByZXBlYXQ7XG5cbi8qKlxuICogUmVwZWF0IHRoZSBnaXZlbiBgc3RyaW5nYCB0aGUgc3BlY2lmaWVkIGBudW1iZXJgXG4gKiBvZiB0aW1lcy5cbiAqXG4gKiAqKkV4YW1wbGU6KipcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKTtcbiAqIHJlcGVhdCgnQScsIDUpO1xuICogLy89PiBBQUFBQVxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJpbmdgIFRoZSBzdHJpbmcgdG8gcmVwZWF0XG4gKiBAcGFyYW0ge051bWJlcn0gYG51bWJlcmAgVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZ1xuICogQHJldHVybiB7U3RyaW5nfSBSZXBlYXRlZCBzdHJpbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcmVwZWF0KHN0ciwgbnVtKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIGEgc3RyaW5nJyk7XG4gIH1cblxuICAvLyBjb3ZlciBjb21tb24sIHF1aWNrIHVzZSBjYXNlc1xuICBpZiAobnVtID09PSAxKSByZXR1cm4gc3RyO1xuICBpZiAobnVtID09PSAyKSByZXR1cm4gc3RyICsgc3RyO1xuXG4gIHZhciBtYXggPSBzdHIubGVuZ3RoICogbnVtO1xuICBpZiAoY2FjaGUgIT09IHN0ciB8fCB0eXBlb2YgY2FjaGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgY2FjaGUgPSBzdHI7XG4gICAgcmVzID0gJyc7XG4gIH0gZWxzZSBpZiAocmVzLmxlbmd0aCA+PSBtYXgpIHtcbiAgICByZXR1cm4gcmVzLnN1YnN0cigwLCBtYXgpO1xuICB9XG5cbiAgd2hpbGUgKG1heCA+IHJlcy5sZW5ndGggJiYgbnVtID4gMSkge1xuICAgIGlmIChudW0gJiAxKSB7XG4gICAgICByZXMgKz0gc3RyO1xuICAgIH1cblxuICAgIG51bSA+Pj0gMTtcbiAgICBzdHIgKz0gc3RyO1xuICB9XG5cbiAgcmVzICs9IHN0cjtcbiAgcmVzID0gcmVzLnN1YnN0cigwLCBtYXgpO1xuICByZXR1cm4gcmVzO1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZGV0YWJcblxudmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKVxuXG52YXIgdGFiID0gMHgwOVxudmFyIGxpbmVGZWVkID0gMHgwYVxudmFyIGNhcnJpYWdlUmV0dXJuID0gMHgwZFxuXG4vLyBSZXBsYWNlIHRhYnMgd2l0aCBzcGFjZXMsIGJlaW5nIHNtYXJ0IGFib3V0IHdoaWNoIGNvbHVtbiB0aGUgdGFiIGlzIGF0IGFuZFxuLy8gd2hpY2ggc2l6ZSBzaG91bGQgYmUgdXNlZC5cbmZ1bmN0aW9uIGRldGFiKHZhbHVlLCBzaXplKSB7XG4gIHZhciBzdHJpbmcgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gIHZhciBsZW5ndGggPSBzdHJpbmcgJiYgdmFsdWUubGVuZ3RoXG4gIHZhciBzdGFydCA9IDBcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGNvbHVtbiA9IC0xXG4gIHZhciB0YWJTaXplID0gc2l6ZSB8fCA0XG4gIHZhciByZXN1bHRzID0gW11cbiAgdmFyIGNvZGVcbiAgdmFyIGFkZFxuXG4gIGlmICghc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZXRhYiBleHBlY3RlZCBzdHJpbmcnKVxuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgIGlmIChjb2RlID09PSB0YWIpIHtcbiAgICAgIGFkZCA9IHRhYlNpemUgLSAoKGNvbHVtbiArIDEpICUgdGFiU2l6ZSlcbiAgICAgIGNvbHVtbiArPSBhZGRcbiAgICAgIHJlc3VsdHMucHVzaCh2YWx1ZS5zbGljZShzdGFydCwgaW5kZXgpICsgcmVwZWF0KCcgJywgYWRkKSlcbiAgICAgIHN0YXJ0ID0gaW5kZXggKyAxXG4gICAgfSBlbHNlIGlmIChjb2RlID09PSBsaW5lRmVlZCB8fCBjb2RlID09PSBjYXJyaWFnZVJldHVybikge1xuICAgICAgY29sdW1uID0gLTFcbiAgICB9IGVsc2Uge1xuICAgICAgY29sdW1uKytcbiAgICB9XG4gIH1cblxuICByZXN1bHRzLnB1c2godmFsdWUuc2xpY2Uoc3RhcnQpKVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJycpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb2RlXG5cbnZhciBkZXRhYiA9IHJlcXVpcmUoJ2RldGFiJylcbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbmZ1bmN0aW9uIGNvZGUoaCwgbm9kZSkge1xuICB2YXIgdmFsdWUgPSBub2RlLnZhbHVlID8gZGV0YWIobm9kZS52YWx1ZSArICdcXG4nKSA6ICcnXG4gIHZhciBsYW5nID0gbm9kZS5sYW5nICYmIG5vZGUubGFuZy5tYXRjaCgvXlteIFxcdF0rKD89WyBcXHRdfCQpLylcbiAgdmFyIHByb3BzID0ge31cblxuICBpZiAobGFuZykge1xuICAgIHByb3BzLmNsYXNzTmFtZSA9IFsnbGFuZ3VhZ2UtJyArIGxhbmddXG4gIH1cblxuICByZXR1cm4gaChub2RlLnBvc2l0aW9uLCAncHJlJywgW2gobm9kZSwgJ2NvZGUnLCBwcm9wcywgW3UoJ3RleHQnLCB2YWx1ZSldKV0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpa2V0aHJvdWdoXG5cbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBzdHJpa2V0aHJvdWdoKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2RlbCcsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGhhc2lzXG5cbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBlbXBoYXNpcyhoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdlbScsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZvb3Rub3RlUmVmZXJlbmNlXG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbmZ1bmN0aW9uIGZvb3Rub3RlUmVmZXJlbmNlKGgsIG5vZGUpIHtcbiAgdmFyIGZvb3Rub3RlT3JkZXIgPSBoLmZvb3Rub3RlT3JkZXJcbiAgdmFyIGlkZW50aWZpZXIgPSBTdHJpbmcobm9kZS5pZGVudGlmaWVyKVxuXG4gIGlmIChmb290bm90ZU9yZGVyLmluZGV4T2YoaWRlbnRpZmllcikgPT09IC0xKSB7XG4gICAgZm9vdG5vdGVPcmRlci5wdXNoKGlkZW50aWZpZXIpXG4gIH1cblxuICByZXR1cm4gaChub2RlLnBvc2l0aW9uLCAnc3VwJywge2lkOiAnZm5yZWYtJyArIGlkZW50aWZpZXJ9LCBbXG4gICAgaChub2RlLCAnYScsIHtocmVmOiAnI2ZuLScgKyBpZGVudGlmaWVyLCBjbGFzc05hbWU6IFsnZm9vdG5vdGUtcmVmJ119LCBbXG4gICAgICB1KCd0ZXh0Jywgbm9kZS5sYWJlbCB8fCBpZGVudGlmaWVyKVxuICAgIF0pXG4gIF0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmb290bm90ZVxuXG52YXIgZm9vdG5vdGVSZWZlcmVuY2UgPSByZXF1aXJlKCcuL2Zvb3Rub3RlLXJlZmVyZW5jZScpXG5cbmZ1bmN0aW9uIGZvb3Rub3RlKGgsIG5vZGUpIHtcbiAgdmFyIGZvb3Rub3RlQnlJZCA9IGguZm9vdG5vdGVCeUlkXG4gIHZhciBmb290bm90ZU9yZGVyID0gaC5mb290bm90ZU9yZGVyXG4gIHZhciBpZGVudGlmaWVyID0gMVxuXG4gIHdoaWxlIChpZGVudGlmaWVyIGluIGZvb3Rub3RlQnlJZCkge1xuICAgIGlkZW50aWZpZXIrK1xuICB9XG5cbiAgaWRlbnRpZmllciA9IFN0cmluZyhpZGVudGlmaWVyKVxuXG4gIC8vIE5vIG5lZWQgdG8gY2hlY2sgaWYgYGlkZW50aWZpZXJgIGV4aXN0cyBpbiBgZm9vdG5vdGVPcmRlcmAsIGl04oCZcyBndWFyYW50ZWVkXG4gIC8vIHRvIG5vdCBleGlzdCBiZWNhdXNlIHdlIGp1c3QgZ2VuZXJhdGVkIGl0LlxuICBmb290bm90ZU9yZGVyLnB1c2goaWRlbnRpZmllcilcblxuICBmb290bm90ZUJ5SWRbaWRlbnRpZmllcl0gPSB7XG4gICAgdHlwZTogJ2Zvb3Rub3RlRGVmaW5pdGlvbicsXG4gICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICBjaGlsZHJlbjogW3t0eXBlOiAncGFyYWdyYXBoJywgY2hpbGRyZW46IG5vZGUuY2hpbGRyZW59XSxcbiAgICBwb3NpdGlvbjogbm9kZS5wb3NpdGlvblxuICB9XG5cbiAgcmV0dXJuIGZvb3Rub3RlUmVmZXJlbmNlKGgsIHtcbiAgICB0eXBlOiAnZm9vdG5vdGVSZWZlcmVuY2UnLFxuICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgcG9zaXRpb246IG5vZGUucG9zaXRpb25cbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGhlYWRpbmdcblxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIGhlYWRpbmcoaCwgbm9kZSkge1xuICByZXR1cm4gaChub2RlLCAnaCcgKyBub2RlLmRlcHRoLCBhbGwoaCwgbm9kZSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBodG1sXG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbi8vIFJldHVybiBlaXRoZXIgYSBgcmF3YCBub2RlIGluIGRhbmdlcm91cyBtb2RlLCBvdGhlcndpc2Ugbm90aGluZy5cbmZ1bmN0aW9uIGh0bWwoaCwgbm9kZSkge1xuICByZXR1cm4gaC5kYW5nZXJvdXMgPyBoLmF1Z21lbnQobm9kZSwgdSgncmF3Jywgbm9kZS52YWx1ZSkpIDogbnVsbFxufVxuIiwiXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIGVuY29kZUNhY2hlID0ge307XG5cblxuLy8gQ3JlYXRlIGEgbG9va3VwIGFycmF5IHdoZXJlIGFueXRoaW5nIGJ1dCBjaGFyYWN0ZXJzIGluIGBjaGFyc2Agc3RyaW5nXG4vLyBhbmQgYWxwaGFudW1lcmljIGNoYXJzIGlzIHBlcmNlbnQtZW5jb2RlZC5cbi8vXG5mdW5jdGlvbiBnZXRFbmNvZGVDYWNoZShleGNsdWRlKSB7XG4gIHZhciBpLCBjaCwgY2FjaGUgPSBlbmNvZGVDYWNoZVtleGNsdWRlXTtcbiAgaWYgKGNhY2hlKSB7IHJldHVybiBjYWNoZTsgfVxuXG4gIGNhY2hlID0gZW5jb2RlQ2FjaGVbZXhjbHVkZV0gPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgMTI4OyBpKyspIHtcbiAgICBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XG5cbiAgICBpZiAoL15bMC05YS16XSQvaS50ZXN0KGNoKSkge1xuICAgICAgLy8gYWx3YXlzIGFsbG93IHVuZW5jb2RlZCBhbHBoYW51bWVyaWMgY2hhcmFjdGVyc1xuICAgICAgY2FjaGUucHVzaChjaCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlLnB1c2goJyUnICsgKCcwJyArIGkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkpLnNsaWNlKC0yKSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGV4Y2x1ZGUubGVuZ3RoOyBpKyspIHtcbiAgICBjYWNoZVtleGNsdWRlLmNoYXJDb2RlQXQoaSldID0gZXhjbHVkZVtpXTtcbiAgfVxuXG4gIHJldHVybiBjYWNoZTtcbn1cblxuXG4vLyBFbmNvZGUgdW5zYWZlIGNoYXJhY3RlcnMgd2l0aCBwZXJjZW50LWVuY29kaW5nLCBza2lwcGluZyBhbHJlYWR5XG4vLyBlbmNvZGVkIHNlcXVlbmNlcy5cbi8vXG4vLyAgLSBzdHJpbmcgICAgICAgLSBzdHJpbmcgdG8gZW5jb2RlXG4vLyAgLSBleGNsdWRlICAgICAgLSBsaXN0IG9mIGNoYXJhY3RlcnMgdG8gaWdub3JlIChpbiBhZGRpdGlvbiB0byBhLXpBLVowLTkpXG4vLyAgLSBrZWVwRXNjYXBlZCAgLSBkb24ndCBlbmNvZGUgJyUnIGluIGEgY29ycmVjdCBlc2NhcGUgc2VxdWVuY2UgKGRlZmF1bHQ6IHRydWUpXG4vL1xuZnVuY3Rpb24gZW5jb2RlKHN0cmluZywgZXhjbHVkZSwga2VlcEVzY2FwZWQpIHtcbiAgdmFyIGksIGwsIGNvZGUsIG5leHRDb2RlLCBjYWNoZSxcbiAgICAgIHJlc3VsdCA9ICcnO1xuXG4gIGlmICh0eXBlb2YgZXhjbHVkZSAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBlbmNvZGUoc3RyaW5nLCBrZWVwRXNjYXBlZClcbiAgICBrZWVwRXNjYXBlZCAgPSBleGNsdWRlO1xuICAgIGV4Y2x1ZGUgPSBlbmNvZGUuZGVmYXVsdENoYXJzO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBrZWVwRXNjYXBlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBrZWVwRXNjYXBlZCA9IHRydWU7XG4gIH1cblxuICBjYWNoZSA9IGdldEVuY29kZUNhY2hlKGV4Y2x1ZGUpO1xuXG4gIGZvciAoaSA9IDAsIGwgPSBzdHJpbmcubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgY29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuXG4gICAgaWYgKGtlZXBFc2NhcGVkICYmIGNvZGUgPT09IDB4MjUgLyogJSAqLyAmJiBpICsgMiA8IGwpIHtcbiAgICAgIGlmICgvXlswLTlhLWZdezJ9JC9pLnRlc3Qoc3RyaW5nLnNsaWNlKGkgKyAxLCBpICsgMykpKSB7XG4gICAgICAgIHJlc3VsdCArPSBzdHJpbmcuc2xpY2UoaSwgaSArIDMpO1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlIDwgMTI4KSB7XG4gICAgICByZXN1bHQgKz0gY2FjaGVbY29kZV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY29kZSA+PSAweEQ4MDAgJiYgY29kZSA8PSAweERGRkYpIHtcbiAgICAgIGlmIChjb2RlID49IDB4RDgwMCAmJiBjb2RlIDw9IDB4REJGRiAmJiBpICsgMSA8IGwpIHtcbiAgICAgICAgbmV4dENvZGUgPSBzdHJpbmcuY2hhckNvZGVBdChpICsgMSk7XG4gICAgICAgIGlmIChuZXh0Q29kZSA+PSAweERDMDAgJiYgbmV4dENvZGUgPD0gMHhERkZGKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdbaV0gKyBzdHJpbmdbaSArIDFdKTtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc3VsdCArPSAnJUVGJUJGJUJEJztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc3VsdCArPSBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmVuY29kZS5kZWZhdWx0Q2hhcnMgICA9IFwiOy8/OkAmPSskLC1fLiF+KicoKSNcIjtcbmVuY29kZS5jb21wb25lbnRDaGFycyA9IFwiLV8uIX4qJygpXCI7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBlbmNvZGU7XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSByZXZlcnRcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciBhbGwgPSByZXF1aXJlKCcuL2FsbCcpXG5cbi8vIFJldHVybiB0aGUgY29udGVudCBvZiBhIHJlZmVyZW5jZSB3aXRob3V0IGRlZmluaXRpb24gYXMgTWFya2Rvd24uXG5mdW5jdGlvbiByZXZlcnQoaCwgbm9kZSkge1xuICB2YXIgc3VidHlwZSA9IG5vZGUucmVmZXJlbmNlVHlwZVxuICB2YXIgc3VmZml4ID0gJ10nXG4gIHZhciBjb250ZW50c1xuICB2YXIgaGVhZFxuICB2YXIgdGFpbFxuXG4gIGlmIChzdWJ0eXBlID09PSAnY29sbGFwc2VkJykge1xuICAgIHN1ZmZpeCArPSAnW10nXG4gIH0gZWxzZSBpZiAoc3VidHlwZSA9PT0gJ2Z1bGwnKSB7XG4gICAgc3VmZml4ICs9ICdbJyArIChub2RlLmxhYmVsIHx8IG5vZGUuaWRlbnRpZmllcikgKyAnXSdcbiAgfVxuXG4gIGlmIChub2RlLnR5cGUgPT09ICdpbWFnZVJlZmVyZW5jZScpIHtcbiAgICByZXR1cm4gdSgndGV4dCcsICchWycgKyBub2RlLmFsdCArIHN1ZmZpeClcbiAgfVxuXG4gIGNvbnRlbnRzID0gYWxsKGgsIG5vZGUpXG4gIGhlYWQgPSBjb250ZW50c1swXVxuXG4gIGlmIChoZWFkICYmIGhlYWQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgaGVhZC52YWx1ZSA9ICdbJyArIGhlYWQudmFsdWVcbiAgfSBlbHNlIHtcbiAgICBjb250ZW50cy51bnNoaWZ0KHUoJ3RleHQnLCAnWycpKVxuICB9XG5cbiAgdGFpbCA9IGNvbnRlbnRzW2NvbnRlbnRzLmxlbmd0aCAtIDFdXG5cbiAgaWYgKHRhaWwgJiYgdGFpbC50eXBlID09PSAndGV4dCcpIHtcbiAgICB0YWlsLnZhbHVlICs9IHN1ZmZpeFxuICB9IGVsc2Uge1xuICAgIGNvbnRlbnRzLnB1c2godSgndGV4dCcsIHN1ZmZpeCkpXG4gIH1cblxuICByZXR1cm4gY29udGVudHNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbGxhcHNlXG5cbi8vIGBjb2xsYXBzZSgnIFxcdFxcbmJhciBcXG5iYXpcXHQnKSAvLyAnIGJhciBiYXogJ2BcbmZ1bmN0aW9uIGNvbGxhcHNlKHZhbHVlKSB7XG4gIHJldHVybiBTdHJpbmcodmFsdWUpLnJlcGxhY2UoL1xccysvZywgJyAnKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdEl0ZW1cblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gbGlzdEl0ZW0oaCwgbm9kZSwgcGFyZW50KSB7XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW5cbiAgdmFyIGhlYWQgPSBjaGlsZHJlblswXVxuICB2YXIgcmF3ID0gYWxsKGgsIG5vZGUpXG4gIHZhciBsb29zZSA9IHBhcmVudCA/IGxpc3RMb29zZShwYXJlbnQpIDogbGlzdEl0ZW1Mb29zZShub2RlKVxuICB2YXIgcHJvcHMgPSB7fVxuICB2YXIgcmVzdWx0XG4gIHZhciBjb250YWluZXJcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcbiAgdmFyIGNoaWxkXG5cbiAgLy8gVGlnaHQgbGlzdHMgc2hvdWxkIG5vdCByZW5kZXIgYHBhcmFncmFwaGAgbm9kZXMgYXMgYHBgIGVsZW1lbnRzLlxuICBpZiAobG9vc2UpIHtcbiAgICByZXN1bHQgPSByYXdcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSBbXVxuICAgIGxlbmd0aCA9IHJhdy5sZW5ndGhcbiAgICBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hpbGQgPSByYXdbaW5kZXhdXG5cbiAgICAgIGlmIChjaGlsZC50YWdOYW1lID09PSAncCcpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChjaGlsZC5jaGlsZHJlbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygbm9kZS5jaGVja2VkID09PSAnYm9vbGVhbicpIHtcbiAgICBpZiAobG9vc2UgJiYgKCFoZWFkIHx8IGhlYWQudHlwZSAhPT0gJ3BhcmFncmFwaCcpKSB7XG4gICAgICByZXN1bHQudW5zaGlmdChoKG51bGwsICdwJywgW10pKVxuICAgIH1cblxuICAgIGNvbnRhaW5lciA9IGxvb3NlID8gcmVzdWx0WzBdLmNoaWxkcmVuIDogcmVzdWx0XG5cbiAgICBpZiAoY29udGFpbmVyLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY29udGFpbmVyLnVuc2hpZnQodSgndGV4dCcsICcgJykpXG4gICAgfVxuXG4gICAgY29udGFpbmVyLnVuc2hpZnQoXG4gICAgICBoKG51bGwsICdpbnB1dCcsIHtcbiAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgY2hlY2tlZDogbm9kZS5jaGVja2VkLFxuICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgfSlcbiAgICApXG5cbiAgICAvLyBBY2NvcmRpbmcgdG8gZ2l0aHViLW1hcmtkb3duLWNzcywgdGhpcyBjbGFzcyBoaWRlcyBidWxsZXQuXG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9naXRodWItbWFya2Rvd24tY3NzPi5cbiAgICBwcm9wcy5jbGFzc05hbWUgPSBbJ3Rhc2stbGlzdC1pdGVtJ11cbiAgfVxuXG4gIGlmIChsb29zZSAmJiByZXN1bHQubGVuZ3RoICE9PSAwKSB7XG4gICAgcmVzdWx0ID0gd3JhcChyZXN1bHQsIHRydWUpXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnbGknLCBwcm9wcywgcmVzdWx0KVxufVxuXG5mdW5jdGlvbiBsaXN0TG9vc2Uobm9kZSkge1xuICB2YXIgbG9vc2UgPSBub2RlLnNwcmVhZFxuICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuXG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcblxuICB3aGlsZSAoIWxvb3NlICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBsb29zZSA9IGxpc3RJdGVtTG9vc2UoY2hpbGRyZW5baW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIGxvb3NlXG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtTG9vc2Uobm9kZSkge1xuICB2YXIgc3ByZWFkID0gbm9kZS5zcHJlYWRcblxuICByZXR1cm4gc3ByZWFkID09PSB1bmRlZmluZWQgfHwgc3ByZWFkID09PSBudWxsXG4gICAgPyBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDFcbiAgICA6IHNwcmVhZFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbUxpbmVzXG5cbnZhciB3cyA9IC9bIFxcdF0qXFxuK1sgXFx0XSovZ1xudmFyIG5ld2xpbmUgPSAnXFxuJ1xuXG5mdW5jdGlvbiB0cmltTGluZXModmFsdWUpIHtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSkucmVwbGFjZSh3cywgbmV3bGluZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYmxvY2txdW90ZTogcmVxdWlyZSgnLi9ibG9ja3F1b3RlJyksXG4gIGJyZWFrOiByZXF1aXJlKCcuL2JyZWFrJyksXG4gIGNvZGU6IHJlcXVpcmUoJy4vY29kZScpLFxuICBkZWxldGU6IHJlcXVpcmUoJy4vZGVsZXRlJyksXG4gIGVtcGhhc2lzOiByZXF1aXJlKCcuL2VtcGhhc2lzJyksXG4gIGZvb3Rub3RlUmVmZXJlbmNlOiByZXF1aXJlKCcuL2Zvb3Rub3RlLXJlZmVyZW5jZScpLFxuICBmb290bm90ZTogcmVxdWlyZSgnLi9mb290bm90ZScpLFxuICBoZWFkaW5nOiByZXF1aXJlKCcuL2hlYWRpbmcnKSxcbiAgaHRtbDogcmVxdWlyZSgnLi9odG1sJyksXG4gIGltYWdlUmVmZXJlbmNlOiByZXF1aXJlKCcuL2ltYWdlLXJlZmVyZW5jZScpLFxuICBpbWFnZTogcmVxdWlyZSgnLi9pbWFnZScpLFxuICBpbmxpbmVDb2RlOiByZXF1aXJlKCcuL2lubGluZS1jb2RlJyksXG4gIGxpbmtSZWZlcmVuY2U6IHJlcXVpcmUoJy4vbGluay1yZWZlcmVuY2UnKSxcbiAgbGluazogcmVxdWlyZSgnLi9saW5rJyksXG4gIGxpc3RJdGVtOiByZXF1aXJlKCcuL2xpc3QtaXRlbScpLFxuICBsaXN0OiByZXF1aXJlKCcuL2xpc3QnKSxcbiAgcGFyYWdyYXBoOiByZXF1aXJlKCcuL3BhcmFncmFwaCcpLFxuICByb290OiByZXF1aXJlKCcuL3Jvb3QnKSxcbiAgc3Ryb25nOiByZXF1aXJlKCcuL3N0cm9uZycpLFxuICB0YWJsZTogcmVxdWlyZSgnLi90YWJsZScpLFxuICB0ZXh0OiByZXF1aXJlKCcuL3RleHQnKSxcbiAgdGhlbWF0aWNCcmVhazogcmVxdWlyZSgnLi90aGVtYXRpYy1icmVhaycpLFxuICB0b21sOiBpZ25vcmUsXG4gIHlhbWw6IGlnbm9yZSxcbiAgZGVmaW5pdGlvbjogaWdub3JlLFxuICBmb290bm90ZURlZmluaXRpb246IGlnbm9yZVxufVxuXG4vLyBSZXR1cm4gbm90aGluZyBmb3Igbm9kZXMgdGhhdCBhcmUgaWdub3JlZC5cbmZ1bmN0aW9uIGlnbm9yZSgpIHtcbiAgcmV0dXJuIG51bGxcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGltYWdlUmVmZXJlbmNlXG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdtZHVybC9lbmNvZGUnKVxudmFyIHJldmVydCA9IHJlcXVpcmUoJy4uL3JldmVydCcpXG5cbmZ1bmN0aW9uIGltYWdlUmVmZXJlbmNlKGgsIG5vZGUpIHtcbiAgdmFyIGRlZiA9IGguZGVmaW5pdGlvbihub2RlLmlkZW50aWZpZXIpXG4gIHZhciBwcm9wc1xuXG4gIGlmICghZGVmKSB7XG4gICAgcmV0dXJuIHJldmVydChoLCBub2RlKVxuICB9XG5cbiAgcHJvcHMgPSB7c3JjOiBub3JtYWxpemUoZGVmLnVybCB8fCAnJyksIGFsdDogbm9kZS5hbHR9XG5cbiAgaWYgKGRlZi50aXRsZSAhPT0gbnVsbCAmJiBkZWYudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gZGVmLnRpdGxlXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnaW1nJywgcHJvcHMpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJ21kdXJsL2VuY29kZScpXG5cbm1vZHVsZS5leHBvcnRzID0gaW1hZ2VcblxuZnVuY3Rpb24gaW1hZ2UoaCwgbm9kZSkge1xuICB2YXIgcHJvcHMgPSB7c3JjOiBub3JtYWxpemUobm9kZS51cmwpLCBhbHQ6IG5vZGUuYWx0fVxuXG4gIGlmIChub2RlLnRpdGxlICE9PSBudWxsICYmIG5vZGUudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gbm9kZS50aXRsZVxuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgJ2ltZycsIHByb3BzKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaW5saW5lQ29kZVxuXG52YXIgY29sbGFwc2UgPSByZXF1aXJlKCdjb2xsYXBzZS13aGl0ZS1zcGFjZScpXG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKVxuXG5mdW5jdGlvbiBpbmxpbmVDb2RlKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2NvZGUnLCBbdSgndGV4dCcsIGNvbGxhcHNlKG5vZGUudmFsdWUpKV0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsaW5rUmVmZXJlbmNlXG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdtZHVybC9lbmNvZGUnKVxudmFyIHJldmVydCA9IHJlcXVpcmUoJy4uL3JldmVydCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gbGlua1JlZmVyZW5jZShoLCBub2RlKSB7XG4gIHZhciBkZWYgPSBoLmRlZmluaXRpb24obm9kZS5pZGVudGlmaWVyKVxuICB2YXIgcHJvcHNcblxuICBpZiAoIWRlZikge1xuICAgIHJldHVybiByZXZlcnQoaCwgbm9kZSlcbiAgfVxuXG4gIHByb3BzID0ge2hyZWY6IG5vcm1hbGl6ZShkZWYudXJsIHx8ICcnKX1cblxuICBpZiAoZGVmLnRpdGxlICE9PSBudWxsICYmIGRlZi50aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvcHMudGl0bGUgPSBkZWYudGl0bGVcbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsICdhJywgcHJvcHMsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbm9ybWFsaXplID0gcmVxdWlyZSgnbWR1cmwvZW5jb2RlJylcbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpbmtcblxuZnVuY3Rpb24gbGluayhoLCBub2RlKSB7XG4gIHZhciBwcm9wcyA9IHtocmVmOiBub3JtYWxpemUobm9kZS51cmwpfVxuXG4gIGlmIChub2RlLnRpdGxlICE9PSBudWxsICYmIG5vZGUudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gbm9kZS50aXRsZVxuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgJ2EnLCBwcm9wcywgYWxsKGgsIG5vZGUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyYWdyYXBoXG5cbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBwYXJhZ3JhcGgoaCwgbm9kZSkge1xuICByZXR1cm4gaChub2RlLCAncCcsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3RcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gcm9vdChoLCBub2RlKSB7XG4gIHJldHVybiBoLmF1Z21lbnQobm9kZSwgdSgncm9vdCcsIHdyYXAoYWxsKGgsIG5vZGUpKSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJvbmdcblxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIHN0cm9uZyhoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdzdHJvbmcnLCBhbGwoaCwgbm9kZSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0YWJsZVxuXG52YXIgcG9zaXRpb24gPSByZXF1aXJlKCd1bmlzdC11dGlsLXBvc2l0aW9uJylcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gdGFibGUoaCwgbm9kZSkge1xuICB2YXIgcm93cyA9IG5vZGUuY2hpbGRyZW5cbiAgdmFyIGluZGV4ID0gcm93cy5sZW5ndGhcbiAgdmFyIGFsaWduID0gbm9kZS5hbGlnblxuICB2YXIgYWxpZ25MZW5ndGggPSBhbGlnbi5sZW5ndGhcbiAgdmFyIHJlc3VsdCA9IFtdXG4gIHZhciBwb3NcbiAgdmFyIHJvd1xuICB2YXIgb3V0XG4gIHZhciBuYW1lXG4gIHZhciBjZWxsXG5cbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICByb3cgPSByb3dzW2luZGV4XS5jaGlsZHJlblxuICAgIG5hbWUgPSBpbmRleCA9PT0gMCA/ICd0aCcgOiAndGQnXG4gICAgcG9zID0gYWxpZ25MZW5ndGhcbiAgICBvdXQgPSBbXVxuXG4gICAgd2hpbGUgKHBvcy0tKSB7XG4gICAgICBjZWxsID0gcm93W3Bvc11cbiAgICAgIG91dFtwb3NdID0gaChjZWxsLCBuYW1lLCB7YWxpZ246IGFsaWduW3Bvc119LCBjZWxsID8gYWxsKGgsIGNlbGwpIDogW10pXG4gICAgfVxuXG4gICAgcmVzdWx0W2luZGV4XSA9IGgocm93c1tpbmRleF0sICd0cicsIHdyYXAob3V0LCB0cnVlKSlcbiAgfVxuXG4gIHJldHVybiBoKFxuICAgIG5vZGUsXG4gICAgJ3RhYmxlJyxcbiAgICB3cmFwKFxuICAgICAgW1xuICAgICAgICBoKHJlc3VsdFswXS5wb3NpdGlvbiwgJ3RoZWFkJywgd3JhcChbcmVzdWx0WzBdXSwgdHJ1ZSkpLFxuICAgICAgICBoKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXJ0OiBwb3NpdGlvbi5zdGFydChyZXN1bHRbMV0pLFxuICAgICAgICAgICAgZW5kOiBwb3NpdGlvbi5lbmQocmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSlcbiAgICAgICAgICB9LFxuICAgICAgICAgICd0Ym9keScsXG4gICAgICAgICAgd3JhcChyZXN1bHQuc2xpY2UoMSksIHRydWUpXG4gICAgICAgIClcbiAgICAgIF0sXG4gICAgICB0cnVlXG4gICAgKVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0ZXh0XG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG52YXIgdHJpbUxpbmVzID0gcmVxdWlyZSgndHJpbS1saW5lcycpXG5cbmZ1bmN0aW9uIHRleHQoaCwgbm9kZSkge1xuICByZXR1cm4gaC5hdWdtZW50KG5vZGUsIHUoJ3RleHQnLCB0cmltTGluZXMobm9kZS52YWx1ZSkpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdG9IYXN0XG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcbnZhciBwb3NpdGlvbiA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtcG9zaXRpb24nKVxudmFyIGdlbmVyYXRlZCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtZ2VuZXJhdGVkJylcbnZhciBkZWZpbml0aW9ucyA9IHJlcXVpcmUoJ21kYXN0LXV0aWwtZGVmaW5pdGlvbnMnKVxudmFyIG9uZSA9IHJlcXVpcmUoJy4vb25lJylcbnZhciBmb290ZXIgPSByZXF1aXJlKCcuL2Zvb3RlcicpXG52YXIgaGFuZGxlcnMgPSByZXF1aXJlKCcuL2hhbmRsZXJzJylcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbi8vIEZhY3RvcnkgdG8gdHJhbnNmb3JtLlxuZnVuY3Rpb24gZmFjdG9yeSh0cmVlLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGRhbmdlcm91cyA9IHNldHRpbmdzLmFsbG93RGFuZ2Vyb3VzSFRNTFxuICB2YXIgZm9vdG5vdGVCeUlkID0ge31cblxuICBoLmRhbmdlcm91cyA9IGRhbmdlcm91c1xuICBoLmRlZmluaXRpb24gPSBkZWZpbml0aW9ucyh0cmVlLCBzZXR0aW5ncylcbiAgaC5mb290bm90ZUJ5SWQgPSBmb290bm90ZUJ5SWRcbiAgaC5mb290bm90ZU9yZGVyID0gW11cbiAgaC5hdWdtZW50ID0gYXVnbWVudFxuICBoLmhhbmRsZXJzID0geHRlbmQoaGFuZGxlcnMsIHNldHRpbmdzLmhhbmRsZXJzIHx8IHt9KVxuXG4gIHZpc2l0KHRyZWUsICdmb290bm90ZURlZmluaXRpb24nLCBvbmZvb3Rub3RlZGVmaW5pdGlvbilcblxuICByZXR1cm4gaFxuXG4gIC8vIEZpbmFsaXNlIHRoZSBjcmVhdGVkIGByaWdodGAsIGEgaGFzdCBub2RlLCBmcm9tIGBsZWZ0YCwgYW4gbWRhc3Qgbm9kZS5cbiAgZnVuY3Rpb24gYXVnbWVudChsZWZ0LCByaWdodCkge1xuICAgIHZhciBkYXRhXG4gICAgdmFyIGN0eFxuXG4gICAgLy8gSGFuZGxlIGBkYXRhLmhOYW1lYCwgYGRhdGEuaFByb3BlcnRpZXMsIGBkYXRhLmhDaGlsZHJlbmAuXG4gICAgaWYgKGxlZnQgJiYgJ2RhdGEnIGluIGxlZnQpIHtcbiAgICAgIGRhdGEgPSBsZWZ0LmRhdGFcblxuICAgICAgaWYgKHJpZ2h0LnR5cGUgPT09ICdlbGVtZW50JyAmJiBkYXRhLmhOYW1lKSB7XG4gICAgICAgIHJpZ2h0LnRhZ05hbWUgPSBkYXRhLmhOYW1lXG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodC50eXBlID09PSAnZWxlbWVudCcgJiYgZGF0YS5oUHJvcGVydGllcykge1xuICAgICAgICByaWdodC5wcm9wZXJ0aWVzID0geHRlbmQocmlnaHQucHJvcGVydGllcywgZGF0YS5oUHJvcGVydGllcylcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0LmNoaWxkcmVuICYmIGRhdGEuaENoaWxkcmVuKSB7XG4gICAgICAgIHJpZ2h0LmNoaWxkcmVuID0gZGF0YS5oQ2hpbGRyZW5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjdHggPSBsZWZ0ICYmIGxlZnQucG9zaXRpb24gPyBsZWZ0IDoge3Bvc2l0aW9uOiBsZWZ0fVxuXG4gICAgaWYgKCFnZW5lcmF0ZWQoY3R4KSkge1xuICAgICAgcmlnaHQucG9zaXRpb24gPSB7XG4gICAgICAgIHN0YXJ0OiBwb3NpdGlvbi5zdGFydChjdHgpLFxuICAgICAgICBlbmQ6IHBvc2l0aW9uLmVuZChjdHgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJpZ2h0XG4gIH1cblxuICAvLyBDcmVhdGUgYW4gZWxlbWVudCBmb3IgYG5vZGVgLlxuICBmdW5jdGlvbiBoKG5vZGUsIHRhZ05hbWUsIHByb3BzLCBjaGlsZHJlbikge1xuICAgIGlmIChcbiAgICAgIChjaGlsZHJlbiA9PT0gdW5kZWZpbmVkIHx8IGNoaWxkcmVuID09PSBudWxsKSAmJlxuICAgICAgdHlwZW9mIHByb3BzID09PSAnb2JqZWN0JyAmJlxuICAgICAgJ2xlbmd0aCcgaW4gcHJvcHNcbiAgICApIHtcbiAgICAgIGNoaWxkcmVuID0gcHJvcHNcbiAgICAgIHByb3BzID0ge31cbiAgICB9XG5cbiAgICByZXR1cm4gYXVnbWVudChub2RlLCB7XG4gICAgICB0eXBlOiAnZWxlbWVudCcsXG4gICAgICB0YWdOYW1lOiB0YWdOYW1lLFxuICAgICAgcHJvcGVydGllczogcHJvcHMgfHwge30sXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW4gfHwgW11cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25mb290bm90ZWRlZmluaXRpb24oZGVmaW5pdGlvbikge1xuICAgIHZhciBpZCA9IFN0cmluZyhkZWZpbml0aW9uLmlkZW50aWZpZXIpLnRvVXBwZXJDYXNlKClcblxuICAgIC8vIE1pbWljayBDTSBiZWhhdmlvciBvZiBsaW5rIGRlZmluaXRpb25zLlxuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9zeW50YXgtdHJlZS9tZGFzdC11dGlsLWRlZmluaXRpb25zL2Jsb2IvOGQ0OGU1Ny9pbmRleC5qcyNMMjY+LlxuICAgIGlmICghb3duLmNhbGwoZm9vdG5vdGVCeUlkLCBpZCkpIHtcbiAgICAgIGZvb3Rub3RlQnlJZFtpZF0gPSBkZWZpbml0aW9uXG4gICAgfVxuICB9XG59XG5cbi8vIFRyYW5zZm9ybSBgdHJlZWAsIHdoaWNoIGlzIGFuIG1kYXN0IG5vZGUsIHRvIGEgaGFzdCBub2RlLlxuZnVuY3Rpb24gdG9IYXN0KHRyZWUsIG9wdGlvbnMpIHtcbiAgdmFyIGggPSBmYWN0b3J5KHRyZWUsIG9wdGlvbnMpXG4gIHZhciBub2RlID0gb25lKGgsIHRyZWUpXG4gIHZhciBmb290ID0gZm9vdGVyKGgpXG5cbiAgaWYgKGZvb3QpIHtcbiAgICBub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5jb25jYXQodSgndGV4dCcsICdcXG4nKSwgZm9vdClcbiAgfVxuXG4gIHJldHVybiBub2RlXG59XG4iLCIndXNlIHN0cmljdCdcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWInKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBtZGFzdDJoYXN0ID0gcmVxdWlyZSgnbWRhc3QtdXRpbC10by1oYXN0JylcblxubW9kdWxlLmV4cG9ydHMgPSByZW1hcmsycmVoeXBlXG5cbi8vIEF0dGFjaGVyLlxuLy8gSWYgYSBkZXN0aW5hdGlvbiBpcyBnaXZlbiwgcnVucyB0aGUgZGVzdGluYXRpb24gd2l0aCB0aGUgbmV3IGhhc3QgdHJlZVxuLy8gKGJyaWRnZSBtb2RlKS5cbi8vIFdpdGhvdXQgZGVzdGluYXRpb24sIHJldHVybnMgdGhlIHRyZWU6IGZ1cnRoZXIgcGx1Z2lucyBydW4gb24gdGhhdCB0cmVlXG4vLyAobXV0YXRlIG1vZGUpLlxuZnVuY3Rpb24gcmVtYXJrMnJlaHlwZShkZXN0aW5hdGlvbiwgb3B0aW9ucykge1xuICBpZiAoZGVzdGluYXRpb24gJiYgIWRlc3RpbmF0aW9uLnByb2Nlc3MpIHtcbiAgICBvcHRpb25zID0gZGVzdGluYXRpb25cbiAgICBkZXN0aW5hdGlvbiA9IG51bGxcbiAgfVxuXG4gIHJldHVybiBkZXN0aW5hdGlvbiA/IGJyaWRnZShkZXN0aW5hdGlvbiwgb3B0aW9ucykgOiBtdXRhdGUob3B0aW9ucylcbn1cblxuLy8gQnJpZGdlIG1vZGUuXG4vLyBSdW5zIHRoZSBkZXN0aW5hdGlvbiB3aXRoIHRoZSBuZXcgaGFzdCB0cmVlLlxuZnVuY3Rpb24gYnJpZGdlKGRlc3RpbmF0aW9uLCBvcHRpb25zKSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lclxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybWVyKG5vZGUsIGZpbGUsIG5leHQpIHtcbiAgICBkZXN0aW5hdGlvbi5ydW4obWRhc3QyaGFzdChub2RlLCBvcHRpb25zKSwgZmlsZSwgZG9uZSlcblxuICAgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7XG4gICAgICBuZXh0KGVycilcbiAgICB9XG4gIH1cbn1cblxuLy8gTXV0YXRlLW1vZGUuXG4vLyBGdXJ0aGVyIHRyYW5zZm9ybWVycyBydW4gb24gdGhlIGhhc3QgdHJlZS5cbmZ1bmN0aW9uIG11dGF0ZShvcHRpb25zKSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lclxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybWVyKG5vZGUpIHtcbiAgICByZXR1cm4gbWRhc3QyaGFzdChub2RlLCBvcHRpb25zKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB3aGl0ZXNwYWNlXG5cbnZhciBmcm9tQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGVcbnZhciByZSA9IC9cXHMvXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuZnVuY3Rpb24gd2hpdGVzcGFjZShjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIHJlLnRlc3QoXG4gICAgdHlwZW9mIGNoYXJhY3RlciA9PT0gJ251bWJlcicgPyBmcm9tQ29kZShjaGFyYWN0ZXIpIDogY2hhcmFjdGVyLmNoYXJBdCgwKVxuICApXG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpO1xuXG52YXIgQ19QSVBFID0gJ3wnO1xudmFyIERPVUJMRSA9ICd8fCc7XG5cbmZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKERPVUJMRSwgZnJvbUluZGV4KTtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBwbHVnaW4oKSB7XG4gIGZ1bmN0aW9uIGlubGluZVRva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5nZm0gfHwgdmFsdWUuc3Vic3RyKDAsIDIpICE9PSBET1VCTEUgfHwgdmFsdWUuc3Vic3RyKDAsIDQpID09PSBET1VCTEUgKyBET1VCTEUgfHwgd2hpdGVzcGFjZSh2YWx1ZS5jaGFyQXQoMikpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNoYXJhY3RlciA9ICcnO1xuICAgIHZhciBwcmV2aW91cyA9ICcnO1xuICAgIHZhciBwcmVjZWRpbmcgPSAnJztcbiAgICB2YXIgc3VidmFsdWUgPSAnJztcbiAgICB2YXIgaW5kZXggPSAxO1xuICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgdmFyIG5vdyA9IGVhdC5ub3coKTtcbiAgICBub3cuY29sdW1uICs9IDI7XG4gICAgbm93Lm9mZnNldCArPSAyO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IENfUElQRSAmJiBwcmV2aW91cyA9PT0gQ19QSVBFICYmICghcHJlY2VkaW5nIHx8ICF3aGl0ZXNwYWNlKHByZWNlZGluZykpKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgICAgaWYgKHNpbGVudCkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBlYXQoRE9VQkxFICsgc3VidmFsdWUgKyBET1VCTEUpKHtcbiAgICAgICAgICB0eXBlOiAna2JkJyxcbiAgICAgICAgICBjaGlsZHJlbjogdGhpcy50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KSxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBoTmFtZTogJ2tiZCdcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBzdWJ2YWx1ZSArPSBwcmV2aW91cztcbiAgICAgIHByZWNlZGluZyA9IHByZXZpb3VzO1xuICAgICAgcHJldmlvdXMgPSBjaGFyYWN0ZXI7XG4gICAgfVxuICB9XG5cbiAgaW5saW5lVG9rZW5pemVyLmxvY2F0b3IgPSBsb2NhdG9yO1xuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBpbmxpbmVUb2tlbml6ZXJcblxuICB2YXIgaW5saW5lVG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuaW5saW5lVG9rZW5pemVycztcbiAgdmFyIGlubGluZU1ldGhvZHMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZU1ldGhvZHM7XG4gIGlubGluZVRva2VuaXplcnMua2JkID0gaW5saW5lVG9rZW5pemVyO1xuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3RleHQnKSwgMCwgJ2tiZCcpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyOyAvLyBTdHJpbmdpZnlcblxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICB2YXIgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnM7XG5cbiAgICB2aXNpdG9ycy5rYmQgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIFwifHxcIi5jb25jYXQodGhpcy5hbGwobm9kZSkuam9pbignJyksIFwifHxcIik7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBsdWdpbjsiLCJleHBvcnRzLmlzUmVtYXJrUGFyc2VyID0gaXNSZW1hcmtQYXJzZXJcbmV4cG9ydHMuaXNSZW1hcmtDb21waWxlciA9IGlzUmVtYXJrQ29tcGlsZXJcblxuZnVuY3Rpb24gaXNSZW1hcmtQYXJzZXIocGFyc2VyKSB7XG4gIHJldHVybiBCb29sZWFuKHBhcnNlciAmJiBwYXJzZXIucHJvdG90eXBlICYmIHBhcnNlci5wcm90b3R5cGUuYmxvY2tUb2tlbml6ZXJzKVxufVxuXG5mdW5jdGlvbiBpc1JlbWFya0NvbXBpbGVyKGNvbXBpbGVyKSB7XG4gIHJldHVybiBCb29sZWFuKGNvbXBpbGVyICYmIGNvbXBpbGVyLnByb3RvdHlwZSAmJiBjb21waWxlci5wcm90b3R5cGUudmlzaXRvcnMpXG59XG4iLCJ2YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpXG5cbm1vZHVsZS5leHBvcnRzID0gbWF0aElubGluZVxuXG5jb25zdCB0YWIgPSA5IC8vICdcXHQnXG5jb25zdCBzcGFjZSA9IDMyIC8vICcgJ1xuY29uc3QgZG9sbGFyU2lnbiA9IDM2IC8vICckJ1xuY29uc3QgZGlnaXQwID0gNDggLy8gJzAnXG5jb25zdCBkaWdpdDkgPSA1NyAvLyAnOSdcbmNvbnN0IGJhY2tzbGFzaCA9IDkyIC8vICdcXFxcJ1xuXG5jb25zdCBjbGFzc0xpc3QgPSBbJ21hdGgnLCAnbWF0aC1pbmxpbmUnXVxuY29uc3QgbWF0aERpc3BsYXkgPSAnbWF0aC1kaXNwbGF5J1xuXG5mdW5jdGlvbiBtYXRoSW5saW5lKG9wdGlvbnMpIHtcbiAgY29uc3QgcGFyc2VyID0gdGhpcy5QYXJzZXJcbiAgY29uc3QgY29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyXG5cbiAgaWYgKHV0aWwuaXNSZW1hcmtQYXJzZXIocGFyc2VyKSkge1xuICAgIGF0dGFjaFBhcnNlcihwYXJzZXIsIG9wdGlvbnMpXG4gIH1cblxuICBpZiAodXRpbC5pc1JlbWFya0NvbXBpbGVyKGNvbXBpbGVyKSkge1xuICAgIGF0dGFjaENvbXBpbGVyKGNvbXBpbGVyLCBvcHRpb25zKVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaFBhcnNlcihwYXJzZXIsIG9wdGlvbnMpIHtcbiAgY29uc3QgcHJvdG8gPSBwYXJzZXIucHJvdG90eXBlXG4gIGNvbnN0IGlubGluZU1ldGhvZHMgPSBwcm90by5pbmxpbmVNZXRob2RzXG5cbiAgbWF0aElubGluZVRva2VuaXplci5sb2NhdG9yID0gbG9jYXRvclxuXG4gIHByb3RvLmlubGluZVRva2VuaXplcnMubWF0aCA9IG1hdGhJbmxpbmVUb2tlbml6ZXJcblxuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3RleHQnKSwgMCwgJ21hdGgnKVxuXG4gIGZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKCckJywgZnJvbUluZGV4KVxuICB9XG5cbiAgZnVuY3Rpb24gbWF0aElubGluZVRva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBjb25zdCBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgICBsZXQgZG91YmxlID0gZmFsc2VcbiAgICBsZXQgZXNjYXBlZCA9IGZhbHNlXG4gICAgbGV0IGluZGV4ID0gMFxuICAgIGxldCBwcmV2XG4gICAgbGV0IGNvZGVcbiAgICBsZXQgbmV4dFxuICAgIGxldCBjb250ZW50U3RhcnRcbiAgICBsZXQgY29udGVudEVuZFxuICAgIGxldCB2YWx1ZUVuZFxuICAgIGxldCBjb250ZW50XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IGJhY2tzbGFzaCkge1xuICAgICAgZXNjYXBlZCA9IHRydWVcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgIT09IGRvbGxhclNpZ24pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGluZGV4KytcblxuICAgIC8vIFN1cHBvcnQgZXNjYXBlZCBkb2xsYXJzLlxuICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlYXQodmFsdWUuc2xpY2UoMCwgaW5kZXgpKSh7dHlwZTogJ3RleHQnLCB2YWx1ZTogJyQnfSlcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IGRvbGxhclNpZ24pIHtcbiAgICAgIGRvdWJsZSA9IHRydWVcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBuZXh0ID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgIC8vIE9wZW5pbmcgZmVuY2UgY2Fubm90IGJlIGZvbGxvd2VkIGJ5IGEgc3BhY2Ugb3IgYSB0YWIuXG4gICAgaWYgKG5leHQgPT09IHNwYWNlIHx8IG5leHQgPT09IHRhYikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29udGVudFN0YXJ0ID0gaW5kZXhcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY29kZSA9IG5leHRcbiAgICAgIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4ICsgMSlcblxuICAgICAgaWYgKGNvZGUgPT09IGRvbGxhclNpZ24pIHtcbiAgICAgICAgcHJldiA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggLSAxKVxuXG4gICAgICAgIC8vIENsb3NpbmcgZmVuY2UgY2Fubm90IGJlIHByZWNlZGVkIGJ5IGEgc3BhY2Ugb3IgYSB0YWIsIG9yIGZvbGxvd2VkIGJ5XG4gICAgICAgIC8vIGEgZGlnaXQuXG4gICAgICAgIC8vIElmIGEgZG91YmxlIG1hcmtlciB3YXMgdXNlZCB0byBvcGVuLCB0aGUgY2xvc2luZyBmZW5jZSBtdXN0IGNvbnNpc3RcbiAgICAgICAgLy8gb2YgdHdvIGRvbGxhcnMgYXMgd2VsbC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXYgIT09IHNwYWNlICYmXG4gICAgICAgICAgcHJldiAhPT0gdGFiICYmXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgICAgIChuZXh0ICE9PSBuZXh0IHx8IG5leHQgPCBkaWdpdDAgfHwgbmV4dCA+IGRpZ2l0OSkgJiZcbiAgICAgICAgICAoIWRvdWJsZSB8fCBuZXh0ID09PSBkb2xsYXJTaWduKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb250ZW50RW5kID0gaW5kZXggLSAxXG5cbiAgICAgICAgICBpbmRleCsrXG5cbiAgICAgICAgICBpZiAoZG91YmxlKSB7XG4gICAgICAgICAgICBpbmRleCsrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFsdWVFbmQgPSBpbmRleFxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gYmFja3NsYXNoKSB7XG4gICAgICAgIGluZGV4KytcbiAgICAgICAgbmV4dCA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggKyAxKVxuICAgICAgfVxuXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICBpZiAoc2lsZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnRlbnQgPSB2YWx1ZS5zbGljZShjb250ZW50U3RhcnQsIGNvbnRlbnRFbmQgKyAxKVxuXG4gICAgcmV0dXJuIGVhdCh2YWx1ZS5zbGljZSgwLCB2YWx1ZUVuZCkpKHtcbiAgICAgIHR5cGU6ICdpbmxpbmVNYXRoJyxcbiAgICAgIHZhbHVlOiBjb250ZW50LFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogJ3NwYW4nLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NMaXN0LmNvbmNhdChcbiAgICAgICAgICAgIGRvdWJsZSAmJiBvcHRpb25zLmlubGluZU1hdGhEb3VibGUgPyBbbWF0aERpc3BsYXldIDogW11cbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIGhDaGlsZHJlbjogW3t0eXBlOiAndGV4dCcsIHZhbHVlOiBjb250ZW50fV1cbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaENvbXBpbGVyKGNvbXBpbGVyKSB7XG4gIGNvbnN0IHByb3RvID0gY29tcGlsZXIucHJvdG90eXBlXG5cbiAgcHJvdG8udmlzaXRvcnMuaW5saW5lTWF0aCA9IGNvbXBpbGVJbmxpbmVNYXRoXG5cbiAgZnVuY3Rpb24gY29tcGlsZUlubGluZU1hdGgobm9kZSkge1xuICAgIGxldCBmZW5jZSA9ICckJ1xuICAgIGNvbnN0IGNsYXNzZXMgPVxuICAgICAgKG5vZGUuZGF0YSAmJiBub2RlLmRhdGEuaFByb3BlcnRpZXMgJiYgbm9kZS5kYXRhLmhQcm9wZXJ0aWVzLmNsYXNzTmFtZSkgfHxcbiAgICAgIFtdXG5cbiAgICBpZiAoY2xhc3Nlcy5pbmNsdWRlcyhtYXRoRGlzcGxheSkpIHtcbiAgICAgIGZlbmNlID0gJyQkJ1xuICAgIH1cblxuICAgIHJldHVybiBmZW5jZSArIG5vZGUudmFsdWUgKyBmZW5jZVxuICB9XG59XG4iLCJjb25zdCB1dGlsID0gcmVxdWlyZSgnLi91dGlsJylcblxubW9kdWxlLmV4cG9ydHMgPSBtYXRoQmxvY2tcblxuY29uc3QgbGluZUZlZWQgPSAxMCAvLyAgJ1xcbidcbmNvbnN0IHNwYWNlID0gMzIgLy8gJyAnXG5jb25zdCBkb2xsYXJTaWduID0gMzYgLy8gJyQnXG5cbmNvbnN0IGxpbmVGZWVkQ2hhciA9ICdcXG4nXG5jb25zdCBkb2xsYXJTaWduQ2hhciA9ICckJ1xuXG5jb25zdCBtaW5GZW5jZUNvdW50ID0gMlxuXG5jb25zdCBjbGFzc0xpc3QgPSBbJ21hdGgnLCAnbWF0aC1kaXNwbGF5J11cblxuZnVuY3Rpb24gbWF0aEJsb2NrKCkge1xuICBjb25zdCBwYXJzZXIgPSB0aGlzLlBhcnNlclxuICBjb25zdCBjb21waWxlciA9IHRoaXMuQ29tcGlsZXJcblxuICBpZiAodXRpbC5pc1JlbWFya1BhcnNlcihwYXJzZXIpKSB7XG4gICAgYXR0YWNoUGFyc2VyKHBhcnNlcilcbiAgfVxuXG4gIGlmICh1dGlsLmlzUmVtYXJrQ29tcGlsZXIoY29tcGlsZXIpKSB7XG4gICAgYXR0YWNoQ29tcGlsZXIoY29tcGlsZXIpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0YWNoUGFyc2VyKHBhcnNlcikge1xuICBjb25zdCBwcm90byA9IHBhcnNlci5wcm90b3R5cGVcbiAgY29uc3QgYmxvY2tNZXRob2RzID0gcHJvdG8uYmxvY2tNZXRob2RzXG4gIGNvbnN0IGludGVycnVwdFBhcmFncmFwaCA9IHByb3RvLmludGVycnVwdFBhcmFncmFwaFxuICBjb25zdCBpbnRlcnJ1cHRMaXN0ID0gcHJvdG8uaW50ZXJydXB0TGlzdFxuICBjb25zdCBpbnRlcnJ1cHRCbG9ja3F1b3RlID0gcHJvdG8uaW50ZXJydXB0QmxvY2txdW90ZVxuXG4gIHByb3RvLmJsb2NrVG9rZW5pemVycy5tYXRoID0gbWF0aEJsb2NrVG9rZW5pemVyXG5cbiAgYmxvY2tNZXRob2RzLnNwbGljZShibG9ja01ldGhvZHMuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgJ21hdGgnKVxuXG4gIC8vIEluamVjdCBtYXRoIHRvIGludGVycnVwdCBydWxlc1xuICBpbnRlcnJ1cHRQYXJhZ3JhcGguc3BsaWNlKGludGVycnVwdFBhcmFncmFwaC5pbmRleE9mKCdmZW5jZWRDb2RlJykgKyAxLCAwLCBbXG4gICAgJ21hdGgnXG4gIF0pXG4gIGludGVycnVwdExpc3Quc3BsaWNlKGludGVycnVwdExpc3QuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydtYXRoJ10pXG4gIGludGVycnVwdEJsb2NrcXVvdGUuc3BsaWNlKGludGVycnVwdEJsb2NrcXVvdGUuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgW1xuICAgICdtYXRoJ1xuICBdKVxuXG4gIGZ1bmN0aW9uIG1hdGhCbG9ja1Rva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gICAgdmFyIGluZGV4ID0gMFxuICAgIGxldCBjb2RlXG4gICAgbGV0IGNvbnRlbnRcbiAgICBsZXQgbGluZUVuZFxuICAgIGxldCBsaW5lSW5kZXhcbiAgICBsZXQgb3BlbmluZ0ZlbmNlSW5kZW50U2l6ZVxuICAgIGxldCBvcGVuaW5nRmVuY2VTaXplXG4gICAgbGV0IG9wZW5pbmdGZW5jZUNvbnRlbnRTdGFydFxuICAgIGxldCBjbG9zaW5nRmVuY2VcbiAgICBsZXQgY2xvc2luZ0ZlbmNlU2l6ZVxuICAgIGxldCBsaW5lQ29udGVudFN0YXJ0XG4gICAgbGV0IGxpbmVDb250ZW50RW5kXG5cbiAgICAvLyBTa2lwIGluaXRpYWwgc3BhY2luZy5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgdmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IHNwYWNlKSB7XG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgb3BlbmluZ0ZlbmNlSW5kZW50U2l6ZSA9IGluZGV4XG5cbiAgICAvLyBTa2lwIHRoZSBmZW5jZS5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgdmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IGRvbGxhclNpZ24pIHtcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBvcGVuaW5nRmVuY2VTaXplID0gaW5kZXggLSBvcGVuaW5nRmVuY2VJbmRlbnRTaXplXG5cbiAgICAvLyBFeGl0IGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggb2YgYSBmZW5jZS5cbiAgICBpZiAob3BlbmluZ0ZlbmNlU2l6ZSA8IG1pbkZlbmNlQ291bnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNraXAgc3BhY2luZyBhZnRlciB0aGUgZmVuY2UuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoICYmIHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpID09PSBzcGFjZSkge1xuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIG9wZW5pbmdGZW5jZUNvbnRlbnRTdGFydCA9IGluZGV4XG5cbiAgICAvLyBFYXQgZXZlcnl0aGluZyBhZnRlciB0aGUgZmVuY2UuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgICAgLy8gV2UgZG9u4oCZdCBhbGxvdyBkb2xsYXIgc2lnbnMgaGVyZSwgYXMgdGhhdCBjb3VsZCBpbnRlcmZlcmUgd2l0aCBpbmxpbmVcbiAgICAgIC8vIG1hdGguXG4gICAgICBpZiAoY29kZSA9PT0gZG9sbGFyU2lnbikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGNvZGUgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgIT09IGxpbmVGZWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoc2lsZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnRlbnQgPSBbXVxuXG4gICAgaWYgKG9wZW5pbmdGZW5jZUNvbnRlbnRTdGFydCAhPT0gaW5kZXgpIHtcbiAgICAgIGNvbnRlbnQucHVzaCh2YWx1ZS5zbGljZShvcGVuaW5nRmVuY2VDb250ZW50U3RhcnQsIGluZGV4KSlcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gICAgbGluZUVuZCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWRDaGFyLCBpbmRleCArIDEpXG4gICAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gbGVuZ3RoIDogbGluZUVuZFxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjbG9zaW5nRmVuY2UgPSBmYWxzZVxuICAgICAgbGluZUNvbnRlbnRTdGFydCA9IGluZGV4XG4gICAgICBsaW5lQ29udGVudEVuZCA9IGxpbmVFbmRcbiAgICAgIGxpbmVJbmRleCA9IGxpbmVFbmRcbiAgICAgIGNsb3NpbmdGZW5jZVNpemUgPSAwXG5cbiAgICAgIC8vIEZpcnN0LCBsZXTigJlzIHNlZSBpZiB0aGlzIGlzIGEgdmFsaWQgY2xvc2luZyBmZW5jZS5cbiAgICAgIC8vIFNraXAgdHJhaWxpbmcgd2hpdGUgc3BhY2VcbiAgICAgIHdoaWxlIChcbiAgICAgICAgbGluZUluZGV4ID4gbGluZUNvbnRlbnRTdGFydCAmJlxuICAgICAgICB2YWx1ZS5jaGFyQ29kZUF0KGxpbmVJbmRleCAtIDEpID09PSBzcGFjZVxuICAgICAgKSB7XG4gICAgICAgIGxpbmVJbmRleC0tXG4gICAgICB9XG5cbiAgICAgIC8vIFNraXAgdGhlIGZlbmNlLlxuICAgICAgd2hpbGUgKFxuICAgICAgICBsaW5lSW5kZXggPiBsaW5lQ29udGVudFN0YXJ0ICYmXG4gICAgICAgIHZhbHVlLmNoYXJDb2RlQXQobGluZUluZGV4IC0gMSkgPT09IGRvbGxhclNpZ25cbiAgICAgICkge1xuICAgICAgICBjbG9zaW5nRmVuY2VTaXplKytcbiAgICAgICAgbGluZUluZGV4LS1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIHZhbGlkIGNsb3NpbmcgZmVuY2UgbGluZS5cbiAgICAgIGlmIChcbiAgICAgICAgb3BlbmluZ0ZlbmNlU2l6ZSA8PSBjbG9zaW5nRmVuY2VTaXplICYmXG4gICAgICAgIHZhbHVlLmluZGV4T2YoZG9sbGFyU2lnbkNoYXIsIGxpbmVDb250ZW50U3RhcnQpID09PSBsaW5lSW5kZXhcbiAgICAgICkge1xuICAgICAgICBjbG9zaW5nRmVuY2UgPSB0cnVlXG4gICAgICAgIGxpbmVDb250ZW50RW5kID0gbGluZUluZGV4XG4gICAgICB9XG5cbiAgICAgIC8vIFN3ZWV0LCBuZXh0LCB3ZSBuZWVkIHRvIHRyaW0gdGhlIGxpbmUuXG4gICAgICAvLyBTa2lwIGluaXRpYWwgc3BhY2luZy5cbiAgICAgIHdoaWxlIChcbiAgICAgICAgbGluZUNvbnRlbnRTdGFydCA8PSBsaW5lQ29udGVudEVuZCAmJlxuICAgICAgICBsaW5lQ29udGVudFN0YXJ0IC0gaW5kZXggPCBvcGVuaW5nRmVuY2VJbmRlbnRTaXplICYmXG4gICAgICAgIHZhbHVlLmNoYXJDb2RlQXQobGluZUNvbnRlbnRTdGFydCkgPT09IHNwYWNlXG4gICAgICApIHtcbiAgICAgICAgbGluZUNvbnRlbnRTdGFydCsrXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoaXMgaXMgYSBjbG9zaW5nIGZlbmNlLCBza2lwIGZpbmFsIHNwYWNpbmcuXG4gICAgICBpZiAoY2xvc2luZ0ZlbmNlKSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICBsaW5lQ29udGVudEVuZCA+IGxpbmVDb250ZW50U3RhcnQgJiZcbiAgICAgICAgICB2YWx1ZS5jaGFyQ29kZUF0KGxpbmVDb250ZW50RW5kIC0gMSkgPT09IHNwYWNlXG4gICAgICAgICkge1xuICAgICAgICAgIGxpbmVDb250ZW50RW5kLS1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY29udGVudCBsaW5lLCBvciBpZiB0aGVyZSBpcyBjb250ZW50IGJlZm9yZSB0aGUgZmVuY2U6XG4gICAgICBpZiAoIWNsb3NpbmdGZW5jZSB8fCBsaW5lQ29udGVudFN0YXJ0ICE9PSBsaW5lQ29udGVudEVuZCkge1xuICAgICAgICBjb250ZW50LnB1c2godmFsdWUuc2xpY2UobGluZUNvbnRlbnRTdGFydCwgbGluZUNvbnRlbnRFbmQpKVxuICAgICAgfVxuXG4gICAgICBpZiAoY2xvc2luZ0ZlbmNlKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gbGluZUVuZCArIDFcbiAgICAgIGxpbmVFbmQgPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkQ2hhciwgaW5kZXggKyAxKVxuICAgICAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gbGVuZ3RoIDogbGluZUVuZFxuICAgIH1cblxuICAgIGNvbnRlbnQgPSBjb250ZW50LmpvaW4oJ1xcbicpXG5cbiAgICByZXR1cm4gZWF0KHZhbHVlLnNsaWNlKDAsIGxpbmVFbmQpKSh7XG4gICAgICB0eXBlOiAnbWF0aCcsXG4gICAgICB2YWx1ZTogY29udGVudCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaE5hbWU6ICdkaXYnLFxuICAgICAgICBoUHJvcGVydGllczoge2NsYXNzTmFtZTogY2xhc3NMaXN0LmNvbmNhdCgpfSxcbiAgICAgICAgaENoaWxkcmVuOiBbe3R5cGU6ICd0ZXh0JywgdmFsdWU6IGNvbnRlbnR9XVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0YWNoQ29tcGlsZXIoY29tcGlsZXIpIHtcbiAgY29uc3QgcHJvdG8gPSBjb21waWxlci5wcm90b3R5cGVcblxuICBwcm90by52aXNpdG9ycy5tYXRoID0gY29tcGlsZUJsb2NrTWF0aFxuXG4gIGZ1bmN0aW9uIGNvbXBpbGVCbG9ja01hdGgobm9kZSkge1xuICAgIHJldHVybiAnJCRcXG4nICsgbm9kZS52YWx1ZSArICdcXG4kJCdcbiAgfVxufVxuIiwiY29uc3QgaW5saW5lUGx1Z2luID0gcmVxdWlyZSgnLi9pbmxpbmUnKVxuY29uc3QgYmxvY2tQbHVnaW4gPSByZXF1aXJlKCcuL2Jsb2NrJylcblxubW9kdWxlLmV4cG9ydHMgPSBtYXRoXG5cbmZ1bmN0aW9uIG1hdGgob3B0cykge1xuICBpZiAob3B0cyA9PSBudWxsKSBvcHRzID0ge31cbiAgYmxvY2tQbHVnaW4uY2FsbCh0aGlzLCBvcHRzKVxuICBpbmxpbmVQbHVnaW4uY2FsbCh0aGlzLCBvcHRzKVxufVxuIiwiLypcblN5bnRheCBoaWdobGlnaHRpbmcgd2l0aCBsYW5ndWFnZSBhdXRvZGV0ZWN0aW9uLlxuaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvXG4qL1xuXG4oZnVuY3Rpb24oZmFjdG9yeSkge1xuXG4gIC8vIEZpbmQgdGhlIGdsb2JhbCBvYmplY3QgZm9yIGV4cG9ydCB0byBib3RoIHRoZSBicm93c2VyIGFuZCB3ZWIgd29ya2Vycy5cbiAgdmFyIGdsb2JhbE9iamVjdCA9IHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnICYmIHdpbmRvdyB8fFxuICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHNlbGYgPT09ICdvYmplY3QnICYmIHNlbGY7XG5cbiAgLy8gU2V0dXAgaGlnaGxpZ2h0LmpzIGZvciBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLiBGaXJzdCBpcyBOb2RlLmpzIG9yXG4gIC8vIENvbW1vbkpTLlxuICAvLyBgbm9kZVR5cGVgIGlzIGNoZWNrZWQgdG8gZW5zdXJlIHRoYXQgYGV4cG9ydHNgIGlzIG5vdCBhIEhUTUwgZWxlbWVudC5cbiAgaWYodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnICYmICFleHBvcnRzLm5vZGVUeXBlKSB7XG4gICAgZmFjdG9yeShleHBvcnRzKTtcbiAgfSBlbHNlIGlmKGdsb2JhbE9iamVjdCkge1xuICAgIC8vIEV4cG9ydCBobGpzIGdsb2JhbGx5IGV2ZW4gd2hlbiB1c2luZyBBTUQgZm9yIGNhc2VzIHdoZW4gdGhpcyBzY3JpcHRcbiAgICAvLyBpcyBsb2FkZWQgd2l0aCBvdGhlcnMgdGhhdCBtYXkgc3RpbGwgZXhwZWN0IGEgZ2xvYmFsIGhsanMuXG4gICAgZ2xvYmFsT2JqZWN0LmhsanMgPSBmYWN0b3J5KHt9KTtcblxuICAgIC8vIEZpbmFsbHkgcmVnaXN0ZXIgdGhlIGdsb2JhbCBobGpzIHdpdGggQU1ELlxuICAgIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgZGVmaW5lKFtdLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5obGpzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn0oZnVuY3Rpb24oaGxqcykge1xuICAvLyBDb252ZW5pZW5jZSB2YXJpYWJsZXMgZm9yIGJ1aWxkLWluIG9iamVjdHNcbiAgdmFyIEFycmF5UHJvdG8gPSBbXSxcbiAgICAgIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cztcblxuICAvLyBHbG9iYWwgaW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgd2l0aGluIHRoZSBoaWdobGlnaHQuanMgbGlicmFyeS5cbiAgdmFyIGxhbmd1YWdlcyA9IHt9LFxuICAgICAgYWxpYXNlcyAgID0ge307XG5cbiAgLy8gUmVndWxhciBleHByZXNzaW9ucyB1c2VkIHRocm91Z2hvdXQgdGhlIGhpZ2hsaWdodC5qcyBsaWJyYXJ5LlxuICB2YXIgbm9IaWdobGlnaHRSZSAgICA9IC9eKG5vLT9oaWdobGlnaHR8cGxhaW58dGV4dCkkL2ksXG4gICAgICBsYW5ndWFnZVByZWZpeFJlID0gL1xcYmxhbmcoPzp1YWdlKT8tKFtcXHctXSspXFxiL2ksXG4gICAgICBmaXhNYXJrdXBSZSAgICAgID0gLygoXig8W14+XSs+fFxcdHwpK3woPzpcXG4pKSkvZ207XG5cbiAgLy8gVGhlIG9iamVjdCB3aWxsIGJlIGFzc2lnbmVkIGJ5IHRoZSBidWlsZCB0b29sLiBJdCB1c2VkIHRvIHN5bmNocm9uaXplIEFQSVxuICAvLyBvZiBleHRlcm5hbCBsYW5ndWFnZSBmaWxlcyB3aXRoIG1pbmlmaWVkIHZlcnNpb24gb2YgdGhlIGhpZ2hsaWdodC5qcyBsaWJyYXJ5LlxuICB2YXIgQVBJX1JFUExBQ0VTO1xuXG4gIHZhciBzcGFuRW5kVGFnID0gJzwvc3Bhbj4nO1xuXG4gIC8vIEdsb2JhbCBvcHRpb25zIHVzZWQgd2hlbiB3aXRoaW4gZXh0ZXJuYWwgQVBJcy4gVGhpcyBpcyBtb2RpZmllZCB3aGVuXG4gIC8vIGNhbGxpbmcgdGhlIGBobGpzLmNvbmZpZ3VyZWAgZnVuY3Rpb24uXG4gIHZhciBvcHRpb25zID0ge1xuICAgIGNsYXNzUHJlZml4OiAnaGxqcy0nLFxuICAgIHRhYlJlcGxhY2U6IG51bGwsXG4gICAgdXNlQlI6IGZhbHNlLFxuICAgIGxhbmd1YWdlczogdW5kZWZpbmVkXG4gIH07XG5cbiAgLy8ga2V5d29yZHMgdGhhdCBzaG91bGQgaGF2ZSBubyBkZWZhdWx0IHJlbGV2YW5jZSB2YWx1ZVxuICB2YXIgQ09NTU9OX0tFWVdPUkRTID0gJ29mIGFuZCBmb3IgaW4gbm90IG9yIGlmIHRoZW4nLnNwbGl0KCcgJylcblxuXG4gIC8qIFV0aWxpdHkgZnVuY3Rpb25zICovXG5cbiAgZnVuY3Rpb24gZXNjYXBlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRhZyhub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRlc3RSZShyZSwgbGV4ZW1lKSB7XG4gICAgdmFyIG1hdGNoID0gcmUgJiYgcmUuZXhlYyhsZXhlbWUpO1xuICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaC5pbmRleCA9PT0gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzTm90SGlnaGxpZ2h0ZWQobGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gbm9IaWdobGlnaHRSZS50ZXN0KGxhbmd1YWdlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJsb2NrTGFuZ3VhZ2UoYmxvY2spIHtcbiAgICB2YXIgaSwgbWF0Y2gsIGxlbmd0aCwgX2NsYXNzO1xuICAgIHZhciBjbGFzc2VzID0gYmxvY2suY2xhc3NOYW1lICsgJyAnO1xuXG4gICAgY2xhc3NlcyArPSBibG9jay5wYXJlbnROb2RlID8gYmxvY2sucGFyZW50Tm9kZS5jbGFzc05hbWUgOiAnJztcblxuICAgIC8vIGxhbmd1YWdlLSogdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG5vbi1wcmVmaXhlZCBjbGFzcyBuYW1lcy5cbiAgICBtYXRjaCA9IGxhbmd1YWdlUHJlZml4UmUuZXhlYyhjbGFzc2VzKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBnZXRMYW5ndWFnZShtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICduby1oaWdobGlnaHQnO1xuICAgIH1cblxuICAgIGNsYXNzZXMgPSBjbGFzc2VzLnNwbGl0KC9cXHMrLyk7XG5cbiAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBjbGFzc2VzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBfY2xhc3MgPSBjbGFzc2VzW2ldO1xuXG4gICAgICBpZiAoaXNOb3RIaWdobGlnaHRlZChfY2xhc3MpIHx8IGdldExhbmd1YWdlKF9jbGFzcykpIHtcbiAgICAgICAgcmV0dXJuIF9jbGFzcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbmhlcml0KHBhcmVudCkgeyAgLy8gaW5oZXJpdChwYXJlbnQsIG92ZXJyaWRlX29iaiwgb3ZlcnJpZGVfb2JqLCAuLi4pXG4gICAgdmFyIGtleTtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIG9iamVjdHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gICAgZm9yIChrZXkgaW4gcGFyZW50KVxuICAgICAgcmVzdWx0W2tleV0gPSBwYXJlbnRba2V5XTtcbiAgICBvYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqKSB7XG4gICAgICBmb3IgKGtleSBpbiBvYmopXG4gICAgICAgIHJlc3VsdFtrZXldID0gb2JqW2tleV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qIFN0cmVhbSBtZXJnaW5nICovXG5cbiAgZnVuY3Rpb24gbm9kZVN0cmVhbShub2RlKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIChmdW5jdGlvbiBfbm9kZVN0cmVhbShub2RlLCBvZmZzZXQpIHtcbiAgICAgIGZvciAodmFyIGNoaWxkID0gbm9kZS5maXJzdENoaWxkOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZykge1xuICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT09IDMpXG4gICAgICAgICAgb2Zmc2V0ICs9IGNoaWxkLm5vZGVWYWx1ZS5sZW5ndGg7XG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgZXZlbnQ6ICdzdGFydCcsXG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgIG5vZGU6IGNoaWxkXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb2Zmc2V0ID0gX25vZGVTdHJlYW0oY2hpbGQsIG9mZnNldCk7XG4gICAgICAgICAgLy8gUHJldmVudCB2b2lkIGVsZW1lbnRzIGZyb20gaGF2aW5nIGFuIGVuZCB0YWcgdGhhdCB3b3VsZCBhY3R1YWxseVxuICAgICAgICAgIC8vIGRvdWJsZSB0aGVtIGluIHRoZSBvdXRwdXQuIFRoZXJlIGFyZSBtb3JlIHZvaWQgZWxlbWVudHMgaW4gSFRNTFxuICAgICAgICAgIC8vIGJ1dCB3ZSBsaXN0IG9ubHkgdGhvc2UgcmVhbGlzdGljYWxseSBleHBlY3RlZCBpbiBjb2RlIGRpc3BsYXkuXG4gICAgICAgICAgaWYgKCF0YWcoY2hpbGQpLm1hdGNoKC9icnxocnxpbWd8aW5wdXQvKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICBldmVudDogJ3N0b3AnLFxuICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgICAgbm9kZTogY2hpbGRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9KShub2RlLCAwKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbWVyZ2VTdHJlYW1zKG9yaWdpbmFsLCBoaWdobGlnaHRlZCwgdmFsdWUpIHtcbiAgICB2YXIgcHJvY2Vzc2VkID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgdmFyIG5vZGVTdGFjayA9IFtdO1xuXG4gICAgZnVuY3Rpb24gc2VsZWN0U3RyZWFtKCkge1xuICAgICAgaWYgKCFvcmlnaW5hbC5sZW5ndGggfHwgIWhpZ2hsaWdodGVkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gb3JpZ2luYWwubGVuZ3RoID8gb3JpZ2luYWwgOiBoaWdobGlnaHRlZDtcbiAgICAgIH1cbiAgICAgIGlmIChvcmlnaW5hbFswXS5vZmZzZXQgIT09IGhpZ2hsaWdodGVkWzBdLm9mZnNldCkge1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsWzBdLm9mZnNldCA8IGhpZ2hsaWdodGVkWzBdLm9mZnNldCkgPyBvcmlnaW5hbCA6IGhpZ2hsaWdodGVkO1xuICAgICAgfVxuXG4gICAgICAvKlxuICAgICAgVG8gYXZvaWQgc3RhcnRpbmcgdGhlIHN0cmVhbSBqdXN0IGJlZm9yZSBpdCBzaG91bGQgc3RvcCB0aGUgb3JkZXIgaXNcbiAgICAgIGVuc3VyZWQgdGhhdCBvcmlnaW5hbCBhbHdheXMgc3RhcnRzIGZpcnN0IGFuZCBjbG9zZXMgbGFzdDpcblxuICAgICAgaWYgKGV2ZW50MSA9PSAnc3RhcnQnICYmIGV2ZW50MiA9PSAnc3RhcnQnKVxuICAgICAgICByZXR1cm4gb3JpZ2luYWw7XG4gICAgICBpZiAoZXZlbnQxID09ICdzdGFydCcgJiYgZXZlbnQyID09ICdzdG9wJylcbiAgICAgICAgcmV0dXJuIGhpZ2hsaWdodGVkO1xuICAgICAgaWYgKGV2ZW50MSA9PSAnc3RvcCcgJiYgZXZlbnQyID09ICdzdGFydCcpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbDtcbiAgICAgIGlmIChldmVudDEgPT0gJ3N0b3AnICYmIGV2ZW50MiA9PSAnc3RvcCcpXG4gICAgICAgIHJldHVybiBoaWdobGlnaHRlZDtcblxuICAgICAgLi4uIHdoaWNoIGlzIGNvbGxhcHNlZCB0bzpcbiAgICAgICovXG4gICAgICByZXR1cm4gaGlnaGxpZ2h0ZWRbMF0uZXZlbnQgPT09ICdzdGFydCcgPyBvcmlnaW5hbCA6IGhpZ2hsaWdodGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9wZW4obm9kZSkge1xuICAgICAgZnVuY3Rpb24gYXR0cl9zdHIoYSkge3JldHVybiAnICcgKyBhLm5vZGVOYW1lICsgJz1cIicgKyBlc2NhcGUoYS52YWx1ZSkucmVwbGFjZSgnXCInLCAnJnF1b3Q7JykgKyAnXCInO31cbiAgICAgIHJlc3VsdCArPSAnPCcgKyB0YWcobm9kZSkgKyBBcnJheVByb3RvLm1hcC5jYWxsKG5vZGUuYXR0cmlidXRlcywgYXR0cl9zdHIpLmpvaW4oJycpICsgJz4nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb3NlKG5vZGUpIHtcbiAgICAgIHJlc3VsdCArPSAnPC8nICsgdGFnKG5vZGUpICsgJz4nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlcihldmVudCkge1xuICAgICAgKGV2ZW50LmV2ZW50ID09PSAnc3RhcnQnID8gb3BlbiA6IGNsb3NlKShldmVudC5ub2RlKTtcbiAgICB9XG5cbiAgICB3aGlsZSAob3JpZ2luYWwubGVuZ3RoIHx8IGhpZ2hsaWdodGVkLmxlbmd0aCkge1xuICAgICAgdmFyIHN0cmVhbSA9IHNlbGVjdFN0cmVhbSgpO1xuICAgICAgcmVzdWx0ICs9IGVzY2FwZSh2YWx1ZS5zdWJzdHJpbmcocHJvY2Vzc2VkLCBzdHJlYW1bMF0ub2Zmc2V0KSk7XG4gICAgICBwcm9jZXNzZWQgPSBzdHJlYW1bMF0ub2Zmc2V0O1xuICAgICAgaWYgKHN0cmVhbSA9PT0gb3JpZ2luYWwpIHtcbiAgICAgICAgLypcbiAgICAgICAgT24gYW55IG9wZW5pbmcgb3IgY2xvc2luZyB0YWcgb2YgdGhlIG9yaWdpbmFsIG1hcmt1cCB3ZSBmaXJzdCBjbG9zZVxuICAgICAgICB0aGUgZW50aXJlIGhpZ2hsaWdodGVkIG5vZGUgc3RhY2ssIHRoZW4gcmVuZGVyIHRoZSBvcmlnaW5hbCB0YWcgYWxvbmdcbiAgICAgICAgd2l0aCBhbGwgdGhlIGZvbGxvd2luZyBvcmlnaW5hbCB0YWdzIGF0IHRoZSBzYW1lIG9mZnNldCBhbmQgdGhlblxuICAgICAgICByZW9wZW4gYWxsIHRoZSB0YWdzIG9uIHRoZSBoaWdobGlnaHRlZCBzdGFjay5cbiAgICAgICAgKi9cbiAgICAgICAgbm9kZVN0YWNrLnJldmVyc2UoKS5mb3JFYWNoKGNsb3NlKTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIHJlbmRlcihzdHJlYW0uc3BsaWNlKDAsIDEpWzBdKTtcbiAgICAgICAgICBzdHJlYW0gPSBzZWxlY3RTdHJlYW0oKTtcbiAgICAgICAgfSB3aGlsZSAoc3RyZWFtID09PSBvcmlnaW5hbCAmJiBzdHJlYW0ubGVuZ3RoICYmIHN0cmVhbVswXS5vZmZzZXQgPT09IHByb2Nlc3NlZCk7XG4gICAgICAgIG5vZGVTdGFjay5yZXZlcnNlKCkuZm9yRWFjaChvcGVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzdHJlYW1bMF0uZXZlbnQgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICBub2RlU3RhY2sucHVzaChzdHJlYW1bMF0ubm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZVN0YWNrLnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcihzdHJlYW0uc3BsaWNlKDAsIDEpWzBdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdCArIGVzY2FwZSh2YWx1ZS5zdWJzdHIocHJvY2Vzc2VkKSk7XG4gIH1cblxuICAvKiBJbml0aWFsaXphdGlvbiAqL1xuXG4gIGZ1bmN0aW9uIGRlcGVuZGVuY3lPblBhcmVudChtb2RlKSB7XG4gICAgaWYgKCFtb2RlKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gbW9kZS5lbmRzV2l0aFBhcmVudCB8fCBkZXBlbmRlbmN5T25QYXJlbnQobW9kZS5zdGFydHMpXG4gIH1cblxuICBmdW5jdGlvbiBleHBhbmRfb3JfY2xvbmVfbW9kZShtb2RlKSB7XG4gICAgaWYgKG1vZGUudmFyaWFudHMgJiYgIW1vZGUuY2FjaGVkX3ZhcmlhbnRzKSB7XG4gICAgICBtb2RlLmNhY2hlZF92YXJpYW50cyA9IG1vZGUudmFyaWFudHMubWFwKGZ1bmN0aW9uKHZhcmlhbnQpIHtcbiAgICAgICAgcmV0dXJuIGluaGVyaXQobW9kZSwge3ZhcmlhbnRzOiBudWxsfSwgdmFyaWFudCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBFWFBBTkRcbiAgICAvLyBpZiB3ZSBoYXZlIHZhcmlhbnRzIHRoZW4gZXNzZW50dWFsbHkgXCJyZXBsYWNlXCIgdGhlIG1vZGUgd2l0aCB0aGUgdmFyaWFudHNcbiAgICAvLyB0aGlzIGhhcHBlbnMgaW4gY29tcGlsZU1vZGUsIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb21cbiAgICBpZiAobW9kZS5jYWNoZWRfdmFyaWFudHMpXG4gICAgICByZXR1cm4gbW9kZS5jYWNoZWRfdmFyaWFudHM7XG5cbiAgICAvLyBDTE9ORVxuICAgIC8vIGlmIHdlIGhhdmUgZGVwZW5kZW5jaWVzIG9uIHBhcmVudHMgdGhlbiB3ZSBuZWVkIGEgdW5pcXVlXG4gICAgLy8gaW5zdGFuY2Ugb2Ygb3Vyc2VsdmVzLCBzbyB3ZSBjYW4gYmUgcmV1c2VkIHdpdGggbWFueVxuICAgIC8vIGRpZmZlcmVudCBwYXJlbnRzIHdpdGhvdXQgaXNzdWVcbiAgICBpZiAoZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUpKVxuICAgICAgcmV0dXJuIFtpbmhlcml0KG1vZGUsIHsgc3RhcnRzOiBtb2RlLnN0YXJ0cyA/IGluaGVyaXQobW9kZS5zdGFydHMpIDogbnVsbCB9KV1cblxuICAgIC8vIG5vIHNwZWNpYWwgZGVwZW5kZW5jeSBpc3N1ZXMsIGp1c3QgcmV0dXJuIG91cnNlbHZlc1xuICAgIHJldHVybiBbbW9kZV1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3RvcmVMYW5ndWFnZUFwaShvYmopIHtcbiAgICBpZihBUElfUkVQTEFDRVMgJiYgIW9iai5sYW5nQXBpUmVzdG9yZWQpIHtcbiAgICAgIG9iai5sYW5nQXBpUmVzdG9yZWQgPSB0cnVlO1xuICAgICAgZm9yKHZhciBrZXkgaW4gQVBJX1JFUExBQ0VTKVxuICAgICAgICBvYmpba2V5XSAmJiAob2JqW0FQSV9SRVBMQUNFU1trZXldXSA9IG9ialtrZXldKTtcbiAgICAgIChvYmouY29udGFpbnMgfHwgW10pLmNvbmNhdChvYmoudmFyaWFudHMgfHwgW10pLmZvckVhY2gocmVzdG9yZUxhbmd1YWdlQXBpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjb21waWxlS2V5d29yZHMocmF3S2V5d29yZHMsIGNhc2VfaW5zZW5zaXRpdmUpIHtcbiAgICAgIHZhciBjb21waWxlZF9rZXl3b3JkcyA9IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIHJhd0tleXdvcmRzID09PSAnc3RyaW5nJykgeyAvLyBzdHJpbmdcbiAgICAgICAgc3BsaXRBbmRDb21waWxlKCdrZXl3b3JkJywgcmF3S2V5d29yZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqZWN0S2V5cyhyYXdLZXl3b3JkcykuZm9yRWFjaChmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgc3BsaXRBbmRDb21waWxlKGNsYXNzTmFtZSwgcmF3S2V5d29yZHNbY2xhc3NOYW1lXSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIHJldHVybiBjb21waWxlZF9rZXl3b3JkcztcblxuICAgIC8vIC0tLVxuXG4gICAgZnVuY3Rpb24gc3BsaXRBbmRDb21waWxlKGNsYXNzTmFtZSwgc3RyKSB7XG4gICAgICBpZiAoY2FzZV9pbnNlbnNpdGl2ZSkge1xuICAgICAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cbiAgICAgIHN0ci5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24oa2V5d29yZCkge1xuICAgICAgICB2YXIgcGFpciA9IGtleXdvcmQuc3BsaXQoJ3wnKTtcbiAgICAgICAgY29tcGlsZWRfa2V5d29yZHNbcGFpclswXV0gPSBbY2xhc3NOYW1lLCBzY29yZUZvcktleXdvcmQocGFpclswXSwgcGFpclsxXSldO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNjb3JlRm9yS2V5d29yZChrZXl3b3JkLCBwcm92aWRlZFNjb3JlKSB7XG4gICAgLy8gbWFudWFsIHNjb3JlcyBhbHdheXMgd2luIG92ZXIgY29tbW9uIGtleXdvcmRzXG4gICAgLy8gc28geW91IGNhbiBmb3JjZSBhIHNjb3JlIG9mIDEgaWYgeW91IHJlYWxseSBpbnNpc3RcbiAgICBpZiAocHJvdmlkZWRTY29yZSlcbiAgICAgIHJldHVybiBOdW1iZXIocHJvdmlkZWRTY29yZSlcblxuICAgIHJldHVybiBjb21tb25LZXl3b3JkKGtleXdvcmQpID8gMCA6IDE7XG4gIH1cblxuICBmdW5jdGlvbiBjb21tb25LZXl3b3JkKHdvcmQpIHtcbiAgICByZXR1cm4gQ09NTU9OX0tFWVdPUkRTLmluZGV4T2Yod29yZC50b0xvd2VyQ2FzZSgpKSAhPSAtMVxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKSB7XG5cbiAgICBmdW5jdGlvbiByZVN0cihyZSkge1xuICAgICAgICByZXR1cm4gKHJlICYmIHJlLnNvdXJjZSkgfHwgcmU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGFuZ1JlKHZhbHVlLCBnbG9iYWwpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnRXhwKFxuICAgICAgICByZVN0cih2YWx1ZSksXG4gICAgICAgICdtJyArIChsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlID8gJ2knIDogJycpICsgKGdsb2JhbCA/ICdnJyA6ICcnKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZUNvdW50TWF0Y2hHcm91cHMocmUpIHtcbiAgICAgIHJldHVybiAobmV3IFJlZ0V4cChyZS50b1N0cmluZygpICsgJ3wnKSkuZXhlYygnJykubGVuZ3RoIC0gMTtcbiAgICB9XG5cbiAgICAvLyBqb2luUmUgbG9naWNhbGx5IGNvbXB1dGVzIHJlZ2V4cHMuam9pbihzZXBhcmF0b3IpLCBidXQgZml4ZXMgdGhlXG4gICAgLy8gYmFja3JlZmVyZW5jZXMgc28gdGhleSBjb250aW51ZSB0byBtYXRjaC5cbiAgICAvLyBpdCBhbHNvIHBsYWNlcyBlYWNoIGluZGl2aWR1YWwgcmVndWxhciBleHByZXNzaW9uIGludG8gaXQncyBvd25cbiAgICAvLyBtYXRjaCBncm91cCwga2VlcGluZyB0cmFjayBvZiB0aGUgc2VxdWVuY2luZyBvZiB0aG9zZSBtYXRjaCBncm91cHNcbiAgICAvLyBpcyBjdXJyZW50bHkgYW4gZXhlcmNpc2UgZm9yIHRoZSBjYWxsZXIuIDotKVxuICAgIGZ1bmN0aW9uIGpvaW5SZShyZWdleHBzLCBzZXBhcmF0b3IpIHtcbiAgICAgIC8vIGJhY2tyZWZlcmVuY2VSZSBtYXRjaGVzIGFuIG9wZW4gcGFyZW50aGVzaXMgb3IgYmFja3JlZmVyZW5jZS4gVG8gYXZvaWRcbiAgICAgIC8vIGFuIGluY29ycmVjdCBwYXJzZSwgaXQgYWRkaXRpb25hbGx5IG1hdGNoZXMgdGhlIGZvbGxvd2luZzpcbiAgICAgIC8vIC0gWy4uLl0gZWxlbWVudHMsIHdoZXJlIHRoZSBtZWFuaW5nIG9mIHBhcmVudGhlc2VzIGFuZCBlc2NhcGVzIGNoYW5nZVxuICAgICAgLy8gLSBvdGhlciBlc2NhcGUgc2VxdWVuY2VzLCBzbyB3ZSBkbyBub3QgbWlzcGFyc2UgZXNjYXBlIHNlcXVlbmNlcyBhc1xuICAgICAgLy8gICBpbnRlcmVzdGluZyBlbGVtZW50c1xuICAgICAgLy8gLSBub24tbWF0Y2hpbmcgb3IgbG9va2FoZWFkIHBhcmVudGhlc2VzLCB3aGljaCBkbyBub3QgY2FwdHVyZS4gVGhlc2VcbiAgICAgIC8vICAgZm9sbG93IHRoZSAnKCcgd2l0aCBhICc/Jy5cbiAgICAgIHZhciBiYWNrcmVmZXJlbmNlUmUgPSAvXFxbKD86W15cXFxcXFxdXXxcXFxcLikqXFxdfFxcKFxcPz98XFxcXChbMS05XVswLTldKil8XFxcXC4vO1xuICAgICAgdmFyIG51bUNhcHR1cmVzID0gMDtcbiAgICAgIHZhciByZXQgPSAnJztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVnZXhwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBudW1DYXB0dXJlcyArPSAxO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gbnVtQ2FwdHVyZXM7XG4gICAgICAgIHZhciByZSA9IHJlU3RyKHJlZ2V4cHNbaV0pO1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICByZXQgKz0gc2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIHJldCArPSBcIihcIjtcbiAgICAgICAgd2hpbGUgKHJlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBiYWNrcmVmZXJlbmNlUmUuZXhlYyhyZSk7XG4gICAgICAgICAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldCArPSByZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXQgKz0gcmUuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KTtcbiAgICAgICAgICByZSA9IHJlLnN1YnN0cmluZyhtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgICAgaWYgKG1hdGNoWzBdWzBdID09ICdcXFxcJyAmJiBtYXRjaFsxXSkge1xuICAgICAgICAgICAgLy8gQWRqdXN0IHRoZSBiYWNrcmVmZXJlbmNlLlxuICAgICAgICAgICAgcmV0ICs9ICdcXFxcJyArIFN0cmluZyhOdW1iZXIobWF0Y2hbMV0pICsgb2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0ICs9IG1hdGNoWzBdO1xuICAgICAgICAgICAgaWYgKG1hdGNoWzBdID09ICcoJykge1xuICAgICAgICAgICAgICBudW1DYXB0dXJlcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXQgKz0gXCIpXCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTW9kZVJlZ2V4KG1vZGUpIHtcblxuICAgICAgdmFyIG1hdGNoSW5kZXhlcyA9IHt9O1xuICAgICAgdmFyIG1hdGNoZXJSZTtcbiAgICAgIHZhciByZWdleGVzID0gW107XG4gICAgICB2YXIgbWF0Y2hlciA9IHt9O1xuICAgICAgdmFyIG1hdGNoQXQgPSAxO1xuXG4gICAgICBmdW5jdGlvbiBhZGRSdWxlKHJ1bGUsIHJlZ2V4KSB7XG4gICAgICAgIG1hdGNoSW5kZXhlc1ttYXRjaEF0XSA9IHJ1bGU7XG4gICAgICAgIHJlZ2V4ZXMucHVzaChbcnVsZSwgcmVnZXhdKTtcbiAgICAgICAgbWF0Y2hBdCArPSByZUNvdW50TWF0Y2hHcm91cHMocmVnZXgpICsgMTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRlcm07XG4gICAgICBmb3IgKHZhciBpPTA7IGkgPCBtb2RlLmNvbnRhaW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByZTtcbiAgICAgICAgdGVybSA9IG1vZGUuY29udGFpbnNbaV07XG4gICAgICAgIGlmICh0ZXJtLmJlZ2luS2V5d29yZHMpIHtcbiAgICAgICAgICByZSA9ICdcXFxcLj8oPzonICsgdGVybS5iZWdpbiArICcpXFxcXC4/JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZSA9IHRlcm0uYmVnaW47XG4gICAgICAgIH1cbiAgICAgICAgYWRkUnVsZSh0ZXJtLCByZSk7XG4gICAgICB9XG4gICAgICBpZiAobW9kZS50ZXJtaW5hdG9yX2VuZClcbiAgICAgICAgYWRkUnVsZShcImVuZFwiLCBtb2RlLnRlcm1pbmF0b3JfZW5kKTtcbiAgICAgIGlmIChtb2RlLmlsbGVnYWwpXG4gICAgICAgIGFkZFJ1bGUoXCJpbGxlZ2FsXCIsIG1vZGUuaWxsZWdhbCk7XG5cbiAgICAgIHZhciB0ZXJtaW5hdG9ycyA9IHJlZ2V4ZXMubWFwKGZ1bmN0aW9uKGVsKSB7IHJldHVybiBlbFsxXSB9KTtcbiAgICAgIG1hdGNoZXJSZSA9IGxhbmdSZShqb2luUmUodGVybWluYXRvcnMsICd8JyksIHRydWUpO1xuXG4gICAgICBtYXRjaGVyLmxhc3RJbmRleCA9IDA7XG4gICAgICBtYXRjaGVyLmV4ZWMgPSBmdW5jdGlvbihzKSB7XG4gICAgICAgIHZhciBydWxlO1xuXG4gICAgICAgIGlmKCByZWdleGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbWF0Y2hlclJlLmxhc3RJbmRleCA9IG1hdGNoZXIubGFzdEluZGV4O1xuICAgICAgICB2YXIgbWF0Y2ggPSBtYXRjaGVyUmUuZXhlYyhzKTtcbiAgICAgICAgaWYgKCFtYXRjaCkgeyByZXR1cm4gbnVsbDsgfVxuXG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGk8bWF0Y2gubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAobWF0Y2hbaV0gIT0gdW5kZWZpbmVkICYmIG1hdGNoSW5kZXhlc1tcIlwiICtpXSAhPSB1bmRlZmluZWQgKSB7XG4gICAgICAgICAgICBydWxlID0gbWF0Y2hJbmRleGVzW1wiXCIraV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpbGxlZ2FsIG9yIGVuZCBtYXRjaFxuICAgICAgICBpZiAodHlwZW9mIHJ1bGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBtYXRjaC50eXBlID0gcnVsZTtcbiAgICAgICAgICBtYXRjaC5leHRyYSA9IFttb2RlLmlsbGVnYWwsIG1vZGUudGVybWluYXRvcl9lbmRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hdGNoLnR5cGUgPSBcImJlZ2luXCI7XG4gICAgICAgICAgbWF0Y2gucnVsZSA9IHJ1bGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWF0Y2hlcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21waWxlTW9kZShtb2RlLCBwYXJlbnQpIHtcbiAgICAgIGlmIChtb2RlLmNvbXBpbGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBtb2RlLmNvbXBpbGVkID0gdHJ1ZTtcblxuICAgICAgbW9kZS5rZXl3b3JkcyA9IG1vZGUua2V5d29yZHMgfHwgbW9kZS5iZWdpbktleXdvcmRzO1xuICAgICAgaWYgKG1vZGUua2V5d29yZHMpXG4gICAgICAgIG1vZGUua2V5d29yZHMgPSBjb21waWxlS2V5d29yZHMobW9kZS5rZXl3b3JkcywgbGFuZ3VhZ2UuY2FzZV9pbnNlbnNpdGl2ZSlcblxuICAgICAgbW9kZS5sZXhlbWVzUmUgPSBsYW5nUmUobW9kZS5sZXhlbWVzIHx8IC9cXHcrLywgdHJ1ZSk7XG5cbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKG1vZGUuYmVnaW5LZXl3b3Jkcykge1xuICAgICAgICAgIG1vZGUuYmVnaW4gPSAnXFxcXGIoJyArIG1vZGUuYmVnaW5LZXl3b3Jkcy5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcpXFxcXGInO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbW9kZS5iZWdpbilcbiAgICAgICAgICBtb2RlLmJlZ2luID0gL1xcQnxcXGIvO1xuICAgICAgICBtb2RlLmJlZ2luUmUgPSBsYW5nUmUobW9kZS5iZWdpbik7XG4gICAgICAgIGlmIChtb2RlLmVuZFNhbWVBc0JlZ2luKVxuICAgICAgICAgIG1vZGUuZW5kID0gbW9kZS5iZWdpbjtcbiAgICAgICAgaWYgKCFtb2RlLmVuZCAmJiAhbW9kZS5lbmRzV2l0aFBhcmVudClcbiAgICAgICAgICBtb2RlLmVuZCA9IC9cXEJ8XFxiLztcbiAgICAgICAgaWYgKG1vZGUuZW5kKVxuICAgICAgICAgIG1vZGUuZW5kUmUgPSBsYW5nUmUobW9kZS5lbmQpO1xuICAgICAgICBtb2RlLnRlcm1pbmF0b3JfZW5kID0gcmVTdHIobW9kZS5lbmQpIHx8ICcnO1xuICAgICAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCAmJiBwYXJlbnQudGVybWluYXRvcl9lbmQpXG4gICAgICAgICAgbW9kZS50ZXJtaW5hdG9yX2VuZCArPSAobW9kZS5lbmQgPyAnfCcgOiAnJykgKyBwYXJlbnQudGVybWluYXRvcl9lbmQ7XG4gICAgICB9XG4gICAgICBpZiAobW9kZS5pbGxlZ2FsKVxuICAgICAgICBtb2RlLmlsbGVnYWxSZSA9IGxhbmdSZShtb2RlLmlsbGVnYWwpO1xuICAgICAgaWYgKG1vZGUucmVsZXZhbmNlID09IG51bGwpXG4gICAgICAgIG1vZGUucmVsZXZhbmNlID0gMTtcbiAgICAgIGlmICghbW9kZS5jb250YWlucykge1xuICAgICAgICBtb2RlLmNvbnRhaW5zID0gW107XG4gICAgICB9XG4gICAgICBtb2RlLmNvbnRhaW5zID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgbW9kZS5jb250YWlucy5tYXAoZnVuY3Rpb24oYykge1xuICAgICAgICByZXR1cm4gZXhwYW5kX29yX2Nsb25lX21vZGUoYyA9PT0gJ3NlbGYnID8gbW9kZSA6IGMpO1xuICAgICAgfSkpO1xuICAgICAgbW9kZS5jb250YWlucy5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtjb21waWxlTW9kZShjLCBtb2RlKTt9KTtcblxuICAgICAgaWYgKG1vZGUuc3RhcnRzKSB7XG4gICAgICAgIGNvbXBpbGVNb2RlKG1vZGUuc3RhcnRzLCBwYXJlbnQpO1xuICAgICAgfVxuXG4gICAgICBtb2RlLnRlcm1pbmF0b3JzID0gYnVpbGRNb2RlUmVnZXgobW9kZSk7XG4gICAgfVxuXG4gICAgY29tcGlsZU1vZGUobGFuZ3VhZ2UpO1xuICB9XG5cbiAgLypcbiAgQ29yZSBoaWdobGlnaHRpbmcgZnVuY3Rpb24uIEFjY2VwdHMgYSBsYW5ndWFnZSBuYW1lLCBvciBhbiBhbGlhcywgYW5kIGFcbiAgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG8gaGlnaGxpZ2h0LiBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAgcHJvcGVydGllczpcblxuICAtIHJlbGV2YW5jZSAoaW50KVxuICAtIHZhbHVlIChhbiBIVE1MIHN0cmluZyB3aXRoIGhpZ2hsaWdodGluZyBtYXJrdXApXG5cbiAgKi9cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0KG5hbWUsIHZhbHVlLCBpZ25vcmVfaWxsZWdhbHMsIGNvbnRpbnVhdGlvbikge1xuXG4gICAgZnVuY3Rpb24gZXNjYXBlUmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpLCAnbScpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mTW9kZShtb2RlLCBsZXhlbWUpIHtcbiAgICAgIGlmICh0ZXN0UmUobW9kZS5lbmRSZSwgbGV4ZW1lKSkge1xuICAgICAgICB3aGlsZSAobW9kZS5lbmRzUGFyZW50ICYmIG1vZGUucGFyZW50KSB7XG4gICAgICAgICAgbW9kZSA9IG1vZGUucGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2RlO1xuICAgICAgfVxuICAgICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGVuZE9mTW9kZShtb2RlLnBhcmVudCwgbGV4ZW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrZXl3b3JkTWF0Y2gobW9kZSwgbWF0Y2gpIHtcbiAgICAgIHZhciBtYXRjaF9zdHIgPSBsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlID8gbWF0Y2hbMF0udG9Mb3dlckNhc2UoKSA6IG1hdGNoWzBdO1xuICAgICAgcmV0dXJuIG1vZGUua2V5d29yZHMuaGFzT3duUHJvcGVydHkobWF0Y2hfc3RyKSAmJiBtb2RlLmtleXdvcmRzW21hdGNoX3N0cl07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcGFuKGNsYXNzbmFtZSwgaW5zaWRlU3BhbiwgbGVhdmVPcGVuLCBub1ByZWZpeCkge1xuICAgICAgaWYgKCFsZWF2ZU9wZW4gJiYgaW5zaWRlU3BhbiA9PT0gJycpIHJldHVybiAnJztcbiAgICAgIGlmICghY2xhc3NuYW1lKSByZXR1cm4gaW5zaWRlU3BhbjtcblxuICAgICAgdmFyIGNsYXNzUHJlZml4ID0gbm9QcmVmaXggPyAnJyA6IG9wdGlvbnMuY2xhc3NQcmVmaXgsXG4gICAgICAgICAgb3BlblNwYW4gICAgPSAnPHNwYW4gY2xhc3M9XCInICsgY2xhc3NQcmVmaXgsXG4gICAgICAgICAgY2xvc2VTcGFuICAgPSBsZWF2ZU9wZW4gPyAnJyA6IHNwYW5FbmRUYWc7XG5cbiAgICAgIG9wZW5TcGFuICs9IGNsYXNzbmFtZSArICdcIj4nO1xuXG4gICAgICByZXR1cm4gb3BlblNwYW4gKyBpbnNpZGVTcGFuICsgY2xvc2VTcGFuO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NLZXl3b3JkcygpIHtcbiAgICAgIHZhciBrZXl3b3JkX21hdGNoLCBsYXN0X2luZGV4LCBtYXRjaCwgcmVzdWx0O1xuXG4gICAgICBpZiAoIXRvcC5rZXl3b3JkcylcbiAgICAgICAgcmV0dXJuIGVzY2FwZShtb2RlX2J1ZmZlcik7XG5cbiAgICAgIHJlc3VsdCA9ICcnO1xuICAgICAgbGFzdF9pbmRleCA9IDA7XG4gICAgICB0b3AubGV4ZW1lc1JlLmxhc3RJbmRleCA9IDA7XG4gICAgICBtYXRjaCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlX2J1ZmZlcik7XG5cbiAgICAgIHdoaWxlIChtYXRjaCkge1xuICAgICAgICByZXN1bHQgKz0gZXNjYXBlKG1vZGVfYnVmZmVyLnN1YnN0cmluZyhsYXN0X2luZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICBrZXl3b3JkX21hdGNoID0ga2V5d29yZE1hdGNoKHRvcCwgbWF0Y2gpO1xuICAgICAgICBpZiAoa2V5d29yZF9tYXRjaCkge1xuICAgICAgICAgIHJlbGV2YW5jZSArPSBrZXl3b3JkX21hdGNoWzFdO1xuICAgICAgICAgIHJlc3VsdCArPSBidWlsZFNwYW4oa2V5d29yZF9tYXRjaFswXSwgZXNjYXBlKG1hdGNoWzBdKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGVzY2FwZShtYXRjaFswXSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdF9pbmRleCA9IHRvcC5sZXhlbWVzUmUubGFzdEluZGV4O1xuICAgICAgICBtYXRjaCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlX2J1ZmZlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0ICsgZXNjYXBlKG1vZGVfYnVmZmVyLnN1YnN0cihsYXN0X2luZGV4KSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1N1Ykxhbmd1YWdlKCkge1xuICAgICAgdmFyIGV4cGxpY2l0ID0gdHlwZW9mIHRvcC5zdWJMYW5ndWFnZSA9PT0gJ3N0cmluZyc7XG4gICAgICBpZiAoZXhwbGljaXQgJiYgIWxhbmd1YWdlc1t0b3Auc3ViTGFuZ3VhZ2VdKSB7XG4gICAgICAgIHJldHVybiBlc2NhcGUobW9kZV9idWZmZXIpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVzdWx0ID0gZXhwbGljaXQgP1xuICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodCh0b3Auc3ViTGFuZ3VhZ2UsIG1vZGVfYnVmZmVyLCB0cnVlLCBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0pIDpcbiAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRBdXRvKG1vZGVfYnVmZmVyLCB0b3Auc3ViTGFuZ3VhZ2UubGVuZ3RoID8gdG9wLnN1Ykxhbmd1YWdlIDogdW5kZWZpbmVkKTtcblxuICAgICAgLy8gQ291bnRpbmcgZW1iZWRkZWQgbGFuZ3VhZ2Ugc2NvcmUgdG93YXJkcyB0aGUgaG9zdCBsYW5ndWFnZSBtYXkgYmUgZGlzYWJsZWRcbiAgICAgIC8vIHdpdGggemVyb2luZyB0aGUgY29udGFpbmluZyBtb2RlIHJlbGV2YW5jZS4gVXNlY2FzZSBpbiBwb2ludCBpcyBNYXJrZG93biB0aGF0XG4gICAgICAvLyBhbGxvd3MgWE1MIGV2ZXJ5d2hlcmUgYW5kIG1ha2VzIGV2ZXJ5IFhNTCBzbmlwcGV0IHRvIGhhdmUgYSBtdWNoIGxhcmdlciBNYXJrZG93blxuICAgICAgLy8gc2NvcmUuXG4gICAgICBpZiAodG9wLnJlbGV2YW5jZSA+IDApIHtcbiAgICAgICAgcmVsZXZhbmNlICs9IHJlc3VsdC5yZWxldmFuY2U7XG4gICAgICB9XG4gICAgICBpZiAoZXhwbGljaXQpIHtcbiAgICAgICAgY29udGludWF0aW9uc1t0b3Auc3ViTGFuZ3VhZ2VdID0gcmVzdWx0LnRvcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBidWlsZFNwYW4ocmVzdWx0Lmxhbmd1YWdlLCByZXN1bHQudmFsdWUsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzQnVmZmVyKCkge1xuICAgICAgcmVzdWx0ICs9ICh0b3Auc3ViTGFuZ3VhZ2UgIT0gbnVsbCA/IHByb2Nlc3NTdWJMYW5ndWFnZSgpIDogcHJvY2Vzc0tleXdvcmRzKCkpO1xuICAgICAgbW9kZV9idWZmZXIgPSAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE5ld01vZGUobW9kZSkge1xuICAgICAgcmVzdWx0ICs9IG1vZGUuY2xhc3NOYW1lPyBidWlsZFNwYW4obW9kZS5jbGFzc05hbWUsICcnLCB0cnVlKTogJyc7XG4gICAgICB0b3AgPSBPYmplY3QuY3JlYXRlKG1vZGUsIHtwYXJlbnQ6IHt2YWx1ZTogdG9wfX0pO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gZG9CZWdpbk1hdGNoKG1hdGNoKSB7XG4gICAgICB2YXIgbGV4ZW1lID0gbWF0Y2hbMF07XG4gICAgICB2YXIgbmV3X21vZGUgPSBtYXRjaC5ydWxlO1xuXG4gICAgICBpZiAobmV3X21vZGUgJiYgbmV3X21vZGUuZW5kU2FtZUFzQmVnaW4pIHtcbiAgICAgICAgbmV3X21vZGUuZW5kUmUgPSBlc2NhcGVSZSggbGV4ZW1lICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdfbW9kZS5za2lwKSB7XG4gICAgICAgIG1vZGVfYnVmZmVyICs9IGxleGVtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuZXdfbW9kZS5leGNsdWRlQmVnaW4pIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciArPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICBpZiAoIW5ld19tb2RlLnJldHVybkJlZ2luICYmICFuZXdfbW9kZS5leGNsdWRlQmVnaW4pIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciA9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhcnROZXdNb2RlKG5ld19tb2RlLCBsZXhlbWUpO1xuICAgICAgcmV0dXJuIG5ld19tb2RlLnJldHVybkJlZ2luID8gMCA6IGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZG9FbmRNYXRjaChtYXRjaCkge1xuICAgICAgdmFyIGxleGVtZSA9IG1hdGNoWzBdO1xuICAgICAgdmFyIGVuZF9tb2RlID0gZW5kT2ZNb2RlKHRvcCwgbGV4ZW1lKTtcbiAgICAgIGlmICghZW5kX21vZGUpIHsgcmV0dXJuOyB9XG5cbiAgICAgIHZhciBvcmlnaW4gPSB0b3A7XG4gICAgICBpZiAob3JpZ2luLnNraXApIHtcbiAgICAgICAgbW9kZV9idWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCEob3JpZ2luLnJldHVybkVuZCB8fCBvcmlnaW4uZXhjbHVkZUVuZCkpIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciArPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICBpZiAob3JpZ2luLmV4Y2x1ZGVFbmQpIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciA9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZG8ge1xuICAgICAgICBpZiAodG9wLmNsYXNzTmFtZSkge1xuICAgICAgICAgIHJlc3VsdCArPSBzcGFuRW5kVGFnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdG9wLnNraXAgJiYgIXRvcC5zdWJMYW5ndWFnZSkge1xuICAgICAgICAgIHJlbGV2YW5jZSArPSB0b3AucmVsZXZhbmNlO1xuICAgICAgICB9XG4gICAgICAgIHRvcCA9IHRvcC5wYXJlbnQ7XG4gICAgICB9IHdoaWxlICh0b3AgIT09IGVuZF9tb2RlLnBhcmVudCk7XG4gICAgICBpZiAoZW5kX21vZGUuc3RhcnRzKSB7XG4gICAgICAgIGlmIChlbmRfbW9kZS5lbmRTYW1lQXNCZWdpbikge1xuICAgICAgICAgIGVuZF9tb2RlLnN0YXJ0cy5lbmRSZSA9IGVuZF9tb2RlLmVuZFJlO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0TmV3TW9kZShlbmRfbW9kZS5zdGFydHMsICcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcmlnaW4ucmV0dXJuRW5kID8gMCA6IGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgdmFyIGxhc3RNYXRjaCA9IHt9O1xuICAgIGZ1bmN0aW9uIHByb2Nlc3NMZXhlbWUodGV4dF9iZWZvcmVfbWF0Y2gsIG1hdGNoKSB7XG5cbiAgICAgIHZhciBsZXhlbWUgPSBtYXRjaCAmJiBtYXRjaFswXTtcblxuICAgICAgLy8gYWRkIG5vbi1tYXRjaGVkIHRleHQgdG8gdGhlIGN1cnJlbnQgbW9kZSBidWZmZXJcbiAgICAgIG1vZGVfYnVmZmVyICs9IHRleHRfYmVmb3JlX21hdGNoO1xuXG4gICAgICBpZiAobGV4ZW1lID09IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgLy8gd2UndmUgZm91bmQgYSAwIHdpZHRoIG1hdGNoIGFuZCB3ZSdyZSBzdHVjaywgc28gd2UgbmVlZCB0byBhZHZhbmNlXG4gICAgICAvLyB0aGlzIGhhcHBlbnMgd2hlbiB3ZSBoYXZlIGJhZGx5IGJlaGF2ZWQgcnVsZXMgdGhhdCBoYXZlIG9wdGlvbmFsIG1hdGNoZXJzIHRvIHRoZSBkZWdyZWUgdGhhdFxuICAgICAgLy8gc29tZXRpbWVzIHRoZXkgY2FuIGVuZCB1cCBtYXRjaGluZyBub3RoaW5nIGF0IGFsbFxuICAgICAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8yMTQwXG4gICAgICBpZiAobGFzdE1hdGNoLnR5cGU9PVwiYmVnaW5cIiAmJiBtYXRjaC50eXBlPT1cImVuZFwiICYmIGxhc3RNYXRjaC5pbmRleCA9PSBtYXRjaC5pbmRleCAmJiBsZXhlbWUgPT09IFwiXCIpIHtcbiAgICAgICAgLy8gc3BpdCB0aGUgXCJza2lwcGVkXCIgY2hhcmFjdGVyIHRoYXQgb3VyIHJlZ2V4IGNob2tlZCBvbiBiYWNrIGludG8gdGhlIG91dHB1dCBzZXF1ZW5jZVxuICAgICAgICBtb2RlX2J1ZmZlciArPSB2YWx1ZS5zbGljZShtYXRjaC5pbmRleCwgbWF0Y2guaW5kZXggKyAxKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RNYXRjaCA9IG1hdGNoO1xuXG4gICAgICBpZiAobWF0Y2gudHlwZT09PVwiYmVnaW5cIikge1xuICAgICAgICByZXR1cm4gZG9CZWdpbk1hdGNoKG1hdGNoKTtcbiAgICAgIH0gZWxzZSBpZiAobWF0Y2gudHlwZT09PVwiaWxsZWdhbFwiICYmICFpZ25vcmVfaWxsZWdhbHMpIHtcbiAgICAgICAgLy8gaWxsZWdhbCBtYXRjaCwgd2UgZG8gbm90IGNvbnRpbnVlIHByb2Nlc3NpbmdcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGxleGVtZSBcIicgKyBsZXhlbWUgKyAnXCIgZm9yIG1vZGUgXCInICsgKHRvcC5jbGFzc05hbWUgfHwgJzx1bm5hbWVkPicpICsgJ1wiJyk7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoLnR5cGU9PT1cImVuZFwiKSB7XG4gICAgICAgIHZhciBwcm9jZXNzZWQgPSBkb0VuZE1hdGNoKG1hdGNoKTtcbiAgICAgICAgaWYgKHByb2Nlc3NlZCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgcmV0dXJuIHByb2Nlc3NlZDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgIFdoeSBtaWdodCBiZSBmaW5kIG91cnNlbHZlcyBoZXJlPyAgT25seSBvbmUgb2NjYXNpb24gbm93LiAgQW4gZW5kIG1hdGNoIHRoYXQgd2FzXG4gICAgICB0cmlnZ2VyZWQgYnV0IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQuICBXaGVuIG1pZ2h0IHRoaXMgaGFwcGVuPyAgV2hlbiBhbiBgZW5kU2FtZWFzQmVnaW5gXG4gICAgICBydWxlIHNldHMgdGhlIGVuZCBydWxlIHRvIGEgc3BlY2lmaWMgbWF0Y2guICBTaW5jZSB0aGUgb3ZlcmFsbCBtb2RlIHRlcm1pbmF0aW9uIHJ1bGUgdGhhdCdzXG4gICAgICBiZWluZyB1c2VkIHRvIHNjYW4gdGhlIHRleHQgaXNuJ3QgcmVjb21waWxlZCB0aGF0IG1lYW5zIHRoYXQgYW55IG1hdGNoIHRoYXQgTE9PS1MgbGlrZVxuICAgICAgdGhlIGVuZCAoYnV0IGlzIG5vdCwgYmVjYXVzZSBpdCBpcyBub3QgYW4gZXhhY3QgbWF0Y2ggdG8gdGhlIGJlZ2lubmluZykgd2lsbFxuICAgICAgZW5kIHVwIGhlcmUuICBBIGRlZmluaXRlIGVuZCBtYXRjaCwgYnV0IHdoZW4gYGRvRW5kTWF0Y2hgIHRyaWVzIHRvIFwicmVhcHBseVwiXG4gICAgICB0aGUgZW5kIHJ1bGUgYW5kIGZhaWxzIHRvIG1hdGNoLCB3ZSB3aW5kIHVwIGhlcmUsIGFuZCBqdXN0IHNpbGVudGx5IGlnbm9yZSB0aGUgZW5kLlxuXG4gICAgICBUaGlzIGNhdXNlcyBubyByZWFsIGhhcm0gb3RoZXIgdGhhbiBzdG9wcGluZyBhIGZldyB0aW1lcyB0b28gbWFueS5cbiAgICAgICovXG5cbiAgICAgIG1vZGVfYnVmZmVyICs9IGxleGVtZTtcbiAgICAgIHJldHVybiBsZXhlbWUubGVuZ3RoO1xuICAgIH1cblxuICAgIHZhciBsYW5ndWFnZSA9IGdldExhbmd1YWdlKG5hbWUpO1xuICAgIGlmICghbGFuZ3VhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBsYW5ndWFnZTogXCInICsgbmFtZSArICdcIicpO1xuICAgIH1cblxuICAgIGNvbXBpbGVMYW5ndWFnZShsYW5ndWFnZSk7XG4gICAgdmFyIHRvcCA9IGNvbnRpbnVhdGlvbiB8fCBsYW5ndWFnZTtcbiAgICB2YXIgY29udGludWF0aW9ucyA9IHt9OyAvLyBrZWVwIGNvbnRpbnVhdGlvbnMgZm9yIHN1Yi1sYW5ndWFnZXNcbiAgICB2YXIgcmVzdWx0ID0gJycsIGN1cnJlbnQ7XG4gICAgZm9yKGN1cnJlbnQgPSB0b3A7IGN1cnJlbnQgIT09IGxhbmd1YWdlOyBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQpIHtcbiAgICAgIGlmIChjdXJyZW50LmNsYXNzTmFtZSkge1xuICAgICAgICByZXN1bHQgPSBidWlsZFNwYW4oY3VycmVudC5jbGFzc05hbWUsICcnLCB0cnVlKSArIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1vZGVfYnVmZmVyID0gJyc7XG4gICAgdmFyIHJlbGV2YW5jZSA9IDA7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBtYXRjaCwgY291bnQsIGluZGV4ID0gMDtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHRvcC50ZXJtaW5hdG9ycy5sYXN0SW5kZXggPSBpbmRleDtcbiAgICAgICAgbWF0Y2ggPSB0b3AudGVybWluYXRvcnMuZXhlYyh2YWx1ZSk7XG4gICAgICAgIGlmICghbWF0Y2gpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNvdW50ID0gcHJvY2Vzc0xleGVtZSh2YWx1ZS5zdWJzdHJpbmcoaW5kZXgsIG1hdGNoLmluZGV4KSwgbWF0Y2gpO1xuICAgICAgICBpbmRleCA9IG1hdGNoLmluZGV4ICsgY291bnQ7XG4gICAgICB9XG4gICAgICBwcm9jZXNzTGV4ZW1lKHZhbHVlLnN1YnN0cihpbmRleCkpO1xuICAgICAgZm9yKGN1cnJlbnQgPSB0b3A7IGN1cnJlbnQucGFyZW50OyBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQpIHsgLy8gY2xvc2UgZGFuZ2xpbmcgbW9kZXNcbiAgICAgICAgaWYgKGN1cnJlbnQuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHNwYW5FbmRUYWc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbGV2YW5jZTogcmVsZXZhbmNlLFxuICAgICAgICB2YWx1ZTogcmVzdWx0LFxuICAgICAgICBpbGxlZ2FsOmZhbHNlLFxuICAgICAgICBsYW5ndWFnZTogbmFtZSxcbiAgICAgICAgdG9wOiB0b3BcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUubWVzc2FnZSAmJiBlLm1lc3NhZ2UuaW5kZXhPZignSWxsZWdhbCcpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlsbGVnYWw6IHRydWUsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIHZhbHVlOiBlc2NhcGUodmFsdWUpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qXG4gIEhpZ2hsaWdodGluZyB3aXRoIGxhbmd1YWdlIGRldGVjdGlvbi4gQWNjZXB0cyBhIHN0cmluZyB3aXRoIHRoZSBjb2RlIHRvXG4gIGhpZ2hsaWdodC4gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cbiAgLSBsYW5ndWFnZSAoZGV0ZWN0ZWQgbGFuZ3VhZ2UpXG4gIC0gcmVsZXZhbmNlIChpbnQpXG4gIC0gdmFsdWUgKGFuIEhUTUwgc3RyaW5nIHdpdGggaGlnaGxpZ2h0aW5nIG1hcmt1cClcbiAgLSBzZWNvbmRfYmVzdCAob2JqZWN0IHdpdGggdGhlIHNhbWUgc3RydWN0dXJlIGZvciBzZWNvbmQtYmVzdCBoZXVyaXN0aWNhbGx5XG4gICAgZGV0ZWN0ZWQgbGFuZ3VhZ2UsIG1heSBiZSBhYnNlbnQpXG5cbiAgKi9cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0QXV0byh0ZXh0LCBsYW5ndWFnZVN1YnNldCkge1xuICAgIGxhbmd1YWdlU3Vic2V0ID0gbGFuZ3VhZ2VTdWJzZXQgfHwgb3B0aW9ucy5sYW5ndWFnZXMgfHwgb2JqZWN0S2V5cyhsYW5ndWFnZXMpO1xuICAgIHZhciByZXN1bHQgPSB7XG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICB2YWx1ZTogZXNjYXBlKHRleHQpXG4gICAgfTtcbiAgICB2YXIgc2Vjb25kX2Jlc3QgPSByZXN1bHQ7XG4gICAgbGFuZ3VhZ2VTdWJzZXQuZmlsdGVyKGdldExhbmd1YWdlKS5maWx0ZXIoYXV0b0RldGVjdGlvbikuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB2YXIgY3VycmVudCA9IGhpZ2hsaWdodChuYW1lLCB0ZXh0LCBmYWxzZSk7XG4gICAgICBjdXJyZW50Lmxhbmd1YWdlID0gbmFtZTtcbiAgICAgIGlmIChjdXJyZW50LnJlbGV2YW5jZSA+IHNlY29uZF9iZXN0LnJlbGV2YW5jZSkge1xuICAgICAgICBzZWNvbmRfYmVzdCA9IGN1cnJlbnQ7XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudC5yZWxldmFuY2UgPiByZXN1bHQucmVsZXZhbmNlKSB7XG4gICAgICAgIHNlY29uZF9iZXN0ID0gcmVzdWx0O1xuICAgICAgICByZXN1bHQgPSBjdXJyZW50O1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChzZWNvbmRfYmVzdC5sYW5ndWFnZSkge1xuICAgICAgcmVzdWx0LnNlY29uZF9iZXN0ID0gc2Vjb25kX2Jlc3Q7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKlxuICBQb3N0LXByb2Nlc3Npbmcgb2YgdGhlIGhpZ2hsaWdodGVkIG1hcmt1cDpcblxuICAtIHJlcGxhY2UgVEFCcyB3aXRoIHNvbWV0aGluZyBtb3JlIHVzZWZ1bFxuICAtIHJlcGxhY2UgcmVhbCBsaW5lLWJyZWFrcyB3aXRoICc8YnI+JyBmb3Igbm9uLXByZSBjb250YWluZXJzXG5cbiAgKi9cbiAgZnVuY3Rpb24gZml4TWFya3VwKHZhbHVlKSB7XG4gICAgcmV0dXJuICEob3B0aW9ucy50YWJSZXBsYWNlIHx8IG9wdGlvbnMudXNlQlIpXG4gICAgICA/IHZhbHVlXG4gICAgICA6IHZhbHVlLnJlcGxhY2UoZml4TWFya3VwUmUsIGZ1bmN0aW9uKG1hdGNoLCBwMSkge1xuICAgICAgICAgIGlmIChvcHRpb25zLnVzZUJSICYmIG1hdGNoID09PSAnXFxuJykge1xuICAgICAgICAgICAgcmV0dXJuICc8YnI+JztcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMudGFiUmVwbGFjZSkge1xuICAgICAgICAgICAgcmV0dXJuIHAxLnJlcGxhY2UoL1xcdC9nLCBvcHRpb25zLnRhYlJlcGxhY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkQ2xhc3NOYW1lKHByZXZDbGFzc05hbWUsIGN1cnJlbnRMYW5nLCByZXN1bHRMYW5nKSB7XG4gICAgdmFyIGxhbmd1YWdlID0gY3VycmVudExhbmcgPyBhbGlhc2VzW2N1cnJlbnRMYW5nXSA6IHJlc3VsdExhbmcsXG4gICAgICAgIHJlc3VsdCAgID0gW3ByZXZDbGFzc05hbWUudHJpbSgpXTtcblxuICAgIGlmICghcHJldkNsYXNzTmFtZS5tYXRjaCgvXFxiaGxqc1xcYi8pKSB7XG4gICAgICByZXN1bHQucHVzaCgnaGxqcycpO1xuICAgIH1cblxuICAgIGlmIChwcmV2Q2xhc3NOYW1lLmluZGV4T2YobGFuZ3VhZ2UpID09PSAtMSkge1xuICAgICAgcmVzdWx0LnB1c2gobGFuZ3VhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQuam9pbignICcpLnRyaW0oKTtcbiAgfVxuXG4gIC8qXG4gIEFwcGxpZXMgaGlnaGxpZ2h0aW5nIHRvIGEgRE9NIG5vZGUgY29udGFpbmluZyBjb2RlLiBBY2NlcHRzIGEgRE9NIG5vZGUgYW5kXG4gIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBmaXhNYXJrdXAuXG4gICovXG4gIGZ1bmN0aW9uIGhpZ2hsaWdodEJsb2NrKGJsb2NrKSB7XG4gICAgdmFyIG5vZGUsIG9yaWdpbmFsU3RyZWFtLCByZXN1bHQsIHJlc3VsdE5vZGUsIHRleHQ7XG4gICAgdmFyIGxhbmd1YWdlID0gYmxvY2tMYW5ndWFnZShibG9jayk7XG5cbiAgICBpZiAoaXNOb3RIaWdobGlnaHRlZChsYW5ndWFnZSkpXG4gICAgICAgIHJldHVybjtcblxuICAgIGlmIChvcHRpb25zLnVzZUJSKSB7XG4gICAgICBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2RpdicpO1xuICAgICAgbm9kZS5pbm5lckhUTUwgPSBibG9jay5pbm5lckhUTUwucmVwbGFjZSgvXFxuL2csICcnKS5yZXBsYWNlKC88YnJbIFxcL10qPi9nLCAnXFxuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBibG9jaztcbiAgICB9XG4gICAgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQ7XG4gICAgcmVzdWx0ID0gbGFuZ3VhZ2UgPyBoaWdobGlnaHQobGFuZ3VhZ2UsIHRleHQsIHRydWUpIDogaGlnaGxpZ2h0QXV0byh0ZXh0KTtcblxuICAgIG9yaWdpbmFsU3RyZWFtID0gbm9kZVN0cmVhbShub2RlKTtcbiAgICBpZiAob3JpZ2luYWxTdHJlYW0ubGVuZ3RoKSB7XG4gICAgICByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2RpdicpO1xuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByZXN1bHQudmFsdWU7XG4gICAgICByZXN1bHQudmFsdWUgPSBtZXJnZVN0cmVhbXMob3JpZ2luYWxTdHJlYW0sIG5vZGVTdHJlYW0ocmVzdWx0Tm9kZSksIHRleHQpO1xuICAgIH1cbiAgICByZXN1bHQudmFsdWUgPSBmaXhNYXJrdXAocmVzdWx0LnZhbHVlKTtcblxuICAgIGJsb2NrLmlubmVySFRNTCA9IHJlc3VsdC52YWx1ZTtcbiAgICBibG9jay5jbGFzc05hbWUgPSBidWlsZENsYXNzTmFtZShibG9jay5jbGFzc05hbWUsIGxhbmd1YWdlLCByZXN1bHQubGFuZ3VhZ2UpO1xuICAgIGJsb2NrLnJlc3VsdCA9IHtcbiAgICAgIGxhbmd1YWdlOiByZXN1bHQubGFuZ3VhZ2UsXG4gICAgICByZTogcmVzdWx0LnJlbGV2YW5jZVxuICAgIH07XG4gICAgaWYgKHJlc3VsdC5zZWNvbmRfYmVzdCkge1xuICAgICAgYmxvY2suc2Vjb25kX2Jlc3QgPSB7XG4gICAgICAgIGxhbmd1YWdlOiByZXN1bHQuc2Vjb25kX2Jlc3QubGFuZ3VhZ2UsXG4gICAgICAgIHJlOiByZXN1bHQuc2Vjb25kX2Jlc3QucmVsZXZhbmNlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gIFVwZGF0ZXMgaGlnaGxpZ2h0LmpzIGdsb2JhbCBvcHRpb25zIHdpdGggdmFsdWVzIHBhc3NlZCBpbiB0aGUgZm9ybSBvZiBhbiBvYmplY3QuXG4gICovXG4gIGZ1bmN0aW9uIGNvbmZpZ3VyZSh1c2VyX29wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gaW5oZXJpdChvcHRpb25zLCB1c2VyX29wdGlvbnMpO1xuICB9XG5cbiAgLypcbiAgQXBwbGllcyBoaWdobGlnaHRpbmcgdG8gYWxsIDxwcmU+PGNvZGU+Li48L2NvZGU+PC9wcmU+IGJsb2NrcyBvbiBhIHBhZ2UuXG4gICovXG4gIGZ1bmN0aW9uIGluaXRIaWdobGlnaHRpbmcoKSB7XG4gICAgaWYgKGluaXRIaWdobGlnaHRpbmcuY2FsbGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGluaXRIaWdobGlnaHRpbmcuY2FsbGVkID0gdHJ1ZTtcblxuICAgIHZhciBibG9ja3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUgY29kZScpO1xuICAgIEFycmF5UHJvdG8uZm9yRWFjaC5jYWxsKGJsb2NrcywgaGlnaGxpZ2h0QmxvY2spO1xuICB9XG5cbiAgLypcbiAgQXR0YWNoZXMgaGlnaGxpZ2h0aW5nIHRvIHRoZSBwYWdlIGxvYWQgZXZlbnQuXG4gICovXG4gIGZ1bmN0aW9uIGluaXRIaWdobGlnaHRpbmdPbkxvYWQoKSB7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRIaWdobGlnaHRpbmcsIGZhbHNlKTtcbiAgICBhZGRFdmVudExpc3RlbmVyKCdsb2FkJywgaW5pdEhpZ2hsaWdodGluZywgZmFsc2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXJMYW5ndWFnZShuYW1lLCBsYW5ndWFnZSkge1xuICAgIHZhciBsYW5nID0gbGFuZ3VhZ2VzW25hbWVdID0gbGFuZ3VhZ2UoaGxqcyk7XG4gICAgcmVzdG9yZUxhbmd1YWdlQXBpKGxhbmcpO1xuICAgIGxhbmcucmF3RGVmaW5pdGlvbiA9IGxhbmd1YWdlLmJpbmQobnVsbCxobGpzKTtcblxuICAgIGlmIChsYW5nLmFsaWFzZXMpIHtcbiAgICAgIGxhbmcuYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKGFsaWFzKSB7YWxpYXNlc1thbGlhc10gPSBuYW1lO30pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RMYW5ndWFnZXMoKSB7XG4gICAgcmV0dXJuIG9iamVjdEtleXMobGFuZ3VhZ2VzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExhbmd1YWdlKG5hbWUpIHtcbiAgICBuYW1lID0gKG5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGxhbmd1YWdlc1tuYW1lXSB8fCBsYW5ndWFnZXNbYWxpYXNlc1tuYW1lXV07XG4gIH1cblxuICBmdW5jdGlvbiBhdXRvRGV0ZWN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbGFuZyA9IGdldExhbmd1YWdlKG5hbWUpO1xuICAgIHJldHVybiBsYW5nICYmICFsYW5nLmRpc2FibGVBdXRvZGV0ZWN0O1xuICB9XG5cbiAgLyogSW50ZXJmYWNlIGRlZmluaXRpb24gKi9cblxuICBobGpzLmhpZ2hsaWdodCA9IGhpZ2hsaWdodDtcbiAgaGxqcy5oaWdobGlnaHRBdXRvID0gaGlnaGxpZ2h0QXV0bztcbiAgaGxqcy5maXhNYXJrdXAgPSBmaXhNYXJrdXA7XG4gIGhsanMuaGlnaGxpZ2h0QmxvY2sgPSBoaWdobGlnaHRCbG9jaztcbiAgaGxqcy5jb25maWd1cmUgPSBjb25maWd1cmU7XG4gIGhsanMuaW5pdEhpZ2hsaWdodGluZyA9IGluaXRIaWdobGlnaHRpbmc7XG4gIGhsanMuaW5pdEhpZ2hsaWdodGluZ09uTG9hZCA9IGluaXRIaWdobGlnaHRpbmdPbkxvYWQ7XG4gIGhsanMucmVnaXN0ZXJMYW5ndWFnZSA9IHJlZ2lzdGVyTGFuZ3VhZ2U7XG4gIGhsanMubGlzdExhbmd1YWdlcyA9IGxpc3RMYW5ndWFnZXM7XG4gIGhsanMuZ2V0TGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZTtcbiAgaGxqcy5hdXRvRGV0ZWN0aW9uID0gYXV0b0RldGVjdGlvbjtcbiAgaGxqcy5pbmhlcml0ID0gaW5oZXJpdDtcblxuICAvLyBDb21tb24gcmVnZXhwc1xuICBobGpzLklERU5UX1JFID0gJ1thLXpBLVpdXFxcXHcqJztcbiAgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFID0gJ1thLXpBLVpfXVxcXFx3Kic7XG4gIGhsanMuTlVNQkVSX1JFID0gJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8nO1xuICBobGpzLkNfTlVNQkVSX1JFID0gJygtPykoXFxcXGIwW3hYXVthLWZBLUYwLTldK3woXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCopP3xcXFxcLlxcXFxkKykoW2VFXVstK10/XFxcXGQrKT8pJzsgLy8gMHguLi4sIDAuLi4sIGRlY2ltYWwsIGZsb2F0XG4gIGhsanMuQklOQVJZX05VTUJFUl9SRSA9ICdcXFxcYigwYlswMV0rKSc7IC8vIDBiLi4uXG4gIGhsanMuUkVfU1RBUlRFUlNfUkUgPSAnIXwhPXwhPT18JXwlPXwmfCYmfCY9fFxcXFwqfFxcXFwqPXxcXFxcK3xcXFxcKz18LHwtfC09fC89fC98Onw7fDw8fDw8PXw8PXw8fD09PXw9PXw9fD4+Pj18Pj49fD49fD4+Pnw+Pnw+fFxcXFw/fFxcXFxbfFxcXFx7fFxcXFwofFxcXFxefFxcXFxePXxcXFxcfHxcXFxcfD18XFxcXHxcXFxcfHx+JztcblxuICAvLyBDb21tb24gbW9kZXNcbiAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFID0ge1xuICAgIGJlZ2luOiAnXFxcXFxcXFxbXFxcXHNcXFxcU10nLCByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5BUE9TX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG4gIGhsanMuUVVPVEVfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG4gIGhsanMuUEhSQVNBTF9XT1JEU19NT0RFID0ge1xuICAgIGJlZ2luOiAvXFxiKGF8YW58dGhlfGFyZXxJJ218aXNuJ3R8ZG9uJ3R8ZG9lc24ndHx3b24ndHxidXR8anVzdHxzaG91bGR8cHJldHR5fHNpbXBseXxlbm91Z2h8Z29ubmF8Z29pbmd8d3RmfHNvfHN1Y2h8d2lsbHx5b3V8eW91cnx0aGV5fGxpa2V8bW9yZSlcXGIvXG4gIH07XG4gIGhsanMuQ09NTUVOVCA9IGZ1bmN0aW9uIChiZWdpbiwgZW5kLCBpbmhlcml0cykge1xuICAgIHZhciBtb2RlID0gaGxqcy5pbmhlcml0KFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46IGJlZ2luLCBlbmQ6IGVuZCxcbiAgICAgICAgY29udGFpbnM6IFtdXG4gICAgICB9LFxuICAgICAgaW5oZXJpdHMgfHwge31cbiAgICApO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChobGpzLlBIUkFTQUxfV09SRFNfTU9ERSk7XG4gICAgbW9kZS5jb250YWlucy5wdXNoKHtcbiAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICBiZWdpbjogJyg/OlRPRE98RklYTUV8Tk9URXxCVUd8WFhYKTonLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSk7XG4gICAgcmV0dXJuIG1vZGU7XG4gIH07XG4gIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnLy8nLCAnJCcpO1xuICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFID0gaGxqcy5DT01NRU5UKCcvXFxcXConLCAnXFxcXCovJyk7XG4gIGhsanMuSEFTSF9DT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJyMnLCAnJCcpO1xuICBobGpzLk5VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IGhsanMuTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLkNfTlVNQkVSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogaGxqcy5CSU5BUllfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLkNTU19OVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBobGpzLk5VTUJFUl9SRSArICcoJyArXG4gICAgICAnJXxlbXxleHxjaHxyZW0nICArXG4gICAgICAnfHZ3fHZofHZtaW58dm1heCcgK1xuICAgICAgJ3xjbXxtbXxpbnxwdHxwY3xweCcgK1xuICAgICAgJ3xkZWd8Z3JhZHxyYWR8dHVybicgK1xuICAgICAgJ3xzfG1zJyArXG4gICAgICAnfEh6fGtIeicgK1xuICAgICAgJ3xkcGl8ZHBjbXxkcHB4JyArXG4gICAgICAnKT8nLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLlJFR0VYUF9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgYmVnaW46IC9cXC8vLCBlbmQ6IC9cXC9bZ2ltdXldKi8sXG4gICAgaWxsZWdhbDogL1xcbi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgaGxqcy5USVRMRV9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICBiZWdpbjogaGxqcy5JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGhsanMuTUVUSE9EX0dVQVJEID0ge1xuICAgIC8vIGV4Y2x1ZGVzIG1ldGhvZCBuYW1lcyBmcm9tIGtleXdvcmQgcHJvY2Vzc2luZ1xuICAgIGJlZ2luOiAnXFxcXC5cXFxccyonICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHJldHVybiBobGpzO1xufSkpO1xuIiwiLy9cbi8vIGZvcm1hdCAtIHByaW50Zi1saWtlIHN0cmluZyBmb3JtYXR0aW5nIGZvciBKYXZhU2NyaXB0XG4vLyBnaXRodWIuY29tL3NhbXNvbmpzL2Zvcm1hdFxuLy8gQF9zanNcbi8vXG4vLyBDb3B5cmlnaHQgMjAxMCAtIDIwMTMgU2FtaSBTYW1odXJpIDxzYW1pQHNhbWh1cmkubmV0PlxuLy9cbi8vIE1JVCBMaWNlbnNlXG4vLyBodHRwOi8vc2pzLm1pdC1saWNlbnNlLm9yZ1xuLy9cblxuOyhmdW5jdGlvbigpIHtcblxuICAvLy8vIEV4cG9ydCB0aGUgQVBJXG4gIHZhciBuYW1lc3BhY2U7XG5cbiAgLy8gQ29tbW9uSlMgLyBOb2RlIG1vZHVsZVxuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBuYW1lc3BhY2UgPSBtb2R1bGUuZXhwb3J0cyA9IGZvcm1hdDtcbiAgfVxuXG4gIC8vIEJyb3dzZXJzIGFuZCBvdGhlciBlbnZpcm9ubWVudHNcbiAgZWxzZSB7XG4gICAgLy8gR2V0IHRoZSBnbG9iYWwgb2JqZWN0LiBXb3JrcyBpbiBFUzMsIEVTNSwgYW5kIEVTNSBzdHJpY3QgbW9kZS5cbiAgICBuYW1lc3BhY2UgPSAoZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXMgfHwgKDEsZXZhbCkoJ3RoaXMnKSB9KCkpO1xuICB9XG5cbiAgbmFtZXNwYWNlLmZvcm1hdCA9IGZvcm1hdDtcbiAgbmFtZXNwYWNlLnZzcHJpbnRmID0gdnNwcmludGY7XG5cbiAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT09ICdmdW5jdGlvbicpIHtcbiAgICBuYW1lc3BhY2UucHJpbnRmID0gcHJpbnRmO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJpbnRmKC8qIC4uLiAqLykge1xuICAgIGNvbnNvbGUubG9nKGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZzcHJpbnRmKGZtdCwgcmVwbGFjZW1lbnRzKSB7XG4gICAgcmV0dXJuIGZvcm1hdC5hcHBseShudWxsLCBbZm10XS5jb25jYXQocmVwbGFjZW1lbnRzKSk7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXQoZm10KSB7XG4gICAgdmFyIGFyZ0luZGV4ID0gMSAvLyBza2lwIGluaXRpYWwgZm9ybWF0IGFyZ3VtZW50XG4gICAgICAsIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cylcbiAgICAgICwgaSA9IDBcbiAgICAgICwgbiA9IGZtdC5sZW5ndGhcbiAgICAgICwgcmVzdWx0ID0gJydcbiAgICAgICwgY1xuICAgICAgLCBlc2NhcGVkID0gZmFsc2VcbiAgICAgICwgYXJnXG4gICAgICAsIHRtcFxuICAgICAgLCBsZWFkaW5nWmVybyA9IGZhbHNlXG4gICAgICAsIHByZWNpc2lvblxuICAgICAgLCBuZXh0QXJnID0gZnVuY3Rpb24oKSB7IHJldHVybiBhcmdzW2FyZ0luZGV4KytdOyB9XG4gICAgICAsIHNsdXJwTnVtYmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGRpZ2l0cyA9ICcnO1xuICAgICAgICAgIHdoaWxlICgvXFxkLy50ZXN0KGZtdFtpXSkpIHtcbiAgICAgICAgICAgIGRpZ2l0cyArPSBmbXRbaSsrXTtcbiAgICAgICAgICAgIGMgPSBmbXRbaV07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBkaWdpdHMubGVuZ3RoID4gMCA/IHBhcnNlSW50KGRpZ2l0cykgOiBudWxsO1xuICAgICAgICB9XG4gICAgICA7XG4gICAgZm9yICg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGMgPSBmbXRbaV07XG4gICAgICBpZiAoZXNjYXBlZCkge1xuICAgICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChjID09ICcuJykge1xuICAgICAgICAgIGxlYWRpbmdaZXJvID0gZmFsc2U7XG4gICAgICAgICAgYyA9IGZtdFsrK2ldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGMgPT0gJzAnICYmIGZtdFtpICsgMV0gPT0gJy4nKSB7XG4gICAgICAgICAgbGVhZGluZ1plcm8gPSB0cnVlO1xuICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgICBjID0gZm10W2ldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGxlYWRpbmdaZXJvID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBwcmVjaXNpb24gPSBzbHVycE51bWJlcigpO1xuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSAnYic6IC8vIG51bWJlciBpbiBiaW5hcnlcbiAgICAgICAgICByZXN1bHQgKz0gcGFyc2VJbnQobmV4dEFyZygpLCAxMCkudG9TdHJpbmcoMik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2MnOiAvLyBjaGFyYWN0ZXJcbiAgICAgICAgICBhcmcgPSBuZXh0QXJnKCk7XG4gICAgICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8IGFyZyBpbnN0YW5jZW9mIFN0cmluZylcbiAgICAgICAgICAgIHJlc3VsdCArPSBhcmc7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYXJnLCAxMCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkJzogLy8gbnVtYmVyIGluIGRlY2ltYWxcbiAgICAgICAgICByZXN1bHQgKz0gcGFyc2VJbnQobmV4dEFyZygpLCAxMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2YnOiAvLyBmbG9hdGluZyBwb2ludCBudW1iZXJcbiAgICAgICAgICB0bXAgPSBTdHJpbmcocGFyc2VGbG9hdChuZXh0QXJnKCkpLnRvRml4ZWQocHJlY2lzaW9uIHx8IDYpKTtcbiAgICAgICAgICByZXN1bHQgKz0gbGVhZGluZ1plcm8gPyB0bXAgOiB0bXAucmVwbGFjZSgvXjAvLCAnJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2onOiAvLyBKU09OXG4gICAgICAgICAgcmVzdWx0ICs9IEpTT04uc3RyaW5naWZ5KG5leHRBcmcoKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ28nOiAvLyBudW1iZXIgaW4gb2N0YWxcbiAgICAgICAgICByZXN1bHQgKz0gJzAnICsgcGFyc2VJbnQobmV4dEFyZygpLCAxMCkudG9TdHJpbmcoOCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3MnOiAvLyBzdHJpbmdcbiAgICAgICAgICByZXN1bHQgKz0gbmV4dEFyZygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd4JzogLy8gbG93ZXJjYXNlIGhleGFkZWNpbWFsXG4gICAgICAgICAgcmVzdWx0ICs9ICcweCcgKyBwYXJzZUludChuZXh0QXJnKCksIDEwKS50b1N0cmluZygxNik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1gnOiAvLyB1cHBlcmNhc2UgaGV4YWRlY2ltYWxcbiAgICAgICAgICByZXN1bHQgKz0gJzB4JyArIHBhcnNlSW50KG5leHRBcmcoKSwgMTApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlc3VsdCArPSBjO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGMgPT09ICclJykge1xuICAgICAgICBlc2NhcGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn0oKSk7XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGZvcm1hdHRlciA9IHJlcXVpcmUoJ2Zvcm1hdCcpXG5cbnZhciBmYXVsdCA9IGNyZWF0ZShFcnJvcilcblxubW9kdWxlLmV4cG9ydHMgPSBmYXVsdFxuXG5mYXVsdC5ldmFsID0gY3JlYXRlKEV2YWxFcnJvcilcbmZhdWx0LnJhbmdlID0gY3JlYXRlKFJhbmdlRXJyb3IpXG5mYXVsdC5yZWZlcmVuY2UgPSBjcmVhdGUoUmVmZXJlbmNlRXJyb3IpXG5mYXVsdC5zeW50YXggPSBjcmVhdGUoU3ludGF4RXJyb3IpXG5mYXVsdC50eXBlID0gY3JlYXRlKFR5cGVFcnJvcilcbmZhdWx0LnVyaSA9IGNyZWF0ZShVUklFcnJvcilcblxuZmF1bHQuY3JlYXRlID0gY3JlYXRlXG5cbi8vIENyZWF0ZSBhIG5ldyBgRUNvbnN0cnVjdG9yYCwgd2l0aCB0aGUgZm9ybWF0dGVkIGBmb3JtYXRgIGFzIGEgZmlyc3QgYXJndW1lbnQuXG5mdW5jdGlvbiBjcmVhdGUoRUNvbnN0cnVjdG9yKSB7XG4gIEZvcm1hdHRlZEVycm9yLmRpc3BsYXlOYW1lID0gRUNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IEVDb25zdHJ1Y3Rvci5uYW1lXG5cbiAgcmV0dXJuIEZvcm1hdHRlZEVycm9yXG5cbiAgZnVuY3Rpb24gRm9ybWF0dGVkRXJyb3IoZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCkge1xuICAgICAgZm9ybWF0ID0gZm9ybWF0dGVyLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEVDb25zdHJ1Y3Rvcihmb3JtYXQpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgaGlnaCA9IHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvaGlnaGxpZ2h0LmpzJylcbnZhciBmYXVsdCA9IHJlcXVpcmUoJ2ZhdWx0JylcblxuLy8gVGhlIGxvd2xpZ2h0IGludGVyZmFjZSwgd2hpY2ggaGFzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBoaWdobGlnaHQuanMsIGFzXG4vLyB0aGlzIG9iamVjdCBpcyBwYXNzZWQgdG8gaGlnaGxpZ2h0LmpzIHN5bnRheGVzLlxuXG5mdW5jdGlvbiBIaWdoKCkge31cblxuSGlnaC5wcm90b3R5cGUgPSBoaWdoXG5cbi8vIEV4cG9zZS5cbnZhciBsb3cgPSBuZXcgSGlnaCgpIC8vIEhhIVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxvd1xuXG5sb3cuaGlnaGxpZ2h0ID0gaGlnaGxpZ2h0XG5sb3cuaGlnaGxpZ2h0QXV0byA9IGF1dG9IaWdobGlnaHRcbmxvdy5yZWdpc3Rlckxhbmd1YWdlID0gcmVnaXN0ZXJMYW5ndWFnZVxubG93Lmxpc3RMYW5ndWFnZXMgPSBsaXN0TGFuZ3VhZ2VzXG5sb3cucmVnaXN0ZXJBbGlhcyA9IHJlZ2lzdGVyQWxpYXNcbmxvdy5nZXRMYW5ndWFnZSA9IGdldExhbmd1YWdlXG5cbnZhciBpbmhlcml0ID0gaGlnaC5pbmhlcml0XG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxudmFyIGRlZmF1bHRQcmVmaXggPSAnaGxqcy0nXG52YXIga2V5SW5zZW5zaXRpdmUgPSAnY2FzZV9pbnNlbnNpdGl2ZSdcbnZhciBrZXlDYWNoZWRWYXJpYW50cyA9ICdjYWNoZWRfdmFyaWFudHMnXG52YXIga2V5VGVybWluYXRvckVuZCA9ICd0ZXJtaW5hdG9yX2VuZCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIHZlcnRpY2FsQmFyID0gJ3wnXG52YXIgcGFyZW5PcGVuID0gJygnXG52YXIgcGFyZW5DbG9zZSA9ICcpJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIGNvbW1vbktleXdvcmRzID0gWydvZicsICdhbmQnLCAnZm9yJywgJ2luJywgJ25vdCcsICdvcicsICdpZicsICd0aGVuJ11cblxuLy8gTWFwcyBvZiBzeW50YXhlcy5cbnZhciBsYW5ndWFnZU5hbWVzID0gW11cbnZhciBsYW5ndWFnZXMgPSB7fVxudmFyIGFsaWFzZXMgPSB7fVxuXG4vLyBIaWdobGlnaHRpbmcgd2l0aCBsYW5ndWFnZSBkZXRlY3Rpb24uXG4vLyBBY2NlcHRzIGEgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG8gaGlnaGxpZ2h0LlxuLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4vL1xuLy8gKiAgIGBsYW5ndWFnZWAg4oCUIERldGVjdGVkIGxhbmd1YWdlXG4vLyAqICAgYHJlbGV2YW5jZWAg4oCUIEludGVnZXJcbi8vICogICBgdmFsdWVgIOKAlCBIQVNUIHRyZWUgd2l0aCBoaWdobGlnaHRpbmcgbWFya3VwXG4vLyAqICAgYHNlY29uZEJlc3RgIOKAlCBPYmplY3Qgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgZm9yIHNlY29uZC1iZXN0XG4vLyAgICAgaGV1cmlzdGljYWxseSBkZXRlY3RlZCBsYW5ndWFnZSwgbWF5IGJlIGFic2VudC5cbmZ1bmN0aW9uIGF1dG9IaWdobGlnaHQodmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgc3Vic2V0ID0gc2V0dGluZ3Muc3Vic2V0IHx8IGxhbmd1YWdlTmFtZXNcbiAgdmFyIHByZWZpeCA9IHNldHRpbmdzLnByZWZpeFxuICB2YXIgbGVuZ3RoID0gc3Vic2V0Lmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcmVzdWx0XG4gIHZhciBzZWNvbmRCZXN0XG4gIHZhciBjdXJyZW50XG4gIHZhciBuYW1lXG5cbiAgaWYgKHByZWZpeCA9PT0gbnVsbCB8fCBwcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZpeCA9IGRlZmF1bHRQcmVmaXhcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgZmF1bHQoJ0V4cGVjdGVkIGBzdHJpbmdgIGZvciB2YWx1ZSwgZ290IGAlc2AnLCB2YWx1ZSlcbiAgfVxuXG4gIHNlY29uZEJlc3QgPSBub3JtYWxpemUoe30pXG4gIHJlc3VsdCA9IG5vcm1hbGl6ZSh7fSlcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIG5hbWUgPSBzdWJzZXRbaW5kZXhdXG5cbiAgICBpZiAoIWdldExhbmd1YWdlKG5hbWUpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGN1cnJlbnQgPSBub3JtYWxpemUoY29yZUhpZ2hsaWdodChuYW1lLCB2YWx1ZSwgZmFsc2UsIHByZWZpeCkpXG5cbiAgICBjdXJyZW50Lmxhbmd1YWdlID0gbmFtZVxuXG4gICAgaWYgKGN1cnJlbnQucmVsZXZhbmNlID4gc2Vjb25kQmVzdC5yZWxldmFuY2UpIHtcbiAgICAgIHNlY29uZEJlc3QgPSBjdXJyZW50XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnQucmVsZXZhbmNlID4gcmVzdWx0LnJlbGV2YW5jZSkge1xuICAgICAgc2Vjb25kQmVzdCA9IHJlc3VsdFxuICAgICAgcmVzdWx0ID0gY3VycmVudFxuICAgIH1cbiAgfVxuXG4gIGlmIChzZWNvbmRCZXN0Lmxhbmd1YWdlKSB7XG4gICAgcmVzdWx0LnNlY29uZEJlc3QgPSBzZWNvbmRCZXN0XG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIEhpZ2hsaWdodGluZyBgdmFsdWVgIGluIHRoZSBsYW5ndWFnZSBgbGFuZ3VhZ2VgLlxuZnVuY3Rpb24gaGlnaGxpZ2h0KGxhbmd1YWdlLCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBwcmVmaXggPSBzZXR0aW5ncy5wcmVmaXhcblxuICBpZiAocHJlZml4ID09PSBudWxsIHx8IHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcHJlZml4ID0gZGVmYXVsdFByZWZpeFxuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShjb3JlSGlnaGxpZ2h0KGxhbmd1YWdlLCB2YWx1ZSwgdHJ1ZSwgcHJlZml4KSlcbn1cblxuLy8gUmVnaXN0ZXIgYSBsYW5ndWFnZS5cbmZ1bmN0aW9uIHJlZ2lzdGVyTGFuZ3VhZ2UobmFtZSwgc3ludGF4KSB7XG4gIHZhciBsYW5nID0gc3ludGF4KGxvdylcblxuICBsYW5nLnJhd0RlZmluaXRpb24gPSBzeW50YXguYmluZChudWxsLCBsb3cpXG5cbiAgbGFuZ3VhZ2VzW25hbWVdID0gbGFuZ1xuXG4gIGxhbmd1YWdlTmFtZXMucHVzaChuYW1lKVxuXG4gIGlmIChsYW5nLmFsaWFzZXMpIHtcbiAgICByZWdpc3RlckFsaWFzKG5hbWUsIGxhbmcuYWxpYXNlcylcbiAgfVxufVxuXG4vLyBHZXQgYSBsaXN0IG9mIGFsbCByZWdpc3RlcmVkIGxhbmd1YWdlcy5cbmZ1bmN0aW9uIGxpc3RMYW5ndWFnZXMoKSB7XG4gIHJldHVybiBsYW5ndWFnZU5hbWVzLmNvbmNhdCgpXG59XG5cbi8vIFJlZ2lzdGVyIG1vcmUgYWxpYXNlcyBmb3IgYW4gYWxyZWFkeSByZWdpc3RlcmVkIGxhbmd1YWdlLlxuZnVuY3Rpb24gcmVnaXN0ZXJBbGlhcyhuYW1lLCBhbGlhcykge1xuICB2YXIgbWFwID0gbmFtZVxuICB2YXIga2V5XG4gIHZhciBsaXN0XG4gIHZhciBsZW5ndGhcbiAgdmFyIGluZGV4XG5cbiAgaWYgKGFsaWFzKSB7XG4gICAgbWFwID0ge31cbiAgICBtYXBbbmFtZV0gPSBhbGlhc1xuICB9XG5cbiAgZm9yIChrZXkgaW4gbWFwKSB7XG4gICAgbGlzdCA9IG1hcFtrZXldXG4gICAgbGlzdCA9IHR5cGVvZiBsaXN0ID09PSAnc3RyaW5nJyA/IFtsaXN0XSA6IGxpc3RcbiAgICBsZW5ndGggPSBsaXN0Lmxlbmd0aFxuICAgIGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhbGlhc2VzW2xpc3RbaW5kZXhdXSA9IGtleVxuICAgIH1cbiAgfVxufVxuXG4vLyBDb3JlIGhpZ2hsaWdodGluZyBmdW5jdGlvbi5cbi8vIEFjY2VwdHMgYSBsYW5ndWFnZSBuYW1lLCBvciBhbiBhbGlhcywgYW5kIGEgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG9cbi8vIGhpZ2hsaWdodC5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zXG5mdW5jdGlvbiBjb3JlSGlnaGxpZ2h0KG5hbWUsIHZhbHVlLCBpZ25vcmUsIHByZWZpeCwgY29udGludWF0aW9uKSB7XG4gIHZhciBsYXN0TWF0Y2ggPSB7fVxuICB2YXIgY29udGludWF0aW9ucyA9IHt9XG4gIHZhciBzdGFjayA9IFtdXG4gIHZhciBtb2RlQnVmZmVyID0gJydcbiAgdmFyIHJlbGV2YW5jZSA9IDBcbiAgdmFyIGxhbmd1YWdlXG4gIHZhciB0b3BcbiAgdmFyIGN1cnJlbnRcbiAgdmFyIGN1cnJlbnRDaGlsZHJlblxuICB2YXIgb2Zmc2V0XG4gIHZhciBjb3VudFxuICB2YXIgbWF0Y2hcbiAgdmFyIGNoaWxkcmVuXG5cbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IGZhdWx0KCdFeHBlY3RlZCBgc3RyaW5nYCBmb3IgbmFtZSwgZ290IGAlc2AnLCBuYW1lKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBmYXVsdCgnRXhwZWN0ZWQgYHN0cmluZ2AgZm9yIHZhbHVlLCBnb3QgYCVzYCcsIHZhbHVlKVxuICB9XG5cbiAgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZShuYW1lKVxuICB0b3AgPSBjb250aW51YXRpb24gfHwgbGFuZ3VhZ2VcbiAgY2hpbGRyZW4gPSBbXVxuXG4gIGN1cnJlbnQgPSB0b3BcbiAgY3VycmVudENoaWxkcmVuID0gY2hpbGRyZW5cblxuICBpZiAoIWxhbmd1YWdlKSB7XG4gICAgdGhyb3cgZmF1bHQoJ1Vua25vd24gbGFuZ3VhZ2U6IGAlc2AgaXMgbm90IHJlZ2lzdGVyZWQnLCBuYW1lKVxuICB9XG5cbiAgY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKVxuXG4gIHRyeSB7XG4gICAgdG9wLnRlcm1pbmF0b3JzLmxhc3RJbmRleCA9IDBcbiAgICBvZmZzZXQgPSAwXG4gICAgbWF0Y2ggPSB0b3AudGVybWluYXRvcnMuZXhlYyh2YWx1ZSlcblxuICAgIHdoaWxlIChtYXRjaCkge1xuICAgICAgY291bnQgPSBwcm9jZXNzTGV4ZW1lKHZhbHVlLnNsaWNlKG9mZnNldCwgbWF0Y2guaW5kZXgpLCBtYXRjaClcbiAgICAgIG9mZnNldCA9IG1hdGNoLmluZGV4ICsgY291bnRcbiAgICAgIHRvcC50ZXJtaW5hdG9ycy5sYXN0SW5kZXggPSBvZmZzZXRcbiAgICAgIG1hdGNoID0gdG9wLnRlcm1pbmF0b3JzLmV4ZWModmFsdWUpXG4gICAgfVxuXG4gICAgcHJvY2Vzc0xleGVtZSh2YWx1ZS5zbGljZShvZmZzZXQpKVxuICAgIGN1cnJlbnQgPSB0b3BcblxuICAgIHdoaWxlIChjdXJyZW50LnBhcmVudCkge1xuICAgICAgaWYgKGN1cnJlbnQuY2xhc3NOYW1lKSB7XG4gICAgICAgIHBvcCgpXG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZWxldmFuY2U6IHJlbGV2YW5jZSxcbiAgICAgIHZhbHVlOiBjdXJyZW50Q2hpbGRyZW4sXG4gICAgICBpbGxlZ2FsOiBmYWxzZSxcbiAgICAgIGxhbmd1YWdlOiBuYW1lLFxuICAgICAgdG9wOiB0b3BcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gQ2F0Y2gtYWxsICAqL1xuICAgIGlmIChlcnJvci5tZXNzYWdlLmluZGV4T2YoJ0lsbGVnYWwnKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgcmV0dXJuIHtyZWxldmFuY2U6IDAsIGlsbGVnYWw6IHRydWUsIHZhbHVlOiBhZGRUZXh0KHZhbHVlLCBbXSl9XG4gIH1cblxuICBmdW5jdGlvbiBlc2NhcGVSZSh2YWx1ZSkge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLnJlcGxhY2UoL1stL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKSwgJ20nKVxuICB9XG5cbiAgZnVuY3Rpb24gZG9CZWdpbk1hdGNoKG1hdGNoKSB7XG4gICAgdmFyIGxleGVtZSA9IG1hdGNoWzBdXG4gICAgdmFyIG5ld01vZGUgPSBtYXRjaC5ydWxlXG5cbiAgICBpZiAobmV3TW9kZSAmJiBuZXdNb2RlLmVuZFNhbWVBc0JlZ2luKSB7XG4gICAgICBuZXdNb2RlLmVuZFJlID0gZXNjYXBlUmUobGV4ZW1lKVxuICAgIH1cblxuICAgIGlmIChuZXdNb2RlLnNraXApIHtcbiAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdNb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICBtb2RlQnVmZmVyICs9IGxleGVtZVxuICAgICAgfVxuXG4gICAgICBhZGRTaWJsaW5ncyhwcm9jZXNzQnVmZmVyKCksIGN1cnJlbnRDaGlsZHJlbilcblxuICAgICAgaWYgKCFuZXdNb2RlLnJldHVybkJlZ2luICYmICFuZXdNb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICBtb2RlQnVmZmVyID0gbGV4ZW1lXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RhcnROZXdNb2RlKG5ld01vZGUpXG5cbiAgICByZXR1cm4gbmV3TW9kZS5yZXR1cm5CZWdpbiA/IDAgOiBsZXhlbWUubGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiBkb0VuZE1hdGNoKG1hdGNoKSB7XG4gICAgdmFyIGxleGVtZSA9IG1hdGNoWzBdXG4gICAgdmFyIG1hdGNoUGx1c1JlbWFpbmRlciA9IHZhbHVlLnNsaWNlKG1hdGNoLmluZGV4KVxuICAgIHZhciBlbmRNb2RlID0gZW5kT2ZNb2RlKHRvcCwgbWF0Y2hQbHVzUmVtYWluZGVyKVxuXG4gICAgaWYgKCFlbmRNb2RlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgb3JpZ2luID0gdG9wXG5cbiAgICBpZiAob3JpZ2luLnNraXApIHtcbiAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKG9yaWdpbi5yZXR1cm5FbmQgfHwgb3JpZ2luLmV4Y2x1ZGVFbmQpKSB7XG4gICAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG4gICAgICB9XG5cbiAgICAgIGFkZFNpYmxpbmdzKHByb2Nlc3NCdWZmZXIoKSwgY3VycmVudENoaWxkcmVuKVxuXG4gICAgICBpZiAob3JpZ2luLmV4Y2x1ZGVFbmQpIHtcbiAgICAgICAgbW9kZUJ1ZmZlciA9IGxleGVtZVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIGlmICh0b3AuY2xhc3NOYW1lKSB7XG4gICAgICAgIHBvcCgpXG4gICAgICB9XG5cbiAgICAgIGlmICghdG9wLnNraXAgJiYgIXRvcC5zdWJMYW5ndWFnZSkge1xuICAgICAgICByZWxldmFuY2UgKz0gdG9wLnJlbGV2YW5jZVxuICAgICAgfVxuXG4gICAgICB0b3AgPSB0b3AucGFyZW50XG4gICAgfSB3aGlsZSAodG9wICE9PSBlbmRNb2RlLnBhcmVudClcblxuICAgIGlmIChlbmRNb2RlLnN0YXJ0cykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gaGxqcyA5LjE2IGFkZGVkIHN1cHBvcnQgZm9yIHRoaXMgYnV0IGRpZG7igJl0IHVzZSBpdCB5ZXQuICovXG4gICAgICBpZiAoZW5kTW9kZS5lbmRTYW1lQXNCZWdpbikge1xuICAgICAgICBlbmRNb2RlLnN0YXJ0cy5lbmRSZSA9IGVuZE1vZGUuZW5kUmVcbiAgICAgIH1cblxuICAgICAgc3RhcnROZXdNb2RlKGVuZE1vZGUuc3RhcnRzKVxuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW4ucmV0dXJuRW5kID8gMCA6IGxleGVtZS5sZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIHByb2Nlc3NMZXhlbWUodGV4dEJlZm9yZU1hdGNoLCBtYXRjaCkge1xuICAgIHZhciBsZXhlbWUgPSBtYXRjaCAmJiBtYXRjaFswXVxuICAgIHZhciBwcm9jZXNzZWRcblxuICAgIC8vIEFkZCBub24tbWF0Y2hlZCB0ZXh0IHRvIHRoZSBjdXJyZW50IG1vZGUgYnVmZmVyXG4gICAgbW9kZUJ1ZmZlciArPSB0ZXh0QmVmb3JlTWF0Y2hcblxuICAgIGlmIChsZXhlbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkU2libGluZ3MocHJvY2Vzc0J1ZmZlcigpLCBjdXJyZW50Q2hpbGRyZW4pXG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIC8vIFdlJ3ZlIGZvdW5kIGEgMCB3aWR0aCBtYXRjaCBhbmQgd2UncmUgc3R1Y2ssIHNvIHdlIG5lZWQgdG8gYWR2YW5jZVxuICAgIC8vIHRoaXMgaGFwcGVucyB3aGVuIHdlIGhhdmUgYmFkbHkgYmVoYXZlZCBydWxlcyB0aGF0IGhhdmUgb3B0aW9uYWwgbWF0Y2hlcnMgdG8gdGhlIGRlZ3JlZSB0aGF0XG4gICAgLy8gc29tZXRpbWVzIHRoZXkgY2FuIGVuZCB1cCBtYXRjaGluZyBub3RoaW5nIGF0IGFsbFxuICAgIC8vIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMjE0MFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIFVua25vd24gd2hhdCB0aGlzIGZpeGVzIG9yIHdoaWNoIGNhc2UgZml4ZXMgaXQgKi9cbiAgICBpZiAoXG4gICAgICBsYXN0TWF0Y2gudHlwZSA9PT0gJ2JlZ2luJyAmJlxuICAgICAgbWF0Y2gudHlwZSA9PT0gJ2VuZCcgJiZcbiAgICAgIGxhc3RNYXRjaC5pbmRleCA9PT0gbWF0Y2guaW5kZXggJiZcbiAgICAgIGxleGVtZSA9PT0gJydcbiAgICApIHtcbiAgICAgIC8vIFNwaXQgdGhlIOKAnHNraXBwZWTigJ0gY2hhcmFjdGVyIHRoYXQgb3VyIHJlZ2V4IGNob2tlZCBvbiBiYWNrIGludG8gdGhlIG91dHB1dCBzZXF1ZW5jZVxuICAgICAgbW9kZUJ1ZmZlciArPSB2YWx1ZS5zbGljZShtYXRjaC5pbmRleCwgbWF0Y2guaW5kZXggKyAxKVxuICAgICAgcmV0dXJuIDFcbiAgICB9XG5cbiAgICBsYXN0TWF0Y2ggPSBtYXRjaFxuXG4gICAgaWYgKG1hdGNoLnR5cGUgPT09ICdiZWdpbicpIHtcbiAgICAgIHJldHVybiBkb0JlZ2luTWF0Y2gobWF0Y2gpXG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLnR5cGUgPT09ICdlbmQnKSB7XG4gICAgICBwcm9jZXNzZWQgPSBkb0VuZE1hdGNoKG1hdGNoKVxuXG4gICAgICBpZiAocHJvY2Vzc2VkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtYXRjaC50eXBlID09PSAnaWxsZWdhbCcgJiYgIWlnbm9yZSkge1xuICAgICAgLy8gSWxsZWdhbCBtYXRjaCwgd2UgZG8gbm90IGNvbnRpbnVlIHByb2Nlc3NpbmdcbiAgICAgIHRocm93IGZhdWx0KFxuICAgICAgICAnSWxsZWdhbCBsZXhlbWUgXCIlc1wiIGZvciBtb2RlIFwiJXNcIicsXG4gICAgICAgIGxleGVtZSxcbiAgICAgICAgdG9wLmNsYXNzTmFtZSB8fCAnPHVubmFtZWQ+J1xuICAgICAgKVxuICAgIH1cblxuICAgIC8vIFdoeSBtaWdodCBiZSBmaW5kIG91cnNlbHZlcyBoZXJlP1xuICAgIC8vIE9ubHkgb25lIG9jY2FzaW9uIG5vdy5cbiAgICAvLyBBbiBlbmQgbWF0Y2ggdGhhdCB3YXMgdHJpZ2dlcmVkIGJ1dCBjb3VsZCBub3QgYmUgY29tcGxldGVkLlxuICAgIC8vIFdoZW4gbWlnaHQgdGhpcyBoYXBwZW4/XG4gICAgLy8gV2hlbiBhbiBgZW5kU2FtZWFzQmVnaW5gIHJ1bGUgc2V0cyB0aGUgZW5kIHJ1bGUgdG8gYSBzcGVjaWZpYyBtYXRjaC5cbiAgICAvLyBTaW5jZSB0aGUgb3ZlcmFsbCBtb2RlIHRlcm1pbmF0aW9uIHJ1bGUgdGhhdOKAmXMgYmVpbmcgdXNlZCB0byBzY2FuIHRoZVxuICAgIC8vIHRleHQgaXNu4oCZdCByZWNvbXBpbGVkIHRoYXQgbWVhbnMgdGhhdCBhbnkgbWF0Y2ggdGhhdCBMT09LUyBsaWtlIHRoZSBlbmRcbiAgICAvLyAoYnV0IGlzIG5vdCwgYmVjYXVzZSBpdCBpcyBub3QgYW4gZXhhY3QgbWF0Y2ggdG8gdGhlIGJlZ2lubmluZykgd2lsbCBlbmRcbiAgICAvLyB1cCBoZXJlLlxuICAgIC8vIEEgZGVmaW5pdGUgZW5kIG1hdGNoLCBidXQgd2hlbiBgZG9FbmRNYXRjaGAgdHJpZXMgdG8g4oCccmVhcHBseeKAnSB0aGUgZW5kXG4gICAgLy8gcnVsZSBhbmQgZmFpbHMgdG8gbWF0Y2gsIHdlIHdpbmQgdXAgaGVyZSwgYW5kIGp1c3Qgc2lsZW50bHkgaWdub3JlIHRoZVxuICAgIC8vIGVuZC5cbiAgICAvLyBUaGlzIGNhdXNlcyBubyByZWFsIGhhcm0gb3RoZXIgdGhhbiBzdG9wcGluZyBhIGZldyB0aW1lcyB0b28gbWFueS5cbiAgICBtb2RlQnVmZmVyICs9IGxleGVtZVxuXG4gICAgcmV0dXJuIGxleGVtZS5sZW5ndGhcbiAgfVxuXG4gIC8vIFN0YXJ0IGEgbmV3IG1vZGUgd2l0aCBhIGBsZXhlbWVgIHRvIHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHN0YXJ0TmV3TW9kZShtb2RlKSB7XG4gICAgdmFyIG5vZGVcblxuICAgIGlmIChtb2RlLmNsYXNzTmFtZSkge1xuICAgICAgbm9kZSA9IGJ1aWxkKG1vZGUuY2xhc3NOYW1lLCBbXSlcbiAgICB9XG5cbiAgICAvLyBFbnRlciBhIG5ldyBtb2RlLlxuICAgIGlmIChub2RlKSB7XG4gICAgICBjdXJyZW50Q2hpbGRyZW4ucHVzaChub2RlKVxuICAgICAgc3RhY2sucHVzaChjdXJyZW50Q2hpbGRyZW4pXG4gICAgICBjdXJyZW50Q2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuXG4gICAgfVxuXG4gICAgdG9wID0gT2JqZWN0LmNyZWF0ZShtb2RlLCB7cGFyZW50OiB7dmFsdWU6IHRvcH19KVxuICB9XG5cbiAgLy8gUHJvY2VzcyB0aGUgYnVmZmVyLlxuICBmdW5jdGlvbiBwcm9jZXNzQnVmZmVyKCkge1xuICAgIHZhciByZXN1bHQgPSB0b3Auc3ViTGFuZ3VhZ2UgPyBwcm9jZXNzU3ViTGFuZ3VhZ2UoKSA6IHByb2Nlc3NLZXl3b3JkcygpXG4gICAgbW9kZUJ1ZmZlciA9ICcnXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLy8gUHJvY2VzcyBhIHN1Ymxhbmd1YWdlIChyZXR1cm5zIGEgbGlzdCBvZiBub2RlcykuXG4gIGZ1bmN0aW9uIHByb2Nlc3NTdWJMYW5ndWFnZSgpIHtcbiAgICB2YXIgZXhwbGljaXQgPSB0eXBlb2YgdG9wLnN1Ykxhbmd1YWdlID09PSAnc3RyaW5nJ1xuICAgIHZhciBzdWJ2YWx1ZVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gc3VwcG9ydCBub24tbG9hZGVkIHN1Ymxhbmd1YWdlcyAqL1xuICAgIGlmIChleHBsaWNpdCAmJiAhbGFuZ3VhZ2VzW3RvcC5zdWJMYW5ndWFnZV0pIHtcbiAgICAgIHJldHVybiBhZGRUZXh0KG1vZGVCdWZmZXIsIFtdKVxuICAgIH1cblxuICAgIGlmIChleHBsaWNpdCkge1xuICAgICAgc3VidmFsdWUgPSBjb3JlSGlnaGxpZ2h0KFxuICAgICAgICB0b3Auc3ViTGFuZ3VhZ2UsXG4gICAgICAgIG1vZGVCdWZmZXIsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHByZWZpeCxcbiAgICAgICAgY29udGludWF0aW9uc1t0b3Auc3ViTGFuZ3VhZ2VdXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YnZhbHVlID0gYXV0b0hpZ2hsaWdodChtb2RlQnVmZmVyLCB7XG4gICAgICAgIHN1YnNldDogdG9wLnN1Ykxhbmd1YWdlLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHRvcC5zdWJMYW5ndWFnZSxcbiAgICAgICAgcHJlZml4OiBwcmVmaXhcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgY291bGRu4oCZdCBoaWdobGlnaHQsIGZvciBleGFtcGxlIGJlY2F1c2UgdGhlIHJlcXVlc3RzIHN1YnNldCBpc27igJl0XG4gICAgLy8gbG9hZGVkLCByZXR1cm4gYSB0ZXh0IG5vZGUuXG4gICAgaWYgKCFzdWJ2YWx1ZS5sYW5ndWFnZSkge1xuICAgICAgcmV0dXJuIFtidWlsZFRleHQobW9kZUJ1ZmZlcildXG4gICAgfVxuXG4gICAgLy8gQ291bnRpbmcgZW1iZWRkZWQgbGFuZ3VhZ2Ugc2NvcmUgdG93YXJkcyB0aGUgaG9zdCBsYW5ndWFnZSBtYXkgYmVcbiAgICAvLyBkaXNhYmxlZCB3aXRoIHplcm9pbmcgdGhlIGNvbnRhaW5pbmcgbW9kZSByZWxldmFuY2UuXG4gICAgLy8gVXNlY2FzZSBpbiBwb2ludCBpcyBNYXJrZG93biB0aGF0IGFsbG93cyBYTUwgZXZlcnl3aGVyZSBhbmQgbWFrZXMgZXZlcnlcbiAgICAvLyBYTUwgc25pcHBldCB0byBoYXZlIGEgbXVjaCBsYXJnZXIgTWFya2Rvd24gc2NvcmUuXG4gICAgaWYgKHRvcC5yZWxldmFuY2UgPiAwKSB7XG4gICAgICByZWxldmFuY2UgKz0gc3VidmFsdWUucmVsZXZhbmNlXG4gICAgfVxuXG4gICAgaWYgKGV4cGxpY2l0KSB7XG4gICAgICBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0gPSBzdWJ2YWx1ZS50b3BcbiAgICB9XG5cbiAgICByZXR1cm4gW2J1aWxkKHN1YnZhbHVlLmxhbmd1YWdlLCBzdWJ2YWx1ZS52YWx1ZSwgdHJ1ZSldXG4gIH1cblxuICAvLyBQcm9jZXNzIGtleXdvcmRzLiBSZXR1cm5zIG5vZGVzLlxuICBmdW5jdGlvbiBwcm9jZXNzS2V5d29yZHMoKSB7XG4gICAgdmFyIG5vZGVzID0gW11cbiAgICB2YXIgbGFzdEluZGV4XG4gICAgdmFyIGtleXdvcmRcbiAgICB2YXIgbm9kZVxuICAgIHZhciBzdWJtYXRjaFxuXG4gICAgaWYgKCF0b3Aua2V5d29yZHMpIHtcbiAgICAgIHJldHVybiBhZGRUZXh0KG1vZGVCdWZmZXIsIG5vZGVzKVxuICAgIH1cblxuICAgIGxhc3RJbmRleCA9IDBcblxuICAgIHRvcC5sZXhlbWVzUmUubGFzdEluZGV4ID0gMFxuXG4gICAga2V5d29yZCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlQnVmZmVyKVxuXG4gICAgd2hpbGUgKGtleXdvcmQpIHtcbiAgICAgIGFkZFRleHQobW9kZUJ1ZmZlci5zbGljZShsYXN0SW5kZXgsIGtleXdvcmQuaW5kZXgpLCBub2RlcylcblxuICAgICAgc3VibWF0Y2ggPSBrZXl3b3JkTWF0Y2godG9wLCBrZXl3b3JkKVxuXG4gICAgICBpZiAoc3VibWF0Y2gpIHtcbiAgICAgICAgcmVsZXZhbmNlICs9IHN1Ym1hdGNoWzFdXG5cbiAgICAgICAgbm9kZSA9IGJ1aWxkKHN1Ym1hdGNoWzBdLCBbXSlcblxuICAgICAgICBub2Rlcy5wdXNoKG5vZGUpXG5cbiAgICAgICAgYWRkVGV4dChrZXl3b3JkWzBdLCBub2RlLmNoaWxkcmVuKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkVGV4dChrZXl3b3JkWzBdLCBub2RlcylcbiAgICAgIH1cblxuICAgICAgbGFzdEluZGV4ID0gdG9wLmxleGVtZXNSZS5sYXN0SW5kZXhcbiAgICAgIGtleXdvcmQgPSB0b3AubGV4ZW1lc1JlLmV4ZWMobW9kZUJ1ZmZlcilcbiAgICB9XG5cbiAgICBhZGRUZXh0KG1vZGVCdWZmZXIuc2xpY2UobGFzdEluZGV4KSwgbm9kZXMpXG5cbiAgICByZXR1cm4gbm9kZXNcbiAgfVxuXG4gIC8vIEFkZCBzaWJsaW5ncy5cbiAgZnVuY3Rpb24gYWRkU2libGluZ3Moc2libGluZ3MsIG5vZGVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IHNpYmxpbmdzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIHNpYmxpbmdcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBzaWJsaW5nID0gc2libGluZ3NbaW5kZXhdXG5cbiAgICAgIGlmIChzaWJsaW5nLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICBhZGRUZXh0KHNpYmxpbmcudmFsdWUsIG5vZGVzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZXMucHVzaChzaWJsaW5nKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCBhIHRleHQuXG4gIGZ1bmN0aW9uIGFkZFRleHQodmFsdWUsIG5vZGVzKSB7XG4gICAgdmFyIHRhaWxcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGFpbCA9IG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdXG5cbiAgICAgIGlmICh0YWlsICYmIHRhaWwudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIHRhaWwudmFsdWUgKz0gdmFsdWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVzLnB1c2goYnVpbGRUZXh0KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXNcbiAgfVxuXG4gIC8vIEJ1aWxkIGEgdGV4dC5cbiAgZnVuY3Rpb24gYnVpbGRUZXh0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHt0eXBlOiAndGV4dCcsIHZhbHVlOiB2YWx1ZX1cbiAgfVxuXG4gIC8vIEJ1aWxkIGEgc3Bhbi5cbiAgZnVuY3Rpb24gYnVpbGQobmFtZSwgY29udGVudHMsIG5vUHJlZml4KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgIHRhZ05hbWU6ICdzcGFuJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiBbKG5vUHJlZml4ID8gJycgOiBwcmVmaXgpICsgbmFtZV1cbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogY29udGVudHNcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgZmlyc3Qgd29yZCBpbiBga2V5d29yZHNgIGlzIGEga2V5d29yZC5cbiAgZnVuY3Rpb24ga2V5d29yZE1hdGNoKG1vZGUsIGtleXdvcmRzKSB7XG4gICAgdmFyIGtleXdvcmQgPSBrZXl3b3Jkc1swXVxuXG4gICAgaWYgKGxhbmd1YWdlW2tleUluc2Vuc2l0aXZlXSkge1xuICAgICAga2V5d29yZCA9IGtleXdvcmQudG9Mb3dlckNhc2UoKVxuICAgIH1cblxuICAgIHJldHVybiBvd24uY2FsbChtb2RlLmtleXdvcmRzLCBrZXl3b3JkKSAmJiBtb2RlLmtleXdvcmRzW2tleXdvcmRdXG4gIH1cblxuICAvLyBDaGVjayBpZiBgbGV4ZW1lYCBlbmRzIGBtb2RlYC5cbiAgZnVuY3Rpb24gZW5kT2ZNb2RlKG1vZGUsIGxleGVtZSkge1xuICAgIGlmICh0ZXN0KG1vZGUuZW5kUmUsIGxleGVtZSkpIHtcbiAgICAgIHdoaWxlIChtb2RlLmVuZHNQYXJlbnQgJiYgbW9kZS5wYXJlbnQpIHtcbiAgICAgICAgbW9kZSA9IG1vZGUucGFyZW50XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtb2RlXG4gICAgfVxuXG4gICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQpIHtcbiAgICAgIHJldHVybiBlbmRPZk1vZGUobW9kZS5wYXJlbnQsIGxleGVtZSlcbiAgICB9XG4gIH1cblxuICAvLyBFeGl0IHRoZSBjdXJyZW50IGNvbnRleHQuXG4gIGZ1bmN0aW9uIHBvcCgpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIHJlbW92ZWQgaW4gaGxqcyA5LjMgKi9cbiAgICBjdXJyZW50Q2hpbGRyZW4gPSBzdGFjay5wb3AoKSB8fCBjaGlsZHJlblxuICB9XG59XG5cbi8vIENvbXBpbGUgYSBsYW5ndWFnZS5cbmZ1bmN0aW9uIGNvbXBpbGVMYW5ndWFnZShsYW5ndWFnZSkge1xuICBjb21waWxlTW9kZShsYW5ndWFnZSlcblxuICAvLyBDb21waWxlIGEgbGFuZ3VhZ2UgbW9kZSwgb3B0aW9uYWxseSB3aXRoIGEgcGFyZW50LlxuICBmdW5jdGlvbiBjb21waWxlTW9kZShtb2RlLCBwYXJlbnQpIHtcbiAgICBpZiAobW9kZS5jb21waWxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbW9kZS5jb21waWxlZCA9IHRydWVcblxuICAgIG1vZGUua2V5d29yZHMgPSBtb2RlLmtleXdvcmRzIHx8IG1vZGUuYmVnaW5LZXl3b3Jkc1xuXG4gICAgaWYgKG1vZGUua2V5d29yZHMpIHtcbiAgICAgIG1vZGUua2V5d29yZHMgPSBjb21waWxlS2V5d29yZHMobW9kZS5rZXl3b3JkcywgbGFuZ3VhZ2Vba2V5SW5zZW5zaXRpdmVdKVxuICAgIH1cblxuICAgIG1vZGUubGV4ZW1lc1JlID0gbGFuZ1JlKG1vZGUubGV4ZW1lcyB8fCAvXFx3Ky8sIHRydWUpXG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBpZiAobW9kZS5iZWdpbktleXdvcmRzKSB7XG4gICAgICAgIG1vZGUuYmVnaW4gPVxuICAgICAgICAgICdcXFxcYignICsgbW9kZS5iZWdpbktleXdvcmRzLnNwbGl0KHNwYWNlKS5qb2luKHZlcnRpY2FsQmFyKSArICcpXFxcXGInXG4gICAgICB9XG5cbiAgICAgIGlmICghbW9kZS5iZWdpbikge1xuICAgICAgICBtb2RlLmJlZ2luID0gL1xcQnxcXGIvXG4gICAgICB9XG5cbiAgICAgIG1vZGUuYmVnaW5SZSA9IGxhbmdSZShtb2RlLmJlZ2luKVxuXG4gICAgICBpZiAobW9kZS5lbmRTYW1lQXNCZWdpbikge1xuICAgICAgICBtb2RlLmVuZCA9IG1vZGUuYmVnaW5cbiAgICAgIH1cblxuICAgICAgaWYgKCFtb2RlLmVuZCAmJiAhbW9kZS5lbmRzV2l0aFBhcmVudCkge1xuICAgICAgICBtb2RlLmVuZCA9IC9cXEJ8XFxiL1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZS5lbmQpIHtcbiAgICAgICAgbW9kZS5lbmRSZSA9IGxhbmdSZShtb2RlLmVuZClcbiAgICAgIH1cblxuICAgICAgbW9kZVtrZXlUZXJtaW5hdG9yRW5kXSA9IHNvdXJjZShtb2RlLmVuZCkgfHwgJydcblxuICAgICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQgJiYgcGFyZW50W2tleVRlcm1pbmF0b3JFbmRdKSB7XG4gICAgICAgIG1vZGVba2V5VGVybWluYXRvckVuZF0gKz1cbiAgICAgICAgICAobW9kZS5lbmQgPyB2ZXJ0aWNhbEJhciA6ICcnKSArIHBhcmVudFtrZXlUZXJtaW5hdG9yRW5kXVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlLmlsbGVnYWwpIHtcbiAgICAgIG1vZGUuaWxsZWdhbFJlID0gbGFuZ1JlKG1vZGUuaWxsZWdhbClcbiAgICB9XG5cbiAgICBpZiAobW9kZS5yZWxldmFuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZS5yZWxldmFuY2UgPSAxXG4gICAgfVxuXG4gICAgbW9kZS5jb250YWlucyA9IGNvbXBpbGVDb250YWlucyhtb2RlLmNvbnRhaW5zIHx8IFtdLCBtb2RlKVxuXG4gICAgaWYgKG1vZGUuc3RhcnRzKSB7XG4gICAgICBjb21waWxlTW9kZShtb2RlLnN0YXJ0cywgcGFyZW50KVxuICAgIH1cblxuICAgIG1vZGUudGVybWluYXRvcnMgPSBidWlsZE1vZGVSZWdleChtb2RlKVxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGlsZUNvbnRhaW5zKGNvbnRhaW5zLCBtb2RlKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdXG4gICAgdmFyIGxlbmd0aCA9IGNvbnRhaW5zLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIGNvbnRhaW5lZFxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNvbnRhaW5lZCA9IGNvbnRhaW5zW2luZGV4XVxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChcbiAgICAgICAgZXhwYW5kT3JDbG9uZU1vZGUoY29udGFpbmVkID09PSAnc2VsZicgPyBtb2RlIDogY29udGFpbmVkKVxuICAgICAgKVxuICAgIH1cblxuICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGhcbiAgICBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY29tcGlsZU1vZGUocmVzdWx0W2luZGV4XSwgbW9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZE1vZGVSZWdleChtb2RlKSB7XG4gICAgdmFyIGluZGljZXMgPSB7fVxuICAgIHZhciBleHByZXNzaW9uXG4gICAgdmFyIHJlZ2V4ZXMgPSBbXVxuICAgIHZhciBtYXRjaGVyID0ge31cbiAgICB2YXIgbWF0Y2hBdCA9IDFcbiAgICB2YXIgdGVybVxuICAgIHZhciB2YWx1ZXMgPSBtb2RlLmNvbnRhaW5zXG4gICAgdmFyIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGhcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciB0ZXJtaW5hdG9ycyA9IFtdXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdGVybSA9IHZhbHVlc1tpbmRleF1cblxuICAgICAgYWRkUnVsZShcbiAgICAgICAgdGVybSxcbiAgICAgICAgdGVybS5iZWdpbktleXdvcmRzID8gJ1xcXFwuPyg/OicgKyB0ZXJtLmJlZ2luICsgJylcXFxcLj8nIDogdGVybS5iZWdpblxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChtb2RlW2tleVRlcm1pbmF0b3JFbmRdKSB7XG4gICAgICBhZGRSdWxlKCdlbmQnLCBtb2RlW2tleVRlcm1pbmF0b3JFbmRdKVxuICAgIH1cblxuICAgIGlmIChtb2RlLmlsbGVnYWwpIHtcbiAgICAgIGFkZFJ1bGUoJ2lsbGVnYWwnLCBtb2RlLmlsbGVnYWwpXG4gICAgfVxuXG4gICAgbGVuZ3RoID0gcmVnZXhlcy5sZW5ndGhcbiAgICBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdGVybWluYXRvcnNbaW5kZXhdID0gcmVnZXhlc1tpbmRleF1bMV1cbiAgICB9XG5cbiAgICBleHByZXNzaW9uID0gbGFuZ1JlKGpvaW5SZSh0ZXJtaW5hdG9ycywgdmVydGljYWxCYXIpLCB0cnVlKVxuXG4gICAgbWF0Y2hlciA9IHtsYXN0SW5kZXg6IDAsIGV4ZWM6IGV4ZWN9XG5cbiAgICByZXR1cm4gbWF0Y2hlclxuXG4gICAgZnVuY3Rpb24gZXhlYyh2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aFxuICAgICAgdmFyIGluZGV4XG4gICAgICB2YXIgcnVsZVxuICAgICAgdmFyIG1hdGNoXG4gICAgICB2YXIgc3VibWF0Y2hcblxuICAgICAgaWYgKHJlZ2V4ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuXG4gICAgICBleHByZXNzaW9uLmxhc3RJbmRleCA9IG1hdGNoZXIubGFzdEluZGV4XG4gICAgICBtYXRjaCA9IGV4cHJlc3Npb24uZXhlYyh2YWx1ZSlcblxuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICBsZW5ndGggPSBtYXRjaC5sZW5ndGhcbiAgICAgIGluZGV4ID0gLTFcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgc3VibWF0Y2ggPSBtYXRjaFtpbmRleF1cblxuICAgICAgICBpZiAoc3VibWF0Y2ggIT09IHVuZGVmaW5lZCAmJiBpbmRpY2VzW2luZGV4XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcnVsZSA9IGluZGljZXNbaW5kZXhdXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJbGxlZ2FsIG9yIGVuZCBtYXRjaFxuICAgICAgaWYgKHR5cGVvZiBydWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICBtYXRjaC50eXBlID0gcnVsZVxuICAgICAgICBtYXRjaC5leHRyYSA9IFttb2RlLmlsbGVnYWwsIG1vZGUudGVybWluYXRvcl9lbmRdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXRjaC50eXBlID0gJ2JlZ2luJ1xuICAgICAgICBtYXRjaC5ydWxlID0gcnVsZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWF0Y2hcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRSdWxlKHJ1bGUsIHJlZ2V4KSB7XG4gICAgICBpbmRpY2VzW21hdGNoQXRdID0gcnVsZVxuICAgICAgcmVnZXhlcy5wdXNoKFtydWxlLCByZWdleF0pXG4gICAgICBtYXRjaEF0ICs9IG5ldyBSZWdFeHAocmVnZXgudG9TdHJpbmcoKSArIHZlcnRpY2FsQmFyKS5leGVjKCcnKS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBqb2luUmUocmVnZXhlcywgc2VwYXJhdG9yKSB7XG4gICAgdmFyIGJhY2tyZWZlcmVuY2VSZSA9IC9cXFsoPzpbXlxcXFxcXF1dfFxcXFwuKSpcXF18XFwoXFw/P3xcXFxcKFsxLTldXFxkKil8XFxcXC4vXG4gICAgdmFyIGNhcHR1cmVzID0gMFxuICAgIHZhciByZXN1bHQgPSAnJ1xuICAgIHZhciBsZW5ndGggPSByZWdleGVzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIHJlZ2V4XG4gICAgdmFyIG9mZnNldFxuICAgIHZhciBleHByZXNzaW9uXG4gICAgdmFyIG1hdGNoXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVnZXggPSByZWdleGVzW2luZGV4XVxuICAgICAgZXhwcmVzc2lvbiA9IHNvdXJjZShyZWdleClcbiAgICAgIGNhcHR1cmVzICs9IDFcbiAgICAgIG9mZnNldCA9IGNhcHR1cmVzXG5cbiAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICByZXN1bHQgKz0gc2VwYXJhdG9yXG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBwYXJlbk9wZW5cblxuICAgICAgd2hpbGUgKGV4cHJlc3Npb24ubGVuZ3RoID4gMCkge1xuICAgICAgICBtYXRjaCA9IGJhY2tyZWZlcmVuY2VSZS5leGVjKGV4cHJlc3Npb24pXG5cbiAgICAgICAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGV4cHJlc3Npb25cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ICs9IGV4cHJlc3Npb24uc2xpY2UoMCwgbWF0Y2guaW5kZXgpXG4gICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uLnNsaWNlKG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKVxuXG4gICAgICAgIGlmIChtYXRjaFswXVswXSA9PT0gYmFja3NsYXNoICYmIG1hdGNoWzFdKSB7XG4gICAgICAgICAgLy8gQWRqdXN0IHRoZSBiYWNrcmVmZXJlbmNlLlxuICAgICAgICAgIHJlc3VsdCArPSBiYWNrc2xhc2ggKyBTdHJpbmcoTnVtYmVyKG1hdGNoWzFdKSArIG9mZnNldClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgKz0gbWF0Y2hbMF1cblxuICAgICAgICAgIGlmIChtYXRjaFswXSA9PT0gcGFyZW5PcGVuKSB7XG4gICAgICAgICAgICBjYXB0dXJlcysrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBwYXJlbkNsb3NlXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgcmVnZXggZm9yIGB2YWx1ZWAuXG4gIGZ1bmN0aW9uIGxhbmdSZSh2YWx1ZSwgZ2xvYmFsKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoXG4gICAgICBzb3VyY2UodmFsdWUpLFxuICAgICAgJ20nICsgKGxhbmd1YWdlW2tleUluc2Vuc2l0aXZlXSA/ICdpJyA6ICcnKSArIChnbG9iYWwgPyAnZycgOiAnJylcbiAgICApXG4gIH1cblxuICAvLyBHZXQgdGhlIHNvdXJjZSBvZiBhbiBleHByZXNzaW9uIG9yIHN0cmluZy5cbiAgZnVuY3Rpb24gc291cmNlKHJlKSB7XG4gICAgcmV0dXJuIChyZSAmJiByZS5zb3VyY2UpIHx8IHJlXG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGlsZUtleXdvcmRzKHZhbHVlcywgY2FzZUluc2Vuc2l0aXZlKSB7XG4gIHZhciBjb21waWxlZCA9IHt9XG4gIHZhciBrZXlcblxuICBpZiAodHlwZW9mIHZhbHVlcyA9PT0gJ3N0cmluZycpIHtcbiAgICBmbGF0dGVuKCdrZXl3b3JkJywgdmFsdWVzKVxuICB9IGVsc2Uge1xuICAgIGZvciAoa2V5IGluIHZhbHVlcykge1xuICAgICAgZmxhdHRlbihrZXksIHZhbHVlc1trZXldKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb21waWxlZFxuXG4gIGZ1bmN0aW9uIGZsYXR0ZW4oa2V5LCB2YWx1ZSkge1xuICAgIHZhciB2YWwgPSBjYXNlSW5zZW5zaXRpdmUgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpIDogdmFsdWVcbiAgICBhbGwoa2V5LCB2YWwuc3BsaXQoc3BhY2UpKVxuICB9XG5cbiAgZnVuY3Rpb24gYWxsKGtleSwgdmFsdWVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGhcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciBwYWlyXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcGFpciA9IHZhbHVlc1tpbmRleF0uc3BsaXQodmVydGljYWxCYXIpXG4gICAgICBjb21waWxlZFtwYWlyWzBdXSA9IFtrZXksIE51bWJlcihwYWlyWzFdKSB8fCBjb21tb24ocGFpclswXSkgPyAwIDogMV1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tbW9uKHZhbHVlKSB7XG4gIHJldHVybiBjb21tb25LZXl3b3Jkcy5pbmRleE9mKHZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSAtMVxufVxuXG5mdW5jdGlvbiBleHBhbmRPckNsb25lTW9kZShtb2RlKSB7XG4gIHZhciBsZW5ndGhcbiAgdmFyIGluZGV4XG4gIHZhciB2YXJpYW50c1xuICB2YXIgcmVzdWx0XG5cbiAgaWYgKG1vZGUudmFyaWFudHMgJiYgIW1vZGVba2V5Q2FjaGVkVmFyaWFudHNdKSB7XG4gICAgdmFyaWFudHMgPSBtb2RlLnZhcmlhbnRzXG4gICAgbGVuZ3RoID0gdmFyaWFudHMubGVuZ3RoXG4gICAgaW5kZXggPSAtMVxuICAgIHJlc3VsdCA9IFtdXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGluaGVyaXQobW9kZSwge3ZhcmlhbnRzOiBudWxsfSwgdmFyaWFudHNbaW5kZXhdKVxuICAgIH1cblxuICAgIG1vZGVba2V5Q2FjaGVkVmFyaWFudHNdID0gcmVzdWx0XG4gIH1cblxuICAvLyBFeHBhbmQuXG4gIGlmIChtb2RlLmNhY2hlZF92YXJpYW50cykgcmV0dXJuIG1vZGUuY2FjaGVkX3ZhcmlhbnRzXG5cbiAgLy8gQ2xvbmUuXG4gIGlmIChkZXBlbmRlbmN5T25QYXJlbnQobW9kZSkpXG4gICAgcmV0dXJuIFtpbmhlcml0KG1vZGUsIHtzdGFydHM6IG1vZGUuc3RhcnRzID8gaW5oZXJpdChtb2RlLnN0YXJ0cykgOiBudWxsfSldXG5cbiAgcmV0dXJuIFttb2RlXVxufVxuXG5mdW5jdGlvbiBkZXBlbmRlbmN5T25QYXJlbnQobW9kZSkge1xuICByZXR1cm4gbW9kZSA/IG1vZGUuZW5kc1dpdGhQYXJlbnQgfHwgZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUuc3RhcnRzKSA6IGZhbHNlXG59XG5cbi8vIE5vcm1hbGl6ZSBhIHN5bnRheCByZXN1bHQuXG5mdW5jdGlvbiBub3JtYWxpemUocmVzdWx0KSB7XG4gIHJldHVybiB7XG4gICAgcmVsZXZhbmNlOiByZXN1bHQucmVsZXZhbmNlIHx8IDAsXG4gICAgbGFuZ3VhZ2U6IHJlc3VsdC5sYW5ndWFnZSB8fCBudWxsLFxuICAgIHZhbHVlOiByZXN1bHQudmFsdWUgfHwgW11cbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgZXhwcmVzc2lvbmAgbWF0Y2hlcyBgbGV4ZW1lYC5cbmZ1bmN0aW9uIHRlc3QoZXhwcmVzc2lvbiwgbGV4ZW1lKSB7XG4gIHZhciBtYXRjaCA9IGV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi5leGVjKGxleGVtZSlcbiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoLmluZGV4ID09PSAwXG59XG5cbi8vIEdldCBhIGxhbmd1YWdlIGJ5IGBuYW1lYC5cbmZ1bmN0aW9uIGdldExhbmd1YWdlKG5hbWUpIHtcbiAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKVxuXG4gIHJldHVybiBsYW5ndWFnZXNbbmFtZV0gfHwgbGFuZ3VhZ2VzW2FsaWFzZXNbbmFtZV1dXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpe1xuXG4gIC8vINC+0LHRidC40Lkg0L/QsNGC0YLQtdGA0L0g0LTQu9GPINC+0L/RgNC10LTQtdC70LXQvdC40Y8g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQvtCyXG4gIHZhciBVTkRFUlNDT1JFX0lERU5UX1JFID0gJ1tBLVphLXrQkC3Qr9CwLdGP0ZHQgV9dW0EtWmEtetCQLdCv0LAt0Y/RkdCBXzAtOV0rJztcbiAgXG4gIC8vIHY3INGD0L3QuNC60LDQu9GM0L3Ri9C1INC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsCwg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0LIgdjggPT0+IGtleXdvcmRcbiAgdmFyIHY3X2tleXdvcmRzID1cbiAgJ9C00LDQu9C10LUgJztcblxuICAvLyB2OCDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAgPT0+IGtleXdvcmRcbiAgdmFyIHY4X2tleXdvcmRzID1cbiAgJ9Cy0L7Qt9Cy0YDQsNGCINCy0YvQt9Cy0LDRgtGM0LjRgdC60LvRjtGH0LXQvdC40LUg0LLRi9C/0L7Qu9C90LjRgtGMINC00LvRjyDQtdGB0LvQuCDQuCDQuNC3INC40LvQuCDQuNC90LDRh9C1INC40L3QsNGH0LXQtdGB0LvQuCDQuNGB0LrQu9GO0YfQtdC90LjQtSDQutCw0LbQtNC+0LPQviDQutC+0L3QtdGG0LXRgdC70LggJyArXG4gICfQutC+0L3QtdGG0L/QvtC/0YvRgtC60Lgg0LrQvtC90LXRhtGG0LjQutC70LAg0L3QtSDQvdC+0LLRi9C5INC/0LXRgNC10LnRgtC4INC/0LXRgNC10Lwg0L/QviDQv9C+0LrQsCDQv9C+0L/Ri9GC0LrQsCDQv9GA0LXRgNCy0LDRgtGMINC/0YDQvtC00L7Qu9C20LjRgtGMINGC0L7Qs9C00LAg0YbQuNC60Lsg0Y3QutGB0L/QvtGA0YIgJztcblxuICAvLyBrZXl3b3JkIDog0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwXG4gIHZhciBLRVlXT1JEID0gdjdfa2V5d29yZHMgKyB2OF9rZXl3b3JkcztcbiAgXG4gIC8vIHY3INGD0L3QuNC60LDQu9GM0L3Ri9C1INC00LjRgNC10LrRgtC40LLRiywg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0LIgdjggPT0+IG1ldGEta2V5d29yZFxuICB2YXIgdjdfbWV0YV9rZXl3b3JkcyA9XG4gICfQt9Cw0LPRgNGD0LfQuNGC0YzQuNC30YTQsNC50LvQsCAnO1xuXG4gIC8vIHY4INC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsCDQsiDQuNC90YHRgtGA0YPQutGG0LjRj9GFINC/0YDQtdC/0YDQvtGG0LXRgdGB0L7RgNCwLCDQtNC40YDQtdC60YLQuNCy0LDRhSDQutC+0LzQv9C40LvRj9GG0LjQuCwg0LDQvdC90L7RgtCw0YbQuNGP0YUgPT0+IG1ldGEta2V5d29yZFxuICB2YXIgdjhfbWV0YV9rZXl3b3JkcyA9XG4gICfQstC10LHQutC70LjQtdC90YIg0LLQvNC10YHRgtC+INCy0L3QtdGI0L3QtdC10YHQvtC10LTQuNC90LXQvdC40LUg0LrQu9C40LXQvdGCINC60L7QvdC10YbQvtCx0LvQsNGB0YLQuCDQvNC+0LHQuNC70YzQvdC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtdC60LvQuNC10L3RgiDQvNC+0LHQuNC70YzQvdC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtdGB0LXRgNCy0LXRgCAnICtcbiAgJ9C90LDQutC70LjQtdC90YLQtSDQvdCw0LrQu9C40LXQvdGC0LXQvdCw0YHQtdGA0LLQtdGA0LUg0L3QsNC60LvQuNC10L3RgtC10L3QsNGB0LXRgNCy0LXRgNC10LHQtdC30LrQvtC90YLQtdC60YHRgtCwINC90LDRgdC10YDQstC10YDQtSDQvdCw0YHQtdGA0LLQtdGA0LXQsdC10LfQutC+0L3RgtC10LrRgdGC0LAg0L7QsdC70LDRgdGC0Ywg0L/QtdGA0LXQtCAnICtcbiAgJ9C/0L7RgdC70LUg0YHQtdGA0LLQtdGAINGC0L7Qu9GB0YLRi9C50LrQu9C40LXQvdGC0L7QsdGL0YfQvdC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtSDRgtC+0LvRgdGC0YvQudC60LvQuNC10L3RgtGD0L/RgNCw0LLQu9GP0LXQvNC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtSDRgtC+0L3QutC40LnQutC70LjQtdC90YIgJztcblxuICAvLyBtZXRhLWtleXdvcmQgOiDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAg0LIg0LjQvdGB0YLRgNGD0LrRhtC40Y/RhSDQv9GA0LXQv9GA0L7RhtC10YHRgdC+0YDQsCwg0LTQuNGA0LXQutGC0LjQstCw0YUg0LrQvtC80L/QuNC70Y/RhtC40LgsINCw0L3QvdC+0YLQsNGG0LjRj9GFXG4gIHZhciBNRVRBS0VZV09SRCA9IHY3X21ldGFfa2V5d29yZHMgKyB2OF9tZXRhX2tleXdvcmRzO1xuXG4gIC8vIHY3INGB0LjRgdGC0LXQvNC90YvQtSDQutC+0L3RgdGC0LDQvdGC0YsgPT0+IGJ1aWx0X2luXG4gIHZhciB2N19zeXN0ZW1fY29uc3RhbnRzID1cbiAgJ9GA0LDQt9C00LXQu9C40YLQtdC70YzRgdGC0YDQsNC90LjRhiDRgNCw0LfQtNC10LvQuNGC0LXQu9GM0YHRgtGA0L7QuiDRgdC40LzQstC+0LvRgtCw0LHRg9C70Y/RhtC40LggJztcbiAgXG4gIC8vIHY3INGD0L3QuNC60LDQu9GM0L3Ri9C1INC80LXRgtC+0LTRiyDQs9C70L7QsdCw0LvRjNC90L7Qs9C+INC60L7QvdGC0LXQutGB0YLQsCwg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0LIgdjggPT0+IGJ1aWx0X2luXG4gIHZhciB2N19nbG9iYWxfY29udGV4dF9tZXRob2RzID1cbiAgJ2Fuc2l0b29lbSBvZW10b2Fuc2kg0LLQstC10YHRgtC40LLQuNC00YHRg9Cx0LrQvtC90YLQviDQstCy0LXRgdGC0LjQv9C10YDQtdGH0LjRgdC70LXQvdC40LUg0LLQstC10YHRgtC40L/QtdGA0LjQvtC0INCy0LLQtdGB0YLQuNC/0LvQsNC90YHRh9C10YLQvtCyINCy0YvQsdGA0LDQvdC90YvQudC/0LvQsNC90YHRh9C10YLQvtCyICcgK1xuICAn0LTQsNGC0LDQs9C+0LQg0LTQsNGC0LDQvNC10YHRj9GGINC00LDRgtCw0YfQuNGB0LvQviDQt9Cw0LPQvtC70L7QstC+0LrRgdC40YHRgtC10LzRiyDQt9C90LDRh9C10L3QuNC10LLRgdGC0YDQvtC60YMg0LfQvdCw0YfQtdC90LjQtdC40LfRgdGC0YDQvtC60Lgg0LrQsNGC0LDQu9C+0LPQuNCxINC60LDRgtCw0LvQvtCz0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0LrQvtC00YHQuNC80LIg0LrQvtC90LPQvtC00LAg0LrQvtC90LXRhtC/0LXRgNC40L7QtNCw0LHQuCDQutC+0L3QtdGG0YDQsNGB0YHRh9C40YLQsNC90L3QvtCz0L7Qv9C10YDQuNC+0LTQsNCx0Lgg0LrQvtC90LXRhtGB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtC40L3RgtC10YDQstCw0LvQsCDQutC+0L3QutCy0LDRgNGC0LDQu9CwINC60L7QvdC80LXRgdGP0YbQsCAnICtcbiAgJ9C60L7QvdC90LXQtNC10LvQuCDQu9C+0LMg0LvQvtCzMTAg0LzQsNC60YHQuNC80LDQu9GM0L3QvtC10LrQvtC70LjRh9C10YHRgtCy0L7RgdGD0LHQutC+0L3RgtC+INC90LDQt9Cy0LDQvdC40LXQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCw0LfQstCw0L3QuNC10L3QsNCx0L7RgNCw0L/RgNCw0LIg0L3QsNC30L3QsNGH0LjRgtGM0LLQuNC0ICcgK1xuICAn0L3QsNC30L3QsNGH0LjRgtGM0YHRh9C10YIg0L3QsNC50YLQuNGB0YHRi9C70LrQuCDQvdCw0YfQsNC70L7Qv9C10YDQuNC+0LTQsNCx0Lgg0L3QsNGH0LDQu9C+0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LjQvdGC0LXRgNCy0LDQu9CwINC90LDRh9Cz0L7QtNCwINC90LDRh9C60LLQsNGA0YLQsNC70LAg0L3QsNGH0LzQtdGB0Y/RhtCwICcgK1xuICAn0L3QsNGH0L3QtdC00LXQu9C4INC90L7QvNC10YDQtNC90Y/Qs9C+0LTQsCDQvdC+0LzQtdGA0LTQvdGP0L3QtdC00LXQu9C4INC90L7QvNC10YDQvdC10LTQtdC70LjQs9C+0LTQsCDQvtCx0YDQsNCx0L7RgtC60LDQvtC20LjQtNCw0L3QuNGPINC+0YHQvdC+0LLQvdC+0LnQttGD0YDQvdCw0LvRgNCw0YHRh9C10YLQvtCyICcgK1xuICAn0L7RgdC90L7QstC90L7QudC/0LvQsNC90YHRh9C10YLQvtCyINC+0YHQvdC+0LLQvdC+0LnRj9C30YvQuiDQvtGH0LjRgdGC0LjRgtGM0L7QutC90L7RgdC+0L7QsdGJ0LXQvdC40Lkg0L/QtdGA0LjQvtC00YHRgtGAINC/0L7Qu9GD0YfQuNGC0YzQstGA0LXQvNGP0YLQsCDQv9C+0LvRg9GH0LjRgtGM0LTQsNGC0YPRgtCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC00L7QutGD0LzQtdC90YLRgtCwINC/0L7Qu9GD0YfQuNGC0YzQt9C90LDRh9C10L3QuNGP0L7RgtCx0L7RgNCwINC/0L7Qu9GD0YfQuNGC0YzQv9C+0LfQuNGG0LjRjtGC0LAg0L/QvtC70YPRh9C40YLRjNC/0YPRgdGC0L7QtdC30L3QsNGH0LXQvdC40LUg0L/QvtC70YPRh9C40YLRjNGC0LAgJyArXG4gICfQv9GA0LXRhNC40LrRgdCw0LLRgtC+0L3Rg9C80LXRgNCw0YbQuNC4INC/0YDQvtC/0LjRgdGMINC/0YPRgdGC0L7QtdC30L3QsNGH0LXQvdC40LUg0YDQsNC30Lwg0YDQsNC30L7QsdGA0LDRgtGM0L/QvtC30LjRhtC40Y7QtNC+0LrRg9C80LXQvdGC0LAg0YDQsNGB0YHRh9C40YLQsNGC0YzRgNC10LPQuNGB0YLRgNGL0L3QsCAnICtcbiAgJ9GA0LDRgdGB0YfQuNGC0LDRgtGM0YDQtdCz0LjRgdGC0YDRi9C/0L4g0YHQuNC80LIg0YHQvtC30LTQsNGC0YzQvtCx0YrQtdC60YIg0YHRgtCw0YLRg9GB0LLQvtC30LLRgNCw0YLQsCDRgdGC0YDQutC+0LvQuNGH0LXRgdGC0LLQvtGB0YLRgNC+0Log0YHRhNC+0YDQvNC40YDQvtCy0LDRgtGM0L/QvtC30LjRhtC40Y7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgdGH0LXRgtC/0L7QutC+0LTRgyDRgtC10LrRg9GJ0LXQtdCy0YDQtdC80Y8g0YLQuNC/0LfQvdCw0YfQtdC90LjRjyDRgtC40L/Qt9C90LDRh9C10L3QuNGP0YHRgtGAINGD0YHRgtCw0L3QvtCy0LjRgtGM0YLQsNC90LAg0YPRgdGC0LDQvdC+0LLQuNGC0YzRgtCw0L/QviDRhNC40LrRgdGI0LDQsdC70L7QvSDRiNCw0LHQu9C+0L0gJztcbiAgXG4gIC8vIHY4INC80LXRgtC+0LTRiyDQs9C70L7QsdCw0LvRjNC90L7Qs9C+INC60L7QvdGC0LXQutGB0YLQsCA9PT4gYnVpbHRfaW5cbiAgdmFyIHY4X2dsb2JhbF9jb250ZXh0X21ldGhvZHMgPVxuICAnYWNvcyBhc2luIGF0YW4gYmFzZTY00LfQvdCw0YfQtdC90LjQtSBiYXNlNjTRgdGC0YDQvtC60LAgY29zIGV4cCBsb2cgbG9nMTAgcG93IHNpbiBzcXJ0IHRhbiB4bWzQt9C90LDRh9C10L3QuNC1IHhtbNGB0YLRgNC+0LrQsCAnICtcbiAgJ3htbNGC0LjQvyB4bWzRgtC40L/Qt9C90Ycg0LDQutGC0LjQstC90L7QtdC+0LrQvdC+INCx0LXQt9C+0L/QsNGB0L3Ri9C50YDQtdC20LjQvCDQsdC10LfQvtC/0LDRgdC90YvQudGA0LXQttC40LzRgNCw0LfQtNC10LvQtdC90LjRj9C00LDQvdC90YvRhSDQsdGD0LvQtdCy0L4g0LLQstC10YHRgtC40LTQsNGC0YMg0LLQstC10YHRgtC40LfQvdCw0YfQtdC90LjQtSAnICtcbiAgJ9Cy0LLQtdGB0YLQuNGB0YLRgNC+0LrRgyDQstCy0LXRgdGC0LjRh9C40YHQu9C+INCy0L7Qt9C80L7QttC90L7RgdGC0YzRh9GC0LXQvdC40Y94bWwg0LLQvtC/0YDQvtGBINCy0L7RgdGB0YLQsNC90L7QstC40YLRjNC30L3QsNGH0LXQvdC40LUg0LLRgNC10LMg0LLRi9Cz0YDRg9C30LjRgtGM0LbRg9GA0L3QsNC70YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnICtcbiAgJ9Cy0YvQv9C+0LvQvdC40YLRjNC+0LHRgNCw0LHQvtGC0LrRg9C+0L/QvtCy0LXRidC10L3QuNGPINCy0YvQv9C+0LvQvdC40YLRjNC/0YDQvtCy0LXRgNC60YPQv9GA0LDQstC00L7RgdGC0YPQv9CwINCy0YvRh9C40YHQu9C40YLRjCDQs9C+0LQg0LTQsNC90L3Ri9C10YTQvtGA0LzRi9Cy0LfQvdCw0YfQtdC90LjQtSDQtNCw0YLQsCDQtNC10L3RjCDQtNC10L3RjNCz0L7QtNCwICcgK1xuICAn0LTQtdC90YzQvdC10LTQtdC70Lgg0LTQvtCx0LDQstC40YLRjNC80LXRgdGP0YYg0LfQsNCx0LvQvtC60LjRgNC+0LLQsNGC0YzQtNCw0L3QvdGL0LXQtNC70Y/RgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC30LDQsdC70L7QutC40YDQvtCy0LDRgtGM0YDQsNCx0L7RgtGD0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC30LDQstC10YDRiNC40YLRjNGA0LDQsdC+0YLRg9GB0LjRgdGC0LXQvNGLICcgK1xuICAn0LfQsNCz0YDRg9C30LjRgtGM0LLQvdC10YjQvdGO0Y7QutC+0LzQv9C+0L3QtdC90YLRgyDQt9Cw0LrRgNGL0YLRjNGB0L/RgNCw0LLQutGDINC30LDQv9C40YHQsNGC0Yxqc29uINC30LDQv9C40YHQsNGC0Yx4bWwg0LfQsNC/0LjRgdCw0YLRjNC00LDRgtGDanNvbiDQt9Cw0L/QuNGB0YzQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfQt9Cw0L/QvtC70L3QuNGC0YzQt9C90LDRh9C10L3QuNGP0YHQstC+0LnRgdGC0LIg0LfQsNC/0YDQvtGB0LjRgtGM0YDQsNC30YDQtdGI0LXQvdC40LXQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LfQsNC/0YPRgdGC0LjRgtGM0L/RgNC40LvQvtC20LXQvdC40LUg0LfQsNC/0YPRgdGC0LjRgtGM0YHQuNGB0YLQtdC80YMg0LfQsNGE0LjQutGB0LjRgNC+0LLQsNGC0YzRgtGA0LDQvdC30LDQutGG0LjRjiAnICtcbiAgJ9C30L3QsNGH0LXQvdC40LXQstC00LDQvdC90YvQtdGE0L7RgNC80Ysg0LfQvdCw0YfQtdC90LjQtdCy0YHRgtGA0L7QutGD0LLQvdGD0YLRgCDQt9C90LDRh9C10L3QuNC10LLRhNCw0LnQuyDQt9C90LDRh9C10L3QuNC10LfQsNC/0L7Qu9C90LXQvdC+INC30L3QsNGH0LXQvdC40LXQuNC30YHRgtGA0L7QutC40LLQvdGD0YLRgCDQt9C90LDRh9C10L3QuNC10LjQt9GE0LDQudC70LAgJyArXG4gICfQuNC3eG1s0YLQuNC/0LAg0LjQvNC/0L7RgNGC0LzQvtC00LXQu9C4eGR0byDQuNC80Y/QutC+0LzQv9GM0Y7RgtC10YDQsCDQuNC80Y/Qv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LjQvdC40YbQuNCw0LvQuNC30LjRgNC+0LLQsNGC0YzQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvQtdC00LDQvdC90YvQtSDQuNC90YTQvtGA0LzQsNGG0LjRj9C+0LHQvtGI0LjQsdC60LUgJyArXG4gICfQutCw0YLQsNC70L7Qs9Cx0LjQsdC70LjQvtGC0LXQutC40LzQvtCx0LjQu9GM0L3QvtCz0L7Rg9GB0YLRgNC+0LnRgdGC0LLQsCDQutCw0YLQsNC70L7Qs9Cy0YDQtdC80LXQvdC90YvRhdGE0LDQudC70L7QsiDQutCw0YLQsNC70L7Qs9C00L7QutGD0LzQtdC90YLQvtCyINC60LDRgtCw0LvQvtCz0L/RgNC+0LPRgNCw0LzQvNGLINC60L7QtNC40YDQvtCy0LDRgtGM0YHRgtGA0L7QutGDICcgK1xuICAn0LrQvtC00LvQvtC60LDQu9C40LfQsNGG0LjQuNC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQutC+0LTRgdC40LzQstC+0LvQsCDQutC+0LzQsNC90LTQsNGB0LjRgdGC0LXQvNGLINC60L7QvdC10YbQs9C+0LTQsCDQutC+0L3QtdGG0LTQvdGPINC60L7QvdC10YbQutCy0LDRgNGC0LDQu9CwINC60L7QvdC10YbQvNC10YHRj9GG0LAg0LrQvtC90LXRhtC80LjQvdGD0YLRiyAnICtcbiAgJ9C60L7QvdC10YbQvdC10LTQtdC70Lgg0LrQvtC90LXRhtGH0LDRgdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9Cx0LDQt9GL0LTQsNC90L3Ri9GF0LjQt9C80LXQvdC10L3QsNC00LjQvdCw0LzQuNGH0LXRgdC60Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0LjQt9C80LXQvdC10L3QsCDQutC+0L/QuNGA0L7QstCw0YLRjNC00LDQvdC90YvQtdGE0L7RgNC80YsgJyArXG4gICfQutC+0L/QuNGA0L7QstCw0YLRjNGE0LDQudC7INC60YDQsNGC0LrQvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQvtGI0LjQsdC60Lgg0LvQtdCyINC80LDQutGBINC80LXRgdGC0L3QvtC10LLRgNC10LzRjyDQvNC10YHRj9GGINC80LjQvSDQvNC40L3Rg9GC0LAg0LzQvtC90L7Qv9C+0LvRjNC90YvQudGA0LXQttC40Lwg0L3QsNC50YLQuCAnICtcbiAgJ9C90LDQudGC0LjQvdC10LTQvtC/0YPRgdGC0LjQvNGL0LXRgdC40LzQstC+0LvRi3htbCDQvdCw0LnRgtC40L7QutC90L7Qv9C+0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdC+0LnRgdGB0YvQu9C60LUg0L3QsNC50YLQuNC/0L7QvNC10YfQtdC90L3Ri9C10L3QsNGD0LTQsNC70LXQvdC40LUg0L3QsNC50YLQuNC/0L7RgdGB0YvQu9C60LDQvCDQvdCw0LnRgtC40YTQsNC50LvRiyAnICtcbiAgJ9C90LDRh9Cw0LvQvtCz0L7QtNCwINC90LDRh9Cw0LvQvtC00L3RjyDQvdCw0YfQsNC70L7QutCy0LDRgNGC0LDQu9CwINC90LDRh9Cw0LvQvtC80LXRgdGP0YbQsCDQvdCw0YfQsNC70L7QvNC40L3Rg9GC0Ysg0L3QsNGH0LDQu9C+0L3QtdC00LXQu9C4INC90LDRh9Cw0LvQvtGH0LDRgdCwINC90LDRh9Cw0YLRjNC30LDQv9GA0L7RgdGA0LDQt9GA0LXRiNC10L3QuNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0L3QsNGH0LDRgtGM0LfQsNC/0YPRgdC60L/RgNC40LvQvtC20LXQvdC40Y8g0L3QsNGH0LDRgtGM0LrQvtC/0LjRgNC+0LLQsNC90LjQtdGE0LDQudC70LAg0L3QsNGH0LDRgtGM0L/QtdGA0LXQvNC10YnQtdC90LjQtdGE0LDQudC70LAg0L3QsNGH0LDRgtGM0L/QvtC00LrQu9GO0YfQtdC90LjQtdCy0L3QtdGI0L3QtdC50LrQvtC80L/QvtC90LXQvdGC0YsgJyArXG4gICfQvdCw0YfQsNGC0YzQv9C+0LTQutC70Y7Rh9C10L3QuNC10YDQsNGB0YjQuNGA0LXQvdC40Y/RgNCw0LHQvtGC0YvRgdC60YDQuNC/0YLQvtCz0YDQsNGE0LjQtdC5INC90LDRh9Cw0YLRjNC/0L7QtNC60LvRjtGH0LXQvdC40LXRgNCw0YHRiNC40YDQtdC90LjRj9GA0LDQsdC+0YLRi9GB0YTQsNC50LvQsNC80Lgg0L3QsNGH0LDRgtGM0L/QvtC40YHQutGE0LDQudC70L7QsiAnICtcbiAgJ9C90LDRh9Cw0YLRjNC/0L7Qu9GD0YfQtdC90LjQtdC60LDRgtCw0LvQvtCz0LDQstGA0LXQvNC10L3QvdGL0YXRhNCw0LnQu9C+0LIg0L3QsNGH0LDRgtGM0L/QvtC70YPRh9C10L3QuNC10LrQsNGC0LDQu9C+0LPQsNC00L7QutGD0LzQtdC90YLQvtCyINC90LDRh9Cw0YLRjNC/0L7Qu9GD0YfQtdC90LjQtdGA0LDQsdC+0YfQtdCz0L7QutCw0YLQsNC70L7Qs9Cw0LTQsNC90L3Ri9GF0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0L3QsNGH0LDRgtGM0L/QvtC70YPRh9C10L3QuNC10YTQsNC50LvQvtCyINC90LDRh9Cw0YLRjNC/0L7QvNC10YnQtdC90LjQtdGE0LDQudC70LAg0L3QsNGH0LDRgtGM0L/QvtC80LXRidC10L3QuNC10YTQsNC50LvQvtCyINC90LDRh9Cw0YLRjNGB0L7Qt9C00LDQvdC40LXQtNCy0L7QuNGH0L3Ri9GF0LTQsNC90L3Ri9GF0LjQt9GE0LDQudC70LAg0L3QsNGH0LDRgtGM0YHQvtC30LTQsNC90LjQtdC60LDRgtCw0LvQvtCz0LAgJyArXG4gICfQvdCw0YfQsNGC0YzRgtGA0LDQvdC30LDQutGG0LjRjiDQvdCw0YfQsNGC0YzRg9C00LDQu9C10L3QuNC10YTQsNC50LvQvtCyINC90LDRh9Cw0YLRjNGD0YHRgtCw0L3QvtCy0LrRg9Cy0L3QtdGI0L3QtdC50LrQvtC80L/QvtC90LXQvdGC0Ysg0L3QsNGH0LDRgtGM0YPRgdGC0LDQvdC+0LLQutGD0YDQsNGB0YjQuNGA0LXQvdC40Y/RgNCw0LHQvtGC0YvRgdC60YDQuNC/0YLQvtCz0YDQsNGE0LjQtdC5ICcgK1xuICAn0L3QsNGH0LDRgtGM0YPRgdGC0LDQvdC+0LLQutGD0YDQsNGB0YjQuNGA0LXQvdC40Y/RgNCw0LHQvtGC0YvRgdGE0LDQudC70LDQvNC4INC90LXQtNC10LvRj9Cz0L7QtNCwINC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtGM0LfQsNCy0LXRgNGI0LXQvdC40Y/RgdC+0LXQtNC40L3QtdC90LjRjyDQvdC+0LzQtdGA0YHQtdCw0L3RgdCw0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLICcgK1xuICAn0L3QvtC80LXRgNGB0L7QtdC00LjQvdC10L3QuNGP0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC90YDQtdCzINC90YHRgtGAINC+0LHQvdC+0LLQuNGC0YzQuNC90YLQtdGA0YTQtdC50YEg0L7QsdC90L7QstC40YLRjNC90YPQvNC10YDQsNGG0LjRjtC+0LHRitC10LrRgtC+0LIg0L7QsdC90L7QstC40YLRjNC/0L7QstGC0L7RgNC90L7QuNGB0L/QvtC70YzQt9GD0LXQvNGL0LXQt9C90LDRh9C10L3QuNGPICcgK1xuICAn0L7QsdGA0LDQsdC+0YLQutCw0L/RgNC10YDRi9Cy0LDQvdC40Y/Qv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L7QsdGK0LXQtNC40L3QuNGC0YzRhNCw0LnQu9GLINC+0LrRgCDQvtC/0LjRgdCw0L3QuNC10L7RiNC40LHQutC4INC+0L/QvtCy0LXRgdGC0LjRgtGMINC+0L/QvtCy0LXRgdGC0LjRgtGM0L7QsdC40LfQvNC10L3QtdC90LjQuCAnICtcbiAgJ9C+0YLQutC70Y7Rh9C40YLRjNC+0LHRgNCw0LHQvtGC0YfQuNC60LfQsNC/0YDQvtGB0LDQvdCw0YHRgtGA0L7QtdC60LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPINC+0YLQutC70Y7Rh9C40YLRjNC+0LHRgNCw0LHQvtGC0YfQuNC60L7QttC40LTQsNC90LjRjyDQvtGC0LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC+0L/QvtCy0LXRidC10L3QuNGPICcgK1xuICAn0L7RgtC60YDRi9GC0YzQt9C90LDRh9C10L3QuNC1INC+0YLQutGA0YvRgtGM0LjQvdC00LXQutGB0YHQv9GA0LDQstC60Lgg0L7RgtC60YDRi9GC0YzRgdC+0LTQtdGA0LbQsNC90LjQtdGB0L/RgNCw0LLQutC4INC+0YLQutGA0YvRgtGM0YHQv9GA0LDQstC60YMg0L7RgtC60YDRi9GC0YzRhNC+0YDQvNGDINC+0YLQutGA0YvRgtGM0YTQvtGA0LzRg9C80L7QtNCw0LvRjNC90L4gJyArXG4gICfQvtGC0LzQtdC90LjRgtGM0YLRgNCw0L3Qt9Cw0LrRhtC40Y4g0L7Rh9C40YHRgtC40YLRjNC20YPRgNC90LDQu9GA0LXQs9C40YHRgtGA0LDRhtC40Lgg0L7Rh9C40YHRgtC40YLRjNC90LDRgdGC0YDQvtC50LrQuNC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQvtGH0LjRgdGC0LjRgtGM0YHQvtC+0LHRidC10L3QuNGPINC/0LDRgNCw0LzQtdGC0YDRi9C00L7RgdGC0YPQv9CwICcgK1xuICAn0L/QtdGA0LXQudGC0LjQv9C+0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdC+0LnRgdGB0YvQu9C60LUg0L/QtdGA0LXQvNC10YHRgtC40YLRjNGE0LDQudC7INC/0L7QtNC60LvRjtGH0LjRgtGM0LLQvdC10YjQvdGO0Y7QutC+0LzQv9C+0L3QtdC90YLRgyAnICtcbiAgJ9C/0L7QtNC60LvRjtGH0LjRgtGM0L7QsdGA0LDQsdC+0YLRh9C40LrQt9Cw0L/RgNC+0YHQsNC90LDRgdGC0YDQvtC10LrQutC70LjQtdC90YLQsNC70LjRhtC10L3Qt9C40YDQvtCy0LDQvdC40Y8g0L/QvtC00LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC+0LbQuNC00LDQvdC40Y8g0L/QvtC00LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC+0L/QvtCy0LXRidC10L3QuNGPICcgK1xuICAn0L/QvtC00LrQu9GO0YfQuNGC0YzRgNCw0YHRiNC40YDQtdC90LjQtdGA0LDQsdC+0YLRi9GB0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC10Lkg0L/QvtC00LrQu9GO0YfQuNGC0YzRgNCw0YHRiNC40YDQtdC90LjQtdGA0LDQsdC+0YLRi9GB0YTQsNC50LvQsNC80Lgg0L/QvtC00YDQvtCx0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQvtGI0LjQsdC60LggJyArXG4gICfQv9C+0LrQsNC30LDRgtGM0LLQstC+0LTQtNCw0YLRiyDQv9C+0LrQsNC30LDRgtGM0LLQstC+0LTQt9C90LDRh9C10L3QuNGPINC/0L7QutCw0LfQsNGC0YzQstCy0L7QtNGB0YLRgNC+0LrQuCDQv9C+0LrQsNC30LDRgtGM0LLQstC+0LTRh9C40YHQu9CwINC/0L7QutCw0LfQsNGC0YzQstC+0L/RgNC+0YEg0L/QvtC60LDQt9Cw0YLRjNC30L3QsNGH0LXQvdC40LUgJyArXG4gICfQv9C+0LrQsNC30LDRgtGM0LjQvdGE0L7RgNC80LDRhtC40Y7QvtCx0L7RiNC40LHQutC1INC/0L7QutCw0LfQsNGC0YzQvdCw0LrQsNGA0YLQtSDQv9C+0LrQsNC30LDRgtGM0L7Qv9C+0LLQtdGJ0LXQvdC40LXQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L/QvtC60LDQt9Cw0YLRjNC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LUg0L/QvtC70L3QvtC10LjQvNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0L/QvtC70YPRh9C40YLRjGNvbdC+0LHRitC10LrRgiDQv9C+0LvRg9GH0LjRgtGMeG1s0YLQuNC/INC/0L7Qu9GD0YfQuNGC0YzQsNC00YDQtdGB0L/QvtC80LXRgdGC0L7Qv9C+0LvQvtC20LXQvdC40Y4g0L/QvtC70YPRh9C40YLRjNCx0LvQvtC60LjRgNC+0LLQutGD0YHQtdCw0L3RgdC+0LIg0L/QvtC70YPRh9C40YLRjNCy0YDQtdC80Y/Qt9Cw0LLQtdGA0YjQtdC90LjRj9GB0L/Rj9GJ0LXQs9C+0YHQtdCw0L3RgdCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNCy0YDQtdC80Y/Qt9Cw0YHRi9C/0LDQvdC40Y/Qv9Cw0YHRgdC40LLQvdC+0LPQvtGB0LXQsNC90YHQsCDQv9C+0LvRg9GH0LjRgtGM0LLRgNC10LzRj9C+0LbQuNC00LDQvdC40Y/QsdC70L7QutC40YDQvtCy0LrQuNC00LDQvdC90YvRhSDQv9C+0LvRg9GH0LjRgtGM0LTQsNC90L3Ri9C10LLRi9Cx0L7RgNCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LnQv9Cw0YDQsNC80LXRgtGA0LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzQtNC+0L/Rg9GB0YLQuNC80YvQtdC60L7QtNGL0LvQvtC60LDQu9C40LfQsNGG0LjQuCDQv9C+0LvRg9GH0LjRgtGM0LTQvtC/0YPRgdGC0LjQvNGL0LXRh9Cw0YHQvtCy0YvQtdC/0L7Rj9GB0LAgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LfQsNCz0L7Qu9C+0LLQvtC60LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzQt9Cw0LPQvtC70L7QstC+0LrRgdC40YHRgtC10LzRiyDQv9C+0LvRg9GH0LjRgtGM0LfQvdCw0YfQtdC90LjRj9C+0YLQsdC+0YDQsNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+0LvRg9GH0LjRgtGM0LjQt9Cy0YDQtdC80LXQvdC90L7Qs9C+0YXRgNCw0L3QuNC70LjRidCwINC/0L7Qu9GD0YfQuNGC0YzQuNC80Y/QstGA0LXQvNC10L3QvdC+0LPQvtGE0LDQudC70LAgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LjQvNGP0LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzQuNC90YTQvtGA0LzQsNGG0LjRjtGN0LrRgNCw0L3QvtCy0LrQu9C40LXQvdGC0LAg0L/QvtC70YPRh9C40YLRjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4ICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHQvtCx0YvRgtC40Y/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0L/QvtC70YPRh9C40YLRjNC60YDQsNGC0LrQuNC50LfQsNCz0L7Qu9C+0LLQvtC60L/RgNC40LvQvtC20LXQvdC40Y8g0L/QvtC70YPRh9C40YLRjNC80LDQutC10YLQvtGE0L7RgNC80LvQtdC90LjRjyAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQvNCw0YHQutGD0LLRgdC10YTQsNC50LvRiyDQv9C+0LvRg9GH0LjRgtGM0LzQsNGB0LrRg9Cy0YHQtdGE0LDQudC70YvQutC70LjQtdC90YLQsCDQv9C+0LvRg9GH0LjRgtGM0LzQsNGB0LrRg9Cy0YHQtdGE0LDQudC70YvRgdC10YDQstC10YDQsCDQv9C+0LvRg9GH0LjRgtGM0LzQtdGB0YLQvtC/0L7Qu9C+0LbQtdC90LjQtdC/0L7QsNC00YDQtdGB0YMgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LzQuNC90LjQvNCw0LvRjNC90YPRjtC00LvQuNC90YPQv9Cw0YDQvtC70LXQudC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC/0L7Qu9GD0YfQuNGC0YzQvdCw0LLQuNCz0LDRhtC40L7QvdC90YPRjtGB0YHRi9C70LrRgyDQv9C+0LvRg9GH0LjRgtGM0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdGD0Y7RgdGB0YvQu9C60YPQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30YsgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0L7QsdC90L7QstC70LXQvdC40LXQutC+0L3RhNC40LPRg9GA0LDRhtC40LjQsdCw0LfRi9C00LDQvdC90YvRhSDQv9C+0LvRg9GH0LjRgtGM0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvRhdC00LDQvdC90YvRhdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQv9C+0LvRg9GH0LjRgtGM0L7QsdGJ0LjQudC80LDQutC10YIgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0L7QsdGJ0YPRjtGE0L7RgNC80YMg0L/QvtC70YPRh9C40YLRjNC+0LrQvdCwINC/0L7Qu9GD0YfQuNGC0YzQvtC/0LXRgNCw0YLQuNCy0L3Rg9GO0L7RgtC80LXRgtC60YPQstGA0LXQvNC10L3QuCDQv9C+0LvRg9GH0LjRgtGM0L7RgtC60LvRjtGH0LXQvdC40LXQsdC10LfQvtC/0LDRgdC90L7Qs9C+0YDQtdC20LjQvNCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC/0LDRgNCw0LzQtdGC0YDRi9GE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGL0YXQvtC/0YbQuNC50LjQvdGC0LXRgNGE0LXQudGB0LAg0L/QvtC70YPRh9C40YLRjNC/0L7Qu9C90L7QtdC40LzRj9C/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3QvtCz0L7Qt9C90LDRh9C10L3QuNGPICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNGP0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdGL0YXRgdGB0YvQu9C+0Log0L/QvtC70YPRh9C40YLRjNC/0YDQvtCy0LXRgNC60YPRgdC70L7QttC90L7RgdGC0LjQv9Cw0YDQvtC70LXQudC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC/0L7Qu9GD0YfQuNGC0YzRgNCw0LfQtNC10LvQuNGC0LXQu9GM0L/Rg9GC0LggJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0YDQsNC30LTQtdC70LjRgtC10LvRjNC/0YPRgtC40LrQu9C40LXQvdGC0LAg0L/QvtC70YPRh9C40YLRjNGA0LDQt9C00LXQu9C40YLQtdC70YzQv9GD0YLQuNGB0LXRgNCy0LXRgNCwINC/0L7Qu9GD0YfQuNGC0YzRgdC10LDQvdGB0YvQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30YsgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0YHQutC+0YDQvtGB0YLRjNC60LvQuNC10L3RgtGB0LrQvtCz0L7RgdC+0LXQtNC40L3QtdC90LjRjyDQv9C+0LvRg9GH0LjRgtGM0YHQvtC10LTQuNC90LXQvdC40Y/QuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0L/QvtC70YPRh9C40YLRjNGB0L7QvtCx0YnQtdC90LjRj9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjiAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzRgdC+0L7RgtCy0LXRgtGB0YLQstC40LXQvtCx0YrQtdC60YLQsNC40YTQvtGA0LzRiyDQv9C+0LvRg9GH0LjRgtGM0YHQvtGB0YLQsNCy0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LjQvdGC0LXRgNGE0LXQudGB0LBvZGF0YSDQv9C+0LvRg9GH0LjRgtGM0YHRgtGA0YPQutGC0YPRgNGD0YXRgNCw0L3QtdC90LjRj9Cx0LDQt9GL0LTQsNC90L3Ri9GFICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNGC0LXQutGD0YnQuNC50YHQtdCw0L3RgdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQv9C+0LvRg9GH0LjRgtGM0YTQsNC50Lsg0L/QvtC70YPRh9C40YLRjNGE0LDQudC70Ysg0L/QvtC70YPRh9C40YLRjNGE0L7RgNC80YMg0L/QvtC70YPRh9C40YLRjNGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGD0Y7QvtC/0YbQuNGOICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGD0Y7QvtC/0YbQuNGO0LjQvdGC0LXRgNGE0LXQudGB0LAg0L/QvtC70YPRh9C40YLRjNGH0LDRgdC+0LLQvtC50L/QvtGP0YHQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C40L7RgSDQv9C+0LzQtdGB0YLQuNGC0YzQstC+0LLRgNC10LzQtdC90L3QvtC10YXRgNCw0L3QuNC70LjRidC1ICcgK1xuICAn0L/QvtC80LXRgdGC0LjRgtGM0YTQsNC50Lsg0L/QvtC80LXRgdGC0LjRgtGM0YTQsNC50LvRiyDQv9GA0LDQsiDQv9GA0LDQstC+0LTQvtGB0YLRg9C/0LAg0L/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdC+0LXQt9C90LDRh9C10L3QuNC1INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10LrQvtC00LDQu9C+0LrQsNC70LjQt9Cw0YbQuNC4INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10L/QtdGA0LjQvtC00LAgJyArXG4gICfQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC/0YDQsNCy0LAg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQv9GA0LjQu9C+0LbQtdC90LjRjyDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdGB0L7QsdGL0YLQuNGP0LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10YfQsNGB0L7QstC+0LPQvtC/0L7Rj9GB0LAg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSAnICtcbiAgJ9C/0YDQtdC60YDQsNGC0LjRgtGM0YDQsNCx0L7RgtGD0YHQuNGB0YLQtdC80Ysg0L/RgNC40LLQuNC70LXQs9C40YDQvtCy0LDQvdC90YvQudGA0LXQttC40Lwg0L/RgNC+0LTQvtC70LbQuNGC0YzQstGL0LfQvtCyINC/0YDQvtGH0LjRgtCw0YLRjGpzb24g0L/RgNC+0YfQuNGC0LDRgtGMeG1sINC/0YDQvtGH0LjRgtCw0YLRjNC00LDRgtGDanNvbiDQv9GD0YHRgtCw0Y/RgdGC0YDQvtC60LAgJyArXG4gICfRgNCw0LHQvtGH0LjQudC60LDRgtCw0LvQvtCz0LTQsNC90L3Ri9GF0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGA0LDQt9Cx0LvQvtC60LjRgNC+0LLQsNGC0YzQtNCw0L3QvdGL0LXQtNC70Y/RgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINGA0LDQt9C00LXQu9C40YLRjNGE0LDQudC7INGA0LDQt9C+0YDQstCw0YLRjNGB0L7QtdC00LjQvdC10L3QuNC10YHQstC90LXRiNC90LjQvNC40YHRgtC+0YfQvdC40LrQvtC80LTQsNC90L3Ri9GFICcgK1xuICAn0YDQsNGB0LrQvtC00LjRgNC+0LLQsNGC0YzRgdGC0YDQvtC60YMg0YDQvtC70YzQtNC+0YHRgtGD0L/QvdCwINGB0LXQutGD0L3QtNCwINGB0LjQs9C90LDQuyDRgdC40LzQstC+0Lsg0YHQutC+0L/QuNGA0L7QstCw0YLRjNC20YPRgNC90LDQu9GA0LXQs9C40YHRgtGA0LDRhtC40Lgg0YHQvNC10YnQtdC90LjQtdC70LXRgtC90LXQs9C+0LLRgNC10LzQtdC90LggJyArXG4gICfRgdC80LXRidC10L3QuNC10YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LLRgNC10LzQtdC90Lgg0YHQvtC10LTQuNC90LjRgtGM0LHRg9GE0LXRgNGL0LTQstC+0LjRh9C90YvRhdC00LDQvdC90YvRhSDRgdC+0LfQtNCw0YLRjNC60LDRgtCw0LvQvtCzINGB0L7Qt9C00LDRgtGM0YTQsNCx0YDQuNC60YN4ZHRvINGB0L7QutGA0Lsg0YHQvtC60YDQu9C/INGB0L7QutGA0L8g0YHQvtC+0LHRidC40YLRjCAnICtcbiAgJ9GB0L7RgdGC0L7Rj9C90LjQtSDRgdC+0YXRgNCw0L3QuNGC0YzQt9C90LDRh9C10L3QuNC1INGB0L7RhdGA0LDQvdC40YLRjNC90LDRgdGC0YDQvtC50LrQuNC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRgdGA0LXQtCDRgdGC0YDQtNC70LjQvdCwINGB0YLRgNC30LDQutCw0L3Rh9C40LLQsNC10YLRgdGP0L3QsCDRgdGC0YDQt9Cw0LzQtdC90LjRgtGMINGB0YLRgNC90LDQudGC0Lgg0YHRgtGA0L3QsNGH0LjQvdCw0LXRgtGB0Y/RgSAnICtcbiAgJ9GB0YLRgNC+0LrQsCDRgdGC0YDQvtC60LDRgdC+0LXQtNC40L3QtdC90LjRj9C40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDRgdGC0YDQv9C+0LvRg9GH0LjRgtGM0YHRgtGA0L7QutGDINGB0YLRgNGA0LDQt9C00LXQu9C40YLRjCDRgdGC0YDRgdC+0LXQtNC40L3QuNGC0Ywg0YHRgtGA0YHRgNCw0LLQvdC40YLRjCDRgdGC0YDRh9C40YHQu9C+0LLRhdC+0LbQtNC10L3QuNC5ICcrXG4gICfRgdGC0YDRh9C40YHQu9C+0YHRgtGA0L7QuiDRgdGC0YDRiNCw0LHQu9C+0L0g0YLQtdC60YPRidCw0Y/QtNCw0YLQsCDRgtC10LrRg9GJ0LDRj9C00LDRgtCw0YHQtdCw0L3RgdCwINGC0LXQutGD0YnQsNGP0YPQvdC40LLQtdGA0YHQsNC70YzQvdCw0Y/QtNCw0YLQsCDRgtC10LrRg9GJ0LDRj9GD0L3QuNCy0LXRgNGB0LDQu9GM0L3QsNGP0LTQsNGC0LDQstC80LjQu9C70LjRgdC10LrRg9C90LTQsNGFICcgK1xuICAn0YLQtdC60YPRidC40LnQstCw0YDQuNCw0L3RgtC40L3RgtC10YDRhNC10LnRgdCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINGC0LXQutGD0YnQuNC50LLQsNGA0LjQsNC90YLQvtGB0L3QvtCy0L3QvtCz0L7RiNGA0LjRhNGC0LDQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0YLQtdC60YPRidC40LnQutC+0LTQu9C+0LrQsNC70LjQt9Cw0YbQuNC4ICcgK1xuICAn0YLQtdC60YPRidC40LnRgNC10LbQuNC80LfQsNC/0YPRgdC60LAg0YLQtdC60YPRidC40LnRj9C30YvQuiDRgtC10LrRg9GJ0LjQudGP0LfRi9C60YHQuNGB0YLQtdC80Ysg0YLQuNC/INGC0LjQv9C30L3RhyDRgtGA0LDQvdC30LDQutGG0LjRj9Cw0LrRgtC40LLQvdCwINGC0YDQtdCzINGD0LTQsNC70LjRgtGM0LTQsNC90L3Ri9C10LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLICcgK1xuICAn0YPQtNCw0LvQuNGC0YzQuNC30LLRgNC10LzQtdC90L3QvtCz0L7RhdGA0LDQvdC40LvQuNGJ0LAg0YPQtNCw0LvQuNGC0YzQvtCx0YrQtdC60YLRiyDRg9C00LDQu9C40YLRjNGE0LDQudC70Ysg0YPQvdC40LLQtdGA0YHQsNC70YzQvdC+0LXQstGA0LXQvNGPINGD0YHRgtCw0L3QvtCy0LjRgtGM0LHQtdC30L7Qv9Cw0YHQvdGL0LnRgNC10LbQuNC8ICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQsdC10LfQvtC/0LDRgdC90YvQudGA0LXQttC40LzRgNCw0LfQtNC10LvQtdC90LjRj9C00LDQvdC90YvRhSDRg9GB0YLQsNC90L7QstC40YLRjNCx0LvQvtC60LjRgNC+0LLQutGD0YHQtdCw0L3RgdC+0LIg0YPRgdGC0LDQvdC+0LLQuNGC0YzQstC90LXRiNC90Y7RjtC60L7QvNC/0L7QvdC10L3RgtGDICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQstGA0LXQvNGP0LfQsNCy0LXRgNGI0LXQvdC40Y/RgdC/0Y/RidC10LPQvtGB0LXQsNC90YHQsCDRg9GB0YLQsNC90L7QstC40YLRjNCy0YDQtdC80Y/Qt9Cw0YHRi9C/0LDQvdC40Y/Qv9Cw0YHRgdC40LLQvdC+0LPQvtGB0LXQsNC90YHQsCDRg9GB0YLQsNC90L7QstC40YLRjNCy0YDQtdC80Y/QvtC20LjQtNCw0L3QuNGP0LHQu9C+0LrQuNGA0L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNC30LDQs9C+0LvQvtCy0L7QutC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDRg9GB0YLQsNC90L7QstC40YLRjNC30LDQs9C+0LvQvtCy0L7QutGB0LjRgdGC0LXQvNGLINGD0YHRgtCw0L3QvtCy0LjRgtGM0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHQvtCx0YvRgtC40Y/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0YPRgdGC0LDQvdC+0LLQuNGC0YzQutGA0LDRgtC60LjQudC30LDQs9C+0LvQvtCy0L7QutC/0YDQuNC70L7QttC10L3QuNGPICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQvNC40L3QuNC80LDQu9GM0L3Rg9GO0LTQu9C40L3Rg9C/0LDRgNC+0LvQtdC50L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0YPRgdGC0LDQvdC+0LLQuNGC0YzQvNC+0L3QvtC/0L7Qu9GM0L3Ri9C50YDQtdC20LjQvCDRg9GB0YLQsNC90L7QstC40YLRjNC90LDRgdGC0YDQvtC50LrQuNC60LvQuNC10L3RgtCw0LvQuNGG0LXQvdC30LjRgNC+0LLQsNC90LjRjyAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvRhdC00LDQvdC90YvRhdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDRg9GB0YLQsNC90L7QstC40YLRjNC+0YLQutC70Y7Rh9C10L3QuNC10LHQtdC30L7Qv9Cw0YHQvdC+0LPQvtGA0LXQttC40LzQsCAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0L/QsNGA0LDQvNC10YLRgNGL0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90YvRhdC+0L/RhtC40LnQuNC90YLQtdGA0YTQtdC50YHQsCDRg9GB0YLQsNC90L7QstC40YLRjNC/0YDQuNCy0LjQu9C10LPQuNGA0L7QstCw0L3QvdGL0LnRgNC10LbQuNC8ICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQv9GA0L7QstC10YDQutGD0YHQu9C+0LbQvdC+0YHRgtC40L/QsNGA0L7Qu9C10LnQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDRg9GB0YLQsNC90L7QstC40YLRjNGA0LDRgdGI0LjRgNC10L3QuNC10YDQsNCx0L7RgtGL0YHQutGA0LjQv9GC0L7Qs9GA0LDRhNC40LXQuSAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0YDQsNGB0YjQuNGA0LXQvdC40LXRgNCw0LHQvtGC0YvRgdGE0LDQudC70LDQvNC4INGD0YHRgtCw0L3QvtCy0LjRgtGM0YHQvtC10LTQuNC90LXQvdC40LXRgdCy0L3QtdGI0L3QuNC80LjRgdGC0L7Rh9C90LjQutC+0LzQtNCw0L3QvdGL0YUg0YPRgdGC0LDQvdC+0LLQuNGC0YzRgdC+0L7RgtCy0LXRgtGB0YLQstC40LXQvtCx0YrQtdC60YLQsNC40YTQvtGA0LzRiyAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0YHQvtGB0YLQsNCy0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LjQvdGC0LXRgNGE0LXQudGB0LBvZGF0YSDRg9GB0YLQsNC90L7QstC40YLRjNGH0LDRgdC+0LLQvtC50L/QvtGP0YHQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0YPRgdGC0LDQvdC+0LLQuNGC0YzRh9Cw0YHQvtCy0L7QudC/0L7Rj9GB0YHQtdCw0L3RgdCwICcgK1xuICAn0YTQvtGA0LzQsNGCINGG0LXQuyDRh9Cw0YEg0YfQsNGB0L7QstC+0LnQv9C+0Y/RgSDRh9Cw0YHQvtCy0L7QudC/0L7Rj9GB0YHQtdCw0L3RgdCwINGH0LjRgdC70L4g0YfQuNGB0LvQvtC/0YDQvtC/0LjRgdGM0Y4g0Y3RgtC+0LDQtNGA0LXRgdCy0YDQtdC80LXQvdC90L7Qs9C+0YXRgNCw0L3QuNC70LjRidCwICc7XG5cbiAgLy8gdjgg0YHQstC+0LnRgdGC0LLQsCDQs9C70L7QsdCw0LvRjNC90L7Qs9C+INC60L7QvdGC0LXQutGB0YLQsCA9PT4gYnVpbHRfaW5cbiAgdmFyIHY4X2dsb2JhbF9jb250ZXh0X3Byb3BlcnR5ID1cbiAgJ3dz0YHRgdGL0LvQutC4INCx0LjQsdC70LjQvtGC0LXQutCw0LrQsNGA0YLQuNC90L7QuiDQsdC40LHQu9C40L7RgtC10LrQsNC80LDQutC10YLQvtCy0L7RhNC+0YDQvNC70LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQsdC40LHQu9C40L7RgtC10LrQsNGB0YLQuNC70LXQuSDQsdC40LfQvdC10YHQv9GA0L7RhtC10YHRgdGLICcgK1xuICAn0LLQvdC10YjQvdC40LXQuNGB0YLQvtGH0L3QuNC60LjQtNCw0L3QvdGL0YUg0LLQvdC10YjQvdC40LXQvtCx0YDQsNCx0L7RgtC60Lgg0LLQvdC10YjQvdC40LXQvtGC0YfQtdGC0Ysg0LLRgdGC0YDQvtC10L3QvdGL0LXQv9C+0LrRg9C/0LrQuCDQs9C70LDQstC90YvQudC40L3RgtC10YDRhNC10LnRgSDQs9C70LDQstC90YvQudGB0YLQuNC70YwgJyArXG4gICfQtNC+0LrRg9C80LXQvdGC0Ysg0LTQvtGB0YLQsNCy0LvRj9C10LzRi9C10YPQstC10LTQvtC80LvQtdC90LjRjyDQttGD0YDQvdCw0LvRi9C00L7QutGD0LzQtdC90YLQvtCyINC30LDQtNCw0YfQuCDQuNC90YTQvtGA0LzQsNGG0LjRj9C+0LHQuNC90YLQtdGA0L3QtdGC0YHQvtC10LTQuNC90LXQvdC40Lgg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNCw0LHQvtGH0LXQudC00LDRgtGLICcgK1xuICAn0LjRgdGC0L7RgNC40Y/RgNCw0LHQvtGC0YvQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LrQvtC90YHRgtCw0L3RgtGLINC60YDQuNGC0LXRgNC40LjQvtGC0LHQvtGA0LAg0LzQtdGC0LDQtNCw0L3QvdGL0LUg0L7QsdGA0LDQsdC+0YLQutC4INC+0YLQvtCx0YDQsNC20LXQvdC40LXRgNC10LrQu9Cw0LzRiyDQvtGC0L/RgNCw0LLQutCw0LTQvtGB0YLQsNCy0LvRj9C10LzRi9GF0YPQstC10LTQvtC80LvQtdC90LjQuSAnICtcbiAgJ9C+0YLRh9C10YLRiyDQv9Cw0L3QtdC70YzQt9Cw0LTQsNGH0L7RgSDQv9Cw0YDQsNC80LXRgtGA0LfQsNC/0YPRgdC60LAg0L/QsNGA0LDQvNC10YLRgNGL0YHQtdCw0L3RgdCwINC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyDQv9C70LDQvdGL0LLQuNC00L7QstGA0LDRgdGH0LXRgtCwINC/0LvQsNC90YvQstC40LTQvtCy0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40LogJyArXG4gICfQv9C70LDQvdGL0L7QsdC80LXQvdCwINC/0LvQsNC90YvRgdGH0LXRgtC+0LIg0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0YvQudC/0L7QuNGB0Log0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C40LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLQuCDQv9GA0L7QstC10YDQutCw0LLRgdGC0YDQvtC10L3QvdGL0YXQv9C+0LrRg9C/0L7QuiAnICtcbiAgJ9GA0LDQsdC+0YfQsNGP0LTQsNGC0LAg0YDQsNGB0YjQuNGA0LXQvdC40Y/QutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0YDQtdCz0LjRgdGC0YDRi9Cx0YPRhdCz0LDQu9GC0LXRgNC40Lgg0YDQtdCz0LjRgdGC0YDRi9C90LDQutC+0L/Qu9C10L3QuNGPINGA0LXQs9C40YHRgtGA0YvRgNCw0YHRh9C10YLQsCDRgNC10LPQuNGB0YLRgNGL0YHQstC10LTQtdC90LjQuSAnICtcbiAgJ9GA0LXQs9C70LDQvNC10L3RgtC90YvQtdC30LDQtNCw0L3QuNGPINGB0LXRgNC40LDQu9C40LfQsNGC0L7RgHhkdG8g0YHQv9GA0LDQstC+0YfQvdC40LrQuCDRgdGA0LXQtNGB0YLQstCw0LPQtdC+0L/QvtC30LjRhtC40L7QvdC40YDQvtCy0LDQvdC40Y8g0YHRgNC10LTRgdGC0LLQsNC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDRgdGA0LXQtNGB0YLQstCw0LzRg9C70YzRgtC40LzQtdC00LjQsCAnICtcbiAgJ9GB0YDQtdC00YHRgtCy0LDQvtGC0L7QsdGA0LDQttC10L3QuNGP0YDQtdC60LvQsNC80Ysg0YHRgNC10LTRgdGC0LLQsNC/0L7Rh9GC0Ysg0YHRgNC10LTRgdGC0LLQsNGC0LXQu9C10YTQvtC90LjQuCDRhNCw0LHRgNC40LrQsHhkdG8g0YTQsNC50LvQvtCy0YvQtdC/0L7RgtC+0LrQuCDRhNC+0L3QvtCy0YvQtdC30LDQtNCw0L3QuNGPINGF0YDQsNC90LjQu9C40YnQsNC90LDRgdGC0YDQvtC10LogJyArXG4gICfRhdGA0LDQvdC40LvQuNGJ0LXQstCw0YDQuNCw0L3RgtC+0LLQvtGC0YfQtdGC0L7QsiDRhdGA0LDQvdC40LvQuNGJ0LXQvdCw0YHRgtGA0L7QtdC60LTQsNC90L3Ri9GF0YTQvtGA0Lwg0YXRgNCw0L3QuNC70LjRidC10L7QsdGJ0LjRhdC90LDRgdGC0YDQvtC10Log0YXRgNCw0L3QuNC70LjRidC10L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40YXQvdCw0YHRgtGA0L7QtdC60LTQuNC90LDQvNC40YfQtdGB0LrQuNGF0YHQv9C40YHQutC+0LIgJyArXG4gICfRhdGA0LDQvdC40LvQuNGJ0LXQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjRhdC90LDRgdGC0YDQvtC10LrQvtGC0YfQtdGC0L7QsiDRhdGA0LDQvdC40LvQuNGJ0LXRgdC40YHRgtC10LzQvdGL0YXQvdCw0YHRgtGA0L7QtdC6ICc7XG5cbiAgLy8gYnVpbHRfaW4gOiDQstGB0YLRgNC+0LXQvdC90YvQtSDQuNC70Lgg0LHQuNCx0LvQuNC+0YLQtdGH0L3Ri9C1INC+0LHRitC10LrRgtGLICjQutC+0L3RgdGC0LDQvdGC0YssINC60LvQsNGB0YHRiywg0YTRg9C90LrRhtC40LgpXG4gIHZhciBCVUlMVElOID1cbiAgdjdfc3lzdGVtX2NvbnN0YW50cyArXG4gIHY3X2dsb2JhbF9jb250ZXh0X21ldGhvZHMgKyB2OF9nbG9iYWxfY29udGV4dF9tZXRob2RzICtcbiAgdjhfZ2xvYmFsX2NvbnRleHRfcHJvcGVydHk7XG4gIFxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L3QsNCx0L7RgNGLINC30L3QsNGH0LXQvdC40LkgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fc2V0c19vZl92YWx1ZXMgPVxuICAnd2Vi0YbQstC10YLQsCB3aW5kb3dz0YbQstC10YLQsCB3aW5kb3dz0YjRgNC40YTRgtGLINCx0LjQsdC70LjQvtGC0LXQutCw0LrQsNGA0YLQuNC90L7QuiDRgNCw0LzQutC40YHRgtC40LvRjyDRgdC40LzQstC+0LvRiyDRhtCy0LXRgtCw0YHRgtC40LvRjyDRiNGA0LjRhNGC0YvRgdGC0LjQu9GPICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC40L3RgtC10YDRhNC10LnRgdC90YvQtSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19pbnRlcmZhY2UgPVxuICAn0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7QtdGB0L7RhdGA0LDQvdC10L3QuNC10LTQsNC90L3Ri9GF0YTQvtGA0LzRi9Cy0L3QsNGB0YLRgNC+0LnQutCw0YUg0LDQstGC0L7QvdGD0LzQtdGA0LDRhtC40Y/QstGE0L7RgNC80LUg0LDQstGC0L7RgNCw0LfQtNCy0LjQttC10L3QuNC10YHQtdGA0LjQuSAnICtcbiAgJ9Cw0L3QuNC80LDRhtC40Y/QtNC40LDQs9GA0LDQvNC80Ysg0LLQsNGA0LjQsNC90YLQstGL0YDQsNCy0L3QuNCy0LDQvdC40Y/RjdC70LXQvNC10L3RgtC+0LLQuNC30LDQs9C+0LvQvtCy0LrQvtCyINCy0LDRgNC40LDQvdGC0YPQv9GA0LDQstC70LXQvdC40Y/QstGL0YHQvtGC0L7QudGC0LDQsdC70LjRhtGLICcgK1xuICAn0LLQtdGA0YLQuNC60LDQu9GM0L3QsNGP0L/RgNC+0LrRgNGD0YLQutCw0YTQvtGA0LzRiyDQstC10YDRgtC40LrQsNC70YzQvdC+0LXQv9C+0LvQvtC20LXQvdC40LUg0LLQtdGA0YLQuNC60LDQu9GM0L3QvtC10L/QvtC70L7QttC10L3QuNC10Y3Qu9C10LzQtdC90YLQsCDQstC40LTQs9GA0YPQv9C/0YvRhNC+0YDQvNGLICcgK1xuICAn0LLQuNC00LTQtdC60L7RgNCw0YbQuNC40YTQvtGA0LzRiyDQstC40LTQtNC+0L/QvtC70L3QtdC90LjRj9GN0LvQtdC80LXQvdGC0LDRhNC+0YDQvNGLINCy0LjQtNC40LfQvNC10L3QtdC90LjRj9C00LDQvdC90YvRhSDQstC40LTQutC90L7Qv9C60LjRhNC+0YDQvNGLINCy0LjQtNC/0LXRgNC10LrQu9GO0YfQsNGC0LXQu9GPICcgK1xuICAn0LLQuNC00L/QvtC00L/QuNGB0LXQudC60LTQuNCw0LPRgNCw0LzQvNC1INCy0LjQtNC/0L7Qu9GP0YTQvtGA0LzRiyDQstC40LTRhNC70LDQttC60LAg0LLQu9C40Y/QvdC40LXRgNCw0LfQvNC10YDQsNC90LDQv9GD0LfRi9GA0LXQutC00LjQsNCz0YDQsNC80LzRiyDQs9C+0YDQuNC30L7QvdGC0LDQu9GM0L3QvtC10L/QvtC70L7QttC10L3QuNC1ICcgK1xuICAn0LPQvtGA0LjQt9C+0L3RgtCw0LvRjNC90L7QtdC/0L7Qu9C+0LbQtdC90LjQtdGN0LvQtdC80LXQvdGC0LAg0LPRgNGD0L/Qv9C40YDQvtCy0LrQsNC60L7Qu9C+0L3QvtC6INCz0YDRg9C/0L/QuNGA0L7QstC60LDQv9C+0LTRh9C40L3QtdC90L3Ri9GF0Y3Qu9C10LzQtdC90YLQvtCy0YTQvtGA0LzRiyAnICtcbiAgJ9Cz0YDRg9C/0L/Ri9C40Y3Qu9C10LzQtdC90YLRiyDQtNC10LnRgdGC0LLQuNC10L/QtdGA0LXRgtCw0YHQutC40LLQsNC90LjRjyDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C50YDQtdC20LjQvNC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LTQvtC/0YPRgdGC0LjQvNGL0LXQtNC10LnRgdGC0LLQuNGP0L/QtdGA0LXRgtCw0YHQutC40LLQsNC90LjRjyAnICtcbiAgJ9C40L3RgtC10YDQstCw0LvQvNC10LbQtNGD0Y3Qu9C10LzQtdC90YLQsNC80LjRhNC+0YDQvNGLINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LLRi9Cy0L7QtNCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L/QvtC70L7RgdGL0L/RgNC+0LrRgNGD0YLQutC4ICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfRg9C10LzQvtC10LfQvdCw0YfQtdC90LjQtdGC0L7Rh9C60LjQsdC40YDQttC10LLQvtC50LTQuNCw0LPRgNCw0LzQvNGLINC40YHRgtC+0YDQuNGP0LLRi9Cx0L7RgNCw0L/RgNC40LLQstC+0LTQtSDQuNGB0YLQvtGH0L3QuNC60LfQvdCw0YfQtdC90LjQudC+0YHQuNGC0L7Rh9C10LrQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfQuNGB0YLQvtGH0L3QuNC60LfQvdCw0YfQtdC90LjRj9GA0LDQt9C80LXRgNCw0L/Rg9C30YvRgNGM0LrQsNC00LjQsNCz0YDQsNC80LzRiyDQutCw0YLQtdCz0L7RgNC40Y/Qs9GA0YPQv9C/0YvQutC+0LzQsNC90LQg0LzQsNC60YHQuNC80YPQvNGB0LXRgNC40Lkg0L3QsNGH0LDQu9GM0L3QvtC10L7RgtC+0LHRgNCw0LbQtdC90LjQtdC00LXRgNC10LLQsCAnICtcbiAgJ9C90LDRh9Cw0LvRjNC90L7QtdC+0YLQvtCx0YDQsNC20LXQvdC40LXRgdC/0LjRgdC60LAg0L7QsdC90L7QstC70LXQvdC40LXRgtC10LrRgdGC0LDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC+0YDQuNC10L3RgtCw0YbQuNGP0LTQtdC90LTRgNC+0LPRgNCw0LzQvNGLINC+0YDQuNC10L3RgtCw0YbQuNGP0LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0L7RgNC40LXQvdGC0LDRhtC40Y/QvNC10YLQvtC60LTQuNCw0LPRgNCw0LzQvNGLINC+0YDQuNC10L3RgtCw0YbQuNGP0LzQtdGC0L7QutGB0LLQvtC00L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLINC+0YDQuNC10L3RgtCw0YbQuNGP0Y3Qu9C10LzQtdC90YLQsNGE0L7RgNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdCy0LTQuNCw0LPRgNCw0LzQvNC1ICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdCy0LvQtdCz0LXQvdC00LXQtNC40LDQs9GA0LDQvNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdCz0YDRg9C/0L/Ri9C60L3QvtC/0L7QuiDQvtGC0L7QsdGA0LDQttC10L3QuNC10LfQsNCz0L7Qu9C+0LLQutCw0YjQutCw0LvRi9C00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQt9C90LDRh9C10L3QuNC50YHQstC+0LTQvdC+0LnQtNC40LDQs9GA0LDQvNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC30L3QsNGH0LXQvdC40Y/QuNC30LzQtdGA0LjRgtC10LvRjNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQuNC90YLQtdGA0LLQsNC70LDQtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwINC+0YLQvtCx0YDQsNC20LXQvdC40LXQutC90L7Qv9C60Lgg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC60L3QvtC/0LrQuNCy0YvQsdC+0YDQsCDQvtGC0L7QsdGA0LDQttC10L3QuNC10L7QsdGB0YPQttC00LXQvdC40LnRhNC+0YDQvNGLICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC+0LHRi9GH0L3QvtC50LPRgNGD0L/Qv9GLINC+0YLQvtCx0YDQsNC20LXQvdC40LXQvtGC0YDQuNGG0LDRgtC10LvRjNC90YvRhdC30L3QsNGH0LXQvdC40LnQv9GD0LfRi9GA0YzQutC+0LLQvtC50LTQuNCw0LPRgNCw0LzQvNGLINC+0YLQvtCx0YDQsNC20LXQvdC40LXQv9Cw0L3QtdC70LjQv9C+0LjRgdC60LAgJyArXG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10L/QvtC00YHQutCw0LfQutC4INC+0YLQvtCx0YDQsNC20LXQvdC40LXQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNGP0L/RgNC40YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjQuCDQvtGC0L7QsdGA0LDQttC10L3QuNC10YDQsNC30LzQtdGC0LrQuNC/0L7Qu9C+0YHRi9GA0LXQs9GD0LvQuNGA0L7QstCw0L3QuNGPICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGB0YLRgNCw0L3QuNGG0YTQvtGA0LzRiyDQvtGC0L7QsdGA0LDQttC10L3QuNC10YLQsNCx0LvQuNGG0Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGC0LXQutGB0YLQsNC30L3QsNGH0LXQvdC40Y/QtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGD0L/RgNCw0LLQu9C10L3QuNGP0L7QsdGL0YfQvdC+0LnQs9GA0YPQv9C/0Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGE0LjQs9GD0YDRi9C60L3QvtC/0LrQuCDQv9Cw0LvQuNGC0YDQsNGG0LLQtdGC0L7QstC00LjQsNCz0YDQsNC80LzRiyDQv9C+0LLQtdC00LXQvdC40LXQvtCx0YvRh9C90L7QudCz0YDRg9C/0L/RiyAnICtcbiAgJ9C/0L7QtNC00LXRgNC20LrQsNC80LDRgdGI0YLQsNCx0LDQtNC10L3QtNGA0L7Qs9GA0LDQvNC80Ysg0L/QvtC00LTQtdGA0LbQutCw0LzQsNGB0YjRgtCw0LHQsNC00LjQsNCz0YDQsNC80LzRi9Cz0LDQvdGC0LAg0L/QvtC00LTQtdGA0LbQutCw0LzQsNGB0YjRgtCw0LHQsNGB0LLQvtC00L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0L/QvtC40YHQutCy0YLQsNCx0LvQuNGG0LXQv9GA0LjQstCy0L7QtNC1INC/0L7Qu9C+0LbQtdC90LjQtdC30LDQs9C+0LvQvtCy0LrQsNGN0LvQtdC80LXQvdGC0LDRhNC+0YDQvNGLINC/0L7Qu9C+0LbQtdC90LjQtdC60LDRgNGC0LjQvdC60LjQutC90L7Qv9C60LjRhNC+0YDQvNGLICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10LrQsNGA0YLQuNC90LrQuNGN0LvQtdC80LXQvdGC0LDQs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDQv9C+0LvQvtC20LXQvdC40LXQutC+0LzQsNC90LTQvdC+0LnQv9Cw0L3QtdC70LjRhNC+0YDQvNGLINC/0L7Qu9C+0LbQtdC90LjQtdC60L7QvNCw0L3QtNC90L7QudC/0LDQvdC10LvQuNGN0LvQtdC80LXQvdGC0LDRhNC+0YDQvNGLICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10L7Qv9C+0YDQvdC+0LnRgtC+0YfQutC40L7RgtGA0LjRgdC+0LLQutC4INC/0L7Qu9C+0LbQtdC90LjQtdC/0L7QtNC/0LjRgdC10LnQutC00LjQsNCz0YDQsNC80LzQtSDQv9C+0LvQvtC20LXQvdC40LXQv9C+0LTQv9C40YHQtdC50YjQutCw0LvRi9C30L3QsNGH0LXQvdC40LnQuNC30LzQtdGA0LjRgtC10LvRjNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C/0L7Qu9C+0LbQtdC90LjQtdGB0L7RgdGC0L7Rj9C90LjRj9C/0YDQvtGB0LzQvtGC0YDQsCDQv9C+0LvQvtC20LXQvdC40LXRgdGC0YDQvtC60LjQv9C+0LjRgdC60LAg0L/QvtC70L7QttC10L3QuNC10YLQtdC60YHRgtCw0YHQvtC10LTQuNC90LjRgtC10LvRjNC90L7QudC70LjQvdC40Lgg0L/QvtC70L7QttC10L3QuNC10YPQv9GA0LDQstC70LXQvdC40Y/Qv9C+0LjRgdC60L7QvCAnICtcbiAgJ9C/0L7Qu9C+0LbQtdC90LjQtdGI0LrQsNC70YvQstGA0LXQvNC10L3QuCDQv9C+0YDRj9C00L7QutC+0YLQvtCx0YDQsNC20LXQvdC40Y/RgtC+0YfQtdC60LPQvtGA0LjQt9C+0L3RgtCw0LvRjNC90L7QudCz0LjRgdGC0L7Qs9GA0LDQvNC80Ysg0L/QvtGA0Y/QtNC+0LrRgdC10YDQuNC50LLQu9C10LPQtdC90LTQtdC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GA0LDQt9C80LXRgNC60LDRgNGC0LjQvdC60Lgg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10LfQsNCz0L7Qu9C+0LLQutCw0YjQutCw0LvRi9C00LjQsNCz0YDQsNC80LzRiyDRgNCw0YHRgtGP0LPQuNCy0LDQvdC40LXQv9C+0LLQtdGA0YLQuNC60LDQu9C40LTQuNCw0LPRgNCw0LzQvNGL0LPQsNC90YLQsCAnICtcbiAgJ9GA0LXQttC40LzQsNCy0YLQvtC+0YLQvtCx0YDQsNC20LXQvdC40Y/RgdC+0YHRgtC+0Y/QvdC40Y8g0YDQtdC20LjQvNCy0LLQvtC00LDRgdGC0YDQvtC60YLQsNCx0LvQuNGG0Ysg0YDQtdC20LjQvNCy0YvQsdC+0YDQsNC90LXQt9Cw0L/QvtC70L3QtdC90L3QvtCz0L4g0YDQtdC20LjQvNCy0YvQtNC10LvQtdC90LjRj9C00LDRgtGLICcgK1xuICAn0YDQtdC20LjQvNCy0YvQtNC10LvQtdC90LjRj9GB0YLRgNC+0LrQuNGC0LDQsdC70LjRhtGLINGA0LXQttC40LzQstGL0LTQtdC70LXQvdC40Y/RgtCw0LHQu9C40YbRiyDRgNC10LbQuNC80LjQt9C80LXQvdC10L3QuNGP0YDQsNC30LzQtdGA0LAg0YDQtdC20LjQvNC40LfQvNC10L3QtdC90LjRj9GB0LLRj9C30LDQvdC90L7Qs9C+0LfQvdCw0YfQtdC90LjRjyAnICtcbiAgJ9GA0LXQttC40LzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C00LjQsNC70L7Qs9Cw0L/QtdGH0LDRgtC4INGA0LXQttC40LzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C/0LDRgNCw0LzQtdGC0YDQsNC60L7QvNCw0L3QtNGLINGA0LXQttC40LzQvNCw0YHRiNGC0LDQsdC40YDQvtCy0LDQvdC40Y/Qv9GA0L7RgdC80L7RgtGA0LAgJyArXG4gICfRgNC10LbQuNC80L7RgdC90L7QstC90L7Qs9C+0L7QutC90LDQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0YDQtdC20LjQvNC+0YLQutGA0YvRgtC40Y/QvtC60L3QsNGE0L7RgNC80Ysg0YDQtdC20LjQvNC+0YLQvtCx0YDQsNC20LXQvdC40Y/QstGL0LTQtdC70LXQvdC40Y8gJyArXG4gICfRgNC10LbQuNC80L7RgtC+0LHRgNCw0LbQtdC90LjRj9Cz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGA0LXQttC40LzQvtGC0L7QsdGA0LDQttC10L3QuNGP0LfQvdCw0YfQtdC90LjQudGB0LXRgNC40Lgg0YDQtdC20LjQvNC+0YLRgNC40YHQvtCy0LrQuNGB0LXRgtC60LjQs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyAnICtcbiAgJ9GA0LXQttC40LzQv9C+0LvRg9C/0YDQvtC30YDQsNGH0L3QvtGB0YLQuNC00LjQsNCz0YDQsNC80LzRiyDRgNC10LbQuNC80L/RgNC+0LHQtdC70L7QstC00LjQsNCz0YDQsNC80LzRiyDRgNC10LbQuNC80YDQsNC30LzQtdGJ0LXQvdC40Y/QvdCw0YHRgtGA0LDQvdC40YbQtSDRgNC10LbQuNC80YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRj9C60L7Qu9C+0L3QutC4ICcgK1xuICAn0YDQtdC20LjQvNGB0LPQu9Cw0LbQuNCy0LDQvdC40Y/QtNC40LDQs9GA0LDQvNC80Ysg0YDQtdC20LjQvNGB0LPQu9Cw0LbQuNCy0LDQvdC40Y/QuNC90LTQuNC60LDRgtC+0YDQsCDRgNC10LbQuNC80YHQv9C40YHQutCw0LfQsNC00LDRhyDRgdC60LLQvtC30L3QvtC10LLRi9GA0LDQstC90LjQstCw0L3QuNC1ICcgK1xuICAn0YHQvtGF0YDQsNC90LXQvdC40LXQtNCw0L3QvdGL0YXRhNC+0YDQvNGL0LLQvdCw0YHRgtGA0L7QudC60LDRhSDRgdC/0L7RgdC+0LHQt9Cw0L/QvtC70L3QtdC90LjRj9GC0LXQutGB0YLQsNC30LDQs9C+0LvQvtCy0LrQsNGI0LrQsNC70YvQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfRgdC/0L7RgdC+0LHQvtC/0YDQtdC00LXQu9C10L3QuNGP0L7Qs9GA0LDQvdC40YfQuNCy0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj9C00LjQsNCz0YDQsNC80LzRiyDRgdGC0LDQvdC00LDRgNGC0L3QsNGP0LPRgNGD0L/Qv9Cw0LrQvtC80LDQvdC0INGB0YLQsNC90LTQsNGA0YLQvdC+0LXQvtGE0L7RgNC80LvQtdC90LjQtSAnICtcbiAgJ9GB0YLQsNGC0YPRgdC+0L/QvtCy0LXRidC10L3QuNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGB0YLQuNC70YzRgdGC0YDQtdC70LrQuCDRgtC40L/QsNC/0L/RgNC+0LrRgdC40LzQsNGG0LjQuNC70LjQvdC40LjRgtGA0LXQvdC00LDQtNC40LDQs9GA0LDQvNC80Ysg0YLQuNC/0LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YLQuNC/0LXQtNC40L3QuNGG0YvRiNC60LDQu9GL0LLRgNC10LzQtdC90Lgg0YLQuNC/0LjQvNC/0L7RgNGC0LDRgdC10YDQuNC50YHQu9C+0Y/Qs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/Qu9C40L3QuNC40LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0LvQuNC90LjQuNC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GC0LjQv9C80LDRgNC60LXRgNCw0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0LzQsNGA0LrQtdGA0LDQtNC40LDQs9GA0LDQvNC80Ysg0YLQuNC/0L7QsdC70LDRgdGC0LjQvtGE0L7RgNC80LvQtdC90LjRjyAnICtcbiAgJ9GC0LjQv9C+0YDQs9Cw0L3QuNC30LDRhtC40LjQuNGB0YLQvtGH0L3QuNC60LDQtNCw0L3QvdGL0YXQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0YHQtdGA0LjQuNGB0LvQvtGP0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80YsgJyArXG4gICfRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0YLQvtGH0LXRh9C90L7Qs9C+0L7QsdGK0LXQutGC0LDQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0YjQutCw0LvRi9GN0LvQtdC80LXQvdGC0LDQu9C10LPQtdC90LTRi9Cz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLICcgK1xuICAn0YLQuNC/0L/QvtC40YHQutCw0L7QsdGK0LXQutGC0L7QstCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGC0LjQv9C/0YDQvtC10LrRhtC40LjQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9C40LfQvNC10YDQtdC90LjQuSAnICtcbiAgJ9GC0LjQv9GA0LDQt9C80LXRidC10L3QuNGP0YDQtdC60LLQuNC30LjRgtC+0LLQuNC30LzQtdGA0LXQvdC40Lkg0YLQuNC/0YDQsNC80LrQuNGN0LvQtdC80LXQvdGC0LDRg9C/0YDQsNCy0LvQtdC90LjRjyDRgtC40L/RgdCy0L7QtNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GC0LjQv9GB0LLRj9C30LjQtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwINGC0LjQv9GB0L7QtdC00LjQvdC10L3QuNGP0LfQvdCw0YfQtdC90LjQudC/0L7RgdC10YDQuNGP0LzQtNC40LDQs9GA0LDQvNC80Ysg0YLQuNC/0YHQvtC10LTQuNC90LXQvdC40Y/RgtC+0YfQtdC60LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YLQuNC/0YHQvtC10LTQuNC90LjRgtC10LvRjNC90L7QudC70LjQvdC40Lgg0YLQuNC/0YHRgtC+0YDQvtC90YvRjdC70LXQvNC10L3RgtCw0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0YTQvtGA0LzRi9C+0YLRh9C10YLQsCDRgtC40L/RiNC60LDQu9GL0YDQsNC00LDRgNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GE0LDQutGC0L7RgNC70LjQvdC40LjRgtGA0LXQvdC00LDQtNC40LDQs9GA0LDQvNC80Ysg0YTQuNCz0YPRgNCw0LrQvdC+0L/QutC4INGE0LjQs9GD0YDRi9Cz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGE0LjQutGB0LDRhtC40Y/QstGC0LDQsdC70LjRhtC1INGE0L7RgNC80LDRgtC00L3Rj9GI0LrQsNC70YvQstGA0LXQvNC10L3QuCAnICtcbiAgJ9GE0L7RgNC80LDRgtC60LDRgNGC0LjQvdC60Lgg0YjQuNGA0LjQvdCw0L/QvtC00YfQuNC90LXQvdC90YvRhdGN0LvQtdC80LXQvdGC0L7QstGE0L7RgNC80YsgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YHQstC+0LnRgdGC0LLQsCDQv9GA0LjQutC70LDQtNC90YvRhSDQvtCx0YrQtdC60YLQvtCyID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX29iamVjdHNfcHJvcGVydGllcyA9XG4gICfQstC40LTQtNCy0LjQttC10L3QuNGP0LHRg9GF0LPQsNC70YLQtdGA0LjQuCDQstC40LTQtNCy0LjQttC10L3QuNGP0L3QsNC60L7Qv9C70LXQvdC40Y8g0LLQuNC00L/QtdGA0LjQvtC00LDRgNC10LPQuNGB0YLRgNCw0YDQsNGB0YfQtdGC0LAg0LLQuNC00YHRh9C10YLQsCDQstC40LTRgtC+0YfQutC40LzQsNGA0YjRgNGD0YLQsNCx0LjQt9C90LXRgdC/0YDQvtGG0LXRgdGB0LAgJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCw0LPRgNC10LPQsNGC0LDRgNC10LPQuNGB0YLRgNCw0L3QsNC60L7Qv9C70LXQvdC40Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQs9GA0YPQv9C/0LjRjdC70LXQvNC10L3RgtC+0LIg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNC10LbQuNC80LDQv9GA0L7QstC10LTQtdC90LjRjyAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHRgNC10LfQsCDQv9C10YDQuNC+0LTQuNGH0L3QvtGB0YLRjNCw0LPRgNC10LPQsNGC0LDRgNC10LPQuNGB0YLRgNCw0L3QsNC60L7Qv9C70LXQvdC40Y8g0YDQtdC20LjQvNCw0LLRgtC+0LLRgNC10LzRjyDRgNC10LbQuNC80LfQsNC/0LjRgdC40LTQvtC60YPQvNC10L3RgtCwINGA0LXQttC40LzQv9GA0L7QstC10LTQtdC90LjRj9C00L7QutGD0LzQtdC90YLQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C70LDQvdGLINC+0LHQvNC10L3QsCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19leGNoYW5nZV9wbGFucyA9XG4gICfQsNCy0YLQvtGA0LXQs9C40YHRgtGA0LDRhtC40Y/QuNC30LzQtdC90LXQvdC40Lkg0LTQvtC/0YPRgdGC0LjQvNGL0LnQvdC+0LzQtdGA0YHQvtC+0LHRidC10L3QuNGPINC+0YLQv9GA0LDQstC60LDRjdC70LXQvNC10L3RgtCw0LTQsNC90L3Ri9GFINC/0L7Qu9GD0YfQtdC90LjQtdGN0LvQtdC80LXQvdGC0LDQtNCw0L3QvdGL0YUgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YLQsNCx0LvQuNGH0L3Ri9C5INC00L7QutGD0LzQtdC90YIgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfdGFidWxhcl9kb2N1bWVudCA9XG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGA0LDRgdGI0LjRhNGA0L7QstC60LjRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDQvtGA0LjQtdC90YLQsNGG0LjRj9GB0YLRgNCw0L3QuNGG0Ysg0L/QvtC70L7QttC10L3QuNC10LjRgtC+0LPQvtCy0LrQvtC70L7QvdC+0LrRgdCy0L7QtNC90L7QudGC0LDQsdC70LjRhtGLICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10LjRgtC+0LPQvtCy0YHRgtGA0L7QutGB0LLQvtC00L3QvtC50YLQsNCx0LvQuNGG0Ysg0L/QvtC70L7QttC10L3QuNC10YLQtdC60YHRgtCw0L7RgtC90L7RgdC40YLQtdC70YzQvdC+0LrQsNGA0YLQuNC90LrQuCDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQt9Cw0LPQvtC70L7QstC60LDQs9GA0YPQv9C/0LjRgNC+0LLQutC40YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgdC/0L7RgdC+0LHRh9GC0LXQvdC40Y/Qt9C90LDRh9C10L3QuNC50YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0LTQstGD0YHRgtC+0YDQvtC90L3QtdC50L/QtdGH0LDRgtC4INGC0LjQv9C30LDQv9C+0LvQvdC10L3QuNGP0L7QsdC70LDRgdGC0LjRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCAnICtcbiAgJ9GC0LjQv9C60YPRgNGB0L7RgNC+0LLRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/Qu9C40L3QuNC40YDQuNGB0YPQvdC60LDRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/Qu9C40L3QuNC40Y/Rh9C10LnQutC40YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgtC40L/QvdCw0L/RgNCw0LLQu9C10L3QuNGP0L/QtdGA0LXRhdC+0LTQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9C+0YLQvtCx0YDQsNC20LXQvdC40Y/QstGL0LTQtdC70LXQvdC40Y/RgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0LvQuNC90LjQudGB0LLQvtC00L3QvtC50YLQsNCx0LvQuNGG0YsgJyArXG4gICfRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9GC0LXQutGB0YLQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9GA0LjRgdGD0L3QutCw0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0YHQvNC10YnQtdC90LjRj9GC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwICcgK1xuICAn0YLQuNC/0YPQt9C+0YDQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9GE0LDQudC70LDRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC+0YfQvdC+0YHRgtGM0L/QtdGH0LDRgtC4INGH0LXRgNC10LTQvtCy0LDQvdC40LXRgNCw0YHQv9C+0LvQvtC20LXQvdC40Y/RgdGC0YDQsNC90LjRhiAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C70LDQvdC40YDQvtCy0YnQuNC6ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3NoZWR1bGVyID1cbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQstGA0LXQvNC10L3QuNGN0LvQtdC80LXQvdGC0L7QstC/0LvQsNC90LjRgNC+0LLRidC40LrQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QvdGL0Lkg0LTQvtC60YPQvNC10L3RgiA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19mb3JtYXR0ZWRfZG9jdW1lbnQgPVxuICAn0YLQuNC/0YTQsNC50LvQsNGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC30LDQv9GA0L7RgSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19xdWVyeSA9XG4gICfQvtCx0YXQvtC00YDQtdC30YPQu9GM0YLQsNGC0LDQt9Cw0L/RgNC+0YHQsCDRgtC40L/Qt9Cw0L/QuNGB0LjQt9Cw0L/RgNC+0YHQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C+0YHRgtGA0L7QuNGC0LXQu9GMINC+0YLRh9C10YLQsCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19yZXBvcnRfYnVpbGRlciA9XG4gICfQstC40LTQt9Cw0L/QvtC70L3QtdC90LjRj9GA0LDRgdGI0LjRhNGA0L7QstC60LjQv9C+0YHRgtGA0L7QuNGC0LXQu9GP0L7RgtGH0LXRgtCwINGC0LjQv9C00L7QsdCw0LLQu9C10L3QuNGP0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lkg0YLQuNC/0LjQt9C80LXRgNC10L3QuNGP0L/QvtGB0YLRgNC+0LjRgtC10LvRj9C+0YLRh9C10YLQsCDRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9C40YLQvtCz0L7QsiAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgNCw0LHQvtGC0LAg0YEg0YTQsNC50LvQsNC80LggPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZmlsZXMgPVxuICAn0LTQvtGB0YLRg9C/0LrRhNCw0LnQu9GDINGA0LXQttC40LzQtNC40LDQu9C+0LPQsNCy0YvQsdC+0YDQsNGE0LDQudC70LAg0YDQtdC20LjQvNC+0YLQutGA0YvRgtC40Y/RhNCw0LnQu9CwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC/0L7RgdGC0YDQvtC40YLQtdC70Ywg0LfQsNC/0YDQvtGB0LAgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfcXVlcnlfYnVpbGRlciA9XG4gICfRgtC40L/QuNC30LzQtdGA0LXQvdC40Y/Qv9C+0YHRgtGA0L7QuNGC0LXQu9GP0LfQsNC/0YDQvtGB0LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0LDQvdCw0LvQuNC3INC00LDQvdC90YvRhSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19kYXRhX2FuYWx5c2lzID1cbiAgJ9Cy0LjQtNC00LDQvdC90YvRhdCw0L3QsNC70LjQt9CwINC80LXRgtC+0LTQutC70LDRgdGC0LXRgNC40LfQsNGG0LjQuCDRgtC40L/QtdC00LjQvdC40YbRi9C40L3RgtC10YDQstCw0LvQsNCy0YDQtdC80LXQvdC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0LfQsNC/0L7Qu9C90LXQvdC40Y/RgtCw0LHQu9C40YbRi9GA0LXQt9GD0LvRjNGC0LDRgtCw0LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUgJyArXG4gICfRgtC40L/QuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9GH0LjRgdC70L7QstGL0YXQt9C90LDRh9C10L3QuNC50LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0LjRgdGC0L7Rh9C90LjQutCw0LTQsNC90L3Ri9GF0L/QvtC40YHQutCw0LDRgdGB0L7RhtC40LDRhtC40Lkg0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC00LXRgNC10LLQvtGA0LXRiNC10L3QuNC5ICcgK1xuICAn0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC60LvQsNGB0YLQtdGA0LjQt9Cw0YbQuNGPINGC0LjQv9C60L7Qu9C+0L3QutC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YXQvtCx0YnQsNGP0YHRgtCw0YLQuNGB0YLQuNC60LAg0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC/0L7QuNGB0LrQsNGB0YHQvtGG0LjQsNGG0LjQuSAnICtcbiAgJ9GC0LjQv9C60L7Qu9C+0L3QutC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YXQv9C+0LjRgdC60L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC10Lkg0YLQuNC/0LrQvtC70L7QvdC60LjQvNC+0LTQtdC70LjQv9GA0L7Qs9C90L7Qt9CwINGC0LjQv9C80LXRgNGL0YDQsNGB0YHRgtC+0Y/QvdC40Y/QsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9C+0YLRgdC10YfQtdC90LjRj9C/0YDQsNCy0LjQu9Cw0YHRgdC+0YbQuNCw0YbQuNC4INGC0LjQv9C/0L7Qu9GP0LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0YHRgtCw0L3QtNCw0YDRgtC40LfQsNGG0LjQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFINGC0LjQv9GD0L/QvtGA0Y/QtNC+0YfQuNCy0LDQvdC40Y/Qv9GA0LDQstC40LvQsNGB0YHQvtGG0LjQsNGG0LjQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFICcgK1xuICAn0YLQuNC/0YPQv9C+0YDRj9C00L7Rh9C40LLQsNC90LjRj9GI0LDQsdC70L7QvdC+0LLQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LXQudCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFINGC0LjQv9GD0L/RgNC+0YnQtdC90LjRj9C00LXRgNC10LLQsNGA0LXRiNC10L3QuNC5ICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtIHhtbCwganNvbiwgeHMsIGRvbSwgeGR0bywgd2ViLdGB0LXRgNCy0LjRgdGLID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3htbF9qc29uX3hzX2RvbV94ZHRvX3dzID1cbiAgJ3dz0L3QsNC/0YDQsNCy0LvQtdC90LjQtdC/0LDRgNCw0LzQtdGC0YDQsCDQstCw0YDQuNCw0L3RgnhwYXRoeHMg0LLQsNGA0LjQsNC90YLQt9Cw0L/QuNGB0LjQtNCw0YLRi2pzb24g0LLQsNGA0LjQsNC90YLQv9GA0L7RgdGC0L7Qs9C+0YLQuNC/0LB4cyDQstC40LTQs9GA0YPQv9C/0YvQvNC+0LTQtdC70Lh4cyDQstC40LTRhNCw0YHQtdGC0LB4ZHRvICcgK1xuICAn0LTQtdC50YHRgtCy0LjQtdC/0L7RgdGC0YDQvtC40YLQtdC70Y9kb20g0LfQsNCy0LXRgNGI0LXQvdC90L7RgdGC0YzQv9GA0L7RgdGC0L7Qs9C+0YLQuNC/0LB4cyDQt9Cw0LLQtdGA0YjQtdC90L3QvtGB0YLRjNGB0L7RgdGC0LDQstC90L7Qs9C+0YLQuNC/0LB4cyDQt9Cw0LLQtdGA0YjQtdC90L3QvtGB0YLRjNGB0YXQtdC80Yt4cyDQt9Cw0L/RgNC10YnQtdC90L3Ri9C10L/QvtC00YHRgtCw0L3QvtCy0LrQuHhzICcgK1xuICAn0LjRgdC60LvRjtGH0LXQvdC40Y/Qs9GA0YPQv9C/0L/QvtC00YHRgtCw0L3QvtCy0LrQuHhzINC60LDRgtC10LPQvtGA0LjRj9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0LDRgtGA0LjQsdGD0YLQsHhzINC60LDRgtC10LPQvtGA0LjRj9C+0LPRgNCw0L3QuNGH0LXQvdC40Y/QuNC00LXQvdGC0LjRh9C90L7RgdGC0Lh4cyDQutCw0YLQtdCz0L7RgNC40Y/QvtCz0YDQsNC90LjRh9C10L3QuNGP0L/RgNC+0YHRgtGA0LDQvdGB0YLQstC40LzQtdC9eHMgJyArXG4gICfQvNC10YLQvtC00L3QsNGB0LvQtdC00L7QstCw0L3QuNGPeHMg0LzQvtC00LXQu9GM0YHQvtC00LXRgNC20LjQvNC+0LPQvnhzINC90LDQt9C90LDRh9C10L3QuNC10YLQuNC/0LB4bWwg0L3QtdC00L7Qv9GD0YHRgtC40LzRi9C10L/QvtC00YHRgtCw0L3QvtCy0LrQuHhzINC+0LHRgNCw0LHQvtGC0LrQsNC/0YDQvtCx0LXQu9GM0L3Ri9GF0YHQuNC80LLQvtC70L7QsnhzINC+0LHRgNCw0LHQvtGC0LrQsNGB0L7QtNC10YDQttC40LzQvtCz0L54cyAnICtcbiAgJ9C+0LPRgNCw0L3QuNGH0LXQvdC40LXQt9C90LDRh9C10L3QuNGPeHMg0L/QsNGA0LDQvNC10YLRgNGL0L7RgtCx0L7RgNCw0YPQt9C70L7QsmRvbSDQv9C10YDQtdC90L7RgdGB0YLRgNC+0Lpqc29uINC/0L7Qt9C40YbQuNGP0LLQtNC+0LrRg9C80LXQvdGC0LVkb20g0L/RgNC+0LHQtdC70YzQvdGL0LXRgdC40LzQstC+0LvRi3htbCDRgtC40L/QsNGC0YDQuNCx0YPRgtCweG1sINGC0LjQv9C30L3QsNGH0LXQvdC40Y9qc29uICcgK1xuICAn0YLQuNC/0LrQsNC90L7QvdC40YfQtdGB0LrQvtCz0L54bWwg0YLQuNC/0LrQvtC80L/QvtC90LXQvdGC0Yt4cyDRgtC40L/Qv9GA0L7QstC10YDQutC4eG1sINGC0LjQv9GA0LXQt9GD0LvRjNGC0LDRgtCwZG9teHBhdGgg0YLQuNC/0YPQt9C70LBkb20g0YLQuNC/0YPQt9C70LB4bWwg0YTQvtGA0LzQsHhtbCDRhNC+0YDQvNCw0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y94cyAnICtcbiAgJ9GE0L7RgNC80LDRgtC00LDRgtGLanNvbiDRjdC60YDQsNC90LjRgNC+0LLQsNC90LjQtdGB0LjQvNCy0L7Qu9C+0LJqc29uICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINGB0LjRgdGC0LXQvNCwINC60L7QvNC/0L7QvdC+0LLQutC4INC00LDQvdC90YvRhSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19kYXRhX2NvbXBvc2l0aW9uX3N5c3RlbSA9XG4gICfQstC40LTRgdGA0LDQstC90LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQtNC10LnRgdGC0LLQuNC10L7QsdGA0LDQsdC+0YLQutC40YDQsNGB0YjQuNGE0YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC90LDQv9GA0LDQstC70LXQvdC40LXRgdC+0YDRgtC40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YDQsNGB0L/QvtC70L7QttC10L3QuNC10LLQu9C+0LbQtdC90L3Ri9GF0Y3Qu9C10LzQtdC90YLQvtCy0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQuNGC0L7Qs9C+0LLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQs9GA0YPQv9C/0LjRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQv9C+0LvQtdC50LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdC/0L7Qu9GP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10YDQtdC60LLQuNC30LjRgtC+0LLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdGA0LXRgdGD0YDRgdC+0LLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QsdGD0YXQs9Cw0LvRgtC10YDRgdC60L7Qs9C+0L7RgdGC0LDRgtC60LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QstGL0LLQvtC00LDRgtC10LrRgdGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9Cz0YDRg9C/0L/QuNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/Qs9GA0YPQv9C/0YvRjdC70LXQvNC10L3RgtC+0LLQvtGC0LHQvtGA0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QtNC+0L/QvtC70L3QtdC90LjRj9C/0LXRgNC40L7QtNCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgtC40L/Qt9Cw0LPQvtC70L7QstC60LDQv9C+0LvQtdC50LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0LzQsNC60LXRgtCw0LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9C80LDQutC10YLQsNC+0LHQu9Cw0YHRgtC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0L7RgdGC0LDRgtC60LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9C/0LXRgNC40L7QtNCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0YDQsNC30LzQtdGJ0LXQvdC40Y/RgtC10LrRgdGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/RgdCy0Y/Qt9C40L3QsNCx0L7RgNC+0LLQtNCw0L3QvdGL0YXQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/RjdC70LXQvNC10L3RgtCw0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdC70LXQs9C10L3QtNGL0LTQuNCw0LPRgNCw0LzQvNGL0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0L/RgNC40LzQtdC90LXQvdC40Y/QvtGC0LHQvtGA0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNC10LbQuNC80L7RgtC+0LHRgNCw0LbQtdC90LjRj9GN0LvQtdC80LXQvdGC0LDQvdCw0YHRgtGA0L7QudC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LXQttC40LzQvtGC0L7QsdGA0LDQttC10L3QuNGP0L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGB0L7RgdGC0L7Rj9C90LjQtdGN0LvQtdC80LXQvdGC0LDQvdCw0YHRgtGA0L7QudC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgdC/0L7RgdC+0LHQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNGP0L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YDQtdC20LjQvNC60L7QvNC/0L7QvdC+0LLQutC40YDQtdC30YPQu9GM0YLQsNGC0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQv9Cw0YDQsNC80LXRgtGA0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQsNCy0YLQvtC/0L7Qt9C40YbQuNGP0YDQtdGB0YPRgNGB0L7QstC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcrXG4gICfQstCw0YDQuNCw0L3RgtC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdGA0LXRgdGD0YDRgdC+0LLQstC00LjQsNCz0YDQsNC80LzQtdC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGE0LjQutGB0LDRhtC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YPRgdC70L7QstC90L7Qs9C+0L7RhNC+0YDQvNC70LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C+0YfRgtCwID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2VtYWlsID1cbiAgJ9Cy0LDQttC90L7RgdGC0YzQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7Qs9C+0YHQvtC+0LHRidC10L3QuNGPINC+0LHRgNCw0LHQvtGC0LrQsNGC0LXQutGB0YLQsNC40L3RgtC10YDQvdC10YLQv9C+0YfRgtC+0LLQvtCz0L7RgdC+0L7QsdGJ0LXQvdC40Y8g0YHQv9C+0YHQvtCx0LrQvtC00LjRgNC+0LLQsNC90LjRj9C40L3RgtC10YDQvdC10YLQv9C+0YfRgtC+0LLQvtCz0L7QstC70L7QttC10L3QuNGPICcgK1xuICAn0YHQv9C+0YHQvtCx0LrQvtC00LjRgNC+0LLQsNC90LjRj9C90LVhc2NpadGB0LjQvNCy0L7Qu9C+0LLQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7Qs9C+0YHQvtC+0LHRidC10L3QuNGPINGC0LjQv9GC0LXQutGB0YLQsNC/0L7Rh9GC0L7QstC+0LPQvtGB0L7QvtCx0YnQtdC90LjRjyDQv9GA0L7RgtC+0LrQvtC70LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0YsgJyArXG4gICfRgdGC0LDRgtGD0YHRgNCw0LfQsdC+0YDQsNC/0L7Rh9GC0L7QstC+0LPQvtGB0L7QvtCx0YnQtdC90LjRjyAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQttGD0YDQvdCw0Lsg0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19sb2dib29rID1cbiAgJ9GA0LXQttC40LzRgtGA0LDQvdC30LDQutGG0LjQuNC30LDQv9C40YHQuNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDRgdGC0LDRgtGD0YHRgtGA0LDQvdC30LDQutGG0LjQuNC30LDQv9C40YHQuNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDRg9GA0L7QstC10L3RjNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQutGA0LjQv9GC0L7Qs9GA0LDRhNC40Y8gPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfY3J5cHRvZ3JhcGh5ID1cbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdGF0YDQsNC90LjQu9C40YnQsNGB0LXRgNGC0LjRhNC40LrQsNGC0L7QstC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDRgNC10LbQuNC80LLQutC70Y7Rh9C10L3QuNGP0YHQtdGA0YLQuNGE0LjQutCw0YLQvtCy0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC4INGA0LXQttC40LzQv9GA0L7QstC10YDQutC40YHQtdGA0YLQuNGE0LjQutCw0YLQsNC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCAnICtcbiAgJ9GC0LjQv9GF0YDQsNC90LjQu9C40YnQsNGB0LXRgNGC0LjRhNC40LrQsNGC0L7QstC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSBaSVAgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfemlwID1cbiAgJ9C60L7QtNC40YDQvtCy0LrQsNC40LzQtdC90YTQsNC50LvQvtCy0LJ6aXDRhNCw0LnQu9C1INC80LXRgtC+0LTRgdC20LDRgtC40Y96aXAg0LzQtdGC0L7QtNGI0LjRhNGA0L7QstCw0L3QuNGPemlwINGA0LXQttC40LzQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNGP0L/Rg9GC0LXQudGE0LDQudC70L7QsnppcCDRgNC10LbQuNC80L7QsdGA0LDQsdC+0YLQutC40L/QvtC00LrQsNGC0LDQu9C+0LPQvtCyemlwICcgK1xuICAn0YDQtdC20LjQvNGB0L7RhdGA0LDQvdC10L3QuNGP0L/Rg9GC0LXQuXppcCDRg9GA0L7QstC10L3RjNGB0LbQsNGC0LjRj3ppcCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSBcbiAgLy8g0JHQu9C+0LrQuNGA0L7QstC60LAg0LTQsNC90L3Ri9GFLCDQpNC+0L3QvtCy0YvQtSDQt9Cw0LTQsNC90LjRjywg0JDQstGC0L7QvNCw0YLQuNC30LjRgNC+0LLQsNC90L3QvtC1INGC0LXRgdGC0LjRgNC+0LLQsNC90LjQtSxcbiAgLy8g0JTQvtGB0YLQsNCy0LvRj9C10LzRi9C1INGD0LLQtdC00L7QvNC70LXQvdC40Y8sINCS0YHRgtGA0L7QtdC90L3Ri9C1INC/0L7QutGD0L/QutC4LCDQmNC90YLQtdGA0L3QtdGCLCDQoNCw0LHQvtGC0LAg0YEg0LTQstC+0LjRh9C90YvQvNC4INC00LDQvdC90YvQvNC4ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX290aGVyID1cbiAgJ9C30LLRg9C60L7QstC+0LXQvtC/0L7QstC10YnQtdC90LjQtSDQvdCw0L/RgNCw0LLQu9C10L3QuNC10L/QtdGA0LXRhdC+0LTQsNC60YHRgtGA0L7QutC1INC/0L7Qt9C40YbQuNGP0LLQv9C+0YLQvtC60LUg0L/QvtGA0Y/QtNC+0LrQsdCw0LnRgtC+0LIg0YDQtdC20LjQvNCx0LvQvtC60LjRgNC+0LLQutC40LTQsNC90L3Ri9GFINGA0LXQttC40LzRg9C/0YDQsNCy0LvQtdC90LjRj9Cx0LvQvtC60LjRgNC+0LLQutC+0LnQtNCw0L3QvdGL0YUgJyArXG4gICfRgdC10YDQstC40YHQstGB0YLRgNC+0LXQvdC90YvRhdC/0L7QutGD0L/QvtC6INGB0L7RgdGC0L7Rj9C90LjQtdGE0L7QvdC+0LLQvtCz0L7Qt9Cw0LTQsNC90LjRjyDRgtC40L/Qv9C+0LTQv9C40YHRh9C40LrQsNC00L7RgdGC0LDQstC70Y/QtdC80YvRhdGD0LLQtdC00L7QvNC70LXQvdC40Lkg0YPRgNC+0LLQtdC90YzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C30LDRidC40YnQtdC90L3QvtCz0L7RgdC+0LXQtNC40L3QtdC90LjRj2Z0cCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgdGF0LXQvNCwINC30LDQv9GA0L7RgdCwID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3JlcXVlc3Rfc2NoZW1hID1cbiAgJ9C90LDQv9GA0LDQstC70LXQvdC40LXQv9C+0YDRj9C00LrQsNGB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCDRgtC40L/QtNC+0L/QvtC70L3QtdC90LjRj9C/0LXRgNC40L7QtNCw0LzQuNGB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCDRgtC40L/QutC+0L3RgtGA0L7Qu9GM0L3QvtC50YLQvtGH0LrQuNGB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCDRgtC40L/QvtCx0YrQtdC00LjQvdC10L3QuNGP0YHRhdC10LzRi9C30LDQv9GA0L7RgdCwICcgK1xuICAn0YLQuNC/0L/QsNGA0LDQvNC10YLRgNCw0LTQvtGB0YLRg9C/0L3QvtC50YLQsNCx0LvQuNGG0YvRgdGF0LXQvNGL0LfQsNC/0YDQvtGB0LAg0YLQuNC/0YHQvtC10LTQuNC90LXQvdC40Y/RgdGF0LXQvNGL0LfQsNC/0YDQvtGB0LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YHQstC+0LnRgdGC0LLQsCDQvtCx0YrQtdC60YLQvtCyINC80LXRgtCw0LTQsNC90L3Ri9GFID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3Byb3BlcnRpZXNfb2ZfbWV0YWRhdGFfb2JqZWN0cyA9XG4gICdodHRw0LzQtdGC0L7QtCDQsNCy0YLQvtC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L7QsdGJ0LXQs9C+0YDQtdC60LLQuNC30LjRgtCwINCw0LLRgtC+0L/RgNC10YTQuNC60YHQvdC+0LzQtdGA0LDQt9Cw0LTQsNGH0Lgg0LLQsNGA0LjQsNC90YLQstGB0YLRgNC+0LXQvdC90L7Qs9C+0Y/Qt9GL0LrQsCDQstC40LTQuNC10YDQsNGA0YXQuNC4INCy0LjQtNGA0LXQs9C40YHRgtGA0LDQvdCw0LrQvtC/0LvQtdC90LjRjyAnICtcbiAgJ9Cy0LjQtNGC0LDQsdC70LjRhtGL0LLQvdC10YjQvdC10LPQvtC40YHRgtC+0YfQvdC40LrQsNC00LDQvdC90YvRhSDQt9Cw0L/QuNGB0YzQtNCy0LjQttC10L3QuNC50L/RgNC40L/RgNC+0LLQtdC00LXQvdC40Lgg0LfQsNC/0L7Qu9C90LXQvdC40LXQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LXQuSDQuNC90LTQtdC60YHQuNGA0L7QstCw0L3QuNC1ICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQsdCw0LfRi9C/0LvQsNC90LDQstC40LTQvtCy0YDQsNGB0YfQtdGC0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQsdGL0YHRgtGA0L7Qs9C+0LLRi9Cx0L7RgNCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L7QsdGJ0LXQs9C+0YDQtdC60LLQuNC30LjRgtCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L/QvtC00YfQuNC90LXQvdC40Y8gJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC/0L7Qu9C90L7RgtC10LrRgdGC0L7QstC+0LPQvtC/0L7QuNGB0LrQsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGA0LDQt9C00LXQu9GP0LXQvNGL0YXQtNCw0L3QvdGL0YXQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNC10LrQstC40LfQuNGC0LAgJyArXG4gICfQvdCw0LfQvdCw0YfQtdC90LjQtdC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0L/RgNC40LvQvtC20LXQvdC40Y8g0L3QsNC30L3QsNGH0LXQvdC40LXRgNCw0YHRiNC40YDQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQvdCw0L/RgNCw0LLQu9C10L3QuNC10L/QtdGA0LXQtNCw0YfQuCDQvtCx0L3QvtCy0LvQtdC90LjQtdC/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3Ri9GF0LTQsNC90L3Ri9GFICcgK1xuICAn0L7Qv9C10YDQsNGC0LjQstC90L7QtdC/0YDQvtCy0LXQtNC10L3QuNC1INC+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdCy0LjQtNCw0YDQsNGB0YfQtdGC0LAg0L7RgdC90L7QstC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10LLQuNC00LDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQutC4INC+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC30LDQtNCw0YfQuCAnICtcbiAgJ9C+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC/0LvQsNC90LDQvtCx0LzQtdC90LAg0L7RgdC90L7QstC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10YHQv9GA0LDQstC+0YfQvdC40LrQsCDQvtGB0L3QvtCy0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXRgdGH0LXRgtCwINC/0LXRgNC10LzQtdGJ0LXQvdC40LXQs9GA0LDQvdC40YbRi9C/0YDQuNC/0YDQvtCy0LXQtNC10L3QuNC4ICcgK1xuICAn0L/QtdGA0LjQvtC00LjRh9C90L7RgdGC0YzQvdC+0LzQtdGA0LDQsdC40LfQvdC10YHQv9GA0L7RhtC10YHRgdCwINC/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0L3QvtC80LXRgNCw0LTQvtC60YPQvNC10L3RgtCwINC/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0YDQtdCz0LjRgdGC0YDQsNGA0LDRgdGH0LXRgtCwINC/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0YDQtdCz0LjRgdGC0YDQsNGB0LLQtdC00LXQvdC40LkgJyArXG4gICfQv9C+0LLRgtC+0YDQvdC+0LXQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCy0L7Qt9Cy0YDQsNGJ0LDQtdC80YvRhdC30L3QsNGH0LXQvdC40Lkg0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0YvQudC/0L7QuNGB0LrQv9GA0LjQstCy0L7QtNC10L/QvtGB0YLRgNC+0LrQtSDQv9GA0LjQvdCw0LTQu9C10LbQvdC+0YHRgtGM0L7QsdGK0LXQutGC0LAg0L/RgNC+0LLQtdC00LXQvdC40LUgJyArXG4gICfRgNCw0LfQtNC10LvQtdC90LjQtdCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LjQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0YDQsNC30LTQtdC70LXQvdC40LXQtNCw0L3QvdGL0YXQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0YDQsNC30LTQtdC70LXQvdC40LXRgNCw0YHRiNC40YDQtdC90LjQudC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuNC+0LHRidC10LPQvtGA0LXQutCy0LjQt9C40YLQsCAnK1xuICAn0YDQtdC20LjQvNCw0LLRgtC+0L3Rg9C80LXRgNCw0YbQuNC40L7QsdGK0LXQutGC0L7QsiDRgNC10LbQuNC80LfQsNC/0LjRgdC40YDQtdCz0LjRgdGC0YDQsCDRgNC10LbQuNC80LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/QvNC+0LTQsNC70YzQvdC+0YHRgtC4ICcgK1xuICAn0YDQtdC20LjQvNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0YHQuNC90YXRgNC+0L3QvdGL0YXQstGL0LfQvtCy0L7QstGA0LDRgdGI0LjRgNC10L3QuNC50L/Qu9Cw0YLRhNC+0YDQvNGL0LjQstC90LXRiNC90LjRhdC60L7QvNC/0L7QvdC10L3RgiDRgNC10LbQuNC80L/QvtCy0YLQvtGA0L3QvtCz0L7QuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9GB0LXQsNC90YHQvtCyICcgK1xuICAn0YDQtdC20LjQvNC/0L7Qu9GD0YfQtdC90LjRj9C00LDQvdC90YvRhdCy0YvQsdC+0YDQsNC/0YDQuNCy0LLQvtC00LXQv9C+0YHRgtGA0L7QutC1INGA0LXQttC40LzRgdC+0LLQvNC10YHRgtC40LzQvtGB0YLQuCDRgNC10LbQuNC80YHQvtCy0LzQtdGB0YLQuNC80L7RgdGC0LjQuNC90YLQtdGA0YTQtdC50YHQsCAnICtcbiAgJ9GA0LXQttC40LzRg9C/0YDQsNCy0LvQtdC90LjRj9Cx0LvQvtC60LjRgNC+0LLQutC+0LnQtNCw0L3QvdGL0YXQv9C+0YPQvNC+0LvRh9Cw0L3QuNGOINGB0LXRgNC40LjQutC+0LTQvtCy0L/Qu9Cw0L3QsNCy0LjQtNC+0LLRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDRgdC10YDQuNC40LrQvtC00L7QstC/0LvQsNC90LDRgdGH0LXRgtC+0LIgJyArXG4gICfRgdC10YDQuNC40LrQvtC00L7QstGB0L/RgNCw0LLQvtGH0L3QuNC60LAg0YHQvtC30LTQsNC90LjQtdC/0YDQuNCy0LLQvtC00LUg0YHQv9C+0YHQvtCx0LLRi9Cx0L7RgNCwINGB0L/QvtGB0L7QsdC/0L7QuNGB0LrQsNGB0YLRgNC+0LrQuNC/0YDQuNCy0LLQvtC00LXQv9C+0YHRgtGA0L7QutC1INGB0L/QvtGB0L7QsdGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8gJyArXG4gICfRgtC40L/QtNCw0L3QvdGL0YXRgtCw0LHQu9C40YbRi9Cy0L3QtdGI0L3QtdCz0L7QuNGB0YLQvtGH0L3QuNC60LDQtNCw0L3QvdGL0YUg0YLQuNC/0LrQvtC00LDQv9C70LDQvdCw0LLQuNC00L7QstGA0LDRgdGH0LXRgtCwINGC0LjQv9C60L7QtNCw0YHQv9GA0LDQstC+0YfQvdC40LrQsCDRgtC40L/QvNCw0LrQtdGC0LAg0YLQuNC/0L3QvtC80LXRgNCw0LHQuNC30L3QtdGB0L/RgNC+0YbQtdGB0YHQsCAnICtcbiAgJ9GC0LjQv9C90L7QvNC10YDQsNC00L7QutGD0LzQtdC90YLQsCDRgtC40L/QvdC+0LzQtdGA0LDQt9Cw0LTQsNGH0Lgg0YLQuNC/0YTQvtGA0LzRiyDRg9C00LDQu9C10L3QuNC10LTQstC40LbQtdC90LjQuSAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgNCw0LfQvdGL0LUgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZGlmZmVyZW50cyA9XG4gICfQstCw0LbQvdC+0YHRgtGM0L/RgNC+0LHQu9C10LzRi9C/0YDQuNC80LXQvdC10L3QuNGP0YDQsNGB0YjQuNGA0LXQvdC40Y/QutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LLQsNGA0LjQsNC90YLQuNC90YLQtdGA0YTQtdC50YHQsNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDQstCw0YDQuNCw0L3RgtC80LDRgdGI0YLQsNCx0LDRhNC+0YDQvNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyAnICtcbiAgJ9Cy0LDRgNC40LDQvdGC0L7RgdC90L7QstC90L7Qs9C+0YjRgNC40YTRgtCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINCy0LDRgNC40LDQvdGC0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0L/QtdGA0LjQvtC00LAg0LLQsNGA0LjQsNC90YLRgdGC0LDQvdC00LDRgNGC0L3QvtC50LTQsNGC0YvQvdCw0YfQsNC70LAg0LLQuNC00LPRgNCw0L3QuNGG0Ysg0LLQuNC00LrQsNGA0YLQuNC90LrQuCAnICtcbiAgJ9Cy0LjQtNC+0YLQvtCx0YDQsNC20LXQvdC40Y/Qv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L7Qv9C+0LjRgdC60LAg0LLQuNC00YDQsNC80LrQuCDQstC40LTRgdGA0LDQstC90LXQvdC40Y8g0LLQuNC00YbQstC10YLQsCDQstC40LTRh9C40YHQu9C+0LLQvtCz0L7Qt9C90LDRh9C10L3QuNGPINCy0LjQtNGI0YDQuNGE0YLQsCDQtNC+0L/Rg9GB0YLQuNC80LDRj9C00LvQuNC90LAg0LTQvtC/0YPRgdGC0LjQvNGL0LnQt9C90LDQuiAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC1Ynl0ZW9yZGVybWFyayDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC80LXRgtCw0LTQsNC90L3Ri9GF0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+0L/QvtC40YHQutCwINC40YHRgtC+0YfQvdC40LrRgNCw0YHRiNC40YDQtdC90LjQudC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQutC70LDQstC40YjQsCDQutC+0LTQstC+0LfQstGA0LDRgtCw0LTQuNCw0LvQvtCz0LAgJyArXG4gICfQutC+0LTQuNGA0L7QstC60LB4YmFzZSDQutC+0LTQuNGA0L7QstC60LDRgtC10LrRgdGC0LAg0L3QsNC/0YDQsNCy0LvQtdC90LjQtdC/0L7QuNGB0LrQsCDQvdCw0L/RgNCw0LLQu9C10L3QuNC10YHQvtGA0YLQuNGA0L7QstC60Lgg0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvRhdC00LDQvdC90YvRhSDQvtCx0L3QvtCy0LvQtdC90LjQtdC/0YDQuNC40LfQvNC10L3QtdC90LjQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQv9Cw0L3QtdC70LjRgNCw0LfQtNC10LvQvtCyINC/0YDQvtCy0LXRgNC60LDQt9Cw0L/QvtC70L3QtdC90LjRjyDRgNC10LbQuNC80LTQuNCw0LvQvtCz0LDQstC+0L/RgNC+0YEg0YDQtdC20LjQvNC30LDQv9GD0YHQutCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINGA0LXQttC40LzQvtC60YDRg9Cz0LvQtdC90LjRjyDRgNC10LbQuNC80L7RgtC60YDRi9GC0LjRj9GE0L7RgNC80L/RgNC40LvQvtC20LXQvdC40Y8gJyArXG4gICfRgNC10LbQuNC80L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+0L/QvtC40YHQutCwINGB0LrQvtGA0L7RgdGC0YzQutC70LjQtdC90YLRgdC60L7Qs9C+0YHQvtC10LTQuNC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNC10LLQvdC10YjQvdC10LPQvtC40YHRgtC+0YfQvdC40LrQsNC00LDQvdC90YvRhSDRgdC+0YHRgtC+0Y/QvdC40LXQvtCx0L3QvtCy0LvQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuNCx0LDQt9GL0LTQsNC90L3Ri9GFICcgK1xuICAn0YHQv9C+0YHQvtCx0LLRi9Cx0L7RgNCw0YHQtdGA0YLQuNGE0LjQutCw0YLQsHdpbmRvd3Mg0YHQv9C+0YHQvtCx0LrQvtC00LjRgNC+0LLQsNC90LjRj9GB0YLRgNC+0LrQuCDRgdGC0LDRgtGD0YHRgdC+0L7QsdGJ0LXQvdC40Y8g0YLQuNC/0LLQvdC10YjQvdC10LnQutC+0LzQv9C+0L3QtdC90YLRiyDRgtC40L/Qv9C70LDRgtGE0L7RgNC80Ysg0YLQuNC/0L/QvtCy0LXQtNC10L3QuNGP0LrQu9Cw0LLQuNGI0LhlbnRlciAnICtcbiAgJ9GC0LjQv9GN0LvQtdC80LXQvdGC0LDQuNC90YTQvtGA0LzQsNGG0LjQuNC+0LLRi9C/0L7Qu9C90LXQvdC40LjQvtCx0L3QvtCy0LvQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuNCx0LDQt9GL0LTQsNC90L3Ri9GFINGD0YDQvtCy0LXQvdGM0LjQt9C+0LvRj9GG0LjQuNGC0YDQsNC90LfQsNC60YbQuNC5INGF0LXRiNGE0YPQvdC60YbQuNGPINGH0LDRgdGC0LjQtNCw0YLRiyc7XG5cbiAgLy8gY2xhc3M6INCy0YHRgtGA0L7QtdC90L3Ri9C1INC90LDQsdC+0YDRiyDQt9C90LDRh9C10L3QuNC5LCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPICjRgdC+0LTQtdGA0LbQsNGCINC00L7Rh9C10YDQvdC40LUg0LfQvdCw0YfQtdC90LjRjywg0L7QsdGA0LDRidC10L3QuNGPINC6INC60L7RgtC+0YDRi9C8INGH0LXRgNC10Lcg0YDQsNC30YvQvNC10L3QvtCy0LDQvdC40LUpXG4gIHZhciBDTEFTUyA9XG4gIHY4X3N5c3RlbV9zZXRzX29mX3ZhbHVlcyArXG4gIHY4X3N5c3RlbV9lbnVtc19pbnRlcmZhY2UgK1xuICB2OF9zeXN0ZW1fZW51bXNfb2JqZWN0c19wcm9wZXJ0aWVzICtcbiAgdjhfc3lzdGVtX2VudW1zX2V4Y2hhbmdlX3BsYW5zICtcbiAgdjhfc3lzdGVtX2VudW1zX3RhYnVsYXJfZG9jdW1lbnQgK1xuICB2OF9zeXN0ZW1fZW51bXNfc2hlZHVsZXIgK1xuICB2OF9zeXN0ZW1fZW51bXNfZm9ybWF0dGVkX2RvY3VtZW50ICtcbiAgdjhfc3lzdGVtX2VudW1zX3F1ZXJ5ICtcbiAgdjhfc3lzdGVtX2VudW1zX3JlcG9ydF9idWlsZGVyICtcbiAgdjhfc3lzdGVtX2VudW1zX2ZpbGVzICtcbiAgdjhfc3lzdGVtX2VudW1zX3F1ZXJ5X2J1aWxkZXIgK1xuICB2OF9zeXN0ZW1fZW51bXNfZGF0YV9hbmFseXNpcyArXG4gIHY4X3N5c3RlbV9lbnVtc194bWxfanNvbl94c19kb21feGR0b193cyArXG4gIHY4X3N5c3RlbV9lbnVtc19kYXRhX2NvbXBvc2l0aW9uX3N5c3RlbSArXG4gIHY4X3N5c3RlbV9lbnVtc19lbWFpbCArXG4gIHY4X3N5c3RlbV9lbnVtc19sb2dib29rICtcbiAgdjhfc3lzdGVtX2VudW1zX2NyeXB0b2dyYXBoeSArXG4gIHY4X3N5c3RlbV9lbnVtc196aXAgK1xuICB2OF9zeXN0ZW1fZW51bXNfb3RoZXIgK1xuICB2OF9zeXN0ZW1fZW51bXNfcmVxdWVzdF9zY2hlbWEgK1xuICB2OF9zeXN0ZW1fZW51bXNfcHJvcGVydGllc19vZl9tZXRhZGF0YV9vYmplY3RzICtcbiAgdjhfc3lzdGVtX2VudW1zX2RpZmZlcmVudHM7XG5cbiAgLy8gdjgg0L7QsdGJ0LjQtSDQvtCx0YrQtdC60YLRiyAo0YMg0L7QsdGK0LXQutGC0L7QsiDQtdGB0YLRjCDQutC+0L3RgdGC0YDRg9C60YLQvtGALCDRjdC60LfQtdC80L/Qu9GP0YDRiyDRgdC+0LfQtNCw0Y7RgtGB0Y8g0LzQtdGC0L7QtNC+0Lwg0J3QntCS0KvQmSkgPT0+IHR5cGVcbiAgdmFyIHY4X3NoYXJlZF9vYmplY3QgPVxuICAnY29t0L7QsdGK0LXQutGCIGZ0cNGB0L7QtdC00LjQvdC10L3QuNC1IGh0dHDQt9Cw0L/RgNC+0YEgaHR0cNGB0LXRgNCy0LjRgdC+0YLQstC10YIgaHR0cNGB0L7QtdC00LjQvdC10L3QuNC1IHdz0L7Qv9GA0LXQtNC10LvQtdC90LjRjyB3c9C/0YDQvtC60YHQuCB4YmFzZSDQsNC90LDQu9C40LfQtNCw0L3QvdGL0YUg0LDQvdC90L7RgtCw0YbQuNGPeHMgJyArXG4gICfQsdC70L7QutC40YDQvtCy0LrQsNC00LDQvdC90YvRhSDQsdGD0YTQtdGA0LTQstC+0LjRh9C90YvRhdC00LDQvdC90YvRhSDQstC60LvRjtGH0LXQvdC40LV4cyDQstGL0YDQsNC20LXQvdC40LXQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQs9C10L3QtdGA0LDRgtC+0YDRgdC70YPRh9Cw0LnQvdGL0YXRh9C40YHQtdC7INCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutCw0Y/RgdGF0LXQvNCwICcgK1xuICAn0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60LjQtdC60L7QvtGA0LTQuNC90LDRgtGLINCz0YDQsNGE0LjRh9C10YHQutCw0Y/RgdGF0LXQvNCwINCz0YDRg9C/0L/QsNC80L7QtNC10LvQuHhzINC00LDQvdC90YvQtdGA0LDRgdGI0LjRhNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQtNCy0L7QuNGH0L3Ri9C10LTQsNC90L3Ri9C1INC00LXQvdC00YDQvtCz0YDQsNC80LzQsCAnICtcbiAgJ9C00LjQsNCz0YDQsNC80LzQsCDQtNC40LDQs9GA0LDQvNC80LDQs9Cw0L3RgtCwINC00LjQsNC70L7Qs9Cy0YvQsdC+0YDQsNGE0LDQudC70LAg0LTQuNCw0LvQvtCz0LLRi9Cx0L7RgNCw0YbQstC10YLQsCDQtNC40LDQu9C+0LPQstGL0LHQvtGA0LDRiNGA0LjRhNGC0LAg0LTQuNCw0LvQvtCz0YDQsNGB0L/QuNGB0LDQvdC40Y/RgNC10LPQu9Cw0LzQtdC90YLQvdC+0LPQvtC30LDQtNCw0L3QuNGPICcgK1xuICAn0LTQuNCw0LvQvtCz0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRj9GB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtC/0LXRgNC40L7QtNCwINC00LjQsNC/0LDQt9C+0L0g0LTQvtC60YPQvNC10L3RgmRvbSDQtNC+0LrRg9C80LXQvdGCaHRtbCDQtNC+0LrRg9C80LXQvdGC0LDRhtC40Y94cyDQtNC+0YHRgtCw0LLQu9GP0LXQvNC+0LXRg9Cy0LXQtNC+0LzQu9C10L3QuNC1ICcgK1xuICAn0LfQsNC/0LjRgdGMZG9tINC30LDQv9C40YHRjGZhc3RpbmZvc2V0INC30LDQv9C40YHRjGh0bWwg0LfQsNC/0LjRgdGManNvbiDQt9Cw0L/QuNGB0Yx4bWwg0LfQsNC/0LjRgdGMemlw0YTQsNC50LvQsCDQt9Cw0L/QuNGB0YzQtNCw0L3QvdGL0YUg0LfQsNC/0LjRgdGM0YLQtdC60YHRgtCwINC30LDQv9C40YHRjNGD0LfQu9C+0LJkb20gJyArXG4gICfQt9Cw0L/RgNC+0YEg0LfQsNGJ0LjRidC10L3QvdC+0LXRgdC+0LXQtNC40L3QtdC90LjQtW9wZW5zc2wg0LfQvdCw0YfQtdC90LjRj9C/0L7Qu9C10LnRgNCw0YHRiNC40YTRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LjQt9Cy0LvQtdGH0LXQvdC40LXRgtC10LrRgdGC0LAg0LjQvNC/0L7RgNGCeHMg0LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0LAgJyArXG4gICfQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7QtdGB0L7QvtCx0YnQtdC90LjQtSDQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0YvQudC/0YDQvtGE0LjQu9GMINC40L3RgtC10YDQvdC10YLQv9GA0L7QutGB0Lgg0LjQvdGC0LXRgNC90LXRgtGB0L7QtdC00LjQvdC10L3QuNC1INC40L3RhNC+0YDQvNCw0YbQuNGP0LTQu9GP0L/RgNC40LvQvtC20LXQvdC40Y94cyAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LDRgtGA0LjQsdGD0YLQsHhzINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHQvtCx0YvRgtC40Y/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0LjRgdGC0L7Rh9C90LjQutC00L7RgdGC0YPQv9C90YvRhdC90LDRgdGC0YDQvtC10LrQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C40YLQtdGA0LDRgtC+0YDRg9C30LvQvtCyZG9tINC60LDRgNGC0LjQvdC60LAg0LrQstCw0LvQuNGE0LjQutCw0YLQvtGA0YvQtNCw0YLRiyDQutCy0LDQu9C40YTQuNC60LDRgtC+0YDRi9C00LLQvtC40YfQvdGL0YXQtNCw0L3QvdGL0YUg0LrQstCw0LvQuNGE0LjQutCw0YLQvtGA0YvRgdGC0YDQvtC60Lgg0LrQstCw0LvQuNGE0LjQutCw0YLQvtGA0YvRh9C40YHQu9CwICcgK1xuICAn0LrQvtC80L/QvtC90L7QstGJ0LjQutC80LDQutC10YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC60L7QvNC/0L7QvdC+0LLRidC40LrQvdCw0YHRgtGA0L7QtdC60LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LrQvtC90YHRgtGA0YPQutGC0L7RgNC80LDQutC10YLQsNC+0YTQvtGA0LzQu9C10L3QuNGP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQutC+0L3RgdGC0YDRg9C60YLQvtGA0L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC60L7QvdGB0YLRgNGD0LrRgtC+0YDRhNC+0YDQvNCw0YLQvdC+0LnRgdGC0YDQvtC60Lgg0LvQuNC90LjRjyDQvNCw0LrQtdGC0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LzQsNC60LXRgtC+0LHQu9Cw0YHRgtC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQvNCw0LrQtdGC0L7RhNC+0YDQvNC70LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQvNCw0YHQutCweHMg0LzQtdC90LXQtNC20LXRgNC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDQvdCw0LHQvtGA0YHRhdC10Lx4bWwg0L3QsNGB0YLRgNC+0LnQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0L3QsNGB0YLRgNC+0LnQutC40YHQtdGA0LjQsNC70LjQt9Cw0YbQuNC4anNvbiAnICtcbiAgJ9C+0LHRgNCw0LHQvtGC0LrQsNC60LDRgNGC0LjQvdC+0Log0L7QsdGA0LDQsdC+0YLQutCw0YDQsNGB0YjQuNGE0YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC+0LHRhdC+0LTQtNC10YDQtdCy0LBkb20g0L7QsdGK0Y/QstC70LXQvdC40LXQsNGC0YDQuNCx0YPRgtCweHMg0L7QsdGK0Y/QstC70LXQvdC40LXQvdC+0YLQsNGG0LjQuHhzICcgK1xuICAn0L7QsdGK0Y/QstC70LXQvdC40LXRjdC70LXQvNC10L3RgtCweHMg0L7Qv9C40YHQsNC90LjQtdC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0YHQvtCx0YvRgtC40Y/QtNC+0YHRgtGD0L/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfQvtC/0LjRgdCw0L3QuNC10LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/RgdC+0LHRi9GC0LjRj9C+0YLQutCw0LfQstC00L7RgdGC0YPQv9C10LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INC+0L/QuNGB0LDQvdC40LXQvtCx0YDQsNCx0L7RgtC60LjRgNCw0YHRiNC40YTRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQvtC/0LjRgdCw0L3QuNC10L/QtdGA0LXQtNCw0LLQsNC10LzQvtCz0L7RhNCw0LnQu9CwINC+0L/QuNGB0LDQvdC40LXRgtC40L/QvtCyINC+0L/RgNC10LTQtdC70LXQvdC40LXQs9GA0YPQv9C/0YvQsNGC0YDQuNCx0YPRgtC+0LJ4cyDQvtC/0YDQtdC00LXQu9C10L3QuNC10LPRgNGD0L/Qv9GL0LzQvtC00LXQu9C4eHMgJyArXG4gICfQvtC/0YDQtdC00LXQu9C10L3QuNC10L7Qs9GA0LDQvdC40YfQtdC90LjRj9C40LTQtdC90YLQuNGH0L3QvtGB0YLQuHhzINC+0L/RgNC10LTQtdC70LXQvdC40LXQv9GA0L7RgdGC0L7Qs9C+0YLQuNC/0LB4cyDQvtC/0YDQtdC00LXQu9C10L3QuNC10YHQvtGB0YLQsNCy0L3QvtCz0L7RgtC40L/QsHhzINC+0L/RgNC10LTQtdC70LXQvdC40LXRgtC40L/QsNC00L7QutGD0LzQtdC90YLQsGRvbSAnICtcbiAgJ9C+0L/RgNC10LTQtdC70LXQvdC40Y94cGF0aHhzINC+0YLQsdC+0YDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQv9Cw0LrQtdGC0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GF0LTQvtC60YPQvNC10L3RgtC+0LIg0L/QsNGA0LDQvNC10YLRgNCy0YvQsdC+0YDQsCDQv9Cw0YDQsNC80LXRgtGA0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQv9Cw0YDQsNC80LXRgtGA0YvQt9Cw0L/QuNGB0Lhqc29uINC/0LDRgNCw0LzQtdGC0YDRi9C30LDQv9C40YHQuHhtbCDQv9Cw0YDQsNC80LXRgtGA0YvRh9GC0LXQvdC40Y94bWwg0L/QtdGA0LXQvtC/0YDQtdC00LXQu9C10L3QuNC1eHMg0L/Qu9Cw0L3QuNGA0L7QstGJ0LjQuiDQv9C+0LvQtdCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFICcgK1xuICAn0L/QvtC70LXQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQv9C+0YHRgtGA0L7QuNGC0LXQu9GMZG9tINC/0L7RgdGC0YDQvtC40YLQtdC70YzQt9Cw0L/RgNC+0YHQsCDQv9C+0YHRgtGA0L7QuNGC0LXQu9GM0L7RgtGH0LXRgtCwINC/0L7RgdGC0YDQvtC40YLQtdC70YzQvtGC0YfQtdGC0LDQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSAnICtcbiAgJ9C/0L7RgdGC0YDQvtC40YLQtdC70YzRgdGF0LXQvHhtbCDQv9C+0YLQvtC6INC/0L7RgtC+0LrQstC/0LDQvNGP0YLQuCDQv9C+0YfRgtCwINC/0L7Rh9GC0L7QstC+0LXRgdC+0L7QsdGJ0LXQvdC40LUg0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjQtXhzbCDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNC10LrQutCw0L3QvtC90LjRh9C10YHQutC+0LzRg3htbCAnICtcbiAgJ9C/0YDQvtGG0LXRgdGB0L7RgNCy0YvQstC+0LTQsNGA0LXQt9GD0LvRjNGC0LDRgtCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YXQstC60L7Qu9C70LXQutGG0LjRjtC30L3QsNGH0LXQvdC40Lkg0L/RgNC+0YbQtdGB0YHQvtGA0LLRi9Cy0L7QtNCw0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhdCy0YLQsNCx0LvQuNGH0L3Ri9C50LTQvtC60YPQvNC10L3RgiAnICtcbiAgJ9C/0YDQvtGG0LXRgdGB0L7RgNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDQt9GL0LzQtdC90L7QstCw0YLQtdC70YzQv9GA0L7RgdGC0YDQsNC90YHRgtCy0LjQvNC10L1kb20g0YDQsNC80LrQsCDRgNCw0YHQv9C40YHQsNC90LjQtdGA0LXQs9C70LDQvNC10L3RgtC90L7Qs9C+0LfQsNC00LDQvdC40Y8g0YDQsNGB0YjQuNGA0LXQvdC90L7QtdC40LzRj3htbCAnICtcbiAgJ9GA0LXQt9GD0LvRjNGC0LDRgtGH0YLQtdC90LjRj9C00LDQvdC90YvRhSDRgdCy0L7QtNC90LDRj9C00LjQsNCz0YDQsNC80LzQsCDRgdCy0Y/Qt9GM0L/QsNGA0LDQvNC10YLRgNCw0LLRi9Cx0L7RgNCwINGB0LLRj9C30YzQv9C+0YLQuNC/0YMg0YHQstGP0LfRjNC/0L7RgtC40L/Rg9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGB0LXRgNC40LDQu9C40LfQsNGC0L7RgHhkdG8gJyArXG4gICfRgdC10YDRgtC40YTQuNC60LDRgtC60LvQuNC10L3RgtCwd2luZG93cyDRgdC10YDRgtC40YTQuNC60LDRgtC60LvQuNC10L3RgtCw0YTQsNC50Lsg0YHQtdGA0YLQuNGE0LjQutCw0YLQutGA0LjQv9GC0L7Qs9GA0LDRhNC40Lgg0YHQtdGA0YLQuNGE0LjQutCw0YLRi9GD0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40YXRhtC10L3RgtGA0L7QsndpbmRvd3MgJyArXG4gICfRgdC10YDRgtC40YTQuNC60LDRgtGL0YPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjRhdGG0LXQvdGC0YDQvtCy0YTQsNC50Lsg0YHQttCw0YLQuNC10LTQsNC90L3Ri9GFINGB0LjRgdGC0LXQvNC90LDRj9C40L3RhNC+0YDQvNCw0YbQuNGPINGB0L7QvtCx0YnQtdC90LjQtdC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjiDRgdC+0YfQtdGC0LDQvdC40LXQutC70LDQstC40YggJyArXG4gICfRgdGA0LDQstC90LXQvdC40LXQt9C90LDRh9C10L3QuNC5INGB0YLQsNC90LTQsNGA0YLQvdCw0Y/QtNCw0YLQsNC90LDRh9Cw0LvQsCDRgdGC0LDQvdC00LDRgNGC0L3Ri9C50L/QtdGA0LjQvtC0INGB0YXQtdC80LB4bWwg0YHRhdC10LzQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LDQsdC70LjRh9C90YvQudC00L7QutGD0LzQtdC90YIgJyArXG4gICfRgtC10LrRgdGC0L7QstGL0LnQtNC+0LrRg9C80LXQvdGCINGC0LXRgdGC0LjRgNGD0LXQvNC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtSDRgtC40L/QtNCw0L3QvdGL0YV4bWwg0YPQvdC40LrQsNC70YzQvdGL0LnQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRhNCw0LHRgNC40LrQsHhkdG8g0YTQsNC50Lsg0YTQsNC50LvQvtCy0YvQudC/0L7RgtC+0LogJyArXG4gICfRhNCw0YHQtdGC0LTQu9C40L3Ri3hzINGE0LDRgdC10YLQutC+0LvQuNGH0LXRgdGC0LLQsNGA0LDQt9GA0Y/QtNC+0LLQtNGA0L7QsdC90L7QudGH0LDRgdGC0Lh4cyDRhNCw0YHQtdGC0LzQsNC60YHQuNC80LDQu9GM0L3QvtCz0L7QstC60LvRjtGH0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj3hzICcgK1xuICAn0YTQsNGB0LXRgtC80LDQutGB0LjQvNCw0LvRjNC90L7Qs9C+0LjRgdC60LvRjtGH0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj3hzINGE0LDRgdC10YLQvNCw0LrRgdC40LzQsNC70YzQvdC+0LnQtNC70LjQvdGLeHMg0YTQsNGB0LXRgtC80LjQvdC40LzQsNC70YzQvdC+0LPQvtCy0LrQu9GO0YfQsNGO0YnQtdCz0L7Qt9C90LDRh9C10L3QuNGPeHMgJyArXG4gICfRhNCw0YHQtdGC0LzQuNC90LjQvNCw0LvRjNC90L7Qs9C+0LjRgdC60LvRjtGH0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj3hzINGE0LDRgdC10YLQvNC40L3QuNC80LDQu9GM0L3QvtC50LTQu9C40L3Ri3hzINGE0LDRgdC10YLQvtCx0YDQsNC30YbQsHhzINGE0LDRgdC10YLQvtCx0YnQtdCz0L7QutC+0LvQuNGH0LXRgdGC0LLQsNGA0LDQt9GA0Y/QtNC+0LJ4cyAnICtcbiAgJ9GE0LDRgdC10YLQv9C10YDQtdGH0LjRgdC70LXQvdC40Y94cyDRhNCw0YHQtdGC0L/RgNC+0LHQtdC70YzQvdGL0YXRgdC40LzQstC+0LvQvtCyeHMg0YTQuNC70YzRgtGA0YPQt9C70L7QsmRvbSDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QvdCw0Y/RgdGC0YDQvtC60LAg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90L3Ri9C50LTQvtC60YPQvNC10L3RgiAnICtcbiAgJ9GE0YDQsNCz0LzQtdC90YJ4cyDRhdC10YjQuNGA0L7QstCw0L3QuNC10LTQsNC90L3Ri9GFINGF0YDQsNC90LjQu9C40YnQtdC30L3QsNGH0LXQvdC40Y8g0YbQstC10YIg0YfRgtC10L3QuNC1ZmFzdGluZm9zZXQg0YfRgtC10L3QuNC1aHRtbCDRh9GC0LXQvdC40LVqc29uINGH0YLQtdC90LjQtXhtbCDRh9GC0LXQvdC40LV6aXDRhNCw0LnQu9CwICcgK1xuICAn0YfRgtC10L3QuNC10LTQsNC90L3Ri9GFINGH0YLQtdC90LjQtdGC0LXQutGB0YLQsCDRh9GC0LXQvdC40LXRg9C30LvQvtCyZG9tINGI0YDQuNGE0YIg0Y3Qu9C10LzQtdC90YLRgNC10LfRg9C70YzRgtCw0YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICc7XG5cbiAgLy8gdjgg0YPQvdC40LLQtdGA0YHQsNC70YzQvdGL0LUg0LrQvtC70LvQtdC60YbQuNC4INC30L3QsNGH0LXQvdC40LkgPT0+IHR5cGVcbiAgdmFyIHY4X3VuaXZlcnNhbF9jb2xsZWN0aW9uID1cbiAgJ2NvbXNhZmVhcnJheSDQtNC10YDQtdCy0L7Qt9C90LDRh9C10L3QuNC5INC80LDRgdGB0LjQsiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40LUg0YHQv9C40YHQvtC60LfQvdCw0YfQtdC90LjQuSDRgdGC0YDRg9C60YLRg9GA0LAg0YLQsNCx0LvQuNGG0LDQt9C90LDRh9C10L3QuNC5INGE0LjQutGB0LjRgNC+0LLQsNC90L3QsNGP0YHRgtGA0YPQutGC0YPRgNCwICcgK1xuICAn0YTQuNC60YHQuNGA0L7QstCw0L3QvdC+0LXRgdC+0L7RgtCy0LXRgtGB0YLQstC40LUg0YTQuNC60YHQuNGA0L7QstCw0L3QvdGL0LnQvNCw0YHRgdC40LIgJztcblxuICAvLyB0eXBlIDog0LLRgdGC0YDQvtC10L3QvdGL0LUg0YLQuNC/0YtcbiAgdmFyIFRZUEUgPVxuICB2OF9zaGFyZWRfb2JqZWN0ICtcbiAgdjhfdW5pdmVyc2FsX2NvbGxlY3Rpb247XG5cbiAgLy8gbGl0ZXJhbCA6INC/0YDQuNC80LjRgtC40LLQvdGL0LUg0YLQuNC/0YtcbiAgdmFyIExJVEVSQUwgPSAnbnVsbCDQuNGB0YLQuNC90LAg0LvQvtC20Ywg0L3QtdC+0L/RgNC10LTQtdC70LXQvdC+JztcbiAgXG4gIC8vIG51bWJlciA6INGH0LjRgdC70LBcbiAgdmFyIE5VTUJFUlMgPSBobGpzLmluaGVyaXQoaGxqcy5OVU1CRVJfTU9ERSk7XG5cbiAgLy8gc3RyaW5nIDog0YHRgtGA0L7QutC4XG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcInxcXFxcfCcsIGVuZDogJ1wifCQnLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XVxuICB9O1xuXG4gIC8vIG51bWJlciA6INC00LDRgtGLXG4gIHZhciBEQVRFID0ge1xuICAgIGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIiwgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGR7NH0oW1xcXFwuXFxcXFxcXFwvOi1dP1xcXFxkezJ9KXswLDV9J1xuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgXG4gIC8vIGNvbW1lbnQgOiDQutC+0LzQvNC10L3RgtCw0YDQuNC4XG4gIHZhciBDT01NRU5UUyA9IGhsanMuaW5oZXJpdChobGpzLkNfTElORV9DT01NRU5UX01PREUpO1xuICBcbiAgLy8gbWV0YSA6INC40L3RgdGC0YDRg9C60YbQuNC4INC/0YDQtdC/0YDQvtGG0LXRgdGB0L7RgNCwLCDQtNC40YDQtdC60YLQuNCy0Ysg0LrQvtC80L/QuNC70Y/RhtC40LhcbiAgdmFyIE1FVEEgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBiZWdpbjogJyN8JicsIGVuZDogJyQnLFxuICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6IEtFWVdPUkQgKyBNRVRBS0VZV09SRH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIENPTU1FTlRTXG4gICAgXVxuICB9O1xuICBcbiAgLy8gc3ltYm9sIDog0LzQtdGC0LrQsCBnb3RvXG4gIHZhciBTWU1CT0wgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ34nLCBlbmQ6ICc7fDonLCBleGNsdWRlRW5kOiB0cnVlXG4gIH07ICBcbiAgXG4gIC8vIGZ1bmN0aW9uIDog0L7QsdGK0Y/QstC70LXQvdC40LUg0L/RgNC+0YbQtdC00YPRgCDQuCDRhNGD0L3QutGG0LjQuVxuICB2YXIgRlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ9C/0YDQvtGG0LXQtNGD0YDQsHzRhNGD0L3QutGG0LjRjycsIGVuZDogJ1xcXFwpJywga2V5d29yZHM6ICfQv9GA0L7RhtC10LTRg9GA0LAg0YTRg9C90LrRhtC40Y8nfSxcbiAgICAgIHtiZWdpbjogJ9C60L7QvdC10YbQv9GA0L7RhtC10LTRg9GA0Yt80LrQvtC90LXRhtGE0YPQvdC60YbQuNC4Jywga2V5d29yZHM6ICfQutC+0L3QtdGG0L/RgNC+0YbQtdC00YPRgNGLINC60L7QvdC10YbRhNGD0L3QutGG0LjQuCd9XG4gICAgXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLCBlbmRzUGFyZW50IDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgICAgIGJlZ2luOiBVTkRFUlNDT1JFX0lERU5UX1JFLCBlbmQ6ICcsJywgZXhjbHVkZUVuZDogdHJ1ZSwgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICBrZXl3b3JkOiAn0LfQvdCw0YcnLFxuICAgICAgICAgICAgICBsaXRlcmFsOiBMSVRFUkFMXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgU1RSSU5HUyxcbiAgICAgICAgICAgICAgREFURVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgQ09NTUVOVFNcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogVU5ERVJTQ09SRV9JREVOVF9SRX0pXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JELFxuICAgICAgYnVpbHRfaW46IEJVSUxUSU4sXG4gICAgICBjbGFzczogQ0xBU1MsXG4gICAgICB0eXBlOiBUWVBFLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIE1FVEEsXG4gICAgICBGVU5DVElPTixcbiAgICAgIENPTU1FTlRTLFxuICAgICAgU1lNQk9MLFxuICAgICAgTlVNQkVSUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBEQVRFXG4gICAgXSAgXG4gIH1cbn07IiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBsb3cgPSByZXF1aXJlKCcuL2xpYi9jb3JlLmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBsb3dcblxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJzFjJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvMWMnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhYm5mJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYWJuZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhY2Nlc3Nsb2cnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY2Nlc3Nsb2cnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhY3Rpb25zY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY3Rpb25zY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FkYScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FkYScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhbmdlbHNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FuZ2Vsc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcGFjaGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcGFjaGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnYXBwbGVzY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcHBsZXNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXJjYWRlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXJjYWRlJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3BwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3BwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXJkdWlubycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FyZHVpbm8nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcm1hc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcm1hc20nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd4bWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94bWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhc2NpaWRvYycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FzY2lpZG9jJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXNwZWN0aicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FzcGVjdGonKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnYXV0b2hvdGtleScsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9ob3RrZXknKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F1dG9pdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9pdCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F2cmFzbScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F2cmFzbScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F3aycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F3aycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F4YXB0YScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F4YXB0YScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2Jhc2gnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9iYXNoJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYmFzaWMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9iYXNpYycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2JuZicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2JuZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdicmFpbmZ1Y2snLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9icmFpbmZ1Y2snKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NhbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NhbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdjYXBucHJvdG8nLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jYXBucHJvdG8nKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NleWxvbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NleWxvbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NsZWFuJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2xlYW4nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjbG9qdXJlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2xvanVyZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdjbG9qdXJlLXJlcGwnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbG9qdXJlLXJlcGwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NtYWtlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY21ha2UnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnY29mZmVlc2NyaXB0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29mZmVlc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjb3EnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb3EnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjb3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb3MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjcm1zaCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NybXNoJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3J5c3RhbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NyeXN0YWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3NwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3NwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3NzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3NzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2QnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXJrZG93bicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hcmtkb3duJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZGFydCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RhcnQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkZWxwaGknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kZWxwaGknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkaWZmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZGlmZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RqYW5nbycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RqYW5nbycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RucycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RucycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdkb2NrZXJmaWxlJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9ja2VyZmlsZScpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZG9zJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9zJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZHNjb25maWcnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kc2NvbmZpZycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2R0cycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2R0cycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2R1c3QnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kdXN0JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZWJuZicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VibmYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlbGl4aXInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbGl4aXInKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlbG0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbG0nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdydWJ5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnVieScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2VyYicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VyYicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdlcmxhbmctcmVwbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy1yZXBsJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlcmxhbmcnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lcmxhbmcnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdleGNlbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2V4Y2VsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZml4JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZml4JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZmxpeCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZsaXgnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdmb3J0cmFuJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZm9ydHJhbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2ZzaGFycCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZzaGFycCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2dhbXMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nYW1zJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ2F1c3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nYXVzcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2djb2RlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2NvZGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdnaGVya2luJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2hlcmtpbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2dsc2wnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbHNsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ21sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ21sJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ28nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2dvbG8nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nb2xvJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ3JhZGxlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3JhZGxlJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ3Jvb3Z5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3Jvb3Z5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaGFtbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnaGFuZGxlYmFycycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbmRsZWJhcnMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2hhc2tlbGwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYXNrZWxsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaGF4ZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hheGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdoc3AnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oc3AnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdodG1sYmFycycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0bWxiYXJzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaHR0cCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0dHAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdoeScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaW5mb3JtNycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2luZm9ybTcnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdpbmknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pbmknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdpcnBmOTAnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pcnBmOTAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdpc2JsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaXNibCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2phdmEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2phdmFzY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnamJvc3MtY2xpJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamJvc3MtY2xpJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdqc29uJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvanNvbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2p1bGlhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvanVsaWEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnanVsaWEtcmVwbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLXJlcGwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2tvdGxpbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2tvdGxpbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xhc3NvJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGFzc28nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsZGlmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGRpZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xlYWYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sZWFmJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbGVzcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xlc3MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsaXNwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGlzcCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdsaXZlY29kZXNlcnZlcicsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpdmVjb2Rlc2VydmVyJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnbGl2ZXNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpdmVzY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xsdm0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sbHZtJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbHNsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbHNsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbHVhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbHVhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbWFrZWZpbGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYWtlZmlsZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdtYXRoZW1hdGljYScsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hdGhlbWF0aWNhJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXRsYWInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXRsYWInKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXhpbWEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXhpbWEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtZWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tZWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtZXJjdXJ5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWVyY3VyeScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21pcHNhc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXBzYXNtJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbWl6YXInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXphcicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3BlcmwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wZXJsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ21vam9saWNpb3VzJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9qb2xpY2lvdXMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21vbmtleScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21vbmtleScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdtb29uc2NyaXB0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9vbnNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbjFxbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL24xcWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCduZ2lueCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25naW54JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbmltcm9kJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbmltcm9kJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbml4JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbml4JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbnNpcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25zaXMnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnb2JqZWN0aXZlYycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL29iamVjdGl2ZWMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ29jYW1sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb2NhbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdvcGVuc2NhZCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL29wZW5zY2FkJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnb3h5Z2VuZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL294eWdlbmUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwYXJzZXIzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGFyc2VyMycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3BmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwZ3NxbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Bnc3FsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncGhwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGhwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3BsYWludGV4dCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BsYWludGV4dCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncG9ueScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BvbnknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncG93ZXJzaGVsbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Bvd2Vyc2hlbGwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdwcm9jZXNzaW5nJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvY2Vzc2luZycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncHJvZmlsZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb2ZpbGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwcm9sb2cnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9sb2cnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncHJvcGVydGllcycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb3BlcnRpZXMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Byb3RvYnVmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvdG9idWYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwdXBwZXQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wdXBwZXQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncHVyZWJhc2ljJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHVyZWJhc2ljJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdweXRob24nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9weXRob24nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdxJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3FtbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3FtbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3InLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncmVhc29ubWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yZWFzb25tbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3JpYicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JpYicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3JvYm9jb25mJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcm9ib2NvbmYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdyb3V0ZXJvcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvdXRlcm9zJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncnNsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnNsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3J1bGVzbGFuZ3VhZ2UnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ydWxlc2xhbmd1YWdlJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdydXN0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnVzdCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NhcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NhcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NjYWxhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2NhbGEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzY2hlbWUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2hlbWUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzY2lsYWInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2lsYWInKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzY3NzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2NzcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NoZWxsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2hlbGwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzbWFsaScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NtYWxpJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3NtYWxsdGFsaycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NtYWxsdGFsaycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc21sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21sJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3FmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3FmJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3FsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3FsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3RhbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N0YW4nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzdGF0YScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N0YXRhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3RlcDIxJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3RlcDIxJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3R5bHVzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3R5bHVzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3VidW5pdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N1YnVuaXQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzd2lmdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N3aWZ0JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3RhZ2dlcnNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RhZ2dlcnNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgneWFtbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3lhbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0YXAnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90YXAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0Y2wnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90Y2wnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0ZXgnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90ZXgnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0aHJpZnQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90aHJpZnQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0cCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndHdpZycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R3aWcnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAndHlwZXNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R5cGVzY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3ZhbGEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YWxhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndmJuZXQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92Ym5ldCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Zic2NyaXB0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmJzY3JpcHQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAndmJzY3JpcHQtaHRtbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LWh0bWwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Zlcmlsb2cnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92ZXJpbG9nJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndmhkbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZoZGwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd2aW0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92aW0nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd4ODZhc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94ODZhc20nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd4bCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3hsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgneHF1ZXJ5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveHF1ZXJ5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnemVwaGlyJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvemVwaGlyJykpXG4iLCJpbXBvcnQgbG93IGZyb20gJ2xvd2xpZ2h0J1xuaW1wb3J0IHZpc2l0IGZyb20gJ3VuaXN0LXV0aWwtdmlzaXQnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGF0dGFjaGVyKHtpbmNsdWRlLCBleGNsdWRlfSA9IHt9KSB7XG4gIHJldHVybiBhc3QgPT4gdmlzaXQoYXN0LCAnY29kZScsIHZpc2l0b3IpXG5cbiAgZnVuY3Rpb24gdmlzaXRvcihub2RlKSB7XG4gICAgbGV0IHtsYW5nLCBkYXRhfSA9IG5vZGVcblxuICAgIGlmIChcbiAgICAgICFsYW5nIHx8XG4gICAgICAoaW5jbHVkZSAmJiBpbmNsdWRlLmluZGV4T2YobGFuZykgPT09IC0xKSB8fFxuICAgICAgKGV4Y2x1ZGUgJiYgZXhjbHVkZS5pbmRleE9mKGxhbmcpICE9PSAtMSlcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghZGF0YSkge1xuICAgICAgZGF0YSA9IHt9XG4gICAgICBub2RlLmRhdGEgPSBkYXRhXG4gICAgfVxuXG4gICAgaWYgKCFkYXRhLmhQcm9wZXJ0aWVzKSB7XG4gICAgICBkYXRhLmhQcm9wZXJ0aWVzID0ge31cbiAgICB9XG5cbiAgICBkYXRhLmhDaGlsZHJlbiA9IGxvdy5oaWdobGlnaHQobGFuZywgbm9kZS52YWx1ZSkudmFsdWVcbiAgICBkYXRhLmhQcm9wZXJ0aWVzLmNsYXNzTmFtZSA9IFtcbiAgICAgICdobGpzJyxcbiAgICAgIC4uLihkYXRhLmhQcm9wZXJ0aWVzLmNsYXNzTmFtZSB8fCBbXSksXG4gICAgICAnbGFuZ3VhZ2UtJyArIGxhbmdcbiAgICBdXG4gIH1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHZhciByZWdleGVzID0ge1xuICAgICAgICBydWxlRGVjbGFyYXRpb246IFwiXlthLXpBLVpdW2EtekEtWjAtOS1dKlwiLFxuICAgICAgICB1bmV4cGVjdGVkQ2hhcnM6IFwiWyFAIyReJicsPyt+YHw6XVwiXG4gICAgfTtcblxuICAgIHZhciBrZXl3b3JkcyA9IFtcbiAgICAgICAgXCJBTFBIQVwiLFxuICAgICAgICBcIkJJVFwiLFxuICAgICAgICBcIkNIQVJcIixcbiAgICAgICAgXCJDUlwiLFxuICAgICAgICBcIkNSTEZcIixcbiAgICAgICAgXCJDVExcIixcbiAgICAgICAgXCJESUdJVFwiLFxuICAgICAgICBcIkRRVU9URVwiLFxuICAgICAgICBcIkhFWERJR1wiLFxuICAgICAgICBcIkhUQUJcIixcbiAgICAgICAgXCJMRlwiLFxuICAgICAgICBcIkxXU1BcIixcbiAgICAgICAgXCJPQ1RFVFwiLFxuICAgICAgICBcIlNQXCIsXG4gICAgICAgIFwiVkNIQVJcIixcbiAgICAgICAgXCJXU1BcIlxuICAgIF07XG5cbiAgICB2YXIgY29tbWVudE1vZGUgPSBobGpzLkNPTU1FTlQoXCI7XCIsIFwiJFwiKTtcblxuICAgIHZhciB0ZXJtaW5hbEJpbmFyeU1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC8lYlswLTFdKygtWzAtMV0rfChcXC5bMC0xXSspKyl7MCwxfS9cbiAgICB9O1xuXG4gICAgdmFyIHRlcm1pbmFsRGVjaW1hbE1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC8lZFswLTldKygtWzAtOV0rfChcXC5bMC05XSspKyl7MCwxfS9cbiAgICB9O1xuXG4gICAgdmFyIHRlcm1pbmFsSGV4YWRlY2ltYWxNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwic3ltYm9sXCIsXG4gICAgICAgIGJlZ2luOiAvJXhbMC05QS1GXSsoLVswLTlBLUZdK3woXFwuWzAtOUEtRl0rKSspezAsMX0vLFxuICAgIH07XG5cbiAgICB2YXIgY2FzZVNlbnNpdGl2aXR5SW5kaWNhdG9yTW9kZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInN5bWJvbFwiLFxuICAgICAgICBiZWdpbjogLyVbc2ldL1xuICAgIH07XG5cbiAgICB2YXIgcnVsZURlY2xhcmF0aW9uTW9kZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImF0dHJpYnV0ZVwiLFxuICAgICAgICBiZWdpbjogcmVnZXhlcy5ydWxlRGVjbGFyYXRpb24gKyAnKD89XFxcXHMqPSknLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWxsZWdhbDogcmVnZXhlcy51bmV4cGVjdGVkQ2hhcnMsXG4gICAgICBrZXl3b3Jkczoga2V5d29yZHMuam9pbihcIiBcIiksXG4gICAgICBjb250YWluczogW1xuICAgICAgICAgIHJ1bGVEZWNsYXJhdGlvbk1vZGUsXG4gICAgICAgICAgY29tbWVudE1vZGUsXG4gICAgICAgICAgdGVybWluYWxCaW5hcnlNb2RlLFxuICAgICAgICAgIHRlcm1pbmFsRGVjaW1hbE1vZGUsXG4gICAgICAgICAgdGVybWluYWxIZXhhZGVjaW1hbE1vZGUsXG4gICAgICAgICAgY2FzZVNlbnNpdGl2aXR5SW5kaWNhdG9yTW9kZSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICAgIF1cbiAgICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9NZXRob2RzXG4gIHZhciBIVFRQX1ZFUkJTID0gW1xuICAgIFwiR0VUXCIsIFwiUE9TVFwiLCBcIkhFQURcIiwgXCJQVVRcIiwgXCJERUxFVEVcIiwgXCJDT05ORUNUXCIsIFwiT1BUSU9OU1wiLCBcIlBBVENIXCIsIFwiVFJBQ0VcIlxuICBdXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIC8vIElQXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxkezEsM31cXFxcLlxcXFxkezEsM31cXFxcLlxcXFxkezEsM31cXFxcLlxcXFxkezEsM30oOlxcXFxkezEsNX0pP1xcXFxiJyxcbiAgICAgICAgcmVsZXZhbmNlOjVcbiAgICAgIH0sXG4gICAgICAvLyBPdGhlciBudW1iZXJzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJcXFxcZCtcXFxcYicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIFJlcXVlc3RzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCIoJyArIEhUVFBfVkVSQlMuam9pbihcInxcIikgKyAnKScsIGVuZDogJ1wiJyxcbiAgICAgICAga2V5d29yZHM6IEhUVFBfVkVSQlMuam9pbihcIiBcIiksXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogNSxcbiAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgYmVnaW46ICdIVFRQL1sxMl1cXFxcLlxcXFxkJyxcbiAgICAgICAgICByZWxldmFuY2U6NVxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgIC8vIERhdGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIC8vIGRhdGVzIG11c3QgaGF2ZSBhIGNlcnRhaW4gbGVuZ3RoLCB0aGlzIHByZXZlbnRzIG1hdGNoaW5nXG4gICAgICAgIC8vIHNpbXBsZSBhcnJheSBhY2Nlc3NlcyBhWzEyM10gYW5kIFtdIGFuZCBvdGhlciBjb21tb24gcGF0dGVybnNcbiAgICAgICAgLy8gZm91bmQgaW4gb3RoZXIgbGFuZ3VhZ2VzXG4gICAgICAgIGJlZ2luOiAvXFxbXFxkW15cXF1cXG5dezgsfVxcXS8sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBVc2VyIGFnZW50IC8gcmVsZXZhbmNlIGJvb3N0XG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCJNb3ppbGxhL1xcXFxkXFxcXC5cXFxcZCBcXFxcXFwoJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDNcbiAgICAgIH0sXG4gICAgICAvLyBTdHJpbmdzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSA9ICdbYS16QS1aXyRdW2EtekEtWjAtOV8kXSonO1xuICB2YXIgSURFTlRfRlVOQ19SRVRVUk5fVFlQRV9SRSA9ICcoWypdfFthLXpBLVpfJF1bYS16QS1aMC05XyRdKiknO1xuXG4gIHZhciBBUzNfUkVTVF9BUkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdyZXN0X2FyZycsXG4gICAgYmVnaW46ICdbLl17M30nLCBlbmQ6IElERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMTBcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnYXMnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2FzIGJyZWFrIGNhc2UgY2F0Y2ggY2xhc3MgY29uc3QgY29udGludWUgZGVmYXVsdCBkZWxldGUgZG8gZHluYW1pYyBlYWNoICcgK1xuICAgICAgICAnZWxzZSBleHRlbmRzIGZpbmFsIGZpbmFsbHkgZm9yIGZ1bmN0aW9uIGdldCBpZiBpbXBsZW1lbnRzIGltcG9ydCBpbiBpbmNsdWRlICcgK1xuICAgICAgICAnaW5zdGFuY2VvZiBpbnRlcmZhY2UgaW50ZXJuYWwgaXMgbmFtZXNwYWNlIG5hdGl2ZSBuZXcgb3ZlcnJpZGUgcGFja2FnZSBwcml2YXRlICcgK1xuICAgICAgICAncHJvdGVjdGVkIHB1YmxpYyByZXR1cm4gc2V0IHN0YXRpYyBzdXBlciBzd2l0Y2ggdGhpcyB0aHJvdyB0cnkgdHlwZW9mIHVzZSB2YXIgdm9pZCAnICtcbiAgICAgICAgJ3doaWxlIHdpdGgnLFxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3BhY2thZ2UnLCBlbmQ6ICd7JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlRJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW1wb3J0IGluY2x1ZGUnLCBlbmQ6ICc7JyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2ltcG9ydCBpbmNsdWRlJ31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnW3s7XScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcUycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIEFTM19SRVNUX0FSR19NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJzpcXFxccyonICsgSURFTlRfRlVOQ19SRVRVUk5fVFlQRV9SRVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuTUVUSE9EX0dVQVJEXG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvIy9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBXZSB0cnkgdG8gc3VwcG9ydCBmdWxsIEFkYTIwMTJcbi8vXG4vLyBXZSBoaWdobGlnaHQgYWxsIGFwcGVhcmFuY2VzIG9mIHR5cGVzLCBrZXl3b3JkcywgbGl0ZXJhbHMgKHN0cmluZywgY2hhciwgbnVtYmVyLCBib29sKVxuLy8gYW5kIHRpdGxlcyAodXNlciBkZWZpbmVkIGZ1bmN0aW9uL3Byb2NlZHVyZS9wYWNrYWdlKVxuLy8gQ1NTIGNsYXNzZXMgYXJlIHNldCBhY2NvcmRpbmdseVxuLy9cbi8vIExhbmd1YWdlcyBjYXVzaW5nIHByb2JsZW1zIGZvciBsYW5ndWFnZSBkZXRlY3Rpb246XG4vLyB4bWwgKGJyb2tlbiBieSBGb28gOiBCYXIgdHlwZSksIGVsbSAoYnJva2VuIGJ5IEZvbyA6IEJhciB0eXBlKSwgdmJzY3JpcHQtaHRtbCAoYnJva2VuIGJ5IGJvZHkga2V5d29yZClcbi8vIHNxbCAoYWRhIGRlZmF1bHQudHh0IGhhcyBhIGxvdCBvZiBzcWwga2V5d29yZHMpXG5cbmZ1bmN0aW9uKGhsanMpIHtcbiAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIEFkYSBudW1lcmljIGxpdGVyYWxzLlxuICAgIC8vIHN0b2xlbiBmb3JtIHRoZSBWSERMIGhpZ2hsaWdodGVyXG5cbiAgICAvLyBEZWNpbWFsIGxpdGVyYWw6XG4gICAgdmFyIElOVEVHRVJfUkUgPSAnXFxcXGQoX3xcXFxcZCkqJztcbiAgICB2YXIgRVhQT05FTlRfUkUgPSAnW2VFXVstK10/JyArIElOVEVHRVJfUkU7XG4gICAgdmFyIERFQ0lNQUxfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnKFxcXFwuJyArIElOVEVHRVJfUkUgKyAnKT8nICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuXG4gICAgLy8gQmFzZWQgbGl0ZXJhbDpcbiAgICB2YXIgQkFTRURfSU5URUdFUl9SRSA9ICdcXFxcdysnO1xuICAgIHZhciBCQVNFRF9MSVRFUkFMX1JFID0gSU5URUdFUl9SRSArICcjJyArIEJBU0VEX0lOVEVHRVJfUkUgKyAnKFxcXFwuJyArIEJBU0VEX0lOVEVHRVJfUkUgKyAnKT8nICsgJyMnICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuXG4gICAgdmFyIE5VTUJFUl9SRSA9ICdcXFxcYignICsgQkFTRURfTElURVJBTF9SRSArICd8JyArIERFQ0lNQUxfTElURVJBTF9SRSArICcpJztcblxuICAgIC8vIElkZW50aWZpZXIgcmVnZXhcbiAgICB2YXIgSURfUkVHRVggPSAnW0EtWmEtel0oXz9bQS1aYS16MC05Ll0pKic7XG5cbiAgICAvLyBiYWQgY2hhcnMsIG9ubHkgYWxsb3dlZCBpbiBsaXRlcmFsc1xuICAgIHZhciBCQURfQ0hBUlMgPSAnW117fSUjXFwnXFxcIidcblxuICAgIC8vIEFkYSBkb2Vzbid0IGhhdmUgYmxvY2sgY29tbWVudHMsIG9ubHkgbGluZSBjb21tZW50c1xuICAgIHZhciBDT01NRU5UUyA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuXG4gICAgLy8gdmFyaWFibGUgZGVjbGFyYXRpb25zIG9mIHRoZSBmb3JtXG4gICAgLy8gRm9vIDogQmFyIDo9IEJhejtcbiAgICAvLyB3aGVyZSBvbmx5IEJhciB3aWxsIGJlIGhpZ2hsaWdodGVkXG4gICAgdmFyIFZBUl9ERUNMUyA9IHtcbiAgICAgICAgLy8gVE9ETzogVGhlc2Ugc3BhY2VzIGFyZSBub3QgcmVxdWlyZWQgYnkgdGhlIEFkYSBzeW50YXhcbiAgICAgICAgLy8gaG93ZXZlciwgSSBoYXZlIHlldCB0byBzZWUgaGFuZHdyaXR0ZW4gQWRhIGNvZGUgd2hlcmVcbiAgICAgICAgLy8gc29tZW9uZSBkb2VzIG5vdCBwdXQgc3BhY2VzIGFyb3VuZCA6XG4gICAgICAgIGJlZ2luOiAnXFxcXHMrOlxcXFxzKycsIGVuZDogJ1xcXFxzKig6PXw7fFxcXFwpfD0+fCQpJyxcbiAgICAgICAgLy8gZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIC8vIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gd29ya2Fyb3VuZCB0byBhdm9pZCBoaWdobGlnaHRpbmdcbiAgICAgICAgICAgICAgICAvLyBuYW1lZCBsb29wcyBhbmQgZGVjbGFyZSBibG9ja3NcbiAgICAgICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnbG9vcCBmb3IgZGVjbGFyZSBvdGhlcnMnLFxuICAgICAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIHByb3Blcmx5IGhpZ2hsaWdodCBhbGwgbW9kaWZpZXJzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ25vdCBudWxsIGNvbnN0YW50IGFjY2VzcyBmdW5jdGlvbiBwcm9jZWR1cmUgaW4gb3V0IGFsaWFzZWQgZXhjZXB0aW9uJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogSURfUkVHRVgsXG4gICAgICAgICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAgICAgJ2Fib3J0IGVsc2UgbmV3IHJldHVybiBhYnMgZWxzaWYgbm90IHJldmVyc2UgYWJzdHJhY3QgZW5kICcgK1xuICAgICAgICAgICAgICAgICdhY2NlcHQgZW50cnkgc2VsZWN0IGFjY2VzcyBleGNlcHRpb24gb2Ygc2VwYXJhdGUgYWxpYXNlZCBleGl0IG9yIHNvbWUgJyArXG4gICAgICAgICAgICAgICAgJ2FsbCBvdGhlcnMgc3VidHlwZSBhbmQgZm9yIG91dCBzeW5jaHJvbml6ZWQgYXJyYXkgZnVuY3Rpb24gb3ZlcnJpZGluZyAnICtcbiAgICAgICAgICAgICAgICAnYXQgdGFnZ2VkIGdlbmVyaWMgcGFja2FnZSB0YXNrIGJlZ2luIGdvdG8gcHJhZ21hIHRlcm1pbmF0ZSAnICtcbiAgICAgICAgICAgICAgICAnYm9keSBwcml2YXRlIHRoZW4gaWYgcHJvY2VkdXJlIHR5cGUgY2FzZSBpbiBwcm90ZWN0ZWQgY29uc3RhbnQgaW50ZXJmYWNlICcgK1xuICAgICAgICAgICAgICAgICdpcyByYWlzZSB1c2UgZGVjbGFyZSByYW5nZSBkZWxheSBsaW1pdGVkIHJlY29yZCB3aGVuIGRlbHRhIGxvb3AgcmVtIHdoaWxlICcgK1xuICAgICAgICAgICAgICAgICdkaWdpdHMgcmVuYW1lcyB3aXRoIGRvIG1vZCByZXF1ZXVlIHhvcicsXG4gICAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgICAgICdUcnVlIEZhbHNlJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIENPTU1FTlRTLFxuICAgICAgICAgICAgLy8gc3RyaW5ncyBcImZvb2JhclwiXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAvXCJcIi8sIHJlbGV2YW5jZTogMH1dXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gY2hhcmFjdGVycyAnJ1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBsaXRlcmFscyBhbHdheXMgY29udGFpbiBvbmUgY2hhclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46IC8nLicvXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIG51bWJlciBsaXRlcmFsc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46IE5VTUJFUl9SRSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gQXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICAgICAgYmVnaW46IFwiJ1wiICsgSURfUkVHRVgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIHBhY2thZ2UgZGVmaW5pdGlvbiwgbWF5YmUgaW5zaWRlIGdlbmVyaWNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGJ3aXRoXFxcXHMrKT8oXFxcXGJwcml2YXRlXFxcXHMrKT9cXFxcYnBhY2thZ2VcXFxccysoXFxcXGJib2R5XFxcXHMrKT8nLCBlbmQ6ICcoaXN8JCknLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiAncGFja2FnZSBib2R5JyxcbiAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24vcHJvY2VkdXJlIGRlY2xhcmF0aW9uL2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAvLyBtYXliZSBpbnNpZGUgZ2VuZXJpY1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnKFxcXFxiKHdpdGh8b3ZlcnJpZGluZylcXFxccyspP1xcXFxiKGZ1bmN0aW9ufHByb2NlZHVyZSlcXFxccysnLCBlbmQ6ICcoXFxcXGJpc3xcXFxcYndpdGh8XFxcXGJyZW5hbWVzfFxcXFwpXFxcXHMqOyknLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiAnb3ZlcnJpZGluZyBmdW5jdGlvbiBwcm9jZWR1cmUgd2l0aCBpcyByZW5hbWVzIHJldHVybicsXG4gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZS1tYXRjaCB0aGUgJ2Z1bmN0aW9uJyBrZXl3b3JkLCBzbyB0aGF0XG4gICAgICAgICAgICAgICAgLy8gdGhlIHRpdGxlIG1vZGUgYmVsb3cgbWF0Y2hlcyBvbmx5IGV4YWN0bHkgb25jZVxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgQ09NTUVOVFMsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5hbWUgb2YgdGhlIGZ1bmN0aW9uL3Byb2NlZHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGJ3aXRoXFxcXHMrKT9cXFxcYihmdW5jdGlvbnxwcm9jZWR1cmUpXFxcXHMrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogJyhcXFxcKHxcXFxccyt8JCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlsbGVnYWw6IEJBRF9DSEFSU1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAvLyAnc2VsZidcbiAgICAgICAgICAgICAgICAgICAgLy8gLy8gcGFyYW1ldGVyIHR5cGVzXG4gICAgICAgICAgICAgICAgICAgIFZBUl9ERUNMUyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYnJldHVyblxcXFxzKycsIGVuZDogJyhcXFxccyt8O3wkKScsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogJ3JldHVybicsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGRvbmUgd2l0aCBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlNcblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gbmV3IHR5cGUgZGVjbGFyYXRpb25zXG4gICAgICAgICAgICAgICAgLy8gbWF5YmUgaW5zaWRlIGdlbmVyaWNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKHN1Yik/dHlwZVxcXFxzKycsIGVuZDogJ1xcXFxzKycsXG4gICAgICAgICAgICAgICAga2V5d29yZHM6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogQkFEX0NIQVJTXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvLyBzZWUgY29tbWVudCBhYm92ZSB0aGUgZGVmaW5pdGlvblxuICAgICAgICAgICAgVkFSX0RFQ0xTLFxuXG4gICAgICAgICAgICAvLyBubyBtYXJrdXBcbiAgICAgICAgICAgIC8vIHJlbGV2YW5jZSBib29zdGVycyBmb3Igc21hbGwgc25pcHBldHNcbiAgICAgICAgICAgIC8vIHtiZWdpbjogJ1xcXFxzKj0+XFxcXHMqJ30sXG4gICAgICAgICAgICAvLyB7YmVnaW46ICdcXFxccyo6PVxcXFxzKid9LFxuICAgICAgICAgICAgLy8ge2JlZ2luOiAnXFxcXHMrOj1cXFxccysnfSxcbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgYnVpbHRJblR5cGVNb2RlID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKHZvaWR8Ym9vbHxpbnR8aW50OHxpbnQxNnxpbnQzMnxpbnQ2NHx1aW50fHVpbnQ4fHVpbnQxNnx1aW50MzJ8dWludDY0fHN0cmluZ3xyZWZ8YXJyYXl8ZG91YmxlfGZsb2F0fGF1dG98ZGljdGlvbmFyeSknXG4gIH07XG5cbiAgdmFyIG9iamVjdEhhbmRsZU1vZGUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1thLXpBLVowLTlfXStAJ1xuICB9O1xuXG4gIHZhciBnZW5lcmljTW9kZSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJzwnLCBlbmQ6ICc+JyxcbiAgICBjb250YWluczogWyBidWlsdEluVHlwZU1vZGUsIG9iamVjdEhhbmRsZU1vZGUgXVxuICB9O1xuXG4gIGJ1aWx0SW5UeXBlTW9kZS5jb250YWlucyA9IFsgZ2VuZXJpY01vZGUgXTtcbiAgb2JqZWN0SGFuZGxlTW9kZS5jb250YWlucyA9IFsgZ2VuZXJpY01vZGUgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsgJ2FzYycgXSxcblxuICAgIGtleXdvcmRzOlxuICAgICAgJ2ZvciBpbnwwIGJyZWFrIGNvbnRpbnVlIHdoaWxlIGRvfDAgcmV0dXJuIGlmIGVsc2UgY2FzZSBzd2l0Y2ggbmFtZXNwYWNlIGlzIGNhc3QgJyArXG4gICAgICAnb3IgYW5kIHhvciBub3QgZ2V0fDAgaW4gaW5vdXR8MTAgb3V0IG92ZXJyaWRlIHNldHwwIHByaXZhdGUgcHVibGljIGNvbnN0IGRlZmF1bHR8MCAnICtcbiAgICAgICdmaW5hbCBzaGFyZWQgZXh0ZXJuYWwgbWl4aW58MTAgZW51bSB0eXBlZGVmIGZ1bmNkZWYgdGhpcyBzdXBlciBpbXBvcnQgZnJvbSBpbnRlcmZhY2UgJyArXG4gICAgICAnYWJzdHJhY3R8MCB0cnkgY2F0Y2ggcHJvdGVjdGVkIGV4cGxpY2l0IHByb3BlcnR5JyxcblxuICAgIC8vIGF2b2lkIGNsb3NlIGRldGVjdGlvbiB3aXRoIEMjIGFuZCBKU1xuICAgIGlsbGVnYWw6ICcoXnVzaW5nXFxcXHMrW0EtWmEtejAtOV9cXFxcLl0rOyR8XFxcXGJmdW5jdGlvblxccypbXlxcXFwoXSknLFxuXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgLy8gJ3N0cmluZ3MnXG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcblxuICAgICAgeyAvLyBcInN0cmluZ3NcIlxuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXG4gICAgICAvLyBcIlwiXCJoZXJlZG9jIHN0cmluZ3NcIlwiXCJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsIC8vIHNpbmdsZS1saW5lIGNvbW1lbnRzXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLCAvLyBjb21tZW50IGJsb2Nrc1xuXG4gICAgICB7IC8vIGludGVyZmFjZSBvciBuYW1lc3BhY2UgZGVjbGFyYXRpb25cbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2ludGVyZmFjZSBuYW1lc3BhY2UnLCBlbmQ6ICd7JyxcbiAgICAgICAgaWxsZWdhbDogJ1s7LlxcXFwtXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyAvLyBpbnRlcmZhY2Ugb3IgbmFtZXNwYWNlIG5hbWVcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICBiZWdpbjogJ1thLXpBLVowLTlfXSsnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICB7IC8vIGNsYXNzIGRlY2xhcmF0aW9uXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcycsIGVuZDogJ3snLFxuICAgICAgICBpbGxlZ2FsOiAnWzsuXFxcXC1dJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IC8vIGNsYXNzIG5hbWVcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICBiZWdpbjogJ1thLXpBLVowLTlfXSsnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnWzosXVxcXFxzKicsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdbYS16QS1aMC05X10rJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgYnVpbHRJblR5cGVNb2RlLCAvLyBidWlsdC1pbiB0eXBlc1xuICAgICAgb2JqZWN0SGFuZGxlTW9kZSwgLy8gb2JqZWN0IGhhbmRsZXNcblxuICAgICAgeyAvLyBsaXRlcmFsc1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihudWxsfHRydWV8ZmFsc2UpJ1xuICAgICAgfSxcblxuICAgICAgeyAvLyBudW1iZXJzXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnKC0/KShcXFxcYjBbeFhdW2EtZkEtRjAtOV0rfChcXFxcYlxcXFxkKyhcXFxcLlxcXFxkKik/Zj98XFxcXC5cXFxcZCtmPykoW2VFXVstK10/XFxcXGQrZj8pPyknXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5VTUJFUiA9IHtjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJ1tcXFxcJCVdXFxcXGQrJ307XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydhcGFjaGVjb25mJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtjbGFzc05hbWU6ICdzZWN0aW9uJywgYmVnaW46ICc8Lz8nLCBlbmQ6ICc+J30sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAvXFx3Ky8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgLy8ga2V5d29yZHMgYXJlbuKAmXQgbmVlZGVkIGZvciBoaWdobGlnaHRpbmcgcGVyIHNlLCB0aGV5IG9ubHkgYm9vc3QgcmVsZXZhbmNlXG4gICAgICAgIC8vIGZvciBhIHZlcnkgZ2VuZXJhbGx5IGRlZmluZWQgbW9kZSAoc3RhcnRzIHdpdGggYSB3b3JkLCBlbmRzIHdpdGggbGluZS1lbmRcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICBub21hcmt1cDpcbiAgICAgICAgICAgICdvcmRlciBkZW55IGFsbG93IHNldGVudiByZXdyaXRlcnVsZSByZXdyaXRlZW5naW5lIHJld3JpdGVjb25kIGRvY3VtZW50cm9vdCAnICtcbiAgICAgICAgICAgICdzZXRoYW5kbGVyIGVycm9yZG9jdW1lbnQgbG9hZG1vZHVsZSBvcHRpb25zIGhlYWRlciBsaXN0ZW4gc2VydmVycm9vdCAnICtcbiAgICAgICAgICAgICdzZXJ2ZXJuYW1lJ1xuICAgICAgICB9LFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGxpdGVyYWw6ICdvbiBvZmYgYWxsJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHNcXFxcWycsIGVuZDogJ1xcXFxdJCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdbXFxcXCQlXVxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgICAgICAgICAgICBjb250YWluczogWydzZWxmJywgTlVNQkVSXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE5VTUJFUixcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC9cXFMvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RSSU5HID0gaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiAnJ30pO1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICBjb250YWluczogWydzZWxmJywgaGxqcy5DX05VTUJFUl9NT0RFLCBTVFJJTkddXG4gIH07XG4gIHZhciBDT01NRU5UX01PREVfMSA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuICB2YXIgQ09NTUVOVF9NT0RFXzIgPSBobGpzLkNPTU1FTlQoXG4gICAgJ1xcXFwoXFxcXConLFxuICAgICdcXFxcKlxcXFwpJyxcbiAgICB7XG4gICAgICBjb250YWluczogWydzZWxmJywgQ09NTUVOVF9NT0RFXzFdIC8vYWxsb3cgbmVzdGluZ1xuICAgIH1cbiAgKTtcbiAgdmFyIENPTU1FTlRTID0gW1xuICAgIENPTU1FTlRfTU9ERV8xLFxuICAgIENPTU1FTlRfTU9ERV8yLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnb3Nhc2NyaXB0J10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhYm91dCBhYm92ZSBhZnRlciBhZ2FpbnN0IGFuZCBhcm91bmQgYXMgYXQgYmFjayBiZWZvcmUgYmVnaW5uaW5nICcgK1xuICAgICAgICAnYmVoaW5kIGJlbG93IGJlbmVhdGggYmVzaWRlIGJldHdlZW4gYnV0IGJ5IGNvbnNpZGVyaW5nICcgK1xuICAgICAgICAnY29udGFpbiBjb250YWlucyBjb250aW51ZSBjb3B5IGRpdiBkb2VzIGVpZ2h0aCBlbHNlIGVuZCBlcXVhbCAnICtcbiAgICAgICAgJ2VxdWFscyBlcnJvciBldmVyeSBleGl0IGZpZnRoIGZpcnN0IGZvciBmb3VydGggZnJvbSBmcm9udCAnICtcbiAgICAgICAgJ2dldCBnaXZlbiBnbG9iYWwgaWYgaWdub3JpbmcgaW4gaW50byBpcyBpdCBpdHMgbGFzdCBsb2NhbCBtZSAnICtcbiAgICAgICAgJ21pZGRsZSBtb2QgbXkgbmludGggbm90IG9mIG9uIG9udG8gb3Igb3ZlciBwcm9wIHByb3BlcnR5IHB1dCByZWYgJyArXG4gICAgICAgICdyZWZlcmVuY2UgcmVwZWF0IHJldHVybmluZyBzY3JpcHQgc2Vjb25kIHNldCBzZXZlbnRoIHNpbmNlICcgK1xuICAgICAgICAnc2l4dGggc29tZSB0ZWxsIHRlbnRoIHRoYXQgdGhlfDAgdGhlbiB0aGlyZCB0aHJvdWdoIHRocnUgJyArXG4gICAgICAgICd0aW1lb3V0IHRpbWVzIHRvIHRyYW5zYWN0aW9uIHRyeSB1bnRpbCB3aGVyZSB3aGlsZSB3aG9zZSB3aXRoICcgK1xuICAgICAgICAnd2l0aG91dCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnQXBwbGVTY3JpcHQgZmFsc2UgbGluZWZlZWQgcmV0dXJuIHBpIHF1b3RlIHJlc3VsdCBzcGFjZSB0YWIgdHJ1ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2FsaWFzIGFwcGxpY2F0aW9uIGJvb2xlYW4gY2xhc3MgY29uc3RhbnQgZGF0ZSBmaWxlIGludGVnZXIgbGlzdCAnICtcbiAgICAgICAgJ251bWJlciByZWFsIHJlY29yZCBzdHJpbmcgdGV4dCAnICtcbiAgICAgICAgJ2FjdGl2YXRlIGJlZXAgY291bnQgZGVsYXkgbGF1bmNoIGxvZyBvZmZzZXQgcmVhZCByb3VuZCAnICtcbiAgICAgICAgJ3J1biBzYXkgc3VtbWFyaXplIHdyaXRlICcgK1xuICAgICAgICAnY2hhcmFjdGVyIGNoYXJhY3RlcnMgY29udGVudHMgZGF5IGZyb250bW9zdCBpZCBpdGVtIGxlbmd0aCAnICtcbiAgICAgICAgJ21vbnRoIG5hbWUgcGFyYWdyYXBoIHBhcmFncmFwaHMgcmVzdCByZXZlcnNlIHJ1bm5pbmcgdGltZSB2ZXJzaW9uICcgK1xuICAgICAgICAnd2Vla2RheSB3b3JkIHdvcmRzIHllYXInXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOlxuICAgICAgICAgICdcXFxcYihjbGlwYm9hcmQgaW5mb3x0aGUgY2xpcGJvYXJkfGluZm8gZm9yfGxpc3QgKGRpc2tzfGZvbGRlcil8JyArXG4gICAgICAgICAgJ21vdW50IHZvbHVtZXxwYXRoIHRvfChjbG9zZXxvcGVuIGZvcikgYWNjZXNzfChnZXR8c2V0KSBlb2Z8JyArXG4gICAgICAgICAgJ2N1cnJlbnQgZGF0ZXxkbyBzaGVsbCBzY3JpcHR8Z2V0IHZvbHVtZSBzZXR0aW5nc3xyYW5kb20gbnVtYmVyfCcgK1xuICAgICAgICAgICdzZXQgdm9sdW1lfHN5c3RlbSBhdHRyaWJ1dGV8c3lzdGVtIGluZm98dGltZSB0byBHTVR8JyArXG4gICAgICAgICAgJyhsb2FkfHJ1bnxzdG9yZSkgc2NyaXB0fHNjcmlwdGluZyBjb21wb25lbnRzfCcgK1xuICAgICAgICAgICdBU0NJSSAoY2hhcmFjdGVyfG51bWJlcil8bG9jYWxpemVkIHN0cmluZ3wnICtcbiAgICAgICAgICAnY2hvb3NlIChhcHBsaWNhdGlvbnxjb2xvcnxmaWxlfGZpbGUgbmFtZXwnICtcbiAgICAgICAgICAnZm9sZGVyfGZyb20gbGlzdHxyZW1vdGUgYXBwbGljYXRpb258VVJMKXwnICtcbiAgICAgICAgICAnZGlzcGxheSAoYWxlcnR8ZGlhbG9nKSlcXFxcYnxeXFxcXHMqcmV0dXJuXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgJ1xcXFxiKHRleHQgaXRlbSBkZWxpbWl0ZXJzfGN1cnJlbnQgYXBwbGljYXRpb258bWlzc2luZyB2YWx1ZSlcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjpcbiAgICAgICAgICAnXFxcXGIoYXBhcnQgZnJvbXxhc2lkZSBmcm9tfGluc3RlYWQgb2Z8b3V0IG9mfGdyZWF0ZXIgdGhhbnwnICtcbiAgICAgICAgICBcImlzbid0fChkb2Vzbid0fGRvZXMgbm90KSAoZXF1YWx8Y29tZSBiZWZvcmV8Y29tZSBhZnRlcnxjb250YWluKXxcIiArXG4gICAgICAgICAgJyhncmVhdGVyfGxlc3MpIHRoYW4oIG9yIGVxdWFsKT98KHN0YXJ0cz98ZW5kc3xiZWdpbnM/KSB3aXRofCcgK1xuICAgICAgICAgICdjb250YWluZWQgYnl8Y29tZXMgKGJlZm9yZXxhZnRlcil8YSAocmVmfHJlZmVyZW5jZSl8UE9TSVggZmlsZXwnICtcbiAgICAgICAgICAnUE9TSVggcGF0aHwoZGF0ZXx0aW1lKSBzdHJpbmd8cXVvdGVkIGZvcm0pXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnb24nLFxuICAgICAgICBpbGxlZ2FsOiAnWyR7PTtcXFxcbl0nLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCBQQVJBTVNdXG4gICAgICB9XG4gICAgXS5jb25jYXQoQ09NTUVOVFMpLFxuICAgIGlsbGVnYWw6ICcvL3wtPnw9PnxcXFxcW1xcXFxbJ1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1tBLVphLXpfXVswLTlBLVphLXpfXSonO1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdpZiBmb3Igd2hpbGUgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ0JhY2tTbGFzaCBEb3VibGVRdW90ZSBmYWxzZSBGb3J3YXJkU2xhc2ggSW5maW5pdHkgTmFOIE5ld0xpbmUgbnVsbCBQSSBTaW5nbGVRdW90ZSBUYWIgVGV4dEZvcm1hdHRpbmcgdHJ1ZSB1bmRlZmluZWQnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0FicyBBY29zIEFuZ2xlIEF0dGFjaG1lbnRzIEFyZWEgQXJlYUdlb2RldGljIEFzaW4gQXRhbiBBdGFuMiBBdmVyYWdlIEJlYXJpbmcgQm9vbGVhbiBCdWZmZXIgQnVmZmVyR2VvZGV0aWMgJyArXG4gICAgICAnQ2VpbCBDZW50cm9pZCBDbGlwIENvbnNvbGUgQ29uc3RyYWluIENvbnRhaW5zIENvcyBDb3VudCBDcm9zc2VzIEN1dCBEYXRlIERhdGVBZGQgJyArXG4gICAgICAnRGF0ZURpZmYgRGF5IERlY29kZSBEZWZhdWx0VmFsdWUgRGljdGlvbmFyeSBEaWZmZXJlbmNlIERpc2pvaW50IERpc3RhbmNlIERpc3RhbmNlR2VvZGV0aWMgRGlzdGluY3QgJyArXG4gICAgICAnRG9tYWluQ29kZSBEb21haW5OYW1lIEVxdWFscyBFeHAgRXh0ZW50IEZlYXR1cmUgRmVhdHVyZVNldCBGZWF0dXJlU2V0QnlBc3NvY2lhdGlvbiBGZWF0dXJlU2V0QnlJZCBGZWF0dXJlU2V0QnlQb3J0YWxJdGVtICcgK1xuICAgICAgJ0ZlYXR1cmVTZXRCeVJlbGF0aW9uc2hpcE5hbWUgRmVhdHVyZVNldEJ5VGl0bGUgRmVhdHVyZVNldEJ5VXJsIEZpbHRlciBGaXJzdCBGbG9vciBHZW9tZXRyeSBHcm91cEJ5IEd1aWQgSGFzS2V5IEhvdXIgSUlmIEluZGV4T2YgJyArXG4gICAgICAnSW50ZXJzZWN0aW9uIEludGVyc2VjdHMgSXNFbXB0eSBJc05hbiBJc1NlbGZJbnRlcnNlY3RpbmcgTGVuZ3RoIExlbmd0aEdlb2RldGljIExvZyBNYXggTWVhbiBNaWxsaXNlY29uZCBNaW4gTWludXRlIE1vbnRoICcgK1xuICAgICAgJ011bHRpUGFydFRvU2luZ2xlUGFydCBNdWx0aXBvaW50IE5leHRTZXF1ZW5jZVZhbHVlIE5vdyBOdW1iZXIgT3JkZXJCeSBPdmVybGFwcyBQb2ludCBQb2x5Z29uICcgK1xuICAgICAgJ1BvbHlsaW5lIFBvcnRhbCBQb3cgUmFuZG9tIFJlbGF0ZSBSZXZlcnNlIFJpbmdJc0Nsb2NrV2lzZSBSb3VuZCBTZWNvbmQgU2V0R2VvbWV0cnkgU2luIFNvcnQgU3FydCBTdGRldiBTdW0gJyArXG4gICAgICAnU3ltbWV0cmljRGlmZmVyZW5jZSBUYW4gVGV4dCBUaW1lc3RhbXAgVG9kYXkgVG9Mb2NhbCBUb3AgVG91Y2hlcyBUb1VUQyBUcmFja0N1cnJlbnRUaW1lICcgK1xuICAgICAgJ1RyYWNrR2VvbWV0cnlXaW5kb3cgVHJhY2tJbmRleCBUcmFja1N0YXJ0VGltZSBUcmFja1dpbmRvdyBUeXBlT2YgVW5pb24gVXJsRW5jb2RlIFZhcmlhbmNlICcgK1xuICAgICAgJ1dlZWtkYXkgV2hlbiBXaXRoaW4gWWVhciAnXG4gIH07XG4gIHZhciBFWFBSRVNTSU9OUztcbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFxcXCRbZGF0YXN0b3JlfGZlYXR1cmV8bGF5ZXJ8bWFwfG1lYXN1cmV8c291cmNlZmVhdHVyZXxzb3VyY2VsYXllcnx0YXJnZXRmZWF0dXJlfHRhcmdldGxheWVyfHZhbHVlfHZpZXddKydcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtiQl1bMDFdKyknIH0sXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtvT11bMC03XSspJyB9LFxuICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ1xcXFwkXFxcXHsnLCBlbmQ6ICdcXFxcfScsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXSAgLy8gZGVmaW5lZCBsYXRlclxuICB9O1xuICB2YXIgVEVNUExBVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFNVQlNUXG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucyA9IFtcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgTlVNQkVSLFxuICAgIGhsanMuUkVHRVhQX01PREVcbiAgXTtcbiAgdmFyIFBBUkFNU19DT05UQUlOUyA9IFNVQlNULmNvbnRhaW5zLmNvbmNhdChbXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREVcbiAgXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2FyY2FkZSddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIFRFTVBMQVRFX1NUUklORyxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBTWU1CT0wsXG4gICAgICBOVU1CRVIsXG4gICAgICB7IC8vIG9iamVjdCBhdHRyIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogL1t7LF1cXHMqLywgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBJREVOVF9SRSArICdcXFxccyo6JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW3tjbGFzc05hbWU6ICdhdHRyJywgYmVnaW46IElERU5UX1JFLCByZWxldmFuY2U6IDB9XVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgLy8gXCJ2YWx1ZVwiIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogJygnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIocmV0dXJuKVxcXFxiKVxcXFxzKicsXG4gICAgICAgIGtleXdvcmRzOiAncmV0dXJuJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLlJFR0VYUF9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFxcXFwoLio/XFxcXCl8JyArIElERU5UX1JFICsgJylcXFxccyo9PicsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqPT4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IElERU5UX1JFXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcKFxccypcXCkvLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05UQUlOU1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBJREVOVF9SRX0pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05UQUlOU1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogL1xcW3wlL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbKC5dL1xuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMoPyEhKS9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDUFBfUFJJTUlUSVZFX1RZUEVTID0ge1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIGJlZ2luOiAnXFxcXGJbYS16XFxcXGRfXSpfdFxcXFxiJ1xuICB9O1xuXG4gIC8vIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lc2NhcGVcbiAgLy8gXFxcXCBcXHggXFx4RkYgXFx1MjgzNyBcXHUwMDMyMzc0NyBcXDM3NFxuICB2YXIgQ0hBUkFDVEVSX0VTQ0FQRVMgPSAnXFxcXFxcXFwoeFswLTlBLUZhLWZdezJ9fHVbMC05QS1GYS1mXXs0LDh9fFswLTddezN9fFxcXFxTKSdcbiAgdmFyIFNUUklOR1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VXxMKT9cIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VXxMKT9cXCcoJyArIENIQVJBQ1RFUl9FU0NBUEVTICsgXCJ8LilcIiwgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJy4nXG4gICAgICB9LFxuICAgICAgeyBiZWdpbjogLyg/OnU4P3xVfEwpP1JcIihbXigpXFxcXCBdezAsMTZ9KVxcKCg/Oi58XFxuKSo/XFwpXFwxXCIvIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBiWzAxXFwnXSspJyB9LFxuICAgICAgeyBiZWdpbjogJygtPylcXFxcYihbXFxcXGRcXCddKyhcXFxcLltcXFxcZFxcJ10qKT98XFxcXC5bXFxcXGRcXCddKykodXxVfGx8THx1bHxVTHxmfEZ8YnxCKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XFwnXSt8KFxcXFxiW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKFtlRV1bLStdP1tcXFxcZFxcJ10rKT8pJyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgUFJFUFJPQ0VTU09SID0gICAgICAge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAvI1xccypbYS16XStcXGIvLCBlbmQ6IC8kLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgJ21ldGEta2V5d29yZCc6XG4gICAgICAgICdpZiBlbHNlIGVsaWYgZW5kaWYgZGVmaW5lIHVuZGVmIHdhcm5pbmcgZXJyb3IgbGluZSAnICtcbiAgICAgICAgJ3ByYWdtYSBpZmRlZiBpZm5kZWYgaW5jbHVkZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxcXFxcbi8sIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChTVFJJTkdTLCB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEtc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC88W15cXG4+XSo+LywgZW5kOiAvJC8sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcblxuICB2YXIgRlVOQ1RJT05fVElUTEUgPSBobGpzLklERU5UX1JFICsgJ1xcXFxzKlxcXFwoJztcblxuICB2YXIgQ1BQX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6ICdpbnQgZmxvYXQgd2hpbGUgcHJpdmF0ZSBjaGFyIGNhdGNoIGltcG9ydCBtb2R1bGUgZXhwb3J0IHZpcnR1YWwgb3BlcmF0b3Igc2l6ZW9mICcgK1xuICAgICAgJ2R5bmFtaWNfY2FzdHwxMCB0eXBlZGVmIGNvbnN0X2Nhc3R8MTAgY29uc3QgZm9yIHN0YXRpY19jYXN0fDEwIHVuaW9uIG5hbWVzcGFjZSAnICtcbiAgICAgICd1bnNpZ25lZCBsb25nIHZvbGF0aWxlIHN0YXRpYyBwcm90ZWN0ZWQgYm9vbCB0ZW1wbGF0ZSBtdXRhYmxlIGlmIHB1YmxpYyBmcmllbmQgJyArXG4gICAgICAnZG8gZ290byBhdXRvIHZvaWQgZW51bSBlbHNlIGJyZWFrIGV4dGVybiB1c2luZyBhc20gY2FzZSB0eXBlaWQgJyArXG4gICAgICAnc2hvcnQgcmVpbnRlcnByZXRfY2FzdHwxMCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCBzaWduZWQgdHlwZW5hbWUgdHJ5IHRoaXMgJyArXG4gICAgICAnc3dpdGNoIGNvbnRpbnVlIGlubGluZSBkZWxldGUgYWxpZ25vZiBjb25zdGV4cHIgY29uc3RldmFsIGNvbnN0aW5pdCBkZWNsdHlwZSAnICtcbiAgICAgICdjb25jZXB0IGNvX2F3YWl0IGNvX3JldHVybiBjb195aWVsZCByZXF1aXJlcyAnICtcbiAgICAgICdub2V4Y2VwdCBzdGF0aWNfYXNzZXJ0IHRocmVhZF9sb2NhbCByZXN0cmljdCBfQm9vbCBjb21wbGV4IF9Db21wbGV4IF9JbWFnaW5hcnkgJyArXG4gICAgICAnYXRvbWljX2Jvb2wgYXRvbWljX2NoYXIgYXRvbWljX3NjaGFyICcgK1xuICAgICAgJ2F0b21pY191Y2hhciBhdG9taWNfc2hvcnQgYXRvbWljX3VzaG9ydCBhdG9taWNfaW50IGF0b21pY191aW50IGF0b21pY19sb25nIGF0b21pY191bG9uZyBhdG9taWNfbGxvbmcgJyArXG4gICAgICAnYXRvbWljX3VsbG9uZyBuZXcgdGhyb3cgcmV0dXJuICcgK1xuICAgICAgJ2FuZCBvciBub3QnLFxuICAgIGJ1aWx0X2luOiAnc3RkIHN0cmluZyB3c3RyaW5nIGNpbiBjb3V0IGNlcnIgY2xvZyBzdGRpbiBzdGRvdXQgc3RkZXJyIHN0cmluZ3N0cmVhbSBpc3RyaW5nc3RyZWFtIG9zdHJpbmdzdHJlYW0gJyArXG4gICAgICAnYXV0b19wdHIgZGVxdWUgbGlzdCBxdWV1ZSBzdGFjayB2ZWN0b3IgbWFwIHNldCBiaXRzZXQgbXVsdGlzZXQgbXVsdGltYXAgdW5vcmRlcmVkX3NldCAnICtcbiAgICAgICd1bm9yZGVyZWRfbWFwIHVub3JkZXJlZF9tdWx0aXNldCB1bm9yZGVyZWRfbXVsdGltYXAgYXJyYXkgc2hhcmVkX3B0ciBhYm9ydCBhYnMgYWNvcyAnICtcbiAgICAgICdhc2luIGF0YW4yIGF0YW4gY2FsbG9jIGNlaWwgY29zaCBjb3MgZXhpdCBleHAgZmFicyBmbG9vciBmbW9kIGZwcmludGYgZnB1dHMgZnJlZSBmcmV4cCAnICtcbiAgICAgICdmc2NhbmYgZnV0dXJlIGlzYWxudW0gaXNhbHBoYSBpc2NudHJsIGlzZGlnaXQgaXNncmFwaCBpc2xvd2VyIGlzcHJpbnQgaXNwdW5jdCBpc3NwYWNlIGlzdXBwZXIgJyArXG4gICAgICAnaXN4ZGlnaXQgdG9sb3dlciB0b3VwcGVyIGxhYnMgbGRleHAgbG9nMTAgbG9nIG1hbGxvYyByZWFsbG9jIG1lbWNociBtZW1jbXAgbWVtY3B5IG1lbXNldCBtb2RmIHBvdyAnICtcbiAgICAgICdwcmludGYgcHV0Y2hhciBwdXRzIHNjYW5mIHNpbmggc2luIHNucHJpbnRmIHNwcmludGYgc3FydCBzc2NhbmYgc3RyY2F0IHN0cmNociBzdHJjbXAgJyArXG4gICAgICAnc3RyY3B5IHN0cmNzcG4gc3RybGVuIHN0cm5jYXQgc3RybmNtcCBzdHJuY3B5IHN0cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHRhbmggdGFuICcgK1xuICAgICAgJ3ZmcHJpbnRmIHZwcmludGYgdnNwcmludGYgZW5kbCBpbml0aWFsaXplcl9saXN0IHVuaXF1ZV9wdHInLFxuICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIG51bGxwdHIgTlVMTCdcbiAgfTtcblxuICB2YXIgRVhQUkVTU0lPTl9DT05UQUlOUyA9IFtcbiAgICBDUFBfUFJJTUlUSVZFX1RZUEVTLFxuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIE5VTUJFUlMsXG4gICAgU1RSSU5HU1xuICBdO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjJywgJ2NjJywgJ2gnLCAnYysrJywgJ2grKycsICdocHAnLCAnaGgnLCAnaHh4JywgJ2N4eCddLFxuICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoW1xuICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKGRlcXVlfGxpc3R8cXVldWV8c3RhY2t8dmVjdG9yfG1hcHxzZXR8Yml0c2V0fG11bHRpc2V0fG11bHRpbWFwfHVub3JkZXJlZF9tYXB8dW5vcmRlcmVkX3NldHx1bm9yZGVyZWRfbXVsdGlzZXR8dW5vcmRlcmVkX211bHRpbWFwfGFycmF5KVxcXFxzKjwnLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZicsIENQUF9QUklNSVRJVkVfVFlQRVNdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OicsXG4gICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFRoaXMgbW9kZSBjb3ZlcnMgZXhwcmVzc2lvbiBjb250ZXh0IHdoZXJlIHdlIGNhbid0IGV4cGVjdCBhIGZ1bmN0aW9uXG4gICAgICAgIC8vIGRlZmluaXRpb24gYW5kIHNob3VsZG4ndCBoaWdobGlnaHQgYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlIG9uZTpcbiAgICAgICAgLy8gYHJldHVybiBzb21lKClgLCBgZWxzZSBpZigpYCwgYCh4KnN1bSgxLCAyKSlgXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAvPS8sIGVuZDogLzsvfSxcbiAgICAgICAgICB7YmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvfSxcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ25ldyB0aHJvdyByZXR1cm4gZWxzZScsIGVuZDogLzsvfVxuICAgICAgICBdLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgICAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoWydzZWxmJ10pLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdKSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLklERU5UX1JFICsgJ1tcXFxcKiZcXFxcc10rKSsnICsgRlVOQ1RJT05fVElUTEUsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcd1xcc1xcKiZdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogRlVOQ1RJT05fVElUTEUsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlRJVExFX01PREVdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HUyxcbiAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgQ1BQX1BSSU1JVElWRV9UWVBFUyxcbiAgICAgICAgICAgICAgLy8gQ291bnQgbWF0Y2hpbmcgcGFyZW50aGVzZXMuXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgICAgICBTVFJJTkdTLFxuICAgICAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgICAgIENQUF9QUklNSVRJVkVfVFlQRVNcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIFBSRVBST0NFU1NPUlxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBzdHJ1Y3QnLCBlbmQ6IC9bezs6XS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2JlZ2luOiAvPC8sIGVuZDogLz4vLCBjb250YWluczogWydzZWxmJ119LCAvLyBza2lwIGdlbmVyaWMgc3R1ZmZcbiAgICAgICAgICBobGpzLlRJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF0pLFxuICAgIGV4cG9ydHM6IHtcbiAgICAgIHByZXByb2Nlc3NvcjogUFJFUFJPQ0VTU09SLFxuICAgICAgc3RyaW5nczogU1RSSU5HUyxcbiAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFNcbiAgICB9XG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG5cdHZhciBBUkRVSU5PX0tXID0ge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2Jvb2xlYW4gYnl0ZSB3b3JkIFN0cmluZycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3NldHVwIGxvb3AnICtcbiAgICAgICAgJ0tleWJvYXJkQ29udHJvbGxlciBNb3VzZUNvbnRyb2xsZXIgU29mdHdhcmVTZXJpYWwgJyArXG4gICAgICAgICdFdGhlcm5ldFNlcnZlciBFdGhlcm5ldENsaWVudCBMaXF1aWRDcnlzdGFsICcgK1xuICAgICAgICAnUm9ib3RDb250cm9sIEdTTVZvaWNlQ2FsbCBFdGhlcm5ldFVEUCBFc3Bsb3JhVEZUICcgK1xuICAgICAgICAnSHR0cENsaWVudCBSb2JvdE1vdG9yIFdpRmlDbGllbnQgR1NNU2Nhbm5lciAnICtcbiAgICAgICAgJ0ZpbGVTeXN0ZW0gU2NoZWR1bGVyIEdTTVNlcnZlciBZdW5DbGllbnQgWXVuU2VydmVyICcgK1xuICAgICAgICAnSVBBZGRyZXNzIEdTTUNsaWVudCBHU01Nb2RlbSBLZXlib2FyZCBFdGhlcm5ldCAnICtcbiAgICAgICAgJ0NvbnNvbGUgR1NNQmFuZCBFc3Bsb3JhIFN0ZXBwZXIgUHJvY2VzcyAnICtcbiAgICAgICAgJ1dpRmlVRFAgR1NNX1NNUyBNYWlsYm94IFVTQkhvc3QgRmlybWF0YSBQSW1hZ2UgJyArXG4gICAgICAgICdDbGllbnQgU2VydmVyIEdTTVBJTiBGaWxlSU8gQnJpZGdlIFNlcmlhbCAnICtcbiAgICAgICAgJ0VFUFJPTSBTdHJlYW0gTW91c2UgQXVkaW8gU2Vydm8gRmlsZSBUYXNrICcgK1xuICAgICAgICAnR1BSUyBXaUZpIFdpcmUgVEZUIEdTTSBTUEkgU0QgJyArXG4gICAgICAgICdydW5TaGVsbENvbW1hbmRBc3luY2hyb25vdXNseSBhbmFsb2dXcml0ZVJlc29sdXRpb24gJyArXG4gICAgICAgICdyZXRyaWV2ZUNhbGxpbmdOdW1iZXIgcHJpbnRGaXJtd2FyZVZlcnNpb24gJyArXG4gICAgICAgICdhbmFsb2dSZWFkUmVzb2x1dGlvbiBzZW5kRGlnaXRhbFBvcnRQYWlyICcgK1xuICAgICAgICAnbm9MaXN0ZW5PbkxvY2FsaG9zdCByZWFkSm95c3RpY2tCdXR0b24gc2V0RmlybXdhcmVWZXJzaW9uICcgK1xuICAgICAgICAncmVhZEpveXN0aWNrU3dpdGNoIHNjcm9sbERpc3BsYXlSaWdodCBnZXRWb2ljZUNhbGxTdGF0dXMgJyArXG4gICAgICAgICdzY3JvbGxEaXNwbGF5TGVmdCB3cml0ZU1pY3Jvc2Vjb25kcyBkZWxheU1pY3Jvc2Vjb25kcyAnICtcbiAgICAgICAgJ2JlZ2luVHJhbnNtaXNzaW9uIGdldFNpZ25hbFN0cmVuZ3RoIHJ1bkFzeW5jaHJvbm91c2x5ICcgK1xuICAgICAgICAnZ2V0QXN5bmNocm9ub3VzbHkgbGlzdGVuT25Mb2NhbGhvc3QgZ2V0Q3VycmVudENhcnJpZXIgJyArXG4gICAgICAgICdyZWFkQWNjZWxlcm9tZXRlciBtZXNzYWdlQXZhaWxhYmxlIHNlbmREaWdpdGFsUG9ydHMgJyArXG4gICAgICAgICdsaW5lRm9sbG93Q29uZmlnIGNvdW50cnlOYW1lV3JpdGUgcnVuU2hlbGxDb21tYW5kICcgK1xuICAgICAgICAncmVhZFN0cmluZ1VudGlsIHJld2luZERpcmVjdG9yeSByZWFkVGVtcGVyYXR1cmUgJyArXG4gICAgICAgICdzZXRDbG9ja0RpdmlkZXIgcmVhZExpZ2h0U2Vuc29yIGVuZFRyYW5zbWlzc2lvbiAnICtcbiAgICAgICAgJ2FuYWxvZ1JlZmVyZW5jZSBkZXRhY2hJbnRlcnJ1cHQgY291bnRyeU5hbWVSZWFkICcgK1xuICAgICAgICAnYXR0YWNoSW50ZXJydXB0IGVuY3J5cHRpb25UeXBlIHJlYWRCeXRlc1VudGlsICcgK1xuICAgICAgICAncm9ib3ROYW1lV3JpdGUgcmVhZE1pY3JvcGhvbmUgcm9ib3ROYW1lUmVhZCBjaXR5TmFtZVdyaXRlICcgK1xuICAgICAgICAndXNlck5hbWVXcml0ZSByZWFkSm95c3RpY2tZIHJlYWRKb3lzdGlja1ggbW91c2VSZWxlYXNlZCAnICtcbiAgICAgICAgJ29wZW5OZXh0RmlsZSBzY2FuTmV0d29ya3Mgbm9JbnRlcnJ1cHRzIGRpZ2l0YWxXcml0ZSAnICtcbiAgICAgICAgJ2JlZ2luU3BlYWtlciBtb3VzZVByZXNzZWQgaXNBY3Rpb25Eb25lIG1vdXNlRHJhZ2dlZCAnICtcbiAgICAgICAgJ2Rpc3BsYXlMb2dvcyBub0F1dG9zY3JvbGwgYWRkUGFyYW1ldGVyIHJlbW90ZU51bWJlciAnICtcbiAgICAgICAgJ2dldE1vZGlmaWVycyBrZXlib2FyZFJlYWQgdXNlck5hbWVSZWFkIHdhaXRDb250aW51ZSAnICtcbiAgICAgICAgJ3Byb2Nlc3NJbnB1dCBwYXJzZUNvbW1hbmQgcHJpbnRWZXJzaW9uIHJlYWROZXR3b3JrcyAnICtcbiAgICAgICAgJ3dyaXRlTWVzc2FnZSBibGlua1ZlcnNpb24gY2l0eU5hbWVSZWFkIHJlYWRNZXNzYWdlICcgK1xuICAgICAgICAnc2V0RGF0YU1vZGUgcGFyc2VQYWNrZXQgaXNMaXN0ZW5pbmcgc2V0Qml0T3JkZXIgJyArXG4gICAgICAgICdiZWdpblBhY2tldCBpc0RpcmVjdG9yeSBtb3RvcnNXcml0ZSBkcmF3Q29tcGFzcyAnICtcbiAgICAgICAgJ2RpZ2l0YWxSZWFkIGNsZWFyU2NyZWVuIHNlcmlhbEV2ZW50IHJpZ2h0VG9MZWZ0ICcgK1xuICAgICAgICAnc2V0VGV4dFNpemUgbGVmdFRvUmlnaHQgcmVxdWVzdEZyb20ga2V5UmVsZWFzZWQgJyArXG4gICAgICAgICdjb21wYXNzUmVhZCBhbmFsb2dXcml0ZSBpbnRlcnJ1cHRzIFdpRmlTZXJ2ZXIgJyArXG4gICAgICAgICdkaXNjb25uZWN0IHBsYXlNZWxvZHkgcGFyc2VGbG9hdCBhdXRvc2Nyb2xsICcgK1xuICAgICAgICAnZ2V0UElOVXNlZCBzZXRQSU5Vc2VkIHNldFRpbWVvdXQgc2VuZEFuYWxvZyAnICtcbiAgICAgICAgJ3JlYWRTbGlkZXIgYW5hbG9nUmVhZCBiZWdpbldyaXRlIGNyZWF0ZUNoYXIgJyArXG4gICAgICAgICdtb3RvcnNTdG9wIGtleVByZXNzZWQgdGVtcG9Xcml0ZSByZWFkQnV0dG9uICcgK1xuICAgICAgICAnc3VibmV0TWFzayBkZWJ1Z1ByaW50IG1hY0FkZHJlc3Mgd3JpdGVHcmVlbiAnICtcbiAgICAgICAgJ3JhbmRvbVNlZWQgYXR0YWNoR1BSUyByZWFkU3RyaW5nIHNlbmRTdHJpbmcgJyArXG4gICAgICAgICdyZW1vdGVQb3J0IHJlbGVhc2VBbGwgbW91c2VNb3ZlZCBiYWNrZ3JvdW5kICcgK1xuICAgICAgICAnZ2V0WENoYW5nZSBnZXRZQ2hhbmdlIGFuc3dlckNhbGwgZ2V0UmVzdWx0ICcgK1xuICAgICAgICAndm9pY2VDYWxsIGVuZFBhY2tldCBjb25zdHJhaW4gZ2V0U29ja2V0IHdyaXRlSlNPTiAnICtcbiAgICAgICAgJ2dldEJ1dHRvbiBhdmFpbGFibGUgY29ubmVjdGVkIGZpbmRVbnRpbCByZWFkQnl0ZXMgJyArXG4gICAgICAgICdleGl0VmFsdWUgcmVhZEdyZWVuIHdyaXRlQmx1ZSBzdGFydExvb3AgSVBBZGRyZXNzICcgK1xuICAgICAgICAnaXNQcmVzc2VkIHNlbmRTeXNleCBwYXVzZU1vZGUgZ2F0ZXdheUlQIHNldEN1cnNvciAnICtcbiAgICAgICAgJ2dldE9lbUtleSB0dW5lV3JpdGUgbm9EaXNwbGF5IGxvYWRJbWFnZSBzd2l0Y2hQSU4gJyArXG4gICAgICAgICdvblJlcXVlc3Qgb25SZWNlaXZlIGNoYW5nZVBJTiBwbGF5RmlsZSBub0J1ZmZlciAnICtcbiAgICAgICAgJ3BhcnNlSW50IG92ZXJmbG93IGNoZWNrUElOIGtub2JSZWFkIGJlZ2luVEZUICcgK1xuICAgICAgICAnYml0Q2xlYXIgdXBkYXRlSVIgYml0V3JpdGUgcG9zaXRpb24gd3JpdGVSR0IgJyArXG4gICAgICAgICdoaWdoQnl0ZSB3cml0ZVJlZCBzZXRTcGVlZCByZWFkQmx1ZSBub1N0cm9rZSAnICtcbiAgICAgICAgJ3JlbW90ZUlQIHRyYW5zZmVyIHNodXRkb3duIGhhbmdDYWxsIGJlZ2luU01TICcgK1xuICAgICAgICAnZW5kV3JpdGUgYXR0YWNoZWQgbWFpbnRhaW4gbm9DdXJzb3IgY2hlY2tSZWcgJyArXG4gICAgICAgICdjaGVja1BVSyBzaGlmdE91dCBpc1ZhbGlkIHNoaWZ0SW4gcHVsc2VJbiAnICtcbiAgICAgICAgJ2Nvbm5lY3QgcHJpbnRsbiBsb2NhbElQIHBpbk1vZGUgZ2V0SU1FSSAnICtcbiAgICAgICAgJ2Rpc3BsYXkgbm9CbGluayBwcm9jZXNzIGdldEJhbmQgcnVubmluZyBiZWdpblNEICcgK1xuICAgICAgICAnZHJhd0JNUCBsb3dCeXRlIHNldEJhbmQgcmVsZWFzZSBiaXRSZWFkIHByZXBhcmUgJyArXG4gICAgICAgICdwb2ludFRvIHJlYWRSZWQgc2V0TW9kZSBub0ZpbGwgcmVtb3ZlIGxpc3RlbiAnICtcbiAgICAgICAgJ3N0cm9rZSBkZXRhY2ggYXR0YWNoIG5vVG9uZSBleGlzdHMgYnVmZmVyICcgK1xuICAgICAgICAnaGVpZ2h0IGJpdFNldCBjaXJjbGUgY29uZmlnIGN1cnNvciByYW5kb20gJyArXG4gICAgICAgICdJUnJlYWQgc2V0RE5TIGVuZFNNUyBnZXRLZXkgbWljcm9zICcgK1xuICAgICAgICAnbWlsbGlzIGJlZ2luIHByaW50IHdyaXRlIHJlYWR5IGZsdXNoIHdpZHRoICcgK1xuICAgICAgICAnaXNQSU4gYmxpbmsgY2xlYXIgcHJlc3MgbWtkaXIgcm1kaXIgY2xvc2UgJyArXG4gICAgICAgICdwb2ludCB5aWVsZCBpbWFnZSBCU1NJRCBjbGljayBkZWxheSAnICtcbiAgICAgICAgJ3JlYWQgdGV4dCBtb3ZlIHBlZWsgYmVlcCByZWN0IGxpbmUgb3BlbiAnICtcbiAgICAgICAgJ3NlZWsgZmlsbCBzaXplIHR1cm4gc3RvcCBob21lIGZpbmQgJyArXG4gICAgICAgICdzdGVwIHRvbmUgc3FydCBSU1NJIFNTSUQgJyArXG4gICAgICAgICdlbmQgYml0IHRhbiBjb3Mgc2luIHBvdyBtYXAgYWJzIG1heCAnICtcbiAgICAgICAgJ21pbiBnZXQgcnVuIHB1dCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnRElHSVRBTF9NRVNTQUdFIEZJUk1BVEFfU1RSSU5HIEFOQUxPR19NRVNTQUdFICcgK1xuICAgICAgICAnUkVQT1JUX0RJR0lUQUwgUkVQT1JUX0FOQUxPRyBJTlBVVF9QVUxMVVAgJyArXG4gICAgICAgICdTRVRfUElOX01PREUgSU5URVJOQUwyVjU2IFNZU1RFTV9SRVNFVCBMRURfQlVJTFRJTiAnICtcbiAgICAgICAgJ0lOVEVSTkFMMVYxIFNZU0VYX1NUQVJUIElOVEVSTkFMIEVYVEVSTkFMICcgK1xuICAgICAgICAnREVGQVVMVCBPVVRQVVQgSU5QVVQgSElHSCBMT1cnXG4gIH07XG5cbiAgdmFyIEFSRFVJTk8gPSBobGpzLmdldExhbmd1YWdlKCdjcHAnKS5yYXdEZWZpbml0aW9uKCk7XG5cbiAgdmFyIGt3cyA9IEFSRFVJTk8ua2V5d29yZHM7XG5cbiAga3dzLmtleXdvcmQgKz0gJyAnICsgQVJEVUlOT19LVy5rZXl3b3JkO1xuICBrd3MubGl0ZXJhbCArPSAnICcgKyBBUkRVSU5PX0tXLmxpdGVyYWw7XG4gIGt3cy5idWlsdF9pbiArPSAnICcgKyBBUkRVSU5PX0tXLmJ1aWx0X2luO1xuXG4gIHJldHVybiBBUkRVSU5PO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICAvL2xvY2FsIGxhYmVsczogJT9bRkJdP1tBVF0/XFxkezEsMn1cXHcrXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbJ2FybSddLFxuICAgIGxleGVtZXM6ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbWV0YTpcbiAgICAgICAgLy9HTlUgcHJlcHJvY3NcbiAgICAgICAgJy4yYnl0ZSAuNGJ5dGUgLmFsaWduIC5hc2NpaSAuYXNjaXogLmJhbGlnbiAuYnl0ZSAuY29kZSAuZGF0YSAuZWxzZSAuZW5kIC5lbmRpZiAuZW5kbSAuZW5kciAuZXF1IC5lcnIgLmV4aXRtIC5leHRlcm4gLmdsb2JhbCAuaHdvcmQgLmlmIC5pZmRlZiAuaWZuZGVmIC5pbmNsdWRlIC5pcnAgLmxvbmcgLm1hY3JvIC5yZXB0IC5yZXEgLnNlY3Rpb24gLnNldCAuc2tpcCAuc3BhY2UgLnRleHQgLndvcmQgLmFybSAudGh1bWIgLmNvZGUxNiAuY29kZTMyIC5mb3JjZV90aHVtYiAudGh1bWJfZnVuYyAubHRvcmcgJytcbiAgICAgICAgLy9BUk0gZGlyZWN0aXZlc1xuICAgICAgICAnQUxJQVMgQUxJR04gQVJNIEFSRUEgQVNTRVJUIEFUVFIgQ04gQ09ERSBDT0RFMTYgQ09ERTMyIENPTU1PTiBDUCBEQVRBIERDQiBEQ0QgRENEVSBEQ0RPIERDRkQgRENGRFUgRENJIERDUSBEQ1FVIERDVyBEQ1dVIEROIEVMSUYgRUxTRSBFTkQgRU5ERlVOQyBFTkRJRiBFTkRQIEVOVFJZIEVRVSBFWFBPUlQgRVhQT1JUQVMgRVhURVJOIEZJRUxEIEZJTEwgRlVOQ1RJT04gR0JMQSBHQkxMIEdCTFMgR0VUIEdMT0JBTCBJRiBJTVBPUlQgSU5DQklOIElOQ0xVREUgSU5GTyBLRUVQIExDTEEgTENMTCBMQ0xTIExUT1JHIE1BQ1JPIE1BUCBNRU5EIE1FWElUIE5PRlAgT1BUIFBSRVNFUlZFOCBQUk9DIFFOIFJFQURPTkxZIFJFTE9DIFJFUVVJUkUgUkVRVUlSRTggUkxJU1QgRk4gUk9VVCBTRVRBIFNFVEwgU0VUUyBTTiBTUEFDRSBTVUJUIFRIVU1CIFRIVU1CWCBUVEwgV0hJTEUgV0VORCAnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdyMCByMSByMiByMyByNCByNSByNiByNyByOCByOSByMTAgcjExIHIxMiByMTMgcjE0IHIxNSAnKyAvL3N0YW5kYXJkIHJlZ2lzdGVyc1xuICAgICAgICAncGMgbHIgc3AgaXAgc2wgc2IgZnAgJysgLy90eXBpY2FsIHJlZ3MgcGx1cyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgICdhMSBhMiBhMyBhNCB2MSB2MiB2MyB2NCB2NSB2NiB2NyB2OCBmMCBmMSBmMiBmMyBmNCBmNSBmNiBmNyAnKyAvL21vcmUgcmVncyBhbmQgZnBcbiAgICAgICAgJ3AwIHAxIHAyIHAzIHA0IHA1IHA2IHA3IHA4IHA5IHAxMCBwMTEgcDEyIHAxMyBwMTQgcDE1ICcrIC8vY29wcm9jZXNzb3IgcmVnc1xuICAgICAgICAnYzAgYzEgYzIgYzMgYzQgYzUgYzYgYzcgYzggYzkgYzEwIGMxMSBjMTIgYzEzIGMxNCBjMTUgJysgLy9tb3JlIGNvcHJvY1xuICAgICAgICAncTAgcTEgcTIgcTMgcTQgcTUgcTYgcTcgcTggcTkgcTEwIHExMSBxMTIgcTEzIHExNCBxMTUgJysgLy9hZHZhbmNlZCBTSU1EIE5FT04gcmVnc1xuXG4gICAgICAgIC8vcHJvZ3JhbSBzdGF0dXMgcmVnaXN0ZXJzXG4gICAgICAgICdjcHNyX2MgY3Bzcl94IGNwc3JfcyBjcHNyX2YgY3Bzcl9jeCBjcHNyX2N4cyBjcHNyX3hzIGNwc3JfeHNmIGNwc3Jfc2YgY3Bzcl9jeHNmICcrXG4gICAgICAgICdzcHNyX2Mgc3Bzcl94IHNwc3JfcyBzcHNyX2Ygc3Bzcl9jeCBzcHNyX2N4cyBzcHNyX3hzIHNwc3JfeHNmIHNwc3Jfc2Ygc3Bzcl9jeHNmICcrXG5cbiAgICAgICAgLy9ORU9OIGFuZCBWRlAgcmVnaXN0ZXJzXG4gICAgICAgICdzMCBzMSBzMiBzMyBzNCBzNSBzNiBzNyBzOCBzOSBzMTAgczExIHMxMiBzMTMgczE0IHMxNSAnK1xuICAgICAgICAnczE2IHMxNyBzMTggczE5IHMyMCBzMjEgczIyIHMyMyBzMjQgczI1IHMyNiBzMjcgczI4IHMyOSBzMzAgczMxICcrXG4gICAgICAgICdkMCBkMSBkMiBkMyBkNCBkNSBkNiBkNyBkOCBkOSBkMTAgZDExIGQxMiBkMTMgZDE0IGQxNSAnK1xuICAgICAgICAnZDE2IGQxNyBkMTggZDE5IGQyMCBkMjEgZDIyIGQyMyBkMjQgZDI1IGQyNiBkMjcgZDI4IGQyOSBkMzAgZDMxICcgK1xuXG4gICAgICAgICd7UEN9IHtWQVJ9IHtUUlVFfSB7RkFMU0V9IHtPUFR9IHtDT05GSUd9IHtFTkRJQU59IHtDT0RFU0laRX0ge0NQVX0ge0ZQVX0ge0FSQ0hJVEVDVFVSRX0ge1BDU1RPUkVPRkZTRVR9IHtBUk1BU01fVkVSU0lPTn0ge0lOVEVSfSB7Uk9QSX0ge1JXUEl9IHtTV1NUfSB7Tk9TV1NUfSAuIEAnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYignKyAgICAgLy9tbmVtb25pY3NcbiAgICAgICAgICAgICdhZGN8JytcbiAgICAgICAgICAgICcocWQ/fHNoP3x1W3FoXT8pP2FkZCg4fDE2KT98dXNhZGE/OHwocXxzaD98dVtxaF0/KT8oYXN8c2EpeHwnK1xuICAgICAgICAgICAgJ2FuZHxhZHJsP3xzYmN8cnNbYmNdfGFzcnxiW2x4XT98Ymx4fGJ4anxjYm4/enx0YltiaF18YmljfCcrXG4gICAgICAgICAgICAnYmZjfGJmaXxbc3VdYmZ4fGJrcHR8Y2RwMj98Y2x6fGNscmV4fGNtcHxjbW58Y3BzaVtlZF18Y3BzfCcrXG4gICAgICAgICAgICAnc2V0ZW5kfGRiZ3xkbWJ8ZHNifGVvcnxpc2J8aXRbdGVdezAsM318bHNsfGxzcnxyb3J8cnJ4fCcrXG4gICAgICAgICAgICAnbGRtKChbaWRdW2FiXSl8Zltkc10pP3xsZHIoKHN8ZXgpP1tiaGRdKT98bW92dD98bXZufG1yYXxtYXJ8JytcbiAgICAgICAgICAgICdtdWx8W3VzXW11bGx8c211bFtid3RdW2J0XXxzbXVbYXNdZHxzbW11bHxzbW1sYXwnK1xuICAgICAgICAgICAgJ21sYXx1bWxhYWx8c21sYWw/KFt3YnRdW2J0XXxkKXxtbHN8c21sc2w/W2RzXXxzbWN8c3ZjfHNldnwnK1xuICAgICAgICAgICAgJ21pYShbYnRdezJ9fHBoKT98bXJyP2MyP3xtY3JyMj98bXJzfG1zcnxvcnJ8b3JufHBraCh0YnxidCl8cmJpdHwnK1xuICAgICAgICAgICAgJ3JldigxNnxzaCk/fHNlbHxbc3Vdc2F0KDE2KT98bm9wfHBvcHxwdXNofHJmZShbaWRdW2FiXSk/fCcrXG4gICAgICAgICAgICAnc3RtKFtpZF1bYWJdKT98c3RyKGV4KT9bYmhkXT98KHFkPyk/c3VifChzaD98cXx1W3FoXT8pP3N1Yig4fDE2KXwnK1xuICAgICAgICAgICAgJ1tzdV14dChhP2h8YT9iKDE2KT8pfHNycyhbaWRdW2FiXSk/fHN3cGI/fHN3aXxzbWl8dHN0fHRlcXwnK1xuICAgICAgICAgICAgJ3dmZXx3Zml8eWllbGQnK1xuICAgICAgICAnKScrXG4gICAgICAgICcoZXF8bmV8Y3N8Y2N8bWl8cGx8dnN8dmN8aGl8bHN8Z2V8bHR8Z3R8bGV8YWx8aHN8bG8pPycrIC8vY29uZGl0aW9uIGNvZGVzXG4gICAgICAgICdbc3B0cnhdPycgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbGVnYWwgcG9zdGZpeGVzXG4gICAgICAgIGVuZDogJ1xcXFxzJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnWztAXScsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJyxcbiAgICAgICAgZW5kOiAnW15cXFxcXFxcXF1cXCcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcfCcsIGVuZDogJ1xcXFx8JyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge2JlZ2luOiAnWyMkPV0/MHhbMC05YS1mXSsnfSwgLy9oZXhcbiAgICAgICAgICAgIHtiZWdpbjogJ1sjJD1dPzBiWzAxXSsnfSwgICAgIC8vYmluXG4gICAgICAgICAgICB7YmVnaW46ICdbIyQ9XVxcXFxkKyd9LCAgICAgICAgLy9saXRlcmFsXG4gICAgICAgICAgICB7YmVnaW46ICdcXFxcYlxcXFxkKyd9ICAgICAgICAgICAvL2JhcmUgbnVtYmVyXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJ15bYS16X1xcXFwuXFxcXCRdW2EtejAtOV9cXFxcLlxcXFwkXSsnfSwgLy9BUk0gc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdeXFxcXHMqW2Etel9cXFxcLlxcXFwkXVthLXowLTlfXFxcXC5cXFxcJF0rOid9LCAvL0dOVSBBUk0gc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdbPSNdXFxcXHcrJyB9ICAvL2xhYmVsIHJlZmVyZW5jZVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgWE1MX0lERU5UX1JFID0gJ1tBLVphLXowLTlcXFxcLl86LV0rJztcbiAgdmFyIFRBR19JTlRFUk5BTFMgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgaWxsZWdhbDogLzwvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgYmVnaW46IFhNTF9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLz1cXHMqLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAgICAgICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAgICAgICAgICB7YmVnaW46IC9bXlxcc1wiJz08PmBdKy99XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaHRtbCcsICd4aHRtbCcsICdyc3MnLCAnYXRvbScsICd4amInLCAneHNkJywgJ3hzbCcsICdwbGlzdCcsICd3c2YnLCAnc3ZnJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICc8IURPQ1RZUEUnLCBlbmQ6ICc+JyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMCxcbiAgICAgICAgY29udGFpbnM6IFt7YmVnaW46ICdcXFxcWycsIGVuZDogJ1xcXFxdJ31dXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnPCEtLScsXG4gICAgICAgICctLT4nLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzxcXFxcIVxcXFxbQ0RBVEFcXFxcWycsIGVuZDogJ1xcXFxdXFxcXF0+JyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvPFxcP3htbC8sIGVuZDogL1xcPz4vLCByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLzxcXD8ocGhwKT8vLCBlbmQ6IC9cXD8+LyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdwaHAnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIHBocCBjbG9zaW5nIHRhZyA/PiB0byBjbG9zZSB0aGUgUEhQIGJsb2NrIHdoZW5cbiAgICAgICAgICAvLyBpbnNpZGUgYW55IG9mIHRoZSBmb2xsb3dpbmcgYmxvY2tzOlxuICAgICAgICAgIHtiZWdpbjogJy9cXFxcKicsIGVuZDogJ1xcXFwqLycsIHNraXA6IHRydWV9LFxuICAgICAgICAgIHtiZWdpbjogJ2JcIicsIGVuZDogJ1wiJywgc2tpcDogdHJ1ZX0sXG4gICAgICAgICAge2JlZ2luOiAnYlxcJycsIGVuZDogJ1xcJycsIHNraXA6IHRydWV9LFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsLCBjbGFzc05hbWU6IG51bGwsIGNvbnRhaW5zOiBudWxsLCBza2lwOiB0cnVlfSksXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsLCBjbGFzc05hbWU6IG51bGwsIGNvbnRhaW5zOiBudWxsLCBza2lwOiB0cnVlfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICAgICAgLypcbiAgICAgICAgVGhlIGxvb2thaGVhZCBwYXR0ZXJuICg/PS4uLikgZW5zdXJlcyB0aGF0ICdiZWdpbicgb25seSBtYXRjaGVzXG4gICAgICAgICc8c3R5bGUnIGFzIGEgc2luZ2xlIHdvcmQsIGZvbGxvd2VkIGJ5IGEgd2hpdGVzcGFjZSBvciBhblxuICAgICAgICBlbmRpbmcgYnJha2V0LiBUaGUgJyQnIGlzIG5lZWRlZCBmb3IgdGhlIGxleGVtZSB0byBiZSByZWNvZ25pemVkXG4gICAgICAgIGJ5IGhsanMuc3ViTW9kZSgpIHRoYXQgdGVzdHMgbGV4ZW1lcyBvdXRzaWRlIHRoZSBzdHJlYW0uXG4gICAgICAgICovXG4gICAgICAgIGJlZ2luOiAnPHN0eWxlKD89XFxcXHN8PiknLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAnc3R5bGUnfSxcbiAgICAgICAgY29udGFpbnM6IFtUQUdfSU5URVJOQUxTXSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnPC9zdHlsZT4nLCByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6IFsnY3NzJywgJ3htbCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiB0aGUgPHN0eWxlIHRhZyBhYm91dCB0aGUgbG9va2FoZWFkIHBhdHRlcm5cbiAgICAgICAgYmVnaW46ICc8c2NyaXB0KD89XFxcXHN8PiknLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAnc2NyaXB0J30sXG4gICAgICAgIGNvbnRhaW5zOiBbVEFHX0lOVEVSTkFMU10sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcPFxcL3NjcmlwdFxcPicsIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogWydhY3Rpb25zY3JpcHQnLCAnamF2YXNjcmlwdCcsICdoYW5kbGViYXJzJywgJ3htbCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIGJlZ2luOiAnPC8/JywgZW5kOiAnLz8+JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJywgYmVnaW46IC9bXlxcLz48XFxzXSsvLCByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFRBR19JTlRFUk5BTFNcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydhZG9jJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIC8vIGJsb2NrIGNvbW1lbnRcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ14vezQsfVxcXFxuJyxcbiAgICAgICAgJ1xcXFxuL3s0LH0kJyxcbiAgICAgICAgLy8gY2FuIGFsc28gYmUgZG9uZSBhcy4uLlxuICAgICAgICAvLydeL3s0LH0kJyxcbiAgICAgICAgLy8nXi97NCx9JCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICAvLyBsaW5lIGNvbW1lbnRcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ14vLycsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgLy8gdGl0bGVcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICBiZWdpbjogJ15cXFxcLlxcXFx3LiokJ1xuICAgICAgfSxcbiAgICAgIC8vIGV4YW1wbGUsIGFkbW9uaXRpb24gJiBzaWRlYmFyIGJsb2Nrc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ15bPVxcXFwqXXs0LH1cXFxcbicsXG4gICAgICAgIGVuZDogJ1xcXFxuXls9XFxcXCpdezQsfSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gaGVhZGluZ3NcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnXig9ezEsNX0pIC4rPyggXFxcXDEpPyQnfSxcbiAgICAgICAgICB7YmVnaW46ICdeW15cXFxcW1xcXFxdXFxcXG5dKz9cXFxcbls9XFxcXC1+XFxcXF5cXFxcK117Mix9JCd9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gZG9jdW1lbnQgYXR0cmlidXRlc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeOi4rPzonLFxuICAgICAgICBlbmQ6ICdcXFxccycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBibG9jayBhdHRyaWJ1dGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15cXFxcWy4rP1xcXFxdJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIHF1b3RlYmxvY2tzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3F1b3RlJyxcbiAgICAgICAgYmVnaW46ICdeX3s0LH1cXFxcbicsXG4gICAgICAgIGVuZDogJ1xcXFxuX3s0LH0kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIGxpc3RpbmcgYW5kIGxpdGVyYWwgYmxvY2tzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvZGUnLFxuICAgICAgICBiZWdpbjogJ15bXFxcXC1cXFxcLl17NCx9XFxcXG4nLFxuICAgICAgICBlbmQ6ICdcXFxcbltcXFxcLVxcXFwuXXs0LH0kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIHBhc3N0aHJvdWdoIGJsb2Nrc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ15cXFxcK3s0LH1cXFxcbicsXG4gICAgICAgIGVuZDogJ1xcXFxuXFxcXCt7NCx9JCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICc8JywgZW5kOiAnPicsXG4gICAgICAgICAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBsaXN0cyAoY2FuIG9ubHkgY2FwdHVyZSBpbmRpY2F0b3JzKVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWxsZXQnLFxuICAgICAgICBiZWdpbjogJ14oXFxcXCorfFxcXFwtK3xcXFxcLit8W15cXFxcbl0rPzo6KVxcXFxzKydcbiAgICAgIH0sXG4gICAgICAvLyBhZG1vbml0aW9uXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXihOT1RFfFRJUHxJTVBPUlRBTlR8V0FSTklOR3xDQVVUSU9OKTpcXFxccysnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIHN0cm9uZ1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJvbmcnLFxuICAgICAgICAvLyBtdXN0IG5vdCBmb2xsb3cgYSB3b3JkIGNoYXJhY3RlciBvciBiZSBmb2xsb3dlZCBieSBhbiBhc3RlcmlzayBvciBzcGFjZVxuICAgICAgICBiZWdpbjogJ1xcXFxCXFxcXCooPyFbXFxcXCpcXFxcc10pJyxcbiAgICAgICAgZW5kOiAnKFxcXFxuezJ9fFxcXFwqKScsXG4gICAgICAgIC8vIGFsbG93IGVzY2FwZWQgYXN0ZXJpc2sgZm9sbG93ZWQgYnkgd29yZCBjaGFyXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcXFxcXCpcXFxcdycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgZW1waGFzaXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZW1waGFzaXMnLFxuICAgICAgICAvLyBtdXN0IG5vdCBmb2xsb3cgYSB3b3JkIGNoYXJhY3RlciBvciBiZSBmb2xsb3dlZCBieSBhIHNpbmdsZSBxdW90ZSBvciBzcGFjZVxuICAgICAgICBiZWdpbjogJ1xcXFxCXFwnKD8hW1xcJ1xcXFxzXSknLFxuICAgICAgICBlbmQ6ICcoXFxcXG57Mn18XFwnKScsXG4gICAgICAgIC8vIGFsbG93IGVzY2FwZWQgc2luZ2xlIHF1b3RlIGZvbGxvd2VkIGJ5IHdvcmQgY2hhclxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXFxcXFxcXCdcXFxcdycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGlubGluZSBlbXBoYXNpcyAoYWx0KVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdlbXBoYXNpcycsXG4gICAgICAgIC8vIG11c3Qgbm90IGZvbGxvdyBhIHdvcmQgY2hhcmFjdGVyIG9yIGJlIGZvbGxvd2VkIGJ5IGFuIHVuZGVybGluZSBvciBzcGFjZVxuICAgICAgICBiZWdpbjogJ18oPyFbX1xcXFxzXSknLFxuICAgICAgICBlbmQ6ICcoXFxcXG57Mn18XyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgc21hcnQgcXVvdGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiBcImBgLis/JydcIn0sXG4gICAgICAgICAge2JlZ2luOiBcImAuKz8nXCJ9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgY29kZSBzbmlwcGV0cyAoVE9ETyBzaG91bGQgZ2V0IHNhbWUgdHJlYXRtZW50IGFzIHN0cm9uZyBhbmQgZW1waGFzaXMpXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvZGUnLFxuICAgICAgICBiZWdpbjogJyhgLis/YHxcXFxcKy4rP1xcXFwrKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGluZGVudGVkIGxpdGVyYWwgYmxvY2tcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29kZScsXG4gICAgICAgIGJlZ2luOiAnXlsgXFxcXHRdJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGhvcml6b250YWwgcnVsZXNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFwnezMsfVsgXFxcXHRdKiQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gaW1hZ2VzIGFuZCBsaW5rc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJyhsaW5rOik/KGh0dHB8aHR0cHN8ZnRwfGZpbGV8aXJjfGltYWdlOj8pOlxcXFxTK1xcXFxbLio/XFxcXF0nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJyhsaW5rfGltYWdlOj8pOicsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmsnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcdycsXG4gICAgICAgICAgICBlbmQ6ICdbXlxcXFxbXSsnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcWycsXG4gICAgICAgICAgICBlbmQ6ICdcXFxcXScsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9XG4gICAgJ2ZhbHNlIHN5bmNocm9uaXplZCBpbnQgYWJzdHJhY3QgZmxvYXQgcHJpdmF0ZSBjaGFyIGJvb2xlYW4gc3RhdGljIG51bGwgaWYgY29uc3QgJyArXG4gICAgJ2ZvciB0cnVlIHdoaWxlIGxvbmcgdGhyb3cgc3RyaWN0ZnAgZmluYWxseSBwcm90ZWN0ZWQgaW1wb3J0IG5hdGl2ZSBmaW5hbCByZXR1cm4gdm9pZCAnICtcbiAgICAnZW51bSBlbHNlIGV4dGVuZHMgaW1wbGVtZW50cyBicmVhayB0cmFuc2llbnQgbmV3IGNhdGNoIGluc3RhbmNlb2YgYnl0ZSBzdXBlciB2b2xhdGlsZSBjYXNlICcgK1xuICAgICdhc3NlcnQgc2hvcnQgcGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcml2aWxlZ2VkICcgK1xuICAgICdhc3BlY3RPZiBhZHZpY2VleGVjdXRpb24gcHJvY2VlZCBjZmxvd2JlbG93IGNmbG93IGluaXRpYWxpemF0aW9uIHByZWluaXRpYWxpemF0aW9uICcgK1xuICAgICdzdGF0aWNpbml0aWFsaXphdGlvbiB3aXRoaW5jb2RlIHRhcmdldCB3aXRoaW4gZXhlY3V0aW9uIGdldFdpdGhpblR5cGVOYW1lIGhhbmRsZXIgJyArXG4gICAgJ3RoaXNKb2luUG9pbnQgdGhpc0pvaW5Qb2ludFN0YXRpY1BhcnQgdGhpc0VuY2xvc2luZ0pvaW5Qb2ludFN0YXRpY1BhcnQgZGVjbGFyZSBwYXJlbnRzICcrXG4gICAgJ3dhcm5pbmcgZXJyb3Igc29mdCBwcmVjZWRlbmNlIHRoaXNBc3BlY3RJbnN0YW5jZSc7XG4gIHZhciBTSE9SVEtFWVMgPSAnZ2V0IHNldCBhcmdzIGNhbGwnO1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzIDogS0VZV09SRFMsXG4gICAgaWxsZWdhbCA6IC88XFwvfCMvLFxuICAgIGNvbnRhaW5zIDogW1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnL1xcXFwqXFxcXConLFxuICAgICAgICAnXFxcXCovJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZSA6IDAsXG4gICAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIGVhdCB1cCBAJ3MgaW4gZW1haWxzIHRvIHByZXZlbnQgdGhlbSB0byBiZSByZWNvZ25pemVkIGFzIGRvY3RhZ3NcbiAgICAgICAgICAgICAgYmVnaW46IC9cXHcrQC8sIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lIDogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luIDogJ0BbQS1aYS16XSsnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZSA6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHMgOiAnYXNwZWN0JyxcbiAgICAgICAgZW5kIDogL1t7Oz1dLyxcbiAgICAgICAgZXhjbHVkZUVuZCA6IHRydWUsXG4gICAgICAgIGlsbGVnYWwgOiAvWzo7XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkcyA6ICdleHRlbmRzIGltcGxlbWVudHMgcGVydHlwZXdpdGhpbiBwZXJ0aGlzIHBlcnRhcmdldCBwZXJjZmxvd2JlbG93IHBlcmNmbG93IGlzc2luZ2xldG9uJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW4gOiAvXFwoW15cXCldKi8sXG4gICAgICAgICAgICBlbmQgOiAvWyldKy8sXG4gICAgICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTICsgJyAnICsgU0hPUlRLRVlTLFxuICAgICAgICAgICAgZXhjbHVkZUVuZCA6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWUgOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzIDogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIGVuZCA6IC9bezs9XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQgOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGtleXdvcmRzIDogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIGlsbGVnYWwgOiAvWzpcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkcyA6ICdleHRlbmRzIGltcGxlbWVudHMnfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBBc3BlY3RKIENvbnN0cnVjdHNcbiAgICAgICAgYmVnaW5LZXl3b3JkcyA6ICdwb2ludGN1dCBhZnRlciBiZWZvcmUgYXJvdW5kIHRocm93aW5nIHJldHVybmluZycsXG4gICAgICAgIGVuZCA6IC9bKV0vLFxuICAgICAgICBleGNsdWRlRW5kIDogZmFsc2UsXG4gICAgICAgIGlsbGVnYWwgOiAvW1wiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luIDogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKlxcXFwoJyxcbiAgICAgICAgICAgIHJldHVybkJlZ2luIDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zIDogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW4gOiAvWzpdLyxcbiAgICAgICAgcmV0dXJuQmVnaW4gOiB0cnVlLFxuICAgICAgICBlbmQgOiAvW3s7XS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgZXhjbHVkZUVuZCA6IGZhbHNlLFxuICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTLFxuICAgICAgICBpbGxlZ2FsIDogL1tcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbiA6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTICsgJyAnICsgU0hPUlRLRVlTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRoaXMgcHJldmVudHMgJ25ldyBOYW1lKC4uLiksIG9yIHRocm93IC4uLicgZnJvbSBiZWluZyByZWNvZ25pemVkIGFzIGEgZnVuY3Rpb24gZGVmaW5pdGlvblxuICAgICAgICBiZWdpbktleXdvcmRzIDogJ25ldyB0aHJvdycsXG4gICAgICAgIHJlbGV2YW5jZSA6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRoZSBmdW5jdGlvbiBjbGFzcyBpcyBhIGJpdCBkaWZmZXJlbnQgZm9yIEFzcGVjdEogY29tcGFyZWQgdG8gdGhlIEphdmEgbGFuZ3VhZ2VcbiAgICAgICAgY2xhc3NOYW1lIDogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW4gOiAvXFx3KyArXFx3KyhcXC4pP1xcdytcXHMqXFwoW15cXCldKlxcKVxccyooKHRocm93cylbXFx3XFxzLF0rKT9bXFx7O10vLFxuICAgICAgICByZXR1cm5CZWdpbiA6IHRydWUsXG4gICAgICAgIGVuZCA6IC9bezs9XS8sXG4gICAgICAgIGtleXdvcmRzIDogS0VZV09SRFMsXG4gICAgICAgIGV4Y2x1ZGVFbmQgOiB0cnVlLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbiA6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgICAgICAgICByZXR1cm5CZWdpbiA6IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWlucyA6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW4gOiAvXFwoLywgZW5kIDogL1xcKS8sXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTLFxuICAgICAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICAvLyBhbm5vdGF0aW9uIGlzIGFsc28gdXNlZCBpbiB0aGlzIGxhbmd1YWdlXG4gICAgICAgIGNsYXNzTmFtZSA6ICdtZXRhJyxcbiAgICAgICAgYmVnaW4gOiAnQFtBLVphLXpdKydcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQkFDS1RJQ0tfRVNDQVBFID0ge1xuICAgIGJlZ2luOiAnYFtcXFxcc1xcXFxTXSdcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgYWxpYXNlczogWyAnYWhrJyBdLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnQnJlYWsgQ29udGludWUgQ3JpdGljYWwgRXhpdCBFeGl0QXBwIEdvc3ViIEdvdG8gTmV3IE9uRXhpdCBQYXVzZSByZXR1cm4gU2V0QmF0Y2hMaW5lcyBTZXRUaW1lciBTdXNwZW5kIFRocmVhZCBUaHJvdyBVbnRpbCBhaGtfaWQgYWhrX2NsYXNzIGFoa19waWQgYWhrX2V4ZSBhaGtfZ3JvdXAnLFxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UgTk9UIEFORCBPUicsXG4gICAgICBidWlsdF9pbjogJ0NvbVNwZWMgQ2xpcGJvYXJkIENsaXBib2FyZEFsbCBFcnJvckxldmVsJyxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBCQUNLVElDS19FU0NBUEUsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NvbnRhaW5zOiBbQkFDS1RJQ0tfRVNDQVBFXX0pLFxuICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogaGxqcy5OVU1CRVJfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLCAvL3N1YnN0IHdvdWxkIGJlIHRoZSBtb3N0IGFjY3VyYXRlIGhvd2V2ZXIgZmFpbHMgdGhlIHBvaW50IG9mIGhpZ2hsaWdodGluZy4gdmFyaWFibGUgaXMgY29tcGFyYWJseSB0aGUgbW9zdCBhY2N1cmF0ZSB0aGF0IGFjdHVhbGx5IGhhcyBzb21lIGVmZmVjdFxuICAgICAgICBiZWdpbjogJyVbYS16QS1aMC05I18kQF0rJSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqXFxcXHcrXFxcXHMqKCx8JSknXG4gICAgICAgIC8vSSBkb24ndCByZWFsbHkga25vdyBpZiB0aGlzIGlzIHRvdGFsbHkgcmVsZXZhbnRcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJywgLy9zeW1ib2wgd291bGQgYmUgbW9zdCBhY2N1cmF0ZSBob3dldmVyIGlzIGhpZ2xpZ2h0ZWQganVzdCBsaWtlIGJ1aWx0X2luIGFuZCB0aGF0IG1ha2VzIHVwIGEgbG90IG9mIEF1dG9Ib3RrZXkgY29kZVxuXHRcdCAgICAgICAgICAgICAgICAgICAgICAgIC8vbWVhbmluZyB0aGF0IGl0IHdvdWxkIGZhaWwgdG8gaGlnaGxpZ2h0IGFueXRoaW5nXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnXlteXFxcXG5cIjtdKzo6KD8hPSknfSxcbiAgICAgICAgICB7YmVnaW46ICdeW15cXFxcblwiO10rOig/IT0pJywgcmVsZXZhbmNlOiAwfSAvLyB6ZXJvIHJlbGV2YW5jZSBhcyBpdCBjYXRjaGVzIGEgbG90IG9mIHRoaW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvbGxvd2VkIGJ5IGEgc2luZ2xlICc6JyBpbiBtYW55IGxhbmd1YWdlc1xuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKiNcXFxcdysnLCBlbmQ6JyQnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG5cdCAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdBX1thLXpBLVowLTldKydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGNvbnNlY3V0aXZlIGNvbW1hcywgbm90IGZvciBoaWdobGlnaHRpbmcgYnV0IGp1c3QgZm9yIHJlbGV2YW5jZVxuICAgICAgICBiZWdpbjogJyxcXFxccyosJ1xuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICB2YXIgS0VZV09SRFMgPSAnQnlSZWYgQ2FzZSBDb25zdCBDb250aW51ZUNhc2UgQ29udGludWVMb29wICcgK1xuICAgICAgICAnRGVmYXVsdCBEaW0gRG8gRWxzZSBFbHNlSWYgRW5kRnVuYyBFbmRJZiBFbmRTZWxlY3QgJyArXG4gICAgICAgICdFbmRTd2l0Y2ggRW5kV2l0aCBFbnVtIEV4aXQgRXhpdExvb3AgRm9yIEZ1bmMgJyArXG4gICAgICAgICdHbG9iYWwgSWYgSW4gTG9jYWwgTmV4dCBSZURpbSBSZXR1cm4gU2VsZWN0IFN0YXRpYyAnICtcbiAgICAgICAgJ1N0ZXAgU3dpdGNoIFRoZW4gVG8gVW50aWwgVm9sYXRpbGUgV0VuZCBXaGlsZSBXaXRoJyxcblxuICAgICAgICBMSVRFUkFMID0gJ1RydWUgRmFsc2UgQW5kIE51bGwgTm90IE9yJyxcblxuICAgICAgICBCVUlMVF9JTiA9XG4gICAgICAgICAgJ0FicyBBQ29zIEFkbGliUmVnaXN0ZXIgQWRsaWJVblJlZ2lzdGVyIEFzYyBBc2NXIEFTaW4gQXNzaWduIEFUYW4gQXV0b0l0U2V0T3B0aW9uIEF1dG9JdFdpbkdldFRpdGxlIEF1dG9JdFdpblNldFRpdGxlIEJlZXAgQmluYXJ5IEJpbmFyeUxlbiBCaW5hcnlNaWQgQmluYXJ5VG9TdHJpbmcgQml0QU5EIEJpdE5PVCBCaXRPUiBCaXRSb3RhdGUgQml0U2hpZnQgQml0WE9SIEJsb2NrSW5wdXQgQnJlYWsgQ2FsbCBDRFRyYXkgQ2VpbGluZyBDaHIgQ2hyVyBDbGlwR2V0IENsaXBQdXQgQ29uc29sZVJlYWQgQ29uc29sZVdyaXRlIENvbnNvbGVXcml0ZUVycm9yIENvbnRyb2xDbGljayBDb250cm9sQ29tbWFuZCBDb250cm9sRGlzYWJsZSBDb250cm9sRW5hYmxlIENvbnRyb2xGb2N1cyBDb250cm9sR2V0Rm9jdXMgQ29udHJvbEdldEhhbmRsZSBDb250cm9sR2V0UG9zIENvbnRyb2xHZXRUZXh0IENvbnRyb2xIaWRlIENvbnRyb2xMaXN0VmlldyBDb250cm9sTW92ZSBDb250cm9sU2VuZCBDb250cm9sU2V0VGV4dCBDb250cm9sU2hvdyBDb250cm9sVHJlZVZpZXcgQ29zIERlYyBEaXJDb3B5IERpckNyZWF0ZSBEaXJHZXRTaXplIERpck1vdmUgRGlyUmVtb3ZlIERsbENhbGwgRGxsQ2FsbEFkZHJlc3MgRGxsQ2FsbGJhY2tGcmVlIERsbENhbGxiYWNrR2V0UHRyIERsbENhbGxiYWNrUmVnaXN0ZXIgRGxsQ2xvc2UgRGxsT3BlbiBEbGxTdHJ1Y3RDcmVhdGUgRGxsU3RydWN0R2V0RGF0YSBEbGxTdHJ1Y3RHZXRQdHIgRGxsU3RydWN0R2V0U2l6ZSBEbGxTdHJ1Y3RTZXREYXRhIERyaXZlR2V0RHJpdmUgRHJpdmVHZXRGaWxlU3lzdGVtIERyaXZlR2V0TGFiZWwgRHJpdmVHZXRTZXJpYWwgRHJpdmVHZXRUeXBlIERyaXZlTWFwQWRkIERyaXZlTWFwRGVsIERyaXZlTWFwR2V0IERyaXZlU2V0TGFiZWwgRHJpdmVTcGFjZUZyZWUgRHJpdmVTcGFjZVRvdGFsIERyaXZlU3RhdHVzIEVudkdldCBFbnZTZXQgRW52VXBkYXRlIEV2YWwgRXhlY3V0ZSBFeHAgRmlsZUNoYW5nZURpciBGaWxlQ2xvc2UgRmlsZUNvcHkgRmlsZUNyZWF0ZU5URlNMaW5rIEZpbGVDcmVhdGVTaG9ydGN1dCBGaWxlRGVsZXRlIEZpbGVFeGlzdHMgRmlsZUZpbmRGaXJzdEZpbGUgRmlsZUZpbmROZXh0RmlsZSBGaWxlRmx1c2ggRmlsZUdldEF0dHJpYiBGaWxlR2V0RW5jb2RpbmcgRmlsZUdldExvbmdOYW1lIEZpbGVHZXRQb3MgRmlsZUdldFNob3J0Y3V0IEZpbGVHZXRTaG9ydE5hbWUgRmlsZUdldFNpemUgRmlsZUdldFRpbWUgRmlsZUdldFZlcnNpb24gRmlsZUluc3RhbGwgRmlsZU1vdmUgRmlsZU9wZW4gRmlsZU9wZW5EaWFsb2cgRmlsZVJlYWQgRmlsZVJlYWRMaW5lIEZpbGVSZWFkVG9BcnJheSBGaWxlUmVjeWNsZSBGaWxlUmVjeWNsZUVtcHR5IEZpbGVTYXZlRGlhbG9nIEZpbGVTZWxlY3RGb2xkZXIgRmlsZVNldEF0dHJpYiBGaWxlU2V0RW5kIEZpbGVTZXRQb3MgRmlsZVNldFRpbWUgRmlsZVdyaXRlIEZpbGVXcml0ZUxpbmUgRmxvb3IgRnRwU2V0UHJveHkgRnVuY05hbWUgR1VJQ3JlYXRlIEdVSUN0cmxDcmVhdGVBdmkgR1VJQ3RybENyZWF0ZUJ1dHRvbiBHVUlDdHJsQ3JlYXRlQ2hlY2tib3ggR1VJQ3RybENyZWF0ZUNvbWJvIEdVSUN0cmxDcmVhdGVDb250ZXh0TWVudSBHVUlDdHJsQ3JlYXRlRGF0ZSBHVUlDdHJsQ3JlYXRlRHVtbXkgR1VJQ3RybENyZWF0ZUVkaXQgR1VJQ3RybENyZWF0ZUdyYXBoaWMgR1VJQ3RybENyZWF0ZUdyb3VwIEdVSUN0cmxDcmVhdGVJY29uIEdVSUN0cmxDcmVhdGVJbnB1dCBHVUlDdHJsQ3JlYXRlTGFiZWwgR1VJQ3RybENyZWF0ZUxpc3QgR1VJQ3RybENyZWF0ZUxpc3RWaWV3IEdVSUN0cmxDcmVhdGVMaXN0Vmlld0l0ZW0gR1VJQ3RybENyZWF0ZU1lbnUgR1VJQ3RybENyZWF0ZU1lbnVJdGVtIEdVSUN0cmxDcmVhdGVNb250aENhbCBHVUlDdHJsQ3JlYXRlT2JqIEdVSUN0cmxDcmVhdGVQaWMgR1VJQ3RybENyZWF0ZVByb2dyZXNzIEdVSUN0cmxDcmVhdGVSYWRpbyBHVUlDdHJsQ3JlYXRlU2xpZGVyIEdVSUN0cmxDcmVhdGVUYWIgR1VJQ3RybENyZWF0ZVRhYkl0ZW0gR1VJQ3RybENyZWF0ZVRyZWVWaWV3IEdVSUN0cmxDcmVhdGVUcmVlVmlld0l0ZW0gR1VJQ3RybENyZWF0ZVVwZG93biBHVUlDdHJsRGVsZXRlIEdVSUN0cmxHZXRIYW5kbGUgR1VJQ3RybEdldFN0YXRlIEdVSUN0cmxSZWFkIEdVSUN0cmxSZWN2TXNnIEdVSUN0cmxSZWdpc3Rlckxpc3RWaWV3U29ydCBHVUlDdHJsU2VuZE1zZyBHVUlDdHJsU2VuZFRvRHVtbXkgR1VJQ3RybFNldEJrQ29sb3IgR1VJQ3RybFNldENvbG9yIEdVSUN0cmxTZXRDdXJzb3IgR1VJQ3RybFNldERhdGEgR1VJQ3RybFNldERlZkJrQ29sb3IgR1VJQ3RybFNldERlZkNvbG9yIEdVSUN0cmxTZXRGb250IEdVSUN0cmxTZXRHcmFwaGljIEdVSUN0cmxTZXRJbWFnZSBHVUlDdHJsU2V0TGltaXQgR1VJQ3RybFNldE9uRXZlbnQgR1VJQ3RybFNldFBvcyBHVUlDdHJsU2V0UmVzaXppbmcgR1VJQ3RybFNldFN0YXRlIEdVSUN0cmxTZXRTdHlsZSBHVUlDdHJsU2V0VGlwIEdVSURlbGV0ZSBHVUlHZXRDdXJzb3JJbmZvIEdVSUdldE1zZyBHVUlHZXRTdHlsZSBHVUlSZWdpc3Rlck1zZyBHVUlTZXRBY2NlbGVyYXRvcnMgR1VJU2V0QmtDb2xvciBHVUlTZXRDb29yZCBHVUlTZXRDdXJzb3IgR1VJU2V0Rm9udCBHVUlTZXRIZWxwIEdVSVNldEljb24gR1VJU2V0T25FdmVudCBHVUlTZXRTdGF0ZSBHVUlTZXRTdHlsZSBHVUlTdGFydEdyb3VwIEdVSVN3aXRjaCBIZXggSG90S2V5U2V0IEh0dHBTZXRQcm94eSBIdHRwU2V0VXNlckFnZW50IEhXbmQgSW5ldENsb3NlIEluZXRHZXQgSW5ldEdldEluZm8gSW5ldEdldFNpemUgSW5ldFJlYWQgSW5pRGVsZXRlIEluaVJlYWQgSW5pUmVhZFNlY3Rpb24gSW5pUmVhZFNlY3Rpb25OYW1lcyBJbmlSZW5hbWVTZWN0aW9uIEluaVdyaXRlIEluaVdyaXRlU2VjdGlvbiBJbnB1dEJveCBJbnQgSXNBZG1pbiBJc0FycmF5IElzQmluYXJ5IElzQm9vbCBJc0RlY2xhcmVkIElzRGxsU3RydWN0IElzRmxvYXQgSXNGdW5jIElzSFduZCBJc0ludCBJc0tleXdvcmQgSXNOdW1iZXIgSXNPYmogSXNQdHIgSXNTdHJpbmcgTG9nIE1lbUdldFN0YXRzIE1vZCBNb3VzZUNsaWNrIE1vdXNlQ2xpY2tEcmFnIE1vdXNlRG93biBNb3VzZUdldEN1cnNvciBNb3VzZUdldFBvcyBNb3VzZU1vdmUgTW91c2VVcCBNb3VzZVdoZWVsIE1zZ0JveCBOdW1iZXIgT2JqQ3JlYXRlIE9iakNyZWF0ZUludGVyZmFjZSBPYmpFdmVudCBPYmpHZXQgT2JqTmFtZSBPbkF1dG9JdEV4aXRSZWdpc3RlciBPbkF1dG9JdEV4aXRVblJlZ2lzdGVyIFBpbmcgUGl4ZWxDaGVja3N1bSBQaXhlbEdldENvbG9yIFBpeGVsU2VhcmNoIFByb2Nlc3NDbG9zZSBQcm9jZXNzRXhpc3RzIFByb2Nlc3NHZXRTdGF0cyBQcm9jZXNzTGlzdCBQcm9jZXNzU2V0UHJpb3JpdHkgUHJvY2Vzc1dhaXQgUHJvY2Vzc1dhaXRDbG9zZSBQcm9ncmVzc09mZiBQcm9ncmVzc09uIFByb2dyZXNzU2V0IFB0ciBSYW5kb20gUmVnRGVsZXRlIFJlZ0VudW1LZXkgUmVnRW51bVZhbCBSZWdSZWFkIFJlZ1dyaXRlIFJvdW5kIFJ1biBSdW5BcyBSdW5Bc1dhaXQgUnVuV2FpdCBTZW5kIFNlbmRLZWVwQWN0aXZlIFNldEVycm9yIFNldEV4dGVuZGVkIFNoZWxsRXhlY3V0ZSBTaGVsbEV4ZWN1dGVXYWl0IFNodXRkb3duIFNpbiBTbGVlcCBTb3VuZFBsYXkgU291bmRTZXRXYXZlVm9sdW1lIFNwbGFzaEltYWdlT24gU3BsYXNoT2ZmIFNwbGFzaFRleHRPbiBTcXJ0IFNSYW5kb20gU3RhdHVzYmFyR2V0VGV4dCBTdGRlcnJSZWFkIFN0ZGluV3JpdGUgU3RkaW9DbG9zZSBTdGRvdXRSZWFkIFN0cmluZyBTdHJpbmdBZGRDUiBTdHJpbmdDb21wYXJlIFN0cmluZ0Zvcm1hdCBTdHJpbmdGcm9tQVNDSUlBcnJheSBTdHJpbmdJblN0ciBTdHJpbmdJc0FsTnVtIFN0cmluZ0lzQWxwaGEgU3RyaW5nSXNBU0NJSSBTdHJpbmdJc0RpZ2l0IFN0cmluZ0lzRmxvYXQgU3RyaW5nSXNJbnQgU3RyaW5nSXNMb3dlciBTdHJpbmdJc1NwYWNlIFN0cmluZ0lzVXBwZXIgU3RyaW5nSXNYRGlnaXQgU3RyaW5nTGVmdCBTdHJpbmdMZW4gU3RyaW5nTG93ZXIgU3RyaW5nTWlkIFN0cmluZ1JlZ0V4cCBTdHJpbmdSZWdFeHBSZXBsYWNlIFN0cmluZ1JlcGxhY2UgU3RyaW5nUmV2ZXJzZSBTdHJpbmdSaWdodCBTdHJpbmdTcGxpdCBTdHJpbmdTdHJpcENSIFN0cmluZ1N0cmlwV1MgU3RyaW5nVG9BU0NJSUFycmF5IFN0cmluZ1RvQmluYXJ5IFN0cmluZ1RyaW1MZWZ0IFN0cmluZ1RyaW1SaWdodCBTdHJpbmdVcHBlciBUYW4gVENQQWNjZXB0IFRDUENsb3NlU29ja2V0IFRDUENvbm5lY3QgVENQTGlzdGVuIFRDUE5hbWVUb0lQIFRDUFJlY3YgVENQU2VuZCBUQ1BTaHV0ZG93biwgVURQU2h1dGRvd24gVENQU3RhcnR1cCwgVURQU3RhcnR1cCBUaW1lckRpZmYgVGltZXJJbml0IFRvb2xUaXAgVHJheUNyZWF0ZUl0ZW0gVHJheUNyZWF0ZU1lbnUgVHJheUdldE1zZyBUcmF5SXRlbURlbGV0ZSBUcmF5SXRlbUdldEhhbmRsZSBUcmF5SXRlbUdldFN0YXRlIFRyYXlJdGVtR2V0VGV4dCBUcmF5SXRlbVNldE9uRXZlbnQgVHJheUl0ZW1TZXRTdGF0ZSBUcmF5SXRlbVNldFRleHQgVHJheVNldENsaWNrIFRyYXlTZXRJY29uIFRyYXlTZXRPbkV2ZW50IFRyYXlTZXRQYXVzZUljb24gVHJheVNldFN0YXRlIFRyYXlTZXRUb29sVGlwIFRyYXlUaXAgVUJvdW5kIFVEUEJpbmQgVURQQ2xvc2VTb2NrZXQgVURQT3BlbiBVRFBSZWN2IFVEUFNlbmQgVmFyR2V0VHlwZSBXaW5BY3RpdmF0ZSBXaW5BY3RpdmUgV2luQ2xvc2UgV2luRXhpc3RzIFdpbkZsYXNoIFdpbkdldENhcmV0UG9zIFdpbkdldENsYXNzTGlzdCBXaW5HZXRDbGllbnRTaXplIFdpbkdldEhhbmRsZSBXaW5HZXRQb3MgV2luR2V0UHJvY2VzcyBXaW5HZXRTdGF0ZSBXaW5HZXRUZXh0IFdpbkdldFRpdGxlIFdpbktpbGwgV2luTGlzdCBXaW5NZW51U2VsZWN0SXRlbSBXaW5NaW5pbWl6ZUFsbCBXaW5NaW5pbWl6ZUFsbFVuZG8gV2luTW92ZSBXaW5TZXRPblRvcCBXaW5TZXRTdGF0ZSBXaW5TZXRUaXRsZSBXaW5TZXRUcmFucyBXaW5XYWl0JyxcblxuICAgICAgICBDT01NRU5UID0ge1xuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnI2NzJywgJyNjZScpLFxuICAgICAgICAgICAgICBobGpzLkNPTU1FTlQoJyNjb21tZW50cy1zdGFydCcsICcjY29tbWVudHMtZW5kJylcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcblxuICAgICAgICBWQVJJQUJMRSA9IHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCRbQS16MC05X10rJ1xuICAgICAgICB9LFxuXG4gICAgICAgIFNUUklORyA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICB2YXJpYW50czogW3tcbiAgICAgICAgICAgICAgICBiZWdpbjogL1wiLyxcbiAgICAgICAgICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXCJcIi8sXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC8nLyxcbiAgICAgICAgICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC8nJy8sXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9XVxuICAgICAgICB9LFxuXG4gICAgICAgIE5VTUJFUiA9IHtcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbaGxqcy5CSU5BUllfTlVNQkVSX01PREUsIGhsanMuQ19OVU1CRVJfTU9ERV1cbiAgICAgICAgfSxcblxuICAgICAgICBQUkVQUk9DRVNTT1IgPSB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgIGJlZ2luOiAnIycsXG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdjb21tZW50cyBpbmNsdWRlIGluY2x1ZGUtb25jZSBOb1RyYXlJY29uIE9uQXV0b0l0U3RhcnRSZWdpc3RlciBwcmFnbWEgY29tcGlsZSBSZXF1aXJlQWRtaW4nfSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcXFxcXG4vLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2luY2x1ZGUnfSxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudHM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnPCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogJz4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1wiLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiAvXCIvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXCJcIi8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvJy8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogLycvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvJycvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICAgIENPTU1FTlRcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcblxuICAgICAgICBDT05TVEFOVCA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICAvLyBiZWdpbjogJ0AnLFxuICAgICAgICAgICAgLy8gZW5kOiAnJCcsXG4gICAgICAgICAgICAvLyBrZXl3b3JkczogJ0FwcERhdGFDb21tb25EaXIgQXBwRGF0YURpciBBdXRvSXRFeGUgQXV0b0l0UElEIEF1dG9JdFZlcnNpb24gQXV0b0l0WDY0IENPTV9FdmVudE9iaiBDb21tb25GaWxlc0RpciBDb21waWxlZCBDb21wdXRlck5hbWUgQ29tU3BlYyBDUFVBcmNoIENSIENSTEYgRGVza3RvcENvbW1vbkRpciBEZXNrdG9wRGVwdGggRGVza3RvcERpciBEZXNrdG9wSGVpZ2h0IERlc2t0b3BSZWZyZXNoIERlc2t0b3BXaWR0aCBEb2N1bWVudHNDb21tb25EaXIgZXJyb3IgZXhpdENvZGUgZXhpdE1ldGhvZCBleHRlbmRlZCBGYXZvcml0ZXNDb21tb25EaXIgRmF2b3JpdGVzRGlyIEdVSV9DdHJsSGFuZGxlIEdVSV9DdHJsSWQgR1VJX0RyYWdGaWxlIEdVSV9EcmFnSWQgR1VJX0Ryb3BJZCBHVUlfV2luSGFuZGxlIEhvbWVEcml2ZSBIb21lUGF0aCBIb21lU2hhcmUgSG90S2V5UHJlc3NlZCBIT1VSIElQQWRkcmVzczEgSVBBZGRyZXNzMiBJUEFkZHJlc3MzIElQQWRkcmVzczQgS0JMYXlvdXQgTEYgTG9jYWxBcHBEYXRhRGlyIExvZ29uRE5TRG9tYWluIExvZ29uRG9tYWluIExvZ29uU2VydmVyIE1EQVkgTUlOIE1PTiBNU0VDIE1VSUxhbmcgTXlEb2N1bWVudHNEaXIgTnVtUGFyYW1zIE9TQXJjaCBPU0J1aWxkIE9TTGFuZyBPU1NlcnZpY2VQYWNrIE9TVHlwZSBPU1ZlcnNpb24gUHJvZ3JhbUZpbGVzRGlyIFByb2dyYW1zQ29tbW9uRGlyIFByb2dyYW1zRGlyIFNjcmlwdERpciBTY3JpcHRGdWxsUGF0aCBTY3JpcHRMaW5lTnVtYmVyIFNjcmlwdE5hbWUgU0VDIFN0YXJ0TWVudUNvbW1vbkRpciBTdGFydE1lbnVEaXIgU3RhcnR1cENvbW1vbkRpciBTdGFydHVwRGlyIFNXX0RJU0FCTEUgU1dfRU5BQkxFIFNXX0hJREUgU1dfTE9DSyBTV19NQVhJTUlaRSBTV19NSU5JTUlaRSBTV19SRVNUT1JFIFNXX1NIT1cgU1dfU0hPV0RFRkFVTFQgU1dfU0hPV01BWElNSVpFRCBTV19TSE9XTUlOSU1JWkVEIFNXX1NIT1dNSU5OT0FDVElWRSBTV19TSE9XTkEgU1dfU0hPV05PQUNUSVZBVEUgU1dfU0hPV05PUk1BTCBTV19VTkxPQ0sgU3lzdGVtRGlyIFRBQiBUZW1wRGlyIFRSQVlfSUQgVHJheUljb25GbGFzaGluZyBUcmF5SWNvblZpc2libGUgVXNlck5hbWUgVXNlclByb2ZpbGVEaXIgV0RBWSBXaW5kb3dzRGlyIFdvcmtpbmdEaXIgWURBWSBZRUFSJyxcbiAgICAgICAgICAgIC8vIHJlbGV2YW5jZTogNVxuICAgICAgICAgICAgYmVnaW46ICdAW0EtejAtOV9dKydcbiAgICAgICAgfSxcblxuICAgICAgICBGVU5DVElPTiA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdGdW5jJyxcbiAgICAgICAgICAgIGVuZDogJyQnLFxuICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFwkfFxcXFxbfCUnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAga2V5d29yZDogS0VZV09SRFMsXG4gICAgICAgICAgICBidWlsdF9pbjogQlVJTFRfSU4sXG4gICAgICAgICAgICBsaXRlcmFsOiBMSVRFUkFMXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBDT01NRU5ULFxuICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICBOVU1CRVIsXG4gICAgICAgICAgICBQUkVQUk9DRVNTT1IsXG4gICAgICAgICAgICBDT05TVEFOVCxcbiAgICAgICAgICAgIEZVTkNUSU9OXG4gICAgICAgIF1cbiAgICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogJ1xcXFwuPycgKyBobGpzLklERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAvKiBtbmVtb25pYyAqL1xuICAgICAgICAnYWRjIGFkZCBhZGl3IGFuZCBhbmRpIGFzciBiY2xyIGJsZCBicmJjIGJyYnMgYnJjYyBicmNzIGJyZWFrIGJyZXEgYnJnZSBicmhjIGJyaHMgJyArXG4gICAgICAgICdicmlkIGJyaWUgYnJsbyBicmx0IGJybWkgYnJuZSBicnBsIGJyc2ggYnJ0YyBicnRzIGJydmMgYnJ2cyBic2V0IGJzdCBjYWxsIGNiaSBjYnIgJyArXG4gICAgICAgICdjbGMgY2xoIGNsaSBjbG4gY2xyIGNscyBjbHQgY2x2IGNseiBjb20gY3AgY3BjIGNwaSBjcHNlIGRlYyBlaWNhbGwgZWlqbXAgZWxwbSBlb3IgJyArXG4gICAgICAgICdmbXVsIGZtdWxzIGZtdWxzdSBpY2FsbCBpam1wIGluIGluYyBqbXAgbGQgbGRkIGxkaSBsZHMgbHBtIGxzbCBsc3IgbW92IG1vdncgbXVsICcgK1xuICAgICAgICAnbXVscyBtdWxzdSBuZWcgbm9wIG9yIG9yaSBvdXQgcG9wIHB1c2ggcmNhbGwgcmV0IHJldGkgcmptcCByb2wgcm9yIHNiYyBzYnIgc2JyYyBzYnJzICcgK1xuICAgICAgICAnc2VjIHNlaCBzYmkgc2JjaSBzYmljIHNiaXMgc2JpdyBzZWkgc2VuIHNlciBzZXMgc2V0IHNldiBzZXogc2xlZXAgc3BtIHN0IHN0ZCBzdHMgc3ViICcgK1xuICAgICAgICAnc3ViaSBzd2FwIHRzdCB3ZHInLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8qIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMgKi9cbiAgICAgICAgJ3IwIHIxIHIyIHIzIHI0IHI1IHI2IHI3IHI4IHI5IHIxMCByMTEgcjEyIHIxMyByMTQgcjE1IHIxNiByMTcgcjE4IHIxOSByMjAgcjIxIHIyMiAnICtcbiAgICAgICAgJ3IyMyByMjQgcjI1IHIyNiByMjcgcjI4IHIyOSByMzAgcjMxIHh8MCB4aCB4bCB5fDAgeWggeWwgenwwIHpoIHpsICcgK1xuICAgICAgICAvKiBJTyBSZWdpc3RlcnMgKEFUTWVnYTEyOCkgKi9cbiAgICAgICAgJ3Vjc3IxYyB1ZHIxIHVjc3IxYSB1Y3NyMWIgdWJycjFsIHVicnIxaCB1Y3NyMGMgdWJycjBoIHRjY3IzYyB0Y2NyM2EgdGNjcjNiIHRjbnQzaCAnICtcbiAgICAgICAgJ3RjbnQzbCBvY3IzYWggb2NyM2FsIG9jcjNiaCBvY3IzYmwgb2NyM2NoIG9jcjNjbCBpY3IzaCBpY3IzbCBldGltc2sgZXRpZnIgdGNjcjFjICcgK1xuICAgICAgICAnb2NyMWNoIG9jcjFjbCB0d2NyIHR3ZHIgdHdhciB0d3NyIHR3YnIgb3NjY2FsIHhtY3JhIHhtY3JiIGVpY3JhIHNwbWNzciBzcG1jciBwb3J0ZyAnICtcbiAgICAgICAgJ2RkcmcgcGluZyBwb3J0ZiBkZHJmIHNyZWcgc3BoIHNwbCB4ZGl2IHJhbXB6IGVpY3JiIGVpbXNrIGdpbXNrIGdpY3IgZWlmciBnaWZyIHRpbXNrICcgK1xuICAgICAgICAndGlmciBtY3VjciBtY3Vjc3IgdGNjcjAgdGNudDAgb2NyMCBhc3NyIHRjY3IxYSB0Y2NyMWIgdGNudDFoIHRjbnQxbCBvY3IxYWggb2NyMWFsICcgK1xuICAgICAgICAnb2NyMWJoIG9jcjFibCBpY3IxaCBpY3IxbCB0Y2NyMiB0Y250MiBvY3IyIG9jZHIgd2R0Y3Igc2Zpb3IgZWVhcmggZWVhcmwgZWVkciBlZWNyICcgK1xuICAgICAgICAncG9ydGEgZGRyYSBwaW5hIHBvcnRiIGRkcmIgcGluYiBwb3J0YyBkZHJjIHBpbmMgcG9ydGQgZGRyZCBwaW5kIHNwZHIgc3BzciBzcGNyIHVkcjAgJyArXG4gICAgICAgICd1Y3NyMGEgdWNzcjBiIHVicnIwbCBhY3NyIGFkbXV4IGFkY3NyIGFkY2ggYWRjbCBwb3J0ZSBkZHJlIHBpbmUgcGluZicsXG4gICAgICBtZXRhOlxuICAgICAgICAnLmJ5dGUgLmNzZWcgLmRiIC5kZWYgLmRldmljZSAuZHNlZyAuZHcgLmVuZG1hY3JvIC5lcXUgLmVzZWcgLmV4aXQgLmluY2x1ZGUgLmxpc3QgJyArXG4gICAgICAgICcubGlzdG1hYyAubWFjcm8gLm5vbGlzdCAub3JnIC5zZXQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSwgLy8gMHguLi4sIGRlY2ltYWwsIGZsb2F0XG4gICAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgLy8gMGIuLi5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcJFthLXpBLVowLTldK3wwb1swLTddKyknIC8vICQuLi4sIDBvLi4uXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdbXlxcXFxcXFxcXVxcJycsXG4gICAgICAgIGlsbGVnYWw6ICdbXlxcXFxcXFxcXVteXFwnXSdcbiAgICAgIH0sXG4gICAgICB7Y2xhc3NOYW1lOiAnc3ltYm9sJywgIGJlZ2luOiAnXltBLVphLXowLTlfLiRdKzonfSxcbiAgICAgIHtjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICcjJywgZW5kOiAnJCd9LFxuICAgICAgeyAgLy8gc3Vic3RpdHV0aW9uIHdpdGhpbiBhIG1hY3JvXG4gICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgYmVnaW46ICdAWzAtOV0rJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1xcJFtcXHdcXGQjQF1bXFx3XFxkX10qL30sXG4gICAgICB7YmVnaW46IC9cXCRcXHsoLio/KX0vfVxuICAgIF1cbiAgfTtcbiAgdmFyIEtFWVdPUkRTID0gJ0JFR0lOIEVORCBpZiBlbHNlIHdoaWxlIGRvIGZvciBpbiBicmVhayBjb250aW51ZSBkZWxldGUgbmV4dCBuZXh0ZmlsZSBmdW5jdGlvbiBmdW5jIGV4aXR8MTAnO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8Yik/cj8nJycvLCBlbmQ6IC8nJycvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/XCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKScvLCBlbmQ6IC8nLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKVwiLywgZW5kOiAvXCIvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhifGJyKScvLCBlbmQ6IC8nL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oYnxicilcIi8sIGVuZDogL1wiL1xuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG4gIHJldHVybiB7XG5cdCBrZXl3b3Jkczoge1xuXHQgICBrZXl3b3JkOiBLRVlXT1JEU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFZBUklBQkxFLFxuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiAnZmFsc2UgaW50IGFic3RyYWN0IHByaXZhdGUgY2hhciBib29sZWFuIHN0YXRpYyBudWxsIGlmIGZvciB0cnVlICcgK1xuICAgICAgJ3doaWxlIGxvbmcgdGhyb3cgZmluYWxseSBwcm90ZWN0ZWQgZmluYWwgcmV0dXJuIHZvaWQgZW51bSBlbHNlICcgK1xuICAgICAgJ2JyZWFrIG5ldyBjYXRjaCBieXRlIHN1cGVyIGNhc2Ugc2hvcnQgZGVmYXVsdCBkb3VibGUgcHVibGljIHRyeSB0aGlzIHN3aXRjaCAnICtcbiAgICAgICdjb250aW51ZSByZXZlcnNlIGZpcnN0ZmFzdCBmaXJzdG9ubHkgZm9ydXBkYXRlIG5vZmV0Y2ggc3VtIGF2ZyBtaW5vZiBtYXhvZiBjb3VudCAnICtcbiAgICAgICdvcmRlciBncm91cCBieSBhc2MgZGVzYyBpbmRleCBoaW50IGxpa2UgZGlzcGFseSBlZGl0IGNsaWVudCBzZXJ2ZXIgdHRzYmVnaW4gJyArXG4gICAgICAndHRzY29tbWl0IHN0ciByZWFsIGRhdGUgY29udGFpbmVyIGFueXR5cGUgY29tbW9uIGRpdiBtb2QnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJzonLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRbXFx3XFxkI0BdW1xcd1xcZF9dKi99LFxuICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICBdXG4gIH07XG4gIHZhciBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBWQVIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXCRcXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBFU0NBUEVEX1FVT1RFID0ge1xuICAgIGNsYXNzTmFtZTogJycsXG4gICAgYmVnaW46IC9cXFxcXCIvXG5cbiAgfTtcbiAgdmFyIEFQT1NfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc2gnLCAnenNoJ10sXG4gICAgbGV4ZW1lczogL1xcYi0/W2EtelxcLl9dK1xcYi8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdpZiB0aGVuIGVsc2UgZWxpZiBmaSBmb3Igd2hpbGUgaW4gZG8gZG9uZSBjYXNlIGVzYWMgZnVuY3Rpb24nLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vIFNoZWxsIGJ1aWx0LWluc1xuICAgICAgICAvLyBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmFzaC9tYW51YWwvaHRtbF9ub2RlL1NoZWxsLUJ1aWx0aW4tQ29tbWFuZHMuaHRtbFxuICAgICAgICAnYnJlYWsgY2QgY29udGludWUgZXZhbCBleGVjIGV4aXQgZXhwb3J0IGdldG9wdHMgaGFzaCBwd2QgcmVhZG9ubHkgcmV0dXJuIHNoaWZ0IHRlc3QgdGltZXMgJyArXG4gICAgICAgICd0cmFwIHVtYXNrIHVuc2V0ICcgK1xuICAgICAgICAvLyBCYXNoIGJ1aWx0LWluc1xuICAgICAgICAnYWxpYXMgYmluZCBidWlsdGluIGNhbGxlciBjb21tYW5kIGRlY2xhcmUgZWNobyBlbmFibGUgaGVscCBsZXQgbG9jYWwgbG9nb3V0IG1hcGZpbGUgcHJpbnRmICcgK1xuICAgICAgICAncmVhZCByZWFkYXJyYXkgc291cmNlIHR5cGUgdHlwZXNldCB1bGltaXQgdW5hbGlhcyAnICtcbiAgICAgICAgLy8gU2hlbGwgbW9kaWZpZXJzXG4gICAgICAgICdzZXQgc2hvcHQgJyArXG4gICAgICAgIC8vIFpzaCBidWlsdC1pbnNcbiAgICAgICAgJ2F1dG9sb2FkIGJnIGJpbmRrZXkgYnllIGNhcCBjaGRpciBjbG9uZSBjb21wYXJndW1lbnRzIGNvbXBjYWxsIGNvbXBjdGwgY29tcGRlc2NyaWJlIGNvbXBmaWxlcyAnICtcbiAgICAgICAgJ2NvbXBncm91cHMgY29tcHF1b3RlIGNvbXB0YWdzIGNvbXB0cnkgY29tcHZhbHVlcyBkaXJzIGRpc2FibGUgZGlzb3duIGVjaG90YyBlY2hvdGkgZW11bGF0ZSAnICtcbiAgICAgICAgJ2ZjIGZnIGZsb2F0IGZ1bmN0aW9ucyBnZXRjYXAgZ2V0bG4gaGlzdG9yeSBpbnRlZ2VyIGpvYnMga2lsbCBsaW1pdCBsb2cgbm9nbG9iIHBvcGQgcHJpbnQgJyArXG4gICAgICAgICdwdXNoZCBwdXNobG4gcmVoYXNoIHNjaGVkIHNldGNhcCBzZXRvcHQgc3RhdCBzdXNwZW5kIHR0eWN0bCB1bmZ1bmN0aW9uIHVuaGFzaCB1bmxpbWl0ICcgK1xuICAgICAgICAndW5zZXRvcHQgdmFyZWQgd2FpdCB3aGVuY2Ugd2hlcmUgd2hpY2ggemNvbXBpbGUgemZvcm1hdCB6ZnRwIHpsZSB6bW9kbG9hZCB6cGFyc2VvcHRzIHpwcm9mICcgK1xuICAgICAgICAnenB0eSB6cmVnZXhwYXJzZSB6c29ja2V0IHpzdHlsZSB6dGNwJyxcbiAgICAgIF86XG4gICAgICAgICctbmUgLWVxIC1sdCAtZ3QgLWYgLWQgLWUgLXMgLWwgLWEnIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eIyFbXlxcbl0rc2hcXHMqJC8sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46IC9cXHdbXFx3XFxkX10qXFxzKlxcKFxccypcXClcXHMqXFx7LyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAvXFx3W1xcd1xcZF9dKi99KV0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBRVU9URV9TVFJJTkcsXG4gICAgICBFU0NBUEVEX1FVT1RFLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBWQVJcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgaWxsZWdhbDogJ15cXC4nLFxuICAgIC8vIFN1cHBvcnQgZXhwbGljaXRlbHkgdHlwZWQgdmFyaWFibGVzIHRoYXQgZW5kIHdpdGggJCUhIG9yICMuXG4gICAgbGV4ZW1lczogJ1thLXpBLVpdW2EtekEtWjAtOV9cXCRcXCVcXCFcXCNdKicsXG4gICAga2V5d29yZHM6IHtcbiAgICAgICAga2V5d29yZDpcbiAgICAgICAgICAnQUJTIEFTQyBBTkQgQVROIEFVVE98MCBCRUVQIEJMT0FEfDEwIEJTQVZFfDEwIENBTEwgQ0FMTFMgQ0RCTCBDSEFJTiBDSERJUiBDSFIkfDEwIENJTlQgQ0lSQ0xFICcgK1xuICAgICAgICAgICdDTEVBUiBDTE9TRSBDTFMgQ09MT1IgQ09NIENPTU1PTiBDT05UIENPUyBDU05HIENTUkxJTiBDVkQgQ1ZJIENWUyBEQVRBIERBVEUkICcgK1xuICAgICAgICAgICdERUZEQkwgREVGSU5UIERFRlNORyBERUZTVFIgREVGfDAgU0VHIFVTUiBERUxFVEUgRElNIERSQVcgRURJVCBFTkQgRU5WSVJPTiBFTlZJUk9OJCAnICtcbiAgICAgICAgICAnRU9GIEVRViBFUkFTRSBFUkRFViBFUkRFViQgRVJMIEVSUiBFUlJPUiBFWFAgRklFTEQgRklMRVMgRklYIEZPUnwwIEZSRSBHRVQgR09TVUJ8MTAgR09UTyAnICtcbiAgICAgICAgICAnSEVYJCBJRiBUSEVOIEVMU0V8MCBJTktFWSQgSU5QIElOUFVUIElOUFVUIyBJTlBVVCQgSU5TVFIgSU1QIElOVCBJT0NUTCBJT0NUTCQgS0VZIE9OICcgK1xuICAgICAgICAgICdPRkYgTElTVCBLSUxMIExFRlQkIExFTiBMRVQgTElORSBMTElTVCBMT0FEIExPQyBMT0NBVEUgTE9GIExPRyBMUFJJTlQgVVNJTkcgTFNFVCAnICtcbiAgICAgICAgICAnTUVSR0UgTUlEJCBNS0RJUiBNS0QkIE1LSSQgTUtTJCBNT0QgTkFNRSBORVcgTkVYVCBOT0lTRSBOT1QgT0NUJCBPTiBPUiBQRU4gUExBWSBTVFJJRyBPUEVOIE9QVElPTiAnICtcbiAgICAgICAgICAnQkFTRSBPVVQgUEFJTlQgUEFMRVRURSBQQ09QWSBQRUVLIFBNQVAgUE9JTlQgUE9LRSBQT1MgUFJJTlQgUFJJTlRdIFBTRVQgUFJFU0VUICcgK1xuICAgICAgICAgICdQVVQgUkFORE9NSVpFIFJFQUQgUkVNIFJFTlVNIFJFU0VUfDAgUkVTVE9SRSBSRVNVTUUgUkVUVVJOfDAgUklHSFQkIFJNRElSIFJORCBSU0VUICcgK1xuICAgICAgICAgICdSVU4gU0FWRSBTQ1JFRU4gU0dOIFNIRUxMIFNJTiBTT1VORCBTUEFDRSQgU1BDIFNRUiBTVEVQIFNUSUNLIFNUT1AgU1RSJCBTVFJJTkckIFNXQVAgJyArXG4gICAgICAgICAgJ1NZU1RFTSBUQUIgVEFOIFRJTUUkIFRJTUVSIFRST0ZGIFRST04gVE8gVVNSIFZBTCBWQVJQVFIgVkFSUFRSJCBWSUVXIFdBSVQgV0hJTEUgJyArXG4gICAgICAgICAgJ1dFTkQgV0lEVEggV0lORE9XIFdSSVRFIFhPUidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCdSRU0nLCAnJCcsIHtyZWxldmFuY2U6IDEwfSksXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcJycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICAvLyBNYXRjaCBsaW5lIG51bWJlcnNcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdeWzAtOV0rXFwgJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gTWF0Y2ggdHlwZWQgbnVtZXJpYyBjb25zdGFudHMgKDEwMDAsIDEyLjM0ISwgMS4yZTUsIDEuNSMsIDEuMkQyKVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKFswLTldK1swLTllZEVEXFwuXSpbI1xcIV0/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gTWF0Y2ggaGV4YWRlY2ltYWwgbnVtYmVycyAoJkh4eHh4KVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJyhcXCZbaEhdWzAtOWEtZkEtRl17MSw0fSknXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBNYXRjaCBvY3RhbCBudW1iZXJzICgmT3h4eHh4eClcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoXFwmW29PXVswLTddezEsNn0pJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKXtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgLy8gQXR0cmlidXRlXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAvPC8sIGVuZDogLz4vXG4gICAgICB9LFxuICAgICAgLy8gU3BlY2lmaWNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC86Oj0vLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIENvbW1vblxuICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcyl7XG4gIHZhciBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgIGJlZ2luOiAnW1xcXFwrXFxcXC1dJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2JmJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1teXFxcXFtcXFxcXVxcXFwuLFxcXFwrXFxcXC08PiBcXHJcXG5dJyxcbiAgICAgICAgJ1tcXFxcW1xcXFxdXFxcXC4sXFxcXCtcXFxcLTw+IFxcclxcbl0nLFxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiAnW1xcXFxbXFxcXF1dJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1tcXFxcLixdJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyB0aGlzIG1vZGUgd29ya3MgYXMgdGhlIG9ubHkgcmVsZXZhbmNlIGNvdW50ZXJcbiAgICAgICAgYmVnaW46IC8oPzpcXCtcXCt8XFwtXFwtKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbTElURVJBTF1cbiAgICAgIH0sXG4gICAgICBMSVRFUkFMXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZGl2IG1vZCBpbiBhbmQgb3Igbm90IHhvciBhc3NlcnRlcnJvciBiZWdpbiBjYXNlIGRvIGRvd250byBlbHNlIGVuZCBleGl0IGZvciBpZiBvZiByZXBlYXQgdGhlbiB0byAnICtcbiAgICAndW50aWwgd2hpbGUgd2l0aCB2YXInO1xuICB2YXIgTElURVJBTFMgPSAnZmFsc2UgdHJ1ZSc7XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAvXFx7LyxcbiAgICAgIC9cXH0vLFxuICAgICAge1xuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVChcbiAgICAgIC9cXChcXCovLFxuICAgICAgL1xcKlxcKS8sXG4gICAgICB7XG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH1cbiAgICApXG4gIF07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLCBlbmQ6IC8nLyxcbiAgICBjb250YWluczogW3tiZWdpbjogLycnL31dXG4gIH07XG4gIHZhciBDSEFSX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCBiZWdpbjogLygjXFxkKykrL1xuICB9O1xuICB2YXIgREFURSA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8oRFR8RHxUKScsXG4gICAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIERCTF9RVU9URURfVkFSSUFCTEUgPSB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyBub3QgYSBzdHJpbmcgdGVjaG5pY2FsbHkgYnV0IG1ha2VzIHNlbnNlIHRvIGJlIGhpZ2hsaWdodGVkIGluIHRoZSBzYW1lIHN0eWxlXG4gICAgICBiZWdpbjogJ1wiJyxcbiAgICAgIGVuZDogJ1wiJ1xuICB9O1xuXG4gIHZhciBQUk9DRURVUkUgPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGJlZ2luS2V5d29yZHM6ICdwcm9jZWR1cmUnLCBlbmQ6IC9bOjtdLyxcbiAgICBrZXl3b3JkczogJ3Byb2NlZHVyZXwxMCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCBDSEFSX1NUUklOR11cbiAgICAgIH1cbiAgICBdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICB9O1xuXG4gIHZhciBPQkpFQ1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luOiAnT0JKRUNUIChUYWJsZXxGb3JtfFJlcG9ydHxEYXRhcG9ydHxDb2RldW5pdHxYTUxwb3J0fE1lbnVTdWl0ZXxQYWdlfFF1ZXJ5KSAoXFxcXGQrKSAoW15cXFxcclxcXFxuXSspJyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICBQUk9DRURVUkVcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7IGtleXdvcmQ6IEtFWVdPUkRTLCBsaXRlcmFsOiBMSVRFUkFMUyB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBTVFJJTkcsIENIQVJfU1RSSU5HLFxuICAgICAgREFURSwgREJMX1FVT1RFRF9WQVJJQUJMRSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBPQkpFQ1QsXG4gICAgICBQUk9DRURVUkVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY2FwbnAnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ3N0cnVjdCBlbnVtIGludGVyZmFjZSB1bmlvbiBncm91cCBpbXBvcnQgdXNpbmcgY29uc3QgYW5ub3RhdGlvbiBleHRlbmRzIGluIG9mIG9uIGFzIHdpdGggZnJvbSBmaXhlZCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ1ZvaWQgQm9vbCBJbnQ4IEludDE2IEludDMyIEludDY0IFVJbnQ4IFVJbnQxNiBVSW50MzIgVUludDY0IEZsb2F0MzIgRmxvYXQ2NCAnICtcbiAgICAgICAgJ1RleHQgRGF0YSBBbnlQb2ludGVyIEFueVN0cnVjdCBDYXBhYmlsaXR5IExpc3QnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9AMHhbXFx3XFxkXXsxNn07LyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvQFxcZCtcXGIvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdzdHJ1Y3QgZW51bScsIGVuZDogL1xcey8sXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICAgIHN0YXJ0czoge2VuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlfSAvLyBoYWNrOiBlYXRpbmcgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgdGl0bGVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbnRlcmZhY2UnLCBlbmQ6IC9cXHsvLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgICBzdGFydHM6IHtlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZX0gLy8gaGFjazogZWF0aW5nIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHRpdGxlXG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIDIuMy4gSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4gIHZhciBLRVlXT1JEUyA9XG4gICAgJ2Fzc2VtYmx5IG1vZHVsZSBwYWNrYWdlIGltcG9ydCBhbGlhcyBjbGFzcyBpbnRlcmZhY2Ugb2JqZWN0IGdpdmVuIHZhbHVlICcgK1xuICAgICdhc3NpZ24gdm9pZCBmdW5jdGlvbiBuZXcgb2YgZXh0ZW5kcyBzYXRpc2ZpZXMgYWJzdHJhY3RzIGluIG91dCByZXR1cm4gJyArXG4gICAgJ2JyZWFrIGNvbnRpbnVlIHRocm93IGFzc2VydCBkeW5hbWljIGlmIGVsc2Ugc3dpdGNoIGNhc2UgZm9yIHdoaWxlIHRyeSAnICtcbiAgICAnY2F0Y2ggZmluYWxseSB0aGVuIGxldCB0aGlzIG91dGVyIHN1cGVyIGlzIGV4aXN0cyBub25lbXB0eSc7XG4gIC8vIDcuNC4xIERlY2xhcmF0aW9uIE1vZGlmaWVyc1xuICB2YXIgREVDTEFSQVRJT05fTU9ESUZJRVJTID1cbiAgICAnc2hhcmVkIGFic3RyYWN0IGZvcm1hbCBkZWZhdWx0IGFjdHVhbCB2YXJpYWJsZSBsYXRlIG5hdGl2ZSBkZXByZWNhdGVkJyArXG4gICAgJ2ZpbmFsIHNlYWxlZCBhbm5vdGF0aW9uIHN1cHByZXNzV2FybmluZ3Mgc21hbGwnO1xuICAvLyA3LjQuMiBEb2N1bWVudGF0aW9uXG4gIHZhciBET0NVTUVOVEFUSU9OID1cbiAgICAnZG9jIGJ5IGxpY2Vuc2Ugc2VlIHRocm93cyB0YWdnZWQnO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLCBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgYmVnaW46IC9gYC8sIGVuZDogL2BgLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuICB2YXIgRVhQUkVTU0lPTlMgPSBbXG4gICAge1xuICAgICAgLy8gdmVyYmF0aW0gc3RyaW5nXG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcIlwiXCInLFxuICAgICAgZW5kOiAnXCJcIlwiJyxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIHN0cmluZyBsaXRlcmFsIG9yIHRlbXBsYXRlXG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgIGNvbnRhaW5zOiBbU1VCU1RdXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBjaGFyYWN0ZXIgbGl0ZXJhbFxuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiBcIidcIixcbiAgICAgIGVuZDogXCInXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIG51bWVyaWMgbGl0ZXJhbFxuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnI1swLTlhLWZBLUZfXSt8XFxcXCRbMDFfXSt8WzAtOV9dKyg/OlxcXFwuWzAtOV9dKD86W2VFXVsrLV0/XFxcXGQrKT8pP1trTUdUUG11bnBmXT8nLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IEVYUFJFU1NJT05TO1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTICsgJyAnICsgREVDTEFSQVRJT05fTU9ESUZJRVJTLFxuICAgICAgbWV0YTogRE9DVU1FTlRBVElPTlxuICAgIH0sXG4gICAgaWxsZWdhbDogJ1xcXFwkW14wMV18I1teMC05YS1mQS1GXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycsIHtjb250YWluczogWydzZWxmJ119KSxcbiAgICAgIHtcbiAgICAgICAgLy8gY29tcGlsZXIgYW5ub3RhdGlvblxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdAW2Etel1cXFxcdyooPzpcXFxcOlxcXCJbXlxcXCJdKlxcXCIpPydcbiAgICAgIH1cbiAgICBdLmNvbmNhdChFWFBSRVNTSU9OUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjbGVhbicsJ2ljbCcsJ2RjbCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaWYgbGV0IGluIHdpdGggd2hlcmUgY2FzZSBvZiBjbGFzcyBpbnN0YW5jZSBvdGhlcndpc2UgJyArXG4gICAgICAgICdpbXBsZW1lbnRhdGlvbiBkZWZpbml0aW9uIHN5c3RlbSBtb2R1bGUgZnJvbSBpbXBvcnQgcXVhbGlmaWVkIGFzICcgK1xuICAgICAgICAnc3BlY2lhbCBjb2RlIGlubGluZSBmb3JlaWduIGV4cG9ydCBjY2FsbCBzdGRjYWxsIGdlbmVyaWMgZGVyaXZlICcgK1xuICAgICAgICAnaW5maXggaW5maXhsIGluZml4cicsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ0ludCBSZWFsIENoYXIgQm9vbCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnVHJ1ZSBGYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuXG4gICAgICB7YmVnaW46ICctPnw8LVt8Ol0/fCMhP3w+Pj18XFxcXHtcXFxcfHxcXFxcfFxcXFx9fDo9PXw9Onw8Pid9IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGtleXdvcmRzID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgLy8gQ2xvanVyZSBrZXl3b3Jkc1xuICAgICAgJ2RlZiBkZWZvbmNlIGNvbmQgYXBwbHkgaWYtbm90IGlmLWxldCBpZiBub3Qgbm90PSA9IDwgPiA8PSA+PSA9PSArIC8gKiAtIHJlbSAnK1xuICAgICAgJ3F1b3QgbmVnPyBwb3M/IGRlbGF5PyBzeW1ib2w/IGtleXdvcmQ/IHRydWU/IGZhbHNlPyBpbnRlZ2VyPyBlbXB0eT8gY29sbD8gbGlzdD8gJytcbiAgICAgICdzZXQ/IGlmbj8gZm4/IGFzc29jaWF0aXZlPyBzZXF1ZW50aWFsPyBzb3J0ZWQ/IGNvdW50ZWQ/IHJldmVyc2libGU/IG51bWJlcj8gZGVjaW1hbD8gJytcbiAgICAgICdjbGFzcz8gZGlzdGluY3Q/IGlzYT8gZmxvYXQ/IHJhdGlvbmFsPyByZWR1Y2VkPyByYXRpbz8gb2RkPyBldmVuPyBjaGFyPyBzZXE/IHZlY3Rvcj8gJytcbiAgICAgICdzdHJpbmc/IG1hcD8gbmlsPyBjb250YWlucz8gemVybz8gaW5zdGFuY2U/IG5vdC1ldmVyeT8gbm90LWFueT8gbGlic3BlYz8gLT4gLT4+IC4uIC4gJytcbiAgICAgICdpbmMgY29tcGFyZSBkbyBkb3RpbWVzIG1hcGNhdCB0YWtlIHJlbW92ZSB0YWtlLXdoaWxlIGRyb3AgbGV0Zm4gZHJvcC1sYXN0IHRha2UtbGFzdCAnK1xuICAgICAgJ2Ryb3Atd2hpbGUgd2hpbGUgaW50ZXJuIGNvbmRwIGNhc2UgcmVkdWNlZCBjeWNsZSBzcGxpdC1hdCBzcGxpdC13aXRoIHJlcGVhdCByZXBsaWNhdGUgJytcbiAgICAgICdpdGVyYXRlIHJhbmdlIG1lcmdlIHppcG1hcCBkZWNsYXJlIGxpbmUtc2VxIHNvcnQgY29tcGFyYXRvciBzb3J0LWJ5IGRvcnVuIGRvYWxsIG50aG5leHQgJytcbiAgICAgICdudGhyZXN0IHBhcnRpdGlvbiBldmFsIGRvc2VxIGF3YWl0IGF3YWl0LWZvciBsZXQgYWdlbnQgYXRvbSBzZW5kIHNlbmQtb2ZmIHJlbGVhc2UtcGVuZGluZy1zZW5kcyAnK1xuICAgICAgJ2FkZC13YXRjaCBtYXB2IGZpbHRlcnYgcmVtb3ZlLXdhdGNoIGFnZW50LWVycm9yIHJlc3RhcnQtYWdlbnQgc2V0LWVycm9yLWhhbmRsZXIgZXJyb3ItaGFuZGxlciAnK1xuICAgICAgJ3NldC1lcnJvci1tb2RlISBlcnJvci1tb2RlIHNodXRkb3duLWFnZW50cyBxdW90ZSB2YXIgZm4gbG9vcCByZWN1ciB0aHJvdyB0cnkgbW9uaXRvci1lbnRlciAnK1xuICAgICAgJ21vbml0b3ItZXhpdCBkZWZtYWNybyBkZWZuIGRlZm4tIG1hY3JvZXhwYW5kIG1hY3JvZXhwYW5kLTEgZm9yIGRvc3luYyBhbmQgb3IgJytcbiAgICAgICd3aGVuIHdoZW4tbm90IHdoZW4tbGV0IGNvbXAganV4dCBwYXJ0aWFsIHNlcXVlbmNlIG1lbW9pemUgY29uc3RhbnRseSBjb21wbGVtZW50IGlkZW50aXR5IGFzc2VydCAnK1xuICAgICAgJ3BlZWsgcG9wIGRvdG8gcHJveHkgZGVmc3RydWN0IGZpcnN0IHJlc3QgY29ucyBkZWZwcm90b2NvbCBjYXN0IGNvbGwgZGVmdHlwZSBkZWZyZWNvcmQgbGFzdCBidXRsYXN0ICcrXG4gICAgICAnc2lncyByZWlmeSBzZWNvbmQgZmZpcnN0IGZuZXh0IG5maXJzdCBubmV4dCBkZWZtdWx0aSBkZWZtZXRob2QgbWV0YSB3aXRoLW1ldGEgbnMgaW4tbnMgY3JlYXRlLW5zIGltcG9ydCAnK1xuICAgICAgJ3JlZmVyIGtleXMgc2VsZWN0LWtleXMgdmFscyBrZXkgdmFsIHJzZXEgbmFtZSBuYW1lc3BhY2UgcHJvbWlzZSBpbnRvIHRyYW5zaWVudCBwZXJzaXN0ZW50ISBjb25qISAnK1xuICAgICAgJ2Fzc29jISBkaXNzb2MhIHBvcCEgZGlzaiEgdXNlIGNsYXNzIHR5cGUgbnVtIGZsb2F0IGRvdWJsZSBzaG9ydCBieXRlIGJvb2xlYW4gYmlnaW50IGJpZ2ludGVnZXIgJytcbiAgICAgICdiaWdkZWMgcHJpbnQtbWV0aG9kIHByaW50LWR1cCB0aHJvdy1pZiBwcmludGYgZm9ybWF0IGxvYWQgY29tcGlsZSBnZXQtaW4gdXBkYXRlLWluIHByIHByLW9uIG5ld2xpbmUgJytcbiAgICAgICdmbHVzaCByZWFkIHNsdXJwIHJlYWQtbGluZSBzdWJ2ZWMgd2l0aC1vcGVuIG1lbWZuIHRpbWUgcmUtZmluZCByZS1ncm91cHMgcmFuZC1pbnQgcmFuZCBtb2QgbG9ja2luZyAnK1xuICAgICAgJ2Fzc2VydC12YWxpZC1mZGVjbCBhbGlhcyByZXNvbHZlIHJlZiBkZXJlZiByZWZzZXQgc3dhcCEgcmVzZXQhIHNldC12YWxpZGF0b3IhIGNvbXBhcmUtYW5kLXNldCEgYWx0ZXItbWV0YSEgJytcbiAgICAgICdyZXNldC1tZXRhISBjb21tdXRlIGdldC12YWxpZGF0b3IgYWx0ZXIgcmVmLXNldCByZWYtaGlzdG9yeS1jb3VudCByZWYtbWluLWhpc3RvcnkgcmVmLW1heC1oaXN0b3J5IGVuc3VyZSBzeW5jIGlvISAnK1xuICAgICAgJ25ldyBuZXh0IGNvbmogc2V0ISB0by1hcnJheSBmdXR1cmUgZnV0dXJlLWNhbGwgaW50by1hcnJheSBhc2V0IGdlbi1jbGFzcyByZWR1Y2UgbWFwIGZpbHRlciBmaW5kIGVtcHR5ICcrXG4gICAgICAnaGFzaC1tYXAgaGFzaC1zZXQgc29ydGVkLW1hcCBzb3J0ZWQtbWFwLWJ5IHNvcnRlZC1zZXQgc29ydGVkLXNldC1ieSB2ZWMgdmVjdG9yIHNlcSBmbGF0dGVuIHJldmVyc2UgYXNzb2MgZGlzc29jIGxpc3QgJytcbiAgICAgICdkaXNqIGdldCB1bmlvbiBkaWZmZXJlbmNlIGludGVyc2VjdGlvbiBleHRlbmQgZXh0ZW5kLXR5cGUgZXh0ZW5kLXByb3RvY29sIGludCBudGggZGVsYXkgY291bnQgY29uY2F0IGNodW5rIGNodW5rLWJ1ZmZlciAnK1xuICAgICAgJ2NodW5rLWFwcGVuZCBjaHVuay1maXJzdCBjaHVuay1yZXN0IG1heCBtaW4gZGVjIHVuY2hlY2tlZC1pbmMtaW50IHVuY2hlY2tlZC1pbmMgdW5jaGVja2VkLWRlYy1pbmMgdW5jaGVja2VkLWRlYyB1bmNoZWNrZWQtbmVnYXRlICcrXG4gICAgICAndW5jaGVja2VkLWFkZC1pbnQgdW5jaGVja2VkLWFkZCB1bmNoZWNrZWQtc3VidHJhY3QtaW50IHVuY2hlY2tlZC1zdWJ0cmFjdCBjaHVuay1uZXh0IGNodW5rLWNvbnMgY2h1bmtlZC1zZXE/IHBybiB2YXJ5LW1ldGEgJytcbiAgICAgICdsYXp5LXNlcSBzcHJlYWQgbGlzdCogc3RyIGZpbmQta2V5d29yZCBrZXl3b3JkIHN5bWJvbCBnZW5zeW0gZm9yY2UgcmF0aW9uYWxpemUnXG4gICB9O1xuXG4gIHZhciBTWU1CT0xTVEFSVCA9ICdhLXpBLVpfXFxcXC0hLj8rKj08PiYjXFwnJztcbiAgdmFyIFNZTUJPTF9SRSA9ICdbJyArIFNZTUJPTFNUQVJUICsgJ11bJyArIFNZTUJPTFNUQVJUICsgJzAtOS87Ol0qJztcbiAgdmFyIFNJTVBMRV9OVU1CRVJfUkUgPSAnWy0rXT9cXFxcZCsoXFxcXC5cXFxcZCspPyc7XG5cbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBiZWdpbjogU1lNQk9MX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsIGJlZ2luOiBTSU1QTEVfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgU1RSSU5HID0gaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSk7XG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICc7JyxcbiAgICAnJCcsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgTElURVJBTCA9IHtcbiAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICBiZWdpbjogL1xcYih0cnVlfGZhbHNlfG5pbClcXGIvXG4gIH07XG4gIHZhciBDT0xMRUNUSU9OID0ge1xuICAgIGJlZ2luOiAnW1xcXFxbXFxcXHtdJywgZW5kOiAnW1xcXFxdXFxcXH1dJ1xuICB9O1xuICB2YXIgSElOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogJ1xcXFxeJyArIFNZTUJPTF9SRVxuICB9O1xuICB2YXIgSElOVF9DT0wgPSBobGpzLkNPTU1FTlQoJ1xcXFxeXFxcXHsnLCAnXFxcXH0nKTtcbiAgdmFyIEtFWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzpdezEsMn0nICsgU1lNQk9MX1JFXG4gIH07XG4gIHZhciBMSVNUID0ge1xuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSdcbiAgfTtcbiAgdmFyIEJPRFkgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBOQU1FID0ge1xuICAgIGtleXdvcmRzOiBrZXl3b3JkcyxcbiAgICBsZXhlbWVzOiBTWU1CT0xfUkUsXG4gICAgY2xhc3NOYW1lOiAnbmFtZScsIGJlZ2luOiBTWU1CT0xfUkUsXG4gICAgc3RhcnRzOiBCT0RZXG4gIH07XG4gIHZhciBERUZBVUxUX0NPTlRBSU5TID0gW0xJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMLCBTWU1CT0xdO1xuXG4gIExJU1QuY29udGFpbnMgPSBbaGxqcy5DT01NRU5UKCdjb21tZW50JywgJycpLCBOQU1FLCBCT0RZXTtcbiAgQk9EWS5jb250YWlucyA9IERFRkFVTFRfQ09OVEFJTlM7XG4gIENPTExFQ1RJT04uY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuICBISU5UX0NPTC5jb250YWlucyA9IFtDT0xMRUNUSU9OXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY2xqJ10sXG4gICAgaWxsZWdhbDogL1xcUy8sXG4gICAgY29udGFpbnM6IFtMSVNULCBTVFJJTkcsIEhJTlQsIEhJTlRfQ09MLCBDT01NRU5ULCBLRVksIENPTExFQ1RJT04sIE5VTUJFUiwgTElURVJBTF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eKFtcXHcuLV0rfFxccyojXyk/PT4vLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ2Nsb2p1cmUnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjbWFrZS5pbiddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIHNjcmlwdGluZyBjb21tYW5kc1xuICAgICAgICAnYnJlYWsgY21ha2VfaG9zdF9zeXN0ZW1faW5mb3JtYXRpb24gY21ha2VfbWluaW11bV9yZXF1aXJlZCBjbWFrZV9wYXJzZV9hcmd1bWVudHMgJyArXG4gICAgICAgICdjbWFrZV9wb2xpY3kgY29uZmlndXJlX2ZpbGUgY29udGludWUgZWxzZWlmIGVsc2UgZW5kZm9yZWFjaCBlbmRmdW5jdGlvbiBlbmRpZiBlbmRtYWNybyAnICtcbiAgICAgICAgJ2VuZHdoaWxlIGV4ZWN1dGVfcHJvY2VzcyBmaWxlIGZpbmRfZmlsZSBmaW5kX2xpYnJhcnkgZmluZF9wYWNrYWdlIGZpbmRfcGF0aCAnICtcbiAgICAgICAgJ2ZpbmRfcHJvZ3JhbSBmb3JlYWNoIGZ1bmN0aW9uIGdldF9jbWFrZV9wcm9wZXJ0eSBnZXRfZGlyZWN0b3J5X3Byb3BlcnR5ICcgK1xuICAgICAgICAnZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudCBnZXRfcHJvcGVydHkgaWYgaW5jbHVkZSBpbmNsdWRlX2d1YXJkIGxpc3QgbWFjcm8gJyArXG4gICAgICAgICdtYXJrX2FzX2FkdmFuY2VkIG1hdGggbWVzc2FnZSBvcHRpb24gcmV0dXJuIHNlcGFyYXRlX2FyZ3VtZW50cyAnICtcbiAgICAgICAgJ3NldF9kaXJlY3RvcnlfcHJvcGVydGllcyBzZXRfcHJvcGVydHkgc2V0IHNpdGVfbmFtZSBzdHJpbmcgdW5zZXQgdmFyaWFibGVfd2F0Y2ggd2hpbGUgJyArXG4gICAgICAgIC8vIHByb2plY3QgY29tbWFuZHNcbiAgICAgICAgJ2FkZF9jb21waWxlX2RlZmluaXRpb25zIGFkZF9jb21waWxlX29wdGlvbnMgYWRkX2N1c3RvbV9jb21tYW5kIGFkZF9jdXN0b21fdGFyZ2V0ICcgK1xuICAgICAgICAnYWRkX2RlZmluaXRpb25zIGFkZF9kZXBlbmRlbmNpZXMgYWRkX2V4ZWN1dGFibGUgYWRkX2xpYnJhcnkgYWRkX2xpbmtfb3B0aW9ucyAnICtcbiAgICAgICAgJ2FkZF9zdWJkaXJlY3RvcnkgYWRkX3Rlc3QgYXV4X3NvdXJjZV9kaXJlY3RvcnkgYnVpbGRfY29tbWFuZCBjcmVhdGVfdGVzdF9zb3VyY2VsaXN0ICcgK1xuICAgICAgICAnZGVmaW5lX3Byb3BlcnR5IGVuYWJsZV9sYW5ndWFnZSBlbmFibGVfdGVzdGluZyBleHBvcnQgZmx0a193cmFwX3VpICcgK1xuICAgICAgICAnZ2V0X3NvdXJjZV9maWxlX3Byb3BlcnR5IGdldF90YXJnZXRfcHJvcGVydHkgZ2V0X3Rlc3RfcHJvcGVydHkgaW5jbHVkZV9kaXJlY3RvcmllcyAnICtcbiAgICAgICAgJ2luY2x1ZGVfZXh0ZXJuYWxfbXNwcm9qZWN0IGluY2x1ZGVfcmVndWxhcl9leHByZXNzaW9uIGluc3RhbGwgbGlua19kaXJlY3RvcmllcyAnICtcbiAgICAgICAgJ2xpbmtfbGlicmFyaWVzIGxvYWRfY2FjaGUgcHJvamVjdCBxdF93cmFwX2NwcCBxdF93cmFwX3VpIHJlbW92ZV9kZWZpbml0aW9ucyAnICtcbiAgICAgICAgJ3NldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcyBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMgc2V0X3Rlc3RzX3Byb3BlcnRpZXMgc291cmNlX2dyb3VwICcgK1xuICAgICAgICAndGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMgdGFyZ2V0X2NvbXBpbGVfZmVhdHVyZXMgdGFyZ2V0X2NvbXBpbGVfb3B0aW9ucyAnICtcbiAgICAgICAgJ3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzIHRhcmdldF9saW5rX2RpcmVjdG9yaWVzIHRhcmdldF9saW5rX2xpYnJhcmllcyAnICtcbiAgICAgICAgJ3RhcmdldF9saW5rX29wdGlvbnMgdGFyZ2V0X3NvdXJjZXMgdHJ5X2NvbXBpbGUgdHJ5X3J1biAnICtcbiAgICAgICAgLy8gQ1Rlc3QgY29tbWFuZHNcbiAgICAgICAgJ2N0ZXN0X2J1aWxkIGN0ZXN0X2NvbmZpZ3VyZSBjdGVzdF9jb3ZlcmFnZSBjdGVzdF9lbXB0eV9iaW5hcnlfZGlyZWN0b3J5IGN0ZXN0X21lbWNoZWNrICcgK1xuICAgICAgICAnY3Rlc3RfcmVhZF9jdXN0b21fZmlsZXMgY3Rlc3RfcnVuX3NjcmlwdCBjdGVzdF9zbGVlcCBjdGVzdF9zdGFydCBjdGVzdF9zdWJtaXQgJyArXG4gICAgICAgICdjdGVzdF90ZXN0IGN0ZXN0X3VwZGF0ZSBjdGVzdF91cGxvYWQgJyArXG4gICAgICAgIC8vIGRlcHJlY2F0ZWQgY29tbWFuZHNcbiAgICAgICAgJ2J1aWxkX25hbWUgZXhlY19wcm9ncmFtIGV4cG9ydF9saWJyYXJ5X2RlcGVuZGVuY2llcyBpbnN0YWxsX2ZpbGVzIGluc3RhbGxfcHJvZ3JhbXMgJyArXG4gICAgICAgICdpbnN0YWxsX3RhcmdldHMgbG9hZF9jb21tYW5kIG1ha2VfZGlyZWN0b3J5IG91dHB1dF9yZXF1aXJlZF9maWxlcyByZW1vdmUgJyArXG4gICAgICAgICdzdWJkaXJfZGVwZW5kcyBzdWJkaXJzIHVzZV9tYW5nbGVkX21lc2EgdXRpbGl0eV9zb3VyY2UgdmFyaWFibGVfcmVxdWlyZXMgd3JpdGVfZmlsZSAnICtcbiAgICAgICAgJ3F0NV91c2VfbW9kdWxlcyBxdDVfdXNlX3BhY2thZ2UgcXQ1X3dyYXBfY3BwICcgK1xuICAgICAgICAvLyBjb3JlIGtleXdvcmRzXG4gICAgICAgICdvbiBvZmYgdHJ1ZSBmYWxzZSBhbmQgb3Igbm90IGNvbW1hbmQgcG9saWN5IHRhcmdldCB0ZXN0IGV4aXN0cyBpc19uZXdlcl90aGFuICcgK1xuICAgICAgICAnaXNfZGlyZWN0b3J5IGlzX3N5bWxpbmsgaXNfYWJzb2x1dGUgbWF0Y2hlcyBsZXNzIGdyZWF0ZXIgZXF1YWwgbGVzc19lcXVhbCAnICtcbiAgICAgICAgJ2dyZWF0ZXJfZXF1YWwgc3RybGVzcyBzdHJncmVhdGVyIHN0cmVxdWFsIHN0cmxlc3NfZXF1YWwgc3RyZ3JlYXRlcl9lcXVhbCB2ZXJzaW9uX2xlc3MgJyArXG4gICAgICAgICd2ZXJzaW9uX2dyZWF0ZXIgdmVyc2lvbl9lcXVhbCB2ZXJzaW9uX2xlc3NfZXF1YWwgdmVyc2lvbl9ncmVhdGVyX2VxdWFsIGluX2xpc3QgZGVmaW5lZCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcJHsnLCBlbmQ6ICd9J1xuICAgICAgfSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgLy8gSlMga2V5d29yZHNcbiAgICAgICdpbiBpZiBmb3Igd2hpbGUgZmluYWxseSBuZXcgZG8gcmV0dXJuIGVsc2UgYnJlYWsgY2F0Y2ggaW5zdGFuY2VvZiB0aHJvdyB0cnkgdGhpcyAnICtcbiAgICAgICdzd2l0Y2ggY29udGludWUgdHlwZW9mIGRlbGV0ZSBkZWJ1Z2dlciBzdXBlciB5aWVsZCBpbXBvcnQgZXhwb3J0IGZyb20gYXMgZGVmYXVsdCBhd2FpdCAnICtcbiAgICAgIC8vIENvZmZlZSBrZXl3b3Jkc1xuICAgICAgJ3RoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QnLFxuICAgIGxpdGVyYWw6XG4gICAgICAvLyBKUyBsaXRlcmFsc1xuICAgICAgJ3RydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgJyArXG4gICAgICAvLyBDb2ZmZWUgbGl0ZXJhbHNcbiAgICAgICd5ZXMgbm8gb24gb2ZmJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICducG0gcmVxdWlyZSBjb25zb2xlIHByaW50IG1vZHVsZSBnbG9iYWwgd2luZG93IGRvY3VtZW50J1xuICB9O1xuICB2YXIgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXVswLTlBLVphLXokX10qJztcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogLyNcXHsvLCBlbmQ6IC99LyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgdmFyIEVYUFJFU1NJT05TID0gW1xuICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfTlVNQkVSX01PREUsIHtzdGFydHM6IHtlbmQ6ICcoXFxcXHMqLyk/JywgcmVsZXZhbmNlOiAwfX0pLCAvLyBhIG51bWJlciB0cmllcyB0byBlYXQgdGhlIGZvbGxvd2luZyBzbGFzaCB0byBwcmV2ZW50IHRyZWF0aW5nIGl0IGFzIGEgcmVnZXhwXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycnJy8sIGVuZDogLycnJy8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycvLCBlbmQ6IC8nLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJy8vLycsIGVuZDogJy8vLycsXG4gICAgICAgICAgY29udGFpbnM6IFtTVUJTVCwgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnLy9bZ2ltXSonLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gcmVnZXggY2FuJ3Qgc3RhcnQgd2l0aCBzcGFjZSB0byBwYXJzZSB4IC8gMiAvIDMgYXMgdHdvIGRpdmlzaW9uc1xuICAgICAgICAgIC8vIHJlZ2V4IGNhbid0IHN0YXJ0IHdpdGggKiwgYW5kIGl0IHN1cHBvcnRzIGFuIFwiaWxsZWdhbFwiIGluIHRoZSBtYWluIG1vZGVcbiAgICAgICAgICBiZWdpbjogL1xcLyg/IVsgKl0pKFxcXFxcXC98LikqP1xcL1tnaW1dKig/PVxcVykvXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnQCcgKyBKU19JREVOVF9SRSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIH0sXG4gICAge1xuICAgICAgc3ViTGFuZ3VhZ2U6ICdqYXZhc2NyaXB0JyxcbiAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ2BgYCcsIGVuZDogJ2BgYCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFWFBSRVNTSU9OUztcblxuICB2YXIgVElUTEUgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IEpTX0lERU5UX1JFfSk7XG4gIHZhciBQQVJBTVNfUkUgPSAnKFxcXFwoLipcXFxcKSk/XFxcXHMqXFxcXEJbLT1dPic7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoW15cXFxcKF0nLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAvKiBXZSBuZWVkIGFub3RoZXIgY29udGFpbmVkIG5hbWVsZXNzIG1vZGUgdG8gbm90IGhhdmUgZXZlcnkgbmVzdGVkXG4gICAgcGFpciBvZiBwYXJlbnMgdG8gYmUgY2FsbGVkIFwicGFyYW1zXCIgKi9cbiAgICBjb250YWluczogW3tcbiAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXS5jb25jYXQoRVhQUkVTU0lPTlMpXG4gICAgfV1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY29mZmVlJywgJ2Nzb24nLCAnaWNlZCddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlMuY29uY2F0KFtcbiAgICAgIGhsanMuQ09NTUVOVCgnIyMjJywgJyMjIycpLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ15cXFxccyonICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqPVxcXFxzKicgKyBQQVJBTVNfUkUsIGVuZDogJ1stPV0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbVElUTEUsIFBBUkFNU11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGFub255bW91cyBmdW5jdGlvbiBzdGFydFxuICAgICAgICBiZWdpbjogL1s6XFwoLD1dXFxzKi8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogUEFSQU1TX1JFLCBlbmQ6ICdbLT1dPicsXG4gICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbUEFSQU1TXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMnLFxuICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbVElUTEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBUSVRMRVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ198MCBhcyBhdCBjb2ZpeCBlbHNlIGVuZCBleGlzdHMgZXhpc3RzMiBmaXggZm9yIGZvcmFsbCBmdW4gaWYgSUYgaW4gbGV0ICcgK1xuICAgICAgICAnbWF0Y2ggbW9kIFByb3AgcmV0dXJuIFNldCB0aGVuIFR5cGUgdXNpbmcgd2hlcmUgd2l0aCAnICtcbiAgICAgICAgJ0Fib3J0IEFib3V0IEFkZCBBZG1pdCBBZG1pdHRlZCBBbGwgQXJndW1lbnRzIEFzc3VtcHRpb25zIEF4aW9tIEJhY2sgQmFja1RvICcgK1xuICAgICAgICAnQmFja3RyYWNrIEJpbmQgQmxhY2tsaXN0IENhbm9uaWNhbCBDZCBDaGVjayBDbGFzcyBDbGFzc2VzIENsb3NlIENvZXJjaW9uICcgK1xuICAgICAgICAnQ29lcmNpb25zIENvRml4cG9pbnQgQ29JbmR1Y3RpdmUgQ29sbGVjdGlvbiBDb21iaW5lZCBDb21wdXRlIENvbmplY3R1cmUgJyArXG4gICAgICAgICdDb25qZWN0dXJlcyBDb25zdGFudCBjb25zdHIgQ29uc3RyYWludCBDb25zdHJ1Y3RvcnMgQ29udGV4dCBDb3JvbGxhcnkgJyArXG4gICAgICAgICdDcmVhdGVIaW50RGIgQ3V0IERlY2xhcmUgRGVmaW5lZCBEZWZpbml0aW9uIERlbGltaXQgRGVwZW5kZW5jaWVzIERlcGVuZGVudCcgK1xuICAgICAgICAnRGVyaXZlIERyb3AgZWF1dG8gRW5kIEVxdWFsaXR5IEV2YWwgRXhhbXBsZSBFeGlzdGVudGlhbCBFeGlzdGVudGlhbHMgJyArXG4gICAgICAgICdFeGlzdGluZyBFeHBvcnQgZXhwb3J0aW5nIEV4dGVybiBFeHRyYWN0IEV4dHJhY3Rpb24gRmFjdCBGaWVsZCBGaWVsZHMgRmlsZSAnICtcbiAgICAgICAgJ0ZpeHBvaW50IEZvY3VzIGZvciBGcm9tIEZ1bmN0aW9uIEZ1bmN0aW9uYWwgR2VuZXJhbGl6YWJsZSBHbG9iYWwgR29hbCBHcmFiICcgK1xuICAgICAgICAnR3JhbW1hciBHcmFwaCBHdWFyZGVkIEhlYXAgSGludCBIaW50RGIgSGludHMgSHlwb3RoZXNlcyBIeXBvdGhlc2lzIGlkZW50ICcgK1xuICAgICAgICAnSWRlbnRpdHkgSWYgSW1tZWRpYXRlIEltcGxpY2l0IEltcG9ydCBJbmNsdWRlIEluZHVjdGl2ZSBJbmZpeCBJbmZvIEluaXRpYWwgJyArXG4gICAgICAgICdJbmxpbmUgSW5zcGVjdCBJbnN0YW5jZSBJbnN0YW5jZXMgSW50cm8gSW50cm9zIEludmVyc2lvbiBJbnZlcnNpb25fY2xlYXIgJyArXG4gICAgICAgICdMYW5ndWFnZSBMZWZ0IExlbW1hIExldCBMaWJyYXJpZXMgTGlicmFyeSBMb2FkIExvYWRQYXRoIExvY2FsIExvY2F0ZSBMdGFjIE1MICcgK1xuICAgICAgICAnTW9kZSBNb2R1bGUgTW9kdWxlcyBNb25vbW9ycGhpYyBNb3JwaGlzbSBOZXh0IE5vSW5saW5lIE5vdGF0aW9uIE9ibGlnYXRpb24gJyArXG4gICAgICAgICdPYmxpZ2F0aW9ucyBPcGFxdWUgT3BlbiBPcHRpbWl6ZSBPcHRpb25zIFBhcmFtZXRlciBQYXJhbWV0ZXJzIFBhcmFtZXRyaWMgJyArXG4gICAgICAgICdQYXRoIFBhdGhzIHBhdHRlcm4gUG9seW1vcnBoaWMgUHJldGVybSBQcmludCBQcmludGluZyBQcm9ncmFtIFByb2plY3Rpb25zICcgK1xuICAgICAgICAnUHJvb2YgUHJvcG9zaXRpb24gUHdkIFFlZCBRdWl0IFJlYyBSZWNvcmQgUmVjdXJzaXZlIFJlZGlyZWN0IFJlbGF0aW9uIFJlbWFyayAnICtcbiAgICAgICAgJ1JlbW92ZSBSZXF1aXJlIFJlc2VydmVkIFJlc2V0IFJlc29sdmUgUmVzdGFydCBSZXdyaXRlIFJpZ2h0IFJpbmcgUmluZ3MgU2F2ZSAnICtcbiAgICAgICAgJ1NjaGVtZSBTY29wZSBTY29wZXMgU2NyaXB0IFNlYXJjaCBTZWFyY2hBYm91dCBTZWFyY2hIZWFkIFNlYXJjaFBhdHRlcm4gJyArXG4gICAgICAgICdTZWFyY2hSZXdyaXRlIFNlY3Rpb24gU2VwYXJhdGUgU2V0IFNldG9pZCBTaG93IFNvbHZlIFNvcnRlZCBTdGVwIFN0cmF0ZWdpZXMgJyArXG4gICAgICAgICdTdHJhdGVneSBTdHJ1Y3R1cmUgU3ViQ2xhc3MgVGFibGUgVGFibGVzIFRhY3RpYyBUZXJtIFRlc3QgVGhlb3JlbSBUaW1lICcgK1xuICAgICAgICAnVGltZW91dCBUcmFuc3BhcmVudCBUeXBlIFR5cGVjbGFzc2VzIFR5cGVzIFVuZGVsaW1pdCBVbmRvIFVuZm9jdXMgVW5mb2N1c2VkICcgK1xuICAgICAgICAnVW5mb2xkIFVuaXZlcnNlIFVuaXZlcnNlcyBVbnNldCBVbnNoZWx2ZSB1c2luZyBWYXJpYWJsZSBWYXJpYWJsZXMgVmFyaWFudCAnICtcbiAgICAgICAgJ1ZlcmJvc2UgVmlzaWJpbGl0eSB3aGVyZSB3aXRoJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnYWJzdHJhY3QgYWJzdXJkIGFkbWl0IGFmdGVyIGFwcGx5IGFzIGFzc2VydCBhc3N1bXB0aW9uIGF0IGF1dG8gYXV0b3Jld3JpdGUgJyArXG4gICAgICAgICdhdXRvdW5mb2xkIGJlZm9yZSBib3R0b20gYnRhdXRvIGJ5IGNhc2UgY2FzZV9lcSBjYm4gY2J2IGNoYW5nZSAnICtcbiAgICAgICAgJ2NsYXNzaWNhbF9sZWZ0IGNsYXNzaWNhbF9yaWdodCBjbGVhciBjbGVhcmJvZHkgY29maXggY29tcGFyZSBjb21wdXRlICcgK1xuICAgICAgICAnY29uZ3J1ZW5jZSBjb25zdHJfZXEgY29uc3RydWN0b3IgY29udHJhZGljdCBjb250cmFkaWN0aW9uIGN1dCBjdXRyZXdyaXRlICcgK1xuICAgICAgICAnY3ljbGUgZGVjaWRlIGRlY29tcG9zZSBkZXBlbmRlbnQgZGVzdHJ1Y3QgZGVzdHJ1Y3Rpb24gZGludHVpdGlvbiAnICtcbiAgICAgICAgJ2Rpc2NyaW1pbmF0ZSBkaXNjclIgZG8gZG91YmxlIGR0YXV0byBlYXBwbHkgZWFzc3VtcHRpb24gZWF1dG8gZWNhc2UgJyArXG4gICAgICAgICdlY29uc3RydWN0b3IgZWRlc3RydWN0IGVkaXNjcmltaW5hdGUgZWVsaW0gZWV4YWN0IGVleGlzdHMgZWluZHVjdGlvbiAnICtcbiAgICAgICAgJ2VpbmplY3Rpb24gZWxlZnQgZWxpbSBlbGltdHlwZSBlbm91Z2ggZXF1YWxpdHkgZXJld3JpdGUgZXJpZ2h0ICcgK1xuICAgICAgICAnZXNpbXBsaWZ5X2VxIGVzcGxpdCBldmFyIGV4YWN0IGV4YWN0bHlfb25jZSBleGZhbHNvIGV4aXN0cyBmX2VxdWFsIGZhaWwgJyArXG4gICAgICAgICdmaWVsZCBmaWVsZF9zaW1wbGlmeSBmaWVsZF9zaW1wbGlmeV9lcSBmaXJzdCBmaXJzdG9yZGVyIGZpeCBmb2xkIGZvdXJpZXIgJyArXG4gICAgICAgICdmdW5jdGlvbmFsIGdlbmVyYWxpemUgZ2VuZXJhbGl6aW5nIGdmYWlsIGdpdmVfdXAgaGFzX2V2YXIgaG5mIGlkdGFjIGluICcgK1xuICAgICAgICAnaW5kdWN0aW9uIGluamVjdGlvbiBpbnN0YW50aWF0ZSBpbnRybyBpbnRyb19wYXR0ZXJuIGludHJvcyBpbnR1aXRpb24gJyArXG4gICAgICAgICdpbnZlcnNpb24gaW52ZXJzaW9uX2NsZWFyIGlzX2V2YXIgaXNfdmFyIGxhcHBseSBsYXp5IGxlZnQgbGlhIGxyYSBtb3ZlICcgK1xuICAgICAgICAnbmF0aXZlX2NvbXB1dGUgbmlhIG5zYXR6IG9tZWdhIG9uY2UgcGF0dGVybiBwb3NlIHByb2dyZXNzIHByb29mIHBzYXR6IHF1b3RlICcgK1xuICAgICAgICAncmVjb3JkIHJlZCByZWZpbmUgcmVmbGV4aXZpdHkgcmVtZW1iZXIgcmVuYW1lIHJlcGVhdCByZXBsYWNlIHJldmVydCAnICtcbiAgICAgICAgJ3JldmdvYWxzIHJld3JpdGUgcmV3cml0ZV9zdHJhdCByaWdodCByaW5nIHJpbmdfc2ltcGxpZnkgcnRhdXRvIHNldCAnICtcbiAgICAgICAgJ3NldG9pZF9yZWZsZXhpdml0eSBzZXRvaWRfcmVwbGFjZSBzZXRvaWRfcmV3cml0ZSBzZXRvaWRfc3ltbWV0cnkgJyArXG4gICAgICAgICdzZXRvaWRfdHJhbnNpdGl2aXR5IHNoZWx2ZSBzaGVsdmVfdW5pZmlhYmxlIHNpbXBsIHNpbXBsZSBzaW1wbGlmeV9lcSBzb2x2ZSAnICtcbiAgICAgICAgJ3NwZWNpYWxpemUgc3BsaXQgc3BsaXRfUmFicyBzcGxpdF9SbXVsdCBzdGVwbCBzdGVwciBzdWJzdCBzdW0gc3dhcCAnICtcbiAgICAgICAgJ3N5bW1ldHJ5IHRhY3RpYyB0YXV0byB0aW1lIHRpbWVvdXQgdG9wIHRyYW5zaXRpdml0eSB0cml2aWFsIHRyeSB0cnlpZiAnICtcbiAgICAgICAgJ3VuZm9sZCB1bmlmeSB1bnRpbCB1c2luZyB2bV9jb21wdXRlIHdpdGgnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXFxcXChcXFxcKicsICdcXFxcKlxcXFwpJyksXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGJlZ2luOiAnXFxcXHxcXFxccyonLFxuICAgICAgICBlbmQ6ICdcXFxcdysnXG4gICAgICB9LFxuICAgICAge2JlZ2luOiAvWy09XT4vfSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb3MgKGhsanMpIHtcblxuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbeyAvLyBlc2NhcGVkXG4gICAgICAgICAgYmVnaW46IFwiXFxcIlxcXCJcIixcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm51bWJlclwiLFxuICAgIGJlZ2luOiBcIlxcXFxiKFxcXFxkKyhcXFxcLlxcXFxkKik/fFxcXFwuXFxcXGQrKVwiLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBDT1NfS0VZV09SRFMgPVxuICAgICdwcm9wZXJ0eSBwYXJhbWV0ZXIgY2xhc3MgY2xhc3NtZXRob2QgY2xpZW50bWV0aG9kIGV4dGVuZHMgYXMgYnJlYWsgJyArXG4gICAgJ2NhdGNoIGNsb3NlIGNvbnRpbnVlIGRvIGR8MCBlbHNlIGVsc2VpZiBmb3IgZ290byBoYWx0IGhhbmcgaHwwIGlmIGpvYiAnICtcbiAgICAnanwwIGtpbGwga3wwIGxvY2sgbHwwIG1lcmdlIG5ldyBvcGVuIHF1aXQgcXwwIHJlYWQgcnwwIHJldHVybiBzZXQgc3wwICcgK1xuICAgICd0Y29tbWl0IHRocm93IHRyb2xsYmFjayB0cnkgdHN0YXJ0IHVzZSB2aWV3IHdoaWxlIHdyaXRlIHd8MCB4ZWN1dGUgeHwwICcgK1xuICAgICd6a2lsbCB6bnNwYWNlIHpuIHp0cmFwIHp3cml0ZSB6dyB6emR1bXAgenp3cml0ZSBwcmludCB6YnJlYWsgemluc2VydCAnICtcbiAgICAnemxvYWQgenByaW50IHpyZW1vdmUgenNhdmUgenpwcmludCBtdiBtdmNhbGwgbXZjcnQgbXZkaW0gbXZwcmludCB6cXVpdCAnICtcbiAgICAnenN5bmMgYXNjaWknO1xuXG4gICAgLy8gcmVnaXN0ZXJlZCBmdW5jdGlvbiAtIG5vIG5lZWQgaW4gdGhlbSBkdWUgdG8gYWxsIGZ1bmN0aW9ucyBhcmUgaGlnaGxpZ2h0ZWQsXG4gICAgLy8gYnV0IEknbGwganVzdCBsZWF2ZSB0aGlzIGhlcmUuXG5cbiAgICAvL1wiJGJpdFwiLCBcIiRiaXRjb3VudFwiLFxuICAgIC8vXCIkYml0ZmluZFwiLCBcIiRiaXRsb2dpY1wiLCBcIiRjYXNlXCIsIFwiJGNoYXJcIiwgXCIkY2xhc3NtZXRob2RcIiwgXCIkY2xhc3NuYW1lXCIsXG4gICAgLy9cIiRjb21waWxlXCIsIFwiJGRhdGFcIiwgXCIkZGVjaW1hbFwiLCBcIiRkb3VibGVcIiwgXCIkZXh0cmFjdFwiLCBcIiRmYWN0b3JcIixcbiAgICAvL1wiJGZpbmRcIiwgXCIkZm51bWJlclwiLCBcIiRnZXRcIiwgXCIkaW5jcmVtZW50XCIsIFwiJGludW1iZXJcIiwgXCIkaXNvYmplY3RcIixcbiAgICAvL1wiJGlzdmFsaWRkb3VibGVcIiwgXCIkaXN2YWxpZG51bVwiLCBcIiRqdXN0aWZ5XCIsIFwiJGxlbmd0aFwiLCBcIiRsaXN0XCIsXG4gICAgLy9cIiRsaXN0YnVpbGRcIiwgXCIkbGlzdGRhdGFcIiwgXCIkbGlzdGZpbmRcIiwgXCIkbGlzdGZyb21zdHJpbmdcIiwgXCIkbGlzdGdldFwiLFxuICAgIC8vXCIkbGlzdGxlbmd0aFwiLCBcIiRsaXN0bmV4dFwiLCBcIiRsaXN0c2FtZVwiLCBcIiRsaXN0dG9zdHJpbmdcIiwgXCIkbGlzdHZhbGlkXCIsXG4gICAgLy9cIiRsb2NhdGVcIiwgXCIkbWF0Y2hcIiwgXCIkbWV0aG9kXCIsIFwiJG5hbWVcIiwgXCIkbmNvbnZlcnRcIiwgXCIkbmV4dFwiLFxuICAgIC8vXCIkbm9ybWFsaXplXCIsIFwiJG5vd1wiLCBcIiRudW1iZXJcIiwgXCIkb3JkZXJcIiwgXCIkcGFyYW1ldGVyXCIsIFwiJHBpZWNlXCIsXG4gICAgLy9cIiRwcmVmZXRjaG9mZlwiLCBcIiRwcmVmZXRjaG9uXCIsIFwiJHByb3BlcnR5XCIsIFwiJHFsZW5ndGhcIiwgXCIkcXN1YnNjcmlwdFwiLFxuICAgIC8vXCIkcXVlcnlcIiwgXCIkcmFuZG9tXCIsIFwiJHJlcGxhY2VcIiwgXCIkcmV2ZXJzZVwiLCBcIiRzY29udmVydFwiLCBcIiRzZWxlY3RcIixcbiAgICAvL1wiJHNvcnRiZWdpblwiLCBcIiRzb3J0ZW5kXCIsIFwiJHN0YWNrXCIsIFwiJHRleHRcIiwgXCIkdHJhbnNsYXRlXCIsIFwiJHZpZXdcIixcbiAgICAvL1wiJHdhc2NpaVwiLCBcIiR3Y2hhclwiLCBcIiR3ZXh0cmFjdFwiLCBcIiR3ZmluZFwiLCBcIiR3aXN3aWRlXCIsIFwiJHdsZW5ndGhcIixcbiAgICAvL1wiJHdyZXZlcnNlXCIsIFwiJHhlY3V0ZVwiLCBcIiR6YWJzXCIsIFwiJHphcmNjb3NcIiwgXCIkemFyY3NpblwiLCBcIiR6YXJjdGFuXCIsXG4gICAgLy9cIiR6Y29zXCIsIFwiJHpjb3RcIiwgXCIkemNzY1wiLCBcIiR6ZGF0ZVwiLCBcIiR6ZGF0ZWhcIiwgXCIkemRhdGV0aW1lXCIsXG4gICAgLy9cIiR6ZGF0ZXRpbWVoXCIsIFwiJHpleHBcIiwgXCIkemhleFwiLCBcIiR6bG5cIiwgXCIkemxvZ1wiLCBcIiR6cG93ZXJcIiwgXCIkenNlY1wiLFxuICAgIC8vXCIkenNpblwiLCBcIiR6c3FyXCIsIFwiJHp0YW5cIiwgXCIkenRpbWVcIiwgXCIkenRpbWVoXCIsIFwiJHpib29sZWFuXCIsXG4gICAgLy9cIiR6Y29udmVydFwiLCBcIiR6Y3JjXCIsIFwiJHpjeWNcIiwgXCIkemRhc2NpaVwiLCBcIiR6ZGNoYXJcIiwgXCIkemZcIixcbiAgICAvL1wiJHppc3dpZGVcIiwgXCIkemxhc2NpaVwiLCBcIiR6bGNoYXJcIiwgXCIkem5hbWVcIiwgXCIkenBvc2l0aW9uXCIsIFwiJHpxYXNjaWlcIixcbiAgICAvL1wiJHpxY2hhclwiLCBcIiR6c2VhcmNoXCIsIFwiJHpzZWVrXCIsIFwiJHpzdHJpcFwiLCBcIiR6d2FzY2lpXCIsIFwiJHp3Y2hhclwiLFxuICAgIC8vXCIkendpZHRoXCIsIFwiJHp3cGFja1wiLCBcIiR6d2JwYWNrXCIsIFwiJHp3dW5wYWNrXCIsIFwiJHp3YnVucGFja1wiLCBcIiR6emVua2FrdVwiLFxuICAgIC8vXCIkY2hhbmdlXCIsIFwiJG12XCIsIFwiJG12YXRcIiwgXCIkbXZmbXRcIiwgXCIkbXZmbXRzXCIsIFwiJG12aWNvbnZcIixcbiAgICAvL1wiJG12aWNvbnZzXCIsIFwiJG12aW5tYXRcIiwgXCIkbXZsb3ZlclwiLCBcIiRtdm9jb252XCIsIFwiJG12b2NvbnZzXCIsIFwiJG12cmFpc2VcIixcbiAgICAvL1wiJG12dHJhbnNcIiwgXCIkbXZ2XCIsIFwiJG12bmFtZVwiLCBcIiR6Yml0YW5kXCIsIFwiJHpiaXRjb3VudFwiLCBcIiR6Yml0ZmluZFwiLFxuICAgIC8vXCIkemJpdGdldFwiLCBcIiR6Yml0bGVuXCIsIFwiJHpiaXRub3RcIiwgXCIkemJpdG9yXCIsIFwiJHpiaXRzZXRcIiwgXCIkemJpdHN0clwiLFxuICAgIC8vXCIkemJpdHhvclwiLCBcIiR6aW5jcmVtZW50XCIsIFwiJHpuZXh0XCIsIFwiJHpvcmRlclwiLCBcIiR6cHJldmlvdXNcIiwgXCIkenNvcnRcIixcbiAgICAvL1wiZGV2aWNlXCIsIFwiJGVjb2RlXCIsIFwiJGVzdGFja1wiLCBcIiRldHJhcFwiLCBcIiRoYWx0XCIsIFwiJGhvcm9sb2dcIixcbiAgICAvL1wiJGlvXCIsIFwiJGpvYlwiLCBcIiRrZXlcIiwgXCIkbmFtZXNwYWNlXCIsIFwiJHByaW5jaXBhbFwiLCBcIiRxdWl0XCIsIFwiJHJvbGVzXCIsXG4gICAgLy9cIiRzdG9yYWdlXCIsIFwiJHN5c3RlbVwiLCBcIiR0ZXN0XCIsIFwiJHRoaXNcIiwgXCIkdGxldmVsXCIsIFwiJHVzZXJuYW1lXCIsXG4gICAgLy9cIiR4XCIsIFwiJHlcIiwgXCIkemFcIiwgXCIkemJcIiwgXCIkemNoaWxkXCIsIFwiJHplb2ZcIiwgXCIkemVvc1wiLCBcIiR6ZXJyb3JcIixcbiAgICAvL1wiJHpob3JvbG9nXCIsIFwiJHppb1wiLCBcIiR6am9iXCIsIFwiJHptb2RlXCIsIFwiJHpuc3BhY2VcIiwgXCIkenBhcmVudFwiLCBcIiR6cGlcIixcbiAgICAvL1wiJHpwb3NcIiwgXCIkenJlZmVyZW5jZVwiLCBcIiR6c3RvcmFnZVwiLCBcIiR6dGltZXN0YW1wXCIsIFwiJHp0aW1lem9uZVwiLFxuICAgIC8vXCIkenRyYXBcIiwgXCIkenZlcnNpb25cIlxuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbXCJjb3NcIiwgXCJjbHNcIl0sXG4gICAga2V5d29yZHM6IENPU19LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgTlVNQkVSUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IFwiY29tbWVudFwiLFxuICAgICAgICBiZWdpbjogLzsvLCBlbmQ6IFwiJFwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8vIEZ1bmN0aW9ucyBhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczogd3JpdGUgJHp0aW1lKDYwKjYwKjMpLCAkJG15RnVuYygxMCksICQkXlZhbCgxKVxuICAgICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIixcbiAgICAgICAgYmVnaW46IC8oPzpcXCRcXCQ/fFxcLlxcLilcXF4/W2EtekEtWl0rL1xuICAgICAgfSxcbiAgICAgIHsgLy8gTWFjcm8gY29tbWFuZDogcXVpdCAkJCRPS1xuICAgICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIixcbiAgICAgICAgYmVnaW46IC9cXCRcXCRcXCRbYS16QS1aXSsvXG4gICAgICB9LFxuICAgICAgeyAvLyBTcGVjaWFsIChnbG9iYWwpIHZhcmlhYmxlczogd3JpdGUgJXJlcXVlc3QuQ29udGVudDsgQnVpbHQtaW4gY2xhc3NlczogJUxpYnJhcnkuSW50ZWdlclxuICAgICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIixcbiAgICAgICAgYmVnaW46IC8lW2Etel0rKD86XFwuW2Etel0rKSovXG4gICAgICB9LFxuICAgICAgeyAvLyBHbG9iYWwgdmFyaWFibGU6IHNldCBeZ2xvYmFsTmFtZSA9IDEyIHdyaXRlIF5nbG9iYWxOYW1lXG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC9cXF4lP1thLXpBLVpdW1xcd10qL1xuICAgICAgfSxcbiAgICAgIHsgLy8gU29tZSBjb250cm9sIGNvbnN0cnVjdGlvbnM6IGRvICMjY2xhc3MoUGFja2FnZS5DbGFzc05hbWUpLk1ldGhvZCgpLCAjI3N1cGVyKClcbiAgICAgICAgY2xhc3NOYW1lOiBcImtleXdvcmRcIixcbiAgICAgICAgYmVnaW46IC8jI2NsYXNzfCMjc3VwZXJ8I2RlZmluZXwjZGltL1xuICAgICAgfSxcblxuICAgICAgLy8gc3ViLWxhbmd1YWdlczogYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQgYnkgaGxqcyBieSAxMS8xNS8yMDE1XG4gICAgICAvLyBsZWZ0IGZvciB0aGUgZnV0dXJlIGltcGxlbWVudGF0aW9uLlxuICAgICAge1xuICAgICAgICBiZWdpbjogLyZzcWxcXCgvLCAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiBcInNxbFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyYoanN8anNjcmlwdHxqYXZhc2NyaXB0KTwvLCBlbmQ6IC8+LyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBzdWJMYW5ndWFnZTogXCJqYXZhc2NyaXB0XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRoaXMgYnJha2VzIGZpcnN0IGFuZCBsYXN0IHRhZywgYnV0IHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGVtYmVkIGEgdmFsaWQgaHRtbFxuICAgICAgICBiZWdpbjogLyZodG1sPFxccyo8LywgZW5kOiAvPlxccyo+LyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6IFwieG1sXCJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUkVTT1VSQ0VTID0gJ3ByaW1pdGl2ZSByc2NfdGVtcGxhdGUnO1xuXG4gIHZhciBDT01NQU5EUyA9ICdncm91cCBjbG9uZSBtcyBtYXN0ZXIgbG9jYXRpb24gY29sb2NhdGlvbiBvcmRlciBmZW5jaW5nX3RvcG9sb2d5ICcgK1xuICAgICAgJ3JzY190aWNrZXQgYWNsX3RhcmdldCBhY2xfZ3JvdXAgdXNlciByb2xlICcgK1xuICAgICAgJ3RhZyB4bWwnO1xuXG4gIHZhciBQUk9QRVJUWV9TRVRTID0gJ3Byb3BlcnR5IHJzY19kZWZhdWx0cyBvcF9kZWZhdWx0cyc7XG5cbiAgdmFyIEtFWVdPUkRTID0gJ3BhcmFtcyBtZXRhIG9wZXJhdGlvbnMgb3AgcnVsZSBhdHRyaWJ1dGVzIHV0aWxpemF0aW9uJztcblxuICB2YXIgT1BFUkFUT1JTID0gJ3JlYWQgd3JpdGUgZGVueSBkZWZpbmVkIG5vdF9kZWZpbmVkIGluX3JhbmdlIGRhdGUgc3BlYyBpbiAnICtcbiAgICAgICdyZWYgcmVmZXJlbmNlIGF0dHJpYnV0ZSB0eXBlIHhwYXRoIHZlcnNpb24gYW5kIG9yIGx0IGd0IHRhZyAnICtcbiAgICAgICdsdGUgZ3RlIGVxIG5lIFxcXFwnO1xuXG4gIHZhciBUWVBFUyA9ICdudW1iZXIgc3RyaW5nJztcblxuICB2YXIgTElURVJBTFMgPSAnTWFzdGVyIFN0YXJ0ZWQgU2xhdmUgU3RvcHBlZCBzdGFydCBwcm9tb3RlIGRlbW90ZSBzdG9wIG1vbml0b3IgdHJ1ZSBmYWxzZSc7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NybScsICdwY21rJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogS0VZV09SRFMgKyAnICcgKyBPUEVSQVRPUlMgKyAnICcgKyBUWVBFUyxcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxTXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25vZGUnLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6ICdcXFxccyooW1xcXFx3Xy1dKzopPycsXG4gICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccypbXFxcXCRcXFxcd19dW1xcXFx3Xy1dKidcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6IFJFU09VUkNFUyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgIGVuZDogJ1xcXFxzKltcXFxcJFxcXFx3X11bXFxcXHdfLV0qJyxcbiAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgIGVuZDogJ1xcXFxzKkA/W1xcXFx3X11bXFxcXHdfXFxcXC46LV0qJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcYignICsgQ09NTUFORFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKVxcXFxzKycsXG4gICAgICAgIGtleXdvcmRzOiBDT01NQU5EUyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgIGVuZDogJ1tcXFxcJFxcXFx3X11bXFxcXHdfLV0qJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiBQUk9QRVJUWV9TRVRTLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgZW5kOiAnXFxcXHMqKFtcXFxcd18tXSs6KT8nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcob2NmfHN5c3RlbWR8c2VydmljZXxsc2IpOltcXFxcd186LV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8obXN8c3xofG0pPycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnWy1dPyhpbmZpbml0eXxpbmYpJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgYmVnaW46IC8oW0EtWmEtelxcJF9cXCNdW1xcd18tXSspPS8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICAgICAgYmVnaW46ICc8Lz8nLFxuICAgICAgICBlbmQ6ICcvPz4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSU5UX1NVRkZJWCA9ICcoXypbdWldKDh8MTZ8MzJ8NjR8MTI4KSk/JztcbiAgdmFyIEZMT0FUX1NVRkZJWCA9ICcoXypmKDMyfDY0KSk/JztcbiAgdmFyIENSWVNUQUxfSURFTlRfUkUgPSAnW2EtekEtWl9dXFxcXHcqWyE/PV0/JztcbiAgdmFyIENSWVNUQUxfTUVUSE9EX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dP3xbLSt+XVxcXFxAfDw8fD4+fFs9IV1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfnxdfC8vfC8vPXwmWy0rKl09P3wmXFxcXCpcXFxcKnxcXFxcW1xcXFxdWz0/XT8nO1xuICB2YXIgQ1JZU1RBTF9QQVRIX1JFID0gJ1tBLVphLXpfXVxcXFx3Kig6OlxcXFx3KykqKFxcXFw/fFxcXFwhKT8nO1xuICB2YXIgQ1JZU1RBTF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2Fic3RyYWN0IGFsaWFzIGFubm90YXRpb24gYXMgYXM/IGFzbSBiZWdpbiBicmVhayBjYXNlIGNsYXNzIGRlZiBkbyBlbHNlIGVsc2lmIGVuZCBlbnN1cmUgZW51bSBleHRlbmQgZm9yIGZ1biBpZiAnICtcbiAgICAgICdpbmNsdWRlIGluc3RhbmNlX3NpemVvZiBpc19hPyBsaWIgbWFjcm8gbW9kdWxlIG5leHQgbmlsPyBvZiBvdXQgcG9pbnRlcm9mIHByaXZhdGUgcHJvdGVjdGVkIHJlc2N1ZSByZXNwb25kc190bz8gJyArXG4gICAgICAncmV0dXJuIHJlcXVpcmUgc2VsZWN0IHNlbGYgc2l6ZW9mIHN0cnVjdCBzdXBlciB0aGVuIHR5cGUgdHlwZW9mIHVuaW9uIHVuaW5pdGlhbGl6ZWQgdW5sZXNzIHVudGlsIHZlcmJhdGltIHdoZW4gd2hpbGUgd2l0aCB5aWVsZCAnICtcbiAgICAgICdfX0RJUl9fIF9fRU5EX0xJTkVfXyBfX0ZJTEVfXyBfX0xJTkVfXycsXG4gICAgbGl0ZXJhbDogJ2ZhbHNlIG5pbCB0cnVlJ1xuICB9O1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnI3snLCBlbmQ6ICd9JyxcbiAgICBrZXl3b3JkczogQ1JZU1RBTF9LRVlXT1JEU1xuICB9O1xuICB2YXIgRVhQQU5TSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFxcXHtcXFxceycsIGVuZDogJ1xcXFx9XFxcXH0nfSxcbiAgICAgIHtiZWdpbjogJ1xcXFx7JScsIGVuZDogJyVcXFxcfSd9XG4gICAgXSxcbiAgICBrZXl3b3JkczogQ1JZU1RBTF9LRVlXT1JEU1xuICB9O1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2l2ZVBhcmVuKGJlZ2luLCBlbmQpIHtcbiAgICB2YXJcbiAgICBjb250YWlucyA9IFt7YmVnaW46IGJlZ2luLCBlbmQ6IGVuZH1dO1xuICAgIGNvbnRhaW5zWzBdLmNvbnRhaW5zID0gY29udGFpbnM7XG4gICAgcmV0dXJuIGNvbnRhaW5zO1xuICB9XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAge2JlZ2luOiAvYC8sIGVuZDogL2AvfSxcbiAgICAgIHtiZWdpbjogJyVbUXdpXT9cXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcKCcsICdcXFxcKScpfSxcbiAgICAgIHtiZWdpbjogJyVbUXdpXT9cXFxcWycsIGVuZDogJ1xcXFxdJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcWycsICdcXFxcXScpfSxcbiAgICAgIHtiZWdpbjogJyVbUXdpXT97JywgZW5kOiAnfScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbigneycsICd9Jyl9LFxuICAgICAge2JlZ2luOiAnJVtRd2ldPzwnLCBlbmQ6ICc+JywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCc8JywgJz4nKX0sXG4gICAgICB7YmVnaW46ICclW1F3aV0/XFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgICAge2JlZ2luOiAvPDwtXFx3KyQvLCBlbmQ6IC9eXFxzKlxcdyskL30sXG4gICAgXSxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG4gIHZhciBRX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICclcVxcXFwoJywgZW5kOiAnXFxcXCknLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ1xcXFwoJywgJ1xcXFwpJyl9LFxuICAgICAge2JlZ2luOiAnJXFcXFxcWycsIGVuZDogJ1xcXFxdJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcWycsICdcXFxcXScpfSxcbiAgICAgIHtiZWdpbjogJyVxeycsIGVuZDogJ30nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ3snLCAnfScpfSxcbiAgICAgIHtiZWdpbjogJyVxPCcsIGVuZDogJz4nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJzwnLCAnPicpfSxcbiAgICAgIHtiZWdpbjogJyVxXFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgICAge2JlZ2luOiAvPDwtJ1xcdysnJC8sIGVuZDogL15cXHMqXFx3KyQvfSxcbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgfTtcbiAgdmFyIFJFR0VYUCA9IHtcbiAgICBiZWdpbjogJyg/ISV9KSgnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXG58XFxcXGIoY2FzZXxpZnxzZWxlY3R8dW5sZXNzfHVudGlsfHdoZW58d2hpbGUpXFxcXGIpXFxcXHMqJyxcbiAgICBrZXl3b3JkczogJ2Nhc2UgaWYgc2VsZWN0IHVubGVzcyB1bnRpbCB3aGVuIHdoaWxlJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJy8vW2Etel0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICcvKD8hXFxcXC8pJywgZW5kOiAnL1thLXpdKid9LFxuICAgICAgICBdXG4gICAgICB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFJFR0VYUDIgPSB7XG4gICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICclclxcXFwoJywgZW5kOiAnXFxcXCknLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ1xcXFwoJywgJ1xcXFwpJyl9LFxuICAgICAge2JlZ2luOiAnJXJcXFxcWycsIGVuZDogJ1xcXFxdJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcWycsICdcXFxcXScpfSxcbiAgICAgIHtiZWdpbjogJyVyeycsIGVuZDogJ30nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ3snLCAnfScpfSxcbiAgICAgIHtiZWdpbjogJyVyPCcsIGVuZDogJz4nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJzwnLCAnPicpfSxcbiAgICAgIHtiZWdpbjogJyVyXFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBBVFRSSUJVVEUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdAXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnfSlcbiAgICBdXG4gIH07XG4gIHZhciBDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgRVhQQU5TSU9OLFxuICAgIFNUUklORyxcbiAgICBRX1NUUklORyxcbiAgICBSRUdFWFAyLFxuICAgIFJFR0VYUCxcbiAgICBBVFRSSUJVVEUsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgbW9kdWxlIHN0cnVjdCcsIGVuZDogJyR8OycsXG4gICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IENSWVNUQUxfUEFUSF9SRX0pLFxuICAgICAgICB7YmVnaW46ICc8J30gLy8gcmVsZXZhbmNlIGJvb3N0ZXIgZm9yIGluaGVyaXRhbmNlXG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICBiZWdpbktleXdvcmRzOiAnbGliIGVudW0gdW5pb24nLCBlbmQ6ICckfDsnLFxuICAgICAgaWxsZWdhbDogLz0vLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBDUllTVEFMX1BBVEhfUkV9KSxcbiAgICAgIF0sXG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbktleXdvcmRzOiAnYW5ub3RhdGlvbicsIGVuZDogJyR8OycsXG4gICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IENSWVNUQUxfUEFUSF9SRX0pLFxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWYnLCBlbmQ6IC9cXEJcXGIvLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgIGJlZ2luOiBDUllTVEFMX01FVEhPRF9SRSxcbiAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICBiZWdpbktleXdvcmRzOiAnZnVuIG1hY3JvJywgZW5kOiAvXFxCXFxiLyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICBiZWdpbjogQ1JZU1RBTF9NRVRIT0RfUkUsXG4gICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogNVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnKFxcXFwhfFxcXFw/KT86JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiAnOicsXG4gICAgICBjb250YWluczogW1NUUklORywge2JlZ2luOiBDUllTVEFMX01FVEhPRF9SRX1dLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgeyBiZWdpbjogJ1xcXFxiMGIoWzAxX10rKScgKyBJTlRfU1VGRklYIH0sXG4gICAgICAgIHsgYmVnaW46ICdcXFxcYjBvKFswLTdfXSspJyArIElOVF9TVUZGSVggfSxcbiAgICAgICAgeyBiZWdpbjogJ1xcXFxiMHgoW0EtRmEtZjAtOV9dKyknICsgSU5UX1NVRkZJWCB9LFxuICAgICAgICB7IGJlZ2luOiAnXFxcXGIoWzEtOV1bMC05X10qWzAtOV18WzAtOV0pKFxcXFwuWzAtOV1bMC05X10qKT8oW2VFXV8qWy0rXT9bMC05X10qKT8nICsgRkxPQVRfU1VGRklYICsgJyg/IV8pJyB9LFxuICAgICAgICB7IGJlZ2luOiAnXFxcXGIoWzEtOV1bMC05X10qfDApJyArIElOVF9TVUZGSVggfVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlM7XG4gIEVYUEFOU0lPTi5jb250YWlucyA9IENSWVNUQUxfREVGQVVMVF9DT05UQUlOUy5zbGljZSgxKTsgLy8gd2l0aG91dCBFWFBBTlNJT05cblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY3InXSxcbiAgICBsZXhlbWVzOiBDUllTVEFMX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBDUllTVEFMX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgLy8gTm9ybWFsIGtleXdvcmRzLlxuICAgICAgJ2Fic3RyYWN0IGFzIGJhc2UgYm9vbCBicmVhayBieXRlIGNhc2UgY2F0Y2ggY2hhciBjaGVja2VkIGNvbnN0IGNvbnRpbnVlIGRlY2ltYWwgJyArXG4gICAgICAnZGVmYXVsdCBkZWxlZ2F0ZSBkbyBkb3VibGUgZW51bSBldmVudCBleHBsaWNpdCBleHRlcm4gZmluYWxseSBmaXhlZCBmbG9hdCAnICtcbiAgICAgICdmb3IgZm9yZWFjaCBnb3RvIGlmIGltcGxpY2l0IGluIGludCBpbnRlcmZhY2UgaW50ZXJuYWwgaXMgbG9jayBsb25nICcgK1xuICAgICAgJ29iamVjdCBvcGVyYXRvciBvdXQgb3ZlcnJpZGUgcGFyYW1zIHByaXZhdGUgcHJvdGVjdGVkIHB1YmxpYyByZWFkb25seSByZWYgc2J5dGUgJyArXG4gICAgICAnc2VhbGVkIHNob3J0IHNpemVvZiBzdGFja2FsbG9jIHN0YXRpYyBzdHJpbmcgc3RydWN0IHN3aXRjaCB0aGlzIHRyeSB0eXBlb2YgJyArXG4gICAgICAndWludCB1bG9uZyB1bmNoZWNrZWQgdW5zYWZlIHVzaG9ydCB1c2luZyB2aXJ0dWFsIHZvaWQgdm9sYXRpbGUgd2hpbGUgJyArXG4gICAgICAvLyBDb250ZXh0dWFsIGtleXdvcmRzLlxuICAgICAgJ2FkZCBhbGlhcyBhc2NlbmRpbmcgYXN5bmMgYXdhaXQgYnkgZGVzY2VuZGluZyBkeW5hbWljIGVxdWFscyBmcm9tIGdldCBnbG9iYWwgZ3JvdXAgaW50byBqb2luICcgK1xuICAgICAgJ2xldCBuYW1lb2Ygb24gb3JkZXJieSBwYXJ0aWFsIHJlbW92ZSBzZWxlY3Qgc2V0IHZhbHVlIHZhciB3aGVuIHdoZXJlIHlpZWxkJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ251bGwgZmFsc2UgdHJ1ZSdcbiAgfTtcbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBiWzAxXFwnXSspJyB9LFxuICAgICAgeyBiZWdpbjogJygtPylcXFxcYihbXFxcXGRcXCddKyhcXFxcLltcXFxcZFxcJ10qKT98XFxcXC5bXFxcXGRcXCddKykodXxVfGx8THx1bHxVTHxmfEZ8YnxCKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XFwnXSt8KFxcXFxiW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKFtlRV1bLStdP1tcXFxcZFxcJ10rKT8pJyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFZFUkJBVElNX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnQFwiJywgZW5kOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XVxuICB9O1xuICB2YXIgVkVSQkFUSU1fU1RSSU5HX05PX0xGID0gaGxqcy5pbmhlcml0KFZFUkJBVElNX1NUUklORywge2lsbGVnYWw6IC9cXG4vfSk7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTXG4gIH07XG4gIHZhciBTVUJTVF9OT19MRiA9IGhsanMuaW5oZXJpdChTVUJTVCwge2lsbGVnYWw6IC9cXG4vfSk7XG4gIHZhciBJTlRFUlBPTEFURURfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cXCRcIi8sIGVuZDogJ1wiJyxcbiAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICBjb250YWluczogW3tiZWdpbjogJ3t7J30sIHtiZWdpbjogJ319J30sIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RfTk9fTEZdXG4gIH07XG4gIHZhciBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cXCRAXCIvLCBlbmQ6ICdcIicsXG4gICAgY29udGFpbnM6IFt7YmVnaW46ICd7eyd9LCB7YmVnaW46ICd9fSd9LCB7YmVnaW46ICdcIlwiJ30sIFNVQlNUXVxuICB9O1xuICB2YXIgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklOR19OT19MRiA9IGhsanMuaW5oZXJpdChJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLCB7XG4gICAgaWxsZWdhbDogL1xcbi8sXG4gICAgY29udGFpbnM6IFt7YmVnaW46ICd7eyd9LCB7YmVnaW46ICd9fSd9LCB7YmVnaW46ICdcIlwiJ30sIFNVQlNUX05PX0xGXVxuICB9KTtcbiAgU1VCU1QuY29udGFpbnMgPSBbXG4gICAgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklORyxcbiAgICBJTlRFUlBPTEFURURfU1RSSU5HLFxuICAgIFZFUkJBVElNX1NUUklORyxcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBOVU1CRVJTLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgXTtcbiAgU1VCU1RfTk9fTEYuY29udGFpbnMgPSBbXG4gICAgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklOR19OT19MRixcbiAgICBJTlRFUlBPTEFURURfU1RSSU5HLFxuICAgIFZFUkJBVElNX1NUUklOR19OT19MRixcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBOVU1CRVJTLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLCB7aWxsZWdhbDogL1xcbi99KVxuICBdO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLFxuICAgICAgSU5URVJQT0xBVEVEX1NUUklORyxcbiAgICAgIFZFUkJBVElNX1NUUklORyxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRZUEVfSURFTlRfUkUgPSBobGpzLklERU5UX1JFICsgJyg8JyArIGhsanMuSURFTlRfUkUgKyAnKFxcXFxzKixcXFxccyonICsgaGxqcy5JREVOVF9SRSArICcpKj4pPyhcXFxcW1xcXFxdKT8nO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjc2hhcnAnLCAnYyMnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLzo6LyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnLy8vJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBiZWdpbjogJy8vLycsIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYmVnaW46ICc8IS0tfC0tPidcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAnPC8/JywgZW5kOiAnPidcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgJ21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsaWYgZW5kaWYgZGVmaW5lIHVuZGVmIHdhcm5pbmcgZXJyb3IgbGluZSByZWdpb24gZW5kcmVnaW9uIHByYWdtYSBjaGVja3N1bSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFNUUklORyxcbiAgICAgIE5VTUJFUlMsXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcczosXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduYW1lc3BhY2UnLCBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcczpdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdbYS16QS1aXShcXFxcLj9cXFxcdykqJ30pLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFtBdHRyaWJ1dGVzKFwiXCIpXVxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqXFxcXFsnLCBleGNsdWRlQmVnaW46IHRydWUsIGVuZDogJ1xcXFxdJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLCBiZWdpbjogL1wiLywgZW5kOiAvXCIvfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBFeHByZXNzaW9uIGtleXdvcmRzIHByZXZlbnQgJ2tleXdvcmQgTmFtZSguLi4pJyBmcm9tIGJlaW5nXG4gICAgICAgIC8vIHJlY29nbml6ZWQgYXMgYSBmdW5jdGlvbiBkZWZpbml0aW9uXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduZXcgcmV0dXJuIHRocm93IGF3YWl0IGVsc2UnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICcoJyArIFRZUEVfSURFTlRfUkUgKyAnXFxcXHMrKSsnICsgaGxqcy5JREVOVF9SRSArICdcXFxccypcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBlbmQ6IC9cXHMqW3s7PV0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5USVRMRV9NT0RFXSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGxleGVtZXM6ICdbYS16QS1aXVthLXpBLVowLTlfLV0qJyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2Jhc2UtdXJpIGNoaWxkLXNyYyBjb25uZWN0LXNyYyBkZWZhdWx0LXNyYyBmb250LXNyYyBmb3JtLWFjdGlvbicgK1xuICAgICAgICAnIGZyYW1lLWFuY2VzdG9ycyBmcmFtZS1zcmMgaW1nLXNyYyBtZWRpYS1zcmMgb2JqZWN0LXNyYyBwbHVnaW4tdHlwZXMnICtcbiAgICAgICAgJyByZXBvcnQtdXJpIHNhbmRib3ggc2NyaXB0LXNyYyBzdHlsZS1zcmMnLFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46IFwiJ1wiLCBlbmQ6IFwiJ1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgYmVnaW46ICdeQ29udGVudCcsIGVuZDogJzonLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVotXVthLXpBLVowLTlfLV0qJztcbiAgdmFyIFJVTEUgPSB7XG4gICAgYmVnaW46IC8oPzpbQS1aXFxfXFwuXFwtXSt8LS1bYS16QS1aMC05Xy1dKylcXHMqOi8sIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICc7JywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46IC9cXFMvLCBlbmQ6ICc6JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmVnaW46IC9bXFx3LV0rXFwoLywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICAgICAgICAgICAgYmVnaW46IC9bXFx3LV0rL1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJywgYmVnaW46ICcjWzAtOUEtRmEtZl0rJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIWltcG9ydGFudCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9bPVxcL3wnXFwkXS8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJywgYmVnaW46IC8jW0EtWmEtejAtOV8tXSsvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsIGJlZ2luOiAvXFwuW0EtWmEtejAtOV8tXSsvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1hdHRyJyxcbiAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICBpbGxlZ2FsOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLXBzZXVkbycsXG4gICAgICAgIGJlZ2luOiAvOig6KT9bYS16QS1aMC05XFxfXFwtXFwrXFwoXFwpXCInLl0rL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdAKGZvbnQtZmFjZXxwYWdlKScsXG4gICAgICAgIGxleGVtZXM6ICdbYS16LV0rJyxcbiAgICAgICAga2V5d29yZHM6ICdmb250LWZhY2UgcGFnZSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnQCcsIGVuZDogJ1t7O10nLCAvLyBhdF9ydWxlIGVhdGluZyBmaXJzdCBcIntcIiBpcyBhIGdvb2QgdGhpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgaXQgZG9lc27igJl0IGxldCBpdCB0byBiZSBwYXJzZWQgYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgcnVsZSBzZXQgYnV0IGluc3RlYWQgZHJvcHMgcGFyc2VyIGludG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBkZWZhdWx0IG1vZGUgd2hpY2ggaXMgaG93IGl0IHNob3VsZCBiZS5cbiAgICAgICAgaWxsZWdhbDogLzovLCAvLyBicmVhayBvbiBMZXNzIHZhcmlhYmxlcyBAdmFyOiAuLi5cbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFx3Ky9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFxzLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci10YWcnLCBiZWdpbjogSURFTlRfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgUlVMRSxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvKipcbiAqIEtub3duIGlzc3VlczpcbiAqXG4gKiAtIGludmFsaWQgaGV4IHN0cmluZyBsaXRlcmFscyB3aWxsIGJlIHJlY29nbml6ZWQgYXMgYSBkb3VibGUgcXVvdGVkIHN0cmluZ3NcbiAqICAgYnV0ICd4JyBhdCB0aGUgYmVnaW5uaW5nIG9mIHN0cmluZyB3aWxsIG5vdCBiZSBtYXRjaGVkXG4gKlxuICogLSBkZWxpbWl0ZWQgc3RyaW5nIGxpdGVyYWxzIGFyZSBub3QgY2hlY2tlZCBmb3IgbWF0Y2hpbmcgZW5kIGRlbGltaXRlclxuICogICAobm90IHBvc3NpYmxlIHRvIGRvIHdpdGgganMgcmVnZXhwKVxuICpcbiAqIC0gY29udGVudCBvZiB0b2tlbiBzdHJpbmcgaXMgY29sb3JlZCBhcyBhIHN0cmluZyAoaS5lLiBubyBrZXl3b3JkIGNvbG9yaW5nIGluc2lkZSBhIHRva2VuIHN0cmluZylcbiAqICAgYWxzbywgY29udGVudCBvZiB0b2tlbiBzdHJpbmcgaXMgbm90IHZhbGlkYXRlZCB0byBjb250YWluIG9ubHkgdmFsaWQgRCB0b2tlbnNcbiAqXG4gKiAtIHNwZWNpYWwgdG9rZW4gc2VxdWVuY2UgcnVsZSBpcyBub3Qgc3RyaWN0bHkgZm9sbG93aW5nIEQgZ3JhbW1hciAoYW55dGhpbmcgZm9sbG93aW5nICNsaW5lXG4gKiAgIHVwIHRvIHRoZSBlbmQgb2YgbGluZSBpcyBtYXRjaGVkIGFzIHNwZWNpYWwgdG9rZW4gc2VxdWVuY2UpXG4gKi9cblxuZnVuY3Rpb24oaGxqcykge1xuICAvKipcbiAgICogTGFuZ3VhZ2Uga2V5d29yZHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWJzdHJhY3QgYWxpYXMgYWxpZ24gYXNtIGFzc2VydCBhdXRvIGJvZHkgYnJlYWsgYnl0ZSBjYXNlIGNhc3QgY2F0Y2ggY2xhc3MgJyArXG4gICAgICAnY29uc3QgY29udGludWUgZGVidWcgZGVmYXVsdCBkZWxldGUgZGVwcmVjYXRlZCBkbyBlbHNlIGVudW0gZXhwb3J0IGV4dGVybiBmaW5hbCAnICtcbiAgICAgICdmaW5hbGx5IGZvciBmb3JlYWNoIGZvcmVhY2hfcmV2ZXJzZXwxMCBnb3RvIGlmIGltbXV0YWJsZSBpbXBvcnQgaW4gaW5vdXQgaW50ICcgK1xuICAgICAgJ2ludGVyZmFjZSBpbnZhcmlhbnQgaXMgbGF6eSBtYWNybyBtaXhpbiBtb2R1bGUgbmV3IG5vdGhyb3cgb3V0IG92ZXJyaWRlIHBhY2thZ2UgJyArXG4gICAgICAncHJhZ21hIHByaXZhdGUgcHJvdGVjdGVkIHB1YmxpYyBwdXJlIHJlZiByZXR1cm4gc2NvcGUgc2hhcmVkIHN0YXRpYyBzdHJ1Y3QgJyArXG4gICAgICAnc3VwZXIgc3dpdGNoIHN5bmNocm9uaXplZCB0ZW1wbGF0ZSB0aGlzIHRocm93IHRyeSB0eXBlZGVmIHR5cGVpZCB0eXBlb2YgdW5pb24gJyArXG4gICAgICAndW5pdHRlc3QgdmVyc2lvbiB2b2lkIHZvbGF0aWxlIHdoaWxlIHdpdGggX19GSUxFX18gX19MSU5FX18gX19nc2hhcmVkfDEwICcgK1xuICAgICAgJ19fdGhyZWFkIF9fdHJhaXRzIF9fREFURV9fIF9fRU9GX18gX19USU1FX18gX19USU1FU1RBTVBfXyBfX1ZFTkRPUl9fIF9fVkVSU0lPTl9fJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdib29sIGNkb3VibGUgY2VudCBjZmxvYXQgY2hhciBjcmVhbCBkY2hhciBkZWxlZ2F0ZSBkb3VibGUgZHN0cmluZyBmbG9hdCBmdW5jdGlvbiAnICtcbiAgICAgICdpZG91YmxlIGlmbG9hdCBpcmVhbCBsb25nIHJlYWwgc2hvcnQgc3RyaW5nIHVieXRlIHVjZW50IHVpbnQgdWxvbmcgdXNob3J0IHdjaGFyICcgK1xuICAgICAgJ3dzdHJpbmcnLFxuICAgIGxpdGVyYWw6XG4gICAgICAnZmFsc2UgbnVsbCB0cnVlJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgbGl0ZXJhbCByZWdleHBzXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICB2YXIgZGVjaW1hbF9pbnRlZ2VyX3JlID0gJygwfFsxLTldW1xcXFxkX10qKScsXG4gICAgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlID0gJygwfFsxLTldW1xcXFxkX10qfFxcXFxkW1xcXFxkX10qfFtcXFxcZF9dKz9cXFxcZCknLFxuICAgIGJpbmFyeV9pbnRlZ2VyX3JlID0gJzBbYkJdWzAxX10rJyxcbiAgICBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgPSAnKFtcXFxcZGEtZkEtRl1bXFxcXGRhLWZBLUZfXSp8X1tcXFxcZGEtZkEtRl1bXFxcXGRhLWZBLUZfXSopJyxcbiAgICBoZXhhZGVjaW1hbF9pbnRlZ2VyX3JlID0gJzBbeFhdJyArIGhleGFkZWNpbWFsX2RpZ2l0c19yZSxcblxuICAgIGRlY2ltYWxfZXhwb25lbnRfcmUgPSAnKFtlRV1bKy1dPycgKyBkZWNpbWFsX2ludGVnZXJfbm9zdXNfcmUgKyAnKScsXG4gICAgZGVjaW1hbF9mbG9hdF9yZSA9ICcoJyArIGRlY2ltYWxfaW50ZWdlcl9ub3N1c19yZSArICcoXFxcXC5cXFxcZCp8JyArIGRlY2ltYWxfZXhwb25lbnRfcmUgKyAnKXwnICtcbiAgICAgICAgICAgICAgICAnXFxcXGQrXFxcXC4nICsgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlICsgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlICsgJ3wnICtcbiAgICAgICAgICAgICAgICAnXFxcXC4nICsgZGVjaW1hbF9pbnRlZ2VyX3JlICsgZGVjaW1hbF9leHBvbmVudF9yZSArICc/JyArXG4gICAgICAgICAgICAgICcpJyxcbiAgICBoZXhhZGVjaW1hbF9mbG9hdF9yZSA9ICcoMFt4WF0oJyArXG4gICAgICAgICAgICAgICAgICBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgKyAnXFxcXC4nICsgaGV4YWRlY2ltYWxfZGlnaXRzX3JlICsgJ3wnK1xuICAgICAgICAgICAgICAgICAgJ1xcXFwuPycgKyBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgK1xuICAgICAgICAgICAgICAgICAnKVtwUF1bKy1dPycgKyBkZWNpbWFsX2ludGVnZXJfbm9zdXNfcmUgKyAnKScsXG5cbiAgICBpbnRlZ2VyX3JlID0gJygnICtcbiAgICAgIGRlY2ltYWxfaW50ZWdlcl9yZSArICd8JyArXG4gICAgICBiaW5hcnlfaW50ZWdlcl9yZSAgKyAnfCcgK1xuICAgICAgIGhleGFkZWNpbWFsX2ludGVnZXJfcmUgICArXG4gICAgJyknLFxuXG4gICAgZmxvYXRfcmUgPSAnKCcgK1xuICAgICAgaGV4YWRlY2ltYWxfZmxvYXRfcmUgKyAnfCcgK1xuICAgICAgZGVjaW1hbF9mbG9hdF9yZSAgK1xuICAgICcpJztcblxuICAvKipcbiAgICogRXNjYXBlIHNlcXVlbmNlIHN1cHBvcnRlZCBpbiBEIHN0cmluZyBhbmQgY2hhcmFjdGVyIGxpdGVyYWxzXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICB2YXIgZXNjYXBlX3NlcXVlbmNlX3JlID0gJ1xcXFxcXFxcKCcgK1xuICAgICAgICAgICAgICAnW1xcJ1wiXFxcXD9cXFxcXFxcXGFiZm5ydHZdfCcgKyAgLy8gY29tbW9uIGVzY2FwZXNcbiAgICAgICAgICAgICAgJ3VbXFxcXGRBLUZhLWZdezR9fCcgKyAgICAgLy8gZm91ciBoZXggZGlnaXQgdW5pY29kZSBjb2RlcG9pbnRcbiAgICAgICAgICAgICAgJ1swLTddezEsM318JyArICAgICAgIC8vIG9uZSB0byB0aHJlZSBvY3RhbCBkaWdpdCBhc2NpaSBjaGFyIGNvZGVcbiAgICAgICAgICAgICAgJ3hbXFxcXGRBLUZhLWZdezJ9fCcgKyAgICAvLyB0d28gaGV4IGRpZ2l0IGFzY2lpIGNoYXIgY29kZVxuICAgICAgICAgICAgICAnVVtcXFxcZEEtRmEtZl17OH0nICsgICAgICAvLyBlaWdodCBoZXggZGlnaXQgdW5pY29kZSBjb2RlcG9pbnRcbiAgICAgICAgICAgICAgJyl8JyArXG4gICAgICAgICAgICAgICcmW2EtekEtWlxcXFxkXXsyLH07JzsgICAgICAvLyBuYW1lZCBjaGFyYWN0ZXIgZW50aXR5XG5cbiAgLyoqXG4gICAqIEQgaW50ZWdlciBudW1iZXIgbGl0ZXJhbHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0lOVEVHRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgYmVnaW46ICdcXFxcYicgKyBpbnRlZ2VyX3JlICsgJyhMfHV8VXxMdXxMVXx1THxVTCk/JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIC8qKlxuICAgKiBbRF9GTE9BVF9NT0RFIGRlc2NyaXB0aW9uXVxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfRkxPQVRfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnXFxcXGIoJyArXG4gICAgICAgIGZsb2F0X3JlICsgJyhbZkZdfEx8aXxbZkZdaXxMaSk/fCcgK1xuICAgICAgICBpbnRlZ2VyX3JlICsgJyhpfFtmRl1pfExpKScgK1xuICAgICAgJyknLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIC8qKlxuICAgKiBEIGNoYXJhY3RlciBsaXRlcmFsXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9DSEFSQUNURVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFwnKCcgKyBlc2NhcGVfc2VxdWVuY2VfcmUgKyAnfC4pJywgZW5kOiAnXFwnJyxcbiAgICBpbGxlZ2FsOiAnLidcbiAgfTtcblxuICAvKipcbiAgICogRCBzdHJpbmcgZXNjYXBlIHNlcXVlbmNlXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9FU0NBUEVfU0VRVUVOQ0UgPSB7XG4gICAgYmVnaW46IGVzY2FwZV9zZXF1ZW5jZV9yZSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvKipcbiAgICogRCBkb3VibGUgcXVvdGVkIHN0cmluZyBsaXRlcmFsXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbRF9FU0NBUEVfU0VRVUVOQ0VdLFxuICAgIGVuZDogJ1wiW2N3ZF0/J1xuICB9O1xuXG4gIC8qKlxuICAgKiBEIHd5c2l3eWcgYW5kIGRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX1dZU0lXWUdfREVMSU1JVEVEX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdbcnFdXCInLFxuICAgIGVuZDogJ1wiW2N3ZF0/JyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBhbHRlcm5hdGUgd3lzaXd5ZyBzdHJpbmcgbGl0ZXJhbFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfQUxURVJOQVRFX1dZU0lXWUdfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ2AnLFxuICAgIGVuZDogJ2BbY3dkXT8nXG4gIH07XG5cbiAgLyoqXG4gICAqIEQgaGV4YWRlY2ltYWwgc3RyaW5nIGxpdGVyYWxcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0hFWF9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAneFwiW1xcXFxkYS1mQS1GXFxcXHNcXFxcblxcXFxyXSpcIltjd2RdPycsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIC8qKlxuICAgKiBEIGRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfVE9LRU5fU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ3FcIlxcXFx7JyxcbiAgICBlbmQ6ICdcXFxcfVwiJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYXNoYmFuZyBzdXBwb3J0XG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9IQVNIQkFOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMhJyxcbiAgICBlbmQ6ICckJyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBzcGVjaWFsIHRva2VuIHNlcXVlbmNlXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9TUEVDSUFMX1RPS0VOX1NFUVVFTkNFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICcjKGxpbmUpJyxcbiAgICBlbmQ6ICckJyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9BVFRSSUJVVEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ0BbYS16QS1aX11bYS16QS1aX1xcXFxkXSonXG4gIH07XG5cbiAgLyoqXG4gICAqIEQgbmVzdGluZyBjb21tZW50XG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9ORVNUSU5HX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVChcbiAgICAnXFxcXC9cXFxcKycsXG4gICAgJ1xcXFwrXFxcXC8nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXSxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IERfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgRF9ORVNUSU5HX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgRF9IRVhfU1RSSU5HX01PREUsXG4gICAgICAgIERfU1RSSU5HX01PREUsXG4gICAgICAgIERfV1lTSVdZR19ERUxJTUlURURfU1RSSU5HX01PREUsXG4gICAgICAgIERfQUxURVJOQVRFX1dZU0lXWUdfU1RSSU5HX01PREUsXG4gICAgICAgIERfVE9LRU5fU1RSSU5HX01PREUsXG4gICAgICAgIERfRkxPQVRfTU9ERSxcbiAgICAgICAgRF9JTlRFR0VSX01PREUsXG4gICAgICAgIERfQ0hBUkFDVEVSX01PREUsXG4gICAgICAgIERfSEFTSEJBTkdfTU9ERSxcbiAgICAgICAgRF9TUEVDSUFMX1RPS0VOX1NFUVVFTkNFX01PREUsXG4gICAgICAgIERfQVRUUklCVVRFX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbWQnLCAnbWtkb3duJywgJ21rZCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBoaWdobGlnaHQgaGVhZGVyc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXiN7MSw2fScsIGVuZDogJyQnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ14uKz9cXFxcbls9LV17Mix9JCcgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIGh0bWxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8JywgZW5kOiAnPicsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gbGlzdHMgKGluZGljYXRvcnMgb25seSlcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVsbGV0JyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqKFsqKy1dfChcXFxcZCtcXFxcLikpXFxcXHMrJ1xuICAgICAgfSxcbiAgICAgIC8vIHN0cm9uZyBzZWdtZW50c1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJvbmcnLFxuICAgICAgICBiZWdpbjogJ1sqX117Mn0uKz9bKl9dezJ9J1xuICAgICAgfSxcbiAgICAgIC8vIGVtcGhhc2lzIHNlZ21lbnRzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2VtcGhhc2lzJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXCouKz9cXFxcKicgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXy4rP18nXG4gICAgICAgICAgLCByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBibG9ja3F1b3Rlc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdxdW90ZScsXG4gICAgICAgIGJlZ2luOiAnXj5cXFxccysnLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIC8vIGNvZGUgc25pcHBldHNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29kZScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdeYGBgXFxcXHcqXFxcXHMqJCcsIGVuZDogJ15gYGBbIF0qJCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnYC4rP2AnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ14oIHs0fXxcXFxcdCknLCBlbmQ6ICckJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGhvcml6b250YWwgcnVsZXNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeWy1cXFxcKl17Myx9JywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICAvLyB1c2luZyBsaW5rcyAtIHRpdGxlIGFuZCBsaW5rXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXFsuKz9cXFxcXVtcXFxcKFxcXFxbXS4qP1tcXFxcKVxcXFxdXScsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXF1cXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXF1cXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9eXFxbW15cXG5dK1xcXTovLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rJyxcbiAgICAgICAgICAgIGJlZ2luOiAvOlxccyovLCBlbmQ6IC8kLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgdmFyaWFudHM6IFt7XG4gICAgICBiZWdpbjogJ1xcXFwkW0EtWmEtejAtOV9dKydcbiAgICB9XSxcbiAgfTtcblxuICB2YXIgQlJBQ0VEX1NVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICB2YXJpYW50czogW3tcbiAgICAgIGJlZ2luOiAnXFxcXCR7JyxcbiAgICAgIGVuZDogJ30nXG4gICAgfSwgXSxcbiAgICBrZXl3b3JkczogJ3RydWUgZmFsc2UgbnVsbCB0aGlzIGlzIG5ldyBzdXBlcicsXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbe1xuICAgICAgICBiZWdpbjogJ3JcXCdcXCdcXCcnLFxuICAgICAgICBlbmQ6ICdcXCdcXCdcXCcnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcIlwiXCInLFxuICAgICAgICBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcXCcnLFxuICAgICAgICBlbmQ6ICdcXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCdcXCdcXCcnLFxuICAgICAgICBlbmQ6ICdcXCdcXCdcXCcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIEJSQUNFRF9TVUJTVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJyxcbiAgICAgICAgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNULCBCUkFDRURfU1VCU1RdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVCwgQlJBQ0VEX1NVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNULCBCUkFDRURfU1VCU1RdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBCUkFDRURfU1VCU1QuY29udGFpbnMgPSBbXG4gICAgaGxqcy5DX05VTUJFUl9NT0RFLCBTVFJJTkdcbiAgXTtcblxuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDogJ2Fic3RyYWN0IGFzIGFzc2VydCBhc3luYyBhd2FpdCBicmVhayBjYXNlIGNhdGNoIGNsYXNzIGNvbnN0IGNvbnRpbnVlIGNvdmFyaWFudCBkZWZhdWx0IGRlZmVycmVkIGRvICcgK1xuICAgICAgJ2R5bmFtaWMgZWxzZSBlbnVtIGV4cG9ydCBleHRlbmRzIGV4dGVuc2lvbiBleHRlcm5hbCBmYWN0b3J5IGZhbHNlIGZpbmFsIGZpbmFsbHkgZm9yIEZ1bmN0aW9uIGdldCBoaWRlIGlmICcgK1xuICAgICAgJ2ltcGxlbWVudHMgaW1wb3J0IGluIGluZmVyZmFjZSBpcyBsaWJyYXJ5IG1peGluIG5ldyBudWxsIG9uIG9wZXJhdG9yIHBhcnQgcmV0aHJvdyByZXR1cm4gc2V0IHNob3cgc3RhdGljICcgK1xuICAgICAgJ3N1cGVyIHN3aXRjaCBzeW5jIHRoaXMgdGhyb3cgdHJ1ZSB0cnkgdHlwZWRlZiB2YXIgdm9pZCB3aGlsZSB3aXRoIHlpZWxkJyxcbiAgICBidWlsdF9pbjpcbiAgICAgIC8vIGRhcnQ6Y29yZVxuICAgICAgJ0NvbXBhcmFibGUgRGF0ZVRpbWUgRHVyYXRpb24gRnVuY3Rpb24gSXRlcmFibGUgSXRlcmF0b3IgTGlzdCBNYXAgTWF0Y2ggTnVsbCBPYmplY3QgUGF0dGVybiBSZWdFeHAgU2V0ICcgK1xuICAgICAgJ1N0b3B3YXRjaCBTdHJpbmcgU3RyaW5nQnVmZmVyIFN0cmluZ1NpbmsgU3ltYm9sIFR5cGUgVXJpIGJvb2wgZG91YmxlIGR5bmFtaWMgaW50IG51bSBwcmludCAnICtcbiAgICAgIC8vIGRhcnQ6aHRtbFxuICAgICAgJ0VsZW1lbnQgRWxlbWVudExpc3QgZG9jdW1lbnQgcXVlcnlTZWxlY3RvciBxdWVyeVNlbGVjdG9yQWxsIHdpbmRvdydcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnL1xcXFwqXFxcXConLFxuICAgICAgICAnXFxcXCovJywge1xuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnbWFya2Rvd24nXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvLy8rXFxcXHMqJyxcbiAgICAgICAgJyQnLCB7XG4gICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICBzdWJMYW5ndWFnZTogJ21hcmtkb3duJyxcbiAgICAgICAgICAgIGJlZ2luOiAnLicsXG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgZW5kOiAneycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cydcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJz0+JyAvLyBObyBtYXJrdXAsIGp1c3QgYSByZWxldmFuY2UgYm9vc3RlclxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZXhwb3J0cyByZWdpc3RlciBmaWxlIHNobCBhcnJheSByZWNvcmQgcHJvcGVydHkgZm9yIG1vZCB3aGlsZSBzZXQgYWxseSBsYWJlbCB1c2VzIHJhaXNlIG5vdCAnICtcbiAgICAnc3RvcmVkIGNsYXNzIHNhZmVjYWxsIHZhciBpbnRlcmZhY2Ugb3IgcHJpdmF0ZSBzdGF0aWMgZXhpdCBpbmRleCBpbmhlcml0ZWQgdG8gZWxzZSBzdGRjYWxsICcgK1xuICAgICdvdmVycmlkZSBzaHIgYXNtIGZhciByZXNvdXJjZXN0cmluZyBmaW5hbGl6YXRpb24gcGFja2VkIHZpcnR1YWwgb3V0IGFuZCBwcm90ZWN0ZWQgbGlicmFyeSBkbyAnICtcbiAgICAneG9yd3JpdGUgZ290byBuZWFyIGZ1bmN0aW9uIGVuZCBkaXYgb3ZlcmxvYWQgb2JqZWN0IHVuaXQgYmVnaW4gc3RyaW5nIG9uIGlubGluZSByZXBlYXQgdW50aWwgJyArXG4gICAgJ2Rlc3RydWN0b3Igd3JpdGUgbWVzc2FnZSBwcm9ncmFtIHdpdGggcmVhZCBpbml0aWFsaXphdGlvbiBleGNlcHQgZGVmYXVsdCBuaWwgaWYgY2FzZSBjZGVjbCBpbiAnICtcbiAgICAnZG93bnRvIHRocmVhZHZhciBvZiB0cnkgcGFzY2FsIGNvbnN0IGV4dGVybmFsIGNvbnN0cnVjdG9yIHR5cGUgcHVibGljIHRoZW4gaW1wbGVtZW50YXRpb24gJyArXG4gICAgJ2ZpbmFsbHkgcHVibGlzaGVkIHByb2NlZHVyZSBhYnNvbHV0ZSByZWludHJvZHVjZSBvcGVyYXRvciBhcyBpcyBhYnN0cmFjdCBhbGlhcyBhc3NlbWJsZXIgJyArXG4gICAgJ2JpdHBhY2tlZCBicmVhayBjb250aW51ZSBjcHBkZWNsIGN2YXIgZW51bWVyYXRvciBleHBlcmltZW50YWwgcGxhdGZvcm0gZGVwcmVjYXRlZCAnICtcbiAgICAndW5pbXBsZW1lbnRlZCBkeW5hbWljIGV4cG9ydCBmYXIxNiBmb3J3YXJkIGdlbmVyaWMgaGVscGVyIGltcGxlbWVudHMgaW50ZXJydXB0IGlvY2hlY2tzICcgK1xuICAgICdsb2NhbCBuYW1lIG5vZGVmYXVsdCBub3JldHVybiBub3N0YWNrZnJhbWUgb2xkZnBjY2FsbCBvdGhlcndpc2Ugc2F2ZXJlZ2lzdGVycyBzb2Z0ZmxvYXQgJyArXG4gICAgJ3NwZWNpYWxpemUgc3RyaWN0IHVuYWxpZ25lZCB2YXJhcmdzICc7XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoL1xcey8sIC9cXH0vLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgaGxqcy5DT01NRU5UKC9cXChcXCovLCAvXFwqXFwpLywge3JlbGV2YW5jZTogMTB9KVxuICBdO1xuICB2YXIgRElSRUNUSVZFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXHtcXCQvLCBlbmQ6IC9cXH0vfSxcbiAgICAgIHtiZWdpbjogL1xcKFxcKlxcJC8sIGVuZDogL1xcKlxcKS99XG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy8sXG4gICAgY29udGFpbnM6IFt7YmVnaW46IC8nJy99XVxuICB9O1xuICB2YXIgQ0hBUl9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46IC8oI1xcZCspKy9cbiAgfTtcbiAgdmFyIENMQVNTID0ge1xuICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxzKj1cXFxccypjbGFzc1xcXFxzKlxcXFwoJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgIF1cbiAgfTtcbiAgdmFyIEZVTkNUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24gY29uc3RydWN0b3IgZGVzdHJ1Y3RvciBwcm9jZWR1cmUnLCBlbmQ6IC9bOjtdLyxcbiAgICBrZXl3b3JkczogJ2Z1bmN0aW9uIGNvbnN0cnVjdG9yfDEwIGRlc3RydWN0b3J8MTAgcHJvY2VkdXJlfDEwJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtTVFJJTkcsIENIQVJfU1RSSU5HLCBESVJFQ1RJVkVdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICAgICAgfSxcbiAgICAgIERJUkVDVElWRVxuICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydkcHInLCAnZGZtJywgJ3BhcycsICdwYXNjYWwnLCAnZnJlZXBhc2NhbCcsICdsYXphcnVzJywgJ2xwcicsICdsZm0nXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXCJ8XFwkW0ctWmctel18XFwvXFwqfDxcXC98XFx8LyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLCBDSEFSX1NUUklORyxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBDTEFTUyxcbiAgICAgIEZVTkNUSU9OLFxuICAgICAgRElSRUNUSVZFXG4gICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwYXRjaCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL15AQCArXFwtXFxkKyxcXGQrICtcXCtcXGQrLFxcZCsgK0BAJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXCpcXCpcXCogK1xcZCssXFxkKyArXFwqXFwqXFwqXFwqJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXC1cXC1cXC0gK1xcZCssXFxkKyArXFwtXFwtXFwtXFwtJC99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL0luZGV4OiAvLCBlbmQ6IC8kL30sXG4gICAgICAgICAge2JlZ2luOiAvPXszLH0vLCBlbmQ6IC8kL30sXG4gICAgICAgICAge2JlZ2luOiAvXlxcLXszfS8sIGVuZDogLyQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwqezN9IC8sIGVuZDogLyQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwrezN9LywgZW5kOiAvJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXCp7MTV9JC8gfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhZGRpdGlvbicsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwrJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2RlbGV0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXC0nLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYWRkaXRpb24nLFxuICAgICAgICBiZWdpbjogJ15cXFxcIScsIGVuZDogJyQnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEZJTFRFUiA9IHtcbiAgICBiZWdpbjogL1xcfFtBLVphLXpdKzo/LyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbmFtZTpcbiAgICAgICAgJ3RydW5jYXRld29yZHMgcmVtb3ZldGFncyBsaW5lYnJlYWtzYnIgeWVzbm8gZ2V0X2RpZ2l0IHRpbWVzaW5jZSByYW5kb20gc3RyaXB0YWdzICcgK1xuICAgICAgICAnZmlsZXNpemVmb3JtYXQgZXNjYXBlIGxpbmVicmVha3MgbGVuZ3RoX2lzIGxqdXN0IHJqdXN0IGN1dCB1cmxpemUgZml4X2FtcGVyc2FuZHMgJyArXG4gICAgICAgICd0aXRsZSBmbG9hdGZvcm1hdCBjYXBmaXJzdCBwcHJpbnQgZGl2aXNpYmxlYnkgYWRkIG1ha2VfbGlzdCB1bm9yZGVyZWRfbGlzdCB1cmxlbmNvZGUgJyArXG4gICAgICAgICd0aW1ldW50aWwgdXJsaXpldHJ1bmMgd29yZGNvdW50IHN0cmluZ2Zvcm1hdCBsaW5lbnVtYmVycyBzbGljZSBkYXRlIGRpY3Rzb3J0ICcgK1xuICAgICAgICAnZGljdHNvcnRyZXZlcnNlZCBkZWZhdWx0X2lmX25vbmUgcGx1cmFsaXplIGxvd2VyIGpvaW4gY2VudGVyIGRlZmF1bHQgJyArXG4gICAgICAgICd0cnVuY2F0ZXdvcmRzX2h0bWwgdXBwZXIgbGVuZ3RoIHBob25lMm51bWVyaWMgd29yZHdyYXAgdGltZSBhZGRzbGFzaGVzIHNsdWdpZnkgZmlyc3QgJyArXG4gICAgICAgICdlc2NhcGVqcyBmb3JjZV9lc2NhcGUgaXJpZW5jb2RlIGxhc3Qgc2FmZSBzYWZlc2VxIHRydW5jYXRlY2hhcnMgbG9jYWxpemUgdW5sb2NhbGl6ZSAnICtcbiAgICAgICAgJ2xvY2FsdGltZSB1dGMgdGltZXpvbmUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnamluamEnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKC9cXHslXFxzKmNvbW1lbnRcXHMqJX0vLCAvXFx7JVxccyplbmRjb21tZW50XFxzKiV9LyksXG4gICAgICBobGpzLkNPTU1FTlQoL1xceyMvLCAvI30vKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHslLywgZW5kOiAvJX0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgJ2NvbW1lbnQgZW5kY29tbWVudCBsb2FkIHRlbXBsYXRldGFnIGlmY2hhbmdlZCBlbmRpZmNoYW5nZWQgaWYgZW5kaWYgZmlyc3RvZiBmb3IgJyArXG4gICAgICAgICAgICAgICAgJ2VuZGZvciBpZm5vdGVxdWFsIGVuZGlmbm90ZXF1YWwgd2lkdGhyYXRpbyBleHRlbmRzIGluY2x1ZGUgc3BhY2VsZXNzICcgK1xuICAgICAgICAgICAgICAgICdlbmRzcGFjZWxlc3MgcmVncm91cCBpZmVxdWFsIGVuZGlmZXF1YWwgc3NpIG5vdyB3aXRoIGN5Y2xlIHVybCBmaWx0ZXIgJyArXG4gICAgICAgICAgICAgICAgJ2VuZGZpbHRlciBkZWJ1ZyBibG9jayBlbmRibG9jayBlbHNlIGF1dG9lc2NhcGUgZW5kYXV0b2VzY2FwZSBjc3JmX3Rva2VuIGVtcHR5IGVsaWYgJyArXG4gICAgICAgICAgICAgICAgJ2VuZHdpdGggc3RhdGljIHRyYW5zIGJsb2NrdHJhbnMgZW5kYmxvY2t0cmFucyBnZXRfc3RhdGljX3ByZWZpeCBnZXRfbWVkaWFfcHJlZml4ICcgK1xuICAgICAgICAgICAgICAgICdwbHVyYWwgZ2V0X2N1cnJlbnRfbGFuZ3VhZ2UgbGFuZ3VhZ2UgZ2V0X2F2YWlsYWJsZV9sYW5ndWFnZXMgJyArXG4gICAgICAgICAgICAgICAgJ2dldF9jdXJyZW50X2xhbmd1YWdlX2JpZGkgZ2V0X2xhbmd1YWdlX2luZm8gZ2V0X2xhbmd1YWdlX2luZm9fbGlzdCBsb2NhbGl6ZSAnICtcbiAgICAgICAgICAgICAgICAnZW5kbG9jYWxpemUgbG9jYWx0aW1lIGVuZGxvY2FsdGltZSB0aW1lem9uZSBlbmR0aW1lem9uZSBnZXRfY3VycmVudF90aW1lem9uZSAnICtcbiAgICAgICAgICAgICAgICAndmVyYmF0aW0nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICBrZXl3b3JkczogJ2luIGJ5IGFzJyxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtGSUxURVJdLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHsvLCBlbmQ6IC99fS8sXG4gICAgICAgIGNvbnRhaW5zOiBbRklMVEVSXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydiaW5kJywgJ3pvbmUnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ0lOIEEgQUFBQSBBRlNEQiBBUEwgQ0FBIENETlNLRVkgQ0RTIENFUlQgQ05BTUUgREhDSUQgRExWIEROQU1FIEROU0tFWSBEUyBISVAgSVBTRUNLRVkgS0VZIEtYICcgK1xuICAgICAgICAnTE9DIE1YIE5BUFRSIE5TIE5TRUMgTlNFQzMgTlNFQzNQQVJBTSBQVFIgUlJTSUcgUlAgU0lHIFNPQSBTUlYgU1NIRlAgVEEgVEtFWSBUTFNBIFRTSUcgVFhUJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eXFwkKFRUTHxHRU5FUkFURXxJTkNMVURFfE9SSUdJTilcXGIvXG4gICAgICB9LFxuICAgICAgLy8gSVB2NlxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJygoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKShcXFxcLigyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIC8vIElQdjRcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXFxcYidcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5OVU1CRVJfTU9ERSwge2JlZ2luOiAvXFxiXFxkK1tkaHdtXT8vfSlcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZG9ja2VyJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogJ2Zyb20gbWFpbnRhaW5lciBleHBvc2UgZW52IGFyZyB1c2VyIG9uYnVpbGQgc3RvcHNpZ25hbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3J1biBjbWQgZW50cnlwb2ludCB2b2x1bWUgYWRkIGNvcHkgd29ya2RpciBsYWJlbCBoZWFsdGhjaGVjayBzaGVsbCcsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogL1teXFxcXF0kLyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ2Jhc2gnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6ICc8LydcbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgL15cXHMqQD9yZW1cXGIvLCAvJC8sXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAxMFxuICAgIH1cbiAgKTtcbiAgdmFyIExBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICdeXFxcXHMqW0EtWmEtei5fP11bQS1aYS16MC05XyQjQH4uP10qKDp8XFxcXHMrbGFiZWwpJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2JhdCcsICdjbWQnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaWYgZWxzZSBnb3RvIGZvciBpbiBkbyBjYWxsIGV4aXQgbm90IGV4aXN0IGVycm9ybGV2ZWwgZGVmaW5lZCAnICtcbiAgICAgICAgJ2VxdSBuZXEgbHNzIGxlcSBndHIgZ2VxJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAncHJuIG51bCBscHQzIGxwdDIgbHB0MSBjb24gY29tNCBjb20zIGNvbTIgY29tMSBhdXggJyArXG4gICAgICAgICdzaGlmdCBjZCBkaXIgZWNobyBzZXRsb2NhbCBlbmRsb2NhbCBzZXQgcGF1c2UgY29weSAnICtcbiAgICAgICAgJ2FwcGVuZCBhc3NvYyBhdCBhdHRyaWIgYnJlYWsgY2FjbHMgY2QgY2hjcCBjaGRpciBjaGtkc2sgY2hrbnRmcyBjbHMgY21kIGNvbG9yICcgK1xuICAgICAgICAnY29tcCBjb21wYWN0IGNvbnZlcnQgZGF0ZSBkaXIgZGlza2NvbXAgZGlza2NvcHkgZG9za2V5IGVyYXNlIGZzICcgK1xuICAgICAgICAnZmluZCBmaW5kc3RyIGZvcm1hdCBmdHlwZSBncmFmdGFibCBoZWxwIGtleWIgbGFiZWwgbWQgbWtkaXIgbW9kZSBtb3JlIG1vdmUgcGF0aCAnICtcbiAgICAgICAgJ3BhdXNlIHByaW50IHBvcGQgcHVzaGQgcHJvbXQgcmQgcmVjb3ZlciByZW0gcmVuYW1lIHJlcGxhY2UgcmVzdG9yZSBybWRpciBzaGlmdCcgK1xuICAgICAgICAnc29ydCBzdGFydCBzdWJzdCB0aW1lIHRpdGxlIHRyZWUgdHlwZSB2ZXIgdmVyaWZ5IHZvbCAnICtcbiAgICAgICAgLy8gd2ludXRpbHNcbiAgICAgICAgJ3BpbmcgbmV0IGlwY29uZmlnIHRhc2traWxsIHhjb3B5IHJlbiBkZWwnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsIGJlZ2luOiAvJSVbXiBdfCVbXiBdKz8lfCFbXiBdKz8hL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogTEFCRUwuYmVnaW4sIGVuZDogJ2dvdG86ZW9mJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICcoW19hLXpBLVpdXFxcXHcqXFxcXC4pKihbX2EtekEtWl1cXFxcdyo6KT9bX2EtekEtWl1cXFxcdyonfSksXG4gICAgICAgICAgQ09NTUVOVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJ1xcXFxiXFxcXGQrJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgQ09NTUVOVFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBRVU9URURfUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvXG4gIH07XG4gIHZhciBBUE9TX1BST1BFUlRZID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgfTtcbiAgdmFyIFVOUVVPVEVEX1BST1BFUlRZID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdbXFxcXHctP10rOlxcXFx3KycsIGVuZDogJ1xcXFxXJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFZBTFVFTEVTU19QUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXHcrLT9cXFxcdysnLCBlbmQ6ICdcXFxcVycsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogJ2RzY29uZmlnJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdeZHNjb25maWcnLCBlbmQ6ICdcXFxccycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICcobGlzdHxjcmVhdGV8Z2V0fHNldHxkZWxldGUpLShcXFxcdyspJywgZW5kOiAnXFxcXHMnLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAnIUAjJCVeJiooKScsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICctLShcXFxcdyspJywgZW5kOiAnXFxcXHMnLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgUVVPVEVEX1BST1BFUlRZLFxuICAgICAgQVBPU19QUk9QRVJUWSxcbiAgICAgIFVOUVVPVEVEX1BST1BFUlRZLFxuICAgICAgVkFMVUVMRVNTX1BST1BFUlRZLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7IGJlZ2luOiAnKCh1OD98VSl8TCk/XCInIH0pLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VSk/UlwiJywgZW5kOiAnXCInLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFwnXFxcXFxcXFw/LicsIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICcuJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTlVNQkVSUyA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoXFxcXGQrKFxcXFwuXFxcXGQqKT98XFxcXC5cXFxcZCspKHV8VXxsfEx8dWx8VUx8ZnxGKScgfSxcbiAgICAgIHsgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFBSRVBST0NFU1NPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJyMnLCBlbmQ6ICckJyxcbiAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbGlmIGVuZGlmIGRlZmluZSB1bmRlZiBpZmRlZiBpZm5kZWYnfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXFxcXG4vLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbmNsdWRlJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpbmNsdWRlJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KFNUUklOR1MsIHtjbGFzc05hbWU6ICdtZXRhLXN0cmluZyd9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJzwnLCBlbmQ6ICc+JyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBTVFJJTkdTLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcblxuICB2YXIgRFRTX1JFRkVSRU5DRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46ICdcXFxcJlthLXpcXFxcZF9dKlxcXFxiJ1xuICB9O1xuXG4gIHZhciBEVFNfS0VZV09SRCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhLWtleXdvcmQnLFxuICAgIGJlZ2luOiAnL1thLXpdW2EtelxcXFxkLV0qLydcbiAgfTtcblxuICB2YXIgRFRTX0xBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICdeXFxcXHMqW2EtekEtWl9dW2EtekEtWlxcXFxkX10qOidcbiAgfTtcblxuICB2YXIgRFRTX0NFTExfUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJzwnLFxuICAgIGVuZDogJz4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOVU1CRVJTLFxuICAgICAgRFRTX1JFRkVSRU5DRVxuICAgIF1cbiAgfTtcblxuICB2YXIgRFRTX05PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luOiAvW2EtekEtWl9dW2EtekEtWlxcZF9AXSpcXHN7LyxcbiAgICBlbmQ6IC9bezs9XS8sXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZVxuICB9O1xuXG4gIHZhciBEVFNfUk9PVF9OT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbjogJy9cXFxccyp7JyxcbiAgICBlbmQ6ICd9OycsXG4gICAgcmVsZXZhbmNlOiAxMCxcbiAgICBjb250YWluczogW1xuICAgICAgRFRTX1JFRkVSRU5DRSxcbiAgICAgIERUU19LRVlXT1JELFxuICAgICAgRFRTX0xBQkVMLFxuICAgICAgRFRTX05PREUsXG4gICAgICBEVFNfQ0VMTF9QUk9QRVJUWSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBOVU1CRVJTLFxuICAgICAgU1RSSU5HU1xuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiBcIlwiLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBEVFNfUk9PVF9OT0RFLFxuICAgICAgRFRTX1JFRkVSRU5DRSxcbiAgICAgIERUU19LRVlXT1JELFxuICAgICAgRFRTX0xBQkVMLFxuICAgICAgRFRTX05PREUsXG4gICAgICBEVFNfQ0VMTF9QUk9QRVJUWSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBOVU1CRVJTLFxuICAgICAgU1RSSU5HUyxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnOjonLFxuICAgICAgICBrZXl3b3JkczogXCJcIlxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBFWFBSRVNTSU9OX0tFWVdPUkRTID0gJ2lmIGVxIG5lIGx0IGx0ZSBndCBndGUgc2VsZWN0IGRlZmF1bHQgbWF0aCBzZXAnO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZHN0J10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHtbI1xcL10vLCBlbmQ6IC9cXH0vLCBpbGxlZ2FsOiAvOy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogL1thLXpBLVpcXC4tXSsvLFxuICAgICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLCByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvXFx7LywgZW5kOiAvXFx9LywgaWxsZWdhbDogLzsvLFxuICAgICAgICBrZXl3b3JkczogRVhQUkVTU0lPTl9LRVlXT1JEU1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgdmFyIGNvbW1lbnRNb2RlID0gaGxqcy5DT01NRU5UKC9cXChcXCovLCAvXFwqXFwpLyk7XG5cbiAgICB2YXIgbm9uVGVybWluYWxNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiYXR0cmlidXRlXCIsXG4gICAgICAgIGJlZ2luOiAvXlsgXSpbYS16QS1aXVthLXpBLVotXSooW1xccy1dK1thLXpBLVpdW2EtekEtWl0qKSovXG4gICAgfTtcblxuICAgIHZhciBzcGVjaWFsU2VxdWVuY2VNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwibWV0YVwiLFxuICAgICAgICBiZWdpbjogL1xcPy4qXFw/L1xuICAgIH07XG5cbiAgICB2YXIgcnVsZUJvZHlNb2RlID0ge1xuICAgICAgICBiZWdpbjogLz0vLCBlbmQ6IC87LyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIGNvbW1lbnRNb2RlLFxuICAgICAgICAgICAgc3BlY2lhbFNlcXVlbmNlTW9kZSxcbiAgICAgICAgICAgIC8vIHRlcm1pbmFsc1xuICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLCBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWxsZWdhbDogL1xcUy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBjb21tZW50TW9kZSxcbiAgICAgICAgICAgIG5vblRlcm1pbmFsTW9kZSxcbiAgICAgICAgICAgIHJ1bGVCb2R5TW9kZVxuICAgICAgICBdXG4gICAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBFTElYSVJfSURFTlRfUkUgPSAnW2EtekEtWl9dW2EtekEtWjAtOV8uXSooXFxcXCF8XFxcXD8pPyc7XG4gIHZhciBFTElYSVJfTUVUSE9EX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dP3xbLSt+XVxcXFxAfDw8fD4+fD1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfmB8XXxcXFxcW1xcXFxdPT8nO1xuICB2YXIgRUxJWElSX0tFWVdPUkRTID1cbiAgICAnYW5kIGZhbHNlIHRoZW4gZGVmaW5lZCBtb2R1bGUgaW4gcmV0dXJuIHJlZG8gcmV0cnkgZW5kIGZvciB0cnVlIHNlbGYgd2hlbiAnICtcbiAgICAnbmV4dCB1bnRpbCBkbyBiZWdpbiB1bmxlc3MgbmlsIGJyZWFrIG5vdCBjYXNlIGNvbmQgYWxpYXMgd2hpbGUgZW5zdXJlIG9yICcgK1xuICAgICdpbmNsdWRlIHVzZSBhbGlhcyBmbiBxdW90ZSByZXF1aXJlIGltcG9ydCB3aXRofDAnO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnI1xcXFx7JywgZW5kOiAnfScsXG4gICAgbGV4ZW1lczogRUxJWElSX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBFTElYSVJfS0VZV09SRFNcbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2RlZiBkZWZwIGRlZm1hY3JvJywgZW5kOiAvXFxCXFxiLywgLy8gdGhlIG1vZGUgaXMgZW5kZWQgYnkgdGhlIHRpdGxlXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgYmVnaW46IEVMSVhJUl9JREVOVF9SRSxcbiAgICAgICAgZW5kc1BhcmVudDogdHJ1ZVxuICAgICAgfSlcbiAgICBdXG4gIH07XG4gIHZhciBDTEFTUyA9IGhsanMuaW5oZXJpdChGVU5DVElPTiwge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZGVmaW1wbCBkZWZtb2R1bGUgZGVmcHJvdG9jb2wgZGVmcmVjb3JkJywgZW5kOiAvXFxiZG9cXGJ8JHw7L1xuICB9KTtcbiAgdmFyIEVMSVhJUl9ERUZBVUxUX0NPTlRBSU5TID0gW1xuICAgIFNUUklORyxcbiAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgIENMQVNTLFxuICAgIEZVTkNUSU9OLFxuICAgIHtcbiAgICAgIGJlZ2luOiAnOjonXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgYmVnaW46ICc6KD8hW1xcXFxzOl0pJyxcbiAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCB7YmVnaW46IEVMSVhJUl9NRVRIT0RfUkV9XSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiBFTElYSVJfSURFTlRfUkUgKyAnOig/ITopJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMG9bMC03X10rKXwoXFxcXGIwYlswMV9dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoLT9cXFxcYlsxLTldWzAtOV9dKiguWzAtOV9dKyhbZUVdWy0rXT9bMC05XSspPyk/KScsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgIGJlZ2luOiAnKFxcXFwkXFxcXFcpfCgoXFxcXCR8XFxcXEBcXFxcQD8pKFxcXFx3KykpJ1xuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICctPidcbiAgICB9LFxuICAgIHsgLy8gcmVnZXhwIGNvbnRhaW5lclxuICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnKVxcXFxzKicsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmVnaW46ICcvJywgZW5kOiAnL1thLXpdKidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAnJXJcXFxcWycsIGVuZDogJ1xcXFxdW2Etel0qJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFTElYSVJfREVGQVVMVF9DT05UQUlOUztcblxuICByZXR1cm4ge1xuICAgIGxleGVtZXM6IEVMSVhJUl9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogRUxJWElSX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBFTElYSVJfREVGQVVMVF9DT05UQUlOU1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlQgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAney0nLFxuICAgICAgICAnLX0nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdXG4gIH07XG5cbiAgdmFyIENPTlNUUlVDVE9SID0ge1xuICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgIGJlZ2luOiAnXFxcXGJbQS1aXVtcXFxcd1xcJ10qJywgLy8gVE9ETzogb3RoZXIgY29uc3RydWN0b3JzIChidWlsdC1pbiwgaW5maXgpLlxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBMSVNUID0ge1xuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgaWxsZWdhbDogJ1wiJyxcbiAgICBjb250YWluczogW1xuICAgICAge2NsYXNzTmFtZTogJ3R5cGUnLCBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHddKihcXFxcKChcXFxcLlxcXFwufCx8XFxcXHcrKVxcXFwpKT8nfSxcbiAgICAgIENPTU1FTlRcbiAgICBdXG4gIH07XG5cbiAgdmFyIFJFQ09SRCA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICBjb250YWluczogTElTVC5jb250YWluc1xuICB9O1xuXG4gIHZhciBDSEFSQUNURVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJ1xcXFxcXFxcPy4nLCBlbmQ6ICdcXCcnLFxuICAgIGlsbGVnYWw6ICcuJ1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6XG4gICAgICAnbGV0IGluIGlmIHRoZW4gZWxzZSBjYXNlIG9mIHdoZXJlIG1vZHVsZSBpbXBvcnQgZXhwb3NpbmcgJyArXG4gICAgICAndHlwZSBhbGlhcyBhcyBpbmZpeCBpbmZpeGwgaW5maXhyIHBvcnQgZWZmZWN0IGNvbW1hbmQgc3Vic2NyaXB0aW9uJyxcbiAgICBjb250YWluczogW1xuXG4gICAgICAvLyBUb3AtbGV2ZWwgY29uc3RydWN0aW9ucy5cblxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAncG9ydCBlZmZlY3QgbW9kdWxlJywgZW5kOiAnZXhwb3NpbmcnLFxuICAgICAgICBrZXl3b3JkczogJ3BvcnQgZWZmZWN0IG1vZHVsZSB3aGVyZSBjb21tYW5kIHN1YnNjcmlwdGlvbiBleHBvc2luZycsXG4gICAgICAgIGNvbnRhaW5zOiBbTElTVCwgQ09NTUVOVF0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcV1xcXFwufDsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ2ltcG9ydCcsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ2ltcG9ydCBhcyBleHBvc2luZycsXG4gICAgICAgIGNvbnRhaW5zOiBbTElTVCwgQ09NTUVOVF0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcV1xcXFwufDsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3R5cGUnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICd0eXBlIGFsaWFzJyxcbiAgICAgICAgY29udGFpbnM6IFtDT05TVFJVQ1RPUiwgTElTVCwgUkVDT1JELCBDT01NRU5UXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2luZml4IGluZml4bCBpbmZpeHInLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTlVNQkVSX01PREUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3BvcnQnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdwb3J0JyxcbiAgICAgICAgY29udGFpbnM6IFtDT01NRU5UXVxuICAgICAgfSxcblxuICAgICAgLy8gTGl0ZXJhbHMgYW5kIG5hbWVzLlxuXG4gICAgICBDSEFSQUNURVIsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgQ09OU1RSVUNUT1IsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdeW19hLXpdW1xcXFx3XFwnXSonfSksXG4gICAgICBDT01NRU5ULFxuXG4gICAgICB7YmVnaW46ICctPnw8LSd9IC8vIE5vIG1hcmt1cCwgcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdLFxuICAgIGlsbGVnYWw6IC87L1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFJVQllfTUVUSE9EX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dP3xbLSt+XVxcXFxAfDw8fD4+fD1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfmB8XXxcXFxcW1xcXFxdPT8nO1xuICB2YXIgUlVCWV9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FuZCB0aGVuIGRlZmluZWQgbW9kdWxlIGluIHJldHVybiByZWRvIGlmIEJFR0lOIHJldHJ5IGVuZCBmb3Igc2VsZiB3aGVuICcgK1xuICAgICAgJ25leHQgdW50aWwgZG8gYmVnaW4gdW5sZXNzIEVORCByZXNjdWUgZWxzZSBicmVhayB1bmRlZiBub3Qgc3VwZXIgY2xhc3MgY2FzZSAnICtcbiAgICAgICdyZXF1aXJlIHlpZWxkIGFsaWFzIHdoaWxlIGVuc3VyZSBlbHNpZiBvciBpbmNsdWRlIGF0dHJfcmVhZGVyIGF0dHJfd3JpdGVyIGF0dHJfYWNjZXNzb3InLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBuaWwnXG4gIH07XG4gIHZhciBZQVJET0NUQUcgPSB7XG4gICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICBiZWdpbjogJ0BbQS1aYS16XSsnXG4gIH07XG4gIHZhciBJUkJfT0JKRUNUID0ge1xuICAgIGJlZ2luOiAnIzwnLCBlbmQ6ICc+J1xuICB9O1xuICB2YXIgQ09NTUVOVF9NT0RFUyA9IFtcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAnIycsXG4gICAgICAnJCcsXG4gICAgICB7XG4gICAgICAgIGNvbnRhaW5zOiBbWUFSRE9DVEFHXVxuICAgICAgfVxuICAgICksXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJ15cXFxcPWJlZ2luJyxcbiAgICAgICdeXFxcXD1lbmQnLFxuICAgICAge1xuICAgICAgICBjb250YWluczogW1lBUkRPQ1RBR10sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVCgnXl9fRU5EX18nLCAnXFxcXG4kJylcbiAgXTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJyNcXFxceycsIGVuZDogJ30nLFxuICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAge2JlZ2luOiAvYC8sIGVuZDogL2AvfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdP1xcXFwoJywgZW5kOiAnXFxcXCknfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdP1xcXFxbJywgZW5kOiAnXFxcXF0nfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdP3snLCBlbmQ6ICd9J30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT88JywgZW5kOiAnPid9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/LycsIGVuZDogJy8nfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdPyUnLCBlbmQ6ICclJ30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT8tJywgZW5kOiAnLSd9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/XFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgICAge1xuICAgICAgICAvLyBcXEIgaW4gdGhlIGJlZ2lubmluZyBzdXBwcmVzc2VzIHJlY29nbml0aW9uIG9mID8tc2VxdWVuY2VzIHdoZXJlID9cbiAgICAgICAgLy8gaXMgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGEgcHJlY2VkaW5nIGlkZW50aWZpZXIsIGFzIGluOiBgZnVuYz80YFxuICAgICAgICBiZWdpbjogL1xcQlxcPyhcXFxcXFxkezEsM318XFxcXHhbQS1GYS1mMC05XXsxLDJ9fFxcXFx1W0EtRmEtZjAtOV17NH18XFxcXD9cXFMpXFxiL1xuICAgICAgfSxcbiAgICAgIHsgLy8gaGVyZWRvY3NcbiAgICAgICAgYmVnaW46IC88PFstfl0/Jz8oXFx3KykoPzoufFxcbikqP1xcblxccypcXDFcXGIvLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAvPDxbLX5dPyc/LyB9LFxuICAgICAgICAgIHsgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgICAgIGVuZFNhbWVBc0JlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLCBlbmRzUGFyZW50OiB0cnVlLFxuICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTXG4gIH07XG5cbiAgdmFyIFJVQllfREVGQVVMVF9DT05UQUlOUyA9IFtcbiAgICBTVFJJTkcsXG4gICAgSVJCX09CSkVDVCxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgbW9kdWxlJywgZW5kOiAnJHw7JyxcbiAgICAgIGlsbGVnYWw6IC89LyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJ1tBLVphLXpfXVxcXFx3Kig6OlxcXFx3KykqKFxcXFw/fFxcXFwhKT8nfSksXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJzxcXFxccyonLFxuICAgICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgYmVnaW46ICcoJyArIGhsanMuSURFTlRfUkUgKyAnOjopPycgKyBobGpzLklERU5UX1JFXG4gICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUylcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWYnLCBlbmQ6ICckfDsnLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBSVUJZX01FVEhPRF9SRX0pLFxuICAgICAgICBQQVJBTVNcbiAgICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBzd2FsbG93IG5hbWVzcGFjZSBxdWFsaWZpZXJzIGJlZm9yZSBzeW1ib2xzXG4gICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OidcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJyhcXFxcIXxcXFxcPyk/OicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogJzooPyFcXFxccyknLFxuICAgICAgY29udGFpbnM6IFtTVFJJTkcsIHtiZWdpbjogUlVCWV9NRVRIT0RfUkV9XSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMFswLTdfXSspfChcXFxcYjB4WzAtOWEtZkEtRl9dKyl8KFxcXFxiWzEtOV1bMC05X10qKFxcXFwuWzAtOV9dKyk/KXxbMF9dXFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJyhcXFxcJFxcXFxXKXwoKFxcXFwkfFxcXFxAXFxcXEA/KShcXFxcdyspKScgLy8gdmFyaWFibGVzXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgYmVnaW46IC9cXHwvLCBlbmQ6IC9cXHwvLFxuICAgICAga2V5d29yZHM6IFJVQllfS0VZV09SRFNcbiAgICB9LFxuICAgIHsgLy8gcmVnZXhwIGNvbnRhaW5lclxuICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfHVubGVzcylcXFxccyonLFxuICAgICAga2V5d29yZHM6ICd1bmxlc3MnLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgSVJCX09CSkVDVCxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge2JlZ2luOiAnLycsIGVuZDogJy9bYS16XSonfSxcbiAgICAgICAgICAgIHtiZWdpbjogJyVyeycsIGVuZDogJ31bYS16XSonfSxcbiAgICAgICAgICAgIHtiZWdpbjogJyVyXFxcXCgnLCBlbmQ6ICdcXFxcKVthLXpdKid9LFxuICAgICAgICAgICAge2JlZ2luOiAnJXIhJywgZW5kOiAnIVthLXpdKid9LFxuICAgICAgICAgICAge2JlZ2luOiAnJXJcXFxcWycsIGVuZDogJ1xcXFxdW2Etel0qJ31cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICBdLmNvbmNhdChDT01NRU5UX01PREVTKTtcblxuICBTVUJTVC5jb250YWlucyA9IFJVQllfREVGQVVMVF9DT05UQUlOUztcbiAgUEFSQU1TLmNvbnRhaW5zID0gUlVCWV9ERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHZhciBTSU1QTEVfUFJPTVBUID0gXCJbPj9dPlwiO1xuICB2YXIgREVGQVVMVF9QUk9NUFQgPSBcIltcXFxcdyNdK1xcXFwoXFxcXHcrXFxcXCk6XFxcXGQrOlxcXFxkKz5cIjtcbiAgdmFyIFJWTV9QUk9NUFQgPSBcIihcXFxcdystKT9cXFxcZCtcXFxcLlxcXFxkK1xcXFwuXFxcXGQocFxcXFxkKyk/W14+XSs+XCI7XG5cbiAgdmFyIElSQl9ERUZBVUxUID0gW1xuICAgIHtcbiAgICAgIGJlZ2luOiAvXlxccyo9Pi8sXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgZW5kOiAnJCcsIGNvbnRhaW5zOiBSVUJZX0RFRkFVTFRfQ09OVEFJTlNcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgYmVnaW46ICdeKCcrU0lNUExFX1BST01QVCtcInxcIitERUZBVUxUX1BST01QVCsnfCcrUlZNX1BST01QVCsnKScsXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgZW5kOiAnJCcsIGNvbnRhaW5zOiBSVUJZX0RFRkFVTFRfQ09OVEFJTlNcbiAgICAgIH1cbiAgICB9XG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3JiJywgJ2dlbXNwZWMnLCAncG9kc3BlYycsICd0aG9yJywgJ2lyYiddLFxuICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBDT01NRU5UX01PREVTLmNvbmNhdChJUkJfREVGQVVMVCkuY29uY2F0KFJVQllfREVGQVVMVF9DT05UQUlOUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJzwlIycsICclPicpLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzwlWyU9LV0/JywgZW5kOiAnWyUtXT8lPicsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAncnVieScsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnc3Bhd24gc3Bhd25fbGluayBzZWxmJyxcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhZnRlciBhbmQgYW5kYWxzb3wxMCBiYW5kIGJlZ2luIGJub3QgYm9yIGJzbCBic3IgYnhvciBjYXNlIGNhdGNoIGNvbmQgZGl2IGVuZCBmdW4gaWYgJyArXG4gICAgICAgICdsZXQgbm90IG9mIG9yIG9yZWxzZXwxMCBxdWVyeSByZWNlaXZlIHJlbSB0cnkgd2hlbiB4b3InXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdeWzAtOV0rPiAnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCclJywgJyQnKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcZCsjW2EtZkEtRjAtOV0rfFxcXFxkKyhcXFxcLlxcXFxkKyk/KFtlRV1bLStdP1xcXFxkKyk/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXD8oOjopPyhbQS1aXVxcXFx3Kig6Oik/KSsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJy0+J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdvaydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnISdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKFxcXFxiW2EtelxcJ11bYS16QS1aMC05X1xcJ10qOlthLXpcXCddW2EtekEtWjAtOV9cXCddKil8KFxcXFxiW2EtelxcJ11bYS16QS1aMC05X1xcJ10qKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbQS1aXVthLXpBLVowLTlfXFwnXSonLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQkFTSUNfQVRPTV9SRSA9ICdbYS16XFwnXVthLXpBLVowLTlfXFwnXSonO1xuICB2YXIgRlVOQ1RJT05fTkFNRV9SRSA9ICcoJyArIEJBU0lDX0FUT01fUkUgKyAnOicgKyBCQVNJQ19BVE9NX1JFICsgJ3wnICsgQkFTSUNfQVRPTV9SRSArICcpJztcbiAgdmFyIEVSTEFOR19SRVNFUlZFRCA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FmdGVyIGFuZCBhbmRhbHNvfDEwIGJhbmQgYmVnaW4gYm5vdCBib3IgYnNsIGJ6ciBieG9yIGNhc2UgY2F0Y2ggY29uZCBkaXYgZW5kIGZ1biBpZiAnICtcbiAgICAgICdsZXQgbm90IG9mIG9yZWxzZXwxMCBxdWVyeSByZWNlaXZlIHJlbSB0cnkgd2hlbiB4b3InLFxuICAgIGxpdGVyYWw6XG4gICAgICAnZmFsc2UgdHJ1ZSdcbiAgfTtcblxuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVCgnJScsICckJyk7XG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJ1xcXFxiKFxcXFxkKyNbYS1mQS1GMC05XSt8XFxcXGQrKFxcXFwuXFxcXGQrKT8oW2VFXVstK10/XFxcXGQrKT8pJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE5BTUVEX0ZVTiA9IHtcbiAgICBiZWdpbjogJ2Z1blxcXFxzKycgKyBCQVNJQ19BVE9NX1JFICsgJy9cXFxcZCsnXG4gIH07XG4gIHZhciBGVU5DVElPTl9DQUxMID0ge1xuICAgIGJlZ2luOiBGVU5DVElPTl9OQU1FX1JFICsgJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogRlVOQ1RJT05fTkFNRV9SRSwgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgLy8gXCJjb250YWluc1wiIGRlZmluZWQgbGF0ZXJcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBUVVBMRSA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICByZWxldmFuY2U6IDBcbiAgICAvLyBcImNvbnRhaW5zXCIgZGVmaW5lZCBsYXRlclxuICB9O1xuICB2YXIgVkFSMSA9IHtcbiAgICBiZWdpbjogJ1xcXFxiXyhbQS1aXVtBLVphLXowLTlfXSopPycsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBWQVIyID0ge1xuICAgIGJlZ2luOiAnW0EtWl1bYS16QS1aMC05X10qJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFJFQ09SRF9BQ0NFU1MgPSB7XG4gICAgYmVnaW46ICcjJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcjJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIC8vIFwiY29udGFpbnNcIiBkZWZpbmVkIGxhdGVyXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBCTE9DS19TVEFURU1FTlRTID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICdmdW4gcmVjZWl2ZSBpZiB0cnkgY2FzZScsIGVuZDogJ2VuZCcsXG4gICAga2V5d29yZHM6IEVSTEFOR19SRVNFUlZFRFxuICB9O1xuICBCTE9DS19TVEFURU1FTlRTLmNvbnRhaW5zID0gW1xuICAgIENPTU1FTlQsXG4gICAgTkFNRURfRlVOLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICcnfSksXG4gICAgQkxPQ0tfU1RBVEVNRU5UUyxcbiAgICBGVU5DVElPTl9DQUxMLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgTlVNQkVSLFxuICAgIFRVUExFLFxuICAgIFZBUjEsIFZBUjIsXG4gICAgUkVDT1JEX0FDQ0VTU1xuICBdO1xuXG4gIHZhciBCQVNJQ19NT0RFUyA9IFtcbiAgICBDT01NRU5ULFxuICAgIE5BTUVEX0ZVTixcbiAgICBCTE9DS19TVEFURU1FTlRTLFxuICAgIEZVTkNUSU9OX0NBTEwsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBOVU1CRVIsXG4gICAgVFVQTEUsXG4gICAgVkFSMSwgVkFSMixcbiAgICBSRUNPUkRfQUNDRVNTXG4gIF07XG4gIEZVTkNUSU9OX0NBTEwuY29udGFpbnNbMV0uY29udGFpbnMgPSBCQVNJQ19NT0RFUztcbiAgVFVQTEUuY29udGFpbnMgPSBCQVNJQ19NT0RFUztcbiAgUkVDT1JEX0FDQ0VTUy5jb250YWluc1sxXS5jb250YWlucyA9IEJBU0lDX01PREVTO1xuXG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGNvbnRhaW5zOiBCQVNJQ19NT0RFU1xuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZXJsJ10sXG4gICAga2V5d29yZHM6IEVSTEFOR19SRVNFUlZFRCxcbiAgICBpbGxlZ2FsOiAnKDwvfFxcXFwqPXxcXFxcKz18LT18L1xcXFwqfFxcXFwqL3xcXFxcKFxcXFwqfFxcXFwqXFxcXCkpJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnXicgKyBCQVNJQ19BVE9NX1JFICsgJ1xcXFxzKlxcXFwoJywgZW5kOiAnLT4nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFwofCN8Ly98L1xcXFwqfFxcXFxcXFxcfDp8OycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgUEFSQU1TLFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogQkFTSUNfQVRPTV9SRX0pXG4gICAgICAgIF0sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJzt8XFxcXC4nLFxuICAgICAgICAgIGtleXdvcmRzOiBFUkxBTkdfUkVTRVJWRUQsXG4gICAgICAgICAgY29udGFpbnM6IEJBU0lDX01PREVTXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBDT01NRU5ULFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ14tJywgZW5kOiAnXFxcXC4nLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBsZXhlbWVzOiAnLScgKyBobGpzLklERU5UX1JFLFxuICAgICAgICBrZXl3b3JkczpcbiAgICAgICAgICAnLW1vZHVsZSAtcmVjb3JkIC11bmRlZiAtZXhwb3J0IC1pZmRlZiAtaWZuZGVmIC1hdXRob3IgLWNvcHlyaWdodCAtZG9jIC12c24gJyArXG4gICAgICAgICAgJy1pbXBvcnQgLWluY2x1ZGUgLWluY2x1ZGVfbGliIC1jb21waWxlIC1kZWZpbmUgLWVsc2UgLWVuZGlmIC1maWxlIC1iZWhhdmlvdXIgJyArXG4gICAgICAgICAgJy1iZWhhdmlvciAtc3BlYycsXG4gICAgICAgIGNvbnRhaW5zOiBbUEFSQU1TXVxuICAgICAgfSxcbiAgICAgIE5VTUJFUixcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBSRUNPUkRfQUNDRVNTLFxuICAgICAgVkFSMSwgVkFSMixcbiAgICAgIFRVUExFLFxuICAgICAge2JlZ2luOiAvXFwuJC99IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3hsc3gnLCAneGxzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiAvW2EtekEtWl1bXFx3XFwuXSovLFxuICAgIC8vIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbXBvcnRlZCBmcm9tIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDUxMzA0MjcxMC9odHRwczovL3N1cHBvcnQub2ZmaWNlLmNvbS9lbi11cy9hcnRpY2xlL0V4Y2VsLWZ1bmN0aW9ucy1hbHBoYWJldGljYWwtYjM5NDQ1NzItMjU1ZC00ZWZiLWJiOTYtYzZkOTAwMzNlMTg4XG4gICAga2V5d29yZHM6IHtcbiAgICAgICAgYnVpbHRfaW46ICdBQlMgQUNDUklOVCBBQ0NSSU5UTSBBQ09TIEFDT1NIIEFDT1QgQUNPVEggQUdHUkVHQVRFIEFERFJFU1MgQU1PUkRFR1JDIEFNT1JMSU5DIEFORCBBUkFCSUMgQVJFQVMgQVNDIEFTSU4gQVNJTkggQVRBTiBBVEFOMiBBVEFOSCBBVkVERVYgQVZFUkFHRSBBVkVSQUdFQSBBVkVSQUdFSUYgQVZFUkFHRUlGUyBCQUhUVEVYVCBCQVNFIEJFU1NFTEkgQkVTU0VMSiBCRVNTRUxLIEJFU1NFTFkgQkVUQURJU1QgQkVUQS5ESVNUIEJFVEFJTlYgQkVUQS5JTlYgQklOMkRFQyBCSU4ySEVYIEJJTjJPQ1QgQklOT01ESVNUIEJJTk9NLkRJU1QgQklOT00uRElTVC5SQU5HRSBCSU5PTS5JTlYgQklUQU5EIEJJVExTSElGVCBCSVRPUiBCSVRSU0hJRlQgQklUWE9SIENBTEwgQ0VJTElORyBDRUlMSU5HLk1BVEggQ0VJTElORy5QUkVDSVNFIENFTEwgQ0hBUiBDSElESVNUIENISUlOViBDSElURVNUIENISVNRLkRJU1QgQ0hJU1EuRElTVC5SVCBDSElTUS5JTlYgQ0hJU1EuSU5WLlJUIENISVNRLlRFU1QgQ0hPT1NFIENMRUFOIENPREUgQ09MVU1OIENPTFVNTlMgQ09NQklOIENPTUJJTkEgQ09NUExFWCBDT05DQVQgQ09OQ0FURU5BVEUgQ09ORklERU5DRSBDT05GSURFTkNFLk5PUk0gQ09ORklERU5DRS5UIENPTlZFUlQgQ09SUkVMIENPUyBDT1NIIENPVCBDT1RIIENPVU5UIENPVU5UQSBDT1VOVEJMQU5LIENPVU5USUYgQ09VTlRJRlMgQ09VUERBWUJTIENPVVBEQVlTIENPVVBEQVlTTkMgQ09VUE5DRCBDT1VQTlVNIENPVVBQQ0QgQ09WQVIgQ09WQVJJQU5DRS5QIENPVkFSSUFOQ0UuUyBDUklUQklOT00gQ1NDIENTQ0ggQ1VCRUtQSU1FTUJFUiBDVUJFTUVNQkVSIENVQkVNRU1CRVJQUk9QRVJUWSBDVUJFUkFOS0VETUVNQkVSIENVQkVTRVQgQ1VCRVNFVENPVU5UIENVQkVWQUxVRSBDVU1JUE1UIENVTVBSSU5DIERBVEUgREFURURJRiBEQVRFVkFMVUUgREFWRVJBR0UgREFZIERBWVMgREFZUzM2MCBEQiBEQkNTIERDT1VOVCBEQ09VTlRBIEREQiBERUMyQklOIERFQzJIRVggREVDMk9DVCBERUNJTUFMIERFR1JFRVMgREVMVEEgREVWU1EgREdFVCBESVNDIERNQVggRE1JTiBET0xMQVIgRE9MTEFSREUgRE9MTEFSRlIgRFBST0RVQ1QgRFNUREVWIERTVERFVlAgRFNVTSBEVVJBVElPTiBEVkFSIERWQVJQIEVEQVRFIEVGRkVDVCBFTkNPREVVUkwgRU9NT05USCBFUkYgRVJGLlBSRUNJU0UgRVJGQyBFUkZDLlBSRUNJU0UgRVJST1IuVFlQRSBFVVJPQ09OVkVSVCBFVkVOIEVYQUNUIEVYUCBFWFBPTi5ESVNUIEVYUE9ORElTVCBGQUNUIEZBQ1RET1VCTEUgRkFMU0V8MCBGLkRJU1QgRkRJU1QgRi5ESVNULlJUIEZJTFRFUlhNTCBGSU5EIEZJTkRCIEYuSU5WIEYuSU5WLlJUIEZJTlYgRklTSEVSIEZJU0hFUklOViBGSVhFRCBGTE9PUiBGTE9PUi5NQVRIIEZMT09SLlBSRUNJU0UgRk9SRUNBU1QgRk9SRUNBU1QuRVRTIEZPUkVDQVNULkVUUy5DT05GSU5UIEZPUkVDQVNULkVUUy5TRUFTT05BTElUWSBGT1JFQ0FTVC5FVFMuU1RBVCBGT1JFQ0FTVC5MSU5FQVIgRk9STVVMQVRFWFQgRlJFUVVFTkNZIEYuVEVTVCBGVEVTVCBGViBGVlNDSEVEVUxFIEdBTU1BIEdBTU1BLkRJU1QgR0FNTUFESVNUIEdBTU1BLklOViBHQU1NQUlOViBHQU1NQUxOIEdBTU1BTE4uUFJFQ0lTRSBHQVVTUyBHQ0QgR0VPTUVBTiBHRVNURVAgR0VUUElWT1REQVRBIEdST1dUSCBIQVJNRUFOIEhFWDJCSU4gSEVYMkRFQyBIRVgyT0NUIEhMT09LVVAgSE9VUiBIWVBFUkxJTksgSFlQR0VPTS5ESVNUIEhZUEdFT01ESVNUIElGIElGRVJST1IgSUZOQSBJRlMgSU1BQlMgSU1BR0lOQVJZIElNQVJHVU1FTlQgSU1DT05KVUdBVEUgSU1DT1MgSU1DT1NIIElNQ09UIElNQ1NDIElNQ1NDSCBJTURJViBJTUVYUCBJTUxOIElNTE9HMTAgSU1MT0cyIElNUE9XRVIgSU1QUk9EVUNUIElNUkVBTCBJTVNFQyBJTVNFQ0ggSU1TSU4gSU1TSU5IIElNU1FSVCBJTVNVQiBJTVNVTSBJTVRBTiBJTkRFWCBJTkRJUkVDVCBJTkZPIElOVCBJTlRFUkNFUFQgSU5UUkFURSBJUE1UIElSUiBJU0JMQU5LIElTRVJSIElTRVJST1IgSVNFVkVOIElTRk9STVVMQSBJU0xPR0lDQUwgSVNOQSBJU05PTlRFWFQgSVNOVU1CRVIgSVNPREQgSVNSRUYgSVNURVhUIElTTy5DRUlMSU5HIElTT1dFRUtOVU0gSVNQTVQgSklTIEtVUlQgTEFSR0UgTENNIExFRlQgTEVGVEIgTEVOIExFTkIgTElORVNUIExOIExPRyBMT0cxMCBMT0dFU1QgTE9HSU5WIExPR05PUk0uRElTVCBMT0dOT1JNRElTVCBMT0dOT1JNLklOViBMT09LVVAgTE9XRVIgTUFUQ0ggTUFYIE1BWEEgTUFYSUZTIE1ERVRFUk0gTURVUkFUSU9OIE1FRElBTiBNSUQgTUlEQnMgTUlOIE1JTklGUyBNSU5BIE1JTlVURSBNSU5WRVJTRSBNSVJSIE1NVUxUIE1PRCBNT0RFIE1PREUuTVVMVCBNT0RFLlNOR0wgTU9OVEggTVJPVU5EIE1VTFRJTk9NSUFMIE1VTklUIE4gTkEgTkVHQklOT00uRElTVCBORUdCSU5PTURJU1QgTkVUV09SS0RBWVMgTkVUV09SS0RBWVMuSU5UTCBOT01JTkFMIE5PUk0uRElTVCBOT1JNRElTVCBOT1JNSU5WIE5PUk0uSU5WIE5PUk0uUy5ESVNUIE5PUk1TRElTVCBOT1JNLlMuSU5WIE5PUk1TSU5WIE5PVCBOT1cgTlBFUiBOUFYgTlVNQkVSVkFMVUUgT0NUMkJJTiBPQ1QyREVDIE9DVDJIRVggT0REIE9EREZQUklDRSBPRERGWUlFTEQgT0RETFBSSUNFIE9ERExZSUVMRCBPRkZTRVQgT1IgUERVUkFUSU9OIFBFQVJTT04gUEVSQ0VOVElMRS5FWEMgUEVSQ0VOVElMRS5JTkMgUEVSQ0VOVElMRSBQRVJDRU5UUkFOSy5FWEMgUEVSQ0VOVFJBTksuSU5DIFBFUkNFTlRSQU5LIFBFUk1VVCBQRVJNVVRBVElPTkEgUEhJIFBIT05FVElDIFBJIFBNVCBQT0lTU09OLkRJU1QgUE9JU1NPTiBQT1dFUiBQUE1UIFBSSUNFIFBSSUNFRElTQyBQUklDRU1BVCBQUk9CIFBST0RVQ1QgUFJPUEVSIFBWIFFVQVJUSUxFIFFVQVJUSUxFLkVYQyBRVUFSVElMRS5JTkMgUVVPVElFTlQgUkFESUFOUyBSQU5EIFJBTkRCRVRXRUVOIFJBTksuQVZHIFJBTksuRVEgUkFOSyBSQVRFIFJFQ0VJVkVEIFJFR0lTVEVSLklEIFJFUExBQ0UgUkVQTEFDRUIgUkVQVCBSSUdIVCBSSUdIVEIgUk9NQU4gUk9VTkQgUk9VTkRET1dOIFJPVU5EVVAgUk9XIFJPV1MgUlJJIFJTUSBSVEQgU0VBUkNIIFNFQVJDSEIgU0VDIFNFQ0ggU0VDT05EIFNFUklFU1NVTSBTSEVFVCBTSEVFVFMgU0lHTiBTSU4gU0lOSCBTS0VXIFNLRVcuUCBTTE4gU0xPUEUgU01BTEwgU1FMLlJFUVVFU1QgU1FSVCBTUVJUUEkgU1RBTkRBUkRJWkUgU1RERVYgU1RERVYuUCBTVERFVi5TIFNUREVWQSBTVERFVlAgU1RERVZQQSBTVEVZWCBTVUJTVElUVVRFIFNVQlRPVEFMIFNVTSBTVU1JRiBTVU1JRlMgU1VNUFJPRFVDVCBTVU1TUSBTVU1YMk1ZMiBTVU1YMlBZMiBTVU1YTVkyIFNXSVRDSCBTWUQgVCBUQU4gVEFOSCBUQklMTEVRIFRCSUxMUFJJQ0UgVEJJTExZSUVMRCBULkRJU1QgVC5ESVNULjJUIFQuRElTVC5SVCBURElTVCBURVhUIFRFWFRKT0lOIFRJTUUgVElNRVZBTFVFIFQuSU5WIFQuSU5WLjJUIFRJTlYgVE9EQVkgVFJBTlNQT1NFIFRSRU5EIFRSSU0gVFJJTU1FQU4gVFJVRXwwIFRSVU5DIFQuVEVTVCBUVEVTVCBUWVBFIFVOSUNIQVIgVU5JQ09ERSBVUFBFUiBWQUxVRSBWQVIgVkFSLlAgVkFSLlMgVkFSQSBWQVJQIFZBUlBBIFZEQiBWTE9PS1VQIFdFQlNFUlZJQ0UgV0VFS0RBWSBXRUVLTlVNIFdFSUJVTEwgV0VJQlVMTC5ESVNUIFdPUktEQVkgV09SS0RBWS5JTlRMIFhJUlIgWE5QViBYT1IgWUVBUiBZRUFSRlJBQyBZSUVMRCBZSUVMRERJU0MgWUlFTERNQVQgWi5URVNUIFpURVNUJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgLyogbWF0Y2hlcyBhIGJlZ2lubmluZyBlcXVhbCBzaWduIGZvdW5kIGluIEV4Y2VsIGZvcm11bGEgZXhhbXBsZXMgKi9cbiAgICAgICAgYmVnaW46IC9ePS8sXG4gICAgICAgIGVuZDogL1tePV0vLCByZXR1cm5FbmQ6IHRydWUsIGlsbGVnYWw6IC89LywgLyogb25seSBhbGxvdyBzaW5nbGUgZXF1YWwgc2lnbiBhdCBmcm9udCBvZiBsaW5lICovXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvKiB0ZWNobmljYWxseSwgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiAyIGxldHRlcnMgaW4gY29sdW1uIG5hbWVzLCBidXQgdGhpcyBwcmV2ZW50cyBjb25mbGljdCB3aXRoIHNvbWUga2V5d29yZHMgKi9cbiAgICAgIHtcbiAgICAgICAgLyogbWF0Y2hlcyBhIHJlZmVyZW5jZSB0byBhIHNpbmdsZSBjZWxsICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvXFxiW0EtWl17MSwyfVxcZCtcXGIvLFxuICAgICAgICBlbmQ6IC9bXlxcZF0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIG1hdGNoZXMgYSByZWZlcmVuY2UgdG8gYSByYW5nZSBvZiBjZWxscyAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogL1tBLVpdezAsMn1cXGQqOltBLVpdezAsMn1cXGQqLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuTlVNQkVSX1JFICsgJyglKT8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvKiBFeGNlbCBmb3JtdWxhIGNvbW1lbnRzIGFyZSBkb25lIGJ5IHB1dHRpbmcgdGhlIGNvbW1lbnQgaW4gYSBmdW5jdGlvbiBjYWxsIHRvIE4oKSAqL1xuICAgICAgaGxqcy5DT01NRU5UKC9cXGJOXFwoLywvXFwpLyxcbiAgICAgIHtcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuL1xuICAgICAgfSlcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAge1xuICAgICAgYmVnaW46IC9bXlxcdTI0MDFcXHUwMDAxXSsvLFxuICAgICAgZW5kOiAvW1xcdTI0MDFcXHUwMDAxXS8sXG4gICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICByZXR1cm5FbmQ6IGZhbHNlLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oW15cXHUyNDAxXFx1MDAwMT1dKykvLFxuICAgICAgICBlbmQ6IC89KFteXFx1MjQwMVxcdTAwMDE9XSspLyxcbiAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZXR1cm5CZWdpbjogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLz0vLFxuICAgICAgICBlbmQ6IC8oW1xcdTI0MDFcXHUwMDAxXSkvLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZydcbiAgICAgIH1dXG4gICAgfV0sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG5cbiAgICB2YXIgQ0hBUiA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC8nKC58XFxcXFt4WHVVXVthLXpBLVowLTldKyknL1xuICAgIH07XG5cbiAgICB2YXIgU1RSSU5HID0ge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIidcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH07XG5cbiAgICB2YXIgTkFNRSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICBiZWdpbjogL1teMC05XFxuXFx0IFwiJygpLC5ge31cXFtcXF06O11bXlxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjtdK3xbXjAtOVxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjs9XS9cbiAgICB9O1xuXG4gICAgdmFyIE1FVEhPRCA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZGVmJyxcbiAgICAgICAgZW5kOiAvWzo9e1xcWyhcXG47XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbTkFNRV1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlJyxcbiAgICAgICAgICAgIGtleXdvcmQ6ICdjYXNlIGNsYXNzIGRlZiBlbHNlIGVudW0gaWYgaW1wbCBpbXBvcnQgaW4gbGF0IHJlbCBpbmRleCBsZXQgbWF0Y2ggbmFtZXNwYWNlIHN3aXRjaCB0eXBlIHlpZWxkIHdpdGgnXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgQ0hBUixcbiAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgIE1FVEhPRCxcbiAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICAgICBdXG4gICAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG5cbiAgdmFyIEZfS0VZV09SRFMgPSB7XG4gICAgbGl0ZXJhbDogJy5GYWxzZS4gLlRydWUuJyxcbiAgICBrZXl3b3JkOiAna2luZCBkbyB3aGlsZSBwcml2YXRlIGNhbGwgaW50cmluc2ljIHdoZXJlIGVsc2V3aGVyZSAnICtcbiAgICAgICd0eXBlIGVuZHR5cGUgZW5kbW9kdWxlIGVuZHNlbGVjdCBlbmRpbnRlcmZhY2UgZW5kIGVuZGRvIGVuZGlmIGlmIGZvcmFsbCBlbmRmb3JhbGwgb25seSBjb250YWlucyBkZWZhdWx0IHJldHVybiBzdG9wIHRoZW4gJyArXG4gICAgICAncHVibGljIHN1YnJvdXRpbmV8MTAgZnVuY3Rpb24gcHJvZ3JhbSAuYW5kLiAub3IuIC5ub3QuIC5sZS4gLmVxLiAuZ2UuIC5ndC4gLmx0LiAnICtcbiAgICAgICdnb3RvIHNhdmUgZWxzZSB1c2UgbW9kdWxlIHNlbGVjdCBjYXNlICcgK1xuICAgICAgJ2FjY2VzcyBibGFuayBkaXJlY3QgZXhpc3QgZmlsZSBmbXQgZm9ybSBmb3JtYXR0ZWQgaW9zdGF0IG5hbWUgbmFtZWQgbmV4dHJlYyBudW1iZXIgb3BlbmVkIHJlYyByZWNsIHNlcXVlbnRpYWwgc3RhdHVzIHVuZm9ybWF0dGVkIHVuaXQgJyArXG4gICAgICAnY29udGludWUgZm9ybWF0IHBhdXNlIGN5Y2xlIGV4aXQgJyArXG4gICAgICAnY19udWxsX2NoYXIgY19hbGVydCBjX2JhY2tzcGFjZSBjX2Zvcm1fZmVlZCBmbHVzaCB3YWl0IGRlY2ltYWwgcm91bmQgaW9tc2cgJyArXG4gICAgICAnc3luY2hyb25vdXMgbm9wYXNzIG5vbl9vdmVycmlkYWJsZSBwYXNzIHByb3RlY3RlZCB2b2xhdGlsZSBhYnN0cmFjdCBleHRlbmRzIGltcG9ydCAnICtcbiAgICAgICdub25faW50cmluc2ljIHZhbHVlIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvciBjbGFzcyBhc3NvY2lhdGUgYmluZCBlbnVtICcgK1xuICAgICAgJ2NfaW50IGNfc2hvcnQgY19sb25nIGNfbG9uZ19sb25nIGNfc2lnbmVkX2NoYXIgY19zaXplX3QgY19pbnQ4X3QgY19pbnQxNl90IGNfaW50MzJfdCBjX2ludDY0X3QgY19pbnRfbGVhc3Q4X3QgY19pbnRfbGVhc3QxNl90ICcgK1xuICAgICAgJ2NfaW50X2xlYXN0MzJfdCBjX2ludF9sZWFzdDY0X3QgY19pbnRfZmFzdDhfdCBjX2ludF9mYXN0MTZfdCBjX2ludF9mYXN0MzJfdCBjX2ludF9mYXN0NjRfdCBjX2ludG1heF90IENfaW50cHRyX3QgY19mbG9hdCBjX2RvdWJsZSAnICtcbiAgICAgICdjX2xvbmdfZG91YmxlIGNfZmxvYXRfY29tcGxleCBjX2RvdWJsZV9jb21wbGV4IGNfbG9uZ19kb3VibGVfY29tcGxleCBjX2Jvb2wgY19jaGFyIGNfbnVsbF9wdHIgY19udWxsX2Z1bnB0ciAnICtcbiAgICAgICdjX25ld19saW5lIGNfY2FycmlhZ2VfcmV0dXJuIGNfaG9yaXpvbnRhbF90YWIgY192ZXJ0aWNhbF90YWIgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyICcgK1xuICAgICAgJ2NfcHRyIGNfZnVucHRyIGlzb19mb3J0cmFuX2VudiBjaGFyYWN0ZXJfc3RvcmFnZV9zaXplIGVycm9yX3VuaXQgZmlsZV9zdG9yYWdlX3NpemUgaW5wdXRfdW5pdCBpb3N0YXRfZW5kIGlvc3RhdF9lb3IgJyArXG4gICAgICAnbnVtZXJpY19zdG9yYWdlX3NpemUgb3V0cHV0X3VuaXQgY19mX3Byb2Nwb2ludGVyIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgJyArXG4gICAgICAnaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgbmV3dW5pdCBjb250aWd1b3VzIHJlY3Vyc2l2ZSAnICtcbiAgICAgICdwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZSBlb3IgYWR2YW5jZSBubWwgaW50ZXJmYWNlIHByb2NlZHVyZSBuYW1lbGlzdCBpbmNsdWRlIHNlcXVlbmNlIGVsZW1lbnRhbCBwdXJlICcgK1xuICAgICAgJ2ludGVnZXIgcmVhbCBjaGFyYWN0ZXIgY29tcGxleCBsb2dpY2FsIGRpbWVuc2lvbiBhbGxvY2F0YWJsZXwxMCBwYXJhbWV0ZXIgJyArXG4gICAgICAnZXh0ZXJuYWwgaW1wbGljaXR8MTAgbm9uZSBkb3VibGUgcHJlY2lzaW9uIGFzc2lnbiBpbnRlbnQgb3B0aW9uYWwgcG9pbnRlciAnICtcbiAgICAgICd0YXJnZXQgaW4gb3V0IGNvbW1vbiBlcXVpdmFsZW5jZSBkYXRhJyxcbiAgICBidWlsdF9pbjogJ2Fsb2cgYWxvZzEwIGFtYXgwIGFtYXgxIGFtaW4wIGFtaW4xIGFtb2QgY2FicyBjY29zIGNleHAgY2xvZyBjc2luIGNzcXJ0IGRhYnMgZGFjb3MgZGFzaW4gZGF0YW4gZGF0YW4yIGRjb3MgZGNvc2ggZGRpbSBkZXhwIGRpbnQgJyArXG4gICAgICAnZGxvZyBkbG9nMTAgZG1heDEgZG1pbjEgZG1vZCBkbmludCBkc2lnbiBkc2luIGRzaW5oIGRzcXJ0IGR0YW4gZHRhbmggZmxvYXQgaWFicyBpZGltIGlkaW50IGlkbmludCBpZml4IGlzaWduIG1heDAgbWF4MSBtaW4wIG1pbjEgc25nbCAnICtcbiAgICAgICdhbGdhbWEgY2RhYnMgY2Rjb3MgY2RleHAgY2Rsb2cgY2RzaW4gY2RzcXJ0IGNxYWJzIGNxY29zIGNxZXhwIGNxbG9nIGNxc2luIGNxc3FydCBkY21wbHggZGNvbmpnIGRlcmYgZGVyZmMgZGZsb2F0IGRnYW1tYSBkaW1hZyBkbGdhbWEgJyArXG4gICAgICAnaXFpbnQgcWFicyBxYWNvcyBxYXNpbiBxYXRhbiBxYXRhbjIgcWNtcGx4IHFjb25qZyBxY29zIHFjb3NoIHFkaW0gcWVyZiBxZXJmYyBxZXhwIHFnYW1tYSBxaW1hZyBxbGdhbWEgcWxvZyBxbG9nMTAgcW1heDEgcW1pbjEgcW1vZCAnICtcbiAgICAgICdxbmludCBxc2lnbiBxc2luIHFzaW5oIHFzcXJ0IHF0YW4gcXRhbmggYWJzIGFjb3MgYWltYWcgYWludCBhbmludCBhc2luIGF0YW4gYXRhbjIgY2hhciBjbXBseCBjb25qZyBjb3MgY29zaCBleHAgaWNoYXIgaW5kZXggaW50IGxvZyAnICtcbiAgICAgICdsb2cxMCBtYXggbWluIG5pbnQgc2lnbiBzaW4gc2luaCBzcXJ0IHRhbiB0YW5oIHByaW50IHdyaXRlIGRpbSBsZ2UgbGd0IGxsZSBsbHQgbW9kIG51bGxpZnkgYWxsb2NhdGUgZGVhbGxvY2F0ZSAnICtcbiAgICAgICdhZGp1c3RsIGFkanVzdHIgYWxsIGFsbG9jYXRlZCBhbnkgYXNzb2NpYXRlZCBiaXRfc2l6ZSBidGVzdCBjZWlsaW5nIGNvdW50IGNzaGlmdCBkYXRlX2FuZF90aW1lIGRpZ2l0cyBkb3RfcHJvZHVjdCAnICtcbiAgICAgICdlb3NoaWZ0IGVwc2lsb24gZXhwb25lbnQgZmxvb3IgZnJhY3Rpb24gaHVnZSBpYW5kIGliY2xyIGliaXRzIGlic2V0IGllb3IgaW9yIGlzaGZ0IGlzaGZ0YyBsYm91bmQgbGVuX3RyaW0gbWF0bXVsICcgK1xuICAgICAgJ21heGV4cG9uZW50IG1heGxvYyBtYXh2YWwgbWVyZ2UgbWluZXhwb25lbnQgbWlubG9jIG1pbnZhbCBtb2R1bG8gbXZiaXRzIG5lYXJlc3QgcGFjayBwcmVzZW50IHByb2R1Y3QgJyArXG4gICAgICAncmFkaXggcmFuZG9tX251bWJlciByYW5kb21fc2VlZCByYW5nZSByZXBlYXQgcmVzaGFwZSBycnNwYWNpbmcgc2NhbGUgc2NhbiBzZWxlY3RlZF9pbnRfa2luZCBzZWxlY3RlZF9yZWFsX2tpbmQgJyArXG4gICAgICAnc2V0X2V4cG9uZW50IHNoYXBlIHNpemUgc3BhY2luZyBzcHJlYWQgc3VtIHN5c3RlbV9jbG9jayB0aW55IHRyYW5zcG9zZSB0cmltIHVib3VuZCB1bnBhY2sgdmVyaWZ5IGFjaGFyIGlhY2hhciB0cmFuc2ZlciAnICtcbiAgICAgICdkYmxlIGVudHJ5IGRwcm9kIGNwdV90aW1lIGNvbW1hbmRfYXJndW1lbnRfY291bnQgZ2V0X2NvbW1hbmQgZ2V0X2NvbW1hbmRfYXJndW1lbnQgZ2V0X2Vudmlyb25tZW50X3ZhcmlhYmxlIGlzX2lvc3RhdF9lbmQgJyArXG4gICAgICAnaWVlZV9hcml0aG1ldGljIGllZWVfc3VwcG9ydF91bmRlcmZsb3dfY29udHJvbCBpZWVlX2dldF91bmRlcmZsb3dfbW9kZSBpZWVlX3NldF91bmRlcmZsb3dfbW9kZSAnICtcbiAgICAgICdpc19pb3N0YXRfZW9yIG1vdmVfYWxsb2MgbmV3X2xpbmUgc2VsZWN0ZWRfY2hhcl9raW5kIHNhbWVfdHlwZV9hcyBleHRlbmRzX3R5cGVfb2YnICArXG4gICAgICAnYWNvc2ggYXNpbmggYXRhbmggYmVzc2VsX2owIGJlc3NlbF9qMSBiZXNzZWxfam4gYmVzc2VsX3kwIGJlc3NlbF95MSBiZXNzZWxfeW4gZXJmIGVyZmMgZXJmY19zY2FsZWQgZ2FtbWEgbG9nX2dhbW1hIGh5cG90IG5vcm0yICcgK1xuICAgICAgJ2F0b21pY19kZWZpbmUgYXRvbWljX3JlZiBleGVjdXRlX2NvbW1hbmRfbGluZSBsZWFkeiB0cmFpbHogc3RvcmFnZV9zaXplIG1lcmdlX2JpdHMgJyArXG4gICAgICAnYmdlIGJndCBibGUgYmx0IGRzaGlmdGwgZHNoaWZ0ciBmaW5kbG9jIGlhbGwgaWFueSBpcGFyaXR5IGltYWdlX2luZGV4IGxjb2JvdW5kIHVjb2JvdW5kIG1hc2tsIG1hc2tyICcgK1xuICAgICAgJ251bV9pbWFnZXMgcGFyaXR5IHBvcGNudCBwb3BwYXIgc2hpZnRhIHNoaWZ0bCBzaGlmdHIgdGhpc19pbWFnZSdcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsnZjkwJywgJ2Y5NSddLFxuICAgIGtleXdvcmRzOiBGX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnc3RyaW5nJywgcmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ3N0cmluZycsIHJlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdzdWJyb3V0aW5lIGZ1bmN0aW9uIHByb2dyYW0nLFxuICAgICAgICBpbGxlZ2FsOiAnWyR7PVxcXFxuXScsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsIFBBUkFNU11cbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJyEnLCAnJCcsIHtyZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoPz1cXFxcYnxcXFxcK3xcXFxcLXxcXFxcLikoPz1cXFxcLlxcXFxkfFxcXFxkKSg/OlxcXFxkKyk/KD86XFxcXC4/XFxcXGQqKSg/OltkZV1bKy1dP1xcXFxkKyk/XFxcXGJcXFxcLj8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVFlQRVBBUkFNID0ge1xuICAgIGJlZ2luOiAnPCcsIGVuZDogJz4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IC8nW2EtekEtWjAtOV9dKy99KVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZnMnXSxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhYnN0cmFjdCBhbmQgYXMgYXNzZXJ0IGJhc2UgYmVnaW4gY2xhc3MgZGVmYXVsdCBkZWxlZ2F0ZSBkbyBkb25lICcgK1xuICAgICAgJ2Rvd25jYXN0IGRvd250byBlbGlmIGVsc2UgZW5kIGV4Y2VwdGlvbiBleHRlcm4gZmFsc2UgZmluYWxseSBmb3IgJyArXG4gICAgICAnZnVuIGZ1bmN0aW9uIGdsb2JhbCBpZiBpbiBpbmhlcml0IGlubGluZSBpbnRlcmZhY2UgaW50ZXJuYWwgbGF6eSBsZXQgJyArXG4gICAgICAnbWF0Y2ggbWVtYmVyIG1vZHVsZSBtdXRhYmxlIG5hbWVzcGFjZSBuZXcgbnVsbCBvZiBvcGVuIG9yICcgK1xuICAgICAgJ292ZXJyaWRlIHByaXZhdGUgcHVibGljIHJlYyByZXR1cm4gc2lnIHN0YXRpYyBzdHJ1Y3QgdGhlbiB0byAnICtcbiAgICAgICd0cnVlIHRyeSB0eXBlIHVwY2FzdCB1c2UgdmFsIHZvaWQgd2hlbiB3aGlsZSB3aXRoIHlpZWxkJyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICAvLyBtb25hZCBidWlsZGVyIGtleXdvcmRzIChtYXRjaGVzIGJlZm9yZSBub24tYmFuZyBrd3MpXG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogL1xcYih5aWVsZHxyZXR1cm58bGV0fGRvKSEvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ0BcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgY29udGFpbnM6IFt7YmVnaW46ICdcIlwiJ31dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIidcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwoXFxcXConLCAnXFxcXCpcXFxcKScpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd0eXBlJywgZW5kOiAnXFxcXCh8PXwkJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICBUWVBFUEFSQU1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXFxcXFs8JywgZW5kOiAnPlxcXFxdJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdcXFxcQihcXCdbQS1aYS16XSlcXFxcYicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICAna2V5d29yZCc6XG4gICAgICAnYWJvcnQgYWNyb255bSBhY3JvbnltcyBhbGlhcyBhbGwgYW5kIGFzc2lnbiBiaW5hcnkgY2FyZCBkaWFnIGRpc3BsYXkgJyArXG4gICAgICAnZWxzZSBlcSBmaWxlIGZpbGVzIGZvciBmcmVlIGdlIGd0IGlmIGludGVnZXIgbGUgbG9vcCBsdCBtYXhpbWl6aW5nICcgK1xuICAgICAgJ21pbmltaXppbmcgbW9kZWwgbW9kZWxzIG5lIG5lZ2F0aXZlIG5vIG5vdCBvcHRpb24gb3B0aW9ucyBvciBvcmQgJyArXG4gICAgICAncG9zaXRpdmUgcHJvZCBwdXQgcHV0cGFnZSBwdXR0bCByZXBlYXQgc2FtZWFzIHNlbWljb250IHNlbWlpbnQgc21heCAnICtcbiAgICAgICdzbWluIHNvbHZlIHNvczEgc29zMiBzdW0gc3lzdGVtIHRhYmxlIHRoZW4gdW50aWwgdXNpbmcgd2hpbGUgeG9yIHllcycsXG4gICAgJ2xpdGVyYWwnOiAnZXBzIGluZiBuYScsXG4gICAgJ2J1aWx0LWluJzpcbiAgICAgICdhYnMgYXJjY29zIGFyY3NpbiBhcmN0YW4gYXJjdGFuMiBCZXRhIGJldGFSZWcgYmlub21pYWwgY2VpbCBjZW50cm9weSAnICtcbiAgICAgICdjb3MgY29zaCBjdlBvd2VyIGRpdiBkaXYwIGVEaXN0IGVudHJvcHkgZXJyb3JmIGV4ZWNTZWVkIGV4cCBmYWN0ICcgK1xuICAgICAgJ2Zsb29yIGZyYWMgZ2FtbWEgZ2FtbWFSZWcgbG9nIGxvZ0JldGEgbG9nR2FtbWEgbG9nMTAgbG9nMiBtYXBWYWwgbWF4ICcgK1xuICAgICAgJ21pbiBtb2QgbmNwQ00gbmNwRiBuY3BWVXBvdyBuY3BWVXNpbiBub3JtYWwgcGkgcG9seSBwb3dlciAnICtcbiAgICAgICdyYW5kQmlub21pYWwgcmFuZExpbmVhciByYW5kVHJpYW5nbGUgcm91bmQgclBvd2VyIHNpZ21vaWQgc2lnbiAnICtcbiAgICAgICdzaWduUG93ZXIgc2luIHNpbmggc2xleHAgc2xsb2cxMCBzbHJlYyBzcWV4cCBzcWxvZzEwIHNxciBzcXJlYyBzcXJ0ICcgK1xuICAgICAgJ3RhbiB0YW5oIHRydW5jIHVuaWZvcm0gdW5pZm9ybUludCB2Y1Bvd2VyIGJvb2xfYW5kIGJvb2xfZXF2IGJvb2xfaW1wICcgK1xuICAgICAgJ2Jvb2xfbm90IGJvb2xfb3IgYm9vbF94b3IgaWZUaGVuIHJlbF9lcSByZWxfZ2UgcmVsX2d0IHJlbF9sZSByZWxfbHQgJyArXG4gICAgICAncmVsX25lIGdkYXkgZ2RvdyBnaG91ciBnbGVhcCBnbWlsbGlzZWMgZ21pbnV0ZSBnbW9udGggZ3NlY29uZCBneWVhciAnICtcbiAgICAgICdqZGF0ZSBqbm93IGpzdGFydCBqdGltZSBlcnJvckxldmVsIGV4ZWNFcnJvciBnYW1zUmVsZWFzZSBnYW1zVmVyc2lvbiAnICtcbiAgICAgICdoYW5kbGVDb2xsZWN0IGhhbmRsZURlbGV0ZSBoYW5kbGVTdGF0dXMgaGFuZGxlU3VibWl0IGhlYXBGcmVlICcgK1xuICAgICAgJ2hlYXBMaW1pdCBoZWFwU2l6ZSBqb2JIYW5kbGUgam9iS2lsbCBqb2JTdGF0dXMgam9iVGVybWluYXRlICcgK1xuICAgICAgJ2xpY2Vuc2VMZXZlbCBsaWNlbnNlU3RhdHVzIG1heEV4ZWNFcnJvciBzbGVlcCB0aW1lQ2xvc2UgdGltZUNvbXAgJyArXG4gICAgICAndGltZUVsYXBzZWQgdGltZUV4ZWMgdGltZVN0YXJ0J1xuICB9O1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICB9O1xuICB2YXIgU1lNQk9MUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXD1bbGdlbnhjXT0vfSxcbiAgICAgIHtiZWdpbjogL1xcJC99LFxuICAgIF1cbiAgfTtcbiAgdmFyIFFTVFIgPSB7IC8vIE9uZS1saW5lIHF1b3RlZCBjb21tZW50IHN0cmluZ1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnfSxcbiAgICAgIHtiZWdpbjogJ1wiJywgZW5kOiAnXCInfSxcbiAgICBdLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG4gIHZhciBBU1NJR05NRU5UID0ge1xuICAgIGJlZ2luOiAnLycsXG4gICAgZW5kOiAnLycsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBRU1RSLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgXSxcbiAgfTtcbiAgdmFyIERFU0NURVhUID0geyAvLyBQYXJhbWV0ZXIvc2V0L3ZhcmlhYmxlIGRlc2NyaXB0aW9uIHRleHRcbiAgICBiZWdpbjogL1thLXpdW2EtejAtOV9dKihcXChbYS16MC05XywgXSpcXCkpP1sgXFx0XSsvLFxuICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICBlbmQ6ICckJyxcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgUVNUUixcbiAgICAgIEFTU0lHTk1FTlQsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICBiZWdpbjogLyhbIF0qW2EtejAtOSYjKj0/QD5cXFxcPDpcXC0sKCkkXFxbXFxdXy57fSErJV5dKykrLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2dtcyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoL15cXCRvbnRleHQvLCAvXlxcJG9mZnRleHQvKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwkW2EtejAtOV0rJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEta2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJ15cXFxcJFthLXowLTldKycsXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXConLCAnJCcpLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAvLyBEZWNsYXJhdGlvbnNcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczpcbiAgICAgICAgICAnc2V0IHNldHMgcGFyYW1ldGVyIHBhcmFtZXRlcnMgdmFyaWFibGUgdmFyaWFibGVzICcgK1xuICAgICAgICAgICdzY2FsYXIgc2NhbGFycyBlcXVhdGlvbiBlcXVhdGlvbnMnLFxuICAgICAgICBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNPTU1FTlQoJ15cXFxcKicsICckJyksXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgQVNTSUdOTUVOVCxcbiAgICAgICAgICBERVNDVEVYVCxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgLy8gdGFibGUgZW52aXJvbm1lbnRcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3RhYmxlJyxcbiAgICAgICAgZW5kOiAnOycsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHsgLy8gdGFibGUgaGVhZGVyIHJvd1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ3RhYmxlJyxcbiAgICAgICAgICAgIGVuZDogJyQnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtERVNDVEVYVF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNPTU1FTlQoJ15cXFxcKicsICckJyksXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIC8vIFRhYmxlIGRvZXMgbm90IGNvbnRhaW4gREVTQ1RFWFQgb3IgQVNTSUdOTUVOVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogL15bYS16XVthLXowLTlfLFxcLSsnICgpJF0rXFwuezJ9LyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHsgLy8gRnVuY3Rpb24gdGl0bGVcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46IC9eW2EtejAtOV9dKy8sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICAgICAgU1lNQk9MUyxcbiAgICAgICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgU1lNQk9MUyxcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDogICdib29sIGJyZWFrIGNhbGwgY2FsbGV4ZSBjaGVja2ludGVycnVwdCBjbGVhciBjbGVhcmcgY2xvc2VhbGwgY2xzIGNvbWxvZyBjb21waWxlICcgK1xuICAgICAgICAgICAgICAnY29udGludWUgY3JlYXRlIGRlYnVnIGRlY2xhcmUgZGVsZXRlIGRpc2FibGUgZGxpYnJhcnkgZGxsY2FsbCBkbyBkb3MgZWQgZWRpdCBlbHNlICcgK1xuICAgICAgICAgICAgICAnZWxzZWlmIGVuYWJsZSBlbmQgZW5kZm9yIGVuZGlmIGVuZHAgZW5kbyBlcnJvcmxvZyBlcnJvcmxvZ2F0IGV4cHIgZXh0ZXJuYWwgZm4gJyArXG4gICAgICAgICAgICAgICdmb3IgZm9ybWF0IGdvdG8gZ29zdWIgZ3JhcGggaWYga2V5d29yZCBsZXQgbGliIGxpYnJhcnkgbGluZSBsb2FkIGxvYWRhcnJheSBsb2FkZXhlICcgK1xuICAgICAgICAgICAgICAnbG9hZGYgbG9hZGsgbG9hZG0gbG9hZHAgbG9hZHMgbG9hZHggbG9jYWwgbG9jYXRlIGxvb3BuZXh0aW5kZXggbHByaW50IGxwd2lkdGggbHNob3cgJyArXG4gICAgICAgICAgICAgICdtYXRyaXggbXN5bSBuZHBjbGV4IG5ldyBvcGVuIG91dHB1dCBvdXR3aWR0aCBwbG90IHBsb3RzeW0gcG9wIHByY3NuIHByaW50ICcgK1xuICAgICAgICAgICAgICAncHJpbnRkb3MgcHJvYyBwdXNoIHJldHAgcmV0dXJuIHJuZGNvbiBybmRtb2Qgcm5kbXVsdCBybmRzZWVkIHJ1biBzYXZlIHNhdmVhbGwgc2NyZWVuICcgK1xuICAgICAgICAgICAgICAnc2Nyb2xsIHNldGFycmF5IHNob3cgc3BhcnNlIHN0b3Agc3RyaW5nIHN0cnVjdCBzeXN0ZW0gdHJhY2UgdHJhcCB0aHJlYWRmb3IgJyArXG4gICAgICAgICAgICAgICd0aHJlYWRlbmRmb3IgdGhyZWFkYmVnaW4gdGhyZWFkam9pbiB0aHJlYWRzdGF0IHRocmVhZGVuZCB1bnRpbCB1c2Ugd2hpbGUgd2lucHJpbnQgJyArXG4gICAgICAgICAgICAgICduZSBnZSBsZSBndCBsdCBhbmQgeG9yIG9yIG5vdCBlcSBlcXYnLFxuICAgIGJ1aWx0X2luOiAnYWJzIGFjZiBhY29uY2F0IGFleWUgYW1heCBhbWVhbiBBbWVyaWNhbkJpbm9tQ2FsbCBBbWVyaWNhbkJpbm9tQ2FsbF9HcmVla3MgQW1lcmljYW5CaW5vbUNhbGxfSW1wVm9sICcgK1xuICAgICAgICAgICAgICAnQW1lcmljYW5CaW5vbVB1dCBBbWVyaWNhbkJpbm9tUHV0X0dyZWVrcyBBbWVyaWNhbkJpbm9tUHV0X0ltcFZvbCBBbWVyaWNhbkJTQ2FsbCBBbWVyaWNhbkJTQ2FsbF9HcmVla3MgJyArXG4gICAgICAgICAgICAgICdBbWVyaWNhbkJTQ2FsbF9JbXBWb2wgQW1lcmljYW5CU1B1dCBBbWVyaWNhbkJTUHV0X0dyZWVrcyBBbWVyaWNhbkJTUHV0X0ltcFZvbCBhbWluIGFtdWx0IGFubm90YXRpb25HZXREZWZhdWx0cyAnICtcbiAgICAgICAgICAgICAgJ2Fubm90YXRpb25TZXRCa2QgYW5ub3RhdGlvblNldEZvbnQgYW5ub3RhdGlvblNldExpbmVDb2xvciBhbm5vdGF0aW9uU2V0TGluZVN0eWxlIGFubm90YXRpb25TZXRMaW5lVGhpY2tuZXNzICcgK1xuICAgICAgICAgICAgICAnYW5udWFsVHJhZGluZ0RheXMgYXJjY29zIGFyY3NpbiBhcmVzaGFwZSBhcnJheWFsbG9jIGFycmF5aW5kZXggYXJyYXlpbml0IGFycmF5dG9tYXQgYXNjaWlsb2FkIGFzY2xhYmVsIGFzdGQgJyArXG4gICAgICAgICAgICAgICdhc3RkcyBhc3VtIGF0YW4gYXRhbjIgYXRyYW5zcG9zZSBheG1hcmdpbiBiYWxhbmNlIGJhbmQgYmFuZGNob2wgYmFuZGNob2xzb2wgYmFuZGx0c29sIGJhbmRydiBiYW5kc29scGQgYmFyICcgK1xuICAgICAgICAgICAgICAnYmFzZTEwIGJlZ3dpbmQgYmVzc2VsaiBiZXNzZWx5IGJldGEgYm94IGJveGNveCBjZGZCZXRhIGNkZkJldGFJbnYgY2RmQmlub21pYWwgY2RmQmlub21pYWxJbnYgY2RmQnZuIGNkZkJ2bjIgJyArXG4gICAgICAgICAgICAgICdjZGZCdm4yZSBjZGZDYXVjaHkgY2RmQ2F1Y2h5SW52IGNkZkNoaWMgY2RmQ2hpaSBjZGZDaGluYyBjZGZDaGluY0ludiBjZGZFeHAgY2RmRXhwSW52IGNkZkZjIGNkZkZuYyBjZGZGbmNJbnYgJyArXG4gICAgICAgICAgICAgICdjZGZHYW0gY2RmR2VuUGFyZXRvIGNkZkh5cGVyR2VvIGNkZkxhcGxhY2UgY2RmTGFwbGFjZUludiBjZGZMb2dpc3RpYyBjZGZMb2dpc3RpY0ludiBjZGZtQ29udHJvbENyZWF0ZSBjZGZNdm4gJyArXG4gICAgICAgICAgICAgICdjZGZNdm4yZSBjZGZNdm5jZSBjZGZNdm5lIGNkZk12dDJlIGNkZk12dGNlIGNkZk12dGUgY2RmTiBjZGZOMiBjZGZOYyBjZGZOZWdCaW5vbWlhbCBjZGZOZWdCaW5vbWlhbEludiBjZGZOaSAnICtcbiAgICAgICAgICAgICAgJ2NkZlBvaXNzb24gY2RmUG9pc3NvbkludiBjZGZSYXlsZWlnaCBjZGZSYXlsZWlnaEludiBjZGZUYyBjZGZUY2kgY2RmVG5jIGNkZlR2biBjZGZXZWlidWxsIGNkZldlaWJ1bGxJbnYgY2RpciAnICtcbiAgICAgICAgICAgICAgJ2NlaWwgQ2hhbmdlRGlyIGNoZGlyIGNoaUJhclNxdWFyZSBjaG9sIGNob2xkbiBjaG9sc29sIGNob2x1cCBjaHJzIGNsb3NlIGNvZGUgY29scyBjb2xzZiBjb21iaW5hdGUgY29tYmluYXRlZCAnICtcbiAgICAgICAgICAgICAgJ2NvbXBsZXggY29uIGNvbmQgY29uaiBjb25zIENvblNjb3JlIGNvbnRvdXIgY29udiBjb252ZXJ0c2F0b3N0ciBjb252ZXJ0c3RydG9zYSBjb3JybSBjb3JybXMgY29ycnZjIGNvcnJ4IGNvcnJ4cyAnICtcbiAgICAgICAgICAgICAgJ2NvcyBjb3NoIGNvdW50cyBjb3VudHd0cyBjcm9zc3ByZCBjcm91dCBjcm91dHAgY3NyY29sIGNzcmxpbiBjc3ZSZWFkTSBjc3ZSZWFkU0EgY3VtcHJvZGMgY3Vtc3VtYyBjdXJ2ZSBjdnRvcyAnICtcbiAgICAgICAgICAgICAgJ2RhdGFjcmVhdGUgZGF0YWNyZWF0ZWNvbXBsZXggZGF0YWxpc3QgZGF0YWxvYWQgZGF0YWxvb3AgZGF0YW9wZW4gZGF0YXNhdmUgZGF0ZSBkYXRlc3RyIGRhdGVzdHJpbmcgZGF0ZXN0cnltZCAnICtcbiAgICAgICAgICAgICAgJ2RheWlueXIgZGF5b2Z3ZWVrIGRiQWRkRGF0YWJhc2UgZGJDbG9zZSBkYkNvbW1pdCBkYkNyZWF0ZVF1ZXJ5IGRiRXhlY1F1ZXJ5IGRiR2V0Q29ubmVjdE9wdGlvbnMgZGJHZXREYXRhYmFzZU5hbWUgJyArXG4gICAgICAgICAgICAgICdkYkdldERyaXZlck5hbWUgZGJHZXREcml2ZXJzIGRiR2V0SG9zdE5hbWUgZGJHZXRMYXN0RXJyb3JOdW0gZGJHZXRMYXN0RXJyb3JUZXh0IGRiR2V0TnVtZXJpY2FsUHJlY1BvbGljeSAnICtcbiAgICAgICAgICAgICAgJ2RiR2V0UGFzc3dvcmQgZGJHZXRQb3J0IGRiR2V0VGFibGVIZWFkZXJzIGRiR2V0VGFibGVzIGRiR2V0VXNlck5hbWUgZGJIYXNGZWF0dXJlIGRiSXNEcml2ZXJBdmFpbGFibGUgZGJJc09wZW4gJyArXG4gICAgICAgICAgICAgICdkYklzT3BlbkVycm9yIGRiT3BlbiBkYlF1ZXJ5QmluZFZhbHVlIGRiUXVlcnlDbGVhciBkYlF1ZXJ5Q29scyBkYlF1ZXJ5RXhlY1ByZXBhcmVkIGRiUXVlcnlGZXRjaEFsbE0gZGJRdWVyeUZldGNoQWxsU0EgJyArXG4gICAgICAgICAgICAgICdkYlF1ZXJ5RmV0Y2hPbmVNIGRiUXVlcnlGZXRjaE9uZVNBIGRiUXVlcnlGaW5pc2ggZGJRdWVyeUdldEJvdW5kVmFsdWUgZGJRdWVyeUdldEJvdW5kVmFsdWVzIGRiUXVlcnlHZXRGaWVsZCAnICtcbiAgICAgICAgICAgICAgJ2RiUXVlcnlHZXRMYXN0RXJyb3JOdW0gZGJRdWVyeUdldExhc3RFcnJvclRleHQgZGJRdWVyeUdldExhc3RJbnNlcnRJRCBkYlF1ZXJ5R2V0TGFzdFF1ZXJ5IGRiUXVlcnlHZXRQb3NpdGlvbiAnICtcbiAgICAgICAgICAgICAgJ2RiUXVlcnlJc0FjdGl2ZSBkYlF1ZXJ5SXNGb3J3YXJkT25seSBkYlF1ZXJ5SXNOdWxsIGRiUXVlcnlJc1NlbGVjdCBkYlF1ZXJ5SXNWYWxpZCBkYlF1ZXJ5UHJlcGFyZSBkYlF1ZXJ5Um93cyAnICtcbiAgICAgICAgICAgICAgJ2RiUXVlcnlTZWVrIGRiUXVlcnlTZWVrRmlyc3QgZGJRdWVyeVNlZWtMYXN0IGRiUXVlcnlTZWVrTmV4dCBkYlF1ZXJ5U2Vla1ByZXZpb3VzIGRiUXVlcnlTZXRGb3J3YXJkT25seSAnICtcbiAgICAgICAgICAgICAgJ2RiUmVtb3ZlRGF0YWJhc2UgZGJSb2xsYmFjayBkYlNldENvbm5lY3RPcHRpb25zIGRiU2V0RGF0YWJhc2VOYW1lIGRiU2V0SG9zdE5hbWUgZGJTZXROdW1lcmljYWxQcmVjUG9saWN5ICcgK1xuICAgICAgICAgICAgICAnZGJTZXRQb3J0IGRiU2V0VXNlck5hbWUgZGJUcmFuc2FjdGlvbiBEZWxldGVGaWxlIGRlbGlmIGRlbHJvd3MgZGVuc2VUb1NwIGRlbnNlVG9TcFJFIGRlblRvWmVybyBkZXNpZ24gZGV0IGRldGwgJyArXG4gICAgICAgICAgICAgICdkZmZ0IGRmZnRpIGRpYWcgZGlhZ3J2IGRpZ2FtbWEgZG9zd2luIERPU1dpbkNsb3NlYWxsIERPU1dpbk9wZW4gZG90ZmVxIGRvdGZlcW10IGRvdGZnZSBkb3RmZ2VtdCBkb3RmZ3QgZG90Zmd0bXQgJyArXG4gICAgICAgICAgICAgICdkb3RmbGUgZG90ZmxlbXQgZG90Zmx0IGRvdGZsdG10IGRvdGZuZSBkb3RmbmVtdCBkcmF3IGRyb3AgZHNDcmVhdGUgZHN0YXQgZHN0YXRtdCBkc3RhdG10Q29udHJvbENyZWF0ZSBkdGRhdGUgZHRkYXkgJyArXG4gICAgICAgICAgICAgICdkdHRpbWUgZHR0b2R0diBkdHRvc3RyIGR0dG91dGMgZHR2bm9ybWFsIGR0dnRvZHQgZHR2dG91dGMgZHVtbXkgZHVtbXliciBkdW1teWRuIGVpZyBlaWdoIGVpZ2h2IGVpZ3YgZWxhcHNlZFRyYWRpbmdEYXlzICcgK1xuICAgICAgICAgICAgICAnZW5kd2luZCBlbnZnZXQgZW9mIGVxU29sdmUgZXFTb2x2ZW10IGVxU29sdmVtdENvbnRyb2xDcmVhdGUgZXFTb2x2ZW10T3V0Q3JlYXRlIGVxU29sdmVzZXQgZXJmIGVyZmMgZXJmY2NwbHggZXJmY3BseCBlcnJvciAnICtcbiAgICAgICAgICAgICAgJ2V0ZGF5cyBldGhzZWMgZXRzdHIgRXVyb3BlYW5CaW5vbUNhbGwgRXVyb3BlYW5CaW5vbUNhbGxfR3JlZWtzIEV1cm9wZWFuQmlub21DYWxsX0ltcFZvbCBFdXJvcGVhbkJpbm9tUHV0ICcgK1xuICAgICAgICAgICAgICAnRXVyb3BlYW5CaW5vbVB1dF9HcmVla3MgRXVyb3BlYW5CaW5vbVB1dF9JbXBWb2wgRXVyb3BlYW5CU0NhbGwgRXVyb3BlYW5CU0NhbGxfR3JlZWtzIEV1cm9wZWFuQlNDYWxsX0ltcFZvbCAnICtcbiAgICAgICAgICAgICAgJ0V1cm9wZWFuQlNQdXQgRXVyb3BlYW5CU1B1dF9HcmVla3MgRXVyb3BlYW5CU1B1dF9JbXBWb2wgZXhjdHNtcGwgZXhlYyBleGVjYmcgZXhwIGV4dGVybiBleWUgZmNoZWNrZXJyIGZjbGVhcmVyciBmZXEgJyArXG4gICAgICAgICAgICAgICdmZXFtdCBmZmx1c2ggZmZ0IGZmdGkgZmZ0bSBmZnRtaSBmZnRuIGZnZSBmZ2VtdCBmZ2V0cyBmZ2V0c2EgZmdldHNhdCBmZ2V0c3QgZmd0IGZndG10IGZpbGVpbmZvIGZpbGVzYSBmbGUgZmxlbXQgJyArXG4gICAgICAgICAgICAgICdmbG9vciBmbHQgZmx0bXQgZm1vZCBmbmUgZm5lbXQgZm9udHMgZm9wZW4gZm9ybWF0Y3YgZm9ybWF0bnYgZnB1dHMgZnB1dHN0IGZzZWVrIGZzdHJlcnJvciBmdGVsbCBmdG9jdiBmdG9zIGZ0b3N0ckMgJyArXG4gICAgICAgICAgICAgICdnYW1tYSBnYW1tYWNwbHggZ2FtbWFpaSBnYXVzc2V0IGdkYUFwcGVuZCBnZGFDcmVhdGUgZ2RhRFN0YXQgZ2RhRFN0YXRNYXQgZ2RhR2V0SW5kZXggZ2RhR2V0TmFtZSBnZGFHZXROYW1lcyBnZGFHZXRPcmRlcnMgJyArXG4gICAgICAgICAgICAgICdnZGFHZXRUeXBlIGdkYUdldFR5cGVzIGdkYUdldFZhckluZm8gZ2RhSXNDcGx4IGdkYUxvYWQgZ2RhUGFjayBnZGFSZWFkIGdkYVJlYWRCeUluZGV4IGdkYVJlYWRTb21lIGdkYVJlYWRTcGFyc2UgJyArXG4gICAgICAgICAgICAgICdnZGFSZWFkU3RydWN0IGdkYVJlcG9ydFZhckluZm8gZ2RhU2F2ZSBnZGFVcGRhdGUgZ2RhVXBkYXRlQW5kUGFjayBnZGFWYXJzIGdkYVdyaXRlIGdkYVdyaXRlMzIgZ2RhV3JpdGVTb21lIGdldGFycmF5ICcgK1xuICAgICAgICAgICAgICAnZ2V0ZGltcyBnZXRmIGdldEdBVVNTaG9tZSBnZXRtYXRyaXggZ2V0bWF0cml4NEQgZ2V0bmFtZSBnZXRuYW1lZiBnZXROZXh0VHJhZGluZ0RheSBnZXROZXh0V2Vla0RheSBnZXRuciBnZXRvcmRlcnMgJyArXG4gICAgICAgICAgICAgICdnZXRwYXRoIGdldFByZXZpb3VzVHJhZGluZ0RheSBnZXRQcmV2aW91c1dlZWtEYXkgZ2V0Um93IGdldHNjYWxhcjNEIGdldHNjYWxhcjREIGdldFRyUm93IGdldHdpbmQgZ2xtIGdyYWRjcGx4IGdyYWRNVCAnICtcbiAgICAgICAgICAgICAgJ2dyYWRNVG0gZ3JhZE1UVCBncmFkTVRUbSBncmFkcCBncmFwaHBydCBncmFwaHNldCBoYXNpbWFnIGhlYWRlciBoZWFkZXJtdCBoZXNzIGhlc3NNVCBoZXNzTVRnIGhlc3NNVGd3IGhlc3NNVG0gJyArXG4gICAgICAgICAgICAgICdoZXNzTVRtdyBoZXNzTVRUIGhlc3NNVFRnIGhlc3NNVFRndyBoZXNzTVRUbSBoZXNzTVR3IGhlc3NwIGhpc3QgaGlzdGYgaGlzdHAgaHNlYyBpbWFnIGluZGN2IGluZGV4Y2F0IGluZGljZXMgaW5kaWNlczIgJyArXG4gICAgICAgICAgICAgICdpbmRpY2VzZiBpbmRpY2VzZm4gaW5kbnYgaW5kc2F2IGludGVncmF0ZTFkIGludGVncmF0ZUNvbnRyb2xDcmVhdGUgaW50Z3JhdDIgaW50Z3JhdDMgaW50aHAxIGludGhwMiBpbnRocDMgaW50aHA0ICcgK1xuICAgICAgICAgICAgICAnaW50aHBDb250cm9sQ3JlYXRlIGludHF1YWQxIGludHF1YWQyIGludHF1YWQzIGludHJsZWF2IGludHJsZWF2c2EgaW50cnNlY3QgaW50c2ltcCBpbnYgaW52cGQgaW52c3dwIGlzY3BseCBpc2NwbHhmICcgK1xuICAgICAgICAgICAgICAnaXNkZW4gaXNpbmZuYW5taXNzIGlzbWlzcyBrZXkga2V5YXYga2V5dyBsYWcgbGFnMSBsYWduIGxhcEVpZ2hiIGxhcEVpZ2hpIGxhcEVpZ2h2YiBsYXBFaWdodmkgbGFwZ0VpZyBsYXBnRWlnaCBsYXBnRWlnaHYgJyArXG4gICAgICAgICAgICAgICdsYXBnRWlndiBsYXBnU2NodXIgbGFwZ1N2ZGNzdCBsYXBnU3ZkcyBsYXBnU3Zkc3QgbGFwU3ZkY3VzdiBsYXBTdmRzIGxhcFN2ZHVzdiBsZGxwIGxkbHNvbCBsaW5Tb2x2ZSBsaXN0d2lzZSBsbiBsbmNkZmJ2biAnICtcbiAgICAgICAgICAgICAgJ2xuY2RmYnZuMiBsbmNkZm12biBsbmNkZm4gbG5jZGZuMiBsbmNkZm5jIGxuZmFjdCBsbmdhbW1hY3BseCBsbnBkZm12biBsbnBkZm12dCBsbnBkZm4gbG5wZGZ0IGxvYWRkIGxvYWRzdHJ1Y3QgbG9hZHdpbmQgJyArXG4gICAgICAgICAgICAgICdsb2VzcyBsb2Vzc210IGxvZXNzbXRDb250cm9sQ3JlYXRlIGxvZyBsb2dsb2cgbG9neCBsb2d5IGxvd2VyIGxvd21hdCBsb3dtYXQxIGx0cmlzb2wgbHUgbHVzb2wgbWFjaEVwc2lsb24gbWFrZSBtYWtldmFycyAnICtcbiAgICAgICAgICAgICAgJ21ha2V3aW5kIG1hcmdpbiBtYXRhbGxvYyBtYXRpbml0IG1hdHRvYXJyYXkgbWF4Ynl0ZXMgbWF4YyBtYXhpbmRjIG1heHYgbWF4dmVjIG1iZXNzZWxlaSBtYmVzc2VsZWkwIG1iZXNzZWxlaTEgbWJlc3NlbGkgJyArXG4gICAgICAgICAgICAgICdtYmVzc2VsaTAgbWJlc3NlbGkxIG1lYW5jIG1lZGlhbiBtZXJnZWJ5IG1lcmdldmFyIG1pbmMgbWluaW5kYyBtaW52IG1pc3MgbWlzc2V4IG1pc3NydiBtb21lbnQgbW9tZW50ZCBtb3ZpbmdhdmUgJyArXG4gICAgICAgICAgICAgICdtb3ZpbmdhdmVFeHB3Z3QgbW92aW5nYXZlV2d0IG5leHRpbmRleCBuZXh0biBuZXh0bmV2biBuZXh0d2luZCBudG9zIG51bGwgbnVsbDEgbnVtQ29tYmluYXRpb25zIG9scyBvbHNtdCBvbHNtdENvbnRyb2xDcmVhdGUgJyArXG4gICAgICAgICAgICAgICdvbHNxciBvbHNxcjIgb2xzcXJtdCBvbmVzIG9wdG4gb3B0bmV2biBvcnRoIG91dHR5cCBwYWNmIHBhY2tlZFRvU3AgcGFja3IgcGFyc2UgcGF1c2UgcGRmQ2F1Y2h5IHBkZkNoaSBwZGZFeHAgcGRmR2VuUGFyZXRvICcgK1xuICAgICAgICAgICAgICAncGRmSHlwZXJHZW8gcGRmTGFwbGFjZSBwZGZMb2dpc3RpYyBwZGZuIHBkZlBvaXNzb24gcGRmUmF5bGVpZ2ggcGRmV2VpYnVsbCBwaSBwaW52IHBpbnZtdCBwbG90QWRkQXJyb3cgcGxvdEFkZEJhciBwbG90QWRkQm94ICcgK1xuICAgICAgICAgICAgICAncGxvdEFkZEhpc3QgcGxvdEFkZEhpc3RGIHBsb3RBZGRIaXN0UCBwbG90QWRkUG9sYXIgcGxvdEFkZFNjYXR0ZXIgcGxvdEFkZFNoYXBlIHBsb3RBZGRUZXh0Ym94IHBsb3RBZGRUUyBwbG90QWRkWFkgcGxvdEFyZWEgJyArXG4gICAgICAgICAgICAgICdwbG90QmFyIHBsb3RCb3ggcGxvdENsZWFyTGF5b3V0IHBsb3RDb250b3VyIHBsb3RDdXN0b21MYXlvdXQgcGxvdEdldERlZmF1bHRzIHBsb3RIaXN0IHBsb3RIaXN0RiBwbG90SGlzdFAgcGxvdExheW91dCAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RMb2dMb2cgcGxvdExvZ1ggcGxvdExvZ1kgcGxvdE9wZW5XaW5kb3cgcGxvdFBvbGFyIHBsb3RTYXZlIHBsb3RTY2F0dGVyIHBsb3RTZXRBeGVzUGVuIHBsb3RTZXRCYXIgcGxvdFNldEJhckZpbGwgJyArXG4gICAgICAgICAgICAgICdwbG90U2V0QmFyU3RhY2tlZCBwbG90U2V0QmtkQ29sb3IgcGxvdFNldEZpbGwgcGxvdFNldEdyaWQgcGxvdFNldExlZ2VuZCBwbG90U2V0TGluZUNvbG9yIHBsb3RTZXRMaW5lU3R5bGUgcGxvdFNldExpbmVTeW1ib2wgJyArXG4gICAgICAgICAgICAgICdwbG90U2V0TGluZVRoaWNrbmVzcyBwbG90U2V0TmV3V2luZG93IHBsb3RTZXRUaXRsZSBwbG90U2V0V2hpY2hZQXhpcyBwbG90U2V0WEF4aXNTaG93IHBsb3RTZXRYTGFiZWwgcGxvdFNldFhSYW5nZSAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RTZXRYVGljSW50ZXJ2YWwgcGxvdFNldFhUaWNMYWJlbCBwbG90U2V0WUF4aXNTaG93IHBsb3RTZXRZTGFiZWwgcGxvdFNldFlSYW5nZSBwbG90U2V0WkF4aXNTaG93IHBsb3RTZXRaTGFiZWwgJyArXG4gICAgICAgICAgICAgICdwbG90U3VyZmFjZSBwbG90VFMgcGxvdFhZIHBvbGFyIHBvbHljaGFyIHBvbHlldmFsIHBvbHlnYW1tYSBwb2x5aW50IHBvbHltYWtlIHBvbHltYXQgcG9seW1yb290IHBvbHltdWx0IHBvbHlyb290ICcgK1xuICAgICAgICAgICAgICAncHFnd2luIHByZXZpb3VzaW5kZXggcHJpbmNvbXAgcHJpbnRmbSBwcmludGZtdCBwcm9kYyBwc2kgcHV0YXJyYXkgcHV0ZiBwdXR2YWxzIHB2Q3JlYXRlIHB2R2V0SW5kZXggcHZHZXRQYXJOYW1lcyAnICtcbiAgICAgICAgICAgICAgJ3B2R2V0UGFyVmVjdG9yIHB2TGVuZ3RoIHB2TGlzdCBwdlBhY2sgcHZQYWNraSBwdlBhY2ttIHB2UGFja21pIHB2UGFja3MgcHZQYWNrc2kgcHZQYWNrc20gcHZQYWNrc21pIHB2UHV0UGFyVmVjdG9yICcgK1xuICAgICAgICAgICAgICAncHZUZXN0IHB2VW5wYWNrIFFOZXd0b24gUU5ld3Rvbm10IFFOZXd0b25tdENvbnRyb2xDcmVhdGUgUU5ld3Rvbm10T3V0Q3JlYXRlIFFOZXd0b25TZXQgUVByb2cgUVByb2dtdCBRUHJvZ210SW5DcmVhdGUgJyArXG4gICAgICAgICAgICAgICdxcXIgcXFyZSBxcXJlcCBxciBxcmUgcXJlcCBxcnNvbCBxcnRzb2wgcXR5ciBxdHlyZSBxdHlyZXAgcXVhbnRpbGUgcXVhbnRpbGVkIHF5ciBxeXJlIHF5cmVwIHF6IHJhbmsgcmFua2luZHggcmVhZHIgJyArXG4gICAgICAgICAgICAgICdyZWFsIHJlY2xhc3NpZnkgcmVjbGFzc2lmeUN1dHMgcmVjb2RlIHJlY3NlcmFyIHJlY3NlcmNwIHJlY3NlcnJjIHJlcnVuIHJlc2NhbGUgcmVzaGFwZSByZXRzIHJldiByZmZ0IHJmZnRpIHJmZnRpcCByZmZ0biAnICtcbiAgICAgICAgICAgICAgJ3JmZnRucCByZmZ0cCBybmRCZXJub3VsbGkgcm5kQmV0YSBybmRCaW5vbWlhbCBybmRDYXVjaHkgcm5kQ2hpU3F1YXJlIHJuZENvbiBybmRDcmVhdGVTdGF0ZSBybmRFeHAgcm5kR2FtbWEgcm5kR2VvIHJuZEd1bWJlbCAnICtcbiAgICAgICAgICAgICAgJ3JuZEh5cGVyR2VvIHJuZGkgcm5kS01iZXRhIHJuZEtNZ2FtIHJuZEtNaSBybmRLTW4gcm5kS01uYiBybmRLTXAgcm5kS011IHJuZEtNdm0gcm5kTGFwbGFjZSBybmRMQ2JldGEgcm5kTENnYW0gcm5kTENpIHJuZExDbiAnICtcbiAgICAgICAgICAgICAgJ3JuZExDbmIgcm5kTENwIHJuZExDdSBybmRMQ3ZtIHJuZExvZ05vcm0gcm5kTVR1IHJuZE1WbiBybmRNVnQgcm5kbiBybmRuYiBybmROZWdCaW5vbWlhbCBybmRwIHJuZFBvaXNzb24gcm5kUmF5bGVpZ2ggJyArXG4gICAgICAgICAgICAgICdybmRTdGF0ZVNraXAgcm5kdSBybmR2bSBybmRXZWlidWxsIHJuZFdpc2hhcnQgcm90YXRlciByb3VuZCByb3dzIHJvd3NmIHJyZWYgc2FtcGxlRGF0YSBzYXRvc3RyQyBzYXZlZCBzYXZlU3RydWN0IHNhdmV3aW5kICcgK1xuICAgICAgICAgICAgICAnc2NhbGUgc2NhbGUzZCBzY2FsZXJyIHNjYWxpbmZuYW5taXNzIHNjYWxtaXNzIHNjaHRvYyBzY2h1ciBzZWFyY2hzb3VyY2VwYXRoIHNlZWtyIHNlbGVjdCBzZWxpZiBzZXFhIHNlcW0gc2V0ZGlmIHNldGRpZnNhICcgK1xuICAgICAgICAgICAgICAnc2V0dmFycyBzZXR2d3Jtb2RlIHNldHdpbmQgc2hlbGwgc2hpZnRyIHNpbiBzaW5nbGVpbmRleCBzaW5oIHNsZWVwIHNvbHBkIHNvcnRjIHNvcnRjYyBzb3J0ZCBzb3J0aGMgc29ydGhjYyBzb3J0aW5kICcgK1xuICAgICAgICAgICAgICAnc29ydGluZGMgc29ydG1jIHNvcnRyIHNvcnRyYyBzcEJpY29uakdyYWRTb2wgc3BDaG9sIHNwQ29uakdyYWRTb2wgc3BDcmVhdGUgc3BEZW5zZVN1Ym1hdCBzcERpYWdSdk1hdCBzcEVpZ3Ygc3BFeWUgc3BMREwgJyArXG4gICAgICAgICAgICAgICdzcGxpbmUgc3BMVSBzcE51bU5aRSBzcE9uZXMgc3ByZWFkU2hlZXRSZWFkTSBzcHJlYWRTaGVldFJlYWRTQSBzcHJlYWRTaGVldFdyaXRlIHNwU2NhbGUgc3BTdWJtYXQgc3BUb0RlbnNlIHNwVHJURGVuc2UgJyArXG4gICAgICAgICAgICAgICdzcFRTY2FsYXIgc3BaZXJvcyBzcXBTb2x2ZSBzcXBTb2x2ZU1UIHNxcFNvbHZlTVRDb250cm9sQ3JlYXRlIHNxcFNvbHZlTVRsYWdyYW5nZUNyZWF0ZSBzcXBTb2x2ZU1Ub3V0Q3JlYXRlIHNxcFNvbHZlU2V0ICcgK1xuICAgICAgICAgICAgICAnc3FydCBzdGF0ZW1lbnRzIHN0ZGMgc3Rkc2Mgc3RvY3Ygc3RvZiBzdHJjb21iaW5lIHN0cmluZHggc3RybGVuIHN0cnB1dCBzdHJyaW5keCBzdHJzZWN0IHN0cnNwbGl0IHN0cnNwbGl0UGFkIHN0cnRvZHQgJyArXG4gICAgICAgICAgICAgICdzdHJ0b2Ygc3RydG9mY3BseCBzdHJ0cmltbCBzdHJ0cmltciBzdHJ0cnVuYyBzdHJ0cnVuY2wgc3RydHJ1bmNwYWQgc3RydHJ1bmNyIHN1Ym1hdCBzdWJzY2F0IHN1YnN0dXRlIHN1YnZlYyBzdW1jIHN1bXIgJyArXG4gICAgICAgICAgICAgICdzdXJmYWNlIHN2ZCBzdmQxIHN2ZDIgc3ZkY3VzdiBzdmRzIHN2ZHVzdiBzeXNzdGF0ZSB0YWIgdGFuIHRhbmggdGVtcG5hbWUgJyArXG4gICAgICAgICAgICAgICd0aW1lIHRpbWVkdCB0aW1lc3RyIHRpbWV1dGMgdGl0bGUgdGtmMmVwcyB0a2YycHMgdG9jYXJ0IHRvZGF5ZHQgdG9lcGxpdHogdG9rZW4gdG9wb2xhciB0cmFwY2hrICcgK1xuICAgICAgICAgICAgICAndHJpZ2FtbWEgdHJpbXIgdHJ1bmMgdHlwZSB0eXBlY3YgdHlwZWYgdW5pb24gdW5pb25zYSB1bmlxaW5keCB1bmlxaW5keHNhIHVuaXF1ZSB1bmlxdWVzYSB1cG1hdCB1cG1hdDEgdXBwZXIgdXRjdG9kdCAnICtcbiAgICAgICAgICAgICAgJ3V0Y3RvZHR2IHV0cmlzb2wgdmFscyB2YXJDb3ZNUyB2YXJDb3ZYUyB2YXJnZXQgdmFyZ2V0bCB2YXJtYWxsIHZhcm1hcmVzIHZhcnB1dCB2YXJwdXRsIHZhcnR5cGVmIHZjbSB2Y21zIHZjeCB2Y3hzICcgK1xuICAgICAgICAgICAgICAndmVjIHZlY2ggdmVjciB2ZWN0b3IgdmdldCB2aWV3IHZpZXd4eXogdmxpc3Qgdm5hbWVjdiB2b2x1bWUgdnB1dCB2cmVhZCB2dHlwZWN2IHdhaXQgd2FpdGMgd2Fsa2luZGV4IHdoZXJlIHdpbmRvdyAnICtcbiAgICAgICAgICAgICAgJ3dyaXRlciB4bGFiZWwgeGxzR2V0U2hlZXRDb3VudCB4bHNHZXRTaGVldFNpemUgeGxzR2V0U2hlZXRUeXBlcyB4bHNNYWtlUmFuZ2UgeGxzUmVhZE0geGxzUmVhZFNBIHhsc1dyaXRlIHhsc1dyaXRlTSAnICtcbiAgICAgICAgICAgICAgJ3hsc1dyaXRlU0EgeHBuZCB4dGljcyB4eSB4eXogeWxhYmVsIHl0aWNzIHplcm9zIHpldGEgemxhYmVsIHp0aWNzIGNkZkVtcGlyaWNhbCBkb3QgaDVjcmVhdGUgaDVvcGVuIGg1cmVhZCBoNXJlYWRBdHRyaWJ1dGUgJyArXG4gICAgICAgICAgICAgICdoNXdyaXRlIGg1d3JpdGVBdHRyaWJ1dGUgbGRsIHBsb3RBZGRFcnJvckJhciBwbG90QWRkU3VyZmFjZSBwbG90Q0RGRW1waXJpY2FsIHBsb3RTZXRDb2xvcm1hcCBwbG90U2V0Q29udG91ckxhYmVscyAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RTZXRMZWdlbmRGb250IHBsb3RTZXRUZXh0SW50ZXJwcmV0ZXIgcGxvdFNldFhUaWNDb3VudCBwbG90U2V0WVRpY0NvdW50IHBsb3RTZXRaTGV2ZWxzIHBvd2VybSBzdHJqb2luIHN5bHZlc3RlciAnICtcbiAgICAgICAgICAgICAgJ3N0cnRyaW0nLFxuICAgIGxpdGVyYWw6ICdEQl9BRlRFUl9MQVNUX1JPVyBEQl9BTExfVEFCTEVTIERCX0JBVENIX09QRVJBVElPTlMgREJfQkVGT1JFX0ZJUlNUX1JPVyBEQl9CTE9CIERCX0VWRU5UX05PVElGSUNBVElPTlMgJyArXG4gICAgICAgICAgICAgJ0RCX0ZJTklTSF9RVUVSWSBEQl9ISUdIX1BSRUNJU0lPTiBEQl9MQVNUX0lOU0VSVF9JRCBEQl9MT1dfUFJFQ0lTSU9OX0RPVUJMRSBEQl9MT1dfUFJFQ0lTSU9OX0lOVDMyICcgK1xuICAgICAgICAgICAgICdEQl9MT1dfUFJFQ0lTSU9OX0lOVDY0IERCX0xPV19QUkVDSVNJT05fTlVNQkVSUyBEQl9NVUxUSVBMRV9SRVNVTFRfU0VUUyBEQl9OQU1FRF9QTEFDRUhPTERFUlMgJyArXG4gICAgICAgICAgICAgJ0RCX1BPU0lUSU9OQUxfUExBQ0VIT0xERVJTIERCX1BSRVBBUkVEX1FVRVJJRVMgREJfUVVFUllfU0laRSBEQl9TSU1QTEVfTE9DS0lORyBEQl9TWVNURU1fVEFCTEVTIERCX1RBQkxFUyAnICtcbiAgICAgICAgICAgICAnREJfVFJBTlNBQ1RJT05TIERCX1VOSUNPREUgREJfVklFV1MgX19TVERJTiBfX1NURE9VVCBfX1NUREVSUiBfX0ZJTEVfRElSJ1xuICB9O1xuXG5cbiAgdmFyIEFUX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnQCcsICdAJyk7XG5cbiAgdmFyIFBSRVBST0NFU1NPUiA9XG4gIHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJyMnLCBlbmQ6ICckJyxcbiAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnZGVmaW5lIGRlZmluZWNzfDEwIHVuZGVmIGlmZGVmIGlmbmRlZiBpZmxpZ2h0IGlmZGxsY2FsbCBpZm1hYyBpZm9zMndpbiBpZnVuaXggZWxzZSBlbmRpZiBsaW5lc29uIGxpbmVzb2ZmIHNyY2ZpbGUgc3JjbGluZSd9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxcXFxcbi8sIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2luY2x1ZGUnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2luY2x1ZGUnfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgXVxuICB9O1xuXG4gIHZhciBTVFJVQ1RfVFlQRSA9XG4gIHtcbiAgICBiZWdpbjogL1xcYnN0cnVjdFxccysvLFxuICAgIGVuZDogL1xccy8sXG4gICAga2V5d29yZHM6IFwic3RydWN0XCIsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInR5cGVcIixcbiAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIC8vIG9ubHkgZm9yIGRlZmluaXRpb25zXG4gIHZhciBQQVJTRV9QQVJBTVMgPSBbXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHsgLy8gZG90c1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgIGJlZ2luOiAvXFwuXFwuXFwuLyxcbiAgICAgICAgfSxcbiAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgICAgIFNUUlVDVF9UWVBFLFxuICAgICAgXVxuICAgIH1cbiAgXTtcblxuICB2YXIgRlVOQ1RJT05fREVGID1cbiAge1xuICAgIGNsYXNzTmFtZTogXCJ0aXRsZVwiLFxuICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuXG4gIHZhciBERUZJTklUSU9OID0gZnVuY3Rpb24gKGJlZ2luS2V5d29yZHMsIGVuZCwgaW5oZXJpdHMpIHtcbiAgICB2YXIgbW9kZSA9IGhsanMuaW5oZXJpdChcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImZ1bmN0aW9uXCIsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6IGJlZ2luS2V5d29yZHMsXG4gICAgICAgIGVuZDogZW5kLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW10uY29uY2F0KFBBUlNFX1BBUkFNUyksXG4gICAgICB9LFxuICAgICAgaW5oZXJpdHMgfHwge31cbiAgICApO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChGVU5DVElPTl9ERUYpO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChobGpzLkNfTlVNQkVSX01PREUpO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFKTtcbiAgICBtb2RlLmNvbnRhaW5zLnB1c2goQVRfQ09NTUVOVF9NT0RFKTtcbiAgICByZXR1cm4gbW9kZTtcbiAgfTtcblxuICB2YXIgQlVJTFRfSU5fUkVGID1cbiAgeyAvLyB0aGVzZSBhcmUgZXhwbGljaXRseSBuYW1lZCBpbnRlcm5hbCBmdW5jdGlvbiBjYWxsc1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKCcgKyBLRVlXT1JEUy5idWlsdF9pbi5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcpXFxcXGInLFxuICB9O1xuXG4gIHZhciBTVFJJTkdfUkVGID1cbiAge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuXG4gIHZhciBGVU5DVElPTl9SRUYgPVxuICB7XG4gICAgLy9jbGFzc05hbWU6IFwiZm5fcmVmXCIsXG4gICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiBLRVlXT1JEUy5rZXl3b3JkLFxuICAgICAgfSxcbiAgICAgIEJVSUxUX0lOX1JFRixcbiAgICAgIHsgLy8gYW1iaWd1b3VzbHkgbmFtZWQgZnVuY3Rpb24gY2FsbHMgZ2V0IGEgcmVsZXZhbmNlIG9mIDBcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgdmFyIEZVTkNUSU9OX1JFRl9QQVJBTVMgPVxuICB7XG4gICAgLy9jbGFzc05hbWU6IFwiZm5fcmVmX3BhcmFtc1wiLFxuICAgIGJlZ2luOiAvXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBrZXl3b3JkczogeyBidWlsdF9pbjogS0VZV09SRFMuYnVpbHRfaW4sIGxpdGVyYWw6IEtFWVdPUkRTLmxpdGVyYWwgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIEFUX0NPTU1FTlRfTU9ERSxcbiAgICAgIEJVSUxUX0lOX1JFRixcbiAgICAgIEZVTkNUSU9OX1JFRixcbiAgICAgIFNUUklOR19SRUYsXG4gICAgICAnc2VsZicsXG4gICAgXSxcbiAgfTtcblxuICBGVU5DVElPTl9SRUYuY29udGFpbnMucHVzaChGVU5DVElPTl9SRUZfUEFSQU1TKTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ3NzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSwgLy8gbGFuZ3VhZ2UgaXMgY2FzZS1pbnNlbnNpdGl2ZVxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvKFxce1slI118WyUjXVxcfXwgPC0gKS8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgICBTVFJJTkdfUkVGLFxuICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46IC9cXGJleHRlcm5hbCAobWF0cml4fHN0cmluZ3xhcnJheXxzcGFyc2UgbWF0cml4fHN0cnVjdHxwcm9jfGtleXdvcmR8Zm4pLyxcbiAgICAgIH0sXG4gICAgICBERUZJTklUSU9OKCdwcm9jIGtleXdvcmQnLCAnOycpLFxuICAgICAgREVGSU5JVElPTignZm4nLCAnPScpLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnZm9yIHRocmVhZGZvcicsXG4gICAgICAgIGVuZDogLzsvLFxuICAgICAgICAvL2VuZDogL1xcKC8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIEFUX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBGVU5DVElPTl9SRUZfUEFSQU1TLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHsgLy8gY3VzdG9tIG1ldGhvZCBndWFyZFxuICAgICAgICAvLyBleGNsdWRlcyBtZXRob2QgbmFtZXMgZnJvbSBrZXl3b3JkIHByb2Nlc3NpbmdcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXC4nICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLCB9LFxuICAgICAgICAgIHsgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccyo9JywgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgfSxcbiAgICAgIEZVTkNUSU9OX1JFRixcbiAgICAgIFNUUlVDVF9UWVBFLFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgdmFyIEdDT0RFX0lERU5UX1JFID0gJ1tBLVpfXVtBLVowLTlfLl0qJztcbiAgICB2YXIgR0NPREVfQ0xPU0VfUkUgPSAnXFxcXCUnO1xuICAgIHZhciBHQ09ERV9LRVlXT1JEUyA9XG4gICAgICAnSUYgRE8gV0hJTEUgRU5EV0hJTEUgQ0FMTCBFTkRJRiBTVUIgRU5EU1VCIEdPVE8gUkVQRUFUIEVORFJFUEVBVCAnICtcbiAgICAgICdFUSBMVCBHVCBORSBHRSBMRSBPUiBYT1InO1xuICAgIHZhciBHQ09ERV9TVEFSVCA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnKFtPXSkoWzAtOV0rKSdcbiAgICB9O1xuICAgIHZhciBHQ09ERV9DT0RFID0gW1xuICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuQ09NTUVOVCgvXFwoLywgL1xcKS8pLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5DX05VTUJFUl9NT0RFLCB7YmVnaW46ICcoWy0rXT8oWzAtOV0qXFxcXC4/WzAtOV0rXFxcXC4/KSl8JyArIGhsanMuQ19OVU1CRVJfUkV9KSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46ICcoW0ddKShbMC05XStcXFxcLj9bMC05XT8pJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFtNXSkoWzAtOV0rXFxcXC4/WzAtOV0/KSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICBiZWdpbjogJyhWQ3xWU3wjKScsXG4gICAgICAgICAgICBlbmQ6ICcoXFxcXGQrKSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICBiZWdpbjogJyhWWk9GWHxWWk9GWXxWWk9GWiknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKEFUQU58QUJTfEFDT1N8QVNJTnxTSU58Q09TfEVYUHxGSVh8RlVQfFJPVU5EfExOfFRBTikoXFxcXFspJyxcbiAgICAgICAgICAgIGVuZDogJyhbLStdPyhbMC05XSpcXFxcLj9bMC05XStcXFxcLj8pKShcXFxcXSknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdOJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFxXJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhbGlhc2VzOiBbJ25jJ10sXG4gICAgICAgIC8vIFNvbWUgaW1wbGVtZW50YXRpb25zIChDTkMgY29udHJvbHMpIG9mIEctY29kZSBhcmUgaW50ZXJvcGVyYWJsZSB3aXRoIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlIGxldHRlcnMgc2VhbWxlc3NseS5cbiAgICAgICAgLy8gSG93ZXZlciwgbW9zdCBwcmVmZXIgYWxsIHVwcGVyY2FzZSBhbmQgdXBwZXJjYXNlIGlzIGN1c3RvbWFyeS5cbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAgbGV4ZW1lczogR0NPREVfSURFTlRfUkUsXG4gICAgICAgIGtleXdvcmRzOiBHQ09ERV9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogR0NPREVfQ0xPU0VfUkVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBHQ09ERV9TVEFSVFxuICAgICAgICBdLmNvbmNhdChHQ09ERV9DT0RFKVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2ZlYXR1cmUnXSxcbiAgICBrZXl3b3JkczogJ0ZlYXR1cmUgQmFja2dyb3VuZCBBYmlsaXR5IEJ1c2luZXNzXFwgTmVlZCBTY2VuYXJpbyBTY2VuYXJpb3MgU2NlbmFyaW9cXCBPdXRsaW5lIFNjZW5hcmlvXFwgVGVtcGxhdGUgRXhhbXBsZXMgR2l2ZW4gQW5kIFRoZW4gQnV0IFdoZW4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXConLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ0BbXkBcXFxcc10rJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcfCcsIGVuZDogJ1xcXFx8XFxcXHcqJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnW158XSsnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAnPCcsIGVuZDogJz4nXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIFN0YXRlbWVudHNcbiAgICAgICAgJ2JyZWFrIGNvbnRpbnVlIGRpc2NhcmQgZG8gZWxzZSBmb3IgaWYgcmV0dXJuIHdoaWxlIHN3aXRjaCBjYXNlIGRlZmF1bHQgJyArXG4gICAgICAgIC8vIFF1YWxpZmllcnNcbiAgICAgICAgJ2F0dHJpYnV0ZSBiaW5kaW5nIGJ1ZmZlciBjY3cgY2VudHJvaWQgY2VudHJvaWQgdmFyeWluZyBjb2hlcmVudCBjb2x1bW5fbWFqb3IgY29uc3QgY3cgJyArXG4gICAgICAgICdkZXB0aF9hbnkgZGVwdGhfZ3JlYXRlciBkZXB0aF9sZXNzIGRlcHRoX3VuY2hhbmdlZCBlYXJseV9mcmFnbWVudF90ZXN0cyBlcXVhbF9zcGFjaW5nICcgK1xuICAgICAgICAnZmxhdCBmcmFjdGlvbmFsX2V2ZW5fc3BhY2luZyBmcmFjdGlvbmFsX29kZF9zcGFjaW5nIGhpZ2hwIGluIGluZGV4IGlub3V0IGludmFyaWFudCAnICtcbiAgICAgICAgJ2ludm9jYXRpb25zIGlzb2xpbmVzIGxheW91dCBsaW5lX3N0cmlwIGxpbmVzIGxpbmVzX2FkamFjZW5jeSBsb2NhbF9zaXplX3ggbG9jYWxfc2l6ZV95ICcgK1xuICAgICAgICAnbG9jYWxfc2l6ZV96IGxvY2F0aW9uIGxvd3AgbWF4X3ZlcnRpY2VzIG1lZGl1bXAgbm9wZXJzcGVjdGl2ZSBvZmZzZXQgb3JpZ2luX3VwcGVyX2xlZnQgJyArXG4gICAgICAgICdvdXQgcGFja2VkIHBhdGNoIHBpeGVsX2NlbnRlcl9pbnRlZ2VyIHBvaW50X21vZGUgcG9pbnRzIHByZWNpc2UgcHJlY2lzaW9uIHF1YWRzIHIxMWZfZzExZl9iMTBmICcrXG4gICAgICAgICdyMTYgcjE2X3Nub3JtIHIxNmYgcjE2aSByMTZ1aSByMzJmIHIzMmkgcjMydWkgcjggcjhfc25vcm0gcjhpIHI4dWkgcmVhZG9ubHkgcmVzdHJpY3QgJyArXG4gICAgICAgICdyZzE2IHJnMTZfc25vcm0gcmcxNmYgcmcxNmkgcmcxNnVpIHJnMzJmIHJnMzJpIHJnMzJ1aSByZzggcmc4X3Nub3JtIHJnOGkgcmc4dWkgcmdiMTBfYTIgJyArXG4gICAgICAgICdyZ2IxMF9hMnVpIHJnYmExNiByZ2JhMTZfc25vcm0gcmdiYTE2ZiByZ2JhMTZpIHJnYmExNnVpIHJnYmEzMmYgcmdiYTMyaSByZ2JhMzJ1aSByZ2JhOCAnICtcbiAgICAgICAgJ3JnYmE4X3Nub3JtIHJnYmE4aSByZ2JhOHVpIHJvd19tYWpvciBzYW1wbGUgc2hhcmVkIHNtb290aCBzdGQxNDAgc3RkNDMwIHN0cmVhbSB0cmlhbmdsZV9zdHJpcCAnICtcbiAgICAgICAgJ3RyaWFuZ2xlcyB0cmlhbmdsZXNfYWRqYWNlbmN5IHVuaWZvcm0gdmFyeWluZyB2ZXJ0aWNlcyB2b2xhdGlsZSB3cml0ZW9ubHknLFxuICAgICAgdHlwZTpcbiAgICAgICAgJ2F0b21pY191aW50IGJvb2wgYnZlYzIgYnZlYzMgYnZlYzQgZG1hdDIgZG1hdDJ4MiBkbWF0MngzIGRtYXQyeDQgZG1hdDMgZG1hdDN4MiBkbWF0M3gzICcgK1xuICAgICAgICAnZG1hdDN4NCBkbWF0NCBkbWF0NHgyIGRtYXQ0eDMgZG1hdDR4NCBkb3VibGUgZHZlYzIgZHZlYzMgZHZlYzQgZmxvYXQgaWltYWdlMUQgaWltYWdlMURBcnJheSAnICtcbiAgICAgICAgJ2lpbWFnZTJEIGlpbWFnZTJEQXJyYXkgaWltYWdlMkRNUyBpaW1hZ2UyRE1TQXJyYXkgaWltYWdlMkRSZWN0IGlpbWFnZTNEIGlpbWFnZUJ1ZmZlcicgK1xuICAgICAgICAnaWltYWdlQ3ViZSBpaW1hZ2VDdWJlQXJyYXkgaW1hZ2UxRCBpbWFnZTFEQXJyYXkgaW1hZ2UyRCBpbWFnZTJEQXJyYXkgaW1hZ2UyRE1TIGltYWdlMkRNU0FycmF5ICcgK1xuICAgICAgICAnaW1hZ2UyRFJlY3QgaW1hZ2UzRCBpbWFnZUJ1ZmZlciBpbWFnZUN1YmUgaW1hZ2VDdWJlQXJyYXkgaW50IGlzYW1wbGVyMUQgaXNhbXBsZXIxREFycmF5ICcgK1xuICAgICAgICAnaXNhbXBsZXIyRCBpc2FtcGxlcjJEQXJyYXkgaXNhbXBsZXIyRE1TIGlzYW1wbGVyMkRNU0FycmF5IGlzYW1wbGVyMkRSZWN0IGlzYW1wbGVyM0QgJyArXG4gICAgICAgICdpc2FtcGxlckJ1ZmZlciBpc2FtcGxlckN1YmUgaXNhbXBsZXJDdWJlQXJyYXkgaXZlYzIgaXZlYzMgaXZlYzQgbWF0MiBtYXQyeDIgbWF0MngzICcgK1xuICAgICAgICAnbWF0Mng0IG1hdDMgbWF0M3gyIG1hdDN4MyBtYXQzeDQgbWF0NCBtYXQ0eDIgbWF0NHgzIG1hdDR4NCBzYW1wbGVyMUQgc2FtcGxlcjFEQXJyYXkgJyArXG4gICAgICAgICdzYW1wbGVyMURBcnJheVNoYWRvdyBzYW1wbGVyMURTaGFkb3cgc2FtcGxlcjJEIHNhbXBsZXIyREFycmF5IHNhbXBsZXIyREFycmF5U2hhZG93ICcgK1xuICAgICAgICAnc2FtcGxlcjJETVMgc2FtcGxlcjJETVNBcnJheSBzYW1wbGVyMkRSZWN0IHNhbXBsZXIyRFJlY3RTaGFkb3cgc2FtcGxlcjJEU2hhZG93IHNhbXBsZXIzRCAnICtcbiAgICAgICAgJ3NhbXBsZXJCdWZmZXIgc2FtcGxlckN1YmUgc2FtcGxlckN1YmVBcnJheSBzYW1wbGVyQ3ViZUFycmF5U2hhZG93IHNhbXBsZXJDdWJlU2hhZG93ICcgK1xuICAgICAgICAnaW1hZ2UxRCB1aW1hZ2UxREFycmF5IHVpbWFnZTJEIHVpbWFnZTJEQXJyYXkgdWltYWdlMkRNUyB1aW1hZ2UyRE1TQXJyYXkgdWltYWdlMkRSZWN0ICcgK1xuICAgICAgICAndWltYWdlM0QgdWltYWdlQnVmZmVyIHVpbWFnZUN1YmUgdWltYWdlQ3ViZUFycmF5IHVpbnQgdXNhbXBsZXIxRCB1c2FtcGxlcjFEQXJyYXkgJyArXG4gICAgICAgICd1c2FtcGxlcjJEIHVzYW1wbGVyMkRBcnJheSB1c2FtcGxlcjJETVMgdXNhbXBsZXIyRE1TQXJyYXkgdXNhbXBsZXIyRFJlY3QgdXNhbXBsZXIzRCAnICtcbiAgICAgICAgJ3NhbXBsZXJCdWZmZXIgdXNhbXBsZXJDdWJlIHVzYW1wbGVyQ3ViZUFycmF5IHV2ZWMyIHV2ZWMzIHV2ZWM0IHZlYzIgdmVjMyB2ZWM0IHZvaWQnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vIENvbnN0YW50c1xuICAgICAgICAnZ2xfTWF4QXRvbWljQ291bnRlckJpbmRpbmdzIGdsX01heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplIGdsX01heENsaXBEaXN0YW5jZXMgZ2xfTWF4Q2xpcFBsYW5lcyAnICtcbiAgICAgICAgJ2dsX01heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4Q29tYmluZWRBdG9taWNDb3VudGVycyBnbF9NYXhDb21iaW5lZEltYWdlVW5pZm9ybXMgJyArXG4gICAgICAgICdnbF9NYXhDb21iaW5lZEltYWdlVW5pdHNBbmRGcmFnbWVudE91dHB1dHMgZ2xfTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyBnbF9NYXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZlcnMgJyArXG4gICAgICAgICdnbF9NYXhDb21wdXRlQXRvbWljQ291bnRlcnMgZ2xfTWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMgZ2xfTWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4Q29tcHV0ZVVuaWZvcm1Db21wb25lbnRzIGdsX01heENvbXB1dGVXb3JrR3JvdXBDb3VudCBnbF9NYXhDb21wdXRlV29ya0dyb3VwU2l6ZSAnICtcbiAgICAgICAgJ2dsX01heERyYXdCdWZmZXJzIGdsX01heEZyYWdtZW50QXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4RnJhZ21lbnRBdG9taWNDb3VudGVycyAnICtcbiAgICAgICAgJ2dsX01heEZyYWdtZW50SW1hZ2VVbmlmb3JtcyBnbF9NYXhGcmFnbWVudElucHV0Q29tcG9uZW50cyBnbF9NYXhGcmFnbWVudElucHV0VmVjdG9ycyAnICtcbiAgICAgICAgJ2dsX01heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMgZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyBnbF9NYXhHZW9tZXRyeUF0b21pY0NvdW50ZXJCdWZmZXJzICcgK1xuICAgICAgICAnZ2xfTWF4R2VvbWV0cnlBdG9taWNDb3VudGVycyBnbF9NYXhHZW9tZXRyeUltYWdlVW5pZm9ybXMgZ2xfTWF4R2VvbWV0cnlJbnB1dENvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhHZW9tZXRyeU91dHB1dENvbXBvbmVudHMgZ2xfTWF4R2VvbWV0cnlPdXRwdXRWZXJ0aWNlcyBnbF9NYXhHZW9tZXRyeVRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4R2VvbWV0cnlUb3RhbE91dHB1dENvbXBvbmVudHMgZ2xfTWF4R2VvbWV0cnlVbmlmb3JtQ29tcG9uZW50cyBnbF9NYXhHZW9tZXRyeVZhcnlpbmdDb21wb25lbnRzICcgK1xuICAgICAgICAnZ2xfTWF4SW1hZ2VTYW1wbGVzIGdsX01heEltYWdlVW5pdHMgZ2xfTWF4TGlnaHRzIGdsX01heFBhdGNoVmVydGljZXMgZ2xfTWF4UHJvZ3JhbVRleGVsT2Zmc2V0ICcgK1xuICAgICAgICAnZ2xfTWF4VGVzc0NvbnRyb2xBdG9taWNDb3VudGVyQnVmZmVycyBnbF9NYXhUZXNzQ29udHJvbEF0b21pY0NvdW50ZXJzIGdsX01heFRlc3NDb250cm9sSW1hZ2VVbmlmb3JtcyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NDb250cm9sSW5wdXRDb21wb25lbnRzIGdsX01heFRlc3NDb250cm9sT3V0cHV0Q29tcG9uZW50cyBnbF9NYXhUZXNzQ29udHJvbFRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4VGVzc0NvbnRyb2xUb3RhbE91dHB1dENvbXBvbmVudHMgZ2xfTWF4VGVzc0NvbnRyb2xVbmlmb3JtQ29tcG9uZW50cyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NFdmFsdWF0aW9uQXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4VGVzc0V2YWx1YXRpb25BdG9taWNDb3VudGVycyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NFdmFsdWF0aW9uSW1hZ2VVbmlmb3JtcyBnbF9NYXhUZXNzRXZhbHVhdGlvbklucHV0Q29tcG9uZW50cyBnbF9NYXhUZXNzRXZhbHVhdGlvbk91dHB1dENvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzRXZhbHVhdGlvblRleHR1cmVJbWFnZVVuaXRzIGdsX01heFRlc3NFdmFsdWF0aW9uVW5pZm9ybUNvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzR2VuTGV2ZWwgZ2xfTWF4VGVzc1BhdGNoQ29tcG9uZW50cyBnbF9NYXhUZXh0dXJlQ29vcmRzIGdsX01heFRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4VGV4dHVyZVVuaXRzIGdsX01heFZhcnlpbmdDb21wb25lbnRzIGdsX01heFZhcnlpbmdGbG9hdHMgZ2xfTWF4VmFyeWluZ1ZlY3RvcnMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhBdG9taWNDb3VudGVyQnVmZmVycyBnbF9NYXhWZXJ0ZXhBdG9taWNDb3VudGVycyBnbF9NYXhWZXJ0ZXhBdHRyaWJzIGdsX01heFZlcnRleEltYWdlVW5pZm9ybXMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhPdXRwdXRDb21wb25lbnRzIGdsX01heFZlcnRleE91dHB1dFZlY3RvcnMgZ2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyBnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyBnbF9NYXhWaWV3cG9ydHMgZ2xfTWluUHJvZ3JhbVRleGVsT2Zmc2V0ICcgK1xuICAgICAgICAvLyBWYXJpYWJsZXNcbiAgICAgICAgJ2dsX0JhY2tDb2xvciBnbF9CYWNrTGlnaHRNb2RlbFByb2R1Y3QgZ2xfQmFja0xpZ2h0UHJvZHVjdCBnbF9CYWNrTWF0ZXJpYWwgJyArXG4gICAgICAgICdnbF9CYWNrU2Vjb25kYXJ5Q29sb3IgZ2xfQ2xpcERpc3RhbmNlIGdsX0NsaXBQbGFuZSBnbF9DbGlwVmVydGV4IGdsX0NvbG9yICcgK1xuICAgICAgICAnZ2xfRGVwdGhSYW5nZSBnbF9FeWVQbGFuZVEgZ2xfRXllUGxhbmVSIGdsX0V5ZVBsYW5lUyBnbF9FeWVQbGFuZVQgZ2xfRm9nIGdsX0ZvZ0Nvb3JkICcgK1xuICAgICAgICAnZ2xfRm9nRnJhZ0Nvb3JkIGdsX0ZyYWdDb2xvciBnbF9GcmFnQ29vcmQgZ2xfRnJhZ0RhdGEgZ2xfRnJhZ0RlcHRoIGdsX0Zyb250Q29sb3IgJyArXG4gICAgICAgICdnbF9Gcm9udEZhY2luZyBnbF9Gcm9udExpZ2h0TW9kZWxQcm9kdWN0IGdsX0Zyb250TGlnaHRQcm9kdWN0IGdsX0Zyb250TWF0ZXJpYWwgJyArXG4gICAgICAgICdnbF9Gcm9udFNlY29uZGFyeUNvbG9yIGdsX0dsb2JhbEludm9jYXRpb25JRCBnbF9JbnN0YW5jZUlEIGdsX0ludm9jYXRpb25JRCBnbF9MYXllciBnbF9MaWdodE1vZGVsICcgK1xuICAgICAgICAnZ2xfTGlnaHRTb3VyY2UgZ2xfTG9jYWxJbnZvY2F0aW9uSUQgZ2xfTG9jYWxJbnZvY2F0aW9uSW5kZXggZ2xfTW9kZWxWaWV3TWF0cml4ICcgK1xuICAgICAgICAnZ2xfTW9kZWxWaWV3TWF0cml4SW52ZXJzZSBnbF9Nb2RlbFZpZXdNYXRyaXhJbnZlcnNlVHJhbnNwb3NlIGdsX01vZGVsVmlld01hdHJpeFRyYW5zcG9zZSAnICtcbiAgICAgICAgJ2dsX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeEludmVyc2UgZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeEludmVyc2VUcmFuc3Bvc2UgJyArXG4gICAgICAgICdnbF9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4VHJhbnNwb3NlIGdsX011bHRpVGV4Q29vcmQwIGdsX011bHRpVGV4Q29vcmQxIGdsX011bHRpVGV4Q29vcmQyICcgK1xuICAgICAgICAnZ2xfTXVsdGlUZXhDb29yZDMgZ2xfTXVsdGlUZXhDb29yZDQgZ2xfTXVsdGlUZXhDb29yZDUgZ2xfTXVsdGlUZXhDb29yZDYgZ2xfTXVsdGlUZXhDb29yZDcgJyArXG4gICAgICAgICdnbF9Ob3JtYWwgZ2xfTm9ybWFsTWF0cml4IGdsX05vcm1hbFNjYWxlIGdsX051bVNhbXBsZXMgZ2xfTnVtV29ya0dyb3VwcyBnbF9PYmplY3RQbGFuZVEgJyArXG4gICAgICAgICdnbF9PYmplY3RQbGFuZVIgZ2xfT2JqZWN0UGxhbmVTIGdsX09iamVjdFBsYW5lVCBnbF9QYXRjaFZlcnRpY2VzSW4gZ2xfUG9pbnQgZ2xfUG9pbnRDb29yZCAnICtcbiAgICAgICAgJ2dsX1BvaW50U2l6ZSBnbF9Qb3NpdGlvbiBnbF9QcmltaXRpdmVJRCBnbF9QcmltaXRpdmVJREluIGdsX1Byb2plY3Rpb25NYXRyaXggZ2xfUHJvamVjdGlvbk1hdHJpeEludmVyc2UgJyArXG4gICAgICAgICdnbF9Qcm9qZWN0aW9uTWF0cml4SW52ZXJzZVRyYW5zcG9zZSBnbF9Qcm9qZWN0aW9uTWF0cml4VHJhbnNwb3NlIGdsX1NhbXBsZUlEIGdsX1NhbXBsZU1hc2sgJyArXG4gICAgICAgICdnbF9TYW1wbGVNYXNrSW4gZ2xfU2FtcGxlUG9zaXRpb24gZ2xfU2Vjb25kYXJ5Q29sb3IgZ2xfVGVzc0Nvb3JkIGdsX1Rlc3NMZXZlbElubmVyIGdsX1Rlc3NMZXZlbE91dGVyICcgK1xuICAgICAgICAnZ2xfVGV4Q29vcmQgZ2xfVGV4dHVyZUVudkNvbG9yIGdsX1RleHR1cmVNYXRyaXggZ2xfVGV4dHVyZU1hdHJpeEludmVyc2UgZ2xfVGV4dHVyZU1hdHJpeEludmVyc2VUcmFuc3Bvc2UgJyArXG4gICAgICAgICdnbF9UZXh0dXJlTWF0cml4VHJhbnNwb3NlIGdsX1ZlcnRleCBnbF9WZXJ0ZXhJRCBnbF9WaWV3cG9ydEluZGV4IGdsX1dvcmtHcm91cElEIGdsX1dvcmtHcm91cFNpemUgZ2xfaW4gZ2xfb3V0ICcgK1xuICAgICAgICAvLyBGdW5jdGlvbnNcbiAgICAgICAgJ0VtaXRTdHJlYW1WZXJ0ZXggRW1pdFZlcnRleCBFbmRQcmltaXRpdmUgRW5kU3RyZWFtUHJpbWl0aXZlIGFicyBhY29zIGFjb3NoIGFsbCBhbnkgYXNpbiAnICtcbiAgICAgICAgJ2FzaW5oIGF0YW4gYXRhbmggYXRvbWljQWRkIGF0b21pY0FuZCBhdG9taWNDb21wU3dhcCBhdG9taWNDb3VudGVyIGF0b21pY0NvdW50ZXJEZWNyZW1lbnQgJyArXG4gICAgICAgICdhdG9taWNDb3VudGVySW5jcmVtZW50IGF0b21pY0V4Y2hhbmdlIGF0b21pY01heCBhdG9taWNNaW4gYXRvbWljT3IgYXRvbWljWG9yIGJhcnJpZXIgJyArXG4gICAgICAgICdiaXRDb3VudCBiaXRmaWVsZEV4dHJhY3QgYml0ZmllbGRJbnNlcnQgYml0ZmllbGRSZXZlcnNlIGNlaWwgY2xhbXAgY29zIGNvc2ggY3Jvc3MgJyArXG4gICAgICAgICdkRmR4IGRGZHkgZGVncmVlcyBkZXRlcm1pbmFudCBkaXN0YW5jZSBkb3QgZXF1YWwgZXhwIGV4cDIgZmFjZWZvcndhcmQgZmluZExTQiBmaW5kTVNCICcgK1xuICAgICAgICAnZmxvYXRCaXRzVG9JbnQgZmxvYXRCaXRzVG9VaW50IGZsb29yIGZtYSBmcmFjdCBmcmV4cCBmdHJhbnNmb3JtIGZ3aWR0aCBncmVhdGVyVGhhbiAnICtcbiAgICAgICAgJ2dyZWF0ZXJUaGFuRXF1YWwgZ3JvdXBNZW1vcnlCYXJyaWVyIGltYWdlQXRvbWljQWRkIGltYWdlQXRvbWljQW5kIGltYWdlQXRvbWljQ29tcFN3YXAgJyArXG4gICAgICAgICdpbWFnZUF0b21pY0V4Y2hhbmdlIGltYWdlQXRvbWljTWF4IGltYWdlQXRvbWljTWluIGltYWdlQXRvbWljT3IgaW1hZ2VBdG9taWNYb3IgaW1hZ2VMb2FkICcgK1xuICAgICAgICAnaW1hZ2VTaXplIGltYWdlU3RvcmUgaW11bEV4dGVuZGVkIGludEJpdHNUb0Zsb2F0IGludGVycG9sYXRlQXRDZW50cm9pZCBpbnRlcnBvbGF0ZUF0T2Zmc2V0ICcgK1xuICAgICAgICAnaW50ZXJwb2xhdGVBdFNhbXBsZSBpbnZlcnNlIGludmVyc2VzcXJ0IGlzaW5mIGlzbmFuIGxkZXhwIGxlbmd0aCBsZXNzVGhhbiBsZXNzVGhhbkVxdWFsIGxvZyAnICtcbiAgICAgICAgJ2xvZzIgbWF0cml4Q29tcE11bHQgbWF4IG1lbW9yeUJhcnJpZXIgbWVtb3J5QmFycmllckF0b21pY0NvdW50ZXIgbWVtb3J5QmFycmllckJ1ZmZlciAnICtcbiAgICAgICAgJ21lbW9yeUJhcnJpZXJJbWFnZSBtZW1vcnlCYXJyaWVyU2hhcmVkIG1pbiBtaXggbW9kIG1vZGYgbm9pc2UxIG5vaXNlMiBub2lzZTMgbm9pc2U0ICcgK1xuICAgICAgICAnbm9ybWFsaXplIG5vdCBub3RFcXVhbCBvdXRlclByb2R1Y3QgcGFja0RvdWJsZTJ4MzIgcGFja0hhbGYyeDE2IHBhY2tTbm9ybTJ4MTYgcGFja1Nub3JtNHg4ICcgK1xuICAgICAgICAncGFja1Vub3JtMngxNiBwYWNrVW5vcm00eDggcG93IHJhZGlhbnMgcmVmbGVjdCByZWZyYWN0IHJvdW5kIHJvdW5kRXZlbiBzaGFkb3cxRCBzaGFkb3cxRExvZCAnICtcbiAgICAgICAgJ3NoYWRvdzFEUHJvaiBzaGFkb3cxRFByb2pMb2Qgc2hhZG93MkQgc2hhZG93MkRMb2Qgc2hhZG93MkRQcm9qIHNoYWRvdzJEUHJvakxvZCBzaWduIHNpbiBzaW5oICcgK1xuICAgICAgICAnc21vb3Roc3RlcCBzcXJ0IHN0ZXAgdGFuIHRhbmggdGV4ZWxGZXRjaCB0ZXhlbEZldGNoT2Zmc2V0IHRleHR1cmUgdGV4dHVyZTFEIHRleHR1cmUxRExvZCAnICtcbiAgICAgICAgJ3RleHR1cmUxRFByb2ogdGV4dHVyZTFEUHJvakxvZCB0ZXh0dXJlMkQgdGV4dHVyZTJETG9kIHRleHR1cmUyRFByb2ogdGV4dHVyZTJEUHJvakxvZCAnICtcbiAgICAgICAgJ3RleHR1cmUzRCB0ZXh0dXJlM0RMb2QgdGV4dHVyZTNEUHJvaiB0ZXh0dXJlM0RQcm9qTG9kIHRleHR1cmVDdWJlIHRleHR1cmVDdWJlTG9kICcgK1xuICAgICAgICAndGV4dHVyZUdhdGhlciB0ZXh0dXJlR2F0aGVyT2Zmc2V0IHRleHR1cmVHYXRoZXJPZmZzZXRzIHRleHR1cmVHcmFkIHRleHR1cmVHcmFkT2Zmc2V0ICcgK1xuICAgICAgICAndGV4dHVyZUxvZCB0ZXh0dXJlTG9kT2Zmc2V0IHRleHR1cmVPZmZzZXQgdGV4dHVyZVByb2ogdGV4dHVyZVByb2pHcmFkIHRleHR1cmVQcm9qR3JhZE9mZnNldCAnICtcbiAgICAgICAgJ3RleHR1cmVQcm9qTG9kIHRleHR1cmVQcm9qTG9kT2Zmc2V0IHRleHR1cmVQcm9qT2Zmc2V0IHRleHR1cmVRdWVyeUxldmVscyB0ZXh0dXJlUXVlcnlMb2QgJyArXG4gICAgICAgICd0ZXh0dXJlU2l6ZSB0cmFuc3Bvc2UgdHJ1bmMgdWFkZENhcnJ5IHVpbnRCaXRzVG9GbG9hdCB1bXVsRXh0ZW5kZWQgdW5wYWNrRG91YmxlMngzMiAnICtcbiAgICAgICAgJ3VucGFja0hhbGYyeDE2IHVucGFja1Nub3JtMngxNiB1bnBhY2tTbm9ybTR4OCB1bnBhY2tVbm9ybTJ4MTYgdW5wYWNrVW5vcm00eDggdXN1YkJvcnJvdycsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGlsbGVnYWw6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBHTUxfS0VZV09SRFMgPSB7XG4gICAga2V5d29yZHM6ICdiZWdpbiBlbmQgaWYgdGhlbiBlbHNlIHdoaWxlIGRvIGZvciBicmVhayBjb250aW51ZSB3aXRoIHVudGlsICcgK1xuICAgICAgJ3JlcGVhdCBleGl0IGFuZCBvciB4b3Igbm90IHJldHVybiBtb2QgZGl2IHN3aXRjaCBjYXNlIGRlZmF1bHQgdmFyICcgK1xuICAgICAgJ2dsb2JhbHZhciBlbnVtICNtYWNybyAjcmVnaW9uICNlbmRyZWdpb24nLFxuICAgIGJ1aWx0X2luOiAnaXNfcmVhbCBpc19zdHJpbmcgaXNfYXJyYXkgaXNfdW5kZWZpbmVkIGlzX2ludDMyIGlzX2ludDY0ICcgK1xuICAgICAgJ2lzX3B0ciBpc192ZWMzIGlzX3ZlYzQgaXNfbWF0cml4IGlzX2Jvb2wgdHlwZW9mICcgK1xuICAgICAgJ3ZhcmlhYmxlX2dsb2JhbF9leGlzdHMgdmFyaWFibGVfZ2xvYmFsX2dldCB2YXJpYWJsZV9nbG9iYWxfc2V0ICcgK1xuICAgICAgJ3ZhcmlhYmxlX2luc3RhbmNlX2V4aXN0cyB2YXJpYWJsZV9pbnN0YW5jZV9nZXQgdmFyaWFibGVfaW5zdGFuY2Vfc2V0ICcgK1xuICAgICAgJ3ZhcmlhYmxlX2luc3RhbmNlX2dldF9uYW1lcyBhcnJheV9sZW5ndGhfMWQgYXJyYXlfbGVuZ3RoXzJkICcgK1xuICAgICAgJ2FycmF5X2hlaWdodF8yZCBhcnJheV9lcXVhbHMgYXJyYXlfY3JlYXRlIGFycmF5X2NvcHkgcmFuZG9tICcgK1xuICAgICAgJ3JhbmRvbV9yYW5nZSBpcmFuZG9tIGlyYW5kb21fcmFuZ2UgcmFuZG9tX3NldF9zZWVkIHJhbmRvbV9nZXRfc2VlZCAnICtcbiAgICAgICdyYW5kb21pemUgcmFuZG9taXNlIGNob29zZSBhYnMgcm91bmQgZmxvb3IgY2VpbCBzaWduIGZyYWMgc3FydCBzcXIgJyArXG4gICAgICAnZXhwIGxuIGxvZzIgbG9nMTAgc2luIGNvcyB0YW4gYXJjc2luIGFyY2NvcyBhcmN0YW4gYXJjdGFuMiBkc2luIGRjb3MgJyArXG4gICAgICAnZHRhbiBkYXJjc2luIGRhcmNjb3MgZGFyY3RhbiBkYXJjdGFuMiBkZWd0b3JhZCByYWR0b2RlZyBwb3dlciBsb2duICcgK1xuICAgICAgJ21pbiBtYXggbWVhbiBtZWRpYW4gY2xhbXAgbGVycCBkb3RfcHJvZHVjdCBkb3RfcHJvZHVjdF8zZCAnICtcbiAgICAgICdkb3RfcHJvZHVjdF9ub3JtYWxpc2VkIGRvdF9wcm9kdWN0XzNkX25vcm1hbGlzZWQgJyArXG4gICAgICAnZG90X3Byb2R1Y3Rfbm9ybWFsaXplZCBkb3RfcHJvZHVjdF8zZF9ub3JtYWxpemVkIG1hdGhfc2V0X2Vwc2lsb24gJyArXG4gICAgICAnbWF0aF9nZXRfZXBzaWxvbiBhbmdsZV9kaWZmZXJlbmNlIHBvaW50X2Rpc3RhbmNlXzNkIHBvaW50X2Rpc3RhbmNlICcgK1xuICAgICAgJ3BvaW50X2RpcmVjdGlvbiBsZW5ndGhkaXJfeCBsZW5ndGhkaXJfeSByZWFsIHN0cmluZyBpbnQ2NCBwdHIgJyArXG4gICAgICAnc3RyaW5nX2Zvcm1hdCBjaHIgYW5zaV9jaGFyIG9yZCBzdHJpbmdfbGVuZ3RoIHN0cmluZ19ieXRlX2xlbmd0aCAnICtcbiAgICAgICdzdHJpbmdfcG9zIHN0cmluZ19jb3B5IHN0cmluZ19jaGFyX2F0IHN0cmluZ19vcmRfYXQgc3RyaW5nX2J5dGVfYXQgJyArXG4gICAgICAnc3RyaW5nX3NldF9ieXRlX2F0IHN0cmluZ19kZWxldGUgc3RyaW5nX2luc2VydCBzdHJpbmdfbG93ZXIgJyArXG4gICAgICAnc3RyaW5nX3VwcGVyIHN0cmluZ19yZXBlYXQgc3RyaW5nX2xldHRlcnMgc3RyaW5nX2RpZ2l0cyAnICtcbiAgICAgICdzdHJpbmdfbGV0dGVyc2RpZ2l0cyBzdHJpbmdfcmVwbGFjZSBzdHJpbmdfcmVwbGFjZV9hbGwgc3RyaW5nX2NvdW50ICcgK1xuICAgICAgJ3N0cmluZ19oYXNoX3RvX25ld2xpbmUgY2xpcGJvYXJkX2hhc190ZXh0IGNsaXBib2FyZF9zZXRfdGV4dCAnICtcbiAgICAgICdjbGlwYm9hcmRfZ2V0X3RleHQgZGF0ZV9jdXJyZW50X2RhdGV0aW1lIGRhdGVfY3JlYXRlX2RhdGV0aW1lICcgK1xuICAgICAgJ2RhdGVfdmFsaWRfZGF0ZXRpbWUgZGF0ZV9pbmNfeWVhciBkYXRlX2luY19tb250aCBkYXRlX2luY193ZWVrICcgK1xuICAgICAgJ2RhdGVfaW5jX2RheSBkYXRlX2luY19ob3VyIGRhdGVfaW5jX21pbnV0ZSBkYXRlX2luY19zZWNvbmQgJyArXG4gICAgICAnZGF0ZV9nZXRfeWVhciBkYXRlX2dldF9tb250aCBkYXRlX2dldF93ZWVrIGRhdGVfZ2V0X2RheSAnICtcbiAgICAgICdkYXRlX2dldF9ob3VyIGRhdGVfZ2V0X21pbnV0ZSBkYXRlX2dldF9zZWNvbmQgZGF0ZV9nZXRfd2Vla2RheSAnICtcbiAgICAgICdkYXRlX2dldF9kYXlfb2ZfeWVhciBkYXRlX2dldF9ob3VyX29mX3llYXIgZGF0ZV9nZXRfbWludXRlX29mX3llYXIgJyArXG4gICAgICAnZGF0ZV9nZXRfc2Vjb25kX29mX3llYXIgZGF0ZV95ZWFyX3NwYW4gZGF0ZV9tb250aF9zcGFuICcgK1xuICAgICAgJ2RhdGVfd2Vla19zcGFuIGRhdGVfZGF5X3NwYW4gZGF0ZV9ob3VyX3NwYW4gZGF0ZV9taW51dGVfc3BhbiAnICtcbiAgICAgICdkYXRlX3NlY29uZF9zcGFuIGRhdGVfY29tcGFyZV9kYXRldGltZSBkYXRlX2NvbXBhcmVfZGF0ZSAnICtcbiAgICAgICdkYXRlX2NvbXBhcmVfdGltZSBkYXRlX2RhdGVfb2YgZGF0ZV90aW1lX29mIGRhdGVfZGF0ZXRpbWVfc3RyaW5nICcgK1xuICAgICAgJ2RhdGVfZGF0ZV9zdHJpbmcgZGF0ZV90aW1lX3N0cmluZyBkYXRlX2RheXNfaW5fbW9udGggJyArXG4gICAgICAnZGF0ZV9kYXlzX2luX3llYXIgZGF0ZV9sZWFwX3llYXIgZGF0ZV9pc190b2RheSBkYXRlX3NldF90aW1lem9uZSAnICtcbiAgICAgICdkYXRlX2dldF90aW1lem9uZSBnYW1lX3NldF9zcGVlZCBnYW1lX2dldF9zcGVlZCBtb3Rpb25fc2V0ICcgK1xuICAgICAgJ21vdGlvbl9hZGQgcGxhY2VfZnJlZSBwbGFjZV9lbXB0eSBwbGFjZV9tZWV0aW5nIHBsYWNlX3NuYXBwZWQgJyArXG4gICAgICAnbW92ZV9yYW5kb20gbW92ZV9zbmFwIG1vdmVfdG93YXJkc19wb2ludCBtb3ZlX2NvbnRhY3Rfc29saWQgJyArXG4gICAgICAnbW92ZV9jb250YWN0X2FsbCBtb3ZlX291dHNpZGVfc29saWQgbW92ZV9vdXRzaWRlX2FsbCAnICtcbiAgICAgICdtb3ZlX2JvdW5jZV9zb2xpZCBtb3ZlX2JvdW5jZV9hbGwgbW92ZV93cmFwIGRpc3RhbmNlX3RvX3BvaW50ICcgK1xuICAgICAgJ2Rpc3RhbmNlX3RvX29iamVjdCBwb3NpdGlvbl9lbXB0eSBwb3NpdGlvbl9tZWV0aW5nIHBhdGhfc3RhcnQgJyArXG4gICAgICAncGF0aF9lbmQgbXBfbGluZWFyX3N0ZXAgbXBfcG90ZW50aWFsX3N0ZXAgbXBfbGluZWFyX3N0ZXBfb2JqZWN0ICcgK1xuICAgICAgJ21wX3BvdGVudGlhbF9zdGVwX29iamVjdCBtcF9wb3RlbnRpYWxfc2V0dGluZ3MgbXBfbGluZWFyX3BhdGggJyArXG4gICAgICAnbXBfcG90ZW50aWFsX3BhdGggbXBfbGluZWFyX3BhdGhfb2JqZWN0IG1wX3BvdGVudGlhbF9wYXRoX29iamVjdCAnICtcbiAgICAgICdtcF9ncmlkX2NyZWF0ZSBtcF9ncmlkX2Rlc3Ryb3kgbXBfZ3JpZF9jbGVhcl9hbGwgbXBfZ3JpZF9jbGVhcl9jZWxsICcgK1xuICAgICAgJ21wX2dyaWRfY2xlYXJfcmVjdGFuZ2xlIG1wX2dyaWRfYWRkX2NlbGwgbXBfZ3JpZF9nZXRfY2VsbCAnICtcbiAgICAgICdtcF9ncmlkX2FkZF9yZWN0YW5nbGUgbXBfZ3JpZF9hZGRfaW5zdGFuY2VzIG1wX2dyaWRfcGF0aCAnICtcbiAgICAgICdtcF9ncmlkX2RyYXcgbXBfZ3JpZF90b19kc19ncmlkIGNvbGxpc2lvbl9wb2ludCBjb2xsaXNpb25fcmVjdGFuZ2xlICcgK1xuICAgICAgJ2NvbGxpc2lvbl9jaXJjbGUgY29sbGlzaW9uX2VsbGlwc2UgY29sbGlzaW9uX2xpbmUgJyArXG4gICAgICAnY29sbGlzaW9uX3BvaW50X2xpc3QgY29sbGlzaW9uX3JlY3RhbmdsZV9saXN0IGNvbGxpc2lvbl9jaXJjbGVfbGlzdCAnICtcbiAgICAgICdjb2xsaXNpb25fZWxsaXBzZV9saXN0IGNvbGxpc2lvbl9saW5lX2xpc3QgaW5zdGFuY2VfcG9zaXRpb25fbGlzdCAnICtcbiAgICAgICdpbnN0YW5jZV9wbGFjZV9saXN0IHBvaW50X2luX3JlY3RhbmdsZSAnICtcbiAgICAgICdwb2ludF9pbl90cmlhbmdsZSBwb2ludF9pbl9jaXJjbGUgcmVjdGFuZ2xlX2luX3JlY3RhbmdsZSAnICtcbiAgICAgICdyZWN0YW5nbGVfaW5fdHJpYW5nbGUgcmVjdGFuZ2xlX2luX2NpcmNsZSBpbnN0YW5jZV9maW5kICcgK1xuICAgICAgJ2luc3RhbmNlX2V4aXN0cyBpbnN0YW5jZV9udW1iZXIgaW5zdGFuY2VfcG9zaXRpb24gaW5zdGFuY2VfbmVhcmVzdCAnICtcbiAgICAgICdpbnN0YW5jZV9mdXJ0aGVzdCBpbnN0YW5jZV9wbGFjZSBpbnN0YW5jZV9jcmVhdGVfZGVwdGggJyArXG4gICAgICAnaW5zdGFuY2VfY3JlYXRlX2xheWVyIGluc3RhbmNlX2NvcHkgaW5zdGFuY2VfY2hhbmdlIGluc3RhbmNlX2Rlc3Ryb3kgJyArXG4gICAgICAncG9zaXRpb25fZGVzdHJveSBwb3NpdGlvbl9jaGFuZ2UgaW5zdGFuY2VfaWRfZ2V0ICcgK1xuICAgICAgJ2luc3RhbmNlX2RlYWN0aXZhdGVfYWxsIGluc3RhbmNlX2RlYWN0aXZhdGVfb2JqZWN0ICcgK1xuICAgICAgJ2luc3RhbmNlX2RlYWN0aXZhdGVfcmVnaW9uIGluc3RhbmNlX2FjdGl2YXRlX2FsbCAnICtcbiAgICAgICdpbnN0YW5jZV9hY3RpdmF0ZV9vYmplY3QgaW5zdGFuY2VfYWN0aXZhdGVfcmVnaW9uIHJvb21fZ290byAnICtcbiAgICAgICdyb29tX2dvdG9fcHJldmlvdXMgcm9vbV9nb3RvX25leHQgcm9vbV9wcmV2aW91cyByb29tX25leHQgJyArXG4gICAgICAncm9vbV9yZXN0YXJ0IGdhbWVfZW5kIGdhbWVfcmVzdGFydCBnYW1lX2xvYWQgZ2FtZV9zYXZlICcgK1xuICAgICAgJ2dhbWVfc2F2ZV9idWZmZXIgZ2FtZV9sb2FkX2J1ZmZlciBldmVudF9wZXJmb3JtIGV2ZW50X3VzZXIgJyArXG4gICAgICAnZXZlbnRfcGVyZm9ybV9vYmplY3QgZXZlbnRfaW5oZXJpdGVkIHNob3dfZGVidWdfbWVzc2FnZSAnICtcbiAgICAgICdzaG93X2RlYnVnX292ZXJsYXkgZGVidWdfZXZlbnQgZGVidWdfZ2V0X2NhbGxzdGFjayBhbGFybV9nZXQgJyArXG4gICAgICAnYWxhcm1fc2V0IGZvbnRfdGV4dHVyZV9wYWdlX3NpemUga2V5Ym9hcmRfc2V0X21hcCBrZXlib2FyZF9nZXRfbWFwICcgK1xuICAgICAgJ2tleWJvYXJkX3Vuc2V0X21hcCBrZXlib2FyZF9jaGVjayBrZXlib2FyZF9jaGVja19wcmVzc2VkICcgK1xuICAgICAgJ2tleWJvYXJkX2NoZWNrX3JlbGVhc2VkIGtleWJvYXJkX2NoZWNrX2RpcmVjdCBrZXlib2FyZF9nZXRfbnVtbG9jayAnICtcbiAgICAgICdrZXlib2FyZF9zZXRfbnVtbG9jayBrZXlib2FyZF9rZXlfcHJlc3Mga2V5Ym9hcmRfa2V5X3JlbGVhc2UgJyArXG4gICAgICAna2V5Ym9hcmRfY2xlYXIgaW9fY2xlYXIgbW91c2VfY2hlY2tfYnV0dG9uICcgK1xuICAgICAgJ21vdXNlX2NoZWNrX2J1dHRvbl9wcmVzc2VkIG1vdXNlX2NoZWNrX2J1dHRvbl9yZWxlYXNlZCAnICtcbiAgICAgICdtb3VzZV93aGVlbF91cCBtb3VzZV93aGVlbF9kb3duIG1vdXNlX2NsZWFyIGRyYXdfc2VsZiBkcmF3X3Nwcml0ZSAnICtcbiAgICAgICdkcmF3X3Nwcml0ZV9wb3MgZHJhd19zcHJpdGVfZXh0IGRyYXdfc3ByaXRlX3N0cmV0Y2hlZCAnICtcbiAgICAgICdkcmF3X3Nwcml0ZV9zdHJldGNoZWRfZXh0IGRyYXdfc3ByaXRlX3RpbGVkIGRyYXdfc3ByaXRlX3RpbGVkX2V4dCAnICtcbiAgICAgICdkcmF3X3Nwcml0ZV9wYXJ0IGRyYXdfc3ByaXRlX3BhcnRfZXh0IGRyYXdfc3ByaXRlX2dlbmVyYWwgZHJhd19jbGVhciAnICtcbiAgICAgICdkcmF3X2NsZWFyX2FscGhhIGRyYXdfcG9pbnQgZHJhd19saW5lIGRyYXdfbGluZV93aWR0aCBkcmF3X3JlY3RhbmdsZSAnICtcbiAgICAgICdkcmF3X3JvdW5kcmVjdCBkcmF3X3JvdW5kcmVjdF9leHQgZHJhd190cmlhbmdsZSBkcmF3X2NpcmNsZSAnICtcbiAgICAgICdkcmF3X2VsbGlwc2UgZHJhd19zZXRfY2lyY2xlX3ByZWNpc2lvbiBkcmF3X2Fycm93IGRyYXdfYnV0dG9uICcgK1xuICAgICAgJ2RyYXdfcGF0aCBkcmF3X2hlYWx0aGJhciBkcmF3X2dldHBpeGVsIGRyYXdfZ2V0cGl4ZWxfZXh0ICcgK1xuICAgICAgJ2RyYXdfc2V0X2NvbG91ciBkcmF3X3NldF9jb2xvciBkcmF3X3NldF9hbHBoYSBkcmF3X2dldF9jb2xvdXIgJyArXG4gICAgICAnZHJhd19nZXRfY29sb3IgZHJhd19nZXRfYWxwaGEgbWVyZ2VfY29sb3VyIG1ha2VfY29sb3VyX3JnYiAnICtcbiAgICAgICdtYWtlX2NvbG91cl9oc3YgY29sb3VyX2dldF9yZWQgY29sb3VyX2dldF9ncmVlbiBjb2xvdXJfZ2V0X2JsdWUgJyArXG4gICAgICAnY29sb3VyX2dldF9odWUgY29sb3VyX2dldF9zYXR1cmF0aW9uIGNvbG91cl9nZXRfdmFsdWUgbWVyZ2VfY29sb3IgJyArXG4gICAgICAnbWFrZV9jb2xvcl9yZ2IgbWFrZV9jb2xvcl9oc3YgY29sb3JfZ2V0X3JlZCBjb2xvcl9nZXRfZ3JlZW4gJyArXG4gICAgICAnY29sb3JfZ2V0X2JsdWUgY29sb3JfZ2V0X2h1ZSBjb2xvcl9nZXRfc2F0dXJhdGlvbiBjb2xvcl9nZXRfdmFsdWUgJyArXG4gICAgICAnbWVyZ2VfY29sb3Igc2NyZWVuX3NhdmUgc2NyZWVuX3NhdmVfcGFydCBkcmF3X3NldF9mb250ICcgK1xuICAgICAgJ2RyYXdfc2V0X2hhbGlnbiBkcmF3X3NldF92YWxpZ24gZHJhd190ZXh0IGRyYXdfdGV4dF9leHQgc3RyaW5nX3dpZHRoICcgK1xuICAgICAgJ3N0cmluZ19oZWlnaHQgc3RyaW5nX3dpZHRoX2V4dCBzdHJpbmdfaGVpZ2h0X2V4dCAnICtcbiAgICAgICdkcmF3X3RleHRfdHJhbnNmb3JtZWQgZHJhd190ZXh0X2V4dF90cmFuc2Zvcm1lZCBkcmF3X3RleHRfY29sb3VyICcgK1xuICAgICAgJ2RyYXdfdGV4dF9leHRfY29sb3VyIGRyYXdfdGV4dF90cmFuc2Zvcm1lZF9jb2xvdXIgJyArXG4gICAgICAnZHJhd190ZXh0X2V4dF90cmFuc2Zvcm1lZF9jb2xvdXIgZHJhd190ZXh0X2NvbG9yIGRyYXdfdGV4dF9leHRfY29sb3IgJyArXG4gICAgICAnZHJhd190ZXh0X3RyYW5zZm9ybWVkX2NvbG9yIGRyYXdfdGV4dF9leHRfdHJhbnNmb3JtZWRfY29sb3IgJyArXG4gICAgICAnZHJhd19wb2ludF9jb2xvdXIgZHJhd19saW5lX2NvbG91ciBkcmF3X2xpbmVfd2lkdGhfY29sb3VyICcgK1xuICAgICAgJ2RyYXdfcmVjdGFuZ2xlX2NvbG91ciBkcmF3X3JvdW5kcmVjdF9jb2xvdXIgJyArXG4gICAgICAnZHJhd19yb3VuZHJlY3RfY29sb3VyX2V4dCBkcmF3X3RyaWFuZ2xlX2NvbG91ciBkcmF3X2NpcmNsZV9jb2xvdXIgJyArXG4gICAgICAnZHJhd19lbGxpcHNlX2NvbG91ciBkcmF3X3BvaW50X2NvbG9yIGRyYXdfbGluZV9jb2xvciAnICtcbiAgICAgICdkcmF3X2xpbmVfd2lkdGhfY29sb3IgZHJhd19yZWN0YW5nbGVfY29sb3IgZHJhd19yb3VuZHJlY3RfY29sb3IgJyArXG4gICAgICAnZHJhd19yb3VuZHJlY3RfY29sb3JfZXh0IGRyYXdfdHJpYW5nbGVfY29sb3IgZHJhd19jaXJjbGVfY29sb3IgJyArXG4gICAgICAnZHJhd19lbGxpcHNlX2NvbG9yIGRyYXdfcHJpbWl0aXZlX2JlZ2luIGRyYXdfdmVydGV4ICcgK1xuICAgICAgJ2RyYXdfdmVydGV4X2NvbG91ciBkcmF3X3ZlcnRleF9jb2xvciBkcmF3X3ByaW1pdGl2ZV9lbmQgJyArXG4gICAgICAnc3ByaXRlX2dldF91dnMgZm9udF9nZXRfdXZzIHNwcml0ZV9nZXRfdGV4dHVyZSBmb250X2dldF90ZXh0dXJlICcgK1xuICAgICAgJ3RleHR1cmVfZ2V0X3dpZHRoIHRleHR1cmVfZ2V0X2hlaWdodCB0ZXh0dXJlX2dldF91dnMgJyArXG4gICAgICAnZHJhd19wcmltaXRpdmVfYmVnaW5fdGV4dHVyZSBkcmF3X3ZlcnRleF90ZXh0dXJlICcgK1xuICAgICAgJ2RyYXdfdmVydGV4X3RleHR1cmVfY29sb3VyIGRyYXdfdmVydGV4X3RleHR1cmVfY29sb3IgJyArXG4gICAgICAndGV4dHVyZV9nbG9iYWxfc2NhbGUgc3VyZmFjZV9jcmVhdGUgc3VyZmFjZV9jcmVhdGVfZXh0ICcgK1xuICAgICAgJ3N1cmZhY2VfcmVzaXplIHN1cmZhY2VfZnJlZSBzdXJmYWNlX2V4aXN0cyBzdXJmYWNlX2dldF93aWR0aCAnICtcbiAgICAgICdzdXJmYWNlX2dldF9oZWlnaHQgc3VyZmFjZV9nZXRfdGV4dHVyZSBzdXJmYWNlX3NldF90YXJnZXQgJyArXG4gICAgICAnc3VyZmFjZV9zZXRfdGFyZ2V0X2V4dCBzdXJmYWNlX3Jlc2V0X3RhcmdldCBzdXJmYWNlX2RlcHRoX2Rpc2FibGUgJyArXG4gICAgICAnc3VyZmFjZV9nZXRfZGVwdGhfZGlzYWJsZSBkcmF3X3N1cmZhY2UgZHJhd19zdXJmYWNlX3N0cmV0Y2hlZCAnICtcbiAgICAgICdkcmF3X3N1cmZhY2VfdGlsZWQgZHJhd19zdXJmYWNlX3BhcnQgZHJhd19zdXJmYWNlX2V4dCAnICtcbiAgICAgICdkcmF3X3N1cmZhY2Vfc3RyZXRjaGVkX2V4dCBkcmF3X3N1cmZhY2VfdGlsZWRfZXh0ICcgK1xuICAgICAgJ2RyYXdfc3VyZmFjZV9wYXJ0X2V4dCBkcmF3X3N1cmZhY2VfZ2VuZXJhbCBzdXJmYWNlX2dldHBpeGVsICcgK1xuICAgICAgJ3N1cmZhY2VfZ2V0cGl4ZWxfZXh0IHN1cmZhY2Vfc2F2ZSBzdXJmYWNlX3NhdmVfcGFydCBzdXJmYWNlX2NvcHkgJyArXG4gICAgICAnc3VyZmFjZV9jb3B5X3BhcnQgYXBwbGljYXRpb25fc3VyZmFjZV9kcmF3X2VuYWJsZSAnICtcbiAgICAgICdhcHBsaWNhdGlvbl9nZXRfcG9zaXRpb24gYXBwbGljYXRpb25fc3VyZmFjZV9lbmFibGUgJyArXG4gICAgICAnYXBwbGljYXRpb25fc3VyZmFjZV9pc19lbmFibGVkIGRpc3BsYXlfZ2V0X3dpZHRoIGRpc3BsYXlfZ2V0X2hlaWdodCAnICtcbiAgICAgICdkaXNwbGF5X2dldF9vcmllbnRhdGlvbiBkaXNwbGF5X2dldF9ndWlfd2lkdGggZGlzcGxheV9nZXRfZ3VpX2hlaWdodCAnICtcbiAgICAgICdkaXNwbGF5X3Jlc2V0IGRpc3BsYXlfbW91c2VfZ2V0X3ggZGlzcGxheV9tb3VzZV9nZXRfeSAnICtcbiAgICAgICdkaXNwbGF5X21vdXNlX3NldCBkaXNwbGF5X3NldF91aV92aXNpYmlsaXR5ICcgK1xuICAgICAgJ3dpbmRvd19zZXRfZnVsbHNjcmVlbiB3aW5kb3dfZ2V0X2Z1bGxzY3JlZW4gJyArXG4gICAgICAnd2luZG93X3NldF9jYXB0aW9uIHdpbmRvd19zZXRfbWluX3dpZHRoIHdpbmRvd19zZXRfbWF4X3dpZHRoICcgK1xuICAgICAgJ3dpbmRvd19zZXRfbWluX2hlaWdodCB3aW5kb3dfc2V0X21heF9oZWlnaHQgd2luZG93X2dldF92aXNpYmxlX3JlY3RzICcgK1xuICAgICAgJ3dpbmRvd19nZXRfY2FwdGlvbiB3aW5kb3dfc2V0X2N1cnNvciB3aW5kb3dfZ2V0X2N1cnNvciAnICtcbiAgICAgICd3aW5kb3dfc2V0X2NvbG91ciB3aW5kb3dfZ2V0X2NvbG91ciB3aW5kb3dfc2V0X2NvbG9yICcgK1xuICAgICAgJ3dpbmRvd19nZXRfY29sb3Igd2luZG93X3NldF9wb3NpdGlvbiB3aW5kb3dfc2V0X3NpemUgJyArXG4gICAgICAnd2luZG93X3NldF9yZWN0YW5nbGUgd2luZG93X2NlbnRlciB3aW5kb3dfZ2V0X3ggd2luZG93X2dldF95ICcgK1xuICAgICAgJ3dpbmRvd19nZXRfd2lkdGggd2luZG93X2dldF9oZWlnaHQgd2luZG93X21vdXNlX2dldF94ICcgK1xuICAgICAgJ3dpbmRvd19tb3VzZV9nZXRfeSB3aW5kb3dfbW91c2Vfc2V0IHdpbmRvd192aWV3X21vdXNlX2dldF94ICcgK1xuICAgICAgJ3dpbmRvd192aWV3X21vdXNlX2dldF95IHdpbmRvd192aWV3c19tb3VzZV9nZXRfeCAnICtcbiAgICAgICd3aW5kb3dfdmlld3NfbW91c2VfZ2V0X3kgYXVkaW9fbGlzdGVuZXJfcG9zaXRpb24gJyArXG4gICAgICAnYXVkaW9fbGlzdGVuZXJfdmVsb2NpdHkgYXVkaW9fbGlzdGVuZXJfb3JpZW50YXRpb24gJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9wb3NpdGlvbiBhdWRpb19lbWl0dGVyX2NyZWF0ZSBhdWRpb19lbWl0dGVyX2ZyZWUgJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9leGlzdHMgYXVkaW9fZW1pdHRlcl9waXRjaCBhdWRpb19lbWl0dGVyX3ZlbG9jaXR5ICcgK1xuICAgICAgJ2F1ZGlvX2VtaXR0ZXJfZmFsbG9mZiBhdWRpb19lbWl0dGVyX2dhaW4gYXVkaW9fcGxheV9zb3VuZCAnICtcbiAgICAgICdhdWRpb19wbGF5X3NvdW5kX29uIGF1ZGlvX3BsYXlfc291bmRfYXQgYXVkaW9fc3RvcF9zb3VuZCAnICtcbiAgICAgICdhdWRpb19yZXN1bWVfbXVzaWMgYXVkaW9fbXVzaWNfaXNfcGxheWluZyBhdWRpb19yZXN1bWVfc291bmQgJyArXG4gICAgICAnYXVkaW9fcGF1c2Vfc291bmQgYXVkaW9fcGF1c2VfbXVzaWMgYXVkaW9fY2hhbm5lbF9udW0gJyArXG4gICAgICAnYXVkaW9fc291bmRfbGVuZ3RoIGF1ZGlvX2dldF90eXBlIGF1ZGlvX2ZhbGxvZmZfc2V0X21vZGVsICcgK1xuICAgICAgJ2F1ZGlvX3BsYXlfbXVzaWMgYXVkaW9fc3RvcF9tdXNpYyBhdWRpb19tYXN0ZXJfZ2FpbiBhdWRpb19tdXNpY19nYWluICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX2dhaW4gYXVkaW9fc291bmRfcGl0Y2ggYXVkaW9fc3RvcF9hbGwgYXVkaW9fcmVzdW1lX2FsbCAnICtcbiAgICAgICdhdWRpb19wYXVzZV9hbGwgYXVkaW9faXNfcGxheWluZyBhdWRpb19pc19wYXVzZWQgYXVkaW9fZXhpc3RzICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX3NldF90cmFja19wb3NpdGlvbiBhdWRpb19zb3VuZF9nZXRfdHJhY2tfcG9zaXRpb24gJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9nZXRfZ2FpbiBhdWRpb19lbWl0dGVyX2dldF9waXRjaCBhdWRpb19lbWl0dGVyX2dldF94ICcgK1xuICAgICAgJ2F1ZGlvX2VtaXR0ZXJfZ2V0X3kgYXVkaW9fZW1pdHRlcl9nZXRfeiBhdWRpb19lbWl0dGVyX2dldF92eCAnICtcbiAgICAgICdhdWRpb19lbWl0dGVyX2dldF92eSBhdWRpb19lbWl0dGVyX2dldF92eiAnICtcbiAgICAgICdhdWRpb19saXN0ZW5lcl9zZXRfcG9zaXRpb24gYXVkaW9fbGlzdGVuZXJfc2V0X3ZlbG9jaXR5ICcgK1xuICAgICAgJ2F1ZGlvX2xpc3RlbmVyX3NldF9vcmllbnRhdGlvbiBhdWRpb19saXN0ZW5lcl9nZXRfZGF0YSAnICtcbiAgICAgICdhdWRpb19zZXRfbWFzdGVyX2dhaW4gYXVkaW9fZ2V0X21hc3Rlcl9nYWluIGF1ZGlvX3NvdW5kX2dldF9nYWluICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX2dldF9waXRjaCBhdWRpb19nZXRfbmFtZSBhdWRpb19zb3VuZF9zZXRfdHJhY2tfcG9zaXRpb24gJyArXG4gICAgICAnYXVkaW9fc291bmRfZ2V0X3RyYWNrX3Bvc2l0aW9uIGF1ZGlvX2NyZWF0ZV9zdHJlYW0gJyArXG4gICAgICAnYXVkaW9fZGVzdHJveV9zdHJlYW0gYXVkaW9fY3JlYXRlX3N5bmNfZ3JvdXAgJyArXG4gICAgICAnYXVkaW9fZGVzdHJveV9zeW5jX2dyb3VwIGF1ZGlvX3BsYXlfaW5fc3luY19ncm91cCAnICtcbiAgICAgICdhdWRpb19zdGFydF9zeW5jX2dyb3VwIGF1ZGlvX3N0b3Bfc3luY19ncm91cCBhdWRpb19wYXVzZV9zeW5jX2dyb3VwICcgK1xuICAgICAgJ2F1ZGlvX3Jlc3VtZV9zeW5jX2dyb3VwIGF1ZGlvX3N5bmNfZ3JvdXBfZ2V0X3RyYWNrX3BvcyAnICtcbiAgICAgICdhdWRpb19zeW5jX2dyb3VwX2RlYnVnIGF1ZGlvX3N5bmNfZ3JvdXBfaXNfcGxheWluZyBhdWRpb19kZWJ1ZyAnICtcbiAgICAgICdhdWRpb19ncm91cF9sb2FkIGF1ZGlvX2dyb3VwX3VubG9hZCBhdWRpb19ncm91cF9pc19sb2FkZWQgJyArXG4gICAgICAnYXVkaW9fZ3JvdXBfbG9hZF9wcm9ncmVzcyBhdWRpb19ncm91cF9uYW1lIGF1ZGlvX2dyb3VwX3N0b3BfYWxsICcgK1xuICAgICAgJ2F1ZGlvX2dyb3VwX3NldF9nYWluIGF1ZGlvX2NyZWF0ZV9idWZmZXJfc291bmQgJyArXG4gICAgICAnYXVkaW9fZnJlZV9idWZmZXJfc291bmQgYXVkaW9fY3JlYXRlX3BsYXlfcXVldWUgJyArXG4gICAgICAnYXVkaW9fZnJlZV9wbGF5X3F1ZXVlIGF1ZGlvX3F1ZXVlX3NvdW5kIGF1ZGlvX2dldF9yZWNvcmRlcl9jb3VudCAnICtcbiAgICAgICdhdWRpb19nZXRfcmVjb3JkZXJfaW5mbyBhdWRpb19zdGFydF9yZWNvcmRpbmcgYXVkaW9fc3RvcF9yZWNvcmRpbmcgJyArXG4gICAgICAnYXVkaW9fc291bmRfZ2V0X2xpc3RlbmVyX21hc2sgYXVkaW9fZW1pdHRlcl9nZXRfbGlzdGVuZXJfbWFzayAnICtcbiAgICAgICdhdWRpb19nZXRfbGlzdGVuZXJfbWFzayBhdWRpb19zb3VuZF9zZXRfbGlzdGVuZXJfbWFzayAnICtcbiAgICAgICdhdWRpb19lbWl0dGVyX3NldF9saXN0ZW5lcl9tYXNrIGF1ZGlvX3NldF9saXN0ZW5lcl9tYXNrICcgK1xuICAgICAgJ2F1ZGlvX2dldF9saXN0ZW5lcl9jb3VudCBhdWRpb19nZXRfbGlzdGVuZXJfaW5mbyBhdWRpb19zeXN0ZW0gJyArXG4gICAgICAnc2hvd19tZXNzYWdlIHNob3dfbWVzc2FnZV9hc3luYyBjbGlja2FibGVfYWRkIGNsaWNrYWJsZV9hZGRfZXh0ICcgK1xuICAgICAgJ2NsaWNrYWJsZV9jaGFuZ2UgY2xpY2thYmxlX2NoYW5nZV9leHQgY2xpY2thYmxlX2RlbGV0ZSAnICtcbiAgICAgICdjbGlja2FibGVfZXhpc3RzIGNsaWNrYWJsZV9zZXRfc3R5bGUgc2hvd19xdWVzdGlvbiAnICtcbiAgICAgICdzaG93X3F1ZXN0aW9uX2FzeW5jIGdldF9pbnRlZ2VyIGdldF9zdHJpbmcgZ2V0X2ludGVnZXJfYXN5bmMgJyArXG4gICAgICAnZ2V0X3N0cmluZ19hc3luYyBnZXRfbG9naW5fYXN5bmMgZ2V0X29wZW5fZmlsZW5hbWUgZ2V0X3NhdmVfZmlsZW5hbWUgJyArXG4gICAgICAnZ2V0X29wZW5fZmlsZW5hbWVfZXh0IGdldF9zYXZlX2ZpbGVuYW1lX2V4dCBzaG93X2Vycm9yICcgK1xuICAgICAgJ2hpZ2hzY29yZV9jbGVhciBoaWdoc2NvcmVfYWRkIGhpZ2hzY29yZV92YWx1ZSBoaWdoc2NvcmVfbmFtZSAnICtcbiAgICAgICdkcmF3X2hpZ2hzY29yZSBzcHJpdGVfZXhpc3RzIHNwcml0ZV9nZXRfbmFtZSBzcHJpdGVfZ2V0X251bWJlciAnICtcbiAgICAgICdzcHJpdGVfZ2V0X3dpZHRoIHNwcml0ZV9nZXRfaGVpZ2h0IHNwcml0ZV9nZXRfeG9mZnNldCAnICtcbiAgICAgICdzcHJpdGVfZ2V0X3lvZmZzZXQgc3ByaXRlX2dldF9iYm94X2xlZnQgc3ByaXRlX2dldF9iYm94X3JpZ2h0ICcgK1xuICAgICAgJ3Nwcml0ZV9nZXRfYmJveF90b3Agc3ByaXRlX2dldF9iYm94X2JvdHRvbSBzcHJpdGVfc2F2ZSAnICtcbiAgICAgICdzcHJpdGVfc2F2ZV9zdHJpcCBzcHJpdGVfc2V0X2NhY2hlX3NpemUgc3ByaXRlX3NldF9jYWNoZV9zaXplX2V4dCAnICtcbiAgICAgICdzcHJpdGVfZ2V0X3RwZSBzcHJpdGVfcHJlZmV0Y2ggc3ByaXRlX3ByZWZldGNoX211bHRpIHNwcml0ZV9mbHVzaCAnICtcbiAgICAgICdzcHJpdGVfZmx1c2hfbXVsdGkgc3ByaXRlX3NldF9zcGVlZCBzcHJpdGVfZ2V0X3NwZWVkX3R5cGUgJyArXG4gICAgICAnc3ByaXRlX2dldF9zcGVlZCBmb250X2V4aXN0cyBmb250X2dldF9uYW1lIGZvbnRfZ2V0X2ZvbnRuYW1lICcgK1xuICAgICAgJ2ZvbnRfZ2V0X2JvbGQgZm9udF9nZXRfaXRhbGljIGZvbnRfZ2V0X2ZpcnN0IGZvbnRfZ2V0X2xhc3QgJyArXG4gICAgICAnZm9udF9nZXRfc2l6ZSBmb250X3NldF9jYWNoZV9zaXplIHBhdGhfZXhpc3RzIHBhdGhfZ2V0X25hbWUgJyArXG4gICAgICAncGF0aF9nZXRfbGVuZ3RoIHBhdGhfZ2V0X3RpbWUgcGF0aF9nZXRfa2luZCBwYXRoX2dldF9jbG9zZWQgJyArXG4gICAgICAncGF0aF9nZXRfcHJlY2lzaW9uIHBhdGhfZ2V0X251bWJlciBwYXRoX2dldF9wb2ludF94IHBhdGhfZ2V0X3BvaW50X3kgJyArXG4gICAgICAncGF0aF9nZXRfcG9pbnRfc3BlZWQgcGF0aF9nZXRfeCBwYXRoX2dldF95IHBhdGhfZ2V0X3NwZWVkICcgK1xuICAgICAgJ3NjcmlwdF9leGlzdHMgc2NyaXB0X2dldF9uYW1lIHRpbWVsaW5lX2FkZCB0aW1lbGluZV9kZWxldGUgJyArXG4gICAgICAndGltZWxpbmVfY2xlYXIgdGltZWxpbmVfZXhpc3RzIHRpbWVsaW5lX2dldF9uYW1lICcgK1xuICAgICAgJ3RpbWVsaW5lX21vbWVudF9jbGVhciB0aW1lbGluZV9tb21lbnRfYWRkX3NjcmlwdCB0aW1lbGluZV9zaXplICcgK1xuICAgICAgJ3RpbWVsaW5lX21heF9tb21lbnQgb2JqZWN0X2V4aXN0cyBvYmplY3RfZ2V0X25hbWUgb2JqZWN0X2dldF9zcHJpdGUgJyArXG4gICAgICAnb2JqZWN0X2dldF9zb2xpZCBvYmplY3RfZ2V0X3Zpc2libGUgb2JqZWN0X2dldF9wZXJzaXN0ZW50ICcgK1xuICAgICAgJ29iamVjdF9nZXRfbWFzayBvYmplY3RfZ2V0X3BhcmVudCBvYmplY3RfZ2V0X3BoeXNpY3MgJyArXG4gICAgICAnb2JqZWN0X2lzX2FuY2VzdG9yIHJvb21fZXhpc3RzIHJvb21fZ2V0X25hbWUgc3ByaXRlX3NldF9vZmZzZXQgJyArXG4gICAgICAnc3ByaXRlX2R1cGxpY2F0ZSBzcHJpdGVfYXNzaWduIHNwcml0ZV9tZXJnZSBzcHJpdGVfYWRkICcgK1xuICAgICAgJ3Nwcml0ZV9yZXBsYWNlIHNwcml0ZV9jcmVhdGVfZnJvbV9zdXJmYWNlIHNwcml0ZV9hZGRfZnJvbV9zdXJmYWNlICcgK1xuICAgICAgJ3Nwcml0ZV9kZWxldGUgc3ByaXRlX3NldF9hbHBoYV9mcm9tX3Nwcml0ZSBzcHJpdGVfY29sbGlzaW9uX21hc2sgJyArXG4gICAgICAnZm9udF9hZGRfZW5hYmxlX2FhIGZvbnRfYWRkX2dldF9lbmFibGVfYWEgZm9udF9hZGQgZm9udF9hZGRfc3ByaXRlICcgK1xuICAgICAgJ2ZvbnRfYWRkX3Nwcml0ZV9leHQgZm9udF9yZXBsYWNlIGZvbnRfcmVwbGFjZV9zcHJpdGUgJyArXG4gICAgICAnZm9udF9yZXBsYWNlX3Nwcml0ZV9leHQgZm9udF9kZWxldGUgcGF0aF9zZXRfa2luZCBwYXRoX3NldF9jbG9zZWQgJyArXG4gICAgICAncGF0aF9zZXRfcHJlY2lzaW9uIHBhdGhfYWRkIHBhdGhfYXNzaWduIHBhdGhfZHVwbGljYXRlIHBhdGhfYXBwZW5kICcgK1xuICAgICAgJ3BhdGhfZGVsZXRlIHBhdGhfYWRkX3BvaW50IHBhdGhfaW5zZXJ0X3BvaW50IHBhdGhfY2hhbmdlX3BvaW50ICcgK1xuICAgICAgJ3BhdGhfZGVsZXRlX3BvaW50IHBhdGhfY2xlYXJfcG9pbnRzIHBhdGhfcmV2ZXJzZSBwYXRoX21pcnJvciAnICtcbiAgICAgICdwYXRoX2ZsaXAgcGF0aF9yb3RhdGUgcGF0aF9yZXNjYWxlIHBhdGhfc2hpZnQgc2NyaXB0X2V4ZWN1dGUgJyArXG4gICAgICAnb2JqZWN0X3NldF9zcHJpdGUgb2JqZWN0X3NldF9zb2xpZCBvYmplY3Rfc2V0X3Zpc2libGUgJyArXG4gICAgICAnb2JqZWN0X3NldF9wZXJzaXN0ZW50IG9iamVjdF9zZXRfbWFzayByb29tX3NldF93aWR0aCByb29tX3NldF9oZWlnaHQgJyArXG4gICAgICAncm9vbV9zZXRfcGVyc2lzdGVudCByb29tX3NldF9iYWNrZ3JvdW5kX2NvbG91ciAnICtcbiAgICAgICdyb29tX3NldF9iYWNrZ3JvdW5kX2NvbG9yIHJvb21fc2V0X3ZpZXcgcm9vbV9zZXRfdmlld3BvcnQgJyArXG4gICAgICAncm9vbV9nZXRfdmlld3BvcnQgcm9vbV9zZXRfdmlld19lbmFibGVkIHJvb21fYWRkIHJvb21fZHVwbGljYXRlICcgK1xuICAgICAgJ3Jvb21fYXNzaWduIHJvb21faW5zdGFuY2VfYWRkIHJvb21faW5zdGFuY2VfY2xlYXIgcm9vbV9nZXRfY2FtZXJhICcgK1xuICAgICAgJ3Jvb21fc2V0X2NhbWVyYSBhc3NldF9nZXRfaW5kZXggYXNzZXRfZ2V0X3R5cGUgJyArXG4gICAgICAnZmlsZV90ZXh0X29wZW5fZnJvbV9zdHJpbmcgZmlsZV90ZXh0X29wZW5fcmVhZCBmaWxlX3RleHRfb3Blbl93cml0ZSAnICtcbiAgICAgICdmaWxlX3RleHRfb3Blbl9hcHBlbmQgZmlsZV90ZXh0X2Nsb3NlIGZpbGVfdGV4dF93cml0ZV9zdHJpbmcgJyArXG4gICAgICAnZmlsZV90ZXh0X3dyaXRlX3JlYWwgZmlsZV90ZXh0X3dyaXRlbG4gZmlsZV90ZXh0X3JlYWRfc3RyaW5nICcgK1xuICAgICAgJ2ZpbGVfdGV4dF9yZWFkX3JlYWwgZmlsZV90ZXh0X3JlYWRsbiBmaWxlX3RleHRfZW9mIGZpbGVfdGV4dF9lb2xuICcgK1xuICAgICAgJ2ZpbGVfZXhpc3RzIGZpbGVfZGVsZXRlIGZpbGVfcmVuYW1lIGZpbGVfY29weSBkaXJlY3RvcnlfZXhpc3RzICcgK1xuICAgICAgJ2RpcmVjdG9yeV9jcmVhdGUgZGlyZWN0b3J5X2Rlc3Ryb3kgZmlsZV9maW5kX2ZpcnN0IGZpbGVfZmluZF9uZXh0ICcgK1xuICAgICAgJ2ZpbGVfZmluZF9jbG9zZSBmaWxlX2F0dHJpYnV0ZXMgZmlsZW5hbWVfbmFtZSBmaWxlbmFtZV9wYXRoICcgK1xuICAgICAgJ2ZpbGVuYW1lX2RpciBmaWxlbmFtZV9kcml2ZSBmaWxlbmFtZV9leHQgZmlsZW5hbWVfY2hhbmdlX2V4dCAnICtcbiAgICAgICdmaWxlX2Jpbl9vcGVuIGZpbGVfYmluX3Jld3JpdGUgZmlsZV9iaW5fY2xvc2UgZmlsZV9iaW5fcG9zaXRpb24gJyArXG4gICAgICAnZmlsZV9iaW5fc2l6ZSBmaWxlX2Jpbl9zZWVrIGZpbGVfYmluX3dyaXRlX2J5dGUgZmlsZV9iaW5fcmVhZF9ieXRlICcgK1xuICAgICAgJ3BhcmFtZXRlcl9jb3VudCBwYXJhbWV0ZXJfc3RyaW5nIGVudmlyb25tZW50X2dldF92YXJpYWJsZSAnICtcbiAgICAgICdpbmlfb3Blbl9mcm9tX3N0cmluZyBpbmlfb3BlbiBpbmlfY2xvc2UgaW5pX3JlYWRfc3RyaW5nICcgK1xuICAgICAgJ2luaV9yZWFkX3JlYWwgaW5pX3dyaXRlX3N0cmluZyBpbmlfd3JpdGVfcmVhbCBpbmlfa2V5X2V4aXN0cyAnICtcbiAgICAgICdpbmlfc2VjdGlvbl9leGlzdHMgaW5pX2tleV9kZWxldGUgaW5pX3NlY3Rpb25fZGVsZXRlICcgK1xuICAgICAgJ2RzX3NldF9wcmVjaXNpb24gZHNfZXhpc3RzIGRzX3N0YWNrX2NyZWF0ZSBkc19zdGFja19kZXN0cm95ICcgK1xuICAgICAgJ2RzX3N0YWNrX2NsZWFyIGRzX3N0YWNrX2NvcHkgZHNfc3RhY2tfc2l6ZSBkc19zdGFja19lbXB0eSAnICtcbiAgICAgICdkc19zdGFja19wdXNoIGRzX3N0YWNrX3BvcCBkc19zdGFja190b3AgZHNfc3RhY2tfd3JpdGUgZHNfc3RhY2tfcmVhZCAnICtcbiAgICAgICdkc19xdWV1ZV9jcmVhdGUgZHNfcXVldWVfZGVzdHJveSBkc19xdWV1ZV9jbGVhciBkc19xdWV1ZV9jb3B5ICcgK1xuICAgICAgJ2RzX3F1ZXVlX3NpemUgZHNfcXVldWVfZW1wdHkgZHNfcXVldWVfZW5xdWV1ZSBkc19xdWV1ZV9kZXF1ZXVlICcgK1xuICAgICAgJ2RzX3F1ZXVlX2hlYWQgZHNfcXVldWVfdGFpbCBkc19xdWV1ZV93cml0ZSBkc19xdWV1ZV9yZWFkICcgK1xuICAgICAgJ2RzX2xpc3RfY3JlYXRlIGRzX2xpc3RfZGVzdHJveSBkc19saXN0X2NsZWFyIGRzX2xpc3RfY29weSAnICtcbiAgICAgICdkc19saXN0X3NpemUgZHNfbGlzdF9lbXB0eSBkc19saXN0X2FkZCBkc19saXN0X2luc2VydCAnICtcbiAgICAgICdkc19saXN0X3JlcGxhY2UgZHNfbGlzdF9kZWxldGUgZHNfbGlzdF9maW5kX2luZGV4IGRzX2xpc3RfZmluZF92YWx1ZSAnICtcbiAgICAgICdkc19saXN0X21hcmtfYXNfbGlzdCBkc19saXN0X21hcmtfYXNfbWFwIGRzX2xpc3Rfc29ydCAnICtcbiAgICAgICdkc19saXN0X3NodWZmbGUgZHNfbGlzdF93cml0ZSBkc19saXN0X3JlYWQgZHNfbGlzdF9zZXQgZHNfbWFwX2NyZWF0ZSAnICtcbiAgICAgICdkc19tYXBfZGVzdHJveSBkc19tYXBfY2xlYXIgZHNfbWFwX2NvcHkgZHNfbWFwX3NpemUgZHNfbWFwX2VtcHR5ICcgK1xuICAgICAgJ2RzX21hcF9hZGQgZHNfbWFwX2FkZF9saXN0IGRzX21hcF9hZGRfbWFwIGRzX21hcF9yZXBsYWNlICcgK1xuICAgICAgJ2RzX21hcF9yZXBsYWNlX21hcCBkc19tYXBfcmVwbGFjZV9saXN0IGRzX21hcF9kZWxldGUgZHNfbWFwX2V4aXN0cyAnICtcbiAgICAgICdkc19tYXBfZmluZF92YWx1ZSBkc19tYXBfZmluZF9wcmV2aW91cyBkc19tYXBfZmluZF9uZXh0ICcgK1xuICAgICAgJ2RzX21hcF9maW5kX2ZpcnN0IGRzX21hcF9maW5kX2xhc3QgZHNfbWFwX3dyaXRlIGRzX21hcF9yZWFkICcgK1xuICAgICAgJ2RzX21hcF9zZWN1cmVfc2F2ZSBkc19tYXBfc2VjdXJlX2xvYWQgZHNfbWFwX3NlY3VyZV9sb2FkX2J1ZmZlciAnICtcbiAgICAgICdkc19tYXBfc2VjdXJlX3NhdmVfYnVmZmVyIGRzX21hcF9zZXQgZHNfcHJpb3JpdHlfY3JlYXRlICcgK1xuICAgICAgJ2RzX3ByaW9yaXR5X2Rlc3Ryb3kgZHNfcHJpb3JpdHlfY2xlYXIgZHNfcHJpb3JpdHlfY29weSAnICtcbiAgICAgICdkc19wcmlvcml0eV9zaXplIGRzX3ByaW9yaXR5X2VtcHR5IGRzX3ByaW9yaXR5X2FkZCAnICtcbiAgICAgICdkc19wcmlvcml0eV9jaGFuZ2VfcHJpb3JpdHkgZHNfcHJpb3JpdHlfZmluZF9wcmlvcml0eSAnICtcbiAgICAgICdkc19wcmlvcml0eV9kZWxldGVfdmFsdWUgZHNfcHJpb3JpdHlfZGVsZXRlX21pbiBkc19wcmlvcml0eV9maW5kX21pbiAnICtcbiAgICAgICdkc19wcmlvcml0eV9kZWxldGVfbWF4IGRzX3ByaW9yaXR5X2ZpbmRfbWF4IGRzX3ByaW9yaXR5X3dyaXRlICcgK1xuICAgICAgJ2RzX3ByaW9yaXR5X3JlYWQgZHNfZ3JpZF9jcmVhdGUgZHNfZ3JpZF9kZXN0cm95IGRzX2dyaWRfY29weSAnICtcbiAgICAgICdkc19ncmlkX3Jlc2l6ZSBkc19ncmlkX3dpZHRoIGRzX2dyaWRfaGVpZ2h0IGRzX2dyaWRfY2xlYXIgJyArXG4gICAgICAnZHNfZ3JpZF9zZXQgZHNfZ3JpZF9hZGQgZHNfZ3JpZF9tdWx0aXBseSBkc19ncmlkX3NldF9yZWdpb24gJyArXG4gICAgICAnZHNfZ3JpZF9hZGRfcmVnaW9uIGRzX2dyaWRfbXVsdGlwbHlfcmVnaW9uIGRzX2dyaWRfc2V0X2Rpc2sgJyArXG4gICAgICAnZHNfZ3JpZF9hZGRfZGlzayBkc19ncmlkX211bHRpcGx5X2Rpc2sgZHNfZ3JpZF9zZXRfZ3JpZF9yZWdpb24gJyArXG4gICAgICAnZHNfZ3JpZF9hZGRfZ3JpZF9yZWdpb24gZHNfZ3JpZF9tdWx0aXBseV9ncmlkX3JlZ2lvbiBkc19ncmlkX2dldCAnICtcbiAgICAgICdkc19ncmlkX2dldF9zdW0gZHNfZ3JpZF9nZXRfbWF4IGRzX2dyaWRfZ2V0X21pbiBkc19ncmlkX2dldF9tZWFuICcgK1xuICAgICAgJ2RzX2dyaWRfZ2V0X2Rpc2tfc3VtIGRzX2dyaWRfZ2V0X2Rpc2tfbWluIGRzX2dyaWRfZ2V0X2Rpc2tfbWF4ICcgK1xuICAgICAgJ2RzX2dyaWRfZ2V0X2Rpc2tfbWVhbiBkc19ncmlkX3ZhbHVlX2V4aXN0cyBkc19ncmlkX3ZhbHVlX3ggJyArXG4gICAgICAnZHNfZ3JpZF92YWx1ZV95IGRzX2dyaWRfdmFsdWVfZGlza19leGlzdHMgZHNfZ3JpZF92YWx1ZV9kaXNrX3ggJyArXG4gICAgICAnZHNfZ3JpZF92YWx1ZV9kaXNrX3kgZHNfZ3JpZF9zaHVmZmxlIGRzX2dyaWRfd3JpdGUgZHNfZ3JpZF9yZWFkICcgK1xuICAgICAgJ2RzX2dyaWRfc29ydCBkc19ncmlkX3NldCBkc19ncmlkX2dldCBlZmZlY3RfY3JlYXRlX2JlbG93ICcgK1xuICAgICAgJ2VmZmVjdF9jcmVhdGVfYWJvdmUgZWZmZWN0X2NsZWFyIHBhcnRfdHlwZV9jcmVhdGUgcGFydF90eXBlX2Rlc3Ryb3kgJyArXG4gICAgICAncGFydF90eXBlX2V4aXN0cyBwYXJ0X3R5cGVfY2xlYXIgcGFydF90eXBlX3NoYXBlIHBhcnRfdHlwZV9zcHJpdGUgJyArXG4gICAgICAncGFydF90eXBlX3NpemUgcGFydF90eXBlX3NjYWxlIHBhcnRfdHlwZV9vcmllbnRhdGlvbiBwYXJ0X3R5cGVfbGlmZSAnICtcbiAgICAgICdwYXJ0X3R5cGVfc3RlcCBwYXJ0X3R5cGVfZGVhdGggcGFydF90eXBlX3NwZWVkIHBhcnRfdHlwZV9kaXJlY3Rpb24gJyArXG4gICAgICAncGFydF90eXBlX2dyYXZpdHkgcGFydF90eXBlX2NvbG91cjEgcGFydF90eXBlX2NvbG91cjIgJyArXG4gICAgICAncGFydF90eXBlX2NvbG91cjMgcGFydF90eXBlX2NvbG91cl9taXggcGFydF90eXBlX2NvbG91cl9yZ2IgJyArXG4gICAgICAncGFydF90eXBlX2NvbG91cl9oc3YgcGFydF90eXBlX2NvbG9yMSBwYXJ0X3R5cGVfY29sb3IyICcgK1xuICAgICAgJ3BhcnRfdHlwZV9jb2xvcjMgcGFydF90eXBlX2NvbG9yX21peCBwYXJ0X3R5cGVfY29sb3JfcmdiICcgK1xuICAgICAgJ3BhcnRfdHlwZV9jb2xvcl9oc3YgcGFydF90eXBlX2FscGhhMSBwYXJ0X3R5cGVfYWxwaGEyICcgK1xuICAgICAgJ3BhcnRfdHlwZV9hbHBoYTMgcGFydF90eXBlX2JsZW5kIHBhcnRfc3lzdGVtX2NyZWF0ZSAnICtcbiAgICAgICdwYXJ0X3N5c3RlbV9jcmVhdGVfbGF5ZXIgcGFydF9zeXN0ZW1fZGVzdHJveSBwYXJ0X3N5c3RlbV9leGlzdHMgJyArXG4gICAgICAncGFydF9zeXN0ZW1fY2xlYXIgcGFydF9zeXN0ZW1fZHJhd19vcmRlciBwYXJ0X3N5c3RlbV9kZXB0aCAnICtcbiAgICAgICdwYXJ0X3N5c3RlbV9wb3NpdGlvbiBwYXJ0X3N5c3RlbV9hdXRvbWF0aWNfdXBkYXRlICcgK1xuICAgICAgJ3BhcnRfc3lzdGVtX2F1dG9tYXRpY19kcmF3IHBhcnRfc3lzdGVtX3VwZGF0ZSBwYXJ0X3N5c3RlbV9kcmF3aXQgJyArXG4gICAgICAncGFydF9zeXN0ZW1fZ2V0X2xheWVyIHBhcnRfc3lzdGVtX2xheWVyIHBhcnRfcGFydGljbGVzX2NyZWF0ZSAnICtcbiAgICAgICdwYXJ0X3BhcnRpY2xlc19jcmVhdGVfY29sb3VyIHBhcnRfcGFydGljbGVzX2NyZWF0ZV9jb2xvciAnICtcbiAgICAgICdwYXJ0X3BhcnRpY2xlc19jbGVhciBwYXJ0X3BhcnRpY2xlc19jb3VudCBwYXJ0X2VtaXR0ZXJfY3JlYXRlICcgK1xuICAgICAgJ3BhcnRfZW1pdHRlcl9kZXN0cm95IHBhcnRfZW1pdHRlcl9kZXN0cm95X2FsbCBwYXJ0X2VtaXR0ZXJfZXhpc3RzICcgK1xuICAgICAgJ3BhcnRfZW1pdHRlcl9jbGVhciBwYXJ0X2VtaXR0ZXJfcmVnaW9uIHBhcnRfZW1pdHRlcl9idXJzdCAnICtcbiAgICAgICdwYXJ0X2VtaXR0ZXJfc3RyZWFtIGV4dGVybmFsX2NhbGwgZXh0ZXJuYWxfZGVmaW5lIGV4dGVybmFsX2ZyZWUgJyArXG4gICAgICAnd2luZG93X2hhbmRsZSB3aW5kb3dfZGV2aWNlIG1hdHJpeF9nZXQgbWF0cml4X3NldCAnICtcbiAgICAgICdtYXRyaXhfYnVpbGRfaWRlbnRpdHkgbWF0cml4X2J1aWxkIG1hdHJpeF9idWlsZF9sb29rYXQgJyArXG4gICAgICAnbWF0cml4X2J1aWxkX3Byb2plY3Rpb25fb3J0aG8gbWF0cml4X2J1aWxkX3Byb2plY3Rpb25fcGVyc3BlY3RpdmUgJyArXG4gICAgICAnbWF0cml4X2J1aWxkX3Byb2plY3Rpb25fcGVyc3BlY3RpdmVfZm92IG1hdHJpeF9tdWx0aXBseSAnICtcbiAgICAgICdtYXRyaXhfdHJhbnNmb3JtX3ZlcnRleCBtYXRyaXhfc3RhY2tfcHVzaCBtYXRyaXhfc3RhY2tfcG9wICcgK1xuICAgICAgJ21hdHJpeF9zdGFja19tdWx0aXBseSBtYXRyaXhfc3RhY2tfc2V0IG1hdHJpeF9zdGFja19jbGVhciAnICtcbiAgICAgICdtYXRyaXhfc3RhY2tfdG9wIG1hdHJpeF9zdGFja19pc19lbXB0eSBicm93c2VyX2lucHV0X2NhcHR1cmUgJyArXG4gICAgICAnb3NfZ2V0X2NvbmZpZyBvc19nZXRfaW5mbyBvc19nZXRfbGFuZ3VhZ2Ugb3NfZ2V0X3JlZ2lvbiAnICtcbiAgICAgICdvc19sb2NrX29yaWVudGF0aW9uIGRpc3BsYXlfZ2V0X2RwaV94IGRpc3BsYXlfZ2V0X2RwaV95ICcgK1xuICAgICAgJ2Rpc3BsYXlfc2V0X2d1aV9zaXplIGRpc3BsYXlfc2V0X2d1aV9tYXhpbWlzZSAnICtcbiAgICAgICdkaXNwbGF5X3NldF9ndWlfbWF4aW1pemUgZGV2aWNlX21vdXNlX2RiY2xpY2tfZW5hYmxlICcgK1xuICAgICAgJ2Rpc3BsYXlfc2V0X3RpbWluZ19tZXRob2QgZGlzcGxheV9nZXRfdGltaW5nX21ldGhvZCAnICtcbiAgICAgICdkaXNwbGF5X3NldF9zbGVlcF9tYXJnaW4gZGlzcGxheV9nZXRfc2xlZXBfbWFyZ2luIHZpcnR1YWxfa2V5X2FkZCAnICtcbiAgICAgICd2aXJ0dWFsX2tleV9oaWRlIHZpcnR1YWxfa2V5X2RlbGV0ZSB2aXJ0dWFsX2tleV9zaG93ICcgK1xuICAgICAgJ2RyYXdfZW5hYmxlX2RyYXdldmVudCBkcmF3X2VuYWJsZV9zd2ZfYWEgZHJhd19zZXRfc3dmX2FhX2xldmVsICcgK1xuICAgICAgJ2RyYXdfZ2V0X3N3Zl9hYV9sZXZlbCBkcmF3X3RleHR1cmVfZmx1c2ggZHJhd19mbHVzaCAnICtcbiAgICAgICdncHVfc2V0X2JsZW5kZW5hYmxlIGdwdV9zZXRfenRlc3RlbmFibGUgZ3B1X3NldF96ZnVuYyAnICtcbiAgICAgICdncHVfc2V0X3p3cml0ZWVuYWJsZSBncHVfc2V0X2xpZ2h0aW5nZW5hYmxlIGdwdV9zZXRfZm9nICcgK1xuICAgICAgJ2dwdV9zZXRfY3VsbG1vZGUgZ3B1X3NldF9ibGVuZG1vZGUgZ3B1X3NldF9ibGVuZG1vZGVfZXh0ICcgK1xuICAgICAgJ2dwdV9zZXRfYmxlbmRtb2RlX2V4dF9zZXBhbHBoYSBncHVfc2V0X2NvbG9yd3JpdGVlbmFibGUgJyArXG4gICAgICAnZ3B1X3NldF9jb2xvdXJ3cml0ZWVuYWJsZSBncHVfc2V0X2FscGhhdGVzdGVuYWJsZSAnICtcbiAgICAgICdncHVfc2V0X2FscGhhdGVzdHJlZiBncHVfc2V0X2FscGhhdGVzdGZ1bmMgZ3B1X3NldF90ZXhmaWx0ZXIgJyArXG4gICAgICAnZ3B1X3NldF90ZXhmaWx0ZXJfZXh0IGdwdV9zZXRfdGV4cmVwZWF0IGdwdV9zZXRfdGV4cmVwZWF0X2V4dCAnICtcbiAgICAgICdncHVfc2V0X3RleF9maWx0ZXIgZ3B1X3NldF90ZXhfZmlsdGVyX2V4dCBncHVfc2V0X3RleF9yZXBlYXQgJyArXG4gICAgICAnZ3B1X3NldF90ZXhfcmVwZWF0X2V4dCBncHVfc2V0X3RleF9taXBfZmlsdGVyICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21pcF9maWx0ZXJfZXh0IGdwdV9zZXRfdGV4X21pcF9iaWFzICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21pcF9iaWFzX2V4dCBncHVfc2V0X3RleF9taW5fbWlwIGdwdV9zZXRfdGV4X21pbl9taXBfZXh0ICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21heF9taXAgZ3B1X3NldF90ZXhfbWF4X21pcF9leHQgZ3B1X3NldF90ZXhfbWF4X2FuaXNvICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21heF9hbmlzb19leHQgZ3B1X3NldF90ZXhfbWlwX2VuYWJsZSAnICtcbiAgICAgICdncHVfc2V0X3RleF9taXBfZW5hYmxlX2V4dCBncHVfZ2V0X2JsZW5kZW5hYmxlIGdwdV9nZXRfenRlc3RlbmFibGUgJyArXG4gICAgICAnZ3B1X2dldF96ZnVuYyBncHVfZ2V0X3p3cml0ZWVuYWJsZSBncHVfZ2V0X2xpZ2h0aW5nZW5hYmxlICcgK1xuICAgICAgJ2dwdV9nZXRfZm9nIGdwdV9nZXRfY3VsbG1vZGUgZ3B1X2dldF9ibGVuZG1vZGUgZ3B1X2dldF9ibGVuZG1vZGVfZXh0ICcgK1xuICAgICAgJ2dwdV9nZXRfYmxlbmRtb2RlX2V4dF9zZXBhbHBoYSBncHVfZ2V0X2JsZW5kbW9kZV9zcmMgJyArXG4gICAgICAnZ3B1X2dldF9ibGVuZG1vZGVfZGVzdCBncHVfZ2V0X2JsZW5kbW9kZV9zcmNhbHBoYSAnICtcbiAgICAgICdncHVfZ2V0X2JsZW5kbW9kZV9kZXN0YWxwaGEgZ3B1X2dldF9jb2xvcndyaXRlZW5hYmxlICcgK1xuICAgICAgJ2dwdV9nZXRfY29sb3Vyd3JpdGVlbmFibGUgZ3B1X2dldF9hbHBoYXRlc3RlbmFibGUgJyArXG4gICAgICAnZ3B1X2dldF9hbHBoYXRlc3RyZWYgZ3B1X2dldF9hbHBoYXRlc3RmdW5jIGdwdV9nZXRfdGV4ZmlsdGVyICcgK1xuICAgICAgJ2dwdV9nZXRfdGV4ZmlsdGVyX2V4dCBncHVfZ2V0X3RleHJlcGVhdCBncHVfZ2V0X3RleHJlcGVhdF9leHQgJyArXG4gICAgICAnZ3B1X2dldF90ZXhfZmlsdGVyIGdwdV9nZXRfdGV4X2ZpbHRlcl9leHQgZ3B1X2dldF90ZXhfcmVwZWF0ICcgK1xuICAgICAgJ2dwdV9nZXRfdGV4X3JlcGVhdF9leHQgZ3B1X2dldF90ZXhfbWlwX2ZpbHRlciAnICtcbiAgICAgICdncHVfZ2V0X3RleF9taXBfZmlsdGVyX2V4dCBncHVfZ2V0X3RleF9taXBfYmlhcyAnICtcbiAgICAgICdncHVfZ2V0X3RleF9taXBfYmlhc19leHQgZ3B1X2dldF90ZXhfbWluX21pcCBncHVfZ2V0X3RleF9taW5fbWlwX2V4dCAnICtcbiAgICAgICdncHVfZ2V0X3RleF9tYXhfbWlwIGdwdV9nZXRfdGV4X21heF9taXBfZXh0IGdwdV9nZXRfdGV4X21heF9hbmlzbyAnICtcbiAgICAgICdncHVfZ2V0X3RleF9tYXhfYW5pc29fZXh0IGdwdV9nZXRfdGV4X21pcF9lbmFibGUgJyArXG4gICAgICAnZ3B1X2dldF90ZXhfbWlwX2VuYWJsZV9leHQgZ3B1X3B1c2hfc3RhdGUgZ3B1X3BvcF9zdGF0ZSAnICtcbiAgICAgICdncHVfZ2V0X3N0YXRlIGdwdV9zZXRfc3RhdGUgZHJhd19saWdodF9kZWZpbmVfYW1iaWVudCAnICtcbiAgICAgICdkcmF3X2xpZ2h0X2RlZmluZV9kaXJlY3Rpb24gZHJhd19saWdodF9kZWZpbmVfcG9pbnQgJyArXG4gICAgICAnZHJhd19saWdodF9lbmFibGUgZHJhd19zZXRfbGlnaHRpbmcgZHJhd19saWdodF9nZXRfYW1iaWVudCAnICtcbiAgICAgICdkcmF3X2xpZ2h0X2dldCBkcmF3X2dldF9saWdodGluZyBzaG9wX2xlYXZlX3JhdGluZyB1cmxfZ2V0X2RvbWFpbiAnICtcbiAgICAgICd1cmxfb3BlbiB1cmxfb3Blbl9leHQgdXJsX29wZW5fZnVsbCBnZXRfdGltZXIgYWNoaWV2ZW1lbnRfbG9naW4gJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfbG9nb3V0IGFjaGlldmVtZW50X3Bvc3QgYWNoaWV2ZW1lbnRfaW5jcmVtZW50ICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3Bvc3Rfc2NvcmUgYWNoaWV2ZW1lbnRfYXZhaWxhYmxlICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3Nob3dfYWNoaWV2ZW1lbnRzIGFjaGlldmVtZW50X3Nob3dfbGVhZGVyYm9hcmRzICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2xvYWRfZnJpZW5kcyBhY2hpZXZlbWVudF9sb2FkX2xlYWRlcmJvYXJkICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3NlbmRfY2hhbGxlbmdlIGFjaGlldmVtZW50X2xvYWRfcHJvZ3Jlc3MgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfcmVzZXQgYWNoaWV2ZW1lbnRfbG9naW5fc3RhdHVzIGFjaGlldmVtZW50X2dldF9waWMgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfc2hvd19jaGFsbGVuZ2Vfbm90aWZpY2F0aW9ucyBhY2hpZXZlbWVudF9nZXRfY2hhbGxlbmdlcyAnICtcbiAgICAgICdhY2hpZXZlbWVudF9ldmVudCBhY2hpZXZlbWVudF9zaG93IGFjaGlldmVtZW50X2dldF9pbmZvICcgK1xuICAgICAgJ2Nsb3VkX2ZpbGVfc2F2ZSBjbG91ZF9zdHJpbmdfc2F2ZSBjbG91ZF9zeW5jaHJvbmlzZSBhZHNfZW5hYmxlICcgK1xuICAgICAgJ2Fkc19kaXNhYmxlIGFkc19zZXR1cCBhZHNfZW5nYWdlbWVudF9sYXVuY2ggYWRzX2VuZ2FnZW1lbnRfYXZhaWxhYmxlICcgK1xuICAgICAgJ2Fkc19lbmdhZ2VtZW50X2FjdGl2ZSBhZHNfZXZlbnQgYWRzX2V2ZW50X3ByZWxvYWQgJyArXG4gICAgICAnYWRzX3NldF9yZXdhcmRfY2FsbGJhY2sgYWRzX2dldF9kaXNwbGF5X2hlaWdodCBhZHNfZ2V0X2Rpc3BsYXlfd2lkdGggJyArXG4gICAgICAnYWRzX21vdmUgYWRzX2ludGVyc3RpdGlhbF9hdmFpbGFibGUgYWRzX2ludGVyc3RpdGlhbF9kaXNwbGF5ICcgK1xuICAgICAgJ2RldmljZV9nZXRfdGlsdF94IGRldmljZV9nZXRfdGlsdF95IGRldmljZV9nZXRfdGlsdF96ICcgK1xuICAgICAgJ2RldmljZV9pc19rZXlwYWRfb3BlbiBkZXZpY2VfbW91c2VfY2hlY2tfYnV0dG9uICcgK1xuICAgICAgJ2RldmljZV9tb3VzZV9jaGVja19idXR0b25fcHJlc3NlZCBkZXZpY2VfbW91c2VfY2hlY2tfYnV0dG9uX3JlbGVhc2VkICcgK1xuICAgICAgJ2RldmljZV9tb3VzZV94IGRldmljZV9tb3VzZV95IGRldmljZV9tb3VzZV9yYXdfeCBkZXZpY2VfbW91c2VfcmF3X3kgJyArXG4gICAgICAnZGV2aWNlX21vdXNlX3hfdG9fZ3VpIGRldmljZV9tb3VzZV95X3RvX2d1aSBpYXBfYWN0aXZhdGUgaWFwX3N0YXR1cyAnICtcbiAgICAgICdpYXBfZW51bWVyYXRlX3Byb2R1Y3RzIGlhcF9yZXN0b3JlX2FsbCBpYXBfYWNxdWlyZSBpYXBfY29uc3VtZSAnICtcbiAgICAgICdpYXBfcHJvZHVjdF9kZXRhaWxzIGlhcF9wdXJjaGFzZV9kZXRhaWxzIGZhY2Vib29rX2luaXQgJyArXG4gICAgICAnZmFjZWJvb2tfbG9naW4gZmFjZWJvb2tfc3RhdHVzIGZhY2Vib29rX2dyYXBoX3JlcXVlc3QgJyArXG4gICAgICAnZmFjZWJvb2tfZGlhbG9nIGZhY2Vib29rX2xvZ291dCBmYWNlYm9va19sYXVuY2hfb2ZmZXJ3YWxsICcgK1xuICAgICAgJ2ZhY2Vib29rX3Bvc3RfbWVzc2FnZSBmYWNlYm9va19zZW5kX2ludml0ZSBmYWNlYm9va191c2VyX2lkICcgK1xuICAgICAgJ2ZhY2Vib29rX2FjY2Vzc3Rva2VuIGZhY2Vib29rX2NoZWNrX3Blcm1pc3Npb24gJyArXG4gICAgICAnZmFjZWJvb2tfcmVxdWVzdF9yZWFkX3Blcm1pc3Npb25zICcgK1xuICAgICAgJ2ZhY2Vib29rX3JlcXVlc3RfcHVibGlzaF9wZXJtaXNzaW9ucyBnYW1lcGFkX2lzX3N1cHBvcnRlZCAnICtcbiAgICAgICdnYW1lcGFkX2dldF9kZXZpY2VfY291bnQgZ2FtZXBhZF9pc19jb25uZWN0ZWQgJyArXG4gICAgICAnZ2FtZXBhZF9nZXRfZGVzY3JpcHRpb24gZ2FtZXBhZF9nZXRfYnV0dG9uX3RocmVzaG9sZCAnICtcbiAgICAgICdnYW1lcGFkX3NldF9idXR0b25fdGhyZXNob2xkIGdhbWVwYWRfZ2V0X2F4aXNfZGVhZHpvbmUgJyArXG4gICAgICAnZ2FtZXBhZF9zZXRfYXhpc19kZWFkem9uZSBnYW1lcGFkX2J1dHRvbl9jb3VudCBnYW1lcGFkX2J1dHRvbl9jaGVjayAnICtcbiAgICAgICdnYW1lcGFkX2J1dHRvbl9jaGVja19wcmVzc2VkIGdhbWVwYWRfYnV0dG9uX2NoZWNrX3JlbGVhc2VkICcgK1xuICAgICAgJ2dhbWVwYWRfYnV0dG9uX3ZhbHVlIGdhbWVwYWRfYXhpc19jb3VudCBnYW1lcGFkX2F4aXNfdmFsdWUgJyArXG4gICAgICAnZ2FtZXBhZF9zZXRfdmlicmF0aW9uIGdhbWVwYWRfc2V0X2NvbG91ciBnYW1lcGFkX3NldF9jb2xvciAnICtcbiAgICAgICdvc19pc19wYXVzZWQgd2luZG93X2hhc19mb2N1cyBjb2RlX2lzX2NvbXBpbGVkIGh0dHBfZ2V0ICcgK1xuICAgICAgJ2h0dHBfZ2V0X2ZpbGUgaHR0cF9wb3N0X3N0cmluZyBodHRwX3JlcXVlc3QganNvbl9lbmNvZGUganNvbl9kZWNvZGUgJyArXG4gICAgICAnemlwX3VuemlwIGxvYWRfY3N2IGJhc2U2NF9lbmNvZGUgYmFzZTY0X2RlY29kZSBtZDVfc3RyaW5nX3VuaWNvZGUgJyArXG4gICAgICAnbWQ1X3N0cmluZ191dGY4IG1kNV9maWxlIG9zX2lzX25ldHdvcmtfY29ubmVjdGVkIHNoYTFfc3RyaW5nX3VuaWNvZGUgJyArXG4gICAgICAnc2hhMV9zdHJpbmdfdXRmOCBzaGExX2ZpbGUgb3NfcG93ZXJzYXZlX2VuYWJsZSBhbmFseXRpY3NfZXZlbnQgJyArXG4gICAgICAnYW5hbHl0aWNzX2V2ZW50X2V4dCB3aW44X2xpdmV0aWxlX3RpbGVfbm90aWZpY2F0aW9uICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfdGlsZV9jbGVhciB3aW44X2xpdmV0aWxlX2JhZGdlX25vdGlmaWNhdGlvbiAnICtcbiAgICAgICd3aW44X2xpdmV0aWxlX2JhZGdlX2NsZWFyIHdpbjhfbGl2ZXRpbGVfcXVldWVfZW5hYmxlICcgK1xuICAgICAgJ3dpbjhfc2Vjb25kYXJ5dGlsZV9waW4gd2luOF9zZWNvbmRhcnl0aWxlX2JhZGdlX25vdGlmaWNhdGlvbiAnICtcbiAgICAgICd3aW44X3NlY29uZGFyeXRpbGVfZGVsZXRlIHdpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX2JlZ2luICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX3NlY29uZGFyeV9iZWdpbiAnICtcbiAgICAgICd3aW44X2xpdmV0aWxlX25vdGlmaWNhdGlvbl9leHBpcnkgd2luOF9saXZldGlsZV9ub3RpZmljYXRpb25fdGFnICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX3RleHRfYWRkICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX2ltYWdlX2FkZCB3aW44X2xpdmV0aWxlX25vdGlmaWNhdGlvbl9lbmQgJyArXG4gICAgICAnd2luOF9hcHBiYXJfZW5hYmxlIHdpbjhfYXBwYmFyX2FkZF9lbGVtZW50ICcgK1xuICAgICAgJ3dpbjhfYXBwYmFyX3JlbW92ZV9lbGVtZW50IHdpbjhfc2V0dGluZ3NjaGFybV9hZGRfZW50cnkgJyArXG4gICAgICAnd2luOF9zZXR0aW5nc2NoYXJtX2FkZF9odG1sX2VudHJ5IHdpbjhfc2V0dGluZ3NjaGFybV9hZGRfeGFtbF9lbnRyeSAnICtcbiAgICAgICd3aW44X3NldHRpbmdzY2hhcm1fc2V0X3hhbWxfcHJvcGVydHkgJyArXG4gICAgICAnd2luOF9zZXR0aW5nc2NoYXJtX2dldF94YW1sX3Byb3BlcnR5IHdpbjhfc2V0dGluZ3NjaGFybV9yZW1vdmVfZW50cnkgJyArXG4gICAgICAnd2luOF9zaGFyZV9pbWFnZSB3aW44X3NoYXJlX3NjcmVlbnNob3Qgd2luOF9zaGFyZV9maWxlICcgK1xuICAgICAgJ3dpbjhfc2hhcmVfdXJsIHdpbjhfc2hhcmVfdGV4dCB3aW44X3NlYXJjaF9lbmFibGUgJyArXG4gICAgICAnd2luOF9zZWFyY2hfZGlzYWJsZSB3aW44X3NlYXJjaF9hZGRfc3VnZ2VzdGlvbnMgJyArXG4gICAgICAnd2luOF9kZXZpY2VfdG91Y2hzY3JlZW5fYXZhaWxhYmxlIHdpbjhfbGljZW5zZV9pbml0aWFsaXplX3NhbmRib3ggJyArXG4gICAgICAnd2luOF9saWNlbnNlX3RyaWFsX3ZlcnNpb24gd2lucGhvbmVfbGljZW5zZV90cmlhbF92ZXJzaW9uICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfdGl0bGUgd2lucGhvbmVfdGlsZV9jb3VudCB3aW5waG9uZV90aWxlX2JhY2tfdGl0bGUgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9iYWNrX2NvbnRlbnQgd2lucGhvbmVfdGlsZV9iYWNrX2NvbnRlbnRfd2lkZSAnICtcbiAgICAgICd3aW5waG9uZV90aWxlX2Zyb250X2ltYWdlIHdpbnBob25lX3RpbGVfZnJvbnRfaW1hZ2Vfc21hbGwgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9mcm9udF9pbWFnZV93aWRlIHdpbnBob25lX3RpbGVfYmFja19pbWFnZSAnICtcbiAgICAgICd3aW5waG9uZV90aWxlX2JhY2tfaW1hZ2Vfd2lkZSB3aW5waG9uZV90aWxlX2JhY2tncm91bmRfY29sb3VyICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfYmFja2dyb3VuZF9jb2xvciB3aW5waG9uZV90aWxlX2ljb25faW1hZ2UgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9zbWFsbF9pY29uX2ltYWdlIHdpbnBob25lX3RpbGVfd2lkZV9jb250ZW50ICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfY3ljbGVfaW1hZ2VzIHdpbnBob25lX3RpbGVfc21hbGxfYmFja2dyb3VuZF9pbWFnZSAnICtcbiAgICAgICdwaHlzaWNzX3dvcmxkX2NyZWF0ZSBwaHlzaWNzX3dvcmxkX2dyYXZpdHkgJyArXG4gICAgICAncGh5c2ljc193b3JsZF91cGRhdGVfc3BlZWQgcGh5c2ljc193b3JsZF91cGRhdGVfaXRlcmF0aW9ucyAnICtcbiAgICAgICdwaHlzaWNzX3dvcmxkX2RyYXdfZGVidWcgcGh5c2ljc19wYXVzZV9lbmFibGUgcGh5c2ljc19maXh0dXJlX2NyZWF0ZSAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfc2V0X2tpbmVtYXRpYyBwaHlzaWNzX2ZpeHR1cmVfc2V0X2RlbnNpdHkgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9hd2FrZSBwaHlzaWNzX2ZpeHR1cmVfc2V0X3Jlc3RpdHV0aW9uICcgK1xuICAgICAgJ3BoeXNpY3NfZml4dHVyZV9zZXRfZnJpY3Rpb24gcGh5c2ljc19maXh0dXJlX3NldF9jb2xsaXNpb25fZ3JvdXAgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9zZW5zb3IgcGh5c2ljc19maXh0dXJlX3NldF9saW5lYXJfZGFtcGluZyAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfc2V0X2FuZ3VsYXJfZGFtcGluZyBwaHlzaWNzX2ZpeHR1cmVfc2V0X2NpcmNsZV9zaGFwZSAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfc2V0X2JveF9zaGFwZSBwaHlzaWNzX2ZpeHR1cmVfc2V0X2VkZ2Vfc2hhcGUgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9wb2x5Z29uX3NoYXBlIHBoeXNpY3NfZml4dHVyZV9zZXRfY2hhaW5fc2hhcGUgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX2FkZF9wb2ludCBwaHlzaWNzX2ZpeHR1cmVfYmluZCAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfYmluZF9leHQgcGh5c2ljc19maXh0dXJlX2RlbGV0ZSBwaHlzaWNzX2FwcGx5X2ZvcmNlICcgK1xuICAgICAgJ3BoeXNpY3NfYXBwbHlfaW1wdWxzZSBwaHlzaWNzX2FwcGx5X2FuZ3VsYXJfaW1wdWxzZSAnICtcbiAgICAgICdwaHlzaWNzX2FwcGx5X2xvY2FsX2ZvcmNlIHBoeXNpY3NfYXBwbHlfbG9jYWxfaW1wdWxzZSAnICtcbiAgICAgICdwaHlzaWNzX2FwcGx5X3RvcnF1ZSBwaHlzaWNzX21hc3NfcHJvcGVydGllcyBwaHlzaWNzX2RyYXdfZGVidWcgJyArXG4gICAgICAncGh5c2ljc190ZXN0X292ZXJsYXAgcGh5c2ljc19yZW1vdmVfZml4dHVyZSBwaHlzaWNzX3NldF9mcmljdGlvbiAnICtcbiAgICAgICdwaHlzaWNzX3NldF9kZW5zaXR5IHBoeXNpY3Nfc2V0X3Jlc3RpdHV0aW9uIHBoeXNpY3NfZ2V0X2ZyaWN0aW9uICcgK1xuICAgICAgJ3BoeXNpY3NfZ2V0X2RlbnNpdHkgcGh5c2ljc19nZXRfcmVzdGl0dXRpb24gJyArXG4gICAgICAncGh5c2ljc19qb2ludF9kaXN0YW5jZV9jcmVhdGUgcGh5c2ljc19qb2ludF9yb3BlX2NyZWF0ZSAnICtcbiAgICAgICdwaHlzaWNzX2pvaW50X3Jldm9sdXRlX2NyZWF0ZSBwaHlzaWNzX2pvaW50X3ByaXNtYXRpY19jcmVhdGUgJyArXG4gICAgICAncGh5c2ljc19qb2ludF9wdWxsZXlfY3JlYXRlIHBoeXNpY3Nfam9pbnRfd2hlZWxfY3JlYXRlICcgK1xuICAgICAgJ3BoeXNpY3Nfam9pbnRfd2VsZF9jcmVhdGUgcGh5c2ljc19qb2ludF9mcmljdGlvbl9jcmVhdGUgJyArXG4gICAgICAncGh5c2ljc19qb2ludF9nZWFyX2NyZWF0ZSBwaHlzaWNzX2pvaW50X2VuYWJsZV9tb3RvciAnICtcbiAgICAgICdwaHlzaWNzX2pvaW50X2dldF92YWx1ZSBwaHlzaWNzX2pvaW50X3NldF92YWx1ZSBwaHlzaWNzX2pvaW50X2RlbGV0ZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2NyZWF0ZSBwaHlzaWNzX3BhcnRpY2xlX2RlbGV0ZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2RlbGV0ZV9yZWdpb25fY2lyY2xlICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZGVsZXRlX3JlZ2lvbl9ib3ggJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9kZWxldGVfcmVnaW9uX3BvbHkgcGh5c2ljc19wYXJ0aWNsZV9zZXRfZmxhZ3MgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9zZXRfY2F0ZWdvcnlfZmxhZ3MgcGh5c2ljc19wYXJ0aWNsZV9kcmF3ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZHJhd19leHQgcGh5c2ljc19wYXJ0aWNsZV9jb3VudCAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dldF9kYXRhIHBoeXNpY3NfcGFydGljbGVfZ2V0X2RhdGFfcGFydGljbGUgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9iZWdpbiBwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2NpcmNsZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2JveCBwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX3BvbHlnb24gJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9hZGRfcG9pbnQgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9lbmQgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9qb2luIHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZGVsZXRlICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ3JvdXBfY291bnQgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfZGF0YSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF9tYXNzIHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X2luZXJ0aWEgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfY2VudHJlX3ggJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfY2VudHJlX3kgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfdmVsX3ggJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfdmVsX3kgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfYW5nX3ZlbCAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF94IHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X3kgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfYW5nbGUgcGh5c2ljc19wYXJ0aWNsZV9zZXRfZ3JvdXBfZmxhZ3MgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9nZXRfZ3JvdXBfZmxhZ3MgcGh5c2ljc19wYXJ0aWNsZV9nZXRfbWF4X2NvdW50ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ2V0X3JhZGl1cyBwaHlzaWNzX3BhcnRpY2xlX2dldF9kZW5zaXR5ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ2V0X2RhbXBpbmcgcGh5c2ljc19wYXJ0aWNsZV9nZXRfZ3Jhdml0eV9zY2FsZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX3NldF9tYXhfY291bnQgcGh5c2ljc19wYXJ0aWNsZV9zZXRfcmFkaXVzICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfc2V0X2RlbnNpdHkgcGh5c2ljc19wYXJ0aWNsZV9zZXRfZGFtcGluZyAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX3NldF9ncmF2aXR5X3NjYWxlIG5ldHdvcmtfY3JlYXRlX3NvY2tldCAnICtcbiAgICAgICduZXR3b3JrX2NyZWF0ZV9zb2NrZXRfZXh0IG5ldHdvcmtfY3JlYXRlX3NlcnZlciAnICtcbiAgICAgICduZXR3b3JrX2NyZWF0ZV9zZXJ2ZXJfcmF3IG5ldHdvcmtfY29ubmVjdCBuZXR3b3JrX2Nvbm5lY3RfcmF3ICcgK1xuICAgICAgJ25ldHdvcmtfc2VuZF9wYWNrZXQgbmV0d29ya19zZW5kX3JhdyBuZXR3b3JrX3NlbmRfYnJvYWRjYXN0ICcgK1xuICAgICAgJ25ldHdvcmtfc2VuZF91ZHAgbmV0d29ya19zZW5kX3VkcF9yYXcgbmV0d29ya19zZXRfdGltZW91dCAnICtcbiAgICAgICduZXR3b3JrX3NldF9jb25maWcgbmV0d29ya19yZXNvbHZlIG5ldHdvcmtfZGVzdHJveSBidWZmZXJfY3JlYXRlICcgK1xuICAgICAgJ2J1ZmZlcl93cml0ZSBidWZmZXJfcmVhZCBidWZmZXJfc2VlayBidWZmZXJfZ2V0X3N1cmZhY2UgJyArXG4gICAgICAnYnVmZmVyX3NldF9zdXJmYWNlIGJ1ZmZlcl9kZWxldGUgYnVmZmVyX2V4aXN0cyBidWZmZXJfZ2V0X3R5cGUgJyArXG4gICAgICAnYnVmZmVyX2dldF9hbGlnbm1lbnQgYnVmZmVyX3Bva2UgYnVmZmVyX3BlZWsgYnVmZmVyX3NhdmUgJyArXG4gICAgICAnYnVmZmVyX3NhdmVfZXh0IGJ1ZmZlcl9sb2FkIGJ1ZmZlcl9sb2FkX2V4dCBidWZmZXJfbG9hZF9wYXJ0aWFsICcgK1xuICAgICAgJ2J1ZmZlcl9jb3B5IGJ1ZmZlcl9maWxsIGJ1ZmZlcl9nZXRfc2l6ZSBidWZmZXJfdGVsbCBidWZmZXJfcmVzaXplICcgK1xuICAgICAgJ2J1ZmZlcl9tZDUgYnVmZmVyX3NoYTEgYnVmZmVyX2Jhc2U2NF9lbmNvZGUgYnVmZmVyX2Jhc2U2NF9kZWNvZGUgJyArXG4gICAgICAnYnVmZmVyX2Jhc2U2NF9kZWNvZGVfZXh0IGJ1ZmZlcl9zaXplb2YgYnVmZmVyX2dldF9hZGRyZXNzICcgK1xuICAgICAgJ2J1ZmZlcl9jcmVhdGVfZnJvbV92ZXJ0ZXhfYnVmZmVyICcgK1xuICAgICAgJ2J1ZmZlcl9jcmVhdGVfZnJvbV92ZXJ0ZXhfYnVmZmVyX2V4dCBidWZmZXJfY29weV9mcm9tX3ZlcnRleF9idWZmZXIgJyArXG4gICAgICAnYnVmZmVyX2FzeW5jX2dyb3VwX2JlZ2luIGJ1ZmZlcl9hc3luY19ncm91cF9vcHRpb24gJyArXG4gICAgICAnYnVmZmVyX2FzeW5jX2dyb3VwX2VuZCBidWZmZXJfbG9hZF9hc3luYyBidWZmZXJfc2F2ZV9hc3luYyAnICtcbiAgICAgICdnbWxfcmVsZWFzZV9tb2RlIGdtbF9wcmFnbWEgc3RlYW1fYWN0aXZhdGVfb3ZlcmxheSAnICtcbiAgICAgICdzdGVhbV9pc19vdmVybGF5X2VuYWJsZWQgc3RlYW1faXNfb3ZlcmxheV9hY3RpdmF0ZWQgJyArXG4gICAgICAnc3RlYW1fZ2V0X3BlcnNvbmFfbmFtZSBzdGVhbV9pbml0aWFsaXNlZCAnICtcbiAgICAgICdzdGVhbV9pc19jbG91ZF9lbmFibGVkX2Zvcl9hcHAgc3RlYW1faXNfY2xvdWRfZW5hYmxlZF9mb3JfYWNjb3VudCAnICtcbiAgICAgICdzdGVhbV9maWxlX3BlcnNpc3RlZCBzdGVhbV9nZXRfcXVvdGFfdG90YWwgc3RlYW1fZ2V0X3F1b3RhX2ZyZWUgJyArXG4gICAgICAnc3RlYW1fZmlsZV93cml0ZSBzdGVhbV9maWxlX3dyaXRlX2ZpbGUgc3RlYW1fZmlsZV9yZWFkICcgK1xuICAgICAgJ3N0ZWFtX2ZpbGVfZGVsZXRlIHN0ZWFtX2ZpbGVfZXhpc3RzIHN0ZWFtX2ZpbGVfc2l6ZSBzdGVhbV9maWxlX3NoYXJlICcgK1xuICAgICAgJ3N0ZWFtX2lzX3NjcmVlbnNob3RfcmVxdWVzdGVkIHN0ZWFtX3NlbmRfc2NyZWVuc2hvdCAnICtcbiAgICAgICdzdGVhbV9pc191c2VyX2xvZ2dlZF9vbiBzdGVhbV9nZXRfdXNlcl9zdGVhbV9pZCBzdGVhbV91c2VyX293bnNfZGxjICcgK1xuICAgICAgJ3N0ZWFtX3VzZXJfaW5zdGFsbGVkX2RsYyBzdGVhbV9zZXRfYWNoaWV2ZW1lbnQgc3RlYW1fZ2V0X2FjaGlldmVtZW50ICcgK1xuICAgICAgJ3N0ZWFtX2NsZWFyX2FjaGlldmVtZW50IHN0ZWFtX3NldF9zdGF0X2ludCBzdGVhbV9zZXRfc3RhdF9mbG9hdCAnICtcbiAgICAgICdzdGVhbV9zZXRfc3RhdF9hdmdfcmF0ZSBzdGVhbV9nZXRfc3RhdF9pbnQgc3RlYW1fZ2V0X3N0YXRfZmxvYXQgJyArXG4gICAgICAnc3RlYW1fZ2V0X3N0YXRfYXZnX3JhdGUgc3RlYW1fcmVzZXRfYWxsX3N0YXRzICcgK1xuICAgICAgJ3N0ZWFtX3Jlc2V0X2FsbF9zdGF0c19hY2hpZXZlbWVudHMgc3RlYW1fc3RhdHNfcmVhZHkgJyArXG4gICAgICAnc3RlYW1fY3JlYXRlX2xlYWRlcmJvYXJkIHN0ZWFtX3VwbG9hZF9zY29yZSBzdGVhbV91cGxvYWRfc2NvcmVfZXh0ICcgK1xuICAgICAgJ3N0ZWFtX2Rvd25sb2FkX3Njb3Jlc19hcm91bmRfdXNlciBzdGVhbV9kb3dubG9hZF9zY29yZXMgJyArXG4gICAgICAnc3RlYW1fZG93bmxvYWRfZnJpZW5kc19zY29yZXMgc3RlYW1fdXBsb2FkX3Njb3JlX2J1ZmZlciAnICtcbiAgICAgICdzdGVhbV91cGxvYWRfc2NvcmVfYnVmZmVyX2V4dCBzdGVhbV9jdXJyZW50X2dhbWVfbGFuZ3VhZ2UgJyArXG4gICAgICAnc3RlYW1fYXZhaWxhYmxlX2xhbmd1YWdlcyBzdGVhbV9hY3RpdmF0ZV9vdmVybGF5X2Jyb3dzZXIgJyArXG4gICAgICAnc3RlYW1fYWN0aXZhdGVfb3ZlcmxheV91c2VyIHN0ZWFtX2FjdGl2YXRlX292ZXJsYXlfc3RvcmUgJyArXG4gICAgICAnc3RlYW1fZ2V0X3VzZXJfcGVyc29uYV9uYW1lIHN0ZWFtX2dldF9hcHBfaWQgJyArXG4gICAgICAnc3RlYW1fZ2V0X3VzZXJfYWNjb3VudF9pZCBzdGVhbV91Z2NfZG93bmxvYWQgc3RlYW1fdWdjX2NyZWF0ZV9pdGVtICcgK1xuICAgICAgJ3N0ZWFtX3VnY19zdGFydF9pdGVtX3VwZGF0ZSBzdGVhbV91Z2Nfc2V0X2l0ZW1fdGl0bGUgJyArXG4gICAgICAnc3RlYW1fdWdjX3NldF9pdGVtX2Rlc2NyaXB0aW9uIHN0ZWFtX3VnY19zZXRfaXRlbV92aXNpYmlsaXR5ICcgK1xuICAgICAgJ3N0ZWFtX3VnY19zZXRfaXRlbV90YWdzIHN0ZWFtX3VnY19zZXRfaXRlbV9jb250ZW50ICcgK1xuICAgICAgJ3N0ZWFtX3VnY19zZXRfaXRlbV9wcmV2aWV3IHN0ZWFtX3VnY19zdWJtaXRfaXRlbV91cGRhdGUgJyArXG4gICAgICAnc3RlYW1fdWdjX2dldF9pdGVtX3VwZGF0ZV9wcm9ncmVzcyBzdGVhbV91Z2Nfc3Vic2NyaWJlX2l0ZW0gJyArXG4gICAgICAnc3RlYW1fdWdjX3Vuc3Vic2NyaWJlX2l0ZW0gc3RlYW1fdWdjX251bV9zdWJzY3JpYmVkX2l0ZW1zICcgK1xuICAgICAgJ3N0ZWFtX3VnY19nZXRfc3Vic2NyaWJlZF9pdGVtcyBzdGVhbV91Z2NfZ2V0X2l0ZW1faW5zdGFsbF9pbmZvICcgK1xuICAgICAgJ3N0ZWFtX3VnY19nZXRfaXRlbV91cGRhdGVfaW5mbyBzdGVhbV91Z2NfcmVxdWVzdF9pdGVtX2RldGFpbHMgJyArXG4gICAgICAnc3RlYW1fdWdjX2NyZWF0ZV9xdWVyeV91c2VyIHN0ZWFtX3VnY19jcmVhdGVfcXVlcnlfdXNlcl9leCAnICtcbiAgICAgICdzdGVhbV91Z2NfY3JlYXRlX3F1ZXJ5X2FsbCBzdGVhbV91Z2NfY3JlYXRlX3F1ZXJ5X2FsbF9leCAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X2Nsb3VkX2ZpbGVuYW1lX2ZpbHRlciAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X21hdGNoX2FueV90YWcgc3RlYW1fdWdjX3F1ZXJ5X3NldF9zZWFyY2hfdGV4dCAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X3JhbmtlZF9ieV90cmVuZF9kYXlzICcgK1xuICAgICAgJ3N0ZWFtX3VnY19xdWVyeV9hZGRfcmVxdWlyZWRfdGFnIHN0ZWFtX3VnY19xdWVyeV9hZGRfZXhjbHVkZWRfdGFnICcgK1xuICAgICAgJ3N0ZWFtX3VnY19xdWVyeV9zZXRfcmV0dXJuX2xvbmdfZGVzY3JpcHRpb24gJyArXG4gICAgICAnc3RlYW1fdWdjX3F1ZXJ5X3NldF9yZXR1cm5fdG90YWxfb25seSAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X2FsbG93X2NhY2hlZF9yZXNwb25zZSBzdGVhbV91Z2Nfc2VuZF9xdWVyeSAnICtcbiAgICAgICdzaGFkZXJfc2V0IHNoYWRlcl9nZXRfbmFtZSBzaGFkZXJfcmVzZXQgc2hhZGVyX2N1cnJlbnQgJyArXG4gICAgICAnc2hhZGVyX2lzX2NvbXBpbGVkIHNoYWRlcl9nZXRfc2FtcGxlcl9pbmRleCBzaGFkZXJfZ2V0X3VuaWZvcm0gJyArXG4gICAgICAnc2hhZGVyX3NldF91bmlmb3JtX2kgc2hhZGVyX3NldF91bmlmb3JtX2lfYXJyYXkgc2hhZGVyX3NldF91bmlmb3JtX2YgJyArXG4gICAgICAnc2hhZGVyX3NldF91bmlmb3JtX2ZfYXJyYXkgc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeCAnICtcbiAgICAgICdzaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4X2FycmF5IHNoYWRlcl9lbmFibGVfY29ybmVyX2lkICcgK1xuICAgICAgJ3RleHR1cmVfc2V0X3N0YWdlIHRleHR1cmVfZ2V0X3RleGVsX3dpZHRoIHRleHR1cmVfZ2V0X3RleGVsX2hlaWdodCAnICtcbiAgICAgICdzaGFkZXJzX2FyZV9zdXBwb3J0ZWQgdmVydGV4X2Zvcm1hdF9iZWdpbiB2ZXJ0ZXhfZm9ybWF0X2VuZCAnICtcbiAgICAgICd2ZXJ0ZXhfZm9ybWF0X2RlbGV0ZSB2ZXJ0ZXhfZm9ybWF0X2FkZF9wb3NpdGlvbiAnICtcbiAgICAgICd2ZXJ0ZXhfZm9ybWF0X2FkZF9wb3NpdGlvbl8zZCB2ZXJ0ZXhfZm9ybWF0X2FkZF9jb2xvdXIgJyArXG4gICAgICAndmVydGV4X2Zvcm1hdF9hZGRfY29sb3IgdmVydGV4X2Zvcm1hdF9hZGRfbm9ybWFsICcgK1xuICAgICAgJ3ZlcnRleF9mb3JtYXRfYWRkX3RleGNvb3JkIHZlcnRleF9mb3JtYXRfYWRkX3RleHRjb29yZCAnICtcbiAgICAgICd2ZXJ0ZXhfZm9ybWF0X2FkZF9jdXN0b20gdmVydGV4X2NyZWF0ZV9idWZmZXIgJyArXG4gICAgICAndmVydGV4X2NyZWF0ZV9idWZmZXJfZXh0IHZlcnRleF9kZWxldGVfYnVmZmVyIHZlcnRleF9iZWdpbiAnICtcbiAgICAgICd2ZXJ0ZXhfZW5kIHZlcnRleF9wb3NpdGlvbiB2ZXJ0ZXhfcG9zaXRpb25fM2QgdmVydGV4X2NvbG91ciAnICtcbiAgICAgICd2ZXJ0ZXhfY29sb3IgdmVydGV4X2FyZ2IgdmVydGV4X3RleGNvb3JkIHZlcnRleF9ub3JtYWwgdmVydGV4X2Zsb2F0MSAnICtcbiAgICAgICd2ZXJ0ZXhfZmxvYXQyIHZlcnRleF9mbG9hdDMgdmVydGV4X2Zsb2F0NCB2ZXJ0ZXhfdWJ5dGU0ICcgK1xuICAgICAgJ3ZlcnRleF9zdWJtaXQgdmVydGV4X2ZyZWV6ZSB2ZXJ0ZXhfZ2V0X251bWJlciB2ZXJ0ZXhfZ2V0X2J1ZmZlcl9zaXplICcgK1xuICAgICAgJ3ZlcnRleF9jcmVhdGVfYnVmZmVyX2Zyb21fYnVmZmVyICcgK1xuICAgICAgJ3ZlcnRleF9jcmVhdGVfYnVmZmVyX2Zyb21fYnVmZmVyX2V4dCBwdXNoX2xvY2FsX25vdGlmaWNhdGlvbiAnICtcbiAgICAgICdwdXNoX2dldF9maXJzdF9sb2NhbF9ub3RpZmljYXRpb24gcHVzaF9nZXRfbmV4dF9sb2NhbF9ub3RpZmljYXRpb24gJyArXG4gICAgICAncHVzaF9jYW5jZWxfbG9jYWxfbm90aWZpY2F0aW9uIHNrZWxldG9uX2FuaW1hdGlvbl9zZXQgJyArXG4gICAgICAnc2tlbGV0b25fYW5pbWF0aW9uX2dldCBza2VsZXRvbl9hbmltYXRpb25fbWl4ICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9zZXRfZXh0IHNrZWxldG9uX2FuaW1hdGlvbl9nZXRfZXh0ICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9nZXRfZHVyYXRpb24gc2tlbGV0b25fYW5pbWF0aW9uX2dldF9mcmFtZXMgJyArXG4gICAgICAnc2tlbGV0b25fYW5pbWF0aW9uX2NsZWFyIHNrZWxldG9uX3NraW5fc2V0IHNrZWxldG9uX3NraW5fZ2V0ICcgK1xuICAgICAgJ3NrZWxldG9uX2F0dGFjaG1lbnRfc2V0IHNrZWxldG9uX2F0dGFjaG1lbnRfZ2V0ICcgK1xuICAgICAgJ3NrZWxldG9uX2F0dGFjaG1lbnRfY3JlYXRlIHNrZWxldG9uX2NvbGxpc2lvbl9kcmF3X3NldCAnICtcbiAgICAgICdza2VsZXRvbl9ib25lX2RhdGFfZ2V0IHNrZWxldG9uX2JvbmVfZGF0YV9zZXQgJyArXG4gICAgICAnc2tlbGV0b25fYm9uZV9zdGF0ZV9nZXQgc2tlbGV0b25fYm9uZV9zdGF0ZV9zZXQgc2tlbGV0b25fZ2V0X21pbm1heCAnICtcbiAgICAgICdza2VsZXRvbl9nZXRfbnVtX2JvdW5kcyBza2VsZXRvbl9nZXRfYm91bmRzICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9nZXRfZnJhbWUgc2tlbGV0b25fYW5pbWF0aW9uX3NldF9mcmFtZSAnICtcbiAgICAgICdkcmF3X3NrZWxldG9uIGRyYXdfc2tlbGV0b25fdGltZSBkcmF3X3NrZWxldG9uX2luc3RhbmNlICcgK1xuICAgICAgJ2RyYXdfc2tlbGV0b25fY29sbGlzaW9uIHNrZWxldG9uX2FuaW1hdGlvbl9saXN0IHNrZWxldG9uX3NraW5fbGlzdCAnICtcbiAgICAgICdza2VsZXRvbl9zbG90X2RhdGEgbGF5ZXJfZ2V0X2lkIGxheWVyX2dldF9pZF9hdF9kZXB0aCAnICtcbiAgICAgICdsYXllcl9nZXRfZGVwdGggbGF5ZXJfY3JlYXRlIGxheWVyX2Rlc3Ryb3kgbGF5ZXJfZGVzdHJveV9pbnN0YW5jZXMgJyArXG4gICAgICAnbGF5ZXJfYWRkX2luc3RhbmNlIGxheWVyX2hhc19pbnN0YW5jZSBsYXllcl9zZXRfdmlzaWJsZSAnICtcbiAgICAgICdsYXllcl9nZXRfdmlzaWJsZSBsYXllcl9leGlzdHMgbGF5ZXJfeCBsYXllcl95IGxheWVyX2dldF94ICcgK1xuICAgICAgJ2xheWVyX2dldF95IGxheWVyX2hzcGVlZCBsYXllcl92c3BlZWQgbGF5ZXJfZ2V0X2hzcGVlZCAnICtcbiAgICAgICdsYXllcl9nZXRfdnNwZWVkIGxheWVyX3NjcmlwdF9iZWdpbiBsYXllcl9zY3JpcHRfZW5kIGxheWVyX3NoYWRlciAnICtcbiAgICAgICdsYXllcl9nZXRfc2NyaXB0X2JlZ2luIGxheWVyX2dldF9zY3JpcHRfZW5kIGxheWVyX2dldF9zaGFkZXIgJyArXG4gICAgICAnbGF5ZXJfc2V0X3RhcmdldF9yb29tIGxheWVyX2dldF90YXJnZXRfcm9vbSBsYXllcl9yZXNldF90YXJnZXRfcm9vbSAnICtcbiAgICAgICdsYXllcl9nZXRfYWxsIGxheWVyX2dldF9hbGxfZWxlbWVudHMgbGF5ZXJfZ2V0X25hbWUgbGF5ZXJfZGVwdGggJyArXG4gICAgICAnbGF5ZXJfZ2V0X2VsZW1lbnRfbGF5ZXIgbGF5ZXJfZ2V0X2VsZW1lbnRfdHlwZSBsYXllcl9lbGVtZW50X21vdmUgJyArXG4gICAgICAnbGF5ZXJfZm9yY2VfZHJhd19kZXB0aCBsYXllcl9pc19kcmF3X2RlcHRoX2ZvcmNlZCAnICtcbiAgICAgICdsYXllcl9nZXRfZm9yY2VkX2RlcHRoIGxheWVyX2JhY2tncm91bmRfZ2V0X2lkICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfZXhpc3RzIGxheWVyX2JhY2tncm91bmRfY3JlYXRlICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfZGVzdHJveSBsYXllcl9iYWNrZ3JvdW5kX3Zpc2libGUgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9jaGFuZ2UgbGF5ZXJfYmFja2dyb3VuZF9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9odGlsZWQgbGF5ZXJfYmFja2dyb3VuZF92dGlsZWQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9zdHJldGNoIGxheWVyX2JhY2tncm91bmRfeXNjYWxlICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfeHNjYWxlIGxheWVyX2JhY2tncm91bmRfYmxlbmQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9hbHBoYSBsYXllcl9iYWNrZ3JvdW5kX2luZGV4IGxheWVyX2JhY2tncm91bmRfc3BlZWQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfdmlzaWJsZSBsYXllcl9iYWNrZ3JvdW5kX2dldF9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfaHRpbGVkIGxheWVyX2JhY2tncm91bmRfZ2V0X3Z0aWxlZCAnICtcbiAgICAgICdsYXllcl9iYWNrZ3JvdW5kX2dldF9zdHJldGNoIGxheWVyX2JhY2tncm91bmRfZ2V0X3lzY2FsZSAnICtcbiAgICAgICdsYXllcl9iYWNrZ3JvdW5kX2dldF94c2NhbGUgbGF5ZXJfYmFja2dyb3VuZF9nZXRfYmxlbmQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfYWxwaGEgbGF5ZXJfYmFja2dyb3VuZF9nZXRfaW5kZXggJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfc3BlZWQgbGF5ZXJfc3ByaXRlX2dldF9pZCBsYXllcl9zcHJpdGVfZXhpc3RzICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9jcmVhdGUgbGF5ZXJfc3ByaXRlX2Rlc3Ryb3kgbGF5ZXJfc3ByaXRlX2NoYW5nZSAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfaW5kZXggbGF5ZXJfc3ByaXRlX3NwZWVkIGxheWVyX3Nwcml0ZV94c2NhbGUgJyArXG4gICAgICAnbGF5ZXJfc3ByaXRlX3lzY2FsZSBsYXllcl9zcHJpdGVfYW5nbGUgbGF5ZXJfc3ByaXRlX2JsZW5kICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9hbHBoYSBsYXllcl9zcHJpdGVfeCBsYXllcl9zcHJpdGVfeSAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfZ2V0X3Nwcml0ZSBsYXllcl9zcHJpdGVfZ2V0X2luZGV4ICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9nZXRfc3BlZWQgbGF5ZXJfc3ByaXRlX2dldF94c2NhbGUgJyArXG4gICAgICAnbGF5ZXJfc3ByaXRlX2dldF95c2NhbGUgbGF5ZXJfc3ByaXRlX2dldF9hbmdsZSAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfZ2V0X2JsZW5kIGxheWVyX3Nwcml0ZV9nZXRfYWxwaGEgbGF5ZXJfc3ByaXRlX2dldF94ICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9nZXRfeSBsYXllcl90aWxlbWFwX2dldF9pZCBsYXllcl90aWxlbWFwX2V4aXN0cyAnICtcbiAgICAgICdsYXllcl90aWxlbWFwX2NyZWF0ZSBsYXllcl90aWxlbWFwX2Rlc3Ryb3kgdGlsZW1hcF90aWxlc2V0IHRpbGVtYXBfeCAnICtcbiAgICAgICd0aWxlbWFwX3kgdGlsZW1hcF9zZXQgdGlsZW1hcF9zZXRfYXRfcGl4ZWwgdGlsZW1hcF9nZXRfdGlsZXNldCAnICtcbiAgICAgICd0aWxlbWFwX2dldF90aWxlX3dpZHRoIHRpbGVtYXBfZ2V0X3RpbGVfaGVpZ2h0IHRpbGVtYXBfZ2V0X3dpZHRoICcgK1xuICAgICAgJ3RpbGVtYXBfZ2V0X2hlaWdodCB0aWxlbWFwX2dldF94IHRpbGVtYXBfZ2V0X3kgdGlsZW1hcF9nZXQgJyArXG4gICAgICAndGlsZW1hcF9nZXRfYXRfcGl4ZWwgdGlsZW1hcF9nZXRfY2VsbF94X2F0X3BpeGVsICcgK1xuICAgICAgJ3RpbGVtYXBfZ2V0X2NlbGxfeV9hdF9waXhlbCB0aWxlbWFwX2NsZWFyIGRyYXdfdGlsZW1hcCBkcmF3X3RpbGUgJyArXG4gICAgICAndGlsZW1hcF9zZXRfZ2xvYmFsX21hc2sgdGlsZW1hcF9nZXRfZ2xvYmFsX21hc2sgdGlsZW1hcF9zZXRfbWFzayAnICtcbiAgICAgICd0aWxlbWFwX2dldF9tYXNrIHRpbGVtYXBfZ2V0X2ZyYW1lIHRpbGVfc2V0X2VtcHR5IHRpbGVfc2V0X2luZGV4ICcgK1xuICAgICAgJ3RpbGVfc2V0X2ZsaXAgdGlsZV9zZXRfbWlycm9yIHRpbGVfc2V0X3JvdGF0ZSB0aWxlX2dldF9lbXB0eSAnICtcbiAgICAgICd0aWxlX2dldF9pbmRleCB0aWxlX2dldF9mbGlwIHRpbGVfZ2V0X21pcnJvciB0aWxlX2dldF9yb3RhdGUgJyArXG4gICAgICAnbGF5ZXJfdGlsZV9leGlzdHMgbGF5ZXJfdGlsZV9jcmVhdGUgbGF5ZXJfdGlsZV9kZXN0cm95ICcgK1xuICAgICAgJ2xheWVyX3RpbGVfY2hhbmdlIGxheWVyX3RpbGVfeHNjYWxlIGxheWVyX3RpbGVfeXNjYWxlICcgK1xuICAgICAgJ2xheWVyX3RpbGVfYmxlbmQgbGF5ZXJfdGlsZV9hbHBoYSBsYXllcl90aWxlX3ggbGF5ZXJfdGlsZV95ICcgK1xuICAgICAgJ2xheWVyX3RpbGVfcmVnaW9uIGxheWVyX3RpbGVfdmlzaWJsZSBsYXllcl90aWxlX2dldF9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJfdGlsZV9nZXRfeHNjYWxlIGxheWVyX3RpbGVfZ2V0X3lzY2FsZSBsYXllcl90aWxlX2dldF9ibGVuZCAnICtcbiAgICAgICdsYXllcl90aWxlX2dldF9hbHBoYSBsYXllcl90aWxlX2dldF94IGxheWVyX3RpbGVfZ2V0X3kgJyArXG4gICAgICAnbGF5ZXJfdGlsZV9nZXRfcmVnaW9uIGxheWVyX3RpbGVfZ2V0X3Zpc2libGUgJyArXG4gICAgICAnbGF5ZXJfaW5zdGFuY2VfZ2V0X2luc3RhbmNlIGluc3RhbmNlX2FjdGl2YXRlX2xheWVyICcgK1xuICAgICAgJ2luc3RhbmNlX2RlYWN0aXZhdGVfbGF5ZXIgY2FtZXJhX2NyZWF0ZSBjYW1lcmFfY3JlYXRlX3ZpZXcgJyArXG4gICAgICAnY2FtZXJhX2Rlc3Ryb3kgY2FtZXJhX2FwcGx5IGNhbWVyYV9nZXRfYWN0aXZlIGNhbWVyYV9nZXRfZGVmYXVsdCAnICtcbiAgICAgICdjYW1lcmFfc2V0X2RlZmF1bHQgY2FtZXJhX3NldF92aWV3X21hdCBjYW1lcmFfc2V0X3Byb2pfbWF0ICcgK1xuICAgICAgJ2NhbWVyYV9zZXRfdXBkYXRlX3NjcmlwdCBjYW1lcmFfc2V0X2JlZ2luX3NjcmlwdCAnICtcbiAgICAgICdjYW1lcmFfc2V0X2VuZF9zY3JpcHQgY2FtZXJhX3NldF92aWV3X3BvcyBjYW1lcmFfc2V0X3ZpZXdfc2l6ZSAnICtcbiAgICAgICdjYW1lcmFfc2V0X3ZpZXdfc3BlZWQgY2FtZXJhX3NldF92aWV3X2JvcmRlciBjYW1lcmFfc2V0X3ZpZXdfYW5nbGUgJyArXG4gICAgICAnY2FtZXJhX3NldF92aWV3X3RhcmdldCBjYW1lcmFfZ2V0X3ZpZXdfbWF0IGNhbWVyYV9nZXRfcHJval9tYXQgJyArXG4gICAgICAnY2FtZXJhX2dldF91cGRhdGVfc2NyaXB0IGNhbWVyYV9nZXRfYmVnaW5fc2NyaXB0ICcgK1xuICAgICAgJ2NhbWVyYV9nZXRfZW5kX3NjcmlwdCBjYW1lcmFfZ2V0X3ZpZXdfeCBjYW1lcmFfZ2V0X3ZpZXdfeSAnICtcbiAgICAgICdjYW1lcmFfZ2V0X3ZpZXdfd2lkdGggY2FtZXJhX2dldF92aWV3X2hlaWdodCBjYW1lcmFfZ2V0X3ZpZXdfc3BlZWRfeCAnICtcbiAgICAgICdjYW1lcmFfZ2V0X3ZpZXdfc3BlZWRfeSBjYW1lcmFfZ2V0X3ZpZXdfYm9yZGVyX3ggJyArXG4gICAgICAnY2FtZXJhX2dldF92aWV3X2JvcmRlcl95IGNhbWVyYV9nZXRfdmlld19hbmdsZSAnICtcbiAgICAgICdjYW1lcmFfZ2V0X3ZpZXdfdGFyZ2V0IHZpZXdfZ2V0X2NhbWVyYSB2aWV3X2dldF92aXNpYmxlICcgK1xuICAgICAgJ3ZpZXdfZ2V0X3hwb3J0IHZpZXdfZ2V0X3lwb3J0IHZpZXdfZ2V0X3dwb3J0IHZpZXdfZ2V0X2hwb3J0ICcgK1xuICAgICAgJ3ZpZXdfZ2V0X3N1cmZhY2VfaWQgdmlld19zZXRfY2FtZXJhIHZpZXdfc2V0X3Zpc2libGUgdmlld19zZXRfeHBvcnQgJyArXG4gICAgICAndmlld19zZXRfeXBvcnQgdmlld19zZXRfd3BvcnQgdmlld19zZXRfaHBvcnQgdmlld19zZXRfc3VyZmFjZV9pZCAnICtcbiAgICAgICdnZXN0dXJlX2RyYWdfdGltZSBnZXN0dXJlX2RyYWdfZGlzdGFuY2UgZ2VzdHVyZV9mbGlja19zcGVlZCAnICtcbiAgICAgICdnZXN0dXJlX2RvdWJsZV90YXBfdGltZSBnZXN0dXJlX2RvdWJsZV90YXBfZGlzdGFuY2UgJyArXG4gICAgICAnZ2VzdHVyZV9waW5jaF9kaXN0YW5jZSBnZXN0dXJlX3BpbmNoX2FuZ2xlX3Rvd2FyZHMgJyArXG4gICAgICAnZ2VzdHVyZV9waW5jaF9hbmdsZV9hd2F5IGdlc3R1cmVfcm90YXRlX3RpbWUgZ2VzdHVyZV9yb3RhdGVfYW5nbGUgJyArXG4gICAgICAnZ2VzdHVyZV90YXBfY291bnQgZ2VzdHVyZV9nZXRfZHJhZ190aW1lIGdlc3R1cmVfZ2V0X2RyYWdfZGlzdGFuY2UgJyArXG4gICAgICAnZ2VzdHVyZV9nZXRfZmxpY2tfc3BlZWQgZ2VzdHVyZV9nZXRfZG91YmxlX3RhcF90aW1lICcgK1xuICAgICAgJ2dlc3R1cmVfZ2V0X2RvdWJsZV90YXBfZGlzdGFuY2UgZ2VzdHVyZV9nZXRfcGluY2hfZGlzdGFuY2UgJyArXG4gICAgICAnZ2VzdHVyZV9nZXRfcGluY2hfYW5nbGVfdG93YXJkcyBnZXN0dXJlX2dldF9waW5jaF9hbmdsZV9hd2F5ICcgK1xuICAgICAgJ2dlc3R1cmVfZ2V0X3JvdGF0ZV90aW1lIGdlc3R1cmVfZ2V0X3JvdGF0ZV9hbmdsZSAnICtcbiAgICAgICdnZXN0dXJlX2dldF90YXBfY291bnQga2V5Ym9hcmRfdmlydHVhbF9zaG93IGtleWJvYXJkX3ZpcnR1YWxfaGlkZSAnICtcbiAgICAgICdrZXlib2FyZF92aXJ0dWFsX3N0YXR1cyBrZXlib2FyZF92aXJ0dWFsX2hlaWdodCcsXG4gICAgbGl0ZXJhbDogJ3NlbGYgb3RoZXIgYWxsIG5vb25lIGdsb2JhbCBsb2NhbCB1bmRlZmluZWQgcG9pbnRlcl9pbnZhbGlkICcgK1xuICAgICAgJ3BvaW50ZXJfbnVsbCBwYXRoX2FjdGlvbl9zdG9wIHBhdGhfYWN0aW9uX3Jlc3RhcnQgJyArXG4gICAgICAncGF0aF9hY3Rpb25fY29udGludWUgcGF0aF9hY3Rpb25fcmV2ZXJzZSB0cnVlIGZhbHNlIHBpIEdNX2J1aWxkX2RhdGUgJyArXG4gICAgICAnR01fdmVyc2lvbiBHTV9ydW50aW1lX3ZlcnNpb24gIHRpbWV6b25lX2xvY2FsIHRpbWV6b25lX3V0YyAnICtcbiAgICAgICdnYW1lc3BlZWRfZnBzIGdhbWVzcGVlZF9taWNyb3NlY29uZHMgIGV2X2NyZWF0ZSBldl9kZXN0cm95IGV2X3N0ZXAgJyArXG4gICAgICAnZXZfYWxhcm0gZXZfa2V5Ym9hcmQgZXZfbW91c2UgZXZfY29sbGlzaW9uIGV2X290aGVyIGV2X2RyYXcgJyArXG4gICAgICAnZXZfZHJhd19iZWdpbiBldl9kcmF3X2VuZCBldl9kcmF3X3ByZSBldl9kcmF3X3Bvc3QgZXZfa2V5cHJlc3MgJyArXG4gICAgICAnZXZfa2V5cmVsZWFzZSBldl90cmlnZ2VyIGV2X2xlZnRfYnV0dG9uIGV2X3JpZ2h0X2J1dHRvbiAnICtcbiAgICAgICdldl9taWRkbGVfYnV0dG9uIGV2X25vX2J1dHRvbiBldl9sZWZ0X3ByZXNzIGV2X3JpZ2h0X3ByZXNzICcgK1xuICAgICAgJ2V2X21pZGRsZV9wcmVzcyBldl9sZWZ0X3JlbGVhc2UgZXZfcmlnaHRfcmVsZWFzZSBldl9taWRkbGVfcmVsZWFzZSAnICtcbiAgICAgICdldl9tb3VzZV9lbnRlciBldl9tb3VzZV9sZWF2ZSBldl9tb3VzZV93aGVlbF91cCBldl9tb3VzZV93aGVlbF9kb3duICcgK1xuICAgICAgJ2V2X2dsb2JhbF9sZWZ0X2J1dHRvbiBldl9nbG9iYWxfcmlnaHRfYnV0dG9uIGV2X2dsb2JhbF9taWRkbGVfYnV0dG9uICcgK1xuICAgICAgJ2V2X2dsb2JhbF9sZWZ0X3ByZXNzIGV2X2dsb2JhbF9yaWdodF9wcmVzcyBldl9nbG9iYWxfbWlkZGxlX3ByZXNzICcgK1xuICAgICAgJ2V2X2dsb2JhbF9sZWZ0X3JlbGVhc2UgZXZfZ2xvYmFsX3JpZ2h0X3JlbGVhc2UgJyArXG4gICAgICAnZXZfZ2xvYmFsX21pZGRsZV9yZWxlYXNlIGV2X2pveXN0aWNrMV9sZWZ0IGV2X2pveXN0aWNrMV9yaWdodCAnICtcbiAgICAgICdldl9qb3lzdGljazFfdXAgZXZfam95c3RpY2sxX2Rvd24gZXZfam95c3RpY2sxX2J1dHRvbjEgJyArXG4gICAgICAnZXZfam95c3RpY2sxX2J1dHRvbjIgZXZfam95c3RpY2sxX2J1dHRvbjMgZXZfam95c3RpY2sxX2J1dHRvbjQgJyArXG4gICAgICAnZXZfam95c3RpY2sxX2J1dHRvbjUgZXZfam95c3RpY2sxX2J1dHRvbjYgZXZfam95c3RpY2sxX2J1dHRvbjcgJyArXG4gICAgICAnZXZfam95c3RpY2sxX2J1dHRvbjggZXZfam95c3RpY2syX2xlZnQgZXZfam95c3RpY2syX3JpZ2h0ICcgK1xuICAgICAgJ2V2X2pveXN0aWNrMl91cCBldl9qb3lzdGljazJfZG93biBldl9qb3lzdGljazJfYnV0dG9uMSAnICtcbiAgICAgICdldl9qb3lzdGljazJfYnV0dG9uMiBldl9qb3lzdGljazJfYnV0dG9uMyBldl9qb3lzdGljazJfYnV0dG9uNCAnICtcbiAgICAgICdldl9qb3lzdGljazJfYnV0dG9uNSBldl9qb3lzdGljazJfYnV0dG9uNiBldl9qb3lzdGljazJfYnV0dG9uNyAnICtcbiAgICAgICdldl9qb3lzdGljazJfYnV0dG9uOCBldl9vdXRzaWRlIGV2X2JvdW5kYXJ5IGV2X2dhbWVfc3RhcnQgJyArXG4gICAgICAnZXZfZ2FtZV9lbmQgZXZfcm9vbV9zdGFydCBldl9yb29tX2VuZCBldl9ub19tb3JlX2xpdmVzICcgK1xuICAgICAgJ2V2X2FuaW1hdGlvbl9lbmQgZXZfZW5kX29mX3BhdGggZXZfbm9fbW9yZV9oZWFsdGggZXZfY2xvc2VfYnV0dG9uICcgK1xuICAgICAgJ2V2X3VzZXIwIGV2X3VzZXIxIGV2X3VzZXIyIGV2X3VzZXIzIGV2X3VzZXI0IGV2X3VzZXI1IGV2X3VzZXI2ICcgK1xuICAgICAgJ2V2X3VzZXI3IGV2X3VzZXI4IGV2X3VzZXI5IGV2X3VzZXIxMCBldl91c2VyMTEgZXZfdXNlcjEyIGV2X3VzZXIxMyAnICtcbiAgICAgICdldl91c2VyMTQgZXZfdXNlcjE1IGV2X3N0ZXBfbm9ybWFsIGV2X3N0ZXBfYmVnaW4gZXZfc3RlcF9lbmQgZXZfZ3VpICcgK1xuICAgICAgJ2V2X2d1aV9iZWdpbiBldl9ndWlfZW5kIGV2X2NsZWFudXAgZXZfZ2VzdHVyZSBldl9nZXN0dXJlX3RhcCAnICtcbiAgICAgICdldl9nZXN0dXJlX2RvdWJsZV90YXAgZXZfZ2VzdHVyZV9kcmFnX3N0YXJ0IGV2X2dlc3R1cmVfZHJhZ2dpbmcgJyArXG4gICAgICAnZXZfZ2VzdHVyZV9kcmFnX2VuZCBldl9nZXN0dXJlX2ZsaWNrIGV2X2dlc3R1cmVfcGluY2hfc3RhcnQgJyArXG4gICAgICAnZXZfZ2VzdHVyZV9waW5jaF9pbiBldl9nZXN0dXJlX3BpbmNoX291dCBldl9nZXN0dXJlX3BpbmNoX2VuZCAnICtcbiAgICAgICdldl9nZXN0dXJlX3JvdGF0ZV9zdGFydCBldl9nZXN0dXJlX3JvdGF0aW5nIGV2X2dlc3R1cmVfcm90YXRlX2VuZCAnICtcbiAgICAgICdldl9nbG9iYWxfZ2VzdHVyZV90YXAgZXZfZ2xvYmFsX2dlc3R1cmVfZG91YmxlX3RhcCAnICtcbiAgICAgICdldl9nbG9iYWxfZ2VzdHVyZV9kcmFnX3N0YXJ0IGV2X2dsb2JhbF9nZXN0dXJlX2RyYWdnaW5nICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX2RyYWdfZW5kIGV2X2dsb2JhbF9nZXN0dXJlX2ZsaWNrICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX3BpbmNoX3N0YXJ0IGV2X2dsb2JhbF9nZXN0dXJlX3BpbmNoX2luICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX3BpbmNoX291dCBldl9nbG9iYWxfZ2VzdHVyZV9waW5jaF9lbmQgJyArXG4gICAgICAnZXZfZ2xvYmFsX2dlc3R1cmVfcm90YXRlX3N0YXJ0IGV2X2dsb2JhbF9nZXN0dXJlX3JvdGF0aW5nICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX3JvdGF0ZV9lbmQgdmtfbm9rZXkgdmtfYW55a2V5IHZrX2VudGVyIHZrX3JldHVybiAnICtcbiAgICAgICd2a19zaGlmdCB2a19jb250cm9sIHZrX2FsdCB2a19lc2NhcGUgdmtfc3BhY2UgdmtfYmFja3NwYWNlIHZrX3RhYiAnICtcbiAgICAgICd2a19wYXVzZSB2a19wcmludHNjcmVlbiB2a19sZWZ0IHZrX3JpZ2h0IHZrX3VwIHZrX2Rvd24gdmtfaG9tZSAnICtcbiAgICAgICd2a19lbmQgdmtfZGVsZXRlIHZrX2luc2VydCB2a19wYWdldXAgdmtfcGFnZWRvd24gdmtfZjEgdmtfZjIgdmtfZjMgJyArXG4gICAgICAndmtfZjQgdmtfZjUgdmtfZjYgdmtfZjcgdmtfZjggdmtfZjkgdmtfZjEwIHZrX2YxMSB2a19mMTIgdmtfbnVtcGFkMCAnICtcbiAgICAgICd2a19udW1wYWQxIHZrX251bXBhZDIgdmtfbnVtcGFkMyB2a19udW1wYWQ0IHZrX251bXBhZDUgdmtfbnVtcGFkNiAnICtcbiAgICAgICd2a19udW1wYWQ3IHZrX251bXBhZDggdmtfbnVtcGFkOSB2a19kaXZpZGUgdmtfbXVsdGlwbHkgdmtfc3VidHJhY3QgJyArXG4gICAgICAndmtfYWRkIHZrX2RlY2ltYWwgdmtfbHNoaWZ0IHZrX2xjb250cm9sIHZrX2xhbHQgdmtfcnNoaWZ0ICcgK1xuICAgICAgJ3ZrX3Jjb250cm9sIHZrX3JhbHQgIG1iX2FueSBtYl9ub25lIG1iX2xlZnQgbWJfcmlnaHQgbWJfbWlkZGxlICcgK1xuICAgICAgJ2NfYXF1YSBjX2JsYWNrIGNfYmx1ZSBjX2RrZ3JheSBjX2Z1Y2hzaWEgY19ncmF5IGNfZ3JlZW4gY19saW1lICcgK1xuICAgICAgJ2NfbHRncmF5IGNfbWFyb29uIGNfbmF2eSBjX29saXZlIGNfcHVycGxlIGNfcmVkIGNfc2lsdmVyIGNfdGVhbCAnICtcbiAgICAgICdjX3doaXRlIGNfeWVsbG93IGNfb3JhbmdlIGZhX2xlZnQgZmFfY2VudGVyIGZhX3JpZ2h0IGZhX3RvcCAnICtcbiAgICAgICdmYV9taWRkbGUgZmFfYm90dG9tIHByX3BvaW50bGlzdCBwcl9saW5lbGlzdCBwcl9saW5lc3RyaXAgJyArXG4gICAgICAncHJfdHJpYW5nbGVsaXN0IHByX3RyaWFuZ2xlc3RyaXAgcHJfdHJpYW5nbGVmYW4gYm1fY29tcGxleCBibV9ub3JtYWwgJyArXG4gICAgICAnYm1fYWRkIGJtX21heCBibV9zdWJ0cmFjdCBibV96ZXJvIGJtX29uZSBibV9zcmNfY29sb3VyICcgK1xuICAgICAgJ2JtX2ludl9zcmNfY29sb3VyIGJtX3NyY19jb2xvciBibV9pbnZfc3JjX2NvbG9yIGJtX3NyY19hbHBoYSAnICtcbiAgICAgICdibV9pbnZfc3JjX2FscGhhIGJtX2Rlc3RfYWxwaGEgYm1faW52X2Rlc3RfYWxwaGEgYm1fZGVzdF9jb2xvdXIgJyArXG4gICAgICAnYm1faW52X2Rlc3RfY29sb3VyIGJtX2Rlc3RfY29sb3IgYm1faW52X2Rlc3RfY29sb3IgYm1fc3JjX2FscGhhX3NhdCAnICtcbiAgICAgICd0Zl9wb2ludCB0Zl9saW5lYXIgdGZfYW5pc290cm9waWMgbWlwX29mZiBtaXBfb24gbWlwX21hcmtlZG9ubHkgJyArXG4gICAgICAnYXVkaW9fZmFsbG9mZl9ub25lIGF1ZGlvX2ZhbGxvZmZfaW52ZXJzZV9kaXN0YW5jZSAnICtcbiAgICAgICdhdWRpb19mYWxsb2ZmX2ludmVyc2VfZGlzdGFuY2VfY2xhbXBlZCBhdWRpb19mYWxsb2ZmX2xpbmVhcl9kaXN0YW5jZSAnICtcbiAgICAgICdhdWRpb19mYWxsb2ZmX2xpbmVhcl9kaXN0YW5jZV9jbGFtcGVkICcgK1xuICAgICAgJ2F1ZGlvX2ZhbGxvZmZfZXhwb25lbnRfZGlzdGFuY2UgJyArXG4gICAgICAnYXVkaW9fZmFsbG9mZl9leHBvbmVudF9kaXN0YW5jZV9jbGFtcGVkIGF1ZGlvX29sZF9zeXN0ZW0gJyArXG4gICAgICAnYXVkaW9fbmV3X3N5c3RlbSBhdWRpb19tb25vIGF1ZGlvX3N0ZXJlbyBhdWRpb18zZCBjcl9kZWZhdWx0IGNyX25vbmUgJyArXG4gICAgICAnY3JfYXJyb3cgY3JfY3Jvc3MgY3JfYmVhbSBjcl9zaXplX25lc3cgY3Jfc2l6ZV9ucyBjcl9zaXplX253c2UgJyArXG4gICAgICAnY3Jfc2l6ZV93ZSBjcl91cGFycm93IGNyX2hvdXJnbGFzcyBjcl9kcmFnIGNyX2FwcHN0YXJ0IGNyX2hhbmRwb2ludCAnICtcbiAgICAgICdjcl9zaXplX2FsbCBzcHJpdGVzcGVlZF9mcmFtZXNwZXJzZWNvbmQgJyArXG4gICAgICAnc3ByaXRlc3BlZWRfZnJhbWVzcGVyZ2FtZWZyYW1lIGFzc2V0X29iamVjdCBhc3NldF91bmtub3duICcgK1xuICAgICAgJ2Fzc2V0X3Nwcml0ZSBhc3NldF9zb3VuZCBhc3NldF9yb29tIGFzc2V0X3BhdGggYXNzZXRfc2NyaXB0ICcgK1xuICAgICAgJ2Fzc2V0X2ZvbnQgYXNzZXRfdGltZWxpbmUgYXNzZXRfdGlsZXMgYXNzZXRfc2hhZGVyIGZhX3JlYWRvbmx5ICcgK1xuICAgICAgJ2ZhX2hpZGRlbiBmYV9zeXNmaWxlIGZhX3ZvbHVtZWlkIGZhX2RpcmVjdG9yeSBmYV9hcmNoaXZlICAnICtcbiAgICAgICdkc190eXBlX21hcCBkc190eXBlX2xpc3QgZHNfdHlwZV9zdGFjayBkc190eXBlX3F1ZXVlIGRzX3R5cGVfZ3JpZCAnICtcbiAgICAgICdkc190eXBlX3ByaW9yaXR5IGVmX2V4cGxvc2lvbiBlZl9yaW5nIGVmX2VsbGlwc2UgZWZfZmlyZXdvcmsgJyArXG4gICAgICAnZWZfc21va2UgZWZfc21va2V1cCBlZl9zdGFyIGVmX3NwYXJrIGVmX2ZsYXJlIGVmX2Nsb3VkIGVmX3JhaW4gJyArXG4gICAgICAnZWZfc25vdyBwdF9zaGFwZV9waXhlbCBwdF9zaGFwZV9kaXNrIHB0X3NoYXBlX3NxdWFyZSBwdF9zaGFwZV9saW5lICcgK1xuICAgICAgJ3B0X3NoYXBlX3N0YXIgcHRfc2hhcGVfY2lyY2xlIHB0X3NoYXBlX3JpbmcgcHRfc2hhcGVfc3BoZXJlICcgK1xuICAgICAgJ3B0X3NoYXBlX2ZsYXJlIHB0X3NoYXBlX3NwYXJrIHB0X3NoYXBlX2V4cGxvc2lvbiBwdF9zaGFwZV9jbG91ZCAnICtcbiAgICAgICdwdF9zaGFwZV9zbW9rZSBwdF9zaGFwZV9zbm93IHBzX2Rpc3RyX2xpbmVhciBwc19kaXN0cl9nYXVzc2lhbiAnICtcbiAgICAgICdwc19kaXN0cl9pbnZnYXVzc2lhbiBwc19zaGFwZV9yZWN0YW5nbGUgcHNfc2hhcGVfZWxsaXBzZSAnICtcbiAgICAgICdwc19zaGFwZV9kaWFtb25kIHBzX3NoYXBlX2xpbmUgdHlfcmVhbCB0eV9zdHJpbmcgZGxsX2NkZWNsICcgK1xuICAgICAgJ2RsbF9zdGRjYWxsIG1hdHJpeF92aWV3IG1hdHJpeF9wcm9qZWN0aW9uIG1hdHJpeF93b3JsZCBvc193aW4zMiAnICtcbiAgICAgICdvc193aW5kb3dzIG9zX21hY29zeCBvc19pb3Mgb3NfYW5kcm9pZCBvc19zeW1iaWFuIG9zX2xpbnV4ICcgK1xuICAgICAgJ29zX3Vua25vd24gb3Nfd2lucGhvbmUgb3NfdGl6ZW4gb3Nfd2luOG5hdGl2ZSAnICtcbiAgICAgICdvc193aWl1IG9zXzNkcyAgb3NfcHN2aXRhIG9zX2JiMTAgb3NfcHM0IG9zX3hib3hvbmUgJyArXG4gICAgICAnb3NfcHMzIG9zX3hib3gzNjAgb3NfdXdwIG9zX3R2b3Mgb3Nfc3dpdGNoICcgK1xuICAgICAgJ2Jyb3dzZXJfbm90X2FfYnJvd3NlciBicm93c2VyX3Vua25vd24gYnJvd3Nlcl9pZSBicm93c2VyX2ZpcmVmb3ggJyArXG4gICAgICAnYnJvd3Nlcl9jaHJvbWUgYnJvd3Nlcl9zYWZhcmkgYnJvd3Nlcl9zYWZhcmlfbW9iaWxlIGJyb3dzZXJfb3BlcmEgJyArXG4gICAgICAnYnJvd3Nlcl90aXplbiBicm93c2VyX2VkZ2UgYnJvd3Nlcl93aW5kb3dzX3N0b3JlIGJyb3dzZXJfaWVfbW9iaWxlICAnICtcbiAgICAgICdkZXZpY2VfaW9zX3Vua25vd24gZGV2aWNlX2lvc19pcGhvbmUgZGV2aWNlX2lvc19pcGhvbmVfcmV0aW5hICcgK1xuICAgICAgJ2RldmljZV9pb3NfaXBhZCBkZXZpY2VfaW9zX2lwYWRfcmV0aW5hIGRldmljZV9pb3NfaXBob25lNSAnICtcbiAgICAgICdkZXZpY2VfaW9zX2lwaG9uZTYgZGV2aWNlX2lvc19pcGhvbmU2cGx1cyBkZXZpY2VfZW11bGF0b3IgJyArXG4gICAgICAnZGV2aWNlX3RhYmxldCBkaXNwbGF5X2xhbmRzY2FwZSBkaXNwbGF5X2xhbmRzY2FwZV9mbGlwcGVkICcgK1xuICAgICAgJ2Rpc3BsYXlfcG9ydHJhaXQgZGlzcGxheV9wb3J0cmFpdF9mbGlwcGVkIHRtX3NsZWVwIHRtX2NvdW50dnN5bmNzICcgK1xuICAgICAgJ29mX2NoYWxsZW5nZV93aW4gb2ZfY2hhbGxlbiBnZV9sb3NlIG9mX2NoYWxsZW5nZV90aWUgJyArXG4gICAgICAnbGVhZGVyYm9hcmRfdHlwZV9udW1iZXIgbGVhZGVyYm9hcmRfdHlwZV90aW1lX21pbnNfc2VjcyAnICtcbiAgICAgICdjbXBmdW5jX25ldmVyIGNtcGZ1bmNfbGVzcyBjbXBmdW5jX2VxdWFsIGNtcGZ1bmNfbGVzc2VxdWFsICcgK1xuICAgICAgJ2NtcGZ1bmNfZ3JlYXRlciBjbXBmdW5jX25vdGVxdWFsIGNtcGZ1bmNfZ3JlYXRlcmVxdWFsIGNtcGZ1bmNfYWx3YXlzICcgK1xuICAgICAgJ2N1bGxfbm9jdWxsaW5nIGN1bGxfY2xvY2t3aXNlIGN1bGxfY291bnRlcmNsb2Nrd2lzZSBsaWdodHR5cGVfZGlyICcgK1xuICAgICAgJ2xpZ2h0dHlwZV9wb2ludCBpYXBfZXZfc3RvcmVsb2FkIGlhcF9ldl9wcm9kdWN0IGlhcF9ldl9wdXJjaGFzZSAnICtcbiAgICAgICdpYXBfZXZfY29uc3VtZSBpYXBfZXZfcmVzdG9yZSBpYXBfc3RvcmVsb2FkX29rIGlhcF9zdG9yZWxvYWRfZmFpbGVkICcgK1xuICAgICAgJ2lhcF9zdGF0dXNfdW5pbml0aWFsaXNlZCBpYXBfc3RhdHVzX3VuYXZhaWxhYmxlIGlhcF9zdGF0dXNfbG9hZGluZyAnICtcbiAgICAgICdpYXBfc3RhdHVzX2F2YWlsYWJsZSBpYXBfc3RhdHVzX3Byb2Nlc3NpbmcgaWFwX3N0YXR1c19yZXN0b3JpbmcgJyArXG4gICAgICAnaWFwX2ZhaWxlZCBpYXBfdW5hdmFpbGFibGUgaWFwX2F2YWlsYWJsZSBpYXBfcHVyY2hhc2VkIGlhcF9jYW5jZWxlZCAnICtcbiAgICAgICdpYXBfcmVmdW5kZWQgZmJfbG9naW5fZGVmYXVsdCBmYl9sb2dpbl9mYWxsYmFja190b193ZWJ2aWV3ICcgK1xuICAgICAgJ2ZiX2xvZ2luX25vX2ZhbGxiYWNrX3RvX3dlYnZpZXcgZmJfbG9naW5fZm9yY2luZ193ZWJ2aWV3ICcgK1xuICAgICAgJ2ZiX2xvZ2luX3VzZV9zeXN0ZW1fYWNjb3VudCBmYl9sb2dpbl9mb3JjaW5nX3NhZmFyaSAgJyArXG4gICAgICAncGh5X2pvaW50X2FuY2hvcl8xX3ggcGh5X2pvaW50X2FuY2hvcl8xX3kgcGh5X2pvaW50X2FuY2hvcl8yX3ggJyArXG4gICAgICAncGh5X2pvaW50X2FuY2hvcl8yX3kgcGh5X2pvaW50X3JlYWN0aW9uX2ZvcmNlX3ggJyArXG4gICAgICAncGh5X2pvaW50X3JlYWN0aW9uX2ZvcmNlX3kgcGh5X2pvaW50X3JlYWN0aW9uX3RvcnF1ZSAnICtcbiAgICAgICdwaHlfam9pbnRfbW90b3Jfc3BlZWQgcGh5X2pvaW50X2FuZ2xlIHBoeV9qb2ludF9tb3Rvcl90b3JxdWUgJyArXG4gICAgICAncGh5X2pvaW50X21heF9tb3Rvcl90b3JxdWUgcGh5X2pvaW50X3RyYW5zbGF0aW9uIHBoeV9qb2ludF9zcGVlZCAnICtcbiAgICAgICdwaHlfam9pbnRfbW90b3JfZm9yY2UgcGh5X2pvaW50X21heF9tb3Rvcl9mb3JjZSBwaHlfam9pbnRfbGVuZ3RoXzEgJyArXG4gICAgICAncGh5X2pvaW50X2xlbmd0aF8yIHBoeV9qb2ludF9kYW1waW5nX3JhdGlvIHBoeV9qb2ludF9mcmVxdWVuY3kgJyArXG4gICAgICAncGh5X2pvaW50X2xvd2VyX2FuZ2xlX2xpbWl0IHBoeV9qb2ludF91cHBlcl9hbmdsZV9saW1pdCAnICtcbiAgICAgICdwaHlfam9pbnRfYW5nbGVfbGltaXRzIHBoeV9qb2ludF9tYXhfbGVuZ3RoIHBoeV9qb2ludF9tYXhfdG9ycXVlICcgK1xuICAgICAgJ3BoeV9qb2ludF9tYXhfZm9yY2UgcGh5X2RlYnVnX3JlbmRlcl9hYWJiICcgK1xuICAgICAgJ3BoeV9kZWJ1Z19yZW5kZXJfY29sbGlzaW9uX3BhaXJzIHBoeV9kZWJ1Z19yZW5kZXJfY29tcyAnICtcbiAgICAgICdwaHlfZGVidWdfcmVuZGVyX2NvcmVfc2hhcGVzIHBoeV9kZWJ1Z19yZW5kZXJfam9pbnRzICcgK1xuICAgICAgJ3BoeV9kZWJ1Z19yZW5kZXJfb2JiIHBoeV9kZWJ1Z19yZW5kZXJfc2hhcGVzICAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZmxhZ193YXRlciBwaHlfcGFydGljbGVfZmxhZ196b21iaWUgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2ZsYWdfd2FsbCBwaHlfcGFydGljbGVfZmxhZ19zcHJpbmcgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2ZsYWdfZWxhc3RpYyBwaHlfcGFydGljbGVfZmxhZ192aXNjb3VzICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9mbGFnX3Bvd2RlciBwaHlfcGFydGljbGVfZmxhZ190ZW5zaWxlICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9mbGFnX2NvbG91cm1peGluZyBwaHlfcGFydGljbGVfZmxhZ19jb2xvcm1peGluZyAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZ3JvdXBfZmxhZ19zb2xpZCBwaHlfcGFydGljbGVfZ3JvdXBfZmxhZ19yaWdpZCAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZGF0YV9mbGFnX3R5cGVmbGFncyBwaHlfcGFydGljbGVfZGF0YV9mbGFnX3Bvc2l0aW9uICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9kYXRhX2ZsYWdfdmVsb2NpdHkgcGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19jb2xvdXIgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19jb2xvciBwaHlfcGFydGljbGVfZGF0YV9mbGFnX2NhdGVnb3J5ICAnICtcbiAgICAgICdhY2hpZXZlbWVudF9vdXJfaW5mbyBhY2hpZXZlbWVudF9mcmllbmRzX2luZm8gJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfbGVhZGVyYm9hcmRfaW5mbyBhY2hpZXZlbWVudF9hY2hpZXZlbWVudF9pbmZvICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2ZpbHRlcl9hbGxfcGxheWVycyBhY2hpZXZlbWVudF9maWx0ZXJfZnJpZW5kc19vbmx5ICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2ZpbHRlcl9mYXZvcml0ZXNfb25seSAnICtcbiAgICAgICdhY2hpZXZlbWVudF90eXBlX2FjaGlldmVtZW50X2NoYWxsZW5nZSAnICtcbiAgICAgICdhY2hpZXZlbWVudF90eXBlX3Njb3JlX2NoYWxsZW5nZSBhY2hpZXZlbWVudF9waWNfbG9hZGVkICAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zaG93X3VpIGFjaGlldmVtZW50X3Nob3dfcHJvZmlsZSAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zaG93X2xlYWRlcmJvYXJkIGFjaGlldmVtZW50X3Nob3dfYWNoaWV2ZW1lbnQgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfc2hvd19iYW5rIGFjaGlldmVtZW50X3Nob3dfZnJpZW5kX3BpY2tlciAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zaG93X3B1cmNoYXNlX3Byb21wdCBuZXR3b3JrX3NvY2tldF90Y3AgJyArXG4gICAgICAnbmV0d29ya19zb2NrZXRfdWRwIG5ldHdvcmtfc29ja2V0X2JsdWV0b290aCBuZXR3b3JrX3R5cGVfY29ubmVjdCAnICtcbiAgICAgICduZXR3b3JrX3R5cGVfZGlzY29ubmVjdCBuZXR3b3JrX3R5cGVfZGF0YSAnICtcbiAgICAgICduZXR3b3JrX3R5cGVfbm9uX2Jsb2NraW5nX2Nvbm5lY3QgbmV0d29ya19jb25maWdfY29ubmVjdF90aW1lb3V0ICcgK1xuICAgICAgJ25ldHdvcmtfY29uZmlnX3VzZV9ub25fYmxvY2tpbmdfc29ja2V0ICcgK1xuICAgICAgJ25ldHdvcmtfY29uZmlnX2VuYWJsZV9yZWxpYWJsZV91ZHAgJyArXG4gICAgICAnbmV0d29ya19jb25maWdfZGlzYWJsZV9yZWxpYWJsZV91ZHAgYnVmZmVyX2ZpeGVkIGJ1ZmZlcl9ncm93ICcgK1xuICAgICAgJ2J1ZmZlcl93cmFwIGJ1ZmZlcl9mYXN0IGJ1ZmZlcl92YnVmZmVyIGJ1ZmZlcl9uZXR3b3JrIGJ1ZmZlcl91OCAnICtcbiAgICAgICdidWZmZXJfczggYnVmZmVyX3UxNiBidWZmZXJfczE2IGJ1ZmZlcl91MzIgYnVmZmVyX3MzMiBidWZmZXJfdTY0ICcgK1xuICAgICAgJ2J1ZmZlcl9mMTYgYnVmZmVyX2YzMiBidWZmZXJfZjY0IGJ1ZmZlcl9ib29sIGJ1ZmZlcl90ZXh0ICcgK1xuICAgICAgJ2J1ZmZlcl9zdHJpbmcgYnVmZmVyX3N1cmZhY2VfY29weSBidWZmZXJfc2Vla19zdGFydCAnICtcbiAgICAgICdidWZmZXJfc2Vla19yZWxhdGl2ZSBidWZmZXJfc2Vla19lbmQgJyArXG4gICAgICAnYnVmZmVyX2dlbmVyYWxlcnJvciBidWZmZXJfb3V0b2ZzcGFjZSBidWZmZXJfb3V0b2Zib3VuZHMgJyArXG4gICAgICAnYnVmZmVyX2ludmFsaWR0eXBlICB0ZXh0X3R5cGUgYnV0dG9uX3R5cGUgaW5wdXRfdHlwZSBBTlNJX0NIQVJTRVQgJyArXG4gICAgICAnREVGQVVMVF9DSEFSU0VUIEVBU1RFVVJPUEVfQ0hBUlNFVCBSVVNTSUFOX0NIQVJTRVQgU1lNQk9MX0NIQVJTRVQgJyArXG4gICAgICAnU0hJRlRKSVNfQ0hBUlNFVCBIQU5HRVVMX0NIQVJTRVQgR0IyMzEyX0NIQVJTRVQgQ0hJTkVTRUJJRzVfQ0hBUlNFVCAnICtcbiAgICAgICdKT0hBQl9DSEFSU0VUIEhFQlJFV19DSEFSU0VUIEFSQUJJQ19DSEFSU0VUIEdSRUVLX0NIQVJTRVQgJyArXG4gICAgICAnVFVSS0lTSF9DSEFSU0VUIFZJRVROQU1FU0VfQ0hBUlNFVCBUSEFJX0NIQVJTRVQgTUFDX0NIQVJTRVQgJyArXG4gICAgICAnQkFMVElDX0NIQVJTRVQgT0VNX0NIQVJTRVQgIGdwX2ZhY2UxIGdwX2ZhY2UyIGdwX2ZhY2UzIGdwX2ZhY2U0ICcgK1xuICAgICAgJ2dwX3Nob3VsZGVybCBncF9zaG91bGRlcnIgZ3Bfc2hvdWxkZXJsYiBncF9zaG91bGRlcnJiIGdwX3NlbGVjdCAnICtcbiAgICAgICdncF9zdGFydCBncF9zdGlja2wgZ3Bfc3RpY2tyIGdwX3BhZHUgZ3BfcGFkZCBncF9wYWRsIGdwX3BhZHIgJyArXG4gICAgICAnZ3BfYXhpc2xoIGdwX2F4aXNsdiBncF9heGlzcmggZ3BfYXhpc3J2IG92X2ZyaWVuZHMgb3ZfY29tbXVuaXR5ICcgK1xuICAgICAgJ292X3BsYXllcnMgb3Zfc2V0dGluZ3Mgb3ZfZ2FtZWdyb3VwIG92X2FjaGlldmVtZW50cyBsYl9zb3J0X25vbmUgJyArXG4gICAgICAnbGJfc29ydF9hc2NlbmRpbmcgbGJfc29ydF9kZXNjZW5kaW5nIGxiX2Rpc3Bfbm9uZSBsYl9kaXNwX251bWVyaWMgJyArXG4gICAgICAnbGJfZGlzcF90aW1lX3NlYyBsYl9kaXNwX3RpbWVfbXMgdWdjX3Jlc3VsdF9zdWNjZXNzICcgK1xuICAgICAgJ3VnY19maWxldHlwZV9jb21tdW5pdHkgdWdjX2ZpbGV0eXBlX21pY3JvdHJhbnMgdWdjX3Zpc2liaWxpdHlfcHVibGljICcgK1xuICAgICAgJ3VnY192aXNpYmlsaXR5X2ZyaWVuZHNfb25seSB1Z2NfdmlzaWJpbGl0eV9wcml2YXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9SYW5rZWRCeVZvdGUgdWdjX3F1ZXJ5X1JhbmtlZEJ5UHVibGljYXRpb25EYXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9BY2NlcHRlZEZvckdhbWVSYW5rZWRCeUFjY2VwdGFuY2VEYXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9SYW5rZWRCeVRyZW5kICcgK1xuICAgICAgJ3VnY19xdWVyeV9GYXZvcml0ZWRCeUZyaWVuZHNSYW5rZWRCeVB1YmxpY2F0aW9uRGF0ZSAnICtcbiAgICAgICd1Z2NfcXVlcnlfQ3JlYXRlZEJ5RnJpZW5kc1JhbmtlZEJ5UHVibGljYXRpb25EYXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9SYW5rZWRCeU51bVRpbWVzUmVwb3J0ZWQgJyArXG4gICAgICAndWdjX3F1ZXJ5X0NyZWF0ZWRCeUZvbGxvd2VkVXNlcnNSYW5rZWRCeVB1YmxpY2F0aW9uRGF0ZSAnICtcbiAgICAgICd1Z2NfcXVlcnlfTm90WWV0UmF0ZWQgdWdjX3F1ZXJ5X1JhbmtlZEJ5VG90YWxWb3Rlc0FzYyAnICtcbiAgICAgICd1Z2NfcXVlcnlfUmFua2VkQnlWb3Rlc1VwIHVnY19xdWVyeV9SYW5rZWRCeVRleHRTZWFyY2ggJyArXG4gICAgICAndWdjX3NvcnRvcmRlcl9DcmVhdGlvbk9yZGVyRGVzYyB1Z2Nfc29ydG9yZGVyX0NyZWF0aW9uT3JkZXJBc2MgJyArXG4gICAgICAndWdjX3NvcnRvcmRlcl9UaXRsZUFzYyB1Z2Nfc29ydG9yZGVyX0xhc3RVcGRhdGVkRGVzYyAnICtcbiAgICAgICd1Z2Nfc29ydG9yZGVyX1N1YnNjcmlwdGlvbkRhdGVEZXNjIHVnY19zb3J0b3JkZXJfVm90ZVNjb3JlRGVzYyAnICtcbiAgICAgICd1Z2Nfc29ydG9yZGVyX0Zvck1vZGVyYXRpb24gdWdjX2xpc3RfUHVibGlzaGVkIHVnY19saXN0X1ZvdGVkT24gJyArXG4gICAgICAndWdjX2xpc3RfVm90ZWRVcCB1Z2NfbGlzdF9Wb3RlZERvd24gdWdjX2xpc3RfV2lsbFZvdGVMYXRlciAnICtcbiAgICAgICd1Z2NfbGlzdF9GYXZvcml0ZWQgdWdjX2xpc3RfU3Vic2NyaWJlZCB1Z2NfbGlzdF9Vc2VkT3JQbGF5ZWQgJyArXG4gICAgICAndWdjX2xpc3RfRm9sbG93ZWQgdWdjX21hdGNoX0l0ZW1zIHVnY19tYXRjaF9JdGVtc19NdHggJyArXG4gICAgICAndWdjX21hdGNoX0l0ZW1zX1JlYWR5VG9Vc2UgdWdjX21hdGNoX0NvbGxlY3Rpb25zIHVnY19tYXRjaF9BcnR3b3JrICcgK1xuICAgICAgJ3VnY19tYXRjaF9WaWRlb3MgdWdjX21hdGNoX1NjcmVlbnNob3RzIHVnY19tYXRjaF9BbGxHdWlkZXMgJyArXG4gICAgICAndWdjX21hdGNoX1dlYkd1aWRlcyB1Z2NfbWF0Y2hfSW50ZWdyYXRlZEd1aWRlcyAnICtcbiAgICAgICd1Z2NfbWF0Y2hfVXNhYmxlSW5HYW1lIHVnY19tYXRjaF9Db250cm9sbGVyQmluZGluZ3MgICcgK1xuICAgICAgJ3ZlcnRleF91c2FnZV9wb3NpdGlvbiB2ZXJ0ZXhfdXNhZ2VfY29sb3VyIHZlcnRleF91c2FnZV9jb2xvciAnICtcbiAgICAgICd2ZXJ0ZXhfdXNhZ2Vfbm9ybWFsIHZlcnRleF91c2FnZV90ZXhjb29yZCB2ZXJ0ZXhfdXNhZ2VfdGV4dGNvb3JkICcgK1xuICAgICAgJ3ZlcnRleF91c2FnZV9ibGVuZHdlaWdodCB2ZXJ0ZXhfdXNhZ2VfYmxlbmRpbmRpY2VzICcgK1xuICAgICAgJ3ZlcnRleF91c2FnZV9wc2l6ZSB2ZXJ0ZXhfdXNhZ2VfdGFuZ2VudCB2ZXJ0ZXhfdXNhZ2VfYmlub3JtYWwgJyArXG4gICAgICAndmVydGV4X3VzYWdlX2ZvZyB2ZXJ0ZXhfdXNhZ2VfZGVwdGggdmVydGV4X3VzYWdlX3NhbXBsZSAnICtcbiAgICAgICd2ZXJ0ZXhfdHlwZV9mbG9hdDEgdmVydGV4X3R5cGVfZmxvYXQyIHZlcnRleF90eXBlX2Zsb2F0MyAnICtcbiAgICAgICd2ZXJ0ZXhfdHlwZV9mbG9hdDQgdmVydGV4X3R5cGVfY29sb3VyIHZlcnRleF90eXBlX2NvbG9yICcgK1xuICAgICAgJ3ZlcnRleF90eXBlX3VieXRlNCBsYXllcmVsZW1lbnR0eXBlX3VuZGVmaW5lZCAnICtcbiAgICAgICdsYXllcmVsZW1lbnR0eXBlX2JhY2tncm91bmQgbGF5ZXJlbGVtZW50dHlwZV9pbnN0YW5jZSAnICtcbiAgICAgICdsYXllcmVsZW1lbnR0eXBlX29sZHRpbGVtYXAgbGF5ZXJlbGVtZW50dHlwZV9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJlbGVtZW50dHlwZV90aWxlbWFwIGxheWVyZWxlbWVudHR5cGVfcGFydGljbGVzeXN0ZW0gJyArXG4gICAgICAnbGF5ZXJlbGVtZW50dHlwZV90aWxlIHRpbGVfcm90YXRlIHRpbGVfZmxpcCB0aWxlX21pcnJvciAnICtcbiAgICAgICd0aWxlX2luZGV4X21hc2sga2J2X3R5cGVfZGVmYXVsdCBrYnZfdHlwZV9hc2NpaSBrYnZfdHlwZV91cmwgJyArXG4gICAgICAna2J2X3R5cGVfZW1haWwga2J2X3R5cGVfbnVtYmVycyBrYnZfdHlwZV9waG9uZSBrYnZfdHlwZV9waG9uZV9uYW1lICcgK1xuICAgICAgJ2tidl9yZXR1cm5rZXlfZGVmYXVsdCBrYnZfcmV0dXJua2V5X2dvIGtidl9yZXR1cm5rZXlfZ29vZ2xlICcgK1xuICAgICAgJ2tidl9yZXR1cm5rZXlfam9pbiBrYnZfcmV0dXJua2V5X25leHQga2J2X3JldHVybmtleV9yb3V0ZSAnICtcbiAgICAgICdrYnZfcmV0dXJua2V5X3NlYXJjaCBrYnZfcmV0dXJua2V5X3NlbmQga2J2X3JldHVybmtleV95YWhvbyAnICtcbiAgICAgICdrYnZfcmV0dXJua2V5X2RvbmUga2J2X3JldHVybmtleV9jb250aW51ZSBrYnZfcmV0dXJua2V5X2VtZXJnZW5jeSAnICtcbiAgICAgICdrYnZfYXV0b2NhcGl0YWxpemVfbm9uZSBrYnZfYXV0b2NhcGl0YWxpemVfd29yZHMgJyArXG4gICAgICAna2J2X2F1dG9jYXBpdGFsaXplX3NlbnRlbmNlcyBrYnZfYXV0b2NhcGl0YWxpemVfY2hhcmFjdGVycycsXG4gICAgc3ltYm9sOiAnYXJndW1lbnRfcmVsYXRpdmUgYXJndW1lbnQgYXJndW1lbnQwIGFyZ3VtZW50MSBhcmd1bWVudDIgJyArXG4gICAgICAnYXJndW1lbnQzIGFyZ3VtZW50NCBhcmd1bWVudDUgYXJndW1lbnQ2IGFyZ3VtZW50NyBhcmd1bWVudDggJyArXG4gICAgICAnYXJndW1lbnQ5IGFyZ3VtZW50MTAgYXJndW1lbnQxMSBhcmd1bWVudDEyIGFyZ3VtZW50MTMgYXJndW1lbnQxNCAnICtcbiAgICAgICdhcmd1bWVudDE1IGFyZ3VtZW50X2NvdW50IHggeSB4cHJldmlvdXMgeXByZXZpb3VzIHhzdGFydCB5c3RhcnQgJyArXG4gICAgICAnaHNwZWVkIHZzcGVlZCBkaXJlY3Rpb24gc3BlZWQgZnJpY3Rpb24gZ3Jhdml0eSBncmF2aXR5X2RpcmVjdGlvbiAnICtcbiAgICAgICdwYXRoX2luZGV4IHBhdGhfcG9zaXRpb24gcGF0aF9wb3NpdGlvbnByZXZpb3VzIHBhdGhfc3BlZWQgJyArXG4gICAgICAncGF0aF9zY2FsZSBwYXRoX29yaWVudGF0aW9uIHBhdGhfZW5kYWN0aW9uIG9iamVjdF9pbmRleCBpZCBzb2xpZCAnICtcbiAgICAgICdwZXJzaXN0ZW50IG1hc2tfaW5kZXggaW5zdGFuY2VfY291bnQgaW5zdGFuY2VfaWQgcm9vbV9zcGVlZCBmcHMgJyArXG4gICAgICAnZnBzX3JlYWwgY3VycmVudF90aW1lIGN1cnJlbnRfeWVhciBjdXJyZW50X21vbnRoIGN1cnJlbnRfZGF5ICcgK1xuICAgICAgJ2N1cnJlbnRfd2Vla2RheSBjdXJyZW50X2hvdXIgY3VycmVudF9taW51dGUgY3VycmVudF9zZWNvbmQgYWxhcm0gJyArXG4gICAgICAndGltZWxpbmVfaW5kZXggdGltZWxpbmVfcG9zaXRpb24gdGltZWxpbmVfc3BlZWQgdGltZWxpbmVfcnVubmluZyAnICtcbiAgICAgICd0aW1lbGluZV9sb29wIHJvb20gcm9vbV9maXJzdCByb29tX2xhc3Qgcm9vbV93aWR0aCByb29tX2hlaWdodCAnICtcbiAgICAgICdyb29tX2NhcHRpb24gcm9vbV9wZXJzaXN0ZW50IHNjb3JlIGxpdmVzIGhlYWx0aCBzaG93X3Njb3JlICcgK1xuICAgICAgJ3Nob3dfbGl2ZXMgc2hvd19oZWFsdGggY2FwdGlvbl9zY29yZSBjYXB0aW9uX2xpdmVzIGNhcHRpb25faGVhbHRoICcgK1xuICAgICAgJ2V2ZW50X3R5cGUgZXZlbnRfbnVtYmVyIGV2ZW50X29iamVjdCBldmVudF9hY3Rpb24gJyArXG4gICAgICAnYXBwbGljYXRpb25fc3VyZmFjZSBnYW1lbWFrZXJfcHJvIGdhbWVtYWtlcl9yZWdpc3RlcmVkICcgK1xuICAgICAgJ2dhbWVtYWtlcl92ZXJzaW9uIGVycm9yX29jY3VycmVkIGVycm9yX2xhc3QgZGVidWdfbW9kZSAnICtcbiAgICAgICdrZXlib2FyZF9rZXkga2V5Ym9hcmRfbGFzdGtleSBrZXlib2FyZF9sYXN0Y2hhciBrZXlib2FyZF9zdHJpbmcgJyArXG4gICAgICAnbW91c2VfeCBtb3VzZV95IG1vdXNlX2J1dHRvbiBtb3VzZV9sYXN0YnV0dG9uIGN1cnNvcl9zcHJpdGUgJyArXG4gICAgICAndmlzaWJsZSBzcHJpdGVfaW5kZXggc3ByaXRlX3dpZHRoIHNwcml0ZV9oZWlnaHQgc3ByaXRlX3hvZmZzZXQgJyArXG4gICAgICAnc3ByaXRlX3lvZmZzZXQgaW1hZ2VfbnVtYmVyIGltYWdlX2luZGV4IGltYWdlX3NwZWVkIGRlcHRoICcgK1xuICAgICAgJ2ltYWdlX3hzY2FsZSBpbWFnZV95c2NhbGUgaW1hZ2VfYW5nbGUgaW1hZ2VfYWxwaGEgaW1hZ2VfYmxlbmQgJyArXG4gICAgICAnYmJveF9sZWZ0IGJib3hfcmlnaHQgYmJveF90b3AgYmJveF9ib3R0b20gbGF5ZXIgYmFja2dyb3VuZF9jb2xvdXIgICcgK1xuICAgICAgJ2JhY2tncm91bmRfc2hvd2NvbG91ciBiYWNrZ3JvdW5kX2NvbG9yIGJhY2tncm91bmRfc2hvd2NvbG9yICcgK1xuICAgICAgJ3ZpZXdfZW5hYmxlZCB2aWV3X2N1cnJlbnQgdmlld192aXNpYmxlIHZpZXdfeHZpZXcgdmlld195dmlldyAnICtcbiAgICAgICd2aWV3X3d2aWV3IHZpZXdfaHZpZXcgdmlld194cG9ydCB2aWV3X3lwb3J0IHZpZXdfd3BvcnQgdmlld19ocG9ydCAnICtcbiAgICAgICd2aWV3X2FuZ2xlIHZpZXdfaGJvcmRlciB2aWV3X3Zib3JkZXIgdmlld19oc3BlZWQgdmlld192c3BlZWQgJyArXG4gICAgICAndmlld19vYmplY3Qgdmlld19zdXJmYWNlX2lkIHZpZXdfY2FtZXJhIGdhbWVfaWQgZ2FtZV9kaXNwbGF5X25hbWUgJyArXG4gICAgICAnZ2FtZV9wcm9qZWN0X25hbWUgZ2FtZV9zYXZlX2lkIHdvcmtpbmdfZGlyZWN0b3J5IHRlbXBfZGlyZWN0b3J5ICcgK1xuICAgICAgJ3Byb2dyYW1fZGlyZWN0b3J5IGJyb3dzZXJfd2lkdGggYnJvd3Nlcl9oZWlnaHQgb3NfdHlwZSBvc19kZXZpY2UgJyArXG4gICAgICAnb3NfYnJvd3NlciBvc192ZXJzaW9uIGRpc3BsYXlfYWEgYXN5bmNfbG9hZCBkZWx0YV90aW1lICcgK1xuICAgICAgJ3dlYmdsX2VuYWJsZWQgZXZlbnRfZGF0YSBpYXBfZGF0YSBwaHlfcm90YXRpb24gcGh5X3Bvc2l0aW9uX3ggJyArXG4gICAgICAncGh5X3Bvc2l0aW9uX3kgcGh5X2FuZ3VsYXJfdmVsb2NpdHkgcGh5X2xpbmVhcl92ZWxvY2l0eV94ICcgK1xuICAgICAgJ3BoeV9saW5lYXJfdmVsb2NpdHlfeSBwaHlfc3BlZWRfeCBwaHlfc3BlZWRfeSBwaHlfc3BlZWQgJyArXG4gICAgICAncGh5X2FuZ3VsYXJfZGFtcGluZyBwaHlfbGluZWFyX2RhbXBpbmcgcGh5X2J1bGxldCAnICtcbiAgICAgICdwaHlfZml4ZWRfcm90YXRpb24gcGh5X2FjdGl2ZSBwaHlfbWFzcyBwaHlfaW5lcnRpYSBwaHlfY29tX3ggJyArXG4gICAgICAncGh5X2NvbV95IHBoeV9keW5hbWljIHBoeV9raW5lbWF0aWMgcGh5X3NsZWVwaW5nICcgK1xuICAgICAgJ3BoeV9jb2xsaXNpb25fcG9pbnRzIHBoeV9jb2xsaXNpb25feCBwaHlfY29sbGlzaW9uX3kgJyArXG4gICAgICAncGh5X2NvbF9ub3JtYWxfeCBwaHlfY29sX25vcm1hbF95IHBoeV9wb3NpdGlvbl94cHJldmlvdXMgJyArXG4gICAgICAncGh5X3Bvc2l0aW9uX3lwcmV2aW91cydcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ21sJywgJ0dNTCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLCAvLyBsYW5ndWFnZSBpcyBjYXNlLWluc2Vuc2l0aXZlXG4gICAga2V5d29yZHM6IEdNTF9LRVlXT1JEUyxcblxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBHT19LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2JyZWFrIGRlZmF1bHQgZnVuYyBpbnRlcmZhY2Ugc2VsZWN0IGNhc2UgbWFwIHN0cnVjdCBjaGFuIGVsc2UgZ290byBwYWNrYWdlIHN3aXRjaCAnICtcbiAgICAgICdjb25zdCBmYWxsdGhyb3VnaCBpZiByYW5nZSB0eXBlIGNvbnRpbnVlIGZvciBpbXBvcnQgcmV0dXJuIHZhciBnbyBkZWZlciAnICtcbiAgICAgICdib29sIGJ5dGUgY29tcGxleDY0IGNvbXBsZXgxMjggZmxvYXQzMiBmbG9hdDY0IGludDggaW50MTYgaW50MzIgaW50NjQgc3RyaW5nIHVpbnQ4ICcgK1xuICAgICAgJ3VpbnQxNiB1aW50MzIgdWludDY0IGludCB1aW50IHVpbnRwdHIgcnVuZScsXG4gICAgbGl0ZXJhbDpcbiAgICAgICAndHJ1ZSBmYWxzZSBpb3RhIG5pbCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnYXBwZW5kIGNhcCBjbG9zZSBjb21wbGV4IGNvcHkgaW1hZyBsZW4gbWFrZSBuZXcgcGFuaWMgcHJpbnQgcHJpbnRsbiByZWFsIHJlY292ZXIgZGVsZXRlJ1xuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ29sYW5nJ10sXG4gICAga2V5d29yZHM6IEdPX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICB7YmVnaW46ICdcXCcnLCBlbmQ6ICdbXlxcXFxcXFxcXVxcJyd9LFxuICAgICAgICAgIHtiZWdpbjogJ2AnLCBlbmQ6ICdgJ30sXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiBobGpzLkNfTlVNQkVSX1JFICsgJ1tpXScsIHJlbGV2YW5jZTogMX0sXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvOj0vIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jJywgZW5kOiAnXFxcXHMqKFxcXFx7fCQpJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlRJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBHT19LRVlXT1JEUyxcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bXCInXS9cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHJldHVybiB7XG4gICAgICBrZXl3b3Jkczoge1xuICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICdwcmludGxuIHJlYWRsbiBwcmludCBpbXBvcnQgbW9kdWxlIGZ1bmN0aW9uIGxvY2FsIHJldHVybiBsZXQgdmFyICcgK1xuICAgICAgICAgICd3aGlsZSBmb3IgZm9yZWFjaCB0aW1lcyBpbiBjYXNlIHdoZW4gbWF0Y2ggd2l0aCBicmVhayBjb250aW51ZSAnICtcbiAgICAgICAgICAnYXVnbWVudCBhdWdtZW50YXRpb24gZWFjaCBmaW5kIGZpbHRlciByZWR1Y2UgJyArXG4gICAgICAgICAgJ2lmIHRoZW4gZWxzZSBvdGhlcndpc2UgdHJ5IGNhdGNoIGZpbmFsbHkgcmFpc2UgdGhyb3cgb3JJZk51bGwgJyArXG4gICAgICAgICAgJ0R5bmFtaWNPYmplY3R8MTAgRHluYW1pY1ZhcmlhYmxlIHN0cnVjdCBPYnNlcnZhYmxlIG1hcCBzZXQgdmVjdG9yIGxpc3QgYXJyYXknLFxuICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICd0cnVlIGZhbHNlIG51bGwnXG4gICAgICB9LFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ3Rhc2sgcHJvamVjdCBhbGxwcm9qZWN0cyBzdWJwcm9qZWN0cyBhcnRpZmFjdHMgYnVpbGRzY3JpcHQgY29uZmlndXJhdGlvbnMgJyArXG4gICAgICAgICdkZXBlbmRlbmNpZXMgcmVwb3NpdG9yaWVzIHNvdXJjZVNldHMgZGVzY3JpcHRpb24gZGVsZXRlIGZyb20gaW50byBpbmNsdWRlICcgK1xuICAgICAgICAnZXhjbHVkZSBzb3VyY2UgY2xhc3NwYXRoIGRlc3RpbmF0aW9uRGlyIGluY2x1ZGVzIG9wdGlvbnMgc291cmNlQ29tcGF0aWJpbGl0eSAnICtcbiAgICAgICAgJ3RhcmdldENvbXBhdGliaWxpdHkgZ3JvdXAgZmxhdERpciBkb0xhc3QgZG9GaXJzdCBmbGF0dGVuIHRvZGlyIGZyb21kaXIgYW50ICcgK1xuICAgICAgICAnZGVmIGFic3RyYWN0IGJyZWFrIGNhc2UgY2F0Y2ggY29udGludWUgZGVmYXVsdCBkbyBlbHNlIGV4dGVuZHMgZmluYWwgZmluYWxseSAnICtcbiAgICAgICAgJ2ZvciBpZiBpbXBsZW1lbnRzIGluc3RhbmNlb2YgbmF0aXZlIG5ldyBwcml2YXRlIHByb3RlY3RlZCBwdWJsaWMgcmV0dXJuIHN0YXRpYyAnICtcbiAgICAgICAgJ3N3aXRjaCBzeW5jaHJvbml6ZWQgdGhyb3cgdGhyb3dzIHRyYW5zaWVudCB0cnkgdm9sYXRpbGUgd2hpbGUgc3RyaWN0ZnAgcGFja2FnZSAnICtcbiAgICAgICAgJ2ltcG9ydCBmYWxzZSBudWxsIHN1cGVyIHRoaXMgdHJ1ZSBhbnRscnRhc2sgY2hlY2tzdHlsZSBjb2RlbmFyYyBjb3B5IGJvb2xlYW4gJyArXG4gICAgICAgICdieXRlIGNoYXIgY2xhc3MgZG91YmxlIGZsb2F0IGludCBpbnRlcmZhY2UgbG9uZyBzaG9ydCB2b2lkIGNvbXBpbGUgcnVuVGltZSAnICtcbiAgICAgICAgJ2ZpbGUgZmlsZVRyZWUgYWJzIGFueSBhcHBlbmQgYXNMaXN0IGFzV3JpdGFibGUgY2FsbCBjb2xsZWN0IGNvbXBhcmVUbyBjb3VudCAnICtcbiAgICAgICAgJ2RpdiBkdW1wIGVhY2ggZWFjaEJ5dGUgZWFjaEZpbGUgZWFjaExpbmUgZXZlcnkgZmluZCBmaW5kQWxsIGZsYXR0ZW4gZ2V0QXQgJyArXG4gICAgICAgICdnZXRFcnIgZ2V0SW4gZ2V0T3V0IGdldFRleHQgZ3JlcCBpbW11dGFibGUgaW5qZWN0IGluc3BlY3QgaW50ZXJzZWN0IGludm9rZU1ldGhvZHMgJyArXG4gICAgICAgICdpc0Nhc2Ugam9pbiBsZWZ0U2hpZnQgbWludXMgbXVsdGlwbHkgbmV3SW5wdXRTdHJlYW0gbmV3T3V0cHV0U3RyZWFtIG5ld1ByaW50V3JpdGVyICcgK1xuICAgICAgICAnbmV3UmVhZGVyIG5ld1dyaXRlciBuZXh0IHBsdXMgcG9wIHBvd2VyIHByZXZpb3VzIHByaW50IHByaW50bG4gcHVzaCBwdXRBdCByZWFkICcgK1xuICAgICAgICAncmVhZEJ5dGVzIHJlYWRMaW5lcyByZXZlcnNlIHJldmVyc2VFYWNoIHJvdW5kIHNpemUgc29ydCBzcGxpdEVhY2hMaW5lIHN0ZXAgc3ViTWFwICcgK1xuICAgICAgICAndGltZXMgdG9JbnRlZ2VyIHRvTGlzdCB0b2tlbml6ZSB1cHRvIHdhaXRGb3JPcktpbGwgd2l0aFByaW50V3JpdGVyIHdpdGhSZWFkZXIgJyArXG4gICAgICAgICd3aXRoU3RyZWFtIHdpdGhXcml0ZXIgd2l0aFdyaXRlckFwcGVuZCB3cml0ZSB3cml0ZUxpbmUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5SRUdFWFBfTU9ERVxuXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHJldHVybiB7XG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICBsaXRlcmFsIDogJ3RydWUgZmFsc2UgbnVsbCcsXG4gICAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgJ2J5dGUgc2hvcnQgY2hhciBpbnQgbG9uZyBib29sZWFuIGZsb2F0IGRvdWJsZSB2b2lkICcgK1xuICAgICAgICAgICAgLy8gZ3Jvb3Z5IHNwZWNpZmljIGtleXdvcmRzXG4gICAgICAgICAgICAnZGVmIGFzIGluIGFzc2VydCB0cmFpdCAnICtcbiAgICAgICAgICAgIC8vIGNvbW1vbiBrZXl3b3JkcyB3aXRoIEphdmFcbiAgICAgICAgICAgICdzdXBlciB0aGlzIGFic3RyYWN0IHN0YXRpYyB2b2xhdGlsZSB0cmFuc2llbnQgcHVibGljIHByaXZhdGUgcHJvdGVjdGVkIHN5bmNocm9uaXplZCBmaW5hbCAnICtcbiAgICAgICAgICAgICdjbGFzcyBpbnRlcmZhY2UgZW51bSBpZiBlbHNlIGZvciB3aGlsZSBzd2l0Y2ggY2FzZSBicmVhayBkZWZhdWx0IGNvbnRpbnVlICcgK1xuICAgICAgICAgICAgJ3Rocm93IHRocm93cyB0cnkgY2F0Y2ggZmluYWxseSBpbXBsZW1lbnRzIGV4dGVuZHMgbmV3IGltcG9ydCBwYWNrYWdlIHJldHVybiBpbnN0YW5jZW9mJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgICAgICAgICAnXFxcXCovJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZSA6IDAsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWF0IHVwIEAncyBpbiBlbWFpbHMgdG8gcHJldmVudCB0aGVtIHRvIGJlIHJlY29nbml6ZWQgYXMgZG9jdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcdytALywgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA6ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46IFwiJycnXCIsIGVuZDogXCInJydcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBcIlxcXFwkL1wiLCBlbmQ6IFwiL1xcXFwkXCIsXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvfj9cXC9bXlxcL1xcbl0rXFwvLyxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEVcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogXCJeIyEvdXNyL2Jpbi9lbnZcIiwgZW5kOiAnJCcsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogJ1xcbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSB0cmFpdCBlbnVtJywgZW5kOiAneycsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogJzonLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBoaWdobGlnaHQgbWFwIGtleXMgYW5kIG5hbWVkIHBhcmFtZXRlcnMgYXMgc3RyaW5nc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsIGJlZ2luOiAvW15cXD9dezB9W0EtWmEtejAtOV8kXSsgKjovXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGNhdGNoIG1pZGRsZSBlbGVtZW50IG9mIHRoZSB0ZXJuYXJ5IG9wZXJhdG9yXG4gICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgaGlnaGxpZ2h0IGl0IGFzIGEgbGFiZWwsIG5hbWVkIHBhcmFtZXRlciwgb3IgbWFwIGtleVxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXFw/LywgZW5kOiAvXFw6L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBoaWdobGlnaHQgbGFiZWxlZCBzdGF0ZW1lbnRzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJywgYmVnaW46ICdeXFxcXHMqW0EtWmEtejAtOV8kXSs6JyxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogLyN8PFxcLy9cbiAgICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLy8gVE9ETyBzdXBwb3J0IGZpbHRlciB0YWdzIGxpa2UgOmphdmFzY3JpcHQsIHN1cHBvcnQgaW5saW5lIEhUTUxcbmZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ14hISEoICg1fDFcXFxcLjF8U3RyaWN0fEZyYW1lc2V0fEJhc2ljfE1vYmlsZXxSREZhfFhNTFxcXFxiLiopKT8kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIEZJWE1FIHRoZXNlIGNvbW1lbnRzIHNob3VsZCBiZSBhbGxvd2VkIHRvIHNwYW4gaW5kZW50ZWQgbGluZXNcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ15cXFxccyooIT0jfD0jfC0jfC8pLiokJyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqKC18PXwhPSkoPyEjKScsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcXFxuJyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ3J1YnknXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKiUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLXRhZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFx3KydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJyxcbiAgICAgICAgICAgIGJlZ2luOiAnI1tcXFxcdy1dKydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWNsYXNzJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXC5bXFxcXHctXSsnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ3tcXFxccyonLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqfScsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICc6XFxcXHcrXFxcXHMqPT4nLFxuICAgICAgICAgICAgICAgIGVuZDogJyxcXFxccysnLFxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJzpcXFxcdysnXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcdysnLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXChcXFxccyonLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqXFxcXCknLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFx3K1xcXFxzKj0nLFxuICAgICAgICAgICAgICAgIGVuZDogJ1xcXFxzKycsXG4gICAgICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHcrJyxcbiAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcdysnLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKls9fl1cXFxccyonXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyN7JyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnfScsXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6ICdydWJ5J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHZhciBCVUlMVF9JTlMgPSB7J2J1aWx0aW4tbmFtZSc6ICdlYWNoIGluIHdpdGggaWYgZWxzZSB1bmxlc3MgYmluZGF0dHIgYWN0aW9uIGNvbGxlY3Rpb24gZGVidWdnZXIgbG9nIG91dGxldCB0ZW1wbGF0ZSB1bmJvdW5kIHZpZXcgeWllbGQgbG9va3VwJ307XG5cbiAgdmFyIElERU5USUZJRVJfUExBSU5fT1JfUVVPVEVEID0ge1xuICAgIGJlZ2luOiAvXCIuKj9cInwnLio/J3xcXFsuKj9cXF18XFx3Ky9cbiAgfTtcblxuICB2YXIgRVhQUkVTU0lPTl9PUl9IRUxQRVJfQ0FMTCA9IGhsanMuaW5oZXJpdChJREVOVElGSUVSX1BMQUlOX09SX1FVT1RFRCwge1xuICAgIGtleXdvcmRzOiBCVUlMVF9JTlMsXG4gICAgc3RhcnRzOiB7XG4gICAgICAvLyBoZWxwZXIgcGFyYW1zXG4gICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbaGxqcy5pbmhlcml0KElERU5USUZJRVJfUExBSU5fT1JfUVVPVEVELCB7cmVsZXZhbmNlOiAwfSldXG4gICAgfVxuICB9KTtcblxuICB2YXIgQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFMgPSBobGpzLmluaGVyaXQoRVhQUkVTU0lPTl9PUl9IRUxQRVJfQ0FMTCwge1xuICAgIGNsYXNzTmFtZTogJ25hbWUnXG4gIH0pO1xuXG4gIHZhciBCQVNJQ19NVVNUQUNIRV9DT05URU5UUyA9IGhsanMuaW5oZXJpdChFWFBSRVNTSU9OX09SX0hFTFBFUl9DQUxMLCB7XG4gICAgLy8gcmVsZXZhbmNlIDAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgY29uY2VybmluZyBhdXRvLWRldGVjdGlvblxuICAgIHJlbGV2YW5jZTogMFxuICB9KTtcblxuICB2YXIgRVNDQVBFX01VU1RBQ0hFX1dJVEhfUFJFQ0VFRElOR19CQUNLU0xBU0ggPSB7YmVnaW46IC9cXFxcXFx7XFx7Lywgc2tpcDogdHJ1ZX07XG4gIHZhciBQUkVWRU5UX0VTQ0FQRV9XSVRIX0FOT1RIRVJfUFJFQ0VFRElOR19CQUNLU0xBU0ggPSB7YmVnaW46IC9cXFxcXFxcXCg/PVxce1xceykvLCBza2lwOiB0cnVlfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaGJzJywgJ2h0bWwuaGJzJywgJ2h0bWwuaGFuZGxlYmFycyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBFU0NBUEVfTVVTVEFDSEVfV0lUSF9QUkVDRUVESU5HX0JBQ0tTTEFTSCxcbiAgICAgIFBSRVZFTlRfRVNDQVBFX1dJVEhfQU5PVEhFUl9QUkVDRUVESU5HX0JBQ0tTTEFTSCxcbiAgICAgIGhsanMuQ09NTUVOVCgvXFx7XFx7IS0tLywgLy0tXFx9XFx9LyksXG4gICAgICBobGpzLkNPTU1FTlQoL1xce1xceyEvLCAvXFx9XFx9LyksXG4gICAgICB7XG4gICAgICAgIC8vIG9wZW4gcmF3IGJsb2NrIFwie3t7e3Jhd319fX0gY29udGVudCBub3QgZXZhbHVhdGVkIHt7e3svcmF3fX19fVwiXG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXRhZycsXG4gICAgICAgIGJlZ2luOiAvXFx7XFx7XFx7XFx7KD8hXFwvKS8sIGVuZDogL1xcfVxcfVxcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFNdLFxuICAgICAgICBzdGFydHM6IHtlbmQ6IC9cXHtcXHtcXHtcXHtcXC8vLCByZXR1cm5FbmQ6IHRydWUsIHN1Ykxhbmd1YWdlOiAneG1sJ31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGNsb3NlIHJhdyBibG9ja1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1xce1xce1xcLy8sIGVuZDogL1xcfVxcfVxcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFNdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBvcGVuIGJsb2NrIHN0YXRlbWVudFxuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1sjXFwvXS8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFNdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGVtcGxhdGUgdmFyaWFibGUgb3IgaGVscGVyLWNhbGwgdGhhdCBpcyBOT1QgaHRtbC1lc2NhcGVkXG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHtcXHsvLCBlbmQ6IC9cXH1cXH1cXH0vLFxuICAgICAgICBrZXl3b3JkczogQlVJTFRfSU5TLFxuICAgICAgICBjb250YWluczogW0JBU0lDX01VU1RBQ0hFX0NPTlRFTlRTXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGVtcGxhdGUgdmFyaWFibGUgb3IgaGVscGVyLWNhbGwgdGhhdCBpcyBodG1sLWVzY2FwZWRcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xce1xcey8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGtleXdvcmRzOiBCVUlMVF9JTlMsXG4gICAgICAgIGNvbnRhaW5zOiBbQkFTSUNfTVVTVEFDSEVfQ09OVEVOVFNdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlQgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAney0nLFxuICAgICAgICAnLX0nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdXG4gIH07XG5cbiAgdmFyIFBSQUdNQSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ3stIycsIGVuZDogJyMtfSdcbiAgfTtcblxuICB2YXIgUFJFUFJPQ0VTU09SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMnLCBlbmQ6ICckJ1xuICB9O1xuXG4gIHZhciBDT05TVFJVQ1RPUiA9IHtcbiAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHdcXCddKicsIC8vIFRPRE86IG90aGVyIGNvbnN0cnVjdG9ycyAoYnVpbGQtaW4sIGluZml4KS5cbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGlsbGVnYWw6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFBSQUdNQSxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtjbGFzc05hbWU6ICd0eXBlJywgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XSooXFxcXCgoXFxcXC5cXFxcLnwsfFxcXFx3KylcXFxcKSk/J30sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdbX2Etel1bXFxcXHdcXCddKid9KSxcbiAgICAgIENPTU1FTlRcbiAgICBdXG4gIH07XG5cbiAgdmFyIFJFQ09SRCA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICBjb250YWluczogTElTVC5jb250YWluc1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydocyddLFxuICAgIGtleXdvcmRzOlxuICAgICAgJ2xldCBpbiBpZiB0aGVuIGVsc2UgY2FzZSBvZiB3aGVyZSBkbyBtb2R1bGUgaW1wb3J0IGhpZGluZyAnICtcbiAgICAgICdxdWFsaWZpZWQgdHlwZSBkYXRhIG5ld3R5cGUgZGVyaXZpbmcgY2xhc3MgaW5zdGFuY2UgYXMgZGVmYXVsdCAnICtcbiAgICAgICdpbmZpeCBpbmZpeGwgaW5maXhyIGZvcmVpZ24gZXhwb3J0IGNjYWxsIHN0ZGNhbGwgY3BsdXNwbHVzICcgK1xuICAgICAgJ2p2bSBkb3RuZXQgc2FmZSB1bnNhZmUgZmFtaWx5IGZvcmFsbCBtZG8gcHJvYyByZWMnLFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIC8vIFRvcC1sZXZlbCBjb25zdHJ1Y3Rpb25zLlxuXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdtb2R1bGUnLCBlbmQ6ICd3aGVyZScsXG4gICAgICAgIGtleXdvcmRzOiAnbW9kdWxlIHdoZXJlJyxcbiAgICAgICAgY29udGFpbnM6IFtMSVNULCBDT01NRU5UXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxXXFxcXC58OydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGJpbXBvcnRcXFxcYicsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ2ltcG9ydCBxdWFsaWZpZWQgYXMgaGlkaW5nJyxcbiAgICAgICAgY29udGFpbnM6IFtMSVNULCBDT01NRU5UXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxXXFxcXC58OydcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbjogJ14oXFxcXHMqKT8oY2xhc3N8aW5zdGFuY2UpXFxcXGInLCBlbmQ6ICd3aGVyZScsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgZmFtaWx5IGluc3RhbmNlIHdoZXJlJyxcbiAgICAgICAgY29udGFpbnM6IFtDT05TVFJVQ1RPUiwgTElTVCwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihkYXRhfChuZXcpP3R5cGUpXFxcXGInLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdkYXRhIGZhbWlseSB0eXBlIG5ld3R5cGUgZGVyaXZpbmcnLFxuICAgICAgICBjb250YWluczogW1BSQUdNQSwgQ09OU1RSVUNUT1IsIExJU1QsIFJFQ09SRCwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWZhdWx0JywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIExJU1QsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW5maXggaW5maXhsIGluZml4cicsIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW2hsanMuQ19OVU1CRVJfTU9ERSwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGJmb3JlaWduXFxcXGInLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdmb3JlaWduIGltcG9ydCBleHBvcnQgY2NhbGwgc3RkY2FsbCBjcGx1c3BsdXMganZtICcgK1xuICAgICAgICAgICAgICAgICAgJ2RvdG5ldCBzYWZlIHVuc2FmZScsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIGhsanMuUVVPVEVfU1RSSU5HX01PREUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjIVxcXFwvdXNyXFxcXC9iaW5cXFxcL2VudlxcIHJ1bmhhc2tlbGwnLCBlbmQ6ICckJ1xuICAgICAgfSxcblxuICAgICAgLy8gXCJXaGl0ZXNwYWNlc1wiLlxuXG4gICAgICBQUkFHTUEsXG4gICAgICBQUkVQUk9DRVNTT1IsXG5cbiAgICAgIC8vIExpdGVyYWxzIGFuZCBuYW1lcy5cblxuICAgICAgLy8gVE9ETzogY2hhcmFjdGVycy5cbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBDT05TVFJVQ1RPUixcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJ15bX2Etel1bXFxcXHdcXCddKid9KSxcblxuICAgICAgQ09NTUVOVCxcblxuICAgICAge2JlZ2luOiAnLT58PC0nfSAvLyBObyBtYXJrdXAsIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVpfJF1bYS16QS1aMC05XyRdKic7XG4gIHZhciBJREVOVF9GVU5DX1JFVFVSTl9UWVBFX1JFID0gJyhbKl18W2EtekEtWl8kXVthLXpBLVowLTlfJF0qKSc7XG5cbiAgdmFyIEhBWEVfQkFTSUNfVFlQRVMgPSAnSW50IEZsb2F0IFN0cmluZyBCb29sIER5bmFtaWMgVm9pZCBBcnJheSAnO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydoeCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYnJlYWsgY2FzZSBjYXN0IGNhdGNoIGNvbnRpbnVlIGRlZmF1bHQgZG8gZHluYW1pYyBlbHNlIGVudW0gZXh0ZXJuICcgK1xuICAgICAgICAgICAgICAgJ2ZvciBmdW5jdGlvbiBoZXJlIGlmIGltcG9ydCBpbiBpbmxpbmUgbmV2ZXIgbmV3IG92ZXJyaWRlIHBhY2thZ2UgcHJpdmF0ZSBnZXQgc2V0ICcgK1xuICAgICAgICAgICAgICAgJ3B1YmxpYyByZXR1cm4gc3RhdGljIHN1cGVyIHN3aXRjaCB0aGlzIHRocm93IHRyYWNlIHRyeSB0eXBlZGVmIHVudHlwZWQgdXNpbmcgdmFyIHdoaWxlICcgK1xuICAgICAgICAgICAgICAgSEFYRV9CQVNJQ19UWVBFUyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAndHJhY2UgdGhpcycsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBudWxsIF8nXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgeyBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyBpbnRlcnBvbGF0ZS1hYmxlIHN0cmluZ3NcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3N1YnN0JywgLy8gaW50ZXJwb2xhdGlvblxuICAgICAgICAgICAgYmVnaW46ICdcXFxcJFxcXFx7JywgZW5kOiAnXFxcXH0nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3N1YnN0JywgLy8gaW50ZXJwb2xhdGlvblxuICAgICAgICAgICAgYmVnaW46ICdcXFxcJCcsIGVuZDogJ1xcXFxXfSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnbWV0YScsIC8vIGNvbXBpbGVyIG1ldGFcbiAgICAgICAgYmVnaW46ICdAOicsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdtZXRhJywgLy8gY29tcGlsZXIgY29uZGl0aW9uYWxzXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbHNlaWYgZW5kIGVycm9yJ31cbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ3R5cGUnLCAvLyBmdW5jdGlvbiB0eXBlc1xuICAgICAgICBiZWdpbjogJzpbIFxcdF0qJywgZW5kOiAnW15BLVphLXowLTlfIFxcdFxcXFwtPl0nLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsIC8vIHR5cGVzXG4gICAgICAgIGJlZ2luOiAnOlsgXFx0XSonLCBlbmQ6ICdcXFxcVycsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsIC8vIGluc3RhbnRpYXRpb25cbiAgICAgICAgYmVnaW46ICduZXcgKicsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdjbGFzcycsIC8vIGVudW1zXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdlbnVtJywgZW5kOiAnXFxcXHsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdjbGFzcycsIC8vIGFic3RyYWN0c1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnYWJzdHJhY3QnLCBlbmQ6ICdbXFxcXHskXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogJ2Zyb20gKycsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAndG8gKycsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF0sXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAga2V5d29yZDogJ2Fic3RyYWN0IGZyb20gdG8nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ2NsYXNzJywgLy8gY2xhc3Nlc1xuICAgICAgICBiZWdpbjogJ1xcXFxiKGNsYXNzfGludGVyZmFjZSkgKycsIGVuZDogJ1tcXFxceyRdJywgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihleHRlbmRzfGltcGxlbWVudHMpICsnLFxuICAgICAgICAgICAga2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFLFxuICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlRJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICdcXFxcKCcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcUycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC88XFwvL1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IC9bXFx3XFwuX10rLyxcbiAgICBrZXl3b3JkczogJ2dvdG8gZ29zdWIgcmV0dXJuIGJyZWFrIHJlcGVhdCBsb29wIGNvbnRpbnVlIHdhaXQgYXdhaXQgZGltIHNkaW0gZm9yZWFjaCBkaW10eXBlIGR1cCBkdXBwdHIgZW5kIHN0b3AgbmV3bW9kIGRlbG1vZCBtcmVmIHJ1biBleGdvdG8gb24gbWNhbGwgYXNzZXJ0IGxvZ21lcyBuZXdsYWIgcmVzdW1lIHlpZWxkIG9uZXhpdCBvbmVycm9yIG9ua2V5IG9uY2xpY2sgb25jbWQgZXhpc3QgZGVsZXRlIG1rZGlyIGNoZGlyIGRpcmxpc3QgYmxvYWQgYnNhdmUgYmNvcHkgbWVtZmlsZSBpZiBlbHNlIHBva2Ugd3Bva2UgbHBva2UgZ2V0c3RyIGNoZHBtIG1lbWV4cGFuZCBtZW1jcHkgbWVtc2V0IG5vdGVzZWwgbm90ZWFkZCBub3RlZGVsIG5vdGVsb2FkIG5vdGVzYXZlIHJhbmRvbWl6ZSBub3RldW5zZWwgbm90ZWdldCBzcGxpdCBzdHJyZXAgc2V0ZWFzZSBidXR0b24gY2hnZGlzcCBleGVjIGRpYWxvZyBtbWxvYWQgbW1wbGF5IG1tc3RvcCBtY2kgcHNldCBwZ2V0IHN5c2NvbG9yIG1lcyBwcmludCB0aXRsZSBwb3MgY2lyY2xlIGNscyBmb250IHN5c2ZvbnQgb2Jqc2l6ZSBwaWNsb2FkIGNvbG9yIHBhbGNvbG9yIHBhbGV0dGUgcmVkcmF3IHdpZHRoIGdzZWwgZ2NvcHkgZ3pvb20gZ21vZGUgYm1wc2F2ZSBoc3Zjb2xvciBnZXRrZXkgbGlzdGJveCBjaGtib3ggY29tYm94IGlucHV0IG1lc2JveCBidWZmZXIgc2NyZWVuIGJnc2NyIG1vdXNlIG9ianNlbCBncm9sbCBsaW5lIGNscm9iaiBib3hmIG9ianBybSBvYmptb2RlIHN0aWNrIGdyZWN0IGdyb3RhdGUgZ3NxdWFyZSBncmFkZiBvYmppbWFnZSBvYmpza2lwIG9iamVuYWJsZSBjZWxsb2FkIGNlbGRpdiBjZWxwdXQgbmV3Y29tIHF1ZXJ5Y29tIGRlbGNvbSBjbnZzdG93IGNvbXJlcyBheG9iaiB3aW5vYmogc2VuZG1zZyBjb21ldmVudCBjb21ldmFyZyBzYXJyYXljb252IGNhbGxmdW5jIGNudnd0b3MgY29tZXZkaXNwIGxpYnB0ciBzeXN0ZW0gaHNwc3RhdCBoc3B2ZXIgc3RhdCBjbnQgZXJyIHN0cnNpemUgbG9vcGxldiBzdWJsZXYgaXBhcmFtIHdwYXJhbSBscGFyYW0gcmVmc3RyIHJlZmR2YWwgaW50IHJuZCBzdHJsZW4gbGVuZ3RoIGxlbmd0aDIgbGVuZ3RoMyBsZW5ndGg0IHZhcnR5cGUgZ2V0dGltZSBwZWVrIHdwZWVrIGxwZWVrIHZhcnB0ciB2YXJ1c2Ugbm90ZWluZm8gaW5zdHIgYWJzIGxpbWl0IGdldGVhc2Ugc3RyIHN0cm1pZCBzdHJmIGdldHBhdGggc3RydHJpbSBzaW4gY29zIHRhbiBhdGFuIHNxcnQgZG91YmxlIGFic2YgZXhwZiBsb2dmIGxpbWl0ZiBwb3dmIGdldGVhc2VmIG1vdXNleCBtb3VzZXkgbW91c2V3IGh3bmQgaGluc3RhbmNlIGhkYyBnaW5mbyBvYmppbmZvIGRpcmluZm8gc3lzaW5mbyB0aGlzbW9kIF9faHNwdmVyX18gX19oc3AzMF9fIF9fZGF0ZV9fIF9fdGltZV9fIF9fbGluZV9fIF9fZmlsZV9fIF9kZWJ1ZyBfX2hzcGRlZl9fIGFuZCBvciB4b3Igbm90IHNjcmVlbl9ub3JtYWwgc2NyZWVuX3BhbGV0dGUgc2NyZWVuX2hpZGUgc2NyZWVuX2ZpeGVkc2l6ZSBzY3JlZW5fdG9vbCBzY3JlZW5fZnJhbWUgZ21vZGVfZ2RpIGdtb2RlX21lbSBnbW9kZV9yZ2IwIGdtb2RlX2FscGhhIGdtb2RlX3JnYjBhbHBoYSBnbW9kZV9hZGQgZ21vZGVfc3ViIGdtb2RlX3BpeGVsYSBnaW5mb19teCBnaW5mb19teSBnaW5mb19hY3QgZ2luZm9fc2VsIGdpbmZvX3d4MSBnaW5mb193eTEgZ2luZm9fd3gyIGdpbmZvX3d5MiBnaW5mb192eCBnaW5mb192eSBnaW5mb19zaXpleCBnaW5mb19zaXpleSBnaW5mb193aW54IGdpbmZvX3dpbnkgZ2luZm9fbWVzeCBnaW5mb19tZXN5IGdpbmZvX3IgZ2luZm9fZyBnaW5mb19iIGdpbmZvX3BhbHVzZSBnaW5mb19kaXNweCBnaW5mb19kaXNweSBnaW5mb19jeCBnaW5mb19jeSBnaW5mb19pbnRpZCBnaW5mb19uZXdpZCBnaW5mb19zeCBnaW5mb19zeSBvYmppbmZvX21vZGUgb2JqaW5mb19ibXNjciBvYmppbmZvX2h3bmQgbm90ZW1heCBub3Rlc2l6ZSBkaXJfY3VyIGRpcl9leGUgZGlyX3dpbiBkaXJfc3lzIGRpcl9jbWRsaW5lIGRpcl9kZXNrdG9wIGRpcl9teWRvYyBkaXJfdHYgZm9udF9ub3JtYWwgZm9udF9ib2xkIGZvbnRfaXRhbGljIGZvbnRfdW5kZXJsaW5lIGZvbnRfc3RyaWtlb3V0IGZvbnRfYW50aWFsaWFzIG9iam1vZGVfbm9ybWFsIG9iam1vZGVfZ3VpZm9udCBvYmptb2RlX3VzZWZvbnQgZ3NxdWFyZV9ncmFkIG1zZ290aGljIG1zbWluY2hvIGRvIHVudGlsIHdoaWxlIHdlbmQgZm9yIG5leHQgX2JyZWFrIF9jb250aW51ZSBzd2l0Y2ggY2FzZSBkZWZhdWx0IHN3YnJlYWsgc3dlbmQgZGRpbSBsZGltIGFsbG9jIG1fcGkgcmFkMmRlZyBkZWcycmFkIGVhc2VfbGluZWFyIGVhc2VfcXVhZF9pbiBlYXNlX3F1YWRfb3V0IGVhc2VfcXVhZF9pbm91dCBlYXNlX2N1YmljX2luIGVhc2VfY3ViaWNfb3V0IGVhc2VfY3ViaWNfaW5vdXQgZWFzZV9xdWFydGljX2luIGVhc2VfcXVhcnRpY19vdXQgZWFzZV9xdWFydGljX2lub3V0IGVhc2VfYm91bmNlX2luIGVhc2VfYm91bmNlX291dCBlYXNlX2JvdW5jZV9pbm91dCBlYXNlX3NoYWtlX2luIGVhc2Vfc2hha2Vfb3V0IGVhc2Vfc2hha2VfaW5vdXQgZWFzZV9sb29wJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG5cbiAgICAgIHtcbiAgICAgICAgLy8gbXVsdGktbGluZSBzdHJpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICd7XCInLCBlbmQ6ICdcIn0nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG5cbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuXG4gICAgICB7XG4gICAgICAgIC8vIHByZS1wcm9jZXNzb3JcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnYWRkaW9uIGNmdW5jIGNtZCBjbXBvcHQgY29tZnVuYyBjb25zdCBkZWZjZnVuYyBkZWZmdW5jIGRlZmluZSBlbHNlIGVuZGlmIGVudW0gZXBhY2sgZnVuYyBnbG9iYWwgaWYgaWZkZWYgaWZuZGVmIGluY2x1ZGUgbW9kY2Z1bmMgbW9kZnVuYyBtb2Rpbml0IG1vZHRlcm0gbW9kdWxlIHBhY2sgcGFja29wdCByZWdjbWQgcnVudGltZSB1bmRlZiB1c2Vjb20gdXNlbGliJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdtZXRhLXN0cmluZyd9KSxcbiAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIC8vIGxhYmVsXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwqKFxcXFx3K3xAKSdcbiAgICAgIH0sXG5cbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRfSU5TID0gJ2FjdGlvbiBjb2xsZWN0aW9uIGNvbXBvbmVudCBjb25jYXQgZGVidWdnZXIgZWFjaCBlYWNoLWluIGVsc2UgZ2V0IGhhc2ggaWYgaW5wdXQgbGluay10byBsb2MgbG9nIG11dCBvdXRsZXQgcGFydGlhbCBxdWVyeS1wYXJhbXMgcmVuZGVyIHRleHRhcmVhIHVuYm91bmQgdW5sZXNzIHdpdGggeWllbGQgdmlldyc7XG5cbiAgdmFyIEFUVFJfQVNTSUdOTUVOVCA9IHtcbiAgICBpbGxlZ2FsOiAvXFx9XFx9LyxcbiAgICBiZWdpbjogL1thLXpBLVowLTlfXSs9LyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsIGJlZ2luOiAvW2EtekEtWjAtOV9dKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNVQl9FWFBSID0ge1xuICAgIGlsbGVnYWw6IC9cXH1cXH0vLFxuICAgIGJlZ2luOiAvXFwpLywgZW5kOiAvXFwpLyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1thLXpBLVpcXC5cXC1dKy8sXG4gICAgICAgIGtleXdvcmRzOiB7YnVpbHRfaW46IEJVSUxUX0lOU30sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLCByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBUQUdfSU5OQVJEUyA9IHtcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgcmVsZXZhbmNlOiAwLFxuICAgIGtleXdvcmRzOiB7a2V5d29yZDogJ2FzJywgYnVpbHRfaW46IEJVSUxUX0lOU30sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBBVFRSX0FTU0lHTk1FTlQsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgne3shKC0tKT8nLCAnKC0tKT99fScpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1sjXFwvXS8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogL1thLXpBLVpcXC5cXC1dKy8sXG4gICAgICAgICAgICBrZXl3b3JkczogeydidWlsdGluLW5hbWUnOiBCVUlMVF9JTlN9LFxuICAgICAgICAgICAgc3RhcnRzOiBUQUdfSU5OQVJEU1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xce1xce1thLXpBLVpdW2EtekEtWlxcLV0rLywgZW5kOiAvXFx9XFx9LyxcbiAgICAgICAga2V5d29yZHM6IHtrZXl3b3JkOiAnYXMnLCBidWlsdF9pbjogQlVJTFRfSU5TfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVkVSU0lPTiA9ICdIVFRQL1swLTlcXFxcLl0rJztcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2h0dHBzJ10sXG4gICAgaWxsZWdhbDogJ1xcXFxTJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ14nICsgVkVSU0lPTiwgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbe2NsYXNzTmFtZTogJ251bWJlcicsIGJlZ2luOiAnXFxcXGJcXFxcZHszfVxcXFxiJ31dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ15bQS1aXSsgKC4qPykgJyArIFZFUlNJT04gKyAnJCcsIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICcgJywgZW5kOiAnICcsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBWRVJTSU9OXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiAnW0EtWl0rJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHcnLCBlbmQ6ICc6ICcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbnxcXFxcc3w9JyxcbiAgICAgICAgc3RhcnRzOiB7ZW5kOiAnJCcsIHJlbGV2YW5jZTogMH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXG5cXFxcbicsXG4gICAgICAgIHN0YXJ0czoge3N1Ykxhbmd1YWdlOiBbXSwgZW5kc1dpdGhQYXJlbnQ6IHRydWV9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGtleXdvcmRzID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgLy8ga2V5d29yZHNcbiAgICAgICchPSAlICU9ICYgJj0gKiAqKiAqKj0gKj0gKm1hcCAnICtcbiAgICAgICcrICs9ICwgLS1idWlsZC1jbGFzcy0tIC0taW1wb3J0LS0gLT0gLiAvIC8vIC8vPSAnICtcbiAgICAgICcvPSA8IDw8IDw8PSA8PSA9ID4gPj0gPj4gPj49ICcgK1xuICAgICAgJ0AgQD0gXiBePSBhYnMgYWNjdW11bGF0ZSBhbGwgYW5kIGFueSBhcC1jb21wb3NlICcgK1xuICAgICAgJ2FwLWRvdGltZXMgYXAtZWFjaCBhcC1lYWNoLXdoaWxlIGFwLWZpbHRlciBhcC1maXJzdCBhcC1pZiBhcC1sYXN0IGFwLW1hcCBhcC1tYXAtd2hlbiBhcC1waXBlICcgK1xuICAgICAgJ2FwLXJlZHVjZSBhcC1yZWplY3QgYXBwbHkgYXMtPiBhc2NpaSBhc3NlcnQgYXNzb2MgYmluIGJyZWFrIGJ1dGxhc3QgJyArXG4gICAgICAnY2FsbGFibGUgY2FsbGluZy1tb2R1bGUtbmFtZSBjYXIgY2FzZSBjZHIgY2hhaW4gY2hyIGNvbGw/IGNvbWJpbmF0aW9ucyBjb21waWxlICcgK1xuICAgICAgJ2NvbXByZXNzIGNvbmQgY29ucyBjb25zPyBjb250aW51ZSBjb3VudCBjdXJyeSBjdXQgY3ljbGUgZGVjICcgK1xuICAgICAgJ2RlZiBkZWZhdWx0LW1ldGhvZCBkZWZjbGFzcyBkZWZtYWNybyBkZWZtYWNyby1hbGlhcyBkZWZtYWNyby9nISBkZWZtYWluIGRlZm1ldGhvZCBkZWZtdWx0aSBkZWZuICcgK1xuICAgICAgJ2RlZm4tYWxpYXMgZGVmbmMgZGVmbnIgZGVmcmVhZGVyIGRlZnNlcSBkZWwgZGVsYXR0ciBkZWxldGUtcm91dGUgZGljdC1jb21wIGRpciAnICtcbiAgICAgICdkaXNhc3NlbWJsZSBkaXNwYXRjaC1yZWFkZXItbWFjcm8gZGlzdGluY3QgZGl2bW9kIGRvIGRvdG8gZHJvcCBkcm9wLWxhc3QgZHJvcC13aGlsZSBlbXB0eT8gJyArXG4gICAgICAnZW5kLXNlcXVlbmNlIGV2YWwgZXZhbC1hbmQtY29tcGlsZSBldmFsLXdoZW4tY29tcGlsZSBldmVuPyBldmVyeT8gZXhjZXB0IGV4ZWMgZmlsdGVyIGZpcnN0ICcgK1xuICAgICAgJ2ZsYXR0ZW4gZmxvYXQ/IGZuIGZuYyBmbnIgZm9yIGZvciogZm9ybWF0IGZyYWN0aW9uIGdlbmV4cHIgJyArXG4gICAgICAnZ2Vuc3ltIGdldCBnZXRhdHRyIGdsb2JhbCBnbG9iYWxzIGdyb3VwLWJ5IGhhc2F0dHIgaGFzaCBoZXggaWQgJyArXG4gICAgICAnaWRlbnRpdHkgaWYgaWYqIGlmLW5vdCBpZi1weXRob24yIGltcG9ydCBpbiBpbmMgaW5wdXQgaW5zdGFuY2U/ICcgK1xuICAgICAgJ2ludGVnZXIgaW50ZWdlci1jaGFyPyBpbnRlZ2VyPyBpbnRlcmxlYXZlIGludGVycG9zZSBpcyBpcy1jb2xsIGlzLWNvbnMgaXMtZW1wdHkgaXMtZXZlbiAnICtcbiAgICAgICdpcy1ldmVyeSBpcy1mbG9hdCBpcy1pbnN0YW5jZSBpcy1pbnRlZ2VyIGlzLWludGVnZXItY2hhciBpcy1pdGVyYWJsZSBpcy1pdGVyYXRvciBpcy1rZXl3b3JkIGlzLW5lZyBpcy1ub25lICcgK1xuICAgICAgJ2lzLW5vdCBpcy1udW1lcmljIGlzLW9kZCBpcy1wb3MgaXMtc3RyaW5nIGlzLXN5bWJvbCBpcy16ZXJvIGlzaW5zdGFuY2UgaXNsaWNlIGlzc3ViY2xhc3MgJyArXG4gICAgICAnaXRlciBpdGVyYWJsZT8gaXRlcmF0ZSBpdGVyYXRvcj8ga2V5d29yZCBrZXl3b3JkPyBsYW1iZGEgbGFzdCBsZW4gbGV0ICcgK1xuICAgICAgJ2xpZiBsaWYtbm90IGxpc3QqIGxpc3QtY29tcCBsb2NhbHMgbG9vcCBtYWNyby1lcnJvciBtYWNyb2V4cGFuZCBtYWNyb2V4cGFuZC0xIG1hY3JvZXhwYW5kLWFsbCAnICtcbiAgICAgICdtYXAgbWF4IG1lcmdlLXdpdGggbWV0aG9kLWRlY29yYXRvciBtaW4gbXVsdGktZGVjb3JhdG9yIG11bHRpY29tYmluYXRpb25zIG5hbWUgbmVnPyBuZXh0ICcgK1xuICAgICAgJ25vbmU/IG5vbmxvY2FsIG5vdCBub3QtaW4gbm90PyBudGggbnVtZXJpYz8gb2N0IG9kZD8gb3BlbiAnICtcbiAgICAgICdvciBvcmQgcGFydGl0aW9uIHBlcm11dGF0aW9ucyBwb3M/IHBvc3Qtcm91dGUgcG9zdHdhbGsgcG93IHByZXdhbGsgcHJpbnQgJyArXG4gICAgICAncHJvZHVjdCBwcm9maWxlL2NhbGxzIHByb2ZpbGUvY3B1IHB1dC1yb3V0ZSBxdWFzaXF1b3RlIHF1b3RlIHJhaXNlIHJhbmdlIHJlYWQgcmVhZC1zdHIgJyArXG4gICAgICAncmVjdXJzaXZlLXJlcGxhY2UgcmVkdWNlIHJlbW92ZSByZXBlYXQgcmVwZWF0ZWRseSByZXByIHJlcXVpcmUgcmVzdCByb3VuZCByb3V0ZSAnICtcbiAgICAgICdyb3V0ZS13aXRoLW1ldGhvZHMgcndtIHNlY29uZCBzZXEgc2V0LWNvbXAgc2V0YXR0ciBzZXR2IHNvbWUgc29ydGVkIHN0cmluZyAnICtcbiAgICAgICdzdHJpbmc/IHN1bSBzd2l0Y2ggc3ltYm9sPyB0YWtlIHRha2UtbnRoIHRha2Utd2hpbGUgdGVlIHRyeSB1bmxlc3MgJyArXG4gICAgICAndW5xdW90ZSB1bnF1b3RlLXNwbGljaW5nIHZhcnMgd2FsayB3aGVuIHdoaWxlIHdpdGggd2l0aCogd2l0aC1kZWNvcmF0b3Igd2l0aC1nZW5zeW1zICcgK1xuICAgICAgJ3hpIHhvciB5aWVsZCB5aWVsZC1mcm9tIHplcm8/IHppcCB6aXAtbG9uZ2VzdCB8IHw9IH4nXG4gICB9O1xuXG4gIHZhciBTWU1CT0xTVEFSVCA9ICdhLXpBLVpfXFxcXC0hLj8rKj08PiYjXFwnJztcbiAgdmFyIFNZTUJPTF9SRSA9ICdbJyArIFNZTUJPTFNUQVJUICsgJ11bJyArIFNZTUJPTFNUQVJUICsgJzAtOS87Ol0qJztcbiAgdmFyIFNJTVBMRV9OVU1CRVJfUkUgPSAnWy0rXT9cXFxcZCsoXFxcXC5cXFxcZCspPyc7XG5cbiAgdmFyIFNIRUJBTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdeIyEnLCBlbmQ6ICckJ1xuICB9O1xuXG4gIHZhciBTWU1CT0wgPSB7XG4gICAgYmVnaW46IFNZTUJPTF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogU0lNUExFX05VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pO1xuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnOycsXG4gICAgJyQnLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46IC9cXGIoW1R0XXJ1ZXxbRmZdYWxzZXxuaWx8Tm9uZSlcXGIvXG4gIH07XG4gIHZhciBDT0xMRUNUSU9OID0ge1xuICAgIGJlZ2luOiAnW1xcXFxbXFxcXHtdJywgZW5kOiAnW1xcXFxdXFxcXH1dJ1xuICB9O1xuICB2YXIgSElOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogJ1xcXFxeJyArIFNZTUJPTF9SRVxuICB9O1xuICB2YXIgSElOVF9DT0wgPSBobGpzLkNPTU1FTlQoJ1xcXFxeXFxcXHsnLCAnXFxcXH0nKTtcbiAgdmFyIEtFWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzpdezEsMn0nICsgU1lNQk9MX1JFXG4gIH07XG4gIHZhciBMSVNUID0ge1xuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSdcbiAgfTtcbiAgdmFyIEJPRFkgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBOQU1FID0ge1xuICAgIGtleXdvcmRzOiBrZXl3b3JkcyxcbiAgICBsZXhlbWVzOiBTWU1CT0xfUkUsXG4gICAgY2xhc3NOYW1lOiAnbmFtZScsIGJlZ2luOiBTWU1CT0xfUkUsXG4gICAgc3RhcnRzOiBCT0RZXG4gIH07XG4gIHZhciBERUZBVUxUX0NPTlRBSU5TID0gW0xJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMLCBTWU1CT0xdO1xuXG4gIExJU1QuY29udGFpbnMgPSBbaGxqcy5DT01NRU5UKCdjb21tZW50JywgJycpLCBOQU1FLCBCT0RZXTtcbiAgQk9EWS5jb250YWlucyA9IERFRkFVTFRfQ09OVEFJTlM7XG4gIENPTExFQ1RJT04uY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydoeWxhbmcnXSxcbiAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICBjb250YWluczogW1NIRUJBTkcsIExJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RBUlRfQlJBQ0tFVCA9ICdcXFxcWyc7XG4gIHZhciBFTkRfQlJBQ0tFVCA9ICdcXFxcXSc7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydpNyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIC8vIFNvbWUga2V5d29yZHMgbW9yZSBvciBsZXNzIHVuaXF1ZSB0byBJNywgZm9yIHJlbGV2YW5jZS5cbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIGtpbmQ6XG4gICAgICAgICd0aGluZyByb29tIHBlcnNvbiBtYW4gd29tYW4gYW5pbWFsIGNvbnRhaW5lciAnICtcbiAgICAgICAgJ3N1cHBvcnRlciBiYWNrZHJvcCBkb29yICcgK1xuICAgICAgICAvLyBjaGFyYWN0ZXJpc3RpYzpcbiAgICAgICAgJ3NjZW5lcnkgb3BlbiBjbG9zZWQgbG9ja2VkIGluc2lkZSBnZW5kZXIgJyArXG4gICAgICAgIC8vIHZlcmI6XG4gICAgICAgICdpcyBhcmUgc2F5IHVuZGVyc3RhbmQgJyArXG4gICAgICAgIC8vIG1pc2Mga2V5d29yZDpcbiAgICAgICAgJ2tpbmQgb2YgcnVsZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgICAgICAgICBiZWdpbjogU1RBUlRfQlJBQ0tFVCwgZW5kOiBFTkRfQlJBQ0tFVFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIGJlZ2luOiAvXihWb2x1bWV8Qm9va3xQYXJ0fENoYXB0ZXJ8U2VjdGlvbnxUYWJsZSlcXGIvLFxuICAgICAgICBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gUnVsZSBkZWZpbml0aW9uXG4gICAgICAgIC8vIFRoaXMgaXMgaGVyZSBmb3IgcmVsZXZhbmNlLlxuICAgICAgICBiZWdpbjogL14oQ2hlY2t8Q2Fycnkgb3V0fFJlcG9ydHxJbnN0ZWFkIG9mfFRvfFJ1bGV8V2hlbnxCZWZvcmV8QWZ0ZXIpXFxiLyxcbiAgICAgICAgZW5kOiAnOicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy9SdWxlIG5hbWVcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXChUaGlzJywgZW5kOiAnXFxcXCknXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46IFNUQVJUX0JSQUNLRVQsIGVuZDogRU5EX0JSQUNLRVQsXG4gICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiBcInN0cmluZ1wiLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogXCInJydcIiwgZW5kOiBcIicnJ1wiLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LCB7XG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSwge1xuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInXG4gICAgICB9LCB7XG4gICAgICAgIGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIlxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RvbWwnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJzsnLCAnJCcpLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIGJlZ2luOiAvXlxccypcXFsrLywgZW5kOiAvXFxdKy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXlthLXowLTlcXFtcXF1fXFwuLV0rXFxzKj1cXHMqLywgZW5kOiAnJCcsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgYmVnaW46IC9bYS16MC05XFxbXFxdX1xcLi1dKy9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvPS8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnKSxcbiAgICAgICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXFxib258b2ZmfHRydWV8ZmFsc2V8eWVzfG5vXFxiL1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICB7YmVnaW46IC9cXCRbXFx3XFxkXCJdW1xcd1xcZF9dKi99LFxuICAgICAgICAgICAgICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46IC8oW1xcK1xcLV0rKT9bXFxkXStfW1xcZF9dKy9cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG5cbiAgdmFyIEZfS0VZV09SRFMgPSB7XG4gICAgbGl0ZXJhbDogJy5GYWxzZS4gLlRydWUuJyxcbiAgICBrZXl3b3JkOiAna2luZCBkbyB3aGlsZSBwcml2YXRlIGNhbGwgaW50cmluc2ljIHdoZXJlIGVsc2V3aGVyZSAnICtcbiAgICAgICd0eXBlIGVuZHR5cGUgZW5kbW9kdWxlIGVuZHNlbGVjdCBlbmRpbnRlcmZhY2UgZW5kIGVuZGRvIGVuZGlmIGlmIGZvcmFsbCBlbmRmb3JhbGwgb25seSBjb250YWlucyBkZWZhdWx0IHJldHVybiBzdG9wIHRoZW4gJyArXG4gICAgICAncHVibGljIHN1YnJvdXRpbmV8MTAgZnVuY3Rpb24gcHJvZ3JhbSAuYW5kLiAub3IuIC5ub3QuIC5sZS4gLmVxLiAuZ2UuIC5ndC4gLmx0LiAnICtcbiAgICAgICdnb3RvIHNhdmUgZWxzZSB1c2UgbW9kdWxlIHNlbGVjdCBjYXNlICcgK1xuICAgICAgJ2FjY2VzcyBibGFuayBkaXJlY3QgZXhpc3QgZmlsZSBmbXQgZm9ybSBmb3JtYXR0ZWQgaW9zdGF0IG5hbWUgbmFtZWQgbmV4dHJlYyBudW1iZXIgb3BlbmVkIHJlYyByZWNsIHNlcXVlbnRpYWwgc3RhdHVzIHVuZm9ybWF0dGVkIHVuaXQgJyArXG4gICAgICAnY29udGludWUgZm9ybWF0IHBhdXNlIGN5Y2xlIGV4aXQgJyArXG4gICAgICAnY19udWxsX2NoYXIgY19hbGVydCBjX2JhY2tzcGFjZSBjX2Zvcm1fZmVlZCBmbHVzaCB3YWl0IGRlY2ltYWwgcm91bmQgaW9tc2cgJyArXG4gICAgICAnc3luY2hyb25vdXMgbm9wYXNzIG5vbl9vdmVycmlkYWJsZSBwYXNzIHByb3RlY3RlZCB2b2xhdGlsZSBhYnN0cmFjdCBleHRlbmRzIGltcG9ydCAnICtcbiAgICAgICdub25faW50cmluc2ljIHZhbHVlIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvciBjbGFzcyBhc3NvY2lhdGUgYmluZCBlbnVtICcgK1xuICAgICAgJ2NfaW50IGNfc2hvcnQgY19sb25nIGNfbG9uZ19sb25nIGNfc2lnbmVkX2NoYXIgY19zaXplX3QgY19pbnQ4X3QgY19pbnQxNl90IGNfaW50MzJfdCBjX2ludDY0X3QgY19pbnRfbGVhc3Q4X3QgY19pbnRfbGVhc3QxNl90ICcgK1xuICAgICAgJ2NfaW50X2xlYXN0MzJfdCBjX2ludF9sZWFzdDY0X3QgY19pbnRfZmFzdDhfdCBjX2ludF9mYXN0MTZfdCBjX2ludF9mYXN0MzJfdCBjX2ludF9mYXN0NjRfdCBjX2ludG1heF90IENfaW50cHRyX3QgY19mbG9hdCBjX2RvdWJsZSAnICtcbiAgICAgICdjX2xvbmdfZG91YmxlIGNfZmxvYXRfY29tcGxleCBjX2RvdWJsZV9jb21wbGV4IGNfbG9uZ19kb3VibGVfY29tcGxleCBjX2Jvb2wgY19jaGFyIGNfbnVsbF9wdHIgY19udWxsX2Z1bnB0ciAnICtcbiAgICAgICdjX25ld19saW5lIGNfY2FycmlhZ2VfcmV0dXJuIGNfaG9yaXpvbnRhbF90YWIgY192ZXJ0aWNhbF90YWIgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyICcgK1xuICAgICAgJ2NfcHRyIGNfZnVucHRyIGlzb19mb3J0cmFuX2VudiBjaGFyYWN0ZXJfc3RvcmFnZV9zaXplIGVycm9yX3VuaXQgZmlsZV9zdG9yYWdlX3NpemUgaW5wdXRfdW5pdCBpb3N0YXRfZW5kIGlvc3RhdF9lb3IgJyArXG4gICAgICAnbnVtZXJpY19zdG9yYWdlX3NpemUgb3V0cHV0X3VuaXQgY19mX3Byb2Nwb2ludGVyIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgJyArXG4gICAgICAnaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgbmV3dW5pdCBjb250aWd1b3VzIHJlY3Vyc2l2ZSAnICtcbiAgICAgICdwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZSBlb3IgYWR2YW5jZSBubWwgaW50ZXJmYWNlIHByb2NlZHVyZSBuYW1lbGlzdCBpbmNsdWRlIHNlcXVlbmNlIGVsZW1lbnRhbCBwdXJlICcgK1xuICAgICAgJ2ludGVnZXIgcmVhbCBjaGFyYWN0ZXIgY29tcGxleCBsb2dpY2FsIGRpbWVuc2lvbiBhbGxvY2F0YWJsZXwxMCBwYXJhbWV0ZXIgJyArXG4gICAgICAnZXh0ZXJuYWwgaW1wbGljaXR8MTAgbm9uZSBkb3VibGUgcHJlY2lzaW9uIGFzc2lnbiBpbnRlbnQgb3B0aW9uYWwgcG9pbnRlciAnICtcbiAgICAgICd0YXJnZXQgaW4gb3V0IGNvbW1vbiBlcXVpdmFsZW5jZSBkYXRhICcgK1xuICAgICAgLy8gSVJQRjkwIHNwZWNpYWwga2V5d29yZHNcbiAgICAgICdiZWdpbl9wcm92aWRlciAmYmVnaW5fcHJvdmlkZXIgZW5kX3Byb3ZpZGVyIGJlZ2luX3NoZWxsIGVuZF9zaGVsbCBiZWdpbl90ZW1wbGF0ZSBlbmRfdGVtcGxhdGUgc3Vic3QgYXNzZXJ0IHRvdWNoICcgK1xuICAgICAgJ3NvZnRfdG91Y2ggcHJvdmlkZSBub19kZXAgZnJlZSBpcnBfaWYgaXJwX2Vsc2UgaXJwX2VuZGlmIGlycF93cml0ZSBpcnBfcmVhZCcsXG4gICAgYnVpbHRfaW46ICdhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50ICcgK1xuICAgICAgJ2Rsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgJyArXG4gICAgICAnYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hICcgK1xuICAgICAgJ2lxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgJyArXG4gICAgICAncW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgJyArXG4gICAgICAnbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgJyArXG4gICAgICAnYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgJyArXG4gICAgICAnZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCAnICtcbiAgICAgICdtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0ICcgK1xuICAgICAgJ3JhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kICcgK1xuICAgICAgJ3NldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgJyArXG4gICAgICAnZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kICcgK1xuICAgICAgJ2llZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgJyArXG4gICAgICAnaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mJyAgK1xuICAgICAgJ2Fjb3NoIGFzaW5oIGF0YW5oIGJlc3NlbF9qMCBiZXNzZWxfajEgYmVzc2VsX2puIGJlc3NlbF95MCBiZXNzZWxfeTEgYmVzc2VsX3luIGVyZiBlcmZjIGVyZmNfc2NhbGVkIGdhbW1hIGxvZ19nYW1tYSBoeXBvdCBub3JtMiAnICtcbiAgICAgICdhdG9taWNfZGVmaW5lIGF0b21pY19yZWYgZXhlY3V0ZV9jb21tYW5kX2xpbmUgbGVhZHogdHJhaWx6IHN0b3JhZ2Vfc2l6ZSBtZXJnZV9iaXRzICcgK1xuICAgICAgJ2JnZSBiZ3QgYmxlIGJsdCBkc2hpZnRsIGRzaGlmdHIgZmluZGxvYyBpYWxsIGlhbnkgaXBhcml0eSBpbWFnZV9pbmRleCBsY29ib3VuZCB1Y29ib3VuZCBtYXNrbCBtYXNrciAnICtcbiAgICAgICdudW1faW1hZ2VzIHBhcml0eSBwb3BjbnQgcG9wcGFyIHNoaWZ0YSBzaGlmdGwgc2hpZnRyIHRoaXNfaW1hZ2UgJyArXG4gICAgICAvLyBJUlBGOTAgc3BlY2lhbCBidWlsdF9pbnNcbiAgICAgICdJUlBfQUxJR04gaXJwX2hlcmUnXG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogRl9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ3N0cmluZycsIHJlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtJyxcbiAgICAgICAgaWxsZWdhbDogJ1skez1cXFxcbl0nLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCBQQVJBTVNdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCchJywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLkNPTU1FTlQoJ2JlZ2luX2RvYycsICdlbmRfZG9jJywge3JlbGV2YW5jZTogMTB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoPz1cXFxcYnxcXFxcK3xcXFxcLXxcXFxcLikoPz1cXFxcLlxcXFxkfFxcXFxkKSg/OlxcXFxkKyk/KD86XFxcXC4/XFxcXGQqKSg/OltkZV1bKy1dP1xcXFxkKyk/XFxcXGJcXFxcLj8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyDQntC/0YDQtdC00LXQu9C10L3QuNC1INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0L7QslxuICB2YXIgVU5ERVJTQ09SRV9JREVOVF9SRSA9IFwiW0EtWmEtetCQLdCv0LAt0Y/RkdCBXyFdW0EtWmEtetCQLdCv0LAt0Y/RkdCBXzAtOV0qXCI7XG5cbiAgLy8g0J7Qv9GA0LXQtNC10LvQtdC90LjQtSDQuNC80LXQvSDRhNGD0L3QutGG0LjQuVxuICB2YXIgRlVOQ1RJT05fTkFNRV9JREVOVF9SRSA9IFwiW0EtWmEtetCQLdCv0LAt0Y/RkdCBX11bQS1aYS160JAt0K/QsC3Rj9GR0IFfMC05XSpcIjtcblxuICAvLyBrZXl3b3JkIDog0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwXG4gIHZhciBLRVlXT1JEID1cbiAgICBcImFuZCDQuCBlbHNlINC40L3QsNGH0LUgZW5kZXhjZXB0IGVuZGZpbmFsbHkgZW5kZm9yZWFjaCDQutC+0L3QtdGG0LLRgdC1IGVuZGlmINC60L7QvdC10YbQtdGB0LvQuCBlbmR3aGlsZSDQutC+0L3QtdGG0L/QvtC60LAgXCIgK1xuICAgIFwiZXhjZXB0IGV4aXRmb3IgZmluYWxseSBmb3JlYWNoINCy0YHQtSBpZiDQtdGB0LvQuCBpbiDQsiBub3Qg0L3QtSBvciDQuNC70LggdHJ5IHdoaWxlINC/0L7QutCwIFwiO1xuXG4gIC8vIFNZU1JFUyBDb25zdGFudHNcbiAgdmFyIHN5c3Jlc19jb25zdGFudHMgPVxuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTX1JJR0hUX1RZUEVfRURJVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNfUklHSFRfVFlQRV9GVUxMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU19SSUdIVF9UWVBFX1ZJRVcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19NT0RFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfTk9fQUNDRVNTX1ZJRVcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19OT19BQ0NFU1NfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0FERF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19BRERfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0NIQU5HRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19DSEFOR0VfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0RFTEVURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19ERUxFVEVfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0VYRUNVVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfRVhFQ1VURV9SRVFVSVNJVEVfWUVTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfTk9fQUNDRVNTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX05PX0FDQ0VTU19SRVFVSVNJVEVfWUVTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfUkFUSUZZX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX1JBVElGWV9SRVFVSVNJVEVfWUVTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfVklFVyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfVklFV19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19WSUVXX1JFUVVJU0lURV9ZRVNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfQ0hBTkdFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9DSEFOR0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfRVhJU1RTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9FWElTVFNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfRlVMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfRlVMTF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9WSUVXIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0FCT1JUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9BQ0NFUFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0FERF9BVFRBQ0hNRU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9DSEFOR0VfQ0FSRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ0hBTkdFX0tJTkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0NIQU5HRV9TVE9SQUdFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9DT05USU5VRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ09QWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ1JFQVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9DUkVBVEVfVkVSU0lPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfREVMRVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9ERUxFVEVfQVRUQUNITUVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfREVMRVRFX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0RJU0FCTEVfREVMRUdBVEVfQUNDRVNTX1JJR0hUUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfRU5BQkxFX0RFTEVHQVRFX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0VOQ1JZUFRJT05fQllfQ0VSVElGSUNBVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0VOQ1JZUFRJT05fQllfQ0VSVElGSUNBVEVfQU5EX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FTkNSWVBUSU9OX0JZX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FWFBPUlRfV0lUSF9MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FWFBPUlRfV0lUSE9VVF9MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9JTVBPUlRfV0lUSF9VTkxPQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0lNUE9SVF9XSVRIT1VUX1VOTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTElGRV9DWUNMRV9TVEFHRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTE9DS19GT1JfU0VSVkVSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9MT0NLX01PRElGWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTUFSS19BU19SRUFERUQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01BUktfQVNfVU5SRUFERUQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01PRElGWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTU9ESUZZX0NBUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01PVkVfVE9fQVJDSElWRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfT0ZGX0VOQ1JZUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1BBU1NXT1JEX0NIQU5HRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfUEVSRk9STSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfUkVDT1ZFUl9GUk9NX0xPQ0FMX0NPUFkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1JFU1RBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1JFU1RPUkVfRlJPTV9BUkNISVZFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9SRVZJU0lPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfU0VORF9CWV9NQUlMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9TSUdOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9TVEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfVU5MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9VTkxPQ0tfRlJPTV9TRVJWRVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1ZFUlNJT05fU1RBVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1ZFUlNJT05fVklTSUJJTElUWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfVklFVyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfVklFV19TSEFET1dfQ09QWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfV09SS0ZMT1dfREVTQ1JJUFRJT05fTU9ESUZZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9XUklURV9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJVkVfVkVSU0lPTl9TVEFURV9QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRERfUkVGRVJFTkNFX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURESVRJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FERElUSU9OQUxfUEFSQU1TX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRElUSU9OQUxfSk9CX0VORF9EQVRFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRElUSU9OQUxfSk9CX1JFQURfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FESVRJT05BTF9KT0JfU1RBUlRfREFURV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURJVElPTkFMX0pPQl9TVEFURV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9BRERJTkdfVVNFUl9UT19HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQURESU5HX1VTRVJfVE9fR1JPVVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fQ09NUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fQ09NUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9DUkVBVElPTl9HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fR1JPVVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fVVNFUl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fVVNFUl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9EQVRBQkFTRV9VU0VSX0NSRUFUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RBVEFCQVNFX1VTRVJfQ1JFQVRJT05fQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RBVEFCQVNFX1VTRVJfREVMRVRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREFUQUJBU0VfVVNFUl9ERUxFVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fQ09NUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fQ09NUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9ERUxFVElPTl9HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fR1JPVVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fVVNFUl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fVVNFUl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9ERUxFVElPTl9VU0VSX0ZST01fR1JPVVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RFTEVUSU9OX1VTRVJfRlJPTV9HUk9VUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9HUkFOVElOR19GSUxURVJFUl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfRklMVEVSRVJfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfRklMVEVSRVJfUkVTVFJJQ1RJT05fQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX0ZJTFRFUkVSX1JFU1RSSUNUSU9OX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX1BSSVZJTEVHRV9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfUFJJVklMRUdFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX1JJR0hUU19BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfUklHSFRTX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0lTX01BSU5fU0VSVkVSX0NIQU5HRURfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0lTX01BSU5fU0VSVkVSX0NIQU5HRURfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfSVNfUFVCTElDX0NIQU5HRURfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0lTX1BVQkxJQ19DSEFOR0VEX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1JFTU9WSU5HX0ZJTFRFUkVSX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19GSUxURVJFUl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19GSUxURVJFUl9SRVNUUklDVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfRklMVEVSRVJfUkVTVFJJQ1RJT05fQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfUFJJVklMRUdFX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19QUklWSUxFR0VfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfUklHSFRTX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19SSUdIVFNfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfU0VSVkVSX0xPR0lOX0NSRUFUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1NFUlZFUl9MT0dJTl9DUkVBVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfU0VSVkVSX0xPR0lOX0RFTEVUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1NFUlZFUl9MT0dJTl9ERUxFVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfQ0FURUdPUllfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0NBVEVHT1JZX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0NPTVBfVElUTEVfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0NPTVBfVElUTEVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfRlVMTF9OQU1FX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19GVUxMX05BTUVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfR1JPVVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0dST1VQX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX1BBUkVOVF9HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfUEFSRU5UX0dST1VQX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX1VTRVJfQVVUSF9UWVBFX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX0FVVEhfVFlQRV9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX0xPR0lOX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX0xPR0lOX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX1VTRVJfU1RBVFVTX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX1NUQVRVU19BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VU0VSX1BBU1NXT1JEX0NIQU5HRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VU0VSX1BBU1NXT1JEX0NIQU5HRV9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FMTF9BQ0NFUFRfQ09ORElUSU9OX1JVUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUxMX1VTRVJTX0dST1VQIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BTExfVVNFUlNfR1JPVVBfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUxMX1VTRVJTX1NFUlZFUl9HUk9VUF9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BTExPV0VEX0FDQ0VTU19UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FMTE9XRURfQUNDRVNTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVBQX1ZJRVdFUl9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BUFBST1ZJTkdfU0lHTkFUVVJFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FQUFJPVklOR19TSUdOQVRVUkVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FTU0lTVEFOVF9TVUJTVElUVUVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVNTSVNUQU5UX1NVQlNUSVRVRV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FUVEFDSF9UWVBFX0NPTVBPTkVOVF9UT0tFTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVRUQUNIX1RZUEVfRE9DIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9FRE9DIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9GT0xERVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FUVEFDSF9UWVBFX0pPQiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVRUQUNIX1RZUEVfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9UQVNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIX0VOQ09ERURfUEFTU1dPUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVEhfRU5DT0RFRF9QQVNTV09SRF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIX05PVkVMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUSF9QQVNTV09SRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUSF9QQVNTV09SRF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIX1dJTkRPV1MgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVEhFTlRJQ0FUSU5HX1NJR05BVFVSRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIRU5USUNBVElOR19TSUdOQVRVUkVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9fRU5VTV9NRVRIT0RfRkxBRyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT19OVU1FUkFUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9fU1RST05HX0VOVU1fTUVUSE9EX0ZMQUcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1RFWFRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX0FMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNBR0VfQUxMX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX1NJR04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX1NJR05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNBR0VfV09SSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNBR0VfV09SS19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRPVEVYVF9VU0VfQU5ZV0hFUkVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNFX09OX1NJR05JTkdfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNFX09OX1dPUktfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQkVHSU5fREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQkxBQ0tfTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9CTFVFX0xJRkVfQ1lDTEVfU1RBR0VfRk9OVF9DT0xPUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQlROX1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBTENVTEFURURfUk9MRV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBTExfVFlQRV9WQVJJQUJMRV9CVVRUT05fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBTExfVFlQRV9WQVJJQUJMRV9QUk9HUkFNX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DQU5DRUxfTUVTU0FHRV9GVU5DVElPTl9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBUkRfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0FSRF9SRUZFUkVOQ0VfTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DRVJUSUZJQ0FURV9UWVBFX1JFUVVJU0lURV9FTkNSWVBUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DRVJUSUZJQ0FURV9UWVBFX1JFUVVJU0lURV9TSUdOX0FORF9FTkNSWVBUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DRVJUSUZJQ0FURV9UWVBFX1JFUVVJU0lURV9TSUdOX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DSEVDS19QQVJBTV9WQUxVRV9EQVRFX1BBUkFNX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NIRUNLX1BBUkFNX1ZBTFVFX0ZMT0FUX1BBUkFNX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NIRUNLX1BBUkFNX1ZBTFVFX0lOVEVHRVJfUEFSQU1fVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0hFQ0tfUEFSQU1fVkFMVUVfUElDS19QQVJBTV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DSEVDS19QQVJBTV9WQUxVRV9SRUVGUkVOQ0VfUEFSQU1fVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0xPU0VEX1JFQ09SRF9GTEFHX1ZBTFVFX0ZFTUlOSU5FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DTE9TRURfUkVDT1JEX0ZMQUdfVkFMVUVfTUFTQ1VMSU5FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX0FETUlOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX0RFVkVMT1BFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9ET0NTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX0VET0NfQ0FSRFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfQ09NUE9ORU5UX1RZUEVfRVhURVJOQUxfRVhFQ1VUQUJMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9PVEhFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfQ09NUE9ORU5UX1RZUEVfUkVQT1JUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX1NDUklQVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9VUkwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfUkVRVUlTSVRFX0FDQ0VTUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9SRVFVSVNJVEVfQ09NUE9ORU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX1JFUVVJU0lURV9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9SRVFVSVNJVEVfRVhDTFVERV9DT01QT05FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfUkVRVUlTSVRFX1JFQ09SRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NTUVOVF9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NTU9OX1NFVFRJTkdTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QX0NPREVfR1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfR1JPVVBfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfQURNSU5fQ09NUE9ORU5UUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfREVWRUxPUEVSX0NPTVBPTkVOVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0RPQ1MgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0VET0NfQ0FSRFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0VET0NTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9FWFRFUk5BTF9FWEVDVVRBQkxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9PVEhFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfUkVGRVJFTkNFX1RZUEVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9SRUZFUkVOQ0VTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9SRVBPUlRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9TQ1JJUFRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9VUkwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVFNfUkVNT1RFX1NFUlZFUlNfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05ESVRJT05fQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTlNUX0ZJUk1fU1RBVFVTX0NPTU1PTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OU1RfRklSTV9TVEFUVVNfSU5ESVZJRFVBTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OU1RfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTlNUX1BPU0lUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05TVF9TRVJWRVJfU1RBVFVTX0RPTlRfUkVQTElDQVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05TVF9TRVJWRVJfU1RBVFVTX1JFUExJQ0FURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OVEVOVFNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9CT09MRUFOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfREFURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFUQV9UWVBFX0ZMT0FUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfSU5URUdFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFUQV9UWVBFX1BJQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9TVFJJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9URVhUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfVkFSSUFOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFURV9DTE9TRV9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFURV9GT1JNQVRfREFURV9PTkxZX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfT1BFTl9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFURV9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfUkVRVUlTSVRFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfVFlQRV9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRFVElNRV9GT1JNQVRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFQV9BQ0NFU1NfUklHSFRTX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVNDUklQVElPTl9MT0NBTElaRV9JRF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVTQ1JJUFRJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVDFfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUMl9QQVJUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVQzX1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVDRfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUNV9QQVJUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVQ2X1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVEFJTF9EQVRBU0VUX0tFWV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUQUlMX1BJQ0tfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVEFJTF9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9fTk9UX1VTRV9BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ET19OT1RfVVNFX0FDQ0VTU19UWVBFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RPX05PVF9VU0VfT05fVklFV19BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ET19OT1RfVVNFX09OX1ZJRVdfQUNDRVNTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9DVU1FTlRfU1RPUkFHRVNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9DVU1FTlRfVEVNUExBVEVTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9VQkxFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JfQ0xPU0VfRklMRV9PQlNFUlZfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JfQ0xPU0VfUFJPQ0VTU19PQlNFUlZfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19BUFBMSUNBVElPTl9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JTX0NSRUFURV9TRVZFUkFMX1BST0NFU1NFU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19FWFRFTlNJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VESVRPUlNfT0JTRVJWRVJfQllfUFJPQ0VTU19UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JTX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JTX1JFUExBQ0VfU1BFQ19DSEFSU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19VU0VfUExVR0lOU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19WSUVXX0RPQ1VNRU5UX09QRU5FRF9UT19FRElUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfQ0FSRF9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX0NBUkRfVFlQRVNfTElOS19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19DRVJUSUZJQ0FURV9BTkRfUEFTU1dPUkRfRU5DT0RFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfQ0VSVElGSUNBVEVfRU5DT0RFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19LSU5EX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX0tJTkRTX0JZX1RFTVBMQVRFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX01BTkFHRV9BQ0NFU1NfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19OT05FX0VOQ09ERV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX05VTUJFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19QQVNTV09SRF9FTkNPREVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19SRUFET05MWV9BQ0NFU1NfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TSEVMTF9MSUZFX1RZUEVfVklFV19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TSVpFX1JFU1RSSUNUSU9OX1BSSU9SSVRZX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1NUT1JBR0VfQ0hFQ0tfQUNDRVNTX1JJR0hUU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TVE9SQUdFX0NPTVBVVEVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfU1RPUkFHRV9EQVRBQkFTRV9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1NUT1JBR0VfRURJVF9JTl9TVE9SQUdFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1NUT1JBR0VfTE9DQUxfUEFUSF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TVE9SQUdFX1NIQVJFRF9TT1VSQ0VfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19URU1QTEFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19UWVBFU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19WRVJTSU9OX0FDVElWRV9TVEFHRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1ZFUlNJT05fREVTSUdOX1NUQUdFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfVkVSU0lPTl9PQlNPTEVURV9TVEFHRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1dSSVRFX0FDQ0VTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NVTUVOVF9DQVJEX1JFUVVJU0lURVNfUkVGRVJFTkNFX0NPREVfU0VMRUNURURfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FTkNPREVfQ0VSVElGSUNBVEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FTkRfREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRU5VTUVSQVRJT05fVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhFQ1VURV9BQ0NFU1NfUklHSFRTX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhFQ1VUSVZFX0ZJTEVfU1RPUkFHRV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWElTVF9DT05TVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhJU1RfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYUE9SVF9MT0NLX1RZUEVfQVNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWFBPUlRfTE9DS19UWVBFX1dJVEhfTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhQT1JUX0xPQ0tfVFlQRV9XSVRIT1VUX0xPQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYUE9SVF9WRVJTSU9OX1RZUEVfQVNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWFBPUlRfVkVSU0lPTl9UWVBFX0xBU1QgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYUE9SVF9WRVJTSU9OX1RZUEVfTEFTVF9BQ1RJVkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYVEVOU0lPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRklMVEVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRklMVEVSX1RZUEVfQ09NTU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9UWVBFX0NPTU1PTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GSUxURVJfVFlQRV9VU0VSX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9UWVBFX1VTRVJfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRklMVEVSX1ZBTFVFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GTE9BVF9OVU1CRVJfRk9STUFUX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZMT0FUX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfQVVUSE9SX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfS0lORF9BTllfT0JKRUNUUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX0tJTkRfQ09NUE9ORU5UUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX0tJTkRfRURPQ1MgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9LSU5EX0pPQlMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9LSU5EX1RBU0tTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9DT01NT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9UWVBFX0NPTVBPTkVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfRkFWT1JJVEVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9JTkJPWCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfT1VUQk9YIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9RVUlDS19MQVVOQ0ggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9UWVBFX1NFQVJDSCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfU0hPUlRDVVRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9VU0VSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GUk9NX0RJQ1RJT05BUllfRU5VTV9NRVRIT0RfRkxBRyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRlVMTF9TVUJTVElUVVRFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTExfU1VCU1RJVFVURV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX0NBTkNFTF9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX0NBVEVHT1JZX1NZU1RFTSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRlVOQ1RJT05fQ0FURUdPUllfVVNFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRlVOQ1RJT05fRkFJTFVSRV9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX1NBVkVfUkVTVUxUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HRU5FUkFURURfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUkVFTl9MSUZFX0NZQ0xFX1NUQUdFX0ZPTlRfQ09MT1IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0FDQ09VTlRfVFlQRV9WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9DQVRFR09SWV9OT1JNQUxfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfQ0FURUdPUllfTk9STUFMX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0NBVEVHT1JZX1NFUlZJQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfQ0FURUdPUllfU0VSVklDRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9DT01NT05fQ0FURUdPUllfRklFTERfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0ZVTExfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfUklHSFRTX1RfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1NFUlZFUl9DT0RFU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfU0VSVkVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1NFUlZJQ0VfQ0FURUdPUllfRklFTERfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1VTRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ISURERU5fTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ISUdIX0xWTF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSElTVE9SWV9BQ1RJT05fQ1JFQVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0hJU1RPUllfQUNUSU9OX0RFTEVURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ISVNUT1JZX0FDVElPTl9FRElUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0hPVVJfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lEU1BTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTUFHRV9NT0RFX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTUFHRV9NT0RFX0dSRVlTQ0FMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU1BR0VfTU9ERV9NT05PQ0hST01FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTVBPUlRBTkNFX0hJR0ggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lNUE9SVEFOQ0VfTE9XIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTVBPUlRBTkNFX05PUk1BTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5fREVTSUdOX1ZFUlNJT05fU1RBVEVfUElDS19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5DT01JTkdfV09SS19SVUxFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5UX1JFUVVJU0lURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5UX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTlRFR0VSX05VTUJFUl9GT1JNQVRfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5URUdFUl9UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX0dFTkVSQVRFRF9SRVFVSVNJVEVfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX1BVQkxJQ19ST0xFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JU19SRU1PVEVfVVNFUl9ORUdBVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSVNfUkVNT1RFX1VTRVJfUE9TSVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX1NUT1JFRF9SRVFVSVNJVEVfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX1NUT1JFRF9SRVFVSVNJVEVfU1RPUkVEX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JVEFMSUNfTElGRV9DWUNMRV9TVEFHRV9EUkFXX1NUWUxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9KT0JfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9LSU5EX0NPTlRST0xfSk9CIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9KT0JfS0lORF9KT0IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9LSU5EX05PVElDRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSk9CX1NUQVRFX0FCT1JURUQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9TVEFURV9DT01QTEVURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSk9CX1NUQVRFX1dPUktJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRTX0NSRUFURV9TSEFET1dfQ09QSUVTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19ERUZBVUxUX0VET0NfTElGRV9TVEFHRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19BTExfVEVQTEFURVNfQUxMT1dFRF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19BTExPV19MSUZFX0NZQ0xFX1NUQUdFX0NIQU5HSU5HX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19FRE9DX0FMTE9XX01VTFRJUExFX0FDVElWRV9WRVJTSU9OU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19TSEFSRV9BQ0NFU19SSUdIVFNfQllfREVGQVVMVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19FRE9DX1RFTVBMQVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19FRE9DX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRTX1NJR05FUlNfUkVRVUlTSVRFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LT0RfSU5QVVRfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTEFTVF9VUERBVEVfREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElGRV9DWUNMRV9TVEFSVF9TVEFHRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElMQUNfTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX09CSkVDVF9LSU5EX0NPTVBPTkVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9ET0NVTUVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9FRE9DIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX09CSkVDVF9LSU5EX0ZPTERFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9KT0IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJTktfT0JKRUNUX0tJTkRfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX09CSkVDVF9LSU5EX1RBU0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJTktfUkVGX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJU1RfUkVGRVJFTkNFX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTE9DQUxJWkFUSU9OX0RJQ1RJT05BUllfTUFJTl9WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01BSU5fVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NQU5VQUxfRU5VTV9NRVRIT0RfRkxBRyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUFTVEVSX0NPTVBfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUFTVEVSX1RBQkxFX1JFQ19JRF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUFYSU1JWkVEX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FU1NBR0VfQVRURU5USU9OX0NBUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FU1NBR0VfQ09ORklSTUFUSU9OX0NBUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FU1NBR0VfRVJST1JfQ0FQVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUVTU0FHRV9JTkZPUk1BVElPTl9DQVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NSU5JTUlaRURfTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NSU5VVEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTU9EVUxFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NT05JVE9SSU5HX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NT05USF9GT1JNQVRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVfTE9DQUxJWkVfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVfU0lOR1VMQVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVBTl9JTlBVVF9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ORUdBVElWRV9QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ORUdBVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk8gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PX1BJQ0tfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PX1NJR05BVFVSRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PTkVfQUNDRVNTX1JJR0hUU19UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PTk9QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9OT1BFUkFUSU5HX1JFQ09SRF9GTEFHX1ZBTFVFX01BU0NVTElORSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9STUFMX0FDQ0VTU19SSUdIVFNfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1JNQUxfTElGRV9DWUNMRV9TVEFHRV9EUkFXX1NUWUxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1JNQUxfTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RfQUxMT1dFRF9BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RfQUxMT1dFRF9BQ0NFU1NfVFlQRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RJQ0VfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTV9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTV9TVFJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTUVSQVRJT05fQVVUT19OT1RfU1RST05HIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1FUkFUSU9OX0FVVE9fU1RST05HIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1FUkFUSU9OX0ZST01fRElDVE9OQVJZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1FUkFUSU9OX01BTlVBTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTlVNRVJJQ19UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTVJFUV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT0JTT0xFVEVfVkVSU0lPTl9TVEFURV9QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfVkFMVUVfRkVNSU5JTkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRV9NQVNDVUxJTkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09QVElPTkFMX0ZPUk1fQ09NUF9SRVFDT0RFX1BSRUZJWCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT1JBTkdFX0xJRkVfQ1lDTEVfU1RBR0VfRk9OVF9DT0xPUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT1JJR0lOQUxSRUZfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09VUkZJUk1fUkVGX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09VUkZJUk1fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09VUkZJUk1fVkFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PVVRHT0lOR19XT1JLX1JVTEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QSUNLX05FR0FUSVZFX1JFU1VMVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUElDS19QT1NJVElWRV9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BJQ0tfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QSUNLX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QSUNLX1RZUEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUExBTl9TVEFUVVNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BMQVRGT1JNX1ZFUlNJT05fQ09NTUVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUExVR0lOU19TRVRUSU5HU19ERVNDUklQVElPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUE9TSVRJVkVfUElDS19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUE9XRVJfVE9fQ1JFQVRFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QT1dFUl9UT19TSUdOX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QUklPUklUWV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUVVBTElGSUVEX1RBU0tfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUVVBTElGSUVEX1RBU0tfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUNTVEFUX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRURfTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZfSURfVF9SRUZfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVGX1JFUVVJU0lURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVGX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZfUkVRVUlTSVRFU19SRUZFUkVOQ0VfQ09ERV9TRUxFQ1RFRF9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9SRUNPUkRfSElTVE9SWV9DUkVBVEVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9SRUNPUkRfSElTVE9SWV9ERUxFVEVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9SRUNPUkRfSElTVE9SWV9NT0RJRllfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9UWVBFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZFUkVOQ0VTX0FERF9QQVJBTVNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRVNfRElTUExBWV9SRVFVSVNJVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFTU9URV9TRVJWRVJfU1RBVFVTX1dPUktJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFTU9URV9TRVJWRVJfVFlQRV9NQUlOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRU1PVEVfU0VSVkVSX1RZUEVfU0VDT05EQVJZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRU1PVEVfVVNFUl9GTEFHX1ZBTFVFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUE9SVF9BUFBfRURJVE9SX0lOVEVSTkFMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVBPUlRfQkFTRV9SRVBPUlRfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUE9SVF9CQVNFX1JFUE9SVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVQT1JUX1NDUklQVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVQT1JUX1RFTVBMQVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVBPUlRfVklFV0VSX0NPREVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9BTExPV19DT01QT05FTlRfREVGQVVMVF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX0FMTE9XX1JFQ09SRF9ERUZBVUxUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfQUxMT1dfU0VSVkVSX0NPTVBPTkVOVF9ERUZBVUxUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfTU9ERV9BVkFJTEFCTEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX01PREVfRURJVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfTU9ERV9ISURERU5fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX01PREVfTk9UX0FWQUlMQUJMRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfTU9ERV9WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9OVU1CRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9TRUNUSU9OX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfVFlQRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9CWV9VTklUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfRk9STUFUX0RBVEVfRlVMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9EQVRFX1RJTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9GT1JNQVRfTEVGVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9SSUdIVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9XSVRIT1VUX1VOSVQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9OVU1CRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX0FDVElPTlMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX0JVVFRPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fQlVUVE9OUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fQ0FSRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTAgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTEgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTYgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyNCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUzIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFNSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEU2IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFOCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEU5IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVTX1BTRVVET1JFRkVSRU5DRV9SRVFVSVNJVEVfTlVNQkVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SSUdIVF9BTElHTk1FTlRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9MRVNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JPVVRFX1NURVBfQUZURVJfUlVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ST1VURV9TVEVQX0FORF9DT05ESVRJT05fUlVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ST1VURV9TVEVQX09SX0NPTkRJVElPTl9SVVMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JPVVRFX1RZUEVfQ09NUExFWCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9VVEVfVFlQRV9QQVJBTExFTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9VVEVfVFlQRV9TRVJJQUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NCREFUQVNFVERFU0NfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NCREFUQVNFVERFU0NfUE9TSVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NCVklFV1NERVNDX1BPU0lUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TQ1JJUFRfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSF9CWV9URVhUX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUFSQ0hFU19DT01QT05FTlRfQ09OVEVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfQ1JJVEVSSUFfQUNUSU9OX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSEVTX0VET0NfQ09OVEVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfRk9MREVSX0NPTlRFTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSEVTX0pPQl9DT05URU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUFSQ0hFU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfVEFTS19DT05URU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNPTkRfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfQUNUSU9OU19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfQ0FSRF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfREVUQUlMXzFfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0RFVEFJTF8yX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNUSU9OX1JFUVVJU0lURV9ERVRBSUxfM19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfREVUQUlMXzRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0RFVEFJTF81X1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNUSU9OX1JFUVVJU0lURV9ERVRBSUxfNl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VMRUNUX1JFRkVSRU5DRV9NT0RFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFTEVDVF9UWVBFX1NFTEVDVEFCTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFTEVDVF9UWVBFX1NFTEVDVEFCTEVfT05MWV9DSElMRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VMRUNUX1RZUEVfU0VMRUNUQUJMRV9XSVRIX0NISUxEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUxFQ1RfVFlQRV9VTlNMRUNUQUJMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VSVkVSX1RZUEVfTUFJTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VSVklDRV9VU0VSX0NBVEVHT1JZX0ZJRUxEX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRVRUSU5HU19VU0VSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TSUdOQVRVUkVfQU5EX0VOQ09ERV9DRVJUSUZJQ0FURV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NJR05BVFVSRV9DRVJUSUZJQ0FURV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NJTkdVTEFSX1RJVExFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TUUxfU0VSVkVSX0FVVEhFTlRJRklDQVRJT05fRkxBR19WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TUUxfU0VSVkVSX0VOQ09ERV9BVVRIRU5USUZJQ0FUSU9OX0ZMQUdfVkFMVUVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBTkRBUlRfUk9VVEVfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQU5EQVJUX1JPVVRFX1JFRkVSRU5DRV9DT01NRU5UX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFOREFSVF9ST1VURVNfR1JPVVBTX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFURV9SRVFfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVEVfUkVRVUlTSVRFX0FDVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVEVfUkVRVUlTSVRFX0NMT1NFRF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRJQ19ST0xFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1BMQU5fREVGQVVMVF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX0FVVE9DTEVBTklORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX0JMVUVfU1FVQVJFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfQ09NUExFVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9HUkVFTl9TUVVBUkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9PUkFOR0VfU1FVQVJFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfUFVSUExFX1NRVUFSRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX1JFRF9TUVVBUkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9TVVNQRU5EIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfWUVMTE9XX1NRVUFSRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1REUk9VVEVfU0hPV19UT19VU0VSU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RPUkFHRV9UWVBFX0ZJTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUT1JBR0VfVFlQRV9TUUxfU0VSVkVSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJJS0VPVVRfTElGRV9DWUNMRV9TVEFHRV9EUkFXX1NUWUxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJJTkdfRk9STUFUX0xFRlRfQUxJR05fQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RSSU5HX0ZPUk1BVF9SSUdIVF9BTElHTl9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJJTkdfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUUklOR19SRVFVSVNJVEVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RSSU5HX1RZUEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1VCU1RJVFVURVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NVQlRBU0tfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NZU1RFTV9TRVRUSU5HX0NVUlJFTlRfVVNFUl9QQVJBTV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1lTVEVNX1NFVFRJTkdfRU1QVFlfVkFMVUVfUEFSQU1fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NZU1RFTV9WRVJTSU9OX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfQUNDRVNTX1RZUEVfQUxMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0FDQ0VTU19UWVBFX0FMTF9NRU1CRVJTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0FDQ0VTU19UWVBFX01BTlVBTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19FTkNPREVfVFlQRV9DRVJUSUZJQ0FUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0VOQ09ERV9UWVBFX0NFUlRJRklDQVRJT05fQU5EX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0VOQ09ERV9UWVBFX05PTkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfRU5DT0RFX1RZUEVfUEFTU1dPUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfUk9VVEVfQUxMX0NPTkRJVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19ST1VURV9BTkRfQ09ORElUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1JPVVRFX09SX0NPTkRJVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19TVEFURV9BQk9SVEVEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1NUQVRFX0NPTVBMRVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1NUQVRFX0NPTlRJTlVFRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19TVEFURV9DT05UUk9MIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1NUQVRFX0lOSVQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfU1RBVEVfV09SS0lORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19USVRMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19UWVBFU19HUk9VUFNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfVFlQRVNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFTVBMQVRFU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9EQVRFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0RFVl9EQVRBQkFTRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0RFVl9TWVNURU1fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9FRE1TX0RBVEFCQVNFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19NQUlOX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19NQUlOX0RCX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19TRUNPTkRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9FRE1TX1NFQ09ORF9EQl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0VETVNfU1lTVEVNX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfTlVNRVJJQ19SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVYVF9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFWFRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFWFRfUkVRVUlTSVRFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFWFRfVFlQRV9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UWVBFX0NPREVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOREVGSU5FRF9MSUZFX0NZQ0xFX1NUQUdFX0ZPTlRfQ09MT1IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOSVRTX1NFQ1RJT05fSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOSVRTX1NFQ1RJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOT1BFUkFUSU5HX1JFQ09SRF9GTEFHX1ZBTFVFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOU1RPUkVEX0RBVEFfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOU1RPUkVEX0RBVEFfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRV9BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VfQUNDRVNTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9BQ0NPVU5UX1RZUEVfVkFMVUVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9BRERJVElPTkFMX0lORk9STUFUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0FORF9HUk9VUF9JRF9GUk9NX1BTRVVET1JFRkVSRU5DRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9DQVRFR09SWV9OT1JNQUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ0VSVElGSUNBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ0VSVElGSUNBVEVfU1RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ0VSVElGSUNBVEVfU1VCSkVDVF9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0NFUlRJRklDQVRFX1RIVU1CUFJJTlRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ09NTU9OX0NBVEVHT1JZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0NPTU1PTl9DQVRFR09SWV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0ZVTExfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9HUk9VUF9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0xPR0lOX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1JFTU9URV9DT05UUk9MTEVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1JFTU9URV9TWVNURU1fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfUklHSFRTX1RfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU0VSVkVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU0VSVklDRV9DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TRVJWSUNFX0NBVEVHT1JZX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0FETUlOSVNUUkFUT1JfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfQURNSU5JU1RSQVRPUl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19ERVZFTE9QRVJfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfREVWRUxPUEVSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0RJU0FCTEVEX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0RJU0FCTEVEX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX1NZU1RFTV9ERVZFTE9QRVJfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfVVNFUl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19VU0VSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX1VTRVJfTkFNRV9ERVBSRUNBVEVEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1RZUEVfRklFTERfVkFMVUVfVVNFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19DT05UUk9MTEVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19JU19NQUlOX1NFUlZFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1JFR0lTVFJBVElPTl9DRVJUSUZJQ0FURVNfQUNUSU9OX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19TWVNURU1fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1VTRVJfQUNDRVNTX1JJR0hUU19UWVBSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19VU0VSX0FVVEhFTlRJQ0FUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19VU0VSX0NPTVBPTkVOVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfVVNFUl9HUk9VUF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfVklFV19DRVJUSUZJQ0FURVNfQUNUSU9OX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1ZJRVdfREVGQVVMVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9WSUVXX0RFRkFVTFRfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVklFV0VSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XQUlUSU5HX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XSVpBUkRfRk9STV9MQUJFTF9URVNUX1NUUklORyAgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dJWkFSRF9RVUVSWV9QQVJBTV9IRUlHSFRfRVRBTE9OX1NUUklORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV0laQVJEX1JFRkVSRU5DRV9DT01NRU5UX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1JVTEVTX0RFU0NSSVBUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1RJTUVfQ0FMRU5EQVJfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dPUktfV09SS0ZMT1dfSEFSRF9ST1VURV9UWVBFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1dPUktGTE9XX0hBUkRfUk9VVEVfVFlQRV9WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1dPUktGTE9XX0hBUkRfUk9VVEVfVFlQRV9WQUxVRV9DT0RFX1JVUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV09SS19XT1JLRkxPV19TT0ZUX1JPVVRFX1RZUEVfVkFMVUVfQ09ERV9SVVMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dPUktGTE9XX1JPVVRFX1RZUFJfSEFSRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV09SS0ZMT1dfUk9VVEVfVFlQUl9TT0ZUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9YTUxfRU5DT0RJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1hSRUNfU1RBVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWFJFQ0lEX0ZJRUxEX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWUVTX05PXzJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFU19OT19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWUVTX05PX1RfUkVGX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFU19QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ZRVNfVkFMVUUgXCI7XG5cbiAgLy8gQmFzZSBjb25zdGFudFxuICB2YXIgYmFzZV9jb25zdGFudHMgPSBcIkNSIEZBTFNFIG5pbCBOT19WQUxVRSBOVUxMIFRBQiBUUlVFIFlFU19WQUxVRSBcIjtcblxuICAvLyBCYXNlIGdyb3VwIG5hbWVcbiAgdmFyIGJhc2VfZ3JvdXBfbmFtZV9jb25zdGFudHMgPVxuICAgIFwiQURNSU5JU1RSQVRPUlNfR1JPVVBfTkFNRSBDVVNUT01JWkVSU19HUk9VUF9OQU1FIERFVkVMT1BFUlNfR1JPVVBfTkFNRSBTRVJWSUNFX1VTRVJTX0dST1VQX05BTUUgXCI7XG5cbiAgLy8gRGVjaXNpb24gYmxvY2sgcHJvcGVydGllc1xuICB2YXIgZGVjaXNpb25fYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiREVDSVNJT05fQkxPQ0tfRklSU1RfT1BFUkFORF9QUk9QRVJUWSBERUNJU0lPTl9CTE9DS19OQU1FX1BST1BFUlRZIERFQ0lTSU9OX0JMT0NLX09QRVJBVElPTl9QUk9QRVJUWSBcIiArXG4gICAgXCJERUNJU0lPTl9CTE9DS19SRVNVTFRfVFlQRV9QUk9QRVJUWSBERUNJU0lPTl9CTE9DS19TRUNPTkRfT1BFUkFORF9QUk9QRVJUWSBcIjtcblxuICAvLyBGaWxlIGV4dGVuc2lvblxuICB2YXIgZmlsZV9leHRlbnNpb25fY29uc3RhbnRzID1cbiAgICBcIkFOWV9GSUxFX0VYVEVOVElPTiBDT01QUkVTU0VEX0RPQ1VNRU5UX0VYVEVOU0lPTiBFWFRFTkRFRF9ET0NVTUVOVF9FWFRFTlNJT04gXCIgK1xuICAgIFwiU0hPUlRfQ09NUFJFU1NFRF9ET0NVTUVOVF9FWFRFTlNJT04gU0hPUlRfRVhURU5ERURfRE9DVU1FTlRfRVhURU5TSU9OIFwiO1xuXG4gIC8vIEpvYiBibG9jayBwcm9wZXJ0aWVzXG4gIHZhciBqb2JfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiSk9CX0JMT0NLX0FCT1JUX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0FGVEVSX1FVRVJZX1BBUkFNRVRFUlNfRVZFTlQgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0FUVEFDSE1FTlRfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19HUk9VUF9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfQVRUQUNITUVOVFNfUklHSFRTX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0JFRk9SRV9RVUVSWV9QQVJBTUVURVJTX0VWRU5UIFwiICtcbiAgICBcIkpPQl9CTE9DS19CRUZPUkVfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0NSRUFURURfSk9CU19QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0VYRUNVVElPTl9SRVNVTFRTX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19JU19QQVJBTExFTF9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfSVNfUkVMQVRJVkVfQUJPUlRfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19KT0JfVEVYVF9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfTkVFRF9TSUdOX09OX1BFUkZPUk1fUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX1BFUkZPUk1FUl9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfUkVMQVRJVkVfQUJPUlRfREVBRExJTkVfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfUkVMQVRJVkVfREVBRExJTkVfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfU1VCSkVDVF9QUk9QRVJUWSBcIjtcblxuICAvLyBMYW5ndWFnZSBjb2RlXG4gIHZhciBsYW5ndWFnZV9jb2RlX2NvbnN0YW50cyA9IFwiRU5HTElTSF9MQU5HVUFHRV9DT0RFIFJVU1NJQU5fTEFOR1VBR0VfQ09ERSBcIjtcblxuICAvLyBMYXVuY2hpbmcgZXh0ZXJuYWwgYXBwbGljYXRpb25zXG4gIHZhciBsYXVuY2hpbmdfZXh0ZXJuYWxfYXBwbGljYXRpb25zX2NvbnN0YW50cyA9XG4gICAgXCJzbUhpZGRlbiBzbU1heGltaXplZCBzbU1pbmltaXplZCBzbU5vcm1hbCB3bU5vIHdtWWVzIFwiO1xuXG4gIC8vIExpbmsga2luZFxuICB2YXIgbGlua19raW5kX2NvbnN0YW50cyA9XG4gICAgXCJDT01QT05FTlRfVE9LRU5fTElOS19LSU5EIFwiICtcbiAgICBcIkRPQ1VNRU5UX0xJTktfS0lORCBcIiArXG4gICAgXCJFRE9DVU1FTlRfTElOS19LSU5EIFwiICtcbiAgICBcIkZPTERFUl9MSU5LX0tJTkQgXCIgK1xuICAgIFwiSk9CX0xJTktfS0lORCBcIiArXG4gICAgXCJSRUZFUkVOQ0VfTElOS19LSU5EIFwiICtcbiAgICBcIlRBU0tfTElOS19LSU5EIFwiO1xuXG4gIC8vIExvY2sgdHlwZVxuICB2YXIgbG9ja190eXBlX2NvbnN0YW50cyA9XG4gICAgXCJDT01QT05FTlRfVE9LRU5fTE9DS19UWVBFIEVET0NVTUVOVF9WRVJTSU9OX0xPQ0tfVFlQRSBcIjtcblxuICAvLyBNb25pdG9yIGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIG1vbml0b3JfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiTU9OSVRPUl9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19CRUZPUkVfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX0lOVEVSVkFMX1BST1BFUlRZIFwiICtcbiAgICBcIk1PTklUT1JfQkxPQ0tfSU5URVJWQUxfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIk1PTklUT1JfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX1JFTEFUSVZFX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19TRUFSQ0hfU0NSSVBUX1BST1BFUlRZIFwiO1xuXG4gIC8vIE5vdGljZSBibG9jayBwcm9wZXJ0aWVzXG4gIHZhciBub3RpY2VfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiTk9USUNFX0JMT0NLX0FGVEVSX0ZJTklTSF9FVkVOVCBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQVRUQUNITUVOVF9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQVRUQUNITUVOVFNfUklHSFRTX0dST1VQX1BST1BFUlRZIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19BVFRBQ0hNRU5UU19SSUdIVFNfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQkVGT1JFX1NUQVJUX0VWRU5UIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19DUkVBVEVEX05PVElDRVNfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19JU19SRUxBVElWRV9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfTk9USUNFX1RFWFRfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX1BFUkZPUk1FUl9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfUkVMQVRJVkVfREVBRExJTkVfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfU1VCSkVDVF9QUk9QRVJUWSBcIjtcblxuICAvLyBPYmplY3QgZXZlbnRzXG4gIHZhciBvYmplY3RfZXZlbnRzX2NvbnN0YW50cyA9XG4gICAgXCJkc2VBZnRlckNhbmNlbCBcIiArXG4gICAgXCJkc2VBZnRlckNsb3NlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlT3V0T2ZUcmFuc2FjdGlvbiBcIiArXG4gICAgXCJkc2VBZnRlckluc2VydCBcIiArXG4gICAgXCJkc2VBZnRlck9wZW4gXCIgK1xuICAgIFwiZHNlQWZ0ZXJTY3JvbGwgXCIgK1xuICAgIFwiZHNlQWZ0ZXJVcGRhdGUgXCIgK1xuICAgIFwiZHNlQWZ0ZXJVcGRhdGVPdXRPZlRyYW5zYWN0aW9uIFwiICtcbiAgICBcImRzZUJlZm9yZUNhbmNlbCBcIiArXG4gICAgXCJkc2VCZWZvcmVDbG9zZSBcIiArXG4gICAgXCJkc2VCZWZvcmVEZWxldGUgXCIgK1xuICAgIFwiZHNlQmVmb3JlRGV0YWlsVXBkYXRlIFwiICtcbiAgICBcImRzZUJlZm9yZUluc2VydCBcIiArXG4gICAgXCJkc2VCZWZvcmVPcGVuIFwiICtcbiAgICBcImRzZUJlZm9yZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPbkFueVJlcXVpc2l0ZUNoYW5nZSBcIiArXG4gICAgXCJkc2VPbkNsb3NlUmVjb3JkIFwiICtcbiAgICBcImRzZU9uRGVsZXRlRXJyb3IgXCIgK1xuICAgIFwiZHNlT25PcGVuUmVjb3JkIFwiICtcbiAgICBcImRzZU9uUHJlcGFyZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPblVwZGF0ZUVycm9yIFwiICtcbiAgICBcImRzZU9uVXBkYXRlUmF0aWZpZWRSZWNvcmQgXCIgK1xuICAgIFwiZHNlT25WYWxpZERlbGV0ZSBcIiArXG4gICAgXCJkc2VPblZhbGlkVXBkYXRlIFwiICtcbiAgICBcInJlT25DaGFuZ2UgXCIgK1xuICAgIFwicmVPbkNoYW5nZVZhbHVlcyBcIiArXG4gICAgXCJTRUxFQ1RJT05fQkVHSU5fUk9VVEVfRVZFTlQgXCIgK1xuICAgIFwiU0VMRUNUSU9OX0VORF9ST1VURV9FVkVOVCBcIjtcblxuICAvLyBPYmplY3QgcGFyYW1zXG4gIHZhciBvYmplY3RfcGFyYW1zX2NvbnN0YW50cyA9XG4gICAgXCJDVVJSRU5UX1BFUklPRF9JU19SRVFVSVJFRCBcIiArXG4gICAgXCJQUkVWSU9VU19DQVJEX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTSE9XX1JFQ09SRF9QUk9QRVJUSUVTX0ZPUk0gXCI7XG5cbiAgLy8gT3RoZXJcbiAgdmFyIG90aGVyX2NvbnN0YW50cyA9XG4gICAgXCJBQ0NFU1NfUklHSFRTX1NFVFRJTkdfRElBTE9HX0NPREUgXCIgK1xuICAgIFwiQURNSU5JU1RSQVRPUl9VU0VSX0NPREUgXCIgK1xuICAgIFwiQU5BTFlUSUNfUkVQT1JUX1RZUEUgXCIgK1xuICAgIFwiYXNydEhpZGVMb2NhbCBcIiArXG4gICAgXCJhc3J0SGlkZVJlbW90ZSBcIiArXG4gICAgXCJDQUxDVUxBVEVEX1JPTEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIkNPTVBPTkVOVFNfUkVGRVJFTkNFX0RFVkVMT1BFUl9WSUVXX0NPREUgXCIgK1xuICAgIFwiRENUU19URVNUX1BST1RPQ09MU19GT0xERVJfUEFUSCBcIiArXG4gICAgXCJFX0VET0NfVkVSU0lPTl9BTFJFQURZX0FQUFJPVklOR0xZX1NJR05FRCBcIiArXG4gICAgXCJFX0VET0NfVkVSU0lPTl9BTFJFQURZX0FQUFJPVklOR0xZX1NJR05FRF9CWV9VU0VSIFwiICtcbiAgICBcIkVfRURPQ19WRVJTSU9OX0FMUkVEWV9TSUdORUQgXCIgK1xuICAgIFwiRV9FRE9DX1ZFUlNJT05fQUxSRURZX1NJR05FRF9CWV9VU0VSIFwiICtcbiAgICBcIkVET0NfVFlQRVNfQ09ERV9SRVFVSVNJVEVfRklFTERfTkFNRSBcIiArXG4gICAgXCJFRE9DVU1FTlRTX0FMSUFTX05BTUUgXCIgK1xuICAgIFwiRklMRVNfRk9MREVSX1BBVEggXCIgK1xuICAgIFwiRklMVEVSX09QRVJBTkRTX0RFTElNSVRFUiBcIiArXG4gICAgXCJGSUxURVJfT1BFUkFUSU9OU19ERUxJTUlURVIgXCIgK1xuICAgIFwiRk9STUNBUkRfTkFNRSBcIiArXG4gICAgXCJGT1JNTElTVF9OQU1FIFwiICtcbiAgICBcIkdFVF9FWFRFTkRFRF9ET0NVTUVOVF9FWFRFTlNJT05fQ1JFQVRJT05fTU9ERSBcIiArXG4gICAgXCJHRVRfRVhURU5ERURfRE9DVU1FTlRfRVhURU5TSU9OX0lNUE9SVF9NT0RFIFwiICtcbiAgICBcIklOVEVHUkFURURfUkVQT1JUX1RZUEUgXCIgK1xuICAgIFwiSVNfQlVJTERFUl9BUFBMSUNBVElPTl9ST0xFIFwiICtcbiAgICBcIklTX0JVSUxERVJfQVBQTElDQVRJT05fUk9MRTIgXCIgK1xuICAgIFwiSVNfQlVJTERFUl9VU0VSUyBcIiArXG4gICAgXCJJU0JTWVNERVYgXCIgK1xuICAgIFwiTE9HX0ZPTERFUl9QQVRIIFwiICtcbiAgICBcIm1iQ2FuY2VsIFwiICtcbiAgICBcIm1iTm8gXCIgK1xuICAgIFwibWJOb1RvQWxsIFwiICtcbiAgICBcIm1iT0sgXCIgK1xuICAgIFwibWJZZXMgXCIgK1xuICAgIFwibWJZZXNUb0FsbCBcIiArXG4gICAgXCJNRU1PUllfREFUQVNFVF9ERVNSSVBUSU9OU19GSUxFTkFNRSBcIiArXG4gICAgXCJtck5vIFwiICtcbiAgICBcIm1yTm9Ub0FsbCBcIiArXG4gICAgXCJtclllcyBcIiArXG4gICAgXCJtclllc1RvQWxsIFwiICtcbiAgICBcIk1VTFRJUExFX1NFTEVDVF9ESUFMT0dfQ09ERSBcIiArXG4gICAgXCJOT05PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfRkVNSU5JTkUgXCIgK1xuICAgIFwiTk9OT1BFUkFUSU5HX1JFQ09SRF9GTEFHX01BU0NVTElORSBcIiArXG4gICAgXCJPUEVSQVRJTkdfUkVDT1JEX0ZMQUdfRkVNSU5JTkUgXCIgK1xuICAgIFwiT1BFUkFUSU5HX1JFQ09SRF9GTEFHX01BU0NVTElORSBcIiArXG4gICAgXCJQUk9GSUxJTkdfU0VUVElOR1NfQ09NTU9OX1NFVFRJTkdTX0NPREVfVkFMVUUgXCIgK1xuICAgIFwiUFJPR1JBTV9JTklUSUFURURfTE9PS1VQX0FDVElPTiBcIiArXG4gICAgXCJyYXREZWxldGUgXCIgK1xuICAgIFwicmF0RWRpdCBcIiArXG4gICAgXCJyYXRJbnNlcnQgXCIgK1xuICAgIFwiUkVQT1JUX1RZUEUgXCIgK1xuICAgIFwiUkVRVUlSRURfUElDS19WQUxVRVNfVkFSSUFCTEUgXCIgK1xuICAgIFwicm1DYXJkIFwiICtcbiAgICBcInJtTGlzdCBcIiArXG4gICAgXCJTQlJURV9QUk9HSURfREVWIFwiICtcbiAgICBcIlNCUlRFX1BST0dJRF9SRUxFQVNFIFwiICtcbiAgICBcIlNUQVRJQ19ST0xFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTVVBQUkVTU19FTVBUWV9URU1QTEFURV9DUkVBVElPTiBcIiArXG4gICAgXCJTWVNURU1fVVNFUl9DT0RFIFwiICtcbiAgICBcIlVQREFURV9ESUFMT0dfREFUQVNFVCBcIiArXG4gICAgXCJVU0VEX0lOX09CSkVDVF9ISU5UX1BBUkFNIFwiICtcbiAgICBcIlVTRVJfSU5JVElBVEVEX0xPT0tVUF9BQ1RJT04gXCIgK1xuICAgIFwiVVNFUl9OQU1FX0ZPUk1BVCBcIiArXG4gICAgXCJVU0VSX1NFTEVDVElPTl9SRVNUUklDVElPTlMgXCIgK1xuICAgIFwiV09SS0ZMT1dfVEVTVF9QUk9UT0NPTFNfRk9MREVSX1BBVEggXCIgK1xuICAgIFwiRUxTX1NVQlRZUEVfQ09OVFJPTF9OQU1FIFwiICtcbiAgICBcIkVMU19GT0xERVJfS0lORF9DT05UUk9MX05BTUUgXCIgK1xuICAgIFwiUkVQRUFUX1BST0NFU1NfQ1VSUkVOVF9PQkpFQ1RfRVhDRVBUSU9OX05BTUUgXCI7XG5cbiAgLy8gUHJpdmlsZWdlc1xuICB2YXIgcHJpdmlsZWdlc19jb25zdGFudHMgPVxuICAgIFwiUFJJVklMRUdFX0NPTVBPTkVOVF9GVUxMX0FDQ0VTUyBcIiArXG4gICAgXCJQUklWSUxFR0VfREVWRUxPUE1FTlRfRVhQT1JUIFwiICtcbiAgICBcIlBSSVZJTEVHRV9ERVZFTE9QTUVOVF9JTVBPUlQgXCIgK1xuICAgIFwiUFJJVklMRUdFX0RPQ1VNRU5UX0RFTEVURSBcIiArXG4gICAgXCJQUklWSUxFR0VfRVNEIFwiICtcbiAgICBcIlBSSVZJTEVHRV9GT0xERVJfREVMRVRFIFwiICtcbiAgICBcIlBSSVZJTEVHRV9NQU5BR0VfQUNDRVNTX1JJR0hUUyBcIiArXG4gICAgXCJQUklWSUxFR0VfTUFOQUdFX1JFUExJQ0FUSU9OIFwiICtcbiAgICBcIlBSSVZJTEVHRV9NQU5BR0VfU0VTU0lPTl9TRVJWRVIgXCIgK1xuICAgIFwiUFJJVklMRUdFX09CSkVDVF9GVUxMX0FDQ0VTUyBcIiArXG4gICAgXCJQUklWSUxFR0VfT0JKRUNUX1ZJRVcgXCIgK1xuICAgIFwiUFJJVklMRUdFX1JFU0VSVkVfTElDRU5TRSBcIiArXG4gICAgXCJQUklWSUxFR0VfU1lTVEVNX0NVU1RPTUlaRSBcIiArXG4gICAgXCJQUklWSUxFR0VfU1lTVEVNX0RFVkVMT1AgXCIgK1xuICAgIFwiUFJJVklMRUdFX1NZU1RFTV9JTlNUQUxMIFwiICtcbiAgICBcIlBSSVZJTEVHRV9UQVNLX0RFTEVURSBcIiArXG4gICAgXCJQUklWSUxFR0VfVVNFUl9QTFVHSU5fU0VUVElOR1NfQ1VTVE9NSVpFIFwiICtcbiAgICBcIlBSSVZJTEVHRVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCI7XG5cbiAgLy8gUHNldWRvcmVmZXJlbmNlIGNvZGVcbiAgdmFyIHBzZXVkb3JlZmVyZW5jZV9jb2RlX2NvbnN0YW50cyA9XG4gICAgXCJBQ0NFU1NfVFlQRVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiQUxMX0FWQUlMQUJMRV9DT01QT05FTlRTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIkFMTF9BVkFJTEFCTEVfUFJJVklMRUdFU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJBTExfUkVQTElDQVRFX0NPTVBPTkVOVFNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiQVZBSUxBQkxFX0RFVkVMT1BFUlNfQ09NUE9ORU5UU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJDT01QT05FTlRTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIkZJTFRSQVRFUl9TRVRUSU5HU19DT05GTElDVFNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiR1JPVVBTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlJFQ0VJVkVfUFJPVE9DT0xfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiUkVGRVJFTkNFX1JFUVVJU0lURV9QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJSRUZFUkVOQ0VfUkVRVUlTSVRFU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJSRUZUWVBFU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJSRVBMSUNBVElPTl9TRUFOQ0VTX0RJQVJZX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNFTkRfUFJPVE9DT0xfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1VCU1RJVFVURVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTVEVNX1NFVFRJTkdTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlVOSVRTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlVTRVJTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlZJRVdFUlNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCI7XG5cbiAgLy8gUmVxdWlzaXRlIElTQkNlcnRpZmljYXRlVHlwZSB2YWx1ZXNcbiAgdmFyIHJlcXVpc2l0ZV9JU0JDZXJ0aWZpY2F0ZVR5cGVfdmFsdWVzX2NvbnN0YW50cyA9XG4gICAgXCJDRVJUSUZJQ0FURV9UWVBFX0VOQ1JZUFQgXCIgK1xuICAgIFwiQ0VSVElGSUNBVEVfVFlQRV9TSUdOIFwiICtcbiAgICBcIkNFUlRJRklDQVRFX1RZUEVfU0lHTl9BTkRfRU5DUllQVCBcIjtcblxuICAvLyBSZXF1aXNpdGUgSVNCRURvY1N0b3JhZ2VUeXBlIHZhbHVlc1xuICB2YXIgcmVxdWlzaXRlX0lTQkVEb2NTdG9yYWdlVHlwZV92YWx1ZXNfY29uc3RhbnRzID1cbiAgICBcIlNUT1JBR0VfVFlQRV9GSUxFIFwiICtcbiAgICBcIlNUT1JBR0VfVFlQRV9OQVNfQ0lGUyBcIiArXG4gICAgXCJTVE9SQUdFX1RZUEVfU0FQRVJJT04gXCIgK1xuICAgIFwiU1RPUkFHRV9UWVBFX1NRTF9TRVJWRVIgXCI7XG5cbiAgLy8gUmVxdWlzaXRlIENvbXBUeXBlMiB2YWx1ZXNcbiAgdmFyIHJlcXVpc2l0ZV9jb21wVHlwZTJfdmFsdWVzX2NvbnN0YW50cyA9XG4gICAgXCJDT01QVFlQRTJfUkVRVUlTSVRFX0RPQ1VNRU5UU19WQUxVRSBcIiArXG4gICAgXCJDT01QVFlQRTJfUkVRVUlTSVRFX1RBU0tTX1ZBTFVFIFwiICtcbiAgICBcIkNPTVBUWVBFMl9SRVFVSVNJVEVfRk9MREVSU19WQUxVRSBcIiArXG4gICAgXCJDT01QVFlQRTJfUkVRVUlTSVRFX1JFRkVSRU5DRVNfVkFMVUUgXCI7XG5cbiAgLy8gUmVxdWlzaXRlIG5hbWVcbiAgdmFyIHJlcXVpc2l0ZV9uYW1lX2NvbnN0YW50cyA9XG4gICAgXCJTWVNSRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfQ09NUFRZUEUyIFwiICtcbiAgICBcIlNZU1JFUV9DT05TVF9BVkFJTEFCTEVfRk9SX1dFQiBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfQ09NTU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0NPTlNUX0NPTU1PTl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfRklSTV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9DT05TVF9GSVJNX1NUQVRVUyBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfRklSTV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfU0VSVkVSX1NUQVRVUyBcIiArXG4gICAgXCJTWVNSRVFfQ09OVEVOVFMgXCIgK1xuICAgIFwiU1lTUkVRX0RBVEVfT1BFTiBcIiArXG4gICAgXCJTWVNSRVFfREFURV9DTE9TRSBcIiArXG4gICAgXCJTWVNSRVFfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVRX0RFU0NSSVBUSU9OX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9ET1VCTEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfQUNDRVNTX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfQVVUSE9SIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0NSRUFURUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfREVMRUdBVEVfUklHSFRTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0VESVRPUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19FTkNPREVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19FTkNSWVBUSU9OX1BMVUdJTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0VOQ1JZUFRJT05fUExVR0lOX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfRVhQT1JUX0RBVEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfRVhQT1JURVIgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfS0lORCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19MSUZFX1NUQUdFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfTE9DS0VEX0ZPUl9TRVJWRVJfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19NT0RJRklFRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX05PVEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfUVVBTElGSUVEX0lEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NFU1NJT05fS0VZIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NFU1NJT05fS0VZX0VOQ1JZUFRJT05fUExVR0lOX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU0VTU0lPTl9LRVlfRU5DUllQVElPTl9QTFVHSU5fVkVSU0lPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TSUdOQVRVUkVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TSUdORUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19BUkNISVZFX1NUT1JBR0UgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfQ0hFQ0tfUklHSFRTIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0NPTVBVVEVSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfRURJVF9JTl9TVE9SQUdFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0VYRUNVVElWRV9TVE9SQUdFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0ZVTkNUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0lOSVRJQUxJWkVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0xPQ0FMX1BBVEggXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfU0FQRVJJT05fREFUQUJBU0VfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19TRUFSQ0hfQllfVEVYVCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19TRVJWRVJfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19TSEFSRURfU09VUkNFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19URVhUX01PRElGSUVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfQUNUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfREVTQ1JJUFRJT05fTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfT05fRVhFQ1VURSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0FDVF9PTl9FWEVDVVRFX0VYSVNUUyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0FDVF9TRUNUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfQUREX1BBUkFNUyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9FVkVOVF9URVhUIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfTkFNRV9JTl9TSU5HVUxBUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX05BTUVfSU5fU0lOR1VMQVJfTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9OQU1FX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfTlVNRVJBVElPTl9NRVRIT0QgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9QU0VVRE9fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9ERVNDUklQVElPTl9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9JU19MRUFESU5HIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUkVRX0lTX1JFUVVJUkVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUkVRX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9PTl9DSEFOR0UgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfT05fQ0hBTkdFX0VYSVNUUyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9PTl9TRUxFQ1QgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfT05fU0VMRUNUX0tJTkQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfU0VDVElPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfQ0FSRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfQ09NTUVOVCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfSVNfTUFJTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfTkFNRV9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0FVVEhPUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0NSQyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0RBVEEgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9FRElUT1IgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9FWFBPUlRfREFURSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0VYUE9SVEVSIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fSElEREVOIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fTElGRV9TVEFHRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX01PRElGSUVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fTk9URSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1NJR05BVFVSRV9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fU0lHTkVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fU0laRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1NPVVJDRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1RFWFRfTU9ESUZJRUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NLSU5EX0RFRkFVTFRfVkVSU0lPTl9TVEFURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9GT0xERVJfS0lORCBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19DT01NRU5UIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX0dST1VQIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX0dST1VQX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX0ZVTkNfR1JPVVBfTlVNQkVSIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX0hFTFAgXCIgK1xuICAgIFwiU1lTUkVRX0ZVTkNfUEFSQU1fREVGX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX1BBUkFNX0lERU5UIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX1BBUkFNX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19QQVJBTV9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX1RFWFQgXCIgK1xuICAgIFwiU1lTUkVRX0dST1VQX0NBVEVHT1JZIFwiICtcbiAgICBcIlNZU1JFUV9JRCBcIiArXG4gICAgXCJTWVNSRVFfTEFTVF9VUERBVEUgXCIgK1xuICAgIFwiU1lTUkVRX0xFQURFUl9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVRX0xJTkVfTlVNQkVSIFwiICtcbiAgICBcIlNZU1JFUV9NQUlOX1JFQ09SRF9JRCBcIiArXG4gICAgXCJTWVNSRVFfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfTkFNRV9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfTk9URSBcIiArXG4gICAgXCJTWVNSRVFfT1JJR0lOQUxfUkVDT1JEIFwiICtcbiAgICBcIlNZU1JFUV9PVVJfRklSTSBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX0JBVENIX0xPR0lORyBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX0JBVENIX1NJWkUgXCIgK1xuICAgIFwiU1lTUkVRX1BST0ZJTElOR19TRVRUSU5HU19QUk9GSUxJTkdfRU5BQkxFRCBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX1NRTF9QUk9GSUxJTkdfRU5BQkxFRCBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX1NUQVJUX0xPR0dFRCBcIiArXG4gICAgXCJTWVNSRVFfUkVDT1JEX1NUQVRVUyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9GSUVMRF9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX0ZPUk1BVCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9HRU5FUkFURUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfTEVOR1RIIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX1BSRUNJU0lPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfU0VDVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9TVE9SRUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfVE9LRU5TIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfVklFVyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX0FDVF9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX0RFU0NSSVBUSU9OX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9BQ1RfT05fRVhFQ1VURSBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX09OX0VYRUNVVEVfRVhJU1RTIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9BQ1RfU0VDVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUREX1BBUkFNUyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQ09NTUVOVCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQ09NTU9OX1NFVFRJTkdTIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9ESVNQTEFZX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9FVkVOVF9URVhUIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9NQUlOX0xFQURJTkdfUkVGIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OQU1FX0lOX1NJTkdVTEFSIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OQU1FX0lOX1NJTkdVTEFSX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OQU1FX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OVU1FUkFUSU9OX01FVEhPRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0RFU0NSSVBUSU9OX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9SRVFfSVNfQ09OVFJPTCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0lTX0ZJTFRFUiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0lTX0xFQURJTkcgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9JU19SRVFVSVJFRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX09OX0NIQU5HRSBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX09OX0NIQU5HRV9FWElTVFMgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9PTl9TRUxFQ1QgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9PTl9TRUxFQ1RfS0lORCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX1NFQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1ZJRVdfQ0FSRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9WSUVXX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1ZJRVdfSVNfTUFJTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfVklFV19OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9WSUVXX05BTUVfTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRkVSRU5DRV9UWVBFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9TVEFURSBcIiArXG4gICAgXCJTWVNSRVFfU1RBVNCVIFwiICtcbiAgICBcIlNZU1JFUV9TWVNURU1fU0VUVElOR1NfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVRX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX1VOSVQgXCIgK1xuICAgIFwiU1lTUkVRX1VOSVRfSUQgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJfR1JPVVBTX0dST1VQX0ZVTExfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUl9HUk9VUFNfR1JPVVBfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUl9HUk9VUFNfR1JPVVBfU0VSVkVSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0FVVEhFTlRJQ0FUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfQ09NUE9ORU5UIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19DT01QT05FTlRfVVNFUl9JU19QVUJMSUMgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0RPTUFJTiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfRlVMTF9VU0VSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0dST1VQIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19JU19NQUlOX1NFUlZFUiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfTE9HSU4gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1JFRkVSRU5DRV9VU0VSX0lTX1BVQkxJQyBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfU1RBVFVTIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFX0lORk8gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfUExVR0lOX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfUExVR0lOX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfU1RBVEUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfU1VCSkVDVF9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFX1RIVU1CUFJJTlQgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfREVGQVVMVF9DRVJUSUZJQ0FURSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9HTE9CQUxfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9MT0dJTiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9NQUlOX1NFUlZFUiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9XT1JLX1JVTEVTX0ZPTERFUl9JRCBcIjtcblxuICAvLyBSZXN1bHRcbiAgdmFyIHJlc3VsdF9jb25zdGFudHMgPSBcIlJFU1VMVF9WQVJfTkFNRSBSRVNVTFRfVkFSX05BTUVfRU5HIFwiO1xuXG4gIC8vIFJ1bGUgaWRlbnRpZmljYXRpb25cbiAgdmFyIHJ1bGVfaWRlbnRpZmljYXRpb25fY29uc3RhbnRzID1cbiAgICBcIkFVVE9fTlVNRVJBVElPTl9SVUxFX0lEIFwiICtcbiAgICBcIkNBTlRfQ0hBTkdFX0lEX1JFUVVJU0lURV9SVUxFX0lEIFwiICtcbiAgICBcIkNBTlRfQ0hBTkdFX09VUkZJUk1fUkVRVUlTSVRFX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfQ0hBTkdJTkdfUkVGRVJFTkNFX1JFQ09SRF9VU0VfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19DT0RFX1JFUVVJU0lURV9SVUxFX0lEIFwiICtcbiAgICBcIkNIRUNLX0RFTEVUSU5HX1JFRkVSRU5DRV9SRUNPUkRfVVNFX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfRklMVFJBVEVSX0NIQU5HRVNfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19SRUNPUkRfSU5URVJWQUxfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19SRUZFUkVOQ0VfSU5URVJWQUxfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19SRVFVSVJFRF9EQVRBX0ZVTExORVNTX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfUkVRVUlSRURfUkVRVUlTSVRFU19GVUxMTkVTU19SVUxFX0lEIFwiICtcbiAgICBcIk1BS0VfUkVDT1JEX1VOUkFUSUZJRURfUlVMRV9JRCBcIiArXG4gICAgXCJSRVNUT1JFX0FVVE9fTlVNRVJBVElPTl9SVUxFX0lEIFwiICtcbiAgICBcIlNFVF9GSVJNX0NPTlRFWFRfRlJPTV9SRUNPUkRfUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfRklSU1RfUkVDT1JEX0lOX0xJU1RfRk9STV9SVUxFX0lEIFwiICtcbiAgICBcIlNFVF9JRFNQU19WQUxVRV9SVUxFX0lEIFwiICtcbiAgICBcIlNFVF9ORVhUX0NPREVfVkFMVUVfUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfT1VSRklSTV9CT1VORFNfUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfT1VSRklSTV9SRVFVSVNJVEVfUlVMRV9JRCBcIjtcblxuICAvLyBTY3JpcHQgYmxvY2sgcHJvcGVydGllc1xuICB2YXIgc2NyaXB0X2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzID1cbiAgICBcIlNDUklQVF9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiU0NSSVBUX0JMT0NLX0JFRk9SRV9TVEFSVF9FVkVOVCBcIiArXG4gICAgXCJTQ1JJUFRfQkxPQ0tfRVhFQ1VUSU9OX1JFU1VMVFNfUFJPUEVSVFkgXCIgK1xuICAgIFwiU0NSSVBUX0JMT0NLX05BTUVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU0NSSVBUX0JMT0NLX1NDUklQVF9QUk9QRVJUWSBcIjtcblxuICAvLyBTdWJ0YXNrIGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIHN1YnRhc2tfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiU1VCVEFTS19CTE9DS19BQk9SVF9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FGVEVSX0ZJTklTSF9FVkVOVCBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FTU0lHTl9QQVJBTVNfRVZFTlQgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19BVFRBQ0hNRU5UU19QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19HUk9VUF9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfQkVGT1JFX1NUQVJUX0VWRU5UIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfQ1JFQVRFRF9UQVNLX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfQ1JFQVRJT05fRVZFTlQgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0lNUE9SVEFOQ0VfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19JTklUSUFUT1JfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19JU19SRUxBVElWRV9BQk9SVF9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfSk9CU19UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1BBUkFMTEVMX1JPVVRFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfUEVSRk9STUVSU19QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1JFTEFUSVZFX0FCT1JUX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19SRUxBVElWRV9ERUFETElORV9UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfUkVRVUlSRV9TSUdOX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfU1RBTkRBUkRfUk9VVEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19TVEFSVF9FVkVOVCBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1NURVBfQ09OVFJPTF9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1NVQkpFQ1RfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19UQVNLX0NPTlRST0xfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19URVhUX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfVU5MT0NLX0FUVEFDSE1FTlRTX09OX1NUT1BfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19VU0VfU1RBTkRBUkRfUk9VVEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19XQUlUX0ZPUl9UQVNLX0NPTVBMRVRFX1BST1BFUlRZIFwiO1xuXG4gIC8vIFN5c3RlbSBjb21wb25lbnRcbiAgdmFyIHN5c3RlbV9jb21wb25lbnRfY29uc3RhbnRzID1cbiAgICBcIlNZU0NPTVBfQ09OVFJPTF9KT0JTIFwiICtcbiAgICBcIlNZU0NPTVBfRk9MREVSUyBcIiArXG4gICAgXCJTWVNDT01QX0pPQlMgXCIgK1xuICAgIFwiU1lTQ09NUF9OT1RJQ0VTIFwiICtcbiAgICBcIlNZU0NPTVBfVEFTS1MgXCI7XG5cbiAgLy8gU3lzdGVtIGRpYWxvZ3NcbiAgdmFyIHN5c3RlbV9kaWFsb2dzX2NvbnN0YW50cyA9XG4gICAgXCJTWVNETEdfQ1JFQVRFX0VET0NVTUVOVCBcIiArXG4gICAgXCJTWVNETEdfQ1JFQVRFX0VET0NVTUVOVF9WRVJTSU9OIFwiICtcbiAgICBcIlNZU0RMR19DVVJSRU5UX1BFUklPRCBcIiArXG4gICAgXCJTWVNETEdfRURJVF9GVU5DVElPTl9IRUxQIFwiICtcbiAgICBcIlNZU0RMR19FRE9DVU1FTlRfS0lORFNfRk9SX1RFTVBMQVRFIFwiICtcbiAgICBcIlNZU0RMR19FWFBPUlRfTVVMVElQTEVfRURPQ1VNRU5UUyBcIiArXG4gICAgXCJTWVNETEdfRVhQT1JUX1NJTkdMRV9FRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTRExHX0lNUE9SVF9FRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTRExHX01VTFRJUExFX1NFTEVDVCBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfQUNDRVNTX1JJR0hUUyBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfREVGQVVMVF9SSUdIVFMgXCIgK1xuICAgIFwiU1lTRExHX1NFVFVQX0ZJTFRFUl9DT05ESVRJT04gXCIgK1xuICAgIFwiU1lTRExHX1NFVFVQX1NJR05fUklHSFRTIFwiICtcbiAgICBcIlNZU0RMR19TRVRVUF9UQVNLX09CU0VSVkVSUyBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfVEFTS19ST1VURSBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfVVNFUlNfTElTVCBcIiArXG4gICAgXCJTWVNETEdfU0lHTl9FRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTRExHX1NJR05fTVVMVElQTEVfRURPQ1VNRU5UUyBcIjtcblxuICAvLyBTeXN0ZW0gcmVmZXJlbmNlIG5hbWVzXG4gIHZhciBzeXN0ZW1fcmVmZXJlbmNlX25hbWVzX2NvbnN0YW50cyA9XG4gICAgXCJTWVNSRUZfQUNDRVNTX1JJR0hUU19UWVBFUyBcIiArXG4gICAgXCJTWVNSRUZfQURNSU5JU1RSQVRJT05fSElTVE9SWSBcIiArXG4gICAgXCJTWVNSRUZfQUxMX0FWQUlMQUJMRV9DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9BTExfQVZBSUxBQkxFX1BSSVZJTEVHRVMgXCIgK1xuICAgIFwiU1lTUkVGX0FMTF9SRVBMSUNBVElOR19DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9BVkFJTEFCTEVfREVWRUxPUEVSU19DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9DQUxFTkRBUl9FVkVOVFMgXCIgK1xuICAgIFwiU1lTUkVGX0NPTVBPTkVOVF9UT0tFTl9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9DT01QT05FTlRfVE9LRU5TIFwiICtcbiAgICBcIlNZU1JFRl9DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9DT05TVEFOVFMgXCIgK1xuICAgIFwiU1lTUkVGX0RBVEFfUkVDRUlWRV9QUk9UT0NPTCBcIiArXG4gICAgXCJTWVNSRUZfREFUQV9TRU5EX1BST1RPQ09MIFwiICtcbiAgICBcIlNZU1JFRl9ESUFMT0dTIFwiICtcbiAgICBcIlNZU1JFRl9ESUFMT0dTX1JFUVVJU0lURVMgXCIgK1xuICAgIFwiU1lTUkVGX0VESVRPUlMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NfQ0FSRFMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NfVFlQRVMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9DQVJEX1JFUVVJU0lURVMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9DQVJEX1RZUEVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfQ0FSRF9UWVBFU19SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9DQVJEUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX0hJU1RPUlkgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9LSU5EUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX1JFUVVJU0lURVMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9TSUdOQVRVUkVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfVEVNUExBVEVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfVEVYVF9TVE9SQUdFUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX1ZJRVdTIFwiICtcbiAgICBcIlNZU1JFRl9GSUxURVJFUl9TRVRVUF9DT05GTElDVFMgXCIgK1xuICAgIFwiU1lTUkVGX0ZJTFRSQVRFUl9TRVRUSU5HX0NPTkZMSUNUUyBcIiArXG4gICAgXCJTWVNSRUZfRk9MREVSX0hJU1RPUlkgXCIgK1xuICAgIFwiU1lTUkVGX0ZPTERFUlMgXCIgK1xuICAgIFwiU1lTUkVGX0ZVTkNUSU9OX0dST1VQUyBcIiArXG4gICAgXCJTWVNSRUZfRlVOQ1RJT05fUEFSQU1TIFwiICtcbiAgICBcIlNZU1JFRl9GVU5DVElPTlMgXCIgK1xuICAgIFwiU1lTUkVGX0pPQl9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9MSU5LUyBcIiArXG4gICAgXCJTWVNSRUZfTE9DQUxJWkFUSU9OX0RJQ1RJT05BUlkgXCIgK1xuICAgIFwiU1lTUkVGX0xPQ0FMSVpBVElPTl9MQU5HVUFHRVMgXCIgK1xuICAgIFwiU1lTUkVGX01PRFVMRVMgXCIgK1xuICAgIFwiU1lTUkVGX1BSSVZJTEVHRVMgXCIgK1xuICAgIFwiU1lTUkVGX1JFQ09SRF9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9SRUZFUkVOQ0VfUkVRVUlTSVRFUyBcIiArXG4gICAgXCJTWVNSRUZfUkVGRVJFTkNFX1RZUEVfVklFV1MgXCIgK1xuICAgIFwiU1lTUkVGX1JFRkVSRU5DRV9UWVBFUyBcIiArXG4gICAgXCJTWVNSRUZfUkVGRVJFTkNFUyBcIiArXG4gICAgXCJTWVNSRUZfUkVGRVJFTkNFU19SRVFVSVNJVEVTIFwiICtcbiAgICBcIlNZU1JFRl9SRU1PVEVfU0VSVkVSUyBcIiArXG4gICAgXCJTWVNSRUZfUkVQTElDQVRJT05fU0VTU0lPTlNfTE9HIFwiICtcbiAgICBcIlNZU1JFRl9SRVBMSUNBVElPTl9TRVNTSU9OU19QUk9UT0NPTCBcIiArXG4gICAgXCJTWVNSRUZfUkVQT1JUUyBcIiArXG4gICAgXCJTWVNSRUZfUk9MRVMgXCIgK1xuICAgIFwiU1lTUkVGX1JPVVRFX0JMT0NLX0dST1VQUyBcIiArXG4gICAgXCJTWVNSRUZfUk9VVEVfQkxPQ0tTIFwiICtcbiAgICBcIlNZU1JFRl9TQ1JJUFRTIFwiICtcbiAgICBcIlNZU1JFRl9TRUFSQ0hFUyBcIiArXG4gICAgXCJTWVNSRUZfU0VSVkVSX0VWRU5UUyBcIiArXG4gICAgXCJTWVNSRUZfU0VSVkVSX0VWRU5UU19ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9TVEFOREFSRF9ST1VURV9HUk9VUFMgXCIgK1xuICAgIFwiU1lTUkVGX1NUQU5EQVJEX1JPVVRFUyBcIiArXG4gICAgXCJTWVNSRUZfU1RBVFVTRVMgXCIgK1xuICAgIFwiU1lTUkVGX1NZU1RFTV9TRVRUSU5HUyBcIiArXG4gICAgXCJTWVNSRUZfVEFTS19ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLX0tJTkRfR1JPVVBTIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLX0tJTkRTIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLX1JJR0hUUyBcIiArXG4gICAgXCJTWVNSRUZfVEFTS19TSUdOQVRVUkVTIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLUyBcIiArXG4gICAgXCJTWVNSRUZfVU5JVFMgXCIgK1xuICAgIFwiU1lTUkVGX1VTRVJfR1JPVVBTIFwiICtcbiAgICBcIlNZU1JFRl9VU0VSX0dST1VQU19SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVGX1VTRVJfU1VCU1RJVFVUSU9OIFwiICtcbiAgICBcIlNZU1JFRl9VU0VSUyBcIiArXG4gICAgXCJTWVNSRUZfVVNFUlNfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFRl9WSUVXRVJTIFwiICtcbiAgICBcIlNZU1JFRl9XT1JLSU5HX1RJTUVfQ0FMRU5EQVJTIFwiO1xuXG4gIC8vIFRhYmxlIG5hbWVcbiAgdmFyIHRhYmxlX25hbWVfY29uc3RhbnRzID1cbiAgICBcIkFDQ0VTU19SSUdIVFNfVEFCTEVfTkFNRSBcIiArXG4gICAgXCJFRE1TX0FDQ0VTU19UQUJMRV9OQU1FIFwiICtcbiAgICBcIkVET0NfVFlQRVNfVEFCTEVfTkFNRSBcIjtcblxuICAvLyBUZXN0XG4gIHZhciB0ZXN0X2NvbnN0YW50cyA9XG4gICAgXCJURVNUX0RFVl9EQl9OQU1FIFwiICtcbiAgICBcIlRFU1RfREVWX1NZU1RFTV9DT0RFIFwiICtcbiAgICBcIlRFU1RfRURNU19EQl9OQU1FIFwiICtcbiAgICBcIlRFU1RfRURNU19NQUlOX0NPREUgXCIgK1xuICAgIFwiVEVTVF9FRE1TX01BSU5fREJfTkFNRSBcIiArXG4gICAgXCJURVNUX0VETVNfU0VDT05EX0NPREUgXCIgK1xuICAgIFwiVEVTVF9FRE1TX1NFQ09ORF9EQl9OQU1FIFwiICtcbiAgICBcIlRFU1RfRURNU19TWVNURU1fQ09ERSBcIiArXG4gICAgXCJURVNUX0lTQjVfTUFJTl9DT0RFIFwiICtcbiAgICBcIlRFU1RfSVNCNV9TRUNPTkRfQ09ERSBcIiArXG4gICAgXCJURVNUX1NRTF9TRVJWRVJfMjAwNV9OQU1FIFwiICtcbiAgICBcIlRFU1RfU1FMX1NFUlZFUl9OQU1FIFwiO1xuXG4gIC8vIFVzaW5nIHRoZSBkaWFsb2cgd2luZG93c1xuICB2YXIgdXNpbmdfdGhlX2RpYWxvZ193aW5kb3dzX2NvbnN0YW50cyA9XG4gICAgXCJBVFRFTlRJT05fQ0FQVElPTiBcIiArXG4gICAgXCJjYnNDb21tYW5kTGlua3MgXCIgK1xuICAgIFwiY2JzRGVmYXVsdCBcIiArXG4gICAgXCJDT05GSVJNQVRJT05fQ0FQVElPTiBcIiArXG4gICAgXCJFUlJPUl9DQVBUSU9OIFwiICtcbiAgICBcIklORk9STUFUSU9OX0NBUFRJT04gXCIgK1xuICAgIFwibXJDYW5jZWwgXCIgK1xuICAgIFwibXJPayBcIjtcblxuICAvLyBVc2luZyB0aGUgZG9jdW1lbnRcbiAgdmFyIHVzaW5nX3RoZV9kb2N1bWVudF9jb25zdGFudHMgPVxuICAgIFwiRURPQ19WRVJTSU9OX0FDVElWRV9TVEFHRV9DT0RFIFwiICtcbiAgICBcIkVET0NfVkVSU0lPTl9ERVNJR05fU1RBR0VfQ09ERSBcIiArXG4gICAgXCJFRE9DX1ZFUlNJT05fT0JTT0xFVEVfU1RBR0VfQ09ERSBcIjtcblxuICAvLyBVc2luZyB0aGUgRUEgYW5kIGVuY3J5cHRpb25cbiAgdmFyIHVzaW5nX3RoZV9FQV9hbmRfZW5jcnlwdGlvbl9jb25zdGFudHMgPVxuICAgIFwiY3BEYXRhRW5jaXBoZXJtZW50RW5hYmxlZCBcIiArXG4gICAgXCJjcERpZ2l0YWxTaWduYXR1cmVFbmFibGVkIFwiICtcbiAgICBcImNwSUQgXCIgK1xuICAgIFwiY3BJc3N1ZXIgXCIgK1xuICAgIFwiY3BQbHVnaW5WZXJzaW9uIFwiICtcbiAgICBcImNwU2VyaWFsIFwiICtcbiAgICBcImNwU3ViamVjdE5hbWUgXCIgK1xuICAgIFwiY3BTdWJqU2ltcGxlTmFtZSBcIiArXG4gICAgXCJjcFZhbGlkRnJvbURhdGUgXCIgK1xuICAgIFwiY3BWYWxpZFRvRGF0ZSBcIjtcblxuICAvLyBVc2luZyB0aGUgSVNCTC1lZGl0b3JcbiAgdmFyIHVzaW5nX3RoZV9JU0JMX2VkaXRvcl9jb25zdGFudHMgPVxuICAgIFwiSVNCTF9TWU5UQVggXCIgKyBcIk5PX1NZTlRBWCBcIiArIFwiWE1MX1NZTlRBWCBcIjtcblxuICAvLyBXYWl0IGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIHdhaXRfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiV0FJVF9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiV0FJVF9CTE9DS19CRUZPUkVfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiV0FJVF9CTE9DS19ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJXQUlUX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIldBSVRfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJXQUlUX0JMT0NLX1JFTEFUSVZFX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCI7XG5cbiAgLy8gU1lTUkVTIENvbW1vblxuICB2YXIgc3lzcmVzX2NvbW1vbl9jb25zdGFudHMgPVxuICAgIFwiU1lTUkVTX0NPTU1PTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1QgXCIgK1xuICAgIFwiU1lTUkVTX01CRlVOQyBcIiArXG4gICAgXCJTWVNSRVNfU0JEQVRBIFwiICtcbiAgICBcIlNZU1JFU19TQkdVSSBcIiArXG4gICAgXCJTWVNSRVNfU0JJTlRGIFwiICtcbiAgICBcIlNZU1JFU19TQlJFRkRTQyBcIiArXG4gICAgXCJTWVNSRVNfU1FMRVJST1JTIFwiICtcbiAgICBcIlNZU1JFU19TWVNDT01QIFwiO1xuXG4gIC8vINCa0L7QvdGB0YLQsNC90YLRiyA9PT4gYnVpbHRfaW5cbiAgdmFyIENPTlNUQU5UUyA9XG4gICAgc3lzcmVzX2NvbnN0YW50cyArXG4gICAgYmFzZV9jb25zdGFudHMgK1xuICAgIGJhc2VfZ3JvdXBfbmFtZV9jb25zdGFudHMgK1xuICAgIGRlY2lzaW9uX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzICtcbiAgICBmaWxlX2V4dGVuc2lvbl9jb25zdGFudHMgK1xuICAgIGpvYl9ibG9ja19wcm9wZXJ0aWVzX2NvbnN0YW50cyArXG4gICAgbGFuZ3VhZ2VfY29kZV9jb25zdGFudHMgK1xuICAgIGxhdW5jaGluZ19leHRlcm5hbF9hcHBsaWNhdGlvbnNfY29uc3RhbnRzICtcbiAgICBsaW5rX2tpbmRfY29uc3RhbnRzICtcbiAgICBsb2NrX3R5cGVfY29uc3RhbnRzICtcbiAgICBtb25pdG9yX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzICtcbiAgICBub3RpY2VfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIG9iamVjdF9ldmVudHNfY29uc3RhbnRzICtcbiAgICBvYmplY3RfcGFyYW1zX2NvbnN0YW50cyArXG4gICAgb3RoZXJfY29uc3RhbnRzICtcbiAgICBwcml2aWxlZ2VzX2NvbnN0YW50cyArXG4gICAgcHNldWRvcmVmZXJlbmNlX2NvZGVfY29uc3RhbnRzICtcbiAgICByZXF1aXNpdGVfSVNCQ2VydGlmaWNhdGVUeXBlX3ZhbHVlc19jb25zdGFudHMgK1xuICAgIHJlcXVpc2l0ZV9JU0JFRG9jU3RvcmFnZVR5cGVfdmFsdWVzX2NvbnN0YW50cyArXG4gICAgcmVxdWlzaXRlX2NvbXBUeXBlMl92YWx1ZXNfY29uc3RhbnRzICtcbiAgICByZXF1aXNpdGVfbmFtZV9jb25zdGFudHMgK1xuICAgIHJlc3VsdF9jb25zdGFudHMgK1xuICAgIHJ1bGVfaWRlbnRpZmljYXRpb25fY29uc3RhbnRzICtcbiAgICBzY3JpcHRfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIHN1YnRhc2tfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIHN5c3RlbV9jb21wb25lbnRfY29uc3RhbnRzICtcbiAgICBzeXN0ZW1fZGlhbG9nc19jb25zdGFudHMgK1xuICAgIHN5c3RlbV9yZWZlcmVuY2VfbmFtZXNfY29uc3RhbnRzICtcbiAgICB0YWJsZV9uYW1lX2NvbnN0YW50cyArXG4gICAgdGVzdF9jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9kaWFsb2dfd2luZG93c19jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9kb2N1bWVudF9jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9FQV9hbmRfZW5jcnlwdGlvbl9jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9JU0JMX2VkaXRvcl9jb25zdGFudHMgK1xuICAgIHdhaXRfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIHN5c3Jlc19jb21tb25fY29uc3RhbnRzO1xuXG4gIC8vIGVudW0gVEFjY291bnRUeXBlXG4gIHZhciBUQWNjb3VudFR5cGUgPSBcImF0VXNlciBhdEdyb3VwIGF0Um9sZSBcIjtcblxuICAvLyBlbnVtIFRBY3Rpb25FbmFibGVkTW9kZVxuICB2YXIgVEFjdGlvbkVuYWJsZWRNb2RlID1cbiAgICBcImFlbUVuYWJsZWRBbHdheXMgXCIgK1xuICAgIFwiYWVtRGlzYWJsZWRBbHdheXMgXCIgK1xuICAgIFwiYWVtRW5hYmxlZE9uQnJvd3NlIFwiICtcbiAgICBcImFlbUVuYWJsZWRPbkVkaXQgXCIgK1xuICAgIFwiYWVtRGlzYWJsZWRPbkJyb3dzZUVtcHR5IFwiO1xuXG4gIC8vIGVudW0gVEFkZFBvc2l0aW9uXG4gIHZhciBUQWRkUG9zaXRpb24gPSBcImFwQmVnaW4gYXBFbmQgXCI7XG5cbiAgLy8gZW51bSBUQWxpZ25tZW50XG4gIHZhciBUQWxpZ25tZW50ID0gXCJhbExlZnQgYWxSaWdodCBcIjtcblxuICAvLyBlbnVtIFRBcmVhU2hvd01vZGVcbiAgdmFyIFRBcmVhU2hvd01vZGUgPVxuICAgIFwiYXNtTmV2ZXIgXCIgK1xuICAgIFwiYXNtTm9CdXRDdXN0b21pemUgXCIgK1xuICAgIFwiYXNtQXNMYXN0VGltZSBcIiArXG4gICAgXCJhc21ZZXNCdXRDdXN0b21pemUgXCIgK1xuICAgIFwiYXNtQWx3YXlzIFwiO1xuXG4gIC8vIGVudW0gVENlcnRpZmljYXRlSW52YWxpZGF0aW9uUmVhc29uXG4gIHZhciBUQ2VydGlmaWNhdGVJbnZhbGlkYXRpb25SZWFzb24gPSBcImNpckNvbW1vbiBjaXJSZXZva2VkIFwiO1xuXG4gIC8vIGVudW0gVENlcnRpZmljYXRlVHlwZVxuICB2YXIgVENlcnRpZmljYXRlVHlwZSA9IFwiY3RTaWduYXR1cmUgY3RFbmNvZGUgY3RTaWduYXR1cmVFbmNvZGUgXCI7XG5cbiAgLy8gZW51bSBUQ2hlY2tMaXN0Qm94SXRlbVN0YXRlXG4gIHZhciBUQ2hlY2tMaXN0Qm94SXRlbVN0YXRlID0gXCJjbGJVbmNoZWNrZWQgY2xiQ2hlY2tlZCBjbGJHcmF5ZWQgXCI7XG5cbiAgLy8gZW51bSBUQ2xvc2VPbkVzY1xuICB2YXIgVENsb3NlT25Fc2MgPSBcImNlSVNCIGNlQWx3YXlzIGNlTmV2ZXIgXCI7XG5cbiAgLy8gZW51bSBUQ29tcFR5cGVcbiAgdmFyIFRDb21wVHlwZSA9XG4gICAgXCJjdERvY3VtZW50IFwiICtcbiAgICBcImN0UmVmZXJlbmNlIFwiICtcbiAgICBcImN0U2NyaXB0IFwiICtcbiAgICBcImN0VW5rbm93biBcIiArXG4gICAgXCJjdFJlcG9ydCBcIiArXG4gICAgXCJjdERpYWxvZyBcIiArXG4gICAgXCJjdEZ1bmN0aW9uIFwiICtcbiAgICBcImN0Rm9sZGVyIFwiICtcbiAgICBcImN0RURvY3VtZW50IFwiICtcbiAgICBcImN0VGFzayBcIiArXG4gICAgXCJjdEpvYiBcIiArXG4gICAgXCJjdE5vdGljZSBcIiArXG4gICAgXCJjdENvbnRyb2xKb2IgXCI7XG5cbiAgLy8gZW51bSBUQ29uZGl0aW9uRm9ybWF0XG4gIHZhciBUQ29uZGl0aW9uRm9ybWF0ID0gXCJjZkludGVybmFsIGNmRGlzcGxheSBcIjtcblxuICAvLyBlbnVtIFRDb25uZWN0aW9uSW50ZW50XG4gIHZhciBUQ29ubmVjdGlvbkludGVudCA9IFwiY2lVbnNwZWNpZmllZCBjaVdyaXRlIGNpUmVhZCBcIjtcblxuICAvLyBlbnVtIFRDb250ZW50S2luZFxuICB2YXIgVENvbnRlbnRLaW5kID1cbiAgICBcImNrRm9sZGVyIFwiICtcbiAgICBcImNrRURvY3VtZW50IFwiICtcbiAgICBcImNrVGFzayBcIiArXG4gICAgXCJja0pvYiBcIiArXG4gICAgXCJja0NvbXBvbmVudFRva2VuIFwiICtcbiAgICBcImNrQW55IFwiICtcbiAgICBcImNrUmVmZXJlbmNlIFwiICtcbiAgICBcImNrU2NyaXB0IFwiICtcbiAgICBcImNrUmVwb3J0IFwiICtcbiAgICBcImNrRGlhbG9nIFwiO1xuXG4gIC8vIGVudW0gVENvbnRyb2xUeXBlXG4gIHZhciBUQ29udHJvbFR5cGUgPVxuICAgIFwiY3RJU0JMRWRpdG9yIFwiICtcbiAgICBcImN0QmV2ZWwgXCIgK1xuICAgIFwiY3RCdXR0b24gXCIgK1xuICAgIFwiY3RDaGVja0xpc3RCb3ggXCIgK1xuICAgIFwiY3RDb21ib0JveCBcIiArXG4gICAgXCJjdENvbWJvRWRpdCBcIiArXG4gICAgXCJjdEdyaWQgXCIgK1xuICAgIFwiY3REQkNoZWNrQm94IFwiICtcbiAgICBcImN0REJDb21ib0JveCBcIiArXG4gICAgXCJjdERCRWRpdCBcIiArXG4gICAgXCJjdERCRWxsaXBzaXMgXCIgK1xuICAgIFwiY3REQk1lbW8gXCIgK1xuICAgIFwiY3REQk5hdmlnYXRvciBcIiArXG4gICAgXCJjdERCUmFkaW9Hcm91cCBcIiArXG4gICAgXCJjdERCU3RhdHVzTGFiZWwgXCIgK1xuICAgIFwiY3RFZGl0IFwiICtcbiAgICBcImN0R3JvdXBCb3ggXCIgK1xuICAgIFwiY3RJbnBsYWNlSGludCBcIiArXG4gICAgXCJjdE1lbW8gXCIgK1xuICAgIFwiY3RQYW5lbCBcIiArXG4gICAgXCJjdExpc3RCb3ggXCIgK1xuICAgIFwiY3RSYWRpb0J1dHRvbiBcIiArXG4gICAgXCJjdFJpY2hFZGl0IFwiICtcbiAgICBcImN0VGFiU2hlZXQgXCIgK1xuICAgIFwiY3RXZWJCcm93c2VyIFwiICtcbiAgICBcImN0SW1hZ2UgXCIgK1xuICAgIFwiY3RIeXBlckxpbmsgXCIgK1xuICAgIFwiY3RMYWJlbCBcIiArXG4gICAgXCJjdERCTXVsdGlFbGxpcHNpcyBcIiArXG4gICAgXCJjdFJpYmJvbiBcIiArXG4gICAgXCJjdFJpY2hWaWV3IFwiICtcbiAgICBcImN0SW5uZXJQYW5lbCBcIiArXG4gICAgXCJjdFBhbmVsR3JvdXAgXCIgK1xuICAgIFwiY3RCaXRCdXR0b24gXCI7XG5cbiAgLy8gZW51bSBUQ3JpdGVyaW9uQ29udGVudFR5cGVcbiAgdmFyIFRDcml0ZXJpb25Db250ZW50VHlwZSA9XG4gICAgXCJjY3REYXRlIFwiICtcbiAgICBcImNjdEludGVnZXIgXCIgK1xuICAgIFwiY2N0TnVtZXJpYyBcIiArXG4gICAgXCJjY3RQaWNrIFwiICtcbiAgICBcImNjdFJlZmVyZW5jZSBcIiArXG4gICAgXCJjY3RTdHJpbmcgXCIgK1xuICAgIFwiY2N0VGV4dCBcIjtcblxuICAvLyBlbnVtIFRDdWx0dXJlVHlwZVxuICB2YXIgVEN1bHR1cmVUeXBlID0gXCJjbHRJbnRlcm5hbCBjbHRQcmltYXJ5IGNsdEdVSSBcIjtcblxuICAvLyBlbnVtIFREYXRhU2V0RXZlbnRUeXBlXG4gIHZhciBURGF0YVNldEV2ZW50VHlwZSA9XG4gICAgXCJkc2VCZWZvcmVPcGVuIFwiICtcbiAgICBcImRzZUFmdGVyT3BlbiBcIiArXG4gICAgXCJkc2VCZWZvcmVDbG9zZSBcIiArXG4gICAgXCJkc2VBZnRlckNsb3NlIFwiICtcbiAgICBcImRzZU9uVmFsaWREZWxldGUgXCIgK1xuICAgIFwiZHNlQmVmb3JlRGVsZXRlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlT3V0T2ZUcmFuc2FjdGlvbiBcIiArXG4gICAgXCJkc2VPbkRlbGV0ZUVycm9yIFwiICtcbiAgICBcImRzZUJlZm9yZUluc2VydCBcIiArXG4gICAgXCJkc2VBZnRlckluc2VydCBcIiArXG4gICAgXCJkc2VPblZhbGlkVXBkYXRlIFwiICtcbiAgICBcImRzZUJlZm9yZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPblVwZGF0ZVJhdGlmaWVkUmVjb3JkIFwiICtcbiAgICBcImRzZUFmdGVyVXBkYXRlIFwiICtcbiAgICBcImRzZUFmdGVyVXBkYXRlT3V0T2ZUcmFuc2FjdGlvbiBcIiArXG4gICAgXCJkc2VPblVwZGF0ZUVycm9yIFwiICtcbiAgICBcImRzZUFmdGVyU2Nyb2xsIFwiICtcbiAgICBcImRzZU9uT3BlblJlY29yZCBcIiArXG4gICAgXCJkc2VPbkNsb3NlUmVjb3JkIFwiICtcbiAgICBcImRzZUJlZm9yZUNhbmNlbCBcIiArXG4gICAgXCJkc2VBZnRlckNhbmNlbCBcIiArXG4gICAgXCJkc2VPblVwZGF0ZURlYWRsb2NrRXJyb3IgXCIgK1xuICAgIFwiZHNlQmVmb3JlRGV0YWlsVXBkYXRlIFwiICtcbiAgICBcImRzZU9uUHJlcGFyZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPbkFueVJlcXVpc2l0ZUNoYW5nZSBcIjtcblxuICAvLyBlbnVtIFREYXRhU2V0U3RhdGVcbiAgdmFyIFREYXRhU2V0U3RhdGUgPSBcImRzc0VkaXQgZHNzSW5zZXJ0IGRzc0Jyb3dzZSBkc3NJbkFjdGl2ZSBcIjtcblxuICAvLyBlbnVtIFREYXRlRm9ybWF0VHlwZVxuICB2YXIgVERhdGVGb3JtYXRUeXBlID0gXCJkZnREYXRlIGRmdFNob3J0RGF0ZSBkZnREYXRlVGltZSBkZnRUaW1lU3RhbXAgXCI7XG5cbiAgLy8gZW51bSBURGF0ZU9mZnNldFR5cGVcbiAgdmFyIFREYXRlT2Zmc2V0VHlwZSA9IFwiZG90RGF5cyBkb3RIb3VycyBkb3RNaW51dGVzIGRvdFNlY29uZHMgXCI7XG5cbiAgLy8gZW51bSBURGF0ZVRpbWVLaW5kXG4gIHZhciBURGF0ZVRpbWVLaW5kID0gXCJkdGtuZExvY2FsIGR0a25kVVRDIFwiO1xuXG4gIC8vIGVudW0gVERlYUFjY2Vzc1JpZ2h0c1xuICB2YXIgVERlYUFjY2Vzc1JpZ2h0cyA9IFwiYXJOb25lIGFyVmlldyBhckVkaXQgYXJGdWxsIFwiO1xuXG4gIC8vIGVudW0gVERvY3VtZW50RGVmYXVsdEFjdGlvblxuICB2YXIgVERvY3VtZW50RGVmYXVsdEFjdGlvbiA9IFwiZGRhVmlldyBkZGFFZGl0IFwiO1xuXG4gIC8vIGVudW0gVEVkaXRNb2RlXG4gIHZhciBURWRpdE1vZGUgPVxuICAgIFwiZW1Mb2NrIFwiICtcbiAgICBcImVtRWRpdCBcIiArXG4gICAgXCJlbVNpZ24gXCIgK1xuICAgIFwiZW1FeHBvcnRXaXRoTG9jayBcIiArXG4gICAgXCJlbUltcG9ydFdpdGhVbmxvY2sgXCIgK1xuICAgIFwiZW1DaGFuZ2VWZXJzaW9uTm90ZSBcIiArXG4gICAgXCJlbU9wZW5Gb3JNb2RpZnkgXCIgK1xuICAgIFwiZW1DaGFuZ2VMaWZlU3RhZ2UgXCIgK1xuICAgIFwiZW1EZWxldGUgXCIgK1xuICAgIFwiZW1DcmVhdGVWZXJzaW9uIFwiICtcbiAgICBcImVtSW1wb3J0IFwiICtcbiAgICBcImVtVW5sb2NrRXhwb3J0ZWRXaXRoTG9jayBcIiArXG4gICAgXCJlbVN0YXJ0IFwiICtcbiAgICBcImVtQWJvcnQgXCIgK1xuICAgIFwiZW1SZUluaXQgXCIgK1xuICAgIFwiZW1NYXJrQXNSZWFkZWQgXCIgK1xuICAgIFwiZW1NYXJrQXNVbnJlYWRlZCBcIiArXG4gICAgXCJlbVBlcmZvcm0gXCIgK1xuICAgIFwiZW1BY2NlcHQgXCIgK1xuICAgIFwiZW1SZXN1bWUgXCIgK1xuICAgIFwiZW1DaGFuZ2VSaWdodHMgXCIgK1xuICAgIFwiZW1FZGl0Um91dGUgXCIgK1xuICAgIFwiZW1FZGl0T2JzZXJ2ZXIgXCIgK1xuICAgIFwiZW1SZWNvdmVyeUZyb21Mb2NhbENvcHkgXCIgK1xuICAgIFwiZW1DaGFuZ2VXb3JrQWNjZXNzVHlwZSBcIiArXG4gICAgXCJlbUNoYW5nZUVuY29kZVR5cGVUb0NlcnRpZmljYXRlIFwiICtcbiAgICBcImVtQ2hhbmdlRW5jb2RlVHlwZVRvUGFzc3dvcmQgXCIgK1xuICAgIFwiZW1DaGFuZ2VFbmNvZGVUeXBlVG9Ob25lIFwiICtcbiAgICBcImVtQ2hhbmdlRW5jb2RlVHlwZVRvQ2VydGlmaWNhdGVQYXNzd29yZCBcIiArXG4gICAgXCJlbUNoYW5nZVN0YW5kYXJkUm91dGUgXCIgK1xuICAgIFwiZW1HZXRUZXh0IFwiICtcbiAgICBcImVtT3BlbkZvclZpZXcgXCIgK1xuICAgIFwiZW1Nb3ZlVG9TdG9yYWdlIFwiICtcbiAgICBcImVtQ3JlYXRlT2JqZWN0IFwiICtcbiAgICBcImVtQ2hhbmdlVmVyc2lvbkhpZGRlbiBcIiArXG4gICAgXCJlbURlbGV0ZVZlcnNpb24gXCIgK1xuICAgIFwiZW1DaGFuZ2VMaWZlQ3ljbGVTdGFnZSBcIiArXG4gICAgXCJlbUFwcHJvdmluZ1NpZ24gXCIgK1xuICAgIFwiZW1FeHBvcnQgXCIgK1xuICAgIFwiZW1Db250aW51ZSBcIiArXG4gICAgXCJlbUxvY2tGcm9tRWRpdCBcIiArXG4gICAgXCJlbVVuTG9ja0ZvckVkaXQgXCIgK1xuICAgIFwiZW1Mb2NrRm9yU2VydmVyIFwiICtcbiAgICBcImVtVW5sb2NrRnJvbVNlcnZlciBcIiArXG4gICAgXCJlbURlbGVnYXRlQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcImVtUmVFbmNvZGUgXCI7XG5cbiAgLy8gZW51bSBURWRpdG9yQ2xvc2VPYnNlcnZUeXBlXG4gIHZhciBURWRpdG9yQ2xvc2VPYnNlcnZUeXBlID0gXCJlY290RmlsZSBlY290UHJvY2VzcyBcIjtcblxuICAvLyBlbnVtIFRFZG1zQXBwbGljYXRpb25BY3Rpb25cbiAgdmFyIFRFZG1zQXBwbGljYXRpb25BY3Rpb24gPSBcImVhR2V0IGVhQ29weSBlYUNyZWF0ZSBlYUNyZWF0ZVN0YW5kYXJkUm91dGUgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50TG9ja1R5cGVcbiAgdmFyIFRFRG9jdW1lbnRMb2NrVHlwZSA9IFwiZWRsdEFsbCBlZGx0Tm90aGluZyBlZGx0UXVlcnkgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50U3RlcFNob3dNb2RlXG4gIHZhciBURURvY3VtZW50U3RlcFNob3dNb2RlID0gXCJlc3NtVGV4dCBlc3NtQ2FyZCBcIjtcblxuICAvLyBlbnVtIFRFRG9jdW1lbnRTdGVwVmVyc2lvblR5cGVcbiAgdmFyIFRFRG9jdW1lbnRTdGVwVmVyc2lvblR5cGUgPSBcImVzdnRMYXN0IGVzdnRMYXN0QWN0aXZlIGVzdnRTcGVjaWZpZWQgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50U3RvcmFnZUZ1bmN0aW9uXG4gIHZhciBURURvY3VtZW50U3RvcmFnZUZ1bmN0aW9uID0gXCJlZHNmRXhlY3V0aXZlIGVkc2ZBcmNoaXZlIFwiO1xuXG4gIC8vIGVudW0gVEVEb2N1bWVudFN0b3JhZ2VUeXBlXG4gIHZhciBURURvY3VtZW50U3RvcmFnZVR5cGUgPSBcImVkc3RTUUxTZXJ2ZXIgZWRzdEZpbGUgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50VmVyc2lvblNvdXJjZVR5cGVcbiAgdmFyIFRFRG9jdW1lbnRWZXJzaW9uU291cmNlVHlwZSA9XG4gICAgXCJlZHZzdE5vbmUgZWR2c3RFRG9jdW1lbnRWZXJzaW9uQ29weSBlZHZzdEZpbGUgZWR2c3RUZW1wbGF0ZSBlZHZzdFNjYW5uZWRGaWxlIFwiO1xuXG4gIC8vIGVudW0gVEVEb2N1bWVudFZlcnNpb25TdGF0ZVxuICB2YXIgVEVEb2N1bWVudFZlcnNpb25TdGF0ZSA9IFwidnNEZWZhdWx0IHZzRGVzaWduIHZzQWN0aXZlIHZzT2Jzb2xldGUgXCI7XG5cbiAgLy8gZW51bSBURW5jb2RlVHlwZVxuICB2YXIgVEVuY29kZVR5cGUgPSBcImV0Tm9uZSBldENlcnRpZmljYXRlIGV0UGFzc3dvcmQgZXRDZXJ0aWZpY2F0ZVBhc3N3b3JkIFwiO1xuXG4gIC8vIGVudW0gVEV4Y2VwdGlvbkNhdGVnb3J5XG4gIHZhciBURXhjZXB0aW9uQ2F0ZWdvcnkgPSBcImVjRXhjZXB0aW9uIGVjV2FybmluZyBlY0luZm9ybWF0aW9uIFwiO1xuXG4gIC8vIGVudW0gVEV4cG9ydGVkU2lnbmF0dXJlc1R5cGVcbiAgdmFyIFRFeHBvcnRlZFNpZ25hdHVyZXNUeXBlID0gXCJlc3RBbGwgZXN0QXBwcm92aW5nT25seSBcIjtcblxuICAvLyBlbnVtIFRFeHBvcnRlZFZlcnNpb25UeXBlXG4gIHZhciBURXhwb3J0ZWRWZXJzaW9uVHlwZSA9IFwiZXZ0TGFzdCBldnRMYXN0QWN0aXZlIGV2dFF1ZXJ5IFwiO1xuXG4gIC8vIGVudW0gVEZpZWxkRGF0YVR5cGVcbiAgdmFyIFRGaWVsZERhdGFUeXBlID1cbiAgICBcImZkdFN0cmluZyBcIiArXG4gICAgXCJmZHROdW1lcmljIFwiICtcbiAgICBcImZkdEludGVnZXIgXCIgK1xuICAgIFwiZmR0RGF0ZSBcIiArXG4gICAgXCJmZHRUZXh0IFwiICtcbiAgICBcImZkdFVua25vd24gXCIgK1xuICAgIFwiZmR0V2lkZVN0cmluZyBcIiArXG4gICAgXCJmZHRMYXJnZUludGVnZXIgXCI7XG5cbiAgLy8gZW51bSBURm9sZGVyVHlwZVxuICB2YXIgVEZvbGRlclR5cGUgPVxuICAgIFwiZnRJbmJveCBcIiArXG4gICAgXCJmdE91dGJveCBcIiArXG4gICAgXCJmdEZhdm9yaXRlcyBcIiArXG4gICAgXCJmdENvbW1vbkZvbGRlciBcIiArXG4gICAgXCJmdFVzZXJGb2xkZXIgXCIgK1xuICAgIFwiZnRDb21wb25lbnRzIFwiICtcbiAgICBcImZ0UXVpY2tMYXVuY2ggXCIgK1xuICAgIFwiZnRTaG9ydGN1dHMgXCIgK1xuICAgIFwiZnRTZWFyY2ggXCI7XG5cbiAgLy8gZW51bSBUR3JpZFJvd0hlaWdodFxuICB2YXIgVEdyaWRSb3dIZWlnaHQgPSBcImdyaEF1dG8gXCIgKyBcImdyaFgxIFwiICsgXCJncmhYMiBcIiArIFwiZ3JoWDMgXCI7XG5cbiAgLy8gZW51bSBUSHlwZXJsaW5rVHlwZVxuICB2YXIgVEh5cGVybGlua1R5cGUgPSBcImhsdFRleHQgXCIgKyBcImhsdFJURiBcIiArIFwiaGx0SFRNTCBcIjtcblxuICAvLyBlbnVtIFRJbWFnZUZpbGVGb3JtYXRcbiAgdmFyIFRJbWFnZUZpbGVGb3JtYXQgPVxuICAgIFwiaWZmQk1QIFwiICtcbiAgICBcImlmZkpQRUcgXCIgK1xuICAgIFwiaWZmTXVsdGlQYWdlVElGRiBcIiArXG4gICAgXCJpZmZTaW5nbGVQYWdlVElGRiBcIiArXG4gICAgXCJpZmZUSUZGIFwiICtcbiAgICBcImlmZlBORyBcIjtcblxuICAvLyBlbnVtIFRJbWFnZU1vZGVcbiAgdmFyIFRJbWFnZU1vZGUgPSBcImltOGJHcmF5c2NhbGUgXCIgKyBcImltMjRiUkdCIFwiICsgXCJpbTFiTW9ub2Nocm9tZSBcIjtcblxuICAvLyBlbnVtIFRJbWFnZVR5cGVcbiAgdmFyIFRJbWFnZVR5cGUgPSBcIml0Qk1QIFwiICsgXCJpdEpQRUcgXCIgKyBcIml0V01GIFwiICsgXCJpdFBORyBcIjtcblxuICAvLyBlbnVtIFRJbnBsYWNlSGludEtpbmRcbiAgdmFyIFRJbnBsYWNlSGludEtpbmQgPVxuICAgIFwiaWtoSW5mb3JtYXRpb24gXCIgKyBcImlraFdhcm5pbmcgXCIgKyBcImlraEVycm9yIFwiICsgXCJpa2hOb0ljb24gXCI7XG5cbiAgLy8gZW51bSBUSVNCTENvbnRleHRcbiAgdmFyIFRJU0JMQ29udGV4dCA9XG4gICAgXCJpY1Vua25vd24gXCIgK1xuICAgIFwiaWNTY3JpcHQgXCIgK1xuICAgIFwiaWNGdW5jdGlvbiBcIiArXG4gICAgXCJpY0ludGVncmF0ZWRSZXBvcnQgXCIgK1xuICAgIFwiaWNBbmFseXRpY1JlcG9ydCBcIiArXG4gICAgXCJpY0RhdGFTZXRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNBY3Rpb25IYW5kbGVyIFwiICtcbiAgICBcImljRm9ybUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0xvb2tVcEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1JlcXVpc2l0ZUNoYW5nZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0JlZm9yZVNlYXJjaEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1JvbGVDYWxjdWxhdGlvbiBcIiArXG4gICAgXCJpY1NlbGVjdFJvdXRlRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljQmxvY2tQcm9wZXJ0eUNhbGN1bGF0aW9uIFwiICtcbiAgICBcImljQmxvY2tRdWVyeVBhcmFtc0V2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0NoYW5nZVNlYXJjaFJlc3VsdEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0Jsb2NrRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljU3ViVGFza0luaXRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNFRG9jRGF0YVNldEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0VEb2NMb29rVXBFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNFRG9jQWN0aW9uSGFuZGxlciBcIiArXG4gICAgXCJpY0VEb2NGb3JtRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRURvY1JlcXVpc2l0ZUNoYW5nZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1N0cnVjdHVyZWRDb252ZXJzaW9uUnVsZSBcIiArXG4gICAgXCJpY1N0cnVjdHVyZWRDb252ZXJzaW9uRXZlbnRCZWZvcmUgXCIgK1xuICAgIFwiaWNTdHJ1Y3R1cmVkQ29udmVyc2lvbkV2ZW50QWZ0ZXIgXCIgK1xuICAgIFwiaWNXaXphcmRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXaXphcmRGaW5pc2hFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXaXphcmRTdGVwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljV2l6YXJkU3RlcEZpbmlzaEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1dpemFyZEFjdGlvbkVuYWJsZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1dpemFyZEFjdGlvbkV4ZWN1dGVFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNDcmVhdGVKb2JzSGFuZGxlciBcIiArXG4gICAgXCJpY0NyZWF0ZU5vdGljZXNIYW5kbGVyIFwiICtcbiAgICBcImljQmVmb3JlTG9va1VwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljQWZ0ZXJMb29rVXBFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNUYXNrQWJvcnRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXb3JrZmxvd0Jsb2NrQWN0aW9uSGFuZGxlciBcIiArXG4gICAgXCJpY0RpYWxvZ0RhdGFTZXRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNEaWFsb2dBY3Rpb25IYW5kbGVyIFwiICtcbiAgICBcImljRGlhbG9nTG9va1VwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRGlhbG9nUmVxdWlzaXRlQ2hhbmdlRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRGlhbG9nRm9ybUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0RpYWxvZ1ZhbGlkQ2xvc2VFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNCbG9ja0Zvcm1FdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNUYXNrRm9ybUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1JlZmVyZW5jZU1ldGhvZCBcIiArXG4gICAgXCJpY0VEb2NNZXRob2QgXCIgK1xuICAgIFwiaWNEaWFsb2dNZXRob2QgXCIgK1xuICAgIFwiaWNQcm9jZXNzTWVzc2FnZUhhbmRsZXIgXCI7XG5cbiAgLy8gZW51bSBUSXRlbVNob3dcbiAgdmFyIFRJdGVtU2hvdyA9IFwiaXNTaG93IFwiICsgXCJpc0hpZGUgXCIgKyBcImlzQnlVc2VyU2V0dGluZ3MgXCI7XG5cbiAgLy8gZW51bSBUSm9iS2luZFxuICB2YXIgVEpvYktpbmQgPSBcImprSm9iIFwiICsgXCJqa05vdGljZSBcIiArIFwiamtDb250cm9sSm9iIFwiO1xuXG4gIC8vIGVudW0gVEpvaW5UeXBlXG4gIHZhciBUSm9pblR5cGUgPSBcImp0SW5uZXIgXCIgKyBcImp0TGVmdCBcIiArIFwianRSaWdodCBcIiArIFwianRGdWxsIFwiICsgXCJqdENyb3NzIFwiO1xuXG4gIC8vIGVudW0gVExhYmVsUG9zXG4gIHZhciBUTGFiZWxQb3MgPSBcImxicEFib3ZlIFwiICsgXCJsYnBCZWxvdyBcIiArIFwibGJwTGVmdCBcIiArIFwibGJwUmlnaHQgXCI7XG5cbiAgLy8gZW51bSBUTGljZW5zaW5nVHlwZVxuICB2YXIgVExpY2Vuc2luZ1R5cGUgPSBcImVsdFBlckNvbm5lY3Rpb24gXCIgKyBcImVsdFBlclVzZXIgXCI7XG5cbiAgLy8gZW51bSBUTGlmZUN5Y2xlU3RhZ2VGb250Q29sb3JcbiAgdmFyIFRMaWZlQ3ljbGVTdGFnZUZvbnRDb2xvciA9XG4gICAgXCJzZmNVbmRlZmluZWQgXCIgK1xuICAgIFwic2ZjQmxhY2sgXCIgK1xuICAgIFwic2ZjR3JlZW4gXCIgK1xuICAgIFwic2ZjUmVkIFwiICtcbiAgICBcInNmY0JsdWUgXCIgK1xuICAgIFwic2ZjT3JhbmdlIFwiICtcbiAgICBcInNmY0xpbGFjIFwiO1xuXG4gIC8vIGVudW0gVExpZmVDeWNsZVN0YWdlRm9udFN0eWxlXG4gIHZhciBUTGlmZUN5Y2xlU3RhZ2VGb250U3R5bGUgPSBcInNmc0l0YWxpYyBcIiArIFwic2ZzU3RyaWtlb3V0IFwiICsgXCJzZnNOb3JtYWwgXCI7XG5cbiAgLy8gZW51bSBUTG9ja2FibGVEZXZlbG9wbWVudENvbXBvbmVudFR5cGVcbiAgdmFyIFRMb2NrYWJsZURldmVsb3BtZW50Q29tcG9uZW50VHlwZSA9XG4gICAgXCJsZGN0U3RhbmRhcmRSb3V0ZSBcIiArXG4gICAgXCJsZGN0V2l6YXJkIFwiICtcbiAgICBcImxkY3RTY3JpcHQgXCIgK1xuICAgIFwibGRjdEZ1bmN0aW9uIFwiICtcbiAgICBcImxkY3RSb3V0ZUJsb2NrIFwiICtcbiAgICBcImxkY3RJbnRlZ3JhdGVkUmVwb3J0IFwiICtcbiAgICBcImxkY3RBbmFseXRpY1JlcG9ydCBcIiArXG4gICAgXCJsZGN0UmVmZXJlbmNlVHlwZSBcIiArXG4gICAgXCJsZGN0RURvY3VtZW50VHlwZSBcIiArXG4gICAgXCJsZGN0RGlhbG9nIFwiICtcbiAgICBcImxkY3RTZXJ2ZXJFdmVudHMgXCI7XG5cbiAgLy8gZW51bSBUTWF4UmVjb3JkQ291bnRSZXN0cmljdGlvblR5cGVcbiAgdmFyIFRNYXhSZWNvcmRDb3VudFJlc3RyaWN0aW9uVHlwZSA9XG4gICAgXCJtcmNydE5vbmUgXCIgKyBcIm1yY3J0VXNlciBcIiArIFwibXJjcnRNYXhpbWFsIFwiICsgXCJtcmNydEN1c3RvbSBcIjtcblxuICAvLyBlbnVtIFRSYW5nZVZhbHVlVHlwZVxuICB2YXIgVFJhbmdlVmFsdWVUeXBlID1cbiAgICBcInZ0RXF1YWwgXCIgKyBcInZ0R3JlYXRlck9yRXF1YWwgXCIgKyBcInZ0TGVzc09yRXF1YWwgXCIgKyBcInZ0UmFuZ2UgXCI7XG5cbiAgLy8gZW51bSBUUmVsYXRpdmVEYXRlXG4gIHZhciBUUmVsYXRpdmVEYXRlID1cbiAgICBcInJkWWVzdGVyZGF5IFwiICtcbiAgICBcInJkVG9kYXkgXCIgK1xuICAgIFwicmRUb21vcnJvdyBcIiArXG4gICAgXCJyZFRoaXNXZWVrIFwiICtcbiAgICBcInJkVGhpc01vbnRoIFwiICtcbiAgICBcInJkVGhpc1llYXIgXCIgK1xuICAgIFwicmROZXh0TW9udGggXCIgK1xuICAgIFwicmROZXh0V2VlayBcIiArXG4gICAgXCJyZExhc3RXZWVrIFwiICtcbiAgICBcInJkTGFzdE1vbnRoIFwiO1xuXG4gIC8vIGVudW0gVFJlcG9ydERlc3RpbmF0aW9uXG4gIHZhciBUUmVwb3J0RGVzdGluYXRpb24gPSBcInJkV2luZG93IFwiICsgXCJyZEZpbGUgXCIgKyBcInJkUHJpbnRlciBcIjtcblxuICAvLyBlbnVtIFRSZXFEYXRhVHlwZVxuICB2YXIgVFJlcURhdGFUeXBlID1cbiAgICBcInJkdFN0cmluZyBcIiArXG4gICAgXCJyZHROdW1lcmljIFwiICtcbiAgICBcInJkdEludGVnZXIgXCIgK1xuICAgIFwicmR0RGF0ZSBcIiArXG4gICAgXCJyZHRSZWZlcmVuY2UgXCIgK1xuICAgIFwicmR0QWNjb3VudCBcIiArXG4gICAgXCJyZHRUZXh0IFwiICtcbiAgICBcInJkdFBpY2sgXCIgK1xuICAgIFwicmR0VW5rbm93biBcIiArXG4gICAgXCJyZHRMYXJnZUludGVnZXIgXCIgK1xuICAgIFwicmR0RG9jdW1lbnQgXCI7XG5cbiAgLy8gZW51bSBUUmVxdWlzaXRlRXZlbnRUeXBlXG4gIHZhciBUUmVxdWlzaXRlRXZlbnRUeXBlID0gXCJyZU9uQ2hhbmdlIFwiICsgXCJyZU9uQ2hhbmdlVmFsdWVzIFwiO1xuXG4gIC8vIGVudW0gVFNCVGltZVR5cGVcbiAgdmFyIFRTQlRpbWVUeXBlID0gXCJ0dEdsb2JhbCBcIiArIFwidHRMb2NhbCBcIiArIFwidHRVc2VyIFwiICsgXCJ0dFN5c3RlbSBcIjtcblxuICAvLyBlbnVtIFRTZWFyY2hTaG93TW9kZVxuICB2YXIgVFNlYXJjaFNob3dNb2RlID1cbiAgICBcInNzbUJyb3dzZSBcIiArIFwic3NtU2VsZWN0IFwiICsgXCJzc21NdWx0aVNlbGVjdCBcIiArIFwic3NtQnJvd3NlTW9kYWwgXCI7XG5cbiAgLy8gZW51bSBUU2VsZWN0TW9kZVxuICB2YXIgVFNlbGVjdE1vZGUgPSBcInNtU2VsZWN0IFwiICsgXCJzbUxpa2UgXCIgKyBcInNtQ2FyZCBcIjtcblxuICAvLyBlbnVtIFRTaWduYXR1cmVUeXBlXG4gIHZhciBUU2lnbmF0dXJlVHlwZSA9IFwic3ROb25lIFwiICsgXCJzdEF1dGhlbnRpY2F0aW5nIFwiICsgXCJzdEFwcHJvdmluZyBcIjtcblxuICAvLyBlbnVtIFRTaWduZXJDb250ZW50VHlwZVxuICB2YXIgVFNpZ25lckNvbnRlbnRUeXBlID0gXCJzY3RTdHJpbmcgXCIgKyBcInNjdFN0cmVhbSBcIjtcblxuICAvLyBlbnVtIFRTdHJpbmdzU29ydFR5cGVcbiAgdmFyIFRTdHJpbmdzU29ydFR5cGUgPSBcInNzdEFuc2lTb3J0IFwiICsgXCJzc3ROYXR1cmFsU29ydCBcIjtcblxuICAvLyBlbnVtIFRTdHJpbmdWYWx1ZVR5cGVcbiAgdmFyIFRTdHJpbmdWYWx1ZVR5cGUgPSBcInN2dEVxdWFsIFwiICsgXCJzdnRDb250YWluIFwiO1xuXG4gIC8vIGVudW0gVFN0cnVjdHVyZWRPYmplY3RBdHRyaWJ1dGVUeXBlXG4gIHZhciBUU3RydWN0dXJlZE9iamVjdEF0dHJpYnV0ZVR5cGUgPVxuICAgIFwic29hdFN0cmluZyBcIiArXG4gICAgXCJzb2F0TnVtZXJpYyBcIiArXG4gICAgXCJzb2F0SW50ZWdlciBcIiArXG4gICAgXCJzb2F0RGF0ZXRpbWUgXCIgK1xuICAgIFwic29hdFJlZmVyZW5jZVJlY29yZCBcIiArXG4gICAgXCJzb2F0VGV4dCBcIiArXG4gICAgXCJzb2F0UGljayBcIiArXG4gICAgXCJzb2F0Qm9vbGVhbiBcIiArXG4gICAgXCJzb2F0RURvY3VtZW50IFwiICtcbiAgICBcInNvYXRBY2NvdW50IFwiICtcbiAgICBcInNvYXRJbnRlZ2VyQ29sbGVjdGlvbiBcIiArXG4gICAgXCJzb2F0TnVtZXJpY0NvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdFN0cmluZ0NvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdFBpY2tDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXREYXRldGltZUNvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdEJvb2xlYW5Db2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRSZWZlcmVuY2VSZWNvcmRDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRFRG9jdW1lbnRDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRBY2NvdW50Q29sbGVjdGlvbiBcIiArXG4gICAgXCJzb2F0Q29udGVudHMgXCIgK1xuICAgIFwic29hdFVua25vd24gXCI7XG5cbiAgLy8gZW51bSBUVGFza0Fib3J0UmVhc29uXG4gIHZhciBUVGFza0Fib3J0UmVhc29uID0gXCJ0YXJBYm9ydEJ5VXNlciBcIiArIFwidGFyQWJvcnRCeVdvcmtmbG93RXhjZXB0aW9uIFwiO1xuXG4gIC8vIGVudW0gVFRleHRWYWx1ZVR5cGVcbiAgdmFyIFRUZXh0VmFsdWVUeXBlID0gXCJ0dnRBbGxXb3JkcyBcIiArIFwidHZ0RXhhY3RQaHJhc2UgXCIgKyBcInR2dEFueVdvcmQgXCI7XG5cbiAgLy8gZW51bSBUVXNlck9iamVjdFN0YXR1c1xuICB2YXIgVFVzZXJPYmplY3RTdGF0dXMgPVxuICAgIFwidXNOb25lIFwiICtcbiAgICBcInVzQ29tcGxldGVkIFwiICtcbiAgICBcInVzUmVkU3F1YXJlIFwiICtcbiAgICBcInVzQmx1ZVNxdWFyZSBcIiArXG4gICAgXCJ1c1llbGxvd1NxdWFyZSBcIiArXG4gICAgXCJ1c0dyZWVuU3F1YXJlIFwiICtcbiAgICBcInVzT3JhbmdlU3F1YXJlIFwiICtcbiAgICBcInVzUHVycGxlU3F1YXJlIFwiICtcbiAgICBcInVzRm9sbG93VXAgXCI7XG5cbiAgLy8gZW51bSBUVXNlclR5cGVcbiAgdmFyIFRVc2VyVHlwZSA9XG4gICAgXCJ1dFVua25vd24gXCIgK1xuICAgIFwidXRVc2VyIFwiICtcbiAgICBcInV0RGV2ZWxvcGVyIFwiICtcbiAgICBcInV0QWRtaW5pc3RyYXRvciBcIiArXG4gICAgXCJ1dFN5c3RlbURldmVsb3BlciBcIiArXG4gICAgXCJ1dERpc2Nvbm5lY3RlZCBcIjtcblxuICAvLyBlbnVtIFRWYWx1ZXNCdWlsZFR5cGVcbiAgdmFyIFRWYWx1ZXNCdWlsZFR5cGUgPVxuICAgIFwiYnRBbmQgXCIgKyBcImJ0RGV0YWlsQW5kIFwiICsgXCJidE9yIFwiICsgXCJidE5vdE9yIFwiICsgXCJidE9ubHkgXCI7XG5cbiAgLy8gZW51bSBUVmlld01vZGVcbiAgdmFyIFRWaWV3TW9kZSA9IFwidm1WaWV3IFwiICsgXCJ2bVNlbGVjdCBcIiArIFwidm1OYXZpZ2F0aW9uIFwiO1xuXG4gIC8vIGVudW0gVFZpZXdTZWxlY3Rpb25Nb2RlXG4gIHZhciBUVmlld1NlbGVjdGlvbk1vZGUgPVxuICAgIFwidnNtU2luZ2xlIFwiICsgXCJ2c21NdWx0aXBsZSBcIiArIFwidnNtTXVsdGlwbGVDaGVjayBcIiArIFwidnNtTm9TZWxlY3Rpb24gXCI7XG5cbiAgLy8gZW51bSBUV2l6YXJkQWN0aW9uVHlwZVxuICB2YXIgVFdpemFyZEFjdGlvblR5cGUgPVxuICAgIFwid2ZhdFByZXZpb3VzIFwiICsgXCJ3ZmF0TmV4dCBcIiArIFwid2ZhdENhbmNlbCBcIiArIFwid2ZhdEZpbmlzaCBcIjtcblxuICAvLyBlbnVtIFRXaXphcmRGb3JtRWxlbWVudFByb3BlcnR5XG4gIHZhciBUV2l6YXJkRm9ybUVsZW1lbnRQcm9wZXJ0eSA9XG4gICAgXCJ3ZmVwVW5kZWZpbmVkIFwiICtcbiAgICBcIndmZXBUZXh0MyBcIiArXG4gICAgXCJ3ZmVwVGV4dDYgXCIgK1xuICAgIFwid2ZlcFRleHQ5IFwiICtcbiAgICBcIndmZXBTcGluRWRpdCBcIiArXG4gICAgXCJ3ZmVwRHJvcERvd24gXCIgK1xuICAgIFwid2ZlcFJhZGlvR3JvdXAgXCIgK1xuICAgIFwid2ZlcEZsYWcgXCIgK1xuICAgIFwid2ZlcFRleHQxMiBcIiArXG4gICAgXCJ3ZmVwVGV4dDE1IFwiICtcbiAgICBcIndmZXBUZXh0MTggXCIgK1xuICAgIFwid2ZlcFRleHQyMSBcIiArXG4gICAgXCJ3ZmVwVGV4dDI0IFwiICtcbiAgICBcIndmZXBUZXh0MjcgXCIgK1xuICAgIFwid2ZlcFRleHQzMCBcIiArXG4gICAgXCJ3ZmVwUmFkaW9Hcm91cENvbHVtbjEgXCIgK1xuICAgIFwid2ZlcFJhZGlvR3JvdXBDb2x1bW4yIFwiICtcbiAgICBcIndmZXBSYWRpb0dyb3VwQ29sdW1uMyBcIjtcblxuICAvLyBlbnVtIFRXaXphcmRGb3JtRWxlbWVudFR5cGVcbiAgdmFyIFRXaXphcmRGb3JtRWxlbWVudFR5cGUgPVxuICAgIFwid2ZldFF1ZXJ5UGFyYW1ldGVyIFwiICsgXCJ3ZmV0VGV4dCBcIiArIFwid2ZldERlbGltaXRlciBcIiArIFwid2ZldExhYmVsIFwiO1xuXG4gIC8vIGVudW0gVFdpemFyZFBhcmFtVHlwZVxuICB2YXIgVFdpemFyZFBhcmFtVHlwZSA9XG4gICAgXCJ3cHRTdHJpbmcgXCIgK1xuICAgIFwid3B0SW50ZWdlciBcIiArXG4gICAgXCJ3cHROdW1lcmljIFwiICtcbiAgICBcIndwdEJvb2xlYW4gXCIgK1xuICAgIFwid3B0RGF0ZVRpbWUgXCIgK1xuICAgIFwid3B0UGljayBcIiArXG4gICAgXCJ3cHRUZXh0IFwiICtcbiAgICBcIndwdFVzZXIgXCIgK1xuICAgIFwid3B0VXNlckxpc3QgXCIgK1xuICAgIFwid3B0RURvY3VtZW50SW5mbyBcIiArXG4gICAgXCJ3cHRFRG9jdW1lbnRJbmZvTGlzdCBcIiArXG4gICAgXCJ3cHRSZWZlcmVuY2VSZWNvcmRJbmZvIFwiICtcbiAgICBcIndwdFJlZmVyZW5jZVJlY29yZEluZm9MaXN0IFwiICtcbiAgICBcIndwdEZvbGRlckluZm8gXCIgK1xuICAgIFwid3B0VGFza0luZm8gXCIgK1xuICAgIFwid3B0Q29udGVudHMgXCIgK1xuICAgIFwid3B0RmlsZU5hbWUgXCIgK1xuICAgIFwid3B0RGF0ZSBcIjtcblxuICAvLyBlbnVtIFRXaXphcmRTdGVwUmVzdWx0XG4gIHZhciBUV2l6YXJkU3RlcFJlc3VsdCA9XG4gICAgXCJ3c3JDb21wbGV0ZSBcIiArXG4gICAgXCJ3c3JHb05leHQgXCIgK1xuICAgIFwid3NyR29QcmV2aW91cyBcIiArXG4gICAgXCJ3c3JDdXN0b20gXCIgK1xuICAgIFwid3NyQ2FuY2VsIFwiICtcbiAgICBcIndzckdvRmluYWwgXCI7XG5cbiAgLy8gZW51bSBUV2l6YXJkU3RlcFR5cGVcbiAgdmFyIFRXaXphcmRTdGVwVHlwZSA9XG4gICAgXCJ3c3RGb3JtIFwiICtcbiAgICBcIndzdEVEb2N1bWVudCBcIiArXG4gICAgXCJ3c3RUYXNrQ2FyZCBcIiArXG4gICAgXCJ3c3RSZWZlcmVuY2VSZWNvcmRDYXJkIFwiICtcbiAgICBcIndzdEZpbmFsIFwiO1xuXG4gIC8vIGVudW0gVFdvcmtBY2Nlc3NUeXBlXG4gIHZhciBUV29ya0FjY2Vzc1R5cGUgPSBcIndhQWxsIFwiICsgXCJ3YVBlcmZvcm1lcnMgXCIgKyBcIndhTWFudWFsIFwiO1xuXG4gIC8vIGVudW0gVFdvcmtmbG93QmxvY2tUeXBlXG4gIHZhciBUV29ya2Zsb3dCbG9ja1R5cGUgPVxuICAgIFwid3NiU3RhcnQgXCIgK1xuICAgIFwid3NiRmluaXNoIFwiICtcbiAgICBcIndzYk5vdGljZSBcIiArXG4gICAgXCJ3c2JTdGVwIFwiICtcbiAgICBcIndzYkRlY2lzaW9uIFwiICtcbiAgICBcIndzYldhaXQgXCIgK1xuICAgIFwid3NiTW9uaXRvciBcIiArXG4gICAgXCJ3c2JTY3JpcHQgXCIgK1xuICAgIFwid3NiQ29ubmVjdG9yIFwiICtcbiAgICBcIndzYlN1YlRhc2sgXCIgK1xuICAgIFwid3NiTGlmZUN5Y2xlU3RhZ2UgXCIgK1xuICAgIFwid3NiUGF1c2UgXCI7XG5cbiAgLy8gZW51bSBUV29ya2Zsb3dEYXRhVHlwZVxuICB2YXIgVFdvcmtmbG93RGF0YVR5cGUgPVxuICAgIFwid2R0SW50ZWdlciBcIiArXG4gICAgXCJ3ZHRGbG9hdCBcIiArXG4gICAgXCJ3ZHRTdHJpbmcgXCIgK1xuICAgIFwid2R0UGljayBcIiArXG4gICAgXCJ3ZHREYXRlVGltZSBcIiArXG4gICAgXCJ3ZHRCb29sZWFuIFwiICtcbiAgICBcIndkdFRhc2sgXCIgK1xuICAgIFwid2R0Sm9iIFwiICtcbiAgICBcIndkdEZvbGRlciBcIiArXG4gICAgXCJ3ZHRFRG9jdW1lbnQgXCIgK1xuICAgIFwid2R0UmVmZXJlbmNlUmVjb3JkIFwiICtcbiAgICBcIndkdFVzZXIgXCIgK1xuICAgIFwid2R0R3JvdXAgXCIgK1xuICAgIFwid2R0Um9sZSBcIiArXG4gICAgXCJ3ZHRJbnRlZ2VyQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRGbG9hdENvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0U3RyaW5nQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRQaWNrQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHREYXRlVGltZUNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Qm9vbGVhbkNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0VGFza0NvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Sm9iQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRGb2xkZXJDb2xsZWN0aW9uIFwiICtcbiAgICBcIndkdEVEb2N1bWVudENvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0UmVmZXJlbmNlUmVjb3JkQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRVc2VyQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRHcm91cENvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Um9sZUNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Q29udGVudHMgXCIgK1xuICAgIFwid2R0VXNlckxpc3QgXCIgK1xuICAgIFwid2R0U2VhcmNoRGVzY3JpcHRpb24gXCIgK1xuICAgIFwid2R0RGVhZExpbmUgXCIgK1xuICAgIFwid2R0UGlja1NldCBcIiArXG4gICAgXCJ3ZHRBY2NvdW50Q29sbGVjdGlvbiBcIjtcblxuICAvLyBlbnVtIFRXb3JrSW1wb3J0YW5jZVxuICB2YXIgVFdvcmtJbXBvcnRhbmNlID0gXCJ3aUxvdyBcIiArIFwid2lOb3JtYWwgXCIgKyBcIndpSGlnaCBcIjtcblxuICAvLyBlbnVtIFRXb3JrUm91dGVUeXBlXG4gIHZhciBUV29ya1JvdXRlVHlwZSA9IFwid3J0U29mdCBcIiArIFwid3J0SGFyZCBcIjtcblxuICAvLyBlbnVtIFRXb3JrU3RhdGVcbiAgdmFyIFRXb3JrU3RhdGUgPVxuICAgIFwid3NJbml0IFwiICtcbiAgICBcIndzUnVubmluZyBcIiArXG4gICAgXCJ3c0RvbmUgXCIgK1xuICAgIFwid3NDb250cm9sbGVkIFwiICtcbiAgICBcIndzQWJvcnRlZCBcIiArXG4gICAgXCJ3c0NvbnRpbnVlZCBcIjtcblxuICAvLyBlbnVtIFRXb3JrVGV4dEJ1aWxkaW5nTW9kZVxuICB2YXIgVFdvcmtUZXh0QnVpbGRpbmdNb2RlID1cbiAgICBcInd0bUZ1bGwgXCIgKyBcInd0bUZyb21DdXJyZW50IFwiICsgXCJ3dG1Pbmx5Q3VycmVudCBcIjtcblxuICAvLyDQn9C10YDQtdGH0LjRgdC70LXQvdC40Y9cbiAgdmFyIEVOVU1TID1cbiAgICBUQWNjb3VudFR5cGUgK1xuICAgIFRBY3Rpb25FbmFibGVkTW9kZSArXG4gICAgVEFkZFBvc2l0aW9uICtcbiAgICBUQWxpZ25tZW50ICtcbiAgICBUQXJlYVNob3dNb2RlICtcbiAgICBUQ2VydGlmaWNhdGVJbnZhbGlkYXRpb25SZWFzb24gK1xuICAgIFRDZXJ0aWZpY2F0ZVR5cGUgK1xuICAgIFRDaGVja0xpc3RCb3hJdGVtU3RhdGUgK1xuICAgIFRDbG9zZU9uRXNjICtcbiAgICBUQ29tcFR5cGUgK1xuICAgIFRDb25kaXRpb25Gb3JtYXQgK1xuICAgIFRDb25uZWN0aW9uSW50ZW50ICtcbiAgICBUQ29udGVudEtpbmQgK1xuICAgIFRDb250cm9sVHlwZSArXG4gICAgVENyaXRlcmlvbkNvbnRlbnRUeXBlICtcbiAgICBUQ3VsdHVyZVR5cGUgK1xuICAgIFREYXRhU2V0RXZlbnRUeXBlICtcbiAgICBURGF0YVNldFN0YXRlICtcbiAgICBURGF0ZUZvcm1hdFR5cGUgK1xuICAgIFREYXRlT2Zmc2V0VHlwZSArXG4gICAgVERhdGVUaW1lS2luZCArXG4gICAgVERlYUFjY2Vzc1JpZ2h0cyArXG4gICAgVERvY3VtZW50RGVmYXVsdEFjdGlvbiArXG4gICAgVEVkaXRNb2RlICtcbiAgICBURWRpdG9yQ2xvc2VPYnNlcnZUeXBlICtcbiAgICBURWRtc0FwcGxpY2F0aW9uQWN0aW9uICtcbiAgICBURURvY3VtZW50TG9ja1R5cGUgK1xuICAgIFRFRG9jdW1lbnRTdGVwU2hvd01vZGUgK1xuICAgIFRFRG9jdW1lbnRTdGVwVmVyc2lvblR5cGUgK1xuICAgIFRFRG9jdW1lbnRTdG9yYWdlRnVuY3Rpb24gK1xuICAgIFRFRG9jdW1lbnRTdG9yYWdlVHlwZSArXG4gICAgVEVEb2N1bWVudFZlcnNpb25Tb3VyY2VUeXBlICtcbiAgICBURURvY3VtZW50VmVyc2lvblN0YXRlICtcbiAgICBURW5jb2RlVHlwZSArXG4gICAgVEV4Y2VwdGlvbkNhdGVnb3J5ICtcbiAgICBURXhwb3J0ZWRTaWduYXR1cmVzVHlwZSArXG4gICAgVEV4cG9ydGVkVmVyc2lvblR5cGUgK1xuICAgIFRGaWVsZERhdGFUeXBlICtcbiAgICBURm9sZGVyVHlwZSArXG4gICAgVEdyaWRSb3dIZWlnaHQgK1xuICAgIFRIeXBlcmxpbmtUeXBlICtcbiAgICBUSW1hZ2VGaWxlRm9ybWF0ICtcbiAgICBUSW1hZ2VNb2RlICtcbiAgICBUSW1hZ2VUeXBlICtcbiAgICBUSW5wbGFjZUhpbnRLaW5kICtcbiAgICBUSVNCTENvbnRleHQgK1xuICAgIFRJdGVtU2hvdyArXG4gICAgVEpvYktpbmQgK1xuICAgIFRKb2luVHlwZSArXG4gICAgVExhYmVsUG9zICtcbiAgICBUTGljZW5zaW5nVHlwZSArXG4gICAgVExpZmVDeWNsZVN0YWdlRm9udENvbG9yICtcbiAgICBUTGlmZUN5Y2xlU3RhZ2VGb250U3R5bGUgK1xuICAgIFRMb2NrYWJsZURldmVsb3BtZW50Q29tcG9uZW50VHlwZSArXG4gICAgVE1heFJlY29yZENvdW50UmVzdHJpY3Rpb25UeXBlICtcbiAgICBUUmFuZ2VWYWx1ZVR5cGUgK1xuICAgIFRSZWxhdGl2ZURhdGUgK1xuICAgIFRSZXBvcnREZXN0aW5hdGlvbiArXG4gICAgVFJlcURhdGFUeXBlICtcbiAgICBUUmVxdWlzaXRlRXZlbnRUeXBlICtcbiAgICBUU0JUaW1lVHlwZSArXG4gICAgVFNlYXJjaFNob3dNb2RlICtcbiAgICBUU2VsZWN0TW9kZSArXG4gICAgVFNpZ25hdHVyZVR5cGUgK1xuICAgIFRTaWduZXJDb250ZW50VHlwZSArXG4gICAgVFN0cmluZ3NTb3J0VHlwZSArXG4gICAgVFN0cmluZ1ZhbHVlVHlwZSArXG4gICAgVFN0cnVjdHVyZWRPYmplY3RBdHRyaWJ1dGVUeXBlICtcbiAgICBUVGFza0Fib3J0UmVhc29uICtcbiAgICBUVGV4dFZhbHVlVHlwZSArXG4gICAgVFVzZXJPYmplY3RTdGF0dXMgK1xuICAgIFRVc2VyVHlwZSArXG4gICAgVFZhbHVlc0J1aWxkVHlwZSArXG4gICAgVFZpZXdNb2RlICtcbiAgICBUVmlld1NlbGVjdGlvbk1vZGUgK1xuICAgIFRXaXphcmRBY3Rpb25UeXBlICtcbiAgICBUV2l6YXJkRm9ybUVsZW1lbnRQcm9wZXJ0eSArXG4gICAgVFdpemFyZEZvcm1FbGVtZW50VHlwZSArXG4gICAgVFdpemFyZFBhcmFtVHlwZSArXG4gICAgVFdpemFyZFN0ZXBSZXN1bHQgK1xuICAgIFRXaXphcmRTdGVwVHlwZSArXG4gICAgVFdvcmtBY2Nlc3NUeXBlICtcbiAgICBUV29ya2Zsb3dCbG9ja1R5cGUgK1xuICAgIFRXb3JrZmxvd0RhdGFUeXBlICtcbiAgICBUV29ya0ltcG9ydGFuY2UgK1xuICAgIFRXb3JrUm91dGVUeXBlICtcbiAgICBUV29ya1N0YXRlICtcbiAgICBUV29ya1RleHRCdWlsZGluZ01vZGU7XG5cbiAgLy8g0KHQuNGB0YLQtdC80L3Ri9C1INGE0YPQvdC60YbQuNC4ID09PiBTWVNGVU5DVElPTlNcbiAgdmFyIHN5c3RlbV9mdW5jdGlvbnMgPVxuICAgIFwiQWRkU3ViU3RyaW5nIFwiICtcbiAgICBcIkFkanVzdExpbmVCcmVha3MgXCIgK1xuICAgIFwiQW1vdW50SW5Xb3JkcyBcIiArXG4gICAgXCJBbmFseXNpcyBcIiArXG4gICAgXCJBcnJheURpbUNvdW50IFwiICtcbiAgICBcIkFycmF5SGlnaEJvdW5kIFwiICtcbiAgICBcIkFycmF5TG93Qm91bmQgXCIgK1xuICAgIFwiQXJyYXlPZiBcIiArXG4gICAgXCJBcnJheVJlRGltIFwiICtcbiAgICBcIkFzc2VydCBcIiArXG4gICAgXCJBc3NpZ25lZCBcIiArXG4gICAgXCJCZWdpbk9mTW9udGggXCIgK1xuICAgIFwiQmVnaW5PZlBlcmlvZCBcIiArXG4gICAgXCJCdWlsZFByb2ZpbGluZ09wZXJhdGlvbkFuYWx5c2lzIFwiICtcbiAgICBcIkNhbGxQcm9jZWR1cmUgXCIgK1xuICAgIFwiQ2FuUmVhZEZpbGUgXCIgK1xuICAgIFwiQ0FycmF5RWxlbWVudCBcIiArXG4gICAgXCJDRGF0YVNldFJlcXVpc2l0ZSBcIiArXG4gICAgXCJDaGFuZ2VEYXRlIFwiICtcbiAgICBcIkNoYW5nZVJlZmVyZW5jZURhdGFzZXQgXCIgK1xuICAgIFwiQ2hhciBcIiArXG4gICAgXCJDaGFyUG9zIFwiICtcbiAgICBcIkNoZWNrUGFyYW0gXCIgK1xuICAgIFwiQ2hlY2tQYXJhbVZhbHVlIFwiICtcbiAgICBcIkNvbXBhcmVTdHJpbmdzIFwiICtcbiAgICBcIkNvbnN0YW50RXhpc3RzIFwiICtcbiAgICBcIkNvbnRyb2xTdGF0ZSBcIiArXG4gICAgXCJDb252ZXJ0RGF0ZVN0ciBcIiArXG4gICAgXCJDb3B5IFwiICtcbiAgICBcIkNvcHlGaWxlIFwiICtcbiAgICBcIkNyZWF0ZUFycmF5IFwiICtcbiAgICBcIkNyZWF0ZUNhY2hlZFJlZmVyZW5jZSBcIiArXG4gICAgXCJDcmVhdGVDb25uZWN0aW9uIFwiICtcbiAgICBcIkNyZWF0ZURpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVEdWFsTGlzdERpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVFZGl0b3IgXCIgK1xuICAgIFwiQ3JlYXRlRXhjZXB0aW9uIFwiICtcbiAgICBcIkNyZWF0ZUZpbGUgXCIgK1xuICAgIFwiQ3JlYXRlRm9sZGVyRGlhbG9nIFwiICtcbiAgICBcIkNyZWF0ZUlucHV0RGlhbG9nIFwiICtcbiAgICBcIkNyZWF0ZUxpbmtGaWxlIFwiICtcbiAgICBcIkNyZWF0ZUxpc3QgXCIgK1xuICAgIFwiQ3JlYXRlTG9jayBcIiArXG4gICAgXCJDcmVhdGVNZW1vcnlEYXRhU2V0IFwiICtcbiAgICBcIkNyZWF0ZU9iamVjdCBcIiArXG4gICAgXCJDcmVhdGVPcGVuRGlhbG9nIFwiICtcbiAgICBcIkNyZWF0ZVByb2dyZXNzIFwiICtcbiAgICBcIkNyZWF0ZVF1ZXJ5IFwiICtcbiAgICBcIkNyZWF0ZVJlZmVyZW5jZSBcIiArXG4gICAgXCJDcmVhdGVSZXBvcnQgXCIgK1xuICAgIFwiQ3JlYXRlU2F2ZURpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVTY3JpcHQgXCIgK1xuICAgIFwiQ3JlYXRlU1FMUGl2b3RGdW5jdGlvbiBcIiArXG4gICAgXCJDcmVhdGVTdHJpbmdMaXN0IFwiICtcbiAgICBcIkNyZWF0ZVRyZWVMaXN0U2VsZWN0RGlhbG9nIFwiICtcbiAgICBcIkNTZWxlY3RTUUwgXCIgK1xuICAgIFwiQ1NRTCBcIiArXG4gICAgXCJDU3ViU3RyaW5nIFwiICtcbiAgICBcIkN1cnJlbnRVc2VySUQgXCIgK1xuICAgIFwiQ3VycmVudFVzZXJOYW1lIFwiICtcbiAgICBcIkN1cnJlbnRWZXJzaW9uIFwiICtcbiAgICBcIkRhdGFTZXRMb2NhdGVFeCBcIiArXG4gICAgXCJEYXRlRGlmZiBcIiArXG4gICAgXCJEYXRlVGltZURpZmYgXCIgK1xuICAgIFwiRGF0ZVRvU3RyIFwiICtcbiAgICBcIkRheU9mV2VlayBcIiArXG4gICAgXCJEZWxldGVGaWxlIFwiICtcbiAgICBcIkRpcmVjdG9yeUV4aXN0cyBcIiArXG4gICAgXCJEaXNhYmxlQ2hlY2tBY2Nlc3NSaWdodHMgXCIgK1xuICAgIFwiRGlzYWJsZUNoZWNrRnVsbFNob3dpbmdSZXN0cmljdGlvbiBcIiArXG4gICAgXCJEaXNhYmxlTWFzc1Rhc2tTZW5kaW5nUmVzdHJpY3Rpb25zIFwiICtcbiAgICBcIkRyb3BUYWJsZSBcIiArXG4gICAgXCJEdXBlU3RyaW5nIFwiICtcbiAgICBcIkVkaXRUZXh0IFwiICtcbiAgICBcIkVuYWJsZUNoZWNrQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIkVuYWJsZUNoZWNrRnVsbFNob3dpbmdSZXN0cmljdGlvbiBcIiArXG4gICAgXCJFbmFibGVNYXNzVGFza1NlbmRpbmdSZXN0cmljdGlvbnMgXCIgK1xuICAgIFwiRW5kT2ZNb250aCBcIiArXG4gICAgXCJFbmRPZlBlcmlvZCBcIiArXG4gICAgXCJFeGNlcHRpb25FeGlzdHMgXCIgK1xuICAgIFwiRXhjZXB0aW9uc09mZiBcIiArXG4gICAgXCJFeGNlcHRpb25zT24gXCIgK1xuICAgIFwiRXhlY3V0ZSBcIiArXG4gICAgXCJFeGVjdXRlUHJvY2VzcyBcIiArXG4gICAgXCJFeGl0IFwiICtcbiAgICBcIkV4cGFuZEVudmlyb25tZW50VmFyaWFibGVzIFwiICtcbiAgICBcIkV4dHJhY3RGaWxlRHJpdmUgXCIgK1xuICAgIFwiRXh0cmFjdEZpbGVFeHQgXCIgK1xuICAgIFwiRXh0cmFjdEZpbGVOYW1lIFwiICtcbiAgICBcIkV4dHJhY3RGaWxlUGF0aCBcIiArXG4gICAgXCJFeHRyYWN0UGFyYW1zIFwiICtcbiAgICBcIkZpbGVFeGlzdHMgXCIgK1xuICAgIFwiRmlsZVNpemUgXCIgK1xuICAgIFwiRmluZEZpbGUgXCIgK1xuICAgIFwiRmluZFN1YlN0cmluZyBcIiArXG4gICAgXCJGaXJtQ29udGV4dCBcIiArXG4gICAgXCJGb3JjZURpcmVjdG9yaWVzIFwiICtcbiAgICBcIkZvcm1hdCBcIiArXG4gICAgXCJGb3JtYXREYXRlIFwiICtcbiAgICBcIkZvcm1hdE51bWVyaWMgXCIgK1xuICAgIFwiRm9ybWF0U1FMRGF0ZSBcIiArXG4gICAgXCJGb3JtYXRTdHJpbmcgXCIgK1xuICAgIFwiRnJlZUV4Y2VwdGlvbiBcIiArXG4gICAgXCJHZXRDb21wb25lbnQgXCIgK1xuICAgIFwiR2V0Q29tcG9uZW50TGF1bmNoUGFyYW0gXCIgK1xuICAgIFwiR2V0Q29uc3RhbnQgXCIgK1xuICAgIFwiR2V0TGFzdEV4Y2VwdGlvbiBcIiArXG4gICAgXCJHZXRSZWZlcmVuY2VSZWNvcmQgXCIgK1xuICAgIFwiR2V0UmVmVHlwZUJ5UmVmSUQgXCIgK1xuICAgIFwiR2V0VGFibGVJRCBcIiArXG4gICAgXCJHZXRUZW1wRm9sZGVyIFwiICtcbiAgICBcIklmVGhlbiBcIiArXG4gICAgXCJJbiBcIiArXG4gICAgXCJJbmRleE9mIFwiICtcbiAgICBcIklucHV0RGlhbG9nIFwiICtcbiAgICBcIklucHV0RGlhbG9nRXggXCIgK1xuICAgIFwiSW50ZXJhY3RpdmVNb2RlIFwiICtcbiAgICBcIklzRmlsZUxvY2tlZCBcIiArXG4gICAgXCJJc0dyYXBoaWNGaWxlIFwiICtcbiAgICBcIklzTnVtZXJpYyBcIiArXG4gICAgXCJMZW5ndGggXCIgK1xuICAgIFwiTG9hZFN0cmluZyBcIiArXG4gICAgXCJMb2FkU3RyaW5nRm10IFwiICtcbiAgICBcIkxvY2FsVGltZVRvVVRDIFwiICtcbiAgICBcIkxvd2VyQ2FzZSBcIiArXG4gICAgXCJNYXggXCIgK1xuICAgIFwiTWVzc2FnZUJveCBcIiArXG4gICAgXCJNZXNzYWdlQm94RXggXCIgK1xuICAgIFwiTWltZURlY29kZUJpbmFyeSBcIiArXG4gICAgXCJNaW1lRGVjb2RlU3RyaW5nIFwiICtcbiAgICBcIk1pbWVFbmNvZGVCaW5hcnkgXCIgK1xuICAgIFwiTWltZUVuY29kZVN0cmluZyBcIiArXG4gICAgXCJNaW4gXCIgK1xuICAgIFwiTW9uZXlJbldvcmRzIFwiICtcbiAgICBcIk1vdmVGaWxlIFwiICtcbiAgICBcIk5ld0lEIFwiICtcbiAgICBcIk5vdyBcIiArXG4gICAgXCJPcGVuRmlsZSBcIiArXG4gICAgXCJPcmQgXCIgK1xuICAgIFwiUHJlY2lzaW9uIFwiICtcbiAgICBcIlJhaXNlIFwiICtcbiAgICBcIlJlYWRDZXJ0aWZpY2F0ZUZyb21GaWxlIFwiICtcbiAgICBcIlJlYWRGaWxlIFwiICtcbiAgICBcIlJlZmVyZW5jZUNvZGVCeUlEIFwiICtcbiAgICBcIlJlZmVyZW5jZU51bWJlciBcIiArXG4gICAgXCJSZWZlcmVuY2VSZXF1aXNpdGVNb2RlIFwiICtcbiAgICBcIlJlZmVyZW5jZVJlcXVpc2l0ZVZhbHVlIFwiICtcbiAgICBcIlJlZ2lvbkRhdGVTZXR0aW5ncyBcIiArXG4gICAgXCJSZWdpb25OdW1iZXJTZXR0aW5ncyBcIiArXG4gICAgXCJSZWdpb25UaW1lU2V0dGluZ3MgXCIgK1xuICAgIFwiUmVnUmVhZCBcIiArXG4gICAgXCJSZWdXcml0ZSBcIiArXG4gICAgXCJSZW5hbWVGaWxlIFwiICtcbiAgICBcIlJlcGxhY2UgXCIgK1xuICAgIFwiUm91bmQgXCIgK1xuICAgIFwiU2VsZWN0U2VydmVyQ29kZSBcIiArXG4gICAgXCJTZWxlY3RTUUwgXCIgK1xuICAgIFwiU2VydmVyRGF0ZVRpbWUgXCIgK1xuICAgIFwiU2V0Q29uc3RhbnQgXCIgK1xuICAgIFwiU2V0TWFuYWdlZEZvbGRlckZpZWxkc1N0YXRlIFwiICtcbiAgICBcIlNob3dDb25zdGFudHNJbnB1dERpYWxvZyBcIiArXG4gICAgXCJTaG93TWVzc2FnZSBcIiArXG4gICAgXCJTbGVlcCBcIiArXG4gICAgXCJTcGxpdCBcIiArXG4gICAgXCJTUUwgXCIgK1xuICAgIFwiU1FMMlhMU1RBQiBcIiArXG4gICAgXCJTUUxQcm9maWxpbmdTZW5kUmVwb3J0IFwiICtcbiAgICBcIlN0clRvRGF0ZSBcIiArXG4gICAgXCJTdWJTdHJpbmcgXCIgK1xuICAgIFwiU3ViU3RyaW5nQ291bnQgXCIgK1xuICAgIFwiU3lzdGVtU2V0dGluZyBcIiArXG4gICAgXCJUaW1lIFwiICtcbiAgICBcIlRpbWVEaWZmIFwiICtcbiAgICBcIlRvZGF5IFwiICtcbiAgICBcIlRyYW5zbGl0ZXJhdGUgXCIgK1xuICAgIFwiVHJpbSBcIiArXG4gICAgXCJVcHBlckNhc2UgXCIgK1xuICAgIFwiVXNlclN0YXR1cyBcIiArXG4gICAgXCJVVENUb0xvY2FsVGltZSBcIiArXG4gICAgXCJWYWxpZGF0ZVhNTCBcIiArXG4gICAgXCJWYXJJc0NsZWFyIFwiICtcbiAgICBcIlZhcklzRW1wdHkgXCIgK1xuICAgIFwiVmFySXNOdWxsIFwiICtcbiAgICBcIldvcmtUaW1lRGlmZiBcIiArXG4gICAgXCJXcml0ZUZpbGUgXCIgK1xuICAgIFwiV3JpdGVGaWxlRXggXCIgK1xuICAgIFwiV3JpdGVPYmplY3RIaXN0b3J5IFwiICtcbiAgICBcItCQ0L3QsNC70LjQtyBcIiArXG4gICAgXCLQkdCw0LfQsNCU0LDQvdC90YvRhSBcIiArXG4gICAgXCLQkdC70L7QutCV0YHRgtGMIFwiICtcbiAgICBcItCR0LvQvtC60JXRgdGC0YzQoNCw0YHRiCBcIiArXG4gICAgXCLQkdC70L7QutCY0L3RhNC+IFwiICtcbiAgICBcItCR0LvQvtC60KHQvdGP0YLRjCBcIiArXG4gICAgXCLQkdC70L7QutCh0L3Rj9GC0YzQoNCw0YHRiCBcIiArXG4gICAgXCLQkdC70L7QutCj0YHRgtCw0L3QvtCy0LjRgtGMIFwiICtcbiAgICBcItCS0LLQvtC0IFwiICtcbiAgICBcItCS0LLQvtC00JzQtdC90Y4gXCIgK1xuICAgIFwi0JLQtdC00KEgXCIgK1xuICAgIFwi0JLQtdC00KHQv9GAIFwiICtcbiAgICBcItCS0LXRgNGF0L3Rj9GP0JPRgNCw0L3QuNGG0LDQnNCw0YHRgdC40LLQsCBcIiArXG4gICAgXCLQktC90LXRiNCf0YDQvtCz0YAgXCIgK1xuICAgIFwi0JLQvtGB0YHRgiBcIiArXG4gICAgXCLQktGA0LXQvNC10L3QvdCw0Y/Qn9Cw0L/QutCwIFwiICtcbiAgICBcItCS0YDQtdC80Y8gXCIgK1xuICAgIFwi0JLRi9Cx0L7RgFNRTCBcIiArXG4gICAgXCLQktGL0LHRgNCw0YLRjNCX0LDQv9C40YHRjCBcIiArXG4gICAgXCLQktGL0LTQtdC70LjRgtGM0KHRgtGAIFwiICtcbiAgICBcItCS0YvQt9Cy0LDRgtGMIFwiICtcbiAgICBcItCS0YvQv9C+0LvQvdC40YLRjCBcIiArXG4gICAgXCLQktGL0L/Qn9GA0L7Qs9GAIFwiICtcbiAgICBcItCT0YDQsNGE0LjRh9C10YHQutC40LnQpNCw0LnQuyBcIiArXG4gICAgXCLQk9GA0YPQv9C/0LDQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3QviBcIiArXG4gICAgXCLQlNCw0YLQsNCS0YDQtdC80Y/QodC10YDQsiBcIiArXG4gICAgXCLQlNC10L3RjNCd0LXQtNC10LvQuCBcIiArXG4gICAgXCLQlNC40LDQu9C+0LPQlNCw0J3QtdGCIFwiICtcbiAgICBcItCU0LvQuNC90LDQodGC0YAgXCIgK1xuICAgIFwi0JTQvtCx0J/QvtC00YHRgtGAIFwiICtcbiAgICBcItCV0J/Rg9GB0YLQviBcIiArXG4gICAgXCLQldGB0LvQuNCi0L4gXCIgK1xuICAgIFwi0JXQp9C40YHQu9C+IFwiICtcbiAgICBcItCX0LDQvNCf0L7QtNGB0YLRgCBcIiArXG4gICAgXCLQl9Cw0L/QuNGB0YzQodC/0YDQsNCy0L7Rh9C90LjQutCwIFwiICtcbiAgICBcItCX0L3QsNGH0J/QvtC70Y/QodC/0YAgXCIgK1xuICAgIFwi0JjQlNCi0LjQv9Ch0L/RgCBcIiArXG4gICAgXCLQmNC30LLQu9C10YfRjNCU0LjRgdC6IFwiICtcbiAgICBcItCY0LfQstC70LXRh9GM0JjQvNGP0KTQsNC50LvQsCBcIiArXG4gICAgXCLQmNC30LLQu9C10YfRjNCf0YPRgtGMIFwiICtcbiAgICBcItCY0LfQstC70LXRh9GM0KDQsNGB0YjQuNGA0LXQvdC40LUgXCIgK1xuICAgIFwi0JjQt9C80JTQsNGCIFwiICtcbiAgICBcItCY0LfQvNC10L3QuNGC0YzQoNCw0LfQvNC10YDQnNCw0YHRgdC40LLQsCBcIiArXG4gICAgXCLQmNC30LzQtdGA0LXQvdC40LnQnNCw0YHRgdC40LLQsCBcIiArXG4gICAgXCLQmNC80Y/QntGA0LMgXCIgK1xuICAgIFwi0JjQvNGP0J/QvtC70Y/QodC/0YAgXCIgK1xuICAgIFwi0JjQvdC00LXQutGBIFwiICtcbiAgICBcItCY0L3QtNC40LrQsNGC0L7RgNCX0LDQutGA0YvRgtGMIFwiICtcbiAgICBcItCY0L3QtNC40LrQsNGC0L7RgNCe0YLQutGA0YvRgtGMIFwiICtcbiAgICBcItCY0L3QtNC40LrQsNGC0L7RgNCo0LDQsyBcIiArXG4gICAgXCLQmNC90YLQtdGA0LDQutGC0LjQstC90YvQudCg0LXQttC40LwgXCIgK1xuICAgIFwi0JjRgtC+0LPQotCx0LvQodC/0YAgXCIgK1xuICAgIFwi0JrQvtC00JLQuNC00JLQtdC00KHQv9GAIFwiICtcbiAgICBcItCa0L7QtNCS0LjQtNCh0L/RgNCf0L7QmNCUIFwiICtcbiAgICBcItCa0L7QtNCf0L5BbmFsaXQgXCIgK1xuICAgIFwi0JrQvtC00KHQuNC80LLQvtC70LAgXCIgK1xuICAgIFwi0JrQvtC00KHQv9GAIFwiICtcbiAgICBcItCa0L7Qu9Cf0L7QtNGB0YLRgCBcIiArXG4gICAgXCLQmtC+0LvQn9GA0L7QvyBcIiArXG4gICAgXCLQmtC+0L3QnNC10YEgXCIgK1xuICAgIFwi0JrQvtC90YHRgiBcIiArXG4gICAgXCLQmtC+0L3RgdGC0JXRgdGC0YwgXCIgK1xuICAgIFwi0JrQvtC90YHRgtCX0L3QsNGHIFwiICtcbiAgICBcItCa0L7QvdCi0YDQsNC9IFwiICtcbiAgICBcItCa0L7Qv9C40YDQvtCy0LDRgtGM0KTQsNC50LsgXCIgK1xuICAgIFwi0JrQvtC/0LjRj9Ch0YLRgCBcIiArXG4gICAgXCLQmtCf0LXRgNC40L7QtCBcIiArXG4gICAgXCLQmtCh0YLRgNCi0LHQu9Ch0L/RgCBcIiArXG4gICAgXCLQnNCw0LrRgSBcIiArXG4gICAgXCLQnNCw0LrRgdCh0YLRgNCi0LHQu9Ch0L/RgCBcIiArXG4gICAgXCLQnNCw0YHRgdC40LIgXCIgK1xuICAgIFwi0JzQtdC90Y4gXCIgK1xuICAgIFwi0JzQtdC90Y7QoNCw0YHRiCBcIiArXG4gICAgXCLQnNC40L0gXCIgK1xuICAgIFwi0J3QsNCx0L7RgNCU0LDQvdC90YvRhdCd0LDQudGC0LjQoNCw0YHRiCBcIiArXG4gICAgXCLQndCw0LjQvNCS0LjQtNCh0L/RgCBcIiArXG4gICAgXCLQndCw0LjQvNCf0L5BbmFsaXQgXCIgK1xuICAgIFwi0J3QsNC40LzQodC/0YAgXCIgK1xuICAgIFwi0J3QsNGB0YLRgNC+0LjRgtGM0J/QtdGA0LXQstC+0LTRi9Ch0YLRgNC+0LogXCIgK1xuICAgIFwi0J3QsNGH0JzQtdGBIFwiICtcbiAgICBcItCd0LDRh9Ci0YDQsNC9IFwiICtcbiAgICBcItCd0LjQttC90Y/Rj9CT0YDQsNC90LjRhtCw0JzQsNGB0YHQuNCy0LAgXCIgK1xuICAgIFwi0J3QvtC80LXRgNCh0L/RgCBcIiArXG4gICAgXCLQndCf0LXRgNC40L7QtCBcIiArXG4gICAgXCLQntC60L3QviBcIiArXG4gICAgXCLQntC60YAgXCIgK1xuICAgIFwi0J7QutGA0YPQttC10L3QuNC1IFwiICtcbiAgICBcItCe0YLQu9CY0L3RhNCU0L7QsdCw0LLQuNGC0YwgXCIgK1xuICAgIFwi0J7RgtC70JjQvdGE0KPQtNCw0LvQuNGC0YwgXCIgK1xuICAgIFwi0J7RgtGH0LXRgiBcIiArXG4gICAgXCLQntGC0YfQtdGC0JDQvdCw0LsgXCIgK1xuICAgIFwi0J7RgtGH0LXRgtCY0L3RgiBcIiArXG4gICAgXCLQn9Cw0L/QutCw0KHRg9GJ0LXRgdGC0LLRg9C10YIgXCIgK1xuICAgIFwi0J/QsNGD0LfQsCBcIiArXG4gICAgXCLQn9CS0YvQsdC+0YBTUUwgXCIgK1xuICAgIFwi0J/QtdGA0LXQuNC80LXQvdC+0LLQsNGC0YzQpNCw0LnQuyBcIiArXG4gICAgXCLQn9C10YDQtdC80LXQvdC90YvQtSBcIiArXG4gICAgXCLQn9C10YDQtdC80LXRgdGC0LjRgtGM0KTQsNC50LsgXCIgK1xuICAgIFwi0J/QvtC00YHRgtGAIFwiICtcbiAgICBcItCf0L7QuNGB0LrQn9C+0LTRgdGC0YAgXCIgK1xuICAgIFwi0J/QvtC40YHQutCh0YLRgCBcIiArXG4gICAgXCLQn9C+0LvRg9GH0LjRgtGM0JjQlNCi0LDQsdC70LjRhtGLIFwiICtcbiAgICBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNCU0L7Qv9C+0LvQvdC40YLQtdC70YzQvdC+IFwiICtcbiAgICBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNCY0JQgXCIgK1xuICAgIFwi0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0JjQvNGPIFwiICtcbiAgICBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNCh0YLQsNGC0YPRgSBcIiArXG4gICAgXCLQn9GA0LXRgNCy0LDRgtGMIFwiICtcbiAgICBcItCf0YDQvtCy0LXRgNC40YLRjNCf0LDRgNCw0LzQtdGC0YAgXCIgK1xuICAgIFwi0J/RgNC+0LLQtdGA0LjRgtGM0J/QsNGA0LDQvNC10YLRgNCX0L3QsNGHIFwiICtcbiAgICBcItCf0YDQvtCy0LXRgNC40YLRjNCj0YHQu9C+0LLQuNC1IFwiICtcbiAgICBcItCg0LDQt9Cx0KHRgtGAIFwiICtcbiAgICBcItCg0LDQt9C90JLRgNC10LzRjyBcIiArXG4gICAgXCLQoNCw0LfQvdCU0LDRgiBcIiArXG4gICAgXCLQoNCw0LfQvdCU0LDRgtCw0JLRgNC10LzRjyBcIiArXG4gICAgXCLQoNCw0LfQvdCg0LDQsdCS0YDQtdC80Y8gXCIgK1xuICAgIFwi0KDQtdCz0KPRgdGC0JLRgNC10LwgXCIgK1xuICAgIFwi0KDQtdCz0KPRgdGC0JTQsNGCIFwiICtcbiAgICBcItCg0LXQs9Cj0YHRgtCn0YHQuyBcIiArXG4gICAgXCLQoNC10LTQotC10LrRgdGCIFwiICtcbiAgICBcItCg0LXQtdGB0YLRgNCX0LDQv9C40YHRjCBcIiArXG4gICAgXCLQoNC10LXRgdGC0YDQodC/0LjRgdC+0LrQmNC80LXQvdCf0LDRgNCw0LwgXCIgK1xuICAgIFwi0KDQtdC10YHRgtGA0KfRgtC10L3QuNC1IFwiICtcbiAgICBcItCg0LXQutCy0KHQv9GAIFwiICtcbiAgICBcItCg0LXQutCy0KHQv9GA0J/RgCBcIiArXG4gICAgXCLQodC10LPQvtC00L3RjyBcIiArXG4gICAgXCLQodC10LnRh9Cw0YEgXCIgK1xuICAgIFwi0KHQtdGA0LLQtdGAIFwiICtcbiAgICBcItCh0LXRgNCy0LXRgNCf0YDQvtGG0LXRgdGB0JjQlCBcIiArXG4gICAgXCLQodC10YDRgtC40YTQuNC60LDRgtCk0LDQudC70KHRh9C40YLQsNGC0YwgXCIgK1xuICAgIFwi0KHQttCf0YDQvtCxIFwiICtcbiAgICBcItCh0LjQvNCy0L7QuyBcIiArXG4gICAgXCLQodC40YHRgtC10LzQsNCU0LjRgNC10LrRgtGD0LzQmtC+0LQgXCIgK1xuICAgIFwi0KHQuNGB0YLQtdC80LDQmNC90YTQvtGA0LzQsNGG0LjRjyBcIiArXG4gICAgXCLQodC40YHRgtC10LzQsNCa0L7QtCBcIiArXG4gICAgXCLQodC+0LTQtdGA0LbQuNGCIFwiICtcbiAgICBcItCh0L7QtdC00LjQvdC10L3QuNC10JfQsNC60YDRi9GC0YwgXCIgK1xuICAgIFwi0KHQvtC10LTQuNC90LXQvdC40LXQntGC0LrRgNGL0YLRjCBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7QsyBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7Qs9CS0YvQsdC+0YDQsNCY0LfQlNCy0YPRhdCh0L/QuNGB0LrQvtCyIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JTQuNCw0LvQvtCz0JLRi9Cx0L7RgNCw0J/QsNC/0LrQuCBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7Qs9Ce0YLQutGA0YvRgtC40Y/QpNCw0LnQu9CwIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JTQuNCw0LvQvtCz0KHQvtGF0YDQsNC90LXQvdC40Y/QpNCw0LnQu9CwIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JfQsNC/0YDQvtGBIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JjQvdC00LjQutCw0YLQvtGAIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JjRgdC60LvRjtGH0LXQvdC40LUgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQmtGN0YjQuNGA0L7QstCw0L3QvdGL0LnQodC/0YDQsNCy0L7Rh9C90LjQuiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCc0LDRgdGB0LjQsiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCd0LDQsdC+0YDQlNCw0L3QvdGL0YUgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQntCx0YrQtdC60YIgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQntGC0YfQtdGCIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0J/QsNC/0LrRgyBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCg0LXQtNCw0LrRgtC+0YAgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQodC+0LXQtNC40L3QtdC90LjQtSBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCh0L/QuNGB0L7QuiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCh0L/QuNGB0L7QutCh0YLRgNC+0LogXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQodC/0YDQsNCy0L7Rh9C90LjQuiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCh0YbQtdC90LDRgNC40LkgXCIgK1xuICAgIFwi0KHQvtC30LTQodC/0YAgXCIgK1xuICAgIFwi0KHQvtGB0YLQodC/0YAgXCIgK1xuICAgIFwi0KHQvtGF0YAgXCIgK1xuICAgIFwi0KHQvtGF0YDQodC/0YAgXCIgK1xuICAgIFwi0KHQv9C40YHQvtC60KHQuNGB0YLQtdC8IFwiICtcbiAgICBcItCh0L/RgCBcIiArXG4gICAgXCLQodC/0YDQsNCy0L7Rh9C90LjQuiBcIiArXG4gICAgXCLQodC/0YDQkdC70L7QutCV0YHRgtGMIFwiICtcbiAgICBcItCh0L/RgNCR0LvQvtC60KHQvdGP0YLRjCBcIiArXG4gICAgXCLQodC/0YDQkdC70L7QutCh0L3Rj9GC0YzQoNCw0YHRiCBcIiArXG4gICAgXCLQodC/0YDQkdC70L7QutCj0YHRgtCw0L3QvtCy0LjRgtGMIFwiICtcbiAgICBcItCh0L/RgNCY0LfQvNCd0LDQsdCU0LDQvSBcIiArXG4gICAgXCLQodC/0YDQmtC+0LQgXCIgK1xuICAgIFwi0KHQv9GA0J3QvtC80LXRgCBcIiArXG4gICAgXCLQodC/0YDQntCx0L3QvtCy0LjRgtGMIFwiICtcbiAgICBcItCh0L/RgNCe0YLQutGA0YvRgtGMIFwiICtcbiAgICBcItCh0L/RgNCe0YLQvNC10L3QuNGC0YwgXCIgK1xuICAgIFwi0KHQv9GA0J/QsNGA0LDQvCBcIiArXG4gICAgXCLQodC/0YDQn9C+0LvQtdCX0L3QsNGHIFwiICtcbiAgICBcItCh0L/RgNCf0L7Qu9C10JjQvNGPIFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCyIFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0JLQstC10LTQl9C9IFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0J3QvtCy0YvQtSBcIiArXG4gICAgXCLQodC/0YDQoNC10LrQstCf0YAgXCIgK1xuICAgIFwi0KHQv9GA0KDQtdC60LLQn9GA0LXQtNCX0L0gXCIgK1xuICAgIFwi0KHQv9GA0KDQtdC60LLQoNC10LbQuNC8IFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0KLQuNC/0KLQtdC60YHRgiBcIiArXG4gICAgXCLQodC/0YDQodC+0LfQtNCw0YLRjCBcIiArXG4gICAgXCLQodC/0YDQodC+0YHRgiBcIiArXG4gICAgXCLQodC/0YDQodC+0YXRgNCw0L3QuNGC0YwgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70JjRgtC+0LMgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGAIFwiICtcbiAgICBcItCh0L/RgNCi0LHQu9Ch0YLRgNCa0L7QuyBcIiArXG4gICAgXCLQodC/0YDQotCx0LvQodGC0YDQnNCw0LrRgSBcIiArXG4gICAgXCLQodC/0YDQotCx0LvQodGC0YDQnNC40L0gXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0J/RgNC10LQgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0KHQu9C10LQgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0KHQvtC30LQgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0KPQtCBcIiArXG4gICAgXCLQodC/0YDQotC10LrQn9GA0LXQtNGB0YIgXCIgK1xuICAgIFwi0KHQv9GA0KPQtNCw0LvQuNGC0YwgXCIgK1xuICAgIFwi0KHRgNCw0LLQvdC40YLRjNCh0YLRgCBcIiArXG4gICAgXCLQodGC0YDQktC10YDRhdCg0LXQs9C40YHRgtGAIFwiICtcbiAgICBcItCh0YLRgNCd0LjQttC90KDQtdCz0LjRgdGC0YAgXCIgK1xuICAgIFwi0KHRgtGA0KLQsdC70KHQv9GAIFwiICtcbiAgICBcItCh0YPQvNCf0YDQvtC/IFwiICtcbiAgICBcItCh0YbQtdC90LDRgNC40LkgXCIgK1xuICAgIFwi0KHRhtC10L3QsNGA0LjQudCf0LDRgNCw0LwgXCIgK1xuICAgIFwi0KLQtdC60JLQtdGA0YHQuNGPIFwiICtcbiAgICBcItCi0LXQutCe0YDQsyBcIiArXG4gICAgXCLQotC+0YfQvSBcIiArXG4gICAgXCLQotGA0LDQvSBcIiArXG4gICAgXCLQotGA0LDQvdGB0LvQuNGC0LXRgNCw0YbQuNGPIFwiICtcbiAgICBcItCj0LTQsNC70LjRgtGM0KLQsNCx0LvQuNGG0YMgXCIgK1xuICAgIFwi0KPQtNCw0LvQuNGC0YzQpNCw0LnQuyBcIiArXG4gICAgXCLQo9C00KHQv9GAIFwiICtcbiAgICBcItCj0LTQodGC0YDQotCx0LvQodC/0YAgXCIgK1xuICAgIFwi0KPRgdGCIFwiICtcbiAgICBcItCj0YHRgtCw0L3QvtCy0LrQuNCa0L7QvdGB0YLQsNC90YIgXCIgK1xuICAgIFwi0KTQsNC50LvQkNGC0YDQuNCx0YPRgtCh0YfQuNGC0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JDRgtGA0LjQsdGD0YLQo9GB0YLQsNC90L7QstC40YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9CS0YDQtdC80Y8gXCIgK1xuICAgIFwi0KTQsNC50LvQktGA0LXQvNGP0KPRgdGC0LDQvdC+0LLQuNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQktGL0LHRgNCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9CX0LDQvdGP0YIgXCIgK1xuICAgIFwi0KTQsNC50LvQl9Cw0L/QuNGB0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JjRgdC60LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JrQvtC/0LjRgNC+0LLQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQnNC+0LbQvdC+0KfQuNGC0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70J7RgtC60YDRi9GC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQn9C10YDQtdC40LzQtdC90L7QstCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Cf0LXRgNC10LrQvtC00LjRgNC+0LLQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQn9C10YDQtdC80LXRgdGC0LjRgtGMIFwiICtcbiAgICBcItCk0LDQudC70J/RgNC+0YHQvNC+0YLRgNC10YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Cg0LDQt9C80LXRgCBcIiArXG4gICAgXCLQpNCw0LnQu9Ch0L7Qt9C00LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70KHRgdGL0LvQutCw0KHQvtC30LTQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQodGD0YnQtdGB0YLQstGD0LXRgiBcIiArXG4gICAgXCLQpNCw0LnQu9Ch0YfQuNGC0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70KPQtNCw0LvQuNGC0YwgXCIgK1xuICAgIFwi0KTQvNGCU1FM0JTQsNGCIFwiICtcbiAgICBcItCk0LzRgtCU0LDRgiBcIiArXG4gICAgXCLQpNC80YLQodGC0YAgXCIgK1xuICAgIFwi0KTQvNGC0KfRgdC7IFwiICtcbiAgICBcItCk0L7RgNC80LDRgiBcIiArXG4gICAgXCLQptCc0LDRgdGB0LjQstCt0LvQtdC80LXQvdGCIFwiICtcbiAgICBcItCm0J3QsNCx0L7RgNCU0LDQvdC90YvRhdCg0LXQutCy0LjQt9C40YIgXCIgK1xuICAgIFwi0KbQn9C+0LTRgdGC0YAgXCI7XG5cbiAgLy8g0J/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdGL0LUg0L/QtdGA0LXQvNC10L3QvdGL0LUgPT0+IGJ1aWx0X2luXG4gIHZhciBwcmVkZWZpbmVkX3ZhcmlhYmxlcyA9XG4gICAgXCJBbHRTdGF0ZSBcIiArXG4gICAgXCJBcHBsaWNhdGlvbiBcIiArXG4gICAgXCJDYWxsVHlwZSBcIiArXG4gICAgXCJDb21wb25lbnRUb2tlbnMgXCIgK1xuICAgIFwiQ3JlYXRlZEpvYnMgXCIgK1xuICAgIFwiQ3JlYXRlZE5vdGljZXMgXCIgK1xuICAgIFwiQ29udHJvbFN0YXRlIFwiICtcbiAgICBcIkRpYWxvZ1Jlc3VsdCBcIiArXG4gICAgXCJEaWFsb2dzIFwiICtcbiAgICBcIkVEb2N1bWVudHMgXCIgK1xuICAgIFwiRURvY3VtZW50VmVyc2lvblNvdXJjZSBcIiArXG4gICAgXCJGb2xkZXJzIFwiICtcbiAgICBcIkdsb2JhbElEcyBcIiArXG4gICAgXCJKb2IgXCIgK1xuICAgIFwiSm9icyBcIiArXG4gICAgXCJJbnB1dFZhbHVlIFwiICtcbiAgICBcIkxvb2tVcFJlZmVyZW5jZSBcIiArXG4gICAgXCJMb29rVXBSZXF1aXNpdGVOYW1lcyBcIiArXG4gICAgXCJMb29rVXBTZWFyY2ggXCIgK1xuICAgIFwiT2JqZWN0IFwiICtcbiAgICBcIlBhcmVudENvbXBvbmVudCBcIiArXG4gICAgXCJQcm9jZXNzZXMgXCIgK1xuICAgIFwiUmVmZXJlbmNlcyBcIiArXG4gICAgXCJSZXF1aXNpdGUgXCIgK1xuICAgIFwiUmVwb3J0TmFtZSBcIiArXG4gICAgXCJSZXBvcnRzIFwiICtcbiAgICBcIlJlc3VsdCBcIiArXG4gICAgXCJTY3JpcHRzIFwiICtcbiAgICBcIlNlYXJjaGVzIFwiICtcbiAgICBcIlNlbGVjdGVkQXR0YWNobWVudHMgXCIgK1xuICAgIFwiU2VsZWN0ZWRJdGVtcyBcIiArXG4gICAgXCJTZWxlY3RNb2RlIFwiICtcbiAgICBcIlNlbmRlciBcIiArXG4gICAgXCJTZXJ2ZXJFdmVudHMgXCIgK1xuICAgIFwiU2VydmljZUZhY3RvcnkgXCIgK1xuICAgIFwiU2hpZnRTdGF0ZSBcIiArXG4gICAgXCJTdWJUYXNrIFwiICtcbiAgICBcIlN5c3RlbURpYWxvZ3MgXCIgK1xuICAgIFwiVGFza3MgXCIgK1xuICAgIFwiV2l6YXJkIFwiICtcbiAgICBcIldpemFyZHMgXCIgK1xuICAgIFwiV29yayBcIiArXG4gICAgXCLQktGL0LfQvtCy0KHQv9C+0YHQvtCxIFwiICtcbiAgICBcItCY0LzRj9Ce0YLRh9C10YLQsCBcIiArXG4gICAgXCLQoNC10LrQstCX0L3QsNGHIFwiO1xuXG4gIC8vINCY0L3RgtC10YDRhNC10LnRgdGLID09PiB0eXBlXG4gIHZhciBpbnRlcmZhY2VzID1cbiAgICBcIklBcHBsaWNhdGlvbiBcIiArXG4gICAgXCJJQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIklBY2NvdW50UmVwb3NpdG9yeSBcIiArXG4gICAgXCJJQWNjb3VudFNlbGVjdGlvblJlc3RyaWN0aW9ucyBcIiArXG4gICAgXCJJQWN0aW9uIFwiICtcbiAgICBcIklBY3Rpb25MaXN0IFwiICtcbiAgICBcIklBZG1pbmlzdHJhdGlvbkhpc3RvcnlEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJQW5jaG9ycyBcIiArXG4gICAgXCJJQXBwbGljYXRpb24gXCIgK1xuICAgIFwiSUFyY2hpdmVJbmZvIFwiICtcbiAgICBcIklBdHRhY2htZW50IFwiICtcbiAgICBcIklBdHRhY2htZW50TGlzdCBcIiArXG4gICAgXCJJQ2hlY2tMaXN0Qm94IFwiICtcbiAgICBcIklDaGVja1BvaW50ZWRMaXN0IFwiICtcbiAgICBcIklDb2x1bW4gXCIgK1xuICAgIFwiSUNvbXBvbmVudCBcIiArXG4gICAgXCJJQ29tcG9uZW50RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSUNvbXBvbmVudFRva2VuIFwiICtcbiAgICBcIklDb21wb25lbnRUb2tlbkZhY3RvcnkgXCIgK1xuICAgIFwiSUNvbXBvbmVudFRva2VuSW5mbyBcIiArXG4gICAgXCJJQ29tcFJlY29yZEluZm8gXCIgK1xuICAgIFwiSUNvbm5lY3Rpb24gXCIgK1xuICAgIFwiSUNvbnRlbnRzIFwiICtcbiAgICBcIklDb250cm9sIFwiICtcbiAgICBcIklDb250cm9sSm9iIFwiICtcbiAgICBcIklDb250cm9sSm9iSW5mbyBcIiArXG4gICAgXCJJQ29udHJvbExpc3QgXCIgK1xuICAgIFwiSUNyeXB0byBcIiArXG4gICAgXCJJQ3J5cHRvMiBcIiArXG4gICAgXCJJQ3VzdG9tSm9iIFwiICtcbiAgICBcIklDdXN0b21Kb2JJbmZvIFwiICtcbiAgICBcIklDdXN0b21MaXN0Qm94IFwiICtcbiAgICBcIklDdXN0b21PYmplY3RXaXphcmRTdGVwIFwiICtcbiAgICBcIklDdXN0b21Xb3JrIFwiICtcbiAgICBcIklDdXN0b21Xb3JrSW5mbyBcIiArXG4gICAgXCJJRGF0YVNldCBcIiArXG4gICAgXCJJRGF0YVNldEFjY2Vzc0luZm8gXCIgK1xuICAgIFwiSURhdGFTaWduZXIgXCIgK1xuICAgIFwiSURhdGVDcml0ZXJpb24gXCIgK1xuICAgIFwiSURhdGVSZXF1aXNpdGUgXCIgK1xuICAgIFwiSURhdGVSZXF1aXNpdGVEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJRGF0ZVZhbHVlIFwiICtcbiAgICBcIklEZWFBY2Nlc3NSaWdodHMgXCIgK1xuICAgIFwiSURlYU9iamVjdEluZm8gXCIgK1xuICAgIFwiSURldmVsb3BtZW50Q29tcG9uZW50TG9jayBcIiArXG4gICAgXCJJRGlhbG9nIFwiICtcbiAgICBcIklEaWFsb2dGYWN0b3J5IFwiICtcbiAgICBcIklEaWFsb2dQaWNrUmVxdWlzaXRlSXRlbXMgXCIgK1xuICAgIFwiSURpYWxvZ3NGYWN0b3J5IFwiICtcbiAgICBcIklESUNTRmFjdG9yeSBcIiArXG4gICAgXCJJRG9jUmVxdWlzaXRlIFwiICtcbiAgICBcIklEb2N1bWVudEluZm8gXCIgK1xuICAgIFwiSUR1YWxMaXN0RGlhbG9nIFwiICtcbiAgICBcIklFQ2VydGlmaWNhdGUgXCIgK1xuICAgIFwiSUVDZXJ0aWZpY2F0ZUluZm8gXCIgK1xuICAgIFwiSUVDZXJ0aWZpY2F0ZXMgXCIgK1xuICAgIFwiSUVkaXRDb250cm9sIFwiICtcbiAgICBcIklFZGl0b3JGb3JtIFwiICtcbiAgICBcIklFZG1zRXhwbG9yZXIgXCIgK1xuICAgIFwiSUVkbXNPYmplY3QgXCIgK1xuICAgIFwiSUVkbXNPYmplY3REZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJRWRtc09iamVjdEZhY3RvcnkgXCIgK1xuICAgIFwiSUVkbXNPYmplY3RJbmZvIFwiICtcbiAgICBcIklFRG9jdW1lbnQgXCIgK1xuICAgIFwiSUVEb2N1bWVudEFjY2Vzc1JpZ2h0cyBcIiArXG4gICAgXCJJRURvY3VtZW50RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSUVEb2N1bWVudEVkaXRvciBcIiArXG4gICAgXCJJRURvY3VtZW50RmFjdG9yeSBcIiArXG4gICAgXCJJRURvY3VtZW50SW5mbyBcIiArXG4gICAgXCJJRURvY3VtZW50U3RvcmFnZSBcIiArXG4gICAgXCJJRURvY3VtZW50VmVyc2lvbiBcIiArXG4gICAgXCJJRURvY3VtZW50VmVyc2lvbkxpc3REaWFsb2cgXCIgK1xuICAgIFwiSUVEb2N1bWVudFZlcnNpb25Tb3VyY2UgXCIgK1xuICAgIFwiSUVEb2N1bWVudFdpemFyZFN0ZXAgXCIgK1xuICAgIFwiSUVEb2NWZXJTaWduYXR1cmUgXCIgK1xuICAgIFwiSUVEb2NWZXJzaW9uU3RhdGUgXCIgK1xuICAgIFwiSUVuYWJsZWRNb2RlIFwiICtcbiAgICBcIklFbmNvZGVQcm92aWRlciBcIiArXG4gICAgXCJJRW5jcnlwdGVyIFwiICtcbiAgICBcIklFdmVudCBcIiArXG4gICAgXCJJRXZlbnRMaXN0IFwiICtcbiAgICBcIklFeGNlcHRpb24gXCIgK1xuICAgIFwiSUV4dGVybmFsRXZlbnRzIFwiICtcbiAgICBcIklFeHRlcm5hbEhhbmRsZXIgXCIgK1xuICAgIFwiSUZhY3RvcnkgXCIgK1xuICAgIFwiSUZpZWxkIFwiICtcbiAgICBcIklGaWxlRGlhbG9nIFwiICtcbiAgICBcIklGb2xkZXIgXCIgK1xuICAgIFwiSUZvbGRlckRlc2NyaXB0aW9uIFwiICtcbiAgICBcIklGb2xkZXJEaWFsb2cgXCIgK1xuICAgIFwiSUZvbGRlckZhY3RvcnkgXCIgK1xuICAgIFwiSUZvbGRlckluZm8gXCIgK1xuICAgIFwiSUZvckVhY2ggXCIgK1xuICAgIFwiSUZvcm0gXCIgK1xuICAgIFwiSUZvcm1UaXRsZSBcIiArXG4gICAgXCJJRm9ybVdpemFyZFN0ZXAgXCIgK1xuICAgIFwiSUdsb2JhbElERmFjdG9yeSBcIiArXG4gICAgXCJJR2xvYmFsSURJbmZvIFwiICtcbiAgICBcIklHcmlkIFwiICtcbiAgICBcIklIYXNoZXIgXCIgK1xuICAgIFwiSUhpc3RvcnlEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJSHlwZXJMaW5rQ29udHJvbCBcIiArXG4gICAgXCJJSW1hZ2VCdXR0b24gXCIgK1xuICAgIFwiSUltYWdlQ29udHJvbCBcIiArXG4gICAgXCJJSW5uZXJQYW5lbCBcIiArXG4gICAgXCJJSW5wbGFjZUhpbnQgXCIgK1xuICAgIFwiSUludGVnZXJDcml0ZXJpb24gXCIgK1xuICAgIFwiSUludGVnZXJMaXN0IFwiICtcbiAgICBcIklJbnRlZ2VyUmVxdWlzaXRlIFwiICtcbiAgICBcIklJbnRlZ2VyVmFsdWUgXCIgK1xuICAgIFwiSUlTQkxFZGl0b3JGb3JtIFwiICtcbiAgICBcIklKb2IgXCIgK1xuICAgIFwiSUpvYkRlc2NyaXB0aW9uIFwiICtcbiAgICBcIklKb2JGYWN0b3J5IFwiICtcbiAgICBcIklKb2JGb3JtIFwiICtcbiAgICBcIklKb2JJbmZvIFwiICtcbiAgICBcIklMYWJlbENvbnRyb2wgXCIgK1xuICAgIFwiSUxhcmdlSW50ZWdlckNyaXRlcmlvbiBcIiArXG4gICAgXCJJTGFyZ2VJbnRlZ2VyUmVxdWlzaXRlIFwiICtcbiAgICBcIklMYXJnZUludGVnZXJWYWx1ZSBcIiArXG4gICAgXCJJTGljZW5zZUluZm8gXCIgK1xuICAgIFwiSUxpZmVDeWNsZVN0YWdlIFwiICtcbiAgICBcIklMaXN0IFwiICtcbiAgICBcIklMaXN0Qm94IFwiICtcbiAgICBcIklMb2NhbElESW5mbyBcIiArXG4gICAgXCJJTG9jYWxpemF0aW9uIFwiICtcbiAgICBcIklMb2NrIFwiICtcbiAgICBcIklNZW1vcnlEYXRhU2V0IFwiICtcbiAgICBcIklNZXNzYWdpbmdGYWN0b3J5IFwiICtcbiAgICBcIklNZXRhZGF0YVJlcG9zaXRvcnkgXCIgK1xuICAgIFwiSU5vdGljZSBcIiArXG4gICAgXCJJTm90aWNlSW5mbyBcIiArXG4gICAgXCJJTnVtZXJpY0NyaXRlcmlvbiBcIiArXG4gICAgXCJJTnVtZXJpY1JlcXVpc2l0ZSBcIiArXG4gICAgXCJJTnVtZXJpY1ZhbHVlIFwiICtcbiAgICBcIklPYmplY3QgXCIgK1xuICAgIFwiSU9iamVjdERlc2NyaXB0aW9uIFwiICtcbiAgICBcIklPYmplY3RJbXBvcnRlciBcIiArXG4gICAgXCJJT2JqZWN0SW5mbyBcIiArXG4gICAgXCJJT2JzZXJ2ZXIgXCIgK1xuICAgIFwiSVBhbmVsR3JvdXAgXCIgK1xuICAgIFwiSVBpY2tDcml0ZXJpb24gXCIgK1xuICAgIFwiSVBpY2tQcm9wZXJ0eSBcIiArXG4gICAgXCJJUGlja1JlcXVpc2l0ZSBcIiArXG4gICAgXCJJUGlja1JlcXVpc2l0ZURlc2NyaXB0aW9uIFwiICtcbiAgICBcIklQaWNrUmVxdWlzaXRlSXRlbSBcIiArXG4gICAgXCJJUGlja1JlcXVpc2l0ZUl0ZW1zIFwiICtcbiAgICBcIklQaWNrVmFsdWUgXCIgK1xuICAgIFwiSVByaXZpbGVnZSBcIiArXG4gICAgXCJJUHJpdmlsZWdlTGlzdCBcIiArXG4gICAgXCJJUHJvY2VzcyBcIiArXG4gICAgXCJJUHJvY2Vzc0ZhY3RvcnkgXCIgK1xuICAgIFwiSVByb2Nlc3NNZXNzYWdlIFwiICtcbiAgICBcIklQcm9ncmVzcyBcIiArXG4gICAgXCJJUHJvcGVydHkgXCIgK1xuICAgIFwiSVByb3BlcnR5Q2hhbmdlRXZlbnQgXCIgK1xuICAgIFwiSVF1ZXJ5IFwiICtcbiAgICBcIklSZWZlcmVuY2UgXCIgK1xuICAgIFwiSVJlZmVyZW5jZUNyaXRlcmlvbiBcIiArXG4gICAgXCJJUmVmZXJlbmNlRW5hYmxlZE1vZGUgXCIgK1xuICAgIFwiSVJlZmVyZW5jZUZhY3RvcnkgXCIgK1xuICAgIFwiSVJlZmVyZW5jZUhpc3RvcnlEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJUmVmZXJlbmNlSW5mbyBcIiArXG4gICAgXCJJUmVmZXJlbmNlUmVjb3JkQ2FyZFdpemFyZFN0ZXAgXCIgK1xuICAgIFwiSVJlZmVyZW5jZVJlcXVpc2l0ZURlc2NyaXB0aW9uIFwiICtcbiAgICBcIklSZWZlcmVuY2VzRmFjdG9yeSBcIiArXG4gICAgXCJJUmVmZXJlbmNlVmFsdWUgXCIgK1xuICAgIFwiSVJlZlJlcXVpc2l0ZSBcIiArXG4gICAgXCJJUmVwb3J0IFwiICtcbiAgICBcIklSZXBvcnRGYWN0b3J5IFwiICtcbiAgICBcIklSZXF1aXNpdGUgXCIgK1xuICAgIFwiSVJlcXVpc2l0ZURlc2NyaXB0aW9uIFwiICtcbiAgICBcIklSZXF1aXNpdGVEZXNjcmlwdGlvbkxpc3QgXCIgK1xuICAgIFwiSVJlcXVpc2l0ZUZhY3RvcnkgXCIgK1xuICAgIFwiSVJpY2hFZGl0IFwiICtcbiAgICBcIklSb3V0ZVN0ZXAgXCIgK1xuICAgIFwiSVJ1bGUgXCIgK1xuICAgIFwiSVJ1bGVMaXN0IFwiICtcbiAgICBcIklTY2hlbWVCbG9jayBcIiArXG4gICAgXCJJU2NyaXB0IFwiICtcbiAgICBcIklTY3JpcHRGYWN0b3J5IFwiICtcbiAgICBcIklTZWFyY2hDcml0ZXJpYSBcIiArXG4gICAgXCJJU2VhcmNoQ3JpdGVyaW9uIFwiICtcbiAgICBcIklTZWFyY2hEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJU2VhcmNoRmFjdG9yeSBcIiArXG4gICAgXCJJU2VhcmNoRm9sZGVySW5mbyBcIiArXG4gICAgXCJJU2VhcmNoRm9yT2JqZWN0RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVNlYXJjaFJlc3VsdFJlc3RyaWN0aW9ucyBcIiArXG4gICAgXCJJU2VjdXJlZENvbnRleHQgXCIgK1xuICAgIFwiSVNlbGVjdERpYWxvZyBcIiArXG4gICAgXCJJU2VydmVyRXZlbnQgXCIgK1xuICAgIFwiSVNlcnZlckV2ZW50RmFjdG9yeSBcIiArXG4gICAgXCJJU2VydmljZURpYWxvZyBcIiArXG4gICAgXCJJU2VydmljZUZhY3RvcnkgXCIgK1xuICAgIFwiSVNpZ25hdHVyZSBcIiArXG4gICAgXCJJU2lnblByb3ZpZGVyIFwiICtcbiAgICBcIklTaWduUHJvdmlkZXIyIFwiICtcbiAgICBcIklTaWduUHJvdmlkZXIzIFwiICtcbiAgICBcIklTaW1wbGVDcml0ZXJpb24gXCIgK1xuICAgIFwiSVN0cmluZ0NyaXRlcmlvbiBcIiArXG4gICAgXCJJU3RyaW5nTGlzdCBcIiArXG4gICAgXCJJU3RyaW5nUmVxdWlzaXRlIFwiICtcbiAgICBcIklTdHJpbmdSZXF1aXNpdGVEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJU3RyaW5nVmFsdWUgXCIgK1xuICAgIFwiSVN5c3RlbURpYWxvZ3NGYWN0b3J5IFwiICtcbiAgICBcIklTeXN0ZW1JbmZvIFwiICtcbiAgICBcIklUYWJTaGVldCBcIiArXG4gICAgXCJJVGFzayBcIiArXG4gICAgXCJJVGFza0Fib3J0UmVhc29uSW5mbyBcIiArXG4gICAgXCJJVGFza0NhcmRXaXphcmRTdGVwIFwiICtcbiAgICBcIklUYXNrRGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVRhc2tGYWN0b3J5IFwiICtcbiAgICBcIklUYXNrSW5mbyBcIiArXG4gICAgXCJJVGFza1JvdXRlIFwiICtcbiAgICBcIklUZXh0Q3JpdGVyaW9uIFwiICtcbiAgICBcIklUZXh0UmVxdWlzaXRlIFwiICtcbiAgICBcIklUZXh0VmFsdWUgXCIgK1xuICAgIFwiSVRyZWVMaXN0U2VsZWN0RGlhbG9nIFwiICtcbiAgICBcIklVc2VyIFwiICtcbiAgICBcIklVc2VyTGlzdCBcIiArXG4gICAgXCJJVmFsdWUgXCIgK1xuICAgIFwiSVZpZXcgXCIgK1xuICAgIFwiSVdlYkJyb3dzZXJDb250cm9sIFwiICtcbiAgICBcIklXaXphcmQgXCIgK1xuICAgIFwiSVdpemFyZEFjdGlvbiBcIiArXG4gICAgXCJJV2l6YXJkRmFjdG9yeSBcIiArXG4gICAgXCJJV2l6YXJkRm9ybUVsZW1lbnQgXCIgK1xuICAgIFwiSVdpemFyZFBhcmFtIFwiICtcbiAgICBcIklXaXphcmRQaWNrUGFyYW0gXCIgK1xuICAgIFwiSVdpemFyZFJlZmVyZW5jZVBhcmFtIFwiICtcbiAgICBcIklXaXphcmRTdGVwIFwiICtcbiAgICBcIklXb3JrQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIklXb3JrRGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVdvcmtmbG93QXNrYWJsZVBhcmFtIFwiICtcbiAgICBcIklXb3JrZmxvd0Fza2FibGVQYXJhbXMgXCIgK1xuICAgIFwiSVdvcmtmbG93QmxvY2sgXCIgK1xuICAgIFwiSVdvcmtmbG93QmxvY2tSZXN1bHQgXCIgK1xuICAgIFwiSVdvcmtmbG93RW5hYmxlZE1vZGUgXCIgK1xuICAgIFwiSVdvcmtmbG93UGFyYW0gXCIgK1xuICAgIFwiSVdvcmtmbG93UGlja1BhcmFtIFwiICtcbiAgICBcIklXb3JrZmxvd1JlZmVyZW5jZVBhcmFtIFwiICtcbiAgICBcIklXb3JrU3RhdGUgXCIgK1xuICAgIFwiSVdvcmtUcmVlQ3VzdG9tTm9kZSBcIiArXG4gICAgXCJJV29ya1RyZWVKb2JOb2RlIFwiICtcbiAgICBcIklXb3JrVHJlZVRhc2tOb2RlIFwiICtcbiAgICBcIklYTUxFZGl0b3JGb3JtIFwiICtcbiAgICBcIlNCQ3J5cHRvIFwiO1xuXG4gIC8vIGJ1aWx0X2luIDog0LLRgdGC0YDQvtC10L3QvdGL0LUg0LjQu9C4INCx0LjQsdC70LjQvtGC0LXRh9C90YvQtSDQvtCx0YrQtdC60YLRiyAo0LrQvtC90YHRgtCw0L3RgtGLLCDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8pXG4gIHZhciBCVUlMVElOID0gQ09OU1RBTlRTICsgRU5VTVM7XG5cbiAgLy8gY2xhc3M6INCy0YHRgtGA0L7QtdC90L3Ri9C1INC90LDQsdC+0YDRiyDQt9C90LDRh9C10L3QuNC5LCDRgdC40YHRgtC10LzQvdGL0LUg0L7QsdGK0LXQutGC0YssINGE0LDQsdGA0LjQutC4XG4gIHZhciBDTEFTUyA9IHByZWRlZmluZWRfdmFyaWFibGVzO1xuXG4gIC8vIGxpdGVyYWwgOiDQv9GA0LjQvNC40YLQuNCy0L3Ri9C1INGC0LjQv9GLXG4gIHZhciBMSVRFUkFMID0gXCJudWxsIHRydWUgZmFsc2UgbmlsIFwiO1xuXG4gIC8vIG51bWJlciA6INGH0LjRgdC70LBcbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm51bWJlclwiLFxuICAgIGJlZ2luOiBobGpzLk5VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG5cbiAgLy8gc3RyaW5nIDog0YHRgtGA0L7QutC4XG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogXCJzdHJpbmdcIixcbiAgICB2YXJpYW50czogW3sgYmVnaW46ICdcIicsIGVuZDogJ1wiJyB9LCB7IGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIiB9XSxcbiAgfTtcblxuICAvLyDQotC+0LrQtdC90YtcbiAgdmFyIERPQ1RBR1MgPSB7XG4gICAgY2xhc3NOYW1lOiBcImRvY3RhZ1wiLFxuICAgIGJlZ2luOiBcIlxcXFxiKD86VE9ET3xET05FfEJFR0lOfEVORHxTVFVCfENIR3xGSVhNRXxOT1RFfEJVR3xYWFgpXFxcXGJcIixcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG5cbiAgLy8g0J7QtNC90L7RgdGC0YDQvtGH0L3Ri9C5INC60L7QvNC80LXQvdGC0LDRgNC40LlcbiAgdmFyIElTQkxfTElORV9DT01NRU5UX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiBcImNvbW1lbnRcIixcbiAgICBiZWdpbjogXCIvL1wiLFxuICAgIGVuZDogXCIkXCIsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5QSFJBU0FMX1dPUkRTX01PREUsIERPQ1RBR1NdLFxuICB9O1xuXG4gIC8vINCc0L3QvtCz0L7RgdGC0YDQvtGH0L3Ri9C5INC60L7QvNC80LXQvdGC0LDRgNC40LlcbiAgdmFyIElTQkxfQkxPQ0tfQ09NTUVOVF9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogXCJjb21tZW50XCIsXG4gICAgYmVnaW46IFwiL1xcXFwqXCIsXG4gICAgZW5kOiBcIlxcXFwqL1wiLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW2hsanMuUEhSQVNBTF9XT1JEU19NT0RFLCBET0NUQUdTXSxcbiAgfTtcblxuICAvLyBjb21tZW50IDog0LrQvtC80LzQtdC90YLQsNGA0LjQuFxuICB2YXIgQ09NTUVOVFMgPSB7XG4gICAgdmFyaWFudHM6IFtJU0JMX0xJTkVfQ09NTUVOVF9NT0RFLCBJU0JMX0JMT0NLX0NPTU1FTlRfTU9ERV0sXG4gIH07XG5cbiAgLy8ga2V5d29yZHMgOiDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LBcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6IEtFWVdPUkQsXG4gICAgYnVpbHRfaW46IEJVSUxUSU4sXG4gICAgY2xhc3M6IENMQVNTLFxuICAgIGxpdGVyYWw6IExJVEVSQUwsXG4gIH07XG5cbiAgLy8gbWV0aG9kcyA6INC80LXRgtC+0LTRi1xuICB2YXIgTUVUSE9EUyA9IHtcbiAgICBiZWdpbjogXCJcXFxcLlxcXFxzKlwiICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG5cbiAgLy8gdHlwZSA6INCy0YHRgtGA0L7QtdC90L3Ri9C1INGC0LjQv9GLXG4gIHZhciBUWVBFUyA9IHtcbiAgICBjbGFzc05hbWU6IFwidHlwZVwiLFxuICAgIGJlZ2luOiBcIjpbIFxcXFx0XSooXCIgKyBpbnRlcmZhY2VzLnRyaW0oKS5yZXBsYWNlKC9cXHMvZywgXCJ8XCIpICsgXCIpXCIsXG4gICAgZW5kOiBcIlsgXFxcXHRdKj1cIixcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICB9O1xuXG4gIC8vIHZhcmlhYmxlcyA6INC/0LXRgNC10LzQtdC90L3Ri9C1XG4gIHZhciBWQVJJQUJMRVMgPSB7XG4gICAgY2xhc3NOYW1lOiBcInZhcmlhYmxlXCIsXG4gICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgYmVnaW46IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbVFlQRVMsIE1FVEhPRFNdLFxuICB9O1xuXG4gIC8vINCY0LzQtdC90LAg0YTRg9C90LrRhtC40LlcbiAgdmFyIEZVTkNUSU9OX1RJVExFID0gRlVOQ1RJT05fTkFNRV9JREVOVF9SRSArIFwiXFxcXChcIjtcblxuICB2YXIgVElUTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6IFwidGl0bGVcIixcbiAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBidWlsdF9pbjogc3lzdGVtX2Z1bmN0aW9ucyxcbiAgICB9LFxuICAgIGJlZ2luOiBGVU5DVElPTl9USVRMRSxcbiAgICBlbmQ6IFwiXFxcXChcIixcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICB9O1xuXG4gIC8vIGZ1bmN0aW9uIDog0YTRg9C90LrRhtC40LhcbiAgdmFyIEZVTkNUSU9OUyA9IHtcbiAgICBjbGFzc05hbWU6IFwiZnVuY3Rpb25cIixcbiAgICBiZWdpbjogRlVOQ1RJT05fVElUTEUsXG4gICAgZW5kOiBcIlxcXFwpJFwiLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IFwiW1xcXFxbXFxcXF1cXFxcfFxcXFwkXFxcXD8lLH4jQF1cIixcbiAgICBjb250YWluczogW1RJVExFX01PREUsIE1FVEhPRFMsIFZBUklBQkxFUywgU1RSSU5HUywgTlVNQkVSUywgQ09NTUVOVFNdLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogW1wiaXNibFwiXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IFwiXFxcXCR8XFxcXD98JXwsfDskfH58I3xAfDwvXCIsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEZVTkNUSU9OUyxcbiAgICAgIFRZUEVTLFxuICAgICAgTUVUSE9EUyxcbiAgICAgIFZBUklBQkxFUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBOVU1CRVJTLFxuICAgICAgQ09NTUVOVFMsXG4gICAgXSxcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBKQVZBX0lERU5UX1JFID0gJ1tcXHUwMEMwLVxcdTAyQjhhLXpBLVpfJF1bXFx1MDBDMC1cXHUwMkI4YS16QS1aXyQwLTldKic7XG4gIHZhciBHRU5FUklDX0lERU5UX1JFID0gSkFWQV9JREVOVF9SRSArICcoPCcgKyBKQVZBX0lERU5UX1JFICsgJyhcXFxccyosXFxcXHMqJyArIEpBVkFfSURFTlRfUkUgKyAnKSo+KT8nO1xuICB2YXIgS0VZV09SRFMgPVxuICAgICdmYWxzZSBzeW5jaHJvbml6ZWQgaW50IGFic3RyYWN0IGZsb2F0IHByaXZhdGUgY2hhciBib29sZWFuIHZhciBzdGF0aWMgbnVsbCBpZiBjb25zdCAnICtcbiAgICAnZm9yIHRydWUgd2hpbGUgbG9uZyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHZvaWQgJyArXG4gICAgJ2VudW0gZWxzZSBicmVhayB0cmFuc2llbnQgY2F0Y2ggaW5zdGFuY2VvZiBieXRlIHN1cGVyIHZvbGF0aWxlIGNhc2UgYXNzZXJ0IHNob3J0ICcgK1xuICAgICdwYWNrYWdlIGRlZmF1bHQgZG91YmxlIHB1YmxpYyB0cnkgdGhpcyBzd2l0Y2ggY29udGludWUgdGhyb3dzIHByb3RlY3RlZCBwdWJsaWMgcHJpdmF0ZSAnICtcbiAgICAnbW9kdWxlIHJlcXVpcmVzIGV4cG9ydHMgZG8nO1xuXG4gIC8vIGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvdGVjaG5vdGVzL2d1aWRlcy9sYW5ndWFnZS91bmRlcnNjb3Jlcy1saXRlcmFscy5odG1sXG4gIHZhciBKQVZBX05VTUJFUl9SRSA9ICdcXFxcYicgK1xuICAgICcoJyArXG4gICAgICAnMFtiQl0oWzAxXStbMDFfXStbMDFdK3xbMDFdKyknICsgLy8gMGIuLi5cbiAgICAgICd8JyArXG4gICAgICAnMFt4WF0oW2EtZkEtRjAtOV0rW2EtZkEtRjAtOV9dK1thLWZBLUYwLTldK3xbYS1mQS1GMC05XSspJyArIC8vIDB4Li4uXG4gICAgICAnfCcgK1xuICAgICAgJygnICtcbiAgICAgICAgJyhbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKShcXFxcLihbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKSk/JyArXG4gICAgICAgICd8JyArXG4gICAgICAgICdcXFxcLihbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKScgK1xuICAgICAgJyknICtcbiAgICAgICcoW2VFXVstK10/XFxcXGQrKT8nICsgLy8gb2N0YWwsIGRlY2ltYWwsIGZsb2F0XG4gICAgJyknICtcbiAgICAnW2xMZkZdPyc7XG4gIHZhciBKQVZBX05VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IEpBVkFfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydqc3AnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLzxcXC98Iy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2UgOiAwLFxuICAgICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAvLyBlYXQgdXAgQCdzIGluIGVtYWlscyB0byBwcmV2ZW50IHRoZW0gdG8gYmUgcmVjb2duaXplZCBhcyBkb2N0YWdzXG4gICAgICAgICAgICAgIGJlZ2luOiAvXFx3K0AvLCByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbiA6ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6IC9bezs9XS8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgaWxsZWdhbDogL1s6XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIEV4cHJlc3Npb24ga2V5d29yZHMgcHJldmVudCAna2V5d29yZCBOYW1lKC4uLiknIGZyb20gYmVpbmdcbiAgICAgICAgLy8gcmVjb2duaXplZCBhcyBhIGZ1bmN0aW9uIGRlZmluaXRpb25cbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25ldyB0aHJvdyByZXR1cm4gZWxzZScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJygnICsgR0VORVJJQ19JREVOVF9SRSArICdcXFxccyspKycgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvW3s7PV0vLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIEpBVkFfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1tBLVphLXokX11bMC05QS1aYS16JF9dKic7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2luIG9mIGlmIGZvciB3aGlsZSBmaW5hbGx5IHZhciBuZXcgZnVuY3Rpb24gZG8gcmV0dXJuIHZvaWQgZWxzZSBicmVhayBjYXRjaCAnICtcbiAgICAgICdpbnN0YW5jZW9mIHdpdGggdGhyb3cgY2FzZSBkZWZhdWx0IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlICcgK1xuICAgICAgJ2xldCB5aWVsZCBjb25zdCBleHBvcnQgc3VwZXIgZGVidWdnZXIgYXMgYXN5bmMgYXdhaXQgc3RhdGljICcgK1xuICAgICAgLy8gRUNNQVNjcmlwdCA2IG1vZHVsZXMgaW1wb3J0XG4gICAgICAnaW1wb3J0IGZyb20gYXMnXG4gICAgLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBudWxsIHVuZGVmaW5lZCBOYU4gSW5maW5pdHknLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2V2YWwgaXNGaW5pdGUgaXNOYU4gcGFyc2VGbG9hdCBwYXJzZUludCBkZWNvZGVVUkkgZGVjb2RlVVJJQ29tcG9uZW50ICcgK1xuICAgICAgJ2VuY29kZVVSSSBlbmNvZGVVUklDb21wb25lbnQgZXNjYXBlIHVuZXNjYXBlIE9iamVjdCBGdW5jdGlvbiBCb29sZWFuIEVycm9yICcgK1xuICAgICAgJ0V2YWxFcnJvciBJbnRlcm5hbEVycm9yIFJhbmdlRXJyb3IgUmVmZXJlbmNlRXJyb3IgU3RvcEl0ZXJhdGlvbiBTeW50YXhFcnJvciAnICtcbiAgICAgICdUeXBlRXJyb3IgVVJJRXJyb3IgTnVtYmVyIE1hdGggRGF0ZSBTdHJpbmcgUmVnRXhwIEFycmF5IEZsb2F0MzJBcnJheSAnICtcbiAgICAgICdGbG9hdDY0QXJyYXkgSW50MTZBcnJheSBJbnQzMkFycmF5IEludDhBcnJheSBVaW50MTZBcnJheSBVaW50MzJBcnJheSAnICtcbiAgICAgICdVaW50OEFycmF5IFVpbnQ4Q2xhbXBlZEFycmF5IEFycmF5QnVmZmVyIERhdGFWaWV3IEpTT04gSW50bCBhcmd1bWVudHMgcmVxdWlyZSAnICtcbiAgICAgICdtb2R1bGUgY29uc29sZSB3aW5kb3cgZG9jdW1lbnQgU3ltYm9sIFNldCBNYXAgV2Vha1NldCBXZWFrTWFwIFByb3h5IFJlZmxlY3QgJyArXG4gICAgICAnUHJvbWlzZSdcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtiQl1bMDFdKyluPycgfSxcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwW29PXVswLTddKyluPycgfSxcbiAgICAgIHsgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgKyAnbj8nIH1cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ1xcXFx9JyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtdICAvLyBkZWZpbmVkIGxhdGVyXG4gIH07XG4gIHZhciBIVE1MX1RFTVBMQVRFID0ge1xuICAgIGJlZ2luOiAnaHRtbGAnLCBlbmQ6ICcnLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnYCcsIHJldHVybkVuZDogZmFsc2UsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgIFNVQlNUXG4gICAgICBdLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIH1cbiAgfTtcbiAgdmFyIENTU19URU1QTEFURSA9IHtcbiAgICBiZWdpbjogJ2Nzc2AnLCBlbmQ6ICcnLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnYCcsIHJldHVybkVuZDogZmFsc2UsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgIFNVQlNUXG4gICAgICBdLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICdjc3MnLFxuICAgIH1cbiAgfTtcbiAgdmFyIFRFTVBMQVRFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBTVUJTVFxuICAgIF1cbiAgfTtcbiAgU1VCU1QuY29udGFpbnMgPSBbXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgSFRNTF9URU1QTEFURSxcbiAgICBDU1NfVEVNUExBVEUsXG4gICAgVEVNUExBVEVfU1RSSU5HLFxuICAgIE5VTUJFUixcbiAgICBobGpzLlJFR0VYUF9NT0RFXG4gIF07XG4gIHZhciBQQVJBTVNfQ09OVEFJTlMgPSBTVUJTVC5jb250YWlucy5jb25jYXQoW1xuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFXG4gIF0pO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydqcycsICdqc3gnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSAoc3RyaWN0fGFzbSlbJ1wiXS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL14jIS8sIGVuZDogLyQvXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIEhUTUxfVEVNUExBVEUsXG4gICAgICBDU1NfVEVNUExBVEUsXG4gICAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTlVNQkVSLFxuICAgICAgeyAvLyBvYmplY3QgYXR0ciBjb250YWluZXJcbiAgICAgICAgYmVnaW46IC9beyxcXG5dXFxzKi8sIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogSURFTlRfUkUgKyAnXFxcXHMqOicsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFt7Y2xhc3NOYW1lOiAnYXR0cicsIGJlZ2luOiBJREVOVF9SRSwgcmVsZXZhbmNlOiAwfV1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IC8vIFwidmFsdWVcIiBjb250YWluZXJcbiAgICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfFxcXFxiKGNhc2V8cmV0dXJufHRocm93KVxcXFxiKVxcXFxzKicsXG4gICAgICAgIGtleXdvcmRzOiAncmV0dXJuIHRocm93IGNhc2UnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuUkVHRVhQX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgYmVnaW46ICcoXFxcXCguKj9cXFxcKXwnICsgSURFTlRfUkUgKyAnKVxcXFxzKj0+JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccyo9PicsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogSURFTlRfUkVcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoXFxzKlxcKS8sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogUEFSQU1TX0NPTlRBSU5TXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICcnLFxuICAgICAgICAgICAgYmVnaW46IC9cXHMvLFxuICAgICAgICAgICAgZW5kOiAvXFxzKi8sXG4gICAgICAgICAgICBza2lwOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyAvLyBFNFggLyBKU1hcbiAgICAgICAgICAgIGJlZ2luOiAvPC8sIGVuZDogLyhcXC9bQS1aYS16MC05XFxcXC5fOi1dK3xbQS1aYS16MC05XFxcXC5fOi1dK1xcLyk+LyxcbiAgICAgICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHsgYmVnaW46IC88W0EtWmEtejAtOVxcXFwuXzotXStcXHMqXFwvPi8sIHNraXA6IHRydWUgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAvPFtBLVphLXowLTlcXFxcLl86LV0rLywgZW5kOiAvKFxcL1tBLVphLXowLTlcXFxcLl86LV0rfFtBLVphLXowLTlcXFxcLl86LV0rXFwvKT4vLCBza2lwOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICB7IGJlZ2luOiAvPFtBLVphLXowLTlcXFxcLl86LV0rXFxzKlxcLz4vLCBza2lwOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAnc2VsZidcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9cXHsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogSURFTlRfUkV9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBQQVJBTVNfQ09OVEFJTlNcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC9cXFt8JS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwkWyguXS8gLy8gcmVsZXZhbmNlIGJvb3N0ZXIgZm9yIGEgcGF0dGVybiBjb21tb24gdG8gSlMgbGliczogYCQoc29tZXRoaW5nKWAgYW5kIGAkLnNvbWV0aGluZ2BcbiAgICAgIH0sXG4gICAgICBobGpzLk1FVEhPRF9HVUFSRCxcbiAgICAgIHsgLy8gRVM2IGNsYXNzXG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzJywgZW5kOiAvW3s7PV0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvWzpcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjb25zdHJ1Y3RvciBnZXQgc2V0JywgZW5kOiAvXFx7LywgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMoPyEhKS9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuICB2YXIgUEFSQU0gPSB7XG4gICAgYmVnaW46IC9bXFx3LV0rICo9LywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbe2NsYXNzTmFtZTogJ2F0dHInLCBiZWdpbjogL1tcXHctXSsvfV1cbiAgfTtcbiAgdmFyIFBBUkFNU0JMT0NLID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFtQQVJBTV0sXG4gICAgcmVsZXZhbmNlIDogMFxuICB9O1xuICB2YXIgT1BFUkFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbjogLzpbXFx3XFwtLl0rLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFBBVEggPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1xcQigoW1xcLy5dKVtcXHdcXC0uXFwvPV0rKSsvLFxuICB9O1xuICB2YXIgQ09NTUFORF9QQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogLy0tW1xcd1xcLT1cXC9dKy8sXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd3aWxkZmx5LWNsaSddLFxuICAgIGxleGVtZXM6ICdbYS16XFwtXSsnLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYWxpYXMgYmF0Y2ggY2QgY2xlYXIgY29tbWFuZCBjb25uZWN0IGNvbm5lY3Rpb24tZmFjdG9yeSBjb25uZWN0aW9uLWluZm8gZGF0YS1zb3VyY2UgZGVwbG95ICcgK1xuICAgICAgJ2RlcGxveW1lbnQtaW5mbyBkZXBsb3ltZW50LW92ZXJsYXkgZWNobyBlY2hvLWRtciBoZWxwIGhpc3RvcnkgaWYgamRiYy1kcml2ZXItaW5mbyBqbXMtcXVldWV8MjAgam1zLXRvcGljfDIwIGxzICcgK1xuICAgICAgJ3BhdGNoIHB3ZCBxdWl0IHJlYWQtYXR0cmlidXRlIHJlYWQtb3BlcmF0aW9uIHJlbG9hZCByb2xsb3V0LXBsYW4gcnVuLWJhdGNoIHNldCBzaHV0ZG93biB0cnkgdW5hbGlhcyAnICtcbiAgICAgICd1bmRlcGxveSB1bnNldCB2ZXJzaW9uIHhhLWRhdGEtc291cmNlJywgLy8gbW9kdWxlXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIENPTU1BTkRfUEFSQU1TLFxuICAgICAgT1BFUkFUSU9OLFxuICAgICAgUEFUSCxcbiAgICAgIFBBUkFNU0JMT0NLXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgTElURVJBTFMgPSB7bGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbCd9O1xuICB2YXIgQUxMT1dFRF9DT01NRU5UUyA9IFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICBdXG4gIHZhciBUWVBFUyA9IFtcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICBdO1xuICB2YXIgVkFMVUVfQ09OVEFJTkVSID0ge1xuICAgIGVuZDogJywnLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBjb250YWluczogVFlQRVMsXG4gICAga2V5d29yZHM6IExJVEVSQUxTXG4gIH07XG4gIHZhciBPQkpFQ1QgPSB7XG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoVkFMVUVfQ09OVEFJTkVSLCB7YmVnaW46IC86L30pXG4gICAgXS5jb25jYXQoQUxMT1dFRF9DT01NRU5UUyksXG4gICAgaWxsZWdhbDogJ1xcXFxTJ1xuICB9O1xuICB2YXIgQVJSQVkgPSB7XG4gICAgYmVnaW46ICdcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICBjb250YWluczogW2hsanMuaW5oZXJpdChWQUxVRV9DT05UQUlORVIpXSwgLy8gaW5oZXJpdCBpcyBhIHdvcmthcm91bmQgZm9yIGEgYnVnIHRoYXQgbWFrZXMgc2hhcmVkIG1vZGVzIHdpdGggZW5kc1dpdGhQYXJlbnQgY29tcGlsZSBvbmx5IHRoZSBlbmRpbmcgb2Ygb25lIG9mIHRoZSBwYXJlbnRzXG4gICAgaWxsZWdhbDogJ1xcXFxTJ1xuICB9O1xuICBUWVBFUy5wdXNoKE9CSkVDVCwgQVJSQVkpO1xuICBBTExPV0VEX0NPTU1FTlRTLmZvckVhY2goZnVuY3Rpb24ocnVsZSkge1xuICAgIFRZUEVTLnB1c2gocnVsZSlcbiAgfSlcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogVFlQRVMsXG4gICAga2V5d29yZHM6IExJVEVSQUxTLFxuICAgIGlsbGVnYWw6ICdcXFxcUydcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIFNpbmNlIHRoZXJlIGFyZSBudW1lcm91cyBzcGVjaWFsIG5hbWVzIGluIEp1bGlhLCBpdCBpcyB0b28gbXVjaCB0cm91YmxlXG4gIC8vIHRvIG1haW50YWluIHRoZW0gYnkgaGFuZC4gSGVuY2UgdGhlc2UgbmFtZXMgKGkuZS4ga2V5d29yZHMsIGxpdGVyYWxzIGFuZFxuICAvLyBidWlsdC1pbnMpIGFyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEp1bGlhIHYwLjYgaXRzZWxmIHRocm91Z2hcbiAgLy8gdGhlIGZvbGxvd2luZyBzY3JpcHRzIGZvciBlYWNoLlxuXG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICAvLyAjIGtleXdvcmQgZ2VuZXJhdG9yLCBtdWx0aS13b3JkIGtleXdvcmRzIGhhbmRsZWQgbWFudWFsbHkgYmVsb3dcbiAgICAvLyBmb3JlYWNoKHByaW50bG4sIFtcImluXCIsIFwiaXNhXCIsIFwid2hlcmVcIl0pXG4gICAgLy8gZm9yIGt3IGluIEJhc2UuUkVQTENvbXBsZXRpb25zLmNvbXBsZXRlX2tleXdvcmQoXCJcIilcbiAgICAvLyAgICAgaWYgIShjb250YWlucyhrdywgXCIgXCIpIHx8IGt3ID09IFwic3RydWN0XCIpXG4gICAgLy8gICAgICAgICBwcmludGxuKGt3KVxuICAgIC8vICAgICBlbmRcbiAgICAvLyBlbmRcbiAgICBrZXl3b3JkOlxuICAgICAgJ2luIGlzYSB3aGVyZSAnICtcbiAgICAgICdiYXJlbW9kdWxlIGJlZ2luIGJyZWFrIGNhdGNoIGNjYWxsIGNvbnN0IGNvbnRpbnVlIGRvIGVsc2UgZWxzZWlmIGVuZCBleHBvcnQgZmFsc2UgZmluYWxseSBmb3IgZnVuY3Rpb24gJyArXG4gICAgICAnZ2xvYmFsIGlmIGltcG9ydCBpbXBvcnRhbGwgbGV0IGxvY2FsIG1hY3JvIG1vZHVsZSBxdW90ZSByZXR1cm4gdHJ1ZSB0cnkgdXNpbmcgd2hpbGUgJyArXG4gICAgICAvLyBsZWdhY3ksIHRvIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIG5leHQgcmVsZWFzZVxuICAgICAgJ3R5cGUgaW1tdXRhYmxlIGFic3RyYWN0IGJpdHN0eXBlIHR5cGVhbGlhcyAnLFxuXG4gICAgLy8gIyBsaXRlcmFsIGdlbmVyYXRvclxuICAgIC8vIHByaW50bG4oXCJ0cnVlXCIpXG4gICAgLy8gcHJpbnRsbihcImZhbHNlXCIpXG4gICAgLy8gZm9yIG5hbWUgaW4gQmFzZS5SRVBMQ29tcGxldGlvbnMuY29tcGxldGlvbnMoXCJcIiwgMClbMV1cbiAgICAvLyAgICAgdHJ5XG4gICAgLy8gICAgICAgICB2ID0gZXZhbChTeW1ib2wobmFtZSkpXG4gICAgLy8gICAgICAgICBpZiAhKHYgaXNhIEZ1bmN0aW9uIHx8IHYgaXNhIFR5cGUgfHwgdiBpc2EgVHlwZVZhciB8fCB2IGlzYSBNb2R1bGUgfHwgdiBpc2EgQ29sb24pXG4gICAgLy8gICAgICAgICAgICAgcHJpbnRsbihuYW1lKVxuICAgIC8vICAgICAgICAgZW5kXG4gICAgLy8gICAgIGVuZFxuICAgIC8vIGVuZFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSAnICtcbiAgICAgICdBUkdTIENfTlVMTCBEZXZOdWxsIEVORElBTl9CT00gRU5WIEkgSW5mIEluZjE2IEluZjMyIEluZjY0IEluc2VydGlvblNvcnQgSlVMSUFfSE9NRSBMT0FEX1BBVEggTWVyZ2VTb3J0ICcgK1xuICAgICAgJ05hTiBOYU4xNiBOYU4zMiBOYU42NCBQUk9HUkFNX0ZJTEUgUXVpY2tTb3J0IFJvdW5kRG93biBSb3VuZEZyb21aZXJvIFJvdW5kTmVhcmVzdCBSb3VuZE5lYXJlc3RUaWVzQXdheSAnICtcbiAgICAgICdSb3VuZE5lYXJlc3RUaWVzVXAgUm91bmRUb1plcm8gUm91bmRVcCBTVERFUlIgU1RESU4gU1RET1VUIFZFUlNJT04gY2F0YWxhbiBlfDAgZXV8MCBldWxlcmdhbW1hIGdvbGRlbiBpbSAnICtcbiAgICAgICdub3RoaW5nIHBpIM6zIM+AIM+GICcsXG5cbiAgICAvLyAjIGJ1aWx0X2luIGdlbmVyYXRvcjpcbiAgICAvLyBmb3IgbmFtZSBpbiBCYXNlLlJFUExDb21wbGV0aW9ucy5jb21wbGV0aW9ucyhcIlwiLCAwKVsxXVxuICAgIC8vICAgICB0cnlcbiAgICAvLyAgICAgICAgIHYgPSBldmFsKFN5bWJvbChuYW1lKSlcbiAgICAvLyAgICAgICAgIGlmIHYgaXNhIFR5cGUgfHwgdiBpc2EgVHlwZVZhclxuICAgIC8vICAgICAgICAgICAgIHByaW50bG4obmFtZSlcbiAgICAvLyAgICAgICAgIGVuZFxuICAgIC8vICAgICBlbmRcbiAgICAvLyBlbmRcbiAgICBidWlsdF9pbjpcbiAgICAgICdBTlkgQWJzdHJhY3RBcnJheSBBYnN0cmFjdENoYW5uZWwgQWJzdHJhY3RGbG9hdCBBYnN0cmFjdE1hdHJpeCBBYnN0cmFjdFJORyBBYnN0cmFjdFNlcmlhbGl6ZXIgQWJzdHJhY3RTZXQgJyArXG4gICAgICAnQWJzdHJhY3RTcGFyc2VBcnJheSBBYnN0cmFjdFNwYXJzZU1hdHJpeCBBYnN0cmFjdFNwYXJzZVZlY3RvciBBYnN0cmFjdFN0cmluZyBBYnN0cmFjdFVuaXRSYW5nZSBBYnN0cmFjdFZlY09yTWF0ICcgK1xuICAgICAgJ0Fic3RyYWN0VmVjdG9yIEFueSBBcmd1bWVudEVycm9yIEFycmF5IEFzc2VydGlvbkVycm9yIEFzc29jaWF0aXZlIEJhc2U2NERlY29kZVBpcGUgQmFzZTY0RW5jb2RlUGlwZSBCaWRpYWdvbmFsICcrXG4gICAgICAnQmlnRmxvYXQgQmlnSW50IEJpdEFycmF5IEJpdE1hdHJpeCBCaXRWZWN0b3IgQm9vbCBCb3VuZHNFcnJvciBCdWZmZXJTdHJlYW0gQ2FjaGluZ1Bvb2wgQ2FwdHVyZWRFeGNlcHRpb24gJyArXG4gICAgICAnQ2FydGVzaWFuSW5kZXggQ2FydGVzaWFuUmFuZ2UgQ2NoYXIgQ2RvdWJsZSBDZmxvYXQgQ2hhbm5lbCBDaGFyIENpbnQgQ2ludG1heF90IENsb25nIENsb25nbG9uZyBDbHVzdGVyTWFuYWdlciAnICtcbiAgICAgICdDbWQgQ29kZUluZm8gQ29sb24gQ29tcGxleCBDb21wbGV4MTI4IENvbXBsZXgzMiBDb21wbGV4NjQgQ29tcG9zaXRlRXhjZXB0aW9uIENvbmRpdGlvbiBDb25qQXJyYXkgQ29uak1hdHJpeCAnICtcbiAgICAgICdDb25qVmVjdG9yIENwdHJkaWZmX3QgQ3Nob3J0IENzaXplX3QgQ3NzaXplX3QgQ3N0cmluZyBDdWNoYXIgQ3VpbnQgQ3VpbnRtYXhfdCBDdWxvbmcgQ3Vsb25nbG9uZyBDdXNob3J0IEN3Y2hhcl90ICcgK1xuICAgICAgJ0N3c3RyaW5nIERhdGFUeXBlIERhdGUgRGF0ZUZvcm1hdCBEYXRlVGltZSBEZW5zZUFycmF5IERlbnNlTWF0cml4IERlbnNlVmVjT3JNYXQgRGVuc2VWZWN0b3IgRGlhZ29uYWwgRGljdCAnICtcbiAgICAgICdEaW1lbnNpb25NaXNtYXRjaCBEaW1zIERpcmVjdEluZGV4U3RyaW5nIERpc3BsYXkgRGl2aWRlRXJyb3IgRG9tYWluRXJyb3IgRU9GRXJyb3IgRWFjaExpbmUgRW51bSBFbnVtZXJhdGUgJyArXG4gICAgICAnRXJyb3JFeGNlcHRpb24gRXhjZXB0aW9uIEV4cG9uZW50aWFsQmFja09mZiBFeHByIEZhY3Rvcml6YXRpb24gRmlsZU1vbml0b3IgRmxvYXQxNiBGbG9hdDMyIEZsb2F0NjQgRnVuY3Rpb24gJyArXG4gICAgICAnRnV0dXJlIEdsb2JhbFJlZiBHb3RvTm9kZSBIVE1MIEhlcm1pdGlhbiBJTyBJT0J1ZmZlciBJT0NvbnRleHQgSU9TdHJlYW0gSVBBZGRyIElQdjQgSVB2NiBJbmRleENhcnRlc2lhbiBJbmRleExpbmVhciAnICtcbiAgICAgICdJbmRleFN0eWxlIEluZXhhY3RFcnJvciBJbml0RXJyb3IgSW50IEludDEyOCBJbnQxNiBJbnQzMiBJbnQ2NCBJbnQ4IEludFNldCBJbnRlZ2VyIEludGVycnVwdEV4Y2VwdGlvbiAnICtcbiAgICAgICdJbnZhbGlkU3RhdGVFeGNlcHRpb24gSXJyYXRpb25hbCBLZXlFcnJvciBMYWJlbE5vZGUgTGluU3BhY2UgTGluZU51bWJlck5vZGUgTG9hZEVycm9yIExvd2VyVHJpYW5ndWxhciBNSU1FIE1hdHJpeCAnICtcbiAgICAgICdNZXJzZW5uZVR3aXN0ZXIgTWV0aG9kIE1ldGhvZEVycm9yIE1ldGhvZFRhYmxlIE1vZHVsZSBOVHVwbGUgTmV3dmFyTm9kZSBOdWxsRXhjZXB0aW9uIE51bGxhYmxlIE51bWJlciBPYmplY3RJZERpY3QgJyArXG4gICAgICAnT3JkaW5hbFJhbmdlIE91dE9mTWVtb3J5RXJyb3IgT3ZlcmZsb3dFcnJvciBQYWlyIFBhcnNlRXJyb3IgUGFydGlhbFF1aWNrU29ydCBQZXJtdXRlZERpbXNBcnJheSBQaXBlICcgK1xuICAgICAgJ1BvbGxpbmdGaWxlV2F0Y2hlciBQcm9jZXNzRXhpdGVkRXhjZXB0aW9uIFB0ciBRdW90ZU5vZGUgUmFuZG9tRGV2aWNlIFJhbmdlIFJhbmdlSW5kZXggUmF0aW9uYWwgUmF3RkQgJyArXG4gICAgICAnUmVhZE9ubHlNZW1vcnlFcnJvciBSZWFsIFJlZW50cmFudExvY2sgUmVmIFJlZ2V4IFJlZ2V4TWF0Y2ggUmVtb3RlQ2hhbm5lbCBSZW1vdGVFeGNlcHRpb24gUmV2U3RyaW5nIFJvdW5kaW5nTW9kZSAnICtcbiAgICAgICdSb3dWZWN0b3IgU1NBVmFsdWUgU2VnbWVudGF0aW9uRmF1bHQgU2VyaWFsaXphdGlvblN0YXRlIFNldCBTaGFyZWRBcnJheSBTaGFyZWRNYXRyaXggU2hhcmVkVmVjdG9yIFNpZ25lZCAnICtcbiAgICAgICdTaW1wbGVWZWN0b3IgU2xvdCBTbG90TnVtYmVyIFNwYXJzZU1hdHJpeENTQyBTcGFyc2VWZWN0b3IgU3RhY2tGcmFtZSBTdGFja092ZXJmbG93RXJyb3IgU3RhY2tUcmFjZSBTdGVwUmFuZ2UgJyArXG4gICAgICAnU3RlcFJhbmdlTGVuIFN0cmlkZWRBcnJheSBTdHJpZGVkTWF0cml4IFN0cmlkZWRWZWNPck1hdCBTdHJpZGVkVmVjdG9yIFN0cmluZyBTdWJBcnJheSBTdWJTdHJpbmcgU3ltVHJpZGlhZ29uYWwgJyArXG4gICAgICAnU3ltYm9sIFN5bW1ldHJpYyBTeXN0ZW1FcnJvciBUQ1BTb2NrZXQgVGFzayBUZXh0IFRleHREaXNwbGF5IFRpbWVyIFRyaWRpYWdvbmFsIFR1cGxlIFR5cGUgVHlwZUVycm9yIFR5cGVNYXBFbnRyeSAnICtcbiAgICAgICdUeXBlTWFwTGV2ZWwgVHlwZU5hbWUgVHlwZVZhciBUeXBlZFNsb3QgVURQU29ja2V0IFVJbnQgVUludDEyOCBVSW50MTYgVUludDMyIFVJbnQ2NCBVSW50OCBVbmRlZlJlZkVycm9yIFVuZGVmVmFyRXJyb3IgJyArXG4gICAgICAnVW5pY29kZUVycm9yIFVuaWZvcm1TY2FsaW5nIFVuaW9uIFVuaW9uQWxsIFVuaXRSYW5nZSBVbnNpZ25lZCBVcHBlclRyaWFuZ3VsYXIgVmFsIFZhcmFyZyBWZWNFbGVtZW50IFZlY09yTWF0IFZlY3RvciAnICtcbiAgICAgICdWZXJzaW9uTnVtYmVyIFZvaWQgV2Vha0tleURpY3QgV2Vha1JlZiBXb3JrZXJDb25maWcgV29ya2VyUG9vbCAnXG4gIH07XG5cbiAgLy8gcmVmOiBodHRwOi8vanVsaWEucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC9tYW51YWwvdmFyaWFibGVzLyNhbGxvd2VkLXZhcmlhYmxlLW5hbWVzXG4gIHZhciBWQVJJQUJMRV9OQU1FX1JFID0gJ1tBLVphLXpfXFxcXHUwMEExLVxcXFx1RkZGRl1bQS1aYS16XzAtOVxcXFx1MDBBMS1cXFxcdUZGRkZdKic7XG5cbiAgLy8gcGxhY2Vob2xkZXIgZm9yIHJlY3Vyc2l2ZSBzZWxmLXJlZmVyZW5jZVxuICB2YXIgREVGQVVMVCA9IHtcbiAgICBsZXhlbWVzOiBWQVJJQUJMRV9OQU1FX1JFLCBrZXl3b3JkczogS0VZV09SRFMsIGlsbGVnYWw6IC88XFwvL1xuICB9O1xuXG4gIC8vIHJlZjogaHR0cDovL2p1bGlhLnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvbWFudWFsL2ludGVnZXJzLWFuZC1mbG9hdGluZy1wb2ludC1udW1iZXJzL1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgLy8gc3VwcG9ydGVkIG51bWVyaWMgbGl0ZXJhbHM6XG4gICAgLy8gICogYmluYXJ5IGxpdGVyYWwgKGUuZy4gMHgxMClcbiAgICAvLyAgKiBvY3RhbCBsaXRlcmFsIChlLmcuIDBvNzY1NDMyMTApXG4gICAgLy8gICogaGV4YWRlY2ltYWwgbGl0ZXJhbCAoZS5nLiAweGZlZGNiYTg3NjU0MzIxMClcbiAgICAvLyAgKiBoZXhhZGVjaW1hbCBmbG9hdGluZyBwb2ludCBsaXRlcmFsIChlLmcuIDB4MXAwLCAweDEuMnAyKVxuICAgIC8vICAqIGRlY2ltYWwgbGl0ZXJhbCAoZS5nLiA5ODc2NTQzMjEwLCAxMDBfMDAwXzAwMClcbiAgICAvLyAgKiBmbG9hdGluZyBwb2ludGUgbGl0ZXJhbCAoZS5nLiAxLjIsIDEuMmYsIC4yLCAxLiwgMS4yZTEwLCAxLjJlLTEwKVxuICAgIGJlZ2luOiAvKFxcYjB4W1xcZF9dKihcXC5bXFxkX10qKT98MHhcXC5cXGRbXFxkX10qKXBbLStdP1xcZCt8XFxiMFtib3hdW2EtZkEtRjAtOV1bYS1mQS1GMC05X10qfChcXGJcXGRbXFxkX10qKFxcLltcXGRfXSopP3xcXC5cXGRbXFxkX10qKShbZUVmRl1bLStdP1xcZCspPy8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIENIQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycoLnxcXFxcW3hYdVVdW2EtekEtWjAtOV0rKScvXG4gIH07XG5cbiAgdmFyIElOVEVSUE9MQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvXFwkXFwoLywgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcblxuICB2YXIgSU5URVJQT0xBVEVEX1ZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogJ1xcXFwkJyArIFZBUklBQkxFX05BTUVfUkVcbiAgfTtcblxuICAvLyBUT0RPOiBuZWF0bHkgZXNjYXBlIG5vcm1hbCBjb2RlIGluIHN0cmluZyBsaXRlcmFsXG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgSU5URVJQT0xBVElPTiwgSU5URVJQT0xBVEVEX1ZBUklBQkxFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogL1xcdypcIlwiXCIvLCBlbmQ6IC9cIlwiXCJcXHcqLywgcmVsZXZhbmNlOiAxMCB9LFxuICAgICAgeyBiZWdpbjogL1xcdypcIi8sIGVuZDogL1wiXFx3Ki8gfVxuICAgIF1cbiAgfTtcblxuICB2YXIgQ09NTUFORCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBJTlRFUlBPTEFUSU9OLCBJTlRFUlBPTEFURURfVkFSSUFCTEVdLFxuICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnXG4gIH07XG5cbiAgdmFyIE1BQ1JPQ0FMTCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ0AnICsgVkFSSUFCTEVfTkFNRV9SRVxuICB9O1xuXG4gIHZhciBDT01NRU5UID0ge1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnIz0nLCBlbmQ6ICc9IycsIHJlbGV2YW5jZTogMTAgfSxcbiAgICAgIHsgYmVnaW46ICcjJywgZW5kOiAnJCcgfVxuICAgIF1cbiAgfTtcblxuICBERUZBVUxULmNvbnRhaW5zID0gW1xuICAgIE5VTUJFUixcbiAgICBDSEFSLFxuICAgIFNUUklORyxcbiAgICBDT01NQU5ELFxuICAgIE1BQ1JPQ0FMTCxcbiAgICBDT01NRU5ULFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICBiZWdpbjpcbiAgICAgICAgJ1xcXFxiKCgoYWJzdHJhY3R8cHJpbWl0aXZlKVxcXFxzKyl0eXBlfChtdXRhYmxlXFxcXHMrKT9zdHJ1Y3QpXFxcXGInXG4gICAgfSxcbiAgICB7YmVnaW46IC88Oi99ICAvLyByZWxldmFuY2UgYm9vc3RlclxuICBdO1xuICBJTlRFUlBPTEFUSU9OLmNvbnRhaW5zID0gREVGQVVMVC5jb250YWlucztcblxuICByZXR1cm4gREVGQVVMVDtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXmp1bGlhPi8sXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIC8vIGVuZCB0aGUgaGlnaGxpZ2h0aW5nIGlmIHdlIGFyZSBvbiBhIG5ldyBsaW5lIGFuZCB0aGUgbGluZSBkb2VzIG5vdCBoYXZlIGF0XG4gICAgICAgICAgLy8gbGVhc3Qgc2l4IHNwYWNlcyBpbiB0aGUgYmVnaW5uaW5nXG4gICAgICAgICAgZW5kOiAvXig/IVsgXXs2fSkvLFxuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnanVsaWEnXG4gICAgICB9LFxuICAgICAgLy8gamxkb2N0ZXN0IE1hcmtkb3duIGJsb2NrcyBhcmUgdXNlZCBpbiB0aGUgSnVsaWEgbWFudWFsIGFuZCBwYWNrYWdlIGRvY3MgaW5kaWNhdGVcbiAgICAgIC8vIGNvZGUgc25pcHBldHMgdGhhdCBzaG91bGQgYmUgdmVyaWZpZWQgd2hlbiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBidWlsdC4gVGhleSBjYW4gYmVcbiAgICAgIC8vIGVpdGhlciBSRVBMLWxpa2Ugb3Igc2NyaXB0LWxpa2UsIGJ1dCBhcmUgdXN1YWxseSBSRVBMLWxpa2UgYW5kIHRoZXJlZm9yZSB3ZSBhcHBseVxuICAgICAgLy8ganVsaWEtcmVwbCBoaWdobGlnaHRpbmcgdG8gdGhlbS4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gRG9jdW1lbnRlcidzXG4gICAgICAvLyBtYW51YWw6IGh0dHBzOi8vanVsaWFkb2NzLmdpdGh1Yi5pby9Eb2N1bWVudGVyLmpsL2xhdGVzdC9tYW4vZG9jdGVzdHMuaHRtbFxuICAgICAgYWxpYXNlczogWydqbGRvY3Rlc3QnXVxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWJzdHJhY3QgYXMgdmFsIHZhciB2YXJhcmcgZ2V0IHNldCBjbGFzcyBvYmplY3Qgb3BlbiBwcml2YXRlIHByb3RlY3RlZCBwdWJsaWMgbm9pbmxpbmUgJyArXG4gICAgICAnY3Jvc3NpbmxpbmUgZHluYW1pYyBmaW5hbCBlbnVtIGlmIGVsc2UgZG8gd2hpbGUgZm9yIHdoZW4gdGhyb3cgdHJ5IGNhdGNoIGZpbmFsbHkgJyArXG4gICAgICAnaW1wb3J0IHBhY2thZ2UgaXMgaW4gZnVuIG92ZXJyaWRlIGNvbXBhbmlvbiByZWlmaWVkIGlubGluZSBsYXRlaW5pdCBpbml0ICcgK1xuICAgICAgJ2ludGVyZmFjZSBhbm5vdGF0aW9uIGRhdGEgc2VhbGVkIGludGVybmFsIGluZml4IG9wZXJhdG9yIG91dCBieSBjb25zdHJ1Y3RvciBzdXBlciAnICtcbiAgICAgICd0YWlscmVjIHdoZXJlIGNvbnN0IGlubmVyIHN1c3BlbmQgdHlwZWFsaWFzIGV4dGVybmFsIGV4cGVjdCBhY3R1YWwgJyArXG4gICAgICAvLyB0byBiZSBkZWxldGVkIHNvb25cbiAgICAgICd0cmFpdCB2b2xhdGlsZSB0cmFuc2llbnQgbmF0aXZlIGRlZmF1bHQnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0J5dGUgU2hvcnQgQ2hhciBJbnQgTG9uZyBCb29sZWFuIEZsb2F0IERvdWJsZSBWb2lkIFVuaXQgTm90aGluZycsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlIG51bGwnXG4gIH07XG4gIHZhciBLRVlXT1JEU19XSVRIX0xBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIGJlZ2luOiAvXFxiKGJyZWFrfGNvbnRpbnVlfHJldHVybnx0aGlzKVxcYi8sXG4gICAgc3RhcnRzOiB7XG4gICAgICBjb250YWluczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICBiZWdpbjogL0BcXHcrL1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9O1xuICB2YXIgTEFCRUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJywgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdAJ1xuICB9O1xuXG4gIC8vIGZvciBzdHJpbmcgdGVtcGxhdGVzXG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdcXFxcJHsnLCBlbmQ6ICd9JywgY29udGFpbnM6IFtobGpzLkNfTlVNQkVSX01PREVdXG4gIH07XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsIGJlZ2luOiAnXFxcXCQnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbVkFSSUFCTEUsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIC8vIENhbid0IHVzZSBidWlsdC1pbiBtb2RlcyBlYXNpbHksIGFzIHdlIHdhbnQgdG8gdXNlIFNUUklORyBpbiB0aGUgbWV0YVxuICAgICAgLy8gY29udGV4dCBhcyAnbWV0YS1zdHJpbmcnIGFuZCB0aGVyZSdzIG5vIHN5bnRheCB0byByZW1vdmUgZXhwbGljaXRseSBzZXRcbiAgICAgIC8vIGNsYXNzTmFtZXMgaW4gYnVpbHQtaW4gbW9kZXMuXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJJQUJMRSwgU1VCU1RdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucy5wdXNoKFNUUklORylcblxuICB2YXIgQU5OT1RBVElPTl9VU0VfU0lURSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAKD86ZmlsZXxwcm9wZXJ0eXxmaWVsZHxnZXR8c2V0fHJlY2VpdmVyfHBhcmFtfHNldHBhcmFtfGRlbGVnYXRlKVxcXFxzKjooPzpcXFxccyonICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJyk/J1xuICB9O1xuICB2YXIgQU5OT1RBVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KFNUUklORywge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJ30pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgLy8gaHR0cHM6Ly9rb3RsaW5sYW5nLm9yZy9kb2NzL3JlZmVyZW5jZS93aGF0c25ldzExLmh0bWwjdW5kZXJzY29yZXMtaW4tbnVtZXJpYy1saXRlcmFsc1xuICAvLyBBY2NvcmRpbmcgdG8gdGhlIGRvYyBhYm92ZSwgdGhlIG51bWJlciBtb2RlIG9mIGtvdGxpbiBpcyB0aGUgc2FtZSBhcyBqYXZhIDgsXG4gIC8vIHNvIHRoZSBjb2RlIGJlbG93IGlzIGNvcGllZCBmcm9tIGphdmEuanNcbiAgdmFyIEtPVExJTl9OVU1CRVJfUkUgPSAnXFxcXGInICtcbiAgICAnKCcgK1xuICAgICAgJzBbYkJdKFswMV0rWzAxX10rWzAxXSt8WzAxXSspJyArIC8vIDBiLi4uXG4gICAgICAnfCcgK1xuICAgICAgJzBbeFhdKFthLWZBLUYwLTldK1thLWZBLUYwLTlfXStbYS1mQS1GMC05XSt8W2EtZkEtRjAtOV0rKScgKyAvLyAweC4uLlxuICAgICAgJ3wnICtcbiAgICAgICcoJyArXG4gICAgICAgICcoW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKykoXFxcXC4oW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKykpPycgK1xuICAgICAgICAnfCcgK1xuICAgICAgICAnXFxcXC4oW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKyknICtcbiAgICAgICcpJyArXG4gICAgICAnKFtlRV1bLStdP1xcXFxkKyk/JyArIC8vIG9jdGFsLCBkZWNpbWFsLCBmbG9hdFxuICAgICcpJyArXG4gICAgJ1tsTGZGXT8nO1xuICB2YXIgS09UTElOX05VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IEtPVExJTl9OVU1CRVJfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBLT1RMSU5fTkVTVEVEX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJy9cXFxcKicsICdcXFxcKi8nLFxuICAgIHsgY29udGFpbnM6IFsgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSBdIH1cbiAgKTtcbiAgdmFyIEtPVExJTl9QQVJFTl9UWVBFID0ge1xuICAgIHZhcmlhbnRzOiBbXG5cdCAgeyBjbGFzc05hbWU6ICd0eXBlJyxcblx0ICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcblx0ICB9LFxuXHQgIHsgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuXHQgICAgY29udGFpbnM6IFtdIC8vZGVmaW5lZCBsYXRlclxuXHQgIH1cblx0XVxuICB9O1xuICB2YXIgS09UTElOX1BBUkVOX1RZUEUyID0gS09UTElOX1BBUkVOX1RZUEU7XG4gIEtPVExJTl9QQVJFTl9UWVBFMi52YXJpYW50c1sxXS5jb250YWlucyA9IFsgS09UTElOX1BBUkVOX1RZUEUgXTtcbiAgS09UTElOX1BBUkVOX1RZUEUudmFyaWFudHNbMV0uY29udGFpbnMgPSBbIEtPVExJTl9QQVJFTl9UWVBFMiBdO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydrdCddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWlucyA6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2UgOiAwLFxuICAgICAgICAgIGNvbnRhaW5zIDogW3tcbiAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgYmVnaW4gOiAnQFtBLVphLXpdKydcbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgS09UTElOX05FU1RFRF9DT01NRU5ULFxuICAgICAgS0VZV09SRFNfV0lUSF9MQUJFTCxcbiAgICAgIExBQkVMLFxuICAgICAgQU5OT1RBVElPTl9VU0VfU0lURSxcbiAgICAgIEFOTk9UQVRJT04sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bicsIGVuZDogJ1soXXwkJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgaWxsZWdhbDogL2Z1blxccysoPC4qPik/W15cXHNcXChdKyhcXHMrW15cXHNcXChdKylcXHMqPS8sXG4gICAgICAgIHJlbGV2YW5jZTogNSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKlxcXFwoJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+Lywga2V5d29yZHM6ICdyZWlmaWVkJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC86LywgZW5kOiAvWz0sXFwvXS8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICBLT1RMSU5fUEFSRU5fVFlQRSxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgICAgIEtPVExJTl9ORVNURURfQ09NTUVOVFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgS09UTElOX05FU1RFRF9DT01NRU5ULFxuICAgICAgICAgICAgICBBTk5PVEFUSU9OX1VTRV9TSVRFLFxuICAgICAgICAgICAgICBBTk5PVEFUSU9OLFxuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgS09UTElOX05FU1RFRF9DT01NRU5UXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSB0cmFpdCcsIGVuZDogL1s6XFx7KF18JC8sIC8vIHJlbW92ZSAndHJhaXQnIHdoZW4gcmVtb3ZlZCBmcm9tIEtFWVdPUkRTXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdleHRlbmRzIGltcGxlbWVudHMnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAncHVibGljIHByb3RlY3RlZCBpbnRlcm5hbCBwcml2YXRlIGNvbnN0cnVjdG9yJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+LywgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAvWyw6XVxccyovLCBlbmQ6IC9bPFxcKCxdfCQvLCBleGNsdWRlQmVnaW46IHRydWUsIHJldHVybkVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgQU5OT1RBVElPTl9VU0VfU0lURSxcbiAgICAgICAgICBBTk5PVEFUSU9OXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogXCJeIyEvdXNyL2Jpbi9lbnZcIiwgZW5kOiAnJCcsXG4gICAgICAgIGlsbGVnYWw6ICdcXG4nXG4gICAgICB9LFxuICAgICAgS09UTElOX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIExBU1NPX0lERU5UX1JFID0gJ1thLXpBLVpfXVtcXFxcdy5dKic7XG4gIHZhciBMQVNTT19BTkdMRV9SRSA9ICc8XFxcXD8obGFzc28oc2NyaXB0KT98PSknO1xuICB2YXIgTEFTU09fQ0xPU0VfUkUgPSAnXFxcXF18XFxcXD8+JztcbiAgdmFyIExBU1NPX0tFWVdPUkRTID0ge1xuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBub25lIG1pbmltYWwgZnVsbCBhbGwgdm9pZCBhbmQgb3Igbm90ICcgK1xuICAgICAgJ2J3IG5idyBldyBuZXcgY24gbmNuIGx0IGx0ZSBndCBndGUgZXEgbmVxIHJ4IG5yeCBmdCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnYXJyYXkgZGF0ZSBkZWNpbWFsIGR1cmF0aW9uIGludGVnZXIgbWFwIHBhaXIgc3RyaW5nIHRhZyB4bWwgbnVsbCAnICtcbiAgICAgICdib29sZWFuIGJ5dGVzIGtleXdvcmQgbGlzdCBsb2NhbGUgcXVldWUgc2V0IHN0YWNrIHN0YXRpY2FycmF5ICcgK1xuICAgICAgJ2xvY2FsIHZhciB2YXJpYWJsZSBnbG9iYWwgZGF0YSBzZWxmIGluaGVyaXRlZCBjdXJyZW50Y2FwdHVyZSBnaXZlbmJsb2NrJyxcbiAgICBrZXl3b3JkOlxuICAgICAgJ2NhY2hlIGRhdGFiYXNlX25hbWVzIGRhdGFiYXNlX3NjaGVtYW5hbWVzIGRhdGFiYXNlX3RhYmxlbmFtZXMgJyArXG4gICAgICAnZGVmaW5lX3RhZyBkZWZpbmVfdHlwZSBlbWFpbF9iYXRjaCBlbmNvZGVfc2V0IGh0bWxfY29tbWVudCBoYW5kbGUgJyArXG4gICAgICAnaGFuZGxlX2Vycm9yIGhlYWRlciBpZiBpbmxpbmUgaXRlcmF0ZSBsamF4X3RhcmdldCBsaW5rICcgK1xuICAgICAgJ2xpbmtfY3VycmVudGFjdGlvbiBsaW5rX2N1cnJlbnRncm91cCBsaW5rX2N1cnJlbnRyZWNvcmQgbGlua19kZXRhaWwgJyArXG4gICAgICAnbGlua19maXJzdGdyb3VwIGxpbmtfZmlyc3RyZWNvcmQgbGlua19sYXN0Z3JvdXAgbGlua19sYXN0cmVjb3JkICcgK1xuICAgICAgJ2xpbmtfbmV4dGdyb3VwIGxpbmtfbmV4dHJlY29yZCBsaW5rX3ByZXZncm91cCBsaW5rX3ByZXZyZWNvcmQgbG9nICcgK1xuICAgICAgJ2xvb3AgbmFtZXNwYWNlX3VzaW5nIG91dHB1dF9ub25lIHBvcnRhbCBwcml2YXRlIHByb3RlY3QgcmVjb3JkcyAnICtcbiAgICAgICdyZWZlcmVyIHJlZmVycmVyIHJlcGVhdGluZyByZXN1bHRzZXQgcm93cyBzZWFyY2hfYXJncyAnICtcbiAgICAgICdzZWFyY2hfYXJndW1lbnRzIHNlbGVjdCBzb3J0X2FyZ3Mgc29ydF9hcmd1bWVudHMgdGhyZWFkX2F0b21pYyAnICtcbiAgICAgICd2YWx1ZV9saXN0IHdoaWxlIGFib3J0IGNhc2UgZWxzZSBmYWlsX2lmIGZhaWxfaWZub3QgZmFpbCBpZl9lbXB0eSAnICtcbiAgICAgICdpZl9mYWxzZSBpZl9udWxsIGlmX3RydWUgbG9vcF9hYm9ydCBsb29wX2NvbnRpbnVlIGxvb3BfY291bnQgcGFyYW1zICcgK1xuICAgICAgJ3BhcmFtc191cCByZXR1cm4gcmV0dXJuX3ZhbHVlIHJ1bl9jaGlsZHJlbiBzb2FwX2RlZmluZXRhZyAnICtcbiAgICAgICdzb2FwX2xhc3RyZXF1ZXN0IHNvYXBfbGFzdHJlc3BvbnNlIHRhZ19uYW1lIGFzY2VuZGluZyBhdmVyYWdlIGJ5ICcgK1xuICAgICAgJ2RlZmluZSBkZXNjZW5kaW5nIGRvIGVxdWFscyBmcm96ZW4gZ3JvdXAgaGFuZGxlX2ZhaWx1cmUgaW1wb3J0IGluICcgK1xuICAgICAgJ2ludG8gam9pbiBsZXQgbWF0Y2ggbWF4IG1pbiBvbiBvcmRlciBwYXJlbnQgcHJvdGVjdGVkIHByb3ZpZGUgcHVibGljICcgK1xuICAgICAgJ3JlcXVpcmUgcmV0dXJuaG9tZSBza2lwIHNwbGl0X3RocmVhZCBzdW0gdGFrZSB0aHJlYWQgdG8gdHJhaXQgdHlwZSAnICtcbiAgICAgICd3aGVyZSB3aXRoIHlpZWxkIHlpZWxkaG9tZSdcbiAgfTtcbiAgdmFyIEhUTUxfQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnPCEtLScsXG4gICAgJy0tPicsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgTEFTU09fTk9QUk9DRVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXFxcXFtub3Byb2Nlc3NcXFxcXScsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdcXFxcWy9ub3Byb2Nlc3NcXFxcXScsXG4gICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICBjb250YWluczogW0hUTUxfQ09NTUVOVF1cbiAgICB9XG4gIH07XG4gIHZhciBMQVNTT19TVEFSVCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ1xcXFxbL25vcHJvY2Vzc3wnICsgTEFTU09fQU5HTEVfUkVcbiAgfTtcbiAgdmFyIExBU1NPX0RBVEFNRU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1xcJycgKyBMQVNTT19JREVOVF9SRSArICdcXCcnXG4gIH07XG4gIHZhciBMQVNTT19DT0RFID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfTlVNQkVSX01PREUsIHtiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICd8KC0/aW5maW5pdHl8TmFOKVxcXFxiJ30pLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnXG4gICAgfSxcbiAgICB7IC8vIHZhcmlhYmxlc1xuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnWyMkXScgKyBMQVNTT19JREVOVF9SRVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICBpbGxlZ2FsOiAnXFxcXFcnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgYmVnaW46ICc6OlxcXFxzKicsIGVuZDogTEFTU09fSURFTlRfUkUsXG4gICAgICBpbGxlZ2FsOiAnXFxcXFcnXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnLSg/IWluZmluaXR5KScgKyBMQVNTT19JREVOVF9SRSxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnKFxcXFwuXFxcXC5cXFxcLiknXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAvKC0+fFxcLilcXHMqLyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbTEFTU09fREFUQU1FTUJFUl1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWZpbmUnLFxuICAgICAgcmV0dXJuRW5kOiB0cnVlLCBlbmQ6ICdcXFxcKHw9PicsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IExBU1NPX0lERU5UX1JFICsgJyg9KD8hPikpP3xbLSsqLyVdKD8hPiknfSlcbiAgICAgIF1cbiAgICB9XG4gIF07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydscycsICdsYXNzb3NjcmlwdCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogTEFTU09fSURFTlRfUkUgKyAnfCZbbGdddDsnLFxuICAgIGtleXdvcmRzOiBMQVNTT19LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IExBU1NPX0NMT1NFX1JFLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHN0YXJ0czogeyAvLyBtYXJrdXBcbiAgICAgICAgICBlbmQ6ICdcXFxcW3wnICsgTEFTU09fQU5HTEVfUkUsXG4gICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBjb250YWluczogW0hUTUxfQ09NTUVOVF1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIExBU1NPX05PUFJPQ0VTUyxcbiAgICAgIExBU1NPX1NUQVJULFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdcXFxcW25vX3NxdWFyZV9icmFja2V0cycsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcXFxbL25vX3NxdWFyZV9icmFja2V0c1xcXFxdJywgLy8gbm90IGltcGxlbWVudGVkIGluIHRoZSBsYW5ndWFnZVxuICAgICAgICAgIGxleGVtZXM6IExBU1NPX0lERU5UX1JFICsgJ3wmW2xnXXQ7JyxcbiAgICAgICAgICBrZXl3b3JkczogTEFTU09fS0VZV09SRFMsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICAgIGJlZ2luOiBMQVNTT19DTE9TRV9SRSxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgICAgICBlbmQ6ICdcXFxcW25vcHJvY2Vzc1xcXFxdfCcgKyBMQVNTT19BTkdMRV9SRSxcbiAgICAgICAgICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtIVE1MX0NPTU1FTlRdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBMQVNTT19OT1BST0NFU1MsXG4gICAgICAgICAgICBMQVNTT19TVEFSVFxuICAgICAgICAgIF0uY29uY2F0KExBU1NPX0NPREUpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ1xcXFxbJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeIyEnLCBlbmQ6J2xhc3NvOSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXS5jb25jYXQoTEFTU09fQ09ERSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdeZG4nLCBlbmQ6ICc6ICcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN0YXJ0czoge2VuZDogJyQnLCByZWxldmFuY2U6IDB9LFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ15cXFxcdycsIGVuZDogJzogJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3RhcnRzOiB7ZW5kOiAnJCcsIHJlbGV2YW5jZTogMH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICBiZWdpbjogJ14tJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJyMrJyArICdbQS1aYS16XzAtOV0qJyArICdcXFxcKCcsXG4gICAgICAgIGVuZDonIHsnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJyMrJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgYmVnaW46ICdbQS1aYS16X11bQS1aYS16XzAtOV0qJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgICAgICAgICAgZW5kOiAnXCInXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdbQS1aYS16X11bQS1aYS16XzAtOV0qJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFICAgICAgICA9ICdbXFxcXHctXSsnOyAvLyB5ZXMsIExlc3MgaWRlbnRpZmllcnMgbWF5IGJlZ2luIHdpdGggYSBkaWdpdFxuICB2YXIgSU5URVJQX0lERU5UX1JFID0gJygnICsgSURFTlRfUkUgKyAnfEB7JyArIElERU5UX1JFICsgJ30pJztcblxuICAvKiBHZW5lcmljIE1vZGVzICovXG5cbiAgdmFyIFJVTEVTID0gW10sIFZBTFVFID0gW107IC8vIGZvcndhcmQgZGVmLiBmb3IgcmVjdXJzaXZlIG1vZGVzXG5cbiAgdmFyIFNUUklOR19NT0RFID0gZnVuY3Rpb24oYykgeyByZXR1cm4ge1xuICAgIC8vIExlc3Mgc3RyaW5ncyBhcmUgbm90IG11bHRpbGluZSAoYWxzbyBpbmNsdWRlICd+JyBmb3IgbW9yZSBjb25zaXN0ZW50IGNvbG9yaW5nIG9mIFwiZXNjYXBlZFwiIHN0cmluZ3MpXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46ICd+PycgKyBjICsgJy4qPycgKyBjXG4gIH07fTtcblxuICB2YXIgSURFTlRfTU9ERSA9IGZ1bmN0aW9uKG5hbWUsIGJlZ2luLCByZWxldmFuY2UpIHsgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IG5hbWUsIGJlZ2luOiBiZWdpbiwgcmVsZXZhbmNlOiByZWxldmFuY2VcbiAgfTt9O1xuXG4gIHZhciBQQVJFTlNfTU9ERSA9IHtcbiAgICAvLyB1c2VkIG9ubHkgdG8gcHJvcGVybHkgYmFsYW5jZSBuZXN0ZWQgcGFyZW5zIGluc2lkZSBtaXhpbiBjYWxsLCBkZWYuIGFyZyBsaXN0XG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IFZBTFVFLCByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvLyBnZW5lcmljIExlc3MgaGlnaGxpZ2h0ZXIgKHVzZWQgYWxtb3N0IGV2ZXJ5d2hlcmUgZXhjZXB0IHNlbGVjdG9ycyk6XG4gIFZBTFVFLnB1c2goXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgU1RSSU5HX01PREUoXCInXCIpLFxuICAgIFNUUklOR19NT0RFKCdcIicpLFxuICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLCAvLyBmaXhtZTogaXQgZG9lcyBub3QgaW5jbHVkZSBkb3QgZm9yIG51bWJlcnMgbGlrZSAuNWVtIDooXG4gICAge1xuICAgICAgYmVnaW46ICcodXJsfGRhdGEtdXJpKVxcXFwoJyxcbiAgICAgIHN0YXJ0czoge2NsYXNzTmFtZTogJ3N0cmluZycsIGVuZDogJ1tcXFxcKVxcXFxuXScsIGV4Y2x1ZGVFbmQ6IHRydWV9XG4gICAgfSxcbiAgICBJREVOVF9NT0RFKCdudW1iZXInLCAnI1swLTlBLUZhLWZdK1xcXFxiJyksXG4gICAgUEFSRU5TX01PREUsXG4gICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQEA/JyArIElERU5UX1JFLCAxMCksXG4gICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQHsnICArIElERU5UX1JFICsgJ30nKSxcbiAgICBJREVOVF9NT0RFKCdidWlsdF9pbicsICd+P2BbXmBdKj9gJyksIC8vIGlubGluZSBqYXZhc2NyaXB0IChvciB3aGF0ZXZlciBob3N0IGxhbmd1YWdlKSAqbXVsdGlsaW5lKiBzdHJpbmdcbiAgICB7IC8vIEBtZWRpYSBmZWF0dXJlcyAoaXTigJlzIGhlcmUgdG8gbm90IGR1cGxpY2F0ZSB0aGluZ3MgaW4gQVRfUlVMRV9NT0RFIHdpdGggZXh0cmEgUEFSRU5TX01PREUgb3ZlcnJpZGluZyk6XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLCBiZWdpbjogSURFTlRfUkUgKyAnXFxcXHMqOicsIGVuZDogJzonLCByZXR1cm5CZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICBiZWdpbjogJyFpbXBvcnRhbnQnXG4gICAgfVxuICApO1xuXG4gIHZhciBWQUxVRV9XSVRIX1JVTEVTRVRTID0gVkFMVUUuY29uY2F0KHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JywgY29udGFpbnM6IFJVTEVTXG4gIH0pO1xuXG4gIHZhciBNSVhJTl9HVUFSRF9NT0RFID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICd3aGVuJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgY29udGFpbnM6IFt7YmVnaW5LZXl3b3JkczogJ2FuZCBub3QnfV0uY29uY2F0KFZBTFVFKSAvLyB1c2luZyB0aGlzIGZvcm0gdG8gb3ZlcnJpZGUgVkFMVUXigJlzICdmdW5jdGlvbicgbWF0Y2hcbiAgfTtcblxuICAvKiBSdWxlLUxldmVsIE1vZGVzICovXG5cbiAgdmFyIFJVTEVfTU9ERSA9IHtcbiAgICBiZWdpbjogSU5URVJQX0lERU5UX1JFICsgJ1xcXFxzKjonLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAnWzt9XScsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiBJTlRFUlBfSURFTlRfUkUsIGVuZDogJzonLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgaWxsZWdhbDogJ1s8PSRdJyxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFZBTFVFXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIEFUX1JVTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ0AoaW1wb3J0fG1lZGlhfGNoYXJzZXR8Zm9udC1mYWNlfCgtW2Etel0rLSk/a2V5ZnJhbWVzfHN1cHBvcnRzfGRvY3VtZW50fG5hbWVzcGFjZXxwYWdlfHZpZXdwb3J0fGhvc3QpXFxcXGInLFxuICAgIHN0YXJ0czoge2VuZDogJ1s7e31dJywgcmV0dXJuRW5kOiB0cnVlLCBjb250YWluczogVkFMVUUsIHJlbGV2YW5jZTogMH1cbiAgfTtcblxuICAvLyB2YXJpYWJsZSBkZWZpbml0aW9ucyBhbmQgY2FsbHNcbiAgdmFyIFZBUl9SVUxFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyB1c2luZyBtb3JlIHN0cmljdCBwYXR0ZXJuIGZvciBoaWdoZXIgcmVsZXZhbmNlIHRvIGluY3JlYXNlIGNoYW5jZXMgb2YgTGVzcyBkZXRlY3Rpb24uXG4gICAgICAvLyB0aGlzIGlzICp0aGUgb25seSogTGVzcyBzcGVjaWZpYyBzdGF0ZW1lbnQgdXNlZCBpbiBtb3N0IG9mIHRoZSBzb3VyY2VzLCBzby4uLlxuICAgICAgLy8gKHdl4oCZbGwgc3RpbGwgb2Z0ZW4gbG9vc2UgdG8gdGhlIGNzcy1wYXJzZXIgdW5sZXNzIHRoZXJlJ3MgJy8vJyBjb21tZW50LFxuICAgICAgLy8gc2ltcGx5IGJlY2F1c2UgMSB2YXJpYWJsZSBqdXN0IGNhbid0IGJlYXQgOTkgcHJvcGVydGllcyA6KVxuICAgICAge2JlZ2luOiAnQCcgKyBJREVOVF9SRSArICdcXFxccyo6JywgcmVsZXZhbmNlOiAxNX0sXG4gICAgICB7YmVnaW46ICdAJyArIElERU5UX1JFfVxuICAgIF0sXG4gICAgc3RhcnRzOiB7ZW5kOiAnWzt9XScsIHJldHVybkVuZDogdHJ1ZSwgY29udGFpbnM6IFZBTFVFX1dJVEhfUlVMRVNFVFN9XG4gIH07XG5cbiAgdmFyIFNFTEVDVE9SX01PREUgPSB7XG4gICAgLy8gZmlyc3QgcGFyc2UgdW5hbWJpZ3VvdXMgc2VsZWN0b3JzIChpLmUuIHRob3NlIG5vdCBzdGFydGluZyB3aXRoIHRhZylcbiAgICAvLyB0aGVuIGZhbGwgaW50byB0aGUgc2NhcnkgbG9va2FoZWFkLWRpc2NyaW1pbmF0b3IgdmFyaWFudC5cbiAgICAvLyB0aGlzIG1vZGUgYWxzbyBoYW5kbGVzIG1peGluIGRlZmluaXRpb25zIGFuZCBjYWxsc1xuICAgIHZhcmlhbnRzOiBbe1xuICAgICAgYmVnaW46ICdbXFxcXC4jOiZcXFxcWz5dJywgZW5kOiAnWzt7fV0nICAvLyBtaXhpbiBjYWxscyBlbmQgd2l0aCAnOydcbiAgICAgIH0sIHtcbiAgICAgIGJlZ2luOiBJTlRFUlBfSURFTlRfUkUsIGVuZDogJ3snXG4gICAgfV0sXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmV0dXJuRW5kOiAgIHRydWUsXG4gICAgaWxsZWdhbDogJ1s8PVxcJyRcIl0nLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE1JWElOX0dVQVJEX01PREUsXG4gICAgICBJREVOVF9NT0RFKCdrZXl3b3JkJywgICdhbGxcXFxcYicpLFxuICAgICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQHsnICArIElERU5UX1JFICsgJ30nKSwgICAgIC8vIG90aGVyd2lzZSBpdOKAmXMgaWRlbnRpZmllZCBhcyB0YWdcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLXRhZycsICBJTlRFUlBfSURFTlRfUkUgKyAnJT8nLCAwKSwgLy8gJyUnIGZvciBtb3JlIGNvbnNpc3RlbnQgY29sb3Jpbmcgb2YgQGtleWZyYW1lcyBcInRhZ3NcIlxuICAgICAgSURFTlRfTU9ERSgnc2VsZWN0b3ItaWQnLCAnIycgKyBJTlRFUlBfSURFTlRfUkUpLFxuICAgICAgSURFTlRfTU9ERSgnc2VsZWN0b3ItY2xhc3MnLCAnXFxcXC4nICsgSU5URVJQX0lERU5UX1JFLCAwKSxcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLXRhZycsICAnJicsIDApLFxuICAgICAge2NsYXNzTmFtZTogJ3NlbGVjdG9yLWF0dHInLCBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nfSxcbiAgICAgIHtjbGFzc05hbWU6ICdzZWxlY3Rvci1wc2V1ZG8nLCBiZWdpbjogLzooOik/W2EtekEtWjAtOVxcX1xcLVxcK1xcKFxcKVwiJy5dKy99LFxuICAgICAge2JlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsIGNvbnRhaW5zOiBWQUxVRV9XSVRIX1JVTEVTRVRTfSwgLy8gYXJndW1lbnQgbGlzdCBvZiBwYXJhbWV0cmljIG1peGluc1xuICAgICAge2JlZ2luOiAnIWltcG9ydGFudCd9IC8vIGVhdCAhaW1wb3J0YW50IGFmdGVyIG1peGluIGNhbGwgb3IgaXQgd2lsbCBiZSBjb2xvcmVkIGFzIHRhZ1xuICAgIF1cbiAgfTtcblxuICBSVUxFUy5wdXNoKFxuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIEFUX1JVTEVfTU9ERSxcbiAgICBWQVJfUlVMRV9NT0RFLFxuICAgIFJVTEVfTU9ERSxcbiAgICBTRUxFQ1RPUl9NT0RFXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbPT5cXCcvPCgkXCJdJyxcbiAgICBjb250YWluczogUlVMRVNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBMSVNQX0lERU5UX1JFID0gJ1thLXpBLVpfXFxcXC1cXFxcK1xcXFwqXFxcXC9cXFxcPFxcXFw9XFxcXD5cXFxcJlxcXFwjXVthLXpBLVowLTlfXFxcXC1cXFxcK1xcXFwqXFxcXC9cXFxcPFxcXFw9XFxcXD5cXFxcJlxcXFwjIV0qJztcbiAgdmFyIE1FQ19SRSA9ICdcXFxcfFteXSo/XFxcXHwnO1xuICB2YXIgTElTUF9TSU1QTEVfTlVNQkVSX1JFID0gJyhcXFxcLXxcXFxcKyk/XFxcXGQrKFxcXFwuXFxcXGQrfFxcXFwvXFxcXGQrKT8oKGR8ZXxmfGx8c3xEfEV8RnxMfFMpKFxcXFwrfFxcXFwtKT9cXFxcZCspPyc7XG4gIHZhciBTSEVCQU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMhJywgZW5kOiAnJCdcbiAgfTtcbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46ICdcXFxcYih0ezF9fG5pbClcXFxcYidcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IExJU1BfU0lNUExFX05VTUJFUl9SRSwgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJyMoYnxCKVswLTFdKygvWzAtMV0rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMob3xPKVswLTddKygvWzAtN10rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMoeHxYKVswLTlhLWZBLUZdKygvWzAtOWEtZkEtRl0rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMoY3xDKVxcXFwoJyArIExJU1BfU0lNUExFX05VTUJFUl9SRSArICcgKycgKyBMSVNQX1NJTVBMRV9OVU1CRVJfUkUsIGVuZDogJ1xcXFwpJ31cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkcgPSBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KTtcbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJzsnLCAnJCcsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgYmVnaW46ICdcXFxcKicsIGVuZDogJ1xcXFwqJ1xuICB9O1xuICB2YXIgS0VZV09SRCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzomXScgKyBMSVNQX0lERU5UX1JFXG4gIH07XG4gIHZhciBJREVOVCA9IHtcbiAgICBiZWdpbjogTElTUF9JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE1FQyA9IHtcbiAgICBiZWdpbjogTUVDX1JFXG4gIH07XG4gIHZhciBRVU9URURfTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBMSVRFUkFMLCBTVFJJTkcsIE5VTUJFUiwgSURFTlRdXG4gIH07XG4gIHZhciBRVU9URUQgPSB7XG4gICAgY29udGFpbnM6IFtOVU1CRVIsIFNUUklORywgVkFSSUFCTEUsIEtFWVdPUkQsIFFVT1RFRF9MSVNULCBJREVOVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbXFwnYF1cXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKHF1b3RlICcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAncXVvdGUnfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCcnICsgTUVDX1JFXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgUVVPVEVEX0FUT00gPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcJycgKyBMSVNQX0lERU5UX1JFfSxcbiAgICAgIHtiZWdpbjogJyNcXCcnICsgTElTUF9JREVOVF9SRSArICcoOjonICsgTElTUF9JREVOVF9SRSArICcpKid9XG4gICAgXVxuICB9O1xuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoXFxcXHMqJywgZW5kOiAnXFxcXCknXG4gIH07XG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBMSVNULmNvbnRhaW5zID0gW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge2JlZ2luOiBMSVNQX0lERU5UX1JFfSxcbiAgICAgICAge2JlZ2luOiBNRUNfUkV9XG4gICAgICBdXG4gICAgfSxcbiAgICBCT0RZXG4gIF07XG4gIEJPRFkuY29udGFpbnMgPSBbUVVPVEVELCBRVU9URURfQVRPTSwgTElTVCwgTElURVJBTCwgTlVNQkVSLCBTVFJJTkcsIENPTU1FTlQsIFZBUklBQkxFLCBLRVlXT1JELCBNRUMsIElERU5UXTtcblxuICByZXR1cm4ge1xuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOVU1CRVIsXG4gICAgICBTSEVCQU5HLFxuICAgICAgTElURVJBTCxcbiAgICAgIFNUUklORyxcbiAgICAgIENPTU1FTlQsXG4gICAgICBRVU9URUQsXG4gICAgICBRVU9URURfQVRPTSxcbiAgICAgIExJU1QsXG4gICAgICBJREVOVFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcXFxiKFtndHBzXVtBLVpdezF9W2EtekEtWjAtOV0qKShcXFxcWy4rXFxcXF0pPyg/OlxcXFxzKj8pJ30sXG4gICAgICB7YmVnaW46ICdcXFxcJF9bQS1aXSsnfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoJy0tJywgJyQnKSxcbiAgICBobGpzLkNPTU1FTlQoJ1teOl0vLycsICckJylcbiAgXTtcbiAgdmFyIFRJVExFMSA9IGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFxcXGJfKnJpZ1tBLVpdK1tBLVphLXowLTlfXFxcXC1dKid9LFxuICAgICAge2JlZ2luOiAnXFxcXGJfW2EtejAtOVxcXFwtXSsnfVxuICAgIF1cbiAgfSk7XG4gIHZhciBUSVRMRTIgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdcXFxcYihbQS1aYS16MC05X1xcXFwtXSspXFxcXGInfSk7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICckX0NPT0tJRSAkX0ZJTEVTICRfR0VUICRfR0VUX0JJTkFSWSAkX0dFVF9SQVcgJF9QT1NUICRfUE9TVF9CSU5BUlkgJF9QT1NUX1JBVyAkX1NFU1NJT04gJF9TRVJWRVIgJyArXG4gICAgICAgICdjb2RlcG9pbnQgY29kZXBvaW50cyBzZWdtZW50IHNlZ21lbnRzIGNvZGV1bml0IGNvZGV1bml0cyBzZW50ZW5jZSBzZW50ZW5jZXMgdHJ1ZVdvcmQgdHJ1ZVdvcmRzIHBhcmFncmFwaCAnICtcbiAgICAgICAgJ2FmdGVyIGJ5dGUgYnl0ZXMgZW5nbGlzaCB0aGUgdW50aWwgaHR0cCBmb3JldmVyIGRlc2NlbmRpbmcgdXNpbmcgbGluZSByZWFsOCB3aXRoIHNldmVudGggJyArXG4gICAgICAgICdmb3Igc3Rkb3V0IGZpbmFsbHkgZWxlbWVudCB3b3JkIHdvcmRzIGZvdXJ0aCBiZWZvcmUgYmxhY2sgbmludGggc2l4dGggY2hhcmFjdGVycyBjaGFycyBzdGRlcnIgJyArXG4gICAgICAgICd1SW50MSB1SW50MXMgdUludDIgdUludDJzIHN0ZGluIHN0cmluZyBsaW5lcyByZWxhdGl2ZSByZWwgYW55IGZpZnRoIGl0ZW1zIGZyb20gbWlkZGxlIG1pZCAnICtcbiAgICAgICAgJ2F0IGVsc2Ugb2YgY2F0Y2ggdGhlbiB0aGlyZCBpdCBmaWxlIG1pbGxpc2Vjb25kcyBzZWNvbmRzIHNlY29uZCBzZWNzIHNlYyBpbnQxIGludDFzIGludDQgJyArXG4gICAgICAgICdpbnQ0cyBpbnRlcm5ldCBpbnQyIGludDJzIG5vcm1hbCB0ZXh0IGl0ZW0gbGFzdCBsb25nIGRldGFpbGVkIGVmZmVjdGl2ZSB1SW50NCB1SW50NHMgcmVwZWF0ICcgK1xuICAgICAgICAnZW5kIHJlcGVhdCBVUkwgaW4gdHJ5IGludG8gc3dpdGNoIHRvIHdvcmRzIGh0dHBzIHRva2VuIGJpbmZpbGUgZWFjaCB0ZW50aCBhcyB0aWNrcyB0aWNrICcgK1xuICAgICAgICAnc3lzdGVtIHJlYWw0IGJ5IGRhdGVJdGVtcyB3aXRob3V0IGNoYXIgY2hhcmFjdGVyIGFzY2VuZGluZyBlaWdodGggd2hvbGUgZGF0ZVRpbWUgbnVtZXJpYyBzaG9ydCAnICtcbiAgICAgICAgJ2ZpcnN0IGZ0cCBpbnRlZ2VyIGFiYnJldmlhdGVkIGFiYnIgYWJicmV2IHByaXZhdGUgY2FzZSB3aGlsZSBpZiAnICtcbiAgICAgICAgJ2RpdiBtb2Qgd3JhcCBhbmQgb3IgYml0QW5kIGJpdE5vdCBiaXRPciBiaXRYb3IgYW1vbmcgbm90IGluIGEgYW4gd2l0aGluICcgK1xuICAgICAgICAnY29udGFpbnMgZW5kcyB3aXRoIGJlZ2lucyB0aGUga2V5cyBvZiBrZXlzJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdTSVggVEVOIEZPUk1GRUVEIE5JTkUgWkVSTyBOT05FIFNQQUNFIEZPVVIgRkFMU0UgQ09MT04gQ1JMRiBQSSBDT01NQSBFTkRPRkZJTEUgRU9GIEVJR0hUIEZJVkUgJyArXG4gICAgICAgICdRVU9URSBFTVBUWSBPTkUgVFJVRSBSRVRVUk4gQ1IgTElORUZFRUQgUklHSFQgQkFDS1NMQVNIIE5VTEwgU0VWRU4gVEFCIFRIUkVFIFRXTyAnICtcbiAgICAgICAgJ3NpeCB0ZW4gZm9ybWZlZWQgbmluZSB6ZXJvIG5vbmUgc3BhY2UgZm91ciBmYWxzZSBjb2xvbiBjcmxmIHBpIGNvbW1hIGVuZG9mZmlsZSBlb2YgZWlnaHQgZml2ZSAnICtcbiAgICAgICAgJ3F1b3RlIGVtcHR5IG9uZSB0cnVlIHJldHVybiBjciBsaW5lZmVlZCByaWdodCBiYWNrc2xhc2ggbnVsbCBzZXZlbiB0YWIgdGhyZWUgdHdvICcgK1xuICAgICAgICAnUklWRVJTSU9OIFJJU1RBVEUgRklMRV9SRUFEX01PREUgRklMRV9XUklURV9NT0RFIEZJTEVfV1JJVEVfTU9ERSBESVJfV1JJVEVfTU9ERSBGSUxFX1JFQURfVU1BU0sgJyArXG4gICAgICAgICdGSUxFX1dSSVRFX1VNQVNLIERJUl9SRUFEX1VNQVNLIERJUl9XUklURV9VTUFTSycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3B1dCBhYnMgYWNvcyBhbGlhc1JlZmVyZW5jZSBhbm51aXR5IGFycmF5RGVjb2RlIGFycmF5RW5jb2RlIGFzaW4gYXRhbiBhdGFuMiBhdmVyYWdlIGF2ZyBhdmdEZXYgYmFzZTY0RGVjb2RlICcgK1xuICAgICAgICAnYmFzZTY0RW5jb2RlIGJhc2VDb252ZXJ0IGJpbmFyeURlY29kZSBiaW5hcnlFbmNvZGUgYnl0ZU9mZnNldCBieXRlVG9OdW0gY2FjaGVkVVJMIGNhY2hlZFVSTHMgY2hhclRvTnVtICcgK1xuICAgICAgICAnY2lwaGVyTmFtZXMgY29kZXBvaW50T2Zmc2V0IGNvZGVwb2ludFByb3BlcnR5IGNvZGVwb2ludFRvTnVtIGNvZGV1bml0T2Zmc2V0IGNvbW1hbmROYW1lcyBjb21wb3VuZCBjb21wcmVzcyAnICtcbiAgICAgICAgJ2NvbnN0YW50TmFtZXMgY29zIGRhdGUgZGF0ZUZvcm1hdCBkZWNvbXByZXNzIGRpZmZlcmVuY2UgZGlyZWN0b3JpZXMgJyArXG4gICAgICAgICdkaXNrU3BhY2UgRE5TU2VydmVycyBleHAgZXhwMSBleHAyIGV4cDEwIGV4dGVudHMgZmlsZXMgZmx1c2hFdmVudHMgZm9sZGVycyBmb3JtYXQgZnVuY3Rpb25OYW1lcyBnZW9tZXRyaWNNZWFuIGdsb2JhbCAnICtcbiAgICAgICAgJ2dsb2JhbHMgaGFzTWVtb3J5IGhhcm1vbmljTWVhbiBob3N0QWRkcmVzcyBob3N0QWRkcmVzc1RvTmFtZSBob3N0TmFtZSBob3N0TmFtZVRvQWRkcmVzcyBpc051bWJlciBJU09Ub01hYyBpdGVtT2Zmc2V0ICcgK1xuICAgICAgICAna2V5cyBsZW4gbGVuZ3RoIGxpYlVSTEVycm9yRGF0YSBsaWJVcmxGb3JtRGF0YSBsaWJVUkxmdHBDb21tYW5kIGxpYlVSTExhc3RIVFRQSGVhZGVycyBsaWJVUkxMYXN0UkhIZWFkZXJzICcgK1xuICAgICAgICAnbGliVXJsTXVsdGlwYXJ0Rm9ybUFkZFBhcnQgbGliVXJsTXVsdGlwYXJ0Rm9ybURhdGEgbGliVVJMVmVyc2lvbiBsaW5lT2Zmc2V0IGxuIGxuMSBsb2NhbE5hbWVzIGxvZyBsb2cyIGxvZzEwICcgK1xuICAgICAgICAnbG9uZ0ZpbGVQYXRoIGxvd2VyIG1hY1RvSVNPIG1hdGNoQ2h1bmsgbWF0Y2hUZXh0IG1hdHJpeE11bHRpcGx5IG1heCBtZDVEaWdlc3QgbWVkaWFuIG1lcmdlIG1lc3NhZ2VBdXRoZW50aWNhdGlvbkNvZGUgbWVzc2FnZURpZ2VzdCBtaWxsaXNlYyAnICtcbiAgICAgICAgJ21pbGxpc2VjcyBtaWxsaXNlY29uZCBtaWxsaXNlY29uZHMgbWluIG1vbnRoTmFtZXMgbmF0aXZlQ2hhclRvTnVtIG5vcm1hbGl6ZVRleHQgbnVtIG51bWJlciBudW1Ub0J5dGUgbnVtVG9DaGFyICcgK1xuICAgICAgICAnbnVtVG9Db2RlcG9pbnQgbnVtVG9OYXRpdmVDaGFyIG9mZnNldCBvcGVuIG9wZW5maWxlcyBvcGVuUHJvY2Vzc2VzIG9wZW5Qcm9jZXNzSURzIG9wZW5Tb2NrZXRzICcgK1xuICAgICAgICAncGFyYWdyYXBoT2Zmc2V0IHBhcmFtQ291bnQgcGFyYW0gcGFyYW1zIHBlZXJBZGRyZXNzIHBlbmRpbmdNZXNzYWdlcyBwbGF0Zm9ybSBwb3BTdGREZXYgcG9wdWxhdGlvblN0YW5kYXJkRGV2aWF0aW9uICcgK1xuICAgICAgICAncG9wdWxhdGlvblZhcmlhbmNlIHBvcFZhcmlhbmNlIHByb2Nlc3NJRCByYW5kb20gcmFuZG9tQnl0ZXMgcmVwbGFjZVRleHQgcmVzdWx0IHJldkNyZWF0ZVhNTFRyZWUgcmV2Q3JlYXRlWE1MVHJlZUZyb21GaWxlICcgK1xuICAgICAgICAncmV2Q3VycmVudFJlY29yZCByZXZDdXJyZW50UmVjb3JkSXNGaXJzdCByZXZDdXJyZW50UmVjb3JkSXNMYXN0IHJldkRhdGFiYXNlQ29sdW1uQ291bnQgcmV2RGF0YWJhc2VDb2x1bW5Jc051bGwgJyArXG4gICAgICAgICdyZXZEYXRhYmFzZUNvbHVtbkxlbmd0aHMgcmV2RGF0YWJhc2VDb2x1bW5OYW1lcyByZXZEYXRhYmFzZUNvbHVtbk5hbWVkIHJldkRhdGFiYXNlQ29sdW1uTnVtYmVyZWQgJyArXG4gICAgICAgICdyZXZEYXRhYmFzZUNvbHVtblR5cGVzIHJldkRhdGFiYXNlQ29ubmVjdFJlc3VsdCByZXZEYXRhYmFzZUN1cnNvcnMgcmV2RGF0YWJhc2VJRCByZXZEYXRhYmFzZVRhYmxlTmFtZXMgJyArXG4gICAgICAgICdyZXZEYXRhYmFzZVR5cGUgcmV2RGF0YUZyb21RdWVyeSByZXZkYl9jbG9zZUN1cnNvciByZXZkYl9jb2x1bW5ieW51bWJlciByZXZkYl9jb2x1bW5jb3VudCByZXZkYl9jb2x1bW5pc251bGwgJyArXG4gICAgICAgICdyZXZkYl9jb2x1bW5sZW5ndGhzIHJldmRiX2NvbHVtbm5hbWVzIHJldmRiX2NvbHVtbnR5cGVzIHJldmRiX2NvbW1pdCByZXZkYl9jb25uZWN0IHJldmRiX2Nvbm5lY3Rpb25zICcgK1xuICAgICAgICAncmV2ZGJfY29ubmVjdGlvbmVyciByZXZkYl9jdXJyZW50cmVjb3JkIHJldmRiX2N1cnNvcmNvbm5lY3Rpb24gcmV2ZGJfY3Vyc29yZXJyIHJldmRiX2N1cnNvcnMgcmV2ZGJfZGJ0eXBlICcgK1xuICAgICAgICAncmV2ZGJfZGlzY29ubmVjdCByZXZkYl9leGVjdXRlIHJldmRiX2lzZW9mIHJldmRiX2lzYm9mIHJldmRiX21vdmVmaXJzdCByZXZkYl9tb3ZlbGFzdCByZXZkYl9tb3ZlbmV4dCAnICtcbiAgICAgICAgJ3JldmRiX21vdmVwcmV2IHJldmRiX3F1ZXJ5IHJldmRiX3F1ZXJ5bGlzdCByZXZkYl9yZWNvcmRjb3VudCByZXZkYl9yb2xsYmFjayByZXZkYl90YWJsZW5hbWVzICcgK1xuICAgICAgICAncmV2R2V0RGF0YWJhc2VEcml2ZXJQYXRoIHJldk51bWJlck9mUmVjb3JkcyByZXZPcGVuRGF0YWJhc2UgcmV2T3BlbkRhdGFiYXNlcyByZXZRdWVyeURhdGFiYXNlICcgK1xuICAgICAgICAncmV2UXVlcnlEYXRhYmFzZUJsb2IgcmV2UXVlcnlSZXN1bHQgcmV2UXVlcnlJc0F0U3RhcnQgcmV2UXVlcnlJc0F0RW5kIHJldlVuaXhGcm9tTWFjUGF0aCByZXZYTUxBdHRyaWJ1dGUgJyArXG4gICAgICAgICdyZXZYTUxBdHRyaWJ1dGVzIHJldlhNTEF0dHJpYnV0ZVZhbHVlcyByZXZYTUxDaGlsZENvbnRlbnRzIHJldlhNTENoaWxkTmFtZXMgcmV2WE1MQ3JlYXRlVHJlZUZyb21GaWxlV2l0aE5hbWVzcGFjZXMgJyArXG4gICAgICAgICdyZXZYTUxDcmVhdGVUcmVlV2l0aE5hbWVzcGFjZXMgcmV2WE1MRGF0YUZyb21YUGF0aFF1ZXJ5IHJldlhNTEV2YWx1YXRlWFBhdGggcmV2WE1MRmlyc3RDaGlsZCByZXZYTUxNYXRjaGluZ05vZGUgJyArXG4gICAgICAgICdyZXZYTUxOZXh0U2libGluZyByZXZYTUxOb2RlQ29udGVudHMgcmV2WE1MTnVtYmVyT2ZDaGlsZHJlbiByZXZYTUxQYXJlbnQgcmV2WE1MUHJldmlvdXNTaWJsaW5nICcgK1xuICAgICAgICAncmV2WE1MUm9vdE5vZGUgcmV2WE1MUlBDX0NyZWF0ZVJlcXVlc3QgcmV2WE1MUlBDX0RvY3VtZW50cyByZXZYTUxSUENfRXJyb3IgJyArXG4gICAgICAgICdyZXZYTUxSUENfR2V0SG9zdCByZXZYTUxSUENfR2V0TWV0aG9kIHJldlhNTFJQQ19HZXRQYXJhbSByZXZYTUxUZXh0IHJldlhNTFJQQ19FeGVjdXRlICcgK1xuICAgICAgICAncmV2WE1MUlBDX0dldFBhcmFtQ291bnQgcmV2WE1MUlBDX0dldFBhcmFtTm9kZSByZXZYTUxSUENfR2V0UGFyYW1UeXBlIHJldlhNTFJQQ19HZXRQYXRoIHJldlhNTFJQQ19HZXRQb3J0ICcgK1xuICAgICAgICAncmV2WE1MUlBDX0dldFByb3RvY29sIHJldlhNTFJQQ19HZXRSZXF1ZXN0IHJldlhNTFJQQ19HZXRSZXNwb25zZSByZXZYTUxSUENfR2V0U29ja2V0IHJldlhNTFRyZWUgJyArXG4gICAgICAgICdyZXZYTUxUcmVlcyByZXZYTUxWYWxpZGF0ZURURCByZXZaaXBEZXNjcmliZUl0ZW0gcmV2WmlwRW51bWVyYXRlSXRlbXMgcmV2WmlwT3BlbkFyY2hpdmVzIHJvdW5kIHNhbXBWYXJpYW5jZSAnICtcbiAgICAgICAgJ3NlYyBzZWNzIHNlY29uZHMgc2VudGVuY2VPZmZzZXQgc2hhMURpZ2VzdCBzaGVsbCBzaG9ydEZpbGVQYXRoIHNpbiBzcGVjaWFsRm9sZGVyUGF0aCBzcXJ0IHN0YW5kYXJkRGV2aWF0aW9uIHN0YXRSb3VuZCAnICtcbiAgICAgICAgJ3N0ZERldiBzdW0gc3lzRXJyb3Igc3lzdGVtVmVyc2lvbiB0YW4gdGVtcE5hbWUgdGV4dERlY29kZSB0ZXh0RW5jb2RlIHRpY2sgdGlja3MgdGltZSB0byB0b2tlbk9mZnNldCB0b0xvd2VyIHRvVXBwZXIgJyArXG4gICAgICAgICd0cmFuc3Bvc2UgdHJ1ZXdvcmRPZmZzZXQgdHJ1bmMgdW5pRGVjb2RlIHVuaUVuY29kZSB1cHBlciBVUkxEZWNvZGUgVVJMRW5jb2RlIFVSTFN0YXR1cyB1dWlkIHZhbHVlIHZhcmlhYmxlTmFtZXMgJyArXG4gICAgICAgICd2YXJpYW5jZSB2ZXJzaW9uIHdhaXREZXB0aCB3ZWVrZGF5TmFtZXMgd29yZE9mZnNldCB4c2x0QXBwbHlTdHlsZXNoZWV0IHhzbHRBcHBseVN0eWxlc2hlZXRGcm9tRmlsZSB4c2x0TG9hZFN0eWxlc2hlZXQgJyArXG4gICAgICAgICd4c2x0TG9hZFN0eWxlc2hlZXRGcm9tRmlsZSBhZGQgYnJlYWtwb2ludCBjYW5jZWwgY2xlYXIgbG9jYWwgdmFyaWFibGUgZmlsZSB3b3JkIGxpbmUgZm9sZGVyIGRpcmVjdG9yeSBVUkwgY2xvc2Ugc29ja2V0IHByb2Nlc3MgJyArXG4gICAgICAgICdjb21iaW5lIGNvbnN0YW50IGNvbnZlcnQgY3JlYXRlIG5ldyBhbGlhcyBmb2xkZXIgZGlyZWN0b3J5IGRlY3J5cHQgZGVsZXRlIHZhcmlhYmxlIHdvcmQgbGluZSBmb2xkZXIgJyArXG4gICAgICAgICdkaXJlY3RvcnkgVVJMIGRpc3BhdGNoIGRpdmlkZSBkbyBlbmNyeXB0IGZpbHRlciBnZXQgaW5jbHVkZSBpbnRlcnNlY3Qga2lsbCBsaWJVUkxEb3dubG9hZFRvRmlsZSAnICtcbiAgICAgICAgJ2xpYlVSTEZvbGxvd0h0dHBSZWRpcmVjdHMgbGliVVJMZnRwVXBsb2FkIGxpYlVSTGZ0cFVwbG9hZEZpbGUgbGliVVJMcmVzZXRBbGwgbGliVXJsU2V0QXV0aENhbGxiYWNrIGxpYlVSTFNldERyaXZlciAnICtcbiAgICAgICAgJ2xpYlVSTFNldEN1c3RvbUhUVFBIZWFkZXJzIGxpYlVybFNldEV4cGVjdDEwMCBsaWJVUkxTZXRGVFBMaXN0Q29tbWFuZCBsaWJVUkxTZXRGVFBNb2RlIGxpYlVSTFNldEZUUFN0b3BUaW1lICcgK1xuICAgICAgICAnbGliVVJMU2V0U3RhdHVzQ2FsbGJhY2sgbG9hZCBleHRlbnNpb24gbG9hZGVkRXh0ZW5zaW9ucyBtdWx0aXBseSBzb2NrZXQgcHJlcGFyZSBwcm9jZXNzIHBvc3Qgc2VlayByZWwgcmVsYXRpdmUgcmVhZCBmcm9tIHByb2Nlc3MgcmVuYW1lICcgK1xuICAgICAgICAncmVwbGFjZSByZXF1aXJlIHJlc2V0QWxsIHJlc29sdmUgcmV2QWRkWE1MTm9kZSByZXZBcHBlbmRYTUwgcmV2Q2xvc2VDdXJzb3IgcmV2Q2xvc2VEYXRhYmFzZSByZXZDb21taXREYXRhYmFzZSAnICtcbiAgICAgICAgJ3JldkNvcHlGaWxlIHJldkNvcHlGb2xkZXIgcmV2Q29weVhNTE5vZGUgcmV2RGVsZXRlRm9sZGVyIHJldkRlbGV0ZVhNTE5vZGUgcmV2RGVsZXRlQWxsWE1MVHJlZXMgJyArXG4gICAgICAgICdyZXZEZWxldGVYTUxUcmVlIHJldkV4ZWN1dGVTUUwgcmV2R29VUkwgcmV2SW5zZXJ0WE1MTm9kZSByZXZNb3ZlRm9sZGVyIHJldk1vdmVUb0ZpcnN0UmVjb3JkIHJldk1vdmVUb0xhc3RSZWNvcmQgJyArXG4gICAgICAgICdyZXZNb3ZlVG9OZXh0UmVjb3JkIHJldk1vdmVUb1ByZXZpb3VzUmVjb3JkIHJldk1vdmVUb1JlY29yZCByZXZNb3ZlWE1MTm9kZSByZXZQdXRJbnRvWE1MTm9kZSByZXZSb2xsQmFja0RhdGFiYXNlICcgK1xuICAgICAgICAncmV2U2V0RGF0YWJhc2VEcml2ZXJQYXRoIHJldlNldFhNTEF0dHJpYnV0ZSByZXZYTUxSUENfQWRkUGFyYW0gcmV2WE1MUlBDX0RlbGV0ZUFsbERvY3VtZW50cyByZXZYTUxBZGREVEQgJyArXG4gICAgICAgICdyZXZYTUxSUENfRnJlZSByZXZYTUxSUENfRnJlZUFsbCByZXZYTUxSUENfRGVsZXRlRG9jdW1lbnQgcmV2WE1MUlBDX0RlbGV0ZVBhcmFtIHJldlhNTFJQQ19TZXRIb3N0ICcgK1xuICAgICAgICAncmV2WE1MUlBDX1NldE1ldGhvZCByZXZYTUxSUENfU2V0UG9ydCByZXZYTUxSUENfU2V0UHJvdG9jb2wgcmV2WE1MUlBDX1NldFNvY2tldCByZXZaaXBBZGRJdGVtV2l0aERhdGEgJyArXG4gICAgICAgICdyZXZaaXBBZGRJdGVtV2l0aEZpbGUgcmV2WmlwQWRkVW5jb21wcmVzc2VkSXRlbVdpdGhEYXRhIHJldlppcEFkZFVuY29tcHJlc3NlZEl0ZW1XaXRoRmlsZSByZXZaaXBDYW5jZWwgJyArXG4gICAgICAgICdyZXZaaXBDbG9zZUFyY2hpdmUgcmV2WmlwRGVsZXRlSXRlbSByZXZaaXBFeHRyYWN0SXRlbVRvRmlsZSByZXZaaXBFeHRyYWN0SXRlbVRvVmFyaWFibGUgcmV2WmlwU2V0UHJvZ3Jlc3NDYWxsYmFjayAnICtcbiAgICAgICAgJ3JldlppcFJlbmFtZUl0ZW0gcmV2WmlwUmVwbGFjZUl0ZW1XaXRoRGF0YSByZXZaaXBSZXBsYWNlSXRlbVdpdGhGaWxlIHJldlppcE9wZW5BcmNoaXZlIHNlbmQgc2V0IHNvcnQgc3BsaXQgc3RhcnQgc3RvcCAnICtcbiAgICAgICAgJ3N1YnRyYWN0IHN5bW1ldHJpYyB1bmlvbiB1bmxvYWQgdmVjdG9yRG90UHJvZHVjdCB3YWl0IHdyaXRlJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFZBUklBQkxFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYmVuZFxcXFxzaWZcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgVElUTEUyLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBUSVRMRTFcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiZW5kXFxcXHMrJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAnZW5kJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBUSVRMRTIsXG4gICAgICAgICAgVElUTEUxXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NvbW1hbmQgb24nLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBUSVRMRTIsXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIFRJVExFMVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJzxcXFxcPyhyZXZ8bGN8bGl2ZWNvZGUpJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgYmVnaW46ICc8XFxcXD8nIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFw/PicgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgVElUTEUxXG4gICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUyksXG4gICAgaWxsZWdhbDogJzskfF5cXFxcW3xePXwmfHsnXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgIC8vIEpTIGtleXdvcmRzXG4gICAgICAnaW4gaWYgZm9yIHdoaWxlIGZpbmFsbHkgbmV3IGRvIHJldHVybiBlbHNlIGJyZWFrIGNhdGNoIGluc3RhbmNlb2YgdGhyb3cgdHJ5IHRoaXMgJyArXG4gICAgICAnc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgZGVidWdnZXIgY2FzZSBkZWZhdWx0IGZ1bmN0aW9uIHZhciB3aXRoICcgK1xuICAgICAgLy8gTGl2ZVNjcmlwdCBrZXl3b3Jkc1xuICAgICAgJ3RoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QgaXQgdGhhdCBvdGhlcndpc2UgZnJvbSB0byB0aWwgZmFsbHRocm91Z2ggc3VwZXIgJyArXG4gICAgICAnY2FzZSBkZWZhdWx0IGZ1bmN0aW9uIHZhciB2b2lkIGNvbnN0IGxldCBlbnVtIGV4cG9ydCBpbXBvcnQgbmF0aXZlIGxpc3QgbWFwICcgK1xuICAgICAgJ19faGFzUHJvcCBfX2V4dGVuZHMgX19zbGljZSBfX2JpbmQgX19pbmRleE9mJyxcbiAgICBsaXRlcmFsOlxuICAgICAgLy8gSlMgbGl0ZXJhbHNcbiAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkICcgK1xuICAgICAgLy8gTGl2ZVNjcmlwdCBsaXRlcmFsc1xuICAgICAgJ3llcyBubyBvbiBvZmYgaXQgdGhhdCB2b2lkJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICducG0gcmVxdWlyZSBjb25zb2xlIHByaW50IG1vZHVsZSBnbG9iYWwgd2luZG93IGRvY3VtZW50J1xuICB9O1xuICB2YXIgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXSg/OlxcLVswLTlBLVphLXokX118WzAtOUEtWmEteiRfXSkqJztcbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBKU19JREVOVF9SRX0pO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvI1xcey8sIGVuZDogL30vLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICB9O1xuICB2YXIgU1VCU1RfU0lNUExFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogLyNbQS1aYS16JF9dLywgZW5kOiAvKD86XFwtWzAtOUEtWmEteiRfXXxbMC05QS1aYS16JF9dKSovLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICB9O1xuICB2YXIgRVhQUkVTU0lPTlMgPSBbXG4gICAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMFt4WF1bYS1mQS1GMC05X10rKXwoXFxcXGJcXFxcZChcXFxcZHxfXFxcXGQpKihcXFxcLihcXFxcZChcXFxcZHxfXFxcXGQpKik/KT8oXypbZUVdKFstK11cXFxcZChfXFxcXGR8XFxcXGQpKik/KT9bX2Etel0qKScsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBzdGFydHM6IHtlbmQ6ICcoXFxcXHMqLyk/JywgcmVsZXZhbmNlOiAwfSAvLyBhIG51bWJlciB0cmllcyB0byBlYXQgdGhlIGZvbGxvd2luZyBzbGFzaCB0byBwcmV2ZW50IHRyZWF0aW5nIGl0IGFzIGEgcmVnZXhwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJy8sIGVuZDogLycvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIlwiXCIvLCBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVCwgU1VCU1RfU0lNUExFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIFNVQlNUX1NJTVBMRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXFxcXC8sIGVuZDogLyhcXHN8JCkvLFxuICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJy8vJywgZW5kOiAnLy9bZ2ltXSonLFxuICAgICAgICAgIGNvbnRhaW5zOiBbU1VCU1QsIGhsanMuSEFTSF9DT01NRU5UX01PREVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyByZWdleCBjYW4ndCBzdGFydCB3aXRoIHNwYWNlIHRvIHBhcnNlIHggLyAyIC8gMyBhcyB0d28gZGl2aXNpb25zXG4gICAgICAgICAgLy8gcmVnZXggY2FuJ3Qgc3RhcnQgd2l0aCAqLCBhbmQgaXQgc3VwcG9ydHMgYW4gXCJpbGxlZ2FsXCIgaW4gdGhlIG1haW4gbW9kZVxuICAgICAgICAgIGJlZ2luOiAvXFwvKD8hWyAqXSkoXFxcXFxcL3wuKSo/XFwvW2dpbV0qKD89XFxXKS9cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICdAJyArIEpTX0lERU5UX1JFXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJ2BgJywgZW5kOiAnYGAnLFxuICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICdqYXZhc2NyaXB0J1xuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFWFBSRVNTSU9OUztcblxuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIC8qIFdlIG5lZWQgYW5vdGhlciBjb250YWluZWQgbmFtZWxlc3MgbW9kZSB0byBub3QgaGF2ZSBldmVyeSBuZXN0ZWRcbiAgICBwYWlyIG9mIHBhcmVucyB0byBiZSBjYWxsZWQgXCJwYXJhbXNcIiAqL1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogWydzZWxmJ10uY29uY2F0KEVYUFJFU1NJT05TKVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgU1lNQk9MUyA9IHtcbiAgICBiZWdpbjogJygjPT58PT58XFxcXHw+PnwtPy0+fFxcXFwhLT4pJ1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydscyddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlMuY29uY2F0KFtcbiAgICAgIGhsanMuQ09NTUVOVCgnXFxcXC9cXFxcKicsICdcXFxcKlxcXFwvJyksXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgU1lNQk9MUywgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBjb250YWluczogW1RJVExFLCBQQVJBTVNdLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJygnICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqKD86PXw6PSlcXFxccyopPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCXFxcXC0+XFxcXCo/JywgZW5kOiAnXFxcXC0+XFxcXCo/J1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcoJyArIEpTX0lERU5UX1JFICsgJ1xcXFxzKig/Oj18Oj0pXFxcXHMqKT8hPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCWy1+XXsxLDJ9PlxcXFwqPycsIGVuZDogJ1stfl17MSwyfT5cXFxcKj8nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJygnICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqKD86PXw6PSlcXFxccyopPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCIT9bLX5dezEsMn0+XFxcXCo/JywgZW5kOiAnIT9bLX5dezEsMn0+XFxcXCo/J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMnLFxuICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbVElUTEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBUSVRMRVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGlkZW50aWZpZXIgPSAnKFstYS16QS1aJC5fXVtcXFxcd1xcXFwtJC5dKiknO1xuICByZXR1cm4ge1xuICAgIC8vbGV4ZW1lczogJ1suJV0/JyArIGhsanMuSURFTlRfUkUsXG4gICAga2V5d29yZHM6XG4gICAgICAnYmVnaW4gZW5kIHRydWUgZmFsc2UgZGVjbGFyZSBkZWZpbmUgZ2xvYmFsICcgK1xuICAgICAgJ2NvbnN0YW50IHByaXZhdGUgbGlua2VyX3ByaXZhdGUgaW50ZXJuYWwgJyArXG4gICAgICAnYXZhaWxhYmxlX2V4dGVybmFsbHkgbGlua29uY2UgbGlua29uY2Vfb2RyIHdlYWsgJyArXG4gICAgICAnd2Vha19vZHIgYXBwZW5kaW5nIGRsbGltcG9ydCBkbGxleHBvcnQgY29tbW9uICcgK1xuICAgICAgJ2RlZmF1bHQgaGlkZGVuIHByb3RlY3RlZCBleHRlcm5fd2VhayBleHRlcm5hbCAnICtcbiAgICAgICd0aHJlYWRfbG9jYWwgemVyb2luaXRpYWxpemVyIHVuZGVmIG51bGwgdG8gdGFpbCAnICtcbiAgICAgICd0YXJnZXQgdHJpcGxlIGRhdGFsYXlvdXQgdm9sYXRpbGUgbnV3IG5zdyBubmFuICcgK1xuICAgICAgJ25pbmYgbnN6IGFyY3AgZmFzdCBleGFjdCBpbmJvdW5kcyBhbGlnbiAnICtcbiAgICAgICdhZGRyc3BhY2Ugc2VjdGlvbiBhbGlhcyBtb2R1bGUgYXNtIHNpZGVlZmZlY3QgJyArXG4gICAgICAnZ2MgZGJnIGxpbmtlcl9wcml2YXRlX3dlYWsgYXR0cmlidXRlcyBibG9ja2FkZHJlc3MgJyArXG4gICAgICAnaW5pdGlhbGV4ZWMgbG9jYWxkeW5hbWljIGxvY2FsZXhlYyBwcmVmaXggdW5uYW1lZF9hZGRyICcgK1xuICAgICAgJ2NjYyBmYXN0Y2MgY29sZGNjIHg4Nl9zdGRjYWxsY2MgeDg2X2Zhc3RjYWxsY2MgJyArXG4gICAgICAnYXJtX2FwY3NjYyBhcm1fYWFwY3NjYyBhcm1fYWFwY3NfdmZwY2MgcHR4X2RldmljZSAnICtcbiAgICAgICdwdHhfa2VybmVsIGludGVsX29jbF9iaWNjIG1zcDQzMF9pbnRyY2Mgc3Bpcl9mdW5jICcgK1xuICAgICAgJ3NwaXJfa2VybmVsIHg4Nl82NF9zeXN2Y2MgeDg2XzY0X3dpbjY0Y2MgeDg2X3RoaXNjYWxsY2MgJyArXG4gICAgICAnY2MgYyBzaWduZXh0IHplcm9leHQgaW5yZWcgc3JldCBub3Vud2luZCAnICtcbiAgICAgICdub3JldHVybiBub2FsaWFzIG5vY2FwdHVyZSBieXZhbCBuZXN0IHJlYWRub25lICcgK1xuICAgICAgJ3JlYWRvbmx5IGlubGluZWhpbnQgbm9pbmxpbmUgYWx3YXlzaW5saW5lIG9wdHNpemUgc3NwICcgK1xuICAgICAgJ3NzcHJlcSBub3JlZHpvbmUgbm9pbXBsaWNpdGZsb2F0IG5ha2VkIGJ1aWx0aW4gY29sZCAnICtcbiAgICAgICdub2J1aWx0aW4gbm9kdXBsaWNhdGUgbm9ubGF6eWJpbmQgb3B0bm9uZSByZXR1cm5zX3R3aWNlICcgK1xuICAgICAgJ3Nhbml0aXplX2FkZHJlc3Mgc2FuaXRpemVfbWVtb3J5IHNhbml0aXplX3RocmVhZCBzc3BzdHJvbmcgJyArXG4gICAgICAndXd0YWJsZSByZXR1cm5lZCB0eXBlIG9wYXF1ZSBlcSBuZSBzbHQgc2d0ICcgK1xuICAgICAgJ3NsZSBzZ2UgdWx0IHVndCB1bGUgdWdlIG9lcSBvbmUgb2x0IG9ndCAnICtcbiAgICAgICdvbGUgb2dlIG9yZCB1bm8gdWVxIHVuZSB4IGFjcV9yZWwgYWNxdWlyZSAnICtcbiAgICAgICdhbGlnbnN0YWNrIGF0b21pYyBjYXRjaCBjbGVhbnVwIGZpbHRlciBpbnRlbGRpYWxlY3QgJyArXG4gICAgICAnbWF4IG1pbiBtb25vdG9uaWMgbmFuZCBwZXJzb25hbGl0eSByZWxlYXNlIHNlcV9jc3QgJyArXG4gICAgICAnc2luZ2xldGhyZWFkIHVtYXggdW1pbiB1bm9yZGVyZWQgeGNoZyBhZGQgZmFkZCAnICtcbiAgICAgICdzdWIgZnN1YiBtdWwgZm11bCB1ZGl2IHNkaXYgZmRpdiB1cmVtIHNyZW0gJyArXG4gICAgICAnZnJlbSBzaGwgbHNociBhc2hyIGFuZCBvciB4b3IgaWNtcCBmY21wICcgK1xuICAgICAgJ3BoaSBjYWxsIHRydW5jIHpleHQgc2V4dCBmcHRydW5jIGZwZXh0IHVpdG9mcCAnICtcbiAgICAgICdzaXRvZnAgZnB0b3VpIGZwdG9zaSBpbnR0b3B0ciBwdHJ0b2ludCBiaXRjYXN0ICcgK1xuICAgICAgJ2FkZHJzcGFjZWNhc3Qgc2VsZWN0IHZhX2FyZyByZXQgYnIgc3dpdGNoIGludm9rZSAnICtcbiAgICAgICd1bndpbmQgdW5yZWFjaGFibGUgaW5kaXJlY3RiciBsYW5kaW5ncGFkIHJlc3VtZSAnICtcbiAgICAgICdtYWxsb2MgYWxsb2NhIGZyZWUgbG9hZCBzdG9yZSBnZXRlbGVtZW50cHRyICcgK1xuICAgICAgJ2V4dHJhY3RlbGVtZW50IGluc2VydGVsZW1lbnQgc2h1ZmZsZXZlY3RvciBnZXRyZXN1bHQgJyArXG4gICAgICAnZXh0cmFjdHZhbHVlIGluc2VydHZhbHVlIGF0b21pY3JtdyBjbXB4Y2hnIGZlbmNlICcgK1xuICAgICAgJ2FyZ21lbW9ubHkgZG91YmxlJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdpXFxcXGQrJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLCAnXFxcXG4nLCB7cmVsZXZhbmNlOiAwfVxuICAgICAgKSxcbiAgICAgIC8vIERvdWJsZSBxdW90ZSBzdHJpbmdcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgLy8gRG91YmxlLXF1b3RlZCBzdHJpbmdcbiAgICAgICAgICB7IGJlZ2luOiAnXCInLCBlbmQ6ICdbXlxcXFxcXFxcXVwiJyB9LFxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnQCcgKyBpZGVudGlmaWVyIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ0BcXFxcZCsnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJyEnICsgaWRlbnRpZmllciB9LFxuICAgICAgICAgIHsgYmVnaW46ICchXFxcXGQrJyArIGlkZW50aWZpZXIgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICclJyArIGlkZW50aWZpZXIgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnJVxcXFxkKycgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnI1xcXFxkKycgfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHsgYmVnaW46ICcwW3hYXVthLWZBLUYwLTldKycgfSxcbiAgICAgICAgICAgIHsgYmVnaW46ICctP1xcXFxkKyg/OlsuXVxcXFxkKyk/KD86W2VFXVstK10/XFxcXGQrKD86Wy5dXFxcXGQrKT8pPycgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICAgIHZhciBMU0xfU1RSSU5HX0VTQ0FQRV9DSEFSUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICBiZWdpbjogL1xcXFxbdG5cIlxcXFxdL1xuICAgIH07XG5cbiAgICB2YXIgTFNMX1NUUklOR1MgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBMU0xfU1RSSU5HX0VTQ0FQRV9DSEFSU1xuICAgICAgICBdXG4gICAgfTtcblxuICAgIHZhciBMU0xfTlVNQkVSUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuQ19OVU1CRVJfUkVcbiAgICB9O1xuXG4gICAgdmFyIExTTF9DT05TVEFOVFMgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpQSXxUV09fUEl8UElfQllfVFdPfERFR19UT19SQUR8UkFEX1RPX0RFR3xTUVJUMilcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OlhQX0VSUk9SXyg/OkVYUEVSSUVOQ0VTX0RJU0FCTEVEfEVYUEVSSUVOQ0VfKD86RElTQUJMRUR8U1VTUEVOREVEKXxJTlZBTElEXyg/OkVYUEVSSUVOQ0V8UEFSQU1FVEVSUyl8S0VZX05PVF9GT1VORHxNQVRVUklUWV9FWENFRURFRHxOT05FfE5PVF8oPzpGT1VORHxQRVJNSVRURUQoPzpfTEFORCk/KXxOT19FWFBFUklFTkNFfFFVT1RBX0VYQ0VFREVEfFJFVFJZX1VQREFURXxTVE9SQUdFX0VYQ0VQVElPTnxTVE9SRV9ESVNBQkxFRHxUSFJPVFRMRUR8VU5LTk9XTl9FUlJPUil8SlNPTl9BUFBFTkR8U1RBVFVTXyg/OlBIWVNJQ1N8Uk9UQVRFX1tYWVpdfFBIQU5UT018U0FOREJPWHxCTE9DS19HUkFCKD86X09CSkVDVCk/fCg/OkRJRXxSRVRVUk4pX0FUX0VER0V8Q0FTVF9TSEFET1dTfE9LfE1BTEZPUk1FRF9QQVJBTVN8VFlQRV9NSVNNQVRDSHxCT1VORFNfRVJST1J8Tk9UXyg/OkZPVU5EfFNVUFBPUlRFRCl8SU5URVJOQUxfRVJST1J8V0hJVEVMSVNUX0ZBSUxFRCl8QUdFTlQoPzpfKD86QllfKD86TEVHQUNZX3xVU0VSKU5BTUV8RkxZSU5HfEFUVEFDSE1FTlRTfFNDUklQVEVEfE1PVVNFTE9PS3xTSVRUSU5HfE9OX09CSkVDVHxBV0FZfFdBTEtJTkd8SU5fQUlSfFRZUElOR3xDUk9VQ0hJTkd8QlVTWXxBTFdBWVNfUlVOfEFVVE9QSUxPVHxMSVNUXyg/OlBBUkNFTCg/Ol9PV05FUik/fFJFR0lPTikpKT98Q0FNRVJBXyg/OlBJVENIfERJU1RBTkNFfEJFSElORE5FU1NfKD86QU5HTEV8TEFHKXwoPzpGT0NVU3xQT1NJVElPTikoPzpfKD86VEhSRVNIT0xEfExPQ0tFRHxMQUcpKT98Rk9DVVNfT0ZGU0VUfEFDVElWRSl8QU5JTV9PTnxMT09QfFJFVkVSU0V8UElOR19QT05HfFNNT09USHxST1RBVEV8U0NBTEV8QUxMX1NJREVTfExJTktfKD86Uk9PVHxTRVR8QUxMXyg/Ok9USEVSU3xDSElMRFJFTil8VEhJUyl8QUNUSVZFfFBBU1MoPzpJVkV8Xyg/OkFMV0FZU3xJRl9OT1RfSEFORExFRHxORVZFUikpfFNDUklQVEVEfENPTlRST0xfKD86RldEfEJBQ0t8KD86Uk9UXyk/KD86TEVGVHxSSUdIVCl8VVB8RE9XTnwoPzpNTF8pP0xCVVRUT04pfFBFUk1JU1NJT05fKD86UkVUVVJOX09CSkVDVFN8REVCSVR8T1ZFUlJJREVfQU5JTUFUSU9OU3xTSUxFTlRfRVNUQVRFX01BTkFHRU1FTlR8VEFLRV9DT05UUk9MU3xUUklHR0VSX0FOSU1BVElPTnxBVFRBQ0h8Q0hBTkdFX0xJTktTfCg/OkNPTlRST0x8VFJBQ0spX0NBTUVSQXxURUxFUE9SVCl8SU5WRU5UT1JZXyg/OlRFWFRVUkV8U09VTkR8T0JKRUNUfFNDUklQVHxMQU5ETUFSS3xDTE9USElOR3xOT1RFQ0FSRHxCT0RZUEFSVHxBTklNQVRJT058R0VTVFVSRXxBTEx8Tk9ORSl8Q0hBTkdFRF8oPzpJTlZFTlRPUll8Q09MT1J8U0hBUEV8U0NBTEV8VEVYVFVSRXxMSU5LfEFMTE9XRURfRFJPUHxPV05FUnxSRUdJT04oPzpfU1RBUlQpP3xURUxFUE9SVHxNRURJQSl8T0JKRUNUXyg/OkNMSUNLX0FDVElPTnxIT1ZFUl9IRUlHSFR8TEFTVF9PV05FUl9JRHwoPzpQSFlTSUNTfFNFUlZFUnxTVFJFQU1JTkcpX0NPU1R8VU5LTk9XTl9ERVRBSUx8Q0hBUkFDVEVSX1RJTUV8UEhBTlRPTXxQSFlTSUNTfFRFTVBfKD86QVRUQUNIRUR8T05fUkVaKXxOQU1FfERFU0N8UE9TfFBSSU1fKD86Q09VTlR8RVFVSVZBTEVOQ0UpfFJFVFVSTl8oPzpQQVJDRUwoPzpfT1dORVIpP3xSRUdJT04pfFJFWlpFUl9LRVl8Uk9PP1R8VkVMT0NJVFl8T01FR0F8T1dORVJ8R1JPVVAoPzpfVEFHKT98Q1JFQVRPUnxBVFRBQ0hFRF8oPzpQT0lOVHxTTE9UU19BVkFJTEFCTEUpfFJFTkRFUl9XRUlHSFR8KD86Qk9EWV9TSEFQRXxQQVRIRklORElORylfVFlQRXwoPzpSVU5OSU5HfFRPVEFMKV9TQ1JJUFRfQ09VTlR8VE9UQUxfSU5WRU5UT1JZX0NPVU5UfFNDUklQVF8oPzpNRU1PUll8VElNRSkpfFRZUEVfKD86SU5URUdFUnxGTE9BVHxTVFJJTkd8S0VZfFZFQ1RPUnxST1RBVElPTnxJTlZBTElEKXwoPzpERUJVR3xQVUJMSUMpX0NIQU5ORUx8QVRUQUNIXyg/OkFWQVRBUl9DRU5URVJ8Q0hFU1R8SEVBRHxCQUNLfFBFTFZJU3xNT1VUSHxDSElOfE5FQ0t8Tk9TRXxCRUxMWXxbTFJdKD86U0hPVUxERVJ8SEFORHxGT09UfEVBUnxFWUV8W1VMXSg/OkFSTXxMRUcpfEhJUCl8KD86TEVGVHxSSUdIVClfUEVDfEhVRF8oPzpDRU5URVJfWzEyXXxUT1BfKD86UklHSFR8Q0VOVEVSfExFRlQpfEJPVFRPTSg/Ol8oPzpSSUdIVHxMRUZUKSk/KXxbTFJdSEFORF9SSU5HMXxUQUlMXyg/OkJBU0V8VElQKXxbTFJdV0lOR3xGQUNFXyg/OkpBV3xbTFJdRUFSfFtMUl1FWUV8VE9VTkdFKXxHUk9JTnxISU5EX1tMUl1GT09UKXxMQU5EXyg/OkxFVkVMfFJBSVNFfExPV0VSfFNNT09USHxOT0lTRXxSRVZFUlQpfERBVEFfKD86T05MSU5FfE5BTUV8Qk9STnxTSU1fKD86UE9TfFNUQVRVU3xSQVRJTkcpfFBBWUlORk8pfFBBWU1FTlRfSU5GT18oPzpPTl9GSUxFfFVTRUQpfFJFTU9URV9EQVRBXyg/OkNIQU5ORUx8UkVRVUVTVHxSRVBMWSl8UFNZU18oPzpQQVJUXyg/OkJGXyg/OlpFUk98T05FKD86X01JTlVTXyg/OkRFU1RfQ09MT1J8U09VUkNFXyhBTFBIQXxDT0xPUikpKT98REVTVF9DT0xPUnxTT1VSQ0VfKEFMUEhBfENPTE9SKSl8QkxFTkRfRlVOQ18oREVTVHxTT1VSQ0UpfEZMQUdTfCg/OlNUQVJUfEVORClfKD86Q09MT1J8QUxQSEF8U0NBTEV8R0xPVyl8TUFYX0FHRXwoPzpSSUJCT058V0lORHxJTlRFUlBfKD86Q09MT1J8U0NBTEUpfEJPVU5DRXxGT0xMT1dfKD86U1JDfFZFTE9DSVRZKXxUQVJHRVRfKD86UE9TfExJTkVBUil8RU1JU1NJVkUpX01BU0spfFNSQ18oPzpNQVhfQUdFfFBBVFRFUk58QU5HTEVfKD86QkVHSU58RU5EKXxCVVJTVF8oPzpSQVRFfFBBUlRfQ09VTlR8UkFESVVTfFNQRUVEXyg/Ok1JTnxNQVgpKXxBQ0NFTHxURVhUVVJFfFRBUkdFVF9LRVl8T01FR0F8UEFUVEVSTl8oPzpEUk9QfEVYUExPREV8QU5HTEUoPzpfQ09ORSg/Ol9FTVBUWSk/KT8pKSl8VkVISUNMRV8oPzpSRUZFUkVOQ0VfRlJBTUV8VFlQRV8oPzpOT05FfFNMRUR8Q0FSfEJPQVR8QUlSUExBTkV8QkFMTE9PTil8KD86TElORUFSfEFOR1VMQVIpXyg/OkZSSUNUSU9OX1RJTUVTQ0FMRXxNT1RPUl9ESVJFQ1RJT04pfExJTkVBUl9NT1RPUl9PRkZTRVR8SE9WRVJfKD86SEVJR0hUfEVGRklDSUVOQ1l8VElNRVNDQUxFKXxCVU9ZQU5DWXwoPzpMSU5FQVJ8QU5HVUxBUilfKD86REVGTEVDVElPTl8oPzpFRkZJQ0lFTkNZfFRJTUVTQ0FMRSl8TU9UT1JfKD86REVDQVlfKT9USU1FU0NBTEUpfFZFUlRJQ0FMX0FUVFJBQ1RJT05fKD86RUZGSUNJRU5DWXxUSU1FU0NBTEUpfEJBTktJTkdfKD86RUZGSUNJRU5DWXxNSVh8VElNRVNDQUxFKXxGTEFHXyg/Ok5PX0RFRkxFQ1RJT05fVVB8TElNSVRfKD86Uk9MTF9PTkxZfE1PVE9SX1VQKXxIT1ZFUl8oPzooPzpXQVRFUnxURVJSQUlOfFVQKV9PTkxZfEdMT0JBTF9IRUlHSFQpfE1PVVNFTE9PS18oPzpTVEVFUnxCQU5LKXxDQU1FUkFfREVDT1VQTEVEKSl8UFJJTV8oPzpBTExPV19VTlNJVHxBTFBIQV9NT0RFKD86Xyg/OkJMRU5EfEVNSVNTSVZFfE1BU0t8Tk9ORSkpP3xOT1JNQUx8U1BFQ1VMQVJ8VFlQRSg/Ol8oPzpCT1h8Q1lMSU5ERVJ8UFJJU018U1BIRVJFfFRPUlVTfFRVQkV8UklOR3xTQ1VMUFQpKT98SE9MRV8oPzpERUZBVUxUfENJUkNMRXxTUVVBUkV8VFJJQU5HTEUpfE1BVEVSSUFMKD86Xyg/OlNUT05FfE1FVEFMfEdMQVNTfFdPT0R8RkxFU0h8UExBU1RJQ3xSVUJCRVIpKT98U0hJTllfKD86Tk9ORXxMT1d8TUVESVVNfEhJR0gpfEJVTVBfKD86Tk9ORXxCUklHSFR8REFSS3xXT09EfEJBUkt8QlJJQ0tTfENIRUNLRVJ8Q09OQ1JFVEV8VElMRXxTVE9ORXxESVNLU3xHUkFWRUx8QkxPQlN8U0lESU5HfExBUkdFVElMRXxTVFVDQ098U1VDVElPTnxXRUFWRSl8VEVYR0VOXyg/OkRFRkFVTFR8UExBTkFSKXxTQ1JJUFRFRF9TSVRfT05MWXxTQ1VMUFRfKD86VFlQRV8oPzpTUEhFUkV8VE9SVVN8UExBTkV8Q1lMSU5ERVJ8TUFTSyl8RkxBR18oPzpNSVJST1J8SU5WRVJUKSl8UEhZU0lDUyg/Ol8oPzpTSEFQRV8oPzpDT05WRVh8Tk9ORXxQUklNfFRZUEUpKSk/fCg/OlBPU3xST1QpX0xPQ0FMfFNMSUNFfFRFWFR8RkxFWElCTEV8UE9JTlRfTElHSFR8VEVNUF9PTl9SRVp8UEhBTlRPTXxQT1NJVElPTnxTSVRfVEFSR0VUfFNJWkV8Uk9UQVRJT058VEVYVFVSRXxOQU1FfE9NRUdBfERFU0N8TElOS19UQVJHRVR8Q09MT1J8QlVNUF9TSElOWXxGVUxMQlJJR0hUfFRFWEdFTnxHTE9XfE1FRElBXyg/OkFMVF9JTUFHRV9FTkFCTEV8Q09OVFJPTFN8KD86Q1VSUkVOVHxIT01FKV9VUkx8QVVUT18oPzpMT09QfFBMQVl8U0NBTEV8Wk9PTSl8RklSU1RfQ0xJQ0tfSU5URVJBQ1R8KD86V0lEVEh8SEVJR0hUKV9QSVhFTFN8V0hJVEVMSVNUKD86X0VOQUJMRSk/fFBFUk1TXyg/OklOVEVSQUNUfENPTlRST0wpfFBBUkFNX01BWHxDT05UUk9MU18oPzpTVEFOREFSRHxNSU5JKXxQRVJNXyg/Ok5PTkV8T1dORVJ8R1JPVVB8QU5ZT05FKXxNQVhfKD86VVJMX0xFTkdUSHxXSElURUxJU1RfKD86U0laRXxDT1VOVCl8KD86V0lEVEh8SEVJR0hUKV9QSVhFTFMpKSl8TUFTS18oPzpCQVNFfE9XTkVSfEdST1VQfEVWRVJZT05FfE5FWFQpfFBFUk1fKD86VFJBTlNGRVJ8TU9ESUZZfENPUFl8TU9WRXxBTEwpfFBBUkNFTF8oPzpNRURJQV9DT01NQU5EXyg/OlNUT1B8UEFVU0V8UExBWXxMT09QfFRFWFRVUkV8VVJMfFRJTUV8QUdFTlR8VU5MT0FEfEFVVE9fQUxJR058VFlQRXxTSVpFfERFU0N8TE9PUF9TRVQpfEZMQUdfKD86QUxMT1dfKD86RkxZfCg/OkdST1VQXyk/U0NSSVBUU3xMQU5ETUFSS3xURVJSQUZPUk18REFNQUdFfENSRUFURV8oPzpHUk9VUF8pP09CSkVDVFMpfFVTRV8oPzpBQ0NFU1NfKD86R1JPVVB8TElTVCl8QkFOX0xJU1R8TEFORF9QQVNTX0xJU1QpfExPQ0FMX1NPVU5EX09OTFl8UkVTVFJJQ1RfUFVTSE9CSkVDVHxBTExPV18oPzpHUk9VUHxBTEwpX09CSkVDVF9FTlRSWSl8Q09VTlRfKD86VE9UQUx8T1dORVJ8R1JPVVB8T1RIRVJ8U0VMRUNURUR8VEVNUCl8REVUQUlMU18oPzpOQU1FfERFU0N8T1dORVJ8R1JPVVB8QVJFQXxJRHxTRUVfQVZBVEFSUykpfExJU1RfU1RBVF8oPzpNQVh8TUlOfE1FQU58TUVESUFOfFNURF9ERVZ8U1VNKD86X1NRVUFSRVMpP3xOVU1fQ09VTlR8R0VPTUVUUklDX01FQU58UkFOR0UpfFBBWV8oPzpISURFfERFRkFVTFQpfFJFR0lPTl9GTEFHXyg/OkFMTE9XX0RBTUFHRXxGSVhFRF9TVU58QkxPQ0tfVEVSUkFGT1JNfFNBTkRCT1h8RElTQUJMRV8oPzpDT0xMSVNJT05TfFBIWVNJQ1MpfEJMT0NLX0ZMWXxBTExPV19ESVJFQ1RfVEVMRVBPUlR8UkVTVFJJQ1RfUFVTSE9CSkVDVCl8SFRUUF8oPzpNRVRIT0R8TUlNRVRZUEV8Qk9EWV8oPzpNQVhMRU5HVEh8VFJVTkNBVEVEKXxDVVNUT01fSEVBREVSfFBSQUdNQV9OT19DQUNIRXxWRVJCT1NFX1RIUk9UVExFfFZFUklGWV9DRVJUKXxTSVRfKD86SU5WQUxJRF8oPzpBR0VOVHxMSU5LX09CSkVDVCl8Tk8oPzpUX0VYUEVSSUVOQ0V8Xyg/OkFDQ0VTU3xFWFBFUklFTkNFX1BFUk1JU1NJT058U0lUX1RBUkdFVCkpKXxTVFJJTkdfKD86VFJJTSg/Ol8oPzpIRUFEfFRBSUwpKT8pfENMSUNLX0FDVElPTl8oPzpOT05FfFRPVUNIfFNJVHxCVVl8UEFZfE9QRU4oPzpfTUVESUEpP3xQTEFZfFpPT00pfFRPVUNIX0lOVkFMSURfRkFDRXxQUk9GSUxFXyg/Ok5PTkV8U0NSSVBUX01FTU9SWSl8UkNfKD86REFUQV9GTEFHU3xERVRFQ1RfUEhBTlRPTXxHRVRfKD86TElOS19OVU18Tk9STUFMfFJPT1RfS0VZKXxNQVhfSElUU3xSRUpFQ1RfKD86VFlQRVN8QUdFTlRTfCg/Ok5PTik/UEhZU0lDQUx8TEFORCkpfFJDRVJSXyg/OkNBU1RfVElNRV9FWENFRURFRHxTSU1fUEVSRl9MT1d8VU5LTk9XTil8RVNUQVRFX0FDQ0VTU18oPzpBTExPV0VEXyg/OkFHRU5UfEdST1VQKV8oPzpBRER8UkVNT1ZFKXxCQU5ORURfQUdFTlRfKD86QUREfFJFTU9WRSkpfERFTlNJVFl8RlJJQ1RJT058UkVTVElUVVRJT058R1JBVklUWV9NVUxUSVBMSUVSfEtGTV8oPzpDT01NQU5EfENNRF8oPzpQTEFZfFNUT1B8UEFVU0UpfE1PREV8Rk9SV0FSRHxMT09QfFBJTkdfUE9OR3xSRVZFUlNFfERBVEF8Uk9UQVRJT058VFJBTlNMQVRJT04pfEVSUl8oPzpHRU5FUklDfFBBUkNFTF9QRVJNSVNTSU9OU3xNQUxGT1JNRURfUEFSQU1TfFJVTlRJTUVfUEVSTUlTU0lPTlN8VEhST1RUTEVEKXxDSEFSQUNURVJfKD86Q01EXyg/Oig/OlNNT09USF8pP1NUT1B8SlVNUCl8REVTSVJFRF8oPzpUVVJOXyk/U1BFRUR8UkFESVVTfFNUQVlfV0lUSElOX1BBUkNFTHxMRU5HVEh8T1JJRU5UQVRJT058QUNDT1VOVF9GT1JfU0tJUFBFRF9GUkFNRVN8QVZPSURBTkNFX01PREV8VFlQRSg/Ol8oPzpbQUJDRF18Tk9ORSkpP3xNQVhfKD86REVDRUx8VFVSTl9SQURJVVN8KD86QUNDRUx8U1BFRUQpKSl8UFVSU1VJVF8oPzpPRkZTRVR8RlVaWl9GQUNUT1J8R09BTF9UT0xFUkFOQ0V8SU5URVJDRVBUKXxSRVFVSVJFX0xJTkVfT0ZfU0lHSFR8Rk9SQ0VfRElSRUNUX1BBVEh8VkVSVElDQUx8SE9SSVpPTlRBTHxBVk9JRF8oPzpDSEFSQUNURVJTfERZTkFNSUNfT0JTVEFDTEVTfE5PTkUpfFBVXyg/OkVWQURFXyg/OkhJRERFTnxTUE9UVEVEKXxGQUlMVVJFXyg/OkRZTkFNSUNfUEFUSEZJTkRJTkdfRElTQUJMRUR8SU5WQUxJRF8oPzpHT0FMfFNUQVJUKXxOT18oPzpOQVZNRVNIfFZBTElEX0RFU1RJTkFUSU9OKXxPVEhFUnxUQVJHRVRfR09ORXwoPzpQQVJDRUxfKT9VTlJFQUNIQUJMRSl8KD86R09BTHxTTE9XRE9XTl9ESVNUQU5DRSlfUkVBQ0hFRCl8VFJBVkVSU0FMX1RZUEUoPzpfKD86RkFTVHxOT05FfFNMT1cpKT98Q09OVEVOVF9UWVBFXyg/OkFUT018Rk9STXxIVE1MfEpTT058TExTRHxSU1N8VEVYVHxYSFRNTHxYTUwpfEdDTlBfKD86UkFESVVTfFNUQVRJQyl8KD86UEFUUk9MfFdBTkRFUilfUEFVU0VfQVRfV0FZUE9JTlRTfE9QVF8oPzpBVkFUQVJ8Q0hBUkFDVEVSfEVYQ0xVU0lPTl9WT0xVTUV8TEVHQUNZX0xJTktTRVR8TUFURVJJQUxfVk9MVU1FfE9USEVSfFNUQVRJQ19PQlNUQUNMRXxXQUxLQUJMRSl8U0lNX1NUQVRfUENUX0NIQVJTX1NURVBQRUQpXFxcXGInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpGQUxTRXxUUlVFKVxcXFxiJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86WkVST19ST1RBVElPTilcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OkVPRnxKU09OXyg/OkFSUkFZfERFTEVURXxGQUxTRXxJTlZBTElEfE5VTEx8TlVNQkVSfE9CSkVDVHxTVFJJTkd8VFJVRSl8TlVMTF9LRVl8VEVYVFVSRV8oPzpCTEFOS3xERUZBVUxUfE1FRElBfFBMWVdPT0R8VFJBTlNQQVJFTlQpfFVSTF9SRVFVRVNUXyg/OkdSQU5URUR8REVOSUVEKSlcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OlpFUk9fVkVDVE9SfFRPVUNIX0lOVkFMSURfKD86VEVYQ09PUkR8VkVDVE9SKSlcXFxcYidcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH07XG5cbiAgICB2YXIgTFNMX0ZVTkNUSU9OUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKD86bGwoPzpBZ2VudEluRXhwZXJpZW5jZXwoPzpDcmVhdGV8RGF0YVNpemV8RGVsZXRlfEtleUNvdW50fEtleXN8UmVhZHxVcGRhdGUpS2V5VmFsdWV8R2V0RXhwZXJpZW5jZSg/OkRldGFpbHN8RXJyb3JNZXNzYWdlKXxSZXR1cm5PYmplY3RzQnkoPzpJRHxPd25lcil8SnNvbig/OjJMaXN0fFtHU11ldFZhbHVlfFZhbHVlVHlwZSl8U2lufENvc3xUYW58QXRhbjJ8U3FydHxQb3d8QWJzfEZhYnN8RnJhbmR8Rmxvb3J8Q2VpbHxSb3VuZHxWZWMoPzpNYWd8Tm9ybXxEaXN0KXxSb3QoPzpCZXR3ZWVufDIoPzpFdWxlcnxGd2R8TGVmdHxVcCkpfCg/OkV1bGVyfEF4ZXMpMlJvdHxXaGlzcGVyfCg/OlJlZ2lvbnxPd25lcik/U2F5fFNob3V0fExpc3Rlbig/OkNvbnRyb2x8UmVtb3ZlKT98U2Vuc29yKD86UmVwZWF0fFJlbW92ZSk/fERldGVjdGVkKD86TmFtZXxLZXl8T3duZXJ8VHlwZXxQb3N8VmVsfEdyYWJ8Um90fEdyb3VwfExpbmtOdW1iZXIpfERpZXxHcm91bmR8V2luZHwoPzpbR1NdZXQpKD86QW5pbWF0aW9uT3ZlcnJpZGV8TWVtb3J5TGltaXR8UHJpbU1lZGlhUGFyYW1zfFBhcmNlbE11c2ljVVJMfE9iamVjdCg/OkRlc2N8TmFtZSl8UGh5c2ljc01hdGVyaWFsfFN0YXR1c3xTY2FsZXxDb2xvcnxBbHBoYXxUZXh0dXJlfFBvc3xSb3R8Rm9yY2V8VG9ycXVlKXxSZXNldEFuaW1hdGlvbk92ZXJyaWRlfCg/OlNjYWxlfE9mZnNldHxSb3RhdGUpVGV4dHVyZXwoPzpSb3QpP1RhcmdldCg/OlJlbW92ZSk/fCg/OlN0b3ApP01vdmVUb1RhcmdldHxBcHBseSg/OlJvdGF0aW9uYWwpP0ltcHVsc2V8U2V0KD86S2V5ZnJhbWVkTW90aW9ufENvbnRlbnRUeXBlfFJlZ2lvblBvc3woPzpBbmd1bGFyKT9WZWxvY2l0eXxCdW95YW5jeXxIb3ZlckhlaWdodHxGb3JjZUFuZFRvcnF1ZXxUaW1lckV2ZW50fFNjcmlwdFN0YXRlfERhbWFnZXxUZXh0dXJlQW5pbXxTb3VuZCg/OlF1ZXVlaW5nfFJhZGl1cyl8VmVoaWNsZSg/OlR5cGV8KD86RmxvYXR8VmVjdG9yfFJvdGF0aW9uKVBhcmFtKXwoPzpUb3VjaHxTaXQpP1RleHR8Q2FtZXJhKD86RXllfEF0KU9mZnNldHxQcmltaXRpdmVQYXJhbXN8Q2xpY2tBY3Rpb258TGluayg/OkFscGhhfENvbG9yfFByaW1pdGl2ZVBhcmFtcyg/OkZhc3QpP3xUZXh0dXJlKD86QW5pbSk/fENhbWVyYXxNZWRpYSl8UmVtb3RlU2NyaXB0QWNjZXNzUGlufFBheVByaWNlfExvY2FsUm90KXxTY2FsZUJ5RmFjdG9yfEdldCg/Oig/Ok1heHxNaW4pU2NhbGVGYWN0b3J8Q2xvc2VzdE5hdlBvaW50fFN0YXRpY1BhdGh8U2ltU3RhdHN8RW52fFByaW1pdGl2ZVBhcmFtc3xMaW5rKD86UHJpbWl0aXZlUGFyYW1zfE51bWJlcig/Ok9mU2lkZXMpP3xLZXl8TmFtZXxNZWRpYSl8SFRUUEhlYWRlcnxGcmVlVVJMc3xPYmplY3QoPzpEZXRhaWxzfFBlcm1NYXNrfFByaW1Db3VudCl8UGFyY2VsKD86TWF4UHJpbXN8RGV0YWlsc3xQcmltKD86Q291bnR8T3duZXJzKSl8QXR0YWNoZWQoPzpMaXN0KT98KD86U1BNYXh8RnJlZXxVc2VkKU1lbW9yeXxSZWdpb24oPzpOYW1lfFRpbWVEaWxhdGlvbnxGUFN8Q29ybmVyfEFnZW50Q291bnQpfFJvb3QoPzpQb3NpdGlvbnxSb3RhdGlvbil8VW5peFRpbWV8KD86UGFyY2VsfFJlZ2lvbilGbGFnc3woPzpXYWxsfEdNVCljbG9ja3xTaW11bGF0b3JIb3N0bmFtZXxCb3VuZGluZ0JveHxHZW9tZXRyaWNDZW50ZXJ8Q3JlYXRvcnxOdW1iZXJPZig/OlByaW1zfE5vdGVjYXJkTGluZXN8U2lkZXMpfEFuaW1hdGlvbig/Okxpc3QpP3woPzpDYW1lcmF8TG9jYWwpKD86UG9zfFJvdCl8VmVsfEFjY2VsfE9tZWdhfFRpbWUoPzpzdGFtcHxPZkRheSl8KD86T2JqZWN0fENlbnRlck9mKT9NYXNzfE1hc3NNS1N8RW5lcmd5fE93bmVyfCg/Ok93bmVyKT9LZXl8U3VuRGlyZWN0aW9ufFRleHR1cmUoPzpPZmZzZXR8U2NhbGV8Um90KXxJbnZlbnRvcnkoPzpOdW1iZXJ8TmFtZXxLZXl8VHlwZXxDcmVhdG9yfFBlcm1NYXNrKXxQZXJtaXNzaW9ucyg/OktleSk/fFN0YXJ0UGFyYW1ldGVyfExpc3QoPzpMZW5ndGh8RW50cnlUeXBlKXxEYXRlfEFnZW50KD86U2l6ZXxJbmZvfExhbmd1YWdlfExpc3QpfExhbmRPd25lckF0fE5vdGVjYXJkTGluZXxTY3JpcHQoPzpOYW1lfFN0YXRlKSl8KD86R2V0fFJlc2V0fEdldEFuZFJlc2V0KVRpbWV8UGxheVNvdW5kKD86U2xhdmUpP3xMb29wU291bmQoPzpNYXN0ZXJ8U2xhdmUpP3woPzpUcmlnZ2VyfFN0b3B8UHJlbG9hZClTb3VuZHwoPzooPzpHZXR8RGVsZXRlKVN1YnxJbnNlcnQpU3RyaW5nfFRvKD86VXBwZXJ8TG93ZXIpfEdpdmUoPzpJbnZlbnRvcnlMaXN0fE1vbmV5KXxSZXpPYmplY3R8KD86U3RvcCk/TG9va0F0fFNsZWVwfENvbGxpc2lvbkZpbHRlcnwoPzpUYWtlfFJlbGVhc2UpQ29udHJvbHN8RGV0YWNoRnJvbUF2YXRhcnxBdHRhY2hUb0F2YXRhcig/OlRlbXApP3xJbnN0YW50TWVzc2FnZXwoPzpHZXROZXh0KT9FbWFpbHxTdG9wSG92ZXJ8TWluRXZlbnREZWxheXxSb3RMb29rQXR8U3RyaW5nKD86TGVuZ3RofFRyaW0pfCg/OlN0YXJ0fFN0b3ApQW5pbWF0aW9ufFRhcmdldE9tZWdhfFJlcXVlc3QoPzpFeHBlcmllbmNlKT9QZXJtaXNzaW9uc3woPzpDcmVhdGV8QnJlYWspTGlua3xCcmVha0FsbExpbmtzfCg/OkdpdmV8UmVtb3ZlKUludmVudG9yeXxXYXRlcnxQYXNzVG91Y2hlc3xSZXF1ZXN0KD86QWdlbnR8SW52ZW50b3J5KURhdGF8VGVsZXBvcnRBZ2VudCg/OkhvbWV8R2xvYmFsQ29vcmRzKT98TW9kaWZ5TGFuZHxDb2xsaXNpb25Tb3VuZHxSZXNldFNjcmlwdHxNZXNzYWdlTGlua2VkfFB1c2hPYmplY3R8UGFzc0NvbGxpc2lvbnN8QXhpc0FuZ2xlMlJvdHxSb3QyKD86QXhpc3xBbmdsZSl8QSg/OmNvc3xzaW4pfEFuZ2xlQmV0d2VlbnxBbGxvd0ludmVudG9yeURyb3B8U3ViU3RyaW5nSW5kZXh8TGlzdDIoPzpDU1Z8SW50ZWdlcnxKc29ufEZsb2F0fFN0cmluZ3xLZXl8VmVjdG9yfFJvdHxMaXN0KD86U3RyaWRlZCk/KXxEZWxldGVTdWJMaXN0fExpc3QoPzpTdGF0aXN0aWNzfFNvcnR8UmFuZG9taXplfCg/Okluc2VydHxGaW5kfFJlcGxhY2UpTGlzdCl8RWRnZU9mV29ybGR8QWRqdXN0U291bmRWb2x1bWV8S2V5Mk5hbWV8VHJpZ2dlclNvdW5kTGltaXRlZHxFamVjdEZyb21MYW5kfCg/OkNTVnxQYXJzZVN0cmluZykyTGlzdHxPdmVyTXlMYW5kfFNhbWVHcm91cHxVblNpdHxHcm91bmQoPzpTbG9wZXxOb3JtYWx8Q29udG91cil8R3JvdW5kUmVwZWx8KD86U2V0fFJlbW92ZSlWZWhpY2xlRmxhZ3N8U2l0T25MaW5rfCg/OkF2YXRhck9uKT8oPzpMaW5rKT9TaXRUYXJnZXR8U2NyaXB0KD86RGFuZ2VyfFByb2ZpbGVyKXxEaWFsb2d8Vm9sdW1lRGV0ZWN0fFJlc2V0T3RoZXJTY3JpcHR8UmVtb3RlTG9hZFNjcmlwdFBpbnwoPzpPcGVufENsb3NlKVJlbW90ZURhdGFDaGFubmVsfFNlbmRSZW1vdGVEYXRhfFJlbW90ZURhdGFSZXBseXwoPzpJbnRlZ2VyfFN0cmluZylUb0Jhc2U2NHxYb3JCYXNlNjR8TG9nKD86MTApP3xCYXNlNjRUbyg/OlN0cmluZ3xJbnRlZ2VyKXxQYXJzZVN0cmluZ0tlZXBOdWxsc3xSZXpBdFJvb3R8UmVxdWVzdFNpbXVsYXRvckRhdGF8Rm9yY2VNb3VzZWxvb2t8KD86TG9hZHxSZWxlYXNlfCg/OkV8VW5lKXNjYXBlKVVSTHxQYXJjZWxNZWRpYSg/OkNvbW1hbmRMaXN0fFF1ZXJ5KXxNb2RQb3d8TWFwRGVzdGluYXRpb258KD86UmVtb3ZlRnJvbXxBZGRUb3xSZXNldClMYW5kKD86UGFzc3xCYW4pTGlzdHwoPzpTZXR8Q2xlYXIpQ2FtZXJhUGFyYW1zfEhUVFAoPzpSZXF1ZXN0fFJlc3BvbnNlKXxUZXh0Qm94fERldGVjdGVkVG91Y2goPzpVVnxGYWNlfFBvc3woPzpOfEJpbilvcm1hbHxTVCl8KD86TUQ1fFNIQTF8RHVtcExpc3QyKVN0cmluZ3xSZXF1ZXN0KD86U2VjdXJlKT9VUkx8Q2xlYXIoPzpQcmltfExpbmspTWVkaWF8KD86TGluayk/UGFydGljbGVTeXN0ZW18KD86R2V0fFJlcXVlc3QpKD86VXNlcm5hbWV8RGlzcGxheU5hbWUpfFJlZ2lvblNheVRvfENhc3RSYXl8R2VuZXJhdGVLZXl8VHJhbnNmZXJMaW5kZW5Eb2xsYXJzfE1hbmFnZUVzdGF0ZUFjY2Vzc3woPzpDcmVhdGV8RGVsZXRlKUNoYXJhY3RlcnxFeGVjQ2hhcmFjdGVyQ21kfEV2YWRlfEZsZWVGcm9tfE5hdmlnYXRlVG98UGF0cm9sUG9pbnRzfFB1cnN1ZXxVcGRhdGVDaGFyYWN0ZXJ8V2FuZGVyV2l0aGluKSlcXFxcYidcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWxsZWdhbDogJzonLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgTFNMX1NUUklOR1MsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCcvLycsICckJyksXG4gICAgICAgICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBMU0xfTlVNQkVSUyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86c3RhdGV8ZGVmYXVsdClcXFxcYidcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OnN0YXRlXyg/OmVudHJ5fGV4aXQpfHRvdWNoKD86Xyg/OnN0YXJ0fGVuZCkpP3woPzpsYW5kXyk/Y29sbGlzaW9uKD86Xyg/OnN0YXJ0fGVuZCkpP3x0aW1lcnxsaXN0ZW58KD86bm9fKT9zZW5zb3J8Y29udHJvbHwoPzpub3RfKT9hdF8oPzpyb3RfKT90YXJnZXR8bW9uZXl8ZW1haWx8ZXhwZXJpZW5jZV9wZXJtaXNzaW9ucyg/Ol9kZW5pZWQpP3xydW5fdGltZV9wZXJtaXNzaW9uc3xjaGFuZ2VkfGF0dGFjaHxkYXRhc2VydmVyfG1vdmluZ18oPzpzdGFydHxlbmQpfGxpbmtfbWVzc2FnZXwoPzpvbnxvYmplY3QpX3JlenxyZW1vdGVfZGF0YXxodHRwX3JlKD86c3BvbnNlfHF1ZXN0KXxwYXRoX3VwZGF0ZXx0cmFuc2FjdGlvbl9yZXN1bHQpXFxcXGInXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTFNMX0ZVTkNUSU9OUyxcbiAgICAgICAgICAgIExTTF9DT05TVEFOVFMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OmludGVnZXJ8ZmxvYXR8c3RyaW5nfGtleXx2ZWN0b3J8cXVhdGVybmlvbnxyb3RhdGlvbnxsaXN0KVxcXFxiJ1xuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBPUEVOSU5HX0xPTkdfQlJBQ0tFVCA9ICdcXFxcWz0qXFxcXFsnO1xuICB2YXIgQ0xPU0lOR19MT05HX0JSQUNLRVQgPSAnXFxcXF09KlxcXFxdJztcbiAgdmFyIExPTkdfQlJBQ0tFVFMgPSB7XG4gICAgYmVnaW46IE9QRU5JTkdfTE9OR19CUkFDS0VULCBlbmQ6IENMT1NJTkdfTE9OR19CUkFDS0VULFxuICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICB9O1xuICB2YXIgQ09NTUVOVFMgPSBbXG4gICAgaGxqcy5DT01NRU5UKCctLSg/IScgKyBPUEVOSU5HX0xPTkdfQlJBQ0tFVCArICcpJywgJyQnKSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAnLS0nICsgT1BFTklOR19MT05HX0JSQUNLRVQsXG4gICAgICBDTE9TSU5HX0xPTkdfQlJBQ0tFVCxcbiAgICAgIHtcbiAgICAgICAgY29udGFpbnM6IFtMT05HX0JSQUNLRVRTXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfVxuICAgIClcbiAgXTtcbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGxpdGVyYWw6IFwidHJ1ZSBmYWxzZSBuaWxcIixcbiAgICAgIGtleXdvcmQ6IFwiYW5kIGJyZWFrIGRvIGVsc2UgZWxzZWlmIGVuZCBmb3IgZ290byBpZiBpbiBsb2NhbCBub3Qgb3IgcmVwZWF0IHJldHVybiB0aGVuIHVudGlsIHdoaWxlXCIsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLy9NZXRhdGFncyBhbmQgZ2xvYmFsczpcbiAgICAgICAgJ19HIF9FTlYgX1ZFUlNJT04gX19pbmRleCBfX25ld2luZGV4IF9fbW9kZSBfX2NhbGwgX19tZXRhdGFibGUgX190b3N0cmluZyBfX2xlbiAnICtcbiAgICAgICAgJ19fZ2MgX19hZGQgX19zdWIgX19tdWwgX19kaXYgX19tb2QgX19wb3cgX19jb25jYXQgX191bm0gX19lcSBfX2x0IF9fbGUgYXNzZXJ0ICcgK1xuICAgICAgICAvL1N0YW5kYXJkIG1ldGhvZHMgYW5kIHByb3BlcnRpZXM6XG4gICAgICAgICdjb2xsZWN0Z2FyYmFnZSBkb2ZpbGUgZXJyb3IgZ2V0ZmVudiBnZXRtZXRhdGFibGUgaXBhaXJzIGxvYWQgbG9hZGZpbGUgbG9hZHN0cmluZycgK1xuICAgICAgICAnbW9kdWxlIG5leHQgcGFpcnMgcGNhbGwgcHJpbnQgcmF3ZXF1YWwgcmF3Z2V0IHJhd3NldCByZXF1aXJlIHNlbGVjdCBzZXRmZW52JyArXG4gICAgICAgICdzZXRtZXRhdGFibGUgdG9udW1iZXIgdG9zdHJpbmcgdHlwZSB1bnBhY2sgeHBjYWxsIGFyZyBzZWxmJyArXG4gICAgICAgIC8vTGlicmFyeSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIChvbmUgbGluZSBwZXIgbGlicmFyeSk6XG4gICAgICAgICdjb3JvdXRpbmUgcmVzdW1lIHlpZWxkIHN0YXR1cyB3cmFwIGNyZWF0ZSBydW5uaW5nIGRlYnVnIGdldHVwdmFsdWUgJyArXG4gICAgICAgICdkZWJ1ZyBzZXRob29rIGdldG1ldGF0YWJsZSBnZXRob29rIHNldG1ldGF0YWJsZSBzZXRsb2NhbCB0cmFjZWJhY2sgc2V0ZmVudiBnZXRpbmZvIHNldHVwdmFsdWUgZ2V0bG9jYWwgZ2V0cmVnaXN0cnkgZ2V0ZmVudiAnICtcbiAgICAgICAgJ2lvIGxpbmVzIHdyaXRlIGNsb3NlIGZsdXNoIG9wZW4gb3V0cHV0IHR5cGUgcmVhZCBzdGRlcnIgc3RkaW4gaW5wdXQgc3Rkb3V0IHBvcGVuIHRtcGZpbGUgJyArXG4gICAgICAgICdtYXRoIGxvZyBtYXggYWNvcyBodWdlIGxkZXhwIHBpIGNvcyB0YW5oIHBvdyBkZWcgdGFuIGNvc2ggc2luaCByYW5kb20gcmFuZG9tc2VlZCBmcmV4cCBjZWlsIGZsb29yIHJhZCBhYnMgc3FydCBtb2RmIGFzaW4gbWluIG1vZCBmbW9kIGxvZzEwIGF0YW4yIGV4cCBzaW4gYXRhbiAnICtcbiAgICAgICAgJ29zIGV4aXQgc2V0bG9jYWxlIGRhdGUgZ2V0ZW52IGRpZmZ0aW1lIHJlbW92ZSB0aW1lIGNsb2NrIHRtcG5hbWUgcmVuYW1lIGV4ZWN1dGUgcGFja2FnZSBwcmVsb2FkIGxvYWRsaWIgbG9hZGVkIGxvYWRlcnMgY3BhdGggY29uZmlnIHBhdGggc2VlYWxsICcgK1xuICAgICAgICAnc3RyaW5nIHN1YiB1cHBlciBsZW4gZ2ZpbmQgcmVwIGZpbmQgbWF0Y2ggY2hhciBkdW1wIGdtYXRjaCByZXZlcnNlIGJ5dGUgZm9ybWF0IGdzdWIgbG93ZXIgJyArXG4gICAgICAgICd0YWJsZSBzZXRuIGluc2VydCBnZXRuIGZvcmVhY2hpIG1heG4gZm9yZWFjaCBjb25jYXQgc29ydCByZW1vdmUnXG4gICAgfSxcbiAgICBjb250YWluczogQ09NTUVOVFMuY29uY2F0KFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAnKFtfYS16QS1aXVxcXFx3KlxcXFwuKSooW19hLXpBLVpdXFxcXHcqOik/W19hLXpBLVpdXFxcXHcqJ30pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogQ09NTUVOVFNcbiAgICAgICAgICB9XG4gICAgICAgIF0uY29uY2F0KENPTU1FTlRTKVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiBPUEVOSU5HX0xPTkdfQlJBQ0tFVCwgZW5kOiBDTE9TSU5HX0xPTkdfQlJBQ0tFVCxcbiAgICAgICAgY29udGFpbnM6IFtMT05HX0JSQUNLRVRTXSxcbiAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICB9XG4gICAgXSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8qIFZhcmlhYmxlczogc2ltcGxlIChlZyAkKHZhcikpIGFuZCBzcGVjaWFsIChlZyAkQCkgKi9cbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwkXFxcXCgnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFwpJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbQCU8P1xcXlxcK1xcKl0vXG4gICAgICB9LFxuICAgIF1cbiAgfTtcbiAgLyogUXVvdGVkIHN0cmluZyB3aXRoIHZhcmlhYmxlcyBpbnNpZGUgKi9cbiAgdmFyIFFVT1RFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFZBUklBQkxFLFxuICAgIF1cbiAgfTtcbiAgLyogRnVuY3Rpb246ICQoZnVuYyBhcmcsLi4uKSAqL1xuICB2YXIgRlVOQyA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXCRcXChbXFx3LV0rXFxzLywgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdzdWJzdCBwYXRzdWJzdCBzdHJpcCBmaW5kc3RyaW5nIGZpbHRlciBmaWx0ZXItb3V0IHNvcnQgJyArXG4gICAgICAgICd3b3JkIHdvcmRsaXN0IGZpcnN0d29yZCBsYXN0d29yZCBkaXIgbm90ZGlyIHN1ZmZpeCBiYXNlbmFtZSAnICtcbiAgICAgICAgJ2FkZHN1ZmZpeCBhZGRwcmVmaXggam9pbiB3aWxkY2FyZCByZWFscGF0aCBhYnNwYXRoIGVycm9yIHdhcm5pbmcgJyArXG4gICAgICAgICdzaGVsbCBvcmlnaW4gZmxhdm9yIGZvcmVhY2ggaWYgb3IgYW5kIGNhbGwgZXZhbCBmaWxlIHZhbHVlJyxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBWQVJJQUJMRSxcbiAgICBdXG4gIH07XG4gIC8qIFZhcmlhYmxlIGFzc2lnbm1lbnQgKi9cbiAgdmFyIFZBUl9BU1NJRyA9IHtcbiAgICBiZWdpbjogJ14nICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKls6Kz9dPz0nLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSwgZW5kOiAnWzorP10/PScsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICB9XG4gICAgXVxuICB9O1xuICAvKiBNZXRhIHRhcmdldHMgKC5QSE9OWSkgKi9cbiAgdmFyIE1FVEEgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46IC9eXFwuUEhPTlk6LywgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJy5QSE9OWSd9LFxuICAgIGxleGVtZXM6IC9bXFwuXFx3XSsvXG4gIH07XG4gIC8qIFRhcmdldHMgKi9cbiAgdmFyIFRBUkdFVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICBiZWdpbjogL15bXlxcc10rOi8sIGVuZDogLyQvLFxuICAgIGNvbnRhaW5zOiBbVkFSSUFCTEUsXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbWsnLCAnbWFrJ10sXG4gICAga2V5d29yZHM6XG4gICAgICAnZGVmaW5lIGVuZGVmIHVuZGVmaW5lIGlmZGVmIGlmbmRlZiBpZmVxIGlmbmVxIGVsc2UgZW5kaWYgJyArXG4gICAgICAnaW5jbHVkZSAtaW5jbHVkZSBzaW5jbHVkZSBvdmVycmlkZSBleHBvcnQgdW5leHBvcnQgcHJpdmF0ZSB2cGF0aCcsXG4gICAgbGV4ZW1lczogL1tcXHctXSsvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBRVU9URV9TVFJJTkcsXG4gICAgICBGVU5DLFxuICAgICAgVkFSX0FTU0lHLFxuICAgICAgTUVUQSxcbiAgICAgIFRBUkdFVCxcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbW1hJywgJ3dsJ10sXG4gICAgbGV4ZW1lczogJyhcXFxcJHxcXFxcYiknICsgaGxqcy5JREVOVF9SRSArICdcXFxcYicsXG4gICAgLy9cbiAgICAvLyBUaGUgbGlzdCBvZiBcImtleXdvcmRzXCIgKFN5c3RlbWAgc3ltYm9scykgd2FzIGRldGVybWluZWQgYnkgZXZhbHVhdGluZyB0aGUgZm9sbG93aW5nIFdvbGZyYW0gTGFuZ3VhZ2UgY29kZSBpbiBNYXRoZW1hdGljYSAxMi4wOlxuICAgIC8vXG4gICAgLy8gU3RyaW5nUmlmZmxlW1xuICAgIC8vICAgXCInXCIgPD4gU3RyaW5nUmlmZmxlWyMsIFwiIFwiXSA8PiBcIidcIiAmIC9AXG4gICAgLy8gICAgIFZhbHVlc1tHcm91cEJ5W1xuICAgIC8vICAgICAgIFNlbGVjdFtOYW1lc1tcIlN5c3RlbWAqXCJdLFxuICAgIC8vICAgICAgIFN0cmluZ1N0YXJ0c1FbIywgQ2hhcmFjdGVyUmFuZ2VbXCJBXCIsIFwiWlwiXSB8IFwiJFwiXSAmXSxcbiAgICAvLyAgICAgICBGaXJzdFtDaGFyYWN0ZXJzWyNdXSAmXV0sIFwiICtcXG5cIl1cbiAgICAvL1xuICAgIGtleXdvcmRzOiAnQUFTVHJpYW5nbGUgQWJlbGlhbkdyb3VwIEFib3J0IEFib3J0S2VybmVscyBBYm9ydFByb3RlY3QgQWJvcnRTY2hlZHVsZWRUYXNrIEFib3ZlIEFicyBBYnNBcmcgQWJzQXJnUGxvdCBBYnNvbHV0ZSBBYnNvbHV0ZUNvcnJlbGF0aW9uIEFic29sdXRlQ29ycmVsYXRpb25GdW5jdGlvbiBBYnNvbHV0ZUN1cnJlbnRWYWx1ZSBBYnNvbHV0ZURhc2hpbmcgQWJzb2x1dGVGaWxlTmFtZSBBYnNvbHV0ZU9wdGlvbnMgQWJzb2x1dGVQb2ludFNpemUgQWJzb2x1dGVUaGlja25lc3MgQWJzb2x1dGVUaW1lIEFic29sdXRlVGltaW5nIEFjY2VwdGFuY2VUaHJlc2hvbGQgQWNjb3VudGluZ0Zvcm0gQWNjdW11bGF0ZSBBY2N1cmFjeSBBY2N1cmFjeUdvYWwgQWN0aW9uRGVsYXkgQWN0aW9uTWVudSBBY3Rpb25NZW51Qm94IEFjdGlvbk1lbnVCb3hPcHRpb25zIEFjdGl2YXRlIEFjdGl2ZSBBY3RpdmVDbGFzc2lmaWNhdGlvbiBBY3RpdmVDbGFzc2lmaWNhdGlvbk9iamVjdCBBY3RpdmVJdGVtIEFjdGl2ZVByZWRpY3Rpb24gQWN0aXZlUHJlZGljdGlvbk9iamVjdCBBY3RpdmVTdHlsZSBBY3ljbGljR3JhcGhRIEFkZE9uSGVscFBhdGggQWRkU2lkZXMgQWRkVG8gQWRkVG9TZWFyY2hJbmRleCBBZGRVc2VycyBBZGphY2VuY3lHcmFwaCBBZGphY2VuY3lMaXN0IEFkamFjZW5jeU1hdHJpeCBBZGp1c3RtZW50Qm94IEFkanVzdG1lbnRCb3hPcHRpb25zIEFkanVzdFRpbWVTZXJpZXNGb3JlY2FzdCBBZG1pbmlzdHJhdGl2ZURpdmlzaW9uRGF0YSBBZmZpbmVIYWxmU3BhY2UgQWZmaW5lU3BhY2UgQWZmaW5lU3RhdGVTcGFjZU1vZGVsIEFmZmluZVRyYW5zZm9ybSBBZnRlciBBZ2dyZWdhdGVkRW50aXR5Q2xhc3MgQWdncmVnYXRpb25MYXllciBBaXJjcmFmdERhdGEgQWlycG9ydERhdGEgQWlyUHJlc3N1cmVEYXRhIEFpclRlbXBlcmF0dXJlRGF0YSBBaXJ5QWkgQWlyeUFpUHJpbWUgQWlyeUFpWmVybyBBaXJ5QmkgQWlyeUJpUHJpbWUgQWlyeUJpWmVybyBBbGdlYnJhaWNJbnRlZ2VyUSBBbGdlYnJhaWNOdW1iZXIgQWxnZWJyYWljTnVtYmVyRGVub21pbmF0b3IgQWxnZWJyYWljTnVtYmVyTm9ybSBBbGdlYnJhaWNOdW1iZXJQb2x5bm9taWFsIEFsZ2VicmFpY051bWJlclRyYWNlIEFsZ2VicmFpY1J1bGVzIEFsZ2VicmFpY1J1bGVzRGF0YSBBbGdlYnJhaWNzIEFsZ2VicmFpY1VuaXRRIEFsaWdubWVudCBBbGlnbm1lbnRNYXJrZXIgQWxpZ25tZW50UG9pbnQgQWxsIEFsbG93QWR1bHRDb250ZW50IEFsbG93ZWRDbG91ZEV4dHJhUGFyYW1ldGVycyBBbGxvd2VkQ2xvdWRQYXJhbWV0ZXJFeHRlbnNpb25zIEFsbG93ZWREaW1lbnNpb25zIEFsbG93ZWRGcmVxdWVuY3lSYW5nZSBBbGxvd2VkSGVhZHMgQWxsb3dHcm91cENsb3NlIEFsbG93SW5jb21wbGV0ZSBBbGxvd0lubGluZUNlbGxzIEFsbG93S2VybmVsSW5pdGlhbGl6YXRpb24gQWxsb3dMb29zZUdyYW1tYXIgQWxsb3dSZXZlcnNlR3JvdXBDbG9zZSBBbGxvd1NjcmlwdExldmVsQ2hhbmdlIEFsbFRydWUgQWxwaGFiZXQgQWxwaGFiZXRpY09yZGVyIEFscGhhYmV0aWNTb3J0IEFscGhhQ2hhbm5lbCBBbHRlcm5hdGVJbWFnZSBBbHRlcm5hdGluZ0ZhY3RvcmlhbCBBbHRlcm5hdGluZ0dyb3VwIEFsdGVybmF0aXZlSHlwb3RoZXNpcyBBbHRlcm5hdGl2ZXMgQWx0aXR1ZGVNZXRob2QgQW1iaWVudExpZ2h0IEFtYmlndWl0eUZ1bmN0aW9uIEFtYmlndWl0eUxpc3QgQW5hbHl0aWMgQW5hdG9teURhdGEgQW5hdG9teUZvcm0gQW5hdG9teVBsb3QzRCBBbmF0b215U2tpblN0eWxlIEFuYXRvbXlTdHlsaW5nIEFuY2hvcmVkU2VhcmNoIEFuZCBBbmRlcnNvbkRhcmxpbmdUZXN0IEFuZ2VySiBBbmdsZUJpc2VjdG9yIEFuZ2xlQnJhY2tldCBBbmdsZVBhdGggQW5nbGVQYXRoM0QgQW5nbGVWZWN0b3IgQW5ndWxhckdhdWdlIEFuaW1hdGUgQW5pbWF0aW9uQ3ljbGVPZmZzZXQgQW5pbWF0aW9uQ3ljbGVSZXBldGl0aW9ucyBBbmltYXRpb25EaXJlY3Rpb24gQW5pbWF0aW9uRGlzcGxheVRpbWUgQW5pbWF0aW9uUmF0ZSBBbmltYXRpb25SZXBldGl0aW9ucyBBbmltYXRpb25SdW5uaW5nIEFuaW1hdGlvblJ1blRpbWUgQW5pbWF0aW9uVGltZUluZGV4IEFuaW1hdG9yIEFuaW1hdG9yQm94IEFuaW1hdG9yQm94T3B0aW9ucyBBbmltYXRvckVsZW1lbnRzIEFubm90YXRlIEFubm90YXRpb24gQW5ub3RhdGlvbkRlbGV0ZSBBbm5vdGF0aW9uTmFtZXMgQW5ub3RhdGlvblJ1bGVzIEFubm90YXRpb25WYWx1ZSBBbm51aXR5IEFubnVpdHlEdWUgQW5udWx1cyBBbm9tYWx5RGV0ZWN0aW9uIEFub21hbHlEZXRlY3RvckZ1bmN0aW9uIEFub255bW91cyBBbnRpYWxpYXNpbmcgQW50aWhlcm1pdGlhbk1hdHJpeFEgQW50aXN5bW1ldHJpYyBBbnRpc3ltbWV0cmljTWF0cml4USBBbnRvbnltcyBBbnlPcmRlciBBbnlTdWJzZXQgQW55VHJ1ZSBBcGFydCBBcGFydFNxdWFyZUZyZWUgQVBJRnVuY3Rpb24gQXBwZWFyYW5jZSBBcHBlYXJhbmNlRWxlbWVudHMgQXBwZWFyYW5jZVJ1bGVzIEFwcGVsbEYxIEFwcGVuZCBBcHBlbmRDaGVjayBBcHBlbmRMYXllciBBcHBlbmRUbyBBcHBsaWNhdGlvbklkZW50aWZpY2F0aW9uS2V5IEFwcGx5IEFwcGx5U2lkZXMgQXJjQ29zIEFyY0Nvc2ggQXJjQ290IEFyY0NvdGggQXJjQ3NjIEFyY0NzY2ggQXJjQ3VydmF0dXJlIEFSQ0hQcm9jZXNzIEFyY0xlbmd0aCBBcmNTZWMgQXJjU2VjaCBBcmNTaW4gQXJjU2luRGlzdHJpYnV0aW9uIEFyY1NpbmggQXJjVGFuIEFyY1RhbmggQXJlYSBBcmcgQXJnTWF4IEFyZ01pbiBBcmd1bWVudENvdW50USBBUklNQVByb2Nlc3MgQXJpdGhtZXRpY0dlb21ldHJpY01lYW4gQVJNQVByb2Nlc3MgQXJvdW5kIEFyb3VuZFJlcGxhY2UgQVJQcm9jZXNzIEFycmF5IEFycmF5Q29tcG9uZW50cyBBcnJheURlcHRoIEFycmF5RmlsdGVyIEFycmF5RmxhdHRlbiBBcnJheU1lc2ggQXJyYXlQYWQgQXJyYXlQbG90IEFycmF5USBBcnJheVJlc2FtcGxlIEFycmF5UmVzaGFwZSBBcnJheVJ1bGVzIEFycmF5cyBBcnJvdyBBcnJvdzNEQm94IEFycm93Qm94IEFycm93aGVhZHMgQVNBVHJpYW5nbGUgQXNrIEFza0FwcGVuZCBBc2tDb25maXJtIEFza0Rpc3BsYXkgQXNrZWRRIEFza2VkVmFsdWUgQXNrRnVuY3Rpb24gQXNrU3RhdGUgQXNrVGVtcGxhdGVEaXNwbGF5IEFzcGVjdFJhdGlvIEFzcGVjdFJhdGlvRml4ZWQgQXNzZXJ0IEFzc29jaWF0ZVRvIEFzc29jaWF0aW9uIEFzc29jaWF0aW9uRm9ybWF0IEFzc29jaWF0aW9uTWFwIEFzc29jaWF0aW9uUSBBc3NvY2lhdGlvblRocmVhZCBBc3N1bWVEZXRlcm1pbmlzdGljIEFzc3VtaW5nIEFzc3VtcHRpb25zIEFzdHJvbm9taWNhbERhdGEgQXN5bXB0b3RpY0RTb2x2ZVZhbHVlIEFzeW1wdG90aWNFcXVhbCBBc3ltcHRvdGljRXF1aXZhbGVudCBBc3ltcHRvdGljR3JlYXRlciBBc3ltcHRvdGljR3JlYXRlckVxdWFsIEFzeW1wdG90aWNJbnRlZ3JhdGUgQXN5bXB0b3RpY0xlc3MgQXN5bXB0b3RpY0xlc3NFcXVhbCBBc3ltcHRvdGljT3V0cHV0VHJhY2tlciBBc3ltcHRvdGljUlNvbHZlVmFsdWUgQXN5bXB0b3RpY1NvbHZlIEFzeW1wdG90aWNTdW0gQXN5bmNocm9ub3VzIEFzeW5jaHJvbm91c1Rhc2tPYmplY3QgQXN5bmNocm9ub3VzVGFza3MgQXRvbSBBdG9tQ29vcmRpbmF0ZXMgQXRvbUNvdW50IEF0b21EaWFncmFtQ29vcmRpbmF0ZXMgQXRvbUxpc3QgQXRvbVEgQXR0ZW50aW9uTGF5ZXIgQXR0cmlidXRlcyBBdWRpbyBBdWRpb0FtcGxpZnkgQXVkaW9Bbm5vdGF0ZSBBdWRpb0Fubm90YXRpb25Mb29rdXAgQXVkaW9CbG9ja01hcCBBdWRpb0NhcHR1cmUgQXVkaW9DaGFubmVsQXNzaWdubWVudCBBdWRpb0NoYW5uZWxDb21iaW5lIEF1ZGlvQ2hhbm5lbE1peCBBdWRpb0NoYW5uZWxzIEF1ZGlvQ2hhbm5lbFNlcGFyYXRlIEF1ZGlvRGF0YSBBdWRpb0RlbGF5IEF1ZGlvRGVsZXRlIEF1ZGlvRGV2aWNlIEF1ZGlvRGlzdGFuY2UgQXVkaW9GYWRlIEF1ZGlvRnJlcXVlbmN5U2hpZnQgQXVkaW9HZW5lcmF0b3IgQXVkaW9JZGVudGlmeSBBdWRpb0lucHV0RGV2aWNlIEF1ZGlvSW5zZXJ0IEF1ZGlvSW50ZXJ2YWxzIEF1ZGlvSm9pbiBBdWRpb0xhYmVsIEF1ZGlvTGVuZ3RoIEF1ZGlvTG9jYWxNZWFzdXJlbWVudHMgQXVkaW9Mb29waW5nIEF1ZGlvTG91ZG5lc3MgQXVkaW9NZWFzdXJlbWVudHMgQXVkaW9Ob3JtYWxpemUgQXVkaW9PdXRwdXREZXZpY2UgQXVkaW9PdmVybGF5IEF1ZGlvUGFkIEF1ZGlvUGFuIEF1ZGlvUGFydGl0aW9uIEF1ZGlvUGF1c2UgQXVkaW9QaXRjaFNoaWZ0IEF1ZGlvUGxheSBBdWRpb1Bsb3QgQXVkaW9RIEF1ZGlvUmVjb3JkIEF1ZGlvUmVwbGFjZSBBdWRpb1Jlc2FtcGxlIEF1ZGlvUmV2ZXJiIEF1ZGlvU2FtcGxlUmF0ZSBBdWRpb1NwZWN0cmFsTWFwIEF1ZGlvU3BlY3RyYWxUcmFuc2Zvcm1hdGlvbiBBdWRpb1NwbGl0IEF1ZGlvU3RvcCBBdWRpb1N0cmVhbSBBdWRpb1N0cmVhbXMgQXVkaW9UaW1lU3RyZXRjaCBBdWRpb1RyaW0gQXVkaW9UeXBlIEF1Z21lbnRlZFBvbHloZWRyb24gQXVnbWVudGVkU3ltbWV0cmljUG9seW5vbWlhbCBBdXRoZW50aWNhdGUgQXV0aGVudGljYXRpb24gQXV0aGVudGljYXRpb25EaWFsb2cgQXV0b0FjdGlvbiBBdXRvY29tcGxldGUgQXV0b2NvbXBsZXRpb25GdW5jdGlvbiBBdXRvQ29weSBBdXRvY29ycmVsYXRpb25UZXN0IEF1dG9EZWxldGUgQXV0b0V2YWx1YXRlRXZlbnRzIEF1dG9HZW5lcmF0ZWRQYWNrYWdlIEF1dG9JbmRlbnQgQXV0b0luZGVudFNwYWNpbmdzIEF1dG9JdGFsaWNXb3JkcyBBdXRvbG9hZFBhdGggQXV0b01hdGNoIEF1dG9tYXRpYyBBdXRvbWF0aWNJbWFnZVNpemUgQXV0b011bHRpcGxpY2F0aW9uU3ltYm9sIEF1dG9OdW1iZXJGb3JtYXR0aW5nIEF1dG9PcGVuTm90ZWJvb2tzIEF1dG9PcGVuUGFsZXR0ZXMgQXV0b1F1b3RlQ2hhcmFjdGVycyBBdXRvUmVmcmVzaGVkIEF1dG9SZW1vdmUgQXV0b3J1blNlcXVlbmNpbmcgQXV0b1NjYWxpbmcgQXV0b1Njcm9sbCBBdXRvU3BhY2luZyBBdXRvU3R5bGVPcHRpb25zIEF1dG9TdHlsZVdvcmRzIEF1dG9TdWJtaXR0aW5nIEF4ZXMgQXhlc0VkZ2UgQXhlc0xhYmVsIEF4ZXNPcmlnaW4gQXhlc1N0eWxlIEF4aW9tYXRpY1RoZW9yeSBBeGlzJyArXG4gICAgICAnQmFieU1vbnN0ZXJHcm91cEIgQmFjayBCYWNrZ3JvdW5kIEJhY2tncm91bmRBcHBlYXJhbmNlIEJhY2tncm91bmRUYXNrc1NldHRpbmdzIEJhY2tzbGFzaCBCYWNrc3Vic3RpdHV0aW9uIEJhY2t3YXJkIEJhbGwgQmFuZCBCYW5kcGFzc0ZpbHRlciBCYW5kc3RvcEZpbHRlciBCYXJhYmFzaUFsYmVydEdyYXBoRGlzdHJpYnV0aW9uIEJhckNoYXJ0IEJhckNoYXJ0M0QgQmFyY29kZUltYWdlIEJhcmNvZGVSZWNvZ25pemUgQmFyaW5naGF1c0hlbnplVGVzdCBCYXJMZWdlbmQgQmFybG93UHJvc2NoYW5JbXBvcnRhbmNlIEJhcm5lc0cgQmFyT3JpZ2luIEJhclNwYWNpbmcgQmFydGxldHRIYW5uV2luZG93IEJhcnRsZXR0V2luZG93IEJhc2VEZWNvZGUgQmFzZUVuY29kZSBCYXNlRm9ybSBCYXNlbGluZSBCYXNlbGluZVBvc2l0aW9uIEJhc2VTdHlsZSBCYXNpY1JlY3VycmVudExheWVyIEJhdGNoTm9ybWFsaXphdGlvbkxheWVyIEJhdGNoU2l6ZSBCYXRlc0Rpc3RyaWJ1dGlvbiBCYXR0bGVMZW1hcmllV2F2ZWxldCBCYXllc2lhbk1heGltaXphdGlvbiBCYXllc2lhbk1heGltaXphdGlvbk9iamVjdCBCYXllc2lhbk1pbmltaXphdGlvbiBCYXllc2lhbk1pbmltaXphdGlvbk9iamVjdCBCZWNhdXNlIEJlY2ttYW5uRGlzdHJpYnV0aW9uIEJlZXAgQmVmb3JlIEJlZ2luIEJlZ2luRGlhbG9nUGFja2V0IEJlZ2luRnJvbnRFbmRJbnRlcmFjdGlvblBhY2tldCBCZWdpblBhY2thZ2UgQmVsbEIgQmVsbFkgQmVsb3cgQmVuZm9yZERpc3RyaWJ1dGlvbiBCZW5pbmlEaXN0cmlidXRpb24gQmVua3RhbmRlckdpYnJhdERpc3RyaWJ1dGlvbiBCZW5rdGFuZGVyV2VpYnVsbERpc3RyaWJ1dGlvbiBCZXJub3VsbGlCIEJlcm5vdWxsaURpc3RyaWJ1dGlvbiBCZXJub3VsbGlHcmFwaERpc3RyaWJ1dGlvbiBCZXJub3VsbGlQcm9jZXNzIEJlcm5zdGVpbkJhc2lzIEJlc3NlbEZpbHRlck1vZGVsIEJlc3NlbEkgQmVzc2VsSiBCZXNzZWxKWmVybyBCZXNzZWxLIEJlc3NlbFkgQmVzc2VsWVplcm8gQmV0YSBCZXRhQmlub21pYWxEaXN0cmlidXRpb24gQmV0YURpc3RyaWJ1dGlvbiBCZXRhTmVnYXRpdmVCaW5vbWlhbERpc3RyaWJ1dGlvbiBCZXRhUHJpbWVEaXN0cmlidXRpb24gQmV0YVJlZ3VsYXJpemVkIEJldHdlZW4gQmV0d2Vlbm5lc3NDZW50cmFsaXR5IEJldmVsZWRQb2x5aGVkcm9uIEJlemllckN1cnZlIEJlemllckN1cnZlM0RCb3ggQmV6aWVyQ3VydmUzREJveE9wdGlvbnMgQmV6aWVyQ3VydmVCb3ggQmV6aWVyQ3VydmVCb3hPcHRpb25zIEJlemllckZ1bmN0aW9uIEJpbGF0ZXJhbEZpbHRlciBCaW5hcml6ZSBCaW5hcnlEZXNlcmlhbGl6ZSBCaW5hcnlEaXN0YW5jZSBCaW5hcnlGb3JtYXQgQmluYXJ5SW1hZ2VRIEJpbmFyeVJlYWQgQmluYXJ5UmVhZExpc3QgQmluYXJ5U2VyaWFsaXplIEJpbmFyeVdyaXRlIEJpbkNvdW50cyBCaW5MaXN0cyBCaW5vbWlhbCBCaW5vbWlhbERpc3RyaWJ1dGlvbiBCaW5vbWlhbFByb2Nlc3MgQmlub3JtYWxEaXN0cmlidXRpb24gQmlvcnRob2dvbmFsU3BsaW5lV2F2ZWxldCBCaXBhcnRpdGVHcmFwaFEgQmlxdWFkcmF0aWNGaWx0ZXJNb2RlbCBCaXJuYmF1bUltcG9ydGFuY2UgQmlybmJhdW1TYXVuZGVyc0Rpc3RyaWJ1dGlvbiBCaXRBbmQgQml0Q2xlYXIgQml0R2V0IEJpdExlbmd0aCBCaXROb3QgQml0T3IgQml0U2V0IEJpdFNoaWZ0TGVmdCBCaXRTaGlmdFJpZ2h0IEJpdFhvciBCaXdlaWdodExvY2F0aW9uIEJpd2VpZ2h0TWlkdmFyaWFuY2UgQmxhY2sgQmxhY2ttYW5IYXJyaXNXaW5kb3cgQmxhY2ttYW5OdXR0YWxsV2luZG93IEJsYWNrbWFuV2luZG93IEJsYW5rIEJsYW5rRm9ybSBCbGFua051bGxTZXF1ZW5jZSBCbGFua1NlcXVlbmNlIEJsZW5kIEJsb2NrIEJsb2NrY2hhaW5BZGRyZXNzRGF0YSBCbG9ja2NoYWluQmFzZSBCbG9ja2NoYWluQmxvY2tEYXRhIEJsb2NrY2hhaW5Db250cmFjdFZhbHVlIEJsb2NrY2hhaW5EYXRhIEJsb2NrY2hhaW5HZXQgQmxvY2tjaGFpbktleUVuY29kZSBCbG9ja2NoYWluUHV0IEJsb2NrY2hhaW5Ub2tlbkRhdGEgQmxvY2tjaGFpblRyYW5zYWN0aW9uIEJsb2NrY2hhaW5UcmFuc2FjdGlvbkRhdGEgQmxvY2tjaGFpblRyYW5zYWN0aW9uU2lnbiBCbG9ja2NoYWluVHJhbnNhY3Rpb25TdWJtaXQgQmxvY2tNYXAgQmxvY2tSYW5kb20gQmxvbXF2aXN0QmV0YSBCbG9tcXZpc3RCZXRhVGVzdCBCbHVlIEJsdXIgQm9kZVBsb3QgQm9obWFuV2luZG93IEJvbGQgQm9uZCBCb25kQ291bnQgQm9uZExpc3QgQm9uZFEgQm9va21hcmtzIEJvb2xlIEJvb2xlYW5Db25zZWN1dGl2ZUZ1bmN0aW9uIEJvb2xlYW5Db252ZXJ0IEJvb2xlYW5Db3VudGluZ0Z1bmN0aW9uIEJvb2xlYW5GdW5jdGlvbiBCb29sZWFuR3JhcGggQm9vbGVhbk1heHRlcm1zIEJvb2xlYW5NaW5pbWl6ZSBCb29sZWFuTWludGVybXMgQm9vbGVhblEgQm9vbGVhblJlZ2lvbiBCb29sZWFucyBCb29sZWFuU3RyaW5ncyBCb29sZWFuVGFibGUgQm9vbGVhblZhcmlhYmxlcyBCb3JkZXJEaW1lbnNpb25zIEJvcmVsVGFubmVyRGlzdHJpYnV0aW9uIEJvdHRvbSBCb3R0b21IYXRUcmFuc2Zvcm0gQm91bmRhcnlEaXNjcmV0aXplR3JhcGhpY3MgQm91bmRhcnlEaXNjcmV0aXplUmVnaW9uIEJvdW5kYXJ5TWVzaCBCb3VuZGFyeU1lc2hSZWdpb24gQm91bmRhcnlNZXNoUmVnaW9uUSBCb3VuZGFyeVN0eWxlIEJvdW5kZWRSZWdpb25RIEJvdW5kaW5nUmVnaW9uIEJvdW5kcyBCb3ggQm94QmFzZWxpbmVTaGlmdCBCb3hEYXRhIEJveERpbWVuc2lvbnMgQm94ZWQgQm94ZXMgQm94Rm9ybSBCb3hGb3JtRm9ybWF0VHlwZXMgQm94RnJhbWUgQm94SUQgQm94TWFyZ2lucyBCb3hNYXRyaXggQm94T2JqZWN0IEJveFJhdGlvcyBCb3hSb3RhdGlvbiBCb3hSb3RhdGlvblBvaW50IEJveFN0eWxlIEJveFdoaXNrZXJDaGFydCBCcmEgQnJhY2tldGluZ0JhciBCcmFLZXQgQnJheUN1cnRpc0Rpc3RhbmNlIEJyZWFkdGhGaXJzdFNjYW4gQnJlYWsgQnJpZGdlRGF0YSBCcmlnaHRuZXNzRXF1YWxpemUgQnJvYWRjYXN0U3RhdGlvbkRhdGEgQnJvd24gQnJvd25Gb3JzeXRoZVRlc3QgQnJvd25pYW5CcmlkZ2VQcm9jZXNzIEJyb3dzZXJDYXRlZ29yeSBCU3BsaW5lQmFzaXMgQlNwbGluZUN1cnZlIEJTcGxpbmVDdXJ2ZTNEQm94IEJTcGxpbmVDdXJ2ZTNEQm94T3B0aW9ucyBCU3BsaW5lQ3VydmVCb3ggQlNwbGluZUN1cnZlQm94T3B0aW9ucyBCU3BsaW5lRnVuY3Rpb24gQlNwbGluZVN1cmZhY2UgQlNwbGluZVN1cmZhY2UzREJveCBCU3BsaW5lU3VyZmFjZTNEQm94T3B0aW9ucyBCdWJibGVDaGFydCBCdWJibGVDaGFydDNEIEJ1YmJsZVNjYWxlIEJ1YmJsZVNpemVzIEJ1aWxkaW5nRGF0YSBCdWxsZXRHYXVnZSBCdXNpbmVzc0RheVEgQnV0dGVyZmx5R3JhcGggQnV0dGVyd29ydGhGaWx0ZXJNb2RlbCBCdXR0b24gQnV0dG9uQmFyIEJ1dHRvbkJveCBCdXR0b25Cb3hPcHRpb25zIEJ1dHRvbkNlbGwgQnV0dG9uQ29udGVudHMgQnV0dG9uRGF0YSBCdXR0b25FdmFsdWF0b3IgQnV0dG9uRXhwYW5kYWJsZSBCdXR0b25GcmFtZSBCdXR0b25GdW5jdGlvbiBCdXR0b25NYXJnaW5zIEJ1dHRvbk1pbkhlaWdodCBCdXR0b25Ob3RlIEJ1dHRvbk5vdGVib29rIEJ1dHRvblNvdXJjZSBCdXR0b25TdHlsZSBCdXR0b25TdHlsZU1lbnVMaXN0aW5nIEJ5dGUgQnl0ZUFycmF5IEJ5dGVBcnJheUZvcm1hdCBCeXRlQXJyYXlRIEJ5dGVBcnJheVRvU3RyaW5nIEJ5dGVDb3VudCBCeXRlT3JkZXJpbmcnICtcbiAgICAgICdDIENhY2hlZFZhbHVlIENhY2hlR3JhcGhpY3MgQ2FjaGVQZXJzaXN0ZW5jZSBDYWxlbmRhckNvbnZlcnQgQ2FsZW5kYXJEYXRhIENhbGVuZGFyVHlwZSBDYWxsb3V0IENhbGxvdXRNYXJrZXIgQ2FsbG91dFN0eWxlIENhbGxQYWNrZXQgQ2FuYmVycmFEaXN0YW5jZSBDYW5jZWwgQ2FuY2VsQnV0dG9uIENhbmRsZXN0aWNrQ2hhcnQgQ2Fub25pY2FsR3JhcGggQ2Fub25pY2FsaXplUG9seWdvbiBDYW5vbmljYWxpemVQb2x5aGVkcm9uIENhbm9uaWNhbE5hbWUgQ2Fub25pY2FsV2FycGluZ0NvcnJlc3BvbmRlbmNlIENhbm9uaWNhbFdhcnBpbmdEaXN0YW5jZSBDYW50b3JNZXNoIENhbnRvclN0YWlyY2FzZSBDYXAgQ2FwRm9ybSBDYXBpdGFsRGlmZmVyZW50aWFsRCBDYXBpdGFsaXplIENhcHN1bGVTaGFwZSBDYXB0dXJlUnVubmluZyBDYXJkaW5hbEJTcGxpbmVCYXNpcyBDYXJsZW1hbkxpbmVhcml6ZSBDYXJtaWNoYWVsTGFtYmRhIENhc2VPcmRlcmluZyBDYXNlcyBDYXNlU2Vuc2l0aXZlIENhc2hmbG93IENhc29yYXRpYW4gQ2F0YWxhbiBDYXRhbGFuTnVtYmVyIENhdGNoIENhdGVuYXRlIENhdGVuYXRlTGF5ZXIgQ2F1Y2h5RGlzdHJpYnV0aW9uIENhdWNoeVdpbmRvdyBDYXlsZXlHcmFwaCBDREYgQ0RGRGVwbG95IENERkluZm9ybWF0aW9uIENERldhdmVsZXQgQ2VpbGluZyBDZWxlc3RpYWxTeXN0ZW0gQ2VsbCBDZWxsQXV0b092ZXJ3cml0ZSBDZWxsQmFzZWxpbmUgQ2VsbEJvdW5kaW5nQm94IENlbGxCcmFja2V0T3B0aW9ucyBDZWxsQ2hhbmdlVGltZXMgQ2VsbENvbnRlbnRzIENlbGxDb250ZXh0IENlbGxEaW5nYmF0IENlbGxEeW5hbWljRXhwcmVzc2lvbiBDZWxsRWRpdER1cGxpY2F0ZSBDZWxsRWxlbWVudHNCb3VuZGluZ0JveCBDZWxsRWxlbWVudFNwYWNpbmdzIENlbGxFcGlsb2cgQ2VsbEV2YWx1YXRpb25EdXBsaWNhdGUgQ2VsbEV2YWx1YXRpb25GdW5jdGlvbiBDZWxsRXZhbHVhdGlvbkxhbmd1YWdlIENlbGxFdmVudEFjdGlvbnMgQ2VsbEZyYW1lIENlbGxGcmFtZUNvbG9yIENlbGxGcmFtZUxhYmVsTWFyZ2lucyBDZWxsRnJhbWVMYWJlbHMgQ2VsbEZyYW1lTWFyZ2lucyBDZWxsR3JvdXAgQ2VsbEdyb3VwRGF0YSBDZWxsR3JvdXBpbmcgQ2VsbEdyb3VwaW5nUnVsZXMgQ2VsbEhvcml6b250YWxTY3JvbGxpbmcgQ2VsbElEIENlbGxMYWJlbCBDZWxsTGFiZWxBdXRvRGVsZXRlIENlbGxMYWJlbE1hcmdpbnMgQ2VsbExhYmVsUG9zaXRpb25pbmcgQ2VsbExhYmVsU3R5bGUgQ2VsbExhYmVsVGVtcGxhdGUgQ2VsbE1hcmdpbnMgQ2VsbE9iamVjdCBDZWxsT3BlbiBDZWxsUHJpbnQgQ2VsbFByb2xvZyBDZWxscyBDZWxsU2l6ZSBDZWxsU3R5bGUgQ2VsbFRhZ3MgQ2VsbHVsYXJBdXRvbWF0b24gQ2Vuc29yZWREaXN0cmlidXRpb24gQ2Vuc29yaW5nIENlbnRlciBDZW50ZXJBcnJheSBDZW50ZXJEb3QgQ2VudHJhbEZlYXR1cmUgQ2VudHJhbE1vbWVudCBDZW50cmFsTW9tZW50R2VuZXJhdGluZ0Z1bmN0aW9uIENlcHN0cm9ncmFtIENlcHN0cm9ncmFtQXJyYXkgQ2Vwc3RydW1BcnJheSBDRm9ybSBDaGFtcGVybm93bmVOdW1iZXIgQ2hhbmdlT3B0aW9ucyBDaGFubmVsQmFzZSBDaGFubmVsQnJva2VyQWN0aW9uIENoYW5uZWxEYXRhYmluIENoYW5uZWxIaXN0b3J5TGVuZ3RoIENoYW5uZWxMaXN0ZW4gQ2hhbm5lbExpc3RlbmVyIENoYW5uZWxMaXN0ZW5lcnMgQ2hhbm5lbExpc3RlbmVyV2FpdCBDaGFubmVsT2JqZWN0IENoYW5uZWxQcmVTZW5kRnVuY3Rpb24gQ2hhbm5lbFJlY2VpdmVyRnVuY3Rpb24gQ2hhbm5lbFNlbmQgQ2hhbm5lbFN1YnNjcmliZXJzIENoYW5WZXNlQmluYXJpemUgQ2hhcmFjdGVyIENoYXJhY3RlckNvdW50cyBDaGFyYWN0ZXJFbmNvZGluZyBDaGFyYWN0ZXJFbmNvZGluZ3NQYXRoIENoYXJhY3RlcmlzdGljRnVuY3Rpb24gQ2hhcmFjdGVyaXN0aWNQb2x5bm9taWFsIENoYXJhY3Rlck5hbWUgQ2hhcmFjdGVyUmFuZ2UgQ2hhcmFjdGVycyBDaGFydEJhc2VTdHlsZSBDaGFydEVsZW1lbnREYXRhIENoYXJ0RWxlbWVudERhdGFGdW5jdGlvbiBDaGFydEVsZW1lbnRGdW5jdGlvbiBDaGFydEVsZW1lbnRzIENoYXJ0TGFiZWxzIENoYXJ0TGF5b3V0IENoYXJ0TGVnZW5kcyBDaGFydFN0eWxlIENoZWJ5c2hldjFGaWx0ZXJNb2RlbCBDaGVieXNoZXYyRmlsdGVyTW9kZWwgQ2hlYnlzaGV2RGlzdGFuY2UgQ2hlYnlzaGV2VCBDaGVieXNoZXZVIENoZWNrIENoZWNrQWJvcnQgQ2hlY2tBbGwgQ2hlY2tib3ggQ2hlY2tib3hCYXIgQ2hlY2tib3hCb3ggQ2hlY2tib3hCb3hPcHRpb25zIENoZW1pY2FsRGF0YSBDaGVzc2JvYXJkRGlzdGFuY2UgQ2hpRGlzdHJpYnV0aW9uIENoaW5lc2VSZW1haW5kZXIgQ2hpU3F1YXJlRGlzdHJpYnV0aW9uIENob2ljZUJ1dHRvbnMgQ2hvaWNlRGlhbG9nIENob2xlc2t5RGVjb21wb3NpdGlvbiBDaG9wIENocm9tYXRpY2l0eVBsb3QgQ2hyb21hdGljaXR5UGxvdDNEIENocm9tYXRpY1BvbHlub21pYWwgQ2lyY2xlIENpcmNsZUJveCBDaXJjbGVEb3QgQ2lyY2xlTWludXMgQ2lyY2xlUGx1cyBDaXJjbGVQb2ludHMgQ2lyY2xlVGhyb3VnaCBDaXJjbGVUaW1lcyBDaXJjdWxhbnRHcmFwaCBDaXJjdWxhck9ydGhvZ29uYWxNYXRyaXhEaXN0cmlidXRpb24gQ2lyY3VsYXJRdWF0ZXJuaW9uTWF0cml4RGlzdHJpYnV0aW9uIENpcmN1bGFyUmVhbE1hdHJpeERpc3RyaWJ1dGlvbiBDaXJjdWxhclN5bXBsZWN0aWNNYXRyaXhEaXN0cmlidXRpb24gQ2lyY3VsYXJVbml0YXJ5TWF0cml4RGlzdHJpYnV0aW9uIENpcmN1bXNwaGVyZSBDaXR5RGF0YSBDbGFzc2lmaWVyRnVuY3Rpb24gQ2xhc3NpZmllckluZm9ybWF0aW9uIENsYXNzaWZpZXJNZWFzdXJlbWVudHMgQ2xhc3NpZmllck1lYXN1cmVtZW50c09iamVjdCBDbGFzc2lmeSBDbGFzc1ByaW9ycyBDbGVhciBDbGVhckFsbCBDbGVhckF0dHJpYnV0ZXMgQ2xlYXJDb29raWVzIENsZWFyUGVybWlzc2lvbnMgQ2xlYXJTeXN0ZW1DYWNoZSBDbGVic2NoR29yZGFuIENsaWNrUGFuZSBDbGlwIENsaXBib2FyZE5vdGVib29rIENsaXBGaWxsIENsaXBwaW5nU3R5bGUgQ2xpcFBsYW5lcyBDbGlwUGxhbmVzU3R5bGUgQ2xpcFJhbmdlIENsb2NrIENsb2NrR2F1Z2UgQ2xvY2t3aXNlQ29udG91ckludGVncmFsIENsb3NlIENsb3NlZCBDbG9zZUtlcm5lbHMgQ2xvc2VuZXNzQ2VudHJhbGl0eSBDbG9zaW5nIENsb3NpbmdBdXRvU2F2ZSBDbG9zaW5nRXZlbnQgQ2xvdWRBY2NvdW50RGF0YSBDbG91ZEJhc2UgQ2xvdWRDb25uZWN0IENsb3VkRGVwbG95IENsb3VkRGlyZWN0b3J5IENsb3VkRGlzY29ubmVjdCBDbG91ZEV2YWx1YXRlIENsb3VkRXhwb3J0IENsb3VkRXhwcmVzc2lvbiBDbG91ZEV4cHJlc3Npb25zIENsb3VkRnVuY3Rpb24gQ2xvdWRHZXQgQ2xvdWRJbXBvcnQgQ2xvdWRMb2dnaW5nRGF0YSBDbG91ZE9iamVjdCBDbG91ZE9iamVjdEluZm9ybWF0aW9uIENsb3VkT2JqZWN0SW5mb3JtYXRpb25EYXRhIENsb3VkT2JqZWN0TmFtZUZvcm1hdCBDbG91ZE9iamVjdHMgQ2xvdWRPYmplY3RVUkxUeXBlIENsb3VkUHVibGlzaCBDbG91ZFB1dCBDbG91ZFJlbmRlcmluZ01ldGhvZCBDbG91ZFNhdmUgQ2xvdWRTaGFyZSBDbG91ZFN1Ym1pdCBDbG91ZFN5bWJvbCBDbG91ZFVuc2hhcmUgQ2x1c3RlckNsYXNzaWZ5IENsdXN0ZXJEaXNzaW1pbGFyaXR5RnVuY3Rpb24gQ2x1c3RlcmluZ0NvbXBvbmVudHMgQ2x1c3RlcmluZ1RyZWUgQ01ZS0NvbG9yIENvYXJzZSBDb2RlQXNzaXN0T3B0aW9ucyBDb2VmZmljaWVudCBDb2VmZmljaWVudEFycmF5cyBDb2VmZmljaWVudERvbWFpbiBDb2VmZmljaWVudExpc3QgQ29lZmZpY2llbnRSdWxlcyBDb2lmbGV0V2F2ZWxldCBDb2xsZWN0IENvbG9uIENvbG9uRm9ybSBDb2xvckJhbGFuY2UgQ29sb3JDb21iaW5lIENvbG9yQ29udmVydCBDb2xvckNvdmVyYWdlIENvbG9yRGF0YSBDb2xvckRhdGFGdW5jdGlvbiBDb2xvckRldGVjdCBDb2xvckRpc3RhbmNlIENvbG9yRnVuY3Rpb24gQ29sb3JGdW5jdGlvblNjYWxpbmcgQ29sb3JpemUgQ29sb3JOZWdhdGUgQ29sb3JPdXRwdXQgQ29sb3JQcm9maWxlRGF0YSBDb2xvclEgQ29sb3JRdWFudGl6ZSBDb2xvclJlcGxhY2UgQ29sb3JSdWxlcyBDb2xvclNlbGVjdG9yU2V0dGluZ3MgQ29sb3JTZXBhcmF0ZSBDb2xvclNldHRlciBDb2xvclNldHRlckJveCBDb2xvclNldHRlckJveE9wdGlvbnMgQ29sb3JTbGlkZXIgQ29sb3JzTmVhciBDb2xvclNwYWNlIENvbG9yVG9uZU1hcHBpbmcgQ29sdW1uIENvbHVtbkFsaWdubWVudHMgQ29sdW1uQmFja2dyb3VuZHMgQ29sdW1uRm9ybSBDb2x1bW5MaW5lcyBDb2x1bW5zRXF1YWwgQ29sdW1uU3BhY2luZ3MgQ29sdW1uV2lkdGhzIENvbWJpbmVkRW50aXR5Q2xhc3MgQ29tYmluZXJGdW5jdGlvbiBDb21ldERhdGEgQ29tbW9uRGVmYXVsdEZvcm1hdFR5cGVzIENvbW1vbmVzdCBDb21tb25lc3RGaWx0ZXIgQ29tbW9uTmFtZSBDb21tb25Vbml0cyBDb21tdW5pdHlCb3VuZGFyeVN0eWxlIENvbW11bml0eUdyYXBoUGxvdCBDb21tdW5pdHlMYWJlbHMgQ29tbXVuaXR5UmVnaW9uU3R5bGUgQ29tcGFueURhdGEgQ29tcGF0aWJsZVVuaXRRIENvbXBpbGF0aW9uT3B0aW9ucyBDb21waWxhdGlvblRhcmdldCBDb21waWxlIENvbXBpbGVkIENvbXBpbGVkQ29kZUZ1bmN0aW9uIENvbXBpbGVkRnVuY3Rpb24gQ29tcGlsZXJPcHRpb25zIENvbXBsZW1lbnQgQ29tcGxldGVHcmFwaCBDb21wbGV0ZUdyYXBoUSBDb21wbGV0ZUthcnlUcmVlIENvbXBsZXRpb25zTGlzdFBhY2tldCBDb21wbGV4IENvbXBsZXhlcyBDb21wbGV4RXhwYW5kIENvbXBsZXhJbmZpbml0eSBDb21wbGV4aXR5RnVuY3Rpb24gQ29tcGxleExpc3RQbG90IENvbXBsZXhQbG90IENvbXBsZXhQbG90M0QgQ29tcG9uZW50TWVhc3VyZW1lbnRzIENvbXBvbmVudHdpc2VDb250ZXh0TWVudSBDb21wb3NlIENvbXBvc2VMaXN0IENvbXBvc2VTZXJpZXMgQ29tcG9zaXRlUSBDb21wb3NpdGlvbiBDb21wb3VuZEVsZW1lbnQgQ29tcG91bmRFeHByZXNzaW9uIENvbXBvdW5kUG9pc3NvbkRpc3RyaWJ1dGlvbiBDb21wb3VuZFBvaXNzb25Qcm9jZXNzIENvbXBvdW5kUmVuZXdhbFByb2Nlc3MgQ29tcHJlc3MgQ29tcHJlc3NlZERhdGEgQ29tcHV0ZVVuY2VydGFpbnR5IENvbmRpdGlvbiBDb25kaXRpb25hbEV4cHJlc3Npb24gQ29uZGl0aW9uZWQgQ29uZSBDb25lQm94IENvbmZpZGVuY2VMZXZlbCBDb25maWRlbmNlUmFuZ2UgQ29uZmlkZW5jZVRyYW5zZm9ybSBDb25maWd1cmF0aW9uUGF0aCBDb25mb3JtQXVkaW8gQ29uZm9ybUltYWdlcyBDb25ncnVlbnQgQ29uaWNIdWxsUmVnaW9uIENvbmljSHVsbFJlZ2lvbjNEQm94IENvbmljSHVsbFJlZ2lvbkJveCBDb25pY09wdGltaXphdGlvbiBDb25qdWdhdGUgQ29uanVnYXRlVHJhbnNwb3NlIENvbmp1bmN0aW9uIENvbm5lY3QgQ29ubmVjdGVkQ29tcG9uZW50cyBDb25uZWN0ZWRHcmFwaENvbXBvbmVudHMgQ29ubmVjdGVkR3JhcGhRIENvbm5lY3RlZE1lc2hDb21wb25lbnRzIENvbm5lY3RlZE1vbGVjdWxlQ29tcG9uZW50cyBDb25uZWN0ZWRNb2xlY3VsZVEgQ29ubmVjdGlvblNldHRpbmdzIENvbm5lY3RMaWJyYXJ5Q2FsbGJhY2tGdW5jdGlvbiBDb25uZWN0U3lzdGVtTW9kZWxDb21wb25lbnRzIENvbm5lc1dpbmRvdyBDb25vdmVyVGVzdCBDb25zb2xlTWVzc2FnZSBDb25zb2xlTWVzc2FnZVBhY2tldCBDb25zb2xlUHJpbnQgQ29uc3RhbnQgQ29uc3RhbnRBcnJheSBDb25zdGFudEFycmF5TGF5ZXIgQ29uc3RhbnRJbWFnZSBDb25zdGFudFBsdXNMYXllciBDb25zdGFudFJlZ2lvblEgQ29uc3RhbnRzIENvbnN0YW50VGltZXNMYXllciBDb25zdGVsbGF0aW9uRGF0YSBDb25zdHJhaW5lZE1heCBDb25zdHJhaW5lZE1pbiBDb25zdHJ1Y3QgQ29udGFpbmluZyBDb250YWluc0FsbCBDb250YWluc0FueSBDb250YWluc0V4YWN0bHkgQ29udGFpbnNOb25lIENvbnRhaW5zT25seSBDb250ZW50RmllbGRPcHRpb25zIENvbnRlbnRMb2NhdGlvbkZ1bmN0aW9uIENvbnRlbnRPYmplY3QgQ29udGVudFBhZGRpbmcgQ29udGVudHNCb3VuZGluZ0JveCBDb250ZW50U2VsZWN0YWJsZSBDb250ZW50U2l6ZSBDb250ZXh0IENvbnRleHRNZW51IENvbnRleHRzIENvbnRleHRUb0ZpbGVOYW1lIENvbnRpbnVhdGlvbiBDb250aW51ZSBDb250aW51ZWRGcmFjdGlvbiBDb250aW51ZWRGcmFjdGlvbksgQ29udGludW91c0FjdGlvbiBDb250aW51b3VzTWFya292UHJvY2VzcyBDb250aW51b3VzVGFzayBDb250aW51b3VzVGltZU1vZGVsUSBDb250aW51b3VzV2F2ZWxldERhdGEgQ29udGludW91c1dhdmVsZXRUcmFuc2Zvcm0gQ29udG91ckRldGVjdCBDb250b3VyR3JhcGhpY3MgQ29udG91ckludGVncmFsIENvbnRvdXJMYWJlbHMgQ29udG91ckxpbmVzIENvbnRvdXJQbG90IENvbnRvdXJQbG90M0QgQ29udG91cnMgQ29udG91clNoYWRpbmcgQ29udG91clNtb290aGluZyBDb250b3VyU3R5bGUgQ29udHJhaGFybW9uaWNNZWFuIENvbnRyYXN0aXZlTG9zc0xheWVyIENvbnRyb2wgQ29udHJvbEFjdGl2ZSBDb250cm9sQWxpZ25tZW50IENvbnRyb2xHcm91cENvbnRlbnRzQm94IENvbnRyb2xsYWJpbGl0eUdyYW1pYW4gQ29udHJvbGxhYmlsaXR5TWF0cml4IENvbnRyb2xsYWJsZURlY29tcG9zaXRpb24gQ29udHJvbGxhYmxlTW9kZWxRIENvbnRyb2xsZXJEdXJhdGlvbiBDb250cm9sbGVySW5mb3JtYXRpb24gQ29udHJvbGxlckluZm9ybWF0aW9uRGF0YSBDb250cm9sbGVyTGlua2luZyBDb250cm9sbGVyTWFuaXB1bGF0ZSBDb250cm9sbGVyTWV0aG9kIENvbnRyb2xsZXJQYXRoIENvbnRyb2xsZXJTdGF0ZSBDb250cm9sUGxhY2VtZW50IENvbnRyb2xzUmVuZGVyaW5nIENvbnRyb2xUeXBlIENvbnZlcmdlbnRzIENvbnZlcnNpb25PcHRpb25zIENvbnZlcnNpb25SdWxlcyBDb252ZXJ0VG9CaXRtYXBQYWNrZXQgQ29udmVydFRvUG9zdFNjcmlwdCBDb252ZXJ0VG9Qb3N0U2NyaXB0UGFja2V0IENvbnZleEh1bGxNZXNoIENvbnZleFBvbHlnb25RIENvbnZleFBvbHloZWRyb25RIENvbnZvbHV0aW9uTGF5ZXIgQ29udm9sdmUgQ29ud2F5R3JvdXBDbzEgQ29ud2F5R3JvdXBDbzIgQ29ud2F5R3JvdXBDbzMgQ29va2llRnVuY3Rpb24gQ29va2llcyBDb29yZGluYXRlQm91bmRpbmdCb3ggQ29vcmRpbmF0ZUJvdW5kaW5nQm94QXJyYXkgQ29vcmRpbmF0ZUJvdW5kcyBDb29yZGluYXRlQm91bmRzQXJyYXkgQ29vcmRpbmF0ZUNoYXJ0RGF0YSBDb29yZGluYXRlc1Rvb2xPcHRpb25zIENvb3JkaW5hdGVUcmFuc2Zvcm0gQ29vcmRpbmF0ZVRyYW5zZm9ybURhdGEgQ29wcmltZVEgQ29wcm9kdWN0IENvcHVsYURpc3RyaWJ1dGlvbiBDb3B5YWJsZSBDb3B5RGF0YWJpbiBDb3B5RGlyZWN0b3J5IENvcHlGaWxlIENvcHlUYWcgQ29weVRvQ2xpcGJvYXJkIENvcm5lckZpbHRlciBDb3JuZXJOZWlnaGJvcnMgQ29ycmVsYXRpb24gQ29ycmVsYXRpb25EaXN0YW5jZSBDb3JyZWxhdGlvbkZ1bmN0aW9uIENvcnJlbGF0aW9uVGVzdCBDb3MgQ29zaCBDb3NoSW50ZWdyYWwgQ29zaW5lRGlzdGFuY2UgQ29zaW5lV2luZG93IENvc0ludGVncmFsIENvdCBDb3RoIENvdW50IENvdW50RGlzdGluY3QgQ291bnREaXN0aW5jdEJ5IENvdW50ZXJBc3NpZ25tZW50cyBDb3VudGVyQm94IENvdW50ZXJCb3hPcHRpb25zIENvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWwgQ291bnRlckV2YWx1YXRvciBDb3VudGVyRnVuY3Rpb24gQ291bnRlckluY3JlbWVudHMgQ291bnRlclN0eWxlIENvdW50ZXJTdHlsZU1lbnVMaXN0aW5nIENvdW50Um9vdHMgQ291bnRyeURhdGEgQ291bnRzIENvdW50c0J5IENvdmFyaWFuY2UgQ292YXJpYW5jZUVzdGltYXRvckZ1bmN0aW9uIENvdmFyaWFuY2VGdW5jdGlvbiBDb3hpYW5EaXN0cmlidXRpb24gQ294SW5nZXJzb2xsUm9zc1Byb2Nlc3MgQ294TW9kZWwgQ294TW9kZWxGaXQgQ3JhbWVyVm9uTWlzZXNUZXN0IENyZWF0ZUFyY2hpdmUgQ3JlYXRlQ2VsbElEIENyZWF0ZUNoYW5uZWwgQ3JlYXRlQ2xvdWRFeHByZXNzaW9uIENyZWF0ZURhdGFiaW4gQ3JlYXRlRGF0YVN5c3RlbU1vZGVsIENyZWF0ZURpYWxvZyBDcmVhdGVEaXJlY3RvcnkgQ3JlYXRlRG9jdW1lbnQgQ3JlYXRlRmlsZSBDcmVhdGVJbnRlcm1lZGlhdGVEaXJlY3RvcmllcyBDcmVhdGVNYW5hZ2VkTGlicmFyeUV4cHJlc3Npb24gQ3JlYXRlTm90ZWJvb2sgQ3JlYXRlUGFsZXR0ZSBDcmVhdGVQYWxldHRlUGFja2V0IENyZWF0ZVBlcm1pc3Npb25zR3JvdXAgQ3JlYXRlU2NoZWR1bGVkVGFzayBDcmVhdGVTZWFyY2hJbmRleCBDcmVhdGVTeXN0ZW1Nb2RlbCBDcmVhdGVUZW1wb3JhcnkgQ3JlYXRlVVVJRCBDcmVhdGVXaW5kb3cgQ3JpdGVyaW9uRnVuY3Rpb24gQ3JpdGljYWxpdHlGYWlsdXJlSW1wb3J0YW5jZSBDcml0aWNhbGl0eVN1Y2Nlc3NJbXBvcnRhbmNlIENyaXRpY2FsU2VjdGlvbiBDcm9zcyBDcm9zc0VudHJvcHlMb3NzTGF5ZXIgQ3Jvc3NpbmdDb3VudCBDcm9zc2luZ0RldGVjdCBDcm9zc2luZ1BvbHlnb24gQ3Jvc3NNYXRyaXggQ3NjIENzY2ggQ1RDTG9zc0xheWVyIEN1YmUgQ3ViZVJvb3QgQ3ViaWNzIEN1Ym9pZCBDdWJvaWRCb3ggQ3VtdWxhbnQgQ3VtdWxhbnRHZW5lcmF0aW5nRnVuY3Rpb24gQ3VwIEN1cENhcCBDdXJsIEN1cmx5RG91YmxlUXVvdGUgQ3VybHlRdW90ZSBDdXJyZW5jeUNvbnZlcnQgQ3VycmVudERhdGUgQ3VycmVudEltYWdlIEN1cnJlbnRseVNwZWFraW5nUGFja2V0IEN1cnJlbnROb3RlYm9va0ltYWdlIEN1cnJlbnRTY3JlZW5JbWFnZSBDdXJyZW50VmFsdWUgQ3VycnkgQ3VydmF0dXJlRmxvd0ZpbHRlciBDdXJ2ZUNsb3NlZCBDeWFuIEN5Y2xlR3JhcGggQ3ljbGVJbmRleFBvbHlub21pYWwgQ3ljbGVzIEN5Y2xpY0dyb3VwIEN5Y2xvdG9taWMgQ3lsaW5kZXIgQ3lsaW5kZXJCb3ggQ3lsaW5kcmljYWxEZWNvbXBvc2l0aW9uJyArXG4gICAgICAnRCBEYWd1bURpc3RyaWJ1dGlvbiBEYW1EYXRhIERhbWVyYXVMZXZlbnNodGVpbkRpc3RhbmNlIERhbXBpbmdGYWN0b3IgRGFya2VyIERhc2hlZCBEYXNoaW5nIERhdGFiYXNlQ29ubmVjdCBEYXRhYmFzZURpc2Nvbm5lY3QgRGF0YWJhc2VSZWZlcmVuY2UgRGF0YWJpbiBEYXRhYmluQWRkIERhdGFiaW5SZW1vdmUgRGF0YWJpbnMgRGF0YWJpblVwbG9hZCBEYXRhQ29tcHJlc3Npb24gRGF0YURpc3RyaWJ1dGlvbiBEYXRhUmFuZ2UgRGF0YVJldmVyc2VkIERhdGFzZXQgRGF0ZSBEYXRlQm91bmRzIERhdGVkIERhdGVEZWxpbWl0ZXJzIERhdGVEaWZmZXJlbmNlIERhdGVkVW5pdCBEYXRlRm9ybWF0IERhdGVGdW5jdGlvbiBEYXRlSGlzdG9ncmFtIERhdGVMaXN0IERhdGVMaXN0TG9nUGxvdCBEYXRlTGlzdFBsb3QgRGF0ZUxpc3RTdGVwUGxvdCBEYXRlT2JqZWN0IERhdGVPYmplY3RRIERhdGVPdmVybGFwc1EgRGF0ZVBhdHRlcm4gRGF0ZVBsdXMgRGF0ZVJhbmdlIERhdGVSZWR1Y3Rpb24gRGF0ZVN0cmluZyBEYXRlVGlja3NGb3JtYXQgRGF0ZVZhbHVlIERhdGVXaXRoaW5RIERhdWJlY2hpZXNXYXZlbGV0IERhdmlzRGlzdHJpYnV0aW9uIERhd3NvbkYgRGF5Q291bnQgRGF5Q291bnRDb252ZW50aW9uIERheUhlbWlzcGhlcmUgRGF5bGlnaHRRIERheU1hdGNoUSBEYXlOYW1lIERheU5pZ2h0VGVybWluYXRvciBEYXlQbHVzIERheVJhbmdlIERheVJvdW5kIERlQnJ1aWpuR3JhcGggRGVCcnVpam5TZXF1ZW5jZSBEZWJ1ZyBEZWJ1Z1RhZyBEZWNhcGl0YWxpemUgRGVjaW1hbCBEZWNpbWFsRm9ybSBEZWNsYXJlS25vd25TeW1ib2xzIERlY2xhcmVQYWNrYWdlIERlY29tcG9zZSBEZWNvbnZvbHV0aW9uTGF5ZXIgRGVjcmVtZW50IERlY3J5cHQgRGVjcnlwdEZpbGUgRGVkZWtpbmRFdGEgRGVlcFNwYWNlUHJvYmVEYXRhIERlZmF1bHQgRGVmYXVsdEF4ZXNTdHlsZSBEZWZhdWx0QmFzZVN0eWxlIERlZmF1bHRCb3hTdHlsZSBEZWZhdWx0QnV0dG9uIERlZmF1bHRDb2xvciBEZWZhdWx0Q29udHJvbFBsYWNlbWVudCBEZWZhdWx0RHVwbGljYXRlQ2VsbFN0eWxlIERlZmF1bHREdXJhdGlvbiBEZWZhdWx0RWxlbWVudCBEZWZhdWx0RmFjZUdyaWRzU3R5bGUgRGVmYXVsdEZpZWxkSGludFN0eWxlIERlZmF1bHRGb250IERlZmF1bHRGb250UHJvcGVydGllcyBEZWZhdWx0Rm9ybWF0VHlwZSBEZWZhdWx0Rm9ybWF0VHlwZUZvclN0eWxlIERlZmF1bHRGcmFtZVN0eWxlIERlZmF1bHRGcmFtZVRpY2tzU3R5bGUgRGVmYXVsdEdyaWRMaW5lc1N0eWxlIERlZmF1bHRJbmxpbmVGb3JtYXRUeXBlIERlZmF1bHRJbnB1dEZvcm1hdFR5cGUgRGVmYXVsdExhYmVsU3R5bGUgRGVmYXVsdE1lbnVTdHlsZSBEZWZhdWx0TmF0dXJhbExhbmd1YWdlIERlZmF1bHROZXdDZWxsU3R5bGUgRGVmYXVsdE5ld0lubGluZUNlbGxTdHlsZSBEZWZhdWx0Tm90ZWJvb2sgRGVmYXVsdE9wdGlvbnMgRGVmYXVsdE91dHB1dEZvcm1hdFR5cGUgRGVmYXVsdFByaW50UHJlY2lzaW9uIERlZmF1bHRTdHlsZSBEZWZhdWx0U3R5bGVEZWZpbml0aW9ucyBEZWZhdWx0VGV4dEZvcm1hdFR5cGUgRGVmYXVsdFRleHRJbmxpbmVGb3JtYXRUeXBlIERlZmF1bHRUaWNrc1N0eWxlIERlZmF1bHRUb29sdGlwU3R5bGUgRGVmYXVsdFZhbHVlIERlZmF1bHRWYWx1ZXMgRGVmZXIgRGVmaW5lRXh0ZXJuYWwgRGVmaW5lSW5wdXRTdHJlYW1NZXRob2QgRGVmaW5lT3V0cHV0U3RyZWFtTWV0aG9kIERlZmluZVJlc291cmNlRnVuY3Rpb24gRGVmaW5pdGlvbiBEZWdyZWUgRGVncmVlQ2VudHJhbGl0eSBEZWdyZWVHcmFwaERpc3RyaWJ1dGlvbiBEZWdyZWVMZXhpY29ncmFwaGljIERlZ3JlZVJldmVyc2VMZXhpY29ncmFwaGljIERFaWdlbnN5c3RlbSBERWlnZW52YWx1ZXMgRGVpbml0aWFsaXphdGlvbiBEZWwgRGVsYXVuYXlNZXNoIERlbGF5ZWQgRGVsZXRhYmxlIERlbGV0ZSBEZWxldGVBbm9tYWxpZXMgRGVsZXRlQm9yZGVyQ29tcG9uZW50cyBEZWxldGVDYXNlcyBEZWxldGVDaGFubmVsIERlbGV0ZUNsb3VkRXhwcmVzc2lvbiBEZWxldGVDb250ZW50cyBEZWxldGVEaXJlY3RvcnkgRGVsZXRlRHVwbGljYXRlcyBEZWxldGVEdXBsaWNhdGVzQnkgRGVsZXRlRmlsZSBEZWxldGVNaXNzaW5nIERlbGV0ZU9iamVjdCBEZWxldGVQZXJtaXNzaW9uc0tleSBEZWxldGVTZWFyY2hJbmRleCBEZWxldGVTbWFsbENvbXBvbmVudHMgRGVsZXRlU3RvcHdvcmRzIERlbGV0ZVdpdGhDb250ZW50cyBEZWxldGlvbldhcm5pbmcgRGVsaW1pdGVkQXJyYXkgRGVsaW1pdGVkU2VxdWVuY2UgRGVsaW1pdGVyIERlbGltaXRlckZsYXNoVGltZSBEZWxpbWl0ZXJNYXRjaGluZyBEZWxpbWl0ZXJzIERlbGl2ZXJ5RnVuY3Rpb24gRGVuZHJvZ3JhbSBEZW5vbWluYXRvciBEZW5zaXR5R3JhcGhpY3MgRGVuc2l0eUhpc3RvZ3JhbSBEZW5zaXR5UGxvdCBEZW5zaXR5UGxvdDNEIERlcGVuZGVudFZhcmlhYmxlcyBEZXBsb3kgRGVwbG95ZWQgRGVwdGggRGVwdGhGaXJzdFNjYW4gRGVyaXZhdGl2ZSBEZXJpdmF0aXZlRmlsdGVyIERlcml2ZWRLZXkgRGVzY3JpcHRvclN0YXRlU3BhY2UgRGVzaWduTWF0cml4IERlc3Ryb3lBZnRlckV2YWx1YXRpb24gRGV0IERldmljZUNsb3NlIERldmljZUNvbmZpZ3VyZSBEZXZpY2VFeGVjdXRlIERldmljZUV4ZWN1dGVBc3luY2hyb25vdXMgRGV2aWNlT2JqZWN0IERldmljZU9wZW4gRGV2aWNlT3BlblEgRGV2aWNlUmVhZCBEZXZpY2VSZWFkQnVmZmVyIERldmljZVJlYWRMYXRlc3QgRGV2aWNlUmVhZExpc3QgRGV2aWNlUmVhZFRpbWVTZXJpZXMgRGV2aWNlcyBEZXZpY2VTdHJlYW1zIERldmljZVdyaXRlIERldmljZVdyaXRlQnVmZmVyIERHYXVzc2lhbldhdmVsZXQgRGlhY3JpdGljYWxQb3NpdGlvbmluZyBEaWFnb25hbCBEaWFnb25hbGl6YWJsZU1hdHJpeFEgRGlhZ29uYWxNYXRyaXggRGlhZ29uYWxNYXRyaXhRIERpYWxvZyBEaWFsb2dJbmRlbnQgRGlhbG9nSW5wdXQgRGlhbG9nTGV2ZWwgRGlhbG9nTm90ZWJvb2sgRGlhbG9nUHJvbG9nIERpYWxvZ1JldHVybiBEaWFsb2dTeW1ib2xzIERpYW1vbmQgRGlhbW9uZE1hdHJpeCBEaWNlRGlzc2ltaWxhcml0eSBEaWN0aW9uYXJ5TG9va3VwIERpY3Rpb25hcnlXb3JkUSBEaWZmZXJlbmNlRGVsdGEgRGlmZmVyZW5jZU9yZGVyIERpZmZlcmVuY2VRdW90aWVudCBEaWZmZXJlbmNlUm9vdCBEaWZmZXJlbmNlUm9vdFJlZHVjZSBEaWZmZXJlbmNlcyBEaWZmZXJlbnRpYWxEIERpZmZlcmVudGlhbFJvb3QgRGlmZmVyZW50aWFsUm9vdFJlZHVjZSBEaWZmZXJlbnRpYXRvckZpbHRlciBEaWdpdGFsU2lnbmF0dXJlIERpZ2l0QmxvY2sgRGlnaXRCbG9ja01pbmltdW0gRGlnaXRDaGFyYWN0ZXIgRGlnaXRDb3VudCBEaWdpdFEgRGloZWRyYWxBbmdsZSBEaWhlZHJhbEdyb3VwIERpbGF0aW9uIERpbWVuc2lvbmFsQ29tYmluYXRpb25zIERpbWVuc2lvbmFsTWVzaENvbXBvbmVudHMgRGltZW5zaW9uUmVkdWNlIERpbWVuc2lvblJlZHVjZXJGdW5jdGlvbiBEaW1lbnNpb25SZWR1Y3Rpb24gRGltZW5zaW9ucyBEaXJhY0NvbWIgRGlyYWNEZWx0YSBEaXJlY3RlZEVkZ2UgRGlyZWN0ZWRFZGdlcyBEaXJlY3RlZEdyYXBoIERpcmVjdGVkR3JhcGhRIERpcmVjdGVkSW5maW5pdHkgRGlyZWN0aW9uIERpcmVjdGl2ZSBEaXJlY3RvcnkgRGlyZWN0b3J5TmFtZSBEaXJlY3RvcnlRIERpcmVjdG9yeVN0YWNrIERpcmljaGxldEJldGEgRGlyaWNobGV0Q2hhcmFjdGVyIERpcmljaGxldENvbmRpdGlvbiBEaXJpY2hsZXRDb252b2x2ZSBEaXJpY2hsZXREaXN0cmlidXRpb24gRGlyaWNobGV0RXRhIERpcmljaGxldEwgRGlyaWNobGV0TGFtYmRhIERpcmljaGxldFRyYW5zZm9ybSBEaXJpY2hsZXRXaW5kb3cgRGlzYWJsZUNvbnNvbGVQcmludFBhY2tldCBEaXNhYmxlRm9ybWF0dGluZyBEaXNjcmV0ZUNoaXJwWlRyYW5zZm9ybSBEaXNjcmV0ZUNvbnZvbHZlIERpc2NyZXRlRGVsdGEgRGlzY3JldGVIYWRhbWFyZFRyYW5zZm9ybSBEaXNjcmV0ZUluZGljYXRvciBEaXNjcmV0ZUxpbWl0IERpc2NyZXRlTFFFc3RpbWF0b3JHYWlucyBEaXNjcmV0ZUxRUmVndWxhdG9yR2FpbnMgRGlzY3JldGVMeWFwdW5vdlNvbHZlIERpc2NyZXRlTWFya292UHJvY2VzcyBEaXNjcmV0ZU1heExpbWl0IERpc2NyZXRlTWluTGltaXQgRGlzY3JldGVQbG90IERpc2NyZXRlUGxvdDNEIERpc2NyZXRlUmF0aW8gRGlzY3JldGVSaWNjYXRpU29sdmUgRGlzY3JldGVTaGlmdCBEaXNjcmV0ZVRpbWVNb2RlbFEgRGlzY3JldGVVbmlmb3JtRGlzdHJpYnV0aW9uIERpc2NyZXRlVmFyaWFibGVzIERpc2NyZXRlV2F2ZWxldERhdGEgRGlzY3JldGVXYXZlbGV0UGFja2V0VHJhbnNmb3JtIERpc2NyZXRlV2F2ZWxldFRyYW5zZm9ybSBEaXNjcmV0aXplR3JhcGhpY3MgRGlzY3JldGl6ZVJlZ2lvbiBEaXNjcmltaW5hbnQgRGlzam9pbnRRIERpc2p1bmN0aW9uIERpc2sgRGlza0JveCBEaXNrTWF0cml4IERpc2tTZWdtZW50IERpc3BhdGNoIERpc3BhdGNoUSBEaXNwZXJzaW9uRXN0aW1hdG9yRnVuY3Rpb24gRGlzcGxheSBEaXNwbGF5QWxsU3RlcHMgRGlzcGxheUVuZFBhY2tldCBEaXNwbGF5Rmx1c2hJbWFnZVBhY2tldCBEaXNwbGF5Rm9ybSBEaXNwbGF5RnVuY3Rpb24gRGlzcGxheVBhY2tldCBEaXNwbGF5UnVsZXMgRGlzcGxheVNldFNpemVQYWNrZXQgRGlzcGxheVN0cmluZyBEaXNwbGF5VGVtcG9yYXJ5IERpc3BsYXlXaXRoIERpc3BsYXlXaXRoUmVmIERpc3BsYXlXaXRoVmFyaWFibGUgRGlzdGFuY2VGdW5jdGlvbiBEaXN0YW5jZU1hdHJpeCBEaXN0YW5jZVRyYW5zZm9ybSBEaXN0cmlidXRlIERpc3RyaWJ1dGVkIERpc3RyaWJ1dGVkQ29udGV4dHMgRGlzdHJpYnV0ZURlZmluaXRpb25zIERpc3RyaWJ1dGlvbkNoYXJ0IERpc3RyaWJ1dGlvbkRvbWFpbiBEaXN0cmlidXRpb25GaXRUZXN0IERpc3RyaWJ1dGlvblBhcmFtZXRlckFzc3VtcHRpb25zIERpc3RyaWJ1dGlvblBhcmFtZXRlclEgRGl0aGVyaW5nIERpdiBEaXZlcmdlbmNlIERpdmlkZSBEaXZpZGVCeSBEaXZpZGVycyBEaXZpZGVTaWRlcyBEaXZpc2libGUgRGl2aXNvcnMgRGl2aXNvclNpZ21hIERpdmlzb3JTdW0gRE1TTGlzdCBETVNTdHJpbmcgRG8gRG9ja2VkQ2VsbHMgRG9jdW1lbnRHZW5lcmF0b3IgRG9jdW1lbnRHZW5lcmF0b3JJbmZvcm1hdGlvbiBEb2N1bWVudEdlbmVyYXRvckluZm9ybWF0aW9uRGF0YSBEb2N1bWVudEdlbmVyYXRvcnMgRG9jdW1lbnROb3RlYm9vayBEb2N1bWVudFdlaWdodGluZ1J1bGVzIERvZGVjYWhlZHJvbiBEb21haW5SZWdpc3RyYXRpb25JbmZvcm1hdGlvbiBEb21pbmFudENvbG9ycyBET1NUZXh0Rm9ybWF0IERvdCBEb3REYXNoZWQgRG90RXF1YWwgRG90TGF5ZXIgRG90UGx1c0xheWVyIERvdHRlZCBEb3VibGVCcmFja2V0aW5nQmFyIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCBEb3VibGVEb3duQXJyb3cgRG91YmxlTGVmdEFycm93IERvdWJsZUxlZnRSaWdodEFycm93IERvdWJsZUxlZnRUZWUgRG91YmxlTG9uZ0xlZnRBcnJvdyBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgRG91YmxlTG9uZ1JpZ2h0QXJyb3cgRG91YmxlUmlnaHRBcnJvdyBEb3VibGVSaWdodFRlZSBEb3VibGVVcEFycm93IERvdWJsZVVwRG93bkFycm93IERvdWJsZVZlcnRpY2FsQmFyIERvdWJseUluZmluaXRlIERvd24gRG93bkFycm93IERvd25BcnJvd0JhciBEb3duQXJyb3dVcEFycm93IERvd25MZWZ0UmlnaHRWZWN0b3IgRG93bkxlZnRUZWVWZWN0b3IgRG93bkxlZnRWZWN0b3IgRG93bkxlZnRWZWN0b3JCYXIgRG93blJpZ2h0VGVlVmVjdG9yIERvd25SaWdodFZlY3RvciBEb3duUmlnaHRWZWN0b3JCYXIgRG93bnNhbXBsZSBEb3duVGVlIERvd25UZWVBcnJvdyBEb3duVmFsdWVzIERyYWdBbmREcm9wIERyYXdFZGdlcyBEcmF3RnJvbnRGYWNlcyBEcmF3SGlnaGxpZ2h0ZWQgRHJvcCBEcm9wb3V0TGF5ZXIgRFNvbHZlIERTb2x2ZVZhbHVlIER0IER1YWxMaW5lYXJQcm9ncmFtbWluZyBEdWFsUG9seWhlZHJvbiBEdWFsU3lzdGVtc01vZGVsIER1bXBHZXQgRHVtcFNhdmUgRHVwbGljYXRlRnJlZVEgRHVyYXRpb24gRHluYW1pYyBEeW5hbWljQm94IER5bmFtaWNCb3hPcHRpb25zIER5bmFtaWNFdmFsdWF0aW9uVGltZW91dCBEeW5hbWljR2VvR3JhcGhpY3MgRHluYW1pY0ltYWdlIER5bmFtaWNMb2NhdGlvbiBEeW5hbWljTW9kdWxlIER5bmFtaWNNb2R1bGVCb3ggRHluYW1pY01vZHVsZUJveE9wdGlvbnMgRHluYW1pY01vZHVsZVBhcmVudCBEeW5hbWljTW9kdWxlVmFsdWVzIER5bmFtaWNOYW1lIER5bmFtaWNOYW1lc3BhY2UgRHluYW1pY1JlZmVyZW5jZSBEeW5hbWljU2V0dGluZyBEeW5hbWljVXBkYXRpbmcgRHluYW1pY1dyYXBwZXIgRHluYW1pY1dyYXBwZXJCb3ggRHluYW1pY1dyYXBwZXJCb3hPcHRpb25zJyArXG4gICAgICAnRSBFYXJ0aEltcGFjdERhdGEgRWFydGhxdWFrZURhdGEgRWNjZW50cmljaXR5Q2VudHJhbGl0eSBFY2hvIEVjaG9GdW5jdGlvbiBFY2xpcHNlVHlwZSBFZGdlQWRkIEVkZ2VCZXR3ZWVubmVzc0NlbnRyYWxpdHkgRWRnZUNhcGFjaXR5IEVkZ2VDYXBGb3JtIEVkZ2VDb2xvciBFZGdlQ29ubmVjdGl2aXR5IEVkZ2VDb250cmFjdCBFZGdlQ29zdCBFZGdlQ291bnQgRWRnZUNvdmVyUSBFZGdlQ3ljbGVNYXRyaXggRWRnZURhc2hpbmcgRWRnZURlbGV0ZSBFZGdlRGV0ZWN0IEVkZ2VGb3JtIEVkZ2VJbmRleCBFZGdlSm9pbkZvcm0gRWRnZUxhYmVsaW5nIEVkZ2VMYWJlbHMgRWRnZUxhYmVsU3R5bGUgRWRnZUxpc3QgRWRnZU9wYWNpdHkgRWRnZVEgRWRnZVJlbmRlcmluZ0Z1bmN0aW9uIEVkZ2VSdWxlcyBFZGdlU2hhcGVGdW5jdGlvbiBFZGdlU3R5bGUgRWRnZVRoaWNrbmVzcyBFZGdlV2VpZ2h0IEVkZ2VXZWlnaHRlZEdyYXBoUSBFZGl0YWJsZSBFZGl0QnV0dG9uU2V0dGluZ3MgRWRpdENlbGxUYWdzU2V0dGluZ3MgRWRpdERpc3RhbmNlIEVmZmVjdGl2ZUludGVyZXN0IEVpZ2Vuc3lzdGVtIEVpZ2VudmFsdWVzIEVpZ2VudmVjdG9yQ2VudHJhbGl0eSBFaWdlbnZlY3RvcnMgRWxlbWVudCBFbGVtZW50RGF0YSBFbGVtZW50d2lzZUxheWVyIEVsaWRlZEZvcm1zIEVsaW1pbmF0ZSBFbGltaW5hdGlvbk9yZGVyIEVsbGlwc29pZCBFbGxpcHRpY0UgRWxsaXB0aWNFeHAgRWxsaXB0aWNFeHBQcmltZSBFbGxpcHRpY0YgRWxsaXB0aWNGaWx0ZXJNb2RlbCBFbGxpcHRpY0sgRWxsaXB0aWNMb2cgRWxsaXB0aWNOb21lUSBFbGxpcHRpY1BpIEVsbGlwdGljUmVkdWNlZEhhbGZQZXJpb2RzIEVsbGlwdGljVGhldGEgRWxsaXB0aWNUaGV0YVByaW1lIEVtYmVkQ29kZSBFbWJlZGRlZEhUTUwgRW1iZWRkZWRTZXJ2aWNlIEVtYmVkZGluZ0xheWVyIEVtYmVkZGluZ09iamVjdCBFbWl0U291bmQgRW1waGFzaXplU3ludGF4RXJyb3JzIEVtcGlyaWNhbERpc3RyaWJ1dGlvbiBFbXB0eSBFbXB0eUdyYXBoUSBFbXB0eVJlZ2lvbiBFbmFibGVDb25zb2xlUHJpbnRQYWNrZXQgRW5hYmxlZCBFbmNvZGUgRW5jcnlwdCBFbmNyeXB0ZWRPYmplY3QgRW5jcnlwdEZpbGUgRW5kIEVuZEFkZCBFbmREaWFsb2dQYWNrZXQgRW5kRnJvbnRFbmRJbnRlcmFjdGlvblBhY2tldCBFbmRPZkJ1ZmZlciBFbmRPZkZpbGUgRW5kT2ZMaW5lIEVuZE9mU3RyaW5nIEVuZFBhY2thZ2UgRW5naW5lRW52aXJvbm1lbnQgRW5naW5lZXJpbmdGb3JtIEVudGVyIEVudGVyRXhwcmVzc2lvblBhY2tldCBFbnRlclRleHRQYWNrZXQgRW50aXR5IEVudGl0eUNsYXNzIEVudGl0eUNsYXNzTGlzdCBFbnRpdHlDb3BpZXMgRW50aXR5RnVuY3Rpb24gRW50aXR5R3JvdXAgRW50aXR5SW5zdGFuY2UgRW50aXR5TGlzdCBFbnRpdHlQcmVmZXRjaCBFbnRpdHlQcm9wZXJ0aWVzIEVudGl0eVByb3BlcnR5IEVudGl0eVByb3BlcnR5Q2xhc3MgRW50aXR5UmVnaXN0ZXIgRW50aXR5U3RvcmUgRW50aXR5U3RvcmVzIEVudGl0eVR5cGVOYW1lIEVudGl0eVVucmVnaXN0ZXIgRW50aXR5VmFsdWUgRW50cm9weSBFbnRyb3B5RmlsdGVyIEVudmlyb25tZW50IEVwaWxvZyBFcGlsb2dGdW5jdGlvbiBFcXVhbCBFcXVhbENvbHVtbnMgRXF1YWxSb3dzIEVxdWFsVGlsZGUgRXF1YWxUbyBFcXVhdGVkVG8gRXF1aWxpYnJpdW0gRXF1aXJpcHBsZUZpbHRlcktlcm5lbCBFcXVpdmFsZW50IEVyZiBFcmZjIEVyZmkgRXJsYW5nQiBFcmxhbmdDIEVybGFuZ0Rpc3RyaWJ1dGlvbiBFcm9zaW9uIEVycm9yQm94IEVycm9yQm94T3B0aW9ucyBFcnJvck5vcm0gRXJyb3JQYWNrZXQgRXJyb3JzRGlhbG9nU2V0dGluZ3MgRXNjYXBlUmFkaXVzIEVzdGltYXRlZEJhY2tncm91bmQgRXN0aW1hdGVkRGlzdHJpYnV0aW9uIEVzdGltYXRlZFByb2Nlc3MgRXN0aW1hdG9yR2FpbnMgRXN0aW1hdG9yUmVndWxhdG9yIEV1Y2xpZGVhbkRpc3RhbmNlIEV1bGVyQW5nbGVzIEV1bGVyQ2hhcmFjdGVyaXN0aWMgRXVsZXJFIEV1bGVyR2FtbWEgRXVsZXJpYW5HcmFwaFEgRXVsZXJNYXRyaXggRXVsZXJQaGkgRXZhbHVhdGFibGUgRXZhbHVhdGUgRXZhbHVhdGVkIEV2YWx1YXRlUGFja2V0IEV2YWx1YXRlU2NoZWR1bGVkVGFzayBFdmFsdWF0aW9uQm94IEV2YWx1YXRpb25DZWxsIEV2YWx1YXRpb25Db21wbGV0aW9uQWN0aW9uIEV2YWx1YXRpb25EYXRhIEV2YWx1YXRpb25FbGVtZW50cyBFdmFsdWF0aW9uRW52aXJvbm1lbnQgRXZhbHVhdGlvbk1vZGUgRXZhbHVhdGlvbk1vbml0b3IgRXZhbHVhdGlvbk5vdGVib29rIEV2YWx1YXRpb25PYmplY3QgRXZhbHVhdGlvbk9yZGVyIEV2YWx1YXRvciBFdmFsdWF0b3JOYW1lcyBFdmVuUSBFdmVudERhdGEgRXZlbnRFdmFsdWF0b3IgRXZlbnRIYW5kbGVyIEV2ZW50SGFuZGxlclRhZyBFdmVudExhYmVscyBFdmVudFNlcmllcyBFeGFjdEJsYWNrbWFuV2luZG93IEV4YWN0TnVtYmVyUSBFeGFjdFJvb3RJc29sYXRpb24gRXhhbXBsZURhdGEgRXhjZXB0IEV4Y2x1ZGVkRm9ybXMgRXhjbHVkZWRMaW5lcyBFeGNsdWRlZFBoeXNpY2FsUXVhbnRpdGllcyBFeGNsdWRlUG9kcyBFeGNsdXNpb25zIEV4Y2x1c2lvbnNTdHlsZSBFeGlzdHMgRXhpdCBFeGl0RGlhbG9nIEV4b3BsYW5ldERhdGEgRXhwIEV4cGFuZCBFeHBhbmRBbGwgRXhwYW5kRGVub21pbmF0b3IgRXhwYW5kRmlsZU5hbWUgRXhwYW5kTnVtZXJhdG9yIEV4cGVjdGF0aW9uIEV4cGVjdGF0aW9uRSBFeHBlY3RlZFZhbHVlIEV4cEdhbW1hRGlzdHJpYnV0aW9uIEV4cEludGVncmFsRSBFeHBJbnRlZ3JhbEVpIEV4cGlyYXRpb25EYXRlIEV4cG9uZW50IEV4cG9uZW50RnVuY3Rpb24gRXhwb25lbnRpYWxEaXN0cmlidXRpb24gRXhwb25lbnRpYWxGYW1pbHkgRXhwb25lbnRpYWxHZW5lcmF0aW5nRnVuY3Rpb24gRXhwb25lbnRpYWxNb3ZpbmdBdmVyYWdlIEV4cG9uZW50aWFsUG93ZXJEaXN0cmlidXRpb24gRXhwb25lbnRQb3NpdGlvbiBFeHBvbmVudFN0ZXAgRXhwb3J0IEV4cG9ydEF1dG9SZXBsYWNlbWVudHMgRXhwb3J0Qnl0ZUFycmF5IEV4cG9ydEZvcm0gRXhwb3J0UGFja2V0IEV4cG9ydFN0cmluZyBFeHByZXNzaW9uIEV4cHJlc3Npb25DZWxsIEV4cHJlc3Npb25QYWNrZXQgRXhwcmVzc2lvblVVSUQgRXhwVG9UcmlnIEV4dGVuZGVkRW50aXR5Q2xhc3MgRXh0ZW5kZWRHQ0QgRXh0ZW5zaW9uIEV4dGVudEVsZW1lbnRGdW5jdGlvbiBFeHRlbnRNYXJrZXJzIEV4dGVudFNpemUgRXh0ZXJuYWxCdW5kbGUgRXh0ZXJuYWxDYWxsIEV4dGVybmFsRGF0YUNoYXJhY3RlckVuY29kaW5nIEV4dGVybmFsRXZhbHVhdGUgRXh0ZXJuYWxGdW5jdGlvbiBFeHRlcm5hbEZ1bmN0aW9uTmFtZSBFeHRlcm5hbE9iamVjdCBFeHRlcm5hbE9wdGlvbnMgRXh0ZXJuYWxTZXNzaW9uT2JqZWN0IEV4dGVybmFsU2Vzc2lvbnMgRXh0ZXJuYWxUeXBlU2lnbmF0dXJlIEV4dGVybmFsVmFsdWUgRXh0cmFjdCBFeHRyYWN0QXJjaGl2ZSBFeHRyYWN0TGF5ZXIgRXh0cmVtZVZhbHVlRGlzdHJpYnV0aW9uJyArXG4gICAgICAnRmFjZUZvcm0gRmFjZUdyaWRzIEZhY2VHcmlkc1N0eWxlIEZhY2lhbEZlYXR1cmVzIEZhY3RvciBGYWN0b3JDb21wbGV0ZSBGYWN0b3JpYWwgRmFjdG9yaWFsMiBGYWN0b3JpYWxNb21lbnQgRmFjdG9yaWFsTW9tZW50R2VuZXJhdGluZ0Z1bmN0aW9uIEZhY3RvcmlhbFBvd2VyIEZhY3RvckludGVnZXIgRmFjdG9yTGlzdCBGYWN0b3JTcXVhcmVGcmVlIEZhY3RvclNxdWFyZUZyZWVMaXN0IEZhY3RvclRlcm1zIEZhY3RvclRlcm1zTGlzdCBGYWlsIEZhaWx1cmUgRmFpbHVyZUFjdGlvbiBGYWlsdXJlRGlzdHJpYnV0aW9uIEZhaWx1cmVRIEZhbHNlIEZhcmV5U2VxdWVuY2UgRkFSSU1BUHJvY2VzcyBGZWF0dXJlRGlzdGFuY2UgRmVhdHVyZUV4dHJhY3QgRmVhdHVyZUV4dHJhY3Rpb24gRmVhdHVyZUV4dHJhY3RvciBGZWF0dXJlRXh0cmFjdG9yRnVuY3Rpb24gRmVhdHVyZU5hbWVzIEZlYXR1cmVOZWFyZXN0IEZlYXR1cmVTcGFjZVBsb3QgRmVhdHVyZVNwYWNlUGxvdDNEIEZlYXR1cmVUeXBlcyBGRURpc2FibGVDb25zb2xlUHJpbnRQYWNrZXQgRmVlZGJhY2tMaW5lYXJpemUgRmVlZGJhY2tTZWN0b3IgRmVlZGJhY2tTZWN0b3JTdHlsZSBGZWVkYmFja1R5cGUgRkVFbmFibGVDb25zb2xlUHJpbnRQYWNrZXQgRmV0YWxHcm93dGhEYXRhIEZpYm9uYWNjaSBGaWJvbm9yaWFsIEZpZWxkQ29tcGxldGlvbkZ1bmN0aW9uIEZpZWxkSGludCBGaWVsZEhpbnRTdHlsZSBGaWVsZE1hc2tlZCBGaWVsZFNpemUgRmlsZSBGaWxlQmFzZU5hbWUgRmlsZUJ5dGVDb3VudCBGaWxlQ29udmVydCBGaWxlRGF0ZSBGaWxlRXhpc3RzUSBGaWxlRXh0ZW5zaW9uIEZpbGVGb3JtYXQgRmlsZUhhbmRsZXIgRmlsZUhhc2ggRmlsZUluZm9ybWF0aW9uIEZpbGVOYW1lIEZpbGVOYW1lRGVwdGggRmlsZU5hbWVEaWFsb2dTZXR0aW5ncyBGaWxlTmFtZURyb3AgRmlsZU5hbWVGb3JtcyBGaWxlTmFtZUpvaW4gRmlsZU5hbWVzIEZpbGVOYW1lU2V0dGVyIEZpbGVOYW1lU3BsaXQgRmlsZU5hbWVUYWtlIEZpbGVQcmludCBGaWxlU2l6ZSBGaWxlU3lzdGVtTWFwIEZpbGVTeXN0ZW1TY2FuIEZpbGVUZW1wbGF0ZSBGaWxlVGVtcGxhdGVBcHBseSBGaWxlVHlwZSBGaWxsZWRDdXJ2ZSBGaWxsZWRDdXJ2ZUJveCBGaWxsZWRDdXJ2ZUJveE9wdGlvbnMgRmlsbGluZyBGaWxsaW5nU3R5bGUgRmlsbGluZ1RyYW5zZm9ybSBGaWx0ZXJlZEVudGl0eUNsYXNzIEZpbHRlclJ1bGVzIEZpbmFuY2lhbEJvbmQgRmluYW5jaWFsRGF0YSBGaW5hbmNpYWxEZXJpdmF0aXZlIEZpbmFuY2lhbEluZGljYXRvciBGaW5kIEZpbmRBbm9tYWxpZXMgRmluZEFyZ01heCBGaW5kQXJnTWluIEZpbmRDaGFubmVscyBGaW5kQ2xpcXVlIEZpbmRDbHVzdGVycyBGaW5kQ29va2llcyBGaW5kQ3VydmVQYXRoIEZpbmRDeWNsZSBGaW5kRGV2aWNlcyBGaW5kRGlzdHJpYnV0aW9uIEZpbmREaXN0cmlidXRpb25QYXJhbWV0ZXJzIEZpbmREaXZpc2lvbnMgRmluZEVkZ2VDb3ZlciBGaW5kRWRnZUN1dCBGaW5kRWRnZUluZGVwZW5kZW50UGF0aHMgRmluZEVxdWF0aW9uYWxQcm9vZiBGaW5kRXVsZXJpYW5DeWNsZSBGaW5kRXh0ZXJuYWxFdmFsdWF0b3JzIEZpbmRGYWNlcyBGaW5kRmlsZSBGaW5kRml0IEZpbmRGb3JtdWxhIEZpbmRGdW5kYW1lbnRhbEN5Y2xlcyBGaW5kR2VuZXJhdGluZ0Z1bmN0aW9uIEZpbmRHZW9Mb2NhdGlvbiBGaW5kR2VvbWV0cmljQ29uamVjdHVyZXMgRmluZEdlb21ldHJpY1RyYW5zZm9ybSBGaW5kR3JhcGhDb21tdW5pdGllcyBGaW5kR3JhcGhJc29tb3JwaGlzbSBGaW5kR3JhcGhQYXJ0aXRpb24gRmluZEhhbWlsdG9uaWFuQ3ljbGUgRmluZEhhbWlsdG9uaWFuUGF0aCBGaW5kSGlkZGVuTWFya292U3RhdGVzIEZpbmRJbmRlcGVuZGVudEVkZ2VTZXQgRmluZEluZGVwZW5kZW50VmVydGV4U2V0IEZpbmRJbnN0YW5jZSBGaW5kSW50ZWdlck51bGxWZWN0b3IgRmluZEtDbGFuIEZpbmRLQ2xpcXVlIEZpbmRLQ2x1YiBGaW5kS1BsZXggRmluZExpYnJhcnkgRmluZExpbmVhclJlY3VycmVuY2UgRmluZExpc3QgRmluZE1hdGNoaW5nQ29sb3IgRmluZE1heGltdW0gRmluZE1heGltdW1GbG93IEZpbmRNYXhWYWx1ZSBGaW5kTWVzaERlZmVjdHMgRmluZE1pbmltdW0gRmluZE1pbmltdW1Db3N0RmxvdyBGaW5kTWluaW11bUN1dCBGaW5kTWluVmFsdWUgRmluZE1vbGVjdWxlU3Vic3RydWN0dXJlIEZpbmRQYXRoIEZpbmRQZWFrcyBGaW5kUGVybXV0YXRpb24gRmluZFBvc3RtYW5Ub3VyIEZpbmRQcm9jZXNzUGFyYW1ldGVycyBGaW5kUmVwZWF0IEZpbmRSb290IEZpbmRTZXF1ZW5jZUZ1bmN0aW9uIEZpbmRTZXR0aW5ncyBGaW5kU2hvcnRlc3RQYXRoIEZpbmRTaG9ydGVzdFRvdXIgRmluZFNwYW5uaW5nVHJlZSBGaW5kU3lzdGVtTW9kZWxFcXVpbGlicml1bSBGaW5kVGV4dHVhbEFuc3dlciBGaW5kVGhyZXNob2xkIEZpbmRUcmFuc2llbnRSZXBlYXQgRmluZFZlcnRleENvdmVyIEZpbmRWZXJ0ZXhDdXQgRmluZFZlcnRleEluZGVwZW5kZW50UGF0aHMgRmluZSBGaW5pc2hEeW5hbWljIEZpbml0ZUFiZWxpYW5Hcm91cENvdW50IEZpbml0ZUdyb3VwQ291bnQgRmluaXRlR3JvdXBEYXRhIEZpcnN0IEZpcnN0Q2FzZSBGaXJzdFBhc3NhZ2VUaW1lRGlzdHJpYnV0aW9uIEZpcnN0UG9zaXRpb24gRmlzY2hlckdyb3VwRmkyMiBGaXNjaGVyR3JvdXBGaTIzIEZpc2NoZXJHcm91cEZpMjRQcmltZSBGaXNoZXJIeXBlcmdlb21ldHJpY0Rpc3RyaWJ1dGlvbiBGaXNoZXJSYXRpb1Rlc3QgRmlzaGVyWkRpc3RyaWJ1dGlvbiBGaXQgRml0QWxsIEZpdFJlZ3VsYXJpemF0aW9uIEZpdHRlZE1vZGVsIEZpeGVkT3JkZXIgRml4ZWRQb2ludCBGaXhlZFBvaW50TGlzdCBGbGFzaFNlbGVjdGlvbiBGbGF0IEZsYXR0ZW4gRmxhdHRlbkF0IEZsYXR0ZW5MYXllciBGbGF0VG9wV2luZG93IEZsaXBWaWV3IEZsb29yIEZsb3dQb2x5bm9taWFsIEZsdXNoUHJpbnRPdXRwdXRQYWNrZXQgRm9sZCBGb2xkTGlzdCBGb2xkUGFpciBGb2xkUGFpckxpc3QgRm9sbG93UmVkaXJlY3RzIEZvbnQgRm9udENvbG9yIEZvbnRGYW1pbHkgRm9udEZvcm0gRm9udE5hbWUgRm9udE9wYWNpdHkgRm9udFBvc3RTY3JpcHROYW1lIEZvbnRQcm9wZXJ0aWVzIEZvbnRSZWVuY29kaW5nIEZvbnRTaXplIEZvbnRTbGFudCBGb250U3Vic3RpdHV0aW9ucyBGb250VHJhY2tpbmcgRm9udFZhcmlhdGlvbnMgRm9udFdlaWdodCBGb3IgRm9yQWxsIEZvcm1hdCBGb3JtYXRSdWxlcyBGb3JtYXRUeXBlIEZvcm1hdFR5cGVBdXRvQ29udmVydCBGb3JtYXRWYWx1ZXMgRm9ybUJveCBGb3JtQm94T3B0aW9ucyBGb3JtQ29udHJvbCBGb3JtRnVuY3Rpb24gRm9ybUxheW91dEZ1bmN0aW9uIEZvcm1PYmplY3QgRm9ybVBhZ2UgRm9ybVRoZW1lIEZvcm11bGFEYXRhIEZvcm11bGFMb29rdXAgRm9ydHJhbkZvcm0gRm9yd2FyZCBGb3J3YXJkQmFja3dhcmQgRm91cmllciBGb3VyaWVyQ29lZmZpY2llbnQgRm91cmllckNvc0NvZWZmaWNpZW50IEZvdXJpZXJDb3NTZXJpZXMgRm91cmllckNvc1RyYW5zZm9ybSBGb3VyaWVyRENUIEZvdXJpZXJEQ1RGaWx0ZXIgRm91cmllckRDVE1hdHJpeCBGb3VyaWVyRFNUIEZvdXJpZXJEU1RNYXRyaXggRm91cmllck1hdHJpeCBGb3VyaWVyUGFyYW1ldGVycyBGb3VyaWVyU2VxdWVuY2VUcmFuc2Zvcm0gRm91cmllclNlcmllcyBGb3VyaWVyU2luQ29lZmZpY2llbnQgRm91cmllclNpblNlcmllcyBGb3VyaWVyU2luVHJhbnNmb3JtIEZvdXJpZXJUcmFuc2Zvcm0gRm91cmllclRyaWdTZXJpZXMgRnJhY3Rpb25hbEJyb3duaWFuTW90aW9uUHJvY2VzcyBGcmFjdGlvbmFsR2F1c3NpYW5Ob2lzZVByb2Nlc3MgRnJhY3Rpb25hbFBhcnQgRnJhY3Rpb25Cb3ggRnJhY3Rpb25Cb3hPcHRpb25zIEZyYWN0aW9uTGluZSBGcmFtZSBGcmFtZUJveCBGcmFtZUJveE9wdGlvbnMgRnJhbWVkIEZyYW1lSW5zZXQgRnJhbWVMYWJlbCBGcmFtZWxlc3MgRnJhbWVNYXJnaW5zIEZyYW1lUmF0ZSBGcmFtZVN0eWxlIEZyYW1lVGlja3MgRnJhbWVUaWNrc1N0eWxlIEZSYXRpb0Rpc3RyaWJ1dGlvbiBGcmVjaGV0RGlzdHJpYnV0aW9uIEZyZWVRIEZyZW5ldFNlcnJldFN5c3RlbSBGcmVxdWVuY3lTYW1wbGluZ0ZpbHRlcktlcm5lbCBGcmVzbmVsQyBGcmVzbmVsRiBGcmVzbmVsRyBGcmVzbmVsUyBGcmlkYXkgRnJvYmVuaXVzTnVtYmVyIEZyb2Jlbml1c1NvbHZlIEZyb21BYnNvbHV0ZVRpbWUgRnJvbUNoYXJhY3RlckNvZGUgRnJvbUNvZWZmaWNpZW50UnVsZXMgRnJvbUNvbnRpbnVlZEZyYWN0aW9uIEZyb21EYXRlIEZyb21EaWdpdHMgRnJvbURNUyBGcm9tRW50aXR5IEZyb21KdWxpYW5EYXRlIEZyb21MZXR0ZXJOdW1iZXIgRnJvbVBvbGFyQ29vcmRpbmF0ZXMgRnJvbVJvbWFuTnVtZXJhbCBGcm9tU3BoZXJpY2FsQ29vcmRpbmF0ZXMgRnJvbVVuaXhUaW1lIEZyb250IEZyb250RW5kRHluYW1pY0V4cHJlc3Npb24gRnJvbnRFbmRFdmVudEFjdGlvbnMgRnJvbnRFbmRFeGVjdXRlIEZyb250RW5kT2JqZWN0IEZyb250RW5kUmVzb3VyY2UgRnJvbnRFbmRSZXNvdXJjZVN0cmluZyBGcm9udEVuZFN0YWNrU2l6ZSBGcm9udEVuZFRva2VuIEZyb250RW5kVG9rZW5FeGVjdXRlIEZyb250RW5kVmFsdWVDYWNoZSBGcm9udEVuZFZlcnNpb24gRnJvbnRGYWNlQ29sb3IgRnJvbnRGYWNlT3BhY2l0eSBGdWxsIEZ1bGxBeGVzIEZ1bGxEZWZpbml0aW9uIEZ1bGxGb3JtIEZ1bGxHcmFwaGljcyBGdWxsSW5mb3JtYXRpb25PdXRwdXRSZWd1bGF0b3IgRnVsbE9wdGlvbnMgRnVsbFJlZ2lvbiBGdWxsU2ltcGxpZnkgRnVuY3Rpb24gRnVuY3Rpb25Db21waWxlIEZ1bmN0aW9uQ29tcGlsZUV4cG9ydCBGdW5jdGlvbkNvbXBpbGVFeHBvcnRCeXRlQXJyYXkgRnVuY3Rpb25Db21waWxlRXhwb3J0TGlicmFyeSBGdW5jdGlvbkNvbXBpbGVFeHBvcnRTdHJpbmcgRnVuY3Rpb25Eb21haW4gRnVuY3Rpb25FeHBhbmQgRnVuY3Rpb25JbnRlcnBvbGF0aW9uIEZ1bmN0aW9uUGVyaW9kIEZ1bmN0aW9uUmFuZ2UgRnVuY3Rpb25TcGFjZSBGdXNzZWxsVmVzZWx5SW1wb3J0YW5jZScgK1xuICAgICAgJ0dhYm9yRmlsdGVyIEdhYm9yTWF0cml4IEdhYm9yV2F2ZWxldCBHYWluTWFyZ2lucyBHYWluUGhhc2VNYXJnaW5zIEdhbGF4eURhdGEgR2FsbGVyeVZpZXcgR2FtbWEgR2FtbWFEaXN0cmlidXRpb24gR2FtbWFSZWd1bGFyaXplZCBHYXBQZW5hbHR5IEdBUkNIUHJvY2VzcyBHYXRlZFJlY3VycmVudExheWVyIEdhdGhlciBHYXRoZXJCeSBHYXVnZUZhY2VFbGVtZW50RnVuY3Rpb24gR2F1Z2VGYWNlU3R5bGUgR2F1Z2VGcmFtZUVsZW1lbnRGdW5jdGlvbiBHYXVnZUZyYW1lU2l6ZSBHYXVnZUZyYW1lU3R5bGUgR2F1Z2VMYWJlbHMgR2F1Z2VNYXJrZXJzIEdhdWdlU3R5bGUgR2F1c3NpYW5GaWx0ZXIgR2F1c3NpYW5JbnRlZ2VycyBHYXVzc2lhbk1hdHJpeCBHYXVzc2lhbk9ydGhvZ29uYWxNYXRyaXhEaXN0cmlidXRpb24gR2F1c3NpYW5TeW1wbGVjdGljTWF0cml4RGlzdHJpYnV0aW9uIEdhdXNzaWFuVW5pdGFyeU1hdHJpeERpc3RyaWJ1dGlvbiBHYXVzc2lhbldpbmRvdyBHQ0QgR2VnZW5iYXVlckMgR2VuZXJhbCBHZW5lcmFsaXplZExpbmVhck1vZGVsRml0IEdlbmVyYXRlQXN5bW1ldHJpY0tleVBhaXIgR2VuZXJhdGVDb25kaXRpb25zIEdlbmVyYXRlZENlbGwgR2VuZXJhdGVkRG9jdW1lbnRCaW5kaW5nIEdlbmVyYXRlRGVyaXZlZEtleSBHZW5lcmF0ZURpZ2l0YWxTaWduYXR1cmUgR2VuZXJhdGVEb2N1bWVudCBHZW5lcmF0ZWRQYXJhbWV0ZXJzIEdlbmVyYXRlZFF1YW50aXR5TWFnbml0dWRlcyBHZW5lcmF0ZUhUVFBSZXNwb25zZSBHZW5lcmF0ZVNlY3VyZWRBdXRoZW50aWNhdGlvbktleSBHZW5lcmF0ZVN5bW1ldHJpY0tleSBHZW5lcmF0aW5nRnVuY3Rpb24gR2VuZXJhdG9yRGVzY3JpcHRpb24gR2VuZXJhdG9ySGlzdG9yeUxlbmd0aCBHZW5lcmF0b3JPdXRwdXRUeXBlIEdlbmVyaWMgR2VuZXJpY0N5bGluZHJpY2FsRGVjb21wb3NpdGlvbiBHZW5vbWVEYXRhIEdlbm9tZUxvb2t1cCBHZW9BbnRpcG9kZSBHZW9BcmVhIEdlb0FycmF5U2l6ZSBHZW9CYWNrZ3JvdW5kIEdlb0JvdW5kaW5nQm94IEdlb0JvdW5kcyBHZW9Cb3VuZHNSZWdpb24gR2VvQnViYmxlQ2hhcnQgR2VvQ2VudGVyIEdlb0NpcmNsZSBHZW9kZXNpY0Nsb3NpbmcgR2VvZGVzaWNEaWxhdGlvbiBHZW9kZXNpY0Vyb3Npb24gR2VvZGVzaWNPcGVuaW5nIEdlb0Rlc3RpbmF0aW9uIEdlb2Rlc3lEYXRhIEdlb0RpcmVjdGlvbiBHZW9EaXNrIEdlb0Rpc3BsYWNlbWVudCBHZW9EaXN0YW5jZSBHZW9EaXN0YW5jZUxpc3QgR2VvRWxldmF0aW9uRGF0YSBHZW9FbnRpdGllcyBHZW9HcmFwaGljcyBHZW9ncmF2aXR5TW9kZWxEYXRhIEdlb0dyaWREaXJlY3Rpb25EaWZmZXJlbmNlIEdlb0dyaWRMaW5lcyBHZW9HcmlkTGluZXNTdHlsZSBHZW9HcmlkUG9zaXRpb24gR2VvR3JpZFJhbmdlIEdlb0dyaWRSYW5nZVBhZGRpbmcgR2VvR3JpZFVuaXRBcmVhIEdlb0dyaWRVbml0RGlzdGFuY2UgR2VvR3JpZFZlY3RvciBHZW9Hcm91cCBHZW9IZW1pc3BoZXJlIEdlb0hlbWlzcGhlcmVCb3VuZGFyeSBHZW9IaXN0b2dyYW0gR2VvSWRlbnRpZnkgR2VvSW1hZ2UgR2VvTGFiZWxzIEdlb0xlbmd0aCBHZW9MaXN0UGxvdCBHZW9Mb2NhdGlvbiBHZW9sb2dpY2FsUGVyaW9kRGF0YSBHZW9tYWduZXRpY01vZGVsRGF0YSBHZW9NYXJrZXIgR2VvbWV0cmljQXNzZXJ0aW9uIEdlb21ldHJpY0Jyb3duaWFuTW90aW9uUHJvY2VzcyBHZW9tZXRyaWNEaXN0cmlidXRpb24gR2VvbWV0cmljTWVhbiBHZW9tZXRyaWNNZWFuRmlsdGVyIEdlb21ldHJpY1NjZW5lIEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uIEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uM0RCb3ggR2VvbWV0cmljVHJhbnNmb3JtYXRpb24zREJveE9wdGlvbnMgR2VvbWV0cmljVHJhbnNmb3JtYXRpb25Cb3ggR2VvbWV0cmljVHJhbnNmb3JtYXRpb25Cb3hPcHRpb25zIEdlb01vZGVsIEdlb05lYXJlc3QgR2VvUGF0aCBHZW9Qb3NpdGlvbiBHZW9Qb3NpdGlvbkVOVSBHZW9Qb3NpdGlvblhZWiBHZW9Qcm9qZWN0aW9uIEdlb1Byb2plY3Rpb25EYXRhIEdlb1JhbmdlIEdlb1JhbmdlUGFkZGluZyBHZW9SZWdpb25WYWx1ZVBsb3QgR2VvUmVzb2x1dGlvbiBHZW9TY2FsZUJhciBHZW9TZXJ2ZXIgR2VvU21vb3RoSGlzdG9ncmFtIEdlb1N0cmVhbVBsb3QgR2VvU3R5bGluZyBHZW9TdHlsaW5nSW1hZ2VGdW5jdGlvbiBHZW9WYXJpYW50IEdlb1ZlY3RvciBHZW9WZWN0b3JFTlUgR2VvVmVjdG9yUGxvdCBHZW9WZWN0b3JYWVogR2VvVmlzaWJsZVJlZ2lvbiBHZW9WaXNpYmxlUmVnaW9uQm91bmRhcnkgR2VvV2l0aGluUSBHZW9ab29tTGV2ZWwgR2VzdHVyZUhhbmRsZXIgR2VzdHVyZUhhbmRsZXJUYWcgR2V0IEdldEJvdW5kaW5nQm94U2l6ZVBhY2tldCBHZXRDb250ZXh0IEdldEVudmlyb25tZW50IEdldEZpbGVOYW1lIEdldEZyb250RW5kT3B0aW9uc0RhdGFQYWNrZXQgR2V0TGluZWJyZWFrSW5mb3JtYXRpb25QYWNrZXQgR2V0TWVudXNQYWNrZXQgR2V0UGFnZUJyZWFrSW5mb3JtYXRpb25QYWNrZXQgR2xhaXNoZXIgR2xvYmFsQ2x1c3RlcmluZ0NvZWZmaWNpZW50IEdsb2JhbFByZWZlcmVuY2VzIEdsb2JhbFNlc3Npb24gR2xvdyBHb2xkZW5BbmdsZSBHb2xkZW5SYXRpbyBHb21wZXJ0ek1ha2VoYW1EaXN0cmlidXRpb24gR29vZG1hbktydXNrYWxHYW1tYSBHb29kbWFuS3J1c2thbEdhbW1hVGVzdCBHb3RvIEdyYWQgR3JhZGllbnQgR3JhZGllbnRGaWx0ZXIgR3JhZGllbnRPcmllbnRhdGlvbkZpbHRlciBHcmFtbWFyQXBwbHkgR3JhbW1hclJ1bGVzIEdyYW1tYXJUb2tlbiBHcmFwaCBHcmFwaDNEIEdyYXBoQXNzb3J0YXRpdml0eSBHcmFwaEF1dG9tb3JwaGlzbUdyb3VwIEdyYXBoQ2VudGVyIEdyYXBoQ29tcGxlbWVudCBHcmFwaERhdGEgR3JhcGhEZW5zaXR5IEdyYXBoRGlhbWV0ZXIgR3JhcGhEaWZmZXJlbmNlIEdyYXBoRGlzam9pbnRVbmlvbiBHcmFwaERpc3RhbmNlIEdyYXBoRGlzdGFuY2VNYXRyaXggR3JhcGhFbGVtZW50RGF0YSBHcmFwaEVtYmVkZGluZyBHcmFwaEhpZ2hsaWdodCBHcmFwaEhpZ2hsaWdodFN0eWxlIEdyYXBoSHViIEdyYXBoaWNzIEdyYXBoaWNzM0QgR3JhcGhpY3MzREJveCBHcmFwaGljczNEQm94T3B0aW9ucyBHcmFwaGljc0FycmF5IEdyYXBoaWNzQmFzZWxpbmUgR3JhcGhpY3NCb3ggR3JhcGhpY3NCb3hPcHRpb25zIEdyYXBoaWNzQ29sb3IgR3JhcGhpY3NDb2x1bW4gR3JhcGhpY3NDb21wbGV4IEdyYXBoaWNzQ29tcGxleDNEQm94IEdyYXBoaWNzQ29tcGxleDNEQm94T3B0aW9ucyBHcmFwaGljc0NvbXBsZXhCb3ggR3JhcGhpY3NDb21wbGV4Qm94T3B0aW9ucyBHcmFwaGljc0NvbnRlbnRzIEdyYXBoaWNzRGF0YSBHcmFwaGljc0dyaWQgR3JhcGhpY3NHcmlkQm94IEdyYXBoaWNzR3JvdXAgR3JhcGhpY3NHcm91cDNEQm94IEdyYXBoaWNzR3JvdXAzREJveE9wdGlvbnMgR3JhcGhpY3NHcm91cEJveCBHcmFwaGljc0dyb3VwQm94T3B0aW9ucyBHcmFwaGljc0dyb3VwaW5nIEdyYXBoaWNzSGlnaGxpZ2h0Q29sb3IgR3JhcGhpY3NSb3cgR3JhcGhpY3NTcGFjaW5nIEdyYXBoaWNzU3R5bGUgR3JhcGhJbnRlcnNlY3Rpb24gR3JhcGhMYXlvdXQgR3JhcGhMaW5rRWZmaWNpZW5jeSBHcmFwaFBlcmlwaGVyeSBHcmFwaFBsb3QgR3JhcGhQbG90M0QgR3JhcGhQb3dlciBHcmFwaFByb3BlcnR5RGlzdHJpYnV0aW9uIEdyYXBoUSBHcmFwaFJhZGl1cyBHcmFwaFJlY2lwcm9jaXR5IEdyYXBoUm9vdCBHcmFwaFN0eWxlIEdyYXBoVW5pb24gR3JheSBHcmF5TGV2ZWwgR3JlYXRlciBHcmVhdGVyRXF1YWwgR3JlYXRlckVxdWFsTGVzcyBHcmVhdGVyRXF1YWxUaGFuIEdyZWF0ZXJGdWxsRXF1YWwgR3JlYXRlckdyZWF0ZXIgR3JlYXRlckxlc3MgR3JlYXRlclNsYW50RXF1YWwgR3JlYXRlclRoYW4gR3JlYXRlclRpbGRlIEdyZWVuIEdyZWVuRnVuY3Rpb24gR3JpZCBHcmlkQmFzZWxpbmUgR3JpZEJveCBHcmlkQm94QWxpZ25tZW50IEdyaWRCb3hCYWNrZ3JvdW5kIEdyaWRCb3hEaXZpZGVycyBHcmlkQm94RnJhbWUgR3JpZEJveEl0ZW1TaXplIEdyaWRCb3hJdGVtU3R5bGUgR3JpZEJveE9wdGlvbnMgR3JpZEJveFNwYWNpbmdzIEdyaWRDcmVhdGlvblNldHRpbmdzIEdyaWREZWZhdWx0RWxlbWVudCBHcmlkRWxlbWVudFN0eWxlT3B0aW9ucyBHcmlkRnJhbWUgR3JpZEZyYW1lTWFyZ2lucyBHcmlkR3JhcGggR3JpZExpbmVzIEdyaWRMaW5lc1N0eWxlIEdyb2VibmVyQmFzaXMgR3JvdXBBY3Rpb25CYXNlIEdyb3VwQnkgR3JvdXBDZW50cmFsaXplciBHcm91cEVsZW1lbnRGcm9tV29yZCBHcm91cEVsZW1lbnRQb3NpdGlvbiBHcm91cEVsZW1lbnRRIEdyb3VwRWxlbWVudHMgR3JvdXBFbGVtZW50VG9Xb3JkIEdyb3VwR2VuZXJhdG9ycyBHcm91cGluZ3MgR3JvdXBNdWx0aXBsaWNhdGlvblRhYmxlIEdyb3VwT3JiaXRzIEdyb3VwT3JkZXIgR3JvdXBQYWdlQnJlYWtXaXRoaW4gR3JvdXBTZXR3aXNlU3RhYmlsaXplciBHcm91cFN0YWJpbGl6ZXIgR3JvdXBTdGFiaWxpemVyQ2hhaW4gR3JvdXBUb2dldGhlckdyb3VwaW5nIEdyb3VwVG9nZXRoZXJOZXN0ZWRHcm91cGluZyBHcm93Q3V0Q29tcG9uZW50cyBHdWRlcm1hbm5pYW4gR3VpZGVkRmlsdGVyIEd1bWJlbERpc3RyaWJ1dGlvbicgK1xuICAgICAgJ0hhYXJXYXZlbGV0IEhhZGFtYXJkTWF0cml4IEhhbGZMaW5lIEhhbGZOb3JtYWxEaXN0cmlidXRpb24gSGFsZlBsYW5lIEhhbGZTcGFjZSBIYW1pbHRvbmlhbkdyYXBoUSBIYW1taW5nRGlzdGFuY2UgSGFtbWluZ1dpbmRvdyBIYW5kbGVyRnVuY3Rpb25zIEhhbmRsZXJGdW5jdGlvbnNLZXlzIEhhbmtlbEgxIEhhbmtlbEgyIEhhbmtlbE1hdHJpeCBIYW5rZWxUcmFuc2Zvcm0gSGFublBvaXNzb25XaW5kb3cgSGFubldpbmRvdyBIYXJhZGFOb3J0b25Hcm91cEhOIEhhcmFyeUdyYXBoIEhhcm1vbmljTWVhbiBIYXJtb25pY01lYW5GaWx0ZXIgSGFybW9uaWNOdW1iZXIgSGFzaCBIYXZlcnNpbmUgSGF6YXJkRnVuY3Rpb24gSGVhZCBIZWFkQ29tcG9zZSBIZWFkZXJMaW5lcyBIZWFkcyBIZWF2aXNpZGVMYW1iZGEgSGVhdmlzaWRlUGkgSGVhdmlzaWRlVGhldGEgSGVsZEdyb3VwSGUgSGVsZFBhcnQgSGVscEJyb3dzZXJMb29rdXAgSGVscEJyb3dzZXJOb3RlYm9vayBIZWxwQnJvd3NlclNldHRpbmdzIEhlcmUgSGVybWl0ZURlY29tcG9zaXRpb24gSGVybWl0ZUggSGVybWl0aWFuTWF0cml4USBIZXNzZW5iZXJnRGVjb21wb3NpdGlvbiBIZXNzaWFuIEhleGFkZWNpbWFsQ2hhcmFjdGVyIEhleGFoZWRyb24gSGV4YWhlZHJvbkJveCBIZXhhaGVkcm9uQm94T3B0aW9ucyBIaWRkZW5NYXJrb3ZQcm9jZXNzIEhpZGRlblN1cmZhY2UgSGlnaGxpZ2h0ZWQgSGlnaGxpZ2h0R3JhcGggSGlnaGxpZ2h0SW1hZ2UgSGlnaGxpZ2h0TWVzaCBIaWdocGFzc0ZpbHRlciBIaWdtYW5TaW1zR3JvdXBIUyBIaWxiZXJ0Q3VydmUgSGlsYmVydEZpbHRlciBIaWxiZXJ0TWF0cml4IEhpc3RvZ3JhbSBIaXN0b2dyYW0zRCBIaXN0b2dyYW1EaXN0cmlidXRpb24gSGlzdG9ncmFtTGlzdCBIaXN0b2dyYW1UcmFuc2Zvcm0gSGlzdG9ncmFtVHJhbnNmb3JtSW50ZXJwb2xhdGlvbiBIaXN0b3JpY2FsUGVyaW9kRGF0YSBIaXRNaXNzVHJhbnNmb3JtIEhJVFNDZW50cmFsaXR5IEhqb3J0aERpc3RyaWJ1dGlvbiBIb2RnZUR1YWwgSG9lZmZkaW5nRCBIb2VmZmRpbmdEVGVzdCBIb2xkIEhvbGRBbGwgSG9sZEFsbENvbXBsZXRlIEhvbGRDb21wbGV0ZSBIb2xkRmlyc3QgSG9sZEZvcm0gSG9sZFBhdHRlcm4gSG9sZFJlc3QgSG9saWRheUNhbGVuZGFyIEhvbWVEaXJlY3RvcnkgSG9tZVBhZ2UgSG9yaXpvbnRhbCBIb3Jpem9udGFsRm9ybSBIb3Jpem9udGFsR2F1Z2UgSG9yaXpvbnRhbFNjcm9sbFBvc2l0aW9uIEhvcm5lckZvcm0gSG9zdExvb2t1cCBIb3RlbGxpbmdUU3F1YXJlRGlzdHJpYnV0aW9uIEhveXREaXN0cmlidXRpb24gSFRNTFNhdmUgSFRUUEVycm9yUmVzcG9uc2UgSFRUUFJlZGlyZWN0IEhUVFBSZXF1ZXN0IEhUVFBSZXF1ZXN0RGF0YSBIVFRQUmVzcG9uc2UgSHVlIEh1bWFuR3Jvd3RoRGF0YSBIdW1wRG93bkh1bXAgSHVtcEVxdWFsIEh1cndpdHpMZXJjaFBoaSBIdXJ3aXR6WmV0YSBIeXBlcmJvbGljRGlzdHJpYnV0aW9uIEh5cGVyY3ViZUdyYXBoIEh5cGVyZXhwb25lbnRpYWxEaXN0cmlidXRpb24gSHlwZXJmYWN0b3JpYWwgSHlwZXJnZW9tZXRyaWMwRjEgSHlwZXJnZW9tZXRyaWMwRjFSZWd1bGFyaXplZCBIeXBlcmdlb21ldHJpYzFGMSBIeXBlcmdlb21ldHJpYzFGMVJlZ3VsYXJpemVkIEh5cGVyZ2VvbWV0cmljMkYxIEh5cGVyZ2VvbWV0cmljMkYxUmVndWxhcml6ZWQgSHlwZXJnZW9tZXRyaWNEaXN0cmlidXRpb24gSHlwZXJnZW9tZXRyaWNQRlEgSHlwZXJnZW9tZXRyaWNQRlFSZWd1bGFyaXplZCBIeXBlcmdlb21ldHJpY1UgSHlwZXJsaW5rIEh5cGVybGlua0NyZWF0aW9uU2V0dGluZ3MgSHlwZXJwbGFuZSBIeXBoZW5hdGlvbiBIeXBoZW5hdGlvbk9wdGlvbnMgSHlwb2V4cG9uZW50aWFsRGlzdHJpYnV0aW9uIEh5cG90aGVzaXNUZXN0RGF0YScgK1xuICAgICAgJ0kgSWNvbkRhdGEgSWNvbml6ZSBJY29uaXplZE9iamVjdCBJY29uUnVsZXMgSWNvc2FoZWRyb24gSWRlbnRpdHkgSWRlbnRpdHlNYXRyaXggSWYgSWdub3JlQ2FzZSBJZ25vcmVEaWFjcml0aWNzIElnbm9yZVB1bmN0dWF0aW9uIElnbm9yZVNwZWxsQ2hlY2sgSWdub3JpbmdJbmFjdGl2ZSBJbSBJbWFnZSBJbWFnZTNEIEltYWdlM0RQcm9qZWN0aW9uIEltYWdlM0RTbGljZXMgSW1hZ2VBY2N1bXVsYXRlIEltYWdlQWRkIEltYWdlQWRqdXN0IEltYWdlQWxpZ24gSW1hZ2VBcHBseSBJbWFnZUFwcGx5SW5kZXhlZCBJbWFnZUFzcGVjdFJhdGlvIEltYWdlQXNzZW1ibGUgSW1hZ2VBdWdtZW50YXRpb25MYXllciBJbWFnZUJvdW5kaW5nQm94ZXMgSW1hZ2VDYWNoZSBJbWFnZUNhY2hlVmFsaWQgSW1hZ2VDYXB0dXJlIEltYWdlQ2FwdHVyZUZ1bmN0aW9uIEltYWdlQ2FzZXMgSW1hZ2VDaGFubmVscyBJbWFnZUNsaXAgSW1hZ2VDb2xsYWdlIEltYWdlQ29sb3JTcGFjZSBJbWFnZUNvbXBvc2UgSW1hZ2VDb250YWluc1EgSW1hZ2VDb250ZW50cyBJbWFnZUNvbnZvbHZlIEltYWdlQ29vY2N1cnJlbmNlIEltYWdlQ29ybmVycyBJbWFnZUNvcnJlbGF0ZSBJbWFnZUNvcnJlc3BvbmRpbmdQb2ludHMgSW1hZ2VDcm9wIEltYWdlRGF0YSBJbWFnZURlY29udm9sdmUgSW1hZ2VEZW1vc2FpYyBJbWFnZURpZmZlcmVuY2UgSW1hZ2VEaW1lbnNpb25zIEltYWdlRGlzcGxhY2VtZW50cyBJbWFnZURpc3RhbmNlIEltYWdlRWZmZWN0IEltYWdlRXhwb3N1cmVDb21iaW5lIEltYWdlRmVhdHVyZVRyYWNrIEltYWdlRmlsZUFwcGx5IEltYWdlRmlsZUZpbHRlciBJbWFnZUZpbGVTY2FuIEltYWdlRmlsdGVyIEltYWdlRm9jdXNDb21iaW5lIEltYWdlRm9yZXN0aW5nQ29tcG9uZW50cyBJbWFnZUZvcm1hdHRpbmdXaWR0aCBJbWFnZUZvcndhcmRUcmFuc2Zvcm1hdGlvbiBJbWFnZUdyYXBoaWNzIEltYWdlSGlzdG9ncmFtIEltYWdlSWRlbnRpZnkgSW1hZ2VJbnN0YW5jZVEgSW1hZ2VLZXlwb2ludHMgSW1hZ2VMZXZlbHMgSW1hZ2VMaW5lcyBJbWFnZU1hcmdpbnMgSW1hZ2VNYXJrZXIgSW1hZ2VNYXJrZXJzIEltYWdlTWVhc3VyZW1lbnRzIEltYWdlTWVzaCBJbWFnZU11bHRpcGx5IEltYWdlT2Zmc2V0IEltYWdlUGFkIEltYWdlUGFkZGluZyBJbWFnZVBhcnRpdGlvbiBJbWFnZVBlcmlvZG9ncmFtIEltYWdlUGVyc3BlY3RpdmVUcmFuc2Zvcm1hdGlvbiBJbWFnZVBvc2l0aW9uIEltYWdlUHJldmlld0Z1bmN0aW9uIEltYWdlUHlyYW1pZCBJbWFnZVB5cmFtaWRBcHBseSBJbWFnZVEgSW1hZ2VSYW5nZUNhY2hlIEltYWdlUmVjb2xvciBJbWFnZVJlZmxlY3QgSW1hZ2VSZWdpb24gSW1hZ2VSZXNpemUgSW1hZ2VSZXNvbHV0aW9uIEltYWdlUmVzdHlsZSBJbWFnZVJvdGF0ZSBJbWFnZVJvdGF0ZWQgSW1hZ2VTYWxpZW5jeUZpbHRlciBJbWFnZVNjYWxlZCBJbWFnZVNjYW4gSW1hZ2VTaXplIEltYWdlU2l6ZUFjdGlvbiBJbWFnZVNpemVDYWNoZSBJbWFnZVNpemVNdWx0aXBsaWVycyBJbWFnZVNpemVSYXcgSW1hZ2VTdWJ0cmFjdCBJbWFnZVRha2UgSW1hZ2VUcmFuc2Zvcm1hdGlvbiBJbWFnZVRyaW0gSW1hZ2VUeXBlIEltYWdlVmFsdWUgSW1hZ2VWYWx1ZVBvc2l0aW9ucyBJbWFnaW5nRGV2aWNlIEltcGxpY2l0UmVnaW9uIEltcGxpZXMgSW1wb3J0IEltcG9ydEF1dG9SZXBsYWNlbWVudHMgSW1wb3J0Qnl0ZUFycmF5IEltcG9ydE9wdGlvbnMgSW1wb3J0U3RyaW5nIEltcHJvdmVtZW50SW1wb3J0YW5jZSBJbiBJbmFjdGl2YXRlIEluYWN0aXZlIEluY2lkZW5jZUdyYXBoIEluY2lkZW5jZUxpc3QgSW5jaWRlbmNlTWF0cml4IEluY2x1ZGVBcm9tYXRpY0JvbmRzIEluY2x1ZGVDb25zdGFudEJhc2lzIEluY2x1ZGVEZWZpbml0aW9ucyBJbmNsdWRlRGlyZWN0b3JpZXMgSW5jbHVkZUZpbGVFeHRlbnNpb24gSW5jbHVkZUdlbmVyYXRvclRhc2tzIEluY2x1ZGVIeWRyb2dlbnMgSW5jbHVkZUluZmxlY3Rpb25zIEluY2x1ZGVNZXRhSW5mb3JtYXRpb24gSW5jbHVkZVBvZHMgSW5jbHVkZVF1YW50aXRpZXMgSW5jbHVkZVJlbGF0ZWRUYWJsZXMgSW5jbHVkZVNpbmd1bGFyVGVybSBJbmNsdWRlV2luZG93VGltZXMgSW5jcmVtZW50IEluZGVmaW5pdGVNYXRyaXhRIEluZGVudCBJbmRlbnRpbmdOZXdsaW5lU3BhY2luZ3MgSW5kZW50TWF4RnJhY3Rpb24gSW5kZXBlbmRlbmNlVGVzdCBJbmRlcGVuZGVudEVkZ2VTZXRRIEluZGVwZW5kZW50UGh5c2ljYWxRdWFudGl0eSBJbmRlcGVuZGVudFVuaXQgSW5kZXBlbmRlbnRVbml0RGltZW5zaW9uIEluZGVwZW5kZW50VmVydGV4U2V0USBJbmRldGVybWluYXRlIEluZGV0ZXJtaW5hdGVUaHJlc2hvbGQgSW5kZXhDcmVhdGlvbk9wdGlvbnMgSW5kZXhlZCBJbmRleEdyYXBoIEluZGV4VGFnIEluZXF1YWxpdHkgSW5leGFjdE51bWJlclEgSW5leGFjdE51bWJlcnMgSW5maW5pdGVMaW5lIEluZmluaXRlUGxhbmUgSW5maW5pdHkgSW5maXggSW5mbGF0aW9uQWRqdXN0IEluZmxhdGlvbk1ldGhvZCBJbmZvcm1hdGlvbiBJbmZvcm1hdGlvbkRhdGEgSW5mb3JtYXRpb25EYXRhR3JpZCBJbmhlcml0ZWQgSW5oZXJpdFNjb3BlIEluaG9tb2dlbmVvdXNQb2lzc29uUHJvY2VzcyBJbml0aWFsRXZhbHVhdGlvbkhpc3RvcnkgSW5pdGlhbGl6YXRpb24gSW5pdGlhbGl6YXRpb25DZWxsIEluaXRpYWxpemF0aW9uQ2VsbEV2YWx1YXRpb24gSW5pdGlhbGl6YXRpb25DZWxsV2FybmluZyBJbml0aWFsaXphdGlvbk9iamVjdHMgSW5pdGlhbGl6YXRpb25WYWx1ZSBJbml0aWFsaXplIEluaXRpYWxTZWVkaW5nIElubGluZUNvdW50ZXJBc3NpZ25tZW50cyBJbmxpbmVDb3VudGVySW5jcmVtZW50cyBJbmxpbmVSdWxlcyBJbm5lciBJbm5lclBvbHlnb24gSW5uZXJQb2x5aGVkcm9uIElucGFpbnQgSW5wdXQgSW5wdXRBbGlhc2VzIElucHV0QXNzdW1wdGlvbnMgSW5wdXRBdXRvUmVwbGFjZW1lbnRzIElucHV0RmllbGQgSW5wdXRGaWVsZEJveCBJbnB1dEZpZWxkQm94T3B0aW9ucyBJbnB1dEZvcm0gSW5wdXRHcm91cGluZyBJbnB1dE5hbWVQYWNrZXQgSW5wdXROb3RlYm9vayBJbnB1dFBhY2tldCBJbnB1dFNldHRpbmdzIElucHV0U3RyZWFtIElucHV0U3RyaW5nIElucHV0U3RyaW5nUGFja2V0IElucHV0VG9Cb3hGb3JtUGFja2V0IEluc2VydCBJbnNlcnRpb25GdW5jdGlvbiBJbnNlcnRpb25Qb2ludE9iamVjdCBJbnNlcnRMaW5lYnJlYWtzIEluc2VydFJlc3VsdHMgSW5zZXQgSW5zZXQzREJveCBJbnNldDNEQm94T3B0aW9ucyBJbnNldEJveCBJbnNldEJveE9wdGlvbnMgSW5zcGhlcmUgSW5zdGFsbCBJbnN0YWxsU2VydmljZSBJbnN0YW5jZU5vcm1hbGl6YXRpb25MYXllciBJblN0cmluZyBJbnRlZ2VyIEludGVnZXJEaWdpdHMgSW50ZWdlckV4cG9uZW50IEludGVnZXJMZW5ndGggSW50ZWdlck5hbWUgSW50ZWdlclBhcnQgSW50ZWdlclBhcnRpdGlvbnMgSW50ZWdlclEgSW50ZWdlclJldmVyc2UgSW50ZWdlcnMgSW50ZWdlclN0cmluZyBJbnRlZ3JhbCBJbnRlZ3JhdGUgSW50ZXJhY3RpdmUgSW50ZXJhY3RpdmVUcmFkaW5nQ2hhcnQgSW50ZXJsYWNlZCBJbnRlcmxlYXZpbmcgSW50ZXJuYWxseUJhbGFuY2VkRGVjb21wb3NpdGlvbiBJbnRlcnBvbGF0aW5nRnVuY3Rpb24gSW50ZXJwb2xhdGluZ1BvbHlub21pYWwgSW50ZXJwb2xhdGlvbiBJbnRlcnBvbGF0aW9uT3JkZXIgSW50ZXJwb2xhdGlvblBvaW50cyBJbnRlcnBvbGF0aW9uUHJlY2lzaW9uIEludGVycHJldGF0aW9uIEludGVycHJldGF0aW9uQm94IEludGVycHJldGF0aW9uQm94T3B0aW9ucyBJbnRlcnByZXRhdGlvbkZ1bmN0aW9uIEludGVycHJldGVyIEludGVycHJldFRlbXBsYXRlIEludGVycXVhcnRpbGVSYW5nZSBJbnRlcnJ1cHQgSW50ZXJydXB0U2V0dGluZ3MgSW50ZXJzZWN0aW5nUSBJbnRlcnNlY3Rpb24gSW50ZXJ2YWwgSW50ZXJ2YWxJbnRlcnNlY3Rpb24gSW50ZXJ2YWxNYXJrZXJzIEludGVydmFsTWFya2Vyc1N0eWxlIEludGVydmFsTWVtYmVyUSBJbnRlcnZhbFNsaWRlciBJbnRlcnZhbFVuaW9uIEludG8gSW52ZXJzZSBJbnZlcnNlQmV0YVJlZ3VsYXJpemVkIEludmVyc2VDREYgSW52ZXJzZUNoaVNxdWFyZURpc3RyaWJ1dGlvbiBJbnZlcnNlQ29udGludW91c1dhdmVsZXRUcmFuc2Zvcm0gSW52ZXJzZURpc3RhbmNlVHJhbnNmb3JtIEludmVyc2VFbGxpcHRpY05vbWVRIEludmVyc2VFcmYgSW52ZXJzZUVyZmMgSW52ZXJzZUZvdXJpZXIgSW52ZXJzZUZvdXJpZXJDb3NUcmFuc2Zvcm0gSW52ZXJzZUZvdXJpZXJTZXF1ZW5jZVRyYW5zZm9ybSBJbnZlcnNlRm91cmllclNpblRyYW5zZm9ybSBJbnZlcnNlRm91cmllclRyYW5zZm9ybSBJbnZlcnNlRnVuY3Rpb24gSW52ZXJzZUZ1bmN0aW9ucyBJbnZlcnNlR2FtbWFEaXN0cmlidXRpb24gSW52ZXJzZUdhbW1hUmVndWxhcml6ZWQgSW52ZXJzZUdhdXNzaWFuRGlzdHJpYnV0aW9uIEludmVyc2VHdWRlcm1hbm5pYW4gSW52ZXJzZUhhbmtlbFRyYW5zZm9ybSBJbnZlcnNlSGF2ZXJzaW5lIEludmVyc2VJbWFnZVB5cmFtaWQgSW52ZXJzZUphY29iaUNEIEludmVyc2VKYWNvYmlDTiBJbnZlcnNlSmFjb2JpQ1MgSW52ZXJzZUphY29iaURDIEludmVyc2VKYWNvYmlETiBJbnZlcnNlSmFjb2JpRFMgSW52ZXJzZUphY29iaU5DIEludmVyc2VKYWNvYmlORCBJbnZlcnNlSmFjb2JpTlMgSW52ZXJzZUphY29iaVNDIEludmVyc2VKYWNvYmlTRCBJbnZlcnNlSmFjb2JpU04gSW52ZXJzZUxhcGxhY2VUcmFuc2Zvcm0gSW52ZXJzZU1lbGxpblRyYW5zZm9ybSBJbnZlcnNlUGVybXV0YXRpb24gSW52ZXJzZVJhZG9uIEludmVyc2VSYWRvblRyYW5zZm9ybSBJbnZlcnNlU2VyaWVzIEludmVyc2VTaG9ydFRpbWVGb3VyaWVyIEludmVyc2VTcGVjdHJvZ3JhbSBJbnZlcnNlU3Vydml2YWxGdW5jdGlvbiBJbnZlcnNlVHJhbnNmb3JtZWRSZWdpb24gSW52ZXJzZVdhdmVsZXRUcmFuc2Zvcm0gSW52ZXJzZVdlaWVyc3RyYXNzUCBJbnZlcnNlV2lzaGFydE1hdHJpeERpc3RyaWJ1dGlvbiBJbnZlcnNlWlRyYW5zZm9ybSBJbnZpc2libGUgSW52aXNpYmxlQXBwbGljYXRpb24gSW52aXNpYmxlVGltZXMgSVBBZGRyZXNzIElycmVkdWNpYmxlUG9seW5vbWlhbFEgSXNsYW5kRGF0YSBJc29sYXRpbmdJbnRlcnZhbCBJc29tb3JwaGljR3JhcGhRIElzb3RvcGVEYXRhIEl0YWxpYyBJdGVtIEl0ZW1Bc3BlY3RSYXRpbyBJdGVtQm94IEl0ZW1Cb3hPcHRpb25zIEl0ZW1TaXplIEl0ZW1TdHlsZSBJdG9Qcm9jZXNzJyArXG4gICAgICAnSmFjY2FyZERpc3NpbWlsYXJpdHkgSmFjb2JpQW1wbGl0dWRlIEphY29iaWFuIEphY29iaUNEIEphY29iaUNOIEphY29iaUNTIEphY29iaURDIEphY29iaUROIEphY29iaURTIEphY29iaU5DIEphY29iaU5EIEphY29iaU5TIEphY29iaVAgSmFjb2JpU0MgSmFjb2JpU0QgSmFjb2JpU04gSmFjb2JpU3ltYm9sIEphY29iaVpldGEgSmFua29Hcm91cEoxIEphbmtvR3JvdXBKMiBKYW5rb0dyb3VwSjMgSmFua29Hcm91cEo0IEphcnF1ZUJlcmFBTE1UZXN0IEpvaG5zb25EaXN0cmlidXRpb24gSm9pbiBKb2luQWNyb3NzIEpvaW5lZCBKb2luZWRDdXJ2ZSBKb2luZWRDdXJ2ZUJveCBKb2luZWRDdXJ2ZUJveE9wdGlvbnMgSm9pbkZvcm0gSm9yZGFuRGVjb21wb3NpdGlvbiBKb3JkYW5Nb2RlbERlY29tcG9zaXRpb24gSnVsaWFuRGF0ZSBKdWxpYVNldEJvZXR0Y2hlciBKdWxpYVNldEl0ZXJhdGlvbkNvdW50IEp1bGlhU2V0UGxvdCBKdWxpYVNldFBvaW50cycgK1xuICAgICAgJ0sgS2FnaUNoYXJ0IEthaXNlckJlc3NlbFdpbmRvdyBLYWlzZXJXaW5kb3cgS2FsbWFuRXN0aW1hdG9yIEthbG1hbkZpbHRlciBLYXJodW5lbkxvZXZlRGVjb21wb3NpdGlvbiBLYXJ5VHJlZSBLYXR6Q2VudHJhbGl0eSBLQ29yZUNvbXBvbmVudHMgS0Rpc3RyaWJ1dGlvbiBLRWRnZUNvbm5lY3RlZENvbXBvbmVudHMgS0VkZ2VDb25uZWN0ZWRHcmFwaFEgS2VsdmluQmVpIEtlbHZpbkJlciBLZWx2aW5LZWkgS2VsdmluS2VyIEtlbmRhbGxUYXUgS2VuZGFsbFRhdVRlc3QgS2VybmVsRXhlY3V0ZSBLZXJuZWxGdW5jdGlvbiBLZXJuZWxNaXh0dXJlRGlzdHJpYnV0aW9uIEtlcm5lbHMgS2V0IEtleSBLZXlDb2xsaXNpb25GdW5jdGlvbiBLZXlDb21wbGVtZW50IEtleURyb3AgS2V5RHJvcEZyb20gS2V5RXhpc3RzUSBLZXlGcmVlUSBLZXlJbnRlcnNlY3Rpb24gS2V5TWFwIEtleU1lbWJlclEgS2V5cG9pbnRTdHJlbmd0aCBLZXlzIEtleVNlbGVjdCBLZXlTb3J0IEtleVNvcnRCeSBLZXlUYWtlIEtleVVuaW9uIEtleVZhbHVlTWFwIEtleVZhbHVlUGF0dGVybiBLaGluY2hpbiBLaWxsUHJvY2VzcyBLaXJjaGhvZmZHcmFwaCBLaXJjaGhvZmZNYXRyaXggS2xlaW5JbnZhcmlhbnRKIEtuYXBzYWNrU29sdmUgS25pZ2h0VG91ckdyYXBoIEtub3REYXRhIEtub3duVW5pdFEgS29jaEN1cnZlIEtvbG1vZ29yb3ZTbWlybm92VGVzdCBLcm9uZWNrZXJEZWx0YSBLcm9uZWNrZXJNb2RlbERlY29tcG9zaXRpb24gS3JvbmVja2VyUHJvZHVjdCBLcm9uZWNrZXJTeW1ib2wgS3VpcGVyVGVzdCBLdW1hcmFzd2FteURpc3RyaWJ1dGlvbiBLdXJ0b3NpcyBLdXdhaGFyYUZpbHRlciBLVmVydGV4Q29ubmVjdGVkQ29tcG9uZW50cyBLVmVydGV4Q29ubmVjdGVkR3JhcGhRJyArXG4gICAgICAnTEFCQ29sb3IgTGFiZWwgTGFiZWxlZCBMYWJlbGVkU2xpZGVyIExhYmVsaW5nRnVuY3Rpb24gTGFiZWxpbmdTaXplIExhYmVsU3R5bGUgTGFiZWxWaXNpYmlsaXR5IExhZ3VlcnJlTCBMYWtlRGF0YSBMYW1iZGFDb21wb25lbnRzIExhbWJlcnRXIExhbWluYURhdGEgTGFuY3pvc1dpbmRvdyBMYW5kYXVEaXN0cmlidXRpb24gTGFuZ3VhZ2UgTGFuZ3VhZ2VDYXRlZ29yeSBMYW5ndWFnZURhdGEgTGFuZ3VhZ2VJZGVudGlmeSBMYW5ndWFnZU9wdGlvbnMgTGFwbGFjZURpc3RyaWJ1dGlvbiBMYXBsYWNlVHJhbnNmb3JtIExhcGxhY2lhbiBMYXBsYWNpYW5GaWx0ZXIgTGFwbGFjaWFuR2F1c3NpYW5GaWx0ZXIgTGFyZ2UgTGFyZ2VyIExhc3QgTGF0aXR1ZGUgTGF0aXR1ZGVMb25naXR1ZGUgTGF0dGljZURhdGEgTGF0dGljZVJlZHVjZSBMYXVuY2ggTGF1bmNoS2VybmVscyBMYXllcmVkR3JhcGhQbG90IExheWVyU2l6ZUZ1bmN0aW9uIExheW91dEluZm9ybWF0aW9uIExDSENvbG9yIExDTSBMZWFkZXJTaXplIExlYWZDb3VudCBMZWFwWWVhclEgTGVhcm5EaXN0cmlidXRpb24gTGVhcm5lZERpc3RyaWJ1dGlvbiBMZWFybmluZ1JhdGUgTGVhcm5pbmdSYXRlTXVsdGlwbGllcnMgTGVhc3RTcXVhcmVzIExlYXN0U3F1YXJlc0ZpbHRlcktlcm5lbCBMZWZ0IExlZnRBcnJvdyBMZWZ0QXJyb3dCYXIgTGVmdEFycm93UmlnaHRBcnJvdyBMZWZ0RG93blRlZVZlY3RvciBMZWZ0RG93blZlY3RvciBMZWZ0RG93blZlY3RvckJhciBMZWZ0UmlnaHRBcnJvdyBMZWZ0UmlnaHRWZWN0b3IgTGVmdFRlZSBMZWZ0VGVlQXJyb3cgTGVmdFRlZVZlY3RvciBMZWZ0VHJpYW5nbGUgTGVmdFRyaWFuZ2xlQmFyIExlZnRUcmlhbmdsZUVxdWFsIExlZnRVcERvd25WZWN0b3IgTGVmdFVwVGVlVmVjdG9yIExlZnRVcFZlY3RvciBMZWZ0VXBWZWN0b3JCYXIgTGVmdFZlY3RvciBMZWZ0VmVjdG9yQmFyIExlZ2VuZEFwcGVhcmFuY2UgTGVnZW5kZWQgTGVnZW5kRnVuY3Rpb24gTGVnZW5kTGFiZWwgTGVnZW5kTGF5b3V0IExlZ2VuZE1hcmdpbnMgTGVnZW5kTWFya2VycyBMZWdlbmRNYXJrZXJTaXplIExlZ2VuZHJlUCBMZWdlbmRyZVEgTGVnZW5kcmVUeXBlIExlbmd0aCBMZW5ndGhXaGlsZSBMZXJjaFBoaSBMZXNzIExlc3NFcXVhbCBMZXNzRXF1YWxHcmVhdGVyIExlc3NFcXVhbFRoYW4gTGVzc0Z1bGxFcXVhbCBMZXNzR3JlYXRlciBMZXNzTGVzcyBMZXNzU2xhbnRFcXVhbCBMZXNzVGhhbiBMZXNzVGlsZGUgTGV0dGVyQ2hhcmFjdGVyIExldHRlckNvdW50cyBMZXR0ZXJOdW1iZXIgTGV0dGVyUSBMZXZlbCBMZXZlbmVUZXN0IExldmlDaXZpdGFUZW5zb3IgTGV2eURpc3RyaWJ1dGlvbiBMZXhpY29ncmFwaGljIExpYnJhcnlEYXRhVHlwZSBMaWJyYXJ5RnVuY3Rpb24gTGlicmFyeUZ1bmN0aW9uRXJyb3IgTGlicmFyeUZ1bmN0aW9uSW5mb3JtYXRpb24gTGlicmFyeUZ1bmN0aW9uTG9hZCBMaWJyYXJ5RnVuY3Rpb25VbmxvYWQgTGlicmFyeUxvYWQgTGlicmFyeVVubG9hZCBMaWNlbnNlSUQgTGlmdGluZ0ZpbHRlckRhdGEgTGlmdGluZ1dhdmVsZXRUcmFuc2Zvcm0gTGlnaHRCbHVlIExpZ2h0QnJvd24gTGlnaHRDeWFuIExpZ2h0ZXIgTGlnaHRHcmF5IExpZ2h0R3JlZW4gTGlnaHRpbmcgTGlnaHRpbmdBbmdsZSBMaWdodE1hZ2VudGEgTGlnaHRPcmFuZ2UgTGlnaHRQaW5rIExpZ2h0UHVycGxlIExpZ2h0UmVkIExpZ2h0U291cmNlcyBMaWdodFllbGxvdyBMaWtlbGlob29kIExpbWl0IExpbWl0c1Bvc2l0aW9uaW5nIExpbWl0c1Bvc2l0aW9uaW5nVG9rZW5zIExpbmRsZXlEaXN0cmlidXRpb24gTGluZSBMaW5lM0RCb3ggTGluZTNEQm94T3B0aW9ucyBMaW5lYXJGaWx0ZXIgTGluZWFyRnJhY3Rpb25hbE9wdGltaXphdGlvbiBMaW5lYXJGcmFjdGlvbmFsVHJhbnNmb3JtIExpbmVhckdyYWRpZW50SW1hZ2UgTGluZWFyaXppbmdUcmFuc2Zvcm1hdGlvbkRhdGEgTGluZWFyTGF5ZXIgTGluZWFyTW9kZWxGaXQgTGluZWFyT2Zmc2V0RnVuY3Rpb24gTGluZWFyT3B0aW1pemF0aW9uIExpbmVhclByb2dyYW1taW5nIExpbmVhclJlY3VycmVuY2UgTGluZWFyU29sdmUgTGluZWFyU29sdmVGdW5jdGlvbiBMaW5lQm94IExpbmVCb3hPcHRpb25zIExpbmVCcmVhayBMaW5lYnJlYWtBZGp1c3RtZW50cyBMaW5lQnJlYWtDaGFydCBMaW5lYnJlYWtTZW1pY29sb25XZWlnaHRpbmcgTGluZUJyZWFrV2l0aGluIExpbmVDb2xvciBMaW5lR3JhcGggTGluZUluZGVudCBMaW5lSW5kZW50TWF4RnJhY3Rpb24gTGluZUludGVncmFsQ29udm9sdXRpb25QbG90IExpbmVJbnRlZ3JhbENvbnZvbHV0aW9uU2NhbGUgTGluZUxlZ2VuZCBMaW5lT3BhY2l0eSBMaW5lU3BhY2luZyBMaW5lV3JhcFBhcnRzIExpbmtBY3RpdmF0ZSBMaW5rQ2xvc2UgTGlua0Nvbm5lY3QgTGlua0Nvbm5lY3RlZFEgTGlua0NyZWF0ZSBMaW5rRXJyb3IgTGlua0ZsdXNoIExpbmtGdW5jdGlvbiBMaW5rSG9zdCBMaW5rSW50ZXJydXB0IExpbmtMYXVuY2ggTGlua01vZGUgTGlua09iamVjdCBMaW5rT3BlbiBMaW5rT3B0aW9ucyBMaW5rUGF0dGVybnMgTGlua1Byb3RvY29sIExpbmtSYW5rQ2VudHJhbGl0eSBMaW5rUmVhZCBMaW5rUmVhZEhlbGQgTGlua1JlYWR5USBMaW5rcyBMaW5rU2VydmljZSBMaW5rV3JpdGUgTGlua1dyaXRlSGVsZCBMaW91dmlsbGVMYW1iZGEgTGlzdCBMaXN0YWJsZSBMaXN0QW5pbWF0ZSBMaXN0Q29udG91clBsb3QgTGlzdENvbnRvdXJQbG90M0QgTGlzdENvbnZvbHZlIExpc3RDb3JyZWxhdGUgTGlzdEN1cnZlUGF0aFBsb3QgTGlzdERlY29udm9sdmUgTGlzdERlbnNpdHlQbG90IExpc3REZW5zaXR5UGxvdDNEIExpc3RlbiBMaXN0Rm9ybWF0IExpc3RGb3VyaWVyU2VxdWVuY2VUcmFuc2Zvcm0gTGlzdEludGVycG9sYXRpb24gTGlzdExpbmVJbnRlZ3JhbENvbnZvbHV0aW9uUGxvdCBMaXN0TGluZVBsb3QgTGlzdExvZ0xpbmVhclBsb3QgTGlzdExvZ0xvZ1Bsb3QgTGlzdExvZ1Bsb3QgTGlzdFBpY2tlciBMaXN0UGlja2VyQm94IExpc3RQaWNrZXJCb3hCYWNrZ3JvdW5kIExpc3RQaWNrZXJCb3hPcHRpb25zIExpc3RQbGF5IExpc3RQbG90IExpc3RQbG90M0QgTGlzdFBvaW50UGxvdDNEIExpc3RQb2xhclBsb3QgTGlzdFEgTGlzdFNsaWNlQ29udG91clBsb3QzRCBMaXN0U2xpY2VEZW5zaXR5UGxvdDNEIExpc3RTbGljZVZlY3RvclBsb3QzRCBMaXN0U3RlcFBsb3QgTGlzdFN0cmVhbURlbnNpdHlQbG90IExpc3RTdHJlYW1QbG90IExpc3RTdXJmYWNlUGxvdDNEIExpc3RWZWN0b3JEZW5zaXR5UGxvdCBMaXN0VmVjdG9yUGxvdCBMaXN0VmVjdG9yUGxvdDNEIExpc3RaVHJhbnNmb3JtIExpdGVyYWwgTGl0ZXJhbFNlYXJjaCBMb2NhbEFkYXB0aXZlQmluYXJpemUgTG9jYWxDYWNoZSBMb2NhbENsdXN0ZXJpbmdDb2VmZmljaWVudCBMb2NhbGl6ZURlZmluaXRpb25zIExvY2FsaXplVmFyaWFibGVzIExvY2FsT2JqZWN0IExvY2FsT2JqZWN0cyBMb2NhbFJlc3BvbnNlTm9ybWFsaXphdGlvbkxheWVyIExvY2FsU3VibWl0IExvY2FsU3ltYm9sIExvY2FsVGltZSBMb2NhbFRpbWVab25lIExvY2F0aW9uRXF1aXZhbGVuY2VUZXN0IExvY2F0aW9uVGVzdCBMb2NhdG9yIExvY2F0b3JBdXRvQ3JlYXRlIExvY2F0b3JCb3ggTG9jYXRvckJveE9wdGlvbnMgTG9jYXRvckNlbnRlcmluZyBMb2NhdG9yUGFuZSBMb2NhdG9yUGFuZUJveCBMb2NhdG9yUGFuZUJveE9wdGlvbnMgTG9jYXRvclJlZ2lvbiBMb2NrZWQgTG9nIExvZzEwIExvZzIgTG9nQmFybmVzRyBMb2dHYW1tYSBMb2dHYW1tYURpc3RyaWJ1dGlvbiBMb2dpY2FsRXhwYW5kIExvZ0ludGVncmFsIExvZ2lzdGljRGlzdHJpYnV0aW9uIExvZ2lzdGljU2lnbW9pZCBMb2dpdE1vZGVsRml0IExvZ0xpa2VsaWhvb2QgTG9nTGluZWFyUGxvdCBMb2dMb2dpc3RpY0Rpc3RyaWJ1dGlvbiBMb2dMb2dQbG90IExvZ011bHRpbm9ybWFsRGlzdHJpYnV0aW9uIExvZ05vcm1hbERpc3RyaWJ1dGlvbiBMb2dQbG90IExvZ1JhbmtUZXN0IExvZ1Nlcmllc0Rpc3RyaWJ1dGlvbiBMb25nRXF1YWwgTG9uZ2VzdCBMb25nZXN0Q29tbW9uU2VxdWVuY2UgTG9uZ2VzdENvbW1vblNlcXVlbmNlUG9zaXRpb25zIExvbmdlc3RDb21tb25TdWJzZXF1ZW5jZSBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2VQb3NpdGlvbnMgTG9uZ2VzdE1hdGNoIExvbmdlc3RPcmRlcmVkU2VxdWVuY2UgTG9uZ0Zvcm0gTG9uZ2l0dWRlIExvbmdMZWZ0QXJyb3cgTG9uZ0xlZnRSaWdodEFycm93IExvbmdSaWdodEFycm93IExvbmdTaG9ydFRlcm1NZW1vcnlMYXllciBMb29rdXAgTG9vcGJhY2sgTG9vcEZyZWVHcmFwaFEgTG9zc0Z1bmN0aW9uIExvd2VyQ2FzZVEgTG93ZXJMZWZ0QXJyb3cgTG93ZXJSaWdodEFycm93IExvd2VyVHJpYW5ndWxhcml6ZSBMb3dlclRyaWFuZ3VsYXJNYXRyaXhRIExvd3Bhc3NGaWx0ZXIgTFFFc3RpbWF0b3JHYWlucyBMUUdSZWd1bGF0b3IgTFFPdXRwdXRSZWd1bGF0b3JHYWlucyBMUVJlZ3VsYXRvckdhaW5zIExVQmFja1N1YnN0aXR1dGlvbiBMdWNhc0wgTHVjY2lvU2FtaUNvbXBvbmVudHMgTFVEZWNvbXBvc2l0aW9uIEx1bmFyRWNsaXBzZSBMVVZDb2xvciBMeWFwdW5vdlNvbHZlIEx5b25zR3JvdXBMeScgK1xuICAgICAgJ01hY2hpbmVJRCBNYWNoaW5lTmFtZSBNYWNoaW5lTnVtYmVyUSBNYWNoaW5lUHJlY2lzaW9uIE1hY2ludG9zaFN5c3RlbVBhZ2VTZXR1cCBNYWdlbnRhIE1hZ25pZmljYXRpb24gTWFnbmlmeSBNYWlsQWRkcmVzc1ZhbGlkYXRpb24gTWFpbEV4ZWN1dGUgTWFpbEZvbGRlciBNYWlsSXRlbSBNYWlsUmVjZWl2ZXJGdW5jdGlvbiBNYWlsUmVzcG9uc2VGdW5jdGlvbiBNYWlsU2VhcmNoIE1haWxTZXJ2ZXJDb25uZWN0IE1haWxTZXJ2ZXJDb25uZWN0aW9uIE1haWxTZXR0aW5ncyBNYWluU29sdmUgTWFpbnRhaW5EeW5hbWljQ2FjaGVzIE1ham9yaXR5IE1ha2VCb3hlcyBNYWtlRXhwcmVzc2lvbiBNYWtlUnVsZXMgTWFuYWdlZExpYnJhcnlFeHByZXNzaW9uSUQgTWFuYWdlZExpYnJhcnlFeHByZXNzaW9uUSBNYW5kZWxicm90U2V0Qm9ldHRjaGVyIE1hbmRlbGJyb3RTZXREaXN0YW5jZSBNYW5kZWxicm90U2V0SXRlcmF0aW9uQ291bnQgTWFuZGVsYnJvdFNldE1lbWJlclEgTWFuZGVsYnJvdFNldFBsb3QgTWFuZ29sZHRMYW1iZGEgTWFuaGF0dGFuRGlzdGFuY2UgTWFuaXB1bGF0ZSBNYW5pcHVsYXRvciBNYW5uZWRTcGFjZU1pc3Npb25EYXRhIE1hbm5XaGl0bmV5VGVzdCBNYW50aXNzYUV4cG9uZW50IE1hbnVhbCBNYXAgTWFwQWxsIE1hcEF0IE1hcEluZGV4ZWQgTUFQcm9jZXNzIE1hcFRocmVhZCBNYXJjaGVua29QYXN0dXJEaXN0cmlidXRpb24gTWFyY3VtUSBNYXJkaWFDb21iaW5lZFRlc3QgTWFyZGlhS3VydG9zaXNUZXN0IE1hcmRpYVNrZXduZXNzVGVzdCBNYXJnaW5hbERpc3RyaWJ1dGlvbiBNYXJrb3ZQcm9jZXNzUHJvcGVydGllcyBNYXNraW5nIE1hdGNoaW5nRGlzc2ltaWxhcml0eSBNYXRjaExvY2FsTmFtZVEgTWF0Y2hMb2NhbE5hbWVzIE1hdGNoUSBNYXRlcmlhbCBNYXRoZW1hdGljYWxGdW5jdGlvbkRhdGEgTWF0aGVtYXRpY2FOb3RhdGlvbiBNYXRoaWV1QyBNYXRoaWV1Q2hhcmFjdGVyaXN0aWNBIE1hdGhpZXVDaGFyYWN0ZXJpc3RpY0IgTWF0aGlldUNoYXJhY3RlcmlzdGljRXhwb25lbnQgTWF0aGlldUNQcmltZSBNYXRoaWV1R3JvdXBNMTEgTWF0aGlldUdyb3VwTTEyIE1hdGhpZXVHcm91cE0yMiBNYXRoaWV1R3JvdXBNMjMgTWF0aGlldUdyb3VwTTI0IE1hdGhpZXVTIE1hdGhpZXVTUHJpbWUgTWF0aE1MRm9ybSBNYXRoTUxUZXh0IE1hdHJpY2VzIE1hdHJpeEV4cCBNYXRyaXhGb3JtIE1hdHJpeEZ1bmN0aW9uIE1hdHJpeExvZyBNYXRyaXhOb3JtYWxEaXN0cmlidXRpb24gTWF0cml4UGxvdCBNYXRyaXhQb3dlciBNYXRyaXhQcm9wZXJ0eURpc3RyaWJ1dGlvbiBNYXRyaXhRIE1hdHJpeFJhbmsgTWF0cml4VERpc3RyaWJ1dGlvbiBNYXggTWF4QmVuZCBNYXhDZWxsTWVhc3VyZSBNYXhDb2xvckRpc3RhbmNlIE1heERldGVjdCBNYXhEdXJhdGlvbiBNYXhFeHRyYUJhbmR3aWR0aHMgTWF4RXh0cmFDb25kaXRpb25zIE1heEZlYXR1cmVEaXNwbGFjZW1lbnQgTWF4RmVhdHVyZXMgTWF4RmlsdGVyIE1heGltYWxCeSBNYXhpbWl6ZSBNYXhJdGVtcyBNYXhJdGVyYXRpb25zIE1heExpbWl0IE1heE1lbW9yeVVzZWQgTWF4TWl4dHVyZUtlcm5lbHMgTWF4T3ZlcmxhcEZyYWN0aW9uIE1heFBsb3RQb2ludHMgTWF4UG9pbnRzIE1heFJlY3Vyc2lvbiBNYXhTdGFibGVEaXN0cmlidXRpb24gTWF4U3RlcEZyYWN0aW9uIE1heFN0ZXBzIE1heFN0ZXBTaXplIE1heFRyYWluaW5nUm91bmRzIE1heFZhbHVlIE1heHdlbGxEaXN0cmlidXRpb24gTWF4V29yZEdhcCBNY0xhdWdobGluR3JvdXBNY0wgTWVhbiBNZWFuQWJzb2x1dGVMb3NzTGF5ZXIgTWVhbkFyb3VuZCBNZWFuQ2x1c3RlcmluZ0NvZWZmaWNpZW50IE1lYW5EZWdyZWVDb25uZWN0aXZpdHkgTWVhbkRldmlhdGlvbiBNZWFuRmlsdGVyIE1lYW5HcmFwaERpc3RhbmNlIE1lYW5OZWlnaGJvckRlZ3JlZSBNZWFuU2hpZnQgTWVhblNoaWZ0RmlsdGVyIE1lYW5TcXVhcmVkTG9zc0xheWVyIE1lZGlhbiBNZWRpYW5EZXZpYXRpb24gTWVkaWFuRmlsdGVyIE1lZGljYWxUZXN0RGF0YSBNZWRpdW0gTWVpamVyRyBNZWlqZXJHUmVkdWNlIE1laXhuZXJEaXN0cmlidXRpb24gTWVsbGluQ29udm9sdmUgTWVsbGluVHJhbnNmb3JtIE1lbWJlclEgTWVtb3J5QXZhaWxhYmxlIE1lbW9yeUNvbnN0cmFpbmVkIE1lbW9yeUNvbnN0cmFpbnQgTWVtb3J5SW5Vc2UgTWVuZ2VyTWVzaCBNZW51IE1lbnVBcHBlYXJhbmNlIE1lbnVDb21tYW5kS2V5IE1lbnVFdmFsdWF0b3IgTWVudUl0ZW0gTWVudUxpc3QgTWVudVBhY2tldCBNZW51U29ydGluZ1ZhbHVlIE1lbnVTdHlsZSBNZW51VmlldyBNZXJnZSBNZXJnZURpZmZlcmVuY2VzIE1lcmdpbmdGdW5jdGlvbiBNZXJzZW5uZVByaW1lRXhwb25lbnQgTWVyc2VubmVQcmltZUV4cG9uZW50USBNZXNoIE1lc2hDZWxsQ2VudHJvaWQgTWVzaENlbGxDb3VudCBNZXNoQ2VsbEhpZ2hsaWdodCBNZXNoQ2VsbEluZGV4IE1lc2hDZWxsTGFiZWwgTWVzaENlbGxNYXJrZXIgTWVzaENlbGxNZWFzdXJlIE1lc2hDZWxsUXVhbGl0eSBNZXNoQ2VsbHMgTWVzaENlbGxTaGFwZUZ1bmN0aW9uIE1lc2hDZWxsU3R5bGUgTWVzaENvb3JkaW5hdGVzIE1lc2hGdW5jdGlvbnMgTWVzaFByaW1pdGl2ZXMgTWVzaFF1YWxpdHlHb2FsIE1lc2hSYW5nZSBNZXNoUmVmaW5lbWVudEZ1bmN0aW9uIE1lc2hSZWdpb24gTWVzaFJlZ2lvblEgTWVzaFNoYWRpbmcgTWVzaFN0eWxlIE1lc3NhZ2UgTWVzc2FnZURpYWxvZyBNZXNzYWdlTGlzdCBNZXNzYWdlTmFtZSBNZXNzYWdlT2JqZWN0IE1lc3NhZ2VPcHRpb25zIE1lc3NhZ2VQYWNrZXQgTWVzc2FnZXMgTWVzc2FnZXNOb3RlYm9vayBNZXRhQ2hhcmFjdGVycyBNZXRhSW5mb3JtYXRpb24gTWV0ZW9yU2hvd2VyRGF0YSBNZXRob2QgTWV0aG9kT3B0aW9ucyBNZXhpY2FuSGF0V2F2ZWxldCBNZXllcldhdmVsZXQgTWlkcG9pbnQgTWluIE1pbkNvbG9yRGlzdGFuY2UgTWluRGV0ZWN0IE1pbmVyYWxEYXRhIE1pbkZpbHRlciBNaW5pbWFsQnkgTWluaW1hbFBvbHlub21pYWwgTWluaW1hbFN0YXRlU3BhY2VNb2RlbCBNaW5pbWl6ZSBNaW5pbXVtVGltZUluY3JlbWVudCBNaW5JbnRlcnZhbFNpemUgTWlua293c2tpUXVlc3Rpb25NYXJrIE1pbkxpbWl0IE1pbk1heCBNaW5vclBsYW5ldERhdGEgTWlub3JzIE1pblJlY3Vyc2lvbiBNaW5TaXplIE1pblN0YWJsZURpc3RyaWJ1dGlvbiBNaW51cyBNaW51c1BsdXMgTWluVmFsdWUgTWlzc2luZyBNaXNzaW5nQmVoYXZpb3IgTWlzc2luZ0RhdGFNZXRob2QgTWlzc2luZ0RhdGFSdWxlcyBNaXNzaW5nUSBNaXNzaW5nU3RyaW5nIE1pc3NpbmdTdHlsZSBNaXNzaW5nVmFsdWVQYXR0ZXJuIE1pdHRhZ0xlZmZsZXJFIE1peGVkRnJhY3Rpb25QYXJ0cyBNaXhlZEdyYXBoUSBNaXhlZE1hZ25pdHVkZSBNaXhlZFJhZGl4IE1peGVkUmFkaXhRdWFudGl0eSBNaXhlZFVuaXQgTWl4dHVyZURpc3RyaWJ1dGlvbiBNb2QgTW9kYWwgTW9kZSBNb2R1bGFyIE1vZHVsYXJJbnZlcnNlIE1vZHVsYXJMYW1iZGEgTW9kdWxlIE1vZHVsdXMgTW9lYml1c011IE1vbGVjdWxlIE1vbGVjdWxlQ29udGFpbnNRIE1vbGVjdWxlRXF1aXZhbGVudFEgTW9sZWN1bGVHcmFwaCBNb2xlY3VsZU1vZGlmeSBNb2xlY3VsZVBhdHRlcm4gTW9sZWN1bGVQbG90IE1vbGVjdWxlUGxvdDNEIE1vbGVjdWxlUHJvcGVydHkgTW9sZWN1bGVRIE1vbGVjdWxlVmFsdWUgTW9tZW50IE1vbWVudGFyeSBNb21lbnRDb252ZXJ0IE1vbWVudEV2YWx1YXRlIE1vbWVudEdlbmVyYXRpbmdGdW5jdGlvbiBNb21lbnRPZkluZXJ0aWEgTW9uZGF5IE1vbml0b3IgTW9ub21pYWxMaXN0IE1vbm9taWFsT3JkZXIgTW9uc3Rlckdyb3VwTSBNb29uUGhhc2UgTW9vblBvc2l0aW9uIE1vcmxldFdhdmVsZXQgTW9ycGhvbG9naWNhbEJpbmFyaXplIE1vcnBob2xvZ2ljYWxCcmFuY2hQb2ludHMgTW9ycGhvbG9naWNhbENvbXBvbmVudHMgTW9ycGhvbG9naWNhbEV1bGVyTnVtYmVyIE1vcnBob2xvZ2ljYWxHcmFwaCBNb3JwaG9sb2dpY2FsUGVyaW1ldGVyIE1vcnBob2xvZ2ljYWxUcmFuc2Zvcm0gTW9ydGFsaXR5RGF0YSBNb3N0IE1vdW50YWluRGF0YSBNb3VzZUFubm90YXRpb24gTW91c2VBcHBlYXJhbmNlIE1vdXNlQXBwZWFyYW5jZVRhZyBNb3VzZUJ1dHRvbnMgTW91c2VvdmVyIE1vdXNlUG9pbnRlck5vdGUgTW91c2VQb3NpdGlvbiBNb3ZpZURhdGEgTW92aW5nQXZlcmFnZSBNb3ZpbmdNYXAgTW92aW5nTWVkaWFuIE1veWFsRGlzdHJpYnV0aW9uIE11bHRpY29sdW1uIE11bHRpZWRnZVN0eWxlIE11bHRpZ3JhcGhRIE11bHRpbGF1bmNoV2FybmluZyBNdWx0aUxldHRlckl0YWxpY3MgTXVsdGlMZXR0ZXJTdHlsZSBNdWx0aWxpbmVGdW5jdGlvbiBNdWx0aW5vbWlhbCBNdWx0aW5vbWlhbERpc3RyaWJ1dGlvbiBNdWx0aW5vcm1hbERpc3RyaWJ1dGlvbiBNdWx0aXBsaWNhdGl2ZU9yZGVyIE11bHRpcGxpY2l0eSBNdWx0aXBseVNpZGVzIE11bHRpc2VsZWN0aW9uIE11bHRpdmFyaWF0ZUh5cGVyZ2VvbWV0cmljRGlzdHJpYnV0aW9uIE11bHRpdmFyaWF0ZVBvaXNzb25EaXN0cmlidXRpb24gTXVsdGl2YXJpYXRlVERpc3RyaWJ1dGlvbicgK1xuICAgICAgJ04gTmFrYWdhbWlEaXN0cmlidXRpb24gTmFtZVEgTmFtZXMgTmFtZXNwYWNlQm94IE5hbWVzcGFjZUJveE9wdGlvbnMgTmFuZCBOQXJnTWF4IE5BcmdNaW4gTkJlcm5vdWxsaUIgTkJvZHlTaW11bGF0aW9uIE5Cb2R5U2ltdWxhdGlvbkRhdGEgTkNhY2hlIE5ERWlnZW5zeXN0ZW0gTkRFaWdlbnZhbHVlcyBORFNvbHZlIE5EU29sdmVWYWx1ZSBOZWFyZXN0IE5lYXJlc3RGdW5jdGlvbiBOZWFyZXN0TmVpZ2hib3JHcmFwaCBOZWFyZXN0VG8gTmVidWxhRGF0YSBOZWVkQ3VycmVudEZyb250RW5kUGFja2FnZVBhY2tldCBOZWVkQ3VycmVudEZyb250RW5kU3ltYm9sc1BhY2tldCBOZWVkbGVtYW5XdW5zY2hTaW1pbGFyaXR5IE5lZWRzIE5lZ2F0aXZlIE5lZ2F0aXZlQmlub21pYWxEaXN0cmlidXRpb24gTmVnYXRpdmVEZWZpbml0ZU1hdHJpeFEgTmVnYXRpdmVJbnRlZ2VycyBOZWdhdGl2ZU11bHRpbm9taWFsRGlzdHJpYnV0aW9uIE5lZ2F0aXZlUmF0aW9uYWxzIE5lZ2F0aXZlUmVhbHMgTmVnYXRpdmVTZW1pZGVmaW5pdGVNYXRyaXhRIE5laWdoYm9yaG9vZERhdGEgTmVpZ2hib3Job29kR3JhcGggTmVzdCBOZXN0ZWRHcmVhdGVyR3JlYXRlciBOZXN0ZWRMZXNzTGVzcyBOZXN0ZWRTY3JpcHRSdWxlcyBOZXN0R3JhcGggTmVzdExpc3QgTmVzdFdoaWxlIE5lc3RXaGlsZUxpc3QgTmV0QXBwZW5kIE5ldEJpZGlyZWN0aW9uYWxPcGVyYXRvciBOZXRDaGFpbiBOZXREZWNvZGVyIE5ldERlbGV0ZSBOZXREcm9wIE5ldEVuY29kZXIgTmV0RXZhbHVhdGlvbk1vZGUgTmV0RXh0cmFjdCBOZXRGbGF0dGVuIE5ldEZvbGRPcGVyYXRvciBOZXRHcmFwaCBOZXRJbmZvcm1hdGlvbiBOZXRJbml0aWFsaXplIE5ldEluc2VydCBOZXRJbnNlcnRTaGFyZWRBcnJheXMgTmV0Sm9pbiBOZXRNYXBPcGVyYXRvciBOZXRNYXBUaHJlYWRPcGVyYXRvciBOZXRNZWFzdXJlbWVudHMgTmV0TW9kZWwgTmV0TmVzdE9wZXJhdG9yIE5ldFBhaXJFbWJlZGRpbmdPcGVyYXRvciBOZXRQb3J0IE5ldFBvcnRHcmFkaWVudCBOZXRQcmVwZW5kIE5ldFJlbmFtZSBOZXRSZXBsYWNlIE5ldFJlcGxhY2VQYXJ0IE5ldFNoYXJlZEFycmF5IE5ldFN0YXRlT2JqZWN0IE5ldFRha2UgTmV0VHJhaW4gTmV0VHJhaW5SZXN1bHRzT2JqZWN0IE5ldHdvcmtQYWNrZXRDYXB0dXJlIE5ldHdvcmtQYWNrZXRSZWNvcmRpbmcgTmV0d29ya1BhY2tldFJlY29yZGluZ0R1cmluZyBOZXR3b3JrUGFja2V0VHJhY2UgTmV1bWFublZhbHVlIE5ldmlsbGVUaGV0YUMgTmV2aWxsZVRoZXRhRCBOZXZpbGxlVGhldGFOIE5ldmlsbGVUaGV0YVMgTmV3UHJpbWl0aXZlU3R5bGUgTkV4cGVjdGF0aW9uIE5leHQgTmV4dENlbGwgTmV4dERhdGUgTmV4dFByaW1lIE5leHRTY2hlZHVsZWRUYXNrVGltZSBOSG9sZEFsbCBOSG9sZEZpcnN0IE5Ib2xkUmVzdCBOaWNob2xzR3JpZExpbmVzIE5pY2hvbHNQbG90IE5pZ2h0SGVtaXNwaGVyZSBOSW50ZWdyYXRlIE5NYXhpbWl6ZSBOTWF4VmFsdWUgTk1pbmltaXplIE5NaW5WYWx1ZSBOb21pbmFsVmFyaWFibGVzIE5vbkFzc29jaWF0aXZlIE5vbmNlbnRyYWxCZXRhRGlzdHJpYnV0aW9uIE5vbmNlbnRyYWxDaGlTcXVhcmVEaXN0cmlidXRpb24gTm9uY2VudHJhbEZSYXRpb0Rpc3RyaWJ1dGlvbiBOb25jZW50cmFsU3R1ZGVudFREaXN0cmlidXRpb24gTm9uQ29tbXV0YXRpdmVNdWx0aXBseSBOb25Db25zdGFudHMgTm9uZGltZW5zaW9uYWxpemF0aW9uVHJhbnNmb3JtIE5vbmUgTm9uZVRydWUgTm9ubGluZWFyTW9kZWxGaXQgTm9ubGluZWFyU3RhdGVTcGFjZU1vZGVsIE5vbmxvY2FsTWVhbnNGaWx0ZXIgTm9uTmVnYXRpdmUgTm9uTmVnYXRpdmVJbnRlZ2VycyBOb25OZWdhdGl2ZVJhdGlvbmFscyBOb25OZWdhdGl2ZVJlYWxzIE5vblBvc2l0aXZlIE5vblBvc2l0aXZlSW50ZWdlcnMgTm9uUG9zaXRpdmVSYXRpb25hbHMgTm9uUG9zaXRpdmVSZWFscyBOb3IgTm9ybHVuZEIgTm9ybSBOb3JtYWwgTm9ybWFsRGlzdHJpYnV0aW9uIE5vcm1hbEdyb3VwaW5nIE5vcm1hbGl6YXRpb25MYXllciBOb3JtYWxpemUgTm9ybWFsaXplZCBOb3JtYWxpemVkU3F1YXJlZEV1Y2xpZGVhbkRpc3RhbmNlIE5vcm1hbE1hdHJpeFEgTm9ybWFsc0Z1bmN0aW9uIE5vcm1GdW5jdGlvbiBOb3QgTm90Q29uZ3J1ZW50IE5vdEN1cENhcCBOb3REb3VibGVWZXJ0aWNhbEJhciBOb3RlYm9vayBOb3RlYm9va0FwcGx5IE5vdGVib29rQXV0b1NhdmUgTm90ZWJvb2tDbG9zZSBOb3RlYm9va0NvbnZlcnRTZXR0aW5ncyBOb3RlYm9va0NyZWF0ZSBOb3RlYm9va0NyZWF0ZVJldHVybk9iamVjdCBOb3RlYm9va0RlZmF1bHQgTm90ZWJvb2tEZWxldGUgTm90ZWJvb2tEaXJlY3RvcnkgTm90ZWJvb2tEeW5hbWljRXhwcmVzc2lvbiBOb3RlYm9va0V2YWx1YXRlIE5vdGVib29rRXZlbnRBY3Rpb25zIE5vdGVib29rRmlsZU5hbWUgTm90ZWJvb2tGaW5kIE5vdGVib29rRmluZFJldHVybk9iamVjdCBOb3RlYm9va0dldCBOb3RlYm9va0dldExheW91dEluZm9ybWF0aW9uUGFja2V0IE5vdGVib29rR2V0TWlzc3BlbGxpbmdzUGFja2V0IE5vdGVib29rSW1wb3J0IE5vdGVib29rSW5mb3JtYXRpb24gTm90ZWJvb2tJbnRlcmZhY2VPYmplY3QgTm90ZWJvb2tMb2NhdGUgTm90ZWJvb2tPYmplY3QgTm90ZWJvb2tPcGVuIE5vdGVib29rT3BlblJldHVybk9iamVjdCBOb3RlYm9va1BhdGggTm90ZWJvb2tQcmludCBOb3RlYm9va1B1dCBOb3RlYm9va1B1dFJldHVybk9iamVjdCBOb3RlYm9va1JlYWQgTm90ZWJvb2tSZXNldEdlbmVyYXRlZENlbGxzIE5vdGVib29rcyBOb3RlYm9va1NhdmUgTm90ZWJvb2tTYXZlQXMgTm90ZWJvb2tTZWxlY3Rpb24gTm90ZWJvb2tTZXR1cExheW91dEluZm9ybWF0aW9uUGFja2V0IE5vdGVib29rc01lbnUgTm90ZWJvb2tUZW1wbGF0ZSBOb3RlYm9va1dyaXRlIE5vdEVsZW1lbnQgTm90RXF1YWxUaWxkZSBOb3RFeGlzdHMgTm90R3JlYXRlciBOb3RHcmVhdGVyRXF1YWwgTm90R3JlYXRlckZ1bGxFcXVhbCBOb3RHcmVhdGVyR3JlYXRlciBOb3RHcmVhdGVyTGVzcyBOb3RHcmVhdGVyU2xhbnRFcXVhbCBOb3RHcmVhdGVyVGlsZGUgTm90aGluZyBOb3RIdW1wRG93bkh1bXAgTm90SHVtcEVxdWFsIE5vdGlmaWNhdGlvbkZ1bmN0aW9uIE5vdExlZnRUcmlhbmdsZSBOb3RMZWZ0VHJpYW5nbGVCYXIgTm90TGVmdFRyaWFuZ2xlRXF1YWwgTm90TGVzcyBOb3RMZXNzRXF1YWwgTm90TGVzc0Z1bGxFcXVhbCBOb3RMZXNzR3JlYXRlciBOb3RMZXNzTGVzcyBOb3RMZXNzU2xhbnRFcXVhbCBOb3RMZXNzVGlsZGUgTm90TmVzdGVkR3JlYXRlckdyZWF0ZXIgTm90TmVzdGVkTGVzc0xlc3MgTm90UHJlY2VkZXMgTm90UHJlY2VkZXNFcXVhbCBOb3RQcmVjZWRlc1NsYW50RXF1YWwgTm90UHJlY2VkZXNUaWxkZSBOb3RSZXZlcnNlRWxlbWVudCBOb3RSaWdodFRyaWFuZ2xlIE5vdFJpZ2h0VHJpYW5nbGVCYXIgTm90UmlnaHRUcmlhbmdsZUVxdWFsIE5vdFNxdWFyZVN1YnNldCBOb3RTcXVhcmVTdWJzZXRFcXVhbCBOb3RTcXVhcmVTdXBlcnNldCBOb3RTcXVhcmVTdXBlcnNldEVxdWFsIE5vdFN1YnNldCBOb3RTdWJzZXRFcXVhbCBOb3RTdWNjZWVkcyBOb3RTdWNjZWVkc0VxdWFsIE5vdFN1Y2NlZWRzU2xhbnRFcXVhbCBOb3RTdWNjZWVkc1RpbGRlIE5vdFN1cGVyc2V0IE5vdFN1cGVyc2V0RXF1YWwgTm90VGlsZGUgTm90VGlsZGVFcXVhbCBOb3RUaWxkZUZ1bGxFcXVhbCBOb3RUaWxkZVRpbGRlIE5vdFZlcnRpY2FsQmFyIE5vdyBOb1doaXRlc3BhY2UgTlByb2JhYmlsaXR5IE5Qcm9kdWN0IE5Qcm9kdWN0RmFjdG9ycyBOUm9vdHMgTlNvbHZlIE5TdW0gTlN1bVRlcm1zIE51Y2xlYXJFeHBsb3Npb25EYXRhIE51Y2xlYXJSZWFjdG9yRGF0YSBOdWxsIE51bGxSZWNvcmRzIE51bGxTcGFjZSBOdWxsV29yZHMgTnVtYmVyIE51bWJlckNvbXBvc2UgTnVtYmVyRGVjb21wb3NlIE51bWJlckV4cGFuZCBOdW1iZXJGaWVsZENsYXNzTnVtYmVyIE51bWJlckZpZWxkRGlzY3JpbWluYW50IE51bWJlckZpZWxkRnVuZGFtZW50YWxVbml0cyBOdW1iZXJGaWVsZEludGVncmFsQmFzaXMgTnVtYmVyRmllbGROb3JtUmVwcmVzZW50YXRpdmVzIE51bWJlckZpZWxkUmVndWxhdG9yIE51bWJlckZpZWxkUm9vdHNPZlVuaXR5IE51bWJlckZpZWxkU2lnbmF0dXJlIE51bWJlckZvcm0gTnVtYmVyRm9ybWF0IE51bWJlckxpbmVQbG90IE51bWJlck1hcmtzIE51bWJlck11bHRpcGxpZXIgTnVtYmVyUGFkZGluZyBOdW1iZXJQb2ludCBOdW1iZXJRIE51bWJlclNlcGFyYXRvciBOdW1iZXJTaWducyBOdW1iZXJTdHJpbmcgTnVtZXJhdG9yIE51bWVyYXRvckRlbm9taW5hdG9yIE51bWVyaWNhbE9yZGVyIE51bWVyaWNhbFNvcnQgTnVtZXJpY0FycmF5IE51bWVyaWNBcnJheVEgTnVtZXJpY0FycmF5VHlwZSBOdW1lcmljRnVuY3Rpb24gTnVtZXJpY1EgTnV0dGFsbFdpbmRvdyBOVmFsdWVzIE55cXVpc3RHcmlkTGluZXMgTnlxdWlzdFBsb3QnICtcbiAgICAgICdPIE9ic2VydmFiaWxpdHlHcmFtaWFuIE9ic2VydmFiaWxpdHlNYXRyaXggT2JzZXJ2YWJsZURlY29tcG9zaXRpb24gT2JzZXJ2YWJsZU1vZGVsUSBPY2VhbkRhdGEgT2N0YWhlZHJvbiBPZGRRIE9mZiBPZmZzZXQgT0xFRGF0YSBPbiBPTmFuR3JvdXBPTiBPbmNlIE9uZUlkZW50aXR5IE9wYWNpdHkgT3BhY2l0eUZ1bmN0aW9uIE9wYWNpdHlGdW5jdGlvblNjYWxpbmcgT3BlbiBPcGVuQXBwZW5kIE9wZW5lciBPcGVuZXJCb3ggT3BlbmVyQm94T3B0aW9ucyBPcGVuZXJWaWV3IE9wZW5GdW5jdGlvbkluc3BlY3RvclBhY2tldCBPcGVuaW5nIE9wZW5SZWFkIE9wZW5TcGVjaWFsT3B0aW9ucyBPcGVuVGVtcG9yYXJ5IE9wZW5Xcml0ZSBPcGVyYXRlIE9wZXJhdGluZ1N5c3RlbSBPcHRpbXVtRmxvd0RhdGEgT3B0aW9uYWwgT3B0aW9uYWxFbGVtZW50IE9wdGlvbkluc3BlY3RvclNldHRpbmdzIE9wdGlvblEgT3B0aW9ucyBPcHRpb25zUGFja2V0IE9wdGlvbnNQYXR0ZXJuIE9wdGlvblZhbHVlIE9wdGlvblZhbHVlQm94IE9wdGlvblZhbHVlQm94T3B0aW9ucyBPciBPcmFuZ2UgT3JkZXIgT3JkZXJEaXN0cmlidXRpb24gT3JkZXJlZFEgT3JkZXJpbmcgT3JkZXJpbmdCeSBPcmRlcmluZ0xheWVyIE9yZGVybGVzcyBPcmRlcmxlc3NQYXR0ZXJuU2VxdWVuY2UgT3Juc3RlaW5VaGxlbmJlY2tQcm9jZXNzIE9ydGhvZ29uYWxpemUgT3J0aG9nb25hbE1hdHJpeFEgT3V0IE91dGVyIE91dGVyUG9seWdvbiBPdXRlclBvbHloZWRyb24gT3V0cHV0QXV0b092ZXJ3cml0ZSBPdXRwdXRDb250cm9sbGFiaWxpdHlNYXRyaXggT3V0cHV0Q29udHJvbGxhYmxlTW9kZWxRIE91dHB1dEZvcm0gT3V0cHV0Rm9ybURhdGEgT3V0cHV0R3JvdXBpbmcgT3V0cHV0TWF0aEVkaXRFeHByZXNzaW9uIE91dHB1dE5hbWVQYWNrZXQgT3V0cHV0UmVzcG9uc2UgT3V0cHV0U2l6ZUxpbWl0IE91dHB1dFN0cmVhbSBPdmVyIE92ZXJCYXIgT3ZlckRvdCBPdmVyZmxvdyBPdmVySGF0IE92ZXJsYXBzIE92ZXJsYXkgT3ZlcmxheUJveCBPdmVybGF5Qm94T3B0aW9ucyBPdmVyc2NyaXB0IE92ZXJzY3JpcHRCb3ggT3ZlcnNjcmlwdEJveE9wdGlvbnMgT3ZlclRpbGRlIE92ZXJWZWN0b3IgT3ZlcndyaXRlVGFyZ2V0IE93ZW5UIE93blZhbHVlcycgK1xuICAgICAgJ1BhY2thZ2UgUGFja2luZ01ldGhvZCBQYWRkZWRGb3JtIFBhZGRpbmcgUGFkZGluZ0xheWVyIFBhZGRpbmdTaXplIFBhZGVBcHByb3hpbWFudCBQYWRMZWZ0IFBhZFJpZ2h0IFBhZ2VCcmVha0Fib3ZlIFBhZ2VCcmVha0JlbG93IFBhZ2VCcmVha1dpdGhpbiBQYWdlRm9vdGVyTGluZXMgUGFnZUZvb3RlcnMgUGFnZUhlYWRlckxpbmVzIFBhZ2VIZWFkZXJzIFBhZ2VIZWlnaHQgUGFnZVJhbmtDZW50cmFsaXR5IFBhZ2VUaGVtZSBQYWdlV2lkdGggUGFnaW5hdGlvbiBQYWlyZWRCYXJDaGFydCBQYWlyZWRIaXN0b2dyYW0gUGFpcmVkU21vb3RoSGlzdG9ncmFtIFBhaXJlZFRUZXN0IFBhaXJlZFpUZXN0IFBhbGV0dGVOb3RlYm9vayBQYWxldHRlUGF0aCBQYWxpbmRyb21lUSBQYW5lIFBhbmVCb3ggUGFuZUJveE9wdGlvbnMgUGFuZWwgUGFuZWxCb3ggUGFuZWxCb3hPcHRpb25zIFBhbmVsZWQgUGFuZVNlbGVjdG9yIFBhbmVTZWxlY3RvckJveCBQYW5lU2VsZWN0b3JCb3hPcHRpb25zIFBhcGVyV2lkdGggUGFyYWJvbGljQ3lsaW5kZXJEIFBhcmFncmFwaEluZGVudCBQYXJhZ3JhcGhTcGFjaW5nIFBhcmFsbGVsQXJyYXkgUGFyYWxsZWxDb21iaW5lIFBhcmFsbGVsRG8gUGFyYWxsZWxlcGlwZWQgUGFyYWxsZWxFdmFsdWF0ZSBQYXJhbGxlbGl6YXRpb24gUGFyYWxsZWxpemUgUGFyYWxsZWxNYXAgUGFyYWxsZWxOZWVkcyBQYXJhbGxlbG9ncmFtIFBhcmFsbGVsUHJvZHVjdCBQYXJhbGxlbFN1Ym1pdCBQYXJhbGxlbFN1bSBQYXJhbGxlbFRhYmxlIFBhcmFsbGVsVHJ5IFBhcmFtZXRlciBQYXJhbWV0ZXJFc3RpbWF0b3IgUGFyYW1ldGVyTWl4dHVyZURpc3RyaWJ1dGlvbiBQYXJhbWV0ZXJWYXJpYWJsZXMgUGFyYW1ldHJpY0Z1bmN0aW9uIFBhcmFtZXRyaWNORFNvbHZlIFBhcmFtZXRyaWNORFNvbHZlVmFsdWUgUGFyYW1ldHJpY1Bsb3QgUGFyYW1ldHJpY1Bsb3QzRCBQYXJhbWV0cmljUmVnaW9uIFBhcmVudEJveCBQYXJlbnRDZWxsIFBhcmVudENvbm5lY3QgUGFyZW50RGlyZWN0b3J5IFBhcmVudEZvcm0gUGFyZW50aGVzaXplIFBhcmVudExpc3QgUGFyZW50Tm90ZWJvb2sgUGFyZXRvRGlzdHJpYnV0aW9uIFBhcmV0b1BpY2thbmRzRGlzdHJpYnV0aW9uIFBhcmtEYXRhIFBhcnQgUGFydEJlaGF2aW9yIFBhcnRpYWxDb3JyZWxhdGlvbkZ1bmN0aW9uIFBhcnRpYWxEIFBhcnRpY2xlQWNjZWxlcmF0b3JEYXRhIFBhcnRpY2xlRGF0YSBQYXJ0aXRpb24gUGFydGl0aW9uR3JhbnVsYXJpdHkgUGFydGl0aW9uc1AgUGFydGl0aW9uc1EgUGFydExheWVyIFBhcnRPZlNwZWVjaCBQYXJ0UHJvdGVjdGlvbiBQYXJ6ZW5XaW5kb3cgUGFzY2FsRGlzdHJpYnV0aW9uIFBhc3NFdmVudHNEb3duIFBhc3NFdmVudHNVcCBQYXN0ZSBQYXN0ZUF1dG9RdW90ZUNoYXJhY3RlcnMgUGFzdGVCb3hGb3JtSW5saW5lQ2VsbHMgUGFzdGVCdXR0b24gUGF0aCBQYXRoR3JhcGggUGF0aEdyYXBoUSBQYXR0ZXJuIFBhdHRlcm5TZXF1ZW5jZSBQYXR0ZXJuVGVzdCBQYXVsaU1hdHJpeCBQYXVsV2F2ZWxldCBQYXVzZSBQYXVzZWRUaW1lIFBERiBQZWFrRGV0ZWN0IFBlYW5vQ3VydmUgUGVhcnNvbkNoaVNxdWFyZVRlc3QgUGVhcnNvbkNvcnJlbGF0aW9uVGVzdCBQZWFyc29uRGlzdHJpYnV0aW9uIFBlcmNlbnRGb3JtIFBlcmZlY3ROdW1iZXIgUGVyZmVjdE51bWJlclEgUGVyZm9ybWFuY2VHb2FsIFBlcmltZXRlciBQZXJpb2RpY0JvdW5kYXJ5Q29uZGl0aW9uIFBlcmlvZGljSW50ZXJwb2xhdGlvbiBQZXJpb2RvZ3JhbSBQZXJpb2RvZ3JhbUFycmF5IFBlcm1hbmVudCBQZXJtaXNzaW9ucyBQZXJtaXNzaW9uc0dyb3VwIFBlcm1pc3Npb25zR3JvdXBNZW1iZXJRIFBlcm1pc3Npb25zR3JvdXBzIFBlcm1pc3Npb25zS2V5IFBlcm1pc3Npb25zS2V5cyBQZXJtdXRhdGlvbkN5Y2xlcyBQZXJtdXRhdGlvbkN5Y2xlc1EgUGVybXV0YXRpb25Hcm91cCBQZXJtdXRhdGlvbkxlbmd0aCBQZXJtdXRhdGlvbkxpc3QgUGVybXV0YXRpb25MaXN0USBQZXJtdXRhdGlvbk1heCBQZXJtdXRhdGlvbk1pbiBQZXJtdXRhdGlvbk9yZGVyIFBlcm11dGF0aW9uUG93ZXIgUGVybXV0YXRpb25Qcm9kdWN0IFBlcm11dGF0aW9uUmVwbGFjZSBQZXJtdXRhdGlvbnMgUGVybXV0YXRpb25TdXBwb3J0IFBlcm11dGUgUGVyb25hTWFsaWtGaWx0ZXIgUGVycGVuZGljdWxhciBQZXJwZW5kaWN1bGFyQmlzZWN0b3IgUGVyc2lzdGVuY2VMb2NhdGlvbiBQZXJzaXN0ZW5jZVRpbWUgUGVyc2lzdGVudE9iamVjdCBQZXJzaXN0ZW50T2JqZWN0cyBQZXJzaXN0ZW50VmFsdWUgUGVyc29uRGF0YSBQRVJURGlzdHJpYnV0aW9uIFBldGVyc2VuR3JhcGggUGhhc2VNYXJnaW5zIFBoYXNlUmFuZ2UgUGh5c2ljYWxTeXN0ZW1EYXRhIFBpIFBpY2sgUElERGF0YSBQSUREZXJpdmF0aXZlRmlsdGVyIFBJREZlZWRmb3J3YXJkIFBJRFR1bmUgUGllY2V3aXNlIFBpZWNld2lzZUV4cGFuZCBQaWVDaGFydCBQaWVDaGFydDNEIFBpbGxhaVRyYWNlIFBpbGxhaVRyYWNlVGVzdCBQaW5nVGltZSBQaW5rIFBpdGNoUmVjb2duaXplIFBpdm90aW5nIFBpeGVsQ29uc3RyYWluZWQgUGl4ZWxWYWx1ZSBQaXhlbFZhbHVlUG9zaXRpb25zIFBsYWNlZCBQbGFjZWhvbGRlciBQbGFjZWhvbGRlclJlcGxhY2UgUGxhaW4gUGxhbmFyQW5nbGUgUGxhbmFyR3JhcGggUGxhbmFyR3JhcGhRIFBsYW5ja1JhZGlhdGlvbkxhdyBQbGFuZUN1cnZlRGF0YSBQbGFuZXRhcnlNb29uRGF0YSBQbGFuZXREYXRhIFBsYW50RGF0YSBQbGF5IFBsYXlSYW5nZSBQbG90IFBsb3QzRCBQbG90M01hdHJpeCBQbG90RGl2aXNpb24gUGxvdEpvaW5lZCBQbG90TGFiZWwgUGxvdExhYmVscyBQbG90TGF5b3V0IFBsb3RMZWdlbmRzIFBsb3RNYXJrZXJzIFBsb3RQb2ludHMgUGxvdFJhbmdlIFBsb3RSYW5nZUNsaXBwaW5nIFBsb3RSYW5nZUNsaXBQbGFuZXNTdHlsZSBQbG90UmFuZ2VQYWRkaW5nIFBsb3RSZWdpb24gUGxvdFN0eWxlIFBsb3RUaGVtZSBQbHVyYWxpemUgUGx1cyBQbHVzTWludXMgUG9jaGhhbW1lciBQb2RTdGF0ZXMgUG9kV2lkdGggUG9pbnQgUG9pbnQzREJveCBQb2ludDNEQm94T3B0aW9ucyBQb2ludEJveCBQb2ludEJveE9wdGlvbnMgUG9pbnRGaWd1cmVDaGFydCBQb2ludExlZ2VuZCBQb2ludFNpemUgUG9pc3NvbkNvbnN1bERpc3RyaWJ1dGlvbiBQb2lzc29uRGlzdHJpYnV0aW9uIFBvaXNzb25Qcm9jZXNzIFBvaXNzb25XaW5kb3cgUG9sYXJBeGVzIFBvbGFyQXhlc09yaWdpbiBQb2xhckdyaWRMaW5lcyBQb2xhclBsb3QgUG9sYXJUaWNrcyBQb2xlWmVyb01hcmtlcnMgUG9seWFBZXBwbGlEaXN0cmlidXRpb24gUG9seUdhbW1hIFBvbHlnb24gUG9seWdvbjNEQm94IFBvbHlnb24zREJveE9wdGlvbnMgUG9seWdvbmFsTnVtYmVyIFBvbHlnb25BbmdsZSBQb2x5Z29uQm94IFBvbHlnb25Cb3hPcHRpb25zIFBvbHlnb25Db29yZGluYXRlcyBQb2x5Z29uRGVjb21wb3NpdGlvbiBQb2x5Z29uSG9sZVNjYWxlIFBvbHlnb25JbnRlcnNlY3Rpb25zIFBvbHlnb25TY2FsZSBQb2x5aGVkcm9uIFBvbHloZWRyb25BbmdsZSBQb2x5aGVkcm9uQ29vcmRpbmF0ZXMgUG9seWhlZHJvbkRhdGEgUG9seWhlZHJvbkRlY29tcG9zaXRpb24gUG9seWhlZHJvbkdlbnVzIFBvbHlMb2cgUG9seW5vbWlhbEV4dGVuZGVkR0NEIFBvbHlub21pYWxGb3JtIFBvbHlub21pYWxHQ0QgUG9seW5vbWlhbExDTSBQb2x5bm9taWFsTW9kIFBvbHlub21pYWxRIFBvbHlub21pYWxRdW90aWVudCBQb2x5bm9taWFsUXVvdGllbnRSZW1haW5kZXIgUG9seW5vbWlhbFJlZHVjZSBQb2x5bm9taWFsUmVtYWluZGVyIFBvbHlub21pYWxzIFBvb2xpbmdMYXllciBQb3B1cE1lbnUgUG9wdXBNZW51Qm94IFBvcHVwTWVudUJveE9wdGlvbnMgUG9wdXBWaWV3IFBvcHVwV2luZG93IFBvc2l0aW9uIFBvc2l0aW9uSW5kZXggUG9zaXRpdmUgUG9zaXRpdmVEZWZpbml0ZU1hdHJpeFEgUG9zaXRpdmVJbnRlZ2VycyBQb3NpdGl2ZVJhdGlvbmFscyBQb3NpdGl2ZVJlYWxzIFBvc2l0aXZlU2VtaWRlZmluaXRlTWF0cml4USBQb3NzaWJsZVplcm9RIFBvc3RmaXggUG9zdFNjcmlwdCBQb3dlciBQb3dlckRpc3RyaWJ1dGlvbiBQb3dlckV4cGFuZCBQb3dlck1vZCBQb3dlck1vZExpc3QgUG93ZXJSYW5nZSBQb3dlclNwZWN0cmFsRGVuc2l0eSBQb3dlcnNSZXByZXNlbnRhdGlvbnMgUG93ZXJTeW1tZXRyaWNQb2x5bm9taWFsIFByZWNlZGVuY2UgUHJlY2VkZW5jZUZvcm0gUHJlY2VkZXMgUHJlY2VkZXNFcXVhbCBQcmVjZWRlc1NsYW50RXF1YWwgUHJlY2VkZXNUaWxkZSBQcmVjaXNpb24gUHJlY2lzaW9uR29hbCBQcmVEZWNyZW1lbnQgUHJlZGljdCBQcmVkaWN0aW9uUm9vdCBQcmVkaWN0b3JGdW5jdGlvbiBQcmVkaWN0b3JJbmZvcm1hdGlvbiBQcmVkaWN0b3JNZWFzdXJlbWVudHMgUHJlZGljdG9yTWVhc3VyZW1lbnRzT2JqZWN0IFByZWVtcHRQcm90ZWN0IFByZWZlcmVuY2VzUGF0aCBQcmVmaXggUHJlSW5jcmVtZW50IFByZXBlbmQgUHJlcGVuZExheWVyIFByZXBlbmRUbyBQcmVwcm9jZXNzaW5nUnVsZXMgUHJlc2VydmVDb2xvciBQcmVzZXJ2ZUltYWdlT3B0aW9ucyBQcmV2aW91cyBQcmV2aW91c0NlbGwgUHJldmlvdXNEYXRlIFByaWNlR3JhcGhEaXN0cmlidXRpb24gUHJpbWFyeVBsYWNlaG9sZGVyIFByaW1lIFByaW1lTnUgUHJpbWVPbWVnYSBQcmltZVBpIFByaW1lUG93ZXJRIFByaW1lUSBQcmltZXMgUHJpbWVaZXRhUCBQcmltaXRpdmVQb2x5bm9taWFsUSBQcmltaXRpdmVSb290IFByaW1pdGl2ZVJvb3RMaXN0IFByaW5jaXBhbENvbXBvbmVudHMgUHJpbmNpcGFsVmFsdWUgUHJpbnQgUHJpbnRhYmxlQVNDSUlRIFByaW50QWN0aW9uIFByaW50Rm9ybSBQcmludGluZ0NvcGllcyBQcmludGluZ09wdGlvbnMgUHJpbnRpbmdQYWdlUmFuZ2UgUHJpbnRpbmdTdGFydGluZ1BhZ2VOdW1iZXIgUHJpbnRpbmdTdHlsZUVudmlyb25tZW50IFByaW50b3V0M0QgUHJpbnRvdXQzRFByZXZpZXdlciBQcmludFByZWNpc2lvbiBQcmludFRlbXBvcmFyeSBQcmlzbSBQcmlzbUJveCBQcmlzbUJveE9wdGlvbnMgUHJpdmF0ZUNlbGxPcHRpb25zIFByaXZhdGVFdmFsdWF0aW9uT3B0aW9ucyBQcml2YXRlRm9udE9wdGlvbnMgUHJpdmF0ZUZyb250RW5kT3B0aW9ucyBQcml2YXRlS2V5IFByaXZhdGVOb3RlYm9va09wdGlvbnMgUHJpdmF0ZVBhdGhzIFByb2JhYmlsaXR5IFByb2JhYmlsaXR5RGlzdHJpYnV0aW9uIFByb2JhYmlsaXR5UGxvdCBQcm9iYWJpbGl0eVByIFByb2JhYmlsaXR5U2NhbGVQbG90IFByb2JpdE1vZGVsRml0IFByb2Nlc3NDb25uZWN0aW9uIFByb2Nlc3NEaXJlY3RvcnkgUHJvY2Vzc0Vudmlyb25tZW50IFByb2Nlc3NlcyBQcm9jZXNzRXN0aW1hdG9yIFByb2Nlc3NJbmZvcm1hdGlvbiBQcm9jZXNzT2JqZWN0IFByb2Nlc3NQYXJhbWV0ZXJBc3N1bXB0aW9ucyBQcm9jZXNzUGFyYW1ldGVyUSBQcm9jZXNzU3RhdGVEb21haW4gUHJvY2Vzc1N0YXR1cyBQcm9jZXNzVGltZURvbWFpbiBQcm9kdWN0IFByb2R1Y3REaXN0cmlidXRpb24gUHJvZHVjdExvZyBQcm9ncmVzc0luZGljYXRvciBQcm9ncmVzc0luZGljYXRvckJveCBQcm9ncmVzc0luZGljYXRvckJveE9wdGlvbnMgUHJvamVjdGlvbiBQcm9sb2cgUHJvbXB0Rm9ybSBQcm9vZk9iamVjdCBQcm9wZXJ0aWVzIFByb3BlcnR5IFByb3BlcnR5TGlzdCBQcm9wZXJ0eVZhbHVlIFByb3BvcnRpb24gUHJvcG9ydGlvbmFsIFByb3RlY3QgUHJvdGVjdGVkIFByb3RlaW5EYXRhIFBydW5pbmcgUHNldWRvSW52ZXJzZSBQc3ljaHJvbWV0cmljUHJvcGVydHlEYXRhIFB1YmxpY0tleSBQdWJsaXNoZXJJRCBQdWxzYXJEYXRhIFB1bmN0dWF0aW9uQ2hhcmFjdGVyIFB1cnBsZSBQdXQgUHV0QXBwZW5kIFB5cmFtaWQgUHlyYW1pZEJveCBQeXJhbWlkQm94T3B0aW9ucycgK1xuICAgICAgJ1FCaW5vbWlhbCBRRmFjdG9yaWFsIFFHYW1tYSBRSHlwZXJnZW9tZXRyaWNQRlEgUW5EaXNwZXJzaW9uIFFQb2NoaGFtbWVyIFFQb2x5R2FtbWEgUVJEZWNvbXBvc2l0aW9uIFF1YWRyYXRpY0lycmF0aW9uYWxRIFF1YWRyYXRpY09wdGltaXphdGlvbiBRdWFudGlsZSBRdWFudGlsZVBsb3QgUXVhbnRpdHkgUXVhbnRpdHlBcnJheSBRdWFudGl0eURpc3RyaWJ1dGlvbiBRdWFudGl0eUZvcm0gUXVhbnRpdHlNYWduaXR1ZGUgUXVhbnRpdHlRIFF1YW50aXR5VW5pdCBRdWFudGl0eVZhcmlhYmxlIFF1YW50aXR5VmFyaWFibGVDYW5vbmljYWxVbml0IFF1YW50aXR5VmFyaWFibGVEaW1lbnNpb25zIFF1YW50aXR5VmFyaWFibGVJZGVudGlmaWVyIFF1YW50aXR5VmFyaWFibGVQaHlzaWNhbFF1YW50aXR5IFF1YXJ0aWNzIFF1YXJ0aWxlRGV2aWF0aW9uIFF1YXJ0aWxlcyBRdWFydGlsZVNrZXduZXNzIFF1ZXJ5IFF1ZXVlaW5nTmV0d29ya1Byb2Nlc3MgUXVldWVpbmdQcm9jZXNzIFF1ZXVlUHJvcGVydGllcyBRdWlldCBRdWl0IFF1b3RpZW50IFF1b3RpZW50UmVtYWluZGVyJyArXG4gICAgICAnUmFkaWFsR3JhZGllbnRJbWFnZSBSYWRpYWxpdHlDZW50cmFsaXR5IFJhZGljYWxCb3ggUmFkaWNhbEJveE9wdGlvbnMgUmFkaW9CdXR0b24gUmFkaW9CdXR0b25CYXIgUmFkaW9CdXR0b25Cb3ggUmFkaW9CdXR0b25Cb3hPcHRpb25zIFJhZG9uIFJhZG9uVHJhbnNmb3JtIFJhbWFudWphblRhdSBSYW1hbnVqYW5UYXVMIFJhbWFudWphblRhdVRoZXRhIFJhbWFudWphblRhdVogUmFtcCBSYW5kb20gUmFuZG9tQ2hvaWNlIFJhbmRvbUNvbG9yIFJhbmRvbUNvbXBsZXggUmFuZG9tRW50aXR5IFJhbmRvbUZ1bmN0aW9uIFJhbmRvbUdlb1Bvc2l0aW9uIFJhbmRvbUdyYXBoIFJhbmRvbUltYWdlIFJhbmRvbUluc3RhbmNlIFJhbmRvbUludGVnZXIgUmFuZG9tUGVybXV0YXRpb24gUmFuZG9tUG9pbnQgUmFuZG9tUG9seWdvbiBSYW5kb21Qb2x5aGVkcm9uIFJhbmRvbVByaW1lIFJhbmRvbVJlYWwgUmFuZG9tU2FtcGxlIFJhbmRvbVNlZWQgUmFuZG9tU2VlZGluZyBSYW5kb21WYXJpYXRlIFJhbmRvbVdhbGtQcm9jZXNzIFJhbmRvbVdvcmQgUmFuZ2UgUmFuZ2VGaWx0ZXIgUmFuZ2VTcGVjaWZpY2F0aW9uIFJhbmtlZE1heCBSYW5rZWRNaW4gUmFyZXJQcm9iYWJpbGl0eSBSYXN0ZXIgUmFzdGVyM0QgUmFzdGVyM0RCb3ggUmFzdGVyM0RCb3hPcHRpb25zIFJhc3RlckFycmF5IFJhc3RlckJveCBSYXN0ZXJCb3hPcHRpb25zIFJhc3Rlcml6ZSBSYXN0ZXJTaXplIFJhdGlvbmFsIFJhdGlvbmFsRnVuY3Rpb25zIFJhdGlvbmFsaXplIFJhdGlvbmFscyBSYXRpb3MgUmF3QXJyYXkgUmF3Qm94ZXMgUmF3RGF0YSBSYXdNZWRpdW0gUmF5bGVpZ2hEaXN0cmlidXRpb24gUmUgUmVhZCBSZWFkQnl0ZUFycmF5IFJlYWRMaW5lIFJlYWRMaXN0IFJlYWRQcm90ZWN0ZWQgUmVhZFN0cmluZyBSZWFsIFJlYWxBYnMgUmVhbEJsb2NrRGlhZ29uYWxGb3JtIFJlYWxEaWdpdHMgUmVhbEV4cG9uZW50IFJlYWxzIFJlYWxTaWduIFJlYXAgUmVjb2duaXRpb25QcmlvciBSZWNvZ25pdGlvblRocmVzaG9sZCBSZWNvcmQgUmVjb3JkTGlzdHMgUmVjb3JkU2VwYXJhdG9ycyBSZWN0YW5nbGUgUmVjdGFuZ2xlQm94IFJlY3RhbmdsZUJveE9wdGlvbnMgUmVjdGFuZ2xlQ2hhcnQgUmVjdGFuZ2xlQ2hhcnQzRCBSZWN0YW5ndWxhclJlcGVhdGluZ0VsZW1lbnQgUmVjdXJyZW5jZUZpbHRlciBSZWN1cnJlbmNlVGFibGUgUmVjdXJyaW5nRGlnaXRzRm9ybSBSZWQgUmVkdWNlIFJlZkJveCBSZWZlcmVuY2VMaW5lU3R5bGUgUmVmZXJlbmNlTWFya2VycyBSZWZlcmVuY2VNYXJrZXJTdHlsZSBSZWZpbmUgUmVmbGVjdGlvbk1hdHJpeCBSZWZsZWN0aW9uVHJhbnNmb3JtIFJlZnJlc2ggUmVmcmVzaFJhdGUgUmVnaW9uIFJlZ2lvbkJpbmFyaXplIFJlZ2lvbkJvdW5kYXJ5IFJlZ2lvbkJvdW5kcyBSZWdpb25DZW50cm9pZCBSZWdpb25EaWZmZXJlbmNlIFJlZ2lvbkRpbWVuc2lvbiBSZWdpb25EaXNqb2ludCBSZWdpb25EaXN0YW5jZSBSZWdpb25EaXN0YW5jZUZ1bmN0aW9uIFJlZ2lvbkVtYmVkZGluZ0RpbWVuc2lvbiBSZWdpb25FcXVhbCBSZWdpb25GdW5jdGlvbiBSZWdpb25JbWFnZSBSZWdpb25JbnRlcnNlY3Rpb24gUmVnaW9uTWVhc3VyZSBSZWdpb25NZW1iZXIgUmVnaW9uTWVtYmVyRnVuY3Rpb24gUmVnaW9uTW9tZW50IFJlZ2lvbk5lYXJlc3QgUmVnaW9uTmVhcmVzdEZ1bmN0aW9uIFJlZ2lvblBsb3QgUmVnaW9uUGxvdDNEIFJlZ2lvblByb2R1Y3QgUmVnaW9uUSBSZWdpb25SZXNpemUgUmVnaW9uU2l6ZSBSZWdpb25TeW1tZXRyaWNEaWZmZXJlbmNlIFJlZ2lvblVuaW9uIFJlZ2lvbldpdGhpbiBSZWdpc3RlckV4dGVybmFsRXZhbHVhdG9yIFJlZ3VsYXJFeHByZXNzaW9uIFJlZ3VsYXJpemF0aW9uIFJlZ3VsYXJseVNhbXBsZWRRIFJlZ3VsYXJQb2x5Z29uIFJlSW0gUmVJbUxhYmVscyBSZUltUGxvdCBSZUltU3R5bGUgUmVpbnN0YWxsIFJlbGF0aW9uYWxEYXRhYmFzZSBSZWxhdGlvbkdyYXBoIFJlbGVhc2UgUmVsZWFzZUhvbGQgUmVsaWFiaWxpdHlEaXN0cmlidXRpb24gUmVsaWVmSW1hZ2UgUmVsaWVmUGxvdCBSZW1vdGVBdXRob3JpemF0aW9uQ2FjaGluZyBSZW1vdGVDb25uZWN0IFJlbW90ZUNvbm5lY3Rpb25PYmplY3QgUmVtb3RlRmlsZSBSZW1vdGVSdW4gUmVtb3RlUnVuUHJvY2VzcyBSZW1vdmUgUmVtb3ZlQWxwaGFDaGFubmVsIFJlbW92ZUFzeW5jaHJvbm91c1Rhc2sgUmVtb3ZlQXVkaW9TdHJlYW0gUmVtb3ZlQmFja2dyb3VuZCBSZW1vdmVDaGFubmVsTGlzdGVuZXIgUmVtb3ZlQ2hhbm5lbFN1YnNjcmliZXJzIFJlbW92ZWQgUmVtb3ZlRGlhY3JpdGljcyBSZW1vdmVJbnB1dFN0cmVhbU1ldGhvZCBSZW1vdmVPdXRwdXRTdHJlYW1NZXRob2QgUmVtb3ZlUHJvcGVydHkgUmVtb3ZlU2NoZWR1bGVkVGFzayBSZW1vdmVVc2VycyBSZW5hbWVEaXJlY3RvcnkgUmVuYW1lRmlsZSBSZW5kZXJBbGwgUmVuZGVyaW5nT3B0aW9ucyBSZW5ld2FsUHJvY2VzcyBSZW5rb0NoYXJ0IFJlcGFpck1lc2ggUmVwZWF0ZWQgUmVwZWF0ZWROdWxsIFJlcGVhdGVkU3RyaW5nIFJlcGVhdGVkVGltaW5nIFJlcGVhdGluZ0VsZW1lbnQgUmVwbGFjZSBSZXBsYWNlQWxsIFJlcGxhY2VIZWxkUGFydCBSZXBsYWNlSW1hZ2VWYWx1ZSBSZXBsYWNlTGlzdCBSZXBsYWNlUGFydCBSZXBsYWNlUGl4ZWxWYWx1ZSBSZXBsYWNlUmVwZWF0ZWQgUmVwbGljYXRlTGF5ZXIgUmVxdWlyZWRQaHlzaWNhbFF1YW50aXRpZXMgUmVzYW1wbGluZyBSZXNhbXBsaW5nQWxnb3JpdGhtRGF0YSBSZXNhbXBsaW5nTWV0aG9kIFJlc2NhbGUgUmVzY2FsaW5nVHJhbnNmb3JtIFJlc2V0RGlyZWN0b3J5IFJlc2V0TWVudXNQYWNrZXQgUmVzZXRTY2hlZHVsZWRUYXNrIFJlc2hhcGVMYXllciBSZXNpZHVlIFJlc2l6ZUxheWVyIFJlc29sdmUgUmVzb3VyY2VBY3F1aXJlIFJlc291cmNlRGF0YSBSZXNvdXJjZUZ1bmN0aW9uIFJlc291cmNlT2JqZWN0IFJlc291cmNlUmVnaXN0ZXIgUmVzb3VyY2VSZW1vdmUgUmVzb3VyY2VTZWFyY2ggUmVzb3VyY2VTdWJtaXNzaW9uT2JqZWN0IFJlc291cmNlU3VibWl0IFJlc291cmNlU3lzdGVtQmFzZSBSZXNvdXJjZVVwZGF0ZSBSZXNwb25zZUZvcm0gUmVzdCBSZXN0YXJ0SW50ZXJ2YWwgUmVzdHJpY3RlZCBSZXN1bHRhbnQgUmVzdW1lUGFja2V0IFJldHVybiBSZXR1cm5FbnRlcnNJbnB1dCBSZXR1cm5FeHByZXNzaW9uUGFja2V0IFJldHVybklucHV0Rm9ybVBhY2tldCBSZXR1cm5QYWNrZXQgUmV0dXJuUmVjZWlwdEZ1bmN0aW9uIFJldHVyblRleHRQYWNrZXQgUmV2ZXJzZSBSZXZlcnNlQmlvcnRob2dvbmFsU3BsaW5lV2F2ZWxldCBSZXZlcnNlRWxlbWVudCBSZXZlcnNlRXF1aWxpYnJpdW0gUmV2ZXJzZUdyYXBoIFJldmVyc2VTb3J0IFJldmVyc2VTb3J0QnkgUmV2ZXJzZVVwRXF1aWxpYnJpdW0gUmV2b2x1dGlvbkF4aXMgUmV2b2x1dGlvblBsb3QzRCBSR0JDb2xvciBSaWNjYXRpU29sdmUgUmljZURpc3RyaWJ1dGlvbiBSaWRnZUZpbHRlciBSaWVtYW5uUiBSaWVtYW5uU2llZ2VsVGhldGEgUmllbWFublNpZWdlbFogUmllbWFublhpIFJpZmZsZSBSaWdodCBSaWdodEFycm93IFJpZ2h0QXJyb3dCYXIgUmlnaHRBcnJvd0xlZnRBcnJvdyBSaWdodENvbXBvc2l0aW9uIFJpZ2h0Q29zZXRSZXByZXNlbnRhdGl2ZSBSaWdodERvd25UZWVWZWN0b3IgUmlnaHREb3duVmVjdG9yIFJpZ2h0RG93blZlY3RvckJhciBSaWdodFRlZSBSaWdodFRlZUFycm93IFJpZ2h0VGVlVmVjdG9yIFJpZ2h0VHJpYW5nbGUgUmlnaHRUcmlhbmdsZUJhciBSaWdodFRyaWFuZ2xlRXF1YWwgUmlnaHRVcERvd25WZWN0b3IgUmlnaHRVcFRlZVZlY3RvciBSaWdodFVwVmVjdG9yIFJpZ2h0VXBWZWN0b3JCYXIgUmlnaHRWZWN0b3IgUmlnaHRWZWN0b3JCYXIgUmlza0FjaGlldmVtZW50SW1wb3J0YW5jZSBSaXNrUmVkdWN0aW9uSW1wb3J0YW5jZSBSb2dlcnNUYW5pbW90b0Rpc3NpbWlsYXJpdHkgUm9sbFBpdGNoWWF3QW5nbGVzIFJvbGxQaXRjaFlhd01hdHJpeCBSb21hbk51bWVyYWwgUm9vdCBSb290QXBwcm94aW1hbnQgUm9vdEludGVydmFscyBSb290TG9jdXNQbG90IFJvb3RNZWFuU3F1YXJlIFJvb3RPZlVuaXR5USBSb290UmVkdWNlIFJvb3RzIFJvb3RTdW0gUm90YXRlIFJvdGF0ZUxhYmVsIFJvdGF0ZUxlZnQgUm90YXRlUmlnaHQgUm90YXRpb25BY3Rpb24gUm90YXRpb25Cb3ggUm90YXRpb25Cb3hPcHRpb25zIFJvdGF0aW9uTWF0cml4IFJvdGF0aW9uVHJhbnNmb3JtIFJvdW5kIFJvdW5kSW1wbGllcyBSb3VuZGluZ1JhZGl1cyBSb3cgUm93QWxpZ25tZW50cyBSb3dCYWNrZ3JvdW5kcyBSb3dCb3ggUm93SGVpZ2h0cyBSb3dMaW5lcyBSb3dNaW5IZWlnaHQgUm93UmVkdWNlIFJvd3NFcXVhbCBSb3dTcGFjaW5ncyBSU29sdmUgUlNvbHZlVmFsdWUgUnVkaW5TaGFwaXJvIFJ1ZHZhbGlzR3JvdXBSdSBSdWxlIFJ1bGVDb25kaXRpb24gUnVsZURlbGF5ZWQgUnVsZUZvcm0gUnVsZVBsb3QgUnVsZXJVbml0cyBSdW4gUnVuUHJvY2VzcyBSdW5TY2hlZHVsZWRUYXNrIFJ1blRocm91Z2ggUnVudGltZUF0dHJpYnV0ZXMgUnVudGltZU9wdGlvbnMgUnVzc2VsbFJhb0Rpc3NpbWlsYXJpdHknICtcbiAgICAgICdTYW1lUSBTYW1lVGVzdCBTYW1wbGVkRW50aXR5Q2xhc3MgU2FtcGxlRGVwdGggU2FtcGxlZFNvdW5kRnVuY3Rpb24gU2FtcGxlZFNvdW5kTGlzdCBTYW1wbGVSYXRlIFNhbXBsaW5nUGVyaW9kIFNBUklNQVByb2Nlc3MgU0FSTUFQcm9jZXNzIFNBU1RyaWFuZ2xlIFNhdGVsbGl0ZURhdGEgU2F0aXNmaWFiaWxpdHlDb3VudCBTYXRpc2ZpYWJpbGl0eUluc3RhbmNlcyBTYXRpc2ZpYWJsZVEgU2F0dXJkYXkgU2F2ZSBTYXZlYWJsZSBTYXZlQXV0b0RlbGV0ZSBTYXZlQ29ubmVjdGlvbiBTYXZlRGVmaW5pdGlvbnMgU2F2aXR6a3lHb2xheU1hdHJpeCBTYXd0b290aFdhdmUgU2NhbGUgU2NhbGVkIFNjYWxlRGl2aXNpb25zIFNjYWxlZE1vdXNlUG9zaXRpb24gU2NhbGVPcmlnaW4gU2NhbGVQYWRkaW5nIFNjYWxlUmFuZ2VzIFNjYWxlUmFuZ2VTdHlsZSBTY2FsaW5nRnVuY3Rpb25zIFNjYWxpbmdNYXRyaXggU2NhbGluZ1RyYW5zZm9ybSBTY2FuIFNjaGVkdWxlZFRhc2sgU2NoZWR1bGVkVGFza0FjdGl2ZVEgU2NoZWR1bGVkVGFza0luZm9ybWF0aW9uIFNjaGVkdWxlZFRhc2tJbmZvcm1hdGlvbkRhdGEgU2NoZWR1bGVkVGFza09iamVjdCBTY2hlZHVsZWRUYXNrcyBTY2h1ckRlY29tcG9zaXRpb24gU2NpZW50aWZpY0Zvcm0gU2NpZW50aWZpY05vdGF0aW9uVGhyZXNob2xkIFNjb3JlckdpIFNjb3JlckdpUHJpbWUgU2NvcmVySGkgU2NvcmVySGlQcmltZSBTY3JlZW5SZWN0YW5nbGUgU2NyZWVuU3R5bGVFbnZpcm9ubWVudCBTY3JpcHRCYXNlbGluZVNoaWZ0cyBTY3JpcHRGb3JtIFNjcmlwdExldmVsIFNjcmlwdE1pblNpemUgU2NyaXB0UnVsZXMgU2NyaXB0U2l6ZU11bHRpcGxpZXJzIFNjcm9sbGJhcnMgU2Nyb2xsaW5nT3B0aW9ucyBTY3JvbGxQb3NpdGlvbiBTZWFyY2hBZGp1c3RtZW50IFNlYXJjaEluZGV4T2JqZWN0IFNlYXJjaEluZGljZXMgU2VhcmNoUXVlcnlTdHJpbmcgU2VhcmNoUmVzdWx0T2JqZWN0IFNlYyBTZWNoIFNlY2hEaXN0cmlidXRpb24gU2Vjb25kT3JkZXJDb25lT3B0aW1pemF0aW9uIFNlY3Rpb25Hcm91cGluZyBTZWN0b3JDaGFydCBTZWN0b3JDaGFydDNEIFNlY3Rvck9yaWdpbiBTZWN0b3JTcGFjaW5nIFNlY3VyZWRBdXRoZW50aWNhdGlvbktleSBTZWN1cmVkQXV0aGVudGljYXRpb25LZXlzIFNlZWRSYW5kb20gU2VsZWN0IFNlbGVjdGFibGUgU2VsZWN0Q29tcG9uZW50cyBTZWxlY3RlZENlbGxzIFNlbGVjdGVkTm90ZWJvb2sgU2VsZWN0Rmlyc3QgU2VsZWN0aW9uIFNlbGVjdGlvbkFuaW1hdGUgU2VsZWN0aW9uQ2VsbCBTZWxlY3Rpb25DZWxsQ3JlYXRlQ2VsbCBTZWxlY3Rpb25DZWxsRGVmYXVsdFN0eWxlIFNlbGVjdGlvbkNlbGxQYXJlbnRTdHlsZSBTZWxlY3Rpb25DcmVhdGVDZWxsIFNlbGVjdGlvbkRlYnVnZ2VyVGFnIFNlbGVjdGlvbkR1cGxpY2F0ZUNlbGwgU2VsZWN0aW9uRXZhbHVhdGUgU2VsZWN0aW9uRXZhbHVhdGVDcmVhdGVDZWxsIFNlbGVjdGlvbk1vdmUgU2VsZWN0aW9uUGxhY2Vob2xkZXIgU2VsZWN0aW9uU2V0U3R5bGUgU2VsZWN0V2l0aENvbnRlbnRzIFNlbGZMb29wcyBTZWxmTG9vcFN0eWxlIFNlbWFudGljSW1wb3J0IFNlbWFudGljSW1wb3J0U3RyaW5nIFNlbWFudGljSW50ZXJwcmV0YXRpb24gU2VtaWFsZ2VicmFpY0NvbXBvbmVudEluc3RhbmNlcyBTZW1pZGVmaW5pdGVPcHRpbWl6YXRpb24gU2VuZE1haWwgU2VuZE1lc3NhZ2UgU2VxdWVuY2UgU2VxdWVuY2VBbGlnbm1lbnQgU2VxdWVuY2VBdHRlbnRpb25MYXllciBTZXF1ZW5jZUNhc2VzIFNlcXVlbmNlQ291bnQgU2VxdWVuY2VGb2xkIFNlcXVlbmNlRm9sZExpc3QgU2VxdWVuY2VGb3JtIFNlcXVlbmNlSG9sZCBTZXF1ZW5jZUxhc3RMYXllciBTZXF1ZW5jZU1vc3RMYXllciBTZXF1ZW5jZVBvc2l0aW9uIFNlcXVlbmNlUHJlZGljdCBTZXF1ZW5jZVByZWRpY3RvckZ1bmN0aW9uIFNlcXVlbmNlUmVwbGFjZSBTZXF1ZW5jZVJlc3RMYXllciBTZXF1ZW5jZVJldmVyc2VMYXllciBTZXF1ZW5jZVNwbGl0IFNlcmllcyBTZXJpZXNDb2VmZmljaWVudCBTZXJpZXNEYXRhIFNlcnZpY2VDb25uZWN0IFNlcnZpY2VEaXNjb25uZWN0IFNlcnZpY2VFeGVjdXRlIFNlcnZpY2VPYmplY3QgU2VydmljZVJlcXVlc3QgU2VydmljZVJlc3BvbnNlIFNlcnZpY2VTdWJtaXQgU2Vzc2lvblN1Ym1pdCBTZXNzaW9uVGltZSBTZXQgU2V0QWNjdXJhY3kgU2V0QWxwaGFDaGFubmVsIFNldEF0dHJpYnV0ZXMgU2V0YmFja3MgU2V0Qm94Rm9ybU5hbWVzUGFja2V0IFNldENsb3VkRGlyZWN0b3J5IFNldENvb2tpZXMgU2V0RGVsYXllZCBTZXREaXJlY3RvcnkgU2V0RW52aXJvbm1lbnQgU2V0RXZhbHVhdGlvbk5vdGVib29rIFNldEZpbGVEYXRlIFNldEZpbGVMb2FkaW5nQ29udGV4dCBTZXROb3RlYm9va1N0YXR1c0xpbmUgU2V0T3B0aW9ucyBTZXRPcHRpb25zUGFja2V0IFNldFBlcm1pc3Npb25zIFNldFByZWNpc2lvbiBTZXRQcm9wZXJ0eSBTZXRTZWN1cmVkQXV0aGVudGljYXRpb25LZXkgU2V0U2VsZWN0ZWROb3RlYm9vayBTZXRTaGFyZWRGdW5jdGlvbiBTZXRTaGFyZWRWYXJpYWJsZSBTZXRTcGVlY2hQYXJhbWV0ZXJzUGFja2V0IFNldFN0cmVhbVBvc2l0aW9uIFNldFN5c3RlbU1vZGVsIFNldFN5c3RlbU9wdGlvbnMgU2V0dGVyIFNldHRlckJhciBTZXR0ZXJCb3ggU2V0dGVyQm94T3B0aW9ucyBTZXR0aW5nIFNldFVzZXJzIFNldFZhbHVlIFNoYWRpbmcgU2hhbGxvdyBTaGFubm9uV2F2ZWxldCBTaGFwaXJvV2lsa1Rlc3QgU2hhcmUgU2hhcmluZ0xpc3QgU2hhcnBlbiBTaGVhcmluZ01hdHJpeCBTaGVhcmluZ1RyYW5zZm9ybSBTaGVsbFJlZ2lvbiBTaGVuQ2FzdGFuTWF0cml4IFNoaWZ0ZWRHb21wZXJ0ekRpc3RyaWJ1dGlvbiBTaGlmdFJlZ2lzdGVyU2VxdWVuY2UgU2hvcnQgU2hvcnREb3duQXJyb3cgU2hvcnRlc3QgU2hvcnRlc3RNYXRjaCBTaG9ydGVzdFBhdGhGdW5jdGlvbiBTaG9ydExlZnRBcnJvdyBTaG9ydFJpZ2h0QXJyb3cgU2hvcnRUaW1lRm91cmllciBTaG9ydFRpbWVGb3VyaWVyRGF0YSBTaG9ydFVwQXJyb3cgU2hvdyBTaG93QXV0b0NvbnZlcnQgU2hvd0F1dG9TcGVsbENoZWNrIFNob3dBdXRvU3R5bGVzIFNob3dDZWxsQnJhY2tldCBTaG93Q2VsbExhYmVsIFNob3dDZWxsVGFncyBTaG93Q2xvc2VkQ2VsbEFyZWEgU2hvd0NvZGVBc3Npc3QgU2hvd0NvbnRlbnRzIFNob3dDb250cm9scyBTaG93Q3Vyc29yVHJhY2tlciBTaG93R3JvdXBPcGVuQ2xvc2VJY29uIFNob3dHcm91cE9wZW5lciBTaG93SW52aXNpYmxlQ2hhcmFjdGVycyBTaG93UGFnZUJyZWFrcyBTaG93UHJlZGljdGl2ZUludGVyZmFjZSBTaG93U2VsZWN0aW9uIFNob3dTaG9ydEJveEZvcm0gU2hvd1NwZWNpYWxDaGFyYWN0ZXJzIFNob3dTdHJpbmdDaGFyYWN0ZXJzIFNob3dTeW50YXhTdHlsZXMgU2hyaW5raW5nRGVsYXkgU2hyaW5rV3JhcEJvdW5kaW5nQm94IFNpZGVyZWFsVGltZSBTaWVnZWxUaGV0YSBTaWVnZWxUdWtleVRlc3QgU2llcnBpbnNraUN1cnZlIFNpZXJwaW5za2lNZXNoIFNpZ24gU2lnbmF0dXJlIFNpZ25lZFJhbmtUZXN0IFNpZ25lZFJlZ2lvbkRpc3RhbmNlIFNpZ25pZmljYW5jZUxldmVsIFNpZ25QYWRkaW5nIFNpZ25UZXN0IFNpbWlsYXJpdHlSdWxlcyBTaW1wbGVHcmFwaCBTaW1wbGVHcmFwaFEgU2ltcGxlUG9seWdvblEgU2ltcGxlUG9seWhlZHJvblEgU2ltcGxleCBTaW1wbGlmeSBTaW4gU2luYyBTaW5naE1hZGRhbGFEaXN0cmlidXRpb24gU2luZ2xlRXZhbHVhdGlvbiBTaW5nbGVMZXR0ZXJJdGFsaWNzIFNpbmdsZUxldHRlclN0eWxlIFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIFNpbmd1bGFyVmFsdWVMaXN0IFNpbmd1bGFyVmFsdWVQbG90IFNpbmd1bGFyVmFsdWVzIFNpbmggU2luaEludGVncmFsIFNpbkludGVncmFsIFNpeEpTeW1ib2wgU2tlbGV0b24gU2tlbGV0b25UcmFuc2Zvcm0gU2tlbGxhbURpc3RyaWJ1dGlvbiBTa2V3bmVzcyBTa2V3Tm9ybWFsRGlzdHJpYnV0aW9uIFNraW5TdHlsZSBTa2lwIFNsaWNlQ29udG91clBsb3QzRCBTbGljZURlbnNpdHlQbG90M0QgU2xpY2VEaXN0cmlidXRpb24gU2xpY2VWZWN0b3JQbG90M0QgU2xpZGVyIFNsaWRlcjJEIFNsaWRlcjJEQm94IFNsaWRlcjJEQm94T3B0aW9ucyBTbGlkZXJCb3ggU2xpZGVyQm94T3B0aW9ucyBTbGlkZVZpZXcgU2xvdCBTbG90U2VxdWVuY2UgU21hbGwgU21hbGxDaXJjbGUgU21hbGxlciBTbWl0aERlY29tcG9zaXRpb24gU21pdGhEZWxheUNvbXBlbnNhdG9yIFNtaXRoV2F0ZXJtYW5TaW1pbGFyaXR5IFNtb290aERlbnNpdHlIaXN0b2dyYW0gU21vb3RoSGlzdG9ncmFtIFNtb290aEhpc3RvZ3JhbTNEIFNtb290aEtlcm5lbERpc3RyaWJ1dGlvbiBTbkRpc3BlcnNpb24gU25pcHBldCBTbnViUG9seWhlZHJvbiBTb2NpYWxNZWRpYURhdGEgU29ja2V0IFNvY2tldENvbm5lY3QgU29ja2V0TGlzdGVuIFNvY2tldExpc3RlbmVyIFNvY2tldE9iamVjdCBTb2NrZXRPcGVuIFNvY2tldFJlYWRNZXNzYWdlIFNvY2tldFJlYWR5USBTb2NrZXRzIFNvY2tldFdhaXRBbGwgU29ja2V0V2FpdE5leHQgU29mdG1heExheWVyIFNva2FsU25lYXRoRGlzc2ltaWxhcml0eSBTb2xhckVjbGlwc2UgU29sYXJTeXN0ZW1GZWF0dXJlRGF0YSBTb2xpZEFuZ2xlIFNvbGlkRGF0YSBTb2xpZFJlZ2lvblEgU29sdmUgU29sdmVBbHdheXMgU29sdmVEZWxheWVkIFNvcnQgU29ydEJ5IFNvcnRlZEJ5IFNvcnRlZEVudGl0eUNsYXNzIFNvdW5kIFNvdW5kQW5kR3JhcGhpY3MgU291bmROb3RlIFNvdW5kVm9sdW1lIFNvdXJjZUxpbmsgU293IFNwYWNlIFNwYWNlQ3VydmVEYXRhIFNwYWNlRm9ybSBTcGFjZXIgU3BhY2luZ3MgU3BhbiBTcGFuQWRqdXN0bWVudHMgU3BhbkNoYXJhY3RlclJvdW5kaW5nIFNwYW5Gcm9tQWJvdmUgU3BhbkZyb21Cb3RoIFNwYW5Gcm9tTGVmdCBTcGFuTGluZVRoaWNrbmVzcyBTcGFuTWF4U2l6ZSBTcGFuTWluU2l6ZSBTcGFubmluZ0NoYXJhY3RlcnMgU3BhblN5bW1ldHJpYyBTcGFyc2VBcnJheSBTcGF0aWFsR3JhcGhEaXN0cmlidXRpb24gU3BhdGlhbE1lZGlhbiBTcGF0aWFsVHJhbnNmb3JtYXRpb25MYXllciBTcGVhayBTcGVha1RleHRQYWNrZXQgU3BlYXJtYW5SYW5rVGVzdCBTcGVhcm1hblJobyBTcGVjaWVzRGF0YSBTcGVjaWZpY2l0eUdvYWwgU3BlY3RyYWxMaW5lRGF0YSBTcGVjdHJvZ3JhbSBTcGVjdHJvZ3JhbUFycmF5IFNwZWN1bGFyaXR5IFNwZWVjaFJlY29nbml6ZSBTcGVlY2hTeW50aGVzaXplIFNwZWxsaW5nQ29ycmVjdGlvbiBTcGVsbGluZ0NvcnJlY3Rpb25MaXN0IFNwZWxsaW5nRGljdGlvbmFyaWVzIFNwZWxsaW5nRGljdGlvbmFyaWVzUGF0aCBTcGVsbGluZ09wdGlvbnMgU3BlbGxpbmdTdWdnZXN0aW9uc1BhY2tldCBTcGhlcmUgU3BoZXJlQm94IFNwaGVyZVBvaW50cyBTcGhlcmljYWxCZXNzZWxKIFNwaGVyaWNhbEJlc3NlbFkgU3BoZXJpY2FsSGFua2VsSDEgU3BoZXJpY2FsSGFua2VsSDIgU3BoZXJpY2FsSGFybW9uaWNZIFNwaGVyaWNhbFBsb3QzRCBTcGhlcmljYWxSZWdpb24gU3BoZXJpY2FsU2hlbGwgU3BoZXJvaWRhbEVpZ2VudmFsdWUgU3BoZXJvaWRhbEpvaW5pbmdGYWN0b3IgU3BoZXJvaWRhbFBTIFNwaGVyb2lkYWxQU1ByaW1lIFNwaGVyb2lkYWxRUyBTcGhlcm9pZGFsUVNQcmltZSBTcGhlcm9pZGFsUmFkaWFsRmFjdG9yIFNwaGVyb2lkYWxTMSBTcGhlcm9pZGFsUzFQcmltZSBTcGhlcm9pZGFsUzIgU3BoZXJvaWRhbFMyUHJpbWUgU3BsaWNlIFNwbGljZWREaXN0cmlidXRpb24gU3BsaW5lQ2xvc2VkIFNwbGluZURlZ3JlZSBTcGxpbmVLbm90cyBTcGxpbmVXZWlnaHRzIFNwbGl0IFNwbGl0QnkgU3Bva2VuU3RyaW5nIFNxcnQgU3FydEJveCBTcXJ0Qm94T3B0aW9ucyBTcXVhcmUgU3F1YXJlZEV1Y2xpZGVhbkRpc3RhbmNlIFNxdWFyZUZyZWVRIFNxdWFyZUludGVyc2VjdGlvbiBTcXVhcmVNYXRyaXhRIFNxdWFyZVJlcGVhdGluZ0VsZW1lbnQgU3F1YXJlc1IgU3F1YXJlU3Vic2V0IFNxdWFyZVN1YnNldEVxdWFsIFNxdWFyZVN1cGVyc2V0IFNxdWFyZVN1cGVyc2V0RXF1YWwgU3F1YXJlVW5pb24gU3F1YXJlV2F2ZSBTU1NUcmlhbmdsZSBTdGFiaWxpdHlNYXJnaW5zIFN0YWJpbGl0eU1hcmdpbnNTdHlsZSBTdGFibGVEaXN0cmlidXRpb24gU3RhY2sgU3RhY2tCZWdpbiBTdGFja0NvbXBsZXRlIFN0YWNrZWREYXRlTGlzdFBsb3QgU3RhY2tlZExpc3RQbG90IFN0YWNrSW5oaWJpdCBTdGFkaXVtU2hhcGUgU3RhbmRhcmRBdG1vc3BoZXJlRGF0YSBTdGFuZGFyZERldmlhdGlvbiBTdGFuZGFyZERldmlhdGlvbkZpbHRlciBTdGFuZGFyZEZvcm0gU3RhbmRhcmRpemUgU3RhbmRhcmRpemVkIFN0YW5kYXJkT2NlYW5EYXRhIFN0YW5kYnlEaXN0cmlidXRpb24gU3RhciBTdGFyQ2x1c3RlckRhdGEgU3RhckRhdGEgU3RhckdyYXBoIFN0YXJ0QXN5bmNocm9ub3VzVGFzayBTdGFydEV4dGVybmFsU2Vzc2lvbiBTdGFydGluZ1N0ZXBTaXplIFN0YXJ0T2ZMaW5lIFN0YXJ0T2ZTdHJpbmcgU3RhcnRQcm9jZXNzIFN0YXJ0U2NoZWR1bGVkVGFzayBTdGFydHVwU291bmQgU3RhcnRXZWJTZXNzaW9uIFN0YXRlRGltZW5zaW9ucyBTdGF0ZUZlZWRiYWNrR2FpbnMgU3RhdGVPdXRwdXRFc3RpbWF0b3IgU3RhdGVSZXNwb25zZSBTdGF0ZVNwYWNlTW9kZWwgU3RhdGVTcGFjZVJlYWxpemF0aW9uIFN0YXRlU3BhY2VUcmFuc2Zvcm0gU3RhdGVUcmFuc2Zvcm1hdGlvbkxpbmVhcml6ZSBTdGF0aW9uYXJ5RGlzdHJpYnV0aW9uIFN0YXRpb25hcnlXYXZlbGV0UGFja2V0VHJhbnNmb3JtIFN0YXRpb25hcnlXYXZlbGV0VHJhbnNmb3JtIFN0YXR1c0FyZWEgU3RhdHVzQ2VudHJhbGl0eSBTdGVwTW9uaXRvciBTdGVyZW9jaGVtaXN0cnlFbGVtZW50cyBTdGllbHRqZXNHYW1tYSBTdGlybGluZ1MxIFN0aXJsaW5nUzIgU3RvcEFzeW5jaHJvbm91c1Rhc2sgU3RvcHBpbmdQb3dlckRhdGEgU3RvcFNjaGVkdWxlZFRhc2sgU3RyYXRhVmFyaWFibGVzIFN0cmF0b25vdmljaFByb2Nlc3MgU3RyZWFtQ29sb3JGdW5jdGlvbiBTdHJlYW1Db2xvckZ1bmN0aW9uU2NhbGluZyBTdHJlYW1EZW5zaXR5UGxvdCBTdHJlYW1NYXJrZXJzIFN0cmVhbVBsb3QgU3RyZWFtUG9pbnRzIFN0cmVhbVBvc2l0aW9uIFN0cmVhbXMgU3RyZWFtU2NhbGUgU3RyZWFtU3R5bGUgU3RyaW5nIFN0cmluZ0JyZWFrIFN0cmluZ0J5dGVDb3VudCBTdHJpbmdDYXNlcyBTdHJpbmdDb250YWluc1EgU3RyaW5nQ291bnQgU3RyaW5nRGVsZXRlIFN0cmluZ0Ryb3AgU3RyaW5nRW5kc1EgU3RyaW5nRXhwcmVzc2lvbiBTdHJpbmdFeHRyYWN0IFN0cmluZ0Zvcm0gU3RyaW5nRm9ybWF0IFN0cmluZ0ZyZWVRIFN0cmluZ0luc2VydCBTdHJpbmdKb2luIFN0cmluZ0xlbmd0aCBTdHJpbmdNYXRjaFEgU3RyaW5nUGFkTGVmdCBTdHJpbmdQYWRSaWdodCBTdHJpbmdQYXJ0IFN0cmluZ1BhcnRpdGlvbiBTdHJpbmdQb3NpdGlvbiBTdHJpbmdRIFN0cmluZ1JlcGVhdCBTdHJpbmdSZXBsYWNlIFN0cmluZ1JlcGxhY2VMaXN0IFN0cmluZ1JlcGxhY2VQYXJ0IFN0cmluZ1JldmVyc2UgU3RyaW5nUmlmZmxlIFN0cmluZ1JvdGF0ZUxlZnQgU3RyaW5nUm90YXRlUmlnaHQgU3RyaW5nU2tlbGV0b24gU3RyaW5nU3BsaXQgU3RyaW5nU3RhcnRzUSBTdHJpbmdUYWtlIFN0cmluZ1RlbXBsYXRlIFN0cmluZ1RvQnl0ZUFycmF5IFN0cmluZ1RvU3RyZWFtIFN0cmluZ1RyaW0gU3RyaXBCb3hlcyBTdHJpcE9uSW5wdXQgU3RyaXBXcmFwcGVyQm94ZXMgU3Ryb2tlRm9ybSBTdHJ1Y3R1cmFsSW1wb3J0YW5jZSBTdHJ1Y3R1cmVkQXJyYXkgU3RydWN0dXJlZFNlbGVjdGlvbiBTdHJ1dmVIIFN0cnV2ZUwgU3R1YiBTdHVkZW50VERpc3RyaWJ1dGlvbiBTdHlsZSBTdHlsZUJveCBTdHlsZUJveEF1dG9EZWxldGUgU3R5bGVEYXRhIFN0eWxlRGVmaW5pdGlvbnMgU3R5bGVGb3JtIFN0eWxlSGludHMgU3R5bGVLZXlNYXBwaW5nIFN0eWxlTWVudUxpc3RpbmcgU3R5bGVOYW1lRGlhbG9nU2V0dGluZ3MgU3R5bGVOYW1lcyBTdHlsZVByaW50IFN0eWxlU2hlZXRQYXRoIFN1YmRpdmlkZSBTdWJmYWN0b3JpYWwgU3ViZ3JhcGggU3ViTWludXMgU3ViUGx1cyBTdWJyZXN1bHRhbnRQb2x5bm9taWFsUmVtYWluZGVycyBTdWJyZXN1bHRhbnRQb2x5bm9taWFscyBTdWJyZXN1bHRhbnRzIFN1YnNjcmlwdCBTdWJzY3JpcHRCb3ggU3Vic2NyaXB0Qm94T3B0aW9ucyBTdWJzY3JpcHRlZCBTdWJzZXF1ZW5jZXMgU3Vic2V0IFN1YnNldEVxdWFsIFN1YnNldE1hcCBTdWJzZXRRIFN1YnNldHMgU3ViU3RhciBTdWJzdGl0dXRpb25TeXN0ZW0gU3Vic3VwZXJzY3JpcHQgU3Vic3VwZXJzY3JpcHRCb3ggU3Vic3VwZXJzY3JpcHRCb3hPcHRpb25zIFN1YnRyYWN0IFN1YnRyYWN0RnJvbSBTdWJ0cmFjdFNpZGVzIFN1YlZhbHVlcyBTdWNjZWVkcyBTdWNjZWVkc0VxdWFsIFN1Y2NlZWRzU2xhbnRFcXVhbCBTdWNjZWVkc1RpbGRlIFN1Y2Nlc3MgU3VjaFRoYXQgU3VtIFN1bUNvbnZlcmdlbmNlIFN1bW1hdGlvbkxheWVyIFN1bmRheSBTdW5Qb3NpdGlvbiBTdW5yaXNlIFN1bnNldCBTdXBlckRhZ2dlciBTdXBlck1pbnVzIFN1cGVybm92YURhdGEgU3VwZXJQbHVzIFN1cGVyc2NyaXB0IFN1cGVyc2NyaXB0Qm94IFN1cGVyc2NyaXB0Qm94T3B0aW9ucyBTdXBlcnNldCBTdXBlcnNldEVxdWFsIFN1cGVyU3RhciBTdXJkIFN1cmRGb3JtIFN1cmZhY2VBcmVhIFN1cmZhY2VDb2xvciBTdXJmYWNlRGF0YSBTdXJmYWNlR3JhcGhpY3MgU3Vydml2YWxEaXN0cmlidXRpb24gU3Vydml2YWxGdW5jdGlvbiBTdXJ2aXZhbE1vZGVsIFN1cnZpdmFsTW9kZWxGaXQgU3VzcGVuZFBhY2tldCBTdXp1a2lEaXN0cmlidXRpb24gU3V6dWtpR3JvdXBTdXogU3dhdGNoTGVnZW5kIFN3aXRjaCBTeW1ib2wgU3ltYm9sTmFtZSBTeW1sZXRXYXZlbGV0IFN5bW1ldHJpYyBTeW1tZXRyaWNHcm91cCBTeW1tZXRyaWNLZXkgU3ltbWV0cmljTWF0cml4USBTeW1tZXRyaWNQb2x5bm9taWFsIFN5bW1ldHJpY1JlZHVjdGlvbiBTeW1tZXRyaXplIFN5bW1ldHJpemVkQXJyYXkgU3ltbWV0cml6ZWRBcnJheVJ1bGVzIFN5bW1ldHJpemVkRGVwZW5kZW50Q29tcG9uZW50cyBTeW1tZXRyaXplZEluZGVwZW5kZW50Q29tcG9uZW50cyBTeW1tZXRyaXplZFJlcGxhY2VQYXJ0IFN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gU3luY2hyb25vdXNVcGRhdGluZyBTeW5vbnltcyBTeW50YXggU3ludGF4Rm9ybSBTeW50YXhJbmZvcm1hdGlvbiBTeW50YXhMZW5ndGggU3ludGF4UGFja2V0IFN5bnRheFEgU3ludGhlc2l6ZU1pc3NpbmdWYWx1ZXMgU3lzdGVtRGlhbG9nSW5wdXQgU3lzdGVtRXhjZXB0aW9uIFN5c3RlbUdldCBTeXN0ZW1IZWxwUGF0aCBTeXN0ZW1JbmZvcm1hdGlvbiBTeXN0ZW1JbmZvcm1hdGlvbkRhdGEgU3lzdGVtSW5zdGFsbCBTeXN0ZW1Nb2RlbCBTeXN0ZW1Nb2RlbGVyIFN5c3RlbU1vZGVsRXhhbXBsZXMgU3lzdGVtTW9kZWxMaW5lYXJpemUgU3lzdGVtTW9kZWxQYXJhbWV0cmljU2ltdWxhdGUgU3lzdGVtTW9kZWxQbG90IFN5c3RlbU1vZGVsUHJvZ3Jlc3NSZXBvcnRpbmcgU3lzdGVtTW9kZWxSZWxpYWJpbGl0eSBTeXN0ZW1Nb2RlbHMgU3lzdGVtTW9kZWxTaW11bGF0ZSBTeXN0ZW1Nb2RlbFNpbXVsYXRlU2Vuc2l0aXZpdHkgU3lzdGVtTW9kZWxTaW11bGF0aW9uRGF0YSBTeXN0ZW1PcGVuIFN5c3RlbU9wdGlvbnMgU3lzdGVtUHJvY2Vzc0RhdGEgU3lzdGVtUHJvY2Vzc2VzIFN5c3RlbXNDb25uZWN0aW9uc01vZGVsIFN5c3RlbXNNb2RlbERlbGF5IFN5c3RlbXNNb2RlbERlbGF5QXBwcm94aW1hdGUgU3lzdGVtc01vZGVsRGVsZXRlIFN5c3RlbXNNb2RlbERpbWVuc2lvbnMgU3lzdGVtc01vZGVsRXh0cmFjdCBTeXN0ZW1zTW9kZWxGZWVkYmFja0Nvbm5lY3QgU3lzdGVtc01vZGVsTGFiZWxzIFN5c3RlbXNNb2RlbExpbmVhcml0eSBTeXN0ZW1zTW9kZWxNZXJnZSBTeXN0ZW1zTW9kZWxPcmRlciBTeXN0ZW1zTW9kZWxQYXJhbGxlbENvbm5lY3QgU3lzdGVtc01vZGVsU2VyaWVzQ29ubmVjdCBTeXN0ZW1zTW9kZWxTdGF0ZUZlZWRiYWNrQ29ubmVjdCBTeXN0ZW1zTW9kZWxWZWN0b3JSZWxhdGl2ZU9yZGVycyBTeXN0ZW1TdHViIFN5c3RlbVRlc3QnICtcbiAgICAgICdUYWIgVGFiRmlsbGluZyBUYWJsZSBUYWJsZUFsaWdubWVudHMgVGFibGVEZXB0aCBUYWJsZURpcmVjdGlvbnMgVGFibGVGb3JtIFRhYmxlSGVhZGluZ3MgVGFibGVTcGFjaW5nIFRhYmxlVmlldyBUYWJsZVZpZXdCb3ggVGFibGVWaWV3Qm94QmFja2dyb3VuZCBUYWJsZVZpZXdCb3hPcHRpb25zIFRhYlNwYWNpbmdzIFRhYlZpZXcgVGFiVmlld0JveCBUYWJWaWV3Qm94T3B0aW9ucyBUYWdCb3ggVGFnQm94Tm90ZSBUYWdCb3hPcHRpb25zIFRhZ2dpbmdSdWxlcyBUYWdTZXQgVGFnU2V0RGVsYXllZCBUYWdTdHlsZSBUYWdVbnNldCBUYWtlIFRha2VEcm9wIFRha2VMYXJnZXN0IFRha2VMYXJnZXN0QnkgVGFrZUxpc3QgVGFrZVNtYWxsZXN0IFRha2VTbWFsbGVzdEJ5IFRha2VXaGlsZSBUYWxseSBUYW4gVGFuaCBUYXJnZXREZXZpY2UgVGFyZ2V0RnVuY3Rpb25zIFRhcmdldFN5c3RlbSBUYXJnZXRVbml0cyBUYXNrQWJvcnQgVGFza0V4ZWN1dGUgVGFza09iamVjdCBUYXNrUmVtb3ZlIFRhc2tSZXN1bWUgVGFza3MgVGFza1N1c3BlbmQgVGFza1dhaXQgVGF1dG9sb2d5USBUZWxlZ3JhcGhQcm9jZXNzIFRlbXBsYXRlQXBwbHkgVGVtcGxhdGVBcmdCb3ggVGVtcGxhdGVCb3ggVGVtcGxhdGVCb3hPcHRpb25zIFRlbXBsYXRlRXZhbHVhdGUgVGVtcGxhdGVFeHByZXNzaW9uIFRlbXBsYXRlSWYgVGVtcGxhdGVPYmplY3QgVGVtcGxhdGVTZXF1ZW5jZSBUZW1wbGF0ZVNsb3QgVGVtcGxhdGVTbG90U2VxdWVuY2UgVGVtcGxhdGVVbmV2YWx1YXRlZCBUZW1wbGF0ZVZlcmJhdGltIFRlbXBsYXRlV2l0aCBUZW1wb3JhbERhdGEgVGVtcG9yYWxSZWd1bGFyaXR5IFRlbXBvcmFyeSBUZW1wb3JhcnlWYXJpYWJsZSBUZW5zb3JDb250cmFjdCBUZW5zb3JEaW1lbnNpb25zIFRlbnNvckV4cGFuZCBUZW5zb3JQcm9kdWN0IFRlbnNvclEgVGVuc29yUmFuayBUZW5zb3JSZWR1Y2UgVGVuc29yU3ltbWV0cnkgVGVuc29yVHJhbnNwb3NlIFRlbnNvcldlZGdlIFRlc3RJRCBUZXN0UmVwb3J0IFRlc3RSZXBvcnRPYmplY3QgVGVzdFJlc3VsdE9iamVjdCBUZXRyYWhlZHJvbiBUZXRyYWhlZHJvbkJveCBUZXRyYWhlZHJvbkJveE9wdGlvbnMgVGVYRm9ybSBUZVhTYXZlIFRleHQgVGV4dDNEQm94IFRleHQzREJveE9wdGlvbnMgVGV4dEFsaWdubWVudCBUZXh0QmFuZCBUZXh0Qm91bmRpbmdCb3ggVGV4dEJveCBUZXh0Q2FzZXMgVGV4dENlbGwgVGV4dENsaXBib2FyZFR5cGUgVGV4dENvbnRlbnRzIFRleHREYXRhIFRleHRFbGVtZW50IFRleHRGb3JtIFRleHRHcmlkIFRleHRKdXN0aWZpY2F0aW9uIFRleHRMaW5lIFRleHRQYWNrZXQgVGV4dFBhcmFncmFwaCBUZXh0UG9zaXRpb24gVGV4dFJlY29nbml6ZSBUZXh0U2VhcmNoIFRleHRTZWFyY2hSZXBvcnQgVGV4dFNlbnRlbmNlcyBUZXh0U3RyaW5nIFRleHRTdHJ1Y3R1cmUgVGV4dFN0eWxlIFRleHRUcmFuc2xhdGlvbiBUZXh0dXJlIFRleHR1cmVDb29yZGluYXRlRnVuY3Rpb24gVGV4dHVyZUNvb3JkaW5hdGVTY2FsaW5nIFRleHRXb3JkcyBUaGVyZWZvcmUgVGhlcm1vZHluYW1pY0RhdGEgVGhlcm1vbWV0ZXJHYXVnZSBUaGljayBUaGlja25lc3MgVGhpbiBUaGlubmluZyBUaGlzTGluayBUaG9tcHNvbkdyb3VwVGggVGhyZWFkIFRocmVhZGluZ0xheWVyIFRocmVlSlN5bWJvbCBUaHJlc2hvbGQgVGhyb3VnaCBUaHJvdyBUaHVlTW9yc2UgVGh1bWJuYWlsIFRodXJzZGF5IFRpY2tzIFRpY2tzU3R5bGUgVGlkZURhdGEgVGlsZGUgVGlsZGVFcXVhbCBUaWxkZUZ1bGxFcXVhbCBUaWxkZVRpbGRlIFRpbWVDb25zdHJhaW5lZCBUaW1lQ29uc3RyYWludCBUaW1lRGlyZWN0aW9uIFRpbWVGb3JtYXQgVGltZUdvYWwgVGltZWxpbmVQbG90IFRpbWVPYmplY3QgVGltZU9iamVjdFEgVGltZXMgVGltZXNCeSBUaW1lU2VyaWVzIFRpbWVTZXJpZXNBZ2dyZWdhdGUgVGltZVNlcmllc0ZvcmVjYXN0IFRpbWVTZXJpZXNJbnNlcnQgVGltZVNlcmllc0ludmVydGliaWxpdHkgVGltZVNlcmllc01hcCBUaW1lU2VyaWVzTWFwVGhyZWFkIFRpbWVTZXJpZXNNb2RlbCBUaW1lU2VyaWVzTW9kZWxGaXQgVGltZVNlcmllc1Jlc2FtcGxlIFRpbWVTZXJpZXNSZXNjYWxlIFRpbWVTZXJpZXNTaGlmdCBUaW1lU2VyaWVzVGhyZWFkIFRpbWVTZXJpZXNXaW5kb3cgVGltZVVzZWQgVGltZVZhbHVlIFRpbWVXYXJwaW5nQ29ycmVzcG9uZGVuY2UgVGltZVdhcnBpbmdEaXN0YW5jZSBUaW1lWm9uZSBUaW1lWm9uZUNvbnZlcnQgVGltZVpvbmVPZmZzZXQgVGltaW5nIFRpbnkgVGl0bGVHcm91cGluZyBUaXRzR3JvdXBUIFRvQm94ZXMgVG9DaGFyYWN0ZXJDb2RlIFRvQ29sb3IgVG9Db250aW51b3VzVGltZU1vZGVsIFRvRGF0ZSBUb2RheSBUb0Rpc2NyZXRlVGltZU1vZGVsIFRvRW50aXR5IFRvZXBsaXR6TWF0cml4IFRvRXhwcmVzc2lvbiBUb0ZpbGVOYW1lIFRvZ2V0aGVyIFRvZ2dsZSBUb2dnbGVGYWxzZSBUb2dnbGVyIFRvZ2dsZXJCYXIgVG9nZ2xlckJveCBUb2dnbGVyQm94T3B0aW9ucyBUb0hlbGRFeHByZXNzaW9uIFRvSW52ZXJ0aWJsZVRpbWVTZXJpZXMgVG9rZW5Xb3JkcyBUb2xlcmFuY2UgVG9Mb3dlckNhc2UgVG9tb3Jyb3cgVG9OdW1iZXJGaWVsZCBUb29CaWcgVG9vbHRpcCBUb29sdGlwQm94IFRvb2x0aXBCb3hPcHRpb25zIFRvb2x0aXBEZWxheSBUb29sdGlwU3R5bGUgVG9wIFRvcEhhdFRyYW5zZm9ybSBUb1BvbGFyQ29vcmRpbmF0ZXMgVG9wb2xvZ2ljYWxTb3J0IFRvUmFkaWNhbHMgVG9SdWxlcyBUb1NwaGVyaWNhbENvb3JkaW5hdGVzIFRvU3RyaW5nIFRvdGFsIFRvdGFsSGVpZ2h0IFRvdGFsTGF5ZXIgVG90YWxWYXJpYXRpb25GaWx0ZXIgVG90YWxXaWR0aCBUb3VjaFBvc2l0aW9uIFRvdWNoc2NyZWVuQXV0b1pvb20gVG91Y2hzY3JlZW5Db250cm9sUGxhY2VtZW50IFRvVXBwZXJDYXNlIFRyIFRyYWNlIFRyYWNlQWJvdmUgVHJhY2VBY3Rpb24gVHJhY2VCYWNrd2FyZCBUcmFjZURlcHRoIFRyYWNlRGlhbG9nIFRyYWNlRm9yd2FyZCBUcmFjZUludGVybmFsIFRyYWNlTGV2ZWwgVHJhY2VPZmYgVHJhY2VPbiBUcmFjZU9yaWdpbmFsIFRyYWNlUHJpbnQgVHJhY2VTY2FuIFRyYWNrZWRTeW1ib2xzIFRyYWNraW5nRnVuY3Rpb24gVHJhY3lXaWRvbURpc3RyaWJ1dGlvbiBUcmFkaW5nQ2hhcnQgVHJhZGl0aW9uYWxGb3JtIFRyYWRpdGlvbmFsRnVuY3Rpb25Ob3RhdGlvbiBUcmFkaXRpb25hbE5vdGF0aW9uIFRyYWRpdGlvbmFsT3JkZXIgVHJhaW5pbmdQcm9ncmVzc0NoZWNrcG9pbnRpbmcgVHJhaW5pbmdQcm9ncmVzc0Z1bmN0aW9uIFRyYWluaW5nUHJvZ3Jlc3NNZWFzdXJlbWVudHMgVHJhaW5pbmdQcm9ncmVzc1JlcG9ydGluZyBUcmFpbmluZ1N0b3BwaW5nQ3JpdGVyaW9uIFRyYW5zZmVyRnVuY3Rpb25DYW5jZWwgVHJhbnNmZXJGdW5jdGlvbkV4cGFuZCBUcmFuc2ZlckZ1bmN0aW9uRmFjdG9yIFRyYW5zZmVyRnVuY3Rpb25Nb2RlbCBUcmFuc2ZlckZ1bmN0aW9uUG9sZXMgVHJhbnNmZXJGdW5jdGlvblRyYW5zZm9ybSBUcmFuc2ZlckZ1bmN0aW9uWmVyb3MgVHJhbnNmb3JtYXRpb25DbGFzcyBUcmFuc2Zvcm1hdGlvbkZ1bmN0aW9uIFRyYW5zZm9ybWF0aW9uRnVuY3Rpb25zIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWVkRGlzdHJpYnV0aW9uIFRyYW5zZm9ybWVkRmllbGQgVHJhbnNmb3JtZWRQcm9jZXNzIFRyYW5zZm9ybWVkUmVnaW9uIFRyYW5zaXRpb25EaXJlY3Rpb24gVHJhbnNpdGlvbkR1cmF0aW9uIFRyYW5zaXRpb25FZmZlY3QgVHJhbnNpdGl2ZUNsb3N1cmVHcmFwaCBUcmFuc2l0aXZlUmVkdWN0aW9uR3JhcGggVHJhbnNsYXRlIFRyYW5zbGF0aW9uT3B0aW9ucyBUcmFuc2xhdGlvblRyYW5zZm9ybSBUcmFuc2xpdGVyYXRlIFRyYW5zcGFyZW50IFRyYW5zcGFyZW50Q29sb3IgVHJhbnNwb3NlIFRyYW5zcG9zZUxheWVyIFRyYXBTZWxlY3Rpb24gVHJhdmVsRGlyZWN0aW9ucyBUcmF2ZWxEaXJlY3Rpb25zRGF0YSBUcmF2ZWxEaXN0YW5jZSBUcmF2ZWxEaXN0YW5jZUxpc3QgVHJhdmVsTWV0aG9kIFRyYXZlbFRpbWUgVHJlZUZvcm0gVHJlZUdyYXBoIFRyZWVHcmFwaFEgVHJlZVBsb3QgVHJlbmRTdHlsZSBUcmlhbmdsZSBUcmlhbmdsZUNlbnRlciBUcmlhbmdsZUNvbnN0cnVjdCBUcmlhbmdsZU1lYXN1cmVtZW50IFRyaWFuZ2xlV2F2ZSBUcmlhbmd1bGFyRGlzdHJpYnV0aW9uIFRyaWFuZ3VsYXRlTWVzaCBUcmlnIFRyaWdFeHBhbmQgVHJpZ0ZhY3RvciBUcmlnRmFjdG9yTGlzdCBUcmlnZ2VyIFRyaWdSZWR1Y2UgVHJpZ1RvRXhwIFRyaW1tZWRNZWFuIFRyaW1tZWRWYXJpYW5jZSBUcm9waWNhbFN0b3JtRGF0YSBUcnVlIFRydWVRIFRydW5jYXRlZERpc3RyaWJ1dGlvbiBUcnVuY2F0ZWRQb2x5aGVkcm9uIFRzYWxsaXNRRXhwb25lbnRpYWxEaXN0cmlidXRpb24gVHNhbGxpc1FHYXVzc2lhbkRpc3RyaWJ1dGlvbiBUVGVzdCBUdWJlIFR1YmVCZXppZXJDdXJ2ZUJveCBUdWJlQmV6aWVyQ3VydmVCb3hPcHRpb25zIFR1YmVCb3ggVHViZUJveE9wdGlvbnMgVHViZUJTcGxpbmVDdXJ2ZUJveCBUdWJlQlNwbGluZUN1cnZlQm94T3B0aW9ucyBUdWVzZGF5IFR1a2V5TGFtYmRhRGlzdHJpYnV0aW9uIFR1a2V5V2luZG93IFR1bm5lbERhdGEgVHVwbGVzIFR1cmFuR3JhcGggVHVyaW5nTWFjaGluZSBUdXR0ZVBvbHlub21pYWwgVHdvV2F5UnVsZSBUeXBlZCBUeXBlU3BlY2lmaWVyJyArXG4gICAgICAnVW5hdGVRIFVuY29tcHJlc3MgVW5jb25zdHJhaW5lZFBhcmFtZXRlcnMgVW5kZWZpbmVkIFVuZGVyQmFyIFVuZGVyZmxvdyBVbmRlcmxpbmVkIFVuZGVyb3ZlcnNjcmlwdCBVbmRlcm92ZXJzY3JpcHRCb3ggVW5kZXJvdmVyc2NyaXB0Qm94T3B0aW9ucyBVbmRlcnNjcmlwdCBVbmRlcnNjcmlwdEJveCBVbmRlcnNjcmlwdEJveE9wdGlvbnMgVW5kZXJzZWFGZWF0dXJlRGF0YSBVbmRpcmVjdGVkRWRnZSBVbmRpcmVjdGVkR3JhcGggVW5kaXJlY3RlZEdyYXBoUSBVbmRvT3B0aW9ucyBVbmRvVHJhY2tlZFZhcmlhYmxlcyBVbmVxdWFsIFVuZXF1YWxUbyBVbmV2YWx1YXRlZCBVbmlmb3JtRGlzdHJpYnV0aW9uIFVuaWZvcm1HcmFwaERpc3RyaWJ1dGlvbiBVbmlmb3JtUG9seWhlZHJvbiBVbmlmb3JtU3VtRGlzdHJpYnV0aW9uIFVuaW5zdGFsbCBVbmlvbiBVbmlvblBsdXMgVW5pcXVlIFVuaXRhcnlNYXRyaXhRIFVuaXRCb3ggVW5pdENvbnZlcnQgVW5pdERpbWVuc2lvbnMgVW5pdGl6ZSBVbml0Um9vdFRlc3QgVW5pdFNpbXBsaWZ5IFVuaXRTdGVwIFVuaXRTeXN0ZW0gVW5pdFRyaWFuZ2xlIFVuaXRWZWN0b3IgVW5pdFZlY3RvckxheWVyIFVuaXR5RGltZW5zaW9ucyBVbml2ZXJzZU1vZGVsRGF0YSBVbml2ZXJzaXR5RGF0YSBVbml4VGltZSBVbnByb3RlY3QgVW5yZWdpc3RlckV4dGVybmFsRXZhbHVhdG9yIFVuc2FtZVEgVW5zYXZlZFZhcmlhYmxlcyBVbnNldCBVbnNldFNoYXJlZCBVbnRyYWNrZWRWYXJpYWJsZXMgVXAgVXBBcnJvdyBVcEFycm93QmFyIFVwQXJyb3dEb3duQXJyb3cgVXBkYXRlIFVwZGF0ZUR5bmFtaWNPYmplY3RzIFVwZGF0ZUR5bmFtaWNPYmplY3RzU3luY2hyb25vdXMgVXBkYXRlSW50ZXJ2YWwgVXBkYXRlU2VhcmNoSW5kZXggVXBEb3duQXJyb3cgVXBFcXVpbGlicml1bSBVcHBlckNhc2VRIFVwcGVyTGVmdEFycm93IFVwcGVyUmlnaHRBcnJvdyBVcHBlclRyaWFuZ3VsYXJpemUgVXBwZXJUcmlhbmd1bGFyTWF0cml4USBVcHNhbXBsZSBVcFNldCBVcFNldERlbGF5ZWQgVXBUZWUgVXBUZWVBcnJvdyBVcFRvIFVwVmFsdWVzIFVSTCBVUkxCdWlsZCBVUkxEZWNvZGUgVVJMRGlzcGF0Y2hlciBVUkxEb3dubG9hZCBVUkxEb3dubG9hZFN1Ym1pdCBVUkxFbmNvZGUgVVJMRXhlY3V0ZSBVUkxFeHBhbmQgVVJMRmV0Y2ggVVJMRmV0Y2hBc3luY2hyb25vdXMgVVJMUGFyc2UgVVJMUXVlcnlEZWNvZGUgVVJMUXVlcnlFbmNvZGUgVVJMUmVhZCBVUkxSZXNwb25zZVRpbWUgVVJMU2F2ZSBVUkxTYXZlQXN5bmNocm9ub3VzIFVSTFNob3J0ZW4gVVJMU3VibWl0IFVzZUdyYXBoaWNzUmFuZ2UgVXNlckRlZmluZWRXYXZlbGV0IFVzaW5nIFVzaW5nRnJvbnRFbmQgVXRpbGl0eUZ1bmN0aW9uJyArXG4gICAgICAnVjJHZXQgVmFsZW5jZUVycm9ySGFuZGxpbmcgVmFsaWRhdGlvbkxlbmd0aCBWYWxpZGF0aW9uU2V0IFZhbHVlIFZhbHVlQm94IFZhbHVlQm94T3B0aW9ucyBWYWx1ZURpbWVuc2lvbnMgVmFsdWVGb3JtIFZhbHVlUHJlcHJvY2Vzc2luZ0Z1bmN0aW9uIFZhbHVlUSBWYWx1ZXMgVmFsdWVzRGF0YSBWYXJpYWJsZXMgVmFyaWFuY2UgVmFyaWFuY2VFcXVpdmFsZW5jZVRlc3QgVmFyaWFuY2VFc3RpbWF0b3JGdW5jdGlvbiBWYXJpYW5jZUdhbW1hRGlzdHJpYnV0aW9uIFZhcmlhbmNlVGVzdCBWZWN0b3JBbmdsZSBWZWN0b3JBcm91bmQgVmVjdG9yQ29sb3JGdW5jdGlvbiBWZWN0b3JDb2xvckZ1bmN0aW9uU2NhbGluZyBWZWN0b3JEZW5zaXR5UGxvdCBWZWN0b3JHbHlwaERhdGEgVmVjdG9yR3JlYXRlciBWZWN0b3JHcmVhdGVyRXF1YWwgVmVjdG9yTGVzcyBWZWN0b3JMZXNzRXF1YWwgVmVjdG9yTWFya2VycyBWZWN0b3JQbG90IFZlY3RvclBsb3QzRCBWZWN0b3JQb2ludHMgVmVjdG9yUSBWZWN0b3JzIFZlY3RvclNjYWxlIFZlY3RvclN0eWxlIFZlZSBWZXJiYXRpbSBWZXJib3NlIFZlcmJvc2VDb252ZXJ0VG9Qb3N0U2NyaXB0UGFja2V0IFZlcmlmaWNhdGlvblRlc3QgVmVyaWZ5Q29udmVyZ2VuY2UgVmVyaWZ5RGVyaXZlZEtleSBWZXJpZnlEaWdpdGFsU2lnbmF0dXJlIFZlcmlmeUludGVycHJldGF0aW9uIFZlcmlmeVNlY3VyaXR5Q2VydGlmaWNhdGVzIFZlcmlmeVNvbHV0aW9ucyBWZXJpZnlUZXN0QXNzdW1wdGlvbnMgVmVyc2lvbiBWZXJzaW9uTnVtYmVyIFZlcnRleEFkZCBWZXJ0ZXhDYXBhY2l0eSBWZXJ0ZXhDb2xvcnMgVmVydGV4Q29tcG9uZW50IFZlcnRleENvbm5lY3Rpdml0eSBWZXJ0ZXhDb250cmFjdCBWZXJ0ZXhDb29yZGluYXRlUnVsZXMgVmVydGV4Q29vcmRpbmF0ZXMgVmVydGV4Q29ycmVsYXRpb25TaW1pbGFyaXR5IFZlcnRleENvc2luZVNpbWlsYXJpdHkgVmVydGV4Q291bnQgVmVydGV4Q292ZXJRIFZlcnRleERhdGFDb29yZGluYXRlcyBWZXJ0ZXhEZWdyZWUgVmVydGV4RGVsZXRlIFZlcnRleERpY2VTaW1pbGFyaXR5IFZlcnRleEVjY2VudHJpY2l0eSBWZXJ0ZXhJbkNvbXBvbmVudCBWZXJ0ZXhJbkRlZ3JlZSBWZXJ0ZXhJbmRleCBWZXJ0ZXhKYWNjYXJkU2ltaWxhcml0eSBWZXJ0ZXhMYWJlbGluZyBWZXJ0ZXhMYWJlbHMgVmVydGV4TGFiZWxTdHlsZSBWZXJ0ZXhMaXN0IFZlcnRleE5vcm1hbHMgVmVydGV4T3V0Q29tcG9uZW50IFZlcnRleE91dERlZ3JlZSBWZXJ0ZXhRIFZlcnRleFJlbmRlcmluZ0Z1bmN0aW9uIFZlcnRleFJlcGxhY2UgVmVydGV4U2hhcGUgVmVydGV4U2hhcGVGdW5jdGlvbiBWZXJ0ZXhTaXplIFZlcnRleFN0eWxlIFZlcnRleFRleHR1cmVDb29yZGluYXRlcyBWZXJ0ZXhXZWlnaHQgVmVydGV4V2VpZ2h0ZWRHcmFwaFEgVmVydGljYWwgVmVydGljYWxCYXIgVmVydGljYWxGb3JtIFZlcnRpY2FsR2F1Z2UgVmVydGljYWxTZXBhcmF0b3IgVmVydGljYWxTbGlkZXIgVmVydGljYWxUaWxkZSBWaWV3QW5nbGUgVmlld0NlbnRlciBWaWV3TWF0cml4IFZpZXdQb2ludCBWaWV3UG9pbnRTZWxlY3RvclNldHRpbmdzIFZpZXdQb3J0IFZpZXdQcm9qZWN0aW9uIFZpZXdSYW5nZSBWaWV3VmVjdG9yIFZpZXdWZXJ0aWNhbCBWaXJ0dWFsR3JvdXBEYXRhIFZpc2libGUgVmlzaWJsZUNlbGwgVm9pY2VTdHlsZURhdGEgVm9pZ3REaXN0cmlidXRpb24gVm9sY2Fub0RhdGEgVm9sdW1lIFZvbk1pc2VzRGlzdHJpYnV0aW9uIFZvcm9ub2lNZXNoJyArXG4gICAgICAnV2FpdEFsbCBXYWl0QXN5bmNocm9ub3VzVGFzayBXYWl0TmV4dCBXYWl0VW50aWwgV2FrZWJ5RGlzdHJpYnV0aW9uIFdhbGxlbml1c0h5cGVyZ2VvbWV0cmljRGlzdHJpYnV0aW9uIFdhcmluZ1l1bGVEaXN0cmlidXRpb24gV2FycGluZ0NvcnJlc3BvbmRlbmNlIFdhcnBpbmdEaXN0YW5jZSBXYXRlcnNoZWRDb21wb25lbnRzIFdhdHNvblVTcXVhcmVUZXN0IFdhdHRzU3Ryb2dhdHpHcmFwaERpc3RyaWJ1dGlvbiBXYXZlbGV0QmVzdEJhc2lzIFdhdmVsZXRGaWx0ZXJDb2VmZmljaWVudHMgV2F2ZWxldEltYWdlUGxvdCBXYXZlbGV0TGlzdFBsb3QgV2F2ZWxldE1hcEluZGV4ZWQgV2F2ZWxldE1hdHJpeFBsb3QgV2F2ZWxldFBoaSBXYXZlbGV0UHNpIFdhdmVsZXRTY2FsZSBXYXZlbGV0U2NhbG9ncmFtIFdhdmVsZXRUaHJlc2hvbGQgV2Vha2x5Q29ubmVjdGVkQ29tcG9uZW50cyBXZWFrbHlDb25uZWN0ZWRHcmFwaENvbXBvbmVudHMgV2Vha2x5Q29ubmVjdGVkR3JhcGhRIFdlYWtTdGF0aW9uYXJpdHkgV2VhdGhlckRhdGEgV2VhdGhlckZvcmVjYXN0RGF0YSBXZWJBdWRpb1NlYXJjaCBXZWJFbGVtZW50T2JqZWN0IFdlYmVyRSBXZWJFeGVjdXRlIFdlYkltYWdlIFdlYkltYWdlU2VhcmNoIFdlYlNlYXJjaCBXZWJTZXNzaW9uT2JqZWN0IFdlYlNlc3Npb25zIFdlYldpbmRvd09iamVjdCBXZWRnZSBXZWRuZXNkYXkgV2VpYnVsbERpc3RyaWJ1dGlvbiBXZWllcnN0cmFzc0UxIFdlaWVyc3RyYXNzRTIgV2VpZXJzdHJhc3NFMyBXZWllcnN0cmFzc0V0YTEgV2VpZXJzdHJhc3NFdGEyIFdlaWVyc3RyYXNzRXRhMyBXZWllcnN0cmFzc0hhbGZQZXJpb2RzIFdlaWVyc3RyYXNzSGFsZlBlcmlvZFcxIFdlaWVyc3RyYXNzSGFsZlBlcmlvZFcyIFdlaWVyc3RyYXNzSGFsZlBlcmlvZFczIFdlaWVyc3RyYXNzSW52YXJpYW50RzIgV2VpZXJzdHJhc3NJbnZhcmlhbnRHMyBXZWllcnN0cmFzc0ludmFyaWFudHMgV2VpZXJzdHJhc3NQIFdlaWVyc3RyYXNzUFByaW1lIFdlaWVyc3RyYXNzU2lnbWEgV2VpZXJzdHJhc3NaZXRhIFdlaWdodGVkQWRqYWNlbmN5R3JhcGggV2VpZ2h0ZWRBZGphY2VuY3lNYXRyaXggV2VpZ2h0ZWREYXRhIFdlaWdodGVkR3JhcGhRIFdlaWdodHMgV2VsY2hXaW5kb3cgV2hlZWxHcmFwaCBXaGVuRXZlbnQgV2hpY2ggV2hpbGUgV2hpdGUgV2hpdGVOb2lzZVByb2Nlc3MgV2hpdGVQb2ludCBXaGl0ZXNwYWNlIFdoaXRlc3BhY2VDaGFyYWN0ZXIgV2hpdHRha2VyTSBXaGl0dGFrZXJXIFdpZW5lckZpbHRlciBXaWVuZXJQcm9jZXNzIFdpZ25lckQgV2lnbmVyU2VtaWNpcmNsZURpc3RyaWJ1dGlvbiBXaWtpcGVkaWFEYXRhIFdpa2lwZWRpYVNlYXJjaCBXaWxrc1cgV2lsa3NXVGVzdCBXaW5kRGlyZWN0aW9uRGF0YSBXaW5kaW5nQ291bnQgV2luZGluZ1BvbHlnb24gV2luZG93Q2xpY2tTZWxlY3QgV2luZG93RWxlbWVudHMgV2luZG93RmxvYXRpbmcgV2luZG93RnJhbWUgV2luZG93RnJhbWVFbGVtZW50cyBXaW5kb3dNYXJnaW5zIFdpbmRvd01vdmFibGUgV2luZG93T3BhY2l0eSBXaW5kb3dQZXJzaXN0ZW50U3R5bGVzIFdpbmRvd1NlbGVjdGVkIFdpbmRvd1NpemUgV2luZG93U3RhdHVzQXJlYSBXaW5kb3dUaXRsZSBXaW5kb3dUb29sYmFycyBXaW5kb3dXaWR0aCBXaW5kU3BlZWREYXRhIFdpbmRWZWN0b3JEYXRhIFdpbnNvcml6ZWRNZWFuIFdpbnNvcml6ZWRWYXJpYW5jZSBXaXNoYXJ0TWF0cml4RGlzdHJpYnV0aW9uIFdpdGggV29sZnJhbUFscGhhIFdvbGZyYW1BbHBoYURhdGUgV29sZnJhbUFscGhhUXVhbnRpdHkgV29sZnJhbUFscGhhUmVzdWx0IFdvbGZyYW1MYW5ndWFnZURhdGEgV29yZCBXb3JkQm91bmRhcnkgV29yZENoYXJhY3RlciBXb3JkQ2xvdWQgV29yZENvdW50IFdvcmRDb3VudHMgV29yZERhdGEgV29yZERlZmluaXRpb24gV29yZEZyZXF1ZW5jeSBXb3JkRnJlcXVlbmN5RGF0YSBXb3JkTGlzdCBXb3JkT3JpZW50YXRpb24gV29yZFNlYXJjaCBXb3JkU2VsZWN0aW9uRnVuY3Rpb24gV29yZFNlcGFyYXRvcnMgV29yZFNwYWNpbmdzIFdvcmRTdGVtIFdvcmRUcmFuc2xhdGlvbiBXb3JraW5nUHJlY2lzaW9uIFdyYXBBcm91bmQgV3JpdGUgV3JpdGVMaW5lIFdyaXRlU3RyaW5nIFdyb25za2lhbicgK1xuICAgICAgJ1hNTEVsZW1lbnQgWE1MT2JqZWN0IFhNTFRlbXBsYXRlIFhub3IgWG9yIFhZWkNvbG9yJyArXG4gICAgICAnWWVsbG93IFllc3RlcmRheSBZdWxlRGlzc2ltaWxhcml0eScgK1xuICAgICAgJ1plcm5pa2VSIFplcm9TeW1tZXRyaWMgWmVyb1Rlc3QgWmVyb1dpZHRoVGltZXMgWmV0YSBaZXRhWmVybyBaSVBDb2RlRGF0YSBaaXBmRGlzdHJpYnV0aW9uIFpvb21DZW50ZXIgWm9vbUZhY3RvciBaVGVzdCBaVHJhbnNmb3JtJyArXG4gICAgICAnJEFib3J0ZWQgJEFjdGl2YXRpb25Hcm91cElEICRBY3RpdmF0aW9uS2V5ICRBY3RpdmF0aW9uVXNlclJlZ2lzdGVyZWQgJEFkZE9uc0RpcmVjdG9yeSAkQWxsb3dFeHRlcm5hbENoYW5uZWxGdW5jdGlvbnMgJEFzc2VydEZ1bmN0aW9uICRBc3N1bXB0aW9ucyAkQXN5bmNocm9ub3VzVGFzayAkQXVkaW9JbnB1dERldmljZXMgJEF1ZGlvT3V0cHV0RGV2aWNlcyAkQmFzZURpcmVjdG9yeSAkQmF0Y2hJbnB1dCAkQmF0Y2hPdXRwdXQgJEJsb2NrY2hhaW5CYXNlICRCb3hGb3JtcyAkQnl0ZU9yZGVyaW5nICRDYWNoZUJhc2VEaXJlY3RvcnkgJENhbmNlbGVkICRDaGFubmVsQmFzZSAkQ2hhcmFjdGVyRW5jb2RpbmcgJENoYXJhY3RlckVuY29kaW5ncyAkQ2xvdWRCYXNlICRDbG91ZENvbm5lY3RlZCAkQ2xvdWRDcmVkaXRzQXZhaWxhYmxlICRDbG91ZEV2YWx1YXRpb24gJENsb3VkRXhwcmVzc2lvbkJhc2UgJENsb3VkT2JqZWN0TmFtZUZvcm1hdCAkQ2xvdWRPYmplY3RVUkxUeXBlICRDbG91ZFJvb3REaXJlY3RvcnkgJENsb3VkU3ltYm9sQmFzZSAkQ2xvdWRVc2VySUQgJENsb3VkVXNlclVVSUQgJENsb3VkVmVyc2lvbiAkQ2xvdWRWZXJzaW9uTnVtYmVyICRDbG91ZFdvbGZyYW1FbmdpbmVWZXJzaW9uTnVtYmVyICRDb21tYW5kTGluZSAkQ29tcGlsYXRpb25UYXJnZXQgJENvbmRpdGlvbkhvbGQgJENvbmZpZ3VyZWRLZXJuZWxzICRDb250ZXh0ICRDb250ZXh0UGF0aCAkQ29udHJvbEFjdGl2ZVNldHRpbmcgJENvb2tpZXMgJENvb2tpZVN0b3JlICRDcmVhdGlvbkRhdGUgJEN1cnJlbnRMaW5rICRDdXJyZW50VGFzayAkQ3VycmVudFdlYlNlc3Npb24gJERhdGVTdHJpbmdGb3JtYXQgJERlZmF1bHRBdWRpb0lucHV0RGV2aWNlICREZWZhdWx0QXVkaW9PdXRwdXREZXZpY2UgJERlZmF1bHRGb250ICREZWZhdWx0RnJvbnRFbmQgJERlZmF1bHRJbWFnaW5nRGV2aWNlICREZWZhdWx0TG9jYWxCYXNlICREZWZhdWx0TWFpbGJveCAkRGVmYXVsdE5ldHdvcmtJbnRlcmZhY2UgJERlZmF1bHRQYXRoICREaXNwbGF5ICREaXNwbGF5RnVuY3Rpb24gJERpc3RyaWJ1dGVkQ29udGV4dHMgJER5bmFtaWNFdmFsdWF0aW9uICRFY2hvICRFbWJlZENvZGVFbnZpcm9ubWVudHMgJEVtYmVkZGFibGVTZXJ2aWNlcyAkRW50aXR5U3RvcmVzICRFcGlsb2cgJEV2YWx1YXRpb25DbG91ZEJhc2UgJEV2YWx1YXRpb25DbG91ZE9iamVjdCAkRXZhbHVhdGlvbkVudmlyb25tZW50ICRFeHBvcnRGb3JtYXRzICRGYWlsZWQgJEZpbmFuY2lhbERhdGFTb3VyY2UgJEZvbnRGYW1pbGllcyAkRm9ybWF0VHlwZSAkRnJvbnRFbmQgJEZyb250RW5kU2Vzc2lvbiAkR2VvRW50aXR5VHlwZXMgJEdlb0xvY2F0aW9uICRHZW9Mb2NhdGlvbkNpdHkgJEdlb0xvY2F0aW9uQ291bnRyeSAkR2VvTG9jYXRpb25QcmVjaXNpb24gJEdlb0xvY2F0aW9uU291cmNlICRIaXN0b3J5TGVuZ3RoICRIb21lRGlyZWN0b3J5ICRIVE1MRXhwb3J0UnVsZXMgJEhUVFBDb29raWVzICRIVFRQUmVxdWVzdCAkSWdub3JlRU9GICRJbWFnZUZvcm1hdHRpbmdXaWR0aCAkSW1hZ2luZ0RldmljZSAkSW1hZ2luZ0RldmljZXMgJEltcG9ydEZvcm1hdHMgJEluY29taW5nTWFpbFNldHRpbmdzICRJbml0aWFsRGlyZWN0b3J5ICRJbml0aWFsaXphdGlvbiAkSW5pdGlhbGl6YXRpb25Db250ZXh0cyAkSW5wdXQgJElucHV0RmlsZU5hbWUgJElucHV0U3RyZWFtTWV0aG9kcyAkSW5zcGVjdG9yICRJbnN0YWxsYXRpb25EYXRlICRJbnN0YWxsYXRpb25EaXJlY3RvcnkgJEludGVyZmFjZUVudmlyb25tZW50ICRJbnRlcnByZXRlclR5cGVzICRJdGVyYXRpb25MaW1pdCAkS2VybmVsQ291bnQgJEtlcm5lbElEICRMYW5ndWFnZSAkTGF1bmNoRGlyZWN0b3J5ICRMaWJyYXJ5UGF0aCAkTGljZW5zZUV4cGlyYXRpb25EYXRlICRMaWNlbnNlSUQgJExpY2Vuc2VQcm9jZXNzZXMgJExpY2Vuc2VTZXJ2ZXIgJExpY2Vuc2VTdWJwcm9jZXNzZXMgJExpY2Vuc2VUeXBlICRMaW5lICRMaW5rZWQgJExpbmtTdXBwb3J0ZWQgJExvYWRlZEZpbGVzICRMb2NhbEJhc2UgJExvY2FsU3ltYm9sQmFzZSAkTWFjaGluZUFkZHJlc3NlcyAkTWFjaGluZURvbWFpbiAkTWFjaGluZURvbWFpbnMgJE1hY2hpbmVFcHNpbG9uICRNYWNoaW5lSUQgJE1hY2hpbmVOYW1lICRNYWNoaW5lUHJlY2lzaW9uICRNYWNoaW5lVHlwZSAkTWF4RXh0cmFQcmVjaXNpb24gJE1heExpY2Vuc2VQcm9jZXNzZXMgJE1heExpY2Vuc2VTdWJwcm9jZXNzZXMgJE1heE1hY2hpbmVOdW1iZXIgJE1heE51bWJlciAkTWF4UGllY2V3aXNlQ2FzZXMgJE1heFByZWNpc2lvbiAkTWF4Um9vdERlZ3JlZSAkTWVzc2FnZUdyb3VwcyAkTWVzc2FnZUxpc3QgJE1lc3NhZ2VQcmVQcmludCAkTWVzc2FnZXMgJE1pbk1hY2hpbmVOdW1iZXIgJE1pbk51bWJlciAkTWlub3JSZWxlYXNlTnVtYmVyICRNaW5QcmVjaXNpb24gJE1vYmlsZVBob25lICRNb2R1bGVOdW1iZXIgJE5ldHdvcmtDb25uZWN0ZWQgJE5ldHdvcmtJbnRlcmZhY2VzICROZXR3b3JrTGljZW5zZSAkTmV3TWVzc2FnZSAkTmV3U3ltYm9sICROb3RlYm9va3MgJE5vVmFsdWUgJE51bWJlck1hcmtzICRPZmYgJE9wZXJhdGluZ1N5c3RlbSAkT3V0cHV0ICRPdXRwdXRGb3JtcyAkT3V0cHV0U2l6ZUxpbWl0ICRPdXRwdXRTdHJlYW1NZXRob2RzICRQYWNrYWdlcyAkUGFyZW50TGluayAkUGFyZW50UHJvY2Vzc0lEICRQYXNzd29yZEZpbGUgJFBhdGNoTGV2ZWxJRCAkUGF0aCAkUGF0aG5hbWVTZXBhcmF0b3IgJFBlcmZvcm1hbmNlR29hbCAkUGVybWlzc2lvbnMgJFBlcm1pc3Npb25zR3JvdXBCYXNlICRQZXJzaXN0ZW5jZUJhc2UgJFBlcnNpc3RlbmNlUGF0aCAkUGlwZVN1cHBvcnRlZCAkUGxvdFRoZW1lICRQb3N0ICRQcmUgJFByZWZlcmVuY2VzRGlyZWN0b3J5ICRQcmVJbml0aWFsaXphdGlvbiAkUHJlUHJpbnQgJFByZVJlYWQgJFByaW50Rm9ybXMgJFByaW50TGl0ZXJhbCAkUHJpbnRvdXQzRFByZXZpZXdlciAkUHJvY2Vzc0lEICRQcm9jZXNzb3JDb3VudCAkUHJvY2Vzc29yVHlwZSAkUHJvZHVjdEluZm9ybWF0aW9uICRQcm9ncmFtTmFtZSAkUHVibGlzaGVySUQgJFJhbmRvbVN0YXRlICRSZWN1cnNpb25MaW1pdCAkUmVnaXN0ZXJlZERldmljZUNsYXNzZXMgJFJlZ2lzdGVyZWRVc2VyTmFtZSAkUmVsZWFzZU51bWJlciAkUmVxdWVzdGVyQWRkcmVzcyAkUmVxdWVzdGVyV29sZnJhbUlEICRSZXF1ZXN0ZXJXb2xmcmFtVVVJRCAkUmVzb3VyY2VTeXN0ZW1CYXNlICRSb290RGlyZWN0b3J5ICRTY2hlZHVsZWRUYXNrICRTY3JpcHRDb21tYW5kTGluZSAkU2NyaXB0SW5wdXRTdHJpbmcgJFNlY3VyZWRBdXRoZW50aWNhdGlvbktleVRva2VucyAkU2VydmljZUNyZWRpdHNBdmFpbGFibGUgJFNlcnZpY2VzICRTZXNzaW9uSUQgJFNldFBhcmVudExpbmsgJFNoYXJlZEZ1bmN0aW9ucyAkU2hhcmVkVmFyaWFibGVzICRTb3VuZERpc3BsYXkgJFNvdW5kRGlzcGxheUZ1bmN0aW9uICRTb3VyY2VMaW5rICRTU0hBdXRoZW50aWNhdGlvbiAkU3VtbWFyeUJveERhdGFTaXplTGltaXQgJFN1cHByZXNzSW5wdXRGb3JtSGVhZHMgJFN5bmNocm9ub3VzRXZhbHVhdGlvbiAkU3ludGF4SGFuZGxlciAkU3lzdGVtICRTeXN0ZW1DaGFyYWN0ZXJFbmNvZGluZyAkU3lzdGVtSUQgJFN5c3RlbU1lbW9yeSAkU3lzdGVtU2hlbGwgJFN5c3RlbVRpbWVab25lICRTeXN0ZW1Xb3JkTGVuZ3RoICRUZW1wbGF0ZVBhdGggJFRlbXBvcmFyeURpcmVjdG9yeSAkVGVtcG9yYXJ5UHJlZml4ICRUZXN0RmlsZU5hbWUgJFRleHRTdHlsZSAkVGltZWRPdXQgJFRpbWVVbml0ICRUaW1lWm9uZSAkVGltZVpvbmVFbnRpdHkgJFRvcERpcmVjdG9yeSAkVHJhY2VPZmYgJFRyYWNlT24gJFRyYWNlUGF0dGVybiAkVHJhY2VQb3N0QWN0aW9uICRUcmFjZVByZUFjdGlvbiAkVW5pdFN5c3RlbSAkVXJnZW50ICRVc2VyQWRkT25zRGlyZWN0b3J5ICRVc2VyQWdlbnRMYW5ndWFnZXMgJFVzZXJBZ2VudE1hY2hpbmUgJFVzZXJBZ2VudE5hbWUgJFVzZXJBZ2VudE9wZXJhdGluZ1N5c3RlbSAkVXNlckFnZW50U3RyaW5nICRVc2VyQWdlbnRWZXJzaW9uICRVc2VyQmFzZURpcmVjdG9yeSAkVXNlckRvY3VtZW50c0RpcmVjdG9yeSAkVXNlcm5hbWUgJFVzZXJOYW1lICRVc2VyVVJMQmFzZSAkVmVyc2lvbiAkVmVyc2lvbk51bWJlciAkVm9pY2VTdHlsZXMgJFdvbGZyYW1JRCAkV29sZnJhbVVVSUQnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwoXFxcXConLCAnXFxcXCpcXFxcKScsIHtjb250YWluczogWydzZWxmJ119KSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLypcbiAgRm9ybWFsIHN5bnRheCBpcyBub3QgcHVibGlzaGVkLCBoZWxwZnVsIGxpbms6XG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9rb3JuaWxvdmEtbC9tYXRsYWItSW50ZWxsaUotcGx1Z2luL2Jsb2IvbWFzdGVyL3NyYy9tYWluL2dyYW1tYXIvTWF0bGFiLmJuZlxuKi9cbmZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgVFJBTlNQT1NFX1JFID0gJyhcXCd8XFxcXC5cXCcpKyc7XG4gIHZhciBUUkFOU1BPU0UgPSB7XG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IGJlZ2luOiBUUkFOU1BPU0VfUkUgfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYnJlYWsgY2FzZSBjYXRjaCBjbGFzc2RlZiBjb250aW51ZSBlbHNlIGVsc2VpZiBlbmQgZW51bWVyYXRlZCBldmVudHMgZm9yIGZ1bmN0aW9uICcgK1xuICAgICAgICAnZ2xvYmFsIGlmIG1ldGhvZHMgb3RoZXJ3aXNlIHBhcmZvciBwZXJzaXN0ZW50IHByb3BlcnRpZXMgcmV0dXJuIHNwbWQgc3dpdGNoIHRyeSB3aGlsZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3NpbiBzaW5kIHNpbmggYXNpbiBhc2luZCBhc2luaCBjb3MgY29zZCBjb3NoIGFjb3MgYWNvc2QgYWNvc2ggdGFuIHRhbmQgdGFuaCBhdGFuICcgK1xuICAgICAgICAnYXRhbmQgYXRhbjIgYXRhbmggc2VjIHNlY2Qgc2VjaCBhc2VjIGFzZWNkIGFzZWNoIGNzYyBjc2NkIGNzY2ggYWNzYyBhY3NjZCBhY3NjaCBjb3QgJyArXG4gICAgICAgICdjb3RkIGNvdGggYWNvdCBhY290ZCBhY290aCBoeXBvdCBleHAgZXhwbTEgbG9nIGxvZzFwIGxvZzEwIGxvZzIgcG93MiByZWFscG93IHJlYWxsb2cgJyArXG4gICAgICAgICdyZWFsc3FydCBzcXJ0IG50aHJvb3QgbmV4dHBvdzIgYWJzIGFuZ2xlIGNvbXBsZXggY29uaiBpbWFnIHJlYWwgdW53cmFwIGlzcmVhbCAnICtcbiAgICAgICAgJ2NwbHhwYWlyIGZpeCBmbG9vciBjZWlsIHJvdW5kIG1vZCByZW0gc2lnbiBhaXJ5IGJlc3NlbGogYmVzc2VseSBiZXNzZWxoIGJlc3NlbGkgJyArXG4gICAgICAgICdiZXNzZWxrIGJldGEgYmV0YWluYyBiZXRhbG4gZWxsaXBqIGVsbGlwa2UgZXJmIGVyZmMgZXJmY3ggZXJmaW52IGV4cGludCBnYW1tYSAnICtcbiAgICAgICAgJ2dhbW1haW5jIGdhbW1hbG4gcHNpIGxlZ2VuZHJlIGNyb3NzIGRvdCBmYWN0b3IgaXNwcmltZSBwcmltZXMgZ2NkIGxjbSByYXQgcmF0cyBwZXJtcyAnICtcbiAgICAgICAgJ25jaG9vc2VrIGZhY3RvcmlhbCBjYXJ0MnNwaCBjYXJ0MnBvbCBwb2wyY2FydCBzcGgyY2FydCBoc3YycmdiIHJnYjJoc3YgemVyb3Mgb25lcyAnICtcbiAgICAgICAgJ2V5ZSByZXBtYXQgcmFuZCByYW5kbiBsaW5zcGFjZSBsb2dzcGFjZSBmcmVxc3BhY2UgbWVzaGdyaWQgYWNjdW1hcnJheSBzaXplIGxlbmd0aCAnICtcbiAgICAgICAgJ25kaW1zIG51bWVsIGRpc3AgaXNlbXB0eSBpc2VxdWFsIGlzZXF1YWx3aXRoZXF1YWxuYW5zIGNhdCByZXNoYXBlIGRpYWcgYmxrZGlhZyB0cmlsICcgK1xuICAgICAgICAndHJpdSBmbGlwbHIgZmxpcHVkIGZsaXBkaW0gcm90OTAgZmluZCBzdWIyaW5kIGluZDJzdWIgYnN4ZnVuIG5kZ3JpZCBwZXJtdXRlIGlwZXJtdXRlICcgK1xuICAgICAgICAnc2hpZnRkaW0gY2lyY3NoaWZ0IHNxdWVlemUgaXNzY2FsYXIgaXN2ZWN0b3IgYW5zIGVwcyByZWFsbWF4IHJlYWxtaW4gcGkgaSBpbmYgbmFuICcgK1xuICAgICAgICAnaXNuYW4gaXNpbmYgaXNmaW5pdGUgaiB3aHkgY29tcGFuIGdhbGxlcnkgaGFkYW1hcmQgaGFua2VsIGhpbGIgaW52aGlsYiBtYWdpYyBwYXNjYWwgJyArXG4gICAgICAgICdyb3NzZXIgdG9lcGxpdHogdmFuZGVyIHdpbGtpbnNvbiBtYXggbWluIG5hbm1heCBuYW5taW4gbWVhbiBuYW5tZWFuIHR5cGUgdGFibGUgJyArXG4gICAgICAgICdyZWFkdGFibGUgd3JpdGV0YWJsZSBzb3J0cm93cyBzb3J0IGZpZ3VyZSBwbG90IHBsb3QzIHNjYXR0ZXIgc2NhdHRlcjMgY2VsbGZ1biAnICtcbiAgICAgICAgJ2xlZ2VuZCBpbnRlcnNlY3QgaXNtZW1iZXIgcHJvY3J1c3RlcyBob2xkIG51bTJjZWxsICdcbiAgICB9LFxuICAgIGlsbGVnYWw6ICcoLy98XCJ8I3wvXFxcXCp8XFxcXHMrL1xcXFx3KyknLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIHtiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknfSxcbiAgICAgICAgICAgICAge2JlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXSd9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiAvdHJ1ZXxmYWxzZS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgc3RhcnRzOiBUUkFOU1BPU0VcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW2EtekEtWl1bYS16QS1aXzAtOV0qJyArIFRSQU5TUE9TRV9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBzdGFydHM6IFRSQU5TUE9TRVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICB7YmVnaW46ICdcXCdcXCcnfV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxdfH18XFwpLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBzdGFydHM6IFRSQU5TUE9TRVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAge2JlZ2luOiAnXCJcIid9XG4gICAgICAgIF0sXG4gICAgICAgIHN0YXJ0czogVFJBTlNQT1NFXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXHMqXFxcXCVcXFxce1xcXFxzKiQnLCAnXlxcXFxzKlxcXFwlXFxcXH1cXFxccyokJyksXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwlJywgJyQnKVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9ICdpZiB0aGVuIGVsc2UgZWxzZWlmIGZvciB0aHJ1IGRvIHdoaWxlIHVubGVzcyBzdGVwIGluIGFuZCBvciBub3QnO1xuICB2YXIgTElURVJBTFMgPSAndHJ1ZSBmYWxzZSB1bmtub3duIGluZiBtaW5mIGluZCB1bmQgJWUgJWkgJXBpICVwaGkgJWdhbW1hJztcbiAgdmFyIEJVSUxUSU5fRlVOQ1RJT05TID1cbiAgICAgICAgJyBhYmFzZXAgYWJzIGFic2ludCBhYnNvbHV0ZV9yZWFsX3RpbWUgYWNvcyBhY29zaCBhY290IGFjb3RoIGFjc2MgYWNzY2ggYWN0aXZhdGUnXG4gICAgICArICcgYWRkY29sIGFkZF9lZGdlIGFkZF9lZGdlcyBhZGRtYXRyaWNlcyBhZGRyb3cgYWRkX3ZlcnRleCBhZGRfdmVydGljZXMgYWRqYWNlbmN5X21hdHJpeCdcbiAgICAgICsgJyBhZGpvaW4gYWRqb2ludCBhZiBhZ2QgYWlyeSBhaXJ5X2FpIGFpcnlfYmkgYWlyeV9kYWkgYWlyeV9kYmkgYWxnc3lzIGFsZ190eXBlJ1xuICAgICAgKyAnIGFsaWFzIGFsbHJvb3RzIGFscGhhY2hhcnAgYWxwaGFudW1lcmljcCBhbW9ydGl6YXRpb24gJWFuZCBhbm51aXR5X2Z2J1xuICAgICAgKyAnIGFubnVpdHlfcHYgYW50aWQgYW50aWRpZmYgQW50aURpZmZlcmVuY2UgYXBwZW5kIGFwcGVuZGZpbGUgYXBwbHkgYXBwbHkxIGFwcGx5MidcbiAgICAgICsgJyBhcHBseWIxIGFwcm9wb3MgYXJncyBhcml0X2Ftb3J0aXphdGlvbiBhcml0aG1ldGljIGFyaXRoc3VtIGFycmF5IGFycmF5YXBwbHknXG4gICAgICArICcgYXJyYXlpbmZvIGFycmF5bWFrZSBhcnJheXNldGFwcGx5IGFzY2lpIGFzZWMgYXNlY2ggYXNpbiBhc2luaCBhc2tpbnRlZ2VyJ1xuICAgICAgKyAnIGFza3NpZ24gYXNzb2MgYXNzb2NfbGVnZW5kcmVfcCBhc3NvY19sZWdlbmRyZV9xIGFzc3VtZSBhc3N1bWVfZXh0ZXJuYWxfYnl0ZV9vcmRlcidcbiAgICAgICsgJyBhc3ltcGEgYXQgYXRhbiBhdGFuMiBhdGFuaCBhdGVuc2ltcCBhdG9tIGF0dmFsdWUgYXVnY29lZm1hdHJpeCBhdWdtZW50ZWRfbGFncmFuZ2lhbl9tZXRob2QnXG4gICAgICArICcgYXYgYXZlcmFnZV9kZWdyZWUgYmFja3RyYWNlIGJhcnMgYmFyc3Bsb3QgYmFyc3Bsb3RfZGVzY3JpcHRpb24gYmFzZTY0IGJhc2U2NF9kZWNvZGUnXG4gICAgICArICcgYmFzaGluZGljZXMgYmF0Y2ggYmF0Y2hsb2FkIGJjMiBiZHZhYyBiZWxsbiBiZW5lZml0X2Nvc3QgYmVybiBiZXJucG9seSBiZXJuc3RlaW5fYXBwcm94J1xuICAgICAgKyAnIGJlcm5zdGVpbl9leHBhbmQgYmVybnN0ZWluX3BvbHkgYmVzc2VsIGJlc3NlbF9pIGJlc3NlbF9qIGJlc3NlbF9rIGJlc3NlbF9zaW1wbGlmeSdcbiAgICAgICsgJyBiZXNzZWxfeSBiZXRhIGJldGFfaW5jb21wbGV0ZSBiZXRhX2luY29tcGxldGVfZ2VuZXJhbGl6ZWQgYmV0YV9pbmNvbXBsZXRlX3JlZ3VsYXJpemVkJ1xuICAgICAgKyAnIGJlem91dCBiZmFsbHJvb3RzIGJmZmFjIGJmX2ZpbmRfcm9vdCBiZl9mbWluX2NvYnlsYSBiZmh6ZXRhIGJmbG9hdCBiZmxvYXRwJ1xuICAgICAgKyAnIGJmcHNpIGJmcHNpMCBiZnpldGEgYmljb25uZWN0ZWRfY29tcG9uZW50cyBiaW1ldHJpYyBiaW5vbWlhbCBiaXBhcnRpdGlvbidcbiAgICAgICsgJyBibG9jayBibG9ja21hdHJpeHAgYm9kZV9nYWluIGJvZGVfcGhhc2UgYm90aGNvZWYgYm94IGJveHBsb3QgYm94cGxvdF9kZXNjcmlwdGlvbidcbiAgICAgICsgJyBicmVhayBidWdfcmVwb3J0IGJ1aWxkX2luZm98MTAgYnVpbGRxIGJ1aWxkX3NhbXBsZSBidXJuIGNhYnMgY2FuZm9ybSBjYW50ZW4nXG4gICAgICArICcgY2FyZGluYWxpdHkgY2FyZyBjYXJ0YW4gY2FydGVzaWFuX3Byb2R1Y3QgY2F0Y2ggY2F1Y2h5X21hdHJpeCBjYmZmYWMgY2RmX2Jlcm5vdWxsaSdcbiAgICAgICsgJyBjZGZfYmV0YSBjZGZfYmlub21pYWwgY2RmX2NhdWNoeSBjZGZfY2hpMiBjZGZfY29udGludW91c191bmlmb3JtIGNkZl9kaXNjcmV0ZV91bmlmb3JtJ1xuICAgICAgKyAnIGNkZl9leHAgY2RmX2YgY2RmX2dhbW1hIGNkZl9nZW5lcmFsX2Zpbml0ZV9kaXNjcmV0ZSBjZGZfZ2VvbWV0cmljIGNkZl9ndW1iZWwnXG4gICAgICArICcgY2RmX2h5cGVyZ2VvbWV0cmljIGNkZl9sYXBsYWNlIGNkZl9sb2dpc3RpYyBjZGZfbG9nbm9ybWFsIGNkZl9uZWdhdGl2ZV9iaW5vbWlhbCdcbiAgICAgICsgJyBjZGZfbm9uY2VudHJhbF9jaGkyIGNkZl9ub25jZW50cmFsX3N0dWRlbnRfdCBjZGZfbm9ybWFsIGNkZl9wYXJldG8gY2RmX3BvaXNzb24nXG4gICAgICArICcgY2RmX3Jhbmtfc3VtIGNkZl9yYXlsZWlnaCBjZGZfc2lnbmVkX3JhbmsgY2RmX3N0dWRlbnRfdCBjZGZfd2VpYnVsbCBjZGlzcGxheSdcbiAgICAgICsgJyBjZWlsaW5nIGNlbnRyYWxfbW9tZW50IGNlcXVhbCBjZXF1YWxpZ25vcmUgY2YgY2ZkaXNyZXAgY2ZleHBhbmQgY2dlb2Rlc2ljJ1xuICAgICAgKyAnIGNncmVhdGVycCBjZ3JlYXRlcnBpZ25vcmUgY2hhbmdlbmFtZSBjaGFuZ2V2YXIgY2hhb3NnYW1lIGNoYXJhdCBjaGFyZnVuIGNoYXJmdW4yJ1xuICAgICAgKyAnIGNoYXJsaXN0IGNoYXJwIGNoYXJwb2x5IGNoZGlyIGNoZWJ5c2hldl90IGNoZWJ5c2hldl91IGNoZWNrZGl2IGNoZWNrX292ZXJsYXBzJ1xuICAgICAgKyAnIGNoaW5lc2UgY2hvbGVza3kgY2hyaXN0b2YgY2hyb21hdGljX2luZGV4IGNocm9tYXRpY19udW1iZXIgY2ludCBjaXJjdWxhbnRfZ3JhcGgnXG4gICAgICArICcgY2xlYXJfZWRnZV93ZWlnaHQgY2xlYXJfcnVsZXMgY2xlYXJfdmVydGV4X2xhYmVsIGNsZWJzY2hfZ29yZGFuIGNsZWJzY2hfZ3JhcGgnXG4gICAgICArICcgY2xlc3NwIGNsZXNzcGlnbm9yZSBjbG9zZSBjbG9zZWZpbGUgY21ldHJpYyBjb2VmZiBjb2VmbWF0cml4IGNvZ3JhZCBjb2wgY29sbGFwc2UnXG4gICAgICArICcgY29sbGVjdHRlcm1zIGNvbHVtbm9wIGNvbHVtbnNwYWNlIGNvbHVtbnN3YXAgY29sdW1udmVjdG9yIGNvbWJpbmF0aW9uIGNvbWJpbmUnXG4gICAgICArICcgY29tcDJwdWkgY29tcGFyZSBjb21wZmlsZSBjb21waWxlIGNvbXBpbGVfZmlsZSBjb21wbGVtZW50X2dyYXBoIGNvbXBsZXRlX2JpcGFydGl0ZV9ncmFwaCdcbiAgICAgICsgJyBjb21wbGV0ZV9ncmFwaCBjb21wbGV4X251bWJlcl9wIGNvbXBvbmVudHMgY29tcG9zZV9mdW5jdGlvbnMgY29uY2FuIGNvbmNhdCdcbiAgICAgICsgJyBjb25qdWdhdGUgY29ubWV0ZGVyaXYgY29ubmVjdGVkX2NvbXBvbmVudHMgY29ubmVjdF92ZXJ0aWNlcyBjb25zIGNvbnN0YW50J1xuICAgICAgKyAnIGNvbnN0YW50cCBjb25zdGl0dWVudCBjb25zdHZhbHVlIGNvbnQycGFydCBjb250ZW50IGNvbnRpbnVvdXNfZnJlcSBjb250b3J0aW9uJ1xuICAgICAgKyAnIGNvbnRvdXJfcGxvdCBjb250cmFjdCBjb250cmFjdF9lZGdlIGNvbnRyYWdyYWQgY29udHJpYl9vZGUgY29udmVydCBjb29yZCdcbiAgICAgICsgJyBjb3B5IGNvcHlfZmlsZSBjb3B5X2dyYXBoIGNvcHlsaXN0IGNvcHltYXRyaXggY29yIGNvcyBjb3NoIGNvdCBjb3RoIGNvdiBjb3YxJ1xuICAgICAgKyAnIGNvdmRpZmYgY292ZWN0IGNvdmVycyBjcmMyNHN1bSBjcmVhdGVfZ3JhcGggY3JlYXRlX2xpc3QgY3NjIGNzY2ggY3NldHVwIGNzcGxpbmUnXG4gICAgICArICcgY3RheWxvciBjdF9jb29yZHN5cyBjdHJhbnNmb3JtIGN0cmFuc3Bvc2UgY3ViZV9ncmFwaCBjdWJvY3RhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIGN1bmxpc3AgY3YgY3ljbGVfZGlncmFwaCBjeWNsZV9ncmFwaCBjeWxpbmRyaWNhbCBkYXlzMzYwIGRibGludCBkZWFjdGl2YXRlJ1xuICAgICAgKyAnIGRlY2xhcmUgZGVjbGFyZV9jb25zdHZhbHVlIGRlY2xhcmVfZGltZW5zaW9ucyBkZWNsYXJlX2Z1bmRhbWVudGFsX2RpbWVuc2lvbnMnXG4gICAgICArICcgZGVjbGFyZV9mdW5kYW1lbnRhbF91bml0cyBkZWNsYXJlX3F0eSBkZWNsYXJlX3RyYW5zbGF0ZWQgZGVjbGFyZV91bml0X2NvbnZlcnNpb24nXG4gICAgICArICcgZGVjbGFyZV91bml0cyBkZWNsYXJlX3dlaWdodHMgZGVjc3ltIGRlZmNvbiBkZWZpbmUgZGVmaW5lX2FsdF9kaXNwbGF5IGRlZmluZV92YXJpYWJsZSdcbiAgICAgICsgJyBkZWZpbnQgZGVmbWF0Y2ggZGVmcnVsZSBkZWZzdHJ1Y3QgZGVmdGF5bG9yIGRlZ3JlZV9zZXF1ZW5jZSBkZWwgZGVsZXRlIGRlbGV0ZW4nXG4gICAgICArICcgZGVsdGEgZGVtbyBkZW1vaXZyZSBkZW5vbSBkZXBlbmRzIGRlcml2ZGVncmVlIGRlcml2bGlzdCBkZXNjcmliZSBkZXNvbHZlJ1xuICAgICAgKyAnIGRldGVybWluYW50IGRmbG9hdCBkZ2F1c3NfYSBkZ2F1c3NfYiBkZ2VldiBkZ2VtbSBkZ2VxcmYgZGdlc3YgZGdlc3ZkIGRpYWcnXG4gICAgICArICcgZGlhZ21hdHJpeCBkaWFnX21hdHJpeCBkaWFnbWF0cml4cCBkaWFtZXRlciBkaWZmIGRpZ2l0Y2hhcnAgZGltYWNzX2V4cG9ydCdcbiAgICAgICsgJyBkaW1hY3NfaW1wb3J0IGRpbWVuc2lvbiBkaW1lbnNpb25sZXNzIGRpbWVuc2lvbnMgZGltZW5zaW9uc19hc19saXN0IGRpcmVjdCdcbiAgICAgICsgJyBkaXJlY3RvcnkgZGlzY3JldGVfZnJlcSBkaXNqb2luIGRpc2pvaW50cCBkaXNvbGF0ZSBkaXNwIGRpc3Bjb24gZGlzcGZvcm0nXG4gICAgICArICcgZGlzcGZ1biBkaXNwSm9yZGFuIGRpc3BsYXkgZGlzcHJ1bGUgZGlzcHRlcm1zIGRpc3RyaWIgZGl2aWRlIGRpdmlzb3JzIGRpdnN1bSdcbiAgICAgICsgJyBka3VtbWVyX20gZGt1bW1lcl91IGRsYW5nZSBkb2RlY2FoZWRyb25fZ3JhcGggZG90cHJvZHVjdCBkb3RzaW1wIGRwYXJ0J1xuICAgICAgKyAnIGRyYXcgZHJhdzJkIGRyYXczZCBkcmF3ZGYgZHJhd19maWxlIGRyYXdfZ3JhcGggZHNjYWxhciBlY2hlbG9uIGVkZ2VfY29sb3JpbmcnXG4gICAgICArICcgZWRnZV9jb25uZWN0aXZpdHkgZWRnZXMgZWlnZW5zX2J5X2phY29iaSBlaWdlbnZhbHVlcyBlaWdlbnZlY3RvcnMgZWlnaHRoJ1xuICAgICAgKyAnIGVpbnN0ZWluIGVpdmFscyBlaXZlY3RzIGVsYXBzZWRfcmVhbF90aW1lIGVsYXBzZWRfcnVuX3RpbWUgZWxlMmNvbXAgZWxlMnBvbHlub21lJ1xuICAgICAgKyAnIGVsZTJwdWkgZWxlbSBlbGVtZW50cCBlbGV2YXRpb25fZ3JpZCBlbGltIGVsaW1fYWxsYnV0IGVsaW1pbmF0ZSBlbGltaW5hdGVfdXNpbmcnXG4gICAgICArICcgZWxsaXBzZSBlbGxpcHRpY19lIGVsbGlwdGljX2VjIGVsbGlwdGljX2V1IGVsbGlwdGljX2YgZWxsaXB0aWNfa2MgZWxsaXB0aWNfcGknXG4gICAgICArICcgZW1hdHJpeCBlbXB0eV9ncmFwaCBlbXB0eXAgZW5kY29ucyBlbnRlcm1hdHJpeCBlbnRlcnRlbnNvciBlbnRpZXIgZXF1YWwgZXF1YWxwJ1xuICAgICAgKyAnIGVxdWl2X2NsYXNzZXMgZXJmIGVyZmMgZXJmX2dlbmVyYWxpemVkIGVyZmkgZXJyY2F0Y2ggZXJyb3IgZXJyb3Jtc2cgZXJyb3JzJ1xuICAgICAgKyAnIGV1bGVyIGV2IGV2YWxfc3RyaW5nIGV2ZW5wIGV2ZXJ5IGV2b2x1dGlvbiBldm9sdXRpb24yZCBldnVuZGlmZiBleGFtcGxlIGV4cCdcbiAgICAgICsgJyBleHBhbmQgZXhwYW5kd3J0IGV4cGFuZHdydF9mYWN0b3JlZCBleHBpbnQgZXhwaW50ZWdyYWxfY2hpIGV4cGludGVncmFsX2NpJ1xuICAgICAgKyAnIGV4cGludGVncmFsX2UgZXhwaW50ZWdyYWxfZTEgZXhwaW50ZWdyYWxfZWkgZXhwaW50ZWdyYWxfZV9zaW1wbGlmeSBleHBpbnRlZ3JhbF9saSdcbiAgICAgICsgJyBleHBpbnRlZ3JhbF9zaGkgZXhwaW50ZWdyYWxfc2kgZXhwbGljaXQgZXhwbG9zZSBleHBvbmVudGlhbGl6ZSBleHByZXNzIGV4cHQnXG4gICAgICArICcgZXhzZWMgZXh0ZGlmZiBleHRyYWN0X2xpbmVhcl9lcXVhdGlvbnMgZXh0cmVtYWxfc3Vic2V0IGV6Z2NkICVmIGY5MCBmYWNzdW0nXG4gICAgICArICcgZmFjdGNvbWIgZmFjdG9yIGZhY3RvcmZhY3N1bSBmYWN0b3JpYWwgZmFjdG9yb3V0IGZhY3RvcnN1bSBmYWN0cyBmYXN0X2NlbnRyYWxfZWxlbWVudHMnXG4gICAgICArICcgZmFzdF9saW5zb2x2ZSBmYXN0dGltZXMgZmVhdHVyZXAgZmVybmZhbGUgZmZ0IGZpYiBmaWJ0b3BoaSBmaWZ0aCBmaWxlbmFtZV9tZXJnZSdcbiAgICAgICsgJyBmaWxlX3NlYXJjaCBmaWxlX3R5cGUgZmlsbGFycmF5IGZpbmRkZSBmaW5kX3Jvb3QgZmluZF9yb290X2FicyBmaW5kX3Jvb3RfZXJyb3InXG4gICAgICArICcgZmluZF9yb290X3JlbCBmaXJzdCBmaXggZmxhdHRlbiBmbGVuZ3RoIGZsb2F0IGZsb2F0bnVtcCBmbG9vciBmbG93ZXJfc25hcmsnXG4gICAgICArICcgZmx1c2ggZmx1c2gxZGVyaXYgZmx1c2hkIGZsdXNobmQgZmx1c2hfb3V0cHV0IGZtaW5fY29ieWxhIGZvcmdldCBmb3J0cmFuJ1xuICAgICAgKyAnIGZvdXJjb3MgZm91cmV4cGFuZCBmb3VyaWVyIGZvdXJpZXJfZWxpbSBmb3VyaW50IGZvdXJpbnRjb3MgZm91cmludHNpbiBmb3Vyc2ltcCdcbiAgICAgICsgJyBmb3Vyc2luIGZvdXJ0aCBmcG9zaXRpb24gZnJhbWVfYnJhY2tldCBmcmVlb2YgZnJlc2hsaW5lIGZyZXNuZWxfYyBmcmVzbmVsX3MnXG4gICAgICArICcgZnJvbV9hZGphY2VuY3lfbWF0cml4IGZydWNodF9ncmFwaCBmdWxsX2xpc3RpZnkgZnVsbG1hcCBmdWxsbWFwbCBmdWxscmF0c2ltcCdcbiAgICAgICsgJyBmdWxscmF0c3Vic3QgZnVsbHNldGlmeSBmdW5jc29sdmUgZnVuZGFtZW50YWxfZGltZW5zaW9ucyBmdW5kYW1lbnRhbF91bml0cydcbiAgICAgICsgJyBmdW5kZWYgZnVubWFrZSBmdW5wIGZ2IGcwIGcxIGdhbW1hIGdhbW1hX2dyZWVrIGdhbW1hX2luY29tcGxldGUgZ2FtbWFfaW5jb21wbGV0ZV9nZW5lcmFsaXplZCdcbiAgICAgICsgJyBnYW1tYV9pbmNvbXBsZXRlX3JlZ3VsYXJpemVkIGdhdXNzIGdhdXNzX2EgZ2F1c3NfYiBnYXVzc3Byb2IgZ2NkIGdjZGV4IGdjZGl2aWRlJ1xuICAgICAgKyAnIGdjZmFjIGdjZmFjdG9yIGdkIGdlbmVyYWxpemVkX2xhbWJlcnRfdyBnZW5mYWN0IGdlbl9sYWd1ZXJyZSBnZW5tYXRyaXggZ2Vuc3ltJ1xuICAgICAgKyAnIGdlb19hbW9ydGl6YXRpb24gZ2VvX2FubnVpdHlfZnYgZ2VvX2FubnVpdHlfcHYgZ2VvbWFwIGdlb21ldHJpYyBnZW9tZXRyaWNfbWVhbidcbiAgICAgICsgJyBnZW9zdW0gZ2V0IGdldGN1cnJlbnRkaXJlY3RvcnkgZ2V0X2VkZ2Vfd2VpZ2h0IGdldGVudiBnZXRfbHVfZmFjdG9ycyBnZXRfb3V0cHV0X3N0cmVhbV9zdHJpbmcnXG4gICAgICArICcgZ2V0X3BpeGVsIGdldF9wbG90X29wdGlvbiBnZXRfdGV4X2Vudmlyb25tZW50IGdldF90ZXhfZW52aXJvbm1lbnRfZGVmYXVsdCdcbiAgICAgICsgJyBnZXRfdmVydGV4X2xhYmVsIGdmYWN0b3IgZ2ZhY3RvcnN1bSBnZ2YgZ2lydGggZ2xvYmFsX3ZhcmlhbmNlcyBnbiBnbnVwbG90X2Nsb3NlJ1xuICAgICAgKyAnIGdudXBsb3RfcmVwbG90IGdudXBsb3RfcmVzZXQgZ251cGxvdF9yZXN0YXJ0IGdudXBsb3Rfc3RhcnQgZ28gR29zcGVyIEdvc3BlclN1bSdcbiAgICAgICsgJyBncjJkIGdyM2QgZ3JhZGVmIGdyYW1zY2htaWR0IGdyYXBoNl9kZWNvZGUgZ3JhcGg2X2VuY29kZSBncmFwaDZfZXhwb3J0IGdyYXBoNl9pbXBvcnQnXG4gICAgICArICcgZ3JhcGhfY2VudGVyIGdyYXBoX2NoYXJwb2x5IGdyYXBoX2VpZ2VudmFsdWVzIGdyYXBoX2Zsb3cgZ3JhcGhfb3JkZXIgZ3JhcGhfcGVyaXBoZXJ5J1xuICAgICAgKyAnIGdyYXBoX3Byb2R1Y3QgZ3JhcGhfc2l6ZSBncmFwaF91bmlvbiBncmVhdF9yaG9tYmljb3NpZG9kZWNhaGVkcm9uX2dyYXBoIGdyZWF0X3Job21iaWN1Ym9jdGFoZWRyb25fZ3JhcGgnXG4gICAgICArICcgZ3JpZF9ncmFwaCBncmluZCBncm9ibmVyX2Jhc2lzIGdyb3R6Y2hfZ3JhcGggaGFtaWx0b25fY3ljbGUgaGFtaWx0b25fcGF0aCdcbiAgICAgICsgJyBoYW5rZWwgaGFua2VsXzEgaGFua2VsXzIgaGFybW9uaWMgaGFybW9uaWNfbWVhbiBoYXYgaGVhd29vZF9ncmFwaCBoZXJtaXRlJ1xuICAgICAgKyAnIGhlc3NpYW4gaGdmcmVkIGhpbGJlcnRtYXAgaGlsYmVydF9tYXRyaXggaGlwb3cgaGlzdG9ncmFtIGhpc3RvZ3JhbV9kZXNjcmlwdGlvbidcbiAgICAgICsgJyBob2RnZSBob3JuZXIgaHlwZXJnZW9tZXRyaWMgaTAgaTEgJWliZXMgaWMxIGljMiBpY19jb252ZXJ0IGljaHIxIGljaHIyIGljb3NhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIGljb3NpZG9kZWNhaGVkcm9uX2dyYXBoIGljdXJ2YXR1cmUgaWRlbnQgaWRlbnRmb3IgaWRlbnRpdHkgaWRpZmYgaWRpbSBpZHVtbXknXG4gICAgICArICcgaWVxbiAlaWYgaWZhY3RvcnMgaWZyYW1lcyBpZnMgaWdjZGV4IGlnZW9kZXNpY19jb29yZHMgaWx0IGltYWdlIGltYWdwYXJ0J1xuICAgICAgKyAnIGltZXRyaWMgaW1wbGljaXQgaW1wbGljaXRfZGVyaXZhdGl2ZSBpbXBsaWNpdF9wbG90IGluZGV4ZWRfdGVuc29yIGluZGljZXMnXG4gICAgICArICcgaW5kdWNlZF9zdWJncmFwaCBpbmZlcmVuY2VwIGluZmVyZW5jZV9yZXN1bHQgaW5maXggaW5mb19kaXNwbGF5IGluaXRfYXRlbnNvcidcbiAgICAgICsgJyBpbml0X2N0ZW5zb3IgaW5fbmVpZ2hib3JzIGlubmVycHJvZHVjdCBpbnBhcnQgaW5wcm9kIGlucnQgaW50ZWdlcnAgaW50ZWdlcl9wYXJ0aXRpb25zJ1xuICAgICAgKyAnIGludGVncmF0ZSBpbnRlcnNlY3QgaW50ZXJzZWN0aW9uIGludGVydmFscCBpbnRvcG9pcyBpbnRvc3VtIGludmFyaWFudDEgaW52YXJpYW50MidcbiAgICAgICsgJyBpbnZlcnNlX2ZmdCBpbnZlcnNlX2phY29iaV9jZCBpbnZlcnNlX2phY29iaV9jbiBpbnZlcnNlX2phY29iaV9jcyBpbnZlcnNlX2phY29iaV9kYydcbiAgICAgICsgJyBpbnZlcnNlX2phY29iaV9kbiBpbnZlcnNlX2phY29iaV9kcyBpbnZlcnNlX2phY29iaV9uYyBpbnZlcnNlX2phY29iaV9uZCBpbnZlcnNlX2phY29iaV9ucydcbiAgICAgICsgJyBpbnZlcnNlX2phY29iaV9zYyBpbnZlcnNlX2phY29iaV9zZCBpbnZlcnNlX2phY29iaV9zbiBpbnZlcnQgaW52ZXJ0X2J5X2Fkam9pbnQnXG4gICAgICArICcgaW52ZXJ0X2J5X2x1IGludl9tb2QgaXJyIGlzIGlzX2JpY29ubmVjdGVkIGlzX2JpcGFydGl0ZSBpc19jb25uZWN0ZWQgaXNfZGlncmFwaCdcbiAgICAgICsgJyBpc19lZGdlX2luX2dyYXBoIGlzX2dyYXBoIGlzX2dyYXBoX29yX2RpZ3JhcGggaXNob3cgaXNfaXNvbW9ycGhpYyBpc29sYXRlJ1xuICAgICAgKyAnIGlzb21vcnBoaXNtIGlzX3BsYW5hciBpc3FydCBpc3JlYWxfcCBpc19zY29ubmVjdGVkIGlzX3RyZWUgaXNfdmVydGV4X2luX2dyYXBoJ1xuICAgICAgKyAnIGl0ZW1zX2luZmVyZW5jZSAlaiBqMCBqMSBqYWNvYmkgamFjb2JpYW4gamFjb2JpX2NkIGphY29iaV9jbiBqYWNvYmlfY3MgamFjb2JpX2RjJ1xuICAgICAgKyAnIGphY29iaV9kbiBqYWNvYmlfZHMgamFjb2JpX25jIGphY29iaV9uZCBqYWNvYmlfbnMgamFjb2JpX3AgamFjb2JpX3NjIGphY29iaV9zZCdcbiAgICAgICsgJyBqYWNvYmlfc24gSkYgam4gam9pbiBqb3JkYW4ganVsaWEganVsaWFfc2V0IGp1bGlhX3NpbiAlayBrZGVscyBrZGVsdGEga2lsbCdcbiAgICAgICsgJyBraWxsY29udGV4dCBrb3N0a2Ega3Jvbl9kZWx0YSBrcm9uZWNrZXJfcHJvZHVjdCBrdW1tZXJfbSBrdW1tZXJfdSBrdXJ0b3NpcydcbiAgICAgICsgJyBrdXJ0b3Npc19iZXJub3VsbGkga3VydG9zaXNfYmV0YSBrdXJ0b3Npc19iaW5vbWlhbCBrdXJ0b3Npc19jaGkyIGt1cnRvc2lzX2NvbnRpbnVvdXNfdW5pZm9ybSdcbiAgICAgICsgJyBrdXJ0b3Npc19kaXNjcmV0ZV91bmlmb3JtIGt1cnRvc2lzX2V4cCBrdXJ0b3Npc19mIGt1cnRvc2lzX2dhbW1hIGt1cnRvc2lzX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIGt1cnRvc2lzX2dlb21ldHJpYyBrdXJ0b3Npc19ndW1iZWwga3VydG9zaXNfaHlwZXJnZW9tZXRyaWMga3VydG9zaXNfbGFwbGFjZSdcbiAgICAgICsgJyBrdXJ0b3Npc19sb2dpc3RpYyBrdXJ0b3Npc19sb2dub3JtYWwga3VydG9zaXNfbmVnYXRpdmVfYmlub21pYWwga3VydG9zaXNfbm9uY2VudHJhbF9jaGkyJ1xuICAgICAgKyAnIGt1cnRvc2lzX25vbmNlbnRyYWxfc3R1ZGVudF90IGt1cnRvc2lzX25vcm1hbCBrdXJ0b3Npc19wYXJldG8ga3VydG9zaXNfcG9pc3NvbidcbiAgICAgICsgJyBrdXJ0b3Npc19yYXlsZWlnaCBrdXJ0b3Npc19zdHVkZW50X3Qga3VydG9zaXNfd2VpYnVsbCBsYWJlbCBsYWJlbHMgbGFncmFuZ2UnXG4gICAgICArICcgbGFndWVycmUgbGFtYmRhIGxhbWJlcnRfdyBsYXBsYWNlIGxhcGxhY2lhbl9tYXRyaXggbGFzdCBsYmZncyBsYzJrZHQgbGNoYXJwJ1xuICAgICAgKyAnIGxjX2wgbGNtIGxjX3UgbGRlZmludCBsZGlzcCBsZGlzcGxheSBsZWdlbmRyZV9wIGxlZ2VuZHJlX3EgbGVpbnN0ZWluIGxlbmd0aCdcbiAgICAgICsgJyBsZXQgbGV0cnVsZXMgbGV0c2ltcCBsZXZpX2Npdml0YSBsZnJlZW9mIGxndHJlaWxsaXMgbGhzIGxpIGxpZWRpZmYgbGltaXQnXG4gICAgICArICcgTGluZHN0ZWR0IGxpbmVhciBsaW5lYXJpbnRlcnBvbCBsaW5lYXJfcHJvZ3JhbSBsaW5lYXJfcmVncmVzc2lvbiBsaW5lX2dyYXBoJ1xuICAgICAgKyAnIGxpbnNvbHZlIGxpc3RhcnJheSBsaXN0X2NvcnJlbGF0aW9ucyBsaXN0aWZ5IGxpc3RfbWF0cml4X2VudHJpZXMgbGlzdF9uY19tb25vbWlhbHMnXG4gICAgICArICcgbGlzdG9mdGVucyBsaXN0b2Z2YXJzIGxpc3RwIGxtYXggbG1pbiBsb2FkIGxvYWRmaWxlIGxvY2FsIGxvY2F0ZV9tYXRyaXhfZW50cnknXG4gICAgICArICcgbG9nIGxvZ2NvbnRyYWN0IGxvZ19nYW1tYSBsb3BvdyBsb3JlbnR6X2dhdWdlIGxvd2VyY2FzZXAgbHBhcnQgbHJhdHN1YnN0J1xuICAgICAgKyAnIGxyZWR1Y2UgbHJpZW1hbm4gbHNxdWFyZXNfZXN0aW1hdGVzIGxzcXVhcmVzX2VzdGltYXRlc19hcHByb3hpbWF0ZSBsc3F1YXJlc19lc3RpbWF0ZXNfZXhhY3QnXG4gICAgICArICcgbHNxdWFyZXNfbXNlIGxzcXVhcmVzX3Jlc2lkdWFsX21zZSBsc3F1YXJlc19yZXNpZHVhbHMgbHN1bSBsdHJlaWxsaXMgbHVfYmFja3N1YidcbiAgICAgICsgJyBsdWNhcyBsdV9mYWN0b3IgJW0gbWFjcm9leHBhbmQgbWFjcm9leHBhbmQxIG1ha2VfYXJyYXkgbWFrZWJveCBtYWtlZmFjdCBtYWtlZ2FtbWEnXG4gICAgICArICcgbWFrZV9ncmFwaCBtYWtlX2xldmVsX3BpY3R1cmUgbWFrZWxpc3QgbWFrZU9yZGVycyBtYWtlX3BvbHlfY29udGluZW50IG1ha2VfcG9seV9jb3VudHJ5J1xuICAgICAgKyAnIG1ha2VfcG9seWdvbiBtYWtlX3JhbmRvbV9zdGF0ZSBtYWtlX3JnYl9waWN0dXJlIG1ha2VzZXQgbWFrZV9zdHJpbmdfaW5wdXRfc3RyZWFtJ1xuICAgICAgKyAnIG1ha2Vfc3RyaW5nX291dHB1dF9zdHJlYW0gbWFrZV90cmFuc2Zvcm0gbWFuZGVsYnJvdCBtYW5kZWxicm90X3NldCBtYXAgbWFwYXRvbSdcbiAgICAgICsgJyBtYXBsaXN0IG1hdGNoZGVjbGFyZSBtYXRjaGZpeCBtYXRfY29uZCBtYXRfZnVsbHVuYmxvY2tlciBtYXRfZnVuY3Rpb24gbWF0aG1sX2Rpc3BsYXknXG4gICAgICArICcgbWF0X25vcm0gbWF0cml4IG1hdHJpeG1hcCBtYXRyaXhwIG1hdHJpeF9zaXplIG1hdHRyYWNlIG1hdF90cmFjZSBtYXRfdW5ibG9ja2VyJ1xuICAgICAgKyAnIG1heCBtYXhfY2xpcXVlIG1heF9kZWdyZWUgbWF4X2Zsb3cgbWF4aW1pemVfbHAgbWF4X2luZGVwZW5kZW50X3NldCBtYXhfbWF0Y2hpbmcnXG4gICAgICArICcgbWF5YmUgbWQ1c3VtIG1lYW4gbWVhbl9iZXJub3VsbGkgbWVhbl9iZXRhIG1lYW5fYmlub21pYWwgbWVhbl9jaGkyIG1lYW5fY29udGludW91c191bmlmb3JtJ1xuICAgICAgKyAnIG1lYW5fZGV2aWF0aW9uIG1lYW5fZGlzY3JldGVfdW5pZm9ybSBtZWFuX2V4cCBtZWFuX2YgbWVhbl9nYW1tYSBtZWFuX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIG1lYW5fZ2VvbWV0cmljIG1lYW5fZ3VtYmVsIG1lYW5faHlwZXJnZW9tZXRyaWMgbWVhbl9sYXBsYWNlIG1lYW5fbG9naXN0aWMnXG4gICAgICArICcgbWVhbl9sb2dub3JtYWwgbWVhbl9uZWdhdGl2ZV9iaW5vbWlhbCBtZWFuX25vbmNlbnRyYWxfY2hpMiBtZWFuX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIG1lYW5fbm9ybWFsIG1lYW5fcGFyZXRvIG1lYW5fcG9pc3NvbiBtZWFuX3JheWxlaWdoIG1lYW5fc3R1ZGVudF90IG1lYW5fd2VpYnVsbCdcbiAgICAgICsgJyBtZWRpYW4gbWVkaWFuX2RldmlhdGlvbiBtZW1iZXIgbWVzaCBtZXRyaWNleHBhbmRhbGwgbWdmMV9zaGExIG1pbiBtaW5fZGVncmVlJ1xuICAgICAgKyAnIG1pbl9lZGdlX2N1dCBtaW5mYWN0b3JpYWwgbWluaW1hbFBvbHkgbWluaW1pemVfbHAgbWluaW11bV9zcGFubmluZ190cmVlIG1pbm9yJ1xuICAgICAgKyAnIG1pbnBhY2tfbHNxdWFyZXMgbWlucGFja19zb2x2ZSBtaW5fdmVydGV4X2NvdmVyIG1pbl92ZXJ0ZXhfY3V0IG1rZGlyIG1uZXd0b24nXG4gICAgICArICcgbW9kIG1vZGVfZGVjbGFyZSBtb2RlX2lkZW50aXR5IE1vZGVNYXRyaXggbW9lYml1cyBtb24yc2NodXIgbW9ubyBtb25vbWlhbF9kaW1lbnNpb25zJ1xuICAgICAgKyAnIG11bHRpYmVybnN0ZWluX3BvbHkgbXVsdGlfZGlzcGxheV9mb3JfdGV4aW5mbyBtdWx0aV9lbGVtIG11bHRpbm9taWFsIG11bHRpbm9taWFsX2NvZWZmJ1xuICAgICAgKyAnIG11bHRpX29yYml0IG11bHRpcGxvdF9tb2RlIG11bHRpX3B1aSBtdWx0c3ltIG11bHR0aHJ1IG15Y2llbHNraV9ncmFwaCBuYXJ5J1xuICAgICAgKyAnIG5hdHVyYWxfdW5pdCBuY19kZWdyZWUgbmNleHB0IG5jaGFycG9seSBuZWdhdGl2ZV9waWN0dXJlIG5laWdoYm9ycyBuZXcgbmV3Y29udGV4dCdcbiAgICAgICsgJyBuZXdkZXQgbmV3X2dyYXBoIG5ld2xpbmUgbmV3dG9uIG5ld192YXJpYWJsZSBuZXh0X3ByaW1lIG5pY2VkdW1taWVzIG5pY2VpbmRpY2VzJ1xuICAgICAgKyAnIG5pbnRoIG5vZml4IG5vbmFycmF5IG5vbmNlbnRyYWxfbW9tZW50IG5vbm1ldHJpY2l0eSBub25uZWdpbnRlZ2VycCBub25zY2FsYXJwJ1xuICAgICAgKyAnIG5vbnplcm9hbmRmcmVlb2Ygbm90ZXF1YWwgbm91bmlmeSBucHRldHJhZCBucHYgbnJvb3RzIG50ZXJtcyBudGVybXN0J1xuICAgICAgKyAnIG50aHJvb3QgbnVsbGl0eSBudWxsc3BhY2UgbnVtIG51bWJlcmVkX2JvdW5kYXJpZXMgbnVtYmVycCBudW1iZXJfdG9fb2N0ZXRzJ1xuICAgICAgKyAnIG51bV9kaXN0aW5jdF9wYXJ0aXRpb25zIG51bWVydmFsIG51bWZhY3RvciBudW1fcGFydGl0aW9ucyBudXN1bSBuemV0YSBuemV0YWknXG4gICAgICArICcgbnpldGFyIG9jdGV0c190b19udW1iZXIgb2N0ZXRzX3RvX29pZCBvZGRfZ2lydGggb2RkcCBvZGUyIG9kZV9jaGVjayBvZGVsaW4nXG4gICAgICArICcgb2lkX3RvX29jdGV0cyBvcCBvcGVuYSBvcGVuYV9iaW5hcnkgb3BlbnIgb3BlbnJfYmluYXJ5IG9wZW53IG9wZW53X2JpbmFyeSdcbiAgICAgICsgJyBvcGVyYXRvcnAgb3BzdWJzdCBvcHRpbWl6ZSAlb3Igb3JiaXQgb3JiaXRzIG9yZGVyZ3JlYXQgb3JkZXJncmVhdHAgb3JkZXJsZXNzJ1xuICAgICAgKyAnIG9yZGVybGVzc3Agb3J0aG9nb25hbF9jb21wbGVtZW50IG9ydGhvcG9seV9yZWN1ciBvcnRob3BvbHlfd2VpZ2h0IG91dGVybWFwJ1xuICAgICAgKyAnIG91dF9uZWlnaGJvcnMgb3V0b2Zwb2lzIHBhZGUgcGFyYWJvbGljX2N5bGluZGVyX2QgcGFyYW1ldHJpYyBwYXJhbWV0cmljX3N1cmZhY2UnXG4gICAgICArICcgcGFyZyBwYXJHb3NwZXIgcGFyc2Vfc3RyaW5nIHBhcnNlX3RpbWVkYXRlIHBhcnQgcGFydDJjb250IHBhcnRmcmFjIHBhcnRpdGlvbidcbiAgICAgICsgJyBwYXJ0aXRpb25fc2V0IHBhcnRwb2wgcGF0aF9kaWdyYXBoIHBhdGhfZ3JhcGggcGF0aG5hbWVfZGlyZWN0b3J5IHBhdGhuYW1lX25hbWUnXG4gICAgICArICcgcGF0aG5hbWVfdHlwZSBwZGZfYmVybm91bGxpIHBkZl9iZXRhIHBkZl9iaW5vbWlhbCBwZGZfY2F1Y2h5IHBkZl9jaGkyIHBkZl9jb250aW51b3VzX3VuaWZvcm0nXG4gICAgICArICcgcGRmX2Rpc2NyZXRlX3VuaWZvcm0gcGRmX2V4cCBwZGZfZiBwZGZfZ2FtbWEgcGRmX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIHBkZl9nZW9tZXRyaWMgcGRmX2d1bWJlbCBwZGZfaHlwZXJnZW9tZXRyaWMgcGRmX2xhcGxhY2UgcGRmX2xvZ2lzdGljIHBkZl9sb2dub3JtYWwnXG4gICAgICArICcgcGRmX25lZ2F0aXZlX2Jpbm9taWFsIHBkZl9ub25jZW50cmFsX2NoaTIgcGRmX25vbmNlbnRyYWxfc3R1ZGVudF90IHBkZl9ub3JtYWwnXG4gICAgICArICcgcGRmX3BhcmV0byBwZGZfcG9pc3NvbiBwZGZfcmFua19zdW0gcGRmX3JheWxlaWdoIHBkZl9zaWduZWRfcmFuayBwZGZfc3R1ZGVudF90J1xuICAgICAgKyAnIHBkZl93ZWlidWxsIHBlYXJzb25fc2tld25lc3MgcGVybWFuZW50IHBlcm11dCBwZXJtdXRhdGlvbiBwZXJtdXRhdGlvbnMgcGV0ZXJzZW5fZ3JhcGgnXG4gICAgICArICcgcGV0cm92IHBpY2thcGFydCBwaWN0dXJlX2VxdWFscCBwaWN0dXJlcCBwaWVjaGFydCBwaWVjaGFydF9kZXNjcmlwdGlvbiBwbGFuYXJfZW1iZWRkaW5nJ1xuICAgICAgKyAnIHBsYXliYWNrIHBsb2cgcGxvdDJkIHBsb3QzZCBwbG90ZGYgcGxvdGVxIHBsc3F1YXJlcyBwb2NoaGFtbWVyIHBvaW50cyBwb2lzZGlmZidcbiAgICAgICsgJyBwb2lzZXhwdCBwb2lzaW50IHBvaXNtYXAgcG9pc3BsdXMgcG9pc3NpbXAgcG9pc3N1YnN0IHBvaXN0aW1lcyBwb2lzdHJpbSBwb2xhcidcbiAgICAgICsgJyBwb2xhcmZvcm0gcG9sYXJ0b3JlY3QgcG9sYXJfdG9feHkgcG9seV9hZGQgcG9seV9idWNoYmVyZ2VyIHBvbHlfYnVjaGJlcmdlcl9jcml0ZXJpb24nXG4gICAgICArICcgcG9seV9jb2xvbl9pZGVhbCBwb2x5X2NvbnRlbnQgcG9seWRlY29tcCBwb2x5X2RlcGVuZHNfcCBwb2x5X2VsaW1pbmF0aW9uX2lkZWFsJ1xuICAgICAgKyAnIHBvbHlfZXhhY3RfZGl2aWRlIHBvbHlfZXhwYW5kIHBvbHlfZXhwdCBwb2x5X2djZCBwb2x5Z29uIHBvbHlfZ3JvYm5lciBwb2x5X2dyb2JuZXJfZXF1YWwnXG4gICAgICArICcgcG9seV9ncm9ibmVyX21lbWJlciBwb2x5X2dyb2JuZXJfc3Vic2V0cCBwb2x5X2lkZWFsX2ludGVyc2VjdGlvbiBwb2x5X2lkZWFsX3BvbHlzYXR1cmF0aW9uJ1xuICAgICAgKyAnIHBvbHlfaWRlYWxfcG9seXNhdHVyYXRpb24xIHBvbHlfaWRlYWxfc2F0dXJhdGlvbiBwb2x5X2lkZWFsX3NhdHVyYXRpb24xIHBvbHlfbGNtJ1xuICAgICAgKyAnIHBvbHlfbWluaW1pemF0aW9uIHBvbHltb2QgcG9seV9tdWx0aXBseSBwb2x5bm9tZTJlbGUgcG9seW5vbWlhbHAgcG9seV9ub3JtYWxfZm9ybSdcbiAgICAgICsgJyBwb2x5X25vcm1hbGl6ZSBwb2x5X25vcm1hbGl6ZV9saXN0IHBvbHlfcG9seXNhdHVyYXRpb25fZXh0ZW5zaW9uIHBvbHlfcHJpbWl0aXZlX3BhcnQnXG4gICAgICArICcgcG9seV9wc2V1ZG9fZGl2aWRlIHBvbHlfcmVkdWNlZF9ncm9ibmVyIHBvbHlfcmVkdWN0aW9uIHBvbHlfc2F0dXJhdGlvbl9leHRlbnNpb24nXG4gICAgICArICcgcG9seV9zX3BvbHlub21pYWwgcG9seV9zdWJ0cmFjdCBwb2x5dG9jb21wYW5pb24gcG9wIHBvc3RmaXggcG90ZW50aWFsIHBvd2VyX21vZCdcbiAgICAgICsgJyBwb3dlcnNlcmllcyBwb3dlcnNldCBwcmVmaXggcHJldl9wcmltZSBwcmltZXAgcHJpbWVzIHByaW5jaXBhbF9jb21wb25lbnRzJ1xuICAgICAgKyAnIHByaW50IHByaW50ZiBwcmludGZpbGUgcHJpbnRfZ3JhcGggcHJpbnRwb2lzIHByaW50cHJvcHMgcHJvZHJhYyBwcm9kdWN0IHByb3BlcnRpZXMnXG4gICAgICArICcgcHJvcHZhcnMgcHNpIHBzdWJzdCBwdHJpYW5ndWxhcml6ZSBwdWkgcHVpMmNvbXAgcHVpMmVsZSBwdWkycG9seW5vbWUgcHVpX2RpcmVjdCdcbiAgICAgICsgJyBwdWlyZWR1YyBwdXNoIHB1dCBwdiBxcHV0IHFyYW5nZSBxdHkgcXVhZF9jb250cm9sIHF1YWRfcWFnIHF1YWRfcWFnaSBxdWFkX3FhZ3AnXG4gICAgICArICcgcXVhZF9xYWdzIHF1YWRfcWF3YyBxdWFkX3Fhd2YgcXVhZF9xYXdvIHF1YWRfcWF3cyBxdWFkcmlsYXRlcmFsIHF1YW50aWxlJ1xuICAgICAgKyAnIHF1YW50aWxlX2Jlcm5vdWxsaSBxdWFudGlsZV9iZXRhIHF1YW50aWxlX2Jpbm9taWFsIHF1YW50aWxlX2NhdWNoeSBxdWFudGlsZV9jaGkyJ1xuICAgICAgKyAnIHF1YW50aWxlX2NvbnRpbnVvdXNfdW5pZm9ybSBxdWFudGlsZV9kaXNjcmV0ZV91bmlmb3JtIHF1YW50aWxlX2V4cCBxdWFudGlsZV9mJ1xuICAgICAgKyAnIHF1YW50aWxlX2dhbW1hIHF1YW50aWxlX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHF1YW50aWxlX2dlb21ldHJpYyBxdWFudGlsZV9ndW1iZWwnXG4gICAgICArICcgcXVhbnRpbGVfaHlwZXJnZW9tZXRyaWMgcXVhbnRpbGVfbGFwbGFjZSBxdWFudGlsZV9sb2dpc3RpYyBxdWFudGlsZV9sb2dub3JtYWwnXG4gICAgICArICcgcXVhbnRpbGVfbmVnYXRpdmVfYmlub21pYWwgcXVhbnRpbGVfbm9uY2VudHJhbF9jaGkyIHF1YW50aWxlX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHF1YW50aWxlX25vcm1hbCBxdWFudGlsZV9wYXJldG8gcXVhbnRpbGVfcG9pc3NvbiBxdWFudGlsZV9yYXlsZWlnaCBxdWFudGlsZV9zdHVkZW50X3QnXG4gICAgICArICcgcXVhbnRpbGVfd2VpYnVsbCBxdWFydGlsZV9za2V3bmVzcyBxdWl0IHF1bml0IHF1b3RpZW50IHJhY2FoX3YgcmFjYWhfdyByYWRjYW4nXG4gICAgICArICcgcmFkaXVzIHJhbmRvbSByYW5kb21fYmVybm91bGxpIHJhbmRvbV9iZXRhIHJhbmRvbV9iaW5vbWlhbCByYW5kb21fYmlwYXJ0aXRlX2dyYXBoJ1xuICAgICAgKyAnIHJhbmRvbV9jYXVjaHkgcmFuZG9tX2NoaTIgcmFuZG9tX2NvbnRpbnVvdXNfdW5pZm9ybSByYW5kb21fZGlncmFwaCByYW5kb21fZGlzY3JldGVfdW5pZm9ybSdcbiAgICAgICsgJyByYW5kb21fZXhwIHJhbmRvbV9mIHJhbmRvbV9nYW1tYSByYW5kb21fZ2VuZXJhbF9maW5pdGVfZGlzY3JldGUgcmFuZG9tX2dlb21ldHJpYydcbiAgICAgICsgJyByYW5kb21fZ3JhcGggcmFuZG9tX2dyYXBoMSByYW5kb21fZ3VtYmVsIHJhbmRvbV9oeXBlcmdlb21ldHJpYyByYW5kb21fbGFwbGFjZSdcbiAgICAgICsgJyByYW5kb21fbG9naXN0aWMgcmFuZG9tX2xvZ25vcm1hbCByYW5kb21fbmVnYXRpdmVfYmlub21pYWwgcmFuZG9tX25ldHdvcmsnXG4gICAgICArICcgcmFuZG9tX25vbmNlbnRyYWxfY2hpMiByYW5kb21fbm9uY2VudHJhbF9zdHVkZW50X3QgcmFuZG9tX25vcm1hbCByYW5kb21fcGFyZXRvJ1xuICAgICAgKyAnIHJhbmRvbV9wZXJtdXRhdGlvbiByYW5kb21fcG9pc3NvbiByYW5kb21fcmF5bGVpZ2ggcmFuZG9tX3JlZ3VsYXJfZ3JhcGggcmFuZG9tX3N0dWRlbnRfdCdcbiAgICAgICsgJyByYW5kb21fdG91cm5hbWVudCByYW5kb21fdHJlZSByYW5kb21fd2VpYnVsbCByYW5nZSByYW5rIHJhdCByYXRjb2VmIHJhdGRlbm9tJ1xuICAgICAgKyAnIHJhdGRpZmYgcmF0ZGlzcmVwIHJhdGV4cGFuZCByYXRpbnRlcnBvbCByYXRpb25hbCByYXRpb25hbGl6ZSByYXRudW1lciByYXRudW1wJ1xuICAgICAgKyAnIHJhdHAgcmF0c2ltcCByYXRzdWJzdCByYXR2YXJzIHJhdHdlaWdodCByZWFkIHJlYWRfYXJyYXkgcmVhZF9iaW5hcnlfYXJyYXknXG4gICAgICArICcgcmVhZF9iaW5hcnlfbGlzdCByZWFkX2JpbmFyeV9tYXRyaXggcmVhZGJ5dGUgcmVhZGNoYXIgcmVhZF9oYXNoZWRfYXJyYXkgcmVhZGxpbmUnXG4gICAgICArICcgcmVhZF9saXN0IHJlYWRfbWF0cml4IHJlYWRfbmVzdGVkX2xpc3QgcmVhZG9ubHkgcmVhZF94cG0gcmVhbF9pbWFncGFydF90b19jb25qdWdhdGUnXG4gICAgICArICcgcmVhbHBhcnQgcmVhbHJvb3RzIHJlYXJyYXkgcmVjdGFuZ2xlIHJlY3Rmb3JtIHJlY3Rmb3JtX2xvZ19pZl9jb25zdGFudCByZWN0dG9wb2xhcidcbiAgICAgICsgJyByZWRpZmYgcmVkdWNlX2NvbnN0cyByZWR1Y2Vfb3JkZXIgcmVnaW9uIHJlZ2lvbl9ib3VuZGFyaWVzIHJlZ2lvbl9ib3VuZGFyaWVzX3BsdXMnXG4gICAgICArICcgcmVtIHJlbWFpbmRlciByZW1hcnJheSByZW1ib3ggcmVtY29tcHMgcmVtY29uIHJlbWNvb3JkIHJlbWZ1biByZW1mdW5jdGlvbidcbiAgICAgICsgJyByZW1sZXQgcmVtb3ZlIHJlbW92ZV9jb25zdHZhbHVlIHJlbW92ZV9kaW1lbnNpb25zIHJlbW92ZV9lZGdlIHJlbW92ZV9mdW5kYW1lbnRhbF9kaW1lbnNpb25zJ1xuICAgICAgKyAnIHJlbW92ZV9mdW5kYW1lbnRhbF91bml0cyByZW1vdmVfcGxvdF9vcHRpb24gcmVtb3ZlX3ZlcnRleCByZW1wYXJ0IHJlbXJ1bGUnXG4gICAgICArICcgcmVtc3ltIHJlbXZhbHVlIHJlbmFtZSByZW5hbWVfZmlsZSByZXNldCByZXNldF9kaXNwbGF5cyByZXNpZHVlIHJlc29sdmFudGUnXG4gICAgICArICcgcmVzb2x2YW50ZV9hbHRlcm5lZTEgcmVzb2x2YW50ZV9iaXBhcnRpdGUgcmVzb2x2YW50ZV9kaWVkcmFsZSByZXNvbHZhbnRlX2tsZWluJ1xuICAgICAgKyAnIHJlc29sdmFudGVfa2xlaW4zIHJlc29sdmFudGVfcHJvZHVpdF9zeW0gcmVzb2x2YW50ZV91bml0YWlyZSByZXNvbHZhbnRlX3ZpZXJlcidcbiAgICAgICsgJyByZXN0IHJlc3VsdGFudCByZXR1cm4gcmV2ZWFsIHJldmVyc2UgcmV2ZXJ0IHJldmVydDIgcmdiMmxldmVsIHJocyByaWNjaSByaWVtYW5uJ1xuICAgICAgKyAnIHJpbnZhcmlhbnQgcmlzY2ggcmsgcm1kaXIgcm5jb21iaW5lIHJvbWJlcmcgcm9vbSByb290c2NvbnRyYWN0IHJvdW5kIHJvdydcbiAgICAgICsgJyByb3dvcCByb3dzd2FwIHJyZWR1Y2UgcnVuX3Rlc3RzdWl0ZSAlcyBzYXZlIHNhdmluZyBzY2FsYXJwIHNjYWxlZF9iZXNzZWxfaSdcbiAgICAgICsgJyBzY2FsZWRfYmVzc2VsX2kwIHNjYWxlZF9iZXNzZWxfaTEgc2NhbGVmYWN0b3JzIHNjYW5tYXAgc2NhdHRlcnBsb3Qgc2NhdHRlcnBsb3RfZGVzY3JpcHRpb24nXG4gICAgICArICcgc2NlbmUgc2NodXIyY29tcCBzY29uY2F0IHNjb3B5IHNjc2ltcCBzY3VydmF0dXJlIHNkb3duY2FzZSBzZWMgc2VjaCBzZWNvbmQnXG4gICAgICArICcgc2VxdWFsIHNlcXVhbGlnbm9yZSBzZXRfYWx0X2Rpc3BsYXkgc2V0ZGlmZmVyZW5jZSBzZXRfZHJhd19kZWZhdWx0cyBzZXRfZWRnZV93ZWlnaHQnXG4gICAgICArICcgc2V0ZWxteCBzZXRlcXVhbHAgc2V0aWZ5IHNldHAgc2V0X3BhcnRpdGlvbnMgc2V0X3Bsb3Rfb3B0aW9uIHNldF9wcm9tcHQgc2V0X3JhbmRvbV9zdGF0ZSdcbiAgICAgICsgJyBzZXRfdGV4X2Vudmlyb25tZW50IHNldF90ZXhfZW52aXJvbm1lbnRfZGVmYXVsdCBzZXR1bml0cyBzZXR1cF9hdXRvbG9hZCBzZXRfdXBfZG90X3NpbXBsaWZpY2F0aW9ucydcbiAgICAgICsgJyBzZXRfdmVydGV4X2xhYmVsIHNldmVudGggc2V4cGxvZGUgc2Ygc2hhMXN1bSBzaGEyNTZzdW0gc2hvcnRlc3RfcGF0aCBzaG9ydGVzdF93ZWlnaHRlZF9wYXRoJ1xuICAgICAgKyAnIHNob3cgc2hvd2NvbXBzIHNob3dyYXR2YXJzIHNpZXJwaW5za2lhbGUgc2llcnBpbnNraW1hcCBzaWduIHNpZ251bSBzaW1pbGFyaXR5dHJhbnNmb3JtJ1xuICAgICAgKyAnIHNpbXBfaW5lcXVhbGl0eSBzaW1wbGlmeV9zdW0gc2ltcGxvZGUgc2ltcG1ldGRlcml2IHNpbXRyYW4gc2luIHNpbmggc2luc2VydCdcbiAgICAgICsgJyBzaW52ZXJ0Y2FzZSBzaXh0aCBza2V3bmVzcyBza2V3bmVzc19iZXJub3VsbGkgc2tld25lc3NfYmV0YSBza2V3bmVzc19iaW5vbWlhbCdcbiAgICAgICsgJyBza2V3bmVzc19jaGkyIHNrZXduZXNzX2NvbnRpbnVvdXNfdW5pZm9ybSBza2V3bmVzc19kaXNjcmV0ZV91bmlmb3JtIHNrZXduZXNzX2V4cCdcbiAgICAgICsgJyBza2V3bmVzc19mIHNrZXduZXNzX2dhbW1hIHNrZXduZXNzX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHNrZXduZXNzX2dlb21ldHJpYydcbiAgICAgICsgJyBza2V3bmVzc19ndW1iZWwgc2tld25lc3NfaHlwZXJnZW9tZXRyaWMgc2tld25lc3NfbGFwbGFjZSBza2V3bmVzc19sb2dpc3RpYydcbiAgICAgICsgJyBza2V3bmVzc19sb2dub3JtYWwgc2tld25lc3NfbmVnYXRpdmVfYmlub21pYWwgc2tld25lc3Nfbm9uY2VudHJhbF9jaGkyIHNrZXduZXNzX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHNrZXduZXNzX25vcm1hbCBza2V3bmVzc19wYXJldG8gc2tld25lc3NfcG9pc3NvbiBza2V3bmVzc19yYXlsZWlnaCBza2V3bmVzc19zdHVkZW50X3QnXG4gICAgICArICcgc2tld25lc3Nfd2VpYnVsbCBzbGVuZ3RoIHNtYWtlIHNtYWxsX3Job21iaWNvc2lkb2RlY2FoZWRyb25fZ3JhcGggc21hbGxfcmhvbWJpY3Vib2N0YWhlZHJvbl9ncmFwaCdcbiAgICAgICsgJyBzbWF4IHNtaW4gc21pc21hdGNoIHNub3dtYXAgc251Yl9jdWJlX2dyYXBoIHNudWJfZG9kZWNhaGVkcm9uX2dyYXBoIHNvbHZlJ1xuICAgICAgKyAnIHNvbHZlX3JlYyBzb2x2ZV9yZWNfcmF0IHNvbWUgc29tcmFjIHNvcnQgc3BhcnNlNl9kZWNvZGUgc3BhcnNlNl9lbmNvZGUgc3BhcnNlNl9leHBvcnQnXG4gICAgICArICcgc3BhcnNlNl9pbXBvcnQgc3BlY2ludCBzcGhlcmljYWwgc3BoZXJpY2FsX2Jlc3NlbF9qIHNwaGVyaWNhbF9iZXNzZWxfeSBzcGhlcmljYWxfaGFua2VsMSdcbiAgICAgICsgJyBzcGhlcmljYWxfaGFua2VsMiBzcGhlcmljYWxfaGFybW9uaWMgc3BoZXJpY2FsX3RvX3h5eiBzcGxpY2Ugc3BsaXQgc3Bvc2l0aW9uJ1xuICAgICAgKyAnIHNwcmludCBzcWZyIHNxcnQgc3FydGRlbmVzdCBzcmVtb3ZlIHNyZW1vdmVmaXJzdCBzcmV2ZXJzZSBzc2VhcmNoIHNzb3J0IHNzdGF0dXMnXG4gICAgICArICcgc3N1YnN0IHNzdWJzdGZpcnN0IHN0YWlyY2FzZSBzdGFuZGFyZGl6ZSBzdGFuZGFyZGl6ZV9pbnZlcnNlX3RyaWcgc3RhcnBsb3QnXG4gICAgICArICcgc3RhcnBsb3RfZGVzY3JpcHRpb24gc3RhdHVzIHN0ZCBzdGQxIHN0ZF9iZXJub3VsbGkgc3RkX2JldGEgc3RkX2Jpbm9taWFsJ1xuICAgICAgKyAnIHN0ZF9jaGkyIHN0ZF9jb250aW51b3VzX3VuaWZvcm0gc3RkX2Rpc2NyZXRlX3VuaWZvcm0gc3RkX2V4cCBzdGRfZiBzdGRfZ2FtbWEnXG4gICAgICArICcgc3RkX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHN0ZF9nZW9tZXRyaWMgc3RkX2d1bWJlbCBzdGRfaHlwZXJnZW9tZXRyaWMgc3RkX2xhcGxhY2UnXG4gICAgICArICcgc3RkX2xvZ2lzdGljIHN0ZF9sb2dub3JtYWwgc3RkX25lZ2F0aXZlX2Jpbm9taWFsIHN0ZF9ub25jZW50cmFsX2NoaTIgc3RkX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHN0ZF9ub3JtYWwgc3RkX3BhcmV0byBzdGRfcG9pc3NvbiBzdGRfcmF5bGVpZ2ggc3RkX3N0dWRlbnRfdCBzdGRfd2VpYnVsbCdcbiAgICAgICsgJyBzdGVtcGxvdCBzdGlybGluZyBzdGlybGluZzEgc3RpcmxpbmcyIHN0cmltIHN0cmltbCBzdHJpbXIgc3RyaW5nIHN0cmluZ291dCdcbiAgICAgICsgJyBzdHJpbmdwIHN0cm9uZ19jb21wb25lbnRzIHN0cnV2ZV9oIHN0cnV2ZV9sIHN1YmxpcyBzdWJsaXN0IHN1Ymxpc3RfaW5kaWNlcydcbiAgICAgICsgJyBzdWJtYXRyaXggc3Vic2FtcGxlIHN1YnNldCBzdWJzZXRwIHN1YnN0IHN1YnN0aW5wYXJ0IHN1YnN0X3BhcmFsbGVsIHN1YnN0cGFydCdcbiAgICAgICsgJyBzdWJzdHJpbmcgc3VidmFyIHN1YnZhcnAgc3VtIHN1bWNvbnRyYWN0IHN1bW1hbmRfdG9fcmVjIHN1cGNhc2Ugc3VwY29udGV4dCdcbiAgICAgICsgJyBzeW1ib2xwIHN5bW1kaWZmZXJlbmNlIHN5bW1ldHJpY3Agc3lzdGVtIHRha2VfY2hhbm5lbCB0YWtlX2luZmVyZW5jZSB0YW4nXG4gICAgICArICcgdGFuaCB0YXlsb3IgdGF5bG9yaW5mbyB0YXlsb3JwIHRheWxvcl9zaW1wbGlmaWVyIHRheXRvcmF0IHRjbF9vdXRwdXQgdGNvbnRyYWN0J1xuICAgICAgKyAnIHRlbGxyYXQgdGVsbHNpbXAgdGVsbHNpbXBhZnRlciB0ZW50ZXggdGVudGggdGVzdF9tZWFuIHRlc3RfbWVhbnNfZGlmZmVyZW5jZSdcbiAgICAgICsgJyB0ZXN0X25vcm1hbGl0eSB0ZXN0X3Byb3BvcnRpb24gdGVzdF9wcm9wb3J0aW9uc19kaWZmZXJlbmNlIHRlc3RfcmFua19zdW0nXG4gICAgICArICcgdGVzdF9zaWduIHRlc3Rfc2lnbmVkX3JhbmsgdGVzdF92YXJpYW5jZSB0ZXN0X3ZhcmlhbmNlX3JhdGlvIHRleCB0ZXgxIHRleF9kaXNwbGF5J1xuICAgICAgKyAnIHRleHB1dCAldGggdGhpcmQgdGhyb3cgdGltZSB0aW1lZGF0ZSB0aW1lciB0aW1lcl9pbmZvIHRsZGVmaW50IHRsaW1pdCB0b2RkX2NveGV0ZXInXG4gICAgICArICcgdG9lcGxpdHogdG9rZW5zIHRvX2xpc3AgdG9wb2xvZ2ljYWxfc29ydCB0b19wb2x5IHRvX3BvbHlfc29sdmUgdG90YWxkaXNyZXAnXG4gICAgICArICcgdG90YWxmb3VyaWVyIHRvdGllbnQgdHBhcnRwb2wgdHJhY2UgdHJhY2VtYXRyaXggdHJhY2Vfb3B0aW9ucyB0cmFuc2Zvcm1fc2FtcGxlJ1xuICAgICAgKyAnIHRyYW5zbGF0ZSB0cmFuc2xhdGVfZmlsZSB0cmFuc3Bvc2UgdHJlZWZhbGUgdHJlZV9yZWR1Y2UgdHJlaWxsaXMgdHJlaW5hdCdcbiAgICAgICsgJyB0cmlhbmdsZSB0cmlhbmd1bGFyaXplIHRyaWdleHBhbmQgdHJpZ3JhdCB0cmlncmVkdWNlIHRyaWdzaW1wIHRydW5jIHRydW5jYXRlJ1xuICAgICAgKyAnIHRydW5jYXRlZF9jdWJlX2dyYXBoIHRydW5jYXRlZF9kb2RlY2FoZWRyb25fZ3JhcGggdHJ1bmNhdGVkX2ljb3NhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIHRydW5jYXRlZF90ZXRyYWhlZHJvbl9ncmFwaCB0cl93YXJuaW5nc19nZXQgdHViZSB0dXR0ZV9ncmFwaCB1ZWl2ZWN0cyB1Zm9yZ2V0J1xuICAgICAgKyAnIHVsdHJhc3BoZXJpY2FsIHVuZGVybHlpbmdfZ3JhcGggdW5kaWZmIHVuaW9uIHVuaXF1ZSB1bml0ZWlnZW52ZWN0b3JzIHVuaXRwJ1xuICAgICAgKyAnIHVuaXRzIHVuaXRfc3RlcCB1bml0dmVjdG9yIHVub3JkZXIgdW5zdW0gdW50ZWxscmF0IHVudGltZXInXG4gICAgICArICcgdW50cmFjZSB1cHBlcmNhc2VwIHVyaWNjaSB1cmllbWFubiB1dmVjdCB2YW5kZXJtb25kZV9tYXRyaXggdmFyIHZhcjEgdmFyX2Jlcm5vdWxsaSdcbiAgICAgICsgJyB2YXJfYmV0YSB2YXJfYmlub21pYWwgdmFyX2NoaTIgdmFyX2NvbnRpbnVvdXNfdW5pZm9ybSB2YXJfZGlzY3JldGVfdW5pZm9ybSdcbiAgICAgICsgJyB2YXJfZXhwIHZhcl9mIHZhcl9nYW1tYSB2YXJfZ2VuZXJhbF9maW5pdGVfZGlzY3JldGUgdmFyX2dlb21ldHJpYyB2YXJfZ3VtYmVsJ1xuICAgICAgKyAnIHZhcl9oeXBlcmdlb21ldHJpYyB2YXJfbGFwbGFjZSB2YXJfbG9naXN0aWMgdmFyX2xvZ25vcm1hbCB2YXJfbmVnYXRpdmVfYmlub21pYWwnXG4gICAgICArICcgdmFyX25vbmNlbnRyYWxfY2hpMiB2YXJfbm9uY2VudHJhbF9zdHVkZW50X3QgdmFyX25vcm1hbCB2YXJfcGFyZXRvIHZhcl9wb2lzc29uJ1xuICAgICAgKyAnIHZhcl9yYXlsZWlnaCB2YXJfc3R1ZGVudF90IHZhcl93ZWlidWxsIHZlY3RvciB2ZWN0b3Jwb3RlbnRpYWwgdmVjdG9yc2ltcCdcbiAgICAgICsgJyB2ZXJiaWZ5IHZlcnMgdmVydGV4X2NvbG9yaW5nIHZlcnRleF9jb25uZWN0aXZpdHkgdmVydGV4X2RlZ3JlZSB2ZXJ0ZXhfZGlzdGFuY2UnXG4gICAgICArICcgdmVydGV4X2VjY2VudHJpY2l0eSB2ZXJ0ZXhfaW5fZGVncmVlIHZlcnRleF9vdXRfZGVncmVlIHZlcnRpY2VzIHZlcnRpY2VzX3RvX2N5Y2xlJ1xuICAgICAgKyAnIHZlcnRpY2VzX3RvX3BhdGggJXcgd2V5bCB3aGVlbF9ncmFwaCB3aWVuZXJfaW5kZXggd2lnbmVyXzNqIHdpZ25lcl82aidcbiAgICAgICsgJyB3aWduZXJfOWogd2l0aF9zdGRvdXQgd3JpdGVfYmluYXJ5X2RhdGEgd3JpdGVieXRlIHdyaXRlX2RhdGEgd3JpdGVmaWxlIHdyb25za2lhbidcbiAgICAgICsgJyB4cmVkdWNlIHh0aHJ1ICV5IFplaWxiZXJnZXIgemVyb2VxdWl2IHplcm9mb3IgemVyb21hdHJpeCB6ZXJvbWF0cml4cCB6ZXRhJ1xuICAgICAgKyAnIHpnZWV2IHpoZWV2IHpsYW5nZSB6bl9hZGRfdGFibGUgem5fY2FybWljaGFlbF9sYW1iZGEgem5fY2hhcmFjdGVyaXN0aWNfZmFjdG9ycydcbiAgICAgICsgJyB6bl9kZXRlcm1pbmFudCB6bl9mYWN0b3JfZ2VuZXJhdG9ycyB6bl9pbnZlcnRfYnlfbHUgem5fbG9nIHpuX211bHRfdGFibGUnXG4gICAgICArICcgYWJzYm94Y2hhciBhY3RpdmVjb250ZXh0cyBhZGFwdF9kZXB0aCBhZGRpdGl2ZSBhZGltIGFmb3JtIGFsZ2VicmFpYydcbiAgICAgICsgJyBhbGdlcHNpbG9uIGFsZ2V4YWN0IGFsaWFzZXMgYWxsYnV0IGFsbF9kb3RzaW1wX2Rlbm9tcyBhbGxvY2F0aW9uIGFsbHN5bSBhbHBoYWJldGljJ1xuICAgICAgKyAnIGFuaW1hdGlvbiBhbnRpc3ltbWV0cmljIGFycmF5cyBhc2tleHAgYXNzdW1lX3BvcyBhc3N1bWVfcG9zX3ByZWQgYXNzdW1lc2NhbGFyJ1xuICAgICAgKyAnIGFzeW1ib2wgYXRvbWdyYWQgYXRyaWcxIGF4ZXMgYXhpc18zZCBheGlzX2JvdHRvbSBheGlzX2xlZnQgYXhpc19yaWdodCBheGlzX3RvcCdcbiAgICAgICsgJyBhemltdXRoIGJhY2tncm91bmQgYmFja2dyb3VuZF9jb2xvciBiYWNrc3Vic3QgYmVybGVmYWN0IGJlcm5zdGVpbl9leHBsaWNpdCdcbiAgICAgICsgJyBiZXNzZWxleHBhbmQgYmV0YV9hcmdzX3N1bV90b19pbnRlZ2VyIGJldGFfZXhwYW5kIGJmdG9yYXQgYmZ0cnVuYyBiaW5kdGVzdCdcbiAgICAgICsgJyBib3JkZXIgYm91bmRhcmllc19hcnJheSBib3ggYm94Y2hhciBicmVha3VwICVjIGNhcHBpbmcgY2F1Y2h5c3VtIGNicmFuZ2UnXG4gICAgICArICcgY2J0aWNzIGNlbnRlciBjZmxlbmd0aCBjZnJhbWVfZmxhZyBjbm9ubWV0X2ZsYWcgY29sb3IgY29sb3JfYmFyIGNvbG9yX2Jhcl90aWNzJ1xuICAgICAgKyAnIGNvbG9yYm94IGNvbHVtbnMgY29tbXV0YXRpdmUgY29tcGxleCBjb25lIGNvbnRleHQgY29udGV4dHMgY29udG91ciBjb250b3VyX2xldmVscydcbiAgICAgICsgJyBjb3NucGlmbGFnIGN0YXlwb3YgY3RheXB0IGN0YXlzd2l0Y2ggY3RheXZhciBjdF9jb29yZHMgY3RvcnNpb25fZmxhZyBjdHJnc2ltcCdcbiAgICAgICsgJyBjdWJlIGN1cnJlbnRfbGV0X3J1bGVfcGFja2FnZSBjeWxpbmRlciBkYXRhX2ZpbGVfbmFtZSBkZWJ1Z21vZGUgZGVjcmVhc2luZydcbiAgICAgICsgJyBkZWZhdWx0X2xldF9ydWxlX3BhY2thZ2UgZGVsYXkgZGVwZW5kZW5jaWVzIGRlcml2YWJicmV2IGRlcml2c3Vic3QgZGV0b3V0J1xuICAgICAgKyAnIGRpYWdtZXRyaWMgZGlmZiBkaW0gZGltZW5zaW9ucyBkaXNwZmxhZyBkaXNwbGF5MmR8MTAgZGlzcGxheV9mb3JtYXRfaW50ZXJuYWwnXG4gICAgICArICcgZGlzdHJpYnV0ZV9vdmVyIGRvYWxsbXhvcHMgZG9tYWluIGRvbXhleHB0IGRvbXhteG9wcyBkb214bmN0aW1lcyBkb250ZmFjdG9yJ1xuICAgICAgKyAnIGRvc2NteG9wcyBkb3NjbXhwbHVzIGRvdDBuc2NzaW1wIGRvdDBzaW1wIGRvdDFzaW1wIGRvdGFzc29jIGRvdGNvbnN0cnVsZXMnXG4gICAgICArICcgZG90ZGlzdHJpYiBkb3RleHB0c2ltcCBkb3RpZGVudCBkb3RzY3J1bGVzIGRyYXdfZ3JhcGhfcHJvZ3JhbSBkcmF3X3JlYWxwYXJ0J1xuICAgICAgKyAnIGVkZ2VfY29sb3IgZWRnZV9jb2xvcmluZyBlZGdlX3BhcnRpdGlvbiBlZGdlX3R5cGUgZWRnZV93aWR0aCAlZWRpc3BmbGFnJ1xuICAgICAgKyAnIGVsZXZhdGlvbiAlZW1vZGUgZW5kcGhpIGVuZHRoZXRhIGVuZ2luZWVyaW5nX2Zvcm1hdF9mbG9hdHMgZW5oYW5jZWQzZCAlZW51bWVyJ1xuICAgICAgKyAnIGVwc2lsb25fbHAgZXJmZmxhZyBlcmZfcmVwcmVzZW50YXRpb24gZXJyb3Jtc2cgZXJyb3Jfc2l6ZSBlcnJvcl9zeW1zIGVycm9yX3R5cGUnXG4gICAgICArICcgJWVfdG9fbnVtbG9nIGV2YWwgZXZlbiBldmVuZnVuIGV2ZmxhZyBldmZ1biBldl9wb2ludCBleHBhbmR3cnRfZGVub20gZXhwaW50ZXhwYW5kJ1xuICAgICAgKyAnIGV4cGludHJlcCBleHBvbiBleHBvcCBleHB0ZGlzcGZsYWcgZXhwdGlzb2xhdGUgZXhwdHN1YnN0IGZhY2V4cGFuZCBmYWNzdW1fY29tYmluZSdcbiAgICAgICsgJyBmYWN0bGltIGZhY3RvcmZsYWcgZmFjdG9yaWFsX2V4cGFuZCBmYWN0b3JzX29ubHkgZmIgZmVhdHVyZSBmZWF0dXJlcydcbiAgICAgICsgJyBmaWxlX25hbWUgZmlsZV9vdXRwdXRfYXBwZW5kIGZpbGVfc2VhcmNoX2RlbW8gZmlsZV9zZWFyY2hfbGlzcCBmaWxlX3NlYXJjaF9tYXhpbWF8MTAnXG4gICAgICArICcgZmlsZV9zZWFyY2hfdGVzdHMgZmlsZV9zZWFyY2hfdXNhZ2UgZmlsZV90eXBlX2xpc3AgZmlsZV90eXBlX21heGltYXwxMCBmaWxsX2NvbG9yJ1xuICAgICAgKyAnIGZpbGxfZGVuc2l0eSBmaWxsZWRfZnVuYyBmaXhlZF92ZXJ0aWNlcyBmbGlwZmxhZyBmbG9hdDJiZiBmb250IGZvbnRfc2l6ZSdcbiAgICAgICsgJyBmb3J0aW5kZW50IGZvcnRzcGFjZXMgZnBwcmVjIGZwcHJpbnRwcmVjIGZ1bmN0aW9ucyBnYW1tYV9leHBhbmQgZ2FtbWFsaW0nXG4gICAgICArICcgZ2RldCBnZW5pbmRleCBnZW5zdW1udW0gR0dGQ0ZNQVggR0dGSU5GSU5JVFkgZ2xvYmFsc29sdmUgZ251cGxvdF9jb21tYW5kJ1xuICAgICAgKyAnIGdudXBsb3RfY3VydmVfc3R5bGVzIGdudXBsb3RfY3VydmVfdGl0bGVzIGdudXBsb3RfZGVmYXVsdF90ZXJtX2NvbW1hbmQgZ251cGxvdF9kdW1iX3Rlcm1fY29tbWFuZCdcbiAgICAgICsgJyBnbnVwbG90X2ZpbGVfYXJncyBnbnVwbG90X2ZpbGVfbmFtZSBnbnVwbG90X291dF9maWxlIGdudXBsb3RfcGRmX3Rlcm1fY29tbWFuZCdcbiAgICAgICsgJyBnbnVwbG90X3BtM2QgZ251cGxvdF9wbmdfdGVybV9jb21tYW5kIGdudXBsb3RfcG9zdGFtYmxlIGdudXBsb3RfcHJlYW1ibGUnXG4gICAgICArICcgZ251cGxvdF9wc190ZXJtX2NvbW1hbmQgZ251cGxvdF9zdmdfdGVybV9jb21tYW5kIGdudXBsb3RfdGVybSBnbnVwbG90X3ZpZXdfYXJncydcbiAgICAgICsgJyBHb3NwZXJfaW5fWmVpbGJlcmdlciBncmFkZWZzIGdyaWQgZ3JpZDJkIGdyaW5kIGhhbGZhbmdsZXMgaGVhZF9hbmdsZSBoZWFkX2JvdGgnXG4gICAgICArICcgaGVhZF9sZW5ndGggaGVhZF90eXBlIGhlaWdodCBoeXBlcmdlb21ldHJpY19yZXByZXNlbnRhdGlvbiAlaWFyZ3MgaWJhc2UnXG4gICAgICArICcgaWNjMSBpY2MyIGljb3VudGVyIGlkdW1teXggaWVxbnByaW50IGlmYiBpZmMxIGlmYzIgaWZnIGlmZ2kgaWZyIGlmcmFtZV9icmFja2V0X2Zvcm0nXG4gICAgICArICcgaWZyaSBpZ2Vvd2VkZ2VfZmxhZyBpa3QxIGlrdDIgaW1hZ2luYXJ5IGluY2hhciBpbmNyZWFzaW5nIGluZmV2YWwnXG4gICAgICArICcgaW5maW5pdHkgaW5mbGFnIGluZm9saXN0cyBpbm0gaW5tYzEgaW5tYzIgaW50YW5hbHlzaXMgaW50ZWdlciBpbnRlZ2VydmFsdWVkJ1xuICAgICAgKyAnIGludGVncmF0ZV91c2Vfcm9vdHNvZiBpbnRlZ3JhdGlvbl9jb25zdGFudCBpbnRlZ3JhdGlvbl9jb25zdGFudF9jb3VudGVyIGludGVycG9sYXRlX2NvbG9yJ1xuICAgICAgKyAnIGludGZhY2xpbSBpcF9ncmlkIGlwX2dyaWRfaW4gaXJyYXRpb25hbCBpc29sYXRlX3dydF90aW1lcyBpdGVyYXRpb25zIGl0cidcbiAgICAgICsgJyBqdWxpYV9wYXJhbWV0ZXIgJWsxICVrMiBrZWVwZmxvYXQga2V5IGtleV9wb3Mga2ludmFyaWFudCBrdCBsYWJlbCBsYWJlbF9hbGlnbm1lbnQnXG4gICAgICArICcgbGFiZWxfb3JpZW50YXRpb24gbGFiZWxzIGxhc3NvY2lhdGl2ZSBsYmZnc19uY29ycmVjdGlvbnMgbGJmZ3NfbmZldmFsX21heCdcbiAgICAgICsgJyBsZWZ0anVzdCBsZWdlbmQgbGV0cmF0IGxldF9ydWxlX3BhY2thZ2VzIGxmZyBsZyBsaG9zcGl0YWxsaW0gbGltc3Vic3QgbGluZWFyJ1xuICAgICAgKyAnIGxpbmVhcl9zb2x2ZXIgbGluZWNoYXIgbGluZWx8MTAgbGluZW51bSBsaW5lX3R5cGUgbGluZXdpZHRoIGxpbmVfd2lkdGggbGluc29sdmVfcGFyYW1zJ1xuICAgICAgKyAnIGxpbnNvbHZld2FybiBsaXNwZGlzcCBsaXN0YXJpdGggbGlzdGNvbnN0dmFycyBsaXN0ZHVtbXl2YXJzIGxteGNoYXIgbG9hZF9wYXRobmFtZSdcbiAgICAgICsgJyBsb2FkcHJpbnQgbG9nYWJzIGxvZ2FyYyBsb2djYiBsb2djb25jb2VmZnAgbG9nZXhwYW5kIGxvZ25lZ2ludCBsb2dzaW1wIGxvZ3gnXG4gICAgICArICcgbG9neF9zZWNvbmRhcnkgbG9neSBsb2d5X3NlY29uZGFyeSBsb2d6IGxyaWVtIG0xcGJyYW5jaCBtYWNyb2V4cGFuc2lvbiBtYWNyb3MnXG4gICAgICArICcgbWFpbnZhciBtYW51YWxfZGVtbyBtYXBlcnJvciBtYXBwcmludCBtYXRyaXhfZWxlbWVudF9hZGQgbWF0cml4X2VsZW1lbnRfbXVsdCdcbiAgICAgICsgJyBtYXRyaXhfZWxlbWVudF90cmFuc3Bvc2UgbWF4YXBwbHlkZXB0aCBtYXhhcHBseWhlaWdodCBtYXhpbWFfdGVtcGRpcnwxMCBtYXhpbWFfdXNlcmRpcnwxMCdcbiAgICAgICsgJyBtYXhuZWdleCBNQVhfT1JEIG1heHBvc2V4IG1heHBzaWZyYWNkZW5vbSBtYXhwc2lmcmFjbnVtIG1heHBzaW5lZ2ludCBtYXhwc2lwb3NpbnQnXG4gICAgICArICcgbWF4dGF5b3JkZXIgbWVzaF9saW5lc19jb2xvciBtZXRob2QgbW9kX2JpZ19wcmltZSBtb2RlX2NoZWNrX2Vycm9ycCdcbiAgICAgICsgJyBtb2RlX2NoZWNrcCBtb2RlX2NoZWNrX3dhcm5wIG1vZF90ZXN0IG1vZF90aHJlc2hvbGQgbW9kdWxhcl9saW5lYXJfc29sdmVyJ1xuICAgICAgKyAnIG1vZHVsdXMgbXVsdGlwbGljYXRpdmUgbXVsdGlwbGljaXRpZXMgbXlvcHRpb25zIG5hcnkgbmVnZGlzdHJpYiBuZWdzdW1kaXNwZmxhZydcbiAgICAgICsgJyBuZXdsaW5lIG5ld3RvbmVwc2lsb24gbmV3dG9ubWF4aXRlciBuZXh0bGF5ZXJmYWN0b3IgbmljZWluZGljZXNwcmVmIG5tIG5tYydcbiAgICAgICsgJyBub2V2YWwgbm9sYWJlbHMgbm9uZWdhdGl2ZV9scCBub25pbnRlZ2VyIG5vbnNjYWxhciBub3VuIG5vdW5kaXNwIG5vdW5zIG5wJ1xuICAgICAgKyAnIG5waSBudGlja3MgbnRyaWcgbnVtZXIgbnVtZXJfcGJyYW5jaCBvYmFzZSBvZGQgb2RkZnVuIG9wYWNpdHkgb3Bwcm9wZXJ0aWVzJ1xuICAgICAgKyAnIG9wc3Vic3Qgb3B0aW1wcmVmaXggb3B0aW9uc2V0IG9yaWVudGF0aW9uIG9yaWdpbiBvcnRob3BvbHlfcmV0dXJuc19pbnRlcnZhbHMnXG4gICAgICArICcgb3V0YXRpdmUgb3V0Y2hhciBwYWNrYWdlZmlsZSBwYWxldHRlIHBhcnRzd2l0Y2ggcGRmX2ZpbGUgcGZlZm9ybWF0IHBoaXJlc29sdXRpb24nXG4gICAgICArICcgJXBpYXJncyBwaWVjZSBwaXZvdF9jb3VudF9zeCBwaXZvdF9tYXhfc3ggcGxvdF9mb3JtYXQgcGxvdF9vcHRpb25zIHBsb3RfcmVhbHBhcnQnXG4gICAgICArICcgcG5nX2ZpbGUgcG9jaGhhbW1lcl9tYXhfaW5kZXggcG9pbnRzIHBvaW50c2l6ZSBwb2ludF9zaXplIHBvaW50c19qb2luZWQgcG9pbnRfdHlwZSdcbiAgICAgICsgJyBwb2lzbGltIHBvaXNzb24gcG9seV9jb2VmZmljaWVudF9yaW5nIHBvbHlfZWxpbWluYXRpb25fb3JkZXIgcG9seWZhY3RvciBwb2x5X2dyb2JuZXJfYWxnb3JpdGhtJ1xuICAgICAgKyAnIHBvbHlfZ3JvYm5lcl9kZWJ1ZyBwb2x5X21vbm9taWFsX29yZGVyIHBvbHlfcHJpbWFyeV9lbGltaW5hdGlvbl9vcmRlciBwb2x5X3JldHVybl90ZXJtX2xpc3QnXG4gICAgICArICcgcG9seV9zZWNvbmRhcnlfZWxpbWluYXRpb25fb3JkZXIgcG9seV90b3BfcmVkdWN0aW9uX29ubHkgcG9zZnVuIHBvc2l0aW9uJ1xuICAgICAgKyAnIHBvd2VyZGlzcCBwcmVkIHByZWRlcnJvciBwcmltZXBfbnVtYmVyX29mX3Rlc3RzIHByb2R1Y3RfdXNlX2dhbW1hIHByb2dyYW0nXG4gICAgICArICcgcHJvZ3JhbW1vZGUgcHJvbW90ZV9mbG9hdF90b19iaWdmbG9hdCBwcm9tcHQgcHJvcG9ydGlvbmFsX2F4ZXMgcHJvcHMgcHNleHBhbmQnXG4gICAgICArICcgcHNfZmlsZSByYWRleHBhbmQgcmFkaXVzIHJhZHN1YnN0ZmxhZyByYXNzb2NpYXRpdmUgcmF0YWxnZGVub20gcmF0Y2hyaXN0b2YnXG4gICAgICArICcgcmF0ZGVub21kaXZpZGUgcmF0ZWluc3RlaW4gcmF0ZXBzaWxvbiByYXRmYWMgcmF0aW9uYWwgcmF0bXggcmF0cHJpbnQgcmF0cmllbWFubidcbiAgICAgICsgJyByYXRzaW1wZXhwb25zIHJhdHZhcnN3aXRjaCByYXR3ZWlnaHRzIHJhdHdleWwgcmF0d3RsdmwgcmVhbCByZWFsb25seSByZWRyYXcnXG4gICAgICArICcgcmVmY2hlY2sgcmVzb2x1dGlvbiByZXN0YXJ0IHJlc3VsdGFudCByaWMgcmllbSBybXhjaGFyICVybnVtX2xpc3Qgcm9tYmVyZ2FicydcbiAgICAgICsgJyByb21iZXJnaXQgcm9tYmVyZ21pbiByb21iZXJndG9sIHJvb3RzY29ubW9kZSByb290c2Vwc2lsb24gcnVuX3ZpZXdlciBzYW1lX3h5J1xuICAgICAgKyAnIHNhbWVfeHl6IHNhdmVkZWYgc2F2ZWZhY3RvcnMgc2NhbGFyIHNjYWxhcm1hdHJpeHAgc2NhbGUgc2NhbGVfbHAgc2V0Y2hlY2snXG4gICAgICArICcgc2V0Y2hlY2ticmVhayBzZXR2YWwgc2hvd19lZGdlX2NvbG9yIHNob3dfZWRnZXMgc2hvd19lZGdlX3R5cGUgc2hvd19lZGdlX3dpZHRoJ1xuICAgICAgKyAnIHNob3dfaWQgc2hvd19sYWJlbCBzaG93dGltZSBzaG93X3ZlcnRleF9jb2xvciBzaG93X3ZlcnRleF9zaXplIHNob3dfdmVydGV4X3R5cGUnXG4gICAgICArICcgc2hvd192ZXJ0aWNlcyBzaG93X3dlaWdodCBzaW1wIHNpbXBsaWZpZWRfb3V0cHV0IHNpbXBsaWZ5X3Byb2R1Y3RzIHNpbXBwcm9kdWN0J1xuICAgICAgKyAnIHNpbXBzdW0gc2lubnBpZmxhZyBzb2x2ZWRlY29tcG9zZXMgc29sdmVleHBsaWNpdCBzb2x2ZWZhY3RvcnMgc29sdmVudWxsd2FybidcbiAgICAgICsgJyBzb2x2ZXJhZGNhbiBzb2x2ZXRyaWd3YXJuIHNwYWNlIHNwYXJzZSBzcGhlcmUgc3ByaW5nX2VtYmVkZGluZ19kZXB0aCBzcXJ0ZGlzcGZsYWcnXG4gICAgICArICcgc3RhcmRpc3Agc3RhcnRwaGkgc3RhcnR0aGV0YSBzdGF0c19udW1lciBzdHJpbmdkaXNwIHN0cnVjdHVyZXMgc3R5bGUgc3VibGlzX2FwcGx5X2xhbWJkYSdcbiAgICAgICsgJyBzdWJudW1zaW1wIHN1bWV4cGFuZCBzdW1zcGxpdGZhY3Qgc3VyZmFjZSBzdXJmYWNlX2hpZGUgc3ZnX2ZpbGUgc3ltbWV0cmljJ1xuICAgICAgKyAnIHRhYiB0YXlsb3JkZXB0aCB0YXlsb3JfbG9nZXhwYW5kIHRheWxvcl9vcmRlcl9jb2VmZmljaWVudHMgdGF5bG9yX3RydW5jYXRlX3BvbHlub21pYWxzJ1xuICAgICAgKyAnIHRlbnNvcmtpbGwgdGVybWluYWwgdGVzdHN1aXRlX2ZpbGVzIHRoZXRhcmVzb2x1dGlvbiB0aW1lcl9kZXZhbHVlIHRpdGxlIHRsaW1zd2l0Y2gnXG4gICAgICArICcgdHIgdHJhY2sgdHJhbnNjb21waWxlIHRyYW5zZm9ybSB0cmFuc2Zvcm1feHkgdHJhbnNsYXRlX2Zhc3RfYXJyYXlzIHRyYW5zcGFyZW50J1xuICAgICAgKyAnIHRyYW5zcnVuIHRyX2FycmF5X2FzX3JlZiB0cl9ib3VuZF9mdW5jdGlvbl9hcHBseXAgdHJfZmlsZV90dHlfbWVzc2FnZXNwIHRyX2Zsb2F0X2Nhbl9icmFuY2hfY29tcGxleCdcbiAgICAgICsgJyB0cl9mdW5jdGlvbl9jYWxsX2RlZmF1bHQgdHJpZ2V4cGFuZHBsdXMgdHJpZ2V4cGFuZHRpbWVzIHRyaWdpbnZlcnNlcyB0cmlnc2lnbidcbiAgICAgICsgJyB0cml2aWFsX3NvbHV0aW9ucyB0cl9udW1lciB0cl9vcHRpbWl6ZV9tYXhfbG9vcCB0cl9zZW1pY29tcGlsZSB0cl9zdGF0ZV92YXJzJ1xuICAgICAgKyAnIHRyX3dhcm5fYmFkX2Z1bmN0aW9uX2NhbGxzIHRyX3dhcm5fZmV4cHIgdHJfd2Fybl9tZXZhbCB0cl93YXJuX21vZGUnXG4gICAgICArICcgdHJfd2Fybl91bmRlY2xhcmVkIHRyX3dhcm5fdW5kZWZpbmVkX3ZhcmlhYmxlIHRzdGVwIHR0eW9mZiB0dWJlX2V4dHJlbWVzJ1xuICAgICAgKyAnIHVmZyB1ZyAldW5pdGV4cGFuZCB1bml0X3ZlY3RvcnMgdXJpYyB1cmllbSB1c2VfZmFzdF9hcnJheXMgdXNlcl9wcmVhbWJsZSdcbiAgICAgICsgJyB1c2Vyc2V0dW5pdHMgdmFsdWVzIHZlY3RfY3Jvc3MgdmVyYm9zZSB2ZXJ0ZXhfY29sb3IgdmVydGV4X2NvbG9yaW5nIHZlcnRleF9wYXJ0aXRpb24nXG4gICAgICArICcgdmVydGV4X3NpemUgdmVydGV4X3R5cGUgdmlldyB3YXJuaW5ncyB3ZXlsIHdpZHRoIHdpbmRvd25hbWUgd2luZG93dGl0bGUgd2lyZWRfc3VyZmFjZSdcbiAgICAgICsgJyB3aXJlZnJhbWUgeGF4aXMgeGF4aXNfY29sb3IgeGF4aXNfc2Vjb25kYXJ5IHhheGlzX3R5cGUgeGF4aXNfd2lkdGggeGxhYmVsJ1xuICAgICAgKyAnIHhsYWJlbF9zZWNvbmRhcnkgeGxlbmd0aCB4cmFuZ2UgeHJhbmdlX3NlY29uZGFyeSB4dGljcyB4dGljc19heGlzIHh0aWNzX3JvdGF0ZSdcbiAgICAgICsgJyB4dGljc19yb3RhdGVfc2Vjb25kYXJ5IHh0aWNzX3NlY29uZGFyeSB4dGljc19zZWNvbmRhcnlfYXhpcyB4dV9ncmlkIHhfdm94ZWwnXG4gICAgICArICcgeHlfZmlsZSB4eXBsYW5lIHh5X3NjYWxlIHlheGlzIHlheGlzX2NvbG9yIHlheGlzX3NlY29uZGFyeSB5YXhpc190eXBlIHlheGlzX3dpZHRoJ1xuICAgICAgKyAnIHlsYWJlbCB5bGFiZWxfc2Vjb25kYXJ5IHlsZW5ndGggeXJhbmdlIHlyYW5nZV9zZWNvbmRhcnkgeXRpY3MgeXRpY3NfYXhpcydcbiAgICAgICsgJyB5dGljc19yb3RhdGUgeXRpY3Nfcm90YXRlX3NlY29uZGFyeSB5dGljc19zZWNvbmRhcnkgeXRpY3Nfc2Vjb25kYXJ5X2F4aXMnXG4gICAgICArICcgeXZfZ3JpZCB5X3ZveGVsIHl4X3JhdGlvIHpheGlzIHpheGlzX2NvbG9yIHpheGlzX3R5cGUgemF4aXNfd2lkdGggemVyb2EgemVyb2InXG4gICAgICArICcgemVyb2Jlcm4gemV0YSVwaSB6bGFiZWwgemxhYmVsX3JvdGF0ZSB6bGVuZ3RoIHptaW4gem5fcHJpbXJvb3RfbGltaXQgem5fcHJpbXJvb3RfcHJldGVzdCc7XG4gIHZhciBTWU1CT0xTID0gJ18gX18gJXwwICUlfDAnO1xuXG4gIHJldHVybiB7XG4gICAgbGV4ZW1lczogJ1tBLVphLXpfJV1bMC05QS1aYS16XyVdKicsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgICBidWlsdF9pbjogQlVJTFRJTl9GVU5DVElPTlMsXG4gICAgICBzeW1ib2w6IFNZTUJPTFMsXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46ICcvXFxcXConLFxuICAgICAgICBlbmQ6ICdcXFxcKi8nLFxuICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gZmxvYXQgbnVtYmVyIHcvIGV4cG9uZW50XG4gICAgICAgICAgICAvLyBobW0sIEkgd29uZGVyIGlmIHdlIG91Z2h0IHRvIGluY2x1ZGUgb3RoZXIgZXhwb25lbnQgbWFya2Vycz9cbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoXFxcXGQrfFxcXFxkK1xcXFwufFxcXFwuXFxcXGQrfFxcXFxkK1xcXFwuXFxcXGQrKVtFZV1bLStdP1xcXFxkK1xcXFxiJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGJpZ2Zsb2F0IG51bWJlclxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcZCt8XFxcXGQrXFxcXC58XFxcXC5cXFxcZCt8XFxcXGQrXFxcXC5cXFxcZCspW0JiXVstK10/XFxcXGQrXFxcXGInLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gZmxvYXQgbnVtYmVyIHcvb3V0IGV4cG9uZW50XG4gICAgICAgICAgICAvLyBEb2Vzbid0IHNlZW0gdG8gcmVjb2duaXplIGZsb2F0cyB3aGljaCBzdGFydCB3aXRoICcuJ1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcLlxcXFxkK3xcXFxcZCtcXFxcLlxcXFxkKylcXFxcYicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBpbnRlZ2VyIGluIGJhc2UgdXAgdG8gMzZcbiAgICAgICAgICAgIC8vIERvZXNuJ3Qgc2VlbSB0byByZWNvZ25pemUgaW50ZWdlcnMgd2hpY2ggZW5kIHdpdGggJy4nXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKFxcXFxkK3wwWzAtOUEtWmEtel0rKVxcXFwuP1xcXFxiJyxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC9AL1xuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOlxuICAgICAgJ2ludCBmbG9hdCBzdHJpbmcgdmVjdG9yIG1hdHJpeCBpZiBlbHNlIHN3aXRjaCBjYXNlIGRlZmF1bHQgd2hpbGUgZG8gZm9yIGluIGJyZWFrICcgK1xuICAgICAgJ2NvbnRpbnVlIGdsb2JhbCBwcm9jIHJldHVybiBhYm91dCBhYnMgYWRkQXR0ciBhZGRBdHRyaWJ1dGVFZGl0b3JOb2RlSGVscCBhZGREeW5hbWljICcgK1xuICAgICAgJ2FkZE5ld1NoZWxmVGFiIGFkZFBQIGFkZFBhbmVsQ2F0ZWdvcnkgYWRkUHJlZml4VG9OYW1lIGFkdmFuY2VUb05leHREcml2ZW5LZXkgJyArXG4gICAgICAnYWZmZWN0ZWROZXQgYWZmZWN0cyBhaW1Db25zdHJhaW50IGFpciBhbGlhcyBhbGlhc0F0dHIgYWxpZ24gYWxpZ25DdHggYWxpZ25DdXJ2ZSAnICtcbiAgICAgICdhbGlnblN1cmZhY2UgYWxsVmlld0ZpdCBhbWJpZW50TGlnaHQgYW5nbGUgYW5nbGVCZXR3ZWVuIGFuaW1Db25lIGFuaW1DdXJ2ZUVkaXRvciAnICtcbiAgICAgICdhbmltRGlzcGxheSBhbmltVmlldyBhbm5vdGF0ZSBhcHBlbmRTdHJpbmdBcnJheSBhcHBsaWNhdGlvbk5hbWUgYXBwbHlBdHRyUHJlc2V0ICcgK1xuICAgICAgJ2FwcGx5VGFrZSBhcmNMZW5EaW1Db250ZXh0IGFyY0xlbmd0aERpbWVuc2lvbiBhcmNsZW4gYXJyYXlNYXBwZXIgYXJ0M2RQYWludEN0eCAnICtcbiAgICAgICdhcnRBdHRyQ3R4IGFydEF0dHJQYWludFZlcnRleEN0eCBhcnRBdHRyU2tpblBhaW50Q3R4IGFydEF0dHJUb29sIGFydEJ1aWxkUGFpbnRNZW51ICcgK1xuICAgICAgJ2FydEZsdWlkQXR0ckN0eCBhcnRQdXR0eUN0eCBhcnRTZWxlY3RDdHggYXJ0U2V0UGFpbnRDdHggYXJ0VXNlclBhaW50Q3R4IGFzc2lnbkNvbW1hbmQgJyArXG4gICAgICAnYXNzaWduSW5wdXREZXZpY2UgYXNzaWduVmlld3BvcnRGYWN0b3JpZXMgYXR0YWNoQ3VydmUgYXR0YWNoRGV2aWNlQXR0ciBhdHRhY2hTdXJmYWNlICcgK1xuICAgICAgJ2F0dHJDb2xvclNsaWRlckdycCBhdHRyQ29tcGF0aWJpbGl0eSBhdHRyQ29udHJvbEdycCBhdHRyRW51bU9wdGlvbk1lbnUgJyArXG4gICAgICAnYXR0ckVudW1PcHRpb25NZW51R3JwIGF0dHJGaWVsZEdycCBhdHRyRmllbGRTbGlkZXJHcnAgYXR0ck5hdmlnYXRpb25Db250cm9sR3JwICcgK1xuICAgICAgJ2F0dHJQcmVzZXRFZGl0V2luIGF0dHJpYnV0ZUV4aXN0cyBhdHRyaWJ1dGVJbmZvIGF0dHJpYnV0ZU1lbnUgYXR0cmlidXRlUXVlcnkgJyArXG4gICAgICAnYXV0b0tleWZyYW1lIGF1dG9QbGFjZSBiYWtlQ2xpcCBiYWtlRmx1aWRTaGFkaW5nIGJha2VQYXJ0aWFsSGlzdG9yeSBiYWtlUmVzdWx0cyAnICtcbiAgICAgICdiYWtlU2ltdWxhdGlvbiBiYXNlbmFtZSBiYXNlbmFtZUV4IGJhdGNoUmVuZGVyIGJlc3NlbCBiZXZlbCBiZXZlbFBsdXMgYmluTWVtYmVyc2hpcCAnICtcbiAgICAgICdiaW5kU2tpbiBibGVuZDIgYmxlbmRTaGFwZSBibGVuZFNoYXBlRWRpdG9yIGJsZW5kU2hhcGVQYW5lbCBibGVuZFR3b0F0dHIgYmxpbmREYXRhVHlwZSAnICtcbiAgICAgICdib25lTGF0dGljZSBib3VuZGFyeSBib3hEb2xseUN0eCBib3hab29tQ3R4IGJ1ZmZlckN1cnZlIGJ1aWxkQm9va21hcmtNZW51ICcgK1xuICAgICAgJ2J1aWxkS2V5ZnJhbWVNZW51IGJ1dHRvbiBidXR0b25NYW5pcCBDQkcgY2FjaGVGaWxlIGNhY2hlRmlsZUNvbWJpbmUgY2FjaGVGaWxlTWVyZ2UgJyArXG4gICAgICAnY2FjaGVGaWxlVHJhY2sgY2FtZXJhIGNhbWVyYVZpZXcgY2FuQ3JlYXRlTWFuaXAgY2FudmFzIGNhcGl0YWxpemVTdHJpbmcgY2F0Y2ggJyArXG4gICAgICAnY2F0Y2hRdWlldCBjZWlsIGNoYW5nZVN1YmRpdkNvbXBvbmVudERpc3BsYXlMZXZlbCBjaGFuZ2VTdWJkaXZSZWdpb24gY2hhbm5lbEJveCAnICtcbiAgICAgICdjaGFyYWN0ZXIgY2hhcmFjdGVyTWFwIGNoYXJhY3Rlck91dGxpbmVFZGl0b3IgY2hhcmFjdGVyaXplIGNoZGlyIGNoZWNrQm94IGNoZWNrQm94R3JwICcgK1xuICAgICAgJ2NoZWNrRGVmYXVsdFJlbmRlckdsb2JhbHMgY2hvaWNlIGNpcmNsZSBjaXJjdWxhckZpbGxldCBjbGFtcCBjbGVhciBjbGVhckNhY2hlIGNsaXAgJyArXG4gICAgICAnY2xpcEVkaXRvciBjbGlwRWRpdG9yQ3VycmVudFRpbWVDdHggY2xpcFNjaGVkdWxlIGNsaXBTY2hlZHVsZXJPdXRsaW5lciBjbGlwVHJpbUJlZm9yZSAnICtcbiAgICAgICdjbG9zZUN1cnZlIGNsb3NlU3VyZmFjZSBjbHVzdGVyIGNtZEZpbGVPdXRwdXQgY21kU2Nyb2xsRmllbGRFeGVjdXRlciAnICtcbiAgICAgICdjbWRTY3JvbGxGaWVsZFJlcG9ydGVyIGNtZFNoZWxsIGNvYXJzZW5TdWJkaXZTZWxlY3Rpb25MaXN0IGNvbGxpc2lvbiBjb2xvciAnICtcbiAgICAgICdjb2xvckF0UG9pbnQgY29sb3JFZGl0b3IgY29sb3JJbmRleCBjb2xvckluZGV4U2xpZGVyR3JwIGNvbG9yU2xpZGVyQnV0dG9uR3JwICcgK1xuICAgICAgJ2NvbG9yU2xpZGVyR3JwIGNvbHVtbkxheW91dCBjb21tYW5kRWNobyBjb21tYW5kTGluZSBjb21tYW5kUG9ydCBjb21wYWN0SGFpclN5c3RlbSAnICtcbiAgICAgICdjb21wb25lbnRFZGl0b3IgY29tcG9zaXRpbmdJbnRlcm9wIGNvbXB1dGVQb2x5c2V0Vm9sdW1lIGNvbmRpdGlvbiBjb25lIGNvbmZpcm1EaWFsb2cgJyArXG4gICAgICAnY29ubmVjdEF0dHIgY29ubmVjdENvbnRyb2wgY29ubmVjdER5bmFtaWMgY29ubmVjdEpvaW50IGNvbm5lY3Rpb25JbmZvIGNvbnN0cmFpbiAnICtcbiAgICAgICdjb25zdHJhaW5WYWx1ZSBjb25zdHJ1Y3Rpb25IaXN0b3J5IGNvbnRhaW5lciBjb250YWluc011bHRpYnl0ZSBjb250ZXh0SW5mbyBjb250cm9sICcgK1xuICAgICAgJ2NvbnZlcnRGcm9tT2xkTGF5ZXJzIGNvbnZlcnRJZmZUb1BzZCBjb252ZXJ0TGlnaHRtYXAgY29udmVydFNvbGlkVHggY29udmVydFRlc3NlbGxhdGlvbiAnICtcbiAgICAgICdjb252ZXJ0VW5pdCBjb3B5QXJyYXkgY29weUZsZXhvciBjb3B5S2V5IGNvcHlTa2luV2VpZ2h0cyBjb3MgY3BCdXR0b24gY3BDYWNoZSAnICtcbiAgICAgICdjcENsb3RoU2V0IGNwQ29sbGlzaW9uIGNwQ29uc3RyYWludCBjcENvbnZDbG90aFRvTWVzaCBjcEZvcmNlcyBjcEdldFNvbHZlckF0dHIgY3BQYW5lbCAnICtcbiAgICAgICdjcFByb3BlcnR5IGNwUmlnaWRDb2xsaXNpb25GaWx0ZXIgY3BTZWFtIGNwU2V0RWRpdCBjcFNldFNvbHZlckF0dHIgY3BTb2x2ZXIgJyArXG4gICAgICAnY3BTb2x2ZXJUeXBlcyBjcFRvb2wgY3BVcGRhdGVDbG90aFVWcyBjcmVhdGVEaXNwbGF5TGF5ZXIgY3JlYXRlRHJhd0N0eCBjcmVhdGVFZGl0b3IgJyArXG4gICAgICAnY3JlYXRlTGF5ZXJlZFBzZEZpbGUgY3JlYXRlTW90aW9uRmllbGQgY3JlYXRlTmV3U2hlbGYgY3JlYXRlTm9kZSBjcmVhdGVSZW5kZXJMYXllciAnICtcbiAgICAgICdjcmVhdGVTdWJkaXZSZWdpb24gY3Jvc3MgY3Jvc3NQcm9kdWN0IGN0eEFib3J0IGN0eENvbXBsZXRpb24gY3R4RWRpdE1vZGUgY3R4VHJhdmVyc2UgJyArXG4gICAgICAnY3VycmVudEN0eCBjdXJyZW50VGltZSBjdXJyZW50VGltZUN0eCBjdXJyZW50VW5pdCBjdXJ2ZSBjdXJ2ZUFkZFB0Q3R4ICcgK1xuICAgICAgJ2N1cnZlQ1ZDdHggY3VydmVFUEN0eCBjdXJ2ZUVkaXRvckN0eCBjdXJ2ZUludGVyc2VjdCBjdXJ2ZU1vdmVFUEN0eCBjdXJ2ZU9uU3VyZmFjZSAnICtcbiAgICAgICdjdXJ2ZVNrZXRjaEN0eCBjdXRLZXkgY3ljbGVDaGVjayBjeWxpbmRlciBkYWdQb3NlIGRhdGUgZGVmYXVsdExpZ2h0TGlzdENoZWNrQm94ICcgK1xuICAgICAgJ2RlZmF1bHROYXZpZ2F0aW9uIGRlZmluZURhdGFTZXJ2ZXIgZGVmaW5lVmlydHVhbERldmljZSBkZWZvcm1lciBkZWdfdG9fcmFkIGRlbGV0ZSAnICtcbiAgICAgICdkZWxldGVBdHRyIGRlbGV0ZVNoYWRpbmdHcm91cHNBbmRNYXRlcmlhbHMgZGVsZXRlU2hlbGZUYWIgZGVsZXRlVUkgZGVsZXRlVW51c2VkQnJ1c2hlcyAnICtcbiAgICAgICdkZWxyYW5kc3RyIGRldGFjaEN1cnZlIGRldGFjaERldmljZUF0dHIgZGV0YWNoU3VyZmFjZSBkZXZpY2VFZGl0b3IgZGV2aWNlUGFuZWwgZGdJbmZvICcgK1xuICAgICAgJ2RnZGlydHkgZGdldmFsIGRndGltZXIgZGltV2hlbiBkaXJlY3RLZXlDdHggZGlyZWN0aW9uYWxMaWdodCBkaXJtYXAgZGlybmFtZSBkaXNhYmxlICcgK1xuICAgICAgJ2Rpc2Nvbm5lY3RBdHRyIGRpc2Nvbm5lY3RKb2ludCBkaXNrQ2FjaGUgZGlzcGxhY2VtZW50VG9Qb2x5IGRpc3BsYXlBZmZlY3RlZCAnICtcbiAgICAgICdkaXNwbGF5Q29sb3IgZGlzcGxheUN1bGwgZGlzcGxheUxldmVsT2ZEZXRhaWwgZGlzcGxheVByZWYgZGlzcGxheVJHQkNvbG9yICcgK1xuICAgICAgJ2Rpc3BsYXlTbW9vdGhuZXNzIGRpc3BsYXlTdGF0cyBkaXNwbGF5U3RyaW5nIGRpc3BsYXlTdXJmYWNlIGRpc3RhbmNlRGltQ29udGV4dCAnICtcbiAgICAgICdkaXN0YW5jZURpbWVuc2lvbiBkb0JsdXIgZG9sbHkgZG9sbHlDdHggZG9wZVNoZWV0RWRpdG9yIGRvdCBkb3RQcm9kdWN0ICcgK1xuICAgICAgJ2RvdWJsZVByb2ZpbGVCaXJhaWxTdXJmYWNlIGRyYWcgZHJhZ0F0dHJDb250ZXh0IGRyYWdnZXJDb250ZXh0IGRyb3BvZmZMb2NhdG9yICcgK1xuICAgICAgJ2R1cGxpY2F0ZSBkdXBsaWNhdGVDdXJ2ZSBkdXBsaWNhdGVTdXJmYWNlIGR5bkNhY2hlIGR5bkNvbnRyb2wgZHluRXhwb3J0IGR5bkV4cHJlc3Npb24gJyArXG4gICAgICAnZHluR2xvYmFscyBkeW5QYWludEVkaXRvciBkeW5QYXJ0aWNsZUN0eCBkeW5QcmVmIGR5blJlbEVkUGFuZWwgZHluUmVsRWRpdG9yICcgK1xuICAgICAgJ2R5bmFtaWNMb2FkIGVkaXRBdHRyTGltaXRzIGVkaXREaXNwbGF5TGF5ZXJHbG9iYWxzIGVkaXREaXNwbGF5TGF5ZXJNZW1iZXJzICcgK1xuICAgICAgJ2VkaXRSZW5kZXJMYXllckFkanVzdG1lbnQgZWRpdFJlbmRlckxheWVyR2xvYmFscyBlZGl0UmVuZGVyTGF5ZXJNZW1iZXJzIGVkaXRvciAnICtcbiAgICAgICdlZGl0b3JUZW1wbGF0ZSBlZmZlY3RvciBlbWl0IGVtaXR0ZXIgZW5hYmxlRGV2aWNlIGVuY29kZVN0cmluZyBlbmRTdHJpbmcgZW5kc1dpdGggZW52ICcgK1xuICAgICAgJ2VxdWl2YWxlbnQgZXF1aXZhbGVudFRvbCBlcmYgZXJyb3IgZXZhbCBldmFsRGVmZXJyZWQgZXZhbEVjaG8gZXZlbnQgJyArXG4gICAgICAnZXhhY3RXb3JsZEJvdW5kaW5nQm94IGV4Y2x1c2l2ZUxpZ2h0Q2hlY2tCb3ggZXhlYyBleGVjdXRlRm9yRWFjaE9iamVjdCBleGlzdHMgZXhwICcgK1xuICAgICAgJ2V4cHJlc3Npb24gZXhwcmVzc2lvbkVkaXRvckxpc3RlbiBleHRlbmRDdXJ2ZSBleHRlbmRTdXJmYWNlIGV4dHJ1ZGUgZmNoZWNrIGZjbG9zZSBmZW9mICcgK1xuICAgICAgJ2ZmbHVzaCBmZ2V0bGluZSBmZ2V0d29yZCBmaWxlIGZpbGVCcm93c2VyRGlhbG9nIGZpbGVEaWFsb2cgZmlsZUV4dGVuc2lvbiBmaWxlSW5mbyAnICtcbiAgICAgICdmaWxldGVzdCBmaWxsZXRDdXJ2ZSBmaWx0ZXIgZmlsdGVyQ3VydmUgZmlsdGVyRXhwYW5kIGZpbHRlclN0dWRpb0ltcG9ydCAnICtcbiAgICAgICdmaW5kQWxsSW50ZXJzZWN0aW9ucyBmaW5kQW5pbUN1cnZlcyBmaW5kS2V5ZnJhbWUgZmluZE1lbnVJdGVtIGZpbmRSZWxhdGVkU2tpbkNsdXN0ZXIgJyArXG4gICAgICAnZmluZGVyIGZpcnN0UGFyZW50T2YgZml0QnNwbGluZSBmbGV4b3IgZmxvYXRFcSBmbG9hdEZpZWxkIGZsb2F0RmllbGRHcnAgZmxvYXRTY3JvbGxCYXIgJyArXG4gICAgICAnZmxvYXRTbGlkZXIgZmxvYXRTbGlkZXIyIGZsb2F0U2xpZGVyQnV0dG9uR3JwIGZsb2F0U2xpZGVyR3JwIGZsb29yIGZsb3cgZmx1aWRDYWNoZUluZm8gJyArXG4gICAgICAnZmx1aWRFbWl0dGVyIGZsdWlkVm94ZWxJbmZvIGZsdXNoVW5kbyBmbW9kIGZvbnREaWFsb2cgZm9wZW4gZm9ybUxheW91dCBmb3JtYXQgZnByaW50ICcgK1xuICAgICAgJ2ZyYW1lTGF5b3V0IGZyZWFkIGZyZWVGb3JtRmlsbGV0IGZyZXdpbmQgZnJvbU5hdGl2ZVBhdGggZndyaXRlIGdhbW1hIGdhdXNzICcgK1xuICAgICAgJ2dlb21ldHJ5Q29uc3RyYWludCBnZXRBcHBsaWNhdGlvblZlcnNpb25Bc0Zsb2F0IGdldEF0dHIgZ2V0Q2xhc3NpZmljYXRpb24gJyArXG4gICAgICAnZ2V0RGVmYXVsdEJydXNoIGdldEZpbGVMaXN0IGdldEZsdWlkQXR0ciBnZXRJbnB1dERldmljZVJhbmdlIGdldE1heWFQYW5lbFR5cGVzICcgK1xuICAgICAgJ2dldE1vZGlmaWVycyBnZXRQYW5lbCBnZXRQYXJ0aWNsZUF0dHIgZ2V0UGx1Z2luUmVzb3VyY2UgZ2V0ZW52IGdldHBpZCBnbFJlbmRlciAnICtcbiAgICAgICdnbFJlbmRlckVkaXRvciBnbG9iYWxTdGl0Y2ggZ21hdGNoIGdvYWwgZ290b0JpbmRQb3NlIGdyYWJDb2xvciBncmFkaWVudENvbnRyb2wgJyArXG4gICAgICAnZ3JhZGllbnRDb250cm9sTm9BdHRyIGdyYXBoRG9sbHlDdHggZ3JhcGhTZWxlY3RDb250ZXh0IGdyYXBoVHJhY2tDdHggZ3Jhdml0eSBncmlkICcgK1xuICAgICAgJ2dyaWRMYXlvdXQgZ3JvdXAgZ3JvdXBPYmplY3RzQnlOYW1lIEhmQWRkQXR0cmFjdG9yVG9BUyBIZkFzc2lnbkFTIEhmQnVpbGRFcXVhbE1hcCAnICtcbiAgICAgICdIZkJ1aWxkRnVyRmlsZXMgSGZCdWlsZEZ1ckltYWdlcyBIZkNhbmNlbEFGUiBIZkNvbm5lY3RBU1RvSEYgSGZDcmVhdGVBdHRyYWN0b3IgJyArXG4gICAgICAnSGZEZWxldGVBUyBIZkVkaXRBUyBIZlBlcmZvcm1DcmVhdGVBUyBIZlJlbW92ZUF0dHJhY3RvckZyb21BUyBIZlNlbGVjdEF0dGFjaGVkICcgK1xuICAgICAgJ0hmU2VsZWN0QXR0cmFjdG9ycyBIZlVuQXNzaWduQVMgaGFyZGVuUG9pbnRDdXJ2ZSBoYXJkd2FyZSBoYXJkd2FyZVJlbmRlclBhbmVsICcgK1xuICAgICAgJ2hlYWRzVXBEaXNwbGF5IGhlYWRzVXBNZXNzYWdlIGhlbHAgaGVscExpbmUgaGVybWl0ZSBoaWRlIGhpbGl0ZSBoaXRUZXN0IGhvdEJveCBob3RrZXkgJyArXG4gICAgICAnaG90a2V5Q2hlY2sgaHN2X3RvX3JnYiBodWRCdXR0b24gaHVkU2xpZGVyIGh1ZFNsaWRlckJ1dHRvbiBod1JlZmxlY3Rpb25NYXAgaHdSZW5kZXIgJyArXG4gICAgICAnaHdSZW5kZXJMb2FkIGh5cGVyR3JhcGggaHlwZXJQYW5lbCBoeXBlclNoYWRlIGh5cG90IGljb25UZXh0QnV0dG9uIGljb25UZXh0Q2hlY2tCb3ggJyArXG4gICAgICAnaWNvblRleHRSYWRpb0J1dHRvbiBpY29uVGV4dFJhZGlvQ29sbGVjdGlvbiBpY29uVGV4dFNjcm9sbExpc3QgaWNvblRleHRTdGF0aWNMYWJlbCAnICtcbiAgICAgICdpa0hhbmRsZSBpa0hhbmRsZUN0eCBpa0hhbmRsZURpc3BsYXlTY2FsZSBpa1NvbHZlciBpa1NwbGluZUhhbmRsZUN0eCBpa1N5c3RlbSAnICtcbiAgICAgICdpa1N5c3RlbUluZm8gaWtma0Rpc3BsYXlNZXRob2QgaWxsdXN0cmF0b3JDdXJ2ZXMgaW1hZ2UgaW1mUGx1Z2lucyBpbmhlcml0VHJhbnNmb3JtICcgK1xuICAgICAgJ2luc2VydEpvaW50IGluc2VydEpvaW50Q3R4IGluc2VydEtleUN0eCBpbnNlcnRLbm90Q3VydmUgaW5zZXJ0S25vdFN1cmZhY2UgaW5zdGFuY2UgJyArXG4gICAgICAnaW5zdGFuY2VhYmxlIGluc3RhbmNlciBpbnRGaWVsZCBpbnRGaWVsZEdycCBpbnRTY3JvbGxCYXIgaW50U2xpZGVyIGludFNsaWRlckdycCAnICtcbiAgICAgICdpbnRlclRvVUkgaW50ZXJuYWxWYXIgaW50ZXJzZWN0IGlwckVuZ2luZSBpc0FuaW1DdXJ2ZSBpc0Nvbm5lY3RlZCBpc0RpcnR5IGlzUGFyZW50T2YgJyArXG4gICAgICAnaXNTYW1lT2JqZWN0IGlzVHJ1ZSBpc1ZhbGlkT2JqZWN0TmFtZSBpc1ZhbGlkU3RyaW5nIGlzVmFsaWRVaU5hbWUgaXNvbGF0ZVNlbGVjdCAnICtcbiAgICAgICdpdGVtRmlsdGVyIGl0ZW1GaWx0ZXJBdHRyIGl0ZW1GaWx0ZXJSZW5kZXIgaXRlbUZpbHRlclR5cGUgam9pbnQgam9pbnRDbHVzdGVyIGpvaW50Q3R4ICcgK1xuICAgICAgJ2pvaW50RGlzcGxheVNjYWxlIGpvaW50TGF0dGljZSBrZXlUYW5nZW50IGtleWZyYW1lIGtleWZyYW1lT3V0bGluZXIgJyArXG4gICAgICAna2V5ZnJhbWVSZWdpb25DdXJyZW50VGltZUN0eCBrZXlmcmFtZVJlZ2lvbkRpcmVjdEtleUN0eCBrZXlmcmFtZVJlZ2lvbkRvbGx5Q3R4ICcgK1xuICAgICAgJ2tleWZyYW1lUmVnaW9uSW5zZXJ0S2V5Q3R4IGtleWZyYW1lUmVnaW9uTW92ZUtleUN0eCBrZXlmcmFtZVJlZ2lvblNjYWxlS2V5Q3R4ICcgK1xuICAgICAgJ2tleWZyYW1lUmVnaW9uU2VsZWN0S2V5Q3R4IGtleWZyYW1lUmVnaW9uU2V0S2V5Q3R4IGtleWZyYW1lUmVnaW9uVHJhY2tDdHggJyArXG4gICAgICAna2V5ZnJhbWVTdGF0cyBsYXNzb0NvbnRleHQgbGF0dGljZSBsYXR0aWNlRGVmb3JtS2V5Q3R4IGxhdW5jaCBsYXVuY2hJbWFnZUVkaXRvciAnICtcbiAgICAgICdsYXllckJ1dHRvbiBsYXllcmVkU2hhZGVyUG9ydCBsYXllcmVkVGV4dHVyZVBvcnQgbGF5b3V0IGxheW91dERpYWxvZyBsaWdodExpc3QgJyArXG4gICAgICAnbGlnaHRMaXN0RWRpdG9yIGxpZ2h0TGlzdFBhbmVsIGxpZ2h0bGluayBsaW5lSW50ZXJzZWN0aW9uIGxpbmVhclByZWNpc2lvbiBsaW5zdGVwICcgK1xuICAgICAgJ2xpc3RBbmltYXRhYmxlIGxpc3RBdHRyIGxpc3RDYW1lcmFzIGxpc3RDb25uZWN0aW9ucyBsaXN0RGV2aWNlQXR0YWNobWVudHMgbGlzdEhpc3RvcnkgJyArXG4gICAgICAnbGlzdElucHV0RGV2aWNlQXhlcyBsaXN0SW5wdXREZXZpY2VCdXR0b25zIGxpc3RJbnB1dERldmljZXMgbGlzdE1lbnVBbm5vdGF0aW9uICcgK1xuICAgICAgJ2xpc3ROb2RlVHlwZXMgbGlzdFBhbmVsQ2F0ZWdvcmllcyBsaXN0UmVsYXRpdmVzIGxpc3RTZXRzIGxpc3RUcmFuc2Zvcm1zICcgK1xuICAgICAgJ2xpc3RVbnNlbGVjdGVkIGxpc3RlckVkaXRvciBsb2FkRmx1aWQgbG9hZE5ld1NoZWxmIGxvYWRQbHVnaW4gJyArXG4gICAgICAnbG9hZFBsdWdpbkxhbmd1YWdlUmVzb3VyY2VzIGxvYWRQcmVmT2JqZWN0cyBsb2NhbGl6ZWRQYW5lbExhYmVsIGxvY2tOb2RlIGxvZnQgbG9nICcgK1xuICAgICAgJ2xvbmdOYW1lT2YgbG9va1RocnUgbHMgbHNUaHJvdWdoRmlsdGVyIGxzVHlwZSBsc1VJIE1heWF0b21yIG1hZyBtYWtlSWRlbnRpdHkgbWFrZUxpdmUgJyArXG4gICAgICAnbWFrZVBhaW50YWJsZSBtYWtlUm9sbCBtYWtlU2luZ2xlU3VyZmFjZSBtYWtlVHViZU9uIG1ha2Vib3QgbWFuaXBNb3ZlQ29udGV4dCAnICtcbiAgICAgICdtYW5pcE1vdmVMaW1pdHNDdHggbWFuaXBPcHRpb25zIG1hbmlwUm90YXRlQ29udGV4dCBtYW5pcFJvdGF0ZUxpbWl0c0N0eCAnICtcbiAgICAgICdtYW5pcFNjYWxlQ29udGV4dCBtYW5pcFNjYWxlTGltaXRzQ3R4IG1hcmtlciBtYXRjaCBtYXggbWVtb3J5IG1lbnUgbWVudUJhckxheW91dCAnICtcbiAgICAgICdtZW51RWRpdG9yIG1lbnVJdGVtIG1lbnVJdGVtVG9TaGVsZiBtZW51U2V0IG1lbnVTZXRQcmVmIG1lc3NhZ2VMaW5lIG1pbiBtaW5pbWl6ZUFwcCAnICtcbiAgICAgICdtaXJyb3JKb2ludCBtb2RlbEN1cnJlbnRUaW1lQ3R4IG1vZGVsRWRpdG9yIG1vZGVsUGFuZWwgbW91c2UgbW92SW4gbW92T3V0IG1vdmUgJyArXG4gICAgICAnbW92ZUlLdG9GSyBtb3ZlS2V5Q3R4IG1vdmVWZXJ0ZXhBbG9uZ0RpcmVjdGlvbiBtdWx0aVByb2ZpbGVCaXJhaWxTdXJmYWNlIG11dGUgJyArXG4gICAgICAnblBhcnRpY2xlIG5hbWVDb21tYW5kIG5hbWVGaWVsZCBuYW1lc3BhY2UgbmFtZXNwYWNlSW5mbyBuZXdQYW5lbEl0ZW1zIG5ld3RvbiBub2RlQ2FzdCAnICtcbiAgICAgICdub2RlSWNvbkJ1dHRvbiBub2RlT3V0bGluZXIgbm9kZVByZXNldCBub2RlVHlwZSBub2lzZSBub25MaW5lYXIgbm9ybWFsQ29uc3RyYWludCAnICtcbiAgICAgICdub3JtYWxpemUgbnVyYnNCb29sZWFuIG51cmJzQ29weVVWU2V0IG51cmJzQ3ViZSBudXJic0VkaXRVViBudXJic1BsYW5lIG51cmJzU2VsZWN0ICcgK1xuICAgICAgJ251cmJzU3F1YXJlIG51cmJzVG9Qb2x5IG51cmJzVG9Qb2x5Z29uc1ByZWYgbnVyYnNUb1N1YmRpdiBudXJic1RvU3ViZGl2UHJlZiAnICtcbiAgICAgICdudXJic1VWU2V0IG51cmJzVmlld0RpcmVjdGlvblZlY3RvciBvYmpFeGlzdHMgb2JqZWN0Q2VudGVyIG9iamVjdExheWVyIG9iamVjdFR5cGUgJyArXG4gICAgICAnb2JqZWN0VHlwZVVJIG9ic29sZXRlUHJvYyBvY2Vhbk51cmJzUHJldmlld1BsYW5lIG9mZnNldEN1cnZlIG9mZnNldEN1cnZlT25TdXJmYWNlICcgK1xuICAgICAgJ29mZnNldFN1cmZhY2Ugb3BlbkdMRXh0ZW5zaW9uIG9wZW5NYXlhUHJlZiBvcHRpb25NZW51IG9wdGlvbk1lbnVHcnAgb3B0aW9uVmFyIG9yYml0ICcgK1xuICAgICAgJ29yYml0Q3R4IG9yaWVudENvbnN0cmFpbnQgb3V0bGluZXJFZGl0b3Igb3V0bGluZXJQYW5lbCBvdmVycmlkZU1vZGlmaWVyICcgK1xuICAgICAgJ3BhaW50RWZmZWN0c0Rpc3BsYXkgcGFpckJsZW5kIHBhbGV0dGVQb3J0IHBhbmVMYXlvdXQgcGFuZWwgcGFuZWxDb25maWd1cmF0aW9uICcgK1xuICAgICAgJ3BhbmVsSGlzdG9yeSBwYXJhbURpbUNvbnRleHQgcGFyYW1EaW1lbnNpb24gcGFyYW1Mb2NhdG9yIHBhcmVudCBwYXJlbnRDb25zdHJhaW50ICcgK1xuICAgICAgJ3BhcnRpY2xlIHBhcnRpY2xlRXhpc3RzIHBhcnRpY2xlSW5zdGFuY2VyIHBhcnRpY2xlUmVuZGVySW5mbyBwYXJ0aXRpb24gcGFzdGVLZXkgJyArXG4gICAgICAncGF0aEFuaW1hdGlvbiBwYXVzZSBwY2xvc2UgcGVyY2VudCBwZXJmb3JtYW5jZU9wdGlvbnMgcGZ4c3Ryb2tlcyBwaWNrV2FsayBwaWN0dXJlICcgK1xuICAgICAgJ3BpeGVsTW92ZSBwbGFuYXJTcmYgcGxhbmUgcGxheSBwbGF5YmFja09wdGlvbnMgcGxheWJsYXN0IHBsdWdBdHRyIHBsdWdOb2RlIHBsdWdpbkluZm8gJyArXG4gICAgICAncGx1Z2luUmVzb3VyY2VVdGlsIHBvaW50Q29uc3RyYWludCBwb2ludEN1cnZlQ29uc3RyYWludCBwb2ludExpZ2h0IHBvaW50TWF0cml4TXVsdCAnICtcbiAgICAgICdwb2ludE9uQ3VydmUgcG9pbnRPblN1cmZhY2UgcG9pbnRQb3NpdGlvbiBwb2xlVmVjdG9yQ29uc3RyYWludCBwb2x5QXBwZW5kICcgK1xuICAgICAgJ3BvbHlBcHBlbmRGYWNldEN0eCBwb2x5QXBwZW5kVmVydGV4IHBvbHlBdXRvUHJvamVjdGlvbiBwb2x5QXZlcmFnZU5vcm1hbCAnICtcbiAgICAgICdwb2x5QXZlcmFnZVZlcnRleCBwb2x5QmV2ZWwgcG9seUJsZW5kQ29sb3IgcG9seUJsaW5kRGF0YSBwb2x5Qm9vbE9wIHBvbHlCcmlkZ2VFZGdlICcgK1xuICAgICAgJ3BvbHlDYWNoZU1vbml0b3IgcG9seUNoZWNrIHBvbHlDaGlwT2ZmIHBvbHlDbGlwYm9hcmQgcG9seUNsb3NlQm9yZGVyIHBvbHlDb2xsYXBzZUVkZ2UgJyArXG4gICAgICAncG9seUNvbGxhcHNlRmFjZXQgcG9seUNvbG9yQmxpbmREYXRhIHBvbHlDb2xvckRlbCBwb2x5Q29sb3JQZXJWZXJ0ZXggcG9seUNvbG9yU2V0ICcgK1xuICAgICAgJ3BvbHlDb21wYXJlIHBvbHlDb25lIHBvbHlDb3B5VVYgcG9seUNyZWFzZSBwb2x5Q3JlYXNlQ3R4IHBvbHlDcmVhdGVGYWNldCAnICtcbiAgICAgICdwb2x5Q3JlYXRlRmFjZXRDdHggcG9seUN1YmUgcG9seUN1dCBwb2x5Q3V0Q3R4IHBvbHlDeWxpbmRlciBwb2x5Q3lsaW5kcmljYWxQcm9qZWN0aW9uICcgK1xuICAgICAgJ3BvbHlEZWxFZGdlIHBvbHlEZWxGYWNldCBwb2x5RGVsVmVydGV4IHBvbHlEdXBsaWNhdGVBbmRDb25uZWN0IHBvbHlEdXBsaWNhdGVFZGdlICcgK1xuICAgICAgJ3BvbHlFZGl0VVYgcG9seUVkaXRVVlNoZWxsIHBvbHlFdmFsdWF0ZSBwb2x5RXh0cnVkZUVkZ2UgcG9seUV4dHJ1ZGVGYWNldCAnICtcbiAgICAgICdwb2x5RXh0cnVkZVZlcnRleCBwb2x5RmxpcEVkZ2UgcG9seUZsaXBVViBwb2x5Rm9yY2VVViBwb2x5R2VvU2FtcGxlciBwb2x5SGVsaXggJyArXG4gICAgICAncG9seUluZm8gcG9seUluc3RhbGxBY3Rpb24gcG9seUxheW91dFVWIHBvbHlMaXN0Q29tcG9uZW50Q29udmVyc2lvbiBwb2x5TWFwQ3V0ICcgK1xuICAgICAgJ3BvbHlNYXBEZWwgcG9seU1hcFNldyBwb2x5TWFwU2V3TW92ZSBwb2x5TWVyZ2VFZGdlIHBvbHlNZXJnZUVkZ2VDdHggcG9seU1lcmdlRmFjZXQgJyArXG4gICAgICAncG9seU1lcmdlRmFjZXRDdHggcG9seU1lcmdlVVYgcG9seU1lcmdlVmVydGV4IHBvbHlNaXJyb3JGYWNlIHBvbHlNb3ZlRWRnZSAnICtcbiAgICAgICdwb2x5TW92ZUZhY2V0IHBvbHlNb3ZlRmFjZXRVViBwb2x5TW92ZVVWIHBvbHlNb3ZlVmVydGV4IHBvbHlOb3JtYWwgcG9seU5vcm1hbFBlclZlcnRleCAnICtcbiAgICAgICdwb2x5Tm9ybWFsaXplVVYgcG9seU9wdFV2cyBwb2x5T3B0aW9ucyBwb2x5T3V0cHV0IHBvbHlQaXBlIHBvbHlQbGFuYXJQcm9qZWN0aW9uICcgK1xuICAgICAgJ3BvbHlQbGFuZSBwb2x5UGxhdG9uaWNTb2xpZCBwb2x5UG9rZSBwb2x5UHJpbWl0aXZlIHBvbHlQcmlzbSBwb2x5UHJvamVjdGlvbiAnICtcbiAgICAgICdwb2x5UHlyYW1pZCBwb2x5UXVhZCBwb2x5UXVlcnlCbGluZERhdGEgcG9seVJlZHVjZSBwb2x5U2VsZWN0IHBvbHlTZWxlY3RDb25zdHJhaW50ICcgK1xuICAgICAgJ3BvbHlTZWxlY3RDb25zdHJhaW50TW9uaXRvciBwb2x5U2VsZWN0Q3R4IHBvbHlTZWxlY3RFZGl0Q3R4IHBvbHlTZXBhcmF0ZSAnICtcbiAgICAgICdwb2x5U2V0VG9GYWNlTm9ybWFsIHBvbHlTZXdFZGdlIHBvbHlTaG9ydGVzdFBhdGhDdHggcG9seVNtb290aCBwb2x5U29mdEVkZ2UgJyArXG4gICAgICAncG9seVNwaGVyZSBwb2x5U3BoZXJpY2FsUHJvamVjdGlvbiBwb2x5U3BsaXQgcG9seVNwbGl0Q3R4IHBvbHlTcGxpdEVkZ2UgcG9seVNwbGl0UmluZyAnICtcbiAgICAgICdwb2x5U3BsaXRWZXJ0ZXggcG9seVN0cmFpZ2h0ZW5VVkJvcmRlciBwb2x5U3ViZGl2aWRlRWRnZSBwb2x5U3ViZGl2aWRlRmFjZXQgJyArXG4gICAgICAncG9seVRvU3ViZGl2IHBvbHlUb3J1cyBwb2x5VHJhbnNmZXIgcG9seVRyaWFuZ3VsYXRlIHBvbHlVVlNldCBwb2x5VW5pdGUgcG9seVdlZGdlRmFjZSAnICtcbiAgICAgICdwb3BlbiBwb3B1cE1lbnUgcG9zZSBwb3cgcHJlbG9hZFJlZkVkIHByaW50IHByb2dyZXNzQmFyIHByb2dyZXNzV2luZG93IHByb2pGaWxlVmlld2VyICcgK1xuICAgICAgJ3Byb2plY3RDdXJ2ZSBwcm9qZWN0VGFuZ2VudCBwcm9qZWN0aW9uQ29udGV4dCBwcm9qZWN0aW9uTWFuaXAgcHJvbXB0RGlhbG9nIHByb3BNb2RDdHggJyArXG4gICAgICAncHJvcE1vdmUgcHNkQ2hhbm5lbE91dGxpbmVyIHBzZEVkaXRUZXh0dXJlRmlsZSBwc2RFeHBvcnQgcHNkVGV4dHVyZUZpbGUgcHV0ZW52IHB3ZCAnICtcbiAgICAgICdweXRob24gcXVlcnlTdWJkaXYgcXVpdCByYWRfdG9fZGVnIHJhZGlhbCByYWRpb0J1dHRvbiByYWRpb0J1dHRvbkdycCByYWRpb0NvbGxlY3Rpb24gJyArXG4gICAgICAncmFkaW9NZW51SXRlbUNvbGxlY3Rpb24gcmFtcENvbG9yUG9ydCByYW5kIHJhbmRvbWl6ZUZvbGxpY2xlcyByYW5kc3RhdGUgcmFuZ2VDb250cm9sICcgK1xuICAgICAgJ3JlYWRUYWtlIHJlYnVpbGRDdXJ2ZSByZWJ1aWxkU3VyZmFjZSByZWNvcmRBdHRyIHJlY29yZERldmljZSByZWRvIHJlZmVyZW5jZSAnICtcbiAgICAgICdyZWZlcmVuY2VFZGl0IHJlZmVyZW5jZVF1ZXJ5IHJlZmluZVN1YmRpdlNlbGVjdGlvbkxpc3QgcmVmcmVzaCByZWZyZXNoQUUgJyArXG4gICAgICAncmVnaXN0ZXJQbHVnaW5SZXNvdXJjZSByZWhhc2ggcmVsb2FkSW1hZ2UgcmVtb3ZlSm9pbnQgcmVtb3ZlTXVsdGlJbnN0YW5jZSAnICtcbiAgICAgICdyZW1vdmVQYW5lbENhdGVnb3J5IHJlbmFtZSByZW5hbWVBdHRyIHJlbmFtZVNlbGVjdGlvbkxpc3QgcmVuYW1lVUkgcmVuZGVyICcgK1xuICAgICAgJ3JlbmRlckdsb2JhbHNOb2RlIHJlbmRlckluZm8gcmVuZGVyTGF5ZXJCdXR0b24gcmVuZGVyTGF5ZXJQYXJlbnQgJyArXG4gICAgICAncmVuZGVyTGF5ZXJQb3N0UHJvY2VzcyByZW5kZXJMYXllclVucGFyZW50IHJlbmRlck1hbmlwIHJlbmRlclBhcnRpdGlvbiAnICtcbiAgICAgICdyZW5kZXJRdWFsaXR5Tm9kZSByZW5kZXJTZXR0aW5ncyByZW5kZXJUaHVtYm5haWxVcGRhdGUgcmVuZGVyV2luZG93RWRpdG9yICcgK1xuICAgICAgJ3JlbmRlcldpbmRvd1NlbGVjdENvbnRleHQgcmVuZGVyZXIgcmVvcmRlciByZW9yZGVyRGVmb3JtZXJzIHJlcXVpcmVzIHJlcm9vdCAnICtcbiAgICAgICdyZXNhbXBsZUZsdWlkIHJlc2V0QUUgcmVzZXRQZnhUb1BvbHlDYW1lcmEgcmVzZXRUb29sIHJlc29sdXRpb25Ob2RlIHJldGFyZ2V0ICcgK1xuICAgICAgJ3JldmVyc2VDdXJ2ZSByZXZlcnNlU3VyZmFjZSByZXZvbHZlIHJnYl90b19oc3YgcmlnaWRCb2R5IHJpZ2lkU29sdmVyIHJvbGwgcm9sbEN0eCAnICtcbiAgICAgICdyb290T2Ygcm90IHJvdGF0ZSByb3RhdGlvbkludGVycG9sYXRpb24gcm91bmRDb25zdGFudFJhZGl1cyByb3dDb2x1bW5MYXlvdXQgcm93TGF5b3V0ICcgK1xuICAgICAgJ3J1blRpbWVDb21tYW5kIHJ1bnVwIHNhbXBsZUltYWdlIHNhdmVBbGxTaGVsdmVzIHNhdmVBdHRyUHJlc2V0IHNhdmVGbHVpZCBzYXZlSW1hZ2UgJyArXG4gICAgICAnc2F2ZUluaXRpYWxTdGF0ZSBzYXZlTWVudSBzYXZlUHJlZk9iamVjdHMgc2F2ZVByZWZzIHNhdmVTaGVsZiBzYXZlVG9vbFNldHRpbmdzIHNjYWxlICcgK1xuICAgICAgJ3NjYWxlQnJ1c2hCcmlnaHRuZXNzIHNjYWxlQ29tcG9uZW50cyBzY2FsZUNvbnN0cmFpbnQgc2NhbGVLZXkgc2NhbGVLZXlDdHggc2NlbmVFZGl0b3IgJyArXG4gICAgICAnc2NlbmVVSVJlcGxhY2VtZW50IHNjbWggc2NyaXB0Q3R4IHNjcmlwdEVkaXRvckluZm8gc2NyaXB0Sm9iIHNjcmlwdE5vZGUgc2NyaXB0VGFibGUgJyArXG4gICAgICAnc2NyaXB0VG9TaGVsZiBzY3JpcHRlZFBhbmVsIHNjcmlwdGVkUGFuZWxUeXBlIHNjcm9sbEZpZWxkIHNjcm9sbExheW91dCBzY3VscHQgJyArXG4gICAgICAnc2VhcmNoUGF0aEFycmF5IHNlZWQgc2VsTG9hZFNldHRpbmdzIHNlbGVjdCBzZWxlY3RDb250ZXh0IHNlbGVjdEN1cnZlQ1Ygc2VsZWN0S2V5ICcgK1xuICAgICAgJ3NlbGVjdEtleUN0eCBzZWxlY3RLZXlmcmFtZVJlZ2lvbkN0eCBzZWxlY3RNb2RlIHNlbGVjdFByZWYgc2VsZWN0UHJpb3JpdHkgc2VsZWN0VHlwZSAnICtcbiAgICAgICdzZWxlY3RlZE5vZGVzIHNlbGVjdGlvbkNvbm5lY3Rpb24gc2VwYXJhdG9yIHNldEF0dHIgc2V0QXR0ckVudW1SZXNvdXJjZSAnICtcbiAgICAgICdzZXRBdHRyTWFwcGluZyBzZXRBdHRyTmljZU5hbWVSZXNvdXJjZSBzZXRDb25zdHJhaW50UmVzdFBvc2l0aW9uICcgK1xuICAgICAgJ3NldERlZmF1bHRTaGFkaW5nR3JvdXAgc2V0RHJpdmVuS2V5ZnJhbWUgc2V0RHluYW1pYyBzZXRFZGl0Q3R4IHNldEVkaXRvciBzZXRGbHVpZEF0dHIgJyArXG4gICAgICAnc2V0Rm9jdXMgc2V0SW5maW5pdHkgc2V0SW5wdXREZXZpY2VNYXBwaW5nIHNldEtleUN0eCBzZXRLZXlQYXRoIHNldEtleWZyYW1lICcgK1xuICAgICAgJ3NldEtleWZyYW1lQmxlbmRzaGFwZVRhcmdldFd0cyBzZXRNZW51TW9kZSBzZXROb2RlTmljZU5hbWVSZXNvdXJjZSBzZXROb2RlVHlwZUZsYWcgJyArXG4gICAgICAnc2V0UGFyZW50IHNldFBhcnRpY2xlQXR0ciBzZXRQZnhUb1BvbHlDYW1lcmEgc2V0UGx1Z2luUmVzb3VyY2Ugc2V0UHJvamVjdCAnICtcbiAgICAgICdzZXRTdGFtcERlbnNpdHkgc2V0U3RhcnR1cE1lc3NhZ2Ugc2V0U3RhdGUgc2V0VG9vbFRvIHNldFVJVGVtcGxhdGUgc2V0WGZvcm1NYW5pcCBzZXRzICcgK1xuICAgICAgJ3NoYWRpbmdDb25uZWN0aW9uIHNoYWRpbmdHZW9tZXRyeVJlbEN0eCBzaGFkaW5nTGlnaHRSZWxDdHggc2hhZGluZ05ldHdvcmtDb21wYXJlICcgK1xuICAgICAgJ3NoYWRpbmdOb2RlIHNoYXBlQ29tcGFyZSBzaGVsZkJ1dHRvbiBzaGVsZkxheW91dCBzaGVsZlRhYkxheW91dCBzaGVsbEZpZWxkICcgK1xuICAgICAgJ3Nob3J0TmFtZU9mIHNob3dIZWxwIHNob3dIaWRkZW4gc2hvd01hbmlwQ3R4IHNob3dTZWxlY3Rpb25JblRpdGxlICcgK1xuICAgICAgJ3Nob3dTaGFkaW5nR3JvdXBBdHRyRWRpdG9yIHNob3dXaW5kb3cgc2lnbiBzaW1wbGlmeSBzaW4gc2luZ2xlUHJvZmlsZUJpcmFpbFN1cmZhY2UgJyArXG4gICAgICAnc2l6ZSBzaXplQnl0ZXMgc2tpbkNsdXN0ZXIgc2tpblBlcmNlbnQgc21vb3RoQ3VydmUgc21vb3RoVGFuZ2VudFN1cmZhY2Ugc21vb3Roc3RlcCAnICtcbiAgICAgICdzbmFwMnRvMiBzbmFwS2V5IHNuYXBNb2RlIHNuYXBUb2dldGhlckN0eCBzbmFwc2hvdCBzb2Z0IHNvZnRNb2Qgc29mdE1vZEN0eCBzb3J0IHNvdW5kICcgK1xuICAgICAgJ3NvdW5kQ29udHJvbCBzb3VyY2Ugc3BhY2VMb2NhdG9yIHNwaGVyZSBzcGhyYW5kIHNwb3RMaWdodCBzcG90TGlnaHRQcmV2aWV3UG9ydCAnICtcbiAgICAgICdzcHJlYWRTaGVldEVkaXRvciBzcHJpbmcgc3FydCBzcXVhcmVTdXJmYWNlIHNydENvbnRleHQgc3RhY2tUcmFjZSBzdGFydFN0cmluZyAnICtcbiAgICAgICdzdGFydHNXaXRoIHN0aXRjaEFuZEV4cGxvZGVTaGVsbCBzdGl0Y2hTdXJmYWNlIHN0aXRjaFN1cmZhY2VQb2ludHMgc3RyY21wICcgK1xuICAgICAgJ3N0cmluZ0FycmF5Q2F0ZW5hdGUgc3RyaW5nQXJyYXlDb250YWlucyBzdHJpbmdBcnJheUNvdW50IHN0cmluZ0FycmF5SW5zZXJ0QXRJbmRleCAnICtcbiAgICAgICdzdHJpbmdBcnJheUludGVyc2VjdG9yIHN0cmluZ0FycmF5UmVtb3ZlIHN0cmluZ0FycmF5UmVtb3ZlQXRJbmRleCAnICtcbiAgICAgICdzdHJpbmdBcnJheVJlbW92ZUR1cGxpY2F0ZXMgc3RyaW5nQXJyYXlSZW1vdmVFeGFjdCBzdHJpbmdBcnJheVRvU3RyaW5nICcgK1xuICAgICAgJ3N0cmluZ1RvU3RyaW5nQXJyYXkgc3RyaXAgc3RyaXBQcmVmaXhGcm9tTmFtZSBzdHJva2Ugc3ViZEF1dG9Qcm9qZWN0aW9uICcgK1xuICAgICAgJ3N1YmRDbGVhblRvcG9sb2d5IHN1YmRDb2xsYXBzZSBzdWJkRHVwbGljYXRlQW5kQ29ubmVjdCBzdWJkRWRpdFVWICcgK1xuICAgICAgJ3N1YmRMaXN0Q29tcG9uZW50Q29udmVyc2lvbiBzdWJkTWFwQ3V0IHN1YmRNYXBTZXdNb3ZlIHN1YmRNYXRjaFRvcG9sb2d5IHN1YmRNaXJyb3IgJyArXG4gICAgICAnc3ViZFRvQmxpbmQgc3ViZFRvUG9seSBzdWJkVHJhbnNmZXJVVnNUb0NhY2hlIHN1YmRpdiBzdWJkaXZDcmVhc2UgJyArXG4gICAgICAnc3ViZGl2RGlzcGxheVNtb290aG5lc3Mgc3Vic3RpdHV0ZSBzdWJzdGl0dXRlQWxsU3RyaW5nIHN1YnN0aXR1dGVHZW9tZXRyeSBzdWJzdHJpbmcgJyArXG4gICAgICAnc3VyZmFjZSBzdXJmYWNlU2FtcGxlciBzdXJmYWNlU2hhZGVyTGlzdCBzd2F0Y2hEaXNwbGF5UG9ydCBzd2l0Y2hUYWJsZSBzeW1ib2xCdXR0b24gJyArXG4gICAgICAnc3ltYm9sQ2hlY2tCb3ggc3lzRmlsZSBzeXN0ZW0gdGFiTGF5b3V0IHRhbiB0YW5nZW50Q29uc3RyYWludCB0ZXhMYXR0aWNlRGVmb3JtQ29udGV4dCAnICtcbiAgICAgICd0ZXhNYW5pcENvbnRleHQgdGV4TW92ZUNvbnRleHQgdGV4TW92ZVVWU2hlbGxDb250ZXh0IHRleFJvdGF0ZUNvbnRleHQgdGV4U2NhbGVDb250ZXh0ICcgK1xuICAgICAgJ3RleFNlbGVjdENvbnRleHQgdGV4U2VsZWN0U2hvcnRlc3RQYXRoQ3R4IHRleFNtdWRnZVVWQ29udGV4dCB0ZXhXaW5Ub29sQ3R4IHRleHQgJyArXG4gICAgICAndGV4dEN1cnZlcyB0ZXh0RmllbGQgdGV4dEZpZWxkQnV0dG9uR3JwIHRleHRGaWVsZEdycCB0ZXh0TWFuaXAgdGV4dFNjcm9sbExpc3QgJyArXG4gICAgICAndGV4dFRvU2hlbGYgdGV4dHVyZURpc3BsYWNlUGxhbmUgdGV4dHVyZUhhaXJDb2xvciB0ZXh0dXJlUGxhY2VtZW50Q29udGV4dCAnICtcbiAgICAgICd0ZXh0dXJlV2luZG93IHRocmVhZENvdW50IHRocmVlUG9pbnRBcmNDdHggdGltZUNvbnRyb2wgdGltZVBvcnQgdGltZXJYIHRvTmF0aXZlUGF0aCAnICtcbiAgICAgICd0b2dnbGUgdG9nZ2xlQXhpcyB0b2dnbGVXaW5kb3dWaXNpYmlsaXR5IHRva2VuaXplIHRva2VuaXplTGlzdCB0b2xlcmFuY2UgdG9sb3dlciAnICtcbiAgICAgICd0b29sQnV0dG9uIHRvb2xDb2xsZWN0aW9uIHRvb2xEcm9wcGVkIHRvb2xIYXNPcHRpb25zIHRvb2xQcm9wZXJ0eVdpbmRvdyB0b3J1cyB0b3VwcGVyICcgK1xuICAgICAgJ3RyYWNlIHRyYWNrIHRyYWNrQ3R4IHRyYW5zZmVyQXR0cmlidXRlcyB0cmFuc2Zvcm1Db21wYXJlIHRyYW5zZm9ybUxpbWl0cyB0cmFuc2xhdG9yICcgK1xuICAgICAgJ3RyaW0gdHJ1bmMgdHJ1bmNhdGVGbHVpZENhY2hlIHRydW5jYXRlSGFpckNhY2hlIHR1bWJsZSB0dW1ibGVDdHggdHVyYnVsZW5jZSAnICtcbiAgICAgICd0d29Qb2ludEFyY0N0eCB1aVJlcyB1aVRlbXBsYXRlIHVuYXNzaWduSW5wdXREZXZpY2UgdW5kbyB1bmRvSW5mbyB1bmdyb3VwIHVuaWZvcm0gdW5pdCAnICtcbiAgICAgICd1bmxvYWRQbHVnaW4gdW50YW5nbGVVViB1bnRpdGxlZEZpbGVOYW1lIHVudHJpbSB1cEF4aXMgdXBkYXRlQUUgdXNlckN0eCB1dkxpbmsgJyArXG4gICAgICAndXZTbmFwc2hvdCB2YWxpZGF0ZVNoZWxmTmFtZSB2ZWN0b3JpemUgdmlldzJkVG9vbEN0eCB2aWV3Q2FtZXJhIHZpZXdDbGlwUGxhbmUgJyArXG4gICAgICAndmlld0ZpdCB2aWV3SGVhZE9uIHZpZXdMb29rQXQgdmlld01hbmlwIHZpZXdQbGFjZSB2aWV3U2V0IHZpc29yIHZvbHVtZUF4aXMgdm9ydGV4ICcgK1xuICAgICAgJ3dhaXRDdXJzb3Igd2FybmluZyB3ZWJCcm93c2VyIHdlYkJyb3dzZXJQcmVmcyB3aGF0SXMgd2luZG93IHdpbmRvd1ByZWYgd2lyZSAnICtcbiAgICAgICd3aXJlQ29udGV4dCB3b3Jrc3BhY2Ugd3JpbmtsZSB3cmlua2xlQ29udGV4dCB3cml0ZVRha2UgeGJtTGFuZ1BhdGhMaXN0IHhmb3JtJyxcbiAgICBpbGxlZ2FsOiAnPC8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuICAgICAgeyAvLyBlYXRzIHZhcmlhYmxlc1xuICAgICAgICBiZWdpbjogJ1tcXFxcJFxcXFwlXFxcXEBdKFxcXFxeXFxcXHdcXFxcYnwjXFxcXHcrfFteXFxcXHNcXFxcd3tdfHtcXFxcdyt9fFxcXFx3KyknXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ21vZHVsZSB1c2VfbW9kdWxlIGltcG9ydF9tb2R1bGUgaW5jbHVkZV9tb2R1bGUgZW5kX21vZHVsZSBpbml0aWFsaXNlICcgK1xuICAgICAgJ211dGFibGUgaW5pdGlhbGl6ZSBmaW5hbGl6ZSBmaW5hbGlzZSBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gcHJlZCAnICtcbiAgICAgICdtb2RlIGZ1bmMgdHlwZSBpbnN0IHNvbHZlciBhbnlfcHJlZCBhbnlfZnVuYyBpcyBzZW1pZGV0IGRldCBub25kZXQgJyArXG4gICAgICAnbXVsdGkgZXJyb25lb3VzIGZhaWx1cmUgY2Nfbm9uZGV0IGNjX211bHRpIHR5cGVjbGFzcyBpbnN0YW5jZSB3aGVyZSAnICtcbiAgICAgICdwcmFnbWEgcHJvbWlzZSBleHRlcm5hbCB0cmFjZSBhdG9taWMgb3JfZWxzZSByZXF1aXJlX2NvbXBsZXRlX3N3aXRjaCAnICtcbiAgICAgICdyZXF1aXJlX2RldCByZXF1aXJlX3NlbWlkZXQgcmVxdWlyZV9tdWx0aSByZXF1aXJlX25vbmRldCAnICtcbiAgICAgICdyZXF1aXJlX2NjX211bHRpIHJlcXVpcmVfY2Nfbm9uZGV0IHJlcXVpcmVfZXJyb25lb3VzIHJlcXVpcmVfZmFpbHVyZScsXG4gICAgbWV0YTpcbiAgICAgIC8vIHByYWdtYVxuICAgICAgJ2lubGluZSBub19pbmxpbmUgdHlwZV9zcGVjIHNvdXJjZV9maWxlIGZhY3RfdGFibGUgb2Jzb2xldGUgbWVtbyAnICtcbiAgICAgICdsb29wX2NoZWNrIG1pbmltYWxfbW9kZWwgdGVybWluYXRlcyBkb2VzX25vdF90ZXJtaW5hdGUgJyArXG4gICAgICAnY2hlY2tfdGVybWluYXRpb24gcHJvbWlzZV9lcXVpdmFsZW50X2NsYXVzZXMgJyArXG4gICAgICAvLyBwcmVwcm9jZXNzb3JcbiAgICAgICdmb3JlaWduX3Byb2MgZm9yZWlnbl9kZWNsIGZvcmVpZ25fY29kZSBmb3JlaWduX3R5cGUgJyArXG4gICAgICAnZm9yZWlnbl9pbXBvcnRfbW9kdWxlIGZvcmVpZ25fZXhwb3J0X2VudW0gZm9yZWlnbl9leHBvcnQgJyArXG4gICAgICAnZm9yZWlnbl9lbnVtIG1heV9jYWxsX21lcmN1cnkgd2lsbF9ub3RfY2FsbF9tZXJjdXJ5IHRocmVhZF9zYWZlICcgK1xuICAgICAgJ25vdF90aHJlYWRfc2FmZSBtYXliZV90aHJlYWRfc2FmZSBwcm9taXNlX3B1cmUgcHJvbWlzZV9zZW1pcHVyZSAnICtcbiAgICAgICd0YWJsZWRfZm9yX2lvIGxvY2FsIHVudHJhaWxlZCB0cmFpbGVkIGF0dGFjaF90b19pb19zdGF0ZSAnICtcbiAgICAgICdjYW5fcGFzc19hc19tZXJjdXJ5X3R5cGUgc3RhYmxlIHdpbGxfbm90X3Rocm93X2V4Y2VwdGlvbiAnICtcbiAgICAgICdtYXlfbW9kaWZ5X3RyYWlsIHdpbGxfbm90X21vZGlmeV90cmFpbCBtYXlfZHVwbGljYXRlICcgK1xuICAgICAgJ21heV9ub3RfZHVwbGljYXRlIGFmZmVjdHNfbGl2ZW5lc3MgZG9lc19ub3RfYWZmZWN0X2xpdmVuZXNzICcgK1xuICAgICAgJ2RvZXNudF9hZmZlY3RfbGl2ZW5lc3Mgbm9fc2hhcmluZyB1bmtub3duX3NoYXJpbmcgc2hhcmluZycsXG4gICAgYnVpbHRfaW46XG4gICAgICAnc29tZSBhbGwgbm90IGlmIHRoZW4gZWxzZSB0cnVlIGZhaWwgZmFsc2UgdHJ5IGNhdGNoIGNhdGNoX2FueSAnICtcbiAgICAgICdzZW1pZGV0X3RydWUgc2VtaWRldF9mYWxzZSBzZW1pZGV0X2ZhaWwgaW1wdXJlX3RydWUgaW1wdXJlIHNlbWlwdXJlJ1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKCclJywgJyQnKTtcblxuICB2YXIgTlVNQ09ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBcIjAnLlxcXFx8MFtib3hdWzAtOWEtZkEtRl0qXCJcbiAgfTtcblxuICB2YXIgQVRPTSA9IGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtyZWxldmFuY2U6IDB9KTtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7cmVsZXZhbmNlOiAwfSk7XG4gIHZhciBTVFJJTkdfRk1UID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ1xcXFxcXFxcW2FiZm5ydHZdXFxcXHxcXFxcXFxcXHhbMC05YS1mQS1GXSpcXFxcXFxcXFxcXFx8JVstKyMgKi4wLTldKltkaW94WHVjc2ZlRWdHcF0nLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBTVFJJTkcuY29udGFpbnMucHVzaChTVFJJTkdfRk1UKTtcblxuICB2YXIgSU1QTElDQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICc8PT4nfSxcbiAgICAgIHtiZWdpbjogJzw9JywgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJz0+JywgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJy9cXFxcXFxcXCd9LFxuICAgICAge2JlZ2luOiAnXFxcXFxcXFwvJ31cbiAgICBdXG4gIH07XG5cbiAgdmFyIEhFQURfQk9EWV9DT05KVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJzotXFxcXHwtLT4nfSxcbiAgICAgIHtiZWdpbjogJz0nLCByZWxldmFuY2U6IDB9XG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydtJywgJ21vbyddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgSU1QTElDQVRJT04sXG4gICAgICBIRUFEX0JPRFlfQ09OSlVOQ1RJT04sXG4gICAgICBDT01NRU5ULFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE5VTUNPREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgQVRPTSxcbiAgICAgIFNUUklORyxcbiAgICAgIHtiZWdpbjogLzotL30sIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB7YmVnaW46IC9cXC4kL30gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIC8vbG9jYWwgbGFiZWxzOiAlP1tGQl0/W0FUXT9cXGR7MSwyfVxcdytcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsnbWlwcyddLFxuICAgIGxleGVtZXM6ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbWV0YTpcbiAgICAgICAgLy9HTlUgcHJlcHJvY3NcbiAgICAgICAgJy4yYnl0ZSAuNGJ5dGUgLmFsaWduIC5hc2NpaSAuYXNjaXogLmJhbGlnbiAuYnl0ZSAuY29kZSAuZGF0YSAuZWxzZSAuZW5kIC5lbmRpZiAuZW5kbSAuZW5kciAuZXF1IC5lcnIgLmV4aXRtIC5leHRlcm4gLmdsb2JhbCAuaHdvcmQgLmlmIC5pZmRlZiAuaWZuZGVmIC5pbmNsdWRlIC5pcnAgLmxvbmcgLm1hY3JvIC5yZXB0IC5yZXEgLnNlY3Rpb24gLnNldCAuc2tpcCAuc3BhY2UgLnRleHQgLndvcmQgLmx0b3JnICcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJyQwICQxICQyICQzICQ0ICQ1ICQ2ICQ3ICQ4ICQ5ICQxMCAkMTEgJDEyICQxMyAkMTQgJDE1ICcgKyAvLyBpbnRlZ2VyIHJlZ2lzdGVyc1xuICAgICAgICAnJDE2ICQxNyAkMTggJDE5ICQyMCAkMjEgJDIyICQyMyAkMjQgJDI1ICQyNiAkMjcgJDI4ICQyOSAkMzAgJDMxICcgKyAvLyBpbnRlZ2VyIHJlZ2lzdGVyc1xuICAgICAgICAnemVybyBhdCB2MCB2MSBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICd0MCB0MSB0MiB0MyB0NCB0NSB0NiB0NyB0OCB0OSBzMCBzMSBzMiBzMyBzNCBzNSBzNiBzNyBzOCAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICdrMCBrMSBncCBzcCBmcCByYSAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICckZjAgJGYxICRmMiAkZjIgJGY0ICRmNSAkZjYgJGY3ICRmOCAkZjkgJGYxMCAkZjExICRmMTIgJGYxMyAkZjE0ICRmMTUgJyArIC8vIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyc1xuICAgICAgICAnJGYxNiAkZjE3ICRmMTggJGYxOSAkZjIwICRmMjEgJGYyMiAkZjIzICRmMjQgJGYyNSAkZjI2ICRmMjcgJGYyOCAkZjI5ICRmMzAgJGYzMSAnICsgLy8gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzXG4gICAgICAgICdDb250ZXh0IFJhbmRvbSBFbnRyeUxvMCBFbnRyeUxvMSBDb250ZXh0IFBhZ2VNYXNrIFdpcmVkIEVudHJ5SGkgJyArIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgICAgICdIV1JFbmEgQmFkVkFkZHIgQ291bnQgQ29tcGFyZSBTUiBJbnRDdGwgU1JTQ3RsIFNSU01hcCBDYXVzZSBFUEMgUFJJZCAnICsgLy8gQ29wcm9jZXNzb3IgMCByZWdpc3RlcnNcbiAgICAgICAgJ0VCYXNlIENvbmZpZyBDb25maWcxIENvbmZpZzIgQ29uZmlnMyBMTEFkZHIgRGVidWcgREVQQyBERVNBVkUgQ2FjaGVFcnIgJyArIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgICAgICdFQ0MgRXJyb3JFUEMgVGFnTG8gRGF0YUxvIFRhZ0hpIERhdGFIaSBXYXRjaExvIFdhdGNoSGkgUGVyZkN0bCBQZXJmQ250ICcgLy8gQ29wcm9jZXNzb3IgMCByZWdpc3RlcnNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcrICAgICAvL21uZW1vbmljc1xuICAgICAgICAgICAgLy8gMzItYml0IGludGVnZXIgaW5zdHJ1Y3Rpb25zXG4gICAgICAgICAgICAnYWRkaT91P3xhbmRpP3xiKGFsKT98YmVxbD98YmdleihhbCk/bD98Ymd0emw/fGJsZXpsP3xibHR6KGFsKT9sP3wnICtcbiAgICAgICAgICAgICdibmVsP3xjbFtvel18ZGl2dT98ZXh0fGluc3xqKGFsKT98amFscihcXC5oYik/fGpyKFxcLmhiKT98bGJ1P3xsaHU/fCcgK1xuICAgICAgICAgICAgJ2xsfGx1aXxsd1tscl0/fG1hZGR1P3xtZmhpfG1mbG98bW92bnxtb3Z6fG1vdmV8bXN1YnU/fG10aGl8bXRsb3xtdWx8JyArXG4gICAgICAgICAgICAnbXVsdHU/fG5vcHxub3J8b3JpP3xyb3Rydj98c2J8c2N8c2VbYmhdfHNofHNsbHY/fHNsdGk/dT98c3Jhdj98JyArXG4gICAgICAgICAgICAnc3Jsdj98c3VidT98c3dbbHJdP3x4b3JpP3x3c2JofCcgK1xuICAgICAgICAgICAgLy8gZmxvYXRpbmctcG9pbnQgaW5zdHJ1Y3Rpb25zXG4gICAgICAgICAgICAnYWJzXFwuW3NkXXxhZGRcXC5bc2RdfGFsbnYucHN8YmMxW2Z0XWw/fCcgK1xuICAgICAgICAgICAgJ2NcXC4ocz9mfHVufHU/ZXF8W291XWx0fFtvdV1sZXxuZ2xlP3xzZXF8bFtldF18bmdbZXRdKVxcLltzZF18JyArXG4gICAgICAgICAgICAnKGNlaWx8Zmxvb3J8cm91bmR8dHJ1bmMpXFwuW2x3XVxcLltzZF18Y2ZjMXxjdnRcXC5kXFwuW2xzd118JyArXG4gICAgICAgICAgICAnY3Z0XFwubFxcLltkc3ddfGN2dFxcLnBzXFwuc3xjdnRcXC5zXFwuW2Rsd118Y3Z0XFwuc1xcLnBbbHVdfGN2dFxcLndcXC5bZGxzXXwnICtcbiAgICAgICAgICAgICdkaXZcXC5bZHNdfGxkeD9jMXxsdXhjMXxsd3g/YzF8bWFkZFxcLltzZF18bWZjMXxtb3ZbZm50el0/XFwuW2RzXXwnICtcbiAgICAgICAgICAgICdtc3ViXFwuW3NkXXxtdGg/YzF8bXVsXFwuW2RzXXxuZWdcXC5bZHNdfG5tYWRkXFwuW2RzXXxubXN1YlxcLltkc118JyArXG4gICAgICAgICAgICAncFtsdV1bbHVdXFwucHN8cmVjaXBcXC5mbXR8cj9zcXJ0XFwuW2RzXXxzZHg/YzF8c3ViXFwuW2RzXXxzdXhjMXwnICtcbiAgICAgICAgICAgICdzd3g/YzF8JyArXG4gICAgICAgICAgICAvLyBzeXN0ZW0gY29udHJvbCBpbnN0cnVjdGlvbnNcbiAgICAgICAgICAgICdicmVha3xjYWNoZXxkP2VyZXR8W2RlXWl8ZWhifG1mYzB8bXRjMHxwYXVzZXxwcmVmeD98cmRod3J8JyArXG4gICAgICAgICAgICAncmRwZ3ByfHNkYmJwfHNzbm9wfHN5bmNpP3xzeXNjYWxsfHRlcWk/fHRnZWk/dT98dGxiKHB8cnx3W2lyXSl8JyArXG4gICAgICAgICAgICAndGx0aT91P3x0bmVpP3x3YWl0fHdycGdwcicrXG4gICAgICAgICcpJyxcbiAgICAgICAgZW5kOiAnXFxcXHMnXG4gICAgICB9LFxuICAgICAgLy8gbGluZXMgZW5kaW5nIHdpdGggOyBvciAjIGFyZW4ndCByZWFsbHkgY29tbWVudHMsIHByb2JhYmx5IGF1dG8tZGV0ZWN0IGZhaWxcbiAgICAgIGhsanMuQ09NTUVOVCgnWzsjXSg/IVxccyokKScsICckJyksXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLFxuICAgICAgICBlbmQ6ICdbXlxcXFxcXFxcXVxcJycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFx8JywgZW5kOiAnXFxcXHwnLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICB7YmVnaW46ICcweFswLTlhLWZdKyd9LCAvL2hleFxuICAgICAgICAgICAge2JlZ2luOiAnXFxcXGItP1xcXFxkKyd9ICAgICAgICAgICAvL2JhcmUgbnVtYmVyXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJ15cXFxccypbYS16X1xcXFwuXFxcXCRdW2EtejAtOV9cXFxcLlxcXFwkXSs6J30sIC8vR05VIE1JUFMgc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdeXFxcXHMqWzAtOV0rOid9LCAvLyBudW1iZXJlZCBsb2NhbCBsYWJlbHNcbiAgICAgICAgICAgIHtiZWdpbjogJ1swLTldK1tiZl0nIH0gIC8vIG51bWJlciBsb2NhbCBsYWJlbCByZWZlcmVuY2UgKGJhY2t3YXJkcywgZm9yd2FyZHMpXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogJ1xcLydcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6XG4gICAgICAnZW52aXJvbiB2b2NhYnVsYXJpZXMgbm90YXRpb25zIGNvbnN0cnVjdG9ycyBkZWZpbml0aW9ucyAnICtcbiAgICAgICdyZWdpc3RyYXRpb25zIHRoZW9yZW1zIHNjaGVtZXMgcmVxdWlyZW1lbnRzIGJlZ2luIGVuZCBkZWZpbml0aW9uICcgK1xuICAgICAgJ3JlZ2lzdHJhdGlvbiBjbHVzdGVyIGV4aXN0ZW5jZSBwcmVkIGZ1bmMgZGVmcHJlZCBkZWZmdW5jIHRoZW9yZW0gJyArXG4gICAgICAncHJvb2YgbGV0IHRha2UgYXNzdW1lIHRoZW4gdGh1cyBoZW5jZSBleCBmb3Igc3QgaG9sZHMgY29uc2lkZXIgJyArXG4gICAgICAncmVjb25zaWRlciBzdWNoIHRoYXQgYW5kIGluIHByb3ZpZGVkIG9mIGFzIGZyb20gYmUgYmVpbmcgYnkgbWVhbnMgJyArXG4gICAgICAnZXF1YWxzIGltcGxpZXMgaWZmIHJlZGVmaW5lIGRlZmluZSBub3cgbm90IG9yIGF0dHIgaXMgbW9kZSAnICtcbiAgICAgICdzdXBwb3NlIHBlciBjYXNlcyBzZXQgdGhlc2lzIGNvbnRyYWRpY3Rpb24gc2NoZW1lIHJlc2VydmUgc3RydWN0ICcgK1xuICAgICAgJ2NvcnJlY3RuZXNzIGNvbXBhdGliaWxpdHkgY29oZXJlbmNlIHN5bW1ldHJ5IGFzc3ltZXRyeSAnICtcbiAgICAgICdyZWZsZXhpdml0eSBpcnJlZmxleGl2aXR5IGNvbm5lY3RlZG5lc3MgdW5pcXVlbmVzcyBjb21tdXRhdGl2aXR5ICcgK1xuICAgICAgJ2lkZW1wb3RlbmNlIGludm9sdXRpdmVuZXNzIHByb2plY3Rpdml0eScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnOjonLCAnJCcpXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFBFUkxfS0VZV09SRFMgPSAnZ2V0cHdlbnQgZ2V0c2VydmVudCBxdW90ZW1ldGEgbXNncmN2IHNjYWxhciBraWxsIGRibWNsb3NlIHVuZGVmIGxjICcgK1xuICAgICdtYSBzeXN3cml0ZSB0ciBzZW5kIHVtYXNrIHN5c29wZW4gc2htd3JpdGUgdmVjIHF4IHV0aW1lIGxvY2FsIG9jdCBzZW1jdGwgbG9jYWx0aW1lICcgK1xuICAgICdyZWFkcGlwZSBkbyByZXR1cm4gZm9ybWF0IHJlYWQgc3ByaW50ZiBkYm1vcGVuIHBvcCBnZXRwZ3JwIG5vdCBnZXRwd25hbSByZXdpbmRkaXIgcXEnICtcbiAgICAnZmlsZW5vIHF3IGVuZHByb3RvZW50IHdhaXQgc2V0aG9zdGVudCBibGVzcyBzfDAgb3BlbmRpciBjb250aW51ZSBlYWNoIHNsZWVwIGVuZGdyZW50ICcgK1xuICAgICdzaHV0ZG93biBkdW1wIGNob21wIGNvbm5lY3QgZ2V0c29ja25hbWUgZGllIHNvY2tldHBhaXIgY2xvc2UgZmxvY2sgZXhpc3RzIGluZGV4IHNobWdldCcgK1xuICAgICdzdWIgZm9yIGVuZHB3ZW50IHJlZG8gbHN0YXQgbXNnY3RsIHNldHBncnAgYWJzIGV4aXQgc2VsZWN0IHByaW50IHJlZiBnZXRob3N0YnlhZGRyICcgK1xuICAgICd1bnNoaWZ0IGZjbnRsIHN5c2NhbGwgZ290byBnZXRuZXRieWFkZHIgam9pbiBnbXRpbWUgc3ltbGluayBzZW1nZXQgc3BsaWNlIHh8MCAnICtcbiAgICAnZ2V0cGVlcm5hbWUgcmVjdiBsb2cgc2V0c29ja29wdCBjb3MgbGFzdCByZXZlcnNlIGdldGhvc3RieW5hbWUgZ2V0Z3JuYW0gc3R1ZHkgZm9ybWxpbmUgJyArXG4gICAgJ2VuZGhvc3RlbnQgdGltZXMgY2hvcCBsZW5ndGggZ2V0aG9zdGVudCBnZXRuZXRlbnQgcGFjayBnZXRwcm90b2VudCBnZXRzZXJ2YnluYW1lIHJhbmQgJyArXG4gICAgJ21rZGlyIHBvcyBjaG1vZCB5fDAgc3Vic3RyIGVuZG5ldGVudCBwcmludGYgbmV4dCBvcGVuIG1zZ3NuZCByZWFkZGlyIHVzZSB1bmxpbmsgJyArXG4gICAgJ2dldHNvY2tvcHQgZ2V0cHJpb3JpdHkgcmluZGV4IHdhbnRhcnJheSBoZXggc3lzdGVtIGdldHNlcnZieXBvcnQgZW5kc2VydmVudCBpbnQgY2hyICcgK1xuICAgICd1bnRpZSBybWRpciBwcm90b3R5cGUgdGVsbCBsaXN0ZW4gZm9yayBzaG1yZWFkIHVjZmlyc3Qgc2V0cHJvdG9lbnQgZWxzZSBzeXNzZWVrIGxpbmsgJyArXG4gICAgJ2dldGdyZ2lkIHNobWN0bCB3YWl0cGlkIHVucGFjayBnZXRuZXRieW5hbWUgcmVzZXQgY2hkaXIgZ3JlcCBzcGxpdCByZXF1aXJlIGNhbGxlciAnICtcbiAgICAnbGNmaXJzdCB1bnRpbCB3YXJuIHdoaWxlIHZhbHVlcyBzaGlmdCB0ZWxsZGlyIGdldHB3dWlkIG15IGdldHByb3RvYnludW1iZXIgZGVsZXRlIGFuZCAnICtcbiAgICAnc29ydCB1YyBkZWZpbmVkIHNyYW5kIGFjY2VwdCBwYWNrYWdlIHNlZWtkaXIgZ2V0cHJvdG9ieW5hbWUgc2Vtb3Agb3VyIHJlbmFtZSBzZWVrIGlmIHF8MCAnICtcbiAgICAnY2hyb290IHN5c3JlYWQgc2V0cHdlbnQgbm8gY3J5cHQgZ2V0YyBjaG93biBzcXJ0IHdyaXRlIHNldG5ldGVudCBzZXRwcmlvcml0eSBmb3JlYWNoICcgK1xuICAgICd0aWUgc2luIG1zZ2dldCBtYXAgc3RhdCBnZXRsb2dpbiB1bmxlc3MgZWxzaWYgdHJ1bmNhdGUgZXhlYyBrZXlzIGdsb2IgdGllZCBjbG9zZWRpcicgK1xuICAgICdpb2N0bCBzb2NrZXQgcmVhZGxpbmsgZXZhbCB4b3IgcmVhZGxpbmUgYmlubW9kZSBzZXRzZXJ2ZW50IGVvZiBvcmQgYmluZCBhbGFybSBwaXBlICcgK1xuICAgICdhdGFuMiBnZXRncmVudCBleHAgdGltZSBwdXNoIHNldGdyZW50IGd0IGx0IG9yIG5lIG18MCBicmVhayBnaXZlbiBzYXkgc3RhdGUgd2hlbic7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdbJEBdXFxcXHsnLCBlbmQ6ICdcXFxcfScsXG4gICAga2V5d29yZHM6IFBFUkxfS0VZV09SRFNcbiAgfTtcbiAgdmFyIE1FVEhPRCA9IHtcbiAgICBiZWdpbjogJy0+eycsIGVuZDogJ30nXG4gICAgLy8gY29udGFpbnMgZGVmaW5lZCBsYXRlclxuICB9O1xuICB2YXIgVkFSID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRcXGQvfSxcbiAgICAgIHtiZWdpbjogL1tcXCQlQF0oXFxeXFx3XFxifCNcXHcrKDo6XFx3KykqfHtcXHcrfXxcXHcrKDo6XFx3KikqKS99LFxuICAgICAge2JlZ2luOiAvW1xcJCVAXVteXFxzXFx3e10vLCByZWxldmFuY2U6IDB9XG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HX0NPTlRBSU5TID0gW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIFZBUl07XG4gIHZhciBQRVJMX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgVkFSLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJ15cXFxcPVxcXFx3JyxcbiAgICAgICdcXFxcPWN1dCcsXG4gICAgICB7XG4gICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlXG4gICAgICB9XG4gICAgKSxcbiAgICBNRVRIT0QsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGNvbnRhaW5zOiBTVFJJTkdfQ09OVEFJTlMsXG4gICAgICB2YXJpYW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFx8JywgZW5kOiAnXFxcXHwnLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFw8JywgZW5kOiAnXFxcXD4nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxd1xcXFxzK3EnLCBlbmQ6ICdxJyxcbiAgICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICd7XFxcXHcrfScsXG4gICAgICAgICAgY29udGFpbnM6IFtdLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdcXC0/XFxcXHcrXFxcXHMqXFxcXD1cXFxcPicsXG4gICAgICAgICAgY29udGFpbnM6IFtdLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgYmVnaW46ICcoXFxcXGIwWzAtN19dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoXFxcXGJbMS05XVswLTlfXSooXFxcXC5bMC05X10rKT8pfFswX11cXFxcYicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHsgLy8gcmVnZXhwIGNvbnRhaW5lclxuICAgICAgYmVnaW46ICcoXFxcXC9cXFxcL3wnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIoc3BsaXR8cmV0dXJufHByaW50fHJldmVyc2V8Z3JlcClcXFxcYilcXFxccyonLFxuICAgICAga2V5d29yZHM6ICdzcGxpdCByZXR1cm4gcHJpbnQgcmV2ZXJzZSBncmVwJyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgIGJlZ2luOiAnKHN8dHJ8eSkvKFxcXFxcXFxcLnxbXi9dKSovKFxcXFxcXFxcLnxbXi9dKSovW2Etel0qJyxcbiAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgIGJlZ2luOiAnKG18cXIpPy8nLCBlbmQ6ICcvW2Etel0qJyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwIC8vIGFsbG93cyBlbXB0eSBcIi8vXCIgd2hpY2ggaXMgYSBjb21tb24gY29tbWVudCBkZWxpbWl0ZXIgaW4gb3RoZXIgbGFuZ3VhZ2VzXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdzdWInLCBlbmQ6ICcoXFxcXHMqXFxcXCguKj9cXFxcKSk/Wzt7XScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICByZWxldmFuY2U6IDUsXG4gICAgICBjb250YWluczogW2hsanMuVElUTEVfTU9ERV1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnLVxcXFx3XFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogXCJeX19EQVRBX18kXCIsXG4gICAgICBlbmQ6IFwiXl9fRU5EX18kXCIsXG4gICAgICBzdWJMYW5ndWFnZTogJ21vam9saWNpb3VzJyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBcIl5AQC4qXCIsXG4gICAgICAgICAgICBlbmQ6IFwiJFwiLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBcImNvbW1lbnRcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IFBFUkxfREVGQVVMVF9DT05UQUlOUztcbiAgTUVUSE9ELmNvbnRhaW5zID0gUEVSTF9ERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwbCcsICdwbSddLFxuICAgIGxleGVtZXM6IC9bXFx3XFwuXSsvLFxuICAgIGtleXdvcmRzOiBQRVJMX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBQRVJMX0RFRkFVTFRfQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15fXyhFTkR8REFUQSlfXyQnXG4gICAgICB9LFxuICAgIC8vIG1vam9saWNpb3VzIGxpbmVcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFwiXlxcXFxzKiV7MSwyfT17MCwyfVwiLCBlbmQ6ICckJyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdwZXJsJ1xuICAgICAgfSxcbiAgICAvLyBtb2pvbGljaW91cyBibG9ja1xuICAgICAge1xuICAgICAgICBiZWdpbjogXCI8JXsxLDJ9PXswLDJ9XCIsXG4gICAgICAgIGVuZDogXCI9ezAsMX0lPlwiLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3BlcmwnLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsIHJlbGV2YW5jZTogMCxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1skXVthLWZBLUYwLTldKydcbiAgICAgIH0sXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ3B1YmxpYyBwcml2YXRlIHByb3BlcnR5IGNvbnRpbnVlIGV4aXQgZXh0ZXJuIG5ldyB0cnkgY2F0Y2ggJyArXG4gICAgICAgICdlYWNoaW4gbm90IGFic3RyYWN0IGZpbmFsIHNlbGVjdCBjYXNlIGRlZmF1bHQgY29uc3QgbG9jYWwgZ2xvYmFsIGZpZWxkICcgK1xuICAgICAgICAnZW5kIGlmIHRoZW4gZWxzZSBlbHNlaWYgZW5kaWYgd2hpbGUgd2VuZCByZXBlYXQgdW50aWwgZm9yZXZlciBmb3IgJyArXG4gICAgICAgICd0byBzdGVwIG5leHQgcmV0dXJuIG1vZHVsZSBpbmxpbmUgdGhyb3cgaW1wb3J0JyxcblxuICAgICAgYnVpbHRfaW46ICdEZWJ1Z0xvZyBEZWJ1Z1N0b3AgRXJyb3IgUHJpbnQgQUNvcyBBQ29zciBBU2luIEFTaW5yIEFUYW4gQVRhbjIgQVRhbjJyIEFUYW5yIEFicyBBYnMgQ2VpbCAnICtcbiAgICAgICAgJ0NsYW1wIENsYW1wIENvcyBDb3NyIEV4cCBGbG9vciBMb2cgTWF4IE1heCBNaW4gTWluIFBvdyBTZ24gU2duIFNpbiBTaW5yIFNxcnQgVGFuIFRhbnIgU2VlZCBQSSBIQUxGUEkgVFdPUEknLFxuXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBudWxsIGFuZCBvciBzaGwgc2hyIG1vZCdcbiAgICB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJyNyZW0nLCAnI2VuZCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICBcIidcIixcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIG1ldGhvZCcsIGVuZDogJ1soPTpdfCQnLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKHNlbGZ8c3VwZXIpXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdcXFxccyojJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsc2VpZiBlbmRpZiBlbmQgdGhlbid9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqc3RyaWN0XFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnYWxpYXMnLCBlbmQ6ICc9JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgTlVNQkVSXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgIC8vIE1vb25zY3JpcHQga2V5d29yZHNcbiAgICAgICdpZiB0aGVuIG5vdCBmb3IgaW4gd2hpbGUgZG8gcmV0dXJuIGVsc2UgZWxzZWlmIGJyZWFrIGNvbnRpbnVlIHN3aXRjaCBhbmQgb3IgJyArXG4gICAgICAndW5sZXNzIHdoZW4gY2xhc3MgZXh0ZW5kcyBzdXBlciBsb2NhbCBpbXBvcnQgZXhwb3J0IGZyb20gdXNpbmcnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBuaWwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ19HIF9WRVJTSU9OIGFzc2VydCBjb2xsZWN0Z2FyYmFnZSBkb2ZpbGUgZXJyb3IgZ2V0ZmVudiBnZXRtZXRhdGFibGUgaXBhaXJzIGxvYWQgJyArXG4gICAgICAnbG9hZGZpbGUgbG9hZHN0cmluZyBtb2R1bGUgbmV4dCBwYWlycyBwY2FsbCBwcmludCByYXdlcXVhbCByYXdnZXQgcmF3c2V0IHJlcXVpcmUgJyArXG4gICAgICAnc2VsZWN0IHNldGZlbnYgc2V0bWV0YXRhYmxlIHRvbnVtYmVyIHRvc3RyaW5nIHR5cGUgdW5wYWNrIHhwY2FsbCBjb3JvdXRpbmUgZGVidWcgJyArXG4gICAgICAnaW8gbWF0aCBvcyBwYWNrYWdlIHN0cmluZyB0YWJsZSdcbiAgfTtcbiAgdmFyIEpTX0lERU5UX1JFID0gJ1tBLVphLXokX11bMC05QS1aYS16JF9dKic7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC8jXFx7LywgZW5kOiAvfS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTXG4gIH07XG4gIHZhciBFWFBSRVNTSU9OUyA9IFtcbiAgICBobGpzLmluaGVyaXQoaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge3N0YXJ0czoge2VuZDogJyhcXFxccyovKT8nLCByZWxldmFuY2U6IDB9fSksIC8vIGEgbnVtYmVyIHRyaWVzIHRvIGVhdCB0aGUgZm9sbG93aW5nIHNsYXNoIHRvIHByZXZlbnQgdHJlYXRpbmcgaXQgYXMgYSByZWdleHBcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJy8sIGVuZDogLycvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgIGJlZ2luOiAnQF9fJyArIGhsanMuSURFTlRfUkVcbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnQCcgKyBobGpzLklERU5UX1JFIC8vIHJlbGV2YW5jZSBib29zdGVyIG9uIHBhciB3aXRoIENvZmZlZVNjcmlwdFxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFxcXFxcXFwnICsgaGxqcy5JREVOVF9SRSAvLyBpbnN0XFxtZXRob2RcbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gRVhQUkVTU0lPTlM7XG5cbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBKU19JREVOVF9SRX0pO1xuICB2YXIgUEFSQU1TX1JFID0gJyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCWy09XT4nO1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKFteXFxcXChdJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgLyogV2UgbmVlZCBhbm90aGVyIGNvbnRhaW5lZCBuYW1lbGVzcyBtb2RlIHRvIG5vdCBoYXZlIGV2ZXJ5IG5lc3RlZFxuICAgIHBhaXIgb2YgcGFyZW5zIHRvIGJlIGNhbGxlZCBcInBhcmFtc1wiICovXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICBjb250YWluczogWydzZWxmJ10uY29uY2F0KEVYUFJFU1NJT05TKVxuICAgIH1dXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21vb24nXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05TLmNvbmNhdChbXG4gICAgICBobGpzLkNPTU1FTlQoJy0tJywgJyQnKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLCAgLy8gZnVuY3Rpb246IC0+ID0+XG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKicgKyBKU19JREVOVF9SRSArICdcXFxccyo9XFxcXHMqJyArIFBBUkFNU19SRSwgZW5kOiAnWy09XT4nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtUSVRMRSwgUEFSQU1TXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9bXFwoLDo9XVxccyovLCAvLyBhbm9ueW1vdXMgZnVuY3Rpb24gc3RhcnRcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiBQQVJBTVNfUkUsIGVuZDogJ1stPV0+JyxcbiAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtQQVJBTVNdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcycsXG4gICAgICAgIGVuZDogJyQnLFxuICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcycsXG4gICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bOj1cIlxcW1xcXV0vLFxuICAgICAgICAgICAgY29udGFpbnM6IFtUSVRMRV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFRJVExFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLCAgICAvLyB0YWJsZVxuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6XG4gICAgICAgICAgJ2J1aWxkIGNyZWF0ZSBpbmRleCBkZWxldGUgZHJvcCBleHBsYWluIGluZmVyfDEwIGluc2VydCBtZXJnZSBwcmVwYXJlIHNlbGVjdCB1cGRhdGUgdXBzZXJ0fDEwJyxcbiAgICAgICAgZW5kOiAvOy8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIC8vIFRha2VuIGZyb20gaHR0cDovL2RldmVsb3Blci5jb3VjaGJhc2UuY29tL2RvY3VtZW50YXRpb24vc2VydmVyL2N1cnJlbnQvbjFxbC9uMXFsLWxhbmd1YWdlLXJlZmVyZW5jZS9yZXNlcnZlZHdvcmRzLmh0bWxcbiAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgJ2FsbCBhbHRlciBhbmFseXplIGFuZCBhbnkgYXJyYXkgYXMgYXNjIGJlZ2luIGJldHdlZW4gYmluYXJ5IGJvb2xlYW4gYnJlYWsgYnVja2V0IGJ1aWxkIGJ5IGNhbGwgJyArXG4gICAgICAgICAgICAnY2FzZSBjYXN0IGNsdXN0ZXIgY29sbGF0ZSBjb2xsZWN0aW9uIGNvbW1pdCBjb25uZWN0IGNvbnRpbnVlIGNvcnJlbGF0ZSBjb3ZlciBjcmVhdGUgZGF0YWJhc2UgJyArXG4gICAgICAgICAgICAnZGF0YXNldCBkYXRhc3RvcmUgZGVjbGFyZSBkZWNyZW1lbnQgZGVsZXRlIGRlcml2ZWQgZGVzYyBkZXNjcmliZSBkaXN0aW5jdCBkbyBkcm9wIGVhY2ggZWxlbWVudCAnICtcbiAgICAgICAgICAgICdlbHNlIGVuZCBldmVyeSBleGNlcHQgZXhjbHVkZSBleGVjdXRlIGV4aXN0cyBleHBsYWluIGZldGNoIGZpcnN0IGZsYXR0ZW4gZm9yIGZvcmNlIGZyb20gJyArXG4gICAgICAgICAgICAnZnVuY3Rpb24gZ3JhbnQgZ3JvdXAgZ3NpIGhhdmluZyBpZiBpZ25vcmUgaWxpa2UgaW4gaW5jbHVkZSBpbmNyZW1lbnQgaW5kZXggaW5mZXIgaW5saW5lIGlubmVyICcgK1xuICAgICAgICAgICAgJ2luc2VydCBpbnRlcnNlY3QgaW50byBpcyBqb2luIGtleSBrZXlzIGtleXNwYWNlIGtub3duIGxhc3QgbGVmdCBsZXQgbGV0dGluZyBsaWtlIGxpbWl0IGxzbSBtYXAgJyArXG4gICAgICAgICAgICAnbWFwcGluZyBtYXRjaGVkIG1hdGVyaWFsaXplZCBtZXJnZSBtaW51cyBuYW1lc3BhY2UgbmVzdCBub3QgbnVtYmVyIG9iamVjdCBvZmZzZXQgb24gJyArXG4gICAgICAgICAgICAnb3B0aW9uIG9yIG9yZGVyIG91dGVyIG92ZXIgcGFyc2UgcGFydGl0aW9uIHBhc3N3b3JkIHBhdGggcG9vbCBwcmVwYXJlIHByaW1hcnkgcHJpdmF0ZSBwcml2aWxlZ2UgJyArXG4gICAgICAgICAgICAncHJvY2VkdXJlIHB1YmxpYyByYXcgcmVhbG0gcmVkdWNlIHJlbmFtZSByZXR1cm4gcmV0dXJuaW5nIHJldm9rZSByaWdodCByb2xlIHJvbGxiYWNrIHNhdGlzZmllcyAnICtcbiAgICAgICAgICAgICdzY2hlbWEgc2VsZWN0IHNlbGYgc2VtaSBzZXQgc2hvdyBzb21lIHN0YXJ0IHN0YXRpc3RpY3Mgc3RyaW5nIHN5c3RlbSB0aGVuIHRvIHRyYW5zYWN0aW9uIHRyaWdnZXIgJyArXG4gICAgICAgICAgICAndHJ1bmNhdGUgdW5kZXIgdW5pb24gdW5pcXVlIHVua25vd24gdW5uZXN0IHVuc2V0IHVwZGF0ZSB1cHNlcnQgdXNlIHVzZXIgdXNpbmcgdmFsaWRhdGUgdmFsdWUgJyArXG4gICAgICAgICAgICAndmFsdWVkIHZhbHVlcyB2aWEgdmlldyB3aGVuIHdoZXJlIHdoaWxlIHdpdGggd2l0aGluIHdvcmsgeG9yJyxcbiAgICAgICAgICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly9kZXZlbG9wZXIuY291Y2hiYXNlLmNvbS9kb2N1bWVudGF0aW9uL3NlcnZlci80LjUvbjFxbC9uMXFsLWxhbmd1YWdlLXJlZmVyZW5jZS9saXRlcmFscy5odG1sXG4gICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICd0cnVlIGZhbHNlIG51bGwgbWlzc2luZ3w1JyxcbiAgICAgICAgICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly9kZXZlbG9wZXIuY291Y2hiYXNlLmNvbS9kb2N1bWVudGF0aW9uL3NlcnZlci80LjUvbjFxbC9uMXFsLWxhbmd1YWdlLXJlZmVyZW5jZS9mdW5jdGlvbnMuaHRtbFxuICAgICAgICAgIGJ1aWx0X2luOlxuICAgICAgICAgICAgJ2FycmF5X2FnZyBhcnJheV9hcHBlbmQgYXJyYXlfY29uY2F0IGFycmF5X2NvbnRhaW5zIGFycmF5X2NvdW50IGFycmF5X2Rpc3RpbmN0IGFycmF5X2lmbnVsbCBhcnJheV9sZW5ndGggJyArXG4gICAgICAgICAgICAnYXJyYXlfbWF4IGFycmF5X21pbiBhcnJheV9wb3NpdGlvbiBhcnJheV9wcmVwZW5kIGFycmF5X3B1dCBhcnJheV9yYW5nZSBhcnJheV9yZW1vdmUgYXJyYXlfcmVwZWF0IGFycmF5X3JlcGxhY2UgJyArXG4gICAgICAgICAgICAnYXJyYXlfcmV2ZXJzZSBhcnJheV9zb3J0IGFycmF5X3N1bSBhdmcgY291bnQgbWF4IG1pbiBzdW0gZ3JlYXRlc3QgbGVhc3QgaWZtaXNzaW5nIGlmbWlzc2luZ29ybnVsbCBpZm51bGwgJyArXG4gICAgICAgICAgICAnbWlzc2luZ2lmIG51bGxpZiBpZmluZiBpZm5hbiBpZm5hbm9yaW5mIG5hbmluZiBuZWdpbmZpZiBwb3NpbmZpZiBjbG9ja19taWxsaXMgY2xvY2tfc3RyIGRhdGVfYWRkX21pbGxpcyAnICtcbiAgICAgICAgICAgICdkYXRlX2FkZF9zdHIgZGF0ZV9kaWZmX21pbGxpcyBkYXRlX2RpZmZfc3RyIGRhdGVfcGFydF9taWxsaXMgZGF0ZV9wYXJ0X3N0ciBkYXRlX3RydW5jX21pbGxpcyBkYXRlX3RydW5jX3N0ciAnICtcbiAgICAgICAgICAgICdkdXJhdGlvbl90b19zdHIgbWlsbGlzIHN0cl90b19taWxsaXMgbWlsbGlzX3RvX3N0ciBtaWxsaXNfdG9fdXRjIG1pbGxpc190b196b25lX25hbWUgbm93X21pbGxpcyBub3dfc3RyICcgK1xuICAgICAgICAgICAgJ3N0cl90b19kdXJhdGlvbiBzdHJfdG9fdXRjIHN0cl90b196b25lX25hbWUgZGVjb2RlX2pzb24gZW5jb2RlX2pzb24gZW5jb2RlZF9zaXplIHBvbHlfbGVuZ3RoIGJhc2U2NCBiYXNlNjRfZW5jb2RlICcgK1xuICAgICAgICAgICAgJ2Jhc2U2NF9kZWNvZGUgbWV0YSB1dWlkIGFicyBhY29zIGFzaW4gYXRhbiBhdGFuMiBjZWlsIGNvcyBkZWdyZWVzIGUgZXhwIGxuIGxvZyBmbG9vciBwaSBwb3dlciByYWRpYW5zIHJhbmRvbSAnICtcbiAgICAgICAgICAgICdyb3VuZCBzaWduIHNpbiBzcXJ0IHRhbiB0cnVuYyBvYmplY3RfbGVuZ3RoIG9iamVjdF9uYW1lcyBvYmplY3RfcGFpcnMgb2JqZWN0X2lubmVyX3BhaXJzIG9iamVjdF92YWx1ZXMgJyArXG4gICAgICAgICAgICAnb2JqZWN0X2lubmVyX3ZhbHVlcyBvYmplY3RfYWRkIG9iamVjdF9wdXQgb2JqZWN0X3JlbW92ZSBvYmplY3RfdW53cmFwIHJlZ2V4cF9jb250YWlucyByZWdleHBfbGlrZSByZWdleHBfcG9zaXRpb24gJyArXG4gICAgICAgICAgICAncmVnZXhwX3JlcGxhY2UgY29udGFpbnMgaW5pdGNhcCBsZW5ndGggbG93ZXIgbHRyaW0gcG9zaXRpb24gcmVwZWF0IHJlcGxhY2UgcnRyaW0gc3BsaXQgc3Vic3RyIHRpdGxlIHRyaW0gdXBwZXIgJyArXG4gICAgICAgICAgICAnaXNhcnJheSBpc2F0b20gaXNib29sZWFuIGlzbnVtYmVyIGlzb2JqZWN0IGlzc3RyaW5nIHR5cGUgdG9hcnJheSB0b2F0b20gdG9ib29sZWFuIHRvbnVtYmVyIHRvb2JqZWN0IHRvc3RyaW5nJ1xuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgICAgICByZWxldmFuY2U6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUiA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1xcJFxcZCsvfSxcbiAgICAgIHtiZWdpbjogL1xcJFxcey8sIGVuZDogL30vfSxcbiAgICAgIHtiZWdpbjogJ1tcXFxcJFxcXFxAXScgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkV9XG4gICAgXVxuICB9O1xuICB2YXIgREVGQVVMVCA9IHtcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICBsZXhlbWVzOiAnW2Etei9fXSsnLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnb24gb2ZmIHllcyBubyB0cnVlIGZhbHNlIG5vbmUgYmxvY2tlZCBkZWJ1ZyBpbmZvIG5vdGljZSB3YXJuIGVycm9yIGNyaXQgJyArXG4gICAgICAgICdzZWxlY3QgYnJlYWsgbGFzdCBwZXJtYW5lbnQgcmVkaXJlY3Qga3F1ZXVlIHJ0c2lnIGVwb2xsIHBvbGwgL2Rldi9wb2xsJ1xuICAgIH0sXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGlsbGVnYWw6ICc9PicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL1wiLywgZW5kOiAvXCIvfSxcbiAgICAgICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyB0aGlzIHN3YWxsb3dzIGVudGlyZSBVUkxzIHRvIGF2b2lkIGRldGVjdGluZyBudW1iZXJzIHdpdGhpblxuICAgICAge1xuICAgICAgICBiZWdpbjogJyhbYS16XSspOi8nLCBlbmQ6ICdcXFxccycsIGVuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1ZBUl1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogXCJcXFxcc1xcXFxeXCIsIGVuZDogXCJcXFxcc3x7fDtcIiwgcmV0dXJuRW5kOiB0cnVlfSxcbiAgICAgICAgICAvLyByZWdleHAgbG9jYXRpb25zICh+LCB+KilcbiAgICAgICAgICB7YmVnaW46IFwiflxcXFwqP1xcXFxzK1wiLCBlbmQ6IFwiXFxcXHN8e3w7XCIsIHJldHVybkVuZDogdHJ1ZX0sXG4gICAgICAgICAgLy8gKi5leGFtcGxlLmNvbVxuICAgICAgICAgIHtiZWdpbjogXCJcXFxcKihcXFxcLlthLXpcXFxcLV0rKStcIn0sXG4gICAgICAgICAgLy8gc3ViLmV4YW1wbGUuKlxuICAgICAgICAgIHtiZWdpbjogXCIoW2EtelxcXFwtXStcXFxcLikrXFxcXCpcIn1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIElQXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJcXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9KDpcXFxcZHsxLDV9KT9cXFxcYidcbiAgICAgIH0sXG4gICAgICAvLyB1bml0c1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrW2tLbU1nR2RzaGR3eV0qXFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBWQVJcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ25naW54Y29uZiddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzK3snLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZW5kOiAneycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMnLCBlbmQ6ICc7fHsnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgICAgIHN0YXJ0czogREVGQVVMVFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSxcbiAgICBpbGxlZ2FsOiAnW15cXFxcc1xcXFx9XSdcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyduaW0nXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2FkZHIgYW5kIGFzIGFzbSBiaW5kIGJsb2NrIGJyZWFrIGNhc2UgY2FzdCBjb25zdCBjb250aW51ZSBjb252ZXJ0ZXIgJyArXG4gICAgICAgICdkaXNjYXJkIGRpc3RpbmN0IGRpdiBkbyBlbGlmIGVsc2UgZW5kIGVudW0gZXhjZXB0IGV4cG9ydCBmaW5hbGx5ICcgK1xuICAgICAgICAnZm9yIGZyb20gZ2VuZXJpYyBpZiBpbXBvcnQgaW4gaW5jbHVkZSBpbnRlcmZhY2UgaXMgaXNub3QgaXRlcmF0b3IgJyArXG4gICAgICAgICdsZXQgbWFjcm8gbWV0aG9kIG1peGluIG1vZCBuaWwgbm90IG5vdGluIG9iamVjdCBvZiBvciBvdXQgcHJvYyBwdHIgJyArXG4gICAgICAgICdyYWlzZSByZWYgcmV0dXJuIHNobCBzaHIgc3RhdGljIHRlbXBsYXRlIHRyeSB0dXBsZSB0eXBlIHVzaW5nIHZhciAnICtcbiAgICAgICAgJ3doZW4gd2hpbGUgd2l0aCB3aXRob3V0IHhvciB5aWVsZCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnc2hhcmVkIGd1YXJkZWQgc3RkaW4gc3Rkb3V0IHN0ZGVyciByZXN1bHQgdHJ1ZSBmYWxzZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2ludCBpbnQ4IGludDE2IGludDMyIGludDY0IHVpbnQgdWludDggdWludDE2IHVpbnQzMiB1aW50NjQgZmxvYXQgJyArXG4gICAgICAgICdmbG9hdDMyIGZsb2F0NjQgYm9vbCBjaGFyIHN0cmluZyBjc3RyaW5nIHBvaW50ZXIgZXhwciBzdG10IHZvaWQgJyArXG4gICAgICAgICdhdXRvIGFueSByYW5nZSBhcnJheSBvcGVuYXJyYXkgdmFyYXJncyBzZXEgc2V0IGNsb25nIGN1bG9uZyBjY2hhciAnICtcbiAgICAgICAgJ2NzY2hhciBjc2hvcnQgY2ludCBjc2l6ZSBjbG9uZ2xvbmcgY2Zsb2F0IGNkb3VibGUgY2xvbmdkb3VibGUgJyArXG4gICAgICAgICdjdWNoYXIgY3VzaG9ydCBjdWludCBjdWxvbmdsb25nIGNzdHJpbmdhcnJheSBzZW1pc3RhdGljJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFsge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgLy8gQWN0dWFsbHkgcHJhZ21hXG4gICAgICAgIGJlZ2luOiAve1xcLi8sXG4gICAgICAgIGVuZDogL1xcLn0vLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LCB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvW2EtekEtWl1cXHcqXCIvLFxuICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAvXCJcIi99XVxuICAgICAgfSwge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogLyhbYS16QS1aXVxcdyopP1wiXCJcIi8sXG4gICAgICAgIGVuZDogL1wiXCJcIi9cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46IC9cXGJbQS1aXVxcdytcXGIvLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL1xcYigwW3hYXVswLTlhLWZBLUZdW18wLTlhLWZBLUZdKikoJz9baUl1VV0oOHwxNnwzMnw2NCkpPy99LFxuICAgICAgICAgIHtiZWdpbjogL1xcYigwb1swLTddW18wLTddKikoJz9baUl1VWZGXSg4fDE2fDMyfDY0KSk/L30sXG4gICAgICAgICAge2JlZ2luOiAvXFxiKDAoYnxCKVswMV1bXzAxXSopKCc/W2lJdVVmRl0oOHwxNnwzMnw2NCkpPy99LFxuICAgICAgICAgIHtiZWdpbjogL1xcYihcXGRbX1xcZF0qKSgnP1tpSXVVZkZdKDh8MTZ8MzJ8NjQpKT8vfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5JWF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ3JlYyB3aXRoIGxldCBpbiBpbmhlcml0IGFzc2VydCBpZiBlbHNlIHRoZW4nLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBvciBhbmQgbnVsbCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnaW1wb3J0IGFib3J0IGJhc2VOYW1lT2YgZGlyT2YgaXNOdWxsIGJ1aWx0aW5zIG1hcCByZW1vdmVBdHRycyB0aHJvdyAnICtcbiAgICAgICd0b1N0cmluZyBkZXJpdmF0aW9uJ1xuICB9O1xuICB2YXIgQU5USVFVT1RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcJFxcey8sXG4gICAgZW5kOiAvfS8sXG4gICAga2V5d29yZHM6IE5JWF9LRVlXT1JEU1xuICB9O1xuICB2YXIgQVRUUlMgPSB7XG4gICAgYmVnaW46IC9bYS16QS1aMC05LV9dKyhcXHMqPSkvLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgIGJlZ2luOiAvXFxTKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW0FOVElRVU9URV0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogXCInJ1wiLCBlbmQ6IFwiJydcIn0sXG4gICAgICB7YmVnaW46ICdcIicsIGVuZDogJ1wiJ31cbiAgICBdXG4gIH07XG4gIHZhciBFWFBSRVNTSU9OUyA9IFtcbiAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBTVFJJTkcsXG4gICAgQVRUUlNcbiAgXTtcbiAgQU5USVFVT1RFLmNvbnRhaW5zID0gRVhQUkVTU0lPTlM7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogW1wibml4b3NcIl0sXG4gICAga2V5d29yZHM6IE5JWF9LRVlXT1JEUyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDT05TVEFOVFMgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkKEFETUlOVE9PTFN8QVBQREFUQXxDREJVUk5fQVJFQXxDTURMSU5FfENPTU1PTkZJTEVTMzJ8Q09NTU9ORklMRVM2NHxDT01NT05GSUxFU3xDT09LSUVTfERFU0tUT1B8RE9DVU1FTlRTfEVYRURJUnxFWEVGSUxFfEVYRVBBVEh8RkFWT1JJVEVTfEZPTlRTfEhJU1RPUll8SFdORFBBUkVOVHxJTlNURElSfElOVEVSTkVUX0NBQ0hFfExBTkdVQUdFfExPQ0FMQVBQREFUQXxNVVNJQ3xORVRIT09EfE9VVERJUnxQSUNUVVJFU3xQTFVHSU5TRElSfFBSSU5USE9PRHxQUk9GSUxFfFBST0dSQU1GSUxFUzMyfFBST0dSQU1GSUxFUzY0fFBST0dSQU1GSUxFU3xRVUlDS0xBVU5DSHxSRUNFTlR8UkVTT1VSQ0VTX0xPQ0FMSVpFRHxSRVNPVVJDRVN8U0VORFRPfFNNUFJPR1JBTVN8U01TVEFSVFVQfFNUQVJUTUVOVXxTWVNESVJ8VEVNUHxURU1QTEFURVN8VklERU9TfFdJTkRJUikvXG4gIH07XG5cbiAgdmFyIERFRklORVMgPSB7XG4gICAgLy8gJHtkZWZpbmVzfVxuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJCt7W1xcd1xcLjotXSt9L1xuICB9O1xuXG4gIHZhciBWQVJJQUJMRVMgPSB7XG4gICAgLy8gJHZhcmlhYmxlc1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJCtcXHcrLyxcbiAgICBpbGxlZ2FsOiAvXFwoXFwpe30vXG4gIH07XG5cbiAgdmFyIExBTkdVQUdFUyA9IHtcbiAgICAvLyAkKGxhbmd1YWdlX3N0cmluZ3MpXG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkK1xcKFtcXHdcXF5cXC46LV0rXFwpL1xuICB9O1xuXG4gIHZhciBQQVJBTUVURVJTID0ge1xuICAgIC8vIGNvbW1hbmQgcGFyYW1ldGVyc1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICcoQVJDSElWRXxGSUxFX0FUVFJJQlVURV9BUkNISVZFfEZJTEVfQVRUUklCVVRFX05PUk1BTHxGSUxFX0FUVFJJQlVURV9PRkZMSU5FfEZJTEVfQVRUUklCVVRFX1JFQURPTkxZfEZJTEVfQVRUUklCVVRFX1NZU1RFTXxGSUxFX0FUVFJJQlVURV9URU1QT1JBUll8SEtDUnxIS0NVfEhLRER8SEtFWV9DTEFTU0VTX1JPT1R8SEtFWV9DVVJSRU5UX0NPTkZJR3xIS0VZX0NVUlJFTlRfVVNFUnxIS0VZX0RZTl9EQVRBfEhLRVlfTE9DQUxfTUFDSElORXxIS0VZX1BFUkZPUk1BTkNFX0RBVEF8SEtFWV9VU0VSU3xIS0xNfEhLUER8SEtVfElEQUJPUlR8SURDQU5DRUx8SURJR05PUkV8SUROT3xJRE9LfElEUkVUUll8SURZRVN8TUJfQUJPUlRSRVRSWUlHTk9SRXxNQl9ERUZCVVRUT04xfE1CX0RFRkJVVFRPTjJ8TUJfREVGQlVUVE9OM3xNQl9ERUZCVVRUT040fE1CX0lDT05FWENMQU1BVElPTnxNQl9JQ09OSU5GT1JNQVRJT058TUJfSUNPTlFVRVNUSU9OfE1CX0lDT05TVE9QfE1CX09LfE1CX09LQ0FOQ0VMfE1CX1JFVFJZQ0FOQ0VMfE1CX1JJR0hUfE1CX1JUTFJFQURJTkd8TUJfU0VURk9SRUdST1VORHxNQl9UT1BNT1NUfE1CX1VTRVJJQ09OfE1CX1lFU05PfE5PUk1BTHxPRkZMSU5FfFJFQURPTkxZfFNIQ1RYfFNIRUxMX0NPTlRFWFR8U1lTVEVNfFRFTVBPUkFSWSknXG4gIH07XG5cbiAgdmFyIENPTVBJTEVSID0ge1xuICAgIC8vICFjb21waWxlcl9mbGFnc1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIGJlZ2luOiAvXFwhKGFkZGluY2x1ZGVkaXJ8YWRkcGx1Z2luZGlyfGFwcGVuZGZpbGV8Y2R8ZGVmaW5lfGRlbGZpbGV8ZWNob3xlbHNlfGVuZGlmfGVycm9yfGV4ZWN1dGV8ZmluYWxpemV8Z2V0ZGxsdmVyc2lvbnxnZXR0bGJ2ZXJzaW9ufGlmfGlmZGVmfGlmbWFjcm9kZWZ8aWZtYWNyb25kZWZ8aWZuZGVmfGluY2x1ZGV8aW5zZXJ0bWFjcm98bWFjcm98bWFjcm9lbmR8bWFrZW5zaXN8cGFja2hkcnxzZWFyY2hwYXJzZXxzZWFyY2hyZXBsYWNlfHN5c3RlbXx0ZW1wZmlsZXx1bmRlZnx2ZXJib3NlfHdhcm5pbmcpL1xuICB9O1xuXG4gIHZhciBNRVRBQ0hBUlMgPSB7XG4gICAgLy8gJFxcbiwgJFxcciwgJFxcdCwgJCRcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogL1xcJChcXFxcW25ydF18XFwkKS9cbiAgfTtcblxuICB2YXIgUExVR0lOUyA9IHtcbiAgICAvLyBwbHVnOjppbnNcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgYmVnaW46IC9cXHcrXFw6XFw6XFx3Ky9cbiAgfTtcblxuICAgIHZhciBTVFJJTkcgPSB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCdcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgTUVUQUNIQVJTLFxuICAgICAgICBDT05TVEFOVFMsXG4gICAgICAgIERFRklORVMsXG4gICAgICAgIFZBUklBQkxFUyxcbiAgICAgICAgTEFOR1VBR0VTXG4gICAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICdBYm9ydCBBZGRCcmFuZGluZ0ltYWdlIEFkZFNpemUgQWxsb3dSb290RGlySW5zdGFsbCBBbGxvd1NraXBGaWxlcyBBdXRvQ2xvc2VXaW5kb3cgQkdGb250IEJHR3JhZGllbnQgQnJhbmRpbmdUZXh0IEJyaW5nVG9Gcm9udCBDYWxsIENhbGxJbnN0RExMIENhcHRpb24gQ2hhbmdlVUkgQ2hlY2tCaXRtYXAgQ2xlYXJFcnJvcnMgQ29tcGxldGVkVGV4dCBDb21wb25lbnRUZXh0IENvcHlGaWxlcyBDUkNDaGVjayBDcmVhdGVEaXJlY3RvcnkgQ3JlYXRlRm9udCBDcmVhdGVTaG9ydEN1dCBEZWxldGUgRGVsZXRlSU5JU2VjIERlbGV0ZUlOSVN0ciBEZWxldGVSZWdLZXkgRGVsZXRlUmVnVmFsdWUgRGV0YWlsUHJpbnQgRGV0YWlsc0J1dHRvblRleHQgRGlyVGV4dCBEaXJWYXIgRGlyVmVyaWZ5IEVuYWJsZVdpbmRvdyBFbnVtUmVnS2V5IEVudW1SZWdWYWx1ZSBFeGNoIEV4ZWMgRXhlY1NoZWxsIEV4ZWNTaGVsbFdhaXQgRXhlY1dhaXQgRXhwYW5kRW52U3RyaW5ncyBGaWxlIEZpbGVCdWZTaXplIEZpbGVDbG9zZSBGaWxlRXJyb3JUZXh0IEZpbGVPcGVuIEZpbGVSZWFkIEZpbGVSZWFkQnl0ZSBGaWxlUmVhZFVURjE2TEUgRmlsZVJlYWRXb3JkIEZpbGVTZWVrIEZpbGVXcml0ZSBGaWxlV3JpdGVCeXRlIEZpbGVXcml0ZVVURjE2TEUgRmlsZVdyaXRlV29yZCBGaW5kQ2xvc2UgRmluZEZpcnN0IEZpbmROZXh0IEZpbmRXaW5kb3cgRmx1c2hJTkkgRnVuY3Rpb25FbmQgR2V0Q3VySW5zdFR5cGUgR2V0Q3VycmVudEFkZHJlc3MgR2V0RGxnSXRlbSBHZXRETExWZXJzaW9uIEdldERMTFZlcnNpb25Mb2NhbCBHZXRFcnJvckxldmVsIEdldEZpbGVUaW1lIEdldEZpbGVUaW1lTG9jYWwgR2V0RnVsbFBhdGhOYW1lIEdldEZ1bmN0aW9uQWRkcmVzcyBHZXRJbnN0RGlyRXJyb3IgR2V0TGFiZWxBZGRyZXNzIEdldFRlbXBGaWxlTmFtZSBHb3RvIEhpZGVXaW5kb3cgSWNvbiBJZkFib3J0IElmRXJyb3JzIElmRmlsZUV4aXN0cyBJZlJlYm9vdEZsYWcgSWZTaWxlbnQgSW5pdFBsdWdpbnNEaXIgSW5zdGFsbEJ1dHRvblRleHQgSW5zdGFsbENvbG9ycyBJbnN0YWxsRGlyIEluc3RhbGxEaXJSZWdLZXkgSW5zdFByb2dyZXNzRmxhZ3MgSW5zdFR5cGUgSW5zdFR5cGVHZXRUZXh0IEluc3RUeXBlU2V0VGV4dCBJbnQ2NENtcCBJbnQ2NENtcFUgSW50NjRGbXQgSW50Q21wIEludENtcFUgSW50Rm10IEludE9wIEludFB0ckNtcCBJbnRQdHJDbXBVIEludFB0ck9wIElzV2luZG93IExhbmdTdHJpbmcgTGljZW5zZUJrQ29sb3IgTGljZW5zZURhdGEgTGljZW5zZUZvcmNlU2VsZWN0aW9uIExpY2Vuc2VMYW5nU3RyaW5nIExpY2Vuc2VUZXh0IExvYWRMYW5ndWFnZUZpbGUgTG9ja1dpbmRvdyBMb2dTZXQgTG9nVGV4dCBNYW5pZmVzdERQSUF3YXJlIE1hbmlmZXN0U3VwcG9ydGVkT1MgTWVzc2FnZUJveCBNaXNjQnV0dG9uVGV4dCBOYW1lIE5vcCBPdXRGaWxlIFBhZ2UgUGFnZUNhbGxiYWNrcyBQYWdlRXhFbmQgUG9wIFB1c2ggUXVpdCBSZWFkRW52U3RyIFJlYWRJTklTdHIgUmVhZFJlZ0RXT1JEIFJlYWRSZWdTdHIgUmVib290IFJlZ0RMTCBSZW5hbWUgUmVxdWVzdEV4ZWN1dGlvbkxldmVsIFJlc2VydmVGaWxlIFJldHVybiBSTURpciBTZWFyY2hQYXRoIFNlY3Rpb25FbmQgU2VjdGlvbkdldEZsYWdzIFNlY3Rpb25HZXRJbnN0VHlwZXMgU2VjdGlvbkdldFNpemUgU2VjdGlvbkdldFRleHQgU2VjdGlvbkdyb3VwRW5kIFNlY3Rpb25JbiBTZWN0aW9uU2V0RmxhZ3MgU2VjdGlvblNldEluc3RUeXBlcyBTZWN0aW9uU2V0U2l6ZSBTZWN0aW9uU2V0VGV4dCBTZW5kTWVzc2FnZSBTZXRBdXRvQ2xvc2UgU2V0QnJhbmRpbmdJbWFnZSBTZXRDb21wcmVzcyBTZXRDb21wcmVzc29yIFNldENvbXByZXNzb3JEaWN0U2l6ZSBTZXRDdGxDb2xvcnMgU2V0Q3VySW5zdFR5cGUgU2V0RGF0YWJsb2NrT3B0aW1pemUgU2V0RGF0ZVNhdmUgU2V0RGV0YWlsc1ByaW50IFNldERldGFpbHNWaWV3IFNldEVycm9yTGV2ZWwgU2V0RXJyb3JzIFNldEZpbGVBdHRyaWJ1dGVzIFNldEZvbnQgU2V0T3V0UGF0aCBTZXRPdmVyd3JpdGUgU2V0UmVib290RmxhZyBTZXRSZWdWaWV3IFNldFNoZWxsVmFyQ29udGV4dCBTZXRTaWxlbnQgU2hvd0luc3REZXRhaWxzIFNob3dVbmluc3REZXRhaWxzIFNob3dXaW5kb3cgU2lsZW50SW5zdGFsbCBTaWxlbnRVbkluc3RhbGwgU2xlZXAgU3BhY2VUZXh0cyBTdHJDbXAgU3RyQ21wUyBTdHJDcHkgU3RyTGVuIFN1YkNhcHRpb24gVW5pY29kZSBVbmluc3RhbGxCdXR0b25UZXh0IFVuaW5zdGFsbENhcHRpb24gVW5pbnN0YWxsSWNvbiBVbmluc3RhbGxTdWJDYXB0aW9uIFVuaW5zdGFsbFRleHQgVW5pbnN0UGFnZSBVblJlZ0RMTCBWYXIgVklBZGRWZXJzaW9uS2V5IFZJRmlsZVZlcnNpb24gVklQcm9kdWN0VmVyc2lvbiBXaW5kb3dJY29uIFdyaXRlSU5JU3RyIFdyaXRlUmVnQmluIFdyaXRlUmVnRFdPUkQgV3JpdGVSZWdFeHBhbmRTdHIgV3JpdGVSZWdNdWx0aVN0ciBXcml0ZVJlZ05vbmUgV3JpdGVSZWdTdHIgV3JpdGVVbmluc3RhbGxlciBYUFN0eWxlJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAnYWRtaW4gYWxsIGF1dG8gYm90aCBib3R0b20gYnppcDIgY29sb3JlZCBjb21wb25lbnRzIGN1cnJlbnQgY3VzdG9tIGRpcmVjdG9yeSBmYWxzZSBmb3JjZSBoaWRlIGhpZ2hlc3QgaWZkaWZmIGlmbmV3ZXIgaW5zdGZpbGVzIGxhc3R1c2VkIGxlYXZlIGxlZnQgbGljZW5zZSBsaXN0b25seSBsem1hIG5ldmVyc2hvdyBub25lIG5vcm1hbCBub3RzZXQgb2ZmIG9uIG9wZW4gcHJpbnQgcmlnaHQgc2hvdyBzaWxlbnQgc2lsZW50bG9nIHNtb290aCB0ZXh0b25seSB0b3AgdHJ1ZSB0cnkgdW4uY29tcG9uZW50cyB1bi5jdXN0b20gdW4uZGlyZWN0b3J5IHVuLmluc3RmaWxlcyB1bi5saWNlbnNlIHVuaW5zdENvbmZpcm0gdXNlciBXaW4xMCBXaW43IFdpbjggV2luVmlzdGEgemxpYidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnRnVuY3Rpb24gUGFnZUV4IFNlY3Rpb24gU2VjdGlvbkdyb3VwJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBDT01QSUxFUixcbiAgICAgIERFRklORVMsXG4gICAgICBWQVJJQUJMRVMsXG4gICAgICBMQU5HVUFHRVMsXG4gICAgICBQQVJBTUVURVJTLFxuICAgICAgUExVR0lOUyxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQVBJX0NMQVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKEFWfENBfENGfENHfENJfENMfENNfENOfENUfE1LfE1QfE1US3xNVEx8TlN8U0NOfFNLfFVJfFdLfFhDKVxcXFx3KycsXG4gIH07XG4gIHZhciBPQkpDX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaW50IGZsb2F0IHdoaWxlIGNoYXIgZXhwb3J0IHNpemVvZiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBmb3IgdW5pb24gJyArXG4gICAgICAndW5zaWduZWQgbG9uZyB2b2xhdGlsZSBzdGF0aWMgYm9vbCBtdXRhYmxlIGlmIGRvIHJldHVybiBnb3RvIHZvaWQgJyArXG4gICAgICAnZW51bSBlbHNlIGJyZWFrIGV4dGVybiBhc20gY2FzZSBzaG9ydCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCAnICtcbiAgICAgICdzaWduZWQgdHlwZW5hbWUgdGhpcyBzd2l0Y2ggY29udGludWUgd2NoYXJfdCBpbmxpbmUgcmVhZG9ubHkgYXNzaWduICcgK1xuICAgICAgJ3JlYWR3cml0ZSBzZWxmIEBzeW5jaHJvbml6ZWQgaWQgdHlwZW9mICcgK1xuICAgICAgJ25vbmF0b21pYyBzdXBlciB1bmljaGFyIElCT3V0bGV0IElCQWN0aW9uIHN0cm9uZyB3ZWFrIGNvcHkgJyArXG4gICAgICAnaW4gb3V0IGlub3V0IGJ5Y29weSBieXJlZiBvbmV3YXkgX19zdHJvbmcgX193ZWFrIF9fYmxvY2sgX19hdXRvcmVsZWFzaW5nICcgK1xuICAgICAgJ0Bwcml2YXRlIEBwcm90ZWN0ZWQgQHB1YmxpYyBAdHJ5IEBwcm9wZXJ0eSBAZW5kIEB0aHJvdyBAY2F0Y2ggQGZpbmFsbHkgJyArXG4gICAgICAnQGF1dG9yZWxlYXNlcG9vbCBAc3ludGhlc2l6ZSBAZHluYW1pYyBAc2VsZWN0b3IgQG9wdGlvbmFsIEByZXF1aXJlZCAnICtcbiAgICAgICdAZW5jb2RlIEBwYWNrYWdlIEBpbXBvcnQgQGRlZnMgQGNvbXBhdGliaWxpdHlfYWxpYXMgJyArXG4gICAgICAnX19icmlkZ2UgX19icmlkZ2VfdHJhbnNmZXIgX19icmlkZ2VfcmV0YWluZWQgX19icmlkZ2VfcmV0YWluICcgK1xuICAgICAgJ19fY292YXJpYW50IF9fY29udHJhdmFyaWFudCBfX2tpbmRvZiAnICtcbiAgICAgICdfTm9ubnVsbCBfTnVsbGFibGUgX051bGxfdW5zcGVjaWZpZWQgJyArXG4gICAgICAnX19GVU5DVElPTl9fIF9fUFJFVFRZX0ZVTkNUSU9OX18gX19hdHRyaWJ1dGVfXyAnICtcbiAgICAgICdnZXR0ZXIgc2V0dGVyIHJldGFpbiB1bnNhZmVfdW5yZXRhaW5lZCAnICtcbiAgICAgICdub25udWxsIG51bGxhYmxlIG51bGxfdW5zcGVjaWZpZWQgbnVsbF9yZXNldHRhYmxlIGNsYXNzIGluc3RhbmNldHlwZSAnICtcbiAgICAgICdOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSIE5TX1VOQVZBSUxBQkxFIE5TX1JFUVVJUkVTX1NVUEVSICcgK1xuICAgICAgJ05TX1JFVFVSTlNfSU5ORVJfUE9JTlRFUiBOU19JTkxJTkUgTlNfQVZBSUxBQkxFIE5TX0RFUFJFQ0FURUQgJyArXG4gICAgICAnTlNfRU5VTSBOU19PUFRJT05TIE5TX1NXSUZUX1VOQVZBSUxBQkxFICcgK1xuICAgICAgJ05TX0FTU1VNRV9OT05OVUxMX0JFR0lOIE5TX0FTU1VNRV9OT05OVUxMX0VORCAnICtcbiAgICAgICdOU19SRUZJTkVEX0ZPUl9TV0lGVCBOU19TV0lGVF9OQU1FIE5TX1NXSUZUX05PVEhST1cgJyArXG4gICAgICAnTlNfRFVSSU5HIE5TX0hBTkRMRVIgTlNfRU5ESEFORExFUiBOU19WQUxVRVJFVFVSTiBOU19WT0lEUkVUVVJOJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ2ZhbHNlIHRydWUgRkFMU0UgVFJVRSBuaWwgWUVTIE5PIE5VTEwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0JPT0wgZGlzcGF0Y2hfb25jZV90IGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hfc3luYyBkaXNwYXRjaF9hc3luYyBkaXNwYXRjaF9vbmNlJ1xuICB9O1xuICB2YXIgTEVYRU1FUyA9IC9bYS16QS1aQF1bYS16QS1aMC05X10qLztcbiAgdmFyIENMQVNTX0tFWVdPUkRTID0gJ0BpbnRlcmZhY2UgQGNsYXNzIEBwcm90b2NvbCBAaW1wbGVtZW50YXRpb24nO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbW0nLCAnb2JqYycsICdvYmotYyddLFxuICAgIGtleXdvcmRzOiBPQkpDX0tFWVdPUkRTLFxuICAgIGxleGVtZXM6IExFWEVNRVMsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgQVBJX0NMQVNTLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdAXCInLCBlbmQ6ICdcIicsXG4gICAgICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1teXFxcXFxcXFxdXFwnJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdbXlxcXFxcXFxcXVteXFwnXSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICB7IGJlZ2luOiAnXFxcIicsIGVuZDogJ1xcXCInIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46ICc8JywgZW5kOiAnPicgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbjogJygnICsgQ0xBU1NfS0VZV09SRFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKVxcXFxiJywgZW5kOiAnKHt8JCknLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogQ0xBU1NfS0VZV09SRFMsIGxleGVtZXM6IExFWEVNRVMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLicraGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvKiBtaXNzaW5nIHN1cHBvcnQgZm9yIGhlcmVkb2MtbGlrZSBzdHJpbmcgKE9DYW1sIDQuMC4yKykgKi9cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21sJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhbmQgYXMgYXNzZXJ0IGFzciBiZWdpbiBjbGFzcyBjb25zdHJhaW50IGRvIGRvbmUgZG93bnRvIGVsc2UgZW5kICcgK1xuICAgICAgICAnZXhjZXB0aW9uIGV4dGVybmFsIGZvciBmdW4gZnVuY3Rpb24gZnVuY3RvciBpZiBpbiBpbmNsdWRlICcgK1xuICAgICAgICAnaW5oZXJpdCEgaW5oZXJpdCBpbml0aWFsaXplciBsYW5kIGxhenkgbGV0IGxvciBsc2wgbHNyIGx4b3IgbWF0Y2ggbWV0aG9kIXwxMCBtZXRob2QgJyArXG4gICAgICAgICdtb2QgbW9kdWxlIG11dGFibGUgbmV3IG9iamVjdCBvZiBvcGVuISBvcGVuIG9yIHByaXZhdGUgcmVjIHNpZyBzdHJ1Y3QgJyArXG4gICAgICAgICd0aGVuIHRvIHRyeSB0eXBlIHZhbCEgdmFsIHZpcnR1YWwgd2hlbiB3aGlsZSB3aXRoICcgK1xuICAgICAgICAvKiBjYW1scDQgKi9cbiAgICAgICAgJ3BhcnNlciB2YWx1ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLyogYnVpbHQtaW4gdHlwZXMgKi9cbiAgICAgICAgJ2FycmF5IGJvb2wgYnl0ZXMgY2hhciBleG58NSBmbG9hdCBpbnQgaW50MzIgaW50NjQgbGlzdCBsYXp5X3R8NSBuYXRpdmVpbnR8NSBzdHJpbmcgdW5pdCAnICtcbiAgICAgICAgLyogKHNvbWUpIHR5cGVzIGluIFBlcnZhc2l2ZXMgKi9cbiAgICAgICAgJ2luX2NoYW5uZWwgb3V0X2NoYW5uZWwgcmVmJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogL1xcL1xcL3w+Pi8sXG4gICAgbGV4ZW1lczogJ1thLXpfXVxcXFx3KiE/JyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46ICdcXFxcWyhcXFxcfFxcXFx8KT9cXFxcXXxcXFxcKFxcXFwpJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnXFxcXChcXFxcKicsXG4gICAgICAgICdcXFxcKlxcXFwpJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgeyAvKiB0eXBlIHZhcmlhYmxlICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFwnW0EtWmEtel9dKD8hXFwnKVtcXFxcd1xcJ10qJ1xuICAgICAgICAvKiB0aGUgZ3JhbW1hciBpcyBhbWJpZ3VvdXMgb24gaG93ICdhJ2Igc2hvdWxkIGJlIGludGVycHJldGVkIGJ1dCBub3QgdGhlIGNvbXBpbGVyICovXG4gICAgICB9LFxuICAgICAgeyAvKiBwb2x5bW9ycGhpYyB2YXJpYW50ICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJ2BbQS1aXVtcXFxcd1xcJ10qJ1xuICAgICAgfSxcbiAgICAgIHsgLyogbW9kdWxlIG9yIGNvbnN0cnVjdG9yICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHdcXCddKicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLyogZG9uJ3QgY29sb3IgaWRlbnRpZmllcnMsIGJ1dCBzYWZlbHkgY2F0Y2ggYWxsIGlkZW50aWZpZXJzIHdpdGggJyovXG4gICAgICAgIGJlZ2luOiAnW2Etel9dXFxcXHcqXFwnW1xcXFx3XFwnXSonLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnc3RyaW5nJywgcmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgJ1xcXFxiKDBbeFhdW2EtZkEtRjAtOV9dK1tMbG5dP3wnICtcbiAgICAgICAgICAnMFtvT11bMC03X10rW0xsbl0/fCcgK1xuICAgICAgICAgICcwW2JCXVswMV9dK1tMbG5dP3wnICtcbiAgICAgICAgICAnWzAtOV1bMC05X10qKFtMbG5dfChcXFxcLlswLTlfXSopPyhbZUVdWy0rXT9bMC05X10rKT8pPyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvWy09XT4vIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9XG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXHR2YXIgU1BFQ0lBTF9WQVJTID0ge1xuXHRcdGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuXHRcdGJlZ2luOiAnXFxcXCQoZlthc25dfHR8dnBbcnRkXXxjaGlsZHJlbiknXG5cdH0sXG5cdExJVEVSQUxTID0ge1xuXHRcdGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuXHRcdGJlZ2luOiAnZmFsc2V8dHJ1ZXxQSXx1bmRlZidcblx0fSxcblx0TlVNQkVSUyA9IHtcblx0XHRjbGFzc05hbWU6ICdudW1iZXInLFxuXHRcdGJlZ2luOiAnXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCspPyhlLT9cXFxcZCspPycsIC8vYWRkcyAxZTUsIDFlLTEwXG5cdFx0cmVsZXZhbmNlOiAwXG5cdH0sXG5cdFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLHtpbGxlZ2FsOiBudWxsfSksXG5cdFBSRVBSTyA9IHtcblx0XHRjbGFzc05hbWU6ICdtZXRhJyxcblx0XHRrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaW5jbHVkZSB1c2UnfSxcblx0XHRiZWdpbjogJ2luY2x1ZGV8dXNlIDwnLFxuXHRcdGVuZDogJz4nXG5cdH0sXG5cdFBBUkFNUyA9IHtcblx0XHRjbGFzc05hbWU6ICdwYXJhbXMnLFxuXHRcdGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG5cdFx0Y29udGFpbnM6IFsnc2VsZicsIE5VTUJFUlMsIFNUUklORywgU1BFQ0lBTF9WQVJTLCBMSVRFUkFMU11cblx0fSxcblx0TU9ESUZJRVJTID0ge1xuXHRcdGJlZ2luOiAnWyohIyVdJyxcblx0XHRyZWxldmFuY2U6IDBcblx0fSxcblx0RlVOQ1RJT05TID0ge1xuXHRcdGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcblx0XHRiZWdpbktleXdvcmRzOiAnbW9kdWxlIGZ1bmN0aW9uJyxcblx0XHRlbmQ6ICdcXFxcPXxcXFxceycsXG5cdFx0Y29udGFpbnM6IFtQQVJBTVMsIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuXHR9O1xuXG5cdHJldHVybiB7XG5cdFx0YWxpYXNlczogWydzY2FkJ10sXG5cdFx0a2V5d29yZHM6IHtcblx0XHRcdGtleXdvcmQ6ICdmdW5jdGlvbiBtb2R1bGUgaW5jbHVkZSB1c2UgZm9yIGludGVyc2VjdGlvbl9mb3IgaWYgZWxzZSBcXFxcJScsXG5cdFx0XHRsaXRlcmFsOiAnZmFsc2UgdHJ1ZSBQSSB1bmRlZicsXG5cdFx0XHRidWlsdF9pbjogJ2NpcmNsZSBzcXVhcmUgcG9seWdvbiB0ZXh0IHNwaGVyZSBjdWJlIGN5bGluZGVyIHBvbHloZWRyb24gdHJhbnNsYXRlIHJvdGF0ZSBzY2FsZSByZXNpemUgbWlycm9yIG11bHRtYXRyaXggY29sb3Igb2Zmc2V0IGh1bGwgbWlua293c2tpIHVuaW9uIGRpZmZlcmVuY2UgaW50ZXJzZWN0aW9uIGFicyBzaWduIHNpbiBjb3MgdGFuIGFjb3MgYXNpbiBhdGFuIGF0YW4yIGZsb29yIHJvdW5kIGNlaWwgbG4gbG9nIHBvdyBzcXJ0IGV4cCByYW5kcyBtaW4gbWF4IGNvbmNhdCBsb29rdXAgc3RyIGNociBzZWFyY2ggdmVyc2lvbiB2ZXJzaW9uX251bSBub3JtIGNyb3NzIHBhcmVudF9tb2R1bGUgZWNobyBpbXBvcnQgaW1wb3J0X2R4ZiBkeGZfbGluZWFyX2V4dHJ1ZGUgbGluZWFyX2V4dHJ1ZGUgcm90YXRlX2V4dHJ1ZGUgc3VyZmFjZSBwcm9qZWN0aW9uIHJlbmRlciBjaGlsZHJlbiBkeGZfY3Jvc3MgZHhmX2RpbSBsZXQgYXNzaWduJ1xuXHRcdH0sXG5cdFx0Y29udGFpbnM6IFtcblx0XHRcdGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcblx0XHRcdGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG5cdFx0XHROVU1CRVJTLFxuXHRcdFx0UFJFUFJPLFxuXHRcdFx0U1RSSU5HLFxuXHRcdFx0U1BFQ0lBTF9WQVJTLFxuXHRcdFx0TU9ESUZJRVJTLFxuXHRcdFx0RlVOQ1RJT05TXG5cdFx0XVxuXHR9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgT1hZR0VORV9LRVlXT1JEUyA9ICdhYnN0cmFjdCBhZGQgYW5kIGFycmF5IGFzIGFzYyBhc3BlY3QgYXNzZW1ibHkgYXN5bmMgYmVnaW4gYnJlYWsgYmxvY2sgYnkgY2FzZSBjbGFzcyBjb25jYXQgY29uc3QgY29weSBjb25zdHJ1Y3RvciBjb250aW51ZSAnK1xuICAgICdjcmVhdGUgZGVmYXVsdCBkZWxlZ2F0ZSBkZXNjIGRpc3RpbmN0IGRpdiBkbyBkb3dudG8gZHluYW1pYyBlYWNoIGVsc2UgZW1wdHkgZW5kIGVuc3VyZSBlbnVtIGVxdWFscyBldmVudCBleGNlcHQgZXhpdCBleHRlbnNpb24gZXh0ZXJuYWwgZmFsc2UgJytcbiAgICAnZmluYWwgZmluYWxpemUgZmluYWxpemVyIGZpbmFsbHkgZmxhZ3MgZm9yIGZvcndhcmQgZnJvbSBmdW5jdGlvbiBmdXR1cmUgZ2xvYmFsIGdyb3VwIGhhcyBpZiBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRzIGltcGxpZXMgaW4gaW5kZXggaW5oZXJpdGVkICcrXG4gICAgJ2lubGluZSBpbnRlcmZhY2UgaW50byBpbnZhcmlhbnRzIGlzIGl0ZXJhdG9yIGpvaW4gbG9ja2VkIGxvY2tpbmcgbG9vcCBtYXRjaGluZyBtZXRob2QgbW9kIG1vZHVsZSBuYW1lc3BhY2UgbmVzdGVkIG5ldyBuaWwgbm90IG5vdGlmeSBudWxsYWJsZSBvZiAnK1xuICAgICdvbGQgb24gb3BlcmF0b3Igb3Igb3JkZXIgb3V0IG92ZXJyaWRlIHBhcmFsbGVsIHBhcmFtcyBwYXJ0aWFsIHBpbm5lZCBwcml2YXRlIHByb2NlZHVyZSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVibGljIHF1ZXJ5YWJsZSByYWlzZSByZWFkIHJlYWRvbmx5ICcrXG4gICAgJ3JlY29yZCByZWludHJvZHVjZSByZW1vdmUgcmVwZWF0IHJlcXVpcmUgcmVzdWx0IHJldmVyc2Ugc2VhbGVkIHNlbGVjdCBzZWxmIHNlcXVlbmNlIHNldCBzaGwgc2hyIHNraXAgc3RhdGljIHN0ZXAgc29mdCB0YWtlIHRoZW4gdG8gdHJ1ZSB0cnkgdHVwbGUgJytcbiAgICAndHlwZSB1bmlvbiB1bml0IHVuc2FmZSB1bnRpbCB1c2VzIHVzaW5nIHZhciB2aXJ0dWFsIHJhaXNlcyB2b2xhdGlsZSB3aGVyZSB3aGlsZSB3aXRoIHdyaXRlIHhvciB5aWVsZCBhd2FpdCBtYXBwZWQgZGVwcmVjYXRlZCBzdGRjYWxsIGNkZWNsIHBhc2NhbCAnK1xuICAgICdyZWdpc3RlciBzYWZlY2FsbCBvdmVybG9hZCBsaWJyYXJ5IHBsYXRmb3JtIHJlZmVyZW5jZSBwYWNrZWQgc3RyaWN0IHB1Ymxpc2hlZCBhdXRvcmVsZWFzZXBvb2wgc2VsZWN0b3Igc3Ryb25nIHdlYWsgdW5yZXRhaW5lZCc7XG4gIHZhciBDVVJMWV9DT01NRU5UID0gIGhsanMuQ09NTUVOVChcbiAgICAneycsXG4gICAgJ30nLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIFBBUkVOX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJ1xcXFwoXFxcXConLFxuICAgICdcXFxcKlxcXFwpJyxcbiAgICB7XG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfVxuICApO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJ31dXG4gIH07XG4gIHZhciBDSEFSX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCBiZWdpbjogJygjXFxcXGQrKSsnXG4gIH07XG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIGNvbnN0cnVjdG9yIGRlc3RydWN0b3IgcHJvY2VkdXJlIG1ldGhvZCcsIGVuZDogJ1s6O10nLFxuICAgIGtleXdvcmRzOiAnZnVuY3Rpb24gY29uc3RydWN0b3J8MTAgZGVzdHJ1Y3RvcnwxMCBwcm9jZWR1cmV8MTAgbWV0aG9kfDEwJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICBrZXl3b3JkczogT1hZR0VORV9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtTVFJJTkcsIENIQVJfU1RSSU5HXVxuICAgICAgfSxcbiAgICAgIENVUkxZX0NPTU1FTlQsIFBBUkVOX0NPTU1FTlRcbiAgICBdXG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiAvXFwuP1xcdysvLFxuICAgIGtleXdvcmRzOiBPWFlHRU5FX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICcoXCJ8XFxcXCRbRy1aZy16XXxcXFxcL1xcXFwqfDwvfD0+fC0+KScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIENVUkxZX0NPTU1FTlQsIFBBUkVOX0NPTU1FTlQsIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIFNUUklORywgQ0hBUl9TVFJJTkcsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgRlVOQ1RJT04sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICc9XFxcXGJjbGFzc1xcXFxiJywgZW5kOiAnZW5kOycsXG4gICAgICAgIGtleXdvcmRzOiBPWFlHRU5FX0tFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFNUUklORywgQ0hBUl9TVFJJTkcsXG4gICAgICAgICAgQ1VSTFlfQ09NTUVOVCwgUEFSRU5fQ09NTUVOVCwgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIEZVTkNUSU9OXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ1VSTFlfU1VCQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAneycsXG4gICAgJ30nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgIH1cbiAgKTtcbiAgcmV0dXJuIHtcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdeIycsICckJyksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdcXFxcXnJlbXsnLFxuICAgICAgICAnfScsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBDVVJMWV9TVUJDT01NRU5UXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeQCg/OkJBU0V8VVNFfENMQVNTfE9QVElPTlMpJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdAW1xcXFx3XFxcXC1dK1xcXFxbW1xcXFx3XjtcXFxcLV0qXFxcXF0oPzpcXFxcW1tcXFxcd147XFxcXC1dKlxcXFxdKT8oPzouKikkJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFwkXFxcXHs/W1xcXFx3XFxcXC1cXFxcLlxcXFw6XStcXFxcfT8nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcXltcXFxcd1xcXFwtXFxcXC5cXFxcOl0rJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcXiNbMC05YS1mQS1GXSsnXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE1BQ1JPID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJFtcXHdcXGQjQF1bXFx3XFxkX10qL1xuICB9O1xuICB2YXIgVEFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvPCg/IVxcLykvLCBlbmQ6IC8+L1xuICB9O1xuICB2YXIgUVVPVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cIi8sIGVuZDogL1wiL1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwZi5jb25mJ10sXG4gICAgbGV4ZW1lczogL1thLXowLTlfPD4tXSsvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBidWlsdF9pbjogLyogYmxvY2sgbWF0Y2ggcGFzcyBhcmUgXCJhY3Rpb25zXCIgaW4gcGYuY29uZig1KSwgdGhlIHJlc3QgYXJlXG4gICAgICAgICAgICAgICAgICogbGV4aWNhbGx5IHNpbWlsYXIgdG9wLWxldmVsIGNvbW1hbmRzLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAnYmxvY2sgbWF0Y2ggcGFzcyBsb2FkIGFuY2hvcnw1IGFudGlzcG9vZnwxMCBzZXQgdGFibGUnLFxuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2luIG91dCBsb2cgcXVpY2sgb24gcmRvbWFpbiBpbmV0IGluZXQ2IHByb3RvIGZyb20gcG9ydCBvcyB0byByb3V0ZScgK1xuICAgICAgICAnYWxsb3ctb3B0cyBkaXZlcnQtcGFja2V0IGRpdmVydC1yZXBseSBkaXZlcnQtdG8gZmxhZ3MgZ3JvdXAgaWNtcC10eXBlJyArXG4gICAgICAgICdpY21wNi10eXBlIGxhYmVsIG9uY2UgcHJvYmFiaWxpdHkgcmVjaWV2ZWQtb24gcnRhYmxlIHByaW8gcXVldWUnICtcbiAgICAgICAgJ3RvcyB0YWcgdGFnZ2VkIHVzZXIga2VlcCBmcmFnbWVudCBmb3Igb3MgZHJvcCcgK1xuICAgICAgICAnYWYtdG98MTAgYmluYXQtdG98MTAgbmF0LXRvfDEwIHJkci10b3wxMCBiaXRtYXNrIGxlYXN0LXN0YXRzIHJhbmRvbSByb3VuZC1yb2JpbicgK1xuICAgICAgICAnc291cmNlLWhhc2ggc3RhdGljLXBvcnQnICtcbiAgICAgICAgJ2R1cC10byByZXBseS10byByb3V0ZS10bycgK1xuICAgICAgICAncGFyZW50IGJhbmR3aWR0aCBkZWZhdWx0IG1pbiBtYXggcWxpbWl0JyArXG4gICAgICAgICdibG9jay1wb2xpY3kgZGVidWcgZmluZ2VycHJpbnRzIGhvc3RpZCBsaW1pdCBsb2dpbnRlcmZhY2Ugb3B0aW1pemF0aW9uJyArXG4gICAgICAgICdyZWFzc2VtYmxlIHJ1bGVzZXQtb3B0aW1pemF0aW9uIGJhc2ljIG5vbmUgcHJvZmlsZSBza2lwIHN0YXRlLWRlZmF1bHRzJyArXG4gICAgICAgICdzdGF0ZS1wb2xpY3kgdGltZW91dCcgK1xuICAgICAgICAnY29uc3QgY291bnRlcnMgcGVyc2lzdCcgK1xuICAgICAgICAnbm8gbW9kdWxhdGUgc3lucHJveHkgc3RhdGV8NSBmbG9hdGluZyBpZi1ib3VuZCBuby1zeW5jIHBmbG93fDEwIHNsb3BweScgK1xuICAgICAgICAnc291cmNlLXRyYWNrIGdsb2JhbCBydWxlIG1heC1zcmMtbm9kZXMgbWF4LXNyYy1zdGF0ZXMgbWF4LXNyYy1jb25uJyArXG4gICAgICAgICdtYXgtc3JjLWNvbm4tcmF0ZSBvdmVybG9hZCBmbHVzaCcgK1xuICAgICAgICAnc2NydWJ8NSBtYXgtbXNzIG1pbi10dGwgbm8tZGZ8MTAgcmFuZG9tLWlkJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdhbGwgYW55IG5vLXJvdXRlIHNlbGYgdXJwZi1mYWlsZWQgZWdyZXNzfDUgdW5rbm93bidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBNQUNSTyxcbiAgICAgIFRBQkxFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuICB2YXIgVU5RVU9URURfSURFTlQgPSAnW2EtekEtWl9dW2EtekEtWl8wLTkkXSonO1xuICB2YXIgRE9MTEFSX1NUUklORyA9ICdcXFxcJChbYS16QS1aX10/fFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcXCQnO1xuICB2YXIgTEFCRUwgPSAnPDxcXFxccyonICsgVU5RVU9URURfSURFTlQgKyAnXFxcXHMqPj4nO1xuXG4gIHZhciBTUUxfS1cgPVxuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL3NxbC1rZXl3b3Jkcy1hcHBlbmRpeC5odG1sXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvc3FsLWNvbW1hbmRzLmh0bWxcbiAgICAvLyBTUUwgY29tbWFuZHMgKHN0YXJ0aW5nIHdvcmRzKVxuICAgICdBQk9SVCBBTFRFUiBBTkFMWVpFIEJFR0lOIENBTEwgQ0hFQ0tQT0lOVHwxMCBDTE9TRSBDTFVTVEVSIENPTU1FTlQgQ09NTUlUIENPUFkgQ1JFQVRFIERFQUxMT0NBVEUgREVDTEFSRSAnICtcbiAgICAnREVMRVRFIERJU0NBUkQgRE8gRFJPUCBFTkQgRVhFQ1VURSBFWFBMQUlOIEZFVENIIEdSQU5UIElNUE9SVCBJTlNFUlQgTElTVEVOIExPQUQgTE9DSyBNT1ZFIE5PVElGWSAnICtcbiAgICAnUFJFUEFSRSBSRUFTU0lHTnwxMCBSRUZSRVNIIFJFSU5ERVggUkVMRUFTRSBSRVNFVCBSRVZPS0UgUk9MTEJBQ0sgU0FWRVBPSU5UIFNFQ1VSSVRZIFNFTEVDVCBTRVQgU0hPVyAnICtcbiAgICAnU1RBUlQgVFJVTkNBVEUgVU5MSVNURU58MTAgVVBEQVRFIFZBQ1VVTXwxMCBWQUxVRVMgJyArXG4gICAgLy8gU1FMIGNvbW1hbmRzIChvdGhlcnMpXG4gICAgJ0FHR1JFR0FURSBDT0xMQVRJT04gQ09OVkVSU0lPTnwxMCBEQVRBQkFTRSBERUZBVUxUIFBSSVZJTEVHRVMgRE9NQUlOIFRSSUdHRVIgRVhURU5TSU9OIEZPUkVJR04gJyArXG4gICAgJ1dSQVBQRVJ8MTAgVEFCTEUgRlVOQ1RJT04gR1JPVVAgTEFOR1VBR0UgTEFSR0UgT0JKRUNUIE1BVEVSSUFMSVpFRCBWSUVXIE9QRVJBVE9SIENMQVNTICcgK1xuICAgICdGQU1JTFkgUE9MSUNZIFBVQkxJQ0FUSU9OfDEwIFJPTEUgUlVMRSBTQ0hFTUEgU0VRVUVOQ0UgU0VSVkVSIFNUQVRJU1RJQ1MgU1VCU0NSSVBUSU9OIFNZU1RFTSAnICtcbiAgICAnVEFCTEVTUEFDRSBDT05GSUdVUkFUSU9OIERJQ1RJT05BUlkgUEFSU0VSIFRFTVBMQVRFIFRZUEUgVVNFUiBNQVBQSU5HIFBSRVBBUkVEIEFDQ0VTUyAnICtcbiAgICAnTUVUSE9EIENBU1QgQVMgVFJBTlNGT1JNIFRSQU5TQUNUSU9OIE9XTkVEIFRPIElOVE8gU0VTU0lPTiBBVVRIT1JJWkFUSU9OICcgK1xuICAgICdJTkRFWCBQUk9DRURVUkUgQVNTRVJUSU9OICcgK1xuICAgIC8vIGFkZGl0aW9uYWwgcmVzZXJ2ZWQga2V5IHdvcmRzXG4gICAgJ0FMTCBBTkFMWVNFIEFORCBBTlkgQVJSQVkgQVNDIEFTWU1NRVRSSUN8MTAgQk9USCBDQVNFIENIRUNLICcgK1xuICAgICdDT0xMQVRFIENPTFVNTiBDT05DVVJSRU5UTFl8MTAgQ09OU1RSQUlOVCBDUk9TUyAnICtcbiAgICAnREVGRVJSQUJMRSBSQU5HRSAnICtcbiAgICAnREVTQyBESVNUSU5DVCBFTFNFIEVYQ0VQVCBGT1IgRlJFRVpFfDEwIEZST00gRlVMTCBIQVZJTkcgJyArXG4gICAgJ0lMSUtFIElOIElOSVRJQUxMWSBJTk5FUiBJTlRFUlNFQ1QgSVMgSVNOVUxMIEpPSU4gTEFURVJBTCBMRUFESU5HIExJS0UgTElNSVQgJyArXG4gICAgJ05BVFVSQUwgTk9UIE5PVE5VTEwgTlVMTCBPRkZTRVQgT04gT05MWSBPUiBPUkRFUiBPVVRFUiBPVkVSTEFQUyBQTEFDSU5HIFBSSU1BUlkgJyArXG4gICAgJ1JFRkVSRU5DRVMgUkVUVVJOSU5HIFNJTUlMQVIgU09NRSBTWU1NRVRSSUMgVEFCTEVTQU1QTEUgVEhFTiAnICtcbiAgICAnVFJBSUxJTkcgVU5JT04gVU5JUVVFIFVTSU5HIFZBUklBRElDfDEwIFZFUkJPU0UgV0hFTiBXSEVSRSBXSU5ET1cgV0lUSCAnICtcbiAgICAvLyBzb21lIG9mIG5vbi1yZXNlcnZlZCAod2hpY2ggYXJlIHVzZWQgaW4gY2xhdXNlcyBvciBhcyBQTC9wZ1NRTCBrZXl3b3JkKVxuICAgICdCWSBSRVRVUk5TIElOT1VUIE9VVCBTRVRPRnwxMCBJRiBTVFJJQ1QgQ1VSUkVOVCBDT05USU5VRSBPV05FUiBMT0NBVElPTiBPVkVSIFBBUlRJVElPTiBXSVRISU4gJyArXG4gICAgJ0JFVFdFRU4gRVNDQVBFIEVYVEVSTkFMIElOVk9LRVIgREVGSU5FUiBXT1JLIFJFTkFNRSBWRVJTSU9OIENPTk5FQ1RJT04gQ09OTkVDVCAnICtcbiAgICAnVEFCTEVTIFRFTVAgVEVNUE9SQVJZIEZVTkNUSU9OUyBTRVFVRU5DRVMgVFlQRVMgU0NIRU1BUyBPUFRJT04gQ0FTQ0FERSBSRVNUUklDVCBBREQgQURNSU4gJyArXG4gICAgJ0VYSVNUUyBWQUxJRCBWQUxJREFURSBFTkFCTEUgRElTQUJMRSBSRVBMSUNBfDEwIEFMV0FZUyBQQVNTSU5HIENPTFVNTlMgUEFUSCAnICtcbiAgICAnUkVGIFZBTFVFIE9WRVJSSURJTkcgSU1NVVRBQkxFIFNUQUJMRSBWT0xBVElMRSBCRUZPUkUgQUZURVIgRUFDSCBST1cgUFJPQ0VEVVJBTCAnICtcbiAgICAnUk9VVElORSBOTyBIQU5ETEVSIFZBTElEQVRPUiBPUFRJT05TIFNUT1JBR0UgT0lEU3wxMCBXSVRIT1VUIElOSEVSSVQgREVQRU5EUyBDQUxMRUQgJyArXG4gICAgJ0lOUFVUIExFQUtQUk9PRnwxMCBDT1NUIFJPV1MgTk9XQUlUIFNFQVJDSCBVTlRJTCBFTkNSWVBURUR8MTAgUEFTU1dPUkQgQ09ORkxJQ1R8MTAgJyArXG4gICAgJ0lOU1RFQUQgSU5IRVJJVFMgQ0hBUkFDVEVSSVNUSUNTIFdSSVRFIENVUlNPUiBBTFNPIFNUQVRFTUVOVCBTSEFSRSBFWENMVVNJVkUgSU5MSU5FICcgK1xuICAgICdJU09MQVRJT04gUkVQRUFUQUJMRSBSRUFEIENPTU1JVFRFRCBTRVJJQUxJWkFCTEUgVU5DT01NSVRURUQgTE9DQUwgR0xPQkFMIFNRTCBQUk9DRURVUkVTICcgK1xuICAgICdSRUNVUlNJVkUgU05BUFNIT1QgUk9MTFVQIENVQkUgVFJVU1RFRHwxMCBJTkNMVURFIEZPTExPV0lORyBQUkVDRURJTkcgVU5CT1VOREVEIFJBTkdFIEdST1VQUyAnICtcbiAgICAnVU5FTkNSWVBURUR8MTAgU1lTSUQgRk9STUFUIERFTElNSVRFUiBIRUFERVIgUVVPVEUgRU5DT0RJTkcgRklMVEVSIE9GRiAnICtcbiAgICAvLyBzb21lIHBhcmFtZXRlcnMgb2YgVkFDVVVNL0FOQUxZWkUvRVhQTEFJTlxuICAgICdGT1JDRV9RVU9URSBGT1JDRV9OT1RfTlVMTCBGT1JDRV9OVUxMIENPU1RTIEJVRkZFUlMgVElNSU5HIFNVTU1BUlkgRElTQUJMRV9QQUdFX1NLSVBQSU5HICcgK1xuICAgIC8vXG4gICAgJ1JFU1RBUlQgQ1lDTEUgR0VORVJBVEVEIElERU5USVRZIERFRkVSUkVEIElNTUVESUFURSBMRVZFTCBMT0dHRUQgVU5MT0dHRUQgJyArXG4gICAgJ09GIE5PVEhJTkcgTk9ORSBFWENMVURFIEFUVFJJQlVURSAnICtcbiAgICAvLyBmcm9tIEdSQU5UIChub3Qga2V5d29yZHMgYWN0dWFsbHkpXG4gICAgJ1VTQUdFIFJPVVRJTkVTICcgK1xuICAgIC8vIGFjdHVhbGx5IGxpdGVyYWxzLCBidXQgbG9vayBiZXR0ZXIgdGhpcyB3YXkgKGR1ZSB0byBJUyBUUlVFLCBJUyBGQUxTRSwgSVNOVUxMIGV0YylcbiAgICAnVFJVRSBGQUxTRSBOQU4gSU5GSU5JVFkgJztcblxuICB2YXIgUk9MRV9BVFRSUyA9IC8vIG9ubHkgdGhvc2Ugbm90IGluIGtleXdyb2RzIGFscmVhZHlcbiAgICAnU1VQRVJVU0VSIE5PU1VQRVJVU0VSIENSRUFURURCIE5PQ1JFQVRFREIgQ1JFQVRFUk9MRSBOT0NSRUFURVJPTEUgSU5IRVJJVCBOT0lOSEVSSVQgJyArXG4gICAgJ0xPR0lOIE5PTE9HSU4gUkVQTElDQVRJT04gTk9SRVBMSUNBVElPTiBCWVBBU1NSTFMgTk9CWVBBU1NSTFMgJztcblxuICB2YXIgUExQR1NRTF9LVyA9XG4gICAgJ0FMSUFTIEJFR0lOIENPTlNUQU5UIERFQ0xBUkUgRU5EIEVYQ0VQVElPTiBSRVRVUk4gUEVSRk9STXwxMCBSQUlTRSBHRVQgRElBR05PU1RJQ1MgJyArXG4gICAgJ1NUQUNLRUR8MTAgRk9SRUFDSCBMT09QIEVMU0lGIEVYSVQgV0hJTEUgUkVWRVJTRSBTTElDRSBERUJVRyBMT0cgSU5GTyBOT1RJQ0UgV0FSTklORyBBU1NFUlQgJyArXG4gICAgJ09QRU4gJztcblxuICB2YXIgVFlQRVMgPVxuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2RhdGF0eXBlLmh0bWxcbiAgICAnQklHSU5UIElOVDggQklHU0VSSUFMIFNFUklBTDggQklUIFZBUllJTkcgVkFSQklUIEJPT0xFQU4gQk9PTCBCT1ggQllURUEgQ0hBUkFDVEVSIENIQVIgVkFSQ0hBUiAnICtcbiAgICAnQ0lEUiBDSVJDTEUgREFURSBET1VCTEUgUFJFQ0lTSU9OIEZMT0FUOCBGTE9BVCBJTkVUIElOVEVHRVIgSU5UIElOVDQgSU5URVJWQUwgSlNPTiBKU09OQiBMSU5FIExTRUd8MTAgJyArXG4gICAgJ01BQ0FERFIgTUFDQUREUjggTU9ORVkgTlVNRVJJQyBERUMgREVDSU1BTCBQQVRIIFBPSU5UIFBPTFlHT04gUkVBTCBGTE9BVDQgU01BTExJTlQgSU5UMiAnICtcbiAgICAnU01BTExTRVJJQUx8MTAgU0VSSUFMMnwxMCBTRVJJQUx8MTAgU0VSSUFMNHwxMCBURVhUIFRJTUUgWk9ORSBUSU1FVFp8MTAgVElNRVNUQU1QIFRJTUVTVEFNUFRafDEwIFRTUVVFUll8MTAgVFNWRUNUT1J8MTAgJyArXG4gICAgJ1RYSURfU05BUFNIT1R8MTAgVVVJRCBYTUwgTkFUSU9OQUwgTkNIQVIgJyArXG4gICAgJ0lOVDRSQU5HRXwxMCBJTlQ4UkFOR0V8MTAgTlVNUkFOR0V8MTAgVFNSQU5HRXwxMCBUU1RaUkFOR0V8MTAgREFURVJBTkdFfDEwICcgK1xuICAgIC8vIHBzZXVkb3R5cGVzXG4gICAgJ0FOWUVMRU1FTlQgQU5ZQVJSQVkgQU5ZTk9OQVJSQVkgQU5ZRU5VTSBBTllSQU5HRSBDU1RSSU5HIElOVEVSTkFMICcgK1xuICAgICdSRUNPUkQgUEdfRERMX0NPTU1BTkQgVk9JRCBVTktOT1dOIE9QQVFVRSBSRUZDVVJTT1IgJyArXG4gICAgLy8gc3BlYy4gdHlwZVxuICAgICdOQU1FICcgK1xuICAgIC8vIE9JRC10eXBlc1xuICAgICdPSUQgUkVHUFJPQ3wxMCBSRUdQUk9DRURVUkV8MTAgUkVHT1BFUnwxMCBSRUdPUEVSQVRPUnwxMCBSRUdDTEFTU3wxMCBSRUdUWVBFfDEwIFJFR1JPTEV8MTAgJyArXG4gICAgJ1JFR05BTUVTUEFDRXwxMCBSRUdDT05GSUd8MTAgUkVHRElDVElPTkFSWXwxMCAnOy8vICtcbiAgICAvLyBzb21lIHR5cGVzIGZyb20gc3RhbmRhcmQgZXh0ZW5zaW9uc1xuICAgICdIU1RPUkV8MTAgTE8gTFRSRUV8MTAgJztcblxuICB2YXIgVFlQRVNfUkUgPVxuICAgIFRZUEVTLnRyaW0oKVxuICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgIC5tYXAoIGZ1bmN0aW9uKHZhbCkgeyByZXR1cm4gdmFsLnNwbGl0KCd8JylbMF07IH0gKVxuICAgICAgICAgLmpvaW4oJ3wnKTtcblxuICB2YXIgU1FMX0JJID1cbiAgICAnQ1VSUkVOVF9USU1FIENVUlJFTlRfVElNRVNUQU1QIENVUlJFTlRfVVNFUiBDVVJSRU5UX0NBVEFMT0d8MTAgQ1VSUkVOVF9EQVRFIExPQ0FMVElNRSBMT0NBTFRJTUVTVEFNUCAnICtcbiAgICAnQ1VSUkVOVF9ST0xFfDEwIENVUlJFTlRfU0NIRU1BfDEwIFNFU1NJT05fVVNFUiBQVUJMSUMgJztcblxuICB2YXIgUExQR1NRTF9CSSA9XG4gICAgJ0ZPVU5EIE5FVyBPTEQgVEdfTkFNRXwxMCBUR19XSEVOfDEwIFRHX0xFVkVMfDEwIFRHX09QfDEwIFRHX1JFTElEfDEwIFRHX1JFTE5BTUV8MTAgJyArXG4gICAgJ1RHX1RBQkxFX05BTUV8MTAgVEdfVEFCTEVfU0NIRU1BfDEwIFRHX05BUkdTfDEwIFRHX0FSR1Z8MTAgVEdfRVZFTlR8MTAgVEdfVEFHfDEwICcgK1xuICAgIC8vIGdldCBkaWFnbm9zdGljc1xuICAgICdST1dfQ09VTlQgUkVTVUxUX09JRHwxMCBQR19DT05URVhUfDEwIFJFVFVSTkVEX1NRTFNUQVRFIENPTFVNTl9OQU1FIENPTlNUUkFJTlRfTkFNRSAnICtcbiAgICAnUEdfREFUQVRZUEVfTkFNRXwxMCBNRVNTQUdFX1RFWFQgVEFCTEVfTkFNRSBTQ0hFTUFfTkFNRSBQR19FWENFUFRJT05fREVUQUlMfDEwICcgK1xuICAgICdQR19FWENFUFRJT05fSElOVHwxMCBQR19FWENFUFRJT05fQ09OVEVYVHwxMCAnO1xuXG4gIHZhciBQTFBHU1FMX0VYQ0VQVElPTlMgPVxuICAgIC8vIGV4Y2VwdGlvbnMgaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy9jdXJyZW50L3N0YXRpYy9lcnJjb2Rlcy1hcHBlbmRpeC5odG1sXG4gICAgJ1NRTFNUQVRFIFNRTEVSUk18MTAgJyArXG4gICAgJ1NVQ0NFU1NGVUxfQ09NUExFVElPTiBXQVJOSU5HIERZTkFNSUNfUkVTVUxUX1NFVFNfUkVUVVJORUQgSU1QTElDSVRfWkVST19CSVRfUEFERElORyAnICtcbiAgICAnTlVMTF9WQUxVRV9FTElNSU5BVEVEX0lOX1NFVF9GVU5DVElPTiBQUklWSUxFR0VfTk9UX0dSQU5URUQgUFJJVklMRUdFX05PVF9SRVZPS0VEICcgK1xuICAgICdTVFJJTkdfREFUQV9SSUdIVF9UUlVOQ0FUSU9OIERFUFJFQ0FURURfRkVBVFVSRSBOT19EQVRBIE5PX0FERElUSU9OQUxfRFlOQU1JQ19SRVNVTFRfU0VUU19SRVRVUk5FRCAnICtcbiAgICAnU1FMX1NUQVRFTUVOVF9OT1RfWUVUX0NPTVBMRVRFIENPTk5FQ1RJT05fRVhDRVBUSU9OIENPTk5FQ1RJT05fRE9FU19OT1RfRVhJU1QgQ09OTkVDVElPTl9GQUlMVVJFICcgK1xuICAgICdTUUxDTElFTlRfVU5BQkxFX1RPX0VTVEFCTElTSF9TUUxDT05ORUNUSU9OIFNRTFNFUlZFUl9SRUpFQ1RFRF9FU1RBQkxJU0hNRU5UX09GX1NRTENPTk5FQ1RJT04gJyArXG4gICAgJ1RSQU5TQUNUSU9OX1JFU09MVVRJT05fVU5LTk9XTiBQUk9UT0NPTF9WSU9MQVRJT04gVFJJR0dFUkVEX0FDVElPTl9FWENFUFRJT04gRkVBVFVSRV9OT1RfU1VQUE9SVEVEICcgK1xuICAgICdJTlZBTElEX1RSQU5TQUNUSU9OX0lOSVRJQVRJT04gTE9DQVRPUl9FWENFUFRJT04gSU5WQUxJRF9MT0NBVE9SX1NQRUNJRklDQVRJT04gSU5WQUxJRF9HUkFOVE9SICcgK1xuICAgICdJTlZBTElEX0dSQU5UX09QRVJBVElPTiBJTlZBTElEX1JPTEVfU1BFQ0lGSUNBVElPTiBESUFHTk9TVElDU19FWENFUFRJT04gJyArXG4gICAgJ1NUQUNLRURfRElBR05PU1RJQ1NfQUNDRVNTRURfV0lUSE9VVF9BQ1RJVkVfSEFORExFUiBDQVNFX05PVF9GT1VORCBDQVJESU5BTElUWV9WSU9MQVRJT04gJyArXG4gICAgJ0RBVEFfRVhDRVBUSU9OIEFSUkFZX1NVQlNDUklQVF9FUlJPUiBDSEFSQUNURVJfTk9UX0lOX1JFUEVSVE9JUkUgREFURVRJTUVfRklFTERfT1ZFUkZMT1cgJyArXG4gICAgJ0RJVklTSU9OX0JZX1pFUk8gRVJST1JfSU5fQVNTSUdOTUVOVCBFU0NBUEVfQ0hBUkFDVEVSX0NPTkZMSUNUIElORElDQVRPUl9PVkVSRkxPVyAnICtcbiAgICAnSU5URVJWQUxfRklFTERfT1ZFUkZMT1cgSU5WQUxJRF9BUkdVTUVOVF9GT1JfTE9HQVJJVEhNIElOVkFMSURfQVJHVU1FTlRfRk9SX05USUxFX0ZVTkNUSU9OICcgK1xuICAgICdJTlZBTElEX0FSR1VNRU5UX0ZPUl9OVEhfVkFMVUVfRlVOQ1RJT04gSU5WQUxJRF9BUkdVTUVOVF9GT1JfUE9XRVJfRlVOQ1RJT04gJyArXG4gICAgJ0lOVkFMSURfQVJHVU1FTlRfRk9SX1dJRFRIX0JVQ0tFVF9GVU5DVElPTiBJTlZBTElEX0NIQVJBQ1RFUl9WQUxVRV9GT1JfQ0FTVCAnICtcbiAgICAnSU5WQUxJRF9EQVRFVElNRV9GT1JNQVQgSU5WQUxJRF9FU0NBUEVfQ0hBUkFDVEVSIElOVkFMSURfRVNDQVBFX09DVEVUIElOVkFMSURfRVNDQVBFX1NFUVVFTkNFICcgK1xuICAgICdOT05TVEFOREFSRF9VU0VfT0ZfRVNDQVBFX0NIQVJBQ1RFUiBJTlZBTElEX0lORElDQVRPUl9QQVJBTUVURVJfVkFMVUUgSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUgJyArXG4gICAgJ0lOVkFMSURfUkVHVUxBUl9FWFBSRVNTSU9OIElOVkFMSURfUk9XX0NPVU5UX0lOX0xJTUlUX0NMQVVTRSAnICtcbiAgICAnSU5WQUxJRF9ST1dfQ09VTlRfSU5fUkVTVUxUX09GRlNFVF9DTEFVU0UgSU5WQUxJRF9UQUJMRVNBTVBMRV9BUkdVTUVOVCBJTlZBTElEX1RBQkxFU0FNUExFX1JFUEVBVCAnICtcbiAgICAnSU5WQUxJRF9USU1FX1pPTkVfRElTUExBQ0VNRU5UX1ZBTFVFIElOVkFMSURfVVNFX09GX0VTQ0FQRV9DSEFSQUNURVIgTU9TVF9TUEVDSUZJQ19UWVBFX01JU01BVENIICcgK1xuICAgICdOVUxMX1ZBTFVFX05PVF9BTExPV0VEIE5VTExfVkFMVUVfTk9fSU5ESUNBVE9SX1BBUkFNRVRFUiBOVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSAnICtcbiAgICAnU0VRVUVOQ0VfR0VORVJBVE9SX0xJTUlUX0VYQ0VFREVEIFNUUklOR19EQVRBX0xFTkdUSF9NSVNNQVRDSCBTVFJJTkdfREFUQV9SSUdIVF9UUlVOQ0FUSU9OICcgK1xuICAgICdTVUJTVFJJTkdfRVJST1IgVFJJTV9FUlJPUiBVTlRFUk1JTkFURURfQ19TVFJJTkcgWkVST19MRU5HVEhfQ0hBUkFDVEVSX1NUUklORyAnICtcbiAgICAnRkxPQVRJTkdfUE9JTlRfRVhDRVBUSU9OIElOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiBJTlZBTElEX0JJTkFSWV9SRVBSRVNFTlRBVElPTiAnICtcbiAgICAnQkFEX0NPUFlfRklMRV9GT1JNQVQgVU5UUkFOU0xBVEFCTEVfQ0hBUkFDVEVSIE5PVF9BTl9YTUxfRE9DVU1FTlQgSU5WQUxJRF9YTUxfRE9DVU1FTlQgJyArXG4gICAgJ0lOVkFMSURfWE1MX0NPTlRFTlQgSU5WQUxJRF9YTUxfQ09NTUVOVCBJTlZBTElEX1hNTF9QUk9DRVNTSU5HX0lOU1RSVUNUSU9OICcgK1xuICAgICdJTlRFR1JJVFlfQ09OU1RSQUlOVF9WSU9MQVRJT04gUkVTVFJJQ1RfVklPTEFUSU9OIE5PVF9OVUxMX1ZJT0xBVElPTiBGT1JFSUdOX0tFWV9WSU9MQVRJT04gJyArXG4gICAgJ1VOSVFVRV9WSU9MQVRJT04gQ0hFQ0tfVklPTEFUSU9OIEVYQ0xVU0lPTl9WSU9MQVRJT04gSU5WQUxJRF9DVVJTT1JfU1RBVEUgJyArXG4gICAgJ0lOVkFMSURfVFJBTlNBQ1RJT05fU1RBVEUgQUNUSVZFX1NRTF9UUkFOU0FDVElPTiBCUkFOQ0hfVFJBTlNBQ1RJT05fQUxSRUFEWV9BQ1RJVkUgJyArXG4gICAgJ0hFTERfQ1VSU09SX1JFUVVJUkVTX1NBTUVfSVNPTEFUSU9OX0xFVkVMIElOQVBQUk9QUklBVEVfQUNDRVNTX01PREVfRk9SX0JSQU5DSF9UUkFOU0FDVElPTiAnICtcbiAgICAnSU5BUFBST1BSSUFURV9JU09MQVRJT05fTEVWRUxfRk9SX0JSQU5DSF9UUkFOU0FDVElPTiAnICtcbiAgICAnTk9fQUNUSVZFX1NRTF9UUkFOU0FDVElPTl9GT1JfQlJBTkNIX1RSQU5TQUNUSU9OIFJFQURfT05MWV9TUUxfVFJBTlNBQ1RJT04gJyArXG4gICAgJ1NDSEVNQV9BTkRfREFUQV9TVEFURU1FTlRfTUlYSU5HX05PVF9TVVBQT1JURUQgTk9fQUNUSVZFX1NRTF9UUkFOU0FDVElPTiAnICtcbiAgICAnSU5fRkFJTEVEX1NRTF9UUkFOU0FDVElPTiBJRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCBJTlZBTElEX1NRTF9TVEFURU1FTlRfTkFNRSAnICtcbiAgICAnVFJJR0dFUkVEX0RBVEFfQ0hBTkdFX1ZJT0xBVElPTiBJTlZBTElEX0FVVEhPUklaQVRJT05fU1BFQ0lGSUNBVElPTiBJTlZBTElEX1BBU1NXT1JEICcgK1xuICAgICdERVBFTkRFTlRfUFJJVklMRUdFX0RFU0NSSVBUT1JTX1NUSUxMX0VYSVNUIERFUEVOREVOVF9PQkpFQ1RTX1NUSUxMX0VYSVNUICcgK1xuICAgICdJTlZBTElEX1RSQU5TQUNUSU9OX1RFUk1JTkFUSU9OIFNRTF9ST1VUSU5FX0VYQ0VQVElPTiBGVU5DVElPTl9FWEVDVVRFRF9OT19SRVRVUk5fU1RBVEVNRU5UICcgK1xuICAgICdNT0RJRllJTkdfU1FMX0RBVEFfTk9UX1BFUk1JVFRFRCBQUk9ISUJJVEVEX1NRTF9TVEFURU1FTlRfQVRURU1QVEVEICcgK1xuICAgICdSRUFESU5HX1NRTF9EQVRBX05PVF9QRVJNSVRURUQgSU5WQUxJRF9DVVJTT1JfTkFNRSBFWFRFUk5BTF9ST1VUSU5FX0VYQ0VQVElPTiAnICtcbiAgICAnQ09OVEFJTklOR19TUUxfTk9UX1BFUk1JVFRFRCBNT0RJRllJTkdfU1FMX0RBVEFfTk9UX1BFUk1JVFRFRCAnICtcbiAgICAnUFJPSElCSVRFRF9TUUxfU1RBVEVNRU5UX0FUVEVNUFRFRCBSRUFESU5HX1NRTF9EQVRBX05PVF9QRVJNSVRURUQgJyArXG4gICAgJ0VYVEVSTkFMX1JPVVRJTkVfSU5WT0NBVElPTl9FWENFUFRJT04gSU5WQUxJRF9TUUxTVEFURV9SRVRVUk5FRCBOVUxMX1ZBTFVFX05PVF9BTExPV0VEICcgK1xuICAgICdUUklHR0VSX1BST1RPQ09MX1ZJT0xBVEVEIFNSRl9QUk9UT0NPTF9WSU9MQVRFRCBFVkVOVF9UUklHR0VSX1BST1RPQ09MX1ZJT0xBVEVEICcgK1xuICAgICdTQVZFUE9JTlRfRVhDRVBUSU9OIElOVkFMSURfU0FWRVBPSU5UX1NQRUNJRklDQVRJT04gSU5WQUxJRF9DQVRBTE9HX05BTUUgJyArXG4gICAgJ0lOVkFMSURfU0NIRU1BX05BTUUgVFJBTlNBQ1RJT05fUk9MTEJBQ0sgVFJBTlNBQ1RJT05fSU5URUdSSVRZX0NPTlNUUkFJTlRfVklPTEFUSU9OICcgK1xuICAgICdTRVJJQUxJWkFUSU9OX0ZBSUxVUkUgU1RBVEVNRU5UX0NPTVBMRVRJT05fVU5LTk9XTiBERUFETE9DS19ERVRFQ1RFRCAnICtcbiAgICAnU1lOVEFYX0VSUk9SX09SX0FDQ0VTU19SVUxFX1ZJT0xBVElPTiBTWU5UQVhfRVJST1IgSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSBDQU5OT1RfQ09FUkNFICcgK1xuICAgICdHUk9VUElOR19FUlJPUiBXSU5ET1dJTkdfRVJST1IgSU5WQUxJRF9SRUNVUlNJT04gSU5WQUxJRF9GT1JFSUdOX0tFWSBJTlZBTElEX05BTUUgJyArXG4gICAgJ05BTUVfVE9PX0xPTkcgUkVTRVJWRURfTkFNRSBEQVRBVFlQRV9NSVNNQVRDSCBJTkRFVEVSTUlOQVRFX0RBVEFUWVBFIENPTExBVElPTl9NSVNNQVRDSCAnICtcbiAgICAnSU5ERVRFUk1JTkFURV9DT0xMQVRJT04gV1JPTkdfT0JKRUNUX1RZUEUgR0VORVJBVEVEX0FMV0FZUyBVTkRFRklORURfQ09MVU1OICcgK1xuICAgICdVTkRFRklORURfRlVOQ1RJT04gVU5ERUZJTkVEX1RBQkxFIFVOREVGSU5FRF9QQVJBTUVURVIgVU5ERUZJTkVEX09CSkVDVCAnICtcbiAgICAnRFVQTElDQVRFX0NPTFVNTiBEVVBMSUNBVEVfQ1VSU09SIERVUExJQ0FURV9EQVRBQkFTRSBEVVBMSUNBVEVfRlVOQ1RJT04gJyArXG4gICAgJ0RVUExJQ0FURV9QUkVQQVJFRF9TVEFURU1FTlQgRFVQTElDQVRFX1NDSEVNQSBEVVBMSUNBVEVfVEFCTEUgRFVQTElDQVRFX0FMSUFTICcgK1xuICAgICdEVVBMSUNBVEVfT0JKRUNUIEFNQklHVU9VU19DT0xVTU4gQU1CSUdVT1VTX0ZVTkNUSU9OIEFNQklHVU9VU19QQVJBTUVURVIgQU1CSUdVT1VTX0FMSUFTICcgK1xuICAgICdJTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UgSU5WQUxJRF9DT0xVTU5fREVGSU5JVElPTiBJTlZBTElEX0NVUlNPUl9ERUZJTklUSU9OICcgK1xuICAgICdJTlZBTElEX0RBVEFCQVNFX0RFRklOSVRJT04gSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9OICcgK1xuICAgICdJTlZBTElEX1BSRVBBUkVEX1NUQVRFTUVOVF9ERUZJTklUSU9OIElOVkFMSURfU0NIRU1BX0RFRklOSVRJT04gSU5WQUxJRF9UQUJMRV9ERUZJTklUSU9OICcgK1xuICAgICdJTlZBTElEX09CSkVDVF9ERUZJTklUSU9OIFdJVEhfQ0hFQ0tfT1BUSU9OX1ZJT0xBVElPTiBJTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTIERJU0tfRlVMTCAnICtcbiAgICAnT1VUX09GX01FTU9SWSBUT09fTUFOWV9DT05ORUNUSU9OUyBDT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEIFBST0dSQU1fTElNSVRfRVhDRUVERUQgJyArXG4gICAgJ1NUQVRFTUVOVF9UT09fQ09NUExFWCBUT09fTUFOWV9DT0xVTU5TIFRPT19NQU5ZX0FSR1VNRU5UUyBPQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSAnICtcbiAgICAnT0JKRUNUX0lOX1VTRSBDQU5UX0NIQU5HRV9SVU5USU1FX1BBUkFNIExPQ0tfTk9UX0FWQUlMQUJMRSBPUEVSQVRPUl9JTlRFUlZFTlRJT04gJyArXG4gICAgJ1FVRVJZX0NBTkNFTEVEIEFETUlOX1NIVVRET1dOIENSQVNIX1NIVVRET1dOIENBTk5PVF9DT05ORUNUX05PVyBEQVRBQkFTRV9EUk9QUEVEICcgK1xuICAgICdTWVNURU1fRVJST1IgSU9fRVJST1IgVU5ERUZJTkVEX0ZJTEUgRFVQTElDQVRFX0ZJTEUgU05BUFNIT1RfVE9PX09MRCBDT05GSUdfRklMRV9FUlJPUiAnICtcbiAgICAnTE9DS19GSUxFX0VYSVNUUyBGRFdfRVJST1IgRkRXX0NPTFVNTl9OQU1FX05PVF9GT1VORCBGRFdfRFlOQU1JQ19QQVJBTUVURVJfVkFMVUVfTkVFREVEICcgK1xuICAgICdGRFdfRlVOQ1RJT05fU0VRVUVOQ0VfRVJST1IgRkRXX0lOQ09OU0lTVEVOVF9ERVNDUklQVE9SX0lORk9STUFUSU9OICcgK1xuICAgICdGRFdfSU5WQUxJRF9BVFRSSUJVVEVfVkFMVUUgRkRXX0lOVkFMSURfQ09MVU1OX05BTUUgRkRXX0lOVkFMSURfQ09MVU1OX05VTUJFUiAnICtcbiAgICAnRkRXX0lOVkFMSURfREFUQV9UWVBFIEZEV19JTlZBTElEX0RBVEFfVFlQRV9ERVNDUklQVE9SUyAnICtcbiAgICAnRkRXX0lOVkFMSURfREVTQ1JJUFRPUl9GSUVMRF9JREVOVElGSUVSIEZEV19JTlZBTElEX0hBTkRMRSBGRFdfSU5WQUxJRF9PUFRJT05fSU5ERVggJyArXG4gICAgJ0ZEV19JTlZBTElEX09QVElPTl9OQU1FIEZEV19JTlZBTElEX1NUUklOR19MRU5HVEhfT1JfQlVGRkVSX0xFTkdUSCAnICtcbiAgICAnRkRXX0lOVkFMSURfU1RSSU5HX0ZPUk1BVCBGRFdfSU5WQUxJRF9VU0VfT0ZfTlVMTF9QT0lOVEVSIEZEV19UT09fTUFOWV9IQU5ETEVTICcgK1xuICAgICdGRFdfT1VUX09GX01FTU9SWSBGRFdfTk9fU0NIRU1BUyBGRFdfT1BUSU9OX05BTUVfTk9UX0ZPVU5EIEZEV19SRVBMWV9IQU5ETEUgJyArXG4gICAgJ0ZEV19TQ0hFTUFfTk9UX0ZPVU5EIEZEV19UQUJMRV9OT1RfRk9VTkQgRkRXX1VOQUJMRV9UT19DUkVBVEVfRVhFQ1VUSU9OICcgK1xuICAgICdGRFdfVU5BQkxFX1RPX0NSRUFURV9SRVBMWSBGRFdfVU5BQkxFX1RPX0VTVEFCTElTSF9DT05ORUNUSU9OIFBMUEdTUUxfRVJST1IgJyArXG4gICAgJ1JBSVNFX0VYQ0VQVElPTiBOT19EQVRBX0ZPVU5EIFRPT19NQU5ZX1JPV1MgQVNTRVJUX0ZBSUxVUkUgSU5URVJOQUxfRVJST1IgREFUQV9DT1JSVVBURUQgJyArXG4gICAgJ0lOREVYX0NPUlJVUFRFRCAnO1xuXG4gIHZhciBGVU5DVElPTlMgPVxuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1hZ2dyZWdhdGUuaHRtbFxuICAgICdBUlJBWV9BR0cgQVZHIEJJVF9BTkQgQklUX09SIEJPT0xfQU5EIEJPT0xfT1IgQ09VTlQgRVZFUlkgSlNPTl9BR0cgSlNPTkJfQUdHIEpTT05fT0JKRUNUX0FHRyAnICtcbiAgICAnSlNPTkJfT0JKRUNUX0FHRyBNQVggTUlOIE1PREUgU1RSSU5HX0FHRyBTVU0gWE1MQUdHICcgK1xuICAgICdDT1JSIENPVkFSX1BPUCBDT1ZBUl9TQU1QIFJFR1JfQVZHWCBSRUdSX0FWR1kgUkVHUl9DT1VOVCBSRUdSX0lOVEVSQ0VQVCBSRUdSX1IyIFJFR1JfU0xPUEUgJyArXG4gICAgJ1JFR1JfU1hYIFJFR1JfU1hZIFJFR1JfU1lZIFNURERFViBTVERERVZfUE9QIFNURERFVl9TQU1QIFZBUklBTkNFIFZBUl9QT1AgVkFSX1NBTVAgJyArXG4gICAgJ1BFUkNFTlRJTEVfQ09OVCBQRVJDRU5USUxFX0RJU0MgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXdpbmRvdy5odG1sXG4gICAgJ1JPV19OVU1CRVIgUkFOSyBERU5TRV9SQU5LIFBFUkNFTlRfUkFOSyBDVU1FX0RJU1QgTlRJTEUgTEFHIExFQUQgRklSU1RfVkFMVUUgTEFTVF9WQUxVRSBOVEhfVkFMVUUgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWNvbXBhcmlzb24uaHRtbFxuICAgICdOVU1fTk9OTlVMTFMgTlVNX05VTExTICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1tYXRoLmh0bWxcbiAgICAnQUJTIENCUlQgQ0VJTCBDRUlMSU5HIERFR1JFRVMgRElWIEVYUCBGTE9PUiBMTiBMT0cgTU9EIFBJIFBPV0VSIFJBRElBTlMgUk9VTkQgU0NBTEUgU0lHTiBTUVJUICcgK1xuICAgICdUUlVOQyBXSURUSF9CVUNLRVQgJyArXG4gICAgJ1JBTkRPTSBTRVRTRUVEICcgK1xuICAgICdBQ09TIEFDT1NEIEFTSU4gQVNJTkQgQVRBTiBBVEFORCBBVEFOMiBBVEFOMkQgQ09TIENPU0QgQ09UIENPVEQgU0lOIFNJTkQgVEFOIFRBTkQgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXN0cmluZy5odG1sXG4gICAgJ0JJVF9MRU5HVEggQ0hBUl9MRU5HVEggQ0hBUkFDVEVSX0xFTkdUSCBMT1dFUiBPQ1RFVF9MRU5HVEggT1ZFUkxBWSBQT1NJVElPTiBTVUJTVFJJTkcgVFJFQVQgVFJJTSBVUFBFUiAnICtcbiAgICAnQVNDSUkgQlRSSU0gQ0hSIENPTkNBVCBDT05DQVRfV1MgQ09OVkVSVCBDT05WRVJUX0ZST00gQ09OVkVSVF9UTyBERUNPREUgRU5DT0RFIElOSVRDQVAnICtcbiAgICAnTEVGVCBMRU5HVEggTFBBRCBMVFJJTSBNRDUgUEFSU0VfSURFTlQgUEdfQ0xJRU5UX0VOQ09ESU5HIFFVT1RFX0lERU5UfDEwIFFVT1RFX0xJVEVSQUx8MTAgJyArXG4gICAgJ1FVT1RFX05VTExBQkxFfDEwIFJFR0VYUF9NQVRDSCBSRUdFWFBfTUFUQ0hFUyBSRUdFWFBfUkVQTEFDRSBSRUdFWFBfU1BMSVRfVE9fQVJSQVkgJyArXG4gICAgJ1JFR0VYUF9TUExJVF9UT19UQUJMRSBSRVBFQVQgUkVQTEFDRSBSRVZFUlNFIFJJR0hUIFJQQUQgUlRSSU0gU1BMSVRfUEFSVCBTVFJQT1MgU1VCU1RSICcgK1xuICAgICdUT19BU0NJSSBUT19IRVggVFJBTlNMQVRFICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1iaW5hcnlzdHJpbmcuaHRtbFxuICAgICdPQ1RFVF9MRU5HVEggR0VUX0JJVCBHRVRfQllURSBTRVRfQklUIFNFVF9CWVRFICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1mb3JtYXR0aW5nLmh0bWxcbiAgICAnVE9fQ0hBUiBUT19EQVRFIFRPX05VTUJFUiBUT19USU1FU1RBTVAgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWRhdGV0aW1lLmh0bWxcbiAgICAnQUdFIENMT0NLX1RJTUVTVEFNUHwxMCBEQVRFX1BBUlQgREFURV9UUlVOQyBJU0ZJTklURSBKVVNUSUZZX0RBWVMgSlVTVElGWV9IT1VSUyBKVVNUSUZZX0lOVEVSVkFMICcgK1xuICAgICdNQUtFX0RBVEUgTUFLRV9JTlRFUlZBTHwxMCBNQUtFX1RJTUUgTUFLRV9USU1FU1RBTVB8MTAgTUFLRV9USU1FU1RBTVBUWnwxMCBOT1cgU1RBVEVNRU5UX1RJTUVTVEFNUHwxMCAnICtcbiAgICAnVElNRU9GREFZIFRSQU5TQUNUSU9OX1RJTUVTVEFNUHwxMCAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtZW51bS5odG1sXG4gICAgJ0VOVU1fRklSU1QgRU5VTV9MQVNUIEVOVU1fUkFOR0UgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWdlb21ldHJ5Lmh0bWxcbiAgICAnQVJFQSBDRU5URVIgRElBTUVURVIgSEVJR0hUIElTQ0xPU0VEIElTT1BFTiBOUE9JTlRTIFBDTE9TRSBQT1BFTiBSQURJVVMgV0lEVEggJyArXG4gICAgJ0JPWCBCT1VORF9CT1ggQ0lSQ0xFIExJTkUgTFNFRyBQQVRIIFBPTFlHT04gJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLW5ldC5odG1sXG4gICAgJ0FCQlJFViBCUk9BRENBU1QgSE9TVCBIT1NUTUFTSyBNQVNLTEVOIE5FVE1BU0sgTkVUV09SSyBTRVRfTUFTS0xFTiBURVhUIElORVRfU0FNRV9GQU1JTFknICtcbiAgICAnSU5FVF9NRVJHRSBNQUNBRERSOF9TRVQ3QklUICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy10ZXh0c2VhcmNoLmh0bWxcbiAgICAnQVJSQVlfVE9fVFNWRUNUT1IgR0VUX0NVUlJFTlRfVFNfQ09ORklHIE5VTU5PREUgUExBSU5UT19UU1FVRVJZIFBIUkFTRVRPX1RTUVVFUlkgV0VCU0VBUkNIX1RPX1RTUVVFUlkgJyArXG4gICAgJ1FVRVJZVFJFRSBTRVRXRUlHSFQgU1RSSVAgVE9fVFNRVUVSWSBUT19UU1ZFQ1RPUiBKU09OX1RPX1RTVkVDVE9SIEpTT05CX1RPX1RTVkVDVE9SIFRTX0RFTEVURSAnICtcbiAgICAnVFNfRklMVEVSIFRTX0hFQURMSU5FIFRTX1JBTksgVFNfUkFOS19DRCBUU19SRVdSSVRFIFRTUVVFUllfUEhSQVNFIFRTVkVDVE9SX1RPX0FSUkFZICcgK1xuICAgICdUU1ZFQ1RPUl9VUERBVEVfVFJJR0dFUiBUU1ZFQ1RPUl9VUERBVEVfVFJJR0dFUl9DT0xVTU4gJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXhtbC5odG1sXG4gICAgJ1hNTENPTU1FTlQgWE1MQ09OQ0FUIFhNTEVMRU1FTlQgWE1MRk9SRVNUIFhNTFBJIFhNTFJPT1QgJyArXG4gICAgJ1hNTEVYSVNUUyBYTUxfSVNfV0VMTF9GT1JNRUQgWE1MX0lTX1dFTExfRk9STUVEX0RPQ1VNRU5UIFhNTF9JU19XRUxMX0ZPUk1FRF9DT05URU5UICcgK1xuICAgICdYUEFUSCBYUEFUSF9FWElTVFMgWE1MVEFCTEUgWE1MTkFNRVNQQUNFUyAnICtcbiAgICAnVEFCTEVfVE9fWE1MIFRBQkxFX1RPX1hNTFNDSEVNQSBUQUJMRV9UT19YTUxfQU5EX1hNTFNDSEVNQSAnICtcbiAgICAnUVVFUllfVE9fWE1MIFFVRVJZX1RPX1hNTFNDSEVNQSBRVUVSWV9UT19YTUxfQU5EX1hNTFNDSEVNQSAnICtcbiAgICAnQ1VSU09SX1RPX1hNTCBDVVJTT1JfVE9fWE1MU0NIRU1BICcgK1xuICAgICdTQ0hFTUFfVE9fWE1MIFNDSEVNQV9UT19YTUxTQ0hFTUEgU0NIRU1BX1RPX1hNTF9BTkRfWE1MU0NIRU1BICcgK1xuICAgICdEQVRBQkFTRV9UT19YTUwgREFUQUJBU0VfVE9fWE1MU0NIRU1BIERBVEFCQVNFX1RPX1hNTF9BTkRfWE1MU0NIRU1BICcgK1xuICAgICdYTUxBVFRSSUJVVEVTICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1qc29uLmh0bWxcbiAgICAnVE9fSlNPTiBUT19KU09OQiBBUlJBWV9UT19KU09OIFJPV19UT19KU09OIEpTT05fQlVJTERfQVJSQVkgSlNPTkJfQlVJTERfQVJSQVkgSlNPTl9CVUlMRF9PQkpFQ1QgJyArXG4gICAgJ0pTT05CX0JVSUxEX09CSkVDVCBKU09OX09CSkVDVCBKU09OQl9PQkpFQ1QgSlNPTl9BUlJBWV9MRU5HVEggSlNPTkJfQVJSQVlfTEVOR1RIIEpTT05fRUFDSCAnICtcbiAgICAnSlNPTkJfRUFDSCBKU09OX0VBQ0hfVEVYVCBKU09OQl9FQUNIX1RFWFQgSlNPTl9FWFRSQUNUX1BBVEggSlNPTkJfRVhUUkFDVF9QQVRIICcgK1xuICAgICdKU09OX09CSkVDVF9LRVlTIEpTT05CX09CSkVDVF9LRVlTIEpTT05fUE9QVUxBVEVfUkVDT1JEIEpTT05CX1BPUFVMQVRFX1JFQ09SRCBKU09OX1BPUFVMQVRFX1JFQ09SRFNFVCAnICtcbiAgICAnSlNPTkJfUE9QVUxBVEVfUkVDT1JEU0VUIEpTT05fQVJSQVlfRUxFTUVOVFMgSlNPTkJfQVJSQVlfRUxFTUVOVFMgSlNPTl9BUlJBWV9FTEVNRU5UU19URVhUICcgK1xuICAgICdKU09OQl9BUlJBWV9FTEVNRU5UU19URVhUIEpTT05fVFlQRU9GIEpTT05CX1RZUEVPRiBKU09OX1RPX1JFQ09SRCBKU09OQl9UT19SRUNPUkQgSlNPTl9UT19SRUNPUkRTRVQgJyArXG4gICAgJ0pTT05CX1RPX1JFQ09SRFNFVCBKU09OX1NUUklQX05VTExTIEpTT05CX1NUUklQX05VTExTIEpTT05CX1NFVCBKU09OQl9JTlNFUlQgSlNPTkJfUFJFVFRZICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1zZXF1ZW5jZS5odG1sXG4gICAgJ0NVUlJWQUwgTEFTVFZBTCBORVhUVkFMIFNFVFZBTCAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtY29uZGl0aW9uYWwuaHRtbFxuICAgICdDT0FMRVNDRSBOVUxMSUYgR1JFQVRFU1QgTEVBU1QgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWFycmF5Lmh0bWxcbiAgICAnQVJSQVlfQVBQRU5EIEFSUkFZX0NBVCBBUlJBWV9ORElNUyBBUlJBWV9ESU1TIEFSUkFZX0ZJTEwgQVJSQVlfTEVOR1RIIEFSUkFZX0xPV0VSIEFSUkFZX1BPU0lUSU9OICcgK1xuICAgICdBUlJBWV9QT1NJVElPTlMgQVJSQVlfUFJFUEVORCBBUlJBWV9SRU1PVkUgQVJSQVlfUkVQTEFDRSBBUlJBWV9UT19TVFJJTkcgQVJSQVlfVVBQRVIgQ0FSRElOQUxJVFkgJyArXG4gICAgJ1NUUklOR19UT19BUlJBWSBVTk5FU1QgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXJhbmdlLmh0bWxcbiAgICAnSVNFTVBUWSBMT1dFUl9JTkMgVVBQRVJfSU5DIExPV0VSX0lORiBVUFBFUl9JTkYgUkFOR0VfTUVSR0UgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXNyZi5odG1sXG4gICAgJ0dFTkVSQVRFX1NFUklFUyBHRU5FUkFURV9TVUJTQ1JJUFRTICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1pbmZvLmh0bWxcbiAgICAnQ1VSUkVOVF9EQVRBQkFTRSBDVVJSRU5UX1FVRVJZIENVUlJFTlRfU0NIRU1BfDEwIENVUlJFTlRfU0NIRU1BU3wxMCBJTkVUX0NMSUVOVF9BRERSIElORVRfQ0xJRU5UX1BPUlQgJyArXG4gICAgJ0lORVRfU0VSVkVSX0FERFIgSU5FVF9TRVJWRVJfUE9SVCBST1dfU0VDVVJJVFlfQUNUSVZFIEZPUk1BVF9UWVBFICcgK1xuICAgICdUT19SRUdDTEFTUyBUT19SRUdQUk9DIFRPX1JFR1BST0NFRFVSRSBUT19SRUdPUEVSIFRPX1JFR09QRVJBVE9SIFRPX1JFR1RZUEUgVE9fUkVHTkFNRVNQQUNFIFRPX1JFR1JPTEUgJyArXG4gICAgJ0NPTF9ERVNDUklQVElPTiBPQkpfREVTQ1JJUFRJT04gU0hPQkpfREVTQ1JJUFRJT04gJyArXG4gICAgJ1RYSURfQ1VSUkVOVCBUWElEX0NVUlJFTlRfSUZfQVNTSUdORUQgVFhJRF9DVVJSRU5UX1NOQVBTSE9UIFRYSURfU05BUFNIT1RfWElQIFRYSURfU05BUFNIT1RfWE1BWCAnICtcbiAgICAnVFhJRF9TTkFQU0hPVF9YTUlOIFRYSURfVklTSUJMRV9JTl9TTkFQU0hPVCBUWElEX1NUQVRVUyAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtYWRtaW4uaHRtbFxuICAgICdDVVJSRU5UX1NFVFRJTkcgU0VUX0NPTkZJRyBCUklOX1NVTU1BUklaRV9ORVdfVkFMVUVTIEJSSU5fU1VNTUFSSVpFX1JBTkdFIEJSSU5fREVTVU1NQVJJWkVfUkFOR0UgJyArXG4gICAgJ0dJTl9DTEVBTl9QRU5ESU5HX0xJU1QgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXRyaWdnZXIuaHRtbFxuICAgICdTVVBQUkVTU19SRURVTkRBTlRfVVBEQVRFU19UUklHR0VSICcgK1xuICAgIC8vIGlodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzL2RldmVsL3N0YXRpYy9sby1mdW5jcy5odG1sXG4gICAgJ0xPX0ZST01fQllURUEgTE9fUFVUIExPX0dFVCBMT19DUkVBVCBMT19DUkVBVEUgTE9fVU5MSU5LIExPX0lNUE9SVCBMT19FWFBPUlQgTE9SRUFEIExPV1JJVEUgJyArXG4gICAgLy9cbiAgICAnR1JPVVBJTkcgQ0FTVCAnO1xuXG4gICAgdmFyIEZVTkNUSU9OU19SRSA9XG4gICAgICBGVU5DVElPTlMudHJpbSgpXG4gICAgICAgICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAgICAgICAgLm1hcCggZnVuY3Rpb24odmFsKSB7IHJldHVybiB2YWwuc3BsaXQoJ3wnKVswXTsgfSApXG4gICAgICAgICAgICAgICAuam9pbignfCcpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWxpYXNlczogWydwb3N0Z3JlcycsJ3Bvc3RncmVzcWwnXSxcbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgU1FMX0tXICsgUExQR1NRTF9LVyArIFJPTEVfQVRUUlMsXG4gICAgICAgICAgYnVpbHRfaW46XG4gICAgICAgICAgICBTUUxfQkkgKyBQTFBHU1FMX0JJICsgUExQR1NRTF9FWENFUFRJT05TLFxuICAgICAgICB9LFxuICAgICAgICAvLyBGb3JiaWQgc29tZSBjdW5zdHJ1Y3RzIGZyb20gb3RoZXIgbGFuZ3VhZ2VzIHRvIGltcHJvdmUgYXV0b2RldGVjdC4gSW4gZmFjdFxuICAgICAgICAvLyBcIlthLXpdOlwiIGlzIGxlZ2FsIChhcyBwYXJ0IG9mIGFycmF5IHNsaWNlKSwgYnV0IGltcHJvYmFiYWwuXG4gICAgICAgIGlsbGVnYWw6IC86PT18XFxXXFxzKlxcKFxcKnwoXnxcXHMpXFwkW2Etel18e3t8W2Etel06XFxzKiR8XFwuXFwuXFwufFRPOnxETzovLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIC8vIHNwZWNpYWwgaGFuZGxpbmcgb2Ygc29tZSB3b3Jkcywgd2hpY2ggYXJlIHJlc2VydmVkIG9ubHkgaW4gc29tZSBjb250ZXh0c1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlRFWFRcXHMqU0VBUkNIXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKFBSSU1BUll8Rk9SRUlHTnxGT1IoXFxzK05PKT8pXFxzK0tFWVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlBBUkFMTEVMXFxzKyhVTlNBRkV8UkVTVFJJQ1RFRHxTQUZFKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNUT1JBR0VcXHMrKFBMQUlOfEVYVEVSTkFMfEVYVEVOREVEfE1BSU4pXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiTUFUQ0hcXHMrKEZVTEx8UEFSVElBTHxTSU1QTEUpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiTlVMTFNcXHMrKEZJUlNUfExBU1QpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiRVZFTlRcXHMrVFJJR0dFUlxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihNQVBQSU5HfE9SKVxccytSRVBMQUNFXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKEZST018VE8pXFxzKyhQUk9HUkFNfFNURElOfFNURE9VVClcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoU0hBUkV8RVhDTFVTSVZFKVxccytNT0RFXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKExFRlR8UklHSFQpXFxzKyhPVVRFUlxccyspP0pPSU5cXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoRkVUQ0h8TU9WRSlcXHMrKE5FWFR8UFJJT1J8RklSU1R8TEFTVHxBQlNPTFVURXxSRUxBVElWRXxGT1JXQVJEfEJBQ0tXQVJEKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlBSRVNFUlZFXFxzK1JPV1NcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJESVNDQVJEXFxzK1BMQU5TXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiUkVGRVJFTkNJTkdcXHMrKE9MRHxORVcpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiU0tJUFxccytMT0NLRURcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJHUk9VUElOR1xccytTRVRTXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKEJJTkFSWXxJTlNFTlNJVElWRXxTQ1JPTEx8Tk9cXHMrU0NST0xMKVxccysoQ1VSU09SfEZPUilcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoV0lUSHxXSVRIT1VUKVxccytIT0xEXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiV0lUSFxccysoQ0FTQ0FERUR8TE9DQUwpXFxzK0NIRUNLXFxzK09QVElPTlxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkVYQ0xVREVcXHMrKFRJRVN8Tk9cXHMrT1RIRVJTKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkZPUk1BVFxccysoVEVYVHxYTUx8SlNPTnxZQU1MKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNFVFxccysoKFNFU1NJT058TE9DQUwpXFxzKyk/TkFNRVNcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJJU1xccysoTk9UXFxzKyk/VU5LTk9XTlxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNFQ1VSSVRZXFxzK0xBQkVMXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiU1RBTkRBTE9ORVxccysoWUVTfE5PfE5PXFxzK1ZBTFVFKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYldJVEhcXHMrKE5PXFxzKyk/REFUQVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihGT1JFSUdOfFNFVClcXHMrREFUQVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNFVFxccysoQ0FUQUxPR3xDT05TVFJBSU5UUylcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoV0lUSHxGT1IpXFxzK09SRElOQUxJVFlcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJJU1xccysoTk9UXFxzKyk/RE9DVU1FTlRcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJYTUxcXHMrT1BUSU9OXFxzKyhET0NVTUVOVHxDT05URU5UKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihTVFJJUHxQUkVTRVJWRSlcXHMrV0hJVEVTUEFDRVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYk5PXFxzKyhBQ1RJT058TUFYVkFMVUV8TUlOVkFMVUUpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiUEFSVElUSU9OXFxzK0JZXFxzKyhSQU5HRXxMSVNUfEhBU0gpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiQVRcXHMrVElNRVxccytaT05FXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiR1JBTlRFRFxccytCWVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlJFVFVSTlxccysoUVVFUll8TkVYVClcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoQVRUQUNIfERFVEFDSClcXHMrUEFSVElUSU9OXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiRk9SQ0VcXHMrUk9XXFxzK0xFVkVMXFxzK1NFQ1VSSVRZXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKElOQ0xVRElOR3xFWENMVURJTkcpXFxzKyhDT01NRU5UU3xDT05TVFJBSU5UU3xERUZBVUxUU3xJREVOVElUWXxJTkRFWEVTfFNUQVRJU1RJQ1N8U1RPUkFHRXxBTEwpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiQVNcXHMrKEFTU0lHTk1FTlR8SU1QTElDSVR8UEVSTUlTU0lWRXxSRVNUUklDVElWRXxFTlVNfFJBTkdFKVxcYi8gfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gZnVuY3Rpb25zIG5hbWVkIGFzIGtleXdvcmRzLCBmb2xsb3dlZCBieSAnKCdcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYihGT1JNQVR8RkFNSUxZfFZFUlNJT04pXFxzKlxcKC8sXG4gICAgICAgICAgICAvL2tleXdvcmRzOiB7IGJ1aWx0X2luOiAnRk9STUFUIEZBTUlMWSBWRVJTSU9OJyB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBJTkNMVURFICggLi4uICkgaW4gaW5kZXhfcGFyYW1ldGVycyBpbiBDUkVBVEUgVEFCTEVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYklOQ0xVREVcXHMqXFwoLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiAnSU5DTFVERSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIG5vdCBoaWdobGlnaHQgUkFOR0UgaWYgbm90IGluIGZyYW1lX2NsYXVzZSAobm90IDEwMCUgY29ycmVjdCwgYnV0IHNlZW1zIHNhdGlzZmFjdG9yeSlcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYlJBTkdFKD8hXFxzKihCRVRXRUVOfFVOQk9VTkRFRHxDVVJSRU5UfFstMC05XSspKS9cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIGRpc2FibGUgaGlnaGxpZ2h0aW5nIGluIGNvbW1hbmRzIENSRUFURSBBR0dSRUdBVEUvQ09MTEFUSU9OL0RBVEFCQVNFL09QRVJUT1IvVEVYVCBTRUFSQ0ggLi4uL1RZUEVcbiAgICAgICAgICAvLyBhbmQgaW4gUEwvcGdTUUwgUkFJU0UgLi4uIFVTSU5HXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGIoVkVSU0lPTnxPV05FUnxURU1QTEFURXxUQUJMRVNQQUNFfENPTk5FQ1RJT05cXHMrTElNSVR8UFJPQ0VEVVJFfFJFU1RSSUNUfEpPSU58UEFSU0VSfENPUFl8U1RBUlR8RU5EfENPTExBVElPTnxJTlBVVHxBTkFMWVpFfFNUT1JBR0V8TElLRXxERUZBVUxUfERFTElNSVRFUnxFTkNPRElOR3xDT0xVTU58Q09OU1RSQUlOVHxUQUJMRXxTQ0hFTUEpXFxzKj0vXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBQR19zbXRoOyBIQVNfc29tZV9QUklWSUxFR0VcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvL2NsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFxiKFBHX1xcdys/fEhBU19bQS1aX10rX1BSSVZJTEVHRSlcXGIvLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gZXh0cmFjdFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFxiRVhUUkFDVFxccypcXCgvLFxuICAgICAgICAgICAgZW5kOiAvXFxiRlJPTVxcYi8sXG4gICAgICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICAvL2J1aWx0X2luOiAnRVhUUkFDVCcsXG4gICAgICAgICAgICAgIHR5cGU6ICAgICAnQ0VOVFVSWSBEQVkgREVDQURFIERPVyBET1kgRVBPQ0ggSE9VUiBJU09ET1cgSVNPWUVBUiBNSUNST1NFQ09ORFMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnTUlMTEVOTklVTSBNSUxMSVNFQ09ORFMgTUlOVVRFIE1PTlRIIFFVQVJURVIgU0VDT05EIFRJTUVaT05FIFRJTUVaT05FX0hPVVIgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnVElNRVpPTkVfTUlOVVRFIFdFRUsgWUVBUidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIHhtbGVsZW1lbnQsIHhtbHBpIC0gc3BlY2lhbCBOQU1FXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGIoWE1MRUxFTUVOVHxYTUxQSSlcXHMqXFwoXFxzKk5BTUUvLFxuICAgICAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgICAgLy9idWlsdF9pbjogJ1hNTEVMRU1FTlQgWE1MUEknLFxuICAgICAgICAgICAgICBrZXl3b3JkOiAgJ05BTUUnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyB4bWxwYXJzZSwgeG1sc2VyaWFsaXplXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGIoWE1MUEFSU0V8WE1MU0VSSUFMSVpFKVxccypcXChcXHMqKERPQ1VNRU5UfENPTlRFTlQpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIC8vYnVpbHRfaW46ICdYTUxQQVJTRSBYTUxTRVJJQUxJWkUnLFxuICAgICAgICAgICAgICBrZXl3b3JkOiAgJ0RPQ1VNRU5UIENPTlRFTlQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBTZXF1ZW5jZXMuIFdlIGFjdHVhbGx5IHNraXAgZXZlcnl0aGluZyBiZXR3ZWVuIENBQ0hFfElOQ1JFTUVOVHxNQVhWQUxVRXxNSU5WQUxVRSBhbmRcbiAgICAgICAgICAvLyBuZWFyZXN0IGZvbGxvd2luZyBudW1lcmljIGNvbnN0YW50LiBXaXRob3V0IHdpdGggdHJpY2sgd2UgZmluZCBhIGxvdCBvZiBcImtleXdvcmRzXCJcbiAgICAgICAgICAvLyBpbiAnYXZyYXNtJyBhdXRvZGV0ZWN0aW9uIHRlc3QuLi5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnQ0FDSEUgSU5DUkVNRU5UIE1BWFZBTFVFIE1JTlZBTFVFJyxcbiAgICAgICAgICAgIGVuZDogaGxqcy5DX05VTUJFUl9SRSxcbiAgICAgICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGtleXdvcmRzOiAnQlkgQ0FDSEUgSU5DUkVNRU5UIE1BWFZBTFVFIE1JTlZBTFVFJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gV0lUSHxXSVRIT1VUIFRJTUUgWk9ORSBhcyBwYXJ0IG9mIGRhdGF0eXBlXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogL1xcYihXSVRIfFdJVEhPVVQpXFxzK1RJTUVcXHMrWk9ORVxcYi9cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIElOVEVSVkFMIG9wdGlvbmFsIGZpZWxkc1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46IC9cXGJJTlRFUlZBTFxccysoWUVBUnxNT05USHxEQVl8SE9VUnxNSU5VVEV8U0VDT05EKShcXHMrVE9cXHMrKE1PTlRIfEhPVVJ8TUlOVVRFfFNFQ09ORCkpP1xcYi9cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIFBzZXVkby10eXBlcyB3aGljaCBhbGxvd2VkIG9ubHkgYXMgcmV0dXJuIHR5cGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYlJFVFVSTlNcXHMrKExBTkdVQUdFX0hBTkRMRVJ8VFJJR0dFUnxFVkVOVF9UUklHR0VSfEZEV19IQU5ETEVSfElOREVYX0FNX0hBTkRMRVJ8VFNNX0hBTkRMRVIpXFxiLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIGtleXdvcmQ6ICdSRVRVUk5TJyxcbiAgICAgICAgICAgICAgdHlwZTogJ0xBTkdVQUdFX0hBTkRMRVIgVFJJR0dFUiBFVkVOVF9UUklHR0VSIEZEV19IQU5ETEVSIElOREVYX0FNX0hBTkRMRVIgVFNNX0hBTkRMRVInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBLbm93biBmdW5jdGlvbnMgLSBvbmx5IHdoZW4gZm9sbG93ZWQgYnkgJygnXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYignICsgRlVOQ1RJT05TX1JFICsgJylcXFxccypcXFxcKCdcbiAgICAgICAgICAgIC8va2V5d29yZHM6IHsgYnVpbHRfaW46IEZVTkNUSU9OUyB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBUeXBlc1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXC4oJyArIFRZUEVTX1JFICsgJylcXFxcYicgLy8gcHJldmVudCBoaWdobGlnaHQgYXMgdHlwZSwgc2F5LCAnb2lkJyBpbiAncGdjbGFzcy5vaWQnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBUWVBFU19SRSArICcpXFxcXHMrUEFUSFxcXFxiJywgLy8gaW4gWE1MVEFCTEVcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIGtleXdvcmQ6ICdQQVRIJywgLy8gaG9wZWZ1bGx5IG5vIG9uZSB3b3VsZCB1c2UgUEFUSCB0eXBlIGluIFhNTFRBQkxFLi4uXG4gICAgICAgICAgICAgIHR5cGU6IFRZUEVTLnJlcGxhY2UoJ1BBVEggJywnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYignICsgVFlQRVNfUkUgKyAnKVxcXFxiJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gU3RyaW5ncywgc2VlIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL3NxbC1zeW50YXgtbGV4aWNhbC5odG1sI1NRTC1TWU5UQVgtQ09OU1RBTlRTXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJ31dXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICcoZXxFfHUmfFUmKVxcJycsIGVuZDogJ1xcJycsXG4gICAgICAgICAgICBjb250YWluczogW3tiZWdpbjogJ1xcXFxcXFxcLid9XSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBET0xMQVJfU1RSSU5HLFxuICAgICAgICAgICAgZW5kU2FtZUFzQmVnaW46IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgd2Ugd2FudCB0aGVtIGFsbCBleGNlcHQgU1FMOyBsaXN0ZWQgYXJlIHRob3NlIHdpdGgga25vd24gaW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgICAgICAgLy8gYW5kIFhNTCArIEpTT04ganVzdCBpbiBjYXNlXG4gICAgICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6IFsncGdzcWwnLCdwZXJsJywncHl0aG9uJywndGNsJywncicsJ2x1YScsJ2phdmEnLCdwaHAnLCdydWJ5JywnYmFzaCcsJ3NjaGVtZScsJ3htbCcsJ2pzb24nXSxcbiAgICAgICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBpZGVudGlmaWVycyBpbiBxdW90ZXNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgY29udGFpbnM6IFt7YmVnaW46ICdcIlwiJ31dXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIC8vIGNvbW1lbnRzXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBDT01NRU5UX01PREUsXG4gICAgICAgICAgLy8gUEwvcGdTUUwgc3RhZmZcbiAgICAgICAgICAvLyAlUk9XVFlQRSwgJVRZUEUsICRuXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICB7YmVnaW46ICclKFJPVyk/VFlQRScsIHJlbGV2YW5jZTogMTB9LCAvLyAlVFlQRSwgJVJPV1RZUEVcbiAgICAgICAgICAgICAge2JlZ2luOiAnXFxcXCRcXFxcZCsnfSwgICAgICAgICAgICAgICAgICAgIC8vICRuXG4gICAgICAgICAgICAgIHtiZWdpbjogJ14jXFxcXHcnLCBlbmQ6ICckJ30gICAgICAgICAgICAgLy8gI2NvbXBpbGVyIG9wdGlvblxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gPDxsYWJlbGVzPj5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46IExBQkVMLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGJlZ2luOiAnXFxcXCQrW2EtekEtWl9cXHg3Zi1cXHhmZl1bYS16QS1aMC05X1xceDdmLVxceGZmXSonXG4gIH07XG4gIHZhciBQUkVQUk9DRVNTT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAvPFxcPyhwaHApP3xcXD8+L1xuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFBSRVBST0NFU1NPUl0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdiXCInLCBlbmQ6ICdcIidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYlxcJycsIGVuZDogJ1xcJydcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSlcbiAgICBdXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7dmFyaWFudHM6IFtobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgaGxqcy5DX05VTUJFUl9NT0RFXX07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwaHAnLCAncGhwMycsICdwaHA0JywgJ3BocDUnLCAncGhwNicsICdwaHA3J10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhbmQgaW5jbHVkZV9vbmNlIGxpc3QgYWJzdHJhY3QgZ2xvYmFsIHByaXZhdGUgZWNobyBpbnRlcmZhY2UgYXMgc3RhdGljIGVuZHN3aXRjaCAnICtcbiAgICAgICdhcnJheSBudWxsIGlmIGVuZHdoaWxlIG9yIGNvbnN0IGZvciBlbmRmb3JlYWNoIHNlbGYgdmFyIHdoaWxlIGlzc2V0IHB1YmxpYyAnICtcbiAgICAgICdwcm90ZWN0ZWQgZXhpdCBmb3JlYWNoIHRocm93IGVsc2VpZiBpbmNsdWRlIF9fRklMRV9fIGVtcHR5IHJlcXVpcmVfb25jZSBkbyB4b3IgJyArXG4gICAgICAncmV0dXJuIHBhcmVudCBjbG9uZSB1c2UgX19DTEFTU19fIF9fTElORV9fIGVsc2UgYnJlYWsgcHJpbnQgZXZhbCBuZXcgJyArXG4gICAgICAnY2F0Y2ggX19NRVRIT0RfXyBjYXNlIGV4Y2VwdGlvbiBkZWZhdWx0IGRpZSByZXF1aXJlIF9fRlVOQ1RJT05fXyAnICtcbiAgICAgICdlbmRkZWNsYXJlIGZpbmFsIHRyeSBzd2l0Y2ggY29udGludWUgZW5kZm9yIGVuZGlmIGRlY2xhcmUgdW5zZXQgdHJ1ZSBmYWxzZSAnICtcbiAgICAgICd0cmFpdCBnb3RvIGluc3RhbmNlb2YgaW5zdGVhZG9mIF9fRElSX18gX19OQU1FU1BBQ0VfXyAnICtcbiAgICAgICd5aWVsZCBmaW5hbGx5JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnLy8nLCAnJCcsIHtjb250YWluczogW1BSRVBST0NFU1NPUl19KSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKicsXG4gICAgICAgICdcXFxcKi8nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ19faGFsdF9jb21waWxlci4rPzsnLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgIGtleXdvcmRzOiAnX19oYWx0X2NvbXBpbGVyJyxcbiAgICAgICAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC88PDxbJ1wiXT9cXHcrWydcIl0/JC8sIGVuZDogL15cXHcrOz8kLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge2JlZ2luOiAvXFwkXFx3Ky99LFxuICAgICAgICAgICAgICB7YmVnaW46IC9cXHtcXCQvLCBlbmQ6IC9cXH0vfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsIGJlZ2luOiAvXFwkdGhpc1xcYi9cbiAgICAgIH0sXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIHtcbiAgICAgICAgLy8gc3dhbGxvdyBjb21wb3NlZCBpZGVudGlmaWVycyB0byBhdm9pZCBwYXJzaW5nIHRoZW0gYXMga2V5d29yZHNcbiAgICAgICAgYmVnaW46IC8oOjp8LT4pK1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWjAtOV9cXHg3Zi1cXHhmZl0qL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9bO3tdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFwkfFxcXFxbfCUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsIGVuZDogJ3snLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvWzpcXChcXCRcIl0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25hbWVzcGFjZScsIGVuZDogJzsnLFxuICAgICAgICBpbGxlZ2FsOiAvW1xcLiddLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd1c2UnLCBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnPT4nIC8vIE5vIG1hcmt1cCwganVzdCBhIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9LFxuICAgICAgU1RSSU5HLFxuICAgICAgTlVNQkVSXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBkaXNhYmxlQXV0b2RldGVjdDogdHJ1ZVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhY3RvciBhZGRyZXNzb2YgYW5kIGFzIGJlIGJyZWFrIGNsYXNzIGNvbXBpbGVfZXJyb3IgY29tcGlsZV9pbnRyaW5zaWMgJyArXG4gICAgICAnY29uc3VtZSBjb250aW51ZSBkZWxlZ2F0ZSBkaWdlc3RvZiBkbyBlbHNlIGVsc2VpZiBlbWJlZCBlbmQgZXJyb3IgJyArXG4gICAgICAnZm9yIGZ1biBpZiBpZmRlZiBpbiBpbnRlcmZhY2UgaXMgaXNudCBsYW1iZGEgbGV0IG1hdGNoIG5ldyBub3Qgb2JqZWN0ICcgK1xuICAgICAgJ29yIHByaW1pdGl2ZSByZWNvdmVyIHJlcGVhdCByZXR1cm4gc3RydWN0IHRoZW4gdHJhaXQgdHJ5IHR5cGUgdW50aWwgJyArXG4gICAgICAndXNlIHZhciB3aGVyZSB3aGlsZSB3aXRoIHhvcicsXG4gICAgbWV0YTpcbiAgICAgICdpc28gdmFsIHRhZyB0cm4gYm94IHJlZicsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0aGlzIGZhbHNlIHRydWUnXG4gIH07XG5cbiAgdmFyIFRSSVBMRV9RVU9URV9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJyxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG5cbiAgdmFyIFFVT1RFX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgfTtcblxuICB2YXIgU0lOR0xFX1FVT1RFX0NIQVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFRZUEVfTkFNRSA9IHtcbiAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICBiZWdpbjogJ1xcXFxiXz9bQS1aXVtcXFxcd10qJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgUFJJTUVEX05BTUUgPSB7XG4gICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFwnJywgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIE5VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XSt8XFxcXGIwW2JCXVswMV0rfChcXFxcYlxcXFxkKyhfXFxcXGQrKT8oXFxcXC5cXFxcZCopP3xcXFxcLlxcXFxkKykoW2VFXVstK10/XFxcXGQrKT8pJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvKipcbiAgICogVGhlIGBGVU5DVElPTmAgYW5kIGBDTEFTU2AgbW9kZXMgd2VyZSBpbnRlbnRpb25hbGx5IHJlbW92ZWQgdG8gc2ltcGxpZnlcbiAgICogaGlnaGxpZ2h0aW5nIGFuZCBmaXggY2FzZXMgbGlrZVxuICAgKiBgYGBcbiAgICogaW50ZXJmYWNlIEl0ZXJhdG9yW0E6IEFdXG4gICAqICAgZnVuIGhhc19uZXh0KCk6IEJvb2xcbiAgICogICBmdW4gbmV4dCgpOiBBP1xuICAgKiBgYGBcbiAgICogd2hlcmUgaXQgaXMgdmFsaWQgdG8gaGF2ZSBhIGZ1bmN0aW9uIGhlYWQgd2l0aG91dCBhIGJvZHlcbiAgICovXG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFRZUEVfTkFNRSxcbiAgICAgIFRSSVBMRV9RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIFFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgU0lOR0xFX1FVT1RFX0NIQVJfTU9ERSxcbiAgICAgIFBSSU1FRF9OQU1FLFxuICAgICAgTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpe1xuICB2YXIgQkFDS1RJQ0tfRVNDQVBFID0ge1xuICAgIGJlZ2luOiBcImBbXFxcXHNcXFxcU11cIixcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiBcInZhcmlhYmxlXCIsXG4gICAgdmFyaWFudHM6IFt7IGJlZ2luOiAvXFwkW1xcd1xcZF1bXFx3XFxkXzpdKi8gfV0sXG4gIH07XG4gIHZhciBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogXCJsaXRlcmFsXCIsXG4gICAgYmVnaW46IC9cXCQobnVsbHx0cnVlfGZhbHNlKVxcYi8sXG4gIH07XG4gIHZhciBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiBcInN0cmluZ1wiLFxuICAgIHZhcmlhbnRzOiBbeyBiZWdpbjogL1wiLywgZW5kOiAvXCIvIH0sIHsgYmVnaW46IC9AXCIvLCBlbmQ6IC9eXCJALyB9XSxcbiAgICBjb250YWluczogW1xuICAgICAgQkFDS1RJQ0tfRVNDQVBFLFxuICAgICAgVkFSLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IFwidmFyaWFibGVcIixcbiAgICAgICAgYmVnaW46IC9cXCRbQS16XS8sXG4gICAgICAgIGVuZDogL1teQS16XS8sXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG4gIHZhciBBUE9TX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6IFwic3RyaW5nXCIsXG4gICAgdmFyaWFudHM6IFt7IGJlZ2luOiAvJy8sIGVuZDogLycvIH0sIHsgYmVnaW46IC9AJy8sIGVuZDogL14nQC8gfV0sXG4gIH07XG5cbiAgdmFyIFBTX0hFTFBUQUdTID0ge1xuICAgIGNsYXNzTmFtZTogXCJkb2N0YWdcIixcbiAgICB2YXJpYW50czogW1xuICAgICAgLyogbm8gcGFyYW1hdGVyIGhlbHAgdGFncyAqL1xuXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwuKHN5bm9wc2lzfGRlc2NyaXB0aW9ufGV4YW1wbGV8aW5wdXRzfG91dHB1dHN8bm90ZXN8bGlua3xjb21wb25lbnR8cm9sZXxmdW5jdGlvbmFsaXR5KS8sXG4gICAgICB9LFxuICAgICAgLyogb25lIHBhcmFtZXRlciBoZWxwIHRhZ3MgKi9cbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXC4ocGFyYW1ldGVyfGZvcndhcmRoZWxwdGFyZ2V0bmFtZXxmb3J3YXJkaGVscGNhdGVnb3J5fHJlbW90ZWhlbHBydW5zcGFjZXxleHRlcm5hbGhlbHApXFxzK1xcUysvLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICB2YXIgUFNfQ09NTUVOVCA9IGhsanMuaW5oZXJpdChobGpzLkNPTU1FTlQobnVsbCwgbnVsbCksIHtcbiAgICB2YXJpYW50czogW1xuICAgICAgLyogc2luZ2xlLWxpbmUgY29tbWVudCAqL1xuICAgICAgeyBiZWdpbjogLyMvLCBlbmQ6IC8kLyB9LFxuICAgICAgLyogbXVsdGktbGluZSBjb21tZW50ICovXG4gICAgICB7IGJlZ2luOiAvPCMvLCBlbmQ6IC8jPi8gfSxcbiAgICBdLFxuICAgIGNvbnRhaW5zOiBbUFNfSEVMUFRBR1NdLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFtcInBzXCIsIFwicHMxXCJdLFxuICAgIGxleGVtZXM6IC8tP1tBLXpcXC5cXC1dKy8sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgXCJpZiBlbHNlIGZvcmVhY2ggcmV0dXJuIGZ1bmN0aW9uIGRvIHdoaWxlIHVudGlsIGVsc2VpZiBiZWdpbiBmb3IgdHJhcCBkYXRhIGR5bmFtaWNwYXJhbSBlbmQgYnJlYWsgdGhyb3cgcGFyYW0gY29udGludWUgZmluYWxseSBpbiBzd2l0Y2ggZXhpdCBmaWx0ZXIgdHJ5IHByb2Nlc3MgY2F0Y2hcIiArXG4gICAgICAgIFwiVmFsaWRhdGVOb0NpcmNsZUluTm9kZVJlc291cmNlcyBWYWxpZGF0ZU5vZGVFeGNsdXNpdmVSZXNvdXJjZXMgVmFsaWRhdGVOb2RlTWFuYWdlciBWYWxpZGF0ZU5vZGVSZXNvdXJjZXMgVmFsaWRhdGVOb2RlUmVzb3VyY2VTb3VyY2UgVmFsaWRhdGVOb05hbWVOb2RlUmVzb3VyY2VzIFRocm93RXJyb3IgSXNIaWRkZW5SZXNvdXJjZVwiICtcbiAgICAgICAgXCJJc1BhdHRlcm5NYXRjaGVkIFwiLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIFwiQWRkLUNvbXB1dGVyIEFkZC1Db250ZW50IEFkZC1IaXN0b3J5IEFkZC1Kb2JUcmlnZ2VyIEFkZC1NZW1iZXIgQWRkLVBTU25hcGluIEFkZC1UeXBlIENoZWNrcG9pbnQtQ29tcHV0ZXIgQ2xlYXItQ29udGVudCBcIiArXG4gICAgICAgIFwiQ2xlYXItRXZlbnRMb2cgQ2xlYXItSGlzdG9yeSBDbGVhci1Ib3N0IENsZWFyLUl0ZW0gQ2xlYXItSXRlbVByb3BlcnR5IENsZWFyLVZhcmlhYmxlIENvbXBhcmUtT2JqZWN0IENvbXBsZXRlLVRyYW5zYWN0aW9uIENvbm5lY3QtUFNTZXNzaW9uIFwiICtcbiAgICAgICAgXCJDb25uZWN0LVdTTWFuIENvbnZlcnQtUGF0aCBDb252ZXJ0RnJvbS1Dc3YgQ29udmVydEZyb20tSnNvbiBDb252ZXJ0RnJvbS1TZWN1cmVTdHJpbmcgQ29udmVydEZyb20tU3RyaW5nRGF0YSBDb252ZXJ0VG8tQ3N2IENvbnZlcnRUby1IdG1sIFwiICtcbiAgICAgICAgXCJDb252ZXJ0VG8tSnNvbiBDb252ZXJ0VG8tU2VjdXJlU3RyaW5nIENvbnZlcnRUby1YbWwgQ29weS1JdGVtIENvcHktSXRlbVByb3BlcnR5IERlYnVnLVByb2Nlc3MgRGlzYWJsZS1Db21wdXRlclJlc3RvcmUgRGlzYWJsZS1Kb2JUcmlnZ2VyIFwiICtcbiAgICAgICAgXCJEaXNhYmxlLVBTQnJlYWtwb2ludCBEaXNhYmxlLVBTUmVtb3RpbmcgRGlzYWJsZS1QU1Nlc3Npb25Db25maWd1cmF0aW9uIERpc2FibGUtV1NNYW5DcmVkU1NQIERpc2Nvbm5lY3QtUFNTZXNzaW9uIERpc2Nvbm5lY3QtV1NNYW4gXCIgK1xuICAgICAgICBcIkRpc2FibGUtU2NoZWR1bGVkSm9iIEVuYWJsZS1Db21wdXRlclJlc3RvcmUgRW5hYmxlLUpvYlRyaWdnZXIgRW5hYmxlLVBTQnJlYWtwb2ludCBFbmFibGUtUFNSZW1vdGluZyBFbmFibGUtUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBcIiArXG4gICAgICAgIFwiRW5hYmxlLVNjaGVkdWxlZEpvYiBFbmFibGUtV1NNYW5DcmVkU1NQIEVudGVyLVBTU2Vzc2lvbiBFeGl0LVBTU2Vzc2lvbiBFeHBvcnQtQWxpYXMgRXhwb3J0LUNsaXhtbCBFeHBvcnQtQ29uc29sZSBFeHBvcnQtQ291bnRlciBFeHBvcnQtQ3N2IFwiICtcbiAgICAgICAgXCJFeHBvcnQtRm9ybWF0RGF0YSBFeHBvcnQtTW9kdWxlTWVtYmVyIEV4cG9ydC1QU1Nlc3Npb24gRm9yRWFjaC1PYmplY3QgRm9ybWF0LUN1c3RvbSBGb3JtYXQtTGlzdCBGb3JtYXQtVGFibGUgRm9ybWF0LVdpZGUgR2V0LUFjbCBHZXQtQWxpYXMgXCIgK1xuICAgICAgICBcIkdldC1BdXRoZW50aWNvZGVTaWduYXR1cmUgR2V0LUNoaWxkSXRlbSBHZXQtQ29tbWFuZCBHZXQtQ29tcHV0ZXJSZXN0b3JlUG9pbnQgR2V0LUNvbnRlbnQgR2V0LUNvbnRyb2xQYW5lbEl0ZW0gR2V0LUNvdW50ZXIgR2V0LUNyZWRlbnRpYWwgXCIgK1xuICAgICAgICBcIkdldC1DdWx0dXJlIEdldC1EYXRlIEdldC1FdmVudCBHZXQtRXZlbnRMb2cgR2V0LUV2ZW50U3Vic2NyaWJlciBHZXQtRXhlY3V0aW9uUG9saWN5IEdldC1Gb3JtYXREYXRhIEdldC1Ib3N0IEdldC1Ib3RGaXggR2V0LUhlbHAgR2V0LUhpc3RvcnkgXCIgK1xuICAgICAgICBcIkdldC1Jc2VTbmlwcGV0IEdldC1JdGVtIEdldC1JdGVtUHJvcGVydHkgR2V0LUpvYiBHZXQtSm9iVHJpZ2dlciBHZXQtTG9jYXRpb24gR2V0LU1lbWJlciBHZXQtTW9kdWxlIEdldC1QZnhDZXJ0aWZpY2F0ZSBHZXQtUHJvY2VzcyBcIiArXG4gICAgICAgIFwiR2V0LVBTQnJlYWtwb2ludCBHZXQtUFNDYWxsU3RhY2sgR2V0LVBTRHJpdmUgR2V0LVBTUHJvdmlkZXIgR2V0LVBTU2Vzc2lvbiBHZXQtUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBHZXQtUFNTbmFwaW4gR2V0LVJhbmRvbSBHZXQtU2NoZWR1bGVkSm9iIFwiICtcbiAgICAgICAgXCJHZXQtU2NoZWR1bGVkSm9iT3B0aW9uIEdldC1TZXJ2aWNlIEdldC1UcmFjZVNvdXJjZSBHZXQtVHJhbnNhY3Rpb24gR2V0LVR5cGVEYXRhIEdldC1VSUN1bHR1cmUgR2V0LVVuaXF1ZSBHZXQtVmFyaWFibGUgR2V0LVZlcmIgR2V0LVdpbkV2ZW50IFwiICtcbiAgICAgICAgXCJHZXQtV21pT2JqZWN0IEdldC1XU01hbkNyZWRTU1AgR2V0LVdTTWFuSW5zdGFuY2UgR3JvdXAtT2JqZWN0IEltcG9ydC1BbGlhcyBJbXBvcnQtQ2xpeG1sIEltcG9ydC1Db3VudGVyIEltcG9ydC1Dc3YgSW1wb3J0LUlzZVNuaXBwZXQgXCIgK1xuICAgICAgICBcIkltcG9ydC1Mb2NhbGl6ZWREYXRhIEltcG9ydC1QU1Nlc3Npb24gSW1wb3J0LU1vZHVsZSBJbnZva2UtQXNXb3JrZmxvdyBJbnZva2UtQ29tbWFuZCBJbnZva2UtRXhwcmVzc2lvbiBJbnZva2UtSGlzdG9yeSBJbnZva2UtSXRlbSBcIiArXG4gICAgICAgIFwiSW52b2tlLVJlc3RNZXRob2QgSW52b2tlLVdlYlJlcXVlc3QgSW52b2tlLVdtaU1ldGhvZCBJbnZva2UtV1NNYW5BY3Rpb24gSm9pbi1QYXRoIExpbWl0LUV2ZW50TG9nIE1lYXN1cmUtQ29tbWFuZCBNZWFzdXJlLU9iamVjdCBNb3ZlLUl0ZW0gXCIgK1xuICAgICAgICBcIk1vdmUtSXRlbVByb3BlcnR5IE5ldy1BbGlhcyBOZXctRXZlbnQgTmV3LUV2ZW50TG9nIE5ldy1Jc2VTbmlwcGV0IE5ldy1JdGVtIE5ldy1JdGVtUHJvcGVydHkgTmV3LUpvYlRyaWdnZXIgTmV3LU9iamVjdCBOZXctTW9kdWxlIFwiICtcbiAgICAgICAgXCJOZXctTW9kdWxlTWFuaWZlc3QgTmV3LVBTRHJpdmUgTmV3LVBTU2Vzc2lvbiBOZXctUFNTZXNzaW9uQ29uZmlndXJhdGlvbkZpbGUgTmV3LVBTU2Vzc2lvbk9wdGlvbiBOZXctUFNUcmFuc3BvcnRPcHRpb24gXCIgK1xuICAgICAgICBcIk5ldy1QU1dvcmtmbG93RXhlY3V0aW9uT3B0aW9uIE5ldy1QU1dvcmtmbG93U2Vzc2lvbiBOZXctU2NoZWR1bGVkSm9iT3B0aW9uIE5ldy1TZXJ2aWNlIE5ldy1UaW1lU3BhbiBOZXctVmFyaWFibGUgTmV3LVdlYlNlcnZpY2VQcm94eSBcIiArXG4gICAgICAgIFwiTmV3LVdpbkV2ZW50IE5ldy1XU01hbkluc3RhbmNlIE5ldy1XU01hblNlc3Npb25PcHRpb24gT3V0LURlZmF1bHQgT3V0LUZpbGUgT3V0LUdyaWRWaWV3IE91dC1Ib3N0IE91dC1OdWxsIE91dC1QcmludGVyIE91dC1TdHJpbmcgUG9wLUxvY2F0aW9uIFwiICtcbiAgICAgICAgXCJQdXNoLUxvY2F0aW9uIFJlYWQtSG9zdCBSZWNlaXZlLUpvYiBSZWdpc3Rlci1FbmdpbmVFdmVudCBSZWdpc3Rlci1PYmplY3RFdmVudCBSZWdpc3Rlci1QU1Nlc3Npb25Db25maWd1cmF0aW9uIFJlZ2lzdGVyLVNjaGVkdWxlZEpvYiBcIiArXG4gICAgICAgIFwiUmVnaXN0ZXItV21pRXZlbnQgUmVtb3ZlLUNvbXB1dGVyIFJlbW92ZS1FdmVudCBSZW1vdmUtRXZlbnRMb2cgUmVtb3ZlLUl0ZW0gUmVtb3ZlLUl0ZW1Qcm9wZXJ0eSBSZW1vdmUtSm9iIFJlbW92ZS1Kb2JUcmlnZ2VyIFJlbW92ZS1Nb2R1bGUgXCIgK1xuICAgICAgICBcIlJlbW92ZS1QU0JyZWFrcG9pbnQgUmVtb3ZlLVBTRHJpdmUgUmVtb3ZlLVBTU2Vzc2lvbiBSZW1vdmUtUFNTbmFwaW4gUmVtb3ZlLVR5cGVEYXRhIFJlbW92ZS1WYXJpYWJsZSBSZW1vdmUtV21pT2JqZWN0IFJlbW92ZS1XU01hbkluc3RhbmNlIFwiICtcbiAgICAgICAgXCJSZW5hbWUtQ29tcHV0ZXIgUmVuYW1lLUl0ZW0gUmVuYW1lLUl0ZW1Qcm9wZXJ0eSBSZXNldC1Db21wdXRlck1hY2hpbmVQYXNzd29yZCBSZXNvbHZlLVBhdGggUmVzdGFydC1Db21wdXRlciBSZXN0YXJ0LVNlcnZpY2UgUmVzdG9yZS1Db21wdXRlciBcIiArXG4gICAgICAgIFwiUmVzdW1lLUpvYiBSZXN1bWUtU2VydmljZSBTYXZlLUhlbHAgU2VsZWN0LU9iamVjdCBTZWxlY3QtU3RyaW5nIFNlbGVjdC1YbWwgU2VuZC1NYWlsTWVzc2FnZSBTZXQtQWNsIFNldC1BbGlhcyBTZXQtQXV0aGVudGljb2RlU2lnbmF0dXJlIFwiICtcbiAgICAgICAgXCJTZXQtQ29udGVudCBTZXQtRGF0ZSBTZXQtRXhlY3V0aW9uUG9saWN5IFNldC1JdGVtIFNldC1JdGVtUHJvcGVydHkgU2V0LUpvYlRyaWdnZXIgU2V0LUxvY2F0aW9uIFNldC1QU0JyZWFrcG9pbnQgU2V0LVBTRGVidWcgXCIgK1xuICAgICAgICBcIlNldC1QU1Nlc3Npb25Db25maWd1cmF0aW9uIFNldC1TY2hlZHVsZWRKb2IgU2V0LVNjaGVkdWxlZEpvYk9wdGlvbiBTZXQtU2VydmljZSBTZXQtU3RyaWN0TW9kZSBTZXQtVHJhY2VTb3VyY2UgU2V0LVZhcmlhYmxlIFNldC1XbWlJbnN0YW5jZSBcIiArXG4gICAgICAgIFwiU2V0LVdTTWFuSW5zdGFuY2UgU2V0LVdTTWFuUXVpY2tDb25maWcgU2hvdy1Db21tYW5kIFNob3ctQ29udHJvbFBhbmVsSXRlbSBTaG93LUV2ZW50TG9nIFNvcnQtT2JqZWN0IFNwbGl0LVBhdGggU3RhcnQtSm9iIFN0YXJ0LVByb2Nlc3MgXCIgK1xuICAgICAgICBcIlN0YXJ0LVNlcnZpY2UgU3RhcnQtU2xlZXAgU3RhcnQtVHJhbnNhY3Rpb24gU3RhcnQtVHJhbnNjcmlwdCBTdG9wLUNvbXB1dGVyIFN0b3AtSm9iIFN0b3AtUHJvY2VzcyBTdG9wLVNlcnZpY2UgU3RvcC1UcmFuc2NyaXB0IFN1c3BlbmQtSm9iIFwiICtcbiAgICAgICAgXCJTdXNwZW5kLVNlcnZpY2UgVGVlLU9iamVjdCBUZXN0LUNvbXB1dGVyU2VjdXJlQ2hhbm5lbCBUZXN0LUNvbm5lY3Rpb24gVGVzdC1Nb2R1bGVNYW5pZmVzdCBUZXN0LVBhdGggVGVzdC1QU1Nlc3Npb25Db25maWd1cmF0aW9uRmlsZSBcIiArXG4gICAgICAgIFwiVHJhY2UtQ29tbWFuZCBVbmJsb2NrLUZpbGUgVW5kby1UcmFuc2FjdGlvbiBVbnJlZ2lzdGVyLUV2ZW50IFVucmVnaXN0ZXItUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBVbnJlZ2lzdGVyLVNjaGVkdWxlZEpvYiBVcGRhdGUtRm9ybWF0RGF0YSBcIiArXG4gICAgICAgIFwiVXBkYXRlLUhlbHAgVXBkYXRlLUxpc3QgVXBkYXRlLVR5cGVEYXRhIFVzZS1UcmFuc2FjdGlvbiBXYWl0LUV2ZW50IFdhaXQtSm9iIFdhaXQtUHJvY2VzcyBXaGVyZS1PYmplY3QgV3JpdGUtRGVidWcgV3JpdGUtRXJyb3IgV3JpdGUtRXZlbnRMb2cgXCIgK1xuICAgICAgICBcIldyaXRlLUhvc3QgV3JpdGUtT3V0cHV0IFdyaXRlLVByb2dyZXNzIFdyaXRlLVZlcmJvc2UgV3JpdGUtV2FybmluZyBBZGQtTURUUGVyc2lzdGVudERyaXZlIERpc2FibGUtTURUTW9uaXRvclNlcnZpY2UgRW5hYmxlLU1EVE1vbml0b3JTZXJ2aWNlIFwiICtcbiAgICAgICAgXCJHZXQtTURURGVwbG95bWVudFNoYXJlU3RhdGlzdGljcyBHZXQtTURUTW9uaXRvckRhdGEgR2V0LU1EVE9wZXJhdGluZ1N5c3RlbUNhdGFsb2cgR2V0LU1EVFBlcnNpc3RlbnREcml2ZSBJbXBvcnQtTURUQXBwbGljYXRpb24gXCIgK1xuICAgICAgICBcIkltcG9ydC1NRFREcml2ZXIgSW1wb3J0LU1EVE9wZXJhdGluZ1N5c3RlbSBJbXBvcnQtTURUUGFja2FnZSBJbXBvcnQtTURUVGFza1NlcXVlbmNlIE5ldy1NRFREYXRhYmFzZSBSZW1vdmUtTURUTW9uaXRvckRhdGEgXCIgK1xuICAgICAgICBcIlJlbW92ZS1NRFRQZXJzaXN0ZW50RHJpdmUgUmVzdG9yZS1NRFRQZXJzaXN0ZW50RHJpdmUgU2V0LU1EVE1vbml0b3JEYXRhIFRlc3QtTURURGVwbG95bWVudFNoYXJlIFRlc3QtTURUTW9uaXRvckRhdGEgVXBkYXRlLU1EVERhdGFiYXNlU2NoZW1hIFwiICtcbiAgICAgICAgXCJVcGRhdGUtTURURGVwbG95bWVudFNoYXJlIFVwZGF0ZS1NRFRMaW5rZWREUyBVcGRhdGUtTURUTWVkaWEgQWRkLVZhbXRQcm9kdWN0S2V5IEV4cG9ydC1WYW10RGF0YSBGaW5kLVZhbXRNYW5hZ2VkTWFjaGluZSBcIiArXG4gICAgICAgIFwiR2V0LVZhbXRDb25maXJtYXRpb25JZCBHZXQtVmFtdFByb2R1Y3QgR2V0LVZhbXRQcm9kdWN0S2V5IEltcG9ydC1WYW10RGF0YSBJbml0aWFsaXplLVZhbXREYXRhIEluc3RhbGwtVmFtdENvbmZpcm1hdGlvbklkIFwiICtcbiAgICAgICAgXCJJbnN0YWxsLVZhbXRQcm9kdWN0QWN0aXZhdGlvbiBJbnN0YWxsLVZhbXRQcm9kdWN0S2V5IFVwZGF0ZS1WYW10UHJvZHVjdCBBZGQtQ0lEYXRhc3RvcmUgQWRkLUtleU1hbmFnZW1lbnRTZXJ2ZXIgQWRkLU5vZGVLZXlzIFwiICtcbiAgICAgICAgXCJBZGQtTnN4RHluYW1pY0NyaXRlcmlhIEFkZC1Oc3hEeW5hbWljTWVtYmVyU2V0IEFkZC1Oc3hFZGdlSW50ZXJmYWNlQWRkcmVzcyBBZGQtTnN4RmlyZXdhbGxFeGNsdXNpb25MaXN0TWVtYmVyIEFkZC1Oc3hGaXJld2FsbFJ1bGVNZW1iZXIgXCIgK1xuICAgICAgICBcIkFkZC1Oc3hJcFNldE1lbWJlciBBZGQtTnN4TGljZW5zZSBBZGQtTnN4TG9hZEJhbGFuY2VyUG9vbE1lbWJlciBBZGQtTnN4TG9hZEJhbGFuY2VyVmlwIEFkZC1Oc3hTZWNvbmRhcnlNYW5hZ2VyIEFkZC1Oc3hTZWN1cml0eUdyb3VwTWVtYmVyIFwiICtcbiAgICAgICAgXCJBZGQtTnN4U2VjdXJpdHlQb2xpY3lSdWxlIEFkZC1Oc3hTZWN1cml0eVBvbGljeVJ1bGVHcm91cCBBZGQtTnN4U2VjdXJpdHlQb2xpY3lSdWxlU2VydmljZSBBZGQtTnN4U2VydmljZUdyb3VwTWVtYmVyIFwiICtcbiAgICAgICAgXCJBZGQtTnN4VHJhbnNwb3J0Wm9uZU1lbWJlciBBZGQtUGFzc3Rocm91Z2hEZXZpY2UgQWRkLVZEU3dpdGNoUGh5c2ljYWxOZXR3b3JrQWRhcHRlciBBZGQtVkRTd2l0Y2hWTUhvc3QgQWRkLVZNSG9zdCBBZGQtVk1Ib3N0TnRwU2VydmVyIFwiICtcbiAgICAgICAgXCJBZGQtVmlydHVhbFN3aXRjaFBoeXNpY2FsTmV0d29ya0FkYXB0ZXIgQWRkLVhtbEVsZW1lbnQgQWRkLXZSQUN1c3RvbUZvcm0gQWRkLXZSQVByaW5jaXBhbFRvVGVuYW50Um9sZSBBZGQtdlJBUmVzZXJ2YXRpb25OZXR3b3JrIFwiICtcbiAgICAgICAgXCJBZGQtdlJBUmVzZXJ2YXRpb25TdG9yYWdlIENsZWFyLU5zeEVkZ2VJbnRlcmZhY2UgQ2xlYXItTnN4TWFuYWdlclRpbWVTZXR0aW5ncyBDb21wcmVzcy1BcmNoaXZlIENvbm5lY3QtQ0lTZXJ2ZXIgQ29ubmVjdC1DaXNTZXJ2ZXIgXCIgK1xuICAgICAgICBcIkNvbm5lY3QtSENYU2VydmVyIENvbm5lY3QtTklTZXJ2ZXIgQ29ubmVjdC1Oc3hMb2dpY2FsU3dpdGNoIENvbm5lY3QtTnN4U2VydmVyIENvbm5lY3QtTnN4dFNlcnZlciBDb25uZWN0LVNybVNlcnZlciBDb25uZWN0LVZJU2VydmVyIFwiICtcbiAgICAgICAgXCJDb25uZWN0LVZtYyBDb25uZWN0LXZSQVNlcnZlciBDb25uZWN0LXZSTklTZXJ2ZXIgQ29udmVydEZyb20tTWFya2Rvd24gQ29udmVydFRvLU1PRkluc3RhbmNlIENvcHktRGF0YXN0b3JlSXRlbSBDb3B5LUhhcmREaXNrIENvcHktTnN4RWRnZSBcIiArXG4gICAgICAgIFwiQ29weS1WRGlzayBDb3B5LVZNR3Vlc3RGaWxlIERlYnVnLVJ1bnNwYWNlIERpc2FibGUtTnN4RWRnZVNzaCBEaXNhYmxlLVJ1bnNwYWNlRGVidWcgRGlzYWJsZS12Uk5JRGF0YVNvdXJjZSBEaXNjb25uZWN0LUNJU2VydmVyIFwiICtcbiAgICAgICAgXCJEaXNjb25uZWN0LUNpc1NlcnZlciBEaXNjb25uZWN0LUhDWFNlcnZlciBEaXNjb25uZWN0LU5zeExvZ2ljYWxTd2l0Y2ggRGlzY29ubmVjdC1Oc3hTZXJ2ZXIgRGlzY29ubmVjdC1Oc3h0U2VydmVyIERpc2Nvbm5lY3QtU3JtU2VydmVyIFwiICtcbiAgICAgICAgXCJEaXNjb25uZWN0LVZJU2VydmVyIERpc2Nvbm5lY3QtVm1jIERpc2Nvbm5lY3QtdlJBU2VydmVyIERpc2Nvbm5lY3QtdlJOSVNlcnZlciBEaXNtb3VudC1Ub29scyBFbmFibGUtTnN4RWRnZVNzaCBFbmFibGUtUnVuc3BhY2VEZWJ1ZyBcIiArXG4gICAgICAgIFwiRW5hYmxlLXZSTklEYXRhU291cmNlIEV4cGFuZC1BcmNoaXZlIEV4cG9ydC1Oc3hPYmplY3QgRXhwb3J0LVNwYm1TdG9yYWdlUG9saWN5IEV4cG9ydC1WQXBwIEV4cG9ydC1WRFBvcnRHcm91cCBFeHBvcnQtVkRTd2l0Y2ggXCIgK1xuICAgICAgICBcIkV4cG9ydC1WTUhvc3RQcm9maWxlIEV4cG9ydC12UkFJY29uIEV4cG9ydC12UkFQYWNrYWdlIEZpbmQtQ29tbWFuZCBGaW5kLURzY1Jlc291cmNlIEZpbmQtTW9kdWxlIEZpbmQtTnN4V2hlcmVWTVVzZWQgRmluZC1QYWNrYWdlIFwiICtcbiAgICAgICAgXCJGaW5kLVBhY2thZ2VQcm92aWRlciBGaW5kLVJvbGVDYXBhYmlsaXR5IEZpbmQtU2NyaXB0IEZvcm1hdC1IZXggRm9ybWF0LVZNSG9zdERpc2tQYXJ0aXRpb24gRm9ybWF0LVhNTCBHZW5lcmF0ZS1WZXJzaW9uSW5mbyBcIiArXG4gICAgICAgIFwiR2V0LUFkdmFuY2VkU2V0dGluZyBHZXQtQWxhcm1BY3Rpb24gR2V0LUFsYXJtQWN0aW9uVHJpZ2dlciBHZXQtQWxhcm1EZWZpbml0aW9uIEdldC1Bbm5vdGF0aW9uIEdldC1DRERyaXZlIEdldC1DSUFjY2Vzc0NvbnRyb2xSdWxlIFwiICtcbiAgICAgICAgXCJHZXQtQ0lEYXRhc3RvcmUgR2V0LUNJTmV0d29ya0FkYXB0ZXIgR2V0LUNJUm9sZSBHZXQtQ0lVc2VyIEdldC1DSVZBcHAgR2V0LUNJVkFwcE5ldHdvcmsgR2V0LUNJVkFwcFN0YXJ0UnVsZSBHZXQtQ0lWQXBwVGVtcGxhdGUgR2V0LUNJVk0gXCIgK1xuICAgICAgICBcIkdldC1DSVZNVGVtcGxhdGUgR2V0LUNJVmlldyBHZXQtQ2F0YWxvZyBHZXQtQ2lzQ29tbWFuZCBHZXQtQ2lzU2VydmljZSBHZXQtQ2xvdWRDb21tYW5kIEdldC1DbHVzdGVyIEdldC1Db21wYXRpYmxlVmVyc2lvbkFkZHRpb25hUHJvcGVydGllc1N0ciBcIiArXG4gICAgICAgIFwiR2V0LUNvbXBsZXhSZXNvdXJjZVF1YWxpZmllciBHZXQtQ29uZmlndXJhdGlvbkVycm9yQ291bnQgR2V0LUNvbnRlbnRMaWJyYXJ5SXRlbSBHZXQtQ3VzdG9tQXR0cmlidXRlIEdldC1EU0NSZXNvdXJjZU1vZHVsZXMgR2V0LURhdGFjZW50ZXIgXCIgK1xuICAgICAgICBcIkdldC1EYXRhc3RvcmUgR2V0LURhdGFzdG9yZUNsdXN0ZXIgR2V0LURyc0NsdXN0ZXJHcm91cCBHZXQtRHJzUmVjb21tZW5kYXRpb24gR2V0LURyc1J1bGUgR2V0LURyc1ZNSG9zdFJ1bGUgR2V0LURzY1Jlc291cmNlIEdldC1FZGdlR2F0ZXdheSBcIiArXG4gICAgICAgIFwiR2V0LUVuY3J5cHRlZFBhc3N3b3JkIEdldC1FcnJvclJlcG9ydCBHZXQtRXN4Q2xpIEdldC1Fc3hUb3AgR2V0LUV4dGVybmFsTmV0d29yayBHZXQtRmlsZUhhc2ggR2V0LUZsb3BweURyaXZlIEdldC1Gb2xkZXIgR2V0LUhBUHJpbWFyeVZNSG9zdCBcIiArXG4gICAgICAgIFwiR2V0LUhDWEFwcGxpYW5jZSBHZXQtSENYQXBwbGlhbmNlQ29tcHV0ZSBHZXQtSENYQXBwbGlhbmNlRFZTIEdldC1IQ1hBcHBsaWFuY2VEYXRhc3RvcmUgR2V0LUhDWEFwcGxpYW5jZU5ldHdvcmsgR2V0LUhDWENvbnRhaW5lciBcIiArXG4gICAgICAgIFwiR2V0LUhDWERhdGFzdG9yZSBHZXQtSENYR2F0ZXdheSBHZXQtSENYSW50ZXJjb25uZWN0U3RhdHVzIEdldC1IQ1hKb2IgR2V0LUhDWE1pZ3JhdGlvbiBHZXQtSENYTmV0d29yayBHZXQtSENYTmV0d29ya0V4dGVuc2lvbiBcIiArXG4gICAgICAgIFwiR2V0LUhDWFJlcGxpY2F0aW9uIEdldC1IQ1hSZXBsaWNhdGlvblNuYXBzaG90IEdldC1IQ1hTZXJ2aWNlIEdldC1IQ1hTaXRlIEdldC1IQ1hTaXRlUGFpcmluZyBHZXQtSENYVk0gR2V0LUhhcmREaXNrIEdldC1JU2NzaUhiYVRhcmdldCBcIiArXG4gICAgICAgIFwiR2V0LUlubmVyTW9zdEVycm9yUmVjb3JkIEdldC1JbnN0YWxsUGF0aCBHZXQtSW5zdGFsbGVkTW9kdWxlIEdldC1JbnN0YWxsZWRTY3JpcHQgR2V0LUludmVudG9yeSBHZXQtSXRlbVByb3BlcnR5VmFsdWUgR2V0LUtleU1hbmFnZW1lbnRTZXJ2ZXIgXCIgK1xuICAgICAgICBcIkdldC1LbWlwQ2xpZW50Q2VydGlmaWNhdGUgR2V0LUttc0NsdXN0ZXIgR2V0LUxvZyBHZXQtTG9nVHlwZSBHZXQtTWFya2Rvd25PcHRpb24gR2V0LU1lZGlhIEdldC1Nb2ZJbnN0YW5jZU5hbWUgR2V0LU1vZkluc3RhbmNlVGV4dCBHZXQtTmV0d29ya0FkYXB0ZXIgR2V0LU5ldHdvcmtQb29sIFwiICtcbiAgICAgICAgXCJHZXQtTmZzVXNlciBHZXQtTmljVGVhbWluZ1BvbGljeSBHZXQtTnN4QXBwbGljYWJsZU1lbWJlciBHZXQtTnN4QXBwbGljYWJsZVNlY3VyaXR5QWN0aW9uIEdldC1Oc3hCYWNraW5nRFZTd2l0Y2ggR2V0LU5zeEJhY2tpbmdQb3J0R3JvdXAgR2V0LU5zeENsaURmd0FkZHJTZXQgXCIgK1xuICAgICAgICBcIkdldC1Oc3hDbGlEZndGaWx0ZXIgR2V0LU5zeENsaURmd1J1bGUgR2V0LU5zeENsdXN0ZXJTdGF0dXMgR2V0LU5zeENvbnRyb2xsZXIgR2V0LU5zeER5bmFtaWNDcml0ZXJpYSBHZXQtTnN4RHluYW1pY01lbWJlclNldCBHZXQtTnN4RWRnZSBHZXQtTnN4RWRnZUJncCBcIiArXG4gICAgICAgIFwiR2V0LU5zeEVkZ2VCZ3BOZWlnaGJvdXIgR2V0LU5zeEVkZ2VDZXJ0aWZpY2F0ZSBHZXQtTnN4RWRnZUNzciBHZXQtTnN4RWRnZUZpcmV3YWxsIEdldC1Oc3hFZGdlRmlyZXdhbGxSdWxlIEdldC1Oc3hFZGdlSW50ZXJmYWNlIEdldC1Oc3hFZGdlSW50ZXJmYWNlQWRkcmVzcyBcIiArXG4gICAgICAgIFwiR2V0LU5zeEVkZ2VOYXQgR2V0LU5zeEVkZ2VOYXRSdWxlIEdldC1Oc3hFZGdlT3NwZiBHZXQtTnN4RWRnZU9zcGZBcmVhIEdldC1Oc3hFZGdlT3NwZkludGVyZmFjZSBHZXQtTnN4RWRnZVByZWZpeCBHZXQtTnN4RWRnZVJlZGlzdHJpYnV0aW9uUnVsZSBHZXQtTnN4RWRnZVJvdXRpbmcgXCIgK1xuICAgICAgICBcIkdldC1Oc3hFZGdlU3RhdGljUm91dGUgR2V0LU5zeEVkZ2VTdWJJbnRlcmZhY2UgR2V0LU5zeEZpcmV3YWxsRXhjbHVzaW9uTGlzdE1lbWJlciBHZXQtTnN4RmlyZXdhbGxHbG9iYWxDb25maWd1cmF0aW9uIEdldC1Oc3hGaXJld2FsbFB1Ymxpc2hTdGF0dXMgR2V0LU5zeEZpcmV3YWxsUnVsZSBcIiArXG4gICAgICAgIFwiR2V0LU5zeEZpcmV3YWxsUnVsZU1lbWJlciBHZXQtTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gR2V0LU5zeEZpcmV3YWxsU2VjdGlvbiBHZXQtTnN4RmlyZXdhbGxUaHJlc2hvbGQgR2V0LU5zeElwUG9vbCBHZXQtTnN4SXBTZXQgR2V0LU5zeExpY2Vuc2UgR2V0LU5zeExvYWRCYWxhbmNlciBcIiArXG4gICAgICAgIFwiR2V0LU5zeExvYWRCYWxhbmNlckFwcGxpY2F0aW9uUHJvZmlsZSBHZXQtTnN4TG9hZEJhbGFuY2VyQXBwbGljYXRpb25SdWxlIEdldC1Oc3hMb2FkQmFsYW5jZXJNb25pdG9yIEdldC1Oc3hMb2FkQmFsYW5jZXJQb29sIEdldC1Oc3hMb2FkQmFsYW5jZXJQb29sTWVtYmVyIEdldC1Oc3hMb2FkQmFsYW5jZXJTdGF0cyBcIiArXG4gICAgICAgIFwiR2V0LU5zeExvYWRCYWxhbmNlclZpcCBHZXQtTnN4TG9naWNhbFJvdXRlciBHZXQtTnN4TG9naWNhbFJvdXRlckJncCBHZXQtTnN4TG9naWNhbFJvdXRlckJncE5laWdoYm91ciBHZXQtTnN4TG9naWNhbFJvdXRlckJyaWRnZSBHZXQtTnN4TG9naWNhbFJvdXRlckJyaWRnaW5nIFwiICtcbiAgICAgICAgXCJHZXQtTnN4TG9naWNhbFJvdXRlckludGVyZmFjZSBHZXQtTnN4TG9naWNhbFJvdXRlck9zcGYgR2V0LU5zeExvZ2ljYWxSb3V0ZXJPc3BmQXJlYSBHZXQtTnN4TG9naWNhbFJvdXRlck9zcGZJbnRlcmZhY2UgR2V0LU5zeExvZ2ljYWxSb3V0ZXJQcmVmaXggXCIgK1xuICAgICAgICBcIkdldC1Oc3hMb2dpY2FsUm91dGVyUmVkaXN0cmlidXRpb25SdWxlIEdldC1Oc3hMb2dpY2FsUm91dGVyUm91dGluZyBHZXQtTnN4TG9naWNhbFJvdXRlclN0YXRpY1JvdXRlIEdldC1Oc3hMb2dpY2FsU3dpdGNoIEdldC1Oc3hNYWNTZXQgR2V0LU5zeE1hbmFnZXJCYWNrdXAgXCIgK1xuICAgICAgICBcIkdldC1Oc3hNYW5hZ2VyQ2VydGlmaWNhdGUgR2V0LU5zeE1hbmFnZXJDb21wb25lbnRTdW1tYXJ5IEdldC1Oc3hNYW5hZ2VyTmV0d29yayBHZXQtTnN4TWFuYWdlclJvbGUgR2V0LU5zeE1hbmFnZXJTc29Db25maWcgR2V0LU5zeE1hbmFnZXJTeW5jU3RhdHVzIEdldC1Oc3hNYW5hZ2VyU3lzbG9nU2VydmVyIFwiICtcbiAgICAgICAgXCJHZXQtTnN4TWFuYWdlclN5c3RlbVN1bW1hcnkgR2V0LU5zeE1hbmFnZXJUaW1lU2V0dGluZ3MgR2V0LU5zeE1hbmFnZXJWY2VudGVyQ29uZmlnIEdldC1Oc3hTZWNvbmRhcnlNYW5hZ2VyIEdldC1Oc3hTZWN1cml0eUdyb3VwIEdldC1Oc3hTZWN1cml0eUdyb3VwRWZmZWN0aXZlSXBBZGRyZXNzIFwiICtcbiAgICAgICAgXCJHZXQtTnN4U2VjdXJpdHlHcm91cEVmZmVjdGl2ZU1hY0FkZHJlc3MgR2V0LU5zeFNlY3VyaXR5R3JvdXBFZmZlY3RpdmVNZW1iZXIgR2V0LU5zeFNlY3VyaXR5R3JvdXBFZmZlY3RpdmVWaXJ0dWFsTWFjaGluZSBHZXQtTnN4U2VjdXJpdHlHcm91cEVmZmVjdGl2ZVZuaWMgXCIgK1xuICAgICAgICBcIkdldC1Oc3hTZWN1cml0eUdyb3VwTWVtYmVyVHlwZXMgR2V0LU5zeFNlY3VyaXR5UG9saWN5IEdldC1Oc3hTZWN1cml0eVBvbGljeUhpZ2hlc3RVc2VkUHJlY2VkZW5jZSBHZXQtTnN4U2VjdXJpdHlQb2xpY3lSdWxlIEdldC1Oc3hTZWN1cml0eVRhZyBHZXQtTnN4U2VjdXJpdHlUYWdBc3NpZ25tZW50IFwiICtcbiAgICAgICAgXCJHZXQtTnN4U2VnbWVudElkUmFuZ2UgR2V0LU5zeFNlcnZpY2UgR2V0LU5zeFNlcnZpY2VEZWZpbml0aW9uIEdldC1Oc3hTZXJ2aWNlR3JvdXAgR2V0LU5zeFNlcnZpY2VHcm91cE1lbWJlciBHZXQtTnN4U2VydmljZVByb2ZpbGUgR2V0LU5zeFNwb29mZ3VhcmROaWMgR2V0LU5zeFNwb29mZ3VhcmRQb2xpY3kgXCIgK1xuICAgICAgICBcIkdldC1Oc3hTc2xWcG4gR2V0LU5zeFNzbFZwbkF1dGhTZXJ2ZXIgR2V0LU5zeFNzbFZwbkNsaWVudEluc3RhbGxhdGlvblBhY2thZ2UgR2V0LU5zeFNzbFZwbklwUG9vbCBHZXQtTnN4U3NsVnBuUHJpdmF0ZU5ldHdvcmsgR2V0LU5zeFNzbFZwblVzZXIgR2V0LU5zeFRyYW5zcG9ydFpvbmUgXCIgK1xuICAgICAgICBcIkdldC1Oc3hVc2VyUm9sZSBHZXQtTnN4VmRzQ29udGV4dCBHZXQtTnN4dFBvbGljeVNlcnZpY2UgR2V0LU5zeHRTZXJ2aWNlIEdldC1PU0N1c3RvbWl6YXRpb25OaWNNYXBwaW5nIEdldC1PU0N1c3RvbWl6YXRpb25TcGVjIEdldC1PcmcgR2V0LU9yZ05ldHdvcmsgR2V0LU9yZ1ZkYyBcIiArXG4gICAgICAgIFwiR2V0LU9yZ1ZkY05ldHdvcmsgR2V0LU92ZkNvbmZpZ3VyYXRpb24gR2V0LVBTQ3VycmVudENvbmZpZ3VyYXRpb25Ob2RlIEdldC1QU0RlZmF1bHRDb25maWd1cmF0aW9uRG9jdW1lbnQgR2V0LVBTTWV0YUNvbmZpZ0RvY3VtZW50SW5zdFZlcnNpb25JbmZvIEdldC1QU01ldGFDb25maWd1cmF0aW9uUHJvY2Vzc2VkIFwiICtcbiAgICAgICAgXCJHZXQtUFNSZWFkTGluZUtleUhhbmRsZXIgR2V0LVBTUmVhZExpbmVPcHRpb24gR2V0LVBTUmVwb3NpdG9yeSBHZXQtUFNUb3BDb25maWd1cmF0aW9uTmFtZSBHZXQtUFNWZXJzaW9uIEdldC1QYWNrYWdlIEdldC1QYWNrYWdlUHJvdmlkZXIgR2V0LVBhY2thZ2VTb3VyY2UgR2V0LVBhc3N0aHJvdWdoRGV2aWNlIFwiICtcbiAgICAgICAgXCJHZXQtUG9zaXRpb25JbmZvIEdldC1Qb3dlckNMSUNvbW11bml0eSBHZXQtUG93ZXJDTElDb25maWd1cmF0aW9uIEdldC1Qb3dlckNMSUhlbHAgR2V0LVBvd2VyQ0xJVmVyc2lvbiBHZXQtUG93ZXJOc3hWZXJzaW9uIEdldC1Qcm92aWRlclZkYyBHZXQtUHVibGljS2V5RnJvbUZpbGUgXCIgK1xuICAgICAgICBcIkdldC1QdWJsaWNLZXlGcm9tU3RvcmUgR2V0LVJlc291cmNlUG9vbCBHZXQtUnVuc3BhY2UgR2V0LVJ1bnNwYWNlRGVidWcgR2V0LVNjc2lDb250cm9sbGVyIEdldC1TY3NpTHVuIEdldC1TY3NpTHVuUGF0aCBHZXQtU2VjdXJpdHlJbmZvIEdldC1TZWN1cml0eVBvbGljeSBHZXQtU25hcHNob3QgXCIgK1xuICAgICAgICBcIkdldC1TcGJtQ2FwYWJpbGl0eSBHZXQtU3BibUNvbXBhdGlibGVTdG9yYWdlIEdldC1TcGJtRW50aXR5Q29uZmlndXJhdGlvbiBHZXQtU3BibUZhdWx0RG9tYWluIEdldC1TcGJtUG9pbnRJblRpbWVSZXBsaWNhIEdldC1TcGJtUmVwbGljYXRpb25Hcm91cCBHZXQtU3BibVJlcGxpY2F0aW9uUGFpciBcIiArXG4gICAgICAgIFwiR2V0LVNwYm1TdG9yYWdlUG9saWN5IEdldC1TdGF0IEdldC1TdGF0SW50ZXJ2YWwgR2V0LVN0YXRUeXBlIEdldC1UYWcgR2V0LVRhZ0Fzc2lnbm1lbnQgR2V0LVRhZ0NhdGVnb3J5IEdldC1UYXNrIEdldC1UZW1wbGF0ZSBHZXQtVGltZVpvbmUgR2V0LVVwdGltZSBHZXQtVXNiRGV2aWNlIEdldC1WQUlPRmlsdGVyIFwiICtcbiAgICAgICAgXCJHZXQtVkFwcCBHZXQtVkRCbG9ja2VkUG9saWN5IEdldC1WRFBvcnQgR2V0LVZEUG9ydGdyb3VwIEdldC1WRFBvcnRncm91cE92ZXJyaWRlUG9saWN5IEdldC1WRFNlY3VyaXR5UG9saWN5IEdldC1WRFN3aXRjaCBHZXQtVkRTd2l0Y2hQcml2YXRlVmxhbiBHZXQtVkRUcmFmZmljU2hhcGluZ1BvbGljeSBcIiArXG4gICAgICAgIFwiR2V0LVZEVXBsaW5rTGFjcFBvbGljeSBHZXQtVkRVcGxpbmtUZWFtaW5nUG9saWN5IEdldC1WRGlzayBHZXQtVklBY2NvdW50IEdldC1WSUNvbW1hbmQgR2V0LVZJQ3JlZGVudGlhbFN0b3JlSXRlbSBHZXQtVklFdmVudCBHZXQtVklPYmplY3RCeVZJVmlldyBHZXQtVklQZXJtaXNzaW9uIEdldC1WSVByaXZpbGVnZSBcIiArXG4gICAgICAgIFwiR2V0LVZJUHJvcGVydHkgR2V0LVZJUm9sZSBHZXQtVk0gR2V0LVZNR3Vlc3QgR2V0LVZNSG9zdCBHZXQtVk1Ib3N0QWNjb3VudCBHZXQtVk1Ib3N0QWR2YW5jZWRDb25maWd1cmF0aW9uIEdldC1WTUhvc3RBdXRoZW50aWNhdGlvbiBHZXQtVk1Ib3N0QXZhaWxhYmxlVGltZVpvbmUgXCIgK1xuICAgICAgICBcIkdldC1WTUhvc3REaWFnbm9zdGljUGFydGl0aW9uIEdldC1WTUhvc3REaXNrIEdldC1WTUhvc3REaXNrUGFydGl0aW9uIEdldC1WTUhvc3RGaXJld2FsbERlZmF1bHRQb2xpY3kgR2V0LVZNSG9zdEZpcmV3YWxsRXhjZXB0aW9uIEdldC1WTUhvc3RGaXJtd2FyZSBHZXQtVk1Ib3N0SGFyZHdhcmUgXCIgK1xuICAgICAgICBcIkdldC1WTUhvc3RIYmEgR2V0LVZNSG9zdE1vZHVsZSBHZXQtVk1Ib3N0TmV0d29yayBHZXQtVk1Ib3N0TmV0d29ya0FkYXB0ZXIgR2V0LVZNSG9zdE50cFNlcnZlciBHZXQtVk1Ib3N0UGF0Y2ggR2V0LVZNSG9zdFBjaURldmljZSBHZXQtVk1Ib3N0UHJvZmlsZSBcIiArXG4gICAgICAgIFwiR2V0LVZNSG9zdFByb2ZpbGVJbWFnZUNhY2hlQ29uZmlndXJhdGlvbiBHZXQtVk1Ib3N0UHJvZmlsZVJlcXVpcmVkSW5wdXQgR2V0LVZNSG9zdFByb2ZpbGVTdG9yYWdlRGV2aWNlQ29uZmlndXJhdGlvbiBHZXQtVk1Ib3N0UHJvZmlsZVVzZXJDb25maWd1cmF0aW9uIFwiICtcbiAgICAgICAgXCJHZXQtVk1Ib3N0UHJvZmlsZVZtUG9ydEdyb3VwQ29uZmlndXJhdGlvbiBHZXQtVk1Ib3N0Um91dGUgR2V0LVZNSG9zdFNlcnZpY2UgR2V0LVZNSG9zdFNubXAgR2V0LVZNSG9zdFN0YXJ0UG9saWN5IEdldC1WTUhvc3RTdG9yYWdlIEdldC1WTUhvc3RTeXNMb2dTZXJ2ZXIgR2V0LVZNUXVlc3Rpb24gXCIgK1xuICAgICAgICBcIkdldC1WTVJlc291cmNlQ29uZmlndXJhdGlvbiBHZXQtVk1TdGFydFBvbGljeSBHZXQtVlRwbSBHZXQtVlRwbUNTUiBHZXQtVlRwbUNlcnRpZmljYXRlIEdldC1WYXNhUHJvdmlkZXIgR2V0LVZhc2FTdG9yYWdlQXJyYXkgR2V0LVZpZXcgR2V0LVZpcnR1YWxQb3J0R3JvdXAgR2V0LVZpcnR1YWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIkdldC1WbWNTZGRjTmV0d29ya1NlcnZpY2UgR2V0LVZtY1NlcnZpY2UgR2V0LVZzYW5DbHVzdGVyQ29uZmlndXJhdGlvbiBHZXQtVnNhbkNvbXBvbmVudCBHZXQtVnNhbkRpc2sgR2V0LVZzYW5EaXNrR3JvdXAgR2V0LVZzYW5FdmFjdWF0aW9uUGxhbiBHZXQtVnNhbkZhdWx0RG9tYWluIFwiICtcbiAgICAgICAgXCJHZXQtVnNhbklzY3NpSW5pdGlhdG9yR3JvdXAgR2V0LVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwVGFyZ2V0QXNzb2NpYXRpb24gR2V0LVZzYW5Jc2NzaUx1biBHZXQtVnNhbklzY3NpVGFyZ2V0IEdldC1Wc2FuT2JqZWN0IEdldC1Wc2FuUmVzeW5jaW5nQ29tcG9uZW50IEdldC1Wc2FuUnVudGltZUluZm8gXCIgK1xuICAgICAgICBcIkdldC1Wc2FuU3BhY2VVc2FnZSBHZXQtVnNhblN0YXQgR2V0LVZzYW5WaWV3IEdldC12UkFBcHBsaWFuY2VTZXJ2aWNlU3RhdHVzIEdldC12UkFBdXRob3JpemF0aW9uUm9sZSBHZXQtdlJBQmx1ZXByaW50IEdldC12UkFCdXNpbmVzc0dyb3VwIEdldC12UkFDYXRhbG9nSXRlbSBcIiArXG4gICAgICAgIFwiR2V0LXZSQUNhdGFsb2dJdGVtUmVxdWVzdFRlbXBsYXRlIEdldC12UkFDYXRhbG9nUHJpbmNpcGFsIEdldC12UkFDb21wb25lbnRSZWdpc3RyeVNlcnZpY2UgR2V0LXZSQUNvbXBvbmVudFJlZ2lzdHJ5U2VydmljZUVuZHBvaW50IEdldC12UkFDb21wb25lbnRSZWdpc3RyeVNlcnZpY2VTdGF0dXMgXCIgK1xuICAgICAgICBcIkdldC12UkFDb250ZW50IEdldC12UkFDb250ZW50RGF0YSBHZXQtdlJBQ29udGVudFR5cGUgR2V0LXZSQUN1c3RvbUZvcm0gR2V0LXZSQUVudGl0bGVkQ2F0YWxvZ0l0ZW0gR2V0LXZSQUVudGl0bGVkU2VydmljZSBHZXQtdlJBRW50aXRsZW1lbnQgR2V0LXZSQUV4dGVybmFsTmV0d29ya1Byb2ZpbGUgXCIgK1xuICAgICAgICBcIkdldC12UkFHcm91cFByaW5jaXBhbCBHZXQtdlJBSWNvbiBHZXQtdlJBTkFUTmV0d29ya1Byb2ZpbGUgR2V0LXZSQU5ldHdvcmtQcm9maWxlSVBBZGRyZXNzTGlzdCBHZXQtdlJBTmV0d29ya1Byb2ZpbGVJUFJhbmdlU3VtbWFyeSBHZXQtdlJBUGFja2FnZSBHZXQtdlJBUGFja2FnZUNvbnRlbnQgXCIgK1xuICAgICAgICBcIkdldC12UkFQcm9wZXJ0eURlZmluaXRpb24gR2V0LXZSQVByb3BlcnR5R3JvdXAgR2V0LXZSQVJlcXVlc3QgR2V0LXZSQVJlcXVlc3REZXRhaWwgR2V0LXZSQVJlc2VydmF0aW9uIEdldC12UkFSZXNlcnZhdGlvbkNvbXB1dGVSZXNvdXJjZSBHZXQtdlJBUmVzZXJ2YXRpb25Db21wdXRlUmVzb3VyY2VNZW1vcnkgXCIgK1xuICAgICAgICBcIkdldC12UkFSZXNlcnZhdGlvbkNvbXB1dGVSZXNvdXJjZU5ldHdvcmsgR2V0LXZSQVJlc2VydmF0aW9uQ29tcHV0ZVJlc291cmNlUmVzb3VyY2VQb29sIEdldC12UkFSZXNlcnZhdGlvbkNvbXB1dGVSZXNvdXJjZVN0b3JhZ2UgR2V0LXZSQVJlc2VydmF0aW9uUG9saWN5IFwiICtcbiAgICAgICAgXCJHZXQtdlJBUmVzZXJ2YXRpb25UZW1wbGF0ZSBHZXQtdlJBUmVzZXJ2YXRpb25UeXBlIEdldC12UkFSZXNvdXJjZSBHZXQtdlJBUmVzb3VyY2VBY3Rpb24gR2V0LXZSQVJlc291cmNlQWN0aW9uUmVxdWVzdFRlbXBsYXRlIEdldC12UkFSZXNvdXJjZU1ldHJpYyBHZXQtdlJBUmVzb3VyY2VPcGVyYXRpb24gXCIgK1xuICAgICAgICBcIkdldC12UkFSZXNvdXJjZVR5cGUgR2V0LXZSQVJvdXRlZE5ldHdvcmtQcm9maWxlIEdldC12UkFTZXJ2aWNlIEdldC12UkFTZXJ2aWNlQmx1ZXByaW50IEdldC12UkFTb3VyY2VNYWNoaW5lIEdldC12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgR2V0LXZSQVRlbmFudCBHZXQtdlJBVGVuYW50RGlyZWN0b3J5IFwiICtcbiAgICAgICAgXCJHZXQtdlJBVGVuYW50RGlyZWN0b3J5U3RhdHVzIEdldC12UkFUZW5hbnRSb2xlIEdldC12UkFVc2VyUHJpbmNpcGFsIEdldC12UkFVc2VyUHJpbmNpcGFsR3JvdXBNZW1iZXJzaGlwIEdldC12UkFWZXJzaW9uIEdldC12Uk5JQVBJVmVyc2lvbiBHZXQtdlJOSUFwcGxpY2F0aW9uIFwiICtcbiAgICAgICAgXCJHZXQtdlJOSUFwcGxpY2F0aW9uVGllciBHZXQtdlJOSURhdGFTb3VyY2UgR2V0LXZSTklEYXRhU291cmNlU05NUENvbmZpZyBHZXQtdlJOSURhdGFzdG9yZSBHZXQtdlJOSURpc3RyaWJ1dGVkU3dpdGNoIEdldC12Uk5JRGlzdHJpYnV0ZWRTd2l0Y2hQb3J0R3JvdXAgR2V0LXZSTklFbnRpdHkgXCIgK1xuICAgICAgICBcIkdldC12Uk5JRW50aXR5TmFtZSBHZXQtdlJOSUZpcmV3YWxsUnVsZSBHZXQtdlJOSUZsb3cgR2V0LXZSTklIb3N0IEdldC12Uk5JSG9zdFZNS05pYyBHZXQtdlJOSUlQU2V0IEdldC12Uk5JTDJOZXR3b3JrIEdldC12Uk5JTlNYTWFuYWdlciBHZXQtdlJOSU5vZGVzIEdldC12Uk5JUHJvYmxlbSBcIiArXG4gICAgICAgIFwiR2V0LXZSTklSZWNvbW1lbmRlZFJ1bGVzIEdldC12Uk5JUmVjb21tZW5kZWRSdWxlc05zeEJ1bmRsZSBHZXQtdlJOSVNlY3VyaXR5R3JvdXAgR2V0LXZSTklTZWN1cml0eVRhZyBHZXQtdlJOSVNlcnZpY2UgR2V0LXZSTklTZXJ2aWNlR3JvdXAgR2V0LXZSTklWTSBHZXQtdlJOSVZNdk5JQyBcIiArXG4gICAgICAgIFwiR2V0LXZSTkl2Q2VudGVyIEdldC12Uk5JdkNlbnRlckNsdXN0ZXIgR2V0LXZSTkl2Q2VudGVyRGF0YWNlbnRlciBHZXQtdlJOSXZDZW50ZXJGb2xkZXIgR3JhbnQtTnN4U3Bvb2ZndWFyZE5pY0FwcHJvdmFsIEltcG9ydC1DSVZBcHAgSW1wb3J0LUNJVkFwcFRlbXBsYXRlIEltcG9ydC1Oc3hPYmplY3QgXCIgK1xuICAgICAgICBcIkltcG9ydC1QYWNrYWdlUHJvdmlkZXIgSW1wb3J0LVBvd2VyU2hlbGxEYXRhRmlsZSBJbXBvcnQtU3BibVN0b3JhZ2VQb2xpY3kgSW1wb3J0LVZBcHAgSW1wb3J0LVZNSG9zdFByb2ZpbGUgSW1wb3J0LXZSQUNvbnRlbnREYXRhIEltcG9ydC12UkFJY29uIEltcG9ydC12UkFQYWNrYWdlIFwiICtcbiAgICAgICAgXCJJbml0aWFsaXplLUNvbmZpZ3VyYXRpb25SdW50aW1lU3RhdGUgSW5zdGFsbC1Nb2R1bGUgSW5zdGFsbC1Oc3hDbHVzdGVyIEluc3RhbGwtUGFja2FnZSBJbnN0YWxsLVBhY2thZ2VQcm92aWRlciBJbnN0YWxsLVNjcmlwdCBJbnN0YWxsLVZNSG9zdFBhdGNoIEludm9rZS1EcnNSZWNvbW1lbmRhdGlvbiBcIiArXG4gICAgICAgIFwiSW52b2tlLU5zeENsaSBJbnZva2UtTnN4Q2x1c3RlclJlc29sdmVBbGwgSW52b2tlLU5zeE1hbmFnZXJTeW5jIEludm9rZS1Oc3hSZXN0TWV0aG9kIEludm9rZS1Oc3hXZWJSZXF1ZXN0IEludm9rZS1WTUhvc3RQcm9maWxlIEludm9rZS1WTVNjcmlwdCBJbnZva2UtWHBhdGhRdWVyeSBcIiArXG4gICAgICAgIFwiSW52b2tlLXZSQURhdGFDb2xsZWN0aW9uIEludm9rZS12UkFSZXN0TWV0aG9kIEludm9rZS12UkFUZW5hbnREaXJlY3RvcnlTeW5jIEludm9rZS12Uk5JUmVzdE1ldGhvZCBKb2luLVN0cmluZyBNb3VudC1Ub29scyBNb3ZlLUNsdXN0ZXIgTW92ZS1EYXRhY2VudGVyIE1vdmUtRGF0YXN0b3JlIE1vdmUtRm9sZGVyIFwiICtcbiAgICAgICAgXCJNb3ZlLUhhcmREaXNrIE1vdmUtSW52ZW50b3J5IE1vdmUtTnN4U2VjdXJpdHlQb2xpY3lSdWxlIE1vdmUtUmVzb3VyY2VQb29sIE1vdmUtVGVtcGxhdGUgTW92ZS1WQXBwIE1vdmUtVkRpc2sgTW92ZS1WTSBNb3ZlLVZNSG9zdCBOZXctQWR2YW5jZWRTZXR0aW5nIE5ldy1BbGFybUFjdGlvbiBcIiArXG4gICAgICAgIFwiTmV3LUFsYXJtQWN0aW9uVHJpZ2dlciBOZXctQ0REcml2ZSBOZXctQ0lBY2Nlc3NDb250cm9sUnVsZSBOZXctQ0lWQXBwIE5ldy1DSVZBcHBOZXR3b3JrIE5ldy1DSVZBcHBUZW1wbGF0ZSBOZXctQ0lWTSBOZXctQ2x1c3RlciBOZXctQ3VzdG9tQXR0cmlidXRlIE5ldy1EYXRhY2VudGVyIE5ldy1EYXRhc3RvcmUgXCIgK1xuICAgICAgICBcIk5ldy1EYXRhc3RvcmVDbHVzdGVyIE5ldy1EYXRhc3RvcmVEcml2ZSBOZXctRHJzQ2x1c3Rlckdyb3VwIE5ldy1EcnNSdWxlIE5ldy1EcnNWTUhvc3RSdWxlIE5ldy1Ec2NDaGVja3N1bSBOZXctRmxvcHB5RHJpdmUgTmV3LUZvbGRlciBOZXctR3VpZCBOZXctSENYQXBwbGlhbmNlIE5ldy1IQ1hNaWdyYXRpb24gXCIgK1xuICAgICAgICBcIk5ldy1IQ1hOZXR3b3JrRXh0ZW5zaW9uIE5ldy1IQ1hOZXR3b3JrTWFwcGluZyBOZXctSENYUmVwbGljYXRpb24gTmV3LUhDWFNpdGVQYWlyaW5nIE5ldy1IQ1hTdGF0aWNSb3V0ZSBOZXctSGFyZERpc2sgTmV3LUlTY3NpSGJhVGFyZ2V0IE5ldy1LbWlwQ2xpZW50Q2VydGlmaWNhdGUgXCIgK1xuICAgICAgICBcIk5ldy1OZXR3b3JrQWRhcHRlciBOZXctTmZzVXNlciBOZXctTnN4QWRkcmVzc1NwZWMgTmV3LU5zeENsdXN0ZXJWeGxhbkNvbmZpZyBOZXctTnN4Q29udHJvbGxlciBOZXctTnN4RHluYW1pY0NyaXRlcmlhU3BlYyBOZXctTnN4RWRnZSBOZXctTnN4RWRnZUJncE5laWdoYm91ciBOZXctTnN4RWRnZUNzciBcIiArXG4gICAgICAgIFwiTmV3LU5zeEVkZ2VGaXJld2FsbFJ1bGUgTmV3LU5zeEVkZ2VJbnRlcmZhY2VTcGVjIE5ldy1Oc3hFZGdlTmF0UnVsZSBOZXctTnN4RWRnZU9zcGZBcmVhIE5ldy1Oc3hFZGdlT3NwZkludGVyZmFjZSBOZXctTnN4RWRnZVByZWZpeCBOZXctTnN4RWRnZVJlZGlzdHJpYnV0aW9uUnVsZSBcIiArXG4gICAgICAgIFwiTmV3LU5zeEVkZ2VTZWxmU2lnbmVkQ2VydGlmaWNhdGUgTmV3LU5zeEVkZ2VTdGF0aWNSb3V0ZSBOZXctTnN4RWRnZVN1YkludGVyZmFjZSBOZXctTnN4RWRnZVN1YkludGVyZmFjZVNwZWMgTmV3LU5zeEZpcmV3YWxsUnVsZSBOZXctTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gXCIgK1xuICAgICAgICBcIk5ldy1Oc3hGaXJld2FsbFNlY3Rpb24gTmV3LU5zeElwUG9vbCBOZXctTnN4SXBTZXQgTmV3LU5zeExvYWRCYWxhbmNlckFwcGxpY2F0aW9uUHJvZmlsZSBOZXctTnN4TG9hZEJhbGFuY2VyQXBwbGljYXRpb25SdWxlIE5ldy1Oc3hMb2FkQmFsYW5jZXJNZW1iZXJTcGVjIFwiICtcbiAgICAgICAgXCJOZXctTnN4TG9hZEJhbGFuY2VyTW9uaXRvciBOZXctTnN4TG9hZEJhbGFuY2VyUG9vbCBOZXctTnN4TG9naWNhbFJvdXRlciBOZXctTnN4TG9naWNhbFJvdXRlckJncE5laWdoYm91ciBOZXctTnN4TG9naWNhbFJvdXRlckJyaWRnZSBOZXctTnN4TG9naWNhbFJvdXRlckludGVyZmFjZSBcIiArXG4gICAgICAgIFwiTmV3LU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2VTcGVjIE5ldy1Oc3hMb2dpY2FsUm91dGVyT3NwZkFyZWEgTmV3LU5zeExvZ2ljYWxSb3V0ZXJPc3BmSW50ZXJmYWNlIE5ldy1Oc3hMb2dpY2FsUm91dGVyUHJlZml4IE5ldy1Oc3hMb2dpY2FsUm91dGVyUmVkaXN0cmlidXRpb25SdWxlIFwiICtcbiAgICAgICAgXCJOZXctTnN4TG9naWNhbFJvdXRlclN0YXRpY1JvdXRlIE5ldy1Oc3hMb2dpY2FsU3dpdGNoIE5ldy1Oc3hNYWNTZXQgTmV3LU5zeE1hbmFnZXIgTmV3LU5zeFNlY3VyaXR5R3JvdXAgTmV3LU5zeFNlY3VyaXR5UG9saWN5IE5ldy1Oc3hTZWN1cml0eVBvbGljeUFzc2lnbm1lbnQgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hTZWN1cml0eVBvbGljeUZpcmV3YWxsUnVsZVNwZWMgTmV3LU5zeFNlY3VyaXR5UG9saWN5R3Vlc3RJbnRyb3NwZWN0aW9uU3BlYyBOZXctTnN4U2VjdXJpdHlQb2xpY3lOZXR3b3JrSW50cm9zcGVjdGlvblNwZWMgTmV3LU5zeFNlY3VyaXR5VGFnIE5ldy1Oc3hTZWN1cml0eVRhZ0Fzc2lnbm1lbnQgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hTZWdtZW50SWRSYW5nZSBOZXctTnN4U2VydmljZSBOZXctTnN4U2VydmljZUdyb3VwIE5ldy1Oc3hTcG9vZmd1YXJkUG9saWN5IE5ldy1Oc3hTc2xWcG5BdXRoU2VydmVyIE5ldy1Oc3hTc2xWcG5DbGllbnRJbnN0YWxsYXRpb25QYWNrYWdlIE5ldy1Oc3hTc2xWcG5JcFBvb2wgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hTc2xWcG5Qcml2YXRlTmV0d29yayBOZXctTnN4U3NsVnBuVXNlciBOZXctTnN4VHJhbnNwb3J0Wm9uZSBOZXctTnN4VmRzQ29udGV4dCBOZXctT1NDdXN0b21pemF0aW9uTmljTWFwcGluZyBOZXctT1NDdXN0b21pemF0aW9uU3BlYyBOZXctT3JnIE5ldy1PcmdOZXR3b3JrIE5ldy1PcmdWZGMgXCIgK1xuICAgICAgICBcIk5ldy1PcmdWZGNOZXR3b3JrIE5ldy1SZXNvdXJjZVBvb2wgTmV3LVNjcmlwdEZpbGVJbmZvIE5ldy1TY3NpQ29udHJvbGxlciBOZXctU25hcHNob3QgTmV3LVNwYm1SdWxlIE5ldy1TcGJtUnVsZVNldCBOZXctU3BibVN0b3JhZ2VQb2xpY3kgTmV3LVN0YXRJbnRlcnZhbCBOZXctVGFnIFwiICtcbiAgICAgICAgXCJOZXctVGFnQXNzaWdubWVudCBOZXctVGFnQ2F0ZWdvcnkgTmV3LVRlbXBsYXRlIE5ldy1UZW1wb3JhcnlGaWxlIE5ldy1WQUlPRmlsdGVyIE5ldy1WQXBwIE5ldy1WRFBvcnRncm91cCBOZXctVkRTd2l0Y2ggTmV3LVZEU3dpdGNoUHJpdmF0ZVZsYW4gTmV3LVZEaXNrIFwiICtcbiAgICAgICAgXCJOZXctVklDcmVkZW50aWFsU3RvcmVJdGVtIE5ldy1WSUludmVudG9yeURyaXZlIE5ldy1WSVBlcm1pc3Npb24gTmV3LVZJUHJvcGVydHkgTmV3LVZJUm9sZSBOZXctVklTYW1sU2VjdXJpdHlDb250ZXh0IE5ldy1WTSBOZXctVk1Ib3N0QWNjb3VudCBOZXctVk1Ib3N0TmV0d29ya0FkYXB0ZXIgXCIgK1xuICAgICAgICBcIk5ldy1WTUhvc3RQcm9maWxlIE5ldy1WTUhvc3RQcm9maWxlVm1Qb3J0R3JvdXBDb25maWd1cmF0aW9uIE5ldy1WTUhvc3RSb3V0ZSBOZXctVlRwbSBOZXctVmFzYVByb3ZpZGVyIE5ldy1WY3NPQXV0aFNlY3VyaXR5Q29udGV4dCBOZXctVmlydHVhbFBvcnRHcm91cCBOZXctVmlydHVhbFN3aXRjaCBcIiArXG4gICAgICAgIFwiTmV3LVZzYW5EaXNrIE5ldy1Wc2FuRGlza0dyb3VwIE5ldy1Wc2FuRmF1bHREb21haW4gTmV3LVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwIE5ldy1Wc2FuSXNjc2lJbml0aWF0b3JHcm91cFRhcmdldEFzc29jaWF0aW9uIE5ldy1Wc2FuSXNjc2lMdW4gTmV3LVZzYW5Jc2NzaVRhcmdldCBcIiArXG4gICAgICAgIFwiTmV3LXZSQUJ1c2luZXNzR3JvdXAgTmV3LXZSQUVudGl0bGVtZW50IE5ldy12UkFFeHRlcm5hbE5ldHdvcmtQcm9maWxlIE5ldy12UkFHcm91cFByaW5jaXBhbCBOZXctdlJBTkFUTmV0d29ya1Byb2ZpbGUgTmV3LXZSQU5ldHdvcmtQcm9maWxlSVBSYW5nZURlZmluaXRpb24gTmV3LXZSQVBhY2thZ2UgXCIgK1xuICAgICAgICBcIk5ldy12UkFQcm9wZXJ0eURlZmluaXRpb24gTmV3LXZSQVByb3BlcnR5R3JvdXAgTmV3LXZSQVJlc2VydmF0aW9uIE5ldy12UkFSZXNlcnZhdGlvbk5ldHdvcmtEZWZpbml0aW9uIE5ldy12UkFSZXNlcnZhdGlvblBvbGljeSBOZXctdlJBUmVzZXJ2YXRpb25TdG9yYWdlRGVmaW5pdGlvbiBcIiArXG4gICAgICAgIFwiTmV3LXZSQVJvdXRlZE5ldHdvcmtQcm9maWxlIE5ldy12UkFTZXJ2aWNlIE5ldy12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgTmV3LXZSQVRlbmFudCBOZXctdlJBVGVuYW50RGlyZWN0b3J5IE5ldy12UkFVc2VyUHJpbmNpcGFsIE5ldy12Uk5JQXBwbGljYXRpb24gTmV3LXZSTklBcHBsaWNhdGlvblRpZXIgXCIgK1xuICAgICAgICBcIk5ldy12Uk5JRGF0YVNvdXJjZSBPcGVuLVZNQ29uc29sZVdpbmRvdyBQdWJsaXNoLU1vZHVsZSBQdWJsaXNoLU5zeFNwb29mZ3VhcmRQb2xpY3kgUHVibGlzaC1TY3JpcHQgUmVnaXN0ZXItUFNSZXBvc2l0b3J5IFJlZ2lzdGVyLVBhY2thZ2VTb3VyY2UgUmVtb3ZlLUFkdmFuY2VkU2V0dGluZyBcIiArXG4gICAgICAgIFwiUmVtb3ZlLUFsYXJtQWN0aW9uIFJlbW92ZS1BbGFybUFjdGlvblRyaWdnZXIgUmVtb3ZlLUFsaWFzIFJlbW92ZS1DRERyaXZlIFJlbW92ZS1DSUFjY2Vzc0NvbnRyb2xSdWxlIFJlbW92ZS1DSVZBcHAgUmVtb3ZlLUNJVkFwcE5ldHdvcmsgUmVtb3ZlLUNJVkFwcFRlbXBsYXRlIFJlbW92ZS1DbHVzdGVyIFwiICtcbiAgICAgICAgXCJSZW1vdmUtQ3VzdG9tQXR0cmlidXRlIFJlbW92ZS1EYXRhY2VudGVyIFJlbW92ZS1EYXRhc3RvcmUgUmVtb3ZlLURhdGFzdG9yZUNsdXN0ZXIgUmVtb3ZlLURyc0NsdXN0ZXJHcm91cCBSZW1vdmUtRHJzUnVsZSBSZW1vdmUtRHJzVk1Ib3N0UnVsZSBSZW1vdmUtRmxvcHB5RHJpdmUgUmVtb3ZlLUZvbGRlciBcIiArXG4gICAgICAgIFwiUmVtb3ZlLUhDWEFwcGxpYW5jZSBSZW1vdmUtSENYTmV0d29ya0V4dGVuc2lvbiBSZW1vdmUtSENYUmVwbGljYXRpb24gUmVtb3ZlLUhDWFNpdGVQYWlyaW5nIFJlbW92ZS1IYXJkRGlzayBSZW1vdmUtSVNjc2lIYmFUYXJnZXQgUmVtb3ZlLUludmVudG9yeSBSZW1vdmUtS2V5TWFuYWdlbWVudFNlcnZlciBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5ldHdvcmtBZGFwdGVyIFJlbW92ZS1OZnNVc2VyIFJlbW92ZS1Oc3hDbHVzdGVyIFJlbW92ZS1Oc3hDbHVzdGVyVnhsYW5Db25maWcgUmVtb3ZlLU5zeENvbnRyb2xsZXIgUmVtb3ZlLU5zeER5bmFtaWNDcml0ZXJpYSBSZW1vdmUtTnN4RHluYW1pY01lbWJlclNldCBSZW1vdmUtTnN4RWRnZSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeEVkZ2VCZ3BOZWlnaGJvdXIgUmVtb3ZlLU5zeEVkZ2VDZXJ0aWZpY2F0ZSBSZW1vdmUtTnN4RWRnZUNzciBSZW1vdmUtTnN4RWRnZUZpcmV3YWxsUnVsZSBSZW1vdmUtTnN4RWRnZUludGVyZmFjZUFkZHJlc3MgUmVtb3ZlLU5zeEVkZ2VOYXRSdWxlIFJlbW92ZS1Oc3hFZGdlT3NwZkFyZWEgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hFZGdlT3NwZkludGVyZmFjZSBSZW1vdmUtTnN4RWRnZVByZWZpeCBSZW1vdmUtTnN4RWRnZVJlZGlzdHJpYnV0aW9uUnVsZSBSZW1vdmUtTnN4RWRnZVN0YXRpY1JvdXRlIFJlbW92ZS1Oc3hFZGdlU3ViSW50ZXJmYWNlIFJlbW92ZS1Oc3hGaXJld2FsbEV4Y2x1c2lvbkxpc3RNZW1iZXIgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hGaXJld2FsbFJ1bGUgUmVtb3ZlLU5zeEZpcmV3YWxsUnVsZU1lbWJlciBSZW1vdmUtTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gUmVtb3ZlLU5zeEZpcmV3YWxsU2VjdGlvbiBSZW1vdmUtTnN4SXBQb29sIFJlbW92ZS1Oc3hJcFNldCBSZW1vdmUtTnN4SXBTZXRNZW1iZXIgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hMb2FkQmFsYW5jZXJBcHBsaWNhdGlvblByb2ZpbGUgUmVtb3ZlLU5zeExvYWRCYWxhbmNlck1vbml0b3IgUmVtb3ZlLU5zeExvYWRCYWxhbmNlclBvb2wgUmVtb3ZlLU5zeExvYWRCYWxhbmNlclBvb2xNZW1iZXIgUmVtb3ZlLU5zeExvYWRCYWxhbmNlclZpcCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXIgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJCZ3BOZWlnaGJvdXIgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJCcmlkZ2UgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2UgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJPc3BmQXJlYSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJPc3BmSW50ZXJmYWNlIFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyUHJlZml4IFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyUmVkaXN0cmlidXRpb25SdWxlIFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyU3RhdGljUm91dGUgUmVtb3ZlLU5zeExvZ2ljYWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hNYWNTZXQgUmVtb3ZlLU5zeFNlY29uZGFyeU1hbmFnZXIgUmVtb3ZlLU5zeFNlY3VyaXR5R3JvdXAgUmVtb3ZlLU5zeFNlY3VyaXR5R3JvdXBNZW1iZXIgUmVtb3ZlLU5zeFNlY3VyaXR5UG9saWN5IFJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeUFzc2lnbm1lbnQgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeVJ1bGUgUmVtb3ZlLU5zeFNlY3VyaXR5UG9saWN5UnVsZUdyb3VwIFJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeVJ1bGVTZXJ2aWNlIFJlbW92ZS1Oc3hTZWN1cml0eVRhZyBSZW1vdmUtTnN4U2VjdXJpdHlUYWdBc3NpZ25tZW50IFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4U2VnbWVudElkUmFuZ2UgUmVtb3ZlLU5zeFNlcnZpY2UgUmVtb3ZlLU5zeFNlcnZpY2VHcm91cCBSZW1vdmUtTnN4U3Bvb2ZndWFyZFBvbGljeSBSZW1vdmUtTnN4U3NsVnBuQ2xpZW50SW5zdGFsbGF0aW9uUGFja2FnZSBSZW1vdmUtTnN4U3NsVnBuSXBQb29sIFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4U3NsVnBuUHJpdmF0ZU5ldHdvcmsgUmVtb3ZlLU5zeFNzbFZwblVzZXIgUmVtb3ZlLU5zeFRyYW5zcG9ydFpvbmUgUmVtb3ZlLU5zeFRyYW5zcG9ydFpvbmVNZW1iZXIgUmVtb3ZlLU5zeFZkc0NvbnRleHQgUmVtb3ZlLU9TQ3VzdG9taXphdGlvbk5pY01hcHBpbmcgXCIgK1xuICAgICAgICBcIlJlbW92ZS1PU0N1c3RvbWl6YXRpb25TcGVjIFJlbW92ZS1PcmcgUmVtb3ZlLU9yZ05ldHdvcmsgUmVtb3ZlLU9yZ1ZkYyBSZW1vdmUtT3JnVmRjTmV0d29yayBSZW1vdmUtUFNSZWFkTGluZUtleUhhbmRsZXIgUmVtb3ZlLVBhc3N0aHJvdWdoRGV2aWNlIFJlbW92ZS1SZXNvdXJjZVBvb2wgXCIgK1xuICAgICAgICBcIlJlbW92ZS1TbmFwc2hvdCBSZW1vdmUtU3BibVN0b3JhZ2VQb2xpY3kgUmVtb3ZlLVN0YXRJbnRlcnZhbCBSZW1vdmUtVGFnIFJlbW92ZS1UYWdBc3NpZ25tZW50IFJlbW92ZS1UYWdDYXRlZ29yeSBSZW1vdmUtVGVtcGxhdGUgUmVtb3ZlLVVzYkRldmljZSBSZW1vdmUtVkFJT0ZpbHRlciBSZW1vdmUtVkFwcCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZEUG9ydEdyb3VwIFJlbW92ZS1WRFN3aXRjaCBSZW1vdmUtVkRTd2l0Y2hQaHlzaWNhbE5ldHdvcmtBZGFwdGVyIFJlbW92ZS1WRFN3aXRjaFByaXZhdGVWbGFuIFJlbW92ZS1WRFN3aXRjaFZNSG9zdCBSZW1vdmUtVkRpc2sgUmVtb3ZlLVZJQ3JlZGVudGlhbFN0b3JlSXRlbSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZJUGVybWlzc2lvbiBSZW1vdmUtVklQcm9wZXJ0eSBSZW1vdmUtVklSb2xlIFJlbW92ZS1WTSBSZW1vdmUtVk1Ib3N0IFJlbW92ZS1WTUhvc3RBY2NvdW50IFJlbW92ZS1WTUhvc3ROZXR3b3JrQWRhcHRlciBSZW1vdmUtVk1Ib3N0TnRwU2VydmVyIFJlbW92ZS1WTUhvc3RQcm9maWxlIFwiICtcbiAgICAgICAgXCJSZW1vdmUtVk1Ib3N0UHJvZmlsZVZtUG9ydEdyb3VwQ29uZmlndXJhdGlvbiBSZW1vdmUtVk1Ib3N0Um91dGUgUmVtb3ZlLVZUcG0gUmVtb3ZlLVZhc2FQcm92aWRlciBSZW1vdmUtVmlydHVhbFBvcnRHcm91cCBSZW1vdmUtVmlydHVhbFN3aXRjaCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZpcnR1YWxTd2l0Y2hQaHlzaWNhbE5ldHdvcmtBZGFwdGVyIFJlbW92ZS1Wc2FuRGlzayBSZW1vdmUtVnNhbkRpc2tHcm91cCBSZW1vdmUtVnNhbkZhdWx0RG9tYWluIFJlbW92ZS1Wc2FuSXNjc2lJbml0aWF0b3JHcm91cCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwVGFyZ2V0QXNzb2NpYXRpb24gUmVtb3ZlLVZzYW5Jc2NzaUx1biBSZW1vdmUtVnNhbklzY3NpVGFyZ2V0IFJlbW92ZS12UkFCdXNpbmVzc0dyb3VwIFJlbW92ZS12UkFDdXN0b21Gb3JtIFJlbW92ZS12UkFFeHRlcm5hbE5ldHdvcmtQcm9maWxlIFwiICtcbiAgICAgICAgXCJSZW1vdmUtdlJBR3JvdXBQcmluY2lwYWwgUmVtb3ZlLXZSQUljb24gUmVtb3ZlLXZSQU5BVE5ldHdvcmtQcm9maWxlIFJlbW92ZS12UkFQYWNrYWdlIFJlbW92ZS12UkFQcmluY2lwYWxGcm9tVGVuYW50Um9sZSBSZW1vdmUtdlJBUHJvcGVydHlEZWZpbml0aW9uIFJlbW92ZS12UkFQcm9wZXJ0eUdyb3VwIFwiICtcbiAgICAgICAgXCJSZW1vdmUtdlJBUmVzZXJ2YXRpb24gUmVtb3ZlLXZSQVJlc2VydmF0aW9uTmV0d29yayBSZW1vdmUtdlJBUmVzZXJ2YXRpb25Qb2xpY3kgUmVtb3ZlLXZSQVJlc2VydmF0aW9uU3RvcmFnZSBSZW1vdmUtdlJBUm91dGVkTmV0d29ya1Byb2ZpbGUgUmVtb3ZlLXZSQVNlcnZpY2UgXCIgK1xuICAgICAgICBcIlJlbW92ZS12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgUmVtb3ZlLXZSQVRlbmFudCBSZW1vdmUtdlJBVGVuYW50RGlyZWN0b3J5IFJlbW92ZS12UkFVc2VyUHJpbmNpcGFsIFJlbW92ZS12Uk5JQXBwbGljYXRpb24gUmVtb3ZlLXZSTklBcHBsaWNhdGlvblRpZXIgUmVtb3ZlLXZSTklEYXRhU291cmNlIFwiICtcbiAgICAgICAgXCJSZXBhaXItTnN4RWRnZSBSZXBhaXItVnNhbk9iamVjdCBSZXF1ZXN0LXZSQUNhdGFsb2dJdGVtIFJlcXVlc3QtdlJBUmVzb3VyY2VBY3Rpb24gUmVzdGFydC1DSVZBcHAgUmVzdGFydC1DSVZBcHBHdWVzdCBSZXN0YXJ0LUNJVk0gUmVzdGFydC1DSVZNR3Vlc3QgUmVzdGFydC1WTSBSZXN0YXJ0LVZNR3Vlc3QgXCIgK1xuICAgICAgICBcIlJlc3RhcnQtVk1Ib3N0IFJlc3RhcnQtVk1Ib3N0U2VydmljZSBSZXN1bWUtSENYUmVwbGljYXRpb24gUmV2b2tlLU5zeFNwb29mZ3VhcmROaWNBcHByb3ZhbCBTYXZlLU1vZHVsZSBTYXZlLVBhY2thZ2UgU2F2ZS1TY3JpcHQgU2VhcmNoLUNsb3VkIFNldC1BZHZhbmNlZFNldHRpbmcgXCIgK1xuICAgICAgICBcIlNldC1BbGFybURlZmluaXRpb24gU2V0LUFubm90YXRpb24gU2V0LUNERHJpdmUgU2V0LUNJQWNjZXNzQ29udHJvbFJ1bGUgU2V0LUNJTmV0d29ya0FkYXB0ZXIgU2V0LUNJVkFwcCBTZXQtQ0lWQXBwTmV0d29yayBTZXQtQ0lWQXBwU3RhcnRSdWxlIFNldC1DSVZBcHBUZW1wbGF0ZSBTZXQtQ2x1c3RlciBcIiArXG4gICAgICAgIFwiU2V0LUN1c3RvbUF0dHJpYnV0ZSBTZXQtRGF0YWNlbnRlciBTZXQtRGF0YXN0b3JlIFNldC1EYXRhc3RvcmVDbHVzdGVyIFNldC1EcnNDbHVzdGVyR3JvdXAgU2V0LURyc1J1bGUgU2V0LURyc1ZNSG9zdFJ1bGUgU2V0LUZsb3BweURyaXZlIFNldC1Gb2xkZXIgU2V0LUhDWEFwcGxpYW5jZSBcIiArXG4gICAgICAgIFwiU2V0LUhDWE1pZ3JhdGlvbiBTZXQtSENYUmVwbGljYXRpb24gU2V0LUhhcmREaXNrIFNldC1JU2NzaUhiYVRhcmdldCBTZXQtS2V5TWFuYWdlbWVudFNlcnZlciBTZXQtS21zQ2x1c3RlciBTZXQtTWFya2Rvd25PcHRpb24gU2V0LU5ldHdvcmtBZGFwdGVyIFNldC1OZnNVc2VyIFNldC1OaWNUZWFtaW5nUG9saWN5IFwiICtcbiAgICAgICAgXCJTZXQtTm9kZUV4Y2x1c2l2ZVJlc291cmNlcyBTZXQtTm9kZU1hbmFnZXIgU2V0LU5vZGVSZXNvdXJjZVNvdXJjZSBTZXQtTm9kZVJlc291cmNlcyBTZXQtTnN4RWRnZSBTZXQtTnN4RWRnZUJncCBTZXQtTnN4RWRnZUZpcmV3YWxsIFNldC1Oc3hFZGdlSW50ZXJmYWNlIFNldC1Oc3hFZGdlTmF0IFwiICtcbiAgICAgICAgXCJTZXQtTnN4RWRnZU9zcGYgU2V0LU5zeEVkZ2VSb3V0aW5nIFNldC1Oc3hGaXJld2FsbEdsb2JhbENvbmZpZ3VyYXRpb24gU2V0LU5zeEZpcmV3YWxsUnVsZSBTZXQtTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gU2V0LU5zeEZpcmV3YWxsVGhyZXNob2xkIFNldC1Oc3hMb2FkQmFsYW5jZXIgXCIgK1xuICAgICAgICBcIlNldC1Oc3hMb2FkQmFsYW5jZXJQb29sTWVtYmVyIFNldC1Oc3hMb2dpY2FsUm91dGVyIFNldC1Oc3hMb2dpY2FsUm91dGVyQmdwIFNldC1Oc3hMb2dpY2FsUm91dGVyQnJpZGdpbmcgU2V0LU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2UgU2V0LU5zeExvZ2ljYWxSb3V0ZXJPc3BmIFwiICtcbiAgICAgICAgXCJTZXQtTnN4TG9naWNhbFJvdXRlclJvdXRpbmcgU2V0LU5zeE1hbmFnZXIgU2V0LU5zeE1hbmFnZXJSb2xlIFNldC1Oc3hNYW5hZ2VyVGltZVNldHRpbmdzIFNldC1Oc3hTZWN1cml0eVBvbGljeSBTZXQtTnN4U2VjdXJpdHlQb2xpY3lGaXJld2FsbFJ1bGUgU2V0LU5zeFNzbFZwbiBcIiArXG4gICAgICAgIFwiU2V0LU9TQ3VzdG9taXphdGlvbk5pY01hcHBpbmcgU2V0LU9TQ3VzdG9taXphdGlvblNwZWMgU2V0LU9yZyBTZXQtT3JnTmV0d29yayBTZXQtT3JnVmRjIFNldC1PcmdWZGNOZXR3b3JrIFNldC1QU0N1cnJlbnRDb25maWd1cmF0aW9uTm9kZSBTZXQtUFNEZWZhdWx0Q29uZmlndXJhdGlvbkRvY3VtZW50IFwiICtcbiAgICAgICAgXCJTZXQtUFNNZXRhQ29uZmlnRG9jSW5zUHJvY2Vzc2VkQmVmb3JlTWV0YSBTZXQtUFNNZXRhQ29uZmlnVmVyc2lvbkluZm9WMiBTZXQtUFNSZWFkTGluZUtleUhhbmRsZXIgU2V0LVBTUmVhZExpbmVPcHRpb24gU2V0LVBTUmVwb3NpdG9yeSBTZXQtUFNUb3BDb25maWd1cmF0aW9uTmFtZSBcIiArXG4gICAgICAgIFwiU2V0LVBhY2thZ2VTb3VyY2UgU2V0LVBvd2VyQ0xJQ29uZmlndXJhdGlvbiBTZXQtUmVzb3VyY2VQb29sIFNldC1TY3NpQ29udHJvbGxlciBTZXQtU2NzaUx1biBTZXQtU2NzaUx1blBhdGggU2V0LVNlY3VyaXR5UG9saWN5IFNldC1TbmFwc2hvdCBTZXQtU3BibUVudGl0eUNvbmZpZ3VyYXRpb24gXCIgK1xuICAgICAgICBcIlNldC1TcGJtU3RvcmFnZVBvbGljeSBTZXQtU3RhdEludGVydmFsIFNldC1UYWcgU2V0LVRhZ0NhdGVnb3J5IFNldC1UZW1wbGF0ZSBTZXQtVkFJT0ZpbHRlciBTZXQtVkFwcCBTZXQtVkRCbG9ja2VkUG9saWN5IFNldC1WRFBvcnQgU2V0LVZEUG9ydGdyb3VwIFNldC1WRFBvcnRncm91cE92ZXJyaWRlUG9saWN5IFwiICtcbiAgICAgICAgXCJTZXQtVkRTZWN1cml0eVBvbGljeSBTZXQtVkRTd2l0Y2ggU2V0LVZEVHJhZmZpY1NoYXBpbmdQb2xpY3kgU2V0LVZEVXBsaW5rTGFjcFBvbGljeSBTZXQtVkRVcGxpbmtUZWFtaW5nUG9saWN5IFNldC1WRFZsYW5Db25maWd1cmF0aW9uIFNldC1WRGlzayBTZXQtVklQZXJtaXNzaW9uIFNldC1WSVJvbGUgU2V0LVZNIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0IFNldC1WTUhvc3RBY2NvdW50IFNldC1WTUhvc3RBZHZhbmNlZENvbmZpZ3VyYXRpb24gU2V0LVZNSG9zdEF1dGhlbnRpY2F0aW9uIFNldC1WTUhvc3REaWFnbm9zdGljUGFydGl0aW9uIFNldC1WTUhvc3RGaXJld2FsbERlZmF1bHRQb2xpY3kgU2V0LVZNSG9zdEZpcmV3YWxsRXhjZXB0aW9uIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0RmlybXdhcmUgU2V0LVZNSG9zdEhiYSBTZXQtVk1Ib3N0TW9kdWxlIFNldC1WTUhvc3ROZXR3b3JrIFNldC1WTUhvc3ROZXR3b3JrQWRhcHRlciBTZXQtVk1Ib3N0UHJvZmlsZSBTZXQtVk1Ib3N0UHJvZmlsZUltYWdlQ2FjaGVDb25maWd1cmF0aW9uIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0UHJvZmlsZVN0b3JhZ2VEZXZpY2VDb25maWd1cmF0aW9uIFNldC1WTUhvc3RQcm9maWxlVXNlckNvbmZpZ3VyYXRpb24gU2V0LVZNSG9zdFByb2ZpbGVWbVBvcnRHcm91cENvbmZpZ3VyYXRpb24gU2V0LVZNSG9zdFJvdXRlIFNldC1WTUhvc3RTZXJ2aWNlIFNldC1WTUhvc3RTbm1wIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0U3RhcnRQb2xpY3kgU2V0LVZNSG9zdFN0b3JhZ2UgU2V0LVZNSG9zdFN5c0xvZ1NlcnZlciBTZXQtVk1RdWVzdGlvbiBTZXQtVk1SZXNvdXJjZUNvbmZpZ3VyYXRpb24gU2V0LVZNU3RhcnRQb2xpY3kgU2V0LVZUcG0gU2V0LVZpcnR1YWxQb3J0R3JvdXAgU2V0LVZpcnR1YWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIlNldC1Wc2FuQ2x1c3RlckNvbmZpZ3VyYXRpb24gU2V0LVZzYW5GYXVsdERvbWFpbiBTZXQtVnNhbklzY3NpSW5pdGlhdG9yR3JvdXAgU2V0LVZzYW5Jc2NzaUx1biBTZXQtVnNhbklzY3NpVGFyZ2V0IFNldC12UkFCdXNpbmVzc0dyb3VwIFNldC12UkFDYXRhbG9nSXRlbSBTZXQtdlJBQ3VzdG9tRm9ybSBcIiArXG4gICAgICAgIFwiU2V0LXZSQUVudGl0bGVtZW50IFNldC12UkFFeHRlcm5hbE5ldHdvcmtQcm9maWxlIFNldC12UkFOQVROZXR3b3JrUHJvZmlsZSBTZXQtdlJBUmVzZXJ2YXRpb24gU2V0LXZSQVJlc2VydmF0aW9uTmV0d29yayBTZXQtdlJBUmVzZXJ2YXRpb25Qb2xpY3kgU2V0LXZSQVJlc2VydmF0aW9uU3RvcmFnZSBcIiArXG4gICAgICAgIFwiU2V0LXZSQVJvdXRlZE5ldHdvcmtQcm9maWxlIFNldC12UkFTZXJ2aWNlIFNldC12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgU2V0LXZSQVRlbmFudCBTZXQtdlJBVGVuYW50RGlyZWN0b3J5IFNldC12UkFVc2VyUHJpbmNpcGFsIFNldC12Uk5JRGF0YVNvdXJjZVNOTVBDb25maWcgU2hvdy1NYXJrZG93biBcIiArXG4gICAgICAgIFwiU3RhcnQtQ0lWQXBwIFN0YXJ0LUNJVk0gU3RhcnQtSENYTWlncmF0aW9uIFN0YXJ0LUhDWFJlcGxpY2F0aW9uIFN0YXJ0LVNwYm1SZXBsaWNhdGlvbkZhaWxvdmVyIFN0YXJ0LVNwYm1SZXBsaWNhdGlvblByZXBhcmVGYWlsb3ZlciBTdGFydC1TcGJtUmVwbGljYXRpb25Qcm9tb3RlIFwiICtcbiAgICAgICAgXCJTdGFydC1TcGJtUmVwbGljYXRpb25SZXZlcnNlIFN0YXJ0LVNwYm1SZXBsaWNhdGlvblRlc3RGYWlsb3ZlciBTdGFydC1UaHJlYWRKb2IgU3RhcnQtVkFwcCBTdGFydC1WTSBTdGFydC1WTUhvc3QgU3RhcnQtVk1Ib3N0U2VydmljZSBTdGFydC1Wc2FuQ2x1c3RlckRpc2tVcGRhdGUgXCIgK1xuICAgICAgICBcIlN0YXJ0LVZzYW5DbHVzdGVyUmViYWxhbmNlIFN0YXJ0LVZzYW5FbmNyeXB0aW9uQ29uZmlndXJhdGlvbiBTdG9wLUNJVkFwcCBTdG9wLUNJVkFwcEd1ZXN0IFN0b3AtQ0lWTSBTdG9wLUNJVk1HdWVzdCBTdG9wLVNwYm1SZXBsaWNhdGlvblRlc3RGYWlsb3ZlciBTdG9wLVRhc2sgU3RvcC1WQXBwIFN0b3AtVk0gXCIgK1xuICAgICAgICBcIlN0b3AtVk1HdWVzdCBTdG9wLVZNSG9zdCBTdG9wLVZNSG9zdFNlcnZpY2UgU3RvcC1Wc2FuQ2x1c3RlclJlYmFsYW5jZSBTdXNwZW5kLUNJVkFwcCBTdXNwZW5kLUNJVk0gU3VzcGVuZC1IQ1hSZXBsaWNhdGlvbiBTdXNwZW5kLVZNIFN1c3BlbmQtVk1HdWVzdCBTdXNwZW5kLVZNSG9zdCBcIiArXG4gICAgICAgIFwiU3luYy1TcGJtUmVwbGljYXRpb25Hcm91cCBUZXN0LUNvbmZsaWN0aW5nUmVzb3VyY2VzIFRlc3QtSENYTWlncmF0aW9uIFRlc3QtSENYUmVwbGljYXRpb24gVGVzdC1Kc29uIFRlc3QtTW9kdWxlUmVsb2FkUmVxdWlyZWQgVGVzdC1Nb2ZJbnN0YW5jZVRleHQgVGVzdC1Ob2RlTWFuYWdlciBcIiArXG4gICAgICAgIFwiVGVzdC1Ob2RlUmVzb3VyY2VTb3VyY2UgVGVzdC1Ob2RlUmVzb3VyY2VzIFRlc3QtU2NyaXB0RmlsZUluZm8gVGVzdC1WTUhvc3RQcm9maWxlQ29tcGxpYW5jZSBUZXN0LVZNSG9zdFNubXAgVGVzdC1Wc2FuQ2x1c3RlckhlYWx0aCBUZXN0LVZzYW5OZXR3b3JrUGVyZm9ybWFuY2UgXCIgK1xuICAgICAgICBcIlRlc3QtVnNhblN0b3JhZ2VQZXJmb3JtYW5jZSBUZXN0LVZzYW5WTUNyZWF0aW9uIFRlc3QtdlJBUGFja2FnZSBVbmluc3RhbGwtTW9kdWxlIFVuaW5zdGFsbC1QYWNrYWdlIFVuaW5zdGFsbC1TY3JpcHQgVW5sb2NrLVZNIFVucmVnaXN0ZXItUFNSZXBvc2l0b3J5IFVucmVnaXN0ZXItUGFja2FnZVNvdXJjZSBcIiArXG4gICAgICAgIFwiVXBkYXRlLUNvbmZpZ3VyYXRpb25Eb2N1bWVudFJlZiBVcGRhdGUtQ29uZmlndXJhdGlvbkVycm9yQ291bnQgVXBkYXRlLURlcGVuZHNPbiBVcGRhdGUtTG9jYWxDb25maWdNYW5hZ2VyIFVwZGF0ZS1Nb2R1bGUgVXBkYXRlLU1vZHVsZU1hbmlmZXN0IFVwZGF0ZS1Nb2R1bGVWZXJzaW9uIFVwZGF0ZS1Qb3dlck5zeCBcIiArXG4gICAgICAgIFwiVXBkYXRlLVNjcmlwdCBVcGRhdGUtU2NyaXB0RmlsZUluZm8gVXBkYXRlLVRvb2xzIFVwZGF0ZS1Wc2FuSGNsRGF0YWJhc2UgVmFsaWRhdGVVcGRhdGUtQ29uZmlndXJhdGlvbkRhdGEgV2FpdC1EZWJ1Z2dlciBXYWl0LU5zeENvbnRyb2xsZXJKb2IgV2FpdC1Oc3hHZW5lcmljSm9iIFdhaXQtTnN4Sm9iIFwiICtcbiAgICAgICAgXCJXYWl0LVRhc2sgV2FpdC1Ub29scyBXcml0ZS1JbmZvcm1hdGlvbiBXcml0ZS1Mb2cgV3JpdGUtTWV0YUNvbmZpZ0ZpbGUgV3JpdGUtTm9kZU1PRkZpbGVcIixcbiAgICAgIG5vbWFya3VwOlxuICAgICAgICBcIi1uZSAtZXEgLWx0IC1ndCAtZ2UgLWxlIC1ub3QgLWxpa2UgLW5vdGxpa2UgLW1hdGNoIC1ub3RtYXRjaCAtY29udGFpbnMgLW5vdGNvbnRhaW5zIC1pbiAtbm90aW4gLXJlcGxhY2VcIixcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBCQUNLVElDS19FU0NBUEUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgUVVPVEVfU1RSSU5HLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBMSVRFUkFMLFxuICAgICAgVkFSLFxuICAgICAgUFNfQ09NTUVOVCxcbiAgICBdLFxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ0J1ZmZlcmVkUmVhZGVyIFBWZWN0b3IgUEZvbnQgUEltYWdlIFBHcmFwaGljcyBIYXNoTWFwIGJvb2xlYW4gYnl0ZSBjaGFyIGNvbG9yICcgK1xuICAgICAgICAnZG91YmxlIGZsb2F0IGludCBsb25nIFN0cmluZyBBcnJheSBGbG9hdERpY3QgRmxvYXRMaXN0IEludERpY3QgSW50TGlzdCBKU09OQXJyYXkgSlNPTk9iamVjdCAnICtcbiAgICAgICAgJ09iamVjdCBTdHJpbmdEaWN0IFN0cmluZ0xpc3QgVGFibGUgVGFibGVSb3cgWE1MICcgK1xuICAgICAgICAvLyBKYXZhIGtleXdvcmRzXG4gICAgICAgICdmYWxzZSBzeW5jaHJvbml6ZWQgaW50IGFic3RyYWN0IGZsb2F0IHByaXZhdGUgY2hhciBib29sZWFuIHN0YXRpYyBudWxsIGlmIGNvbnN0ICcgK1xuICAgICAgICAnZm9yIHRydWUgd2hpbGUgbG9uZyB0aHJvdyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHJldHVybiB2b2lkICcgK1xuICAgICAgICAnZW51bSBlbHNlIGJyZWFrIHRyYW5zaWVudCBuZXcgY2F0Y2ggaW5zdGFuY2VvZiBieXRlIHN1cGVyIHZvbGF0aWxlIGNhc2UgYXNzZXJ0IHNob3J0ICcgK1xuICAgICAgICAncGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcm90ZWN0ZWQgcHVibGljIHByaXZhdGUnLFxuICAgICAgbGl0ZXJhbDogJ1AyRCBQM0QgSEFMRl9QSSBQSSBRVUFSVEVSX1BJIFRBVSBUV09fUEknLFxuICAgICAgdGl0bGU6ICdzZXR1cCBkcmF3JyxcbiAgICAgIGJ1aWx0X2luOiAnZGlzcGxheUhlaWdodCBkaXNwbGF5V2lkdGggbW91c2VZIG1vdXNlWCBtb3VzZVByZXNzZWQgcG1vdXNlWCBwbW91c2VZIGtleSAnICtcbiAgICAgICAgJ2tleUNvZGUgcGl4ZWxzIGZvY3VzZWQgZnJhbWVDb3VudCBmcmFtZVJhdGUgaGVpZ2h0IHdpZHRoICcgK1xuICAgICAgICAnc2l6ZSBjcmVhdGVHcmFwaGljcyBiZWdpbkRyYXcgY3JlYXRlU2hhcGUgbG9hZFNoYXBlIFBTaGFwZSBhcmMgZWxsaXBzZSBsaW5lIHBvaW50ICcgK1xuICAgICAgICAncXVhZCByZWN0IHRyaWFuZ2xlIGJlemllciBiZXppZXJEZXRhaWwgYmV6aWVyUG9pbnQgYmV6aWVyVGFuZ2VudCBjdXJ2ZSBjdXJ2ZURldGFpbCBjdXJ2ZVBvaW50ICcgK1xuICAgICAgICAnY3VydmVUYW5nZW50IGN1cnZlVGlnaHRuZXNzIHNoYXBlIHNoYXBlTW9kZSBiZWdpbkNvbnRvdXIgYmVnaW5TaGFwZSBiZXppZXJWZXJ0ZXggY3VydmVWZXJ0ZXggJyArXG4gICAgICAgICdlbmRDb250b3VyIGVuZFNoYXBlIHF1YWRyYXRpY1ZlcnRleCB2ZXJ0ZXggZWxsaXBzZU1vZGUgbm9TbW9vdGggcmVjdE1vZGUgc21vb3RoIHN0cm9rZUNhcCAnICtcbiAgICAgICAgJ3N0cm9rZUpvaW4gc3Ryb2tlV2VpZ2h0IG1vdXNlQ2xpY2tlZCBtb3VzZURyYWdnZWQgbW91c2VNb3ZlZCBtb3VzZVByZXNzZWQgbW91c2VSZWxlYXNlZCAnICtcbiAgICAgICAgJ21vdXNlV2hlZWwga2V5UHJlc3NlZCBrZXlQcmVzc2Vka2V5UmVsZWFzZWQga2V5VHlwZWQgcHJpbnQgcHJpbnRsbiBzYXZlIHNhdmVGcmFtZSBkYXkgaG91ciAnICtcbiAgICAgICAgJ21pbGxpcyBtaW51dGUgbW9udGggc2Vjb25kIHllYXIgYmFja2dyb3VuZCBjbGVhciBjb2xvck1vZGUgZmlsbCBub0ZpbGwgbm9TdHJva2Ugc3Ryb2tlIGFscGhhICcgK1xuICAgICAgICAnYmx1ZSBicmlnaHRuZXNzIGNvbG9yIGdyZWVuIGh1ZSBsZXJwQ29sb3IgcmVkIHNhdHVyYXRpb24gbW9kZWxYIG1vZGVsWSBtb2RlbFogc2NyZWVuWCBzY3JlZW5ZICcgK1xuICAgICAgICAnc2NyZWVuWiBhbWJpZW50IGVtaXNzaXZlIHNoaW5pbmVzcyBzcGVjdWxhciBhZGQgY3JlYXRlSW1hZ2UgYmVnaW5DYW1lcmEgY2FtZXJhIGVuZENhbWVyYSBmcnVzdHVtICcgK1xuICAgICAgICAnb3J0aG8gcGVyc3BlY3RpdmUgcHJpbnRDYW1lcmEgcHJpbnRQcm9qZWN0aW9uIGN1cnNvciBmcmFtZVJhdGUgbm9DdXJzb3IgZXhpdCBsb29wIG5vTG9vcCBwb3BTdHlsZSAnICtcbiAgICAgICAgJ3B1c2hTdHlsZSByZWRyYXcgYmluYXJ5IGJvb2xlYW4gYnl0ZSBjaGFyIGZsb2F0IGhleCBpbnQgc3RyIHVuYmluYXJ5IHVuaGV4IGpvaW4gbWF0Y2ggbWF0Y2hBbGwgbmYgJyArXG4gICAgICAgICduZmMgbmZwIG5mcyBzcGxpdCBzcGxpdFRva2VucyB0cmltIGFwcGVuZCBhcnJheUNvcHkgY29uY2F0IGV4cGFuZCByZXZlcnNlIHNob3J0ZW4gc29ydCBzcGxpY2Ugc3Vic2V0ICcgK1xuICAgICAgICAnYm94IHNwaGVyZSBzcGhlcmVEZXRhaWwgY3JlYXRlSW5wdXQgY3JlYXRlUmVhZGVyIGxvYWRCeXRlcyBsb2FkSlNPTkFycmF5IGxvYWRKU09OT2JqZWN0IGxvYWRTdHJpbmdzICcgK1xuICAgICAgICAnbG9hZFRhYmxlIGxvYWRYTUwgb3BlbiBwYXJzZVhNTCBzYXZlVGFibGUgc2VsZWN0Rm9sZGVyIHNlbGVjdElucHV0IGJlZ2luUmF3IGJlZ2luUmVjb3JkIGNyZWF0ZU91dHB1dCAnICtcbiAgICAgICAgJ2NyZWF0ZVdyaXRlciBlbmRSYXcgZW5kUmVjb3JkIFByaW50V3JpdGVyc2F2ZUJ5dGVzIHNhdmVKU09OQXJyYXkgc2F2ZUpTT05PYmplY3Qgc2F2ZVN0cmVhbSBzYXZlU3RyaW5ncyAnICtcbiAgICAgICAgJ3NhdmVYTUwgc2VsZWN0T3V0cHV0IHBvcE1hdHJpeCBwcmludE1hdHJpeCBwdXNoTWF0cml4IHJlc2V0TWF0cml4IHJvdGF0ZSByb3RhdGVYIHJvdGF0ZVkgcm90YXRlWiBzY2FsZSAnICtcbiAgICAgICAgJ3NoZWFyWCBzaGVhclkgdHJhbnNsYXRlIGFtYmllbnRMaWdodCBkaXJlY3Rpb25hbExpZ2h0IGxpZ2h0RmFsbG9mZiBsaWdodHMgbGlnaHRTcGVjdWxhciBub0xpZ2h0cyBub3JtYWwgJyArXG4gICAgICAgICdwb2ludExpZ2h0IHNwb3RMaWdodCBpbWFnZSBpbWFnZU1vZGUgbG9hZEltYWdlIG5vVGludCByZXF1ZXN0SW1hZ2UgdGludCB0ZXh0dXJlIHRleHR1cmVNb2RlIHRleHR1cmVXcmFwICcgK1xuICAgICAgICAnYmxlbmQgY29weSBmaWx0ZXIgZ2V0IGxvYWRQaXhlbHMgc2V0IHVwZGF0ZVBpeGVscyBibGVuZE1vZGUgbG9hZFNoYWRlciBQU2hhZGVycmVzZXRTaGFkZXIgc2hhZGVyIGNyZWF0ZUZvbnQgJyArXG4gICAgICAgICdsb2FkRm9udCB0ZXh0IHRleHRGb250IHRleHRBbGlnbiB0ZXh0TGVhZGluZyB0ZXh0TW9kZSB0ZXh0U2l6ZSB0ZXh0V2lkdGggdGV4dEFzY2VudCB0ZXh0RGVzY2VudCBhYnMgY2VpbCAnICtcbiAgICAgICAgJ2NvbnN0cmFpbiBkaXN0IGV4cCBmbG9vciBsZXJwIGxvZyBtYWcgbWFwIG1heCBtaW4gbm9ybSBwb3cgcm91bmQgc3Egc3FydCBhY29zIGFzaW4gYXRhbiBhdGFuMiBjb3MgZGVncmVlcyAnICtcbiAgICAgICAgJ3JhZGlhbnMgc2luIHRhbiBub2lzZSBub2lzZURldGFpbCBub2lzZVNlZWQgcmFuZG9tIHJhbmRvbUdhdXNzaWFuIHJhbmRvbVNlZWQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW2EtekEtWl9dW1xcXFxkYS16QS1aX10rXFxcXC5bXFxcXGRhLXpBLVpfXXsxLDN9JywgZW5kOiAnOicsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKG5jYWxsc3x0b3R0aW1lfGN1bXRpbWUpJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAnbmNhbGxzIHRvdHRpbWV8MTAgY3VtdGltZXwxMCBmaWxlbmFtZScsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnZnVuY3Rpb24gY2FsbHMnLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTlVNQkVSX01PREVdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJCcsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQVRPTSA9IHtcblxuICAgIGJlZ2luOiAvW2Etel1bQS1aYS16MC05X10qLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgVkFSID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvW0EtWl1bYS16QS1aMC05X10qL30sXG4gICAgICB7YmVnaW46IC9fW0EtWmEtejAtOV9dKi99LFxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFBBUkVOVEVEID0ge1xuXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIExJU1QgPSB7XG5cbiAgICBiZWdpbjogL1xcWy8sXG4gICAgZW5kOiAvXFxdL1xuICB9O1xuXG4gIHZhciBMSU5FX0NPTU1FTlQgPSB7XG5cbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogLyUvLCBlbmQ6IC8kLyxcbiAgICBjb250YWluczogW2hsanMuUEhSQVNBTF9XT1JEU19NT0RFXVxuICB9O1xuXG4gIHZhciBCQUNLVElDS19TVFJJTkcgPSB7XG5cbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvYC8sIGVuZDogL2AvLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICB9O1xuXG4gIHZhciBDSEFSX0NPREUgPSB7XG5cbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyAwJ2EgZXRjLlxuICAgIGJlZ2luOiAvMFxcJyhcXFxcXFwnfC4pL1xuICB9O1xuXG4gIHZhciBTUEFDRV9DT0RFID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLzBcXCdcXFxccy8gLy8gMCdcXHNcbiAgfTtcblxuICB2YXIgUFJFRF9PUCA9IHsgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBiZWdpbjogLzotL1xuICB9O1xuXG4gIHZhciBpbm5lciA9IFtcblxuICAgIEFUT00sXG4gICAgVkFSLFxuICAgIFBBUkVOVEVELFxuICAgIFBSRURfT1AsXG4gICAgTElTVCxcbiAgICBMSU5FX0NPTU1FTlQsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICBCQUNLVElDS19TVFJJTkcsXG4gICAgQ0hBUl9DT0RFLFxuICAgIFNQQUNFX0NPREUsXG4gICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gIF07XG5cbiAgUEFSRU5URUQuY29udGFpbnMgPSBpbm5lcjtcbiAgTElTVC5jb250YWlucyA9IGlubmVyO1xuXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IGlubmVyLmNvbmNhdChbXG4gICAgICB7YmVnaW46IC9cXC4kL30gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICAvLyB3aGl0ZXNwYWNlczogc3BhY2UsIHRhYiwgZm9ybWZlZWRcbiAgdmFyIFdTMCA9ICdbIFxcXFx0XFxcXGZdKic7XG4gIHZhciBXUzEgPSAnWyBcXFxcdFxcXFxmXSsnO1xuICAvLyBkZWxpbWl0ZXJcbiAgdmFyIERFTElNID0gJygnICsgV1MwKydbOj1dJytXUzArICd8JyArIFdTMSArICcpJztcbiAgdmFyIEtFWV9BTFBIQU5VTSA9ICcoW15cXFxcXFxcXFxcXFxXOj0gXFxcXHRcXFxcZlxcXFxuXXxcXFxcXFxcXC4pKyc7XG4gIHZhciBLRVlfT1RIRVIgPSAnKFteXFxcXFxcXFw6PSBcXFxcdFxcXFxmXFxcXG5dfFxcXFxcXFxcLikrJztcblxuICB2YXIgREVMSU1fQU5EX1ZBTFVFID0ge1xuICAgICAgICAgIC8vIHNraXAgREVMSU1cbiAgICAgICAgICBlbmQ6IERFTElNLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgIC8vIHZhbHVlOiBldmVyeXRoaW5nIHVudGlsIGVuZCBvZiBsaW5lIChhZ2FpbiwgdGFraW5nIGludG8gYWNjb3VudCBiYWNrc2xhc2hlcylcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHsgYmVnaW46ICdcXFxcXFxcXFxcXFxuJyB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXHMqWyEjXScsICckJyksXG4gICAgICAvLyBrZXk6IGV2ZXJ5dGhpbmcgdW50aWwgd2hpdGVzcGFjZSBvciA9IG9yIDogKHRha2luZyBpbnRvIGFjY291bnQgYmFja3NsYXNoZXMpXG4gICAgICAvLyBjYXNlIG9mIGEgXCJub3JtYWxcIiBrZXlcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IEtFWV9BTFBIQU5VTSArIERFTElNLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgICAgIGJlZ2luOiBLRVlfQUxQSEFOVU0sXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdGFydHM6IERFTElNX0FORF9WQUxVRVxuICAgICAgfSxcbiAgICAgIC8vIGNhc2Ugb2Yga2V5IGNvbnRhaW5pbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFycyA9PiByZWxldmFuY2UgPSAwXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBLRVlfT1RIRVIgKyBERUxJTSxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgIGJlZ2luOiBLRVlfT1RIRVIsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdGFydHM6IERFTElNX0FORF9WQUxVRVxuICAgICAgfSxcbiAgICAgIC8vIGNhc2Ugb2YgYW4gZW1wdHkga2V5XG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGJlZ2luOiBLRVlfT1RIRVIgKyBXUzAgKyAnJCdcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAncGFja2FnZSBpbXBvcnQgb3B0aW9uIG9wdGlvbmFsIHJlcXVpcmVkIHJlcGVhdGVkIGdyb3VwIG9uZW9mJyxcbiAgICAgIGJ1aWx0X2luOiAnZG91YmxlIGZsb2F0IGludDMyIGludDY0IHVpbnQzMiB1aW50NjQgc2ludDMyIHNpbnQ2NCAnICtcbiAgICAgICAgJ2ZpeGVkMzIgZml4ZWQ2NCBzZml4ZWQzMiBzZml4ZWQ2NCBib29sIHN0cmluZyBieXRlcycsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnbWVzc2FnZSBlbnVtIHNlcnZpY2UnLCBlbmQ6IC9cXHsvLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgICBzdGFydHM6IHtlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZX0gLy8gaGFjazogZWF0aW5nIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHRpdGxlXG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAncnBjJyxcbiAgICAgICAgZW5kOiAvOy8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAncnBjIHJldHVybnMnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL15cXHMqW0EtWl9dKy8sXG4gICAgICAgIGVuZDogL1xccyo9LywgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIFBVUFBFVF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgIC8qIGxhbmd1YWdlIGtleXdvcmRzICovXG4gICAgICAnYW5kIGNhc2UgZGVmYXVsdCBlbHNlIGVsc2lmIGZhbHNlIGlmIGluIGltcG9ydCBlbmhlcml0cyBub2RlIG9yIHRydWUgdW5kZWYgdW5sZXNzIG1haW4gc2V0dGluZ3MgJHN0cmluZyAnLFxuICAgIGxpdGVyYWw6XG4gICAgLyogbWV0YXBhcmFtZXRlcnMgKi9cbiAgICAgICdhbGlhcyBhdWRpdCBiZWZvcmUgbG9nbGV2ZWwgbm9vcCByZXF1aXJlIHN1YnNjcmliZSB0YWcgJyArXG4gICAgLyogbm9ybWFsIGF0dHJpYnV0ZXMgKi9cbiAgICAgICdvd25lciBlbnN1cmUgZ3JvdXAgbW9kZSBuYW1lfDAgY2hhbmdlcyBjb250ZXh0IGZvcmNlIGluY2wgbGVucyBsb2FkX3BhdGggb25seWlmIHByb3ZpZGVyIHJldHVybnMgcm9vdCBzaG93X2RpZmYgdHlwZV9jaGVjayAnICtcbiAgICAgICdlbl9hZGRyZXNzIGlwX2FkZHJlc3MgcmVhbG5hbWUgY29tbWFuZCBlbnZpcm9ubWVudCBob3VyIG1vbnV0ZSBtb250aCBtb250aGRheSBzcGVjaWFsIHRhcmdldCB3ZWVrZGF5ICcrXG4gICAgICAnY3JlYXRlcyBjd2Qgb2dvdXRwdXQgcmVmcmVzaCByZWZyZXNob25seSB0cmllcyB0cnlfc2xlZXAgdW1hc2sgYmFja3VwIGNoZWNrc3VtIGNvbnRlbnQgY3RpbWUgZm9yY2UgaWdub3JlICcgK1xuICAgICAgJ2xpbmtzIG10aW1lIHB1cmdlIHJlY3Vyc2UgcmVjdXJzZWxpbWl0IHJlcGxhY2Ugc2VsaW51eF9pZ25vcmVfZGVmYXVsdHMgc2VscmFuZ2Ugc2Vscm9sZSBzZWx0eXBlIHNlbHVzZXIgc291cmNlICcgK1xuICAgICAgJ3NvdWlyY2VfcGVybWlzc2lvbnMgc291cmNlc2VsZWN0IHZhbGlkYXRlX2NtZCB2YWxpZGF0ZV9yZXBsYWNlbWVudCBhbGxvd2R1cGUgYXR0cmlidXRlX21lbWJlcnNoaXAgYXV0aF9tZW1iZXJzaGlwIGZvcmNlbG9jYWwgZ2lkICcrXG4gICAgICAnaWFfbG9hZF9tb2R1bGUgbWVtYmVycyBzeXN0ZW0gaG9zdF9hbGlhc2VzIGlwIGFsbG93ZWRfdHJ1bmtfdmxhbnMgZGVzY3JpcHRpb24gZGV2aWNlX3VybCBkdXBsZXggZW5jYXBzdWxhdGlvbiBldGhlcmNoYW5uZWwgJyArXG4gICAgICAnbmF0aXZlX3ZsYW4gc3BlZWQgcHJpbmNpcGFscyBhbGxvd19yb290IGF1dGhfY2xhc3MgYXV0aF90eXBlIGF1dGhlbnRpY2F0ZV91c2VyIGtfb2ZfbiBtZWNoYW5pc21zIHJ1bGUgc2Vzc2lvbl9vd25lciBzaGFyZWQgb3B0aW9ucyAnICtcbiAgICAgICdkZXZpY2UgZnN0eXBlIGVuYWJsZSBoYXNyZXN0YXJ0IGRpcmVjdG9yeSBwcmVzZW50IGFic2VudCBsaW5rIGF0Ym9vdCBibG9ja2RldmljZSBkZXZpY2UgZHVtcCBwYXNzIHJlbW91bnRzIHBvbGxlcl90YWcgdXNlICcgK1xuICAgICAgJ21lc3NhZ2Ugd2l0aHBhdGggYWRtaW5maWxlIGFsbG93X3ZpcnR1YWwgYWxsb3djZHJvbSBjYXRlZ29yeSBjb25maWdmaWxlcyBmbGF2b3IgaW5zdGFsbF9vcHRpb25zIGluc3RhbmNlIHBhY2thZ2Vfc2V0dGluZ3MgcGxhdGZvcm0gJyArXG4gICAgICAncmVzcG9uc2VmaWxlIHN0YXR1cyB1bmluc3RhbGxfb3B0aW9ucyB2ZW5kb3IgdW5sZXNzX3N5c3RlbV91c2VyIHVubGVzc191aWQgYmluYXJ5IGNvbnRyb2wgZmxhZ3MgaGFzc3RhdHVzIG1hbmlmZXN0IHBhdHRlcm4gcmVzdGFydCBydW5uaW5nICcgK1xuICAgICAgJ3N0YXJ0IHN0b3AgYWxsb3dkdXBlIGF1dGhzIGV4cGlyeSBnaWQgZ3JvdXBzIGhvbWUgaXRlcmF0aW9ucyBrZXlfbWVtYmVyc2hpcCBrZXlzIG1hbmFnZWhvbWUgbWVtYmVyc2hpcCBwYXNzd29yZCBwYXNzd29yZF9tYXhfYWdlICcgK1xuICAgICAgJ3Bhc3N3b3JkX21pbl9hZ2UgcHJvZmlsZV9tZW1iZXJzaGlwIHByb2ZpbGVzIHByb2plY3QgcHVyZ2Vfc3NoX2tleXMgcm9sZV9tZW1iZXJzaGlwIHJvbGVzIHNhbHQgc2hlbGwgdWlkIGJhc2V1cmwgY29zdCBkZXNjciBlbmFibGVkICcgK1xuICAgICAgJ2VuYWJsZWdyb3VwcyBleGNsdWRlIGZhaWxvdmVybWV0aG9kIGdwZ2NoZWNrIGdwZ2tleSBodHRwX2NhY2hpbmcgaW5jbHVkZSBpbmNsdWRlcGtncyBrZWVwYWxpdmUgbWV0YWRhdGFfZXhwaXJlIG1ldGFsaW5rIG1pcnJvcmxpc3QgJyArXG4gICAgICAncHJpb3JpdHkgcHJvdGVjdCBwcm94eSBwcm94eV9wYXNzd29yZCBwcm94eV91c2VybmFtZSByZXBvX2dwZ2NoZWNrIHMzX2VuYWJsZWQgc2tpcF9pZl91bmF2YWlsYWJsZSBzc2xjYWNlcnQgc3NsY2xpZW50Y2VydCBzc2xjbGllbnRrZXkgJyArXG4gICAgICAnc3NsdmVyaWZ5IG1vdW50ZWQnLFxuICAgIGJ1aWx0X2luOlxuICAgIC8qIGNvcmUgZmFjdHMgKi9cbiAgICAgICdhcmNoaXRlY3R1cmUgYXVnZWFzdmVyc2lvbiBibG9ja2RldmljZXMgYm9hcmRtYW51ZmFjdHVyZXIgYm9hcmRwcm9kdWN0bmFtZSBib2FyZHNlcmlhbG51bWJlciBjZmtleSBkaGNwX3NlcnZlcnMgJyArXG4gICAgICAnZG9tYWluIGVjMl8gZWMyX3VzZXJkYXRhIGZhY3RlcnZlcnNpb24gZmlsZXN5c3RlbXMgbGRvbSBmcWRuIGdpZCBoYXJkd2FyZWlzYSBoYXJkd2FyZW1vZGVsIGhvc3RuYW1lIGlkfDAgaW50ZXJmYWNlcyAnK1xuICAgICAgJ2lwYWRkcmVzcyBpcGFkZHJlc3NfIGlwYWRkcmVzczYgaXBhZGRyZXNzNl8gaXBob3N0bnVtYmVyIGlzX3ZpcnR1YWwga2VybmVsIGtlcm5lbG1hanZlcnNpb24ga2VybmVscmVsZWFzZSBrZXJuZWx2ZXJzaW9uICcgK1xuICAgICAgJ2tlcm5lbHJlbGVhc2Uga2VybmVsdmVyc2lvbiBsc2JkaXN0Y29kZW5hbWUgbHNiZGlzdGRlc2NyaXB0aW9uIGxzYmRpc3RpZCBsc2JkaXN0cmVsZWFzZSBsc2JtYWpkaXN0cmVsZWFzZSBsc2JtaW5vcmRpc3RyZWxlYXNlICcgK1xuICAgICAgJ2xzYnJlbGVhc2UgbWFjYWRkcmVzcyBtYWNhZGRyZXNzXyBtYWNvc3hfYnVpbGR2ZXJzaW9uIG1hY29zeF9wcm9kdWN0bmFtZSBtYWNvc3hfcHJvZHVjdHZlcnNpb24gbWFjb3N4X3Byb2R1Y3R2ZXJzb25fbWFqb3IgJyArXG4gICAgICAnbWFjb3N4X3Byb2R1Y3R2ZXJzaW9uX21pbm9yIG1hbnVmYWN0dXJlciBtZW1vcnlmcmVlIG1lbW9yeXNpemUgbmV0bWFzayBtZXRtYXNrXyBuZXR3b3JrXyBvcGVyYXRpbmdzeXN0ZW0gb3BlcmF0aW5nc3lzdGVtbWFqcmVsZWFzZSAnK1xuICAgICAgJ29wZXJhdGluZ3N5c3RlbXJlbGVhc2Ugb3NmYW1pbHkgcGFydGl0aW9ucyBwYXRoIHBoeXNpY2FscHJvY2Vzc29yY291bnQgcHJvY2Vzc29yIHByb2Nlc3NvcmNvdW50IHByb2R1Y3RuYW1lIHBzIHB1cHBldHZlcnNpb24gJytcbiAgICAgICdydWJ5c2l0ZWRpciBydWJ5dmVyc2lvbiBzZWxpbnV4IHNlbGludXhfY29uZmlnX21vZGUgc2VsaW51eF9jb25maWdfcG9saWN5IHNlbGludXhfY3VycmVudF9tb2RlIHNlbGludXhfY3VycmVudF9tb2RlIHNlbGludXhfZW5mb3JjZWQgJytcbiAgICAgICdzZWxpbnV4X3BvbGljeXZlcnNpb24gc2VyaWFsbnVtYmVyIHNwXyBzc2hkc2FrZXkgc3NoZWNkc2FrZXkgc3NocnNha2V5IHN3YXBlbmNyeXB0ZWQgc3dhcGZyZWUgc3dhcHNpemUgdGltZXpvbmUgdHlwZSB1bmlxdWVpZCB1cHRpbWUgJytcbiAgICAgICd1cHRpbWVfZGF5cyB1cHRpbWVfaG91cnMgdXB0aW1lX3NlY29uZHMgdXVpZCB2aXJ0dWFsIHZsYW5zIHhlbmRvbWFpbnMgemZzX3ZlcnNpb24gem9uZW5hZSB6b25lcyB6cG9vbF92ZXJzaW9uJ1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKCcjJywgJyQnKTtcblxuICB2YXIgSURFTlRfUkUgPSAnKFtBLVphLXpfXXw6OikoXFxcXHd8OjopKic7XG5cbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBJREVOVF9SRX0pO1xuXG4gIHZhciBWQVJJQUJMRSA9IHtjbGFzc05hbWU6ICd2YXJpYWJsZScsIGJlZ2luOiAnXFxcXCQnICsgSURFTlRfUkV9O1xuXG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgVkFSSUFCTEVdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99XG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwcCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT01NRU5ULFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBTVFJJTkcsXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcycsIGVuZDogJ1xcXFx7fDsnLFxuICAgICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICAgIGNvbnRhaW5zOiBbVElUTEUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnZGVmaW5lJywgZW5kOiAvXFx7LyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJywgYmVnaW46IGhsanMuSURFTlRfUkUsIGVuZHNQYXJlbnQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxzK1xcXFx7JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGVuZDogL1xcUy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXHsvLCBlbmQ6IC9cXH0vLFxuICAgICAgICAgICAga2V5d29yZHM6IFBVUFBFVF9LRVlXT1JEUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgQ09NTUVOVCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOidbYS16QS1aX10rXFxcXHMqPT4nLFxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICc9PicsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGIwWzAtN19dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoXFxcXGJbMS05XVswLTlfXSooXFxcXC5bMC05X10rKT8pfFswX11cXFxcYicsXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFZBUklBQkxFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBCYXNlIGRlYWZ1bHQgY29sb3JzIGluIFBCIElERTogYmFja2dyb3VuZDogI0ZGRkZERjsgZm9yZWdyb3VuZDogIzAwMDAwMDtcblxuZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RSSU5HUyA9IHsgLy8gUEIgSURFIGNvbG9yOiAjMDA4MEZGIChBenVyZSBSYWRpYW5jZSlcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnKH4pP1wiJywgZW5kOiAnXCInLFxuICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgfTtcbiAgdmFyIENPTlNUQU5UUyA9IHsgLy8gUEIgSURFIGNvbG9yOiAjOTI0QjcyIChDYW5ub24gUGluaylcbiAgICAvLyAgXCIjXCIgKyBhIGxldHRlciBvciB1bmRlcnNjb3JlICsgbGV0dGVycywgZGlnaXRzIG9yIHVuZGVyc2NvcmVzICsgKG9wdGlvbmFsKSBcIiRcIlxuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICcjW2EtekEtWl9dXFxcXHcqXFxcXCQ/J1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwYicsICdwYmknXSxcbiAgICBrZXl3b3JkczogLy8gUEIgSURFIGNvbG9yOiAjMDA2NjY2IChCbHVlIFN0b25lKSArIEJvbGRcbiAgICAgIC8vIEtleXdvcmRzIGZyb20gYWxsIHZlcnNpb24gb2YgUHVyZUJBU0lDIDUuMDAgdXB3YXJkIC4uLlxuICAgICAgJ0FsaWduIEFuZCBBcnJheSBBcyBCcmVhayBDYWxsRGVidWdnZXIgQ2FzZSBDb21waWxlckNhc2UgQ29tcGlsZXJEZWZhdWx0ICcgK1xuICAgICAgJ0NvbXBpbGVyRWxzZSBDb21waWxlckVsc2VJZiBDb21waWxlckVuZElmIENvbXBpbGVyRW5kU2VsZWN0IENvbXBpbGVyRXJyb3IgJyArXG4gICAgICAnQ29tcGlsZXJJZiBDb21waWxlclNlbGVjdCBDb21waWxlcldhcm5pbmcgQ29udGludWUgRGF0YSBEYXRhU2VjdGlvbiBEZWJ1ZyAnICtcbiAgICAgICdEZWJ1Z0xldmVsIERlY2xhcmUgRGVjbGFyZUMgRGVjbGFyZUNETEwgRGVjbGFyZURMTCBEZWNsYXJlTW9kdWxlIERlZmF1bHQgJyArXG4gICAgICAnRGVmaW5lIERpbSBEaXNhYmxlQVNNIERpc2FibGVEZWJ1Z2dlciBEaXNhYmxlRXhwbGljaXQgRWxzZSBFbHNlSWYgRW5hYmxlQVNNICcgK1xuICAgICAgJ0VuYWJsZURlYnVnZ2VyIEVuYWJsZUV4cGxpY2l0IEVuZCBFbmREYXRhU2VjdGlvbiBFbmREZWNsYXJlTW9kdWxlIEVuZEVudW1lcmF0aW9uICcgK1xuICAgICAgJ0VuZElmIEVuZEltcG9ydCBFbmRJbnRlcmZhY2UgRW5kTWFjcm8gRW5kTW9kdWxlIEVuZFByb2NlZHVyZSBFbmRTZWxlY3QgJyArXG4gICAgICAnRW5kU3RydWN0dXJlIEVuZFN0cnVjdHVyZVVuaW9uIEVuZFdpdGggRW51bWVyYXRpb24gRW51bWVyYXRpb25CaW5hcnkgRXh0ZW5kcyAnICtcbiAgICAgICdGYWtlUmV0dXJuIEZvciBGb3JFYWNoIEZvckV2ZXIgR2xvYmFsIEdvc3ViIEdvdG8gSWYgSW1wb3J0IEltcG9ydEMgJyArXG4gICAgICAnSW5jbHVkZUJpbmFyeSBJbmNsdWRlRmlsZSBJbmNsdWRlUGF0aCBJbnRlcmZhY2UgTGlzdCBNYWNybyBNYWNyb0V4cGFuZGVkQ291bnQgJyArXG4gICAgICAnTWFwIE1vZHVsZSBOZXdMaXN0IE5ld01hcCBOZXh0IE5vdCBPciBQcm9jZWR1cmUgUHJvY2VkdXJlQyAnICtcbiAgICAgICdQcm9jZWR1cmVDRExMIFByb2NlZHVyZURMTCBQcm9jZWR1cmVSZXR1cm4gUHJvdGVjdGVkIFByb3RvdHlwZSBQcm90b3R5cGVDIFJlRGltICcgK1xuICAgICAgJ1JlYWQgUmVwZWF0IFJlc3RvcmUgUmV0dXJuIFJ1bnRpbWUgU2VsZWN0IFNoYXJlZCBTdGF0aWMgU3RlcCBTdHJ1Y3R1cmUgJyArXG4gICAgICAnU3RydWN0dXJlVW5pb24gU3dhcCBUaHJlYWRlZCBUbyBVbmRlZmluZU1hY3JvIFVudGlsIFVudGlsICBVbnVzZU1vZHVsZSAnICtcbiAgICAgICdVc2VNb2R1bGUgV2VuZCBXaGlsZSBXaXRoIFhJbmNsdWRlRmlsZSBYT3InLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBDT01NRU5UUyB8IFBCIElERSBjb2xvcjogIzAwQUFBQSAoUGVyc2lhbiBHcmVlbilcbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuXG4gICAgICB7IC8vIFBST0NFRFVSRVMgREVGSU5JVElPTlNcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKFByb2NlZHVyZXxEZWNsYXJlKShDfENETEx8RExMKT9cXFxcYicsXG4gICAgICAgIGVuZDogJ1xcXFwoJyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyAvLyBQUk9DRURVUkUgS0VZV09SRFMgfCBQQiBJREUgY29sb3I6ICMwMDY2NjYgKEJsdWUgU3RvbmUpICsgQm9sZFxuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJyhQcm9jZWR1cmV8RGVjbGFyZSkoQ3xDRExMfERMTCk/JyxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgLy8gUFJPQ0VEVVJFIFJFVFVSTiBUWVBFIFNFVFRJTkcgfCBQQiBJREUgY29sb3I6ICMwMDAwMDAgKEJsYWNrKVxuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwuXFxcXHcqJ1xuICAgICAgICAgICAgLy8gZW5kOiAnICcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSAvLyBQUk9DRURVUkUgTkFNRSB8IFBCIElERSBjb2xvcjogIzAwNjY2NiAoQmx1ZSBTdG9uZSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFNUUklOR1MsXG4gICAgICBDT05TVEFOVFNcbiAgICBdXG4gIH07XG59XG5cbi8qICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0hBTkdFTE9HXG4gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLSB2LjEuMiAoMjAxNy0wNS0xMilcbiAgICAgICAgLS0gQlVHLUZJWDogU29tZSBrZXl3b3JkcyB3ZXJlIGFjY2lkZW50YWxseSBqb3luZWQgdG9nZXRoZXIuIE5vdyBmaXhlZC5cbiAgICAtIHYuMS4xICgyMDE3LTA0LTMwKVxuICAgICAgICAtLSBVcGRhdGVkIHRvIFB1cmVCQVNJQyA1LjYwLlxuICAgICAgICAtLSBLZXl3b3JkcyBsaXN0IG5vdyBidWlsdCBieSBleHRyYWN0aW5nIHRoZW0gZnJvbSB0aGUgUHVyZUJBU0lDIFNESydzXG4gICAgICAgICAgIFwiU3ludGF4SGlsaWdodGluZy5kbGxcIiAoZnJvbSBlYWNoIFB1cmVCQVNJQyB2ZXJzaW9uKS4gVG9rZW5zIGZyb20gZWFjaFxuICAgICAgICAgICB2ZXJzaW9uIGFyZSBhZGRlZCB0byB0aGUgbGlzdCwgYW5kIHJlbmFtZWQgb3IgcmVtb3ZlZCB0b2tlbnMgYXJlIGtlcHRcbiAgICAgICAgICAgZm9yIHRoZSBzYWtlIG9mIGNvdmVyaW5nIGFsbCB2ZXJzaW9ucyBvZiB0aGUgbGFuZ3VhZ2UgZnJvbSBQdXJlQkFTSUNcbiAgICAgICAgICAgdjUuMDAgdXB3YXJkLiAoTk9URTogY3VycmVudGx5LCB0aGVyZSBhcmUgbm8gcmVuYW1lZCBvciBkZXByZWNhdGVkXG4gICAgICAgICAgIHRva2VucyBpbiB0aGUga2V5d29yZHMgbGlzdCkuIEZvciBtb3JlIGluZm8sIHNlZTpcbiAgICAgICAgICAgLS0gaHR0cDovL3d3dy5wdXJlYmFzaWMuZnIvZW5nbGlzaC92aWV3dG9waWMucGhwPyZwPTUwNjI2OVxuICAgICAgICAgICAtLSBodHRwczovL2dpdGh1Yi5jb20vdGFqbW9uZS9wdXJlYmFzaWMtYXJjaGl2ZXMvdHJlZS9tYXN0ZXIvc3ludGF4LWhpZ2hsaWdodGluZy9ndWlkZWxpbmVzXG4gICAgLSB2LjEuMCAoQXByaWwgMjAxNilcbiAgICAgICAgLS0gRmlyc3QgcmVsZWFzZVxuICAgICAgICAtLSBLZXl3b3JkcyBsaXN0IHRha2VuIGFuZCBhZGFwdGVkIGZyb20gR3VTaEgncyAoR3VzdGF2byBKdWxpbyBGaW9yZW56YSlcbiAgICAgICAgICAgUHVyZUJhc2ljIGxhbmd1YWdlIGZpbGUgZm9yIEdlU0hpOlxuICAgICAgICAgICAtLSBodHRwczovL2dpdGh1Yi5jb20vZWFzeWJvb2svZ2VzaGkvYmxvYi9tYXN0ZXIvZ2VzaGkvcHVyZWJhc2ljLnBocFxuKi87IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FuZCBlbGlmIGlzIGdsb2JhbCBhcyBpbiBpZiBmcm9tIHJhaXNlIGZvciBleGNlcHQgZmluYWxseSBwcmludCBpbXBvcnQgcGFzcyByZXR1cm4gJyArXG4gICAgICAnZXhlYyBlbHNlIGJyZWFrIG5vdCB3aXRoIGNsYXNzIGFzc2VydCB5aWVsZCB0cnkgd2hpbGUgY29udGludWUgZGVsIG9yIGRlZiBsYW1iZGEgJyArXG4gICAgICAnYXN5bmMgYXdhaXQgbm9ubG9jYWx8MTAnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0VsbGlwc2lzIE5vdEltcGxlbWVudGVkJyxcbiAgICBsaXRlcmFsOiAnRmFsc2UgTm9uZSBUcnVlJ1xuICB9O1xuICB2YXIgUFJPTVBUID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLCAgYmVnaW46IC9eKD4+PnxcXC5cXC5cXC4pIC9cbiAgfTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcey8sIGVuZDogL1xcfS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC8jL1xuICB9O1xuICB2YXIgTElURVJBTF9CUkFDS0VUID0ge1xuICAgIGJlZ2luOiAvXFx7XFx7LyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/JycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFBST01QVF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8Yik/cj9cIlwiXCIvLCBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgUFJPTVBUXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZiknJycvLCBlbmQ6IC8nJycvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgUFJPTVBULCBMSVRFUkFMX0JSQUNLRVQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZilcIlwiXCIvLCBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgUFJPTVBULCBMSVRFUkFMX0JSQUNLRVQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKScvLCBlbmQ6IC8nLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKVwiLywgZW5kOiAvXCIvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhifGJyKScvLCBlbmQ6IC8nL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oYnxicilcIi8sIGVuZDogL1wiL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZiknLywgZW5kOiAvJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBMSVRFUkFMX0JSQUNLRVQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZilcIi8sIGVuZDogL1wiLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIExJVEVSQUxfQlJBQ0tFVCwgU1VCU1RdXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCByZWxldmFuY2U6IDAsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogaGxqcy5CSU5BUllfTlVNQkVSX1JFICsgJ1tsTGpKXT8nfSxcbiAgICAgIHtiZWdpbjogJ1xcXFxiKDBvWzAtN10rKVtsTGpKXT8nfSxcbiAgICAgIHtiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICdbbExqSl0/J31cbiAgICBdXG4gIH07XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFsnc2VsZicsIFBST01QVCwgTlVNQkVSLCBTVFJJTkcsIGhsanMuSEFTSF9DT01NRU5UX01PREVdXG4gIH07XG4gIFNVQlNULmNvbnRhaW5zID0gW1NUUklORywgTlVNQkVSLCBQUk9NUFRdO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncHknLCAnZ3lwJywgJ2lweXRob24nXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLyg8XFwvfC0+fFxcPyl8PT4vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBQUk9NUFQsXG4gICAgICBOVU1CRVIsXG4gICAgICBTVFJJTkcsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtjbGFzc05hbWU6ICdmdW5jdGlvbicsIGJlZ2luS2V5d29yZHM6ICdkZWYnfSxcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAnY2xhc3MnLCBiZWdpbktleXdvcmRzOiAnY2xhc3MnfVxuICAgICAgICBdLFxuICAgICAgICBlbmQ6IC86LyxcbiAgICAgICAgaWxsZWdhbDogL1skez07XFxuLF0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogLy0+LywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogJ05vbmUnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eW1xcdCBdKkAvLCBlbmQ6IC8kL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXGIocHJpbnR8ZXhlYylcXCgvIC8vIGRvbuKAmXQgaGlnaGxpZ2h0IGtleXdvcmRzLXR1cm5lZC1mdW5jdGlvbnMgaW4gUHl0aG9uIDNcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUV9LRVlXT1JEUyA9IHtcbiAga2V5d29yZDpcbiAgICAnZG8gd2hpbGUgc2VsZWN0IGRlbGV0ZSBieSB1cGRhdGUgZnJvbScsXG4gIGxpdGVyYWw6XG4gICAgJzBiIDFiJyxcbiAgYnVpbHRfaW46XG4gICAgJ25lZyBub3QgbnVsbCBzdHJpbmcgcmVjaXByb2NhbCBmbG9vciBjZWlsaW5nIHNpZ251bSBtb2QgeGJhciB4bG9nIGFuZCBvciBlYWNoIHNjYW4gb3ZlciBwcmlvciBtbXUgbHNxIGludiBtZDUgbHRpbWUgZ3RpbWUgY291bnQgZmlyc3QgdmFyIGRldiBtZWQgY292IGNvciBhbGwgYW55IHJhbmQgc3VtcyBwcmRzIG1pbnMgbWF4cyBmaWxscyBkZWx0YXMgcmF0aW9zIGF2Z3MgZGlmZmVyIHByZXYgbmV4dCByYW5rIHJldmVyc2UgaWFzYyBpZGVzYyBhc2MgZGVzYyBtc3VtIG1jb3VudCBtYXZnIG1kZXYgeHJhbmsgbW1pbiBtbWF4IHhwcmV2IHJvdGF0ZSBkaXN0aW5jdCBncm91cCB3aGVyZSBmbGlwIHR5cGUga2V5IHRpbCBnZXQgdmFsdWUgYXR0ciBjdXQgc2V0IHVwc2VydCByYXplIHVuaW9uIGludGVyIGV4Y2VwdCBjcm9zcyBzdiB2cyBzdWJsaXN0IGVubGlzdCByZWFkMCByZWFkMSBob3BlbiBoY2xvc2UgaGRlbCBoc3ltIGhjb3VudCBwZWFjaCBzeXN0ZW0gbHRyaW0gcnRyaW0gdHJpbSBsb3dlciB1cHBlciBzc3IgdmlldyB0YWJsZXMgdmlld3MgY29scyB4Y29scyBrZXlzIHhrZXkgeGNvbCB4YXNjIHhkZXNjIGZrZXlzIG1ldGEgbGogYWogYWowIGlqIHBqIGFzb2YgdWogd3cgd2ogd2oxIGZieSB4Z3JvdXAgdW5ncm91cCBlaiBzYXZlIGxvYWQgcnNhdmUgcmxvYWQgc2hvdyBjc3YgcGFyc2UgZXZhbCBtaW4gbWF4IGF2ZyB3YXZnIHdzdW0gc2luIGNvcyB0YW4gc3VtJyxcbiAgdHlwZTpcbiAgICAnYGZsb2F0IGBkb3VibGUgaW50IGB0aW1lc3RhbXAgYHRpbWVzcGFuIGBkYXRldGltZSBgdGltZSBgYm9vbGVhbiBgc3ltYm9sIGBjaGFyIGBieXRlIGBzaG9ydCBgbG9uZyBgcmVhbCBgbW9udGggYGRhdGUgYG1pbnV0ZSBgc2Vjb25kIGBndWlkJ1xuICB9O1xuICByZXR1cm4ge1xuICBhbGlhc2VzOlsnaycsICdrZGInXSxcbiAga2V5d29yZHM6IFFfS0VZV09SRFMsXG4gIGxleGVtZXM6IC8oYD8pW0EtWmEtejAtOV9dK1xcYi8sXG4gIGNvbnRhaW5zOiBbXG4gIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaW4gb2Ygb24gaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoICcgK1xuICAgICAgICAnaW5zdGFuY2VvZiB3aXRoIHRocm93IGNhc2UgZGVmYXVsdCB0cnkgdGhpcyBzd2l0Y2ggY29udGludWUgdHlwZW9mIGRlbGV0ZSAnICtcbiAgICAgICAgJ2xldCB5aWVsZCBjb25zdCBleHBvcnQgc3VwZXIgZGVidWdnZXIgYXMgYXN5bmMgYXdhaXQgaW1wb3J0JyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkIE5hTiBJbmZpbml0eScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2V2YWwgaXNGaW5pdGUgaXNOYU4gcGFyc2VGbG9hdCBwYXJzZUludCBkZWNvZGVVUkkgZGVjb2RlVVJJQ29tcG9uZW50ICcgK1xuICAgICAgICAnZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgJyArXG4gICAgICAgICdFdmFsRXJyb3IgSW50ZXJuYWxFcnJvciBSYW5nZUVycm9yIFJlZmVyZW5jZUVycm9yIFN0b3BJdGVyYXRpb24gU3ludGF4RXJyb3IgJyArXG4gICAgICAgICdUeXBlRXJyb3IgVVJJRXJyb3IgTnVtYmVyIE1hdGggRGF0ZSBTdHJpbmcgUmVnRXhwIEFycmF5IEZsb2F0MzJBcnJheSAnICtcbiAgICAgICAgJ0Zsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5ICcgK1xuICAgICAgICAnVWludDhBcnJheSBVaW50OENsYW1wZWRBcnJheSBBcnJheUJ1ZmZlciBEYXRhVmlldyBKU09OIEludGwgYXJndW1lbnRzIHJlcXVpcmUgJyArXG4gICAgICAgICdtb2R1bGUgY29uc29sZSB3aW5kb3cgZG9jdW1lbnQgU3ltYm9sIFNldCBNYXAgV2Vha1NldCBXZWFrTWFwIFByb3h5IFJlZmxlY3QgJyArXG4gICAgICAgICdCZWhhdmlvciBib29sIGNvbG9yIGNvb3JkaW5hdGUgZGF0ZSBkb3VibGUgZW51bWVyYXRpb24gZm9udCBnZW9jaXJjbGUgZ2VvcmVjdGFuZ2xlICcgK1xuICAgICAgICAnZ2Vvc2hhcGUgaW50IGxpc3QgbWF0cml4NHg0IHBhcmVudCBwb2ludCBxdWF0ZXJuaW9uIHJlYWwgcmVjdCAnICtcbiAgICAgICAgJ3NpemUgc3RyaW5nIHVybCB2YXJpYW50IHZlY3RvcjJkIHZlY3RvcjNkIHZlY3RvcjRkJyArXG4gICAgICAgICdQcm9taXNlJ1xuICAgIH07XG5cbiAgdmFyIFFNTF9JREVOVF9SRSA9ICdbYS16QS1aX11bYS16QS1aMC05XFxcXC5fXSonO1xuXG4gIC8vIElzb2xhdGUgcHJvcGVydHkgc3RhdGVtZW50cy4gRW5kcyBhdCBhIDosID0sIDssICwsIGEgY29tbWVudCBvciBlbmQgb2YgbGluZS5cbiAgLy8gVXNlIHByb3BlcnR5IGNsYXNzLlxuICB2YXIgUFJPUEVSVFkgPSB7XG4gICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgIGJlZ2luOiAnXFxcXGJwcm9wZXJ0eVxcXFxiJyxcbiAgICAgIHN0YXJ0czoge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBlbmQ6ICcoOnw9fDt8LHwvL3wvXFxcXCp8JCknLFxuICAgICAgICByZXR1cm5FbmQ6IHRydWVcbiAgICAgIH1cbiAgfTtcblxuICAvLyBJc29sYXRlIHNpZ25hbCBzdGF0ZW1lbnRzLiBFbmRzIGF0IGEgKSBhIGNvbW1lbnQgb3IgZW5kIG9mIGxpbmUuXG4gIC8vIFVzZSBwcm9wZXJ0eSBjbGFzcy5cbiAgdmFyIFNJR05BTCA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgYmVnaW46ICdcXFxcYnNpZ25hbFxcXFxiJyxcbiAgICAgIHN0YXJ0czoge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBlbmQ6ICcoXFxcXCh8Onw9fDt8LHwvL3wvXFxcXCp8JCknLFxuICAgICAgICByZXR1cm5FbmQ6IHRydWVcbiAgICAgIH1cbiAgfTtcblxuICAvLyBpZDogaXMgc3BlY2lhbCBpbiBRTUwuIFdoZW4gd2Ugc2VlIGlkOiB3ZSB3YW50IHRvIG1hcmsgdGhlIGlkOiBhcyBhdHRyaWJ1dGUgYW5kXG4gIC8vIGVtcGhhc2l6ZSB0aGUgdG9rZW4gZm9sbG93aW5nLlxuICB2YXIgSURfSUQgPSB7XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgYmVnaW46ICdcXFxcYmlkXFxcXHMqOicsXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgZW5kOiBRTUxfSURFTlRfUkUsXG4gICAgICAgIHJldHVybkVuZDogZmFsc2VcbiAgICAgIH1cbiAgfTtcblxuICAvLyBGaW5kIFFNTCBvYmplY3QgYXR0cmlidXRlLiBBbiBhdHRyaWJ1dGUgaXMgYSBRTUwgaWRlbnRpZmllciBmb2xsb3dlZCBieSA6LlxuICAvLyBVbmZvcnR1bmF0ZWx5IGl0J3MgaGFyZCB0byBrbm93IHdoZXJlIGl0IGVuZHMsIGFzIGl0IG1heSBjb250YWluIHNjYWxhcnMsXG4gIC8vIG9iamVjdHMsIG9iamVjdCBkZWZpbml0aW9ucywgb3IgamF2YXNjcmlwdC4gVGhlIHRydWUgZW5kIGlzIGVpdGhlciB3aGVuIHRoZSBwYXJlbnRcbiAgLy8gZW5kcyBvciB0aGUgbmV4dCBhdHRyaWJ1dGUgaXMgZGV0ZWN0ZWQuXG4gIHZhciBRTUxfQVRUUklCVVRFID0ge1xuICAgIGJlZ2luOiBRTUxfSURFTlRfUkUgKyAnXFxcXHMqOicsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46IFFNTF9JREVOVF9SRSxcbiAgICAgICAgZW5kOiAnXFxcXHMqOicsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgLy8gRmluZCBRTUwgb2JqZWN0LiBBIFFNTCBvYmplY3QgaXMgYSBRTUwgaWRlbnRpZmllciBmb2xsb3dlZCBieSB7IGFuZCBlbmRzIGF0IHRoZSBtYXRjaGluZyB9LlxuICAvLyBBbGwgd2UgcmVhbGx5IGNhcmUgYWJvdXQgaXMgZmluZGluZyBJREVOVCBmb2xsb3dlZCBieSB7IGFuZCBqdXN0IG1hcmsgdXAgdGhlIElERU5UIGFuZCBpZ25vcmUgdGhlIHsuXG4gIHZhciBRTUxfT0JKRUNUID0ge1xuICAgIGJlZ2luOiBRTUxfSURFTlRfUkUgKyAnXFxcXHMqeycsIGVuZDogJ3snLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBRTUxfSURFTlRfUkV9KVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncXQnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSAoc3RyaWN0fGFzbSlbJ1wiXS9cbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgeyAvLyB0ZW1wbGF0ZSBzdHJpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ1xcXFx9J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbYkJdWzAxXSspJyB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYigwW29PXVswLTddKyknIH0sXG4gICAgICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLy8gXCJ2YWx1ZVwiIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogJygnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIoY2FzZXxyZXR1cm58dGhyb3cpXFxcXGIpXFxcXHMqJyxcbiAgICAgICAga2V5d29yZHM6ICdyZXR1cm4gdGhyb3cgY2FzZScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgICAgICB7IC8vIEU0WCAvIEpTWFxuICAgICAgICAgICAgYmVnaW46IC88LywgZW5kOiAvPlxccypbKTtcXF1dLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJ1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgU0lHTkFMLFxuICAgICAgUFJPUEVSVFksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAvXFx7LywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IC9bQS1aYS16JF9dWzAtOUEtWmEteiRfXSovfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC9cXFt8JS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXC4nICsgaGxqcy5JREVOVF9SRSwgcmVsZXZhbmNlOiAwIC8vIGhhY2s6IHByZXZlbnRzIGRldGVjdGlvbiBvZiBrZXl3b3JkcyBhZnRlciBkb3RzXG4gICAgICB9LFxuICAgICAgSURfSUQsXG4gICAgICBRTUxfQVRUUklCVVRFLFxuICAgICAgUU1MX09CSkVDVFxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSURFTlRfUkUgPSAnKFthLXpBLVpdfFxcXFwuW2EtekEtWi5dKVthLXpBLVowLTkuX10qJztcblxuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogSURFTlRfUkUsXG4gICAgICAgIGxleGVtZXM6IElERU5UX1JFLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAnZnVuY3Rpb24gaWYgaW4gYnJlYWsgbmV4dCByZXBlYXQgZWxzZSBmb3IgcmV0dXJuIHN3aXRjaCB3aGlsZSB0cnkgdHJ5Q2F0Y2ggJyArXG4gICAgICAgICAgICAnc3RvcCB3YXJuaW5nIHJlcXVpcmUgbGlicmFyeSBhdHRhY2ggZGV0YWNoIHNvdXJjZSBzZXRNZXRob2Qgc2V0R2VuZXJpYyAnICtcbiAgICAgICAgICAgICdzZXRHcm91cEdlbmVyaWMgc2V0Q2xhc3MgLi4uJyxcbiAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgJ05VTEwgTkEgVFJVRSBGQUxTRSBUIEYgSW5mIE5hTiBOQV9pbnRlZ2VyX3wxMCBOQV9yZWFsX3wxMCBOQV9jaGFyYWN0ZXJffDEwICcgK1xuICAgICAgICAgICAgJ05BX2NvbXBsZXhffDEwJ1xuICAgICAgICB9LFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGhleCB2YWx1ZVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCIwW3hYXVswLTlhLWZBLUZdK1tMaV0/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBleHBsaWNpdCBpbnRlZ2VyXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxkKyg/OltlRV1bK1xcXFwtXT9cXFxcZCopP0xcXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG51bWJlciB3aXRoIHRyYWlsaW5nIGRlY2ltYWxcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXGQrXFxcXC4oPyFcXFxcZCkoPzppXFxcXGIpP1wiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG51bWJlclxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcZCsoPzpcXFxcLlxcXFxkKik/KD86W2VFXVsrXFxcXC1dP1xcXFxkKik/aT9cXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG51bWJlciB3aXRoIGxlYWRpbmcgZGVjaW1hbFxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcLlxcXFxkKyg/OltlRV1bK1xcXFwtXT9cXFxcZCopP2k/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIC8vIGVzY2FwZWQgaWRlbnRpZmllclxuICAgICAgICBiZWdpbjogJ2AnLFxuICAgICAgICBlbmQ6ICdgJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICdcIicsIGVuZDogJ1wiJ30sXG4gICAgICAgICAge2JlZ2luOiBcIidcIiwgZW5kOiBcIidcIn1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIGZ1bmN0aW9uIG9yUmVWYWx1ZXMob3BzKXtcbiAgICByZXR1cm4gb3BzXG4gICAgLm1hcChmdW5jdGlvbihvcCkge1xuICAgICAgcmV0dXJuIG9wXG4gICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgLm1hcChmdW5jdGlvbihjaGFyKSB7XG4gICAgICAgICAgcmV0dXJuICdcXFxcJyArIGNoYXI7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcnKTtcbiAgICB9KVxuICAgIC5qb2luKCd8Jyk7XG4gIH1cblxuICB2YXIgUkVfSURFTlQgPSAnfj9bYS16JF9dWzAtOWEtekEtWiRfXSonO1xuICB2YXIgUkVfTU9EVUxFX0lERU5UID0gJ2A/W0EtWiRfXVswLTlhLXpBLVokX10qJztcblxuICB2YXIgUkVfUEFSQU1fVFlQRVBBUkFNID0gJ1xcJz9bYS16JF9dWzAtOWEteiRfXSonO1xuICB2YXIgUkVfUEFSQU1fVFlQRSA9ICdcXHMqOlxccypbYS16JF9dWzAtOWEteiRfXSooXFwoXFxzKignICsgUkVfUEFSQU1fVFlQRVBBUkFNICsgJ1xccyooLCcgKyBSRV9QQVJBTV9UWVBFUEFSQU0gKyAnKSopP1xccypcXCkpPyc7XG4gIHZhciBSRV9QQVJBTSA9IFJFX0lERU5UICsgJygnICsgUkVfUEFSQU1fVFlQRSArICcpPygnICsgUkVfUEFSQU1fVFlQRSArICcpPyc7XG4gIHZhciBSRV9PUEVSQVRPUiA9IFwiKFwiICsgb3JSZVZhbHVlcyhbJ3x8JywgJyYmJywgJysrJywgJyoqJywgJysuJywgJyonLCAnLycsICcqLicsICcvLicsICcuLi4nLCAnfD4nXSkgKyBcInw9PXw9PT0pXCI7XG4gIHZhciBSRV9PUEVSQVRPUl9TUEFDRUQgPSBcIlxcXFxzK1wiICsgUkVfT1BFUkFUT1IgKyBcIlxcXFxzK1wiO1xuXG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FuZCBhcyBhc3IgYXNzZXJ0IGJlZ2luIGNsYXNzIGNvbnN0cmFpbnQgZG8gZG9uZSBkb3dudG8gZWxzZSBlbmQgZXhjZXB0aW9uIGV4dGVybmFsJyArXG4gICAgICAnZm9yIGZ1biBmdW5jdGlvbiBmdW5jdG9yIGlmIGluIGluY2x1ZGUgaW5oZXJpdCBpbml0aWFsaXplcicgK1xuICAgICAgJ2xhbmQgbGF6eSBsZXQgbG9yIGxzbCBsc3IgbHhvciBtYXRjaCBtZXRob2QgbW9kIG1vZHVsZSBtdXRhYmxlIG5ldyBub25yZWMnICtcbiAgICAgICdvYmplY3Qgb2Ygb3BlbiBvciBwcml2YXRlIHJlYyBzaWcgc3RydWN0IHRoZW4gdG8gdHJ5IHR5cGUgdmFsIHZpcnR1YWwgd2hlbiB3aGlsZSB3aXRoJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdhcnJheSBib29sIGJ5dGVzIGNoYXIgZXhufDUgZmxvYXQgaW50IGludDMyIGludDY0IGxpc3QgbGF6eV90fDUgbmF0aXZlaW50fDUgcmVmIHN0cmluZyB1bml0ICcsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlJ1xuICB9O1xuXG4gIHZhciBSRV9OVU1CRVIgPSAnXFxcXGIoMFt4WF1bYS1mQS1GMC05X10rW0xsbl0/fCcgK1xuICAgICcwW29PXVswLTdfXStbTGxuXT98JyArXG4gICAgJzBbYkJdWzAxX10rW0xsbl0/fCcgK1xuICAgICdbMC05XVswLTlfXSooW0xsbl18KFxcXFwuWzAtOV9dKik/KFtlRV1bLStdP1swLTlfXSspPyk/KSc7XG5cbiAgdmFyIE5VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBSRV9OVU1CRVJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXChcXFxcLScgKyBSRV9OVU1CRVIgKyAnXFxcXCknXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBPUEVSQVRPUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ29wZXJhdG9yJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgYmVnaW46IFJFX09QRVJBVE9SXG4gIH07XG4gIHZhciBMSVNUX0NPTlRFTlRTX01PREVTID0gW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2lkZW50aWZpZXInLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgYmVnaW46IFJFX0lERU5UXG4gICAgfSxcbiAgICBPUEVSQVRPUl9NT0RFLFxuICAgIE5VTUJFUl9NT0RFXG4gIF07XG5cbiAgdmFyIE1PRFVMRV9BQ0NFU1NfQ09OVEVOVFMgPSBbXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBPUEVSQVRPUl9NT0RFLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ21vZHVsZScsXG4gICAgICBiZWdpbjogXCJcXFxcYlwiICsgUkVfTU9EVUxFX0lERU5ULCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgIGVuZDogXCJcXC5cIixcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICBiZWdpbjogUkVfTU9EVUxFX0lERU5ULFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICBdO1xuXG4gIHZhciBQQVJBTVNfQ09OVEVOVFMgPSBbXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbW9kdWxlJyxcbiAgICAgIGJlZ2luOiBcIlxcXFxiXCIgKyBSRV9NT0RVTEVfSURFTlQsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgZW5kOiBcIlxcLlwiLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2lkZW50aWZpZXInLFxuICAgICAgICAgIGJlZ2luOiBSRV9NT0RVTEVfSURFTlQsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIF07XG5cbiAgdmFyIFBBUkFNU19NT0RFID0ge1xuICAgIGJlZ2luOiBSRV9JREVOVCxcbiAgICBlbmQ6ICcoLHxcXFxcbnxcXFxcKSknLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgT1BFUkFUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwaW5nJyxcbiAgICAgICAgYmVnaW46ICc6JyxcbiAgICAgICAgZW5kOiAnKCx8XFxcXG4pJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05URU5UU1xuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgRlVOQ1RJT05fQkxPQ0tfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxzKFxcXFwoXFxcXC4/Lio/XFxcXCl8JyArIFJFX0lERU5UICsgJylcXFxccyo9PicsXG4gICAgICAgIGVuZDogJ1xcXFxzKj0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiBSRV9JREVOVFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IFJFX1BBUkFNXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcKFxccypcXCkvLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxzXFxcXChcXFxcLj9bXjtcXFxcfF0qXFxcXClcXFxccyo9PicsXG4gICAgICAgIGVuZDogJ1xcXFxzPT4nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICBQQVJBTVNfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKFxcXFwuXFxcXHMnICsgUkVfSURFTlQgKyAnXFxcXClcXFxccyo9PidcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIE1PRFVMRV9BQ0NFU1NfQ09OVEVOVFMucHVzaChGVU5DVElPTl9CTE9DS19NT0RFKTtcblxuICB2YXIgQ09OU1RSVUNUT1JfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdjb25zdHJ1Y3RvcicsXG4gICAgYmVnaW46IFJFX01PRFVMRV9JREVOVCArICdcXFxcKCcsXG4gICAgZW5kOiAnXFxcXCknLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgT1BFUkFUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYicgKyBSRV9JREVOVFxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgUEFUVEVSTl9NQVRDSF9CTE9DS19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhdHRlcm4tbWF0Y2gnLFxuICAgIGJlZ2luOiAnXFxcXHwnLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBlbmQ6ICc9PicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT05TVFJVQ1RPUl9NT0RFLFxuICAgICAgT1BFUkFUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjbGFzc05hbWU6ICdjb25zdHJ1Y3RvcicsXG4gICAgICAgIGJlZ2luOiBSRV9NT0RVTEVfSURFTlRcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE1PRFVMRV9BQ0NFU1NfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdtb2R1bGUtYWNjZXNzJyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFwiXFxcXGIoXCIgKyBSRV9NT0RVTEVfSURFTlQgKyBcIlxcXFwuKStcIiArIFJFX0lERU5UXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogXCJcXFxcYihcIiArIFJFX01PRFVMRV9JREVOVCArIFwiXFxcXC4pK1xcXFwoXCIsXG4gICAgICAgIGVuZDogXCJcXFxcKVwiLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBGVU5DVElPTl9CTE9DS19NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLFxuICAgICAgICAgICAgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXS5jb25jYXQoTU9EVUxFX0FDQ0VTU19DT05URU5UUylcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBcIlxcXFxiKFwiICsgUkVfTU9EVUxFX0lERU5UICsgXCJcXFxcLikre1wiLFxuICAgICAgICBlbmQ6IFwifVwiXG4gICAgICB9XG4gICAgXSxcbiAgICBjb250YWluczogTU9EVUxFX0FDQ0VTU19DT05URU5UU1xuICB9O1xuXG4gIFBBUkFNU19DT05URU5UUy5wdXNoKE1PRFVMRV9BQ0NFU1NfTU9ERSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3JlJ10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICcoOlxcXFwtfDo9fFxcXFwke3xcXFxcKz0pJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCcvXFxcXConLCAnXFxcXCovJywgeyBpbGxlZ2FsOiAnXihcXFxcIyxcXFxcL1xcXFwvKScgfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NoYXJhY3RlcicsXG4gICAgICAgIGJlZ2luOiAnXFwnKFxcXFxcXFxcW15cXCddK3xbXlxcJ10pXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXChcXFxcKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXFtcXFxcfCcsXG4gICAgICAgIGVuZDogJ1xcXFx8XFxcXF0nLFxuICAgICAgICByZWxldmFuY2U6ICAwLFxuICAgICAgICBjb250YWluczogTElTVF9DT05URU5UU19NT0RFU1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXFsnLFxuICAgICAgICBlbmQ6ICdcXFxcXScsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IExJU1RfQ09OVEVOVFNfTU9ERVNcbiAgICAgIH0sXG4gICAgICBDT05TVFJVQ1RPUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdvcGVyYXRvcicsXG4gICAgICAgIGJlZ2luOiBSRV9PUEVSQVRPUl9TUEFDRUQsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcLVxcXFwtPicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIE5VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgUEFUVEVSTl9NQVRDSF9CTE9DS19NT0RFLFxuICAgICAgRlVOQ1RJT05fQkxPQ0tfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbW9kdWxlLWRlZicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxibW9kdWxlXFxcXHMrXCIgKyBSRV9JREVOVCArIFwiXFxcXHMrXCIgKyBSRV9NT0RVTEVfSURFTlQgKyBcIlxcXFxzKz1cXFxccyt7XCIsXG4gICAgICAgIGVuZDogXCJ9XCIsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtb2R1bGUnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgYmVnaW46IFJFX01PRFVMRV9JREVOVFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICd7JyxcbiAgICAgICAgICAgIGVuZDogJ30nLFxuICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXS5jb25jYXQoTU9EVUxFX0FDQ0VTU19DT05URU5UUylcbiAgICAgIH0sXG4gICAgICBNT0RVTEVfQUNDRVNTX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOlxuICAgICAgJ0FyY2hpdmVSZWNvcmQgQXJlYUxpZ2h0U291cmNlIEF0bW9zcGhlcmUgQXR0cmlidXRlIEF0dHJpYnV0ZUJlZ2luIEF0dHJpYnV0ZUVuZCBCYXNpcyAnICtcbiAgICAgICdCZWdpbiBCbG9iYnkgQm91bmQgQ2xpcHBpbmcgQ2xpcHBpbmdQbGFuZSBDb2xvciBDb2xvclNhbXBsZXMgQ29uY2F0VHJhbnNmb3JtIENvbmUgJyArXG4gICAgICAnQ29vcmRpbmF0ZVN5c3RlbSBDb29yZFN5c1RyYW5zZm9ybSBDcm9wV2luZG93IEN1cnZlcyBDeWxpbmRlciBEZXB0aE9mRmllbGQgRGV0YWlsICcgK1xuICAgICAgJ0RldGFpbFJhbmdlIERpc2sgRGlzcGxhY2VtZW50IERpc3BsYXkgRW5kIEVycm9ySGFuZGxlciBFeHBvc3VyZSBFeHRlcmlvciBGb3JtYXQgJyArXG4gICAgICAnRnJhbWVBc3BlY3RSYXRpbyBGcmFtZUJlZ2luIEZyYW1lRW5kIEdlbmVyYWxQb2x5Z29uIEdlb21ldHJpY0FwcHJveGltYXRpb24gR2VvbWV0cnkgJyArXG4gICAgICAnSGlkZXIgSHlwZXJib2xvaWQgSWRlbnRpdHkgSWxsdW1pbmF0ZSBJbWFnZXIgSW50ZXJpb3IgTGlnaHRTb3VyY2UgJyArXG4gICAgICAnTWFrZUN1YmVGYWNlRW52aXJvbm1lbnQgTWFrZUxhdExvbmdFbnZpcm9ubWVudCBNYWtlU2hhZG93IE1ha2VUZXh0dXJlIE1hdHRlICcgK1xuICAgICAgJ01vdGlvbkJlZ2luIE1vdGlvbkVuZCBOdVBhdGNoIE9iamVjdEJlZ2luIE9iamVjdEVuZCBPYmplY3RJbnN0YW5jZSBPcGFjaXR5IE9wdGlvbiAnICtcbiAgICAgICdPcmllbnRhdGlvbiBQYXJhYm9sb2lkIFBhdGNoIFBhdGNoTWVzaCBQZXJzcGVjdGl2ZSBQaXhlbEZpbHRlciBQaXhlbFNhbXBsZXMgJyArXG4gICAgICAnUGl4ZWxWYXJpYW5jZSBQb2ludHMgUG9pbnRzR2VuZXJhbFBvbHlnb25zIFBvaW50c1BvbHlnb25zIFBvbHlnb24gUHJvY2VkdXJhbCBQcm9qZWN0aW9uICcgK1xuICAgICAgJ1F1YW50aXplIFJlYWRBcmNoaXZlIFJlbGF0aXZlRGV0YWlsIFJldmVyc2VPcmllbnRhdGlvbiBSb3RhdGUgU2NhbGUgU2NyZWVuV2luZG93ICcgK1xuICAgICAgJ1NoYWRpbmdJbnRlcnBvbGF0aW9uIFNoYWRpbmdSYXRlIFNodXR0ZXIgU2lkZXMgU2tldyBTb2xpZEJlZ2luIFNvbGlkRW5kIFNwaGVyZSAnICtcbiAgICAgICdTdWJkaXZpc2lvbk1lc2ggU3VyZmFjZSBUZXh0dXJlQ29vcmRpbmF0ZXMgVG9ydXMgVHJhbnNmb3JtIFRyYW5zZm9ybUJlZ2luIFRyYW5zZm9ybUVuZCAnICtcbiAgICAgICdUcmFuc2Zvcm1Qb2ludHMgVHJhbnNsYXRlIFRyaW1DdXJ2ZSBXb3JsZEJlZ2luIFdvcmxkRW5kJyxcbiAgICBpbGxlZ2FsOiAnPC8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVElGSUVSID0gJ1thLXpBLVotX11bXlxcXFxue10rXFxcXHsnO1xuXG4gIHZhciBQUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgIGJlZ2luOiAvW2EtekEtWi1fXSsvLCBlbmQ6IC9cXHMqOi8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICc7JyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgYmVnaW46IC9cXC5bYS16QS1aLV9dKy9cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgIGJlZ2luOiAvXFwob3B0aW9uYWxcXCkvXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2dyYXBoJywgJ2luc3RhbmNlcyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6ICdpbXBvcnQnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBGYWNldCBzZWN0aW9uc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ15mYWNldCAnICsgSURFTlRJRklFUixcbiAgICAgICAgZW5kOiAnfScsXG4gICAgICAgIGtleXdvcmRzOiAnZmFjZXQnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFBST1BFUlRZLFxuICAgICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgLy8gSW5zdGFuY2Ugc2VjdGlvbnNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqaW5zdGFuY2Ugb2YgJyArIElERU5USUZJRVIsXG4gICAgICAgIGVuZDogJ30nLFxuICAgICAgICBrZXl3b3JkczogJ25hbWUgY291bnQgY2hhbm5lbHMgaW5zdGFuY2UtZGF0YSBpbnN0YW5jZS1zdGF0ZSBpbnN0YW5jZSBvZicsXG4gICAgICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICBQUk9QRVJUWSxcbiAgICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG5cbiAgICAgIC8vIENvbXBvbmVudCBzZWN0aW9uc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ14nICsgSURFTlRJRklFUixcbiAgICAgICAgZW5kOiAnfScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgUFJPUEVSVFksXG4gICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyBDb21tZW50c1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBDb2xvcnMgZnJvbSBSb3V0ZXJPUyB0ZXJtaW5hbDpcbi8vICAgZ3JlZW4gICAgICAgIC0gIzBFOUEwMFxuLy8gICB0ZWFsICAgICAgICAgLSAjMEM5QTlBXG4vLyAgIHB1cnBsZSAgICAgICAtICM5OTA2OUFcbi8vICAgbGlnaHQtYnJvd24gIC0gIzlBOTkwMFxuXG5mdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIFNUQVRFTUVOVFMgPSAnZm9yZWFjaCBkbyB3aGlsZSBmb3IgaWYgZnJvbSB0byBzdGVwIGVsc2Ugb24tZXJyb3IgYW5kIG9yIG5vdCBpbic7XG5cbiAgLy8gR2xvYmFsIGNvbW1hbmRzOiBFdmVyeSBnbG9iYWwgY29tbWFuZCBzaG91bGQgc3RhcnQgd2l0aCBcIjpcIiB0b2tlbiwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyB2YXJpYWJsZS5cbiAgdmFyIEdMT0JBTF9DT01NQU5EUyA9ICdnbG9iYWwgbG9jYWwgYmVlcCBkZWxheSBwdXQgbGVuIHR5cGVvZiBwaWNrIGxvZyB0aW1lIHNldCBmaW5kIGVudmlyb25tZW50IHRlcm1pbmFsIGVycm9yIGV4ZWN1dGUgcGFyc2UgcmVzb2x2ZSB0b2FycmF5IHRvYm9vbCB0b2lkIHRvaXAgdG9pcDYgdG9udW0gdG9zdHIgdG90aW1lJztcblxuICAvLyBDb21tb24gY29tbWFuZHM6IEZvbGxvd2luZyBjb21tYW5kcyBhdmFpbGFibGUgZnJvbSBtb3N0IHN1Yi1tZW51czpcbiAgdmFyIENPTU1PTl9DT01NQU5EUyA9ICdhZGQgcmVtb3ZlIGVuYWJsZSBkaXNhYmxlIHNldCBnZXQgcHJpbnQgZXhwb3J0IGVkaXQgZmluZCBydW4gZGVidWcgZXJyb3IgaW5mbyB3YXJuaW5nJztcblxuICB2YXIgTElURVJBTFMgPSAndHJ1ZSBmYWxzZSB5ZXMgbm8gbm90aGluZyBuaWwgbnVsbCc7XG5cbiAgdmFyIE9CSkVDVFMgPSAndHJhZmZpYy1mbG93IHRyYWZmaWMtZ2VuZXJhdG9yIGZpcmV3YWxsIHNjaGVkdWxlciBhYWEgYWNjb3VudGluZyBhZGRyZXNzLWxpc3QgYWRkcmVzcyBhbGlnbiBhcmVhIGJhbmR3aWR0aC1zZXJ2ZXIgYmZkIGJncCBicmlkZ2UgY2xpZW50IGNsb2NrIGNvbW11bml0eSBjb25maWcgY29ubmVjdGlvbiBjb25zb2xlIGN1c3RvbWVyIGRlZmF1bHQgZGhjcC1jbGllbnQgZGhjcC1zZXJ2ZXIgZGlzY292ZXJ5IGRucyBlLW1haWwgZXRoZXJuZXQgZmlsdGVyIGZpcmV3YWxsIGZpcm13YXJlIGdwcyBncmFwaGluZyBncm91cCBoYXJkd2FyZSBoZWFsdGggaG90c3BvdCBpZGVudGl0eSBpZ21wLXByb3h5IGluY29taW5nIGluc3RhbmNlIGludGVyZmFjZSBpcCBpcHNlYyBpcHY2IGlycSBsMnRwLXNlcnZlciBsY2QgbGRwIGxvZ2dpbmcgbWFjLXNlcnZlciBtYWMtd2luYm94IG1hbmdsZSBtYW51YWwgbWlycm9yIG1tZSBtcGxzIG5hdCBuZCBuZWlnaGJvciBuZXR3b3JrIG5vdGUgbnRwIG9zcGYgb3NwZi12MyBvdnBuLXNlcnZlciBwYWdlIHBlZXIgcGltIHBpbmcgcG9saWN5IHBvb2wgcG9ydCBwcHAgcHBwb2UtY2xpZW50IHBwdHAtc2VydmVyIHByZWZpeCBwcm9maWxlIHByb3Bvc2FsIHByb3h5IHF1ZXVlIHJhZGl1cyByZXNvdXJjZSByaXAgcmlwbmcgcm91dGUgcm91dGluZyBzY3JlZW4gc2NyaXB0IHNlY3VyaXR5LXByb2ZpbGVzIHNlcnZlciBzZXJ2aWNlIHNlcnZpY2UtcG9ydCBzZXR0aW5ncyBzaGFyZXMgc21iIHNtcyBzbmlmZmVyIHNubXAgc25vb3BlciBzb2NrcyBzc3RwLXNlcnZlciBzeXN0ZW0gdG9vbCB0cmFja2luZyB0eXBlIHVwZ3JhZGUgdXBucCB1c2VyLW1hbmFnZXIgdXNlcnMgdXNlciB2bGFuIHNlY3JldCB2cnJwIHdhdGNoZG9nIHdlYi1hY2Nlc3Mgd2lyZWxlc3MgcHB0cCBwcHBvZSBsYW4gd2FuIGxheWVyNy1wcm90b2NvbCBsZWFzZSBzaW1wbGUgcmF3JztcblxuICAvLyBwcmludCBwYXJhbWV0ZXJzXG4gIC8vIFNldmVyYWwgcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlIGZvciBwcmludCBjb21tYW5kOlxuICAvLyBUb0RvOiB2YXIgUEFSQU1FVEVSU19QUklOVCA9ICdhcHBlbmQgYXMtdmFsdWUgYnJpZWYgZGV0YWlsIGNvdW50LW9ubHkgZmlsZSBmb2xsb3cgZm9sbG93LW9ubHkgZnJvbSBpbnRlcnZhbCB0ZXJzZSB2YWx1ZS1saXN0IHdpdGhvdXQtcGFnaW5nIHdoZXJlIGluZm8nO1xuICAvLyBUb0RvOiB2YXIgT1BFUkFUT1JTID0gJyYmIGFuZCAhIG5vdCB8fCBvciBpbiB+IF4gJiA8PCA+PiArIC0gKiAvJztcbiAgLy8gVG9EbzogdmFyIFRZUEVTID0gJ251bSBudW1iZXIgYm9vbCBib29sZWFuIHN0ciBzdHJpbmcgaXAgaXA2LXByZWZpeCBpZCB0aW1lIGFycmF5JztcbiAgLy8gVG9EbzogVGhlIGZvbGxvd2luZyB0b2tlbnMgc2VydmUgYXMgZGVsaW1pdGVycyBpbiB0aGUgZ3JhbW1hcjogKCkgIFtdICB7fSAgOiAgIDsgICAkICAgL1xuXG4gIHZhciBWQVJfUFJFRklYID0gJ2dsb2JhbCBsb2NhbCBzZXQgZm9yIGZvcmVhY2gnO1xuXG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRbXFx3XFxkI0BdW1xcd1xcZF9dKi99LFxuICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICBdXG4gIH07XG5cbiAgdmFyIFFVT1RFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFZBUixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xcJFxcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgQVBPU19TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLCBlbmQ6IC8nL1xuICB9O1xuXG4gIHZhciBJUEFERFIgPSAnKCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcXFxiJztcbiAgdmFyIElQQUREUl93QklUTUFTSyA9ICBJUEFERFIrJy8oM1swLTJdfFsxLTJdWzAtOV18XFxcXGQpJztcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncm91dGVyb3MnLCAnbWlrcm90aWsnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IC86P1tcXHctXSsvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICAgIGtleXdvcmQ6IFNUQVRFTUVOVFMgKyAnIDonICsgU1RBVEVNRU5UUy5zcGxpdCgnICcpLmpvaW4oJyA6JykgKyAnIDonICsgR0xPQkFMX0NPTU1BTkRTLnNwbGl0KCcgJykuam9pbignIDonKSxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IC8vINC90LXQtNC+0L/Rg9GB0YLQuNC80YvQtSDQutC+0L3RgdGC0YDRg9C60YbQuNC4XG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogL15ALywgZW5kOiAvJC8sIH0sICAgICAgICAgICAgICAgLy8gZG5zXG4gICAgICAgICAgeyBiZWdpbjogL1xcL1xcKi8sIGVuZDogL1xcKlxcLy8sIH0sICAgICAgICAgIC8vIC0tIGNvbW1lbnRcbiAgICAgICAgICB7IGJlZ2luOiAvJSUvLCBlbmQ6IC8kLywgfSwgICAgICAgICAgICAgICAvLyAtLSBjb21tZW50XG4gICAgICAgICAgeyBiZWdpbjogL14nLywgZW5kOiAvJC8sIH0sICAgICAgICAgICAgICAgLy8gTW9ua2V5IG9uZSBsaW5lIGNvbW1lbnRcbiAgICAgICAgICB7IGJlZ2luOiAvXlxccypcXC9bXFx3LV0rPS8sIGVuZDogLyQvLCB9LCAgICAvLyBqYm9zcy1jbGlcbiAgICAgICAgICB7IGJlZ2luOiAvXFwvXFwvLywgZW5kOiAvJC8sIH0sICAgICAgICAgICAgIC8vIFN0YW4gY29tbWVudFxuICAgICAgICAgIHsgYmVnaW46IC9eXFxbXFw8LywgZW5kOiAvXFw+XFxdJC8sIH0sICAgICAgICAvLyBGIyBjbGFzcyBkZWNsYXJhdGlvbj9cbiAgICAgICAgICB7IGJlZ2luOiAvPFxcLy8sIGVuZDogLz4vLCB9LCAgICAgICAgICAgICAgLy8gSFRNTCB0YWdzXG4gICAgICAgICAgeyBiZWdpbjogL15mYWNldCAvLCBlbmQ6IC9cXH0vLCB9LCAgICAgICAgIC8vIHJvYm9jb25mIC0g0LvRjtGC0YvQuSDQutC+0YHRgtGL0LvRjCApKSlcbiAgICAgICAgICB7IGJlZ2luOiAnXjFcXFxcLlxcXFwuKFxcXFxkKykkJywgZW5kOiAvJC8sIH0sICAvLyB0YXBcbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogLy4vLFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXiMnLCAnJCcpLFxuICAgICAgUVVPVEVfU1RSSU5HLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBWQVIsXG4gICAgICB7IC8vIGF0dHJpYnV0ZT12YWx1ZVxuICAgICAgICBiZWdpbjogL1tcXHctXStcXD0oW15cXHNcXHtcXH1cXFtcXF1cXChcXCldKykvLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgICAgICBiZWdpbjogL1tePV0rL1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC89LyxcbiAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiAgdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIFFVT1RFX1NUUklORyxcbiAgICAgICAgICAgICAgQVBPU19TVFJJTkcsXG4gICAgICAgICAgICAgIFZBUixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoJyArIExJVEVSQUxTLnNwbGl0KCcgJykuam9pbignfCcpICsgJylcXFxcYicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC8qe1xuICAgICAgICAgICAgICAgIC8vIElQdjQgYWRkcmVzc2VzIGFuZCBzdWJuZXRzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge2JlZ2luOiBJUEFERFJfd0JJVE1BU0srJygsJytJUEFERFJfd0JJVE1BU0srJykqJ30sIC8vMTkyLjE2OC4wLjAvMjQsMS4yLjMuMC8yNFxuICAgICAgICAgICAgICAgICAge2JlZ2luOiBJUEFERFIrJy0nK0lQQUREUn0sICAgICAgIC8vIDE5Mi4xNjguMC4xLTE5Mi4xNjguMC4zXG4gICAgICAgICAgICAgICAgICB7YmVnaW46IElQQUREUisnKCwnK0lQQUREUisnKSonfSwgLy8gMTkyLjE2OC4wLjEsMTkyLjE2OC4wLjM0LDE5Mi4xNjguMjQuMSwxOTIuMTY4LjAuMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSwgLy8gKi9cbiAgICAgICAgICAgICAgLyp7XG4gICAgICAgICAgICAgICAgLy8gTUFDIGFkZHJlc3NlcyBhbmQgREhDUCBDbGllbnQgSURzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcYigxOik/KFswLTlBLUZhLWZdezEsMn1bOi1dKXs1fShbMC05QS1GYS1mXSl7MSwyfVxcYi8sXG4gICAgICAgICAgICAgIH0sIC8vKi9cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vINCd0LUg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNGC0Ywg0L3QtSDQutC70LDRgdGB0LjRhNC40YbQuNGA0L7QstCw0L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjy4g0J3QtdC+0LHRhdC+0LTQuNC80L4g0LTQu9GPINC40YHQutC70Y7Rh9C10L3QuNGPINC/0L7QtNGB0LLQtdGC0LrQuCDQt9C90LDRh9C10L3QuNC5INC60LDQuiBidWlsdF9pbi5cbiAgICAgICAgICAgICAgICAvLyBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvKFwiW15cIl0qXCJ8W15cXHNcXHtcXH1cXFtcXF1dKykvLFxuICAgICAgICAgICAgICB9LCAvLyovXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSAvLyovXG4gICAgICAgIF1cbiAgICAgIH0sLy8qL1xuICAgICAge1xuICAgICAgICAvLyBIRVggdmFsdWVzXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAvXFwqWzAtOWEtZkEtRl0rLyxcbiAgICAgIH0sIC8vKi9cblxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBDT01NT05fQ09NTUFORFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKShbXFxcXHNcXFtcXChdfFxcXSknLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdidWlsdGluLW5hbWUnLCAvLydmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogL1xcdysvLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcoXFxcXC5cXFxcLi98L3xcXFxccykoKCcgKyBPQkpFQ1RTLnNwbGl0KCcgJykuam9pbignfCcpICsgJyk7P1xcXFxzKSsnLHJlbGV2YW5jZTogMTAsfSxcbiAgICAgICAgICB7YmVnaW46IC9cXC5cXC4vLH0sXG4gICAgICAgIF0sXG4gICAgICB9LC8vKi9cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnZmxvYXQgY29sb3IgcG9pbnQgbm9ybWFsIHZlY3RvciBtYXRyaXggd2hpbGUgZm9yIGlmIGRvIHJldHVybiBlbHNlIGJyZWFrIGV4dGVybiBjb250aW51ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2FicyBhY29zIGFtYmllbnQgYXJlYSBhc2luIGF0YW4gYXRtb3NwaGVyZSBhdHRyaWJ1dGUgY2FsY3VsYXRlbm9ybWFsIGNlaWwgY2VsbG5vaXNlICcgK1xuICAgICAgICAnY2xhbXAgY29tcCBjb25jYXQgY29zIGRlZ3JlZXMgZGVwdGggRGVyaXYgZGlmZnVzZSBkaXN0YW5jZSBEdSBEdiBlbnZpcm9ubWVudCBleHAgJyArXG4gICAgICAgICdmYWNlZm9yd2FyZCBmaWx0ZXJzdGVwIGZsb29yIGZvcm1hdCBmcmVzbmVsIGluY2lkZW50IGxlbmd0aCBsaWdodHNvdXJjZSBsb2cgbWF0Y2ggJyArXG4gICAgICAgICdtYXggbWluIG1vZCBub2lzZSBub3JtYWxpemUgbnRyYW5zZm9ybSBvcHBvc2l0ZSBvcHRpb24gcGhvbmcgcG5vaXNlIHBvdyBwcmludGYgJyArXG4gICAgICAgICdwdGxpbmVkIHJhZGlhbnMgcmFuZG9tIHJlZmxlY3QgcmVmcmFjdCByZW5kZXJpbmZvIHJvdW5kIHNldGNvbXAgc2V0eGNvbXAgc2V0eWNvbXAgJyArXG4gICAgICAgICdzZXR6Y29tcCBzaGFkb3cgc2lnbiBzaW4gc21vb3Roc3RlcCBzcGVjdWxhciBzcGVjdWxhcmJyZGYgc3BsaW5lIHNxcnQgc3RlcCB0YW4gJyArXG4gICAgICAgICd0ZXh0dXJlIHRleHR1cmVpbmZvIHRyYWNlIHRyYW5zZm9ybSB2dHJhbnNmb3JtIHhjb21wIHljb21wIHpjb21wJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3VyZmFjZSBkaXNwbGFjZW1lbnQgbGlnaHQgdm9sdW1lIGltYWdlcicsIGVuZDogJ1xcXFwoJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2lsbHVtaW5hdGUgaWxsdW1pbmFuY2UgZ2F0aGVyJywgZW5kOiAnXFxcXCgnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAgIGtleXdvcmQ6ICdCSUxMX1BFUklPRCBCSUxMX1NUQVJUIEJJTExfU1RPUCBSU19FRkZFQ1RJVkVfU1RBUlQgUlNfRUZGRUNUSVZFX1NUT1AgUlNfSlVSSVNfQ09ERSBSU19PUENPX0NPREUgJyArXG4gICAgICAgICAnSU5UREFEREFUVFJJQlVURXw1IElOVERBRERWTVNHfDUgSU5UREJMT0NLT1B8NSBJTlREQkxPQ0tPUE5BfDUgSU5URENMT1NFfDUgSU5URENPVU5UfDUgJyArXG4gICAgICAgICAnSU5URENPVU5UU1RBVFVTQ09ERXw1IElOVERDUkVBVEVNQVNLfDUgSU5URENSRUFURURBWU1BU0t8NSBJTlREQ1JFQVRFRkFDVE9STUFTS3w1ICcgK1xuICAgICAgICAgJ0lOVERDUkVBVEVIQU5ETEV8NSBJTlREQ1JFQVRFT1ZFUlJJREVEQVlNQVNLfDUgSU5URENSRUFURU9WRVJSSURFTUFTS3w1ICcgK1xuICAgICAgICAgJ0lOVERDUkVBVEVTVEFUVVNDT0RFTUFTS3w1IElOVERDUkVBVEVUT1VQRVJJT0R8NSBJTlREREVMRVRFfDUgSU5URERJUFRFU1R8NSBJTlRERVhQT1JUfDUgJyArXG4gICAgICAgICAnSU5UREdFVEVSUk9SQ09ERXw1IElOVERHRVRFUlJPUk1FU1NBR0V8NSBJTlRESVNFUVVBTHw1IElOVERKT0lOfDUgSU5URExPQUR8NSBJTlRETE9BREFDVFVBTENVVHw1ICcgK1xuICAgICAgICAgJ0lOVERMT0FEREFURVN8NSBJTlRETE9BREhJU1R8NSBJTlRETE9BRExJU1R8NSBJTlRETE9BRExJU1REQVRFU3w1IElOVERMT0FETElTVEVORVJHWXw1ICcgK1xuICAgICAgICAgJ0lOVERMT0FETElTVEhJU1R8NSBJTlRETE9BRFJFTEFURURDSEFOTkVMfDUgSU5URExPQURTUHw1IElOVERMT0FEU1RBR0lOR3w1IElOVERMT0FEVU9NfDUgJyArXG4gICAgICAgICAnSU5URExPQURVT01EQVRFU3w1IElOVERMT0FEVU9NSElTVHw1IElOVERMT0FEVkVSU0lPTnw1IElOVERPUEVOfDUgSU5URFJFQURGSVJTVHw1IElOVERSRUFETkVYVHw1ICcgK1xuICAgICAgICAgJ0lOVERSRUNDT1VOVHw1IElOVERSRUxFQVNFfDUgSU5URFJFUExBQ0V8NSBJTlREUk9MTEFWR3w1IElOVERST0xMUEVBS3w1IElOVERTQ0FMQVJPUHw1IElOVERTQ0FMRXw1ICcgK1xuICAgICAgICAgJ0lOVERTRVRBVFRSSUJVVEV8NSBJTlREU0VURFNUUEFSVElDSVBBTlR8NSBJTlREU0VUU1RSSU5HfDUgSU5URFNFVFZBTFVFfDUgSU5URFNFVFZBTFVFU1RBVFVTfDUgJyArXG4gICAgICAgICAnSU5URFNISUZUU1RBUlRUSU1FfDUgSU5URFNNT09USHw1IElOVERTT1JUfDUgSU5URFNQSUtFVEVTVHw1IElOVERTVUJTRVR8NSBJTlREVE9VfDUgJyArXG4gICAgICAgICAnSU5URFRPVVJFTEVBU0V8NSBJTlREVE9VVkFMVUV8NSBJTlREVVBEQVRFU1RBVFN8NSBJTlREVkFMVUV8NSBTVERFViBJTlREREVMRVRFRVh8NSAnICtcbiAgICAgICAgICdJTlRETE9BREVYQUNUVUFMfDUgSU5URExPQURFWENVVHw1IElOVERMT0FERVhEQVRFU3w1IElOVERMT0FERVh8NSBJTlRETE9BREVYUkVMQVRFRENIQU5ORUx8NSAnICtcbiAgICAgICAgICdJTlREU0FWRUVYfDUgTVZMT0FEfDUgTVZMT0FEQUNDVHw1IE1WTE9BREFDQ1REQVRFU3w1IE1WTE9BREFDQ1RISVNUfDUgTVZMT0FEREFURVN8NSBNVkxPQURISVNUfDUgJyArXG4gICAgICAgICAnTVZMT0FETElTVHw1IE1WTE9BRExJU1REQVRFU3w1IE1WTE9BRExJU1RISVNUfDUgSUYgRk9SIE5FWFQgRE9ORSBTRUxFQ1QgRU5EIENBTEwgQUJPUlQgQ0xFQVIgQ0hBTk5FTCBGQUNUT1IgTElTVCBOVU1CRVIgJyArXG4gICAgICAgICAnT1ZFUlJJREUgU0VUIFdFRUsgRElTVFJJQlVUSU9OTk9ERSBFTFNFIFdIRU4gVEhFTiBPVEhFUldJU0UgSUVOVU0gQ1NWIElOQ0xVREUgTEVBVkUgUklERVIgU0FWRSBERUxFVEUgJyArXG4gICAgICAgICAnTk9WQUxVRSBTRUNUSU9OIFdBUk4gU0FWRV9VUERBVEUgREVURVJNSU5BTlQgTEFCRUwgUkVQT1JUIFJFVkVOVUUgRUFDSCAnICtcbiAgICAgICAgICdJTiBGUk9NIFRPVEFMIENIQVJHRSBCTE9DSyBBTkQgT1IgQ1NWX0ZJTEUgUkFURV9DT0RFIEFVWElMSUFSWV9ERU1BTkQgJyArXG4gICAgICAgICAnVUlEQUNDT1VOVCBSUyBCSUxMX1BFUklPRF9TRUxFQ1QgSE9VUlNfUEVSX01PTlRIIElOVERfRVJST1JfU1RPUCBTRUFTT05fU0NIRURVTEVfTkFNRSAnICtcbiAgICAgICAgICdBQ0NPVU5URkFDVE9SIEFSUkFZVVBQRVJCT1VORCBDQUxMU1RPUkVEUFJPQyBHRVRBRE9DT05ORUNUSU9OIEdFVENPTk5FQ1QgR0VUREFUQVNPVVJDRSAnICtcbiAgICAgICAgICdHRVRRVUFMSUZJRVIgR0VUVVNFUklEIEhBU1ZBTFVFIExJU1RDT1VOVCBMSVNUT1AgTElTVFVQREFURSBMSVNUVkFMVUUgUFJPUkFURUZBQ1RPUiBSU1BST1JBVEUgJyArXG4gICAgICAgICAnU0VUQklOUEFUSCBTRVREQk1PTklUT1IgV1FfT1BFTiBCSUxMSU5HSE9VUlMgREFURSBEQVRFRlJPTUZMT0FUIERBVEVUSU1FRlJPTVNUUklORyAnICtcbiAgICAgICAgICdEQVRFVElNRVRPU1RSSU5HIERBVEVUT0ZMT0FUIERBWSBEQVlESUZGIERBWU5BTUUgREJEQVRFVElNRSBIT1VSIE1JTlVURSBNT05USCBNT05USERJRkYgJyArXG4gICAgICAgICAnTU9OVEhIT1VSUyBNT05USE5BTUUgUk9VTkREQVRFIFNBTUVXRUVLREFZTEFTVFlFQVIgU0VDT05EIFdFRUtEQVkgV0VFS0RJRkYgWUVBUiBZRUFSREFZICcgK1xuICAgICAgICAgJ1lFQVJTVFIgQ09NUFNVTSBISVNUQ09VTlQgSElTVE1BWCBISVNUTUlOIEhJU1RNSU5OWiBISVNUVkFMVUUgTUFYTlJBTkdFIE1BWFJBTkdFIE1JTlJBTkdFICcgK1xuICAgICAgICAgJ0NPTVBJS1ZBIENPTVBLVkEgQ09NUEtWQVJGUk9NS1FLVyBDT01QTEYgSURBVFRSIEZMQUcgTEYyS1cgTEYyS1dIIE1BWEtXIFBPV0VSRkFDVE9SICcgK1xuICAgICAgICAgJ1JFQURJTkcyVVNBR0UgQVZHU0VBU09OIE1BWFNFQVNPTiBNT05USExZTUVSR0UgU0VBU09OVkFMVUUgU1VNU0VBU09OIEFDQ1RSRUFEREFURVMgJyArXG4gICAgICAgICAnQUNDVFRBQkxFTE9BRCBDT05GSUdBREQgQ09ORklHR0VUIENSRUFURU9CSkVDVCBDUkVBVEVSRVBPUlQgRU1BSUxDTElFTlQgRVhQQkxLTURNVVNBR0UgJyArXG4gICAgICAgICAnRVhQTURNVVNBR0UgRVhQT1JUX1VTQUdFIEZBQ1RPUklORUZGRUNUIEdFVFVTRVJTUEVDSUZJRURTVE9QIElORUZGRUNUIElTSE9MSURBWSBSVU5SQVRFICcgK1xuICAgICAgICAgJ1NBVkVfUFJPRklMRSBTRVRSRVBPUlRUSVRMRSBVU0VSRVhJVCBXQVRGT1JSVU5SQVRFIFRPIFRBQkxFIEFDT1MgQVNJTiBBVEFOIEFUQU4yIEJJVEFORCBDRUlMICcgK1xuICAgICAgICAgJ0NPUyBDT1NFQ0FOVCBDT1NIIENPVEFOR0VOVCBESVZRVU9UIERJVlJFTSBFWFAgRkFCUyBGTE9PUiBGTU9EIEZSRVBNIEZSRVhQTiBMT0cgTE9HMTAgTUFYIE1BWE4gJyArXG4gICAgICAgICAnTUlOIE1JTk5aIE1PREYgUE9XIFJPVU5EIFJPVU5EMlZBTFVFIFJPVU5ESU5UIFNFQ0FOVCBTSU4gU0lOSCBTUVJPT1QgVEFOIFRBTkggRkxPQVQyU1RSSU5HICcgK1xuICAgICAgICAgJ0ZMT0FUMlNUUklOR05DIElOU1RSIExFRlQgTEVOIExUUklNIE1JRCBSSUdIVCBSVFJJTSBTVFJJTkcgU1RSSU5HTkMgVE9MT1dFUiBUT1VQUEVSIFRSSU0gJyArXG4gICAgICAgICAnTlVNREFZUyBSRUFEX0RBVEUgU1RBR0lORycsXG4gICAgICAgYnVpbHRfaW46ICdJREVOVElGSUVSIE9QVElPTlMgWE1MX0VMRU1FTlQgWE1MX09QIFhNTF9FTEVNRU5UX09GIERPTURPQ0NSRUFURSBET01ET0NMT0FERklMRSBET01ET0NMT0FEWE1MICcgK1xuICAgICAgICAgJ0RPTURPQ1NBVkVGSUxFIERPTURPQ0dFVFJPT1QgRE9NRE9DQUREUEkgRE9NTk9ERUdFVE5BTUUgRE9NTk9ERUdFVFRZUEUgRE9NTk9ERUdFVFZBTFVFIERPTU5PREVHRVRDSElMRENUICcgK1xuICAgICAgICAgJ0RPTU5PREVHRVRGSVJTVENISUxEIERPTU5PREVHRVRTSUJMSU5HIERPTU5PREVDUkVBVEVDSElMREVMRU1FTlQgRE9NTk9ERVNFVEFUVFJJQlVURSAnICtcbiAgICAgICAgICdET01OT0RFR0VUQ0hJTERFTEVNRU5UQ1QgRE9NTk9ERUdFVEZJUlNUQ0hJTERFTEVNRU5UIERPTU5PREVHRVRTSUJMSU5HRUxFTUVOVCBET01OT0RFR0VUQVRUUklCVVRFQ1QgJyArXG4gICAgICAgICAnRE9NTk9ERUdFVEFUVFJJQlVURUkgRE9NTk9ERUdFVEFUVFJJQlVURUJZTkFNRSBET01OT0RFR0VUQllOQU1FJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcjXFxcXHMrW2EtekEtWlxcXFwgXFxcXC5dKicsIHJlbGV2YW5jZTogMH0sIC8vIGxvb2tzIGxpa2UgIy1jb21tZW50XG4gICAgICAgICAge2JlZ2luOiAnI1thLXpBLVpcXFxcIFxcXFwuXSsnfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5VTV9TVUZGSVggPSAnKFt1aV0oOHwxNnwzMnw2NHwxMjh8c2l6ZSl8ZigzMnw2NCkpXFw/JztcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnYWJzdHJhY3QgYXMgYXN5bmMgYXdhaXQgYmVjb21lIGJveCBicmVhayBjb25zdCBjb250aW51ZSBjcmF0ZSBkbyBkeW4gJyArXG4gICAgJ2Vsc2UgZW51bSBleHRlcm4gZmFsc2UgZmluYWwgZm4gZm9yIGlmIGltcGwgaW4gbGV0IGxvb3AgbWFjcm8gbWF0Y2ggbW9kICcgK1xuICAgICdtb3ZlIG11dCBvdmVycmlkZSBwcml2IHB1YiByZWYgcmV0dXJuIHNlbGYgU2VsZiBzdGF0aWMgc3RydWN0IHN1cGVyICcgK1xuICAgICd0cmFpdCB0cnVlIHRyeSB0eXBlIHR5cGVvZiB1bnNhZmUgdW5zaXplZCB1c2UgdmlydHVhbCB3aGVyZSB3aGlsZSB5aWVsZCc7XG4gIHZhciBCVUlMVElOUyA9XG4gICAgLy8gZnVuY3Rpb25zXG4gICAgJ2Ryb3AgJyArXG4gICAgLy8gdHlwZXNcbiAgICAnaTggaTE2IGkzMiBpNjQgaTEyOCBpc2l6ZSAnICtcbiAgICAndTggdTE2IHUzMiB1NjQgdTEyOCB1c2l6ZSAnICtcbiAgICAnZjMyIGY2NCAnICtcbiAgICAnc3RyIGNoYXIgYm9vbCAnICtcbiAgICAnQm94IE9wdGlvbiBSZXN1bHQgU3RyaW5nIFZlYyAnICtcbiAgICAvLyB0cmFpdHNcbiAgICAnQ29weSBTZW5kIFNpemVkIFN5bmMgRHJvcCBGbiBGbk11dCBGbk9uY2UgVG9Pd25lZCBDbG9uZSBEZWJ1ZyAnICtcbiAgICAnUGFydGlhbEVxIFBhcnRpYWxPcmQgRXEgT3JkIEFzUmVmIEFzTXV0IEludG8gRnJvbSBEZWZhdWx0IEl0ZXJhdG9yICcgK1xuICAgICdFeHRlbmQgSW50b0l0ZXJhdG9yIERvdWJsZUVuZGVkSXRlcmF0b3IgRXhhY3RTaXplSXRlcmF0b3IgJyArXG4gICAgJ1NsaWNlQ29uY2F0RXh0IFRvU3RyaW5nICcgK1xuICAgIC8vIG1hY3Jvc1xuICAgICdhc3NlcnQhIGFzc2VydF9lcSEgYml0ZmxhZ3MhIGJ5dGVzISBjZmchIGNvbCEgY29uY2F0ISBjb25jYXRfaWRlbnRzISAnICtcbiAgICAnZGVidWdfYXNzZXJ0ISBkZWJ1Z19hc3NlcnRfZXEhIGVudiEgcGFuaWMhIGZpbGUhIGZvcm1hdCEgZm9ybWF0X2FyZ3MhICcgK1xuICAgICdpbmNsdWRlX2JpbiEgaW5jbHVkZV9zdHIhIGxpbmUhIGxvY2FsX2RhdGFfa2V5ISBtb2R1bGVfcGF0aCEgJyArXG4gICAgJ29wdGlvbl9lbnYhIHByaW50ISBwcmludGxuISBzZWxlY3QhIHN0cmluZ2lmeSEgdHJ5ISB1bmltcGxlbWVudGVkISAnICtcbiAgICAndW5yZWFjaGFibGUhIHZlYyEgd3JpdGUhIHdyaXRlbG4hIG1hY3JvX3J1bGVzISBhc3NlcnRfbmUhIGRlYnVnX2Fzc2VydF9uZSEnO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncnMnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgS0VZV09SRFMsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBTb21lIE5vbmUgT2sgRXJyJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICBCVUlMVElOU1xuICAgIH0sXG4gICAgbGV4ZW1lczogaGxqcy5JREVOVF9SRSArICchPycsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCcvXFxcXConLCAnXFxcXCovJywge2NvbnRhaW5zOiBbJ3NlbGYnXX0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtiZWdpbjogL2I/XCIvLCBpbGxlZ2FsOiBudWxsfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgIHsgYmVnaW46IC9yKCMqKVwiKC58XFxuKSo/XCJcXDEoPyEjKS8gfSxcbiAgICAgICAgICAgeyBiZWdpbjogL2I/J1xcXFw/KHhcXHd7Mn18dVxcd3s0fXxVXFx3ezh9fC4pJy8gfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogLydbYS16QS1aX11bYS16QS1aMC05X10qL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIwYihbMDFfXSspJyArIE5VTV9TVUZGSVggfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIwbyhbMC03X10rKScgKyBOVU1fU1VGRklYIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiMHgoW0EtRmEtZjAtOV9dKyknICsgTlVNX1NVRkZJWCB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYihcXFxcZFtcXFxcZF9dKihcXFxcLlswLTlfXSspPyhbZUVdWystXT9bMC05X10rKT8pJyArXG4gICAgICAgICAgICAgICAgICAgTlVNX1NVRkZJWFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmbicsIGVuZDogJyhcXFxcKHw8KScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjXFxcXCE/XFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiL1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAndHlwZScsIGVuZDogJzsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwge2VuZHNQYXJlbnQ6IHRydWV9KVxuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXFMnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd0cmFpdCBlbnVtIHN0cnVjdCB1bmlvbicsIGVuZDogJ3snLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwge2VuZHNQYXJlbnQ6IHRydWV9KVxuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAnW1xcXFx3XFxcXGRdJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnOjonLFxuICAgICAgICBrZXl3b3Jkczoge2J1aWx0X2luOiBCVUlMVElOU31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnLT4nXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICAgIC8vIERhdGEgc3RlcCBhbmQgUFJPQyBTUUwgc3RhdGVtZW50c1xuICAgIHZhciBTQVNfS0VZV09SRFMgPSAnJytcbiAgICAgICAgJ2RvIGlmIHRoZW4gZWxzZSBlbmQgdW50aWwgd2hpbGUgJytcbiAgICAgICAgJycrXG4gICAgICAgICdhYm9ydCBhcnJheSBhdHRyaWIgYnkgY2FsbCBjYXJkcyBjYXJkczQgY2F0bmFtZSBjb250aW51ZSAnK1xuICAgICAgICAnZGF0YWxpbmVzIGRhdGFsaW5lczQgZGVsZXRlIGRlbGltIGRlbGltaXRlciBkaXNwbGF5IGRtIGRyb3AgJytcbiAgICAgICAgJ2VuZHNhcyBlcnJvciBmaWxlIGZpbGVuYW1lIGZvb3Rub3RlIGZvcm1hdCBnb3RvIGluIGluZmlsZSAnK1xuICAgICAgICAnaW5mb3JtYXQgaW5wdXQga2VlcCBsYWJlbCBsZWF2ZSBsZW5ndGggbGlibmFtZSBsaW5rIGxpc3QgJytcbiAgICAgICAgJ2xvc3RjYXJkIG1lcmdlIG1pc3NpbmcgbW9kaWZ5IG9wdGlvbnMgb3V0cHV0IG91dCBwYWdlIHB1dCAnK1xuICAgICAgICAncmVkaXJlY3QgcmVtb3ZlIHJlbmFtZSByZXBsYWNlIHJldGFpbiByZXR1cm4gc2VsZWN0IHNldCBza2lwICcrXG4gICAgICAgICdzdGFydHNhcyBzdG9wIHRpdGxlIHVwZGF0ZSB3YWl0c2FzIHdoZXJlIHdpbmRvdyB4IHN5c3Rhc2sgJytcbiAgICAgICAgJycrXG4gICAgICAgICdhZGQgYW5kIGFsdGVyIGFzIGNhc2NhZGUgY2hlY2sgY3JlYXRlIGRlbGV0ZSBkZXNjcmliZSAnK1xuICAgICAgICAnZGlzdGluY3QgZHJvcCBmb3JlaWduIGZyb20gZ3JvdXAgaGF2aW5nIGluZGV4IGluc2VydCBpbnRvIGluICcrXG4gICAgICAgICdrZXkgbGlrZSBtZXNzYWdlIG1vZGlmeSBtc2d0eXBlIG5vdCBudWxsIG9uIG9yIG9yZGVyIHByaW1hcnkgJytcbiAgICAgICAgJ3JlZmVyZW5jZXMgcmVzZXQgcmVzdHJpY3Qgc2VsZWN0IHNldCB0YWJsZSB1bmlxdWUgdXBkYXRlICcrXG4gICAgICAgICd2YWxpZGF0ZSB2aWV3IHdoZXJlJztcblxuICAgIC8vIEJ1aWx0LWluIFNBUyBmdW5jdGlvbnNcbiAgICB2YXIgU0FTX0ZVTiA9ICcnK1xuICAgICAgICAnYWJzfGFkZHJ8YWlyeXxhcmNvc3xhcnNpbnxhdGFufGF0dHJjfGF0dHJufGJhbmR8JytcbiAgICAgICAgJ2JldGFpbnZ8YmxzaGlmdHxibm90fGJvcnxicnNoaWZ0fGJ4b3J8Ynl0ZXxjZGZ8Y2VpbHwnK1xuICAgICAgICAnY2V4aXN0fGNpbnZ8Y2xvc2V8Y25vbmN0fGNvbGxhdGV8Y29tcGJsfGNvbXBvdW5kfCcrXG4gICAgICAgICdjb21wcmVzc3xjb3N8Y29zaHxjc3N8Y3Vyb2JzfGN2fGRhY2NkYnxkYWNjZGJzbHwnK1xuICAgICAgICAnZGFjY3NsfGRhY2NzeWR8ZGFjY3RhYnxkYWlyeXxkYXRlfGRhdGVqdWx8ZGF0ZXBhcnR8JytcbiAgICAgICAgJ2RhdGV0aW1lfGRheXxkY2xvc2V8ZGVwZGJ8ZGVwZGJzbHxkZXBkYnNsfGRlcHNsfCcrXG4gICAgICAgICdkZXBzbHxkZXBzeWR8ZGVwc3lkfGRlcHRhYnxkZXB0YWJ8ZGVxdW90ZXxkaG1zfGRpZnwnK1xuICAgICAgICAnZGlnYW1tYXxkaW18ZGluZm98ZG51bXxkb3Blbnxkb3B0bmFtZXxkb3B0bnVtfGRyZWFkfCcrXG4gICAgICAgICdkcm9wbm90ZXxkc25hbWV8ZXJmfGVyZmN8ZXhpc3R8ZXhwfGZhcHBlbmR8ZmNsb3NlfCcrXG4gICAgICAgICdmY29sfGZkZWxldGV8ZmV0Y2h8ZmV0Y2hvYnN8ZmV4aXN0fGZnZXR8ZmlsZWV4aXN0fCcrXG4gICAgICAgICdmaWxlbmFtZXxmaWxlcmVmfGZpbmZvfGZpbnZ8ZmlwbmFtZXxmaXBuYW1lbHwnK1xuICAgICAgICAnZmlwc3RhdGV8Zmxvb3J8Zm5vbmN0fGZub3RlfGZvcGVufGZvcHRuYW1lfGZvcHRudW18JytcbiAgICAgICAgJ2Zwb2ludHxmcG9zfGZwdXR8ZnJlYWR8ZnJld2luZHxmcmxlbnxmc2VwfGZ1enp8JytcbiAgICAgICAgJ2Z3cml0ZXxnYW1pbnZ8Z2FtbWF8Z2V0b3B0aW9ufGdldHZhcmN8Z2V0dmFybnxoYm91bmR8JytcbiAgICAgICAgJ2htc3xob3N0aGVscHxob3VyfGliZXNzZWx8aW5kZXh8aW5kZXhjfGluZGV4d3xpbnB1dHwnK1xuICAgICAgICAnaW5wdXRjfGlucHV0bnxpbnR8aW50Y2t8aW50bnh8aW50cnJ8aXJyfGpiZXNzZWx8JytcbiAgICAgICAgJ2p1bGRhdGV8a3VydG9zaXN8bGFnfGxib3VuZHxsZWZ0fGxlbmd0aHxsZ2FtbWF8JytcbiAgICAgICAgJ2xpYm5hbWV8bGlicmVmfGxvZ3xsb2cxMHxsb2cyfGxvZ3BkZnxsb2dwbWZ8bG9nc2RmfCcrXG4gICAgICAgICdsb3djYXNlfG1heHxtZHl8bWVhbnxtaW58bWludXRlfG1vZHxtb250aHxtb3BlbnwnK1xuICAgICAgICAnbW9ydHxufG5ldHB2fG5taXNzfG5vcm1hbHxub3RlfG5wdnxvcGVufG9yZGluYWx8JytcbiAgICAgICAgJ3BhdGhuYW1lfHBkZnxwZWVrfHBlZWtjfHBtZnxwb2ludHxwb2lzc29ufHBva2V8JytcbiAgICAgICAgJ3Byb2JiZXRhfHByb2Jibm1sfHByb2JjaGl8cHJvYmZ8cHJvYmdhbXxwcm9iaHlwcnwnK1xuICAgICAgICAncHJvYml0fHByb2JuZWdifHByb2Jub3JtfHByb2J0fHB1dHxwdXRjfHB1dG58cXRyfCcrXG4gICAgICAgICdxdW90ZXxyYW5iaW58cmFuY2F1fHJhbmV4cHxyYW5nYW18cmFuZ2V8cmFua3xyYW5ub3J8JytcbiAgICAgICAgJ3JhbnBvaXxyYW50Ymx8cmFudHJpfHJhbnVuaXxyZXBlYXR8cmVzb2x2ZXxyZXZlcnNlfCcrXG4gICAgICAgICdyZXdpbmR8cmlnaHR8cm91bmR8c2F2aW5nfHNjYW58c2RmfHNlY29uZHxzaWdufCcrXG4gICAgICAgICdzaW58c2luaHxza2V3bmVzc3xzb3VuZGV4fHNwZWRpc3xzcXJ0fHN0ZHxzdGRlcnJ8JytcbiAgICAgICAgJ3N0Zmlwc3xzdG5hbWV8c3RuYW1lbHxzdWJzdHJ8c3VtfHN5bWdldHxzeXNnZXR8JytcbiAgICAgICAgJ3N5c21zZ3xzeXNwcm9kfHN5c3JjfHN5c3RlbXx0YW58dGFuaHx0aW1lfHRpbWVwYXJ0fCcrXG4gICAgICAgICd0aW52fHRub25jdHx0b2RheXx0cmFuc2xhdGV8dHJhbndyZHx0cmlnYW1tYXwnK1xuICAgICAgICAndHJpbXx0cmltbnx0cnVuY3x1bmlmb3JtfHVwY2FzZXx1c3N8dmFyfHZhcmZtdHwnK1xuICAgICAgICAndmFyaW5mbXR8dmFybGFiZWx8dmFybGVufHZhcm5hbWV8dmFybnVtfHZhcnJheXwnK1xuICAgICAgICAndmFycmF5eHx2YXJ0eXBlfHZlcmlmeXx2Zm9ybWF0fHZmb3JtYXRkfHZmb3JtYXRkeHwnK1xuICAgICAgICAndmZvcm1hdG58dmZvcm1hdG54fHZmb3JtYXR3fHZmb3JtYXR3eHx2Zm9ybWF0eHwnK1xuICAgICAgICAndmluYXJyYXl8dmluYXJyYXl4fHZpbmZvcm1hdHx2aW5mb3JtYXRkfHZpbmZvcm1hdGR4fCcrXG4gICAgICAgICd2aW5mb3JtYXRufHZpbmZvcm1hdG54fHZpbmZvcm1hdHd8dmluZm9ybWF0d3h8JytcbiAgICAgICAgJ3ZpbmZvcm1hdHh8dmxhYmVsfHZsYWJlbHh8dmxlbmd0aHx2bGVuZ3RoeHx2bmFtZXwnK1xuICAgICAgICAndm5hbWV4fHZ0eXBlfHZ0eXBleHx3ZWVrZGF5fHllYXJ8eXlxfHppcGZpcHN8emlwbmFtZXwnK1xuICAgICAgICAnemlwbmFtZWx8emlwc3RhdGUnO1xuXG4gICAgLy8gQnVpbHQtaW4gbWFjcm8gZnVuY3Rpb25zXG4gICAgdmFyIFNBU19NQUNST19GVU4gPSAnYnF1b3RlfG5yYnF1b3RlfGNtcHJlc3xxY21wcmVzfGNvbXBzdG9yfCcrXG4gICAgICAgICdkYXRhdHlwfGRpc3BsYXl8ZG98ZWxzZXxlbmR8ZXZhbHxnbG9iYWx8Z290b3wnK1xuICAgICAgICAnaWZ8aW5kZXh8aW5wdXR8a2V5ZGVmfGxhYmVsfGxlZnR8bGVuZ3RofGxldHwnK1xuICAgICAgICAnbG9jYWx8bG93Y2FzZXxtYWNyb3xtZW5kfG5yYnF1b3RlfG5ycXVvdGV8JytcbiAgICAgICAgJ25yc3RyfHB1dHxxY21wcmVzfHFsZWZ0fHFsb3djYXNlfHFzY2FufCcrXG4gICAgICAgICdxc3Vic3RyfHFzeXNmdW5jfHF0cmltfHF1b3RlfHF1cGNhc2V8c2NhbnxzdHJ8JytcbiAgICAgICAgJ3N1YnN0cnxzdXBlcnF8c3lzY2FsbHxzeXNldmFsZnxzeXNleGVjfHN5c2Z1bmN8JytcbiAgICAgICAgJ3N5c2dldHxzeXNscHV0fHN5c3Byb2R8c3lzcmN8c3lzcnB1dHx0aGVufHRvfCcrXG4gICAgICAgICd0cmltfHVucXVvdGV8dW50aWx8dXBjYXNlfHZlcmlmeXx3aGlsZXx3aW5kb3cnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWxpYXNlczogWydzYXMnLCAnU0FTJ10sXG4gICAgICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsIC8vIFNBUyBpcyBjYXNlLWluc2Vuc2l0aXZlXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgICAgICdudWxsIG1pc3NpbmcgX2FsbF8gX2F1dG9tYXRpY18gX2NoYXJhY3Rlcl8gX2luZmlsZV8gJytcbiAgICAgICAgICAgICAgICAnX25fIF9uYW1lXyBfbnVsbF8gX251bWVyaWNfIF91c2VyXyBfd2Vib3V0XycsXG4gICAgICAgICAgICBtZXRhOlxuICAgICAgICAgICAgICAgIFNBU19LRVlXT1JEU1xuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIERpc3RpbmN0IGhpZ2hsaWdodCBmb3IgcHJvYyA8cHJvYz4sIGRhdGEsIHJ1biwgcXVpdFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXlxccyoocHJvYyBbXFx3XFxkX10rfGRhdGF8cnVufHF1aXQpW1xcc1xcO10vXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIE1hY3JvIHZhcmlhYmxlc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcJlthLXpBLVpfXFwmXVthLXpBLVowLTlfXSpcXC4/L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGVtcGhhc2lzIGZvciBkYXRhbGluZXN8Y2FyZHNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXBoYXNpcycsXG4gICAgICAgICAgICAgICAgYmVnaW46IC9eXFxzKmRhdGFsaW5lc3xjYXJkcy4qOy8sXG4gICAgICAgICAgICAgICAgZW5kOiAvXlxccyo7XFxzKiQvXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyAgIC8vIEJ1aWx0LWluIG1hY3JvIHZhcmlhYmxlcyB0YWtlIHByZWNlZGVuY2VcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgICAgICAgICAgYmVnaW46ICclKCcgKyBTQVNfTUFDUk9fRlVOICsgJyknXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIFVzZXItZGVmaW5lZCBtYWNybyBmdW5jdGlvbnMgaGlnaGxpZ2h0ZWQgYWZ0ZXJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogLyVbYS16QS1aX11bYS16QS1aXzAtOV0qL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1teJV0oJyArIFNBU19GVU4gKyAnKVtcXChdJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBobGpzLkNPTU1FTlQoJ1xcXFwqJywgJzsnKSxcbiAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBBTk5PVEFUSU9OID0geyBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAW0EtWmEtel0rJyB9O1xuXG4gIC8vIHVzZWQgaW4gc3RyaW5ncyBmb3IgZXNjYXBpbmcvaW50ZXJwb2xhdGlvbi9zdWJzdGl0dXRpb25cbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFxcXCRbQS1aYS16MC05X10rJ30sXG4gICAgICB7YmVnaW46ICdcXFxcJHsnLCBlbmQ6ICd9J31cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1thLXpdK1wiJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1thLXpdK1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbU1VCU1RdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXVxuXG4gIH07XG5cbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFwnXFxcXHdbXFxcXHdcXFxcZF9dKig/IVxcJyknXG4gIH07XG5cbiAgdmFyIFRZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW0EtWmEtejAtOV9dKicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIE5BTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiAvW14wLTlcXG5cXHQgXCInKCksLmB7fVxcW1xcXTo7XVteXFxuXFx0IFwiJygpLC5ge31cXFtcXF06O10rfFteMC05XFxuXFx0IFwiJygpLC5ge31cXFtcXF06Oz1dLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgQ0xBU1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBvYmplY3QgdHJhaXQgdHlwZScsXG4gICAgZW5kOiAvWzo9e1xcW1xcbjtdLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdleHRlbmRzIHdpdGgnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcWy8sXG4gICAgICAgIGVuZDogL1xcXS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1RZUEVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1RZUEVdXG4gICAgICB9LFxuICAgICAgTkFNRVxuICAgIF1cbiAgfTtcblxuICB2YXIgTUVUSE9EID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZGVmJyxcbiAgICBlbmQ6IC9bOj17XFxbKFxcbjtdLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbTkFNRV1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBudWxsJyxcbiAgICAgIGtleXdvcmQ6ICd0eXBlIHlpZWxkIGxhenkgb3ZlcnJpZGUgZGVmIHdpdGggdmFsIHZhciBzZWFsZWQgYWJzdHJhY3QgcHJpdmF0ZSB0cmFpdCBvYmplY3QgaWYgZm9yU29tZSBmb3Igd2hpbGUgdGhyb3cgZmluYWxseSBwcm90ZWN0ZWQgZXh0ZW5kcyBpbXBvcnQgZmluYWwgcmV0dXJuIGVsc2UgYnJlYWsgbmV3IGNhdGNoIHN1cGVyIGNsYXNzIGNhc2UgcGFja2FnZSBkZWZhdWx0IHRyeSB0aGlzIG1hdGNoIGNvbnRpbnVlIHRocm93cyBpbXBsaWNpdCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgU1RSSU5HLFxuICAgICAgU1lNQk9MLFxuICAgICAgVFlQRSxcbiAgICAgIE1FVEhPRCxcbiAgICAgIENMQVNTLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgQU5OT1RBVElPTlxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTQ0hFTUVfSURFTlRfUkUgPSAnW15cXFxcKFxcXFwpXFxcXFtcXFxcXVxcXFx7XFxcXH1cIixcXCdgOyN8XFxcXFxcXFxcXFxcc10rJztcbiAgdmFyIFNDSEVNRV9TSU1QTEVfTlVNQkVSX1JFID0gJyhcXFxcLXxcXFxcKyk/XFxcXGQrKFsuL11cXFxcZCspPyc7XG4gIHZhciBTQ0hFTUVfQ09NUExFWF9OVU1CRVJfUkUgPSBTQ0hFTUVfU0lNUExFX05VTUJFUl9SRSArICdbK1xcXFwtXScgKyBTQ0hFTUVfU0lNUExFX05VTUJFUl9SRSArICdpJztcbiAgdmFyIEJVSUxUSU5TID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgJ2Nhc2UtbGFtYmRhIGNhbGwvY2MgY2xhc3MgZGVmaW5lLWNsYXNzIGV4aXQtaGFuZGxlciBmaWVsZCBpbXBvcnQgJyArXG4gICAgICAnaW5oZXJpdCBpbml0LWZpZWxkIGludGVyZmFjZSBsZXQqLXZhbHVlcyBsZXQtdmFsdWVzIGxldC9lYyBtaXhpbiAnICtcbiAgICAgICdvcHQtbGFtYmRhIG92ZXJyaWRlIHByb3RlY3QgcHJvdmlkZSBwdWJsaWMgcmVuYW1lIHJlcXVpcmUgJyArXG4gICAgICAncmVxdWlyZS1mb3Itc3ludGF4IHN5bnRheCBzeW50YXgtY2FzZSBzeW50YXgtZXJyb3IgdW5pdC9zaWcgdW5sZXNzICcgK1xuICAgICAgJ3doZW4gd2l0aC1zeW50YXggYW5kIGJlZ2luIGNhbGwtd2l0aC1jdXJyZW50LWNvbnRpbnVhdGlvbiAnICtcbiAgICAgICdjYWxsLXdpdGgtaW5wdXQtZmlsZSBjYWxsLXdpdGgtb3V0cHV0LWZpbGUgY2FzZSBjb25kIGRlZmluZSAnICtcbiAgICAgICdkZWZpbmUtc3ludGF4IGRlbGF5IGRvIGR5bmFtaWMtd2luZCBlbHNlIGZvci1lYWNoIGlmIGxhbWJkYSBsZXQgbGV0KiAnICtcbiAgICAgICdsZXQtc3ludGF4IGxldHJlYyBsZXRyZWMtc3ludGF4IG1hcCBvciBzeW50YXgtcnVsZXMgXFwnICogKyAsICxAIC0gLi4uIC8gJyArXG4gICAgICAnOyA8IDw9ID0gPT4gPiA+PSBgIGFicyBhY29zIGFuZ2xlIGFwcGVuZCBhcHBseSBhc2luIGFzc29jIGFzc3EgYXNzdiBhdGFuICcgK1xuICAgICAgJ2Jvb2xlYW4/IGNhYXIgY2FkciBjYWxsLXdpdGgtaW5wdXQtZmlsZSBjYWxsLXdpdGgtb3V0cHV0LWZpbGUgJyArXG4gICAgICAnY2FsbC13aXRoLXZhbHVlcyBjYXIgY2RkZGFyIGNkZGRkciBjZHIgY2VpbGluZyBjaGFyLT5pbnRlZ2VyICcgK1xuICAgICAgJ2NoYXItYWxwaGFiZXRpYz8gY2hhci1jaTw9PyBjaGFyLWNpPD8gY2hhci1jaT0/IGNoYXItY2k+PT8gY2hhci1jaT4/ICcgK1xuICAgICAgJ2NoYXItZG93bmNhc2UgY2hhci1sb3dlci1jYXNlPyBjaGFyLW51bWVyaWM/IGNoYXItcmVhZHk/IGNoYXItdXBjYXNlICcgK1xuICAgICAgJ2NoYXItdXBwZXItY2FzZT8gY2hhci13aGl0ZXNwYWNlPyBjaGFyPD0/IGNoYXI8PyBjaGFyPT8gY2hhcj49PyBjaGFyPj8gJyArXG4gICAgICAnY2hhcj8gY2xvc2UtaW5wdXQtcG9ydCBjbG9zZS1vdXRwdXQtcG9ydCBjb21wbGV4PyBjb25zIGNvcyAnICtcbiAgICAgICdjdXJyZW50LWlucHV0LXBvcnQgY3VycmVudC1vdXRwdXQtcG9ydCBkZW5vbWluYXRvciBkaXNwbGF5IGVvZi1vYmplY3Q/ICcgK1xuICAgICAgJ2VxPyBlcXVhbD8gZXF2PyBldmFsIGV2ZW4/IGV4YWN0LT5pbmV4YWN0IGV4YWN0PyBleHAgZXhwdCBmbG9vciAnICtcbiAgICAgICdmb3JjZSBnY2QgaW1hZy1wYXJ0IGluZXhhY3QtPmV4YWN0IGluZXhhY3Q/IGlucHV0LXBvcnQ/IGludGVnZXItPmNoYXIgJyArXG4gICAgICAnaW50ZWdlcj8gaW50ZXJhY3Rpb24tZW52aXJvbm1lbnQgbGNtIGxlbmd0aCBsaXN0IGxpc3QtPnN0cmluZyAnICtcbiAgICAgICdsaXN0LT52ZWN0b3IgbGlzdC1yZWYgbGlzdC10YWlsIGxpc3Q/IGxvYWQgbG9nIG1hZ25pdHVkZSBtYWtlLXBvbGFyICcgK1xuICAgICAgJ21ha2UtcmVjdGFuZ3VsYXIgbWFrZS1zdHJpbmcgbWFrZS12ZWN0b3IgbWF4IG1lbWJlciBtZW1xIG1lbXYgbWluICcgK1xuICAgICAgJ21vZHVsbyBuZWdhdGl2ZT8gbmV3bGluZSBub3QgbnVsbC1lbnZpcm9ubWVudCBudWxsPyBudW1iZXItPnN0cmluZyAnICtcbiAgICAgICdudW1iZXI/IG51bWVyYXRvciBvZGQ/IG9wZW4taW5wdXQtZmlsZSBvcGVuLW91dHB1dC1maWxlIG91dHB1dC1wb3J0PyAnICtcbiAgICAgICdwYWlyPyBwZWVrLWNoYXIgcG9ydD8gcG9zaXRpdmU/IHByb2NlZHVyZT8gcXVhc2lxdW90ZSBxdW90ZSBxdW90aWVudCAnICtcbiAgICAgICdyYXRpb25hbD8gcmF0aW9uYWxpemUgcmVhZCByZWFkLWNoYXIgcmVhbC1wYXJ0IHJlYWw/IHJlbWFpbmRlciByZXZlcnNlICcgK1xuICAgICAgJ3JvdW5kIHNjaGVtZS1yZXBvcnQtZW52aXJvbm1lbnQgc2V0ISBzZXQtY2FyISBzZXQtY2RyISBzaW4gc3FydCBzdHJpbmcgJyArXG4gICAgICAnc3RyaW5nLT5saXN0IHN0cmluZy0+bnVtYmVyIHN0cmluZy0+c3ltYm9sIHN0cmluZy1hcHBlbmQgc3RyaW5nLWNpPD0/ICcgK1xuICAgICAgJ3N0cmluZy1jaTw/IHN0cmluZy1jaT0/IHN0cmluZy1jaT49PyBzdHJpbmctY2k+PyBzdHJpbmctY29weSAnICtcbiAgICAgICdzdHJpbmctZmlsbCEgc3RyaW5nLWxlbmd0aCBzdHJpbmctcmVmIHN0cmluZy1zZXQhIHN0cmluZzw9PyBzdHJpbmc8PyAnICtcbiAgICAgICdzdHJpbmc9PyBzdHJpbmc+PT8gc3RyaW5nPj8gc3RyaW5nPyBzdWJzdHJpbmcgc3ltYm9sLT5zdHJpbmcgc3ltYm9sPyAnICtcbiAgICAgICd0YW4gdHJhbnNjcmlwdC1vZmYgdHJhbnNjcmlwdC1vbiB0cnVuY2F0ZSB2YWx1ZXMgdmVjdG9yICcgK1xuICAgICAgJ3ZlY3Rvci0+bGlzdCB2ZWN0b3ItZmlsbCEgdmVjdG9yLWxlbmd0aCB2ZWN0b3ItcmVmIHZlY3Rvci1zZXQhICcgK1xuICAgICAgJ3dpdGgtaW5wdXQtZnJvbS1maWxlIHdpdGgtb3V0cHV0LXRvLWZpbGUgd3JpdGUgd3JpdGUtY2hhciB6ZXJvPydcbiAgfTtcblxuICB2YXIgU0hFQkFORyA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ14jIScsXG4gICAgZW5kOiAnJCdcbiAgfTtcblxuICB2YXIgTElURVJBTCA9IHtcbiAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICBiZWdpbjogJygjdHwjZnwjXFxcXFxcXFwnICsgU0NIRU1FX0lERU5UX1JFICsgJ3wjXFxcXFxcXFwuKSdcbiAgfTtcblxuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IFNDSEVNRV9TSU1QTEVfTlVNQkVSX1JFLCByZWxldmFuY2U6IDAgfSxcbiAgICAgIHsgYmVnaW46IFNDSEVNRV9DT01QTEVYX05VTUJFUl9SRSwgcmVsZXZhbmNlOiAwIH0sXG4gICAgICB7IGJlZ2luOiAnI2JbMC0xXSsoL1swLTFdKyk/JyB9LFxuICAgICAgeyBiZWdpbjogJyNvWzAtN10rKC9bMC03XSspPycgfSxcbiAgICAgIHsgYmVnaW46ICcjeFswLTlhLWZdKygvWzAtOWEtZl0rKT8nIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IGhsanMuUVVPVEVfU1RSSU5HX01PREU7XG5cbiAgdmFyIFJFR1VMQVJfRVhQUkVTU0lPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgIGJlZ2luOiAnI1twcl14XCInLFxuICAgIGVuZDogJ1teXFxcXFxcXFxdXCInXG4gIH07XG5cbiAgdmFyIENPTU1FTlRfTU9ERVMgPSBbXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJzsnLFxuICAgICAgJyQnLFxuICAgICAge1xuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVCgnI1xcXFx8JywgJ1xcXFx8IycpXG4gIF07XG5cbiAgdmFyIElERU5UID0ge1xuICAgIGJlZ2luOiBTQ0hFTUVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFFVT1RFRF9JREVOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFwnJyArIFNDSEVNRV9JREVOVF9SRVxuICB9O1xuXG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBRVU9URURfTElTVCA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogLycvIH0sXG4gICAgICB7IGJlZ2luOiAnYCcgfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZicsIExJVEVSQUwsIFNUUklORywgTlVNQkVSLCBJREVOVCwgUVVPVEVEX0lERU5UXVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTkFNRSA9IHtcbiAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICBiZWdpbjogU0NIRU1FX0lERU5UX1JFLFxuICAgIGxleGVtZXM6IFNDSEVNRV9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogQlVJTFRJTlNcbiAgfTtcblxuICB2YXIgTEFNQkRBID0ge1xuICAgIGJlZ2luOiAvbGFtYmRhLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOQU1FLFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbSURFTlRdLFxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTElTVCA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknIH0sXG4gICAgICB7IGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXScgfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtMQU1CREEsIE5BTUUsIEJPRFldXG4gIH07XG5cbiAgQk9EWS5jb250YWlucyA9IFtMSVRFUkFMLCBOVU1CRVIsIFNUUklORywgSURFTlQsIFFVT1RFRF9JREVOVCwgUVVPVEVEX0xJU1QsIExJU1RdLmNvbmNhdChDT01NRU5UX01PREVTKTtcblxuICByZXR1cm4ge1xuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbU0hFQkFORywgTlVNQkVSLCBTVFJJTkcsIFFVT1RFRF9JREVOVCwgUVVPVEVEX0xJU1QsIExJU1RdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQ09NTU9OX0NPTlRBSU5TID0gW1xuICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcXCd8XFxcIicsIGVuZDogJ1xcJ3xcXFwiJyxcbiAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCB7YmVnaW46ICdcXCdcXCcnfV1cbiAgICB9XG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3NjaSddLFxuICAgIGxleGVtZXM6IC8lP1xcdysvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYWJvcnQgYnJlYWsgY2FzZSBjbGVhciBjYXRjaCBjb250aW51ZSBkbyBlbHNlaWYgZWxzZSBlbmRmdW5jdGlvbiBlbmQgZm9yIGZ1bmN0aW9uICcrXG4gICAgICAgICdnbG9iYWwgaWYgcGF1c2UgcmV0dXJuIHJlc3VtZSBzZWxlY3QgdHJ5IHRoZW4gd2hpbGUnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJyVmICVGICV0ICVUICVwaSAlZXBzICVpbmYgJW5hbiAlZSAlaSAleiAlcycsXG4gICAgICBidWlsdF9pbjogLy8gU2NpbGFiIGhhcyBtb3JlIHRoYW4gMjAwMCBmdW5jdGlvbnMuIEp1c3QgbGlzdCB0aGUgbW9zdCBjb21tb25zXG4gICAgICAgJ2FicyBhbmQgYWNvcyBhc2luIGF0YW4gY2VpbCBjZCBjaGRpciBjbGVhcmdsb2JhbCBjb3NoIGNvcyBjdW1wcm9kIGRlZmYgZGlzcCBlcnJvciAnK1xuICAgICAgICdleGVjIGV4ZWNzdHIgZXhpc3RzIGV4cCBleWUgZ2V0dGV4dCBmbG9vciBmcHJpbnRmIGZyZWFkIGZzb2x2ZSBpbWFnIGlzZGVmIGlzZW1wdHkgJytcbiAgICAgICAnaXNpbmZpc25hbiBpc3ZlY3RvciBsYXN0ZXJyb3IgbGVuZ3RoIGxvYWQgbGluc3BhY2UgbGlzdCBsaXN0ZmlsZXMgbG9nMTAgbG9nMiBsb2cgJytcbiAgICAgICAnbWF4IG1pbiBtc3ByaW50ZiBtY2xvc2UgbW9wZW4gb25lcyBvciBwYXRoY29udmVydCBwb2x5IHByaW50ZiBwcm9kIHB3ZCByYW5kIHJlYWwgJytcbiAgICAgICAncm91bmQgc2luaCBzaW4gc2l6ZSBnc29ydCBzcHJpbnRmIHNxcnQgc3RyY2F0IHN0cmNtcHMgdHJpbmcgc3VtIHN5c3RlbSB0YW5oIHRhbiAnK1xuICAgICAgICd0eXBlIHR5cGVuYW1lIHdhcm5pbmcgemVyb3MgbWF0cml4J1xuICAgIH0sXG4gICAgaWxsZWdhbDogJyhcInwjfC9cXFxcKnxcXFxccysvXFxcXHcrKScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbYS16QS1aX11bYS16QS1aXzAtOV0qKFxcJytbXFxcXC5cXCddKnxbXFxcXC5cXCddKyknLCBlbmQ6ICcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXVxcJypbXFxcXC5cXCddKicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IENPTU1PTl9DT05UQUlOU1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnLy8nLCAnJCcpXG4gICAgXS5jb25jYXQoQ09NTU9OX0NPTlRBSU5TKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVotXVthLXpBLVowLTlfLV0qJztcbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogJyhcXFxcJCcgKyBJREVOVF9SRSArICcpXFxcXGInXG4gIH07XG4gIHZhciBIRVhDT0xPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJyNbMC05QS1GYS1mXSsnXG4gIH07XG4gIHZhciBERUZfSU5URVJOQUxTID0ge1xuICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgYmVnaW46ICdbQS1aXFxcXF9cXFxcLlxcXFwtXSsnLCBlbmQ6ICc6JyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbXlxcXFxzXScsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIEhFWENPTE9SLFxuICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIWltcG9ydGFudCdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbPS98XFwnXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJywgYmVnaW46ICdcXFxcI1tBLVphLXowLTlfLV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsIGJlZ2luOiAnXFxcXC5bQS1aYS16MC05Xy1dKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItYXR0cicsIGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgICAgIGlsbGVnYWw6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItdGFnJywgLy8gYmVnaW46IElERU5UX1JFLCBlbmQ6ICdbLHxcXFxcc10nXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoYXxhYmJyfGFjcm9ueW18YWRkcmVzc3xhcmVhfGFydGljbGV8YXNpZGV8YXVkaW98YnxiYXNlfGJpZ3xibG9ja3F1b3RlfGJvZHl8YnJ8YnV0dG9ufGNhbnZhc3xjYXB0aW9ufGNpdGV8Y29kZXxjb2x8Y29sZ3JvdXB8Y29tbWFuZHxkYXRhbGlzdHxkZHxkZWx8ZGV0YWlsc3xkZm58ZGl2fGRsfGR0fGVtfGVtYmVkfGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fChoWzEtNl0pfGhlYWR8aGVhZGVyfGhncm91cHxocnxodG1sfGl8aWZyYW1lfGltZ3xpbnB1dHxpbnN8a2JkfGtleWdlbnxsYWJlbHxsZWdlbmR8bGl8bGlua3xtYXB8bWFya3xtZXRhfG1ldGVyfG5hdnxub2ZyYW1lc3xub3NjcmlwdHxvYmplY3R8b2x8b3B0Z3JvdXB8b3B0aW9ufG91dHB1dHxwfHBhcmFtfHByZXxwcm9ncmVzc3xxfHJwfHJ0fHJ1Ynl8c2FtcHxzY3JpcHR8c2VjdGlvbnxzZWxlY3R8c21hbGx8c3BhbnxzdHJpa2V8c3Ryb25nfHN0eWxlfHN1YnxzdXB8dGFibGV8dGJvZHl8dGR8dGV4dGFyZWF8dGZvb3R8dGh8dGhlYWR8dGltZXx0aXRsZXx0cnx0dHx1bHx2YXJ8dmlkZW8pXFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnOih2aXNpdGVkfHZhbGlkfHJvb3R8cmlnaHR8cmVxdWlyZWR8cmVhZC13cml0ZXxyZWFkLW9ubHl8b3V0LXJhbmdlfG9wdGlvbmFsfG9ubHktb2YtdHlwZXxvbmx5LWNoaWxkfG50aC1vZi10eXBlfG50aC1sYXN0LW9mLXR5cGV8bnRoLWxhc3QtY2hpbGR8bnRoLWNoaWxkfG5vdHxsaW5rfGxlZnR8bGFzdC1vZi10eXBlfGxhc3QtY2hpbGR8bGFuZ3xpbnZhbGlkfGluZGV0ZXJtaW5hdGV8aW4tcmFuZ2V8aG92ZXJ8Zm9jdXN8Zmlyc3Qtb2YtdHlwZXxmaXJzdC1saW5lfGZpcnN0LWxldHRlcnxmaXJzdC1jaGlsZHxmaXJzdHxlbmFibGVkfGVtcHR5fGRpc2FibGVkfGRlZmF1bHR8Y2hlY2tlZHxiZWZvcmV8YWZ0ZXJ8YWN0aXZlKSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnOjooYWZ0ZXJ8YmVmb3JlfGNob2ljZXN8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8cmVwZWF0LWluZGV4fHJlcGVhdC1pdGVtfHNlbGVjdGlvbnx2YWx1ZSknXG4gICAgICB9LFxuICAgICAgVkFSSUFCTEUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoei1pbmRleHx3b3JkLXdyYXB8d29yZC1zcGFjaW5nfHdvcmQtYnJlYWt8d2lkdGh8d2lkb3dzfHdoaXRlLXNwYWNlfHZpc2liaWxpdHl8dmVydGljYWwtYWxpZ258dW5pY29kZS1iaWRpfHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi1kdXJhdGlvbnx0cmFuc2l0aW9uLWRlbGF5fHRyYW5zaXRpb258dHJhbnNmb3JtLXN0eWxlfHRyYW5zZm9ybS1vcmlnaW58dHJhbnNmb3JtfHRvcHx0ZXh0LXVuZGVybGluZS1wb3NpdGlvbnx0ZXh0LXRyYW5zZm9ybXx0ZXh0LXNoYWRvd3x0ZXh0LXJlbmRlcmluZ3x0ZXh0LW92ZXJmbG93fHRleHQtaW5kZW50fHRleHQtZGVjb3JhdGlvbi1zdHlsZXx0ZXh0LWRlY29yYXRpb24tbGluZXx0ZXh0LWRlY29yYXRpb24tY29sb3J8dGV4dC1kZWNvcmF0aW9ufHRleHQtYWxpZ24tbGFzdHx0ZXh0LWFsaWdufHRhYi1zaXplfHRhYmxlLWxheW91dHxyaWdodHxyZXNpemV8cXVvdGVzfHBvc2l0aW9ufHBvaW50ZXItZXZlbnRzfHBlcnNwZWN0aXZlLW9yaWdpbnxwZXJzcGVjdGl2ZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWFmdGVyfHBhZGRpbmctdG9wfHBhZGRpbmctcmlnaHR8cGFkZGluZy1sZWZ0fHBhZGRpbmctYm90dG9tfHBhZGRpbmd8b3ZlcmZsb3cteXxvdmVyZmxvdy14fG92ZXJmbG93LXdyYXB8b3ZlcmZsb3d8b3V0bGluZS13aWR0aHxvdXRsaW5lLXN0eWxlfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtY29sb3J8b3V0bGluZXxvcnBoYW5zfG9yZGVyfG9wYWNpdHl8b2JqZWN0LXBvc2l0aW9ufG9iamVjdC1maXR8bm9ybWFsfG5vbmV8bmF2LXVwfG5hdi1yaWdodHxuYXYtbGVmdHxuYXYtaW5kZXh8bmF2LWRvd258bWluLXdpZHRofG1pbi1oZWlnaHR8bWF4LXdpZHRofG1heC1oZWlnaHR8bWFza3xtYXJrc3xtYXJnaW4tdG9wfG1hcmdpbi1yaWdodHxtYXJnaW4tbGVmdHxtYXJnaW4tYm90dG9tfG1hcmdpbnxsaXN0LXN0eWxlLXR5cGV8bGlzdC1zdHlsZS1wb3NpdGlvbnxsaXN0LXN0eWxlLWltYWdlfGxpc3Qtc3R5bGV8bGluZS1oZWlnaHR8bGV0dGVyLXNwYWNpbmd8bGVmdHxqdXN0aWZ5LWNvbnRlbnR8aW5pdGlhbHxpbmhlcml0fGltZS1tb2RlfGltYWdlLW9yaWVudGF0aW9ufGltYWdlLXJlc29sdXRpb258aW1hZ2UtcmVuZGVyaW5nfGljb258aHlwaGVuc3xoZWlnaHR8Zm9udC13ZWlnaHR8Zm9udC12YXJpYW50LWxpZ2F0dXJlc3xmb250LXZhcmlhbnR8Zm9udC1zdHlsZXxmb250LXN0cmV0Y2h8Zm9udC1zaXplLWFkanVzdHxmb250LXNpemV8Zm9udC1sYW5ndWFnZS1vdmVycmlkZXxmb250LWtlcm5pbmd8Zm9udC1mZWF0dXJlLXNldHRpbmdzfGZvbnQtZmFtaWx5fGZvbnR8ZmxvYXR8ZmxleC13cmFwfGZsZXgtc2hyaW5rfGZsZXgtZ3Jvd3xmbGV4LWZsb3d8ZmxleC1kaXJlY3Rpb258ZmxleC1iYXNpc3xmbGV4fGZpbHRlcnxlbXB0eS1jZWxsc3xkaXNwbGF5fGRpcmVjdGlvbnxjdXJzb3J8Y291bnRlci1yZXNldHxjb3VudGVyLWluY3JlbWVudHxjb250ZW50fGNvbHVtbi13aWR0aHxjb2x1bW4tc3Bhbnxjb2x1bW4tcnVsZS13aWR0aHxjb2x1bW4tcnVsZS1zdHlsZXxjb2x1bW4tcnVsZS1jb2xvcnxjb2x1bW4tcnVsZXxjb2x1bW4tZ2FwfGNvbHVtbi1maWxsfGNvbHVtbi1jb3VudHxjb2x1bW5zfGNvbG9yfGNsaXAtcGF0aHxjbGlwfGNsZWFyfGNhcHRpb24tc2lkZXxicmVhay1pbnNpZGV8YnJlYWstYmVmb3JlfGJyZWFrLWFmdGVyfGJveC1zaXppbmd8Ym94LXNoYWRvd3xib3gtZGVjb3JhdGlvbi1icmVha3xib3R0b218Ym9yZGVyLXdpZHRofGJvcmRlci10b3Atd2lkdGh8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXJpZ2h0LXJhZGl1c3xib3JkZXItdG9wLWxlZnQtcmFkaXVzfGJvcmRlci10b3AtY29sb3J8Ym9yZGVyLXRvcHxib3JkZXItc3R5bGV8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXJpZ2h0LXdpZHRofGJvcmRlci1yaWdodC1zdHlsZXxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0fGJvcmRlci1yYWRpdXN8Ym9yZGVyLWxlZnQtd2lkdGh8Ym9yZGVyLWxlZnQtc3R5bGV8Ym9yZGVyLWxlZnQtY29sb3J8Ym9yZGVyLWxlZnR8Ym9yZGVyLWltYWdlLXdpZHRofGJvcmRlci1pbWFnZS1zb3VyY2V8Ym9yZGVyLWltYWdlLXNsaWNlfGJvcmRlci1pbWFnZS1yZXBlYXR8Ym9yZGVyLWltYWdlLW91dHNldHxib3JkZXItaW1hZ2V8Ym9yZGVyLWNvbG9yfGJvcmRlci1jb2xsYXBzZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1ib3R0b20tc3R5bGV8Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c3xib3JkZXItYm90dG9tLWNvbG9yfGJvcmRlci1ib3R0b218Ym9yZGVyfGJhY2tncm91bmQtc2l6ZXxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kLXBvc2l0aW9ufGJhY2tncm91bmQtb3JpZ2lufGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1jb2xvcnxiYWNrZ3JvdW5kLWNsaXB8YmFja2dyb3VuZC1hdHRhY2htZW50fGJhY2tncm91bmQtYmxlbmQtbW9kZXxiYWNrZ3JvdW5kfGJhY2tmYWNlLXZpc2liaWxpdHl8YXV0b3xhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9ufGFuaW1hdGlvbi1wbGF5LXN0YXRlfGFuaW1hdGlvbi1uYW1lfGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnR8YW5pbWF0aW9uLWZpbGwtbW9kZXxhbmltYXRpb24tZHVyYXRpb258YW5pbWF0aW9uLWRpcmVjdGlvbnxhbmltYXRpb24tZGVsYXl8YW5pbWF0aW9ufGFsaWduLXNlbGZ8YWxpZ24taXRlbXN8YWxpZ24tY29udGVudClcXFxcYicsXG4gICAgICAgIGlsbGVnYWw6ICdbXlxcXFxzXSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGIod2hpdGVzcGFjZXx3YWl0fHctcmVzaXplfHZpc2libGV8dmVydGljYWwtdGV4dHx2ZXJ0aWNhbC1pZGVvZ3JhcGhpY3x1cHBlcmNhc2V8dXBwZXItcm9tYW58dXBwZXItYWxwaGF8dW5kZXJsaW5lfHRyYW5zcGFyZW50fHRvcHx0aGlufHRoaWNrfHRleHR8dGV4dC10b3B8dGV4dC1ib3R0b218dGItcmx8dGFibGUtaGVhZGVyLWdyb3VwfHRhYmxlLWZvb3Rlci1ncm91cHxzdy1yZXNpemV8c3VwZXJ8c3RyaWN0fHN0YXRpY3xzcXVhcmV8c29saWR8c21hbGwtY2Fwc3xzZXBhcmF0ZXxzZS1yZXNpemV8c2Nyb2xsfHMtcmVzaXplfHJ0bHxyb3ctcmVzaXplfHJpZGdlfHJpZ2h0fHJlcGVhdHxyZXBlYXQteXxyZXBlYXQteHxyZWxhdGl2ZXxwcm9ncmVzc3xwb2ludGVyfG92ZXJsaW5lfG91dHNpZGV8b3V0c2V0fG9ibGlxdWV8bm93cmFwfG5vdC1hbGxvd2VkfG5vcm1hbHxub25lfG53LXJlc2l6ZXxuby1yZXBlYXR8bm8tZHJvcHxuZXdzcGFwZXJ8bmUtcmVzaXplfG4tcmVzaXplfG1vdmV8bWlkZGxlfG1lZGl1bXxsdHJ8bHItdGJ8bG93ZXJjYXNlfGxvd2VyLXJvbWFufGxvd2VyLWFscGhhfGxvb3NlfGxpc3QtaXRlbXxsaW5lfGxpbmUtdGhyb3VnaHxsaW5lLWVkZ2V8bGlnaHRlcnxsZWZ0fGtlZXAtYWxsfGp1c3RpZnl8aXRhbGljfGludGVyLXdvcmR8aW50ZXItaWRlb2dyYXBofGluc2lkZXxpbnNldHxpbmxpbmV8aW5saW5lLWJsb2NrfGluaGVyaXR8aW5hY3RpdmV8aWRlb2dyYXBoLXNwYWNlfGlkZW9ncmFwaC1wYXJlbnRoZXNpc3xpZGVvZ3JhcGgtbnVtZXJpY3xpZGVvZ3JhcGgtYWxwaGF8aG9yaXpvbnRhbHxoaWRkZW58aGVscHxoYW5kfGdyb292ZXxmaXhlZHxlbGxpcHNpc3xlLXJlc2l6ZXxkb3VibGV8ZG90dGVkfGRpc3RyaWJ1dGV8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlLWxldHRlcnxkaXN0cmlidXRlLWFsbC1saW5lc3xkaXNjfGRpc2FibGVkfGRlZmF1bHR8ZGVjaW1hbHxkYXNoZWR8Y3Jvc3NoYWlyfGNvbGxhcHNlfGNvbC1yZXNpemV8Y2lyY2xlfGNoYXJ8Y2VudGVyfGNhcGl0YWxpemV8YnJlYWstd29yZHxicmVhay1hbGx8Ym90dG9tfGJvdGh8Ym9sZGVyfGJvbGR8YmxvY2t8YmlkaS1vdmVycmlkZXxiZWxvd3xiYXNlbGluZXxhdXRvfGFsd2F5c3xhbGwtc2Nyb2xsfGFic29sdXRlfHRhYmxlfHRhYmxlLWNlbGwpXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzonLCBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBIRVhDT0xPUixcbiAgICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICchaW1wb3J0YW50J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdAJywgZW5kOiAnW3s7XScsXG4gICAgICAgIGtleXdvcmRzOiAnbWl4aW4gaW5jbHVkZSBleHRlbmQgZm9yIGlmIGVsc2UgZWFjaCB3aGlsZSBjaGFyc2V0IGltcG9ydCBkZWJ1ZyBtZWRpYSBwYWdlIGNvbnRlbnQgZm9udC1mYWNlIG5hbWVzcGFjZSB3YXJuJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBIRVhDT0xPUixcbiAgICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxzW0EtWmEtejAtOV8uLV0rJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjb25zb2xlJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzezAsM31bL1xcXFx3XFxcXGRcXFxcW1xcXFxdKClALV0qWz4lJCNdJyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnJCcsIHN1Ykxhbmd1YWdlOiAnYmFzaCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIHNtYWxpX2luc3RyX2xvd19wcmlvID0gWydhZGQnLCAnYW5kJywgJ2NtcCcsICdjbXBnJywgJ2NtcGwnLCAnY29uc3QnLCAnZGl2JywgJ2RvdWJsZScsICdmbG9hdCcsICdnb3RvJywgJ2lmJywgJ2ludCcsICdsb25nJywgJ21vdmUnLCAnbXVsJywgJ25lZycsICduZXcnLCAnbm9wJywgJ25vdCcsICdvcicsICdyZW0nLCAncmV0dXJuJywgJ3NobCcsICdzaHInLCAnc3B1dCcsICdzdWInLCAndGhyb3cnLCAndXNocicsICd4b3InXTtcbiAgdmFyIHNtYWxpX2luc3RyX2hpZ2hfcHJpbyA9IFsnYWdldCcsICdhcHV0JywgJ2FycmF5JywgJ2NoZWNrJywgJ2V4ZWN1dGUnLCAnZmlsbCcsICdmaWxsZWQnLCAnZ290by8xNicsICdnb3RvLzMyJywgJ2lnZXQnLCAnaW5zdGFuY2UnLCAnaW52b2tlJywgJ2lwdXQnLCAnbW9uaXRvcicsICdwYWNrZWQnLCAnc2dldCcsICdzcGFyc2UnXTtcbiAgdmFyIHNtYWxpX2tleXdvcmRzID0gWyd0cmFuc2llbnQnLCAnY29uc3RydWN0b3InLCAnYWJzdHJhY3QnLCAnZmluYWwnLCAnc3ludGhldGljJywgJ3B1YmxpYycsICdwcml2YXRlJywgJ3Byb3RlY3RlZCcsICdzdGF0aWMnLCAnYnJpZGdlJywgJ3N5c3RlbSddO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc21hbGknXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcjJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJ1xcXFxzKlxcXFwuZW5kXFxcXHNbYS16QS1aMC05XSonfSxcbiAgICAgICAgICB7YmVnaW46ICdeWyBdKlxcXFwuW2EtekEtWl0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICdcXFxcczpbYS16QS1aXzAtOV0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICdcXFxccygnICsgc21hbGlfa2V5d29yZHMuam9pbignfCcpICsgJyknfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIHZhcmlhbnRzIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHMoJytzbWFsaV9pbnN0cl9sb3dfcHJpby5qb2luKCd8JykrJylcXFxccydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHMoJytzbWFsaV9pbnN0cl9sb3dfcHJpby5qb2luKCd8JykrJykoKFxcXFwtfC8pW2EtekEtWjAtOV0rKStcXFxccycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxzKCcrc21hbGlfaW5zdHJfaGlnaF9wcmlvLmpvaW4oJ3wnKSsnKSgoXFxcXC18LylbYS16QS1aMC05XSspKlxcXFxzJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luOiAnTFteXFwoOzpcXG5dKjsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW3ZwXVswLTldKycsXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUl9JREVOVF9SRSA9ICdbYS16XVthLXpBLVowLTlfXSonO1xuICB2YXIgQ0hBUiA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXCQuezF9J1xuICB9O1xuICB2YXIgU1lNQk9MID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICcjJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc3QnXSxcbiAgICBrZXl3b3JkczogJ3NlbGYgc3VwZXIgbmlsIHRydWUgZmFsc2UgdGhpc0NvbnRleHQnLCAvLyBvbmx5IDZcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdcIicsICdcIicpLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYltBLVpdW0EtWmEtejAtOV9dKicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFZBUl9JREVOVF9SRSArICc6JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgU1lNQk9MLFxuICAgICAgQ0hBUixcbiAgICAgIHtcbiAgICAgICAgLy8gVGhpcyBsb29rcyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gbmVlZGVkIHRvIGF2b2lkIGNvbWJpbmF0b3JpYWxcbiAgICAgICAgLy8gZXhwbG9zaW9uIHVuZGVyIFY4LiBJdCBlZmZlY3RpdmVseSBtZWFucyBgfCB2YXIxIHZhcjIgLi4uIHxgIHdpdGhcbiAgICAgICAgLy8gd2hpdGVzcGFjZSBhZGphY2VudCB0byBgfGAgYmVpbmcgb3B0aW9uYWwuXG4gICAgICAgIGJlZ2luOiAnXFxcXHxbIF0qJyArIFZBUl9JREVOVF9SRSArICcoWyBdKycgKyBWQVJfSURFTlRfUkUgKyAnKSpbIF0qXFxcXHwnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvXFx8LyxcbiAgICAgICAgaWxsZWdhbDogL1xcUy8sXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnKFxcXFx8WyBdKik/JyArIFZBUl9JREVOVF9SRX1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwjXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIENIQVIsXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIFNZTUJPTFxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21sJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8qIGFjY29yZGluZyB0byBEZWZpbml0aW9uIG9mIFN0YW5kYXJkIE1MIDk3ICAqL1xuICAgICAgICAnYWJzdHlwZSBhbmQgYW5kYWxzbyBhcyBjYXNlIGRhdGF0eXBlIGRvIGVsc2UgZW5kIGVxdHlwZSAnICtcbiAgICAgICAgJ2V4Y2VwdGlvbiBmbiBmdW4gZnVuY3RvciBoYW5kbGUgaWYgaW4gaW5jbHVkZSBpbmZpeCBpbmZpeHIgJyArXG4gICAgICAgICdsZXQgbG9jYWwgbm9uZml4IG9mIG9wIG9wZW4gb3JlbHNlIHJhaXNlIHJlYyBzaGFyaW5nIHNpZyAnICtcbiAgICAgICAgJ3NpZ25hdHVyZSBzdHJ1Y3Qgc3RydWN0dXJlIHRoZW4gdHlwZSB2YWwgd2l0aCB3aXRodHlwZSB3aGVyZSB3aGlsZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLyogYnVpbHQtaW4gdHlwZXMgYWNjb3JkaW5nIHRvIGJhc2lzIGxpYnJhcnkgKi9cbiAgICAgICAgJ2FycmF5IGJvb2wgY2hhciBleG4gaW50IGxpc3Qgb3B0aW9uIG9yZGVyIHJlYWwgcmVmIHN0cmluZyBzdWJzdHJpbmcgdmVjdG9yIHVuaXQgd29yZCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBOT05FIFNPTUUgTEVTUyBFUVVBTCBHUkVBVEVSIG5pbCdcbiAgICB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXC98Pj4vLFxuICAgIGxleGVtZXM6ICdbYS16X11cXFxcdyohPycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAvXFxbKFxcfFxcfCk/XFxdfFxcKFxcKS8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1xcXFwoXFxcXConLFxuICAgICAgICAnXFxcXCpcXFxcKScsXG4gICAgICAgIHtcbiAgICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHsgLyogdHlwZSB2YXJpYWJsZSAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogJ1xcJ1tBLVphLXpfXSg/IVxcJylbXFxcXHdcXCddKidcbiAgICAgICAgLyogdGhlIGdyYW1tYXIgaXMgYW1iaWd1b3VzIG9uIGhvdyAnYSdiIHNob3VsZCBiZSBpbnRlcnByZXRlZCBidXQgbm90IHRoZSBjb21waWxlciAqL1xuICAgICAgfSxcbiAgICAgIHsgLyogcG9seW1vcnBoaWMgdmFyaWFudCAqL1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdgW0EtWl1bXFxcXHdcXCddKidcbiAgICAgIH0sXG4gICAgICB7IC8qIG1vZHVsZSBvciBjb25zdHJ1Y3RvciAqL1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFwnXSonLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8qIGRvbid0IGNvbG9yIGlkZW50aWZpZXJzLCBidXQgc2FmZWx5IGNhdGNoIGFsbCBpZGVudGlmaWVycyB3aXRoICcqL1xuICAgICAgICBiZWdpbjogJ1thLXpfXVxcXFx3KlxcJ1tcXFxcd1xcJ10qJ1xuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjpcbiAgICAgICAgICAnXFxcXGIoMFt4WF1bYS1mQS1GMC05X10rW0xsbl0/fCcgK1xuICAgICAgICAgICcwW29PXVswLTdfXStbTGxuXT98JyArXG4gICAgICAgICAgJzBbYkJdWzAxX10rW0xsbl0/fCcgK1xuICAgICAgICAgICdbMC05XVswLTlfXSooW0xsbl18KFxcXFwuWzAtOV9dKik/KFtlRV1bLStdP1swLTlfXSspPyk/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9bLT1dPi8gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyBJbiBTUUYsIGEgdmFyaWFibGUgc3RhcnQgd2l0aCBfXG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXGJfK1thLXpBLVpfXVxcdyovXG4gIH07XG5cbiAgLy8gSW4gU1FGLCBhIGZ1bmN0aW9uIHNob3VsZCBmaXQgbXlUYWdfZm5jX215RnVuY3Rpb24gcGF0dGVyblxuICAvLyBodHRwczovL2NvbW11bml0eS5iaXN0dWRpby5jb20vd2lraS9GdW5jdGlvbnNfTGlicmFyeV8oQXJtYV8zKSNBZGRpbmdfYV9GdW5jdGlvblxuICB2YXIgRlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiAvW2EtekEtWl1bYS16QS1aMC05XStfZm5jX1xcdyovXG4gIH07XG5cbiAgLy8gSW4gU1FGIHN0cmluZ3MsIHF1b3RlcyBtYXRjaGluZyB0aGUgc3RhcnQgYXJlIGVzY2FwZWQgYnkgYWRkaW5nIGEgY29uc2VjdXRpdmUuXG4gIC8vIEV4YW1wbGUgb2Ygc2luZ2xlIGVzY2FwZWQgcXVvdGVzOiBcIiBcIlwiIFwiIGFuZCAgJyAnJyAnLlxuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIicsIHJlbGV2YW5jZTogMH1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJywgcmVsZXZhbmNlOiAwfV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgLy8gbGlzdCBvZiBrZXl3b3JkcyBmcm9tOlxuICAvLyBodHRwczovL2NvbW11bml0eS5iaXN0dWRpby5jb20vd2lraS9QcmVQcm9jZXNzb3JfQ29tbWFuZHNcbiAgdmFyIFBSRVBST0NFU1NPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogLyNcXHMqW2Etel0rXFxiLywgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgICdtZXRhLWtleXdvcmQnOlxuICAgICAgICAnZGVmaW5lIHVuZGVmIGlmZGVmIGlmbmRlZiBlbHNlIGVuZGlmIGluY2x1ZGUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXFxcXG4vLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoU1RSSU5HUywge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJ30pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgIGJlZ2luOiAvPFteXFxuPl0qPi8sIGVuZDogLyQvLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3NxZiddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdjYXNlIGNhdGNoIGRlZmF1bHQgZG8gZWxzZSBleGl0IGV4aXRXaXRoIGZvciBmb3JFYWNoIGZyb20gaWYgJyArXG4gICAgICAgICdwcml2YXRlIHN3aXRjaCB0aGVuIHRocm93IHRvIHRyeSB3YWl0VW50aWwgd2hpbGUgd2l0aCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2FicyBhY2NUaW1lIGFjb3MgYWN0aW9uIGFjdGlvbklEcyBhY3Rpb25LZXlzIGFjdGlvbktleXNJbWFnZXMgYWN0aW9uS2V5c05hbWVzICcgK1xuICAgICAgICAnYWN0aW9uS2V5c05hbWVzQXJyYXkgYWN0aW9uTmFtZSBhY3Rpb25QYXJhbXMgYWN0aXZhdGVBZGRvbnMgYWN0aXZhdGVkQWRkb25zIGFjdGl2YXRlS2V5ICcgK1xuICAgICAgICAnYWRkM0RFTkNvbm5lY3Rpb24gYWRkM0RFTkV2ZW50SGFuZGxlciBhZGQzREVOTGF5ZXIgYWRkQWN0aW9uIGFkZEJhY2twYWNrIGFkZEJhY2twYWNrQ2FyZ28gJyArXG4gICAgICAgICdhZGRCYWNrcGFja0NhcmdvR2xvYmFsIGFkZEJhY2twYWNrR2xvYmFsIGFkZENhbVNoYWtlIGFkZEN1cmF0b3JBZGRvbnMgYWRkQ3VyYXRvckNhbWVyYUFyZWEgJyArXG4gICAgICAgICdhZGRDdXJhdG9yRWRpdGFibGVPYmplY3RzIGFkZEN1cmF0b3JFZGl0aW5nQXJlYSBhZGRDdXJhdG9yUG9pbnRzIGFkZEVkaXRvck9iamVjdCBhZGRFdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdhZGRGb3JjZSBhZGRHb2dnbGVzIGFkZEdyb3VwSWNvbiBhZGRIYW5kZ3VuSXRlbSBhZGRIZWFkZ2VhciBhZGRJdGVtIGFkZEl0ZW1DYXJnbyAnICtcbiAgICAgICAgJ2FkZEl0ZW1DYXJnb0dsb2JhbCBhZGRJdGVtUG9vbCBhZGRJdGVtVG9CYWNrcGFjayBhZGRJdGVtVG9Vbmlmb3JtIGFkZEl0ZW1Ub1Zlc3QgYWRkTGl2ZVN0YXRzICcgK1xuICAgICAgICAnYWRkTWFnYXppbmUgYWRkTWFnYXppbmVBbW1vQ2FyZ28gYWRkTWFnYXppbmVDYXJnbyBhZGRNYWdhemluZUNhcmdvR2xvYmFsIGFkZE1hZ2F6aW5lR2xvYmFsICcgK1xuICAgICAgICAnYWRkTWFnYXppbmVQb29sIGFkZE1hZ2F6aW5lcyBhZGRNYWdhemluZVR1cnJldCBhZGRNZW51IGFkZE1lbnVJdGVtIGFkZE1pc3Npb25FdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdhZGRNUEV2ZW50SGFuZGxlciBhZGRNdXNpY0V2ZW50SGFuZGxlciBhZGRPd25lZE1pbmUgYWRkUGxheWVyU2NvcmVzIGFkZFByaW1hcnlXZWFwb25JdGVtICcgK1xuICAgICAgICAnYWRkUHVibGljVmFyaWFibGVFdmVudEhhbmRsZXIgYWRkUmF0aW5nIGFkZFJlc291cmNlcyBhZGRTY29yZSBhZGRTY29yZVNpZGUgYWRkU2Vjb25kYXJ5V2VhcG9uSXRlbSAnICtcbiAgICAgICAgJ2FkZFN3aXRjaGFibGVVbml0IGFkZFRlYW1NZW1iZXIgYWRkVG9SZW1haW5zQ29sbGVjdG9yIGFkZFRvcnF1ZSBhZGRVbmlmb3JtIGFkZFZlaGljbGUgYWRkVmVzdCAnICtcbiAgICAgICAgJ2FkZFdheXBvaW50IGFkZFdlYXBvbiBhZGRXZWFwb25DYXJnbyBhZGRXZWFwb25DYXJnb0dsb2JhbCBhZGRXZWFwb25HbG9iYWwgYWRkV2VhcG9uSXRlbSAnICtcbiAgICAgICAgJ2FkZFdlYXBvblBvb2wgYWRkV2VhcG9uVHVycmV0IGFkbWluIGFnZW50IGFnZW50cyBBR0xUb0FTTCBhaW1lZEF0VGFyZ2V0IGFpbVBvcyBhaXJEZW5zaXR5UlREICcgK1xuICAgICAgICAnYWlycGxhbmVUaHJvdHRsZSBhaXJwb3J0U2lkZSBBSVNGaW5pc2hIZWFsIGFsaXZlIGFsbDNERU5FbnRpdGllcyBhbGxBaXJwb3J0cyBhbGxDb250cm9scyAnICtcbiAgICAgICAgJ2FsbEN1cmF0b3JzIGFsbEN1dExheWVycyBhbGxEZWFkIGFsbERlYWRNZW4gYWxsRGlzcGxheXMgYWxsR3JvdXBzIGFsbE1hcE1hcmtlcnMgYWxsTWluZXMgJyArXG4gICAgICAgICdhbGxNaXNzaW9uT2JqZWN0cyBhbGxvdzNETW9kZSBhbGxvd0NyZXdJbkltbW9iaWxlIGFsbG93Q3VyYXRvckxvZ2ljSWdub3JlQXJlYXMgYWxsb3dEYW1hZ2UgJyArXG4gICAgICAgICdhbGxvd0RhbW1hZ2UgYWxsb3dGaWxlT3BlcmF0aW9ucyBhbGxvd0ZsZWVpbmcgYWxsb3dHZXRJbiBhbGxvd1NwcmludCBhbGxQbGF5ZXJzIGFsbFNpbXBsZU9iamVjdHMgJyArXG4gICAgICAgICdhbGxTaXRlcyBhbGxUdXJyZXRzIGFsbFVuaXRzIGFsbFVuaXRzVUFWIGFsbFZhcmlhYmxlcyBhbW1vIGFtbW9PblB5bG9uIGFuZCBhbmltYXRlIGFuaW1hdGVCYXkgJyArXG4gICAgICAgICdhbmltYXRlRG9vciBhbmltYXRlUHlsb24gYW5pbWF0ZVNvdXJjZSBhbmltYXRpb25OYW1lcyBhbmltYXRpb25QaGFzZSBhbmltYXRpb25Tb3VyY2VQaGFzZSAnICtcbiAgICAgICAgJ2FuaW1hdGlvblN0YXRlIGFwcGVuZCBhcHBseSBhcm1vcnlQb2ludHMgYXJyYXlJbnRlcnNlY3QgYXNpbiBBU0xUb0FHTCBBU0xUb0FUTCBhc3NlcnQgJyArXG4gICAgICAgICdhc3NpZ25Bc0NhcmdvIGFzc2lnbkFzQ2FyZ29JbmRleCBhc3NpZ25Bc0NvbW1hbmRlciBhc3NpZ25Bc0RyaXZlciBhc3NpZ25Bc0d1bm5lciBhc3NpZ25Bc1R1cnJldCAnICtcbiAgICAgICAgJ2Fzc2lnbkN1cmF0b3IgYXNzaWduZWRDYXJnbyBhc3NpZ25lZENvbW1hbmRlciBhc3NpZ25lZERyaXZlciBhc3NpZ25lZEd1bm5lciBhc3NpZ25lZEl0ZW1zICcgK1xuICAgICAgICAnYXNzaWduZWRUYXJnZXQgYXNzaWduZWRUZWFtIGFzc2lnbmVkVmVoaWNsZSBhc3NpZ25lZFZlaGljbGVSb2xlIGFzc2lnbkl0ZW0gYXNzaWduVGVhbSAnICtcbiAgICAgICAgJ2Fzc2lnblRvQWlycG9ydCBhdGFuIGF0YW4yIGF0ZyBBVExUb0FTTCBhdHRhY2hlZE9iamVjdCBhdHRhY2hlZE9iamVjdHMgYXR0YWNoZWRUbyBhdHRhY2hPYmplY3QgJyArXG4gICAgICAgICdhdHRhY2hUbyBhdHRhY2tFbmFibGVkIGJhY2twYWNrIGJhY2twYWNrQ2FyZ28gYmFja3BhY2tDb250YWluZXIgYmFja3BhY2tJdGVtcyBiYWNrcGFja01hZ2F6aW5lcyAnICtcbiAgICAgICAgJ2JhY2twYWNrU3BhY2VGb3IgYmVoYXZpb3VyIGJlbmNobWFyayBiaW5vY3VsYXIgYm91bmRpbmdCb3ggYm91bmRpbmdCb3hSZWFsIGJvdW5kaW5nQ2VudGVyICcgK1xuICAgICAgICAnYnJlYWtPdXQgYnJlYWtUbyBicmllZmluZ05hbWUgYnVpbGRpbmdFeGl0IGJ1aWxkaW5nUG9zIGJ1dHRvbkFjdGlvbiBidXR0b25TZXRBY3Rpb24gY2FkZXRNb2RlICcgK1xuICAgICAgICAnY2FsbCBjYWxsRXh0ZW5zaW9uIGNhbUNvbW1hbmQgY2FtQ29tbWl0IGNhbUNvbW1pdFByZXBhcmVkIGNhbUNvbW1pdHRlZCBjYW1Db25zdHVjdGlvblNldFBhcmFtcyAnICtcbiAgICAgICAgJ2NhbUNyZWF0ZSBjYW1EZXN0cm95IGNhbWVyYUVmZmVjdCBjYW1lcmFFZmZlY3RFbmFibGVIVUQgY2FtZXJhSW50ZXJlc3QgY2FtZXJhT24gY2FtZXJhVmlldyAnICtcbiAgICAgICAgJ2NhbXBhaWduQ29uZmlnRmlsZSBjYW1QcmVsb2FkIGNhbVByZWxvYWRlZCBjYW1QcmVwYXJlQmFuayBjYW1QcmVwYXJlRGlyIGNhbVByZXBhcmVEaXZlICcgK1xuICAgICAgICAnY2FtUHJlcGFyZUZvY3VzIGNhbVByZXBhcmVGb3YgY2FtUHJlcGFyZUZvdlJhbmdlIGNhbVByZXBhcmVQb3MgY2FtUHJlcGFyZVJlbFBvcyBjYW1QcmVwYXJlVGFyZ2V0ICcgK1xuICAgICAgICAnY2FtU2V0QmFuayBjYW1TZXREaXIgY2FtU2V0RGl2ZSBjYW1TZXRGb2N1cyBjYW1TZXRGb3YgY2FtU2V0Rm92UmFuZ2UgY2FtU2V0UG9zIGNhbVNldFJlbFBvcyAnICtcbiAgICAgICAgJ2NhbVNldFRhcmdldCBjYW1UYXJnZXQgY2FtVXNlTlZHIGNhbkFkZCBjYW5BZGRJdGVtVG9CYWNrcGFjayBjYW5BZGRJdGVtVG9Vbmlmb3JtIGNhbkFkZEl0ZW1Ub1Zlc3QgJyArXG4gICAgICAgICdjYW5jZWxTaW1wbGVUYXNrRGVzdGluYXRpb24gY2FuRmlyZSBjYW5Nb3ZlIGNhblNsaW5nTG9hZCBjYW5TdGFuZCBjYW5TdXNwZW5kICcgK1xuICAgICAgICAnY2FuVHJpZ2dlckR5bmFtaWNTaW11bGF0aW9uIGNhblVubG9hZEluQ29tYmF0IGNhblZlaGljbGVDYXJnbyBjYXB0aXZlIGNhcHRpdmVOdW0gY2JDaGVja2VkICcgK1xuICAgICAgICAnY2JTZXRDaGVja2VkIGNlaWwgY2hhbm5lbEVuYWJsZWQgY2hlYXRzRW5hYmxlZCBjaGVja0FJRmVhdHVyZSBjaGVja1Zpc2liaWxpdHkgY2xhc3NOYW1lICcgK1xuICAgICAgICAnY2xlYXJBbGxJdGVtc0Zyb21CYWNrcGFjayBjbGVhckJhY2twYWNrQ2FyZ28gY2xlYXJCYWNrcGFja0NhcmdvR2xvYmFsIGNsZWFyR3JvdXBJY29ucyAnICtcbiAgICAgICAgJ2NsZWFySXRlbUNhcmdvIGNsZWFySXRlbUNhcmdvR2xvYmFsIGNsZWFySXRlbVBvb2wgY2xlYXJNYWdhemluZUNhcmdvIGNsZWFyTWFnYXppbmVDYXJnb0dsb2JhbCAnICtcbiAgICAgICAgJ2NsZWFyTWFnYXppbmVQb29sIGNsZWFyT3ZlcmxheSBjbGVhclJhZGlvIGNsZWFyV2VhcG9uQ2FyZ28gY2xlYXJXZWFwb25DYXJnb0dsb2JhbCBjbGVhcldlYXBvblBvb2wgJyArXG4gICAgICAgICdjbGllbnRPd25lciBjbG9zZURpYWxvZyBjbG9zZURpc3BsYXkgY2xvc2VPdmVybGF5IGNvbGxhcHNlT2JqZWN0VHJlZSBjb2xsZWN0M0RFTkhpc3RvcnkgJyArXG4gICAgICAgICdjb2xsZWN0aXZlUlREIGNvbWJhdE1vZGUgY29tbWFuZEFydGlsbGVyeUZpcmUgY29tbWFuZENoYXQgY29tbWFuZGVyIGNvbW1hbmRGaXJlIGNvbW1hbmRGb2xsb3cgJyArXG4gICAgICAgICdjb21tYW5kRlNNIGNvbW1hbmRHZXRPdXQgY29tbWFuZGluZ01lbnUgY29tbWFuZE1vdmUgY29tbWFuZFJhZGlvIGNvbW1hbmRTdG9wICcgK1xuICAgICAgICAnY29tbWFuZFN1cHByZXNzaXZlRmlyZSBjb21tYW5kVGFyZ2V0IGNvbW1hbmRXYXRjaCBjb21tZW50IGNvbW1pdE92ZXJsYXkgY29tcGlsZSBjb21waWxlRmluYWwgJyArXG4gICAgICAgICdjb21wbGV0ZWRGU00gY29tcG9zZVRleHQgY29uZmlnQ2xhc3NlcyBjb25maWdGaWxlIGNvbmZpZ0hpZXJhcmNoeSBjb25maWdOYW1lIGNvbmZpZ1Byb3BlcnRpZXMgJyArXG4gICAgICAgICdjb25maWdTb3VyY2VBZGRvbkxpc3QgY29uZmlnU291cmNlTW9kIGNvbmZpZ1NvdXJjZU1vZExpc3QgY29uZmlybVNlbnNvclRhcmdldCAnICtcbiAgICAgICAgJ2Nvbm5lY3RUZXJtaW5hbFRvVUFWIGNvbnRyb2xzR3JvdXBDdHJsIGNvcHlGcm9tQ2xpcGJvYXJkIGNvcHlUb0NsaXBib2FyZCBjb3B5V2F5cG9pbnRzIGNvcyBjb3VudCAnICtcbiAgICAgICAgJ2NvdW50RW5lbXkgY291bnRGcmllbmRseSBjb3VudFNpZGUgY291bnRUeXBlIGNvdW50VW5rbm93biBjcmVhdGUzREVOQ29tcG9zaXRpb24gY3JlYXRlM0RFTkVudGl0eSAnICtcbiAgICAgICAgJ2NyZWF0ZUFnZW50IGNyZWF0ZUNlbnRlciBjcmVhdGVEaWFsb2cgY3JlYXRlRGlhcnlMaW5rIGNyZWF0ZURpYXJ5UmVjb3JkIGNyZWF0ZURpYXJ5U3ViamVjdCAnICtcbiAgICAgICAgJ2NyZWF0ZURpc3BsYXkgY3JlYXRlR2VhckRpYWxvZyBjcmVhdGVHcm91cCBjcmVhdGVHdWFyZGVkUG9pbnQgY3JlYXRlTG9jYXRpb24gY3JlYXRlTWFya2VyICcgK1xuICAgICAgICAnY3JlYXRlTWFya2VyTG9jYWwgY3JlYXRlTWVudSBjcmVhdGVNaW5lIGNyZWF0ZU1pc3Npb25EaXNwbGF5IGNyZWF0ZU1QQ2FtcGFpZ25EaXNwbGF5ICcgK1xuICAgICAgICAnY3JlYXRlU2ltcGxlT2JqZWN0IGNyZWF0ZVNpbXBsZVRhc2sgY3JlYXRlU2l0ZSBjcmVhdGVTb3VuZFNvdXJjZSBjcmVhdGVUYXNrIGNyZWF0ZVRlYW0gJyArXG4gICAgICAgICdjcmVhdGVUcmlnZ2VyIGNyZWF0ZVVuaXQgY3JlYXRlVmVoaWNsZSBjcmVhdGVWZWhpY2xlQ3JldyBjcmVhdGVWZWhpY2xlTG9jYWwgY3JldyBjdEFkZEhlYWRlciAnICtcbiAgICAgICAgJ2N0QWRkUm93IGN0Q2xlYXIgY3RDdXJTZWwgY3REYXRhIGN0RmluZEhlYWRlclJvd3MgY3RGaW5kUm93SGVhZGVyIGN0SGVhZGVyQ29udHJvbHMgY3RIZWFkZXJDb3VudCAnICtcbiAgICAgICAgJ2N0UmVtb3ZlSGVhZGVycyBjdFJlbW92ZVJvd3MgY3RybEFjdGl2YXRlIGN0cmxBZGRFdmVudEhhbmRsZXIgY3RybEFuZ2xlIGN0cmxBdXRvU2Nyb2xsRGVsYXkgJyArXG4gICAgICAgICdjdHJsQXV0b1Njcm9sbFJld2luZCBjdHJsQXV0b1Njcm9sbFNwZWVkIGN0cmxDaGVja2VkIGN0cmxDbGFzc05hbWUgY3RybENvbW1pdCBjdHJsQ29tbWl0dGVkICcgK1xuICAgICAgICAnY3RybENyZWF0ZSBjdHJsRGVsZXRlIGN0cmxFbmFibGUgY3RybEVuYWJsZWQgY3RybEZhZGUgY3RybEhUTUxMb2FkZWQgY3RybElEQyBjdHJsSUREICcgK1xuICAgICAgICAnY3RybE1hcEFuaW1BZGQgY3RybE1hcEFuaW1DbGVhciBjdHJsTWFwQW5pbUNvbW1pdCBjdHJsTWFwQW5pbURvbmUgY3RybE1hcEN1cnNvciBjdHJsTWFwTW91c2VPdmVyICcgK1xuICAgICAgICAnY3RybE1hcFNjYWxlIGN0cmxNYXBTY3JlZW5Ub1dvcmxkIGN0cmxNYXBXb3JsZFRvU2NyZWVuIGN0cmxNb2RlbCBjdHJsTW9kZWxEaXJBbmRVcCBjdHJsTW9kZWxTY2FsZSAnICtcbiAgICAgICAgJ2N0cmxQYXJlbnQgY3RybFBhcmVudENvbnRyb2xzR3JvdXAgY3RybFBvc2l0aW9uIGN0cmxSZW1vdmVBbGxFdmVudEhhbmRsZXJzIGN0cmxSZW1vdmVFdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdjdHJsU2NhbGUgY3RybFNldEFjdGl2ZUNvbG9yIGN0cmxTZXRBbmdsZSBjdHJsU2V0QXV0b1Njcm9sbERlbGF5IGN0cmxTZXRBdXRvU2Nyb2xsUmV3aW5kICcgK1xuICAgICAgICAnY3RybFNldEF1dG9TY3JvbGxTcGVlZCBjdHJsU2V0QmFja2dyb3VuZENvbG9yIGN0cmxTZXRDaGVja2VkIGN0cmxTZXRFdmVudEhhbmRsZXIgY3RybFNldEZhZGUgJyArXG4gICAgICAgICdjdHJsU2V0Rm9jdXMgY3RybFNldEZvbnQgY3RybFNldEZvbnRIMSBjdHJsU2V0Rm9udEgxQiBjdHJsU2V0Rm9udEgyIGN0cmxTZXRGb250SDJCIGN0cmxTZXRGb250SDMgJyArXG4gICAgICAgICdjdHJsU2V0Rm9udEgzQiBjdHJsU2V0Rm9udEg0IGN0cmxTZXRGb250SDRCIGN0cmxTZXRGb250SDUgY3RybFNldEZvbnRINUIgY3RybFNldEZvbnRINiAnICtcbiAgICAgICAgJ2N0cmxTZXRGb250SDZCIGN0cmxTZXRGb250SGVpZ2h0IGN0cmxTZXRGb250SGVpZ2h0SDEgY3RybFNldEZvbnRIZWlnaHRIMiBjdHJsU2V0Rm9udEhlaWdodEgzICcgK1xuICAgICAgICAnY3RybFNldEZvbnRIZWlnaHRINCBjdHJsU2V0Rm9udEhlaWdodEg1IGN0cmxTZXRGb250SGVpZ2h0SDYgY3RybFNldEZvbnRIZWlnaHRTZWNvbmRhcnkgJyArXG4gICAgICAgICdjdHJsU2V0Rm9udFAgY3RybFNldEZvbnRQQiBjdHJsU2V0Rm9udFNlY29uZGFyeSBjdHJsU2V0Rm9yZWdyb3VuZENvbG9yIGN0cmxTZXRNb2RlbCAnICtcbiAgICAgICAgJ2N0cmxTZXRNb2RlbERpckFuZFVwIGN0cmxTZXRNb2RlbFNjYWxlIGN0cmxTZXRQaXhlbFByZWNpc2lvbiBjdHJsU2V0UG9zaXRpb24gY3RybFNldFNjYWxlICcgK1xuICAgICAgICAnY3RybFNldFN0cnVjdHVyZWRUZXh0IGN0cmxTZXRUZXh0IGN0cmxTZXRUZXh0Q29sb3IgY3RybFNldFRvb2x0aXAgY3RybFNldFRvb2x0aXBDb2xvckJveCAnICtcbiAgICAgICAgJ2N0cmxTZXRUb29sdGlwQ29sb3JTaGFkZSBjdHJsU2V0VG9vbHRpcENvbG9yVGV4dCBjdHJsU2hvdyBjdHJsU2hvd24gY3RybFRleHQgY3RybFRleHRIZWlnaHQgJyArXG4gICAgICAgICdjdHJsVGV4dFdpZHRoIGN0cmxUeXBlIGN0cmxWaXNpYmxlIGN0Um93Q29udHJvbHMgY3RSb3dDb3VudCBjdFNldEN1clNlbCBjdFNldERhdGEgJyArXG4gICAgICAgICdjdFNldEhlYWRlclRlbXBsYXRlIGN0U2V0Um93VGVtcGxhdGUgY3RTZXRWYWx1ZSBjdFZhbHVlIGN1cmF0b3JBZGRvbnMgY3VyYXRvckNhbWVyYSAnICtcbiAgICAgICAgJ2N1cmF0b3JDYW1lcmFBcmVhIGN1cmF0b3JDYW1lcmFBcmVhQ2VpbGluZyBjdXJhdG9yQ29lZiBjdXJhdG9yRWRpdGFibGVPYmplY3RzIGN1cmF0b3JFZGl0aW5nQXJlYSAnICtcbiAgICAgICAgJ2N1cmF0b3JFZGl0aW5nQXJlYVR5cGUgY3VyYXRvck1vdXNlT3ZlciBjdXJhdG9yUG9pbnRzIGN1cmF0b3JSZWdpc3RlcmVkT2JqZWN0cyBjdXJhdG9yU2VsZWN0ZWQgJyArXG4gICAgICAgICdjdXJhdG9yV2F5cG9pbnRDb3N0IGN1cnJlbnQzREVOT3BlcmF0aW9uIGN1cnJlbnRDaGFubmVsIGN1cnJlbnRDb21tYW5kIGN1cnJlbnRNYWdhemluZSAnICtcbiAgICAgICAgJ2N1cnJlbnRNYWdhemluZURldGFpbCBjdXJyZW50TWFnYXppbmVEZXRhaWxUdXJyZXQgY3VycmVudE1hZ2F6aW5lVHVycmV0IGN1cnJlbnRNdXp6bGUgJyArXG4gICAgICAgICdjdXJyZW50TmFtZXNwYWNlIGN1cnJlbnRUYXNrIGN1cnJlbnRUYXNrcyBjdXJyZW50VGhyb3dhYmxlIGN1cnJlbnRWaXNpb25Nb2RlIGN1cnJlbnRXYXlwb2ludCAnICtcbiAgICAgICAgJ2N1cnJlbnRXZWFwb24gY3VycmVudFdlYXBvbk1vZGUgY3VycmVudFdlYXBvblR1cnJldCBjdXJyZW50WmVyb2luZyBjdXJzb3JPYmplY3QgY3Vyc29yVGFyZ2V0ICcgK1xuICAgICAgICAnY3VzdG9tQ2hhdCBjdXN0b21SYWRpbyBjdXRGYWRlT3V0IGN1dE9iaiBjdXRSc2MgY3V0VGV4dCBkYW1hZ2UgZGF0ZSBkYXRlVG9OdW1iZXIgZGF5dGltZSAnICtcbiAgICAgICAgJ2RlQWN0aXZhdGVLZXkgZGVicmllZmluZ1RleHQgZGVidWdGU00gZGVidWdMb2cgZGVnIGRlbGV0ZTNERU5FbnRpdGllcyBkZWxldGVBdCBkZWxldGVDZW50ZXIgJyArXG4gICAgICAgICdkZWxldGVDb2xsZWN0aW9uIGRlbGV0ZUVkaXRvck9iamVjdCBkZWxldGVHcm91cCBkZWxldGVHcm91cFdoZW5FbXB0eSBkZWxldGVJZGVudGl0eSAnICtcbiAgICAgICAgJ2RlbGV0ZUxvY2F0aW9uIGRlbGV0ZU1hcmtlciBkZWxldGVNYXJrZXJMb2NhbCBkZWxldGVSYW5nZSBkZWxldGVSZXNvdXJjZXMgZGVsZXRlU2l0ZSBkZWxldGVTdGF0dXMgJyArXG4gICAgICAgICdkZWxldGVUZWFtIGRlbGV0ZVZlaGljbGUgZGVsZXRlVmVoaWNsZUNyZXcgZGVsZXRlV2F5cG9pbnQgZGV0YWNoIGRldGVjdGVkTWluZXMgJyArXG4gICAgICAgICdkaWFnX2FjdGl2ZU1pc3Npb25GU01zIGRpYWdfYWN0aXZlU2NyaXB0cyBkaWFnX2FjdGl2ZVNRRlNjcmlwdHMgZGlhZ19hY3RpdmVTUVNTY3JpcHRzICcgK1xuICAgICAgICAnZGlhZ19jYXB0dXJlRnJhbWUgZGlhZ19jYXB0dXJlRnJhbWVUb0ZpbGUgZGlhZ19jYXB0dXJlU2xvd0ZyYW1lIGRpYWdfY29kZVBlcmZvcm1hbmNlICcgK1xuICAgICAgICAnZGlhZ19kcmF3TW9kZSBkaWFnX2VuYWJsZSBkaWFnX2VuYWJsZWQgZGlhZ19mcHMgZGlhZ19mcHNNaW4gZGlhZ19mcmFtZU5vIGRpYWdfbGlnaHROZXdMb2FkICcgK1xuICAgICAgICAnZGlhZ19saXN0IGRpYWdfbG9nIGRpYWdfbG9nU2xvd0ZyYW1lIGRpYWdfbWVyZ2VDb25maWdGaWxlIGRpYWdfcmVjb3JkVHVycmV0TGltaXRzICcgK1xuICAgICAgICAnZGlhZ19zZXRMaWdodE5ldyBkaWFnX3RpY2tUaW1lIGRpYWdfdG9nZ2xlIGRpYWxvZyBkaWFyeVN1YmplY3RFeGlzdHMgZGlkSklQIGRpZEpJUE93bmVyICcgK1xuICAgICAgICAnZGlmZmljdWx0eSBkaWZmaWN1bHR5RW5hYmxlZCBkaWZmaWN1bHR5RW5hYmxlZFJURCBkaWZmaWN1bHR5T3B0aW9uIGRpcmVjdGlvbiBkaXJlY3RTYXkgZGlzYWJsZUFJICcgK1xuICAgICAgICAnZGlzYWJsZUNvbGxpc2lvbldpdGggZGlzYWJsZUNvbnZlcnNhdGlvbiBkaXNhYmxlRGVicmllZmluZ1N0YXRzIGRpc2FibGVNYXBJbmRpY2F0b3JzICcgK1xuICAgICAgICAnZGlzYWJsZU5WR0VxdWlwbWVudCBkaXNhYmxlUmVtb3RlU2Vuc29ycyBkaXNhYmxlU2VyaWFsaXphdGlvbiBkaXNhYmxlVElFcXVpcG1lbnQgJyArXG4gICAgICAgICdkaXNhYmxlVUFWQ29ubmVjdGFiaWxpdHkgZGlzYWJsZVVzZXJJbnB1dCBkaXNwbGF5QWRkRXZlbnRIYW5kbGVyIGRpc3BsYXlDdHJsIGRpc3BsYXlQYXJlbnQgJyArXG4gICAgICAgICdkaXNwbGF5UmVtb3ZlQWxsRXZlbnRIYW5kbGVycyBkaXNwbGF5UmVtb3ZlRXZlbnRIYW5kbGVyIGRpc3BsYXlTZXRFdmVudEhhbmRsZXIgZGlzc29sdmVUZWFtICcgK1xuICAgICAgICAnZGlzdGFuY2UgZGlzdGFuY2UyRCBkaXN0YW5jZVNxciBkaXN0cmlidXRpb25SZWdpb24gZG8zREVOQWN0aW9uIGRvQXJ0aWxsZXJ5RmlyZSBkb0ZpcmUgZG9Gb2xsb3cgJyArXG4gICAgICAgICdkb0ZTTSBkb0dldE91dCBkb01vdmUgZG9vclBoYXNlIGRvU3RvcCBkb1N1cHByZXNzaXZlRmlyZSBkb1RhcmdldCBkb1dhdGNoIGRyYXdBcnJvdyBkcmF3RWxsaXBzZSAnICtcbiAgICAgICAgJ2RyYXdJY29uIGRyYXdJY29uM0QgZHJhd0xpbmUgZHJhd0xpbmUzRCBkcmF3TGluayBkcmF3TG9jYXRpb24gZHJhd1BvbHlnb24gZHJhd1JlY3RhbmdsZSAnICtcbiAgICAgICAgJ2RyYXdUcmlhbmdsZSBkcml2ZXIgZHJvcCBkeW5hbWljU2ltdWxhdGlvbkRpc3RhbmNlIGR5bmFtaWNTaW11bGF0aW9uRGlzdGFuY2VDb2VmICcgK1xuICAgICAgICAnZHluYW1pY1NpbXVsYXRpb25FbmFibGVkIGR5bmFtaWNTaW11bGF0aW9uU3lzdGVtRW5hYmxlZCBlY2hvIGVkaXQzREVOTWlzc2lvbkF0dHJpYnV0ZXMgZWRpdE9iamVjdCAnICtcbiAgICAgICAgJ2VkaXRvclNldEV2ZW50SGFuZGxlciBlZmZlY3RpdmVDb21tYW5kZXIgZW1wdHlQb3NpdGlvbnMgZW5hYmxlQUkgZW5hYmxlQUlGZWF0dXJlICcgK1xuICAgICAgICAnZW5hYmxlQWltUHJlY2lzaW9uIGVuYWJsZUF0dGFjayBlbmFibGVBdWRpb0ZlYXR1cmUgZW5hYmxlQXV0b1N0YXJ0VXBSVEQgZW5hYmxlQXV0b1RyaW1SVEQgJyArXG4gICAgICAgICdlbmFibGVDYW1TaGFrZSBlbmFibGVDYXVzdGljcyBlbmFibGVDaGFubmVsIGVuYWJsZUNvbGxpc2lvbldpdGggZW5hYmxlQ29waWxvdCAnICtcbiAgICAgICAgJ2VuYWJsZURlYnJpZWZpbmdTdGF0cyBlbmFibGVEaWFnTGVnZW5kIGVuYWJsZUR5bmFtaWNTaW11bGF0aW9uIGVuYWJsZUR5bmFtaWNTaW11bGF0aW9uU3lzdGVtICcgK1xuICAgICAgICAnZW5hYmxlRW5kRGlhbG9nIGVuYWJsZUVuZ2luZUFydGlsbGVyeSBlbmFibGVFbnZpcm9ubWVudCBlbmFibGVGYXRpZ3VlIGVuYWJsZUd1bkxpZ2h0cyAnICtcbiAgICAgICAgJ2VuYWJsZUluZm9QYW5lbENvbXBvbmVudCBlbmFibGVJUkxhc2VycyBlbmFibGVNaW1pY3MgZW5hYmxlUGVyc29uVHVycmV0IGVuYWJsZVJhZGlvIGVuYWJsZVJlbG9hZCAnICtcbiAgICAgICAgJ2VuYWJsZVJvcGVBdHRhY2ggZW5hYmxlU2F0Tm9ybWFsT25EZXRhaWwgZW5hYmxlU2F2aW5nIGVuYWJsZVNlbnRlbmNlcyBlbmFibGVTaW11bGF0aW9uICcgK1xuICAgICAgICAnZW5hYmxlU2ltdWxhdGlvbkdsb2JhbCBlbmFibGVTdGFtaW5hIGVuYWJsZVRlYW1Td2l0Y2ggZW5hYmxlVHJhZmZpYyBlbmFibGVVQVZDb25uZWN0YWJpbGl0eSAnICtcbiAgICAgICAgJ2VuYWJsZVVBVldheXBvaW50cyBlbmFibGVWZWhpY2xlQ2FyZ28gZW5hYmxlVmVoaWNsZVNlbnNvciBlbmFibGVXZWFwb25EaXNhc3NlbWJseSAnICtcbiAgICAgICAgJ2VuZExvYWRpbmdTY3JlZW4gZW5kTWlzc2lvbiBlbmdpbmVPbiBlbmdpbmVzSXNPblJURCBlbmdpbmVzUnBtUlREIGVuZ2luZXNUb3JxdWVSVEQgZW50aXRpZXMgJyArXG4gICAgICAgICdlbnZpcm9ubWVudEVuYWJsZWQgZXN0aW1hdGVkRW5kU2VydmVyVGltZSBlc3RpbWF0ZWRUaW1lTGVmdCBldmFsT2JqZWN0QXJndW1lbnQgZXZlcnlCYWNrcGFjayAnICtcbiAgICAgICAgJ2V2ZXJ5Q29udGFpbmVyIGV4ZWMgZXhlY0VkaXRvclNjcmlwdCBleGVjRlNNIGV4ZWNWTSBleHAgZXhwZWN0ZWREZXN0aW5hdGlvbiBleHBvcnRKSVBNZXNzYWdlcyAnICtcbiAgICAgICAgJ2V5ZURpcmVjdGlvbiBleWVQb3MgZmFjZSBmYWN0aW9uIGZhZGVNdXNpYyBmYWRlUmFkaW8gZmFkZVNvdW5kIGZhZGVTcGVlY2ggZmFpbE1pc3Npb24gJyArXG4gICAgICAgICdmaWxsV2VhcG9uc0Zyb21Qb29sIGZpbmQgZmluZENvdmVyIGZpbmREaXNwbGF5IGZpbmRFZGl0b3JPYmplY3QgZmluZEVtcHR5UG9zaXRpb24gJyArXG4gICAgICAgICdmaW5kRW1wdHlQb3NpdGlvblJlYWR5IGZpbmRJZiBmaW5kTmVhcmVzdEVuZW15IGZpbmlzaE1pc3Npb25Jbml0IGZpbml0ZSBmaXJlIGZpcmVBdFRhcmdldCAnICtcbiAgICAgICAgJ2ZpcnN0QmFja3BhY2sgZmxhZyBmbGFnQW5pbWF0aW9uUGhhc2UgZmxhZ093bmVyIGZsYWdTaWRlIGZsYWdUZXh0dXJlIGZsZWVpbmcgZmxvb3IgZmx5SW5IZWlnaHQgJyArXG4gICAgICAgICdmbHlJbkhlaWdodEFTTCBmb2cgZm9nRm9yZWNhc3QgZm9nUGFyYW1zIGZvcmNlQWRkVW5pZm9ybSBmb3JjZWRNYXAgZm9yY2VFbmQgZm9yY2VGbGFnVGV4dHVyZSAnICtcbiAgICAgICAgJ2ZvcmNlRm9sbG93Um9hZCBmb3JjZU1hcCBmb3JjZVJlc3Bhd24gZm9yY2VTcGVlZCBmb3JjZVdhbGsgZm9yY2VXZWFwb25GaXJlIGZvcmNlV2VhdGhlckNoYW5nZSAnICtcbiAgICAgICAgJ2ZvckVhY2hNZW1iZXIgZm9yRWFjaE1lbWJlckFnZW50IGZvckVhY2hNZW1iZXJUZWFtIGZvcmdldFRhcmdldCBmb3JtYXQgZm9ybWF0aW9uICcgK1xuICAgICAgICAnZm9ybWF0aW9uRGlyZWN0aW9uIGZvcm1hdGlvbkxlYWRlciBmb3JtYXRpb25NZW1iZXJzIGZvcm1hdGlvblBvc2l0aW9uIGZvcm1hdGlvblRhc2sgZm9ybWF0VGV4dCAnICtcbiAgICAgICAgJ2Zvcm1MZWFkZXIgZnJlZUxvb2sgZnJvbUVkaXRvciBmdWVsIGZ1bGxDcmV3IGdlYXJJRENBbW1vQ291bnQgZ2VhclNsb3RBbW1vQ291bnQgZ2VhclNsb3REYXRhICcgK1xuICAgICAgICAnZ2V0M0RFTkFjdGlvblN0YXRlIGdldDNERU5BdHRyaWJ1dGUgZ2V0M0RFTkNhbWVyYSBnZXQzREVOQ29ubmVjdGlvbnMgZ2V0M0RFTkVudGl0eSAnICtcbiAgICAgICAgJ2dldDNERU5FbnRpdHlJRCBnZXQzREVOR3JpZCBnZXQzREVOSWNvbnNWaXNpYmxlIGdldDNERU5MYXllckVudGl0aWVzIGdldDNERU5MaW5lc1Zpc2libGUgJyArXG4gICAgICAgICdnZXQzREVOTWlzc2lvbkF0dHJpYnV0ZSBnZXQzREVOTW91c2VPdmVyIGdldDNERU5TZWxlY3RlZCBnZXRBaW1pbmdDb2VmIGdldEFsbEVudlNvdW5kQ29udHJvbGxlcnMgJyArXG4gICAgICAgICdnZXRBbGxIaXRQb2ludHNEYW1hZ2UgZ2V0QWxsT3duZWRNaW5lcyBnZXRBbGxTb3VuZENvbnRyb2xsZXJzIGdldEFtbW9DYXJnbyBnZXRBbmltQWltUHJlY2lzaW9uICcgK1xuICAgICAgICAnZ2V0QW5pbVNwZWVkQ29lZiBnZXRBcnJheSBnZXRBcnRpbGxlcnlBbW1vIGdldEFydGlsbGVyeUNvbXB1dGVyU2V0dGluZ3MgZ2V0QXJ0aWxsZXJ5RVRBICcgK1xuICAgICAgICAnZ2V0QXNzaWduZWRDdXJhdG9yTG9naWMgZ2V0QXNzaWduZWRDdXJhdG9yVW5pdCBnZXRCYWNrcGFja0NhcmdvIGdldEJsZWVkaW5nUmVtYWluaW5nICcgK1xuICAgICAgICAnZ2V0QnVybmluZ1ZhbHVlIGdldENhbWVyYVZpZXdEaXJlY3Rpb24gZ2V0Q2FyZ29JbmRleCBnZXRDZW50ZXJPZk1hc3MgZ2V0Q2xpZW50U3RhdGUgJyArXG4gICAgICAgICdnZXRDbGllbnRTdGF0ZU51bWJlciBnZXRDb21wYXRpYmxlUHlsb25NYWdhemluZXMgZ2V0Q29ubmVjdGVkVUFWIGdldENvbnRhaW5lck1heExvYWQgJyArXG4gICAgICAgICdnZXRDdXJzb3JPYmplY3RQYXJhbXMgZ2V0Q3VzdG9tQWltQ29lZiBnZXREYW1tYWdlIGdldERlc2NyaXB0aW9uIGdldERpciBnZXREaXJWaXN1YWwgJyArXG4gICAgICAgICdnZXRETENBc3NldHNVc2FnZSBnZXRETENBc3NldHNVc2FnZUJ5TmFtZSBnZXRETENzIGdldEVkaXRvckNhbWVyYSBnZXRFZGl0b3JNb2RlICcgK1xuICAgICAgICAnZ2V0RWRpdG9yT2JqZWN0U2NvcGUgZ2V0RWxldmF0aW9uT2Zmc2V0IGdldEVudlNvdW5kQ29udHJvbGxlciBnZXRGYXRpZ3VlIGdldEZvcmNlZEZsYWdUZXh0dXJlICcgK1xuICAgICAgICAnZ2V0RnJpZW5kIGdldEZTTVZhcmlhYmxlIGdldEZ1ZWxDYXJnbyBnZXRHcm91cEljb24gZ2V0R3JvdXBJY29uUGFyYW1zIGdldEdyb3VwSWNvbnMgZ2V0SGlkZUZyb20gJyArXG4gICAgICAgICdnZXRIaXQgZ2V0SGl0SW5kZXggZ2V0SGl0UG9pbnREYW1hZ2UgZ2V0SXRlbUNhcmdvIGdldE1hZ2F6aW5lQ2FyZ28gZ2V0TWFya2VyQ29sb3IgZ2V0TWFya2VyUG9zICcgK1xuICAgICAgICAnZ2V0TWFya2VyU2l6ZSBnZXRNYXJrZXJUeXBlIGdldE1hc3MgZ2V0TWlzc2lvbkNvbmZpZyBnZXRNaXNzaW9uQ29uZmlnVmFsdWUgZ2V0TWlzc2lvbkRMQ3MgJyArXG4gICAgICAgICdnZXRNaXNzaW9uTGF5ZXJFbnRpdGllcyBnZXRNb2RlbEluZm8gZ2V0TW91c2VQb3NpdGlvbiBnZXRNdXNpY1BsYXllZFRpbWUgZ2V0TnVtYmVyICcgK1xuICAgICAgICAnZ2V0T2JqZWN0QXJndW1lbnQgZ2V0T2JqZWN0Q2hpbGRyZW4gZ2V0T2JqZWN0RExDIGdldE9iamVjdE1hdGVyaWFscyBnZXRPYmplY3RQcm94eSAnICtcbiAgICAgICAgJ2dldE9iamVjdFRleHR1cmVzIGdldE9iamVjdFR5cGUgZ2V0T2JqZWN0Vmlld0Rpc3RhbmNlIGdldE94eWdlblJlbWFpbmluZyBnZXRQZXJzb25Vc2VkRExDcyAnICtcbiAgICAgICAgJ2dldFBpbG90Q2FtZXJhRGlyZWN0aW9uIGdldFBpbG90Q2FtZXJhUG9zaXRpb24gZ2V0UGlsb3RDYW1lcmFSb3RhdGlvbiBnZXRQaWxvdENhbWVyYVRhcmdldCAnICtcbiAgICAgICAgJ2dldFBsYXRlTnVtYmVyIGdldFBsYXllckNoYW5uZWwgZ2V0UGxheWVyU2NvcmVzIGdldFBsYXllclVJRCBnZXRQb3MgZ2V0UG9zQVNMIGdldFBvc0FTTFZpc3VhbCAnICtcbiAgICAgICAgJ2dldFBvc0FTTFcgZ2V0UG9zQVRMIGdldFBvc0FUTFZpc3VhbCBnZXRQb3NWaXN1YWwgZ2V0UG9zV29ybGQgZ2V0UHlsb25NYWdhemluZXMgZ2V0UmVsRGlyICcgK1xuICAgICAgICAnZ2V0UmVsUG9zIGdldFJlbW90ZVNlbnNvcnNEaXNhYmxlZCBnZXRSZXBhaXJDYXJnbyBnZXRSZXNvbHV0aW9uIGdldFNoYWRvd0Rpc3RhbmNlIGdldFNob3RQYXJlbnRzICcgK1xuICAgICAgICAnZ2V0U2xpbmdMb2FkIGdldFNvdW5kQ29udHJvbGxlciBnZXRTb3VuZENvbnRyb2xsZXJSZXN1bHQgZ2V0U3BlZWQgZ2V0U3RhbWluYSBnZXRTdGF0VmFsdWUgJyArXG4gICAgICAgICdnZXRTdXBwcmVzc2lvbiBnZXRUZXJyYWluR3JpZCBnZXRUZXJyYWluSGVpZ2h0QVNMIGdldFRleHQgZ2V0VG90YWxETENVc2FnZVRpbWUgZ2V0VW5pdExvYWRvdXQgJyArXG4gICAgICAgICdnZXRVbml0VHJhaXQgZ2V0VXNlck1GRFRleHQgZ2V0VXNlck1GRHZhbHVlIGdldFZhcmlhYmxlIGdldFZlaGljbGVDYXJnbyBnZXRXZWFwb25DYXJnbyAnICtcbiAgICAgICAgJ2dldFdlYXBvblN3YXkgZ2V0V2luZ3NPcmllbnRhdGlvblJURCBnZXRXaW5nc1Bvc2l0aW9uUlREIGdldFdQUG9zIGdsYW5jZUF0IGdsb2JhbENoYXQgZ2xvYmFsUmFkaW8gJyArXG4gICAgICAgICdnb2dnbGVzIGdvdG8gZ3JvdXAgZ3JvdXBDaGF0IGdyb3VwRnJvbU5ldElkIGdyb3VwSWNvblNlbGVjdGFibGUgZ3JvdXBJY29uc1Zpc2libGUgZ3JvdXBJZCAnICtcbiAgICAgICAgJ2dyb3VwT3duZXIgZ3JvdXBSYWRpbyBncm91cFNlbGVjdGVkVW5pdHMgZ3JvdXBTZWxlY3RVbml0IGd1bm5lciBndXN0cyBoYWx0IGhhbmRndW5JdGVtcyAnICtcbiAgICAgICAgJ2hhbmRndW5NYWdhemluZSBoYW5kZ3VuV2VhcG9uIGhhbmRzSGl0IGhhc0ludGVyZmFjZSBoYXNQaWxvdENhbWVyYSBoYXNXZWFwb24gaGNBbGxHcm91cHMgJyArXG4gICAgICAgICdoY0dyb3VwUGFyYW1zIGhjTGVhZGVyIGhjUmVtb3ZlQWxsR3JvdXBzIGhjUmVtb3ZlR3JvdXAgaGNTZWxlY3RlZCBoY1NlbGVjdEdyb3VwIGhjU2V0R3JvdXAgJyArXG4gICAgICAgICdoY1Nob3dCYXIgaGNTaG93bkJhciBoZWFkZ2VhciBoaWRlQm9keSBoaWRlT2JqZWN0IGhpZGVPYmplY3RHbG9iYWwgaGlkZVNlbGVjdGlvbiBoaW50IGhpbnRDICcgK1xuICAgICAgICAnaGludENhZGV0IGhpbnRTaWxlbnQgaG1kIGhvc3RNaXNzaW9uIGh0bWxMb2FkIEhVRE1vdmVtZW50TGV2ZWxzIGh1bWlkaXR5IGltYWdlIGltcG9ydEFsbEdyb3VwcyAnICtcbiAgICAgICAgJ2ltcG9ydGFuY2UgaW4gaW5BcmVhIGluQXJlYUFycmF5IGluY2FwYWNpdGF0ZWRTdGF0ZSBpbmZsYW1lIGluZmxhbWVkIGluZm9QYW5lbCAnICtcbiAgICAgICAgJ2luZm9QYW5lbENvbXBvbmVudEVuYWJsZWQgaW5mb1BhbmVsQ29tcG9uZW50cyBpbmZvUGFuZWxzIGluR2FtZVVJU2V0RXZlbnRIYW5kbGVyIGluaGVyaXRzRnJvbSAnICtcbiAgICAgICAgJ2luaXRBbWJpZW50TGlmZSBpblBvbHlnb24gaW5wdXRBY3Rpb24gaW5SYW5nZU9mQXJ0aWxsZXJ5IGluc2VydEVkaXRvck9iamVjdCBpbnRlcnNlY3QgaXMzREVOICcgK1xuICAgICAgICAnaXMzREVOTXVsdGlwbGF5ZXIgaXNBYmxlVG9CcmVhdGhlIGlzQWdlbnQgaXNBcnJheSBpc0F1dG9Ib3Zlck9uIGlzQXV0b25vbW91cyBpc0F1dG90ZXN0ICcgK1xuICAgICAgICAnaXNCbGVlZGluZyBpc0J1cm5pbmcgaXNDbGFzcyBpc0NvbGxpc2lvbkxpZ2h0T24gaXNDb3BpbG90RW5hYmxlZCBpc0RhbWFnZUFsbG93ZWQgaXNEZWRpY2F0ZWQgJyArXG4gICAgICAgICdpc0RMQ0F2YWlsYWJsZSBpc0VuZ2luZU9uIGlzRXF1YWxUbyBpc0VxdWFsVHlwZSBpc0VxdWFsVHlwZUFsbCBpc0VxdWFsVHlwZUFueSBpc0VxdWFsVHlwZUFycmF5ICcgK1xuICAgICAgICAnaXNFcXVhbFR5cGVQYXJhbXMgaXNGaWxlUGF0Y2hpbmdFbmFibGVkIGlzRmxhc2hsaWdodE9uIGlzRmxhdEVtcHR5IGlzRm9yY2VkV2FsayBpc0Zvcm1hdGlvbkxlYWRlciAnICtcbiAgICAgICAgJ2lzR3JvdXBEZWxldGVkV2hlbkVtcHR5IGlzSGlkZGVuIGlzSW5SZW1haW5zQ29sbGVjdG9yIGlzSW5zdHJ1Y3RvckZpZ3VyZUVuYWJsZWQgaXNJUkxhc2VyT24gJyArXG4gICAgICAgICdpc0tleUFjdGl2ZSBpc0tpbmRPZiBpc0xhc2VyT24gaXNMaWdodE9uIGlzTG9jYWxpemVkIGlzTWFudWFsRmlyZSBpc01hcmtlZEZvckNvbGxlY3Rpb24gJyArXG4gICAgICAgICdpc011bHRpcGxheWVyIGlzTXVsdGlwbGF5ZXJTb2xvIGlzTmlsIGlzTnVsbCBpc051bWJlciBpc09iamVjdEhpZGRlbiBpc09iamVjdFJURCBpc09uUm9hZCAnICtcbiAgICAgICAgJ2lzUGlwRW5hYmxlZCBpc1BsYXllciBpc1JlYWxUaW1lIGlzUmVtb3RlRXhlY3V0ZWQgaXNSZW1vdGVFeGVjdXRlZEpJUCBpc1NlcnZlciBpc1Nob3dpbmczREljb25zICcgK1xuICAgICAgICAnaXNTaW1wbGVPYmplY3QgaXNTcHJpbnRBbGxvd2VkIGlzU3RhbWluYUVuYWJsZWQgaXNTdGVhbU1pc3Npb24gaXNTdHJlYW1GcmllbmRseVVJRW5hYmxlZCBpc1RleHQgJyArXG4gICAgICAgICdpc1RvdWNoaW5nR3JvdW5kIGlzVHVybmVkT3V0IGlzVHV0SGludHNFbmFibGVkIGlzVUFWQ29ubmVjdGFibGUgaXNVQVZDb25uZWN0ZWQgaXNVSUNvbnRleHQgJyArXG4gICAgICAgICdpc1VuaWZvcm1BbGxvd2VkIGlzVmVoaWNsZUNhcmdvIGlzVmVoaWNsZVJhZGFyT24gaXNWZWhpY2xlU2Vuc29yRW5hYmxlZCBpc1dhbGtpbmcgJyArXG4gICAgICAgICdpc1dlYXBvbkRlcGxveWVkIGlzV2VhcG9uUmVzdGVkIGl0ZW1DYXJnbyBpdGVtcyBpdGVtc1dpdGhNYWdhemluZXMgam9pbiBqb2luQXMgam9pbkFzU2lsZW50ICcgK1xuICAgICAgICAnam9pblNpbGVudCBqb2luU3RyaW5nIGtiQWRkRGF0YWJhc2Uga2JBZGREYXRhYmFzZVRhcmdldHMga2JBZGRUb3BpYyBrYkhhc1RvcGljIGtiUmVhY3QgJyArXG4gICAgICAgICdrYlJlbW92ZVRvcGljIGtiVGVsbCBrYldhc1NhaWQga2V5SW1hZ2Uga2V5TmFtZSBrbm93c0Fib3V0IGxhbmQgbGFuZEF0IGxhbmRSZXN1bHQgbGFuZ3VhZ2UgJyArXG4gICAgICAgICdsYXNlclRhcmdldCBsYkFkZCBsYkNsZWFyIGxiQ29sb3IgbGJDb2xvclJpZ2h0IGxiQ3VyU2VsIGxiRGF0YSBsYkRlbGV0ZSBsYklzU2VsZWN0ZWQgbGJQaWN0dXJlICcgK1xuICAgICAgICAnbGJQaWN0dXJlUmlnaHQgbGJTZWxlY3Rpb24gbGJTZXRDb2xvciBsYlNldENvbG9yUmlnaHQgbGJTZXRDdXJTZWwgbGJTZXREYXRhIGxiU2V0UGljdHVyZSAnICtcbiAgICAgICAgJ2xiU2V0UGljdHVyZUNvbG9yIGxiU2V0UGljdHVyZUNvbG9yRGlzYWJsZWQgbGJTZXRQaWN0dXJlQ29sb3JTZWxlY3RlZCBsYlNldFBpY3R1cmVSaWdodCAnICtcbiAgICAgICAgJ2xiU2V0UGljdHVyZVJpZ2h0Q29sb3IgbGJTZXRQaWN0dXJlUmlnaHRDb2xvckRpc2FibGVkIGxiU2V0UGljdHVyZVJpZ2h0Q29sb3JTZWxlY3RlZCAnICtcbiAgICAgICAgJ2xiU2V0U2VsZWN0Q29sb3IgbGJTZXRTZWxlY3RDb2xvclJpZ2h0IGxiU2V0U2VsZWN0ZWQgbGJTZXRUZXh0IGxiU2V0VGV4dFJpZ2h0IGxiU2V0VG9vbHRpcCAnICtcbiAgICAgICAgJ2xiU2V0VmFsdWUgbGJTaXplIGxiU29ydCBsYlNvcnRCeVZhbHVlIGxiVGV4dCBsYlRleHRSaWdodCBsYlZhbHVlIGxlYWRlciBsZWFkZXJib2FyZERlSW5pdCAnICtcbiAgICAgICAgJ2xlYWRlcmJvYXJkR2V0Um93cyBsZWFkZXJib2FyZEluaXQgbGVhZGVyYm9hcmRSZXF1ZXN0Um93c0ZyaWVuZHMgbGVhZGVyYm9hcmRzUmVxdWVzdFVwbG9hZFNjb3JlICcgK1xuICAgICAgICAnbGVhZGVyYm9hcmRzUmVxdWVzdFVwbG9hZFNjb3JlS2VlcEJlc3QgbGVhZGVyYm9hcmRTdGF0ZSBsZWF2ZVZlaGljbGUgbGlicmFyeUNyZWRpdHMgJyArXG4gICAgICAgICdsaWJyYXJ5RGlzY2xhaW1lcnMgbGlmZVN0YXRlIGxpZ2h0QXR0YWNoT2JqZWN0IGxpZ2h0RGV0YWNoT2JqZWN0IGxpZ2h0SXNPbiBsaWdodG5pbmdzIGxpbWl0U3BlZWQgJyArXG4gICAgICAgICdsaW5lYXJDb252ZXJzaW9uIGxpbmVJbnRlcnNlY3RzIGxpbmVJbnRlcnNlY3RzT2JqcyBsaW5lSW50ZXJzZWN0c1N1cmZhY2VzIGxpbmVJbnRlcnNlY3RzV2l0aCAnICtcbiAgICAgICAgJ2xpbmtJdGVtIGxpc3QgbGlzdE9iamVjdHMgbGlzdFJlbW90ZVRhcmdldHMgbGlzdFZlaGljbGVTZW5zb3JzIGxuIGxuYkFkZEFycmF5IGxuYkFkZENvbHVtbiAnICtcbiAgICAgICAgJ2xuYkFkZFJvdyBsbmJDbGVhciBsbmJDb2xvciBsbmJDdXJTZWxSb3cgbG5iRGF0YSBsbmJEZWxldGVDb2x1bW4gbG5iRGVsZXRlUm93ICcgK1xuICAgICAgICAnbG5iR2V0Q29sdW1uc1Bvc2l0aW9uIGxuYlBpY3R1cmUgbG5iU2V0Q29sb3IgbG5iU2V0Q29sdW1uc1BvcyBsbmJTZXRDdXJTZWxSb3cgbG5iU2V0RGF0YSAnICtcbiAgICAgICAgJ2xuYlNldFBpY3R1cmUgbG5iU2V0VGV4dCBsbmJTZXRWYWx1ZSBsbmJTaXplIGxuYlNvcnQgbG5iU29ydEJ5VmFsdWUgbG5iVGV4dCBsbmJWYWx1ZSBsb2FkIGxvYWRBYnMgJyArXG4gICAgICAgICdsb2FkQmFja3BhY2sgbG9hZEZpbGUgbG9hZEdhbWUgbG9hZElkZW50aXR5IGxvYWRNYWdhemluZSBsb2FkT3ZlcmxheSBsb2FkU3RhdHVzIGxvYWRVbmlmb3JtICcgK1xuICAgICAgICAnbG9hZFZlc3QgbG9jYWwgbG9jYWxpemUgbG9jYXRpb25Qb3NpdGlvbiBsb2NrIGxvY2tDYW1lcmFUbyBsb2NrQ2FyZ28gbG9ja0RyaXZlciBsb2NrZWQgJyArXG4gICAgICAgICdsb2NrZWRDYXJnbyBsb2NrZWREcml2ZXIgbG9ja2VkVHVycmV0IGxvY2tJZGVudGl0eSBsb2NrVHVycmV0IGxvY2tXUCBsb2cgbG9nRW50aXRpZXMgbG9nTmV0d29yayAnICtcbiAgICAgICAgJ2xvZ05ldHdvcmtUZXJtaW5hdGUgbG9va0F0IGxvb2tBdFBvcyBtYWdhemluZUNhcmdvIG1hZ2F6aW5lcyBtYWdhemluZXNBbGxUdXJyZXRzIG1hZ2F6aW5lc0FtbW8gJyArXG4gICAgICAgICdtYWdhemluZXNBbW1vQ2FyZ28gbWFnYXppbmVzQW1tb0Z1bGwgbWFnYXppbmVzRGV0YWlsIG1hZ2F6aW5lc0RldGFpbEJhY2twYWNrICcgK1xuICAgICAgICAnbWFnYXppbmVzRGV0YWlsVW5pZm9ybSBtYWdhemluZXNEZXRhaWxWZXN0IG1hZ2F6aW5lc1R1cnJldCBtYWdhemluZVR1cnJldEFtbW8gbWFwQW5pbUFkZCAnICtcbiAgICAgICAgJ21hcEFuaW1DbGVhciBtYXBBbmltQ29tbWl0IG1hcEFuaW1Eb25lIG1hcENlbnRlck9uQ2FtZXJhIG1hcEdyaWRQb3NpdGlvbiBtYXJrQXNGaW5pc2hlZE9uU3RlYW0gJyArXG4gICAgICAgICdtYXJrZXJBbHBoYSBtYXJrZXJCcnVzaCBtYXJrZXJDb2xvciBtYXJrZXJEaXIgbWFya2VyUG9zIG1hcmtlclNoYXBlIG1hcmtlclNpemUgbWFya2VyVGV4dCAnICtcbiAgICAgICAgJ21hcmtlclR5cGUgbWF4IG1lbWJlcnMgbWVudUFjdGlvbiBtZW51QWRkIG1lbnVDaGVja2VkIG1lbnVDbGVhciBtZW51Q29sbGFwc2UgbWVudURhdGEgbWVudURlbGV0ZSAnICtcbiAgICAgICAgJ21lbnVFbmFibGUgbWVudUVuYWJsZWQgbWVudUV4cGFuZCBtZW51SG92ZXIgbWVudVBpY3R1cmUgbWVudVNldEFjdGlvbiBtZW51U2V0Q2hlY2sgbWVudVNldERhdGEgJyArXG4gICAgICAgICdtZW51U2V0UGljdHVyZSBtZW51U2V0VmFsdWUgbWVudVNob3J0Y3V0IG1lbnVTaG9ydGN1dFRleHQgbWVudVNpemUgbWVudVNvcnQgbWVudVRleHQgbWVudVVSTCAnICtcbiAgICAgICAgJ21lbnVWYWx1ZSBtaW4gbWluZUFjdGl2ZSBtaW5lRGV0ZWN0ZWRCeSBtaXNzaW9uQ29uZmlnRmlsZSBtaXNzaW9uRGlmZmljdWx0eSBtaXNzaW9uTmFtZSAnICtcbiAgICAgICAgJ21pc3Npb25OYW1lc3BhY2UgbWlzc2lvblN0YXJ0IG1pc3Npb25WZXJzaW9uIG1vZCBtb2RlbFRvV29ybGQgbW9kZWxUb1dvcmxkVmlzdWFsICcgK1xuICAgICAgICAnbW9kZWxUb1dvcmxkVmlzdWFsV29ybGQgbW9kZWxUb1dvcmxkV29ybGQgbW9kUGFyYW1zIG1vb25JbnRlbnNpdHkgbW9vblBoYXNlIG1vcmFsZSBtb3ZlICcgK1xuICAgICAgICAnbW92ZTNERU5DYW1lcmEgbW92ZUluQW55IG1vdmVJbkNhcmdvIG1vdmVJbkNvbW1hbmRlciBtb3ZlSW5Ecml2ZXIgbW92ZUluR3VubmVyIG1vdmVJblR1cnJldCAnICtcbiAgICAgICAgJ21vdmVPYmplY3RUb0VuZCBtb3ZlT3V0IG1vdmVUaW1lIG1vdmVUbyBtb3ZlVG9Db21wbGV0ZWQgbW92ZVRvRmFpbGVkIG11c2ljVm9sdW1lIG5hbWUgbmFtZVNvdW5kICcgK1xuICAgICAgICAnbmVhckVudGl0aWVzIG5lYXJlc3RCdWlsZGluZyBuZWFyZXN0TG9jYXRpb24gbmVhcmVzdExvY2F0aW9ucyBuZWFyZXN0TG9jYXRpb25XaXRoRHViYmluZyAnICtcbiAgICAgICAgJ25lYXJlc3RPYmplY3QgbmVhcmVzdE9iamVjdHMgbmVhcmVzdFRlcnJhaW5PYmplY3RzIG5lYXJPYmplY3RzIG5lYXJPYmplY3RzUmVhZHkgbmVhclJvYWRzICcgK1xuICAgICAgICAnbmVhclN1cHBsaWVzIG5lYXJUYXJnZXRzIG5lZWRSZWxvYWQgbmV0SWQgbmV0T2JqTnVsbCBuZXdPdmVybGF5IG5leHRNZW51SXRlbUluZGV4ICcgK1xuICAgICAgICAnbmV4dFdlYXRoZXJDaGFuZ2Ugbk1lbnVJdGVtcyBub3QgbnVtYmVyT2ZFbmdpbmVzUlREIG51bWJlclRvRGF0ZSBvYmplY3RDdXJhdG9ycyBvYmplY3RGcm9tTmV0SWQgJyArXG4gICAgICAgICdvYmplY3RQYXJlbnQgb2JqU3RhdHVzIG9uQnJpZWZpbmdHcm91cCBvbkJyaWVmaW5nTm90ZXMgb25CcmllZmluZ1BsYW4gb25CcmllZmluZ1RlYW1Td2l0Y2ggJyArXG4gICAgICAgICdvbkNvbW1hbmRNb2RlQ2hhbmdlZCBvbkRvdWJsZUNsaWNrIG9uRWFjaEZyYW1lIG9uR3JvdXBJY29uQ2xpY2sgb25Hcm91cEljb25PdmVyRW50ZXIgJyArXG4gICAgICAgICdvbkdyb3VwSWNvbk92ZXJMZWF2ZSBvbkhDR3JvdXBTZWxlY3Rpb25DaGFuZ2VkIG9uTWFwU2luZ2xlQ2xpY2sgb25QbGF5ZXJDb25uZWN0ZWQgJyArXG4gICAgICAgICdvblBsYXllckRpc2Nvbm5lY3RlZCBvblByZWxvYWRGaW5pc2hlZCBvblByZWxvYWRTdGFydGVkIG9uU2hvd05ld09iamVjdCBvblRlYW1Td2l0Y2ggJyArXG4gICAgICAgICdvcGVuQ3VyYXRvckludGVyZmFjZSBvcGVuRExDUGFnZSBvcGVuTWFwIG9wZW5TdGVhbUFwcCBvcGVuWW91dHViZVZpZGVvIG9yIG9yZGVyR2V0SW4gb3ZlcmNhc3QgJyArXG4gICAgICAgICdvdmVyY2FzdEZvcmVjYXN0IG93bmVyIHBhcmFtIHBhcmFtcyBwYXJzZU51bWJlciBwYXJzZVNpbXBsZUFycmF5IHBhcnNlVGV4dCBwYXJzaW5nTmFtZXNwYWNlICcgK1xuICAgICAgICAncGFydGljbGVzUXVhbGl0eSBwaWNrV2VhcG9uUG9vbCBwaXRjaCBwaXhlbEdyaWQgcGl4ZWxHcmlkQmFzZSBwaXhlbEdyaWROb1VJU2NhbGUgcGl4ZWxIIHBpeGVsVyAnICtcbiAgICAgICAgJ3BsYXlhYmxlU2xvdHNOdW1iZXIgcGxheWFibGVVbml0cyBwbGF5QWN0aW9uIHBsYXlBY3Rpb25Ob3cgcGxheWVyIHBsYXllclJlc3Bhd25UaW1lIHBsYXllclNpZGUgJyArXG4gICAgICAgICdwbGF5ZXJzTnVtYmVyIHBsYXlHZXN0dXJlIHBsYXlNaXNzaW9uIHBsYXlNb3ZlIHBsYXlNb3ZlTm93IHBsYXlNdXNpYyBwbGF5U2NyaXB0ZWRNaXNzaW9uICcgK1xuICAgICAgICAncGxheVNvdW5kIHBsYXlTb3VuZDNEIHBvc2l0aW9uIHBvc2l0aW9uQ2FtZXJhVG9Xb3JsZCBwb3NTY3JlZW5Ub1dvcmxkIHBvc1dvcmxkVG9TY3JlZW4gJyArXG4gICAgICAgICdwcEVmZmVjdEFkanVzdCBwcEVmZmVjdENvbW1pdCBwcEVmZmVjdENvbW1pdHRlZCBwcEVmZmVjdENyZWF0ZSBwcEVmZmVjdERlc3Ryb3kgcHBFZmZlY3RFbmFibGUgJyArXG4gICAgICAgICdwcEVmZmVjdEVuYWJsZWQgcHBFZmZlY3RGb3JjZUluTlZHIHByZWNpc2lvbiBwcmVsb2FkQ2FtZXJhIHByZWxvYWRPYmplY3QgcHJlbG9hZFNvdW5kICcgK1xuICAgICAgICAncHJlbG9hZFRpdGxlT2JqIHByZWxvYWRUaXRsZVJzYyBwcmVwcm9jZXNzRmlsZSBwcmVwcm9jZXNzRmlsZUxpbmVOdW1iZXJzIHByaW1hcnlXZWFwb24gJyArXG4gICAgICAgICdwcmltYXJ5V2VhcG9uSXRlbXMgcHJpbWFyeVdlYXBvbk1hZ2F6aW5lIHByaW9yaXR5IHByb2Nlc3NEaWFyeUxpbmsgcHJvZHVjdFZlcnNpb24gcHJvZmlsZU5hbWUgJyArXG4gICAgICAgICdwcm9maWxlTmFtZXNwYWNlIHByb2ZpbGVOYW1lU3RlYW0gcHJvZ3Jlc3NMb2FkaW5nU2NyZWVuIHByb2dyZXNzUG9zaXRpb24gcHJvZ3Jlc3NTZXRQb3NpdGlvbiAnICtcbiAgICAgICAgJ3B1YmxpY1ZhcmlhYmxlIHB1YmxpY1ZhcmlhYmxlQ2xpZW50IHB1YmxpY1ZhcmlhYmxlU2VydmVyIHB1c2hCYWNrIHB1c2hCYWNrVW5pcXVlIHB1dFdlYXBvblBvb2wgJyArXG4gICAgICAgICdxdWVyeUl0ZW1zUG9vbCBxdWVyeU1hZ2F6aW5lUG9vbCBxdWVyeVdlYXBvblBvb2wgcmFkIHJhZGlvQ2hhbm5lbEFkZCByYWRpb0NoYW5uZWxDcmVhdGUgJyArXG4gICAgICAgICdyYWRpb0NoYW5uZWxSZW1vdmUgcmFkaW9DaGFubmVsU2V0Q2FsbFNpZ24gcmFkaW9DaGFubmVsU2V0TGFiZWwgcmFkaW9Wb2x1bWUgcmFpbiByYWluYm93IHJhbmRvbSAnICtcbiAgICAgICAgJ3JhbmsgcmFua0lkIHJhdGluZyByZWN0YW5ndWxhciByZWdpc3RlcmVkVGFza3MgcmVnaXN0ZXJUYXNrIHJlbG9hZCByZWxvYWRFbmFibGVkIHJlbW90ZUNvbnRyb2wgJyArXG4gICAgICAgICdyZW1vdGVFeGVjIHJlbW90ZUV4ZWNDYWxsIHJlbW90ZUV4ZWN1dGVkT3duZXIgcmVtb3ZlM0RFTkNvbm5lY3Rpb24gcmVtb3ZlM0RFTkV2ZW50SGFuZGxlciAnICtcbiAgICAgICAgJ3JlbW92ZTNERU5MYXllciByZW1vdmVBY3Rpb24gcmVtb3ZlQWxsM0RFTkV2ZW50SGFuZGxlcnMgcmVtb3ZlQWxsQWN0aW9ucyByZW1vdmVBbGxBc3NpZ25lZEl0ZW1zICcgK1xuICAgICAgICAncmVtb3ZlQWxsQ29udGFpbmVycyByZW1vdmVBbGxDdXJhdG9yQWRkb25zIHJlbW92ZUFsbEN1cmF0b3JDYW1lcmFBcmVhcyAnICtcbiAgICAgICAgJ3JlbW92ZUFsbEN1cmF0b3JFZGl0aW5nQXJlYXMgcmVtb3ZlQWxsRXZlbnRIYW5kbGVycyByZW1vdmVBbGxIYW5kZ3VuSXRlbXMgcmVtb3ZlQWxsSXRlbXMgJyArXG4gICAgICAgICdyZW1vdmVBbGxJdGVtc1dpdGhNYWdhemluZXMgcmVtb3ZlQWxsTWlzc2lvbkV2ZW50SGFuZGxlcnMgcmVtb3ZlQWxsTVBFdmVudEhhbmRsZXJzICcgK1xuICAgICAgICAncmVtb3ZlQWxsTXVzaWNFdmVudEhhbmRsZXJzIHJlbW92ZUFsbE93bmVkTWluZXMgcmVtb3ZlQWxsUHJpbWFyeVdlYXBvbkl0ZW1zIHJlbW92ZUFsbFdlYXBvbnMgJyArXG4gICAgICAgICdyZW1vdmVCYWNrcGFjayByZW1vdmVCYWNrcGFja0dsb2JhbCByZW1vdmVDdXJhdG9yQWRkb25zIHJlbW92ZUN1cmF0b3JDYW1lcmFBcmVhICcgK1xuICAgICAgICAncmVtb3ZlQ3VyYXRvckVkaXRhYmxlT2JqZWN0cyByZW1vdmVDdXJhdG9yRWRpdGluZ0FyZWEgcmVtb3ZlRHJhd0ljb24gcmVtb3ZlRHJhd0xpbmtzICcgK1xuICAgICAgICAncmVtb3ZlRXZlbnRIYW5kbGVyIHJlbW92ZUZyb21SZW1haW5zQ29sbGVjdG9yIHJlbW92ZUdvZ2dsZXMgcmVtb3ZlR3JvdXBJY29uIHJlbW92ZUhhbmRndW5JdGVtICcgK1xuICAgICAgICAncmVtb3ZlSGVhZGdlYXIgcmVtb3ZlSXRlbSByZW1vdmVJdGVtRnJvbUJhY2twYWNrIHJlbW92ZUl0ZW1Gcm9tVW5pZm9ybSByZW1vdmVJdGVtRnJvbVZlc3QgJyArXG4gICAgICAgICdyZW1vdmVJdGVtcyByZW1vdmVNYWdhemluZSByZW1vdmVNYWdhemluZUdsb2JhbCByZW1vdmVNYWdhemluZXMgcmVtb3ZlTWFnYXppbmVzVHVycmV0ICcgK1xuICAgICAgICAncmVtb3ZlTWFnYXppbmVUdXJyZXQgcmVtb3ZlTWVudUl0ZW0gcmVtb3ZlTWlzc2lvbkV2ZW50SGFuZGxlciByZW1vdmVNUEV2ZW50SGFuZGxlciAnICtcbiAgICAgICAgJ3JlbW92ZU11c2ljRXZlbnRIYW5kbGVyIHJlbW92ZU93bmVkTWluZSByZW1vdmVQcmltYXJ5V2VhcG9uSXRlbSByZW1vdmVTZWNvbmRhcnlXZWFwb25JdGVtICcgK1xuICAgICAgICAncmVtb3ZlU2ltcGxlVGFzayByZW1vdmVTd2l0Y2hhYmxlVW5pdCByZW1vdmVUZWFtTWVtYmVyIHJlbW92ZVVuaWZvcm0gcmVtb3ZlVmVzdCByZW1vdmVXZWFwb24gJyArXG4gICAgICAgICdyZW1vdmVXZWFwb25BdHRhY2htZW50Q2FyZ28gcmVtb3ZlV2VhcG9uQ2FyZ28gcmVtb3ZlV2VhcG9uR2xvYmFsIHJlbW92ZVdlYXBvblR1cnJldCAnICtcbiAgICAgICAgJ3JlcG9ydFJlbW90ZVRhcmdldCByZXF1aXJlZFZlcnNpb24gcmVzZXRDYW1TaGFrZSByZXNldFN1Ymdyb3VwRGlyZWN0aW9uIHJlc2l6ZSByZXNvdXJjZXMgJyArXG4gICAgICAgICdyZXNwYXduVmVoaWNsZSByZXN0YXJ0RWRpdG9yQ2FtZXJhIHJldmVhbCByZXZlYWxNaW5lIHJldmVyc2UgcmV2ZXJzZWRNb3VzZVkgcm9hZEF0ICcgK1xuICAgICAgICAncm9hZHNDb25uZWN0ZWRUbyByb2xlRGVzY3JpcHRpb24gcm9wZUF0dGFjaGVkT2JqZWN0cyByb3BlQXR0YWNoZWRUbyByb3BlQXR0YWNoRW5hYmxlZCAnICtcbiAgICAgICAgJ3JvcGVBdHRhY2hUbyByb3BlQ3JlYXRlIHJvcGVDdXQgcm9wZURlc3Ryb3kgcm9wZURldGFjaCByb3BlRW5kUG9zaXRpb24gcm9wZUxlbmd0aCByb3BlcyAnICtcbiAgICAgICAgJ3JvcGVVbndpbmQgcm9wZVVud291bmQgcm90b3JzRm9yY2VzUlREIHJvdG9yc1JwbVJURCByb3VuZCBydW5Jbml0U2NyaXB0IHNhZmVab25lSCBzYWZlWm9uZVcgJyArXG4gICAgICAgICdzYWZlWm9uZVdBYnMgc2FmZVpvbmVYIHNhZmVab25lWEFicyBzYWZlWm9uZVkgc2F2ZTNERU5JbnZlbnRvcnkgc2F2ZUdhbWUgc2F2ZUlkZW50aXR5ICcgK1xuICAgICAgICAnc2F2ZUpveXN0aWNrcyBzYXZlT3ZlcmxheSBzYXZlUHJvZmlsZU5hbWVzcGFjZSBzYXZlU3RhdHVzIHNhdmVWYXIgc2F2aW5nRW5hYmxlZCBzYXkgc2F5MkQgc2F5M0QgJyArXG4gICAgICAgICdzY29wZU5hbWUgc2NvcmUgc2NvcmVTaWRlIHNjcmVlbnNob3Qgc2NyZWVuVG9Xb3JsZCBzY3JpcHREb25lIHNjcmlwdE5hbWUgc2N1ZFN0YXRlICcgK1xuICAgICAgICAnc2Vjb25kYXJ5V2VhcG9uIHNlY29uZGFyeVdlYXBvbkl0ZW1zIHNlY29uZGFyeVdlYXBvbk1hZ2F6aW5lIHNlbGVjdCBzZWxlY3RCZXN0UGxhY2VzICcgK1xuICAgICAgICAnc2VsZWN0RGlhcnlTdWJqZWN0IHNlbGVjdGVkRWRpdG9yT2JqZWN0cyBzZWxlY3RFZGl0b3JPYmplY3Qgc2VsZWN0aW9uTmFtZXMgc2VsZWN0aW9uUG9zaXRpb24gJyArXG4gICAgICAgICdzZWxlY3RMZWFkZXIgc2VsZWN0TWF4IHNlbGVjdE1pbiBzZWxlY3ROb1BsYXllciBzZWxlY3RQbGF5ZXIgc2VsZWN0UmFuZG9tIHNlbGVjdFJhbmRvbVdlaWdodGVkICcgK1xuICAgICAgICAnc2VsZWN0V2VhcG9uIHNlbGVjdFdlYXBvblR1cnJldCBzZW5kQVVNZXNzYWdlIHNlbmRTaW1wbGVDb21tYW5kIHNlbmRUYXNrIHNlbmRUYXNrUmVzdWx0ICcgK1xuICAgICAgICAnc2VuZFVEUE1lc3NhZ2Ugc2VydmVyQ29tbWFuZCBzZXJ2ZXJDb21tYW5kQXZhaWxhYmxlIHNlcnZlckNvbW1hbmRFeGVjdXRhYmxlIHNlcnZlck5hbWUgc2VydmVyVGltZSAnICtcbiAgICAgICAgJ3NldCBzZXQzREVOQXR0cmlidXRlIHNldDNERU5BdHRyaWJ1dGVzIHNldDNERU5HcmlkIHNldDNERU5JY29uc1Zpc2libGUgc2V0M0RFTkxheWVyICcgK1xuICAgICAgICAnc2V0M0RFTkxpbmVzVmlzaWJsZSBzZXQzREVOTG9naWNUeXBlIHNldDNERU5NaXNzaW9uQXR0cmlidXRlIHNldDNERU5NaXNzaW9uQXR0cmlidXRlcyAnICtcbiAgICAgICAgJ3NldDNERU5Nb2RlbHNWaXNpYmxlIHNldDNERU5PYmplY3RUeXBlIHNldDNERU5TZWxlY3RlZCBzZXRBY2NUaW1lIHNldEFjdHVhbENvbGxlY3RpdmVSVEQgJyArXG4gICAgICAgICdzZXRBaXJwbGFuZVRocm90dGxlIHNldEFpcnBvcnRTaWRlIHNldEFtbW8gc2V0QW1tb0NhcmdvIHNldEFtbW9PblB5bG9uIHNldEFuaW1TcGVlZENvZWYgJyArXG4gICAgICAgICdzZXRBcGVydHVyZSBzZXRBcGVydHVyZU5ldyBzZXRBcm1vcnlQb2ludHMgc2V0QXR0cmlidXRlcyBzZXRBdXRvbm9tb3VzIHNldEJlaGF2aW91ciAnICtcbiAgICAgICAgJ3NldEJsZWVkaW5nUmVtYWluaW5nIHNldEJyYWtlc1JURCBzZXRDYW1lcmFJbnRlcmVzdCBzZXRDYW1TaGFrZURlZlBhcmFtcyBzZXRDYW1TaGFrZVBhcmFtcyAnICtcbiAgICAgICAgJ3NldENhbVVzZVRJIHNldENhcHRpdmUgc2V0Q2VudGVyT2ZNYXNzIHNldENvbGxpc2lvbkxpZ2h0IHNldENvbWJhdE1vZGUgc2V0Q29tcGFzc09zY2lsbGF0aW9uICcgK1xuICAgICAgICAnc2V0Q29udm95U2VwYXJhdGlvbiBzZXRDdXJhdG9yQ2FtZXJhQXJlYUNlaWxpbmcgc2V0Q3VyYXRvckNvZWYgc2V0Q3VyYXRvckVkaXRpbmdBcmVhVHlwZSAnICtcbiAgICAgICAgJ3NldEN1cmF0b3JXYXlwb2ludENvc3Qgc2V0Q3VycmVudENoYW5uZWwgc2V0Q3VycmVudFRhc2sgc2V0Q3VycmVudFdheXBvaW50IHNldEN1c3RvbUFpbUNvZWYgJyArXG4gICAgICAgICdzZXRDdXN0b21XZWlnaHRSVEQgc2V0RGFtYWdlIHNldERhbW1hZ2Ugc2V0RGF0ZSBzZXREZWJyaWVmaW5nVGV4dCBzZXREZWZhdWx0Q2FtZXJhIHNldERlc3RpbmF0aW9uICcgK1xuICAgICAgICAnc2V0RGV0YWlsTWFwQmxlbmRQYXJzIHNldERpciBzZXREaXJlY3Rpb24gc2V0RHJhd0ljb24gc2V0RHJpdmVPblBhdGggc2V0RHJvcEludGVydmFsICcgK1xuICAgICAgICAnc2V0RHluYW1pY1NpbXVsYXRpb25EaXN0YW5jZSBzZXREeW5hbWljU2ltdWxhdGlvbkRpc3RhbmNlQ29lZiBzZXRFZGl0b3JNb2RlIHNldEVkaXRvck9iamVjdFNjb3BlICcgK1xuICAgICAgICAnc2V0RWZmZWN0Q29uZGl0aW9uIHNldEVuZ2luZVJQTVJURCBzZXRGYWNlIHNldEZhY2VBbmltYXRpb24gc2V0RmF0aWd1ZSBzZXRGZWF0dXJlVHlwZSAnICtcbiAgICAgICAgJ3NldEZsYWdBbmltYXRpb25QaGFzZSBzZXRGbGFnT3duZXIgc2V0RmxhZ1NpZGUgc2V0RmxhZ1RleHR1cmUgc2V0Rm9nIHNldEZvcm1hdGlvbiAnICtcbiAgICAgICAgJ3NldEZvcm1hdGlvblRhc2sgc2V0Rm9ybURpciBzZXRGcmllbmQgc2V0RnJvbUVkaXRvciBzZXRGU01WYXJpYWJsZSBzZXRGdWVsIHNldEZ1ZWxDYXJnbyAnICtcbiAgICAgICAgJ3NldEdyb3VwSWNvbiBzZXRHcm91cEljb25QYXJhbXMgc2V0R3JvdXBJY29uc1NlbGVjdGFibGUgc2V0R3JvdXBJY29uc1Zpc2libGUgc2V0R3JvdXBJZCAnICtcbiAgICAgICAgJ3NldEdyb3VwSWRHbG9iYWwgc2V0R3JvdXBPd25lciBzZXRHdXN0cyBzZXRIaWRlQmVoaW5kIHNldEhpdCBzZXRIaXRJbmRleCBzZXRIaXRQb2ludERhbWFnZSAnICtcbiAgICAgICAgJ3NldEhvcml6b25QYXJhbGxheENvZWYgc2V0SFVETW92ZW1lbnRMZXZlbHMgc2V0SWRlbnRpdHkgc2V0SW1wb3J0YW5jZSBzZXRJbmZvUGFuZWwgc2V0TGVhZGVyICcgK1xuICAgICAgICAnc2V0TGlnaHRBbWJpZW50IHNldExpZ2h0QXR0ZW51YXRpb24gc2V0TGlnaHRCcmlnaHRuZXNzIHNldExpZ2h0Q29sb3Igc2V0TGlnaHREYXlMaWdodCAnICtcbiAgICAgICAgJ3NldExpZ2h0RmxhcmVNYXhEaXN0YW5jZSBzZXRMaWdodEZsYXJlU2l6ZSBzZXRMaWdodEludGVuc2l0eSBzZXRMaWdodG5pbmdzIHNldExpZ2h0VXNlRmxhcmUgJyArXG4gICAgICAgICdzZXRMb2NhbFdpbmRQYXJhbXMgc2V0TWFnYXppbmVUdXJyZXRBbW1vIHNldE1hcmtlckFscGhhIHNldE1hcmtlckFscGhhTG9jYWwgc2V0TWFya2VyQnJ1c2ggJyArXG4gICAgICAgICdzZXRNYXJrZXJCcnVzaExvY2FsIHNldE1hcmtlckNvbG9yIHNldE1hcmtlckNvbG9yTG9jYWwgc2V0TWFya2VyRGlyIHNldE1hcmtlckRpckxvY2FsICcgK1xuICAgICAgICAnc2V0TWFya2VyUG9zIHNldE1hcmtlclBvc0xvY2FsIHNldE1hcmtlclNoYXBlIHNldE1hcmtlclNoYXBlTG9jYWwgc2V0TWFya2VyU2l6ZSAnICtcbiAgICAgICAgJ3NldE1hcmtlclNpemVMb2NhbCBzZXRNYXJrZXJUZXh0IHNldE1hcmtlclRleHRMb2NhbCBzZXRNYXJrZXJUeXBlIHNldE1hcmtlclR5cGVMb2NhbCBzZXRNYXNzICcgK1xuICAgICAgICAnc2V0TWltaWMgc2V0TW91c2VQb3NpdGlvbiBzZXRNdXNpY0VmZmVjdCBzZXRNdXNpY0V2ZW50SGFuZGxlciBzZXROYW1lIHNldE5hbWVTb3VuZCAnICtcbiAgICAgICAgJ3NldE9iamVjdEFyZ3VtZW50cyBzZXRPYmplY3RNYXRlcmlhbCBzZXRPYmplY3RNYXRlcmlhbEdsb2JhbCBzZXRPYmplY3RQcm94eSBzZXRPYmplY3RUZXh0dXJlICcgK1xuICAgICAgICAnc2V0T2JqZWN0VGV4dHVyZUdsb2JhbCBzZXRPYmplY3RWaWV3RGlzdGFuY2Ugc2V0T3ZlcmNhc3Qgc2V0T3duZXIgc2V0T3h5Z2VuUmVtYWluaW5nICcgK1xuICAgICAgICAnc2V0UGFydGljbGVDaXJjbGUgc2V0UGFydGljbGVDbGFzcyBzZXRQYXJ0aWNsZUZpcmUgc2V0UGFydGljbGVQYXJhbXMgc2V0UGFydGljbGVSYW5kb20gJyArXG4gICAgICAgICdzZXRQaWxvdENhbWVyYURpcmVjdGlvbiBzZXRQaWxvdENhbWVyYVJvdGF0aW9uIHNldFBpbG90Q2FtZXJhVGFyZ2V0IHNldFBpbG90TGlnaHQgc2V0UGlQRWZmZWN0ICcgK1xuICAgICAgICAnc2V0UGl0Y2ggc2V0UGxhdGVOdW1iZXIgc2V0UGxheWFibGUgc2V0UGxheWVyUmVzcGF3blRpbWUgc2V0UG9zIHNldFBvc0FTTCBzZXRQb3NBU0wyIHNldFBvc0FTTFcgJyArXG4gICAgICAgICdzZXRQb3NBVEwgc2V0UG9zaXRpb24gc2V0UG9zV29ybGQgc2V0UHlsb25Mb2FkT3V0IHNldFB5bG9uc1ByaW9yaXR5IHNldFJhZGlvTXNnIHNldFJhaW4gJyArXG4gICAgICAgICdzZXRSYWluYm93IHNldFJhbmRvbUxpcCBzZXRSYW5rIHNldFJlY3Rhbmd1bGFyIHNldFJlcGFpckNhcmdvIHNldFJvdG9yQnJha2VSVEQgc2V0U2hhZG93RGlzdGFuY2UgJyArXG4gICAgICAgICdzZXRTaG90UGFyZW50cyBzZXRTaWRlIHNldFNpbXBsZVRhc2tBbHdheXNWaXNpYmxlIHNldFNpbXBsZVRhc2tDdXN0b21EYXRhICcgK1xuICAgICAgICAnc2V0U2ltcGxlVGFza0Rlc2NyaXB0aW9uIHNldFNpbXBsZVRhc2tEZXN0aW5hdGlvbiBzZXRTaW1wbGVUYXNrVGFyZ2V0IHNldFNpbXBsZVRhc2tUeXBlICcgK1xuICAgICAgICAnc2V0U2ltdWxXZWF0aGVyTGF5ZXJzIHNldFNpemUgc2V0U2tpbGwgc2V0U2xpbmdMb2FkIHNldFNvdW5kRWZmZWN0IHNldFNwZWFrZXIgc2V0U3BlZWNoICcgK1xuICAgICAgICAnc2V0U3BlZWRNb2RlIHNldFN0YW1pbmEgc2V0U3RhbWluYVNjaGVtZSBzZXRTdGF0VmFsdWUgc2V0U3VwcHJlc3Npb24gc2V0U3lzdGVtT2ZVbml0cyAnICtcbiAgICAgICAgJ3NldFRhcmdldEFnZSBzZXRUYXNrTWFya2VyT2Zmc2V0IHNldFRhc2tSZXN1bHQgc2V0VGFza1N0YXRlIHNldFRlcnJhaW5HcmlkIHNldFRleHQgJyArXG4gICAgICAgICdzZXRUaW1lTXVsdGlwbGllciBzZXRUaXRsZUVmZmVjdCBzZXRUcmFmZmljRGVuc2l0eSBzZXRUcmFmZmljRGlzdGFuY2Ugc2V0VHJhZmZpY0dhcCAnICtcbiAgICAgICAgJ3NldFRyYWZmaWNTcGVlZCBzZXRUcmlnZ2VyQWN0aXZhdGlvbiBzZXRUcmlnZ2VyQXJlYSBzZXRUcmlnZ2VyU3RhdGVtZW50cyBzZXRUcmlnZ2VyVGV4dCAnICtcbiAgICAgICAgJ3NldFRyaWdnZXJUaW1lb3V0IHNldFRyaWdnZXJUeXBlIHNldFR5cGUgc2V0VW5jb25zY2lvdXMgc2V0VW5pdEFiaWxpdHkgc2V0VW5pdExvYWRvdXQgc2V0VW5pdFBvcyAnICtcbiAgICAgICAgJ3NldFVuaXRQb3NXZWFrIHNldFVuaXRSYW5rIHNldFVuaXRSZWNvaWxDb2VmZmljaWVudCBzZXRVbml0VHJhaXQgc2V0VW5sb2FkSW5Db21iYXQgJyArXG4gICAgICAgICdzZXRVc2VyQWN0aW9uVGV4dCBzZXRVc2VyTUZEVGV4dCBzZXRVc2VyTUZEdmFsdWUgc2V0VmFyaWFibGUgc2V0VmVjdG9yRGlyIHNldFZlY3RvckRpckFuZFVwICcgK1xuICAgICAgICAnc2V0VmVjdG9yVXAgc2V0VmVoaWNsZUFtbW8gc2V0VmVoaWNsZUFtbW9EZWYgc2V0VmVoaWNsZUFybW9yIHNldFZlaGljbGVDYXJnbyBzZXRWZWhpY2xlSWQgJyArXG4gICAgICAgICdzZXRWZWhpY2xlTG9jayBzZXRWZWhpY2xlUG9zaXRpb24gc2V0VmVoaWNsZVJhZGFyIHNldFZlaGljbGVSZWNlaXZlUmVtb3RlVGFyZ2V0cyAnICtcbiAgICAgICAgJ3NldFZlaGljbGVSZXBvcnRPd25Qb3NpdGlvbiBzZXRWZWhpY2xlUmVwb3J0UmVtb3RlVGFyZ2V0cyBzZXRWZWhpY2xlVElQYXJzIHNldFZlaGljbGVWYXJOYW1lICcgK1xuICAgICAgICAnc2V0VmVsb2NpdHkgc2V0VmVsb2NpdHlNb2RlbFNwYWNlIHNldFZlbG9jaXR5VHJhbnNmb3JtYXRpb24gc2V0Vmlld0Rpc3RhbmNlICcgK1xuICAgICAgICAnc2V0VmlzaWJsZUlmVHJlZUNvbGxhcHNlZCBzZXRXYW50ZWRSUE1SVEQgc2V0V2F2ZXMgc2V0V2F5cG9pbnRCZWhhdmlvdXIgc2V0V2F5cG9pbnRDb21iYXRNb2RlICcgK1xuICAgICAgICAnc2V0V2F5cG9pbnRDb21wbGV0aW9uUmFkaXVzIHNldFdheXBvaW50RGVzY3JpcHRpb24gc2V0V2F5cG9pbnRGb3JjZUJlaGF2aW91ciBzZXRXYXlwb2ludEZvcm1hdGlvbiAnICtcbiAgICAgICAgJ3NldFdheXBvaW50SG91c2VQb3NpdGlvbiBzZXRXYXlwb2ludExvaXRlclJhZGl1cyBzZXRXYXlwb2ludExvaXRlclR5cGUgc2V0V2F5cG9pbnROYW1lICcgK1xuICAgICAgICAnc2V0V2F5cG9pbnRQb3NpdGlvbiBzZXRXYXlwb2ludFNjcmlwdCBzZXRXYXlwb2ludFNwZWVkIHNldFdheXBvaW50U3RhdGVtZW50cyBzZXRXYXlwb2ludFRpbWVvdXQgJyArXG4gICAgICAgICdzZXRXYXlwb2ludFR5cGUgc2V0V2F5cG9pbnRWaXNpYmxlIHNldFdlYXBvblJlbG9hZGluZ1RpbWUgc2V0V2luZCBzZXRXaW5kRGlyIHNldFdpbmRGb3JjZSAnICtcbiAgICAgICAgJ3NldFdpbmRTdHIgc2V0V2luZ0ZvcmNlU2NhbGVSVEQgc2V0V1BQb3Mgc2hvdzNESWNvbnMgc2hvd0NoYXQgc2hvd0NpbmVtYUJvcmRlciBzaG93Q29tbWFuZGluZ01lbnUgJyArXG4gICAgICAgICdzaG93Q29tcGFzcyBzaG93Q3VyYXRvckNvbXBhc3Mgc2hvd0dQUyBzaG93SFVEIHNob3dMZWdlbmQgc2hvd01hcCBzaG93bkFydGlsbGVyeUNvbXB1dGVyICcgK1xuICAgICAgICAnc2hvd25DaGF0IHNob3duQ29tcGFzcyBzaG93bkN1cmF0b3JDb21wYXNzIHNob3dOZXdFZGl0b3JPYmplY3Qgc2hvd25HUFMgc2hvd25IVUQgc2hvd25NYXAgJyArXG4gICAgICAgICdzaG93blBhZCBzaG93blJhZGlvIHNob3duU2NvcmV0YWJsZSBzaG93blVBVkZlZWQgc2hvd25XYXJyYW50IHNob3duV2F0Y2ggc2hvd1BhZCBzaG93UmFkaW8gJyArXG4gICAgICAgICdzaG93U2NvcmV0YWJsZSBzaG93U3VidGl0bGVzIHNob3dVQVZGZWVkIHNob3dXYXJyYW50IHNob3dXYXRjaCBzaG93V2F5cG9pbnQgc2hvd1dheXBvaW50cyBzaWRlICcgK1xuICAgICAgICAnc2lkZUNoYXQgc2lkZUVuZW15IHNpZGVGcmllbmRseSBzaWRlUmFkaW8gc2ltcGxlVGFza3Mgc2ltdWxhdGlvbkVuYWJsZWQgc2ltdWxDbG91ZERlbnNpdHkgJyArXG4gICAgICAgICdzaW11bENsb3VkT2NjbHVzaW9uIHNpbXVsSW5DbG91ZHMgc2ltdWxXZWF0aGVyU3luYyBzaW4gc2l6ZSBzaXplT2Ygc2tpbGwgc2tpbGxGaW5hbCBza2lwVGltZSAnICtcbiAgICAgICAgJ3NsZWVwIHNsaWRlclBvc2l0aW9uIHNsaWRlclJhbmdlIHNsaWRlclNldFBvc2l0aW9uIHNsaWRlclNldFJhbmdlIHNsaWRlclNldFNwZWVkIHNsaWRlclNwZWVkICcgK1xuICAgICAgICAnc2xpbmdMb2FkQXNzaXN0YW50U2hvd24gc29sZGllck1hZ2F6aW5lcyBzb21lQW1tbyBzb3J0IHNvdW5kVm9sdW1lIHNwYXduIHNwZWFrZXIgc3BlZWQgc3BlZWRNb2RlICcgK1xuICAgICAgICAnc3BsaXRTdHJpbmcgc3FydCBzcXVhZFBhcmFtcyBzdGFuY2Ugc3RhcnRMb2FkaW5nU2NyZWVuIHN0ZXAgc3RvcCBzdG9wRW5naW5lUlREIHN0b3BwZWQgc3RyICcgK1xuICAgICAgICAnc3VuT3JNb29uIHN1cHBvcnRJbmZvIHN1cHByZXNzRm9yIHN1cmZhY2VJc1dhdGVyIHN1cmZhY2VOb3JtYWwgc3VyZmFjZVR5cGUgc3dpbUluRGVwdGggJyArXG4gICAgICAgICdzd2l0Y2hhYmxlVW5pdHMgc3dpdGNoQWN0aW9uIHN3aXRjaENhbWVyYSBzd2l0Y2hHZXN0dXJlIHN3aXRjaExpZ2h0IHN3aXRjaE1vdmUgJyArXG4gICAgICAgICdzeW5jaHJvbml6ZWRPYmplY3RzIHN5bmNocm9uaXplZFRyaWdnZXJzIHN5bmNocm9uaXplZFdheXBvaW50cyBzeW5jaHJvbml6ZU9iamVjdHNBZGQgJyArXG4gICAgICAgICdzeW5jaHJvbml6ZU9iamVjdHNSZW1vdmUgc3luY2hyb25pemVUcmlnZ2VyIHN5bmNocm9uaXplV2F5cG9pbnQgc3lzdGVtQ2hhdCBzeXN0ZW1PZlVuaXRzIHRhbiAnICtcbiAgICAgICAgJ3RhcmdldEtub3dsZWRnZSB0YXJnZXRzIHRhcmdldHNBZ2dyZWdhdGUgdGFyZ2V0c1F1ZXJ5IHRhc2tBbHdheXNWaXNpYmxlIHRhc2tDaGlsZHJlbiAnICtcbiAgICAgICAgJ3Rhc2tDb21wbGV0ZWQgdGFza0N1c3RvbURhdGEgdGFza0Rlc2NyaXB0aW9uIHRhc2tEZXN0aW5hdGlvbiB0YXNrSGludCB0YXNrTWFya2VyT2Zmc2V0IHRhc2tQYXJlbnQgJyArXG4gICAgICAgICd0YXNrUmVzdWx0IHRhc2tTdGF0ZSB0YXNrVHlwZSB0ZWFtTWVtYmVyIHRlYW1OYW1lIHRlYW1zIHRlYW1Td2l0Y2ggdGVhbVN3aXRjaEVuYWJsZWQgdGVhbVR5cGUgJyArXG4gICAgICAgICd0ZXJtaW5hdGUgdGVycmFpbkludGVyc2VjdCB0ZXJyYWluSW50ZXJzZWN0QVNMIHRlcnJhaW5JbnRlcnNlY3RBdEFTTCB0ZXh0IHRleHRMb2cgdGV4dExvZ0Zvcm1hdCAnICtcbiAgICAgICAgJ3RnIHRpbWUgdGltZU11bHRpcGxpZXIgdGl0bGVDdXQgdGl0bGVGYWRlT3V0IHRpdGxlT2JqIHRpdGxlUnNjIHRpdGxlVGV4dCB0b0FycmF5IHRvRml4ZWQgdG9Mb3dlciAnICtcbiAgICAgICAgJ3RvU3RyaW5nIHRvVXBwZXIgdHJpZ2dlckFjdGl2YXRlZCB0cmlnZ2VyQWN0aXZhdGlvbiB0cmlnZ2VyQXJlYSB0cmlnZ2VyQXR0YWNoZWRWZWhpY2xlICcgK1xuICAgICAgICAndHJpZ2dlckF0dGFjaE9iamVjdCB0cmlnZ2VyQXR0YWNoVmVoaWNsZSB0cmlnZ2VyRHluYW1pY1NpbXVsYXRpb24gdHJpZ2dlclN0YXRlbWVudHMgdHJpZ2dlclRleHQgJyArXG4gICAgICAgICd0cmlnZ2VyVGltZW91dCB0cmlnZ2VyVGltZW91dEN1cnJlbnQgdHJpZ2dlclR5cGUgdHVycmV0TG9jYWwgdHVycmV0T3duZXIgdHVycmV0VW5pdCB0dkFkZCB0dkNsZWFyICcgK1xuICAgICAgICAndHZDb2xsYXBzZSB0dkNvbGxhcHNlQWxsIHR2Q291bnQgdHZDdXJTZWwgdHZEYXRhIHR2RGVsZXRlIHR2RXhwYW5kIHR2RXhwYW5kQWxsIHR2UGljdHVyZSAnICtcbiAgICAgICAgJ3R2U2V0Q29sb3IgdHZTZXRDdXJTZWwgdHZTZXREYXRhIHR2U2V0UGljdHVyZSB0dlNldFBpY3R1cmVDb2xvciB0dlNldFBpY3R1cmVDb2xvckRpc2FibGVkICcgK1xuICAgICAgICAndHZTZXRQaWN0dXJlQ29sb3JTZWxlY3RlZCB0dlNldFBpY3R1cmVSaWdodCB0dlNldFBpY3R1cmVSaWdodENvbG9yIHR2U2V0UGljdHVyZVJpZ2h0Q29sb3JEaXNhYmxlZCAnICtcbiAgICAgICAgJ3R2U2V0UGljdHVyZVJpZ2h0Q29sb3JTZWxlY3RlZCB0dlNldFRleHQgdHZTZXRUb29sdGlwIHR2U2V0VmFsdWUgdHZTb3J0IHR2U29ydEJ5VmFsdWUgdHZUZXh0ICcgK1xuICAgICAgICAndHZUb29sdGlwIHR2VmFsdWUgdHlwZSB0eXBlTmFtZSB0eXBlT2YgVUFWQ29udHJvbCB1aU5hbWVzcGFjZSB1aVNsZWVwIHVuYXNzaWduQ3VyYXRvciAnICtcbiAgICAgICAgJ3VuYXNzaWduSXRlbSB1bmFzc2lnblRlYW0gdW5hc3NpZ25WZWhpY2xlIHVuZGVyd2F0ZXIgdW5pZm9ybSB1bmlmb3JtQ29udGFpbmVyIHVuaWZvcm1JdGVtcyAnICtcbiAgICAgICAgJ3VuaWZvcm1NYWdhemluZXMgdW5pdEFkZG9ucyB1bml0QWltUG9zaXRpb24gdW5pdEFpbVBvc2l0aW9uVmlzdWFsIHVuaXRCYWNrcGFjayB1bml0SXNVQVYgdW5pdFBvcyAnICtcbiAgICAgICAgJ3VuaXRSZWFkeSB1bml0UmVjb2lsQ29lZmZpY2llbnQgdW5pdHMgdW5pdHNCZWxvd0hlaWdodCB1bmxpbmtJdGVtIHVubG9ja0FjaGlldmVtZW50ICcgK1xuICAgICAgICAndW5yZWdpc3RlclRhc2sgdXBkYXRlRHJhd0ljb24gdXBkYXRlTWVudUl0ZW0gdXBkYXRlT2JqZWN0VHJlZSB1c2VBSVN0ZWVyaW5nQ29tcG9uZW50ICcgK1xuICAgICAgICAndXNlQXVkaW9UaW1lRm9yTW92ZXMgdXNlcklucHV0RGlzYWJsZWQgdmVjdG9yQWRkIHZlY3RvckNvcyB2ZWN0b3JDcm9zc1Byb2R1Y3QgdmVjdG9yRGlmZiAnICtcbiAgICAgICAgJ3ZlY3RvckRpciB2ZWN0b3JEaXJWaXN1YWwgdmVjdG9yRGlzdGFuY2UgdmVjdG9yRGlzdGFuY2VTcXIgdmVjdG9yRG90UHJvZHVjdCB2ZWN0b3JGcm9tVG8gJyArXG4gICAgICAgICd2ZWN0b3JNYWduaXR1ZGUgdmVjdG9yTWFnbml0dWRlU3FyIHZlY3Rvck1vZGVsVG9Xb3JsZCB2ZWN0b3JNb2RlbFRvV29ybGRWaXN1YWwgdmVjdG9yTXVsdGlwbHkgJyArXG4gICAgICAgICd2ZWN0b3JOb3JtYWxpemVkIHZlY3RvclVwIHZlY3RvclVwVmlzdWFsIHZlY3RvcldvcmxkVG9Nb2RlbCB2ZWN0b3JXb3JsZFRvTW9kZWxWaXN1YWwgdmVoaWNsZSAnICtcbiAgICAgICAgJ3ZlaGljbGVDYXJnb0VuYWJsZWQgdmVoaWNsZUNoYXQgdmVoaWNsZVJhZGlvIHZlaGljbGVSZWNlaXZlUmVtb3RlVGFyZ2V0cyB2ZWhpY2xlUmVwb3J0T3duUG9zaXRpb24gJyArXG4gICAgICAgICd2ZWhpY2xlUmVwb3J0UmVtb3RlVGFyZ2V0cyB2ZWhpY2xlcyB2ZWhpY2xlVmFyTmFtZSB2ZWxvY2l0eSB2ZWxvY2l0eU1vZGVsU3BhY2UgdmVyaWZ5U2lnbmF0dXJlICcgK1xuICAgICAgICAndmVzdCB2ZXN0Q29udGFpbmVyIHZlc3RJdGVtcyB2ZXN0TWFnYXppbmVzIHZpZXdEaXN0YW5jZSB2aXNpYmxlQ29tcGFzcyB2aXNpYmxlR1BTIHZpc2libGVNYXAgJyArXG4gICAgICAgICd2aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQVNMIHZpc2libGVTY29yZXRhYmxlIHZpc2libGVXYXRjaCB3YXZlcyB3YXlwb2ludEF0dGFjaGVkT2JqZWN0ICcgK1xuICAgICAgICAnd2F5cG9pbnRBdHRhY2hlZFZlaGljbGUgd2F5cG9pbnRBdHRhY2hPYmplY3Qgd2F5cG9pbnRBdHRhY2hWZWhpY2xlIHdheXBvaW50QmVoYXZpb3VyICcgK1xuICAgICAgICAnd2F5cG9pbnRDb21iYXRNb2RlIHdheXBvaW50Q29tcGxldGlvblJhZGl1cyB3YXlwb2ludERlc2NyaXB0aW9uIHdheXBvaW50Rm9yY2VCZWhhdmlvdXIgJyArXG4gICAgICAgICd3YXlwb2ludEZvcm1hdGlvbiB3YXlwb2ludEhvdXNlUG9zaXRpb24gd2F5cG9pbnRMb2l0ZXJSYWRpdXMgd2F5cG9pbnRMb2l0ZXJUeXBlIHdheXBvaW50TmFtZSAnICtcbiAgICAgICAgJ3dheXBvaW50UG9zaXRpb24gd2F5cG9pbnRzIHdheXBvaW50U2NyaXB0IHdheXBvaW50c0VuYWJsZWRVQVYgd2F5cG9pbnRTaG93IHdheXBvaW50U3BlZWQgJyArXG4gICAgICAgICd3YXlwb2ludFN0YXRlbWVudHMgd2F5cG9pbnRUaW1lb3V0IHdheXBvaW50VGltZW91dEN1cnJlbnQgd2F5cG9pbnRUeXBlIHdheXBvaW50VmlzaWJsZSAnICtcbiAgICAgICAgJ3dlYXBvbkFjY2Vzc29yaWVzIHdlYXBvbkFjY2Vzc29yaWVzQ2FyZ28gd2VhcG9uQ2FyZ28gd2VhcG9uRGlyZWN0aW9uIHdlYXBvbkluZXJ0aWEgd2VhcG9uTG93ZXJlZCAnICtcbiAgICAgICAgJ3dlYXBvbnMgd2VhcG9uc0l0ZW1zIHdlYXBvbnNJdGVtc0NhcmdvIHdlYXBvblN0YXRlIHdlYXBvbnNUdXJyZXQgd2VpZ2h0UlREIFdGU2lkZVRleHQgd2luZCAnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ2JsdWZvciBjaXZpbGlhbiBjb25maWdOdWxsIGNvbnRyb2xOdWxsIGRpc3BsYXlOdWxsIGVhc3QgZW5kbCBmYWxzZSBncnBOdWxsIGluZGVwZW5kZW50IGxpbmVCcmVhayAnICtcbiAgICAgICAgJ2xvY2F0aW9uTnVsbCBuaWwgb2JqTnVsbCBvcGZvciBwaSByZXNpc3RhbmNlIHNjcmlwdE51bGwgc2lkZUFtYmllbnRMaWZlIHNpZGVFbXB0eSBzaWRlTG9naWMgJyArXG4gICAgICAgICdzaWRlVW5rbm93biB0YXNrTnVsbCB0ZWFtTWVtYmVyTnVsbCB0cnVlIHdlc3QnLFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBGVU5DVElPTixcbiAgICAgIFNUUklOR1MsXG4gICAgICBQUkVQUk9DRVNTT1JcbiAgICBdLFxuICAgIGlsbGVnYWw6IC8jfF5cXCQgL1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgaWxsZWdhbDogL1s8Pnt9Kl0vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6XG4gICAgICAgICAgJ2JlZ2luIGVuZCBzdGFydCBjb21taXQgcm9sbGJhY2sgc2F2ZXBvaW50IGxvY2sgYWx0ZXIgY3JlYXRlIGRyb3AgcmVuYW1lIGNhbGwgJyArXG4gICAgICAgICAgJ2RlbGV0ZSBkbyBoYW5kbGVyIGluc2VydCBsb2FkIHJlcGxhY2Ugc2VsZWN0IHRydW5jYXRlIHVwZGF0ZSBzZXQgc2hvdyBwcmFnbWEgZ3JhbnQgJyArXG4gICAgICAgICAgJ21lcmdlIGRlc2NyaWJlIHVzZSBleHBsYWluIGhlbHAgZGVjbGFyZSBwcmVwYXJlIGV4ZWN1dGUgZGVhbGxvY2F0ZSByZWxlYXNlICcgK1xuICAgICAgICAgICd1bmxvY2sgcHVyZ2UgcmVzZXQgY2hhbmdlIHN0b3AgYW5hbHl6ZSBjYWNoZSBmbHVzaCBvcHRpbWl6ZSByZXBhaXIga2lsbCAnICtcbiAgICAgICAgICAnaW5zdGFsbCB1bmluc3RhbGwgY2hlY2tzdW0gcmVzdG9yZSBjaGVjayBiYWNrdXAgcmV2b2tlIGNvbW1lbnQgdmFsdWVzIHdpdGgnLFxuICAgICAgICBlbmQ6IC87LywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIGxleGVtZXM6IC9bXFx3XFwuXSsvLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAnYXMgYWJvcnQgYWJzIGFic29sdXRlIGFjYyBhY2NlIGFjY2VwIGFjY2VwdCBhY2Nlc3MgYWNjZXNzZWQgYWNjZXNzaWJsZSBhY2NvdW50IGFjb3MgYWN0aW9uIGFjdGl2YXRlIGFkZCAnICtcbiAgICAgICAgICAgICdhZGR0aW1lIGFkbWluIGFkbWluaXN0ZXIgYWR2YW5jZWQgYWR2aXNlIGFlc19kZWNyeXB0IGFlc19lbmNyeXB0IGFmdGVyIGFnZW50IGFnZ3JlZ2F0ZSBhbGkgYWxpYSBhbGlhcyAnICtcbiAgICAgICAgICAgICdhbGwgYWxsb2NhdGUgYWxsb3cgYWx0ZXIgYWx3YXlzIGFuYWx5emUgYW5jaWxsYXJ5IGFuZCBhbnRpIGFueSBhbnlkYXRhIGFueWRhdGFzZXQgYW55c2NoZW1hIGFueXR5cGUgYXBwbHkgJyArXG4gICAgICAgICAgICAnYXJjaGl2ZSBhcmNoaXZlZCBhcmNoaXZlbG9nIGFyZSBhcyBhc2MgYXNjaWkgYXNpbiBhc3NlbWJseSBhc3NlcnRpb24gYXNzb2NpYXRlIGFzeW5jaHJvbm91cyBhdCBhdGFuICcgK1xuICAgICAgICAgICAgJ2F0bjIgYXR0ciBhdHRyaSBhdHRyaWIgYXR0cmlidSBhdHRyaWJ1dCBhdHRyaWJ1dGUgYXR0cmlidXRlcyBhdWRpdCBhdXRoZW50aWNhdGVkIGF1dGhlbnRpY2F0aW9uIGF1dGhpZCAnICtcbiAgICAgICAgICAgICdhdXRob3JzIGF1dG8gYXV0b2FsbG9jYXRlIGF1dG9kYmxpbmsgYXV0b2V4dGVuZCBhdXRvbWF0aWMgYXZhaWxhYmlsaXR5IGF2ZyBiYWNrdXAgYmFkZmlsZSBiYXNpY2ZpbGUgJyArXG4gICAgICAgICAgICAnYmVmb3JlIGJlZ2luIGJlZ2lubmluZyBiZW5jaG1hcmsgYmV0d2VlbiBiZmlsZSBiZmlsZV9iYXNlIGJpZyBiaWdmaWxlIGJpbiBiaW5hcnlfZG91YmxlIGJpbmFyeV9mbG9hdCAnICtcbiAgICAgICAgICAgICdiaW5sb2cgYml0X2FuZCBiaXRfY291bnQgYml0X2xlbmd0aCBiaXRfb3IgYml0X3hvciBiaXRtYXAgYmxvYl9iYXNlIGJsb2NrIGJsb2Nrc2l6ZSBib2R5IGJvdGggYm91bmQgJyArXG4gICAgICAgICAgICAnYnVja2V0IGJ1ZmZlcl9jYWNoZSBidWZmZXJfcG9vbCBidWlsZCBidWxrIGJ5IGJ5dGUgYnl0ZW9yZGVybWFyayBieXRlcyBjYWNoZSBjYWNoaW5nIGNhbGwgY2FsbGluZyBjYW5jZWwgJyArXG4gICAgICAgICAgICAnY2FwYWNpdHkgY2FzY2FkZSBjYXNjYWRlZCBjYXNlIGNhc3QgY2F0YWxvZyBjYXRlZ29yeSBjZWlsIGNlaWxpbmcgY2hhaW4gY2hhbmdlIGNoYW5nZWQgY2hhcl9iYXNlICcgK1xuICAgICAgICAgICAgJ2NoYXJfbGVuZ3RoIGNoYXJhY3Rlcl9sZW5ndGggY2hhcmFjdGVycyBjaGFyYWN0ZXJzZXQgY2hhcmluZGV4IGNoYXJzZXQgY2hhcnNldGZvcm0gY2hhcnNldGlkIGNoZWNrICcgK1xuICAgICAgICAgICAgJ2NoZWNrc3VtIGNoZWNrc3VtX2FnZyBjaGlsZCBjaG9vc2UgY2hyIGNodW5rIGNsYXNzIGNsZWFudXAgY2xlYXIgY2xpZW50IGNsb2IgY2xvYl9iYXNlIGNsb25lIGNsb3NlICcgK1xuICAgICAgICAgICAgJ2NsdXN0ZXJfaWQgY2x1c3Rlcl9wcm9iYWJpbGl0eSBjbHVzdGVyX3NldCBjbHVzdGVyaW5nIGNvYWxlc2NlIGNvZXJjaWJpbGl0eSBjb2wgY29sbGF0ZSBjb2xsYXRpb24gJyArXG4gICAgICAgICAgICAnY29sbGVjdCBjb2x1IGNvbHVtIGNvbHVtbiBjb2x1bW5fdmFsdWUgY29sdW1ucyBjb2x1bW5zX3VwZGF0ZWQgY29tbWVudCBjb21taXQgY29tcGFjdCBjb21wYXRpYmlsaXR5ICcgK1xuICAgICAgICAgICAgJ2NvbXBpbGVkIGNvbXBsZXRlIGNvbXBvc2l0ZV9saW1pdCBjb21wb3VuZCBjb21wcmVzcyBjb21wdXRlIGNvbmNhdCBjb25jYXRfd3MgY29uY3VycmVudCBjb25maXJtIGNvbm4gJyArXG4gICAgICAgICAgICAnY29ubmVjIGNvbm5lY3QgY29ubmVjdF9ieV9pc2N5Y2xlIGNvbm5lY3RfYnlfaXNsZWFmIGNvbm5lY3RfYnlfcm9vdCBjb25uZWN0X3RpbWUgY29ubmVjdGlvbiAnICtcbiAgICAgICAgICAgICdjb25zaWRlciBjb25zaXN0ZW50IGNvbnN0YW50IGNvbnN0cmFpbnQgY29uc3RyYWludHMgY29uc3RydWN0b3IgY29udGFpbmVyIGNvbnRlbnQgY29udGVudHMgY29udGV4dCAnICtcbiAgICAgICAgICAgICdjb250cmlidXRvcnMgY29udHJvbGZpbGUgY29udiBjb252ZXJ0IGNvbnZlcnRfdHogY29yciBjb3JyX2sgY29ycl9zIGNvcnJlc3BvbmRpbmcgY29ycnVwdGlvbiBjb3MgY29zdCAnICtcbiAgICAgICAgICAgICdjb3VudCBjb3VudF9iaWcgY291bnRlZCBjb3Zhcl9wb3AgY292YXJfc2FtcCBjcHVfcGVyX2NhbGwgY3B1X3Blcl9zZXNzaW9uIGNyYzMyIGNyZWF0ZSBjcmVhdGlvbiAnICtcbiAgICAgICAgICAgICdjcml0aWNhbCBjcm9zcyBjdWJlIGN1bWVfZGlzdCBjdXJkYXRlIGN1cnJlbnQgY3VycmVudF9kYXRlIGN1cnJlbnRfdGltZSBjdXJyZW50X3RpbWVzdGFtcCBjdXJyZW50X3VzZXIgJyArXG4gICAgICAgICAgICAnY3Vyc29yIGN1cnRpbWUgY3VzdG9tZGF0dW0gY3ljbGUgZGF0YSBkYXRhYmFzZSBkYXRhYmFzZXMgZGF0YWZpbGUgZGF0YWZpbGVzIGRhdGFsZW5ndGggZGF0ZV9hZGQgJyArXG4gICAgICAgICAgICAnZGF0ZV9jYWNoZSBkYXRlX2Zvcm1hdCBkYXRlX3N1YiBkYXRlYWRkIGRhdGVkaWZmIGRhdGVmcm9tcGFydHMgZGF0ZW5hbWUgZGF0ZXBhcnQgZGF0ZXRpbWUyZnJvbXBhcnRzICcgK1xuICAgICAgICAgICAgJ2RheSBkYXlfdG9fc2Vjb25kIGRheW5hbWUgZGF5b2Ztb250aCBkYXlvZndlZWsgZGF5b2Z5ZWFyIGRheXMgZGJfcm9sZV9jaGFuZ2UgZGJ0aW1lem9uZSBkZGwgZGVhbGxvY2F0ZSAnICtcbiAgICAgICAgICAgICdkZWNsYXJlIGRlY29kZSBkZWNvbXBvc2UgZGVjcmVtZW50IGRlY3J5cHQgZGVkdXBsaWNhdGUgZGVmIGRlZmEgZGVmYXUgZGVmYXVsIGRlZmF1bHQgZGVmYXVsdHMgJyArXG4gICAgICAgICAgICAnZGVmZXJyZWQgZGVmaSBkZWZpbiBkZWZpbmUgZGVncmVlcyBkZWxheWVkIGRlbGVnYXRlIGRlbGV0ZSBkZWxldGVfYWxsIGRlbGltaXRlZCBkZW1hbmQgZGVuc2VfcmFuayAnICtcbiAgICAgICAgICAgICdkZXB0aCBkZXF1ZXVlIGRlc19kZWNyeXB0IGRlc19lbmNyeXB0IGRlc19rZXlfZmlsZSBkZXNjIGRlc2NyIGRlc2NyaSBkZXNjcmliIGRlc2NyaWJlIGRlc2NyaXB0b3IgJyArXG4gICAgICAgICAgICAnZGV0ZXJtaW5pc3RpYyBkaWFnbm9zdGljcyBkaWZmZXJlbmNlIGRpbWVuc2lvbiBkaXJlY3RfbG9hZCBkaXJlY3RvcnkgZGlzYWJsZSBkaXNhYmxlX2FsbCAnICtcbiAgICAgICAgICAgICdkaXNhbGxvdyBkaXNhc3NvY2lhdGUgZGlzY2FyZGZpbGUgZGlzY29ubmVjdCBkaXNrZ3JvdXAgZGlzdGluY3QgZGlzdGluY3Ryb3cgZGlzdHJpYnV0ZSBkaXN0cmlidXRlZCBkaXYgJyArXG4gICAgICAgICAgICAnZG8gZG9jdW1lbnQgZG9tYWluIGRvdG5ldCBkb3VibGUgZG93bmdyYWRlIGRyb3AgZHVtcGZpbGUgZHVwbGljYXRlIGR1cmF0aW9uIGVhY2ggZWRpdGlvbiBlZGl0aW9uYWJsZSAnICtcbiAgICAgICAgICAgICdlZGl0aW9ucyBlbGVtZW50IGVsbGlwc2lzIGVsc2UgZWxzaWYgZWx0IGVtcHR5IGVuYWJsZSBlbmFibGVfYWxsIGVuY2xvc2VkIGVuY29kZSBlbmNvZGluZyBlbmNyeXB0ICcgK1xuICAgICAgICAgICAgJ2VuZCBlbmQtZXhlYyBlbmRpYW4gZW5mb3JjZWQgZW5naW5lIGVuZ2luZXMgZW5xdWV1ZSBlbnRlcnByaXNlIGVudGl0eWVzY2FwaW5nIGVvbW9udGggZXJyb3IgZXJyb3JzICcgK1xuICAgICAgICAgICAgJ2VzY2FwZWQgZXZhbG5hbWUgZXZhbHVhdGUgZXZlbnQgZXZlbnRkYXRhIGV2ZW50cyBleGNlcHQgZXhjZXB0aW9uIGV4Y2VwdGlvbnMgZXhjaGFuZ2UgZXhjbHVkZSBleGNsdWRpbmcgJyArXG4gICAgICAgICAgICAnZXhlY3UgZXhlY3V0IGV4ZWN1dGUgZXhlbXB0IGV4aXN0cyBleGl0IGV4cCBleHBpcmUgZXhwbGFpbiBleHBsb2RlIGV4cG9ydCBleHBvcnRfc2V0IGV4dGVuZGVkIGV4dGVudCBleHRlcm5hbCAnICtcbiAgICAgICAgICAgICdleHRlcm5hbF8xIGV4dGVybmFsXzIgZXh0ZXJuYWxseSBleHRyYWN0IGZhaWxlZCBmYWlsZWRfbG9naW5fYXR0ZW1wdHMgZmFpbG92ZXIgZmFpbHVyZSBmYXIgZmFzdCAnICtcbiAgICAgICAgICAgICdmZWF0dXJlX3NldCBmZWF0dXJlX3ZhbHVlIGZldGNoIGZpZWxkIGZpZWxkcyBmaWxlIGZpbGVfbmFtZV9jb252ZXJ0IGZpbGVzeXN0ZW1fbGlrZV9sb2dnaW5nIGZpbmFsICcgK1xuICAgICAgICAgICAgJ2ZpbmlzaCBmaXJzdCBmaXJzdF92YWx1ZSBmaXhlZCBmbGFzaF9jYWNoZSBmbGFzaGJhY2sgZmxvb3IgZmx1c2ggZm9sbG93aW5nIGZvbGxvd3MgZm9yIGZvcmFsbCBmb3JjZSBmb3JlaWduICcgK1xuICAgICAgICAgICAgJ2Zvcm0gZm9ybWEgZm9ybWF0IGZvdW5kIGZvdW5kX3Jvd3MgZnJlZWxpc3QgZnJlZWxpc3RzIGZyZWVwb29scyBmcmVzaCBmcm9tIGZyb21fYmFzZTY0IGZyb21fZGF5cyAnICtcbiAgICAgICAgICAgICdmdHAgZnVsbCBmdW5jdGlvbiBnZW5lcmFsIGdlbmVyYXRlZCBnZXQgZ2V0X2Zvcm1hdCBnZXRfbG9jayBnZXRkYXRlIGdldHV0Y2RhdGUgZ2xvYmFsIGdsb2JhbF9uYW1lICcgK1xuICAgICAgICAgICAgJ2dsb2JhbGx5IGdvIGdvdG8gZ3JhbnQgZ3JhbnRzIGdyZWF0ZXN0IGdyb3VwIGdyb3VwX2NvbmNhdCBncm91cF9pZCBncm91cGluZyBncm91cGluZ19pZCBncm91cHMgJyArXG4gICAgICAgICAgICAnZ3RpZF9zdWJ0cmFjdCBndWFyYW50ZWUgZ3VhcmQgaGFuZGxlciBoYXNoIGhhc2hrZXlzIGhhdmluZyBoZWEgaGVhZCBoZWFkaSBoZWFkaW4gaGVhZGluZyBoZWFwIGhlbHAgaGV4ICcgK1xuICAgICAgICAgICAgJ2hpZXJhcmNoeSBoaWdoIGhpZ2hfcHJpb3JpdHkgaG9zdHMgaG91ciBob3VycyBodHRwIGlkIGlkZW50X2N1cnJlbnQgaWRlbnRfaW5jciBpZGVudF9zZWVkIGlkZW50aWZpZWQgJyArXG4gICAgICAgICAgICAnaWRlbnRpdHkgaWRsZV90aW1lIGlmIGlmbnVsbCBpZ25vcmUgaWlmIGlsaWtlIGlsbSBpbW1lZGlhdGUgaW1wb3J0IGluIGluY2x1ZGUgaW5jbHVkaW5nIGluY3JlbWVudCAnICtcbiAgICAgICAgICAgICdpbmRleCBpbmRleGVzIGluZGV4aW5nIGluZGV4dHlwZSBpbmRpY2F0b3IgaW5kaWNlcyBpbmV0Nl9hdG9uIGluZXQ2X250b2EgaW5ldF9hdG9uIGluZXRfbnRvYSBpbmZpbGUgJyArXG4gICAgICAgICAgICAnaW5pdGlhbCBpbml0aWFsaXplZCBpbml0aWFsbHkgaW5pdHJhbnMgaW5tZW1vcnkgaW5uZXIgaW5ub2RiIGlucHV0IGluc2VydCBpbnN0YWxsIGluc3RhbmNlIGluc3RhbnRpYWJsZSAnICtcbiAgICAgICAgICAgICdpbnN0ciBpbnRlcmZhY2UgaW50ZXJsZWF2ZWQgaW50ZXJzZWN0IGludG8gaW52YWxpZGF0ZSBpbnZpc2libGUgaXMgaXNfZnJlZV9sb2NrIGlzX2lwdjQgaXNfaXB2NF9jb21wYXQgJyArXG4gICAgICAgICAgICAnaXNfbm90IGlzX25vdF9udWxsIGlzX3VzZWRfbG9jayBpc2RhdGUgaXNudWxsIGlzb2xhdGlvbiBpdGVyYXRlIGphdmEgam9pbiBqc29uIGpzb25fZXhpc3RzICcgK1xuICAgICAgICAgICAgJ2tlZXAga2VlcF9kdXBsaWNhdGVzIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFyZ2UgbGFzdCBsYXN0X2RheSBsYXN0X2luc2VydF9pZCBsYXN0X3ZhbHVlIGxhdGVyYWwgbGF4IGxjYXNlICcgK1xuICAgICAgICAgICAgJ2xlYWQgbGVhZGluZyBsZWFzdCBsZWF2ZXMgbGVmdCBsZW4gbGVuZ2h0IGxlbmd0aCBsZXNzIGxldmVsIGxldmVscyBsaWJyYXJ5IGxpa2UgbGlrZTIgbGlrZTQgbGlrZWMgbGltaXQgJyArXG4gICAgICAgICAgICAnbGluZXMgbGluayBsaXN0IGxpc3RhZ2cgbGl0dGxlIGxuIGxvYWQgbG9hZF9maWxlIGxvYiBsb2JzIGxvY2FsIGxvY2FsdGltZSBsb2NhbHRpbWVzdGFtcCBsb2NhdGUgJyArXG4gICAgICAgICAgICAnbG9jYXRvciBsb2NrIGxvY2tlZCBsb2cgbG9nMTAgbG9nMiBsb2dmaWxlIGxvZ2ZpbGVzIGxvZ2dpbmcgbG9naWNhbCBsb2dpY2FsX3JlYWRzX3Blcl9jYWxsICcgK1xuICAgICAgICAgICAgJ2xvZ29mZiBsb2dvbiBsb2dzIGxvbmcgbG9vcCBsb3cgbG93X3ByaW9yaXR5IGxvd2VyIGxwYWQgbHJ0cmltIGx0cmltIG1haW4gbWFrZV9zZXQgbWFrZWRhdGUgbWFrZXRpbWUgJyArXG4gICAgICAgICAgICAnbWFuYWdlZCBtYW5hZ2VtZW50IG1hbnVhbCBtYXAgbWFwcGluZyBtYXNrIG1hc3RlciBtYXN0ZXJfcG9zX3dhaXQgbWF0Y2ggbWF0Y2hlZCBtYXRlcmlhbGl6ZWQgbWF4ICcgK1xuICAgICAgICAgICAgJ21heGV4dGVudHMgbWF4aW1pemUgbWF4aW5zdGFuY2VzIG1heGxlbiBtYXhsb2dmaWxlcyBtYXhsb2doaXN0b3J5IG1heGxvZ21lbWJlcnMgbWF4c2l6ZSBtYXh0cmFucyAnICtcbiAgICAgICAgICAgICdtZDUgbWVhc3VyZXMgbWVkaWFuIG1lZGl1bSBtZW1iZXIgbWVtY29tcHJlc3MgbWVtb3J5IG1lcmdlIG1pY3Jvc2Vjb25kIG1pZCBtaWdyYXRpb24gbWluIG1pbmV4dGVudHMgJyArXG4gICAgICAgICAgICAnbWluaW11bSBtaW5pbmcgbWludXMgbWludXRlIG1pbnV0ZXMgbWludmFsdWUgbWlzc2luZyBtb2QgbW9kZSBtb2RlbCBtb2RpZmljYXRpb24gbW9kaWZ5IG1vZHVsZSBtb25pdG9yaW5nIG1vbnRoICcgK1xuICAgICAgICAgICAgJ21vbnRocyBtb3VudCBtb3ZlIG1vdmVtZW50IG11bHRpc2V0IG11dGV4IG5hbWUgbmFtZV9jb25zdCBuYW1lcyBuYW4gbmF0aW9uYWwgbmF0aXZlIG5hdHVyYWwgbmF2IG5jaGFyICcgK1xuICAgICAgICAgICAgJ25jbG9iIG5lc3RlZCBuZXZlciBuZXcgbmV3bGluZSBuZXh0IG5leHR2YWwgbm8gbm9fd3JpdGVfdG9fYmlubG9nIG5vYXJjaGl2ZWxvZyBub2F1ZGl0IG5vYmFkZmlsZSAnICtcbiAgICAgICAgICAgICdub2NoZWNrIG5vY29tcHJlc3Mgbm9jb3B5IG5vY3ljbGUgbm9kZWxheSBub2Rpc2NhcmRmaWxlIG5vZW50aXR5ZXNjYXBpbmcgbm9ndWFyYW50ZWUgbm9rZWVwIG5vbG9nZmlsZSAnICtcbiAgICAgICAgICAgICdub21hcHBpbmcgbm9tYXh2YWx1ZSBub21pbmltaXplIG5vbWludmFsdWUgbm9tb25pdG9yaW5nIG5vbmUgbm9uZWRpdGlvbmFibGUgbm9uc2NoZW1hIG5vb3JkZXIgJyArXG4gICAgICAgICAgICAnbm9wciBub3BybyBub3Byb20gbm9wcm9tcCBub3Byb21wdCBub3JlbHkgbm9yZXNldGxvZ3Mgbm9yZXZlcnNlIG5vcm1hbCBub3Jvd2RlcGVuZGVuY2llcyBub3NjaGVtYWNoZWNrICcgK1xuICAgICAgICAgICAgJ25vc3dpdGNoIG5vdCBub3RoaW5nIG5vdGljZSBub3RudWxsIG5vdHJpbSBub3ZhbGlkYXRlIG5vdyBub3dhaXQgbnRoX3ZhbHVlIG51bGxpZiBudWxscyBudW0gbnVtYiBudW1iZSAnICtcbiAgICAgICAgICAgICdudmFyY2hhciBudmFyY2hhcjIgb2JqZWN0IG9jaWNvbGwgb2NpZGF0ZSBvY2lkYXRldGltZSBvY2lkdXJhdGlvbiBvY2lpbnRlcnZhbCBvY2lsb2Jsb2NhdG9yIG9jaW51bWJlciAnICtcbiAgICAgICAgICAgICdvY2lyZWYgb2NpcmVmY3Vyc29yIG9jaXJvd2lkIG9jaXN0cmluZyBvY2l0eXBlIG9jdCBvY3RldF9sZW5ndGggb2Ygb2ZmIG9mZmxpbmUgb2Zmc2V0IG9pZCBvaWRpbmRleCBvbGQgJyArXG4gICAgICAgICAgICAnb24gb25saW5lIG9ubHkgb3BhcXVlIG9wZW4gb3BlcmF0aW9ucyBvcGVyYXRvciBvcHRpbWFsIG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG9yIG9yYWNsZSBvcmFjbGVfZGF0ZSAnICtcbiAgICAgICAgICAgICdvcmFkYXRhIG9yZCBvcmRhdWRpbyBvcmRkaWNvbSBvcmRkb2Mgb3JkZXIgb3JkaW1hZ2Ugb3JkaW5hbGl0eSBvcmR2aWRlbyBvcmdhbml6YXRpb24gb3JsYW55IG9ybHZhcnkgJyArXG4gICAgICAgICAgICAnb3V0IG91dGVyIG91dGZpbGUgb3V0bGluZSBvdXRwdXQgb3ZlciBvdmVyZmxvdyBvdmVycmlkaW5nIHBhY2thZ2UgcGFkIHBhcmFsbGVsIHBhcmFsbGVsX2VuYWJsZSAnICtcbiAgICAgICAgICAgICdwYXJhbWV0ZXJzIHBhcmVudCBwYXJzZSBwYXJ0aWFsIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc2NhbCBwYXNzaW5nIHBhc3N3b3JkIHBhc3N3b3JkX2dyYWNlX3RpbWUgJyArXG4gICAgICAgICAgICAncGFzc3dvcmRfbG9ja190aW1lIHBhc3N3b3JkX3JldXNlX21heCBwYXNzd29yZF9yZXVzZV90aW1lIHBhc3N3b3JkX3ZlcmlmeV9mdW5jdGlvbiBwYXRjaCBwYXRoIHBhdGluZGV4ICcgK1xuICAgICAgICAgICAgJ3BjdGluY3JlYXNlIHBjdHRocmVzaG9sZCBwY3R1c2VkIHBjdHZlcnNpb24gcGVyY2VudCBwZXJjZW50X3JhbmsgcGVyY2VudGlsZV9jb250IHBlcmNlbnRpbGVfZGlzYyAnICtcbiAgICAgICAgICAgICdwZXJmb3JtYW5jZSBwZXJpb2QgcGVyaW9kX2FkZCBwZXJpb2RfZGlmZiBwZXJtYW5lbnQgcGh5c2ljYWwgcGkgcGlwZSBwaXBlbGluZWQgcGl2b3QgcGx1Z2dhYmxlIHBsdWdpbiAnICtcbiAgICAgICAgICAgICdwb2xpY3kgcG9zaXRpb24gcG9zdF90cmFuc2FjdGlvbiBwb3cgcG93ZXIgcHJhZ21hIHByZWJ1aWx0IHByZWNlZGVzIHByZWNlZGluZyBwcmVjaXNpb24gcHJlZGljdGlvbiAnICtcbiAgICAgICAgICAgICdwcmVkaWN0aW9uX2Nvc3QgcHJlZGljdGlvbl9kZXRhaWxzIHByZWRpY3Rpb25fcHJvYmFiaWxpdHkgcHJlZGljdGlvbl9zZXQgcHJlcGFyZSBwcmVzZW50IHByZXNlcnZlICcgK1xuICAgICAgICAgICAgJ3ByaW9yIHByaW9yaXR5IHByaXZhdGUgcHJpdmF0ZV9zZ2EgcHJpdmlsZWdlcyBwcm9jZWR1cmFsIHByb2NlZHVyZSBwcm9jZWR1cmVfYW5hbHl6ZSBwcm9jZXNzbGlzdCAnICtcbiAgICAgICAgICAgICdwcm9maWxlcyBwcm9qZWN0IHByb21wdCBwcm90ZWN0aW9uIHB1YmxpYyBwdWJsaXNoaW5nc2VydmVybmFtZSBwdXJnZSBxdWFydGVyIHF1ZXJ5IHF1aWNrIHF1aWVzY2UgcXVvdGEgJyArXG4gICAgICAgICAgICAncXVvdGVuYW1lIHJhZGlhbnMgcmFpc2UgcmFuZCByYW5nZSByYW5rIHJhdyByZWFkIHJlYWRzIHJlYWRzaXplIHJlYnVpbGQgcmVjb3JkIHJlY29yZHMgJyArXG4gICAgICAgICAgICAncmVjb3ZlciByZWNvdmVyeSByZWN1cnNpdmUgcmVjeWNsZSByZWRvIHJlZHVjZWQgcmVmIHJlZmVyZW5jZSByZWZlcmVuY2VkIHJlZmVyZW5jZXMgcmVmZXJlbmNpbmcgcmVmcmVzaCAnICtcbiAgICAgICAgICAgICdyZWdleHBfbGlrZSByZWdpc3RlciByZWdyX2F2Z3ggcmVncl9hdmd5IHJlZ3JfY291bnQgcmVncl9pbnRlcmNlcHQgcmVncl9yMiByZWdyX3Nsb3BlIHJlZ3Jfc3h4IHJlZ3Jfc3h5ICcgK1xuICAgICAgICAgICAgJ3JlamVjdCByZWtleSByZWxhdGlvbmFsIHJlbGF0aXZlIHJlbGF5bG9nIHJlbGVhc2UgcmVsZWFzZV9sb2NrIHJlbGllc19vbiByZWxvY2F0ZSByZWx5IHJlbSByZW1haW5kZXIgcmVuYW1lICcgK1xuICAgICAgICAgICAgJ3JlcGFpciByZXBlYXQgcmVwbGFjZSByZXBsaWNhdGUgcmVwbGljYXRpb24gcmVxdWlyZWQgcmVzZXQgcmVzZXRsb2dzIHJlc2l6ZSByZXNvdXJjZSByZXNwZWN0IHJlc3RvcmUgJyArXG4gICAgICAgICAgICAncmVzdHJpY3RlZCByZXN1bHQgcmVzdWx0X2NhY2hlIHJlc3VtYWJsZSByZXN1bWUgcmV0ZW50aW9uIHJldHVybiByZXR1cm5pbmcgcmV0dXJucyByZXVzZSByZXZlcnNlIHJldm9rZSAnICtcbiAgICAgICAgICAgICdyaWdodCBybGlrZSByb2xlIHJvbGVzIHJvbGxiYWNrIHJvbGxpbmcgcm9sbHVwIHJvdW5kIHJvdyByb3dfY291bnQgcm93ZGVwZW5kZW5jaWVzIHJvd2lkIHJvd251bSByb3dzICcgK1xuICAgICAgICAgICAgJ3J0cmltIHJ1bGVzIHNhZmUgc2FsdCBzYW1wbGUgc2F2ZSBzYXZlcG9pbnQgc2IxIHNiMiBzYjQgc2NhbiBzY2hlbWEgc2NoZW1hY2hlY2sgc2NuIHNjb3BlIHNjcm9sbCAnICtcbiAgICAgICAgICAgICdzZG9fZ2VvcmFzdGVyIHNkb190b3BvX2dlb21ldHJ5IHNlYXJjaCBzZWNfdG9fdGltZSBzZWNvbmQgc2Vjb25kcyBzZWN0aW9uIHNlY3VyZWZpbGUgc2VjdXJpdHkgc2VlZCBzZWdtZW50IHNlbGVjdCAnICtcbiAgICAgICAgICAgICdzZWxmIHNlbWkgc2VxdWVuY2Ugc2VxdWVudGlhbCBzZXJpYWxpemFibGUgc2VydmVyIHNlcnZlcmVycm9yIHNlc3Npb24gc2Vzc2lvbl91c2VyIHNlc3Npb25zX3Blcl91c2VyIHNldCAnICtcbiAgICAgICAgICAgICdzZXRzIHNldHRpbmdzIHNoYSBzaGExIHNoYTIgc2hhcmUgc2hhcmVkIHNoYXJlZF9wb29sIHNob3J0IHNob3cgc2hyaW5rIHNodXRkb3duIHNpX2F2ZXJhZ2Vjb2xvciAnICtcbiAgICAgICAgICAgICdzaV9jb2xvcmhpc3RvZ3JhbSBzaV9mZWF0dXJlbGlzdCBzaV9wb3NpdGlvbmFsY29sb3Igc2lfc3RpbGxpbWFnZSBzaV90ZXh0dXJlIHNpYmxpbmdzIHNpZCBzaWduIHNpbiAnICtcbiAgICAgICAgICAgICdzaXplIHNpemVfdCBzaXplcyBza2lwIHNsYXZlIHNsZWVwIHNtYWxsZGF0ZXRpbWVmcm9tcGFydHMgc21hbGxmaWxlIHNuYXBzaG90IHNvbWUgc29uYW1lIHNvcnQgc291bmRleCAnICtcbiAgICAgICAgICAgICdzb3VyY2Ugc3BhY2Ugc3BhcnNlIHNwZmlsZSBzcGxpdCBzcWwgc3FsX2JpZ19yZXN1bHQgc3FsX2J1ZmZlcl9yZXN1bHQgc3FsX2NhY2hlIHNxbF9jYWxjX2ZvdW5kX3Jvd3MgJyArXG4gICAgICAgICAgICAnc3FsX3NtYWxsX3Jlc3VsdCBzcWxfdmFyaWFudF9wcm9wZXJ0eSBzcWxjb2RlIHNxbGRhdGEgc3FsZXJyb3Igc3FsbmFtZSBzcWxzdGF0ZSBzcXJ0IHNxdWFyZSBzdGFuZGFsb25lICcgK1xuICAgICAgICAgICAgJ3N0YW5kYnkgc3RhcnQgc3RhcnRpbmcgc3RhcnR1cCBzdGF0ZW1lbnQgc3RhdGljIHN0YXRpc3RpY3Mgc3RhdHNfYmlub21pYWxfdGVzdCBzdGF0c19jcm9zc3RhYiAnICtcbiAgICAgICAgICAgICdzdGF0c19rc190ZXN0IHN0YXRzX21vZGUgc3RhdHNfbXdfdGVzdCBzdGF0c19vbmVfd2F5X2Fub3ZhIHN0YXRzX3RfdGVzdF8gc3RhdHNfdF90ZXN0X2luZGVwICcgK1xuICAgICAgICAgICAgJ3N0YXRzX3RfdGVzdF9vbmUgc3RhdHNfdF90ZXN0X3BhaXJlZCBzdGF0c193c3JfdGVzdCBzdGF0dXMgc3RkIHN0ZGRldiBzdGRkZXZfcG9wIHN0ZGRldl9zYW1wIHN0ZGV2ICcgK1xuICAgICAgICAgICAgJ3N0b3Agc3RvcmFnZSBzdG9yZSBzdG9yZWQgc3RyIHN0cl90b19kYXRlIHN0cmFpZ2h0X2pvaW4gc3RyY21wIHN0cmljdCBzdHJpbmcgc3RydWN0IHN0dWZmIHN0eWxlIHN1YmRhdGUgJyArXG4gICAgICAgICAgICAnc3VicGFydGl0aW9uIHN1YnBhcnRpdGlvbnMgc3Vic3RpdHV0YWJsZSBzdWJzdHIgc3Vic3RyaW5nIHN1YnRpbWUgc3VidHJpbmdfaW5kZXggc3VidHlwZSBzdWNjZXNzIHN1bSAnICtcbiAgICAgICAgICAgICdzdXNwZW5kIHN3aXRjaCBzd2l0Y2hvZmZzZXQgc3dpdGNob3ZlciBzeW5jIHN5bmNocm9ub3VzIHN5bm9ueW0gc3lzIHN5c194bWxhZ2cgc3lzYXNtIHN5c2F1eCBzeXNkYXRlICcgK1xuICAgICAgICAgICAgJ3N5c2RhdGV0aW1lb2Zmc2V0IHN5c2RiYSBzeXNvcGVyIHN5c3RlbSBzeXN0ZW1fdXNlciBzeXN1dGNkYXRldGltZSB0YWJsZSB0YWJsZXMgdGFibGVzcGFjZSB0YWJsZXNhbXBsZSB0YW4gdGRvICcgK1xuICAgICAgICAgICAgJ3RlbXBsYXRlIHRlbXBvcmFyeSB0ZXJtaW5hdGVkIHRlcnRpYXJ5X3dlaWdodHMgdGVzdCB0aGFuIHRoZW4gdGhyZWFkIHRocm91Z2ggdGllciB0aWVzIHRpbWUgdGltZV9mb3JtYXQgJyArXG4gICAgICAgICAgICAndGltZV96b25lIHRpbWVkaWZmIHRpbWVmcm9tcGFydHMgdGltZW91dCB0aW1lc3RhbXAgdGltZXN0YW1wYWRkIHRpbWVzdGFtcGRpZmYgdGltZXpvbmVfYWJiciAnICtcbiAgICAgICAgICAgICd0aW1lem9uZV9taW51dGUgdGltZXpvbmVfcmVnaW9uIHRvIHRvX2Jhc2U2NCB0b19kYXRlIHRvX2RheXMgdG9fc2Vjb25kcyB0b2RhdGV0aW1lb2Zmc2V0IHRyYWNlIHRyYWNraW5nICcgK1xuICAgICAgICAgICAgJ3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uYWwgdHJhbnNsYXRlIHRyYW5zbGF0aW9uIHRyZWF0IHRyaWdnZXIgdHJpZ2dlcl9uZXN0bGV2ZWwgdHJpZ2dlcnMgdHJpbSB0cnVuY2F0ZSAnICtcbiAgICAgICAgICAgICd0cnlfY2FzdCB0cnlfY29udmVydCB0cnlfcGFyc2UgdHlwZSB1YjEgdWIyIHViNCB1Y2FzZSB1bmFyY2hpdmVkIHVuYm91bmRlZCB1bmNvbXByZXNzICcgK1xuICAgICAgICAgICAgJ3VuZGVyIHVuZG8gdW5oZXggdW5pY29kZSB1bmlmb3JtIHVuaW5zdGFsbCB1bmlvbiB1bmlxdWUgdW5peF90aW1lc3RhbXAgdW5rbm93biB1bmxpbWl0ZWQgdW5sb2NrIHVubmVzdCB1bnBpdm90ICcgK1xuICAgICAgICAgICAgJ3VucmVjb3ZlcmFibGUgdW5zYWZlIHVuc2lnbmVkIHVudGlsIHVudHJ1c3RlZCB1bnVzYWJsZSB1bnVzZWQgdXBkYXRlIHVwZGF0ZWQgdXBncmFkZSB1cHBlZCB1cHBlciB1cHNlcnQgJyArXG4gICAgICAgICAgICAndXJsIHVyb3dpZCB1c2FibGUgdXNhZ2UgdXNlIHVzZV9zdG9yZWRfb3V0bGluZXMgdXNlciB1c2VyX2RhdGEgdXNlcl9yZXNvdXJjZXMgdXNlcnMgdXNpbmcgdXRjX2RhdGUgJyArXG4gICAgICAgICAgICAndXRjX3RpbWVzdGFtcCB1dWlkIHV1aWRfc2hvcnQgdmFsaWRhdGUgdmFsaWRhdGVfcGFzc3dvcmRfc3RyZW5ndGggdmFsaWRhdGlvbiB2YWxpc3QgdmFsdWUgdmFsdWVzIHZhciAnICtcbiAgICAgICAgICAgICd2YXJfc2FtcCB2YXJjaGFyYyB2YXJpIHZhcmlhIHZhcmlhYiB2YXJpYWJsIHZhcmlhYmxlIHZhcmlhYmxlcyB2YXJpYW5jZSB2YXJwIHZhcnJhdyB2YXJyYXdjIHZhcnJheSAnICtcbiAgICAgICAgICAgICd2ZXJpZnkgdmVyc2lvbiB2ZXJzaW9ucyB2aWV3IHZpcnR1YWwgdmlzaWJsZSB2b2lkIHdhaXQgd2FsbGV0IHdhcm5pbmcgd2FybmluZ3Mgd2VlayB3ZWVrZGF5IHdlZWtvZnllYXIgJyArXG4gICAgICAgICAgICAnd2VsbGZvcm1lZCB3aGVuIHdoZW5lIHdoZW5ldiB3aGVuZXZlIHdoZW5ldmVyIHdoZXJlIHdoaWxlIHdoaXRlc3BhY2Ugd2luZG93IHdpdGggd2l0aGluIHdpdGhvdXQgd29yayB3cmFwcGVkICcgK1xuICAgICAgICAgICAgJ3hkYiB4bWwgeG1sYWdnIHhtbGF0dHJpYnV0ZXMgeG1sY2FzdCB4bWxjb2xhdHR2YWwgeG1sZWxlbWVudCB4bWxleGlzdHMgeG1sZm9yZXN0IHhtbGluZGV4IHhtbG5hbWVzcGFjZXMgJyArXG4gICAgICAgICAgICAneG1scGkgeG1scXVlcnkgeG1scm9vdCB4bWxzY2hlbWEgeG1sc2VyaWFsaXplIHhtbHRhYmxlIHhtbHR5cGUgeG9yIHllYXIgeWVhcl90b19tb250aCB5ZWFycyB5ZWFyd2VlaycsXG4gICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5rbm93bicsXG4gICAgICAgICAgYnVpbHRfaW46XG4gICAgICAgICAgICAnYXJyYXkgYmlnaW50IGJpbmFyeSBiaXQgYmxvYiBib29sIGJvb2xlYW4gY2hhciBjaGFyYWN0ZXIgZGF0ZSBkZWMgZGVjaW1hbCBmbG9hdCBpbnQgaW50OCBpbnRlZ2VyIGludGVydmFsIG51bWJlciAnICtcbiAgICAgICAgICAgICdudW1lcmljIHJlYWwgcmVjb3JkIHNlcmlhbCBzZXJpYWw4IHNtYWxsaW50IHRleHQgdGltZSB0aW1lc3RhbXAgdGlueWludCB2YXJjaGFyIHZhcmNoYXIyIHZhcnlpbmcgdm9pZCdcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIHtiZWdpbjogJ1xcJ1xcJyd9XVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwge2JlZ2luOiAnXCJcIid9XVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBDT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIENPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgbGV4ZW1lczogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIC8vIFN0YW4ncyBrZXl3b3Jkc1xuICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAnZm9yIGluIHdoaWxlIHJlcGVhdCB1bnRpbCBpZiB0aGVuIGVsc2UnLFxuICAgICAgICAgIC8vIFN0YW4ncyBwcm9iYWJsaXR5IGRpc3RyaWJ1dGlvbnMgKGxlc3MgYmV0YSBhbmQgZ2FtbWEsIGFzIGNvbW1vbmx5XG4gICAgICAgICAgLy8gdXNlZCBmb3IgcGFyYW1ldGVyIG5hbWVzKS4gU28gZmFyLCBfbG9nIGFuZCBfcm5nIHZhcmlhbnRzIGFyZSBub3RcbiAgICAgICAgICAvLyBpbmNsdWRlZFxuICAgICAgICAgIHN5bWJvbDpcbiAgICAgICAgICAgICdiZXJub3VsbGkgYmVybm91bGxpX2xvZ2l0IGJpbm9taWFsIGJpbm9taWFsX2xvZ2l0ICcgICAgICAgICAgICAgICArXG4gICAgICAgICAgICAnYmV0YV9iaW5vbWlhbCBoeXBlcmdlb21ldHJpYyBjYXRlZ29yaWNhbCBjYXRlZ29yaWNhbF9sb2dpdCAnICAgICAgK1xuICAgICAgICAgICAgJ29yZGVyZWRfbG9naXN0aWMgbmVnX2Jpbm9taWFsIG5lZ19iaW5vbWlhbF8yICcgICAgICAgICAgICAgICAgICAgICtcbiAgICAgICAgICAgICduZWdfYmlub21pYWxfMl9sb2cgcG9pc3NvbiBwb2lzc29uX2xvZyBtdWx0aW5vbWlhbCBub3JtYWwgJyAgICAgICArXG4gICAgICAgICAgICAnZXhwX21vZF9ub3JtYWwgc2tld19ub3JtYWwgc3R1ZGVudF90IGNhdWNoeSBkb3VibGVfZXhwb25lbnRpYWwgJyAgK1xuICAgICAgICAgICAgJ2xvZ2lzdGljIGd1bWJlbCBsb2dub3JtYWwgY2hpX3NxdWFyZSBpbnZfY2hpX3NxdWFyZSAnICAgICAgICAgICAgICtcbiAgICAgICAgICAgICdzY2FsZWRfaW52X2NoaV9zcXVhcmUgZXhwb25lbnRpYWwgaW52X2dhbW1hIHdlaWJ1bGwgZnJlY2hldCAnICAgICArXG4gICAgICAgICAgICAncmF5bGVpZ2ggd2llbmVyIHBhcmV0byBwYXJldG9fdHlwZV8yIHZvbl9taXNlcyB1bmlmb3JtICcgICAgICAgICAgK1xuICAgICAgICAgICAgJ211bHRpX25vcm1hbCBtdWx0aV9ub3JtYWxfcHJlYyBtdWx0aV9ub3JtYWxfY2hvbGVza3kgbXVsdGlfZ3AgJyAgICtcbiAgICAgICAgICAgICdtdWx0aV9ncF9jaG9sZXNreSBtdWx0aV9zdHVkZW50X3QgZ2F1c3NpYW5fZGxtX29icyBkaXJpY2hsZXQgJyAgICArXG4gICAgICAgICAgICAnbGtqX2NvcnIgbGtqX2NvcnJfY2hvbGVza3kgd2lzaGFydCBpbnZfd2lzaGFydCcsXG4gICAgICAgICAgLy8gU3RhbidzIGRhdGEgdHlwZXNcbiAgICAgICAgICAnc2VsZWN0b3ItdGFnJzpcbiAgICAgICAgICAgICdpbnQgcmVhbCB2ZWN0b3Igc2ltcGxleCB1bml0X3ZlY3RvciBvcmRlcmVkIHBvc2l0aXZlX29yZGVyZWQgJyAgICArXG4gICAgICAgICAgICAncm93X3ZlY3RvciBtYXRyaXggY2hvbGVza3lfZmFjdG9yX2NvcnIgY2hvbGVza3lfZmFjdG9yX2NvdiAnICAgICAgK1xuICAgICAgICAgICAgJ2NvcnJfbWF0cml4IGNvdl9tYXRyaXgnLFxuICAgICAgICAgIC8vIFN0YW4ncyBtb2RlbCBibG9ja3NcbiAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICdmdW5jdGlvbnMgbW9kZWwgZGF0YSBwYXJhbWV0ZXJzIHF1YW50aXRpZXMgdHJhbnNmb3JtZWQgJyAgICAgICAgICArXG4gICAgICAgICAgICAnZ2VuZXJhdGVkJyxcbiAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgJ3RydWUgZmFsc2UnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIFRoZSBiZWxvdyBpcyBhbGwgdGFrZW4gZnJvbSB0aGUgUiBsYW5ndWFnZSBkZWZpbml0aW9uXG4gICAgICB7XG4gICAgICAgIC8vIGhleCB2YWx1ZVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCIwW3hYXVswLTlhLWZBLUZdK1tMaV0/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBoZXggdmFsdWVcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiMFt4WF1bMC05YS1mQS1GXStbTGldP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gZXhwbGljaXQgaW50ZWdlclxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcZCsoPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9MXFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXIgd2l0aCB0cmFpbGluZyBkZWNpbWFsXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxkK1xcXFwuKD8hXFxcXGQpKD86aVxcXFxiKT9cIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXJcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXGQrKD86XFxcXC5cXFxcZCopPyg/OltlRV1bK1xcXFwtXT9cXFxcZCopP2k/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXIgd2l0aCBsZWFkaW5nIGRlY2ltYWxcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXC5cXFxcZCsoPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9pP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvKlxuICBUaGlzIGlzIGEgZm9yayBhbmQgbW9kaWZpY2F0aW9uIG9mIERyZXcgTWNEb25hbGQncyBmaWxlIChodHRwczovL2dpdGh1Yi5jb20vZHJld21jZG9uYWxkL3N0YXRhLWhpZ2hsaWdodGluZykuIEkgaGF2ZSBhbHNvIGluY2x1ZGVkIGEgbGlzdCBvZiBidWlsdGluIGNvbW1hbmRzIGZyb20gaHR0cHM6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTY0Ni5cbiovXG5cbmZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2RvJywgJ2FkbyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6ICdpZiBlbHNlIGluIGZvcmVhY2ggZm9yIGZvcnYgZm9ydmEgZm9ydmFsIGZvcnZhbHUgZm9ydmFsdWUgZm9ydmFsdWVzIGJ5IGJ5cyBieXNvcnQgeGkgcXVpZXRseSBxdWkgY2FwdHVyZSBhYm91dCBhYyBhY183IGFjcHJwbG90IGFjcHJwbG90XzcgYWRqdXN0IGFkbyBhZG9wYXRoIGFkb3VwZGF0ZSBhbHBoYSBhbWVhbnMgYW4gYW5vIGFub3YgYW5vdmEgYW5vdmFfZXN0YXQgYW5vdmFfdGVybXMgYW5vdmFkZWYgYW9yZGVyIGFwIGFwcCBhcHBlIGFwcGVuIGFwcGVuZCBhcmNoIGFyY2hfZHIgYXJjaF9lc3RhdCBhcmNoX3AgYXJjaGxtIGFyZWcgYXJlZ19wIGFyZ3MgYXJpbWEgYXJpbWFfZHIgYXJpbWFfZXN0YXQgYXJpbWFfcCBhcyBhc21wcm9iaXQgYXNtcHJvYml0X2VzdGF0IGFzbXByb2JpdF9sZiBhc21wcm9iaXRfbWZ4X19kbGcgYXNtcHJvYml0X3AgYXNzIGFzc2UgYXNzZXIgYXNzZXJ0IGF2cGxvdCBhdnBsb3RfNyBhdnBsb3RzIGF2cGxvdHNfNyBiY3NrZXcwIGJnb2RmcmV5IGJpYXMgYmlucmVnIGJpcDBfbGYgYmlwbG90IGJpcHBfbGYgYmlwcl9sZiBiaXByX3AgYmlwcm9iaXQgYml0ZXN0IGJpdGVzdGkgYml0b3d0IGJsb2dpdCBibWVtc2l6ZSBib290IGJvb3RzYW1wIGJvb3RzdHJhcCBib290c3RyYXBfOCBib3hjb19sIGJveGNvX3AgYm94Y294IGJveGNveF82IGJveGNveF9wIGJwcm9iaXQgYnIgYnJlYWsgYnJpZXIgYnJvIGJyb3cgYnJvd3MgYnJvd3NlIGJyciBicnJzdGF0IGJzIGJzXzcgYnNhbXBsX3cgYnNhbXBsZSBic2FtcGxlXzcgYnNxcmVnIGJzdGF0IGJzdGF0XzcgYnN0YXRfOCBic3RyYXAgYnN0cmFwXzcgYnViYmxlIGJ1YmJsZXBsb3QgY2EgY2FfZXN0YXQgY2FfcCBjYWJpcGxvdCBjYW1hdCBjYW5vbiBjYW5vbl84IGNhbm9uXzhfcCBjYW5vbl9lc3RhdCBjYW5vbl9wIGNhcCBjYXByb2plY3Rpb24gY2FwdCBjYXB0dSBjYXB0dXIgY2FwdHVyZSBjYXQgY2MgY2NoYXJ0IGNjaGFydF83IGNjaSBjZCBjZW5zb2JzX3RhYmxlIGNlbnRpbGUgY2YgY2hhciBjaGRpciBjaGVja2RsZ2ZpbGVzIGNoZWNrZXN0aW1hdGlvbnNhbXBsZSBjaGVja2hscGZpbGVzIGNoZWNrc3VtIGNoZWxwIGNpIGNpaSBjbCBjbGFzcyBjbGFzc3V0aWwgY2xlYXIgY2xpIGNsaXMgY2xpc3QgY2xvIGNsb2cgY2xvZ19sZiBjbG9nX3AgY2xvZ2kgY2xvZ2lfc3cgY2xvZ2l0IGNsb2dpdF9sZiBjbG9naXRfcCBjbG9naXRwIGNsb2dsX3N3IGNsb2dsb2cgY2xvbmV2YXIgY2xzbGlzdGFycmF5IGNsdXN0ZXIgY2x1c3Rlcl9tZWFzdXJlcyBjbHVzdGVyX3N0b3AgY2x1c3Rlcl90cmVlIGNsdXN0ZXJfdHJlZV84IGNsdXN0ZXJtYXQgY21kbG9nIGNuciBjbnJlIGNucmVnIGNucmVnX3AgY25yZWdfc3cgY25zcmVnIGNvZGVib29rIGNvbGxhcHM0IGNvbGxhcHNlIGNvbG9ybXVsdF9uYiBjb2xvcm11bHRfbncgY29tcGFyZSBjb21wcmVzcyBjb25mIGNvbmZpIGNvbmZpciBjb25maXJtIGNvbnJlbiBjb25zIGNvbnN0IGNvbnN0ciBjb25zdHJhIGNvbnN0cmFpIGNvbnN0cmFpbiBjb25zdHJhaW50IGNvbnRpbnVlIGNvbnRyYWN0IGNvcHkgY29weXJpZ2h0IGNvcHlzb3VyY2UgY29yIGNvcmMgY29yciBjb3JyMmRhdGEgY29ycl9hbnRpIGNvcnJfa21vIGNvcnJfc21jIGNvcnJlIGNvcnJlbCBjb3JyZWxhIGNvcnJlbGF0IGNvcnJlbGF0ZSBjb3JyZ3JhbSBjb3UgY291biBjb3VudCBjb3ggY294X3AgY294X3N3IGNveGJhc2UgY294aGF6IGNveHZhciBjcHJwbG90IGNwcnBsb3RfNyBjcmMgY3JldCBjcmV0dSBjcmV0dXIgY3JldHVybiBjcm9zcyBjcyBjc2NyaXB0IGNzY3JpcHRfbG9nIGNzaSBjdCBjdF9pcyBjdHNldCBjdHN0XzUgY3RzdF9zdCBjdHRvc3QgY3Vtc3AgY3Vtc3BfNyBjdW11bCBjdXN1bSBjdXN1bV83IGN1dGlsIGR8MCBkYXRhc2lnIGRhdGFzaWduIGRhdGFzaWduYSBkYXRhc2lnbmF0IGRhdGFzaWduYXR1IGRhdGFzaWduYXR1ciBkYXRhc2lnbmF0dXJlIGRhdGV0b2YgZGIgZGJldGEgZGUgZGVjIGRlY28gZGVjb2QgZGVjb2RlIGRlZmYgZGVzIGRlc2MgZGVzY3IgZGVzY3JpIGRlc2NyaWIgZGVzY3JpYmUgZGVzdHJpbmcgZGZiZXRhIGRmZ2xzIGRmdWxsZXIgZGkgZGlfZyBkaXIgZGlyc3RhdHMgZGlzIGRpc2NhcmQgZGlzcCBkaXNwX3JlcyBkaXNwX3MgZGlzcGwgZGlzcGxhIGRpc3BsYXkgZGlzdGluY3QgZG8gZG9lIGRvZWQgZG9lZGkgZG9lZGl0IGRvdHBsb3QgZG90cGxvdF83IGRwcm9iaXQgZHJhd25vcm0gZHJvcCBkcyBkc191dGlsIGRzdGRpemUgZHVwbGljYXRlcyBkdXJiaW5hIGR3c3RhdCBkeWR4IGV8MCBlZCBlZGkgZWRpdCBlZ2VuIGVpdnJlZyBlbWRlZiBlbiBlbmMgZW5jbyBlbmNvZCBlbmNvZGUgZXEgZXJhc2UgZXJlZyBlcmVnX2xmIGVyZWdfcCBlcmVnX3N3IGVyZWdoZXQgZXJlZ2hldF9nbGYgZXJlZ2hldF9nbGZfc2ggZXJlZ2hldF9ncCBlcmVnaGV0X2lsZiBlcmVnaGV0X2lsZl9zaCBlcmVnaGV0X2lwIGVyZXQgZXJldHUgZXJldHVyIGVyZXR1cm4gZXJyIGVycm8gZXJyb3IgZXNpemUgZXN0IGVzdF9jZmV4aXN0IGVzdF9jZm5hbWUgZXN0X2NsaWNrYWJsZSBlc3RfZXhwYW5kIGVzdF9ob2xkIGVzdF90YWJsZSBlc3RfdW5ob2xkIGVzdF91bmhvbGRvayBlc3RhdCBlc3RhdF9kZWZhdWx0IGVzdGF0X3N1bW0gZXN0YXRfdmNlX29ubHkgZXN0aSBlc3RpbWF0ZXMgZXRvZG93IGV0b2YgZXRvbWR5IGV4IGV4aSBleGl0IGV4cGFuZCBleHBhbmRjbCBmYWMgZmFjdCBmYWN0byBmYWN0b3IgZmFjdG9yX2VzdGF0IGZhY3Rvcl9wIGZhY3Rvcl9wY2Ffcm90YXRlZCBmYWN0b3Jfcm90YXRlIGZhY3Rvcm1hdCBmY2FzdCBmY2FzdF9jb21wdXRlIGZjYXN0X2dyYXBoIGZkYWRlcyBmZGFkZXNjIGZkYWRlc2NyIGZkYWRlc2NyaSBmZGFkZXNjcmliIGZkYWRlc2NyaWJlIGZkYXNhdiBmZGFzYXZlIGZkYXVzZSBmaF9zdCBmaWxlIG9wZW4gZmlsZSByZWFkIGZpbGUgY2xvc2UgZmlsZSBmaWxlZmlsdGVyIGZpbGxpbiBmaW5kX2hscF9maWxlIGZpbmRmaWxlIGZpbmRpdCBmaW5kaXRfNyBmaXQgZmwgZmxpIGZsaXMgZmxpc3QgZm9yNV8wIGZvcmVzdCBmb3Jlc3RwbG90IGZvcm0gZm9ybWEgZm9ybWF0IGZwcmVkaWN0IGZyYWNfMTU0IGZyYWNfYWRqIGZyYWNfY2hrIGZyYWNfY294IGZyYWNfZGRwIGZyYWNfZGlzIGZyYWNfZHYgZnJhY19pbiBmcmFjX211biBmcmFjX3BwIGZyYWNfcHEgZnJhY19wdiBmcmFjX3dndCBmcmFjX3hvIGZyYWNnZW4gZnJhY3Bsb3QgZnJhY3Bsb3RfNyBmcmFjcG9seSBmcmFjcHJlZCBmcm9uX2V4IGZyb25faG4gZnJvbl9wIGZyb25fdG4gZnJvbl90bjIgZnJvbnRpZXIgZnRvZGF0ZSBmdG9lIGZ0b21keSBmdG93ZGF0ZSBmdW5uZWwgZnVubmVscGxvdCBnfDAgZ2FtaGV0X2dsZiBnYW1oZXRfZ3AgZ2FtaGV0X2lsZiBnYW1oZXRfaXAgZ2FtbWEgZ2FtbWFfZDIgZ2FtbWFfcCBnYW1tYV9zdyBnYW1tYWhldCBnZGlfaGV4YWdvbiBnZGlfc3Bva2VzIGdlIGdlbiBnZW5lIGdlbmVyIGdlbmVyYSBnZW5lcmF0IGdlbmVyYXRlIGdlbnJhbmsgZ2Vuc3RkIGdlbnZtZWFuIGdldHRva2VuIGdsIGdsYWRkZXIgZ2xhZGRlcl83IGdsaW1fbDAxIGdsaW1fbDAyIGdsaW1fbDAzIGdsaW1fbDA0IGdsaW1fbDA1IGdsaW1fbDA2IGdsaW1fbDA3IGdsaW1fbDA4IGdsaW1fbDA5IGdsaW1fbDEwIGdsaW1fbDExIGdsaW1fbDEyIGdsaW1fbGYgZ2xpbV9tdSBnbGltX253MSBnbGltX253MiBnbGltX253MyBnbGltX3AgZ2xpbV92MSBnbGltX3YyIGdsaW1fdjMgZ2xpbV92NCBnbGltX3Y1IGdsaW1fdjYgZ2xpbV92NyBnbG0gZ2xtXzYgZ2xtX3AgZ2xtX3N3IGdsbXByZWQgZ2xvIGdsb2IgZ2xvYmEgZ2xvYmFsIGdsb2dpdCBnbG9naXRfOCBnbG9naXRfcCBnbWVhbnMgZ25icmVfbGYgZ25icmVnIGduYnJlZ181IGduYnJlZ19wIGdvbXBfbGYgZ29tcGVfc3cgZ29tcGVyX3AgZ29tcGVydHogZ29tcGVydHpoZXQgZ29tcGhldF9nbGYgZ29tcGhldF9nbGZfc2ggZ29tcGhldF9ncCBnb21waGV0X2lsZiBnb21waGV0X2lsZl9zaCBnb21waGV0X2lwIGdwaGRvdCBncGhwZW4gZ3BocHJpbnQgZ3ByZWZzIGdwcm9iaV9wIGdwcm9iaXQgZ3Byb2JpdF84IGdyIGdyNyBncl9jb3B5IGdyX2N1cnJlbnQgZ3JfZGIgZ3JfZGVzY3JpYmUgZ3JfZGlyIGdyX2RyYXcgZ3JfZHJhd19yZXBsYXkgZ3JfZHJvcCBncl9lZGl0IGdyX2VkaXR2aWV3b3B0cyBncl9leGFtcGxlIGdyX2V4YW1wbGUyIGdyX2V4cG9ydCBncl9wcmludCBncl9xc2NoZW1lIGdyX3F1ZXJ5IGdyX3JlYWQgZ3JfcmVuYW1lIGdyX3JlcGxheSBncl9zYXZlIGdyX3NldCBncl9zZXRzY2hlbWUgZ3JfdGFibGUgZ3JfdW5kbyBncl91c2UgZ3JhcGggZ3JhcGg3IGdyZWJhciBncmVpZ2VuIGdyZWlnZW5fNyBncmVpZ2VuXzggZ3JtZWFuYnkgZ3JtZWFuYnlfNyBnc19maWxlaW5mbyBnc19maWxldHlwZSBnc19ncmFwaGluZm8gZ3Nfc3RhdCBnc29ydCBnd29vZCBofDAgaGFkaW12byBoYXJlZyBoYXVzbWFuIGhhdmVyIGhlIGhlY2tfZDIgaGVja21hX3AgaGVja21hbiBoZWNrcF9sZiBoZWNrcHJfcCBoZWNrcHJvYiBoZWwgaGVscCBoZXJlZyBoZXRwcl9sZiBoZXRwcl9wIGhldHByb2IgaGV0dGVzdCBoZXhkdW1wIGhpbGl0ZSBoaXN0IGhpc3RfNyBoaXN0b2dyYW0gaGxvZ2l0IGhsdSBobWVhbnMgaG90ZWwgaG90ZWxsaW5nIGhwcm9iaXQgaHJlZyBoc2VhcmNoIGljZDkgaWNkOV9mZiBpY2Q5cCBpaXMgaW1wdXRlIGltdGVzdCBpbmJhc2UgaW5jbHVkZSBpbmYgaW5maSBpbmZpbCBpbmZpbGUgaW5maXggaW5wIGlucHUgaW5wdXQgaW5zIGluc2hlZXQgaW5zcCBpbnNwZSBpbnNwZWMgaW5zcGVjdCBpbnRlZyBpbnRlbiBpbnRyZWcgaW50cmVnXzcgaW50cmVnX3AgaW50cmcyX2xsIGludHJnX2xsIGludHJnX2xsMiBpcG9sYXRlIGlxcmVnIGlyIGlyZiBpcmZfY3JlYXRlIGlyZm0gaXJpIGlzX3N2eSBpc19zdnlzdW0gaXNpZCBpc3RkaXplIGl2cHJvYl8xX2xmIGl2cHJvYl9sZiBpdnByb2JpdCBpdnByb2JpdF9wIGl2cmVnIGl2cmVnX2Zvb3Rub3RlIGl2dG9iXzFfbGYgaXZ0b2JfbGYgaXZ0b2JpdCBpdnRvYml0X3AgamFja2tuaWZlIGphY2tuaWZlIGprbmlmZSBqa25pZmVfNiBqa25pZmVfOCBqa3N0YXQgam9pbmJ5IGthbGFybWExIGthcCBrYXBfMyBrYXBtZWllciBrYXBwYSBrYXB3Z3Qga2RlbnNpdHkga2RlbnNpdHlfNyBrZWVwIGtzbSBrc21pcm5vdiBrdGF1IGt3YWxsaXMgbHwwIGxhIGxhYiBsYWJiZSBsYWJiZXBsb3QgbGFiZSBsYWJlbCBsYWJlbGJvb2sgbGFkZGVyIGxldmVscyBsZXZlbHNvZiBsZXZlcmFnZSBsZml0IGxmaXRfcCBsaSBsaW5jb20gbGluZSBsaW5rdGVzdCBsaXMgbGlzdCBsbG9naGV0X2dsZiBsbG9naGV0X2dsZl9zaCBsbG9naGV0X2dwIGxsb2doZXRfaWxmIGxsb2doZXRfaWxmX3NoIGxsb2doZXRfaXAgbGxvZ2lfc3cgbGxvZ2lzX3AgbGxvZ2lzdCBsbG9naXN0aWMgbGxvZ2lzdGljaGV0IGxub3JtX2xmIGxub3JtX3N3IGxub3JtYV9wIGxub3JtYWwgbG5vcm1hbGhldCBsbm9ybWhldF9nbGYgbG5vcm1oZXRfZ2xmX3NoIGxub3JtaGV0X2dwIGxub3JtaGV0X2lsZiBsbm9ybWhldF9pbGZfc2ggbG5vcm1oZXRfaXAgbG5za2V3MCBsb2FkaW5ncGxvdCBsb2MgbG9jYSBsb2NhbCBsb2cgbG9naSBsb2dpc19sZiBsb2dpc3RpYyBsb2dpc3RpY19wIGxvZ2l0IGxvZ2l0X2VzdGF0IGxvZ2l0X3AgbG9nbG9ncyBsb2dyYW5rIGxvbmV3YXkgbG9va2ZvciBsb29rdXAgbG93ZXNzIGxvd2Vzc183IGxwcmVkaWN0IGxyZWNvbXAgbHJvYyBscm9jXzcgbHJ0ZXN0IGxzIGxzZW5zIGxzZW5zXzcgbHNlbnNfeCBsc3RhdCBsdGFibGUgbHRhYmxlXzcgbHRyaWFuZyBsdiBsdnIycGxvdCBsdnIycGxvdF83IG18MCBtYSBtYWMgbWFjciBtYWNybyBtYWtlY25zIG1hbiBtYW5vdmEgbWFub3ZhX2VzdGF0IG1hbm92YV9wIG1hbm92YXRlc3QgbWFudGVsIG1hcmsgbWFya2luIG1hcmtvdXQgbWFya3NhbXBsZSBtYXQgbWF0X2NhcHAgbWF0X29yZGVyIG1hdF9wdXRfcnIgbWF0X3JhcHAgbWF0YSBtYXRhX2NsZWFyIG1hdGFfZGVzY3JpYmUgbWF0YV9kcm9wIG1hdGFfbWF0ZGVzY3JpYmUgbWF0YV9tYXRzYXZlIG1hdGFfbWF0dXNlIG1hdGFfbWVtb3J5IG1hdGFfbWxpYiBtYXRhX21vc2F2ZSBtYXRhX3JlbmFtZSBtYXRhX3doaWNoIG1hdGFsYWJlbCBtYXRjcHJvYyBtYXRsaXN0IG1hdG5hbWUgbWF0ciBtYXRyaSBtYXRyaXggbWF0cml4X2lucHV0X19kbGcgbWF0c3RyaWsgbWNjIG1jY2kgbWQwXyBtZDFfIG1kMWRlYnVnXyBtZDJfIG1kMmRlYnVnXyBtZHMgbWRzX2VzdGF0IG1kc19wIG1kc2NvbmZpZyBtZHNsb25nIG1kc21hdCBtZHNzaGVwYXJkIG1keXRvZSBtZHl0b2YgbWVfZGVyZCBtZWFuIG1lYW5zIG1lZGlhbiBtZW1vcnkgbWVtc2l6ZSBtZW5sIG1lcXBhcnNlIG1lciBtZXJnIG1lcmdlIG1ldGEgbWZwIG1meCBtaGVscCBtaG9kZHMgbWluYm91bmQgbWl4ZWRfbGwgbWl4ZWRfbGxfcmVwYXJtIG1rYXNzZXJ0IG1rZGlyIG1rbWF0IG1rc3BsaW5lIG1sIG1sXzUgbWxfYWRqcyBtbF9iaGhocyBtbF9jX2QgbWxfY2hlY2sgbWxfY2xlYXIgbWxfY250IG1sX2RlYnVnIG1sX2RlZmQgbWxfZTAgbWxfZTBfYmZncyBtbF9lMF9jeWNsZSBtbF9lMF9kZnAgbWxfZTBpIG1sX2UxIG1sX2UxX2JmZ3MgbWxfZTFfYmhoaCBtbF9lMV9jeWNsZSBtbF9lMV9kZnAgbWxfZTIgbWxfZTJfY3ljbGUgbWxfZWJmZzAgbWxfZWJmcjAgbWxfZWJmcjEgbWxfZWJoMHEgbWxfZWJoaDAgbWxfZWJocjAgbWxfZWJyMGkgbWxfZWNyMGkgbWxfZWRmcDAgbWxfZWRmcjAgbWxfZWRmcjEgbWxfZWRyMGkgbWxfZWRzIG1sX2VlcjBpIG1sX2VncjBpIG1sX2VsZiBtbF9lbGZfYmZncyBtbF9lbGZfYmhoaCBtbF9lbGZfY3ljbGUgbWxfZWxmX2RmcCBtbF9lbGZpIG1sX2VsZnMgbWxfZW5yMGkgbWxfZW5ycjAgbWxfZXJkdTAgbWxfZXJkdTBfYmZncyBtbF9lcmR1MF9iaGhoIG1sX2VyZHUwX2JoaGhxIG1sX2VyZHUwX2N5Y2xlIG1sX2VyZHUwX2RmcCBtbF9lcmR1MF9ucmJmZ3MgbWxfZXhkZSBtbF9mb290bm90ZSBtbF9nZXFuciBtbF9ncmFkMCBtbF9ncmFwaCBtbF9oYmhoaCBtbF9oZDAgbWxfaG9sZCBtbF9pbml0IG1sX2ludiBtbF9sb2cgbWxfbWF4IG1sX21sb3V0IG1sX21sb3V0XzggbWxfbW9kZWwgbWxfbmIwIG1sX29wdCBtbF9wIG1sX3Bsb3QgbWxfcXVlcnkgbWxfcmRncmQgbWxfcmVwb3IgbWxfc19lIG1sX3Njb3JlIG1sX3NlYXJjIG1sX3RlY2huaXF1ZSBtbF91bmhvbGQgbWxldmFsIG1sZl8gbWxtYXRieXN1bSBtbG1hdHN1bSBtbG9nIG1sb2dpIG1sb2dpdCBtbG9naXRfZm9vdG5vdGUgbWxvZ2l0X3AgbWxvcHRzIG1sc3VtIG1sdmVjc3VtIG1ubDBfIG1vciBtb3JlIG1vdiBtb3ZlIG1wcm9iaXQgbXByb2JpdF9sZiBtcHJvYml0X3AgbXJkdTBfIG1yZHUxXyBtdmRlY29kZSBtdmVuY29kZSBtdnJlZyBtdnJlZ19lc3RhdCBufDAgbmJyZWcgbmJyZWdfYWwgbmJyZWdfbGYgbmJyZWdfcCBuYnJlZ19zdyBuZXN0cmVnIG5ldCBuZXdleSBuZXdleV83IG5ld2V5X3AgbmV3cyBubCBubF83IG5sXzkgbmxfOV9wIG5sX3AgbmxfcF83IG5sY29tIG5sY29tX3AgbmxleHAyIG5sZXhwMl83IG5sZXhwMmEgbmxleHAyYV83IG5sZXhwMyBubGV4cDNfNyBubGdvbTMgbmxnb20zXzcgbmxnb200IG5sZ29tNF83IG5saW5pdCBubGxvZzMgbmxsb2czXzcgbmxsb2c0IG5sbG9nNF83IG5sb2dfcmQgbmxvZ2l0IG5sb2dpdF9wIG5sb2dpdGdlbiBubG9naXR0cmVlIG5scHJlZCBubyBub2JyZWFrIG5vaSBub2lzIG5vaXNpIG5vaXNpbCBub2lzaWx5IG5vdGUgbm90ZXMgbm90ZXNfZGxnIG5wdHJlbmQgbnVtbGFiZWwgbnVtbGlzdCBvZGJjIG9sZF92ZXIgb2xvIG9sb2cgb2xvZ2kgb2xvZ2lfc3cgb2xvZ2l0IG9sb2dpdF9wIG9sb2dpdHAgb24gb25lIG9uZXcgb25ld2Egb25ld2F5IG9wX2NvbG5tIG9wX2NvbXAgb3BfZGlmZiBvcF9pbnYgb3Bfc3RyIG9wciBvcHJvIG9wcm9iIG9wcm9iX3N3IG9wcm9iaSBvcHJvYmlfcCBvcHJvYml0IG9wcm9iaXRwIG9wdHNfZXhjbHVzaXZlIG9yZGVyIG9ydGhvZyBvcnRocG9seSBvdSBvdXQgb3V0ZiBvdXRmaSBvdXRmaWwgb3V0ZmlsZSBvdXRzIG91dHNoIG91dHNoZSBvdXRzaGVlIG91dHNoZWV0IG92dGVzdCBwYWMgcGFjXzcgcGFsZXR0ZSBwYXJzZSBwYXJzZV9kaXNzaW0gcGF1c2UgcGNhIHBjYV84IHBjYV9kaXNwbGF5IHBjYV9lc3RhdCBwY2FfcCBwY2Ffcm90YXRlIHBjYW1hdCBwY2hhcnQgcGNoYXJ0XzcgcGNoaSBwY2hpXzcgcGNvcnIgcGN0aWxlIHBlbnRpdW0gcGVyZ3JhbSBwZXJncmFtXzcgcGVybXV0ZSBwZXJtdXRlXzggcGVyc29uYWwgcGV0b19zdCBwa2NvbGxhcHNlIHBrY3Jvc3MgcGtlcXVpdiBwa2V4YW1pbmUgcGtleGFtaW5lXzcgcGtzaGFwZSBwa3N1bW0gcGtzdW1tXzcgcGwgcGxvIHBsb3QgcGx1Z2luIHBub3JtIHBub3JtXzcgcG9pc2dvZiBwb2lzc19sZiBwb2lzc19zdyBwb2lzc29fcCBwb2lzc29uIHBvaXNzb25fZXN0YXQgcG9zdCBwb3N0Y2xvc2UgcG9zdGZpbGUgcG9zdHV0aWwgcHBlcnJvbiBwciBwcmFpcyBwcmFpc19lIHByYWlzX2UyIHByYWlzX3AgcHJlZGljdCBwcmVkaWN0bmwgcHJlc2VydmUgcHJpbnQgcHJvIHByb2IgcHJvYmkgcHJvYml0IHByb2JpdF9lc3RhdCBwcm9iaXRfcCBwcm9jX3RpbWUgcHJvY292ZXJsYXkgcHJvY3J1c3RlcyBwcm9jcnVzdGVzX2VzdGF0IHByb2NydXN0ZXNfcCBwcm9maWxlciBwcm9nIHByb2dyIHByb2dyYSBwcm9ncmFtIHByb3AgcHJvcG9ydGlvbiBwcnRlc3QgcHJ0ZXN0aSBwd2NvcnIgcHdkIHFcXFxccyBxYnkgcWJ5cyBxY2hpIHFjaGlfNyBxbGFkZGVyIHFsYWRkZXJfNyBxbm9ybSBxbm9ybV83IHFxcGxvdCBxcXBsb3RfNyBxcmVnIHFyZWdfYyBxcmVnX3AgcXJlZ19zdyBxdSBxdWFkY2hrIHF1YW50aWxlIHF1YW50aWxlXzcgcXVlIHF1ZXIgcXVlcnkgcmFuZ2UgcmFua3N1bSByYXRpbyByY2hhcnQgcmNoYXJ0XzcgcmNvZiByZWNhc3QgcmVjbGluayByZWNvZGUgcmVnIHJlZzMgcmVnM19wIHJlZ2R3IHJlZ3IgcmVncmUgcmVncmVfcDIgcmVncmVzIHJlZ3Jlc19wIHJlZ3Jlc3MgcmVncmVzc19lc3RhdCByZWdyaXZfcCByZW1hcCByZW4gcmVuYSByZW5hbSByZW5hbWUgcmVucGZpeCByZXBlYXQgcmVwbGFjZSByZXBvcnQgcmVzaGFwZSByZXN0b3JlIHJldCByZXR1IHJldHVyIHJldHVybiBybSBybWRpciByb2J2YXIgcm9jY29tcCByb2Njb21wXzcgcm9jY29tcF84IHJvY2ZfbGYgcm9jZml0IHJvY2ZpdF84IHJvY2dvbGQgcm9jcGxvdCByb2NwbG90Xzcgcm9jdGFiIHJvY3RhYl83IHJvbGxpbmcgcm9sb2dpdCByb2xvZ2l0X3Agcm90IHJvdGEgcm90YXQgcm90YXRlIHJvdGF0ZW1hdCBycmVnIHJyZWdfcCBydSBydW4gcnVudGVzdCBydmZwbG90IHJ2ZnBsb3RfNyBydnBwbG90IHJ2cHBsb3RfNyBzYSBzYWZlc3VtIHNhbXBsZSBzYW1wc2kgc2F2IHNhdmUgc2F2ZWRyZXN1bHRzIHNhdmVvbGQgc2Mgc2NhIHNjYWwgc2NhbGEgc2NhbGFyIHNjYXR0ZXIgc2NtX21pbmUgc2NvIHNjb2JfbGYgc2NvYl9wIHNjb2JpX3N3IHNjb2JpdCBzY29yIHNjb3JlIHNjb3JlcGxvdCBzY29yZXBsb3RfaGVscCBzY3JlZSBzY3JlZXBsb3Qgc2NyZWVwbG90X2hlbHAgc2R0ZXN0IHNkdGVzdGkgc2Ugc2VhcmNoIHNlcGFyYXRlIHNlcGVyYXRlIHNlcnJiYXIgc2VycmJhcl83IHNlcnNldCBzZXQgc2V0X2RlZmF1bHRzIHNmcmFuY2lhIHNoIHNoZSBzaGVsIHNoZWxsIHNoZXdoYXJ0IHNoZXdoYXJ0Xzcgc2lnbmVzdGltYXRpb25zYW1wbGUgc2lnbnJhbmsgc2lnbnRlc3Qgc2ltdWwgc2ltdWxfNyBzaW11bGF0ZSBzaW11bGF0ZV84IHNrdGVzdCBzbGVlcCBzbG9naXQgc2xvZ2l0X2QyIHNsb2dpdF9wIHNtb290aCBzbmFwc3BhbiBzbyBzb3Igc29ydCBzcGVhcm1hbiBzcGlrZXBsb3Qgc3Bpa2VwbG90Xzcgc3Bpa2VwbHQgc3BsaW5lX3ggc3BsaXQgc3FyZWcgc3FyZWdfcCBzcmV0IHNyZXR1IHNyZXR1ciBzcmV0dXJuIHNzYyBzdCBzdF9jdCBzdF9oYyBzdF9oY2Qgc3RfaGNkX3NoIHN0X2lzIHN0X2lzc3lzIHN0X25vdGUgc3RfcHJvbW8gc3Rfc2V0IHN0X3Nob3cgc3Rfc21wbCBzdF9zdWJpZCBzdGFjayBzdGF0c2J5IHN0YXRzYnlfOCBzdGJhc2Ugc3RjaSBzdGNpXzcgc3Rjb3ggc3Rjb3hfZXN0YXQgc3Rjb3hfZnIgc3Rjb3hfZnJfbGwgc3Rjb3hfcCBzdGNveF9zdyBzdGNveGttIHN0Y294a21fNyBzdGNzdGF0IHN0Y3VydiBzdGN1cnZlIHN0Y3VydmVfNyBzdGRlcyBzdGVtIHN0ZXB3aXNlIHN0ZXJlZyBzdGZpbGwgc3RnZW4gc3RpciBzdGpvaW4gc3RtYyBzdG1oIHN0cGhwbG90IHN0cGhwbG90Xzcgc3RwaHRlc3Qgc3RwaHRlc3RfNyBzdHB0aW1lIHN0cmF0ZSBzdHJhdGVfNyBzdHJlZyBzdHJlZ19zdyBzdHJlc2V0IHN0cyBzdHNfNyBzdHNldCBzdHNwbGl0IHN0c3VtIHN0dG9jYyBzdHRvY3Qgc3R2YXJ5IHN0d2VpYiBzdSBzdWVzdCBzdWVzdF84IHN1bSBzdW1tIHN1bW1hIHN1bW1hciBzdW1tYXJpIHN1bW1hcml6IHN1bW1hcml6ZSBzdW5mbG93ZXIgc3VyZWcgc3VydmN1cnYgc3VydnN1bSBzdmFyIHN2YXJfcCBzdm1hdCBzdnkgc3Z5X2Rpc3Agc3Z5X2RyZWcgc3Z5X2VzdCBzdnlfZXN0Xzcgc3Z5X2VzdGF0IHN2eV9nZXQgc3Z5X2duYnJlZ19wIHN2eV9oZWFkIHN2eV9oZWFkZXIgc3Z5X2hlY2ttYW5fcCBzdnlfaGVja3Byb2JfcCBzdnlfaW50cmVnX3Agc3Z5X2l2cmVnX3Agc3Z5X2xvZ2lzdGljX3Agc3Z5X2xvZ2l0X3Agc3Z5X21sb2dpdF9wIHN2eV9uYnJlZ19wIHN2eV9vbG9naXRfcCBzdnlfb3Byb2JpdF9wIHN2eV9wb2lzc29uX3Agc3Z5X3Byb2JpdF9wIHN2eV9yZWdyZXNzX3Agc3Z5X3N1YiBzdnlfc3ViXzcgc3Z5X3ggc3Z5X3hfNyBzdnlfeF9wIHN2eWRlcyBzdnlkZXNfOCBzdnlnZW4gc3Z5Z25icmVnIHN2eWhlY2ttYW4gc3Z5aGVja3Byb2Igc3Z5aW50cmVnIHN2eWludHJlZ183IHN2eWludHJnIHN2eWl2cmVnIHN2eWxjIHN2eWxvZ19wIHN2eWxvZ2l0IHN2eW1hcmtvdXQgc3Z5bWFya291dF84IHN2eW1lYW4gc3Z5bWxvZyBzdnltbG9naXQgc3Z5bmJyZWcgc3Z5b2xvZyBzdnlvbG9naXQgc3Z5b3Byb2Igc3Z5b3Byb2JpdCBzdnlvcHRzIHN2eXBvaXMgc3Z5cG9pc183IHN2eXBvaXNzb24gc3Z5cHJvYml0IHN2eXByb2J0IHN2eXByb3Agc3Z5cHJvcF83IHN2eXJhdGlvIHN2eXJlZyBzdnlyZWdfcCBzdnlyZWdyZXNzIHN2eXNldCBzdnlzZXRfNyBzdnlzZXRfOCBzdnl0YWIgc3Z5dGFiXzcgc3Z5dGVzdCBzdnl0b3RhbCBzdyBzd184IHN3Y25yZWcgc3djb3ggc3dlcmVnIHN3aWxrIHN3bG9naXMgc3dsb2dpdCBzd29sb2dpdCBzd29wcmJ0IHN3cG9pcyBzd3Byb2JpdCBzd3FyZWcgc3d0b2JpdCBzd3dlaWIgc3ltbWV0cnkgc3ltbWkgc3ltcGxvdCBzeW1wbG90Xzcgc3ludGF4IHN5c2Rlc2NyaWJlIHN5c2RpciBzeXN1c2Ugc3pyb2V0ZXIgdGEgdGFiIHRhYjEgdGFiMiB0YWJfb3IgdGFiZCB0YWJkaSB0YWJkaXMgdGFiZGlzcCB0YWJpIHRhYmxlIHRhYm9kZHMgdGFib2Rkc183IHRhYnN0YXQgdGFidSB0YWJ1bCB0YWJ1bGEgdGFidWxhdCB0YWJ1bGF0ZSB0ZSB0ZW1wZmlsZSB0ZW1wbmFtZSB0ZW1wdmFyIHRlcyB0ZXN0IHRlc3RubCB0ZXN0cGFybSB0ZXN0c3RkIHRldHJhY2hvcmljIHRpbWVfaXQgdGltZXIgdGlzIHRvYiB0b2JpIHRvYml0IHRvYml0X3AgdG9iaXRfc3cgdG9rZW4gdG9rZW5pIHRva2VuaXogdG9rZW5pemUgdG9zdHJpbmcgdG90YWwgdHJhbnNsYXRlIHRyYW5zbGF0b3IgdHJhbnNtYXAgdHJlYXRfbGwgdHJlYXRyX3AgdHJlYXRyZWcgdHJpbSB0cmltZmlsbCB0cm5iX2NvbnMgdHJuYl9tZWFuIHRycG9pc3NfZDIgdHJ1bmNfbGwgdHJ1bmNyX3AgdHJ1bmNyZWcgdHNhcHBlbmQgdHNldCB0c2ZpbGwgdHNsaW5lIHRzbGluZV9leCB0c3JlcG9ydCB0c3JldmFyIHRzcmxpbmUgdHNzZXQgdHNzbW9vdGggdHN1bmFiIHR0ZXN0IHR0ZXN0aSB0dXRfY2hrIHR1dF93YWl0IHR1dG9yaWFsIHR3IHR3YXJlX3N0IHR3byB0d293YXkgdHdvd2F5X19mcGZpdF9zZXJzZXQgdHdvd2F5X19mdW5jdGlvbl9nZW4gdHdvd2F5X19oaXN0b2dyYW1fZ2VuIHR3b3dheV9faXBvaW50X3NlcnNldCB0d293YXlfX2lwb2ludHNfc2Vyc2V0IHR3b3dheV9fa2RlbnNpdHlfZ2VuIHR3b3dheV9fbGZpdF9zZXJzZXQgdHdvd2F5X19ub3JtZ2VuX2dlbiB0d293YXlfX3BjaV9zZXJzZXQgdHdvd2F5X19xZml0X3NlcnNldCB0d293YXlfX3NjYXR0ZXJpX3NlcnNldCB0d293YXlfX3N1bmZsb3dlcl9nZW4gdHdvd2F5X2tzbV9zZXJzZXQgdHkgdHlwIHR5cGUgdHlwZW9mIHV8MCB1bmFiIHVuYWJicmV2IHVuYWJjbWQgdXBkYXRlIHVzIHVzZSB1c2VsYWJlbCB2YXIgdmFyX21rY29tcGFuaW9uIHZhcl9wIHZhcmJhc2ljIHZhcmZjYXN0IHZhcmdyYW5nZXIgdmFyaXJmIHZhcmlyZl9hZGQgdmFyaXJmX2NncmFwaCB2YXJpcmZfY3JlYXRlIHZhcmlyZl9jdGFibGUgdmFyaXJmX2Rlc2NyaWJlIHZhcmlyZl9kaXIgdmFyaXJmX2Ryb3AgdmFyaXJmX2VyYXNlIHZhcmlyZl9ncmFwaCB2YXJpcmZfb2dyYXBoIHZhcmlyZl9yZW5hbWUgdmFyaXJmX3NldCB2YXJpcmZfdGFibGUgdmFybGlzdCB2YXJsbWFyIHZhcm5vcm0gdmFyc29jIHZhcnN0YWJsZSB2YXJzdGFibGVfdyB2YXJzdGFibGVfdzIgdmFyd2xlIHZjZSB2ZWMgdmVjX2ZldmQgdmVjX21rcGhpIHZlY19wIHZlY19wX3cgdmVjaXJmX2NyZWF0ZSB2ZWNsbWFyIHZlY2xtYXJfdyB2ZWNub3JtIHZlY25vcm1fdyB2ZWNyYW5rIHZlY3N0YWJsZSB2ZXJpbnN0IHZlcnMgdmVyc2kgdmVyc2lvIHZlcnNpb24gdmlldyB2aWV3c291cmNlIHZpZiB2d2xzIHdkYXRldG9mIHdlYmRlc2NyaWJlIHdlYnNlZWsgd2VidXNlIHdlaWIxX2xmIHdlaWIyX2xmIHdlaWJfbGYgd2VpYl9sZjAgd2VpYmhldF9nbGYgd2VpYmhldF9nbGZfc2ggd2VpYmhldF9nbGZhIHdlaWJoZXRfZ2xmYV9zaCB3ZWliaGV0X2dwIHdlaWJoZXRfaWxmIHdlaWJoZXRfaWxmX3NoIHdlaWJoZXRfaWxmYSB3ZWliaGV0X2lsZmFfc2ggd2VpYmhldF9pcCB3ZWlidV9zdyB3ZWlidWxfcCB3ZWlidWxsIHdlaWJ1bGxfYyB3ZWlidWxsX3Mgd2VpYnVsbGhldCB3aCB3aGVscCB3aGkgd2hpY2ggd2hpbCB3aGlsZSB3aWxjX3N0IHdpbGNveG9uIHdpbiB3aW5kIHdpbmRvIHdpbmRvdyB3aW5leGVjIHdudGVzdGIgd250ZXN0Yl83IHdudGVzdHEgeGNoYXJ0IHhjaGFydF83IHhjb3JyIHhjb3JyXzcgeGkgeGlfNiB4bWxzYXYgeG1sc2F2ZSB4bWx1c2UgeHBvc2UgeHNoIHhzaGUgeHNoZWwgeHNoZWxsIHh0X2lpcyB4dF90aXMgeHRhYl9wIHh0YWJvbmQgeHRiaW5fcCB4dGNsb2cgeHRjbG9nbG9nIHh0Y2xvZ2xvZ184IHh0Y2xvZ2xvZ19kMiB4dGNsb2dsb2dfcGFfcCB4dGNsb2dsb2dfcmVfcCB4dGNudF9wIHh0Y29yciB4dGRhdGEgeHRkZXMgeHRmcm9udF9wIHh0ZnJvbnRpZXIgeHRnZWUgeHRnZWVfZWxpbmsgeHRnZWVfZXN0YXQgeHRnZWVfbWFrZWl2YXIgeHRnZWVfcCB4dGdlZV9wbGluayB4dGdscyB4dGdsc19wIHh0aGF1cyB4dGhhdXNtYW4geHRodF9wIHh0aHRheWxvciB4dGlsZSB4dGludF9wIHh0aW50cmVnIHh0aW50cmVnXzggeHRpbnRyZWdfZDIgeHRpbnRyZWdfcCB4dGl2cF8xIHh0aXZwXzIgeHRpdnJlZyB4dGxpbmUgeHRsaW5lX2V4IHh0bG9naXQgeHRsb2dpdF84IHh0bG9naXRfZDIgeHRsb2dpdF9mZV9wIHh0bG9naXRfcGFfcCB4dGxvZ2l0X3JlX3AgeHRtaXhlZCB4dG1peGVkX2VzdGF0IHh0bWl4ZWRfcCB4dG5iX2ZlIHh0bmJfbGYgeHRuYnJlZyB4dG5icmVnX3BhX3AgeHRuYnJlZ19yZWZlX3AgeHRwY3NlIHh0cGNzZV9wIHh0cG9pcyB4dHBvaXNzb24geHRwb2lzc29uX2QyIHh0cG9pc3Nvbl9wYV9wIHh0cG9pc3Nvbl9yZWZlX3AgeHRwcmVkIHh0cHJvYml0IHh0cHJvYml0XzggeHRwcm9iaXRfZDIgeHRwcm9iaXRfcmVfcCB4dHBzX2ZlIHh0cHNfbGYgeHRwc19yZW4geHRwc19yZW5fOCB4dHJhcl9wIHh0cmMgeHRyY19wIHh0cmNoaCB4dHJlZmVfcCB4dHJlZyB4dHJlZ19iZSB4dHJlZ19mZSB4dHJlZ19tbCB4dHJlZ19wYV9wIHh0cmVnX3JlIHh0cmVnYXIgeHRyZXJlX3AgeHRzZXQgeHRzZl9sbCB4dHNmX2xsdGkgeHRzdW0geHR0YWIgeHR0ZXN0MCB4dHRvYml0IHh0dG9iaXRfOCB4dHRvYml0X3AgeHR0cmFucyB5eCB5eHZpZXdfX2Jhcmxpa2VfZHJhdyB5eHZpZXdfYXJlYV9kcmF3IHl4dmlld19iYXJfZHJhdyB5eHZpZXdfZG90X2RyYXcgeXh2aWV3X2Ryb3BsaW5lX2RyYXcgeXh2aWV3X2Z1bmN0aW9uX2RyYXcgeXh2aWV3X2lhcnJvd19kcmF3IHl4dmlld19pbGFiZWxzX2RyYXcgeXh2aWV3X25vcm1hbF9kcmF3IHl4dmlld19wY2Fycm93X2RyYXcgeXh2aWV3X3BjYmFycm93X2RyYXcgeXh2aWV3X3BjY2Fwc3ltX2RyYXcgeXh2aWV3X3Bjc2NhdHRlcl9kcmF3IHl4dmlld19wY3NwaWtlX2RyYXcgeXh2aWV3X3JhcmVhX2RyYXcgeXh2aWV3X3JiYXJfZHJhdyB5eHZpZXdfcmJhcm1fZHJhdyB5eHZpZXdfcmNhcF9kcmF3IHl4dmlld19yY2Fwc3ltX2RyYXcgeXh2aWV3X3Jjb25uZWN0ZWRfZHJhdyB5eHZpZXdfcmxpbmVfZHJhdyB5eHZpZXdfcnNjYXR0ZXJfZHJhdyB5eHZpZXdfcnNwaWtlX2RyYXcgeXh2aWV3X3NwaWtlX2RyYXcgeXh2aWV3X3N1bmZsb3dlcl9kcmF3IHphcF9zIHppbmIgemluYl9sbGYgemluYl9wbGYgemlwIHppcF9sbGYgemlwX3AgemlwX3BsZiB6dF9jdF81IHp0X2hjXzUgenRfaGNkXzUgenRfaXNfNSB6dF9pc3NfNSB6dF9zaG9fNSB6dF9zbXBfNSB6dGJhc2VfNSB6dGNveF81IHp0ZGVzXzUgenRlcmVnXzUgenRmaWxsXzUgenRnZW5fNSB6dGlyXzUgenRqb2luXzUgenRuYiB6dG5iX3AgenRwIHp0cF9wIHp0c181IHp0c2V0XzUgenRzcGxpXzUgenRzdW1fNSB6dHRvY3RfNSB6dHZhcnlfNSB6dHdlaWJfNScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvYFthLXpBLVowLTlfXSsnL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xcJFxcez9bYS16QS1aMC05X10rXFx9Py9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnYFwiW15cXHJcXG5dKj9cIlxcJyd9LFxuICAgICAgICAgIHtiZWdpbjogJ1wiW15cXHJcXG5cIl0qXCInfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKGFic3xhY29zfGFzaW58YXRhbnxhdGFuMnxhdGFuaHxjZWlsfGNsb2dsb2d8Y29tYnxjb3N8ZGlnYW1tYXxleHB8Zmxvb3J8aW52Y2xvZ2xvZ3xpbnZsb2dpdHxsbnxsbmZhY3R8bG5mYWN0b3JpYWx8bG5nYW1tYXxsb2d8bG9nMTB8bWF4fG1pbnxtb2R8cmVsZGlmfHJvdW5kfHNpZ258c2lufHNxcnR8c3VtfHRhbnx0YW5ofHRyaWdhbW1hfHRydW5jfGJldGFkZW58Qmlub21pYWx8Ymlub3JtfGJpbm9ybWFsfGNoaTJ8Y2hpMnRhaWx8ZGdhbW1hcGRhfGRnYW1tYXBkYWRhfGRnYW1tYXBkYWR4fGRnYW1tYXBkeHxkZ2FtbWFwZHhkeHxGfEZkZW58RnRhaWx8Z2FtbWFkZW58Z2FtbWFwfGliZXRhfGludmJpbm9taWFsfGludmNoaTJ8aW52Y2hpMnRhaWx8aW52RnxpbnZGdGFpbHxpbnZnYW1tYXB8aW52aWJldGF8aW52bmNoaTJ8aW52bkZ0YWlsfGludm5pYmV0YXxpbnZub3JtfGludm5vcm1hbHxpbnZ0dGFpbHxuYmV0YWRlbnxuY2hpMnxuRmRlbnxuRnRhaWx8bmliZXRhfG5vcm18bm9ybWFsfG5vcm1hbGRlbnxub3JtZHxucG5jaGkyfHRkZW58dHRhaWx8dW5pZm9ybXxhYmJyZXZ8Y2hhcnxpbmRleHxpbmRleG5vdHxsZW5ndGh8bG93ZXJ8bHRyaW18bWF0Y2h8cGx1cmFsfHByb3BlcnxyZWFsfHJlZ2V4bXxyZWdleHJ8cmVnZXhzfHJldmVyc2V8cnRyaW18c3RyaW5nfHN0cmxlbnxzdHJsb3dlcnxzdHJsdHJpbXxzdHJtYXRjaHxzdHJvZnJlYWx8c3RycG9zfHN0cnByb3BlcnxzdHJyZXZlcnNlfHN0cnJ0cmltfHN0cnRyaW18c3RydXBwZXJ8c3ViaW5zdHJ8c3ViaW53b3JkfHN1YnN0cnx0cmltfHVwcGVyfHdvcmR8d29yZGNvdW50fF9jYWxsZXJ8YXV0b2NvZGV8Ynl0ZW9yZGVyfGNob3B8Y2xpcHxjb25kfGV8ZXBzZG91YmxlfGVwc2Zsb2F0fGdyb3VwfGlubGlzdHxpbnJhbmdlfGlyZWNvZGV8bWF0cml4fG1heGJ5dGV8bWF4ZG91YmxlfG1heGZsb2F0fG1heGludHxtYXhsb25nfG1pfG1pbmJ5dGV8bWluZG91YmxlfG1pbmZsb2F0fG1pbmludHxtaW5sb25nfG1pc3Npbmd8cnxyZWNvZGV8cmVwbGF5fHJldHVybnxzfHNjYWxhcnxkfGRhdGV8ZGF5fGRvd3xkb3l8aGFsZnllYXJ8bWR5fG1vbnRofHF1YXJ0ZXJ8d2Vla3x5ZWFyfGR8ZGFpbHl8ZG9mZHxkb2ZofGRvZm18ZG9mcXxkb2Z3fGRvZnl8aHxoYWxmeWVhcmx5fGhvZmR8bXxtb2ZkfG1vbnRobHl8cXxxb2ZkfHF1YXJ0ZXJseXx0aW58dHdpdGhpbnx3fHdlZWtseXx3b2ZkfHl8eWVhcmx5fHlofHltfHlvZmR8eXF8eXd8Y2hvbGVza3l8Y29sbnVtYnxjb2xzb2Z8Y29ycnxkZXR8ZGlhZ3xkaWFnMGNudHxlbHxnZXR8aGFkYW1hcmR8SXxpbnZ8aW52c3ltfGlzc3ltfGlzc3ltbWV0cmljfEp8bWF0bWlzc2luZ3xtYXR1bmlmb3JtfG1yZWxkaWZ8bnVsbG1hdHxyb3dudW1ifHJvd3NvZnxzd2VlcHxzeW1pbnZ8dHJhY2V8dmVjfHZlY2RpYWcpKD89XFxcXCgpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgaGxqcy5DT01NRU5UKCdeWyBcXHRdKlxcXFwqLiokJywgZmFsc2UpLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVEVQMjFfSURFTlRfUkUgPSAnW0EtWl9dW0EtWjAtOV8uXSonO1xuICB2YXIgU1RFUDIxX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6ICdIRUFERVIgRU5EU0VDIERBVEEnXG4gIH07XG4gIHZhciBTVEVQMjFfU1RBUlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdJU08tMTAzMDMtMjE7JyxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG4gIHZhciBTVEVQMjFfQ0xPU0UgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdFTkQtSVNPLTEwMzAzLTIxOycsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwMjEnLCAnc3RlcCcsICdzdHAnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLCAvLyBTVEVQIDIxIGlzIGNhc2UgaW5zZW5zaXRpdmUgaW4gdGhlb3J5LCBpbiBwcmFjdGljZSBhbGwgbm9uLWNvbW1lbnRzIGFyZSBjYXBpdGFsaXplZC5cbiAgICBsZXhlbWVzOiBTVEVQMjFfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IFNURVAyMV9LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RFUDIxX1NUQVJULFxuICAgICAgU1RFUDIxX0NMT1NFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqXFxcXCohJywgJ1xcXFwqLycpLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogXCInXCIsIGVuZDogXCInXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcVydcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46ICdcXFxcJCcgKyBobGpzLklERU5UX1JFXG4gIH07XG5cbiAgdmFyIEhFWF9DT0xPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnIyhbYS1mQS1GMC05XXs2fXxbYS1mQS1GMC05XXszfSknXG4gIH07XG5cbiAgdmFyIEFUX0tFWVdPUkRTID0gW1xuICAgICdjaGFyc2V0JyxcbiAgICAnY3NzJyxcbiAgICAnZGVidWcnLFxuICAgICdleHRlbmQnLFxuICAgICdmb250LWZhY2UnLFxuICAgICdmb3InLFxuICAgICdpbXBvcnQnLFxuICAgICdpbmNsdWRlJyxcbiAgICAnbWVkaWEnLFxuICAgICdtaXhpbicsXG4gICAgJ3BhZ2UnLFxuICAgICd3YXJuJyxcbiAgICAnd2hpbGUnXG4gIF07XG5cbiAgdmFyIFBTRVVET19TRUxFQ1RPUlMgPSBbXG4gICAgJ2FmdGVyJyxcbiAgICAnYmVmb3JlJyxcbiAgICAnZmlyc3QtbGV0dGVyJyxcbiAgICAnZmlyc3QtbGluZScsXG4gICAgJ2FjdGl2ZScsXG4gICAgJ2ZpcnN0LWNoaWxkJyxcbiAgICAnZm9jdXMnLFxuICAgICdob3ZlcicsXG4gICAgJ2xhbmcnLFxuICAgICdsaW5rJyxcbiAgICAndmlzaXRlZCdcbiAgXTtcblxuICB2YXIgVEFHUyA9IFtcbiAgICAnYScsXG4gICAgJ2FiYnInLFxuICAgICdhZGRyZXNzJyxcbiAgICAnYXJ0aWNsZScsXG4gICAgJ2FzaWRlJyxcbiAgICAnYXVkaW8nLFxuICAgICdiJyxcbiAgICAnYmxvY2txdW90ZScsXG4gICAgJ2JvZHknLFxuICAgICdidXR0b24nLFxuICAgICdjYW52YXMnLFxuICAgICdjYXB0aW9uJyxcbiAgICAnY2l0ZScsXG4gICAgJ2NvZGUnLFxuICAgICdkZCcsXG4gICAgJ2RlbCcsXG4gICAgJ2RldGFpbHMnLFxuICAgICdkZm4nLFxuICAgICdkaXYnLFxuICAgICdkbCcsXG4gICAgJ2R0JyxcbiAgICAnZW0nLFxuICAgICdmaWVsZHNldCcsXG4gICAgJ2ZpZ2NhcHRpb24nLFxuICAgICdmaWd1cmUnLFxuICAgICdmb290ZXInLFxuICAgICdmb3JtJyxcbiAgICAnaDEnLFxuICAgICdoMicsXG4gICAgJ2gzJyxcbiAgICAnaDQnLFxuICAgICdoNScsXG4gICAgJ2g2JyxcbiAgICAnaGVhZGVyJyxcbiAgICAnaGdyb3VwJyxcbiAgICAnaHRtbCcsXG4gICAgJ2knLFxuICAgICdpZnJhbWUnLFxuICAgICdpbWcnLFxuICAgICdpbnB1dCcsXG4gICAgJ2lucycsXG4gICAgJ2tiZCcsXG4gICAgJ2xhYmVsJyxcbiAgICAnbGVnZW5kJyxcbiAgICAnbGknLFxuICAgICdtYXJrJyxcbiAgICAnbWVudScsXG4gICAgJ25hdicsXG4gICAgJ29iamVjdCcsXG4gICAgJ29sJyxcbiAgICAncCcsXG4gICAgJ3EnLFxuICAgICdxdW90ZScsXG4gICAgJ3NhbXAnLFxuICAgICdzZWN0aW9uJyxcbiAgICAnc3BhbicsXG4gICAgJ3N0cm9uZycsXG4gICAgJ3N1bW1hcnknLFxuICAgICdzdXAnLFxuICAgICd0YWJsZScsXG4gICAgJ3Rib2R5JyxcbiAgICAndGQnLFxuICAgICd0ZXh0YXJlYScsXG4gICAgJ3Rmb290JyxcbiAgICAndGgnLFxuICAgICd0aGVhZCcsXG4gICAgJ3RpbWUnLFxuICAgICd0cicsXG4gICAgJ3VsJyxcbiAgICAndmFyJyxcbiAgICAndmlkZW8nXG4gIF07XG5cbiAgdmFyIExPT0tBSEVBRF9UQUdfRU5EID0gJyg/PVtcXFxcLlxcXFxzXFxcXG5cXFxcW1xcXFw6LF0pJztcblxuICB2YXIgQVRUUklCVVRFUyA9IFtcbiAgICAnYWxpZ24tY29udGVudCcsXG4gICAgJ2FsaWduLWl0ZW1zJyxcbiAgICAnYWxpZ24tc2VsZicsXG4gICAgJ2FuaW1hdGlvbicsXG4gICAgJ2FuaW1hdGlvbi1kZWxheScsXG4gICAgJ2FuaW1hdGlvbi1kaXJlY3Rpb24nLFxuICAgICdhbmltYXRpb24tZHVyYXRpb24nLFxuICAgICdhbmltYXRpb24tZmlsbC1tb2RlJyxcbiAgICAnYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCcsXG4gICAgJ2FuaW1hdGlvbi1uYW1lJyxcbiAgICAnYW5pbWF0aW9uLXBsYXktc3RhdGUnLFxuICAgICdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgICAnYXV0bycsXG4gICAgJ2JhY2tmYWNlLXZpc2liaWxpdHknLFxuICAgICdiYWNrZ3JvdW5kJyxcbiAgICAnYmFja2dyb3VuZC1hdHRhY2htZW50JyxcbiAgICAnYmFja2dyb3VuZC1jbGlwJyxcbiAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgJ2JhY2tncm91bmQtaW1hZ2UnLFxuICAgICdiYWNrZ3JvdW5kLW9yaWdpbicsXG4gICAgJ2JhY2tncm91bmQtcG9zaXRpb24nLFxuICAgICdiYWNrZ3JvdW5kLXJlcGVhdCcsXG4gICAgJ2JhY2tncm91bmQtc2l6ZScsXG4gICAgJ2JvcmRlcicsXG4gICAgJ2JvcmRlci1ib3R0b20nLFxuICAgICdib3JkZXItYm90dG9tLWNvbG9yJyxcbiAgICAnYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cycsXG4gICAgJ2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzJyxcbiAgICAnYm9yZGVyLWJvdHRvbS1zdHlsZScsXG4gICAgJ2JvcmRlci1ib3R0b20td2lkdGgnLFxuICAgICdib3JkZXItY29sbGFwc2UnLFxuICAgICdib3JkZXItY29sb3InLFxuICAgICdib3JkZXItaW1hZ2UnLFxuICAgICdib3JkZXItaW1hZ2Utb3V0c2V0JyxcbiAgICAnYm9yZGVyLWltYWdlLXJlcGVhdCcsXG4gICAgJ2JvcmRlci1pbWFnZS1zbGljZScsXG4gICAgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLFxuICAgICdib3JkZXItaW1hZ2Utd2lkdGgnLFxuICAgICdib3JkZXItbGVmdCcsXG4gICAgJ2JvcmRlci1sZWZ0LWNvbG9yJyxcbiAgICAnYm9yZGVyLWxlZnQtc3R5bGUnLFxuICAgICdib3JkZXItbGVmdC13aWR0aCcsXG4gICAgJ2JvcmRlci1yYWRpdXMnLFxuICAgICdib3JkZXItcmlnaHQnLFxuICAgICdib3JkZXItcmlnaHQtY29sb3InLFxuICAgICdib3JkZXItcmlnaHQtc3R5bGUnLFxuICAgICdib3JkZXItcmlnaHQtd2lkdGgnLFxuICAgICdib3JkZXItc3BhY2luZycsXG4gICAgJ2JvcmRlci1zdHlsZScsXG4gICAgJ2JvcmRlci10b3AnLFxuICAgICdib3JkZXItdG9wLWNvbG9yJyxcbiAgICAnYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cycsXG4gICAgJ2JvcmRlci10b3AtcmlnaHQtcmFkaXVzJyxcbiAgICAnYm9yZGVyLXRvcC1zdHlsZScsXG4gICAgJ2JvcmRlci10b3Atd2lkdGgnLFxuICAgICdib3JkZXItd2lkdGgnLFxuICAgICdib3R0b20nLFxuICAgICdib3gtZGVjb3JhdGlvbi1icmVhaycsXG4gICAgJ2JveC1zaGFkb3cnLFxuICAgICdib3gtc2l6aW5nJyxcbiAgICAnYnJlYWstYWZ0ZXInLFxuICAgICdicmVhay1iZWZvcmUnLFxuICAgICdicmVhay1pbnNpZGUnLFxuICAgICdjYXB0aW9uLXNpZGUnLFxuICAgICdjbGVhcicsXG4gICAgJ2NsaXAnLFxuICAgICdjbGlwLXBhdGgnLFxuICAgICdjb2xvcicsXG4gICAgJ2NvbHVtbi1jb3VudCcsXG4gICAgJ2NvbHVtbi1maWxsJyxcbiAgICAnY29sdW1uLWdhcCcsXG4gICAgJ2NvbHVtbi1ydWxlJyxcbiAgICAnY29sdW1uLXJ1bGUtY29sb3InLFxuICAgICdjb2x1bW4tcnVsZS1zdHlsZScsXG4gICAgJ2NvbHVtbi1ydWxlLXdpZHRoJyxcbiAgICAnY29sdW1uLXNwYW4nLFxuICAgICdjb2x1bW4td2lkdGgnLFxuICAgICdjb2x1bW5zJyxcbiAgICAnY29udGVudCcsXG4gICAgJ2NvdW50ZXItaW5jcmVtZW50JyxcbiAgICAnY291bnRlci1yZXNldCcsXG4gICAgJ2N1cnNvcicsXG4gICAgJ2RpcmVjdGlvbicsXG4gICAgJ2Rpc3BsYXknLFxuICAgICdlbXB0eS1jZWxscycsXG4gICAgJ2ZpbHRlcicsXG4gICAgJ2ZsZXgnLFxuICAgICdmbGV4LWJhc2lzJyxcbiAgICAnZmxleC1kaXJlY3Rpb24nLFxuICAgICdmbGV4LWZsb3cnLFxuICAgICdmbGV4LWdyb3cnLFxuICAgICdmbGV4LXNocmluaycsXG4gICAgJ2ZsZXgtd3JhcCcsXG4gICAgJ2Zsb2F0JyxcbiAgICAnZm9udCcsXG4gICAgJ2ZvbnQtZmFtaWx5JyxcbiAgICAnZm9udC1mZWF0dXJlLXNldHRpbmdzJyxcbiAgICAnZm9udC1rZXJuaW5nJyxcbiAgICAnZm9udC1sYW5ndWFnZS1vdmVycmlkZScsXG4gICAgJ2ZvbnQtc2l6ZScsXG4gICAgJ2ZvbnQtc2l6ZS1hZGp1c3QnLFxuICAgICdmb250LXN0cmV0Y2gnLFxuICAgICdmb250LXN0eWxlJyxcbiAgICAnZm9udC12YXJpYW50JyxcbiAgICAnZm9udC12YXJpYW50LWxpZ2F0dXJlcycsXG4gICAgJ2ZvbnQtd2VpZ2h0JyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnaHlwaGVucycsXG4gICAgJ2ljb24nLFxuICAgICdpbWFnZS1vcmllbnRhdGlvbicsXG4gICAgJ2ltYWdlLXJlbmRlcmluZycsXG4gICAgJ2ltYWdlLXJlc29sdXRpb24nLFxuICAgICdpbWUtbW9kZScsXG4gICAgJ2luaGVyaXQnLFxuICAgICdpbml0aWFsJyxcbiAgICAnanVzdGlmeS1jb250ZW50JyxcbiAgICAnbGVmdCcsXG4gICAgJ2xldHRlci1zcGFjaW5nJyxcbiAgICAnbGluZS1oZWlnaHQnLFxuICAgICdsaXN0LXN0eWxlJyxcbiAgICAnbGlzdC1zdHlsZS1pbWFnZScsXG4gICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nLFxuICAgICdsaXN0LXN0eWxlLXR5cGUnLFxuICAgICdtYXJnaW4nLFxuICAgICdtYXJnaW4tYm90dG9tJyxcbiAgICAnbWFyZ2luLWxlZnQnLFxuICAgICdtYXJnaW4tcmlnaHQnLFxuICAgICdtYXJnaW4tdG9wJyxcbiAgICAnbWFya3MnLFxuICAgICdtYXNrJyxcbiAgICAnbWF4LWhlaWdodCcsXG4gICAgJ21heC13aWR0aCcsXG4gICAgJ21pbi1oZWlnaHQnLFxuICAgICdtaW4td2lkdGgnLFxuICAgICduYXYtZG93bicsXG4gICAgJ25hdi1pbmRleCcsXG4gICAgJ25hdi1sZWZ0JyxcbiAgICAnbmF2LXJpZ2h0JyxcbiAgICAnbmF2LXVwJyxcbiAgICAnbm9uZScsXG4gICAgJ25vcm1hbCcsXG4gICAgJ29iamVjdC1maXQnLFxuICAgICdvYmplY3QtcG9zaXRpb24nLFxuICAgICdvcGFjaXR5JyxcbiAgICAnb3JkZXInLFxuICAgICdvcnBoYW5zJyxcbiAgICAnb3V0bGluZScsXG4gICAgJ291dGxpbmUtY29sb3InLFxuICAgICdvdXRsaW5lLW9mZnNldCcsXG4gICAgJ291dGxpbmUtc3R5bGUnLFxuICAgICdvdXRsaW5lLXdpZHRoJyxcbiAgICAnb3ZlcmZsb3cnLFxuICAgICdvdmVyZmxvdy13cmFwJyxcbiAgICAnb3ZlcmZsb3cteCcsXG4gICAgJ292ZXJmbG93LXknLFxuICAgICdwYWRkaW5nJyxcbiAgICAncGFkZGluZy1ib3R0b20nLFxuICAgICdwYWRkaW5nLWxlZnQnLFxuICAgICdwYWRkaW5nLXJpZ2h0JyxcbiAgICAncGFkZGluZy10b3AnLFxuICAgICdwYWdlLWJyZWFrLWFmdGVyJyxcbiAgICAncGFnZS1icmVhay1iZWZvcmUnLFxuICAgICdwYWdlLWJyZWFrLWluc2lkZScsXG4gICAgJ3BlcnNwZWN0aXZlJyxcbiAgICAncGVyc3BlY3RpdmUtb3JpZ2luJyxcbiAgICAncG9pbnRlci1ldmVudHMnLFxuICAgICdwb3NpdGlvbicsXG4gICAgJ3F1b3RlcycsXG4gICAgJ3Jlc2l6ZScsXG4gICAgJ3JpZ2h0JyxcbiAgICAndGFiLXNpemUnLFxuICAgICd0YWJsZS1sYXlvdXQnLFxuICAgICd0ZXh0LWFsaWduJyxcbiAgICAndGV4dC1hbGlnbi1sYXN0JyxcbiAgICAndGV4dC1kZWNvcmF0aW9uJyxcbiAgICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJyxcbiAgICAndGV4dC1kZWNvcmF0aW9uLWxpbmUnLFxuICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnLFxuICAgICd0ZXh0LWluZGVudCcsXG4gICAgJ3RleHQtb3ZlcmZsb3cnLFxuICAgICd0ZXh0LXJlbmRlcmluZycsXG4gICAgJ3RleHQtc2hhZG93JyxcbiAgICAndGV4dC10cmFuc2Zvcm0nLFxuICAgICd0ZXh0LXVuZGVybGluZS1wb3NpdGlvbicsXG4gICAgJ3RvcCcsXG4gICAgJ3RyYW5zZm9ybScsXG4gICAgJ3RyYW5zZm9ybS1vcmlnaW4nLFxuICAgICd0cmFuc2Zvcm0tc3R5bGUnLFxuICAgICd0cmFuc2l0aW9uJyxcbiAgICAndHJhbnNpdGlvbi1kZWxheScsXG4gICAgJ3RyYW5zaXRpb24tZHVyYXRpb24nLFxuICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JyxcbiAgICAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLFxuICAgICd1bmljb2RlLWJpZGknLFxuICAgICd2ZXJ0aWNhbC1hbGlnbicsXG4gICAgJ3Zpc2liaWxpdHknLFxuICAgICd3aGl0ZS1zcGFjZScsXG4gICAgJ3dpZG93cycsXG4gICAgJ3dpZHRoJyxcbiAgICAnd29yZC1icmVhaycsXG4gICAgJ3dvcmQtc3BhY2luZycsXG4gICAgJ3dvcmQtd3JhcCcsXG4gICAgJ3otaW5kZXgnXG4gIF07XG5cbiAgLy8gaWxsZWdhbHNcbiAgdmFyIElMTEVHQUwgPSBbXG4gICAgJ1xcXFw/JyxcbiAgICAnKFxcXFxiUmV0dXJuXFxcXGIpJywgLy8gbW9ua2V5XG4gICAgJyhcXFxcYkVuZFxcXFxiKScsIC8vIG1vbmtleVxuICAgICcoXFxcXGJlbmRcXFxcYiknLCAvLyB2YnNjcmlwdFxuICAgICcoXFxcXGJkZWZcXFxcYiknLCAvLyBncmFkbGVcbiAgICAnOycsIC8vIGEgd2hvbGUgbG90IG9mIGxhbmd1YWdlc1xuICAgICcjXFxcXHMnLCAvLyBtYXJrZG93blxuICAgICdcXFxcKlxcXFxzJywgLy8gbWFya2Rvd25cbiAgICAnPT09XFxcXHMnLCAvLyBtYXJrZG93blxuICAgICdcXFxcfCcsXG4gICAgJyUnLCAvLyBwcm9sb2dcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc3R5bCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGtleXdvcmRzOiAnaWYgZWxzZSBmb3IgaW4nLFxuICAgIGlsbGVnYWw6ICcoJyArIElMTEVHQUwuam9pbignfCcpICsgJyknLFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG5cbiAgICAgIC8vIGNvbW1lbnRzXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuXG4gICAgICAvLyBoZXggY29sb3JzXG4gICAgICBIRVhfQ09MT1IsXG5cbiAgICAgIC8vIGNsYXNzIHRhZ1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwuW2EtekEtWl1bYS16QS1aMC05Xy1dKicgKyBMT09LQUhFQURfVEFHX0VORCxcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItY2xhc3MnXG4gICAgICB9LFxuXG4gICAgICAvLyBpZCB0YWdcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcI1thLXpBLVpdW2EtekEtWjAtOV8tXSonICsgTE9PS0FIRUFEX1RBR19FTkQsXG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJ1xuICAgICAgfSxcblxuICAgICAgLy8gdGFnc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBUQUdTLmpvaW4oJ3wnKSArICcpJyArIExPT0tBSEVBRF9UQUdfRU5ELFxuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci10YWcnXG4gICAgICB9LFxuXG4gICAgICAvLyBwc3VlZG8gc2VsZWN0b3JzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnJj86PzpcXFxcYignICsgUFNFVURPX1NFTEVDVE9SUy5qb2luKCd8JykgKyAnKScgKyBMT09LQUhFQURfVEFHX0VORFxuICAgICAgfSxcblxuICAgICAgLy8gQCBrZXl3b3Jkc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcQCgnICsgQVRfS0VZV09SRFMuam9pbignfCcpICsgJylcXFxcYidcbiAgICAgIH0sXG5cbiAgICAgIC8vIHZhcmlhYmxlc1xuICAgICAgVkFSSUFCTEUsXG5cbiAgICAgIC8vIGRpbWVuc2lvblxuICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG5cbiAgICAgIC8vIG51bWJlclxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcblxuICAgICAgLy8gZnVuY3Rpb25zXG4gICAgICAvLyAgLSBvbmx5IGZyb20gYmVnaW5uaW5nIG9mIGxpbmUgKyB3aGl0ZXNwYWNlXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeW2EtekEtWl1bYS16QS1aMC05X1xcLV0qXFxcXCguKlxcXFwpJyxcbiAgICAgICAgaWxsZWdhbDogJ1tcXFxcbl0nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAndGl0bGUnLCBiZWdpbjogJ1xcXFxiW2EtekEtWl1bYS16QS1aMC05X1xcLV0qJ30sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBIRVhfQ09MT1IsXG4gICAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyBhdHRyaWJ1dGVzXG4gICAgICAvLyAgLSBvbmx5IGZyb20gYmVnaW5uaW5nIG9mIGxpbmUgKyB3aGl0ZXNwYWNlXG4gICAgICAvLyAgLSBtdXN0IGhhdmUgd2hpdGVzcGFjZSBhZnRlciBpdFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBBVFRSSUJVVEVTLnJldmVyc2UoKS5qb2luKCd8JykgKyAnKVxcXFxiJyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgLy8gdmFsdWUgY29udGFpbmVyXG4gICAgICAgICAgZW5kOiAvO3wkLyxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgSEVYX0NPTE9SLFxuICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgIF0sXG4gICAgICAgICAgaWxsZWdhbDogL1xcLi8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgREVUQUlMUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXFtcXG4obXVsdGlwYXJ0KT8nLCBlbmQ6ICdcXFxcXVxcbidcbiAgfTtcbiAgdmFyIFRJTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcXFxkezR9LVxcXFxkezJ9LVxcXFxkezJ9KFxcXFxzKylcXFxcZHsyfTpcXFxcZHsyfTpcXFxcZHsyfVxcLlxcXFxkK1onXG4gIH07XG4gIHZhciBQUk9HUkVTU1ZBTFVFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICcoXFxcXCt8LSlcXFxcZCsnXG4gIH07XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICByZWxldmFuY2U6IDEwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXih0ZXN0fHRlc3Rpbmd8c3VjY2Vzc3xzdWNjZXNzZnVsfGZhaWx1cmV8ZXJyb3J8c2tpcHx4ZmFpbHx1eHN1Y2Nlc3MpKDo/KVxcXFxzKyh0ZXN0KT8nIH0sXG4gICAgICB7IGJlZ2luOiAnXnByb2dyZXNzKDo/KShcXFxccyspPyhwb3B8cHVzaCk/JyB9LFxuICAgICAgeyBiZWdpbjogJ150YWdzOicgfSxcbiAgICAgIHsgYmVnaW46ICdedGltZTonIH1cbiAgICBdLFxuICB9O1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIERFVEFJTFMsXG4gICAgICBUSU1FLFxuICAgICAgUFJPR1JFU1NWQUxVRSxcbiAgICAgIEtFWVdPUkRTXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNXSUZUX0tFWVdPUkRTID0ge1xuICAgICAga2V5d29yZDogJyNhdmFpbGFibGUgI2NvbG9yTGl0ZXJhbCAjY29sdW1uICNlbHNlICNlbHNlaWYgI2VuZGlmICNmaWxlICcgK1xuICAgICAgICAnI2ZpbGVMaXRlcmFsICNmdW5jdGlvbiAjaWYgI2ltYWdlTGl0ZXJhbCAjbGluZSAjc2VsZWN0b3IgI3NvdXJjZUxvY2F0aW9uICcgK1xuICAgICAgICAnXyBfX0NPTFVNTl9fIF9fRklMRV9fIF9fRlVOQ1RJT05fXyBfX0xJTkVfXyBBbnkgYXMgYXMhIGFzPyBhc3NvY2lhdGVkdHlwZSAnICtcbiAgICAgICAgJ2Fzc29jaWF0aXZpdHkgYnJlYWsgY2FzZSBjYXRjaCBjbGFzcyBjb250aW51ZSBjb252ZW5pZW5jZSBkZWZhdWx0IGRlZmVyIGRlaW5pdCBkaWRTZXQgZG8gJyArXG4gICAgICAgICdkeW5hbWljIGR5bmFtaWNUeXBlIGVsc2UgZW51bSBleHRlbnNpb24gZmFsbHRocm91Z2ggZmFsc2UgZmlsZXByaXZhdGUgZmluYWwgZm9yIGZ1bmMgJyArXG4gICAgICAgICdnZXQgZ3VhcmQgaWYgaW1wb3J0IGluIGluZGlyZWN0IGluZml4IGluaXQgaW5vdXQgaW50ZXJuYWwgaXMgbGF6eSBsZWZ0IGxldCAnICtcbiAgICAgICAgJ211dGF0aW5nIG5pbCBub25lIG5vbm11dGF0aW5nIG9wZW4gb3BlcmF0b3Igb3B0aW9uYWwgb3ZlcnJpZGUgcG9zdGZpeCBwcmVjZWRlbmNlICcgK1xuICAgICAgICAncHJlZml4IHByaXZhdGUgcHJvdG9jb2wgUHJvdG9jb2wgcHVibGljIHJlcGVhdCByZXF1aXJlZCByZXRocm93cyByZXR1cm4gJyArXG4gICAgICAgICdyaWdodCBzZWxmIFNlbGYgc2V0IHN0YXRpYyBzdHJ1Y3Qgc3Vic2NyaXB0IHN1cGVyIHN3aXRjaCB0aHJvdyB0aHJvd3MgdHJ1ZSAnICtcbiAgICAgICAgJ3RyeSB0cnkhIHRyeT8gVHlwZSB0eXBlYWxpYXMgdW5vd25lZCB2YXIgd2VhayB3aGVyZSB3aGlsZSB3aWxsU2V0JyxcbiAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIG5pbCcsXG4gICAgICBidWlsdF9pbjogJ2FicyBhZHZhbmNlIGFsaWdub2YgYWxpZ25vZlZhbHVlIGFueUdlbmVyYXRvciBhc3NlcnQgYXNzZXJ0aW9uRmFpbHVyZSAnICtcbiAgICAgICAgJ2JyaWRnZUZyb21PYmplY3RpdmVDIGJyaWRnZUZyb21PYmplY3RpdmVDVW5jb25kaXRpb25hbCBicmlkZ2VUb09iamVjdGl2ZUMgJyArXG4gICAgICAgICdicmlkZ2VUb09iamVjdGl2ZUNVbmNvbmRpdGlvbmFsIGMgY29udGFpbnMgY291bnQgY291bnRFbGVtZW50cyBjb3VudExlYWRpbmdaZXJvcyAnICtcbiAgICAgICAgJ2RlYnVnUHJpbnQgZGVidWdQcmludGxuIGRpc3RhbmNlIGRyb3BGaXJzdCBkcm9wTGFzdCBkdW1wIGVuY29kZUJpdHNBc1dvcmRzICcgK1xuICAgICAgICAnZW51bWVyYXRlIGVxdWFsIGZhdGFsRXJyb3IgZmlsdGVyIGZpbmQgZ2V0QnJpZGdlZE9iamVjdGl2ZUNUeXBlIGdldFZhTGlzdCAnICtcbiAgICAgICAgJ2luZGljZXMgaW5zZXJ0aW9uU29ydCBpc0JyaWRnZWRUb09iamVjdGl2ZUMgaXNCcmlkZ2VkVmVyYmF0aW1Ub09iamVjdGl2ZUMgJyArXG4gICAgICAgICdpc1VuaXF1ZWx5UmVmZXJlbmNlZCBpc1VuaXF1ZWx5UmVmZXJlbmNlZE5vbk9iakMgam9pbiBsYXp5IGxleGljb2dyYXBoaWNhbENvbXBhcmUgJyArXG4gICAgICAgICdtYXAgbWF4IG1heEVsZW1lbnQgbWluIG1pbkVsZW1lbnQgbnVtZXJpY0Nhc3Qgb3ZlcmxhcHMgcGFydGl0aW9uIHBvc2l4ICcgK1xuICAgICAgICAncHJlY29uZGl0aW9uIHByZWNvbmRpdGlvbkZhaWx1cmUgcHJpbnQgcHJpbnRsbiBxdWlja1NvcnQgcmVhZExpbmUgcmVkdWNlIHJlZmxlY3QgJyArXG4gICAgICAgICdyZWludGVycHJldENhc3QgcmV2ZXJzZSByb3VuZFVwVG9BbGlnbm1lbnQgc2l6ZW9mIHNpemVvZlZhbHVlIHNvcnQgc3BsaXQgJyArXG4gICAgICAgICdzdGFydHNXaXRoIHN0cmlkZSBzdHJpZGVvZiBzdHJpZGVvZlZhbHVlIHN3YXAgdG9TdHJpbmcgdHJhbnNjb2RlICcgK1xuICAgICAgICAndW5kZXJlc3RpbWF0ZUNvdW50IHVuc2FmZUFkZHJlc3NPZiB1bnNhZmVCaXRDYXN0IHVuc2FmZURvd25jYXN0IHVuc2FmZVVud3JhcCAnICtcbiAgICAgICAgJ3Vuc2FmZVJlZmxlY3Qgd2l0aEV4dGVuZGVkTGlmZXRpbWUgd2l0aE9iamVjdEF0UGx1c1plcm8gd2l0aFVuc2FmZVBvaW50ZXIgJyArXG4gICAgICAgICd3aXRoVW5zYWZlUG9pbnRlclRvT2JqZWN0IHdpdGhVbnNhZmVNdXRhYmxlUG9pbnRlciB3aXRoVW5zYWZlTXV0YWJsZVBvaW50ZXJzICcgK1xuICAgICAgICAnd2l0aFVuc2FmZVBvaW50ZXIgd2l0aFVuc2FmZVBvaW50ZXJzIHdpdGhWYUxpc3QgemlwJ1xuICAgIH07XG5cbiAgdmFyIFRZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFx1MDBDMC1cXHUwMkI4XFwnXSonLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICAvLyBzbGlnaHRseSBtb3JlIHNwZWNpYWwgdG8gc3dpZnRcbiAgdmFyIE9QVElPTkFMX1VTSU5HX1RZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFx1MDBDMC1cXHUwMkI4XFwnXSpbIT9dJ1xuICB9XG4gIHZhciBCTE9DS19DT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICcvXFxcXConLFxuICAgICdcXFxcKi8nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgIH1cbiAgKTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcXFxcXCgvLCBlbmQ6ICdcXFxcKScsXG4gICAga2V5d29yZHM6IFNXSUZUX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXSAvLyBhc3NpZ25lZCBsYXRlclxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXCJcIlwiLywgZW5kOiAvXCJcIlwiL30sXG4gICAgICB7YmVnaW46IC9cIi8sIGVuZDogL1wiL30sXG4gICAgXVxuICB9O1xuICB2YXIgTlVNQkVSUyA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJ1xcXFxiKFtcXFxcZF9dKyhcXFxcLltcXFxcZGVFX10rKT98MHhbYS1mQS1GMC05X10rKFxcXFwuW2EtZkEtRjAtOXBfXSspP3wwYlswMV9dK3wwb1swLTdfXSspXFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIFNVQlNULmNvbnRhaW5zID0gW05VTUJFUlNdO1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IFNXSUZUX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBTVFJJTkcsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBCTE9DS19DT01NRU5ULFxuICAgICAgT1BUSU9OQUxfVVNJTkdfVFlQRSxcbiAgICAgIFRZUEUsXG4gICAgICBOVU1CRVJTLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgYmVnaW46IC9bQS1aYS16JF9dWzAtOUEtWmEteiRfXSovXG4gICAgICAgICAgfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC88LywgZW5kOiAvPi9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogU1dJRlRfS0VZV09SRFMsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAge2JlZ2luOiAnOid9IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaWxsZWdhbDogL1tcIiddL1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogL1xcW3wlL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3RydWN0IHByb3RvY29sIGNsYXNzIGV4dGVuc2lvbiBlbnVtJyxcbiAgICAgICAga2V5d29yZHM6IFNXSUZUX0tFWVdPUkRTLFxuICAgICAgICBlbmQ6ICdcXFxceycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAvW0EtWmEteiRfXVtcXHUwMEMwLVxcdTAyQjgwLTlBLVphLXokX10qL30pXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCAvLyBAYXR0cmlidXRlc1xuICAgICAgICBiZWdpbjogJyhAZGlzY2FyZGFibGVSZXN1bHR8QHdhcm5fdW51c2VkX3Jlc3VsdHxAZXhwb3J0ZWR8QGxhenl8QG5vZXNjYXBlfCcgK1xuICAgICAgICAgICAgICAgICAgJ0BOU0NvcHlpbmd8QE5TTWFuYWdlZHxAb2JqY3xAb2JqY01lbWJlcnN8QGNvbnZlbnRpb258QHJlcXVpcmVkfCcgK1xuICAgICAgICAgICAgICAgICAgJ0Bub3JldHVybnxASUJBY3Rpb258QElCRGVzaWduYWJsZXxASUJJbnNwZWN0YWJsZXxASUJPdXRsZXR8JyArXG4gICAgICAgICAgICAgICAgICAnQGluZml4fEBwcmVmaXh8QHBvc3RmaXh8QGF1dG9jbG9zdXJlfEB0ZXN0YWJsZXxAYXZhaWxhYmxlfCcgK1xuICAgICAgICAgICAgICAgICAgJ0Bub25vYmpjfEBOU0FwcGxpY2F0aW9uTWFpbnxAVUlBcHBsaWNhdGlvbk1haW58QGR5bmFtaWNNZW1iZXJMb29rdXB8JyArXG4gICAgICAgICAgICAgICAgICAnQHByb3BlcnR5V3JhcHBlciknXG5cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbXBvcnQnLCBlbmQ6IC8kLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTElORV9DT01NRU5UX01PREUsIEJMT0NLX0NPTU1FTlRdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQ09NTUVOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogL1xcJG5vb3BcXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBiZWdpbjogL1xcKC8sXG4gICAgICBlbmQ6IC9cXCkvLFxuICAgICAgY29udGFpbnM6IFsnc2VsZicsIHtcbiAgICAgICAgYmVnaW46IC9cXFxcLi9cbiAgICAgIH1dXG4gICAgfV0sXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogL1xcJCg/IW5vb3ApW2EtekEtWl1bX2EtekEtWjAtOV0qLyxcbiAgICBlbmQ6IC9cXCgvLFxuICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgfTtcblxuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvJVtfYS16QS1aMC05Ol0qLyxcbiAgICBlbmQ6ICclJ1xuICB9O1xuXG4gIHZhciBFU0NBUEVfU0VRVUVOQ0UgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogL1xcXFwuL1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIENPTU1FTlQsXG4gICAgICBGVU5DVElPTixcbiAgICAgIFZBUklBQkxFLFxuICAgICAgRVNDQVBFX1NFUVVFTkNFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIExJVEVSQUxTID0gJ3RydWUgZmFsc2UgeWVzIG5vIG51bGwnO1xuXG4gIC8vIERlZmluZSBrZXlzIGFzIHN0YXJ0aW5nIHdpdGggYSB3b3JkIGNoYXJhY3RlclxuICAvLyAuLi5jb250YWluaW5nIHdvcmQgY2hhcnMsIHNwYWNlcywgY29sb25zLCBmb3J3YXJkLXNsYXNoZXMsIGh5cGhlbnMgYW5kIHBlcmlvZHNcbiAgLy8gLi4uYW5kIGVuZGluZyB3aXRoIGEgY29sb24gZm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkgYSBzcGFjZSwgdGFiIG9yIG5ld2xpbmUuXG4gIC8vIFRoZSBZQU1MIHNwZWMgYWxsb3dzIGZvciBtdWNoIG1vcmUgdGhhbiB0aGlzLCBidXQgdGhpcyBjb3ZlcnMgbW9zdCB1c2UtY2FzZXMuXG4gIHZhciBLRVkgPSB7XG4gICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcd1tcXFxcdyA6XFxcXC8uLV0qOig/PVsgXFx0XXwkKScgfSxcbiAgICAgIHsgYmVnaW46ICdcIlxcXFx3W1xcXFx3IDpcXFxcLy4tXSpcIjooPz1bIFxcdF18JCknIH0sIC8vZG91YmxlIHF1b3RlZCBrZXlzXG4gICAgICB7IGJlZ2luOiAnXFwnXFxcXHdbXFxcXHcgOlxcXFwvLi1dKlxcJzooPz1bIFxcdF18JCknIH0gLy9zaW5nbGUgcXVvdGVkIGtleXNcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRFTVBMQVRFX1ZBUklBQkxFUyA9IHtcbiAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXHtcXHsnLCBlbmQ6ICdcXH1cXH0nIH0sIC8vIGppbmphIHRlbXBsYXRlcyBBbnNpYmxlXG4gICAgICB7IGJlZ2luOiAnJVxceycsIGVuZDogJ1xcfScgfSAvLyBSdWJ5IGkxOG5cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogLycvLCBlbmQ6IC8nL30sXG4gICAgICB7YmVnaW46IC9cIi8sIGVuZDogL1wiL30sXG4gICAgICB7YmVnaW46IC9cXFMrL31cbiAgICBdLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBURU1QTEFURV9WQVJJQUJMRVNcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsneW1sJywgJ1lBTUwnLCAneWFtbCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBLRVksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ14tLS1cXHMqJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7IC8vIG11bHRpIGxpbmUgc3RyaW5nXG4gICAgICAgIC8vIEJsb2NrcyBzdGFydCB3aXRoIGEgfCBvciA+IGZvbGxvd2VkIGJ5IGEgbmV3bGluZVxuICAgICAgICAvL1xuICAgICAgICAvLyBJbmRlbnRhdGlvbiBvZiBzdWJzZXF1ZW50IGxpbmVzIG11c3QgYmUgdGhlIHNhbWUgdG9cbiAgICAgICAgLy8gYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBibG9ja1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1tcXFxcfD5dKFswLTldP1srLV0pP1sgXSpcXFxcbiggKilbXFxcXFMgXStcXFxcbihcXFxcMltcXFxcUyBdK1xcXFxuPykqJyxcbiAgICAgIH0sXG4gICAgICB7IC8vIFJ1YnkvUmFpbHMgZXJiXG4gICAgICAgIGJlZ2luOiAnPCVbJT0tXT8nLCBlbmQ6ICdbJS1dPyU+JyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdydWJ5JyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8vIGxvY2FsIHRhZ3NcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGJlZ2luOiAnIScgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICB9LFxuICAgICAgeyAvLyBkYXRhIHR5cGVcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGJlZ2luOiAnISEnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgfSxcbiAgICAgIHsgLy8gZnJhZ21lbnQgaWQgJnJlZlxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcmJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICckJyxcbiAgICAgIH0sXG4gICAgICB7IC8vIGZyYWdtZW50IHJlZmVyZW5jZSAqcmVmXG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ1xcXFwqJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICckJ1xuICAgICAgfSxcbiAgICAgIHsgLy8gYXJyYXkgbGlzdGluZ1xuICAgICAgICBjbGFzc05hbWU6ICdidWxsZXQnLFxuICAgICAgLy8gVE9ETzogcmVtb3ZlIHwkIGhhY2sgd2hlbiB3ZSBoYXZlIHByb3BlciBsb29rLWFoZWFkIHN1cHBvcnRcbiAgICAgIGJlZ2luOiAnXFxcXC0oPz1bIF18JCknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiBMSVRFUkFMUyxcbiAgICAgICAga2V5d29yZHM6IHtsaXRlcmFsOiBMSVRFUkFMU31cbiAgICAgIH0sXG4gICAgICAvLyBudW1iZXJzIGFyZSBhbnkgdmFsaWQgQy1zdHlsZSBudW1iZXIgdGhhdFxuICAgICAgLy8gc2l0IGlzb2xhdGVkIGZyb20gb3RoZXIgd29yZHNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgKyAnXFxcXGInXG4gICAgICB9LFxuICAgICAgU1RSSU5HXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgLy8gdmVyc2lvbiBvZiBmb3JtYXQgYW5kIHRvdGFsIGFtb3VudCBvZiB0ZXN0Y2FzZXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ15UQVAgdmVyc2lvbiAoXFxcXGQrKSQnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ14xXFxcXC5cXFxcLihcXFxcZCspJCcgfVxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIC8vIFlBTUwgYmxvY2tcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcoXFxzKyk/LS0tJCcsIGVuZDogJ1xcXFwuXFxcXC5cXFxcLiQnLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3lhbWwnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG5cdCAgLy8gdGVzdGNhc2UgbnVtYmVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnIChcXFxcZCspICdcbiAgICAgIH0sXG5cdCAgLy8gdGVzdGNhc2Ugc3RhdHVzIGFuZCBkZXNjcmlwdGlvblxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICdeb2snIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ15ub3Qgb2snIH1cbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RrJ10sXG4gICAga2V5d29yZHM6ICdhZnRlciBhcHBlbmQgYXBwbHkgYXJyYXkgYXV0b19leGVjb2sgYXV0b19pbXBvcnQgYXV0b19sb2FkIGF1dG9fbWtpbmRleCAnICtcbiAgICAgICdhdXRvX21raW5kZXhfb2xkIGF1dG9fcXVhbGlmeSBhdXRvX3Jlc2V0IGJnZXJyb3IgYmluYXJ5IGJyZWFrIGNhdGNoIGNkIGNoYW4gY2xvY2sgJyArXG4gICAgICAnY2xvc2UgY29uY2F0IGNvbnRpbnVlIGRkZSBkaWN0IGVuY29kaW5nIGVvZiBlcnJvciBldmFsIGV4ZWMgZXhpdCBleHByIGZibG9ja2VkICcgK1xuICAgICAgJ2Zjb25maWd1cmUgZmNvcHkgZmlsZSBmaWxlZXZlbnQgZmlsZW5hbWUgZmx1c2ggZm9yIGZvcmVhY2ggZm9ybWF0IGdldHMgZ2xvYiBnbG9iYWwgJyArXG4gICAgICAnaGlzdG9yeSBodHRwIGlmIGluY3IgaW5mbyBpbnRlcnAgam9pbiBsYXBwZW5kfDEwIGxhc3NpZ258MTAgbGluZGV4fDEwIGxpbnNlcnR8MTAgbGlzdCAnICtcbiAgICAgICdsbGVuZ3RofDEwIGxvYWQgbHJhbmdlfDEwIGxyZXBlYXR8MTAgbHJlcGxhY2V8MTAgbHJldmVyc2V8MTAgbHNlYXJjaHwxMCBsc2V0fDEwIGxzb3J0fDEwICcrXG4gICAgICAnbWF0aGZ1bmMgbWF0aG9wIG1lbW9yeSBtc2djYXQgbmFtZXNwYWNlIG9wZW4gcGFja2FnZSBwYXJyYXkgcGlkIHBrZzo6Y3JlYXRlIHBrZ19ta0luZGV4ICcrXG4gICAgICAncGxhdGZvcm0gcGxhdGZvcm06OnNoZWxsIHByb2MgcHV0cyBwd2QgcmVhZCByZWZjaGFuIHJlZ2V4cCByZWdpc3RyeSByZWdzdWJ8MTAgcmVuYW1lICcrXG4gICAgICAncmV0dXJuIHNhZmUgc2NhbiBzZWVrIHNldCBzb2NrZXQgc291cmNlIHNwbGl0IHN0cmluZyBzdWJzdCBzd2l0Y2ggdGNsX2VuZE9mV29yZCAnK1xuICAgICAgJ3RjbF9maW5kTGlicmFyeSB0Y2xfc3RhcnRPZk5leHRXb3JkIHRjbF9zdGFydE9mUHJldmlvdXNXb3JkIHRjbF93b3JkQnJlYWtBZnRlciAnK1xuICAgICAgJ3RjbF93b3JkQnJlYWtCZWZvcmUgdGNsdGVzdCB0Y2x2YXJzIHRlbGwgdGltZSB0bSB0cmFjZSB1bmtub3duIHVubG9hZCB1bnNldCB1cGRhdGUgJytcbiAgICAgICd1cGxldmVsIHVwdmFyIHZhcmlhYmxlIHZ3YWl0IHdoaWxlJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCc7WyBcXFxcdF0qIycsICckJyksXG4gICAgICBobGpzLkNPTU1FTlQoJ15bIFxcXFx0XSojJywgJyQnKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3Byb2MnLFxuICAgICAgICBlbmQ6ICdbXFxcXHtdJyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICBiZWdpbjogJ1sgXFxcXHRcXFxcblxcXFxyXSsoOjopP1thLXpBLVpfXSgoOjopP1thLXpBLVowLTlfXSkqJyxcbiAgICAgICAgICAgIGVuZDogJ1sgXFxcXHRcXFxcblxcXFxyXScsXG4gICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcJChcXFxceyk/KDo6KT9bYS16QS1aX10oKDo6KT9bYS16QS1aMC05X10pKlxcXFwoKFthLXpBLVowLTlfXSkqXFxcXCknLFxuICAgICAgICAgICAgZW5kOiAnW15hLXpBLVowLTlfXFxcXH1cXFxcJF0nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwkKFxcXFx7KT8oOjopP1thLXpBLVpfXSgoOjopP1thLXpBLVowLTlfXSkqJyxcbiAgICAgICAgICAgIGVuZDogJyhcXFxcKSk/W15hLXpBLVowLTlfXFxcXH1cXFxcJF0nXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgaGxqcy5DX05VTUJFUl9NT0RFXVxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1BTkQgPSB7XG4gICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICBiZWdpbjogL1xcXFwvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IC9bYS16QS1aXFx1MDQzMC1cXHUwNDRmXFx1MDQxMC1cXHUwNDJmXStbKl0/L30sXG4gICAgICAgICAge2JlZ2luOiAvW15hLXpBLVpcXHUwNDMwLVxcdTA0NGZcXHUwNDEwLVxcdTA0MmYwLTldL31cbiAgICAgICAgXSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsIC8vIGJlY2F1c2UgaXQgbG9va3MgbGlrZSBhdHRyaWJ1dGVzIGluIEhUTUwgdGFnc1xuICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgIHtiZWdpbjogL1xcWy8sIGVuZDogL1xcXS99LFxuICAgICAgICAgICAgICAgIHtiZWdpbjogL1xcey8sIGVuZDogL1xcfS99XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAvXFxzKj1cXHMqLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgICAgYmVnaW46IC8tP1xcZCpcXC4/XFxkKyhwdHxwY3xtbXxjbXxpbnxkZHxjY3xleHxlbSk/L1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT01NQU5ELFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmb3JtdWxhJyxcbiAgICAgICAgY29udGFpbnM6IFtDT01NQU5EXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL1xcJFxcJC8sIGVuZDogL1xcJFxcJC99LFxuICAgICAgICAgIHtiZWdpbjogL1xcJC8sIGVuZDogL1xcJC99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICclJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRfSU5fVFlQRVMgPSAnYm9vbCBieXRlIGkxNiBpMzIgaTY0IGRvdWJsZSBzdHJpbmcgYmluYXJ5JztcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ25hbWVzcGFjZSBjb25zdCB0eXBlZGVmIHN0cnVjdCBlbnVtIHNlcnZpY2UgZXhjZXB0aW9uIHZvaWQgb25ld2F5IHNldCBsaXN0IG1hcCByZXF1aXJlZCBvcHRpb25hbCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgQlVJTFRfSU5fVFlQRVMsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3N0cnVjdCBlbnVtIHNlcnZpY2UgZXhjZXB0aW9uJywgZW5kOiAvXFx7LyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgc3RhcnRzOiB7ZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWV9IC8vIGhhY2s6IGVhdGluZyBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCB0aXRsZVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGIoc2V0fGxpc3R8bWFwKVxcXFxzKjwnLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IEJVSUxUX0lOX1RZUEVTLFxuICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVFBJRCA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnWzEtOV1bMC05XSonLCAvKiBubyBsZWFkaW5nIHplcm9zICovXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBUUExBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICc6W15cXFxcXV0rJ1xuICB9O1xuICB2YXIgVFBEQVRBID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJyhBUnxQfFBBWUxPQUR8UFJ8UnxTUnxSU1J8TEJMfFZSfFVBTE18TUVTU0FHRXxVVE9PTHxVRlJBTUV8VElNRVJ8JyArXG4gICAgJ1RJTUVSX09WRVJGTE9XfEpPSU5UX01BWF9TUEVFRHxSRVNVTUVfUFJPR3xESUFHX1JFQylcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICBjb250YWluczogW1xuICAgICAgJ3NlbGYnLFxuICAgICAgVFBJRCxcbiAgICAgIFRQTEFCRUxcbiAgICBdXG4gIH07XG4gIHZhciBUUElPID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJyhBSXxBT3xESXxET3xGfFJJfFJPfFVJfFVPfEdJfEdPfFNJfFNPKVxcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAnc2VsZicsXG4gICAgICBUUElELFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwgLyogZm9yIHBvcyBzZWN0aW9uIGF0IGJvdHRvbSAqL1xuICAgICAgVFBMQUJFTFxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnQUJPUlQgQUNDIEFESlVTVCBBTkQgQVBfTEQgQlJFQUsgQ0FMTCBDTlQgQ09MIENPTkRJVElPTiBDT05GSUcgREEgREIgJyArXG4gICAgICAgICdESVYgREVURUNUIEVMU0UgRU5EIEVOREZPUiBFUlJfTlVNIEVSUk9SX1BST0cgRklORSBGT1IgR1AgR1VBUkQgSU5DICcgK1xuICAgICAgICAnSUYgSk1QIExJTkVBUl9NQVhfU1BFRUQgTE9DSyBNT0QgTU9OSVRPUiBPRkZTRVQgT2Zmc2V0IE9SIE9WRVJSSURFICcgK1xuICAgICAgICAnUEFVU0UgUFJFRyBQVEggUlRfTEQgUlVOIFNFTEVDVCBTS0lQIFNraXAgVEEgVEIgVE8gVE9PTF9PRkZTRVQgJyArXG4gICAgICAgICdUb29sX09mZnNldCBVRiBVVCBVRlJBTUVfTlVNIFVUT09MX05VTSBVTkxPQ0sgV0FJVCBYIFkgWiBXIFAgUiBTVFJMRU4gJyArXG4gICAgICAgICdTVUJTVFIgRklORFNUUiBWT0ZGU0VUIFBST0cgQVRUUiBNTiBQT1MnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ09OIE9GRiBtYXhfc3BlZWQgTFBPUyBKUE9TIEVOQUJMRSBESVNBQkxFIFNUQVJUIFNUT1AgUkVTRVQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgVFBEQVRBLFxuICAgICAgVFBJTyxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnLyhQUk9HfEFUVFJ8TU58UE9TfEVORClcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIHRoaXMgaXMgZm9yIGNhc2VzIGxpa2UgLENBTEwgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnKENBTEx8UlVOfFBPSU5UX0xPR0lDfExCTClcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIHRoaXMgaXMgZm9yIGNhc2VzIGxpa2UgQ05UMTAwIHdoZXJlIHRoZSBkZWZhdWx0IGxleGVtZXMgZG8gbm90XG4gICAgICAgICAqIHNlcGFyYXRlIHRoZSBrZXl3b3JkIGFuZCB0aGUgbnVtYmVyICovXG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKEFDQ3xDTlR8U2tpcHxPZmZzZXR8UFNQRHxSVF9MRHxBUF9MRHxUb29sX09mZnNldCknXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvKiB0byBjYXRjaCBudW1iZXJzIHRoYXQgZG8gbm90IGhhdmUgYSB3b3JkIGJvdW5kYXJ5IG9uIHRoZSBsZWZ0ICovXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGQrKHNlY3xtc2VjfG1tL3NlY3xjbS9taW58aW5jaC9taW58ZGVnL3NlY3xtbXxpbnxjbSk/XFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJy8vJywgJ1s7JF0nKSxcbiAgICAgIGhsanMuQ09NTUVOVCgnIScsICdbOyRdJyksXG4gICAgICBobGpzLkNPTU1FTlQoJy0tZWc6JywgJyQnKSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFwkW0EtWmEtejAtOV9dKydcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICB9O1xuXG4gIHZhciBGVU5DVElPTl9OQU1FUyA9ICdhdHRyaWJ1dGUgYmxvY2sgY29uc3RhbnQgY3ljbGUgZGF0ZSBkdW1wIGluY2x1ZGUgJyArXG4gICAgICAgICAgICAgICAgICAnbWF4IG1pbiBwYXJlbnQgcmFuZG9tIHJhbmdlIHNvdXJjZSB0ZW1wbGF0ZV9mcm9tX3N0cmluZyc7XG5cbiAgdmFyIEZVTkNUSU9OUyA9IHtcbiAgICBiZWdpbktleXdvcmRzOiBGVU5DVElPTl9OQU1FUyxcbiAgICBrZXl3b3Jkczoge25hbWU6IEZVTkNUSU9OX05BTUVTfSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFBBUkFNU1xuICAgIF1cbiAgfTtcblxuICB2YXIgRklMVEVSID0ge1xuICAgIGJlZ2luOiAvXFx8W0EtWmEtel9dKzo/LyxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhYnMgYmF0Y2ggY2FwaXRhbGl6ZSBjb2x1bW4gY29udmVydF9lbmNvZGluZyBkYXRlIGRhdGVfbW9kaWZ5IGRlZmF1bHQgJyArXG4gICAgICAnZXNjYXBlIGZpbHRlciBmaXJzdCBmb3JtYXQgaW5reV90b19odG1sIGlubGluZV9jc3Mgam9pbiBqc29uX2VuY29kZSBrZXlzIGxhc3QgJyArXG4gICAgICAnbGVuZ3RoIGxvd2VyIG1hcCBtYXJrZG93biBtZXJnZSBubDJiciBudW1iZXJfZm9ybWF0IHJhdyByZWR1Y2UgcmVwbGFjZSAnICtcbiAgICAgICdyZXZlcnNlIHJvdW5kIHNsaWNlIHNvcnQgc3BhY2VsZXNzIHNwbGl0IHN0cmlwdGFncyB0aXRsZSB0cmltIHVwcGVyIHVybF9lbmNvZGUnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBGVU5DVElPTlNcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRBR1MgPSAnYXBwbHkgYXV0b2VzY2FwZSBibG9jayBkZXByZWNhdGVkIGRvIGVtYmVkIGV4dGVuZHMgZmlsdGVyIGZsdXNoIGZvciBmcm9tICcgK1xuICAgICdpZiBpbXBvcnQgaW5jbHVkZSBtYWNybyBzYW5kYm94IHNldCB1c2UgdmVyYmF0aW0gd2l0aCc7XG5cbiAgVEFHUyA9IFRBR1MgKyAnICcgKyBUQUdTLnNwbGl0KCcgJykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiAnZW5kJyArIHR9KS5qb2luKCcgJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NyYWZ0Y21zJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgvXFx7Iy8sIC8jfS8pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xceyUvLCBlbmQ6IC8lfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogL1xcdysvLFxuICAgICAgICAgICAga2V5d29yZHM6IFRBR1MsXG4gICAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbRklMVEVSLCBGVU5DVElPTlNdLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHsvLCBlbmQ6IC99fS8sXG4gICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBGSUxURVIsIEZVTkNUSU9OU11cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXVswLTlBLVphLXokX10qJztcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaW4gaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoICcgK1xuICAgICAgJ2luc3RhbmNlb2Ygd2l0aCB0aHJvdyBjYXNlIGRlZmF1bHQgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgJyArXG4gICAgICAnbGV0IHlpZWxkIGNvbnN0IGNsYXNzIHB1YmxpYyBwcml2YXRlIHByb3RlY3RlZCBnZXQgc2V0IHN1cGVyICcgK1xuICAgICAgJ3N0YXRpYyBpbXBsZW1lbnRzIGVudW0gZXhwb3J0IGltcG9ydCBkZWNsYXJlIHR5cGUgbmFtZXNwYWNlIGFic3RyYWN0ICcgK1xuICAgICAgJ2FzIGZyb20gZXh0ZW5kcyBhc3luYyBhd2FpdCcsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkIE5hTiBJbmZpbml0eScsXG4gICAgYnVpbHRfaW46XG4gICAgICAnZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgJyArXG4gICAgICAnZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgJyArXG4gICAgICAnRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yICcgK1xuICAgICAgJ1R5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5ICcgK1xuICAgICAgJ0Zsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5ICcgK1xuICAgICAgJ1VpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlICcgK1xuICAgICAgJ21vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBhbnkgbnVtYmVyIGJvb2xlYW4gc3RyaW5nIHZvaWQgUHJvbWlzZSdcbiAgfTtcblxuICB2YXIgREVDT1JBVE9SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnQCcgKyBKU19JREVOVF9SRSxcbiAgfTtcblxuICB2YXIgQVJHUyA9XG4gIHtcbiAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgJ3NlbGYnLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG5cbiAgdmFyIFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBERUNPUkFUT1IsXG4gICAgICBBUkdTXG4gICAgXVxuICB9O1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwW2JCXVswMV0rKW4/JyB9LFxuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbb09dWzAtN10rKW4/JyB9LFxuICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICduPycgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdcXFxcJFxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW10gIC8vIGRlZmluZWQgbGF0ZXJcbiAgfTtcbiAgdmFyIEhUTUxfVEVNUExBVEUgPSB7XG4gICAgYmVnaW46ICdodG1sYCcsIGVuZDogJycsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdgJywgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgU1VCU1RcbiAgICAgIF0sXG4gICAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgfVxuICB9O1xuICB2YXIgQ1NTX1RFTVBMQVRFID0ge1xuICAgIGJlZ2luOiAnY3NzYCcsIGVuZDogJycsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdgJywgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgU1VCU1RcbiAgICAgIF0sXG4gICAgICBzdWJMYW5ndWFnZTogJ2NzcycsXG4gICAgfVxuICB9O1xuICB2YXIgVEVNUExBVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFNVQlNUXG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucyA9IFtcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBIVE1MX1RFTVBMQVRFLFxuICAgIENTU19URU1QTEFURSxcbiAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgTlVNQkVSLFxuICAgIGhsanMuUkVHRVhQX01PREVcbiAgXTtcblxuXG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RzJ10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL15cXHMqWydcIl11c2Ugc3RyaWN0WydcIl0vXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIEhUTUxfVEVNUExBVEUsXG4gICAgICBDU1NfVEVNUExBVEUsXG4gICAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTlVNQkVSLFxuICAgICAgeyAvLyBcInZhbHVlXCIgY29udGFpbmVyXG4gICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3xcXFxcYihjYXNlfHJldHVybnx0aHJvdylcXFxcYilcXFxccyonLFxuICAgICAgICBrZXl3b3JkczogJ3JldHVybiB0aHJvdyBjYXNlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLlJFR0VYUF9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFxcXFwoLio/XFxcXCl8JyArIGhsanMuSURFTlRfUkUgKyAnKVxcXFxzKj0+JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccyo9PicsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXChcXHMqXFwpLyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9bXFx7O10vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHsgYmVnaW46IEpTX0lERU5UX1JFIH0pLFxuICAgICAgICAgIFBBUkFNU1xuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAvJS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCAvLyAoKSA9PiB7fSBpcyBtb3JlIHR5cGljYWwgaW4gVHlwZVNjcmlwdFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NvbnN0cnVjdG9yJywgZW5kOiAvW1xceztdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgUEFSQU1TXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IC8vIHByZXZlbnQgcmVmZXJlbmNlcyBsaWtlIG1vZHVsZS5pZCBmcm9tIGJlaW5nIGhpZ2xpZ2h0ZWQgYXMgbW9kdWxlIGRlZmluaXRpb25zXG4gICAgICAgIGJlZ2luOiAvbW9kdWxlXFwuLyxcbiAgICAgICAga2V5d29yZHM6IHsgYnVpbHRfaW46ICdtb2R1bGUnIH0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ21vZHVsZScsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbnRlcmZhY2UnLCBlbmQ6IC9cXHsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogJ2ludGVyZmFjZSBleHRlbmRzJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbKC5dLyAvLyByZWxldmFuY2UgYm9vc3RlciBmb3IgYSBwYXR0ZXJuIGNvbW1vbiB0byBKUyBsaWJzOiBgJChzb21ldGhpbmcpYCBhbmQgYCQuc29tZXRoaW5nYFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLicgKyBobGpzLklERU5UX1JFLCByZWxldmFuY2U6IDAgLy8gaGFjazogcHJldmVudHMgZGV0ZWN0aW9uIG9mIGtleXdvcmRzIGFmdGVyIGRvdHNcbiAgICAgIH0sXG4gICAgICBERUNPUkFUT1IsXG4gICAgICBBUkdTXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgLy8gVmFsdWUgdHlwZXNcbiAgICAgICAgJ2NoYXIgdWNoYXIgdW5pY2hhciBpbnQgdWludCBsb25nIHVsb25nIHNob3J0IHVzaG9ydCBpbnQ4IGludDE2IGludDMyIGludDY0IHVpbnQ4ICcgK1xuICAgICAgICAndWludDE2IHVpbnQzMiB1aW50NjQgZmxvYXQgZG91YmxlIGJvb2wgc3RydWN0IGVudW0gc3RyaW5nIHZvaWQgJyArXG4gICAgICAgIC8vIFJlZmVyZW5jZSB0eXBlc1xuICAgICAgICAnd2VhayB1bm93bmVkIG93bmVkICcgK1xuICAgICAgICAvLyBNb2RpZmllcnNcbiAgICAgICAgJ2FzeW5jIHNpZ25hbCBzdGF0aWMgYWJzdHJhY3QgaW50ZXJmYWNlIG92ZXJyaWRlIHZpcnR1YWwgZGVsZWdhdGUgJyArXG4gICAgICAgIC8vIENvbnRyb2wgU3RydWN0dXJlc1xuICAgICAgICAnaWYgd2hpbGUgZG8gZm9yIGZvcmVhY2ggZWxzZSBzd2l0Y2ggY2FzZSBicmVhayBkZWZhdWx0IHJldHVybiB0cnkgY2F0Y2ggJyArXG4gICAgICAgIC8vIFZpc2liaWxpdHlcbiAgICAgICAgJ3B1YmxpYyBwcml2YXRlIHByb3RlY3RlZCBpbnRlcm5hbCAnICtcbiAgICAgICAgLy8gT3RoZXJcbiAgICAgICAgJ3VzaW5nIG5ldyB0aGlzIGdldCBzZXQgY29uc3Qgc3Rkb3V0IHN0ZGluIHN0ZGVyciB2YXInLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdEQnVzIEdMaWIgQ0NvZGUgR2VlIE9iamVjdCBHdGsgUG9zaXgnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ2ZhbHNlIHRydWUgbnVsbCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSBuYW1lc3BhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1teLDpcXFxcblxcXFxzXFxcXC5dJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInLFxuICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeIycsIGVuZDogJyQnLFxuICAgICAgICByZWxldmFuY2U6IDJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndmInXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYWRkaGFuZGxlciBhZGRyZXNzb2YgYWxpYXMgYW5kIGFuZGFsc28gYWdncmVnYXRlIGFuc2kgYXMgYXN5bmMgYXNzZW1ibHkgYXV0byBhd2FpdCBiaW5hcnkgYnkgYnlyZWYgYnl2YWwgJyArIC8qIGEtYiAqL1xuICAgICAgICAnY2FsbCBjYXNlIGNhdGNoIGNsYXNzIGNvbXBhcmUgY29uc3QgY29udGludWUgY3VzdG9tIGRlY2xhcmUgZGVmYXVsdCBkZWxlZ2F0ZSBkaW0gZGlzdGluY3QgZG8gJyArIC8qIGMtZCAqL1xuICAgICAgICAnZWFjaCBlcXVhbHMgZWxzZSBlbHNlaWYgZW5kIGVudW0gZXJhc2UgZXJyb3IgZXZlbnQgZXhpdCBleHBsaWNpdCBmaW5hbGx5IGZvciBmcmllbmQgZnJvbSBmdW5jdGlvbiAnICsgLyogZS1mICovXG4gICAgICAgICdnZXQgZ2xvYmFsIGdvdG8gZ3JvdXAgaGFuZGxlcyBpZiBpbXBsZW1lbnRzIGltcG9ydHMgaW4gaW5oZXJpdHMgaW50ZXJmYWNlIGludG8gaXMgaXNmYWxzZSBpc25vdCBpc3RydWUgaXRlcmF0b3IgJyArIC8qIGctaSAqL1xuICAgICAgICAnam9pbiBrZXkgbGV0IGxpYiBsaWtlIGxvb3AgbWUgbWlkIG1vZCBtb2R1bGUgbXVzdGluaGVyaXQgbXVzdG92ZXJyaWRlIG15YmFzZSBteWNsYXNzICcgKyAvKiBqLW0gKi9cbiAgICAgICAgJ25hbWVzcGFjZSBuYXJyb3dpbmcgbmV3IG5leHQgbm90IG5vdGluaGVyaXRhYmxlIG5vdG92ZXJyaWRhYmxlICcgKyAvKiBuICovXG4gICAgICAgICdvZiBvZmYgb24gb3BlcmF0b3Igb3B0aW9uIG9wdGlvbmFsIG9yIG9yZGVyIG9yZWxzZSBvdmVybG9hZHMgb3ZlcnJpZGFibGUgb3ZlcnJpZGVzICcgKyAvKiBvICovXG4gICAgICAgICdwYXJhbWFycmF5IHBhcnRpYWwgcHJlc2VydmUgcHJpdmF0ZSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVibGljICcgKyAvKiBwICovXG4gICAgICAgICdyYWlzZWV2ZW50IHJlYWRvbmx5IHJlZGltIHJlbSByZW1vdmVoYW5kbGVyIHJlc3VtZSByZXR1cm4gJyArIC8qIHIgKi9cbiAgICAgICAgJ3NlbGVjdCBzZXQgc2hhZG93cyBzaGFyZWQgc2tpcCBzdGF0aWMgc3RlcCBzdG9wIHN0cnVjdHVyZSBzdHJpY3Qgc3ViIHN5bmNsb2NrICcgKyAvKiBzICovXG4gICAgICAgICd0YWtlIHRleHQgdGhlbiB0aHJvdyB0byB0cnkgdW5pY29kZSB1bnRpbCB1c2luZyB3aGVuIHdoZXJlIHdoaWxlIHdpZGVuaW5nIHdpdGggd2l0aGV2ZW50cyB3cml0ZW9ubHkgeG9yIHlpZWxkJywgLyogdC15ICovXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2Jvb2xlYW4gYnl0ZSBjYm9vbCBjYnl0ZSBjY2hhciBjZGF0ZSBjZGVjIGNkYmwgY2hhciBjaW50IGNsbmcgY29iaiBjc2J5dGUgY3Nob3J0IGNzbmcgY3N0ciBjdHlwZSAnICsgIC8qIGItYyAqL1xuICAgICAgICAnZGF0ZSBkZWNpbWFsIGRpcmVjdGNhc3QgZG91YmxlIGdldHR5cGUgZ2V0eG1sbmFtZXNwYWNlIGlpZiBpbnRlZ2VyIGxvbmcgb2JqZWN0ICcgKyAvKiBkLW8gKi9cbiAgICAgICAgJ3NieXRlIHNob3J0IHNpbmdsZSBzdHJpbmcgdHJ5Y2FzdCB0eXBlb2YgdWludGVnZXIgdWxvbmcgdXNob3J0JywgLyogcy11ICovXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBub3RoaW5nJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogJy8vfHt8fXxlbmRpZnxnb3N1Ynx2YXJpYW50fHdlbmR8XlxcXFwkICcsIC8qIHJlc2VydmVkIGRlcHJlY2F0ZWQga2V5d29yZHMgKi9cbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjb250YWluczogW3tiZWdpbjogJ1wiXCInfV19KSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1xcJycsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnXFwnXFwnXFwnfDwhLS18LS0+JyxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlBIUkFTQUxfV09SRFNfTU9ERV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnPC8/JywgZW5kOiAnPicsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5QSFJBU0FMX1dPUkRTX01PREVdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsc2VpZiBlbmQgcmVnaW9uIGV4dGVybmFsc291cmNlJ31cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndmJzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2NhbGwgY2xhc3MgY29uc3QgZGltIGRvIGxvb3AgZXJhc2UgZXhlY3V0ZSBleGVjdXRlZ2xvYmFsIGV4aXQgZm9yIGVhY2ggbmV4dCBmdW5jdGlvbiAnICtcbiAgICAgICAgJ2lmIHRoZW4gZWxzZSBvbiBlcnJvciBvcHRpb24gZXhwbGljaXQgbmV3IHByaXZhdGUgcHJvcGVydHkgbGV0IGdldCBwdWJsaWMgcmFuZG9taXplICcgK1xuICAgICAgICAncmVkaW0gcmVtIHNlbGVjdCBjYXNlIHNldCBzdG9wIHN1YiB3aGlsZSB3ZW5kIHdpdGggZW5kIHRvIGVsc2VpZiBpcyBvciB4b3IgYW5kIG5vdCAnICtcbiAgICAgICAgJ2NsYXNzX2luaXRpYWxpemUgY2xhc3NfdGVybWluYXRlIGRlZmF1bHQgcHJlc2VydmUgaW4gbWUgYnl2YWwgYnlyZWYgc3RlcCByZXN1bWUgZ290bycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2xjYXNlIG1vbnRoIHZhcnR5cGUgaW5zdHJyZXYgdWJvdW5kIHNldGxvY2FsZSBnZXRvYmplY3QgcmdiIGdldHJlZiBzdHJpbmcgJyArXG4gICAgICAgICd3ZWVrZGF5bmFtZSBybmQgZGF0ZWFkZCBtb250aG5hbWUgbm93IGRheSBtaW51dGUgaXNhcnJheSBjYm9vbCByb3VuZCBmb3JtYXRjdXJyZW5jeSAnICtcbiAgICAgICAgJ2NvbnZlcnNpb25zIGNzbmcgdGltZXZhbHVlIHNlY29uZCB5ZWFyIHNwYWNlIGFicyBjbG5nIHRpbWVzZXJpYWwgZml4cyBsZW4gYXNjICcgK1xuICAgICAgICAnaXNlbXB0eSBtYXRocyBkYXRlc2VyaWFsIGF0biB0aW1lciBpc29iamVjdCBmaWx0ZXIgd2Vla2RheSBkYXRldmFsdWUgY2N1ciBpc2RhdGUgJyArXG4gICAgICAgICdpbnN0ciBkYXRlZGlmZiBmb3JtYXRkYXRldGltZSByZXBsYWNlIGlzbnVsbCByaWdodCBzZ24gYXJyYXkgc251bWVyaWMgbG9nIGNkYmwgaGV4ICcgK1xuICAgICAgICAnY2hyIGxib3VuZCBtc2dib3ggdWNhc2UgZ2V0bG9jYWxlIGNvcyBjZGF0ZSBjYnl0ZSBydHJpbSBqb2luIGhvdXIgb2N0IHR5cGVuYW1lIHRyaW0gJyArXG4gICAgICAgICdzdHJjb21wIGludCBjcmVhdGVvYmplY3QgbG9hZHBpY3R1cmUgdGFuIGZvcm1hdG51bWJlciBtaWQgc2NyaXB0ZW5naW5lYnVpbGR2ZXJzaW9uICcgK1xuICAgICAgICAnc2NyaXB0ZW5naW5lIHNwbGl0IHNjcmlwdGVuZ2luZW1pbm9ydmVyc2lvbiBjaW50IHNpbiBkYXRlcGFydCBsdHJpbSBzcXIgJyArXG4gICAgICAgICdzY3JpcHRlbmdpbmVtYWpvcnZlcnNpb24gdGltZSBkZXJpdmVkIGV2YWwgZGF0ZSBmb3JtYXRwZXJjZW50IGV4cCBpbnB1dGJveCBsZWZ0IGFzY3cgJyArXG4gICAgICAgICdjaHJ3IHJlZ2V4cCBzZXJ2ZXIgcmVzcG9uc2UgcmVxdWVzdCBjc3RyIGVycicsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBudWxsIG5vdGhpbmcgZW1wdHknXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAnLy8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XX0pLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAvJy8sXG4gICAgICAgIC8kLyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8JScsIGVuZDogJyU+JyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICd2YnNjcmlwdCdcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1ZfS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhY2NlcHRfb24gYWxpYXMgYWx3YXlzIGFsd2F5c19jb21iIGFsd2F5c19mZiBhbHdheXNfbGF0Y2ggYW5kIGFzc2VydCBhc3NpZ24gJyArXG4gICAgICAnYXNzdW1lIGF1dG9tYXRpYyBiZWZvcmUgYmVnaW4gYmluZCBiaW5zIGJpbnNvZiBiaXQgYnJlYWsgYnVmfDAgYnVmaWYwIGJ1ZmlmMSAnICtcbiAgICAgICdieXRlIGNhc2UgY2FzZXggY2FzZXogY2VsbCBjaGFuZGxlIGNoZWNrZXIgY2xhc3MgY2xvY2tpbmcgY21vcyBjb25maWcgY29uc3QgJyArXG4gICAgICAnY29uc3RyYWludCBjb250ZXh0IGNvbnRpbnVlIGNvdmVyIGNvdmVyZ3JvdXAgY292ZXJwb2ludCBjcm9zcyBkZWFzc2lnbiBkZWZhdWx0ICcgK1xuICAgICAgJ2RlZnBhcmFtIGRlc2lnbiBkaXNhYmxlIGRpc3QgZG8gZWRnZSBlbHNlIGVuZCBlbmRjYXNlIGVuZGNoZWNrZXIgZW5kY2xhc3MgJyArXG4gICAgICAnZW5kY2xvY2tpbmcgZW5kY29uZmlnIGVuZGZ1bmN0aW9uIGVuZGdlbmVyYXRlIGVuZGdyb3VwIGVuZGludGVyZmFjZSBlbmRtb2R1bGUgJyArXG4gICAgICAnZW5kcGFja2FnZSBlbmRwcmltaXRpdmUgZW5kcHJvZ3JhbSBlbmRwcm9wZXJ0eSBlbmRzcGVjaWZ5IGVuZHNlcXVlbmNlIGVuZHRhYmxlICcgK1xuICAgICAgJ2VuZHRhc2sgZW51bSBldmVudCBldmVudHVhbGx5IGV4cGVjdCBleHBvcnQgZXh0ZW5kcyBleHRlcm4gZmluYWwgZmlyc3RfbWF0Y2ggZm9yICcgK1xuICAgICAgJ2ZvcmNlIGZvcmVhY2ggZm9yZXZlciBmb3JrIGZvcmtqb2luIGZ1bmN0aW9uIGdlbmVyYXRlfDUgZ2VudmFyIGdsb2JhbCBoaWdoejAgaGlnaHoxICcgK1xuICAgICAgJ2lmIGlmZiBpZm5vbmUgaWdub3JlX2JpbnMgaWxsZWdhbF9iaW5zIGltcGxlbWVudHMgaW1wbGllcyBpbXBvcnQgaW5jZGlyIGluY2x1ZGUgJyArXG4gICAgICAnaW5pdGlhbCBpbm91dCBpbnB1dCBpbnNpZGUgaW5zdGFuY2UgaW50IGludGVnZXIgaW50ZXJjb25uZWN0IGludGVyZmFjZSBpbnRlcnNlY3QgJyArXG4gICAgICAnam9pbiBqb2luX2FueSBqb2luX25vbmUgbGFyZ2UgbGV0IGxpYmxpc3QgbGlicmFyeSBsb2NhbCBsb2NhbHBhcmFtIGxvZ2ljIGxvbmdpbnQgJyArXG4gICAgICAnbWFjcm9tb2R1bGUgbWF0Y2hlcyBtZWRpdW0gbW9kcG9ydCBtb2R1bGUgbmFuZCBuZWdlZGdlIG5ldHR5cGUgbmV3IG5leHR0aW1lIG5tb3MgJyArXG4gICAgICAnbm9yIG5vc2hvd2NhbmNlbGxlZCBub3Qgbm90aWYwIG5vdGlmMSBvciBvdXRwdXQgcGFja2FnZSBwYWNrZWQgcGFyYW1ldGVyIHBtb3MgJyArXG4gICAgICAncG9zZWRnZSBwcmltaXRpdmUgcHJpb3JpdHkgcHJvZ3JhbSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVsbDAgcHVsbDEgcHVsbGRvd24gcHVsbHVwICcgK1xuICAgICAgJ3B1bHNlc3R5bGVfb25kZXRlY3QgcHVsc2VzdHlsZV9vbmV2ZW50IHB1cmUgcmFuZCByYW5kYyByYW5kY2FzZSByYW5kc2VxdWVuY2UgcmNtb3MgJyArXG4gICAgICAncmVhbCByZWFsdGltZSByZWYgcmVnIHJlamVjdF9vbiByZWxlYXNlIHJlcGVhdCByZXN0cmljdCByZXR1cm4gcm5tb3MgcnBtb3MgcnRyYW4gJyArXG4gICAgICAncnRyYW5pZjAgcnRyYW5pZjEgc19hbHdheXMgc19ldmVudHVhbGx5IHNfbmV4dHRpbWUgc191bnRpbCBzX3VudGlsX3dpdGggc2NhbGFyZWQgJyArXG4gICAgICAnc2VxdWVuY2Ugc2hvcnRpbnQgc2hvcnRyZWFsIHNob3djYW5jZWxsZWQgc2lnbmVkIHNtYWxsIHNvZnQgc29sdmUgc3BlY2lmeSBzcGVjcGFyYW0gJyArXG4gICAgICAnc3RhdGljIHN0cmluZyBzdHJvbmcgc3Ryb25nMCBzdHJvbmcxIHN0cnVjdCBzdXBlciBzdXBwbHkwIHN1cHBseTEgc3luY19hY2NlcHRfb24gJyArXG4gICAgICAnc3luY19yZWplY3Rfb24gdGFibGUgdGFnZ2VkIHRhc2sgdGhpcyB0aHJvdWdob3V0IHRpbWUgdGltZXByZWNpc2lvbiB0aW1ldW5pdCB0cmFuICcgK1xuICAgICAgJ3RyYW5pZjAgdHJhbmlmMSB0cmkgdHJpMCB0cmkxIHRyaWFuZCB0cmlvciB0cmlyZWcgdHlwZSB0eXBlZGVmIHVuaW9uIHVuaXF1ZSB1bmlxdWUwICcgK1xuICAgICAgJ3Vuc2lnbmVkIHVudGlsIHVudGlsX3dpdGggdW50eXBlZCB1c2UgdXdpcmUgdmFyIHZlY3RvcmVkIHZpcnR1YWwgdm9pZCB3YWl0IHdhaXRfb3JkZXIgJyArXG4gICAgICAnd2FuZCB3ZWFrIHdlYWswIHdlYWsxIHdoaWxlIHdpbGRjYXJkIHdpcmUgd2l0aCB3aXRoaW4gd29yIHhub3IgeG9yJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ251bGwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJyRmaW5pc2ggJHN0b3AgJGV4aXQgJGZhdGFsICRlcnJvciAkd2FybmluZyAkaW5mbyAkcmVhbHRpbWUgJHRpbWUgJHByaW50dGltZXNjYWxlICcgK1xuICAgICAgJyRiaXRzdG9yZWFsICRiaXRzdG9zaG9ydHJlYWwgJGl0b3IgJHNpZ25lZCAkY2FzdCAkYml0cyAkc3RpbWUgJHRpbWVmb3JtYXQgJyArXG4gICAgICAnJHJlYWx0b2JpdHMgJHNob3J0cmVhbHRvYml0cyAkcnRvaSAkdW5zaWduZWQgJGFzc2VydG9uICRhc3NlcnRraWxsICRhc3NlcnRwYXNzb24gJyArXG4gICAgICAnJGFzc2VydGZhaWxvbiAkYXNzZXJ0bm9udmFjdW91c29uICRhc3NlcnRvZmYgJGFzc2VydGNvbnRyb2wgJGFzc2VydHBhc3NvZmYgJyArXG4gICAgICAnJGFzc2VydGZhaWxvZmYgJGFzc2VydHZhY3VvdXNvZmYgJGlzdW5ib3VuZGVkICRzYW1wbGVkICRmZWxsICRjaGFuZ2VkICRwYXN0X2djbGsgJyArXG4gICAgICAnJGZlbGxfZ2NsayAkY2hhbmdlZF9nY2xrICRyaXNpbmdfZ2NsayAkc3RlYWR5X2djbGsgJGNvdmVyYWdlX2NvbnRyb2wgJyArXG4gICAgICAnJGNvdmVyYWdlX2dldCAkY292ZXJhZ2Vfc2F2ZSAkc2V0X2NvdmVyYWdlX2RiX25hbWUgJHJvc2UgJHN0YWJsZSAkcGFzdCAnICtcbiAgICAgICckcm9zZV9nY2xrICRzdGFibGVfZ2NsayAkZnV0dXJlX2djbGsgJGZhbGxpbmdfZ2NsayAkY2hhbmdpbmdfZ2NsayAkZGlzcGxheSAnICtcbiAgICAgICckY292ZXJhZ2VfZ2V0X21heCAkY292ZXJhZ2VfbWVyZ2UgJGdldF9jb3ZlcmFnZSAkbG9hZF9jb3ZlcmFnZV9kYiAkdHlwZW5hbWUgJyArXG4gICAgICAnJHVucGFja2VkX2RpbWVuc2lvbnMgJGxlZnQgJGxvdyAkaW5jcmVtZW50ICRjbG9nMiAkbG4gJGxvZzEwICRleHAgJHNxcnQgJHBvdyAnICtcbiAgICAgICckZmxvb3IgJGNlaWwgJHNpbiAkY29zICR0YW4gJGNvdW50Yml0cyAkb25laG90ICRpc3Vua25vd24gJGZhdGFsICR3YXJuaW5nICcgK1xuICAgICAgJyRkaW1lbnNpb25zICRyaWdodCAkaGlnaCAkc2l6ZSAkYXNpbiAkYWNvcyAkYXRhbiAkYXRhbjIgJGh5cG90ICRzaW5oICRjb3NoICcgK1xuICAgICAgJyR0YW5oICRhc2luaCAkYWNvc2ggJGF0YW5oICRjb3VudG9uZXMgJG9uZWhvdDAgJGVycm9yICRpbmZvICRyYW5kb20gJyArXG4gICAgICAnJGRpc3RfY2hpX3NxdWFyZSAkZGlzdF9lcmxhbmcgJGRpc3RfZXhwb25lbnRpYWwgJGRpc3Rfbm9ybWFsICRkaXN0X3BvaXNzb24gJyArXG4gICAgICAnJGRpc3RfdCAkZGlzdF91bmlmb3JtICRxX2luaXRpYWxpemUgJHFfcmVtb3ZlICRxX2V4YW0gJGFzeW5jJGFuZCRhcnJheSAnICtcbiAgICAgICckYXN5bmMkbmFuZCRhcnJheSAkYXN5bmMkb3IkYXJyYXkgJGFzeW5jJG5vciRhcnJheSAkc3luYyRhbmQkYXJyYXkgJyArXG4gICAgICAnJHN5bmMkbmFuZCRhcnJheSAkc3luYyRvciRhcnJheSAkc3luYyRub3IkYXJyYXkgJHFfYWRkICRxX2Z1bGwgJHBzcHJpbnRmICcgK1xuICAgICAgJyRhc3luYyRhbmQkcGxhbmUgJGFzeW5jJG5hbmQkcGxhbmUgJGFzeW5jJG9yJHBsYW5lICRhc3luYyRub3IkcGxhbmUgJyArXG4gICAgICAnJHN5bmMkYW5kJHBsYW5lICRzeW5jJG5hbmQkcGxhbmUgJHN5bmMkb3IkcGxhbmUgJHN5bmMkbm9yJHBsYW5lICRzeXN0ZW0gJyArXG4gICAgICAnJGRpc3BsYXkgJGRpc3BsYXliICRkaXNwbGF5aCAkZGlzcGxheW8gJHN0cm9iZSAkc3Ryb2JlYiAkc3Ryb2JlaCAkc3Ryb2JlbyAnICtcbiAgICAgICckd3JpdGUgJHJlYWRtZW1iICRyZWFkbWVtaCAkd3JpdGVtZW1oICR2YWx1ZSRwbHVzYXJncyAnICtcbiAgICAgICckZHVtcHZhcnMgJGR1bXBvbiAkZHVtcGxpbWl0ICRkdW1wcG9ydHMgJGR1bXBwb3J0c29uICRkdW1wcG9ydHNsaW1pdCAnICtcbiAgICAgICckd3JpdGViICR3cml0ZWggJHdyaXRlbyAkbW9uaXRvciAkbW9uaXRvcmIgJG1vbml0b3JoICRtb25pdG9ybyAkd3JpdGVtZW1iICcgK1xuICAgICAgJyRkdW1wZmlsZSAkZHVtcG9mZiAkZHVtcGFsbCAkZHVtcGZsdXNoICRkdW1wcG9ydHNvZmYgJGR1bXBwb3J0c2FsbCAnICtcbiAgICAgICckZHVtcHBvcnRzZmx1c2ggJGZjbG9zZSAkZmRpc3BsYXkgJGZkaXNwbGF5YiAkZmRpc3BsYXloICRmZGlzcGxheW8gJyArXG4gICAgICAnJGZzdHJvYmUgJGZzdHJvYmViICRmc3Ryb2JlaCAkZnN0cm9iZW8gJHN3cml0ZSAkc3dyaXRlYiAkc3dyaXRlaCAnICtcbiAgICAgICckc3dyaXRlbyAkZnNjYW5mICRmcmVhZCAkZnNlZWsgJGZmbHVzaCAkZmVvZiAkZm9wZW4gJGZ3cml0ZSAkZndyaXRlYiAnICtcbiAgICAgICckZndyaXRlaCAkZndyaXRlbyAkZm1vbml0b3IgJGZtb25pdG9yYiAkZm1vbml0b3JoICRmbW9uaXRvcm8gJHNmb3JtYXQgJyArXG4gICAgICAnJHNmb3JtYXRmICRmZ2V0YyAkdW5nZXRjICRmZ2V0cyAkc3NjYW5mICRyZXdpbmQgJGZ0ZWxsICRmZXJyb3InXG4gICAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3YnLCAnc3YnLCAnc3ZoJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAga2V5d29yZHM6IFNWX0tFWVdPUkRTLCBsZXhlbWVzOiAvW1xcd1xcJF0rLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICdcXFxcYigoXFxcXGQrXFwnKGJ8aHxvfGR8QnxIfE98RCkpWzAtOXh6WFphLWZBLUZfXSspJ30sXG4gICAgICAgICAge2JlZ2luOiAnXFxcXEIoKFxcJyhifGh8b3xkfEJ8SHxPfEQpKVswLTl4elhaYS1mQS1GX10rKSd9LFxuICAgICAgICAgIHtiZWdpbjogJ1xcXFxiKFswLTlfXSkrJywgcmVsZXZhbmNlOiAwfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLyogcGFyYW1ldGVycyB0byBpbnN0YW5jZXMgKi9cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJyNcXFxcKCg/IXBhcmFtZXRlcikuK1xcXFwpJ30sXG4gICAgICAgICAge2JlZ2luOiAnXFxcXC5cXFxcdysnLCByZWxldmFuY2U6IDB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdkZWZpbmUgX19GSUxFX18gJyArXG4gICAgICAgICAgJ19fTElORV9fIGJlZ2luX2tleXdvcmRzIGNlbGxkZWZpbmUgZGVmYXVsdF9uZXR0eXBlIGRlZmluZSAnICtcbiAgICAgICAgICAnZWxzZSBlbHNpZiBlbmRfa2V5d29yZHMgZW5kY2VsbGRlZmluZSBlbmRpZiBpZmRlZiBpZm5kZWYgJyArXG4gICAgICAgICAgJ2luY2x1ZGUgbGluZSBub3VuY29ubmVjdGVkX2RyaXZlIHByYWdtYSByZXNldGFsbCB0aW1lc2NhbGUgJyArXG4gICAgICAgICAgJ3VuY29ubmVjdGVkX2RyaXZlIHVuZGVmIHVuZGVmaW5lYWxsJ30sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTsgLy8gcmV0dXJuXG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIFZIREwgbnVtZXJpYyBsaXRlcmFscy5cblxuICAvLyBEZWNpbWFsIGxpdGVyYWw6XG4gIHZhciBJTlRFR0VSX1JFID0gJ1xcXFxkKF98XFxcXGQpKic7XG4gIHZhciBFWFBPTkVOVF9SRSA9ICdbZUVdWy0rXT8nICsgSU5URUdFUl9SRTtcbiAgdmFyIERFQ0lNQUxfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnKFxcXFwuJyArIElOVEVHRVJfUkUgKyAnKT8nICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuICAvLyBCYXNlZCBsaXRlcmFsOlxuICB2YXIgQkFTRURfSU5URUdFUl9SRSA9ICdcXFxcdysnO1xuICB2YXIgQkFTRURfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnIycgKyBCQVNFRF9JTlRFR0VSX1JFICsgJyhcXFxcLicgKyBCQVNFRF9JTlRFR0VSX1JFICsgJyk/JyArICcjJyArICcoJyArIEVYUE9ORU5UX1JFICsgJyk/JztcblxuICB2YXIgTlVNQkVSX1JFID0gJ1xcXFxiKCcgKyBCQVNFRF9MSVRFUkFMX1JFICsgJ3wnICsgREVDSU1BTF9MSVRFUkFMX1JFICsgJyknO1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2FicyBhY2Nlc3MgYWZ0ZXIgYWxpYXMgYWxsIGFuZCBhcmNoaXRlY3R1cmUgYXJyYXkgYXNzZXJ0IGFzc3VtZSBhc3N1bWVfZ3VhcmFudGVlIGF0dHJpYnV0ZSAnICtcbiAgICAgICAgJ2JlZ2luIGJsb2NrIGJvZHkgYnVmZmVyIGJ1cyBjYXNlIGNvbXBvbmVudCBjb25maWd1cmF0aW9uIGNvbnN0YW50IGNvbnRleHQgY292ZXIgZGlzY29ubmVjdCAnICtcbiAgICAgICAgJ2Rvd250byBkZWZhdWx0IGVsc2UgZWxzaWYgZW5kIGVudGl0eSBleGl0IGZhaXJuZXNzIGZpbGUgZm9yIGZvcmNlIGZ1bmN0aW9uIGdlbmVyYXRlICcgK1xuICAgICAgICAnZ2VuZXJpYyBncm91cCBndWFyZGVkIGlmIGltcHVyZSBpbiBpbmVydGlhbCBpbm91dCBpcyBsYWJlbCBsaWJyYXJ5IGxpbmthZ2UgbGl0ZXJhbCAnICtcbiAgICAgICAgJ2xvb3AgbWFwIG1vZCBuYW5kIG5ldyBuZXh0IG5vciBub3QgbnVsbCBvZiBvbiBvcGVuIG9yIG90aGVycyBvdXQgcGFja2FnZSBwYXJhbWV0ZXIgcG9ydCAnICtcbiAgICAgICAgJ3Bvc3Rwb25lZCBwcm9jZWR1cmUgcHJvY2VzcyBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVyZSByYW5nZSByZWNvcmQgcmVnaXN0ZXIgcmVqZWN0ICcgK1xuICAgICAgICAncmVsZWFzZSByZW0gcmVwb3J0IHJlc3RyaWN0IHJlc3RyaWN0X2d1YXJhbnRlZSByZXR1cm4gcm9sIHJvciBzZWxlY3Qgc2VxdWVuY2UgJyArXG4gICAgICAgICdzZXZlcml0eSBzaGFyZWQgc2lnbmFsIHNsYSBzbGwgc3JhIHNybCBzdHJvbmcgc3VidHlwZSB0aGVuIHRvIHRyYW5zcG9ydCB0eXBlICcgK1xuICAgICAgICAndW5hZmZlY3RlZCB1bml0cyB1bnRpbCB1c2UgdmFyaWFibGUgdmlldyB2bW9kZSB2cHJvcCB2dW5pdCB3YWl0IHdoZW4gd2hpbGUgd2l0aCB4bm9yIHhvcicsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2Jvb2xlYW4gYml0IGNoYXJhY3RlciAnICtcbiAgICAgICAgJ2ludGVnZXIgdGltZSBkZWxheV9sZW5ndGggbmF0dXJhbCBwb3NpdGl2ZSAnICtcbiAgICAgICAgJ3N0cmluZyBiaXRfdmVjdG9yIGZpbGVfb3Blbl9raW5kIGZpbGVfb3Blbl9zdGF0dXMgJyArXG4gICAgICAgICdzdGRfbG9naWMgc3RkX2xvZ2ljX3ZlY3RvciB1bnNpZ25lZCBzaWduZWQgYm9vbGVhbl92ZWN0b3IgaW50ZWdlcl92ZWN0b3IgJyArXG4gICAgICAgICdzdGRfdWxvZ2ljIHN0ZF91bG9naWNfdmVjdG9yIHVucmVzb2x2ZWRfdW5zaWduZWQgdV91bnNpZ25lZCB1bnJlc29sdmVkX3NpZ25lZCB1X3NpZ25lZCAnICtcbiAgICAgICAgJ3JlYWxfdmVjdG9yIHRpbWVfdmVjdG9yJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdmYWxzZSB0cnVlIG5vdGUgd2FybmluZyBlcnJvciBmYWlsdXJlICcgKyAgLy8gc2V2ZXJpdHlfbGV2ZWxcbiAgICAgICAgJ2xpbmUgdGV4dCBzaWRlIHdpZHRoJyAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0aW9cbiAgICB9LFxuICAgIGlsbGVnYWw6ICd7JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSwgICAgICAvLyBWSERMLTIwMDggYmxvY2sgY29tbWVudGluZy5cbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IE5VTUJFUl9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJyhVfFh8MHwxfFp8V3xMfEh8LSlcXCcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFwnW0EtWmEtel0oXz9bQS1aYS16MC05XSkqJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiAvWyEjQFxcd10rLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgLy8gZXhwcmVzcyB2ZXJzaW9uIGV4Y2VwdDogISAmICogPCA9ID4gISEgIyBAIEBAXG4gICAgICAgICdOfDAgUHwwIFh8MCBhfDAgYWIgYWJjIGFibyBhbCBhbSBhbnwwIGFyIGFyZ2EgYXJnZCBhcmdlIGFyZ2RvIGFyZ2cgYXJnbCBhcmd1IGFzIGF1IGF1ZyBhdW4gYnwwIGJOIGJhIGJhZCBiZCBiZSBiZWwgYmYgYmwgYm0gYm4gYm8gYnAgYnIgYnJlYSBicmVha2EgYnJlYWtkIGJyZWFrbCBicm8gYnVmZG8gYnVmZmVycyBidW4gYncgY3wwIGNOIGNOZiBjYSBjYWJjIGNhZGRiIGNhZCBjYWRkZiBjYWwgY2F0IGNiIGNjIGNjbCBjZCBjZSBjZXggY2YgY2ZpciBjZ2V0YiBjZ2V0ZSBjZyBjaGFuZ2VzIGNoZCBjaGUgY2hlY2t0IGNsIGNsYSBjbG8gY20gY21hcGMgY21lIGNuIGNuZXcgY25mIGNubyBjbm9yZWEgY25vcmVtZSBjbyBjb2wgY29sbyBjb20gY29tYyBjb21wIGNvbiBjb25mIGNvcGUgJytcbiAgICAgICAgJ2NwIGNwZiBjcSBjciBjcyBjc3QgY3UgY3VuYSBjdW5tZSBjdyBkZWxtIGRlYiBkZWJ1Z2cgZGVsYyBkZWxmIGRpZiBkaWZmZyBkaWZmbyBkaWZmcCBkaWZmcHUgZGlmZnMgZGlmZnRoaXMgZGlnIGRpIGRsIGRlbGwgZGogZGxpIGRvIGRvYXV0b2EgZHAgZHIgZHMgZHNwIGV8MCBlYSBlYyBlY2hvZSBlY2hvaCBlY2hvbSBlY2hvbiBlbCBlbHNlaSBlbSBlbiBlbmRmbyBlbmRmIGVuZHQgZW5kdyBlbmUgZXggZXhlIGV4aSBleHUgZnwwIGZpbGVzIGZpbGV0IGZpbiBmaW5hIGZpbmkgZmlyIGZpeCBmbyBmb2xkYyBmb2xkZCBmb2xkZG9jIGZvbGRvIGZvciBmdSBnbyBnciBncmVwYSBndSBndiBoYSBoZWxwZiBoZWxwZyBoZWxwdCBoaSBoaWQgaGlzIGlhIGlhYmMgaWYgaWogaWwgaW0gaW1hcGMgJytcbiAgICAgICAgJ2ltZSBpbm8gaW5vcmVhIGlub3JlbWUgaW50IGlzIGlzcCBpdSBpdW5hIGl1bm1lIGp8MCBqdSBrfDAga2VlcGEga2VlIGtlZXBqIGxOIGxOZiBsfDAgbGFkIGxhZGRiIGxhZGRmIGxhIGxhbiBsYXQgbGIgbGMgbGNoIGxjbCBsY3MgbGUgbGVmdGEgbGV0IGxleCBsZiBsZmlyIGxnZXRiIGxnZXRlIGxnIGxnciBsZ3JlcGEgbGggbGwgbGxhIGxsaSBsbWFrIGxtIGxtYXBjIGxuZSBsbmV3IGxuZiBsbiBsb2FkayBsbyBsb2MgbG9ja3YgbG9sIGxvcGUgbHAgbHBmIGxyIGxzIGx0IGx1IGx1YSBsdWFkIGx1YWYgbHYgbHZpbWdyZXBhIGx3IG18MCBtYSBtYWsgbWFwIG1hcGMgbWFya3MgbWF0IG1lIG1lbnV0IG1lcyBtayBta3MgbWtzcCBta3YgbWt2aWUgbW9kIG16IG16ZiBuYmMgbmIgbmJzIG5ldyBubSBubWFwYyBubWUgbm4gbm5vcmVtZSBub2Egbm8gbm9oIG5vcmVhIG5vcmVtZSBub3JtIG51IG51biBudW5tZSBvbCBvfDAgb20gb21hcGMgb21lIG9uIG9ubyBvbm9yZW1lIG9wdCBvdSBvdW5tZSBvdyBwfDAgJytcbiAgICAgICAgJ3Byb2ZkIHByb2YgcHJvIHByb21wdHIgcGMgcGVkIHBlIHBlcmxkIHBvIHBvcHUgcHAgcHJlIHByZXYgcHMgcHQgcHROIHB0ZiBwdGogcHRsIHB0biBwdHAgcHRyIHB0cyBwdSBwdyBweTMgcHl0aG9uMyBweTNkIHB5M2YgcHkgcHlkIHB5ZiBxdWl0YSBxYSByZWMgcmVkIHJlZGkgcmVkciByZWRyYXdzIHJlZyByZXMgcmV0IHJldHUgcmV3IHJpIHJpZ2h0YiBydWIgcnVieWQgcnVieWYgcnVuZCBydSBydiBzTiBzYW4gc2Egc2FsIHNhdiBzYiBzYk4gc2JhIHNiZiBzYmwgc2JtIHNibiBzYnAgc2JyIHNjcmlwIHNjcmlwdGUgc2NzIHNlIHNldGYgc2V0ZyBzZXRsIHNmIHNmaXIgc2ggc2ltIHNpZyBzaWwgc2wgc2xhIHNtIHNtYXAgc21hcGMgc21lIHNuIHNuaSBzbm8gc25vciBzbm9yZW1lIHNvciAnK1xuICAgICAgICAnc28gc3BlbGxkIHNwZSBzcGVsbGkgc3BlbGxyIHNwZWxsdSBzcGVsbHcgc3Agc3ByIHNyZSBzdCBzdGEgc3RhcnRnIHN0YXJ0ciBzdGFyIHN0b3BpIHN0aiBzdHMgc3VuIHN1bm0gc3VubWUgc3VzIHN2IHN3IHN5IHN5bnRpIHN5bmMgdE4gdGFiTiB0YWJjIHRhYmRvIHRhYmUgdGFiZiB0YWJmaXIgdGFibCB0YWJtIHRhYm5ldyAnK1xuICAgICAgICAndGFibiB0YWJvIHRhYnAgdGFiciB0YWJzIHRhYiB0YSB0YWdzIHRjIHRjbGQgdGNsZiB0ZSB0ZiB0aCB0aiB0bCB0bSB0biB0byB0cCB0ciB0cnkgdHMgdHUgdXwwIHVuZG9qIHVuZG9sIHVuYSB1bmggdW5sIHVubG8gdW5tIHVubWUgdW5zIHVwIHZlIHZlcmIgdmVydCB2aW0gdmltZ3JlcGEgdmkgdml1IHZpZSB2bSB2bWFwYyB2bWUgdm5lIHZuIHZub3JlbWUgdnMgdnUgdnVubWUgd2luZG8gd3wwIHdOIHdhIHdoIHdpIHdpbmMgd2lucCB3biB3cCB3cSB3cWEgd3Mgd3Ugd3YgeHwwIHhhIHhtYXBjIHhtIHhtZSB4biB4bm9yZW1lIHh1IHh1bm1lIHl8MCB6fDAgfiAnK1xuICAgICAgICAvLyBmdWxsIHZlcnNpb25cbiAgICAgICAgJ05leHQgUHJpbnQgYXBwZW5kIGFiYnJldmlhdGUgYWJjbGVhciBhYm92ZWxlZnQgYWxsIGFtZW51IGFub3JlbWVudSBhcmdzIGFyZ2FkZCBhcmdkZWxldGUgYXJnZWRpdCBhcmdnbG9iYWwgYXJnbG9jYWwgYXJndW1lbnQgYXNjaWkgYXV0b2NtZCBhdWdyb3VwIGF1bm1lbnUgYnVmZmVyIGJOZXh0IGJhbGwgYmFkZCBiZGVsZXRlIGJlaGF2ZSBiZWxvd3JpZ2h0IGJmaXJzdCBibGFzdCBibW9kaWZpZWQgYm5leHQgYm90cmlnaHQgYnByZXZpb3VzIGJyZXdpbmQgYnJlYWsgYnJlYWthZGQgYnJlYWtkZWwgYnJlYWtsaXN0IGJyb3dzZSBidW5sb2FkICcrXG4gICAgICAgICdid2lwZW91dCBjaGFuZ2UgY05leHQgY05maWxlIGNhYmJyZXYgY2FiY2xlYXIgY2FkZGJ1ZmZlciBjYWRkZXhwciBjYWRkZmlsZSBjYWxsIGNhdGNoIGNidWZmZXIgY2Nsb3NlIGNlbnRlciBjZXhwciBjZmlsZSBjZmlyc3QgY2dldGJ1ZmZlciBjZ2V0ZXhwciBjZ2V0ZmlsZSBjaGRpciBjaGVja3BhdGggY2hlY2t0aW1lIGNsaXN0IGNsYXN0IGNsb3NlIGNtYXAgY21hcGNsZWFyIGNtZW51IGNuZXh0IGNuZXdlciBjbmZpbGUgY25vcmVtYXAgY25vcmVhYmJyZXYgY25vcmVtZW51IGNvcHkgY29sZGVyIGNvbG9yc2NoZW1lIGNvbW1hbmQgY29tY2xlYXIgY29tcGlsZXIgY29udGludWUgY29uZmlybSBjb3BlbiBjcHJldmlvdXMgY3BmaWxlIGNxdWl0IGNyZXdpbmQgY3Njb3BlIGNzdGFnIGN1bm1hcCAnK1xuICAgICAgICAnY3VuYWJicmV2IGN1bm1lbnUgY3dpbmRvdyBkZWxldGUgZGVsbWFya3MgZGVidWcgZGVidWdncmVlZHkgZGVsY29tbWFuZCBkZWxmdW5jdGlvbiBkaWZmdXBkYXRlIGRpZmZnZXQgZGlmZm9mZiBkaWZmcGF0Y2ggZGlmZnB1dCBkaWZmc3BsaXQgZGlncmFwaHMgZGlzcGxheSBkZWxldGVsIGRqdW1wIGRsaXN0IGRvYXV0b2NtZCBkb2F1dG9hbGwgZGVsZXRlcCBkcm9wIGRzZWFyY2ggZHNwbGl0IGVkaXQgZWFybGllciBlY2hvIGVjaG9lcnIgZWNob2hsIGVjaG9tc2cgZWxzZSBlbHNlaWYgZW1lbnUgZW5kaWYgZW5kZm9yICcrXG4gICAgICAgICdlbmRmdW5jdGlvbiBlbmR0cnkgZW5kd2hpbGUgZW5ldyBleGVjdXRlIGV4aXQgZXh1c2FnZSBmaWxlIGZpbGV0eXBlIGZpbmQgZmluYWxseSBmaW5pc2ggZmlyc3QgZml4ZGVsIGZvbGQgZm9sZGNsb3NlIGZvbGRkb29wZW4gZm9sZGRvY2xvc2VkIGZvbGRvcGVuIGZ1bmN0aW9uIGdsb2JhbCBnb3RvIGdyZXAgZ3JlcGFkZCBndWkgZ3ZpbSBoYXJkY29weSBoZWxwIGhlbHBmaW5kIGhlbHBncmVwIGhlbHB0YWdzIGhpZ2hsaWdodCBoaWRlIGhpc3RvcnkgaW5zZXJ0IGlhYmJyZXYgaWFiY2xlYXIgaWp1bXAgaWxpc3QgaW1hcCAnK1xuICAgICAgICAnaW1hcGNsZWFyIGltZW51IGlub3JlbWFwIGlub3JlYWJicmV2IGlub3JlbWVudSBpbnRybyBpc2VhcmNoIGlzcGxpdCBpdW5tYXAgaXVuYWJicmV2IGl1bm1lbnUgam9pbiBqdW1wcyBrZWVwYWx0IGtlZXBtYXJrcyBrZWVwanVtcHMgbE5leHQgbE5maWxlIGxpc3QgbGFkZGV4cHIgbGFkZGJ1ZmZlciBsYWRkZmlsZSBsYXN0IGxhbmd1YWdlIGxhdGVyIGxidWZmZXIgbGNkIGxjaGRpciBsY2xvc2UgbGNzY29wZSBsZWZ0IGxlZnRhYm92ZSBsZXhwciBsZmlsZSBsZmlyc3QgbGdldGJ1ZmZlciBsZ2V0ZXhwciBsZ2V0ZmlsZSBsZ3JlcCBsZ3JlcGFkZCBsaGVscGdyZXAgbGxhc3QgbGxpc3QgbG1ha2UgbG1hcCBsbWFwY2xlYXIgbG5leHQgbG5ld2VyIGxuZmlsZSBsbm9yZW1hcCBsb2Fka2V5bWFwIGxvYWR2aWV3ICcrXG4gICAgICAgICdsb2NrbWFya3MgbG9ja3ZhciBsb2xkZXIgbG9wZW4gbHByZXZpb3VzIGxwZmlsZSBscmV3aW5kIGx0YWcgbHVubWFwIGx1YWRvIGx1YWZpbGUgbHZpbWdyZXAgbHZpbWdyZXBhZGQgbHdpbmRvdyBtb3ZlIG1hcmsgbWFrZSBtYXBjbGVhciBtYXRjaCBtZW51IG1lbnV0cmFuc2xhdGUgbWVzc2FnZXMgbWtleHJjIG1rc2Vzc2lvbiBta3NwZWxsIG1rdmltcmMgbWt2aWV3IG1vZGUgbXpzY2hlbWUgbXpmaWxlIG5iY2xvc2UgbmJrZXkgbmJzYXJ0IG5leHQgbm1hcCBubWFwY2xlYXIgbm1lbnUgbm5vcmVtYXAgJytcbiAgICAgICAgJ25ub3JlbWVudSBub2F1dG9jbWQgbm9yZW1hcCBub2hsc2VhcmNoIG5vcmVhYmJyZXYgbm9yZW1lbnUgbm9ybWFsIG51bWJlciBudW5tYXAgbnVubWVudSBvbGRmaWxlcyBvcGVuIG9tYXAgb21hcGNsZWFyIG9tZW51IG9ubHkgb25vcmVtYXAgb25vcmVtZW51IG9wdGlvbnMgb3VubWFwIG91bm1lbnUgb3duc3ludGF4IHByaW50IHByb2ZkZWwgcHJvZmlsZSBwcm9tcHRmaW5kIHByb21wdHJlcGwgcGNsb3NlIHBlZGl0IHBlcmwgcGVybGRvIHBvcCBwb3B1cCBwcG9wIHByZXNlcnZlIHByZXZpb3VzIHBzZWFyY2ggcHRhZyBwdE5leHQgJytcbiAgICAgICAgJ3B0Zmlyc3QgcHRqdW1wIHB0bGFzdCBwdG5leHQgcHRwcmV2aW91cyBwdHJld2luZCBwdHNlbGVjdCBwdXQgcHdkIHB5M2RvIHB5M2ZpbGUgcHl0aG9uIHB5ZG8gcHlmaWxlIHF1aXQgcXVpdGFsbCBxYWxsIHJlYWQgcmVjb3ZlciByZWRvIHJlZGlyIHJlZHJhdyByZWRyYXdzdGF0dXMgcmVnaXN0ZXJzIHJlc2l6ZSByZXRhYiByZXR1cm4gcmV3aW5kIHJpZ2h0IHJpZ2h0YmVsb3cgcnVieSBydWJ5ZG8gcnVieWZpbGUgcnVuZG8gcnVudGltZSBydmltaW5mbyBzdWJzdGl0dXRlIHNOZXh0IHNhbmRib3ggc2FyZ3VtZW50IHNhbGwgc2F2ZWFzIHNidWZmZXIgc2JOZXh0IHNiYWxsIHNiZmlyc3Qgc2JsYXN0IHNibW9kaWZpZWQgc2JuZXh0IHNicHJldmlvdXMgc2JyZXdpbmQgc2NyaXB0bmFtZXMgc2NyaXB0ZW5jb2RpbmcgJytcbiAgICAgICAgJ3Njc2NvcGUgc2V0IHNldGZpbGV0eXBlIHNldGdsb2JhbCBzZXRsb2NhbCBzZmluZCBzZmlyc3Qgc2hlbGwgc2ltYWx0IHNpZ24gc2lsZW50IHNsZWVwIHNsYXN0IHNtYWdpYyBzbWFwY2xlYXIgc21lbnUgc25leHQgc25pZmYgc25vbWFnaWMgc25vcmVtYXAgc25vcmVtZW51IHNvcnQgc291cmNlIHNwZWxsZHVtcCBzcGVsbGdvb2Qgc3BlbGxpbmZvIHNwZWxscmVwYWxsIHNwZWxsdW5kbyBzcGVsbHdyb25nIHNwbGl0IHNwcmV2aW91cyBzcmV3aW5kIHN0b3Agc3RhZyBzdGFydGdyZXBsYWNlIHN0YXJ0cmVwbGFjZSAnK1xuICAgICAgICAnc3RhcnRpbnNlcnQgc3RvcGluc2VydCBzdGp1bXAgc3RzZWxlY3Qgc3VuaGlkZSBzdW5tYXAgc3VubWVudSBzdXNwZW5kIHN2aWV3IHN3YXBuYW1lIHN5bnRheCBzeW50aW1lIHN5bmNiaW5kIHROZXh0IHRhYk5leHQgdGFiY2xvc2UgdGFiZWRpdCB0YWJmaW5kIHRhYmZpcnN0IHRhYmxhc3QgdGFibW92ZSB0YWJuZXh0IHRhYm9ubHkgdGFicHJldmlvdXMgdGFicmV3aW5kIHRhZyB0Y2wgdGNsZG8gdGNsZmlsZSB0ZWFyb2ZmIHRmaXJzdCB0aHJvdyB0anVtcCB0bGFzdCB0bWVudSB0bmV4dCB0b3BsZWZ0IHRwcmV2aW91cyAnKyd0cmV3aW5kIHRzZWxlY3QgdHVubWVudSB1bmRvIHVuZG9qb2luIHVuZG9saXN0IHVuYWJicmV2aWF0ZSB1bmhpZGUgdW5sZXQgdW5sb2NrdmFyIHVubWFwIHVubWVudSB1bnNpbGVudCB1cGRhdGUgdmdsb2JhbCB2ZXJzaW9uIHZlcmJvc2UgdmVydGljYWwgdmltZ3JlcCB2aW1ncmVwYWRkIHZpc3VhbCB2aXVzYWdlIHZpZXcgdm1hcCB2bWFwY2xlYXIgdm1lbnUgdm5ldyAnK1xuICAgICAgICAndm5vcmVtYXAgdm5vcmVtZW51IHZzcGxpdCB2dW5tYXAgdnVubWVudSB3cml0ZSB3TmV4dCB3YWxsIHdoaWxlIHdpbnNpemUgd2luY21kIHdpbnBvcyB3bmV4dCB3cHJldmlvdXMgd3FhbGwgd3N2ZXJiIHd1bmRvIHd2aW1pbmZvIHhpdCB4YWxsIHhtYXBjbGVhciB4bWFwIHhtZW51IHhub3JlbWFwIHhub3JlbWVudSB4dW5tYXAgeHVubWVudSB5YW5rJyxcbiAgICAgIGJ1aWx0X2luOiAvL2J1aWx0IGluIGZ1bmNcbiAgICAgICAgJ3N5bklEdHJhbnMgYXRhbjIgcmFuZ2UgbWF0Y2hhcmcgZGlkX2ZpbGV0eXBlIGFzaW4gZmVlZGtleXMgeG9yIGFyZ3YgJyArXG4gICAgICAgICdjb21wbGV0ZV9jaGVjayBhZGQgZ2V0d2lucG9zeCBnZXRxZmxpc3QgZ2V0d2lucG9zeSBzY3JlZW5jb2wgJyArXG4gICAgICAgICdjbGVhcm1hdGNoZXMgZW1wdHkgZXh0ZW5kIGdldGNtZHBvcyBtemV2YWwgZ2FyYmFnZWNvbGxlY3Qgc2V0cmVnICcgK1xuICAgICAgICAnY2VpbCBzcXJ0IGRpZmZfaGxJRCBpbnB1dHNlY3JldCBnZXQgZ2V0ZnBlcm0gZ2V0cGlkIGZpbGV3cml0YWJsZSAnICtcbiAgICAgICAgJ3NoaWZ0d2lkdGggbWF4IHNpbmggaXNkaXJlY3Rvcnkgc3luSUQgc3lzdGVtIGlucHV0cmVzdG9yZSB3aW5saW5lICcgK1xuICAgICAgICAnYXRhbiB2aXN1YWxtb2RlIGlucHV0bGlzdCB0YWJwYWdld2lubnIgcm91bmQgZ2V0cmVndHlwZSBtYXBjaGVjayAnICtcbiAgICAgICAgJ2hhc21hcHRvIGhpc3RkZWwgYXJnaWR4IGZpbmRmaWxlIHNoYTI1NiBleGlzdHMgdG91cHBlciBnZXRjbWRsaW5lICcgK1xuICAgICAgICAndGFnbGlzdCBzdHJpbmcgZ2V0bWF0Y2hlcyBidWZuciBzdHJmdGltZSB3aW53aWR0aCBidWZleGlzdHMgJyArXG4gICAgICAgICdzdHJ0cmFucyB0YWJwYWdlYnVmbGlzdCBzZXRjbWRwb3MgcmVtb3RlX3JlYWQgcHJpbnRmIHNldGxvY2xpc3QgJyArXG4gICAgICAgICdnZXRwb3MgZ2V0bGluZSBidWZ3aW5uciBmbG9hdDJuciBsZW4gZ2V0Y21kdHlwZSBkaWZmX2ZpbGxlciBsdWFldmFsICcgK1xuICAgICAgICAncmVzb2x2ZSBsaWJjYWxsbnIgZm9sZGNsb3NlZGVuZCByZXZlcnNlIGZpbHRlciBoYXNfa2V5IGJ1Zm5hbWUgJyArXG4gICAgICAgICdzdHIyZmxvYXQgc3RybGVuIHNldGxpbmUgZ2V0Y2hhcm1vZCBzZXRidWZ2YXIgaW5kZXggc2VhcmNocG9zICcgK1xuICAgICAgICAnc2hlbGxlc2NhcGUgdW5kb2ZpbGUgZm9sZGNsb3NlZCBzZXRxZmxpc3QgYnVmbGlzdGVkIHN0cmNoYXJzIHN0cjJuciAnICtcbiAgICAgICAgJ3ZpcnRjb2wgZmxvb3IgcmVtb3ZlIHVuZG90cmVlIHJlbW90ZV9leHByIHdpbmhlaWdodCBnZXR0YWJ3aW52YXIgJyArXG4gICAgICAgICdyZWx0aW1lIGN1cnNvciB0YWJwYWdlbnIgZmluZGRpciBsb2NhbHRpbWUgYWNvcyBnZXRsb2NsaXN0IHNlYXJjaCAnICtcbiAgICAgICAgJ3RhbmggbWF0Y2hlbmQgcmVuYW1lIGdldHRhYnZhciBzdHJkaXNwbGF5d2lkdGggdHlwZSBhYnMgcHkzZXZhbCAnICtcbiAgICAgICAgJ3NldHdpbnZhciB0b2xvd2VyIHdpbGRtZW51bW9kZSBsb2cxMCBzcGVsbHN1Z2dlc3QgYnVmbG9hZGVkICcgK1xuICAgICAgICAnc3luY29uY2VhbGVkIG5leHRub25ibGFuayBzZXJ2ZXIyY2xpZW50IGNvbXBsZXRlIHNldHRhYndpbnZhciAnICtcbiAgICAgICAgJ2V4ZWN1dGFibGUgaW5wdXQgd2luY29sIHNldG1hdGNoZXMgZ2V0ZnR5cGUgaGxJRCBpbnB1dHNhdmUgJyArXG4gICAgICAgICdzZWFyY2hwYWlyIG9yIHNjcmVlbnJvdyBsaW5lIHNldHRhYnZhciBoaXN0YWRkIGRlZXBjb3B5IHN0cnBhcnQgJyArXG4gICAgICAgICdyZW1vdGVfcGVlayBhbmQgZXZhbCBnZXRmdGltZSBzdWJtYXRjaCBzY3JlZW5jaGFyIHdpbnNhdmV2aWV3ICcgK1xuICAgICAgICAnbWF0Y2hhZGQgbWtkaXIgc2NyZWVuYXR0ciBnZXRmb250bmFtZSBsaWJjYWxsIHJlbHRpbWVzdHIgZ2V0ZnNpemUgJyArXG4gICAgICAgICd3aW5uciBpbnZlcnQgcG93IGdldGJ1ZmxpbmUgYnl0ZTJsaW5lIHNvdW5kZm9sZCByZXBlYXQgZm5hbWVlc2NhcGUgJyArXG4gICAgICAgICd0YWdmaWxlcyBzaW4gc3Ryd2lkdGggc3BlbGxiYWR3b3JkIHRydW5jIG1hcGFyZyBsb2cgbGlzcGluZGVudCAnICtcbiAgICAgICAgJ2hvc3RuYW1lIHNldHBvcyBnbG9icGF0aCByZW1vdGVfZm9yZWdyb3VuZCBnZXRjaGFyIHN5bklEYXR0ciAnICtcbiAgICAgICAgJ2ZuYW1lbW9kaWZ5IGNzY29wZV9jb25uZWN0aW9uIHN0cmlkeCB3aW5idWZuciBpbmRlbnQgbWluICcgK1xuICAgICAgICAnY29tcGxldGVfYWRkIG5yMmNoYXIgc2VhcmNocGFpcnBvcyBpbnB1dGRpYWxvZyB2YWx1ZXMgbWF0Y2hsaXN0ICcgK1xuICAgICAgICAnaXRlbXMgaGxleGlzdHMgc3RycmlkeCBicm93c2VkaXIgZXhwYW5kIGZtb2QgcGF0aHNob3J0ZW4gbGluZTJieXRlICcgK1xuICAgICAgICAnYXJnYyBjb3VudCBnZXR3aW52YXIgZ2xvYiBmb2xkdGV4dHJlc3VsdCBnZXRyZWcgZm9yZWdyb3VuZCBjb3NoICcgK1xuICAgICAgICAnbWF0Y2hkZWxldGUgaGFzIGNoYXIybnIgc2ltcGxpZnkgaGlzdGdldCBzZWFyY2hkZWNsIGljb252ICcgK1xuICAgICAgICAnd2lucmVzdGNtZCBwdW12aXNpYmxlIHdyaXRlZmlsZSBmb2xkbGV2ZWwgaGFzbG9jYWxkaXIga2V5cyBjb3MgJyArXG4gICAgICAgICdtYXRjaHN0ciBmb2xkdGV4dCBoaXN0bnIgdGFuIHRlbXBuYW1lIGdldGN3ZCBieXRlaWR4IGdldGJ1ZnZhciAnICtcbiAgICAgICAgJ2lzbG9ja2VkIGVzY2FwZSBldmVudGhhbmRsZXIgcmVtb3RlX3NlbmQgc2VydmVybGlzdCB3aW5yZXN0dmlldyAnICtcbiAgICAgICAgJ3N5bnN0YWNrIHB5ZXZhbCBwcmV2bm9uYmxhbmsgcmVhZGZpbGUgY2luZGVudCBmaWxlcmVhZGFibGUgY2hhbmdlbnIgJyArXG4gICAgICAgICdleHAnXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAvOy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgfSxcblxuICAgICAgLypcbiAgICAgIEEgZG91YmxlIHF1b3RlIGNhbiBzdGFydCBlaXRoZXIgYSBzdHJpbmcgb3IgYSBsaW5lIGNvbW1lbnQuIFN0cmluZ3MgYXJlXG4gICAgICBlbmRlZCBiZWZvcmUgdGhlIGVuZCBvZiBhIGxpbmUgYnkgYW5vdGhlciBkb3VibGUgcXVvdGUgYW5kIGNhbiBjb250YWluXG4gICAgICBlc2NhcGVkIGRvdWJsZS1xdW90ZXMgYW5kIHBvc3QtZXNjYXBlZCBsaW5lIGJyZWFrcy5cblxuICAgICAgQWxzbywgYW55IGRvdWJsZSBxdW90ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpcyBhIGNvbW1lbnQgYnV0IHdlXG4gICAgICBkb24ndCBoYW5kbGUgdGhhdCBwcm9wZXJseSBhdCB0aGUgbW9tZW50OiBhbnkgZG91YmxlIHF1b3RlIGluc2lkZSB3aWxsXG4gICAgICB0dXJuIHRoZW0gaW50byBhIHN0cmluZy4gSGFuZGxpbmcgaXQgcHJvcGVybHkgd2lsbCByZXF1aXJlIGEgc21hcnRlclxuICAgICAgcGFyc2VyLlxuICAgICAgKi9cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC9cIihcXFxcXCJ8XFxuXFxcXHxbXlwiXFxuXSkqXCIvXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdcIicsICckJyksXG5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1tid3RnbHNhdl06W1xcd1xcZF9dKi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIGZ1bmN0aW9uIScsIGVuZDogJyQnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogLzxbXFx3LV0rPi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogJ1suJV0/JyArIGhsanMuSURFTlRfUkUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdsb2NrIHJlcCByZXBlIHJlcHogcmVwbmUgcmVwbnogeGFxdWlyZSB4cmVsZWFzZSBibmQgbm9ibmQgJyArXG4gICAgICAgICdhYWEgYWFkIGFhbSBhYXMgYWRjIGFkZCBhbmQgYXJwbCBiYjBfcmVzZXQgYmIxX3Jlc2V0IGJvdW5kIGJzZiBic3IgYnN3YXAgYnQgYnRjIGJ0ciBidHMgY2FsbCBjYncgY2RxIGNkcWUgY2xjIGNsZCBjbGkgY2x0cyBjbWMgY21wIGNtcHNiIGNtcHNkIGNtcHNxIGNtcHN3IGNtcHhjaGcgY21weGNoZzQ4NiBjbXB4Y2hnOGIgY21weGNoZzE2YiBjcHVpZCBjcHVfcmVhZCBjcHVfd3JpdGUgY3FvIGN3ZCBjd2RlIGRhYSBkYXMgZGVjIGRpdiBkbWludCBlbW1zIGVudGVyIGVxdSBmMnhtMSBmYWJzIGZhZGQgZmFkZHAgZmJsZCBmYnN0cCBmY2hzIGZjbGV4IGZjbW92YiBmY21vdmJlIGZjbW92ZSBmY21vdm5iIGZjbW92bmJlIGZjbW92bmUgZmNtb3ZudSBmY21vdnUgZmNvbSBmY29taSBmY29taXAgZmNvbXAgZmNvbXBwIGZjb3MgZmRlY3N0cCBmZGlzaSBmZGl2IGZkaXZwIGZkaXZyIGZkaXZycCBmZW1tcyBmZW5pIGZmcmVlIGZmcmVlcCBmaWFkZCBmaWNvbSBmaWNvbXAgZmlkaXYgZmlkaXZyIGZpbGQgZmltdWwgZmluY3N0cCBmaW5pdCBmaXN0IGZpc3RwIGZpc3R0cCBmaXN1YiBmaXN1YnIgZmxkIGZsZDEgZmxkY3cgZmxkZW52IGZsZGwyZSBmbGRsMnQgZmxkbGcyIGZsZGxuMiBmbGRwaSBmbGR6IGZtdWwgZm11bHAgZm5jbGV4IGZuZGlzaSBmbmVuaSBmbmluaXQgZm5vcCBmbnNhdmUgZm5zdGN3IGZuc3RlbnYgZm5zdHN3IGZwYXRhbiBmcHJlbSBmcHJlbTEgZnB0YW4gZnJuZGludCBmcnN0b3IgZnNhdmUgZnNjYWxlIGZzZXRwbSBmc2luIGZzaW5jb3MgZnNxcnQgZnN0IGZzdGN3IGZzdGVudiBmc3RwIGZzdHN3IGZzdWIgZnN1YnAgZnN1YnIgZnN1YnJwIGZ0c3QgZnVjb20gZnVjb21pIGZ1Y29taXAgZnVjb21wIGZ1Y29tcHAgZnhhbSBmeGNoIGZ4dHJhY3QgZnlsMnggZnlsMnhwMSBobHQgaWJ0cyBpY2VicCBpZGl2IGltdWwgaW4gaW5jIGluY2JpbiBpbnNiIGluc2QgaW5zdyBpbnQgaW50MDEgaW50MSBpbnQwMyBpbnQzIGludG8gaW52ZCBpbnZwY2lkIGludmxwZyBpbnZscGdhIGlyZXQgaXJldGQgaXJldHEgaXJldHcgamN4eiBqZWN4eiBqcmN4eiBqbXAgam1wZSBsYWhmIGxhciBsZHMgbGVhIGxlYXZlIGxlcyBsZmVuY2UgbGZzIGxnZHQgbGdzIGxpZHQgbGxkdCBsbXN3IGxvYWRhbGwgbG9hZGFsbDI4NiBsb2RzYiBsb2RzZCBsb2RzcSBsb2RzdyBsb29wIGxvb3BlIGxvb3BuZSBsb29wbnogbG9vcHogbHNsIGxzcyBsdHIgbWZlbmNlIG1vbml0b3IgbW92IG1vdmQgbW92cSBtb3ZzYiBtb3ZzZCBtb3ZzcSBtb3ZzdyBtb3ZzeCBtb3ZzeGQgbW92enggbXVsIG13YWl0IG5lZyBub3Agbm90IG9yIG91dCBvdXRzYiBvdXRzZCBvdXRzdyBwYWNrc3NkdyBwYWNrc3N3YiBwYWNrdXN3YiBwYWRkYiBwYWRkZCBwYWRkc2IgcGFkZHNpdyBwYWRkc3cgcGFkZHVzYiBwYWRkdXN3IHBhZGR3IHBhbmQgcGFuZG4gcGF1c2UgcGF2ZWIgcGF2Z3VzYiBwY21wZXFiIHBjbXBlcWQgcGNtcGVxdyBwY21wZ3RiIHBjbXBndGQgcGNtcGd0dyBwZGlzdGliIHBmMmlkIHBmYWNjIHBmYWRkIHBmY21wZXEgcGZjbXBnZSBwZmNtcGd0IHBmbWF4IHBmbWluIHBmbXVsIHBmcmNwIHBmcmNwaXQxIHBmcmNwaXQyIHBmcnNxaXQxIHBmcnNxcnQgcGZzdWIgcGZzdWJyIHBpMmZkIHBtYWNocml3IHBtYWRkd2QgcG1hZ3cgcG11bGhyaXcgcG11bGhyd2EgcG11bGhyd2MgcG11bGh3IHBtdWxsdyBwbXZnZXpiIHBtdmx6YiBwbXZuemIgcG12emIgcG9wIHBvcGEgcG9wYWQgcG9wYXcgcG9wZiBwb3BmZCBwb3BmcSBwb3BmdyBwb3IgcHJlZmV0Y2ggcHJlZmV0Y2h3IHBzbGxkIHBzbGxxIHBzbGx3IHBzcmFkIHBzcmF3IHBzcmxkIHBzcmxxIHBzcmx3IHBzdWJiIHBzdWJkIHBzdWJzYiBwc3Vic2l3IHBzdWJzdyBwc3VidXNiIHBzdWJ1c3cgcHN1YncgcHVucGNraGJ3IHB1bnBja2hkcSBwdW5wY2tod2QgcHVucGNrbGJ3IHB1bnBja2xkcSBwdW5wY2tsd2QgcHVzaCBwdXNoYSBwdXNoYWQgcHVzaGF3IHB1c2hmIHB1c2hmZCBwdXNoZnEgcHVzaGZ3IHB4b3IgcmNsIHJjciByZHNociByZG1zciByZHBtYyByZHRzYyByZHRzY3AgcmV0IHJldGYgcmV0biByb2wgcm9yIHJkbSByc2RjIHJzbGR0IHJzbSByc3RzIHNhaGYgc2FsIHNhbGMgc2FyIHNiYiBzY2FzYiBzY2FzZCBzY2FzcSBzY2FzdyBzZmVuY2Ugc2dkdCBzaGwgc2hsZCBzaHIgc2hyZCBzaWR0IHNsZHQgc2tpbml0IHNtaSBzbWludCBzbWludG9sZCBzbXN3IHN0YyBzdGQgc3RpIHN0b3NiIHN0b3NkIHN0b3NxIHN0b3N3IHN0ciBzdWIgc3ZkYyBzdmxkdCBzdnRzIHN3YXBncyBzeXNjYWxsIHN5c2VudGVyIHN5c2V4aXQgc3lzcmV0IHRlc3QgdWQwIHVkMSB1ZDJiIHVkMiB1ZDJhIHVtb3YgdmVyciB2ZXJ3IGZ3YWl0IHdiaW52ZCB3cnNociB3cm1zciB4YWRkIHhidHMgeGNoZyB4bGF0YiB4bGF0IHhvciBjbW92ZSBjbW92eiBjbW92bmUgY21vdm56IGNtb3ZhIGNtb3ZuYmUgY21vdmFlIGNtb3ZuYiBjbW92YiBjbW92bmFlIGNtb3ZiZSBjbW92bmEgY21vdmcgY21vdm5sZSBjbW92Z2UgY21vdm5sIGNtb3ZsIGNtb3ZuZ2UgY21vdmxlIGNtb3ZuZyBjbW92YyBjbW92bmMgY21vdm8gY21vdm5vIGNtb3ZzIGNtb3ZucyBjbW92cCBjbW92cGUgY21vdm5wIGNtb3ZwbyBqZSBqeiBqbmUgam56IGphIGpuYmUgamFlIGpuYiBqYiBqbmFlIGpiZSBqbmEgamcgam5sZSBqZ2Ugam5sIGpsIGpuZ2UgamxlIGpuZyBqYyBqbmMgam8gam5vIGpzIGpucyBqcG8gam5wIGpwZSBqcCBzZXRlIHNldHogc2V0bmUgc2V0bnogc2V0YSBzZXRuYmUgc2V0YWUgc2V0bmIgc2V0bmMgc2V0YiBzZXRuYWUgc2V0Y3NldCBzZXRiZSBzZXRuYSBzZXRnIHNldG5sZSBzZXRnZSBzZXRubCBzZXRsIHNldG5nZSBzZXRsZSBzZXRuZyBzZXRzIHNldG5zIHNldG8gc2V0bm8gc2V0cGUgc2V0cCBzZXRwbyBzZXRucCBhZGRwcyBhZGRzcyBhbmRucHMgYW5kcHMgY21wZXFwcyBjbXBlcXNzIGNtcGxlcHMgY21wbGVzcyBjbXBsdHBzIGNtcGx0c3MgY21wbmVxcHMgY21wbmVxc3MgY21wbmxlcHMgY21wbmxlc3MgY21wbmx0cHMgY21wbmx0c3MgY21wb3JkcHMgY21wb3Jkc3MgY21wdW5vcmRwcyBjbXB1bm9yZHNzIGNtcHBzIGNtcHNzIGNvbWlzcyBjdnRwaTJwcyBjdnRwczJwaSBjdnRzaTJzcyBjdnRzczJzaSBjdnR0cHMycGkgY3Z0dHNzMnNpIGRpdnBzIGRpdnNzIGxkbXhjc3IgbWF4cHMgbWF4c3MgbWlucHMgbWluc3MgbW92YXBzIG1vdmhwcyBtb3ZsaHBzIG1vdmxwcyBtb3ZobHBzIG1vdm1za3BzIG1vdm50cHMgbW92c3MgbW92dXBzIG11bHBzIG11bHNzIG9ycHMgcmNwcHMgcmNwc3MgcnNxcnRwcyByc3FydHNzIHNodWZwcyBzcXJ0cHMgc3FydHNzIHN0bXhjc3Igc3VicHMgc3Vic3MgdWNvbWlzcyB1bnBja2hwcyB1bnBja2xwcyB4b3JwcyBmeHJzdG9yIGZ4cnN0b3I2NCBmeHNhdmUgZnhzYXZlNjQgeGdldGJ2IHhzZXRidiB4c2F2ZSB4c2F2ZTY0IHhzYXZlb3B0IHhzYXZlb3B0NjQgeHJzdG9yIHhyc3RvcjY0IHByZWZldGNobnRhIHByZWZldGNodDAgcHJlZmV0Y2h0MSBwcmVmZXRjaHQyIG1hc2ttb3ZxIG1vdm50cSBwYXZnYiBwYXZndyBwZXh0cncgcGluc3J3IHBtYXhzdyBwbWF4dWIgcG1pbnN3IHBtaW51YiBwbW92bXNrYiBwbXVsaHV3IHBzYWRidyBwc2h1ZncgcGYyaXcgcGZuYWNjIHBmcG5hY2MgcGkyZncgcHN3YXBkIG1hc2ttb3ZkcXUgY2xmbHVzaCBtb3ZudGRxIG1vdm50aSBtb3ZudHBkIG1vdmRxYSBtb3ZkcXUgbW92ZHEycSBtb3ZxMmRxIHBhZGRxIHBtdWx1ZHEgcHNodWZkIHBzaHVmaHcgcHNodWZsdyBwc2xsZHEgcHNybGRxIHBzdWJxIHB1bnBja2hxZHEgcHVucGNrbHFkcSBhZGRwZCBhZGRzZCBhbmRucGQgYW5kcGQgY21wZXFwZCBjbXBlcXNkIGNtcGxlcGQgY21wbGVzZCBjbXBsdHBkIGNtcGx0c2QgY21wbmVxcGQgY21wbmVxc2QgY21wbmxlcGQgY21wbmxlc2QgY21wbmx0cGQgY21wbmx0c2QgY21wb3JkcGQgY21wb3Jkc2QgY21wdW5vcmRwZCBjbXB1bm9yZHNkIGNtcHBkIGNvbWlzZCBjdnRkcTJwZCBjdnRkcTJwcyBjdnRwZDJkcSBjdnRwZDJwaSBjdnRwZDJwcyBjdnRwaTJwZCBjdnRwczJkcSBjdnRwczJwZCBjdnRzZDJzaSBjdnRzZDJzcyBjdnRzaTJzZCBjdnRzczJzZCBjdnR0cGQycGkgY3Z0dHBkMmRxIGN2dHRwczJkcSBjdnR0c2Qyc2kgZGl2cGQgZGl2c2QgbWF4cGQgbWF4c2QgbWlucGQgbWluc2QgbW92YXBkIG1vdmhwZCBtb3ZscGQgbW92bXNrcGQgbW92dXBkIG11bHBkIG11bHNkIG9ycGQgc2h1ZnBkIHNxcnRwZCBzcXJ0c2Qgc3VicGQgc3Vic2QgdWNvbWlzZCB1bnBja2hwZCB1bnBja2xwZCB4b3JwZCBhZGRzdWJwZCBhZGRzdWJwcyBoYWRkcGQgaGFkZHBzIGhzdWJwZCBoc3VicHMgbGRkcXUgbW92ZGR1cCBtb3ZzaGR1cCBtb3ZzbGR1cCBjbGdpIHN0Z2kgdm1jYWxsIHZtY2xlYXIgdm1mdW5jIHZtbGF1bmNoIHZtbG9hZCB2bW1jYWxsIHZtcHRybGQgdm1wdHJzdCB2bXJlYWQgdm1yZXN1bWUgdm1ydW4gdm1zYXZlIHZtd3JpdGUgdm14b2ZmIHZteG9uIGludmVwdCBpbnZ2cGlkIHBhYnNiIHBhYnN3IHBhYnNkIHBhbGlnbnIgcGhhZGR3IHBoYWRkZCBwaGFkZHN3IHBoc3VidyBwaHN1YmQgcGhzdWJzdyBwbWFkZHVic3cgcG11bGhyc3cgcHNodWZiIHBzaWduYiBwc2lnbncgcHNpZ25kIGV4dHJxIGluc2VydHEgbW92bnRzZCBtb3ZudHNzIGx6Y250IGJsZW5kcGQgYmxlbmRwcyBibGVuZHZwZCBibGVuZHZwcyBkcHBkIGRwcHMgZXh0cmFjdHBzIGluc2VydHBzIG1vdm50ZHFhIG1wc2FkYncgcGFja3VzZHcgcGJsZW5kdmIgcGJsZW5kdyBwY21wZXFxIHBleHRyYiBwZXh0cmQgcGV4dHJxIHBobWlucG9zdXcgcGluc3JiIHBpbnNyZCBwaW5zcnEgcG1heHNiIHBtYXhzZCBwbWF4dWQgcG1heHV3IHBtaW5zYiBwbWluc2QgcG1pbnVkIHBtaW51dyBwbW92c3hidyBwbW92c3hiZCBwbW92c3hicSBwbW92c3h3ZCBwbW92c3h3cSBwbW92c3hkcSBwbW92enhidyBwbW92enhiZCBwbW92enhicSBwbW92enh3ZCBwbW92enh3cSBwbW92enhkcSBwbXVsZHEgcG11bGxkIHB0ZXN0IHJvdW5kcGQgcm91bmRwcyByb3VuZHNkIHJvdW5kc3MgY3JjMzIgcGNtcGVzdHJpIHBjbXBlc3RybSBwY21waXN0cmkgcGNtcGlzdHJtIHBjbXBndHEgcG9wY250IGdldHNlYyBwZnJjcHYgcGZyc3FydHYgbW92YmUgYWVzZW5jIGFlc2VuY2xhc3QgYWVzZGVjIGFlc2RlY2xhc3QgYWVzaW1jIGFlc2tleWdlbmFzc2lzdCB2YWVzZW5jIHZhZXNlbmNsYXN0IHZhZXNkZWMgdmFlc2RlY2xhc3QgdmFlc2ltYyB2YWVza2V5Z2VuYXNzaXN0IHZhZGRwZCB2YWRkcHMgdmFkZHNkIHZhZGRzcyB2YWRkc3VicGQgdmFkZHN1YnBzIHZhbmRwZCB2YW5kcHMgdmFuZG5wZCB2YW5kbnBzIHZibGVuZHBkIHZibGVuZHBzIHZibGVuZHZwZCB2YmxlbmR2cHMgdmJyb2FkY2FzdHNzIHZicm9hZGNhc3RzZCB2YnJvYWRjYXN0ZjEyOCB2Y21wZXFfb3NwZCB2Y21wZXFwZCB2Y21wbHRfb3NwZCB2Y21wbHRwZCB2Y21wbGVfb3NwZCB2Y21wbGVwZCB2Y21wdW5vcmRfcXBkIHZjbXB1bm9yZHBkIHZjbXBuZXFfdXFwZCB2Y21wbmVxcGQgdmNtcG5sdF91c3BkIHZjbXBubHRwZCB2Y21wbmxlX3VzcGQgdmNtcG5sZXBkIHZjbXBvcmRfcXBkIHZjbXBvcmRwZCB2Y21wZXFfdXFwZCB2Y21wbmdlX3VzcGQgdmNtcG5nZXBkIHZjbXBuZ3RfdXNwZCB2Y21wbmd0cGQgdmNtcGZhbHNlX29xcGQgdmNtcGZhbHNlcGQgdmNtcG5lcV9vcXBkIHZjbXBnZV9vc3BkIHZjbXBnZXBkIHZjbXBndF9vc3BkIHZjbXBndHBkIHZjbXB0cnVlX3VxcGQgdmNtcHRydWVwZCB2Y21wbHRfb3FwZCB2Y21wbGVfb3FwZCB2Y21wdW5vcmRfc3BkIHZjbXBuZXFfdXNwZCB2Y21wbmx0X3VxcGQgdmNtcG5sZV91cXBkIHZjbXBvcmRfc3BkIHZjbXBlcV91c3BkIHZjbXBuZ2VfdXFwZCB2Y21wbmd0X3VxcGQgdmNtcGZhbHNlX29zcGQgdmNtcG5lcV9vc3BkIHZjbXBnZV9vcXBkIHZjbXBndF9vcXBkIHZjbXB0cnVlX3VzcGQgdmNtcHBkIHZjbXBlcV9vc3BzIHZjbXBlcXBzIHZjbXBsdF9vc3BzIHZjbXBsdHBzIHZjbXBsZV9vc3BzIHZjbXBsZXBzIHZjbXB1bm9yZF9xcHMgdmNtcHVub3JkcHMgdmNtcG5lcV91cXBzIHZjbXBuZXFwcyB2Y21wbmx0X3VzcHMgdmNtcG5sdHBzIHZjbXBubGVfdXNwcyB2Y21wbmxlcHMgdmNtcG9yZF9xcHMgdmNtcG9yZHBzIHZjbXBlcV91cXBzIHZjbXBuZ2VfdXNwcyB2Y21wbmdlcHMgdmNtcG5ndF91c3BzIHZjbXBuZ3RwcyB2Y21wZmFsc2Vfb3FwcyB2Y21wZmFsc2VwcyB2Y21wbmVxX29xcHMgdmNtcGdlX29zcHMgdmNtcGdlcHMgdmNtcGd0X29zcHMgdmNtcGd0cHMgdmNtcHRydWVfdXFwcyB2Y21wdHJ1ZXBzIHZjbXBsdF9vcXBzIHZjbXBsZV9vcXBzIHZjbXB1bm9yZF9zcHMgdmNtcG5lcV91c3BzIHZjbXBubHRfdXFwcyB2Y21wbmxlX3VxcHMgdmNtcG9yZF9zcHMgdmNtcGVxX3VzcHMgdmNtcG5nZV91cXBzIHZjbXBuZ3RfdXFwcyB2Y21wZmFsc2Vfb3NwcyB2Y21wbmVxX29zcHMgdmNtcGdlX29xcHMgdmNtcGd0X29xcHMgdmNtcHRydWVfdXNwcyB2Y21wcHMgdmNtcGVxX29zc2QgdmNtcGVxc2QgdmNtcGx0X29zc2QgdmNtcGx0c2QgdmNtcGxlX29zc2QgdmNtcGxlc2QgdmNtcHVub3JkX3FzZCB2Y21wdW5vcmRzZCB2Y21wbmVxX3Vxc2QgdmNtcG5lcXNkIHZjbXBubHRfdXNzZCB2Y21wbmx0c2QgdmNtcG5sZV91c3NkIHZjbXBubGVzZCB2Y21wb3JkX3FzZCB2Y21wb3Jkc2QgdmNtcGVxX3Vxc2QgdmNtcG5nZV91c3NkIHZjbXBuZ2VzZCB2Y21wbmd0X3Vzc2QgdmNtcG5ndHNkIHZjbXBmYWxzZV9vcXNkIHZjbXBmYWxzZXNkIHZjbXBuZXFfb3FzZCB2Y21wZ2Vfb3NzZCB2Y21wZ2VzZCB2Y21wZ3Rfb3NzZCB2Y21wZ3RzZCB2Y21wdHJ1ZV91cXNkIHZjbXB0cnVlc2QgdmNtcGx0X29xc2QgdmNtcGxlX29xc2QgdmNtcHVub3JkX3NzZCB2Y21wbmVxX3Vzc2QgdmNtcG5sdF91cXNkIHZjbXBubGVfdXFzZCB2Y21wb3JkX3NzZCB2Y21wZXFfdXNzZCB2Y21wbmdlX3Vxc2QgdmNtcG5ndF91cXNkIHZjbXBmYWxzZV9vc3NkIHZjbXBuZXFfb3NzZCB2Y21wZ2Vfb3FzZCB2Y21wZ3Rfb3FzZCB2Y21wdHJ1ZV91c3NkIHZjbXBzZCB2Y21wZXFfb3NzcyB2Y21wZXFzcyB2Y21wbHRfb3NzcyB2Y21wbHRzcyB2Y21wbGVfb3NzcyB2Y21wbGVzcyB2Y21wdW5vcmRfcXNzIHZjbXB1bm9yZHNzIHZjbXBuZXFfdXFzcyB2Y21wbmVxc3MgdmNtcG5sdF91c3NzIHZjbXBubHRzcyB2Y21wbmxlX3Vzc3MgdmNtcG5sZXNzIHZjbXBvcmRfcXNzIHZjbXBvcmRzcyB2Y21wZXFfdXFzcyB2Y21wbmdlX3Vzc3MgdmNtcG5nZXNzIHZjbXBuZ3RfdXNzcyB2Y21wbmd0c3MgdmNtcGZhbHNlX29xc3MgdmNtcGZhbHNlc3MgdmNtcG5lcV9vcXNzIHZjbXBnZV9vc3NzIHZjbXBnZXNzIHZjbXBndF9vc3NzIHZjbXBndHNzIHZjbXB0cnVlX3Vxc3MgdmNtcHRydWVzcyB2Y21wbHRfb3FzcyB2Y21wbGVfb3FzcyB2Y21wdW5vcmRfc3NzIHZjbXBuZXFfdXNzcyB2Y21wbmx0X3Vxc3MgdmNtcG5sZV91cXNzIHZjbXBvcmRfc3NzIHZjbXBlcV91c3NzIHZjbXBuZ2VfdXFzcyB2Y21wbmd0X3Vxc3MgdmNtcGZhbHNlX29zc3MgdmNtcG5lcV9vc3NzIHZjbXBnZV9vcXNzIHZjbXBndF9vcXNzIHZjbXB0cnVlX3Vzc3MgdmNtcHNzIHZjb21pc2QgdmNvbWlzcyB2Y3Z0ZHEycGQgdmN2dGRxMnBzIHZjdnRwZDJkcSB2Y3Z0cGQycHMgdmN2dHBzMmRxIHZjdnRwczJwZCB2Y3Z0c2Qyc2kgdmN2dHNkMnNzIHZjdnRzaTJzZCB2Y3Z0c2kyc3MgdmN2dHNzMnNkIHZjdnRzczJzaSB2Y3Z0dHBkMmRxIHZjdnR0cHMyZHEgdmN2dHRzZDJzaSB2Y3Z0dHNzMnNpIHZkaXZwZCB2ZGl2cHMgdmRpdnNkIHZkaXZzcyB2ZHBwZCB2ZHBwcyB2ZXh0cmFjdGYxMjggdmV4dHJhY3RwcyB2aGFkZHBkIHZoYWRkcHMgdmhzdWJwZCB2aHN1YnBzIHZpbnNlcnRmMTI4IHZpbnNlcnRwcyB2bGRkcXUgdmxkcXF1IHZsZG14Y3NyIHZtYXNrbW92ZHF1IHZtYXNrbW92cHMgdm1hc2ttb3ZwZCB2bWF4cGQgdm1heHBzIHZtYXhzZCB2bWF4c3Mgdm1pbnBkIHZtaW5wcyB2bWluc2Qgdm1pbnNzIHZtb3ZhcGQgdm1vdmFwcyB2bW92ZCB2bW92cSB2bW92ZGR1cCB2bW92ZHFhIHZtb3ZxcWEgdm1vdmRxdSB2bW92cXF1IHZtb3ZobHBzIHZtb3ZocGQgdm1vdmhwcyB2bW92bGhwcyB2bW92bHBkIHZtb3ZscHMgdm1vdm1za3BkIHZtb3Ztc2twcyB2bW92bnRkcSB2bW92bnRxcSB2bW92bnRkcWEgdm1vdm50cGQgdm1vdm50cHMgdm1vdnNkIHZtb3ZzaGR1cCB2bW92c2xkdXAgdm1vdnNzIHZtb3Z1cGQgdm1vdnVwcyB2bXBzYWRidyB2bXVscGQgdm11bHBzIHZtdWxzZCB2bXVsc3Mgdm9ycGQgdm9ycHMgdnBhYnNiIHZwYWJzdyB2cGFic2QgdnBhY2tzc3diIHZwYWNrc3NkdyB2cGFja3Vzd2IgdnBhY2t1c2R3IHZwYWRkYiB2cGFkZHcgdnBhZGRkIHZwYWRkcSB2cGFkZHNiIHZwYWRkc3cgdnBhZGR1c2IgdnBhZGR1c3cgdnBhbGlnbnIgdnBhbmQgdnBhbmRuIHZwYXZnYiB2cGF2Z3cgdnBibGVuZHZiIHZwYmxlbmR3IHZwY21wZXN0cmkgdnBjbXBlc3RybSB2cGNtcGlzdHJpIHZwY21waXN0cm0gdnBjbXBlcWIgdnBjbXBlcXcgdnBjbXBlcWQgdnBjbXBlcXEgdnBjbXBndGIgdnBjbXBndHcgdnBjbXBndGQgdnBjbXBndHEgdnBlcm1pbHBkIHZwZXJtaWxwcyB2cGVybTJmMTI4IHZwZXh0cmIgdnBleHRydyB2cGV4dHJkIHZwZXh0cnEgdnBoYWRkdyB2cGhhZGRkIHZwaGFkZHN3IHZwaG1pbnBvc3V3IHZwaHN1YncgdnBoc3ViZCB2cGhzdWJzdyB2cGluc3JiIHZwaW5zcncgdnBpbnNyZCB2cGluc3JxIHZwbWFkZHdkIHZwbWFkZHVic3cgdnBtYXhzYiB2cG1heHN3IHZwbWF4c2QgdnBtYXh1YiB2cG1heHV3IHZwbWF4dWQgdnBtaW5zYiB2cG1pbnN3IHZwbWluc2QgdnBtaW51YiB2cG1pbnV3IHZwbWludWQgdnBtb3Ztc2tiIHZwbW92c3hidyB2cG1vdnN4YmQgdnBtb3ZzeGJxIHZwbW92c3h3ZCB2cG1vdnN4d3EgdnBtb3ZzeGRxIHZwbW92enhidyB2cG1vdnp4YmQgdnBtb3Z6eGJxIHZwbW92enh3ZCB2cG1vdnp4d3EgdnBtb3Z6eGRxIHZwbXVsaHV3IHZwbXVsaHJzdyB2cG11bGh3IHZwbXVsbHcgdnBtdWxsZCB2cG11bHVkcSB2cG11bGRxIHZwb3IgdnBzYWRidyB2cHNodWZiIHZwc2h1ZmQgdnBzaHVmaHcgdnBzaHVmbHcgdnBzaWduYiB2cHNpZ253IHZwc2lnbmQgdnBzbGxkcSB2cHNybGRxIHZwc2xsdyB2cHNsbGQgdnBzbGxxIHZwc3JhdyB2cHNyYWQgdnBzcmx3IHZwc3JsZCB2cHNybHEgdnB0ZXN0IHZwc3ViYiB2cHN1YncgdnBzdWJkIHZwc3VicSB2cHN1YnNiIHZwc3Vic3cgdnBzdWJ1c2IgdnBzdWJ1c3cgdnB1bnBja2hidyB2cHVucGNraHdkIHZwdW5wY2toZHEgdnB1bnBja2hxZHEgdnB1bnBja2xidyB2cHVucGNrbHdkIHZwdW5wY2tsZHEgdnB1bnBja2xxZHEgdnB4b3IgdnJjcHBzIHZyY3BzcyB2cnNxcnRwcyB2cnNxcnRzcyB2cm91bmRwZCB2cm91bmRwcyB2cm91bmRzZCB2cm91bmRzcyB2c2h1ZnBkIHZzaHVmcHMgdnNxcnRwZCB2c3FydHBzIHZzcXJ0c2QgdnNxcnRzcyB2c3RteGNzciB2c3VicGQgdnN1YnBzIHZzdWJzZCB2c3Vic3MgdnRlc3RwcyB2dGVzdHBkIHZ1Y29taXNkIHZ1Y29taXNzIHZ1bnBja2hwZCB2dW5wY2tocHMgdnVucGNrbHBkIHZ1bnBja2xwcyB2eG9ycGQgdnhvcnBzIHZ6ZXJvYWxsIHZ6ZXJvdXBwZXIgcGNsbXVsbHFscWRxIHBjbG11bGhxbHFkcSBwY2xtdWxscWhxZHEgcGNsbXVsaHFocWRxIHBjbG11bHFkcSB2cGNsbXVsbHFscWRxIHZwY2xtdWxocWxxZHEgdnBjbG11bGxxaHFkcSB2cGNsbXVsaHFocWRxIHZwY2xtdWxxZHEgdmZtYWRkMTMycHMgdmZtYWRkMTMycGQgdmZtYWRkMzEycHMgdmZtYWRkMzEycGQgdmZtYWRkMjEzcHMgdmZtYWRkMjEzcGQgdmZtYWRkMTIzcHMgdmZtYWRkMTIzcGQgdmZtYWRkMjMxcHMgdmZtYWRkMjMxcGQgdmZtYWRkMzIxcHMgdmZtYWRkMzIxcGQgdmZtYWRkc3ViMTMycHMgdmZtYWRkc3ViMTMycGQgdmZtYWRkc3ViMzEycHMgdmZtYWRkc3ViMzEycGQgdmZtYWRkc3ViMjEzcHMgdmZtYWRkc3ViMjEzcGQgdmZtYWRkc3ViMTIzcHMgdmZtYWRkc3ViMTIzcGQgdmZtYWRkc3ViMjMxcHMgdmZtYWRkc3ViMjMxcGQgdmZtYWRkc3ViMzIxcHMgdmZtYWRkc3ViMzIxcGQgdmZtc3ViMTMycHMgdmZtc3ViMTMycGQgdmZtc3ViMzEycHMgdmZtc3ViMzEycGQgdmZtc3ViMjEzcHMgdmZtc3ViMjEzcGQgdmZtc3ViMTIzcHMgdmZtc3ViMTIzcGQgdmZtc3ViMjMxcHMgdmZtc3ViMjMxcGQgdmZtc3ViMzIxcHMgdmZtc3ViMzIxcGQgdmZtc3ViYWRkMTMycHMgdmZtc3ViYWRkMTMycGQgdmZtc3ViYWRkMzEycHMgdmZtc3ViYWRkMzEycGQgdmZtc3ViYWRkMjEzcHMgdmZtc3ViYWRkMjEzcGQgdmZtc3ViYWRkMTIzcHMgdmZtc3ViYWRkMTIzcGQgdmZtc3ViYWRkMjMxcHMgdmZtc3ViYWRkMjMxcGQgdmZtc3ViYWRkMzIxcHMgdmZtc3ViYWRkMzIxcGQgdmZubWFkZDEzMnBzIHZmbm1hZGQxMzJwZCB2Zm5tYWRkMzEycHMgdmZubWFkZDMxMnBkIHZmbm1hZGQyMTNwcyB2Zm5tYWRkMjEzcGQgdmZubWFkZDEyM3BzIHZmbm1hZGQxMjNwZCB2Zm5tYWRkMjMxcHMgdmZubWFkZDIzMXBkIHZmbm1hZGQzMjFwcyB2Zm5tYWRkMzIxcGQgdmZubXN1YjEzMnBzIHZmbm1zdWIxMzJwZCB2Zm5tc3ViMzEycHMgdmZubXN1YjMxMnBkIHZmbm1zdWIyMTNwcyB2Zm5tc3ViMjEzcGQgdmZubXN1YjEyM3BzIHZmbm1zdWIxMjNwZCB2Zm5tc3ViMjMxcHMgdmZubXN1YjIzMXBkIHZmbm1zdWIzMjFwcyB2Zm5tc3ViMzIxcGQgdmZtYWRkMTMyc3MgdmZtYWRkMTMyc2QgdmZtYWRkMzEyc3MgdmZtYWRkMzEyc2QgdmZtYWRkMjEzc3MgdmZtYWRkMjEzc2QgdmZtYWRkMTIzc3MgdmZtYWRkMTIzc2QgdmZtYWRkMjMxc3MgdmZtYWRkMjMxc2QgdmZtYWRkMzIxc3MgdmZtYWRkMzIxc2QgdmZtc3ViMTMyc3MgdmZtc3ViMTMyc2QgdmZtc3ViMzEyc3MgdmZtc3ViMzEyc2QgdmZtc3ViMjEzc3MgdmZtc3ViMjEzc2QgdmZtc3ViMTIzc3MgdmZtc3ViMTIzc2QgdmZtc3ViMjMxc3MgdmZtc3ViMjMxc2QgdmZtc3ViMzIxc3MgdmZtc3ViMzIxc2QgdmZubWFkZDEzMnNzIHZmbm1hZGQxMzJzZCB2Zm5tYWRkMzEyc3MgdmZubWFkZDMxMnNkIHZmbm1hZGQyMTNzcyB2Zm5tYWRkMjEzc2QgdmZubWFkZDEyM3NzIHZmbm1hZGQxMjNzZCB2Zm5tYWRkMjMxc3MgdmZubWFkZDIzMXNkIHZmbm1hZGQzMjFzcyB2Zm5tYWRkMzIxc2QgdmZubXN1YjEzMnNzIHZmbm1zdWIxMzJzZCB2Zm5tc3ViMzEyc3MgdmZubXN1YjMxMnNkIHZmbm1zdWIyMTNzcyB2Zm5tc3ViMjEzc2QgdmZubXN1YjEyM3NzIHZmbm1zdWIxMjNzZCB2Zm5tc3ViMjMxc3MgdmZubXN1YjIzMXNkIHZmbm1zdWIzMjFzcyB2Zm5tc3ViMzIxc2QgcmRmc2Jhc2UgcmRnc2Jhc2UgcmRyYW5kIHdyZnNiYXNlIHdyZ3NiYXNlIHZjdnRwaDJwcyB2Y3Z0cHMycGggYWRjeCBhZG94IHJkc2VlZCBjbGFjIHN0YWMgeHN0b3JlIHhjcnlwdGVjYiB4Y3J5cHRjYmMgeGNyeXB0Y3RyIHhjcnlwdGNmYiB4Y3J5cHRvZmIgbW9udG11bCB4c2hhMSB4c2hhMjU2IGxsd3BjYiBzbHdwY2IgbHdwdmFsIGx3cGlucyB2Zm1hZGRwZCB2Zm1hZGRwcyB2Zm1hZGRzZCB2Zm1hZGRzcyB2Zm1hZGRzdWJwZCB2Zm1hZGRzdWJwcyB2Zm1zdWJhZGRwZCB2Zm1zdWJhZGRwcyB2Zm1zdWJwZCB2Zm1zdWJwcyB2Zm1zdWJzZCB2Zm1zdWJzcyB2Zm5tYWRkcGQgdmZubWFkZHBzIHZmbm1hZGRzZCB2Zm5tYWRkc3MgdmZubXN1YnBkIHZmbm1zdWJwcyB2Zm5tc3Vic2QgdmZubXN1YnNzIHZmcmN6cGQgdmZyY3pwcyB2ZnJjenNkIHZmcmN6c3MgdnBjbW92IHZwY29tYiB2cGNvbWQgdnBjb21xIHZwY29tdWIgdnBjb211ZCB2cGNvbXVxIHZwY29tdXcgdnBjb213IHZwaGFkZGJkIHZwaGFkZGJxIHZwaGFkZGJ3IHZwaGFkZGRxIHZwaGFkZHViZCB2cGhhZGR1YnEgdnBoYWRkdWJ3IHZwaGFkZHVkcSB2cGhhZGR1d2QgdnBoYWRkdXdxIHZwaGFkZHdkIHZwaGFkZHdxIHZwaHN1YmJ3IHZwaHN1YmRxIHZwaHN1YndkIHZwbWFjc2RkIHZwbWFjc2RxaCB2cG1hY3NkcWwgdnBtYWNzc2RkIHZwbWFjc3NkcWggdnBtYWNzc2RxbCB2cG1hY3Nzd2QgdnBtYWNzc3d3IHZwbWFjc3dkIHZwbWFjc3d3IHZwbWFkY3Nzd2QgdnBtYWRjc3dkIHZwcGVybSB2cHJvdGIgdnByb3RkIHZwcm90cSB2cHJvdHcgdnBzaGFiIHZwc2hhZCB2cHNoYXEgdnBzaGF3IHZwc2hsYiB2cHNobGQgdnBzaGxxIHZwc2hsdyB2YnJvYWRjYXN0aTEyOCB2cGJsZW5kZCB2cGJyb2FkY2FzdGIgdnBicm9hZGNhc3R3IHZwYnJvYWRjYXN0ZCB2cGJyb2FkY2FzdHEgdnBlcm1kIHZwZXJtcGQgdnBlcm1wcyB2cGVybXEgdnBlcm0yaTEyOCB2ZXh0cmFjdGkxMjggdmluc2VydGkxMjggdnBtYXNrbW92ZCB2cG1hc2ttb3ZxIHZwc2xsdmQgdnBzbGx2cSB2cHNyYXZkIHZwc3JsdmQgdnBzcmx2cSB2Z2F0aGVyZHBkIHZnYXRoZXJxcGQgdmdhdGhlcmRwcyB2Z2F0aGVycXBzIHZwZ2F0aGVyZGQgdnBnYXRoZXJxZCB2cGdhdGhlcmRxIHZwZ2F0aGVycXEgeGFib3J0IHhiZWdpbiB4ZW5kIHh0ZXN0IGFuZG4gYmV4dHIgYmxjaSBibGNpYyBibHNpIGJsc2ljIGJsY2ZpbGwgYmxzZmlsbCBibGNtc2sgYmxzbXNrIGJsc3IgYmxjcyBiemhpIG11bHggcGRlcCBwZXh0IHJvcnggc2FyeCBzaGx4IHNocnggdHpjbnQgdHptc2sgdDFtc2tjIHZhbGlnbmQgdmFsaWducSB2YmxlbmRtcGQgdmJsZW5kbXBzIHZicm9hZGNhc3RmMzJ4NCB2YnJvYWRjYXN0ZjY0eDQgdmJyb2FkY2FzdGkzMng0IHZicm9hZGNhc3RpNjR4NCB2Y29tcHJlc3NwZCB2Y29tcHJlc3NwcyB2Y3Z0cGQydWRxIHZjdnRwczJ1ZHEgdmN2dHNkMnVzaSB2Y3Z0c3MydXNpIHZjdnR0cGQydWRxIHZjdnR0cHMydWRxIHZjdnR0c2QydXNpIHZjdnR0c3MydXNpIHZjdnR1ZHEycGQgdmN2dHVkcTJwcyB2Y3Z0dXNpMnNkIHZjdnR1c2kyc3MgdmV4cGFuZHBkIHZleHBhbmRwcyB2ZXh0cmFjdGYzMng0IHZleHRyYWN0ZjY0eDQgdmV4dHJhY3RpMzJ4NCB2ZXh0cmFjdGk2NHg0IHZmaXh1cGltbXBkIHZmaXh1cGltbXBzIHZmaXh1cGltbXNkIHZmaXh1cGltbXNzIHZnZXRleHBwZCB2Z2V0ZXhwcHMgdmdldGV4cHNkIHZnZXRleHBzcyB2Z2V0bWFudHBkIHZnZXRtYW50cHMgdmdldG1hbnRzZCB2Z2V0bWFudHNzIHZpbnNlcnRmMzJ4NCB2aW5zZXJ0ZjY0eDQgdmluc2VydGkzMng0IHZpbnNlcnRpNjR4NCB2bW92ZHFhMzIgdm1vdmRxYTY0IHZtb3ZkcXUzMiB2bW92ZHF1NjQgdnBhYnNxIHZwYW5kZCB2cGFuZG5kIHZwYW5kbnEgdnBhbmRxIHZwYmxlbmRtZCB2cGJsZW5kbXEgdnBjbXBsdGQgdnBjbXBsZWQgdnBjbXBuZXFkIHZwY21wbmx0ZCB2cGNtcG5sZWQgdnBjbXBkIHZwY21wbHRxIHZwY21wbGVxIHZwY21wbmVxcSB2cGNtcG5sdHEgdnBjbXBubGVxIHZwY21wcSB2cGNtcGVxdWQgdnBjbXBsdHVkIHZwY21wbGV1ZCB2cGNtcG5lcXVkIHZwY21wbmx0dWQgdnBjbXBubGV1ZCB2cGNtcHVkIHZwY21wZXF1cSB2cGNtcGx0dXEgdnBjbXBsZXVxIHZwY21wbmVxdXEgdnBjbXBubHR1cSB2cGNtcG5sZXVxIHZwY21wdXEgdnBjb21wcmVzc2QgdnBjb21wcmVzc3EgdnBlcm1pMmQgdnBlcm1pMnBkIHZwZXJtaTJwcyB2cGVybWkycSB2cGVybXQyZCB2cGVybXQycGQgdnBlcm10MnBzIHZwZXJtdDJxIHZwZXhwYW5kZCB2cGV4cGFuZHEgdnBtYXhzcSB2cG1heHVxIHZwbWluc3EgdnBtaW51cSB2cG1vdmRiIHZwbW92ZHcgdnBtb3ZxYiB2cG1vdnFkIHZwbW92cXcgdnBtb3ZzZGIgdnBtb3ZzZHcgdnBtb3ZzcWIgdnBtb3ZzcWQgdnBtb3ZzcXcgdnBtb3Z1c2RiIHZwbW92dXNkdyB2cG1vdnVzcWIgdnBtb3Z1c3FkIHZwbW92dXNxdyB2cG9yZCB2cG9ycSB2cHJvbGQgdnByb2xxIHZwcm9sdmQgdnByb2x2cSB2cHJvcmQgdnByb3JxIHZwcm9ydmQgdnByb3J2cSB2cHNjYXR0ZXJkZCB2cHNjYXR0ZXJkcSB2cHNjYXR0ZXJxZCB2cHNjYXR0ZXJxcSB2cHNyYXEgdnBzcmF2cSB2cHRlcm5sb2dkIHZwdGVybmxvZ3EgdnB0ZXN0bWQgdnB0ZXN0bXEgdnB0ZXN0bm1kIHZwdGVzdG5tcSB2cHhvcmQgdnB4b3JxIHZyY3AxNHBkIHZyY3AxNHBzIHZyY3AxNHNkIHZyY3AxNHNzIHZybmRzY2FsZXBkIHZybmRzY2FsZXBzIHZybmRzY2FsZXNkIHZybmRzY2FsZXNzIHZyc3FydDE0cGQgdnJzcXJ0MTRwcyB2cnNxcnQxNHNkIHZyc3FydDE0c3MgdnNjYWxlZnBkIHZzY2FsZWZwcyB2c2NhbGVmc2QgdnNjYWxlZnNzIHZzY2F0dGVyZHBkIHZzY2F0dGVyZHBzIHZzY2F0dGVycXBkIHZzY2F0dGVycXBzIHZzaHVmZjMyeDQgdnNodWZmNjR4MiB2c2h1ZmkzMng0IHZzaHVmaTY0eDIga2FuZG53IGthbmR3IGttb3Z3IGtub3R3IGtvcnRlc3R3IGtvcncga3NoaWZ0bHcga3NoaWZ0cncga3VucGNrYncga3hub3J3IGt4b3J3IHZwYnJvYWRjYXN0bWIycSB2cGJyb2FkY2FzdG13MmQgdnBjb25mbGljdGQgdnBjb25mbGljdHEgdnBsemNudGQgdnBsemNudHEgdmV4cDJwZCB2ZXhwMnBzIHZyY3AyOHBkIHZyY3AyOHBzIHZyY3AyOHNkIHZyY3AyOHNzIHZyc3FydDI4cGQgdnJzcXJ0MjhwcyB2cnNxcnQyOHNkIHZyc3FydDI4c3MgdmdhdGhlcnBmMGRwZCB2Z2F0aGVycGYwZHBzIHZnYXRoZXJwZjBxcGQgdmdhdGhlcnBmMHFwcyB2Z2F0aGVycGYxZHBkIHZnYXRoZXJwZjFkcHMgdmdhdGhlcnBmMXFwZCB2Z2F0aGVycGYxcXBzIHZzY2F0dGVycGYwZHBkIHZzY2F0dGVycGYwZHBzIHZzY2F0dGVycGYwcXBkIHZzY2F0dGVycGYwcXBzIHZzY2F0dGVycGYxZHBkIHZzY2F0dGVycGYxZHBzIHZzY2F0dGVycGYxcXBkIHZzY2F0dGVycGYxcXBzIHByZWZldGNod3QxIGJuZG1rIGJuZGNsIGJuZGN1IGJuZGNuIGJuZG1vdiBibmRsZHggYm5kc3R4IHNoYTFybmRzNCBzaGExbmV4dGUgc2hhMW1zZzEgc2hhMW1zZzIgc2hhMjU2cm5kczIgc2hhMjU2bXNnMSBzaGEyNTZtc2cyIGhpbnRfbm9wMCBoaW50X25vcDEgaGludF9ub3AyIGhpbnRfbm9wMyBoaW50X25vcDQgaGludF9ub3A1IGhpbnRfbm9wNiBoaW50X25vcDcgaGludF9ub3A4IGhpbnRfbm9wOSBoaW50X25vcDEwIGhpbnRfbm9wMTEgaGludF9ub3AxMiBoaW50X25vcDEzIGhpbnRfbm9wMTQgaGludF9ub3AxNSBoaW50X25vcDE2IGhpbnRfbm9wMTcgaGludF9ub3AxOCBoaW50X25vcDE5IGhpbnRfbm9wMjAgaGludF9ub3AyMSBoaW50X25vcDIyIGhpbnRfbm9wMjMgaGludF9ub3AyNCBoaW50X25vcDI1IGhpbnRfbm9wMjYgaGludF9ub3AyNyBoaW50X25vcDI4IGhpbnRfbm9wMjkgaGludF9ub3AzMCBoaW50X25vcDMxIGhpbnRfbm9wMzIgaGludF9ub3AzMyBoaW50X25vcDM0IGhpbnRfbm9wMzUgaGludF9ub3AzNiBoaW50X25vcDM3IGhpbnRfbm9wMzggaGludF9ub3AzOSBoaW50X25vcDQwIGhpbnRfbm9wNDEgaGludF9ub3A0MiBoaW50X25vcDQzIGhpbnRfbm9wNDQgaGludF9ub3A0NSBoaW50X25vcDQ2IGhpbnRfbm9wNDcgaGludF9ub3A0OCBoaW50X25vcDQ5IGhpbnRfbm9wNTAgaGludF9ub3A1MSBoaW50X25vcDUyIGhpbnRfbm9wNTMgaGludF9ub3A1NCBoaW50X25vcDU1IGhpbnRfbm9wNTYgaGludF9ub3A1NyBoaW50X25vcDU4IGhpbnRfbm9wNTkgaGludF9ub3A2MCBoaW50X25vcDYxIGhpbnRfbm9wNjIgaGludF9ub3A2MycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLy8gSW5zdHJ1Y3Rpb24gcG9pbnRlclxuICAgICAgICAnaXAgZWlwIHJpcCAnICtcbiAgICAgICAgLy8gOC1iaXQgcmVnaXN0ZXJzXG4gICAgICAgICdhbCBhaCBibCBiaCBjbCBjaCBkbCBkaCBzaWwgZGlsIGJwbCBzcGwgcjhiIHI5YiByMTBiIHIxMWIgcjEyYiByMTNiIHIxNGIgcjE1YiAnICtcbiAgICAgICAgLy8gMTYtYml0IHJlZ2lzdGVyc1xuICAgICAgICAnYXggYnggY3ggZHggc2kgZGkgYnAgc3Agcjh3IHI5dyByMTB3IHIxMXcgcjEydyByMTN3IHIxNHcgcjE1dyAnICtcbiAgICAgICAgLy8gMzItYml0IHJlZ2lzdGVyc1xuICAgICAgICAnZWF4IGVieCBlY3ggZWR4IGVzaSBlZGkgZWJwIGVzcCBlaXAgcjhkIHI5ZCByMTBkIHIxMWQgcjEyZCByMTNkIHIxNGQgcjE1ZCAnICtcbiAgICAgICAgLy8gNjQtYml0IHJlZ2lzdGVyc1xuICAgICAgICAncmF4IHJieCByY3ggcmR4IHJzaSByZGkgcmJwIHJzcCByOCByOSByMTAgcjExIHIxMiByMTMgcjE0IHIxNSAnICtcbiAgICAgICAgLy8gU2VnbWVudCByZWdpc3RlcnNcbiAgICAgICAgJ2NzIGRzIGVzIGZzIGdzIHNzICcgK1xuICAgICAgICAvLyBGbG9hdGluZyBwb2ludCBzdGFjayByZWdpc3RlcnNcbiAgICAgICAgJ3N0IHN0MCBzdDEgc3QyIHN0MyBzdDQgc3Q1IHN0NiBzdDcgJyArXG4gICAgICAgIC8vIE1NWCBSZWdpc3RlcnNcbiAgICAgICAgJ21tMCBtbTEgbW0yIG1tMyBtbTQgbW01IG1tNiBtbTcgJyArXG4gICAgICAgIC8vIFNTRSByZWdpc3RlcnNcbiAgICAgICAgJ3htbTAgIHhtbTEgIHhtbTIgIHhtbTMgIHhtbTQgIHhtbTUgIHhtbTYgIHhtbTcgIHhtbTggIHhtbTkgeG1tMTAgIHhtbTExIHhtbTEyIHhtbTEzIHhtbTE0IHhtbTE1ICcgK1xuICAgICAgICAneG1tMTYgeG1tMTcgeG1tMTggeG1tMTkgeG1tMjAgeG1tMjEgeG1tMjIgeG1tMjMgeG1tMjQgeG1tMjUgeG1tMjYgeG1tMjcgeG1tMjggeG1tMjkgeG1tMzAgeG1tMzEgJyArXG4gICAgICAgIC8vIEFWWCByZWdpc3RlcnNcbiAgICAgICAgJ3ltbTAgIHltbTEgIHltbTIgIHltbTMgIHltbTQgIHltbTUgIHltbTYgIHltbTcgIHltbTggIHltbTkgeW1tMTAgIHltbTExIHltbTEyIHltbTEzIHltbTE0IHltbTE1ICcgK1xuICAgICAgICAneW1tMTYgeW1tMTcgeW1tMTggeW1tMTkgeW1tMjAgeW1tMjEgeW1tMjIgeW1tMjMgeW1tMjQgeW1tMjUgeW1tMjYgeW1tMjcgeW1tMjggeW1tMjkgeW1tMzAgeW1tMzEgJyArXG4gICAgICAgIC8vIEFWWC01MTJGIHJlZ2lzdGVyc1xuICAgICAgICAnem1tMCAgem1tMSAgem1tMiAgem1tMyAgem1tNCAgem1tNSAgem1tNiAgem1tNyAgem1tOCAgem1tOSB6bW0xMCAgem1tMTEgem1tMTIgem1tMTMgem1tMTQgem1tMTUgJyArXG4gICAgICAgICd6bW0xNiB6bW0xNyB6bW0xOCB6bW0xOSB6bW0yMCB6bW0yMSB6bW0yMiB6bW0yMyB6bW0yNCB6bW0yNSB6bW0yNiB6bW0yNyB6bW0yOCB6bW0yOSB6bW0zMCB6bW0zMSAnICtcbiAgICAgICAgLy8gQVZYLTUxMkYgbWFzayByZWdpc3RlcnNcbiAgICAgICAgJ2swIGsxIGsyIGszIGs0IGs1IGs2IGs3ICcgK1xuICAgICAgICAvLyBCb3VuZCAoTVBYKSByZWdpc3RlclxuICAgICAgICAnYm5kMCBibmQxIGJuZDIgYm5kMyAnICtcbiAgICAgICAgLy8gU3BlY2lhbCByZWdpc3RlclxuICAgICAgICAnY3IwIGNyMSBjcjIgY3IzIGNyNCBjcjggZHIwIGRyMSBkcjIgZHIzIGRyOCB0cjMgdHI0IHRyNSB0cjYgdHI3ICcgK1xuICAgICAgICAvLyBOQVNNIGFsdHJlZyBwYWNrYWdlXG4gICAgICAgICdyMCByMSByMiByMyByNCByNSByNiByNyByMGIgcjFiIHIyYiByM2IgcjRiIHI1YiByNmIgcjdiICcgK1xuICAgICAgICAncjB3IHIxdyByMncgcjN3IHI0dyByNXcgcjZ3IHI3dyByMGQgcjFkIHIyZCByM2QgcjRkIHI1ZCByNmQgcjdkICcgK1xuICAgICAgICAncjBoIHIxaCByMmggcjNoICcgK1xuICAgICAgICAncjBsIHIxbCByMmwgcjNsIHI0bCByNWwgcjZsIHI3bCByOGwgcjlsIHIxMGwgcjExbCByMTJsIHIxM2wgcjE0bCByMTVsICcgK1xuXG4gICAgICAgICdkYiBkdyBkZCBkcSBkdCBkZHEgZG8gZHkgZHogJyArXG4gICAgICAgICdyZXNiIHJlc3cgcmVzZCByZXNxIHJlc3QgcmVzZHEgcmVzbyByZXN5IHJlc3ogJyArXG4gICAgICAgICdpbmNiaW4gZXF1IHRpbWVzICcgK1xuICAgICAgICAnYnl0ZSB3b3JkIGR3b3JkIHF3b3JkIG5vc3BsaXQgcmVsIGFicyBzZWcgd3J0IHN0cmljdCBuZWFyIGZhciBhMzIgcHRyJyxcblxuICAgICAgbWV0YTpcbiAgICAgICAgJyVkZWZpbmUgJXhkZWZpbmUgJSsgJXVuZGVmICVkZWZzdHIgJWRlZnRvayAlYXNzaWduICVzdHJjYXQgJXN0cmxlbiAlc3Vic3RyICVyb3RhdGUgJWVsaWYgJWVsc2UgJWVuZGlmICcgK1xuICAgICAgICAnJWlmICVpZm1hY3JvICVpZmN0eCAlaWZpZG4gJWlmaWRuaSAlaWZpZCAlaWZudW0gJWlmc3RyICVpZnRva2VuICVpZmVtcHR5ICVpZmVudiAlZXJyb3IgJXdhcm5pbmcgJWZhdGFsICVyZXAgJyArXG4gICAgICAgICclZW5kcmVwICVpbmNsdWRlICVwdXNoICVwb3AgJXJlcGwgJXBhdGhzZWFyY2ggJWRlcGVuZCAldXNlICVhcmcgJXN0YWNrc2l6ZSAlbG9jYWwgJWxpbmUgJWNvbW1lbnQgJWVuZGNvbW1lbnQgJyArXG4gICAgICAgICcubm9saXN0ICcgK1xuICAgICAgICAnX19GSUxFX18gX19MSU5FX18gX19TRUNUX18gIF9fQklUU19fIF9fT1VUUFVUX0ZPUk1BVF9fIF9fREFURV9fIF9fVElNRV9fIF9fREFURV9OVU1fXyBfX1RJTUVfTlVNX18gJyArXG4gICAgICAgICdfX1VUQ19EQVRFX18gX19VVENfVElNRV9fIF9fVVRDX0RBVEVfTlVNX18gX19VVENfVElNRV9OVU1fXyAgX19QQVNTX18gc3RydWMgZW5kc3RydWMgaXN0cnVjIGF0IGllbmQgJyArXG4gICAgICAgICdhbGlnbiBhbGlnbmIgc2VjdGFsaWduIGRheiBub2RheiB1cCBkb3duIHplcm8gZGVmYXVsdCBvcHRpb24gYXNzdW1lIHB1YmxpYyAnICtcblxuICAgICAgICAnYml0cyB1c2UxNiB1c2UzMiB1c2U2NCBkZWZhdWx0IHNlY3Rpb24gc2VnbWVudCBhYnNvbHV0ZSBleHRlcm4gZ2xvYmFsIGNvbW1vbiBjcHUgZmxvYXQgJyArXG4gICAgICAgICdfX3V0ZjE2X18gX191dGYxNmxlX18gX191dGYxNmJlX18gX191dGYzMl9fIF9fdXRmMzJsZV9fIF9fdXRmMzJiZV9fICcgK1xuICAgICAgICAnX19mbG9hdDhfXyBfX2Zsb2F0MTZfXyBfX2Zsb2F0MzJfXyBfX2Zsb2F0NjRfXyBfX2Zsb2F0ODBtX18gX19mbG9hdDgwZV9fIF9fZmxvYXQxMjhsX18gX19mbG9hdDEyOGhfXyAnICtcbiAgICAgICAgJ19fSW5maW5pdHlfXyBfX1FOYU5fXyBfX1NOYU5fXyBJbmYgTmFOIFFOYU4gU05hTiBmbG9hdDggZmxvYXQxNiBmbG9hdDMyIGZsb2F0NjQgZmxvYXQ4MG0gZmxvYXQ4MGUgJyArXG4gICAgICAgICdmbG9hdDEyOGwgZmxvYXQxMjhoIF9fRkxPQVRfREFaX18gX19GTE9BVF9ST1VORF9fIF9fRkxPQVRfXydcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICc7JyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgLy8gRmxvYXQgbnVtYmVyIGFuZCB4ODcgQkNEXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OihbMC05XVswLTlfXSopP1xcXFwuWzAtOV9dKig/OltlRV1bKy1dP1swLTlfXSspP3wnICtcbiAgICAgICAgICAgICAgICAgICAnKDBbWHhdKT9bMC05XVswLTlfXSpcXFxcLj9bMC05X10qKD86W3BQXSg/OlsrLV0/WzAtOV9dKyk/KT8pXFxcXGInLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcblxuICAgICAgICAgIC8vIEhleCBudW1iZXIgaW4gJFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcJFswLTldWzAtOUEtRmEtZl0qJywgcmVsZXZhbmNlOiAwIH0sXG5cbiAgICAgICAgICAvLyBOdW1iZXIgaW4gSCxELFQsUSxPLEIsWSBzdWZmaXhcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIoPzpbMC05QS1GYS1mXVswLTlBLUZhLWZfXSpbSGhdfFswLTldWzAtOV9dKltEZFR0XT98WzAtN11bMC03X10qW1FxT29dfFswLTFdWzAtMV9dKltCYll5XSlcXFxcYicgfSxcblxuICAgICAgICAgIC8vIE51bWJlciBpbiBYLEQsVCxRLE8sQixZIHByZWZpeFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYig/OjBbWHhdWzAtOUEtRmEtZl9dK3wwW0RkVHRdWzAtOV9dK3wwW1FxT29dWzAtN19dK3wwW0JiWXldWzAtMV9dKylcXFxcYid9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBEb3VibGUgcXVvdGUgc3RyaW5nXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIC8vIFNpbmdsZS1xdW90ZWQgc3RyaW5nXG4gICAgICAgICAgeyBiZWdpbjogJ1xcJycsIGVuZDogJ1teXFxcXFxcXFxdXFwnJyB9LFxuICAgICAgICAgIC8vIEJhY2txdW90ZWQgc3RyaW5nXG4gICAgICAgICAgeyBiZWdpbjogJ2AnLCBlbmQ6ICdbXlxcXFxcXFxcXWAnIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIC8vIEdsb2JhbCBsYWJlbCBhbmQgbG9jYWwgbGFiZWxcbiAgICAgICAgICB7IGJlZ2luOiAnXlxcXFxzKltBLVphLXouXz9dW0EtWmEtejAtOV8kI0B+Lj9dKig6fFxcXFxzK2xhYmVsKScgfSxcbiAgICAgICAgICAvLyBNYWNyby1sb2NhbCBsYWJlbFxuICAgICAgICAgIHsgYmVnaW46ICdeXFxcXHMqJSVbQS1aYS16MC05XyQjQH4uP10qOicgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBNYWNybyBwYXJhbWV0ZXJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICBiZWdpbjogJyVbMC05XSsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBNYWNybyBwYXJhbWV0ZXJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICBiZWdpbjogJyUhXFxTKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXlxccypcXC5bXFx3Xy1dKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRJTl9NT0RVTEVTID1cbiAgICAnT2JqZWN0TG9hZGVyIEFuaW1hdGUgTW92aWVDcmVkaXRzIFNsaWRlcyBGaWx0ZXJzIFNoYWRpbmcgTWF0ZXJpYWxzIExlbnNGbGFyZSBNYXBwaW5nIFZMQ0F1ZGlvVmlkZW8gJyArXG4gICAgJ1N0ZXJlb0RlY29kZXIgUG9pbnRDbG91ZCBOZXR3b3JrQWNjZXNzIFJlbW90ZUNvbnRyb2wgUmVnRXhwIENocm9tYUtleSBTbm93ZmFsbCBOb2RlSlMgU3BlZWNoIENoYXJ0cyc7XG5cbiAgdmFyIFhMX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaWYgdGhlbiBlbHNlIGRvIHdoaWxlIHVudGlsIGZvciBsb29wIGltcG9ydCB3aXRoIGlzIGFzIHdoZXJlIHdoZW4gYnkgZGF0YSBjb25zdGFudCAnICtcbiAgICAgICdpbnRlZ2VyIHJlYWwgdGV4dCBuYW1lIGJvb2xlYW4gc3ltYm9sIGluZml4IHByZWZpeCBwb3N0Zml4IGJsb2NrIHRyZWUnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBuaWwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2luIG1vZCByZW0gYW5kIG9yIHhvciBub3QgYWJzIHNpZ24gZmxvb3IgY2VpbCBzcXJ0IHNpbiBjb3MgdGFuIGFzaW4gJyArXG4gICAgICAnYWNvcyBhdGFuIGV4cCBleHBtMSBsb2cgbG9nMiBsb2cxMCBsb2cxcCBwaSBhdCB0ZXh0X2xlbmd0aCB0ZXh0X3JhbmdlICcgK1xuICAgICAgJ3RleHRfZmluZCB0ZXh0X3JlcGxhY2UgY29udGFpbnMgcGFnZSBzbGlkZSBiYXNpY19zbGlkZSB0aXRsZV9zbGlkZSAnICtcbiAgICAgICd0aXRsZSBzdWJ0aXRsZSBmYWRlX2luIGZhZGVfb3V0IGZhZGVfYXQgY2xlYXJfY29sb3IgY29sb3IgbGluZV9jb2xvciAnICtcbiAgICAgICdsaW5lX3dpZHRoIHRleHR1cmVfd3JhcCB0ZXh0dXJlX3RyYW5zZm9ybSB0ZXh0dXJlIHNjYWxlXz94IHNjYWxlXz95ICcgK1xuICAgICAgJ3NjYWxlXz96PyB0cmFuc2xhdGVfP3ggdHJhbnNsYXRlXz95IHRyYW5zbGF0ZV8/ej8gcm90YXRlXz94IHJvdGF0ZV8/eSAnICtcbiAgICAgICdyb3RhdGVfP3o/IHJlY3RhbmdsZSBjaXJjbGUgZWxsaXBzZSBzcGhlcmUgcGF0aCBsaW5lX3RvIG1vdmVfdG8gJyArXG4gICAgICAncXVhZF90byBjdXJ2ZV90byB0aGVtZSBiYWNrZ3JvdW5kIGNvbnRlbnRzIGxvY2FsbHkgdGltZSBtb3VzZV8/eCAnICtcbiAgICAgICdtb3VzZV8/eSBtb3VzZV9idXR0b25zICcgK1xuICAgICAgQlVJTFRJTl9NT0RVTEVTXG4gIH07XG5cbiAgdmFyIERPVUJMRV9RVU9URV9URVhUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJywgaWxsZWdhbDogJ1xcXFxuJ1xuICB9O1xuICB2YXIgU0lOR0xFX1FVT1RFX1RFWFQgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsIGlsbGVnYWw6ICdcXFxcbidcbiAgfTtcbiAgdmFyIExPTkdfVEVYVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnPDwnLCBlbmQ6ICc+PidcbiAgfTtcbiAgdmFyIEJBU0VEX05VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnWzAtOV0rI1swLTlBLVpfXSsoXFxcXC5bMC05LUEtWl9dKyk/Iz8oW0VlXVsrLV0/WzAtOV0rKT8nXG4gIH07XG4gIHZhciBJTVBPUlQgPSB7XG4gICAgYmVnaW5LZXl3b3JkczogJ2ltcG9ydCcsIGVuZDogJyQnLFxuICAgIGtleXdvcmRzOiBYTF9LRVlXT1JEUyxcbiAgICBjb250YWluczogW0RPVUJMRV9RVU9URV9URVhUXVxuICB9O1xuICB2YXIgRlVOQ1RJT05fREVGSU5JVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW46IC9bYS16XVteXFxuXSotPi8sIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6IC8tPi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtzdGFydHM6IHtcbiAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBYTF9LRVlXT1JEU1xuICAgICAgfX0pXG4gICAgXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndGFvJ10sXG4gICAgbGV4ZW1lczogL1thLXpBLVpdW2EtekEtWjAtOV8/XSovLFxuICAgIGtleXdvcmRzOiBYTF9LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIERPVUJMRV9RVU9URV9URVhULFxuICAgIFNJTkdMRV9RVU9URV9URVhULFxuICAgIExPTkdfVEVYVCxcbiAgICBGVU5DVElPTl9ERUZJTklUSU9OLFxuICAgIElNUE9SVCxcbiAgICBCQVNFRF9OVU1CRVIsXG4gICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIHNlZSBodHRwczovL3d3dy53My5vcmcvVFIveHF1ZXJ5LyNpZC10ZXJtaW5hbC1kZWxpbWl0YXRpb25cbiAgdmFyIEtFWVdPUkRTID0gJ21vZHVsZSBzY2hlbWEgbmFtZXNwYWNlIGJvdW5kYXJ5LXNwYWNlIHByZXNlcnZlIG5vLXByZXNlcnZlIHN0cmlwIGRlZmF1bHQgY29sbGF0aW9uIGJhc2UtdXJpIG9yZGVyaW5nIGNvbnRleHQgZGVjaW1hbC1mb3JtYXQgZGVjaW1hbC1zZXBhcmF0b3IgY29weS1uYW1lc3BhY2VzIGVtcHR5LXNlcXVlbmNlIGV4Y2VwdCBleHBvbmVudC1zZXBhcmF0b3IgZXh0ZXJuYWwgZ3JvdXBpbmctc2VwYXJhdG9yIGluaGVyaXQgbm8taW5oZXJpdCBsYXggbWludXMtc2lnbiBwZXItbWlsbGUgcGVyY2VudCBzY2hlbWEtYXR0cmlidXRlIHNjaGVtYS1lbGVtZW50IHN0cmljdCB1bm9yZGVyZWQgemVyby1kaWdpdCAnICtcbiAgJ2RlY2xhcmUgaW1wb3J0IG9wdGlvbiBmdW5jdGlvbiB2YWxpZGF0ZSB2YXJpYWJsZSAnICtcbiAgJ2ZvciBhdCBpbiBsZXQgd2hlcmUgb3JkZXIgZ3JvdXAgYnkgcmV0dXJuIGlmIHRoZW4gZWxzZSAnICtcbiAgJ3R1bWJsaW5nIHNsaWRpbmcgd2luZG93IHN0YXJ0IHdoZW4gb25seSBlbmQgcHJldmlvdXMgbmV4dCBzdGFibGUgJyArXG4gICdhc2NlbmRpbmcgZGVzY2VuZGluZyBhbGxvd2luZyBlbXB0eSBncmVhdGVzdCBsZWFzdCBzb21lIGV2ZXJ5IHNhdGlzZmllcyBzd2l0Y2ggY2FzZSB0eXBlc3dpdGNoIHRyeSBjYXRjaCAnICtcbiAgJ2FuZCBvciB0byB1bmlvbiBpbnRlcnNlY3QgaW5zdGFuY2Ugb2YgdHJlYXQgYXMgY2FzdGFibGUgY2FzdCBtYXAgYXJyYXkgJyArXG4gICdkZWxldGUgaW5zZXJ0IGludG8gcmVwbGFjZSB2YWx1ZSByZW5hbWUgY29weSBtb2RpZnkgdXBkYXRlJztcblxuICAvLyBOb2RlIFR5cGVzIChzb3J0ZWQgYnkgaW5oZXJpdGFuY2UpXG4gIC8vIGF0b21pYyB0eXBlcyAoc29ydGVkIGJ5IGluaGVyaXRhbmNlKVxuICB2YXIgVFlQRSA9ICdpdGVtIGRvY3VtZW50LW5vZGUgbm9kZSBhdHRyaWJ1dGUgZG9jdW1lbnQgZWxlbWVudCBjb21tZW50IG5hbWVzcGFjZSBuYW1lc3BhY2Utbm9kZSBwcm9jZXNzaW5nLWluc3RydWN0aW9uIHRleHQgY29uc3RydWN0aW9uICcgK1xuICAneHM6YW55QXRvbWljVHlwZSB4czp1bnR5cGVkQXRvbWljIHhzOmR1cmF0aW9uIHhzOnRpbWUgeHM6ZGVjaW1hbCB4czpmbG9hdCB4czpkb3VibGUgeHM6Z1llYXJNb250aCB4czpnWWVhciB4czpnTW9udGhEYXkgeHM6Z01vbnRoIHhzOmdEYXkgeHM6Ym9vbGVhbiB4czpiYXNlNjRCaW5hcnkgeHM6aGV4QmluYXJ5IHhzOmFueVVSSSB4czpRTmFtZSB4czpOT1RBVElPTiB4czpkYXRlVGltZSB4czpkYXRlVGltZVN0YW1wIHhzOmRhdGUgeHM6c3RyaW5nIHhzOm5vcm1hbGl6ZWRTdHJpbmcgeHM6dG9rZW4geHM6bGFuZ3VhZ2UgeHM6Tk1UT0tFTiB4czpOYW1lIHhzOk5DTmFtZSB4czpJRCB4czpJRFJFRiB4czpFTlRJVFkgeHM6aW50ZWdlciB4czpub25Qb3NpdGl2ZUludGVnZXIgeHM6bmVnYXRpdmVJbnRlZ2VyIHhzOmxvbmcgeHM6aW50IHhzOnNob3J0IHhzOmJ5dGUgeHM6bm9uTmVnYXRpdmVJbnRlZ2VyIHhzOnVuaXNpZ25lZExvbmcgeHM6dW5zaWduZWRJbnQgeHM6dW5zaWduZWRTaG9ydCB4czp1bnNpZ25lZEJ5dGUgeHM6cG9zaXRpdmVJbnRlZ2VyIHhzOnllYXJNb250aER1cmF0aW9uIHhzOmRheVRpbWVEdXJhdGlvbic7XG5cbiAgdmFyIExJVEVSQUwgPSAnZXEgbmUgbHQgbGUgZ3QgZ2UgaXMgJyArXG4gICAgJ3NlbGY6OiBjaGlsZDo6IGRlc2NlbmRhbnQ6OiBkZXNjZW5kYW50LW9yLXNlbGY6OiBhdHRyaWJ1dGU6OiBmb2xsb3dpbmc6OiBmb2xsb3dpbmctc2libGluZzo6IHBhcmVudDo6IGFuY2VzdG9yOjogYW5jZXN0b3Itb3Itc2VsZjo6IHByZWNlZGluZzo6IHByZWNlZGluZy1zaWJsaW5nOjogJyArXG4gICAgJ05hTic7XG5cbiAgLy8gZnVuY3Rpb25zIChUT0RPOiBmaW5kIHJlZ2V4IGZvciBvcDogd2l0aG91dCBicmVha2luZyBidWlsZClcbiAgdmFyIEJVSUxUX0lOID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICB2YXJpYW50czogW3tcbiAgICAgIGJlZ2luOiAvXFxiYXJyYXlcXDovLFxuICAgICAgZW5kOiAvKD86YXBwZW5kfGZpbHRlcnxmbGF0dGVufGZvbGRcXC0oPzpsZWZ0fHJpZ2h0KXxmb3ItZWFjaCg/OlxcLXBhaXIpP3xnZXR8aGVhZHxpbnNlcnRcXC1iZWZvcmV8am9pbnxwdXR8cmVtb3ZlfHJldmVyc2V8c2l6ZXxzb3J0fHN1YmFycmF5fHRhaWwpXFxiL1xuICAgIH0sIHtcbiAgICAgIGJlZ2luOiAvXFxibWFwXFw6LyxcbiAgICAgIGVuZDogLyg/OmNvbnRhaW5zfGVudHJ5fGZpbmR8Zm9yXFwtZWFjaHxnZXR8a2V5c3xtZXJnZXxwdXR8cmVtb3ZlfHNpemUpXFxiL1xuICAgIH0sIHtcbiAgICAgIGJlZ2luOiAvXFxibWF0aFxcOi8sXG4gICAgICBlbmQ6IC8oPzphKD86Y29zfHNpbnx0YW5bMl0/KXxjb3N8ZXhwKD86MTApP3xsb2coPzoxMCk/fHBpfHBvd3xzaW58c3FydHx0YW4pXFxiL1xuICAgIH0sIHtcbiAgICAgIGJlZ2luOiAvXFxib3BcXDovLFxuICAgICAgZW5kOiAvXFwoLyxcbiAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYmZuXFw6LyxcbiAgICAgIGVuZDogL1xcKC8sXG4gICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgfSxcbi8vIGRvIG5vdCBoaWdobGlnaHQgaW5idWlsdCBzdHJpbmdzIGFzIHZhcmlhYmxlIG9yIHhtbCBlbGVtZW50IG5hbWVzXG4gICAge1xuICAgICAgYmVnaW46IC9bXjxcXC9cXCRcXDonXCItXVxcYig/OmFic3xhY2N1bXVsYXRvclxcLSg/OmFmdGVyfGJlZm9yZSl8YWRqdXN0XFwtKD86ZGF0ZSg/OlRpbWUpP3x0aW1lKVxcLXRvXFwtdGltZXpvbmV8YW5hbHl6ZVxcLXN0cmluZ3xhcHBseXxhdmFpbGFibGVcXC0oPzplbnZpcm9ubWVudFxcLXZhcmlhYmxlc3xzeXN0ZW1cXC1wcm9wZXJ0aWVzKXxhdmd8YmFzZVxcLXVyaXxib29sZWFufGNlaWxpbmd8Y29kZXBvaW50cz9cXC0oPzplcXVhbHx0b1xcLXN0cmluZyl8Y29sbGF0aW9uXFwta2V5fGNvbGxlY3Rpb258Y29tcGFyZXxjb25jYXR8Y29udGFpbnMoPzpcXC10b2tlbik/fGNvcHlcXC1vZnxjb3VudHxjdXJyZW50KD86XFwtKT8oPzpkYXRlKD86VGltZSk/fHRpbWV8Z3JvdXAoPzppbmdcXC1rZXkpP3xvdXRwdXRcXC11cml8bWVyZ2VcXC0oPzpncm91cHxrZXkpKT9kYXRhfGRhdGVUaW1lfGRheXM/XFwtZnJvbVxcLSg/OmRhdGUoPzpUaW1lKT98ZHVyYXRpb24pfGRlZXBcXC1lcXVhbHxkZWZhdWx0XFwtKD86Y29sbGF0aW9ufGxhbmd1YWdlKXxkaXN0aW5jdFxcLXZhbHVlc3xkb2N1bWVudCg/OlxcLXVyaSk/fGRvYyg/OlxcLWF2YWlsYWJsZSk/fGVsZW1lbnRcXC0oPzphdmFpbGFibGV8d2l0aFxcLWlkKXxlbXB0eXxlbmNvZGVcXC1mb3JcXC11cml8ZW5kc1xcLXdpdGh8ZW52aXJvbm1lbnRcXC12YXJpYWJsZXxlcnJvcnxlc2NhcGVcXC1odG1sXFwtdXJpfGV4YWN0bHlcXC1vbmV8ZXhpc3RzfGZhbHNlfGZpbHRlcnxmbG9vcnxmb2xkXFwtKD86bGVmdHxyaWdodCl8Zm9yXFwtZWFjaCg/OlxcLXBhaXIpP3xmb3JtYXRcXC0oPzpkYXRlKD86VGltZSk/fHRpbWV8aW50ZWdlcnxudW1iZXIpfGZ1bmN0aW9uXFwtKD86YXJpdHl8YXZhaWxhYmxlfGxvb2t1cHxuYW1lKXxnZW5lcmF0ZVxcLWlkfGhhc1xcLWNoaWxkcmVufGhlYWR8aG91cnNcXC1mcm9tXFwtKD86ZGF0ZVRpbWV8ZHVyYXRpb258dGltZSl8aWQoPzpyZWYpP3xpbXBsaWNpdFxcLXRpbWV6b25lfGluXFwtc2NvcGVcXC1wcmVmaXhlc3xpbmRleFxcLW9mfGlubmVybW9zdHxpbnNlcnRcXC1iZWZvcmV8aXJpXFwtdG9cXC11cml8anNvblxcLSg/OmRvY3x0b1xcLXhtbCl8a2V5fGxhbmd8bGFzdHxsb2FkXFwteHF1ZXJ5XFwtbW9kdWxlfGxvY2FsXFwtbmFtZSg/OlxcLWZyb21cXC1RTmFtZSk/fCg/Omxvd2VyfHVwcGVyKVxcLWNhc2V8bWF0Y2hlc3xtYXh8bWludXRlc1xcLWZyb21cXC0oPzpkYXRlVGltZXxkdXJhdGlvbnx0aW1lKXxtaW58bW9udGhzP1xcLWZyb21cXC0oPzpkYXRlKD86VGltZSk/fGR1cmF0aW9uKXxuYW1lKD86c3BhY2VcXC11cmlcXC0/KD86Zm9yXFwtcHJlZml4fGZyb21cXC1RTmFtZSk/KT98bmlsbGVkfG5vZGVcXC1uYW1lfG5vcm1hbGl6ZVxcLSg/OnNwYWNlfHVuaWNvZGUpfG5vdHxudW1iZXJ8b25lXFwtb3JcXC1tb3JlfG91dGVybW9zdHxwYXJzZVxcLSg/OmlldGZcXC1kYXRlfGpzb24pfHBhdGh8cG9zaXRpb258KD86cHJlZml4XFwtZnJvbVxcLSk/UU5hbWV8cmFuZG9tXFwtbnVtYmVyXFwtZ2VuZXJhdG9yfHJlZ2V4XFwtZ3JvdXB8cmVtb3ZlfHJlcGxhY2V8cmVzb2x2ZVxcLSg/OlFOYW1lfHVyaSl8cmV2ZXJzZXxyb290fHJvdW5kKD86XFwtaGFsZlxcLXRvXFwtZXZlbik/fHNlY29uZHNcXC1mcm9tXFwtKD86ZGF0ZVRpbWV8ZHVyYXRpb258dGltZSl8c25hcHNob3R8c29ydHxzdGFydHNcXC13aXRofHN0YXRpY1xcLWJhc2VcXC11cml8c3RyZWFtXFwtYXZhaWxhYmxlfHN0cmluZ1xcLT8oPzpqb2lufGxlbmd0aHx0b1xcLWNvZGVwb2ludHMpP3xzdWJzZXF1ZW5jZXxzdWJzdHJpbmdcXC0/KD86YWZ0ZXJ8YmVmb3JlKT98c3VtfHN5c3RlbVxcLXByb3BlcnR5fHRhaWx8dGltZXpvbmVcXC1mcm9tXFwtKD86ZGF0ZSg/OlRpbWUpP3x0aW1lKXx0b2tlbml6ZXx0cmFjZXx0cmFucyg/OmZvcm18bGF0ZSl8dHJ1ZXx0eXBlXFwtYXZhaWxhYmxlfHVub3JkZXJlZHx1bnBhcnNlZFxcLSg/OmVudGl0eXx0ZXh0KT9cXC0/KD86cHVibGljXFwtaWR8dXJpfGF2YWlsYWJsZXxsaW5lcyk/fHVyaVxcLWNvbGxlY3Rpb258eG1sXFwtdG9cXC1qc29ufHllYXJzP1xcLWZyb21cXC0oPzpkYXRlKD86VGltZSk/fGR1cmF0aW9uKXx6ZXJvXFwtb3JcXC1vbmUpXFxiLyxcbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYmxvY2FsXFw6LyxcbiAgICAgIGVuZDogL1xcKC8sXG4gICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgfSwge1xuICAgICAgYmVnaW46IC9cXGJ6aXBcXDovLFxuICAgICAgZW5kOiAvKD86emlwXFwtZmlsZXwoPzp4bWx8aHRtbHx0ZXh0fGJpbmFyeSlcXC1lbnRyeXwgKD86dXBkYXRlXFwtKT9lbnRyaWVzKVxcYi9cbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYig/OnV0aWx8ZGJ8ZnVuY3R4fGFwcHx4ZG1wfHhtbGRiKVxcOi8sXG4gICAgICBlbmQ6IC9cXCgvLFxuICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgIH1cbiAgXVxuICB9O1xuXG4gIHZhciBUSVRMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgYmVnaW46IC9cXGJ4cXVlcnkgdmVyc2lvbiBcIlsxM11cXC5bMDFdXCJcXHM/KD86ZW5jb2RpbmcgXCIuK1wiKT8vLFxuICAgIGVuZDogLzsvXG4gIH07XG5cbiAgdmFyIFZBUiA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9bXFwkXVtcXHctOl0rL1xuICB9O1xuXG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJyhcXFxcYjBbMC03X10rKXwoXFxcXGIweFswLTlhLWZBLUZfXSspfChcXFxcYlsxLTldWzAtOV9dKihcXFxcLlswLTlfXSspPyl8WzBfXVxcXFxiJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFt7XG4gICAgICAgIGJlZ2luOiAvXCIvLFxuICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgIGJlZ2luOiAvXCJcIi8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLycvLFxuICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgYmVnaW46IC8nJy8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1dXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBBTk5PVEFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAvJVtcXHctOl0rL1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0ge1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIGJlZ2luOiAnXFxcXCg6JyxcbiAgICBlbmQ6ICc6XFxcXCknLFxuICAgIHJlbGV2YW5jZTogMTAsXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgYmVnaW46ICdAXFxcXHcrJ1xuICAgIH1dXG4gIH07XG5cbiAgLy8gc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi94cXVlcnkvI2lkLWNvbXB1dGVkQ29uc3RydWN0b3JzXG4gIC8vIG1vY2hhOiBjb21wdXRlZF9pbmJ1aWx0XG4gIC8vIHNlZSBodHRwczovL3d3dy5yZWdleHBhbC5jb20vP2ZhbT05OTc0OVxuICB2YXIgQ09NUFVURUQgPSB7XG4gICAgYmVnaW5LZXl3b3JkczogJ2VsZW1lbnQgYXR0cmlidXRlIGNvbW1lbnQgZG9jdW1lbnQgcHJvY2Vzc2luZy1pbnN0cnVjdGlvbicsXG4gICAgZW5kOiAneycsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZVxuICB9O1xuXG4gIC8vIG1vY2hhOiBkaXJlY3RfbWV0aG9kXG4gICAgdmFyIERJUkVDVCA9IHtcbiAgICAgIGJlZ2luOiAvPChbXFx3XFwuXzpcXC1dKykoKFxccyouKik9KCd8XCIpLiooJ3xcIikpPz4vLFxuICAgICAgZW5kOiAvKFxcL1tcXHdcXC5fOlxcLV0rPikvLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgIGJlZ2luOiAneycsXG4gICAgICAgIGVuZDogJ30nLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3hxdWVyeSdcbiAgICAgIH0sICdzZWxmJ11cbiAgICB9O1xuXG5cbiAgdmFyIENPTlRBSU5TID0gW1xuICAgIFZBUixcbiAgICBCVUlMVF9JTixcbiAgICBTVFJJTkcsXG4gICAgTlVNQkVSLFxuICAgIENPTU1FTlQsXG4gICAgQU5OT1RBVElPTixcbiAgICBUSVRMRSxcbiAgICBDT01QVVRFRCxcbiAgICBESVJFQ1RcbiAgXTtcblxuXG5cbiAgICB2YXIgTUVUSE9EID0ge1xuICAgICAgYmVnaW46ICd7JyxcbiAgICAgIGVuZDogJ30nLFxuICAgICAgY29udGFpbnM6IENPTlRBSU5TXG4gICAgfTtcblxuXG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3hwYXRoJywgJ3hxJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAgbGV4ZW1lczogL1thLXpBLVpcXCRdW2EtekEtWjAtOV86XFwtXSovLFxuICAgIGlsbGVnYWw6IC8ocHJvYyl8KGFic3RyYWN0KXwoZXh0ZW5kcyl8KHVudGlsKXwoIykvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIHR5cGU6IFRZUEUsXG4gICAgICBsaXRlcmFsOiBMSVRFUkFMXG4gICAgfSxcbiAgICBjb250YWluczogQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdiXCInLCBlbmQ6ICdcIidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYlxcJycsIGVuZDogJ1xcJydcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSlcbiAgICBdXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7dmFyaWFudHM6IFtobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgaGxqcy5DX05VTUJFUl9NT0RFXX07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd6ZXAnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOlxuICAgICAgJ2FuZCBpbmNsdWRlX29uY2UgbGlzdCBhYnN0cmFjdCBnbG9iYWwgcHJpdmF0ZSBlY2hvIGludGVyZmFjZSBhcyBzdGF0aWMgZW5kc3dpdGNoICcgK1xuICAgICAgJ2FycmF5IG51bGwgaWYgZW5kd2hpbGUgb3IgY29uc3QgZm9yIGVuZGZvcmVhY2ggc2VsZiB2YXIgbGV0IHdoaWxlIGlzc2V0IHB1YmxpYyAnICtcbiAgICAgICdwcm90ZWN0ZWQgZXhpdCBmb3JlYWNoIHRocm93IGVsc2VpZiBpbmNsdWRlIF9fRklMRV9fIGVtcHR5IHJlcXVpcmVfb25jZSBkbyB4b3IgJyArXG4gICAgICAncmV0dXJuIHBhcmVudCBjbG9uZSB1c2UgX19DTEFTU19fIF9fTElORV9fIGVsc2UgYnJlYWsgcHJpbnQgZXZhbCBuZXcgJyArXG4gICAgICAnY2F0Y2ggX19NRVRIT0RfXyBjYXNlIGV4Y2VwdGlvbiBkZWZhdWx0IGRpZSByZXF1aXJlIF9fRlVOQ1RJT05fXyAnICtcbiAgICAgICdlbmRkZWNsYXJlIGZpbmFsIHRyeSBzd2l0Y2ggY29udGludWUgZW5kZm9yIGVuZGlmIGRlY2xhcmUgdW5zZXQgdHJ1ZSBmYWxzZSAnICtcbiAgICAgICd0cmFpdCBnb3RvIGluc3RhbmNlb2YgaW5zdGVhZG9mIF9fRElSX18gX19OQU1FU1BBQ0VfXyAnICtcbiAgICAgICd5aWVsZCBmaW5hbGx5IGludCB1aW50IGxvbmcgdWxvbmcgY2hhciB1Y2hhciBkb3VibGUgZmxvYXQgYm9vbCBib29sZWFuIHN0cmluZycgK1xuICAgICAgJ2xpa2VseSB1bmxpa2VseScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXConLFxuICAgICAgICAnXFxcXCovJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdfX2hhbHRfY29tcGlsZXIuKz87JyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHtcbiAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICBrZXl3b3JkczogJ19faGFsdF9jb21waWxlcicsXG4gICAgICAgICAgbGV4ZW1lczogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnPDw8W1xcJ1wiXT9cXFxcdytbXFwnXCJdPyQnLCBlbmQ6ICdeXFxcXHcrOycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gc3dhbGxvdyBjb21wb3NlZCBpZGVudGlmaWVycyB0byBhdm9pZCBwYXJzaW5nIHRoZW0gYXMga2V5d29yZHNcbiAgICAgICAgYmVnaW46IC8oOjp8LT4pK1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWjAtOV9cXHg3Zi1cXHhmZl0qL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9bO3tdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFwkfFxcXFxbfCUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIE5VTUJFUlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6IC9bOlxcKFxcJFwiXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2JlZ2luS2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmFtZXNwYWNlJywgZW5kOiAnOycsXG4gICAgICAgIGlsbGVnYWw6IC9bXFwuJ10vLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3VzZScsIGVuZDogJzsnLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc9PicgLy8gTm8gbWFya3VwLCBqdXN0IGEgcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBOVU1CRVJcbiAgICBdXG4gIH07XG59OyIsImNvbnN0IHZpc2l0ID0gcmVxdWlyZSgndW5pc3QtdXRpbC12aXNpdCcpO1xuXG5mdW5jdGlvbiBkZWFsTGFiZWxDaGlsZHJlbihsaXN0Q2hpbGQpIHtcbiAgbGV0IHQgPSBbXTtcbiAgaWYgKGxpc3RDaGlsZFswXS50eXBlID09PSAncGFyYWdyYXBoJykge1xuICAgIHQgPSBsaXN0Q2hpbGRbMF0uY2hpbGRyZW47XG4gIH1cbiAgdFswXS52YWx1ZSA9IHRbMF0udmFsdWUudHJpbSgpO1xuICBpZiAobGlzdENoaWxkW2xpc3RDaGlsZC5sZW5ndGggLSAxXS50eXBlID09PSAnYmxvY2txdW90ZScpIHtcbiAgICBsaXN0Q2hpbGRbbGlzdENoaWxkLmxlbmd0aCAtIDFdLnR5cGUgPSAnZGl2JztcbiAgICBsaXN0Q2hpbGRbbGlzdENoaWxkLmxlbmd0aCAtIDFdLmRhdGEgPSB7XG4gICAgICBoTmFtZTogJ2Jsb2NrcXVvdGUnLFxuICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnaGlkZW5fYmxvY2tfcXVvdGUnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIHQgPSB0LmNvbmNhdChsaXN0Q2hpbGQuc2xpY2UoMSkpO1xuICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gdmlzaXRMaXN0KGFzdCkge1xuICBsZXQgbmJNQyA9IDA7XG4gIHJldHVybiB2aXNpdChhc3QsICdsaXN0Jywgbm9kZSA9PiB7XG4gICAgbGV0IGlzTXVsdGlwbGVDaG9pc2UgPSB0cnVlO1xuICAgIGxldCBuYlEgPSAwO1xuICAgIGNvbnN0IHRhYiA9IFtdO1xuXG4gICAgQXJyYXkuZnJvbShub2RlLmNoaWxkcmVuKS5mb3JFYWNoKG5vZGVDID0+IHtcbiAgICAgIGlmIChub2RlQy5jaGlsZHJlbiAmJiBub2RlQy5jaGlsZHJlblswXS50eXBlID09PSAncGFyYWdyYXBoJykge1xuICAgICAgICBpZiAobm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW4gJiYgbm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWUpIHtcbiAgICAgICAgICBpZiAoJ34hPScuaW5kZXhPZihub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlblswXS52YWx1ZVswXSkgPCAwKSB7XG4gICAgICAgICAgICBpc011bHRpcGxlQ2hvaXNlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzTXVsdGlwbGVDaG9pc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXNNdWx0aXBsZUNob2lzZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChpc011bHRpcGxlQ2hvaXNlKSB7XG4gICAgICBBcnJheS5mcm9tKG5vZGUuY2hpbGRyZW4pLmZvckVhY2gobm9kZUMgPT4ge1xuICAgICAgICBpZiAobm9kZUMuY2hpbGRyZW5bMF0udHlwZSA9PT0gJ3BhcmFncmFwaCcpIHtcbiAgICAgICAgICBpZiAobm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWVbMF0gPT09ICd+Jykge1xuICAgICAgICAgICAgdGFiLnB1c2goMC41KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVDLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLnZhbHVlWzBdID09PSAnIScpIHtcbiAgICAgICAgICAgIHRhYi5wdXNoKDApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YWIucHVzaCgxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWUgPSBgJHtub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlblswXS52YWx1ZS5zbGljZSgxKX1cXHJgO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG5vZGUudHlwZSA9ICdtYyc7XG4gICAgICBub2RlLmRhdGEgPSB7XG4gICAgICAgIGhOYW1lOiAnZmllbGRzZXQnLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ21jIGNoZWNrJyxcbiAgICAgICAgICBpZDogYG1jXyR7bmJNQ31gLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBbe1xuICAgICAgICB0eXBlOiAnbGlzdC1pdGVtLW1jJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAndWwnLFxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogbm9kZS5jaGlsZHJlbi5tYXAoeCA9PiAoe3R5cGU6ICdpbnB1dC1saXN0LWl0ZW0nLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGhOYW1lOiAnbGknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHt0eXBlOiAnaW5wdXQtbGlzdC1pbnB1dCcsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBoTmFtZTogJ2lucHV0JyxcbiAgICAgICAgICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogeC5jaGVja2VkLFxuICAgICAgICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgICAgICAgIGlkOiBgbWNfJHtuYk1DfV8ke25iUX1gLFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnIX49J1t0YWJbbmJRXSAqIDJdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH19LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQtbGlzdC1sYWJlbCcsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBoTmFtZTogJ2xhYmVsJyxcbiAgICAgICAgICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgZm9yOiBgbWNfJHtuYk1DfV8ke25iUSsrfWAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IGRlYWxMYWJlbENoaWxkcmVuKHguY2hpbGRyZW4pLFxuICAgICAgICAgICAgfV0sXG4gICAgICAgIH0pKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdmaWVsZC1idXR0b24nLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaE5hbWU6ICdpbnB1dCcsXG4gICAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG9uY2xpY2s6IGBjaGVjaygnbWNfJHtuYk1DfScsWyR7U3RyaW5nKHRhYil9XSlgLFxuICAgICAgICAgICAgdmFsdWU6ICdWYWxpZGF0ZScsXG4gICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIG5iTUMrKztcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRyYW5zZm9ybWVyIHdoaWNoIGFjc3Qgb24gdGhlIE1EQVNUIHRyZWUgYW5kIGdpdmVuIFZGaWxlLlxuICpcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlmaWVkanMvdW5pZmllZCNmdW5jdGlvbi10cmFuc2Zvcm1lcm5vZGUtZmlsZS1uZXh0XG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc3ludGF4LXRyZWUvbWRhc3RcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS92ZmlsZS92ZmlsZVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIG11bHRpcGxlQ2hvaXNlKCkge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFzdCBNREFTVFxuICAgKiBAcGFyYW0ge3ZGaWxlfSB2RmlsZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBuZXh0XG4gICAqIEByZXR1cm4ge29iamVjdH1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiAoYXN0LCB2RmlsZSwgbmV4dCkgeyAvLyBUcmFuc2Zvcm1lclxuICAgIHZpc2l0TGlzdChhc3QpO1xuXG4gICAgaWYgKHR5cGVvZiBuZXh0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gbmV4dChudWxsLCBhc3QsIHZGaWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXN0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG11bHRpcGxlQ2hvaXNlO1xuIiwiJ3VzZSBzdHJpY3QnOyAvLyBBIHZhbGlkIG91dHB1dCB3aGljaCBtZWFucyBub3RoaW5nIGhhcyBiZWVuIHBhcnNlZC5cbi8vIFVzZWQgYXMgZXJyb3IgcmV0dXJuIC8gaW52YWxpZCBvdXRwdXRcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIG5vdGhpbmdIYXBwZW5kID0ge1xuICBwcm9wOiB7fSxcbiAgZWF0ZW46ICcnXG59O1xudmFyIGRlZmF1bHRDb25maWcgPSB7XG4gIGRlZmF1bHRWYWx1ZTogZnVuY3Rpb24gZGVmYXVsdFZhbHVlKCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gLy8gSXRzIGEgZnVuY3Rpb25cblxufTtcblxuZnVuY3Rpb24gcGFyc2UodmFsdWUsIGluZGV4TmV4dCwgdXNlckNvbmZpZykge1xuICAvLyBNYWluIGZ1bmN0aW9uXG4gIHZhciBsZXRzRWF0ID0gJyc7XG4gIHZhciBzdG9wT25CcmFjZSA9IGZhbHNlO1xuICB2YXIgZXJyb3JEZXRlY3RlZCA9IGZhbHNlO1xuXG4gIHZhciBjb25maWcgPSBfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0Q29uZmlnLCB7fSwgdXNlckNvbmZpZyk7IC8vIE1ha2UgZGVmYXVsdFZhbHVlIGEgZnVuY3Rpb24gaWYgaXQgaXNuJ3RcblxuXG4gIGlmICh0eXBlb2YgY29uZmlnLmRlZmF1bHRWYWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBkZWZhdWx0VmFsdWUgPSBjb25maWcuZGVmYXVsdFZhbHVlO1xuXG4gICAgY29uZmlnLmRlZmF1bHRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIHZhciBwcm9wID0ge307XG4gIC8qIFRoZXkgYXJlIGF0IGxlYXN0IG9uZSBsYWJlbCBhbmQgYXQgYmVzdCB0d28gKi9cblxuICAvKiBla3FzZGYgPC0gb25lIGxhYmVsXG4gICAqIHFzZGZxc2ZkPXFzZGZxc2RmIDwtIHR3byAqL1xuXG4gIHZhciBsYWJlbEZpcnN0ID0gJyc7XG4gIHZhciBsYWJlbFNlY29uZDtcblxuICBpZiAoaW5kZXhOZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICBpbmRleE5leHQgPSAwO1xuICB9XG4gIC8qIDMgdHlwZXMgOlxuICAgKiAuYXpjdiA8LSBjbGFzc1xuICAgKiAjcG9pIDwtIGlkXG4gICAqIGRmZ2g9emVydCA8LSBrZXlcbiAgICogamtqIDwtIHRoaXMgaXMgYWxzbyBhIGtleSBidXQgd2l0aCBhIHVzZXIgZGVmaW5lZCB2YWx1ZSAoZGVmYXVsdCBpcyB1bmRlZmluZWQpXG4gICAqIGpraj0gPC0gdGhpcyBpcyBhbHNvIGEga2V5IGJ1dCB3aXRoIGEgZW1wdHkgdmFsdWVcbiAgICovXG5cblxuICB2YXIgdHlwZTtcbiAgdmFyIGZvcmJpZGVuQ2hhcmFjdGVycyA9ICdcXG5cXHJ7fSc7IC8vIEEgZnVuY3Rpb24gdGhhdCBkZXRlY3QgaWYgaXQncyB0aW1lIHRvIGVuZCB0aGUgcGFyc2luZ1xuXG4gIHZhciBzaG91bGRTdG9wID0gZnVuY3Rpb24gc2hvdWxkU3RvcCgpIHtcbiAgICBpZiAoaW5kZXhOZXh0ID49IHZhbHVlLmxlbmd0aCB8fCBmb3JiaWRlbkNoYXJhY3RlcnMuaW5kZXhPZih2YWx1ZVtpbmRleE5leHRdKSA+IC0xKSB7XG4gICAgICBpZiAoc3RvcE9uQnJhY2UgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ30nKSB7XG4gICAgICAgIGVycm9yRGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVbaW5kZXhOZXh0XSA9PT0gJ30nICYmIHN0b3BPbkJyYWNlO1xuICB9O1xuXG4gIHZhciBlYXRlbiA9ICcnOyAvLyBDb3VwbGUgb2YgZnVuY3Rpb25zIHRoYXQgcGFyc2Ugc2FtZSBraW5kcyBvZiBjaGFyYWN0ZXJzXG4gIC8vIFVzZWQgdG8gcGFyc2Ugc3BhY2VzIG9yIGlkZW50aWZpZXJzXG5cbiAgdmFyIGVhdCA9IGZ1bmN0aW9uIGVhdChjaGFycykge1xuICAgIGVhdGVuID0gJyc7XG5cbiAgICB3aGlsZSAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmIGZvcmJpZGVuQ2hhcmFjdGVycy5pbmRleE9mKHZhbHVlLmNoYXJBdChpbmRleE5leHQpKSA8IDAgJiYgY2hhcnMuaW5kZXhPZih2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSkgPj0gMCkge1xuICAgICAgbGV0c0VhdCArPSB2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KTtcbiAgICAgIGVhdGVuICs9IHZhbHVlLmNoYXJBdChpbmRleE5leHQpO1xuICAgICAgaW5kZXhOZXh0Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFN0b3AoKTtcbiAgfTtcblxuICB2YXIgZWF0VW50aWwgPSBmdW5jdGlvbiBlYXRVbnRpbChjaGFycykge1xuICAgIGVhdGVuID0gJyc7XG5cbiAgICB3aGlsZSAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmIGZvcmJpZGVuQ2hhcmFjdGVycy5pbmRleE9mKHZhbHVlLmNoYXJBdChpbmRleE5leHQpKSA8IDAgJiYgY2hhcnMuaW5kZXhPZih2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSkgPCAwKSB7XG4gICAgICBsZXRzRWF0ICs9IHZhbHVlLmNoYXJBdChpbmRleE5leHQpO1xuICAgICAgZWF0ZW4gKz0gdmFsdWUuY2hhckF0KGluZGV4TmV4dCk7XG4gICAgICBpbmRleE5leHQrKztcbiAgICB9IC8vIFVnbHkgYnV0IGtlZXAgdGhlIG1haW4gbG9vcCByZWFkYWJsZVxuICAgIC8vIFNldCB0aGUgbGFiZWwgaXQgc2hvdWxkIHNldFxuXG5cbiAgICBpZiAobGFiZWxGaXJzdCkge1xuICAgICAgbGFiZWxTZWNvbmQgPSBlYXRlbjtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFiZWxGaXJzdCA9IGVhdGVuO1xuICAgIH1cblxuICAgIHJldHVybiBzaG91bGRTdG9wKCk7XG4gIH07IC8vIEluIHF1b3RlLCBldmVyeSBjaGFyYWN0ZXIgaXMgdmFsaWQgZXhjZXB0IHRoZSB1bmVzY2FwZWQgcXVvdGVzIGFuZCBDUiBvciBMRlxuICAvLyBTYW1lIGZ1bmN0aW9uIGZvciBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZVxuXG5cbiAgdmFyIGVhdEluUXVvdGUgPSBmdW5jdGlvbiBlYXRJblF1b3RlKHF1b3RlKSB7XG4gICAgZWF0ZW4gPSAnJzsgLy8gRmlyc3QgY2hlY2sgc28gdmFsdWVbaW5kZXhOZXh0LTFdIHdpbGwgYWx3YXlzIGJlIHZhbGlkXG5cbiAgICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gcXVvdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmICEocXVvdGUgPT09IHZhbHVlW2luZGV4TmV4dF0gJiYgdmFsdWVbaW5kZXhOZXh0IC0gMV0gIT09ICdcXFxcJykgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ1xcbicgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ1xccicpIHtcbiAgICAgIGxldHNFYXQgKz0gdmFsdWUuY2hhckF0KGluZGV4TmV4dCk7XG4gICAgICBlYXRlbiArPSB2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KTtcbiAgICAgIGluZGV4TmV4dCsrO1xuICAgIH0gLy8gSWYgd2UgZW5jb3VudGVyIGFuIEVPTCwgdGhlcmUgaXMgYW4gZXJyb3JcbiAgICAvLyBXZSBhcmUgd2FpdGluZyBmb3IgYSBxdW90ZVxuXG5cbiAgICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gJ1xcbicgfHwgdmFsdWVbaW5kZXhOZXh0XSA9PT0gJ1xccicgfHwgaW5kZXhOZXh0ID49IHZhbHVlLmxlbmd0aCkge1xuICAgICAgZXJyb3JEZXRlY3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIFVnbHkgYnV0IGtlZXAgdGhlIG1haW4gbG9vcCByZWFkYWJsZVxuXG5cbiAgICBpZiAobGFiZWxGaXJzdCkge1xuICAgICAgbGFiZWxTZWNvbmQgPSBlYXRlbi5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhYmVsRmlyc3QgPSBlYXRlbi5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFN0b3AoKTtcbiAgfTsgLy8gSXQncyByZWFsbHkgY29tbW9uIHRvIGVhdCBvbmx5IG9uZSBjaGFyYWN0ZXIgc28gbGV0J3MgbWFrZSBpdCBhIGZ1bmN0aW9uXG5cblxuICB2YXIgZWF0T25lID0gZnVuY3Rpb24gZWF0T25lKGMsIHNraXBTdG9wQ2hlY2spIHtcbiAgICAvLyBNaWFtICFcbiAgICBsZXRzRWF0ICs9IGM7XG4gICAgaW5kZXhOZXh0Kys7XG4gICAgcmV0dXJuIHNraXBTdG9wQ2hlY2sgPyBmYWxzZSA6IHNob3VsZFN0b3AoKTtcbiAgfTsgLy8gQ29tbW9uIHBhcnNpbmcgb2YgcXVvdGVzXG5cblxuICB2YXIgZWF0UXVvdGUgPSBmdW5jdGlvbiBlYXRRdW90ZShxKSB7XG4gICAgZWF0T25lKHEsIHRydWUpO1xuICAgIGVhdEluUXVvdGUocSwgdHJ1ZSk7XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgIT09IHEpIHtcbiAgICAgIHJldHVybiBub3RoaW5nSGFwcGVuZDtcbiAgICB9XG5cbiAgICBpZiAoZWF0T25lKHEpKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpZFNldEJ5S2V5ID0gZmFsc2U7XG5cbiAgdmFyIGFkZEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIGFkZEF0dHJpYnV0ZSgpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2lkJzpcbiAgICAgICAgLy8gSURcbiAgICAgICAgaWYgKGlkU2V0QnlLZXkpIHtcbiAgICAgICAgICBwcm9wLmlkID0gbGFiZWxGaXJzdDtcbiAgICAgICAgICBpZFNldEJ5S2V5ID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvcC5pZCA9IHByb3AuaWQgfHwgbGFiZWxGaXJzdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjbGFzcyc6XG4gICAgICAgIGlmICghcHJvcFtcImNsYXNzXCJdKSB7XG4gICAgICAgICAgcHJvcFtcImNsYXNzXCJdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcFtcImNsYXNzXCJdLmluZGV4T2YobGFiZWxGaXJzdCkgPCAwKSB7XG4gICAgICAgICAgcHJvcFtcImNsYXNzXCJdLnB1c2gobGFiZWxGaXJzdCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAna2V5JzpcbiAgICAgICAgaWYgKCFsYWJlbEZpcnN0KSB7XG4gICAgICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEobGFiZWxGaXJzdCBpbiBwcm9wKSkge1xuICAgICAgICAgIGlmIChsYWJlbFNlY29uZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBIZXJlLCB3ZSBoYXZlIGFuIGF0dHJpYnV0ZSB3aXRob3V0IHZhbHVlXG4gICAgICAgICAgICAvLyBzbyBpdCdzIHVzZXIgZGVmaW5lZFxuICAgICAgICAgICAgcHJvcFtsYWJlbEZpcnN0XSA9IGNvbmZpZy5kZWZhdWx0VmFsdWUobGFiZWxGaXJzdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3BbbGFiZWxGaXJzdF0gPSBsYWJlbEZpcnN0ID09PSAnY2xhc3MnID8gW2xhYmVsU2Vjb25kXSA6IGxhYmVsU2Vjb25kO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChsYWJlbEZpcnN0ID09PSAnaWQnKSB7XG4gICAgICAgICAgICBpZFNldEJ5S2V5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobGFiZWxGaXJzdCA9PT0gJ2NsYXNzJyAmJiBCb29sZWFuKGxhYmVsU2Vjb25kKSkge1xuICAgICAgICAgIHByb3BbXCJjbGFzc1wiXS5wdXNoKGxhYmVsU2Vjb25kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cblxuICAgIHR5cGUgPSB1bmRlZmluZWQ7XG4gICAgbGFiZWxGaXJzdCA9ICcnO1xuICAgIGxhYmVsU2Vjb25kID0gdW5kZWZpbmVkO1xuICB9O1xuICAvKiogKioqKioqKioqKioqKioqKioqKioqKiogU3RhcnQgcGFyc2luZyAqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbiAgLy8gTGV0J3MgY2hlY2sgZm9yIGxlYWRpbmcgc3BhY2VzIGZpcnN0XG5cblxuICBlYXQoJyBcXHRcXHYnKTtcblxuICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gJ3snKSB7XG4gICAgZWF0T25lKCd7Jyk7XG4gICAgc3RvcE9uQnJhY2UgPSB0cnVlO1xuICB9XG5cbiAgd2hpbGUgKCFzaG91bGRTdG9wKCkpIHtcbiAgICAvLyBNYWluIGxvb3Agd2hpY2ggZXh0cmFjdCBhdHRyaWJ1dGVzXG4gICAgaWYgKGVhdCgnIFxcdFxcdicpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgPT09ICcuJykge1xuICAgICAgLy8gQ2xhc3Nlc1xuICAgICAgdHlwZSA9ICdjbGFzcyc7XG5cbiAgICAgIGlmIChlYXRPbmUoJy4nKSkge1xuICAgICAgICBlcnJvckRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJyMnKSB7XG4gICAgICAvLyBJRFxuICAgICAgdHlwZSA9ICdpZCc7XG5cbiAgICAgIGlmIChlYXRPbmUoJyMnKSkge1xuICAgICAgICBlcnJvckRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEtleVxuICAgICAgdHlwZSA9ICdrZXknO1xuICAgIH0gLy8gRXh0cmFjdCBuYW1lXG5cblxuICAgIGlmIChlYXRVbnRpbCgnPVxcdFxcYlxcdiDCoCcpIHx8ICFsYWJlbEZpcnN0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgPT09ICc9JyAmJiB0eXBlID09PSAna2V5Jykge1xuICAgICAgLy8gU2V0IGxhYmVsU2Vjb25kXG4gICAgICBpZiAoZWF0T25lKCc9JykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJ1wiJykge1xuICAgICAgICB2YXIgcmV0ID0gZWF0UXVvdGUoJ1wiJyk7XG5cbiAgICAgICAgaWYgKHJldCA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmIChyZXQgPT09IG5vdGhpbmdIYXBwZW5kKSB7XG4gICAgICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmNoYXJBdChpbmRleE5leHQpID09PSAnXFwnJykge1xuICAgICAgICB2YXIgX3JldCA9IGVhdFF1b3RlKCdcXCcnKTtcblxuICAgICAgICBpZiAoX3JldCA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmIChfcmV0ID09PSBub3RoaW5nSGFwcGVuZCkge1xuICAgICAgICAgIHJldHVybiBub3RoaW5nSGFwcGVuZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlYXRVbnRpbCgnIFxcdFxcblxcclxcdj19JykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSAvLyBBZGQgdGhlIHBhcnNlZCBhdHRyaWJ1dGUgdG8gdGhlIG91dHB1dCBwcm9wIHdpdGggdGhlIGFkIGhvYyB0eXBlXG5cblxuICAgIGFkZEF0dHJpYnV0ZSgpO1xuICB9XG5cbiAgYWRkQXR0cmlidXRlKCk7XG5cbiAgaWYgKHN0b3BPbkJyYWNlKSB7XG4gICAgaWYgKGluZGV4TmV4dCA8IHZhbHVlLmxlbmd0aCAmJiB2YWx1ZVtpbmRleE5leHRdID09PSAnfScpIHtcbiAgICAgIHN0b3BPbkJyYWNlID0gZmFsc2U7XG4gICAgICBlYXRPbmUoJ30nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvckRldGVjdGVkID8gbm90aGluZ0hhcHBlbmQgOiB7XG4gICAgcHJvcDogcHJvcCxcbiAgICBlYXRlbjogbGV0c0VhdFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIHBhcnNlQXR0ciA9IHJlcXVpcmUoJ21kLWF0dHItcGFyc2VyJyk7XG5cbnZhciBTVEFSVCA9ICdbX18nO1xudmFyIEVORCA9ICdfX10nO1xuLyogRnVuY3Rpb24gdXNlZCB0byBsb2NhdGUgdGhlIHN0YXJ0IG9mIGEgbGluZSBpbnB1dCBmaWxlZFxuICogVXNlZCBieSByZW1hcmtcbiAqL1xuXG5mdW5jdGlvbiBsb2NhdG9yKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZihTVEFSVCwgZnJvbUluZGV4KTtcbiAgcmV0dXJuIGluZGV4O1xufVxuLyogRnVudGlvbiB3aGljaCBpcyBleHBvcnRlZCAqL1xuXG5cbmZ1bmN0aW9uIHBsdWdpbigpIHtcbiAgLyogVmVyaWZpZSBpZiBpdCdzIHRoZSBzeW50YXggb2YgYSBsaW5lIGlucHV0IGFuZCByZXR1cm4gYSBsaW5lIGlucHV0IG5vZGUgKi9cbiAgZnVuY3Rpb24gaW5saW5lVG9rZW5pemVyKGVhdCwgdmFsdWUpIHtcbiAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoU1RBUlQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHN1YnZhbHVlID0gJyc7XG4gICAgdmFyIGluZGV4ID0gU1RBUlQubGVuZ3RoO1xuICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgLyogVHJ5IHRvIGxvY2FsZSB0aGUgZW5kIG9mIHRoZSBsaW5lIGlucHV0ICovXG5cbiAgICB3aGlsZSAoIXZhbHVlLnN0YXJ0c1dpdGgoRU5ELCBpbmRleCkgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHN1YnZhbHVlICs9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSAnXFxuJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICB2YXIgbGV0c0VhdCA9ICcnO1xuICAgIHZhciBwcm9wID0ge1xuICAgICAgLyoga2V5OiB1bmRlZmluZWQge30gIGNsYXNzOiB1bmRlZmluZWQgW10gaWQ6IHVuZGVmaW5lZCAqL1xuICAgIH07XG4gICAgLyogUGFyc2UgdGhlIGF0dHJpYnV0ZXMgaWYgYW55IHdpdGggbWQtYXR0ci1wYXJzZXIgKi9cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXggKyBFTkQubGVuZ3RoKSA9PT0gJ3snKSB7XG4gICAgICB2YXIgcmVzID0gcGFyc2VBdHRyKHZhbHVlLCBpbmRleCArIEVORC5sZW5ndGgpO1xuICAgICAgbGV0c0VhdCA9IHJlcy5lYXRlbjtcbiAgICAgIHByb3AgPSByZXMucHJvcDtcbiAgICB9XG4gICAgLyogQWxsb3cgc29tZSBvdGhlciBraW5kIG9mIGlucHV0ICovXG5cblxuICAgIGlmIChwcm9wLnR5cGUgIT09ICdwYXNzd29yZCcpIHtcbiAgICAgIHByb3AudHlwZSA9ICd0ZXh0JztcbiAgICB9XG4gICAgLyogVW5kZXJzY29yZXMgaW4gdGhlIHBsYWNlaG9sZGVyIGJlY29tZSB3aGl0ZXNwYWNlcyAqL1xuXG5cbiAgICBwcm9wLnBsYWNlaG9sZGVyID0gc3VidmFsdWUucmVwbGFjZSgvXl8qL2csICcnKS5yZXBsYWNlKC9fKiQvZywgJycpIHx8IHVuZGVmaW5lZDtcblxuICAgIGlmIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGVhdChTVEFSVCArIHN1YnZhbHVlICsgRU5EICsgbGV0c0VhdCkoe1xuICAgICAgICB0eXBlOiAnbGluZS1pbnB1dCcsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAnaW5wdXQnLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiBwcm9wXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaW5saW5lVG9rZW5pemVyLmxvY2F0b3IgPSBsb2NhdG9yO1xuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBpbmxpbmVUb2tlbml6ZXJcblxuICB2YXIgaW5saW5lVG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuaW5saW5lVG9rZW5pemVycztcbiAgdmFyIGlubGluZU1ldGhvZHMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZU1ldGhvZHM7XG4gIGlubGluZVRva2VuaXplcnMuaW5wdXQgPSBpbmxpbmVUb2tlbml6ZXI7XG4gIGlubGluZU1ldGhvZHMuc3BsaWNlKGlubGluZU1ldGhvZHMuaW5kZXhPZigndXJsJyksIDAsICdpbnB1dCcpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyOyAvLyBTdHJpbmdpZnlcblxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICB2YXIgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnM7XG5cbiAgICB2aXNpdG9ycy5saW5laW5wdXQgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIFwiW19fXCIuY29uY2F0KHRoaXMuYWxsKG5vZGUpLmpvaW4oJycpLCBcIl9fXVwiKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgU1RBUlQgPSAnWyc7XG5jb25zdCBFTkRfUkdYID0gLyhcXHwgKlt2Vl0gKl0pKHtbXlxcbl0qfSk/LztcblxuY29uc3QgcGFyc2VBdHRyID0gcmVxdWlyZSgnbWQtYXR0ci1wYXJzZXInKTtcbi8qIFRoZSBmdW5jdGlvbiB0aGF0IGxvY2F0ZSBhIHRleHQgaW5wdXRcbiAqIFVzZWQgYnkgcmVtYXJrXG4gKi9cblxuXG5mdW5jdGlvbiBsb2NhdG9yKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgY29uc3QgaW5kZXggPSB2YWx1ZS5pbmRleE9mKFNUQVJULCBmcm9tSW5kZXgpO1xuICByZXR1cm4gaW5kZXg7XG59XG4vKiBUaGUgbWFpbiBwbHVnaW4gZnVuY3Rpb24gKi9cblxuXG5mdW5jdGlvbiBwbHVnaW4oKSB7XG4gIGxldCBFTkQgPSAnfHZdJzsgLy8gVGhlIGRlZmF1bHQgdmFsdWUgaXNuJ3QgaW1wb3J0YW50XG4gIC8vIEZ1bmN0aW9uIHRoYXQgY2hlY2sgdGhlIHN5bnRheCBhbmQgcmV0dXJuIGEgdGV4dCBpbnB1dCBub2RlXG5cbiAgZnVuY3Rpb24gaW5saW5lVG9rZW5pemVyKGVhdCwgdmFsdWUpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5nZm0gfHwgIXZhbHVlLnN0YXJ0c1dpdGgoU1RBUlQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHN1YnZhbHVlID0gJyc7XG4gICAgbGV0IGluZGV4ID0gMTtcbiAgICBjb25zdCB7XG4gICAgICBsZW5ndGhcbiAgICB9ID0gdmFsdWU7XG4gICAgLyogTm90IHN1cmUgYWJvdXQgdGhhdCAuLi4gKi9cblxuICAgIGNvbnN0IG5vdyA9IGVhdC5ub3coKTtcbiAgICBub3cuY29sdW1uICs9IDI7XG4gICAgbm93Lm9mZnNldCArPSAyOyAvLyBFeHRyYWN0IHRoZSBvcHRpb25zXG5cbiAgICBsZXQgcmV0ID0gbnVsbDtcblxuICAgIGlmICgocmV0ID0gdmFsdWUuc3Vic3RyKDEpLm1hdGNoKEVORF9SR1gpKSAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgICAgc3VidmFsdWUgKz0gdmFsdWUuc3Vic3RyKDEsIHJldC5pbmRleCk7XG4gICAgICBFTkQgPSByZXRbMV07XG4gICAgICBpbmRleCArPSByZXQuaW5kZXggKyBFTkQubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBFeHRyYWN0IHRoZSBhdHRyaWJ1dGVzXG5cblxuICAgIGxldCBsZXRzRWF0ID0gJyc7XG4gICAgbGV0IHByb3AgPSB7XG4gICAgICAvKiBjbGFzczogdW5kZWZpbmVkICBbXSAsIGlkOiB1bmRlZmluZWQgKi9cbiAgICB9O1xuXG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgPT09ICd7Jykge1xuICAgICAgY29uc3QgcmVzID0gcGFyc2VBdHRyKHZhbHVlLCBpbmRleCk7XG4gICAgICBsZXRzRWF0ID0gcmVzLmVhdGVuO1xuICAgICAgaW5kZXggKz0gbGV0c0VhdC5sZW5ndGg7XG4gICAgICBwcm9wID0gcmVzLnByb3A7XG4gICAgfSAvLyBSZXR1cm4gdGhlIHNlbGVjdCBub2RlXG5cblxuICAgIGlmIChpbmRleCA8PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBlYXQoU1RBUlQgKyBzdWJ2YWx1ZSArIEVORCArIGxldHNFYXQpKHtcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAnc2VsZWN0JyxcbiAgICAgICAgICBoUHJvcGVydGllczogcHJvcCxcbiAgICAgICAgICBoQ2hpbGRyZW46IHN1YnZhbHVlLnNwbGl0KCd8JykuZmlsdGVyKHggPT4geCkubWFwKHVudHJpbSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gdW50cmltLnRyaW0oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgICAgICAgICAgdGFnTmFtZTogJ29wdGlvbicsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGV4dFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRleHRcbiAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpbmxpbmVUb2tlbml6ZXIubG9jYXRvciA9IGxvY2F0b3I7XG4gIGNvbnN0IHtcbiAgICBQYXJzZXJcbiAgfSA9IHRoaXM7IC8vIEluamVjdCBpbmxpbmVUb2tlbml6ZXJcblxuICBjb25zdCB7XG4gICAgaW5saW5lVG9rZW5pemVyc1xuICB9ID0gUGFyc2VyLnByb3RvdHlwZTtcbiAgY29uc3Qge1xuICAgIGlubGluZU1ldGhvZHNcbiAgfSA9IFBhcnNlci5wcm90b3R5cGU7XG4gIGlubGluZVRva2VuaXplcnMuc2VsZWN0ID0gaW5saW5lVG9rZW5pemVyO1xuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3VybCcpLCAwLCAnc2VsZWN0Jyk7XG4gIGNvbnN0IHtcbiAgICBDb21waWxlclxuICB9ID0gdGhpczsgLy8gU3RyaW5naWZ5XG5cbiAgaWYgKENvbXBpbGVyKSB7XG4gICAgY29uc3Qge1xuICAgICAgdmlzaXRvcnNcbiAgICB9ID0gQ29tcGlsZXIucHJvdG90eXBlO1xuXG4gICAgdmlzaXRvcnMubGluZXNlbGVjdCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gU1RBUlQgKyB0aGlzLmFsbChub2RlKS5qb2luKCcnKSArIEVORDtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgU1RBUlQgPSAvXihcXFtfK1xcbikvZztcbmNvbnN0IEVORCA9IC8oXytdKS9nO1xuXG5jb25zdCBwYXJzZUF0dHIgPSByZXF1aXJlKCdtZC1hdHRyLXBhcnNlcicpO1xuXG5mdW5jdGlvbiBsb2NhdG9yKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgY29uc3QgaW5kZXggPSB2YWx1ZS5pbmRleE9mKFNUQVJULCBmcm9tSW5kZXgpO1xuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIHBsdWdpbigpIHtcbiAgZnVuY3Rpb24gYmxvY2tUb2tlbml6ZXIoZWF0LCB2YWx1ZSkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmdmbSB8fCB2YWx1ZS5zZWFyY2goU1RBUlQpICE9PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHByb3AgPSB7XG4gICAgICBjbGFzczogdW5kZWZpbmVkXG4gICAgICAvKiBbXSAqL1xuICAgICAgLFxuICAgICAgaWQ6IHVuZGVmaW5lZFxuICAgIH07XG4gICAgbGV0IGVhdGVuID0gJyc7XG5cbiAgICBpZiAodmFsdWUuc2VhcmNoKEVORCkgPiAwKSB7XG4gICAgICBpZiAodmFsdWUuc2VhcmNoKEVORCkgKyB2YWx1ZS5tYXRjaChFTkQpWzBdLmxlbmd0aCA8IHZhbHVlLmxlbmd0aCAmJiB2YWx1ZS5jaGFyQXQodmFsdWUuc2VhcmNoKEVORCkgKyB2YWx1ZS5tYXRjaChFTkQpWzBdLmxlbmd0aCkgPT09ICd7Jykge1xuICAgICAgICBjb25zdCByZXMgPSBwYXJzZUF0dHIodmFsdWUsIHZhbHVlLnNlYXJjaChFTkQpICsgdmFsdWUubWF0Y2goRU5EKVswXS5sZW5ndGgpO1xuICAgICAgICBlYXRlbiA9IHJlcy5lYXRlbjtcbiAgICAgICAgcHJvcCA9IHJlcy5wcm9wO1xuICAgICAgfVxuXG4gICAgICBsZXQgZW5kID0gdmFsdWUuc2VhcmNoKEVORCk7XG5cbiAgICAgIGlmIChlbmQgIT09IHZhbHVlLm1hdGNoKFNUQVJUKVswXS5sZW5ndGgpIHtcbiAgICAgICAgZW5kIC09IDE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHQgPSBlYXQodmFsdWUuc2xpY2UoMCwgdmFsdWUuc2VhcmNoKEVORCkgKyB2YWx1ZS5tYXRjaChFTkQpWzBdLmxlbmd0aCkgKyBlYXRlbikoe1xuICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaE5hbWU6ICdURVhUQVJFQScsXG4gICAgICAgICAgaFByb3BlcnRpZXM6IHByb3AsXG4gICAgICAgICAgaENoaWxkcmVuOiBbe1xuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnNsaWNlKHZhbHVlLm1hdGNoKFNUQVJUKVswXS5sZW5ndGgsIGVuZClcbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYmxvY2tUb2tlbml6ZXIubG9jYXRvciA9IGxvY2F0b3I7XG4gIGNvbnN0IHtcbiAgICBQYXJzZXJcbiAgfSA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBibG9ja1Rva2VuaXplcnNcbiAgfSA9IFBhcnNlci5wcm90b3R5cGU7XG4gIGNvbnN0IHtcbiAgICBibG9ja01ldGhvZHNcbiAgfSA9IFBhcnNlci5wcm90b3R5cGU7XG4gIGJsb2NrVG9rZW5pemVycy50ZXh0aW5wdXQgPSBibG9ja1Rva2VuaXplcjtcbiAgYmxvY2tNZXRob2RzLnNwbGljZShibG9ja01ldGhvZHMuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgJ3RleHRpbnB1dCcpO1xuICBjb25zdCB7XG4gICAgQ29tcGlsZXJcbiAgfSA9IHRoaXM7IC8vIFN0cmluZ2lmeVxuXG4gIGlmIChDb21waWxlcikge1xuICAgIGNvbnN0IHtcbiAgICAgIHZpc2l0b3JzXG4gICAgfSA9IENvbXBpbGVyLnByb3RvdHlwZTtcblxuICAgIHZpc2l0b3JzLnRleHRpbnB1dCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gYFtfXyR7dGhpcy5hbGwobm9kZSkuam9pbignJyl9X19dYDtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgVU5ERUZJTkVEX0NPREVfUE9JTlRTID0gW1xuICAgIDB4ZmZmZSxcbiAgICAweGZmZmYsXG4gICAgMHgxZmZmZSxcbiAgICAweDFmZmZmLFxuICAgIDB4MmZmZmUsXG4gICAgMHgyZmZmZixcbiAgICAweDNmZmZlLFxuICAgIDB4M2ZmZmYsXG4gICAgMHg0ZmZmZSxcbiAgICAweDRmZmZmLFxuICAgIDB4NWZmZmUsXG4gICAgMHg1ZmZmZixcbiAgICAweDZmZmZlLFxuICAgIDB4NmZmZmYsXG4gICAgMHg3ZmZmZSxcbiAgICAweDdmZmZmLFxuICAgIDB4OGZmZmUsXG4gICAgMHg4ZmZmZixcbiAgICAweDlmZmZlLFxuICAgIDB4OWZmZmYsXG4gICAgMHhhZmZmZSxcbiAgICAweGFmZmZmLFxuICAgIDB4YmZmZmUsXG4gICAgMHhiZmZmZixcbiAgICAweGNmZmZlLFxuICAgIDB4Y2ZmZmYsXG4gICAgMHhkZmZmZSxcbiAgICAweGRmZmZmLFxuICAgIDB4ZWZmZmUsXG4gICAgMHhlZmZmZixcbiAgICAweGZmZmZlLFxuICAgIDB4ZmZmZmYsXG4gICAgMHgxMGZmZmUsXG4gICAgMHgxMGZmZmZcbl07XG5cbmV4cG9ydHMuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSID0gJ1xcdUZGRkQnO1xuXG5leHBvcnRzLkNPREVfUE9JTlRTID0ge1xuICAgIEVPRjogLTEsXG4gICAgTlVMTDogMHgwMCxcbiAgICBUQUJVTEFUSU9OOiAweDA5LFxuICAgIENBUlJJQUdFX1JFVFVSTjogMHgwZCxcbiAgICBMSU5FX0ZFRUQ6IDB4MGEsXG4gICAgRk9STV9GRUVEOiAweDBjLFxuICAgIFNQQUNFOiAweDIwLFxuICAgIEVYQ0xBTUFUSU9OX01BUks6IDB4MjEsXG4gICAgUVVPVEFUSU9OX01BUks6IDB4MjIsXG4gICAgTlVNQkVSX1NJR046IDB4MjMsXG4gICAgQU1QRVJTQU5EOiAweDI2LFxuICAgIEFQT1NUUk9QSEU6IDB4MjcsXG4gICAgSFlQSEVOX01JTlVTOiAweDJkLFxuICAgIFNPTElEVVM6IDB4MmYsXG4gICAgRElHSVRfMDogMHgzMCxcbiAgICBESUdJVF85OiAweDM5LFxuICAgIFNFTUlDT0xPTjogMHgzYixcbiAgICBMRVNTX1RIQU5fU0lHTjogMHgzYyxcbiAgICBFUVVBTFNfU0lHTjogMHgzZCxcbiAgICBHUkVBVEVSX1RIQU5fU0lHTjogMHgzZSxcbiAgICBRVUVTVElPTl9NQVJLOiAweDNmLFxuICAgIExBVElOX0NBUElUQUxfQTogMHg0MSxcbiAgICBMQVRJTl9DQVBJVEFMX0Y6IDB4NDYsXG4gICAgTEFUSU5fQ0FQSVRBTF9YOiAweDU4LFxuICAgIExBVElOX0NBUElUQUxfWjogMHg1YSxcbiAgICBSSUdIVF9TUVVBUkVfQlJBQ0tFVDogMHg1ZCxcbiAgICBHUkFWRV9BQ0NFTlQ6IDB4NjAsXG4gICAgTEFUSU5fU01BTExfQTogMHg2MSxcbiAgICBMQVRJTl9TTUFMTF9GOiAweDY2LFxuICAgIExBVElOX1NNQUxMX1g6IDB4NzgsXG4gICAgTEFUSU5fU01BTExfWjogMHg3YSxcbiAgICBSRVBMQUNFTUVOVF9DSEFSQUNURVI6IDB4ZmZmZFxufTtcblxuZXhwb3J0cy5DT0RFX1BPSU5UX1NFUVVFTkNFUyA9IHtcbiAgICBEQVNIX0RBU0hfU1RSSU5HOiBbMHgyZCwgMHgyZF0sIC8vLS1cbiAgICBET0NUWVBFX1NUUklORzogWzB4NDQsIDB4NGYsIDB4NDMsIDB4NTQsIDB4NTksIDB4NTAsIDB4NDVdLCAvL0RPQ1RZUEVcbiAgICBDREFUQV9TVEFSVF9TVFJJTkc6IFsweDViLCAweDQzLCAweDQ0LCAweDQxLCAweDU0LCAweDQxLCAweDViXSwgLy9bQ0RBVEFbXG4gICAgU0NSSVBUX1NUUklORzogWzB4NzMsIDB4NjMsIDB4NzIsIDB4NjksIDB4NzAsIDB4NzRdLCAvL3NjcmlwdFxuICAgIFBVQkxJQ19TVFJJTkc6IFsweDUwLCAweDU1LCAweDQyLCAweDRjLCAweDQ5LCAweDQzXSwgLy9QVUJMSUNcbiAgICBTWVNURU1fU1RSSU5HOiBbMHg1MywgMHg1OSwgMHg1MywgMHg1NCwgMHg0NSwgMHg0ZF0gLy9TWVNURU1cbn07XG5cbi8vU3Vycm9nYXRlc1xuZXhwb3J0cy5pc1N1cnJvZ2F0ZSA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgcmV0dXJuIGNwID49IDB4ZDgwMCAmJiBjcCA8PSAweGRmZmY7XG59O1xuXG5leHBvcnRzLmlzU3Vycm9nYXRlUGFpciA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgcmV0dXJuIGNwID49IDB4ZGMwMCAmJiBjcCA8PSAweGRmZmY7XG59O1xuXG5leHBvcnRzLmdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQgPSBmdW5jdGlvbihjcDEsIGNwMikge1xuICAgIHJldHVybiAoY3AxIC0gMHhkODAwKSAqIDB4NDAwICsgMHgyNDAwICsgY3AyO1xufTtcblxuLy9OT1RFOiBleGNsdWRpbmcgTlVMTCBhbmQgQVNDSUkgd2hpdGVzcGFjZVxuZXhwb3J0cy5pc0NvbnRyb2xDb2RlUG9pbnQgPSBmdW5jdGlvbihjcCkge1xuICAgIHJldHVybiAoXG4gICAgICAgIChjcCAhPT0gMHgyMCAmJiBjcCAhPT0gMHgwYSAmJiBjcCAhPT0gMHgwZCAmJiBjcCAhPT0gMHgwOSAmJiBjcCAhPT0gMHgwYyAmJiBjcCA+PSAweDAxICYmIGNwIDw9IDB4MWYpIHx8XG4gICAgICAgIChjcCA+PSAweDdmICYmIGNwIDw9IDB4OWYpXG4gICAgKTtcbn07XG5cbmV4cG9ydHMuaXNVbmRlZmluZWRDb2RlUG9pbnQgPSBmdW5jdGlvbihjcCkge1xuICAgIHJldHVybiAoY3AgPj0gMHhmZGQwICYmIGNwIDw9IDB4ZmRlZikgfHwgVU5ERUZJTkVEX0NPREVfUE9JTlRTLmluZGV4T2YoY3ApID4gLTE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbTogJ2NvbnRyb2wtY2hhcmFjdGVyLWluLWlucHV0LXN0cmVhbScsXG4gICAgbm9uY2hhcmFjdGVySW5JbnB1dFN0cmVhbTogJ25vbmNoYXJhY3Rlci1pbi1pbnB1dC1zdHJlYW0nLFxuICAgIHN1cnJvZ2F0ZUluSW5wdXRTdHJlYW06ICdzdXJyb2dhdGUtaW4taW5wdXQtc3RyZWFtJyxcbiAgICBub25Wb2lkSHRtbEVsZW1lbnRTdGFydFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXM6ICdub24tdm9pZC1odG1sLWVsZW1lbnQtc3RhcnQtdGFnLXdpdGgtdHJhaWxpbmctc29saWR1cycsXG4gICAgZW5kVGFnV2l0aEF0dHJpYnV0ZXM6ICdlbmQtdGFnLXdpdGgtYXR0cmlidXRlcycsXG4gICAgZW5kVGFnV2l0aFRyYWlsaW5nU29saWR1czogJ2VuZC10YWctd2l0aC10cmFpbGluZy1zb2xpZHVzJyxcbiAgICB1bmV4cGVjdGVkU29saWR1c0luVGFnOiAndW5leHBlY3RlZC1zb2xpZHVzLWluLXRhZycsXG4gICAgdW5leHBlY3RlZE51bGxDaGFyYWN0ZXI6ICd1bmV4cGVjdGVkLW51bGwtY2hhcmFjdGVyJyxcbiAgICB1bmV4cGVjdGVkUXVlc3Rpb25NYXJrSW5zdGVhZE9mVGFnTmFtZTogJ3VuZXhwZWN0ZWQtcXVlc3Rpb24tbWFyay1pbnN0ZWFkLW9mLXRhZy1uYW1lJyxcbiAgICBpbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWU6ICdpbnZhbGlkLWZpcnN0LWNoYXJhY3Rlci1vZi10YWctbmFtZScsXG4gICAgdW5leHBlY3RlZEVxdWFsc1NpZ25CZWZvcmVBdHRyaWJ1dGVOYW1lOiAndW5leHBlY3RlZC1lcXVhbHMtc2lnbi1iZWZvcmUtYXR0cmlidXRlLW5hbWUnLFxuICAgIG1pc3NpbmdFbmRUYWdOYW1lOiAnbWlzc2luZy1lbmQtdGFnLW5hbWUnLFxuICAgIHVuZXhwZWN0ZWRDaGFyYWN0ZXJJbkF0dHJpYnV0ZU5hbWU6ICd1bmV4cGVjdGVkLWNoYXJhY3Rlci1pbi1hdHRyaWJ1dGUtbmFtZScsXG4gICAgdW5rbm93bk5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlOiAndW5rbm93bi1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICBtaXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2U6ICdtaXNzaW5nLXNlbWljb2xvbi1hZnRlci1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICB1bmV4cGVjdGVkQ2hhcmFjdGVyQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcjogJ3VuZXhwZWN0ZWQtY2hhcmFjdGVyLWFmdGVyLWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXInLFxuICAgIHVuZXhwZWN0ZWRDaGFyYWN0ZXJJblVucXVvdGVkQXR0cmlidXRlVmFsdWU6ICd1bmV4cGVjdGVkLWNoYXJhY3Rlci1pbi11bnF1b3RlZC1hdHRyaWJ1dGUtdmFsdWUnLFxuICAgIGVvZkJlZm9yZVRhZ05hbWU6ICdlb2YtYmVmb3JlLXRhZy1uYW1lJyxcbiAgICBlb2ZJblRhZzogJ2VvZi1pbi10YWcnLFxuICAgIG1pc3NpbmdBdHRyaWJ1dGVWYWx1ZTogJ21pc3NpbmctYXR0cmlidXRlLXZhbHVlJyxcbiAgICBtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzOiAnbWlzc2luZy13aGl0ZXNwYWNlLWJldHdlZW4tYXR0cmlidXRlcycsXG4gICAgbWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkOiAnbWlzc2luZy13aGl0ZXNwYWNlLWFmdGVyLWRvY3R5cGUtcHVibGljLWtleXdvcmQnLFxuICAgIG1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyczpcbiAgICAgICAgJ21pc3Npbmctd2hpdGVzcGFjZS1iZXR3ZWVuLWRvY3R5cGUtcHVibGljLWFuZC1zeXN0ZW0taWRlbnRpZmllcnMnLFxuICAgIG1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZDogJ21pc3Npbmctd2hpdGVzcGFjZS1hZnRlci1kb2N0eXBlLXN5c3RlbS1rZXl3b3JkJyxcbiAgICBtaXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllcjogJ21pc3NpbmctcXVvdGUtYmVmb3JlLWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXInLFxuICAgIG1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyOiAnbWlzc2luZy1xdW90ZS1iZWZvcmUtZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllcicsXG4gICAgbWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyOiAnbWlzc2luZy1kb2N0eXBlLXB1YmxpYy1pZGVudGlmaWVyJyxcbiAgICBtaXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXI6ICdtaXNzaW5nLWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXInLFxuICAgIGFicnVwdERvY3R5cGVQdWJsaWNJZGVudGlmaWVyOiAnYWJydXB0LWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXInLFxuICAgIGFicnVwdERvY3R5cGVTeXN0ZW1JZGVudGlmaWVyOiAnYWJydXB0LWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXInLFxuICAgIGNkYXRhSW5IdG1sQ29udGVudDogJ2NkYXRhLWluLWh0bWwtY29udGVudCcsXG4gICAgaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50OiAnaW5jb3JyZWN0bHktb3BlbmVkLWNvbW1lbnQnLFxuICAgIGVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dDogJ2VvZi1pbi1zY3JpcHQtaHRtbC1jb21tZW50LWxpa2UtdGV4dCcsXG4gICAgZW9mSW5Eb2N0eXBlOiAnZW9mLWluLWRvY3R5cGUnLFxuICAgIG5lc3RlZENvbW1lbnQ6ICduZXN0ZWQtY29tbWVudCcsXG4gICAgYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50OiAnYWJydXB0LWNsb3Npbmctb2YtZW1wdHktY29tbWVudCcsXG4gICAgZW9mSW5Db21tZW50OiAnZW9mLWluLWNvbW1lbnQnLFxuICAgIGluY29ycmVjdGx5Q2xvc2VkQ29tbWVudDogJ2luY29ycmVjdGx5LWNsb3NlZC1jb21tZW50JyxcbiAgICBlb2ZJbkNkYXRhOiAnZW9mLWluLWNkYXRhJyxcbiAgICBhYnNlbmNlT2ZEaWdpdHNJbk51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2U6ICdhYnNlbmNlLW9mLWRpZ2l0cy1pbi1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIG51bGxDaGFyYWN0ZXJSZWZlcmVuY2U6ICdudWxsLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIHN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZTogJ3N1cnJvZ2F0ZS1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICBjaGFyYWN0ZXJSZWZlcmVuY2VPdXRzaWRlVW5pY29kZVJhbmdlOiAnY2hhcmFjdGVyLXJlZmVyZW5jZS1vdXRzaWRlLXVuaWNvZGUtcmFuZ2UnLFxuICAgIGNvbnRyb2xDaGFyYWN0ZXJSZWZlcmVuY2U6ICdjb250cm9sLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIG5vbmNoYXJhY3RlckNoYXJhY3RlclJlZmVyZW5jZTogJ25vbmNoYXJhY3Rlci1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICBtaXNzaW5nV2hpdGVzcGFjZUJlZm9yZURvY3R5cGVOYW1lOiAnbWlzc2luZy13aGl0ZXNwYWNlLWJlZm9yZS1kb2N0eXBlLW5hbWUnLFxuICAgIG1pc3NpbmdEb2N0eXBlTmFtZTogJ21pc3NpbmctZG9jdHlwZS1uYW1lJyxcbiAgICBpbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lOiAnaW52YWxpZC1jaGFyYWN0ZXItc2VxdWVuY2UtYWZ0ZXItZG9jdHlwZS1uYW1lJyxcbiAgICBkdXBsaWNhdGVBdHRyaWJ1dGU6ICdkdXBsaWNhdGUtYXR0cmlidXRlJyxcbiAgICBub25Db25mb3JtaW5nRG9jdHlwZTogJ25vbi1jb25mb3JtaW5nLWRvY3R5cGUnLFxuICAgIG1pc3NpbmdEb2N0eXBlOiAnbWlzc2luZy1kb2N0eXBlJyxcbiAgICBtaXNwbGFjZWREb2N0eXBlOiAnbWlzcGxhY2VkLWRvY3R5cGUnLFxuICAgIGVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50OiAnZW5kLXRhZy13aXRob3V0LW1hdGNoaW5nLW9wZW4tZWxlbWVudCcsXG4gICAgY2xvc2luZ09mRWxlbWVudFdpdGhPcGVuQ2hpbGRFbGVtZW50czogJ2Nsb3Npbmctb2YtZWxlbWVudC13aXRoLW9wZW4tY2hpbGQtZWxlbWVudHMnLFxuICAgIGRpc2FsbG93ZWRDb250ZW50SW5Ob3NjcmlwdEluSGVhZDogJ2Rpc2FsbG93ZWQtY29udGVudC1pbi1ub3NjcmlwdC1pbi1oZWFkJyxcbiAgICBvcGVuRWxlbWVudHNMZWZ0QWZ0ZXJFb2Y6ICdvcGVuLWVsZW1lbnRzLWxlZnQtYWZ0ZXItZW9mJyxcbiAgICBhYmFuZG9uZWRIZWFkRWxlbWVudENoaWxkOiAnYWJhbmRvbmVkLWhlYWQtZWxlbWVudC1jaGlsZCcsXG4gICAgbWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudDogJ21pc3BsYWNlZC1zdGFydC10YWctZm9yLWhlYWQtZWxlbWVudCcsXG4gICAgbmVzdGVkTm9zY3JpcHRJbkhlYWQ6ICduZXN0ZWQtbm9zY3JpcHQtaW4taGVhZCcsXG4gICAgZW9mSW5FbGVtZW50VGhhdENhbkNvbnRhaW5Pbmx5VGV4dDogJ2VvZi1pbi1lbGVtZW50LXRoYXQtY2FuLWNvbnRhaW4tb25seS10ZXh0J1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdW5pY29kZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91bmljb2RlJyk7XG5jb25zdCBFUlIgPSByZXF1aXJlKCcuLi9jb21tb24vZXJyb3ItY29kZXMnKTtcblxuLy9BbGlhc2VzXG5jb25zdCAkID0gdW5pY29kZS5DT0RFX1BPSU5UUztcblxuLy9Db25zdFxuY29uc3QgREVGQVVMVF9CVUZGRVJfV0FURVJMSU5FID0gMSA8PCAxNjtcblxuLy9QcmVwcm9jZXNzb3Jcbi8vTk9URTogSFRNTCBpbnB1dCBwcmVwcm9jZXNzaW5nXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0pXG5jbGFzcyBQcmVwcm9jZXNzb3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmh0bWwgPSBudWxsO1xuXG4gICAgICAgIHRoaXMucG9zID0gLTE7XG4gICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IC0xO1xuICAgICAgICB0aGlzLmxhc3RDaGFyUG9zID0gLTE7XG5cbiAgICAgICAgdGhpcy5nYXBTdGFjayA9IFtdO1xuXG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5sYXN0Q2h1bmtXcml0dGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1ZmZlcldhdGVybGluZSA9IERFRkFVTFRfQlVGRkVSX1dBVEVSTElORTtcbiAgICB9XG5cbiAgICBfZXJyKCkge1xuICAgICAgICAvLyBOT1RFOiBlcnIgcmVwb3J0aW5nIGlzIG5vb3AgYnkgZGVmYXVsdC4gRW5hYmxlZCBieSBtaXhpbi5cbiAgICB9XG5cbiAgICBfYWRkR2FwKCkge1xuICAgICAgICB0aGlzLmdhcFN0YWNrLnB1c2godGhpcy5sYXN0R2FwUG9zKTtcbiAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gdGhpcy5wb3M7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NTdXJyb2dhdGUoY3ApIHtcbiAgICAgICAgLy9OT1RFOiB0cnkgdG8gcGVlayBhIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGlmICh0aGlzLnBvcyAhPT0gdGhpcy5sYXN0Q2hhclBvcykge1xuICAgICAgICAgICAgY29uc3QgbmV4dENwID0gdGhpcy5odG1sLmNoYXJDb2RlQXQodGhpcy5wb3MgKyAxKTtcblxuICAgICAgICAgICAgaWYgKHVuaWNvZGUuaXNTdXJyb2dhdGVQYWlyKG5leHRDcCkpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHdlIGhhdmUgYSBzdXJyb2dhdGUgcGFpci4gUGVlayBwYWlyIGNoYXJhY3RlciBhbmQgcmVjYWxjdWxhdGUgY29kZSBwb2ludC5cbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuXG4gICAgICAgICAgICAgICAgLy9OT1RFOiBhZGQgZ2FwIHRoYXQgc2hvdWxkIGJlIGF2b2lkZWQgZHVyaW5nIHJldHJlYXRcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGRHYXAoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB1bmljb2RlLmdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQoY3AsIG5leHRDcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IHdlIGFyZSBhdCB0aGUgZW5kIG9mIGEgY2h1bmssIHRoZXJlZm9yZSB3ZSBjYW4ndCBpbmZlciBzdXJyb2dhdGUgcGFpciB5ZXQuXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLmxhc3RDaHVua1dyaXR0ZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IGlzb2xhdGVkIHN1cnJvZ2F0ZVxuICAgICAgICB0aGlzLl9lcnIoRVJSLnN1cnJvZ2F0ZUluSW5wdXRTdHJlYW0pO1xuXG4gICAgICAgIHJldHVybiBjcDtcbiAgICB9XG5cbiAgICBkcm9wUGFyc2VkQ2h1bmsoKSB7XG4gICAgICAgIGlmICh0aGlzLnBvcyA+IHRoaXMuYnVmZmVyV2F0ZXJsaW5lKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RDaGFyUG9zIC09IHRoaXMucG9zO1xuICAgICAgICAgICAgdGhpcy5odG1sID0gdGhpcy5odG1sLnN1YnN0cmluZyh0aGlzLnBvcyk7XG4gICAgICAgICAgICB0aGlzLnBvcyA9IDA7XG4gICAgICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSAtMTtcbiAgICAgICAgICAgIHRoaXMuZ2FwU3RhY2sgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlKGNodW5rLCBpc0xhc3RDaHVuaykge1xuICAgICAgICBpZiAodGhpcy5odG1sKSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgKz0gY2h1bms7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgPSBjaHVuaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGFzdENoYXJQb3MgPSB0aGlzLmh0bWwubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGFzdENodW5rV3JpdHRlbiA9IGlzTGFzdENodW5rO1xuICAgIH1cblxuICAgIGluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspIHtcbiAgICAgICAgdGhpcy5odG1sID0gdGhpcy5odG1sLnN1YnN0cmluZygwLCB0aGlzLnBvcyArIDEpICsgY2h1bmsgKyB0aGlzLmh0bWwuc3Vic3RyaW5nKHRoaXMucG9zICsgMSwgdGhpcy5odG1sLmxlbmd0aCk7XG5cbiAgICAgICAgdGhpcy5sYXN0Q2hhclBvcyA9IHRoaXMuaHRtbC5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBhZHZhbmNlKCkge1xuICAgICAgICB0aGlzLnBvcysrO1xuXG4gICAgICAgIGlmICh0aGlzLnBvcyA+IHRoaXMubGFzdENoYXJQb3MpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY3AgPSB0aGlzLmh0bWwuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG5cbiAgICAgICAgLy9OT1RFOiBhbnkgVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlcnMgdGhhdCBpbW1lZGlhdGVseSBmb2xsb3cgYSBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVyXG4gICAgICAgIC8vbXVzdCBiZSBpZ25vcmVkLlxuICAgICAgICBpZiAodGhpcy5za2lwTmV4dE5ld0xpbmUgJiYgY3AgPT09ICQuTElORV9GRUVEKSB7XG4gICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fYWRkR2FwKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IGFsbCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVycyBtdXN0IGJlIGNvbnZlcnRlZCB0byBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyc1xuICAgICAgICBpZiAoY3AgPT09ICQuQ0FSUklBR0VfUkVUVVJOKSB7XG4gICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gJC5MSU5FX0ZFRUQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh1bmljb2RlLmlzU3Vycm9nYXRlKGNwKSkge1xuICAgICAgICAgICAgY3AgPSB0aGlzLl9wcm9jZXNzU3Vycm9nYXRlKGNwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vT1BUSU1JWkFUSU9OOiBmaXJzdCBjaGVjayBpZiBjb2RlIHBvaW50IGlzIGluIHRoZSBjb21tb24gYWxsb3dlZFxuICAgICAgICAvL3JhbmdlIChBU0NJSSBhbHBoYW51bWVyaWMsIHdoaXRlc3BhY2VzLCBiaWcgY2h1bmsgb2YgQk1QKVxuICAgICAgICAvL2JlZm9yZSBnb2luZyBpbnRvIGRldGFpbGVkIHBlcmZvcm1hbmNlIGNvc3QgdmFsaWRhdGlvbi5cbiAgICAgICAgY29uc3QgaXNDb21tb25WYWxpZFJhbmdlID1cbiAgICAgICAgICAgIChjcCA+IDB4MWYgJiYgY3AgPCAweDdmKSB8fCBjcCA9PT0gJC5MSU5FX0ZFRUQgfHwgY3AgPT09ICQuQ0FSUklBR0VfUkVUVVJOIHx8IChjcCA+IDB4OWYgJiYgY3AgPCAweGZkZDApO1xuXG4gICAgICAgIGlmICghaXNDb21tb25WYWxpZFJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja0ZvclByb2JsZW1hdGljQ2hhcmFjdGVycyhjcCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3A7XG4gICAgfVxuXG4gICAgX2NoZWNrRm9yUHJvYmxlbWF0aWNDaGFyYWN0ZXJzKGNwKSB7XG4gICAgICAgIGlmICh1bmljb2RlLmlzQ29udHJvbENvZGVQb2ludChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY29udHJvbENoYXJhY3RlckluSW5wdXRTdHJlYW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaWNvZGUuaXNVbmRlZmluZWRDb2RlUG9pbnQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5vbmNoYXJhY3RlckluSW5wdXRTdHJlYW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0cmVhdCgpIHtcbiAgICAgICAgaWYgKHRoaXMucG9zID09PSB0aGlzLmxhc3RHYXBQb3MpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IHRoaXMuZ2FwU3RhY2sucG9wKCk7XG4gICAgICAgICAgICB0aGlzLnBvcy0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3MtLTtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUHJlcHJvY2Vzc29yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL05PVEU6IHRoaXMgZmlsZSBjb250YWlucyBhdXRvLWdlbmVyYXRlZCBhcnJheSBtYXBwZWQgcmFkaXggdHJlZSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBuYW1lZCBlbnRpdHkgcmVmZXJlbmNlcyBjb25zdW1wdGlvblxuLy8oZGV0YWlsczogaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS90cmVlL21hc3Rlci9zY3JpcHRzL2dlbmVyYXRlLW5hbWVkLWVudGl0eS1kYXRhL1JFQURNRS5tZClcbm1vZHVsZS5leHBvcnRzID0gbmV3IFVpbnQxNkFycmF5KFs0LDUyLDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTA2LDMwMyw0MTIsODEwLDE0MzIsMTcwMSwxNzk2LDE5ODcsMjExNCwyMzYwLDI0MjAsMjQ4NCwzMTcwLDMyNTEsNDE0MCw0MzkzLDQ1NzUsNDYxMCw1MTA2LDU1MTIsNTcyOCw2MTE3LDYyNzQsNjMxNSw2MzQ1LDY0MjcsNjUxNiw3MDAyLDc5MTAsODczMyw5MzIzLDk4NzAsMTAxNzAsMTA2MzEsMTA4OTMsMTEzMTgsMTEzODYsMTE0NjcsMTI3NzMsMTMwOTIsMTQ0NzQsMTQ5MjIsMTU0NDgsMTU1NDIsMTY0MTksMTc2NjYsMTgxNjYsMTg2MTEsMTkwMDQsMTkwOTUsMTkyOTgsMTkzOTcsNCwxNiw2OSw3Nyw5Nyw5OCw5OSwxMDIsMTAzLDEwOCwxMDksMTEwLDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDE0MCwxNTAsMTU4LDE2OSwxNzYsMTk0LDE5OSwyMTAsMjE2LDIyMiwyMjYsMjQyLDI1NiwyNjYsMjgzLDI5NCwxMDgsMTA1LDEwMyw1LDE5OCwxLDU5LDE0OCwxLDE5OCw4MCw1LDM4LDEsNTksMTU2LDEsMzgsOTksMTE3LDExNiwxMDEsNSwxOTMsMSw1OSwxNjcsMSwxOTMsMTE0LDEwMSwxMTgsMTAxLDU5LDEsMjU4LDQsMiwxMDUsMTIxLDE4MiwxOTEsMTE0LDk5LDUsMTk0LDEsNTksMTg5LDEsMTk0LDU5LDEsMTA0MCwxMTQsNTksMyw1NTM0OSw1NjU4MCwxMTQsOTcsMTE4LDEwMSw1LDE5MiwxLDU5LDIwOCwxLDE5MiwxMTIsMTA0LDk3LDU5LDEsOTEzLDk3LDk5LDExNCw1OSwxLDI1NiwxMDAsNTksMSwxMDgzNSw0LDIsMTAzLDExMiwyMzIsMjM3LDExMSwxMTAsNTksMSwyNjAsMTAyLDU5LDMsNTUzNDksNTY2MzIsMTEyLDEwOCwxMjEsNzAsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsNTksMSw4Mjg5LDEwNSwxMTAsMTAzLDUsMTk3LDEsNTksMjY0LDEsMTk3LDQsMiw5OSwxMTUsMjcyLDI3NywxMTQsNTksMyw1NTM0OSw1NjQ3NiwxMDUsMTAzLDExMCw1OSwxLDg3ODgsMTA1LDEwOCwxMDAsMTAxLDUsMTk1LDEsNTksMjkyLDEsMTk1LDEwOSwxMDgsNSwxOTYsMSw1OSwzMDEsMSwxOTYsNCw4LDk3LDk5LDEwMSwxMDIsMTExLDExNCwxMTUsMTE3LDMyMSwzNTAsMzU0LDM4MywzODgsMzk0LDQwMCw0MDUsNCwyLDk5LDExNCwzMjcsMzM2LDEwNywxMTUsMTA4LDk3LDExNSwxMDQsNTksMSw4NzI2LDQsMiwxMTgsMTE5LDM0MiwzNDUsNTksMSwxMDk4MywxMDEsMTAwLDU5LDEsODk2NiwxMjEsNTksMSwxMDQxLDQsMyw5OSwxMTQsMTE2LDM2MiwzNjksMzc5LDk3LDExNywxMTUsMTAxLDU5LDEsODc1NywxMTAsMTExLDExNywxMDgsMTA4LDEwNSwxMTUsNTksMSw4NDkyLDk3LDU5LDEsOTE0LDExNCw1OSwzLDU1MzQ5LDU2NTgxLDExMiwxMDIsNTksMyw1NTM0OSw1NjYzMywxMDEsMTE4LDEwMSw1OSwxLDcyOCw5OSwxMTQsNTksMSw4NDkyLDEwOSwxMTIsMTAxLDExMyw1OSwxLDg3ODIsNCwxNCw3Miw3OSw5Nyw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDEwOCwxMTEsMTE0LDExNSwxMTcsNDQyLDQ0Nyw0NTYsNTA0LDU0Miw1NDcsNTY5LDU3Myw1NzcsNjE2LDY3OCw3ODQsNzkwLDc5Niw5OSwxMjEsNTksMSwxMDYzLDgwLDg5LDUsMTY5LDEsNTksNDU0LDEsMTY5LDQsMyw5OSwxMTIsMTIxLDQ2NCw0NzAsNDk3LDExNywxMTYsMTAxLDU5LDEsMjYyLDQsMiw1OSwxMDUsNDc2LDQ3OCwxLDg5MTQsMTE2LDk3LDEwOCw2OCwxMDUsMTAyLDEwMiwxMDEsMTE0LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsNjgsNTksMSw4NTE3LDEwOCwxMDEsMTIxLDExNSw1OSwxLDg0OTMsNCw0LDk3LDEwMSwxMDUsMTExLDUxNCw1MjAsNTMwLDUzNSwxMTQsMTExLDExMCw1OSwxLDI2OCwxMDAsMTA1LDEwOCw1LDE5OSwxLDU5LDUyOCwxLDE5OSwxMTQsOTksNTksMSwyNjQsMTEwLDEwNSwxMTAsMTE2LDU5LDEsODc1MiwxMTEsMTE2LDU5LDEsMjY2LDQsMiwxMDAsMTEwLDU1Myw1NjAsMTA1LDEwOCwxMDgsOTcsNTksMSwxODQsMTE2LDEwMSwxMTQsNjgsMTExLDExNiw1OSwxLDE4MywxMTQsNTksMSw4NDkzLDEwNSw1OSwxLDkzNSwxMTQsOTksMTA4LDEwMSw0LDQsNjgsNzcsODAsODQsNTkxLDU5Niw2MDMsNjA5LDExMSwxMTYsNTksMSw4ODU3LDEwNSwxMTAsMTE3LDExNSw1OSwxLDg4NTQsMTA4LDExNywxMTUsNTksMSw4ODUzLDEwNSwxMDksMTAxLDExNSw1OSwxLDg4NTUsMTExLDQsMiw5OSwxMTUsNjIzLDY0NiwxMDcsMTE5LDEwNSwxMTUsMTAxLDY3LDExMSwxMTAsMTE2LDExMSwxMTcsMTE0LDczLDExMCwxMTYsMTAxLDEwMywxMTQsOTcsMTA4LDU5LDEsODc1NCwxMDEsNjcsMTE3LDExNCwxMDgsMTIxLDQsMiw2OCw4MSw2NTgsNjcxLDExMSwxMTcsOTgsMTA4LDEwMSw4MSwxMTcsMTExLDExNiwxMDEsNTksMSw4MjIxLDExNywxMTEsMTE2LDEwMSw1OSwxLDgyMTcsNCw0LDEwOCwxMTAsMTEyLDExNyw2ODgsNzAxLDczNiw3NTMsMTExLDExMCw0LDIsNTksMTAxLDY5Niw2OTgsMSw4NzU5LDU5LDEsMTA4NjgsNCwzLDEwMywxMDUsMTE2LDcwOSw3MTcsNzIyLDExNCwxMTcsMTAxLDExMCwxMTYsNTksMSw4ODAxLDExMCwxMTYsNTksMSw4NzUxLDExMSwxMTcsMTE0LDczLDExMCwxMTYsMTAxLDEwMywxMTQsOTcsMTA4LDU5LDEsODc1MCw0LDIsMTAyLDExNCw3NDIsNzQ1LDU5LDEsODQ1MCwxMTEsMTAwLDExNyw5OSwxMTYsNTksMSw4NzIwLDExMCwxMTYsMTAxLDExNCw2NywxMDgsMTExLDk5LDEwNywxMTksMTA1LDExNSwxMDEsNjcsMTExLDExMCwxMTYsMTExLDExNywxMTQsNzMsMTEwLDExNiwxMDEsMTAzLDExNCw5NywxMDgsNTksMSw4NzU1LDExMSwxMTUsMTE1LDU5LDEsMTA3OTksOTksMTE0LDU5LDMsNTUzNDksNTY0NzgsMTEyLDQsMiw1OSw2Nyw4MDMsODA1LDEsODkxNSw5NywxMTIsNTksMSw4NzgxLDQsMTEsNjgsNzQsODMsOTAsOTcsOTksMTAxLDEwMiwxMDUsMTExLDExNSw4MzQsODUwLDg1NSw4NjAsODY1LDg4OCw5MDMsOTE2LDkyMSwxMDExLDE0MTUsNCwyLDU5LDExMSw4NDAsODQyLDEsODUxNywxMTYsMTE0LDk3LDEwNCwxMDAsNTksMSwxMDUxMyw5OSwxMjEsNTksMSwxMDI2LDk5LDEyMSw1OSwxLDEwMjksOTksMTIxLDU5LDEsMTAzOSw0LDMsMTAzLDExNCwxMTUsODczLDg3OSw4ODMsMTAzLDEwMSwxMTQsNTksMSw4MjI1LDExNCw1OSwxLDg2MDksMTA0LDExOCw1OSwxLDEwOTgwLDQsMiw5NywxMjEsODk0LDkwMCwxMTQsMTExLDExMCw1OSwxLDI3MCw1OSwxLDEwNDQsMTA4LDQsMiw1OSwxMTYsOTEwLDkxMiwxLDg3MTEsOTcsNTksMSw5MTYsMTE0LDU5LDMsNTUzNDksNTY1ODMsNCwyLDk3LDEwMiw5MjcsOTk4LDQsMiw5OSwxMDksOTMzLDk5MiwxMTQsMTA1LDExNiwxMDUsOTksOTcsMTA4LDQsNCw2NSw2OCw3MSw4NCw5NTAsOTU3LDk3OCw5ODUsOTksMTE3LDExNiwxMDEsNTksMSwxODAsMTExLDQsMiwxMTYsMTE3LDk2NCw5NjcsNTksMSw3MjksOTgsMTA4LDEwMSw2NSw5OSwxMTcsMTE2LDEwMSw1OSwxLDczMywxMTQsOTcsMTE4LDEwMSw1OSwxLDk2LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDczMiwxMTEsMTEwLDEwMCw1OSwxLDg5MDAsMTAyLDEwMSwxMTQsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCw2OCw1OSwxLDg1MTgsNCw0LDExMiwxMTYsMTE3LDExOSwxMDIxLDEwMjYsMTA0OCwxMjQ5LDEwMiw1OSwzLDU1MzQ5LDU2NjM1LDQsMyw1OSw2OCw2OSwxMDM0LDEwMzYsMTA0MSwxLDE2OCwxMTEsMTE2LDU5LDEsODQxMiwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3ODQsOTgsMTA4LDEwMSw0LDYsNjcsNjgsNzYsODIsODUsODYsMTA2NSwxMDgyLDExMDEsMTE4OSwxMjExLDEyMzYsMTExLDExMCwxMTYsMTExLDExNywxMTQsNzMsMTEwLDExNiwxMDEsMTAzLDExNCw5NywxMDgsNTksMSw4NzUxLDExMSw0LDIsMTE2LDExOSwxMDg5LDEwOTIsNTksMSwxNjgsMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTksNCwyLDEwMSwxMTEsMTEwNywxMTQxLDEwMiwxMTYsNCwzLDY1LDgyLDg0LDExMTcsMTEyNCwxMTM2LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTYsMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjAsMTAxLDEwMSw1OSwxLDEwOTgwLDExMCwxMDMsNCwyLDc2LDgyLDExNDksMTE3NywxMDEsMTAyLDExNiw0LDIsNjUsODIsMTE1OCwxMTY1LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMyLDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzNCwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzMsMTA1LDEwMywxMDQsMTE2LDQsMiw2NSw4NCwxMTk5LDEyMDYsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1OCwxMDEsMTAxLDU5LDEsODg3MiwxMTIsNCwyLDY1LDY4LDEyMTgsMTIyNSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjU3LDExMSwxMTksMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjEsMTAxLDExNCwxMTYsMTA1LDk5LDk3LDEwOCw2Niw5NywxMTQsNTksMSw4NzQxLDExMCw0LDYsNjUsNjYsNzYsODIsODQsOTcsMTI2NCwxMjkyLDEyOTksMTM1MiwxMzkxLDE0MDgsMTE0LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw4NSwxMjc2LDEyNzgsMTI4MywxLDg1OTUsOTcsMTE0LDU5LDEsMTA1MTUsMTEyLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2OTMsMTE0LDEwMSwxMTgsMTAxLDU5LDEsNzg1LDEwMSwxMDIsMTE2LDQsMyw4Miw4NCw4NiwxMzEwLDEzMjMsMTMzNCwxMDUsMTAzLDEwNCwxMTYsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1NzYsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU5MCwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDEzNDUsMTM0NywxLDg2MzcsOTcsMTE0LDU5LDEsMTA1ODIsMTA1LDEwMywxMDQsMTE2LDQsMiw4NCw4NiwxMzYyLDEzNzMsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU5MSwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDEzODQsMTM4NiwxLDg2NDEsOTcsMTE0LDU5LDEsMTA1ODMsMTAxLDEwMSw0LDIsNTksNjUsMTM5OSwxNDAxLDEsODg2OCwxMTQsMTE0LDExMSwxMTksNTksMSw4NjE1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTksNCwyLDk5LDExNiwxNDIxLDE0MjYsMTE0LDU5LDMsNTUzNDksNTY0NzksMTE0LDExMSwxMDcsNTksMSwyNzIsNCwxNiw3OCw4NCw5Nyw5OSwxMDAsMTAyLDEwMywxMDgsMTA5LDExMSwxMTIsMTEzLDExNSwxMTYsMTE3LDEyMCwxNDY2LDE0NzAsMTQ3OCwxNDg5LDE1MTUsMTUyMCwxNTI1LDE1MzYsMTU0NCwxNTkzLDE2MDksMTYxNywxNjUwLDE2NjQsMTY2OCwxNjc3LDcxLDU5LDEsMzMwLDcyLDUsMjA4LDEsNTksMTQ3NiwxLDIwOCw5OSwxMTcsMTE2LDEwMSw1LDIwMSwxLDU5LDE0ODcsMSwyMDEsNCwzLDk3LDEwNSwxMjEsMTQ5NywxNTAzLDE1MTIsMTE0LDExMSwxMTAsNTksMSwyODIsMTE0LDk5LDUsMjAyLDEsNTksMTUxMCwxLDIwMiw1OSwxLDEwNjksMTExLDExNiw1OSwxLDI3OCwxMTQsNTksMyw1NTM0OSw1NjU4NCwxMTQsOTcsMTE4LDEwMSw1LDIwMCwxLDU5LDE1MzQsMSwyMDAsMTAxLDEwOSwxMDEsMTEwLDExNiw1OSwxLDg3MTIsNCwyLDk3LDExMiwxNTUwLDE1NTUsOTksMTE0LDU5LDEsMjc0LDExNiwxMjEsNCwyLDgzLDg2LDE1NjMsMTU3NiwxMDksOTcsMTA4LDEwOCw4MywxMTMsMTE3LDk3LDExNCwxMDEsNTksMSw5NzIzLDEwMSwxMTQsMTIxLDgzLDEwOSw5NywxMDgsMTA4LDgzLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk2NDMsNCwyLDEwMywxMTIsMTU5OSwxNjA0LDExMSwxMTAsNTksMSwyODAsMTAyLDU5LDMsNTUzNDksNTY2MzYsMTE1LDEwNSwxMDgsMTExLDExMCw1OSwxLDkxNywxMTcsNCwyLDk3LDEwNSwxNjI0LDE2NDAsMTA4LDQsMiw1OSw4NCwxNjMxLDE2MzMsMSwxMDg2OSwxMDUsMTA4LDEwMCwxMDEsNTksMSw4NzcwLDEwOCwxMDUsOTgsMTE0LDEwNSwxMTcsMTA5LDU5LDEsODY1Miw0LDIsOTksMTA1LDE2NTYsMTY2MCwxMTQsNTksMSw4NDk2LDEwOSw1OSwxLDEwODY3LDk3LDU5LDEsOTE5LDEwOSwxMDgsNSwyMDMsMSw1OSwxNjc1LDEsMjAzLDQsMiwxMDUsMTEyLDE2ODMsMTY4OSwxMTUsMTE2LDExNSw1OSwxLDg3MDcsMTExLDExMCwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDY5LDU5LDEsODUxOSw0LDUsOTksMTAyLDEwNSwxMTEsMTE1LDE3MTMsMTcxNywxNzIyLDE3NjIsMTc5MSwxMjEsNTksMSwxMDYwLDExNCw1OSwzLDU1MzQ5LDU2NTg1LDEwOCwxMDgsMTAxLDEwMCw0LDIsODMsODYsMTczMiwxNzQ1LDEwOSw5NywxMDgsMTA4LDgzLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk3MjQsMTAxLDExNCwxMjEsODMsMTA5LDk3LDEwOCwxMDgsODMsMTEzLDExNyw5NywxMTQsMTAxLDU5LDEsOTY0Miw0LDMsMTEyLDExNCwxMTcsMTc3MCwxNzc1LDE3ODEsMTAyLDU5LDMsNTUzNDksNTY2MzcsNjUsMTA4LDEwOCw1OSwxLDg3MDQsMTE0LDEwNSwxMDEsMTE0LDExNiwxMTQsMTAyLDU5LDEsODQ5Nyw5OSwxMTQsNTksMSw4NDk3LDQsMTIsNzQsODQsOTcsOTgsOTksMTAwLDEwMiwxMDMsMTExLDExNCwxMTUsMTE2LDE4MjIsMTgyNywxODM0LDE4NDgsMTg1NSwxODc3LDE4ODIsMTg4NywxODkwLDE4OTYsMTk3OCwxOTg0LDk5LDEyMSw1OSwxLDEwMjcsNSw2MiwxLDU5LDE4MzIsMSw2MiwxMDksMTA5LDk3LDQsMiw1OSwxMDAsMTg0MywxODQ1LDEsOTE1LDU5LDEsOTg4LDExNCwxMDEsMTE4LDEwMSw1OSwxLDI4Niw0LDMsMTAxLDEwNSwxMjEsMTg2MywxODY5LDE4NzQsMTAwLDEwNSwxMDgsNTksMSwyOTAsMTE0LDk5LDU5LDEsMjg0LDU5LDEsMTA0MywxMTEsMTE2LDU5LDEsMjg4LDExNCw1OSwzLDU1MzQ5LDU2NTg2LDU5LDEsODkyMSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2MzgsMTAxLDk3LDExNiwxMDEsMTE0LDQsNiw2OSw3MCw3MSw3Niw4Myw4NCwxOTE1LDE5MzMsMTk0NCwxOTUzLDE5NTksMTk3MSwxMTMsMTE3LDk3LDEwOCw0LDIsNTksNzYsMTkyNSwxOTI3LDEsODgwNSwxMDEsMTE1LDExNSw1OSwxLDg5MjMsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMSw4ODA3LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSwxMDkxNCwxMDEsMTE1LDExNSw1OSwxLDg4MjMsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSwxMDg3OCwxMDUsMTA4LDEwMCwxMDEsNTksMSw4ODE5LDk5LDExNCw1OSwzLDU1MzQ5LDU2NDgyLDU5LDEsODgxMSw0LDgsNjUsOTcsOTksMTAyLDEwNSwxMTEsMTE1LDExNywyMDA1LDIwMTIsMjAyNiwyMDMyLDIwMzYsMjA0OSwyMDczLDIwODksODIsNjgsOTksMTIxLDU5LDEsMTA2Niw0LDIsOTksMTE2LDIwMTgsMjAyMywxMDEsMTA3LDU5LDEsNzExLDU5LDEsOTQsMTA1LDExNCw5OSw1OSwxLDI5MiwxMTQsNTksMSw4NDYwLDEwOCw5OCwxMDEsMTE0LDExNiw4MywxMTIsOTcsOTksMTAxLDU5LDEsODQ1OSw0LDIsMTEyLDExNCwyMDU1LDIwNTksMTAyLDU5LDEsODQ2MSwxMDUsMTIyLDExMSwxMTAsMTE2LDk3LDEwOCw3NiwxMDUsMTEwLDEwMSw1OSwxLDk0NzIsNCwyLDk5LDExNiwyMDc5LDIwODMsMTE0LDU5LDEsODQ1OSwxMTQsMTExLDEwNyw1OSwxLDI5NCwxMDksMTEyLDQsMiw2OCw2OSwyMDk3LDIxMDcsMTExLDExOSwxMTAsNzIsMTE3LDEwOSwxMTIsNTksMSw4NzgyLDExMywxMTcsOTcsMTA4LDU5LDEsODc4Myw0LDE0LDY5LDc0LDc5LDk3LDk5LDEwMCwxMDIsMTAzLDEwOSwxMTAsMTExLDExNSwxMTYsMTE3LDIxNDQsMjE0OSwyMTU1LDIxNjAsMjE3MSwyMTg5LDIxOTQsMjE5OCwyMjA5LDIyNDUsMjMwNywyMzI5LDIzMzQsMjM0MSw5OSwxMjEsNTksMSwxMDQ1LDEwOCwxMDUsMTAzLDU5LDEsMzA2LDk5LDEyMSw1OSwxLDEwMjUsOTksMTE3LDExNiwxMDEsNSwyMDUsMSw1OSwyMTY5LDEsMjA1LDQsMiwxMDUsMTIxLDIxNzcsMjE4NiwxMTQsOTksNSwyMDYsMSw1OSwyMTg0LDEsMjA2LDU5LDEsMTA0OCwxMTEsMTE2LDU5LDEsMzA0LDExNCw1OSwxLDg0NjUsMTE0LDk3LDExOCwxMDEsNSwyMDQsMSw1OSwyMjA3LDEsMjA0LDQsMyw1OSw5NywxMTIsMjIxNywyMjE5LDIyMzgsMSw4NDY1LDQsMiw5OSwxMDMsMjIyNSwyMjI5LDExNCw1OSwxLDI5OCwxMDUsMTEwLDk3LDExNCwxMjEsNzMsNTksMSw4NTIwLDEwOCwxMDUsMTAxLDExNSw1OSwxLDg2NTgsNCwyLDExNiwxMTgsMjI1MSwyMjgxLDQsMiw1OSwxMDEsMjI1NywyMjU5LDEsODc0OCw0LDIsMTAzLDExNCwyMjY1LDIyNzEsMTE0LDk3LDEwOCw1OSwxLDg3NDcsMTE1LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsNTksMSw4ODk4LDEwNSwxMTUsMTA1LDk4LDEwOCwxMDEsNCwyLDY3LDg0LDIyOTMsMjMwMCwxMTEsMTA5LDEwOSw5Nyw1OSwxLDgyOTEsMTA1LDEwOSwxMDEsMTE1LDU5LDEsODI5MCw0LDMsMTAzLDExMiwxMTYsMjMxNSwyMzIwLDIzMjUsMTExLDExMCw1OSwxLDMwMiwxMDIsNTksMyw1NTM0OSw1NjY0MCw5Nyw1OSwxLDkyMSw5OSwxMTQsNTksMSw4NDY0LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDI5Niw0LDIsMTA3LDEwOSwyMzQ3LDIzNTIsOTksMTIxLDU5LDEsMTAzMCwxMDgsNSwyMDcsMSw1OSwyMzU4LDEsMjA3LDQsNSw5OSwxMDIsMTExLDExNSwxMTcsMjM3MiwyMzg2LDIzOTEsMjM5NywyNDE0LDQsMiwxMDUsMTIxLDIzNzgsMjM4MywxMTQsOTksNTksMSwzMDgsNTksMSwxMDQ5LDExNCw1OSwzLDU1MzQ5LDU2NTg5LDExMiwxMDIsNTksMyw1NTM0OSw1NjY0MSw0LDIsOTksMTAxLDI0MDMsMjQwOCwxMTQsNTksMyw1NTM0OSw1NjQ4NSwxMTQsOTksMTIxLDU5LDEsMTAzMiwxMDcsOTksMTIxLDU5LDEsMTAyOCw0LDcsNzIsNzQsOTcsOTksMTAyLDExMSwxMTUsMjQzNiwyNDQxLDI0NDYsMjQ1MiwyNDY3LDI0NzIsMjQ3OCw5OSwxMjEsNTksMSwxMDYxLDk5LDEyMSw1OSwxLDEwMzYsMTEyLDExMiw5Nyw1OSwxLDkyMiw0LDIsMTAxLDEyMSwyNDU4LDI0NjQsMTAwLDEwNSwxMDgsNTksMSwzMTAsNTksMSwxMDUwLDExNCw1OSwzLDU1MzQ5LDU2NTkwLDExMiwxMDIsNTksMyw1NTM0OSw1NjY0Miw5OSwxMTQsNTksMyw1NTM0OSw1NjQ4Niw0LDExLDc0LDg0LDk3LDk5LDEwMSwxMDIsMTA4LDEwOSwxMTEsMTE1LDExNiwyNTA4LDI1MTMsMjUyMCwyNTYyLDI1ODUsMjk4MSwyOTg2LDMwMDQsMzAxMSwzMTQ2LDMxNjcsOTksMTIxLDU5LDEsMTAzMyw1LDYwLDEsNTksMjUxOCwxLDYwLDQsNSw5OSwxMDksMTEwLDExMiwxMTQsMjUzMiwyNTM4LDI1NDQsMjU0OCwyNTU4LDExNywxMTYsMTAxLDU5LDEsMzEzLDk4LDEwMCw5Nyw1OSwxLDkyMywxMDMsNTksMSwxMDIxOCwxMDgsOTcsOTksMTAxLDExNiwxMTQsMTAyLDU5LDEsODQ2NiwxMTQsNTksMSw4NjA2LDQsMyw5NywxMDEsMTIxLDI1NzAsMjU3NiwyNTgyLDExNCwxMTEsMTEwLDU5LDEsMzE3LDEwMCwxMDUsMTA4LDU5LDEsMzE1LDU5LDEsMTA1MSw0LDIsMTAyLDExNSwyNTkxLDI5MDcsMTE2LDQsMTAsNjUsNjcsNjgsNzAsODIsODQsODUsODYsOTcsMTE0LDI2MTQsMjY2MywyNjcyLDI3MjgsMjczNSwyNzYwLDI4MjAsMjg3MCwyODg4LDI4OTUsNCwyLDExMCwxMTQsMjYyMCwyNjMzLDEwMywxMDgsMTAxLDY2LDExNCw5Nyw5OSwxMDcsMTAxLDExNiw1OSwxLDEwMjE2LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw4MiwyNjQ0LDI2NDYsMjY1MSwxLDg1OTIsOTcsMTE0LDU5LDEsODY3NiwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY0NiwxMDEsMTA1LDEwOCwxMDUsMTEwLDEwMyw1OSwxLDg5NjgsMTExLDQsMiwxMTcsMTE5LDI2NzksMjY5Miw5OCwxMDgsMTAxLDY2LDExNCw5Nyw5OSwxMDcsMTAxLDExNiw1OSwxLDEwMjE0LDExMCw0LDIsODQsODYsMjY5OSwyNzEwLDEwMSwxMDEsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1OTMsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2NiwyNzIxLDI3MjMsMSw4NjQzLDk3LDExNCw1OSwxLDEwNTg1LDEwOCwxMTEsMTExLDExNCw1OSwxLDg5NzAsMTA1LDEwMywxMDQsMTE2LDQsMiw2NSw4NiwyNzQ1LDI3NTIsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU3NCw0LDIsMTAxLDExNCwyNzY2LDI3OTIsMTAxLDQsMyw1OSw2NSw4NiwyNzc1LDI3NzcsMjc4NCwxLDg4NjcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxMiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4NiwxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMyw1OSw2Niw2OSwyODA2LDI4MDgsMjgxMywxLDg4ODIsOTcsMTE0LDU5LDEsMTA3MDMsMTEzLDExNyw5NywxMDgsNTksMSw4ODg0LDExMiw0LDMsNjgsODQsODYsMjgyOSwyODQxLDI4NTIsMTExLDExOSwxMTAsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1NzcsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU5MiwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDI4NjMsMjg2NSwxLDg2MzksOTcsMTE0LDU5LDEsMTA1ODQsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2NiwyODgxLDI4ODMsMSw4NjM2LDk3LDExNCw1OSwxLDEwNTc4LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTYsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjAsMTE1LDQsNiw2OSw3MCw3MSw3Niw4Myw4NCwyOTIyLDI5MzYsMjk0NywyOTU2LDI5NjIsMjk3NCwxMTMsMTE3LDk3LDEwOCw3MSwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDEsODkyMiwxMTcsMTA4LDEwOCw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4MDYsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw1OSwxLDg4MjIsMTAxLDExNSwxMTUsNTksMSwxMDkxMywxMDgsOTcsMTEwLDExNiw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDEwODc3LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MTgsMTE0LDU5LDMsNTUzNDksNTY1OTEsNCwyLDU5LDEwMSwyOTkyLDI5OTQsMSw4OTIwLDEwMiwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY2NiwxMDUsMTAwLDExMSwxMTYsNTksMSwzMTksNCwzLDExMCwxMTIsMTE5LDMwMTksMzExMCwzMTE1LDEwMyw0LDQsNzYsODIsMTA4LDExNCwzMDMwLDMwNTgsMzA3MCwzMDk4LDEwMSwxMDIsMTE2LDQsMiw2NSw4MiwzMDM5LDMwNDYsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMjksMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMxLDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMCwxMDEsMTAyLDExNiw0LDIsOTcsMTE0LDMwNzksMzA4NiwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMiwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzQsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMzLDEwMiw1OSwzLDU1MzQ5LDU2NjQzLDEwMSwxMTQsNCwyLDc2LDgyLDMxMjMsMzEzNCwxMDEsMTAyLDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjAxLDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjAwLDQsMyw5OSwxMDQsMTE2LDMxNTQsMzE1OCwzMTYxLDExNCw1OSwxLDg0NjYsNTksMSw4NjI0LDExNCwxMTEsMTA3LDU5LDEsMzIxLDU5LDEsODgxMCw0LDgsOTcsOTksMTAxLDEwMiwxMDUsMTExLDExNSwxMTcsMzE4OCwzMTkyLDMxOTYsMzIyMiwzMjI3LDMyMzcsMzI0MywzMjQ4LDExMiw1OSwxLDEwNTAxLDEyMSw1OSwxLDEwNTIsNCwyLDEwMCwxMDgsMzIwMiwzMjEzLDEwNSwxMTcsMTA5LDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4Mjg3LDEwOCwxMDUsMTEwLDExNiwxMTQsMTAyLDU5LDEsODQ5OSwxMTQsNTksMyw1NTM0OSw1NjU5MiwxMTAsMTE3LDExNSw4MCwxMDgsMTE3LDExNSw1OSwxLDg3MjMsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjQ0LDk5LDExNCw1OSwxLDg0OTksNTksMSw5MjQsNCw5LDc0LDk3LDk5LDEwMSwxMDIsMTExLDExNSwxMTYsMTE3LDMyNzEsMzI3NiwzMjgzLDMzMDYsMzQyMiwzNDI3LDQxMjAsNDEyNiw0MTM3LDk5LDEyMSw1OSwxLDEwMzQsOTksMTE3LDExNiwxMDEsNTksMSwzMjMsNCwzLDk3LDEwMSwxMjEsMzI5MSwzMjk3LDMzMDMsMTE0LDExMSwxMTAsNTksMSwzMjcsMTAwLDEwNSwxMDgsNTksMSwzMjUsNTksMSwxMDUzLDQsMywxMDMsMTE1LDExOSwzMzE0LDMzODAsMzQxNSw5NywxMTYsMTA1LDExOCwxMDEsNCwzLDc3LDg0LDg2LDMzMjcsMzM0MCwzMzY1LDEwMSwxMDAsMTA1LDExNywxMDksODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsMTA0LDEwNSw0LDIsOTksMTEwLDMzNDgsMzM1NywxMDcsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsMTAxLDExNCwxMjEsODQsMTA0LDEwNSwxMTAsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsMTE2LDEwMSwxMDAsNCwyLDcxLDc2LDMzODksMzQwNSwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDcxLDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSw4ODExLDEwMSwxMTUsMTE1LDc2LDEwMSwxMTUsMTE1LDU5LDEsODgxMCw3NiwxMDUsMTEwLDEwMSw1OSwxLDEwLDExNCw1OSwzLDU1MzQ5LDU2NTkzLDQsNCw2NiwxMTAsMTEyLDExNiwzNDM3LDM0NDQsMzQ2MCwzNDY0LDExNCwxMDEsOTcsMTA3LDU5LDEsODI4OCw2NiwxMTQsMTAxLDk3LDEwNywxMDUsMTEwLDEwMyw4MywxMTIsOTcsOTksMTAxLDU5LDEsMTYwLDEwMiw1OSwxLDg0NjksNCwxMyw1OSw2Nyw2OCw2OSw3MSw3Miw3Niw3OCw4MCw4Miw4Myw4NCw4NiwzNDkyLDM0OTQsMzUxNywzNTM2LDM1NzgsMzY1NywzNjg1LDM3ODQsMzgyMywzODYwLDM5MTUsNDA2Niw0MTA3LDEsMTA5ODgsNCwyLDExMSwxMTcsMzUwMCwzNTEwLDExMCwxMDMsMTE0LDExNywxMDEsMTEwLDExNiw1OSwxLDg4MDIsMTEyLDY3LDk3LDExMiw1OSwxLDg4MTMsMTExLDExNyw5OCwxMDgsMTAxLDg2LDEwMSwxMTQsMTE2LDEwNSw5OSw5NywxMDgsNjYsOTcsMTE0LDU5LDEsODc0Miw0LDMsMTA4LDExMywxMjAsMzU0NCwzNTUyLDM1NzEsMTAxLDEwOSwxMDEsMTEwLDExNiw1OSwxLDg3MTMsMTE3LDk3LDEwOCw0LDIsNTksODQsMzU2MSwzNTYzLDEsODgwMCwxMDUsMTA4LDEwMCwxMDEsNTksMyw4NzcwLDgyNCwxMDUsMTE1LDExNiwxMTUsNTksMSw4NzA4LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNCw3LDU5LDY5LDcwLDcxLDc2LDgzLDg0LDM2MDAsMzYwMiwzNjA5LDM2MjEsMzYzMSwzNjM3LDM2NTAsMSw4ODE1LDExMywxMTcsOTcsMTA4LDU5LDEsODgxNywxMTcsMTA4LDEwOCw2OSwxMTMsMTE3LDk3LDEwOCw1OSwzLDg4MDcsODI0LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMyw4ODExLDgyNCwxMDEsMTE1LDExNSw1OSwxLDg4MjUsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMywxMDg3OCw4MjQsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODgyMSwxMTcsMTA5LDExMiw0LDIsNjgsNjksMzY2NiwzNjc3LDExMSwxMTksMTEwLDcyLDExNywxMDksMTEyLDU5LDMsODc4Miw4MjQsMTEzLDExNyw5NywxMDgsNTksMyw4NzgzLDgyNCwxMDEsNCwyLDEwMiwxMTUsMzY5MiwzNzI0LDExNiw4NCwxMTQsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDMsNTksNjYsNjksMzcwOSwzNzExLDM3MTcsMSw4OTM4LDk3LDExNCw1OSwzLDEwNzAzLDgyNCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg5NDAsMTE1LDQsNiw1OSw2OSw3MSw3Niw4Myw4NCwzNzM5LDM3NDEsMzc0OCwzNzU3LDM3NjQsMzc3NywxLDg4MTQsMTEzLDExNyw5NywxMDgsNTksMSw4ODE2LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSw4ODI0LDEwMSwxMTUsMTE1LDU5LDMsODgxMCw4MjQsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMywxMDg3Nyw4MjQsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODgyMCwxMDEsMTE1LDExNiwxMDEsMTAwLDQsMiw3MSw3NiwzNzk1LDM4MTIsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw3MSwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDMsMTA5MTQsODI0LDEwMSwxMTUsMTE1LDc2LDEwMSwxMTUsMTE1LDU5LDMsMTA5MTMsODI0LDExNCwxMDEsOTksMTAxLDEwMCwxMDEsMTE1LDQsMyw1OSw2OSw4MywzODM4LDM4NDAsMzg0OCwxLDg4MzIsMTEzLDExNyw5NywxMDgsNTksMywxMDkyNyw4MjQsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4OTI4LDQsMiwxMDEsMTA1LDM4NjYsMzg4MSwxMTgsMTAxLDExNCwxMTUsMTAxLDY5LDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDU5LDEsODcxNiwxMDMsMTA0LDExNiw4NCwxMTQsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDMsNTksNjYsNjksMzkwMCwzOTAyLDM5MDgsMSw4OTM5LDk3LDExNCw1OSwzLDEwNzA0LDgyNCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg5NDEsNCwyLDExMywxMTcsMzkyMSwzOTczLDExNyw5NywxMTQsMTAxLDgzLDExNyw0LDIsOTgsMTEyLDM5MzMsMzk1MiwxMTUsMTAxLDExNiw0LDIsNTksNjksMzk0MiwzOTQ1LDMsODg0Nyw4MjQsMTEzLDExNyw5NywxMDgsNTksMSw4OTMwLDEwMSwxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDM5NjMsMzk2NiwzLDg4NDgsODI0LDExMywxMTcsOTcsMTA4LDU5LDEsODkzMSw0LDMsOTgsOTksMTEyLDM5ODEsNDAwMCw0MDQ1LDExNSwxMDEsMTE2LDQsMiw1OSw2OSwzOTkwLDM5OTMsMyw4ODM0LDg0MDIsMTEzLDExNyw5NywxMDgsNTksMSw4ODQwLDk5LDEwMSwxMDEsMTAwLDExNSw0LDQsNTksNjksODMsODQsNDAxNSw0MDE3LDQwMjUsNDAzNywxLDg4MzMsMTEzLDExNyw5NywxMDgsNTksMywxMDkyOCw4MjQsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4OTI5LDEwNSwxMDgsMTAwLDEwMSw1OSwzLDg4MzEsODI0LDEwMSwxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDQwNTYsNDA1OSwzLDg4MzUsODQwMiwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4NDEsMTA1LDEwOCwxMDAsMTAxLDQsNCw1OSw2OSw3MCw4NCw0MDgwLDQwODIsNDA4OSw0MTAwLDEsODc2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3NzIsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMSw4Nzc1LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg3NzcsMTAxLDExNCwxMTYsMTA1LDk5LDk3LDEwOCw2Niw5NywxMTQsNTksMSw4NzQwLDk5LDExNCw1OSwzLDU1MzQ5LDU2NDg5LDEwNSwxMDgsMTAwLDEwMSw1LDIwOSwxLDU5LDQxMzUsMSwyMDksNTksMSw5MjUsNCwxNCw2OSw5Nyw5OSwxMDAsMTAyLDEwMywxMDksMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE4LDQxNzAsNDE3Niw0MTg3LDQyMDUsNDIxMiw0MjE3LDQyMjgsNDI1Myw0MjU5LDQyOTIsNDI5NSw0MzE2LDQzMzcsNDM0NiwxMDgsMTA1LDEwMyw1OSwxLDMzOCw5OSwxMTcsMTE2LDEwMSw1LDIxMSwxLDU5LDQxODUsMSwyMTEsNCwyLDEwNSwxMjEsNDE5Myw0MjAyLDExNCw5OSw1LDIxMiwxLDU5LDQyMDAsMSwyMTIsNTksMSwxMDU0LDk4LDEwOCw5Nyw5OSw1OSwxLDMzNiwxMTQsNTksMyw1NTM0OSw1NjU5NCwxMTQsOTcsMTE4LDEwMSw1LDIxMCwxLDU5LDQyMjYsMSwyMTAsNCwzLDk3LDEwMSwxMDUsNDIzNiw0MjQxLDQyNDYsOTksMTE0LDU5LDEsMzMyLDEwMyw5Nyw1OSwxLDkzNyw5OSwxMTQsMTExLDExMCw1OSwxLDkyNywxMTIsMTAyLDU5LDMsNTUzNDksNTY2NDYsMTAxLDExMCw2NywxMTcsMTE0LDEwOCwxMjEsNCwyLDY4LDgxLDQyNzIsNDI4NSwxMTEsMTE3LDk4LDEwOCwxMDEsODEsMTE3LDExMSwxMTYsMTAxLDU5LDEsODIyMCwxMTcsMTExLDExNiwxMDEsNTksMSw4MjE2LDU5LDEsMTA4MzYsNCwyLDk5LDEwOCw0MzAxLDQzMDYsMTE0LDU5LDMsNTUzNDksNTY0OTAsOTcsMTE1LDEwNCw1LDIxNiwxLDU5LDQzMTQsMSwyMTYsMTA1LDQsMiwxMDgsMTA5LDQzMjMsNDMzMiwxMDAsMTAxLDUsMjEzLDEsNTksNDMzMCwxLDIxMywxMDEsMTE1LDU5LDEsMTA4MDcsMTA5LDEwOCw1LDIxNCwxLDU5LDQzNDQsMSwyMTQsMTAxLDExNCw0LDIsNjYsODAsNDM1NCw0MzgwLDQsMiw5NywxMTQsNDM2MCw0MzY0LDExNCw1OSwxLDgyNTQsOTcsOTksNCwyLDEwMSwxMDcsNDM3Miw0Mzc1LDU5LDEsOTE4MiwxMDEsMTE2LDU5LDEsOTE0MCw5NywxMTQsMTAxLDExMCwxMTYsMTA0LDEwMSwxMTUsMTA1LDExNSw1OSwxLDkxODAsNCw5LDk3LDk5LDEwMiwxMDQsMTA1LDEwOCwxMTEsMTE0LDExNSw0NDEzLDQ0MjIsNDQyNiw0NDMxLDQ0MzUsNDQzOCw0NDQ4LDQ0NzEsNDU2MSwxMTQsMTE2LDEwNSw5NywxMDgsNjgsNTksMSw4NzA2LDEyMSw1OSwxLDEwNTUsMTE0LDU5LDMsNTUzNDksNTY1OTUsMTA1LDU5LDEsOTM0LDU5LDEsOTI4LDExNywxMTUsNzcsMTA1LDExMCwxMTcsMTE1LDU5LDEsMTc3LDQsMiwxMDUsMTEyLDQ0NTQsNDQ2NywxMTAsOTksOTcsMTE0LDEwMSwxMTIsMTA4LDk3LDExMCwxMDEsNTksMSw4NDYwLDEwMiw1OSwxLDg0NzMsNCw0LDU5LDEwMSwxMDUsMTExLDQ0ODEsNDQ4Myw0NTI2LDQ1MzEsMSwxMDkzOSw5OSwxMDEsMTAwLDEwMSwxMTUsNCw0LDU5LDY5LDgzLDg0LDQ0OTgsNDUwMCw0NTA3LDQ1MTksMSw4ODI2LDExMywxMTcsOTcsMTA4LDU5LDEsMTA5MjcsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4ODI4LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MzAsMTA5LDEwMSw1OSwxLDgyNDMsNCwyLDEwMCwxMTIsNDUzNyw0NTQzLDExNyw5OSwxMTYsNTksMSw4NzE5LDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDQsMiw1OSw5Nyw0NTU1LDQ1NTcsMSw4NzU5LDEwOCw1OSwxLDg3MzMsNCwyLDk5LDEwNSw0NTY3LDQ1NzIsMTE0LDU5LDMsNTUzNDksNTY0OTEsNTksMSw5MzYsNCw0LDg1LDEwMiwxMTEsMTE1LDQ1ODUsNDU5NCw0NTk5LDQ2MDQsNzksODQsNSwzNCwxLDU5LDQ1OTIsMSwzNCwxMTQsNTksMyw1NTM0OSw1NjU5NiwxMTIsMTAyLDU5LDEsODQ3NCw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5Miw0LDEyLDY2LDY5LDk3LDk5LDEwMSwxMDIsMTA0LDEwNSwxMTEsMTE0LDExNSwxMTcsNDYzNiw0NjQyLDQ2NTAsNDY4MSw0NzA0LDQ3NjMsNDc2Nyw0NzcxLDUwNDcsNTA2OSw1MDgxLDUwOTQsOTcsMTE0LDExNCw1OSwxLDEwNTEyLDcxLDUsMTc0LDEsNTksNDY0OCwxLDE3NCw0LDMsOTksMTEwLDExNCw0NjU4LDQ2NjQsNDY2OCwxMTcsMTE2LDEwMSw1OSwxLDM0MCwxMDMsNTksMSwxMDIxOSwxMTQsNCwyLDU5LDExNiw0Njc1LDQ2NzcsMSw4NjA4LDEwOCw1OSwxLDEwNTE4LDQsMyw5NywxMDEsMTIxLDQ2ODksNDY5NSw0NzAxLDExNCwxMTEsMTEwLDU5LDEsMzQ0LDEwMCwxMDUsMTA4LDU5LDEsMzQyLDU5LDEsMTA1Niw0LDIsNTksMTE4LDQ3MTAsNDcxMiwxLDg0NzYsMTAxLDExNCwxMTUsMTAxLDQsMiw2OSw4NSw0NzIyLDQ3NDgsNCwyLDEwOCwxMTMsNDcyOCw0NzM2LDEwMSwxMDksMTAxLDExMCwxMTYsNTksMSw4NzE1LDExNywxMDUsMTA4LDEwNSw5OCwxMTQsMTA1LDExNywxMDksNTksMSw4NjUxLDExMiw2OSwxMTMsMTE3LDEwNSwxMDgsMTA1LDk4LDExNCwxMDUsMTE3LDEwOSw1OSwxLDEwNjA3LDExNCw1OSwxLDg0NzYsMTExLDU5LDEsOTI5LDEwMywxMDQsMTE2LDQsOCw2NSw2Nyw2OCw3MCw4NCw4NSw4Niw5Nyw0NzkyLDQ4NDAsNDg0OSw0OTA1LDQ5MTIsNDk3Miw1MDIyLDUwNDAsNCwyLDExMCwxMTQsNDc5OCw0ODExLDEwMywxMDgsMTAxLDY2LDExNCw5Nyw5OSwxMDcsMTAxLDExNiw1OSwxLDEwMjE3LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw3Niw0ODIyLDQ4MjQsNDgyOSwxLDg1OTQsOTcsMTE0LDU5LDEsODY3NywxMDEsMTAyLDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjQ0LDEwMSwxMDUsMTA4LDEwNSwxMTAsMTAzLDU5LDEsODk2OSwxMTEsNCwyLDExNywxMTksNDg1Niw0ODY5LDk4LDEwOCwxMDEsNjYsMTE0LDk3LDk5LDEwNywxMDEsMTE2LDU5LDEsMTAyMTUsMTEwLDQsMiw4NCw4Niw0ODc2LDQ4ODcsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4OSwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDQ4OTgsNDkwMCwxLDg2NDIsOTcsMTE0LDU5LDEsMTA1ODEsMTA4LDExMSwxMTEsMTE0LDU5LDEsODk3MSw0LDIsMTAxLDExNCw0OTE4LDQ5NDQsMTAxLDQsMyw1OSw2NSw4Niw0OTI3LDQ5MjksNDkzNiwxLDg4NjYsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxNCwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4NywxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMyw1OSw2Niw2OSw0OTU4LDQ5NjAsNDk2NSwxLDg4ODMsOTcsMTE0LDU5LDEsMTA3MDQsMTEzLDExNyw5NywxMDgsNTksMSw4ODg1LDExMiw0LDMsNjgsODQsODYsNDk4MSw0OTkzLDUwMDQsMTExLDExOSwxMTAsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1NzUsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4OCwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDUwMTUsNTAxNywxLDg2MzgsOTcsMTE0LDU5LDEsMTA1ODAsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2Niw1MDMzLDUwMzUsMSw4NjQwLDk3LDExNCw1OSwxLDEwNTc5LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTgsNCwyLDExMiwxMTcsNTA1Myw1MDU3LDEwMiw1OSwxLDg0NzcsMTEwLDEwMCw3MywxMDksMTEyLDEwOCwxMDUsMTAxLDExNSw1OSwxLDEwNjA4LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjY3LDQsMiw5OSwxMDQsNTA4Nyw1MDkxLDExNCw1OSwxLDg0NzUsNTksMSw4NjI1LDEwOCwxMDEsNjgsMTAxLDEwOCw5NywxMjEsMTAxLDEwMCw1OSwxLDEwNzQwLDQsMTMsNzIsNzksOTcsOTksMTAyLDEwNCwxMDUsMTA5LDExMSwxMTMsMTE1LDExNiwxMTcsNTEzNCw1MTUwLDUxNTcsNTE2NCw1MTk4LDUyMDMsNTI1OSw1MjY1LDUyNzcsNTI4Myw1Mzc0LDUzODAsNTM4NSw0LDIsNjcsOTksNTE0MCw1MTQ2LDcyLDk5LDEyMSw1OSwxLDEwNjUsMTIxLDU5LDEsMTA2NCw3MCw4NCw5OSwxMjEsNTksMSwxMDY4LDk5LDExNywxMTYsMTAxLDU5LDEsMzQ2LDQsNSw1OSw5NywxMDEsMTA1LDEyMSw1MTc2LDUxNzgsNTE4NCw1MTkwLDUxOTUsMSwxMDk0MCwxMTQsMTExLDExMCw1OSwxLDM1MiwxMDAsMTA1LDEwOCw1OSwxLDM1MCwxMTQsOTksNTksMSwzNDgsNTksMSwxMDU3LDExNCw1OSwzLDU1MzQ5LDU2NTk4LDExMSwxMTQsMTE2LDQsNCw2OCw3Niw4Miw4NSw1MjE2LDUyMjcsNTIzOCw1MjUwLDExMSwxMTksMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTUsMTAxLDEwMiwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5MiwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5NCwxMTIsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5MywxMDMsMTA5LDk3LDU5LDEsOTMxLDk3LDEwOCwxMDgsNjcsMTA1LDExNCw5OSwxMDgsMTAxLDU5LDEsODcyOCwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NTAsNCwyLDExNCwxMTcsNTI4OSw1MjkzLDExNiw1OSwxLDg3MzAsOTcsMTE0LDEwMSw0LDQsNTksNzMsODMsODUsNTMwNiw1MzA4LDUzMjIsNTM2NywxLDk2MzMsMTEwLDExNiwxMDEsMTE0LDExNSwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDU5LDEsODg1MSwxMTcsNCwyLDk4LDExMiw1MzI5LDUzNDcsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDUzMzgsNTM0MCwxLDg4NDcsMTEzLDExNyw5NywxMDgsNTksMSw4ODQ5LDEwMSwxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDUzNTgsNTM2MCwxLDg4NDgsMTEzLDExNyw5NywxMDgsNTksMSw4ODUwLDExMCwxMDUsMTExLDExMCw1OSwxLDg4NTIsOTksMTE0LDU5LDMsNTUzNDksNTY0OTQsOTcsMTE0LDU5LDEsODkwMiw0LDQsOTgsOTksMTA5LDExMiw1Mzk1LDU0MjAsNTQ3NSw1NDc4LDQsMiw1OSwxMTUsNTQwMSw1NDAzLDEsODkxMiwxMDEsMTE2LDQsMiw1OSw2OSw1NDExLDU0MTMsMSw4OTEyLDExMywxMTcsOTcsMTA4LDU5LDEsODgzOCw0LDIsOTksMTA0LDU0MjYsNTQ2OCwxMDEsMTAxLDEwMCwxMTUsNCw0LDU5LDY5LDgzLDg0LDU0NDAsNTQ0Miw1NDQ5LDU0NjEsMSw4ODI3LDExMywxMTcsOTcsMTA4LDU5LDEsMTA5MjgsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4ODI5LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MzEsODQsMTA0LDk3LDExNiw1OSwxLDg3MTUsNTksMSw4NzIxLDQsMyw1OSwxMDEsMTE1LDU0ODYsNTQ4OCw1NTA3LDEsODkxMywxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDU0OTgsNTUwMCwxLDg4MzUsMTEzLDExNyw5NywxMDgsNTksMSw4ODM5LDEwMSwxMTYsNTksMSw4OTEzLDQsMTEsNzIsODIsODMsOTcsOTksMTAyLDEwNCwxMDUsMTExLDExNCwxMTUsNTUzNiw1NTQ2LDU1NTIsNTU2Nyw1NTc5LDU2MDIsNTYwNyw1NjU1LDU2OTUsNTcwMSw1NzExLDc5LDgyLDc4LDUsMjIyLDEsNTksNTU0NCwxLDIyMiw2NSw2OCw2OSw1OSwxLDg0ODIsNCwyLDcyLDk5LDU1NTgsNTU2Myw5OSwxMjEsNTksMSwxMDM1LDEyMSw1OSwxLDEwNjIsNCwyLDk4LDExNyw1NTczLDU1NzYsNTksMSw5LDU5LDEsOTMyLDQsMyw5NywxMDEsMTIxLDU1ODcsNTU5Myw1NTk5LDExNCwxMTEsMTEwLDU5LDEsMzU2LDEwMCwxMDUsMTA4LDU5LDEsMzU0LDU5LDEsMTA1OCwxMTQsNTksMyw1NTM0OSw1NjU5OSw0LDIsMTAxLDEwNSw1NjEzLDU2MzEsNCwyLDExNCwxMTYsNTYxOSw1NjI3LDEwMSwxMDIsMTExLDExNCwxMDEsNTksMSw4NzU2LDk3LDU5LDEsOTIwLDQsMiw5OSwxMTAsNTYzNyw1NjQ3LDEwNyw4MywxMTIsOTcsOTksMTAxLDU5LDMsODI4Nyw4MjAyLDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAxLDEwOCwxMDAsMTAxLDQsNCw1OSw2OSw3MCw4NCw1NjY4LDU2NzAsNTY3Nyw1Njg4LDEsODc2NCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3NzEsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMSw4NzczLDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg3NzYsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjUxLDEwNSwxMTIsMTA4LDEwMSw2OCwxMTEsMTE2LDU5LDEsODQxMSw0LDIsOTksMTE2LDU3MTcsNTcyMiwxMTQsNTksMyw1NTM0OSw1NjQ5NSwxMTQsMTExLDEwNyw1OSwxLDM1OCw0LDE0LDk3LDk4LDk5LDEwMCwxMDIsMTAzLDEwOSwxMTAsMTExLDExMiwxMTQsMTE1LDExNiwxMTcsNTc1OCw1Nzg5LDU4MDUsNTgyMyw1ODMwLDU4MzUsNTg0Niw1ODUyLDU5MjEsNTkzNyw2MDg5LDYwOTUsNjEwMSw2MTA4LDQsMiw5OSwxMTQsNTc2NCw1Nzc0LDExNywxMTYsMTAxLDUsMjE4LDEsNTksNTc3MiwxLDIxOCwxMTQsNCwyLDU5LDExMSw1NzgxLDU3ODMsMSw4NjA3LDk5LDEwNSwxMTQsNTksMSwxMDU2OSwxMTQsNCwyLDk5LDEwMSw1Nzk2LDU4MDAsMTIxLDU5LDEsMTAzOCwxMTgsMTAxLDU5LDEsMzY0LDQsMiwxMDUsMTIxLDU4MTEsNTgyMCwxMTQsOTksNSwyMTksMSw1OSw1ODE4LDEsMjE5LDU5LDEsMTA1OSw5OCwxMDgsOTcsOTksNTksMSwzNjgsMTE0LDU5LDMsNTUzNDksNTY2MDAsMTE0LDk3LDExOCwxMDEsNSwyMTcsMSw1OSw1ODQ0LDEsMjE3LDk3LDk5LDExNCw1OSwxLDM2Miw0LDIsMTAwLDEwNSw1ODU4LDU5MDUsMTAxLDExNCw0LDIsNjYsODAsNTg2Niw1ODkyLDQsMiw5NywxMTQsNTg3Miw1ODc2LDExNCw1OSwxLDk1LDk3LDk5LDQsMiwxMDEsMTA3LDU4ODQsNTg4Nyw1OSwxLDkxODMsMTAxLDExNiw1OSwxLDkxNDEsOTcsMTE0LDEwMSwxMTAsMTE2LDEwNCwxMDEsMTE1LDEwNSwxMTUsNTksMSw5MTgxLDExMSwxMTAsNCwyLDU5LDgwLDU5MTMsNTkxNSwxLDg4OTksMTA4LDExNywxMTUsNTksMSw4ODQ2LDQsMiwxMDMsMTEyLDU5MjcsNTkzMiwxMTEsMTEwLDU5LDEsMzcwLDEwMiw1OSwzLDU1MzQ5LDU2NjUyLDQsOCw2NSw2OCw2OSw4NCw5NywxMDAsMTEyLDExNSw1OTU1LDU5ODUsNTk5Niw2MDA5LDYwMjYsNjAzMyw2MDQ0LDYwNzUsMTE0LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw2OCw1OTY3LDU5NjksNTk3NCwxLDg1OTMsOTcsMTE0LDU5LDEsMTA1MTQsMTExLDExOSwxMTAsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY0NSwxMTEsMTE5LDExMCw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk3LDExMywxMTcsMTA1LDEwOCwxMDUsOTgsMTE0LDEwNSwxMTcsMTA5LDU5LDEsMTA2MDYsMTAxLDEwMSw0LDIsNTksNjUsNjAxNyw2MDE5LDEsODg2OSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjEzLDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTcsMTExLDExOSwxMTAsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY2MSwxMDEsMTE0LDQsMiw3Niw4Miw2MDUyLDYwNjMsMTAxLDEwMiwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5OCwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5OSwxMDUsNCwyLDU5LDEwOCw2MDgyLDYwODQsMSw5NzgsMTExLDExMCw1OSwxLDkzMywxMDUsMTEwLDEwMyw1OSwxLDM2Niw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5NiwxMDUsMTA4LDEwMCwxMDEsNTksMSwzNjAsMTA5LDEwOCw1LDIyMCwxLDU5LDYxMTUsMSwyMjAsNCw5LDY4LDk4LDk5LDEwMCwxMDEsMTAyLDExMSwxMTUsMTE4LDYxMzcsNjE0Myw2MTQ4LDYxNTIsNjE2Niw2MjUwLDYyNTUsNjI2MSw2MjY3LDk3LDExNSwxMDQsNTksMSw4ODc1LDk3LDExNCw1OSwxLDEwOTg3LDEyMSw1OSwxLDEwNDIsOTcsMTE1LDEwNCw0LDIsNTksMTA4LDYxNjEsNjE2MywxLDg4NzMsNTksMSwxMDk4Miw0LDIsMTAxLDExNCw2MTcyLDYxNzUsNTksMSw4ODk3LDQsMyw5OCwxMTYsMTIxLDYxODMsNjE4OCw2MjM4LDk3LDExNCw1OSwxLDgyMTQsNCwyLDU5LDEwNSw2MTk0LDYxOTYsMSw4MjE0LDk5LDk3LDEwOCw0LDQsNjYsNzYsODMsODQsNjIwOSw2MjE0LDYyMjAsNjIzMSw5NywxMTQsNTksMSw4NzM5LDEwNSwxMTAsMTAxLDU5LDEsMTI0LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDU5LDEsMTAwNzIsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODc2OCw4NCwxMDQsMTA1LDExMCw4MywxMTIsOTcsOTksMTAxLDU5LDEsODIwMiwxMTQsNTksMyw1NTM0OSw1NjYwMSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NTMsOTksMTE0LDU5LDMsNTUzNDksNTY0OTcsMTAwLDk3LDExNSwxMDQsNTksMSw4ODc0LDQsNSw5OSwxMDEsMTAyLDExMSwxMTUsNjI4Niw2MjkyLDYyOTgsNjMwMyw2MzA5LDEwNSwxMTQsOTksNTksMSwzNzIsMTAwLDEwMywxMDEsNTksMSw4ODk2LDExNCw1OSwzLDU1MzQ5LDU2NjAyLDExMiwxMDIsNTksMyw1NTM0OSw1NjY1NCw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5OCw0LDQsMTAyLDEwNSwxMTEsMTE1LDYzMjUsNjMzMCw2MzMzLDYzMzksMTE0LDU5LDMsNTUzNDksNTY2MDMsNTksMSw5MjYsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjU1LDk5LDExNCw1OSwzLDU1MzQ5LDU2NDk5LDQsOSw2NSw3Myw4NSw5Nyw5OSwxMDIsMTExLDExNSwxMTcsNjM2NSw2MzcwLDYzNzUsNjM4MCw2MzkxLDY0MDUsNjQxMCw2NDE2LDY0MjIsOTksMTIxLDU5LDEsMTA3MSw5OSwxMjEsNTksMSwxMDMxLDk5LDEyMSw1OSwxLDEwNzAsOTksMTE3LDExNiwxMDEsNSwyMjEsMSw1OSw2Mzg5LDEsMjIxLDQsMiwxMDUsMTIxLDYzOTcsNjQwMiwxMTQsOTksNTksMSwzNzQsNTksMSwxMDY3LDExNCw1OSwzLDU1MzQ5LDU2NjA0LDExMiwxMDIsNTksMyw1NTM0OSw1NjY1Niw5OSwxMTQsNTksMyw1NTM0OSw1NjUwMCwxMDksMTA4LDU5LDEsMzc2LDQsOCw3Miw5Nyw5OSwxMDAsMTAxLDEwMiwxMTEsMTE1LDY0NDUsNjQ1MCw2NDU3LDY0NzIsNjQ3Nyw2NTAxLDY1MDUsNjUxMCw5OSwxMjEsNTksMSwxMDQ2LDk5LDExNywxMTYsMTAxLDU5LDEsMzc3LDQsMiw5NywxMjEsNjQ2Myw2NDY5LDExNCwxMTEsMTEwLDU5LDEsMzgxLDU5LDEsMTA0NywxMTEsMTE2LDU5LDEsMzc5LDQsMiwxMTQsMTE2LDY0ODMsNjQ5NywxMTEsODcsMTA1LDEwMCwxMTYsMTA0LDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAzLDk3LDU5LDEsOTE4LDExNCw1OSwxLDg0ODgsMTEyLDEwMiw1OSwxLDg0ODQsOTksMTE0LDU5LDMsNTUzNDksNTY1MDEsNCwxNiw5Nyw5OCw5OSwxMDEsMTAyLDEwMywxMDgsMTA5LDExMCwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMTksNjU1MCw2NTYxLDY1NjgsNjYxMiw2NjIyLDY2MzQsNjY0NSw2NjcyLDY2OTksNjg1NCw2ODcwLDY5MjMsNjkzMyw2OTYzLDY5NzQsNjk4Myw5OSwxMTcsMTE2LDEwMSw1LDIyNSwxLDU5LDY1NTksMSwyMjUsMTE0LDEwMSwxMTgsMTAxLDU5LDEsMjU5LDQsNiw1OSw2OSwxMDAsMTA1LDExNywxMjEsNjU4Miw2NTg0LDY1ODgsNjU5MSw2NjAwLDY2MDksMSw4NzY2LDU5LDMsODc2Niw4MTksNTksMSw4NzY3LDExNCw5OSw1LDIyNiwxLDU5LDY1OTgsMSwyMjYsMTE2LDEwMSw1LDE4MCwxLDU5LDY2MDcsMSwxODAsNTksMSwxMDcyLDEwOCwxMDUsMTAzLDUsMjMwLDEsNTksNjYyMCwxLDIzMCw0LDIsNTksMTE0LDY2MjgsNjYzMCwxLDgyODksNTksMyw1NTM0OSw1NjYwNiwxMTQsOTcsMTE4LDEwMSw1LDIyNCwxLDU5LDY2NDMsMSwyMjQsNCwyLDEwMSwxMTIsNjY1MSw2NjY3LDQsMiwxMDIsMTEyLDY2NTcsNjY2MywxMTUsMTIxLDEwOSw1OSwxLDg1MDEsMTA0LDU5LDEsODUwMSwxMDQsOTcsNTksMSw5NDUsNCwyLDk3LDExMiw2Njc4LDY2OTIsNCwyLDk5LDEwOCw2Njg0LDY2ODgsMTE0LDU5LDEsMjU3LDEwMyw1OSwxLDEwODE1LDUsMzgsMSw1OSw2Njk3LDEsMzgsNCwyLDEwMCwxMDMsNjcwNSw2NzM3LDQsNSw1OSw5NywxMDAsMTE1LDExOCw2NzE3LDY3MTksNjcyNCw2NzI3LDY3MzQsMSw4NzQzLDExMCwxMDAsNTksMSwxMDgzNyw1OSwxLDEwODQ0LDEwOCwxMTEsMTEyLDEwMSw1OSwxLDEwODQwLDU5LDEsMTA4NDIsNCw3LDU5LDEwMSwxMDgsMTA5LDExNCwxMTUsMTIyLDY3NTMsNjc1NSw2NzU4LDY3NjIsNjgxNCw2ODM1LDY4NDgsMSw4NzM2LDU5LDEsMTA2NjAsMTAxLDU5LDEsODczNiwxMTUsMTAwLDQsMiw1OSw5Nyw2NzcwLDY3NzIsMSw4NzM3LDQsOCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDY3OTAsNjc5Myw2Nzk2LDY3OTksNjgwMiw2ODA1LDY4MDgsNjgxMSw1OSwxLDEwNjY0LDU5LDEsMTA2NjUsNTksMSwxMDY2Niw1OSwxLDEwNjY3LDU5LDEsMTA2NjgsNTksMSwxMDY2OSw1OSwxLDEwNjcwLDU5LDEsMTA2NzEsMTE2LDQsMiw1OSwxMTgsNjgyMSw2ODIzLDEsODczNSw5OCw0LDIsNTksMTAwLDY4MzAsNjgzMiwxLDg4OTQsNTksMSwxMDY1Myw0LDIsMTEyLDExNiw2ODQxLDY4NDUsMTA0LDU5LDEsODczOCw1OSwxLDE5Nyw5NywxMTQsMTE0LDU5LDEsOTA4NCw0LDIsMTAzLDExMiw2ODYwLDY4NjUsMTExLDExMCw1OSwxLDI2MSwxMDIsNTksMyw1NTM0OSw1NjY1OCw0LDcsNTksNjksOTcsMTAxLDEwNSwxMTEsMTEyLDY4ODYsNjg4OCw2ODkxLDY4OTcsNjkwMCw2OTA0LDY5MDgsMSw4Nzc2LDU5LDEsMTA4NjQsOTksMTA1LDExNCw1OSwxLDEwODYzLDU5LDEsODc3OCwxMDAsNTksMSw4Nzc5LDExNSw1OSwxLDM5LDExNCwxMTEsMTIwLDQsMiw1OSwxMDEsNjkxNyw2OTE5LDEsODc3NiwxMTMsNTksMSw4Nzc4LDEwNSwxMTAsMTAzLDUsMjI5LDEsNTksNjkzMSwxLDIyOSw0LDMsOTksMTE2LDEyMSw2OTQxLDY5NDYsNjk0OSwxMTQsNTksMyw1NTM0OSw1NjUwMiw1OSwxLDQyLDEwOSwxMTIsNCwyLDU5LDEwMSw2OTU3LDY5NTksMSw4Nzc2LDExMyw1OSwxLDg3ODEsMTA1LDEwOCwxMDAsMTAxLDUsMjI3LDEsNTksNjk3MiwxLDIyNywxMDksMTA4LDUsMjI4LDEsNTksNjk4MSwxLDIyOCw0LDIsOTksMTA1LDY5ODksNjk5NywxMTEsMTEwLDEwNSwxMTAsMTE2LDU5LDEsODc1NSwxMTAsMTE2LDU5LDEsMTA3NjksNCwxNiw3OCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDUsMTA3LDEwOCwxMTAsMTExLDExMiwxMTQsMTE1LDExNyw3MDM2LDcwNDEsNzExOSw3MTM1LDcxNDksNzE1NSw3MjE5LDcyMjQsNzM0Nyw3MzU0LDc0NjMsNzQ4OSw3Nzg2LDc3OTMsNzgxNCw3ODY2LDExMSwxMTYsNTksMSwxMDk4OSw0LDIsOTksMTE0LDcwNDcsNzA5NCwxMDcsNCw0LDk5LDEwMSwxMTIsMTE1LDcwNTgsNzA2NCw3MDczLDcwODAsMTExLDExMCwxMDMsNTksMSw4NzgwLDExMiwxMTUsMTA1LDEwOCwxMTEsMTEwLDU5LDEsMTAxNCwxMTQsMTA1LDEwOSwxMDEsNTksMSw4MjQ1LDEwNSwxMDksNCwyLDU5LDEwMSw3MDg4LDcwOTAsMSw4NzY1LDExMyw1OSwxLDg5MDksNCwyLDExOCwxMTksNzEwMCw3MTA1LDEwMSwxMDEsNTksMSw4ODkzLDEwMSwxMDAsNCwyLDU5LDEwMyw3MTEzLDcxMTUsMSw4OTY1LDEwMSw1OSwxLDg5NjUsMTE0LDEwNyw0LDIsNTksMTE2LDcxMjcsNzEyOSwxLDkxNDEsOTgsMTE0LDEwNyw1OSwxLDkxNDIsNCwyLDExMSwxMjEsNzE0MSw3MTQ2LDExMCwxMDMsNTksMSw4NzgwLDU5LDEsMTA3MywxMTMsMTE3LDExMSw1OSwxLDgyMjIsNCw1LDk5LDEwOSwxMTIsMTE0LDExNiw3MTY3LDcxODEsNzE4OCw3MTkzLDcxOTksOTcsMTE3LDExNSw0LDIsNTksMTAxLDcxNzYsNzE3OCwxLDg3NTcsNTksMSw4NzU3LDExMiwxMTYsMTIxLDExOCw1OSwxLDEwNjcyLDExNSwxMDUsNTksMSwxMDE0LDExMCwxMTEsMTE3LDU5LDEsODQ5Miw0LDMsOTcsMTA0LDExOSw3MjA3LDcyMTAsNzIxMyw1OSwxLDk0Niw1OSwxLDg1MDIsMTAxLDEwMSwxMTAsNTksMSw4ODEyLDExNCw1OSwzLDU1MzQ5LDU2NjA3LDEwMyw0LDcsOTksMTExLDExNSwxMTYsMTE3LDExOCwxMTksNzI0MSw3MjYyLDcyODgsNzMwNSw3MzI4LDczMzUsNzM0MCw0LDMsOTcsMTA1LDExNyw3MjQ5LDcyNTMsNzI1OCwxMTIsNTksMSw4ODk4LDExNCw5OSw1OSwxLDk3MTEsMTEyLDU5LDEsODg5OSw0LDMsMTAwLDExMiwxMTYsNzI3MCw3Mjc1LDcyODEsMTExLDExNiw1OSwxLDEwNzUyLDEwOCwxMTcsMTE1LDU5LDEsMTA3NTMsMTA1LDEwOSwxMDEsMTE1LDU5LDEsMTA3NTQsNCwyLDExMywxMTYsNzI5NCw3MzAwLDk5LDExNywxMTIsNTksMSwxMDc1OCw5NywxMTQsNTksMSw5NzMzLDExNCwxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMiwxMDAsMTE3LDczMTgsNzMyNCwxMTEsMTE5LDExMCw1OSwxLDk2NjEsMTEyLDU5LDEsOTY1MSwxMTIsMTA4LDExNywxMTUsNTksMSwxMDc1NiwxMDEsMTAxLDU5LDEsODg5NywxMDEsMTAwLDEwMywxMDEsNTksMSw4ODk2LDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MDksNCwzLDk3LDEwNywxMTEsNzM2Miw3NDM2LDc0NTgsNCwyLDk5LDExMCw3MzY4LDc0MzIsMTA3LDQsMywxMDgsMTE1LDExNiw3Mzc3LDczODYsNzM5NCwxMTEsMTIyLDEwMSwxMTAsMTAzLDEwMSw1OSwxLDEwNzMxLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk2NDIsMTE0LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCw0LDU5LDEwMCwxMDgsMTE0LDc0MTEsNzQxMyw3NDE5LDc0MjUsMSw5NjUyLDExMSwxMTksMTEwLDU5LDEsOTY2MiwxMDEsMTAyLDExNiw1OSwxLDk2NjYsMTA1LDEwMywxMDQsMTE2LDU5LDEsOTY1NiwxMDcsNTksMSw5MjUxLDQsMiw0OSw1MSw3NDQyLDc0NTQsNCwyLDUwLDUyLDc0NDgsNzQ1MSw1OSwxLDk2MTgsNTksMSw5NjE3LDUyLDU5LDEsOTYxOSw5OSwxMDcsNTksMSw5NjA4LDQsMiwxMDEsMTExLDc0NjksNzQ4NSw0LDIsNTksMTEzLDc0NzUsNzQ3OCwzLDYxLDg0MjEsMTE3LDEwNSwxMTgsNTksMyw4ODAxLDg0MjEsMTE2LDU5LDEsODk3Niw0LDQsMTEyLDExNiwxMTksMTIwLDc0OTksNzUwNCw3NTE3LDc1MjMsMTAyLDU5LDMsNTUzNDksNTY2NTksNCwyLDU5LDExNiw3NTEwLDc1MTIsMSw4ODY5LDExMSwxMDksNTksMSw4ODY5LDExNiwxMDUsMTAxLDU5LDEsODkwNCw0LDEyLDY4LDcyLDg1LDg2LDk4LDEwMCwxMDQsMTA5LDExMiwxMTYsMTE3LDExOCw3NTQ5LDc1NzEsNzU5Nyw3NjE5LDc2NTUsNzY2MCw3NjgyLDc3MDgsNzcxNSw3NzIxLDc3MjgsNzc1MCw0LDQsNzYsODIsMTA4LDExNCw3NTU5LDc1NjIsNzU2NSw3NTY4LDU5LDEsOTU1OSw1OSwxLDk1NTYsNTksMSw5NTU4LDU5LDEsOTU1NSw0LDUsNTksNjgsODUsMTAwLDExNyw3NTgzLDc1ODUsNzU4OCw3NTkxLDc1OTQsMSw5NTUyLDU5LDEsOTU3NCw1OSwxLDk1NzcsNTksMSw5NTcyLDU5LDEsOTU3NSw0LDQsNzYsODIsMTA4LDExNCw3NjA3LDc2MTAsNzYxMyw3NjE2LDU5LDEsOTU2NSw1OSwxLDk1NjIsNTksMSw5NTY0LDU5LDEsOTU2MSw0LDcsNTksNzIsNzYsODIsMTA0LDEwOCwxMTQsNzYzNSw3NjM3LDc2NDAsNzY0Myw3NjQ2LDc2NDksNzY1MiwxLDk1NTMsNTksMSw5NTgwLDU5LDEsOTU3MSw1OSwxLDk1NjgsNTksMSw5NTc5LDU5LDEsOTU3MCw1OSwxLDk1NjcsMTExLDEyMCw1OSwxLDEwNjk3LDQsNCw3Niw4MiwxMDgsMTE0LDc2NzAsNzY3Myw3Njc2LDc2NzksNTksMSw5NTU3LDU5LDEsOTU1NCw1OSwxLDk0ODgsNTksMSw5NDg0LDQsNSw1OSw2OCw4NSwxMDAsMTE3LDc2OTQsNzY5Niw3Njk5LDc3MDIsNzcwNSwxLDk0NzIsNTksMSw5NTczLDU5LDEsOTU3Niw1OSwxLDk1MTYsNTksMSw5NTI0LDEwNSwxMTAsMTE3LDExNSw1OSwxLDg4NjMsMTA4LDExNywxMTUsNTksMSw4ODYyLDEwNSwxMDksMTAxLDExNSw1OSwxLDg4NjQsNCw0LDc2LDgyLDEwOCwxMTQsNzczOCw3NzQxLDc3NDQsNzc0Nyw1OSwxLDk1NjMsNTksMSw5NTYwLDU5LDEsOTQ5Niw1OSwxLDk0OTIsNCw3LDU5LDcyLDc2LDgyLDEwNCwxMDgsMTE0LDc3NjYsNzc2OCw3NzcxLDc3NzQsNzc3Nyw3NzgwLDc3ODMsMSw5NDc0LDU5LDEsOTU3OCw1OSwxLDk1NjksNTksMSw5NTY2LDU5LDEsOTUzMiw1OSwxLDk1MDgsNTksMSw5NTAwLDExNCwxMDUsMTA5LDEwMSw1OSwxLDgyNDUsNCwyLDEwMSwxMTgsNzc5OSw3ODA0LDExOCwxMDEsNTksMSw3MjgsOTgsOTcsMTE0LDUsMTY2LDEsNTksNzgxMiwxLDE2Niw0LDQsOTksMTAxLDEwNSwxMTEsNzgyNCw3ODI5LDc4MzQsNzg0NiwxMTQsNTksMyw1NTM0OSw1NjUwMywxMDksMTA1LDU5LDEsODI3MSwxMDksNCwyLDU5LDEwMSw3ODQxLDc4NDMsMSw4NzY1LDU5LDEsODkwOSwxMDgsNCwzLDU5LDk4LDEwNCw3ODU1LDc4NTcsNzg2MCwxLDkyLDU5LDEsMTA2OTMsMTE1LDExNyw5OCw1OSwxLDEwMTg0LDQsMiwxMDgsMTA5LDc4NzIsNzg4NSwxMDgsNCwyLDU5LDEwMSw3ODc5LDc4ODEsMSw4MjI2LDExNiw1OSwxLDgyMjYsMTEyLDQsMyw1OSw2OSwxMDEsNzg5NCw3ODk2LDc4OTksMSw4NzgyLDU5LDEsMTA5MjYsNCwyLDU5LDExMyw3OTA1LDc5MDcsMSw4NzgzLDU5LDEsODc4Myw0LDE1LDk3LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDExMSwxMTQsMTE1LDExNiwxMTcsMTE5LDEyMSw3OTQyLDgwMjEsODA3NSw4MDgwLDgxMjEsODEyNiw4MTU3LDgyNzksODI5NSw4NDMwLDg0NDYsODQ4NSw4NDkxLDg3MDcsODcyNiw0LDMsOTksMTEyLDExNCw3OTUwLDc5NTYsODAwNywxMTcsMTE2LDEwMSw1OSwxLDI2Myw0LDYsNTksOTcsOTgsOTksMTAwLDExNSw3OTcwLDc5NzIsNzk3Nyw3OTg0LDc5OTgsODAwMywxLDg3NDUsMTEwLDEwMCw1OSwxLDEwODIwLDExNCw5OSwxMTcsMTEyLDU5LDEsMTA4MjUsNCwyLDk3LDExNyw3OTkwLDc5OTQsMTEyLDU5LDEsMTA4MjcsMTEyLDU5LDEsMTA4MjMsMTExLDExNiw1OSwxLDEwODE2LDU5LDMsODc0NSw2NTAyNCw0LDIsMTAxLDExMSw4MDEzLDgwMTcsMTE2LDU5LDEsODI1NywxMTAsNTksMSw3MTEsNCw0LDk3LDEwMSwxMDUsMTE3LDgwMzEsODA0Niw4MDU2LDgwNjEsNCwyLDExMiwxMTQsODAzNyw4MDQxLDExNSw1OSwxLDEwODI5LDExMSwxMTAsNTksMSwyNjksMTAwLDEwNSwxMDgsNSwyMzEsMSw1OSw4MDU0LDEsMjMxLDExNCw5OSw1OSwxLDI2NSwxMTIsMTE1LDQsMiw1OSwxMTUsODA2OSw4MDcxLDEsMTA4MjgsMTA5LDU5LDEsMTA4MzIsMTExLDExNiw1OSwxLDI2Nyw0LDMsMTAwLDEwOSwxMTAsODA4OCw4MDk3LDgxMDQsMTA1LDEwOCw1LDE4NCwxLDU5LDgwOTUsMSwxODQsMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzQsMTE2LDUsMTYyLDIsNTksMTAxLDgxMTIsODExNCwxLDE2MiwxMTQsMTAwLDExMSwxMTYsNTksMSwxODMsMTE0LDU5LDMsNTUzNDksNTY2MDgsNCwzLDk5LDEwMSwxMDUsODEzNCw4MTM4LDgxNTQsMTIxLDU5LDEsMTA5NSw5OSwxMDcsNCwyLDU5LDEwOSw4MTQ2LDgxNDgsMSwxMDAwMyw5NywxMTQsMTA3LDU5LDEsMTAwMDMsNTksMSw5NjcsMTE0LDQsNyw1OSw2OSw5OSwxMDEsMTAyLDEwOSwxMTUsODE3NCw4MTc2LDgxNzksODI1OCw4MjYxLDgyNjgsODI3MywxLDk2NzUsNTksMSwxMDY5MSw0LDMsNTksMTAxLDEwOCw4MTg3LDgxODksODE5MywxLDcxMCwxMTMsNTksMSw4NzkxLDEwMSw0LDIsOTcsMTAwLDgyMDAsODIyMywxMTQsMTE0LDExMSwxMTksNCwyLDEwOCwxMTQsODIxMCw4MjE2LDEwMSwxMDIsMTE2LDU5LDEsODYzNCwxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjM1LDQsNSw4Miw4Myw5Nyw5OSwxMDAsODIzNSw4MjM4LDgyNDEsODI0Niw4MjUyLDU5LDEsMTc0LDU5LDEsOTQxNiwxMTUsMTE2LDU5LDEsODg1OSwxMDUsMTE0LDk5LDU5LDEsODg1OCw5NywxMTUsMTA0LDU5LDEsODg2MSw1OSwxLDg3OTEsMTEwLDEwNSwxMTAsMTE2LDU5LDEsMTA3NjgsMTA1LDEwMCw1OSwxLDEwOTkxLDk5LDEwNSwxMTQsNTksMSwxMDY5MCwxMTcsOTgsMTE1LDQsMiw1OSwxMTcsODI4OCw4MjkwLDEsOTgyNywxMDUsMTE2LDU5LDEsOTgyNyw0LDQsMTA4LDEwOSwxMTAsMTEyLDgzMDUsODMyNiw4Mzc2LDg0MDAsMTExLDExMCw0LDIsNTksMTAxLDgzMTMsODMxNSwxLDU4LDQsMiw1OSwxMTMsODMyMSw4MzIzLDEsODc4OCw1OSwxLDg3ODgsNCwyLDEwOSwxMTIsODMzMiw4MzQ0LDk3LDQsMiw1OSwxMTYsODMzOSw4MzQxLDEsNDQsNTksMSw2NCw0LDMsNTksMTAyLDEwOCw4MzUyLDgzNTQsODM1OCwxLDg3MDUsMTEwLDU5LDEsODcyOCwxMDEsNCwyLDEwOSwxMjAsODM2NSw4MzcxLDEwMSwxMTAsMTE2LDU5LDEsODcwNSwxMDEsMTE1LDU5LDEsODQ1MCw0LDIsMTAzLDEwNSw4MzgyLDgzOTUsNCwyLDU5LDEwMCw4Mzg4LDgzOTAsMSw4NzczLDExMSwxMTYsNTksMSwxMDg2MSwxMTAsMTE2LDU5LDEsODc1MCw0LDMsMTAyLDExNCwxMjEsODQwOCw4NDEyLDg0MTcsNTksMyw1NTM0OSw1NjY2MCwxMTEsMTAwLDU5LDEsODcyMCw1LDE2OSwyLDU5LDExNSw4NDI0LDg0MjYsMSwxNjksMTE0LDU5LDEsODQ3MSw0LDIsOTcsMTExLDg0MzYsODQ0MSwxMTQsMTE0LDU5LDEsODYyOSwxMTUsMTE1LDU5LDEsMTAwMDcsNCwyLDk5LDExNyw4NDUyLDg0NTcsMTE0LDU5LDMsNTUzNDksNTY1MDQsNCwyLDk4LDExMiw4NDYzLDg0NzQsNCwyLDU5LDEwMSw4NDY5LDg0NzEsMSwxMDk1OSw1OSwxLDEwOTYxLDQsMiw1OSwxMDEsODQ4MCw4NDgyLDEsMTA5NjAsNTksMSwxMDk2MiwxMDAsMTExLDExNiw1OSwxLDg5NDMsNCw3LDEwMCwxMDEsMTA4LDExMiwxMTQsMTE4LDExOSw4NTA3LDg1MjIsODUzNiw4NTUwLDg2MDAsODY5Nyw4NzAyLDk3LDExNCwxMTQsNCwyLDEwOCwxMTQsODUxNiw4NTE5LDU5LDEsMTA1NTIsNTksMSwxMDU0OSw0LDIsMTEyLDExNSw4NTI4LDg1MzIsMTE0LDU5LDEsODkyNiw5OSw1OSwxLDg5MjcsOTcsMTE0LDExNCw0LDIsNTksMTEyLDg1NDUsODU0NywxLDg2MzAsNTksMSwxMDU1Nyw0LDYsNTksOTgsOTksMTAwLDExMSwxMTUsODU2NCw4NTY2LDg1NzMsODU4Nyw4NTkyLDg1OTYsMSw4NzQ2LDExNCw5OSw5NywxMTIsNTksMSwxMDgyNCw0LDIsOTcsMTE3LDg1NzksODU4MywxMTIsNTksMSwxMDgyMiwxMTIsNTksMSwxMDgyNiwxMTEsMTE2LDU5LDEsODg0NSwxMTQsNTksMSwxMDgyMSw1OSwzLDg3NDYsNjUwMjQsNCw0LDk3LDEwOCwxMTQsMTE4LDg2MTAsODYyMyw4NjYzLDg2NzIsMTE0LDExNCw0LDIsNTksMTA5LDg2MTgsODYyMCwxLDg2MzEsNTksMSwxMDU1NiwxMjEsNCwzLDEwMSwxMTgsMTE5LDg2MzIsODY1MSw4NjU2LDExMyw0LDIsMTEyLDExNSw4NjM5LDg2NDUsMTE0LDEwMSw5OSw1OSwxLDg5MjYsMTE3LDk5LDk5LDU5LDEsODkyNywxMDEsMTAxLDU5LDEsODkxMCwxMDEsMTAwLDEwMywxMDEsNTksMSw4OTExLDEwMSwxMTAsNSwxNjQsMSw1OSw4NjcwLDEsMTY0LDEwMSw5NywxMTQsMTE0LDExMSwxMTksNCwyLDEwOCwxMTQsODY4NCw4NjkwLDEwMSwxMDIsMTE2LDU5LDEsODYzMCwxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjMxLDEwMSwxMDEsNTksMSw4OTEwLDEwMSwxMDAsNTksMSw4OTExLDQsMiw5OSwxMDUsODcxMyw4NzIxLDExMSwxMTAsMTA1LDExMCwxMTYsNTksMSw4NzU0LDExMCwxMTYsNTksMSw4NzUzLDEwOCw5OSwxMTYsMTIxLDU5LDEsOTAwNSw0LDE5LDY1LDcyLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA2LDEwOCwxMTEsMTE0LDExNSwxMTYsMTE3LDExOSwxMjIsODc3Myw4Nzc4LDg3ODMsODgyMSw4ODM5LDg4NTQsODg4Nyw4OTE0LDg5MzAsODk0NCw5MDM2LDkwNDEsOTA1OCw5MTk3LDkyMjcsOTI1OCw5MjgxLDkyOTcsOTMwNSwxMTQsMTE0LDU5LDEsODY1OSw5NywxMTQsNTksMSwxMDU5Nyw0LDQsMTAzLDEwOCwxMTQsMTE1LDg3OTMsODc5OSw4ODA1LDg4MDksMTAzLDEwMSwxMTQsNTksMSw4MjI0LDEwMSwxMTYsMTA0LDU5LDEsODUwNCwxMTQsNTksMSw4NTk1LDEwNCw0LDIsNTksMTE4LDg4MTYsODgxOCwxLDgyMDgsNTksMSw4ODY3LDQsMiwxMDcsMTA4LDg4MjcsODgzNCw5NywxMTQsMTExLDExOSw1OSwxLDEwNTExLDk3LDk5LDU5LDEsNzMzLDQsMiw5NywxMjEsODg0NSw4ODUxLDExNCwxMTEsMTEwLDU5LDEsMjcxLDU5LDEsMTA3Niw0LDMsNTksOTcsMTExLDg4NjIsODg2NCw4ODgwLDEsODUxOCw0LDIsMTAzLDExNCw4ODcwLDg4NzYsMTAzLDEwMSwxMTQsNTksMSw4MjI1LDExNCw1OSwxLDg2NTAsMTE2LDExNSwxMDEsMTEzLDU5LDEsMTA4NzEsNCwzLDEwMywxMDgsMTA5LDg4OTUsODkwMiw4OTA3LDUsMTc2LDEsNTksODkwMCwxLDE3NiwxMTYsOTcsNTksMSw5NDgsMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzMsNCwyLDEwNSwxMTQsODkyMCw4OTI2LDExNSwxMDQsMTE2LDU5LDEsMTA2MjMsNTksMyw1NTM0OSw1NjYwOSw5NywxMTQsNCwyLDEwOCwxMTQsODkzOCw4OTQxLDU5LDEsODY0Myw1OSwxLDg2NDIsNCw1LDk3LDEwMSwxMDMsMTE1LDExOCw4OTU2LDg5ODYsODk4OSw4OTk2LDkwMDEsMTA5LDQsMyw1OSwxMTEsMTE1LDg5NjUsODk2Nyw4OTgzLDEsODkwMCwxMTAsMTAwLDQsMiw1OSwxMTUsODk3NSw4OTc3LDEsODkwMCwxMTcsMTA1LDExNiw1OSwxLDk4MzAsNTksMSw5ODMwLDU5LDEsMTY4LDk3LDEwOSwxMDksOTcsNTksMSw5ODksMTA1LDExMCw1OSwxLDg5NDYsNCwzLDU5LDEwNSwxMTEsOTAwOSw5MDExLDkwMzEsMSwyNDcsMTAwLDEwMSw1LDI0NywyLDU5LDExMSw5MDIwLDkwMjIsMSwyNDcsMTEwLDExNiwxMDUsMTA5LDEwMSwxMTUsNTksMSw4OTAzLDExMCwxMjAsNTksMSw4OTAzLDk5LDEyMSw1OSwxLDExMDYsOTksNCwyLDExMSwxMTQsOTA0OCw5MDUzLDExNCwxMTAsNTksMSw4OTkwLDExMSwxMTIsNTksMSw4OTczLDQsNSwxMDgsMTEyLDExNiwxMTcsMTE5LDkwNzAsOTA3Niw5MDgxLDkxMzAsOTE0NCwxMDgsOTcsMTE0LDU5LDEsMzYsMTAyLDU5LDMsNTUzNDksNTY2NjEsNCw1LDU5LDEwMSwxMDksMTEyLDExNSw5MDkzLDkwOTUsOTEwOSw5MTE2LDkxMjIsMSw3MjksMTEzLDQsMiw1OSwxMDAsOTEwMiw5MTA0LDEsODc4NCwxMTEsMTE2LDU5LDEsODc4NSwxMDUsMTEwLDExNywxMTUsNTksMSw4NzYwLDEwOCwxMTcsMTE1LDU5LDEsODcyNCwxMTMsMTE3LDk3LDExNCwxMDEsNTksMSw4ODY1LDk4LDEwOCwxMDEsOTgsOTcsMTE0LDExOSwxMDEsMTAwLDEwMywxMDEsNTksMSw4OTY2LDExMCw0LDMsOTcsMTAwLDEwNCw5MTUzLDkxNjAsOTE3MiwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk1LDExMSwxMTksMTEwLDk3LDExNCwxMTQsMTExLDExOSwxMTUsNTksMSw4NjUwLDk3LDExNCwxMTIsMTExLDExMSwxMTAsNCwyLDEwOCwxMTQsOTE4NCw5MTkwLDEwMSwxMDIsMTE2LDU5LDEsODY0MywxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjQyLDQsMiw5OCw5OSw5MjAzLDkyMTEsMTA3LDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MTIsNCwyLDExMSwxMTQsOTIxNyw5MjIyLDExNCwxMTAsNTksMSw4OTkxLDExMSwxMTIsNTksMSw4OTcyLDQsMyw5OSwxMTEsMTE2LDkyMzUsOTI0OCw5MjUyLDQsMiwxMTQsMTIxLDkyNDEsOTI0NSw1OSwzLDU1MzQ5LDU2NTA1LDU5LDEsMTEwOSwxMDgsNTksMSwxMDc0MiwxMTQsMTExLDEwNyw1OSwxLDI3Myw0LDIsMTAwLDExNCw5MjY0LDkyNjksMTExLDExNiw1OSwxLDg5NDUsMTA1LDQsMiw1OSwxMDIsOTI3Niw5Mjc4LDEsOTY2Myw1OSwxLDk2NjIsNCwyLDk3LDEwNCw5Mjg3LDkyOTIsMTE0LDExNCw1OSwxLDg2OTMsOTcsMTE0LDU5LDEsMTA2MDcsOTcsMTEwLDEwMywxMDgsMTAxLDU5LDEsMTA2NjIsNCwyLDk5LDEwNSw5MzExLDkzMTUsMTIxLDU5LDEsMTExOSwxMDMsMTE0LDk3LDExNCwxMTQsNTksMSwxMDIzOSw0LDE4LDY4LDk3LDk5LDEwMCwxMDEsMTAyLDEwMywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTIwLDkzNjEsOTM3Niw5Mzk4LDk0MzksOTQ0NCw5NDQ3LDk0NjIsOTQ5NSw5NTMxLDk1ODUsOTU5OCw5NjE0LDk2NTksOTc1NSw5NzcxLDk3OTIsOTgwOCw5ODI2LDQsMiw2OCwxMTEsOTM2Nyw5MzcyLDExMSwxMTYsNTksMSwxMDg3MSwxMTYsNTksMSw4Nzg1LDQsMiw5OSwxMTUsOTM4Miw5MzkyLDExNywxMTYsMTAxLDUsMjMzLDEsNTksOTM5MCwxLDIzMywxMTYsMTAxLDExNCw1OSwxLDEwODYyLDQsNCw5NywxMDUsMTExLDEyMSw5NDA4LDk0MTQsOTQzMCw5NDM2LDExNCwxMTEsMTEwLDU5LDEsMjgzLDExNCw0LDIsNTksOTksOTQyMSw5NDIzLDEsODc5MCw1LDIzNCwxLDU5LDk0MjgsMSwyMzQsMTA4LDExMSwxMTAsNTksMSw4Nzg5LDU5LDEsMTEwMSwxMTEsMTE2LDU5LDEsMjc5LDU5LDEsODUxOSw0LDIsNjgsMTE0LDk0NTMsOTQ1OCwxMTEsMTE2LDU5LDEsODc4Niw1OSwzLDU1MzQ5LDU2NjEwLDQsMyw1OSwxMTQsMTE1LDk0NzAsOTQ3Miw5NDgyLDEsMTA5MDYsOTcsMTE4LDEwMSw1LDIzMiwxLDU5LDk0ODAsMSwyMzIsNCwyLDU5LDEwMCw5NDg4LDk0OTAsMSwxMDkwMiwxMTEsMTE2LDU5LDEsMTA5MDQsNCw0LDU5LDEwNSwxMDgsMTE1LDk1MDUsOTUwNyw5NTE1LDk1MTgsMSwxMDkwNSwxMTAsMTE2LDEwMSwxMTQsMTE1LDU5LDEsOTE5MSw1OSwxLDg0NjcsNCwyLDU5LDEwMCw5NTI0LDk1MjYsMSwxMDkwMSwxMTEsMTE2LDU5LDEsMTA5MDMsNCwzLDk3LDExMiwxMTUsOTUzOSw5NTQ0LDk1NjQsOTksMTE0LDU5LDEsMjc1LDExNiwxMjEsNCwzLDU5LDExNSwxMTgsOTU1NCw5NTU2LDk1NjEsMSw4NzA5LDEwMSwxMTYsNTksMSw4NzA5LDU5LDEsODcwOSwxMTIsNCwyLDQ5LDU5LDk1NzEsOTU4Myw0LDIsNTEsNTIsOTU3Nyw5NTgwLDU5LDEsODE5Niw1OSwxLDgxOTcsMSw4MTk1LDQsMiwxMDMsMTE1LDk1OTEsOTU5NCw1OSwxLDMzMSwxMTIsNTksMSw4MTk0LDQsMiwxMDMsMTEyLDk2MDQsOTYwOSwxMTEsMTEwLDU5LDEsMjgxLDEwMiw1OSwzLDU1MzQ5LDU2NjYyLDQsMyw5NywxMDgsMTE1LDk2MjIsOTYzNSw5NjQwLDExNCw0LDIsNTksMTE1LDk2MjksOTYzMSwxLDg5MTcsMTA4LDU5LDEsMTA3MjMsMTE3LDExNSw1OSwxLDEwODY1LDEwNSw0LDMsNTksMTA4LDExOCw5NjQ5LDk2NTEsOTY1NiwxLDk0OSwxMTEsMTEwLDU5LDEsOTQ5LDU5LDEsMTAxMyw0LDQsOTksMTE1LDExNywxMTgsOTY2OSw5Njg2LDk3MTYsOTc0Nyw0LDIsMTA1LDExMSw5Njc1LDk2ODAsMTE0LDk5LDU5LDEsODc5MCwxMDgsMTExLDExMCw1OSwxLDg3ODksNCwyLDEwNSwxMDgsOTY5Miw5Njk2LDEwOSw1OSwxLDg3NzAsOTcsMTEwLDExNiw0LDIsMTAzLDEwOCw5NzA1LDk3MTAsMTE2LDExNCw1OSwxLDEwOTAyLDEwMSwxMTUsMTE1LDU5LDEsMTA5MDEsNCwzLDk3LDEwMSwxMDUsOTcyNCw5NzI5LDk3MzQsMTA4LDExNSw1OSwxLDYxLDExNSwxMTYsNTksMSw4Nzk5LDExOCw0LDIsNTksNjgsOTc0MSw5NzQzLDEsODgwMSw2OCw1OSwxLDEwODcyLDExMiw5NywxMTQsMTE1LDEwOCw1OSwxLDEwNzI1LDQsMiw2OCw5Nyw5NzYxLDk3NjYsMTExLDExNiw1OSwxLDg3ODcsMTE0LDExNCw1OSwxLDEwNjA5LDQsMyw5OSwxMDAsMTA1LDk3NzksOTc4Myw5Nzg4LDExNCw1OSwxLDg0OTUsMTExLDExNiw1OSwxLDg3ODQsMTA5LDU5LDEsODc3MCw0LDIsOTcsMTA0LDk3OTgsOTgwMSw1OSwxLDk1MSw1LDI0MCwxLDU5LDk4MDYsMSwyNDAsNCwyLDEwOSwxMTQsOTgxNCw5ODIyLDEwOCw1LDIzNSwxLDU5LDk4MjAsMSwyMzUsMTExLDU5LDEsODM2NCw0LDMsOTksMTA1LDExMiw5ODM0LDk4MzgsOTg0MywxMDgsNTksMSwzMywxMTUsMTE2LDU5LDEsODcwNyw0LDIsMTAxLDExMSw5ODQ5LDk4NTksOTksMTE2LDk3LDExNiwxMDUsMTExLDExMCw1OSwxLDg0OTYsMTEwLDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMTAxLDU5LDEsODUxOSw0LDEyLDk3LDk5LDEwMSwxMDIsMTA1LDEwNiwxMDgsMTEwLDExMSwxMTIsMTE0LDExNSw5ODk2LDk5MTAsOTkxNCw5OTIxLDk5NTQsOTk2MCw5OTY3LDk5ODksOTk5NCwxMDAyNywxMDAzNiwxMDE2NCwxMDgsMTA4LDEwNSwxMTAsMTAzLDEwMCwxMTEsMTE2LDExNSwxMDEsMTEzLDU5LDEsODc4NiwxMjEsNTksMSwxMDkyLDEwOSw5NywxMDgsMTAxLDU5LDEsOTc5Miw0LDMsMTA1LDEwOCwxMTQsOTkyOSw5OTM1LDk5NTAsMTA4LDEwNSwxMDMsNTksMSw2NDI1OSw0LDIsMTA1LDEwOCw5OTQxLDk5NDUsMTAzLDU5LDEsNjQyNTYsMTA1LDEwMyw1OSwxLDY0MjYwLDU5LDMsNTUzNDksNTY2MTEsMTA4LDEwNSwxMDMsNTksMSw2NDI1NywxMDgsMTA1LDEwMyw1OSwzLDEwMiwxMDYsNCwzLDk3LDEwOCwxMTYsOTk3NSw5OTc5LDk5ODQsMTE2LDU5LDEsOTgzNywxMDUsMTAzLDU5LDEsNjQyNTgsMTEwLDExNSw1OSwxLDk2NDksMTExLDEwMiw1OSwxLDQwMiw0LDIsMTEyLDExNCwxMDAwMCwxMDAwNSwxMDIsNTksMyw1NTM0OSw1NjY2Myw0LDIsOTcsMTA3LDEwMDExLDEwMDE2LDEwOCwxMDgsNTksMSw4NzA0LDQsMiw1OSwxMTgsMTAwMjIsMTAwMjQsMSw4OTE2LDU5LDEsMTA5NjksOTcsMTE0LDExNiwxMDUsMTEwLDExNiw1OSwxLDEwNzY1LDQsMiw5NywxMTEsMTAwNDIsMTAxNTksNCwyLDk5LDExNSwxMDA0OCwxMDE1NSw0LDYsNDksNTAsNTEsNTIsNTMsNTUsMTAwNjIsMTAxMDIsMTAxMTQsMTAxMzUsMTAxMzksMTAxNTEsNCw2LDUwLDUxLDUyLDUzLDU0LDU2LDEwMDc2LDEwMDgzLDEwMDg2LDEwMDkzLDEwMDk2LDEwMDk5LDUsMTg5LDEsNTksMTAwODEsMSwxODksNTksMSw4NTMxLDUsMTg4LDEsNTksMTAwOTEsMSwxODgsNTksMSw4NTMzLDU5LDEsODUzNyw1OSwxLDg1MzksNCwyLDUxLDUzLDEwMTA4LDEwMTExLDU5LDEsODUzMiw1OSwxLDg1MzQsNCwzLDUyLDUzLDU2LDEwMTIyLDEwMTI5LDEwMTMyLDUsMTkwLDEsNTksMTAxMjcsMSwxOTAsNTksMSw4NTM1LDU5LDEsODU0MCw1Myw1OSwxLDg1MzYsNCwyLDU0LDU2LDEwMTQ1LDEwMTQ4LDU5LDEsODUzOCw1OSwxLDg1NDEsNTYsNTksMSw4NTQyLDEwOCw1OSwxLDgyNjAsMTE5LDExMCw1OSwxLDg5OTQsOTksMTE0LDU5LDMsNTUzNDksNTY1MDcsNCwxNyw2OSw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA1LDEwNiwxMDgsMTEwLDExMSwxMTQsMTE1LDExNiwxMTgsMTAyMDYsMTAyMTcsMTAyNDcsMTAyNTQsMTAyNjgsMTAyNzMsMTAzNTgsMTAzNjMsMTAzNzQsMTAzODAsMTAzODUsMTA0MDYsMTA0NTgsMTA0NjQsMTA0NzAsMTA0OTcsMTA2MTAsNCwyLDU5LDEwOCwxMDIxMiwxMDIxNCwxLDg4MDcsNTksMSwxMDg5Miw0LDMsOTksMTA5LDExMiwxMDIyNSwxMDIzMSwxMDI0NCwxMTcsMTE2LDEwMSw1OSwxLDUwMSwxMDksOTcsNCwyLDU5LDEwMCwxMDIzOSwxMDI0MSwxLDk0Nyw1OSwxLDk4OSw1OSwxLDEwODg2LDExNCwxMDEsMTE4LDEwMSw1OSwxLDI4Nyw0LDIsMTA1LDEyMSwxMDI2MCwxMDI2NSwxMTQsOTksNTksMSwyODUsNTksMSwxMDc1LDExMSwxMTYsNTksMSwyODksNCw0LDU5LDEwOCwxMTMsMTE1LDEwMjgzLDEwMjg1LDEwMjg4LDEwMzA4LDEsODgwNSw1OSwxLDg5MjMsNCwzLDU5LDExMywxMTUsMTAyOTYsMTAyOTgsMTAzMDEsMSw4ODA1LDU5LDEsODgwNywxMDgsOTcsMTEwLDExNiw1OSwxLDEwODc4LDQsNCw1OSw5OSwxMDAsMTA4LDEwMzE4LDEwMzIwLDEwMzI0LDEwMzQ1LDEsMTA4NzgsOTksNTksMSwxMDkyMSwxMTEsMTE2LDQsMiw1OSwxMTEsMTAzMzIsMTAzMzQsMSwxMDg4MCw0LDIsNTksMTA4LDEwMzQwLDEwMzQyLDEsMTA4ODIsNTksMSwxMDg4NCw0LDIsNTksMTAxLDEwMzUxLDEwMzU0LDMsODkyMyw2NTAyNCwxMTUsNTksMSwxMDkwMCwxMTQsNTksMyw1NTM0OSw1NjYxMiw0LDIsNTksMTAzLDEwMzY5LDEwMzcxLDEsODgxMSw1OSwxLDg5MjEsMTA5LDEwMSwxMDgsNTksMSw4NTAzLDk5LDEyMSw1OSwxLDExMDcsNCw0LDU5LDY5LDk3LDEwNiwxMDM5NSwxMDM5NywxMDQwMCwxMDQwMywxLDg4MjMsNTksMSwxMDg5OCw1OSwxLDEwOTE3LDU5LDEsMTA5MTYsNCw0LDY5LDk3LDEwMSwxMTUsMTA0MTYsMTA0MTksMTA0MzQsMTA0NTMsNTksMSw4ODA5LDExMiw0LDIsNTksMTEyLDEwNDI2LDEwNDI4LDEsMTA4OTAsMTE0LDExMSwxMjAsNTksMSwxMDg5MCw0LDIsNTksMTEzLDEwNDQwLDEwNDQyLDEsMTA4ODgsNCwyLDU5LDExMywxMDQ0OCwxMDQ1MCwxLDEwODg4LDU5LDEsODgwOSwxMDUsMTA5LDU5LDEsODkzNSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NjQsOTcsMTE4LDEwMSw1OSwxLDk2LDQsMiw5OSwxMDUsMTA0NzYsMTA0ODAsMTE0LDU5LDEsODQ1OCwxMDksNCwzLDU5LDEwMSwxMDgsMTA0ODksMTA0OTEsMTA0OTQsMSw4ODE5LDU5LDEsMTA4OTQsNTksMSwxMDg5Niw1LDYyLDYsNTksOTksMTAwLDEwOCwxMTMsMTE0LDEwNTEyLDEwNTE0LDEwNTI3LDEwNTMyLDEwNTM4LDEwNTQ1LDEsNjIsNCwyLDk5LDEwNSwxMDUyMCwxMDUyMyw1OSwxLDEwOTE5LDExNCw1OSwxLDEwODc0LDExMSwxMTYsNTksMSw4OTE5LDgwLDk3LDExNCw1OSwxLDEwNjQ1LDExNywxMDEsMTE1LDExNiw1OSwxLDEwODc2LDQsNSw5NywxMDAsMTAxLDEwOCwxMTUsMTA1NTcsMTA1NzQsMTA1NzksMTA1OTksMTA2MDUsNCwyLDExMiwxMTQsMTA1NjMsMTA1NzAsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA4ODYsMTE0LDU5LDEsMTA2MTYsMTExLDExNiw1OSwxLDg5MTksMTEzLDQsMiwxMDgsMTEzLDEwNTg2LDEwNTkyLDEwMSwxMTUsMTE1LDU5LDEsODkyMywxMDgsMTAxLDExNSwxMTUsNTksMSwxMDg5MiwxMDEsMTE1LDExNSw1OSwxLDg4MjMsMTA1LDEwOSw1OSwxLDg4MTksNCwyLDEwMSwxMTAsMTA2MTYsMTA2MjYsMTE0LDExNiwxMTAsMTAxLDExMywxMTMsNTksMyw4ODA5LDY1MDI0LDY5LDU5LDMsODgwOSw2NTAyNCw0LDEwLDY1LDk3LDk4LDk5LDEwMSwxMDIsMTA3LDExMSwxMTUsMTIxLDEwNjUzLDEwNjU4LDEwNzEzLDEwNzE4LDEwNzI0LDEwNzYwLDEwNzY1LDEwNzg2LDEwODUwLDEwODc1LDExNCwxMTQsNTksMSw4NjYwLDQsNCwxMDUsMTA4LDEwOSwxMTQsMTA2NjgsMTA2NzQsMTA2NzgsMTA2ODQsMTE0LDExNSwxMTIsNTksMSw4MjAyLDEwMiw1OSwxLDE4OSwxMDUsMTA4LDExNiw1OSwxLDg0NTksNCwyLDEwMCwxMTQsMTA2OTAsMTA2OTUsOTksMTIxLDU5LDEsMTA5OCw0LDMsNTksOTksMTE5LDEwNzAzLDEwNzA1LDEwNzEwLDEsODU5NiwxMDUsMTE0LDU5LDEsMTA1NjgsNTksMSw4NjIxLDk3LDExNCw1OSwxLDg0NjMsMTA1LDExNCw5OSw1OSwxLDI5Myw0LDMsOTcsMTA4LDExNCwxMDczMiwxMDc0OCwxMDc1NCwxMTQsMTE2LDExNSw0LDIsNTksMTE3LDEwNzQxLDEwNzQzLDEsOTgyOSwxMDUsMTE2LDU5LDEsOTgyOSwxMDgsMTA1LDExMiw1OSwxLDgyMzAsOTksMTExLDExMCw1OSwxLDg4ODksMTE0LDU5LDMsNTUzNDksNTY2MTMsMTE1LDQsMiwxMDEsMTE5LDEwNzcyLDEwNzc5LDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MzMsOTcsMTE0LDExMSwxMTksNTksMSwxMDUzNCw0LDUsOTcsMTA5LDExMSwxMTIsMTE0LDEwNzk4LDEwODAzLDEwODA5LDEwODM5LDEwODQ0LDExNCwxMTQsNTksMSw4NzAzLDExNiwxMDQsMTE2LDU5LDEsODc2MywxMDcsNCwyLDEwOCwxMTQsMTA4MTYsMTA4MjcsMTAxLDEwMiwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxNywxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxOCwxMDIsNTksMyw1NTM0OSw1NjY2NSw5OCw5NywxMTQsNTksMSw4MjEzLDQsMyw5OSwxMDgsMTE2LDEwODU4LDEwODYzLDEwODY5LDExNCw1OSwzLDU1MzQ5LDU2NTA5LDk3LDExNSwxMDQsNTksMSw4NDYzLDExNCwxMTEsMTA3LDU5LDEsMjk1LDQsMiw5OCwxMTIsMTA4ODEsMTA4ODcsMTE3LDEwOCwxMDgsNTksMSw4MjU5LDEwNCwxMDEsMTEwLDU5LDEsODIwOCw0LDE1LDk3LDk5LDEwMSwxMDIsMTAzLDEwNSwxMDYsMTA5LDExMCwxMTEsMTEyLDExMywxMTUsMTE2LDExNywxMDkyNSwxMDkzNiwxMDk1OCwxMDk3NywxMDk5MCwxMTAwMSwxMTAzOSwxMTA0NSwxMTEwMSwxMTE5MiwxMTIyMCwxMTIyNiwxMTIzNywxMTI4NSwxMTI5OSw5OSwxMTcsMTE2LDEwMSw1LDIzNywxLDU5LDEwOTM0LDEsMjM3LDQsMyw1OSwxMDUsMTIxLDEwOTQ0LDEwOTQ2LDEwOTU1LDEsODI5MSwxMTQsOTksNSwyMzgsMSw1OSwxMDk1MywxLDIzOCw1OSwxLDEwODAsNCwyLDk5LDEyMCwxMDk2NCwxMDk2OCwxMjEsNTksMSwxMDc3LDk5LDEwOCw1LDE2MSwxLDU5LDEwOTc1LDEsMTYxLDQsMiwxMDIsMTE0LDEwOTgzLDEwOTg2LDU5LDEsODY2MCw1OSwzLDU1MzQ5LDU2NjE0LDExNCw5NywxMTgsMTAxLDUsMjM2LDEsNTksMTA5OTksMSwyMzYsNCw0LDU5LDEwNSwxMTAsMTExLDExMDExLDExMDEzLDExMDI4LDExMDM0LDEsODUyMCw0LDIsMTA1LDExMCwxMTAxOSwxMTAyNCwxMTAsMTE2LDU5LDEsMTA3NjQsMTE2LDU5LDEsODc0OSwxMDIsMTA1LDExMCw1OSwxLDEwNzE2LDExNiw5Nyw1OSwxLDg0ODksMTA4LDEwNSwxMDMsNTksMSwzMDcsNCwzLDk3LDExMSwxMTIsMTEwNTMsMTEwOTIsMTEwOTYsNCwzLDk5LDEwMywxMTYsMTEwNjEsMTEwNjUsMTEwODgsMTE0LDU5LDEsMjk5LDQsMywxMDEsMTA4LDExMiwxMTA3MywxMTA3NiwxMTA4Miw1OSwxLDg0NjUsMTA1LDExMCwxMDEsNTksMSw4NDY0LDk3LDExNCwxMTYsNTksMSw4NDY1LDEwNCw1OSwxLDMwNSwxMDIsNTksMSw4ODg3LDEwMSwxMDAsNTksMSw0MzcsNCw1LDU5LDk5LDEwMiwxMTEsMTE2LDExMTEzLDExMTE1LDExMTIxLDExMTM2LDExMTQyLDEsODcxMiw5NywxMTQsMTAxLDU5LDEsODQ1MywxMDUsMTEwLDQsMiw1OSwxMTYsMTExMjksMTExMzEsMSw4NzM0LDEwNSwxMDEsNTksMSwxMDcxNywxMDAsMTExLDExNiw1OSwxLDMwNSw0LDUsNTksOTksMTAxLDEwOCwxMTIsMTExNTQsMTExNTYsMTExNjEsMTExNzksMTExODYsMSw4NzQ3LDk3LDEwOCw1OSwxLDg4OTAsNCwyLDEwMywxMTQsMTExNjcsMTExNzMsMTAxLDExNCwxMTUsNTksMSw4NDg0LDk5LDk3LDEwOCw1OSwxLDg4OTAsOTcsMTE0LDEwNCwxMDcsNTksMSwxMDc3NSwxMTQsMTExLDEwMCw1OSwxLDEwODEyLDQsNCw5OSwxMDMsMTEyLDExNiwxMTIwMiwxMTIwNiwxMTIxMSwxMTIxNiwxMjEsNTksMSwxMTA1LDExMSwxMTAsNTksMSwzMDMsMTAyLDU5LDMsNTUzNDksNTY2NjYsOTcsNTksMSw5NTMsMTE0LDExMSwxMDAsNTksMSwxMDgxMiwxMTcsMTAxLDExNSwxMTYsNSwxOTEsMSw1OSwxMTIzNSwxLDE5MSw0LDIsOTksMTA1LDExMjQzLDExMjQ4LDExNCw1OSwzLDU1MzQ5LDU2NTEwLDExMCw0LDUsNTksNjksMTAwLDExNSwxMTgsMTEyNjEsMTEyNjMsMTEyNjYsMTEyNzEsMTEyODIsMSw4NzEyLDU5LDEsODk1MywxMTEsMTE2LDU5LDEsODk0OSw0LDIsNTksMTE4LDExMjc3LDExMjc5LDEsODk0OCw1OSwxLDg5NDcsNTksMSw4NzEyLDQsMiw1OSwxMDUsMTEyOTEsMTEyOTMsMSw4MjkwLDEwOCwxMDAsMTAxLDU5LDEsMjk3LDQsMiwxMDcsMTA5LDExMzA1LDExMzEwLDk5LDEyMSw1OSwxLDExMTAsMTA4LDUsMjM5LDEsNTksMTEzMTYsMSwyMzksNCw2LDk5LDEwMiwxMDksMTExLDExNSwxMTcsMTEzMzIsMTEzNDYsMTEzNTEsMTEzNTcsMTEzNjMsMTEzODAsNCwyLDEwNSwxMjEsMTEzMzgsMTEzNDMsMTE0LDk5LDU5LDEsMzA5LDU5LDEsMTA4MSwxMTQsNTksMyw1NTM0OSw1NjYxNSw5NywxMTYsMTA0LDU5LDEsNTY3LDExMiwxMDIsNTksMyw1NTM0OSw1NjY2Nyw0LDIsOTksMTAxLDExMzY5LDExMzc0LDExNCw1OSwzLDU1MzQ5LDU2NTExLDExNCw5OSwxMjEsNTksMSwxMTEyLDEwNyw5OSwxMjEsNTksMSwxMTA4LDQsOCw5Nyw5OSwxMDIsMTAzLDEwNCwxMDYsMTExLDExNSwxMTQwNCwxMTQxOCwxMTQzMywxMTQzOCwxMTQ0NSwxMTQ1MCwxMTQ1NSwxMTQ2MSwxMTIsMTEyLDk3LDQsMiw1OSwxMTgsMTE0MTMsMTE0MTUsMSw5NTQsNTksMSwxMDA4LDQsMiwxMDEsMTIxLDExNDI0LDExNDMwLDEwMCwxMDUsMTA4LDU5LDEsMzExLDU5LDEsMTA4MiwxMTQsNTksMyw1NTM0OSw1NjYxNiwxMTQsMTAxLDEwMSwxMTAsNTksMSwzMTIsOTksMTIxLDU5LDEsMTA5Myw5OSwxMjEsNTksMSwxMTE2LDExMiwxMDIsNTksMyw1NTM0OSw1NjY2OCw5OSwxMTQsNTksMyw1NTM0OSw1NjUxMiw0LDIzLDY1LDY2LDY5LDcyLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA2LDEwOCwxMDksMTEwLDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDExOCwxMTUxNSwxMTUzOCwxMTU0NCwxMTU1NSwxMTU2MCwxMTcyMSwxMTc4MCwxMTgxOCwxMTg2OCwxMjEzNiwxMjE2MCwxMjE3MSwxMjIwMywxMjIwOCwxMjI0NiwxMjI3NSwxMjMyNywxMjUwOSwxMjUyMywxMjU2OSwxMjY0MSwxMjczMiwxMjc1Miw0LDMsOTcsMTE0LDExNiwxMTUyMywxMTUyOCwxMTUzMiwxMTQsMTE0LDU5LDEsODY2NiwxMTQsNTksMSw4NjU2LDk3LDEwNSwxMDgsNTksMSwxMDUyMyw5NywxMTQsMTE0LDU5LDEsMTA1MTAsNCwyLDU5LDEwMywxMTU1MCwxMTU1MiwxLDg4MDYsNTksMSwxMDg5MSw5NywxMTQsNTksMSwxMDU5NCw0LDksOTksMTAxLDEwMywxMDksMTEwLDExMiwxMTMsMTE0LDExNiwxMTU4MCwxMTU4NiwxMTU5NCwxMTYwMCwxMTYwNiwxMTYyNCwxMTYyNywxMTYzNiwxMTY5NCwxMTcsMTE2LDEwMSw1OSwxLDMxNCwxMDksMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzYsMTE0LDk3LDExMCw1OSwxLDg0NjYsOTgsMTAwLDk3LDU5LDEsOTU1LDEwMyw0LDMsNTksMTAwLDEwOCwxMTYxNSwxMTYxNywxMTYyMCwxLDEwMjE2LDU5LDEsMTA2NDEsMTAxLDU5LDEsMTAyMTYsNTksMSwxMDg4NSwxMTcsMTExLDUsMTcxLDEsNTksMTE2MzQsMSwxNzEsMTE0LDQsOCw1OSw5OCwxMDIsMTA0LDEwOCwxMTIsMTE1LDExNiwxMTY1NSwxMTY1NywxMTY2OSwxMTY3MywxMTY3NywxMTY4MSwxMTY4NSwxMTY5MCwxLDg1OTIsNCwyLDU5LDEwMiwxMTY2MywxMTY2NSwxLDg2NzYsMTE1LDU5LDEsMTA1MjcsMTE1LDU5LDEsMTA1MjUsMTA3LDU5LDEsODYxNywxMTIsNTksMSw4NjE5LDEwOCw1OSwxLDEwNTUzLDEwNSwxMDksNTksMSwxMDYxMSwxMDgsNTksMSw4NjEwLDQsMyw1OSw5NywxMDEsMTE3MDIsMTE3MDQsMTE3MDksMSwxMDkyMywxMDUsMTA4LDU5LDEsMTA1MjEsNCwyLDU5LDExNSwxMTcxNSwxMTcxNywxLDEwOTI1LDU5LDMsMTA5MjUsNjUwMjQsNCwzLDk3LDk4LDExNCwxMTcyOSwxMTczNCwxMTczOSwxMTQsMTE0LDU5LDEsMTA1MDgsMTE0LDEwNyw1OSwxLDEwMDk4LDQsMiw5NywxMDcsMTE3NDUsMTE3NTgsOTksNCwyLDEwMSwxMDcsMTE3NTIsMTE3NTUsNTksMSwxMjMsNTksMSw5MSw0LDIsMTAxLDExNSwxMTc2NCwxMTc2Nyw1OSwxLDEwNjM1LDEwOCw0LDIsMTAwLDExNywxMTc3NCwxMTc3Nyw1OSwxLDEwNjM5LDU5LDEsMTA2MzcsNCw0LDk3LDEwMSwxMTcsMTIxLDExNzkwLDExNzk2LDExODExLDExODE1LDExNCwxMTEsMTEwLDU5LDEsMzE4LDQsMiwxMDAsMTA1LDExODAyLDExODA3LDEwNSwxMDgsNTksMSwzMTYsMTA4LDU5LDEsODk2OCw5OCw1OSwxLDEyMyw1OSwxLDEwODMsNCw0LDk5LDExMywxMTQsMTE1LDExODI4LDExODMyLDExODQ1LDExODY0LDk3LDU5LDEsMTA1NTAsMTE3LDExMSw0LDIsNTksMTE0LDExODQwLDExODQyLDEsODIyMCw1OSwxLDgyMjIsNCwyLDEwMCwxMTcsMTE4NTEsMTE4NTcsMTA0LDk3LDExNCw1OSwxLDEwNTk5LDExNSwxMDQsOTcsMTE0LDU5LDEsMTA1NzEsMTA0LDU5LDEsODYyNiw0LDUsNTksMTAyLDEwMywxMTMsMTE1LDExODgwLDExODgyLDEyMDA4LDEyMDExLDEyMDMxLDEsODgwNCwxMTYsNCw1LDk3LDEwNCwxMDgsMTE0LDExNiwxMTg5NSwxMTkxMywxMTkzNSwxMTk0NywxMTk5NiwxMTQsMTE0LDExMSwxMTksNCwyLDU5LDExNiwxMTkwNSwxMTkwNywxLDg1OTIsOTcsMTA1LDEwOCw1OSwxLDg2MTAsOTcsMTE0LDExMiwxMTEsMTExLDExMCw0LDIsMTAwLDExNywxMTkyNSwxMTkzMSwxMTEsMTE5LDExMCw1OSwxLDg2MzcsMTEyLDU5LDEsODYzNiwxMDEsMTAyLDExNiw5NywxMTQsMTE0LDExMSwxMTksMTE1LDU5LDEsODY0NywxMDUsMTAzLDEwNCwxMTYsNCwzLDk3LDEwNCwxMTUsMTE5NTksMTE5NzQsMTE5ODQsMTE0LDExNCwxMTEsMTE5LDQsMiw1OSwxMTUsMTE5NjksMTE5NzEsMSw4NTk2LDU5LDEsODY0Niw5NywxMTQsMTEyLDExMSwxMTEsMTEwLDExNSw1OSwxLDg2NTEsMTEzLDExNywxMDUsMTAzLDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MjEsMTA0LDExNCwxMDEsMTAxLDExNiwxMDUsMTA5LDEwMSwxMTUsNTksMSw4OTA3LDU5LDEsODkyMiw0LDMsNTksMTEzLDExNSwxMjAxOSwxMjAyMSwxMjAyNCwxLDg4MDQsNTksMSw4ODA2LDEwOCw5NywxMTAsMTE2LDU5LDEsMTA4NzcsNCw1LDU5LDk5LDEwMCwxMDMsMTE1LDEyMDQzLDEyMDQ1LDEyMDQ5LDEyMDcwLDEyMDgzLDEsMTA4NzcsOTksNTksMSwxMDkyMCwxMTEsMTE2LDQsMiw1OSwxMTEsMTIwNTcsMTIwNTksMSwxMDg3OSw0LDIsNTksMTE0LDEyMDY1LDEyMDY3LDEsMTA4ODEsNTksMSwxMDg4Myw0LDIsNTksMTAxLDEyMDc2LDEyMDc5LDMsODkyMiw2NTAyNCwxMTUsNTksMSwxMDg5OSw0LDUsOTcsMTAwLDEwMSwxMDMsMTE1LDEyMDk1LDEyMTAzLDEyMTA4LDEyMTI2LDEyMTMxLDExMiwxMTIsMTE0LDExMSwxMjAsNTksMSwxMDg4NSwxMTEsMTE2LDU5LDEsODkxOCwxMTMsNCwyLDEwMywxMTMsMTIxMTUsMTIxMjAsMTE2LDExNCw1OSwxLDg5MjIsMTAzLDExNiwxMTQsNTksMSwxMDg5MSwxMTYsMTE0LDU5LDEsODgyMiwxMDUsMTA5LDU5LDEsODgxOCw0LDMsMTA1LDEwOCwxMTQsMTIxNDQsMTIxNTAsMTIxNTYsMTE1LDEwNCwxMTYsNTksMSwxMDYyMCwxMTEsMTExLDExNCw1OSwxLDg5NzAsNTksMyw1NTM0OSw1NjYxNyw0LDIsNTksNjksMTIxNjYsMTIxNjgsMSw4ODIyLDU5LDEsMTA4OTcsNCwyLDk3LDk4LDEyMTc3LDEyMTk4LDExNCw0LDIsMTAwLDExNywxMjE4NCwxMjE4Nyw1OSwxLDg2MzcsNCwyLDU5LDEwOCwxMjE5MywxMjE5NSwxLDg2MzYsNTksMSwxMDYwMiwxMDgsMTA3LDU5LDEsOTYwNCw5OSwxMjEsNTksMSwxMTEzLDQsNSw1OSw5Nyw5OSwxMDQsMTE2LDEyMjIwLDEyMjIyLDEyMjI3LDEyMjM1LDEyMjQxLDEsODgxMCwxMTQsMTE0LDU5LDEsODY0NywxMTEsMTE0LDExMCwxMDEsMTE0LDU5LDEsODk5MCw5NywxMTQsMTAwLDU5LDEsMTA2MDMsMTE0LDEwNSw1OSwxLDk3MjIsNCwyLDEwNSwxMTEsMTIyNTIsMTIyNTgsMTAwLDExMSwxMTYsNTksMSwzMjAsMTE3LDExNSwxMTYsNCwyLDU5LDk3LDEyMjY3LDEyMjY5LDEsOTEzNiw5OSwxMDQsMTAxLDU5LDEsOTEzNiw0LDQsNjksOTcsMTAxLDExNSwxMjI4NSwxMjI4OCwxMjMwMywxMjMyMiw1OSwxLDg4MDgsMTEyLDQsMiw1OSwxMTIsMTIyOTUsMTIyOTcsMSwxMDg4OSwxMTQsMTExLDEyMCw1OSwxLDEwODg5LDQsMiw1OSwxMTMsMTIzMDksMTIzMTEsMSwxMDg4Nyw0LDIsNTksMTEzLDEyMzE3LDEyMzE5LDEsMTA4ODcsNTksMSw4ODA4LDEwNSwxMDksNTksMSw4OTM0LDQsOCw5Nyw5OCwxMTAsMTExLDExMiwxMTYsMTE5LDEyMiwxMjM0NSwxMjM1OSwxMjM2NCwxMjQyMSwxMjQ0NiwxMjQ2NywxMjQ3NCwxMjQ5MCw0LDIsMTEwLDExNCwxMjM1MSwxMjM1NSwxMDMsNTksMSwxMDIyMCwxMTQsNTksMSw4NzAxLDExNCwxMDcsNTksMSwxMDIxNCwxMDMsNCwzLDEwOCwxMDksMTE0LDEyMzczLDEyNDAxLDEyNDA5LDEwMSwxMDIsMTE2LDQsMiw5NywxMTQsMTIzODIsMTIzODksMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMjksMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMxLDk3LDExMiwxMTUsMTE2LDExMSw1OSwxLDEwMjM2LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMCwxMTIsOTcsMTE0LDExNCwxMTEsMTE5LDQsMiwxMDgsMTE0LDEyNDMzLDEyNDM5LDEwMSwxMDIsMTE2LDU5LDEsODYxOSwxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjIwLDQsMyw5NywxMDIsMTA4LDEyNDU0LDEyNDU4LDEyNDYyLDExNCw1OSwxLDEwNjI5LDU5LDMsNTUzNDksNTY2NjksMTE3LDExNSw1OSwxLDEwNzk3LDEwNSwxMDksMTAxLDExNSw1OSwxLDEwODA0LDQsMiw5Nyw5OCwxMjQ4MCwxMjQ4NSwxMTUsMTE2LDU5LDEsODcyNyw5NywxMTQsNTksMSw5NSw0LDMsNTksMTAxLDEwMiwxMjQ5OCwxMjUwMCwxMjUwNiwxLDk2NzQsMTEwLDEwMywxMDEsNTksMSw5Njc0LDU5LDEsMTA3MzEsOTcsMTE0LDQsMiw1OSwxMDgsMTI1MTcsMTI1MTksMSw0MCwxMTYsNTksMSwxMDY0Myw0LDUsOTcsOTksMTA0LDEwOSwxMTYsMTI1MzUsMTI1NDAsMTI1NDgsMTI1NjEsMTI1NjQsMTE0LDExNCw1OSwxLDg2NDYsMTExLDExNCwxMTAsMTAxLDExNCw1OSwxLDg5OTEsOTcsMTE0LDQsMiw1OSwxMDAsMTI1NTYsMTI1NTgsMSw4NjUxLDU5LDEsMTA2MDUsNTksMSw4MjA2LDExNCwxMDUsNTksMSw4ODk1LDQsNiw5Nyw5OSwxMDQsMTA1LDExMywxMTYsMTI1ODMsMTI1ODksMTI1OTQsMTI1OTcsMTI2MTQsMTI2MzUsMTEzLDExNywxMTEsNTksMSw4MjQ5LDExNCw1OSwzLDU1MzQ5LDU2NTEzLDU5LDEsODYyNCwxMDksNCwzLDU5LDEwMSwxMDMsMTI2MDYsMTI2MDgsMTI2MTEsMSw4ODE4LDU5LDEsMTA4OTMsNTksMSwxMDg5NSw0LDIsOTgsMTE3LDEyNjIwLDEyNjIzLDU5LDEsOTEsMTExLDQsMiw1OSwxMTQsMTI2MzAsMTI2MzIsMSw4MjE2LDU5LDEsODIxOCwxMTQsMTExLDEwNyw1OSwxLDMyMiw1LDYwLDgsNTksOTksMTAwLDEwNCwxMDUsMTA4LDExMywxMTQsMTI2NjAsMTI2NjIsMTI2NzUsMTI2ODAsMTI2ODYsMTI2OTIsMTI2OTgsMTI3MDUsMSw2MCw0LDIsOTksMTA1LDEyNjY4LDEyNjcxLDU5LDEsMTA5MTgsMTE0LDU5LDEsMTA4NzMsMTExLDExNiw1OSwxLDg5MTgsMTE0LDEwMSwxMDEsNTksMSw4OTA3LDEwOSwxMDEsMTE1LDU5LDEsODkwNSw5NywxMTQsMTE0LDU5LDEsMTA2MTQsMTE3LDEwMSwxMTUsMTE2LDU5LDEsMTA4NzUsNCwyLDgwLDEwNSwxMjcxMSwxMjcxNiw5NywxMTQsNTksMSwxMDY0Niw0LDMsNTksMTAxLDEwMiwxMjcyNCwxMjcyNiwxMjcyOSwxLDk2NjcsNTksMSw4ODg0LDU5LDEsOTY2NiwxMTQsNCwyLDEwMCwxMTcsMTI3MzksMTI3NDYsMTE1LDEwNCw5NywxMTQsNTksMSwxMDU3MCwxMDQsOTcsMTE0LDU5LDEsMTA1OTgsNCwyLDEwMSwxMTAsMTI3NTgsMTI3NjgsMTE0LDExNiwxMTAsMTAxLDExMywxMTMsNTksMyw4ODA4LDY1MDI0LDY5LDU5LDMsODgwOCw2NTAyNCw0LDE0LDY4LDk3LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDExMCwxMTEsMTEyLDExNSwxMTcsMTI4MDMsMTI4MDksMTI4OTMsMTI5MDgsMTI5MTQsMTI5MjgsMTI5MzMsMTI5MzcsMTMwMTEsMTMwMjUsMTMwMzIsMTMwNDksMTMwNTIsMTMwNjksNjgsMTExLDExNiw1OSwxLDg3NjIsNCw0LDk5LDEwOCwxMTIsMTE0LDEyODE5LDEyODI3LDEyODQ5LDEyODg3LDExNCw1LDE3NSwxLDU5LDEyODI1LDEsMTc1LDQsMiwxMDEsMTE2LDEyODMzLDEyODM2LDU5LDEsOTc5NCw0LDIsNTksMTAxLDEyODQyLDEyODQ0LDEsMTAwMTYsMTE1LDEwMSw1OSwxLDEwMDE2LDQsMiw1OSwxMTUsMTI4NTUsMTI4NTcsMSw4NjE0LDExNiwxMTEsNCw0LDU5LDEwMCwxMDgsMTE3LDEyODY5LDEyODcxLDEyODc3LDEyODgzLDEsODYxNCwxMTEsMTE5LDExMCw1OSwxLDg2MTUsMTAxLDEwMiwxMTYsNTksMSw4NjEyLDExMiw1OSwxLDg2MTMsMTA3LDEwMSwxMTQsNTksMSw5NjQ2LDQsMiwxMTEsMTIxLDEyODk5LDEyOTA1LDEwOSwxMDksOTcsNTksMSwxMDc5Myw1OSwxLDEwODQsOTcsMTE1LDEwNCw1OSwxLDgyMTIsOTcsMTE1LDExNywxMTQsMTAxLDEwMCw5NywxMTAsMTAzLDEwOCwxMDEsNTksMSw4NzM3LDExNCw1OSwzLDU1MzQ5LDU2NjE4LDExMSw1OSwxLDg0ODcsNCwzLDk5LDEwMCwxMTAsMTI5NDUsMTI5NTQsMTI5ODUsMTE0LDExMSw1LDE4MSwxLDU5LDEyOTUyLDEsMTgxLDQsNCw1OSw5Nyw5OSwxMDAsMTI5NjQsMTI5NjYsMTI5NzEsMTI5NzYsMSw4NzM5LDExNSwxMTYsNTksMSw0MiwxMDUsMTE0LDU5LDEsMTA5OTIsMTExLDExNiw1LDE4MywxLDU5LDEyOTgzLDEsMTgzLDExNywxMTUsNCwzLDU5LDk4LDEwMCwxMjk5NSwxMjk5NywxMzAwMCwxLDg3MjIsNTksMSw4ODYzLDQsMiw1OSwxMTcsMTMwMDYsMTMwMDgsMSw4NzYwLDU5LDEsMTA3OTQsNCwyLDk5LDEwMCwxMzAxNywxMzAyMSwxMTIsNTksMSwxMDk3MSwxMTQsNTksMSw4MjMwLDExMiwxMDgsMTE3LDExNSw1OSwxLDg3MjMsNCwyLDEwMCwxMTIsMTMwMzgsMTMwNDQsMTAxLDEwOCwxMTUsNTksMSw4ODcxLDEwMiw1OSwzLDU1MzQ5LDU2NjcwLDU5LDEsODcyMyw0LDIsOTksMTE2LDEzMDU4LDEzMDYzLDExNCw1OSwzLDU1MzQ5LDU2NTE0LDExMiwxMTEsMTE1LDU5LDEsODc2Niw0LDMsNTksMTA4LDEwOSwxMzA3NywxMzA3OSwxMzA4NywxLDk1NiwxMTYsMTA1LDEwOSw5NywxMTIsNTksMSw4ODg4LDk3LDExMiw1OSwxLDg4ODgsNCwyNCw3MSw3Niw4Miw4Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA4LDEwOSwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEzMTQyLDEzMTY1LDEzMjE3LDEzMjI5LDEzMjQ3LDEzMzMwLDEzMzU5LDEzNDE0LDEzNDIwLDEzNTA4LDEzNTEzLDEzNTc5LDEzNjAyLDEzNjI2LDEzNjMxLDEzNzYyLDEzNzY3LDEzODU1LDEzOTM2LDEzOTk1LDE0MjE0LDE0Mjg1LDE0MzEyLDE0NDMyLDQsMiwxMDMsMTE2LDEzMTQ4LDEzMTUyLDU5LDMsODkyMSw4MjQsNCwyLDU5LDExOCwxMzE1OCwxMzE2MSwzLDg4MTEsODQwMiw1OSwzLDg4MTEsODI0LDQsMywxMDEsMTA4LDExNiwxMzE3MywxMzIwMCwxMzIwNCwxMDIsMTE2LDQsMiw5NywxMTQsMTMxODEsMTMxODgsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1MywxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1NCw1OSwzLDg5MjAsODI0LDQsMiw1OSwxMTgsMTMyMTAsMTMyMTMsMyw4ODEwLDg0MDIsNTksMyw4ODEwLDgyNCwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1NSw0LDIsNjgsMTAwLDEzMjM1LDEzMjQxLDk3LDExNSwxMDQsNTksMSw4ODc5LDk3LDExNSwxMDQsNTksMSw4ODc4LDQsNSw5OCw5OSwxMTAsMTEyLDExNiwxMzI1OSwxMzI2NCwxMzI3MCwxMzI3NSwxMzMwOCwxMDgsOTcsNTksMSw4NzExLDExNywxMTYsMTAxLDU5LDEsMzI0LDEwMyw1OSwzLDg3MzYsODQwMiw0LDUsNTksNjksMTA1LDExMSwxMTIsMTMyODcsMTMyODksMTMyOTMsMTMyOTgsMTMzMDIsMSw4Nzc3LDU5LDMsMTA4NjQsODI0LDEwMCw1OSwzLDg3NzksODI0LDExNSw1OSwxLDMyOSwxMTQsMTExLDEyMCw1OSwxLDg3NzcsMTE3LDExNCw0LDIsNTksOTcsMTMzMTYsMTMzMTgsMSw5ODM4LDEwOCw0LDIsNTksMTE1LDEzMzI1LDEzMzI3LDEsOTgzOCw1OSwxLDg0NjksNCwyLDExNSwxMTcsMTMzMzYsMTMzNDQsMTEyLDUsMTYwLDEsNTksMTMzNDIsMSwxNjAsMTA5LDExMiw0LDIsNTksMTAxLDEzMzUyLDEzMzU1LDMsODc4Miw4MjQsNTksMyw4NzgzLDgyNCw0LDUsOTcsMTAxLDExMSwxMTcsMTIxLDEzMzcxLDEzMzg1LDEzMzkxLDEzNDA3LDEzNDExLDQsMiwxMTIsMTE0LDEzMzc3LDEzMzgwLDU5LDEsMTA4MTksMTExLDExMCw1OSwxLDMyOCwxMDAsMTA1LDEwOCw1OSwxLDMyNiwxMTAsMTAzLDQsMiw1OSwxMDAsMTMzOTksMTM0MDEsMSw4Nzc1LDExMSwxMTYsNTksMywxMDg2MSw4MjQsMTEyLDU5LDEsMTA4MTgsNTksMSwxMDg1LDk3LDExNSwxMDQsNTksMSw4MjExLDQsNyw1OSw2NSw5NywxMDAsMTEzLDExNSwxMjAsMTM0MzYsMTM0MzgsMTM0NDMsMTM0NjYsMTM0NzIsMTM0NzgsMTM0OTQsMSw4ODAwLDExNCwxMTQsNTksMSw4NjYzLDExNCw0LDIsMTA0LDExNCwxMzQ1MCwxMzQ1NCwxMDcsNTksMSwxMDUzMiw0LDIsNTksMTExLDEzNDYwLDEzNDYyLDEsODU5OSwxMTksNTksMSw4NTk5LDExMSwxMTYsNTksMyw4Nzg0LDgyNCwxMTcsMTA1LDExOCw1OSwxLDg4MDIsNCwyLDEwMSwxMDUsMTM0ODQsMTM0ODksOTcsMTE0LDU5LDEsMTA1MzYsMTA5LDU5LDMsODc3MCw4MjQsMTA1LDExNSwxMTYsNCwyLDU5LDExNSwxMzUwMywxMzUwNSwxLDg3MDgsNTksMSw4NzA4LDExNCw1OSwzLDU1MzQ5LDU2NjE5LDQsNCw2OSwxMDEsMTE1LDExNiwxMzUyMywxMzUyNywxMzU2MywxMzU2OCw1OSwzLDg4MDcsODI0LDQsMyw1OSwxMTMsMTE1LDEzNTM1LDEzNTM3LDEzNTU5LDEsODgxNyw0LDMsNTksMTEzLDExNSwxMzU0NSwxMzU0NywxMzU1MSwxLDg4MTcsNTksMyw4ODA3LDgyNCwxMDgsOTcsMTEwLDExNiw1OSwzLDEwODc4LDgyNCw1OSwzLDEwODc4LDgyNCwxMDUsMTA5LDU5LDEsODgyMSw0LDIsNTksMTE0LDEzNTc0LDEzNTc2LDEsODgxNSw1OSwxLDg4MTUsNCwzLDY1LDk3LDExMiwxMzU4NywxMzU5MiwxMzU5NywxMTQsMTE0LDU5LDEsODY1NCwxMTQsMTE0LDU5LDEsODYyMiw5NywxMTQsNTksMSwxMDk5NCw0LDMsNTksMTE1LDExOCwxMzYxMCwxMzYxMiwxMzYyMywxLDg3MTUsNCwyLDU5LDEwMCwxMzYxOCwxMzYyMCwxLDg5NTYsNTksMSw4OTU0LDU5LDEsODcxNSw5OSwxMjEsNTksMSwxMTE0LDQsNyw2NSw2OSw5NywxMDAsMTAxLDExNSwxMTYsMTM2NDcsMTM2NTIsMTM2NTYsMTM2NjEsMTM2NjUsMTM3MzcsMTM3NDIsMTE0LDExNCw1OSwxLDg2NTMsNTksMyw4ODA2LDgyNCwxMTQsMTE0LDU5LDEsODYwMiwxMTQsNTksMSw4MjI5LDQsNCw1OSwxMDIsMTEzLDExNSwxMzY3NSwxMzY3NywxMzcwMywxMzcyNSwxLDg4MTYsMTE2LDQsMiw5NywxMTQsMTM2ODQsMTM2OTEsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwMiwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYyMiw0LDMsNTksMTEzLDExNSwxMzcxMSwxMzcxMywxMzcxNywxLDg4MTYsNTksMyw4ODA2LDgyNCwxMDgsOTcsMTEwLDExNiw1OSwzLDEwODc3LDgyNCw0LDIsNTksMTE1LDEzNzMxLDEzNzM0LDMsMTA4NzcsODI0LDU5LDEsODgxNCwxMDUsMTA5LDU5LDEsODgyMCw0LDIsNTksMTE0LDEzNzQ4LDEzNzUwLDEsODgxNCwxMDUsNCwyLDU5LDEwMSwxMzc1NywxMzc1OSwxLDg5MzgsNTksMSw4OTQwLDEwNSwxMDAsNTksMSw4NzQwLDQsMiwxMTIsMTE2LDEzNzczLDEzNzc4LDEwMiw1OSwzLDU1MzQ5LDU2NjcxLDUsMTcyLDMsNTksMTA1LDExMCwxMzc4NywxMzc4OSwxMzgyOSwxLDE3MiwxMTAsNCw0LDU5LDY5LDEwMCwxMTgsMTM4MDAsMTM4MDIsMTM4MDYsMTM4MTIsMSw4NzEzLDU5LDMsODk1Myw4MjQsMTExLDExNiw1OSwzLDg5NDksODI0LDQsMyw5Nyw5OCw5OSwxMzgyMCwxMzgyMywxMzgyNiw1OSwxLDg3MTMsNTksMSw4OTUxLDU5LDEsODk1MCwxMDUsNCwyLDU5LDExOCwxMzgzNiwxMzgzOCwxLDg3MTYsNCwzLDk3LDk4LDk5LDEzODQ2LDEzODQ5LDEzODUyLDU5LDEsODcxNiw1OSwxLDg5NTgsNTksMSw4OTU3LDQsMyw5NywxMTEsMTE0LDEzODYzLDEzODkyLDEzODk5LDExNCw0LDQsNTksOTcsMTE1LDExNiwxMzg3NCwxMzg3NiwxMzg4MywxMzg4OCwxLDg3NDIsMTA4LDEwOCwxMDEsMTA4LDU5LDEsODc0MiwxMDgsNTksMywxMTAwNSw4NDIxLDU5LDMsODcwNiw4MjQsMTA4LDEwNSwxMTAsMTE2LDU5LDEsMTA3NzIsNCwzLDU5LDk5LDEwMSwxMzkwNywxMzkwOSwxMzkxNCwxLDg4MzIsMTE3LDEwMSw1OSwxLDg5MjgsNCwyLDU5LDk5LDEzOTIwLDEzOTIzLDMsMTA5MjcsODI0LDQsMiw1OSwxMDEsMTM5MjksMTM5MzEsMSw4ODMyLDExMyw1OSwzLDEwOTI3LDgyNCw0LDQsNjUsOTcsMTA1LDExNiwxMzk0NiwxMzk1MSwxMzk3MSwxMzk4MiwxMTQsMTE0LDU5LDEsODY1NSwxMTQsMTE0LDQsMyw1OSw5OSwxMTksMTM5NjEsMTM5NjMsMTM5NjcsMSw4NjAzLDU5LDMsMTA1NDcsODI0LDU5LDMsODYwNSw4MjQsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwMywxMTQsMTA1LDQsMiw1OSwxMDEsMTM5OTAsMTM5OTIsMSw4OTM5LDU5LDEsODk0MSw0LDcsOTksMTA0LDEwNSwxMDksMTEyLDExMywxMTcsMTQwMTEsMTQwMzYsMTQwNjAsMTQwODAsMTQwODUsMTQwOTAsMTQxMDYsNCw0LDU5LDk5LDEwMSwxMTQsMTQwMjEsMTQwMjMsMTQwMjgsMTQwMzIsMSw4ODMzLDExNywxMDEsNTksMSw4OTI5LDU5LDMsMTA5MjgsODI0LDU5LDMsNTUzNDksNTY1MTUsMTExLDExNCwxMTYsNCwyLDEwOSwxMTIsMTQwNDUsMTQwNTAsMTA1LDEwMCw1OSwxLDg3NDAsOTcsMTE0LDk3LDEwOCwxMDgsMTAxLDEwOCw1OSwxLDg3NDIsMTA5LDQsMiw1OSwxMDEsMTQwNjcsMTQwNjksMSw4NzY5LDQsMiw1OSwxMTMsMTQwNzUsMTQwNzcsMSw4NzcyLDU5LDEsODc3MiwxMDUsMTAwLDU5LDEsODc0MCw5NywxMTQsNTksMSw4NzQyLDExNSwxMTcsNCwyLDk4LDExMiwxNDA5OCwxNDEwMiwxMDEsNTksMSw4OTMwLDEwMSw1OSwxLDg5MzEsNCwzLDk4LDk5LDExMiwxNDExNCwxNDE1NywxNDE3MSw0LDQsNTksNjksMTAxLDExNSwxNDEyNCwxNDEyNiwxNDEzMCwxNDEzMywxLDg4MzYsNTksMywxMDk0OSw4MjQsNTksMSw4ODQwLDEwMSwxMTYsNCwyLDU5LDEwMSwxNDE0MSwxNDE0NCwzLDg4MzQsODQwMiwxMTMsNCwyLDU5LDExMywxNDE1MSwxNDE1MywxLDg4NDAsNTksMywxMDk0OSw4MjQsOTksNCwyLDU5LDEwMSwxNDE2NCwxNDE2NiwxLDg4MzMsMTEzLDU5LDMsMTA5MjgsODI0LDQsNCw1OSw2OSwxMDEsMTE1LDE0MTgxLDE0MTgzLDE0MTg3LDE0MTkwLDEsODgzNyw1OSwzLDEwOTUwLDgyNCw1OSwxLDg4NDEsMTAxLDExNiw0LDIsNTksMTAxLDE0MTk4LDE0MjAxLDMsODgzNSw4NDAyLDExMyw0LDIsNTksMTEzLDE0MjA4LDE0MjEwLDEsODg0MSw1OSwzLDEwOTUwLDgyNCw0LDQsMTAzLDEwNSwxMDgsMTE0LDE0MjI0LDE0MjI4LDE0MjM4LDE0MjQyLDEwOCw1OSwxLDg4MjUsMTA4LDEwMCwxMDEsNSwyNDEsMSw1OSwxNDIzNiwxLDI0MSwxMDMsNTksMSw4ODI0LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwyLDEwOCwxMTQsMTQyNTQsMTQyNjksMTAxLDEwMiwxMTYsNCwyLDU5LDEwMSwxNDI2MywxNDI2NSwxLDg5MzgsMTEzLDU5LDEsODk0MCwxMDUsMTAzLDEwNCwxMTYsNCwyLDU5LDEwMSwxNDI3OSwxNDI4MSwxLDg5MzksMTEzLDU5LDEsODk0MSw0LDIsNTksMTA5LDE0MjkxLDE0MjkzLDEsOTU3LDQsMyw1OSwxMDEsMTE1LDE0MzAxLDE0MzAzLDE0MzA4LDEsMzUsMTE0LDExMSw1OSwxLDg0NzAsMTEyLDU5LDEsODE5OSw0LDksNjgsNzIsOTcsMTAwLDEwMywxMDUsMTA4LDExNCwxMTUsMTQzMzIsMTQzMzgsMTQzNDQsMTQzNDksMTQzNTUsMTQzNjksMTQzNzYsMTQ0MDgsMTQ0MjYsOTcsMTE1LDEwNCw1OSwxLDg4NzcsOTcsMTE0LDExNCw1OSwxLDEwNTAwLDExMiw1OSwzLDg3ODEsODQwMiw5NywxMTUsMTA0LDU5LDEsODg3Niw0LDIsMTAxLDExNiwxNDM2MSwxNDM2NSw1OSwzLDg4MDUsODQwMiw1OSwzLDYyLDg0MDIsMTEwLDEwMiwxMDUsMTEwLDU5LDEsMTA3MTgsNCwzLDY1LDEwMSwxMTYsMTQzODQsMTQzODksMTQzOTMsMTE0LDExNCw1OSwxLDEwNDk4LDU5LDMsODgwNCw4NDAyLDQsMiw1OSwxMTQsMTQzOTksMTQ0MDIsMyw2MCw4NDAyLDEwNSwxMDEsNTksMyw4ODg0LDg0MDIsNCwyLDY1LDExNiwxNDQxNCwxNDQxOSwxMTQsMTE0LDU5LDEsMTA0OTksMTE0LDEwNSwxMDEsNTksMyw4ODg1LDg0MDIsMTA1LDEwOSw1OSwzLDg3NjQsODQwMiw0LDMsNjUsOTcsMTEwLDE0NDQwLDE0NDQ1LDE0NDY4LDExNCwxMTQsNTksMSw4NjYyLDExNCw0LDIsMTA0LDExNCwxNDQ1MiwxNDQ1NiwxMDcsNTksMSwxMDUzMSw0LDIsNTksMTExLDE0NDYyLDE0NDY0LDEsODU5OCwxMTksNTksMSw4NTk4LDEwMSw5NywxMTQsNTksMSwxMDUzNSw0LDE4LDgzLDk3LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwOCwxMDksMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE4LDE0NTEyLDE0NTE1LDE0NTM1LDE0NTYwLDE0NTk3LDE0NjAzLDE0NjE4LDE0NjQzLDE0NjU3LDE0NjYyLDE0NzAxLDE0NzQxLDE0NzQ3LDE0NzY5LDE0ODUxLDE0ODc3LDE0OTA3LDE0OTE2LDU5LDEsOTQxNiw0LDIsOTksMTE1LDE0NTIxLDE0NTMxLDExNywxMTYsMTAxLDUsMjQzLDEsNTksMTQ1MjksMSwyNDMsMTE2LDU5LDEsODg1OSw0LDIsMTA1LDEyMSwxNDU0MSwxNDU1NywxMTQsNCwyLDU5LDk5LDE0NTQ4LDE0NTUwLDEsODg1OCw1LDI0NCwxLDU5LDE0NTU1LDEsMjQ0LDU5LDEsMTA4Niw0LDUsOTcsOTgsMTA1LDExMSwxMTUsMTQ1NzIsMTQ1NzcsMTQ1ODMsMTQ1ODcsMTQ1OTEsMTE1LDEwNCw1OSwxLDg4NjEsMTA4LDk3LDk5LDU5LDEsMzM3LDExOCw1OSwxLDEwODA4LDExNiw1OSwxLDg4NTcsMTExLDEwOCwxMDAsNTksMSwxMDY4NCwxMDgsMTA1LDEwMyw1OSwxLDMzOSw0LDIsOTksMTE0LDE0NjA5LDE0NjE0LDEwNSwxMTQsNTksMSwxMDY4Nyw1OSwzLDU1MzQ5LDU2NjIwLDQsMywxMTEsMTE0LDExNiwxNDYyNiwxNDYzMCwxNDY0MCwxMTAsNTksMSw3MzEsOTcsMTE4LDEwMSw1LDI0MiwxLDU5LDE0NjM4LDEsMjQyLDU5LDEsMTA2ODksNCwyLDk4LDEwOSwxNDY0OSwxNDY1NCw5NywxMTQsNTksMSwxMDY3Nyw1OSwxLDkzNywxMTAsMTE2LDU5LDEsODc1MCw0LDQsOTcsOTksMTA1LDExNiwxNDY3MiwxNDY3NywxNDY5MywxNDY5OCwxMTQsMTE0LDU5LDEsODYzNCw0LDIsMTA1LDExNCwxNDY4MywxNDY4NywxMTQsNTksMSwxMDY4NiwxMTEsMTE1LDExNSw1OSwxLDEwNjgzLDExMCwxMDEsNTksMSw4MjU0LDU5LDEsMTA2ODgsNCwzLDk3LDEwMSwxMDUsMTQ3MDksMTQ3MTQsMTQ3MTksOTksMTE0LDU5LDEsMzMzLDEwMyw5Nyw1OSwxLDk2OSw0LDMsOTksMTAwLDExMCwxNDcyNywxNDczMywxNDczNiwxMTQsMTExLDExMCw1OSwxLDk1OSw1OSwxLDEwNjc4LDExNywxMTUsNTksMSw4ODU0LDExMiwxMDIsNTksMyw1NTM0OSw1NjY3Miw0LDMsOTcsMTAxLDEwOCwxNDc1NSwxNDc1OSwxNDc2NCwxMTQsNTksMSwxMDY3OSwxMTQsMTEyLDU5LDEsMTA2ODEsMTE3LDExNSw1OSwxLDg4NTMsNCw3LDU5LDk3LDEwMCwxMDUsMTExLDExNSwxMTgsMTQ3ODUsMTQ3ODcsMTQ3OTIsMTQ4MzEsMTQ4MzcsMTQ4NDEsMTQ4NDgsMSw4NzQ0LDExNCwxMTQsNTksMSw4NjM1LDQsNCw1OSwxMDEsMTAyLDEwOSwxNDgwMiwxNDgwNCwxNDgxNywxNDgyNCwxLDEwODQ1LDExNCw0LDIsNTksMTExLDE0ODExLDE0ODEzLDEsODUwMCwxMDIsNTksMSw4NTAwLDUsMTcwLDEsNTksMTQ4MjIsMSwxNzAsNSwxODYsMSw1OSwxNDgyOSwxLDE4NiwxMDMsMTExLDEwMiw1OSwxLDg4ODYsMTE0LDU5LDEsMTA4MzgsMTA4LDExMSwxMTIsMTAxLDU5LDEsMTA4MzksNTksMSwxMDg0Myw0LDMsOTksMTA4LDExMSwxNDg1OSwxNDg2MywxNDg3MywxMTQsNTksMSw4NTAwLDk3LDExNSwxMDQsNSwyNDgsMSw1OSwxNDg3MSwxLDI0OCwxMDgsNTksMSw4ODU2LDEwNSw0LDIsMTA4LDEwOSwxNDg4NCwxNDg5MywxMDAsMTAxLDUsMjQ1LDEsNTksMTQ4OTEsMSwyNDUsMTAxLDExNSw0LDIsNTksOTcsMTQ5MDEsMTQ5MDMsMSw4ODU1LDExNSw1OSwxLDEwODA2LDEwOSwxMDgsNSwyNDYsMSw1OSwxNDkxNCwxLDI0Niw5OCw5NywxMTQsNTksMSw5MDIxLDQsMTIsOTcsOTksMTAxLDEwMiwxMDQsMTA1LDEwOCwxMDksMTExLDExNCwxMTUsMTE3LDE0OTQ4LDE0OTkyLDE0OTk2LDE1MDMzLDE1MDM4LDE1MDY4LDE1MDkwLDE1MTg5LDE1MTkyLDE1MjIyLDE1NDI3LDE1NDQxLDExNCw0LDQsNTksOTcsMTE1LDExNiwxNDk1OSwxNDk2MSwxNDk3NiwxNDk4OSwxLDg3NDEsNSwxODIsMiw1OSwxMDgsMTQ5NjgsMTQ5NzAsMSwxODIsMTA4LDEwMSwxMDgsNTksMSw4NzQxLDQsMiwxMDUsMTA4LDE0OTgyLDE0OTg2LDEwOSw1OSwxLDEwOTk1LDU5LDEsMTEwMDUsNTksMSw4NzA2LDEyMSw1OSwxLDEwODcsMTE0LDQsNSw5OSwxMDUsMTA5LDExMiwxMTYsMTUwMDksMTUwMTQsMTUwMTksMTUwMjQsMTUwMjcsMTEwLDExNiw1OSwxLDM3LDExMSwxMDAsNTksMSw0NiwxMDUsMTA4LDU5LDEsODI0MCw1OSwxLDg4NjksMTAxLDExMCwxMDcsNTksMSw4MjQxLDExNCw1OSwzLDU1MzQ5LDU2NjIxLDQsMywxMDUsMTA5LDExMSwxNTA0NiwxNTA1NywxNTA2Myw0LDIsNTksMTE4LDE1MDUyLDE1MDU0LDEsOTY2LDU5LDEsOTgxLDEwOSw5NywxMTYsNTksMSw4NDk5LDExMCwxMDEsNTksMSw5NzQyLDQsMyw1OSwxMTYsMTE4LDE1MDc2LDE1MDc4LDE1MDg3LDEsOTYwLDk5LDEwNCwxMDIsMTExLDExNCwxMDcsNTksMSw4OTE2LDU5LDEsOTgyLDQsMiw5NywxMTcsMTUwOTYsMTUxMTksMTEwLDQsMiw5OSwxMDcsMTUxMDMsMTUxMTUsMTA3LDQsMiw1OSwxMDQsMTUxMTAsMTUxMTIsMSw4NDYzLDU5LDEsODQ2MiwxMTgsNTksMSw4NDYzLDExNSw0LDksNTksOTcsOTgsOTksMTAwLDEwMSwxMDksMTE1LDExNiwxNTE0MCwxNTE0MiwxNTE0OCwxNTE1MSwxNTE1NiwxNTE2OCwxNTE3MSwxNTE3OSwxNTE4NCwxLDQzLDk5LDEwNSwxMTQsNTksMSwxMDc4Nyw1OSwxLDg4NjIsMTA1LDExNCw1OSwxLDEwNzg2LDQsMiwxMTEsMTE3LDE1MTYyLDE1MTY1LDU5LDEsODcyNCw1OSwxLDEwNzg5LDU5LDEsMTA4NjYsMTEwLDUsMTc3LDEsNTksMTUxNzcsMSwxNzcsMTA1LDEwOSw1OSwxLDEwNzkwLDExOSwxMTEsNTksMSwxMDc5MSw1OSwxLDE3Nyw0LDMsMTA1LDExMiwxMTcsMTUyMDAsMTUyMDgsMTUyMTMsMTEwLDExNiwxMDUsMTEwLDExNiw1OSwxLDEwNzczLDEwMiw1OSwzLDU1MzQ5LDU2NjczLDExMCwxMDAsNSwxNjMsMSw1OSwxNTIyMCwxLDE2Myw0LDEwLDU5LDY5LDk3LDk5LDEwMSwxMDUsMTEwLDExMSwxMTUsMTE3LDE1MjQ0LDE1MjQ2LDE1MjQ5LDE1MjUzLDE1MjU4LDE1MzM0LDE1MzQ3LDE1MzY3LDE1NDE2LDE1NDIxLDEsODgyNiw1OSwxLDEwOTMxLDExMiw1OSwxLDEwOTM1LDExNywxMDEsNTksMSw4ODI4LDQsMiw1OSw5OSwxNTI2NCwxNTI2NiwxLDEwOTI3LDQsNiw1OSw5Nyw5OSwxMDEsMTEwLDExNSwxNTI4MCwxNTI4MiwxNTI5MCwxNTI5OSwxNTMwMywxNTMyOSwxLDg4MjYsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDEwOTM1LDExNywxMTQsMTA4LDEyMSwxMDEsMTEzLDU5LDEsODgyOCwxMTMsNTksMSwxMDkyNyw0LDMsOTcsMTAxLDExNSwxNTMxMSwxNTMxOSwxNTMyNCwxMTIsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA5MzcsMTEzLDExMyw1OSwxLDEwOTMzLDEwNSwxMDksNTksMSw4OTM2LDEwNSwxMDksNTksMSw4ODMwLDEwOSwxMDEsNCwyLDU5LDExNSwxNTM0MiwxNTM0NCwxLDgyNDIsNTksMSw4NDczLDQsMyw2OSw5NywxMTUsMTUzNTUsMTUzNTgsMTUzNjIsNTksMSwxMDkzMywxMTIsNTksMSwxMDkzNywxMDUsMTA5LDU5LDEsODkzNiw0LDMsMTAwLDEwMiwxMTIsMTUzNzUsMTUzNzgsMTU0MDQsNTksMSw4NzE5LDQsMyw5NywxMDgsMTE1LDE1Mzg2LDE1MzkyLDE1Mzk4LDEwOCw5NywxMTQsNTksMSw5MDA2LDEwNSwxMTAsMTAxLDU5LDEsODk3OCwxMTcsMTE0LDEwMiw1OSwxLDg5NzksNCwyLDU5LDExNiwxNTQxMCwxNTQxMiwxLDg3MzMsMTExLDU5LDEsODczMywxMDUsMTA5LDU5LDEsODgzMCwxMTQsMTAxLDEwOCw1OSwxLDg4ODAsNCwyLDk5LDEwNSwxNTQzMywxNTQzOCwxMTQsNTksMyw1NTM0OSw1NjUxNyw1OSwxLDk2OCwxMTAsOTksMTE1LDExMiw1OSwxLDgyMDAsNCw2LDEwMiwxMDUsMTExLDExMiwxMTUsMTE3LDE1NDYyLDE1NDY3LDE1NDcyLDE1NDc4LDE1NDg1LDE1NDkxLDExNCw1OSwzLDU1MzQ5LDU2NjIyLDExMCwxMTYsNTksMSwxMDc2NCwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NzQsMTE0LDEwNSwxMDksMTAxLDU5LDEsODI3OSw5OSwxMTQsNTksMyw1NTM0OSw1NjUxOCw0LDMsOTcsMTAxLDExMSwxNTQ5OSwxNTUyMCwxNTUzNCwxMTYsNCwyLDEwMSwxMDUsMTU1MDYsMTU1MTUsMTE0LDExMCwxMDUsMTExLDExMCwxMTUsNTksMSw4NDYxLDExMCwxMTYsNTksMSwxMDc3NCwxMTUsMTE2LDQsMiw1OSwxMDEsMTU1MjgsMTU1MzAsMSw2MywxMTMsNTksMSw4Nzk5LDExNiw1LDM0LDEsNTksMTU1NDAsMSwzNCw0LDIxLDY1LDY2LDcyLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDEwOSwxMTAsMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTIwLDE1NTg2LDE1NjA5LDE1NjE1LDE1NjIwLDE1Nzk2LDE1ODU1LDE1ODkzLDE1OTMxLDE1OTc3LDE2MDAxLDE2MDM5LDE2MTgzLDE2MjA0LDE2MjIyLDE2MjI4LDE2Mjg1LDE2MzEyLDE2MzE4LDE2MzYzLDE2NDA4LDE2NDE2LDQsMyw5NywxMTQsMTE2LDE1NTk0LDE1NTk5LDE1NjAzLDExNCwxMTQsNTksMSw4NjY3LDExNCw1OSwxLDg2NTgsOTcsMTA1LDEwOCw1OSwxLDEwNTI0LDk3LDExNCwxMTQsNTksMSwxMDUxMSw5NywxMTQsNTksMSwxMDU5Niw0LDcsOTksMTAwLDEwMSwxMTAsMTEzLDExNCwxMTYsMTU2MzYsMTU2NTEsMTU2NTYsMTU2NjQsMTU2ODcsMTU2OTYsMTU3NzAsNCwyLDEwMSwxMTcsMTU2NDIsMTU2NDYsNTksMyw4NzY1LDgxNywxMTYsMTAxLDU5LDEsMzQxLDEwNSw5OSw1OSwxLDg3MzAsMTA5LDExMiwxMTYsMTIxLDExOCw1OSwxLDEwNjc1LDEwMyw0LDQsNTksMTAwLDEwMSwxMDgsMTU2NzUsMTU2NzcsMTU2ODAsMTU2ODMsMSwxMDIxNyw1OSwxLDEwNjQyLDU5LDEsMTA2NjEsMTAxLDU5LDEsMTAyMTcsMTE3LDExMSw1LDE4NywxLDU5LDE1Njk0LDEsMTg3LDExNCw0LDExLDU5LDk3LDk4LDk5LDEwMiwxMDQsMTA4LDExMiwxMTUsMTE2LDExOSwxNTcyMSwxNTcyMywxNTcyNywxNTczOSwxNTc0MiwxNTc0NiwxNTc1MCwxNTc1NCwxNTc1OCwxNTc2MywxNTc2NywxLDg1OTQsMTEyLDU5LDEsMTA2MTMsNCwyLDU5LDEwMiwxNTczMywxNTczNSwxLDg2NzcsMTE1LDU5LDEsMTA1MjgsNTksMSwxMDU0NywxMTUsNTksMSwxMDUyNiwxMDcsNTksMSw4NjE4LDExMiw1OSwxLDg2MjAsMTA4LDU5LDEsMTA1NjUsMTA1LDEwOSw1OSwxLDEwNjEyLDEwOCw1OSwxLDg2MTEsNTksMSw4NjA1LDQsMiw5NywxMDUsMTU3NzYsMTU3ODEsMTA1LDEwOCw1OSwxLDEwNTIyLDExMSw0LDIsNTksMTEwLDE1Nzg4LDE1NzkwLDEsODc1OCw5NywxMDgsMTE1LDU5LDEsODQ3NCw0LDMsOTcsOTgsMTE0LDE1ODA0LDE1ODA5LDE1ODE0LDExNCwxMTQsNTksMSwxMDUwOSwxMTQsMTA3LDU5LDEsMTAwOTksNCwyLDk3LDEwNywxNTgyMCwxNTgzMyw5OSw0LDIsMTAxLDEwNywxNTgyNywxNTgzMCw1OSwxLDEyNSw1OSwxLDkzLDQsMiwxMDEsMTE1LDE1ODM5LDE1ODQyLDU5LDEsMTA2MzYsMTA4LDQsMiwxMDAsMTE3LDE1ODQ5LDE1ODUyLDU5LDEsMTA2MzgsNTksMSwxMDY0MCw0LDQsOTcsMTAxLDExNywxMjEsMTU4NjUsMTU4NzEsMTU4ODYsMTU4OTAsMTE0LDExMSwxMTAsNTksMSwzNDUsNCwyLDEwMCwxMDUsMTU4NzcsMTU4ODIsMTA1LDEwOCw1OSwxLDM0MywxMDgsNTksMSw4OTY5LDk4LDU5LDEsMTI1LDU5LDEsMTA4OCw0LDQsOTksMTA4LDExMywxMTUsMTU5MDMsMTU5MDcsMTU5MTQsMTU5MjcsOTcsNTksMSwxMDU1MSwxMDAsMTA0LDk3LDExNCw1OSwxLDEwNjAxLDExNywxMTEsNCwyLDU5LDExNCwxNTkyMiwxNTkyNCwxLDgyMjEsNTksMSw4MjIxLDEwNCw1OSwxLDg2MjcsNCwzLDk3LDk5LDEwMywxNTkzOSwxNTk2NiwxNTk3MCwxMDgsNCw0LDU5LDEwNSwxMTIsMTE1LDE1OTUwLDE1OTUyLDE1OTU3LDE1OTYzLDEsODQ3NiwxMTAsMTAxLDU5LDEsODQ3NSw5NywxMTQsMTE2LDU5LDEsODQ3Niw1OSwxLDg0NzcsMTE2LDU5LDEsOTY0NSw1LDE3NCwxLDU5LDE1OTc1LDEsMTc0LDQsMywxMDUsMTA4LDExNCwxNTk4NSwxNTk5MSwxNTk5NywxMTUsMTA0LDExNiw1OSwxLDEwNjIxLDExMSwxMTEsMTE0LDU5LDEsODk3MSw1OSwzLDU1MzQ5LDU2NjIzLDQsMiw5NywxMTEsMTYwMDcsMTYwMjgsMTE0LDQsMiwxMDAsMTE3LDE2MDE0LDE2MDE3LDU5LDEsODY0MSw0LDIsNTksMTA4LDE2MDIzLDE2MDI1LDEsODY0MCw1OSwxLDEwNjA0LDQsMiw1OSwxMTgsMTYwMzQsMTYwMzYsMSw5NjEsNTksMSwxMDA5LDQsMywxMDMsMTEwLDExNSwxNjA0NywxNjE2NywxNjE3MSwxMDQsMTE2LDQsNiw5NywxMDQsMTA4LDExNCwxMTUsMTE2LDE2MDYzLDE2MDgxLDE2MTAzLDE2MTMwLDE2MTQzLDE2MTU1LDExNCwxMTQsMTExLDExOSw0LDIsNTksMTE2LDE2MDczLDE2MDc1LDEsODU5NCw5NywxMDUsMTA4LDU5LDEsODYxMSw5NywxMTQsMTEyLDExMSwxMTEsMTEwLDQsMiwxMDAsMTE3LDE2MDkzLDE2MDk5LDExMSwxMTksMTEwLDU5LDEsODY0MSwxMTIsNTksMSw4NjQwLDEwMSwxMDIsMTE2LDQsMiw5NywxMDQsMTYxMTIsMTYxMjAsMTE0LDExNCwxMTEsMTE5LDExNSw1OSwxLDg2NDQsOTcsMTE0LDExMiwxMTEsMTExLDExMCwxMTUsNTksMSw4NjUyLDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksMTE1LDU5LDEsODY0OSwxMTMsMTE3LDEwNSwxMDMsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwNSwxMDQsMTE0LDEwMSwxMDEsMTE2LDEwNSwxMDksMTAxLDExNSw1OSwxLDg5MDgsMTAzLDU5LDEsNzMwLDEwNSwxMTAsMTAzLDEwMCwxMTEsMTE2LDExNSwxMDEsMTEzLDU5LDEsODc4Nyw0LDMsOTcsMTA0LDEwOSwxNjE5MSwxNjE5NiwxNjIwMSwxMTQsMTE0LDU5LDEsODY0NCw5NywxMTQsNTksMSw4NjUyLDU5LDEsODIwNywxMTEsMTE3LDExNSwxMTYsNCwyLDU5LDk3LDE2MjE0LDE2MjE2LDEsOTEzNyw5OSwxMDQsMTAxLDU5LDEsOTEzNywxMDksMTA1LDEwMCw1OSwxLDEwOTkwLDQsNCw5Nyw5OCwxMTIsMTE2LDE2MjM4LDE2MjUyLDE2MjU3LDE2Mjc4LDQsMiwxMTAsMTE0LDE2MjQ0LDE2MjQ4LDEwMyw1OSwxLDEwMjIxLDExNCw1OSwxLDg3MDIsMTE0LDEwNyw1OSwxLDEwMjE1LDQsMyw5NywxMDIsMTA4LDE2MjY1LDE2MjY5LDE2MjczLDExNCw1OSwxLDEwNjMwLDU5LDMsNTUzNDksNTY2NzUsMTE3LDExNSw1OSwxLDEwNzk4LDEwNSwxMDksMTAxLDExNSw1OSwxLDEwODA1LDQsMiw5NywxMTIsMTYyOTEsMTYzMDQsMTE0LDQsMiw1OSwxMDMsMTYyOTgsMTYzMDAsMSw0MSwxMTYsNTksMSwxMDY0NCwxMTEsMTA4LDEwNSwxMTAsMTE2LDU5LDEsMTA3NzAsOTcsMTE0LDExNCw1OSwxLDg2NDksNCw0LDk3LDk5LDEwNCwxMTMsMTYzMjgsMTYzMzQsMTYzMzksMTYzNDIsMTEzLDExNywxMTEsNTksMSw4MjUwLDExNCw1OSwzLDU1MzQ5LDU2NTE5LDU5LDEsODYyNSw0LDIsOTgsMTE3LDE2MzQ4LDE2MzUxLDU5LDEsOTMsMTExLDQsMiw1OSwxMTQsMTYzNTgsMTYzNjAsMSw4MjE3LDU5LDEsODIxNyw0LDMsMTA0LDEwNSwxMTQsMTYzNzEsMTYzNzcsMTYzODMsMTE0LDEwMSwxMDEsNTksMSw4OTA4LDEwOSwxMDEsMTE1LDU5LDEsODkwNiwxMDUsNCw0LDU5LDEwMSwxMDIsMTA4LDE2Mzk0LDE2Mzk2LDE2Mzk5LDE2NDAyLDEsOTY1Nyw1OSwxLDg4ODUsNTksMSw5NjU2LDExNiwxMTQsMTA1LDU5LDEsMTA3MDIsMTA4LDExNywxMDQsOTcsMTE0LDU5LDEsMTA2MDAsNTksMSw4NDc4LDQsMTksOTcsOTgsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMDgsMTA5LDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTksMTIyLDE2NDU5LDE2NDY2LDE2NDcyLDE2NTcyLDE2NTkwLDE2NjcyLDE2Njg3LDE2NzQ2LDE2ODQ0LDE2ODUwLDE2OTI0LDE2OTYzLDE2OTg4LDE3MTE1LDE3MTIxLDE3MTU0LDE3MjA2LDE3NjE0LDE3NjU2LDk5LDExNywxMTYsMTAxLDU5LDEsMzQ3LDExMywxMTcsMTExLDU5LDEsODIxOCw0LDEwLDU5LDY5LDk3LDk5LDEwMSwxMDUsMTEwLDExMiwxMTUsMTIxLDE2NDk0LDE2NDk2LDE2NDk5LDE2NTEzLDE2NTE4LDE2NTMxLDE2NTM2LDE2NTU2LDE2NTY0LDE2NTY5LDEsODgyNyw1OSwxLDEwOTMyLDQsMiwxMTIsMTE0LDE2NTA1LDE2NTA4LDU5LDEsMTA5MzYsMTExLDExMCw1OSwxLDM1MywxMTcsMTAxLDU5LDEsODgyOSw0LDIsNTksMTAwLDE2NTI0LDE2NTI2LDEsMTA5MjgsMTA1LDEwOCw1OSwxLDM1MSwxMTQsOTksNTksMSwzNDksNCwzLDY5LDk3LDExNSwxNjU0NCwxNjU0NywxNjU1MSw1OSwxLDEwOTM0LDExMiw1OSwxLDEwOTM4LDEwNSwxMDksNTksMSw4OTM3LDExMSwxMDgsMTA1LDExMCwxMTYsNTksMSwxMDc3MSwxMDUsMTA5LDU5LDEsODgzMSw1OSwxLDEwODksMTExLDExNiw0LDMsNTksOTgsMTAxLDE2NTgyLDE2NTg0LDE2NTg3LDEsODkwMSw1OSwxLDg4NjUsNTksMSwxMDg1NCw0LDcsNjUsOTcsOTksMTA5LDExNSwxMTYsMTIwLDE2NjA2LDE2NjExLDE2NjM0LDE2NjQyLDE2NjQ2LDE2NjUyLDE2NjY4LDExNCwxMTQsNTksMSw4NjY0LDExNCw0LDIsMTA0LDExNCwxNjYxOCwxNjYyMiwxMDcsNTksMSwxMDUzMyw0LDIsNTksMTExLDE2NjI4LDE2NjMwLDEsODYwMCwxMTksNTksMSw4NjAwLDExNiw1LDE2NywxLDU5LDE2NjQwLDEsMTY3LDEwNSw1OSwxLDU5LDExOSw5NywxMTQsNTksMSwxMDUzNywxMDksNCwyLDEwNSwxMTAsMTY2NTksMTY2NjUsMTEwLDExNywxMTUsNTksMSw4NzI2LDU5LDEsODcyNiwxMTYsNTksMSwxMDAzOCwxMTQsNCwyLDU5LDExMSwxNjY3OSwxNjY4MiwzLDU1MzQ5LDU2NjI0LDExOSwxMTAsNTksMSw4OTk0LDQsNCw5Nyw5OSwxMTEsMTIxLDE2Njk3LDE2NzAyLDE2NzE2LDE2NzM5LDExNCwxMTIsNTksMSw5ODM5LDQsMiwxMDQsMTIxLDE2NzA4LDE2NzEzLDk5LDEyMSw1OSwxLDEwOTcsNTksMSwxMDk2LDExNCwxMTYsNCwyLDEwOSwxMTIsMTY3MjQsMTY3MjksMTA1LDEwMCw1OSwxLDg3MzksOTcsMTE0LDk3LDEwOCwxMDgsMTAxLDEwOCw1OSwxLDg3NDEsNSwxNzMsMSw1OSwxNjc0NCwxLDE3Myw0LDIsMTAzLDEwOSwxNjc1MiwxNjc3MCwxMDksOTcsNCwzLDU5LDEwMiwxMTgsMTY3NjIsMTY3NjQsMTY3NjcsMSw5NjMsNTksMSw5NjIsNTksMSw5NjIsNCw4LDU5LDEwMCwxMDEsMTAzLDEwOCwxMTAsMTEyLDExNCwxNjc4OCwxNjc5MCwxNjc5NSwxNjgwNiwxNjgxNywxNjgyOCwxNjgzMiwxNjgzOCwxLDg3NjQsMTExLDExNiw1OSwxLDEwODU4LDQsMiw1OSwxMTMsMTY4MDEsMTY4MDMsMSw4NzcxLDU5LDEsODc3MSw0LDIsNTksNjksMTY4MTIsMTY4MTQsMSwxMDkxMCw1OSwxLDEwOTEyLDQsMiw1OSw2OSwxNjgyMywxNjgyNSwxLDEwOTA5LDU5LDEsMTA5MTEsMTAxLDU5LDEsODc3NCwxMDgsMTE3LDExNSw1OSwxLDEwNzg4LDk3LDExNCwxMTQsNTksMSwxMDYxMCw5NywxMTQsMTE0LDU5LDEsODU5Miw0LDQsOTcsMTAxLDEwNSwxMTYsMTY4NjAsMTY4ODMsMTY4OTEsMTY5MDQsNCwyLDEwOCwxMTUsMTY4NjYsMTY4NzgsMTA4LDExNSwxMDEsMTE2LDEwOSwxMDUsMTEwLDExNywxMTUsNTksMSw4NzI2LDEwNCwxMTIsNTksMSwxMDgwMywxMTIsOTcsMTE0LDExNSwxMDgsNTksMSwxMDcyNCw0LDIsMTAwLDEwOCwxNjg5NywxNjkwMCw1OSwxLDg3MzksMTAxLDU5LDEsODk5NSw0LDIsNTksMTAxLDE2OTEwLDE2OTEyLDEsMTA5MjIsNCwyLDU5LDExNSwxNjkxOCwxNjkyMCwxLDEwOTI0LDU5LDMsMTA5MjQsNjUwMjQsNCwzLDEwMiwxMDgsMTEyLDE2OTMyLDE2OTM4LDE2OTU4LDExNiw5OSwxMjEsNTksMSwxMTAwLDQsMiw1OSw5OCwxNjk0NCwxNjk0NiwxLDQ3LDQsMiw1OSw5NywxNjk1MiwxNjk1NCwxLDEwNjkyLDExNCw1OSwxLDkwMjMsMTAyLDU5LDMsNTUzNDksNTY2NzYsOTcsNCwyLDEwMCwxMTQsMTY5NzAsMTY5ODUsMTAxLDExNSw0LDIsNTksMTE3LDE2OTc4LDE2OTgwLDEsOTgyNCwxMDUsMTE2LDU5LDEsOTgyNCw1OSwxLDg3NDEsNCwzLDk5LDExNSwxMTcsMTY5OTYsMTcwMjgsMTcwODksNCwyLDk3LDExNywxNzAwMiwxNzAxNSwxMTIsNCwyLDU5LDExNSwxNzAwOSwxNzAxMSwxLDg4NTEsNTksMyw4ODUxLDY1MDI0LDExMiw0LDIsNTksMTE1LDE3MDIyLDE3MDI0LDEsODg1Miw1OSwzLDg4NTIsNjUwMjQsMTE3LDQsMiw5OCwxMTIsMTcwMzUsMTcwNjIsNCwzLDU5LDEwMSwxMTUsMTcwNDMsMTcwNDUsMTcwNDgsMSw4ODQ3LDU5LDEsODg0OSwxMDEsMTE2LDQsMiw1OSwxMDEsMTcwNTYsMTcwNTgsMSw4ODQ3LDExMyw1OSwxLDg4NDksNCwzLDU5LDEwMSwxMTUsMTcwNzAsMTcwNzIsMTcwNzUsMSw4ODQ4LDU5LDEsODg1MCwxMDEsMTE2LDQsMiw1OSwxMDEsMTcwODMsMTcwODUsMSw4ODQ4LDExMyw1OSwxLDg4NTAsNCwzLDU5LDk3LDEwMiwxNzA5NywxNzA5OSwxNzExMiwxLDk2MzMsMTE0LDQsMiwxMDEsMTAyLDE3MTA2LDE3MTA5LDU5LDEsOTYzMyw1OSwxLDk2NDIsNTksMSw5NjQyLDk3LDExNCwxMTQsNTksMSw4NTk0LDQsNCw5OSwxMDEsMTA5LDExNiwxNzEzMSwxNzEzNiwxNzE0MiwxNzE0OCwxMTQsNTksMyw1NTM0OSw1NjUyMCwxMTYsMTA5LDExMCw1OSwxLDg3MjYsMTA1LDEwOCwxMDEsNTksMSw4OTk1LDk3LDExNCwxMDIsNTksMSw4OTAyLDQsMiw5NywxMTQsMTcxNjAsMTcxNzIsMTE0LDQsMiw1OSwxMDIsMTcxNjcsMTcxNjksMSw5NzM0LDU5LDEsOTczMyw0LDIsOTcsMTEwLDE3MTc4LDE3MjAyLDEwNSwxMDMsMTA0LDExNiw0LDIsMTAxLDExMiwxNzE4OCwxNzE5NywxMTIsMTE1LDEwNSwxMDgsMTExLDExMCw1OSwxLDEwMTMsMTA0LDEwNSw1OSwxLDk4MSwxMTUsNTksMSwxNzUsNCw1LDk4LDk5LDEwOSwxMTAsMTEyLDE3MjE4LDE3MzUxLDE3NDIwLDE3NDIzLDE3NDI3LDQsOSw1OSw2OSwxMDAsMTAxLDEwOSwxMTAsMTEyLDExNCwxMTUsMTcyMzgsMTcyNDAsMTcyNDMsMTcyNDgsMTcyNjEsMTcyNjcsMTcyNzksMTcyODUsMTcyOTEsMSw4ODM0LDU5LDEsMTA5NDksMTExLDExNiw1OSwxLDEwOTQxLDQsMiw1OSwxMDAsMTcyNTQsMTcyNTYsMSw4ODM4LDExMSwxMTYsNTksMSwxMDk0NywxMTcsMTA4LDExNiw1OSwxLDEwOTQ1LDQsMiw2OSwxMDEsMTcyNzMsMTcyNzYsNTksMSwxMDk1NSw1OSwxLDg4NDIsMTA4LDExNywxMTUsNTksMSwxMDk0Myw5NywxMTQsMTE0LDU5LDEsMTA2MTcsNCwzLDEwMSwxMDUsMTE3LDE3Mjk5LDE3MzM1LDE3MzM5LDExNiw0LDMsNTksMTAxLDExMCwxNzMwOCwxNzMxMCwxNzMyMiwxLDg4MzQsMTEzLDQsMiw1OSwxMTMsMTczMTcsMTczMTksMSw4ODM4LDU5LDEsMTA5NDksMTAxLDExMyw0LDIsNTksMTEzLDE3MzMwLDE3MzMyLDEsODg0Miw1OSwxLDEwOTU1LDEwOSw1OSwxLDEwOTUxLDQsMiw5OCwxMTIsMTczNDUsMTczNDgsNTksMSwxMDk2NSw1OSwxLDEwOTYzLDk5LDQsNiw1OSw5Nyw5OSwxMDEsMTEwLDExNSwxNzM2NiwxNzM2OCwxNzM3NiwxNzM4NSwxNzM4OSwxNzQxNSwxLDg4MjcsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDEwOTM2LDExNywxMTQsMTA4LDEyMSwxMDEsMTEzLDU5LDEsODgyOSwxMTMsNTksMSwxMDkyOCw0LDMsOTcsMTAxLDExNSwxNzM5NywxNzQwNSwxNzQxMCwxMTIsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA5MzgsMTEzLDExMyw1OSwxLDEwOTM0LDEwNSwxMDksNTksMSw4OTM3LDEwNSwxMDksNTksMSw4ODMxLDU5LDEsODcyMSwxMDMsNTksMSw5ODM0LDQsMTMsNDksNTAsNTEsNTksNjksMTAwLDEwMSwxMDQsMTA4LDEwOSwxMTAsMTEyLDExNSwxNzQ1NSwxNzQ2MiwxNzQ2OSwxNzQ3NiwxNzQ3OCwxNzQ4MSwxNzQ5NiwxNzUwOSwxNzUyNCwxNzUzMCwxNzUzNiwxNzU0OCwxNzU1NCw1LDE4NSwxLDU5LDE3NDYwLDEsMTg1LDUsMTc4LDEsNTksMTc0NjcsMSwxNzgsNSwxNzksMSw1OSwxNzQ3NCwxLDE3OSwxLDg4MzUsNTksMSwxMDk1MCw0LDIsMTExLDExNSwxNzQ4NywxNzQ5MSwxMTYsNTksMSwxMDk0MiwxMTcsOTgsNTksMSwxMDk2OCw0LDIsNTksMTAwLDE3NTAyLDE3NTA0LDEsODgzOSwxMTEsMTE2LDU5LDEsMTA5NDgsMTE1LDQsMiwxMTEsMTE3LDE3NTE2LDE3NTIwLDEwOCw1OSwxLDEwMTg1LDk4LDU5LDEsMTA5NjcsOTcsMTE0LDExNCw1OSwxLDEwNjE5LDExNywxMDgsMTE2LDU5LDEsMTA5NDYsNCwyLDY5LDEwMSwxNzU0MiwxNzU0NSw1OSwxLDEwOTU2LDU5LDEsODg0MywxMDgsMTE3LDExNSw1OSwxLDEwOTQ0LDQsMywxMDEsMTA1LDExNywxNzU2MiwxNzU5OCwxNzYwMiwxMTYsNCwzLDU5LDEwMSwxMTAsMTc1NzEsMTc1NzMsMTc1ODUsMSw4ODM1LDExMyw0LDIsNTksMTEzLDE3NTgwLDE3NTgyLDEsODgzOSw1OSwxLDEwOTUwLDEwMSwxMTMsNCwyLDU5LDExMywxNzU5MywxNzU5NSwxLDg4NDMsNTksMSwxMDk1NiwxMDksNTksMSwxMDk1Miw0LDIsOTgsMTEyLDE3NjA4LDE3NjExLDU5LDEsMTA5NjQsNTksMSwxMDk2Niw0LDMsNjUsOTcsMTEwLDE3NjIyLDE3NjI3LDE3NjUwLDExNCwxMTQsNTksMSw4NjY1LDExNCw0LDIsMTA0LDExNCwxNzYzNCwxNzYzOCwxMDcsNTksMSwxMDUzNCw0LDIsNTksMTExLDE3NjQ0LDE3NjQ2LDEsODYwMSwxMTksNTksMSw4NjAxLDExOSw5NywxMTQsNTksMSwxMDUzOCwxMDgsMTA1LDEwMyw1LDIyMywxLDU5LDE3NjY0LDEsMjIzLDQsMTMsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMTEsMTEyLDExNCwxMTUsMTE5LDE3Njk0LDE3NzA5LDE3NzE0LDE3NzM3LDE3NzQyLDE3NzQ5LDE3NzU0LDE3ODYwLDE3OTA1LDE3OTU3LDE3OTY0LDE4MDkwLDE4MTIyLDQsMiwxMTQsMTE3LDE3NzAwLDE3NzA2LDEwMywxMDEsMTE2LDU5LDEsODk4Miw1OSwxLDk2NCwxMTQsMTA3LDU5LDEsOTE0MCw0LDMsOTcsMTAxLDEyMSwxNzcyMiwxNzcyOCwxNzczNCwxMTQsMTExLDExMCw1OSwxLDM1NywxMDAsMTA1LDEwOCw1OSwxLDM1NSw1OSwxLDEwOTAsMTExLDExNiw1OSwxLDg0MTEsMTA4LDExNCwxMDEsOTksNTksMSw4OTgxLDExNCw1OSwzLDU1MzQ5LDU2NjI1LDQsNCwxMDEsMTA1LDEwNywxMTEsMTc3NjQsMTc4MDUsMTc4MzYsMTc4NTEsNCwyLDExNCwxMTYsMTc3NzAsMTc3ODYsMTAxLDQsMiw1MiwxMDIsMTc3NzcsMTc3ODAsNTksMSw4NzU2LDExMSwxMTQsMTAxLDU5LDEsODc1Niw5Nyw0LDMsNTksMTE1LDExOCwxNzc5NSwxNzc5NywxNzgwMiwxLDk1MiwxMjEsMTA5LDU5LDEsOTc3LDU5LDEsOTc3LDQsMiw5OSwxMTAsMTc4MTEsMTc4MzEsMTA3LDQsMiw5NywxMTUsMTc4MTgsMTc4MjYsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDg3NzYsMTA1LDEwOSw1OSwxLDg3NjQsMTE1LDExMiw1OSwxLDgyMDEsNCwyLDk3LDExNSwxNzg0MiwxNzg0NiwxMTIsNTksMSw4Nzc2LDEwNSwxMDksNTksMSw4NzY0LDExNCwxMTAsNSwyNTQsMSw1OSwxNzg1OCwxLDI1NCw0LDMsMTA4LDEwOSwxMTAsMTc4NjgsMTc4NzMsMTc5MDEsMTAwLDEwMSw1OSwxLDczMiwxMDEsMTE1LDUsMjE1LDMsNTksOTgsMTAwLDE3ODg0LDE3ODg2LDE3ODk4LDEsMjE1LDQsMiw1OSw5NywxNzg5MiwxNzg5NCwxLDg4NjQsMTE0LDU5LDEsMTA4MDEsNTksMSwxMDgwMCwxMTYsNTksMSw4NzQ5LDQsMywxMDEsMTEyLDExNSwxNzkxMywxNzkxNywxNzk1Myw5Nyw1OSwxLDEwNTM2LDQsNCw1OSw5OCw5OSwxMDIsMTc5MjcsMTc5MjksMTc5MzQsMTc5MzksMSw4ODY4LDExMSwxMTYsNTksMSw5MDE0LDEwNSwxMTQsNTksMSwxMDk5Myw0LDIsNTksMTExLDE3OTQ1LDE3OTQ4LDMsNTUzNDksNTY2NzcsMTE0LDEwNyw1OSwxLDEwOTcwLDk3LDU5LDEsMTA1MzcsMTE0LDEwNSwxMDksMTAxLDU5LDEsODI0NCw0LDMsOTcsMTA1LDExMiwxNzk3MiwxNzk3NywxODA4MiwxMDAsMTAxLDU5LDEsODQ4Miw0LDcsOTcsMTAwLDEwMSwxMDksMTEyLDExNSwxMTYsMTc5OTMsMTgwNTEsMTgwNTYsMTgwNTksMTgwNjYsMTgwNzIsMTgwNzYsMTEwLDEwMywxMDgsMTAxLDQsNSw1OSwxMDAsMTA4LDExMywxMTQsMTgwMDksMTgwMTEsMTgwMTcsMTgwMzIsMTgwMzUsMSw5NjUzLDExMSwxMTksMTEwLDU5LDEsOTY2MywxMDEsMTAyLDExNiw0LDIsNTksMTAxLDE4MDI2LDE4MDI4LDEsOTY2NywxMTMsNTksMSw4ODg0LDU5LDEsODc5NiwxMDUsMTAzLDEwNCwxMTYsNCwyLDU5LDEwMSwxODA0NSwxODA0NywxLDk2NTcsMTEzLDU5LDEsODg4NSwxMTEsMTE2LDU5LDEsOTcwOCw1OSwxLDg3OTYsMTA1LDExMCwxMTcsMTE1LDU5LDEsMTA4MTAsMTA4LDExNywxMTUsNTksMSwxMDgwOSw5OCw1OSwxLDEwNzAxLDEwNSwxMDksMTAxLDU5LDEsMTA4MTEsMTAxLDEyMiwxMDUsMTE3LDEwOSw1OSwxLDkxODYsNCwzLDk5LDEwNCwxMTYsMTgwOTgsMTgxMTEsMTgxMTYsNCwyLDExNCwxMjEsMTgxMDQsMTgxMDgsNTksMyw1NTM0OSw1NjUyMSw1OSwxLDEwOTQsOTksMTIxLDU5LDEsMTExNSwxMTQsMTExLDEwNyw1OSwxLDM1OSw0LDIsMTA1LDExMSwxODEyOCwxODEzMywxMjAsMTE2LDU5LDEsODgxMiwxMDQsMTAxLDk3LDEwMCw0LDIsMTA4LDExNCwxODE0MywxODE1NCwxMDEsMTAyLDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjA2LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjA4LDQsMTgsNjUsNzIsOTcsOTgsOTksMTAwLDEwMiwxMDMsMTA0LDEwOCwxMDksMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE5LDE4MjA0LDE4MjA5LDE4MjE0LDE4MjM0LDE4MjUwLDE4MjY4LDE4MjkyLDE4MzA4LDE4MzE5LDE4MzQzLDE4Mzc5LDE4Mzk3LDE4NDEzLDE4NTA0LDE4NTQ3LDE4NTUzLDE4NTg0LDE4NjAzLDExNCwxMTQsNTksMSw4NjU3LDk3LDExNCw1OSwxLDEwNTk1LDQsMiw5OSwxMTQsMTgyMjAsMTgyMzAsMTE3LDExNiwxMDEsNSwyNTAsMSw1OSwxODIyOCwxLDI1MCwxMTQsNTksMSw4NTkzLDExNCw0LDIsOTksMTAxLDE4MjQxLDE4MjQ1LDEyMSw1OSwxLDExMTgsMTE4LDEwMSw1OSwxLDM2NSw0LDIsMTA1LDEyMSwxODI1NiwxODI2NSwxMTQsOTksNSwyNTEsMSw1OSwxODI2MywxLDI1MSw1OSwxLDEwOTEsNCwzLDk3LDk4LDEwNCwxODI3NiwxODI4MSwxODI4NywxMTQsMTE0LDU5LDEsODY0NSwxMDgsOTcsOTksNTksMSwzNjksOTcsMTE0LDU5LDEsMTA2MDYsNCwyLDEwNSwxMTQsMTgyOTgsMTgzMDQsMTE1LDEwNCwxMTYsNTksMSwxMDYyMiw1OSwzLDU1MzQ5LDU2NjI2LDExNCw5NywxMTgsMTAxLDUsMjQ5LDEsNTksMTgzMTcsMSwyNDksNCwyLDk3LDk4LDE4MzI1LDE4MzM4LDExNCw0LDIsMTA4LDExNCwxODMzMiwxODMzNSw1OSwxLDg2MzksNTksMSw4NjM4LDEwOCwxMDcsNTksMSw5NjAwLDQsMiw5OSwxMTYsMTgzNDksMTgzNzQsNCwyLDExMSwxMTQsMTgzNTUsMTgzNjksMTE0LDExMCw0LDIsNTksMTAxLDE4MzYzLDE4MzY1LDEsODk4OCwxMTQsNTksMSw4OTg4LDExMSwxMTIsNTksMSw4OTc1LDExNCwxMDUsNTksMSw5NzIwLDQsMiw5NywxMDgsMTgzODUsMTgzOTAsOTksMTE0LDU5LDEsMzYzLDUsMTY4LDEsNTksMTgzOTUsMSwxNjgsNCwyLDEwMywxMTIsMTg0MDMsMTg0MDgsMTExLDExMCw1OSwxLDM3MSwxMDIsNTksMyw1NTM0OSw1NjY3OCw0LDYsOTcsMTAwLDEwNCwxMDgsMTE1LDExNywxODQyNywxODQzNCwxODQ0NSwxODQ3MCwxODQ3NSwxODQ5NCwxMTQsMTE0LDExMSwxMTksNTksMSw4NTkzLDExMSwxMTksMTEwLDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTcsOTcsMTE0LDExMiwxMTEsMTExLDExMCw0LDIsMTA4LDExNCwxODQ1NywxODQ2MywxMDEsMTAyLDExNiw1OSwxLDg2MzksMTA1LDEwMywxMDQsMTE2LDU5LDEsODYzOCwxMTcsMTE1LDU5LDEsODg0NiwxMDUsNCwzLDU5LDEwNCwxMDgsMTg0ODQsMTg0ODYsMTg0ODksMSw5NjUsNTksMSw5NzgsMTExLDExMCw1OSwxLDk2NSwxMTIsOTcsMTE0LDExNCwxMTEsMTE5LDExNSw1OSwxLDg2NDgsNCwzLDk5LDEwNSwxMTYsMTg1MTIsMTg1MzcsMTg1NDIsNCwyLDExMSwxMTQsMTg1MTgsMTg1MzIsMTE0LDExMCw0LDIsNTksMTAxLDE4NTI2LDE4NTI4LDEsODk4OSwxMTQsNTksMSw4OTg5LDExMSwxMTIsNTksMSw4OTc0LDExMCwxMDMsNTksMSwzNjcsMTE0LDEwNSw1OSwxLDk3MjEsOTksMTE0LDU5LDMsNTUzNDksNTY1MjIsNCwzLDEwMCwxMDUsMTE0LDE4NTYxLDE4NTY2LDE4NTcyLDExMSwxMTYsNTksMSw4OTQ0LDEwOCwxMDAsMTAxLDU5LDEsMzYxLDEwNSw0LDIsNTksMTAyLDE4NTc5LDE4NTgxLDEsOTY1Myw1OSwxLDk2NTIsNCwyLDk3LDEwOSwxODU5MCwxODU5NSwxMTQsMTE0LDU5LDEsODY0OCwxMDgsNSwyNTIsMSw1OSwxODYwMSwxLDI1Miw5NywxMTAsMTAzLDEwOCwxMDEsNTksMSwxMDY2Myw0LDE1LDY1LDY2LDY4LDk3LDk5LDEwMCwxMDEsMTAyLDEwOCwxMTAsMTExLDExMiwxMTQsMTE1LDEyMiwxODY0MywxODY0OCwxODY2MSwxODY2NywxODg0NywxODg1MSwxODg1NywxODkwNCwxODkwOSwxODkxNSwxODkzMSwxODkzNywxODk0MywxODk0OSwxODk5NiwxMTQsMTE0LDU5LDEsODY2MSw5NywxMTQsNCwyLDU5LDExOCwxODY1NiwxODY1OCwxLDEwOTg0LDU5LDEsMTA5ODUsOTcsMTE1LDEwNCw1OSwxLDg4NzIsNCwyLDExMCwxMTQsMTg2NzMsMTg2NzksMTAzLDExNCwxMTYsNTksMSwxMDY1Miw0LDcsMTAxLDEwNywxMTAsMTEyLDExNCwxMTUsMTE2LDE4Njk1LDE4NzA0LDE4NzExLDE4NzIwLDE4NzQyLDE4NzU0LDE4ODEwLDExMiwxMTUsMTA1LDEwOCwxMTEsMTEwLDU5LDEsMTAxMyw5NywxMTIsMTEyLDk3LDU5LDEsMTAwOCwxMTEsMTE2LDEwNCwxMDUsMTEwLDEwMyw1OSwxLDg3MDksNCwzLDEwNCwxMDUsMTE0LDE4NzI4LDE4NzMyLDE4NzM1LDEwNSw1OSwxLDk4MSw1OSwxLDk4MiwxMTEsMTEyLDExNiwxMTEsNTksMSw4NzMzLDQsMiw1OSwxMDQsMTg3NDgsMTg3NTAsMSw4NTk3LDExMSw1OSwxLDEwMDksNCwyLDEwNSwxMTcsMTg3NjAsMTg3NjYsMTAzLDEwOSw5Nyw1OSwxLDk2Miw0LDIsOTgsMTEyLDE4NzcyLDE4NzkxLDExNSwxMDEsMTE2LDExMCwxMDEsMTEzLDQsMiw1OSwxMTMsMTg3ODQsMTg3ODcsMyw4ODQyLDY1MDI0LDU5LDMsMTA5NTUsNjUwMjQsMTE1LDEwMSwxMTYsMTEwLDEwMSwxMTMsNCwyLDU5LDExMywxODgwMywxODgwNiwzLDg4NDMsNjUwMjQsNTksMywxMDk1Niw2NTAyNCw0LDIsMTA0LDExNCwxODgxNiwxODgyMiwxMDEsMTE2LDk3LDU5LDEsOTc3LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwyLDEwOCwxMTQsMTg4MzQsMTg4NDAsMTAxLDEwMiwxMTYsNTksMSw4ODgyLDEwNSwxMDMsMTA0LDExNiw1OSwxLDg4ODMsMTIxLDU5LDEsMTA3NCw5NywxMTUsMTA0LDU5LDEsODg2Niw0LDMsMTAxLDEwOCwxMTQsMTg4NjUsMTg4ODQsMTg4OTAsNCwzLDU5LDk4LDEwMSwxODg3MywxODg3NSwxODg4MCwxLDg3NDQsOTcsMTE0LDU5LDEsODg5MSwxMTMsNTksMSw4Nzk0LDEwOCwxMDUsMTEyLDU5LDEsODk0Miw0LDIsOTgsMTE2LDE4ODk2LDE4OTAxLDk3LDExNCw1OSwxLDEyNCw1OSwxLDEyNCwxMTQsNTksMyw1NTM0OSw1NjYyNywxMTYsMTE0LDEwNSw1OSwxLDg4ODIsMTE1LDExNyw0LDIsOTgsMTEyLDE4OTIzLDE4OTI3LDU5LDMsODgzNCw4NDAyLDU5LDMsODgzNSw4NDAyLDExMiwxMDIsNTksMyw1NTM0OSw1NjY3OSwxMTQsMTExLDExMiw1OSwxLDg3MzMsMTE2LDExNCwxMDUsNTksMSw4ODgzLDQsMiw5OSwxMTcsMTg5NTUsMTg5NjAsMTE0LDU5LDMsNTUzNDksNTY1MjMsNCwyLDk4LDExMiwxODk2NiwxODk4MSwxMTAsNCwyLDY5LDEwMSwxODk3MywxODk3Nyw1OSwzLDEwOTU1LDY1MDI0LDU5LDMsODg0Miw2NTAyNCwxMTAsNCwyLDY5LDEwMSwxODk4OCwxODk5Miw1OSwzLDEwOTU2LDY1MDI0LDU5LDMsODg0Myw2NTAyNCwxMDUsMTAzLDEyMiw5NywxMDMsNTksMSwxMDY1MCw0LDcsOTksMTAxLDEwMiwxMTEsMTEyLDExNCwxMTUsMTkwMjAsMTkwMjYsMTkwNjEsMTkwNjYsMTkwNzIsMTkwNzUsMTkwODksMTA1LDExNCw5OSw1OSwxLDM3Myw0LDIsMTAwLDEwNSwxOTAzMiwxOTA1NSw0LDIsOTgsMTAzLDE5MDM4LDE5MDQzLDk3LDExNCw1OSwxLDEwODQ3LDEwMSw0LDIsNTksMTEzLDE5MDUwLDE5MDUyLDEsODc0Myw1OSwxLDg3OTMsMTAxLDExNCwxMTIsNTksMSw4NDcyLDExNCw1OSwzLDU1MzQ5LDU2NjI4LDExMiwxMDIsNTksMyw1NTM0OSw1NjY4MCw1OSwxLDg0NzIsNCwyLDU5LDEwMSwxOTA4MSwxOTA4MywxLDg3NjgsOTcsMTE2LDEwNCw1OSwxLDg3NjgsOTksMTE0LDU5LDMsNTUzNDksNTY1MjQsNCwxNCw5OSwxMDAsMTAyLDEwNCwxMDUsMTA4LDEwOSwxMTAsMTExLDExNCwxMTUsMTE3LDExOCwxMTksMTkxMjUsMTkxNDYsMTkxNTIsMTkxNTcsMTkxNzMsMTkxNzYsMTkxOTIsMTkxOTcsMTkyMDIsMTkyMzYsMTkyNTIsMTkyNjksMTkyODYsMTkyOTEsNCwzLDk3LDEwNSwxMTcsMTkxMzMsMTkxMzcsMTkxNDIsMTEyLDU5LDEsODg5OCwxMTQsOTksNTksMSw5NzExLDExMiw1OSwxLDg4OTksMTE2LDExNCwxMDUsNTksMSw5NjYxLDExNCw1OSwzLDU1MzQ5LDU2NjI5LDQsMiw2NSw5NywxOTE2MywxOTE2OCwxMTQsMTE0LDU5LDEsMTAyMzQsMTE0LDExNCw1OSwxLDEwMjMxLDU5LDEsOTU4LDQsMiw2NSw5NywxOTE4MiwxOTE4NywxMTQsMTE0LDU5LDEsMTAyMzIsMTE0LDExNCw1OSwxLDEwMjI5LDk3LDExMiw1OSwxLDEwMjM2LDEwNSwxMTUsNTksMSw4OTU1LDQsMywxMDAsMTEyLDExNiwxOTIxMCwxOTIxNSwxOTIzMCwxMTEsMTE2LDU5LDEsMTA3NTIsNCwyLDEwMiwxMDgsMTkyMjEsMTkyMjUsNTksMyw1NTM0OSw1NjY4MSwxMTcsMTE1LDU5LDEsMTA3NTMsMTA1LDEwOSwxMDEsNTksMSwxMDc1NCw0LDIsNjUsOTcsMTkyNDIsMTkyNDcsMTE0LDExNCw1OSwxLDEwMjMzLDExNCwxMTQsNTksMSwxMDIzMCw0LDIsOTksMTEzLDE5MjU4LDE5MjYzLDExNCw1OSwzLDU1MzQ5LDU2NTI1LDk5LDExNywxMTIsNTksMSwxMDc1OCw0LDIsMTEyLDExNiwxOTI3NSwxOTI4MSwxMDgsMTE3LDExNSw1OSwxLDEwNzU2LDExNCwxMDUsNTksMSw5NjUxLDEwMSwxMDEsNTksMSw4ODk3LDEwMSwxMDAsMTAzLDEwMSw1OSwxLDg4OTYsNCw4LDk3LDk5LDEwMSwxMDIsMTA1LDExMSwxMTUsMTE3LDE5MzE2LDE5MzM1LDE5MzQ5LDE5MzU3LDE5MzYyLDE5MzY3LDE5MzczLDE5Mzc5LDk5LDQsMiwxMTcsMTIxLDE5MzIzLDE5MzMyLDExNiwxMDEsNSwyNTMsMSw1OSwxOTMzMCwxLDI1Myw1OSwxLDExMDMsNCwyLDEwNSwxMjEsMTkzNDEsMTkzNDYsMTE0LDk5LDU5LDEsMzc1LDU5LDEsMTA5OSwxMTAsNSwxNjUsMSw1OSwxOTM1NSwxLDE2NSwxMTQsNTksMyw1NTM0OSw1NjYzMCw5OSwxMjEsNTksMSwxMTExLDExMiwxMDIsNTksMyw1NTM0OSw1NjY4Miw5OSwxMTQsNTksMyw1NTM0OSw1NjUyNiw0LDIsOTksMTA5LDE5Mzg1LDE5Mzg5LDEyMSw1OSwxLDExMDIsMTA4LDUsMjU1LDEsNTksMTkzOTUsMSwyNTUsNCwxMCw5Nyw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDExMSwxMTUsMTE5LDE5NDE5LDE5NDI2LDE5NDQxLDE5NDQ2LDE5NDYyLDE5NDY3LDE5NDcyLDE5NDgwLDE5NDg2LDE5NDkyLDk5LDExNywxMTYsMTAxLDU5LDEsMzc4LDQsMiw5NywxMjEsMTk0MzIsMTk0MzgsMTE0LDExMSwxMTAsNTksMSwzODIsNTksMSwxMDc5LDExMSwxMTYsNTksMSwzODAsNCwyLDEwMSwxMTYsMTk0NTIsMTk0NTgsMTE2LDExNCwxMDIsNTksMSw4NDg4LDk3LDU5LDEsOTUwLDExNCw1OSwzLDU1MzQ5LDU2NjMxLDk5LDEyMSw1OSwxLDEwNzgsMTAzLDExNCw5NywxMTQsMTE0LDU5LDEsODY2OSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2ODMsOTksMTE0LDU5LDMsNTUzNDksNTY1MjcsNCwyLDEwNiwxMTAsMTk0OTgsMTk1MDEsNTksMSw4MjA1LDEwNiw1OSwxLDgyMDRdKTsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFByZXByb2Nlc3NvciA9IHJlcXVpcmUoJy4vcHJlcHJvY2Vzc29yJyk7XG5jb25zdCB1bmljb2RlID0gcmVxdWlyZSgnLi4vY29tbW9uL3VuaWNvZGUnKTtcbmNvbnN0IG5lVHJlZSA9IHJlcXVpcmUoJy4vbmFtZWQtZW50aXR5LWRhdGEnKTtcbmNvbnN0IEVSUiA9IHJlcXVpcmUoJy4uL2NvbW1vbi9lcnJvci1jb2RlcycpO1xuXG4vL0FsaWFzZXNcbmNvbnN0ICQgPSB1bmljb2RlLkNPREVfUE9JTlRTO1xuY29uc3QgJCQgPSB1bmljb2RlLkNPREVfUE9JTlRfU0VRVUVOQ0VTO1xuXG4vL0MxIFVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHJlcGxhY2VtZW50c1xuY29uc3QgQzFfQ09OVFJPTFNfUkVGRVJFTkNFX1JFUExBQ0VNRU5UUyA9IHtcbiAgICAweDgwOiAweDIwYWMsXG4gICAgMHg4MjogMHgyMDFhLFxuICAgIDB4ODM6IDB4MDE5MixcbiAgICAweDg0OiAweDIwMWUsXG4gICAgMHg4NTogMHgyMDI2LFxuICAgIDB4ODY6IDB4MjAyMCxcbiAgICAweDg3OiAweDIwMjEsXG4gICAgMHg4ODogMHgwMmM2LFxuICAgIDB4ODk6IDB4MjAzMCxcbiAgICAweDhhOiAweDAxNjAsXG4gICAgMHg4YjogMHgyMDM5LFxuICAgIDB4OGM6IDB4MDE1MixcbiAgICAweDhlOiAweDAxN2QsXG4gICAgMHg5MTogMHgyMDE4LFxuICAgIDB4OTI6IDB4MjAxOSxcbiAgICAweDkzOiAweDIwMWMsXG4gICAgMHg5NDogMHgyMDFkLFxuICAgIDB4OTU6IDB4MjAyMixcbiAgICAweDk2OiAweDIwMTMsXG4gICAgMHg5NzogMHgyMDE0LFxuICAgIDB4OTg6IDB4MDJkYyxcbiAgICAweDk5OiAweDIxMjIsXG4gICAgMHg5YTogMHgwMTYxLFxuICAgIDB4OWI6IDB4MjAzYSxcbiAgICAweDljOiAweDAxNTMsXG4gICAgMHg5ZTogMHgwMTdlLFxuICAgIDB4OWY6IDB4MDE3OFxufTtcblxuLy8gTmFtZWQgZW50aXR5IHRyZWUgZmxhZ3NcbmNvbnN0IEhBU19EQVRBX0ZMQUcgPSAxIDw8IDA7XG5jb25zdCBEQVRBX0RVUExFVF9GTEFHID0gMSA8PCAxO1xuY29uc3QgSEFTX0JSQU5DSEVTX0ZMQUcgPSAxIDw8IDI7XG5jb25zdCBNQVhfQlJBTkNIX01BUktFUl9WQUxVRSA9IEhBU19EQVRBX0ZMQUcgfCBEQVRBX0RVUExFVF9GTEFHIHwgSEFTX0JSQU5DSEVTX0ZMQUc7XG5cbi8vU3RhdGVzXG5jb25zdCBEQVRBX1NUQVRFID0gJ0RBVEFfU1RBVEUnO1xuY29uc3QgUkNEQVRBX1NUQVRFID0gJ1JDREFUQV9TVEFURSc7XG5jb25zdCBSQVdURVhUX1NUQVRFID0gJ1JBV1RFWFRfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfU1RBVEUgPSAnU0NSSVBUX0RBVEFfU1RBVEUnO1xuY29uc3QgUExBSU5URVhUX1NUQVRFID0gJ1BMQUlOVEVYVF9TVEFURSc7XG5jb25zdCBUQUdfT1BFTl9TVEFURSA9ICdUQUdfT1BFTl9TVEFURSc7XG5jb25zdCBFTkRfVEFHX09QRU5fU1RBVEUgPSAnRU5EX1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IFRBR19OQU1FX1NUQVRFID0gJ1RBR19OQU1FX1NUQVRFJztcbmNvbnN0IFJDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgUkNEQVRBX0VORF9UQUdfT1BFTl9TVEFURSA9ICdSQ0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IFJDREFUQV9FTkRfVEFHX05BTUVfU1RBVEUgPSAnUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURSc7XG5jb25zdCBSQVdURVhUX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ1JBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgUkFXVEVYVF9FTkRfVEFHX09QRU5fU1RBVEUgPSAnUkFXVEVYVF9FTkRfVEFHX09QRU5fU1RBVEUnO1xuY29uc3QgUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUgPSAnUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUgPSAnU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURSA9ICdTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURSA9ICdTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURSc7XG5jb25zdCBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUgPSAnQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFJztcbmNvbnN0IEFUVFJJQlVURV9OQU1FX1NUQVRFID0gJ0FUVFJJQlVURV9OQU1FX1NUQVRFJztcbmNvbnN0IEFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFID0gJ0FGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFJztcbmNvbnN0IEJFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEUgPSAnQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURSc7XG5jb25zdCBBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURSA9ICdBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSA9ICdBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUgPSAnQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFJztcbmNvbnN0IEFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURfU1RBVEUgPSAnQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFID0gJ1NFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEUnO1xuY29uc3QgQk9HVVNfQ09NTUVOVF9TVEFURSA9ICdCT0dVU19DT01NRU5UX1NUQVRFJztcbmNvbnN0IE1BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFID0gJ01BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfU1RBUlRfU1RBVEUgPSAnQ09NTUVOVF9TVEFSVF9TVEFURSc7XG5jb25zdCBDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEUgPSAnQ09NTUVOVF9TVEFSVF9EQVNIX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfU1RBVEUgPSAnQ09NTUVOVF9TVEFURSc7XG5jb25zdCBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ0NPTU1FTlRfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX1NUQVRFID0gJ0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19TVEFURSc7XG5jb25zdCBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9TVEFURSA9ICdDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9TVEFURSc7XG5jb25zdCBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9EQVNIX1NUQVRFID0gJ0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX0RBU0hfU1RBVEUnO1xuY29uc3QgQ09NTUVOVF9FTkRfREFTSF9TVEFURSA9ICdDT01NRU5UX0VORF9EQVNIX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfRU5EX1NUQVRFID0gJ0NPTU1FTlRfRU5EX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfRU5EX0JBTkdfU1RBVEUgPSAnQ09NTUVOVF9FTkRfQkFOR19TVEFURSc7XG5jb25zdCBET0NUWVBFX1NUQVRFID0gJ0RPQ1RZUEVfU1RBVEUnO1xuY29uc3QgQkVGT1JFX0RPQ1RZUEVfTkFNRV9TVEFURSA9ICdCRUZPUkVfRE9DVFlQRV9OQU1FX1NUQVRFJztcbmNvbnN0IERPQ1RZUEVfTkFNRV9TVEFURSA9ICdET0NUWVBFX05BTUVfU1RBVEUnO1xuY29uc3QgQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFID0gJ0FGVEVSX0RPQ1RZUEVfTkFNRV9TVEFURSc7XG5jb25zdCBBRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEX1NUQVRFID0gJ0FGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRfU1RBVEUnO1xuY29uc3QgQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEUgPSAnQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEUnO1xuY29uc3QgRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFID0gJ0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFJztcbmNvbnN0IEFGVEVSX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEUgPSAnQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURSc7XG5jb25zdCBCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEUgPSAnQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTX1NUQVRFJztcbmNvbnN0IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkRfU1RBVEUgPSAnQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRF9TVEFURSc7XG5jb25zdCBCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSA9ICdCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSc7XG5jb25zdCBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFJztcbmNvbnN0IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURSA9ICdET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEUnO1xuY29uc3QgQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSA9ICdBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFJztcbmNvbnN0IEJPR1VTX0RPQ1RZUEVfU1RBVEUgPSAnQk9HVVNfRE9DVFlQRV9TVEFURSc7XG5jb25zdCBDREFUQV9TRUNUSU9OX1NUQVRFID0gJ0NEQVRBX1NFQ1RJT05fU1RBVEUnO1xuY29uc3QgQ0RBVEFfU0VDVElPTl9CUkFDS0VUX1NUQVRFID0gJ0NEQVRBX1NFQ1RJT05fQlJBQ0tFVF9TVEFURSc7XG5jb25zdCBDREFUQV9TRUNUSU9OX0VORF9TVEFURSA9ICdDREFUQV9TRUNUSU9OX0VORF9TVEFURSc7XG5jb25zdCBDSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFID0gJ0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgTkFNRURfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdOQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFJztcbmNvbnN0IEFNQklHVU9VU19BTVBFUlNBTkRfU1RBVEUgPSAnQU1CSUdVT1NfQU1QRVJTQU5EX1NUQVRFJztcbmNvbnN0IE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSA9ICdIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUX1NUQVRFJztcbmNvbnN0IERFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSA9ICdERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlRfU1RBVEUnO1xuY29uc3QgSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFJztcbmNvbnN0IERFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORF9TVEFURSA9ICdOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFJztcblxuLy9VdGlsc1xuXG4vL09QVElNSVpBVElPTjogdGhlc2UgdXRpbGl0eSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBtb3ZlZCBvdXQgb2YgdGhpcyBtb2R1bGUuIFY4IENyYW5rc2hhZnQgd2lsbCBub3QgaW5saW5lXG4vL3RoaXMgZnVuY3Rpb25zIGlmIHRoZXkgd2lsbCBiZSBzaXR1YXRlZCBpbiBhbm90aGVyIG1vZHVsZSBkdWUgdG8gY29udGV4dCBzd2l0Y2guXG4vL0Fsd2F5cyBwZXJmb3JtIGlubGluaW5nIGNoZWNrIGJlZm9yZSBtb2RpZnlpbmcgdGhpcyBmdW5jdGlvbnMgKCdub2RlIC0tdHJhY2UtaW5saW5pbmcnKS5cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjcCkge1xuICAgIHJldHVybiBjcCA9PT0gJC5TUEFDRSB8fCBjcCA9PT0gJC5MSU5FX0ZFRUQgfHwgY3AgPT09ICQuVEFCVUxBVElPTiB8fCBjcCA9PT0gJC5GT1JNX0ZFRUQ7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlEaWdpdChjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkRJR0lUXzAgJiYgY3AgPD0gJC5ESUdJVF85O1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpVXBwZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9DQVBJVEFMX0EgJiYgY3AgPD0gJC5MQVRJTl9DQVBJVEFMX1o7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlMb3dlcihjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkxBVElOX1NNQUxMX0EgJiYgY3AgPD0gJC5MQVRJTl9TTUFMTF9aO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpTGV0dGVyKGNwKSB7XG4gICAgcmV0dXJuIGlzQXNjaWlMb3dlcihjcCkgfHwgaXNBc2NpaVVwcGVyKGNwKTtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUFscGhhTnVtZXJpYyhjcCkge1xuICAgIHJldHVybiBpc0FzY2lpTGV0dGVyKGNwKSB8fCBpc0FzY2lpRGlnaXQoY3ApO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpVXBwZXJIZXhEaWdpdChjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkxBVElOX0NBUElUQUxfQSAmJiBjcCA8PSAkLkxBVElOX0NBUElUQUxfRjtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUxvd2VySGV4RGlnaXQoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9TTUFMTF9BICYmIGNwIDw9ICQuTEFUSU5fU01BTExfRjtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUhleERpZ2l0KGNwKSB7XG4gICAgcmV0dXJuIGlzQXNjaWlEaWdpdChjcCkgfHwgaXNBc2NpaVVwcGVySGV4RGlnaXQoY3ApIHx8IGlzQXNjaWlMb3dlckhleERpZ2l0KGNwKTtcbn1cblxuZnVuY3Rpb24gdG9Bc2NpaUxvd2VyQ29kZVBvaW50KGNwKSB7XG4gICAgcmV0dXJuIGNwICsgMHgwMDIwO1xufVxuXG4vL05PVEU6IFN0cmluZy5mcm9tQ2hhckNvZGUoKSBmdW5jdGlvbiBjYW4gaGFuZGxlIG9ubHkgY2hhcmFjdGVycyBmcm9tIEJNUCBzdWJzZXQuXG4vL1NvLCB3ZSBuZWVkIHRvIHdvcmthcm91bmQgdGhpcyBtYW51YWxseS5cbi8vKHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvZnJvbUNoYXJDb2RlI0dldHRpbmdfaXRfdG9fd29ya193aXRoX2hpZ2hlcl92YWx1ZXMpXG5mdW5jdGlvbiB0b0NoYXIoY3ApIHtcbiAgICBpZiAoY3AgPD0gMHhmZmZmKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNwKTtcbiAgICB9XG5cbiAgICBjcCAtPSAweDEwMDAwO1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoY3AgPj4+IDEwKSAmIDB4M2ZmKSB8IDB4ZDgwMCkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZGMwMCB8IChjcCAmIDB4M2ZmKSk7XG59XG5cbmZ1bmN0aW9uIHRvQXNjaWlMb3dlckNoYXIoY3ApIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApKTtcbn1cblxuZnVuY3Rpb24gZmluZE5hbWVkRW50aXR5VHJlZUJyYW5jaChub2RlSXgsIGNwKSB7XG4gICAgY29uc3QgYnJhbmNoQ291bnQgPSBuZVRyZWVbKytub2RlSXhdO1xuICAgIGxldCBsbyA9ICsrbm9kZUl4O1xuICAgIGxldCBoaSA9IGxvICsgYnJhbmNoQ291bnQgLSAxO1xuXG4gICAgd2hpbGUgKGxvIDw9IGhpKSB7XG4gICAgICAgIGNvbnN0IG1pZCA9IChsbyArIGhpKSA+Pj4gMTtcbiAgICAgICAgY29uc3QgbWlkQ3AgPSBuZVRyZWVbbWlkXTtcblxuICAgICAgICBpZiAobWlkQ3AgPCBjcCkge1xuICAgICAgICAgICAgbG8gPSBtaWQgKyAxO1xuICAgICAgICB9IGVsc2UgaWYgKG1pZENwID4gY3ApIHtcbiAgICAgICAgICAgIGhpID0gbWlkIC0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZVRyZWVbbWlkICsgYnJhbmNoQ291bnRdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xufVxuXG4vL1Rva2VuaXplclxuY2xhc3MgVG9rZW5pemVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IgPSBuZXcgUHJlcHJvY2Vzc29yKCk7XG5cbiAgICAgICAgdGhpcy50b2tlblF1ZXVlID0gW107XG5cbiAgICAgICAgdGhpcy5hbGxvd0NEQVRBID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSAnJztcblxuICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gLTE7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgdGhpcy5sYXN0U3RhcnRUYWdOYW1lID0gJyc7XG5cbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAtMTtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ciA9IG51bGw7XG4gICAgfVxuXG4gICAgLy9FcnJvcnNcbiAgICBfZXJyKCkge1xuICAgICAgICAvLyBOT1RFOiBlcnIgcmVwb3J0aW5nIGlzIG5vb3AgYnkgZGVmYXVsdC4gRW5hYmxlZCBieSBtaXhpbi5cbiAgICB9XG5cbiAgICBfZXJyT25OZXh0Q29kZVBvaW50KGVycikge1xuICAgICAgICB0aGlzLl9jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuX2VycihlcnIpO1xuICAgICAgICB0aGlzLl91bmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICAvL0FQSVxuICAgIGdldE5leHRUb2tlbigpIHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLnRva2VuUXVldWUubGVuZ3RoICYmIHRoaXMuYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCA9IDA7XG5cbiAgICAgICAgICAgIGNvbnN0IGNwID0gdGhpcy5fY29uc3VtZSgpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW3RoaXMuc3RhdGVdKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRva2VuUXVldWUuc2hpZnQoKTtcbiAgICB9XG5cbiAgICB3cml0ZShjaHVuaywgaXNMYXN0Q2h1bmspIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci53cml0ZShjaHVuaywgaXNMYXN0Q2h1bmspO1xuICAgIH1cblxuICAgIGluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5pbnNlcnRIdG1sQXRDdXJyZW50UG9zKGNodW5rKTtcbiAgICB9XG5cbiAgICAvL0hpYmVybmF0aW9uXG4gICAgX2Vuc3VyZUhpYmVybmF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5wcmVwcm9jZXNzb3IuZW5kT2ZDaHVua0hpdCkge1xuICAgICAgICAgICAgZm9yICg7IHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90ID4gMDsgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QtLSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLnJldHJlYXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudG9rZW5RdWV1ZS5wdXNoKHsgdHlwZTogVG9rZW5pemVyLkhJQkVSTkFUSU9OX1RPS0VOIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvL0NvbnN1bXB0aW9uXG4gICAgX2NvbnN1bWUoKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90Kys7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXByb2Nlc3Nvci5hZHZhbmNlKCk7XG4gICAgfVxuXG4gICAgX3VuY29uc3VtZSgpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QtLTtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IucmV0cmVhdCgpO1xuICAgIH1cblxuICAgIF9yZWNvbnN1bWVJblN0YXRlKHN0YXRlKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5fdW5jb25zdW1lKCk7XG4gICAgfVxuXG4gICAgX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2gocGF0dGVybiwgc3RhcnRDcCwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICBsZXQgY29uc3VtZWRDb3VudCA9IDA7XG4gICAgICAgIGxldCBpc01hdGNoID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcGF0dGVybkxlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoO1xuICAgICAgICBsZXQgcGF0dGVyblBvcyA9IDA7XG4gICAgICAgIGxldCBjcCA9IHN0YXJ0Q3A7XG4gICAgICAgIGxldCBwYXR0ZXJuQ3AgPSB2b2lkIDA7XG5cbiAgICAgICAgZm9yICg7IHBhdHRlcm5Qb3MgPCBwYXR0ZXJuTGVuZ3RoOyBwYXR0ZXJuUG9zKyspIHtcbiAgICAgICAgICAgIGlmIChwYXR0ZXJuUG9zID4gMCkge1xuICAgICAgICAgICAgICAgIGNwID0gdGhpcy5fY29uc3VtZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN1bWVkQ291bnQrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGF0dGVybkNwID0gcGF0dGVybltwYXR0ZXJuUG9zXTtcblxuICAgICAgICAgICAgaWYgKGNwICE9PSBwYXR0ZXJuQ3AgJiYgKGNhc2VTZW5zaXRpdmUgfHwgY3AgIT09IHRvQXNjaWlMb3dlckNvZGVQb2ludChwYXR0ZXJuQ3ApKSkge1xuICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNNYXRjaCkge1xuICAgICAgICAgICAgd2hpbGUgKGNvbnN1bWVkQ291bnQtLSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzTWF0Y2g7XG4gICAgfVxuXG4gICAgLy9UZW1wIGJ1ZmZlclxuICAgIF9pc1RlbXBCdWZmZXJFcXVhbFRvU2NyaXB0U3RyaW5nKCkge1xuICAgICAgICBpZiAodGhpcy50ZW1wQnVmZi5sZW5ndGggIT09ICQkLlNDUklQVF9TVFJJTkcubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGVtcEJ1ZmYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlbXBCdWZmW2ldICE9PSAkJC5TQ1JJUFRfU1RSSU5HW2ldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy9Ub2tlbiBjcmVhdGlvblxuICAgIF9jcmVhdGVTdGFydFRhZ1Rva2VuKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4sXG4gICAgICAgICAgICB0YWdOYW1lOiAnJyxcbiAgICAgICAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGFja1NlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJzOiBbXVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIF9jcmVhdGVFbmRUYWdUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTixcbiAgICAgICAgICAgIHRhZ05hbWU6ICcnLFxuICAgICAgICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYXR0cnM6IFtdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNvbW1lbnRUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTixcbiAgICAgICAgICAgIGRhdGE6ICcnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZURvY3R5cGVUb2tlbihpbml0aWFsTmFtZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuaXplci5ET0NUWVBFX1RPS0VOLFxuICAgICAgICAgICAgbmFtZTogaW5pdGlhbE5hbWUsXG4gICAgICAgICAgICBmb3JjZVF1aXJrczogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaWNJZDogbnVsbCxcbiAgICAgICAgICAgIHN5c3RlbUlkOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNoYXJhY3RlclRva2VuKHR5cGUsIGNoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuID0ge1xuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGNoYXJzOiBjaFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIF9jcmVhdGVFT0ZUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7IHR5cGU6IFRva2VuaXplci5FT0ZfVE9LRU4gfTtcbiAgICB9XG5cbiAgICAvL1RhZyBhdHRyaWJ1dGVzXG4gICAgX2NyZWF0ZUF0dHIoYXR0ck5hbWVGaXJzdENoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIgPSB7XG4gICAgICAgICAgICBuYW1lOiBhdHRyTmFtZUZpcnN0Q2gsXG4gICAgICAgICAgICB2YWx1ZTogJydcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfbGVhdmVBdHRyTmFtZSh0b1N0YXRlKSB7XG4gICAgICAgIGlmIChUb2tlbml6ZXIuZ2V0VG9rZW5BdHRyKHRoaXMuY3VycmVudFRva2VuLCB0aGlzLmN1cnJlbnRBdHRyLm5hbWUpID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5hdHRycy5wdXNoKHRoaXMuY3VycmVudEF0dHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5kdXBsaWNhdGVBdHRyaWJ1dGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRvU3RhdGU7XG4gICAgfVxuXG4gICAgX2xlYXZlQXR0clZhbHVlKHRvU3RhdGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRvU3RhdGU7XG4gICAgfVxuXG4gICAgLy9Ub2tlbiBlbWlzc2lvblxuICAgIF9lbWl0Q3VycmVudFRva2VuKCkge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCk7XG5cbiAgICAgICAgY29uc3QgY3QgPSB0aGlzLmN1cnJlbnRUb2tlbjtcblxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG5cbiAgICAgICAgLy9OT1RFOiBzdG9yZSBlbWl0ZWQgc3RhcnQgdGFnJ3MgdGFnTmFtZSB0byBkZXRlcm1pbmUgaXMgdGhlIGZvbGxvd2luZyBlbmQgdGFnIHRva2VuIGlzIGFwcHJvcHJpYXRlLlxuICAgICAgICBpZiAoY3QudHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTikge1xuICAgICAgICAgICAgdGhpcy5sYXN0U3RhcnRUYWdOYW1lID0gY3QudGFnTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmIChjdC50eXBlID09PSBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTikge1xuICAgICAgICAgICAgaWYgKGN0LmF0dHJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVuZFRhZ1dpdGhBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN0LnNlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lbmRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9rZW5RdWV1ZS5wdXNoKGN0KTtcbiAgICB9XG5cbiAgICBfZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnRva2VuUXVldWUucHVzaCh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfZW1pdEVPRlRva2VuKCkge1xuICAgICAgICB0aGlzLl9jcmVhdGVFT0ZUb2tlbigpO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgLy9DaGFyYWN0ZXJzIGVtaXNzaW9uXG5cbiAgICAvL09QVElNSVpBVElPTjogc3BlY2lmaWNhdGlvbiB1c2VzIG9ubHkgb25lIHR5cGUgb2YgY2hhcmFjdGVyIHRva2VucyAob25lIHRva2VuIHBlciBjaGFyYWN0ZXIpLlxuICAgIC8vVGhpcyBjYXVzZXMgYSBodWdlIG1lbW9yeSBvdmVyaGVhZCBhbmQgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgcGFyc2VyIGxvb3BzLiBwYXJzZTUgdXNlcyAzIGdyb3VwcyBvZiBjaGFyYWN0ZXJzLlxuICAgIC8vSWYgd2UgaGF2ZSBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgZ3JvdXAsIHBhcnNlciBjYW4gcHJvY2VzcyBpdFxuICAgIC8vYXMgYSBzaW5nbGUgc29saWQgY2hhcmFjdGVyIHRva2VuLlxuICAgIC8vU28sIHRoZXJlIGFyZSAzIHR5cGVzIG9mIGNoYXJhY3RlciB0b2tlbnMgaW4gcGFyc2U1OlxuICAgIC8vMSlOVUxMX0NIQVJBQ1RFUl9UT0tFTiAtIFxcdTAwMDAtY2hhcmFjdGVyIHNlcXVlbmNlcyAoZS5nLiAnXFx1MDAwMFxcdTAwMDBcXHUwMDAwJylcbiAgICAvLzIpV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gLSBhbnkgd2hpdGVzcGFjZS9uZXctbGluZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIChlLmcuICdcXG4gIFxcclxcdCAgIFxcZicpXG4gICAgLy8zKUNIQVJBQ1RFUl9UT0tFTiAtIGFueSBjaGFyYWN0ZXIgc2VxdWVuY2Ugd2hpY2ggZG9uJ3QgYmVsb25nIHRvIGdyb3VwcyAxIGFuZCAyIChlLmcuICdhYmNkZWYxMjM0QEAjJCVeJylcbiAgICBfYXBwZW5kQ2hhclRvQ3VycmVudENoYXJhY3RlclRva2VuKHR5cGUsIGNoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiAmJiB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi50eXBlICE9PSB0eXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmNoYXJzICs9IGNoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ2hhcmFjdGVyVG9rZW4odHlwZSwgY2gpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2VtaXRDb2RlUG9pbnQoY3ApIHtcbiAgICAgICAgbGV0IHR5cGUgPSBUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOO1xuXG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0eXBlID0gVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4odHlwZSwgdG9DaGFyKGNwKSk7XG4gICAgfVxuXG4gICAgX2VtaXRTZXZlcmFsQ29kZVBvaW50cyhjb2RlUG9pbnRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjb2RlUG9pbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vTk9URTogdXNlZCB0aGVuIHdlIGVtaXQgY2hhcmFjdGVyIGV4cGxpY2l0bHkuIFRoaXMgaXMgYWx3YXlzIGEgbm9uLXdoaXRlc3BhY2UgYW5kIGEgbm9uLW51bGwgY2hhcmFjdGVyLlxuICAgIC8vU28gd2UgY2FuIGF2b2lkIGFkZGl0aW9uYWwgY2hlY2tzIGhlcmUuXG4gICAgX2VtaXRDaGFycyhjaCkge1xuICAgICAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4oVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTiwgY2gpO1xuICAgIH1cblxuICAgIC8vIENoYXJhY3RlciByZWZlcmVuY2UgaGVscGVyc1xuICAgIF9tYXRjaE5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKHN0YXJ0Q3ApIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgIGxldCBleGNlc3MgPSAxO1xuICAgICAgICBsZXQgaSA9IGZpbmROYW1lZEVudGl0eVRyZWVCcmFuY2goMCwgc3RhcnRDcCk7XG5cbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKHN0YXJ0Q3ApO1xuXG4gICAgICAgIHdoaWxlIChpID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBuZVRyZWVbaV07XG4gICAgICAgICAgICBjb25zdCBpbk5vZGUgPSBjdXJyZW50IDwgTUFYX0JSQU5DSF9NQVJLRVJfVkFMVUU7XG4gICAgICAgICAgICBjb25zdCBub2RlV2l0aERhdGEgPSBpbk5vZGUgJiYgY3VycmVudCAmIEhBU19EQVRBX0ZMQUc7XG5cbiAgICAgICAgICAgIGlmIChub2RlV2l0aERhdGEpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHdlIHVzZSBncmVlZHkgc2VhcmNoLCBzbyB3ZSBjb250aW51ZSBsb29rdXAgYXQgdGhpcyBwb2ludFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnQgJiBEQVRBX0RVUExFVF9GTEFHID8gW25lVHJlZVsrK2ldLCBuZVRyZWVbKytpXV0gOiBbbmVUcmVlWysraV1dO1xuICAgICAgICAgICAgICAgIGV4Y2VzcyA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNwID0gdGhpcy5fY29uc3VtZSgpO1xuXG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgZXhjZXNzKys7XG5cbiAgICAgICAgICAgIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGluTm9kZSkge1xuICAgICAgICAgICAgICAgIGkgPSBjdXJyZW50ICYgSEFTX0JSQU5DSEVTX0ZMQUcgPyBmaW5kTmFtZWRFbnRpdHlUcmVlQnJhbmNoKGksIGNwKSA6IC0xO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpID0gY3AgPT09IGN1cnJlbnQgPyArK2kgOiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChleGNlc3MtLSkge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBfaXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPT09IEFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFIHx8XG4gICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID09PSBBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSB8fFxuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9PT0gQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2lzQ2hhcmFjdGVyUmVmZXJlbmNlQXR0cmlidXRlUXVpcmsod2l0aFNlbWljb2xvbikge1xuICAgICAgICBpZiAoIXdpdGhTZW1pY29sb24gJiYgdGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0Q3AgPSB0aGlzLl9jb25zdW1lKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV4dENwID09PSAkLkVRVUFMU19TSUdOIHx8IGlzQXNjaWlBbHBoYU51bWVyaWMobmV4dENwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBfZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGUoKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRlbXBCdWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSB0b0NoYXIodGhpcy50ZW1wQnVmZltpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0U2V2ZXJhbENvZGVQb2ludHModGhpcy50ZW1wQnVmZik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgfVxuXG4gICAgLy8gU3RhdGUgbWFjaGluZVxuXG4gICAgLy8gRGF0YSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0RBVEFfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFRBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICBSQ0RBVEEgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQ0RBVEFfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5BTVBFUlNBTkQpIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSBSQ0RBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFJDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkFXVEVYVCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JBV1RFWFRfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFJBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQTEFJTlRFWFQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtQTEFJTlRFWFRfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtUQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkVYQ0xBTUFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBNQVJLVVBfREVDTEFSQVRJT05fT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRU5EX1RBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVTdGFydFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFRBR19OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVUVTVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRRdWVzdGlvbk1hcmtJbnN0ZWFkT2ZUYWdOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mQmVmb3JlVGFnTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWUpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW5kIHRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbRU5EX1RBR19PUEVOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUVuZFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFRBR19OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRW5kVGFnTmFtZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mQmVmb3JlVGFnTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW52YWxpZEZpcnN0Q2hhcmFjdGVyT2ZUYWdOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRhZyBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbVEFHX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSQ0RBVEEgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gUkNEQVRBX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQ0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkNEQVRBIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JDREFUQV9FTkRfVEFHX09QRU5fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJDREFUQV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSQ0RBVEEgZW5kIHRhZyBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJBV1RFWFQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQVdURVhUX0xFU1NfVEhBTl9TSUdOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFJBV1RFWFRfRU5EX1RBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJBV1RFWFRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkFXVEVYVCBlbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQVdURVhUX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJBV1RFWFRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkFXVEVYVCBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQVdURVhUX0VORF9UQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkFXVEVYVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FWENMQU1BVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8IScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpTG93ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMubGFzdFN0YXJ0VGFnTmFtZSA9PT0gdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSkge1xuICAgICAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgZGFzaCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc+Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRfU1RBVEUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBlbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuX2lzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmcoKVxuICAgICAgICAgICAgICAgID8gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEVcbiAgICAgICAgICAgICAgICA6IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2godG9Bc2NpaUxvd2VyQ29kZVBvaW50KGNwKSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpTG93ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc+Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9FTkRfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy8nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZSBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuX2lzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmcoKVxuICAgICAgICAgICAgICAgID8gU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURVxuICAgICAgICAgICAgICAgIDogU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaCh0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmVmb3JlIGF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04gfHwgY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FUVVBTFNfU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkRXF1YWxzU2lnbkJlZm9yZUF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignPScpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQVRUUklCVVRFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApIHx8IGNwID09PSAkLlNPTElEVVMgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04gfHwgY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJOYW1lKEFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVRVUFMU19TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJOYW1lKEJFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSyB8fCBjcCA9PT0gJC5BUE9TVFJPUEhFIHx8IGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRDaGFyYWN0ZXJJbkF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIGF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRVFVQUxTX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX1ZBTFVFX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCcnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmVmb3JlIGF0dHJpYnV0ZSB2YWx1ZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0F0dHJpYnV0ZVZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQXR0cmlidXRlIHZhbHVlIChkb3VibGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0FUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IEFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAoc2luZ2xlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IEFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAodW5xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BTVBFUlNBTkQpIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSBBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoREFUQV9TVEFURSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgY3AgPT09ICQuUVVPVEFUSU9OX01BUksgfHxcbiAgICAgICAgICAgIGNwID09PSAkLkFQT1NUUk9QSEUgfHxcbiAgICAgICAgICAgIGNwID09PSAkLkxFU1NfVEhBTl9TSUdOIHx8XG4gICAgICAgICAgICBjcCA9PT0gJC5FUVVBTFNfU0lHTiB8fFxuICAgICAgICAgICAgY3AgPT09ICQuR1JBVkVfQUNDRU5UXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkQ2hhcmFjdGVySW5VbnF1b3RlZEF0dHJpYnV0ZVZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZnRlciBhdHRyaWJ1dGUgdmFsdWUgKHF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoREFUQV9TVEFURSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlbGYtY2xvc2luZyBzdGFydCB0YWcgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZFNvbGlkdXNJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCb2d1cyBjb21tZW50IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQk9HVVNfQ09NTUVOVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1hcmt1cCBkZWNsYXJhdGlvbiBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbTUFSS1VQX0RFQ0xBUkFUSU9OX09QRU5fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkRBU0hfREFTSF9TVFJJTkcsIGNwLCB0cnVlKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFSVF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkRPQ1RZUEVfU1RSSU5HLCBjcCwgZmFsc2UpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkNEQVRBX1NUQVJUX1NUUklORywgY3AsIHRydWUpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0NEQVRBKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENEQVRBX1NFQ1RJT05fU1RBVEU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY2RhdGFJbkh0bWxDb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhID0gJ1tDREFUQVsnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCT0dVU19DT01NRU5UX1NUQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9OT1RFOiBzZXF1ZW5jZSBsb29rdXAgY2FuIGJlIGFicnVwdGVkIGJ5IGhpYmVybmF0aW9uLiBJbiB0aGF0IGNhc2UgbG9va3VwXG4gICAgICAgIC8vcmVzdWx0cyBhcmUgbm8gbG9uZ2VyIHZhbGlkIGFuZCB3ZSB3aWxsIG5lZWQgdG8gc3RhcnQgb3Zlci5cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFSVF9EQVNIX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdENsb3NpbmdPZkVtcHR5Q29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IHN0YXJ0IGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0VORF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHRDbG9zaW5nT2ZFbXB0eUNvbW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0nO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9FTkRfREFTSF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnPCc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0xFU1NfVEhBTl9TSUdOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuRVhDTEFNQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnISc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICchJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIGJhbmcgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIGJhbmcgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSF9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9FTkRfREFTSF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIGJhbmcgZGFzaCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwICE9PSAkLkdSRUFURVJfVEhBTl9TSUdOICYmIGNwICE9PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5uZXN0ZWRDb21tZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9FTkRfU1RBVEUpO1xuICAgIH1cblxuICAgIC8vIENvbW1lbnQgZW5kIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0VORF9EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9FTkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0nO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgZW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ09NTUVOVF9FTkRfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRVhDTEFNQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX0JBTkdfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Db21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLS0nO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgZW5kIGJhbmcgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0VORF9CQU5HX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX0RBU0hfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW5jb3JyZWN0bHlDbG9zZWRDb21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9ET0NUWVBFX05BTUVfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQkVGT1JFX0RPQ1RZUEVfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VCZWZvcmVEb2N0eXBlTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJFRk9SRV9ET0NUWVBFX05BTUVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmVmb3JlIERPQ1RZUEUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JFRk9SRV9ET0NUWVBFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKHRvQXNjaWlMb3dlckNoYXIoY3ApKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX05BTUVfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4odW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfTkFNRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbih0b0NoYXIoY3ApKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX05BTUVfU1RBVEU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5uYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubmFtZSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubmFtZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2goJCQuUFVCTElDX1NUUklORywgY3AsIGZhbHNlKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5TWVNURU1fU1RSSU5HLCBjcCwgZmFsc2UpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRF9TVEFURTtcbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IHNlcXVlbmNlIGxvb2t1cCBjYW4gYmUgYWJydXB0ZWQgYnkgaGliZXJuYXRpb24uIEluIHRoYXQgY2FzZSBsb29rdXBcbiAgICAgICAgLy9yZXN1bHRzIGFyZSBubyBsb25nZXIgdmFsaWQgYW5kIHdlIHdpbGwgbmVlZCB0byBzdGFydCBvdmVyLlxuICAgICAgICBlbHNlIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZnRlciBET0NUWVBFIHB1YmxpYyBrZXl3b3JkIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCZWZvcmUgRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBET0NUWVBFIHB1YmxpYyBpZGVudGlmaWVyIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZnRlciBET0NUWVBFIHB1YmxpYyBpZGVudGlmaWVyIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmV0d2VlbiBET0NUWVBFIHB1YmxpYyBhbmQgc3lzdGVtIGlkZW50aWZpZXJzIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIERPQ1RZUEUgc3lzdGVtIGtleXdvcmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9ET0NUWVBFX1NZU1RFTV9LRVlXT1JEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJlZm9yZSBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgKHNpbmdsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkQ2hhcmFjdGVyQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQm9ndXMgRE9DVFlQRSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JPR1VTX0RPQ1RZUEVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENEQVRBIHNlY3Rpb24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDREFUQV9TRUNUSU9OX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDREFUQV9TRUNUSU9OX0JSQUNLRVRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ2RhdGEpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENEQVRBIHNlY3Rpb24gYnJhY2tldCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NEQVRBX1NFQ1RJT05fQlJBQ0tFVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlJJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0RBVEFfU0VDVElPTl9FTkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJ10nKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ0RBVEFfU0VDVElPTl9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDREFUQSBzZWN0aW9uIGVuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NEQVRBX1NFQ1RJT05fRU5EX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlJJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJ10nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXV0nKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ0RBVEFfU0VDVElPTl9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFskLkFNUEVSU0FORF07XG5cbiAgICAgICAgaWYgKGNwID09PSAkLk5VTUJFUl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpQWxwaGFOdW1lcmljKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShOQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUodGhpcy5yZXR1cm5TdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbTkFNRURfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURV0oY3ApIHtcbiAgICAgICAgY29uc3QgbWF0Y2hSZXN1bHQgPSB0aGlzLl9tYXRjaE5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKGNwKTtcblxuICAgICAgICAvL05PVEU6IG1hdGNoaW5nIGNhbiBiZSBhYnJ1cHRlZCBieSBoaWJlcm5hdGlvbi4gSW4gdGhhdCBjYXNlIG1hdGNoXG4gICAgICAgIC8vcmVzdWx0cyBhcmUgbm8gbG9uZ2VyIHZhbGlkIGFuZCB3ZSB3aWxsIG5lZWQgdG8gc3RhcnQgb3Zlci5cbiAgICAgICAgaWYgKHRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbJC5BTVBFUlNBTkRdO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoUmVzdWx0KSB7XG4gICAgICAgICAgICBjb25zdCB3aXRoU2VtaWNvbG9uID0gdGhpcy50ZW1wQnVmZlt0aGlzLnRlbXBCdWZmLmxlbmd0aCAtIDFdID09PSAkLlNFTUlDT0xPTjtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0NoYXJhY3RlclJlZmVyZW5jZUF0dHJpYnV0ZVF1aXJrKHdpdGhTZW1pY29sb24pKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF3aXRoU2VtaWNvbG9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Vyck9uTmV4dENvZGVQb2ludChFUlIubWlzc2luZ1NlbWljb2xvbkFmdGVyQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gbWF0Y2hSZXN1bHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLnJldHVyblN0YXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFNQklHVU9VU19BTVBFUlNBTkRfU1RBVEU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbWJpZ3VvcyBhbXBlcnNhbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBTUJJR1VPVVNfQU1QRVJTQU5EX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUFscGhhTnVtZXJpYyhjcCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0NoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcihjcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5rbm93bk5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW05VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IDA7XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkxBVElOX1NNQUxMX1ggfHwgY3AgPT09ICQuTEFUSU5fQ0FQSVRBTF9YKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZXhhZGVtaWNhbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlIZXhEaWdpdChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFic2VuY2VPZkRpZ2l0c0luTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludHNDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVjaW1hbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbREVDSU1BTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaURpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnNlbmNlT2ZEaWdpdHNJbk51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhleGFkZW1pY2FsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaVVwcGVySGV4RGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDE2ICsgY3AgLSAweDM3O1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlckhleERpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IHRoaXMuY2hhclJlZkNvZGUgKiAxNiArIGNwIC0gMHg1NztcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpRGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDE2ICsgY3AgLSAweDMwO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVjaW1hbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbREVDSU1BTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaURpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IHRoaXMuY2hhclJlZkNvZGUgKiAxMCArIGNwIC0gMHgzMDtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5TRU1JQ09MT04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZSBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFXSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhclJlZkNvZGUgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5udWxsQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSAkLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXJSZWZDb2RlID4gMHgxMGZmZmYpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY2hhcmFjdGVyUmVmZXJlbmNlT3V0c2lkZVVuaWNvZGVSYW5nZSk7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gJC5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pY29kZS5pc1N1cnJvZ2F0ZSh0aGlzLmNoYXJSZWZDb2RlKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5zdXJyb2dhdGVDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9ICQuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaWNvZGUuaXNVbmRlZmluZWRDb2RlUG9pbnQodGhpcy5jaGFyUmVmQ29kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubm9uY2hhcmFjdGVyQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh1bmljb2RlLmlzQ29udHJvbENvZGVQb2ludCh0aGlzLmNoYXJSZWZDb2RlKSB8fCB0aGlzLmNoYXJSZWZDb2RlID09PSAkLkNBUlJJQUdFX1JFVFVSTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5jb250cm9sQ2hhcmFjdGVyUmVmZXJlbmNlKTtcblxuICAgICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBDMV9DT05UUk9MU19SRUZFUkVOQ0VfUkVQTEFDRU1FTlRTW3RoaXMuY2hhclJlZkNvZGVdO1xuXG4gICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW3RoaXMuY2hhclJlZkNvZGVdO1xuXG4gICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlKTtcbiAgICB9XG59XG5cbi8vVG9rZW4gdHlwZXNcblRva2VuaXplci5DSEFSQUNURVJfVE9LRU4gPSAnQ0hBUkFDVEVSX1RPS0VOJztcblRva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTiA9ICdOVUxMX0NIQVJBQ1RFUl9UT0tFTic7XG5Ub2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gPSAnV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4nO1xuVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTiA9ICdTVEFSVF9UQUdfVE9LRU4nO1xuVG9rZW5pemVyLkVORF9UQUdfVE9LRU4gPSAnRU5EX1RBR19UT0tFTic7XG5Ub2tlbml6ZXIuQ09NTUVOVF9UT0tFTiA9ICdDT01NRU5UX1RPS0VOJztcblRva2VuaXplci5ET0NUWVBFX1RPS0VOID0gJ0RPQ1RZUEVfVE9LRU4nO1xuVG9rZW5pemVyLkVPRl9UT0tFTiA9ICdFT0ZfVE9LRU4nO1xuVG9rZW5pemVyLkhJQkVSTkFUSU9OX1RPS0VOID0gJ0hJQkVSTkFUSU9OX1RPS0VOJztcblxuLy9Ub2tlbml6ZXIgaW5pdGlhbCBzdGF0ZXMgZm9yIGRpZmZlcmVudCBtb2Rlc1xuVG9rZW5pemVyLk1PREUgPSB7XG4gICAgREFUQTogREFUQV9TVEFURSxcbiAgICBSQ0RBVEE6IFJDREFUQV9TVEFURSxcbiAgICBSQVdURVhUOiBSQVdURVhUX1NUQVRFLFxuICAgIFNDUklQVF9EQVRBOiBTQ1JJUFRfREFUQV9TVEFURSxcbiAgICBQTEFJTlRFWFQ6IFBMQUlOVEVYVF9TVEFURVxufTtcblxuLy9TdGF0aWNcblRva2VuaXplci5nZXRUb2tlbkF0dHIgPSBmdW5jdGlvbih0b2tlbiwgYXR0ck5hbWUpIHtcbiAgICBmb3IgKGxldCBpID0gdG9rZW4uYXR0cnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYgKHRva2VuLmF0dHJzW2ldLm5hbWUgPT09IGF0dHJOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4uYXR0cnNbaV0udmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVG9rZW5pemVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBOUyA9IChleHBvcnRzLk5BTUVTUEFDRVMgPSB7XG4gICAgSFRNTDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLFxuICAgIE1BVEhNTDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnLFxuICAgIFNWRzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgICBYTElOSzogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnLFxuICAgIFhNTDogJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsXG4gICAgWE1MTlM6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLydcbn0pO1xuXG5leHBvcnRzLkFUVFJTID0ge1xuICAgIFRZUEU6ICd0eXBlJyxcbiAgICBBQ1RJT046ICdhY3Rpb24nLFxuICAgIEVOQ09ESU5HOiAnZW5jb2RpbmcnLFxuICAgIFBST01QVDogJ3Byb21wdCcsXG4gICAgTkFNRTogJ25hbWUnLFxuICAgIENPTE9SOiAnY29sb3InLFxuICAgIEZBQ0U6ICdmYWNlJyxcbiAgICBTSVpFOiAnc2l6ZSdcbn07XG5cbmV4cG9ydHMuRE9DVU1FTlRfTU9ERSA9IHtcbiAgICBOT19RVUlSS1M6ICduby1xdWlya3MnLFxuICAgIFFVSVJLUzogJ3F1aXJrcycsXG4gICAgTElNSVRFRF9RVUlSS1M6ICdsaW1pdGVkLXF1aXJrcydcbn07XG5cbmNvbnN0ICQgPSAoZXhwb3J0cy5UQUdfTkFNRVMgPSB7XG4gICAgQTogJ2EnLFxuICAgIEFERFJFU1M6ICdhZGRyZXNzJyxcbiAgICBBTk5PVEFUSU9OX1hNTDogJ2Fubm90YXRpb24teG1sJyxcbiAgICBBUFBMRVQ6ICdhcHBsZXQnLFxuICAgIEFSRUE6ICdhcmVhJyxcbiAgICBBUlRJQ0xFOiAnYXJ0aWNsZScsXG4gICAgQVNJREU6ICdhc2lkZScsXG5cbiAgICBCOiAnYicsXG4gICAgQkFTRTogJ2Jhc2UnLFxuICAgIEJBU0VGT05UOiAnYmFzZWZvbnQnLFxuICAgIEJHU09VTkQ6ICdiZ3NvdW5kJyxcbiAgICBCSUc6ICdiaWcnLFxuICAgIEJMT0NLUVVPVEU6ICdibG9ja3F1b3RlJyxcbiAgICBCT0RZOiAnYm9keScsXG4gICAgQlI6ICdicicsXG4gICAgQlVUVE9OOiAnYnV0dG9uJyxcblxuICAgIENBUFRJT046ICdjYXB0aW9uJyxcbiAgICBDRU5URVI6ICdjZW50ZXInLFxuICAgIENPREU6ICdjb2RlJyxcbiAgICBDT0w6ICdjb2wnLFxuICAgIENPTEdST1VQOiAnY29sZ3JvdXAnLFxuXG4gICAgREQ6ICdkZCcsXG4gICAgREVTQzogJ2Rlc2MnLFxuICAgIERFVEFJTFM6ICdkZXRhaWxzJyxcbiAgICBESUFMT0c6ICdkaWFsb2cnLFxuICAgIERJUjogJ2RpcicsXG4gICAgRElWOiAnZGl2JyxcbiAgICBETDogJ2RsJyxcbiAgICBEVDogJ2R0JyxcblxuICAgIEVNOiAnZW0nLFxuICAgIEVNQkVEOiAnZW1iZWQnLFxuXG4gICAgRklFTERTRVQ6ICdmaWVsZHNldCcsXG4gICAgRklHQ0FQVElPTjogJ2ZpZ2NhcHRpb24nLFxuICAgIEZJR1VSRTogJ2ZpZ3VyZScsXG4gICAgRk9OVDogJ2ZvbnQnLFxuICAgIEZPT1RFUjogJ2Zvb3RlcicsXG4gICAgRk9SRUlHTl9PQkpFQ1Q6ICdmb3JlaWduT2JqZWN0JyxcbiAgICBGT1JNOiAnZm9ybScsXG4gICAgRlJBTUU6ICdmcmFtZScsXG4gICAgRlJBTUVTRVQ6ICdmcmFtZXNldCcsXG5cbiAgICBIMTogJ2gxJyxcbiAgICBIMjogJ2gyJyxcbiAgICBIMzogJ2gzJyxcbiAgICBINDogJ2g0JyxcbiAgICBINTogJ2g1JyxcbiAgICBINjogJ2g2JyxcbiAgICBIRUFEOiAnaGVhZCcsXG4gICAgSEVBREVSOiAnaGVhZGVyJyxcbiAgICBIR1JPVVA6ICdoZ3JvdXAnLFxuICAgIEhSOiAnaHInLFxuICAgIEhUTUw6ICdodG1sJyxcblxuICAgIEk6ICdpJyxcbiAgICBJTUc6ICdpbWcnLFxuICAgIElNQUdFOiAnaW1hZ2UnLFxuICAgIElOUFVUOiAnaW5wdXQnLFxuICAgIElGUkFNRTogJ2lmcmFtZScsXG5cbiAgICBLRVlHRU46ICdrZXlnZW4nLFxuXG4gICAgTEFCRUw6ICdsYWJlbCcsXG4gICAgTEk6ICdsaScsXG4gICAgTElOSzogJ2xpbmsnLFxuICAgIExJU1RJTkc6ICdsaXN0aW5nJyxcblxuICAgIE1BSU46ICdtYWluJyxcbiAgICBNQUxJR05NQVJLOiAnbWFsaWdubWFyaycsXG4gICAgTUFSUVVFRTogJ21hcnF1ZWUnLFxuICAgIE1BVEg6ICdtYXRoJyxcbiAgICBNRU5VOiAnbWVudScsXG4gICAgTUVUQTogJ21ldGEnLFxuICAgIE1HTFlQSDogJ21nbHlwaCcsXG4gICAgTUk6ICdtaScsXG4gICAgTU86ICdtbycsXG4gICAgTU46ICdtbicsXG4gICAgTVM6ICdtcycsXG4gICAgTVRFWFQ6ICdtdGV4dCcsXG5cbiAgICBOQVY6ICduYXYnLFxuICAgIE5PQlI6ICdub2JyJyxcbiAgICBOT0ZSQU1FUzogJ25vZnJhbWVzJyxcbiAgICBOT0VNQkVEOiAnbm9lbWJlZCcsXG4gICAgTk9TQ1JJUFQ6ICdub3NjcmlwdCcsXG5cbiAgICBPQkpFQ1Q6ICdvYmplY3QnLFxuICAgIE9MOiAnb2wnLFxuICAgIE9QVEdST1VQOiAnb3B0Z3JvdXAnLFxuICAgIE9QVElPTjogJ29wdGlvbicsXG5cbiAgICBQOiAncCcsXG4gICAgUEFSQU06ICdwYXJhbScsXG4gICAgUExBSU5URVhUOiAncGxhaW50ZXh0JyxcbiAgICBQUkU6ICdwcmUnLFxuXG4gICAgUkI6ICdyYicsXG4gICAgUlA6ICdycCcsXG4gICAgUlQ6ICdydCcsXG4gICAgUlRDOiAncnRjJyxcbiAgICBSVUJZOiAncnVieScsXG5cbiAgICBTOiAncycsXG4gICAgU0NSSVBUOiAnc2NyaXB0JyxcbiAgICBTRUNUSU9OOiAnc2VjdGlvbicsXG4gICAgU0VMRUNUOiAnc2VsZWN0JyxcbiAgICBTT1VSQ0U6ICdzb3VyY2UnLFxuICAgIFNNQUxMOiAnc21hbGwnLFxuICAgIFNQQU46ICdzcGFuJyxcbiAgICBTVFJJS0U6ICdzdHJpa2UnLFxuICAgIFNUUk9ORzogJ3N0cm9uZycsXG4gICAgU1RZTEU6ICdzdHlsZScsXG4gICAgU1VCOiAnc3ViJyxcbiAgICBTVU1NQVJZOiAnc3VtbWFyeScsXG4gICAgU1VQOiAnc3VwJyxcblxuICAgIFRBQkxFOiAndGFibGUnLFxuICAgIFRCT0RZOiAndGJvZHknLFxuICAgIFRFTVBMQVRFOiAndGVtcGxhdGUnLFxuICAgIFRFWFRBUkVBOiAndGV4dGFyZWEnLFxuICAgIFRGT09UOiAndGZvb3QnLFxuICAgIFREOiAndGQnLFxuICAgIFRIOiAndGgnLFxuICAgIFRIRUFEOiAndGhlYWQnLFxuICAgIFRJVExFOiAndGl0bGUnLFxuICAgIFRSOiAndHInLFxuICAgIFRSQUNLOiAndHJhY2snLFxuICAgIFRUOiAndHQnLFxuXG4gICAgVTogJ3UnLFxuICAgIFVMOiAndWwnLFxuXG4gICAgU1ZHOiAnc3ZnJyxcblxuICAgIFZBUjogJ3ZhcicsXG5cbiAgICBXQlI6ICd3YnInLFxuXG4gICAgWE1QOiAneG1wJ1xufSk7XG5cbmV4cG9ydHMuU1BFQ0lBTF9FTEVNRU5UUyA9IHtcbiAgICBbTlMuSFRNTF06IHtcbiAgICAgICAgWyQuQUREUkVTU106IHRydWUsXG4gICAgICAgIFskLkFQUExFVF06IHRydWUsXG4gICAgICAgIFskLkFSRUFdOiB0cnVlLFxuICAgICAgICBbJC5BUlRJQ0xFXTogdHJ1ZSxcbiAgICAgICAgWyQuQVNJREVdOiB0cnVlLFxuICAgICAgICBbJC5CQVNFXTogdHJ1ZSxcbiAgICAgICAgWyQuQkFTRUZPTlRdOiB0cnVlLFxuICAgICAgICBbJC5CR1NPVU5EXTogdHJ1ZSxcbiAgICAgICAgWyQuQkxPQ0tRVU9URV06IHRydWUsXG4gICAgICAgIFskLkJPRFldOiB0cnVlLFxuICAgICAgICBbJC5CUl06IHRydWUsXG4gICAgICAgIFskLkJVVFRPTl06IHRydWUsXG4gICAgICAgIFskLkNBUFRJT05dOiB0cnVlLFxuICAgICAgICBbJC5DRU5URVJdOiB0cnVlLFxuICAgICAgICBbJC5DT0xdOiB0cnVlLFxuICAgICAgICBbJC5DT0xHUk9VUF06IHRydWUsXG4gICAgICAgIFskLkREXTogdHJ1ZSxcbiAgICAgICAgWyQuREVUQUlMU106IHRydWUsXG4gICAgICAgIFskLkRJUl06IHRydWUsXG4gICAgICAgIFskLkRJVl06IHRydWUsXG4gICAgICAgIFskLkRMXTogdHJ1ZSxcbiAgICAgICAgWyQuRFRdOiB0cnVlLFxuICAgICAgICBbJC5FTUJFRF06IHRydWUsXG4gICAgICAgIFskLkZJRUxEU0VUXTogdHJ1ZSxcbiAgICAgICAgWyQuRklHQ0FQVElPTl06IHRydWUsXG4gICAgICAgIFskLkZJR1VSRV06IHRydWUsXG4gICAgICAgIFskLkZPT1RFUl06IHRydWUsXG4gICAgICAgIFskLkZPUk1dOiB0cnVlLFxuICAgICAgICBbJC5GUkFNRV06IHRydWUsXG4gICAgICAgIFskLkZSQU1FU0VUXTogdHJ1ZSxcbiAgICAgICAgWyQuSDFdOiB0cnVlLFxuICAgICAgICBbJC5IMl06IHRydWUsXG4gICAgICAgIFskLkgzXTogdHJ1ZSxcbiAgICAgICAgWyQuSDRdOiB0cnVlLFxuICAgICAgICBbJC5INV06IHRydWUsXG4gICAgICAgIFskLkg2XTogdHJ1ZSxcbiAgICAgICAgWyQuSEVBRF06IHRydWUsXG4gICAgICAgIFskLkhFQURFUl06IHRydWUsXG4gICAgICAgIFskLkhHUk9VUF06IHRydWUsXG4gICAgICAgIFskLkhSXTogdHJ1ZSxcbiAgICAgICAgWyQuSFRNTF06IHRydWUsXG4gICAgICAgIFskLklGUkFNRV06IHRydWUsXG4gICAgICAgIFskLklNR106IHRydWUsXG4gICAgICAgIFskLklOUFVUXTogdHJ1ZSxcbiAgICAgICAgWyQuTEldOiB0cnVlLFxuICAgICAgICBbJC5MSU5LXTogdHJ1ZSxcbiAgICAgICAgWyQuTElTVElOR106IHRydWUsXG4gICAgICAgIFskLk1BSU5dOiB0cnVlLFxuICAgICAgICBbJC5NQVJRVUVFXTogdHJ1ZSxcbiAgICAgICAgWyQuTUVOVV06IHRydWUsXG4gICAgICAgIFskLk1FVEFdOiB0cnVlLFxuICAgICAgICBbJC5OQVZdOiB0cnVlLFxuICAgICAgICBbJC5OT0VNQkVEXTogdHJ1ZSxcbiAgICAgICAgWyQuTk9GUkFNRVNdOiB0cnVlLFxuICAgICAgICBbJC5OT1NDUklQVF06IHRydWUsXG4gICAgICAgIFskLk9CSkVDVF06IHRydWUsXG4gICAgICAgIFskLk9MXTogdHJ1ZSxcbiAgICAgICAgWyQuUF06IHRydWUsXG4gICAgICAgIFskLlBBUkFNXTogdHJ1ZSxcbiAgICAgICAgWyQuUExBSU5URVhUXTogdHJ1ZSxcbiAgICAgICAgWyQuUFJFXTogdHJ1ZSxcbiAgICAgICAgWyQuU0NSSVBUXTogdHJ1ZSxcbiAgICAgICAgWyQuU0VDVElPTl06IHRydWUsXG4gICAgICAgIFskLlNFTEVDVF06IHRydWUsXG4gICAgICAgIFskLlNPVVJDRV06IHRydWUsXG4gICAgICAgIFskLlNUWUxFXTogdHJ1ZSxcbiAgICAgICAgWyQuU1VNTUFSWV06IHRydWUsXG4gICAgICAgIFskLlRBQkxFXTogdHJ1ZSxcbiAgICAgICAgWyQuVEJPRFldOiB0cnVlLFxuICAgICAgICBbJC5URF06IHRydWUsXG4gICAgICAgIFskLlRFTVBMQVRFXTogdHJ1ZSxcbiAgICAgICAgWyQuVEVYVEFSRUFdOiB0cnVlLFxuICAgICAgICBbJC5URk9PVF06IHRydWUsXG4gICAgICAgIFskLlRIXTogdHJ1ZSxcbiAgICAgICAgWyQuVEhFQURdOiB0cnVlLFxuICAgICAgICBbJC5USVRMRV06IHRydWUsXG4gICAgICAgIFskLlRSXTogdHJ1ZSxcbiAgICAgICAgWyQuVFJBQ0tdOiB0cnVlLFxuICAgICAgICBbJC5VTF06IHRydWUsXG4gICAgICAgIFskLldCUl06IHRydWUsXG4gICAgICAgIFskLlhNUF06IHRydWVcbiAgICB9LFxuICAgIFtOUy5NQVRITUxdOiB7XG4gICAgICAgIFskLk1JXTogdHJ1ZSxcbiAgICAgICAgWyQuTU9dOiB0cnVlLFxuICAgICAgICBbJC5NTl06IHRydWUsXG4gICAgICAgIFskLk1TXTogdHJ1ZSxcbiAgICAgICAgWyQuTVRFWFRdOiB0cnVlLFxuICAgICAgICBbJC5BTk5PVEFUSU9OX1hNTF06IHRydWVcbiAgICB9LFxuICAgIFtOUy5TVkddOiB7XG4gICAgICAgIFskLlRJVExFXTogdHJ1ZSxcbiAgICAgICAgWyQuRk9SRUlHTl9PQkpFQ1RdOiB0cnVlLFxuICAgICAgICBbJC5ERVNDXTogdHJ1ZVxuICAgIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEhUTUwgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbCcpO1xuXG4vL0FsaWFzZXNcbmNvbnN0ICQgPSBIVE1MLlRBR19OQU1FUztcbmNvbnN0IE5TID0gSFRNTC5OQU1FU1BBQ0VTO1xuXG4vL0VsZW1lbnQgdXRpbHNcblxuLy9PUFRJTUlaQVRJT046IEludGVnZXIgY29tcGFyaXNvbnMgYXJlIGxvdy1jb3N0LCBzbyB3ZSBjYW4gdXNlIHZlcnkgZmFzdCB0YWcgbmFtZSBsZW5ndGggZmlsdGVycyBoZXJlLlxuLy9JdCdzIGZhc3RlciB0aGFuIHVzaW5nIGRpY3Rpb25hcnkuXG5mdW5jdGlvbiBpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCh0bikge1xuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5QO1xuXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5SQiB8fCB0biA9PT0gJC5SUCB8fCB0biA9PT0gJC5SVCB8fCB0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCB8fCB0biA9PT0gJC5MSTtcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuUlRDO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5PUFRJT047XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLk9QVEdST1VQO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWRUaG9yb3VnaGx5KHRuKSB7XG4gICAgc3dpdGNoICh0bi5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlA7XG5cbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5SQiB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlJQIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuUlQgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5ERCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkRUIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuTEkgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5URCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlRIIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuVFJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlJUQztcblxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQ7XG5cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLk9QVElPTjtcblxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuQ0FQVElPTjtcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuT1BUR1JPVVAgfHwgdG4gPT09ICQuQ09MR1JPVVA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1Njb3BpbmdFbGVtZW50KHRuLCBucykge1xuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuSFRNTDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTUkgfHwgdG4gPT09ICQuTU8gfHwgdG4gPT09ICQuTU4gfHwgdG4gPT09ICQuTVMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLk1BVEhNTDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLkhUTUw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkRFU0MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLlNWRztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5zID09PSBOUy5IVE1MO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NVEVYVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuTUFUSE1MO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5USVRMRSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuU1ZHO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICByZXR1cm4gKHRuID09PSAkLkFQUExFVCB8fCB0biA9PT0gJC5PQkpFQ1QpICYmIG5zID09PSBOUy5IVE1MO1xuXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHJldHVybiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5NQVJRVUVFKSAmJiBucyA9PT0gTlMuSFRNTDtcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUw7XG5cbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5GT1JFSUdOX09CSkVDVCAmJiBucyA9PT0gTlMuU1ZHO1xuXG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuQU5OT1RBVElPTl9YTUwgJiYgbnMgPT09IE5TLk1BVEhNTDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8vU3RhY2sgb2Ygb3BlbiBlbGVtZW50c1xuY2xhc3MgT3BlbkVsZW1lbnRTdGFjayB7XG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQsIHRyZWVBZGFwdGVyKSB7XG4gICAgICAgIHRoaXMuc3RhY2tUb3AgPSAtMTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBkb2N1bWVudDtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudFRtcGxDb250ZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy50bXBsQ291bnQgPSAwO1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdHJlZUFkYXB0ZXI7XG4gICAgfVxuXG4gICAgLy9JbmRleCBvZiBlbGVtZW50XG4gICAgX2luZGV4T2YoZWxlbWVudCkge1xuICAgICAgICBsZXQgaWR4ID0gLTE7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtc1tpXSA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGlkeCA9IGk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlkeDtcbiAgICB9XG5cbiAgICAvL1VwZGF0ZSBjdXJyZW50IGVsZW1lbnRcbiAgICBfaXNJblRlbXBsYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50VGFnTmFtZSA9PT0gJC5URU1QTEFURSAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpID09PSBOUy5IVE1MO1xuICAgIH1cblxuICAgIF91cGRhdGVDdXJyZW50RWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5pdGVtc1t0aGlzLnN0YWNrVG9wXTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSA9IHRoaXMuY3VycmVudCAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5jdXJyZW50KTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRUbXBsQ29udGVudCA9IHRoaXMuX2lzSW5UZW1wbGF0ZSgpID8gdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQodGhpcy5jdXJyZW50KSA6IG51bGw7XG4gICAgfVxuXG4gICAgLy9NdXRhdGlvbnNcbiAgICBwdXNoKGVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5pdGVtc1srK3RoaXMuc3RhY2tUb3BdID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcblxuICAgICAgICBpZiAodGhpcy5faXNJblRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudG1wbENvdW50Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3AoKSB7XG4gICAgICAgIHRoaXMuc3RhY2tUb3AtLTtcblxuICAgICAgICBpZiAodGhpcy50bXBsQ291bnQgPiAwICYmIHRoaXMuX2lzSW5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRtcGxDb3VudC0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICByZXBsYWNlKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5faW5kZXhPZihvbGRFbGVtZW50KTtcblxuICAgICAgICB0aGlzLml0ZW1zW2lkeF0gPSBuZXdFbGVtZW50O1xuXG4gICAgICAgIGlmIChpZHggPT09IHRoaXMuc3RhY2tUb3ApIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRBZnRlcihyZWZlcmVuY2VFbGVtZW50LCBuZXdFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGluc2VydGlvbklkeCA9IHRoaXMuX2luZGV4T2YocmVmZXJlbmNlRWxlbWVudCkgKyAxO1xuXG4gICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3RWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGluc2VydGlvbklkeCA9PT0gKyt0aGlzLnN0YWNrVG9wKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcG9wVW50aWxUYWdOYW1lUG9wcGVkKHRhZ05hbWUpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLmN1cnJlbnRUYWdOYW1lO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBvcFVudGlsRWxlbWVudFBvcHBlZChlbGVtZW50KSB7XG4gICAgICAgIHdoaWxlICh0aGlzLnN0YWNrVG9wID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvcHBlZEVsZW1lbnQgPSB0aGlzLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG5cbiAgICAgICAgICAgIGlmIChwb3BwZWRFbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMuY3VycmVudFRhZ05hbWU7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5IMSB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkgyIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSDMgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5INCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkg1IHx8XG4gICAgICAgICAgICAgICAgKHRuID09PSAkLkg2ICYmIG5zID09PSBOUy5IVE1MKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3BVbnRpbFRhYmxlQ2VsbFBvcHBlZCgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLmN1cnJlbnRUYWdOYW1lO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEQgfHwgKHRuID09PSAkLlRIICYmIG5zID09PSBOUy5IVE1MKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcG9wQWxsVXBUb0h0bWxFbGVtZW50KCkge1xuICAgICAgICAvL05PVEU6IGhlcmUgd2UgYXNzdW1lIHRoYXQgcm9vdCA8aHRtbD4gZWxlbWVudCBpcyBhbHdheXMgZmlyc3QgaW4gdGhlIG9wZW4gZWxlbWVudCBzdGFjaywgc29cbiAgICAgICAgLy93ZSBwZXJmb3JtIHRoaXMgZmFzdCBzdGFjayBjbGVhbiB1cC5cbiAgICAgICAgdGhpcy5zdGFja1RvcCA9IDA7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICh0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRBQkxFICYmIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEVNUExBVEUgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5IVE1MKSB8fFxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSAhPT0gTlMuSFRNTFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICh0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRCT0RZICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5URk9PVCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEhFQUQgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRFTVBMQVRFICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5IVE1MKSB8fFxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSAhPT0gTlMuSFRNTFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpIHtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgKHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVFIgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5URU1QTEFURSAmJiB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLkhUTUwpIHx8XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpICE9PSBOUy5IVE1MXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNbaV0gPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrVG9wLS07XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vU2VhcmNoXG4gICAgdHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKSB7XG4gICAgICAgIC8vUHJvcGVybHkgbmVzdGVkIDxib2R5PiBlbGVtZW50IChzaG91bGQgYmUgc2Vjb25kIGVsZW1lbnQgaW4gc3RhY2spLlxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5pdGVtc1sxXTtcblxuICAgICAgICByZXR1cm4gZWxlbWVudCAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09ICQuQk9EWSA/IGVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4T2YoZWxlbWVudCkgPiAtMTtcbiAgICB9XG5cbiAgICBnZXRDb21tb25BbmNlc3RvcihlbGVtZW50KSB7XG4gICAgICAgIGxldCBlbGVtZW50SWR4ID0gdGhpcy5faW5kZXhPZihlbGVtZW50KTtcblxuICAgICAgICByZXR1cm4gLS1lbGVtZW50SWR4ID49IDAgPyB0aGlzLml0ZW1zW2VsZW1lbnRJZHhdIDogbnVsbDtcbiAgICB9XG5cbiAgICBpc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrVG9wID09PSAwICYmIHRoaXMuY3VycmVudFRhZ05hbWUgPT09ICQuSFRNTDtcbiAgICB9XG5cbiAgICAvL0VsZW1lbnQgaW4gc2NvcGVcbiAgICBoYXNJblNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNTY29waW5nRWxlbWVudCh0biwgbnMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INikgJiZcbiAgICAgICAgICAgICAgICBucyA9PT0gTlMuSFRNTFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1Njb3BpbmdFbGVtZW50KHRuLCBucykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYXNJbkxpc3RJdGVtU2NvcGUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lICYmIG5zID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICgoKHRuID09PSAkLlVMIHx8IHRuID09PSAkLk9MKSAmJiBucyA9PT0gTlMuSFRNTCkgfHwgaXNTY29waW5nRWxlbWVudCh0biwgbnMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGFzSW5CdXR0b25TY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCh0biA9PT0gJC5CVVRUT04gJiYgbnMgPT09IE5TLkhUTUwpIHx8IGlzU2NvcGluZ0VsZW1lbnQodG4sIG5zKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGhhc0luVGFibGVTY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuXG4gICAgICAgICAgICBpZiAobnMgIT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5UQUJMRSB8fCB0biA9PT0gJC5URU1QTEFURSB8fCB0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmIChucyAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVEZPT1QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYXNJblNlbGVjdFNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmIChucyAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRuICE9PSAkLk9QVElPTiAmJiB0biAhPT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vSW1wbGllZCBlbmQgdGFnc1xuICAgIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKSB7XG4gICAgICAgIHdoaWxlIChpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCh0aGlzLmN1cnJlbnRUYWdOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3NUaG9yb3VnaGx5KCkge1xuICAgICAgICB3aGlsZSAoaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWRUaG9yb3VnaGx5KHRoaXMuY3VycmVudFRhZ05hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oZXhjbHVzaW9uVGFnTmFtZSkge1xuICAgICAgICB3aGlsZSAoaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWQodGhpcy5jdXJyZW50VGFnTmFtZSkgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gZXhjbHVzaW9uVGFnTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBPcGVuRWxlbWVudFN0YWNrO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL0NvbnN0XG5jb25zdCBOT0FIX0FSS19DQVBBQ0lUWSA9IDM7XG5cbi8vTGlzdCBvZiBmb3JtYXR0aW5nIGVsZW1lbnRzXG5jbGFzcyBGb3JtYXR0aW5nRWxlbWVudExpc3Qge1xuICAgIGNvbnN0cnVjdG9yKHRyZWVBZGFwdGVyKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gW107XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIgPSB0cmVlQWRhcHRlcjtcbiAgICAgICAgdGhpcy5ib29rbWFyayA9IG51bGw7XG4gICAgfVxuXG4gICAgLy9Ob2FoIEFyaydzIGNvbmRpdGlvblxuICAgIC8vT1BUSU1JWkFUSU9OOiBhdCBmaXJzdCB3ZSB0cnkgdG8gZmluZCBwb3NzaWJsZSBjYW5kaWRhdGVzIGZvciBleGNsdXNpb24gdXNpbmdcbiAgICAvL2xpZ2h0d2VpZ2h0IGhldXJpc3RpY3Mgd2l0aG91dCB0aG9yb3VnaCBhdHRyaWJ1dGVzIGNoZWNrLlxuICAgIF9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyhuZXdFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5sZW5ndGggPj0gTk9BSF9BUktfQ0FQQUNJVFkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5lQXR0cnNMZW5ndGggPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5ld0VsZW1lbnQpLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IG5lVGFnTmFtZSA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IG5lTmFtZXNwYWNlVVJJID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkobmV3RWxlbWVudCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXNbaV07XG5cbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZW50cnkuZWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50QXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDYW5kaWRhdGUgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IG5lVGFnTmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KSA9PT0gbmVOYW1lc3BhY2VVUkkgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudEF0dHJzLmxlbmd0aCA9PT0gbmVBdHRyc0xlbmd0aDtcblxuICAgICAgICAgICAgICAgIGlmIChpc0NhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goeyBpZHg6IGksIGF0dHJzOiBlbGVtZW50QXR0cnMgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZXMubGVuZ3RoIDwgTk9BSF9BUktfQ0FQQUNJVFkgPyBbXSA6IGNhbmRpZGF0ZXM7XG4gICAgfVxuXG4gICAgX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24obmV3RWxlbWVudCkge1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gdGhpcy5fZ2V0Tm9haEFya0NvbmRpdGlvbkNhbmRpZGF0ZXMobmV3RWxlbWVudCk7XG4gICAgICAgIGxldCBjTGVuZ3RoID0gY2FuZGlkYXRlcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGNMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5lQXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbmVBdHRyc0xlbmd0aCA9IG5lQXR0cnMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgbmVBdHRyc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgICAgIC8vTk9URTogYnVpbGQgYXR0cnMgbWFwIGZvciB0aGUgbmV3IGVsZW1lbnQgc28gd2UgY2FuIHBlcmZvcm0gZmFzdCBsb29rdXBzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lQXR0cnNMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lQXR0ciA9IG5lQXR0cnNbaV07XG5cbiAgICAgICAgICAgICAgICBuZUF0dHJzTWFwW25lQXR0ci5uYW1lXSA9IG5lQXR0ci52YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZUF0dHJzTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNMZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjQXR0ciA9IGNhbmRpZGF0ZXNbal0uYXR0cnNbaV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5lQXR0cnNNYXBbY0F0dHIubmFtZV0gIT09IGNBdHRyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShqLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNMZW5ndGgtLTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzLmxlbmd0aCA8IE5PQUhfQVJLX0NBUEFDSVRZKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vTk9URTogcmVtb3ZlIGJvdHRvbW1vc3QgY2FuZGlkYXRlcyB1bnRpbCBOb2FoJ3MgQXJrIGNvbmRpdGlvbiB3aWxsIG5vdCBiZSBtZXRcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBjTGVuZ3RoIC0gMTsgaSA+PSBOT0FIX0FSS19DQVBBQ0lUWSAtIDE7IGktLSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoY2FuZGlkYXRlc1tpXS5pZHgsIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL011dGF0aW9uc1xuICAgIGluc2VydE1hcmtlcigpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnB1c2goeyB0eXBlOiBGb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZIH0pO1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHB1c2hFbGVtZW50KGVsZW1lbnQsIHRva2VuKSB7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24oZWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogRm9ybWF0dGluZ0VsZW1lbnRMaXN0LkVMRU1FTlRfRU5UUlksXG4gICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICAgICAgdG9rZW46IHRva2VuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgaW5zZXJ0RWxlbWVudEFmdGVyQm9va21hcmsoZWxlbWVudCwgdG9rZW4pIHtcbiAgICAgICAgbGV0IGJvb2ttYXJrSWR4ID0gdGhpcy5sZW5ndGggLSAxO1xuXG4gICAgICAgIGZvciAoOyBib29rbWFya0lkeCA+PSAwOyBib29rbWFya0lkeC0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRyaWVzW2Jvb2ttYXJrSWR4XSA9PT0gdGhpcy5ib29rbWFyaykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZShib29rbWFya0lkeCArIDEsIDAsIHtcbiAgICAgICAgICAgIHR5cGU6IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5FTEVNRU5UX0VOVFJZLFxuICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgICAgIHRva2VuOiB0b2tlblxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJlbW92ZUVudHJ5KGVudHJ5KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRyaWVzW2ldID09PSBlbnRyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyVG9MYXN0TWFya2VyKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLnBvcCgpO1xuXG4gICAgICAgICAgICB0aGlzLmxlbmd0aC0tO1xuXG4gICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9TZWFyY2hcbiAgICBnZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXNbaV07XG5cbiAgICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSBGb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZW50cnkuZWxlbWVudCkgPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBnZXRFbGVtZW50RW50cnkoZWxlbWVudCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXNbaV07XG5cbiAgICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSBGb3JtYXR0aW5nRWxlbWVudExpc3QuRUxFTUVOVF9FTlRSWSAmJiBlbnRyeS5lbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG4vL0VudHJ5IHR5cGVzXG5Gb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZID0gJ01BUktFUl9FTlRSWSc7XG5Gb3JtYXR0aW5nRWxlbWVudExpc3QuRUxFTUVOVF9FTlRSWSA9ICdFTEVNRU5UX0VOVFJZJztcblxubW9kdWxlLmV4cG9ydHMgPSBGb3JtYXR0aW5nRWxlbWVudExpc3Q7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNsYXNzIE1peGluIHtcbiAgICBjb25zdHJ1Y3Rvcihob3N0KSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kcyA9IHt9O1xuICAgICAgICBjb25zdCBvdmVycmlkZGVuTWV0aG9kcyA9IHRoaXMuX2dldE92ZXJyaWRkZW5NZXRob2RzKHRoaXMsIG9yaWdpbmFsTWV0aG9kcyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3ZlcnJpZGRlbk1ldGhvZHMpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG92ZXJyaWRkZW5NZXRob2RzW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbE1ldGhvZHNba2V5XSA9IGhvc3Rba2V5XTtcbiAgICAgICAgICAgICAgICBob3N0W2tleV0gPSBvdmVycmlkZGVuTWV0aG9kc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbn1cblxuTWl4aW4uaW5zdGFsbCA9IGZ1bmN0aW9uKGhvc3QsIEN0b3IsIG9wdHMpIHtcbiAgICBpZiAoIWhvc3QuX19taXhpbnMpIHtcbiAgICAgICAgaG9zdC5fX21peGlucyA9IFtdO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaG9zdC5fX21peGlucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaG9zdC5fX21peGluc1tpXS5jb25zdHJ1Y3RvciA9PT0gQ3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGhvc3QuX19taXhpbnNbaV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtaXhpbiA9IG5ldyBDdG9yKGhvc3QsIG9wdHMpO1xuXG4gICAgaG9zdC5fX21peGlucy5wdXNoKG1peGluKTtcblxuICAgIHJldHVybiBtaXhpbjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTWl4aW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKTtcblxuY2xhc3MgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluIGV4dGVuZHMgTWl4aW4ge1xuICAgIGNvbnN0cnVjdG9yKHByZXByb2Nlc3Nvcikge1xuICAgICAgICBzdXBlcihwcmVwcm9jZXNzb3IpO1xuXG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yID0gcHJlcHJvY2Vzc29yO1xuICAgICAgICB0aGlzLmlzRW9sID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGluZVN0YXJ0UG9zID0gMDtcbiAgICAgICAgdGhpcy5kcm9wcGVkQnVmZmVyU2l6ZSA9IDA7XG5cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICB0aGlzLmNvbCA9IDA7XG4gICAgICAgIHRoaXMubGluZSA9IDE7XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWR2YW5jZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSB0aGlzLnBvcyArIDE7XG4gICAgICAgICAgICAgICAgY29uc3QgY2ggPSB0aGlzLmh0bWxbcG9zXTtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogTEYgc2hvdWxkIGJlIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgbGluZVxuICAgICAgICAgICAgICAgIGlmIChteG4uaXNFb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgbXhuLmlzRW9sID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIG14bi5saW5lKys7XG4gICAgICAgICAgICAgICAgICAgIG14bi5saW5lU3RhcnRQb3MgPSBwb3M7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXFxuJyB8fCAoY2ggPT09ICdcXHInICYmIHRoaXMuaHRtbFtwb3MgKyAxXSAhPT0gJ1xcbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIG14bi5pc0VvbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbXhuLmNvbCA9IHBvcyAtIG14bi5saW5lU3RhcnRQb3MgKyAxO1xuICAgICAgICAgICAgICAgIG14bi5vZmZzZXQgPSBteG4uZHJvcHBlZEJ1ZmZlclNpemUgKyBwb3M7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZy5hZHZhbmNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXRyZWF0KCkge1xuICAgICAgICAgICAgICAgIG9yaWcucmV0cmVhdC5jYWxsKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgbXhuLmlzRW9sID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbXhuLmNvbCA9IHRoaXMucG9zIC0gbXhuLmxpbmVTdGFydFBvcyArIDE7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcm9wUGFyc2VkQ2h1bmsoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldlBvcyA9IHRoaXMucG9zO1xuXG4gICAgICAgICAgICAgICAgb3JpZy5kcm9wUGFyc2VkQ2h1bmsuY2FsbCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZHVjdGlvbiA9IHByZXZQb3MgLSB0aGlzLnBvcztcblxuICAgICAgICAgICAgICAgIG14bi5saW5lU3RhcnRQb3MgLT0gcmVkdWN0aW9uO1xuICAgICAgICAgICAgICAgIG14bi5kcm9wcGVkQnVmZmVyU2l6ZSArPSByZWR1Y3Rpb247XG4gICAgICAgICAgICAgICAgbXhuLm9mZnNldCA9IG14bi5kcm9wcGVkQnVmZmVyU2l6ZSArIHRoaXMucG9zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKTtcbmNvbnN0IFRva2VuaXplciA9IHJlcXVpcmUoJy4uLy4uL3Rva2VuaXplcicpO1xuY29uc3QgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluID0gcmVxdWlyZSgnLi4vcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluJyk7XG5cbmNsYXNzIExvY2F0aW9uSW5mb1Rva2VuaXplck1peGluIGV4dGVuZHMgTWl4aW4ge1xuICAgIGNvbnN0cnVjdG9yKHRva2VuaXplcikge1xuICAgICAgICBzdXBlcih0b2tlbml6ZXIpO1xuXG4gICAgICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyO1xuICAgICAgICB0aGlzLnBvc1RyYWNrZXIgPSBNaXhpbi5pbnN0YWxsKHRva2VuaXplci5wcmVwcm9jZXNzb3IsIFBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbik7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3RMb2MgPSBudWxsO1xuICAgIH1cblxuICAgIF9nZXRDdXJyZW50TG9jYXRpb24oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGFydExpbmU6IHRoaXMucG9zVHJhY2tlci5saW5lLFxuICAgICAgICAgICAgc3RhcnRDb2w6IHRoaXMucG9zVHJhY2tlci5jb2wsXG4gICAgICAgICAgICBzdGFydE9mZnNldDogdGhpcy5wb3NUcmFja2VyLm9mZnNldCxcbiAgICAgICAgICAgIGVuZExpbmU6IC0xLFxuICAgICAgICAgICAgZW5kQ29sOiAtMSxcbiAgICAgICAgICAgIGVuZE9mZnNldDogLTFcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfYXR0YWNoQ3VycmVudEF0dHJMb2NhdGlvbkluZm8oKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbi5lbmRMaW5lID0gdGhpcy5wb3NUcmFja2VyLmxpbmU7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbi5lbmRDb2wgPSB0aGlzLnBvc1RyYWNrZXIuY29sO1xuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyTG9jYXRpb24uZW5kT2Zmc2V0ID0gdGhpcy5wb3NUcmFja2VyLm9mZnNldDtcblxuICAgICAgICBjb25zdCBjdXJyZW50VG9rZW4gPSB0aGlzLnRva2VuaXplci5jdXJyZW50VG9rZW47XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBdHRyID0gdGhpcy50b2tlbml6ZXIuY3VycmVudEF0dHI7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50VG9rZW4ubG9jYXRpb24uYXR0cnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbi5sb2NhdGlvbi5hdHRycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50VG9rZW4ubG9jYXRpb24uYXR0cnNbY3VycmVudEF0dHIubmFtZV0gPSB0aGlzLmN1cnJlbnRBdHRyTG9jYXRpb247XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICBjb25zdCBtZXRob2RzID0ge1xuICAgICAgICAgICAgX2NyZWF0ZVN0YXJ0VGFnVG9rZW4oKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlU3RhcnRUYWdUb2tlbi5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uID0gbXhuLmN0TG9jO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZUVuZFRhZ1Rva2VuKCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUVuZFRhZ1Rva2VuLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24gPSBteG4uY3RMb2M7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfY3JlYXRlQ29tbWVudFRva2VuKCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUNvbW1lbnRUb2tlbi5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uID0gbXhuLmN0TG9jO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZURvY3R5cGVUb2tlbihpbml0aWFsTmFtZSkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZURvY3R5cGVUb2tlbi5jYWxsKHRoaXMsIGluaXRpYWxOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbiA9IG14bi5jdExvYztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9jcmVhdGVDaGFyYWN0ZXJUb2tlbih0eXBlLCBjaCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUNoYXJhY3RlclRva2VuLmNhbGwodGhpcywgdHlwZSwgY2gpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uID0gbXhuLmN0TG9jO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZUVPRlRva2VuKCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUVPRlRva2VuLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24gPSBteG4uX2dldEN1cnJlbnRMb2NhdGlvbigpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZUF0dHIoYXR0ck5hbWVGaXJzdENoKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlQXR0ci5jYWxsKHRoaXMsIGF0dHJOYW1lRmlyc3RDaCk7XG4gICAgICAgICAgICAgICAgbXhuLmN1cnJlbnRBdHRyTG9jYXRpb24gPSBteG4uX2dldEN1cnJlbnRMb2NhdGlvbigpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2xlYXZlQXR0ck5hbWUodG9TdGF0ZSkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2xlYXZlQXR0ck5hbWUuY2FsbCh0aGlzLCB0b1N0YXRlKTtcbiAgICAgICAgICAgICAgICBteG4uX2F0dGFjaEN1cnJlbnRBdHRyTG9jYXRpb25JbmZvKCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfbGVhdmVBdHRyVmFsdWUodG9TdGF0ZSkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2xlYXZlQXR0clZhbHVlLmNhbGwodGhpcywgdG9TdGF0ZSk7XG4gICAgICAgICAgICAgICAgbXhuLl9hdHRhY2hDdXJyZW50QXR0ckxvY2F0aW9uSW5mbygpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2VtaXRDdXJyZW50VG9rZW4oKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3RMb2MgPSB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbjtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBwZW5kaW5nIGNoYXJhY3RlciB0b2tlbiBtYWtlIGl0J3MgZW5kIGxvY2F0aW9uIGVxdWFsIHRvIHRoZVxuICAgICAgICAgICAgICAgIC8vY3VycmVudCB0b2tlbidzIHN0YXJ0IGxvY2F0aW9uLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbi5lbmRMaW5lID0gY3RMb2Muc3RhcnRMaW5lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbi5lbmRDb2wgPSBjdExvYy5zdGFydENvbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24uZW5kT2Zmc2V0ID0gY3RMb2Muc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFRva2VuLnR5cGUgPT09IFRva2VuaXplci5FT0ZfVE9LRU4pIHtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kTGluZSA9IGN0TG9jLnN0YXJ0TGluZTtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kQ29sID0gY3RMb2Muc3RhcnRDb2w7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZE9mZnNldCA9IGN0TG9jLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZExpbmUgPSBteG4ucG9zVHJhY2tlci5saW5lO1xuICAgICAgICAgICAgICAgICAgICBjdExvYy5lbmRDb2wgPSBteG4ucG9zVHJhY2tlci5jb2wgKyAxO1xuICAgICAgICAgICAgICAgICAgICBjdExvYy5lbmRPZmZzZXQgPSBteG4ucG9zVHJhY2tlci5vZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9yaWcuX2VtaXRDdXJyZW50VG9rZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN0TG9jID0gdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gJiYgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb247XG5cbiAgICAgICAgICAgICAgICAvL05PVEU6IGlmIHdlIGhhdmUgY2hhcmFjdGVyIHRva2VuIGFuZCBpdCdzIGxvY2F0aW9uIHdhc24ndCBzZXQgaW4gdGhlIF9lbWl0Q3VycmVudFRva2VuKCksXG4gICAgICAgICAgICAgICAgLy90aGVuIHNldCBpdCdzIGxvY2F0aW9uIGF0IHRoZSBjdXJyZW50IHByZXByb2Nlc3NvciBwb3NpdGlvbi5cbiAgICAgICAgICAgICAgICAvL1dlIGRvbid0IG5lZWQgdG8gaW5jcmVtZW50IHByZXByb2Nlc3NvciBwb3NpdGlvbiwgc2luY2UgY2hhcmFjdGVyIHRva2VuXG4gICAgICAgICAgICAgICAgLy9lbWlzc2lvbiBpcyBhbHdheXMgZm9yY2VkIGJ5IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG9rZW4gaGVyZS5cbiAgICAgICAgICAgICAgICAvL1NvLCB3ZSBhbHJlYWR5IGhhdmUgYWR2YW5jZWQgcG9zaXRpb24uXG4gICAgICAgICAgICAgICAgaWYgKGN0TG9jICYmIGN0TG9jLmVuZE9mZnNldCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kTGluZSA9IG14bi5wb3NUcmFja2VyLmxpbmU7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZENvbCA9IG14bi5wb3NUcmFja2VyLmNvbDtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kT2Zmc2V0ID0gbXhuLnBvc1RyYWNrZXIub2Zmc2V0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9yaWcuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvL05PVEU6IHBhdGNoIGluaXRpYWwgc3RhdGVzIGZvciBlYWNoIG1vZGUgdG8gb2J0YWluIHRva2VuIHN0YXJ0IHBvc2l0aW9uXG4gICAgICAgIE9iamVjdC5rZXlzKFRva2VuaXplci5NT0RFKS5mb3JFYWNoKG1vZGVOYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gVG9rZW5pemVyLk1PREVbbW9kZU5hbWVdO1xuXG4gICAgICAgICAgICBtZXRob2RzW3N0YXRlXSA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN0TG9jID0gbXhuLl9nZXRDdXJyZW50TG9jYXRpb24oKTtcbiAgICAgICAgICAgICAgICBvcmlnW3N0YXRlXS5jYWxsKHRoaXMsIGNwKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBMb2NhdGlvbkluZm9PcGVuRWxlbWVudFN0YWNrTWl4aW4gZXh0ZW5kcyBNaXhpbiB7XG4gICAgY29uc3RydWN0b3Ioc3RhY2ssIG9wdHMpIHtcbiAgICAgICAgc3VwZXIoc3RhY2spO1xuXG4gICAgICAgIHRoaXMub25JdGVtUG9wID0gb3B0cy5vbkl0ZW1Qb3A7XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcG9wKCkge1xuICAgICAgICAgICAgICAgIG14bi5vbkl0ZW1Qb3AodGhpcy5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBvcmlnLnBvcC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcG9wQWxsVXBUb0h0bWxFbGVtZW50KCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIG14bi5vbkl0ZW1Qb3AodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgb3JpZy5wb3BBbGxVcFRvSHRtbEVsZW1lbnQuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbXhuLm9uSXRlbVBvcCh0aGlzLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIG9yaWcucmVtb3ZlLmNhbGwodGhpcywgZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IExvY2F0aW9uSW5mb09wZW5FbGVtZW50U3RhY2tNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuY29uc3QgVG9rZW5pemVyID0gcmVxdWlyZSgnLi4vLi4vdG9rZW5pemVyJyk7XG5jb25zdCBMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbiA9IHJlcXVpcmUoJy4vdG9rZW5pemVyLW1peGluJyk7XG5jb25zdCBMb2NhdGlvbkluZm9PcGVuRWxlbWVudFN0YWNrTWl4aW4gPSByZXF1aXJlKCcuL29wZW4tZWxlbWVudC1zdGFjay1taXhpbicpO1xuY29uc3QgSFRNTCA9IHJlcXVpcmUoJy4uLy4uL2NvbW1vbi9odG1sJyk7XG5cbi8vQWxpYXNlc1xuY29uc3QgJCA9IEhUTUwuVEFHX05BTUVTO1xuXG5jbGFzcyBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiBleHRlbmRzIE1peGluIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJzZXIpIHtcbiAgICAgICAgc3VwZXIocGFyc2VyKTtcblxuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlciA9IHRoaXMucGFyc2VyLnRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLnBvc1RyYWNrZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmxhc3RTdGFydFRhZ1Rva2VuID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG4gICAgfVxuXG4gICAgX3NldFN0YXJ0TG9jYXRpb24oZWxlbWVudCkge1xuICAgICAgICBsZXQgbG9jID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdUb2tlbikge1xuICAgICAgICAgICAgbG9jID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5sYXN0U3RhcnRUYWdUb2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICBsb2Muc3RhcnRUYWcgPSB0aGlzLmxhc3RTdGFydFRhZ1Rva2VuLmxvY2F0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGVsZW1lbnQsIGxvYyk7XG4gICAgfVxuXG4gICAgX3NldEVuZExvY2F0aW9uKGVsZW1lbnQsIGNsb3NpbmdUb2tlbikge1xuICAgICAgICBjb25zdCBsb2MgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGxvYykge1xuICAgICAgICAgICAgaWYgKGNsb3NpbmdUb2tlbi5sb2NhdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN0TG9jID0gY2xvc2luZ1Rva2VuLmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgLy8gTk9URTogRm9yIGNhc2VzIGxpa2UgPHA+IDxwPiA8L3A+IC0gRmlyc3QgJ3AnIGNsb3NlcyB3aXRob3V0IGEgY2xvc2luZ1xuICAgICAgICAgICAgICAgIC8vIHRhZyBhbmQgZm9yIGNhc2VzIGxpa2UgPHRkPiA8cD4gPC90ZD4gLSAncCcgY2xvc2VzIHdpdGhvdXQgYSBjbG9zaW5nIHRhZy5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0Nsb3NpbmdFbmRUYWcgPSBjbG9zaW5nVG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVORF9UQUdfVE9LRU4gJiYgdG4gPT09IGNsb3NpbmdUb2tlbi50YWdOYW1lO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzQ2xvc2luZ0VuZFRhZykge1xuICAgICAgICAgICAgICAgICAgICBsb2MuZW5kVGFnID0gT2JqZWN0LmFzc2lnbih7fSwgY3RMb2MpO1xuICAgICAgICAgICAgICAgICAgICBsb2MuZW5kTGluZSA9IGN0TG9jLmVuZExpbmU7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRDb2wgPSBjdExvYy5lbmRDb2w7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRPZmZzZXQgPSBjdExvYy5lbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZExpbmUgPSBjdExvYy5zdGFydExpbmU7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRDb2wgPSBjdExvYy5zdGFydENvbDtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZE9mZnNldCA9IGN0TG9jLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9nZXRPdmVycmlkZGVuTWV0aG9kcyhteG4sIG9yaWcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIF9ib290c3RyYXAoZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2Jvb3RzdHJhcC5jYWxsKHRoaXMsIGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBteG4ubGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICBteG4uY3VycmVudFRva2VuID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuaXplck1peGluID0gTWl4aW4uaW5zdGFsbCh0aGlzLnRva2VuaXplciwgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4pO1xuXG4gICAgICAgICAgICAgICAgbXhuLnBvc1RyYWNrZXIgPSB0b2tlbml6ZXJNaXhpbi5wb3NUcmFja2VyO1xuXG4gICAgICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLm9wZW5FbGVtZW50cywgTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluLCB7XG4gICAgICAgICAgICAgICAgICAgIG9uSXRlbVBvcDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbXhuLl9zZXRFbmRMb2NhdGlvbihlbGVtZW50LCBteG4uY3VycmVudFRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3J1blBhcnNpbmdMb29wKHNjcmlwdEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9ydW5QYXJzaW5nTG9vcC5jYWxsKHRoaXMsIHNjcmlwdEhhbmRsZXIpO1xuXG4gICAgICAgICAgICAgICAgLy8gTk9URTogZ2VuZXJhdGUgbG9jYXRpb24gaW5mbyBmb3IgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAvLyB0aGF0IHJlbWFpbnMgb24gb3BlbiBlbGVtZW50IHN0YWNrXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBteG4uX3NldEVuZExvY2F0aW9uKHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldLCBteG4uY3VycmVudFRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvL1Rva2VuIHByb2Nlc3NpbmdcbiAgICAgICAgICAgIF9wcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgICAgIG9yaWcuX3Byb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQuY2FsbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfcHJvY2Vzc1Rva2VuKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgICAgIG9yaWcuX3Byb2Nlc3NUb2tlbi5jYWxsKHRoaXMsIHRva2VuKTtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogPGJvZHk+IGFuZCA8aHRtbD4gYXJlIG5ldmVyIHBvcHBlZCBmcm9tIHRoZSBzdGFjaywgc28gd2UgbmVlZCB0byB1cGRhdGVkXG4gICAgICAgICAgICAgICAgLy90aGVpciBlbmQgbG9jYXRpb24gZXhwbGljaXRseS5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlRXhwbGljaXRVcGRhdGUgPVxuICAgICAgICAgICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTiAmJlxuICAgICAgICAgICAgICAgICAgICAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MIHx8ICh0b2tlbi50YWdOYW1lID09PSAkLkJPRFkgJiYgdGhpcy5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZUV4cGxpY2l0VXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gdG9rZW4udGFnTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG14bi5fc2V0RW5kTG9jYXRpb24oZWxlbWVudCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy9Eb2N0eXBlXG4gICAgICAgICAgICBfc2V0RG9jdW1lbnRUeXBlKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fc2V0RG9jdW1lbnRUeXBlLmNhbGwodGhpcywgdG9rZW4pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRDaGlsZHJlbiA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2Rlcyh0aGlzLmRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjbkxlbmd0aCA9IGRvY3VtZW50Q2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbkxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudENoaWxkcmVuW2ldO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmlzRG9jdW1lbnRUeXBlTm9kZShub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKG5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy9FbGVtZW50c1xuICAgICAgICAgICAgX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIC8vTk9URTogX2F0dGFjaEVsZW1lbnRUb1RyZWUgaXMgY2FsbGVkIGZyb20gX2FwcGVuZEVsZW1lbnQsIF9pbnNlcnRFbGVtZW50IGFuZCBfaW5zZXJ0VGVtcGxhdGUgbWV0aG9kcy5cbiAgICAgICAgICAgICAgICAvL1NvIHdlIHdpbGwgdXNlIHRva2VuIGxvY2F0aW9uIHN0b3JlZCBpbiB0aGlzIG1ldGhvZHMgZm9yIHRoZSBlbGVtZW50LlxuICAgICAgICAgICAgICAgIG14bi5fc2V0U3RhcnRMb2NhdGlvbihlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBteG4ubGFzdFN0YXJ0VGFnVG9rZW4gPSBudWxsO1xuICAgICAgICAgICAgICAgIG9yaWcuX2F0dGFjaEVsZW1lbnRUb1RyZWUuY2FsbCh0aGlzLCBlbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9hcHBlbmRFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgICAgICAgICBteG4ubGFzdFN0YXJ0VGFnVG9rZW4gPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBvcmlnLl9hcHBlbmRFbGVtZW50LmNhbGwodGhpcywgdG9rZW4sIG5hbWVzcGFjZVVSSSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfaW5zZXJ0RWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSB7XG4gICAgICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gdG9rZW47XG4gICAgICAgICAgICAgICAgb3JpZy5faW5zZXJ0RWxlbWVudC5jYWxsKHRoaXMsIHRva2VuLCBuYW1lc3BhY2VVUkkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2luc2VydFRlbXBsYXRlKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gdG9rZW47XG4gICAgICAgICAgICAgICAgb3JpZy5faW5zZXJ0VGVtcGxhdGUuY2FsbCh0aGlzLCB0b2tlbik7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0bXBsQ29udGVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRtcGxDb250ZW50LCBudWxsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5faW5zZXJ0RmFrZVJvb3RFbGVtZW50LmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQsIG51bGwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy9Db21tZW50c1xuICAgICAgICAgICAgX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9hcHBlbmRDb21tZW50Tm9kZS5jYWxsKHRoaXMsIHRva2VuLCBwYXJlbnQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXMocGFyZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50Tm9kZSA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGNvbW1lbnROb2RlLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvL1RleHRcbiAgICAgICAgICAgIF9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKSB7XG4gICAgICAgICAgICAgICAgLy9OT1RFOiBzdG9yZSBsYXN0IGZvc3RlciBwYXJlbnRpbmcgbG9jYXRpb24sIHNvIHdlIHdpbGwgYmUgYWJsZSB0byBmaW5kIGluc2VydGVkIHRleHRcbiAgICAgICAgICAgICAgICAvL2luIGNhc2Ugb2YgZm9zdGVyIHBhcmVudGluZ1xuICAgICAgICAgICAgICAgIG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBvcmlnLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24uY2FsbCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBteG4ubGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2luc2VydENoYXJhY3RlcnModG9rZW4pIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9pbnNlcnRDaGFyYWN0ZXJzLmNhbGwodGhpcywgdG9rZW4pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRm9zdGVyUGFyZW50ID0gdGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9XG4gICAgICAgICAgICAgICAgICAgIChoYXNGb3N0ZXJQYXJlbnQgJiYgbXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbi5wYXJlbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2libGluZ3MgPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXMocGFyZW50KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRleHROb2RlSWR4ID1cbiAgICAgICAgICAgICAgICAgICAgaGFzRm9zdGVyUGFyZW50ICYmIG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24uYmVmb3JlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzaWJsaW5ncy5pbmRleE9mKG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24uYmVmb3JlRWxlbWVudCkgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNpYmxpbmdzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0Tm9kZSA9IHNpYmxpbmdzW3RleHROb2RlSWR4XTtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBsb2NhdGlvbiBhc3NpZ25lZCBieSBhbm90aGVyIHRva2VuLCB0aGVuIGp1c3QgdXBkYXRlIGVuZCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IHRuTG9jID0gdGhpcy50cmVlQWRhcHRlci5nZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRleHROb2RlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0bkxvYykge1xuICAgICAgICAgICAgICAgICAgICB0bkxvYy5lbmRMaW5lID0gdG9rZW4ubG9jYXRpb24uZW5kTGluZTtcbiAgICAgICAgICAgICAgICAgICAgdG5Mb2MuZW5kQ29sID0gdG9rZW4ubG9jYXRpb24uZW5kQ29sO1xuICAgICAgICAgICAgICAgICAgICB0bkxvYy5lbmRPZmZzZXQgPSB0b2tlbi5sb2NhdGlvbi5lbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRleHROb2RlLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBFcnJvclJlcG9ydGluZ01peGluQmFzZSBleHRlbmRzIE1peGluIHtcbiAgICBjb25zdHJ1Y3Rvcihob3N0LCBvcHRzKSB7XG4gICAgICAgIHN1cGVyKGhvc3QpO1xuXG4gICAgICAgIHRoaXMucG9zVHJhY2tlciA9IG51bGw7XG4gICAgICAgIHRoaXMub25QYXJzZUVycm9yID0gb3B0cy5vblBhcnNlRXJyb3I7XG4gICAgfVxuXG4gICAgX3NldEVycm9yTG9jYXRpb24oZXJyKSB7XG4gICAgICAgIGVyci5zdGFydExpbmUgPSBlcnIuZW5kTGluZSA9IHRoaXMucG9zVHJhY2tlci5saW5lO1xuICAgICAgICBlcnIuc3RhcnRDb2wgPSBlcnIuZW5kQ29sID0gdGhpcy5wb3NUcmFja2VyLmNvbDtcbiAgICAgICAgZXJyLnN0YXJ0T2Zmc2V0ID0gZXJyLmVuZE9mZnNldCA9IHRoaXMucG9zVHJhY2tlci5vZmZzZXQ7XG4gICAgfVxuXG4gICAgX3JlcG9ydEVycm9yKGNvZGUpIHtcbiAgICAgICAgY29uc3QgZXJyID0ge1xuICAgICAgICAgICAgY29kZTogY29kZSxcbiAgICAgICAgICAgIHN0YXJ0TGluZTogLTEsXG4gICAgICAgICAgICBzdGFydENvbDogLTEsXG4gICAgICAgICAgICBzdGFydE9mZnNldDogLTEsXG4gICAgICAgICAgICBlbmRMaW5lOiAtMSxcbiAgICAgICAgICAgIGVuZENvbDogLTEsXG4gICAgICAgICAgICBlbmRPZmZzZXQ6IC0xXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fc2V0RXJyb3JMb2NhdGlvbihlcnIpO1xuICAgICAgICB0aGlzLm9uUGFyc2VFcnJvcihlcnIpO1xuICAgIH1cblxuICAgIF9nZXRPdmVycmlkZGVuTWV0aG9kcyhteG4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIF9lcnIoY29kZSkge1xuICAgICAgICAgICAgICAgIG14bi5fcmVwb3J0RXJyb3IoY29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBFcnJvclJlcG9ydGluZ01peGluQmFzZSA9IHJlcXVpcmUoJy4vbWl4aW4tYmFzZScpO1xuY29uc3QgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluID0gcmVxdWlyZSgnLi4vcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluJyk7XG5jb25zdCBNaXhpbiA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL21peGluJyk7XG5cbmNsYXNzIEVycm9yUmVwb3J0aW5nUHJlcHJvY2Vzc29yTWl4aW4gZXh0ZW5kcyBFcnJvclJlcG9ydGluZ01peGluQmFzZSB7XG4gICAgY29uc3RydWN0b3IocHJlcHJvY2Vzc29yLCBvcHRzKSB7XG4gICAgICAgIHN1cGVyKHByZXByb2Nlc3Nvciwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy5wb3NUcmFja2VyID0gTWl4aW4uaW5zdGFsbChwcmVwcm9jZXNzb3IsIFBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbik7XG4gICAgICAgIHRoaXMubGFzdEVyck9mZnNldCA9IC0xO1xuICAgIH1cblxuICAgIF9yZXBvcnRFcnJvcihjb2RlKSB7XG4gICAgICAgIC8vTk9URTogYXZvaWQgcmVwb3J0aW5nIGVycm9yIHR3aWNlIG9uIGFkdmFuY2UvcmV0cmVhdFxuICAgICAgICBpZiAodGhpcy5sYXN0RXJyT2Zmc2V0ICE9PSB0aGlzLnBvc1RyYWNrZXIub2Zmc2V0KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RFcnJPZmZzZXQgPSB0aGlzLnBvc1RyYWNrZXIub2Zmc2V0O1xuICAgICAgICAgICAgc3VwZXIuX3JlcG9ydEVycm9yKGNvZGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVycm9yUmVwb3J0aW5nUHJlcHJvY2Vzc29yTWl4aW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlID0gcmVxdWlyZSgnLi9taXhpbi1iYXNlJyk7XG5jb25zdCBFcnJvclJlcG9ydGluZ1ByZXByb2Nlc3Nvck1peGluID0gcmVxdWlyZSgnLi9wcmVwcm9jZXNzb3ItbWl4aW4nKTtcbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKTtcblxuY2xhc3MgRXJyb3JSZXBvcnRpbmdUb2tlbml6ZXJNaXhpbiBleHRlbmRzIEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcih0b2tlbml6ZXIsIG9wdHMpIHtcbiAgICAgICAgc3VwZXIodG9rZW5pemVyLCBvcHRzKTtcblxuICAgICAgICBjb25zdCBwcmVwcm9jZXNzb3JNaXhpbiA9IE1peGluLmluc3RhbGwodG9rZW5pemVyLnByZXByb2Nlc3NvciwgRXJyb3JSZXBvcnRpbmdQcmVwcm9jZXNzb3JNaXhpbiwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy5wb3NUcmFja2VyID0gcHJlcHJvY2Vzc29yTWl4aW4ucG9zVHJhY2tlcjtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRXJyb3JSZXBvcnRpbmdUb2tlbml6ZXJNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2UgPSByZXF1aXJlKCcuL21peGluLWJhc2UnKTtcbmNvbnN0IEVycm9yUmVwb3J0aW5nVG9rZW5pemVyTWl4aW4gPSByZXF1aXJlKCcuL3Rva2VuaXplci1taXhpbicpO1xuY29uc3QgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4gPSByZXF1aXJlKCcuLi9sb2NhdGlvbi1pbmZvL3Rva2VuaXplci1taXhpbicpO1xuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBFcnJvclJlcG9ydGluZ1BhcnNlck1peGluIGV4dGVuZHMgRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhcnNlciwgb3B0cykge1xuICAgICAgICBzdXBlcihwYXJzZXIsIG9wdHMpO1xuXG4gICAgICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgICAgIHRoaXMuY3RMb2MgPSBudWxsO1xuICAgICAgICB0aGlzLmxvY0JlZm9yZVRva2VuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgX3NldEVycm9yTG9jYXRpb24oZXJyKSB7XG4gICAgICAgIGlmICh0aGlzLmN0TG9jKSB7XG4gICAgICAgICAgICBlcnIuc3RhcnRMaW5lID0gdGhpcy5jdExvYy5zdGFydExpbmU7XG4gICAgICAgICAgICBlcnIuc3RhcnRDb2wgPSB0aGlzLmN0TG9jLnN0YXJ0Q29sO1xuICAgICAgICAgICAgZXJyLnN0YXJ0T2Zmc2V0ID0gdGhpcy5jdExvYy5zdGFydE9mZnNldDtcblxuICAgICAgICAgICAgZXJyLmVuZExpbmUgPSB0aGlzLmxvY0JlZm9yZVRva2VuID8gdGhpcy5jdExvYy5zdGFydExpbmUgOiB0aGlzLmN0TG9jLmVuZExpbmU7XG4gICAgICAgICAgICBlcnIuZW5kQ29sID0gdGhpcy5sb2NCZWZvcmVUb2tlbiA/IHRoaXMuY3RMb2Muc3RhcnRDb2wgOiB0aGlzLmN0TG9jLmVuZENvbDtcbiAgICAgICAgICAgIGVyci5lbmRPZmZzZXQgPSB0aGlzLmxvY0JlZm9yZVRva2VuID8gdGhpcy5jdExvYy5zdGFydE9mZnNldCA6IHRoaXMuY3RMb2MuZW5kT2Zmc2V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX2Jvb3RzdHJhcChkb2N1bWVudCwgZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fYm9vdHN0cmFwLmNhbGwodGhpcywgZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCk7XG5cbiAgICAgICAgICAgICAgICBNaXhpbi5pbnN0YWxsKHRoaXMudG9rZW5pemVyLCBFcnJvclJlcG9ydGluZ1Rva2VuaXplck1peGluLCBteG4ub3B0cyk7XG4gICAgICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLnRva2VuaXplciwgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3Byb2Nlc3NJbnB1dFRva2VuKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN0TG9jID0gdG9rZW4ubG9jYXRpb247XG5cbiAgICAgICAgICAgICAgICBvcmlnLl9wcm9jZXNzSW5wdXRUb2tlbi5jYWxsKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9lcnIoY29kZSwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIG14bi5sb2NCZWZvcmVUb2tlbiA9IG9wdGlvbnMgJiYgb3B0aW9ucy5iZWZvcmVUb2tlbjtcbiAgICAgICAgICAgICAgICBteG4uX3JlcG9ydEVycm9yKGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFcnJvclJlcG9ydGluZ1BhcnNlck1peGluO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB7IERPQ1VNRU5UX01PREUgfSA9IHJlcXVpcmUoJy4uL2NvbW1vbi9odG1sJyk7XG5cbi8vTm9kZSBjb25zdHJ1Y3Rpb25cbmV4cG9ydHMuY3JlYXRlRG9jdW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudCcsXG4gICAgICAgIG1vZGU6IERPQ1VNRU5UX01PREUuTk9fUVVJUktTLFxuICAgICAgICBjaGlsZE5vZGVzOiBbXVxuICAgIH07XG59O1xuXG5leHBvcnRzLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudC1mcmFnbWVudCcsXG4gICAgICAgIGNoaWxkTm9kZXM6IFtdXG4gICAgfTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgYXR0cnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogdGFnTmFtZSxcbiAgICAgICAgdGFnTmFtZTogdGFnTmFtZSxcbiAgICAgICAgYXR0cnM6IGF0dHJzLFxuICAgICAgICBuYW1lc3BhY2VVUkk6IG5hbWVzcGFjZVVSSSxcbiAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgIHBhcmVudE5vZGU6IG51bGxcbiAgICB9O1xufTtcblxuZXhwb3J0cy5jcmVhdGVDb21tZW50Tm9kZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyNjb21tZW50JyxcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgcGFyZW50Tm9kZTogbnVsbFxuICAgIH07XG59O1xuXG5jb25zdCBjcmVhdGVUZXh0Tm9kZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZU5hbWU6ICcjdGV4dCcsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgcGFyZW50Tm9kZTogbnVsbFxuICAgIH07XG59O1xuXG4vL1RyZWUgbXV0YXRpb25cbmNvbnN0IGFwcGVuZENoaWxkID0gKGV4cG9ydHMuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbihwYXJlbnROb2RlLCBuZXdOb2RlKSB7XG4gICAgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLnB1c2gobmV3Tm9kZSk7XG4gICAgbmV3Tm9kZS5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbn0pO1xuXG5jb25zdCBpbnNlcnRCZWZvcmUgPSAoZXhwb3J0cy5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbihwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gICAgY29uc3QgaW5zZXJ0aW9uSWR4ID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmluZGV4T2YocmVmZXJlbmNlTm9kZSk7XG5cbiAgICBwYXJlbnROb2RlLmNoaWxkTm9kZXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3Tm9kZSk7XG4gICAgbmV3Tm9kZS5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbn0pO1xuXG5leHBvcnRzLnNldFRlbXBsYXRlQ29udGVudCA9IGZ1bmN0aW9uKHRlbXBsYXRlRWxlbWVudCwgY29udGVudEVsZW1lbnQpIHtcbiAgICB0ZW1wbGF0ZUVsZW1lbnQuY29udGVudCA9IGNvbnRlbnRFbGVtZW50O1xufTtcblxuZXhwb3J0cy5nZXRUZW1wbGF0ZUNvbnRlbnQgPSBmdW5jdGlvbih0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICByZXR1cm4gdGVtcGxhdGVFbGVtZW50LmNvbnRlbnQ7XG59O1xuXG5leHBvcnRzLnNldERvY3VtZW50VHlwZSA9IGZ1bmN0aW9uKGRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICBsZXQgZG9jdHlwZU5vZGUgPSBudWxsO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkb2N1bWVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChkb2N1bWVudC5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lID09PSAnI2RvY3VtZW50VHlwZScpIHtcbiAgICAgICAgICAgIGRvY3R5cGVOb2RlID0gZG9jdW1lbnQuY2hpbGROb2Rlc1tpXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIGRvY3R5cGVOb2RlLm5hbWUgPSBuYW1lO1xuICAgICAgICBkb2N0eXBlTm9kZS5wdWJsaWNJZCA9IHB1YmxpY0lkO1xuICAgICAgICBkb2N0eXBlTm9kZS5zeXN0ZW1JZCA9IHN5c3RlbUlkO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFwcGVuZENoaWxkKGRvY3VtZW50LCB7XG4gICAgICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudFR5cGUnLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHB1YmxpY0lkOiBwdWJsaWNJZCxcbiAgICAgICAgICAgIHN5c3RlbUlkOiBzeXN0ZW1JZFxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5leHBvcnRzLnNldERvY3VtZW50TW9kZSA9IGZ1bmN0aW9uKGRvY3VtZW50LCBtb2RlKSB7XG4gICAgZG9jdW1lbnQubW9kZSA9IG1vZGU7XG59O1xuXG5leHBvcnRzLmdldERvY3VtZW50TW9kZSA9IGZ1bmN0aW9uKGRvY3VtZW50KSB7XG4gICAgcmV0dXJuIGRvY3VtZW50Lm1vZGU7XG59O1xuXG5leHBvcnRzLmRldGFjaE5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICBjb25zdCBpZHggPSBub2RlLnBhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKG5vZGUpO1xuXG4gICAgICAgIG5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBub2RlLnBhcmVudE5vZGUgPSBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuaW5zZXJ0VGV4dCA9IGZ1bmN0aW9uKHBhcmVudE5vZGUsIHRleHQpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBwcmV2Tm9kZSA9IHBhcmVudE5vZGUuY2hpbGROb2Rlc1twYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgaWYgKHByZXZOb2RlLm5vZGVOYW1lID09PSAnI3RleHQnKSB7XG4gICAgICAgICAgICBwcmV2Tm9kZS52YWx1ZSArPSB0ZXh0O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwZW5kQ2hpbGQocGFyZW50Tm9kZSwgY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xufTtcblxuZXhwb3J0cy5pbnNlcnRUZXh0QmVmb3JlID0gZnVuY3Rpb24ocGFyZW50Tm9kZSwgdGV4dCwgcmVmZXJlbmNlTm9kZSkge1xuICAgIGNvbnN0IHByZXZOb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzW3BhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpIC0gMV07XG5cbiAgICBpZiAocHJldk5vZGUgJiYgcHJldk5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgcHJldk5vZGUudmFsdWUgKz0gdGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgY3JlYXRlVGV4dE5vZGUodGV4dCksIHJlZmVyZW5jZU5vZGUpO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuYWRvcHRBdHRyaWJ1dGVzID0gZnVuY3Rpb24ocmVjaXBpZW50LCBhdHRycykge1xuICAgIGNvbnN0IHJlY2lwaWVudEF0dHJzTWFwID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY2lwaWVudC5hdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZWNpcGllbnRBdHRyc01hcC5wdXNoKHJlY2lwaWVudC5hdHRyc1tpXS5uYW1lKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGF0dHJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWNpcGllbnRBdHRyc01hcC5pbmRleE9mKGF0dHJzW2pdLm5hbWUpID09PSAtMSkge1xuICAgICAgICAgICAgcmVjaXBpZW50LmF0dHJzLnB1c2goYXR0cnNbal0pO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLy9UcmVlIHRyYXZlcnNpbmdcbmV4cG9ydHMuZ2V0Rmlyc3RDaGlsZCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZE5vZGVzWzBdO1xufTtcblxuZXhwb3J0cy5nZXRDaGlsZE5vZGVzID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLmNoaWxkTm9kZXM7XG59O1xuXG5leHBvcnRzLmdldFBhcmVudE5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZTtcbn07XG5cbmV4cG9ydHMuZ2V0QXR0ckxpc3QgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuYXR0cnM7XG59O1xuXG4vL05vZGUgZGF0YVxuZXhwb3J0cy5nZXRUYWdOYW1lID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LnRhZ05hbWU7XG59O1xuXG5leHBvcnRzLmdldE5hbWVzcGFjZVVSSSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudC5uYW1lc3BhY2VVUkk7XG59O1xuXG5leHBvcnRzLmdldFRleHROb2RlQ29udGVudCA9IGZ1bmN0aW9uKHRleHROb2RlKSB7XG4gICAgcmV0dXJuIHRleHROb2RlLnZhbHVlO1xufTtcblxuZXhwb3J0cy5nZXRDb21tZW50Tm9kZUNvbnRlbnQgPSBmdW5jdGlvbihjb21tZW50Tm9kZSkge1xuICAgIHJldHVybiBjb21tZW50Tm9kZS5kYXRhO1xufTtcblxuZXhwb3J0cy5nZXREb2N1bWVudFR5cGVOb2RlTmFtZSA9IGZ1bmN0aW9uKGRvY3R5cGVOb2RlKSB7XG4gICAgcmV0dXJuIGRvY3R5cGVOb2RlLm5hbWU7XG59O1xuXG5leHBvcnRzLmdldERvY3VtZW50VHlwZU5vZGVQdWJsaWNJZCA9IGZ1bmN0aW9uKGRvY3R5cGVOb2RlKSB7XG4gICAgcmV0dXJuIGRvY3R5cGVOb2RlLnB1YmxpY0lkO1xufTtcblxuZXhwb3J0cy5nZXREb2N1bWVudFR5cGVOb2RlU3lzdGVtSWQgPSBmdW5jdGlvbihkb2N0eXBlTm9kZSkge1xuICAgIHJldHVybiBkb2N0eXBlTm9kZS5zeXN0ZW1JZDtcbn07XG5cbi8vTm9kZSB0eXBlc1xuZXhwb3J0cy5pc1RleHROb2RlID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI3RleHQnO1xufTtcblxuZXhwb3J0cy5pc0NvbW1lbnROb2RlID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI2NvbW1lbnQnO1xufTtcblxuZXhwb3J0cy5pc0RvY3VtZW50VHlwZU5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjZG9jdW1lbnRUeXBlJztcbn07XG5cbmV4cG9ydHMuaXNFbGVtZW50Tm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gISFub2RlLnRhZ05hbWU7XG59O1xuXG4vLyBTb3VyY2UgY29kZSBsb2NhdGlvblxuZXhwb3J0cy5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uID0gZnVuY3Rpb24obm9kZSwgbG9jYXRpb24pIHtcbiAgICBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbiA9IGxvY2F0aW9uO1xufTtcblxuZXhwb3J0cy5nZXROb2RlU291cmNlQ29kZUxvY2F0aW9uID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VPcHRpb25zKGRlZmF1bHRzLCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIHJldHVybiBbZGVmYXVsdHMsIG9wdGlvbnNdLnJlZHVjZSgobWVyZ2VkLCBvcHRPYmopID0+IHtcbiAgICAgICAgT2JqZWN0LmtleXMob3B0T2JqKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBtZXJnZWRba2V5XSA9IG9wdE9ialtrZXldO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBET0NVTUVOVF9NT0RFIH0gPSByZXF1aXJlKCcuL2h0bWwnKTtcblxuLy9Db25zdFxuY29uc3QgVkFMSURfRE9DVFlQRV9OQU1FID0gJ2h0bWwnO1xuY29uc3QgVkFMSURfU1lTVEVNX0lEID0gJ2Fib3V0OmxlZ2FjeS1jb21wYXQnO1xuY29uc3QgUVVJUktTX01PREVfU1lTVEVNX0lEID0gJ2h0dHA6Ly93d3cuaWJtLmNvbS9kYXRhL2R0ZC92MTEvaWJteGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnO1xuXG5jb25zdCBRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMgPSBbXG4gICAgJysvL3NpbG1hcmlsLy9kdGQgaHRtbCBwcm8gdjByMTEgMTk5NzAxMDEvLycsXG4gICAgJy0vL2FzLy9kdGQgaHRtbCAzLjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvLycsXG4gICAgJy0vL2FkdmFzb2Z0IGx0ZC8vZHRkIGh0bWwgMy4wIGFzd2VkaXQgKyBleHRlbnNpb25zLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0Ly8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMWUvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMuMC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4yIGZpbmFsLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDMvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAwLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAzLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sLy8nLFxuICAgICctLy9tZXRyaXVzLy9kdGQgbWV0cml1cyBwcmVzZW50YXRpb25hbC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIGh0bWwgc3RyaWN0Ly8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgaHRtbC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIHRhYmxlcy8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0bWwgc3RyaWN0Ly8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgaHRtbC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIHRhYmxlcy8vJyxcbiAgICAnLS8vbmV0c2NhcGUgY29tbS4gY29ycC4vL2R0ZCBodG1sLy8nLFxuICAgICctLy9uZXRzY2FwZSBjb21tLiBjb3JwLi8vZHRkIHN0cmljdCBodG1sLy8nLFxuICAgIFwiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIDIuMC8vXCIsXG4gICAgXCItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgZXh0ZW5kZWQgMS4wLy9cIixcbiAgICBcIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCBleHRlbmRlZCByZWxheGVkIDEuMC8vXCIsXG4gICAgJy0vL3NxLy9kdGQgaHRtbCAyLjAgaG90bWV0YWwgKyBleHRlbnNpb25zLy8nLFxuICAgICctLy9zb2Z0cXVhZCBzb2Z0d2FyZS8vZHRkIGhvdG1ldGFsIHBybyA2LjA6OjE5OTkwNjAxOjpleHRlbnNpb25zIHRvIGh0bWwgNC4wLy8nLFxuICAgICctLy9zb2Z0cXVhZC8vZHRkIGhvdG1ldGFsIHBybyA0LjA6OjE5OTcxMDEwOjpleHRlbnNpb25zIHRvIGh0bWwgNC4wLy8nLFxuICAgICctLy9zcHlnbGFzcy8vZHRkIGh0bWwgMi4wIGV4dGVuZGVkLy8nLFxuICAgICctLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90amF2YSBodG1sLy8nLFxuICAgICctLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90amF2YSBzdHJpY3QgaHRtbC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzIDE5OTUtMDMtMjQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yIGRyYWZ0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMiBmaW5hbC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjIvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4ycyBkcmFmdC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAgZnJhbWVzZXQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50YWwgMTk5NjA3MTIvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgZXhwZXJpbWVudGFsIDk3MDQyMS8vJyxcbiAgICAnLS8vdzNjLy9kdGQgdzMgaHRtbC8vJyxcbiAgICAnLS8vdzNvLy9kdGQgdzMgaHRtbCAzLjAvLycsXG4gICAgJy0vL3dlYnRlY2hzLy9kdGQgbW96aWxsYSBodG1sIDIuMC8vJyxcbiAgICAnLS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwvLydcbl07XG5cbmNvbnN0IFFVSVJLU19NT0RFX05PX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMuY29uY2F0KFtcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgdHJhbnNpdGlvbmFsLy8nXG5dKTtcblxuY29uc3QgUVVJUktTX01PREVfUFVCTElDX0lEUyA9IFsnLS8vdzNvLy9kdGQgdzMgaHRtbCBzdHJpY3QgMy4wLy9lbi8vJywgJy0vdzNjL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvZW4nLCAnaHRtbCddO1xuY29uc3QgTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTID0gWyctLy93M2MvL2R0ZCB4aHRtbCAxLjAgZnJhbWVzZXQvLycsICctLy93M2MvL2R0ZCB4aHRtbCAxLjAgdHJhbnNpdGlvbmFsLy8nXTtcblxuY29uc3QgTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTID0gTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTLmNvbmNhdChbXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSBmcmFtZXNldC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIHRyYW5zaXRpb25hbC8vJ1xuXSk7XG5cbi8vVXRpbHNcbmZ1bmN0aW9uIGVucXVvdGVEb2N0eXBlSWQoaWQpIHtcbiAgICBjb25zdCBxdW90ZSA9IGlkLmluZGV4T2YoJ1wiJykgIT09IC0xID8gXCInXCIgOiAnXCInO1xuXG4gICAgcmV0dXJuIHF1b3RlICsgaWQgKyBxdW90ZTtcbn1cblxuZnVuY3Rpb24gaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHB1YmxpY0lkLmluZGV4T2YocHJlZml4ZXNbaV0pID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLy9BUElcbmV4cG9ydHMuaXNDb25mb3JtaW5nID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgICB0b2tlbi5uYW1lID09PSBWQUxJRF9ET0NUWVBFX05BTUUgJiZcbiAgICAgICAgdG9rZW4ucHVibGljSWQgPT09IG51bGwgJiZcbiAgICAgICAgKHRva2VuLnN5c3RlbUlkID09PSBudWxsIHx8IHRva2VuLnN5c3RlbUlkID09PSBWQUxJRF9TWVNURU1fSUQpXG4gICAgKTtcbn07XG5cbmV4cG9ydHMuZ2V0RG9jdW1lbnRNb2RlID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBpZiAodG9rZW4ubmFtZSAhPT0gVkFMSURfRE9DVFlQRV9OQU1FKSB7XG4gICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICB9XG5cbiAgICBjb25zdCBzeXN0ZW1JZCA9IHRva2VuLnN5c3RlbUlkO1xuXG4gICAgaWYgKHN5c3RlbUlkICYmIHN5c3RlbUlkLnRvTG93ZXJDYXNlKCkgPT09IFFVSVJLU19NT0RFX1NZU1RFTV9JRCkge1xuICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG4gICAgfVxuXG4gICAgbGV0IHB1YmxpY0lkID0gdG9rZW4ucHVibGljSWQ7XG5cbiAgICBpZiAocHVibGljSWQgIT09IG51bGwpIHtcbiAgICAgICAgcHVibGljSWQgPSBwdWJsaWNJZC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGlmIChRVUlSS1NfTU9ERV9QVUJMSUNfSURTLmluZGV4T2YocHVibGljSWQpID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwcmVmaXhlcyA9IHN5c3RlbUlkID09PSBudWxsID8gUVVJUktTX01PREVfTk9fU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyA6IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUztcblxuICAgICAgICBpZiAoaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICAgICAgfVxuXG4gICAgICAgIHByZWZpeGVzID1cbiAgICAgICAgICAgIHN5c3RlbUlkID09PSBudWxsID8gTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTIDogTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTO1xuXG4gICAgICAgIGlmIChoYXNQcmVmaXgocHVibGljSWQsIHByZWZpeGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuTElNSVRFRF9RVUlSS1M7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5OT19RVUlSS1M7XG59O1xuXG5leHBvcnRzLnNlcmlhbGl6ZUNvbnRlbnQgPSBmdW5jdGlvbihuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICBsZXQgc3RyID0gJyFET0NUWVBFICc7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgICBzdHIgKz0gbmFtZTtcbiAgICB9XG5cbiAgICBpZiAocHVibGljSWQpIHtcbiAgICAgICAgc3RyICs9ICcgUFVCTElDICcgKyBlbnF1b3RlRG9jdHlwZUlkKHB1YmxpY0lkKTtcbiAgICB9IGVsc2UgaWYgKHN5c3RlbUlkKSB7XG4gICAgICAgIHN0ciArPSAnIFNZU1RFTSc7XG4gICAgfVxuXG4gICAgaWYgKHN5c3RlbUlkICE9PSBudWxsKSB7XG4gICAgICAgIHN0ciArPSAnICcgKyBlbnF1b3RlRG9jdHlwZUlkKHN5c3RlbUlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgVG9rZW5pemVyID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyJyk7XG5jb25zdCBIVE1MID0gcmVxdWlyZSgnLi9odG1sJyk7XG5cbi8vQWxpYXNlc1xuY29uc3QgJCA9IEhUTUwuVEFHX05BTUVTO1xuY29uc3QgTlMgPSBIVE1MLk5BTUVTUEFDRVM7XG5jb25zdCBBVFRSUyA9IEhUTUwuQVRUUlM7XG5cbi8vTUlNRSB0eXBlc1xuY29uc3QgTUlNRV9UWVBFUyA9IHtcbiAgICBURVhUX0hUTUw6ICd0ZXh0L2h0bWwnLFxuICAgIEFQUExJQ0FUSU9OX1hNTDogJ2FwcGxpY2F0aW9uL3hodG1sK3htbCdcbn07XG5cbi8vQXR0cmlidXRlc1xuY29uc3QgREVGSU5JVElPTl9VUkxfQVRUUiA9ICdkZWZpbml0aW9udXJsJztcbmNvbnN0IEFESlVTVEVEX0RFRklOSVRJT05fVVJMX0FUVFIgPSAnZGVmaW5pdGlvblVSTCc7XG5jb25zdCBTVkdfQVRUUlNfQURKVVNUTUVOVF9NQVAgPSB7XG4gICAgYXR0cmlidXRlbmFtZTogJ2F0dHJpYnV0ZU5hbWUnLFxuICAgIGF0dHJpYnV0ZXR5cGU6ICdhdHRyaWJ1dGVUeXBlJyxcbiAgICBiYXNlZnJlcXVlbmN5OiAnYmFzZUZyZXF1ZW5jeScsXG4gICAgYmFzZXByb2ZpbGU6ICdiYXNlUHJvZmlsZScsXG4gICAgY2FsY21vZGU6ICdjYWxjTW9kZScsXG4gICAgY2xpcHBhdGh1bml0czogJ2NsaXBQYXRoVW5pdHMnLFxuICAgIGRpZmZ1c2Vjb25zdGFudDogJ2RpZmZ1c2VDb25zdGFudCcsXG4gICAgZWRnZW1vZGU6ICdlZGdlTW9kZScsXG4gICAgZmlsdGVydW5pdHM6ICdmaWx0ZXJVbml0cycsXG4gICAgZ2x5cGhyZWY6ICdnbHlwaFJlZicsXG4gICAgZ3JhZGllbnR0cmFuc2Zvcm06ICdncmFkaWVudFRyYW5zZm9ybScsXG4gICAgZ3JhZGllbnR1bml0czogJ2dyYWRpZW50VW5pdHMnLFxuICAgIGtlcm5lbG1hdHJpeDogJ2tlcm5lbE1hdHJpeCcsXG4gICAga2VybmVsdW5pdGxlbmd0aDogJ2tlcm5lbFVuaXRMZW5ndGgnLFxuICAgIGtleXBvaW50czogJ2tleVBvaW50cycsXG4gICAga2V5c3BsaW5lczogJ2tleVNwbGluZXMnLFxuICAgIGtleXRpbWVzOiAna2V5VGltZXMnLFxuICAgIGxlbmd0aGFkanVzdDogJ2xlbmd0aEFkanVzdCcsXG4gICAgbGltaXRpbmdjb25lYW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gICAgbWFya2VyaGVpZ2h0OiAnbWFya2VySGVpZ2h0JyxcbiAgICBtYXJrZXJ1bml0czogJ21hcmtlclVuaXRzJyxcbiAgICBtYXJrZXJ3aWR0aDogJ21hcmtlcldpZHRoJyxcbiAgICBtYXNrY29udGVudHVuaXRzOiAnbWFza0NvbnRlbnRVbml0cycsXG4gICAgbWFza3VuaXRzOiAnbWFza1VuaXRzJyxcbiAgICBudW1vY3RhdmVzOiAnbnVtT2N0YXZlcycsXG4gICAgcGF0aGxlbmd0aDogJ3BhdGhMZW5ndGgnLFxuICAgIHBhdHRlcm5jb250ZW50dW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJyxcbiAgICBwYXR0ZXJudHJhbnNmb3JtOiAncGF0dGVyblRyYW5zZm9ybScsXG4gICAgcGF0dGVybnVuaXRzOiAncGF0dGVyblVuaXRzJyxcbiAgICBwb2ludHNhdHg6ICdwb2ludHNBdFgnLFxuICAgIHBvaW50c2F0eTogJ3BvaW50c0F0WScsXG4gICAgcG9pbnRzYXR6OiAncG9pbnRzQXRaJyxcbiAgICBwcmVzZXJ2ZWFscGhhOiAncHJlc2VydmVBbHBoYScsXG4gICAgcHJlc2VydmVhc3BlY3RyYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLFxuICAgIHByaW1pdGl2ZXVuaXRzOiAncHJpbWl0aXZlVW5pdHMnLFxuICAgIHJlZng6ICdyZWZYJyxcbiAgICByZWZ5OiAncmVmWScsXG4gICAgcmVwZWF0Y291bnQ6ICdyZXBlYXRDb3VudCcsXG4gICAgcmVwZWF0ZHVyOiAncmVwZWF0RHVyJyxcbiAgICByZXF1aXJlZGV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4dGVuc2lvbnMnLFxuICAgIHJlcXVpcmVkZmVhdHVyZXM6ICdyZXF1aXJlZEZlYXR1cmVzJyxcbiAgICBzcGVjdWxhcmNvbnN0YW50OiAnc3BlY3VsYXJDb25zdGFudCcsXG4gICAgc3BlY3VsYXJleHBvbmVudDogJ3NwZWN1bGFyRXhwb25lbnQnLFxuICAgIHNwcmVhZG1ldGhvZDogJ3NwcmVhZE1ldGhvZCcsXG4gICAgc3RhcnRvZmZzZXQ6ICdzdGFydE9mZnNldCcsXG4gICAgc3RkZGV2aWF0aW9uOiAnc3RkRGV2aWF0aW9uJyxcbiAgICBzdGl0Y2h0aWxlczogJ3N0aXRjaFRpbGVzJyxcbiAgICBzdXJmYWNlc2NhbGU6ICdzdXJmYWNlU2NhbGUnLFxuICAgIHN5c3RlbWxhbmd1YWdlOiAnc3lzdGVtTGFuZ3VhZ2UnLFxuICAgIHRhYmxldmFsdWVzOiAndGFibGVWYWx1ZXMnLFxuICAgIHRhcmdldHg6ICd0YXJnZXRYJyxcbiAgICB0YXJnZXR5OiAndGFyZ2V0WScsXG4gICAgdGV4dGxlbmd0aDogJ3RleHRMZW5ndGgnLFxuICAgIHZpZXdib3g6ICd2aWV3Qm94JyxcbiAgICB2aWV3dGFyZ2V0OiAndmlld1RhcmdldCcsXG4gICAgeGNoYW5uZWxzZWxlY3RvcjogJ3hDaGFubmVsU2VsZWN0b3InLFxuICAgIHljaGFubmVsc2VsZWN0b3I6ICd5Q2hhbm5lbFNlbGVjdG9yJyxcbiAgICB6b29tYW5kcGFuOiAnem9vbUFuZFBhbidcbn07XG5cbmNvbnN0IFhNTF9BVFRSU19BREpVU1RNRU5UX01BUCA9IHtcbiAgICAneGxpbms6YWN0dWF0ZSc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnYWN0dWF0ZScsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6YXJjcm9sZSc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnYXJjcm9sZScsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6aHJlZic6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnaHJlZicsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6cm9sZSc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAncm9sZScsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6c2hvdyc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnc2hvdycsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6dGl0bGUnOiB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3RpdGxlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bGluazp0eXBlJzogeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICd0eXBlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bWw6YmFzZSc6IHsgcHJlZml4OiAneG1sJywgbmFtZTogJ2Jhc2UnLCBuYW1lc3BhY2U6IE5TLlhNTCB9LFxuICAgICd4bWw6bGFuZyc6IHsgcHJlZml4OiAneG1sJywgbmFtZTogJ2xhbmcnLCBuYW1lc3BhY2U6IE5TLlhNTCB9LFxuICAgICd4bWw6c3BhY2UnOiB7IHByZWZpeDogJ3htbCcsIG5hbWU6ICdzcGFjZScsIG5hbWVzcGFjZTogTlMuWE1MIH0sXG4gICAgeG1sbnM6IHsgcHJlZml4OiAnJywgbmFtZTogJ3htbG5zJywgbmFtZXNwYWNlOiBOUy5YTUxOUyB9LFxuICAgICd4bWxuczp4bGluayc6IHsgcHJlZml4OiAneG1sbnMnLCBuYW1lOiAneGxpbmsnLCBuYW1lc3BhY2U6IE5TLlhNTE5TIH1cbn07XG5cbi8vU1ZHIHRhZyBuYW1lcyBhZGp1c3RtZW50IG1hcFxuY29uc3QgU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUCA9IChleHBvcnRzLlNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAgPSB7XG4gICAgYWx0Z2x5cGg6ICdhbHRHbHlwaCcsXG4gICAgYWx0Z2x5cGhkZWY6ICdhbHRHbHlwaERlZicsXG4gICAgYWx0Z2x5cGhpdGVtOiAnYWx0R2x5cGhJdGVtJyxcbiAgICBhbmltYXRlY29sb3I6ICdhbmltYXRlQ29sb3InLFxuICAgIGFuaW1hdGVtb3Rpb246ICdhbmltYXRlTW90aW9uJyxcbiAgICBhbmltYXRldHJhbnNmb3JtOiAnYW5pbWF0ZVRyYW5zZm9ybScsXG4gICAgY2xpcHBhdGg6ICdjbGlwUGF0aCcsXG4gICAgZmVibGVuZDogJ2ZlQmxlbmQnLFxuICAgIGZlY29sb3JtYXRyaXg6ICdmZUNvbG9yTWF0cml4JyxcbiAgICBmZWNvbXBvbmVudHRyYW5zZmVyOiAnZmVDb21wb25lbnRUcmFuc2ZlcicsXG4gICAgZmVjb21wb3NpdGU6ICdmZUNvbXBvc2l0ZScsXG4gICAgZmVjb252b2x2ZW1hdHJpeDogJ2ZlQ29udm9sdmVNYXRyaXgnLFxuICAgIGZlZGlmZnVzZWxpZ2h0aW5nOiAnZmVEaWZmdXNlTGlnaHRpbmcnLFxuICAgIGZlZGlzcGxhY2VtZW50bWFwOiAnZmVEaXNwbGFjZW1lbnRNYXAnLFxuICAgIGZlZGlzdGFudGxpZ2h0OiAnZmVEaXN0YW50TGlnaHQnLFxuICAgIGZlZmxvb2Q6ICdmZUZsb29kJyxcbiAgICBmZWZ1bmNhOiAnZmVGdW5jQScsXG4gICAgZmVmdW5jYjogJ2ZlRnVuY0InLFxuICAgIGZlZnVuY2c6ICdmZUZ1bmNHJyxcbiAgICBmZWZ1bmNyOiAnZmVGdW5jUicsXG4gICAgZmVnYXVzc2lhbmJsdXI6ICdmZUdhdXNzaWFuQmx1cicsXG4gICAgZmVpbWFnZTogJ2ZlSW1hZ2UnLFxuICAgIGZlbWVyZ2U6ICdmZU1lcmdlJyxcbiAgICBmZW1lcmdlbm9kZTogJ2ZlTWVyZ2VOb2RlJyxcbiAgICBmZW1vcnBob2xvZ3k6ICdmZU1vcnBob2xvZ3knLFxuICAgIGZlb2Zmc2V0OiAnZmVPZmZzZXQnLFxuICAgIGZlcG9pbnRsaWdodDogJ2ZlUG9pbnRMaWdodCcsXG4gICAgZmVzcGVjdWxhcmxpZ2h0aW5nOiAnZmVTcGVjdWxhckxpZ2h0aW5nJyxcbiAgICBmZXNwb3RsaWdodDogJ2ZlU3BvdExpZ2h0JyxcbiAgICBmZXRpbGU6ICdmZVRpbGUnLFxuICAgIGZldHVyYnVsZW5jZTogJ2ZlVHVyYnVsZW5jZScsXG4gICAgZm9yZWlnbm9iamVjdDogJ2ZvcmVpZ25PYmplY3QnLFxuICAgIGdseXBocmVmOiAnZ2x5cGhSZWYnLFxuICAgIGxpbmVhcmdyYWRpZW50OiAnbGluZWFyR3JhZGllbnQnLFxuICAgIHJhZGlhbGdyYWRpZW50OiAncmFkaWFsR3JhZGllbnQnLFxuICAgIHRleHRwYXRoOiAndGV4dFBhdGgnXG59KTtcblxuLy9UYWdzIHRoYXQgY2F1c2VzIGV4aXQgZnJvbSBmb3JlaWduIGNvbnRlbnRcbmNvbnN0IEVYSVRTX0ZPUkVJR05fQ09OVEVOVCA9IHtcbiAgICBbJC5CXTogdHJ1ZSxcbiAgICBbJC5CSUddOiB0cnVlLFxuICAgIFskLkJMT0NLUVVPVEVdOiB0cnVlLFxuICAgIFskLkJPRFldOiB0cnVlLFxuICAgIFskLkJSXTogdHJ1ZSxcbiAgICBbJC5DRU5URVJdOiB0cnVlLFxuICAgIFskLkNPREVdOiB0cnVlLFxuICAgIFskLkREXTogdHJ1ZSxcbiAgICBbJC5ESVZdOiB0cnVlLFxuICAgIFskLkRMXTogdHJ1ZSxcbiAgICBbJC5EVF06IHRydWUsXG4gICAgWyQuRU1dOiB0cnVlLFxuICAgIFskLkVNQkVEXTogdHJ1ZSxcbiAgICBbJC5IMV06IHRydWUsXG4gICAgWyQuSDJdOiB0cnVlLFxuICAgIFskLkgzXTogdHJ1ZSxcbiAgICBbJC5INF06IHRydWUsXG4gICAgWyQuSDVdOiB0cnVlLFxuICAgIFskLkg2XTogdHJ1ZSxcbiAgICBbJC5IRUFEXTogdHJ1ZSxcbiAgICBbJC5IUl06IHRydWUsXG4gICAgWyQuSV06IHRydWUsXG4gICAgWyQuSU1HXTogdHJ1ZSxcbiAgICBbJC5MSV06IHRydWUsXG4gICAgWyQuTElTVElOR106IHRydWUsXG4gICAgWyQuTUVOVV06IHRydWUsXG4gICAgWyQuTUVUQV06IHRydWUsXG4gICAgWyQuTk9CUl06IHRydWUsXG4gICAgWyQuT0xdOiB0cnVlLFxuICAgIFskLlBdOiB0cnVlLFxuICAgIFskLlBSRV06IHRydWUsXG4gICAgWyQuUlVCWV06IHRydWUsXG4gICAgWyQuU106IHRydWUsXG4gICAgWyQuU01BTExdOiB0cnVlLFxuICAgIFskLlNQQU5dOiB0cnVlLFxuICAgIFskLlNUUk9OR106IHRydWUsXG4gICAgWyQuU1RSSUtFXTogdHJ1ZSxcbiAgICBbJC5TVUJdOiB0cnVlLFxuICAgIFskLlNVUF06IHRydWUsXG4gICAgWyQuVEFCTEVdOiB0cnVlLFxuICAgIFskLlRUXTogdHJ1ZSxcbiAgICBbJC5VXTogdHJ1ZSxcbiAgICBbJC5VTF06IHRydWUsXG4gICAgWyQuVkFSXTogdHJ1ZVxufTtcblxuLy9DaGVjayBleGl0IGZyb20gZm9yZWlnbiBjb250ZW50XG5leHBvcnRzLmNhdXNlc0V4aXQgPSBmdW5jdGlvbihzdGFydFRhZ1Rva2VuKSB7XG4gICAgY29uc3QgdG4gPSBzdGFydFRhZ1Rva2VuLnRhZ05hbWU7XG4gICAgY29uc3QgaXNGb250V2l0aEF0dHJzID1cbiAgICAgICAgdG4gPT09ICQuRk9OVCAmJlxuICAgICAgICAoVG9rZW5pemVyLmdldFRva2VuQXR0cihzdGFydFRhZ1Rva2VuLCBBVFRSUy5DT0xPUikgIT09IG51bGwgfHxcbiAgICAgICAgICAgIFRva2VuaXplci5nZXRUb2tlbkF0dHIoc3RhcnRUYWdUb2tlbiwgQVRUUlMuU0laRSkgIT09IG51bGwgfHxcbiAgICAgICAgICAgIFRva2VuaXplci5nZXRUb2tlbkF0dHIoc3RhcnRUYWdUb2tlbiwgQVRUUlMuRkFDRSkgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGlzRm9udFdpdGhBdHRycyA/IHRydWUgOiBFWElUU19GT1JFSUdOX0NPTlRFTlRbdG5dO1xufTtcblxuLy9Ub2tlbiBhZGp1c3RtZW50c1xuZXhwb3J0cy5hZGp1c3RUb2tlbk1hdGhNTEF0dHJzID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbi5hdHRyc1tpXS5uYW1lID09PSBERUZJTklUSU9OX1VSTF9BVFRSKSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gQURKVVNURURfREVGSU5JVElPTl9VUkxfQVRUUjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0cy5hZGp1c3RUb2tlblNWR0F0dHJzID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkQXR0ck5hbWUgPSBTVkdfQVRUUlNfQURKVVNUTUVOVF9NQVBbdG9rZW4uYXR0cnNbaV0ubmFtZV07XG5cbiAgICAgICAgaWYgKGFkanVzdGVkQXR0ck5hbWUpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWUgPSBhZGp1c3RlZEF0dHJOYW1lO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0cy5hZGp1c3RUb2tlblhNTEF0dHJzID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkQXR0ckVudHJ5ID0gWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQW3Rva2VuLmF0dHJzW2ldLm5hbWVdO1xuXG4gICAgICAgIGlmIChhZGp1c3RlZEF0dHJFbnRyeSkge1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ucHJlZml4ID0gYWRqdXN0ZWRBdHRyRW50cnkucHJlZml4O1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ubmFtZSA9IGFkanVzdGVkQXR0ckVudHJ5Lm5hbWU7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lc3BhY2UgPSBhZGp1c3RlZEF0dHJFbnRyeS5uYW1lc3BhY2U7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnRzLmFkanVzdFRva2VuU1ZHVGFnTmFtZSA9IGZ1bmN0aW9uKHRva2VuKSB7XG4gICAgY29uc3QgYWRqdXN0ZWRUYWdOYW1lID0gU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUFt0b2tlbi50YWdOYW1lXTtcblxuICAgIGlmIChhZGp1c3RlZFRhZ05hbWUpIHtcbiAgICAgICAgdG9rZW4udGFnTmFtZSA9IGFkanVzdGVkVGFnTmFtZTtcbiAgICB9XG59O1xuXG4vL0ludGVncmF0aW9uIHBvaW50c1xuZnVuY3Rpb24gaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCh0biwgbnMpIHtcbiAgICByZXR1cm4gbnMgPT09IE5TLk1BVEhNTCAmJiAodG4gPT09ICQuTUkgfHwgdG4gPT09ICQuTU8gfHwgdG4gPT09ICQuTU4gfHwgdG4gPT09ICQuTVMgfHwgdG4gPT09ICQuTVRFWFQpO1xufVxuXG5mdW5jdGlvbiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpIHtcbiAgICBpZiAobnMgPT09IE5TLk1BVEhNTCAmJiB0biA9PT0gJC5BTk5PVEFUSU9OX1hNTCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYXR0cnNbaV0ubmFtZSA9PT0gQVRUUlMuRU5DT0RJTkcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJzW2ldLnZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT09IE1JTUVfVFlQRVMuVEVYVF9IVE1MIHx8IHZhbHVlID09PSBNSU1FX1RZUEVTLkFQUExJQ0FUSU9OX1hNTDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBucyA9PT0gTlMuU1ZHICYmICh0biA9PT0gJC5GT1JFSUdOX09CSkVDVCB8fCB0biA9PT0gJC5ERVNDIHx8IHRuID09PSAkLlRJVExFKTtcbn1cblxuZXhwb3J0cy5pc0ludGVncmF0aW9uUG9pbnQgPSBmdW5jdGlvbih0biwgbnMsIGF0dHJzLCBmb3JlaWduTlMpIHtcbiAgICBpZiAoKCFmb3JlaWduTlMgfHwgZm9yZWlnbk5TID09PSBOUy5IVE1MKSAmJiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICgoIWZvcmVpZ25OUyB8fCBmb3JlaWduTlMgPT09IE5TLk1BVEhNTCkgJiYgaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCh0biwgbnMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFRva2VuaXplciA9IHJlcXVpcmUoJy4uL3Rva2VuaXplcicpO1xuY29uc3QgT3BlbkVsZW1lbnRTdGFjayA9IHJlcXVpcmUoJy4vb3Blbi1lbGVtZW50LXN0YWNrJyk7XG5jb25zdCBGb3JtYXR0aW5nRWxlbWVudExpc3QgPSByZXF1aXJlKCcuL2Zvcm1hdHRpbmctZWxlbWVudC1saXN0Jyk7XG5jb25zdCBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiA9IHJlcXVpcmUoJy4uL2V4dGVuc2lvbnMvbG9jYXRpb24taW5mby9wYXJzZXItbWl4aW4nKTtcbmNvbnN0IEVycm9yUmVwb3J0aW5nUGFyc2VyTWl4aW4gPSByZXF1aXJlKCcuLi9leHRlbnNpb25zL2Vycm9yLXJlcG9ydGluZy9wYXJzZXItbWl4aW4nKTtcbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vdXRpbHMvbWl4aW4nKTtcbmNvbnN0IGRlZmF1bHRUcmVlQWRhcHRlciA9IHJlcXVpcmUoJy4uL3RyZWUtYWRhcHRlcnMvZGVmYXVsdCcpO1xuY29uc3QgbWVyZ2VPcHRpb25zID0gcmVxdWlyZSgnLi4vdXRpbHMvbWVyZ2Utb3B0aW9ucycpO1xuY29uc3QgZG9jdHlwZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi9kb2N0eXBlJyk7XG5jb25zdCBmb3JlaWduQ29udGVudCA9IHJlcXVpcmUoJy4uL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQnKTtcbmNvbnN0IEVSUiA9IHJlcXVpcmUoJy4uL2NvbW1vbi9lcnJvci1jb2RlcycpO1xuY29uc3QgdW5pY29kZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91bmljb2RlJyk7XG5jb25zdCBIVE1MID0gcmVxdWlyZSgnLi4vY29tbW9uL2h0bWwnKTtcblxuLy9BbGlhc2VzXG5jb25zdCAkID0gSFRNTC5UQUdfTkFNRVM7XG5jb25zdCBOUyA9IEhUTUwuTkFNRVNQQUNFUztcbmNvbnN0IEFUVFJTID0gSFRNTC5BVFRSUztcblxuY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICAgIHNjcmlwdGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgc291cmNlQ29kZUxvY2F0aW9uSW5mbzogZmFsc2UsXG4gICAgb25QYXJzZUVycm9yOiBudWxsLFxuICAgIHRyZWVBZGFwdGVyOiBkZWZhdWx0VHJlZUFkYXB0ZXJcbn07XG5cbi8vTWlzYyBjb25zdGFudHNcbmNvbnN0IEhJRERFTl9JTlBVVF9UWVBFID0gJ2hpZGRlbic7XG5cbi8vQWRvcHRpb24gYWdlbmN5IGxvb3BzIGl0ZXJhdGlvbiBjb3VudFxuY29uc3QgQUFfT1VURVJfTE9PUF9JVEVSID0gODtcbmNvbnN0IEFBX0lOTkVSX0xPT1BfSVRFUiA9IDM7XG5cbi8vSW5zZXJ0aW9uIG1vZGVzXG5jb25zdCBJTklUSUFMX01PREUgPSAnSU5JVElBTF9NT0RFJztcbmNvbnN0IEJFRk9SRV9IVE1MX01PREUgPSAnQkVGT1JFX0hUTUxfTU9ERSc7XG5jb25zdCBCRUZPUkVfSEVBRF9NT0RFID0gJ0JFRk9SRV9IRUFEX01PREUnO1xuY29uc3QgSU5fSEVBRF9NT0RFID0gJ0lOX0hFQURfTU9ERSc7XG5jb25zdCBJTl9IRUFEX05PX1NDUklQVF9NT0RFID0gJ0lOX0hFQURfTk9fU0NSSVBUX01PREUnO1xuY29uc3QgQUZURVJfSEVBRF9NT0RFID0gJ0FGVEVSX0hFQURfTU9ERSc7XG5jb25zdCBJTl9CT0RZX01PREUgPSAnSU5fQk9EWV9NT0RFJztcbmNvbnN0IFRFWFRfTU9ERSA9ICdURVhUX01PREUnO1xuY29uc3QgSU5fVEFCTEVfTU9ERSA9ICdJTl9UQUJMRV9NT0RFJztcbmNvbnN0IElOX1RBQkxFX1RFWFRfTU9ERSA9ICdJTl9UQUJMRV9URVhUX01PREUnO1xuY29uc3QgSU5fQ0FQVElPTl9NT0RFID0gJ0lOX0NBUFRJT05fTU9ERSc7XG5jb25zdCBJTl9DT0xVTU5fR1JPVVBfTU9ERSA9ICdJTl9DT0xVTU5fR1JPVVBfTU9ERSc7XG5jb25zdCBJTl9UQUJMRV9CT0RZX01PREUgPSAnSU5fVEFCTEVfQk9EWV9NT0RFJztcbmNvbnN0IElOX1JPV19NT0RFID0gJ0lOX1JPV19NT0RFJztcbmNvbnN0IElOX0NFTExfTU9ERSA9ICdJTl9DRUxMX01PREUnO1xuY29uc3QgSU5fU0VMRUNUX01PREUgPSAnSU5fU0VMRUNUX01PREUnO1xuY29uc3QgSU5fU0VMRUNUX0lOX1RBQkxFX01PREUgPSAnSU5fU0VMRUNUX0lOX1RBQkxFX01PREUnO1xuY29uc3QgSU5fVEVNUExBVEVfTU9ERSA9ICdJTl9URU1QTEFURV9NT0RFJztcbmNvbnN0IEFGVEVSX0JPRFlfTU9ERSA9ICdBRlRFUl9CT0RZX01PREUnO1xuY29uc3QgSU5fRlJBTUVTRVRfTU9ERSA9ICdJTl9GUkFNRVNFVF9NT0RFJztcbmNvbnN0IEFGVEVSX0ZSQU1FU0VUX01PREUgPSAnQUZURVJfRlJBTUVTRVRfTU9ERSc7XG5jb25zdCBBRlRFUl9BRlRFUl9CT0RZX01PREUgPSAnQUZURVJfQUZURVJfQk9EWV9NT0RFJztcbmNvbnN0IEFGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREUgPSAnQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERSc7XG5cbi8vSW5zZXJ0aW9uIG1vZGUgcmVzZXQgbWFwXG5jb25zdCBJTlNFUlRJT05fTU9ERV9SRVNFVF9NQVAgPSB7XG4gICAgWyQuVFJdOiBJTl9ST1dfTU9ERSxcbiAgICBbJC5UQk9EWV06IElOX1RBQkxFX0JPRFlfTU9ERSxcbiAgICBbJC5USEVBRF06IElOX1RBQkxFX0JPRFlfTU9ERSxcbiAgICBbJC5URk9PVF06IElOX1RBQkxFX0JPRFlfTU9ERSxcbiAgICBbJC5DQVBUSU9OXTogSU5fQ0FQVElPTl9NT0RFLFxuICAgIFskLkNPTEdST1VQXTogSU5fQ09MVU1OX0dST1VQX01PREUsXG4gICAgWyQuVEFCTEVdOiBJTl9UQUJMRV9NT0RFLFxuICAgIFskLkJPRFldOiBJTl9CT0RZX01PREUsXG4gICAgWyQuRlJBTUVTRVRdOiBJTl9GUkFNRVNFVF9NT0RFXG59O1xuXG4vL1RlbXBsYXRlIGluc2VydGlvbiBtb2RlIHN3aXRjaCBtYXBcbmNvbnN0IFRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVAgPSB7XG4gICAgWyQuQ0FQVElPTl06IElOX1RBQkxFX01PREUsXG4gICAgWyQuQ09MR1JPVVBdOiBJTl9UQUJMRV9NT0RFLFxuICAgIFskLlRCT0RZXTogSU5fVEFCTEVfTU9ERSxcbiAgICBbJC5URk9PVF06IElOX1RBQkxFX01PREUsXG4gICAgWyQuVEhFQURdOiBJTl9UQUJMRV9NT0RFLFxuICAgIFskLkNPTF06IElOX0NPTFVNTl9HUk9VUF9NT0RFLFxuICAgIFskLlRSXTogSU5fVEFCTEVfQk9EWV9NT0RFLFxuICAgIFskLlREXTogSU5fUk9XX01PREUsXG4gICAgWyQuVEhdOiBJTl9ST1dfTU9ERVxufTtcblxuLy9Ub2tlbiBoYW5kbGVycyBtYXAgZm9yIGluc2VydGlvbiBtb2Rlc1xuY29uc3QgVE9LRU5fSEFORExFUlMgPSB7XG4gICAgW0lOSVRJQUxfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogZG9jdHlwZUluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogdG9rZW5JbkluaXRpYWxNb2RlLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5JbkluaXRpYWxNb2RlXG4gICAgfSxcbiAgICBbQkVGT1JFX0hUTUxfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkJlZm9yZUh0bWwsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkJlZm9yZUh0bWwsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdCZWZvcmVIdG1sLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdCZWZvcmVIdG1sLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuQmVmb3JlSHRtbFxuICAgIH0sXG4gICAgW0JFRk9SRV9IRUFEX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5CZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5CZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IG1pc3BsYWNlZERvY3R5cGUsXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdCZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdCZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuQmVmb3JlSGVhZFxuICAgIH0sXG4gICAgW0lOX0hFQURfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuSW5IZWFkLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogbWlzcGxhY2VkRG9jdHlwZSxcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luSGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5IZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuSW5IZWFkXG4gICAgfSxcbiAgICBbSU5fSEVBRF9OT19TQ1JJUFRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSGVhZE5vU2NyaXB0LFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5JbkhlYWROb1NjcmlwdCxcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IG1pc3BsYWNlZERvY3R5cGUsXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkhlYWROb1NjcmlwdCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5IZWFkTm9TY3JpcHQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5JbkhlYWROb1NjcmlwdFxuICAgIH0sXG4gICAgW0FGVEVSX0hFQURfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkFmdGVySGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogbWlzcGxhY2VkRG9jdHlwZSxcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0FmdGVySGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnQWZ0ZXJIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuQWZ0ZXJIZWFkXG4gICAgfSxcbiAgICBbSU5fQk9EWV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtURVhUX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luVGV4dCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJblRleHRcbiAgICB9LFxuICAgIFtJTl9UQUJMRV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1RBQkxFX1RFWFRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlVGV4dCxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluVGFibGVUZXh0LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiB0b2tlbkluVGFibGVUZXh0LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiB0b2tlbkluVGFibGVUZXh0LFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHRva2VuSW5UYWJsZVRleHQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IHRva2VuSW5UYWJsZVRleHQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5JblRhYmxlVGV4dFxuICAgIH0sXG4gICAgW0lOX0NBUFRJT05fTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnSW5DYXB0aW9uLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkNhcHRpb24sXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5Cb2R5XG4gICAgfSxcbiAgICBbSU5fQ09MVU1OX0dST1VQX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5JbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5JbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1RBQkxFX0JPRFlfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnSW5UYWJsZUJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luVGFibGVCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1JPV19NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJblJvdyxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5Sb3csXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5Cb2R5XG4gICAgfSxcbiAgICBbSU5fQ0VMTF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkNlbGwsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luQ2VsbCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtJTl9TRUxFQ1RfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luU2VsZWN0LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJblNlbGVjdCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luU2VsZWN0SW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5TZWxlY3RJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1RFTVBMQVRFX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luVGVtcGxhdGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luVGVtcGxhdGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5UZW1wbGF0ZVxuICAgIH0sXG4gICAgW0FGVEVSX0JPRFlfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkFmdGVyQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudFRvUm9vdEh0bWxFbGVtZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0FmdGVyQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfSxcbiAgICBbSU5fRlJBTUVTRVRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfSxcbiAgICBbQUZURVJfRlJBTUVTRVRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdBZnRlckZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdBZnRlckZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfSxcbiAgICBbQUZURVJfQUZURVJfQk9EWV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkFmdGVyQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnQWZ0ZXJBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IHRva2VuQWZ0ZXJBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogc3RvcFBhcnNpbmdcbiAgICB9LFxuICAgIFtBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50VG9Eb2N1bWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdBZnRlckFmdGVyRnJhbWVzZXQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfVxufTtcblxuLy9QYXJzZXJcbmNsYXNzIFBhcnNlciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoREVGQVVMVF9PUFRJT05TLCBvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdGhpcy5vcHRpb25zLnRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLnBlbmRpbmdTY3JpcHQgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLCBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9uUGFyc2VFcnJvcikge1xuICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLCBFcnJvclJlcG9ydGluZ1BhcnNlck1peGluLCB7IG9uUGFyc2VFcnJvcjogdGhpcy5vcHRpb25zLm9uUGFyc2VFcnJvciB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFQSVxuICAgIHBhcnNlKGh0bWwpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50KCk7XG5cbiAgICAgICAgdGhpcy5fYm9vdHN0cmFwKGRvY3VtZW50LCBudWxsKTtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIud3JpdGUoaHRtbCwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKG51bGwpO1xuXG4gICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICB9XG5cbiAgICBwYXJzZUZyYWdtZW50KGh0bWwsIGZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAvL05PVEU6IHVzZSA8dGVtcGxhdGU+IGVsZW1lbnQgYXMgYSBmcmFnbWVudCBjb250ZXh0IGlmIGNvbnRleHQgZWxlbWVudCB3YXMgbm90IHByb3ZpZGVkLFxuICAgICAgICAvL3NvIHdlIHdpbGwgcGFyc2UgaW4gXCJmb3JnaXZpbmdcIiBtYW5uZXJcbiAgICAgICAgaWYgKCFmcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgIGZyYWdtZW50Q29udGV4dCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgkLlRFTVBMQVRFLCBOUy5IVE1MLCBbXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IGNyZWF0ZSBmYWtlIGVsZW1lbnQgd2hpY2ggd2lsbCBiZSB1c2VkIGFzICdkb2N1bWVudCcgZm9yIGZyYWdtZW50IHBhcnNpbmcuXG4gICAgICAgIC8vVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGpzZG9tIHRoZXJlICdkb2N1bWVudCcgY2FuJ3QgYmUgcmVjcmVhdGVkLCB0aGVyZWZvcmVcbiAgICAgICAgLy9mcmFnbWVudCBwYXJzaW5nIGNhdXNlcyBtZXNzaW5nIG9mIHRoZSBtYWluIGBkb2N1bWVudGAuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50TW9jayA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgnZG9jdW1lbnRtb2NrJywgTlMuSFRNTCwgW10pO1xuXG4gICAgICAgIHRoaXMuX2Jvb3RzdHJhcChkb2N1bWVudE1vY2ssIGZyYWdtZW50Q29udGV4dCk7XG5cbiAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShmcmFnbWVudENvbnRleHQpID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICB0aGlzLl9wdXNoVG1wbEluc2VydGlvbk1vZGUoSU5fVEVNUExBVEVfTU9ERSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pbml0VG9rZW5pemVyRm9yRnJhZ21lbnRQYXJzaW5nKCk7XG4gICAgICAgIHRoaXMuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xuICAgICAgICB0aGlzLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgdGhpcy5fZmluZEZvcm1JbkZyYWdtZW50Q29udGV4dCgpO1xuICAgICAgICB0aGlzLnRva2VuaXplci53cml0ZShodG1sLCB0cnVlKTtcbiAgICAgICAgdGhpcy5fcnVuUGFyc2luZ0xvb3AobnVsbCk7XG5cbiAgICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9jdW1lbnRNb2NrKTtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgICAgICB0aGlzLl9hZG9wdE5vZGVzKHJvb3RFbGVtZW50LCBmcmFnbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIGZyYWdtZW50O1xuICAgIH1cblxuICAgIC8vQm9vdHN0cmFwIHBhcnNlclxuICAgIF9ib290c3RyYXAoZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICB0aGlzLnRva2VuaXplciA9IG5ldyBUb2tlbml6ZXIodGhpcy5vcHRpb25zKTtcblxuICAgICAgICB0aGlzLnN0b3BwZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTklUSUFMX01PREU7XG4gICAgICAgIHRoaXMub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gJyc7XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuICAgICAgICB0aGlzLmZyYWdtZW50Q29udGV4dCA9IGZyYWdtZW50Q29udGV4dDtcblxuICAgICAgICB0aGlzLmhlYWRFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5mb3JtRWxlbWVudCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMgPSBuZXcgT3BlbkVsZW1lbnRTdGFjayh0aGlzLmRvY3VtZW50LCB0aGlzLnRyZWVBZGFwdGVyKTtcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMgPSBuZXcgRm9ybWF0dGluZ0VsZW1lbnRMaXN0KHRoaXMudHJlZUFkYXB0ZXIpO1xuXG4gICAgICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFjayA9IFtdO1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AgPSAtMTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSBudWxsO1xuXG4gICAgICAgIHRoaXMucGVuZGluZ0NoYXJhY3RlclRva2VucyA9IFtdO1xuICAgICAgICB0aGlzLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4gPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmZyYW1lc2V0T2sgPSB0cnVlO1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvL0Vycm9yc1xuICAgIF9lcnIoKSB7XG4gICAgICAgIC8vIE5PVEU6IGVyciByZXBvcnRpbmcgaXMgbm9vcCBieSBkZWZhdWx0LiBFbmFibGVkIGJ5IG1peGluLlxuICAgIH1cblxuICAgIC8vUGFyc2luZyBsb29wXG4gICAgX3J1blBhcnNpbmdMb29wKHNjcmlwdEhhbmRsZXIpIHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLnN0b3BwZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwVG9rZW5pemVyQ0RBVEFNb2RlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbml6ZXIuZ2V0TmV4dFRva2VuKCk7XG5cbiAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuSElCRVJOQVRJT05fVE9LRU4pIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc2tpcE5leHROZXdMaW5lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gJiYgdG9rZW4uY2hhcnNbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi5jaGFycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uY2hhcnMgPSB0b2tlbi5jaGFycy5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzSW5wdXRUb2tlbih0b2tlbik7XG5cbiAgICAgICAgICAgIGlmIChzY3JpcHRIYW5kbGVyICYmIHRoaXMucGVuZGluZ1NjcmlwdCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcnVuUGFyc2luZ0xvb3BGb3JDdXJyZW50Q2h1bmsod3JpdGVDYWxsYmFjaywgc2NyaXB0SGFuZGxlcikge1xuICAgICAgICB0aGlzLl9ydW5QYXJzaW5nTG9vcChzY3JpcHRIYW5kbGVyKTtcblxuICAgICAgICBpZiAoc2NyaXB0SGFuZGxlciAmJiB0aGlzLnBlbmRpbmdTY3JpcHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMucGVuZGluZ1NjcmlwdDtcblxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nU2NyaXB0ID0gbnVsbDtcblxuICAgICAgICAgICAgc2NyaXB0SGFuZGxlcihzY3JpcHQpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod3JpdGVDYWxsYmFjaykge1xuICAgICAgICAgICAgd3JpdGVDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9UZXh0IHBhcnNpbmdcbiAgICBfc2V0dXBUb2tlbml6ZXJDREFUQU1vZGUoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICAgICAgdGhpcy50b2tlbml6ZXIuYWxsb3dDREFUQSA9XG4gICAgICAgICAgICBjdXJyZW50ICYmXG4gICAgICAgICAgICBjdXJyZW50ICE9PSB0aGlzLmRvY3VtZW50ICYmXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KSAhPT0gTlMuSFRNTCAmJlxuICAgICAgICAgICAgIXRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludChjdXJyZW50KTtcbiAgICB9XG5cbiAgICBfc3dpdGNoVG9UZXh0UGFyc2luZyhjdXJyZW50VG9rZW4sIG5leHRUb2tlbml6ZXJTdGF0ZSkge1xuICAgICAgICB0aGlzLl9pbnNlcnRFbGVtZW50KGN1cnJlbnRUb2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gbmV4dFRva2VuaXplclN0YXRlO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHRoaXMuaW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gVEVYVF9NT0RFO1xuICAgIH1cblxuICAgIHN3aXRjaFRvUGxhaW50ZXh0UGFyc2luZygpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gVEVYVF9NT0RFO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5QTEFJTlRFWFQ7XG4gICAgfVxuXG4gICAgLy9GcmFnbWVudCBwYXJzaW5nXG4gICAgX2dldEFkanVzdGVkQ3VycmVudEVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLmZyYWdtZW50Q29udGV4dFxuICAgICAgICAgICAgPyB0aGlzLmZyYWdtZW50Q29udGV4dFxuICAgICAgICAgICAgOiB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgIH1cblxuICAgIF9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0KCkge1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMuZnJhZ21lbnRDb250ZXh0O1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUobm9kZSkgPT09ICQuRk9STSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlID0gdGhpcy50cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICB9IHdoaWxlIChub2RlKTtcbiAgICB9XG5cbiAgICBfaW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZygpIHtcbiAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuZnJhZ21lbnRDb250ZXh0KSA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5mcmFnbWVudENvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVElUTEUgfHwgdG4gPT09ICQuVEVYVEFSRUEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlJDREFUQTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuU1RZTEUgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5YTVAgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5JRlJBTUUgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5OT0VNQkVEIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuTk9GUkFNRVMgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5OT1NDUklQVFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5SQVdURVhUO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TQ1JJUFQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlNDUklQVF9EQVRBO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5QTEFJTlRFWFQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlBMQUlOVEVYVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vVHJlZSBtdXRhdGlvblxuICAgIF9zZXREb2N1bWVudFR5cGUodG9rZW4pIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRva2VuLm5hbWUgfHwgJyc7XG4gICAgICAgIGNvbnN0IHB1YmxpY0lkID0gdG9rZW4ucHVibGljSWQgfHwgJyc7XG4gICAgICAgIGNvbnN0IHN5c3RlbUlkID0gdG9rZW4uc3lzdGVtSWQgfHwgJyc7XG5cbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXREb2N1bWVudFR5cGUodGhpcy5kb2N1bWVudCwgbmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTtcbiAgICB9XG5cbiAgICBfYXR0YWNoRWxlbWVudFRvVHJlZShlbGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3N0ZXJQYXJlbnRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50IHx8IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9hcHBlbmRFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBuYW1lc3BhY2VVUkksIHRva2VuLmF0dHJzKTtcblxuICAgICAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIF9pbnNlcnRFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBuYW1lc3BhY2VVUkksIHRva2VuLmF0dHJzKTtcblxuICAgICAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIF9pbnNlcnRGYWtlRWxlbWVudCh0YWdOYW1lKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgTlMuSFRNTCwgW10pO1xuXG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuXG4gICAgX2luc2VydFRlbXBsYXRlKHRva2VuKSB7XG4gICAgICAgIGNvbnN0IHRtcGwgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgTlMuSFRNTCwgdG9rZW4uYXR0cnMpO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG5cbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXRUZW1wbGF0ZUNvbnRlbnQodG1wbCwgY29udGVudCk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUodG1wbCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2godG1wbCk7XG4gICAgfVxuXG4gICAgX2luc2VydEZha2VSb290RWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgkLkhUTUwsIE5TLkhUTUwsIFtdKTtcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQsIGVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIF9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVDb21tZW50Tm9kZSh0b2tlbi5kYXRhKTtcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHBhcmVudCwgY29tbWVudE5vZGUpO1xuICAgIH1cblxuICAgIF9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3N0ZXJQYXJlbnRUZXh0KHRva2VuLmNoYXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudCB8fCB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHQocGFyZW50LCB0b2tlbi5jaGFycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfYWRvcHROb2Rlcyhkb25vciwgcmVjaXBpZW50KSB7XG4gICAgICAgIGZvciAobGV0IGNoaWxkID0gdGhpcy50cmVlQWRhcHRlci5nZXRGaXJzdENoaWxkKGRvbm9yKTsgY2hpbGQ7IGNoaWxkID0gdGhpcy50cmVlQWRhcHRlci5nZXRGaXJzdENoaWxkKGRvbm9yKSkge1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGNoaWxkKTtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocmVjaXBpZW50LCBjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1Rva2VuIHByb2Nlc3NpbmdcbiAgICBfc2hvdWxkUHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCh0b2tlbikge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCgpO1xuXG4gICAgICAgIGlmICghY3VycmVudCB8fCBjdXJyZW50ID09PSB0aGlzLmRvY3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpO1xuXG4gICAgICAgIGlmIChucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGN1cnJlbnQpID09PSAkLkFOTk9UQVRJT05fWE1MICYmXG4gICAgICAgICAgICBucyA9PT0gTlMuTUFUSE1MICYmXG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOICYmXG4gICAgICAgICAgICB0b2tlbi50YWdOYW1lID09PSAkLlNWR1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzQ2hhcmFjdGVyVG9rZW4gPVxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTiB8fFxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOIHx8XG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU47XG5cbiAgICAgICAgY29uc3QgaXNNYXRoTUxUZXh0U3RhcnRUYWcgPVxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTiAmJiB0b2tlbi50YWdOYW1lICE9PSAkLk1HTFlQSCAmJiB0b2tlbi50YWdOYW1lICE9PSAkLk1BTElHTk1BUks7XG5cbiAgICAgICAgaWYgKChpc01hdGhNTFRleHRTdGFydFRhZyB8fCBpc0NoYXJhY3RlclRva2VuKSAmJiB0aGlzLl9pc0ludGVncmF0aW9uUG9pbnQoY3VycmVudCwgTlMuTUFUSE1MKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gfHwgaXNDaGFyYWN0ZXJUb2tlbikgJiZcbiAgICAgICAgICAgIHRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludChjdXJyZW50LCBOUy5IVE1MKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b2tlbi50eXBlICE9PSBUb2tlbml6ZXIuRU9GX1RPS0VOO1xuICAgIH1cblxuICAgIF9wcm9jZXNzVG9rZW4odG9rZW4pIHtcbiAgICAgICAgVE9LRU5fSEFORExFUlNbdGhpcy5pbnNlcnRpb25Nb2RlXVt0b2tlbi50eXBlXSh0aGlzLCB0b2tlbik7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUodG9rZW4pIHtcbiAgICAgICAgVE9LRU5fSEFORExFUlNbSU5fQk9EWV9NT0RFXVt0b2tlbi50eXBlXSh0aGlzLCB0b2tlbik7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQodG9rZW4pIHtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5DSEFSQUNURVJfVE9LRU4pIHtcbiAgICAgICAgICAgIGNoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTikge1xuICAgICAgICAgICAgbnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTikge1xuICAgICAgICAgICAgaW5zZXJ0Q2hhcmFjdGVycyh0aGlzLCB0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkNPTU1FTlRfVE9LRU4pIHtcbiAgICAgICAgICAgIGFwcGVuZENvbW1lbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4pIHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVORF9UQUdfVE9LRU4pIHtcbiAgICAgICAgICAgIGVuZFRhZ0luRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NJbnB1dFRva2VuKHRva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSkge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gJiYgdG9rZW4uc2VsZkNsb3NpbmcgJiYgIXRva2VuLmFja1NlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5vblZvaWRIdG1sRWxlbWVudFN0YXJ0VGFnV2l0aFRyYWlsaW5nU29saWR1cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL0ludGVncmF0aW9uIHBvaW50c1xuICAgIF9pc0ludGVncmF0aW9uUG9pbnQoZWxlbWVudCwgZm9yZWlnbk5TKSB7XG4gICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBhdHRycyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QoZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcmVpZ25Db250ZW50LmlzSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzLCBmb3JlaWduTlMpO1xuICAgIH1cblxuICAgIC8vQWN0aXZlIGZvcm1hdHRpbmcgZWxlbWVudHMgcmVjb25zdHJ1Y3Rpb25cbiAgICBfcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKSB7XG4gICAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGxpc3RMZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCB1bm9wZW5JZHggPSBsaXN0TGVuZ3RoO1xuICAgICAgICAgICAgbGV0IGVudHJ5ID0gbnVsbDtcblxuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHVub3BlbklkeC0tO1xuICAgICAgICAgICAgICAgIGVudHJ5ID0gdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZW50cmllc1t1bm9wZW5JZHhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5NQVJLRVJfRU5UUlkgfHwgdGhpcy5vcGVuRWxlbWVudHMuY29udGFpbnMoZW50cnkuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5vcGVuSWR4Kys7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHVub3BlbklkeCA+IDApO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdW5vcGVuSWR4OyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZW50cnkgPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5lbnRyaWVzW2ldO1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydEVsZW1lbnQoZW50cnkudG9rZW4sIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVudHJ5LmVsZW1lbnQpKTtcbiAgICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vQ2xvc2UgZWxlbWVudHNcbiAgICBfY2xvc2VUYWJsZUNlbGwoKSB7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucG9wVW50aWxUYWJsZUNlbGxQb3BwZWQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fUk9XX01PREU7XG4gICAgfVxuXG4gICAgX2Nsb3NlUEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKCQuUCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlApO1xuICAgIH1cblxuICAgIC8vSW5zZXJ0aW9uIG1vZGVzXG4gICAgX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wLCBsYXN0ID0gZmFsc2U7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuXG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGxhc3QgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLmZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbmV3SW5zZXJ0aW9uTW9kZSA9IElOU0VSVElPTl9NT0RFX1JFU0VUX01BUFt0bl07XG5cbiAgICAgICAgICAgIGlmIChuZXdJbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gbmV3SW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxhc3QgJiYgKHRuID09PSAkLlREIHx8IHRuID09PSAkLlRIKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX0NFTExfTU9ERTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxhc3QgJiYgdG4gPT09ICQuSEVBRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTU9ERTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0KGkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IHRoaXMuY3VycmVudFRtcGxJbnNlcnRpb25Nb2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gdGhpcy5oZWFkRWxlbWVudCA/IEFGVEVSX0hFQURfTU9ERSA6IEJFRk9SRV9IRUFEX01PREU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0KHNlbGVjdElkeCkge1xuICAgICAgICBpZiAoc2VsZWN0SWR4ID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdElkeCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmNlc3RvciA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGFuY2VzdG9yKTtcblxuICAgICAgICAgICAgICAgIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9JTl9UQUJMRV9NT0RFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fU0VMRUNUX01PREU7XG4gICAgfVxuXG4gICAgX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZShtb2RlKSB7XG4gICAgICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFjay5wdXNoKG1vZGUpO1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3ArKztcbiAgICAgICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSBtb2RlO1xuICAgIH1cblxuICAgIF9wb3BUbXBsSW5zZXJ0aW9uTW9kZSgpIHtcbiAgICAgICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrLnBvcCgpO1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AtLTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrVG9wXTtcbiAgICB9XG5cbiAgICAvL0Zvc3RlciBwYXJlbnRpbmdcbiAgICBfaXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRGT09UIHx8IHRuID09PSAkLlRIRUFEIHx8IHRuID09PSAkLlRSO1xuICAgIH1cblxuICAgIF9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCAmJiB0aGlzLl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcodGhpcy5vcGVuRWxlbWVudHMuY3VycmVudCk7XG4gICAgfVxuXG4gICAgX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB7XG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBiZWZvcmVFbGVtZW50OiBudWxsXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3Qgb3BlbkVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG9wZW5FbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkob3BlbkVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBsb2NhdGlvbi5wYXJlbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudChvcGVuRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb24ucGFyZW50ID0gdGhpcy50cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG9wZW5FbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uYmVmb3JlRWxlbWVudCA9IG9wZW5FbGVtZW50O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2kgLSAxXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbG9jYXRpb24ucGFyZW50KSB7XG4gICAgICAgICAgICBsb2NhdGlvbi5wYXJlbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1swXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsb2NhdGlvbjtcbiAgICB9XG5cbiAgICBfZm9zdGVyUGFyZW50RWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5fZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0QmVmb3JlKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCwgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfZm9zdGVyUGFyZW50VGV4dChjaGFycykge1xuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpO1xuXG4gICAgICAgIGlmIChsb2NhdGlvbi5iZWZvcmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHRCZWZvcmUobG9jYXRpb24ucGFyZW50LCBjaGFycywgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHQobG9jYXRpb24ucGFyZW50LCBjaGFycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1NwZWNpYWwgZWxlbWVudHNcbiAgICBfaXNTcGVjaWFsRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBIVE1MLlNQRUNJQUxfRUxFTUVOVFNbbnNdW3RuXTtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyO1xuXG4vL0Fkb3B0aW9uIGFnZW5jeSBhbGdvcml0aG1cbi8vKHNlZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCNhZG9wdGlvbkFnZW5jeSlcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vU3RlcHMgNS04IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeShwLCB0b2tlbikge1xuICAgIGxldCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lKHRva2VuLnRhZ05hbWUpO1xuXG4gICAgaWYgKGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICAgICAgaWYgKCFwLm9wZW5FbGVtZW50cy5jb250YWlucyhmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRva2VuLnRhZ05hbWUpKSB7XG4gICAgICAgICAgICBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0aW5nRWxlbWVudEVudHJ5O1xufVxuXG4vL1N0ZXBzIDkgYW5kIDEwIG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhT2J0YWluRnVydGhlc3RCbG9jayhwLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgbGV0IGZ1cnRoZXN0QmxvY2sgPSBudWxsO1xuXG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG5cbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC5faXNTcGVjaWFsRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgZnVydGhlc3RCbG9jayA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZ1cnRoZXN0QmxvY2spIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxFbGVtZW50UG9wcGVkKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgIH1cblxuICAgIHJldHVybiBmdXJ0aGVzdEJsb2NrO1xufVxuXG4vL1N0ZXAgMTMgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFJbm5lckxvb3AocCwgZnVydGhlc3RCbG9jaywgZm9ybWF0dGluZ0VsZW1lbnQpIHtcbiAgICBsZXQgbGFzdEVsZW1lbnQgPSBmdXJ0aGVzdEJsb2NrO1xuICAgIGxldCBuZXh0RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZ1cnRoZXN0QmxvY2spO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGVsZW1lbnQgPSBuZXh0RWxlbWVudDsgZWxlbWVudCAhPT0gZm9ybWF0dGluZ0VsZW1lbnQ7IGkrKywgZWxlbWVudCA9IG5leHRFbGVtZW50KSB7XG4gICAgICAgIC8vTk9URTogc3RvcmUgbmV4dCBlbGVtZW50IGZvciB0aGUgbmV4dCBsb29wIGl0ZXJhdGlvbiAoaXQgbWF5IGJlIGRlbGV0ZWQgZnJvbSB0aGUgc3RhY2sgYnkgc3RlcCA5LjUpXG4gICAgICAgIG5leHRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuZ2V0Q29tbW9uQW5jZXN0b3IoZWxlbWVudCk7XG5cbiAgICAgICAgY29uc3QgZWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb3VudGVyT3ZlcmZsb3cgPSBlbGVtZW50RW50cnkgJiYgaSA+PSBBQV9JTk5FUl9MT09QX0lURVI7XG4gICAgICAgIGNvbnN0IHNob3VsZFJlbW92ZUZyb21PcGVuRWxlbWVudHMgPSAhZWxlbWVudEVudHJ5IHx8IGNvdW50ZXJPdmVyZmxvdztcblxuICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlRnJvbU9wZW5FbGVtZW50cykge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXJPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGVsZW1lbnRFbnRyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBhYVJlY3JlYXRlRWxlbWVudEZyb21FbnRyeShwLCBlbGVtZW50RW50cnkpO1xuXG4gICAgICAgICAgICBpZiAobGFzdEVsZW1lbnQgPT09IGZ1cnRoZXN0QmxvY2spIHtcbiAgICAgICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5ib29rbWFyayA9IGVsZW1lbnRFbnRyeTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcC50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGxhc3RFbGVtZW50KTtcbiAgICAgICAgICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCwgbGFzdEVsZW1lbnQpO1xuICAgICAgICAgICAgbGFzdEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RFbGVtZW50O1xufVxuXG4vL1N0ZXAgMTMuNyBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYVJlY3JlYXRlRWxlbWVudEZyb21FbnRyeShwLCBlbGVtZW50RW50cnkpIHtcbiAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnRFbnRyeS5lbGVtZW50KTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gcC50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KGVsZW1lbnRFbnRyeS50b2tlbi50YWdOYW1lLCBucywgZWxlbWVudEVudHJ5LnRva2VuLmF0dHJzKTtcblxuICAgIHAub3BlbkVsZW1lbnRzLnJlcGxhY2UoZWxlbWVudEVudHJ5LmVsZW1lbnQsIG5ld0VsZW1lbnQpO1xuICAgIGVsZW1lbnRFbnRyeS5lbGVtZW50ID0gbmV3RWxlbWVudDtcblxuICAgIHJldHVybiBuZXdFbGVtZW50O1xufVxuXG4vL1N0ZXAgMTQgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFJbnNlcnRMYXN0Tm9kZUluQ29tbW9uQW5jZXN0b3IocCwgY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KSB7XG4gICAgaWYgKHAuX2lzRWxlbWVudENhdXNlc0Zvc3RlclBhcmVudGluZyhjb21tb25BbmNlc3RvcikpIHtcbiAgICAgICAgcC5fZm9zdGVyUGFyZW50RWxlbWVudChsYXN0RWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdG4gPSBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoY29tbW9uQW5jZXN0b3IpO1xuICAgICAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGNvbW1vbkFuY2VzdG9yKTtcblxuICAgICAgICBpZiAodG4gPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gcC50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQoY29tbW9uQW5jZXN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChjb21tb25BbmNlc3RvciwgbGFzdEVsZW1lbnQpO1xuICAgIH1cbn1cblxuLy9TdGVwcyAxNS0xOSBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgY29uc3QgbnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIGNvbnN0IHRva2VuID0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS50b2tlbjtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gcC50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIG5zLCB0b2tlbi5hdHRycyk7XG5cbiAgICBwLl9hZG9wdE5vZGVzKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xuICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCk7XG5cbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayhuZXdFbGVtZW50LCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LnRva2VuKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcblxuICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIHAub3BlbkVsZW1lbnRzLmluc2VydEFmdGVyKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xufVxuXG4vL0FsZ29yaXRobSBlbnRyeSBwb2ludFxuZnVuY3Rpb24gY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKSB7XG4gICAgbGV0IGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IEFBX09VVEVSX0xPT1BfSVRFUjsgaSsrKSB7XG4gICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBhYU9idGFpbkZvcm1hdHRpbmdFbGVtZW50RW50cnkocCwgdG9rZW4sIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuXG4gICAgICAgIGlmICghZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmdXJ0aGVzdEJsb2NrID0gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuXG4gICAgICAgIGlmICghZnVydGhlc3RCbG9jaykge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5ib29rbWFyayA9IGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG5cbiAgICAgICAgY29uc3QgbGFzdEVsZW1lbnQgPSBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21tb25BbmNlc3RvciA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG5cbiAgICAgICAgcC50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGxhc3RFbGVtZW50KTtcbiAgICAgICAgYWFJbnNlcnRMYXN0Tm9kZUluQ29tbW9uQW5jZXN0b3IocCwgY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KTtcbiAgICAgICAgYWFSZXBsYWNlRm9ybWF0dGluZ0VsZW1lbnQocCwgZnVydGhlc3RCbG9jaywgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSk7XG4gICAgfVxufVxuXG4vL0dlbmVyaWMgdG9rZW4gaGFuZGxlcnNcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBpZ25vcmVUb2tlbigpIHtcbiAgICAvL05PVEU6IGRvIG5vdGhpbmcgPSlcbn1cblxuZnVuY3Rpb24gbWlzcGxhY2VkRG9jdHlwZShwKSB7XG4gICAgcC5fZXJyKEVSUi5taXNwbGFjZWREb2N0eXBlKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ29tbWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5jdXJyZW50VG1wbENvbnRlbnQgfHwgcC5vcGVuRWxlbWVudHMuY3VycmVudCk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb1Jvb3RIdG1sRWxlbWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5pdGVtc1swXSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb0RvY3VtZW50KHAsIHRva2VuKSB7XG4gICAgcC5fYXBwZW5kQ29tbWVudE5vZGUodG9rZW4sIHAuZG9jdW1lbnQpO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRDaGFyYWN0ZXJzKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5cbmZ1bmN0aW9uIHN0b3BQYXJzaW5nKHApIHtcbiAgICBwLnN0b3BwZWQgPSB0cnVlO1xufVxuXG4vLyBUaGUgXCJpbml0aWFsXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBkb2N0eXBlSW5Jbml0aWFsTW9kZShwLCB0b2tlbikge1xuICAgIHAuX3NldERvY3VtZW50VHlwZSh0b2tlbik7XG5cbiAgICBjb25zdCBtb2RlID0gdG9rZW4uZm9yY2VRdWlya3MgPyBIVE1MLkRPQ1VNRU5UX01PREUuUVVJUktTIDogZG9jdHlwZS5nZXREb2N1bWVudE1vZGUodG9rZW4pO1xuXG4gICAgaWYgKCFkb2N0eXBlLmlzQ29uZm9ybWluZyh0b2tlbikpIHtcbiAgICAgICAgcC5fZXJyKEVSUi5ub25Db25mb3JtaW5nRG9jdHlwZSk7XG4gICAgfVxuXG4gICAgcC50cmVlQWRhcHRlci5zZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCwgbW9kZSk7XG5cbiAgICBwLmluc2VydGlvbk1vZGUgPSBCRUZPUkVfSFRNTF9NT0RFO1xufVxuXG5mdW5jdGlvbiB0b2tlbkluSW5pdGlhbE1vZGUocCwgdG9rZW4pIHtcbiAgICBwLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlLCB7IGJlZm9yZVRva2VuOiB0cnVlIH0pO1xuICAgIHAudHJlZUFkYXB0ZXIuc2V0RG9jdW1lbnRNb2RlKHAuZG9jdW1lbnQsIEhUTUwuRE9DVU1FTlRfTU9ERS5RVUlSS1MpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IVE1MX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiYmVmb3JlIGh0bWxcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwpIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IRUFEX01PREU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0JlZm9yZUh0bWwocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCB8fCB0biA9PT0gJC5IRUFEIHx8IHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IRUFEX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiYmVmb3JlIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkhFQUQpIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaGVhZEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9IRUFEX01PREU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0JlZm9yZUhlYWQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSEVBRCB8fCB0biA9PT0gJC5CT0RZIHx8IHRuID09PSAkLkhUTUwgfHwgdG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9lcnIoRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuSEVBRCk7XG4gICAgcC5oZWFkRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQkFTRSB8fCB0biA9PT0gJC5CQVNFRk9OVCB8fCB0biA9PT0gJC5CR1NPVU5EIHx8IHRuID09PSAkLkxJTksgfHwgdG4gPT09ICQuTUVUQSkge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVElUTEUpIHtcbiAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkNEQVRBKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PU0NSSVBUKSB7XG4gICAgICAgIGlmIChwLm9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkFXVEVYVCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTk9fU0NSSVBUX01PREU7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PRlJBTUVTIHx8IHRuID09PSAkLlNUWUxFKSB7XG4gICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlJBV1RFWFQpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU0NSSVBUKSB7XG4gICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlNDUklQVF9EQVRBKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHAuX2luc2VydFRlbXBsYXRlKHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9URU1QTEFURV9NT0RFO1xuICAgICAgICBwLl9wdXNoVG1wbEluc2VydGlvbk1vZGUoSU5fVEVNUExBVEVfTU9ERSk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5IRUFEKSB7XG4gICAgICAgIHAuX2VycihFUlIubWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5JbkhlYWQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhFQUQpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0hFQURfTU9ERTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuQlIgfHwgdG4gPT09ICQuSFRNTCkge1xuICAgICAgICB0b2tlbkluSGVhZChwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMCkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1Rob3JvdWdobHkoKTtcblxuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgcC5fZXJyKEVSUi5jbG9zaW5nT2ZFbGVtZW50V2l0aE9wZW5DaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEVNUExBVEUpO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgIHAuX3BvcFRtcGxJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHAuX2VycihFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcC5fZXJyKEVSUi5lbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b2tlbkluSGVhZChwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0hFQURfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG4vLyBUaGUgXCJpbiBoZWFkIG5vIHNjcmlwdFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0biA9PT0gJC5CQVNFRk9OVCB8fFxuICAgICAgICB0biA9PT0gJC5CR1NPVU5EIHx8XG4gICAgICAgIHRuID09PSAkLkhFQUQgfHxcbiAgICAgICAgdG4gPT09ICQuTElOSyB8fFxuICAgICAgICB0biA9PT0gJC5NRVRBIHx8XG4gICAgICAgIHRuID09PSAkLk5PRlJBTUVTIHx8XG4gICAgICAgIHRuID09PSAkLlNUWUxFXG4gICAgKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PU0NSSVBUKSB7XG4gICAgICAgIHAuX2VycihFUlIubmVzdGVkTm9zY3JpcHRJbkhlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuTk9TQ1JJUFQpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTU9ERTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJSKSB7XG4gICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuX2VycihFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5JbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIGNvbnN0IGVyckNvZGUgPVxuICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuRU9GX1RPS0VOID8gRVJSLm9wZW5FbGVtZW50c0xlZnRBZnRlckVvZiA6IEVSUi5kaXNhbGxvd2VkQ29udGVudEluTm9zY3JpcHRJbkhlYWQ7XG5cbiAgICBwLl9lcnIoZXJyQ29kZSk7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImFmdGVyIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQk9EWSkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZSQU1FU0VUKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9GUkFNRVNFVF9NT0RFO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRuID09PSAkLkJBU0UgfHxcbiAgICAgICAgdG4gPT09ICQuQkFTRUZPTlQgfHxcbiAgICAgICAgdG4gPT09ICQuQkdTT1VORCB8fFxuICAgICAgICB0biA9PT0gJC5MSU5LIHx8XG4gICAgICAgIHRuID09PSAkLk1FVEEgfHxcbiAgICAgICAgdG4gPT09ICQuTk9GUkFNRVMgfHxcbiAgICAgICAgdG4gPT09ICQuU0NSSVBUIHx8XG4gICAgICAgIHRuID09PSAkLlNUWUxFIHx8XG4gICAgICAgIHRuID09PSAkLlRFTVBMQVRFIHx8XG4gICAgICAgIHRuID09PSAkLlRJVExFXG4gICAgKSB7XG4gICAgICAgIHAuX2VycihFUlIuYWJhbmRvbmVkSGVhZEVsZW1lbnRDaGlsZCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnB1c2gocC5oZWFkRWxlbWVudCk7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKHAuaGVhZEVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSEVBRCkge1xuICAgICAgICBwLl9lcnIoRVJSLm1pc3BsYWNlZFN0YXJ0VGFnRm9ySGVhZEVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJIZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0FmdGVySGVhZChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5CT0RZIHx8IHRuID09PSAkLkhUTUwgfHwgdG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9lcnIoRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5CT0RZKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiaW4gYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGNoYXJhY3RlckluQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGh0bWxTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC50cmVlQWRhcHRlci5hZG9wdEF0dHJpYnV0ZXMocC5vcGVuRWxlbWVudHMuaXRlbXNbMF0sIHRva2VuLmF0dHJzKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJvZHlTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMudHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKTtcblxuICAgIGlmIChib2R5RWxlbWVudCAmJiBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYWRvcHRBdHRyaWJ1dGVzKGJvZHlFbGVtZW50LCB0b2tlbi5hdHRycyk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBmcmFtZXNldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy50cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpO1xuXG4gICAgaWYgKHAuZnJhbWVzZXRPayAmJiBib2R5RWxlbWVudCkge1xuICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUoYm9keUVsZW1lbnQpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BBbGxVcFRvSHRtbEVsZW1lbnQoKTtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0ZSQU1FU0VUX01PREU7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gbnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIGNvbnN0IHRuID0gcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDYpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbmZ1bmN0aW9uIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgLy9OT1RFOiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG9rZW4sIHRoZW4gaWdub3JlIHRoYXQgdG9rZW4gYW5kIG1vdmVcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiBwcmUgYmxvY2tzIGFyZSBpZ25vcmVkIGFzIGFuIGF1dGhvcmluZyBjb252ZW5pZW5jZS4pXG4gICAgcC5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBmb3JtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCBpblRlbXBsYXRlID0gcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMDtcblxuICAgIGlmICghcC5mb3JtRWxlbWVudCB8fCBpblRlbXBsYXRlKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuXG4gICAgICAgIGlmICghaW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcC5mb3JtRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGZvciAobGV0IGkgPSBwLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICBjb25zdCBlbGVtZW50VG4gPSBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG4gICAgICAgIGxldCBjbG9zZVRuID0gbnVsbDtcblxuICAgICAgICBpZiAodG4gPT09ICQuTEkgJiYgZWxlbWVudFRuID09PSAkLkxJKSB7XG4gICAgICAgICAgICBjbG9zZVRuID0gJC5MSTtcbiAgICAgICAgfSBlbHNlIGlmICgodG4gPT09ICQuREQgfHwgdG4gPT09ICQuRFQpICYmIChlbGVtZW50VG4gPT09ICQuREQgfHwgZWxlbWVudFRuID09PSAkLkRUKSkge1xuICAgICAgICAgICAgY2xvc2VUbiA9IGVsZW1lbnRUbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zZVRuKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihjbG9zZVRuKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChjbG9zZVRuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVsZW1lbnRUbiAhPT0gJC5BRERSRVNTICYmIGVsZW1lbnRUbiAhPT0gJC5ESVYgJiYgZWxlbWVudFRuICE9PSAkLlAgJiYgcC5faXNTcGVjaWFsRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gcGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlBMQUlOVEVYVDtcbn1cblxuZnVuY3Rpb24gYnV0dG9uU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJVVFRPTikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5CVVRUT04pO1xuICAgIH1cblxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnRFbnRyeSA9IHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZSgkLkEpO1xuXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnRFbnRyeSkge1xuICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoYWN0aXZlRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShhY3RpdmVFbGVtZW50RW50cnkpO1xuICAgIH1cblxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnB1c2hFbGVtZW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gbm9iclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcblxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuTk9CUikpIHtcbiAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5wdXNoRWxlbWVudChwLm9wZW5FbGVtZW50cy5jdXJyZW50LCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGFwcGxldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdGFibGVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChcbiAgICAgICAgcC50cmVlQWRhcHRlci5nZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCkgIT09IEhUTUwuRE9DVU1FTlRfTU9ERS5RVUlSS1MgJiZcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApXG4gICAgKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xufVxuXG5mdW5jdGlvbiBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaW5wdXRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG5cbiAgICBjb25zdCBpbnB1dFR5cGUgPSBUb2tlbml6ZXIuZ2V0VG9rZW5BdHRyKHRva2VuLCBBVFRSUy5UWVBFKTtcblxuICAgIGlmICghaW5wdXRUeXBlIHx8IGlucHV0VHlwZS50b0xvd2VyQ2FzZSgpICE9PSBISURERU5fSU5QVVRfVFlQRSkge1xuICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIHBhcmFtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGhyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaW1hZ2VTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHRva2VuLnRhZ05hbWUgPSAkLklNRztcbiAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiB0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgLy9OT1RFOiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG9rZW4sIHRoZW4gaWdub3JlIHRoYXQgdG9rZW4gYW5kIG1vdmVcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiB0ZXh0YXJlYSBlbGVtZW50cyBhcmUgaWdub3JlZCBhcyBhbiBhdXRob3JpbmcgY29udmVuaWVuY2UuKVxuICAgIHAuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICBwLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlJDREFUQTtcbiAgICBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHAuaW5zZXJ0aW9uTW9kZTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBURVhUX01PREU7XG59XG5cbmZ1bmN0aW9uIHhtcFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXIuTU9ERS5SQVdURVhUKTtcbn1cblxuZnVuY3Rpb24gaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXIuTU9ERS5SQVdURVhUKTtcbn1cblxuLy9OT1RFOiBoZXJlIHdlIGFzc3VtZSB0aGF0IHdlIGFsd2F5cyBhY3QgYXMgYW4gdXNlciBhZ2VudCB3aXRoIGVuYWJsZWQgcGx1Z2lucywgc28gd2UgcGFyc2Vcbi8vPG5vZW1iZWQ+IGFzIGEgcmF3dGV4dC5cbmZ1bmN0aW9uIG5vZW1iZWRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlJBV1RFWFQpO1xufVxuXG5mdW5jdGlvbiBzZWxlY3RTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG5cbiAgICBpZiAoXG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fVEFCTEVfTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX0NBUFRJT05fTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX1RBQkxFX0JPRFlfTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX1JPV19NT0RFIHx8XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fQ0VMTF9NT0RFXG4gICAgKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9JTl9UQUJMRV9NT0RFO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9NT0RFO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gb3B0Z3JvdXBTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuUlVCWSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5SVUJZKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbigkLlJUQyk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbmZ1bmN0aW9uIG1lbnVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBtYXRoU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuXG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG5cbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuTUFUSE1MKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5NQVRITUwpO1xuICAgIH1cblxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gc3ZnU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuXG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5TVkdBdHRycyh0b2tlbik7XG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG5cbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuU1ZHKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5TVkcpO1xuICAgIH1cblxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuLy9PUFRJTUlaQVRJT046IEludGVnZXIgY29tcGFyaXNvbnMgYXJlIGxvdy1jb3N0LCBzbyB3ZSBjYW4gdXNlIHZlcnkgZmFzdCB0YWcgbmFtZSBsZW5ndGggZmlsdGVycyBoZXJlLlxuLy9JdCdzIGZhc3RlciB0aGFuIHVzaW5nIGRpY3Rpb25hcnkuXG5mdW5jdGlvbiBzdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5JIHx8IHRuID09PSAkLlMgfHwgdG4gPT09ICQuQiB8fCB0biA9PT0gJC5VKSB7XG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUCkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkEpIHtcbiAgICAgICAgICAgICAgICBhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuREwgfHwgdG4gPT09ICQuT0wgfHwgdG4gPT09ICQuVUwpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INikge1xuICAgICAgICAgICAgICAgIG51bWJlcmVkSGVhZGVyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5MSSB8fCB0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCkge1xuICAgICAgICAgICAgICAgIGxpc3RJdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5FTSB8fCB0biA9PT0gJC5UVCkge1xuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJSKSB7XG4gICAgICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSFIpIHtcbiAgICAgICAgICAgICAgICBoclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUkIpIHtcbiAgICAgICAgICAgICAgICByYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUlQgfHwgdG4gPT09ICQuUlApIHtcbiAgICAgICAgICAgICAgICBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gIT09ICQuVEggJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVFIpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuRElWIHx8IHRuID09PSAkLkRJUiB8fCB0biA9PT0gJC5OQVYpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5QUkUpIHtcbiAgICAgICAgICAgICAgICBwcmVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJJRykge1xuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLklNRyB8fCB0biA9PT0gJC5XQlIpIHtcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5YTVApIHtcbiAgICAgICAgICAgICAgICB4bXBTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNWRykge1xuICAgICAgICAgICAgICAgIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUlRDKSB7XG4gICAgICAgICAgICAgICAgcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkNPTCkge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgaHRtbFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQkFTRSB8fCB0biA9PT0gJC5MSU5LIHx8IHRuID09PSAkLk1FVEEpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJPRFkpIHtcbiAgICAgICAgICAgICAgICBib2R5U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NQUlOIHx8IHRuID09PSAkLk1FTlUpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5GT1JNKSB7XG4gICAgICAgICAgICAgICAgZm9ybVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQ09ERSB8fCB0biA9PT0gJC5GT05UKSB7XG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTk9CUikge1xuICAgICAgICAgICAgICAgIG5vYnJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkFSRUEpIHtcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NQVRIKSB7XG4gICAgICAgICAgICAgICAgbWF0aFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTUVOVSkge1xuICAgICAgICAgICAgICAgIG1lbnVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkhFQUQpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuU1RZTEUgfHwgdG4gPT09ICQuVElUTEUpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkFTSURFKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU01BTEwpIHtcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICAgICAgICAgIHRhYmxlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5FTUJFRCkge1xuICAgICAgICAgICAgICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLklOUFVUKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlBBUkFNIHx8IHRuID09PSAkLlRSQUNLKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLklNQUdFKSB7XG4gICAgICAgICAgICAgICAgaW1hZ2VTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkZSQU1FICYmIHRuICE9PSAkLlRCT0RZICYmIHRuICE9PSAkLlRGT09UICYmIHRuICE9PSAkLlRIRUFEKSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlNDUklQVCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuQ0VOVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRklHVVJFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRk9PVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEVBREVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEdST1VQIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRElBTE9HXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5CVVRUT04pIHtcbiAgICAgICAgICAgICAgICBidXR0b25TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNUUklLRSB8fCB0biA9PT0gJC5TVFJPTkcpIHtcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5BUFBMRVQgfHwgdG4gPT09ICQuT0JKRUNUKSB7XG4gICAgICAgICAgICAgICAgYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5LRVlHRU4pIHtcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TT1VSQ0UpIHtcbiAgICAgICAgICAgICAgICBwYXJhbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSUZSQU1FKSB7XG4gICAgICAgICAgICAgICAgaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk9QVElPTikge1xuICAgICAgICAgICAgICAgIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkdTT1VORCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuREVUQUlMUyB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkFERFJFU1MgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5BUlRJQ0xFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuU0VDVElPTiB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlNVTU1BUllcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkxJU1RJTkcpIHtcbiAgICAgICAgICAgICAgICBwcmVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk1BUlFVRUUpIHtcbiAgICAgICAgICAgICAgICBhcHBsZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PRU1CRUQpIHtcbiAgICAgICAgICAgICAgICBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biAhPT0gJC5DQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkJBU0VGT05UKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5GUkFNRVNFVCkge1xuICAgICAgICAgICAgICAgIGZyYW1lc2V0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5GSUVMRFNFVCkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFWFRBUkVBKSB7XG4gICAgICAgICAgICAgICAgdGV4dGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT1NDUklQVCkge1xuICAgICAgICAgICAgICAgIGlmIChwLm9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biAhPT0gJC5DT0xHUk9VUCkge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5QTEFJTlRFWFQpIHtcbiAgICAgICAgICAgICAgICBwbGFpbnRleHRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkxPQ0tRVU9URSB8fCB0biA9PT0gJC5GSUdDQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBib2R5RW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0JPRFlfTU9ERTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGh0bWxFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0JPRFlfTU9ERTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZm9ybUVuZFRhZ0luQm9keShwKSB7XG4gICAgY29uc3QgaW5UZW1wbGF0ZSA9IHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDA7XG4gICAgY29uc3QgZm9ybUVsZW1lbnQgPSBwLmZvcm1FbGVtZW50O1xuXG4gICAgaWYgKCFpblRlbXBsYXRlKSB7XG4gICAgICAgIHAuZm9ybUVsZW1lbnQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICgoZm9ybUVsZW1lbnQgfHwgaW5UZW1wbGF0ZSkgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkZPUk0pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcblxuICAgICAgICBpZiAoaW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuRk9STSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoZm9ybUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBwRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAoIXAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLlApO1xuICAgIH1cblxuICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbn1cblxuZnVuY3Rpb24gbGlFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkxpc3RJdGVtU2NvcGUoJC5MSSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5MSSk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkxJKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRkRW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG4pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKHRuKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG51bWJlcmVkSGVhZGVyRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYnJFbmRUYWdJbkJvZHkocCkge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5CUik7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuXG4gICAgICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IHRuKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbih0bik7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbEVsZW1lbnRQb3BwZWQoZWxlbWVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy9PUFRJTUlaQVRJT046IEludGVnZXIgY29tcGFyaXNvbnMgYXJlIGxvdy1jb3N0LCBzbyB3ZSBjYW4gdXNlIHZlcnkgZmFzdCB0YWcgbmFtZSBsZW5ndGggZmlsdGVycyBoZXJlLlxuLy9JdCdzIGZhc3RlciB0aGFuIHVzaW5nIGRpY3Rpb25hcnkuXG5mdW5jdGlvbiBlbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBzd2l0Y2ggKHRuLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQSB8fCB0biA9PT0gJC5CIHx8IHRuID09PSAkLkkgfHwgdG4gPT09ICQuUyB8fCB0biA9PT0gJC5VKSB7XG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUCkge1xuICAgICAgICAgICAgICAgIHBFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkRMIHx8IHRuID09PSAkLlVMIHx8IHRuID09PSAkLk9MKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkxJKSB7XG4gICAgICAgICAgICAgICAgbGlFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCkge1xuICAgICAgICAgICAgICAgIGRkRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDYpIHtcbiAgICAgICAgICAgICAgICBudW1iZXJlZEhlYWRlckVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJSKSB7XG4gICAgICAgICAgICAgICAgYnJFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5FTSB8fCB0biA9PT0gJC5UVCkge1xuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQklHKSB7XG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuRElSIHx8IHRuID09PSAkLkRJViB8fCB0biA9PT0gJC5OQVYgfHwgdG4gPT09ICQuUFJFKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQk9EWSkge1xuICAgICAgICAgICAgICAgIGJvZHlFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgaHRtbEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZPUk0pIHtcbiAgICAgICAgICAgICAgICBmb3JtRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQ09ERSB8fCB0biA9PT0gJC5GT05UIHx8IHRuID09PSAkLk5PQlIpIHtcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NQUlOIHx8IHRuID09PSAkLk1FTlUpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5BU0lERSkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TTUFMTCkge1xuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuQ0VOVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRklHVVJFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRk9PVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEVBREVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEdST1VQIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRElBTE9HXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQVBQTEVUIHx8IHRuID09PSAkLk9CSkVDVCkge1xuICAgICAgICAgICAgICAgIGFwcGxldEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNUUklLRSB8fCB0biA9PT0gJC5TVFJPTkcpIHtcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkFERFJFU1MgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5BUlRJQ0xFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuREVUQUlMUyB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlNFQ1RJT04gfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5TVU1NQVJZIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuTElTVElOR1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk1BUlFVRUUpIHtcbiAgICAgICAgICAgICAgICBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkZJRUxEU0VUKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkxPQ0tRVU9URSB8fCB0biA9PT0gJC5GSUdDQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlb2ZJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrVG9wID4gLTEpIHtcbiAgICAgICAgZW9mSW5UZW1wbGF0ZShwLCB0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcC5zdG9wcGVkID0gdHJ1ZTtcbiAgICB9XG59XG5cbi8vIFRoZSBcInRleHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGVuZFRhZ0luVGV4dChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLlNDUklQVCkge1xuICAgICAgICBwLnBlbmRpbmdTY3JpcHQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgIH1cblxuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xufVxuXG5mdW5jdGlvbiBlb2ZJblRleHQocCwgdG9rZW4pIHtcbiAgICBwLl9lcnIoRVJSLmVvZkluRWxlbWVudFRoYXRDYW5Db250YWluT25seVRleHQpO1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIHRhYmxlXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBjaGFyYWN0ZXJJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgY3VyVG4gPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZTtcblxuICAgIGlmIChjdXJUbiA9PT0gJC5UQUJMRSB8fCBjdXJUbiA9PT0gJC5UQk9EWSB8fCBjdXJUbiA9PT0gJC5URk9PVCB8fCBjdXJUbiA9PT0gJC5USEVBRCB8fCBjdXJUbiA9PT0gJC5UUikge1xuICAgICAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMgPSBbXTtcbiAgICAgICAgcC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gZmFsc2U7XG4gICAgICAgIHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gcC5pbnNlcnRpb25Nb2RlO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9URVhUX01PREU7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNhcHRpb25TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0NBUFRJT05fTU9ERTtcbn1cblxuZnVuY3Rpb24gY29sZ3JvdXBTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0NPTFVNTl9HUk9VUF9NT0RFO1xufVxuXG5mdW5jdGlvbiBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuQ09MR1JPVVApO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0NPTFVNTl9HUk9VUF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbmZ1bmN0aW9uIHRib2R5U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XG59XG5cbmZ1bmN0aW9uIHRkU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLlRCT0RZKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gdGFibGVTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEFCTEUpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRBQkxFKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IGlucHV0VHlwZSA9IFRva2VuaXplci5nZXRUb2tlbkF0dHIodG9rZW4sIEFUVFJTLlRZUEUpO1xuXG4gICAgaWYgKGlucHV0VHlwZSAmJiBpbnB1dFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gSElEREVOX0lOUFVUX1RZUEUpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG5cbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGZvcm1TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBpZiAoIXAuZm9ybUVsZW1lbnQgJiYgcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID09PSAwKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmZvcm1FbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBzd2l0Y2ggKHRuLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEggfHwgdG4gPT09ICQuVFIpIHtcbiAgICAgICAgICAgICAgICB0ZFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DT0wpIHtcbiAgICAgICAgICAgICAgICBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuRk9STSkge1xuICAgICAgICAgICAgICAgIGZvcm1TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNUWUxFKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xuICAgICAgICAgICAgICAgIHRib2R5U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSU5QVVQpIHtcbiAgICAgICAgICAgICAgICBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5TQ1JJUFQpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgY2FwdGlvblN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DT0xHUk9VUCkge1xuICAgICAgICAgICAgICAgIGNvbGdyb3VwU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEFCTEUpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5UQUJMRSk7XG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0biAhPT0gJC5CT0RZICYmXG4gICAgICAgIHRuICE9PSAkLkNBUFRJT04gJiZcbiAgICAgICAgdG4gIT09ICQuQ09MICYmXG4gICAgICAgIHRuICE9PSAkLkNPTEdST1VQICYmXG4gICAgICAgIHRuICE9PSAkLkhUTUwgJiZcbiAgICAgICAgdG4gIT09ICQuVEJPRFkgJiZcbiAgICAgICAgdG4gIT09ICQuVEQgJiZcbiAgICAgICAgdG4gIT09ICQuVEZPT1QgJiZcbiAgICAgICAgdG4gIT09ICQuVEggJiZcbiAgICAgICAgdG4gIT09ICQuVEhFQUQgJiZcbiAgICAgICAgdG4gIT09ICQuVFJcbiAgICApIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGUgPSBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQ7XG5cbiAgICBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSB0cnVlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUodG9rZW4pO1xuICAgIHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGU7XG59XG5cbi8vIFRoZSBcImluIHRhYmxlIHRleHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHdoaXRlc3BhY2VDaGFyYWN0ZXJJblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5wdXNoKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gY2hhcmFjdGVySW5UYWJsZVRleHQocCwgdG9rZW4pIHtcbiAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgcC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gdG9rZW5JblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIGxldCBpID0gMDtcblxuICAgIGlmIChwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgZm9yICg7IGkgPCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnNbaV0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICg7IGkgPCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHAuX2luc2VydENoYXJhY3RlcnMocC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIGNhcHRpb25cIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5DYXB0aW9uKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLkNPTCB8fFxuICAgICAgICB0biA9PT0gJC5DT0xHUk9VUCB8fFxuICAgICAgICB0biA9PT0gJC5UQk9EWSB8fFxuICAgICAgICB0biA9PT0gJC5URCB8fFxuICAgICAgICB0biA9PT0gJC5URk9PVCB8fFxuICAgICAgICB0biA9PT0gJC5USCB8fFxuICAgICAgICB0biA9PT0gJC5USEVBRCB8fFxuICAgICAgICB0biA9PT0gJC5UUlxuICAgICkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuQ0FQVElPTikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkNBUFRJT04pO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5DYXB0aW9uKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkNBUFRJT04gfHwgdG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLkNBUFRJT04pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5DQVBUSU9OKTtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgdG4gIT09ICQuQk9EWSAmJlxuICAgICAgICB0biAhPT0gJC5DT0wgJiZcbiAgICAgICAgdG4gIT09ICQuQ09MR1JPVVAgJiZcbiAgICAgICAgdG4gIT09ICQuSFRNTCAmJlxuICAgICAgICB0biAhPT0gJC5UQk9EWSAmJlxuICAgICAgICB0biAhPT0gJC5URCAmJlxuICAgICAgICB0biAhPT0gJC5URk9PVCAmJlxuICAgICAgICB0biAhPT0gJC5USCAmJlxuICAgICAgICB0biAhPT0gJC5USEVBRCAmJlxuICAgICAgICB0biAhPT0gJC5UUlxuICAgICkge1xuICAgICAgICBlbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gY29sdW1uIGdyb3VwXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luQ29sdW1uR3JvdXAocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5DT0wpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5DT0xHUk9VUCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuQ09MR1JPVVApIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkNPTCkge1xuICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLkNPTEdST1VQKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gdGFibGUgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblRhYmxlQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5UUikge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1JPV19NT0RFO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEggfHwgdG4gPT09ICQuVEQpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuVFIpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9ST1dfTU9ERTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLkNPTCB8fFxuICAgICAgICB0biA9PT0gJC5DT0xHUk9VUCB8fFxuICAgICAgICB0biA9PT0gJC5UQk9EWSB8fFxuICAgICAgICB0biA9PT0gJC5URk9PVCB8fFxuICAgICAgICB0biA9PT0gJC5USEVBRFxuICAgICkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodG4gIT09ICQuQk9EWSAmJiB0biAhPT0gJC5DQVBUSU9OICYmIHRuICE9PSAkLkNPTCAmJiB0biAhPT0gJC5DT0xHUk9VUCkgfHxcbiAgICAgICAgKHRuICE9PSAkLkhUTUwgJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVEggJiYgdG4gIT09ICQuVFIpXG4gICAgKSB7XG4gICAgICAgIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gcm93XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luUm93KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLlRIIHx8IHRuID09PSAkLlREKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9DRUxMX01PREU7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuQ09MIHx8XG4gICAgICAgIHRuID09PSAkLkNPTEdST1VQIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5Sb3cocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuVFIpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRSKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfQk9EWV9NT0RFO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVFIpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSB8fCBwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodG4gIT09ICQuQk9EWSAmJiB0biAhPT0gJC5DQVBUSU9OICYmIHRuICE9PSAkLkNPTCAmJiB0biAhPT0gJC5DT0xHUk9VUCkgfHxcbiAgICAgICAgKHRuICE9PSAkLkhUTUwgJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVEgpXG4gICAgKSB7XG4gICAgICAgIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gY2VsbFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkNlbGwocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAoXG4gICAgICAgIHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuQ09MIHx8XG4gICAgICAgIHRuID09PSAkLkNPTEdST1VQIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5URCkgfHwgcC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEgpKSB7XG4gICAgICAgICAgICBwLl9jbG9zZVRhYmxlQ2VsbCgpO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luQ2VsbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9ST1dfTU9ERTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEFCTEUgfHwgdG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVFIpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgIHAuX2Nsb3NlVGFibGVDZWxsKCk7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biAhPT0gJC5CT0RZICYmIHRuICE9PSAkLkNBUFRJT04gJiYgdG4gIT09ICQuQ09MICYmIHRuICE9PSAkLkNPTEdST1VQICYmIHRuICE9PSAkLkhUTUwpIHtcbiAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbi8vIFRoZSBcImluIHNlbGVjdFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblNlbGVjdChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk9QVElPTikge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUSU9OKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVElPTikge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5JTlBVVCB8fCB0biA9PT0gJC5LRVlHRU4gfHwgdG4gPT09ICQuVEVYVEFSRUEgfHwgdG4gPT09ICQuU0VMRUNUKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNlbGVjdFNjb3BlKCQuU0VMRUNUKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuXG4gICAgICAgICAgICBpZiAodG4gIT09ICQuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU0NSSVBUIHx8IHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luU2VsZWN0KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLk9QVEdST1VQKSB7XG4gICAgICAgIGNvbnN0IHByZXZPcGVuRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW3Aub3BlbkVsZW1lbnRzLnN0YWNrVG9wIC0gMV07XG4gICAgICAgIGNvbnN0IHByZXZPcGVuRWxlbWVudFRuID0gcHJldk9wZW5FbGVtZW50ICYmIHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShwcmV2T3BlbkVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04gJiYgcHJldk9wZW5FbGVtZW50VG4gPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVEdST1VQKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuT1BUSU9OKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5TRUxFQ1QgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5TZWxlY3RTY29wZSgkLlNFTEVDVCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICBlbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8xMi4yLjUuNC4xNyBUaGUgXCJpbiBzZWxlY3QgaW4gdGFibGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5TZWxlY3RJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLlRBQkxFIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRIXG4gICAgKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XG4gICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5TZWxlY3QocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5TZWxlY3RJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLlRBQkxFIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRIXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZW5kVGFnSW5TZWxlY3QocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gdGVtcGxhdGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmIChcbiAgICAgICAgdG4gPT09ICQuQkFTRSB8fFxuICAgICAgICB0biA9PT0gJC5CQVNFRk9OVCB8fFxuICAgICAgICB0biA9PT0gJC5CR1NPVU5EIHx8XG4gICAgICAgIHRuID09PSAkLkxJTksgfHxcbiAgICAgICAgdG4gPT09ICQuTUVUQSB8fFxuICAgICAgICB0biA9PT0gJC5OT0ZSQU1FUyB8fFxuICAgICAgICB0biA9PT0gJC5TQ1JJUFQgfHxcbiAgICAgICAgdG4gPT09ICQuU1RZTEUgfHxcbiAgICAgICAgdG4gPT09ICQuVEVNUExBVEUgfHxcbiAgICAgICAgdG4gPT09ICQuVElUTEVcbiAgICApIHtcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5ld0luc2VydGlvbk1vZGUgPSBURU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQW3RuXSB8fCBJTl9CT0RZX01PREU7XG5cbiAgICAgICAgcC5fcG9wVG1wbEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHVzaFRtcGxJbnNlcnRpb25Nb2RlKG5ld0luc2VydGlvbk1vZGUpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBuZXdJbnNlcnRpb25Nb2RlO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIGVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlb2ZJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDApIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEVNUExBVEUpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICBwLl9wb3BUbXBsSW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLnN0b3BwZWQgPSB0cnVlO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiYWZ0ZXIgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkFmdGVyQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKSB7XG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0FGVEVSX0JPRFlfTU9ERTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQk9EWV9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5GUkFNRVNFVCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZSQU1FKSB7XG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUykge1xuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuRlJBTUVTRVQgJiYgIXAub3BlbkVsZW1lbnRzLmlzUm9vdEh0bWxFbGVtZW50Q3VycmVudCgpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuXG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQgJiYgcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgIT09ICQuRlJBTUVTRVQpIHtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0ZSQU1FU0VUX01PREU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRoZSBcImFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUykge1xuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdBZnRlckZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuSFRNTCkge1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiYWZ0ZXIgYWZ0ZXIgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckFmdGVyQm9keShwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJBZnRlckJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5BZnRlckFmdGVyQm9keShwLCB0b2tlbikge1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG4vLyBUaGUgXCJhZnRlciBhZnRlciBmcmFtZXNldFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckFmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUykge1xuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG4vLyBUaGUgcnVsZXMgZm9yIHBhcnNpbmcgdG9rZW5zIGluIGZvcmVpZ24gY29udGVudFxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIG51bGxDaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgdG9rZW4uY2hhcnMgPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gY2hhcmFjdGVySW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBzdGFydFRhZ0luRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICBpZiAoZm9yZWlnbkNvbnRlbnQuY2F1c2VzRXhpdCh0b2tlbikgJiYgIXAuZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpICE9PSBOUy5IVE1MICYmXG4gICAgICAgICAgICAhcC5faXNJbnRlZ3JhdGlvblBvaW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBwLl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnROcyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpO1xuXG4gICAgICAgIGlmIChjdXJyZW50TnMgPT09IE5TLk1BVEhNTCkge1xuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudE5zID09PSBOUy5TVkcpIHtcbiAgICAgICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuU1ZHVGFnTmFtZSh0b2tlbik7XG4gICAgICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuWE1MQXR0cnModG9rZW4pO1xuXG4gICAgICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZykge1xuICAgICAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgY3VycmVudE5zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGN1cnJlbnROcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcblxuICAgICAgICBpZiAocC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCkgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkudG9Mb3dlckNhc2UoKSA9PT0gdG9rZW4udGFnTmFtZSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxFbGVtZW50UG9wcGVkKGVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBTY2hlbWFcblxudmFyIHByb3RvID0gU2NoZW1hLnByb3RvdHlwZVxuXG5wcm90by5zcGFjZSA9IG51bGxcbnByb3RvLm5vcm1hbCA9IHt9XG5wcm90by5wcm9wZXJ0eSA9IHt9XG5cbmZ1bmN0aW9uIFNjaGVtYShwcm9wZXJ0eSwgbm9ybWFsLCBzcGFjZSkge1xuICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHlcbiAgdGhpcy5ub3JtYWwgPSBub3JtYWxcblxuICBpZiAoc3BhY2UpIHtcbiAgICB0aGlzLnNwYWNlID0gc3BhY2VcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuL3NjaGVtYScpXG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2VcblxuZnVuY3Rpb24gbWVyZ2UoZGVmaW5pdGlvbnMpIHtcbiAgdmFyIGxlbmd0aCA9IGRlZmluaXRpb25zLmxlbmd0aFxuICB2YXIgcHJvcGVydHkgPSBbXVxuICB2YXIgbm9ybWFsID0gW11cbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGluZm9cbiAgdmFyIHNwYWNlXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpbmZvID0gZGVmaW5pdGlvbnNbaW5kZXhdXG4gICAgcHJvcGVydHkucHVzaChpbmZvLnByb3BlcnR5KVxuICAgIG5vcm1hbC5wdXNoKGluZm8ubm9ybWFsKVxuICAgIHNwYWNlID0gaW5mby5zcGFjZVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTY2hlbWEoXG4gICAgeHRlbmQuYXBwbHkobnVsbCwgcHJvcGVydHkpLFxuICAgIHh0ZW5kLmFwcGx5KG51bGwsIG5vcm1hbCksXG4gICAgc3BhY2VcbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbm9ybWFsaXplXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gSW5mb1xuXG52YXIgcHJvdG8gPSBJbmZvLnByb3RvdHlwZVxuXG5wcm90by5zcGFjZSA9IG51bGxcbnByb3RvLmF0dHJpYnV0ZSA9IG51bGxcbnByb3RvLnByb3BlcnR5ID0gbnVsbFxucHJvdG8uYm9vbGVhbiA9IGZhbHNlXG5wcm90by5ib29sZWFuaXNoID0gZmFsc2VcbnByb3RvLm92ZXJsb2FkZWRCb29sZWFuID0gZmFsc2VcbnByb3RvLm51bWJlciA9IGZhbHNlXG5wcm90by5jb21tYVNlcGFyYXRlZCA9IGZhbHNlXG5wcm90by5zcGFjZVNlcGFyYXRlZCA9IGZhbHNlXG5wcm90by5jb21tYU9yU3BhY2VTZXBhcmF0ZWQgPSBmYWxzZVxucHJvdG8ubXVzdFVzZVByb3BlcnR5ID0gZmFsc2VcbnByb3RvLmRlZmluZWQgPSBmYWxzZVxuXG5mdW5jdGlvbiBJbmZvKHByb3BlcnR5LCBhdHRyaWJ1dGUpIHtcbiAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5XG4gIHRoaXMuYXR0cmlidXRlID0gYXR0cmlidXRlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHBvd2VycyA9IDBcblxuZXhwb3J0cy5ib29sZWFuID0gaW5jcmVtZW50KClcbmV4cG9ydHMuYm9vbGVhbmlzaCA9IGluY3JlbWVudCgpXG5leHBvcnRzLm92ZXJsb2FkZWRCb29sZWFuID0gaW5jcmVtZW50KClcbmV4cG9ydHMubnVtYmVyID0gaW5jcmVtZW50KClcbmV4cG9ydHMuc3BhY2VTZXBhcmF0ZWQgPSBpbmNyZW1lbnQoKVxuZXhwb3J0cy5jb21tYVNlcGFyYXRlZCA9IGluY3JlbWVudCgpXG5leHBvcnRzLmNvbW1hT3JTcGFjZVNlcGFyYXRlZCA9IGluY3JlbWVudCgpXG5cbmZ1bmN0aW9uIGluY3JlbWVudCgpIHtcbiAgcmV0dXJuIE1hdGgucG93KDIsICsrcG93ZXJzKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBJbmZvID0gcmVxdWlyZSgnLi9pbmZvJylcbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IERlZmluZWRJbmZvXG5cbkRlZmluZWRJbmZvLnByb3RvdHlwZSA9IG5ldyBJbmZvKClcbkRlZmluZWRJbmZvLnByb3RvdHlwZS5kZWZpbmVkID0gdHJ1ZVxuXG52YXIgY2hlY2tzID0gW1xuICAnYm9vbGVhbicsXG4gICdib29sZWFuaXNoJyxcbiAgJ292ZXJsb2FkZWRCb29sZWFuJyxcbiAgJ251bWJlcicsXG4gICdjb21tYVNlcGFyYXRlZCcsXG4gICdzcGFjZVNlcGFyYXRlZCcsXG4gICdjb21tYU9yU3BhY2VTZXBhcmF0ZWQnXG5dXG52YXIgY2hlY2tzTGVuZ3RoID0gY2hlY2tzLmxlbmd0aFxuXG5mdW5jdGlvbiBEZWZpbmVkSW5mbyhwcm9wZXJ0eSwgYXR0cmlidXRlLCBtYXNrLCBzcGFjZSkge1xuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgY2hlY2tcblxuICBtYXJrKHRoaXMsICdzcGFjZScsIHNwYWNlKVxuXG4gIEluZm8uY2FsbCh0aGlzLCBwcm9wZXJ0eSwgYXR0cmlidXRlKVxuXG4gIHdoaWxlICgrK2luZGV4IDwgY2hlY2tzTGVuZ3RoKSB7XG4gICAgY2hlY2sgPSBjaGVja3NbaW5kZXhdXG4gICAgbWFyayh0aGlzLCBjaGVjaywgKG1hc2sgJiB0eXBlc1tjaGVja10pID09PSB0eXBlc1tjaGVja10pXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFyayh2YWx1ZXMsIGtleSwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgdmFsdWVzW2tleV0gPSB2YWx1ZVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uLy4uL25vcm1hbGl6ZScpXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi9zY2hlbWEnKVxudmFyIERlZmluZWRJbmZvID0gcmVxdWlyZSgnLi9kZWZpbmVkLWluZm8nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVxuXG5mdW5jdGlvbiBjcmVhdGUoZGVmaW5pdGlvbikge1xuICB2YXIgc3BhY2UgPSBkZWZpbml0aW9uLnNwYWNlXG4gIHZhciBtdXN0VXNlUHJvcGVydHkgPSBkZWZpbml0aW9uLm11c3RVc2VQcm9wZXJ0eSB8fCBbXVxuICB2YXIgYXR0cmlidXRlcyA9IGRlZmluaXRpb24uYXR0cmlidXRlcyB8fCB7fVxuICB2YXIgcHJvcHMgPSBkZWZpbml0aW9uLnByb3BlcnRpZXNcbiAgdmFyIHRyYW5zZm9ybSA9IGRlZmluaXRpb24udHJhbnNmb3JtXG4gIHZhciBwcm9wZXJ0eSA9IHt9XG4gIHZhciBub3JtYWwgPSB7fVxuICB2YXIgcHJvcFxuICB2YXIgaW5mb1xuXG4gIGZvciAocHJvcCBpbiBwcm9wcykge1xuICAgIGluZm8gPSBuZXcgRGVmaW5lZEluZm8oXG4gICAgICBwcm9wLFxuICAgICAgdHJhbnNmb3JtKGF0dHJpYnV0ZXMsIHByb3ApLFxuICAgICAgcHJvcHNbcHJvcF0sXG4gICAgICBzcGFjZVxuICAgIClcblxuICAgIGlmIChtdXN0VXNlUHJvcGVydHkuaW5kZXhPZihwcm9wKSAhPT0gLTEpIHtcbiAgICAgIGluZm8ubXVzdFVzZVByb3BlcnR5ID0gdHJ1ZVxuICAgIH1cblxuICAgIHByb3BlcnR5W3Byb3BdID0gaW5mb1xuXG4gICAgbm9ybWFsW25vcm1hbGl6ZShwcm9wKV0gPSBwcm9wXG4gICAgbm9ybWFsW25vcm1hbGl6ZShpbmZvLmF0dHJpYnV0ZSldID0gcHJvcFxuICB9XG5cbiAgcmV0dXJuIG5ldyBTY2hlbWEocHJvcGVydHksIG5vcm1hbCwgc3BhY2UpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vdXRpbC9jcmVhdGUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAneGxpbmsnLFxuICB0cmFuc2Zvcm06IHhsaW5rVHJhbnNmb3JtLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgeExpbmtBY3R1YXRlOiBudWxsLFxuICAgIHhMaW5rQXJjUm9sZTogbnVsbCxcbiAgICB4TGlua0hyZWY6IG51bGwsXG4gICAgeExpbmtSb2xlOiBudWxsLFxuICAgIHhMaW5rU2hvdzogbnVsbCxcbiAgICB4TGlua1RpdGxlOiBudWxsLFxuICAgIHhMaW5rVHlwZTogbnVsbFxuICB9XG59KVxuXG5mdW5jdGlvbiB4bGlua1RyYW5zZm9ybShfLCBwcm9wKSB7XG4gIHJldHVybiAneGxpbms6JyArIHByb3Auc2xpY2UoNSkudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL3V0aWwvY3JlYXRlJylcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGUoe1xuICBzcGFjZTogJ3htbCcsXG4gIHRyYW5zZm9ybTogeG1sVHJhbnNmb3JtLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgeG1sTGFuZzogbnVsbCxcbiAgICB4bWxCYXNlOiBudWxsLFxuICAgIHhtbFNwYWNlOiBudWxsXG4gIH1cbn0pXG5cbmZ1bmN0aW9uIHhtbFRyYW5zZm9ybShfLCBwcm9wKSB7XG4gIHJldHVybiAneG1sOicgKyBwcm9wLnNsaWNlKDMpLnRvTG93ZXJDYXNlKClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc2VTZW5zaXRpdmVUcmFuc2Zvcm1cblxuZnVuY3Rpb24gY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybShhdHRyaWJ1dGVzLCBhdHRyaWJ1dGUpIHtcbiAgcmV0dXJuIGF0dHJpYnV0ZSBpbiBhdHRyaWJ1dGVzID8gYXR0cmlidXRlc1thdHRyaWJ1dGVdIDogYXR0cmlidXRlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNhc2VTZW5zaXRpdmVUcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2Nhc2Utc2Vuc2l0aXZlLXRyYW5zZm9ybScpXG5cbm1vZHVsZS5leHBvcnRzID0gY2FzZUluc2Vuc2l0aXZlVHJhbnNmb3JtXG5cbmZ1bmN0aW9uIGNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybShhdHRyaWJ1dGVzLCBwcm9wZXJ0eSkge1xuICByZXR1cm4gY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybShhdHRyaWJ1dGVzLCBwcm9wZXJ0eS50b0xvd2VyQ2FzZSgpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL3V0aWwvY3JlYXRlJylcbnZhciBjYXNlSW5zZW5zaXRpdmVUcmFuc2Zvcm0gPSByZXF1aXJlKCcuL3V0aWwvY2FzZS1pbnNlbnNpdGl2ZS10cmFuc2Zvcm0nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAneG1sbnMnLFxuICBhdHRyaWJ1dGVzOiB7XG4gICAgeG1sbnN4bGluazogJ3htbG5zOnhsaW5rJ1xuICB9LFxuICB0cmFuc2Zvcm06IGNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybSxcbiAgcHJvcGVydGllczoge1xuICAgIHhtbG5zOiBudWxsLFxuICAgIHhtbG5zWExpbms6IG51bGxcbiAgfVxufSlcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHlwZXMgPSByZXF1aXJlKCcuL3V0aWwvdHlwZXMnKVxudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vdXRpbC9jcmVhdGUnKVxuXG52YXIgYm9vbGVhbmlzaCA9IHR5cGVzLmJvb2xlYW5pc2hcbnZhciBudW1iZXIgPSB0eXBlcy5udW1iZXJcbnZhciBzcGFjZVNlcGFyYXRlZCA9IHR5cGVzLnNwYWNlU2VwYXJhdGVkXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlKHtcbiAgdHJhbnNmb3JtOiBhcmlhVHJhbnNmb3JtLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgYXJpYUFjdGl2ZURlc2NlbmRhbnQ6IG51bGwsXG4gICAgYXJpYUF0b21pYzogYm9vbGVhbmlzaCxcbiAgICBhcmlhQXV0b0NvbXBsZXRlOiBudWxsLFxuICAgIGFyaWFCdXN5OiBib29sZWFuaXNoLFxuICAgIGFyaWFDaGVja2VkOiBib29sZWFuaXNoLFxuICAgIGFyaWFDb2xDb3VudDogbnVtYmVyLFxuICAgIGFyaWFDb2xJbmRleDogbnVtYmVyLFxuICAgIGFyaWFDb2xTcGFuOiBudW1iZXIsXG4gICAgYXJpYUNvbnRyb2xzOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhcmlhQ3VycmVudDogbnVsbCxcbiAgICBhcmlhRGVzY3JpYmVkQnk6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFyaWFEZXRhaWxzOiBudWxsLFxuICAgIGFyaWFEaXNhYmxlZDogYm9vbGVhbmlzaCxcbiAgICBhcmlhRHJvcEVmZmVjdDogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYUVycm9yTWVzc2FnZTogbnVsbCxcbiAgICBhcmlhRXhwYW5kZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYUZsb3dUbzogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYUdyYWJiZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYUhhc1BvcHVwOiBudWxsLFxuICAgIGFyaWFIaWRkZW46IGJvb2xlYW5pc2gsXG4gICAgYXJpYUludmFsaWQ6IG51bGwsXG4gICAgYXJpYUtleVNob3J0Y3V0czogbnVsbCxcbiAgICBhcmlhTGFiZWw6IG51bGwsXG4gICAgYXJpYUxhYmVsbGVkQnk6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFyaWFMZXZlbDogbnVtYmVyLFxuICAgIGFyaWFMaXZlOiBudWxsLFxuICAgIGFyaWFNb2RhbDogYm9vbGVhbmlzaCxcbiAgICBhcmlhTXVsdGlMaW5lOiBib29sZWFuaXNoLFxuICAgIGFyaWFNdWx0aVNlbGVjdGFibGU6IGJvb2xlYW5pc2gsXG4gICAgYXJpYU9yaWVudGF0aW9uOiBudWxsLFxuICAgIGFyaWFPd25zOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhcmlhUGxhY2Vob2xkZXI6IG51bGwsXG4gICAgYXJpYVBvc0luU2V0OiBudW1iZXIsXG4gICAgYXJpYVByZXNzZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYVJlYWRPbmx5OiBib29sZWFuaXNoLFxuICAgIGFyaWFSZWxldmFudDogbnVsbCxcbiAgICBhcmlhUmVxdWlyZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYVJvbGVEZXNjcmlwdGlvbjogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYVJvd0NvdW50OiBudW1iZXIsXG4gICAgYXJpYVJvd0luZGV4OiBudW1iZXIsXG4gICAgYXJpYVJvd1NwYW46IG51bWJlcixcbiAgICBhcmlhU2VsZWN0ZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYVNldFNpemU6IG51bWJlcixcbiAgICBhcmlhU29ydDogbnVsbCxcbiAgICBhcmlhVmFsdWVNYXg6IG51bWJlcixcbiAgICBhcmlhVmFsdWVNaW46IG51bWJlcixcbiAgICBhcmlhVmFsdWVOb3c6IG51bWJlcixcbiAgICBhcmlhVmFsdWVUZXh0OiBudWxsLFxuICAgIHJvbGU6IG51bGxcbiAgfVxufSlcblxuZnVuY3Rpb24gYXJpYVRyYW5zZm9ybShfLCBwcm9wKSB7XG4gIHJldHVybiBwcm9wID09PSAncm9sZScgPyBwcm9wIDogJ2FyaWEtJyArIHByb3Auc2xpY2UoNCkudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdXRpbC90eXBlcycpXG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi91dGlsL2NyZWF0ZScpXG52YXIgY2FzZUluc2Vuc2l0aXZlVHJhbnNmb3JtID0gcmVxdWlyZSgnLi91dGlsL2Nhc2UtaW5zZW5zaXRpdmUtdHJhbnNmb3JtJylcblxudmFyIGJvb2xlYW4gPSB0eXBlcy5ib29sZWFuXG52YXIgb3ZlcmxvYWRlZEJvb2xlYW4gPSB0eXBlcy5vdmVybG9hZGVkQm9vbGVhblxudmFyIGJvb2xlYW5pc2ggPSB0eXBlcy5ib29sZWFuaXNoXG52YXIgbnVtYmVyID0gdHlwZXMubnVtYmVyXG52YXIgc3BhY2VTZXBhcmF0ZWQgPSB0eXBlcy5zcGFjZVNlcGFyYXRlZFxudmFyIGNvbW1hU2VwYXJhdGVkID0gdHlwZXMuY29tbWFTZXBhcmF0ZWRcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGUoe1xuICBzcGFjZTogJ2h0bWwnLFxuICBhdHRyaWJ1dGVzOiB7XG4gICAgYWNjZXB0Y2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0JyxcbiAgICBjbGFzc25hbWU6ICdjbGFzcycsXG4gICAgaHRtbGZvcjogJ2ZvcicsXG4gICAgaHR0cGVxdWl2OiAnaHR0cC1lcXVpdidcbiAgfSxcbiAgdHJhbnNmb3JtOiBjYXNlSW5zZW5zaXRpdmVUcmFuc2Zvcm0sXG4gIG11c3RVc2VQcm9wZXJ0eTogWydjaGVja2VkJywgJ211bHRpcGxlJywgJ211dGVkJywgJ3NlbGVjdGVkJ10sXG4gIHByb3BlcnRpZXM6IHtcbiAgICAvLyBTdGFuZGFyZCBQcm9wZXJ0aWVzLlxuICAgIGFiYnI6IG51bGwsXG4gICAgYWNjZXB0OiBjb21tYVNlcGFyYXRlZCxcbiAgICBhY2NlcHRDaGFyc2V0OiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhY2Nlc3NLZXk6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFjdGlvbjogbnVsbCxcbiAgICBhbGxvdzogbnVsbCxcbiAgICBhbGxvd0Z1bGxTY3JlZW46IGJvb2xlYW4sXG4gICAgYWxsb3dQYXltZW50UmVxdWVzdDogYm9vbGVhbixcbiAgICBhbGxvd1VzZXJNZWRpYTogYm9vbGVhbixcbiAgICBhbHQ6IG51bGwsXG4gICAgYXM6IG51bGwsXG4gICAgYXN5bmM6IGJvb2xlYW4sXG4gICAgYXV0b0NhcGl0YWxpemU6IG51bGwsXG4gICAgYXV0b0NvbXBsZXRlOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhdXRvRm9jdXM6IGJvb2xlYW4sXG4gICAgYXV0b1BsYXk6IGJvb2xlYW4sXG4gICAgY2FwdHVyZTogYm9vbGVhbixcbiAgICBjaGFyU2V0OiBudWxsLFxuICAgIGNoZWNrZWQ6IGJvb2xlYW4sXG4gICAgY2l0ZTogbnVsbCxcbiAgICBjbGFzc05hbWU6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGNvbHM6IG51bWJlcixcbiAgICBjb2xTcGFuOiBudWxsLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgY29udGVudEVkaXRhYmxlOiBib29sZWFuaXNoLFxuICAgIGNvbnRyb2xzOiBib29sZWFuLFxuICAgIGNvbnRyb2xzTGlzdDogc3BhY2VTZXBhcmF0ZWQsXG4gICAgY29vcmRzOiBudW1iZXIgfCBjb21tYVNlcGFyYXRlZCxcbiAgICBjcm9zc09yaWdpbjogbnVsbCxcbiAgICBkYXRhOiBudWxsLFxuICAgIGRhdGVUaW1lOiBudWxsLFxuICAgIGRlY29kaW5nOiBudWxsLFxuICAgIGRlZmF1bHQ6IGJvb2xlYW4sXG4gICAgZGVmZXI6IGJvb2xlYW4sXG4gICAgZGlyOiBudWxsLFxuICAgIGRpck5hbWU6IG51bGwsXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW4sXG4gICAgZG93bmxvYWQ6IG92ZXJsb2FkZWRCb29sZWFuLFxuICAgIGRyYWdnYWJsZTogYm9vbGVhbmlzaCxcbiAgICBlbmNUeXBlOiBudWxsLFxuICAgIGVudGVyS2V5SGludDogbnVsbCxcbiAgICBmb3JtOiBudWxsLFxuICAgIGZvcm1BY3Rpb246IG51bGwsXG4gICAgZm9ybUVuY1R5cGU6IG51bGwsXG4gICAgZm9ybU1ldGhvZDogbnVsbCxcbiAgICBmb3JtTm9WYWxpZGF0ZTogYm9vbGVhbixcbiAgICBmb3JtVGFyZ2V0OiBudWxsLFxuICAgIGhlYWRlcnM6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICAgIGhpZGRlbjogYm9vbGVhbixcbiAgICBoaWdoOiBudW1iZXIsXG4gICAgaHJlZjogbnVsbCxcbiAgICBocmVmTGFuZzogbnVsbCxcbiAgICBodG1sRm9yOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBodHRwRXF1aXY6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGlkOiBudWxsLFxuICAgIGltYWdlU2l6ZXM6IG51bGwsXG4gICAgaW1hZ2VTcmNTZXQ6IGNvbW1hU2VwYXJhdGVkLFxuICAgIGlucHV0TW9kZTogbnVsbCxcbiAgICBpbnRlZ3JpdHk6IG51bGwsXG4gICAgaXM6IG51bGwsXG4gICAgaXNNYXA6IGJvb2xlYW4sXG4gICAgaXRlbUlkOiBudWxsLFxuICAgIGl0ZW1Qcm9wOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBpdGVtUmVmOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBpdGVtU2NvcGU6IGJvb2xlYW4sXG4gICAgaXRlbVR5cGU6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGtpbmQ6IG51bGwsXG4gICAgbGFiZWw6IG51bGwsXG4gICAgbGFuZzogbnVsbCxcbiAgICBsYW5ndWFnZTogbnVsbCxcbiAgICBsaXN0OiBudWxsLFxuICAgIGxvb3A6IGJvb2xlYW4sXG4gICAgbG93OiBudW1iZXIsXG4gICAgbWFuaWZlc3Q6IG51bGwsXG4gICAgbWF4OiBudWxsLFxuICAgIG1heExlbmd0aDogbnVtYmVyLFxuICAgIG1lZGlhOiBudWxsLFxuICAgIG1ldGhvZDogbnVsbCxcbiAgICBtaW46IG51bGwsXG4gICAgbWluTGVuZ3RoOiBudW1iZXIsXG4gICAgbXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgbXV0ZWQ6IGJvb2xlYW4sXG4gICAgbmFtZTogbnVsbCxcbiAgICBub25jZTogbnVsbCxcbiAgICBub01vZHVsZTogYm9vbGVhbixcbiAgICBub1ZhbGlkYXRlOiBib29sZWFuLFxuICAgIG9uQWJvcnQ6IG51bGwsXG4gICAgb25BZnRlclByaW50OiBudWxsLFxuICAgIG9uQXV4Q2xpY2s6IG51bGwsXG4gICAgb25CZWZvcmVQcmludDogbnVsbCxcbiAgICBvbkJlZm9yZVVubG9hZDogbnVsbCxcbiAgICBvbkJsdXI6IG51bGwsXG4gICAgb25DYW5jZWw6IG51bGwsXG4gICAgb25DYW5QbGF5OiBudWxsLFxuICAgIG9uQ2FuUGxheVRocm91Z2g6IG51bGwsXG4gICAgb25DaGFuZ2U6IG51bGwsXG4gICAgb25DbGljazogbnVsbCxcbiAgICBvbkNsb3NlOiBudWxsLFxuICAgIG9uQ29udGV4dE1lbnU6IG51bGwsXG4gICAgb25Db3B5OiBudWxsLFxuICAgIG9uQ3VlQ2hhbmdlOiBudWxsLFxuICAgIG9uQ3V0OiBudWxsLFxuICAgIG9uRGJsQ2xpY2s6IG51bGwsXG4gICAgb25EcmFnOiBudWxsLFxuICAgIG9uRHJhZ0VuZDogbnVsbCxcbiAgICBvbkRyYWdFbnRlcjogbnVsbCxcbiAgICBvbkRyYWdFeGl0OiBudWxsLFxuICAgIG9uRHJhZ0xlYXZlOiBudWxsLFxuICAgIG9uRHJhZ092ZXI6IG51bGwsXG4gICAgb25EcmFnU3RhcnQ6IG51bGwsXG4gICAgb25Ecm9wOiBudWxsLFxuICAgIG9uRHVyYXRpb25DaGFuZ2U6IG51bGwsXG4gICAgb25FbXB0aWVkOiBudWxsLFxuICAgIG9uRW5kZWQ6IG51bGwsXG4gICAgb25FcnJvcjogbnVsbCxcbiAgICBvbkZvY3VzOiBudWxsLFxuICAgIG9uRm9ybURhdGE6IG51bGwsXG4gICAgb25IYXNoQ2hhbmdlOiBudWxsLFxuICAgIG9uSW5wdXQ6IG51bGwsXG4gICAgb25JbnZhbGlkOiBudWxsLFxuICAgIG9uS2V5RG93bjogbnVsbCxcbiAgICBvbktleVByZXNzOiBudWxsLFxuICAgIG9uS2V5VXA6IG51bGwsXG4gICAgb25MYW5ndWFnZUNoYW5nZTogbnVsbCxcbiAgICBvbkxvYWQ6IG51bGwsXG4gICAgb25Mb2FkZWREYXRhOiBudWxsLFxuICAgIG9uTG9hZGVkTWV0YWRhdGE6IG51bGwsXG4gICAgb25Mb2FkRW5kOiBudWxsLFxuICAgIG9uTG9hZFN0YXJ0OiBudWxsLFxuICAgIG9uTWVzc2FnZTogbnVsbCxcbiAgICBvbk1lc3NhZ2VFcnJvcjogbnVsbCxcbiAgICBvbk1vdXNlRG93bjogbnVsbCxcbiAgICBvbk1vdXNlRW50ZXI6IG51bGwsXG4gICAgb25Nb3VzZUxlYXZlOiBudWxsLFxuICAgIG9uTW91c2VNb3ZlOiBudWxsLFxuICAgIG9uTW91c2VPdXQ6IG51bGwsXG4gICAgb25Nb3VzZU92ZXI6IG51bGwsXG4gICAgb25Nb3VzZVVwOiBudWxsLFxuICAgIG9uT2ZmbGluZTogbnVsbCxcbiAgICBvbk9ubGluZTogbnVsbCxcbiAgICBvblBhZ2VIaWRlOiBudWxsLFxuICAgIG9uUGFnZVNob3c6IG51bGwsXG4gICAgb25QYXN0ZTogbnVsbCxcbiAgICBvblBhdXNlOiBudWxsLFxuICAgIG9uUGxheTogbnVsbCxcbiAgICBvblBsYXlpbmc6IG51bGwsXG4gICAgb25Qb3BTdGF0ZTogbnVsbCxcbiAgICBvblByb2dyZXNzOiBudWxsLFxuICAgIG9uUmF0ZUNoYW5nZTogbnVsbCxcbiAgICBvblJlamVjdGlvbkhhbmRsZWQ6IG51bGwsXG4gICAgb25SZXNldDogbnVsbCxcbiAgICBvblJlc2l6ZTogbnVsbCxcbiAgICBvblNjcm9sbDogbnVsbCxcbiAgICBvblNlY3VyaXR5UG9saWN5VmlvbGF0aW9uOiBudWxsLFxuICAgIG9uU2Vla2VkOiBudWxsLFxuICAgIG9uU2Vla2luZzogbnVsbCxcbiAgICBvblNlbGVjdDogbnVsbCxcbiAgICBvblN0YWxsZWQ6IG51bGwsXG4gICAgb25TdG9yYWdlOiBudWxsLFxuICAgIG9uU3VibWl0OiBudWxsLFxuICAgIG9uU3VzcGVuZDogbnVsbCxcbiAgICBvblRpbWVVcGRhdGU6IG51bGwsXG4gICAgb25Ub2dnbGU6IG51bGwsXG4gICAgb25VbmhhbmRsZWRSZWplY3Rpb246IG51bGwsXG4gICAgb25VbmxvYWQ6IG51bGwsXG4gICAgb25Wb2x1bWVDaGFuZ2U6IG51bGwsXG4gICAgb25XYWl0aW5nOiBudWxsLFxuICAgIG9uV2hlZWw6IG51bGwsXG4gICAgb3BlbjogYm9vbGVhbixcbiAgICBvcHRpbXVtOiBudW1iZXIsXG4gICAgcGF0dGVybjogbnVsbCxcbiAgICBwaW5nOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBwbGFjZWhvbGRlcjogbnVsbCxcbiAgICBwbGF5c0lubGluZTogYm9vbGVhbixcbiAgICBwb3N0ZXI6IG51bGwsXG4gICAgcHJlbG9hZDogbnVsbCxcbiAgICByZWFkT25seTogYm9vbGVhbixcbiAgICByZWZlcnJlclBvbGljeTogbnVsbCxcbiAgICByZWw6IHNwYWNlU2VwYXJhdGVkLFxuICAgIHJlcXVpcmVkOiBib29sZWFuLFxuICAgIHJldmVyc2VkOiBib29sZWFuLFxuICAgIHJvd3M6IG51bWJlcixcbiAgICByb3dTcGFuOiBudW1iZXIsXG4gICAgc2FuZGJveDogc3BhY2VTZXBhcmF0ZWQsXG4gICAgc2NvcGU6IG51bGwsXG4gICAgc2NvcGVkOiBib29sZWFuLFxuICAgIHNlYW1sZXNzOiBib29sZWFuLFxuICAgIHNlbGVjdGVkOiBib29sZWFuLFxuICAgIHNoYXBlOiBudWxsLFxuICAgIHNpemU6IG51bWJlcixcbiAgICBzaXplczogbnVsbCxcbiAgICBzbG90OiBudWxsLFxuICAgIHNwYW46IG51bWJlcixcbiAgICBzcGVsbENoZWNrOiBib29sZWFuaXNoLFxuICAgIHNyYzogbnVsbCxcbiAgICBzcmNEb2M6IG51bGwsXG4gICAgc3JjTGFuZzogbnVsbCxcbiAgICBzcmNTZXQ6IGNvbW1hU2VwYXJhdGVkLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgc3RlcDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICB0YWJJbmRleDogbnVtYmVyLFxuICAgIHRhcmdldDogbnVsbCxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB0cmFuc2xhdGU6IG51bGwsXG4gICAgdHlwZTogbnVsbCxcbiAgICB0eXBlTXVzdE1hdGNoOiBib29sZWFuLFxuICAgIHVzZU1hcDogbnVsbCxcbiAgICB2YWx1ZTogYm9vbGVhbmlzaCxcbiAgICB3aWR0aDogbnVtYmVyLFxuICAgIHdyYXA6IG51bGwsXG5cbiAgICAvLyBMZWdhY3kuXG4gICAgLy8gU2VlOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNvdGhlci1lbGVtZW50cywtYXR0cmlidXRlcy1hbmQtYXBpc1xuICAgIGFsaWduOiBudWxsLCAvLyBTZXZlcmFsLiBVc2UgQ1NTIGB0ZXh0LWFsaWduYCBpbnN0ZWFkLFxuICAgIGFMaW5rOiBudWxsLCAvLyBgPGJvZHk+YC4gVXNlIENTUyBgYTphY3RpdmUge2NvbG9yfWAgaW5zdGVhZFxuICAgIGFyY2hpdmU6IHNwYWNlU2VwYXJhdGVkLCAvLyBgPG9iamVjdD5gLiBMaXN0IG9mIFVSSXMgdG8gYXJjaGl2ZXNcbiAgICBheGlzOiBudWxsLCAvLyBgPHRkPmAgYW5kIGA8dGg+YC4gVXNlIGBzY29wZWAgb24gYDx0aD5gXG4gICAgYmFja2dyb3VuZDogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGJhY2tncm91bmQtaW1hZ2VgIGluc3RlYWRcbiAgICBiZ0NvbG9yOiBudWxsLCAvLyBgPGJvZHk+YCBhbmQgdGFibGUgZWxlbWVudHMuIFVzZSBDU1MgYGJhY2tncm91bmQtY29sb3JgIGluc3RlYWRcbiAgICBib3JkZXI6IG51bWJlciwgLy8gYDx0YWJsZT5gLiBVc2UgQ1NTIGBib3JkZXItd2lkdGhgIGluc3RlYWQsXG4gICAgYm9yZGVyQ29sb3I6IG51bGwsIC8vIGA8dGFibGU+YC4gVXNlIENTUyBgYm9yZGVyLWNvbG9yYCBpbnN0ZWFkLFxuICAgIGJvdHRvbU1hcmdpbjogbnVtYmVyLCAvLyBgPGJvZHk+YFxuICAgIGNlbGxQYWRkaW5nOiBudWxsLCAvLyBgPHRhYmxlPmBcbiAgICBjZWxsU3BhY2luZzogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgY2hhcjogbnVsbCwgLy8gU2V2ZXJhbCB0YWJsZSBlbGVtZW50cy4gV2hlbiBgYWxpZ249Y2hhcmAsIHNldHMgdGhlIGNoYXJhY3RlciB0byBhbGlnbiBvblxuICAgIGNoYXJPZmY6IG51bGwsIC8vIFNldmVyYWwgdGFibGUgZWxlbWVudHMuIFdoZW4gYGNoYXJgLCBvZmZzZXRzIHRoZSBhbGlnbm1lbnRcbiAgICBjbGFzc0lkOiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgY2xlYXI6IG51bGwsIC8vIGA8YnI+YC4gVXNlIENTUyBgY2xlYXJgIGluc3RlYWRcbiAgICBjb2RlOiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgY29kZUJhc2U6IG51bGwsIC8vIGA8b2JqZWN0PmBcbiAgICBjb2RlVHlwZTogbnVsbCwgLy8gYDxvYmplY3Q+YFxuICAgIGNvbG9yOiBudWxsLCAvLyBgPGZvbnQ+YCBhbmQgYDxocj5gLiBVc2UgQ1NTIGluc3RlYWRcbiAgICBjb21wYWN0OiBib29sZWFuLCAvLyBMaXN0cy4gVXNlIENTUyB0byByZWR1Y2Ugc3BhY2UgYmV0d2VlbiBpdGVtcyBpbnN0ZWFkXG4gICAgZGVjbGFyZTogYm9vbGVhbiwgLy8gYDxvYmplY3Q+YFxuICAgIGV2ZW50OiBudWxsLCAvLyBgPHNjcmlwdD5gXG4gICAgZmFjZTogbnVsbCwgLy8gYDxmb250PmAuIFVzZSBDU1MgaW5zdGVhZFxuICAgIGZyYW1lOiBudWxsLCAvLyBgPHRhYmxlPmBcbiAgICBmcmFtZUJvcmRlcjogbnVsbCwgLy8gYDxpZnJhbWU+YC4gVXNlIENTUyBgYm9yZGVyYCBpbnN0ZWFkXG4gICAgaFNwYWNlOiBudW1iZXIsIC8vIGA8aW1nPmAgYW5kIGA8b2JqZWN0PmBcbiAgICBsZWZ0TWFyZ2luOiBudW1iZXIsIC8vIGA8Ym9keT5gXG4gICAgbGluazogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGE6bGluayB7Y29sb3I6ICp9YCBpbnN0ZWFkXG4gICAgbG9uZ0Rlc2M6IG51bGwsIC8vIGA8ZnJhbWU+YCwgYDxpZnJhbWU+YCwgYW5kIGA8aW1nPmAuIFVzZSBhbiBgPGE+YFxuICAgIGxvd1NyYzogbnVsbCwgLy8gYDxpbWc+YC4gVXNlIGEgYDxwaWN0dXJlPmBcbiAgICBtYXJnaW5IZWlnaHQ6IG51bWJlciwgLy8gYDxib2R5PmBcbiAgICBtYXJnaW5XaWR0aDogbnVtYmVyLCAvLyBgPGJvZHk+YFxuICAgIG5vUmVzaXplOiBib29sZWFuLCAvLyBgPGZyYW1lPmBcbiAgICBub0hyZWY6IGJvb2xlYW4sIC8vIGA8YXJlYT5gLiBVc2Ugbm8gaHJlZiBpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGBub2hyZWZgXG4gICAgbm9TaGFkZTogYm9vbGVhbiwgLy8gYDxocj5gLiBVc2UgYmFja2dyb3VuZC1jb2xvciBhbmQgaGVpZ2h0IGluc3RlYWQgb2YgYm9yZGVyc1xuICAgIG5vV3JhcDogYm9vbGVhbiwgLy8gYDx0ZD5gIGFuZCBgPHRoPmBcbiAgICBvYmplY3Q6IG51bGwsIC8vIGA8YXBwbGV0PmBcbiAgICBwcm9maWxlOiBudWxsLCAvLyBgPGhlYWQ+YFxuICAgIHByb21wdDogbnVsbCwgLy8gYDxpc2luZGV4PmBcbiAgICByZXY6IG51bGwsIC8vIGA8bGluaz5gXG4gICAgcmlnaHRNYXJnaW46IG51bWJlciwgLy8gYDxib2R5PmBcbiAgICBydWxlczogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgc2NoZW1lOiBudWxsLCAvLyBgPG1ldGE+YFxuICAgIHNjcm9sbGluZzogYm9vbGVhbmlzaCwgLy8gYDxmcmFtZT5gLiBVc2Ugb3ZlcmZsb3cgaW4gdGhlIGNoaWxkIGNvbnRleHRcbiAgICBzdGFuZGJ5OiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgc3VtbWFyeTogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgdGV4dDogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGNvbG9yYCBpbnN0ZWFkXG4gICAgdG9wTWFyZ2luOiBudW1iZXIsIC8vIGA8Ym9keT5gXG4gICAgdmFsdWVUeXBlOiBudWxsLCAvLyBgPHBhcmFtPmBcbiAgICB2ZXJzaW9uOiBudWxsLCAvLyBgPGh0bWw+YC4gVXNlIGEgZG9jdHlwZS5cbiAgICB2QWxpZ246IG51bGwsIC8vIFNldmVyYWwuIFVzZSBDU1MgYHZlcnRpY2FsLWFsaWduYCBpbnN0ZWFkXG4gICAgdkxpbms6IG51bGwsIC8vIGA8Ym9keT5gLiBVc2UgQ1NTIGBhOnZpc2l0ZWQge2NvbG9yfWAgaW5zdGVhZFxuICAgIHZTcGFjZTogbnVtYmVyLCAvLyBgPGltZz5gIGFuZCBgPG9iamVjdD5gXG5cbiAgICAvLyBOb24tc3RhbmRhcmQgUHJvcGVydGllcy5cbiAgICBhbGxvd1RyYW5zcGFyZW5jeTogbnVsbCxcbiAgICBhdXRvQ29ycmVjdDogbnVsbCxcbiAgICBhdXRvU2F2ZTogbnVsbCxcbiAgICBkaXNhYmxlUGljdHVyZUluUGljdHVyZTogYm9vbGVhbixcbiAgICBwcmVmaXg6IG51bGwsXG4gICAgcHJvcGVydHk6IG51bGwsXG4gICAgcmVzdWx0czogbnVtYmVyLFxuICAgIHNlY3VyaXR5OiBudWxsLFxuICAgIHVuc2VsZWN0YWJsZTogbnVsbFxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBtZXJnZSA9IHJlcXVpcmUoJy4vbGliL3V0aWwvbWVyZ2UnKVxudmFyIHhsaW5rID0gcmVxdWlyZSgnLi9saWIveGxpbmsnKVxudmFyIHhtbCA9IHJlcXVpcmUoJy4vbGliL3htbCcpXG52YXIgeG1sbnMgPSByZXF1aXJlKCcuL2xpYi94bWxucycpXG52YXIgYXJpYSA9IHJlcXVpcmUoJy4vbGliL2FyaWEnKVxudmFyIGh0bWwgPSByZXF1aXJlKCcuL2xpYi9odG1sJylcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZShbeG1sLCB4bGluaywgeG1sbnMsIGFyaWEsIGh0bWxdKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdXRpbC90eXBlcycpXG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi91dGlsL2NyZWF0ZScpXG52YXIgY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vdXRpbC9jYXNlLXNlbnNpdGl2ZS10cmFuc2Zvcm0nKVxuXG52YXIgYm9vbGVhbiA9IHR5cGVzLmJvb2xlYW5cbnZhciBudW1iZXIgPSB0eXBlcy5udW1iZXJcbnZhciBzcGFjZVNlcGFyYXRlZCA9IHR5cGVzLnNwYWNlU2VwYXJhdGVkXG52YXIgY29tbWFTZXBhcmF0ZWQgPSB0eXBlcy5jb21tYVNlcGFyYXRlZFxudmFyIGNvbW1hT3JTcGFjZVNlcGFyYXRlZCA9IHR5cGVzLmNvbW1hT3JTcGFjZVNlcGFyYXRlZFxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAnc3ZnJyxcbiAgYXR0cmlidXRlczoge1xuICAgIGFjY2VudEhlaWdodDogJ2FjY2VudC1oZWlnaHQnLFxuICAgIGFsaWdubWVudEJhc2VsaW5lOiAnYWxpZ25tZW50LWJhc2VsaW5lJyxcbiAgICBhcmFiaWNGb3JtOiAnYXJhYmljLWZvcm0nLFxuICAgIGJhc2VsaW5lU2hpZnQ6ICdiYXNlbGluZS1zaGlmdCcsXG4gICAgY2FwSGVpZ2h0OiAnY2FwLWhlaWdodCcsXG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGNsaXBQYXRoOiAnY2xpcC1wYXRoJyxcbiAgICBjbGlwUnVsZTogJ2NsaXAtcnVsZScsXG4gICAgY29sb3JJbnRlcnBvbGF0aW9uOiAnY29sb3ItaW50ZXJwb2xhdGlvbicsXG4gICAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycsXG4gICAgY29sb3JQcm9maWxlOiAnY29sb3ItcHJvZmlsZScsXG4gICAgY29sb3JSZW5kZXJpbmc6ICdjb2xvci1yZW5kZXJpbmcnLFxuICAgIGNyb3NzT3JpZ2luOiAnY3Jvc3NvcmlnaW4nLFxuICAgIGRhdGFUeXBlOiAnZGF0YXR5cGUnLFxuICAgIGRvbWluYW50QmFzZWxpbmU6ICdkb21pbmFudC1iYXNlbGluZScsXG4gICAgZW5hYmxlQmFja2dyb3VuZDogJ2VuYWJsZS1iYWNrZ3JvdW5kJyxcbiAgICBmaWxsT3BhY2l0eTogJ2ZpbGwtb3BhY2l0eScsXG4gICAgZmlsbFJ1bGU6ICdmaWxsLXJ1bGUnLFxuICAgIGZsb29kQ29sb3I6ICdmbG9vZC1jb2xvcicsXG4gICAgZmxvb2RPcGFjaXR5OiAnZmxvb2Qtb3BhY2l0eScsXG4gICAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5JyxcbiAgICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsXG4gICAgZm9udFNpemVBZGp1c3Q6ICdmb250LXNpemUtYWRqdXN0JyxcbiAgICBmb250U3RyZXRjaDogJ2ZvbnQtc3RyZXRjaCcsXG4gICAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsXG4gICAgZm9udFZhcmlhbnQ6ICdmb250LXZhcmlhbnQnLFxuICAgIGZvbnRXZWlnaHQ6ICdmb250LXdlaWdodCcsXG4gICAgZ2x5cGhOYW1lOiAnZ2x5cGgtbmFtZScsXG4gICAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6ICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJyxcbiAgICBnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ICdnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCcsXG4gICAgaHJlZkxhbmc6ICdocmVmbGFuZycsXG4gICAgaG9yaXpBZHZYOiAnaG9yaXotYWR2LXgnLFxuICAgIGhvcml6T3JpZ2luWDogJ2hvcml6LW9yaWdpbi14JyxcbiAgICBob3Jpek9yaWdpblk6ICdob3Jpei1vcmlnaW4teScsXG4gICAgaW1hZ2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcnLFxuICAgIGxldHRlclNwYWNpbmc6ICdsZXR0ZXItc3BhY2luZycsXG4gICAgbGlnaHRpbmdDb2xvcjogJ2xpZ2h0aW5nLWNvbG9yJyxcbiAgICBtYXJrZXJFbmQ6ICdtYXJrZXItZW5kJyxcbiAgICBtYXJrZXJNaWQ6ICdtYXJrZXItbWlkJyxcbiAgICBtYXJrZXJTdGFydDogJ21hcmtlci1zdGFydCcsXG4gICAgbmF2RG93bjogJ25hdi1kb3duJyxcbiAgICBuYXZEb3duTGVmdDogJ25hdi1kb3duLWxlZnQnLFxuICAgIG5hdkRvd25SaWdodDogJ25hdi1kb3duLXJpZ2h0JyxcbiAgICBuYXZMZWZ0OiAnbmF2LWxlZnQnLFxuICAgIG5hdk5leHQ6ICduYXYtbmV4dCcsXG4gICAgbmF2UHJldjogJ25hdi1wcmV2JyxcbiAgICBuYXZSaWdodDogJ25hdi1yaWdodCcsXG4gICAgbmF2VXA6ICduYXYtdXAnLFxuICAgIG5hdlVwTGVmdDogJ25hdi11cC1sZWZ0JyxcbiAgICBuYXZVcFJpZ2h0OiAnbmF2LXVwLXJpZ2h0JyxcbiAgICBvbkFib3J0OiAnb25hYm9ydCcsXG4gICAgb25BY3RpdmF0ZTogJ29uYWN0aXZhdGUnLFxuICAgIG9uQWZ0ZXJQcmludDogJ29uYWZ0ZXJwcmludCcsXG4gICAgb25CZWZvcmVQcmludDogJ29uYmVmb3JlcHJpbnQnLFxuICAgIG9uQmVnaW46ICdvbmJlZ2luJyxcbiAgICBvbkNhbmNlbDogJ29uY2FuY2VsJyxcbiAgICBvbkNhblBsYXk6ICdvbmNhbnBsYXknLFxuICAgIG9uQ2FuUGxheVRocm91Z2g6ICdvbmNhbnBsYXl0aHJvdWdoJyxcbiAgICBvbkNoYW5nZTogJ29uY2hhbmdlJyxcbiAgICBvbkNsaWNrOiAnb25jbGljaycsXG4gICAgb25DbG9zZTogJ29uY2xvc2UnLFxuICAgIG9uQ29weTogJ29uY29weScsXG4gICAgb25DdWVDaGFuZ2U6ICdvbmN1ZWNoYW5nZScsXG4gICAgb25DdXQ6ICdvbmN1dCcsXG4gICAgb25EYmxDbGljazogJ29uZGJsY2xpY2snLFxuICAgIG9uRHJhZzogJ29uZHJhZycsXG4gICAgb25EcmFnRW5kOiAnb25kcmFnZW5kJyxcbiAgICBvbkRyYWdFbnRlcjogJ29uZHJhZ2VudGVyJyxcbiAgICBvbkRyYWdFeGl0OiAnb25kcmFnZXhpdCcsXG4gICAgb25EcmFnTGVhdmU6ICdvbmRyYWdsZWF2ZScsXG4gICAgb25EcmFnT3ZlcjogJ29uZHJhZ292ZXInLFxuICAgIG9uRHJhZ1N0YXJ0OiAnb25kcmFnc3RhcnQnLFxuICAgIG9uRHJvcDogJ29uZHJvcCcsXG4gICAgb25EdXJhdGlvbkNoYW5nZTogJ29uZHVyYXRpb25jaGFuZ2UnLFxuICAgIG9uRW1wdGllZDogJ29uZW1wdGllZCcsXG4gICAgb25FbmQ6ICdvbmVuZCcsXG4gICAgb25FbmRlZDogJ29uZW5kZWQnLFxuICAgIG9uRXJyb3I6ICdvbmVycm9yJyxcbiAgICBvbkZvY3VzOiAnb25mb2N1cycsXG4gICAgb25Gb2N1c0luOiAnb25mb2N1c2luJyxcbiAgICBvbkZvY3VzT3V0OiAnb25mb2N1c291dCcsXG4gICAgb25IYXNoQ2hhbmdlOiAnb25oYXNoY2hhbmdlJyxcbiAgICBvbklucHV0OiAnb25pbnB1dCcsXG4gICAgb25JbnZhbGlkOiAnb25pbnZhbGlkJyxcbiAgICBvbktleURvd246ICdvbmtleWRvd24nLFxuICAgIG9uS2V5UHJlc3M6ICdvbmtleXByZXNzJyxcbiAgICBvbktleVVwOiAnb25rZXl1cCcsXG4gICAgb25Mb2FkOiAnb25sb2FkJyxcbiAgICBvbkxvYWRlZERhdGE6ICdvbmxvYWRlZGRhdGEnLFxuICAgIG9uTG9hZGVkTWV0YWRhdGE6ICdvbmxvYWRlZG1ldGFkYXRhJyxcbiAgICBvbkxvYWRTdGFydDogJ29ubG9hZHN0YXJ0JyxcbiAgICBvbk1lc3NhZ2U6ICdvbm1lc3NhZ2UnLFxuICAgIG9uTW91c2VEb3duOiAnb25tb3VzZWRvd24nLFxuICAgIG9uTW91c2VFbnRlcjogJ29ubW91c2VlbnRlcicsXG4gICAgb25Nb3VzZUxlYXZlOiAnb25tb3VzZWxlYXZlJyxcbiAgICBvbk1vdXNlTW92ZTogJ29ubW91c2Vtb3ZlJyxcbiAgICBvbk1vdXNlT3V0OiAnb25tb3VzZW91dCcsXG4gICAgb25Nb3VzZU92ZXI6ICdvbm1vdXNlb3ZlcicsXG4gICAgb25Nb3VzZVVwOiAnb25tb3VzZXVwJyxcbiAgICBvbk1vdXNlV2hlZWw6ICdvbm1vdXNld2hlZWwnLFxuICAgIG9uT2ZmbGluZTogJ29ub2ZmbGluZScsXG4gICAgb25PbmxpbmU6ICdvbm9ubGluZScsXG4gICAgb25QYWdlSGlkZTogJ29ucGFnZWhpZGUnLFxuICAgIG9uUGFnZVNob3c6ICdvbnBhZ2VzaG93JyxcbiAgICBvblBhc3RlOiAnb25wYXN0ZScsXG4gICAgb25QYXVzZTogJ29ucGF1c2UnLFxuICAgIG9uUGxheTogJ29ucGxheScsXG4gICAgb25QbGF5aW5nOiAnb25wbGF5aW5nJyxcbiAgICBvblBvcFN0YXRlOiAnb25wb3BzdGF0ZScsXG4gICAgb25Qcm9ncmVzczogJ29ucHJvZ3Jlc3MnLFxuICAgIG9uUmF0ZUNoYW5nZTogJ29ucmF0ZWNoYW5nZScsXG4gICAgb25SZXBlYXQ6ICdvbnJlcGVhdCcsXG4gICAgb25SZXNldDogJ29ucmVzZXQnLFxuICAgIG9uUmVzaXplOiAnb25yZXNpemUnLFxuICAgIG9uU2Nyb2xsOiAnb25zY3JvbGwnLFxuICAgIG9uU2Vla2VkOiAnb25zZWVrZWQnLFxuICAgIG9uU2Vla2luZzogJ29uc2Vla2luZycsXG4gICAgb25TZWxlY3Q6ICdvbnNlbGVjdCcsXG4gICAgb25TaG93OiAnb25zaG93JyxcbiAgICBvblN0YWxsZWQ6ICdvbnN0YWxsZWQnLFxuICAgIG9uU3RvcmFnZTogJ29uc3RvcmFnZScsXG4gICAgb25TdWJtaXQ6ICdvbnN1Ym1pdCcsXG4gICAgb25TdXNwZW5kOiAnb25zdXNwZW5kJyxcbiAgICBvblRpbWVVcGRhdGU6ICdvbnRpbWV1cGRhdGUnLFxuICAgIG9uVG9nZ2xlOiAnb250b2dnbGUnLFxuICAgIG9uVW5sb2FkOiAnb251bmxvYWQnLFxuICAgIG9uVm9sdW1lQ2hhbmdlOiAnb252b2x1bWVjaGFuZ2UnLFxuICAgIG9uV2FpdGluZzogJ29ud2FpdGluZycsXG4gICAgb25ab29tOiAnb256b29tJyxcbiAgICBvdmVybGluZVBvc2l0aW9uOiAnb3ZlcmxpbmUtcG9zaXRpb24nLFxuICAgIG92ZXJsaW5lVGhpY2tuZXNzOiAnb3ZlcmxpbmUtdGhpY2tuZXNzJyxcbiAgICBwYWludE9yZGVyOiAncGFpbnQtb3JkZXInLFxuICAgIHBhbm9zZTE6ICdwYW5vc2UtMScsXG4gICAgcG9pbnRlckV2ZW50czogJ3BvaW50ZXItZXZlbnRzJyxcbiAgICByZWZlcnJlclBvbGljeTogJ3JlZmVycmVycG9saWN5JyxcbiAgICByZW5kZXJpbmdJbnRlbnQ6ICdyZW5kZXJpbmctaW50ZW50JyxcbiAgICBzaGFwZVJlbmRlcmluZzogJ3NoYXBlLXJlbmRlcmluZycsXG4gICAgc3RvcENvbG9yOiAnc3RvcC1jb2xvcicsXG4gICAgc3RvcE9wYWNpdHk6ICdzdG9wLW9wYWNpdHknLFxuICAgIHN0cmlrZXRocm91Z2hQb3NpdGlvbjogJ3N0cmlrZXRocm91Z2gtcG9zaXRpb24nLFxuICAgIHN0cmlrZXRocm91Z2hUaGlja25lc3M6ICdzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcycsXG4gICAgc3Ryb2tlRGFzaEFycmF5OiAnc3Ryb2tlLWRhc2hhcnJheScsXG4gICAgc3Ryb2tlRGFzaE9mZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0JyxcbiAgICBzdHJva2VMaW5lQ2FwOiAnc3Ryb2tlLWxpbmVjYXAnLFxuICAgIHN0cm9rZUxpbmVKb2luOiAnc3Ryb2tlLWxpbmVqb2luJyxcbiAgICBzdHJva2VNaXRlckxpbWl0OiAnc3Ryb2tlLW1pdGVybGltaXQnLFxuICAgIHN0cm9rZU9wYWNpdHk6ICdzdHJva2Utb3BhY2l0eScsXG4gICAgc3Ryb2tlV2lkdGg6ICdzdHJva2Utd2lkdGgnLFxuICAgIHRhYkluZGV4OiAndGFiaW5kZXgnLFxuICAgIHRleHRBbmNob3I6ICd0ZXh0LWFuY2hvcicsXG4gICAgdGV4dERlY29yYXRpb246ICd0ZXh0LWRlY29yYXRpb24nLFxuICAgIHRleHRSZW5kZXJpbmc6ICd0ZXh0LXJlbmRlcmluZycsXG4gICAgdHlwZU9mOiAndHlwZW9mJyxcbiAgICB1bmRlcmxpbmVQb3NpdGlvbjogJ3VuZGVybGluZS1wb3NpdGlvbicsXG4gICAgdW5kZXJsaW5lVGhpY2tuZXNzOiAndW5kZXJsaW5lLXRoaWNrbmVzcycsXG4gICAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLFxuICAgIHVuaWNvZGVSYW5nZTogJ3VuaWNvZGUtcmFuZ2UnLFxuICAgIHVuaXRzUGVyRW06ICd1bml0cy1wZXItZW0nLFxuICAgIHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJyxcbiAgICB2SGFuZ2luZzogJ3YtaGFuZ2luZycsXG4gICAgdklkZW9ncmFwaGljOiAndi1pZGVvZ3JhcGhpYycsXG4gICAgdk1hdGhlbWF0aWNhbDogJ3YtbWF0aGVtYXRpY2FsJyxcbiAgICB2ZWN0b3JFZmZlY3Q6ICd2ZWN0b3ItZWZmZWN0JyxcbiAgICB2ZXJ0QWR2WTogJ3ZlcnQtYWR2LXknLFxuICAgIHZlcnRPcmlnaW5YOiAndmVydC1vcmlnaW4teCcsXG4gICAgdmVydE9yaWdpblk6ICd2ZXJ0LW9yaWdpbi15JyxcbiAgICB3b3JkU3BhY2luZzogJ3dvcmQtc3BhY2luZycsXG4gICAgd3JpdGluZ01vZGU6ICd3cml0aW5nLW1vZGUnLFxuICAgIHhIZWlnaHQ6ICd4LWhlaWdodCcsXG4gICAgLy8gVGhlc2Ugd2VyZSBjYW1lbGNhc2VkIGluIFRpbnkuIE5vdyBsb3dlcmNhc2VkIGluIFNWRyAyXG4gICAgcGxheWJhY2tPcmRlcjogJ3BsYXliYWNrb3JkZXInLFxuICAgIHRpbWVsaW5lQmVnaW46ICd0aW1lbGluZWJlZ2luJ1xuICB9LFxuICB0cmFuc2Zvcm06IGNhc2VTZW5zaXRpdmVUcmFuc2Zvcm0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICBhYm91dDogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIGFjY2VudEhlaWdodDogbnVtYmVyLFxuICAgIGFjY3VtdWxhdGU6IG51bGwsXG4gICAgYWRkaXRpdmU6IG51bGwsXG4gICAgYWxpZ25tZW50QmFzZWxpbmU6IG51bGwsXG4gICAgYWxwaGFiZXRpYzogbnVtYmVyLFxuICAgIGFtcGxpdHVkZTogbnVtYmVyLFxuICAgIGFyYWJpY0Zvcm06IG51bGwsXG4gICAgYXNjZW50OiBudW1iZXIsXG4gICAgYXR0cmlidXRlTmFtZTogbnVsbCxcbiAgICBhdHRyaWJ1dGVUeXBlOiBudWxsLFxuICAgIGF6aW11dGg6IG51bWJlcixcbiAgICBiYW5kd2lkdGg6IG51bGwsXG4gICAgYmFzZWxpbmVTaGlmdDogbnVsbCxcbiAgICBiYXNlRnJlcXVlbmN5OiBudWxsLFxuICAgIGJhc2VQcm9maWxlOiBudWxsLFxuICAgIGJib3g6IG51bGwsXG4gICAgYmVnaW46IG51bGwsXG4gICAgYmlhczogbnVtYmVyLFxuICAgIGJ5OiBudWxsLFxuICAgIGNhbGNNb2RlOiBudWxsLFxuICAgIGNhcEhlaWdodDogbnVtYmVyLFxuICAgIGNsYXNzTmFtZTogc3BhY2VTZXBhcmF0ZWQsXG4gICAgY2xpcDogbnVsbCxcbiAgICBjbGlwUGF0aDogbnVsbCxcbiAgICBjbGlwUGF0aFVuaXRzOiBudWxsLFxuICAgIGNsaXBSdWxlOiBudWxsLFxuICAgIGNvbG9yOiBudWxsLFxuICAgIGNvbG9ySW50ZXJwb2xhdGlvbjogbnVsbCxcbiAgICBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiBudWxsLFxuICAgIGNvbG9yUHJvZmlsZTogbnVsbCxcbiAgICBjb2xvclJlbmRlcmluZzogbnVsbCxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGNvbnRlbnRTY3JpcHRUeXBlOiBudWxsLFxuICAgIGNvbnRlbnRTdHlsZVR5cGU6IG51bGwsXG4gICAgY3Jvc3NPcmlnaW46IG51bGwsXG4gICAgY3Vyc29yOiBudWxsLFxuICAgIGN4OiBudWxsLFxuICAgIGN5OiBudWxsLFxuICAgIGQ6IG51bGwsXG4gICAgZGF0YVR5cGU6IG51bGwsXG4gICAgZGVmYXVsdEFjdGlvbjogbnVsbCxcbiAgICBkZXNjZW50OiBudW1iZXIsXG4gICAgZGlmZnVzZUNvbnN0YW50OiBudW1iZXIsXG4gICAgZGlyZWN0aW9uOiBudWxsLFxuICAgIGRpc3BsYXk6IG51bGwsXG4gICAgZHVyOiBudWxsLFxuICAgIGRpdmlzb3I6IG51bWJlcixcbiAgICBkb21pbmFudEJhc2VsaW5lOiBudWxsLFxuICAgIGRvd25sb2FkOiBib29sZWFuLFxuICAgIGR4OiBudWxsLFxuICAgIGR5OiBudWxsLFxuICAgIGVkZ2VNb2RlOiBudWxsLFxuICAgIGVkaXRhYmxlOiBudWxsLFxuICAgIGVsZXZhdGlvbjogbnVtYmVyLFxuICAgIGVuYWJsZUJhY2tncm91bmQ6IG51bGwsXG4gICAgZW5kOiBudWxsLFxuICAgIGV2ZW50OiBudWxsLFxuICAgIGV4cG9uZW50OiBudW1iZXIsXG4gICAgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDogbnVsbCxcbiAgICBmaWxsOiBudWxsLFxuICAgIGZpbGxPcGFjaXR5OiBudW1iZXIsXG4gICAgZmlsbFJ1bGU6IG51bGwsXG4gICAgZmlsdGVyOiBudWxsLFxuICAgIGZpbHRlclJlczogbnVsbCxcbiAgICBmaWx0ZXJVbml0czogbnVsbCxcbiAgICBmbG9vZENvbG9yOiBudWxsLFxuICAgIGZsb29kT3BhY2l0eTogbnVsbCxcbiAgICBmb2N1c2FibGU6IG51bGwsXG4gICAgZm9jdXNIaWdobGlnaHQ6IG51bGwsXG4gICAgZm9udEZhbWlseTogbnVsbCxcbiAgICBmb250U2l6ZTogbnVsbCxcbiAgICBmb250U2l6ZUFkanVzdDogbnVsbCxcbiAgICBmb250U3RyZXRjaDogbnVsbCxcbiAgICBmb250U3R5bGU6IG51bGwsXG4gICAgZm9udFZhcmlhbnQ6IG51bGwsXG4gICAgZm9udFdlaWdodDogbnVsbCxcbiAgICBmb3JtYXQ6IG51bGwsXG4gICAgZnI6IG51bGwsXG4gICAgZnJvbTogbnVsbCxcbiAgICBmeDogbnVsbCxcbiAgICBmeTogbnVsbCxcbiAgICBnMTogY29tbWFTZXBhcmF0ZWQsXG4gICAgZzI6IGNvbW1hU2VwYXJhdGVkLFxuICAgIGdseXBoTmFtZTogY29tbWFTZXBhcmF0ZWQsXG4gICAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6IG51bGwsXG4gICAgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiBudWxsLFxuICAgIGdseXBoUmVmOiBudWxsLFxuICAgIGdyYWRpZW50VHJhbnNmb3JtOiBudWxsLFxuICAgIGdyYWRpZW50VW5pdHM6IG51bGwsXG4gICAgaGFuZGxlcjogbnVsbCxcbiAgICBoYW5naW5nOiBudW1iZXIsXG4gICAgaGF0Y2hDb250ZW50VW5pdHM6IG51bGwsXG4gICAgaGF0Y2hVbml0czogbnVsbCxcbiAgICBoZWlnaHQ6IG51bGwsXG4gICAgaHJlZjogbnVsbCxcbiAgICBocmVmTGFuZzogbnVsbCxcbiAgICBob3JpekFkdlg6IG51bWJlcixcbiAgICBob3Jpek9yaWdpblg6IG51bWJlcixcbiAgICBob3Jpek9yaWdpblk6IG51bWJlcixcbiAgICBpZDogbnVsbCxcbiAgICBpZGVvZ3JhcGhpYzogbnVtYmVyLFxuICAgIGltYWdlUmVuZGVyaW5nOiBudWxsLFxuICAgIGluaXRpYWxWaXNpYmlsaXR5OiBudWxsLFxuICAgIGluOiBudWxsLFxuICAgIGluMjogbnVsbCxcbiAgICBpbnRlcmNlcHQ6IG51bWJlcixcbiAgICBrOiBudW1iZXIsXG4gICAgazE6IG51bWJlcixcbiAgICBrMjogbnVtYmVyLFxuICAgIGszOiBudW1iZXIsXG4gICAgazQ6IG51bWJlcixcbiAgICBrZXJuZWxNYXRyaXg6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICBrZXJuZWxVbml0TGVuZ3RoOiBudWxsLFxuICAgIGtleVBvaW50czogbnVsbCwgLy8gU0VNSV9DT0xPTl9TRVBBUkFURURcbiAgICBrZXlTcGxpbmVzOiBudWxsLCAvLyBTRU1JX0NPTE9OX1NFUEFSQVRFRFxuICAgIGtleVRpbWVzOiBudWxsLCAvLyBTRU1JX0NPTE9OX1NFUEFSQVRFRFxuICAgIGtlcm5pbmc6IG51bGwsXG4gICAgbGFuZzogbnVsbCxcbiAgICBsZW5ndGhBZGp1c3Q6IG51bGwsXG4gICAgbGV0dGVyU3BhY2luZzogbnVsbCxcbiAgICBsaWdodGluZ0NvbG9yOiBudWxsLFxuICAgIGxpbWl0aW5nQ29uZUFuZ2xlOiBudW1iZXIsXG4gICAgbG9jYWw6IG51bGwsXG4gICAgbWFya2VyRW5kOiBudWxsLFxuICAgIG1hcmtlck1pZDogbnVsbCxcbiAgICBtYXJrZXJTdGFydDogbnVsbCxcbiAgICBtYXJrZXJIZWlnaHQ6IG51bGwsXG4gICAgbWFya2VyVW5pdHM6IG51bGwsXG4gICAgbWFya2VyV2lkdGg6IG51bGwsXG4gICAgbWFzazogbnVsbCxcbiAgICBtYXNrQ29udGVudFVuaXRzOiBudWxsLFxuICAgIG1hc2tVbml0czogbnVsbCxcbiAgICBtYXRoZW1hdGljYWw6IG51bGwsXG4gICAgbWF4OiBudWxsLFxuICAgIG1lZGlhOiBudWxsLFxuICAgIG1lZGlhQ2hhcmFjdGVyRW5jb2Rpbmc6IG51bGwsXG4gICAgbWVkaWFDb250ZW50RW5jb2RpbmdzOiBudWxsLFxuICAgIG1lZGlhU2l6ZTogbnVtYmVyLFxuICAgIG1lZGlhVGltZTogbnVsbCxcbiAgICBtZXRob2Q6IG51bGwsXG4gICAgbWluOiBudWxsLFxuICAgIG1vZGU6IG51bGwsXG4gICAgbmFtZTogbnVsbCxcbiAgICBuYXZEb3duOiBudWxsLFxuICAgIG5hdkRvd25MZWZ0OiBudWxsLFxuICAgIG5hdkRvd25SaWdodDogbnVsbCxcbiAgICBuYXZMZWZ0OiBudWxsLFxuICAgIG5hdk5leHQ6IG51bGwsXG4gICAgbmF2UHJldjogbnVsbCxcbiAgICBuYXZSaWdodDogbnVsbCxcbiAgICBuYXZVcDogbnVsbCxcbiAgICBuYXZVcExlZnQ6IG51bGwsXG4gICAgbmF2VXBSaWdodDogbnVsbCxcbiAgICBudW1PY3RhdmVzOiBudWxsLFxuICAgIG9ic2VydmVyOiBudWxsLFxuICAgIG9mZnNldDogbnVsbCxcbiAgICBvbkFib3J0OiBudWxsLFxuICAgIG9uQWN0aXZhdGU6IG51bGwsXG4gICAgb25BZnRlclByaW50OiBudWxsLFxuICAgIG9uQmVmb3JlUHJpbnQ6IG51bGwsXG4gICAgb25CZWdpbjogbnVsbCxcbiAgICBvbkNhbmNlbDogbnVsbCxcbiAgICBvbkNhblBsYXk6IG51bGwsXG4gICAgb25DYW5QbGF5VGhyb3VnaDogbnVsbCxcbiAgICBvbkNoYW5nZTogbnVsbCxcbiAgICBvbkNsaWNrOiBudWxsLFxuICAgIG9uQ2xvc2U6IG51bGwsXG4gICAgb25Db3B5OiBudWxsLFxuICAgIG9uQ3VlQ2hhbmdlOiBudWxsLFxuICAgIG9uQ3V0OiBudWxsLFxuICAgIG9uRGJsQ2xpY2s6IG51bGwsXG4gICAgb25EcmFnOiBudWxsLFxuICAgIG9uRHJhZ0VuZDogbnVsbCxcbiAgICBvbkRyYWdFbnRlcjogbnVsbCxcbiAgICBvbkRyYWdFeGl0OiBudWxsLFxuICAgIG9uRHJhZ0xlYXZlOiBudWxsLFxuICAgIG9uRHJhZ092ZXI6IG51bGwsXG4gICAgb25EcmFnU3RhcnQ6IG51bGwsXG4gICAgb25Ecm9wOiBudWxsLFxuICAgIG9uRHVyYXRpb25DaGFuZ2U6IG51bGwsXG4gICAgb25FbXB0aWVkOiBudWxsLFxuICAgIG9uRW5kOiBudWxsLFxuICAgIG9uRW5kZWQ6IG51bGwsXG4gICAgb25FcnJvcjogbnVsbCxcbiAgICBvbkZvY3VzOiBudWxsLFxuICAgIG9uRm9jdXNJbjogbnVsbCxcbiAgICBvbkZvY3VzT3V0OiBudWxsLFxuICAgIG9uSGFzaENoYW5nZTogbnVsbCxcbiAgICBvbklucHV0OiBudWxsLFxuICAgIG9uSW52YWxpZDogbnVsbCxcbiAgICBvbktleURvd246IG51bGwsXG4gICAgb25LZXlQcmVzczogbnVsbCxcbiAgICBvbktleVVwOiBudWxsLFxuICAgIG9uTG9hZDogbnVsbCxcbiAgICBvbkxvYWRlZERhdGE6IG51bGwsXG4gICAgb25Mb2FkZWRNZXRhZGF0YTogbnVsbCxcbiAgICBvbkxvYWRTdGFydDogbnVsbCxcbiAgICBvbk1lc3NhZ2U6IG51bGwsXG4gICAgb25Nb3VzZURvd246IG51bGwsXG4gICAgb25Nb3VzZUVudGVyOiBudWxsLFxuICAgIG9uTW91c2VMZWF2ZTogbnVsbCxcbiAgICBvbk1vdXNlTW92ZTogbnVsbCxcbiAgICBvbk1vdXNlT3V0OiBudWxsLFxuICAgIG9uTW91c2VPdmVyOiBudWxsLFxuICAgIG9uTW91c2VVcDogbnVsbCxcbiAgICBvbk1vdXNlV2hlZWw6IG51bGwsXG4gICAgb25PZmZsaW5lOiBudWxsLFxuICAgIG9uT25saW5lOiBudWxsLFxuICAgIG9uUGFnZUhpZGU6IG51bGwsXG4gICAgb25QYWdlU2hvdzogbnVsbCxcbiAgICBvblBhc3RlOiBudWxsLFxuICAgIG9uUGF1c2U6IG51bGwsXG4gICAgb25QbGF5OiBudWxsLFxuICAgIG9uUGxheWluZzogbnVsbCxcbiAgICBvblBvcFN0YXRlOiBudWxsLFxuICAgIG9uUHJvZ3Jlc3M6IG51bGwsXG4gICAgb25SYXRlQ2hhbmdlOiBudWxsLFxuICAgIG9uUmVwZWF0OiBudWxsLFxuICAgIG9uUmVzZXQ6IG51bGwsXG4gICAgb25SZXNpemU6IG51bGwsXG4gICAgb25TY3JvbGw6IG51bGwsXG4gICAgb25TZWVrZWQ6IG51bGwsXG4gICAgb25TZWVraW5nOiBudWxsLFxuICAgIG9uU2VsZWN0OiBudWxsLFxuICAgIG9uU2hvdzogbnVsbCxcbiAgICBvblN0YWxsZWQ6IG51bGwsXG4gICAgb25TdG9yYWdlOiBudWxsLFxuICAgIG9uU3VibWl0OiBudWxsLFxuICAgIG9uU3VzcGVuZDogbnVsbCxcbiAgICBvblRpbWVVcGRhdGU6IG51bGwsXG4gICAgb25Ub2dnbGU6IG51bGwsXG4gICAgb25VbmxvYWQ6IG51bGwsXG4gICAgb25Wb2x1bWVDaGFuZ2U6IG51bGwsXG4gICAgb25XYWl0aW5nOiBudWxsLFxuICAgIG9uWm9vbTogbnVsbCxcbiAgICBvcGFjaXR5OiBudWxsLFxuICAgIG9wZXJhdG9yOiBudWxsLFxuICAgIG9yZGVyOiBudWxsLFxuICAgIG9yaWVudDogbnVsbCxcbiAgICBvcmllbnRhdGlvbjogbnVsbCxcbiAgICBvcmlnaW46IG51bGwsXG4gICAgb3ZlcmZsb3c6IG51bGwsXG4gICAgb3ZlcmxheTogbnVsbCxcbiAgICBvdmVybGluZVBvc2l0aW9uOiBudW1iZXIsXG4gICAgb3ZlcmxpbmVUaGlja25lc3M6IG51bWJlcixcbiAgICBwYWludE9yZGVyOiBudWxsLFxuICAgIHBhbm9zZTE6IG51bGwsXG4gICAgcGF0aDogbnVsbCxcbiAgICBwYXRoTGVuZ3RoOiBudW1iZXIsXG4gICAgcGF0dGVybkNvbnRlbnRVbml0czogbnVsbCxcbiAgICBwYXR0ZXJuVHJhbnNmb3JtOiBudWxsLFxuICAgIHBhdHRlcm5Vbml0czogbnVsbCxcbiAgICBwaGFzZTogbnVsbCxcbiAgICBwaW5nOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBwaXRjaDogbnVsbCxcbiAgICBwbGF5YmFja09yZGVyOiBudWxsLFxuICAgIHBvaW50ZXJFdmVudHM6IG51bGwsXG4gICAgcG9pbnRzOiBudWxsLFxuICAgIHBvaW50c0F0WDogbnVtYmVyLFxuICAgIHBvaW50c0F0WTogbnVtYmVyLFxuICAgIHBvaW50c0F0WjogbnVtYmVyLFxuICAgIHByZXNlcnZlQWxwaGE6IG51bGwsXG4gICAgcHJlc2VydmVBc3BlY3RSYXRpbzogbnVsbCxcbiAgICBwcmltaXRpdmVVbml0czogbnVsbCxcbiAgICBwcm9wYWdhdGU6IG51bGwsXG4gICAgcHJvcGVydHk6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByOiBudWxsLFxuICAgIHJhZGl1czogbnVsbCxcbiAgICByZWZlcnJlclBvbGljeTogbnVsbCxcbiAgICByZWZYOiBudWxsLFxuICAgIHJlZlk6IG51bGwsXG4gICAgcmVsOiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmV2OiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVuZGVyaW5nSW50ZW50OiBudWxsLFxuICAgIHJlcGVhdENvdW50OiBudWxsLFxuICAgIHJlcGVhdER1cjogbnVsbCxcbiAgICByZXF1aXJlZEV4dGVuc2lvbnM6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByZXF1aXJlZEZlYXR1cmVzOiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVxdWlyZWRGb250czogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHJlcXVpcmVkRm9ybWF0czogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHJlc291cmNlOiBudWxsLFxuICAgIHJlc3RhcnQ6IG51bGwsXG4gICAgcmVzdWx0OiBudWxsLFxuICAgIHJvdGF0ZTogbnVsbCxcbiAgICByeDogbnVsbCxcbiAgICByeTogbnVsbCxcbiAgICBzY2FsZTogbnVsbCxcbiAgICBzZWVkOiBudWxsLFxuICAgIHNoYXBlUmVuZGVyaW5nOiBudWxsLFxuICAgIHNpZGU6IG51bGwsXG4gICAgc2xvcGU6IG51bGwsXG4gICAgc25hcHNob3RUaW1lOiBudWxsLFxuICAgIHNwZWN1bGFyQ29uc3RhbnQ6IG51bWJlcixcbiAgICBzcGVjdWxhckV4cG9uZW50OiBudW1iZXIsXG4gICAgc3ByZWFkTWV0aG9kOiBudWxsLFxuICAgIHNwYWNpbmc6IG51bGwsXG4gICAgc3RhcnRPZmZzZXQ6IG51bGwsXG4gICAgc3RkRGV2aWF0aW9uOiBudWxsLFxuICAgIHN0ZW1oOiBudWxsLFxuICAgIHN0ZW12OiBudWxsLFxuICAgIHN0aXRjaFRpbGVzOiBudWxsLFxuICAgIHN0b3BDb2xvcjogbnVsbCxcbiAgICBzdG9wT3BhY2l0eTogbnVsbCxcbiAgICBzdHJpa2V0aHJvdWdoUG9zaXRpb246IG51bWJlcixcbiAgICBzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiBudW1iZXIsXG4gICAgc3RyaW5nOiBudWxsLFxuICAgIHN0cm9rZTogbnVsbCxcbiAgICBzdHJva2VEYXNoQXJyYXk6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICBzdHJva2VEYXNoT2Zmc2V0OiBudWxsLFxuICAgIHN0cm9rZUxpbmVDYXA6IG51bGwsXG4gICAgc3Ryb2tlTGluZUpvaW46IG51bGwsXG4gICAgc3Ryb2tlTWl0ZXJMaW1pdDogbnVtYmVyLFxuICAgIHN0cm9rZU9wYWNpdHk6IG51bWJlcixcbiAgICBzdHJva2VXaWR0aDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICBzdXJmYWNlU2NhbGU6IG51bWJlcixcbiAgICBzeW5jQmVoYXZpb3I6IG51bGwsXG4gICAgc3luY0JlaGF2aW9yRGVmYXVsdDogbnVsbCxcbiAgICBzeW5jTWFzdGVyOiBudWxsLFxuICAgIHN5bmNUb2xlcmFuY2U6IG51bGwsXG4gICAgc3luY1RvbGVyYW5jZURlZmF1bHQ6IG51bGwsXG4gICAgc3lzdGVtTGFuZ3VhZ2U6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICB0YWJJbmRleDogbnVtYmVyLFxuICAgIHRhYmxlVmFsdWVzOiBudWxsLFxuICAgIHRhcmdldDogbnVsbCxcbiAgICB0YXJnZXRYOiBudW1iZXIsXG4gICAgdGFyZ2V0WTogbnVtYmVyLFxuICAgIHRleHRBbmNob3I6IG51bGwsXG4gICAgdGV4dERlY29yYXRpb246IG51bGwsXG4gICAgdGV4dFJlbmRlcmluZzogbnVsbCxcbiAgICB0ZXh0TGVuZ3RoOiBudWxsLFxuICAgIHRpbWVsaW5lQmVnaW46IG51bGwsXG4gICAgdGl0bGU6IG51bGwsXG4gICAgdHJhbnNmb3JtQmVoYXZpb3I6IG51bGwsXG4gICAgdHlwZTogbnVsbCxcbiAgICB0eXBlT2Y6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICB0bzogbnVsbCxcbiAgICB0cmFuc2Zvcm06IG51bGwsXG4gICAgdTE6IG51bGwsXG4gICAgdTI6IG51bGwsXG4gICAgdW5kZXJsaW5lUG9zaXRpb246IG51bWJlcixcbiAgICB1bmRlcmxpbmVUaGlja25lc3M6IG51bWJlcixcbiAgICB1bmljb2RlOiBudWxsLFxuICAgIHVuaWNvZGVCaWRpOiBudWxsLFxuICAgIHVuaWNvZGVSYW5nZTogbnVsbCxcbiAgICB1bml0c1BlckVtOiBudW1iZXIsXG4gICAgdmFsdWVzOiBudWxsLFxuICAgIHZBbHBoYWJldGljOiBudW1iZXIsXG4gICAgdk1hdGhlbWF0aWNhbDogbnVtYmVyLFxuICAgIHZlY3RvckVmZmVjdDogbnVsbCxcbiAgICB2SGFuZ2luZzogbnVtYmVyLFxuICAgIHZJZGVvZ3JhcGhpYzogbnVtYmVyLFxuICAgIHZlcnNpb246IG51bGwsXG4gICAgdmVydEFkdlk6IG51bWJlcixcbiAgICB2ZXJ0T3JpZ2luWDogbnVtYmVyLFxuICAgIHZlcnRPcmlnaW5ZOiBudW1iZXIsXG4gICAgdmlld0JveDogbnVsbCxcbiAgICB2aWV3VGFyZ2V0OiBudWxsLFxuICAgIHZpc2liaWxpdHk6IG51bGwsXG4gICAgd2lkdGg6IG51bGwsXG4gICAgd2lkdGhzOiBudWxsLFxuICAgIHdvcmRTcGFjaW5nOiBudWxsLFxuICAgIHdyaXRpbmdNb2RlOiBudWxsLFxuICAgIHg6IG51bGwsXG4gICAgeDE6IG51bGwsXG4gICAgeDI6IG51bGwsXG4gICAgeENoYW5uZWxTZWxlY3RvcjogbnVsbCxcbiAgICB4SGVpZ2h0OiBudW1iZXIsXG4gICAgeTogbnVsbCxcbiAgICB5MTogbnVsbCxcbiAgICB5MjogbnVsbCxcbiAgICB5Q2hhbm5lbFNlbGVjdG9yOiBudWxsLFxuICAgIHo6IG51bGwsXG4gICAgem9vbUFuZFBhbjogbnVsbFxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBtZXJnZSA9IHJlcXVpcmUoJy4vbGliL3V0aWwvbWVyZ2UnKVxudmFyIHhsaW5rID0gcmVxdWlyZSgnLi9saWIveGxpbmsnKVxudmFyIHhtbCA9IHJlcXVpcmUoJy4vbGliL3htbCcpXG52YXIgeG1sbnMgPSByZXF1aXJlKCcuL2xpYi94bWxucycpXG52YXIgYXJpYSA9IHJlcXVpcmUoJy4vbGliL2FyaWEnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJy4vbGliL3N2ZycpXG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2UoW3htbCwgeGxpbmssIHhtbG5zLCBhcmlhLCBzdmddKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCcuL25vcm1hbGl6ZScpXG52YXIgRGVmaW5lZEluZm8gPSByZXF1aXJlKCcuL2xpYi91dGlsL2RlZmluZWQtaW5mbycpXG52YXIgSW5mbyA9IHJlcXVpcmUoJy4vbGliL3V0aWwvaW5mbycpXG5cbnZhciBkYXRhID0gJ2RhdGEnXG5cbm1vZHVsZS5leHBvcnRzID0gZmluZFxuXG52YXIgdmFsaWQgPSAvXmRhdGFbLWEtejAtOS46X10rJC9pXG52YXIgZGFzaCA9IC8tW2Etel0vZ1xudmFyIGNhcCA9IC9bQS1aXS9nXG5cbmZ1bmN0aW9uIGZpbmQoc2NoZW1hLCB2YWx1ZSkge1xuICB2YXIgbm9ybWFsID0gbm9ybWFsaXplKHZhbHVlKVxuICB2YXIgcHJvcCA9IHZhbHVlXG4gIHZhciBUeXBlID0gSW5mb1xuXG4gIGlmIChub3JtYWwgaW4gc2NoZW1hLm5vcm1hbCkge1xuICAgIHJldHVybiBzY2hlbWEucHJvcGVydHlbc2NoZW1hLm5vcm1hbFtub3JtYWxdXVxuICB9XG5cbiAgaWYgKG5vcm1hbC5sZW5ndGggPiA0ICYmIG5vcm1hbC5zbGljZSgwLCA0KSA9PT0gZGF0YSAmJiB2YWxpZC50ZXN0KHZhbHVlKSkge1xuICAgIC8vIEF0dHJpYnV0ZSBvciBwcm9wZXJ0eS5cbiAgICBpZiAodmFsdWUuY2hhckF0KDQpID09PSAnLScpIHtcbiAgICAgIHByb3AgPSBkYXRhc2V0VG9Qcm9wZXJ0eSh2YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBkYXRhc2V0VG9BdHRyaWJ1dGUodmFsdWUpXG4gICAgfVxuXG4gICAgVHlwZSA9IERlZmluZWRJbmZvXG4gIH1cblxuICByZXR1cm4gbmV3IFR5cGUocHJvcCwgdmFsdWUpXG59XG5cbmZ1bmN0aW9uIGRhdGFzZXRUb1Byb3BlcnR5KGF0dHJpYnV0ZSkge1xuICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGUuc2xpY2UoNSkucmVwbGFjZShkYXNoLCBjYW1lbGNhc2UpXG4gIHJldHVybiBkYXRhICsgdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKVxufVxuXG5mdW5jdGlvbiBkYXRhc2V0VG9BdHRyaWJ1dGUocHJvcGVydHkpIHtcbiAgdmFyIHZhbHVlID0gcHJvcGVydHkuc2xpY2UoNClcblxuICBpZiAoZGFzaC50ZXN0KHZhbHVlKSkge1xuICAgIHJldHVybiBwcm9wZXJ0eVxuICB9XG5cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGNhcCwga2ViYWIpXG5cbiAgaWYgKHZhbHVlLmNoYXJBdCgwKSAhPT0gJy0nKSB7XG4gICAgdmFsdWUgPSAnLScgKyB2YWx1ZVxuICB9XG5cbiAgcmV0dXJuIGRhdGEgKyB2YWx1ZVxufVxuXG5mdW5jdGlvbiBrZWJhYigkMCkge1xuICByZXR1cm4gJy0nICsgJDAudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBjYW1lbGNhc2UoJDApIHtcbiAgcmV0dXJuICQwLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVxuXG52YXIgbnVtYmVyU2lnbiA9IDM1IC8vICAnIydcbnZhciBkb3QgPSA0NiAvLyAgJy4nXG5cbi8vIENyZWF0ZSBhIGhhc3QgZWxlbWVudCBmcm9tIGEgc2ltcGxlIENTUyBzZWxlY3Rvci5cbmZ1bmN0aW9uIHBhcnNlKHNlbGVjdG9yLCBkZWZhdWx0VGFnTmFtZSkge1xuICB2YXIgdmFsdWUgPSBzZWxlY3RvciB8fCAnJ1xuICB2YXIgbmFtZSA9IGRlZmF1bHRUYWdOYW1lIHx8ICdkaXYnXG4gIHZhciBwcm9wcyA9IHt9XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGNsYXNzTmFtZVxuICB2YXIgdHlwZVxuICB2YXIgY29kZVxuICB2YXIgc3VidmFsdWVcbiAgdmFyIGxhc3RJbmRleFxuXG4gIHdoaWxlICgrK2luZGV4IDw9IGxlbmd0aCkge1xuICAgIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgaWYgKCFjb2RlIHx8IGNvZGUgPT09IGRvdCB8fCBjb2RlID09PSBudW1iZXJTaWduKSB7XG4gICAgICBzdWJ2YWx1ZSA9IHZhbHVlLnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpXG5cbiAgICAgIGlmIChzdWJ2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZSA9PT0gZG90KSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1kZXB0aFxuICAgICAgICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZS5wdXNoKHN1YnZhbHVlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbGFzc05hbWUgPSBbc3VidmFsdWVdXG4gICAgICAgICAgICBwcm9wcy5jbGFzc05hbWUgPSBjbGFzc05hbWVcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgICAgIHByb3BzLmlkID0gc3VidmFsdWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuYW1lID0gc3VidmFsdWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsYXN0SW5kZXggPSBpbmRleCArIDFcbiAgICAgIHR5cGUgPSBjb2RlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZWxlbWVudCcsXG4gICAgdGFnTmFtZTogbmFtZSxcbiAgICBwcm9wZXJ0aWVzOiBwcm9wcyxcbiAgICBjaGlsZHJlbjogW11cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucGFyc2UgPSBwYXJzZVxuZXhwb3J0cy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcblxudmFyIGVtcHR5ID0gJydcbnZhciBzcGFjZSA9ICcgJ1xudmFyIHdoaXRlU3BhY2UgPSAvWyBcXHRcXG5cXHJcXGZdKy9nXG5cbmZ1bmN0aW9uIHBhcnNlKHZhbHVlKSB7XG4gIHZhciBpbnB1dCA9IFN0cmluZyh2YWx1ZSB8fCBlbXB0eSkudHJpbSgpXG4gIHJldHVybiBpbnB1dCA9PT0gZW1wdHkgPyBbXSA6IGlucHV0LnNwbGl0KHdoaXRlU3BhY2UpXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZXMpIHtcbiAgcmV0dXJuIHZhbHVlcy5qb2luKHNwYWNlKS50cmltKClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLnBhcnNlID0gcGFyc2VcbmV4cG9ydHMuc3RyaW5naWZ5ID0gc3RyaW5naWZ5XG5cbnZhciBjb21tYSA9ICcsJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgZW1wdHkgPSAnJ1xuXG4vLyBQYXJzZSBjb21tYS1zZXBhcmF0ZWQgdG9rZW5zIHRvIGFuIGFycmF5LlxuZnVuY3Rpb24gcGFyc2UodmFsdWUpIHtcbiAgdmFyIHZhbHVlcyA9IFtdXG4gIHZhciBpbnB1dCA9IFN0cmluZyh2YWx1ZSB8fCBlbXB0eSlcbiAgdmFyIGluZGV4ID0gaW5wdXQuaW5kZXhPZihjb21tYSlcbiAgdmFyIGxhc3RJbmRleCA9IDBcbiAgdmFyIGVuZCA9IGZhbHNlXG4gIHZhciB2YWxcblxuICB3aGlsZSAoIWVuZCkge1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIGluZGV4ID0gaW5wdXQubGVuZ3RoXG4gICAgICBlbmQgPSB0cnVlXG4gICAgfVxuXG4gICAgdmFsID0gaW5wdXQuc2xpY2UobGFzdEluZGV4LCBpbmRleCkudHJpbSgpXG5cbiAgICBpZiAodmFsIHx8ICFlbmQpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHZhbClcbiAgICB9XG5cbiAgICBsYXN0SW5kZXggPSBpbmRleCArIDFcbiAgICBpbmRleCA9IGlucHV0LmluZGV4T2YoY29tbWEsIGxhc3RJbmRleClcbiAgfVxuXG4gIHJldHVybiB2YWx1ZXNcbn1cblxuLy8gQ29tcGlsZSBhbiBhcnJheSB0byBjb21tYS1zZXBhcmF0ZWQgdG9rZW5zLlxuLy8gYG9wdGlvbnMucGFkTGVmdGAgKGRlZmF1bHQ6IGB0cnVlYCkgcGFkcyBhIHNwYWNlIGxlZnQgb2YgZWFjaCB0b2tlbiwgYW5kXG4vLyBgb3B0aW9ucy5wYWRSaWdodGAgKGRlZmF1bHQ6IGBmYWxzZWApIHBhZHMgYSBzcGFjZSB0byB0aGUgcmlnaHQgb2YgZWFjaCB0b2tlbi5cbmZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgbGVmdCA9IHNldHRpbmdzLnBhZExlZnQgPT09IGZhbHNlID8gZW1wdHkgOiBzcGFjZVxuICB2YXIgcmlnaHQgPSBzZXR0aW5ncy5wYWRSaWdodCA/IHNwYWNlIDogZW1wdHlcblxuICAvLyBFbnN1cmUgdGhlIGxhc3QgZW1wdHkgZW50cnkgaXMgc2Vlbi5cbiAgaWYgKHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0gPT09IGVtcHR5KSB7XG4gICAgdmFsdWVzID0gdmFsdWVzLmNvbmNhdChlbXB0eSlcbiAgfVxuXG4gIHJldHVybiB2YWx1ZXMuam9pbihyaWdodCArIGNvbW1hICsgbGVmdCkudHJpbSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGZpbmQgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9maW5kJylcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9ub3JtYWxpemUnKVxudmFyIHBhcnNlU2VsZWN0b3IgPSByZXF1aXJlKCdoYXN0LXV0aWwtcGFyc2Utc2VsZWN0b3InKVxudmFyIHNwYWNlcyA9IHJlcXVpcmUoJ3NwYWNlLXNlcGFyYXRlZC10b2tlbnMnKS5wYXJzZVxudmFyIGNvbW1hcyA9IHJlcXVpcmUoJ2NvbW1hLXNlcGFyYXRlZC10b2tlbnMnKS5wYXJzZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbmZ1bmN0aW9uIGZhY3Rvcnkoc2NoZW1hLCBkZWZhdWx0VGFnTmFtZSwgY2FzZVNlbnNpdGl2ZSkge1xuICB2YXIgYWRqdXN0ID0gY2FzZVNlbnNpdGl2ZSA/IGNyZWF0ZUFkanVzdE1hcChjYXNlU2Vuc2l0aXZlKSA6IG51bGxcblxuICByZXR1cm4gaFxuXG4gIC8vIEh5cGVyc2NyaXB0IGNvbXBhdGlibGUgRFNMIGZvciBjcmVhdGluZyB2aXJ0dWFsIGhhc3QgdHJlZXMuXG4gIGZ1bmN0aW9uIGgoc2VsZWN0b3IsIHByb3BlcnRpZXMpIHtcbiAgICB2YXIgbm9kZSA9IHBhcnNlU2VsZWN0b3Ioc2VsZWN0b3IsIGRlZmF1bHRUYWdOYW1lKVxuICAgIHZhciBjaGlsZHJlbiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMilcbiAgICB2YXIgbmFtZSA9IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIHByb3BlcnR5XG5cbiAgICBub2RlLnRhZ05hbWUgPSBhZGp1c3QgJiYgb3duLmNhbGwoYWRqdXN0LCBuYW1lKSA/IGFkanVzdFtuYW1lXSA6IG5hbWVcblxuICAgIGlmIChwcm9wZXJ0aWVzICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcywgbm9kZSkpIHtcbiAgICAgIGNoaWxkcmVuLnVuc2hpZnQocHJvcGVydGllcylcbiAgICAgIHByb3BlcnRpZXMgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnRpZXMpIHtcbiAgICAgIGZvciAocHJvcGVydHkgaW4gcHJvcGVydGllcykge1xuICAgICAgICBhZGRQcm9wZXJ0eShub2RlLnByb3BlcnRpZXMsIHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRDaGlsZChub2RlLmNoaWxkcmVuLCBjaGlsZHJlbilcblxuICAgIGlmIChub2RlLnRhZ05hbWUgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIG5vZGUuY29udGVudCA9IHt0eXBlOiAncm9vdCcsIGNoaWxkcmVuOiBub2RlLmNoaWxkcmVufVxuICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFByb3BlcnR5KHByb3BlcnRpZXMsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgaW5mb1xuICAgIHZhciBwcm9wZXJ0eVxuICAgIHZhciByZXN1bHRcblxuICAgIC8vIElnbm9yZSBudWxseSBhbmQgTmFOIHZhbHVlcy5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGluZm8gPSBmaW5kKHNjaGVtYSwga2V5KVxuICAgIHByb3BlcnR5ID0gaW5mby5wcm9wZXJ0eVxuICAgIHJlc3VsdCA9IHZhbHVlXG5cbiAgICAvLyBIYW5kbGUgbGlzdCB2YWx1ZXMuXG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoaW5mby5zcGFjZVNlcGFyYXRlZCkge1xuICAgICAgICByZXN1bHQgPSBzcGFjZXMocmVzdWx0KVxuICAgICAgfSBlbHNlIGlmIChpbmZvLmNvbW1hU2VwYXJhdGVkKSB7XG4gICAgICAgIHJlc3VsdCA9IGNvbW1hcyhyZXN1bHQpXG4gICAgICB9IGVsc2UgaWYgKGluZm8uY29tbWFPclNwYWNlU2VwYXJhdGVkKSB7XG4gICAgICAgIHJlc3VsdCA9IHNwYWNlcyhjb21tYXMocmVzdWx0KS5qb2luKCcgJykpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWNjZXB0IGBvYmplY3RgIG9uIHN0eWxlLlxuICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3N0eWxlJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHQgPSBzdHlsZShyZXN1bHQpXG4gICAgfVxuXG4gICAgLy8gQ2xhc3MtbmFtZXMgKHdoaWNoIGNhbiBiZSBhZGRlZCBib3RoIG9uIHRoZSBgc2VsZWN0b3JgIGFuZCBoZXJlKS5cbiAgICBpZiAocHJvcGVydHkgPT09ICdjbGFzc05hbWUnICYmIHByb3BlcnRpZXMuY2xhc3NOYW1lKSB7XG4gICAgICByZXN1bHQgPSBwcm9wZXJ0aWVzLmNsYXNzTmFtZS5jb25jYXQocmVzdWx0KVxuICAgIH1cblxuICAgIHByb3BlcnRpZXNbcHJvcGVydHldID0gcGFyc2VQcmltaXRpdmVzKGluZm8sIHByb3BlcnR5LCByZXN1bHQpXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih2YWx1ZSwgbm9kZSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHxcbiAgICAnbGVuZ3RoJyBpbiB2YWx1ZSB8fFxuICAgIGlzTm9kZShub2RlLnRhZ05hbWUsIHZhbHVlKVxuICApXG59XG5cbmZ1bmN0aW9uIGlzTm9kZSh0YWdOYW1lLCB2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHZhbHVlLnR5cGVcblxuICBpZiAodGFnTmFtZSA9PT0gJ2lucHV0JyB8fCAhdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUuY2hpbGRyZW4gPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlLmNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKClcblxuICBpZiAodGFnTmFtZSA9PT0gJ2J1dHRvbicpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZSAhPT0gJ21lbnUnICYmXG4gICAgICB0eXBlICE9PSAnc3VibWl0JyAmJlxuICAgICAgdHlwZSAhPT0gJ3Jlc2V0JyAmJlxuICAgICAgdHlwZSAhPT0gJ2J1dHRvbidcbiAgICApXG4gIH1cblxuICByZXR1cm4gJ3ZhbHVlJyBpbiB2YWx1ZVxufVxuXG5mdW5jdGlvbiBhZGRDaGlsZChub2RlcywgdmFsdWUpIHtcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgbm9kZXMucHVzaCh7dHlwZTogJ3RleHQnLCB2YWx1ZTogU3RyaW5nKHZhbHVlKX0pXG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgIGluZGV4ID0gLTFcbiAgICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhZGRDaGlsZChub2RlcywgdmFsdWVbaW5kZXhdKVxuICAgIH1cblxuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgISgndHlwZScgaW4gdmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBub2RlLCBub2Rlcywgb3Igc3RyaW5nLCBnb3QgYCcgKyB2YWx1ZSArICdgJylcbiAgfVxuXG4gIG5vZGVzLnB1c2godmFsdWUpXG59XG5cbi8vIFBhcnNlIGEgKGxpc3Qgb2YpIHByaW1pdGl2ZXMuXG5mdW5jdGlvbiBwYXJzZVByaW1pdGl2ZXMoaW5mbywgbmFtZSwgdmFsdWUpIHtcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcbiAgdmFyIHJlc3VsdFxuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8ICEoJ2xlbmd0aCcgaW4gdmFsdWUpKSB7XG4gICAgcmV0dXJuIHBhcnNlUHJpbWl0aXZlKGluZm8sIG5hbWUsIHZhbHVlKVxuICB9XG5cbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIGluZGV4ID0gLTFcbiAgcmVzdWx0ID0gW11cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBwYXJzZVByaW1pdGl2ZShpbmZvLCBuYW1lLCB2YWx1ZVtpbmRleF0pXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIFBhcnNlIGEgc2luZ2xlIHByaW1pdGl2ZXMuXG5mdW5jdGlvbiBwYXJzZVByaW1pdGl2ZShpbmZvLCBuYW1lLCB2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdmFsdWVcblxuICBpZiAoaW5mby5udW1iZXIgfHwgaW5mby5wb3NpdGl2ZU51bWJlcikge1xuICAgIGlmICghaXNOYU4ocmVzdWx0KSAmJiByZXN1bHQgIT09ICcnKSB7XG4gICAgICByZXN1bHQgPSBOdW1iZXIocmVzdWx0KVxuICAgIH1cbiAgfSBlbHNlIGlmIChpbmZvLmJvb2xlYW4gfHwgaW5mby5vdmVybG9hZGVkQm9vbGVhbikge1xuICAgIC8vIEFjY2VwdCBgYm9vbGVhbmAgYW5kIGBzdHJpbmdgLlxuICAgIGlmIChcbiAgICAgIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnICYmXG4gICAgICAocmVzdWx0ID09PSAnJyB8fCBub3JtYWxpemUodmFsdWUpID09PSBub3JtYWxpemUobmFtZSkpXG4gICAgKSB7XG4gICAgICByZXN1bHQgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBzdHlsZSh2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGtleVxuXG4gIGZvciAoa2V5IGluIHZhbHVlKSB7XG4gICAgcmVzdWx0LnB1c2goW2tleSwgdmFsdWVba2V5XV0uam9pbignOiAnKSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuam9pbignOyAnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVBZGp1c3RNYXAodmFsdWVzKSB7XG4gIHZhciBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciByZXN1bHQgPSB7fVxuICB2YXIgdmFsdWVcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhbHVlID0gdmFsdWVzW2luZGV4XVxuICAgIHJlc3VsdFt2YWx1ZS50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHNjaGVtYSA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgY2FzZVNlbnNpdGl2ZSA9IHJlcXVpcmUoJy4vc3ZnLWNhc2Utc2Vuc2l0aXZlLXRhZy1uYW1lcy5qc29uJylcbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5JylcblxudmFyIHN2ZyA9IGZhY3Rvcnkoc2NoZW1hLCAnZycsIGNhc2VTZW5zaXRpdmUpXG5zdmcuZGlzcGxheU5hbWUgPSAnc3ZnJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN2Z1xuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBzY2hlbWEgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sJylcbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5JylcblxudmFyIGh0bWwgPSBmYWN0b3J5KHNjaGVtYSwgJ2RpdicpXG5odG1sLmRpc3BsYXlOYW1lID0gJ2h0bWwnXG5cbm1vZHVsZS5leHBvcnRzID0gaHRtbFxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY2NvdW50XG5cbmZ1bmN0aW9uIGNjb3VudCh2YWx1ZSwgY2hhcmFjdGVyKSB7XG4gIHZhciBjb3VudCA9IDBcbiAgdmFyIGluZGV4XG5cbiAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG5cbiAgaWYgKHR5cGVvZiBjaGFyYWN0ZXIgIT09ICdzdHJpbmcnIHx8IGNoYXJhY3Rlci5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGNoYXJhY3RlcicpXG4gIH1cblxuICBpbmRleCA9IHZhbHVlLmluZGV4T2YoY2hhcmFjdGVyKVxuXG4gIHdoaWxlIChpbmRleCAhPT0gLTEpIHtcbiAgICBjb3VudCsrXG4gICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGNoYXJhY3RlciwgaW5kZXggKyAxKVxuICB9XG5cbiAgcmV0dXJuIGNvdW50XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGh0bWwgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sJylcbnZhciBzdmcgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9zdmcnKVxudmFyIGZpbmQgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9maW5kJylcbnZhciBucyA9IHJlcXVpcmUoJ3dlYi1uYW1lc3BhY2VzJylcbnZhciBzID0gcmVxdWlyZSgnaGFzdHNjcmlwdC9zdmcnKVxudmFyIGggPSByZXF1aXJlKCdoYXN0c2NyaXB0JylcbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBjb3VudCA9IHJlcXVpcmUoJ2Njb3VudCcpXG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcHBlclxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gSGFuZGxlcnMuXG52YXIgbWFwID0ge1xuICAnI2RvY3VtZW50Jzogcm9vdCxcbiAgJyNkb2N1bWVudC1mcmFnbWVudCc6IHJvb3QsXG4gICcjdGV4dCc6IHRleHQsXG4gICcjY29tbWVudCc6IGNvbW1lbnQsXG4gICcjZG9jdW1lbnRUeXBlJzogZG9jdHlwZVxufVxuXG4vLyBXcmFwcGVyIHRvIG5vcm1hbGlzZSBvcHRpb25zLlxuZnVuY3Rpb24gd3JhcHBlcihhc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgZmlsZVxuXG4gIGlmIChzZXR0aW5ncy5tZXNzYWdlcykge1xuICAgIGZpbGUgPSBzZXR0aW5nc1xuICAgIHNldHRpbmdzID0ge31cbiAgfSBlbHNlIHtcbiAgICBmaWxlID0gc2V0dGluZ3MuZmlsZVxuICB9XG5cbiAgcmV0dXJuIHRyYW5zZm9ybShhc3QsIHtcbiAgICBzY2hlbWE6IHNldHRpbmdzLnNwYWNlID09PSAnc3ZnJyA/IHN2ZyA6IGh0bWwsXG4gICAgZmlsZTogZmlsZSxcbiAgICB2ZXJib3NlOiBzZXR0aW5ncy52ZXJib3NlLFxuICAgIGxvY2F0aW9uOiBmYWxzZVxuICB9KVxufVxuXG4vLyBUcmFuc2Zvcm0gYSBub2RlLlxuZnVuY3Rpb24gdHJhbnNmb3JtKGFzdCwgY29uZmlnKSB7XG4gIHZhciBzY2hlbWEgPSBjb25maWcuc2NoZW1hXG4gIHZhciBmbiA9IG93bi5jYWxsKG1hcCwgYXN0Lm5vZGVOYW1lKSA/IG1hcFthc3Qubm9kZU5hbWVdIDogZWxlbWVudFxuICB2YXIgY2hpbGRyZW5cbiAgdmFyIG5vZGVcbiAgdmFyIHBvc1xuXG4gIGlmIChmbiA9PT0gZWxlbWVudCkge1xuICAgIGNvbmZpZy5zY2hlbWEgPSBhc3QubmFtZXNwYWNlVVJJID09PSBucy5zdmcgPyBzdmcgOiBodG1sXG4gIH1cblxuICBpZiAoYXN0LmNoaWxkTm9kZXMpIHtcbiAgICBjaGlsZHJlbiA9IG5vZGVzKGFzdC5jaGlsZE5vZGVzLCBjb25maWcpXG4gIH1cblxuICBub2RlID0gZm4oYXN0LCBjaGlsZHJlbiwgY29uZmlnKVxuXG4gIGlmIChhc3Quc291cmNlQ29kZUxvY2F0aW9uICYmIGNvbmZpZy5maWxlKSB7XG4gICAgcG9zID0gbG9jYXRpb24obm9kZSwgYXN0LnNvdXJjZUNvZGVMb2NhdGlvbiwgY29uZmlnKVxuXG4gICAgaWYgKHBvcykge1xuICAgICAgY29uZmlnLmxvY2F0aW9uID0gdHJ1ZVxuICAgICAgbm9kZS5wb3NpdGlvbiA9IHBvc1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpZy5zY2hlbWEgPSBzY2hlbWFcblxuICByZXR1cm4gbm9kZVxufVxuXG4vLyBUcmFuc2Zvcm0gY2hpbGRyZW4uXG5mdW5jdGlvbiBub2RlcyhjaGlsZHJlbiwgY29uZmlnKSB7XG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHJlc3VsdCA9IFtdXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gdHJhbnNmb3JtKGNoaWxkcmVuW2luZGV4XSwgY29uZmlnKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBUcmFuc2Zvcm0gYSBkb2N1bWVudC5cbi8vIFN0b3JlcyBgYXN0LnF1aXJrc01vZGVgIGluIGBub2RlLmRhdGEucXVpcmtzTW9kZWAuXG5mdW5jdGlvbiByb290KGFzdCwgY2hpbGRyZW4sIGNvbmZpZykge1xuICB2YXIgbm9kZSA9IHt0eXBlOiAncm9vdCcsIGNoaWxkcmVuOiBjaGlsZHJlbiwgZGF0YToge319XG4gIHZhciBkb2NcblxuICBub2RlLmRhdGEucXVpcmtzTW9kZSA9IGFzdC5tb2RlID09PSAncXVpcmtzJyB8fCBhc3QubW9kZSA9PT0gJ2xpbWl0ZWQtcXVpcmtzJ1xuXG4gIGlmIChjb25maWcuZmlsZSAmJiBjb25maWcubG9jYXRpb24pIHtcbiAgICBkb2MgPSBTdHJpbmcoY29uZmlnLmZpbGUpXG5cbiAgICBub2RlLnBvc2l0aW9uID0ge1xuICAgICAgc3RhcnQ6IHtsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMH0sXG4gICAgICBlbmQ6IHtcbiAgICAgICAgbGluZTogY291bnQoZG9jLCAnXFxuJykgKyAxLFxuICAgICAgICBjb2x1bW46IGRvYy5sZW5ndGggLSBkb2MubGFzdEluZGV4T2YoJ1xcbicpLFxuICAgICAgICBvZmZzZXQ6IGRvYy5sZW5ndGhcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZVxufVxuXG4vLyBUcmFuc2Zvcm0gYSBkb2N0eXBlLlxuZnVuY3Rpb24gZG9jdHlwZShhc3QpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZG9jdHlwZScsXG4gICAgbmFtZTogYXN0Lm5hbWUgfHwgJycsXG4gICAgcHVibGljOiBhc3QucHVibGljSWQgfHwgbnVsbCxcbiAgICBzeXN0ZW06IGFzdC5zeXN0ZW1JZCB8fCBudWxsXG4gIH1cbn1cblxuLy8gVHJhbnNmb3JtIGEgdGV4dC5cbmZ1bmN0aW9uIHRleHQoYXN0KSB7XG4gIHJldHVybiB7dHlwZTogJ3RleHQnLCB2YWx1ZTogYXN0LnZhbHVlfVxufVxuXG4vLyBUcmFuc2Zvcm0gYSBjb21tZW50LlxuZnVuY3Rpb24gY29tbWVudChhc3QpIHtcbiAgcmV0dXJuIHt0eXBlOiAnY29tbWVudCcsIHZhbHVlOiBhc3QuZGF0YX1cbn1cblxuLy8gVHJhbnNmb3JtIGFuIGVsZW1lbnQuXG5mdW5jdGlvbiBlbGVtZW50KGFzdCwgY2hpbGRyZW4sIGNvbmZpZykge1xuICB2YXIgZm4gPSBjb25maWcuc2NoZW1hLnNwYWNlID09PSAnc3ZnJyA/IHMgOiBoXG4gIHZhciBuYW1lID0gYXN0LnRhZ05hbWVcbiAgdmFyIGF0dHJpYnV0ZXMgPSBhc3QuYXR0cnNcbiAgdmFyIGxlbmd0aCA9IGF0dHJpYnV0ZXMubGVuZ3RoXG4gIHZhciBwcm9wcyA9IHt9XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBhdHRyaWJ1dGVcbiAgdmFyIHByb3BcbiAgdmFyIG5vZGVcbiAgdmFyIHBvc1xuICB2YXIgc3RhcnRcbiAgdmFyIGVuZFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpbmRleF1cbiAgICBwcm9wID0gKGF0dHJpYnV0ZS5wcmVmaXggPyBhdHRyaWJ1dGUucHJlZml4ICsgJzonIDogJycpICsgYXR0cmlidXRlLm5hbWVcbiAgICBwcm9wc1twcm9wXSA9IGF0dHJpYnV0ZS52YWx1ZVxuICB9XG5cbiAgbm9kZSA9IGZuKG5hbWUsIHByb3BzLCBjaGlsZHJlbilcblxuICBpZiAobmFtZSA9PT0gJ3RlbXBsYXRlJyAmJiAnY29udGVudCcgaW4gYXN0KSB7XG4gICAgcG9zID0gYXN0LnNvdXJjZUNvZGVMb2NhdGlvblxuICAgIHN0YXJ0ID0gcG9zICYmIHBvcy5zdGFydFRhZyAmJiBwb3NpdGlvbihwb3Muc3RhcnRUYWcpLmVuZFxuICAgIGVuZCA9IHBvcyAmJiBwb3MuZW5kVGFnICYmIHBvc2l0aW9uKHBvcy5lbmRUYWcpLnN0YXJ0XG5cbiAgICBub2RlLmNvbnRlbnQgPSB0cmFuc2Zvcm0oYXN0LmNvbnRlbnQsIGNvbmZpZylcblxuICAgIGlmICgoc3RhcnQgfHwgZW5kKSAmJiBjb25maWcuZmlsZSkge1xuICAgICAgbm9kZS5jb250ZW50LnBvc2l0aW9uID0ge3N0YXJ0OiBzdGFydCwgZW5kOiBlbmR9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVcbn1cblxuLy8gQ3JlYXRlIGNsZWFuIHBvc2l0aW9uYWwgaW5mb3JtYXRpb24uXG5mdW5jdGlvbiBsb2NhdGlvbihub2RlLCBsb2NhdGlvbiwgY29uZmlnKSB7XG4gIHZhciBzY2hlbWEgPSBjb25maWcuc2NoZW1hXG4gIHZhciB2ZXJib3NlID0gY29uZmlnLnZlcmJvc2VcbiAgdmFyIHBvcyA9IHBvc2l0aW9uKGxvY2F0aW9uKVxuICB2YXIgcmVmZXJlbmNlXG4gIHZhciBhdHRyaWJ1dGVzXG4gIHZhciBhdHRyaWJ1dGVcbiAgdmFyIHByb3BzXG4gIHZhciBwcm9wXG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgcmVmZXJlbmNlID0gbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdXG5cbiAgICAvLyBCdWcgZm9yIHVuY2xvc2VkIHdpdGggY2hpbGRyZW4uXG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9pc3N1ZXMvMTA5Pi5cbiAgICBpZiAoXG4gICAgICAhbG9jYXRpb24uZW5kVGFnICYmXG4gICAgICByZWZlcmVuY2UgJiZcbiAgICAgIHJlZmVyZW5jZS5wb3NpdGlvbiAmJlxuICAgICAgcmVmZXJlbmNlLnBvc2l0aW9uLmVuZFxuICAgICkge1xuICAgICAgcG9zLmVuZCA9IHh0ZW5kKHJlZmVyZW5jZS5wb3NpdGlvbi5lbmQpXG4gICAgfVxuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGF0dHJpYnV0ZXMgPSBsb2NhdGlvbi5hdHRyc1xuICAgICAgcHJvcHMgPSB7fVxuXG4gICAgICBmb3IgKGF0dHJpYnV0ZSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIHByb3AgPSBmaW5kKHNjaGVtYSwgYXR0cmlidXRlKS5wcm9wZXJ0eVxuICAgICAgICBwcm9wc1twcm9wXSA9IHBvc2l0aW9uKGF0dHJpYnV0ZXNbYXR0cmlidXRlXSlcbiAgICAgIH1cblxuICAgICAgbm9kZS5kYXRhID0ge1xuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIG9wZW5pbmc6IHBvc2l0aW9uKGxvY2F0aW9uLnN0YXJ0VGFnKSxcbiAgICAgICAgICBjbG9zaW5nOiBsb2NhdGlvbi5lbmRUYWcgPyBwb3NpdGlvbihsb2NhdGlvbi5lbmRUYWcpIDogbnVsbCxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBvc1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvbihsb2MpIHtcbiAgdmFyIHN0YXJ0ID0gcG9pbnQoe1xuICAgIGxpbmU6IGxvYy5zdGFydExpbmUsXG4gICAgY29sdW1uOiBsb2Muc3RhcnRDb2wsXG4gICAgb2Zmc2V0OiBsb2Muc3RhcnRPZmZzZXRcbiAgfSlcbiAgdmFyIGVuZCA9IHBvaW50KHtcbiAgICBsaW5lOiBsb2MuZW5kTGluZSxcbiAgICBjb2x1bW46IGxvYy5lbmRDb2wsXG4gICAgb2Zmc2V0OiBsb2MuZW5kT2Zmc2V0XG4gIH0pXG4gIHJldHVybiBzdGFydCB8fCBlbmQgPyB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZH0gOiBudWxsXG59XG5cbmZ1bmN0aW9uIHBvaW50KHBvaW50KSB7XG4gIHJldHVybiBwb2ludC5saW5lICYmIHBvaW50LmNvbHVtbiA/IHBvaW50IDogbnVsbFxufVxuIiwiLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvZ3JhbW1hci5odG1sXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdmlzaW9ubWVkaWEvY3NzLXBhcnNlL3B1bGwvNDkjaXNzdWVjb21tZW50LTMwMDg4MDI3XG52YXIgQ09NTUVOVF9SRUdFWCA9IC9cXC9cXCpbXipdKlxcKisoW14vKl1bXipdKlxcKispKlxcLy9nO1xuXG52YXIgTkVXTElORV9SRUdFWCA9IC9cXG4vZztcbnZhciBXSElURVNQQUNFX1JFR0VYID0gL15cXHMqLztcblxuLy8gZGVjbGFyYXRpb25cbnZhciBQUk9QRVJUWV9SRUdFWCA9IC9eKFxcKj9bLSMvKlxcXFxcXHddKyhcXFtbMC05YS16Xy1dK1xcXSk/KVxccyovO1xudmFyIENPTE9OX1JFR0VYID0gL146XFxzKi87XG52YXIgVkFMVUVfUkVHRVggPSAvXigoPzonKD86XFxcXCd8LikqPyd8XCIoPzpcXFxcXCJ8LikqP1wifFxcKFteKV0qP1xcKXxbXn07XSkrKS87XG52YXIgU0VNSUNPTE9OX1JFR0VYID0gL15bO1xcc10qLztcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL1RyaW0jUG9seWZpbGxcbnZhciBUUklNX1JFR0VYID0gL15cXHMrfFxccyskL2c7XG5cbi8vIHN0cmluZ3NcbnZhciBORVdMSU5FID0gJ1xcbic7XG52YXIgRk9SV0FSRF9TTEFTSCA9ICcvJztcbnZhciBBU1RFUklTSyA9ICcqJztcbnZhciBFTVBUWV9TVFJJTkcgPSAnJztcblxuLy8gdHlwZXNcbnZhciBUWVBFX0NPTU1FTlQgPSAnY29tbWVudCc7XG52YXIgVFlQRV9ERUNMQVJBVElPTiA9ICdkZWNsYXJhdGlvbic7XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0eWxlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn1cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHN0eWxlLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygc3R5bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICB9XG5cbiAgaWYgKCFzdHlsZSkgcmV0dXJuIFtdO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbmFsLlxuICAgKi9cbiAgdmFyIGxpbmVubyA9IDE7XG4gIHZhciBjb2x1bW4gPSAxO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgbGluZW5vIGFuZCBjb2x1bW4gYmFzZWQgb24gYHN0cmAuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKHN0cikge1xuICAgIHZhciBsaW5lcyA9IHN0ci5tYXRjaChORVdMSU5FX1JFR0VYKTtcbiAgICBpZiAobGluZXMpIGxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgdmFyIGkgPSBzdHIubGFzdEluZGV4T2YoTkVXTElORSk7XG4gICAgY29sdW1uID0gfmkgPyBzdHIubGVuZ3RoIC0gaSA6IGNvbHVtbiArIHN0ci5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogTWFyayBwb3NpdGlvbiBhbmQgcGF0Y2ggYG5vZGUucG9zaXRpb25gLlxuICAgKlxuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIHBvc2l0aW9uKCkge1xuICAgIHZhciBzdGFydCA9IHsgbGluZTogbGluZW5vLCBjb2x1bW46IGNvbHVtbiB9O1xuICAgIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgICBub2RlLnBvc2l0aW9uID0gbmV3IFBvc2l0aW9uKHN0YXJ0KTtcbiAgICAgIHdoaXRlc3BhY2UoKTtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU3RvcmUgcG9zaXRpb24gaW5mb3JtYXRpb24gZm9yIGEgbm9kZS5cbiAgICpcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBzdGFydFxuICAgKiBAcHJvcGVydHkge09iamVjdH0gZW5kXG4gICAqIEBwcm9wZXJ0eSB7dW5kZWZpbmVkfFN0cmluZ30gc291cmNlXG4gICAqL1xuICBmdW5jdGlvbiBQb3NpdGlvbihzdGFydCkge1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IHsgbGluZTogbGluZW5vLCBjb2x1bW46IGNvbHVtbiB9O1xuICAgIHRoaXMuc291cmNlID0gb3B0aW9ucy5zb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogTm9uLWVudW1lcmFibGUgc291cmNlIHN0cmluZy5cbiAgICovXG4gIFBvc2l0aW9uLnByb3RvdHlwZS5jb250ZW50ID0gc3R5bGU7XG5cbiAgdmFyIGVycm9yc0xpc3QgPSBbXTtcblxuICAvKipcbiAgICogRXJyb3IgYG1zZ2AuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtc2dcbiAgICogQHRocm93cyB7RXJyb3J9XG4gICAqL1xuICBmdW5jdGlvbiBlcnJvcihtc2cpIHtcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgb3B0aW9ucy5zb3VyY2UgKyAnOicgKyBsaW5lbm8gKyAnOicgKyBjb2x1bW4gKyAnOiAnICsgbXNnXG4gICAgKTtcbiAgICBlcnIucmVhc29uID0gbXNnO1xuICAgIGVyci5maWxlbmFtZSA9IG9wdGlvbnMuc291cmNlO1xuICAgIGVyci5saW5lID0gbGluZW5vO1xuICAgIGVyci5jb2x1bW4gPSBjb2x1bW47XG4gICAgZXJyLnNvdXJjZSA9IHN0eWxlO1xuXG4gICAgaWYgKG9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBlcnJvcnNMaXN0LnB1c2goZXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaCBgcmVgIGFuZCByZXR1cm4gY2FwdHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVnRXhwfSByZVxuICAgKiBAcmV0dXJuIHt1bmRlZmluZWR8QXJyYXl9XG4gICAqL1xuICBmdW5jdGlvbiBtYXRjaChyZSkge1xuICAgIHZhciBtID0gcmUuZXhlYyhzdHlsZSk7XG4gICAgaWYgKCFtKSByZXR1cm47XG4gICAgdmFyIHN0ciA9IG1bMF07XG4gICAgdXBkYXRlUG9zaXRpb24oc3RyKTtcbiAgICBzdHlsZSA9IHN0eWxlLnNsaWNlKHN0ci5sZW5ndGgpO1xuICAgIHJldHVybiBtO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIHdoaXRlc3BhY2UuXG4gICAqL1xuICBmdW5jdGlvbiB3aGl0ZXNwYWNlKCkge1xuICAgIG1hdGNoKFdISVRFU1BBQ0VfUkVHRVgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGNvbW1lbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdFtdfSBbcnVsZXNdXG4gICAqIEByZXR1cm4ge09iamVjdFtdfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tbWVudHMocnVsZXMpIHtcbiAgICB2YXIgYztcbiAgICBydWxlcyA9IHJ1bGVzIHx8IFtdO1xuICAgIHdoaWxlICgoYyA9IGNvbW1lbnQoKSkpIHtcbiAgICAgIGlmIChjICE9PSBmYWxzZSkge1xuICAgICAgICBydWxlcy5wdXNoKGMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgY29tbWVudC5cbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKiBAdGhyb3dzIHtFcnJvcn1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnQoKSB7XG4gICAgdmFyIHBvcyA9IHBvc2l0aW9uKCk7XG4gICAgaWYgKEZPUldBUkRfU0xBU0ggIT0gc3R5bGUuY2hhckF0KDApIHx8IEFTVEVSSVNLICE9IHN0eWxlLmNoYXJBdCgxKSkgcmV0dXJuO1xuXG4gICAgdmFyIGkgPSAyO1xuICAgIHdoaWxlIChcbiAgICAgIEVNUFRZX1NUUklORyAhPSBzdHlsZS5jaGFyQXQoaSkgJiZcbiAgICAgIChBU1RFUklTSyAhPSBzdHlsZS5jaGFyQXQoaSkgfHwgRk9SV0FSRF9TTEFTSCAhPSBzdHlsZS5jaGFyQXQoaSArIDEpKVxuICAgICkge1xuICAgICAgKytpO1xuICAgIH1cbiAgICBpICs9IDI7XG5cbiAgICBpZiAoRU1QVFlfU1RSSU5HID09PSBzdHlsZS5jaGFyQXQoaSAtIDEpKSB7XG4gICAgICByZXR1cm4gZXJyb3IoJ0VuZCBvZiBjb21tZW50IG1pc3NpbmcnKTtcbiAgICB9XG5cbiAgICB2YXIgc3RyID0gc3R5bGUuc2xpY2UoMiwgaSAtIDIpO1xuICAgIGNvbHVtbiArPSAyO1xuICAgIHVwZGF0ZVBvc2l0aW9uKHN0cik7XG4gICAgc3R5bGUgPSBzdHlsZS5zbGljZShpKTtcbiAgICBjb2x1bW4gKz0gMjtcblxuICAgIHJldHVybiBwb3Moe1xuICAgICAgdHlwZTogVFlQRV9DT01NRU5ULFxuICAgICAgY29tbWVudDogc3RyXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgZGVjbGFyYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICogQHRocm93cyB7RXJyb3J9XG4gICAqL1xuICBmdW5jdGlvbiBkZWNsYXJhdGlvbigpIHtcbiAgICB2YXIgcG9zID0gcG9zaXRpb24oKTtcblxuICAgIC8vIHByb3BcbiAgICB2YXIgcHJvcCA9IG1hdGNoKFBST1BFUlRZX1JFR0VYKTtcbiAgICBpZiAoIXByb3ApIHJldHVybjtcbiAgICBjb21tZW50KCk7XG5cbiAgICAvLyA6XG4gICAgaWYgKCFtYXRjaChDT0xPTl9SRUdFWCkpIHJldHVybiBlcnJvcihcInByb3BlcnR5IG1pc3NpbmcgJzonXCIpO1xuXG4gICAgLy8gdmFsXG4gICAgdmFyIHZhbCA9IG1hdGNoKFZBTFVFX1JFR0VYKTtcblxuICAgIHZhciByZXQgPSBwb3Moe1xuICAgICAgdHlwZTogVFlQRV9ERUNMQVJBVElPTixcbiAgICAgIHByb3BlcnR5OiB0cmltKHByb3BbMF0ucmVwbGFjZShDT01NRU5UX1JFR0VYLCBFTVBUWV9TVFJJTkcpKSxcbiAgICAgIHZhbHVlOiB2YWxcbiAgICAgICAgPyB0cmltKHZhbFswXS5yZXBsYWNlKENPTU1FTlRfUkVHRVgsIEVNUFRZX1NUUklORykpXG4gICAgICAgIDogRU1QVFlfU1RSSU5HXG4gICAgfSk7XG5cbiAgICAvLyA7XG4gICAgbWF0Y2goU0VNSUNPTE9OX1JFR0VYKTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgZGVjbGFyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAgICovXG4gIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucygpIHtcbiAgICB2YXIgZGVjbHMgPSBbXTtcblxuICAgIGNvbW1lbnRzKGRlY2xzKTtcblxuICAgIC8vIGRlY2xhcmF0aW9uc1xuICAgIHZhciBkZWNsO1xuICAgIHdoaWxlICgoZGVjbCA9IGRlY2xhcmF0aW9uKCkpKSB7XG4gICAgICBpZiAoZGVjbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgZGVjbHMucHVzaChkZWNsKTtcbiAgICAgICAgY29tbWVudHMoZGVjbHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZWNscztcbiAgfVxuXG4gIHdoaXRlc3BhY2UoKTtcbiAgcmV0dXJuIGRlY2xhcmF0aW9ucygpO1xufTtcblxuLyoqXG4gKiBUcmltIGBzdHJgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gdHJpbShzdHIpIHtcbiAgcmV0dXJuIHN0ciA/IHN0ci5yZXBsYWNlKFRSSU1fUkVHRVgsIEVNUFRZX1NUUklORykgOiBFTVBUWV9TVFJJTkc7XG59XG4iLCJ2YXIgcGFyc2UgPSByZXF1aXJlKCdpbmxpbmUtc3R5bGUtcGFyc2VyJyk7XG5cbi8qKlxuICogUGFyc2VzIGlubGluZSBzdHlsZSB0byBvYmplY3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIHJldHVybnMgeyAnbGluZS1oZWlnaHQnOiAnNDInIH1cbiAqIFN0eWxlVG9PYmplY3QoJ2xpbmUtaGVpZ2h0OiA0MjsnKTtcbiAqXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgc3R5bGUgICAgICAtIFRoZSBpbmxpbmUgc3R5bGUuXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gICAgW2l0ZXJhdG9yXSAtIFRoZSBpdGVyYXRvciBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge251bGx8T2JqZWN0fVxuICovXG5mdW5jdGlvbiBTdHlsZVRvT2JqZWN0KHN0eWxlLCBpdGVyYXRvcikge1xuICB2YXIgb3V0cHV0ID0gbnVsbDtcbiAgaWYgKCFzdHlsZSB8fCB0eXBlb2Ygc3R5bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIHZhciBkZWNsYXJhdGlvbjtcbiAgdmFyIGRlY2xhcmF0aW9ucyA9IHBhcnNlKHN0eWxlKTtcbiAgdmFyIGhhc0l0ZXJhdG9yID0gdHlwZW9mIGl0ZXJhdG9yID09PSAnZnVuY3Rpb24nO1xuICB2YXIgcHJvcGVydHk7XG4gIHZhciB2YWx1ZTtcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gZGVjbGFyYXRpb25zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgZGVjbGFyYXRpb24gPSBkZWNsYXJhdGlvbnNbaV07XG4gICAgcHJvcGVydHkgPSBkZWNsYXJhdGlvbi5wcm9wZXJ0eTtcbiAgICB2YWx1ZSA9IGRlY2xhcmF0aW9uLnZhbHVlO1xuXG4gICAgaWYgKGhhc0l0ZXJhdG9yKSB7XG4gICAgICBpdGVyYXRvcihwcm9wZXJ0eSwgdmFsdWUsIGRlY2xhcmF0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICBvdXRwdXQgfHwgKG91dHB1dCA9IHt9KTtcbiAgICAgIG91dHB1dFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0eWxlVG9PYmplY3Q7XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGh0bWwgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sJylcbnZhciBzdmcgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9zdmcnKVxudmFyIGZpbmQgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9maW5kJylcbnZhciBoYXN0VG9SZWFjdCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2hhc3QtdG8tcmVhY3QuanNvbicpXG52YXIgc3BhY2VzID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpXG52YXIgY29tbWFzID0gcmVxdWlyZSgnY29tbWEtc2VwYXJhdGVkLXRva2VucycpXG52YXIgc3R5bGUgPSByZXF1aXJlKCdzdHlsZS10by1vYmplY3QnKVxudmFyIG5zID0gcmVxdWlyZSgnd2ViLW5hbWVzcGFjZXMnKVxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG52YXIgcm9vdCA9IGNvbnZlcnQoJ3Jvb3QnKVxudmFyIGVsZW1lbnQgPSBjb252ZXJ0KCdlbGVtZW50JylcbnZhciB0ZXh0ID0gY29udmVydCgndGV4dCcpXG5cbnZhciBkYXNoZXMgPSAvLShbYS16XSkvZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXBwZXJcblxuZnVuY3Rpb24gd3JhcHBlcihoLCBub2RlLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIHByZWZpeFxuICB2YXIgclxuICB2YXIgdlxuICB2YXIgdmRcblxuICBpZiAodHlwZW9mIGggIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ggaXMgbm90IGEgZnVuY3Rpb24nKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBzZXR0aW5ncyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHNldHRpbmdzID09PSAnYm9vbGVhbicpIHtcbiAgICBwcmVmaXggPSBzZXR0aW5nc1xuICAgIHNldHRpbmdzID0ge31cbiAgfSBlbHNlIHtcbiAgICBwcmVmaXggPSBzZXR0aW5ncy5wcmVmaXhcbiAgfVxuXG4gIHIgPSByZWFjdChoKVxuICB2ID0gdnVlKGgpXG4gIHZkID0gdmRvbShoKVxuXG4gIGlmIChwcmVmaXggPT09IG51bGwgfHwgcHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICBwcmVmaXggPSByID09PSB0cnVlIHx8IHYgPT09IHRydWUgfHwgdmQgPT09IHRydWUgPyAnaC0nIDogZmFsc2VcbiAgfVxuXG4gIGlmIChyb290KG5vZGUpKSB7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGVsZW1lbnQobm9kZS5jaGlsZHJlblswXSkpIHtcbiAgICAgIG5vZGUgPSBub2RlLmNoaWxkcmVuWzBdXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSB7XG4gICAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgICAgdGFnTmFtZTogJ2RpdicsXG4gICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICBjaGlsZHJlbjogbm9kZS5jaGlsZHJlblxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICghZWxlbWVudChub2RlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdFeHBlY3RlZCByb290IG9yIGVsZW1lbnQsIG5vdCBgJyArICgobm9kZSAmJiBub2RlLnR5cGUpIHx8IG5vZGUpICsgJ2AnXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHRvSChoLCBub2RlLCB7XG4gICAgc2NoZW1hOiBzZXR0aW5ncy5zcGFjZSA9PT0gJ3N2ZycgPyBzdmcgOiBodG1sLFxuICAgIHByZWZpeDogcHJlZml4LFxuICAgIGtleTogMCxcbiAgICByZWFjdDogcixcbiAgICB2dWU6IHYsXG4gICAgdmRvbTogdmQsXG4gICAgaHlwZXJzY3JpcHQ6IGh5cGVyc2NyaXB0KGgpXG4gIH0pXG59XG5cbi8vIFRyYW5zZm9ybSBhIGhhc3Qgbm9kZSB0aHJvdWdoIGEgaHlwZXJzY3JpcHQgaW50ZXJmYWNlIHRvICphbnl0aGluZyohXG5mdW5jdGlvbiB0b0goaCwgbm9kZSwgY3R4KSB7XG4gIHZhciBwYXJlbnRTY2hlbWEgPSBjdHguc2NoZW1hXG4gIHZhciBzY2hlbWEgPSBwYXJlbnRTY2hlbWFcbiAgdmFyIG5hbWUgPSBub2RlLnRhZ05hbWVcbiAgdmFyIHByb3BlcnRpZXNcbiAgdmFyIGF0dHJpYnV0ZXNcbiAgdmFyIGNoaWxkcmVuXG4gIHZhciBwcm9wZXJ0eVxuICB2YXIgZWxlbWVudHNcbiAgdmFyIGxlbmd0aFxuICB2YXIgaW5kZXhcbiAgdmFyIHZhbHVlXG4gIHZhciByZXN1bHRcblxuICBpZiAocGFyZW50U2NoZW1hLnNwYWNlID09PSAnaHRtbCcgJiYgbmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ZnJykge1xuICAgIHNjaGVtYSA9IHN2Z1xuICAgIGN0eC5zY2hlbWEgPSBzY2hlbWFcbiAgfVxuXG4gIGlmIChjdHgudmRvbSA9PT0gdHJ1ZSAmJiBzY2hlbWEuc3BhY2UgPT09ICdodG1sJykge1xuICAgIG5hbWUgPSBuYW1lLnRvVXBwZXJDYXNlKClcbiAgfVxuXG4gIHByb3BlcnRpZXMgPSBub2RlLnByb3BlcnRpZXNcbiAgYXR0cmlidXRlcyA9IHt9XG5cbiAgZm9yIChwcm9wZXJ0eSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZXMsIHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSwgY3R4KVxuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiBhdHRyaWJ1dGVzLnN0eWxlID09PSAnc3RyaW5nJyAmJlxuICAgIChjdHgudmRvbSA9PT0gdHJ1ZSB8fCBjdHgudnVlID09PSB0cnVlIHx8IGN0eC5yZWFjdCA9PT0gdHJ1ZSlcbiAgKSB7XG4gICAgLy8gVkRPTSwgVnVlLCBhbmQgUmVhY3QgYWNjZXB0IGBzdHlsZWAgYXMgb2JqZWN0LlxuICAgIGF0dHJpYnV0ZXMuc3R5bGUgPSBwYXJzZVN0eWxlKGF0dHJpYnV0ZXMuc3R5bGUsIG5hbWUpXG4gIH1cblxuICBpZiAoY3R4LnByZWZpeCkge1xuICAgIGN0eC5rZXkrK1xuICAgIGF0dHJpYnV0ZXMua2V5ID0gY3R4LnByZWZpeCArIGN0eC5rZXlcbiAgfVxuXG4gIGlmIChjdHgudmRvbSAmJiBzY2hlbWEuc3BhY2UgIT09ICdodG1sJykge1xuICAgIGF0dHJpYnV0ZXMubmFtZXNwYWNlID0gbnNbc2NoZW1hLnNwYWNlXVxuICB9XG5cbiAgZWxlbWVudHMgPSBbXVxuICBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW5cbiAgbGVuZ3RoID0gY2hpbGRyZW4gPyBjaGlsZHJlbi5sZW5ndGggOiAwXG4gIGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhbHVlID0gY2hpbGRyZW5baW5kZXhdXG5cbiAgICBpZiAoZWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2godG9IKGgsIHZhbHVlLCBjdHgpKVxuICAgIH0gZWxzZSBpZiAodGV4dCh2YWx1ZSkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2godmFsdWUudmFsdWUpXG4gICAgfVxuICB9XG5cbiAgLy8gRW5zdXJlIG5vIFJlYWN0IHdhcm5pbmdzIGFyZSB0cmlnZ2VyZWQgZm9yIHZvaWQgZWxlbWVudHMgaGF2aW5nIGNoaWxkcmVuXG4gIC8vIHBhc3NlZCBpbi5cbiAgcmVzdWx0ID1cbiAgICBlbGVtZW50cy5sZW5ndGggPT09IDAgPyBoKG5hbWUsIGF0dHJpYnV0ZXMpIDogaChuYW1lLCBhdHRyaWJ1dGVzLCBlbGVtZW50cylcblxuICAvLyBSZXN0b3JlIHBhcmVudCBzY2hlbWEuXG4gIGN0eC5zY2hlbWEgPSBwYXJlbnRTY2hlbWFcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGFkZEF0dHJpYnV0ZShwcm9wcywgcHJvcCwgdmFsdWUsIGN0eCkge1xuICB2YXIgaHlwZXJsaWtlID0gY3R4Lmh5cGVyc2NyaXB0IHx8IGN0eC52ZG9tIHx8IGN0eC52dWVcbiAgdmFyIHNjaGVtYSA9IGN0eC5zY2hlbWFcbiAgdmFyIGluZm8gPSBmaW5kKHNjaGVtYSwgcHJvcClcbiAgdmFyIHN1YnByb3BcblxuICAvLyBJZ25vcmUgbnVsbHkgYW5kIGBOYU5gIHZhbHVlcy5cbiAgLy8gSWdub3JlIGBmYWxzZWAgYW5kIGZhbHNleSBrbm93biBib29sZWFucyBmb3IgaHlwZXJsaWtlIERTTHMuXG4gIGlmIChcbiAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICB2YWx1ZSAhPT0gdmFsdWUgfHxcbiAgICAoaHlwZXJsaWtlICYmIHZhbHVlID09PSBmYWxzZSkgfHxcbiAgICAoaHlwZXJsaWtlICYmIGluZm8uYm9vbGVhbiAmJiAhdmFsdWUpXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gdmFsdWUpIHtcbiAgICAvLyBBY2NlcHQgYGFycmF5YC5cbiAgICAvLyBNb3N0IHByb3BzIGFyZSBzcGFjZS1zZXBhcmF0ZWQuXG4gICAgdmFsdWUgPSAoaW5mby5jb21tYVNlcGFyYXRlZCA/IGNvbW1hcyA6IHNwYWNlcykuc3RyaW5naWZ5KHZhbHVlKVxuICB9XG5cbiAgLy8gVHJlYXQgYHRydWVgIGFuZCB0cnV0aHkga25vd24gYm9vbGVhbnMuXG4gIGlmIChpbmZvLmJvb2xlYW4gJiYgY3R4Lmh5cGVyc2NyaXB0ID09PSB0cnVlKSB7XG4gICAgdmFsdWUgPSAnJ1xuICB9XG5cbiAgaWYgKGN0eC52dWUpIHtcbiAgICBpZiAocHJvcCAhPT0gJ3N0eWxlJykge1xuICAgICAgc3VicHJvcCA9ICdhdHRycydcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWluZm8ubXVzdFVzZVByb3BlcnR5KSB7XG4gICAgaWYgKGN0eC52ZG9tID09PSB0cnVlKSB7XG4gICAgICBzdWJwcm9wID0gJ2F0dHJpYnV0ZXMnXG4gICAgfSBlbHNlIGlmIChjdHguaHlwZXJzY3JpcHQgPT09IHRydWUpIHtcbiAgICAgIHN1YnByb3AgPSAnYXR0cnMnXG4gICAgfVxuICB9XG5cbiAgaWYgKHN1YnByb3ApIHtcbiAgICBpZiAocHJvcHNbc3VicHJvcF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvcHNbc3VicHJvcF0gPSB7fVxuICAgIH1cblxuICAgIHByb3BzW3N1YnByb3BdW2luZm8uYXR0cmlidXRlXSA9IHZhbHVlXG4gIH0gZWxzZSBpZiAoY3R4LnJlYWN0ICYmIGluZm8uc3BhY2UpIHtcbiAgICBwcm9wc1toYXN0VG9SZWFjdFtpbmZvLnByb3BlcnR5XSB8fCBpbmZvLnByb3BlcnR5XSA9IHZhbHVlXG4gIH0gZWxzZSB7XG4gICAgcHJvcHNbaW5mby5hdHRyaWJ1dGVdID0gdmFsdWVcbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgaGAgaXMgYHJlYWN0LmNyZWF0ZUVsZW1lbnRgLlxuZnVuY3Rpb24gcmVhY3QoaCkge1xuICB2YXIgbm9kZSA9IGggJiYgaCgnZGl2JylcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgbm9kZSAmJiAoJ19vd25lcicgaW4gbm9kZSB8fCAnX3N0b3JlJyBpbiBub2RlKSAmJiBub2RlLmtleSA9PT0gbnVsbFxuICApXG59XG5cbi8vIENoZWNrIGlmIGBoYCBpcyBgaHlwZXJzY3JpcHRgLlxuZnVuY3Rpb24gaHlwZXJzY3JpcHQoaCkge1xuICByZXR1cm4gQm9vbGVhbihoICYmIGguY29udGV4dCAmJiBoLmNsZWFudXApXG59XG5cbi8vIENoZWNrIGlmIGBoYCBpcyBgdmlydHVhbC1kb20vaGAuXG5mdW5jdGlvbiB2ZG9tKGgpIHtcbiAgcmV0dXJuIGggJiYgaCgnZGl2JykudHlwZSA9PT0gJ1ZpcnR1YWxOb2RlJ1xufVxuXG5mdW5jdGlvbiB2dWUoaCkge1xuICB2YXIgbm9kZSA9IGggJiYgaCgnZGl2JylcbiAgcmV0dXJuIEJvb2xlYW4obm9kZSAmJiBub2RlLmNvbnRleHQgJiYgbm9kZS5jb250ZXh0Ll9pc1Z1ZSlcbn1cblxuZnVuY3Rpb24gcGFyc2VTdHlsZSh2YWx1ZSwgdGFnTmFtZSkge1xuICB2YXIgcmVzdWx0ID0ge31cblxuICB0cnkge1xuICAgIHN0eWxlKHZhbHVlLCBpdGVyYXRvcilcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBlcnJvci5tZXNzYWdlID1cbiAgICAgIHRhZ05hbWUgKyAnW3N0eWxlXScgKyBlcnJvci5tZXNzYWdlLnNsaWNlKCd1bmRlZmluZWQnLmxlbmd0aClcbiAgICB0aHJvdyBlcnJvclxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxuXG4gIGZ1bmN0aW9uIGl0ZXJhdG9yKG5hbWUsIHZhbHVlKSB7XG4gICAgcmVzdWx0W3N0eWxlQ2FzZShuYW1lKV0gPSB2YWx1ZVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0eWxlQ2FzZSh2YWwpIHtcbiAgaWYgKHZhbC5zbGljZSgwLCA0KSA9PT0gJy1tcy0nKSB7XG4gICAgdmFsID0gJ21zLScgKyB2YWwuc2xpY2UoNClcbiAgfVxuXG4gIHJldHVybiB2YWwucmVwbGFjZShkYXNoZXMsIHN0eWxlUmVwbGFjZXIpXG59XG5cbmZ1bmN0aW9uIHN0eWxlUmVwbGFjZXIoJDAsICQxKSB7XG4gIHJldHVybiAkMS50b1VwcGVyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG5cbnZhciBub29wID0gRnVuY3Rpb24ucHJvdG90eXBlXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gSGFuZGxlIHZhbHVlcyBiYXNlZCBvbiBhIHByb3BlcnR5LlxuZnVuY3Rpb24gZmFjdG9yeShrZXksIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuXG4gIGZ1bmN0aW9uIG9uZSh2YWx1ZSkge1xuICAgIHZhciBmbiA9IG9uZS5pbnZhbGlkXG4gICAgdmFyIGhhbmRsZXJzID0gb25lLmhhbmRsZXJzXG5cbiAgICBpZiAodmFsdWUgJiYgb3duLmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgIGZuID0gb3duLmNhbGwoaGFuZGxlcnMsIHZhbHVlW2tleV0pID8gaGFuZGxlcnNbdmFsdWVba2V5XV0gOiBvbmUudW5rbm93blxuICAgIH1cblxuICAgIHJldHVybiAoZm4gfHwgbm9vcCkuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICB9XG5cbiAgb25lLmhhbmRsZXJzID0gc2V0dGluZ3MuaGFuZGxlcnMgfHwge31cbiAgb25lLmludmFsaWQgPSBzZXR0aW5ncy5pbnZhbGlkXG4gIG9uZS51bmtub3duID0gc2V0dGluZ3MudW5rbm93blxuXG4gIHJldHVybiBvbmVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgaHRtbCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2h0bWwnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgZmluZCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2ZpbmQnKVxudmFyIHRvSCA9IHJlcXVpcmUoJ2hhc3QtdG8taHlwZXJzY3JpcHQnKVxudmFyIG5zID0gcmVxdWlyZSgnd2ViLW5hbWVzcGFjZXMnKVxudmFyIHp3aXRjaCA9IHJlcXVpcmUoJ3p3aXRjaCcpXG5cbm1vZHVsZS5leHBvcnRzID0gdHJhbnNmb3JtXG5cbnZhciBpZ25vcmVkU3BhY2VzID0gWydzdmcnLCAnaHRtbCddXG5cbnZhciBvbmUgPSB6d2l0Y2goJ3R5cGUnKVxuXG5vbmUuaGFuZGxlcnMucm9vdCA9IHJvb3Rcbm9uZS5oYW5kbGVycy5lbGVtZW50ID0gZWxlbWVudFxub25lLmhhbmRsZXJzLnRleHQgPSB0ZXh0XG5vbmUuaGFuZGxlcnMuY29tbWVudCA9IGNvbW1lbnRcbm9uZS5oYW5kbGVycy5kb2N0eXBlID0gZG9jdHlwZVxuXG4vLyBUcmFuc2Zvcm0gYSB0cmVlIGZyb20gaGFzdCB0byBQYXJzZTXigJlzIEFTVC5cbmZ1bmN0aW9uIHRyYW5zZm9ybSh0cmVlLCBzcGFjZSkge1xuICByZXR1cm4gb25lKHRyZWUsIHNwYWNlID09PSAnc3ZnJyA/IHN2ZyA6IGh0bWwpXG59XG5cbmZ1bmN0aW9uIHJvb3Qobm9kZSwgc2NoZW1hKSB7XG4gIHZhciBkYXRhID0gbm9kZS5kYXRhIHx8IHt9XG4gIHZhciBtb2RlID0gZGF0YS5xdWlya3NNb2RlID8gJ3F1aXJrcycgOiAnbm8tcXVpcmtzJ1xuXG4gIHJldHVybiBwYXRjaChub2RlLCB7bm9kZU5hbWU6ICcjZG9jdW1lbnQnLCBtb2RlOiBtb2RlfSwgc2NoZW1hKVxufVxuXG5mdW5jdGlvbiBmcmFnbWVudChub2RlLCBzY2hlbWEpIHtcbiAgcmV0dXJuIHBhdGNoKG5vZGUsIHtub2RlTmFtZTogJyNkb2N1bWVudC1mcmFnbWVudCd9LCBzY2hlbWEpXG59XG5cbmZ1bmN0aW9uIGRvY3R5cGUobm9kZSwgc2NoZW1hKSB7XG4gIHJldHVybiBwYXRjaChcbiAgICBub2RlLFxuICAgIHtcbiAgICAgIG5vZGVOYW1lOiAnI2RvY3VtZW50VHlwZScsXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgICBwdWJsaWNJZDogbm9kZS5wdWJsaWMgfHwgJycsXG4gICAgICBzeXN0ZW1JZDogbm9kZS5zeXN0ZW0gfHwgJydcbiAgICB9LFxuICAgIHNjaGVtYVxuICApXG59XG5cbmZ1bmN0aW9uIHRleHQobm9kZSwgc2NoZW1hKSB7XG4gIHJldHVybiBwYXRjaChub2RlLCB7bm9kZU5hbWU6ICcjdGV4dCcsIHZhbHVlOiBub2RlLnZhbHVlfSwgc2NoZW1hKVxufVxuXG5mdW5jdGlvbiBjb21tZW50KG5vZGUsIHNjaGVtYSkge1xuICByZXR1cm4gcGF0Y2gobm9kZSwge25vZGVOYW1lOiAnI2NvbW1lbnQnLCBkYXRhOiBub2RlLnZhbHVlfSwgc2NoZW1hKVxufVxuXG5mdW5jdGlvbiBlbGVtZW50KG5vZGUsIHNjaGVtYSkge1xuICB2YXIgc3BhY2UgPSBzY2hlbWEuc3BhY2VcbiAgdmFyIHNoYWxsb3cgPSB4dGVuZChub2RlLCB7Y2hpbGRyZW46IFtdfSlcblxuICByZXR1cm4gdG9IKGgsIHNoYWxsb3csIHtzcGFjZTogc3BhY2V9KVxuXG4gIGZ1bmN0aW9uIGgobmFtZSwgYXR0cnMpIHtcbiAgICB2YXIgdmFsdWVzID0gW11cbiAgICB2YXIgcDVcbiAgICB2YXIgYXR0clxuICAgIHZhciB2YWx1ZVxuICAgIHZhciBrZXlcbiAgICB2YXIgaW5mb1xuICAgIHZhciBwb3NcblxuICAgIGZvciAoa2V5IGluIGF0dHJzKSB7XG4gICAgICBpbmZvID0gZmluZChzY2hlbWEsIGtleSlcbiAgICAgIGF0dHIgPSBhdHRyc1trZXldXG5cbiAgICAgIGlmIChhdHRyID09PSBmYWxzZSB8fCAoaW5mby5ib29sZWFuICYmICFhdHRyKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IHtuYW1lOiBrZXksIHZhbHVlOiBhdHRyID09PSB0cnVlID8gJycgOiBTdHJpbmcoYXR0cil9XG5cbiAgICAgIGlmIChpbmZvLnNwYWNlICYmIGlnbm9yZWRTcGFjZXMuaW5kZXhPZihpbmZvLnNwYWNlKSA9PT0gLTEpIHtcbiAgICAgICAgcG9zID0ga2V5LmluZGV4T2YoJzonKVxuXG4gICAgICAgIGlmIChwb3MgPT09IC0xKSB7XG4gICAgICAgICAgdmFsdWUucHJlZml4ID0gJydcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZS5uYW1lID0ga2V5LnNsaWNlKHBvcyArIDEpXG4gICAgICAgICAgdmFsdWUucHJlZml4ID0ga2V5LnNsaWNlKDAsIHBvcylcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlLm5hbWVzcGFjZSA9IG5zW2luZm8uc3BhY2VdXG4gICAgICB9XG5cbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKVxuICAgIH1cblxuICAgIHA1ID0gcGF0Y2gobm9kZSwge25vZGVOYW1lOiBuYW1lLCB0YWdOYW1lOiBuYW1lLCBhdHRyczogdmFsdWVzfSwgc2NoZW1hKVxuXG4gICAgaWYgKG5hbWUgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIHA1LmNvbnRlbnQgPSBmcmFnbWVudChzaGFsbG93LmNvbnRlbnQsIHNjaGVtYSlcbiAgICB9XG5cbiAgICByZXR1cm4gcDVcbiAgfVxufVxuXG4vLyBQYXRjaCBzcGVjaWZpYyBwcm9wZXJ0aWVzLlxuZnVuY3Rpb24gcGF0Y2gobm9kZSwgcDUsIHBhcmVudFNjaGVtYSkge1xuICB2YXIgc2NoZW1hID0gcGFyZW50U2NoZW1hXG4gIHZhciBwb3NpdGlvbiA9IG5vZGUucG9zaXRpb25cbiAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlblxuICB2YXIgY2hpbGROb2RlcyA9IFtdXG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbiA/IGNoaWxkcmVuLmxlbmd0aCA6IDBcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGNoaWxkXG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgaWYgKHNjaGVtYS5zcGFjZSA9PT0gJ2h0bWwnICYmIG5vZGUudGFnTmFtZSA9PT0gJ3N2ZycpIHtcbiAgICAgIHNjaGVtYSA9IHN2Z1xuICAgIH1cblxuICAgIHA1Lm5hbWVzcGFjZVVSSSA9IG5zW3NjaGVtYS5zcGFjZV1cbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hpbGQgPSBvbmUoY2hpbGRyZW5baW5kZXhdLCBzY2hlbWEpXG4gICAgY2hpbGQucGFyZW50Tm9kZSA9IHA1XG4gICAgY2hpbGROb2Rlc1tpbmRleF0gPSBjaGlsZFxuICB9XG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnIHx8IG5vZGUudHlwZSA9PT0gJ3Jvb3QnKSB7XG4gICAgcDUuY2hpbGROb2RlcyA9IGNoaWxkTm9kZXNcbiAgfVxuXG4gIGlmIChwb3NpdGlvbiAmJiBwb3NpdGlvbi5zdGFydCAmJiBwb3NpdGlvbi5lbmQpIHtcbiAgICBwNS5zb3VyY2VDb2RlTG9jYXRpb24gPSB7XG4gICAgICBzdGFydExpbmU6IHBvc2l0aW9uLnN0YXJ0LmxpbmUsXG4gICAgICBzdGFydENvbDogcG9zaXRpb24uc3RhcnQuY29sdW1uLFxuICAgICAgc3RhcnRPZmZzZXQ6IHBvc2l0aW9uLnN0YXJ0Lm9mZnNldCxcbiAgICAgIGVuZExpbmU6IHBvc2l0aW9uLmVuZC5saW5lLFxuICAgICAgZW5kQ29sOiBwb3NpdGlvbi5lbmQuY29sdW1uLFxuICAgICAgZW5kT2Zmc2V0OiBwb3NpdGlvbi5lbmQub2Zmc2V0XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHA1XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIFBhcnNlciA9IHJlcXVpcmUoJ3BhcnNlNS9saWIvcGFyc2VyJylcbnZhciBwb3MgPSByZXF1aXJlKCd1bmlzdC11dGlsLXBvc2l0aW9uJylcbnZhciBmcm9tUGFyc2U1ID0gcmVxdWlyZSgnaGFzdC11dGlsLWZyb20tcGFyc2U1JylcbnZhciB0b1BhcnNlNSA9IHJlcXVpcmUoJ2hhc3QtdXRpbC10by1wYXJzZTUnKVxudmFyIHZvaWRzID0gcmVxdWlyZSgnaHRtbC12b2lkLWVsZW1lbnRzJylcbnZhciBucyA9IHJlcXVpcmUoJ3dlYi1uYW1lc3BhY2VzJylcbnZhciB6d2l0Y2ggPSByZXF1aXJlKCd6d2l0Y2gnKVxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXBcblxudmFyIGluVGVtcGxhdGVNb2RlID0gJ0lOX1RFTVBMQVRFX01PREUnXG52YXIgZGF0YVN0YXRlID0gJ0RBVEFfU1RBVEUnXG52YXIgY2hhcmFjdGVyVG9rZW4gPSAnQ0hBUkFDVEVSX1RPS0VOJ1xudmFyIHN0YXJ0VGFnVG9rZW4gPSAnU1RBUlRfVEFHX1RPS0VOJ1xudmFyIGVuZFRhZ1Rva2VuID0gJ0VORF9UQUdfVE9LRU4nXG52YXIgY29tbWVudFRva2VuID0gJ0NPTU1FTlRfVE9LRU4nXG52YXIgZG9jdHlwZVRva2VuID0gJ0RPQ1RZUEVfVE9LRU4nXG5cbnZhciBwYXJzZU9wdGlvbnMgPSB7XG4gIHNvdXJjZUNvZGVMb2NhdGlvbkluZm86IHRydWUsXG4gIHNjcmlwdGluZ0VuYWJsZWQ6IGZhbHNlXG59XG5cbmZ1bmN0aW9uIHdyYXAodHJlZSwgZmlsZSkge1xuICB2YXIgcGFyc2VyID0gbmV3IFBhcnNlcihwYXJzZU9wdGlvbnMpXG4gIHZhciBvbmUgPSB6d2l0Y2goJ3R5cGUnKVxuICB2YXIgdG9rZW5pemVyXG4gIHZhciBwcmVwcm9jZXNzb3JcbiAgdmFyIHBvc1RyYWNrZXJcbiAgdmFyIGxvY2F0aW9uVHJhY2tlclxuICB2YXIgcmVzdWx0XG5cbiAgb25lLmhhbmRsZXJzLnJvb3QgPSByb290XG4gIG9uZS5oYW5kbGVycy5lbGVtZW50ID0gZWxlbWVudFxuICBvbmUuaGFuZGxlcnMudGV4dCA9IHRleHRcbiAgb25lLmhhbmRsZXJzLmNvbW1lbnQgPSBjb21tZW50XG4gIG9uZS5oYW5kbGVycy5kb2N0eXBlID0gZG9jdHlwZVxuICBvbmUuaGFuZGxlcnMucmF3ID0gcmF3XG4gIG9uZS51bmtub3duID0gdW5rbm93blxuXG4gIHJlc3VsdCA9IGZyb21QYXJzZTUoZG9jdW1lbnRNb2RlKHRyZWUpID8gZG9jdW1lbnQoKSA6IGZyYWdtZW50KCksIGZpbGUpXG5cbiAgLy8gVW5wYWNrIGlmIHBvc3NpYmxlIGFuZCB3aGVuIG5vdCBnaXZlbiBhIGByb290YC5cbiAgaWYgKHRyZWUudHlwZSAhPT0gJ3Jvb3QnICYmIHJlc3VsdC5jaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gcmVzdWx0LmNoaWxkcmVuWzBdXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG5cbiAgZnVuY3Rpb24gZnJhZ21lbnQoKSB7XG4gICAgdmFyIGNvbnRleHRcbiAgICB2YXIgbW9ja1xuICAgIHZhciBkb2NcblxuICAgIGNvbnRleHQgPSB7XG4gICAgICBub2RlTmFtZTogJ3RlbXBsYXRlJyxcbiAgICAgIHRhZ05hbWU6ICd0ZW1wbGF0ZScsXG4gICAgICBhdHRyczogW10sXG4gICAgICBuYW1lc3BhY2VVUkk6IG5zLmh0bWwsXG4gICAgICBjaGlsZE5vZGVzOiBbXVxuICAgIH1cblxuICAgIG1vY2sgPSB7XG4gICAgICBub2RlTmFtZTogJ2RvY3VtZW50bW9jaycsXG4gICAgICB0YWdOYW1lOiAnZG9jdW1lbnRtb2NrJyxcbiAgICAgIGF0dHJzOiBbXSxcbiAgICAgIG5hbWVzcGFjZVVSSTogbnMuaHRtbCxcbiAgICAgIGNoaWxkTm9kZXM6IFtdXG4gICAgfVxuXG4gICAgZG9jID0ge1xuICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnQtZnJhZ21lbnQnLFxuICAgICAgY2hpbGROb2RlczogW11cbiAgICB9XG5cbiAgICBwYXJzZXIuX2Jvb3RzdHJhcChtb2NrLCBjb250ZXh0KVxuICAgIHBhcnNlci5fcHVzaFRtcGxJbnNlcnRpb25Nb2RlKGluVGVtcGxhdGVNb2RlKVxuICAgIHBhcnNlci5faW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZygpXG4gICAgcGFyc2VyLl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKVxuICAgIHBhcnNlci5fcmVzZXRJbnNlcnRpb25Nb2RlKClcbiAgICBwYXJzZXIuX2ZpbmRGb3JtSW5GcmFnbWVudENvbnRleHQoKVxuXG4gICAgdG9rZW5pemVyID0gcGFyc2VyLnRva2VuaXplclxuICAgIHByZXByb2Nlc3NvciA9IHRva2VuaXplci5wcmVwcm9jZXNzb3JcbiAgICBsb2NhdGlvblRyYWNrZXIgPSB0b2tlbml6ZXIuX19taXhpbnNbMF1cbiAgICBwb3NUcmFja2VyID0gbG9jYXRpb25UcmFja2VyLnBvc1RyYWNrZXJcblxuICAgIG9uZSh0cmVlKVxuXG4gICAgcGFyc2VyLl9hZG9wdE5vZGVzKG1vY2suY2hpbGROb2Rlc1swXSwgZG9jKVxuXG4gICAgcmV0dXJuIGRvY1xuICB9XG5cbiAgZnVuY3Rpb24gZG9jdW1lbnQoKSB7XG4gICAgdmFyIGRvYyA9IHBhcnNlci50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudCgpXG5cbiAgICBwYXJzZXIuX2Jvb3RzdHJhcChkb2MsIG51bGwpXG4gICAgdG9rZW5pemVyID0gcGFyc2VyLnRva2VuaXplclxuICAgIHByZXByb2Nlc3NvciA9IHRva2VuaXplci5wcmVwcm9jZXNzb3JcbiAgICBsb2NhdGlvblRyYWNrZXIgPSB0b2tlbml6ZXIuX19taXhpbnNbMF1cbiAgICBwb3NUcmFja2VyID0gbG9jYXRpb25UcmFja2VyLnBvc1RyYWNrZXJcblxuICAgIG9uZSh0cmVlKVxuXG4gICAgcmV0dXJuIGRvY1xuICB9XG5cbiAgZnVuY3Rpb24gYWxsKG5vZGVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IDBcbiAgICB2YXIgaW5kZXggPSAtMVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgLSBpbnZhbGlkIG5vZGVzLCBzZWUgcmVoeXBlanMvcmVoeXBlLXJhdyM3LiAqL1xuICAgIGlmIChub2Rlcykge1xuICAgICAgbGVuZ3RoID0gbm9kZXMubGVuZ3RoXG4gICAgfVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIG9uZShub2Rlc1tpbmRleF0pXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcm9vdChub2RlKSB7XG4gICAgYWxsKG5vZGUuY2hpbGRyZW4pXG4gIH1cblxuICBmdW5jdGlvbiBlbGVtZW50KG5vZGUpIHtcbiAgICB2YXIgZW1wdHkgPSB2b2lkcy5pbmRleE9mKG5vZGUudGFnTmFtZSkgIT09IC0xXG5cbiAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbihzdGFydFRhZyhub2RlKSwgbnMuaHRtbClcblxuICAgIGFsbChub2RlLmNoaWxkcmVuKVxuXG4gICAgaWYgKCFlbXB0eSkge1xuICAgICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oZW5kVGFnKG5vZGUpKVxuXG4gICAgICAvLyBQdXQgdGhlIHBhcnNlciBiYWNrIGluIHRoZSBkYXRhIHN0YXRlOiBzb21lIGVsZW1lbnRzLCBsaWtlIHRleHRhcmVhc1xuICAgICAgLy8gYW5kIGlmcmFtZXMsIGNoYW5nZSB0aGUgc3RhdGUuXG4gICAgICAvLyBTZWUgPHN5bnRheC10cmVlL2hhc3QtdXRpbC1yYXcjNz4uXG4gICAgICAvLyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi8yNTI4MTk2L3BhY2thZ2VzL3BhcnNlNS9saWIvdG9rZW5pemVyL2luZGV4LmpzI0wyMjI+LlxuICAgICAgdG9rZW5pemVyLnN0YXRlID0gZGF0YVN0YXRlXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdGV4dChub2RlKSB7XG4gICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oe1xuICAgICAgdHlwZTogY2hhcmFjdGVyVG9rZW4sXG4gICAgICBjaGFyczogbm9kZS52YWx1ZSxcbiAgICAgIGxvY2F0aW9uOiBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBkb2N0eXBlKG5vZGUpIHtcbiAgICB2YXIgcDUgPSB0b1BhcnNlNShub2RlKVxuXG4gICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oe1xuICAgICAgdHlwZTogZG9jdHlwZVRva2VuLFxuICAgICAgbmFtZTogcDUubmFtZSxcbiAgICAgIGZvcmNlUXVpcmtzOiBmYWxzZSxcbiAgICAgIHB1YmxpY0lkOiBwNS5wdWJsaWNJZCxcbiAgICAgIHN5c3RlbUlkOiBwNS5zeXN0ZW1JZCxcbiAgICAgIGxvY2F0aW9uOiBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBjb21tZW50KG5vZGUpIHtcbiAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbih7XG4gICAgICB0eXBlOiBjb21tZW50VG9rZW4sXG4gICAgICBkYXRhOiBub2RlLnZhbHVlLFxuICAgICAgbG9jYXRpb246IGNyZWF0ZVBhcnNlNUxvY2F0aW9uKG5vZGUpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHJhdyhub2RlKSB7XG4gICAgdmFyIHN0YXJ0ID0gcG9zLnN0YXJ0KG5vZGUpXG4gICAgdmFyIHRva2VuXG5cbiAgICAvLyBSZXNldCBwcmVwcm9jZXNzb3I6XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvcHJlcHJvY2Vzc29yLmpzPi5cbiAgICBwcmVwcm9jZXNzb3IuaHRtbCA9IG51bGxcbiAgICBwcmVwcm9jZXNzb3IuZW5kT2ZDaHVua0hpdCA9IGZhbHNlXG4gICAgcHJlcHJvY2Vzc29yLmxhc3RDaHVua1dyaXR0ZW4gPSBmYWxzZVxuICAgIHByZXByb2Nlc3Nvci5sYXN0Q2hhclBvcyA9IC0xXG4gICAgcHJlcHJvY2Vzc29yLnBvcyA9IC0xXG5cbiAgICAvLyBSZXNldCBwcmVwcm9jZXNzb3IgbWl4aW46XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL3Bvc2l0aW9uLXRyYWNraW5nL3ByZXByb2Nlc3Nvci1taXhpbi5qcz4uXG4gICAgcG9zVHJhY2tlci5kcm9wcGVkQnVmZmVyU2l6ZSA9IDBcbiAgICBwb3NUcmFja2VyLmxpbmUgPSBzdGFydC5saW5lXG4gICAgcG9zVHJhY2tlci5jb2wgPSAxXG4gICAgcG9zVHJhY2tlci5vZmZzZXQgPSAwXG4gICAgcG9zVHJhY2tlci5saW5lU3RhcnRQb3MgPSAtc3RhcnQuY29sdW1uICsgMVxuICAgIHBvc1RyYWNrZXIuZHJvcHBlZEJ1ZmZlclNpemUgPSBzdGFydC5vZmZzZXRcblxuICAgIC8vIFJlc2V0IGxvY2F0aW9uIHRyYWNrZXI6XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL2xvY2F0aW9uLWluZm8vdG9rZW5pemVyLW1peGluLmpzPi5cbiAgICBsb2NhdGlvblRyYWNrZXIuY3VycmVudEF0dHJMb2NhdGlvbiA9IG51bGxcbiAgICBsb2NhdGlvblRyYWNrZXIuY3RMb2MgPSBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuXG4gICAgLy8gU2VlIHRoZSBjb2RlIGZvciBgcGFyc2VgIGFuZCBgcGFyc2VGcmFnbWVudGA6XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi9wYXJzZXIvaW5kZXguanMjTDM3MT4uXG4gICAgdG9rZW5pemVyLndyaXRlKG5vZGUudmFsdWUpXG4gICAgcGFyc2VyLl9ydW5QYXJzaW5nTG9vcChudWxsKVxuXG4gICAgLy8gUHJvY2VzcyBmaW5hbCBjaGFyYWN0ZXJzIGlmIHRoZXnigJlyZSBzdGlsbCB0aGVyZSBhZnRlciBoaWJlcm5hdGluZy5cbiAgICAvLyBTaW1pbGFyIHRvOlxuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi8zYmZhN2Q5L3BhY2thZ2VzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9sb2NhdGlvbi1pbmZvL3Rva2VuaXplci1taXhpbi5qcyNMOTU+LlxuICAgIHRva2VuID0gdG9rZW5pemVyLmN1cnJlbnRDaGFyYWN0ZXJUb2tlblxuXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0b2tlbi5sb2NhdGlvbi5lbmRMaW5lID0gcG9zVHJhY2tlci5saW5lXG4gICAgICB0b2tlbi5sb2NhdGlvbi5lbmRDb2wgPSBwb3NUcmFja2VyLmNvbCArIDFcbiAgICAgIHRva2VuLmxvY2F0aW9uLmVuZE9mZnNldCA9IHBvc1RyYWNrZXIub2Zmc2V0ICsgMVxuICAgICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4odG9rZW4pXG4gICAgfVxuXG4gICAgLy8gUmVzZXQgdG9rZW5pemVyOlxuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi84YjAwNDhlL3BhY2thZ2VzL3BhcnNlNS9saWIvdG9rZW5pemVyL2luZGV4LmpzI0wyMTU+LlxuICAgIHRva2VuaXplci5jdXJyZW50VG9rZW4gPSBudWxsXG4gICAgdG9rZW5pemVyLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGxcbiAgICB0b2tlbml6ZXIuY3VycmVudEF0dHIgPSBudWxsXG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhcnRUYWcobm9kZSkge1xuICB2YXIgbG9jYXRpb24gPSBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuXG4gIGxvY2F0aW9uLnN0YXJ0VGFnID0geHRlbmQobG9jYXRpb24pXG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBzdGFydFRhZ1Rva2VuLFxuICAgIHRhZ05hbWU6IG5vZGUudGFnTmFtZSxcbiAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgYXR0cnM6IGF0dHJpYnV0ZXMobm9kZSksXG4gICAgbG9jYXRpb246IGxvY2F0aW9uXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0cmlidXRlcyhub2RlKSB7XG4gIHJldHVybiB0b1BhcnNlNSh7XG4gICAgdGFnTmFtZTogbm9kZS50YWdOYW1lLFxuICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICBwcm9wZXJ0aWVzOiBub2RlLnByb3BlcnRpZXNcbiAgfSkuYXR0cnNcbn1cblxuZnVuY3Rpb24gZW5kVGFnKG5vZGUpIHtcbiAgdmFyIGxvY2F0aW9uID0gY3JlYXRlUGFyc2U1TG9jYXRpb24obm9kZSlcblxuICBsb2NhdGlvbi5lbmRUYWcgPSB4dGVuZChsb2NhdGlvbilcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGVuZFRhZ1Rva2VuLFxuICAgIHRhZ05hbWU6IG5vZGUudGFnTmFtZSxcbiAgICBhdHRyczogW10sXG4gICAgbG9jYXRpb246IGxvY2F0aW9uXG4gIH1cbn1cblxuZnVuY3Rpb24gdW5rbm93bihub2RlKSB7XG4gIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbXBpbGUgYCcgKyBub2RlLnR5cGUgKyAnYCBub2RlJylcbn1cblxuZnVuY3Rpb24gZG9jdW1lbnRNb2RlKG5vZGUpIHtcbiAgdmFyIGhlYWQgPSBub2RlLnR5cGUgPT09ICdyb290JyA/IG5vZGUuY2hpbGRyZW5bMF0gOiBub2RlXG5cbiAgcmV0dXJuIGhlYWQgJiYgKGhlYWQudHlwZSA9PT0gJ2RvY3R5cGUnIHx8IGhlYWQudGFnTmFtZSA9PT0gJ2h0bWwnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKSB7XG4gIHZhciBzdGFydCA9IHBvcy5zdGFydChub2RlKVxuICB2YXIgZW5kID0gcG9zLmVuZChub2RlKVxuXG4gIHJldHVybiB7XG4gICAgc3RhcnRMaW5lOiBzdGFydC5saW5lLFxuICAgIHN0YXJ0Q29sOiBzdGFydC5jb2x1bW4sXG4gICAgc3RhcnRPZmZzZXQ6IHN0YXJ0Lm9mZnNldCxcbiAgICBlbmRMaW5lOiBlbmQubGluZSxcbiAgICBlbmRDb2w6IGVuZC5jb2x1bW4sXG4gICAgZW5kT2Zmc2V0OiBlbmQub2Zmc2V0XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1yYXcnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJhd1xuXG5mdW5jdGlvbiByYXcoKSB7XG4gIHJldHVybiB1dGlsXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0XG5cbmZ1bmN0aW9uIGNvbnZlcnQodGVzdCkge1xuICBpZiAodHlwZW9mIHRlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGVGYWN0b3J5KHRlc3QpXG4gIH1cblxuICBpZiAodGVzdCA9PT0gbnVsbCB8fCB0ZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gb2tcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gKCdsZW5ndGgnIGluIHRlc3QgPyBhbnlGYWN0b3J5IDogbWF0Y2hlc0ZhY3RvcnkpKHRlc3QpXG4gIH1cblxuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdGVzdFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiwgc3RyaW5nLCBvciBvYmplY3QgYXMgdGVzdCcpXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRBbGwodGVzdHMpIHtcbiAgdmFyIHJlc3VsdHMgPSBbXVxuICB2YXIgbGVuZ3RoID0gdGVzdHMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRzW2luZGV4XSA9IGNvbnZlcnQodGVzdHNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHNcbn1cblxuLy8gVXRpbGl0eSBhc3NlcnQgZWFjaCBwcm9wZXJ0eSBpbiBgdGVzdGAgaXMgcmVwcmVzZW50ZWQgaW4gYG5vZGVgLCBhbmQgZWFjaFxuLy8gdmFsdWVzIGFyZSBzdHJpY3RseSBlcXVhbC5cbmZ1bmN0aW9uIG1hdGNoZXNGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIG1hdGNoZXNcblxuICBmdW5jdGlvbiBtYXRjaGVzKG5vZGUpIHtcbiAgICB2YXIga2V5XG5cbiAgICBmb3IgKGtleSBpbiB0ZXN0KSB7XG4gICAgICBpZiAobm9kZVtrZXldICE9PSB0ZXN0W2tleV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG5mdW5jdGlvbiBhbnlGYWN0b3J5KHRlc3RzKSB7XG4gIHZhciBjaGVja3MgPSBjb252ZXJ0QWxsKHRlc3RzKVxuICB2YXIgbGVuZ3RoID0gY2hlY2tzLmxlbmd0aFxuXG4gIHJldHVybiBtYXRjaGVzXG5cbiAgZnVuY3Rpb24gbWF0Y2hlcygpIHtcbiAgICB2YXIgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjaGVja3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIGNvbnZlcnQgYSBzdHJpbmcgaW50byBhIGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBhIGdpdmVuIG5vZGXigJlzIHR5cGVcbi8vIGZvciBzYWlkIHN0cmluZy5cbmZ1bmN0aW9uIHR5cGVGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIHR5cGVcblxuICBmdW5jdGlvbiB0eXBlKG5vZGUpIHtcbiAgICByZXR1cm4gQm9vbGVhbihub2RlICYmIG5vZGUudHlwZSA9PT0gdGVzdClcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIHJldHVybiB0cnVlLlxuZnVuY3Rpb24gb2soKSB7XG4gIHJldHVybiB0cnVlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB2aXNpdFBhcmVudHNcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG52YXIgQ09OVElOVUUgPSB0cnVlXG52YXIgU0tJUCA9ICdza2lwJ1xudmFyIEVYSVQgPSBmYWxzZVxuXG52aXNpdFBhcmVudHMuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXRQYXJlbnRzLlNLSVAgPSBTS0lQXG52aXNpdFBhcmVudHMuRVhJVCA9IEVYSVRcblxuZnVuY3Rpb24gdmlzaXRQYXJlbnRzKHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgdmFyIGlzXG5cbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICBpcyA9IGNvbnZlcnQodGVzdClcblxuICBvbmUodHJlZSwgbnVsbCwgW10pXG5cbiAgLy8gVmlzaXQgYSBzaW5nbGUgbm9kZS5cbiAgZnVuY3Rpb24gb25lKG5vZGUsIGluZGV4LCBwYXJlbnRzKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdXG4gICAgdmFyIHN1YnJlc3VsdFxuXG4gICAgaWYgKCF0ZXN0IHx8IGlzKG5vZGUsIGluZGV4LCBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV0gfHwgbnVsbCkpIHtcbiAgICAgIHJlc3VsdCA9IHRvUmVzdWx0KHZpc2l0b3Iobm9kZSwgcGFyZW50cykpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLmNoaWxkcmVuICYmIHJlc3VsdFswXSAhPT0gU0tJUCkge1xuICAgICAgc3VicmVzdWx0ID0gdG9SZXN1bHQoYWxsKG5vZGUuY2hpbGRyZW4sIHBhcmVudHMuY29uY2F0KG5vZGUpKSlcbiAgICAgIHJldHVybiBzdWJyZXN1bHRbMF0gPT09IEVYSVQgPyBzdWJyZXN1bHQgOiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBWaXNpdCBjaGlsZHJlbiBpbiBgcGFyZW50YC5cbiAgZnVuY3Rpb24gYWxsKGNoaWxkcmVuLCBwYXJlbnRzKSB7XG4gICAgdmFyIG1pbiA9IC0xXG4gICAgdmFyIHN0ZXAgPSByZXZlcnNlID8gLTEgOiAxXG4gICAgdmFyIGluZGV4ID0gKHJldmVyc2UgPyBjaGlsZHJlbi5sZW5ndGggOiBtaW4pICsgc3RlcFxuICAgIHZhciByZXN1bHRcblxuICAgIHdoaWxlIChpbmRleCA+IG1pbiAmJiBpbmRleCA8IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmVzdWx0ID0gb25lKGNoaWxkcmVuW2luZGV4XSwgaW5kZXgsIHBhcmVudHMpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHR5cGVvZiByZXN1bHRbMV0gPT09ICdudW1iZXInID8gcmVzdWx0WzFdIDogaW5kZXggKyBzdGVwXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRvUmVzdWx0KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbQ09OVElOVUUsIHZhbHVlXVxuICB9XG5cbiAgcmV0dXJuIFt2YWx1ZV1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0XG5cbnZhciB2aXNpdFBhcmVudHMgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0LXBhcmVudHMnKVxuXG52YXIgQ09OVElOVUUgPSB2aXNpdFBhcmVudHMuQ09OVElOVUVcbnZhciBTS0lQID0gdmlzaXRQYXJlbnRzLlNLSVBcbnZhciBFWElUID0gdmlzaXRQYXJlbnRzLkVYSVRcblxudmlzaXQuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXQuU0tJUCA9IFNLSVBcbnZpc2l0LkVYSVQgPSBFWElUXG5cbmZ1bmN0aW9uIHZpc2l0KHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICB2aXNpdFBhcmVudHModHJlZSwgdGVzdCwgb3ZlcmxvYWQsIHJldmVyc2UpXG5cbiAgZnVuY3Rpb24gb3ZlcmxvYWQobm9kZSwgcGFyZW50cykge1xuICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV1cbiAgICB2YXIgaW5kZXggPSBwYXJlbnQgPyBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihub2RlKSA6IG51bGxcbiAgICByZXR1cm4gdmlzaXRvcihub2RlLCBpbmRleCwgcGFyZW50KVxuICB9XG59XG4iLCIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJrYXRleFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJrYXRleFwiXSA9IGZhY3RvcnkoKTtcbn0pKCh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcyksIGZ1bmN0aW9uKCkge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4vKioqKioqLyBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vKioqKioqLyBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuLyoqKioqKi8gXHRcdHJldHVybiBucztcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMSk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9zcmMva2F0ZXgubGVzc1xudmFyIGthdGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvU291cmNlTG9jYXRpb24uanNcbi8qKlxuICogTGV4aW5nIG9yIHBhcnNpbmcgcG9zaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgZXJyb3IgcmVwb3J0aW5nLlxuICogVGhpcyBvYmplY3QgaXMgaW1tdXRhYmxlLlxuICovXG52YXIgU291cmNlTG9jYXRpb24gPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICAvLyBUaGUgKyBwcmVmaXggaW5kaWNhdGVzIHRoYXQgdGhlc2UgZmllbGRzIGFyZW4ndCB3cml0ZWFibGVcbiAgLy8gTGV4ZXIgaG9sZGluZyB0aGUgaW5wdXQgc3RyaW5nLlxuICAvLyBTdGFydCBvZmZzZXQsIHplcm8tYmFzZWQgaW5jbHVzaXZlLlxuICAvLyBFbmQgb2Zmc2V0LCB6ZXJvLWJhc2VkIGV4Y2x1c2l2ZS5cbiAgZnVuY3Rpb24gU291cmNlTG9jYXRpb24obGV4ZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICB0aGlzLmxleGVyID0gdm9pZCAwO1xuICAgIHRoaXMuc3RhcnQgPSB2b2lkIDA7XG4gICAgdGhpcy5lbmQgPSB2b2lkIDA7XG4gICAgdGhpcy5sZXhlciA9IGxleGVyO1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZDtcbiAgfVxuICAvKipcbiAgICogTWVyZ2VzIHR3byBgU291cmNlTG9jYXRpb25gcyBmcm9tIGxvY2F0aW9uIHByb3ZpZGVycywgZ2l2ZW4gdGhleSBhcmVcbiAgICogcHJvdmlkZWQgaW4gb3JkZXIgb2YgYXBwZWFyYW5jZS5cbiAgICogLSBSZXR1cm5zIHRoZSBmaXJzdCBvbmUncyBsb2NhdGlvbiBpZiBvbmx5IHRoZSBmaXJzdCBpcyBwcm92aWRlZC5cbiAgICogLSBSZXR1cm5zIGEgbWVyZ2VkIHJhbmdlIG9mIHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgaWYgYm90aCBhcmUgcHJvdmlkZWRcbiAgICogICBhbmQgdGhlaXIgbGV4ZXJzIG1hdGNoLlxuICAgKiAtIE90aGVyd2lzZSwgcmV0dXJucyBudWxsLlxuICAgKi9cblxuXG4gIFNvdXJjZUxvY2F0aW9uLnJhbmdlID0gZnVuY3Rpb24gcmFuZ2UoZmlyc3QsIHNlY29uZCkge1xuICAgIGlmICghc2Vjb25kKSB7XG4gICAgICByZXR1cm4gZmlyc3QgJiYgZmlyc3QubG9jO1xuICAgIH0gZWxzZSBpZiAoIWZpcnN0IHx8ICFmaXJzdC5sb2MgfHwgIXNlY29uZC5sb2MgfHwgZmlyc3QubG9jLmxleGVyICE9PSBzZWNvbmQubG9jLmxleGVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBTb3VyY2VMb2NhdGlvbihmaXJzdC5sb2MubGV4ZXIsIGZpcnN0LmxvYy5zdGFydCwgc2Vjb25kLmxvYy5lbmQpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU291cmNlTG9jYXRpb247XG59KCk7XG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvVG9rZW4uanNcblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVxdWlyZWQgdG8gYnJlYWsgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIFRva2VuLCBMZXhlciwgYW5kXG4gKiBQYXJzZUVycm9yLlxuICovXG5cbi8qKlxuICogVGhlIHJlc3VsdGluZyB0b2tlbiByZXR1cm5lZCBmcm9tIGBsZXhgLlxuICpcbiAqIEl0IGNvbnNpc3RzIG9mIHRoZSB0b2tlbiB0ZXh0IHBsdXMgc29tZSBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAqIFRoZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWxseSBhIHJhbmdlIGluIGFuIGlucHV0IHN0cmluZyxcbiAqIGJ1dCBpbnN0ZWFkIG9mIHJlZmVyZW5jaW5nIHRoZSBiYXJlIGlucHV0IHN0cmluZywgd2UgcmVmZXIgdG8gdGhlIGxleGVyLlxuICogVGhhdCB3YXkgaXQgaXMgcG9zc2libGUgdG8gYXR0YWNoIGV4dHJhIG1ldGFkYXRhIHRvIHRoZSBpbnB1dCBzdHJpbmcsXG4gKiBsaWtlIGZvciBleGFtcGxlIGEgZmlsZSBuYW1lIG9yIHNpbWlsYXIuXG4gKlxuICogVGhlIHBvc2l0aW9uIGluZm9ybWF0aW9uIGlzIG9wdGlvbmFsLCBzbyBpdCBpcyBPSyB0byBjb25zdHJ1Y3Qgc3ludGhldGljXG4gKiB0b2tlbnMgaWYgYXBwcm9wcmlhdGUuIE5vdCBwcm92aWRpbmcgYXZhaWxhYmxlIHBvc2l0aW9uIGluZm9ybWF0aW9uIG1heVxuICogbGVhZCB0byBkZWdyYWRlZCBlcnJvciByZXBvcnRpbmcsIHRob3VnaC5cbiAqL1xudmFyIFRva2VuX1Rva2VuID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVG9rZW4odGV4dCwgLy8gdGhlIHRleHQgb2YgdGhpcyB0b2tlblxuICBsb2MpIHtcbiAgICB0aGlzLnRleHQgPSB2b2lkIDA7XG4gICAgdGhpcy5sb2MgPSB2b2lkIDA7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB0aGlzLmxvYyA9IGxvYztcbiAgfVxuICAvKipcbiAgICogR2l2ZW4gYSBwYWlyIG9mIHRva2VucyAodGhpcyBhbmQgZW5kVG9rZW4pLCBjb21wdXRlIGEgYFRva2VuYCBlbmNvbXBhc3NpbmdcbiAgICogdGhlIHdob2xlIGlucHV0IHJhbmdlIGVuY2xvc2VkIGJ5IHRoZXNlIHR3by5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gVG9rZW4ucHJvdG90eXBlO1xuXG4gIF9wcm90by5yYW5nZSA9IGZ1bmN0aW9uIHJhbmdlKGVuZFRva2VuLCAvLyBsYXN0IHRva2VuIG9mIHRoZSByYW5nZSwgaW5jbHVzaXZlXG4gIHRleHQpIC8vIHRoZSB0ZXh0IG9mIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCB0b2tlblxuICB7XG4gICAgcmV0dXJuIG5ldyBUb2tlbih0ZXh0LCBTb3VyY2VMb2NhdGlvbi5yYW5nZSh0aGlzLCBlbmRUb2tlbikpO1xuICB9O1xuXG4gIHJldHVybiBUb2tlbjtcbn0oKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL1BhcnNlRXJyb3IuanNcblxuXG4vKipcbiAqIFRoaXMgaXMgdGhlIFBhcnNlRXJyb3IgY2xhc3MsIHdoaWNoIGlzIHRoZSBtYWluIGVycm9yIHRocm93biBieSBLYVRlWFxuICogZnVuY3Rpb25zIHdoZW4gc29tZXRoaW5nIGhhcyBnb25lIHdyb25nLiBUaGlzIGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggaW50ZXJuYWxcbiAqIGVycm9ycyBmcm9tIGVycm9ycyBpbiB0aGUgZXhwcmVzc2lvbiB0aGF0IHRoZSB1c2VyIHByb3ZpZGVkLlxuICpcbiAqIElmIHBvc3NpYmxlLCBhIGNhbGxlciBzaG91bGQgcHJvdmlkZSBhIFRva2VuIG9yIFBhcnNlTm9kZSB3aXRoIGluZm9ybWF0aW9uXG4gKiBhYm91dCB3aGVyZSBpbiB0aGUgc291cmNlIHN0cmluZyB0aGUgcHJvYmxlbSBvY2N1cnJlZC5cbiAqL1xudmFyIFBhcnNlRXJyb3IgPSAvLyBFcnJvciBwb3NpdGlvbiBiYXNlZCBvbiBwYXNzZWQtaW4gVG9rZW4gb3IgUGFyc2VOb2RlLlxuZnVuY3Rpb24gUGFyc2VFcnJvcihtZXNzYWdlLCAvLyBUaGUgZXJyb3IgbWVzc2FnZVxudG9rZW4pIC8vIEFuIG9iamVjdCBwcm92aWRpbmcgcG9zaXRpb24gaW5mb3JtYXRpb25cbntcbiAgdGhpcy5wb3NpdGlvbiA9IHZvaWQgMDtcbiAgdmFyIGVycm9yID0gXCJLYVRlWCBwYXJzZSBlcnJvcjogXCIgKyBtZXNzYWdlO1xuICB2YXIgc3RhcnQ7XG4gIHZhciBsb2MgPSB0b2tlbiAmJiB0b2tlbi5sb2M7XG5cbiAgaWYgKGxvYyAmJiBsb2Muc3RhcnQgPD0gbG9jLmVuZCkge1xuICAgIC8vIElmIHdlIGhhdmUgdGhlIGlucHV0IGFuZCBhIHBvc2l0aW9uLCBtYWtlIHRoZSBlcnJvciBhIGJpdCBmYW5jaWVyXG4gICAgLy8gR2V0IHRoZSBpbnB1dFxuICAgIHZhciBpbnB1dCA9IGxvYy5sZXhlci5pbnB1dDsgLy8gUHJlcGVuZCBzb21lIGluZm9ybWF0aW9uXG5cbiAgICBzdGFydCA9IGxvYy5zdGFydDtcbiAgICB2YXIgZW5kID0gbG9jLmVuZDtcblxuICAgIGlmIChzdGFydCA9PT0gaW5wdXQubGVuZ3RoKSB7XG4gICAgICBlcnJvciArPSBcIiBhdCBlbmQgb2YgaW5wdXQ6IFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvciArPSBcIiBhdCBwb3NpdGlvbiBcIiArIChzdGFydCArIDEpICsgXCI6IFwiO1xuICAgIH0gLy8gVW5kZXJsaW5lIHRva2VuIGluIHF1ZXN0aW9uIHVzaW5nIGNvbWJpbmluZyB1bmRlcnNjb3Jlc1xuXG5cbiAgICB2YXIgdW5kZXJsaW5lZCA9IGlucHV0LnNsaWNlKHN0YXJ0LCBlbmQpLnJlcGxhY2UoL1teXS9nLCBcIiQmXFx1MDMzMlwiKTsgLy8gRXh0cmFjdCBzb21lIGNvbnRleHQgZnJvbSB0aGUgaW5wdXQgYW5kIGFkZCBpdCB0byB0aGUgZXJyb3JcblxuICAgIHZhciBsZWZ0O1xuXG4gICAgaWYgKHN0YXJ0ID4gMTUpIHtcbiAgICAgIGxlZnQgPSBcIuKAplwiICsgaW5wdXQuc2xpY2Uoc3RhcnQgLSAxNSwgc3RhcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZWZ0ID0gaW5wdXQuc2xpY2UoMCwgc3RhcnQpO1xuICAgIH1cblxuICAgIHZhciByaWdodDtcblxuICAgIGlmIChlbmQgKyAxNSA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgcmlnaHQgPSBpbnB1dC5zbGljZShlbmQsIGVuZCArIDE1KSArIFwi4oCmXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJpZ2h0ID0gaW5wdXQuc2xpY2UoZW5kKTtcbiAgICB9XG5cbiAgICBlcnJvciArPSBsZWZ0ICsgdW5kZXJsaW5lZCArIHJpZ2h0O1xuICB9IC8vIFNvbWUgaGFja2VyeSB0byBtYWtlIFBhcnNlRXJyb3IgYSBwcm90b3R5cGUgb2YgRXJyb3JcbiAgLy8gU2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzg0NjA3NTNcblxuXG4gIHZhciBzZWxmID0gbmV3IEVycm9yKGVycm9yKTtcbiAgc2VsZi5uYW1lID0gXCJQYXJzZUVycm9yXCI7IC8vICRGbG93Rml4TWVcblxuICBzZWxmLl9fcHJvdG9fXyA9IFBhcnNlRXJyb3IucHJvdG90eXBlOyAvLyAkRmxvd0ZpeE1lXG5cbiAgc2VsZi5wb3NpdGlvbiA9IHN0YXJ0O1xuICByZXR1cm4gc2VsZjtcbn07IC8vICRGbG93Rml4TWUgTW9yZSBoYWNrZXJ5XG5cblxuUGFyc2VFcnJvci5wcm90b3R5cGUuX19wcm90b19fID0gRXJyb3IucHJvdG90eXBlO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX1BhcnNlRXJyb3IgPSAoUGFyc2VFcnJvcik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy91dGlscy5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIHdoaWNoIGFyZSB1c2VmdWwgaW4gb3RoZXJcbiAqIGZpbGVzLlxuICovXG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBjb250YWluZWQgaW4gYSBsaXN0XG4gKi9cbnZhciBjb250YWlucyA9IGZ1bmN0aW9uIGNvbnRhaW5zKGxpc3QsIGVsZW0pIHtcbiAgcmV0dXJuIGxpc3QuaW5kZXhPZihlbGVtKSAhPT0gLTE7XG59O1xuLyoqXG4gKiBQcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSBpZiBhIHNldHRpbmcgaXMgdW5kZWZpbmVkXG4gKiBOT1RFOiBDb3VsZG4ndCB1c2UgYFRgIGFzIHRoZSBvdXRwdXQgdHlwZSBkdWUgdG8gZmFjZWJvb2svZmxvdyM1MDIyLlxuICovXG5cblxudmFyIGRlZmx0ID0gZnVuY3Rpb24gZGVmbHQoc2V0dGluZywgZGVmYXVsdElmVW5kZWZpbmVkKSB7XG4gIHJldHVybiBzZXR0aW5nID09PSB1bmRlZmluZWQgPyBkZWZhdWx0SWZVbmRlZmluZWQgOiBzZXR0aW5nO1xufTsgLy8gaHlwaGVuYXRlIGFuZCBlc2NhcGUgYWRhcHRlZCBmcm9tIEZhY2Vib29rJ3MgUmVhY3QgdW5kZXIgQXBhY2hlIDIgbGljZW5zZVxuXG5cbnZhciB1cHBlcmNhc2UgPSAvKFtBLVpdKS9nO1xuXG52YXIgaHlwaGVuYXRlID0gZnVuY3Rpb24gaHlwaGVuYXRlKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UodXBwZXJjYXNlLCBcIi0kMVwiKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIEVTQ0FQRV9MT09LVVAgPSB7XG4gIFwiJlwiOiBcIiZhbXA7XCIsXG4gIFwiPlwiOiBcIiZndDtcIixcbiAgXCI8XCI6IFwiJmx0O1wiLFxuICBcIlxcXCJcIjogXCImcXVvdDtcIixcbiAgXCInXCI6IFwiJiN4Mjc7XCJcbn07XG52YXIgRVNDQVBFX1JFR0VYID0gL1smPjxcIiddL2c7XG4vKipcbiAqIEVzY2FwZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICovXG5cbmZ1bmN0aW9uIHV0aWxzX2VzY2FwZSh0ZXh0KSB7XG4gIHJldHVybiBTdHJpbmcodGV4dCkucmVwbGFjZShFU0NBUEVfUkVHRVgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBFU0NBUEVfTE9PS1VQW21hdGNoXTtcbiAgfSk7XG59XG4vKipcbiAqIFNvbWV0aW1lcyB3ZSB3YW50IHRvIHB1bGwgb3V0IHRoZSBpbm5lcm1vc3QgZWxlbWVudCBvZiBhIGdyb3VwLiBJbiBtb3N0XG4gKiBjYXNlcywgdGhpcyB3aWxsIGp1c3QgYmUgdGhlIGdyb3VwIGl0c2VsZiwgYnV0IHdoZW4gb3JkZ3JvdXBzIGFuZCBjb2xvcnMgaGF2ZVxuICogYSBzaW5nbGUgZWxlbWVudCwgd2Ugd2FudCB0byBwdWxsIHRoYXQgb3V0LlxuICovXG5cblxudmFyIGdldEJhc2VFbGVtID0gZnVuY3Rpb24gZ2V0QmFzZUVsZW0oZ3JvdXApIHtcbiAgaWYgKGdyb3VwLnR5cGUgPT09IFwib3JkZ3JvdXBcIikge1xuICAgIGlmIChncm91cC5ib2R5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLmJvZHlbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfVxuICB9IGVsc2UgaWYgKGdyb3VwLnR5cGUgPT09IFwiY29sb3JcIikge1xuICAgIGlmIChncm91cC5ib2R5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLmJvZHlbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfVxuICB9IGVsc2UgaWYgKGdyb3VwLnR5cGUgPT09IFwiZm9udFwiKSB7XG4gICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLmJvZHkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBncm91cDtcbiAgfVxufTtcbi8qKlxuICogVGVYYm9vayBhbGdvcml0aG1zIG9mdGVuIHJlZmVyZW5jZSBcImNoYXJhY3RlciBib3hlc1wiLCB3aGljaCBhcmUgc2ltcGx5IGdyb3Vwc1xuICogd2l0aCBhIHNpbmdsZSBjaGFyYWN0ZXIgaW4gdGhlbS4gVG8gZGVjaWRlIGlmIHNvbWV0aGluZyBpcyBhIGNoYXJhY3RlciBib3gsXG4gKiB3ZSBmaW5kIGl0cyBpbm5lcm1vc3QgZ3JvdXAsIGFuZCBzZWUgaWYgaXQgaXMgYSBzaW5nbGUgY2hhcmFjdGVyLlxuICovXG5cblxudmFyIHV0aWxzX2lzQ2hhcmFjdGVyQm94ID0gZnVuY3Rpb24gaXNDaGFyYWN0ZXJCb3goZ3JvdXApIHtcbiAgdmFyIGJhc2VFbGVtID0gZ2V0QmFzZUVsZW0oZ3JvdXApOyAvLyBUaGVzZSBhcmUgYWxsIHRoZXkgdHlwZXMgb2YgZ3JvdXBzIHdoaWNoIGhvbGQgc2luZ2xlIGNoYXJhY3RlcnNcblxuICByZXR1cm4gYmFzZUVsZW0udHlwZSA9PT0gXCJtYXRob3JkXCIgfHwgYmFzZUVsZW0udHlwZSA9PT0gXCJ0ZXh0b3JkXCIgfHwgYmFzZUVsZW0udHlwZSA9PT0gXCJhdG9tXCI7XG59O1xuXG52YXIgYXNzZXJ0ID0gZnVuY3Rpb24gYXNzZXJ0KHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG5vbi1udWxsLCBidXQgZ290ICcgKyBTdHJpbmcodmFsdWUpKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG4vKipcbiAqIFJldHVybiB0aGUgcHJvdG9jb2wgb2YgYSBVUkwsIG9yIFwiX3JlbGF0aXZlXCIgaWYgdGhlIFVSTCBkb2VzIG5vdCBzcGVjaWZ5IGFcbiAqIHByb3RvY29sIChhbmQgdGh1cyBpcyByZWxhdGl2ZSkuXG4gKi9cblxudmFyIHByb3RvY29sRnJvbVVybCA9IGZ1bmN0aW9uIHByb3RvY29sRnJvbVVybCh1cmwpIHtcbiAgdmFyIHByb3RvY29sID0gL15cXHMqKFteXFxcXC8jXSo/KSg/Ojp8JiMwKjU4fCYjeDAqM2EpL2kuZXhlYyh1cmwpO1xuICByZXR1cm4gcHJvdG9jb2wgIT0gbnVsbCA/IHByb3RvY29sWzFdIDogXCJfcmVsYXRpdmVcIjtcbn07XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB1dGlscyA9ICh7XG4gIGNvbnRhaW5zOiBjb250YWlucyxcbiAgZGVmbHQ6IGRlZmx0LFxuICBlc2NhcGU6IHV0aWxzX2VzY2FwZSxcbiAgaHlwaGVuYXRlOiBoeXBoZW5hdGUsXG4gIGdldEJhc2VFbGVtOiBnZXRCYXNlRWxlbSxcbiAgaXNDaGFyYWN0ZXJCb3g6IHV0aWxzX2lzQ2hhcmFjdGVyQm94LFxuICBwcm90b2NvbEZyb21Vcmw6IHByb3RvY29sRnJvbVVybFxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9TZXR0aW5ncy5qc1xuLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYSBtb2R1bGUgZm9yIHN0b3Jpbmcgc2V0dGluZ3MgcGFzc2VkIGludG8gS2FUZVguIEl0IGNvcnJlY3RseSBoYW5kbGVzXG4gKiBkZWZhdWx0IHNldHRpbmdzLlxuICovXG5cblxuXG5cbi8qKlxuICogVGhlIG1haW4gU2V0dGluZ3Mgb2JqZWN0XG4gKlxuICogVGhlIGN1cnJlbnQgb3B0aW9ucyBzdG9yZWQgYXJlOlxuICogIC0gZGlzcGxheU1vZGU6IFdoZXRoZXIgdGhlIGV4cHJlc3Npb24gc2hvdWxkIGJlIHR5cGVzZXQgYXMgaW5saW5lIG1hdGhcbiAqICAgICAgICAgICAgICAgICAoZmFsc2UsIHRoZSBkZWZhdWx0KSwgbWVhbmluZyB0aGF0IHRoZSBtYXRoIHN0YXJ0cyBpblxuICogICAgICAgICAgICAgICAgIFxcdGV4dHN0eWxlIGFuZCBpcyBwbGFjZWQgaW4gYW4gaW5saW5lLWJsb2NrKTsgb3IgYXMgZGlzcGxheVxuICogICAgICAgICAgICAgICAgIG1hdGggKHRydWUpLCBtZWFuaW5nIHRoYXQgdGhlIG1hdGggc3RhcnRzIGluIFxcZGlzcGxheXN0eWxlXG4gKiAgICAgICAgICAgICAgICAgYW5kIGlzIHBsYWNlZCBpbiBhIGJsb2NrIHdpdGggdmVydGljYWwgbWFyZ2luLlxuICovXG52YXIgU2V0dGluZ3NfU2V0dGluZ3MgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTZXR0aW5ncyhvcHRpb25zKSB7XG4gICAgdGhpcy5kaXNwbGF5TW9kZSA9IHZvaWQgMDtcbiAgICB0aGlzLm91dHB1dCA9IHZvaWQgMDtcbiAgICB0aGlzLmxlcW5vID0gdm9pZCAwO1xuICAgIHRoaXMuZmxlcW4gPSB2b2lkIDA7XG4gICAgdGhpcy50aHJvd09uRXJyb3IgPSB2b2lkIDA7XG4gICAgdGhpcy5lcnJvckNvbG9yID0gdm9pZCAwO1xuICAgIHRoaXMubWFjcm9zID0gdm9pZCAwO1xuICAgIHRoaXMubWluUnVsZVRoaWNrbmVzcyA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbG9ySXNUZXh0Q29sb3IgPSB2b2lkIDA7XG4gICAgdGhpcy5zdHJpY3QgPSB2b2lkIDA7XG4gICAgdGhpcy50cnVzdCA9IHZvaWQgMDtcbiAgICB0aGlzLm1heFNpemUgPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhFeHBhbmQgPSB2b2lkIDA7XG4gICAgLy8gYWxsb3cgbnVsbCBvcHRpb25zXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgdGhpcy5kaXNwbGF5TW9kZSA9IHV0aWxzLmRlZmx0KG9wdGlvbnMuZGlzcGxheU1vZGUsIGZhbHNlKTtcbiAgICB0aGlzLm91dHB1dCA9IHV0aWxzLmRlZmx0KG9wdGlvbnMub3V0cHV0LCBcImh0bWxBbmRNYXRobWxcIik7XG4gICAgdGhpcy5sZXFubyA9IHV0aWxzLmRlZmx0KG9wdGlvbnMubGVxbm8sIGZhbHNlKTtcbiAgICB0aGlzLmZsZXFuID0gdXRpbHMuZGVmbHQob3B0aW9ucy5mbGVxbiwgZmFsc2UpO1xuICAgIHRoaXMudGhyb3dPbkVycm9yID0gdXRpbHMuZGVmbHQob3B0aW9ucy50aHJvd09uRXJyb3IsIHRydWUpO1xuICAgIHRoaXMuZXJyb3JDb2xvciA9IHV0aWxzLmRlZmx0KG9wdGlvbnMuZXJyb3JDb2xvciwgXCIjY2MwMDAwXCIpO1xuICAgIHRoaXMubWFjcm9zID0gb3B0aW9ucy5tYWNyb3MgfHwge307XG4gICAgdGhpcy5taW5SdWxlVGhpY2tuZXNzID0gTWF0aC5tYXgoMCwgdXRpbHMuZGVmbHQob3B0aW9ucy5taW5SdWxlVGhpY2tuZXNzLCAwKSk7XG4gICAgdGhpcy5jb2xvcklzVGV4dENvbG9yID0gdXRpbHMuZGVmbHQob3B0aW9ucy5jb2xvcklzVGV4dENvbG9yLCBmYWxzZSk7XG4gICAgdGhpcy5zdHJpY3QgPSB1dGlscy5kZWZsdChvcHRpb25zLnN0cmljdCwgXCJ3YXJuXCIpO1xuICAgIHRoaXMudHJ1c3QgPSB1dGlscy5kZWZsdChvcHRpb25zLnRydXN0LCBmYWxzZSk7XG4gICAgdGhpcy5tYXhTaXplID0gTWF0aC5tYXgoMCwgdXRpbHMuZGVmbHQob3B0aW9ucy5tYXhTaXplLCBJbmZpbml0eSkpO1xuICAgIHRoaXMubWF4RXhwYW5kID0gTWF0aC5tYXgoMCwgdXRpbHMuZGVmbHQob3B0aW9ucy5tYXhFeHBhbmQsIDEwMDApKTtcbiAgfVxuICAvKipcbiAgICogUmVwb3J0IG5vbnN0cmljdCAobm9uLUxhVGVYLWNvbXBhdGlibGUpIGlucHV0LlxuICAgKiBDYW4gc2FmZWx5IG5vdCBiZSBjYWxsZWQgaWYgYHRoaXMuc3RyaWN0YCBpcyBmYWxzZSBpbiBKYXZhU2NyaXB0LlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBTZXR0aW5ncy5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnJlcG9ydE5vbnN0cmljdCA9IGZ1bmN0aW9uIHJlcG9ydE5vbnN0cmljdChlcnJvckNvZGUsIGVycm9yTXNnLCB0b2tlbikge1xuICAgIHZhciBzdHJpY3QgPSB0aGlzLnN0cmljdDtcblxuICAgIGlmICh0eXBlb2Ygc3RyaWN0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIC8vIEFsbG93IHJldHVybiB2YWx1ZSBvZiBzdHJpY3QgZnVuY3Rpb24gdG8gYmUgYm9vbGVhbiBvciBzdHJpbmdcbiAgICAgIC8vIChvciBudWxsL3VuZGVmaW5lZCwgbWVhbmluZyBubyBmdXJ0aGVyIHByb2Nlc3NpbmcpLlxuICAgICAgc3RyaWN0ID0gc3RyaWN0KGVycm9yQ29kZSwgZXJyb3JNc2csIHRva2VuKTtcbiAgICB9XG5cbiAgICBpZiAoIXN0cmljdCB8fCBzdHJpY3QgPT09IFwiaWdub3JlXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHN0cmljdCA9PT0gdHJ1ZSB8fCBzdHJpY3QgPT09IFwiZXJyb3JcIikge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTGFUZVgtaW5jb21wYXRpYmxlIGlucHV0IGFuZCBzdHJpY3QgbW9kZSBpcyBzZXQgdG8gJ2Vycm9yJzogXCIgKyAoZXJyb3JNc2cgKyBcIiBbXCIgKyBlcnJvckNvZGUgKyBcIl1cIiksIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHN0cmljdCA9PT0gXCJ3YXJuXCIpIHtcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvICd3YXJuJzogXCIgKyAoZXJyb3JNc2cgKyBcIiBbXCIgKyBlcnJvckNvZGUgKyBcIl1cIikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3b24ndCBoYXBwZW4gaW4gdHlwZS1zYWZlIGNvZGVcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvIFwiICsgKFwidW5yZWNvZ25pemVkICdcIiArIHN0cmljdCArIFwiJzogXCIgKyBlcnJvck1zZyArIFwiIFtcIiArIGVycm9yQ29kZSArIFwiXVwiKSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRvIGFwcGx5IHN0cmljdCAoTGFUZVgtYWRoZXJpbmcpIGJlaGF2aW9yIGZvciB1bnVzdWFsXG4gICAqIGlucHV0IChsaWtlIGBcXFxcYCkuICBVbmxpa2UgYG5vbnN0cmljdGAsIHdpbGwgbm90IHRocm93IGFuIGVycm9yO1xuICAgKiBpbnN0ZWFkLCBcImVycm9yXCIgdHJhbnNsYXRlcyB0byBhIHJldHVybiB2YWx1ZSBvZiBgdHJ1ZWAsIHdoaWxlIFwiaWdub3JlXCJcbiAgICogdHJhbnNsYXRlcyB0byBhIHJldHVybiB2YWx1ZSBvZiBgZmFsc2VgLiAgTWF5IHN0aWxsIHByaW50IGEgd2FybmluZzpcbiAgICogXCJ3YXJuXCIgcHJpbnRzIGEgd2FybmluZyBhbmQgcmV0dXJucyBgZmFsc2VgLlxuICAgKiBUaGlzIGlzIGZvciB0aGUgc2Vjb25kIGNhdGVnb3J5IG9mIGBlcnJvckNvZGVgcyBsaXN0ZWQgaW4gdGhlIFJFQURNRS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8udXNlU3RyaWN0QmVoYXZpb3IgPSBmdW5jdGlvbiB1c2VTdHJpY3RCZWhhdmlvcihlcnJvckNvZGUsIGVycm9yTXNnLCB0b2tlbikge1xuICAgIHZhciBzdHJpY3QgPSB0aGlzLnN0cmljdDtcblxuICAgIGlmICh0eXBlb2Ygc3RyaWN0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIC8vIEFsbG93IHJldHVybiB2YWx1ZSBvZiBzdHJpY3QgZnVuY3Rpb24gdG8gYmUgYm9vbGVhbiBvciBzdHJpbmdcbiAgICAgIC8vIChvciBudWxsL3VuZGVmaW5lZCwgbWVhbmluZyBubyBmdXJ0aGVyIHByb2Nlc3NpbmcpLlxuICAgICAgLy8gQnV0IGNhdGNoIGFueSBleGNlcHRpb25zIHRocm93biBieSBmdW5jdGlvbiwgdHJlYXRpbmcgdGhlbVxuICAgICAgLy8gbGlrZSBcImVycm9yXCIuXG4gICAgICB0cnkge1xuICAgICAgICBzdHJpY3QgPSBzdHJpY3QoZXJyb3JDb2RlLCBlcnJvck1zZywgdG9rZW4pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc3RyaWN0ID0gXCJlcnJvclwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghc3RyaWN0IHx8IHN0cmljdCA9PT0gXCJpZ25vcmVcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoc3RyaWN0ID09PSB0cnVlIHx8IHN0cmljdCA9PT0gXCJlcnJvclwiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHN0cmljdCA9PT0gXCJ3YXJuXCIpIHtcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvICd3YXJuJzogXCIgKyAoZXJyb3JNc2cgKyBcIiBbXCIgKyBlcnJvckNvZGUgKyBcIl1cIikpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3b24ndCBoYXBwZW4gaW4gdHlwZS1zYWZlIGNvZGVcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvIFwiICsgKFwidW5yZWNvZ25pemVkICdcIiArIHN0cmljdCArIFwiJzogXCIgKyBlcnJvck1zZyArIFwiIFtcIiArIGVycm9yQ29kZSArIFwiXVwiKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRvIHRlc3QgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIGlucHV0LCBhbmQgcmV0dXJuXG4gICAqIGB0cnVlYCAodHJ1c3RlZCkgb3IgYGZhbHNlYCAodW50cnVzdGVkKS4gIFRoZSBzb2xlIGFyZ3VtZW50IGBjb250ZXh0YFxuICAgKiBzaG91bGQgYmUgYW4gb2JqZWN0IHdpdGggYGNvbW1hbmRgIGZpZWxkIHNwZWNpZnlpbmcgdGhlIHJlbGV2YW50IExhVGVYXG4gICAqIGNvbW1hbmQgKGFzIGEgc3RyaW5nIHN0YXJ0aW5nIHdpdGggYFxcYCksIGFuZCBhbnkgb3RoZXIgYXJndW1lbnRzLCBldGMuXG4gICAqIElmIGBjb250ZXh0YCBoYXMgYSBgdXJsYCBmaWVsZCwgYSBgcHJvdG9jb2xgIGZpZWxkIHdpbGwgYXV0b21hdGljYWxseVxuICAgKiBnZXQgYWRkZWQgYnkgdGhpcyBmdW5jdGlvbiAoY2hhbmdpbmcgdGhlIHNwZWNpZmllZCBvYmplY3QpLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5pc1RydXN0ZWQgPSBmdW5jdGlvbiBpc1RydXN0ZWQoY29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LnVybCAmJiAhY29udGV4dC5wcm90b2NvbCkge1xuICAgICAgY29udGV4dC5wcm90b2NvbCA9IHV0aWxzLnByb3RvY29sRnJvbVVybChjb250ZXh0LnVybCk7XG4gICAgfVxuXG4gICAgdmFyIHRydXN0ID0gdHlwZW9mIHRoaXMudHJ1c3QgPT09IFwiZnVuY3Rpb25cIiA/IHRoaXMudHJ1c3QoY29udGV4dCkgOiB0aGlzLnRydXN0O1xuICAgIHJldHVybiBCb29sZWFuKHRydXN0KTtcbiAgfTtcblxuICByZXR1cm4gU2V0dGluZ3M7XG59KCk7XG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvU3R5bGUuanNcbi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFuZCBjbGFzc2VzIGZvciB0aGUgdmFyaW91cyBraW5kcyBvZiBzdHlsZXNcbiAqIHVzZWQgaW4gVGVYLiBJdCBwcm92aWRlcyBhIGdlbmVyaWMgYFN0eWxlYCBjbGFzcywgd2hpY2ggaG9sZHMgaW5mb3JtYXRpb25cbiAqIGFib3V0IGEgc3BlY2lmaWMgc3R5bGUuIEl0IHRoZW4gcHJvdmlkZXMgaW5zdGFuY2VzIG9mIGFsbCB0aGUgZGlmZmVyZW50IGtpbmRzXG4gKiBvZiBzdHlsZXMgcG9zc2libGUsIGFuZCBwcm92aWRlcyBmdW5jdGlvbnMgdG8gbW92ZSBiZXR3ZWVuIHRoZW0gYW5kIGdldFxuICogaW5mb3JtYXRpb24gYWJvdXQgdGhlbS5cbiAqL1xuXG4vKipcbiAqIFRoZSBtYWluIHN0eWxlIGNsYXNzLiBDb250YWlucyBhIHVuaXF1ZSBpZCBmb3IgdGhlIHN0eWxlLCBhIHNpemUgKHdoaWNoIGlzXG4gKiB0aGUgc2FtZSBmb3IgY3JhbXBlZCBhbmQgdW5jcmFtcGVkIHZlcnNpb24gb2YgYSBzdHlsZSksIGFuZCBhIGNyYW1wZWQgZmxhZy5cbiAqL1xudmFyIFN0eWxlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3R5bGUoaWQsIHNpemUsIGNyYW1wZWQpIHtcbiAgICB0aGlzLmlkID0gdm9pZCAwO1xuICAgIHRoaXMuc2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLmNyYW1wZWQgPSB2b2lkIDA7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgdGhpcy5jcmFtcGVkID0gY3JhbXBlZDtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBzdHlsZSBvZiBhIHN1cGVyc2NyaXB0IGdpdmVuIGEgYmFzZSBpbiB0aGUgY3VycmVudCBzdHlsZS5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gU3R5bGUucHJvdG90eXBlO1xuXG4gIF9wcm90by5zdXAgPSBmdW5jdGlvbiBzdXAoKSB7XG4gICAgcmV0dXJuIFN0eWxlX3N0eWxlc1tfc3VwW3RoaXMuaWRdXTtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBzdHlsZSBvZiBhIHN1YnNjcmlwdCBnaXZlbiBhIGJhc2UgaW4gdGhlIGN1cnJlbnQgc3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnN1YiA9IGZ1bmN0aW9uIHN1YigpIHtcbiAgICByZXR1cm4gU3R5bGVfc3R5bGVzW19zdWJbdGhpcy5pZF1dO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0eWxlIG9mIGEgZnJhY3Rpb24gbnVtZXJhdG9yIGdpdmVuIHRoZSBmcmFjdGlvbiBpbiB0aGUgY3VycmVudFxuICAgKiBzdHlsZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZnJhY051bSA9IGZ1bmN0aW9uIGZyYWNOdW0oKSB7XG4gICAgcmV0dXJuIFN0eWxlX3N0eWxlc1tfZnJhY051bVt0aGlzLmlkXV07XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgc3R5bGUgb2YgYSBmcmFjdGlvbiBkZW5vbWluYXRvciBnaXZlbiB0aGUgZnJhY3Rpb24gaW4gdGhlIGN1cnJlbnRcbiAgICogc3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmZyYWNEZW4gPSBmdW5jdGlvbiBmcmFjRGVuKCkge1xuICAgIHJldHVybiBTdHlsZV9zdHlsZXNbX2ZyYWNEZW5bdGhpcy5pZF1dO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIGNyYW1wZWQgdmVyc2lvbiBvZiBhIHN0eWxlIChpbiBwYXJ0aWN1bGFyLCBjcmFtcGluZyBhIGNyYW1wZWQgc3R5bGVcbiAgICogZG9lc24ndCBjaGFuZ2UgdGhlIHN0eWxlKS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY3JhbXAgPSBmdW5jdGlvbiBjcmFtcCgpIHtcbiAgICByZXR1cm4gU3R5bGVfc3R5bGVzW19jcmFtcFt0aGlzLmlkXV07XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIHRleHQgb3IgZGlzcGxheSB2ZXJzaW9uIG9mIHRoaXMgc3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnRleHQgPSBmdW5jdGlvbiB0ZXh0KCkge1xuICAgIHJldHVybiBTdHlsZV9zdHlsZXNbX3RleHRbdGhpcy5pZF1dO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHN0eWxlIGlzIHRpZ2h0bHkgc3BhY2VkIChzY3JpcHRzdHlsZS9zY3JpcHRzY3JpcHRzdHlsZSlcbiAgICovXG4gIDtcblxuICBfcHJvdG8uaXNUaWdodCA9IGZ1bmN0aW9uIGlzVGlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA+PSAyO1xuICB9O1xuXG4gIHJldHVybiBTdHlsZTtcbn0oKTsgLy8gRXhwb3J0IGFuIGludGVyZmFjZSBmb3IgdHlwZSBjaGVja2luZywgYnV0IGRvbid0IGV4cG9zZSB0aGUgaW1wbGVtZW50YXRpb24uXG4vLyBUaGlzIHdheSwgbm8gbW9yZSBzdHlsZXMgY2FuIGJlIGdlbmVyYXRlZC5cblxuXG4vLyBJRHMgb2YgdGhlIGRpZmZlcmVudCBzdHlsZXNcbnZhciBEID0gMDtcbnZhciBEYyA9IDE7XG52YXIgVCA9IDI7XG52YXIgVGMgPSAzO1xudmFyIFMgPSA0O1xudmFyIFNjID0gNTtcbnZhciBTUyA9IDY7XG52YXIgU1NjID0gNzsgLy8gSW5zdGFuY2VzIG9mIHRoZSBkaWZmZXJlbnQgc3R5bGVzXG5cbnZhciBTdHlsZV9zdHlsZXMgPSBbbmV3IFN0eWxlKEQsIDAsIGZhbHNlKSwgbmV3IFN0eWxlKERjLCAwLCB0cnVlKSwgbmV3IFN0eWxlKFQsIDEsIGZhbHNlKSwgbmV3IFN0eWxlKFRjLCAxLCB0cnVlKSwgbmV3IFN0eWxlKFMsIDIsIGZhbHNlKSwgbmV3IFN0eWxlKFNjLCAyLCB0cnVlKSwgbmV3IFN0eWxlKFNTLCAzLCBmYWxzZSksIG5ldyBTdHlsZShTU2MsIDMsIHRydWUpXTsgLy8gTG9va3VwIHRhYmxlcyBmb3Igc3dpdGNoaW5nIGZyb20gb25lIHN0eWxlIHRvIGFub3RoZXJcblxudmFyIF9zdXAgPSBbUywgU2MsIFMsIFNjLCBTUywgU1NjLCBTUywgU1NjXTtcbnZhciBfc3ViID0gW1NjLCBTYywgU2MsIFNjLCBTU2MsIFNTYywgU1NjLCBTU2NdO1xudmFyIF9mcmFjTnVtID0gW1QsIFRjLCBTLCBTYywgU1MsIFNTYywgU1MsIFNTY107XG52YXIgX2ZyYWNEZW4gPSBbVGMsIFRjLCBTYywgU2MsIFNTYywgU1NjLCBTU2MsIFNTY107XG52YXIgX2NyYW1wID0gW0RjLCBEYywgVGMsIFRjLCBTYywgU2MsIFNTYywgU1NjXTtcbnZhciBfdGV4dCA9IFtELCBEYywgVCwgVGMsIFQsIFRjLCBULCBUY107IC8vIFdlIG9ubHkgZXhwb3J0IHNvbWUgb2YgdGhlIHN0eWxlcy5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX1N0eWxlID0gKHtcbiAgRElTUExBWTogU3R5bGVfc3R5bGVzW0RdLFxuICBURVhUOiBTdHlsZV9zdHlsZXNbVF0sXG4gIFNDUklQVDogU3R5bGVfc3R5bGVzW1NdLFxuICBTQ1JJUFRTQ1JJUFQ6IFN0eWxlX3N0eWxlc1tTU11cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvdW5pY29kZVNjcmlwdHMuanNcbi8qXG4gKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgVW5pY29kZSBzY3JpcHRzIGFuZCBzY3JpcHQgZmFtaWxpZXMgdGhhdCB3ZVxuICogc3VwcG9ydC4gVG8gYWRkIG5ldyBzY3JpcHRzIG9yIGZhbWlsaWVzLCBqdXN0IGFkZCBhIG5ldyBlbnRyeSB0byB0aGVcbiAqIHNjcmlwdERhdGEgYXJyYXkgYmVsb3cuIEFkZGluZyBzY3JpcHRzIHRvIHRoZSBzY3JpcHREYXRhIGFycmF5IGFsbG93c1xuICogY2hhcmFjdGVycyBmcm9tIHRoYXQgc2NyaXB0IHRvIGFwcGVhciBpbiBcXHRleHR7fSBlbnZpcm9ubWVudHMuXG4gKi9cblxuLyoqXG4gKiBFYWNoIHNjcmlwdCBvciBzY3JpcHQgZmFtaWx5IGhhcyBhIG5hbWUgYW5kIGFuIGFycmF5IG9mIGJsb2Nrcy5cbiAqIEVhY2ggYmxvY2sgaXMgYW4gYXJyYXkgb2YgdHdvIG51bWJlcnMgd2hpY2ggc3BlY2lmeSB0aGUgc3RhcnQgYW5kXG4gKiBlbmQgcG9pbnRzIChpbmNsdXNpdmUpIG9mIGEgYmxvY2sgb2YgVW5pY29kZSBjb2RlcG9pbnRzLlxuICovXG5cbi8qKlxuICogVW5pY29kZSBibG9jayBkYXRhIGZvciB0aGUgZmFtaWxpZXMgb2Ygc2NyaXB0cyB3ZSBzdXBwb3J0IGluIFxcdGV4dHt9LlxuICogU2NyaXB0cyBvbmx5IG5lZWQgdG8gYXBwZWFyIGhlcmUgaWYgdGhleSBkbyBub3QgaGF2ZSBmb250IG1ldHJpY3MuXG4gKi9cbnZhciBzY3JpcHREYXRhID0gW3tcbiAgLy8gTGF0aW4gY2hhcmFjdGVycyBiZXlvbmQgdGhlIExhdGluLTEgY2hhcmFjdGVycyB3ZSBoYXZlIG1ldHJpY3MgZm9yLlxuICAvLyBOZWVkZWQgZm9yIEN6ZWNoLCBIdW5nYXJpYW4gYW5kIFR1cmtpc2ggdGV4dCwgZm9yIGV4YW1wbGUuXG4gIG5hbWU6ICdsYXRpbicsXG4gIGJsb2NrczogW1sweDAxMDAsIDB4MDI0Zl0sIC8vIExhdGluIEV4dGVuZGVkLUEgYW5kIExhdGluIEV4dGVuZGVkLUJcbiAgWzB4MDMwMCwgMHgwMzZmXV1cbn0sIHtcbiAgLy8gVGhlIEN5cmlsbGljIHNjcmlwdCB1c2VkIGJ5IFJ1c3NpYW4gYW5kIHJlbGF0ZWQgbGFuZ3VhZ2VzLlxuICAvLyBBIEN5cmlsbGljIHN1YnNldCB1c2VkIHRvIGJlIHN1cHBvcnRlZCBhcyBleHBsaWNpdGx5IGRlZmluZWRcbiAgLy8gc3ltYm9scyBpbiBzeW1ib2xzLmpzXG4gIG5hbWU6ICdjeXJpbGxpYycsXG4gIGJsb2NrczogW1sweDA0MDAsIDB4MDRmZl1dXG59LCB7XG4gIC8vIFRoZSBCcmFobWljIHNjcmlwdHMgb2YgU291dGggYW5kIFNvdXRoZWFzdCBBc2lhXG4gIC8vIERldmFuYWdhcmkgKDA5MDDigJMwOTdGKVxuICAvLyBCZW5nYWxpICgwOTgw4oCTMDlGRilcbiAgLy8gR3VybXVraGkgKDBBMDDigJMwQTdGKVxuICAvLyBHdWphcmF0aSAoMEE4MOKAkzBBRkYpXG4gIC8vIE9yaXlhICgwQjAw4oCTMEI3RilcbiAgLy8gVGFtaWwgKDBCODDigJMwQkZGKVxuICAvLyBUZWx1Z3UgKDBDMDDigJMwQzdGKVxuICAvLyBLYW5uYWRhICgwQzgw4oCTMENGRilcbiAgLy8gTWFsYXlhbGFtICgwRDAw4oCTMEQ3RilcbiAgLy8gU2luaGFsYSAoMEQ4MOKAkzBERkYpXG4gIC8vIFRoYWkgKDBFMDDigJMwRTdGKVxuICAvLyBMYW8gKDBFODDigJMwRUZGKVxuICAvLyBUaWJldGFuICgwRjAw4oCTMEZGRilcbiAgLy8gTXlhbm1hciAoMTAwMOKAkzEwOUYpXG4gIG5hbWU6ICdicmFobWljJyxcbiAgYmxvY2tzOiBbWzB4MDkwMCwgMHgxMDlGXV1cbn0sIHtcbiAgbmFtZTogJ2dlb3JnaWFuJyxcbiAgYmxvY2tzOiBbWzB4MTBBMCwgMHgxMGZmXV1cbn0sIHtcbiAgLy8gQ2hpbmVzZSBhbmQgSmFwYW5lc2UuXG4gIC8vIFRoZSBcImtcIiBpbiBjamsgaXMgZm9yIEtvcmVhbiwgYnV0IHdlJ3ZlIHNlcGFyYXRlZCBLb3JlYW4gb3V0XG4gIG5hbWU6IFwiY2prXCIsXG4gIGJsb2NrczogW1sweDMwMDAsIDB4MzBGRl0sIC8vIENKSyBzeW1ib2xzIGFuZCBwdW5jdHVhdGlvbiwgSGlyYWdhbmEsIEthdGFrYW5hXG4gIFsweDRFMDAsIDB4OUZBRl0sIC8vIENKSyBpZGVvZ3JhbXNcbiAgWzB4RkYwMCwgMHhGRjYwXV1cbn0sIHtcbiAgLy8gS29yZWFuXG4gIG5hbWU6ICdoYW5ndWwnLFxuICBibG9ja3M6IFtbMHhBQzAwLCAweEQ3QUZdXVxufV07XG4vKipcbiAqIEdpdmVuIGEgY29kZXBvaW50LCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCBvciBzY3JpcHQgZmFtaWx5XG4gKiBpdCBpcyBmcm9tLCBvciBudWxsIGlmIGl0IGlzIG5vdCBwYXJ0IG9mIGEga25vd24gYmxvY2tcbiAqL1xuXG5mdW5jdGlvbiBzY3JpcHRGcm9tQ29kZXBvaW50KGNvZGVwb2ludCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdERhdGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc2NyaXB0ID0gc2NyaXB0RGF0YVtpXTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBzY3JpcHQuYmxvY2tzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGJsb2NrID0gc2NyaXB0LmJsb2Nrc1tfaV07XG5cbiAgICAgIGlmIChjb2RlcG9pbnQgPj0gYmxvY2tbMF0gJiYgY29kZXBvaW50IDw9IGJsb2NrWzFdKSB7XG4gICAgICAgIHJldHVybiBzY3JpcHQubmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogQSBmbGF0dGVuZWQgdmVyc2lvbiBvZiBhbGwgdGhlIHN1cHBvcnRlZCBibG9ja3MgaW4gYSBzaW5nbGUgYXJyYXkuXG4gKiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB0byBtYWtlIHN1cHBvcnRlZENvZGVwb2ludCgpIGZhc3QuXG4gKi9cblxudmFyIGFsbEJsb2NrcyA9IFtdO1xuc2NyaXB0RGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7XG4gIHJldHVybiBzLmJsb2Nrcy5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7XG4gICAgcmV0dXJuIGFsbEJsb2Nrcy5wdXNoLmFwcGx5KGFsbEJsb2NrcywgYik7XG4gIH0pO1xufSk7XG4vKipcbiAqIEdpdmVuIGEgY29kZXBvaW50LCByZXR1cm4gdHJ1ZSBpZiBpdCBmYWxscyB3aXRoaW4gb25lIG9mIHRoZVxuICogc2NyaXB0cyBvciBzY3JpcHQgZmFtaWxpZXMgZGVmaW5lZCBhYm92ZSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLlxuICpcbiAqIE1pY3JvIGJlbmNobWFya3Mgc2hvd3MgdGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuXG4gKiAvW1xcdTMwMDAtXFx1MzBGRlxcdTRFMDAtXFx1OUZBRlxcdUZGMDAtXFx1RkY2MFxcdUFDMDAtXFx1RDdBRlxcdTA5MDAtXFx1MTA5Rl0vLnRlc3QoKVxuICogaW4gRmlyZWZveCwgQ2hyb21lIGFuZCBOb2RlLlxuICovXG5cbmZ1bmN0aW9uIHN1cHBvcnRlZENvZGVwb2ludChjb2RlcG9pbnQpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpICs9IDIpIHtcbiAgICBpZiAoY29kZXBvaW50ID49IGFsbEJsb2Nrc1tpXSAmJiBjb2RlcG9pbnQgPD0gYWxsQmxvY2tzW2kgKyAxXSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvc3ZnR2VvbWV0cnkuanNcbi8qKlxuICogVGhpcyBmaWxlIHByb3ZpZGVzIHN1cHBvcnQgdG8gZG9tVHJlZS5qcyBhbmQgZGVsaW1pdGVyLmpzLlxuICogSXQncyBhIHN0b3JlaG91c2Ugb2YgcGF0aCBnZW9tZXRyeSBmb3IgU1ZHIGltYWdlcy5cbiAqL1xuLy8gSW4gYWxsIHBhdGhzIGJlbG93LCB0aGUgdmlld0JveC10by1lbSBzY2FsZSBpcyAxMDAwOjEuXG52YXIgaExpbmVQYWQgPSA4MDsgLy8gcGFkZGluZyBhYm92ZSBhIHNxcnQgdmluaWN1bHVtLiBQcmV2ZW50cyBpbWFnZSBjcm9wcGluZy5cbi8vIFRoZSB2aW5pY3VsdW0gb2YgYSBcXHNxcnQgY2FuIGJlIG1hZGUgdGhpY2tlciBieSBhIEthVGVYIHJlbmRlcmluZyBvcHRpb24uXG4vLyBUaGluayBvZiB2YXJpYWJsZSBleHRyYVZpbmljdWx1bSBhcyB0d28gZGV0b3VycyBpbiB0aGUgU1ZHIHBhdGguXG4vLyBUaGUgZGV0b3VyIGJlZ2lucyBhdCB0aGUgbG93ZXIgbGVmdCBvZiB0aGUgYXJlYSBsYWJlbGVkIGV4dHJhVmluaWN1bHVtIGJlbG93LlxuLy8gVGhlIGRldG91ciBwcm9jZWVkcyBvbmUgZXh0cmFWaW5pY3VsdW0gZGlzdGFuY2UgdXAgYW5kIHNsaWdodGx5IHRvIHRoZSByaWdodCxcbi8vIGRpc3BsYWNpbmcgdGhlIHJhZGl1c2VkIGNvcm5lciBiZXR3ZWVuIHN1cmQgYW5kIHZpbmljdWx1bS4gVGhlIHJhZGl1cyBpc1xuLy8gdHJhdmVyc2VkIGFzIHVzdWFsLCB0aGVuIHRoZSBkZXRvdXIgcmVzdW1lcy4gSXQgZ29lcyByaWdodCwgdG8gdGhlIGVuZCBvZlxuLy8gdGhlIHZlcnkgbG9uZyB2aW5pY3VsdW1uLCB0aGVuIGRvd24gb25lIGV4dHJhVmluaWN1bHVtIGRpc3RhbmNlLFxuLy8gYWZ0ZXIgd2hpY2ggaXQgcmVzdW1lcyByZWd1bGFyIHBhdGggZ2VvbWV0cnkgZm9yIHRoZSByYWRpY2FsLlxuXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmluaWN1bHVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvXG4gICAgICAgICAv4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4oaQZXh0cmFWaW5pY3VsdW1cbiAgICAgICAgLyDilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojihpAwLjA0ZW0gKDQwIHVuaXQpIHN0ZCB2aW5pY3VsdW0gdGhpY2tuZXNzXG4gICAgICAgLyAvXG4gICAgICAvIC9cbiAgICAgLyAvXFxcbiAgICAvIC8gc3VyZFxuKi9cblxudmFyIHNxcnRNYWluID0gZnVuY3Rpb24gc3FydE1haW4oZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKSB7XG4gIC8vIHNxcnRNYWluIHBhdGggZ2VvbWV0cnkgaXMgZnJvbSBnbHlwaCBVMjIxQSBpbiB0aGUgZm9udCBLYVRlWCBNYWluXG4gIHJldHVybiBcIk05NSxcIiArICg2MjIgKyBleHRyYVZpbmljdWx1bSArIGhMaW5lUGFkKSArIFwiXFxuYy0yLjcsMCwtNy4xNywtMi43LC0xMy41LC04Yy01LjgsLTUuMywtOS41LC0xMCwtOS41LC0xNFxcbmMwLC0yLDAuMywtMy4zLDEsLTRjMS4zLC0yLjcsMjMuODMsLTIwLjcsNjcuNSwtNTRcXG5jNDQuMiwtMzMuMyw2NS44LC01MC4zLDY2LjUsLTUxYzEuMywtMS4zLDMsLTIsNSwtMmM0LjcsMCw4LjcsMy4zLDEyLDEwXFxuczE3MywzNzgsMTczLDM3OGMwLjcsMCwzNS4zLC03MSwxMDQsLTIxM2M2OC43LC0xNDIsMTM3LjUsLTI4NSwyMDYuNSwtNDI5XFxuYzY5LC0xNDQsMTA0LjUsLTIxNy43LDEwNi41LC0yMjFcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDIuMDc1ICsgXCIgLVwiICsgZXh0cmFWaW5pY3VsdW0gKyBcIlxcbmM1LjMsLTkuMywxMiwtMTQsMjAsLTE0XFxuSDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiSDg0NS4yNzI0XFxucy0yMjUuMjcyLDQ2NywtMjI1LjI3Miw0NjdzLTIzNSw0ODYsLTIzNSw0ODZjLTIuNyw0LjcsLTksNywtMTksN1xcbmMtNiwwLC0xMCwtMSwtMTIsLTNzLTE5NCwtNDIyLC0xOTQsLTQyMnMtNjUsNDcsLTY1LDQ3elxcbk1cIiArICg4MzQgKyBleHRyYVZpbmljdWx1bSkgKyBcIiBcIiArIGhMaW5lUGFkICsgXCJoNDAwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJoLTQwMDAwMHpcIjtcbn07XG5cbnZhciBzcXJ0U2l6ZTEgPSBmdW5jdGlvbiBzcXJ0U2l6ZTEoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKSB7XG4gIC8vIHNpemUxIGlzIGZyb20gZ2x5cGggVTIyMUEgaW4gdGhlIGZvbnQgS2FUZVhfU2l6ZTEtUmVndWxhclxuICByZXR1cm4gXCJNMjYzLFwiICsgKDYwMSArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJjMC43LDAsMTgsMzkuNyw1MiwxMTlcXG5jMzQsNzkuMyw2OC4xNjcsMTU4LjcsMTAyLjUsMjM4YzM0LjMsNzkuMyw1MS44LDExOS4zLDUyLjUsMTIwXFxuYzM0MCwtNzA0LjcsNTEwLjcsLTEwNjAuMyw1MTIsLTEwNjdcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDIuMDg0ICsgXCIgLVwiICsgZXh0cmFWaW5pY3VsdW0gKyBcIlxcbmM0LjcsLTcuMywxMSwtMTEsMTksLTExXFxuSDQwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIMTAxMi4zXFxucy0yNzEuMyw1NjcsLTI3MS4zLDU2N2MtMzguNyw4MC43LC04NCwxNzUsLTEzNiwyODNjLTUyLDEwOCwtODkuMTY3LDE4NS4zLC0xMTEuNSwyMzJcXG5jLTIyLjMsNDYuNywtMzMuOCw3MC4zLC0zNC41LDcxYy00LjcsNC43LC0xMi4zLDcsLTIzLDdzLTEyLC0xLC0xMiwtMVxcbnMtMTA5LC0yNTMsLTEwOSwtMjUzYy03Mi43LC0xNjgsLTEwOS4zLC0yNTIsLTExMCwtMjUyYy0xMC43LDgsLTIyLDE2LjcsLTM0LDI2XFxuYy0yMiwxNy4zLC0zMy4zLDI2LC0zNCwyNnMtMjYsLTI2LC0yNiwtMjZzNzYsLTU5LDc2LC01OXM3NiwtNjAsNzYsLTYwelxcbk1cIiArICgxMDAxICsgZXh0cmFWaW5pY3VsdW0pICsgXCIgXCIgKyBoTGluZVBhZCArIFwiaDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiaC00MDAwMDB6XCI7XG59O1xuXG52YXIgc3FydFNpemUyID0gZnVuY3Rpb24gc3FydFNpemUyKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCkge1xuICAvLyBzaXplMiBpcyBmcm9tIGdseXBoIFUyMjFBIGluIHRoZSBmb250IEthVGVYX1NpemUyLVJlZ3VsYXJcbiAgcmV0dXJuIFwiTTk4MyBcIiArICgxMCArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDMuMTMgKyBcIiAtXCIgKyBleHRyYVZpbmljdWx1bSArIFwiXFxuYzQsLTYuNywxMCwtMTAsMTgsLTEwIEg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcIlxcbkgxMDEzLjFzLTgzLjQsMjY4LC0yNjQuMSw4NDBjLTE4MC43LDU3MiwtMjc3LDg3Ni4zLC0yODksOTEzYy00LjcsNC43LC0xMi43LDcsLTI0LDdcXG5zLTEyLDAsLTEyLDBjLTEuMywtMy4zLC0zLjcsLTExLjcsLTcsLTI1Yy0zNS4zLC0xMjUuMywtMTA2LjcsLTM3My4zLC0yMTQsLTc0NFxcbmMtMTAsMTIsLTIxLDI1LC0zMywzOXMtMzIsMzksLTMyLDM5Yy02LC01LjMsLTE1LC0xNCwtMjcsLTI2czI1LC0zMCwyNSwtMzBcXG5jMjYuNywtMzIuNyw1MiwtNjMsNzYsLTkxczUyLC02MCw1MiwtNjBzMjA4LDcyMiwyMDgsNzIyXFxuYzU2LC0xNzUuMywxMjYuMywtMzk3LjMsMjExLC02NjZjODQuNywtMjY4LjcsMTUzLjgsLTQ4OC4yLDIwNy41LC02NTguNVxcbmM1My43LC0xNzAuMyw4NC41LC0yNjYuOCw5Mi41LC0yODkuNXpcXG5NXCIgKyAoMTAwMSArIGV4dHJhVmluaWN1bHVtKSArIFwiIFwiICsgaExpbmVQYWQgKyBcImg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcImgtNDAwMDAwelwiO1xufTtcblxudmFyIHNxcnRTaXplMyA9IGZ1bmN0aW9uIHNxcnRTaXplMyhleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpIHtcbiAgLy8gc2l6ZTMgaXMgZnJvbSBnbHlwaCBVMjIxQSBpbiB0aGUgZm9udCBLYVRlWF9TaXplMy1SZWd1bGFyXG4gIHJldHVybiBcIk00MjQsXCIgKyAoMjM5OCArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJcXG5jLTEuMywtMC43LC0zOC41LC0xNzIsLTExMS41LC01MTRjLTczLC0zNDIsLTEwOS44LC01MTMuMywtMTEwLjUsLTUxNFxcbmMwLC0yLC0xMC43LDE0LjMsLTMyLDQ5Yy00LjcsNy4zLC05LjgsMTUuNywtMTUuNSwyNWMtNS43LDkuMywtOS44LDE2LC0xMi41LDIwXFxucy01LDcsLTUsN2MtNCwtMy4zLC04LjMsLTcuNywtMTMsLTEzcy0xMywtMTMsLTEzLC0xM3M3NiwtMTIyLDc2LC0xMjJzNzcsLTEyMSw3NywtMTIxXFxuczIwOSw5NjgsMjA5LDk2OGMwLC0yLDg0LjcsLTM2MS43LDI1NCwtMTA3OWMxNjkuMywtNzE3LjMsMjU0LjcsLTEwNzcuNywyNTYsLTEwODFcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDQuMjIzICsgXCIgLVwiICsgZXh0cmFWaW5pY3VsdW0gKyBcImM0LC02LjcsMTAsLTEwLDE4LC0xMCBINDAwMDAwXFxudlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIMTAxNC42XFxucy04Ny4zLDM3OC43LC0yNzIuNiwxMTY2Yy0xODUuMyw3ODcuMywtMjc5LjMsMTE4Mi4zLC0yODIsMTE4NVxcbmMtMiw2LC0xMCw5LC0yNCw5XFxuYy04LDAsLTEyLC0wLjcsLTEyLC0yeiBNXCIgKyAoMTAwMSArIGV4dHJhVmluaWN1bHVtKSArIFwiIFwiICsgaExpbmVQYWQgKyBcIlxcbmg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcImgtNDAwMDAwelwiO1xufTtcblxudmFyIHNxcnRTaXplNCA9IGZ1bmN0aW9uIHNxcnRTaXplNChleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpIHtcbiAgLy8gc2l6ZTQgaXMgZnJvbSBnbHlwaCBVMjIxQSBpbiB0aGUgZm9udCBLYVRlWF9TaXplNC1SZWd1bGFyXG4gIHJldHVybiBcIk00NzMsXCIgKyAoMjcxMyArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJcXG5jMzM5LjMsLTE3OTkuMyw1MDkuMywtMjcwMCw1MTAsLTI3MDIgbFwiICsgZXh0cmFWaW5pY3VsdW0gLyA1LjI5OCArIFwiIC1cIiArIGV4dHJhVmluaWN1bHVtICsgXCJcXG5jMy4zLC03LjMsOS4zLC0xMSwxOCwtMTEgSDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiSDEwMTcuN1xcbnMtOTAuNSw0NzgsLTI3Ni4yLDE0NjZjLTE4NS43LDk4OCwtMjc5LjUsMTQ4MywtMjgxLjUsMTQ4NWMtMiw2LC0xMCw5LC0yNCw5XFxuYy04LDAsLTEyLC0wLjcsLTEyLC0yYzAsLTEuMywtNS4zLC0zMiwtMTYsLTkyYy01MC43LC0yOTMuMywtMTE5LjcsLTY5My4zLC0yMDcsLTEyMDBcXG5jMCwtMS4zLC01LjMsOC43LC0xNiwzMGMtMTAuNywyMS4zLC0yMS4zLDQyLjcsLTMyLDY0cy0xNiwzMywtMTYsMzNzLTI2LC0yNiwtMjYsLTI2XFxuczc2LC0xNTMsNzYsLTE1M3M3NywtMTUxLDc3LC0xNTFjMC43LDAuNywzNS43LDIwMiwxMDUsNjA0YzY3LjMsNDAwLjcsMTAyLDYwMi43LDEwNCxcXG42MDZ6TVwiICsgKDEwMDEgKyBleHRyYVZpbmljdWx1bSkgKyBcIiBcIiArIGhMaW5lUGFkICsgXCJoNDAwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIMTAxNy43elwiO1xufTtcblxudmFyIHNxcnRUYWxsID0gZnVuY3Rpb24gc3FydFRhbGwoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkLCB2aWV3Qm94SGVpZ2h0KSB7XG4gIC8vIHNxcnRUYWxsIGlzIGZyb20gZ2x5cGggVTIzQjcgaW4gdGhlIGZvbnQgS2FUZVhfU2l6ZTQtUmVndWxhclxuICAvLyBPbmUgcGF0aCBlZGdlIGhhcyBhIHZhcmlhYmxlIGxlbmd0aC4gSXQgcnVucyB2ZXJ0aWNhbGx5IGZyb20gdGhlIHZpbmljdWx1bW5cbiAgLy8gdG8gYSBwb2ludCBuZWFyICgxNCB1bml0cykgdGhlIGJvdHRvbSBvZiB0aGUgc3VyZC4gVGhlIHZpbmljdWx1bVxuICAvLyBpcyBub3JtYWxseSA0MCB1bml0cyB0aGljay4gU28gdGhlIGxlbmd0aCBvZiB0aGUgbGluZSBpbiBxdWVzdGlvbiBpczpcbiAgdmFyIHZlcnRTZWdtZW50ID0gdmlld0JveEhlaWdodCAtIDU0IC0gaExpbmVQYWQgLSBleHRyYVZpbmljdWx1bTtcbiAgcmV0dXJuIFwiTTcwMiBcIiArIChleHRyYVZpbmljdWx1bSArIGhMaW5lUGFkKSArIFwiSDQwMDAwMFwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJcXG5INzQydlwiICsgdmVydFNlZ21lbnQgKyBcImwtNCA0LTQgNGMtLjY2Ny43IC0yIDEuNS00IDIuNXMtNC4xNjcgMS44MzMtNi41IDIuNS01LjUgMS05LjUgMVxcbmgtMTJsLTI4LTg0Yy0xNi42NjctNTItOTYuNjY3IC0yOTQuMzMzLTI0MC03MjdsLTIxMiAtNjQzIC04NSAxNzBcXG5jLTQtMy4zMzMtOC4zMzMtNy42NjctMTMgLTEzbC0xMy0xM2w3Ny0xNTUgNzctMTU2YzY2IDE5OS4zMzMgMTM5IDQxOS42NjdcXG4yMTkgNjYxIGwyMTggNjYxek03MDIgXCIgKyBoTGluZVBhZCArIFwiSDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiSDc0MnpcIjtcbn07XG5cbnZhciBzcXJ0UGF0aCA9IGZ1bmN0aW9uIHNxcnRQYXRoKHNpemUsIGV4dHJhVmluaWN1bHVtLCB2aWV3Qm94SGVpZ2h0KSB7XG4gIGV4dHJhVmluaWN1bHVtID0gMTAwMCAqIGV4dHJhVmluaWN1bHVtOyAvLyBDb252ZXJ0IGZyb20gZG9jdW1lbnQgZW1zIHRvIHZpZXdCb3guXG5cbiAgdmFyIHBhdGggPSBcIlwiO1xuXG4gIHN3aXRjaCAoc2l6ZSkge1xuICAgIGNhc2UgXCJzcXJ0TWFpblwiOlxuICAgICAgcGF0aCA9IHNxcnRNYWluKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJzcXJ0U2l6ZTFcIjpcbiAgICAgIHBhdGggPSBzcXJ0U2l6ZTEoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInNxcnRTaXplMlwiOlxuICAgICAgcGF0aCA9IHNxcnRTaXplMihleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwic3FydFNpemUzXCI6XG4gICAgICBwYXRoID0gc3FydFNpemUzKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJzcXJ0U2l6ZTRcIjpcbiAgICAgIHBhdGggPSBzcXJ0U2l6ZTQoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInNxcnRUYWxsXCI6XG4gICAgICBwYXRoID0gc3FydFRhbGwoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkLCB2aWV3Qm94SGVpZ2h0KTtcbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcbnZhciBzdmdHZW9tZXRyeV9wYXRoID0ge1xuICAvLyBUaGUgZG91YmxlbGVmdGFycm93IGdlb21ldHJ5IGlzIGZyb20gZ2x5cGggVSsyMUQwIGluIHRoZSBmb250IEthVGVYIE1haW5cbiAgZG91YmxlbGVmdGFycm93OiBcIk0yNjIgMTU3XFxubDEwLTEwYzM0LTM2IDYyLjctNzcgODYtMTIzIDMuMy04IDUtMTMuMyA1LTE2IDAtNS4zLTYuNy04LTIwLTgtNy4zXFxuIDAtMTIuMi41LTE0LjUgMS41LTIuMyAxLTQuOCA0LjUtNy41IDEwLjUtNDkuMyA5Ny4zLTEyMS43IDE2OS4zLTIxNyAyMTYtMjhcXG4gMTQtNTcuMyAyNS04OCAzMy02LjcgMi0xMSAzLjgtMTMgNS41LTIgMS43LTMgNC4yLTMgNy41czEgNS44IDMgNy41XFxuYzIgMS43IDYuMyAzLjUgMTMgNS41IDY4IDE3LjMgMTI4LjIgNDcuOCAxODAuNSA5MS41IDUyLjMgNDMuNyA5My44IDk2LjIgMTI0LjVcXG4gMTU3LjUgOS4zIDggMTUuMyAxMi4zIDE4IDEzaDZjMTItLjcgMTgtNCAxOC0xMCAwLTItMS43LTctNS0xNS0yMy4zLTQ2LTUyLTg3XFxuLTg2LTEyM2wtMTAtMTBoMzk5NzM4di00MEgyMThjMzI4IDAgMCAwIDAgMGwtMTAtOGMtMjYuNy0yMC02NS43LTQzLTExNy02OSAyLjdcXG4tMiA2LTMuNyAxMC01IDM2LjctMTYgNzIuMy0zNy4zIDEwNy02NGwxMC04aDM5OTc4MnYtNDB6XFxubTggMHY0MGgzOTk3MzB2LTQwem0wIDE5NHY0MGgzOTk3MzB2LTQwelwiLFxuICAvLyBkb3VibGVyaWdodGFycm93IGlzIGZyb20gZ2x5cGggVSsyMUQyIGluIGZvbnQgS2FUZVggTWFpblxuICBkb3VibGVyaWdodGFycm93OiBcIk0zOTk3MzggMzkybFxcbi0xMCAxMGMtMzQgMzYtNjIuNyA3Ny04NiAxMjMtMy4zIDgtNSAxMy4zLTUgMTYgMCA1LjMgNi43IDggMjAgOCA3LjMgMCAxMi4yLS41XFxuIDE0LjUtMS41IDIuMy0xIDQuOC00LjUgNy41LTEwLjUgNDkuMy05Ny4zIDEyMS43LTE2OS4zIDIxNy0yMTYgMjgtMTQgNTcuMy0yNSA4OFxcbi0zMyA2LjctMiAxMS0zLjggMTMtNS41IDItMS43IDMtNC4yIDMtNy41cy0xLTUuOC0zLTcuNWMtMi0xLjctNi4zLTMuNS0xMy01LjUtNjhcXG4tMTcuMy0xMjguMi00Ny44LTE4MC41LTkxLjUtNTIuMy00My43LTkzLjgtOTYuMi0xMjQuNS0xNTcuNS05LjMtOC0xNS4zLTEyLjMtMThcXG4tMTNoLTZjLTEyIC43LTE4IDQtMTggMTAgMCAyIDEuNyA3IDUgMTUgMjMuMyA0NiA1MiA4NyA4NiAxMjNsMTAgMTBIMHY0MGgzOTk3ODJcXG5jLTMyOCAwIDAgMCAwIDBsMTAgOGMyNi43IDIwIDY1LjcgNDMgMTE3IDY5LTIuNyAyLTYgMy43LTEwIDUtMzYuNyAxNi03Mi4zIDM3LjNcXG4tMTA3IDY0bC0xMCA4SDB2NDB6TTAgMTU3djQwaDM5OTczMHYtNDB6bTAgMTk0djQwaDM5OTczMHYtNDB6XCIsXG4gIC8vIGxlZnRhcnJvdyBpcyBmcm9tIGdseXBoIFUrMjE5MCBpbiBmb250IEthVGVYIE1haW5cbiAgbGVmdGFycm93OiBcIk00MDAwMDAgMjQxSDExMGwzLTNjNjguNy01Mi43IDExMy43LTEyMFxcbiAxMzUtMjAyIDQtMTQuNyA2LTIzIDYtMjUgMC03LjMtNy0xMS0yMS0xMS04IDAtMTMuMi44LTE1LjUgMi41LTIuMyAxLjctNC4yIDUuOFxcbi01LjUgMTIuNS0xLjMgNC43LTIuNyAxMC4zLTQgMTctMTIgNDguNy0zNC44IDkyLTY4LjUgMTMwUzY1LjMgMjI4LjMgMTggMjQ3XFxuYy0xMCA0LTE2IDcuNy0xOCAxMSAwIDguNyA2IDE0LjMgMTggMTcgNDcuMyAxOC43IDg3LjggNDcgMTIxLjUgODVTMTk2IDQ0MS4zIDIwOFxcbiA0OTBjLjcgMiAxLjMgNSAyIDlzMS4yIDYuNyAxLjUgOGMuMyAxLjMgMSAzLjMgMiA2czIuMiA0LjUgMy41IDUuNWMxLjMgMSAzLjNcXG4gMS44IDYgMi41czYgMSAxMCAxYzE0IDAgMjEtMy43IDIxLTExIDAtMi0yLTEwLjMtNi0yNS0yMC03OS4zLTY1LTE0Ni43LTEzNS0yMDJcXG4gbC0zLTNoMzk5ODkwek0xMDAgMjQxdjQwaDM5OTkwMHYtNDB6XCIsXG4gIC8vIG92ZXJicmFjZSBpcyBmcm9tIGdseXBocyBVKzIzQTkvMjNBOC8yM0E3IGluIGZvbnQgS2FUZVhfU2l6ZTQtUmVndWxhclxuICBsZWZ0YnJhY2U6IFwiTTYgNTQ4bC02LTZ2LTM1bDYtMTFjNTYtMTA0IDEzNS4zLTE4MS4zIDIzOC0yMzIgNTcuMy0yOC43IDExN1xcbi00NSAxNzktNTBoMzk5NTc3djEyMEg0MDNjLTQzLjMgNy04MSAxNS0xMTMgMjYtMTAwLjcgMzMtMTc5LjcgOTEtMjM3IDE3NC0yLjdcXG4gNS02IDktMTAgMTMtLjcgMS03LjMgMS0yMCAxSDZ6XCIsXG4gIGxlZnRicmFjZXVuZGVyOiBcIk0wIDZsNi02aDE3YzEyLjY4OCAwIDE5LjMxMy4zIDIwIDEgNCA0IDcuMzEzIDguMyAxMCAxM1xcbiAzNS4zMTMgNTEuMyA4MC44MTMgOTMuOCAxMzYuNSAxMjcuNSA1NS42ODggMzMuNyAxMTcuMTg4IDU1LjggMTg0LjUgNjYuNS42ODhcXG4gMCAyIC4zIDQgMSAxOC42ODggMi43IDc2IDQuMyAxNzIgNWgzOTk0NTB2MTIwSDQyOWwtNi0xYy0xMjQuNjg4LTgtMjM1LTYxLjdcXG4tMzMxLTE2MUM2MC42ODcgMTM4LjcgMzIuMzEyIDk5LjMgNyA1NEwwIDQxVjZ6XCIsXG4gIC8vIG92ZXJncm91cCBpcyBmcm9tIHRoZSBNblN5bWJvbCBwYWNrYWdlIChwdWJsaWMgZG9tYWluKVxuICBsZWZ0Z3JvdXA6IFwiTTQwMDAwMCA4MFxcbkg0MzVDNjQgODAgMTY4LjMgMjI5LjQgMjEgMjYwYy01LjkgMS4yLTE4IDAtMTggMC0yIDAtMy0xLTMtM3YtMzhDNzYgNjEgMjU3IDBcXG4gNDM1IDBoMzk5NTY1elwiLFxuICBsZWZ0Z3JvdXB1bmRlcjogXCJNNDAwMDAwIDI2Mlxcbkg0MzVDNjQgMjYyIDE2OC4zIDExMi42IDIxIDgyYy01LjktMS4yLTE4IDAtMTggMC0yIDAtMyAxLTMgM3YzOGM3NiAxNTggMjU3IDIxOVxcbiA0MzUgMjE5aDM5OTU2NXpcIixcbiAgLy8gSGFycG9vbnMgYXJlIGZyb20gZ2x5cGggVSsyMUJEIGluIGZvbnQgS2FUZVggTWFpblxuICBsZWZ0aGFycG9vbjogXCJNMCAyNjdjLjcgNS4zIDMgMTAgNyAxNGgzOTk5OTN2LTQwSDkzYzMuM1xcbi0zLjMgMTAuMi05LjUgMjAuNS0xOC41czE3LjgtMTUuOCAyMi41LTIwLjVjNTAuNy01MiA4OC0xMTAuMyAxMTItMTc1IDQtMTEuMyA1XFxuLTE4LjMgMy0yMS0xLjMtNC03LjMtNi0xOC02LTggMC0xMyAuNy0xNSAycy00LjcgNi43LTggMTZjLTQyIDk4LjctMTA3LjMgMTc0LjdcXG4tMTk2IDIyOC02LjcgNC43LTEwLjcgOC0xMiAxMC0xLjMgMi0yIDUuNy0yIDExem0xMDAtMjZ2NDBoMzk5OTAwdi00MHpcIixcbiAgbGVmdGhhcnBvb25wbHVzOiBcIk0wIDI2N2MuNyA1LjMgMyAxMCA3IDE0aDM5OTk5M3YtNDBIOTNjMy4zLTMuMyAxMC4yLTkuNVxcbiAyMC41LTE4LjVzMTcuOC0xNS44IDIyLjUtMjAuNWM1MC43LTUyIDg4LTExMC4zIDExMi0xNzUgNC0xMS4zIDUtMTguMyAzLTIxLTEuM1xcbi00LTcuMy02LTE4LTYtOCAwLTEzIC43LTE1IDJzLTQuNyA2LjctOCAxNmMtNDIgOTguNy0xMDcuMyAxNzQuNy0xOTYgMjI4LTYuNyA0LjdcXG4tMTAuNyA4LTEyIDEwLTEuMyAyLTIgNS43LTIgMTF6bTEwMC0yNnY0MGgzOTk5MDB2LTQwek0wIDQzNXY0MGg0MDAwMDB2LTQwelxcbm0wIDB2NDBoNDAwMDAwdi00MHpcIixcbiAgbGVmdGhhcnBvb25kb3duOiBcIk03IDI0MWMtNCA0LTYuMzMzIDguNjY3LTcgMTQgMCA1LjMzMy42NjcgOSAyIDExczUuMzMzXFxuIDUuMzMzIDEyIDEwYzkwLjY2NyA1NCAxNTYgMTMwIDE5NiAyMjggMy4zMzMgMTAuNjY3IDYuMzMzIDE2LjMzMyA5IDE3IDIgLjY2NyA1XFxuIDEgOSAxaDVjMTAuNjY3IDAgMTYuNjY3LTIgMTgtNiAyLTIuNjY3IDEtOS42NjctMy0yMS0zMi04Ny4zMzMtODIuNjY3LTE1Ny42NjdcXG4tMTUyLTIxMWwtMy0zaDM5OTkwN3YtNDB6TTkzIDI4MSBINDAwMDAwIHYtNDBMNyAyNDF6XCIsXG4gIGxlZnRoYXJwb29uZG93bnBsdXM6IFwiTTcgNDM1Yy00IDQtNi4zIDguNy03IDE0IDAgNS4zLjcgOSAyIDExczUuMyA1LjMgMTJcXG4gMTBjOTAuNyA1NCAxNTYgMTMwIDE5NiAyMjggMy4zIDEwLjcgNi4zIDE2LjMgOSAxNyAyIC43IDUgMSA5IDFoNWMxMC43IDAgMTYuN1xcbi0yIDE4LTYgMi0yLjcgMS05LjctMy0yMS0zMi04Ny4zLTgyLjctMTU3LjctMTUyLTIxMWwtMy0zaDM5OTkwN3YtNDBIN3ptOTMgMFxcbnY0MGgzOTk5MDB2LTQwek0wIDI0MXY0MGgzOTk5MDB2LTQwem0wIDB2NDBoMzk5OTAwdi00MHpcIixcbiAgLy8gaG9vayBpcyBmcm9tIGdseXBoIFUrMjFBOSBpbiBmb250IEthVGVYIE1haW5cbiAgbGVmdGhvb2s6IFwiTTQwMDAwMCAyODEgSDEwM3MtMzMtMTEuMi02MS0zMy41UzAgMTk3LjMgMCAxNjRzMTQuMi02MS4yIDQyLjVcXG4tODMuNUM3MC44IDU4LjIgMTA0IDQ3IDE0MiA0NyBjMTYuNyAwIDI1IDYuNyAyNSAyMCAwIDEyLTguNyAxOC43LTI2IDIwLTQwIDMuM1xcbi02OC43IDE1LjctODYgMzctMTAgMTItMTUgMjUuMy0xNSA0MCAwIDIyLjcgOS44IDQwLjcgMjkuNSA1NCAxOS43IDEzLjMgNDMuNSAyMVxcbiA3MS41IDIzaDM5OTg1OXpNMTAzIDI4MXYtNDBoMzk5ODk3djQwelwiLFxuICBsZWZ0bGluZXNlZ21lbnQ6IFwiTTQwIDI4MSBWNDI4IEgwIFY5NCBINDAgVjI0MSBINDAwMDAwIHY0MHpcXG5NNDAgMjgxIFY0MjggSDAgVjk0IEg0MCBWMjQxIEg0MDAwMDAgdjQwelwiLFxuICBsZWZ0bWFwc3RvOiBcIk00MCAyODEgVjQ0OEgwVjc0SDQwVjI0MUg0MDAwMDB2NDB6XFxuTTQwIDI4MSBWNDQ4SDBWNzRINDBWMjQxSDQwMDAwMHY0MHpcIixcbiAgLy8gdG9mcm9tIGlzIGZyb20gZ2x5cGggVSsyMUM0IGluIGZvbnQgS2FUZVggQU1TIFJlZ3VsYXJcbiAgbGVmdFRvRnJvbTogXCJNMCAxNDdoNDAwMDAwdjQwSDB6bTAgMjE0YzY4IDQwIDExNS43IDk1LjcgMTQzIDE2N2gyMmMxNS4zIDAgMjNcXG4tLjMgMjMtMSAwLTEuMy01LjMtMTMuNy0xNi0zNy0xOC0zNS4zLTQxLjMtNjktNzAtMTAxbC03LThoMzk5OTA1di00MEg5NWw3LThcXG5jMjguNy0zMiA1Mi02NS43IDcwLTEwMSAxMC43LTIzLjMgMTYtMzUuNyAxNi0zNyAwLS43LTcuNy0xLTIzLTFoLTIyQzExNS43IDI2NS4zXFxuIDY4IDMyMSAwIDM2MXptMC0xNzR2LTQwaDM5OTkwMHY0MHptMTAwIDE1NHY0MGgzOTk5MDB2LTQwelwiLFxuICBsb25nZXF1YWw6IFwiTTAgNTAgaDQwMDAwMCB2NDBIMHogbTAgMTk0aDQwMDAwdjQwSDB6XFxuTTAgNTAgaDQwMDAwMCB2NDBIMHogbTAgMTk0aDQwMDAwdjQwSDB6XCIsXG4gIG1pZGJyYWNlOiBcIk0yMDA0MjggMzM0XFxuYy0xMDAuNy04LjMtMTk1LjMtNDQtMjgwLTEwOC01NS4zLTQyLTEwMS43LTkzLTEzOS0xNTNsLTktMTRjLTIuNyA0LTUuNyA4LjctOSAxNFxcbi01My4zIDg2LjctMTIzLjcgMTUzLTIxMSAxOTktNjYuNyAzNi0xMzcuMyA1Ni4zLTIxMiA2MkgwVjIxNGgxOTk1NjhjMTc4LjMtMTEuN1xcbiAzMTEuNy03OC4zIDQwMy0yMDEgNi04IDkuNy0xMiAxMS0xMiAuNy0uNyA2LjctMSAxOC0xczE3LjMuMyAxOCAxYzEuMyAwIDUgNCAxMVxcbiAxMiA0NC43IDU5LjMgMTAxLjMgMTA2LjMgMTcwIDE0MXMxNDUuMyA1NC4zIDIyOSA2MGgxOTk1NzJ2MTIwelwiLFxuICBtaWRicmFjZXVuZGVyOiBcIk0xOTk1NzIgMjE0XFxuYzEwMC43IDguMyAxOTUuMyA0NCAyODAgMTA4IDU1LjMgNDIgMTAxLjcgOTMgMTM5IDE1M2w5IDE0YzIuNy00IDUuNy04LjcgOS0xNFxcbiA1My4zLTg2LjcgMTIzLjctMTUzIDIxMS0xOTkgNjYuNy0zNiAxMzcuMy01Ni4zIDIxMi02MmgxOTk1Njh2MTIwSDIwMDQzMmMtMTc4LjNcXG4gMTEuNy0zMTEuNyA3OC4zLTQwMyAyMDEtNiA4LTkuNyAxMi0xMSAxMi0uNy43LTYuNyAxLTE4IDFzLTE3LjMtLjMtMTgtMWMtMS4zIDBcXG4tNS00LTExLTEyLTQ0LjctNTkuMy0xMDEuMy0xMDYuMy0xNzAtMTQxcy0xNDUuMy01NC4zLTIyOS02MEgwVjIxNHpcIixcbiAgb2lpbnRTaXplMTogXCJNNTEyLjYgNzEuNmMyNzIuNiAwIDMyMC4zIDEwNi44IDMyMC4zIDE3OC4yIDAgNzAuOC00Ny43IDE3Ny42XFxuLTMyMC4zIDE3Ny42UzE5My4xIDMyMC42IDE5My4xIDI0OS44YzAtNzEuNCA0Ni45LTE3OC4yIDMxOS41LTE3OC4yelxcbm0zNjguMSAxNzguMmMwLTg2LjQtNjAuOS0yMTUuNC0zNjguMS0yMTUuNC0zMDYuNCAwLTM2Ny4zIDEyOS0zNjcuMyAyMTUuNCAwIDg1LjhcXG42MC45IDIxNC44IDM2Ny4zIDIxNC44IDMwNy4yIDAgMzY4LjEtMTI5IDM2OC4xLTIxNC44elwiLFxuICBvaWludFNpemUyOiBcIk03NTcuOCAxMDAuMWMzODQuNyAwIDQ1MS4xIDEzNy42IDQ1MS4xIDIzMCAwIDkxLjMtNjYuNCAyMjguOFxcbi00NTEuMSAyMjguOC0zODYuMyAwLTQ1Mi43LTEzNy41LTQ1Mi43LTIyOC44IDAtOTIuNCA2Ni40LTIzMCA0NTIuNy0yMzB6XFxubTUwMi40IDIzMGMwLTExMS4yLTgyLjQtMjc3LjItNTAyLjQtMjc3LjJzLTUwNCAxNjYtNTA0IDI3Ny4yXFxuYzAgMTEwIDg0IDI3NiA1MDQgMjc2czUwMi40LTE2NiA1MDIuNC0yNzZ6XCIsXG4gIG9paWludFNpemUxOiBcIk02ODEuNCA3MS42YzQwOC45IDAgNDgwLjUgMTA2LjggNDgwLjUgMTc4LjIgMCA3MC44LTcxLjYgMTc3LjZcXG4tNDgwLjUgMTc3LjZTMjAyLjEgMzIwLjYgMjAyLjEgMjQ5LjhjMC03MS40IDcwLjUtMTc4LjIgNDc5LjMtMTc4LjJ6XFxubTUyNS44IDE3OC4yYzAtODYuNC04Ni44LTIxNS40LTUyNS43LTIxNS40LTQzNy45IDAtNTI0LjcgMTI5LTUyNC43IDIxNS40IDBcXG44NS44IDg2LjggMjE0LjggNTI0LjcgMjE0LjggNDM4LjkgMCA1MjUuNy0xMjkgNTI1LjctMjE0Ljh6XCIsXG4gIG9paWludFNpemUyOiBcIk0xMDIxLjIgNTNjNjAzLjYgMCA3MDcuOCAxNjUuOCA3MDcuOCAyNzcuMiAwIDExMC0xMDQuMiAyNzUuOFxcbi03MDcuOCAyNzUuOC02MDYgMC03MTAuMi0xNjUuOC03MTAuMi0yNzUuOEMzMTEgMjE4LjggNDE1LjIgNTMgMTAyMS4yIDUzelxcbm03NzAuNCAyNzcuMWMwLTEzMS4yLTEyNi40LTMyNy42LTc3MC41LTMyNy42UzI0OC40IDE5OC45IDI0OC40IDMzMC4xXFxuYzAgMTMwIDEyOC44IDMyNi40IDc3Mi43IDMyNi40czc3MC41LTE5Ni40IDc3MC41LTMyNi40elwiLFxuICByaWdodGFycm93OiBcIk0wIDI0MXY0MGgzOTk4OTFjLTQ3LjMgMzUuMy04NCA3OC0xMTAgMTI4XFxuLTE2LjcgMzItMjcuNyA2My43LTMzIDk1IDAgMS4zLS4yIDIuNy0uNSA0LS4zIDEuMy0uNSAyLjMtLjUgMyAwIDcuMyA2LjcgMTEgMjBcXG4gMTEgOCAwIDEzLjItLjggMTUuNS0yLjUgMi4zLTEuNyA0LjItNS41IDUuNS0xMS41IDItMTMuMyA1LjctMjcgMTEtNDEgMTQuNy00NC43XFxuIDM5LTg0LjUgNzMtMTE5LjVzNzMuNy02MC4yIDExOS03NS41YzYtMiA5LTUuNyA5LTExcy0zLTktOS0xMWMtNDUuMy0xNS4zLTg1XFxuLTQwLjUtMTE5LTc1LjVzLTU4LjMtNzQuOC03My0xMTkuNWMtNC43LTE0LTguMy0yNy4zLTExLTQwLTEuMy02LjctMy4yLTEwLjgtNS41XFxuLTEyLjUtMi4zLTEuNy03LjUtMi41LTE1LjUtMi41LTE0IDAtMjEgMy43LTIxIDExIDAgMiAyIDEwLjMgNiAyNSAyMC43IDgzLjMgNjdcXG4gMTUxLjcgMTM5IDIwNXptMCAwdjQwaDM5OTkwMHYtNDB6XCIsXG4gIHJpZ2h0YnJhY2U6IFwiTTQwMDAwMCA1NDJsXFxuLTYgNmgtMTdjLTEyLjcgMC0xOS4zLS4zLTIwLTEtNC00LTcuMy04LjMtMTAtMTMtMzUuMy01MS4zLTgwLjgtOTMuOC0xMzYuNS0xMjcuNVxcbnMtMTE3LjItNTUuOC0xODQuNS02Ni41Yy0uNyAwLTItLjMtNC0xLTE4LjctMi43LTc2LTQuMy0xNzItNUgwVjIxNGgzOTk1NzFsNiAxXFxuYzEyNC43IDggMjM1IDYxLjcgMzMxIDE2MSAzMS4zIDMzLjMgNTkuNyA3Mi43IDg1IDExOGw3IDEzdjM1elwiLFxuICByaWdodGJyYWNldW5kZXI6IFwiTTM5OTk5NCAwbDYgNnYzNWwtNiAxMWMtNTYgMTA0LTEzNS4zIDE4MS4zLTIzOCAyMzItNTcuM1xcbiAyOC43LTExNyA0NS0xNzkgNTBILTMwMFYyMTRoMzk5ODk3YzQzLjMtNyA4MS0xNSAxMTMtMjYgMTAwLjctMzMgMTc5LjctOTEgMjM3XFxuLTE3NCAyLjctNSA2LTkgMTAtMTMgLjctMSA3LjMtMSAyMC0xaDE3elwiLFxuICByaWdodGdyb3VwOiBcIk0wIDgwaDM5OTU2NWMzNzEgMCAyNjYuNyAxNDkuNCA0MTQgMTgwIDUuOSAxLjIgMTggMCAxOCAwIDIgMFxcbiAzLTEgMy0zdi0zOGMtNzYtMTU4LTI1Ny0yMTktNDM1LTIxOUgwelwiLFxuICByaWdodGdyb3VwdW5kZXI6IFwiTTAgMjYyaDM5OTU2NWMzNzEgMCAyNjYuNy0xNDkuNCA0MTQtMTgwIDUuOS0xLjIgMTggMCAxOFxcbiAwIDIgMCAzIDEgMyAzdjM4Yy03NiAxNTgtMjU3IDIxOS00MzUgMjE5SDB6XCIsXG4gIHJpZ2h0aGFycG9vbjogXCJNMCAyNDF2NDBoMzk5OTkzYzQuNy00LjcgNy05LjMgNy0xNCAwLTkuM1xcbi0zLjctMTUuMy0xMS0xOC05Mi43LTU2LjctMTU5LTEzMy43LTE5OS0yMzEtMy4zLTkuMy02LTE0LjctOC0xNi0yLTEuMy03LTItMTUtMlxcbi0xMC43IDAtMTYuNyAyLTE4IDYtMiAyLjctMSA5LjcgMyAyMSAxNS4zIDQyIDM2LjcgODEuOCA2NCAxMTkuNSAyNy4zIDM3LjcgNThcXG4gNjkuMiA5MiA5NC41em0wIDB2NDBoMzk5OTAwdi00MHpcIixcbiAgcmlnaHRoYXJwb29ucGx1czogXCJNMCAyNDF2NDBoMzk5OTkzYzQuNy00LjcgNy05LjMgNy0xNCAwLTkuMy0zLjctMTUuMy0xMVxcbi0xOC05Mi43LTU2LjctMTU5LTEzMy43LTE5OS0yMzEtMy4zLTkuMy02LTE0LjctOC0xNi0yLTEuMy03LTItMTUtMi0xMC43IDAtMTYuN1xcbiAyLTE4IDYtMiAyLjctMSA5LjcgMyAyMSAxNS4zIDQyIDM2LjcgODEuOCA2NCAxMTkuNSAyNy4zIDM3LjcgNTggNjkuMiA5MiA5NC41elxcbm0wIDB2NDBoMzk5OTAwdi00MHogbTEwMCAxOTR2NDBoMzk5OTAwdi00MHptMCAwdjQwaDM5OTkwMHYtNDB6XCIsXG4gIHJpZ2h0aGFycG9vbmRvd246IFwiTTM5OTc0NyA1MTFjMCA3LjMgNi43IDExIDIwIDExIDggMCAxMy0uOCAxNS0yLjVzNC43LTYuOFxcbiA4LTE1LjVjNDAtOTQgOTkuMy0xNjYuMyAxNzgtMjE3IDEzLjMtOCAyMC4zLTEyLjMgMjEtMTMgNS4zLTMuMyA4LjUtNS44IDkuNVxcbi03LjUgMS0xLjcgMS41LTUuMiAxLjUtMTAuNXMtMi4zLTEwLjMtNy0xNUgwdjQwaDM5OTkwOGMtMzQgMjUuMy02NC43IDU3LTkyIDk1XFxuLTI3LjMgMzgtNDguNyA3Ny43LTY0IDExOS0zLjMgOC43LTUgMTQtNSAxNnpNMCAyNDF2NDBoMzk5OTAwdi00MHpcIixcbiAgcmlnaHRoYXJwb29uZG93bnBsdXM6IFwiTTM5OTc0NyA3MDVjMCA3LjMgNi43IDExIDIwIDExIDggMCAxMy0uOFxcbiAxNS0yLjVzNC43LTYuOCA4LTE1LjVjNDAtOTQgOTkuMy0xNjYuMyAxNzgtMjE3IDEzLjMtOCAyMC4zLTEyLjMgMjEtMTMgNS4zLTMuM1xcbiA4LjUtNS44IDkuNS03LjUgMS0xLjcgMS41LTUuMiAxLjUtMTAuNXMtMi4zLTEwLjMtNy0xNUgwdjQwaDM5OTkwOGMtMzQgMjUuM1xcbi02NC43IDU3LTkyIDk1LTI3LjMgMzgtNDguNyA3Ny43LTY0IDExOS0zLjMgOC43LTUgMTQtNSAxNnpNMCA0MzV2NDBoMzk5OTAwdi00MHpcXG5tMC0xOTR2NDBoNDAwMDAwdi00MHptMCAwdjQwaDQwMDAwMHYtNDB6XCIsXG4gIHJpZ2h0aG9vazogXCJNMzk5ODU5IDI0MWMtNzY0IDAgMCAwIDAgMCA0MC0zLjMgNjguNy0xNS43IDg2LTM3IDEwLTEyIDE1LTI1LjNcXG4gMTUtNDAgMC0yMi43LTkuOC00MC43LTI5LjUtNTQtMTkuNy0xMy4zLTQzLjUtMjEtNzEuNS0yMy0xNy4zLTEuMy0yNi04LTI2LTIwIDBcXG4tMTMuMyA4LjctMjAgMjYtMjAgMzggMCA3MSAxMS4yIDk5IDMzLjUgMCAwIDcgNS42IDIxIDE2LjcgMTQgMTEuMiAyMSAzMy41IDIxXFxuIDY2LjhzLTE0IDYxLjItNDIgODMuNWMtMjggMjIuMy02MSAzMy41LTk5IDMzLjVMMCAyNDF6IE0wIDI4MXYtNDBoMzk5ODU5djQwelwiLFxuICByaWdodGxpbmVzZWdtZW50OiBcIk0zOTk5NjAgMjQxIFY5NCBoNDAgVjQyOCBoLTQwIFYyODEgSDAgdi00MHpcXG5NMzk5OTYwIDI0MSBWOTQgaDQwIFY0MjggaC00MCBWMjgxIEgwIHYtNDB6XCIsXG4gIHJpZ2h0VG9Gcm9tOiBcIk00MDAwMDAgMTY3Yy03MC43LTQyLTExOC05Ny43LTE0Mi0xNjdoLTIzYy0xNS4zIDAtMjMgLjMtMjNcXG4gMSAwIDEuMyA1LjMgMTMuNyAxNiAzNyAxOCAzNS4zIDQxLjMgNjkgNzAgMTAxbDcgOEgwdjQwaDM5OTkwNWwtNyA4Yy0yOC43IDMyXFxuLTUyIDY1LjctNzAgMTAxLTEwLjcgMjMuMy0xNiAzNS43LTE2IDM3IDAgLjcgNy43IDEgMjMgMWgyM2MyNC02OS4zIDcxLjMtMTI1IDE0Mlxcbi0xNjd6IE0xMDAgMTQ3djQwaDM5OTkwMHYtNDB6TTAgMzQxdjQwaDM5OTkwMHYtNDB6XCIsXG4gIC8vIHR3b2hlYWRsZWZ0YXJyb3cgaXMgZnJvbSBnbHlwaCBVKzIxOUUgaW4gZm9udCBLYVRlWCBBTVMgUmVndWxhclxuICB0d29oZWFkbGVmdGFycm93OiBcIk0wIDE2N2M2OCA0MFxcbiAxMTUuNyA5NS43IDE0MyAxNjdoMjJjMTUuMyAwIDIzLS4zIDIzLTEgMC0xLjMtNS4zLTEzLjctMTYtMzctMTgtMzUuMy00MS4zLTY5XFxuLTcwLTEwMWwtNy04aDEyNWw5IDdjNTAuNyAzOS4zIDg1IDg2IDEwMyAxNDBoNDZjMC00LjctNi4zLTE4LjctMTktNDItMTgtMzUuM1xcbi00MC02Ny4zLTY2LTk2bC05LTloMzk5NzE2di00MEgyODRsOS05YzI2LTI4LjcgNDgtNjAuNyA2Ni05NiAxMi43LTIzLjMzMyAxOVxcbi0zNy4zMzMgMTktNDJoLTQ2Yy0xOCA1NC01Mi4zIDEwMC43LTEwMyAxNDBsLTkgN0g5NWw3LThjMjguNy0zMiA1Mi02NS43IDcwLTEwMVxcbiAxMC43LTIzLjMzMyAxNi0zNS43IDE2LTM3IDAtLjctNy43LTEtMjMtMWgtMjJDMTE1LjcgNzEuMyA2OCAxMjcgMCAxNjd6XCIsXG4gIHR3b2hlYWRyaWdodGFycm93OiBcIk00MDAwMDAgMTY3XFxuYy02OC00MC0xMTUuNy05NS43LTE0My0xNjdoLTIyYy0xNS4zIDAtMjMgLjMtMjMgMSAwIDEuMyA1LjMgMTMuNyAxNiAzNyAxOCAzNS4zXFxuIDQxLjMgNjkgNzAgMTAxbDcgOGgtMTI1bC05LTdjLTUwLjctMzkuMy04NS04Ni0xMDMtMTQwaC00NmMwIDQuNyA2LjMgMTguNyAxOSA0MlxcbiAxOCAzNS4zIDQwIDY3LjMgNjYgOTZsOSA5SDB2NDBoMzk5NzE2bC05IDljLTI2IDI4LjctNDggNjAuNy02NiA5Ni0xMi43IDIzLjMzM1xcbi0xOSAzNy4zMzMtMTkgNDJoNDZjMTgtNTQgNTIuMy0xMDAuNyAxMDMtMTQwbDktN2gxMjVsLTcgOGMtMjguNyAzMi01MiA2NS43LTcwXFxuIDEwMS0xMC43IDIzLjMzMy0xNiAzNS43LTE2IDM3IDAgLjcgNy43IDEgMjMgMWgyMmMyNy4zLTcxLjMgNzUtMTI3IDE0My0xNjd6XCIsXG4gIC8vIHRpbGRlMSBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgYSBnbHlwaCBmcm9tIHRoZSBNblN5bWJvbCBwYWNrYWdlXG4gIHRpbGRlMTogXCJNMjAwIDU1LjUzOGMtNzcgMC0xNjggNzMuOTUzLTE3NyA3My45NTMtMyAwLTdcXG4tMi4xNzUtOS01LjQzN0wyIDk3Yy0xLTItMi00LTItNiAwLTQgMi03IDUtOWwyMC0xMkMxMTYgMTIgMTcxIDAgMjA3IDBjODYgMFxcbiAxMTQgNjggMTkxIDY4IDc4IDAgMTY4LTY4IDE3Ny02OCA0IDAgNyAyIDkgNWwxMiAxOWMxIDIuMTc1IDIgNC4zNSAyIDYuNTI1IDBcXG4gNC4zNS0yIDcuNjEzLTUgOS43ODhsLTE5IDEzLjA1Yy05MiA2My4wNzctMTE2LjkzNyA3NS4zMDgtMTgzIDc2LjEyOFxcbi02OC4yNjcuODQ3LTExMy03My45NTItMTkxLTczLjk1MnpcIixcbiAgLy8gZGl0dG8gdGlsZGUyLCB0aWxkZTMsICYgdGlsZGU0XG4gIHRpbGRlMjogXCJNMzQ0IDU1LjI2NmMtMTQyIDAtMzAwLjYzOCA4MS4zMTYtMzExLjUgODYuNDE4XFxuLTguMDEgMy43NjItMjIuNSAxMC45MS0yMy41IDUuNTYyTDEgMTIwYy0xLTItMS0zLTEtNCAwLTUgMy05IDgtMTBsMTguNC05QzE2MC45XFxuIDMxLjkgMjgzIDAgMzU4IDBjMTQ4IDAgMTg4IDEyMiAzMzEgMTIyczMxNC05NyAzMjYtOTdjNCAwIDggMiAxMCA3bDcgMjEuMTE0XFxuYzEgMi4xNCAxIDMuMjEgMSA0LjI4IDAgNS4zNDctMyA5LjYyNi03IDEwLjY5NmwtMjIuMyAxMi42MjJDODUyLjYgMTU4LjM3MiA3NTFcXG4gMTgxLjQ3NiA2NzYgMTgxLjQ3NmMtMTQ5IDAtMTg5LTEyNi4yMS0zMzItMTI2LjIxelwiLFxuICB0aWxkZTM6IFwiTTc4NiA1OUM0NTcgNTkgMzIgMTc1LjI0MiAxMyAxNzUuMjQyYy02IDAtMTAtMy40NTdcXG4tMTEtMTAuMzdMLjE1IDEzOGMtMS03IDMtMTIgMTAtMTNsMTkuMi02LjRDMzc4LjQgNDAuNyA2MzQuMyAwIDgwNC4zIDBjMzM3IDBcXG4gNDExLjggMTU3IDc0Ni44IDE1NyAzMjggMCA3NTQtMTEyIDc3My0xMTIgNSAwIDEwIDMgMTEgOWwxIDE0LjA3NWMxIDguMDY2LS42OTdcXG4gMTYuNTk1LTYuNjk3IDE3LjQ5MmwtMjEuMDUyIDcuMzFjLTM2Ny45IDk4LjE0Ni02MDkuMTUgMTIyLjY5Ni03NzguMTUgMTIyLjY5NlxcbiAtMzM4IDAtNDA5LTE1Ni41NzMtNzQ0LTE1Ni41NzN6XCIsXG4gIHRpbGRlNDogXCJNNzg2IDU4QzQ1NyA1OCAzMiAxNzcuNDg3IDEzIDE3Ny40ODdjLTYgMC0xMC0zLjM0NVxcbi0xMS0xMC4wMzVMLjE1IDE0M2MtMS03IDMtMTIgMTAtMTNsMjItNi43QzM4MS4yIDM1IDYzNy4xNSAwIDgwNy4xNSAwYzMzNyAwIDQwOVxcbiAxNzcgNzQ0IDE3NyAzMjggMCA3NTQtMTI3IDc3My0xMjcgNSAwIDEwIDMgMTEgOWwxIDE0Ljc5NGMxIDcuODA1LTMgMTMuMzgtOVxcbiAxNC40OTVsLTIwLjcgNS41NzRjLTM2Ni44NSA5OS43OS02MDcuMyAxMzkuMzcyLTc3Ni4zIDEzOS4zNzItMzM4IDAtNDA5XFxuIC0xNzUuMjM2LTc0NC0xNzUuMjM2elwiLFxuICAvLyB2ZWMgaXMgZnJvbSBnbHlwaCBVKzIwRDcgaW4gZm9udCBLYVRlWCBNYWluXG4gIHZlYzogXCJNMzc3IDIwYzAtNS4zMzMgMS44MzMtMTAgNS41LTE0UzM5MSAwIDM5NyAwYzQuNjY3IDAgOC42NjcgMS42NjcgMTIgNVxcbjMuMzMzIDIuNjY3IDYuNjY3IDkgMTAgMTkgNi42NjcgMjQuNjY3IDIwLjMzMyA0My42NjcgNDEgNTcgNy4zMzMgNC42NjcgMTFcXG4xMC42NjcgMTEgMTggMCA2LTEgMTAtMyAxMnMtNi42NjcgNS0xNCA5Yy0yOC42NjcgMTQuNjY3LTUzLjY2NyAzNS42NjctNzUgNjNcXG4tMS4zMzMgMS4zMzMtMy4xNjcgMy41LTUuNSA2LjVzLTQgNC44MzMtNSA1LjVjLTEgLjY2Ny0yLjUgMS4zMzMtNC41IDJzLTQuMzMzIDFcXG4tNyAxYy00LjY2NyAwLTkuMTY3LTEuODMzLTEzLjUtNS41UzMzNyAxODQgMzM3IDE3OGMwLTEyLjY2NyAxNS42NjctMzIuMzMzIDQ3LTU5XFxuSDIxM2wtMTcxLTFjLTguNjY3LTYtMTMtMTIuMzMzLTEzLTE5IDAtNC42NjcgNC4zMzMtMTEuMzMzIDEzLTIwaDM1OVxcbmMtMTYtMjUuMzMzLTI0LTQ1LTI0LTU5elwiLFxuICAvLyB3aWRlaGF0MSBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgYSBnbHlwaCBmcm9tIHRoZSBNblN5bWJvbCBwYWNrYWdlXG4gIHdpZGVoYXQxOiBcIk01MjkgMGg1bDUxOSAxMTVjNSAxIDkgNSA5IDEwIDAgMS0xIDItMSAzbC00IDIyXFxuYy0xIDUtNSA5LTExIDloLTJMNTMyIDY3IDE5IDE1OWgtMmMtNSAwLTktNC0xMS05bC01LTIyYy0xLTYgMi0xMiA4LTEzelwiLFxuICAvLyBkaXR0byB3aWRlaGF0Miwgd2lkZWhhdDMsICYgd2lkZWhhdDRcbiAgd2lkZWhhdDI6IFwiTTExODEgMGgybDExNzEgMTc2YzYgMCAxMCA1IDEwIDExbC0yIDIzYy0xIDYtNSAxMFxcbi0xMSAxMGgtMUwxMTgyIDY3IDE1IDIyMGgtMWMtNiAwLTEwLTQtMTEtMTBsLTItMjNjLTEtNiA0LTExIDEwLTExelwiLFxuICB3aWRlaGF0MzogXCJNMTE4MSAwaDJsMTE3MSAyMzZjNiAwIDEwIDUgMTAgMTFsLTIgMjNjLTEgNi01IDEwXFxuLTExIDEwaC0xTDExODIgNjcgMTUgMjgwaC0xYy02IDAtMTAtNC0xMS0xMGwtMi0yM2MtMS02IDQtMTEgMTAtMTF6XCIsXG4gIHdpZGVoYXQ0OiBcIk0xMTgxIDBoMmwxMTcxIDI5NmM2IDAgMTAgNSAxMCAxMWwtMiAyM2MtMSA2LTUgMTBcXG4tMTEgMTBoLTFMMTE4MiA2NyAxNSAzNDBoLTFjLTYgMC0xMC00LTExLTEwbC0yLTIzYy0xLTYgNC0xMSAxMC0xMXpcIixcbiAgLy8gd2lkZWNoZWNrIHBhdGhzIGFyZSBhbGwgaW52ZXJ0ZWQgdmVyc2lvbnMgb2Ygd2lkZWhhdFxuICB3aWRlY2hlY2sxOiBcIk01MjksMTU5aDVsNTE5LC0xMTVjNSwtMSw5LC01LDksLTEwYzAsLTEsLTEsLTIsLTEsLTNsLTQsLTIyYy0xLFxcbi01LC01LC05LC0xMSwtOWgtMmwtNTEyLDkybC01MTMsLTkyaC0yYy01LDAsLTksNCwtMTEsOWwtNSwyMmMtMSw2LDIsMTIsOCwxM3pcIixcbiAgd2lkZWNoZWNrMjogXCJNMTE4MSwyMjBoMmwxMTcxLC0xNzZjNiwwLDEwLC01LDEwLC0xMWwtMiwtMjNjLTEsLTYsLTUsLTEwLFxcbi0xMSwtMTBoLTFsLTExNjgsMTUzbC0xMTY3LC0xNTNoLTFjLTYsMCwtMTAsNCwtMTEsMTBsLTIsMjNjLTEsNiw0LDExLDEwLDExelwiLFxuICB3aWRlY2hlY2szOiBcIk0xMTgxLDI4MGgybDExNzEsLTIzNmM2LDAsMTAsLTUsMTAsLTExbC0yLC0yM2MtMSwtNiwtNSwtMTAsXFxuLTExLC0xMGgtMWwtMTE2OCwyMTNsLTExNjcsLTIxM2gtMWMtNiwwLC0xMCw0LC0xMSwxMGwtMiwyM2MtMSw2LDQsMTEsMTAsMTF6XCIsXG4gIHdpZGVjaGVjazQ6IFwiTTExODEsMzQwaDJsMTE3MSwtMjk2YzYsMCwxMCwtNSwxMCwtMTFsLTIsLTIzYy0xLC02LC01LC0xMCxcXG4tMTEsLTEwaC0xbC0xMTY4LDI3M2wtMTE2NywtMjczaC0xYy02LDAsLTEwLDQsLTExLDEwbC0yLDIzYy0xLDYsNCwxMSwxMCwxMXpcIixcbiAgLy8gVGhlIG5leHQgdGVuIHBhdGhzIHN1cHBvcnQgcmVhY3Rpb24gYXJyb3dzIGZyb20gdGhlIG1oY2hlbSBwYWNrYWdlLlxuICAvLyBBcnJvd3MgZm9yIFxcY2V7PC0tPn0gYXJlIG9mZnNldCBmcm9tIHhBeGlzIGJ5IDAuMjJleCwgcGVyIG1oY2hlbSBpbiBMYVRlWFxuICAvLyBiYXJhYm92ZWxlZnRhcnJvdyBpcyBtb3N0bHkgZnJvbSBmcm9tIGdseXBoIFUrMjE5MCBpbiBmb250IEthVGVYIE1haW5cbiAgYmFyYWJvdmVsZWZ0YXJyb3c6IFwiTTQwMDAwMCA2MjBoLTM5OTg5MGwzIC0zYzY4LjcgLTUyLjcgMTEzLjcgLTEyMCAxMzUgLTIwMlxcbmM0IC0xNC43IDYgLTIzIDYgLTI1YzAgLTcuMyAtNyAtMTEgLTIxIC0xMWMtOCAwIC0xMy4yIDAuOCAtMTUuNSAyLjVcXG5jLTIuMyAxLjcgLTQuMiA1LjggLTUuNSAxMi41Yy0xLjMgNC43IC0yLjcgMTAuMyAtNCAxN2MtMTIgNDguNyAtMzQuOCA5MiAtNjguNSAxMzBcXG5zLTc0LjIgNjYuMyAtMTIxLjUgODVjLTEwIDQgLTE2IDcuNyAtMTggMTFjMCA4LjcgNiAxNC4zIDE4IDE3YzQ3LjMgMTguNyA4Ny44IDQ3XFxuMTIxLjUgODVzNTYuNSA4MS4zIDY4LjUgMTMwYzAuNyAyIDEuMyA1IDIgOXMxLjIgNi43IDEuNSA4YzAuMyAxLjMgMSAzLjMgMiA2XFxuczIuMiA0LjUgMy41IDUuNWMxLjMgMSAzLjMgMS44IDYgMi41czYgMSAxMCAxYzE0IDAgMjEgLTMuNyAyMSAtMTFcXG5jMCAtMiAtMiAtMTAuMyAtNiAtMjVjLTIwIC03OS4zIC02NSAtMTQ2LjcgLTEzNSAtMjAybC0zIC0zaDM5OTg5MHpcXG5NMTAwIDYyMHY0MGgzOTk5MDB2LTQweiBNMCAyNDF2NDBoMzk5OTAwdi00MHpNMCAyNDF2NDBoMzk5OTAwdi00MHpcIixcbiAgLy8gcmlnaHRhcnJvd2Fib3ZlYmFyIGlzIG1vc3RseSBmcm9tIGdseXBoIFUrMjE5MiwgS2FUZVggTWFpblxuICByaWdodGFycm93YWJvdmViYXI6IFwiTTAgMjQxdjQwaDM5OTg5MWMtNDcuMyAzNS4zLTg0IDc4LTExMCAxMjgtMTYuNyAzMlxcbi0yNy43IDYzLjctMzMgOTUgMCAxLjMtLjIgMi43LS41IDQtLjMgMS4zLS41IDIuMy0uNSAzIDAgNy4zIDYuNyAxMSAyMCAxMSA4IDBcXG4xMy4yLS44IDE1LjUtMi41IDIuMy0xLjcgNC4yLTUuNSA1LjUtMTEuNSAyLTEzLjMgNS43LTI3IDExLTQxIDE0LjctNDQuNyAzOVxcbi04NC41IDczLTExOS41czczLjctNjAuMiAxMTktNzUuNWM2LTIgOS01LjcgOS0xMXMtMy05LTktMTFjLTQ1LjMtMTUuMy04NS00MC41XFxuLTExOS03NS41cy01OC4zLTc0LjgtNzMtMTE5LjVjLTQuNy0xNC04LjMtMjcuMy0xMS00MC0xLjMtNi43LTMuMi0xMC44LTUuNVxcbi0xMi41LTIuMy0xLjctNy41LTIuNS0xNS41LTIuNS0xNCAwLTIxIDMuNy0yMSAxMSAwIDIgMiAxMC4zIDYgMjUgMjAuNyA4My4zIDY3XFxuMTUxLjcgMTM5IDIwNXptOTYgMzc5aDM5OTg5NHY0MEgwem0wIDBoMzk5OTA0djQwSDB6XCIsXG4gIC8vIFRoZSBzaG9ydCBsZWZ0IGhhcnBvb24gaGFzIDAuNWVtIChpLmUuIDUwMCB1bml0cykga2VybiBvbiB0aGUgbGVmdCBlbmQuXG4gIC8vIFJlZiBmcm9tIG1oY2hlbS5zdHk6IFxccmxhcHtcXHJhaXNlYm94ey0uMjJleH17JFxca2VybjAuNWVtXG4gIGJhcmFib3Zlc2hvcnRsZWZ0aGFycG9vbjogXCJNNTA3LDQzNWMtNCw0LC02LjMsOC43LC03LDE0YzAsNS4zLDAuNyw5LDIsMTFcXG5jMS4zLDIsNS4zLDUuMywxMiwxMGM5MC43LDU0LDE1NiwxMzAsMTk2LDIyOGMzLjMsMTAuNyw2LjMsMTYuMyw5LDE3XFxuYzIsMC43LDUsMSw5LDFjMCwwLDUsMCw1LDBjMTAuNywwLDE2LjcsLTIsMTgsLTZjMiwtMi43LDEsLTkuNywtMywtMjFcXG5jLTMyLC04Ny4zLC04Mi43LC0xNTcuNywtMTUyLC0yMTFjMCwwLC0zLC0zLC0zLC0zbDM5OTM1MSwwbDAsLTQwXFxuYy0zOTg1NzAsMCwtMzk5NDM3LDAsLTM5OTQzNywweiBNNTkzIDQzNSB2NDAgSDM5OTUwMCB2LTQwelxcbk0wIDI4MSB2LTQwIEgzOTk5MDggdjQweiBNMCAyODEgdi00MCBIMzk5OTA4IHY0MHpcIixcbiAgcmlnaHRoYXJwb29uYWJvdmVzaG9ydGJhcjogXCJNMCwyNDEgbDAsNDBjMzk5MTI2LDAsMzk5OTkzLDAsMzk5OTkzLDBcXG5jNC43LC00LjcsNywtOS4zLDcsLTE0YzAsLTkuMywtMy43LC0xNS4zLC0xMSwtMThjLTkyLjcsLTU2LjcsLTE1OSwtMTMzLjcsLTE5OSxcXG4tMjMxYy0zLjMsLTkuMywtNiwtMTQuNywtOCwtMTZjLTIsLTEuMywtNywtMiwtMTUsLTJjLTEwLjcsMCwtMTYuNywyLC0xOCw2XFxuYy0yLDIuNywtMSw5LjcsMywyMWMxNS4zLDQyLDM2LjcsODEuOCw2NCwxMTkuNWMyNy4zLDM3LjcsNTgsNjkuMiw5Miw5NC41elxcbk0wIDI0MSB2NDAgSDM5OTkwOCB2LTQweiBNMCA0NzUgdi00MCBIMzk5NTAwIHY0MHogTTAgNDc1IHYtNDAgSDM5OTUwMCB2NDB6XCIsXG4gIHNob3J0YmFyYWJvdmVsZWZ0aGFycG9vbjogXCJNNyw0MzVjLTQsNCwtNi4zLDguNywtNywxNGMwLDUuMywwLjcsOSwyLDExXFxuYzEuMywyLDUuMyw1LjMsMTIsMTBjOTAuNyw1NCwxNTYsMTMwLDE5NiwyMjhjMy4zLDEwLjcsNi4zLDE2LjMsOSwxN2MyLDAuNyw1LDEsOSxcXG4xYzAsMCw1LDAsNSwwYzEwLjcsMCwxNi43LC0yLDE4LC02YzIsLTIuNywxLC05LjcsLTMsLTIxYy0zMiwtODcuMywtODIuNywtMTU3LjcsXFxuLTE1MiwtMjExYzAsMCwtMywtMywtMywtM2wzOTk5MDcsMGwwLC00MGMtMzk5MTI2LDAsLTM5OTk5MywwLC0zOTk5OTMsMHpcXG5NOTMgNDM1IHY0MCBINDAwMDAwIHYtNDB6IE01MDAgMjQxIHY0MCBINDAwMDAwIHYtNDB6IE01MDAgMjQxIHY0MCBINDAwMDAwIHYtNDB6XCIsXG4gIHNob3J0cmlnaHRoYXJwb29uYWJvdmViYXI6IFwiTTUzLDI0MWwwLDQwYzM5ODU3MCwwLDM5OTQzNywwLDM5OTQzNywwXFxuYzQuNywtNC43LDcsLTkuMyw3LC0xNGMwLC05LjMsLTMuNywtMTUuMywtMTEsLTE4Yy05Mi43LC01Ni43LC0xNTksLTEzMy43LC0xOTksXFxuLTIzMWMtMy4zLC05LjMsLTYsLTE0LjcsLTgsLTE2Yy0yLC0xLjMsLTcsLTIsLTE1LC0yYy0xMC43LDAsLTE2LjcsMiwtMTgsNlxcbmMtMiwyLjcsLTEsOS43LDMsMjFjMTUuMyw0MiwzNi43LDgxLjgsNjQsMTE5LjVjMjcuMywzNy43LDU4LDY5LjIsOTIsOTQuNXpcXG5NNTAwIDI0MSB2NDAgSDM5OTQwOCB2LTQweiBNNTAwIDQzNSB2NDAgSDQwMDAwMCB2LTQwelwiXG59O1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvdHJlZS5qc1xuXG5cbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBkb2N1bWVudCBmcmFnbWVudCwgd2hpY2ggY29udGFpbnMgZWxlbWVudHMsIGJ1dCB3aGVuXG4gKiBwbGFjZWQgaW50byB0aGUgRE9NIGRvZXNuJ3QgaGF2ZSBhbnkgcmVwcmVzZW50YXRpb24gaXRzZWxmLiBJdCBvbmx5IGNvbnRhaW5zXG4gKiBjaGlsZHJlbiBhbmQgZG9lc24ndCBoYXZlIGFueSBET00gbm9kZSBwcm9wZXJ0aWVzLlxuICovXG52YXIgdHJlZV9Eb2N1bWVudEZyYWdtZW50ID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgLy8gSHRtbERvbU5vZGVcbiAgLy8gTmV2ZXIgdXNlZDsgbmVlZGVkIGZvciBzYXRpc2Z5aW5nIGludGVyZmFjZS5cbiAgZnVuY3Rpb24gRG9jdW1lbnRGcmFnbWVudChjaGlsZHJlbikge1xuICAgIHRoaXMuY2hpbGRyZW4gPSB2b2lkIDA7XG4gICAgdGhpcy5jbGFzc2VzID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB0aGlzLmNsYXNzZXMgPSBbXTtcbiAgICB0aGlzLmhlaWdodCA9IDA7XG4gICAgdGhpcy5kZXB0aCA9IDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IDA7XG4gICAgdGhpcy5zdHlsZSA9IHt9O1xuICB9XG5cbiAgdmFyIF9wcm90byA9IERvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlO1xuXG4gIF9wcm90by5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH1cbiAgLyoqIENvbnZlcnQgdGhlIGZyYWdtZW50IGludG8gYSBub2RlLiAqL1xuICA7XG5cbiAgX3Byb3RvLnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICB2YXIgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgZnJhZy5hcHBlbmRDaGlsZCh0aGlzLmNoaWxkcmVuW2ldLnRvTm9kZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhZztcbiAgfVxuICAvKiogQ29udmVydCB0aGUgZnJhZ21lbnQgaW50byBIVE1MIG1hcmt1cC4gKi9cbiAgO1xuXG4gIF9wcm90by50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHZhciBtYXJrdXAgPSBcIlwiOyAvLyBTaW1wbHkgY29uY2F0ZW5hdGUgdGhlIG1hcmt1cCBmb3IgdGhlIGNoaWxkcmVuIHRvZ2V0aGVyLlxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBtYXJrdXAgKz0gdGhpcy5jaGlsZHJlbltpXS50b01hcmt1cCgpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXJrdXA7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYXRoIG5vZGUgaW50byBhIHN0cmluZywgc2ltaWxhciB0byBpbm5lclRleHQuIEFwcGxpZXMgdG9cbiAgICogTWF0aERvbU5vZGUncyBvbmx5LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by50b1RleHQgPSBmdW5jdGlvbiB0b1RleHQoKSB7XG4gICAgLy8gVG8gYXZvaWQgdGhpcywgd2Ugd291bGQgc3ViY2xhc3MgZG9jdW1lbnRGcmFnbWVudCBzZXBhcmF0ZWx5IGZvclxuICAgIC8vIE1hdGhNTCwgYnV0IHBvbHlmaWxscyBmb3Igc3ViY2xhc3NpbmcgaXMgZXhwZW5zaXZlIHBlciBQUiAxNDY5LlxuICAgIC8vICRGbG93Rml4TWU6IE9ubHkgd29ya3MgZm9yIENoaWxkVHlwZSA9IE1hdGhEb21Ob2RlLlxuICAgIHZhciB0b1RleHQgPSBmdW5jdGlvbiB0b1RleHQoY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZC50b1RleHQoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubWFwKHRvVGV4dCkuam9pbihcIlwiKTtcbiAgfTtcblxuICByZXR1cm4gRG9jdW1lbnRGcmFnbWVudDtcbn0oKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RvbVRyZWUuanNcbi8qKlxuICogVGhlc2Ugb2JqZWN0cyBzdG9yZSB0aGUgZGF0YSBhYm91dCB0aGUgRE9NIG5vZGVzIHdlIGNyZWF0ZSwgYXMgd2VsbCBhcyBzb21lXG4gKiBleHRyYSBkYXRhLiBUaGV5IGNhbiB0aGVuIGJlIHRyYW5zZm9ybWVkIGludG8gcmVhbCBET00gbm9kZXMgd2l0aCB0aGVcbiAqIGB0b05vZGVgIGZ1bmN0aW9uIG9yIEhUTUwgbWFya3VwIHVzaW5nIGB0b01hcmt1cGAuIFRoZXkgYXJlIHVzZWZ1bCBmb3IgYm90aFxuICogc3RvcmluZyBleHRyYSBwcm9wZXJ0aWVzIG9uIHRoZSBub2RlcywgYXMgd2VsbCBhcyBwcm92aWRpbmcgYSB3YXkgdG8gZWFzaWx5XG4gKiB3b3JrIHdpdGggdGhlIERPTS5cbiAqXG4gKiBTaW1pbGFyIGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIE1hdGhNTCBub2RlcyBleGlzdCBpbiBtYXRoTUxUcmVlLmpzLlxuICpcbiAqIFRPRE86IHJlZmFjdG9yIGBzcGFuYCBhbmQgYGFuY2hvcmAgaW50byBjb21tb24gc3VwZXJjbGFzcyB3aGVuXG4gKiB0YXJnZXQgZW52aXJvbm1lbnRzIHN1cHBvcnQgY2xhc3MgaW5oZXJpdGFuY2VcbiAqL1xuXG5cblxuXG5cbi8qKlxuICogQ3JlYXRlIGFuIEhUTUwgY2xhc3NOYW1lIGJhc2VkIG9uIGEgbGlzdCBvZiBjbGFzc2VzLiBJbiBhZGRpdGlvbiB0byBqb2luaW5nXG4gKiB3aXRoIHNwYWNlcywgd2UgYWxzbyByZW1vdmUgZW1wdHkgY2xhc3Nlcy5cbiAqL1xudmFyIGNyZWF0ZUNsYXNzID0gZnVuY3Rpb24gY3JlYXRlQ2xhc3MoY2xhc3Nlcykge1xuICByZXR1cm4gY2xhc3Nlcy5maWx0ZXIoZnVuY3Rpb24gKGNscykge1xuICAgIHJldHVybiBjbHM7XG4gIH0pLmpvaW4oXCIgXCIpO1xufTtcblxudmFyIGluaXROb2RlID0gZnVuY3Rpb24gaW5pdE5vZGUoY2xhc3Nlcywgb3B0aW9ucywgc3R5bGUpIHtcbiAgdGhpcy5jbGFzc2VzID0gY2xhc3NlcyB8fCBbXTtcbiAgdGhpcy5hdHRyaWJ1dGVzID0ge307XG4gIHRoaXMuaGVpZ2h0ID0gMDtcbiAgdGhpcy5kZXB0aCA9IDA7XG4gIHRoaXMubWF4Rm9udFNpemUgPSAwO1xuICB0aGlzLnN0eWxlID0gc3R5bGUgfHwge307XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5zdHlsZS5pc1RpZ2h0KCkpIHtcbiAgICAgIHRoaXMuY2xhc3Nlcy5wdXNoKFwibXRpZ2h0XCIpO1xuICAgIH1cblxuICAgIHZhciBjb2xvciA9IG9wdGlvbnMuZ2V0Q29sb3IoKTtcblxuICAgIGlmIChjb2xvcikge1xuICAgICAgdGhpcy5zdHlsZS5jb2xvciA9IGNvbG9yO1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogQ29udmVydCBpbnRvIGFuIEhUTUwgbm9kZVxuICovXG5cblxudmFyIF90b05vZGUgPSBmdW5jdGlvbiB0b05vZGUodGFnTmFtZSkge1xuICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7IC8vIEFwcGx5IHRoZSBjbGFzc1xuXG4gIG5vZGUuY2xhc3NOYW1lID0gY3JlYXRlQ2xhc3ModGhpcy5jbGFzc2VzKTsgLy8gQXBwbHkgaW5saW5lIHN0eWxlc1xuXG4gIGZvciAodmFyIHN0eWxlIGluIHRoaXMuc3R5bGUpIHtcbiAgICBpZiAodGhpcy5zdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZSkpIHtcbiAgICAgIC8vICRGbG93Rml4TWUgRmxvdyBkb2Vzbid0IHNlZW0gdG8gdW5kZXJzdGFuZCBzcGFuLnN0eWxlJ3MgdHlwZS5cbiAgICAgIG5vZGUuc3R5bGVbc3R5bGVdID0gdGhpcy5zdHlsZVtzdHlsZV07XG4gICAgfVxuICB9IC8vIEFwcGx5IGF0dHJpYnV0ZXNcblxuXG4gIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgaWYgKHRoaXMuYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShhdHRyKSkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICB9XG4gIH0gLy8gQXBwZW5kIHRoZSBjaGlsZHJlbiwgYWxzbyBhcyBIVE1MIG5vZGVzXG5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBub2RlLmFwcGVuZENoaWxkKHRoaXMuY2hpbGRyZW5baV0udG9Ob2RlKCkpO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuLyoqXG4gKiBDb252ZXJ0IGludG8gYW4gSFRNTCBtYXJrdXAgc3RyaW5nXG4gKi9cblxuXG52YXIgX3RvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAodGFnTmFtZSkge1xuICB2YXIgbWFya3VwID0gXCI8XCIgKyB0YWdOYW1lOyAvLyBBZGQgdGhlIGNsYXNzXG5cbiAgaWYgKHRoaXMuY2xhc3Nlcy5sZW5ndGgpIHtcbiAgICBtYXJrdXAgKz0gXCIgY2xhc3M9XFxcIlwiICsgdXRpbHMuZXNjYXBlKGNyZWF0ZUNsYXNzKHRoaXMuY2xhc3NlcykpICsgXCJcXFwiXCI7XG4gIH1cblxuICB2YXIgc3R5bGVzID0gXCJcIjsgLy8gQWRkIHRoZSBzdHlsZXMsIGFmdGVyIGh5cGhlbmF0aW9uXG5cbiAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgIGlmICh0aGlzLnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSkge1xuICAgICAgc3R5bGVzICs9IHV0aWxzLmh5cGhlbmF0ZShzdHlsZSkgKyBcIjpcIiArIHRoaXMuc3R5bGVbc3R5bGVdICsgXCI7XCI7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0eWxlcykge1xuICAgIG1hcmt1cCArPSBcIiBzdHlsZT1cXFwiXCIgKyB1dGlscy5lc2NhcGUoc3R5bGVzKSArIFwiXFxcIlwiO1xuICB9IC8vIEFkZCB0aGUgYXR0cmlidXRlc1xuXG5cbiAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGF0dHIpKSB7XG4gICAgICBtYXJrdXAgKz0gXCIgXCIgKyBhdHRyICsgXCI9XFxcIlwiICsgdXRpbHMuZXNjYXBlKHRoaXMuYXR0cmlidXRlc1thdHRyXSkgKyBcIlxcXCJcIjtcbiAgICB9XG4gIH1cblxuICBtYXJrdXAgKz0gXCI+XCI7IC8vIEFkZCB0aGUgbWFya3VwIG9mIHRoZSBjaGlsZHJlbiwgYWxzbyBhcyBtYXJrdXBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBtYXJrdXAgKz0gdGhpcy5jaGlsZHJlbltpXS50b01hcmt1cCgpO1xuICB9XG5cbiAgbWFya3VwICs9IFwiPC9cIiArIHRhZ05hbWUgKyBcIj5cIjtcbiAgcmV0dXJuIG1hcmt1cDtcbn07IC8vIE1ha2luZyB0aGUgdHlwZSBiZWxvdyBleGFjdCB3aXRoIGFsbCBvcHRpb25hbCBmaWVsZHMgZG9lc24ndCB3b3JrIGR1ZSB0b1xuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNDU4MlxuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNTY4OFxuLy8gSG93ZXZlciwgc2luY2UgKmFsbCogZmllbGRzIGFyZSBvcHRpb25hbCwgJFNoYXBlPD4gd29ya3MgYXMgc3VnZ2VzdGVkIGluIDU2ODhcbi8vIGFib3ZlLlxuLy8gVGhpcyB0eXBlIGRvZXMgbm90IGluY2x1ZGUgYWxsIENTUyBwcm9wZXJ0aWVzLiBBZGRpdGlvbmFsIHByb3BlcnRpZXMgc2hvdWxkXG4vLyBiZSBhZGRlZCBhcyBuZWVkZWQuXG5cblxuLyoqXG4gKiBUaGlzIG5vZGUgcmVwcmVzZW50cyBhIHNwYW4gbm9kZSwgd2l0aCBhIGNsYXNzTmFtZSwgYSBsaXN0IG9mIGNoaWxkcmVuLCBhbmRcbiAqIGFuIGlubGluZSBzdHlsZS4gSXQgYWxzbyBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBpdHMgaGVpZ2h0LCBkZXB0aCwgYW5kXG4gKiBtYXhGb250U2l6ZS5cbiAqXG4gKiBSZXByZXNlbnRzIHR3byB0eXBlcyB3aXRoIGRpZmZlcmVudCB1c2VzOiBTdmdTcGFuIHRvIHdyYXAgYW4gU1ZHIGFuZCBEb21TcGFuXG4gKiBvdGhlcndpc2UuIFRoaXMgdHlwZXNhZmV0eSBpcyBpbXBvcnRhbnQgd2hlbiBIVE1MIGJ1aWxkZXJzIGFjY2VzcyBhIHNwYW4nc1xuICogY2hpbGRyZW4uXG4gKi9cbnZhciBkb21UcmVlX1NwYW4gPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTcGFuKGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zLCBzdHlsZSkge1xuICAgIHRoaXMuY2hpbGRyZW4gPSB2b2lkIDA7XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gdm9pZCAwO1xuICAgIHRoaXMuY2xhc3NlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmhlaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLmRlcHRoID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIGluaXROb2RlLmNhbGwodGhpcywgY2xhc3Nlcywgb3B0aW9ucywgc3R5bGUpO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBbXTtcbiAgfVxuICAvKipcbiAgICogU2V0cyBhbiBhcmJpdHJhcnkgYXR0cmlidXRlIG9uIHRoZSBzcGFuLiBXYXJuaW5nOiB1c2UgdGhpcyB3aXNlbHkuIE5vdFxuICAgKiBhbGwgYnJvd3NlcnMgc3VwcG9ydCBhdHRyaWJ1dGVzIHRoZSBzYW1lLCBhbmQgaGF2aW5nIHRvbyBtYW55IGN1c3RvbVxuICAgKiBhdHRyaWJ1dGVzIGlzIHByb2JhYmx5IGJhZC5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gU3Bhbi5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV0gPSB2YWx1ZTtcbiAgfTtcblxuICBfcHJvdG8uaGFzQ2xhc3MgPSBmdW5jdGlvbiBoYXNDbGFzcyhjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdXRpbHMuY29udGFpbnModGhpcy5jbGFzc2VzLCBjbGFzc05hbWUpO1xuICB9O1xuXG4gIF9wcm90by50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgcmV0dXJuIF90b05vZGUuY2FsbCh0aGlzLCBcInNwYW5cIik7XG4gIH07XG5cbiAgX3Byb3RvLnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgcmV0dXJuIF90b01hcmt1cC5jYWxsKHRoaXMsIFwic3BhblwiKTtcbiAgfTtcblxuICByZXR1cm4gU3Bhbjtcbn0oKTtcbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYW4gYW5jaG9yICg8YT4pIGVsZW1lbnQgd2l0aCBhIGh5cGVybGluay4gIFNlZSBgc3BhbmBcbiAqIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4gKi9cblxudmFyIGRvbVRyZWVfQW5jaG9yID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQW5jaG9yKGhyZWYsIGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zKSB7XG4gICAgdGhpcy5jaGlsZHJlbiA9IHZvaWQgMDtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5jbGFzc2VzID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIGluaXROb2RlLmNhbGwodGhpcywgY2xhc3Nlcywgb3B0aW9ucyk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG4gIH1cblxuICB2YXIgX3Byb3RvMiA9IEFuY2hvci5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMi5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBzZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIHRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVdID0gdmFsdWU7XG4gIH07XG5cbiAgX3Byb3RvMi5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH07XG5cbiAgX3Byb3RvMi50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgcmV0dXJuIF90b05vZGUuY2FsbCh0aGlzLCBcImFcIik7XG4gIH07XG5cbiAgX3Byb3RvMi50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHJldHVybiBfdG9NYXJrdXAuY2FsbCh0aGlzLCBcImFcIik7XG4gIH07XG5cbiAgcmV0dXJuIEFuY2hvcjtcbn0oKTtcbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYW4gaW1hZ2UgZW1iZWQgKDxpbWc+KSBlbGVtZW50LlxuICovXG5cbnZhciBkb21UcmVlX0ltZyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEltZyhzcmMsIGFsdCwgc3R5bGUpIHtcbiAgICB0aGlzLnNyYyA9IHZvaWQgMDtcbiAgICB0aGlzLmFsdCA9IHZvaWQgMDtcbiAgICB0aGlzLmNsYXNzZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5oZWlnaHQgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXB0aCA9IHZvaWQgMDtcbiAgICB0aGlzLm1heEZvbnRTaXplID0gdm9pZCAwO1xuICAgIHRoaXMuc3R5bGUgPSB2b2lkIDA7XG4gICAgdGhpcy5hbHQgPSBhbHQ7XG4gICAgdGhpcy5zcmMgPSBzcmM7XG4gICAgdGhpcy5jbGFzc2VzID0gW1wibW9yZFwiXTtcbiAgICB0aGlzLnN0eWxlID0gc3R5bGU7XG4gIH1cblxuICB2YXIgX3Byb3RvMyA9IEltZy5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMy5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH07XG5cbiAgX3Byb3RvMy50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuICAgIG5vZGUuc3JjID0gdGhpcy5zcmM7XG4gICAgbm9kZS5hbHQgPSB0aGlzLmFsdDtcbiAgICBub2RlLmNsYXNzTmFtZSA9IFwibW9yZFwiOyAvLyBBcHBseSBpbmxpbmUgc3R5bGVzXG5cbiAgICBmb3IgKHZhciBzdHlsZSBpbiB0aGlzLnN0eWxlKSB7XG4gICAgICBpZiAodGhpcy5zdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZSkpIHtcbiAgICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgICBub2RlLnN0eWxlW3N0eWxlXSA9IHRoaXMuc3R5bGVbc3R5bGVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9O1xuXG4gIF9wcm90bzMudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICB2YXIgbWFya3VwID0gXCI8aW1nICBzcmM9J1wiICsgdGhpcy5zcmMgKyBcIiAnYWx0PSdcIiArIHRoaXMuYWx0ICsgXCInIFwiOyAvLyBBZGQgdGhlIHN0eWxlcywgYWZ0ZXIgaHlwaGVuYXRpb25cblxuICAgIHZhciBzdHlsZXMgPSBcIlwiO1xuXG4gICAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICAgIHN0eWxlcyArPSB1dGlscy5oeXBoZW5hdGUoc3R5bGUpICsgXCI6XCIgKyB0aGlzLnN0eWxlW3N0eWxlXSArIFwiO1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIG1hcmt1cCArPSBcIiBzdHlsZT1cXFwiXCIgKyB1dGlscy5lc2NhcGUoc3R5bGVzKSArIFwiXFxcIlwiO1xuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIicvPlwiO1xuICAgIHJldHVybiBtYXJrdXA7XG4gIH07XG5cbiAgcmV0dXJuIEltZztcbn0oKTtcbnZhciBpQ29tYmluYXRpb25zID0ge1xuICAnw64nOiBcIlxcdTAxMzFcXHUwMzAyXCIsXG4gICfDryc6IFwiXFx1MDEzMVxcdTAzMDhcIixcbiAgJ8OtJzogXCJcXHUwMTMxXFx1MDMwMVwiLFxuICAvLyAnxKsnOiAnXFx1MDEzMVxcdTAzMDQnLCAvLyBlbmFibGUgd2hlbiB3ZSBhZGQgRXh0ZW5kZWQgTGF0aW5cbiAgJ8OsJzogXCJcXHUwMTMxXFx1MDMwMFwiXG59O1xuLyoqXG4gKiBBIHN5bWJvbCBub2RlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIHN5bWJvbC4gSXQgZWl0aGVyIHJlbmRlcnNcbiAqIHRvIGEgc2luZ2xlIHRleHQgbm9kZSwgb3IgYSBzcGFuIHdpdGggYSBzaW5nbGUgdGV4dCBub2RlIGluIGl0LCBkZXBlbmRpbmcgb25cbiAqIHdoZXRoZXIgaXQgaGFzIENTUyBjbGFzc2VzLCBzdHlsZXMsIG9yIG5lZWRzIGl0YWxpYyBjb3JyZWN0aW9uLlxuICovXG5cbnZhciBkb21UcmVlX1N5bWJvbE5vZGUgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTeW1ib2xOb2RlKHRleHQsIGhlaWdodCwgZGVwdGgsIGl0YWxpYywgc2tldywgd2lkdGgsIGNsYXNzZXMsIHN0eWxlKSB7XG4gICAgdGhpcy50ZXh0ID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGggPSB2b2lkIDA7XG4gICAgdGhpcy5pdGFsaWMgPSB2b2lkIDA7XG4gICAgdGhpcy5za2V3ID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLmNsYXNzZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5zdHlsZSA9IHZvaWQgMDtcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0IHx8IDA7XG4gICAgdGhpcy5kZXB0aCA9IGRlcHRoIHx8IDA7XG4gICAgdGhpcy5pdGFsaWMgPSBpdGFsaWMgfHwgMDtcbiAgICB0aGlzLnNrZXcgPSBza2V3IHx8IDA7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoIHx8IDA7XG4gICAgdGhpcy5jbGFzc2VzID0gY2xhc3NlcyB8fCBbXTtcbiAgICB0aGlzLnN0eWxlID0gc3R5bGUgfHwge307XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IDA7IC8vIE1hcmsgdGV4dCBmcm9tIG5vbi1MYXRpbiBzY3JpcHRzIHdpdGggc3BlY2lmaWMgY2xhc3NlcyBzbyB0aGF0IHdlXG4gICAgLy8gY2FuIHNwZWNpZnkgd2hpY2ggZm9udHMgdG8gdXNlLiAgVGhpcyBhbGxvd3MgdXMgdG8gcmVuZGVyIHRoZXNlXG4gICAgLy8gY2hhcmFjdGVycyB3aXRoIGEgc2VyaWYgZm9udCBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZSBicm93c2VyIHdvdWxkXG4gICAgLy8gZWl0aGVyIGRlZmF1bHQgdG8gYSBzYW5zIHNlcmlmIG9yIHJlbmRlciBhIHBsYWNlaG9sZGVyIGNoYXJhY3Rlci5cbiAgICAvLyBXZSB1c2UgQ1NTIGNsYXNzIG5hbWVzIGxpa2UgY2prX2ZhbGxiYWNrLCBoYW5ndWxfZmFsbGJhY2sgYW5kXG4gICAgLy8gYnJhaG1pY19mYWxsYmFjay4gU2VlIC4vdW5pY29kZVNjcmlwdHMuanMgZm9yIHRoZSBzZXQgb2YgcG9zc2libGVcbiAgICAvLyBzY3JpcHQgbmFtZXNcblxuICAgIHZhciBzY3JpcHQgPSBzY3JpcHRGcm9tQ29kZXBvaW50KHRoaXMudGV4dC5jaGFyQ29kZUF0KDApKTtcblxuICAgIGlmIChzY3JpcHQpIHtcbiAgICAgIHRoaXMuY2xhc3Nlcy5wdXNoKHNjcmlwdCArIFwiX2ZhbGxiYWNrXCIpO1xuICAgIH1cblxuICAgIGlmICgvW8Ouw6/DrcOsXS8udGVzdCh0aGlzLnRleHQpKSB7XG4gICAgICAvLyBhZGQgxKsgd2hlbiB3ZSBhZGQgRXh0ZW5kZWQgTGF0aW5cbiAgICAgIHRoaXMudGV4dCA9IGlDb21iaW5hdGlvbnNbdGhpcy50ZXh0XTtcbiAgICB9XG4gIH1cblxuICB2YXIgX3Byb3RvNCA9IFN5bWJvbE5vZGUucHJvdG90eXBlO1xuXG4gIF9wcm90bzQuaGFzQ2xhc3MgPSBmdW5jdGlvbiBoYXNDbGFzcyhjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdXRpbHMuY29udGFpbnModGhpcy5jbGFzc2VzLCBjbGFzc05hbWUpO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGV4dCBub2RlIG9yIHNwYW4gZnJvbSBhIHN5bWJvbCBub2RlLiBOb3RlIHRoYXQgYSBzcGFuIGlzIG9ubHlcbiAgICogY3JlYXRlZCBpZiBpdCBpcyBuZWVkZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvNC50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLnRleHQpO1xuICAgIHZhciBzcGFuID0gbnVsbDtcblxuICAgIGlmICh0aGlzLml0YWxpYyA+IDApIHtcbiAgICAgIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICAgIHNwYW4uc3R5bGUubWFyZ2luUmlnaHQgPSB0aGlzLml0YWxpYyArIFwiZW1cIjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGFzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHNwYW4gPSBzcGFuIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgICAgc3Bhbi5jbGFzc05hbWUgPSBjcmVhdGVDbGFzcyh0aGlzLmNsYXNzZXMpO1xuICAgIH1cblxuICAgIGZvciAodmFyIHN0eWxlIGluIHRoaXMuc3R5bGUpIHtcbiAgICAgIGlmICh0aGlzLnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSkge1xuICAgICAgICBzcGFuID0gc3BhbiB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTsgLy8gJEZsb3dGaXhNZSBGbG93IGRvZXNuJ3Qgc2VlbSB0byB1bmRlcnN0YW5kIHNwYW4uc3R5bGUncyB0eXBlLlxuXG4gICAgICAgIHNwYW4uc3R5bGVbc3R5bGVdID0gdGhpcy5zdHlsZVtzdHlsZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNwYW4pIHtcbiAgICAgIHNwYW4uYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICByZXR1cm4gc3BhbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBzeW1ib2wgbm9kZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG80LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgLy8gVE9ETyhhbHBlcnQpOiBNb3JlIGR1cGxpY2F0aW9uIHRoYW4gSSdkIGxpa2UgZnJvbVxuICAgIC8vIHNwYW4ucHJvdG90eXBlLnRvTWFya3VwIGFuZCBzeW1ib2xOb2RlLnByb3RvdHlwZS50b05vZGUuLi5cbiAgICB2YXIgbmVlZHNTcGFuID0gZmFsc2U7XG4gICAgdmFyIG1hcmt1cCA9IFwiPHNwYW5cIjtcblxuICAgIGlmICh0aGlzLmNsYXNzZXMubGVuZ3RoKSB7XG4gICAgICBuZWVkc1NwYW4gPSB0cnVlO1xuICAgICAgbWFya3VwICs9IFwiIGNsYXNzPVxcXCJcIjtcbiAgICAgIG1hcmt1cCArPSB1dGlscy5lc2NhcGUoY3JlYXRlQ2xhc3ModGhpcy5jbGFzc2VzKSk7XG4gICAgICBtYXJrdXAgKz0gXCJcXFwiXCI7XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlcyA9IFwiXCI7XG5cbiAgICBpZiAodGhpcy5pdGFsaWMgPiAwKSB7XG4gICAgICBzdHlsZXMgKz0gXCJtYXJnaW4tcmlnaHQ6XCIgKyB0aGlzLml0YWxpYyArIFwiZW07XCI7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICAgIHN0eWxlcyArPSB1dGlscy5oeXBoZW5hdGUoc3R5bGUpICsgXCI6XCIgKyB0aGlzLnN0eWxlW3N0eWxlXSArIFwiO1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIG5lZWRzU3BhbiA9IHRydWU7XG4gICAgICBtYXJrdXAgKz0gXCIgc3R5bGU9XFxcIlwiICsgdXRpbHMuZXNjYXBlKHN0eWxlcykgKyBcIlxcXCJcIjtcbiAgICB9XG5cbiAgICB2YXIgZXNjYXBlZCA9IHV0aWxzLmVzY2FwZSh0aGlzLnRleHQpO1xuXG4gICAgaWYgKG5lZWRzU3Bhbikge1xuICAgICAgbWFya3VwICs9IFwiPlwiO1xuICAgICAgbWFya3VwICs9IGVzY2FwZWQ7XG4gICAgICBtYXJrdXAgKz0gXCI8L3NwYW4+XCI7XG4gICAgICByZXR1cm4gbWFya3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXNjYXBlZDtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFN5bWJvbE5vZGU7XG59KCk7XG4vKipcbiAqIFNWRyBub2RlcyBhcmUgdXNlZCB0byByZW5kZXIgc3RyZXRjaHkgd2lkZSBlbGVtZW50cy5cbiAqL1xuXG52YXIgU3ZnTm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFN2Z05vZGUoY2hpbGRyZW4sIGF0dHJpYnV0ZXMpIHtcbiAgICB0aGlzLmNoaWxkcmVuID0gdm9pZCAwO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcyB8fCB7fTtcbiAgfVxuXG4gIHZhciBfcHJvdG81ID0gU3ZnTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNS50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCBcInN2Z1wiKTsgLy8gQXBwbHkgYXR0cmlidXRlc1xuXG4gICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCBhdHRyKSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmF0dHJpYnV0ZXNbYXR0cl0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZS5hcHBlbmRDaGlsZCh0aGlzLmNoaWxkcmVuW2ldLnRvTm9kZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcblxuICBfcHJvdG81LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgdmFyIG1hcmt1cCA9IFwiPHN2Z1wiOyAvLyBBcHBseSBhdHRyaWJ1dGVzXG5cbiAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgIG1hcmt1cCArPSBcIiBcIiArIGF0dHIgKyBcIj0nXCIgKyB0aGlzLmF0dHJpYnV0ZXNbYXR0cl0gKyBcIidcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtYXJrdXAgKz0gXCI+XCI7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIG1hcmt1cCArPSB0aGlzLmNoaWxkcmVuW2ldLnRvTWFya3VwKCk7XG4gICAgfVxuXG4gICAgbWFya3VwICs9IFwiPC9zdmc+XCI7XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfTtcblxuICByZXR1cm4gU3ZnTm9kZTtcbn0oKTtcbnZhciBkb21UcmVlX1BhdGhOb2RlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUGF0aE5vZGUocGF0aE5hbWUsIGFsdGVybmF0ZSkge1xuICAgIHRoaXMucGF0aE5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5hbHRlcm5hdGUgPSB2b2lkIDA7XG4gICAgdGhpcy5wYXRoTmFtZSA9IHBhdGhOYW1lO1xuICAgIHRoaXMuYWx0ZXJuYXRlID0gYWx0ZXJuYXRlOyAvLyBVc2VkIG9ubHkgZm9yIFxcc3FydFxuICB9XG5cbiAgdmFyIF9wcm90bzYgPSBQYXRoTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNi50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCBcInBhdGhcIik7XG5cbiAgICBpZiAodGhpcy5hbHRlcm5hdGUpIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZFwiLCB0aGlzLmFsdGVybmF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZFwiLCBzdmdHZW9tZXRyeV9wYXRoW3RoaXMucGF0aE5hbWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcblxuICBfcHJvdG82LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgaWYgKHRoaXMuYWx0ZXJuYXRlKSB7XG4gICAgICByZXR1cm4gXCI8cGF0aCBkPSdcIiArIHRoaXMuYWx0ZXJuYXRlICsgXCInLz5cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiPHBhdGggZD0nXCIgKyBzdmdHZW9tZXRyeV9wYXRoW3RoaXMucGF0aE5hbWVdICsgXCInLz5cIjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFBhdGhOb2RlO1xufSgpO1xudmFyIExpbmVOb2RlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGluZU5vZGUoYXR0cmlidXRlcykge1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIHx8IHt9O1xuICB9XG5cbiAgdmFyIF9wcm90bzcgPSBMaW5lTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNy50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCBcImxpbmVcIik7IC8vIEFwcGx5IGF0dHJpYnV0ZXNcblxuICAgIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcblxuICBfcHJvdG83LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgdmFyIG1hcmt1cCA9IFwiPGxpbmVcIjtcblxuICAgIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgbWFya3VwICs9IFwiIFwiICsgYXR0ciArIFwiPSdcIiArIHRoaXMuYXR0cmlidXRlc1thdHRyXSArIFwiJ1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIi8+XCI7XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfTtcblxuICByZXR1cm4gTGluZU5vZGU7XG59KCk7XG5mdW5jdGlvbiBhc3NlcnRTeW1ib2xEb21Ob2RlKGdyb3VwKSB7XG4gIGlmIChncm91cCBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSkge1xuICAgIHJldHVybiBncm91cDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBzeW1ib2xOb2RlIGJ1dCBnb3QgXCIgKyBTdHJpbmcoZ3JvdXApICsgXCIuXCIpO1xuICB9XG59XG5mdW5jdGlvbiBhc3NlcnRTcGFuKGdyb3VwKSB7XG4gIGlmIChncm91cCBpbnN0YW5jZW9mIGRvbVRyZWVfU3Bhbikge1xuICAgIHJldHVybiBncm91cDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBzcGFuPEh0bWxEb21Ob2RlPiBidXQgZ290IFwiICsgU3RyaW5nKGdyb3VwKSArIFwiLlwiKTtcbiAgfVxufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zdWJtb2R1bGVzL2thdGV4LWZvbnRzL2ZvbnRNZXRyaWNzRGF0YS5qc1xuLy8gVGhpcyBmaWxlIGlzIEdFTkVSQVRFRCBieSBidWlsZE1ldHJpY3Muc2guIERPIE5PVCBNT0RJRlkuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBmb250TWV0cmljc0RhdGEgPSAoe1xuICBcIkFNUy1SZWd1bGFyXCI6IHtcbiAgICBcIjY1XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjY2XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY3XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjY4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjY5XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjcwXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjcxXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjczXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjc0XCI6IFswLjE2NjY3LCAwLjY4ODg5LCAwLCAwLCAwLjVdLFxuICAgIFwiNzVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNzZcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNzdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuOTQ0NDVdLFxuICAgIFwiNzhcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiNzlcIjogWzAuMTY2NjcsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODBcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODFcIjogWzAuMTY2NjcsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODJcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODRcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODZcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDEuMF0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4OVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCIxMDdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiMTY1XCI6IFswLCAwLjY3NSwgMC4wMjUsIDAsIDAuNzVdLFxuICAgIFwiMTc0XCI6IFswLjE1NTU5LCAwLjY5MjI0LCAwLCAwLCAwLjk0NjY2XSxcbiAgICBcIjI0MFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIyOTVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTQwMjhdLFxuICAgIFwiNzEwXCI6IFswLCAwLjgyNSwgMCwgMCwgMi4zMzMzNF0sXG4gICAgXCI3MzJcIjogWzAsIDAuOSwgMCwgMCwgMi4zMzMzNF0sXG4gICAgXCI3NzBcIjogWzAsIDAuODI1LCAwLCAwLCAyLjMzMzM0XSxcbiAgICBcIjc3MVwiOiBbMCwgMC45LCAwLCAwLCAyLjMzMzM0XSxcbiAgICBcIjk4OVwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIxMDA4XCI6IFswLCAwLjQzMDU2LCAwLjA0MDI4LCAwLCAwLjY2NjY3XSxcbiAgICBcIjgyNDVcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuMjc1XSxcbiAgICBcIjg0NjNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTQwMjhdLFxuICAgIFwiODQ4N1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NDk4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjg1MDJcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODUwM1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4NTA0XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg1MTNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODU5MlwiOiBbLTAuMDM1OTgsIDAuNDY0MDIsIDAsIDAsIDAuNV0sXG4gICAgXCI4NTk0XCI6IFstMC4wMzU5OCwgMC40NjQwMiwgMCwgMCwgMC41XSxcbiAgICBcIjg2MDJcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODYwM1wiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjA2XCI6IFswLjAxMzU0LCAwLjUyMjM5LCAwLCAwLCAxLjBdLFxuICAgIFwiODYwOFwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MTBcIjogWzAuMDEzNTQsIDAuNTIyMzksIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODYxMVwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCI4NjE5XCI6IFswLCAwLjU0OTg2LCAwLCAwLCAxLjBdLFxuICAgIFwiODYyMFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MjFcIjogWy0wLjEzMzEzLCAwLjM3Nzg4LCAwLCAwLCAxLjM4ODg5XSxcbiAgICBcIjg2MjJcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODYyNFwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC41XSxcbiAgICBcIjg2MjVcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNV0sXG4gICAgXCI4NjMwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAxLjBdLFxuICAgIFwiODYzMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MzRcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODYzNVwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NjM4XCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICBcIjg2MzlcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiODY0MlwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC40MTY2N10sXG4gICAgXCI4NjQzXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICBcIjg2NDRcIjogWzAuMTgwOCwgMC42NzUsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjQ2XCI6IFswLjE4MDgsIDAuNjc1LCAwLCAwLCAxLjBdLFxuICAgIFwiODY0N1wiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NDhcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODY0OVwiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTBcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODY1MVwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTJcIjogWzAuMDEzNTQsIDAuNTIyMzksIDAsIDAsIDEuMF0sXG4gICAgXCI4NjUzXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTRcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1NVwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjY2XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY2N1wiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NjlcIjogWy0wLjEzMzEzLCAwLjM3Nzg4LCAwLCAwLCAxLjBdLFxuICAgIFwiODY3MlwiOiBbLTAuMDY0LCAwLjQzNywgMCwgMCwgMS4zMzRdLFxuICAgIFwiODY3NFwiOiBbLTAuMDY0LCAwLjQzNywgMCwgMCwgMS4zMzRdLFxuICAgIFwiODcwNVwiOiBbMCwgMC44MjUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzA4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjg3MDlcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODcxN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC40MjkxN10sXG4gICAgXCI4NzIyXCI6IFstMC4wMzU5OCwgMC40NjQwMiwgMCwgMCwgMC41XSxcbiAgICBcIjg3MjRcIjogWzAuMDgxOTgsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODcyNlwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzMzXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3MzZcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODczN1wiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NzM4XCI6IFswLjAzNTE3LCAwLjUyMjM5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg3MzlcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuMjIyMjJdLFxuICAgIFwiODc0MFwiOiBbMC4yNTE0MiwgMC43NDExMSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4NzQxXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjg3NDJcIjogWzAuMjUxNDIsIDAuNzQxMTEsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzU2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3NTdcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODc2NFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc2NVwiOiBbLTAuMTMzMTMsIDAuMzc3ODgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc2OVwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc3MFwiOiBbLTAuMDM2MjUsIDAuNDYzNzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc3NFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzc2XCI6IFstMC4wMTY4OCwgMC40ODMxMiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzc4XCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3ODJcIjogWzAuMDYwNjIsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4M1wiOiBbMC4wNjA2MiwgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzg1XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3ODZcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4N1wiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzkwXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3OTFcIjogWzAuMjI5NTgsIDAuNzI5NTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc5NlwiOiBbMC4wODE5OCwgMC45MTY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODA2XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MDdcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgwOFwiOiBbMC4yNTE0MiwgMC43NTcyNiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODA5XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MTJcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNV0sXG4gICAgXCI4ODE0XCI6IFswLjIwNTc2LCAwLjcwNTc2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MTVcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxNlwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODE3XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MThcIjogWzAuMjI5NTgsIDAuNzI5NTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxOVwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODIyXCI6IFswLjE4MDgsIDAuNjc1LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MjNcIjogWzAuMTgwOCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgyOFwiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODI5XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzBcIjogWzAuMjI5NTgsIDAuNzI5NTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzMVwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODMyXCI6IFswLjIwNTc2LCAwLjcwNTc2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzNcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg0MFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQxXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NDJcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg0M1wiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQ3XCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NDhcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg1OFwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU5XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NjFcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2MlwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2M1wiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2NFwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2NVwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg3MlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4ODczXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg4NzRcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiODg3NlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4ODc3XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg4NzhcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODg3OVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4ODgyXCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4ODNcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg4NFwiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODg1XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4ODhcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODg5MFwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI4ODkxXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg4OTJcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODkwMVwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4OTAzXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MDVcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkwNlwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTA3XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MDhcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkwOVwiOiBbLTAuMDM1OTgsIDAuNDY0MDIsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkxMFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC43NjA0Ml0sXG4gICAgXCI4OTExXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjc2MDQyXSxcbiAgICBcIjg5MTJcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkxM1wiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTE0XCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg5MTVcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODkxNlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4OTE4XCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTE5XCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTIwXCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAxLjMzMzM0XSxcbiAgICBcIjg5MjFcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDEuMzMzMzRdLFxuICAgIFwiODkyMlwiOiBbMC4zODU2OSwgMC44ODU2OSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTIzXCI6IFswLjM4NTY5LCAwLjg4NTY5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MjZcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkyN1wiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTI4XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MjlcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkzNFwiOiBbMC4yMzIyMiwgMC43NDExMSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTM1XCI6IFswLjIzMjIyLCAwLjc0MTExLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MzZcIjogWzAuMjMyMjIsIDAuNzQxMTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkzN1wiOiBbMC4yMzIyMiwgMC43NDExMSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTM4XCI6IFswLjIwNTc2LCAwLjcwNTc2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MzlcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODk0MFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTQxXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5OTRcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODk5NVwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5NDE2XCI6IFswLjE1NTU5LCAwLjY5MjI0LCAwLCAwLCAwLjkwMjIyXSxcbiAgICBcIjk0ODRcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNV0sXG4gICAgXCI5NDg4XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjVdLFxuICAgIFwiOTQ5MlwiOiBbMCwgMC4zNzc4OCwgMCwgMCwgMC41XSxcbiAgICBcIjk0OTZcIjogWzAsIDAuMzc3ODgsIDAsIDAsIDAuNV0sXG4gICAgXCI5NTg1XCI6IFswLjE5NDQ0LCAwLjY4ODg5LCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjk1ODZcIjogWzAuMTk0NDQsIDAuNzQxMTEsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTYzMlwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTYzM1wiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTY1MFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5NjUxXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjk2NTRcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTY2MFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5NjYxXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjk2NjRcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTY3NFwiOiBbMC4xMTExMSwgMC42OTIyNCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5NzMzXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjk0NDQ1XSxcbiAgICBcIjEwMDAzXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjEwMDE2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjEwNzMxXCI6IFswLjExMTExLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjEwODQ2XCI6IFswLjE5NDQ0LCAwLjc1NTgzLCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjEwODc3XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODc4XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg1XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg2XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg3XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg4XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg5XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODkwXCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODkxXCI6IFswLjQ4MjU2LCAwLjk4MjU2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODkyXCI6IFswLjQ4MjU2LCAwLjk4MjU2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTAxXCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTAyXCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTMzXCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM0XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM1XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM2XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM3XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM4XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTQ5XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTUwXCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTU1XCI6IFswLjI4NDgxLCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTU2XCI6IFswLjI4NDgxLCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzUwXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjIyMjIyXSxcbiAgICBcIjU3MzUxXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjU3MzUyXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzUzXCI6IFswLCAwLjQzMDU2LCAwLjA0MDI4LCAwLCAwLjY2NjY3XSxcbiAgICBcIjU3MzU2XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzU3XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzU4XCI6IFswLjQxOTUxLCAwLjkxOTUxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzU5XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzYwXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzYxXCI6IFswLjQxOTUxLCAwLjkxOTUxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY2XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY3XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY4XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY5XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzcwXCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzcxXCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XVxuICB9LFxuICBcIkNhbGlncmFwaGljLVJlZ3VsYXJcIjoge1xuICAgIFwiNDhcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI0OVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1MlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTRcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1NVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjU2XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xOTQ0NSwgMC43OTg0N10sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMC4wMzA0MSwgMC4xMzg4OSwgMC42NTY4MV0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4wNTgzNCwgMC4xMzg4OSwgMC41MjY1M10sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wODMzNCwgMC43NzEzOV0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODMzMywgMC4wODk0NCwgMC4xMTExMSwgMC41Mjc3OF0sXG4gICAgXCI3MFwiOiBbMCwgMC42ODMzMywgMC4wOTkzMSwgMC4xMTExMSwgMC43MTg3NV0sXG4gICAgXCI3MVwiOiBbMC4wOTcyMiwgMC42ODMzMywgMC4wNTkzLCAwLjExMTExLCAwLjU5NDg3XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjAwOTY1LCAwLjExMTExLCAwLjg0NDUyXSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjA3MzgyLCAwLCAwLjU0NDUyXSxcbiAgICBcIjc0XCI6IFswLjA5NzIyLCAwLjY4MzMzLCAwLjE4NDcyLCAwLjE2NjY3LCAwLjY3Nzc4XSxcbiAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLjAxNDQ1LCAwLjA1NTU2LCAwLjc2MTk1XSxcbiAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLjEzODg5LCAwLjY4OTcyXSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLCAwLjEzODg5LCAxLjIwMDldLFxuICAgIFwiNzhcIjogWzAsIDAuNjgzMzMsIDAuMTQ3MzYsIDAuMDgzMzQsIDAuODIwNDldLFxuICAgIFwiNzlcIjogWzAsIDAuNjgzMzMsIDAuMDI3NzgsIDAuMTExMTEsIDAuNzk2MTFdLFxuICAgIFwiODBcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAuMDgzMzQsIDAuNjk1NTZdLFxuICAgIFwiODFcIjogWzAuMDk3MjIsIDAuNjgzMzMsIDAsIDAuMTExMTEsIDAuODE2NjddLFxuICAgIFwiODJcIjogWzAsIDAuNjgzMzMsIDAsIDAuMDgzMzQsIDAuODQ3NV0sXG4gICAgXCI4M1wiOiBbMCwgMC42ODMzMywgMC4wNzUsIDAuMTM4ODksIDAuNjA1NTZdLFxuICAgIFwiODRcIjogWzAsIDAuNjgzMzMsIDAuMjU0MTcsIDAsIDAuNTQ0NjRdLFxuICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMDk5MzEsIDAuMDgzMzQsIDAuNjI1ODNdLFxuICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAsIDAuNjEyNzhdLFxuICAgIFwiODdcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAuMDgzMzQsIDAuOTg3NzhdLFxuICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMTQ2NDMsIDAuMTM4ODksIDAuNzEzM10sXG4gICAgXCI4OVwiOiBbMC4wOTcyMiwgMC42ODMzMywgMC4wODIyMiwgMC4wODMzNCwgMC42NjgzNF0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMC4wNzk0NCwgMC4xMzg4OSwgMC43MjQ3M11cbiAgfSxcbiAgXCJGcmFrdHVyLVJlZ3VsYXJcIjoge1xuICAgIFwiMzNcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjk1NzRdLFxuICAgIFwiMzRcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjE0NzFdLFxuICAgIFwiMzhcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNzM3ODZdLFxuICAgIFwiMzlcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjEyMDFdLFxuICAgIFwiNDBcIjogWzAuMjQ5ODIsIDAuNzQ5NDcsIDAsIDAsIDAuMzg4NjVdLFxuICAgIFwiNDFcIjogWzAuMjQ5ODIsIDAuNzQ5NDcsIDAsIDAsIDAuMzg4NjVdLFxuICAgIFwiNDJcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuMjc3NjRdLFxuICAgIFwiNDNcIjogWzAuMDgzMTksIDAuNTgyODMsIDAsIDAsIDAuNzU2MjNdLFxuICAgIFwiNDRcIjogWzAsIDAuMTA4MDMsIDAsIDAsIDAuMjc3NjRdLFxuICAgIFwiNDVcIjogWzAuMDgzMTksIDAuNTgyODMsIDAsIDAsIDAuNzU2MjNdLFxuICAgIFwiNDZcIjogWzAsIDAuMTA4MDMsIDAsIDAsIDAuMjc3NjRdLFxuICAgIFwiNDdcIjogWzAuMjQ5ODIsIDAuNzQ5NDcsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNDhcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNDlcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTBcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTFcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTJcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTNcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTRcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTVcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTdcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNThcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuMjE2MDZdLFxuICAgIFwiNTlcIjogWzAuMTI2MDQsIDAuNDc1MzQsIDAsIDAsIDAuMjE2MDZdLFxuICAgIFwiNjFcIjogWy0wLjEzMDk5LCAwLjM2ODY2LCAwLCAwLCAwLjc1NjIzXSxcbiAgICBcIjYzXCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjM2MjQ1XSxcbiAgICBcIjY1XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjcxNzZdLFxuICAgIFwiNjZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuODgzOTddLFxuICAgIFwiNjdcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNjEyNTRdLFxuICAgIFwiNjhcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuODMxNThdLFxuICAgIFwiNjlcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNjYyNzhdLFxuICAgIFwiNzBcIjogWzAuMTI2MDQsIDAuNjkxNDEsIDAsIDAsIDAuNjExMTldLFxuICAgIFwiNzFcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNzg1MzldLFxuICAgIFwiNzJcIjogWzAuMDYzMDIsIDAuNjkxNDEsIDAsIDAsIDAuNzIwM10sXG4gICAgXCI3M1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC41NTQ0OF0sXG4gICAgXCI3NFwiOiBbMC4xMjYwNCwgMC42OTE0MSwgMCwgMCwgMC41NTIzMV0sXG4gICAgXCI3NVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42Njg0NV0sXG4gICAgXCI3NlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42NjYwMl0sXG4gICAgXCI3N1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMS4wNDk1M10sXG4gICAgXCI3OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MzIxMl0sXG4gICAgXCI3OVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MjY5OV0sXG4gICAgXCI4MFwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC44Mjc1M10sXG4gICAgXCI4MVwiOiBbMC4wMzc4MSwgMC42OTE0MSwgMCwgMCwgMC44MjY5OV0sXG4gICAgXCI4MlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MjgwN10sXG4gICAgXCI4M1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44Mjg2MV0sXG4gICAgXCI4NFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42Njg5OV0sXG4gICAgXCI4NVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42NDU3Nl0sXG4gICAgXCI4NlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MzEzMV0sXG4gICAgXCI4N1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMS4wNDYwMl0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC43MTkyMl0sXG4gICAgXCI4OVwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC44MzI5M10sXG4gICAgXCI5MFwiOiBbMC4xMjYwNCwgMC42OTE0MSwgMCwgMCwgMC42MDIwMV0sXG4gICAgXCI5MVwiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC4yNzc2NF0sXG4gICAgXCI5M1wiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC4yNzc2NF0sXG4gICAgXCI5NFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC40OTk2NV0sXG4gICAgXCI5N1wiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC41MDA0Nl0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC41MTMxNV0sXG4gICAgXCI5OVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC4zODk0Nl0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuNDk4NTddLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjQwMDUzXSxcbiAgICBcIjEwMlwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC4zMjYyNl0sXG4gICAgXCIxMDNcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAzN10sXG4gICAgXCIxMDRcIjogWzAuMTg5MDYsIDAuNjkxNDEsIDAsIDAsIDAuNTIxMjZdLFxuICAgIFwiMTA1XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjI3ODk5XSxcbiAgICBcIjEwNlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4yODA4OF0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMzg5NDZdLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjI3OTUzXSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC43NjY3Nl0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTI2NjZdLFxuICAgIFwiMTExXCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjQ4ODg1XSxcbiAgICBcIjExMlwiOiBbMC4xODkwNiwgMC41MjM5NiwgMCwgMCwgMC41MDA0Nl0sXG4gICAgXCIxMTNcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNDg5MTJdLFxuICAgIFwiMTE0XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjM4OTE5XSxcbiAgICBcIjExNVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC40NDI2Nl0sXG4gICAgXCIxMTZcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuMzMzMDFdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjUxNzJdLFxuICAgIFwiMTE4XCI6IFswLCAwLjUyMzk2LCAwLCAwLCAwLjUxMThdLFxuICAgIFwiMTE5XCI6IFswLCAwLjUyMzk2LCAwLCAwLCAwLjc3MzUxXSxcbiAgICBcIjEyMFwiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC4zODg2NV0sXG4gICAgXCIxMjFcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNDk4ODRdLFxuICAgIFwiMTIyXCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjM5MDU0XSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjE0NzFdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4yMTQ3MV0sXG4gICAgXCI1ODExMlwiOiBbMCwgMC42MjExOSwgMCwgMCwgMC40OTc0OV0sXG4gICAgXCI1ODExM1wiOiBbMCwgMC42MjExOSwgMCwgMCwgMC40OTgzXSxcbiAgICBcIjU4MTE0XCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjMzMzI4XSxcbiAgICBcIjU4MTE1XCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjMyOTIzXSxcbiAgICBcIjU4MTE2XCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjUwMzQzXSxcbiAgICBcIjU4MTE3XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjMzMzAxXSxcbiAgICBcIjU4MTE4XCI6IFswLCAwLjYyMTE5LCAwLCAwLCAwLjMzNDA5XSxcbiAgICBcIjU4MTE5XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjUwMDczXVxuICB9LFxuICBcIk1haW4tQm9sZFwiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zNV0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MDI3OF0sXG4gICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC45NTgzM10sXG4gICAgXCIzNlwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuOTU4MzNdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjQzXCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjQ0XCI6IFswLjE5NDQ0LCAwLjE1NTU2LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjM4MzMzXSxcbiAgICBcIjQ2XCI6IFswLCAwLjE1NTU2LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjUwXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjUzXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjU2XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNThcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNjBcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiNjFcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjYyXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU0MzA1XSxcbiAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjY1XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg2OTQ0XSxcbiAgICBcIjY2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgxODA1XSxcbiAgICBcIjY3XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjY4XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg4MTk0XSxcbiAgICBcIjY5XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjc1NTU1XSxcbiAgICBcIjcwXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjcyMzYxXSxcbiAgICBcIjcxXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjkwNDE2XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjldLFxuICAgIFwiNzNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNDM2MTFdLFxuICAgIFwiNzRcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNTk0NDRdLFxuICAgIFwiNzVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOTAxMzhdLFxuICAgIFwiNzZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjkxNjZdLFxuICAgIFwiNzdcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDEuMDkxNjZdLFxuICAgIFwiNzhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOV0sXG4gICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44NjM4OF0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC43ODYxMV0sXG4gICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODYxMSwgMCwgMCwgMC44NjM4OF0sXG4gICAgXCI4MlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44NjI1XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjg0XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjhdLFxuICAgIFwiODVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODg0NzJdLFxuICAgIFwiODZcIjogWzAsIDAuNjg2MTEsIDAuMDE1OTcsIDAsIDAuODY5NDRdLFxuICAgIFwiODdcIjogWzAsIDAuNjg2MTEsIDAuMDE1OTcsIDAsIDEuMTg4ODhdLFxuICAgIFwiODhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiODlcIjogWzAsIDAuNjg2MTEsIDAuMDI4NzUsIDAsIDAuODY5NDRdLFxuICAgIFwiOTBcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiOTJcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5NVwiOiBbMC4zMSwgMC4xMzQ0NCwgMC4wMzE5NCwgMCwgMC41NzVdLFxuICAgIFwiOTdcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTU5MDJdLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiOTlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MjcwOF0sXG4gICAgXCIxMDJcIjogWzAsIDAuNjk0NDQsIDAuMTA5MDMsIDAsIDAuMzUxMzldLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAxNTk3LCAwLCAwLjU3NV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiMTA1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjEwNlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4zNTEzOV0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjA2OTRdLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC45NTgzM10sXG4gICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiMTExXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjYwNjk0XSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40NzM2MV0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDUzNjFdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYzNDkyLCAwLCAwLCAwLjQ0NzIyXSxcbiAgICBcIjExN1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCIxMThcIjogWzAsIDAuNDQ0NDQsIDAuMDE1OTcsIDAsIDAuNjA2OTRdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQ0NDQ0LCAwLjAxNTk3LCAwLCAwLjgzMDU1XSxcbiAgICBcIjEyMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42MDY5NF0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDE1OTcsIDAsIDAuNjA2OTRdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjEyM1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiMTI0XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjEyNVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiMTI2XCI6IFswLjM1LCAwLjM0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCIxNjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjE3MlwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiMTc3XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjE4NFwiOiBbMC4xNzAxNCwgMCwgMCwgMCwgMC41MTExMV0sXG4gICAgXCIxOThcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDEuMDQxNjZdLFxuICAgIFwiMjE1XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzQ3MiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCIyMjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTk3MjJdLFxuICAgIFwiMjMwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjI0N1wiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTQxNjcsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjMwNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCIzMzhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDEuMTY5NDRdLFxuICAgIFwiMzM5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC4zNTEzOV0sXG4gICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjcxMVwiOiBbMCwgMC42MzE5NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU5NjExLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjcxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI3MjlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNzMwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg2OTQ0XSxcbiAgICBcIjczMlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjkxNjZdLFxuICAgIFwiOTE2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjk1ODMzXSxcbiAgICBcIjkyMFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODA1NTVdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44MzA1NV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODMwNTVdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMC41NzVdLFxuICAgIFwiODIxMlwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4MjE2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiODIyMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MDI3OF0sXG4gICAgXCI4MjIxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYwMjc4XSxcbiAgICBcIjgyMjRcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiODIyNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4MjQyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjM0NDQ0XSxcbiAgICBcIjg0MDdcIjogWzAsIDAuNzI0NDQsIDAuMTU0ODYsIDAsIDAuNTc1XSxcbiAgICBcIjg0NjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY3NTldLFxuICAgIFwiODQ2NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzA1NV0sXG4gICAgXCI4NDY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MzYxXSxcbiAgICBcIjg0NzJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNzQwMjddLFxuICAgIFwiODQ3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzA1NV0sXG4gICAgXCI4NTAxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICBcIjg1OTJcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg1OTNcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg1OTRcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg1OTVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg1OTZcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg1OTdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg1OThcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODU5OVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjAwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg2MDFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODYzNlwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODYzN1wiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY0MFwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY0MVwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY1NlwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY1N1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3N10sXG4gICAgXCI4NjU4XCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjU5XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICBcIjg2NjBcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg2NjFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiODcwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4NzA2XCI6IFswLCAwLjY5NDQ0LCAwLjA2Mzg5LCAwLCAwLjYyODQ3XSxcbiAgICBcIjg3MDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODcwOVwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiODcxMVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45NTgzM10sXG4gICAgXCI4NzEyXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg3MTVcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiODcyMlwiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4NzIzXCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg3MjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3MjZcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3MjdcIjogWy0wLjAyNzc4LCAwLjQ3MjIyLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4NzI4XCI6IFstMC4wMjYzOSwgMC40NzM2MSwgMCwgMCwgMC41NzVdLFxuICAgIFwiODcyOVwiOiBbLTAuMDI2MzksIDAuNDczNjEsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3MzBcIjogWzAuMTgsIDAuODIsIDAsIDAsIDAuOTU4MzNdLFxuICAgIFwiODczM1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4NzM0XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg3MzZcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODczOVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI4NzQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4NzQzXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg3NDRcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiODc0NVwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4NzQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg3NDdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTI3NzgsIDAsIDAuNTY4NzVdLFxuICAgIFwiODc2NFwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODc2OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI4NzcxXCI6IFswLjAwMjIyLCAwLjUwMjIyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg3NzZcIjogWzAuMDI0NDQsIDAuNTI0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODc4MVwiOiBbMC4wMDIyMiwgMC41MDIyMiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODAxXCI6IFswLjAwMjIyLCAwLjUwMjIyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MDRcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODgwNVwiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODEwXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg4MTFcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODgyNlwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODI3XCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MzRcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODgzNVwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODM4XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MzlcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg0NlwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4ODQ5XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4NTBcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1MVwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4ODUyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg4NTNcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1NFwiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODU1XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4NTZcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1N1wiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODY2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICBcIjg4NjdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiODg2OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODY5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg5MDBcIjogWy0wLjAyNjM5LCAwLjQ3MzYxLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4OTAxXCI6IFstMC4wMjYzOSwgMC40NzM2MSwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI4OTAyXCI6IFstMC4wMjc3OCwgMC40NzIyMiwgMCwgMCwgMC41NzVdLFxuICAgIFwiODk2OFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4OTY5XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjg5NzBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiODk3MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4OTk0XCI6IFstMC4xMzg4OSwgMC4zNjExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4OTk1XCI6IFstMC4xMzg4OSwgMC4zNjExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI5NjUxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjAyMjIyXSxcbiAgICBcIjk2NTdcIjogWy0wLjAyNzc4LCAwLjQ3MjIyLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5NjYxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjAyMjIyXSxcbiAgICBcIjk2NjdcIjogWy0wLjAyNzc4LCAwLjQ3MjIyLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5NzExXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjk4MjRcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiOTgyNVwiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5ODI2XCI6IFswLjEyOTYzLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjk4MjdcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiOTgzN1wiOiBbMCwgMC43NSwgMCwgMCwgMC40NDcyMl0sXG4gICAgXCI5ODM4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjQ0NzIyXSxcbiAgICBcIjk4MzlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiMTAyMTZcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiMTAyMTdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiMTA4MTVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOV0sXG4gICAgXCIxMDkyN1wiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCIxMDkyOFwiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI1NzM3NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMF1cbiAgfSxcbiAgXCJNYWluLUJvbGRJdGFsaWNcIjoge1xuICAgIFwiMzNcIjogWzAsIDAuNjk0NDQsIDAuMTE0MTcsIDAsIDAuMzg2MTFdLFxuICAgIFwiMzRcIjogWzAsIDAuNjk0NDQsIDAuMDc5MzksIDAsIDAuNjIwNTVdLFxuICAgIFwiMzVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDY4MzMsIDAsIDAuOTQ0NDRdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAuMTI4NjEsIDAsIDAuOTQ0NDRdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAuMDg1MjgsIDAsIDAuODg1NTVdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAuMTI5NDUsIDAsIDAuMzU1NTVdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAuMTU4MDYsIDAsIDAuNDczMzNdLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAuMDMzMDYsIDAsIDAuNDczMzNdLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAuMTQzMzMsIDAsIDAuNTkxMTFdLFxuICAgIFwiNDNcIjogWzAuMTAzMzMsIDAuNjAzMzMsIDAuMDMzMDYsIDAsIDAuODg1NTVdLFxuICAgIFwiNDRcIjogWzAuMTk0NDQsIDAuMTQ3MjIsIDAsIDAsIDAuMzU1NTVdLFxuICAgIFwiNDVcIjogWzAsIDAuNDQ0NDQsIDAuMDI2MTEsIDAsIDAuNDE0NDRdLFxuICAgIFwiNDZcIjogWzAsIDAuMTQ3MjIsIDAsIDAsIDAuMzU1NTVdLFxuICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAuMTU4MDYsIDAsIDAuNTkxMTFdLFxuICAgIFwiNDhcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNDlcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTBcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTFcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTJcIjogWzAuMTk0NDQsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTNcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTRcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTVcIjogWzAuMTk0NDQsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTZcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTdcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNThcIjogWzAsIDAuNDQ0NDQsIDAuMDY2OTUsIDAsIDAuMzU1NTVdLFxuICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDY2OTUsIDAsIDAuMzU1NTVdLFxuICAgIFwiNjFcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLjA2ODMzLCAwLCAwLjg4NTU1XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLjExNDcyLCAwLCAwLjU5MTExXSxcbiAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLjA5MjA4LCAwLCAwLjg4NTU1XSxcbiAgICBcIjY1XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg2NTU1XSxcbiAgICBcIjY2XCI6IFswLCAwLjY4NjExLCAwLjA5OTIsIDAsIDAuODE2NjZdLFxuICAgIFwiNjdcIjogWzAsIDAuNjg2MTEsIDAuMTQyMDgsIDAsIDAuODI2NjZdLFxuICAgIFwiNjhcIjogWzAsIDAuNjg2MTEsIDAuMDkwNjIsIDAsIDAuODc1NTVdLFxuICAgIFwiNjlcIjogWzAsIDAuNjg2MTEsIDAuMTE0MzEsIDAsIDAuNzU2NjZdLFxuICAgIFwiNzBcIjogWzAsIDAuNjg2MTEsIDAuMTI5MDMsIDAsIDAuNzI3MjJdLFxuICAgIFwiNzFcIjogWzAsIDAuNjg2MTEsIDAuMDczNDcsIDAsIDAuODk1MjddLFxuICAgIFwiNzJcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDAuODk2MV0sXG4gICAgXCI3M1wiOiBbMCwgMC42ODYxMSwgMC4xNTY4MSwgMCwgMC40NzE2Nl0sXG4gICAgXCI3NFwiOiBbMCwgMC42ODYxMSwgMC4xNDUsIDAsIDAuNjEwNTVdLFxuICAgIFwiNzVcIjogWzAsIDAuNjg2MTEsIDAuMTQyMDgsIDAsIDAuODk0OTldLFxuICAgIFwiNzZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjk3NzddLFxuICAgIFwiNzdcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDEuMDcyNzddLFxuICAgIFwiNzhcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDAuODk2MV0sXG4gICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMC4wOTA2MiwgMCwgMC44NTQ5OV0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODYxMSwgMC4wOTkyLCAwLCAwLjc4NzIxXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4NjExLCAwLjA5MDYyLCAwLCAwLjg1NDk5XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4NjExLCAwLjAyNTU5LCAwLCAwLjg1OTQ0XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4NjExLCAwLjExMjY0LCAwLCAwLjY0OTk5XSxcbiAgICBcIjg0XCI6IFswLCAwLjY4NjExLCAwLjEyOTAzLCAwLCAwLjc5NjFdLFxuICAgIFwiODVcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDAuODgwODNdLFxuICAgIFwiODZcIjogWzAsIDAuNjg2MTEsIDAuMTg2MjUsIDAsIDAuODY1NTVdLFxuICAgIFwiODdcIjogWzAsIDAuNjg2MTEsIDAuMTg2MjUsIDAsIDEuMTU5OTldLFxuICAgIFwiODhcIjogWzAsIDAuNjg2MTEsIDAuMTU2ODEsIDAsIDAuODY1NTVdLFxuICAgIFwiODlcIjogWzAsIDAuNjg2MTEsIDAuMTk4MDMsIDAsIDAuODY1NTVdLFxuICAgIFwiOTBcIjogWzAsIDAuNjg2MTEsIDAuMTQyMDgsIDAsIDAuNzA4ODhdLFxuICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAuMTg3NSwgMCwgMC4zNTYxMV0sXG4gICAgXCI5M1wiOiBbMC4yNSwgMC43NSwgMC4wOTk3MiwgMCwgMC4zNTYxMV0sXG4gICAgXCI5NFwiOiBbMCwgMC42OTQ0NCwgMC4wNjcwOSwgMCwgMC41OTExMV0sXG4gICAgXCI5NVwiOiBbMC4zMSwgMC4xMzQ0NCwgMC4wOTgxMSwgMCwgMC41OTExMV0sXG4gICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMC4wOTQyNiwgMCwgMC41OTExMV0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMC4wNzg2MSwgMCwgMC41MzIyMl0sXG4gICAgXCI5OVwiOiBbMCwgMC40NDQ0NCwgMC4wNTIyMiwgMCwgMC41MzIyMl0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAuMTA4NjEsIDAsIDAuNTkxMTFdLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLjA4NSwgMCwgMC41MzIyMl0sXG4gICAgXCIxMDJcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMjE3NzgsIDAsIDAuNF0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMTA1LCAwLCAwLjUzMjIyXSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMC4wOTQyNiwgMCwgMC41OTExMV0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjkzMjYsIDAuMTEzODcsIDAsIDAuMzU1NTVdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY5MzI2LCAwLjE2NzIsIDAsIDAuMzU1NTVdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLjExMTExLCAwLCAwLjUzMjIyXSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4xMDg2MSwgMCwgMC4yOTY2Nl0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDQ0NDQsIDAuMDk0MjYsIDAsIDAuOTQ0NDRdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQ0NDQ0LCAwLjA5NDI2LCAwLCAwLjY0OTk5XSxcbiAgICBcIjExMVwiOiBbMCwgMC40NDQ0NCwgMC4wNzg2MSwgMCwgMC41OTExMV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDc4NjEsIDAsIDAuNTkxMTFdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjEwNSwgMCwgMC41MzIyMl0sXG4gICAgXCIxMTRcIjogWzAsIDAuNDQ0NDQsIDAuMTExMTEsIDAsIDAuNTAxNjddLFxuICAgIFwiMTE1XCI6IFswLCAwLjQ0NDQ0LCAwLjA4MTY3LCAwLCAwLjQ4Njk0XSxcbiAgICBcIjExNlwiOiBbMCwgMC42MzQ5MiwgMC4wOTYzOSwgMCwgMC4zODVdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLjA5NDI2LCAwLCAwLjYyMDU1XSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4xMTExMSwgMCwgMC41MzIyMl0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMTExMTEsIDAsIDAuNzY3NzddLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLjEyNTgzLCAwLCAwLjU2MDU1XSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDUsIDAsIDAuNTYxNjZdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLjEzODg5LCAwLCAwLjQ5MDU1XSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zNDQ0NCwgMC4xMTQ3MiwgMCwgMC41OTExMV0sXG4gICAgXCIxNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODY4NTNdLFxuICAgIFwiMTY4XCI6IFswLCAwLjY5NDQ0LCAwLjExNDczLCAwLCAwLjU5MTExXSxcbiAgICBcIjE3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC45NDg4OF0sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNTMyMjJdLFxuICAgIFwiMTk4XCI6IFswLCAwLjY4NjExLCAwLjExNDMxLCAwLCAxLjAyMjc3XSxcbiAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzQ3MiwgMC4wOTA2MiwgMCwgMC44ODU1NV0sXG4gICAgXCIyMjNcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDk3MzYsIDAsIDAuNjY1XSxcbiAgICBcIjIzMFwiOiBbMCwgMC40NDQ0NCwgMC4wODUsIDAsIDAuODI2NjZdLFxuICAgIFwiMjQ4XCI6IFswLjA5NzIyLCAwLjU0MTY3LCAwLjA5NDU4LCAwLCAwLjU5MTExXSxcbiAgICBcIjMwNVwiOiBbMCwgMC40NDQ0NCwgMC4wOTQyNiwgMCwgMC4zNTU1NV0sXG4gICAgXCIzMzhcIjogWzAsIDAuNjg2MTEsIDAuMTE0MzEsIDAsIDEuMTQwNTRdLFxuICAgIFwiMzM5XCI6IFswLCAwLjQ0NDQ0LCAwLjA4NSwgMCwgMC44MjY2Nl0sXG4gICAgXCI1NjdcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDQ2MTEsIDAsIDAuMzg1XSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMC4wNjcwOSwgMCwgMC41OTExMV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjMxOTQsIDAuMDgyNzEsIDAsIDAuNTkxMTFdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU5NDQ0LCAwLjEwNDQ0LCAwLCAwLjU5MTExXSxcbiAgICBcIjcxNFwiOiBbMCwgMC42OTQ0NCwgMC4wODUyOCwgMCwgMC41OTExMV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTkxMTFdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLjEwMzMzLCAwLCAwLjU5MTExXSxcbiAgICBcIjcyOVwiOiBbMCwgMC42OTQ0NCwgMC4xMjk0NSwgMCwgMC4zNTU1NV0sXG4gICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuOTQ4ODhdLFxuICAgIFwiNzMyXCI6IFswLCAwLjY5NDQ0LCAwLjExNDcyLCAwLCAwLjU5MTExXSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMC4xMTQ3MiwgMCwgMC41OTExMV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjg2MTEsIDAuMTI5MDMsIDAsIDAuNjk3NzddLFxuICAgIFwiOTE2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjk0NDQ0XSxcbiAgICBcIjkyMFwiOiBbMCwgMC42ODYxMSwgMC4wOTA2MiwgMCwgMC44ODU1NV0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODA2NjZdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY4NjExLCAwLjE1MDkyLCAwLCAwLjc2Nzc3XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42ODYxMSwgMC4xNzIwOCwgMCwgMC44OTYxXSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODYxMSwgMC4xMTQzMSwgMCwgMC44MjY2Nl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjg2MTEsIDAuMTA3NzgsIDAsIDAuODg1NTVdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4NjExLCAwLjA1NjMyLCAwLCAwLjgyNjY2XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODYxMSwgMC4xMDc3OCwgMCwgMC44ODU1NV0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjg2MTEsIDAuMDk5MiwgMCwgMC44MjY2Nl0sXG4gICAgXCI4MjExXCI6IFswLCAwLjQ0NDQ0LCAwLjA5ODExLCAwLCAwLjU5MTExXSxcbiAgICBcIjgyMTJcIjogWzAsIDAuNDQ0NDQsIDAuMDk4MTEsIDAsIDEuMTgyMjFdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42OTQ0NCwgMC4xMjk0NSwgMCwgMC4zNTU1NV0sXG4gICAgXCI4MjE3XCI6IFswLCAwLjY5NDQ0LCAwLjEyOTQ1LCAwLCAwLjM1NTU1XSxcbiAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAuMTY3NzIsIDAsIDAuNjIwNTVdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMC4wNzkzOSwgMCwgMC42MjA1NV1cbiAgfSxcbiAgXCJNYWluLUl0YWxpY1wiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMC4wNjk2MSwgMCwgMC41MTQ0NF0sXG4gICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNjYxNiwgMCwgMC44MTc3N10sXG4gICAgXCIzN1wiOiBbMC4wNTU1NiwgMC43NSwgMC4xMzYzOSwgMCwgMC44MTc3N10sXG4gICAgXCIzOFwiOiBbMCwgMC42OTQ0NCwgMC4wOTY5NCwgMCwgMC43NjY2Nl0sXG4gICAgXCIzOVwiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgXCI0MFwiOiBbMC4yNSwgMC43NSwgMC4xNjE5NCwgMCwgMC40MDg4OV0sXG4gICAgXCI0MVwiOiBbMC4yNSwgMC43NSwgMC4wMzY5NCwgMCwgMC40MDg4OV0sXG4gICAgXCI0MlwiOiBbMCwgMC43NSwgMC4xNDkxNywgMCwgMC41MTExMV0sXG4gICAgXCI0M1wiOiBbMC4wNTY2NywgMC41NjE2NywgMC4wMzY5NCwgMCwgMC43NjY2Nl0sXG4gICAgXCI0NFwiOiBbMC4xOTQ0NCwgMC4xMDU1NiwgMCwgMCwgMC4zMDY2N10sXG4gICAgXCI0NVwiOiBbMCwgMC40MzA1NiwgMC4wMjgyNiwgMCwgMC4zNTc3OF0sXG4gICAgXCI0NlwiOiBbMCwgMC4xMDU1NiwgMCwgMCwgMC4zMDY2N10sXG4gICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMC4xNjE5NCwgMCwgMC41MTExMV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI0OVwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1MFwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1MlwiOiBbMC4xOTQ0NCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1M1wiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1NVwiOiBbMC4xOTQ0NCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1OFwiOiBbMCwgMC40MzA1NiwgMC4wNTgyLCAwLCAwLjMwNjY3XSxcbiAgICBcIjU5XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA1ODIsIDAsIDAuMzA2NjddLFxuICAgIFwiNjFcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLjA2NjE2LCAwLCAwLjc2NjY2XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLjEyMjUsIDAsIDAuNTExMTFdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAuMDk1OTcsIDAsIDAuNzY2NjZdLFxuICAgIFwiNjVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzQzMzNdLFxuICAgIFwiNjZcIjogWzAsIDAuNjgzMzMsIDAuMTAyNTcsIDAsIDAuNzAzODldLFxuICAgIFwiNjdcIjogWzAsIDAuNjgzMzMsIDAuMTQ1MjgsIDAsIDAuNzE1NTVdLFxuICAgIFwiNjhcIjogWzAsIDAuNjgzMzMsIDAuMDk0MDMsIDAsIDAuNzU1XSxcbiAgICBcIjY5XCI6IFswLCAwLjY4MzMzLCAwLjEyMDI4LCAwLCAwLjY3ODMzXSxcbiAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjEzMzA1LCAwLCAwLjY1Mjc3XSxcbiAgICBcIjcxXCI6IFswLCAwLjY4MzMzLCAwLjA4NzIyLCAwLCAwLjc3MzYxXSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjc0MzMzXSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjE1ODA2LCAwLCAwLjM4NTU1XSxcbiAgICBcIjc0XCI6IFswLCAwLjY4MzMzLCAwLjE0MDI4LCAwLCAwLjUyNV0sXG4gICAgXCI3NVwiOiBbMCwgMC42ODMzMywgMC4xNDUyOCwgMCwgMC43Njg4OF0sXG4gICAgXCI3NlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42MjcyMl0sXG4gICAgXCI3N1wiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC44OTY2Nl0sXG4gICAgXCI3OFwiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC43NDMzM10sXG4gICAgXCI3OVwiOiBbMCwgMC42ODMzMywgMC4wOTQwMywgMCwgMC43NjY2Nl0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODMzMywgMC4xMDI1NywgMCwgMC42NzgzM10sXG4gICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODMzMywgMC4wOTQwMywgMCwgMC43NjY2Nl0sXG4gICAgXCI4MlwiOiBbMCwgMC42ODMzMywgMC4wMzg2OCwgMCwgMC43Mjk0NF0sXG4gICAgXCI4M1wiOiBbMCwgMC42ODMzMywgMC4xMTk3MiwgMCwgMC41NjIyMl0sXG4gICAgXCI4NFwiOiBbMCwgMC42ODMzMywgMC4xMzMwNSwgMCwgMC43MTU1NV0sXG4gICAgXCI4NVwiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC43NDMzM10sXG4gICAgXCI4NlwiOiBbMCwgMC42ODMzMywgMC4xODM2MSwgMCwgMC43NDMzM10sXG4gICAgXCI4N1wiOiBbMCwgMC42ODMzMywgMC4xODM2MSwgMCwgMC45OTg4OF0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODMzMywgMC4xNTgwNiwgMCwgMC43NDMzM10sXG4gICAgXCI4OVwiOiBbMCwgMC42ODMzMywgMC4xOTM4MywgMCwgMC43NDMzM10sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMC4xNDUyOCwgMCwgMC42MTMzM10sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMC4xODc1LCAwLCAwLjMwNjY3XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLjEwNTI4LCAwLCAwLjMwNjY3XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLjA2NjQ2LCAwLCAwLjUxMTExXSxcbiAgICBcIjk1XCI6IFswLjMxLCAwLjEyMDU2LCAwLjA5MjA4LCAwLCAwLjUxMTExXSxcbiAgICBcIjk3XCI6IFswLCAwLjQzMDU2LCAwLjA3NjcxLCAwLCAwLjUxMTExXSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLjA2MzEyLCAwLCAwLjQ2XSxcbiAgICBcIjk5XCI6IFswLCAwLjQzMDU2LCAwLjA1NjUzLCAwLCAwLjQ2XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMC4xMDMzMywgMCwgMC41MTExMV0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAuMDc1MTQsIDAsIDAuNDZdLFxuICAgIFwiMTAyXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjIxMTk0LCAwLCAwLjMwNjY3XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wODg0NywgMCwgMC40Nl0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAuMDc2NzEsIDAsIDAuNTExMTFdLFxuICAgIFwiMTA1XCI6IFswLCAwLjY1NTM2LCAwLjEwMTksIDAsIDAuMzA2NjddLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY1NTM2LCAwLjE0NDY3LCAwLCAwLjMwNjY3XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4xMDc2NCwgMCwgMC40Nl0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAuMTAzMzMsIDAsIDAuMjU1NTVdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQzMDU2LCAwLjA3NjcxLCAwLCAwLjgxNzc3XSxcbiAgICBcIjExMFwiOiBbMCwgMC40MzA1NiwgMC4wNzY3MSwgMCwgMC41NjIyMl0sXG4gICAgXCIxMTFcIjogWzAsIDAuNDMwNTYsIDAuMDYzMTIsIDAsIDAuNTExMTFdLFxuICAgIFwiMTEyXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA2MzEyLCAwLCAwLjUxMTExXSxcbiAgICBcIjExM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wODg0NywgMCwgMC40Nl0sXG4gICAgXCIxMTRcIjogWzAsIDAuNDMwNTYsIDAuMTA3NjQsIDAsIDAuNDIxNjZdLFxuICAgIFwiMTE1XCI6IFswLCAwLjQzMDU2LCAwLjA4MjA4LCAwLCAwLjQwODg5XSxcbiAgICBcIjExNlwiOiBbMCwgMC42MTUwOCwgMC4wOTQ4NiwgMCwgMC4zMzIyMl0sXG4gICAgXCIxMTdcIjogWzAsIDAuNDMwNTYsIDAuMDc2NzEsIDAsIDAuNTM2NjZdLFxuICAgIFwiMTE4XCI6IFswLCAwLjQzMDU2LCAwLjEwNzY0LCAwLCAwLjQ2XSxcbiAgICBcIjExOVwiOiBbMCwgMC40MzA1NiwgMC4xMDc2NCwgMCwgMC42NjQ0NF0sXG4gICAgXCIxMjBcIjogWzAsIDAuNDMwNTYsIDAuMTIwNDIsIDAsIDAuNDYzODldLFxuICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA4ODQ3LCAwLCAwLjQ4NTU1XSxcbiAgICBcIjEyMlwiOiBbMCwgMC40MzA1NiwgMC4xMjI5MiwgMCwgMC40MDg4OV0sXG4gICAgXCIxMjZcIjogWzAuMzUsIDAuMzE3ODYsIDAuMTE1ODUsIDAsIDAuNTExMTFdLFxuICAgIFwiMTYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc2OTA5XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42Njc4NiwgMC4xMDQ3NCwgMCwgMC41MTExMV0sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMxMjldLFxuICAgIFwiMTg0XCI6IFswLjE3MDE0LCAwLCAwLCAwLCAwLjQ2XSxcbiAgICBcIjE5OFwiOiBbMCwgMC42ODMzMywgMC4xMjAyOCwgMCwgMC44ODI3N10sXG4gICAgXCIyMTZcIjogWzAuMDQ4NjEsIDAuNzMxOTQsIDAuMDk0MDMsIDAsIDAuNzY2NjZdLFxuICAgIFwiMjIzXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjEwNTE0LCAwLCAwLjUzNjY2XSxcbiAgICBcIjIzMFwiOiBbMCwgMC40MzA1NiwgMC4wNzUxNCwgMCwgMC43MTU1NV0sXG4gICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTI3NzgsIDAuMDkxOTQsIDAsIDAuNTExMTFdLFxuICAgIFwiMzA1XCI6IFswLCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjMyMjQ2XSxcbiAgICBcIjMzOFwiOiBbMCwgMC42ODMzMywgMC4xMjAyOCwgMCwgMC45ODQ5OV0sXG4gICAgXCIzMzlcIjogWzAsIDAuNDMwNTYsIDAuMDc1MTQsIDAsIDAuNzE1NTVdLFxuICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjM4NDAzXSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMC4wNjY0NiwgMCwgMC41MTExMV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjI4NDcsIDAuMDgyOTUsIDAsIDAuNTExMTFdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU2MTY3LCAwLjEwMzMzLCAwLCAwLjUxMTExXSxcbiAgICBcIjcxNFwiOiBbMCwgMC42OTQ0NCwgMC4wOTY5NCwgMCwgMC41MTExMV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLjEwODA2LCAwLCAwLjUxMTExXSxcbiAgICBcIjcyOVwiOiBbMCwgMC42Njc4NiwgMC4xMTc1MiwgMCwgMC4zMDY2N10sXG4gICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMxMjldLFxuICAgIFwiNzMyXCI6IFswLCAwLjY2Nzg2LCAwLjExNTg1LCAwLCAwLjUxMTExXSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMC4xMjI1LCAwLCAwLjUxMTExXSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMC4xMzMwNSwgMCwgMC42MjcyMl0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuODE3NzddLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLjA5NDAzLCAwLCAwLjc2NjY2XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42OTIyMl0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMTUyOTQsIDAsIDAuNjY0NDRdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjc0MzMzXSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODMzMywgMC4xMjAyOCwgMCwgMC43MTU1NV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTExMTEsIDAsIDAuNzY2NjZdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLjA1OTg2LCAwLCAwLjcxNTU1XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODMzMywgMC4xMTExMSwgMCwgMC43NjY2Nl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMTAyNTcsIDAsIDAuNzE1NTVdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40MzA1NiwgMC4wOTIwOCwgMCwgMC41MTExMV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQzMDU2LCAwLjA5MjA4LCAwLCAxLjAyMjIyXSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAuMTI0MTcsIDAsIDAuMzA2NjddLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLjE2ODUsIDAsIDAuNTE0NDRdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMC4wNjk2MSwgMCwgMC41MTQ0NF0sXG4gICAgXCI4NDYzXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU0MDI4XVxuICB9LFxuICBcIk1haW4tUmVndWxhclwiOiB7XG4gICAgXCIzMlwiOiBbMCwgMCwgMCwgMCwgMC4yNV0sXG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI0M1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI0NFwiOiBbMC4xOTQ0NCwgMC4xMDU1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI0NVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4zMzMzM10sXG4gICAgXCI0NlwiOiBbMCwgMC4xMDU1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjQ4XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1MFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjUxXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1M1wiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjU0XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjU3XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNThcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNjBcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjYxXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI2MlwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiNjZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzA4MzRdLFxuICAgIFwiNjdcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiNjhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzYzODldLFxuICAgIFwiNjlcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjgwNTZdLFxuICAgIFwiNzBcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjUyNzhdLFxuICAgIFwiNzFcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzg0NzJdLFxuICAgIFwiNzJcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiNzNcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuMzYxMTFdLFxuICAgIFwiNzRcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNTEzODldLFxuICAgIFwiNzVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNzZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjI1XSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjkxNjY3XSxcbiAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY4MDU2XSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjczNjExXSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjg0XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg1XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICBcIjg2XCI6IFswLCAwLjY4MzMzLCAwLjAxMzg5LCAwLCAwLjc1XSxcbiAgICBcIjg3XCI6IFswLCAwLjY4MzMzLCAwLjAxMzg5LCAwLCAxLjAyNzc4XSxcbiAgICBcIjg4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICBcIjg5XCI6IFswLCAwLjY4MzMzLCAwLjAyNSwgMCwgMC43NV0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42MTExMV0sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI5MlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiOTVcIjogWzAuMzEsIDAuMTIwNTYsIDAuMDI3NzgsIDAsIDAuNV0sXG4gICAgXCI5N1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjk5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTAyXCI6IFswLCAwLjY5NDQ0LCAwLjA3Nzc4LCAwLCAwLjMwNTU2XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wMTM4OSwgMCwgMC41XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjY3ODYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY2Nzg2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjExMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMTFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4zOTE2N10sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuMzk0NDVdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMDEzODksIDAsIDAuNTI3NzhdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjAxMzg5LCAwLCAwLjcyMjIyXSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDEzODksIDAsIDAuNTI3NzhdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEyM1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjEyNFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCIxMjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCIxMjZcIjogWzAuMzUsIDAuMzE3ODYsIDAsIDAsIDAuNV0sXG4gICAgXCIxNjBcIjogWzAsIDAsIDAsIDAsIDAuMjVdLFxuICAgIFwiMTY3XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42Njc4NiwgMCwgMCwgMC41XSxcbiAgICBcIjE3MlwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzVdLFxuICAgIFwiMTc3XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjE4MlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTk4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjkwMjc4XSxcbiAgICBcIjIxNVwiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIyMTZcIjogWzAuMDQ4NjEsIDAuNzMxOTQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMjIzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiMjMwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjI0N1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTI3NzgsIDAsIDAsIDAuNV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiMzM4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAxLjAxMzg5XSxcbiAgICBcIjMzOVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI1NjdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiNzEwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzExXCI6IFswLCAwLjYyODQ3LCAwLCAwLCAwLjVdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU2Nzc4LCAwLCAwLCAwLjVdLFxuICAgIFwiNzE0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY2Nzg2LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NV0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjY3ODYsIDAsIDAsIDAuNV0sXG4gICAgXCI3MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjI1XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI5MjBcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY5NDQ1XSxcbiAgICBcIjkyNlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MjhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MzRcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4MjExXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAwLjVdLFxuICAgIFwiODIxMlwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMCwgMS4wXSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjgyMjRcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiODIyNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4MjMwXCI6IFswLCAwLjEyLCAwLCAwLCAxLjE3Ml0sXG4gICAgXCI4MjQyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjI3NV0sXG4gICAgXCI4NDA3XCI6IFswLCAwLjcxNDQ0LCAwLjE1MzgyLCAwLCAwLjVdLFxuICAgIFwiODQ2M1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NDAyOF0sXG4gICAgXCI4NDY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg0NjdcIjogWzAsIDAuNjk0NDQsIDAsIDAuMTExMTEsIDAuNDE2NjddLFxuICAgIFwiODQ3MlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4xMTExMSwgMC42MzY0Nl0sXG4gICAgXCI4NDc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg1MDFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODU5MlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NTkzXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODU5NFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NTk1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODU5NlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NTk3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiODU5OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4wXSxcbiAgICBcIjg1OTlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjAwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgIFwiODYwMVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MTRcIjogWzAuMDExLCAwLjUxMSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MTdcIjogWzAuMDExLCAwLjUxMSwgMCwgMCwgMS4xMjZdLFxuICAgIFwiODYxOFwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjEyNl0sXG4gICAgXCI4NjM2XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2MzdcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY0MFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjQxXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTJcIjogWzAuMDExLCAwLjY3MSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTZcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1N1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4NjU4XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODY2MFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjYxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg3MDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODcwNlwiOiBbMCwgMC42OTQ0NCwgMC4wNTU1NiwgMC4wODMzNCwgMC41MzA5XSxcbiAgICBcIjg3MDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODcwOVwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjg3MTFcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODcxMlwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODcxNVwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODcyMlwiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzIzXCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3MjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzI2XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiODcyN1wiOiBbLTAuMDM0NzIsIDAuNDY1MjgsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzI4XCI6IFstMC4wNTU1NSwgMC40NDQ0NSwgMCwgMCwgMC41XSxcbiAgICBcIjg3MjlcIjogWy0wLjA1NTU1LCAwLjQ0NDQ1LCAwLCAwLCAwLjVdLFxuICAgIFwiODczMFwiOiBbMC4yLCAwLjgsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODczM1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzM0XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAxLjBdLFxuICAgIFwiODczNlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NzM5XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjg3NDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzQzXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3NDRcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODc0NVwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NzQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3NDdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTExMTEsIDAsIDAuNDE2NjddLFxuICAgIFwiODc2NFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc2OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4NzcxXCI6IFstMC4wMzYyNSwgMC40NjM3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzczXCI6IFstMC4wMjIsIDAuNTg5LCAwLCAwLCAxLjBdLFxuICAgIFwiODc3NlwiOiBbLTAuMDE2ODgsIDAuNDgzMTIsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4MVwiOiBbLTAuMDM2MjUsIDAuNDYzNzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4NFwiOiBbLTAuMTMzLCAwLjY3LCAwLCAwLCAwLjc3OF0sXG4gICAgXCI4ODAxXCI6IFstMC4wMzYyNSwgMC40NjM3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODA0XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MDVcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxMFwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDEuMF0sXG4gICAgXCI4ODExXCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMS4wXSxcbiAgICBcIjg4MjZcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MjdcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzRcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzVcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzhcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzOVwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg4NDlcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg1MFwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODUxXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg4NTJcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODg1M1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU0XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NTVcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg1NlwiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU3XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODg2N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4ODY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NjlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg3MlwiOiBbMC4yNDksIDAuNzUsIDAsIDAsIDAuODY3XSxcbiAgICBcIjg5MDBcIjogWy0wLjA1NTU1LCAwLjQ0NDQ1LCAwLCAwLCAwLjVdLFxuICAgIFwiODkwMVwiOiBbLTAuMDU1NTUsIDAuNDQ0NDUsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODkwMlwiOiBbLTAuMDM0NzIsIDAuNDY1MjgsIDAsIDAsIDAuNV0sXG4gICAgXCI4OTA0XCI6IFswLjAwNSwgMC41MDUsIDAsIDAsIDAuOV0sXG4gICAgXCI4OTQyXCI6IFswLjAzLCAwLjksIDAsIDAsIDAuMjc4XSxcbiAgICBcIjg5NDNcIjogWy0wLjE5LCAwLjMxLCAwLCAwLCAxLjE3Ml0sXG4gICAgXCI4OTQ1XCI6IFstMC4xLCAwLjgyLCAwLCAwLCAxLjI4Ml0sXG4gICAgXCI4OTY4XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjg5NjlcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiODk3MFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4OTcxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjg5OTRcIjogWy0wLjE0MjM2LCAwLjM1NzY0LCAwLCAwLCAxLjBdLFxuICAgIFwiODk5NVwiOiBbLTAuMTQyMzYsIDAuMzU3NjQsIDAsIDAsIDEuMF0sXG4gICAgXCI5MTM2XCI6IFswLjI0NCwgMC43NDQsIDAsIDAsIDAuNDEyXSxcbiAgICBcIjkxMzdcIjogWzAuMjQ0LCAwLjc0NCwgMCwgMCwgMC40MTJdLFxuICAgIFwiOTY1MVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5NjU3XCI6IFstMC4wMzQ3MiwgMC40NjUyOCwgMCwgMCwgMC41XSxcbiAgICBcIjk2NjFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTY2N1wiOiBbLTAuMDM0NzIsIDAuNDY1MjgsIDAsIDAsIDAuNV0sXG4gICAgXCI5NzExXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgIFwiOTgyNFwiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5ODI1XCI6IFswLjEyOTYzLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjk4MjZcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTgyN1wiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5ODM3XCI6IFswLCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjk4MzhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiOTgzOVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCIxMDIxNlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCIxMDIxN1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCIxMDIyMlwiOiBbMC4yNDQsIDAuNzQ0LCAwLCAwLCAwLjQxMl0sXG4gICAgXCIxMDIyM1wiOiBbMC4yNDQsIDAuNzQ0LCAwLCAwLCAwLjQxMl0sXG4gICAgXCIxMDIyOVwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjYwOV0sXG4gICAgXCIxMDIzMFwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjYzOF0sXG4gICAgXCIxMDIzMVwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjg1OV0sXG4gICAgXCIxMDIzMlwiOiBbMC4wMjQsIDAuNTI1LCAwLCAwLCAxLjYwOV0sXG4gICAgXCIxMDIzM1wiOiBbMC4wMjQsIDAuNTI1LCAwLCAwLCAxLjYzOF0sXG4gICAgXCIxMDIzNFwiOiBbMC4wMjQsIDAuNTI1LCAwLCAwLCAxLjg1OF0sXG4gICAgXCIxMDIzNlwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjYzOF0sXG4gICAgXCIxMDgxNVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43NV0sXG4gICAgXCIxMDkyN1wiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIxMDkyOFwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI1NzM3NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMF1cbiAgfSxcbiAgXCJNYXRoLUJvbGRJdGFsaWNcIjoge1xuICAgIFwiNjVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiNjZcIjogWzAsIDAuNjg2MTEsIDAuMDQ4MzUsIDAsIDAuODY2NF0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODYxMSwgMC4wNjk3OSwgMCwgMC44MTY5NF0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODYxMSwgMC4wMzE5NCwgMCwgMC45MzgxMl0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODYxMSwgMC4wNTQ1MSwgMCwgMC44MTAwN10sXG4gICAgXCI3MFwiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42ODg4OV0sXG4gICAgXCI3MVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44ODY3M10sXG4gICAgXCI3MlwiOiBbMCwgMC42ODYxMSwgMC4wODIyOSwgMCwgMC45ODIyOV0sXG4gICAgXCI3M1wiOiBbMCwgMC42ODYxMSwgMC4wNzc3OCwgMCwgMC41MTExMV0sXG4gICAgXCI3NFwiOiBbMCwgMC42ODYxMSwgMC4xMDA2OSwgMCwgMC42MzEyNV0sXG4gICAgXCI3NVwiOiBbMCwgMC42ODYxMSwgMC4wNjk3OSwgMCwgMC45NzExOF0sXG4gICAgXCI3NlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC43NTU1NV0sXG4gICAgXCI3N1wiOiBbMCwgMC42ODYxMSwgMC4xMTQyNCwgMCwgMS4xNDIwMV0sXG4gICAgXCI3OFwiOiBbMCwgMC42ODYxMSwgMC4xMTQyNCwgMCwgMC45NTAzNF0sXG4gICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMC4wMzE5NCwgMCwgMC44MzY2Nl0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC43MjMwOV0sXG4gICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODYxMSwgMCwgMCwgMC44Njg2MV0sXG4gICAgXCI4MlwiOiBbMCwgMC42ODYxMSwgMC4wMDQyMSwgMCwgMC44NzIzNV0sXG4gICAgXCI4M1wiOiBbMCwgMC42ODYxMSwgMC4wNTM4MiwgMCwgMC42OTI3MV0sXG4gICAgXCI4NFwiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42MzY2M10sXG4gICAgXCI4NVwiOiBbMCwgMC42ODYxMSwgMC4xMTQyNCwgMCwgMC44MDAyN10sXG4gICAgXCI4NlwiOiBbMCwgMC42ODYxMSwgMC4yNTU1NSwgMCwgMC42Nzc3OF0sXG4gICAgXCI4N1wiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMS4wOTMwNV0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODYxMSwgMC4wNzc3OCwgMCwgMC45NDcyMl0sXG4gICAgXCI4OVwiOiBbMCwgMC42ODYxMSwgMC4yNTU1NSwgMCwgMC42NzQ1OF0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODYxMSwgMC4wNjk3OSwgMCwgMC43NzI1N10sXG4gICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42MzI4N10sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MjA4M10sXG4gICAgXCI5OVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MTM0Ml0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjA5NzJdLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjU1MzYxXSxcbiAgICBcIjEwMlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4xMTA0MiwgMCwgMC41NjgwNl0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNTQ0OV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY3NTldLFxuICAgIFwiMTA1XCI6IFswLCAwLjY5MzI2LCAwLCAwLCAwLjQwNDhdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY5MzI2LCAwLjA2MjIsIDAsIDAuNDcwODNdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLjAxODUyLCAwLCAwLjYwMzddLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjAwODgsIDAsIDAuMzQ4MTVdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAxLjAzMjRdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjcxMjk2XSxcbiAgICBcIjExMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41ODQ3Ml0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjAwOTJdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjU0MjEzXSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMC41Mjg3XSxcbiAgICBcIjExNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MzEyNV0sXG4gICAgXCIxMTZcIjogWzAsIDAuNjM0OTIsIDAsIDAsIDAuNDE1MjhdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjY4MTAyXSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC41NjY2Nl0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMDI3NzgsIDAsIDAuODMxNDhdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjY1OTAzXSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC41OTAyOF0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDQ0NDQsIDAuMDQyMTMsIDAsIDAuNTU1MDldLFxuICAgIFwiOTE1XCI6IFswLCAwLjY4NjExLCAwLjE1OTcyLCAwLCAwLjY1Njk0XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45NTgzM10sXG4gICAgXCI5MjBcIjogWzAsIDAuNjg2MTEsIDAuMDMxOTQsIDAsIDAuODY3MjJdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgwNTU1XSxcbiAgICBcIjkyNlwiOiBbMCwgMC42ODYxMSwgMC4wNzQ1OCwgMCwgMC44NDEyNV0sXG4gICAgXCI5MjhcIjogWzAsIDAuNjg2MTEsIDAuMDgyMjksIDAsIDAuOTgyMjldLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4NjExLCAwLjA1NDUxLCAwLCAwLjg4NTA3XSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42NzA4M10sXG4gICAgXCI5MzRcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4NjExLCAwLjExNjUzLCAwLCAwLjcxNDAyXSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODYxMSwgMC4wNDgzNSwgMCwgMC44Nzg5XSxcbiAgICBcIjk0NVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC43NjA2NF0sXG4gICAgXCI5NDZcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM0MDMsIDAsIDAuNjU5NzJdLFxuICAgIFwiOTQ3XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA2Mzg5LCAwLCAwLjU5MDAzXSxcbiAgICBcIjk0OFwiOiBbMCwgMC42OTQ0NCwgMC4wMzgxOSwgMCwgMC41MjIyMl0sXG4gICAgXCI5NDlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTI4ODJdLFxuICAgIFwiOTUwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA2MjE1LCAwLCAwLjUwODMzXSxcbiAgICBcIjk1MVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC42XSxcbiAgICBcIjk1MlwiOiBbMCwgMC42OTQ0NCwgMC4wMzE5NCwgMCwgMC41NjE4XSxcbiAgICBcIjk1M1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40MTIwNF0sXG4gICAgXCI5NTRcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjY3NTldLFxuICAgIFwiOTU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY3MDgzXSxcbiAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC43MDc4N10sXG4gICAgXCI5NTdcIjogWzAsIDAuNDQ0NDQsIDAuMDY4OTgsIDAsIDAuNTc2ODVdLFxuICAgIFwiOTU4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjAzMDIxLCAwLCAwLjUwODMzXSxcbiAgICBcIjk1OVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41ODQ3Ml0sXG4gICAgXCI5NjBcIjogWzAsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNjgyNDFdLFxuICAgIFwiOTYxXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjYxMThdLFxuICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQ0NDQ0LCAwLjA3OTE3LCAwLCAwLjQyMzYxXSxcbiAgICBcIjk2M1wiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC42ODU4OF0sXG4gICAgXCI5NjRcIjogWzAsIDAuNDQ0NDQsIDAuMTM0NzIsIDAsIDAuNTIwODNdLFxuICAgIFwiOTY1XCI6IFswLCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjYzMDU1XSxcbiAgICBcIjk2NlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC43NDcyMl0sXG4gICAgXCI5NjdcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNzE4MDVdLFxuICAgIFwiOTY4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjAzNzA0LCAwLCAwLjc1ODMzXSxcbiAgICBcIjk2OVwiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC43MTc4Ml0sXG4gICAgXCI5NzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjkxNTVdLFxuICAgIFwiOTgxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjcxMjVdLFxuICAgIFwiOTgyXCI6IFswLCAwLjQ0NDQ0LCAwLjAzMTk0LCAwLCAwLjk3NV0sXG4gICAgXCIxMDA5XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjYxMThdLFxuICAgIFwiMTAxM1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40ODMzM11cbiAgfSxcbiAgXCJNYXRoLUl0YWxpY1wiOiB7XG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xMzg4OSwgMC43NV0sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMC4wNTAxNywgMC4wODMzNCwgMC43NTg1MV0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wODMzNCwgMC43MTQ3Ml0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wNTU1NiwgMC44Mjc5Ml0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43MzgyXSxcbiAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MzA2XSxcbiAgICBcIjcxXCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc4NjI1XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjA3ODQ3LCAwLjExMTExLCAwLjQzOTU4XSxcbiAgICBcIjc0XCI6IFswLCAwLjY4MzMzLCAwLjA5NjE4LCAwLjE2NjY3LCAwLjU1NDUxXSxcbiAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLjA3MTUzLCAwLjA1NTU2LCAwLjg0OTMxXSxcbiAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLjAyNzc4LCAwLjY4MDU2XSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjk3MDE0XSxcbiAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjgwMzQ3XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MjAxXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc5MDU2XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLjAwNzczLCAwLjA4MzM0LCAwLjc1OTI5XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjYxMzJdLFxuICAgIFwiODRcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNTg0MzhdLFxuICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDI3NzgsIDAuNjgyNzhdLFxuICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgzMzNdLFxuICAgIFwiODdcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAsIDAuOTQ0NDVdLFxuICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMDc4NDcsIDAuMDgzMzQsIDAuODI4NDddLFxuICAgIFwiODlcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgwNTZdLFxuICAgIFwiOTBcIjogWzAsIDAuNjgzMzMsIDAuMDcxNTMsIDAuMDgzMzQsIDAuNjgyNjRdLFxuICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI4NTldLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDI5MTddLFxuICAgIFwiOTlcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDMyNzZdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLjE2NjY3LCAwLjUyMDQ5XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40NjU2M10sXG4gICAgXCIxMDJcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTA3NjQsIDAuMTY2NjcsIDAuNDg5NTldLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjAyNzc4LCAwLjQ3Njk3XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzYxNl0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjU5NTIsIDAsIDAsIDAuMzQ0NTFdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY1OTUyLCAwLjA1NzI0LCAwLCAwLjQxMTgxXSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4wMzE0OCwgMCwgMC41MjA2XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4wMTk2OCwgMC4wODMzNCwgMC4yOTgzOF0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuODc4MDFdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjYwMDIzXSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40ODQ3Ml0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTAzMTNdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjA4MzM0LCAwLjQ0NjQxXSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMC4wNTU1NiwgMC40NTExNl0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDY4NzVdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLCAwLjA4MzM0LCAwLjM2MTExXSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzI0Nl0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNDg0NzJdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjAyNjkxLCAwLjA4MzM0LCAwLjcxNTkyXSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzE1M10sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDkwMjhdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLjA0Mzk4LCAwLjA1NTU2LCAwLjQ2NTA1XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wODMzNCwgMC42MTUyOF0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTY2NjcsIDAuODMzMzRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODMzMywgMCwgMC4xNjY2NywgMC42OTQ0NV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMDc1NjksIDAuMDgzMzQsIDAuNzQyMzZdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43Nzk4Nl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDU1NTYsIDAuNTgzMzNdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjY2NjY3XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODMzMywgMC4xMSwgMC4wNTU1NiwgMC42MTIyMl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMDUwMTcsIDAuMDgzMzQsIDAuNzcyNF0sXG4gICAgXCI5NDVcIjogWzAsIDAuNDMwNTYsIDAuMDAzNywgMC4wMjc3OCwgMC42Mzk3XSxcbiAgICBcIjk0NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNTI3OCwgMC4wODMzNCwgMC41NjU2M10sXG4gICAgXCI5NDdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDU1NTYsIDAsIDAuNTE3NzNdLFxuICAgIFwiOTQ4XCI6IFswLCAwLjY5NDQ0LCAwLjAzNzg1LCAwLjA1NTU2LCAwLjQ0NDQ0XSxcbiAgICBcIjk0OVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC40NjYzMl0sXG4gICAgXCI5NTBcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDczNzgsIDAuMDgzMzQsIDAuNDM3NV0sXG4gICAgXCI5NTFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDk2NTNdLFxuICAgIFwiOTUyXCI6IFswLCAwLjY5NDQ0LCAwLjAyNzc4LCAwLjA4MzM0LCAwLjQ2OTQ0XSxcbiAgICBcIjk1M1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC4zNTM5NF0sXG4gICAgXCI5NTRcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTc2MTZdLFxuICAgIFwiOTU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC42MDI1NV0sXG4gICAgXCI5NTdcIjogWzAsIDAuNDMwNTYsIDAuMDYzNjYsIDAuMDI3NzgsIDAuNDkzOThdLFxuICAgIFwiOTU4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA0NjAxLCAwLjExMTExLCAwLjQzNzVdLFxuICAgIFwiOTU5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ4NDcyXSxcbiAgICBcIjk2MFwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzAwM10sXG4gICAgXCI5NjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQzMDU2LCAwLjA3OTg2LCAwLjA4MzM0LCAwLjM2Mjg1XSxcbiAgICBcIjk2M1wiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzE0MV0sXG4gICAgXCI5NjRcIjogWzAsIDAuNDMwNTYsIDAuMTEzMiwgMC4wMjc3OCwgMC40MzcxNV0sXG4gICAgXCI5NjVcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNTQwMjhdLFxuICAgIFwiOTY2XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjY1NDE3XSxcbiAgICBcIjk2N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC42MjU2OV0sXG4gICAgXCI5NjhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM1ODgsIDAuMTExMTEsIDAuNjUxMzldLFxuICAgIFwiOTY5XCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjYyMjQ1XSxcbiAgICBcIjk3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMC4wODMzNCwgMC41OTE0NF0sXG4gICAgXCI5ODFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAuMDgzMzQsIDAuNTk1ODNdLFxuICAgIFwiOTgyXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAwLjgyODEzXSxcbiAgICBcIjEwMDlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiMTAxM1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40MDU5XVxuICB9LFxuICBcIk1hdGgtUmVndWxhclwiOiB7XG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xMzg4OSwgMC43NV0sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMC4wNTAxNywgMC4wODMzNCwgMC43NTg1MV0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wODMzNCwgMC43MTQ3Ml0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wNTU1NiwgMC44Mjc5Ml0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43MzgyXSxcbiAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MzA2XSxcbiAgICBcIjcxXCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc4NjI1XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjA3ODQ3LCAwLjExMTExLCAwLjQzOTU4XSxcbiAgICBcIjc0XCI6IFswLCAwLjY4MzMzLCAwLjA5NjE4LCAwLjE2NjY3LCAwLjU1NDUxXSxcbiAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLjA3MTUzLCAwLjA1NTU2LCAwLjg0OTMxXSxcbiAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLjAyNzc4LCAwLjY4MDU2XSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjk3MDE0XSxcbiAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjgwMzQ3XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MjAxXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc5MDU2XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLjAwNzczLCAwLjA4MzM0LCAwLjc1OTI5XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjYxMzJdLFxuICAgIFwiODRcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNTg0MzhdLFxuICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDI3NzgsIDAuNjgyNzhdLFxuICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgzMzNdLFxuICAgIFwiODdcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAsIDAuOTQ0NDVdLFxuICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMDc4NDcsIDAuMDgzMzQsIDAuODI4NDddLFxuICAgIFwiODlcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgwNTZdLFxuICAgIFwiOTBcIjogWzAsIDAuNjgzMzMsIDAuMDcxNTMsIDAuMDgzMzQsIDAuNjgyNjRdLFxuICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI4NTldLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDI5MTddLFxuICAgIFwiOTlcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDMyNzZdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLjE2NjY3LCAwLjUyMDQ5XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40NjU2M10sXG4gICAgXCIxMDJcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTA3NjQsIDAuMTY2NjcsIDAuNDg5NTldLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjAyNzc4LCAwLjQ3Njk3XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzYxNl0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjU5NTIsIDAsIDAsIDAuMzQ0NTFdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY1OTUyLCAwLjA1NzI0LCAwLCAwLjQxMTgxXSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4wMzE0OCwgMCwgMC41MjA2XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4wMTk2OCwgMC4wODMzNCwgMC4yOTgzOF0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuODc4MDFdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjYwMDIzXSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40ODQ3Ml0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTAzMTNdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjA4MzM0LCAwLjQ0NjQxXSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMC4wNTU1NiwgMC40NTExNl0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDY4NzVdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLCAwLjA4MzM0LCAwLjM2MTExXSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzI0Nl0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNDg0NzJdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjAyNjkxLCAwLjA4MzM0LCAwLjcxNTkyXSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzE1M10sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDkwMjhdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLjA0Mzk4LCAwLjA1NTU2LCAwLjQ2NTA1XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wODMzNCwgMC42MTUyOF0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTY2NjcsIDAuODMzMzRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODMzMywgMCwgMC4xNjY2NywgMC42OTQ0NV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMDc1NjksIDAuMDgzMzQsIDAuNzQyMzZdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43Nzk4Nl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDU1NTYsIDAuNTgzMzNdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjY2NjY3XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODMzMywgMC4xMSwgMC4wNTU1NiwgMC42MTIyMl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMDUwMTcsIDAuMDgzMzQsIDAuNzcyNF0sXG4gICAgXCI5NDVcIjogWzAsIDAuNDMwNTYsIDAuMDAzNywgMC4wMjc3OCwgMC42Mzk3XSxcbiAgICBcIjk0NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNTI3OCwgMC4wODMzNCwgMC41NjU2M10sXG4gICAgXCI5NDdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDU1NTYsIDAsIDAuNTE3NzNdLFxuICAgIFwiOTQ4XCI6IFswLCAwLjY5NDQ0LCAwLjAzNzg1LCAwLjA1NTU2LCAwLjQ0NDQ0XSxcbiAgICBcIjk0OVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC40NjYzMl0sXG4gICAgXCI5NTBcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDczNzgsIDAuMDgzMzQsIDAuNDM3NV0sXG4gICAgXCI5NTFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDk2NTNdLFxuICAgIFwiOTUyXCI6IFswLCAwLjY5NDQ0LCAwLjAyNzc4LCAwLjA4MzM0LCAwLjQ2OTQ0XSxcbiAgICBcIjk1M1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC4zNTM5NF0sXG4gICAgXCI5NTRcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTc2MTZdLFxuICAgIFwiOTU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC42MDI1NV0sXG4gICAgXCI5NTdcIjogWzAsIDAuNDMwNTYsIDAuMDYzNjYsIDAuMDI3NzgsIDAuNDkzOThdLFxuICAgIFwiOTU4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA0NjAxLCAwLjExMTExLCAwLjQzNzVdLFxuICAgIFwiOTU5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ4NDcyXSxcbiAgICBcIjk2MFwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzAwM10sXG4gICAgXCI5NjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQzMDU2LCAwLjA3OTg2LCAwLjA4MzM0LCAwLjM2Mjg1XSxcbiAgICBcIjk2M1wiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzE0MV0sXG4gICAgXCI5NjRcIjogWzAsIDAuNDMwNTYsIDAuMTEzMiwgMC4wMjc3OCwgMC40MzcxNV0sXG4gICAgXCI5NjVcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNTQwMjhdLFxuICAgIFwiOTY2XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjY1NDE3XSxcbiAgICBcIjk2N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC42MjU2OV0sXG4gICAgXCI5NjhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM1ODgsIDAuMTExMTEsIDAuNjUxMzldLFxuICAgIFwiOTY5XCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjYyMjQ1XSxcbiAgICBcIjk3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMC4wODMzNCwgMC41OTE0NF0sXG4gICAgXCI5ODFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAuMDgzMzQsIDAuNTk1ODNdLFxuICAgIFwiOTgyXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAwLjgyODEzXSxcbiAgICBcIjEwMDlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiMTAxM1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40MDU5XVxuICB9LFxuICBcIlNhbnNTZXJpZi1Cb2xkXCI6IHtcbiAgICBcIjMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjM2NjY3XSxcbiAgICBcIjM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1ODM0XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjkxNjY3XSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjU1XSxcbiAgICBcIjM3XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAxLjAyOTEyXSxcbiAgICBcIjM4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMDU2XSxcbiAgICBcIjM5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjQwXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQyNzc4XSxcbiAgICBcIjQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQyNzc4XSxcbiAgICBcIjQyXCI6IFswLCAwLjc1LCAwLCAwLCAwLjU1XSxcbiAgICBcIjQzXCI6IFswLjExNjY3LCAwLjYxNjY3LCAwLCAwLCAwLjg1NTU2XSxcbiAgICBcIjQ0XCI6IFswLjEwNTU2LCAwLjEzMDU2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjM2NjY3XSxcbiAgICBcIjQ2XCI6IFswLCAwLjEzMDU2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU1XSxcbiAgICBcIjQ4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjQ5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUyXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU4XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjU5XCI6IFswLjEwNTU2LCAwLjQ1ODMzLCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjYxXCI6IFstMC4wOTM3NSwgMC40MDYyNSwgMCwgMCwgMC44NTU1Nl0sXG4gICAgXCI2M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTk0NV0sXG4gICAgXCI2NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI2NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI2NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI2N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3OF0sXG4gICAgXCI2OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI2OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NDE2N10sXG4gICAgXCI3MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI3MVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI3MlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI3M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMzA1Nl0sXG4gICAgXCI3NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTk0NV0sXG4gICAgXCI3NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NjM4OV0sXG4gICAgXCI3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41ODA1Nl0sXG4gICAgXCI3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC45Nzc3OF0sXG4gICAgXCI3OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI3OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI4MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3OF0sXG4gICAgXCI4MVwiOiBbMC4xMDU1NiwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI4MlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3OF0sXG4gICAgXCI4M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI4NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NjM4OV0sXG4gICAgXCI4NlwiOiBbMCwgMC42OTQ0NCwgMC4wMTUyOCwgMCwgMC43MzMzNF0sXG4gICAgXCI4N1wiOiBbMCwgMC42OTQ0NCwgMC4wMTUyOCwgMCwgMS4wMzg4OV0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI4OVwiOiBbMCwgMC42OTQ0NCwgMC4wMjc1LCAwLCAwLjczMzM0XSxcbiAgICBcIjkwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY3MjIzXSxcbiAgICBcIjkxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM0MzA2XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM0MzA2XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjk1XCI6IFswLjM1LCAwLjEwODMzLCAwLjAzMDU2LCAwLCAwLjU1XSxcbiAgICBcIjk3XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NjExMV0sXG4gICAgXCI5OVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC40ODg4OV0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTYxMTFdLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjEwMlwiOiBbMCwgMC42OTQ0NCwgMC4wNzYzOSwgMCwgMC4zMzYxMV0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNTVdLFxuICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjEwNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNTU1Nl0sXG4gICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuMjg2MTFdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUzMDU2XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNTU1Nl0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuODY2NjddLFxuICAgIFwiMTEwXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjExMVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC41NV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDU4MzMsIDAsIDAsIDAuNTYxMTFdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ1ODMzLCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjExNFwiOiBbMCwgMC40NTgzMywgMC4wMTUyOCwgMCwgMC4zNzIyMl0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNDIxNjddLFxuICAgIFwiMTE2XCI6IFswLCAwLjU4OTI5LCAwLCAwLCAwLjQwNDE3XSxcbiAgICBcIjExN1wiOiBbMCwgMC40NTgzMywgMCwgMCwgMC41NjExMV0sXG4gICAgXCIxMThcIjogWzAsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNV0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNzQ0NDVdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjVdLFxuICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQ1ODMzLCAwLjAxNTI4LCAwLCAwLjVdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjQ3NjM5XSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zNDQ0NCwgMCwgMCwgMC41NV0sXG4gICAgXCIxNjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICBcIjE4MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNDg4ODldLFxuICAgIFwiMzA1XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjI1NTU2XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NTgzMywgMCwgMCwgMC4yODYxMV0sXG4gICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNzExXCI6IFswLCAwLjYzNTQyLCAwLCAwLCAwLjU1XSxcbiAgICBcIjcxM1wiOiBbMCwgMC42Mzc3OCwgMCwgMCwgMC41NV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNzMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41ODA1Nl0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuOTE2NjddLFxuICAgIFwiOTIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg1NTU2XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NzIyM10sXG4gICAgXCI5MjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzMzMzRdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODU1NTZdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44NTU1Nl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzk0NDVdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40NTgzMywgMC4wMzA1NiwgMCwgMC41NV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQ1ODMzLCAwLjAzMDU2LCAwLCAxLjEwMDAxXSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMDU1Nl0sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1ODM0XSxcbiAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU4MzRdXG4gIH0sXG4gIFwiU2Fuc1NlcmlmLUl0YWxpY1wiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMC4wNTczMywgMCwgMC4zMTk0NV0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMC4wMDMxNiwgMCwgMC41XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA1MDg3LCAwLCAwLjgzMzM0XSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAuMDMxMjYsIDAsIDAuODMzMzRdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAuMDMwNTgsIDAsIDAuNzU4MzRdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAuMDc4MTYsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAuMTMxNjQsIDAsIDAuMzg4ODldLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAuMDI1MzYsIDAsIDAuMzg4ODldLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAuMTE3NzUsIDAsIDAuNV0sXG4gICAgXCI0M1wiOiBbMC4wODMzMywgMC41ODMzMywgMC4wMjUzNiwgMCwgMC43Nzc3OF0sXG4gICAgXCI0NFwiOiBbMC4xMjUsIDAuMDgzMzMsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDVcIjogWzAsIDAuNDQ0NDQsIDAuMDE5NDYsIDAsIDAuMzMzMzNdLFxuICAgIFwiNDZcIjogWzAsIDAuMDgzMzMsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAuMTMxNjQsIDAsIDAuNV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjQ5XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTBcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjUyXCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTNcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjU1XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTZcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjU4XCI6IFswLCAwLjQ0NDQ0LCAwLjAyNTAyLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjU5XCI6IFswLjEyNSwgMC40NDQ0NCwgMC4wMjUwMiwgMCwgMC4yNzc3OF0sXG4gICAgXCI2MVwiOiBbLTAuMTMsIDAuMzcsIDAuMDUwODcsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAuMTE4MDksIDAsIDAuNDcyMjJdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAuMDc1NTUsIDAsIDAuNjY2NjddLFxuICAgIFwiNjVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNjZcIjogWzAsIDAuNjk0NDQsIDAuMDgyOTMsIDAsIDAuNjY2NjddLFxuICAgIFwiNjdcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNjM4ODldLFxuICAgIFwiNjhcIjogWzAsIDAuNjk0NDQsIDAuMDc1NTUsIDAsIDAuNzIyMjNdLFxuICAgIFwiNjlcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNTk3MjJdLFxuICAgIFwiNzBcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuNTY5NDVdLFxuICAgIFwiNzFcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNjY2NjddLFxuICAgIFwiNzJcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuNzA4MzRdLFxuICAgIFwiNzNcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuMjc3NzhdLFxuICAgIFwiNzRcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuNDcyMjJdLFxuICAgIFwiNzVcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNjk0NDVdLFxuICAgIFwiNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTQxNjddLFxuICAgIFwiNzdcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuODc1XSxcbiAgICBcIjc4XCI6IFswLCAwLjY5NDQ0LCAwLjA4MDk0LCAwLCAwLjcwODM0XSxcbiAgICBcIjc5XCI6IFswLCAwLjY5NDQ0LCAwLjA3NTU1LCAwLCAwLjczNjExXSxcbiAgICBcIjgwXCI6IFswLCAwLjY5NDQ0LCAwLjA4MjkzLCAwLCAwLjYzODg5XSxcbiAgICBcIjgxXCI6IFswLjEyNSwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC43MzYxMV0sXG4gICAgXCI4MlwiOiBbMCwgMC42OTQ0NCwgMC4wODI5MywgMCwgMC42NDU4NF0sXG4gICAgXCI4M1wiOiBbMCwgMC42OTQ0NCwgMC4wOTIwNSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NFwiOiBbMCwgMC42OTQ0NCwgMC4xMzM3MiwgMCwgMC42ODA1Nl0sXG4gICAgXCI4NVwiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC42ODc1XSxcbiAgICBcIjg2XCI6IFswLCAwLjY5NDQ0LCAwLjE2MTUsIDAsIDAuNjY2NjddLFxuICAgIFwiODdcIjogWzAsIDAuNjk0NDQsIDAuMTYxNSwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTQ0NCwgMC4xMzM3MiwgMCwgMC42NjY2N10sXG4gICAgXCI4OVwiOiBbMCwgMC42OTQ0NCwgMC4xNzI2MSwgMCwgMC42NjY2N10sXG4gICAgXCI5MFwiOiBbMCwgMC42OTQ0NCwgMC4xMTk4MywgMCwgMC42MTExMV0sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMC4xNTk0MiwgMCwgMC4yODg4OV0sXG4gICAgXCI5M1wiOiBbMC4yNSwgMC43NSwgMC4wODcxOSwgMCwgMC4yODg4OV0sXG4gICAgXCI5NFwiOiBbMCwgMC42OTQ0NCwgMC4wNzk5LCAwLCAwLjVdLFxuICAgIFwiOTVcIjogWzAuMzUsIDAuMDk0NDQsIDAuMDg2MTYsIDAsIDAuNV0sXG4gICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMC4wMDk4MSwgMCwgMC40ODA1Nl0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMC4wMzA1NywgMCwgMC41MTY2N10sXG4gICAgXCI5OVwiOiBbMCwgMC40NDQ0NCwgMC4wODMzNiwgMCwgMC40NDQ0NV0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAuMDk0ODMsIDAsIDAuNTE2NjddLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLjA2Nzc4LCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEwMlwiOiBbMCwgMC42OTQ0NCwgMC4yMTcwNSwgMCwgMC4zMDU1Nl0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMTA4MzYsIDAsIDAuNV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAuMDE3NzgsIDAsIDAuNTE2NjddLFxuICAgIFwiMTA1XCI6IFswLCAwLjY3OTM3LCAwLjA5NzE4LCAwLCAwLjIzODg5XSxcbiAgICBcIjEwNlwiOiBbMC4xOTQ0NCwgMC42NzkzNywgMC4wOTE2MiwgMCwgMC4yNjY2N10sXG4gICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAuMDgzMzYsIDAsIDAuNDg4ODldLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjA5NDgzLCAwLCAwLjIzODg5XSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NDQ0NCwgMC4wMTc3OCwgMCwgMC43OTQ0NV0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAuMDE3NzgsIDAsIDAuNTE2NjddLFxuICAgIFwiMTExXCI6IFswLCAwLjQ0NDQ0LCAwLjA2NjEzLCAwLCAwLjVdLFxuICAgIFwiMTEyXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAzODksIDAsIDAuNTE2NjddLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA0MTY5LCAwLCAwLjUxNjY3XSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC4zNDE2N10sXG4gICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAuMDc3OCwgMCwgMC4zODMzM10sXG4gICAgXCIxMTZcIjogWzAsIDAuNTcxNDMsIDAuMDcyMjUsIDAsIDAuMzYxMTFdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLjA0MTY5LCAwLCAwLjUxNjY3XSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC40NjExMV0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMTA4MzYsIDAsIDAuNjgzMzRdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLjA5MTY5LCAwLCAwLjQ2MTExXSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC40NjExMV0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDQ0NDQsIDAuMDg3NTIsIDAsIDAuNDM0NzJdLFxuICAgIFwiMTI2XCI6IFswLjM1LCAwLjMyNjU5LCAwLjA4ODI2LCAwLCAwLjVdLFxuICAgIFwiMTY4XCI6IFswLCAwLjY3OTM3LCAwLjA2Mzg1LCAwLCAwLjVdLFxuICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczNzUyXSxcbiAgICBcIjE4NFwiOiBbMC4xNzAxNCwgMCwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDQ0NDQsIDAuMDQxNjksIDAsIDAuMjM4ODldLFxuICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA0MTY5LCAwLCAwLjI2NjY3XSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMC4wNzk5LCAwLCAwLjVdLFxuICAgIFwiNzExXCI6IFswLCAwLjYzMTk0LCAwLjA4NDMyLCAwLCAwLjVdLFxuICAgIFwiNzEzXCI6IFswLCAwLjYwODg5LCAwLjA4Nzc2LCAwLCAwLjVdLFxuICAgIFwiNzE0XCI6IFswLCAwLjY5NDQ0LCAwLjA5MjA1LCAwLCAwLjVdLFxuICAgIFwiNzE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLjA5NDgzLCAwLCAwLjVdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY3OTM3LCAwLjA3Nzc0LCAwLCAwLjI3Nzc4XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Mzc1Ml0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjc2NTksIDAuMDg4MjYsIDAsIDAuNV0sXG4gICAgXCI3MzNcIjogWzAsIDAuNjk0NDQsIDAuMDkyMDUsIDAsIDAuNV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuNTQxNjddLFxuICAgIFwiOTE2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjkyMFwiOiBbMCwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY5NDQ0LCAwLjEyODE2LCAwLCAwLjY2NjY3XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC43MDgzNF0sXG4gICAgXCI5MzFcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNzIyMjJdLFxuICAgIFwiOTMzXCI6IFswLCAwLjY5NDQ0LCAwLjA5MDMxLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkzNFwiOiBbMCwgMC42OTQ0NCwgMC4wNDYwMywgMCwgMC43MjIyMl0sXG4gICAgXCI5MzZcIjogWzAsIDAuNjk0NDQsIDAuMDkwMzEsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTM3XCI6IFswLCAwLjY5NDQ0LCAwLjA4MjkzLCAwLCAwLjcyMjIyXSxcbiAgICBcIjgyMTFcIjogWzAsIDAuNDQ0NDQsIDAuMDg2MTYsIDAsIDAuNV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQ0NDQ0LCAwLjA4NjE2LCAwLCAxLjBdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42OTQ0NCwgMC4wNzgxNiwgMCwgMC4yNzc3OF0sXG4gICAgXCI4MjE3XCI6IFswLCAwLjY5NDQ0LCAwLjA3ODE2LCAwLCAwLjI3Nzc4XSxcbiAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAuMTQyMDUsIDAsIDAuNV0sXG4gICAgXCI4MjIxXCI6IFswLCAwLjY5NDQ0LCAwLjAwMzE2LCAwLCAwLjVdXG4gIH0sXG4gIFwiU2Fuc1NlcmlmLVJlZ3VsYXJcIjoge1xuICAgIFwiMzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDVdLFxuICAgIFwiMzRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCIzNlwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjM3XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjM4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc1ODM0XSxcbiAgICBcIjM5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQwXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjQyXCI6IFswLCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiNDNcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNDRcIjogWzAuMTI1LCAwLjA4MzMzLCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjMzMzMzXSxcbiAgICBcIjQ2XCI6IFswLCAwLjA4MzMzLCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiNDhcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI0OVwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUwXCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTFcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1MlwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUzXCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTRcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1NVwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjU2XCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTdcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1OFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI1OVwiOiBbMC4xMjUsIDAuNDQ0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNjFcIjogWy0wLjEzLCAwLjM3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIzXSxcbiAgICBcIjY5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU5NzIyXSxcbiAgICBcIjcwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU2OTQ1XSxcbiAgICBcIjcxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjcyXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwODM0XSxcbiAgICBcIjczXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjc0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjc1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY5NDQ1XSxcbiAgICBcIjc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU0MTY3XSxcbiAgICBcIjc3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg3NV0sXG4gICAgXCI3OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDgzNF0sXG4gICAgXCI3OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzYxMV0sXG4gICAgXCI4MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4MVwiOiBbMC4xMjUsIDAuNjk0NDQsIDAsIDAsIDAuNzM2MTFdLFxuICAgIFwiODJcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjQ1ODRdLFxuICAgIFwiODNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjgwNTZdLFxuICAgIFwiODVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjg3NV0sXG4gICAgXCI4NlwiOiBbMCwgMC42OTQ0NCwgMC4wMTM4OSwgMCwgMC42NjY2N10sXG4gICAgXCI4N1wiOiBbMCwgMC42OTQ0NCwgMC4wMTM4OSwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4OVwiOiBbMCwgMC42OTQ0NCwgMC4wMjUsIDAsIDAuNjY2NjddLFxuICAgIFwiOTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMjg4ODldLFxuICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMjg4ODldLFxuICAgIFwiOTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI5NVwiOiBbMC4zNSwgMC4wOTQ0NCwgMC4wMjc3OCwgMCwgMC41XSxcbiAgICBcIjk3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ4MDU2XSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICBcIjk5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMDFcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTAyXCI6IFswLCAwLjY5NDQ0LCAwLjA2OTQ0LCAwLCAwLjMwNTU2XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMTM4OSwgMCwgMC41XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMDVcIjogWzAsIDAuNjc5MzcsIDAsIDAsIDAuMjM4ODldLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY3OTM3LCAwLCAwLCAwLjI2NjY3XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC40ODg4OV0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjM4ODldLFxuICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjExMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMTFcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNTE2NjddLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4wMTM4OSwgMCwgMC4zNDE2N10sXG4gICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzgzMzNdLFxuICAgIFwiMTE2XCI6IFswLCAwLjU3MTQzLCAwLCAwLCAwLjM2MTExXSxcbiAgICBcIjExN1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMThcIjogWzAsIDAuNDQ0NDQsIDAuMDEzODksIDAsIDAuNDYxMTFdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQ0NDQ0LCAwLjAxMzg5LCAwLCAwLjY4MzM0XSxcbiAgICBcIjEyMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40NjExMV0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDEzODksIDAsIDAuNDYxMTFdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQzNDcyXSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zMjY1OSwgMCwgMCwgMC41XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42NzkzNywgMCwgMCwgMC41XSxcbiAgICBcIjE3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMzA1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjIzODg5XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC4yNjY2N10sXG4gICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjMxOTQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNjA4ODksIDAsIDAsIDAuNV0sXG4gICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MjlcIjogWzAsIDAuNjc5MzcsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNzMwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjczMlwiOiBbMCwgMC42NzY1OSwgMCwgMCwgMC41XSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NDE2N10sXG4gICAgXCI5MTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiOTI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwODM0XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjkzNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40NDQ0NCwgMC4wMjc3OCwgMCwgMC41XSxcbiAgICBcIjgyMTJcIjogWzAsIDAuNDQ0NDQsIDAuMDI3NzgsIDAsIDEuMF0sXG4gICAgXCI4MjE2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODIyMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV1cbiAgfSxcbiAgXCJTY3JpcHQtUmVndWxhclwiOiB7XG4gICAgXCI2NVwiOiBbMCwgMC43LCAwLjIyOTI1LCAwLCAwLjgwMjUzXSxcbiAgICBcIjY2XCI6IFswLCAwLjcsIDAuMDQwODcsIDAsIDAuOTA3NTddLFxuICAgIFwiNjdcIjogWzAsIDAuNywgMC4xNjg5LCAwLCAwLjY2NjE5XSxcbiAgICBcIjY4XCI6IFswLCAwLjcsIDAuMDkzNzEsIDAsIDAuNzc0NDNdLFxuICAgIFwiNjlcIjogWzAsIDAuNywgMC4xODU4MywgMCwgMC41NjE2Ml0sXG4gICAgXCI3MFwiOiBbMCwgMC43LCAwLjEzNjM0LCAwLCAwLjg5NTQ0XSxcbiAgICBcIjcxXCI6IFswLCAwLjcsIDAuMTczMjIsIDAsIDAuNjA5NjFdLFxuICAgIFwiNzJcIjogWzAsIDAuNywgMC4yOTY5NCwgMCwgMC45NjkxOV0sXG4gICAgXCI3M1wiOiBbMCwgMC43LCAwLjE5MTg5LCAwLCAwLjgwOTA3XSxcbiAgICBcIjc0XCI6IFswLjI3Nzc4LCAwLjcsIDAuMTkxODksIDAsIDEuMDUxNTldLFxuICAgIFwiNzVcIjogWzAsIDAuNywgMC4zMTI1OSwgMCwgMC45MTM2NF0sXG4gICAgXCI3NlwiOiBbMCwgMC43LCAwLjE5MTg5LCAwLCAwLjg3MzczXSxcbiAgICBcIjc3XCI6IFswLCAwLjcsIDAuMTU5ODEsIDAsIDEuMDgwMzFdLFxuICAgIFwiNzhcIjogWzAsIDAuNywgMC4zNTI1LCAwLCAwLjkwMTVdLFxuICAgIFwiNzlcIjogWzAsIDAuNywgMC4wODA3OCwgMCwgMC43Mzc4N10sXG4gICAgXCI4MFwiOiBbMCwgMC43LCAwLjA4MDc4LCAwLCAxLjAxMjYyXSxcbiAgICBcIjgxXCI6IFswLCAwLjcsIDAuMDMzMDUsIDAsIDAuODgyODJdLFxuICAgIFwiODJcIjogWzAsIDAuNywgMC4wNjI1OSwgMCwgMC44NV0sXG4gICAgXCI4M1wiOiBbMCwgMC43LCAwLjE5MTg5LCAwLCAwLjg2NzY3XSxcbiAgICBcIjg0XCI6IFswLCAwLjcsIDAuMjkwODcsIDAsIDAuNzQ2OTddLFxuICAgIFwiODVcIjogWzAsIDAuNywgMC4yNTgxNSwgMCwgMC43OTk5Nl0sXG4gICAgXCI4NlwiOiBbMCwgMC43LCAwLjI3NTIzLCAwLCAwLjYyMjA0XSxcbiAgICBcIjg3XCI6IFswLCAwLjcsIDAuMjc1MjMsIDAsIDAuODA1MzJdLFxuICAgIFwiODhcIjogWzAsIDAuNywgMC4yNjAwNiwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OVwiOiBbMCwgMC43LCAwLjI5MzksIDAsIDAuNzA5NjFdLFxuICAgIFwiOTBcIjogWzAsIDAuNywgMC4yNDAzNywgMCwgMC44MjEyXVxuICB9LFxuICBcIlNpemUxLVJlZ3VsYXJcIjoge1xuICAgIFwiNDBcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDU4MzRdLFxuICAgIFwiNDFcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDU4MzRdLFxuICAgIFwiNDdcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNTc3NzhdLFxuICAgIFwiOTFcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiOTJcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNTc3NzhdLFxuICAgIFwiOTNcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiMTIzXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjEyNVwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC41ODMzNF0sXG4gICAgXCI3MTBcIjogWzAsIDAuNzIyMjIsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiNzMyXCI6IFswLCAwLjcyMjIyLCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjc3MFwiOiBbMCwgMC43MjIyMiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI3NzFcIjogWzAsIDAuNzIyMjIsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODIxNFwiOiBbLTAuMDAwOTksIDAuNjAxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg1OTNcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODU5NVwiOiBbMWUtMDUsIDAuNiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NjU3XCI6IFsxZS0wNSwgMC42LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg2NTlcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODcxOVwiOiBbMC4yNTAwMSwgMC43NSwgMCwgMCwgMC45NDQ0NV0sXG4gICAgXCI4NzIwXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjk0NDQ1XSxcbiAgICBcIjg3MjFcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDEuMDU1NTZdLFxuICAgIFwiODczMFwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg3MzlcIjogWy0wLjAwNTk5LCAwLjYwNiwgMCwgMCwgMC4zMzMzM10sXG4gICAgXCI4NzQxXCI6IFstMC4wMDU5OSwgMC42MDYsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODc0N1wiOiBbMC4zMDYxMiwgMC44MDUsIDAuMTk0NDUsIDAsIDAuNDcyMjJdLFxuICAgIFwiODc0OFwiOiBbMC4zMDYsIDAuODA1LCAwLjE5NDQ1LCAwLCAwLjQ3MjIyXSxcbiAgICBcIjg3NDlcIjogWzAuMzA2LCAwLjgwNSwgMC4xOTQ0NSwgMCwgMC40NzIyMl0sXG4gICAgXCI4NzUwXCI6IFswLjMwNjEyLCAwLjgwNSwgMC4xOTQ0NSwgMCwgMC40NzIyMl0sXG4gICAgXCI4ODk2XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjg4OTdcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODg5OFwiOiBbMC4yNTAwMSwgMC43NSwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI4ODk5XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjg5NjhcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiODk2OVwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40NzIyMl0sXG4gICAgXCI4OTcwXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjg5NzFcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiOTE2OFwiOiBbLTAuMDAwOTksIDAuNjAxLCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjEwMjE2XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjEwMjE3XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjEwNzUyXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjEwNzUzXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjEwNzU0XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjEwNzU2XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjEwNzU4XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XVxuICB9LFxuICBcIlNpemUyLVJlZ3VsYXJcIjoge1xuICAgIFwiNDBcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTk3MjJdLFxuICAgIFwiNDFcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTk3MjJdLFxuICAgIFwiNDdcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuODExMTFdLFxuICAgIFwiOTFcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiOTJcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuODExMTFdLFxuICAgIFwiOTNcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiMTIzXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjEyNVwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI3MTBcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI3MzJcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI3NzBcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI3NzFcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI4NzE5XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjI3Nzc4XSxcbiAgICBcIjg3MjBcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMjc3NzhdLFxuICAgIFwiODcyMVwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS40NDQ0NV0sXG4gICAgXCI4NzMwXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAxLjBdLFxuICAgIFwiODc0N1wiOiBbMC44NjIyNSwgMS4zNiwgMC40NDQ0NSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzQ4XCI6IFswLjg2MiwgMS4zNiwgMC40NDQ0NSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzQ5XCI6IFswLjg2MiwgMS4zNiwgMC40NDQ0NSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzUwXCI6IFswLjg2MjI1LCAxLjM2LCAwLjQ0NDQ1LCAwLCAwLjU1NTU2XSxcbiAgICBcIjg4OTZcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODg5N1wiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCI4ODk4XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjg4OTlcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODk2OFwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCI4OTY5XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjg5NzBcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTI3NzhdLFxuICAgIFwiODk3MVwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMDIxNlwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42MTExMV0sXG4gICAgXCIxMDIxN1wiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42MTExMV0sXG4gICAgXCIxMDc1MlwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS41MTExMl0sXG4gICAgXCIxMDc1M1wiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS41MTExMl0sXG4gICAgXCIxMDc1NFwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS41MTExMl0sXG4gICAgXCIxMDc1NlwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCIxMDc1OFwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV1cbiAgfSxcbiAgXCJTaXplMy1SZWd1bGFyXCI6IHtcbiAgICBcIjQwXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjczNjExXSxcbiAgICBcIjQxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjczNjExXSxcbiAgICBcIjQ3XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAxLjA0NDQ1XSxcbiAgICBcIjkxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjkyXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAxLjA0NDQ1XSxcbiAgICBcIjkzXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjEyM1wiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMC43NV0sXG4gICAgXCIxMjVcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNzVdLFxuICAgIFwiNzEwXCI6IFswLCAwLjc1LCAwLCAwLCAxLjQ0NDQ1XSxcbiAgICBcIjczMlwiOiBbMCwgMC43NSwgMCwgMCwgMS40NDQ0NV0sXG4gICAgXCI3NzBcIjogWzAsIDAuNzUsIDAsIDAsIDEuNDQ0NDVdLFxuICAgIFwiNzcxXCI6IFswLCAwLjc1LCAwLCAwLCAxLjQ0NDQ1XSxcbiAgICBcIjg3MzBcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDEuMF0sXG4gICAgXCI4OTY4XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjg5NjlcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiODk3MFwiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMC41ODMzNF0sXG4gICAgXCI4OTcxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjEwMjE2XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjc1XSxcbiAgICBcIjEwMjE3XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjc1XVxuICB9LFxuICBcIlNpemU0LVJlZ3VsYXJcIjoge1xuICAgIFwiNDBcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNzkxNjddLFxuICAgIFwiNDFcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNzkxNjddLFxuICAgIFwiNDdcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDEuMjc3NzhdLFxuICAgIFwiOTFcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiOTJcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDEuMjc3NzhdLFxuICAgIFwiOTNcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiMTIzXCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICBcIjEyNVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC44MDU1Nl0sXG4gICAgXCI3MTBcIjogWzAsIDAuODI1LCAwLCAwLCAxLjg4ODldLFxuICAgIFwiNzMyXCI6IFswLCAwLjgyNSwgMCwgMCwgMS44ODg5XSxcbiAgICBcIjc3MFwiOiBbMCwgMC44MjUsIDAsIDAsIDEuODg4OV0sXG4gICAgXCI3NzFcIjogWzAsIDAuODI1LCAwLCAwLCAxLjg4ODldLFxuICAgIFwiODczMFwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg5NjhcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODk2OVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4OTcwXCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjg5NzFcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiOTExNVwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuODc1XSxcbiAgICBcIjkxMTZcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuODc1XSxcbiAgICBcIjkxMTdcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjg3NV0sXG4gICAgXCI5MTE4XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC44NzVdLFxuICAgIFwiOTExOVwiOiBbMWUtMDUsIDAuNiwgMCwgMCwgMC44NzVdLFxuICAgIFwiOTEyMFwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuODc1XSxcbiAgICBcIjkxMjFcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjkxMjJcIjogWy0wLjAwMDk5LCAwLjYwMSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTIzXCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTI0XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTI1XCI6IFstMC4wMDA5OSwgMC42MDEsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiOTEyNlwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiOTEyN1wiOiBbMWUtMDUsIDAuOSwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5MTI4XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxMjlcIjogWzAuOTAwMDEsIDAsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTEzMFwiOiBbMCwgMC4zLCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxMzFcIjogWzFlLTA1LCAwLjksIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTEzMlwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5MTMzXCI6IFswLjkwMDAxLCAwLCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxNDNcIjogWzAuODg1MDIsIDAuOTE1LCAwLCAwLCAxLjA1NTU2XSxcbiAgICBcIjEwMjE2XCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICBcIjEwMjE3XCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICBcIjU3MzQ0XCI6IFstMC4wMDQ5OSwgMC42MDUsIDAsIDAsIDEuMDU1NTZdLFxuICAgIFwiNTczNDVcIjogWy0wLjAwNDk5LCAwLjYwNSwgMCwgMCwgMS4wNTU1Nl0sXG4gICAgXCI1NzY4MFwiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV0sXG4gICAgXCI1NzY4MVwiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV0sXG4gICAgXCI1NzY4MlwiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV0sXG4gICAgXCI1NzY4M1wiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV1cbiAgfSxcbiAgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIjoge1xuICAgIFwiMzJcIjogWzAsIDAsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjMzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzNFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMzVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjM2XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzN1wiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiMzhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjM5XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0MFwiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDFcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQyXCI6IFswLCAwLjUyMDgzLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0M1wiOiBbLTAuMDgwNTYsIDAuNTMwNTUsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQ0XCI6IFswLjEzODg5LCAwLjEyNSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDVcIjogWy0wLjA4MDU2LCAwLjUzMDU1LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0NlwiOiBbMCwgMC4xMjUsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQ3XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0OFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjUwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1MVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjUzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1NFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1N1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNThcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU5XCI6IFswLjEzODg5LCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2MFwiOiBbLTAuMDU1NTYsIDAuNTU1NTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjYxXCI6IFstMC4xOTU0OSwgMC40MTU2MiwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjJcIjogWy0wLjA1NTU2LCAwLjU1NTU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2M1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjY1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjY4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2OVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjcxXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc0XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3NVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc3XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3OFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzlcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4MVwiOiBbMC4xMzg4OSwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4NFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjg2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4N1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjg5XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTFcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyXCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5M1wiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjk1XCI6IFswLjA5NTE0LCAwLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjk4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5OVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTAwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwMlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTAzXCI6IFswLjIyMjIyLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwNVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTA2XCI6IFswLjIyMjIyLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTEyXCI6IFswLjIyMjIyLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTNcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTE1XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTZcIjogWzAsIDAuNTUzNTgsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTE4XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTIxXCI6IFswLjIyMjIyLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyM1wiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTI0XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMjVcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyNlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTI3XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxNjBcIjogWzAsIDAsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjE3NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTg0XCI6IFswLjE5NDQ1LCAwLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU2N1wiOiBbMC4yMjIyMiwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzExXCI6IFswLCAwLjU2NTk3LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNTY1NTUsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjcxNFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzE1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjczMFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzcwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3NzFcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc3NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTE1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyMFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTIzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTMxXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkzNFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTM2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgyNDJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyNTFcIjogWzAuMTExMTEsIDAuMjE5NDQsIDAsIDAsIDAuNTI1XVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2ZvbnRNZXRyaWNzLmpzXG5cblxuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgbWV0cmljcyByZWdhcmRpbmcgZm9udHMgYW5kIGluZGl2aWR1YWwgc3ltYm9scy4gVGhlIHNpZ21hXG4gKiBhbmQgeGkgdmFyaWFibGVzLCBhcyB3ZWxsIGFzIHRoZSBtZXRyaWNNYXAgbWFwIGNvbnRhaW4gZGF0YSBleHRyYWN0ZWQgZnJvbVxuICogVGVYLCBUZVggZm9udCBtZXRyaWNzLCBhbmQgdGhlIFRURiBmaWxlcy4gVGhlc2UgZGF0YSBhcmUgdGhlbiBleHBvc2VkIHZpYSB0aGVcbiAqIGBtZXRyaWNzYCB2YXJpYWJsZSBhbmQgdGhlIGdldENoYXJhY3Rlck1ldHJpY3MgZnVuY3Rpb24uXG4gKi9cbi8vIEluIFRlWCwgdGhlcmUgYXJlIGFjdHVhbGx5IHRocmVlIHNldHMgb2YgZGltZW5zaW9ucywgb25lIGZvciBlYWNoIG9mXG4vLyB0ZXh0c3R5bGUgKHNpemUgaW5kZXggNSBhbmQgaGlnaGVyOiA+PTlwdCksIHNjcmlwdHN0eWxlIChzaXplIGluZGV4IDMgYW5kIDQ6XG4vLyA3LThwdCksIGFuZCBzY3JpcHRzY3JpcHRzdHlsZSAoc2l6ZSBpbmRleCAxIGFuZCAyOiA1LTZwdCkuICBUaGVzZSBhcmVcbi8vIHByb3ZpZGVkIGluIHRoZSB0aGUgYXJyYXlzIGJlbG93LCBpbiB0aGF0IG9yZGVyLlxuLy9cbi8vIFRoZSBmb250IG1ldHJpY3MgYXJlIHN0b3JlZCBpbiBmb250cyBjbXN5MTAsIGNtc3k3LCBhbmQgY21zeTUgcmVzcHNlY3RpdmVseS5cbi8vIFRoaXMgd2FzIGRldGVybWluZWQgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIHNjcmlwdDpcbi8vXG4vLyAgICAgbGF0ZXggLWludGVyYWN0aW9uPW5vbnN0b3Btb2RlIFxcXG4vLyAgICAgJ1xcZG9jdW1lbnRjbGFzc3thcnRpY2xlfVxcdXNlcGFja2FnZXthbXNtYXRofVxcYmVnaW57ZG9jdW1lbnR9JyBcXFxuLy8gICAgICckYSQgXFxleHBhbmRhZnRlclxcc2hvd1xcdGhlXFx0ZXh0Zm9udDInIFxcXG4vLyAgICAgJ1xcZXhwYW5kYWZ0ZXJcXHNob3dcXHRoZVxcc2NyaXB0Zm9udDInIFxcXG4vLyAgICAgJ1xcZXhwYW5kYWZ0ZXJcXHNob3dcXHRoZVxcc2NyaXB0c2NyaXB0Zm9udDInIFxcXG4vLyAgICAgJ1xcc3RvcCdcbi8vXG4vLyBUaGUgbWV0cmljcyB0aGVtc2VsdmVzIHdlcmUgcmV0cmVpdmVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6XG4vL1xuLy8gICAgIHRmdG9wbCBjbXN5MTBcbi8vICAgICB0ZnRvcGwgY21zeTdcbi8vICAgICB0ZnRvcGwgY21zeTVcbi8vXG4vLyBUaGUgb3V0cHV0IG9mIGVhY2ggb2YgdGhlc2UgY29tbWFuZHMgaXMgcXVpdGUgbGVuZ3RoeS4gIFRoZSBvbmx5IHBhcnQgd2Vcbi8vIGNhcmUgYWJvdXQgaXMgdGhlIEZPTlRESU1FTiBzZWN0aW9uLiBFYWNoIHZhbHVlIGlzIG1lYXN1cmVkIGluIEVNcy5cbnZhciBzaWdtYXNBbmRYaXMgPSB7XG4gIHNsYW50OiBbMC4yNTAsIDAuMjUwLCAwLjI1MF0sXG4gIC8vIHNpZ21hMVxuICBzcGFjZTogWzAuMDAwLCAwLjAwMCwgMC4wMDBdLFxuICAvLyBzaWdtYTJcbiAgc3RyZXRjaDogWzAuMDAwLCAwLjAwMCwgMC4wMDBdLFxuICAvLyBzaWdtYTNcbiAgc2hyaW5rOiBbMC4wMDAsIDAuMDAwLCAwLjAwMF0sXG4gIC8vIHNpZ21hNFxuICB4SGVpZ2h0OiBbMC40MzEsIDAuNDMxLCAwLjQzMV0sXG4gIC8vIHNpZ21hNVxuICBxdWFkOiBbMS4wMDAsIDEuMTcxLCAxLjQ3Ml0sXG4gIC8vIHNpZ21hNlxuICBleHRyYVNwYWNlOiBbMC4wMDAsIDAuMDAwLCAwLjAwMF0sXG4gIC8vIHNpZ21hN1xuICBudW0xOiBbMC42NzcsIDAuNzMyLCAwLjkyNV0sXG4gIC8vIHNpZ21hOFxuICBudW0yOiBbMC4zOTQsIDAuMzg0LCAwLjM4N10sXG4gIC8vIHNpZ21hOVxuICBudW0zOiBbMC40NDQsIDAuNDcxLCAwLjUwNF0sXG4gIC8vIHNpZ21hMTBcbiAgZGVub20xOiBbMC42ODYsIDAuNzUyLCAxLjAyNV0sXG4gIC8vIHNpZ21hMTFcbiAgZGVub20yOiBbMC4zNDUsIDAuMzQ0LCAwLjUzMl0sXG4gIC8vIHNpZ21hMTJcbiAgc3VwMTogWzAuNDEzLCAwLjUwMywgMC41MDRdLFxuICAvLyBzaWdtYTEzXG4gIHN1cDI6IFswLjM2MywgMC40MzEsIDAuNDA0XSxcbiAgLy8gc2lnbWExNFxuICBzdXAzOiBbMC4yODksIDAuMjg2LCAwLjI5NF0sXG4gIC8vIHNpZ21hMTVcbiAgc3ViMTogWzAuMTUwLCAwLjE0MywgMC4yMDBdLFxuICAvLyBzaWdtYTE2XG4gIHN1YjI6IFswLjI0NywgMC4yODYsIDAuNDAwXSxcbiAgLy8gc2lnbWExN1xuICBzdXBEcm9wOiBbMC4zODYsIDAuMzUzLCAwLjQ5NF0sXG4gIC8vIHNpZ21hMThcbiAgc3ViRHJvcDogWzAuMDUwLCAwLjA3MSwgMC4xMDBdLFxuICAvLyBzaWdtYTE5XG4gIGRlbGltMTogWzIuMzkwLCAxLjcwMCwgMS45ODBdLFxuICAvLyBzaWdtYTIwXG4gIGRlbGltMjogWzEuMDEwLCAxLjE1NywgMS40MjBdLFxuICAvLyBzaWdtYTIxXG4gIGF4aXNIZWlnaHQ6IFswLjI1MCwgMC4yNTAsIDAuMjUwXSxcbiAgLy8gc2lnbWEyMlxuICAvLyBUaGVzZSBmb250IG1ldHJpY3MgYXJlIGV4dHJhY3RlZCBmcm9tIFRlWCBieSB1c2luZyB0ZnRvcGwgb24gY21leDEwLnRmbTtcbiAgLy8gdGhleSBjb3JyZXNwb25kIHRvIHRoZSBmb250IHBhcmFtZXRlcnMgb2YgdGhlIGV4dGVuc2lvbiBmb250cyAoZmFtaWx5IDMpLlxuICAvLyBTZWUgdGhlIFRlWGJvb2ssIHBhZ2UgNDQxLiBJbiBBTVNUZVgsIHRoZSBleHRlbnNpb24gZm9udHMgc2NhbGU7IHRvXG4gIC8vIG1hdGNoIGNtZXg3LCB3ZSdkIHVzZSBjbWV4Ny50Zm0gdmFsdWVzIGZvciBzY3JpcHQgYW5kIHNjcmlwdHNjcmlwdFxuICAvLyB2YWx1ZXMuXG4gIGRlZmF1bHRSdWxlVGhpY2tuZXNzOiBbMC4wNCwgMC4wNDksIDAuMDQ5XSxcbiAgLy8geGk4OyBjbWV4NzogMC4wNDlcbiAgYmlnT3BTcGFjaW5nMTogWzAuMTExLCAwLjExMSwgMC4xMTFdLFxuICAvLyB4aTlcbiAgYmlnT3BTcGFjaW5nMjogWzAuMTY2LCAwLjE2NiwgMC4xNjZdLFxuICAvLyB4aTEwXG4gIGJpZ09wU3BhY2luZzM6IFswLjIsIDAuMiwgMC4yXSxcbiAgLy8geGkxMVxuICBiaWdPcFNwYWNpbmc0OiBbMC42LCAwLjYxMSwgMC42MTFdLFxuICAvLyB4aTEyOyBjbWV4NzogMC42MTFcbiAgYmlnT3BTcGFjaW5nNTogWzAuMSwgMC4xNDMsIDAuMTQzXSxcbiAgLy8geGkxMzsgY21leDc6IDAuMTQzXG4gIC8vIFRoZSBcXHNxcnQgcnVsZSB3aWR0aCBpcyB0YWtlbiBmcm9tIHRoZSBoZWlnaHQgb2YgdGhlIHN1cmQgY2hhcmFjdGVyLlxuICAvLyBTaW5jZSB3ZSB1c2UgdGhlIHNhbWUgZm9udCBhdCBhbGwgc2l6ZXMsIHRoaXMgdGhpY2tuZXNzIGRvZXNuJ3Qgc2NhbGUuXG4gIHNxcnRSdWxlVGhpY2tuZXNzOiBbMC4wNCwgMC4wNCwgMC4wNF0sXG4gIC8vIFRoaXMgdmFsdWUgZGV0ZXJtaW5lcyBob3cgbGFyZ2UgYSBwdCBpcywgZm9yIG1ldHJpY3Mgd2hpY2ggYXJlIGRlZmluZWRcbiAgLy8gaW4gdGVybXMgb2YgcHRzLlxuICAvLyBUaGlzIHZhbHVlIGlzIGFsc28gdXNlZCBpbiBrYXRleC5sZXNzOyBpZiB5b3UgY2hhbmdlIGl0IG1ha2Ugc3VyZSB0aGVcbiAgLy8gdmFsdWVzIG1hdGNoLlxuICBwdFBlckVtOiBbMTAuMCwgMTAuMCwgMTAuMF0sXG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIGFkamFjZW50IGB8YCBjb2x1bW5zIGluIGFuIGFycmF5IGRlZmluaXRpb24uIEZyb21cbiAgLy8gYFxcc2hvd3RoZVxcZG91YmxlcnVsZXNlcGAgaW4gTGFUZVguIEVxdWFscyAyLjAgLyBwdFBlckVtLlxuICBkb3VibGVSdWxlU2VwOiBbMC4yLCAwLjIsIDAuMl0sXG4gIC8vIFRoZSB3aWR0aCBvZiBzZXBhcmF0b3IgbGluZXMgaW4ge2FycmF5fSBlbnZpcm9ubWVudHMuIEZyb21cbiAgLy8gYFxcc2hvd3RoZVxcYXJyYXlydWxld2lkdGhgIGluIExhVGVYLiBFcXVhbHMgMC40IC8gcHRQZXJFbS5cbiAgYXJyYXlSdWxlV2lkdGg6IFswLjA0LCAwLjA0LCAwLjA0XSxcbiAgLy8gVHdvIHZhbHVlcyBmcm9tIExhVGVYIHNvdXJjZTJlOlxuICBmYm94c2VwOiBbMC4zLCAwLjMsIDAuM10sXG4gIC8vICAgICAgICAzIHB0IC8gcHRQZXJFbVxuICBmYm94cnVsZTogWzAuMDQsIDAuMDQsIDAuMDRdIC8vIDAuNCBwdCAvIHB0UGVyRW1cblxufTsgLy8gVGhpcyBtYXAgY29udGFpbnMgYSBtYXBwaW5nIGZyb20gZm9udCBuYW1lIGFuZCBjaGFyYWN0ZXIgY29kZSB0byBjaGFyYWN0ZXJcbi8vIG1ldHJpY3MsIGluY2x1ZGluZyBoZWlnaHQsIGRlcHRoLCBpdGFsaWMgY29ycmVjdGlvbiwgYW5kIHNrZXcgKGtlcm4gZnJvbSB0aGVcbi8vIGNoYXJhY3RlciB0byB0aGUgY29ycmVzcG9uZGluZyBcXHNrZXdjaGFyKVxuLy8gVGhpcyBtYXAgaXMgZ2VuZXJhdGVkIHZpYSBgbWFrZSBtZXRyaWNzYC4gSXQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIG1hbnVhbGx5LlxuXG4gLy8gVGhlc2UgYXJlIHZlcnkgcm91Z2ggYXBwcm94aW1hdGlvbnMuICBXZSBkZWZhdWx0IHRvIFRpbWVzIE5ldyBSb21hbiB3aGljaFxuLy8gc2hvdWxkIGhhdmUgTGF0aW4tMSBhbmQgQ3lyaWxsaWMgY2hhcmFjdGVycywgYnV0IG1heSBub3QgZGVwZW5kaW5nIG9uIHRoZVxuLy8gb3BlcmF0aW5nIHN5c3RlbS4gIFRoZSBtZXRyaWNzIGRvIG5vdCBhY2NvdW50IGZvciBleHRyYSBoZWlnaHQgZnJvbSB0aGVcbi8vIGFjY2VudHMuICBJbiB0aGUgY2FzZSBvZiBDeXJpbGxpYyBjaGFyYWN0ZXJzIHdoaWNoIGhhdmUgYm90aCBhc2NlbmRlcnMgYW5kXG4vLyBkZXNjZW5kZXJzIHdlIHByZWZlciBhcHByb3hpbWF0aW9ucyB3aXRoIGFzY2VuZGVycywgcHJpbWFyaWx5IHRvIHByZXZlbnRcbi8vIHRoZSBmcmFjdGlvbiBiYXIgb3Igcm9vdCBsaW5lIGZyb20gaW50ZXJzZWN0aW5nIHRoZSBnbHlwaC5cbi8vIFRPRE8oa2V2aW5iKSBhbGxvdyB1bmlvbiBvZiBtdWx0aXBsZSBnbHlwaCBtZXRyaWNzIGZvciBiZXR0ZXIgYWNjdXJhY3kuXG5cbnZhciBleHRyYUNoYXJhY3Rlck1hcCA9IHtcbiAgLy8gTGF0aW4tMVxuICAnw4UnOiAnQScsXG4gICfDhyc6ICdDJyxcbiAgJ8OQJzogJ0QnLFxuICAnw54nOiAnbycsXG4gICfDpSc6ICdhJyxcbiAgJ8OnJzogJ2MnLFxuICAnw7AnOiAnZCcsXG4gICfDvic6ICdvJyxcbiAgLy8gQ3lyaWxsaWNcbiAgJ9CQJzogJ0EnLFxuICAn0JEnOiAnQicsXG4gICfQkic6ICdCJyxcbiAgJ9CTJzogJ0YnLFxuICAn0JQnOiAnQScsXG4gICfQlSc6ICdFJyxcbiAgJ9CWJzogJ0snLFxuICAn0JcnOiAnMycsXG4gICfQmCc6ICdOJyxcbiAgJ9CZJzogJ04nLFxuICAn0JonOiAnSycsXG4gICfQmyc6ICdOJyxcbiAgJ9CcJzogJ00nLFxuICAn0J0nOiAnSCcsXG4gICfQnic6ICdPJyxcbiAgJ9CfJzogJ04nLFxuICAn0KAnOiAnUCcsXG4gICfQoSc6ICdDJyxcbiAgJ9CiJzogJ1QnLFxuICAn0KMnOiAneScsXG4gICfQpCc6ICdPJyxcbiAgJ9ClJzogJ1gnLFxuICAn0KYnOiAnVScsXG4gICfQpyc6ICdoJyxcbiAgJ9CoJzogJ1cnLFxuICAn0KknOiAnVycsXG4gICfQqic6ICdCJyxcbiAgJ9CrJzogJ1gnLFxuICAn0KwnOiAnQicsXG4gICfQrSc6ICczJyxcbiAgJ9CuJzogJ1gnLFxuICAn0K8nOiAnUicsXG4gICfQsCc6ICdhJyxcbiAgJ9CxJzogJ2InLFxuICAn0LInOiAnYScsXG4gICfQsyc6ICdyJyxcbiAgJ9C0JzogJ3knLFxuICAn0LUnOiAnZScsXG4gICfQtic6ICdtJyxcbiAgJ9C3JzogJ2UnLFxuICAn0LgnOiAnbicsXG4gICfQuSc6ICduJyxcbiAgJ9C6JzogJ24nLFxuICAn0LsnOiAnbicsXG4gICfQvCc6ICdtJyxcbiAgJ9C9JzogJ24nLFxuICAn0L4nOiAnbycsXG4gICfQvyc6ICduJyxcbiAgJ9GAJzogJ3AnLFxuICAn0YEnOiAnYycsXG4gICfRgic6ICdvJyxcbiAgJ9GDJzogJ3knLFxuICAn0YQnOiAnYicsXG4gICfRhSc6ICd4JyxcbiAgJ9GGJzogJ24nLFxuICAn0YcnOiAnbicsXG4gICfRiCc6ICd3JyxcbiAgJ9GJJzogJ3cnLFxuICAn0YonOiAnYScsXG4gICfRiyc6ICdtJyxcbiAgJ9GMJzogJ2EnLFxuICAn0Y0nOiAnZScsXG4gICfRjic6ICdtJyxcbiAgJ9GPJzogJ3InXG59O1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWRkcyBuZXcgZm9udCBtZXRyaWNzIHRvIGRlZmF1bHQgbWV0cmljTWFwXG4gKiBJdCBjYW4gYWxzbyBvdmVycmlkZSBleGlzdGluZyBtZXRyaWNzXG4gKi9cbmZ1bmN0aW9uIHNldEZvbnRNZXRyaWNzKGZvbnROYW1lLCBtZXRyaWNzKSB7XG4gIGZvbnRNZXRyaWNzRGF0YVtmb250TmFtZV0gPSBtZXRyaWNzO1xufVxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGxvb2tpbmcgdXAgaW5mb3JtYXRpb24gaW4gdGhlXG4gKiBtZXRyaWNNYXAgdGFibGUuIEl0IHRha2VzIGEgY2hhcmFjdGVyIGFzIGEgc3RyaW5nLCBhbmQgYSBmb250LlxuICpcbiAqIE5vdGU6IHRoZSBgd2lkdGhgIHByb3BlcnR5IG1heSBiZSB1bmRlZmluZWQgaWYgZm9udE1ldHJpY3NEYXRhLmpzIHdhc24ndFxuICogYnVpbHQgdXNpbmcgYE1ha2UgZXh0ZW5kZWRfbWV0cmljc2AuXG4gKi9cblxuZnVuY3Rpb24gZ2V0Q2hhcmFjdGVyTWV0cmljcyhjaGFyYWN0ZXIsIGZvbnQsIG1vZGUpIHtcbiAgaWYgKCFmb250TWV0cmljc0RhdGFbZm9udF0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJGb250IG1ldHJpY3Mgbm90IGZvdW5kIGZvciBmb250OiBcIiArIGZvbnQgKyBcIi5cIik7XG4gIH1cblxuICB2YXIgY2ggPSBjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKTtcbiAgdmFyIG1ldHJpY3MgPSBmb250TWV0cmljc0RhdGFbZm9udF1bY2hdO1xuXG4gIGlmICghbWV0cmljcyAmJiBjaGFyYWN0ZXJbMF0gaW4gZXh0cmFDaGFyYWN0ZXJNYXApIHtcbiAgICBjaCA9IGV4dHJhQ2hhcmFjdGVyTWFwW2NoYXJhY3RlclswXV0uY2hhckNvZGVBdCgwKTtcbiAgICBtZXRyaWNzID0gZm9udE1ldHJpY3NEYXRhW2ZvbnRdW2NoXTtcbiAgfVxuXG4gIGlmICghbWV0cmljcyAmJiBtb2RlID09PSAndGV4dCcpIHtcbiAgICAvLyBXZSBkb24ndCB0eXBpY2FsbHkgaGF2ZSBmb250IG1ldHJpY3MgZm9yIEFzaWFuIHNjcmlwdHMuXG4gICAgLy8gQnV0IHNpbmNlIHdlIHN1cHBvcnQgdGhlbSBpbiB0ZXh0IG1vZGUsIHdlIG5lZWQgdG8gcmV0dXJuXG4gICAgLy8gc29tZSBzb3J0IG9mIG1ldHJpY3MuXG4gICAgLy8gU28gaWYgdGhlIGNoYXJhY3RlciBpcyBpbiBhIHNjcmlwdCB3ZSBzdXBwb3J0IGJ1dCB3ZVxuICAgIC8vIGRvbid0IGhhdmUgbWV0cmljcyBmb3IgaXQsIGp1c3QgdXNlIHRoZSBtZXRyaWNzIGZvclxuICAgIC8vIHRoZSBMYXRpbiBjYXBpdGFsIGxldHRlciBNLiBUaGlzIGlzIGNsb3NlIGVub3VnaCBiZWNhdXNlXG4gICAgLy8gd2UgKGN1cnJlbnRseSkgb25seSBjYXJlIGFib3V0IHRoZSBoZWlnaHQgb2YgdGhlIGdscHloXG4gICAgLy8gbm90IGl0cyB3aWR0aC5cbiAgICBpZiAoc3VwcG9ydGVkQ29kZXBvaW50KGNoKSkge1xuICAgICAgbWV0cmljcyA9IGZvbnRNZXRyaWNzRGF0YVtmb250XVs3N107IC8vIDc3IGlzIHRoZSBjaGFyY29kZSBmb3IgJ00nXG4gICAgfVxuICB9XG5cbiAgaWYgKG1ldHJpY3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVwdGg6IG1ldHJpY3NbMF0sXG4gICAgICBoZWlnaHQ6IG1ldHJpY3NbMV0sXG4gICAgICBpdGFsaWM6IG1ldHJpY3NbMl0sXG4gICAgICBza2V3OiBtZXRyaWNzWzNdLFxuICAgICAgd2lkdGg6IG1ldHJpY3NbNF1cbiAgICB9O1xuICB9XG59XG52YXIgZm9udE1ldHJpY3NCeVNpemVJbmRleCA9IHt9O1xuLyoqXG4gKiBHZXQgdGhlIGZvbnQgbWV0cmljcyBmb3IgYSBnaXZlbiBzaXplLlxuICovXG5cbmZ1bmN0aW9uIGdldEdsb2JhbE1ldHJpY3Moc2l6ZSkge1xuICB2YXIgc2l6ZUluZGV4O1xuXG4gIGlmIChzaXplID49IDUpIHtcbiAgICBzaXplSW5kZXggPSAwO1xuICB9IGVsc2UgaWYgKHNpemUgPj0gMykge1xuICAgIHNpemVJbmRleCA9IDE7XG4gIH0gZWxzZSB7XG4gICAgc2l6ZUluZGV4ID0gMjtcbiAgfVxuXG4gIGlmICghZm9udE1ldHJpY3NCeVNpemVJbmRleFtzaXplSW5kZXhdKSB7XG4gICAgdmFyIG1ldHJpY3MgPSBmb250TWV0cmljc0J5U2l6ZUluZGV4W3NpemVJbmRleF0gPSB7XG4gICAgICBjc3NFbVBlck11OiBzaWdtYXNBbmRYaXMucXVhZFtzaXplSW5kZXhdIC8gMThcbiAgICB9O1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNpZ21hc0FuZFhpcykge1xuICAgICAgaWYgKHNpZ21hc0FuZFhpcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIG1ldHJpY3Nba2V5XSA9IHNpZ21hc0FuZFhpc1trZXldW3NpemVJbmRleF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZvbnRNZXRyaWNzQnlTaXplSW5kZXhbc2l6ZUluZGV4XTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3N5bWJvbHMuanNcbi8qKlxuICogVGhpcyBmaWxlIGhvbGRzIGEgbGlzdCBvZiBhbGwgbm8tYXJndW1lbnQgZnVuY3Rpb25zIGFuZCBzaW5nbGUtY2hhcmFjdGVyXG4gKiBzeW1ib2xzIChsaWtlICdhJyBvciAnOycpLlxuICpcbiAqIEZvciBlYWNoIG9mIHRoZSBzeW1ib2xzLCB0aGVyZSBhcmUgdGhyZWUgcHJvcGVydGllcyB0aGV5IGNhbiBoYXZlOlxuICogLSBmb250IChyZXF1aXJlZCk6IHRoZSBmb250IHRvIGJlIHVzZWQgZm9yIHRoaXMgc3ltYm9sLiBFaXRoZXIgXCJtYWluXCIgKHRoZVxuICAgICBub3JtYWwgZm9udCksIG9yIFwiYW1zXCIgKHRoZSBhbXMgZm9udHMpLlxuICogLSBncm91cCAocmVxdWlyZWQpOiB0aGUgUGFyc2VOb2RlIGdyb3VwIHR5cGUgdGhlIHN5bWJvbCBzaG91bGQgaGF2ZSAoaS5lLlxuICAgICBcInRleHRvcmRcIiwgXCJtYXRob3JkXCIsIGV0YykuXG4gICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vS2FUZVgvS2FUZVgvd2lraS9FeGFtaW5pbmctVGVYI2dyb3VwLXR5cGVzXG4gKiAtIHJlcGxhY2U6IHRoZSBjaGFyYWN0ZXIgdGhhdCB0aGlzIHN5bWJvbCBvciBmdW5jdGlvbiBzaG91bGQgYmVcbiAqICAgcmVwbGFjZWQgd2l0aCAoaS5lLiBcIlxccGhpXCIgaGFzIGEgcmVwbGFjZSB2YWx1ZSBvZiBcIlxcdTAzZDVcIiwgdGhlIHBoaVxuICogICBjaGFyYWN0ZXIgaW4gdGhlIG1haW4gZm9udCkuXG4gKlxuICogVGhlIG91dGVybW9zdCBtYXAgaW4gdGhlIHRhYmxlIGluZGljYXRlcyB3aGF0IG1vZGUgdGhlIHN5bWJvbHMgc2hvdWxkIGJlXG4gKiBhY2NlcHRlZCBpbiAoZS5nLiBcIm1hdGhcIiBvciBcInRleHRcIikuXG4gKi9cbi8vIFNvbWUgb2YgdGhlc2UgaGF2ZSBhIFwiLXRva2VuXCIgc3VmZml4IHNpbmNlIHRoZXNlIGFyZSBhbHNvIHVzZWQgYXMgYFBhcnNlTm9kZWBcbi8vIHR5cGVzIGZvciByYXcgdGV4dCB0b2tlbnMsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIGhpZ2hlci1sZXZlbFxuLy8gYFBhcnNlTm9kZWAgdHlwZXMuIFRoZXNlIGBQYXJzZU5vZGVgcyBhcmUgY29uc3RydWN0ZWQgd2l0aGluIGBQYXJzZXJgIGJ5XG4vLyBsb29raW5nIHVwIHRoZSBgc3ltYm9sc2AgbWFwLlxudmFyIEFUT01TID0ge1xuICBcImJpblwiOiAxLFxuICBcImNsb3NlXCI6IDEsXG4gIFwiaW5uZXJcIjogMSxcbiAgXCJvcGVuXCI6IDEsXG4gIFwicHVuY3RcIjogMSxcbiAgXCJyZWxcIjogMVxufTtcbnZhciBOT05fQVRPTVMgPSB7XG4gIFwiYWNjZW50LXRva2VuXCI6IDEsXG4gIFwibWF0aG9yZFwiOiAxLFxuICBcIm9wLXRva2VuXCI6IDEsXG4gIFwic3BhY2luZ1wiOiAxLFxuICBcInRleHRvcmRcIjogMVxufTtcbnZhciBzeW1ib2xzID0ge1xuICBcIm1hdGhcIjoge30sXG4gIFwidGV4dFwiOiB7fVxufTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19zeW1ib2xzID0gKHN5bWJvbHMpO1xuLyoqIGBhY2NlcHRVbmljb2RlQ2hhciA9IHRydWVgIGlzIG9ubHkgYXBwbGljYWJsZSBpZiBgcmVwbGFjZWAgaXMgc2V0LiAqL1xuXG5mdW5jdGlvbiBkZWZpbmVTeW1ib2wobW9kZSwgZm9udCwgZ3JvdXAsIHJlcGxhY2UsIG5hbWUsIGFjY2VwdFVuaWNvZGVDaGFyKSB7XG4gIHN5bWJvbHNbbW9kZV1bbmFtZV0gPSB7XG4gICAgZm9udDogZm9udCxcbiAgICBncm91cDogZ3JvdXAsXG4gICAgcmVwbGFjZTogcmVwbGFjZVxuICB9O1xuXG4gIGlmIChhY2NlcHRVbmljb2RlQ2hhciAmJiByZXBsYWNlKSB7XG4gICAgc3ltYm9sc1ttb2RlXVtyZXBsYWNlXSA9IHN5bWJvbHNbbW9kZV1bbmFtZV07XG4gIH1cbn0gLy8gU29tZSBhYmJyZXZpYXRpb25zIGZvciBjb21tb25seSB1c2VkIHN0cmluZ3MuXG4vLyBUaGlzIGhlbHBzIG1pbmlmeSB0aGUgY29kZSwgYW5kIGFsc28gc3BvdHRpbmcgdHlwb3MgdXNpbmcganNoaW50LlxuLy8gbW9kZXM6XG5cbnZhciBzeW1ib2xzX21hdGggPSBcIm1hdGhcIjtcbnZhciBzeW1ib2xzX3RleHQgPSBcInRleHRcIjsgLy8gZm9udHM6XG5cbnZhciBtYWluID0gXCJtYWluXCI7XG52YXIgYW1zID0gXCJhbXNcIjsgLy8gZ3JvdXBzOlxuXG52YXIgc3ltYm9sc19hY2NlbnQgPSBcImFjY2VudC10b2tlblwiO1xudmFyIGJpbiA9IFwiYmluXCI7XG52YXIgc3ltYm9sc19jbG9zZSA9IFwiY2xvc2VcIjtcbnZhciBzeW1ib2xzX2lubmVyID0gXCJpbm5lclwiO1xudmFyIG1hdGhvcmQgPSBcIm1hdGhvcmRcIjtcbnZhciBvcCA9IFwib3AtdG9rZW5cIjtcbnZhciBzeW1ib2xzX29wZW4gPSBcIm9wZW5cIjtcbnZhciBwdW5jdCA9IFwicHVuY3RcIjtcbnZhciByZWwgPSBcInJlbFwiO1xudmFyIHN5bWJvbHNfc3BhY2luZyA9IFwic3BhY2luZ1wiO1xudmFyIHN5bWJvbHNfdGV4dG9yZCA9IFwidGV4dG9yZFwiOyAvLyBOb3cgY29tZXMgdGhlIHN5bWJvbCB0YWJsZVxuLy8gUmVsYXRpb24gU3ltYm9sc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2MVwiLCBcIlxcXFxlcXVpdlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjdBXCIsIFwiXFxcXHByZWNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI3QlwiLCBcIlxcXFxzdWNjXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyM0NcIiwgXCJcXFxcc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQTVcIiwgXCJcXFxccGVycFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyQUFGXCIsIFwiXFxcXHByZWNlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyQUIwXCIsIFwiXFxcXHN1Y2NlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjQzXCIsIFwiXFxcXHNpbWVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMjNcIiwgXCJcXFxcbWlkXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNkFcIiwgXCJcXFxcbGxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2QlwiLCBcIlxcXFxnZ1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjREXCIsIFwiXFxcXGFzeW1wXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMjVcIiwgXCJcXFxccGFyYWxsZWxcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjJDOFwiLCBcIlxcXFxib3d0aWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjMyM1wiLCBcIlxcXFxzbWlsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjkxXCIsIFwiXFxcXHNxc3Vic2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI5MlwiLCBcIlxcXFxzcXN1cHNldGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNTBcIiwgXCJcXFxcZG90ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjMyMlwiLCBcIlxcXFxmcm93blwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjBCXCIsIFwiXFxcXG5pXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMURcIiwgXCJcXFxccHJvcHRvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQTJcIiwgXCJcXFxcdmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjJBM1wiLCBcIlxcXFxkYXNodlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjBCXCIsIFwiXFxcXG93bnNcIik7IC8vIFB1bmN0dWF0aW9uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHB1bmN0LCBcIi5cIiwgXCJcXFxcbGRvdHBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBwdW5jdCwgXCJcXHUyMkM1XCIsIFwiXFxcXGNkb3RwXCIpOyAvLyBNaXNjIFN5bWJvbHNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiNcIiwgXCJcXFxcI1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIjXCIsIFwiXFxcXCNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJlwiLCBcIlxcXFwmXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiZcIiwgXCJcXFxcJlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTM1XCIsIFwiXFxcXGFsZXBoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDBcIiwgXCJcXFxcZm9yYWxsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMEZcIiwgXCJcXFxcaGJhclwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjAzXCIsIFwiXFxcXGV4aXN0c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjA3XCIsIFwiXFxcXG5hYmxhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2NkRcIiwgXCJcXFxcZmxhdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTEzXCIsIFwiXFxcXGVsbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNjZFXCIsIFwiXFxcXG5hdHVyYWxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2M1wiLCBcIlxcXFxjbHVic3VpdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTE4XCIsIFwiXFxcXHdwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2NkZcIiwgXCJcXFxcc2hhcnBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2MlwiLCBcIlxcXFxkaWFtb25kc3VpdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTFDXCIsIFwiXFxcXFJlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2NjFcIiwgXCJcXFxcaGVhcnRzdWl0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMTFcIiwgXCJcXFxcSW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2MFwiLCBcIlxcXFxzcGFkZXN1aXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QTdcIiwgXCJcXFxcU1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhCNlwiLCBcIlxcXFxQXCIsIHRydWUpOyAvLyBNYXRoIGFuZCBUZXh0XG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXGRhZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXGRhZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXHRleHRkYWdnZXJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAyMVwiLCBcIlxcXFxkZGFnXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMjFcIiwgXCJcXFxcZGRhZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIxXCIsIFwiXFxcXHRleHRkYWdnZXJkYmxcIik7IC8vIExhcmdlIERlbGltaXRlcnNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyM0IxXCIsIFwiXFxcXHJtb3VzdGFjaGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiXFx1MjNCMFwiLCBcIlxcXFxsbW91c3RhY2hlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyN0VGXCIsIFwiXFxcXHJncm91cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyN0VFXCIsIFwiXFxcXGxncm91cFwiLCB0cnVlKTsgLy8gQmluYXJ5IE9wZXJhdG9yc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxM1wiLCBcIlxcXFxtcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk2XCIsIFwiXFxcXG9taW51c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjhFXCIsIFwiXFxcXHVwbHVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTNcIiwgXCJcXFxcc3FjYXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxN1wiLCBcIlxcXFxhc3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjI5NFwiLCBcIlxcXFxzcWN1cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUVGXCIsIFwiXFxcXGJpZ2NpcmNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxOVwiLCBcIlxcXFxidWxsZXRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjAyMVwiLCBcIlxcXFxkZGFnZ2VyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyNDBcIiwgXCJcXFxcd3JcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MkEzRlwiLCBcIlxcXFxhbWFsZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCImXCIsIFwiXFxcXEFuZFwiKTsgLy8gZnJvbSBhbXNtYXRoXG4vLyBBcnJvdyBTeW1ib2xzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyN0Y1XCIsIFwiXFxcXGxvbmdsZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMFwiLCBcIlxcXFxMZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjdGOFwiLCBcIlxcXFxMb25nbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RjZcIiwgXCJcXFxcbG9uZ3JpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMlwiLCBcIlxcXFxSaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RjlcIiwgXCJcXFxcTG9uZ3JpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5NFwiLCBcIlxcXFxsZWZ0cmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyN0Y3XCIsIFwiXFxcXGxvbmdsZWZ0cmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUQ0XCIsIFwiXFxcXExlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RkFcIiwgXCJcXFxcTG9uZ2xlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQTZcIiwgXCJcXFxcbWFwc3RvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RkNcIiwgXCJcXFxcbG9uZ21hcHN0b1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTk3XCIsIFwiXFxcXG5lYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFBOVwiLCBcIlxcXFxob29rbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQUFcIiwgXCJcXFxcaG9va3JpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5OFwiLCBcIlxcXFxzZWFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQkNcIiwgXCJcXFxcbGVmdGhhcnBvb251cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUMwXCIsIFwiXFxcXHJpZ2h0aGFycG9vbnVwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTlcIiwgXCJcXFxcc3dhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUJEXCIsIFwiXFxcXGxlZnRoYXJwb29uZG93blwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUMxXCIsIFwiXFxcXHJpZ2h0aGFycG9vbmRvd25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5NlwiLCBcIlxcXFxud2Fycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQ0NcIiwgXCJcXFxccmlnaHRsZWZ0aGFycG9vbnNcIiwgdHJ1ZSk7IC8vIEFNUyBOZWdhdGVkIEJpbmFyeSBSZWxhdGlvbnNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2RVwiLCBcIlxcXFxubGVzc1wiLCB0cnVlKTsgLy8gU3ltYm9sIG5hbWVzIHByZWNlZWRlZCBieSBcIkBcIiBlYWNoIGhhdmUgYSBjb3JyZXNwb25kaW5nIG1hY3JvLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDEwXCIsIFwiXFxcXEBubGVxc2xhbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDExXCIsIFwiXFxcXEBubGVxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBODdcIiwgXCJcXFxcbG5lcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNjhcIiwgXCJcXFxcbG5lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDBDXCIsIFwiXFxcXEBsdmVydG5lcXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkU2XCIsIFwiXFxcXGxuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4OVwiLCBcIlxcXFxsbmFwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyODBcIiwgXCJcXFxcbnByZWNcIiwgdHJ1ZSk7IC8vIHVuaWNvZGUtbWF0aCBtYXBzIFxcdTIyZTAgdG8gXFxucHJlY2N1cmx5ZXEuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRTBcIiwgXCJcXFxcbnByZWNlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRThcIiwgXCJcXFxccHJlY25zaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI5XCIsIFwiXFxcXHByZWNuYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0MVwiLCBcIlxcXFxuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwNlwiLCBcIlxcXFxAbnNob3J0bWlkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjIyNFwiLCBcIlxcXFxubWlkXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBQ1wiLCBcIlxcXFxudmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFEXCIsIFwiXFxcXG52RGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRUFcIiwgXCJcXFxcbnRyaWFuZ2xlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRUNcIiwgXCJcXFxcbnRyaWFuZ2xlbGVmdGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4QVwiLCBcIlxcXFxzdWJzZXRuZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDFBXCIsIFwiXFxcXEB2YXJzdWJzZXRuZXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUNCXCIsIFwiXFxcXHN1YnNldG5lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDE3XCIsIFwiXFxcXEB2YXJzdWJzZXRuZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2RlwiLCBcIlxcXFxuZ3RyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRlwiLCBcIlxcXFxAbmdlcXNsYW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRVwiLCBcIlxcXFxAbmdlcXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTg4XCIsIFwiXFxcXGduZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjY5XCIsIFwiXFxcXGduZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRFwiLCBcIlxcXFxAZ3ZlcnRuZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFN1wiLCBcIlxcXFxnbnNpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBOEFcIiwgXCJcXFxcZ25hcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjgxXCIsIFwiXFxcXG5zdWNjXCIsIHRydWUpOyAvLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMmUxIHRvIFxcbnN1Y2NjdXJseWVxLiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkUxXCIsIFwiXFxcXG5zdWNjZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkU5XCIsIFwiXFxcXHN1Y2Nuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFCQVwiLCBcIlxcXFxzdWNjbmFwcHJveFwiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjI0NiB0byBcXHNpbW5lcXEuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNDZcIiwgXCJcXFxcbmNvbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDA3XCIsIFwiXFxcXEBuc2hvcnRwYXJhbGxlbFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyMjZcIiwgXCJcXFxcbnBhcmFsbGVsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBRlwiLCBcIlxcXFxuVkRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkVCXCIsIFwiXFxcXG50cmlhbmdsZXJpZ2h0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFRFwiLCBcIlxcXFxudHJpYW5nbGVyaWdodGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxOFwiLCBcIlxcXFxAbnN1cHNldGVxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyOEJcIiwgXCJcXFxcc3Vwc2V0bmVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxQlwiLCBcIlxcXFxAdmFyc3Vwc2V0bmVxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFDQ1wiLCBcIlxcXFxzdXBzZXRuZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxOVwiLCBcIlxcXFxAdmFyc3Vwc2V0bmVxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQUVcIiwgXCJcXFxcblZkYXNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFCNVwiLCBcIlxcXFxwcmVjbmVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQjZcIiwgXCJcXFxcc3VjY25lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDE2XCIsIFwiXFxcXEBuc3Vic2V0ZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCNFwiLCBcIlxcXFx1bmxoZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQjVcIiwgXCJcXFxcdW5yaGRcIik7IC8vIEFNUyBOZWdhdGVkIEFycm93c1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMTlBXCIsIFwiXFxcXG5sZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMTlCXCIsIFwiXFxcXG5yaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRFwiLCBcIlxcXFxuTGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRlwiLCBcIlxcXFxuUmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQUVcIiwgXCJcXFxcbmxlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRVwiLCBcIlxcXFxuTGVmdHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7IC8vIEFNUyBNaXNjXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTI1QjNcIiwgXCJcXFxcdmFydHJpYW5nbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTBGXCIsIFwiXFxcXGhzbGFzaFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1QkRcIiwgXCJcXFxcdHJpYW5nbGVkb3duXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVDQVwiLCBcIlxcXFxsb3plbmdlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjRDOFwiLCBcIlxcXFxjaXJjbGVkU1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxceEFFXCIsIFwiXFxcXGNpcmNsZWRSXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QUVcIiwgXCJcXFxcY2lyY2xlZFJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIxXCIsIFwiXFxcXG1lYXN1cmVkYW5nbGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjA0XCIsIFwiXFxcXG5leGlzdHNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTI3XCIsIFwiXFxcXG1ob1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMzJcIiwgXCJcXFxcRmludlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxNDFcIiwgXCJcXFxcR2FtZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMzVcIiwgXCJcXFxcYmFja3ByaW1lXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVCMlwiLCBcIlxcXFxibGFja3RyaWFuZ2xlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVCQ1wiLCBcIlxcXFxibGFja3RyaWFuZ2xlZG93blwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1QTBcIiwgXCJcXFxcYmxhY2tzcXVhcmVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyOUVCXCIsIFwiXFxcXGJsYWNrbG96ZW5nZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2MDVcIiwgXCJcXFxcYmlnc3RhclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjJcIiwgXCJcXFxcc3BoZXJpY2FsYW5nbGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjAxXCIsIFwiXFxcXGNvbXBsZW1lbnRcIiwgdHJ1ZSk7IC8vIHVuaWNvZGUtbWF0aCBtYXBzIFUrRjAgKMOwKSB0byBcXG1hdGhldGguIFdlIG1hcCB0byBBTVMgZnVuY3Rpb24gXFxldGhcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RjBcIiwgXCJcXFxcZXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjU3MVwiLCBcIlxcXFxkaWFndXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNTcyXCIsIFwiXFxcXGRpYWdkb3duXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVBMVwiLCBcIlxcXFxzcXVhcmVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNUExXCIsIFwiXFxcXEJveFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1Q0FcIiwgXCJcXFxcRGlhbW9uZFwiKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgVStBNSB0byBcXG1hdGh5ZW4uIFdlIG1hcCB0byBBTVMgZnVuY3Rpb24gXFx5ZW5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QTVcIiwgXCJcXFxceWVuXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QTVcIiwgXCJcXFxceWVuXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjcxM1wiLCBcIlxcXFxjaGVja21hcmtcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNzEzXCIsIFwiXFxcXGNoZWNrbWFya1wiKTsgLy8gQU1TIEhlYnJld1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTM2XCIsIFwiXFxcXGJldGhcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTM4XCIsIFwiXFxcXGRhbGV0aFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMzdcIiwgXCJcXFxcZ2ltZWxcIiwgdHJ1ZSk7IC8vIEFNUyBHcmVla1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0REXCIsIFwiXFxcXGRpZ2FtbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0YwXCIsIFwiXFxcXHZhcmthcHBhXCIpOyAvLyBBTVMgRGVsaW1pdGVyc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfb3BlbiwgXCJcXHUyNTBDXCIsIFwiXFxcXHVsY29ybmVyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX2Nsb3NlLCBcIlxcdTI1MTBcIiwgXCJcXFxcdXJjb3JuZXJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfb3BlbiwgXCJcXHUyNTE0XCIsIFwiXFxcXGxsY29ybmVyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX2Nsb3NlLCBcIlxcdTI1MThcIiwgXCJcXFxcbHJjb3JuZXJcIiwgdHJ1ZSk7IC8vIEFNUyBCaW5hcnkgUmVsYXRpb25zXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNjZcIiwgXCJcXFxcbGVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBN0RcIiwgXCJcXFxcbGVxc2xhbnRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTk1XCIsIFwiXFxcXGVxc2xhbnRsZXNzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3MlwiLCBcIlxcXFxsZXNzc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4NVwiLCBcIlxcXFxsZXNzYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0QVwiLCBcIlxcXFxhcHByb3hlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDZcIiwgXCJcXFxcbGVzc2RvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRDhcIiwgXCJcXFxcbGxsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3NlwiLCBcIlxcXFxsZXNzZ3RyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEQVwiLCBcIlxcXFxsZXNzZXFndHJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQThCXCIsIFwiXFxcXGxlc3NlcXFndHJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjUxXCIsIFwiXFxcXGRvdGVxZG90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI1M1wiLCBcIlxcXFxyaXNpbmdkb3RzZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjUyXCIsIFwiXFxcXGZhbGxpbmdkb3RzZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjNEXCIsIFwiXFxcXGJhY2tzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkNEXCIsIFwiXFxcXGJhY2tzaW1lcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQzVcIiwgXCJcXFxcc3Vic2V0ZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEMFwiLCBcIlxcXFxTdWJzZXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjhGXCIsIFwiXFxcXHNxc3Vic2V0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3Q1wiLCBcIlxcXFxwcmVjY3VybHllcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyREVcIiwgXCJcXFxcY3VybHllcXByZWNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjdFXCIsIFwiXFxcXHByZWNzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI3XCIsIFwiXFxcXHByZWNhcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkIyXCIsIFwiXFxcXHZhcnRyaWFuZ2xlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjRcIiwgXCJcXFxcdHJpYW5nbGVsZWZ0ZXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkE4XCIsIFwiXFxcXHZEYXNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBQVwiLCBcIlxcXFxWdmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMzIzXCIsIFwiXFxcXHNtYWxsc21pbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMzIyXCIsIFwiXFxcXHNtYWxsZnJvd25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjRGXCIsIFwiXFxcXGJ1bXBlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNEVcIiwgXCJcXFxcQnVtcGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2N1wiLCBcIlxcXFxnZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE3RVwiLCBcIlxcXFxnZXFzbGFudFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBOTZcIiwgXCJcXFxcZXFzbGFudGd0clwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNzNcIiwgXCJcXFxcZ3Ryc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4NlwiLCBcIlxcXFxndHJhcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQ3XCIsIFwiXFxcXGd0cmRvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRDlcIiwgXCJcXFxcZ2dnXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3N1wiLCBcIlxcXFxndHJsZXNzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEQlwiLCBcIlxcXFxndHJlcWxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQThDXCIsIFwiXFxcXGd0cmVxcWxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjU2XCIsIFwiXFxcXGVxY2lyY1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNTdcIiwgXCJcXFxcY2lyY2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI1Q1wiLCBcIlxcXFx0cmlhbmdsZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjNDXCIsIFwiXFxcXHRoaWNrc2ltXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0OFwiLCBcIlxcXFx0aGlja2FwcHJveFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQzZcIiwgXCJcXFxcc3Vwc2V0ZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEMVwiLCBcIlxcXFxTdXBzZXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjkwXCIsIFwiXFxcXHNxc3Vwc2V0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3RFwiLCBcIlxcXFxzdWNjY3VybHllcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyREZcIiwgXCJcXFxcY3VybHllcXN1Y2NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjdGXCIsIFwiXFxcXHN1Y2NzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI4XCIsIFwiXFxcXHN1Y2NhcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkIzXCIsIFwiXFxcXHZhcnRyaWFuZ2xlcmlnaHRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkI1XCIsIFwiXFxcXHRyaWFuZ2xlcmlnaHRlcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQTlcIiwgXCJcXFxcVmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjIzXCIsIFwiXFxcXHNob3J0bWlkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjIyNVwiLCBcIlxcXFxzaG9ydHBhcmFsbGVsXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2Q1wiLCBcIlxcXFxiZXR3ZWVuXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJENFwiLCBcIlxcXFxwaXRjaGZvcmtcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjFEXCIsIFwiXFxcXHZhcnByb3B0b1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTI1QzBcIiwgXCJcXFxcYmxhY2t0cmlhbmdsZWxlZnRcIik7IC8vIHVuaWNvZGUtbWF0aCBzYXlzIHRoYXQgXFx0aGVyZWZvcmUgaXMgYSBtYXRob3JkIGF0b20uXG4vLyBXZSBrZXB0IHRoZSBhbXNzeW1iIGF0b20gdHlwZSwgd2hpY2ggaXMgcmVsLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjM0XCIsIFwiXFxcXHRoZXJlZm9yZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyMERcIiwgXCJcXFxcYmFja2Vwc2lsb25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyNUI2XCIsIFwiXFxcXGJsYWNrdHJpYW5nbGVyaWdodFwiKTsgLy8gdW5pY29kZS1tYXRoIHNheXMgdGhhdCBcXGJlY2F1c2UgaXMgYSBtYXRob3JkIGF0b20uXG4vLyBXZSBrZXB0IHRoZSBhbXNzeW1iIGF0b20gdHlwZSwgd2hpY2ggaXMgcmVsLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjM1XCIsIFwiXFxcXGJlY2F1c2VcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQ4XCIsIFwiXFxcXGxsbGVzc1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRDlcIiwgXCJcXFxcZ2dndHJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkIyXCIsIFwiXFxcXGxoZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQjNcIiwgXCJcXFxccmhkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0MlwiLCBcIlxcXFxlcXNpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMkM4XCIsIFwiXFxcXEpvaW5cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjUxXCIsIFwiXFxcXERvdGVxXCIsIHRydWUpOyAvLyBBTVMgQmluYXJ5IE9wZXJhdG9yc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjE0XCIsIFwiXFxcXGRvdHBsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjE2XCIsIFwiXFxcXHNtYWxsc2V0bWludXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQyXCIsIFwiXFxcXENhcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDNcIiwgXCJcXFxcQ3VwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MkE1RVwiLCBcIlxcXFxkb3VibGViYXJ3ZWRnZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOUZcIiwgXCJcXFxcYm94bWludXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjlFXCIsIFwiXFxcXGJveHBsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkM3XCIsIFwiXFxcXGRpdmlkZW9udGltZXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkM5XCIsIFwiXFxcXGx0aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQ0FcIiwgXCJcXFxccnRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDQlwiLCBcIlxcXFxsZWZ0dGhyZWV0aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQ0NcIiwgXCJcXFxccmlnaHR0aHJlZXRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDRlwiLCBcIlxcXFxjdXJseXdlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDRVwiLCBcIlxcXFxjdXJseXZlZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOURcIiwgXCJcXFxcY2lyY2xlZGRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjlCXCIsIFwiXFxcXGNpcmNsZWRhc3RcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkM1XCIsIFwiXFxcXGNlbnRlcmRvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQkFcIiwgXCJcXFxcaW50ZXJjYWxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQyXCIsIFwiXFxcXGRvdWJsZWNhcFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDNcIiwgXCJcXFxcZG91YmxlY3VwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJBMFwiLCBcIlxcXFxib3h0aW1lc1wiLCB0cnVlKTsgLy8gQU1TIEFycm93c1xuLy8gTm90ZTogdW5pY29kZS1tYXRoIG1hcHMgXFx1MjFlMiB0byB0aGVpciBvd24gZnVuY3Rpb24gXFxyaWdodGRhc2hhcnJvdy5cbi8vIFdlJ2xsIG1hcCBpdCB0byBBTVMgZnVuY3Rpb24gXFxkYXNocmlnaHRhcnJvdy4gSXQgcHJvZHVjZXMgdGhlIHNhbWUgYXRvbS5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFFMlwiLCBcIlxcXFxkYXNocmlnaHRhcnJvd1wiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjFlMCB0byBcXGxlZnRkYXNoYXJyb3cuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxRTBcIiwgXCJcXFxcZGFzaGxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQzdcIiwgXCJcXFxcbGVmdGxlZnRhcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUM2XCIsIFwiXFxcXGxlZnRyaWdodGFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxREFcIiwgXCJcXFxcTGxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxOUVcIiwgXCJcXFxcdHdvaGVhZGxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQTJcIiwgXCJcXFxcbGVmdGFycm93dGFpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQUJcIiwgXCJcXFxcbG9vcGFycm93bGVmdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQ0JcIiwgXCJcXFxcbGVmdHJpZ2h0aGFycG9vbnNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUI2XCIsIFwiXFxcXGN1cnZlYXJyb3dsZWZ0XCIsIHRydWUpOyAvLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMWJhIHRvIFxcYWN3b3BlbmNpcmNsZWFycm93LiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJBXCIsIFwiXFxcXGNpcmNsZWFycm93bGVmdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQjBcIiwgXCJcXFxcTHNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDOFwiLCBcIlxcXFx1cHVwYXJyb3dzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFCRlwiLCBcIlxcXFx1cGhhcnBvb25sZWZ0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDM1wiLCBcIlxcXFxkb3duaGFycG9vbmxlZnRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkI4XCIsIFwiXFxcXG11bHRpbWFwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBRFwiLCBcIlxcXFxsZWZ0cmlnaHRzcXVpZ2Fycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDOVwiLCBcIlxcXFxyaWdodHJpZ2h0YXJyb3dzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDNFwiLCBcIlxcXFxyaWdodGxlZnRhcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUEwXCIsIFwiXFxcXHR3b2hlYWRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBM1wiLCBcIlxcXFxyaWdodGFycm93dGFpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQUNcIiwgXCJcXFxcbG9vcGFycm93cmlnaHRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUI3XCIsIFwiXFxcXGN1cnZlYXJyb3dyaWdodFwiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjFiYiB0byBcXGN3b3BlbmNpcmNsZWFycm93LiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJCXCIsIFwiXFxcXGNpcmNsZWFycm93cmlnaHRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUIxXCIsIFwiXFxcXFJzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQ0FcIiwgXCJcXFxcZG93bmRvd25hcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJFXCIsIFwiXFxcXHVwaGFycG9vbnJpZ2h0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDMlwiLCBcIlxcXFxkb3duaGFycG9vbnJpZ2h0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFERFwiLCBcIlxcXFxyaWdodHNxdWlnYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUREXCIsIFwiXFxcXGxlYWRzdG9cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMURCXCIsIFwiXFxcXFJyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFCRVwiLCBcIlxcXFxyZXN0cmljdGlvblwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE4XCIsIFwiYFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIkXCIsIFwiXFxcXCRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJFwiLCBcIlxcXFwkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiRcIiwgXCJcXFxcdGV4dGRvbGxhclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIlXCIsIFwiXFxcXCVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJVwiLCBcIlxcXFwlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIl9cIiwgXCJcXFxcX1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJfXCIsIFwiXFxcXF9cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiX1wiLCBcIlxcXFx0ZXh0dW5kZXJzY29yZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIwXCIsIFwiXFxcXGFuZ2xlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMUVcIiwgXCJcXFxcaW5mdHlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAzMlwiLCBcIlxcXFxwcmltZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNUIzXCIsIFwiXFxcXHRyaWFuZ2xlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzOTNcIiwgXCJcXFxcR2FtbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDM5NFwiLCBcIlxcXFxEZWx0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwMzk4XCIsIFwiXFxcXFRoZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzOUJcIiwgXCJcXFxcTGFtYmRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzOUVcIiwgXCJcXFxcWGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDNBMFwiLCBcIlxcXFxQaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0EzXCIsIFwiXFxcXFNpZ21hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzQTVcIiwgXCJcXFxcVXBzaWxvblwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0E2XCIsIFwiXFxcXFBoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0E4XCIsIFwiXFxcXFBzaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0E5XCIsIFwiXFxcXE9tZWdhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkFcIiwgXCJcXHUwMzkxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkJcIiwgXCJcXHUwMzkyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkVcIiwgXCJcXHUwMzk1XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlpcIiwgXCJcXHUwMzk2XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkhcIiwgXCJcXHUwMzk3XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIklcIiwgXCJcXHUwMzk5XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIktcIiwgXCJcXHUwMzlBXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIk1cIiwgXCJcXHUwMzlDXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIk5cIiwgXCJcXHUwMzlEXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIk9cIiwgXCJcXHUwMzlGXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlBcIiwgXCJcXHUwM0ExXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlRcIiwgXCJcXHUwM0E0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlhcIiwgXCJcXHUwM0E3XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEFDXCIsIFwiXFxcXG5lZ1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhBQ1wiLCBcIlxcXFxsbm90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyQTRcIiwgXCJcXFxcdG9wXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyQTVcIiwgXCJcXFxcYm90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDVcIiwgXCJcXFxcZW1wdHlzZXRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjA1XCIsIFwiXFxcXHZhcm5vdGhpbmdcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjFcIiwgXCJcXFxcYWxwaGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjJcIiwgXCJcXFxcYmV0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCM1wiLCBcIlxcXFxnYW1tYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCNFwiLCBcIlxcXFxkZWx0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNGNVwiLCBcIlxcXFxlcHNpbG9uXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I2XCIsIFwiXFxcXHpldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjdcIiwgXCJcXFxcZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I4XCIsIFwiXFxcXHRoZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I5XCIsIFwiXFxcXGlvdGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkFcIiwgXCJcXFxca2FwcGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkJcIiwgXCJcXFxcbGFtYmRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JDXCIsIFwiXFxcXG11XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JEXCIsIFwiXFxcXG51XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JFXCIsIFwiXFxcXHhpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JGXCIsIFwiXFxcXG9taWNyb25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzBcIiwgXCJcXFxccGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzFcIiwgXCJcXFxccmhvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0MzXCIsIFwiXFxcXHNpZ21hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M0XCIsIFwiXFxcXHRhdVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDNVwiLCBcIlxcXFx1cHNpbG9uXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0Q1XCIsIFwiXFxcXHBoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDN1wiLCBcIlxcXFxjaGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzhcIiwgXCJcXFxccHNpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M5XCIsIFwiXFxcXG9tZWdhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I1XCIsIFwiXFxcXHZhcmVwc2lsb25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRDFcIiwgXCJcXFxcdmFydGhldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRDZcIiwgXCJcXFxcdmFycGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRjFcIiwgXCJcXFxcdmFycmhvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0MyXCIsIFwiXFxcXHZhcnNpZ21hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M2XCIsIFwiXFxcXHZhcnBoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjE3XCIsIFwiKlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCIrXCIsIFwiK1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjEyXCIsIFwiLVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMkM1XCIsIFwiXFxcXGNkb3RcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxOFwiLCBcIlxcXFxjaXJjXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxceEY3XCIsIFwiXFxcXGRpdlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHhCMVwiLCBcIlxcXFxwbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHhEN1wiLCBcIlxcXFx0aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI5XCIsIFwiXFxcXGNhcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjJBXCIsIFwiXFxcXGN1cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjE2XCIsIFwiXFxcXHNldG1pbnVzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMjdcIiwgXCJcXFxcbGFuZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI4XCIsIFwiXFxcXGxvclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI3XCIsIFwiXFxcXHdlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMjhcIiwgXCJcXFxcdmVlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMUFcIiwgXCJcXFxcc3VyZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCIoXCIsIFwiKFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJbXCIsIFwiW1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyN0U4XCIsIFwiXFxcXGxhbmdsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyMjIzXCIsIFwiXFxcXGx2ZXJ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIlxcdTIyMjVcIiwgXCJcXFxcbFZlcnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIilcIiwgXCIpXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJdXCIsIFwiXVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiP1wiLCBcIj9cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIiFcIiwgXCIhXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyN0U5XCIsIFwiXFxcXHJhbmdsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjIyM1wiLCBcIlxcXFxydmVydFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjIyNVwiLCBcIlxcXFxyVmVydFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI9XCIsIFwiPVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI8XCIsIFwiPFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI+XCIsIFwiPlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI6XCIsIFwiOlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjQ4XCIsIFwiXFxcXGFwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjQ1XCIsIFwiXFxcXGNvbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2NVwiLCBcIlxcXFxnZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjY1XCIsIFwiXFxcXGdlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkwXCIsIFwiXFxcXGdldHNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiPlwiLCBcIlxcXFxndFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjA4XCIsIFwiXFxcXGluXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdUUwMjBcIiwgXCJcXFxcQG5vdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjgyXCIsIFwiXFxcXHN1YnNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjgzXCIsIFwiXFxcXHN1cHNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjg2XCIsIFwiXFxcXHN1YnNldGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyODdcIiwgXCJcXFxcc3Vwc2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjg4XCIsIFwiXFxcXG5zdWJzZXRlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyODlcIiwgXCJcXFxcbnN1cHNldGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQThcIiwgXCJcXFxcbW9kZWxzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTBcIiwgXCJcXFxcbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNjRcIiwgXCJcXFxcbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2NFwiLCBcIlxcXFxsZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiPFwiLCBcIlxcXFxsdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkyXCIsIFwiXFxcXHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5MlwiLCBcIlxcXFx0b1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNzFcIiwgXCJcXFxcbmdlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNzBcIiwgXCJcXFxcbmxlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFwgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxzcGFjZVwiKTsgLy8gUmVmOiBMYVRlWCBTb3VyY2UgMmU6IFxcRGVjbGFyZVJvYnVzdENvbW1hbmR7XFxub2JyZWFrc3BhY2V9eyVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXG5vYnJlYWtzcGFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFwgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxzcGFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxub2JyZWFrc3BhY2VcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIG51bGwsIFwiXFxcXG5vYnJlYWtcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIG51bGwsIFwiXFxcXGFsbG93YnJlYWtcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBwdW5jdCwgXCIsXCIsIFwiLFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHB1bmN0LCBcIjtcIiwgXCI7XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCQ1wiLCBcIlxcXFxiYXJ3ZWRnZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQkJcIiwgXCJcXFxcdmVlYmFyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTlcIiwgXCJcXFxcb2RvdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk1XCIsIFwiXFxcXG9wbHVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTdcIiwgXCJcXFxcb3RpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDJcIiwgXCJcXFxccGFydGlhbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk4XCIsIFwiXFxcXG9zbGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOUFcIiwgXCJcXFxcY2lyY2xlZGNpcmNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkExXCIsIFwiXFxcXGJveGRvdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUIzXCIsIFwiXFxcXGJpZ3RyaWFuZ2xldXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjVCRFwiLCBcIlxcXFxiaWd0cmlhbmdsZWRvd25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjAyMFwiLCBcIlxcXFxkYWdnZXJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjJDNFwiLCBcIlxcXFxkaWFtb25kXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyQzZcIiwgXCJcXFxcc3RhclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUMzXCIsIFwiXFxcXHRyaWFuZ2xlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUI5XCIsIFwiXFxcXHRyaWFuZ2xlcmlnaHRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwie1wiLCBcIlxcXFx7XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIntcIiwgXCJcXFxce1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ7XCIsIFwiXFxcXHRleHRicmFjZWxlZnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIn1cIiwgXCJcXFxcfVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ9XCIsIFwiXFxcXH1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwifVwiLCBcIlxcXFx0ZXh0YnJhY2VyaWdodFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJ7XCIsIFwiXFxcXGxicmFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwifVwiLCBcIlxcXFxyYnJhY2VcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiW1wiLCBcIlxcXFxsYnJhY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiW1wiLCBcIlxcXFxsYnJhY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIihcIiwgXCJcXFxcbHBhcmVuXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCIpXCIsIFwiXFxcXHJwYXJlblwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCI8XCIsIFwiXFxcXHRleHRsZXNzXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCI+XCIsIFwiXFxcXHRleHRncmVhdGVyXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyMzBBXCIsIFwiXFxcXGxmbG9vclwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjMwQlwiLCBcIlxcXFxyZmxvb3JcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiXFx1MjMwOFwiLCBcIlxcXFxsY2VpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjMwOVwiLCBcIlxcXFxyY2VpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXFxcXCIsIFwiXFxcXGJhY2tzbGFzaFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIzXCIsIFwifFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIzXCIsIFwiXFxcXHZlcnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwifFwiLCBcIlxcXFx0ZXh0YmFyXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjI1XCIsIFwiXFxcXHxcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjIyNVwiLCBcIlxcXFxWZXJ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjVcIiwgXCJcXFxcdGV4dGJhcmRibFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ+XCIsIFwiXFxcXHRleHRhc2NpaXRpbGRlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcXFxcIiwgXCJcXFxcdGV4dGJhY2tzbGFzaFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJeXCIsIFwiXFxcXHRleHRhc2NpaWNpcmN1bVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkxXCIsIFwiXFxcXHVwYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMVwiLCBcIlxcXFxVcGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTNcIiwgXCJcXFxcZG93bmFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxRDNcIiwgXCJcXFxcRG93bmFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTVcIiwgXCJcXFxcdXBkb3duYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFENVwiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMTBcIiwgXCJcXFxcY29wcm9kXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjJDMVwiLCBcIlxcXFxiaWd2ZWVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMkMwXCIsIFwiXFxcXGJpZ3dlZGdlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MkEwNFwiLCBcIlxcXFxiaWd1cGx1c1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyQzJcIiwgXCJcXFxcYmlnY2FwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjJDM1wiLCBcIlxcXFxiaWdjdXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJCXCIsIFwiXFxcXGludFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMkJcIiwgXCJcXFxcaW50b3BcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJDXCIsIFwiXFxcXGlpbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJEXCIsIFwiXFxcXGlpaW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIwRlwiLCBcIlxcXFxwcm9kXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIxMVwiLCBcIlxcXFxzdW1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyQTAyXCIsIFwiXFxcXGJpZ290aW1lc1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTJBMDFcIiwgXCJcXFxcYmlnb3BsdXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyQTAwXCIsIFwiXFxcXGJpZ29kb3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJFXCIsIFwiXFxcXG9pbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJGXCIsIFwiXFxcXG9paW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIzMFwiLCBcIlxcXFxvaWlpbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyQTA2XCIsIFwiXFxcXGJpZ3NxY3VwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIyQlwiLCBcIlxcXFxzbWFsbGludFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfaW5uZXIsIFwiXFx1MjAyNlwiLCBcIlxcXFx0ZXh0ZWxsaXBzaXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2lubmVyLCBcIlxcdTIwMjZcIiwgXCJcXFxcbWF0aGVsbGlwc2lzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMDI2XCIsIFwiXFxcXGxkb3RzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMDI2XCIsIFwiXFxcXGxkb3RzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMkVGXCIsIFwiXFxcXEBjZG90c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfaW5uZXIsIFwiXFx1MjJGMVwiLCBcIlxcXFxkZG90c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMkVFXCIsIFwiXFxcXHZhcnZkb3RzXCIpOyAvLyBcXHZkb3RzIGlzIGEgbWFjcm9cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJDQVwiLCBcIlxcXFxhY3V0ZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQ0JcIiwgXCJcXFxcZ3JhdmVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHhBOFwiLCBcIlxcXFxkZG90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiflwiLCBcIlxcXFx0aWxkZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQzlcIiwgXCJcXFxcYmFyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEOFwiLCBcIlxcXFxicmV2ZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQzdcIiwgXCJcXFxcY2hlY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJeXCIsIFwiXFxcXGhhdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTIwRDdcIiwgXCJcXFxcdmVjXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEOVwiLCBcIlxcXFxkb3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkRBXCIsIFwiXFxcXG1hdGhyaW5nXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwMTMxXCIsIFwiXFxcXGltYXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwMjM3XCIsIFwiXFxcXGptYXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAxMzFcIiwgXCJcXFxcaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwMjM3XCIsIFwiXFxcXGpcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4REZcIiwgXCJcXFxcc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RTZcIiwgXCJcXFxcYWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RTZcIiwgXCJcXFxcYWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDE1M1wiLCBcIlxcXFxvZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhGOFwiLCBcIlxcXFxvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEM2XCIsIFwiXFxcXEFFXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAxNTJcIiwgXCJcXFxcT0VcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RDhcIiwgXCJcXFxcT1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQ0FcIiwgXCJcXFxcJ1wiKTsgLy8gYWN1dGVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJDQlwiLCBcIlxcXFxgXCIpOyAvLyBncmF2ZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkM2XCIsIFwiXFxcXF5cIik7IC8vIGNpcmN1bWZsZXhcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEQ1wiLCBcIlxcXFx+XCIpOyAvLyB0aWxkZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkM5XCIsIFwiXFxcXD1cIik7IC8vIG1hY3JvblxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkQ4XCIsIFwiXFxcXHVcIik7IC8vIGJyZXZlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyRDlcIiwgXCJcXFxcLlwiKTsgLy8gZG90IGFib3ZlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyREFcIiwgXCJcXFxcclwiKTsgLy8gcmluZyBhYm92ZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkM3XCIsIFwiXFxcXHZcIik7IC8vIGNhcm9uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxceEE4XCIsICdcXFxcXCInKTsgLy8gZGlhcmVzaXNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJERFwiLCBcIlxcXFxIXCIpOyAvLyBkb3VibGUgYWN1dGVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MjVFRlwiLCBcIlxcXFx0ZXh0Y2lyY2xlZFwiKTsgLy8gXFxiaWdjaXJjIGdseXBoXG4vLyBUaGVzZSBsaWdhdHVyZXMgYXJlIGRldGVjdGVkIGFuZCBjcmVhdGVkIGluIFBhcnNlci5qcydzIGBmb3JtTGlnYXR1cmVzYC5cblxudmFyIGxpZ2F0dXJlcyA9IHtcbiAgXCItLVwiOiB0cnVlLFxuICBcIi0tLVwiOiB0cnVlLFxuICBcImBgXCI6IHRydWUsXG4gIFwiJydcIjogdHJ1ZVxufTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDEzXCIsIFwiLS1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxM1wiLCBcIlxcXFx0ZXh0ZW5kYXNoXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTRcIiwgXCItLS1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxNFwiLCBcIlxcXFx0ZXh0ZW1kYXNoXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMThcIiwgXCJgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMThcIiwgXCJcXFxcdGV4dHF1b3RlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwiJ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwiXFxcXHRleHRxdW90ZXJpZ2h0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMUNcIiwgXCJgYFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDFDXCIsIFwiXFxcXHRleHRxdW90ZWRibGxlZnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxRFwiLCBcIicnXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMURcIiwgXCJcXFxcdGV4dHF1b3RlZGJscmlnaHRcIik7IC8vICBcXGRlZ3JlZSBmcm9tIGdlbnN5bWIgcGFja2FnZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QjBcIiwgXCJcXFxcZGVncmVlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEIwXCIsIFwiXFxcXGRlZ3JlZVwiKTsgLy8gXFx0ZXh0ZGVncmVlIGZyb20gaW5wdXRlbmMgcGFja2FnZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QjBcIiwgXCJcXFxcdGV4dGRlZ3JlZVwiLCB0cnVlKTsgLy8gVE9ETzogSW4gTGFUZVgsIFxccG91bmRzIGNhbiBnZW5lcmF0ZSBhIGRpZmZlcmVudCBjaGFyYWN0ZXIgaW4gdGV4dCBhbmQgbWF0aFxuLy8gbW9kZSwgYnV0IGFtb25nIG91ciBmb250cywgb25seSBNYWluLUl0YWxpYyBkZWZpbmVzIHRoaXMgY2hhcmFjdGVyIFwiMTYzXCIuXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxccG91bmRzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHhBM1wiLCBcIlxcXFxtYXRoc3RlcmxpbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBtYXRob3JkLCBcIlxceEEzXCIsIFwiXFxcXHBvdW5kc1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxcdGV4dHN0ZXJsaW5nXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjcyMFwiLCBcIlxcXFxtYWx0ZXNlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjcyMFwiLCBcIlxcXFxtYWx0ZXNlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXCBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIFwiXFx4QTBcIiwgXCIgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTsgLy8gVGhlcmUgYXJlIGxvdHMgb2Ygc3ltYm9scyB3aGljaCBhcmUgdGhlIHNhbWUsIHNvIHdlIGFkZCB0aGVtIGluIGFmdGVyd2FyZHMuXG4vLyBBbGwgb2YgdGhlc2UgYXJlIHRleHRvcmRzIGluIG1hdGggbW9kZVxuXG52YXIgbWF0aFRleHRTeW1ib2xzID0gXCIwMTIzNDU2Nzg5L0AuXFxcIlwiO1xuXG5mb3IgKHZhciBzeW1ib2xzX2kgPSAwOyBzeW1ib2xzX2kgPCBtYXRoVGV4dFN5bWJvbHMubGVuZ3RoOyBzeW1ib2xzX2krKykge1xuICB2YXIgc3ltYm9sc19jaCA9IG1hdGhUZXh0U3ltYm9scy5jaGFyQXQoc3ltYm9sc19pKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBzeW1ib2xzX2NoLCBzeW1ib2xzX2NoKTtcbn0gLy8gQWxsIG9mIHRoZXNlIGFyZSB0ZXh0b3JkcyBpbiB0ZXh0IG1vZGVcblxuXG52YXIgdGV4dFN5bWJvbHMgPSBcIjAxMjM0NTY3ODkhQCooKS09K1tdPD58XFxcIjs6Py8uLFwiO1xuXG5mb3IgKHZhciBzcmNfc3ltYm9sc19pID0gMDsgc3JjX3N5bWJvbHNfaSA8IHRleHRTeW1ib2xzLmxlbmd0aDsgc3JjX3N5bWJvbHNfaSsrKSB7XG4gIHZhciBfY2ggPSB0ZXh0U3ltYm9scy5jaGFyQXQoc3JjX3N5bWJvbHNfaSk7XG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gsIF9jaCk7XG59IC8vIEFsbCBvZiB0aGVzZSBhcmUgdGV4dG9yZHMgaW4gdGV4dCBtb2RlLCBhbmQgbWF0aG9yZHMgaW4gbWF0aCBtb2RlXG5cblxudmFyIGxldHRlcnMgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuZm9yICh2YXIgc3ltYm9sc19pMiA9IDA7IHN5bWJvbHNfaTIgPCBsZXR0ZXJzLmxlbmd0aDsgc3ltYm9sc19pMisrKSB7XG4gIHZhciBfY2gyID0gbGV0dGVycy5jaGFyQXQoc3ltYm9sc19pMik7XG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMiwgX2NoMik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMiwgX2NoMik7XG59IC8vIEJsYWNrYm9hcmQgYm9sZCBhbmQgc2NyaXB0IGxldHRlcnMgaW4gVW5pY29kZSByYW5nZVxuXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIkNcIiwgXCJcXHUyMTAyXCIpOyAvLyBibGFja2JvYXJkIGJvbGRcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiQ1wiLCBcIlxcdTIxMDJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJIXCIsIFwiXFx1MjEwRFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIkhcIiwgXCJcXHUyMTBEXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiTlwiLCBcIlxcdTIxMTVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJOXCIsIFwiXFx1MjExNVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlBcIiwgXCJcXHUyMTE5XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiUFwiLCBcIlxcdTIxMTlcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJRXCIsIFwiXFx1MjExQVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlFcIiwgXCJcXHUyMTFBXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiUlwiLCBcIlxcdTIxMURcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJSXCIsIFwiXFx1MjExRFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlpcIiwgXCJcXHUyMTI0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiWlwiLCBcIlxcdTIxMjRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcImhcIiwgXCJcXHUyMTBFXCIpOyAvLyBpdGFsaWMgaCwgUGxhbmNrIGNvbnN0YW50XG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIG1hdGhvcmQsIFwiaFwiLCBcIlxcdTIxMEVcIik7IC8vIFRoZSBuZXh0IGxvb3AgbG9hZHMgd2lkZSAoc3Vycm9nYXRlIHBhaXIpIGNoYXJhY3RlcnMuXG4vLyBXZSBzdXBwb3J0IHNvbWUgbGV0dGVycyBpbiB0aGUgVW5pY29kZSByYW5nZSBVKzFENDAwIHRvIFUrMUQ3RkYsXG4vLyBNYXRoZW1hdGljYWwgQWxwaGFudW1lcmljIFN5bWJvbHMuXG4vLyBTb21lIGVkaXRvcnMgZG8gbm90IGRlYWwgd2VsbCB3aXRoIHdpZGUgY2hhcmFjdGVycy4gU28gZG9uJ3Qgd3JpdGUgdGhlXG4vLyBzdHJpbmcgaW50byB0aGlzIGZpbGUuIEluc3RlYWQsIGNyZWF0ZSB0aGUgc3RyaW5nIGZyb20gdGhlIHN1cnJvZ2F0ZSBwYWlyLlxuXG52YXIgc3ltYm9sc193aWRlQ2hhciA9IFwiXCI7XG5cbmZvciAodmFyIHN5bWJvbHNfaTMgPSAwOyBzeW1ib2xzX2kzIDwgbGV0dGVycy5sZW5ndGg7IHN5bWJvbHNfaTMrKykge1xuICB2YXIgX2NoMyA9IGxldHRlcnMuY2hhckF0KHN5bWJvbHNfaTMpOyAvLyBUaGUgaGV4IG51bWJlcnMgaW4gdGhlIG5leHQgbGluZSBhcmUgYSBzdXJyb2dhdGUgcGFpci5cbiAgLy8gMHhEODM1IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBmb3IgYWxsIGxldHRlcnMgaW4gdGhlIHJhbmdlIHdlIHN1cHBvcnQuXG4gIC8vIDB4REMwMCBpcyB0aGUgbG93IHN1cnJvZ2F0ZSBmb3IgYm9sZCBBLlxuXG5cbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERDMDAgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGEteiBib2xkXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhEQzM0ICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogaXRhbGljXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhEQzY4ICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogYm9sZCBpdGFsaWNcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweEREMDQgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGEteiBGcmFjdHVyXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhEREEwICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogc2Fucy1zZXJpZlxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4RERENCArIHN5bWJvbHNfaTMpOyAvLyBBLVogYS16IHNhbnMgYm9sZFxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REUwOCArIHN5bWJvbHNfaTMpOyAvLyBBLVogYS16IHNhbnMgaXRhbGljXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERTcwICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogbW9ub3NwYWNlXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG5cbiAgaWYgKHN5bWJvbHNfaTMgPCAyNikge1xuICAgIC8vIEthVGVYIGZvbnRzIGhhdmUgb25seSBjYXBpdGFsIGxldHRlcnMgZm9yIGJsYWNrYm9hcmQgYm9sZCBhbmQgc2NyaXB0LlxuICAgIC8vIFNlZSBleGNlcHRpb24gZm9yIGsgYmVsb3cuXG4gICAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweEREMzggKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGRvdWJsZSBzdHJ1Y2tcblxuICAgIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICAgIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gICAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERDOUMgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIHNjcmlwdFxuXG4gICAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gICAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgfSAvLyBUT0RPOiBBZGQgYm9sZCBzY3JpcHQgd2hlbiBpdCBpcyBzdXBwb3J0ZWQgYnkgYSBLYVRlWCBmb250LlxuXG59IC8vIFwia1wiIGlzIHRoZSBvbmx5IGRvdWJsZSBzdHJ1Y2sgbG93ZXIgY2FzZSBsZXR0ZXIgaW4gdGhlIEthVGVYIGZvbnRzLlxuXG5cbnN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERDVDKTsgLy8gayBkb3VibGUgc3RydWNrXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwia1wiLCBzeW1ib2xzX3dpZGVDaGFyKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJrXCIsIHN5bWJvbHNfd2lkZUNoYXIpOyAvLyBOZXh0LCBzb21lIHdpZGUgY2hhcmFjdGVyIG51bWVyYWxzXG5cbmZvciAodmFyIHN5bWJvbHNfaTQgPSAwOyBzeW1ib2xzX2k0IDwgMTA7IHN5bWJvbHNfaTQrKykge1xuICB2YXIgX2NoNCA9IHN5bWJvbHNfaTQudG9TdHJpbmcoKTtcblxuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REZDRSArIHN5bWJvbHNfaTQpOyAvLyAwLTkgYm9sZFxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REZFMiArIHN5bWJvbHNfaTQpOyAvLyAwLTkgc2FucyBzZXJpZlxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REZFQyArIHN5bWJvbHNfaTQpOyAvLyAwLTkgYm9sZCBzYW5zXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoNCwgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoNCwgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERkY2ICsgc3ltYm9sc19pNCk7IC8vIDAtOSBtb25vc3BhY2VcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2g0LCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2g0LCBzeW1ib2xzX3dpZGVDaGFyKTtcbn0gLy8gV2UgYWRkIHRoZXNlIExhdGluLTEgbGV0dGVycyBhcyBzeW1ib2xzIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSxcbi8vIGJ1dCB0aGV5IGFyZSBub3QgYWN0dWFsbHkgaW4gdGhlIGZvbnQsIG5vciBhcmUgdGhleSBzdXBwb3J0ZWQgYnkgdGhlXG4vLyBVbmljb2RlIGFjY2VudCBtZWNoYW5pc20sIHNvIHRoZXkgZmFsbCBiYWNrIHRvIFRpbWVzIGZvbnQgYW5kIGxvb2sgdWdseS5cbi8vIFRPRE8oZWRlbWFpbmUpOiBGaXggdGhpcy5cblxuXG52YXIgZXh0cmFMYXRpbiA9IFwiw4fDkMOew6fDvlwiO1xuXG5mb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBleHRyYUxhdGluLmxlbmd0aDsgX2k1KyspIHtcbiAgdmFyIF9jaDUgPSBleHRyYUxhdGluLmNoYXJBdChfaTUpO1xuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDUsIF9jaDUpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDUsIF9jaDUpO1xufVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiw7BcIiwgXCLDsFwiKTsgLy8gVW5pY29kZSB2ZXJzaW9ucyBvZiBleGlzdGluZyBjaGFyYWN0ZXJzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDEzXCIsIFwi4oCTXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTRcIiwgXCLigJRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxOFwiLCBcIuKAmFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwi4oCZXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMUNcIiwgXCLigJxcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxRFwiLCBcIuKAnVwiKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3dpZGUtY2hhcmFjdGVyLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBVbmljb2RlIHJhbmdlIFUrMUQ0MDAgdG8gVSsxRDdGRixcbiAqIE1hdGhlbWF0aWNhbCBBbHBoYW51bWVyaWMgU3ltYm9scy5cbiAqXG4gKiBGdW5jdGlvbiB3aWRlQ2hhcmFjdGVyRm9udCB0YWtlcyBhIHdpZGUgY2hhcmFjdGVyIGFzIGlucHV0IGFuZCByZXR1cm5zXG4gKiB0aGUgZm9udCBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8gcmVuZGVyIGl0IHByb3Blcmx5LlxuICovXG5cbi8qKlxuICogRGF0YSBiZWxvdyBpcyBmcm9tIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL2NoYXJ0cy9QREYvVTFENDAwLnBkZlxuICogVGhhdCBkb2N1bWVudCBzb3J0cyBjaGFyYWN0ZXJzIGludG8gZ3JvdXBzIGJ5IGZvbnQgdHlwZSwgc2F5IGJvbGQgb3IgaXRhbGljLlxuICpcbiAqIEluIHRoZSBhcnJheXMgYmVsb3csIGVhY2ggc3ViYXJyYXkgY29uc2lzdHMgdGhyZWUgZWxlbWVudHM6XG4gKiAgICAgICogVGhlIENTUyBjbGFzcyBvZiB0aGF0IGdyb3VwIHdoZW4gaW4gbWF0aCBtb2RlLlxuICogICAgICAqIFRoZSBDU1MgY2xhc3Mgb2YgdGhhdCBncm91cCB3aGVuIGluIHRleHQgbW9kZS5cbiAqICAgICAgKiBUaGUgZm9udCBuYW1lLCBzbyB0aGF0IEthVGVYIGNhbiBnZXQgZm9udCBtZXRyaWNzLlxuICovXG5cbnZhciB3aWRlTGF0aW5MZXR0ZXJEYXRhID0gW1tcIm1hdGhiZlwiLCBcInRleHRiZlwiLCBcIk1haW4tQm9sZFwiXSwgLy8gQS1aIGJvbGQgdXByaWdodFxuW1wibWF0aGJmXCIsIFwidGV4dGJmXCIsIFwiTWFpbi1Cb2xkXCJdLCAvLyBhLXogYm9sZCB1cHJpZ2h0XG5bXCJtYXRoZGVmYXVsdFwiLCBcInRleHRpdFwiLCBcIk1hdGgtSXRhbGljXCJdLCAvLyBBLVogaXRhbGljXG5bXCJtYXRoZGVmYXVsdFwiLCBcInRleHRpdFwiLCBcIk1hdGgtSXRhbGljXCJdLCAvLyBhLXogaXRhbGljXG5bXCJib2xkc3ltYm9sXCIsIFwiYm9sZHN5bWJvbFwiLCBcIk1haW4tQm9sZEl0YWxpY1wiXSwgLy8gQS1aIGJvbGQgaXRhbGljXG5bXCJib2xkc3ltYm9sXCIsIFwiYm9sZHN5bWJvbFwiLCBcIk1haW4tQm9sZEl0YWxpY1wiXSwgLy8gYS16IGJvbGQgaXRhbGljXG4vLyBNYXAgZmFuY3kgQS1aIGxldHRlcnMgdG8gc2NyaXB0LCBub3QgY2FsbGlncmFwaGljLlxuLy8gVGhpcyBhbGlnbnMgd2l0aCB1bmljb2RlLW1hdGggYW5kIG1hdGggZm9udHMgKGV4Y2VwdCBDYW1icmlhIE1hdGgpLlxuW1wibWF0aHNjclwiLCBcInRleHRzY3JcIiwgXCJTY3JpcHQtUmVndWxhclwiXSwgLy8gQS1aIHNjcmlwdFxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBhLXogc2NyaXB0LiAgTm8gZm9udFxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBBLVogYm9sZCBzY3JpcHQuIE5vIGZvbnRcbltcIlwiLCBcIlwiLCBcIlwiXSwgLy8gYS16IGJvbGQgc2NyaXB0LiBObyBmb250XG5bXCJtYXRoZnJha1wiLCBcInRleHRmcmFrXCIsIFwiRnJha3R1ci1SZWd1bGFyXCJdLCAvLyBBLVogRnJha3R1clxuW1wibWF0aGZyYWtcIiwgXCJ0ZXh0ZnJha1wiLCBcIkZyYWt0dXItUmVndWxhclwiXSwgLy8gYS16IEZyYWt0dXJcbltcIm1hdGhiYlwiLCBcInRleHRiYlwiLCBcIkFNUy1SZWd1bGFyXCJdLCAvLyBBLVogZG91YmxlLXN0cnVja1xuW1wibWF0aGJiXCIsIFwidGV4dGJiXCIsIFwiQU1TLVJlZ3VsYXJcIl0sIC8vIGsgZG91YmxlLXN0cnVja1xuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBBLVogYm9sZCBGcmFrdHVyIE5vIGZvbnQgbWV0cmljc1xuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBhLXogYm9sZCBGcmFrdHVyLiAgIE5vIGZvbnQuXG5bXCJtYXRoc2ZcIiwgXCJ0ZXh0c2ZcIiwgXCJTYW5zU2VyaWYtUmVndWxhclwiXSwgLy8gQS1aIHNhbnMtc2VyaWZcbltcIm1hdGhzZlwiLCBcInRleHRzZlwiLCBcIlNhbnNTZXJpZi1SZWd1bGFyXCJdLCAvLyBhLXogc2Fucy1zZXJpZlxuW1wibWF0aGJvbGRzZlwiLCBcInRleHRib2xkc2ZcIiwgXCJTYW5zU2VyaWYtQm9sZFwiXSwgLy8gQS1aIGJvbGQgc2Fucy1zZXJpZlxuW1wibWF0aGJvbGRzZlwiLCBcInRleHRib2xkc2ZcIiwgXCJTYW5zU2VyaWYtQm9sZFwiXSwgLy8gYS16IGJvbGQgc2Fucy1zZXJpZlxuW1wibWF0aGl0c2ZcIiwgXCJ0ZXh0aXRzZlwiLCBcIlNhbnNTZXJpZi1JdGFsaWNcIl0sIC8vIEEtWiBpdGFsaWMgc2Fucy1zZXJpZlxuW1wibWF0aGl0c2ZcIiwgXCJ0ZXh0aXRzZlwiLCBcIlNhbnNTZXJpZi1JdGFsaWNcIl0sIC8vIGEteiBpdGFsaWMgc2Fucy1zZXJpZlxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBBLVogYm9sZCBpdGFsaWMgc2Fucy4gTm8gZm9udFxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBhLXogYm9sZCBpdGFsaWMgc2Fucy4gTm8gZm9udFxuW1wibWF0aHR0XCIsIFwidGV4dHR0XCIsIFwiVHlwZXdyaXRlci1SZWd1bGFyXCJdLCAvLyBBLVogbW9ub3NwYWNlXG5bXCJtYXRodHRcIiwgXCJ0ZXh0dHRcIiwgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIl1dO1xudmFyIHdpZGVOdW1lcmFsRGF0YSA9IFtbXCJtYXRoYmZcIiwgXCJ0ZXh0YmZcIiwgXCJNYWluLUJvbGRcIl0sIC8vIDAtOSBib2xkXG5bXCJcIiwgXCJcIiwgXCJcIl0sIC8vIDAtOSBkb3VibGUtc3RydWNrLiBObyBLYVRlWCBmb250LlxuW1wibWF0aHNmXCIsIFwidGV4dHNmXCIsIFwiU2Fuc1NlcmlmLVJlZ3VsYXJcIl0sIC8vIDAtOSBzYW5zLXNlcmlmXG5bXCJtYXRoYm9sZHNmXCIsIFwidGV4dGJvbGRzZlwiLCBcIlNhbnNTZXJpZi1Cb2xkXCJdLCAvLyAwLTkgYm9sZCBzYW5zLXNlcmlmXG5bXCJtYXRodHRcIiwgXCJ0ZXh0dHRcIiwgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIl1dO1xudmFyIHdpZGVfY2hhcmFjdGVyX3dpZGVDaGFyYWN0ZXJGb250ID0gZnVuY3Rpb24gd2lkZUNoYXJhY3RlckZvbnQod2lkZUNoYXIsIG1vZGUpIHtcbiAgLy8gSUUgZG9lc24ndCBzdXBwb3J0IGNvZGVQb2ludEF0KCkuIFNvIHdvcmsgd2l0aCB0aGUgc3Vycm9nYXRlIHBhaXIuXG4gIHZhciBIID0gd2lkZUNoYXIuY2hhckNvZGVBdCgwKTsgLy8gaGlnaCBzdXJyb2dhdGVcblxuICB2YXIgTCA9IHdpZGVDaGFyLmNoYXJDb2RlQXQoMSk7IC8vIGxvdyBzdXJyb2dhdGVcblxuICB2YXIgY29kZVBvaW50ID0gKEggLSAweEQ4MDApICogMHg0MDAgKyAoTCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB2YXIgaiA9IG1vZGUgPT09IFwibWF0aFwiID8gMCA6IDE7IC8vIGNvbHVtbiBpbmRleCBmb3IgQ1NTIGNsYXNzLlxuXG4gIGlmICgweDFENDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPCAweDFENkE0KSB7XG4gICAgLy8gd2lkZUxhdGluTGV0dGVyRGF0YSBjb250YWlucyBleGFjdGx5IDI2IGNoYXJzIG9uIGVhY2ggcm93LlxuICAgIC8vIFNvIHdlIGNhbiBjYWxjdWxhdGUgdGhlIHJlbGV2YW50IHJvdy4gTm8gdHJhdmVyc2UgbmVjZXNzYXJ5LlxuICAgIHZhciBpID0gTWF0aC5mbG9vcigoY29kZVBvaW50IC0gMHgxRDQwMCkgLyAyNik7XG4gICAgcmV0dXJuIFt3aWRlTGF0aW5MZXR0ZXJEYXRhW2ldWzJdLCB3aWRlTGF0aW5MZXR0ZXJEYXRhW2ldW2pdXTtcbiAgfSBlbHNlIGlmICgweDFEN0NFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxRDdGRikge1xuICAgIC8vIE51bWVyYWxzLCB0ZW4gcGVyIHJvdy5cbiAgICB2YXIgX2kgPSBNYXRoLmZsb29yKChjb2RlUG9pbnQgLSAweDFEN0NFKSAvIDEwKTtcblxuICAgIHJldHVybiBbd2lkZU51bWVyYWxEYXRhW19pXVsyXSwgd2lkZU51bWVyYWxEYXRhW19pXVtqXV07XG4gIH0gZWxzZSBpZiAoY29kZVBvaW50ID09PSAweDFENkE1IHx8IGNvZGVQb2ludCA9PT0gMHgxRDZBNikge1xuICAgIC8vIGRvdGxlc3MgaSBvciBqXG4gICAgcmV0dXJuIFt3aWRlTGF0aW5MZXR0ZXJEYXRhWzBdWzJdLCB3aWRlTGF0aW5MZXR0ZXJEYXRhWzBdW2pdXTtcbiAgfSBlbHNlIGlmICgweDFENkE2IDwgY29kZVBvaW50ICYmIGNvZGVQb2ludCA8IDB4MUQ3Q0UpIHtcbiAgICAvLyBHcmVlayBsZXR0ZXJzLiBOb3Qgc3VwcG9ydGVkLCB5ZXQuXG4gICAgcmV0dXJuIFtcIlwiLCBcIlwiXTtcbiAgfSBlbHNlIHtcbiAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGFueSB3aWRlIGNoYXJhY3RlcnMgb3V0c2lkZSAxRDQwMOKAkzFEN0ZGLlxuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVuc3VwcG9ydGVkIGNoYXJhY3RlcjogXCIgKyB3aWRlQ2hhcik7XG4gIH1cbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9PcHRpb25zLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3B0aW9ucyB0aGF0IHRoZSBQYXJzZXIgY2Fycmllc1xuICogYXJvdW5kIHdpdGggaXQgd2hpbGUgcGFyc2luZy4gRGF0YSBpcyBoZWxkIGluIGFuIGBPcHRpb25zYCBvYmplY3QsIGFuZCB3aGVuXG4gKiByZWN1cnNpbmcsIGEgbmV3IGBPcHRpb25zYCBvYmplY3QgY2FuIGJlIGNyZWF0ZWQgd2l0aCB0aGUgYC53aXRoKmAgYW5kXG4gKiBgLnJlc2V0YCBmdW5jdGlvbnMuXG4gKi9cblxudmFyIHNpemVTdHlsZU1hcCA9IFsvLyBFYWNoIGVsZW1lbnQgY29udGFpbnMgW3RleHRzaXplLCBzY3JpcHRzaXplLCBzY3JpcHRzY3JpcHRzaXplXS5cbi8vIFRoZSBzaXplIG1hcHBpbmdzIGFyZSB0YWtlbiBmcm9tIFRlWCB3aXRoIFxcbm9ybWFsc2l6ZT0xMHB0LlxuWzEsIDEsIDFdLCAvLyBzaXplMTogWzUsIDUsIDVdICAgICAgICAgICAgICBcXHRpbnlcblsyLCAxLCAxXSwgLy8gc2l6ZTI6IFs2LCA1LCA1XVxuWzMsIDEsIDFdLCAvLyBzaXplMzogWzcsIDUsIDVdICAgICAgICAgICAgICBcXHNjcmlwdHNpemVcbls0LCAyLCAxXSwgLy8gc2l6ZTQ6IFs4LCA2LCA1XSAgICAgICAgICAgICAgXFxmb290bm90ZXNpemVcbls1LCAyLCAxXSwgLy8gc2l6ZTU6IFs5LCA2LCA1XSAgICAgICAgICAgICAgXFxzbWFsbFxuWzYsIDMsIDFdLCAvLyBzaXplNjogWzEwLCA3LCA1XSAgICAgICAgICAgICBcXG5vcm1hbHNpemVcbls3LCA0LCAyXSwgLy8gc2l6ZTc6IFsxMiwgOCwgNl0gICAgICAgICAgICAgXFxsYXJnZVxuWzgsIDYsIDNdLCAvLyBzaXplODogWzE0LjQsIDEwLCA3XSAgICAgICAgICBcXExhcmdlXG5bOSwgNywgNl0sIC8vIHNpemU5OiBbMTcuMjgsIDEyLCAxMF0gICAgICAgIFxcTEFSR0VcblsxMCwgOCwgN10sIC8vIHNpemUxMDogWzIwLjc0LCAxNC40LCAxMl0gICAgIFxcaHVnZVxuWzExLCAxMCwgOV1dO1xudmFyIHNpemVNdWx0aXBsaWVycyA9IFsvLyBmb250TWV0cmljcy5qczpnZXRHbG9iYWxNZXRyaWNzIGFsc28gdXNlcyBzaXplIGluZGV4ZXMsIHNvIGlmXG4vLyB5b3UgY2hhbmdlIHNpemUgaW5kZXhlcywgY2hhbmdlIHRoYXQgZnVuY3Rpb24uXG4wLjUsIDAuNiwgMC43LCAwLjgsIDAuOSwgMS4wLCAxLjIsIDEuNDQsIDEuNzI4LCAyLjA3NCwgMi40ODhdO1xuXG52YXIgc2l6ZUF0U3R5bGUgPSBmdW5jdGlvbiBzaXplQXRTdHlsZShzaXplLCBzdHlsZSkge1xuICByZXR1cm4gc3R5bGUuc2l6ZSA8IDIgPyBzaXplIDogc2l6ZVN0eWxlTWFwW3NpemUgLSAxXVtzdHlsZS5zaXplIC0gMV07XG59OyAvLyBJbiB0aGVzZSB0eXBlcywgXCJcIiAoZW1wdHkgc3RyaW5nKSBtZWFucyBcIm5vIGNoYW5nZVwiLlxuXG5cbi8qKlxuICogVGhpcyBpcyB0aGUgbWFpbiBvcHRpb25zIGNsYXNzLiBJdCBjb250YWlucyB0aGUgY3VycmVudCBzdHlsZSwgc2l6ZSwgY29sb3IsXG4gKiBhbmQgZm9udC5cbiAqXG4gKiBPcHRpb25zIG9iamVjdHMgc2hvdWxkIG5vdCBiZSBtb2RpZmllZC4gVG8gY3JlYXRlIGEgbmV3IE9wdGlvbnMgd2l0aFxuICogZGlmZmVyZW50IHByb3BlcnRpZXMsIGNhbGwgYSBgLmhhdmluZypgIG1ldGhvZC5cbiAqL1xudmFyIE9wdGlvbnNfT3B0aW9ucyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIC8vIEEgZm9udCBmYW1pbHkgYXBwbGllcyB0byBhIGdyb3VwIG9mIGZvbnRzIChpLmUuIFNhbnNTZXJpZiksIHdoaWxlIGEgZm9udFxuICAvLyByZXByZXNlbnRzIGEgc3BlY2lmaWMgZm9udCAoaS5lLiBTYW5zU2VyaWYgQm9sZCkuXG4gIC8vIFNlZTogaHR0cHM6Ly90ZXguc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzIyMzUwL2RpZmZlcmVuY2UtYmV0d2Vlbi10ZXh0cm0tYW5kLW1hdGhybVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBzaXplIGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gT3B0aW9ucyhkYXRhKSB7XG4gICAgdGhpcy5zdHlsZSA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbG9yID0gdm9pZCAwO1xuICAgIHRoaXMuc2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnRleHRTaXplID0gdm9pZCAwO1xuICAgIHRoaXMucGhhbnRvbSA9IHZvaWQgMDtcbiAgICB0aGlzLmZvbnQgPSB2b2lkIDA7XG4gICAgdGhpcy5mb250RmFtaWx5ID0gdm9pZCAwO1xuICAgIHRoaXMuZm9udFdlaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLmZvbnRTaGFwZSA9IHZvaWQgMDtcbiAgICB0aGlzLnNpemVNdWx0aXBsaWVyID0gdm9pZCAwO1xuICAgIHRoaXMubWF4U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLm1pblJ1bGVUaGlja25lc3MgPSB2b2lkIDA7XG4gICAgdGhpcy5fZm9udE1ldHJpY3MgPSB2b2lkIDA7XG4gICAgdGhpcy5zdHlsZSA9IGRhdGEuc3R5bGU7XG4gICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgdGhpcy5zaXplID0gZGF0YS5zaXplIHx8IE9wdGlvbnMuQkFTRVNJWkU7XG4gICAgdGhpcy50ZXh0U2l6ZSA9IGRhdGEudGV4dFNpemUgfHwgdGhpcy5zaXplO1xuICAgIHRoaXMucGhhbnRvbSA9ICEhZGF0YS5waGFudG9tO1xuICAgIHRoaXMuZm9udCA9IGRhdGEuZm9udCB8fCBcIlwiO1xuICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseSB8fCBcIlwiO1xuICAgIHRoaXMuZm9udFdlaWdodCA9IGRhdGEuZm9udFdlaWdodCB8fCAnJztcbiAgICB0aGlzLmZvbnRTaGFwZSA9IGRhdGEuZm9udFNoYXBlIHx8ICcnO1xuICAgIHRoaXMuc2l6ZU11bHRpcGxpZXIgPSBzaXplTXVsdGlwbGllcnNbdGhpcy5zaXplIC0gMV07XG4gICAgdGhpcy5tYXhTaXplID0gZGF0YS5tYXhTaXplO1xuICAgIHRoaXMubWluUnVsZVRoaWNrbmVzcyA9IGRhdGEubWluUnVsZVRoaWNrbmVzcztcbiAgICB0aGlzLl9mb250TWV0cmljcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBvcHRpb25zIG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgXCJ0aGlzXCIuICBQcm9wZXJ0aWVzXG4gICAqIGZyb20gXCJleHRlbnNpb25cIiB3aWxsIGJlIGNvcGllZCB0byB0aGUgbmV3IG9wdGlvbnMgb2JqZWN0LlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBPcHRpb25zLnByb3RvdHlwZTtcblxuICBfcHJvdG8uZXh0ZW5kID0gZnVuY3Rpb24gZXh0ZW5kKGV4dGVuc2lvbikge1xuICAgIHZhciBkYXRhID0ge1xuICAgICAgc3R5bGU6IHRoaXMuc3R5bGUsXG4gICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICB0ZXh0U2l6ZTogdGhpcy50ZXh0U2l6ZSxcbiAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgcGhhbnRvbTogdGhpcy5waGFudG9tLFxuICAgICAgZm9udDogdGhpcy5mb250LFxuICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5LFxuICAgICAgZm9udFdlaWdodDogdGhpcy5mb250V2VpZ2h0LFxuICAgICAgZm9udFNoYXBlOiB0aGlzLmZvbnRTaGFwZSxcbiAgICAgIG1heFNpemU6IHRoaXMubWF4U2l6ZSxcbiAgICAgIG1pblJ1bGVUaGlja25lc3M6IHRoaXMubWluUnVsZVRoaWNrbmVzc1xuICAgIH07XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZXh0ZW5zaW9uKSB7XG4gICAgICBpZiAoZXh0ZW5zaW9uLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgZGF0YVtrZXldID0gZXh0ZW5zaW9uW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPcHRpb25zKGRhdGEpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gc3R5bGUuIElmIGB0aGlzLnN0eWxlID09PSBzdHlsZWAsXG4gICAqIHJldHVybnMgYHRoaXNgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5oYXZpbmdTdHlsZSA9IGZ1bmN0aW9uIGhhdmluZ1N0eWxlKHN0eWxlKSB7XG4gICAgaWYgKHRoaXMuc3R5bGUgPT09IHN0eWxlKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICBzaXplOiBzaXplQXRTdHlsZSh0aGlzLnRleHRTaXplLCBzdHlsZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogUmV0dXJuIGFuIG9wdGlvbnMgb2JqZWN0IHdpdGggYSBjcmFtcGVkIHZlcnNpb24gb2YgdGhlIGN1cnJlbnQgc3R5bGUuIElmXG4gICAqIHRoZSBjdXJyZW50IHN0eWxlIGlzIGNyYW1wZWQsIHJldHVybnMgYHRoaXNgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5oYXZpbmdDcmFtcGVkU3R5bGUgPSBmdW5jdGlvbiBoYXZpbmdDcmFtcGVkU3R5bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGF2aW5nU3R5bGUodGhpcy5zdHlsZS5jcmFtcCgpKTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJuIGFuIG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHNpemUgYW5kIGluIGF0IGxlYXN0IGBcXHRleHRzdHlsZWAuXG4gICAqIFJldHVybnMgYHRoaXNgIGlmIGFwcHJvcHJpYXRlLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5oYXZpbmdTaXplID0gZnVuY3Rpb24gaGF2aW5nU2l6ZShzaXplKSB7XG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gc2l6ZSAmJiB0aGlzLnRleHRTaXplID09PSBzaXplKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgc3R5bGU6IHRoaXMuc3R5bGUudGV4dCgpLFxuICAgICAgICBzaXplOiBzaXplLFxuICAgICAgICB0ZXh0U2l6ZTogc2l6ZSxcbiAgICAgICAgc2l6ZU11bHRpcGxpZXI6IHNpemVNdWx0aXBsaWVyc1tzaXplIC0gMV1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogTGlrZSBgdGhpcy5oYXZpbmdTaXplKEJBU0VTSVpFKS5oYXZpbmdTdHlsZShzdHlsZSlgLiBJZiBgc3R5bGVgIGlzIG9taXR0ZWQsXG4gICAqIGNoYW5nZXMgdG8gYXQgbGVhc3QgYFxcdGV4dHN0eWxlYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uaGF2aW5nQmFzZVN0eWxlID0gZnVuY3Rpb24gaGF2aW5nQmFzZVN0eWxlKHN0eWxlKSB7XG4gICAgc3R5bGUgPSBzdHlsZSB8fCB0aGlzLnN0eWxlLnRleHQoKTtcbiAgICB2YXIgd2FudFNpemUgPSBzaXplQXRTdHlsZShPcHRpb25zLkJBU0VTSVpFLCBzdHlsZSk7XG5cbiAgICBpZiAodGhpcy5zaXplID09PSB3YW50U2l6ZSAmJiB0aGlzLnRleHRTaXplID09PSBPcHRpb25zLkJBU0VTSVpFICYmIHRoaXMuc3R5bGUgPT09IHN0eWxlKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICBzaXplOiB3YW50U2l6ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGVmZmVjdCBvZiBzaXppbmcgY2hhbmdlcyBzdWNoIGFzIFxcSHVnZS5cbiAgICogS2VlcCB0aGUgZWZmZWN0IG9mIHRoZSBjdXJyZW50IHN0eWxlLCBzdWNoIGFzIFxcc2NyaXB0c3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhdmluZ0Jhc2VTaXppbmcgPSBmdW5jdGlvbiBoYXZpbmdCYXNlU2l6aW5nKCkge1xuICAgIHZhciBzaXplO1xuXG4gICAgc3dpdGNoICh0aGlzLnN0eWxlLmlkKSB7XG4gICAgICBjYXNlIDQ6XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHNpemUgPSAzOyAvLyBub3JtYWxzaXplIGluIHNjcmlwdHN0eWxlXG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgNjpcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgc2l6ZSA9IDE7IC8vIG5vcm1hbHNpemUgaW4gc2NyaXB0c2NyaXB0c3R5bGVcblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc2l6ZSA9IDY7XG4gICAgICAvLyBub3JtYWxzaXplIGluIHRleHRzdHlsZSBvciBkaXNwbGF5c3R5bGVcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgc3R5bGU6IHRoaXMuc3R5bGUudGV4dCgpLFxuICAgICAgc2l6ZTogc2l6ZVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gY29sb3IuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLndpdGhDb2xvciA9IGZ1bmN0aW9uIHdpdGhDb2xvcihjb2xvcikge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBjb2xvcjogY29sb3JcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IG9wdGlvbnMgb2JqZWN0IHdpdGggXCJwaGFudG9tXCIgc2V0IHRvIHRydWUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLndpdGhQaGFudG9tID0gZnVuY3Rpb24gd2l0aFBoYW50b20oKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIHBoYW50b206IHRydWVcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBvcHRpb25zIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBtYXRoIGZvbnQgb3Igb2xkIHRleHQgZm9udC5cbiAgICogQHR5cGUge1t0eXBlXX1cbiAgICovXG4gIDtcblxuICBfcHJvdG8ud2l0aEZvbnQgPSBmdW5jdGlvbiB3aXRoRm9udChmb250KSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIGZvbnQ6IGZvbnRcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IG9wdGlvbnMgb2JqZWN0cyB3aXRoIHRoZSBnaXZlbiBmb250RmFtaWx5LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by53aXRoVGV4dEZvbnRGYW1pbHkgPSBmdW5jdGlvbiB3aXRoVGV4dEZvbnRGYW1pbHkoZm9udEZhbWlseSkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBmb250RmFtaWx5OiBmb250RmFtaWx5LFxuICAgICAgZm9udDogXCJcIlxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIGZvbnQgd2VpZ2h0XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLndpdGhUZXh0Rm9udFdlaWdodCA9IGZ1bmN0aW9uIHdpdGhUZXh0Rm9udFdlaWdodChmb250V2VpZ2h0KSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIGZvbnRXZWlnaHQ6IGZvbnRXZWlnaHQsXG4gICAgICBmb250OiBcIlwiXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gZm9udCB3ZWlnaHRcbiAgICovXG4gIDtcblxuICBfcHJvdG8ud2l0aFRleHRGb250U2hhcGUgPSBmdW5jdGlvbiB3aXRoVGV4dEZvbnRTaGFwZShmb250U2hhcGUpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgZm9udFNoYXBlOiBmb250U2hhcGUsXG4gICAgICBmb250OiBcIlwiXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgQ1NTIHNpemluZyBjbGFzc2VzIHJlcXVpcmVkIHRvIHN3aXRjaCBmcm9tIGVuY2xvc2luZyBvcHRpb25zXG4gICAqIGBvbGRPcHRpb25zYCB0byBgdGhpc2AuIFJldHVybnMgYW4gYXJyYXkgb2YgY2xhc3Nlcy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uc2l6aW5nQ2xhc3NlcyA9IGZ1bmN0aW9uIHNpemluZ0NsYXNzZXMob2xkT3B0aW9ucykge1xuICAgIGlmIChvbGRPcHRpb25zLnNpemUgIT09IHRoaXMuc2l6ZSkge1xuICAgICAgcmV0dXJuIFtcInNpemluZ1wiLCBcInJlc2V0LXNpemVcIiArIG9sZE9wdGlvbnMuc2l6ZSwgXCJzaXplXCIgKyB0aGlzLnNpemVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIENTUyBzaXppbmcgY2xhc3NlcyByZXF1aXJlZCB0byBzd2l0Y2ggdG8gdGhlIGJhc2Ugc2l6ZS4gTGlrZVxuICAgKiBgdGhpcy5oYXZpbmdTaXplKEJBU0VTSVpFKS5zaXppbmdDbGFzc2VzKHRoaXMpYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uYmFzZVNpemluZ0NsYXNzZXMgPSBmdW5jdGlvbiBiYXNlU2l6aW5nQ2xhc3NlcygpIHtcbiAgICBpZiAodGhpcy5zaXplICE9PSBPcHRpb25zLkJBU0VTSVpFKSB7XG4gICAgICByZXR1cm4gW1wic2l6aW5nXCIsIFwicmVzZXQtc2l6ZVwiICsgdGhpcy5zaXplLCBcInNpemVcIiArIE9wdGlvbnMuQkFTRVNJWkVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGZvbnQgbWV0cmljcyBmb3IgdGhpcyBzaXplLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mb250TWV0cmljcyA9IGZ1bmN0aW9uIGZvbnRNZXRyaWNzKCkge1xuICAgIGlmICghdGhpcy5fZm9udE1ldHJpY3MpIHtcbiAgICAgIHRoaXMuX2ZvbnRNZXRyaWNzID0gZ2V0R2xvYmFsTWV0cmljcyh0aGlzLnNpemUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9mb250TWV0cmljcztcbiAgfVxuICAvKipcbiAgICogR2V0cyB0aGUgQ1NTIGNvbG9yIG9mIHRoZSBjdXJyZW50IG9wdGlvbnMgb2JqZWN0XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmdldENvbG9yID0gZnVuY3Rpb24gZ2V0Q29sb3IoKSB7XG4gICAgaWYgKHRoaXMucGhhbnRvbSkge1xuICAgICAgcmV0dXJuIFwidHJhbnNwYXJlbnRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBPcHRpb25zO1xufSgpO1xuXG5PcHRpb25zX09wdGlvbnMuQkFTRVNJWkUgPSA2O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX09wdGlvbnMgPSAoT3B0aW9uc19PcHRpb25zKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3VuaXRzLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBkb2VzIGNvbnZlcnNpb24gYmV0d2VlbiB1bml0cy4gIEluIHBhcnRpY3VsYXIsIGl0IHByb3ZpZGVzXG4gKiBjYWxjdWxhdGVTaXplIHRvIGNvbnZlcnQgb3RoZXIgdW5pdHMgaW50byBlbXMuXG4gKi9cblxuIC8vIFRoaXMgdGFibGUgZ2l2ZXMgdGhlIG51bWJlciBvZiBUZVggcHRzIGluIG9uZSBvZiBlYWNoICphYnNvbHV0ZSogVGVYIHVuaXQuXG4vLyBUaHVzLCBtdWx0aXBseWluZyBhIGxlbmd0aCBieSB0aGlzIG51bWJlciBjb252ZXJ0cyB0aGUgbGVuZ3RoIGZyb20gdW5pdHNcbi8vIGludG8gcHRzLiAgRGl2aWRpbmcgdGhlIHJlc3VsdCBieSBwdFBlckVtIGdpdmVzIHRoZSBudW1iZXIgb2YgZW1zXG4vLyAqYXNzdW1pbmcqIGEgZm9udCBzaXplIG9mIHB0UGVyRW0gKG5vcm1hbCBzaXplLCBub3JtYWwgc3R5bGUpLlxuXG52YXIgcHRQZXJVbml0ID0ge1xuICAvLyBodHRwczovL2VuLndpa2lib29rcy5vcmcvd2lraS9MYVRlWC9MZW5ndGhzIGFuZFxuICAvLyBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9hLzgyNjNcbiAgXCJwdFwiOiAxLFxuICAvLyBUZVggcG9pbnRcbiAgXCJtbVwiOiA3MjI3IC8gMjU0MCxcbiAgLy8gbWlsbGltZXRlclxuICBcImNtXCI6IDcyMjcgLyAyNTQsXG4gIC8vIGNlbnRpbWV0ZXJcbiAgXCJpblwiOiA3Mi4yNyxcbiAgLy8gaW5jaFxuICBcImJwXCI6IDgwMyAvIDgwMCxcbiAgLy8gYmlnIChQb3N0U2NyaXB0KSBwb2ludHNcbiAgXCJwY1wiOiAxMixcbiAgLy8gcGljYVxuICBcImRkXCI6IDEyMzggLyAxMTU3LFxuICAvLyBkaWRvdFxuICBcImNjXCI6IDE0ODU2IC8gMTE1NyxcbiAgLy8gY2ljZXJvICgxMiBkaWRvdClcbiAgXCJuZFwiOiA2ODUgLyA2NDIsXG4gIC8vIG5ldyBkaWRvdFxuICBcIm5jXCI6IDEzNzAgLyAxMDcsXG4gIC8vIG5ldyBjaWNlcm8gKDEyIG5ldyBkaWRvdClcbiAgXCJzcFwiOiAxIC8gNjU1MzYsXG4gIC8vIHNjYWxlZCBwb2ludCAoVGVYJ3MgaW50ZXJuYWwgc21hbGxlc3QgdW5pdClcbiAgLy8gaHR0cHM6Ly90ZXguc3RhY2tleGNoYW5nZS5jb20vYS80MTM3MVxuICBcInB4XCI6IDgwMyAvIDgwMCAvLyBcXHBkZnB4ZGltZW4gZGVmYXVsdHMgdG8gMSBicCBpbiBwZGZUZVggYW5kIEx1YVRlWFxuXG59OyAvLyBEaWN0aW9uYXJ5IG9mIHJlbGF0aXZlIHVuaXRzLCBmb3IgZmFzdCB2YWxpZGl0eSB0ZXN0aW5nLlxuXG52YXIgcmVsYXRpdmVVbml0ID0ge1xuICBcImV4XCI6IHRydWUsXG4gIFwiZW1cIjogdHJ1ZSxcbiAgXCJtdVwiOiB0cnVlXG59O1xuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgdW5pdCAoZWl0aGVyIGEgc3RyaW5nIGRlZmluaW5nIHRoZSB1bml0XG4gKiBvciBhIFwic2l6ZVwiIHBhcnNlIG5vZGUgY29udGFpbmluZyBhIHVuaXQgZmllbGQpIGlzIHZhbGlkLlxuICovXG52YXIgdmFsaWRVbml0ID0gZnVuY3Rpb24gdmFsaWRVbml0KHVuaXQpIHtcbiAgaWYgKHR5cGVvZiB1bml0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdW5pdCA9IHVuaXQudW5pdDtcbiAgfVxuXG4gIHJldHVybiB1bml0IGluIHB0UGVyVW5pdCB8fCB1bml0IGluIHJlbGF0aXZlVW5pdCB8fCB1bml0ID09PSBcImV4XCI7XG59O1xuLypcbiAqIENvbnZlcnQgYSBcInNpemVcIiBwYXJzZSBub2RlICh3aXRoIG51bWVyaWMgXCJudW1iZXJcIiBhbmQgc3RyaW5nIFwidW5pdFwiIGZpZWxkcyxcbiAqIGFzIHBhcnNlZCBieSBmdW5jdGlvbnMuanMgYXJnVHlwZSBcInNpemVcIikgaW50byBhIENTUyBlbSB2YWx1ZSBmb3IgdGhlXG4gKiBjdXJyZW50IHN0eWxlL3NjYWxlLiAgYG9wdGlvbnNgIGdpdmVzIHRoZSBjdXJyZW50IG9wdGlvbnMuXG4gKi9cblxudmFyIHVuaXRzX2NhbGN1bGF0ZVNpemUgPSBmdW5jdGlvbiBjYWxjdWxhdGVTaXplKHNpemVWYWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2NhbGU7XG5cbiAgaWYgKHNpemVWYWx1ZS51bml0IGluIHB0UGVyVW5pdCkge1xuICAgIC8vIEFic29sdXRlIHVuaXRzXG4gICAgc2NhbGUgPSBwdFBlclVuaXRbc2l6ZVZhbHVlLnVuaXRdIC8vIENvbnZlcnQgdW5pdCB0byBwdFxuICAgIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW0gLy8gQ29udmVydCBwdCB0byBDU1MgZW1cbiAgICAvIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7IC8vIFVuc2NhbGUgdG8gbWFrZSBhYnNvbHV0ZSB1bml0c1xuICB9IGVsc2UgaWYgKHNpemVWYWx1ZS51bml0ID09PSBcIm11XCIpIHtcbiAgICAvLyBgbXVgIHVuaXRzIHNjYWxlIHdpdGggc2NyaXB0c3R5bGUvc2NyaXB0c2NyaXB0c3R5bGUuXG4gICAgc2NhbGUgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuY3NzRW1QZXJNdTtcbiAgfSBlbHNlIHtcbiAgICAvLyBPdGhlciByZWxhdGl2ZSB1bml0cyBhbHdheXMgcmVmZXIgdG8gdGhlICp0ZXh0c3R5bGUqIGZvbnRcbiAgICAvLyBpbiB0aGUgY3VycmVudCBzaXplLlxuICAgIHZhciB1bml0T3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zLnN0eWxlLmlzVGlnaHQoKSkge1xuICAgICAgLy8gaXNUaWdodCgpIG1lYW5zIGN1cnJlbnQgc3R5bGUgaXMgc2NyaXB0L3NjcmlwdHNjcmlwdC5cbiAgICAgIHVuaXRPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShvcHRpb25zLnN0eWxlLnRleHQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuaXRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IC8vIFRPRE86IEluIFRlWCB0aGVzZSB1bml0cyBhcmUgcmVsYXRpdmUgdG8gdGhlIHF1YWQgb2YgdGhlIGN1cnJlbnRcbiAgICAvLyAqdGV4dCogZm9udCwgZS5nLiBjbXIxMC4gS2FUZVggaW5zdGVhZCB1c2VzIHZhbHVlcyBmcm9tIHRoZVxuICAgIC8vIGNvbXBhcmFibHktc2l6ZWQgKkNvbXB1dGVyIE1vZGVybiBzeW1ib2wqIGZvbnQuIEF0IDEwcHQsIHRoZXNlXG4gICAgLy8gbWF0Y2guIEF0IDdwdCBhbmQgNXB0LCB0aGV5IGRpZmZlcjogY21yNz0xLjEzODg5NCwgY21zeTc9MS4xNzA2NDE7XG4gICAgLy8gY21yNT0xLjM2MTEzMywgY21zeTU9MS40NzIyNDEuIENvbnNpZGVyICRcXHNjcmlwdHNpemUgYVxca2VybjFlbWIkLlxuICAgIC8vIFRlWCBcXHNob3dsaXN0cyBzaG93cyBhIGtlcm4gb2YgMS4xMzg4OSAqIGZvbnRzaXplO1xuICAgIC8vIEthVGVYIHNob3dzIGEga2VybiBvZiAxLjE3MSAqIGZvbnRzaXplLlxuXG5cbiAgICBpZiAoc2l6ZVZhbHVlLnVuaXQgPT09IFwiZXhcIikge1xuICAgICAgc2NhbGUgPSB1bml0T3B0aW9ucy5mb250TWV0cmljcygpLnhIZWlnaHQ7XG4gICAgfSBlbHNlIGlmIChzaXplVmFsdWUudW5pdCA9PT0gXCJlbVwiKSB7XG4gICAgICBzY2FsZSA9IHVuaXRPcHRpb25zLmZvbnRNZXRyaWNzKCkucXVhZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCB1bml0OiAnXCIgKyBzaXplVmFsdWUudW5pdCArIFwiJ1wiKTtcbiAgICB9XG5cbiAgICBpZiAodW5pdE9wdGlvbnMgIT09IG9wdGlvbnMpIHtcbiAgICAgIHNjYWxlICo9IHVuaXRPcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTWF0aC5taW4oc2l6ZVZhbHVlLm51bWJlciAqIHNjYWxlLCBvcHRpb25zLm1heFNpemUpO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2J1aWxkQ29tbW9uLmpzXG4vKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cbi8qKlxuICogVGhpcyBtb2R1bGUgY29udGFpbnMgZ2VuZXJhbCBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgYnVpbGRpbmdcbiAqIGRpZmZlcmVudCBraW5kcyBvZiBkb21UcmVlIG5vZGVzIGluIGEgY29uc2lzdGVudCBtYW5uZXIuXG4gKi9cblxuXG5cblxuXG5cblxuLy8gVGhlIGZvbGxvd2luZyBoYXZlIHRvIGJlIGxvYWRlZCBmcm9tIE1haW4tSXRhbGljIGZvbnQsIHVzaW5nIGNsYXNzIG1hdGhpdFxudmFyIG1hdGhpdExldHRlcnMgPSBbXCJcXFxcaW1hdGhcIiwgXCLEsVwiLCAvLyBkb3RsZXNzIGlcblwiXFxcXGptYXRoXCIsIFwiyLdcIiwgLy8gZG90bGVzcyBqXG5cIlxcXFxwb3VuZHNcIiwgXCJcXFxcbWF0aHN0ZXJsaW5nXCIsIFwiXFxcXHRleHRzdGVybGluZ1wiLCBcIsKjXCJdO1xuLyoqXG4gKiBMb29rcyB1cCB0aGUgZ2l2ZW4gc3ltYm9sIGluIGZvbnRNZXRyaWNzLCBhZnRlciBhcHBseWluZyBhbnkgc3ltYm9sXG4gKiByZXBsYWNlbWVudHMgZGVmaW5lZCBpbiBzeW1ib2wuanNcbiAqL1xuXG52YXIgYnVpbGRDb21tb25fbG9va3VwU3ltYm9sID0gZnVuY3Rpb24gbG9va3VwU3ltYm9sKHZhbHVlLCAvLyBUT0RPKCM5NjMpOiBVc2UgYSB1bmlvbiB0eXBlIGZvciB0aGlzLlxuZm9udE5hbWUsIG1vZGUpIHtcbiAgLy8gUmVwbGFjZSB0aGUgdmFsdWUgd2l0aCBpdHMgcmVwbGFjZWQgdmFsdWUgZnJvbSBzeW1ib2wuanNcbiAgaWYgKHNyY19zeW1ib2xzW21vZGVdW3ZhbHVlXSAmJiBzcmNfc3ltYm9sc1ttb2RlXVt2YWx1ZV0ucmVwbGFjZSkge1xuICAgIHZhbHVlID0gc3JjX3N5bWJvbHNbbW9kZV1bdmFsdWVdLnJlcGxhY2U7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBtZXRyaWNzOiBnZXRDaGFyYWN0ZXJNZXRyaWNzKHZhbHVlLCBmb250TmFtZSwgbW9kZSlcbiAgfTtcbn07XG4vKipcbiAqIE1ha2VzIGEgc3ltYm9sTm9kZSBhZnRlciB0cmFuc2xhdGlvbiB2aWEgdGhlIGxpc3Qgb2Ygc3ltYm9scyBpbiBzeW1ib2xzLmpzLlxuICogQ29ycmVjdGx5IHB1bGxzIG91dCBtZXRyaWNzIGZvciB0aGUgY2hhcmFjdGVyLCBhbmQgb3B0aW9uYWxseSB0YWtlcyBhIGxpc3Qgb2ZcbiAqIGNsYXNzZXMgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIG5vZGUuXG4gKlxuICogVE9ETzogbWFrZSBhcmd1bWVudCBvcmRlciBjbG9zZXIgdG8gbWFrZVNwYW5cbiAqIFRPRE86IGFkZCBhIHNlcGFyYXRlIGFyZ3VtZW50IGZvciBtYXRoIGNsYXNzIChlLmcuIGBtb3BgLCBgbWJpbmApLCB3aGljaFxuICogc2hvdWxkIGlmIHByZXNlbnQgY29tZSBmaXJzdCBpbiBgY2xhc3Nlc2AuXG4gKiBUT0RPKCM5NTMpOiBNYWtlIGBvcHRpb25zYCBtYW5kYXRvcnkgYW5kIGFsd2F5cyBwYXNzIGl0IGluLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wgPSBmdW5jdGlvbiBtYWtlU3ltYm9sKHZhbHVlLCBmb250TmFtZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcykge1xuICB2YXIgbG9va3VwID0gYnVpbGRDb21tb25fbG9va3VwU3ltYm9sKHZhbHVlLCBmb250TmFtZSwgbW9kZSk7XG4gIHZhciBtZXRyaWNzID0gbG9va3VwLm1ldHJpY3M7XG4gIHZhbHVlID0gbG9va3VwLnZhbHVlO1xuICB2YXIgc3ltYm9sTm9kZTtcblxuICBpZiAobWV0cmljcykge1xuICAgIHZhciBpdGFsaWMgPSBtZXRyaWNzLml0YWxpYztcblxuICAgIGlmIChtb2RlID09PSBcInRleHRcIiB8fCBvcHRpb25zICYmIG9wdGlvbnMuZm9udCA9PT0gXCJtYXRoaXRcIikge1xuICAgICAgaXRhbGljID0gMDtcbiAgICB9XG5cbiAgICBzeW1ib2xOb2RlID0gbmV3IGRvbVRyZWVfU3ltYm9sTm9kZSh2YWx1ZSwgbWV0cmljcy5oZWlnaHQsIG1ldHJpY3MuZGVwdGgsIGl0YWxpYywgbWV0cmljcy5za2V3LCBtZXRyaWNzLndpZHRoLCBjbGFzc2VzKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPKGVtaWx5KTogRmlndXJlIG91dCBhIGdvb2Qgd2F5IHRvIG9ubHkgcHJpbnQgdGhpcyBpbiBkZXZlbG9wbWVudFxuICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIk5vIGNoYXJhY3RlciBtZXRyaWNzIFwiICsgKFwiZm9yICdcIiArIHZhbHVlICsgXCInIGluIHN0eWxlICdcIiArIGZvbnROYW1lICsgXCInIGFuZCBtb2RlICdcIiArIG1vZGUgKyBcIidcIikpO1xuICAgIHN5bWJvbE5vZGUgPSBuZXcgZG9tVHJlZV9TeW1ib2xOb2RlKHZhbHVlLCAwLCAwLCAwLCAwLCAwLCBjbGFzc2VzKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgc3ltYm9sTm9kZS5tYXhGb250U2l6ZSA9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG5cbiAgICBpZiAob3B0aW9ucy5zdHlsZS5pc1RpZ2h0KCkpIHtcbiAgICAgIHN5bWJvbE5vZGUuY2xhc3Nlcy5wdXNoKFwibXRpZ2h0XCIpO1xuICAgIH1cblxuICAgIHZhciBjb2xvciA9IG9wdGlvbnMuZ2V0Q29sb3IoKTtcblxuICAgIGlmIChjb2xvcikge1xuICAgICAgc3ltYm9sTm9kZS5zdHlsZS5jb2xvciA9IGNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzeW1ib2xOb2RlO1xufTtcbi8qKlxuICogTWFrZXMgYSBzeW1ib2wgaW4gTWFpbi1SZWd1bGFyIG9yIEFNUy1SZWd1bGFyLlxuICogVXNlZCBmb3IgcmVsLCBiaW4sIG9wZW4sIGNsb3NlLCBpbm5lciwgYW5kIHB1bmN0LlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21hdGhzeW0gPSBmdW5jdGlvbiBtYXRoc3ltKHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIGlmIChjbGFzc2VzID09PSB2b2lkIDApIHtcbiAgICBjbGFzc2VzID0gW107XG4gIH1cblxuICAvLyBEZWNpZGUgd2hhdCBmb250IHRvIHJlbmRlciB0aGUgc3ltYm9sIGluIGJ5IGl0cyBlbnRyeSBpbiB0aGUgc3ltYm9sc1xuICAvLyB0YWJsZS5cbiAgLy8gSGF2ZSBhIHNwZWNpYWwgY2FzZSBmb3Igd2hlbiB0aGUgdmFsdWUgPSBcXCBiZWNhdXNlIHRoZSBcXCBpcyB1c2VkIGFzIGFcbiAgLy8gdGV4dG9yZCBpbiB1bnN1cHBvcnRlZCBjb21tYW5kIGVycm9ycyBidXQgY2Fubm90IGJlIHBhcnNlZCBhcyBhIHJlZ3VsYXJcbiAgLy8gdGV4dCBvcmRpbmFsIGFuZCBpcyB0aGVyZWZvcmUgbm90IHByZXNlbnQgYXMgYSBzeW1ib2wgaW4gdGhlIHN5bWJvbHNcbiAgLy8gdGFibGUgZm9yIHRleHQsIGFzIHdlbGwgYXMgYSBzcGVjaWFsIGNhc2UgZm9yIGJvbGRzeW1ib2wgYmVjYXVzZSBpdFxuICAvLyBjYW4gYmUgdXNlZCBmb3IgYm9sZCArIGFuZCAtXG4gIGlmIChvcHRpb25zLmZvbnQgPT09IFwiYm9sZHN5bWJvbFwiICYmIGJ1aWxkQ29tbW9uX2xvb2t1cFN5bWJvbCh2YWx1ZSwgXCJNYWluLUJvbGRcIiwgbW9kZSkubWV0cmljcykge1xuICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHZhbHVlLCBcIk1haW4tQm9sZFwiLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChbXCJtYXRoYmZcIl0pKTtcbiAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gXCJcXFxcXCIgfHwgc3JjX3N5bWJvbHNbbW9kZV1bdmFsdWVdLmZvbnQgPT09IFwibWFpblwiKSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodmFsdWUsIFwiTWFpbi1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHZhbHVlLCBcIkFNUy1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KFtcImFtc3JtXCJdKSk7XG4gIH1cbn07XG4vKipcbiAqIERldGVybWluZXMgd2hpY2ggb2YgdGhlIHR3byBmb250IG5hbWVzIChNYWluLUl0YWxpYyBhbmQgTWF0aC1JdGFsaWMpIGFuZFxuICogY29ycmVzcG9uZGluZyBzdHlsZSB0YWdzIChtYWluZGVmYXVsdCBvciBtYXRoaXQpIHRvIHVzZSBmb3IgZGVmYXVsdCBtYXRoIGZvbnQsXG4gKiBkZXBlbmRpbmcgb24gdGhlIHN5bWJvbC5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl9tYXRoZGVmYXVsdCA9IGZ1bmN0aW9uIG1hdGhkZWZhdWx0KHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIGlmICgvWzAtOV0vLnRlc3QodmFsdWUuY2hhckF0KDApKSB8fCAvLyBnbHlwaHMgZm9yIFxcaW1hdGggYW5kIFxcam1hdGggZG8gbm90IGV4aXN0IGluIE1hdGgtSXRhbGljIHNvIHdlXG4gIC8vIG5lZWQgdG8gdXNlIE1haW4tSXRhbGljIGluc3RlYWRcbiAgdXRpbHMuY29udGFpbnMobWF0aGl0TGV0dGVycywgdmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1haW4tSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwibWF0aGl0XCJcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBmb250TmFtZTogXCJNYXRoLUl0YWxpY1wiLFxuICAgICAgZm9udENsYXNzOiBcIm1hdGhkZWZhdWx0XCJcbiAgICB9O1xuICB9XG59O1xuLyoqXG4gKiBEZXRlcm1pbmVzIHdoaWNoIG9mIHRoZSBmb250IG5hbWVzIChNYWluLUl0YWxpYywgTWF0aC1JdGFsaWMsIGFuZCBDYWxpZ3JhcGhpYylcbiAqIGFuZCBjb3JyZXNwb25kaW5nIHN0eWxlIHRhZ3MgKG1hdGhpdCwgbWF0aGRlZmF1bHQsIG9yIG1hdGhjYWwpIHRvIHVzZSBmb3IgZm9udFxuICogXCJtYXRobm9ybWFsXCIsIGRlcGVuZGluZyBvbiB0aGUgc3ltYm9sLiAgVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBmb250TWFwIGZvclxuICogZm9udCBcIm1hdGhub3JtYWxcIi5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl9tYXRobm9ybWFsID0gZnVuY3Rpb24gbWF0aG5vcm1hbCh2YWx1ZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcykge1xuICBpZiAodXRpbHMuY29udGFpbnMobWF0aGl0TGV0dGVycywgdmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1haW4tSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwibWF0aGl0XCJcbiAgICB9O1xuICB9IGVsc2UgaWYgKC9bMC05XS8udGVzdCh2YWx1ZS5jaGFyQXQoMCkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIkNhbGlncmFwaGljLVJlZ3VsYXJcIixcbiAgICAgIGZvbnRDbGFzczogXCJtYXRoY2FsXCJcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBmb250TmFtZTogXCJNYXRoLUl0YWxpY1wiLFxuICAgICAgZm9udENsYXNzOiBcIm1hdGhkZWZhdWx0XCJcbiAgICB9O1xuICB9XG59O1xuLyoqXG4gKiBEZXRlcm1pbmVzIHdoaWNoIG9mIHRoZSB0d28gZm9udCBuYW1lcyAoTWFpbi1Cb2xkIGFuZCBNYXRoLUJvbGRJdGFsaWMpIGFuZFxuICogY29ycmVzcG9uZGluZyBzdHlsZSB0YWdzIChtYXRoYmYgb3IgYm9sZHN5bWJvbCkgdG8gdXNlIGZvciBmb250IFwiYm9sZHN5bWJvbFwiLFxuICogZGVwZW5kaW5nIG9uIHRoZSBzeW1ib2wuICBVc2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZvbnRNYXAgZm9yIGZvbnRcbiAqIFwiYm9sZHN5bWJvbFwiLlxuICovXG5cblxudmFyIGJvbGRzeW1ib2wgPSBmdW5jdGlvbiBib2xkc3ltYm9sKHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIGlmIChidWlsZENvbW1vbl9sb29rdXBTeW1ib2wodmFsdWUsIFwiTWF0aC1Cb2xkSXRhbGljXCIsIG1vZGUpLm1ldHJpY3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9udE5hbWU6IFwiTWF0aC1Cb2xkSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwiYm9sZHN5bWJvbFwiXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBTb21lIGdseXBocyBkbyBub3QgZXhpc3QgaW4gTWF0aC1Cb2xkSXRhbGljIHNvIHdlIG5lZWQgdG8gdXNlXG4gICAgLy8gTWFpbi1Cb2xkIGluc3RlYWQuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1haW4tQm9sZFwiLFxuICAgICAgZm9udENsYXNzOiBcIm1hdGhiZlwiXG4gICAgfTtcbiAgfVxufTtcbi8qKlxuICogTWFrZXMgZWl0aGVyIGEgbWF0aG9yZCBvciB0ZXh0b3JkIGluIHRoZSBjb3JyZWN0IGZvbnQgYW5kIGNvbG9yLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21ha2VPcmQgPSBmdW5jdGlvbiBtYWtlT3JkKGdyb3VwLCBvcHRpb25zLCB0eXBlKSB7XG4gIHZhciBtb2RlID0gZ3JvdXAubW9kZTtcbiAgdmFyIHRleHQgPSBncm91cC50ZXh0O1xuICB2YXIgY2xhc3NlcyA9IFtcIm1vcmRcIl07IC8vIE1hdGggbW9kZSBvciBPbGQgZm9udCAoaS5lLiBcXHJtKVxuXG4gIHZhciBpc0ZvbnQgPSBtb2RlID09PSBcIm1hdGhcIiB8fCBtb2RlID09PSBcInRleHRcIiAmJiBvcHRpb25zLmZvbnQ7XG4gIHZhciBmb250T3JGYW1pbHkgPSBpc0ZvbnQgPyBvcHRpb25zLmZvbnQgOiBvcHRpb25zLmZvbnRGYW1pbHk7XG5cbiAgaWYgKHRleHQuY2hhckNvZGVBdCgwKSA9PT0gMHhEODM1KSB7XG4gICAgLy8gc3Vycm9nYXRlIHBhaXJzIGdldCBzcGVjaWFsIHRyZWF0bWVudFxuICAgIHZhciBfd2lkZUNoYXJhY3RlckZvbnQgPSB3aWRlX2NoYXJhY3Rlcl93aWRlQ2hhcmFjdGVyRm9udCh0ZXh0LCBtb2RlKSxcbiAgICAgICAgd2lkZUZvbnROYW1lID0gX3dpZGVDaGFyYWN0ZXJGb250WzBdLFxuICAgICAgICB3aWRlRm9udENsYXNzID0gX3dpZGVDaGFyYWN0ZXJGb250WzFdO1xuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dCwgd2lkZUZvbnROYW1lLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdCh3aWRlRm9udENsYXNzKSk7XG4gIH0gZWxzZSBpZiAoZm9udE9yRmFtaWx5KSB7XG4gICAgdmFyIGZvbnROYW1lO1xuICAgIHZhciBmb250Q2xhc3NlcztcblxuICAgIGlmIChmb250T3JGYW1pbHkgPT09IFwiYm9sZHN5bWJvbFwiIHx8IGZvbnRPckZhbWlseSA9PT0gXCJtYXRobm9ybWFsXCIpIHtcbiAgICAgIHZhciBmb250RGF0YSA9IGZvbnRPckZhbWlseSA9PT0gXCJib2xkc3ltYm9sXCIgPyBib2xkc3ltYm9sKHRleHQsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpIDogYnVpbGRDb21tb25fbWF0aG5vcm1hbCh0ZXh0LCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKTtcbiAgICAgIGZvbnROYW1lID0gZm9udERhdGEuZm9udE5hbWU7XG4gICAgICBmb250Q2xhc3NlcyA9IFtmb250RGF0YS5mb250Q2xhc3NdO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuY29udGFpbnMobWF0aGl0TGV0dGVycywgdGV4dCkpIHtcbiAgICAgIGZvbnROYW1lID0gXCJNYWluLUl0YWxpY1wiO1xuICAgICAgZm9udENsYXNzZXMgPSBbXCJtYXRoaXRcIl07XG4gICAgfSBlbHNlIGlmIChpc0ZvbnQpIHtcbiAgICAgIGZvbnROYW1lID0gZm9udE1hcFtmb250T3JGYW1pbHldLmZvbnROYW1lO1xuICAgICAgZm9udENsYXNzZXMgPSBbZm9udE9yRmFtaWx5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9udE5hbWUgPSByZXRyaWV2ZVRleHRGb250TmFtZShmb250T3JGYW1pbHksIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGUpO1xuICAgICAgZm9udENsYXNzZXMgPSBbZm9udE9yRmFtaWx5LCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlXTtcbiAgICB9XG5cbiAgICBpZiAoYnVpbGRDb21tb25fbG9va3VwU3ltYm9sKHRleHQsIGZvbnROYW1lLCBtb2RlKS5tZXRyaWNzKSB7XG4gICAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVN5bWJvbCh0ZXh0LCBmb250TmFtZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoZm9udENsYXNzZXMpKTtcbiAgICB9IGVsc2UgaWYgKGxpZ2F0dXJlcy5oYXNPd25Qcm9wZXJ0eSh0ZXh0KSAmJiBmb250TmFtZS5zdWJzdHIoMCwgMTApID09PSBcIlR5cGV3cml0ZXJcIikge1xuICAgICAgLy8gRGVjb25zdHJ1Y3QgbGlnYXR1cmVzIGluIG1vbm9zcGFjZSBmb250cyAoXFx0ZXh0dHQsIFxcdHQpLlxuICAgICAgdmFyIHBhcnRzID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJ0cy5wdXNoKGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dFtpXSwgZm9udE5hbWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KGZvbnRDbGFzc2VzKSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZUZyYWdtZW50KHBhcnRzKTtcbiAgICB9XG4gIH0gLy8gTWFrZXMgYSBzeW1ib2wgaW4gdGhlIGRlZmF1bHQgZm9udCBmb3IgbWF0aG9yZHMgYW5kIHRleHRvcmRzLlxuXG5cbiAgaWYgKHR5cGUgPT09IFwibWF0aG9yZFwiKSB7XG4gICAgdmFyIGZvbnRMb29rdXAgPSBidWlsZENvbW1vbl9tYXRoZGVmYXVsdCh0ZXh0LCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVN5bWJvbCh0ZXh0LCBmb250TG9va3VwLmZvbnROYW1lLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChbZm9udExvb2t1cC5mb250Q2xhc3NdKSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ0ZXh0b3JkXCIpIHtcbiAgICB2YXIgZm9udCA9IHNyY19zeW1ib2xzW21vZGVdW3RleHRdICYmIHNyY19zeW1ib2xzW21vZGVdW3RleHRdLmZvbnQ7XG5cbiAgICBpZiAoZm9udCA9PT0gXCJhbXNcIikge1xuICAgICAgdmFyIF9mb250TmFtZSA9IHJldHJpZXZlVGV4dEZvbnROYW1lKFwiYW1zcm1cIiwgb3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSk7XG5cbiAgICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHRleHQsIF9mb250TmFtZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoXCJhbXNybVwiLCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKSk7XG4gICAgfSBlbHNlIGlmIChmb250ID09PSBcIm1haW5cIiB8fCAhZm9udCkge1xuICAgICAgdmFyIF9mb250TmFtZTIgPSByZXRyaWV2ZVRleHRGb250TmFtZShcInRleHRybVwiLCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKTtcblxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dCwgX2ZvbnROYW1lMiwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQob3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBmb250cyBhZGRlZCBieSBwbHVnaW5zXG4gICAgICB2YXIgX2ZvbnROYW1lMyA9IHJldHJpZXZlVGV4dEZvbnROYW1lKGZvbnQsIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGUpOyAvLyBXZSBhZGQgZm9udCBuYW1lIGFzIGEgY3NzIGNsYXNzXG5cblxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dCwgX2ZvbnROYW1lMywgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoX2ZvbnROYW1lMywgb3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmV4cGVjdGVkIHR5cGU6IFwiICsgdHlwZSArIFwiIGluIG1ha2VPcmRcIik7XG4gIH1cbn07XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBzdWJzZXF1ZW50IHN5bWJvbE5vZGVzIGhhdmUgdGhlIHNhbWUgY2xhc3Nlcywgc2tldywgbWF4Rm9udCxcbiAqIGFuZCBzdHlsZXMuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fY2FuQ29tYmluZSA9IGZ1bmN0aW9uIGNhbkNvbWJpbmUocHJldiwgbmV4dCkge1xuICBpZiAoY3JlYXRlQ2xhc3MocHJldi5jbGFzc2VzKSAhPT0gY3JlYXRlQ2xhc3MobmV4dC5jbGFzc2VzKSB8fCBwcmV2LnNrZXcgIT09IG5leHQuc2tldyB8fCBwcmV2Lm1heEZvbnRTaXplICE9PSBuZXh0Lm1heEZvbnRTaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgc3R5bGUgaW4gcHJldi5zdHlsZSkge1xuICAgIGlmIChwcmV2LnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSAmJiBwcmV2LnN0eWxlW3N0eWxlXSAhPT0gbmV4dC5zdHlsZVtzdHlsZV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBfc3R5bGUgaW4gbmV4dC5zdHlsZSkge1xuICAgIGlmIChuZXh0LnN0eWxlLmhhc093blByb3BlcnR5KF9zdHlsZSkgJiYgcHJldi5zdHlsZVtfc3R5bGVdICE9PSBuZXh0LnN0eWxlW19zdHlsZV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIENvbWJpbmUgY29uc2VxdWV0aXZlIGRvbVRyZWUuc3ltYm9sTm9kZXMgaW50byBhIHNpbmdsZSBzeW1ib2xOb2RlLlxuICogTm90ZTogdGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBhcmd1bWVudC5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl90cnlDb21iaW5lQ2hhcnMgPSBmdW5jdGlvbiB0cnlDb21iaW5lQ2hhcnMoY2hhcnMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICB2YXIgcHJldiA9IGNoYXJzW2ldO1xuICAgIHZhciBuZXh0ID0gY2hhcnNbaSArIDFdO1xuXG4gICAgaWYgKHByZXYgaW5zdGFuY2VvZiBkb21UcmVlX1N5bWJvbE5vZGUgJiYgbmV4dCBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSAmJiBidWlsZENvbW1vbl9jYW5Db21iaW5lKHByZXYsIG5leHQpKSB7XG4gICAgICBwcmV2LnRleHQgKz0gbmV4dC50ZXh0O1xuICAgICAgcHJldi5oZWlnaHQgPSBNYXRoLm1heChwcmV2LmhlaWdodCwgbmV4dC5oZWlnaHQpO1xuICAgICAgcHJldi5kZXB0aCA9IE1hdGgubWF4KHByZXYuZGVwdGgsIG5leHQuZGVwdGgpOyAvLyBVc2UgdGhlIGxhc3QgY2hhcmFjdGVyJ3MgaXRhbGljIGNvcnJlY3Rpb24gc2luY2Ugd2UgdXNlXG4gICAgICAvLyBpdCB0byBhZGQgcGFkZGluZyB0byB0aGUgcmlnaHQgb2YgdGhlIHNwYW4gY3JlYXRlZCBmcm9tXG4gICAgICAvLyB0aGUgY29tYmluZWQgY2hhcmFjdGVycy5cblxuICAgICAgcHJldi5pdGFsaWMgPSBuZXh0Lml0YWxpYztcbiAgICAgIGNoYXJzLnNwbGljZShpICsgMSwgMSk7XG4gICAgICBpLS07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNoYXJzO1xufTtcbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBoZWlnaHQsIGRlcHRoLCBhbmQgbWF4Rm9udFNpemUgb2YgYW4gZWxlbWVudCBiYXNlZCBvbiBpdHNcbiAqIGNoaWxkcmVuLlxuICovXG5cblxudmFyIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuID0gZnVuY3Rpb24gc2l6ZUVsZW1lbnRGcm9tQ2hpbGRyZW4oZWxlbSkge1xuICB2YXIgaGVpZ2h0ID0gMDtcbiAgdmFyIGRlcHRoID0gMDtcbiAgdmFyIG1heEZvbnRTaXplID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0uY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSBlbGVtLmNoaWxkcmVuW2ldO1xuXG4gICAgaWYgKGNoaWxkLmhlaWdodCA+IGhlaWdodCkge1xuICAgICAgaGVpZ2h0ID0gY2hpbGQuaGVpZ2h0O1xuICAgIH1cblxuICAgIGlmIChjaGlsZC5kZXB0aCA+IGRlcHRoKSB7XG4gICAgICBkZXB0aCA9IGNoaWxkLmRlcHRoO1xuICAgIH1cblxuICAgIGlmIChjaGlsZC5tYXhGb250U2l6ZSA+IG1heEZvbnRTaXplKSB7XG4gICAgICBtYXhGb250U2l6ZSA9IGNoaWxkLm1heEZvbnRTaXplO1xuICAgIH1cbiAgfVxuXG4gIGVsZW0uaGVpZ2h0ID0gaGVpZ2h0O1xuICBlbGVtLmRlcHRoID0gZGVwdGg7XG4gIGVsZW0ubWF4Rm9udFNpemUgPSBtYXhGb250U2l6ZTtcbn07XG4vKipcbiAqIE1ha2VzIGEgc3BhbiB3aXRoIHRoZSBnaXZlbiBsaXN0IG9mIGNsYXNzZXMsIGxpc3Qgb2YgY2hpbGRyZW4sIGFuZCBvcHRpb25zLlxuICpcbiAqIFRPRE8oIzk1Myk6IEVuc3VyZSB0aGF0IGBvcHRpb25zYCBpcyBhbHdheXMgcHJvdmlkZWQgKGN1cnJlbnRseSBzb21lIGNhbGxcbiAqIHNpdGVzIGRvbid0IHBhc3MgaXQpIGFuZCBtYWtlIHRoZSB0eXBlIGJlbG93IG1hbmRhdG9yeS5cbiAqIFRPRE86IGFkZCBhIHNlcGFyYXRlIGFyZ3VtZW50IGZvciBtYXRoIGNsYXNzIChlLmcuIGBtb3BgLCBgbWJpbmApLCB3aGljaFxuICogc2hvdWxkIGlmIHByZXNlbnQgY29tZSBmaXJzdCBpbiBgY2xhc3Nlc2AuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZVNwYW4gPSBmdW5jdGlvbiBtYWtlU3BhbihjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucywgc3R5bGUpIHtcbiAgdmFyIHNwYW4gPSBuZXcgZG9tVHJlZV9TcGFuKGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zLCBzdHlsZSk7XG4gIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuKHNwYW4pO1xuICByZXR1cm4gc3Bhbjtcbn07IC8vIFNWRyBvbmUgaXMgc2ltcGxlciAtLSBkb2Vzbid0IHJlcXVpcmUgaGVpZ2h0LCBkZXB0aCwgbWF4LWZvbnQgc2V0dGluZy5cbi8vIFRoaXMgaXMgYWxzbyBhIHNlcGFyYXRlIG1ldGhvZCBmb3IgdHlwZXNhZmV0eS5cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZVN2Z1NwYW4gPSBmdW5jdGlvbiBtYWtlU3ZnU3BhbihjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucywgc3R5bGUpIHtcbiAgcmV0dXJuIG5ldyBkb21UcmVlX1NwYW4oY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMsIHN0eWxlKTtcbn07XG5cbnZhciBtYWtlTGluZVNwYW4gPSBmdW5jdGlvbiBtYWtlTGluZVNwYW4oY2xhc3NOYW1lLCBvcHRpb25zLCB0aGlja25lc3MpIHtcbiAgdmFyIGxpbmUgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbY2xhc3NOYW1lXSwgW10sIG9wdGlvbnMpO1xuICBsaW5lLmhlaWdodCA9IE1hdGgubWF4KHRoaWNrbmVzcyB8fCBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVmYXVsdFJ1bGVUaGlja25lc3MsIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyk7XG4gIGxpbmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGggPSBsaW5lLmhlaWdodCArIFwiZW1cIjtcbiAgbGluZS5tYXhGb250U2l6ZSA9IDEuMDtcbiAgcmV0dXJuIGxpbmU7XG59O1xuLyoqXG4gKiBNYWtlcyBhbiBhbmNob3Igd2l0aCB0aGUgZ2l2ZW4gaHJlZiwgbGlzdCBvZiBjbGFzc2VzLCBsaXN0IG9mIGNoaWxkcmVuLFxuICogYW5kIG9wdGlvbnMuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZUFuY2hvciA9IGZ1bmN0aW9uIG1ha2VBbmNob3IoaHJlZiwgY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMpIHtcbiAgdmFyIGFuY2hvciA9IG5ldyBkb21UcmVlX0FuY2hvcihocmVmLCBjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucyk7XG4gIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuKGFuY2hvcik7XG4gIHJldHVybiBhbmNob3I7XG59O1xuLyoqXG4gKiBNYWtlcyBhIGRvY3VtZW50IGZyYWdtZW50IHdpdGggdGhlIGdpdmVuIGxpc3Qgb2YgY2hpbGRyZW4uXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZUZyYWdtZW50ID0gZnVuY3Rpb24gbWFrZUZyYWdtZW50KGNoaWxkcmVuKSB7XG4gIHZhciBmcmFnbWVudCA9IG5ldyB0cmVlX0RvY3VtZW50RnJhZ21lbnQoY2hpbGRyZW4pO1xuICBzaXplRWxlbWVudEZyb21DaGlsZHJlbihmcmFnbWVudCk7XG4gIHJldHVybiBmcmFnbWVudDtcbn07XG4vKipcbiAqIFdyYXBzIGdyb3VwIGluIGEgc3BhbiBpZiBpdCdzIGEgZG9jdW1lbnQgZnJhZ21lbnQsIGFsbG93aW5nIHRvIGFwcGx5IGNsYXNzZXNcbiAqIGFuZCBzdHlsZXNcbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl93cmFwRnJhZ21lbnQgPSBmdW5jdGlvbiB3cmFwRnJhZ21lbnQoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgaWYgKGdyb3VwIGluc3RhbmNlb2YgdHJlZV9Eb2N1bWVudEZyYWdtZW50KSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtdLCBbZ3JvdXBdLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldHVybiBncm91cDtcbn07IC8vIFRoZXNlIGFyZSBleGFjdCBvYmplY3QgdHlwZXMgdG8gY2F0Y2ggdHlwb3MgaW4gdGhlIG5hbWVzIG9mIHRoZSBvcHRpb25hbCBmaWVsZHMuXG5cblxuLy8gQ29tcHV0ZXMgdGhlIHVwZGF0ZWQgYGNoaWxkcmVuYCBsaXN0IGFuZCB0aGUgb3ZlcmFsbCBkZXB0aC5cbi8vXG4vLyBUaGlzIGhlbHBlciBmdW5jdGlvbiBmb3IgbWFrZVZMaXN0IG1ha2VzIGl0IGVhc2llciB0byBlbmZvcmNlIHR5cGUgc2FmZXR5IGJ5XG4vLyBhbGxvd2luZyBlYXJseSBleGl0cyAocmV0dXJucykgaW4gdGhlIGxvZ2ljLlxudmFyIGdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aCA9IGZ1bmN0aW9uIGdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aChwYXJhbXMpIHtcbiAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiaW5kaXZpZHVhbFNoaWZ0XCIpIHtcbiAgICB2YXIgb2xkQ2hpbGRyZW4gPSBwYXJhbXMuY2hpbGRyZW47XG4gICAgdmFyIGNoaWxkcmVuID0gW29sZENoaWxkcmVuWzBdXTsgLy8gQWRkIGluIGtlcm5zIHRvIHRoZSBsaXN0IG9mIHBhcmFtcy5jaGlsZHJlbiB0byBnZXQgZWFjaCBlbGVtZW50IHRvIGJlXG4gICAgLy8gc2hpZnRlZCB0byB0aGUgY29ycmVjdCBzcGVjaWZpZWQgc2hpZnRcblxuICAgIHZhciBfZGVwdGggPSAtb2xkQ2hpbGRyZW5bMF0uc2hpZnQgLSBvbGRDaGlsZHJlblswXS5lbGVtLmRlcHRoO1xuXG4gICAgdmFyIGN1cnJQb3MgPSBfZGVwdGg7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IG9sZENoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGlmZiA9IC1vbGRDaGlsZHJlbltpXS5zaGlmdCAtIGN1cnJQb3MgLSBvbGRDaGlsZHJlbltpXS5lbGVtLmRlcHRoO1xuICAgICAgdmFyIHNpemUgPSBkaWZmIC0gKG9sZENoaWxkcmVuW2kgLSAxXS5lbGVtLmhlaWdodCArIG9sZENoaWxkcmVuW2kgLSAxXS5lbGVtLmRlcHRoKTtcbiAgICAgIGN1cnJQb3MgPSBjdXJyUG9zICsgZGlmZjtcbiAgICAgIGNoaWxkcmVuLnB1c2goe1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogc2l6ZVxuICAgICAgfSk7XG4gICAgICBjaGlsZHJlbi5wdXNoKG9sZENoaWxkcmVuW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgZGVwdGg6IF9kZXB0aFxuICAgIH07XG4gIH1cblxuICB2YXIgZGVwdGg7XG5cbiAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwidG9wXCIpIHtcbiAgICAvLyBXZSBhbHdheXMgc3RhcnQgYXQgdGhlIGJvdHRvbSwgc28gY2FsY3VsYXRlIHRoZSBib3R0b20gYnkgYWRkaW5nIHVwXG4gICAgLy8gYWxsIHRoZSBzaXplc1xuICAgIHZhciBib3R0b20gPSBwYXJhbXMucG9zaXRpb25EYXRhO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHBhcmFtcy5jaGlsZHJlbi5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IHBhcmFtcy5jaGlsZHJlbltfaV07XG4gICAgICBib3R0b20gLT0gY2hpbGQudHlwZSA9PT0gXCJrZXJuXCIgPyBjaGlsZC5zaXplIDogY2hpbGQuZWxlbS5oZWlnaHQgKyBjaGlsZC5lbGVtLmRlcHRoO1xuICAgIH1cblxuICAgIGRlcHRoID0gYm90dG9tO1xuICB9IGVsc2UgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiYm90dG9tXCIpIHtcbiAgICBkZXB0aCA9IC1wYXJhbXMucG9zaXRpb25EYXRhO1xuICB9IGVsc2Uge1xuICAgIHZhciBmaXJzdENoaWxkID0gcGFyYW1zLmNoaWxkcmVuWzBdO1xuXG4gICAgaWYgKGZpcnN0Q2hpbGQudHlwZSAhPT0gXCJlbGVtXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmlyc3QgY2hpbGQgbXVzdCBoYXZlIHR5cGUgXCJlbGVtXCIuJyk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwic2hpZnRcIikge1xuICAgICAgZGVwdGggPSAtZmlyc3RDaGlsZC5lbGVtLmRlcHRoIC0gcGFyYW1zLnBvc2l0aW9uRGF0YTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiZmlyc3RCYXNlbGluZVwiKSB7XG4gICAgICBkZXB0aCA9IC1maXJzdENoaWxkLmVsZW0uZGVwdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcG9zaXRpb25UeXBlIFwiICsgcGFyYW1zLnBvc2l0aW9uVHlwZSArIFwiLlwiKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoaWxkcmVuOiBwYXJhbXMuY2hpbGRyZW4sXG4gICAgZGVwdGg6IGRlcHRoXG4gIH07XG59O1xuLyoqXG4gKiBNYWtlcyBhIHZlcnRpY2FsIGxpc3QgYnkgc3RhY2tpbmcgZWxlbWVudHMgYW5kIGtlcm5zIG9uIHRvcCBvZiBlYWNoIG90aGVyLlxuICogQWxsb3dzIGZvciBtYW55IGRpZmZlcmVudCB3YXlzIG9mIHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uaW5nIG1ldGhvZC5cbiAqXG4gKiBTZWUgVkxpc3RQYXJhbSBkb2N1bWVudGF0aW9uIGFib3ZlLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21ha2VWTGlzdCA9IGZ1bmN0aW9uIG1ha2VWTGlzdChwYXJhbXMsIG9wdGlvbnMpIHtcbiAgdmFyIF9nZXRWTGlzdENoaWxkcmVuQW5kRCA9IGdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aChwYXJhbXMpLFxuICAgICAgY2hpbGRyZW4gPSBfZ2V0Vkxpc3RDaGlsZHJlbkFuZEQuY2hpbGRyZW4sXG4gICAgICBkZXB0aCA9IF9nZXRWTGlzdENoaWxkcmVuQW5kRC5kZXB0aDsgLy8gQ3JlYXRlIGEgc3RydXQgdGhhdCBpcyB0YWxsZXIgdGhhbiBhbnkgbGlzdCBpdGVtLiBUaGUgc3RydXQgaXMgYWRkZWQgdG9cbiAgLy8gZWFjaCBpdGVtLCB3aGVyZSBpdCB3aWxsIGRldGVybWluZSB0aGUgaXRlbSdzIGJhc2VsaW5lLiBTaW5jZSBpdCBoYXNcbiAgLy8gYG92ZXJmbG93OmhpZGRlbmAsIHRoZSBzdHJ1dCdzIHRvcCBlZGdlIHdpbGwgc2l0IG9uIHRoZSBpdGVtJ3MgbGluZSBib3gnc1xuICAvLyB0b3AgZWRnZSBhbmQgdGhlIHN0cnV0J3MgYm90dG9tIGVkZ2Ugd2lsbCBzaXQgb24gdGhlIGl0ZW0ncyBiYXNlbGluZSxcbiAgLy8gd2l0aCBubyBhZGRpdGlvbmFsIGxpbmUtaGVpZ2h0IHNwYWNpbmcuIFRoaXMgYWxsb3dzIHRoZSBpdGVtIGJhc2VsaW5lIHRvXG4gIC8vIGJlIHBvc2l0aW9uZWQgcHJlY2lzZWx5IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZm9udCBhc2NlbnQgYW5kXG4gIC8vIGxpbmUtaGVpZ2h0LlxuXG5cbiAgdmFyIHBzdHJ1dFNpemUgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcblxuICAgIGlmIChjaGlsZC50eXBlID09PSBcImVsZW1cIikge1xuICAgICAgdmFyIGVsZW0gPSBjaGlsZC5lbGVtO1xuICAgICAgcHN0cnV0U2l6ZSA9IE1hdGgubWF4KHBzdHJ1dFNpemUsIGVsZW0ubWF4Rm9udFNpemUsIGVsZW0uaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwc3RydXRTaXplICs9IDI7XG4gIHZhciBwc3RydXQgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbXCJwc3RydXRcIl0sIFtdKTtcbiAgcHN0cnV0LnN0eWxlLmhlaWdodCA9IHBzdHJ1dFNpemUgKyBcImVtXCI7IC8vIENyZWF0ZSBhIG5ldyBsaXN0IG9mIGFjdHVhbCBjaGlsZHJlbiBhdCB0aGUgY29ycmVjdCBvZmZzZXRzXG5cbiAgdmFyIHJlYWxDaGlsZHJlbiA9IFtdO1xuICB2YXIgbWluUG9zID0gZGVwdGg7XG4gIHZhciBtYXhQb3MgPSBkZXB0aDtcbiAgdmFyIGN1cnJQb3MgPSBkZXB0aDtcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBjaGlsZHJlbi5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9jaGlsZCA9IGNoaWxkcmVuW19pMl07XG5cbiAgICBpZiAoX2NoaWxkLnR5cGUgPT09IFwia2VyblwiKSB7XG4gICAgICBjdXJyUG9zICs9IF9jaGlsZC5zaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX2VsZW0gPSBfY2hpbGQuZWxlbTtcbiAgICAgIHZhciBjbGFzc2VzID0gX2NoaWxkLndyYXBwZXJDbGFzc2VzIHx8IFtdO1xuICAgICAgdmFyIHN0eWxlID0gX2NoaWxkLndyYXBwZXJTdHlsZSB8fCB7fTtcbiAgICAgIHZhciBjaGlsZFdyYXAgPSBidWlsZENvbW1vbl9tYWtlU3BhbihjbGFzc2VzLCBbcHN0cnV0LCBfZWxlbV0sIHVuZGVmaW5lZCwgc3R5bGUpO1xuICAgICAgY2hpbGRXcmFwLnN0eWxlLnRvcCA9IC1wc3RydXRTaXplIC0gY3VyclBvcyAtIF9lbGVtLmRlcHRoICsgXCJlbVwiO1xuXG4gICAgICBpZiAoX2NoaWxkLm1hcmdpbkxlZnQpIHtcbiAgICAgICAgY2hpbGRXcmFwLnN0eWxlLm1hcmdpbkxlZnQgPSBfY2hpbGQubWFyZ2luTGVmdDtcbiAgICAgIH1cblxuICAgICAgaWYgKF9jaGlsZC5tYXJnaW5SaWdodCkge1xuICAgICAgICBjaGlsZFdyYXAuc3R5bGUubWFyZ2luUmlnaHQgPSBfY2hpbGQubWFyZ2luUmlnaHQ7XG4gICAgICB9XG5cbiAgICAgIHJlYWxDaGlsZHJlbi5wdXNoKGNoaWxkV3JhcCk7XG4gICAgICBjdXJyUG9zICs9IF9lbGVtLmhlaWdodCArIF9lbGVtLmRlcHRoO1xuICAgIH1cblxuICAgIG1pblBvcyA9IE1hdGgubWluKG1pblBvcywgY3VyclBvcyk7XG4gICAgbWF4UG9zID0gTWF0aC5tYXgobWF4UG9zLCBjdXJyUG9zKTtcbiAgfSAvLyBUaGUgdmxpc3QgY29udGVudHMgZ28gaW4gYSB0YWJsZS1jZWxsIHdpdGggYHZlcnRpY2FsLWFsaWduOmJvdHRvbWAuXG4gIC8vIFRoaXMgY2VsbCdzIGJvdHRvbSBlZGdlIHdpbGwgZGV0ZXJtaW5lIHRoZSBjb250YWluaW5nIHRhYmxlJ3MgYmFzZWxpbmVcbiAgLy8gd2l0aG91dCBvdmVybHkgZXhwYW5kaW5nIHRoZSBjb250YWluaW5nIGxpbmUtYm94LlxuXG5cbiAgdmFyIHZsaXN0ID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3RcIl0sIHJlYWxDaGlsZHJlbik7XG4gIHZsaXN0LnN0eWxlLmhlaWdodCA9IG1heFBvcyArIFwiZW1cIjsgLy8gQSBzZWNvbmQgcm93IGlzIHVzZWQgaWYgbmVjZXNzYXJ5IHRvIHJlcHJlc2VudCB0aGUgdmxpc3QncyBkZXB0aC5cblxuICB2YXIgcm93cztcblxuICBpZiAobWluUG9zIDwgMCkge1xuICAgIC8vIFdlIHdpbGwgZGVmaW5lIGRlcHRoIGluIGFuIGVtcHR5IHNwYW4gd2l0aCBkaXNwbGF5OiB0YWJsZS1jZWxsLlxuICAgIC8vIEl0IHNob3VsZCByZW5kZXIgd2l0aCB0aGUgaGVpZ2h0IHRoYXQgd2UgZGVmaW5lLiBCdXQgQ2hyb21lLCBpblxuICAgIC8vIGNvbnRlbnRlZGl0YWJsZSBtb2RlIG9ubHksIHRyZWF0cyB0aGF0IHNwYW4gYXMgaWYgaXQgY29udGFpbnMgc29tZVxuICAgIC8vIHRleHQgY29udGVudC4gQW5kIHRoYXQgbWluLWhlaWdodCBvdmVyLXJpZGVzIG91ciBkZXNpcmVkIGhlaWdodC5cbiAgICAvLyBTbyB3ZSBwdXQgYW5vdGhlciBlbXB0eSBzcGFuIGluc2lkZSB0aGUgZGVwdGggc3RydXQgc3Bhbi5cbiAgICB2YXIgZW1wdHlTcGFuID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW10sIFtdKTtcbiAgICB2YXIgZGVwdGhTdHJ1dCA9IGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtcInZsaXN0XCJdLCBbZW1wdHlTcGFuXSk7XG4gICAgZGVwdGhTdHJ1dC5zdHlsZS5oZWlnaHQgPSAtbWluUG9zICsgXCJlbVwiOyAvLyBTYWZhcmkgd2FudHMgdGhlIGZpcnN0IHJvdyB0byBoYXZlIGlubGluZSBjb250ZW50OyBvdGhlcndpc2UgaXRcbiAgICAvLyBwdXRzIHRoZSBib3R0b20gb2YgdGhlICpzZWNvbmQqIHJvdyBvbiB0aGUgYmFzZWxpbmUuXG5cbiAgICB2YXIgdG9wU3RydXQgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbXCJ2bGlzdC1zXCJdLCBbbmV3IGRvbVRyZWVfU3ltYm9sTm9kZShcIlxcdTIwMEJcIildKTtcbiAgICByb3dzID0gW2J1aWxkQ29tbW9uX21ha2VTcGFuKFtcInZsaXN0LXJcIl0sIFt2bGlzdCwgdG9wU3RydXRdKSwgYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3QtclwiXSwgW2RlcHRoU3RydXRdKV07XG4gIH0gZWxzZSB7XG4gICAgcm93cyA9IFtidWlsZENvbW1vbl9tYWtlU3BhbihbXCJ2bGlzdC1yXCJdLCBbdmxpc3RdKV07XG4gIH1cblxuICB2YXIgdnRhYmxlID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3QtdFwiXSwgcm93cyk7XG5cbiAgaWYgKHJvd3MubGVuZ3RoID09PSAyKSB7XG4gICAgdnRhYmxlLmNsYXNzZXMucHVzaChcInZsaXN0LXQyXCIpO1xuICB9XG5cbiAgdnRhYmxlLmhlaWdodCA9IG1heFBvcztcbiAgdnRhYmxlLmRlcHRoID0gLW1pblBvcztcbiAgcmV0dXJuIHZ0YWJsZTtcbn07IC8vIEdsdWUgaXMgYSBjb25jZXB0IGZyb20gVGVYIHdoaWNoIGlzIGEgZmxleGlibGUgc3BhY2UgYmV0d2VlbiBlbGVtZW50cyBpblxuLy8gZWl0aGVyIGEgdmVydGljYWwgb3IgaG9yaXpvbnRhbCBsaXN0LiBJbiBLYVRlWCwgYXQgbGVhc3QgZm9yIG5vdywgaXQnc1xuLy8gc3RhdGljIHNwYWNlIGJldHdlZW4gZWxlbWVudHMgaW4gYSBob3Jpem9udGFsIGxheW91dC5cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZUdsdWUgPSBmdW5jdGlvbiBtYWtlR2x1ZShtZWFzdXJlbWVudCwgb3B0aW9ucykge1xuICAvLyBNYWtlIGFuIGVtcHR5IHNwYW4gZm9yIHRoZSBzcGFjZVxuICB2YXIgcnVsZSA9IGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtcIm1zcGFjZVwiXSwgW10sIG9wdGlvbnMpO1xuICB2YXIgc2l6ZSA9IHVuaXRzX2NhbGN1bGF0ZVNpemUobWVhc3VyZW1lbnQsIG9wdGlvbnMpO1xuICBydWxlLnN0eWxlLm1hcmdpblJpZ2h0ID0gc2l6ZSArIFwiZW1cIjtcbiAgcmV0dXJuIHJ1bGU7XG59OyAvLyBUYWtlcyBmb250IG9wdGlvbnMsIGFuZCByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBmb250TG9va3VwIG5hbWVcblxuXG52YXIgcmV0cmlldmVUZXh0Rm9udE5hbWUgPSBmdW5jdGlvbiByZXRyaWV2ZVRleHRGb250TmFtZShmb250RmFtaWx5LCBmb250V2VpZ2h0LCBmb250U2hhcGUpIHtcbiAgdmFyIGJhc2VGb250TmFtZSA9IFwiXCI7XG5cbiAgc3dpdGNoIChmb250RmFtaWx5KSB7XG4gICAgY2FzZSBcImFtc3JtXCI6XG4gICAgICBiYXNlRm9udE5hbWUgPSBcIkFNU1wiO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwidGV4dHJtXCI6XG4gICAgICBiYXNlRm9udE5hbWUgPSBcIk1haW5cIjtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInRleHRzZlwiOlxuICAgICAgYmFzZUZvbnROYW1lID0gXCJTYW5zU2VyaWZcIjtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInRleHR0dFwiOlxuICAgICAgYmFzZUZvbnROYW1lID0gXCJUeXBld3JpdGVyXCI7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBiYXNlRm9udE5hbWUgPSBmb250RmFtaWx5O1xuICAgIC8vIHVzZSBmb250cyBhZGRlZCBieSBhIHBsdWdpblxuICB9XG5cbiAgdmFyIGZvbnRTdHlsZXNOYW1lO1xuXG4gIGlmIChmb250V2VpZ2h0ID09PSBcInRleHRiZlwiICYmIGZvbnRTaGFwZSA9PT0gXCJ0ZXh0aXRcIikge1xuICAgIGZvbnRTdHlsZXNOYW1lID0gXCJCb2xkSXRhbGljXCI7XG4gIH0gZWxzZSBpZiAoZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgIGZvbnRTdHlsZXNOYW1lID0gXCJCb2xkXCI7XG4gIH0gZWxzZSBpZiAoZm9udFdlaWdodCA9PT0gXCJ0ZXh0aXRcIikge1xuICAgIGZvbnRTdHlsZXNOYW1lID0gXCJJdGFsaWNcIjtcbiAgfSBlbHNlIHtcbiAgICBmb250U3R5bGVzTmFtZSA9IFwiUmVndWxhclwiO1xuICB9XG5cbiAgcmV0dXJuIGJhc2VGb250TmFtZSArIFwiLVwiICsgZm9udFN0eWxlc05hbWU7XG59O1xuLyoqXG4gKiBNYXBzIFRlWCBmb250IGNvbW1hbmRzIHRvIG9iamVjdHMgY29udGFpbmluZzpcbiAqIC0gdmFyaWFudDogc3RyaW5nIHVzZWQgZm9yIFwibWF0aHZhcmlhbnRcIiBhdHRyaWJ1dGUgaW4gYnVpbGRNYXRoTUwuanNcbiAqIC0gZm9udE5hbWU6IHRoZSBcInN0eWxlXCIgcGFyYW1ldGVyIHRvIGZvbnRNZXRyaWNzLmdldENoYXJhY3Rlck1ldHJpY3NcbiAqL1xuLy8gQSBtYXAgYmV0d2VlbiB0ZXggZm9udCBjb21tYW5kcyBhbiBNYXRoTUwgbWF0aHZhcmlhbnQgYXR0cmlidXRlIHZhbHVlc1xuXG5cbnZhciBmb250TWFwID0ge1xuICAvLyBzdHlsZXNcbiAgXCJtYXRoYmZcIjoge1xuICAgIHZhcmlhbnQ6IFwiYm9sZFwiLFxuICAgIGZvbnROYW1lOiBcIk1haW4tQm9sZFwiXG4gIH0sXG4gIFwibWF0aHJtXCI6IHtcbiAgICB2YXJpYW50OiBcIm5vcm1hbFwiLFxuICAgIGZvbnROYW1lOiBcIk1haW4tUmVndWxhclwiXG4gIH0sXG4gIFwidGV4dGl0XCI6IHtcbiAgICB2YXJpYW50OiBcIml0YWxpY1wiLFxuICAgIGZvbnROYW1lOiBcIk1haW4tSXRhbGljXCJcbiAgfSxcbiAgXCJtYXRoaXRcIjoge1xuICAgIHZhcmlhbnQ6IFwiaXRhbGljXCIsXG4gICAgZm9udE5hbWU6IFwiTWFpbi1JdGFsaWNcIlxuICB9LFxuICAvLyBEZWZhdWx0IG1hdGggZm9udCwgXCJtYXRobm9ybWFsXCIgYW5kIFwiYm9sZHN5bWJvbFwiIGFyZSBtaXNzaW5nIGJlY2F1c2UgdGhleVxuICAvLyByZXF1aXJlIHRoZSB1c2Ugb2Ygc2V2ZXJhbCBmb250czogTWFpbi1JdGFsaWMgYW5kIE1hdGgtSXRhbGljIGZvciBkZWZhdWx0XG4gIC8vIG1hdGggZm9udCwgTWFpbi1JdGFsaWMsIE1hdGgtSXRhbGljLCBDYWxpZ3JhcGhpYyBmb3IgXCJtYXRobm9ybWFsXCIsIGFuZFxuICAvLyBNYXRoLUJvbGRJdGFsaWMgYW5kIE1haW4tQm9sZCBmb3IgXCJib2xkc3ltYm9sXCIuICBUaGlzIGlzIGhhbmRsZWQgYnkgYVxuICAvLyBzcGVjaWFsIGNhc2UgaW4gbWFrZU9yZCB3aGljaCBlbmRzIHVwIGNhbGxpbmcgbWF0aGRlZmF1bHQsIG1hdGhub3JtYWwsXG4gIC8vIGFuZCBib2xkc3ltYm9sLlxuICAvLyBmYW1pbGllc1xuICBcIm1hdGhiYlwiOiB7XG4gICAgdmFyaWFudDogXCJkb3VibGUtc3RydWNrXCIsXG4gICAgZm9udE5hbWU6IFwiQU1TLVJlZ3VsYXJcIlxuICB9LFxuICBcIm1hdGhjYWxcIjoge1xuICAgIHZhcmlhbnQ6IFwic2NyaXB0XCIsXG4gICAgZm9udE5hbWU6IFwiQ2FsaWdyYXBoaWMtUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aGZyYWtcIjoge1xuICAgIHZhcmlhbnQ6IFwiZnJha3R1clwiLFxuICAgIGZvbnROYW1lOiBcIkZyYWt0dXItUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aHNjclwiOiB7XG4gICAgdmFyaWFudDogXCJzY3JpcHRcIixcbiAgICBmb250TmFtZTogXCJTY3JpcHQtUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aHNmXCI6IHtcbiAgICB2YXJpYW50OiBcInNhbnMtc2VyaWZcIixcbiAgICBmb250TmFtZTogXCJTYW5zU2VyaWYtUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aHR0XCI6IHtcbiAgICB2YXJpYW50OiBcIm1vbm9zcGFjZVwiLFxuICAgIGZvbnROYW1lOiBcIlR5cGV3cml0ZXItUmVndWxhclwiXG4gIH1cbn07XG52YXIgc3ZnRGF0YSA9IHtcbiAgLy8gICBwYXRoLCB3aWR0aCwgaGVpZ2h0XG4gIHZlYzogW1widmVjXCIsIDAuNDcxLCAwLjcxNF0sXG4gIC8vIHZhbHVlcyBmcm9tIHRoZSBmb250IGdseXBoXG4gIG9paW50U2l6ZTE6IFtcIm9paW50U2l6ZTFcIiwgMC45NTcsIDAuNDk5XSxcbiAgLy8gb3ZhbCB0byBvdmVybGF5IHRoZSBpbnRlZ3JhbmRcbiAgb2lpbnRTaXplMjogW1wib2lpbnRTaXplMlwiLCAxLjQ3MiwgMC42NTldLFxuICBvaWlpbnRTaXplMTogW1wib2lpaW50U2l6ZTFcIiwgMS4zMDQsIDAuNDk5XSxcbiAgb2lpaW50U2l6ZTI6IFtcIm9paWludFNpemUyXCIsIDEuOTgsIDAuNjU5XVxufTtcblxudmFyIGJ1aWxkQ29tbW9uX3N0YXRpY1N2ZyA9IGZ1bmN0aW9uIHN0YXRpY1N2Zyh2YWx1ZSwgb3B0aW9ucykge1xuICAvLyBDcmVhdGUgYSBzcGFuIHdpdGggaW5saW5lIFNWRyBmb3IgdGhlIGVsZW1lbnQuXG4gIHZhciBfc3ZnRGF0YSR2YWx1ZSA9IHN2Z0RhdGFbdmFsdWVdLFxuICAgICAgcGF0aE5hbWUgPSBfc3ZnRGF0YSR2YWx1ZVswXSxcbiAgICAgIHdpZHRoID0gX3N2Z0RhdGEkdmFsdWVbMV0sXG4gICAgICBoZWlnaHQgPSBfc3ZnRGF0YSR2YWx1ZVsyXTtcbiAgdmFyIHBhdGggPSBuZXcgZG9tVHJlZV9QYXRoTm9kZShwYXRoTmFtZSk7XG4gIHZhciBzdmdOb2RlID0gbmV3IFN2Z05vZGUoW3BhdGhdLCB7XG4gICAgXCJ3aWR0aFwiOiB3aWR0aCArIFwiZW1cIixcbiAgICBcImhlaWdodFwiOiBoZWlnaHQgKyBcImVtXCIsXG4gICAgLy8gT3ZlcnJpZGUgQ1NTIHJ1bGUgYC5rYXRleCBzdmcgeyB3aWR0aDogMTAwJSB9YFxuICAgIFwic3R5bGVcIjogXCJ3aWR0aDpcIiArIHdpZHRoICsgXCJlbVwiLFxuICAgIFwidmlld0JveFwiOiBcIjAgMCBcIiArIDEwMDAgKiB3aWR0aCArIFwiIFwiICsgMTAwMCAqIGhlaWdodCxcbiAgICBcInByZXNlcnZlQXNwZWN0UmF0aW9cIjogXCJ4TWluWU1pblwiXG4gIH0pO1xuICB2YXIgc3BhbiA9IGJ1aWxkQ29tbW9uX21ha2VTdmdTcGFuKFtcIm92ZXJsYXlcIl0sIFtzdmdOb2RlXSwgb3B0aW9ucyk7XG4gIHNwYW4uaGVpZ2h0ID0gaGVpZ2h0O1xuICBzcGFuLnN0eWxlLmhlaWdodCA9IGhlaWdodCArIFwiZW1cIjtcbiAgc3Bhbi5zdHlsZS53aWR0aCA9IHdpZHRoICsgXCJlbVwiO1xuICByZXR1cm4gc3Bhbjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJ1aWxkQ29tbW9uID0gKHtcbiAgZm9udE1hcDogZm9udE1hcCxcbiAgbWFrZVN5bWJvbDogYnVpbGRDb21tb25fbWFrZVN5bWJvbCxcbiAgbWF0aHN5bTogYnVpbGRDb21tb25fbWF0aHN5bSxcbiAgbWFrZVNwYW46IGJ1aWxkQ29tbW9uX21ha2VTcGFuLFxuICBtYWtlU3ZnU3BhbjogYnVpbGRDb21tb25fbWFrZVN2Z1NwYW4sXG4gIG1ha2VMaW5lU3BhbjogbWFrZUxpbmVTcGFuLFxuICBtYWtlQW5jaG9yOiBidWlsZENvbW1vbl9tYWtlQW5jaG9yLFxuICBtYWtlRnJhZ21lbnQ6IGJ1aWxkQ29tbW9uX21ha2VGcmFnbWVudCxcbiAgd3JhcEZyYWdtZW50OiBidWlsZENvbW1vbl93cmFwRnJhZ21lbnQsXG4gIG1ha2VWTGlzdDogYnVpbGRDb21tb25fbWFrZVZMaXN0LFxuICBtYWtlT3JkOiBidWlsZENvbW1vbl9tYWtlT3JkLFxuICBtYWtlR2x1ZTogYnVpbGRDb21tb25fbWFrZUdsdWUsXG4gIHN0YXRpY1N2ZzogYnVpbGRDb21tb25fc3RhdGljU3ZnLFxuICBzdmdEYXRhOiBzdmdEYXRhLFxuICB0cnlDb21iaW5lQ2hhcnM6IGJ1aWxkQ29tbW9uX3RyeUNvbWJpbmVDaGFyc1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9wYXJzZU5vZGUuanNcblxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0aGUgbm9kZSBpcyBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgcmV0dXJucyBpdCB3aXRoIHN0cmljdGVyXG4gKiB0eXBpbmcuIFRocm93cyBpZiB0aGUgbm9kZSdzIHR5cGUgZG9lcyBub3QgbWF0Y2guXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vZGVUeXBlKG5vZGUsIHR5cGUpIHtcbiAgdmFyIHR5cGVkTm9kZSA9IGNoZWNrTm9kZVR5cGUobm9kZSwgdHlwZSk7XG5cbiAgaWYgKCF0eXBlZE5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub2RlIG9mIHR5cGUgXCIgKyB0eXBlICsgXCIsIGJ1dCBnb3QgXCIgKyAobm9kZSA/IFwibm9kZSBvZiB0eXBlIFwiICsgbm9kZS50eXBlIDogU3RyaW5nKG5vZGUpKSk7XG4gIH0gLy8gJEZsb3dGaXhNZTogVW5zdXJlIHdoeS5cblxuXG4gIHJldHVybiB0eXBlZE5vZGU7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG5vZGUgbW9yZSBzdHJpY3RseSB0eXBlZCBpZmYgaXQgaXMgb2YgdGhlIGdpdmVuIHR5cGUuIE90aGVyd2lzZSxcbiAqIHJldHVybnMgbnVsbC5cbiAqL1xuXG5mdW5jdGlvbiBjaGVja05vZGVUeXBlKG5vZGUsIHR5cGUpIHtcbiAgaWYgKG5vZGUgJiYgbm9kZS50eXBlID09PSB0eXBlKSB7XG4gICAgLy8gVGhlIGRlZmluaXRpb24gb2YgUGFyc2VOb2RlPFRZUEU+IGRvZXNuJ3QgY29tbXVuaWNhdGUgdG8gZmxvdyB0aGF0XG4gICAgLy8gYHR5cGU6IFRZUEVgIChhcyB0aGF0J3Mgbm90IGV4cGxpY2l0bHkgbWVudGlvbmVkIGFueXdoZXJlKSwgdGhvdWdoIHRoYXRcbiAgICAvLyBoYXBwZW5zIHRvIGJlIHRydWUgZm9yIGFsbCBvdXIgdmFsdWUgdHlwZXMuXG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIEFzc2VydHMgdGhhdCB0aGUgbm9kZSBpcyBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgcmV0dXJucyBpdCB3aXRoIHN0cmljdGVyXG4gKiB0eXBpbmcuIFRocm93cyBpZiB0aGUgbm9kZSdzIHR5cGUgZG9lcyBub3QgbWF0Y2guXG4gKi9cblxuZnVuY3Rpb24gYXNzZXJ0QXRvbUZhbWlseShub2RlLCBmYW1pbHkpIHtcbiAgdmFyIHR5cGVkTm9kZSA9IGNoZWNrQXRvbUZhbWlseShub2RlLCBmYW1pbHkpO1xuXG4gIGlmICghdHlwZWROb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbm9kZSBvZiB0eXBlIFxcXCJhdG9tXFxcIiBhbmQgZmFtaWx5IFxcXCJcIiArIGZhbWlseSArIFwiXFxcIiwgYnV0IGdvdCBcIiArIChub2RlID8gbm9kZS50eXBlID09PSBcImF0b21cIiA/IFwiYXRvbSBvZiBmYW1pbHkgXCIgKyBub2RlLmZhbWlseSA6IFwibm9kZSBvZiB0eXBlIFwiICsgbm9kZS50eXBlIDogU3RyaW5nKG5vZGUpKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZWROb2RlO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBub2RlIG1vcmUgc3RyaWN0bHkgdHlwZWQgaWZmIGl0IGlzIG9mIHRoZSBnaXZlbiB0eXBlLiBPdGhlcndpc2UsXG4gKiByZXR1cm5zIG51bGwuXG4gKi9cblxuZnVuY3Rpb24gY2hlY2tBdG9tRmFtaWx5KG5vZGUsIGZhbWlseSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLnR5cGUgPT09IFwiYXRvbVwiICYmIG5vZGUuZmFtaWx5ID09PSBmYW1pbHkgPyBub2RlIDogbnVsbDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbm9kZSBtb3JlIHN0cmljdGx5IHR5cGVkIGlmZiBpdCBpcyBvZiB0aGUgZ2l2ZW4gdHlwZS4gT3RoZXJ3aXNlLFxuICogcmV0dXJucyBudWxsLlxuICovXG5cbmZ1bmN0aW9uIGFzc2VydFN5bWJvbE5vZGVUeXBlKG5vZGUpIHtcbiAgdmFyIHR5cGVkTm9kZSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUobm9kZSk7XG5cbiAgaWYgKCF0eXBlZE5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub2RlIG9mIHN5bWJvbCBncm91cCB0eXBlLCBidXQgZ290IFwiICsgKG5vZGUgPyBcIm5vZGUgb2YgdHlwZSBcIiArIG5vZGUudHlwZSA6IFN0cmluZyhub2RlKSkpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVkTm9kZTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbm9kZSBtb3JlIHN0cmljdGx5IHR5cGVkIGlmZiBpdCBpcyBvZiB0aGUgZ2l2ZW4gdHlwZS4gT3RoZXJ3aXNlLFxuICogcmV0dXJucyBudWxsLlxuICovXG5cbmZ1bmN0aW9uIGNoZWNrU3ltYm9sTm9kZVR5cGUobm9kZSkge1xuICBpZiAobm9kZSAmJiAobm9kZS50eXBlID09PSBcImF0b21cIiB8fCBOT05fQVRPTVMuaGFzT3duUHJvcGVydHkobm9kZS50eXBlKSkpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3NwYWNpbmdEYXRhLmpzXG4vKipcbiAqIERlc2NyaWJlcyBzcGFjZXMgYmV0d2VlbiBkaWZmZXJlbnQgY2xhc3NlcyBvZiBhdG9tcy5cbiAqL1xudmFyIHRoaW5zcGFjZSA9IHtcbiAgbnVtYmVyOiAzLFxuICB1bml0OiBcIm11XCJcbn07XG52YXIgbWVkaXVtc3BhY2UgPSB7XG4gIG51bWJlcjogNCxcbiAgdW5pdDogXCJtdVwiXG59O1xudmFyIHRoaWNrc3BhY2UgPSB7XG4gIG51bWJlcjogNSxcbiAgdW5pdDogXCJtdVwiXG59OyAvLyBNYWtpbmcgdGhlIHR5cGUgYmVsb3cgZXhhY3Qgd2l0aCBhbGwgb3B0aW9uYWwgZmllbGRzIGRvZXNuJ3Qgd29yayBkdWUgdG9cbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzQ1ODJcbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzU2ODhcbi8vIEhvd2V2ZXIsIHNpbmNlICphbGwqIGZpZWxkcyBhcmUgb3B0aW9uYWwsICRTaGFwZTw+IHdvcmtzIGFzIHN1Z2dlc3RlZCBpbiA1Njg4XG4vLyBhYm92ZS5cblxuLy8gU3BhY2luZyByZWxhdGlvbnNoaXBzIGZvciBkaXNwbGF5IGFuZCB0ZXh0IHN0eWxlc1xudmFyIHNwYWNpbmdzID0ge1xuICBtb3JkOiB7XG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbWJpbjogbWVkaXVtc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICB9LFxuICBtb3A6IHtcbiAgICBtb3JkOiB0aGluc3BhY2UsXG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICB9LFxuICBtYmluOiB7XG4gICAgbW9yZDogbWVkaXVtc3BhY2UsXG4gICAgbW9wOiBtZWRpdW1zcGFjZSxcbiAgICBtb3BlbjogbWVkaXVtc3BhY2UsXG4gICAgbWlubmVyOiBtZWRpdW1zcGFjZVxuICB9LFxuICBtcmVsOiB7XG4gICAgbW9yZDogdGhpY2tzcGFjZSxcbiAgICBtb3A6IHRoaWNrc3BhY2UsXG4gICAgbW9wZW46IHRoaWNrc3BhY2UsXG4gICAgbWlubmVyOiB0aGlja3NwYWNlXG4gIH0sXG4gIG1vcGVuOiB7fSxcbiAgbWNsb3NlOiB7XG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbWJpbjogbWVkaXVtc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICB9LFxuICBtcHVuY3Q6IHtcbiAgICBtb3JkOiB0aGluc3BhY2UsXG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtb3BlbjogdGhpbnNwYWNlLFxuICAgIG1jbG9zZTogdGhpbnNwYWNlLFxuICAgIG1wdW5jdDogdGhpbnNwYWNlLFxuICAgIG1pbm5lcjogdGhpbnNwYWNlXG4gIH0sXG4gIG1pbm5lcjoge1xuICAgIG1vcmQ6IHRoaW5zcGFjZSxcbiAgICBtb3A6IHRoaW5zcGFjZSxcbiAgICBtYmluOiBtZWRpdW1zcGFjZSxcbiAgICBtcmVsOiB0aGlja3NwYWNlLFxuICAgIG1vcGVuOiB0aGluc3BhY2UsXG4gICAgbXB1bmN0OiB0aGluc3BhY2UsXG4gICAgbWlubmVyOiB0aGluc3BhY2VcbiAgfVxufTsgLy8gU3BhY2luZyByZWxhdGlvbnNoaXBzIGZvciBzY3JpcHQgYW5kIHNjcmlwdHNjcmlwdCBzdHlsZXNcblxudmFyIHRpZ2h0U3BhY2luZ3MgPSB7XG4gIG1vcmQ6IHtcbiAgICBtb3A6IHRoaW5zcGFjZVxuICB9LFxuICBtb3A6IHtcbiAgICBtb3JkOiB0aGluc3BhY2UsXG4gICAgbW9wOiB0aGluc3BhY2VcbiAgfSxcbiAgbWJpbjoge30sXG4gIG1yZWw6IHt9LFxuICBtb3Blbjoge30sXG4gIG1jbG9zZToge1xuICAgIG1vcDogdGhpbnNwYWNlXG4gIH0sXG4gIG1wdW5jdDoge30sXG4gIG1pbm5lcjoge1xuICAgIG1vcDogdGhpbnNwYWNlXG4gIH1cbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9kZWZpbmVGdW5jdGlvbi5qc1xuXG5cbi8qKlxuICogQWxsIHJlZ2lzdGVyZWQgZnVuY3Rpb25zLlxuICogYGZ1bmN0aW9ucy5qc2AganVzdCBleHBvcnRzIHRoaXMgc2FtZSBkaWN0aW9uYXJ5IGFnYWluIGFuZCBtYWtlcyBpdCBwdWJsaWMuXG4gKiBgUGFyc2VyLmpzYCByZXF1aXJlcyB0aGlzIGRpY3Rpb25hcnkuXG4gKi9cbnZhciBfZnVuY3Rpb25zID0ge307XG4vKipcbiAqIEFsbCBIVE1MIGJ1aWxkZXJzLiBTaG91bGQgYmUgb25seSB1c2VkIGluIHRoZSBgZGVmaW5lKmAgYW5kIHRoZSBgYnVpbGQqTUxgXG4gKiBmdW5jdGlvbnMuXG4gKi9cblxudmFyIF9odG1sR3JvdXBCdWlsZGVycyA9IHt9O1xuLyoqXG4gKiBBbGwgTWF0aE1MIGJ1aWxkZXJzLiBTaG91bGQgYmUgb25seSB1c2VkIGluIHRoZSBgZGVmaW5lKmAgYW5kIHRoZSBgYnVpbGQqTUxgXG4gKiBmdW5jdGlvbnMuXG4gKi9cblxudmFyIF9tYXRobWxHcm91cEJ1aWxkZXJzID0ge307XG5mdW5jdGlvbiBkZWZpbmVGdW5jdGlvbihfcmVmKSB7XG4gIHZhciB0eXBlID0gX3JlZi50eXBlLFxuICAgICAgbmFtZXMgPSBfcmVmLm5hbWVzLFxuICAgICAgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgaGFuZGxlciA9IF9yZWYuaGFuZGxlcixcbiAgICAgIGh0bWxCdWlsZGVyID0gX3JlZi5odG1sQnVpbGRlcixcbiAgICAgIG1hdGhtbEJ1aWxkZXIgPSBfcmVmLm1hdGhtbEJ1aWxkZXI7XG4gIC8vIFNldCBkZWZhdWx0IHZhbHVlcyBvZiBmdW5jdGlvbnNcbiAgdmFyIGRhdGEgPSB7XG4gICAgdHlwZTogdHlwZSxcbiAgICBudW1BcmdzOiBwcm9wcy5udW1BcmdzLFxuICAgIGFyZ1R5cGVzOiBwcm9wcy5hcmdUeXBlcyxcbiAgICBncmVlZGluZXNzOiBwcm9wcy5ncmVlZGluZXNzID09PSB1bmRlZmluZWQgPyAxIDogcHJvcHMuZ3JlZWRpbmVzcyxcbiAgICBhbGxvd2VkSW5UZXh0OiAhIXByb3BzLmFsbG93ZWRJblRleHQsXG4gICAgYWxsb3dlZEluTWF0aDogcHJvcHMuYWxsb3dlZEluTWF0aCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHByb3BzLmFsbG93ZWRJbk1hdGgsXG4gICAgbnVtT3B0aW9uYWxBcmdzOiBwcm9wcy5udW1PcHRpb25hbEFyZ3MgfHwgMCxcbiAgICBpbmZpeDogISFwcm9wcy5pbmZpeCxcbiAgICBoYW5kbGVyOiBoYW5kbGVyXG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuICAgIF9mdW5jdGlvbnNbbmFtZXNbaV1dID0gZGF0YTtcbiAgfVxuXG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKGh0bWxCdWlsZGVyKSB7XG4gICAgICBfaHRtbEdyb3VwQnVpbGRlcnNbdHlwZV0gPSBodG1sQnVpbGRlcjtcbiAgICB9XG5cbiAgICBpZiAobWF0aG1sQnVpbGRlcikge1xuICAgICAgX21hdGhtbEdyb3VwQnVpbGRlcnNbdHlwZV0gPSBtYXRobWxCdWlsZGVyO1xuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBVc2UgdGhpcyB0byByZWdpc3RlciBvbmx5IHRoZSBIVE1MIGFuZCBNYXRoTUwgYnVpbGRlcnMgZm9yIGEgZnVuY3Rpb24gKGUuZy5cbiAqIGlmIHRoZSBmdW5jdGlvbidzIFBhcnNlTm9kZSBpcyBnZW5lcmF0ZWQgaW4gUGFyc2VyLmpzIHJhdGhlciB0aGFuIHZpYSBhXG4gKiBzdGFuZC1hbG9uZSBoYW5kbGVyIHByb3ZpZGVkIHRvIGBkZWZpbmVGdW5jdGlvbmApLlxuICovXG5cbmZ1bmN0aW9uIGRlZmluZUZ1bmN0aW9uQnVpbGRlcnMoX3JlZjIpIHtcbiAgdmFyIHR5cGUgPSBfcmVmMi50eXBlLFxuICAgICAgaHRtbEJ1aWxkZXIgPSBfcmVmMi5odG1sQnVpbGRlcixcbiAgICAgIG1hdGhtbEJ1aWxkZXIgPSBfcmVmMi5tYXRobWxCdWlsZGVyO1xuICBkZWZpbmVGdW5jdGlvbih7XG4gICAgdHlwZTogdHlwZSxcbiAgICBuYW1lczogW10sXG4gICAgcHJvcHM6IHtcbiAgICAgIG51bUFyZ3M6IDBcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBuZXZlciBiZSBjYWxsZWQuJyk7XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxuICB9KTtcbn0gLy8gU2luY2UgdGhlIGNvcnJlc3BvbmRpbmcgYnVpbGRIVE1ML2J1aWxkTWF0aE1MIGZ1bmN0aW9uIGV4cGVjdHMgYVxuLy8gbGlzdCBvZiBlbGVtZW50cywgd2Ugbm9ybWFsaXplIGZvciBkaWZmZXJlbnQga2luZHMgb2YgYXJndW1lbnRzXG5cbnZhciBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudCA9IGZ1bmN0aW9uIG9yZGFyZ3VtZW50KGFyZykge1xuICB2YXIgbm9kZSA9IGNoZWNrTm9kZVR5cGUoYXJnLCBcIm9yZGdyb3VwXCIpO1xuICByZXR1cm4gbm9kZSA/IG5vZGUuYm9keSA6IFthcmddO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2J1aWxkSFRNTC5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgZG9lcyB0aGUgbWFpbiB3b3JrIG9mIGJ1aWxkaW5nIGEgZG9tVHJlZSBzdHJ1Y3R1cmUgZnJvbSBhIHBhcnNlXG4gKiB0cmVlLiBUaGUgZW50cnkgcG9pbnQgaXMgdGhlIGBidWlsZEhUTUxgIGZ1bmN0aW9uLCB3aGljaCB0YWtlcyBhIHBhcnNlIHRyZWUuXG4gKiBUaGVuLCB0aGUgYnVpbGRFeHByZXNzaW9uLCBidWlsZEdyb3VwLCBhbmQgdmFyaW91cyBncm91cEJ1aWxkZXJzIGZ1bmN0aW9uc1xuICogYXJlIGNhbGxlZCwgdG8gcHJvZHVjZSBhIGZpbmFsIEhUTUwgdHJlZS5cbiAqL1xuXG5cblxuXG5cblxuXG5cblxudmFyIGJ1aWxkSFRNTF9tYWtlU3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuOyAvLyBCaW5hcnkgYXRvbXMgKGZpcnN0IGNsYXNzIGBtYmluYCkgY2hhbmdlIGludG8gb3JkaW5hcnkgYXRvbXMgKGBtb3JkYClcbi8vIGRlcGVuZGluZyBvbiB0aGVpciBzdXJyb3VuZGluZ3MuIFNlZSBUZVhib29rIHBnLiA0NDItNDQ2LCBSdWxlcyA1IGFuZCA2LFxuLy8gYW5kIHRoZSB0ZXh0IGJlZm9yZSBSdWxlIDE5LlxuXG52YXIgYmluTGVmdENhbmNlbGxlciA9IFtcImxlZnRtb3N0XCIsIFwibWJpblwiLCBcIm1vcGVuXCIsIFwibXJlbFwiLCBcIm1vcFwiLCBcIm1wdW5jdFwiXTtcbnZhciBiaW5SaWdodENhbmNlbGxlciA9IFtcInJpZ2h0bW9zdFwiLCBcIm1yZWxcIiwgXCJtY2xvc2VcIiwgXCJtcHVuY3RcIl07XG52YXIgc3R5bGVNYXAgPSB7XG4gIFwiZGlzcGxheVwiOiBzcmNfU3R5bGUuRElTUExBWSxcbiAgXCJ0ZXh0XCI6IHNyY19TdHlsZS5URVhULFxuICBcInNjcmlwdFwiOiBzcmNfU3R5bGUuU0NSSVBULFxuICBcInNjcmlwdHNjcmlwdFwiOiBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUXG59O1xudmFyIERvbUVudW0gPSB7XG4gIG1vcmQ6IFwibW9yZFwiLFxuICBtb3A6IFwibW9wXCIsXG4gIG1iaW46IFwibWJpblwiLFxuICBtcmVsOiBcIm1yZWxcIixcbiAgbW9wZW46IFwibW9wZW5cIixcbiAgbWNsb3NlOiBcIm1jbG9zZVwiLFxuICBtcHVuY3Q6IFwibXB1bmN0XCIsXG4gIG1pbm5lcjogXCJtaW5uZXJcIlxufTtcblxuLyoqXG4gKiBUYWtlIGEgbGlzdCBvZiBub2RlcywgYnVpbGQgdGhlbSBpbiBvcmRlciwgYW5kIHJldHVybiBhIGxpc3Qgb2YgdGhlIGJ1aWx0XG4gKiBub2Rlcy4gZG9jdW1lbnRGcmFnbWVudHMgYXJlIGZsYXR0ZW5lZCBpbnRvIHRoZWlyIGNvbnRlbnRzLCBzbyB0aGVcbiAqIHJldHVybmVkIGxpc3QgY29udGFpbnMgbm8gZnJhZ21lbnRzLiBgaXNSZWFsR3JvdXBgIGlzIHRydWUgaWYgYGV4cHJlc3Npb25gXG4gKiBpcyBhIHJlYWwgZ3JvdXAgKG5vIGF0b21zIHdpbGwgYmUgYWRkZWQgb24gZWl0aGVyIHNpZGUpLCBhcyBvcHBvc2VkIHRvXG4gKiBhIHBhcnRpYWwgZ3JvdXAgKGUuZy4gb25lIGNyZWF0ZWQgYnkgXFxjb2xvcikuIGBzdXJyb3VuZGluZ2AgaXMgYW4gYXJyYXlcbiAqIGNvbnNpc3RpbmcgdHlwZSBvZiBub2RlcyB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxlZnQgYW5kIHJpZ2h0LlxuICovXG52YXIgYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIGJ1aWxkRXhwcmVzc2lvbihleHByZXNzaW9uLCBvcHRpb25zLCBpc1JlYWxHcm91cCwgc3Vycm91bmRpbmcpIHtcbiAgaWYgKHN1cnJvdW5kaW5nID09PSB2b2lkIDApIHtcbiAgICBzdXJyb3VuZGluZyA9IFtudWxsLCBudWxsXTtcbiAgfVxuXG4gIC8vIFBhcnNlIGV4cHJlc3Npb25zIGludG8gYGdyb3Vwc2AuXG4gIHZhciBncm91cHMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb24ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb3V0cHV0ID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZXhwcmVzc2lvbltpXSwgb3B0aW9ucyk7XG5cbiAgICBpZiAob3V0cHV0IGluc3RhbmNlb2YgdHJlZV9Eb2N1bWVudEZyYWdtZW50KSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBvdXRwdXQuY2hpbGRyZW47XG4gICAgICBncm91cHMucHVzaC5hcHBseShncm91cHMsIGNoaWxkcmVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBzLnB1c2gob3V0cHV0KTtcbiAgICB9XG4gIH0gLy8gSWYgYGV4cHJlc3Npb25gIGlzIGEgcGFydGlhbCBncm91cCwgbGV0IHRoZSBwYXJlbnQgaGFuZGxlIHNwYWNpbmdzXG4gIC8vIHRvIGF2b2lkIHByb2Nlc3NpbmcgZ3JvdXBzIG11bHRpcGxlIHRpbWVzLlxuXG5cbiAgaWYgKCFpc1JlYWxHcm91cCkge1xuICAgIHJldHVybiBncm91cHM7XG4gIH1cblxuICB2YXIgZ2x1ZU9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIGlmIChleHByZXNzaW9uLmxlbmd0aCA9PT0gMSkge1xuICAgIHZhciBub2RlID0gY2hlY2tOb2RlVHlwZShleHByZXNzaW9uWzBdLCBcInNpemluZ1wiKSB8fCBjaGVja05vZGVUeXBlKGV4cHJlc3Npb25bMF0sIFwic3R5bGluZ1wiKTtcblxuICAgIGlmICghbm9kZSkgey8vIE5vIG1hdGNoLlxuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBcInNpemluZ1wiKSB7XG4gICAgICBnbHVlT3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU2l6ZShub2RlLnNpemUpO1xuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBcInN0eWxpbmdcIikge1xuICAgICAgZ2x1ZU9wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlTWFwW25vZGUuc3R5bGVdKTtcbiAgICB9XG4gIH0gLy8gRHVtbXkgc3BhbnMgZm9yIGRldGVybWluaW5nIHNwYWNpbmdzIGJldHdlZW4gc3Vycm91bmRpbmcgYXRvbXMuXG4gIC8vIElmIGBleHByZXNzaW9uYCBoYXMgbm8gYXRvbXMgb24gdGhlIGxlZnQgb3IgcmlnaHQsIGNsYXNzIFwibGVmdG1vc3RcIlxuICAvLyBvciBcInJpZ2h0bW9zdFwiLCByZXNwZWN0aXZlbHksIGlzIHVzZWQgdG8gaW5kaWNhdGUgaXQuXG5cblxuICB2YXIgZHVtbXlQcmV2ID0gYnVpbGRIVE1MX21ha2VTcGFuKFtzdXJyb3VuZGluZ1swXSB8fCBcImxlZnRtb3N0XCJdLCBbXSwgb3B0aW9ucyk7XG4gIHZhciBkdW1teU5leHQgPSBidWlsZEhUTUxfbWFrZVNwYW4oW3N1cnJvdW5kaW5nWzFdIHx8IFwicmlnaHRtb3N0XCJdLCBbXSwgb3B0aW9ucyk7IC8vIFRPRE86IFRoZXNlIGNvZGUgYXNzdW1lcyB0aGF0IGEgbm9kZSdzIG1hdGggY2xhc3MgaXMgdGhlIGZpcnN0IGVsZW1lbnRcbiAgLy8gb2YgaXRzIGBjbGFzc2VzYCBhcnJheS4gQSBsYXRlciBjbGVhbnVwIHNob3VsZCBlbnN1cmUgdGhpcywgZm9yXG4gIC8vIGluc3RhbmNlIGJ5IGNoYW5naW5nIHRoZSBzaWduYXR1cmUgb2YgYG1ha2VTcGFuYC5cbiAgLy8gQmVmb3JlIGRldGVybWluaW5nIHdoYXQgc3BhY2VzIHRvIGluc2VydCwgcGVyZm9ybSBiaW4gY2FuY2VsbGF0aW9uLlxuICAvLyBCaW5hcnkgb3BlcmF0b3JzIGNoYW5nZSB0byBvcmRpbmFyeSBzeW1ib2xzIGluIHNvbWUgY29udGV4dHMuXG5cbiAgdHJhdmVyc2VOb25TcGFjZU5vZGVzKGdyb3VwcywgZnVuY3Rpb24gKG5vZGUsIHByZXYpIHtcbiAgICB2YXIgcHJldlR5cGUgPSBwcmV2LmNsYXNzZXNbMF07XG4gICAgdmFyIHR5cGUgPSBub2RlLmNsYXNzZXNbMF07XG5cbiAgICBpZiAocHJldlR5cGUgPT09IFwibWJpblwiICYmIHV0aWxzLmNvbnRhaW5zKGJpblJpZ2h0Q2FuY2VsbGVyLCB0eXBlKSkge1xuICAgICAgcHJldi5jbGFzc2VzWzBdID0gXCJtb3JkXCI7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBcIm1iaW5cIiAmJiB1dGlscy5jb250YWlucyhiaW5MZWZ0Q2FuY2VsbGVyLCBwcmV2VHlwZSkpIHtcbiAgICAgIG5vZGUuY2xhc3Nlc1swXSA9IFwibW9yZFwiO1xuICAgIH1cbiAgfSwge1xuICAgIG5vZGU6IGR1bW15UHJldlxuICB9LCBkdW1teU5leHQpO1xuICB0cmF2ZXJzZU5vblNwYWNlTm9kZXMoZ3JvdXBzLCBmdW5jdGlvbiAobm9kZSwgcHJldikge1xuICAgIHZhciBwcmV2VHlwZSA9IGdldFR5cGVPZkRvbVRyZWUocHJldik7XG4gICAgdmFyIHR5cGUgPSBnZXRUeXBlT2ZEb21UcmVlKG5vZGUpOyAvLyAnbXRpZ2h0JyBpbmRpY2F0ZXMgdGhhdCB0aGUgbm9kZSBpcyBzY3JpcHQgb3Igc2NyaXB0c2NyaXB0IHN0eWxlLlxuXG4gICAgdmFyIHNwYWNlID0gcHJldlR5cGUgJiYgdHlwZSA/IG5vZGUuaGFzQ2xhc3MoXCJtdGlnaHRcIikgPyB0aWdodFNwYWNpbmdzW3ByZXZUeXBlXVt0eXBlXSA6IHNwYWNpbmdzW3ByZXZUeXBlXVt0eXBlXSA6IG51bGw7XG5cbiAgICBpZiAoc3BhY2UpIHtcbiAgICAgIC8vIEluc2VydCBnbHVlIChzcGFjaW5nKSBhZnRlciB0aGUgYHByZXZgLlxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VHbHVlKHNwYWNlLCBnbHVlT3B0aW9ucyk7XG4gICAgfVxuICB9LCB7XG4gICAgbm9kZTogZHVtbXlQcmV2XG4gIH0sIGR1bW15TmV4dCk7XG4gIHJldHVybiBncm91cHM7XG59OyAvLyBEZXB0aC1maXJzdCB0cmF2ZXJzZSBub24tc3BhY2UgYG5vZGVzYCwgY2FsbGluZyBgY2FsbGJhY2tgIHdpdGggdGhlIGN1cnJlbnQgYW5kXG4vLyBwcmV2aW91cyBub2RlIGFzIGFyZ3VtZW50cywgb3B0aW9uYWxseSByZXR1cm5pbmcgYSBub2RlIHRvIGluc2VydCBhZnRlciB0aGVcbi8vIHByZXZpb3VzIG5vZGUuIGBwcmV2YCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgcHJldmlvdXMgbm9kZSBhbmQgYGluc2VydEFmdGVyYFxuLy8gZnVuY3Rpb24gdG8gaW5zZXJ0IGFmdGVyIGl0LiBgbmV4dGAgaXMgYSBub2RlIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgcmlnaHQuXG4vLyBVc2VkIGZvciBiaW4gY2FuY2VsbGF0aW9uIGFuZCBpbnNlcnRpbmcgc3BhY2luZ3MuXG5cbnZhciB0cmF2ZXJzZU5vblNwYWNlTm9kZXMgPSBmdW5jdGlvbiB0cmF2ZXJzZU5vblNwYWNlTm9kZXMobm9kZXMsIGNhbGxiYWNrLCBwcmV2LCBuZXh0KSB7XG4gIGlmIChuZXh0KSB7XG4gICAgLy8gdGVtcG9yYXJpbHkgYXBwZW5kIHRoZSByaWdodCBub2RlLCBpZiBleGlzdHNcbiAgICBub2Rlcy5wdXNoKG5leHQpO1xuICB9XG5cbiAgdmFyIGkgPSAwO1xuXG4gIGZvciAoOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgIHZhciBwYXJ0aWFsR3JvdXAgPSBidWlsZEhUTUxfY2hlY2tQYXJ0aWFsR3JvdXAobm9kZSk7XG5cbiAgICBpZiAocGFydGlhbEdyb3VwKSB7XG4gICAgICAvLyBSZWN1cnNpdmUgREZTXG4gICAgICAvLyAkRmxvd0ZpeE1lOiBtYWtlIG5vZGVzIGEgJFJlYWRPbmx5QXJyYXkgYnkgcmV0dXJuaW5nIGEgbmV3IGFycmF5XG4gICAgICB0cmF2ZXJzZU5vblNwYWNlTm9kZXMocGFydGlhbEdyb3VwLmNoaWxkcmVuLCBjYWxsYmFjaywgcHJldik7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIElnbm9yZSBleHBsaWNpdCBzcGFjZXMgKGUuZy4sIFxcOywgXFwsKSB3aGVuIGRldGVybWluaW5nIHdoYXQgaW1wbGljaXRcbiAgICAvLyBzcGFjaW5nIHNob3VsZCBnbyBiZXR3ZWVuIGF0b21zIG9mIGRpZmZlcmVudCBjbGFzc2VzXG5cblxuICAgIGlmIChub2RlLmNsYXNzZXNbMF0gPT09IFwibXNwYWNlXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciByZXN1bHQgPSBjYWxsYmFjayhub2RlLCBwcmV2Lm5vZGUpO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgaWYgKHByZXYuaW5zZXJ0QWZ0ZXIpIHtcbiAgICAgICAgcHJldi5pbnNlcnRBZnRlcihyZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gaW5zZXJ0IGF0IGZyb250XG4gICAgICAgIG5vZGVzLnVuc2hpZnQocmVzdWx0KTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByZXYubm9kZSA9IG5vZGU7XG5cbiAgICBwcmV2Lmluc2VydEFmdGVyID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgbm9kZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgbik7XG4gICAgICAgIGkrKztcbiAgICAgIH07XG4gICAgfShpKTtcbiAgfVxuXG4gIGlmIChuZXh0KSB7XG4gICAgbm9kZXMucG9wKCk7XG4gIH1cbn07IC8vIENoZWNrIGlmIGdpdmVuIG5vZGUgaXMgYSBwYXJ0aWFsIGdyb3VwLCBpLmUuLCBkb2VzIG5vdCBhZmZlY3Qgc3BhY2luZyBhcm91bmQuXG5cblxudmFyIGJ1aWxkSFRNTF9jaGVja1BhcnRpYWxHcm91cCA9IGZ1bmN0aW9uIGNoZWNrUGFydGlhbEdyb3VwKG5vZGUpIHtcbiAgaWYgKG5vZGUgaW5zdGFuY2VvZiB0cmVlX0RvY3VtZW50RnJhZ21lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIGRvbVRyZWVfQW5jaG9yKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07IC8vIFJldHVybiB0aGUgb3V0ZXJtb3N0IG5vZGUgb2YgYSBkb21UcmVlLlxuXG5cbnZhciBnZXRPdXRlcm1vc3ROb2RlID0gZnVuY3Rpb24gZ2V0T3V0ZXJtb3N0Tm9kZShub2RlLCBzaWRlKSB7XG4gIHZhciBwYXJ0aWFsR3JvdXAgPSBidWlsZEhUTUxfY2hlY2tQYXJ0aWFsR3JvdXAobm9kZSk7XG5cbiAgaWYgKHBhcnRpYWxHcm91cCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHBhcnRpYWxHcm91cC5jaGlsZHJlbjtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGlmIChzaWRlID09PSBcInJpZ2h0XCIpIHtcbiAgICAgICAgcmV0dXJuIGdldE91dGVybW9zdE5vZGUoY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0sIFwicmlnaHRcIik7XG4gICAgICB9IGVsc2UgaWYgKHNpZGUgPT09IFwibGVmdFwiKSB7XG4gICAgICAgIHJldHVybiBnZXRPdXRlcm1vc3ROb2RlKGNoaWxkcmVuWzBdLCBcImxlZnRcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59OyAvLyBSZXR1cm4gbWF0aCBhdG9tIGNsYXNzIChtY2xhc3MpIG9mIGEgZG9tVHJlZS5cbi8vIElmIGBzaWRlYCBpcyBnaXZlbiwgaXQgd2lsbCBnZXQgdGhlIHR5cGUgb2YgdGhlIG91dGVybW9zdCBub2RlIGF0IGdpdmVuIHNpZGUuXG5cblxudmFyIGdldFR5cGVPZkRvbVRyZWUgPSBmdW5jdGlvbiBnZXRUeXBlT2ZEb21UcmVlKG5vZGUsIHNpZGUpIHtcbiAgaWYgKCFub2RlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoc2lkZSkge1xuICAgIG5vZGUgPSBnZXRPdXRlcm1vc3ROb2RlKG5vZGUsIHNpZGUpO1xuICB9IC8vIFRoaXMgbWFrZXMgYSBsb3Qgb2YgYXNzdW1wdGlvbnMgYXMgdG8gd2hlcmUgdGhlIHR5cGUgb2YgYXRvbVxuICAvLyBhcHBlYXJzLiAgV2Ugc2hvdWxkIGRvIGEgYmV0dGVyIGpvYiBvZiBlbmZvcmNpbmcgdGhpcy5cblxuXG4gIHJldHVybiBEb21FbnVtW25vZGUuY2xhc3Nlc1swXV0gfHwgbnVsbDtcbn07XG52YXIgbWFrZU51bGxEZWxpbWl0ZXIgPSBmdW5jdGlvbiBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBjbGFzc2VzKSB7XG4gIHZhciBtb3JlQ2xhc3NlcyA9IFtcIm51bGxkZWxpbWl0ZXJcIl0uY29uY2F0KG9wdGlvbnMuYmFzZVNpemluZ0NsYXNzZXMoKSk7XG4gIHJldHVybiBidWlsZEhUTUxfbWFrZVNwYW4oY2xhc3Nlcy5jb25jYXQobW9yZUNsYXNzZXMpKTtcbn07XG4vKipcbiAqIGJ1aWxkR3JvdXAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBncm91cCBhbmQgY2FsbHMgdGhlIGNvcnJlY3QgZ3JvdXBUeXBlXG4gKiBmdW5jdGlvbiBmb3IgaXQuIEl0IGFsc28gaGFuZGxlcyB0aGUgaW50ZXJhY3Rpb24gb2Ygc2l6ZSBhbmQgc3R5bGUgY2hhbmdlc1xuICogYmV0d2VlbiBwYXJlbnRzIGFuZCBjaGlsZHJlbi5cbiAqL1xuXG52YXIgYnVpbGRIVE1MX2J1aWxkR3JvdXAgPSBmdW5jdGlvbiBidWlsZEdyb3VwKGdyb3VwLCBvcHRpb25zLCBiYXNlT3B0aW9ucykge1xuICBpZiAoIWdyb3VwKSB7XG4gICAgcmV0dXJuIGJ1aWxkSFRNTF9tYWtlU3BhbigpO1xuICB9XG5cbiAgaWYgKF9odG1sR3JvdXBCdWlsZGVyc1tncm91cC50eXBlXSkge1xuICAgIC8vIENhbGwgdGhlIGdyb3VwQnVpbGRlcnMgZnVuY3Rpb25cbiAgICB2YXIgZ3JvdXBOb2RlID0gX2h0bWxHcm91cEJ1aWxkZXJzW2dyb3VwLnR5cGVdKGdyb3VwLCBvcHRpb25zKTsgLy8gSWYgdGhlIHNpemUgY2hhbmdlZCBiZXR3ZWVuIHRoZSBwYXJlbnQgYW5kIHRoZSBjdXJyZW50IGdyb3VwLCBhY2NvdW50XG4gICAgLy8gZm9yIHRoYXQgc2l6ZSBkaWZmZXJlbmNlLlxuXG4gICAgaWYgKGJhc2VPcHRpb25zICYmIG9wdGlvbnMuc2l6ZSAhPT0gYmFzZU9wdGlvbnMuc2l6ZSkge1xuICAgICAgZ3JvdXBOb2RlID0gYnVpbGRIVE1MX21ha2VTcGFuKG9wdGlvbnMuc2l6aW5nQ2xhc3NlcyhiYXNlT3B0aW9ucyksIFtncm91cE5vZGVdLCBvcHRpb25zKTtcbiAgICAgIHZhciBtdWx0aXBsaWVyID0gb3B0aW9ucy5zaXplTXVsdGlwbGllciAvIGJhc2VPcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgICAgZ3JvdXBOb2RlLmhlaWdodCAqPSBtdWx0aXBsaWVyO1xuICAgICAgZ3JvdXBOb2RlLmRlcHRoICo9IG11bHRpcGxpZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwTm9kZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJHb3QgZ3JvdXAgb2YgdW5rbm93biB0eXBlOiAnXCIgKyBncm91cC50eXBlICsgXCInXCIpO1xuICB9XG59O1xuLyoqXG4gKiBDb21iaW5lIGFuIGFycmF5IG9mIEhUTUwgRE9NIG5vZGVzIChlLmcuLCB0aGUgb3V0cHV0IG9mIGBidWlsZEV4cHJlc3Npb25gKVxuICogaW50byBhbiB1bmJyZWFrYWJsZSBIVE1MIG5vZGUgb2YgY2xhc3MgLmJhc2UsIHdpdGggcHJvcGVyIHN0cnV0cyB0b1xuICogZ3VhcmFudGVlIGNvcnJlY3QgdmVydGljYWwgZXh0ZW50LiAgYGJ1aWxkSFRNTGAgY2FsbHMgdGhpcyByZXBlYXRlZGx5IHRvXG4gKiBtYWtlIHVwIHRoZSBlbnRpcmUgZXhwcmVzc2lvbiBhcyBhIHNlcXVlbmNlIG9mIHVuYnJlYWthYmxlIHVuaXRzLlxuICovXG5cbmZ1bmN0aW9uIGJ1aWxkSFRNTFVuYnJlYWthYmxlKGNoaWxkcmVuLCBvcHRpb25zKSB7XG4gIC8vIENvbXB1dGUgaGVpZ2h0IGFuZCBkZXB0aCBvZiB0aGlzIGNodW5rLlxuICB2YXIgYm9keSA9IGJ1aWxkSFRNTF9tYWtlU3BhbihbXCJiYXNlXCJdLCBjaGlsZHJlbiwgb3B0aW9ucyk7IC8vIEFkZCBzdHJ1dCwgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSB0b3Agb2YgdGhlIEhUTUwgZWxlbWVudCBmYWxscyBhdFxuICAvLyB0aGUgaGVpZ2h0IG9mIHRoZSBleHByZXNzaW9uLCBhbmQgdGhlIGJvdHRvbSBvZiB0aGUgSFRNTCBlbGVtZW50XG4gIC8vIGZhbGxzIGF0IHRoZSBkZXB0aCBvZiB0aGUgZXhwcmVzc2lvbi5cbiAgLy8gV2UgdXNlZCB0byBoYXZlIHNlcGFyYXRlIHRvcCBhbmQgYm90dG9tIHN0cnV0cywgd2hlcmUgdGhlIGJvdHRvbSBzdHJ1dFxuICAvLyB3b3VsZCBsaWtlIHRvIHVzZSBgdmVydGljYWwtYWxpZ246IHRvcGAsIGJ1dCBpbiBJRSA5IHRoaXMgbG93ZXJzIHRoZVxuICAvLyBiYXNlbGluZSBvZiB0aGUgYm94IHRvIHRoZSBib3R0b20gb2YgdGhpcyBzdHJ1dCAoaW5zdGVhZCBvZiBzdGF5aW5nIGluXG4gIC8vIHRoZSBub3JtYWwgcGxhY2UpIHNvIHdlIHVzZSBhbiBhYnNvbHV0ZSB2YWx1ZSBmb3IgdmVydGljYWwtYWxpZ24gaW5zdGVhZC5cblxuICB2YXIgc3RydXQgPSBidWlsZEhUTUxfbWFrZVNwYW4oW1wic3RydXRcIl0pO1xuICBzdHJ1dC5zdHlsZS5oZWlnaHQgPSBib2R5LmhlaWdodCArIGJvZHkuZGVwdGggKyBcImVtXCI7XG4gIHN0cnV0LnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAtYm9keS5kZXB0aCArIFwiZW1cIjtcbiAgYm9keS5jaGlsZHJlbi51bnNoaWZ0KHN0cnV0KTtcbiAgcmV0dXJuIGJvZHk7XG59XG4vKipcbiAqIFRha2UgYW4gZW50aXJlIHBhcnNlIHRyZWUsIGFuZCBidWlsZCBpdCBpbnRvIGFuIGFwcHJvcHJpYXRlIHNldCBvZiBIVE1MXG4gKiBub2Rlcy5cbiAqL1xuXG5cbmZ1bmN0aW9uIGJ1aWxkSFRNTCh0cmVlLCBvcHRpb25zKSB7XG4gIC8vIFN0cmlwIG9mZiBvdXRlciB0YWcgd3JhcHBlciBmb3IgcHJvY2Vzc2luZyBiZWxvdy5cbiAgdmFyIHRhZyA9IG51bGw7XG5cbiAgaWYgKHRyZWUubGVuZ3RoID09PSAxICYmIHRyZWVbMF0udHlwZSA9PT0gXCJ0YWdcIikge1xuICAgIHRhZyA9IHRyZWVbMF0udGFnO1xuICAgIHRyZWUgPSB0cmVlWzBdLmJvZHk7XG4gIH0gLy8gQnVpbGQgdGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGluIHRoZSB0cmVlXG5cblxuICB2YXIgZXhwcmVzc2lvbiA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24odHJlZSwgb3B0aW9ucywgdHJ1ZSk7XG4gIHZhciBjaGlsZHJlbiA9IFtdOyAvLyBDcmVhdGUgb25lIGJhc2Ugbm9kZSBmb3IgZWFjaCBjaHVuayBiZXR3ZWVuIHBvdGVudGlhbCBsaW5lIGJyZWFrcy5cbiAgLy8gVGhlIFRlWEJvb2sgW3AuMTczXSBzYXlzIFwiQSBmb3JtdWxhIHdpbGwgYmUgYnJva2VuIG9ubHkgYWZ0ZXIgYVxuICAvLyByZWxhdGlvbiBzeW1ib2wgbGlrZSAkPSQgb3IgJDwkIG9yICRcXHJpZ2h0YXJyb3ckLCBvciBhZnRlciBhIGJpbmFyeVxuICAvLyBvcGVyYXRpb24gc3ltYm9sIGxpa2UgJCskIG9yICQtJCBvciAkXFx0aW1lcyQsIHdoZXJlIHRoZSByZWxhdGlvbiBvclxuICAvLyBiaW5hcnkgb3BlcmF0aW9uIGlzIG9uIHRoZSBgYG91dGVyIGxldmVsJycgb2YgdGhlIGZvcm11bGEgKGkuZS4sIG5vdFxuICAvLyBlbmNsb3NlZCBpbiB7Li4ufSBhbmQgbm90IHBhcnQgb2YgYW4gXFxvdmVyIGNvbnN0cnVjdGlvbikuXCJcblxuICB2YXIgcGFydHMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb24ubGVuZ3RoOyBpKyspIHtcbiAgICBwYXJ0cy5wdXNoKGV4cHJlc3Npb25baV0pO1xuXG4gICAgaWYgKGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJtYmluXCIpIHx8IGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJtcmVsXCIpIHx8IGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJhbGxvd2JyZWFrXCIpKSB7XG4gICAgICAvLyBQdXQgYW55IHBvc3Qtb3BlcmF0b3IgZ2x1ZSBvbiBzYW1lIGxpbmUgYXMgb3BlcmF0b3IuXG4gICAgICAvLyBXYXRjaCBmb3IgXFxub2JyZWFrIGFsb25nIHRoZSB3YXksIGFuZCBzdG9wIGF0IFxcbmV3bGluZS5cbiAgICAgIHZhciBub2JyZWFrID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlIChpIDwgZXhwcmVzc2lvbi5sZW5ndGggLSAxICYmIGV4cHJlc3Npb25baSArIDFdLmhhc0NsYXNzKFwibXNwYWNlXCIpICYmICFleHByZXNzaW9uW2kgKyAxXS5oYXNDbGFzcyhcIm5ld2xpbmVcIikpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBwYXJ0cy5wdXNoKGV4cHJlc3Npb25baV0pO1xuXG4gICAgICAgIGlmIChleHByZXNzaW9uW2ldLmhhc0NsYXNzKFwibm9icmVha1wiKSkge1xuICAgICAgICAgIG5vYnJlYWsgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIERvbid0IGFsbG93IGJyZWFrIGlmIFxcbm9icmVhayBhbW9uZyB0aGUgcG9zdC1vcGVyYXRvciBnbHVlLlxuXG5cbiAgICAgIGlmICghbm9icmVhaykge1xuICAgICAgICBjaGlsZHJlbi5wdXNoKGJ1aWxkSFRNTFVuYnJlYWthYmxlKHBhcnRzLCBvcHRpb25zKSk7XG4gICAgICAgIHBhcnRzID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChleHByZXNzaW9uW2ldLmhhc0NsYXNzKFwibmV3bGluZVwiKSkge1xuICAgICAgLy8gV3JpdGUgdGhlIGxpbmUgZXhjZXB0IHRoZSBuZXdsaW5lXG4gICAgICBwYXJ0cy5wb3AoKTtcblxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChidWlsZEhUTUxVbmJyZWFrYWJsZShwYXJ0cywgb3B0aW9ucykpO1xuICAgICAgICBwYXJ0cyA9IFtdO1xuICAgICAgfSAvLyBQdXQgdGhlIG5ld2xpbmUgYXQgdGhlIHRvcCBsZXZlbFxuXG5cbiAgICAgIGNoaWxkcmVuLnB1c2goZXhwcmVzc2lvbltpXSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICBjaGlsZHJlbi5wdXNoKGJ1aWxkSFRNTFVuYnJlYWthYmxlKHBhcnRzLCBvcHRpb25zKSk7XG4gIH0gLy8gTm93LCBpZiB0aGVyZSB3YXMgYSB0YWcsIGJ1aWxkIGl0IHRvbyBhbmQgYXBwZW5kIGl0IGFzIGEgZmluYWwgY2hpbGQuXG5cblxuICB2YXIgdGFnQ2hpbGQ7XG5cbiAgaWYgKHRhZykge1xuICAgIHRhZ0NoaWxkID0gYnVpbGRIVE1MVW5icmVha2FibGUoYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbih0YWcsIG9wdGlvbnMsIHRydWUpKTtcbiAgICB0YWdDaGlsZC5jbGFzc2VzID0gW1widGFnXCJdO1xuICAgIGNoaWxkcmVuLnB1c2godGFnQ2hpbGQpO1xuICB9XG5cbiAgdmFyIGh0bWxOb2RlID0gYnVpbGRIVE1MX21ha2VTcGFuKFtcImthdGV4LWh0bWxcIl0sIGNoaWxkcmVuKTtcbiAgaHRtbE5vZGUuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIpOyAvLyBBZGp1c3QgdGhlIHN0cnV0IG9mIHRoZSB0YWcgdG8gYmUgdGhlIG1heGltdW0gaGVpZ2h0IG9mIGFsbCBjaGlsZHJlblxuICAvLyAodGhlIGhlaWdodCBvZiB0aGUgZW5jbG9zaW5nIGh0bWxOb2RlKSBmb3IgcHJvcGVyIHZlcnRpY2FsIGFsaWdubWVudC5cblxuICBpZiAodGFnQ2hpbGQpIHtcbiAgICB2YXIgc3RydXQgPSB0YWdDaGlsZC5jaGlsZHJlblswXTtcbiAgICBzdHJ1dC5zdHlsZS5oZWlnaHQgPSBodG1sTm9kZS5oZWlnaHQgKyBodG1sTm9kZS5kZXB0aCArIFwiZW1cIjtcbiAgICBzdHJ1dC5zdHlsZS52ZXJ0aWNhbEFsaWduID0gLWh0bWxOb2RlLmRlcHRoICsgXCJlbVwiO1xuICB9XG5cbiAgcmV0dXJuIGh0bWxOb2RlO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvbWF0aE1MVHJlZS5qc1xuLyoqXG4gKiBUaGVzZSBvYmplY3RzIHN0b3JlIGRhdGEgYWJvdXQgTWF0aE1MIG5vZGVzLiBUaGlzIGlzIHRoZSBNYXRoTUwgZXF1aXZhbGVudFxuICogb2YgdGhlIHR5cGVzIGluIGRvbVRyZWUuanMuIFNpbmNlIE1hdGhNTCBoYW5kbGVzIGl0cyBvd24gcmVuZGVyaW5nLCBhbmRcbiAqIHNpbmNlIHdlJ3JlIG1haW5seSB1c2luZyBNYXRoTUwgdG8gaW1wcm92ZSBhY2Nlc3NpYmlsaXR5LCB3ZSBkb24ndCBtYW5hZ2VcbiAqIGFueSBvZiB0aGUgc3R5bGluZyBzdGF0ZSB0aGF0IHRoZSBwbGFpbiBET00gbm9kZXMgZG8uXG4gKlxuICogVGhlIGB0b05vZGVgIGFuZCBgdG9NYXJrdXBgIGZ1bmN0aW9ucyB3b3JrIHNpbWxhcmx5IHRvIGhvdyB0aGV5IGRvIGluXG4gKiBkb21UcmVlLmpzLCBjcmVhdGluZyBuYW1lc3BhY2VkIERPTSBub2RlcyBhbmQgSFRNTCB0ZXh0IG1hcmt1cCByZXNwZWN0aXZlbHkuXG4gKi9cblxuXG5mdW5jdGlvbiBuZXdEb2N1bWVudEZyYWdtZW50KGNoaWxkcmVuKSB7XG4gIHJldHVybiBuZXcgdHJlZV9Eb2N1bWVudEZyYWdtZW50KGNoaWxkcmVuKTtcbn1cbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBnZW5lcmFsIHB1cnBvc2UgTWF0aE1MIG5vZGUgb2YgYW55IHR5cGUuIFRoZVxuICogY29uc3RydWN0b3IgcmVxdWlyZXMgdGhlIHR5cGUgb2Ygbm9kZSB0byBjcmVhdGUgKGZvciBleGFtcGxlLCBgXCJtb1wiYCBvclxuICogYFwibXNwYWNlXCJgLCBjb3JyZXNwb25kaW5nIHRvIGA8bW8+YCBhbmQgYDxtc3BhY2U+YCB0YWdzKS5cbiAqL1xuXG52YXIgbWF0aE1MVHJlZV9NYXRoTm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1hdGhOb2RlKHR5cGUsIGNoaWxkcmVuKSB7XG4gICAgdGhpcy50eXBlID0gdm9pZCAwO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmNoaWxkcmVuID0gdm9pZCAwO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0ge307XG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICB9XG4gIC8qKlxuICAgKiBTZXRzIGFuIGF0dHJpYnV0ZSBvbiBhIE1hdGhNTCBub2RlLiBNYXRoTUwgZGVwZW5kcyBvbiBhdHRyaWJ1dGVzIHRvIGNvbnZleSBhXG4gICAqIHNlbWFudGljIGNvbnRlbnQsIHNvIHRoaXMgaXMgdXNlZCBoZWF2aWx5LlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBNYXRoTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkge1xuICAgIHRoaXMuYXR0cmlidXRlc1tuYW1lXSA9IHZhbHVlO1xuICB9XG4gIC8qKlxuICAgKiBHZXRzIGFuIGF0dHJpYnV0ZSBvbiBhIE1hdGhNTCBub2RlLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5nZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbbmFtZV07XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYXRoIG5vZGUgaW50byBhIE1hdGhNTC1uYW1lc3BhY2VkIERPTSBlbGVtZW50LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsIHRoaXMudHlwZSk7XG5cbiAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHIsIHRoaXMuYXR0cmlidXRlc1thdHRyXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlLmFwcGVuZENoaWxkKHRoaXMuY2hpbGRyZW5baV0udG9Ob2RlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgbWF0aCBub2RlIGludG8gYW4gSFRNTCBtYXJrdXAgc3RyaW5nLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHZhciBtYXJrdXAgPSBcIjxcIiArIHRoaXMudHlwZTsgLy8gQWRkIHRoZSBhdHRyaWJ1dGVzXG5cbiAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgIG1hcmt1cCArPSBcIiBcIiArIGF0dHIgKyBcIj1cXFwiXCI7XG4gICAgICAgIG1hcmt1cCArPSB1dGlscy5lc2NhcGUodGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgICAgbWFya3VwICs9IFwiXFxcIlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIj5cIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgbWFya3VwICs9IHRoaXMuY2hpbGRyZW5baV0udG9NYXJrdXAoKTtcbiAgICB9XG5cbiAgICBtYXJrdXAgKz0gXCI8L1wiICsgdGhpcy50eXBlICsgXCI+XCI7XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgc3RyaW5nLCBzaW1pbGFyIHRvIGlubmVyVGV4dCwgYnV0IGVzY2FwZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQudG9UZXh0KCk7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICByZXR1cm4gTWF0aE5vZGU7XG59KCk7XG4vKipcbiAqIFRoaXMgbm9kZSByZXByZXNlbnRzIGEgcGllY2Ugb2YgdGV4dC5cbiAqL1xuXG52YXIgbWF0aE1MVHJlZV9UZXh0Tm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRleHROb2RlKHRleHQpIHtcbiAgICB0aGlzLnRleHQgPSB2b2lkIDA7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHRleHQgbm9kZSBpbnRvIGEgRE9NIHRleHQgbm9kZS5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvMiA9IFRleHROb2RlLnByb3RvdHlwZTtcblxuICBfcHJvdG8yLnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy50ZXh0KTtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHRleHQgbm9kZSBpbnRvIGVzY2FwZWQgSFRNTCBtYXJrdXBcbiAgICogKHJlcHJlc2VudGluZyB0aGUgdGV4dCBpdHNlbGYpLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90bzIudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICByZXR1cm4gdXRpbHMuZXNjYXBlKHRoaXMudG9UZXh0KCkpO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgdGV4dCBub2RlIGludG8gYSBzdHJpbmdcbiAgICogKHJlcHJlc2VudGluZyB0aGUgdGV4dCBpdGVzZWxmKS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8yLnRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0O1xuICB9O1xuXG4gIHJldHVybiBUZXh0Tm9kZTtcbn0oKTtcbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBzcGFjZSwgYnV0IG1heSByZW5kZXIgYXMgPG1zcGFjZS4uLi8+IG9yIGFzIHRleHQsXG4gKiBkZXBlbmRpbmcgb24gdGhlIHdpZHRoLlxuICovXG5cbnZhciBTcGFjZU5vZGUgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgU3BhY2Ugbm9kZSB3aXRoIHdpZHRoIGdpdmVuIGluIENTUyBlbXMuXG4gICAqL1xuICBmdW5jdGlvbiBTcGFjZU5vZGUod2lkdGgpIHtcbiAgICB0aGlzLndpZHRoID0gdm9pZCAwO1xuICAgIHRoaXMuY2hhcmFjdGVyID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDsgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDAwL1dELU1hdGhNTDItMjAwMDAzMjgvY2hhcHRlcjYuaHRtbFxuICAgIC8vIGZvciBhIHRhYmxlIG9mIHNwYWNlLWxpa2UgY2hhcmFjdGVycy4gIFdlIHVzZSBVbmljb2RlXG4gICAgLy8gcmVwcmVzZW50YXRpb25zIGluc3RlYWQgb2YgJkxvbmdOYW1lczsgYXMgaXQncyBub3QgY2xlYXIgaG93IHRvXG4gICAgLy8gbWFrZSB0aGUgbGF0dGVyIHZpYSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZS5cblxuICAgIGlmICh3aWR0aCA+PSAwLjA1NTU1ICYmIHdpZHRoIDw9IDAuMDU1NTYpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDBBXCI7IC8vICZWZXJ5VGhpblNwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gMC4xNjY2ICYmIHdpZHRoIDw9IDAuMTY2Nykge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwMDlcIjsgLy8gJlRoaW5TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IDAuMjIyMiAmJiB3aWR0aCA8PSAwLjIyMjMpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDA1XCI7IC8vICZNZWRpdW1TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IDAuMjc3NyAmJiB3aWR0aCA8PSAwLjI3NzgpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDA1XFx1MjAwQVwiOyAvLyAmVGhpY2tTcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IC0wLjA1NTU2ICYmIHdpZHRoIDw9IC0wLjA1NTU1KSB7XG4gICAgICB0aGlzLmNoYXJhY3RlciA9IFwiXFx1MjAwQVxcdTIwNjNcIjsgLy8gJk5lZ2F0aXZlVmVyeVRoaW5TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IC0wLjE2NjcgJiYgd2lkdGggPD0gLTAuMTY2Nikge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwMDlcXHUyMDYzXCI7IC8vICZOZWdhdGl2ZVRoaW5TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IC0wLjIyMjMgJiYgd2lkdGggPD0gLTAuMjIyMikge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwNUZcXHUyMDYzXCI7IC8vICZOZWdhdGl2ZU1lZGl1bVNwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gLTAuMjc3OCAmJiB3aWR0aCA8PSAtMC4yNzc3KSB7XG4gICAgICB0aGlzLmNoYXJhY3RlciA9IFwiXFx1MjAwNVxcdTIwNjNcIjsgLy8gJk5lZ2F0aXZlVGhpY2tTcGFjZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgTWF0aE1MLW5hbWVzcGFjZWQgRE9NIGVsZW1lbnQuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90bzMgPSBTcGFjZU5vZGUucHJvdG90eXBlO1xuXG4gIF9wcm90bzMudG9Ob2RlID0gZnVuY3Rpb24gdG9Ob2RlKCkge1xuICAgIGlmICh0aGlzLmNoYXJhY3Rlcikge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuY2hhcmFjdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsIFwibXNwYWNlXCIpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCB0aGlzLndpZHRoICsgXCJlbVwiKTtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGFuIEhUTUwgbWFya3VwIHN0cmluZy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8zLnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgaWYgKHRoaXMuY2hhcmFjdGVyKSB7XG4gICAgICByZXR1cm4gXCI8bXRleHQ+XCIgKyB0aGlzLmNoYXJhY3RlciArIFwiPC9tdGV4dD5cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiPG1zcGFjZSB3aWR0aD1cXFwiXCIgKyB0aGlzLndpZHRoICsgXCJlbVxcXCIvPlwiO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgc3RyaW5nLCBzaW1pbGFyIHRvIGlubmVyVGV4dC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8zLnRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICBpZiAodGhpcy5jaGFyYWN0ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNoYXJhY3RlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiIFwiO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU3BhY2VOb2RlO1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtYXRoTUxUcmVlID0gKHtcbiAgTWF0aE5vZGU6IG1hdGhNTFRyZWVfTWF0aE5vZGUsXG4gIFRleHROb2RlOiBtYXRoTUxUcmVlX1RleHROb2RlLFxuICBTcGFjZU5vZGU6IFNwYWNlTm9kZSxcbiAgbmV3RG9jdW1lbnRGcmFnbWVudDogbmV3RG9jdW1lbnRGcmFnbWVudFxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9idWlsZE1hdGhNTC5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgY29udmVydHMgYSBwYXJzZSB0cmVlIGludG8gYSBjb29yZXNwb25kaW5nIE1hdGhNTCB0cmVlLiBUaGUgbWFpblxuICogZW50cnkgcG9pbnQgaXMgdGhlIGBidWlsZE1hdGhNTGAgZnVuY3Rpb24sIHdoaWNoIHRha2VzIGEgcGFyc2UgdHJlZSBmcm9tIHRoZVxuICogcGFyc2VyLlxuICovXG5cblxuXG5cblxuXG5cblxuXG4vKipcbiAqIFRha2VzIGEgc3ltYm9sIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgTWF0aE1MIHRleHQgbm9kZSBhZnRlciBwZXJmb3JtaW5nXG4gKiBvcHRpb25hbCByZXBsYWNlbWVudCBmcm9tIHN5bWJvbHMuanMuXG4gKi9cbnZhciBidWlsZE1hdGhNTF9tYWtlVGV4dCA9IGZ1bmN0aW9uIG1ha2VUZXh0KHRleHQsIG1vZGUsIG9wdGlvbnMpIHtcbiAgaWYgKHNyY19zeW1ib2xzW21vZGVdW3RleHRdICYmIHNyY19zeW1ib2xzW21vZGVdW3RleHRdLnJlcGxhY2UgJiYgdGV4dC5jaGFyQ29kZUF0KDApICE9PSAweEQ4MzUgJiYgIShsaWdhdHVyZXMuaGFzT3duUHJvcGVydHkodGV4dCkgJiYgb3B0aW9ucyAmJiAob3B0aW9ucy5mb250RmFtaWx5ICYmIG9wdGlvbnMuZm9udEZhbWlseS5zdWJzdHIoNCwgMikgPT09IFwidHRcIiB8fCBvcHRpb25zLmZvbnQgJiYgb3B0aW9ucy5mb250LnN1YnN0cig0LCAyKSA9PT0gXCJ0dFwiKSkpIHtcbiAgICB0ZXh0ID0gc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0ucmVwbGFjZTtcbiAgfVxuXG4gIHJldHVybiBuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZSh0ZXh0KTtcbn07XG4vKipcbiAqIFdyYXAgdGhlIGdpdmVuIGFycmF5IG9mIG5vZGVzIGluIGFuIDxtcm93PiBub2RlIGlmIG5lZWRlZCwgaS5lLixcbiAqIHVubGVzcyB0aGUgYXJyYXkgaGFzIGxlbmd0aCAxLiAgQWx3YXlzIHJldHVybnMgYSBzaW5nbGUgbm9kZS5cbiAqL1xuXG52YXIgYnVpbGRNYXRoTUxfbWFrZVJvdyA9IGZ1bmN0aW9uIG1ha2VSb3coYm9keSkge1xuICBpZiAoYm9keS5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gYm9keVswXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcm93XCIsIGJvZHkpO1xuICB9XG59O1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBtYXRoIHZhcmlhbnQgYXMgYSBzdHJpbmcgb3IgbnVsbCBpZiBub25lIGlzIHJlcXVpcmVkLlxuICovXG5cbnZhciBidWlsZE1hdGhNTF9nZXRWYXJpYW50ID0gZnVuY3Rpb24gZ2V0VmFyaWFudChncm91cCwgb3B0aW9ucykge1xuICAvLyBIYW5kbGUgXFx0ZXh0Li4uIGZvbnQgc3BlY2lmaWVycyBhcyBiZXN0IHdlIGNhbi5cbiAgLy8gTWF0aE1MIGhhcyBhIGxpbWl0ZWQgbGlzdCBvZiBhbGxvd2FibGUgbWF0aHZhcmlhbnQgc3BlY2lmaWVyczsgc2VlXG4gIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9NYXRoTUwzL2NoYXB0ZXIzLmh0bWwjcHJlc20uY29tbWF0dFxuICBpZiAob3B0aW9ucy5mb250RmFtaWx5ID09PSBcInRleHR0dFwiKSB7XG4gICAgcmV0dXJuIFwibW9ub3NwYWNlXCI7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5mb250RmFtaWx5ID09PSBcInRleHRzZlwiKSB7XG4gICAgaWYgKG9wdGlvbnMuZm9udFNoYXBlID09PSBcInRleHRpdFwiICYmIG9wdGlvbnMuZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgICAgcmV0dXJuIFwic2Fucy1zZXJpZi1ib2xkLWl0YWxpY1wiO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5mb250U2hhcGUgPT09IFwidGV4dGl0XCIpIHtcbiAgICAgIHJldHVybiBcInNhbnMtc2VyaWYtaXRhbGljXCI7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmZvbnRXZWlnaHQgPT09IFwidGV4dGJmXCIpIHtcbiAgICAgIHJldHVybiBcImJvbGQtc2Fucy1zZXJpZlwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJzYW5zLXNlcmlmXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMuZm9udFNoYXBlID09PSBcInRleHRpdFwiICYmIG9wdGlvbnMuZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgIHJldHVybiBcImJvbGQtaXRhbGljXCI7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5mb250U2hhcGUgPT09IFwidGV4dGl0XCIpIHtcbiAgICByZXR1cm4gXCJpdGFsaWNcIjtcbiAgfSBlbHNlIGlmIChvcHRpb25zLmZvbnRXZWlnaHQgPT09IFwidGV4dGJmXCIpIHtcbiAgICByZXR1cm4gXCJib2xkXCI7XG4gIH1cblxuICB2YXIgZm9udCA9IG9wdGlvbnMuZm9udDtcblxuICBpZiAoIWZvbnQgfHwgZm9udCA9PT0gXCJtYXRobm9ybWFsXCIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtb2RlID0gZ3JvdXAubW9kZTtcblxuICBpZiAoZm9udCA9PT0gXCJtYXRoaXRcIikge1xuICAgIHJldHVybiBcIml0YWxpY1wiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwiYm9sZHN5bWJvbFwiKSB7XG4gICAgcmV0dXJuIFwiYm9sZC1pdGFsaWNcIjtcbiAgfSBlbHNlIGlmIChmb250ID09PSBcIm1hdGhiZlwiKSB7XG4gICAgcmV0dXJuIFwiYm9sZFwiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWF0aGJiXCIpIHtcbiAgICByZXR1cm4gXCJkb3VibGUtc3RydWNrXCI7XG4gIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJtYXRoZnJha1wiKSB7XG4gICAgcmV0dXJuIFwiZnJha3R1clwiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWF0aHNjclwiIHx8IGZvbnQgPT09IFwibWF0aGNhbFwiKSB7XG4gICAgLy8gTWF0aE1MIG1ha2VzIG5vIGRpc3RpbmN0aW9uIGJldHdlZW4gc2NyaXB0IGFuZCBjYWxpZ3JhaHBpY1xuICAgIHJldHVybiBcInNjcmlwdFwiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWF0aHNmXCIpIHtcbiAgICByZXR1cm4gXCJzYW5zLXNlcmlmXCI7XG4gIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJtYXRodHRcIikge1xuICAgIHJldHVybiBcIm1vbm9zcGFjZVwiO1xuICB9XG5cbiAgdmFyIHRleHQgPSBncm91cC50ZXh0O1xuXG4gIGlmICh1dGlscy5jb250YWlucyhbXCJcXFxcaW1hdGhcIiwgXCJcXFxcam1hdGhcIl0sIHRleHQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0gJiYgc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0ucmVwbGFjZSkge1xuICAgIHRleHQgPSBzcmNfc3ltYm9sc1ttb2RlXVt0ZXh0XS5yZXBsYWNlO1xuICB9XG5cbiAgdmFyIGZvbnROYW1lID0gYnVpbGRDb21tb24uZm9udE1hcFtmb250XS5mb250TmFtZTtcblxuICBpZiAoZ2V0Q2hhcmFjdGVyTWV0cmljcyh0ZXh0LCBmb250TmFtZSwgbW9kZSkpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24uZm9udE1hcFtmb250XS52YXJpYW50O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuLyoqXG4gKiBUYWtlcyBhIGxpc3Qgb2Ygbm9kZXMsIGJ1aWxkcyB0aGVtLCBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgdGhlIGdlbmVyYXRlZFxuICogTWF0aE1MIG5vZGVzLiAgQWxzbyBjb21iaW5lIGNvbnNlY3V0aXZlIDxtdGV4dD4gb3V0cHV0cyBpbnRvIGEgc2luZ2xlXG4gKiA8bXRleHQ+IHRhZy5cbiAqL1xuXG52YXIgYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uID0gZnVuY3Rpb24gYnVpbGRFeHByZXNzaW9uKGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzT3JkZ3JvdXApIHtcbiAgaWYgKGV4cHJlc3Npb24ubGVuZ3RoID09PSAxKSB7XG4gICAgdmFyIGdyb3VwID0gYnVpbGRNYXRoTUxfYnVpbGRHcm91cChleHByZXNzaW9uWzBdLCBvcHRpb25zKTtcblxuICAgIGlmIChpc09yZGdyb3VwICYmIGdyb3VwIGluc3RhbmNlb2YgbWF0aE1MVHJlZV9NYXRoTm9kZSAmJiBncm91cC50eXBlID09PSBcIm1vXCIpIHtcbiAgICAgIC8vIFdoZW4gVGVYIHdyaXRlcnMgd2FudCB0byBzdXBwcmVzcyBzcGFjaW5nIG9uIGFuIG9wZXJhdG9yLFxuICAgICAgLy8gdGhleSBvZnRlbiBwdXQgdGhlIG9wZXJhdG9yIGJ5IGl0c2VsZiBpbnNpZGUgYnJhY2VzLlxuICAgICAgZ3JvdXAuc2V0QXR0cmlidXRlKFwibHNwYWNlXCIsIFwiMGVtXCIpO1xuICAgICAgZ3JvdXAuc2V0QXR0cmlidXRlKFwicnNwYWNlXCIsIFwiMGVtXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBbZ3JvdXBdO1xuICB9XG5cbiAgdmFyIGdyb3VwcyA9IFtdO1xuICB2YXIgbGFzdEdyb3VwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBfZ3JvdXAgPSBidWlsZE1hdGhNTF9idWlsZEdyb3VwKGV4cHJlc3Npb25baV0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKF9ncm91cCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfTWF0aE5vZGUgJiYgbGFzdEdyb3VwIGluc3RhbmNlb2YgbWF0aE1MVHJlZV9NYXRoTm9kZSkge1xuICAgICAgLy8gQ29uY2F0ZW5hdGUgYWRqYWNlbnQgPG10ZXh0PnNcbiAgICAgIGlmIChfZ3JvdXAudHlwZSA9PT0gJ210ZXh0JyAmJiBsYXN0R3JvdXAudHlwZSA9PT0gJ210ZXh0JyAmJiBfZ3JvdXAuZ2V0QXR0cmlidXRlKCdtYXRodmFyaWFudCcpID09PSBsYXN0R3JvdXAuZ2V0QXR0cmlidXRlKCdtYXRodmFyaWFudCcpKSB7XG4gICAgICAgIHZhciBfbGFzdEdyb3VwJGNoaWxkcmVuO1xuXG4gICAgICAgIChfbGFzdEdyb3VwJGNoaWxkcmVuID0gbGFzdEdyb3VwLmNoaWxkcmVuKS5wdXNoLmFwcGx5KF9sYXN0R3JvdXAkY2hpbGRyZW4sIF9ncm91cC5jaGlsZHJlbik7XG5cbiAgICAgICAgY29udGludWU7IC8vIENvbmNhdGVuYXRlIGFkamFjZW50IDxtbj5zXG4gICAgICB9IGVsc2UgaWYgKF9ncm91cC50eXBlID09PSAnbW4nICYmIGxhc3RHcm91cC50eXBlID09PSAnbW4nKSB7XG4gICAgICAgIHZhciBfbGFzdEdyb3VwJGNoaWxkcmVuMjtcblxuICAgICAgICAoX2xhc3RHcm91cCRjaGlsZHJlbjIgPSBsYXN0R3JvdXAuY2hpbGRyZW4pLnB1c2guYXBwbHkoX2xhc3RHcm91cCRjaGlsZHJlbjIsIF9ncm91cC5jaGlsZHJlbik7XG5cbiAgICAgICAgY29udGludWU7IC8vIENvbmNhdGVuYXRlIDxtbj4uLi48L21uPiBmb2xsb3dlZCBieSA8bWk+LjwvbWk+XG4gICAgICB9IGVsc2UgaWYgKF9ncm91cC50eXBlID09PSAnbWknICYmIF9ncm91cC5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgbGFzdEdyb3VwLnR5cGUgPT09ICdtbicpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gX2dyb3VwLmNoaWxkcmVuWzBdO1xuXG4gICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfVGV4dE5vZGUgJiYgY2hpbGQudGV4dCA9PT0gJy4nKSB7XG4gICAgICAgICAgdmFyIF9sYXN0R3JvdXAkY2hpbGRyZW4zO1xuXG4gICAgICAgICAgKF9sYXN0R3JvdXAkY2hpbGRyZW4zID0gbGFzdEdyb3VwLmNoaWxkcmVuKS5wdXNoLmFwcGx5KF9sYXN0R3JvdXAkY2hpbGRyZW4zLCBfZ3JvdXAuY2hpbGRyZW4pO1xuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobGFzdEdyb3VwLnR5cGUgPT09ICdtaScgJiYgbGFzdEdyb3VwLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB2YXIgbGFzdENoaWxkID0gbGFzdEdyb3VwLmNoaWxkcmVuWzBdO1xuXG4gICAgICAgIGlmIChsYXN0Q2hpbGQgaW5zdGFuY2VvZiBtYXRoTUxUcmVlX1RleHROb2RlICYmIGxhc3RDaGlsZC50ZXh0ID09PSBcIlxcdTAzMzhcIiAmJiAoX2dyb3VwLnR5cGUgPT09ICdtbycgfHwgX2dyb3VwLnR5cGUgPT09ICdtaScgfHwgX2dyb3VwLnR5cGUgPT09ICdtbicpKSB7XG4gICAgICAgICAgdmFyIF9jaGlsZCA9IF9ncm91cC5jaGlsZHJlblswXTtcblxuICAgICAgICAgIGlmIChfY2hpbGQgaW5zdGFuY2VvZiBtYXRoTUxUcmVlX1RleHROb2RlICYmIF9jaGlsZC50ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIE92ZXJsYXkgd2l0aCBjb21iaW5pbmcgY2hhcmFjdGVyIGxvbmcgc29saWR1c1xuICAgICAgICAgICAgX2NoaWxkLnRleHQgPSBfY2hpbGQudGV4dC5zbGljZSgwLCAxKSArIFwiXFx1MDMzOFwiICsgX2NoaWxkLnRleHQuc2xpY2UoMSk7XG4gICAgICAgICAgICBncm91cHMucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JvdXBzLnB1c2goX2dyb3VwKTtcbiAgICBsYXN0R3JvdXAgPSBfZ3JvdXA7XG4gIH1cblxuICByZXR1cm4gZ3JvdXBzO1xufTtcbi8qKlxuICogRXF1aXZhbGVudCB0byBidWlsZEV4cHJlc3Npb24sIGJ1dCB3cmFwcyB0aGUgZWxlbWVudHMgaW4gYW4gPG1yb3c+XG4gKiBpZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuICBSZXR1cm5zIGEgc2luZ2xlIG5vZGUgaW5zdGVhZCBvZiBhbiBhcnJheS5cbiAqL1xuXG52YXIgYnVpbGRFeHByZXNzaW9uUm93ID0gZnVuY3Rpb24gYnVpbGRFeHByZXNzaW9uUm93KGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzT3JkZ3JvdXApIHtcbiAgcmV0dXJuIGJ1aWxkTWF0aE1MX21ha2VSb3coYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzT3JkZ3JvdXApKTtcbn07XG4vKipcbiAqIFRha2VzIGEgZ3JvdXAgZnJvbSB0aGUgcGFyc2VyIGFuZCBjYWxscyB0aGUgYXBwcm9wcmlhdGUgZ3JvdXBCdWlsZGVycyBmdW5jdGlvblxuICogb24gaXQgdG8gcHJvZHVjZSBhIE1hdGhNTCBub2RlLlxuICovXG5cbnZhciBidWlsZE1hdGhNTF9idWlsZEdyb3VwID0gZnVuY3Rpb24gYnVpbGRHcm91cChncm91cCwgb3B0aW9ucykge1xuICBpZiAoIWdyb3VwKSB7XG4gICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXJvd1wiKTtcbiAgfVxuXG4gIGlmIChfbWF0aG1sR3JvdXBCdWlsZGVyc1tncm91cC50eXBlXSkge1xuICAgIC8vIENhbGwgdGhlIGdyb3VwQnVpbGRlcnMgZnVuY3Rpb25cbiAgICB2YXIgcmVzdWx0ID0gX21hdGhtbEdyb3VwQnVpbGRlcnNbZ3JvdXAudHlwZV0oZ3JvdXAsIG9wdGlvbnMpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiR290IGdyb3VwIG9mIHVua25vd24gdHlwZTogJ1wiICsgZ3JvdXAudHlwZSArIFwiJ1wiKTtcbiAgfVxufTtcbi8qKlxuICogVGFrZXMgYSBmdWxsIHBhcnNlIHRyZWUgYW5kIHNldHRpbmdzIGFuZCBidWlsZHMgYSBNYXRoTUwgcmVwcmVzZW50YXRpb24gb2ZcbiAqIGl0LiBJbiBwYXJ0aWN1bGFyLCB3ZSBwdXQgdGhlIGVsZW1lbnRzIGZyb20gYnVpbGRpbmcgdGhlIHBhcnNlIHRyZWUgaW50byBhXG4gKiA8c2VtYW50aWNzPiB0YWcgc28gd2UgY2FuIGFsc28gaW5jbHVkZSB0aGF0IFRlWCBzb3VyY2UgYXMgYW4gYW5ub3RhdGlvbi5cbiAqXG4gKiBOb3RlIHRoYXQgd2UgYWN0dWFsbHkgcmV0dXJuIGEgZG9tVHJlZSBlbGVtZW50IHdpdGggYSBgPG1hdGg+YCBpbnNpZGUgaXQgc29cbiAqIHdlIGNhbiBkbyBhcHByb3ByaWF0ZSBzdHlsaW5nLlxuICovXG5cbmZ1bmN0aW9uIGJ1aWxkTWF0aE1MKHRyZWUsIHRleEV4cHJlc3Npb24sIG9wdGlvbnMsIGZvck1hdGhtbE9ubHkpIHtcbiAgdmFyIGV4cHJlc3Npb24gPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24odHJlZSwgb3B0aW9ucyk7IC8vIFdyYXAgdXAgdGhlIGV4cHJlc3Npb24gaW4gYW4gbXJvdyBzbyBpdCBpcyBwcmVzZW50ZWQgaW4gdGhlIHNlbWFudGljc1xuICAvLyB0YWcgY29ycmVjdGx5LCB1bmxlc3MgaXQncyBhIHNpbmdsZSA8bXJvdz4gb3IgPG10YWJsZT4uXG5cbiAgdmFyIHdyYXBwZXI7XG5cbiAgaWYgKGV4cHJlc3Npb24ubGVuZ3RoID09PSAxICYmIGV4cHJlc3Npb25bMF0gaW5zdGFuY2VvZiBtYXRoTUxUcmVlX01hdGhOb2RlICYmIHV0aWxzLmNvbnRhaW5zKFtcIm1yb3dcIiwgXCJtdGFibGVcIl0sIGV4cHJlc3Npb25bMF0udHlwZSkpIHtcbiAgICB3cmFwcGVyID0gZXhwcmVzc2lvblswXTtcbiAgfSBlbHNlIHtcbiAgICB3cmFwcGVyID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcm93XCIsIGV4cHJlc3Npb24pO1xuICB9IC8vIEJ1aWxkIGEgVGVYIGFubm90YXRpb24gb2YgdGhlIHNvdXJjZVxuXG5cbiAgdmFyIGFubm90YXRpb24gPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcImFubm90YXRpb25cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKHRleEV4cHJlc3Npb24pXSk7XG4gIGFubm90YXRpb24uc2V0QXR0cmlidXRlKFwiZW5jb2RpbmdcIiwgXCJhcHBsaWNhdGlvbi94LXRleFwiKTtcbiAgdmFyIHNlbWFudGljcyA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwic2VtYW50aWNzXCIsIFt3cmFwcGVyLCBhbm5vdGF0aW9uXSk7XG4gIHZhciBtYXRoID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtYXRoXCIsIFtzZW1hbnRpY3NdKTtcbiAgbWF0aC5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLCBcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIik7IC8vIFlvdSBjYW4ndCBzdHlsZSA8bWF0aD4gbm9kZXMsIHNvIHdlIHdyYXAgdGhlIG5vZGUgaW4gYSBzcGFuLlxuICAvLyBOT1RFOiBUaGUgc3BhbiBjbGFzcyBpcyBub3QgdHlwZWQgdG8gaGF2ZSA8bWF0aD4gbm9kZXMgYXMgY2hpbGRyZW4sIGFuZFxuICAvLyB3ZSBkb24ndCB3YW50IHRvIG1ha2UgdGhlIGNoaWxkcmVuIHR5cGUgbW9yZSBnZW5lcmljIHNpbmNlIHRoZSBjaGlsZHJlblxuICAvLyBvZiBzcGFuIGFyZSBleHBlY3RlZCB0byBoYXZlIG1vcmUgZmllbGRzIGluIGBidWlsZEh0bWxgIGNvbnRleHRzLlxuXG4gIHZhciB3cmFwcGVyQ2xhc3MgPSBmb3JNYXRobWxPbmx5ID8gXCJrYXRleFwiIDogXCJrYXRleC1tYXRobWxcIjsgLy8gJEZsb3dGaXhNZVxuXG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3Bhbihbd3JhcHBlckNsYXNzXSwgW21hdGhdKTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2J1aWxkVHJlZS5qc1xuXG5cblxuXG5cblxuXG52YXIgYnVpbGRUcmVlX29wdGlvbnNGcm9tU2V0dGluZ3MgPSBmdW5jdGlvbiBvcHRpb25zRnJvbVNldHRpbmdzKHNldHRpbmdzKSB7XG4gIHJldHVybiBuZXcgc3JjX09wdGlvbnMoe1xuICAgIHN0eWxlOiBzZXR0aW5ncy5kaXNwbGF5TW9kZSA/IHNyY19TdHlsZS5ESVNQTEFZIDogc3JjX1N0eWxlLlRFWFQsXG4gICAgbWF4U2l6ZTogc2V0dGluZ3MubWF4U2l6ZSxcbiAgICBtaW5SdWxlVGhpY2tuZXNzOiBzZXR0aW5ncy5taW5SdWxlVGhpY2tuZXNzXG4gIH0pO1xufTtcblxudmFyIGJ1aWxkVHJlZV9kaXNwbGF5V3JhcCA9IGZ1bmN0aW9uIGRpc3BsYXlXcmFwKG5vZGUsIHNldHRpbmdzKSB7XG4gIGlmIChzZXR0aW5ncy5kaXNwbGF5TW9kZSkge1xuICAgIHZhciBjbGFzc2VzID0gW1wia2F0ZXgtZGlzcGxheVwiXTtcblxuICAgIGlmIChzZXR0aW5ncy5sZXFubykge1xuICAgICAgY2xhc3Nlcy5wdXNoKFwibGVxbm9cIik7XG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzLmZsZXFuKSB7XG4gICAgICBjbGFzc2VzLnB1c2goXCJmbGVxblwiKTtcbiAgICB9XG5cbiAgICBub2RlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oY2xhc3NlcywgW25vZGVdKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxudmFyIGJ1aWxkVHJlZV9idWlsZFRyZWUgPSBmdW5jdGlvbiBidWlsZFRyZWUodHJlZSwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpIHtcbiAgdmFyIG9wdGlvbnMgPSBidWlsZFRyZWVfb3B0aW9uc0Zyb21TZXR0aW5ncyhzZXR0aW5ncyk7XG4gIHZhciBrYXRleE5vZGU7XG5cbiAgaWYgKHNldHRpbmdzLm91dHB1dCA9PT0gXCJtYXRobWxcIikge1xuICAgIHJldHVybiBidWlsZE1hdGhNTCh0cmVlLCBleHByZXNzaW9uLCBvcHRpb25zLCB0cnVlKTtcbiAgfSBlbHNlIGlmIChzZXR0aW5ncy5vdXRwdXQgPT09IFwiaHRtbFwiKSB7XG4gICAgdmFyIGh0bWxOb2RlID0gYnVpbGRIVE1MKHRyZWUsIG9wdGlvbnMpO1xuICAgIGthdGV4Tm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImthdGV4XCJdLCBbaHRtbE5vZGVdKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbWF0aE1MTm9kZSA9IGJ1aWxkTWF0aE1MKHRyZWUsIGV4cHJlc3Npb24sIG9wdGlvbnMsIGZhbHNlKTtcblxuICAgIHZhciBfaHRtbE5vZGUgPSBidWlsZEhUTUwodHJlZSwgb3B0aW9ucyk7XG5cbiAgICBrYXRleE5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJrYXRleFwiXSwgW21hdGhNTE5vZGUsIF9odG1sTm9kZV0pO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkVHJlZV9kaXNwbGF5V3JhcChrYXRleE5vZGUsIHNldHRpbmdzKTtcbn07XG52YXIgYnVpbGRUcmVlX2J1aWxkSFRNTFRyZWUgPSBmdW5jdGlvbiBidWlsZEhUTUxUcmVlKHRyZWUsIGV4cHJlc3Npb24sIHNldHRpbmdzKSB7XG4gIHZhciBvcHRpb25zID0gYnVpbGRUcmVlX29wdGlvbnNGcm9tU2V0dGluZ3Moc2V0dGluZ3MpO1xuICB2YXIgaHRtbE5vZGUgPSBidWlsZEhUTUwodHJlZSwgb3B0aW9ucyk7XG4gIHZhciBrYXRleE5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJrYXRleFwiXSwgW2h0bWxOb2RlXSk7XG4gIHJldHVybiBidWlsZFRyZWVfZGlzcGxheVdyYXAoa2F0ZXhOb2RlLCBzZXR0aW5ncyk7XG59O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2J1aWxkVHJlZSA9IChidWlsZFRyZWVfYnVpbGRUcmVlKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3N0cmV0Y2h5LmpzXG4vKipcbiAqIFRoaXMgZmlsZSBwcm92aWRlcyBzdXBwb3J0IHRvIGJ1aWxkTWF0aE1MLmpzIGFuZCBidWlsZEhUTUwuanNcbiAqIGZvciBzdHJldGNoeSB3aWRlIGVsZW1lbnRzIHJlbmRlcmVkIGZyb20gU1ZHIGZpbGVzXG4gKiBhbmQgb3RoZXIgQ1NTIHRyaWNrZXJ5LlxuICovXG5cblxuXG5cbnZhciBzdHJldGNoeUNvZGVQb2ludCA9IHtcbiAgd2lkZWhhdDogXCJeXCIsXG4gIHdpZGVjaGVjazogXCLLh1wiLFxuICB3aWRldGlsZGU6IFwiflwiLFxuICB1dGlsZGU6IFwiflwiLFxuICBvdmVybGVmdGFycm93OiBcIlxcdTIxOTBcIixcbiAgdW5kZXJsZWZ0YXJyb3c6IFwiXFx1MjE5MFwiLFxuICB4bGVmdGFycm93OiBcIlxcdTIxOTBcIixcbiAgb3ZlcnJpZ2h0YXJyb3c6IFwiXFx1MjE5MlwiLFxuICB1bmRlcnJpZ2h0YXJyb3c6IFwiXFx1MjE5MlwiLFxuICB4cmlnaHRhcnJvdzogXCJcXHUyMTkyXCIsXG4gIHVuZGVyYnJhY2U6IFwiXFx1MjNERlwiLFxuICBvdmVyYnJhY2U6IFwiXFx1MjNERVwiLFxuICBvdmVyZ3JvdXA6IFwiXFx1MjNFMFwiLFxuICB1bmRlcmdyb3VwOiBcIlxcdTIzRTFcIixcbiAgb3ZlcmxlZnRyaWdodGFycm93OiBcIlxcdTIxOTRcIixcbiAgdW5kZXJsZWZ0cmlnaHRhcnJvdzogXCJcXHUyMTk0XCIsXG4gIHhsZWZ0cmlnaHRhcnJvdzogXCJcXHUyMTk0XCIsXG4gIE92ZXJyaWdodGFycm93OiBcIlxcdTIxRDJcIixcbiAgeFJpZ2h0YXJyb3c6IFwiXFx1MjFEMlwiLFxuICBvdmVybGVmdGhhcnBvb246IFwiXFx1MjFCQ1wiLFxuICB4bGVmdGhhcnBvb251cDogXCJcXHUyMUJDXCIsXG4gIG92ZXJyaWdodGhhcnBvb246IFwiXFx1MjFDMFwiLFxuICB4cmlnaHRoYXJwb29udXA6IFwiXFx1MjFDMFwiLFxuICB4TGVmdGFycm93OiBcIlxcdTIxRDBcIixcbiAgeExlZnRyaWdodGFycm93OiBcIlxcdTIxRDRcIixcbiAgeGhvb2tsZWZ0YXJyb3c6IFwiXFx1MjFBOVwiLFxuICB4aG9va3JpZ2h0YXJyb3c6IFwiXFx1MjFBQVwiLFxuICB4bWFwc3RvOiBcIlxcdTIxQTZcIixcbiAgeHJpZ2h0aGFycG9vbmRvd246IFwiXFx1MjFDMVwiLFxuICB4bGVmdGhhcnBvb25kb3duOiBcIlxcdTIxQkRcIixcbiAgeHJpZ2h0bGVmdGhhcnBvb25zOiBcIlxcdTIxQ0NcIixcbiAgeGxlZnRyaWdodGhhcnBvb25zOiBcIlxcdTIxQ0JcIixcbiAgeHR3b2hlYWRsZWZ0YXJyb3c6IFwiXFx1MjE5RVwiLFxuICB4dHdvaGVhZHJpZ2h0YXJyb3c6IFwiXFx1MjFBMFwiLFxuICB4bG9uZ2VxdWFsOiBcIj1cIixcbiAgeHRvZnJvbTogXCJcXHUyMUM0XCIsXG4gIHhyaWdodGxlZnRhcnJvd3M6IFwiXFx1MjFDNFwiLFxuICB4cmlnaHRlcXVpbGlicml1bTogXCJcXHUyMUNDXCIsXG4gIC8vIE5vdCBhIHBlcmZlY3QgbWF0Y2guXG4gIHhsZWZ0ZXF1aWxpYnJpdW06IFwiXFx1MjFDQlwiIC8vIE5vbmUgYmV0dGVyIGF2YWlsYWJsZS5cblxufTtcblxudmFyIHN0cmV0Y2h5X21hdGhNTG5vZGUgPSBmdW5jdGlvbiBtYXRoTUxub2RlKGxhYmVsKSB7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbbmV3IG1hdGhNTFRyZWUuVGV4dE5vZGUoc3RyZXRjaHlDb2RlUG9pbnRbbGFiZWwuc3Vic3RyKDEpXSldKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcInRydWVcIik7XG4gIHJldHVybiBub2RlO1xufTsgLy8gTWFueSBvZiB0aGUgS2FUZVggU1ZHIGltYWdlcyBoYXZlIGJlZW4gYWRhcHRlZCBmcm9tIGdseXBocyBpbiBLYVRlWCBmb250cy5cbi8vIENvcHlyaWdodCAoYykgMjAwOS0yMDEwLCBEZXNpZ24gU2NpZW5jZSwgSW5jLiAoPHd3dy5tYXRoamF4Lm9yZz4pXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNyBLaGFuIEFjYWRlbXkgKDx3d3cua2hhbmFjYWRlbXkub3JnPilcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UsIFZlcnNpb24gMS4xLlxuLy8gU2VlIFxcbmh0dHA6Ly9zY3JpcHRzLnNpbC5vcmcvT0ZMXG4vLyBWZXJ5IExvbmcgU1ZHc1xuLy8gICAgTWFueSBvZiB0aGUgS2FUZVggc3RyZXRjaHkgd2lkZSBlbGVtZW50cyB1c2UgYSBsb25nIFNWRyBpbWFnZSBhbmQgYW5cbi8vICAgIG92ZXJmbG93OiBoaWRkZW4gdGFjdGljIHRvIGFjaGlldmUgYSBzdHJldGNoeSBpbWFnZSB3aGlsZSBhdm9pZGluZ1xuLy8gICAgZGlzdG9ydGlvbiBvZiBhcnJvd2hlYWRzIG9yIGJyYWNlIGNvcm5lcnMuXG4vLyAgICBUaGUgU1ZHIHR5cGljYWxseSBjb250YWlucyBhIHZlcnkgbG9uZyAoNDAwIGVtKSBhcnJvdy5cbi8vICAgIFRoZSBTVkcgaXMgaW4gYSBjb250YWluZXIgc3BhbiB0aGF0IGhhcyBvdmVyZmxvdzogaGlkZGVuLCBzbyB0aGUgc3BhblxuLy8gICAgYWN0cyBsaWtlIGEgd2luZG93IHRoYXQgZXhwb3NlcyBvbmx5IHBhcnQgb2YgdGhlICBTVkcuXG4vLyAgICBUaGUgU1ZHIGFsd2F5cyBoYXMgYSBsb25nZXIsIHRoaW5uZXIgYXNwZWN0IHJhdGlvIHRoYW4gdGhlIGNvbnRhaW5lciBzcGFuLlxuLy8gICAgQWZ0ZXIgdGhlIFNWRyBmaWxscyAxMDAlIG9mIHRoZSBoZWlnaHQgb2YgdGhlIGNvbnRhaW5lciBzcGFuLFxuLy8gICAgdGhlcmUgaXMgYSBsb25nIGFycm93IHNoYWZ0IGxlZnQgb3Zlci4gVGhhdCBsZWZ0LW92ZXIgc2hhZnQgaXMgbm90IHNob3duLlxuLy8gICAgSW5zdGVhZCwgaXQgaXMgc2xpY2VkIG9mZiBiZWNhdXNlIHRoZSBzcGFuJ3MgQ1NTIGhhcyBvdmVyZmxvdzogaGlkZGVuLlxuLy8gICAgVGh1cywgdGhlIHJlYWRlciBzZWVzIGFuIGFycm93IHRoYXQgbWF0Y2hlcyB0aGUgc3ViamVjdCBtYXR0ZXIgd2lkdGhcbi8vICAgIHdpdGhvdXQgZGlzdG9ydGlvbi5cbi8vICAgIFNvbWUgZnVuY3Rpb25zLCBzdWNoIGFzIFxcY2FuY2VsLCBuZWVkIHRvIHZhcnkgdGhlaXIgYXNwZWN0IHJhdGlvLiBUaGVzZVxuLy8gICAgZnVuY3Rpb25zIGRvIG5vdCBnZXQgdGhlIG92ZXJmbG93IFNWRyB0cmVhdG1lbnQuXG4vLyBTZWNvbmQgQnJ1c2ggU3Ryb2tlXG4vLyAgICBMb3cgcmVzb2x1dGlvbiBtb25pdG9ycyBzdHJ1Z2dsZSB0byBkaXNwbGF5IGltYWdlcyBpbiBmaW5lIGRldGFpbC5cbi8vICAgIFNvIGJyb3dzZXJzIGFwcGx5IGFudGktYWxpYXNpbmcuIEEgbG9uZyBzdHJhaWdodCBhcnJvdyBzaGFmdCB0aGVyZWZvcmVcbi8vICAgIHdpbGwgc29tZXRpbWVzIGFwcGVhciBhcyBpZiBpdCBoYXMgYSBibHVycmVkIGVkZ2UuXG4vLyAgICBUbyBtaXRpZ2F0ZSB0aGlzLCB0aGVzZSBTVkcgZmlsZXMgY29udGFpbiBhIHNlY29uZCBcImJydXNoLXN0cm9rZVwiIG9uIHRoZVxuLy8gICAgYXJyb3cgc2hhZnRzLiBUaGF0IGlzLCBhIHNlY29uZCBsb25nIHRoaW4gcmVjdGFuZ3VsYXIgU1ZHIHBhdGggaGFzIGJlZW5cbi8vICAgIHdyaXR0ZW4gZGlyZWN0bHkgb24gdG9wIG9mIGVhY2ggYXJyb3cgc2hhZnQuIFRoaXMgcmVpbmZvcmNlbWVudCBjYXVzZXNcbi8vICAgIHNvbWUgb2YgdGhlIHNjcmVlbiBwaXhlbHMgdG8gZGlzcGxheSBhcyBibGFjayBpbnN0ZWFkIG9mIHRoZSBhbnRpLWFsaWFzZWRcbi8vICAgIGdyYXkgcGl4ZWwgdGhhdCBhICBzaW5nbGUgcGF0aCB3b3VsZCBnZW5lcmF0ZS4gU28gd2UgZ2V0IGFycm93IHNoYWZ0c1xuLy8gICAgd2hvc2UgZWRnZXMgYXBwZWFyIHRvIGJlIHNoYXJwZXIuXG4vLyBJbiB0aGUga2F0ZXhJbWFnZXNEYXRhIG9iamVjdCBqdXN0IGJlbG93LCB0aGUgZGltZW5zaW9ucyBhbGxcbi8vIGNvcnJlc3BvbmQgdG8gcGF0aCBnZW9tZXRyeSBpbnNpZGUgdGhlIHJlbGV2YW50IFNWRy5cbi8vIEZvciBleGFtcGxlLCBcXG92ZXJyaWdodGFycm93IHVzZXMgdGhlIHNhbWUgYXJyb3doZWFkIGFzIGdseXBoIFUrMjE5MlxuLy8gZnJvbSB0aGUgS2FUZVggTWFpbiBmb250LiBUaGUgc2NhbGluZyBmYWN0b3IgaXMgMTAwMC5cbi8vIFRoYXQgaXMsIGluc2lkZSB0aGUgZm9udCwgdGhhdCBhcnJvd2hlYWQgaXMgNTIyIHVuaXRzIHRhbGwsIHdoaWNoXG4vLyBjb3JyZXNwb25kcyB0byAwLjUyMiBlbSBpbnNpZGUgdGhlIGRvY3VtZW50LlxuXG5cbnZhciBrYXRleEltYWdlc0RhdGEgPSB7XG4gIC8vICAgcGF0aChzKSwgbWluV2lkdGgsIGhlaWdodCwgYWxpZ25cbiAgb3ZlcnJpZ2h0YXJyb3c6IFtbXCJyaWdodGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICBvdmVybGVmdGFycm93OiBbW1wibGVmdGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNaW5ZTWluXCJdLFxuICB1bmRlcnJpZ2h0YXJyb3c6IFtbXCJyaWdodGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICB1bmRlcmxlZnRhcnJvdzogW1tcImxlZnRhcnJvd1wiXSwgMC44ODgsIDUyMiwgXCJ4TWluWU1pblwiXSxcbiAgeHJpZ2h0YXJyb3c6IFtbXCJyaWdodGFycm93XCJdLCAxLjQ2OSwgNTIyLCBcInhNYXhZTWluXCJdLFxuICB4bGVmdGFycm93OiBbW1wibGVmdGFycm93XCJdLCAxLjQ2OSwgNTIyLCBcInhNaW5ZTWluXCJdLFxuICBPdmVycmlnaHRhcnJvdzogW1tcImRvdWJsZXJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1NjAsIFwieE1heFlNaW5cIl0sXG4gIHhSaWdodGFycm93OiBbW1wiZG91YmxlcmlnaHRhcnJvd1wiXSwgMS41MjYsIDU2MCwgXCJ4TWF4WU1pblwiXSxcbiAgeExlZnRhcnJvdzogW1tcImRvdWJsZWxlZnRhcnJvd1wiXSwgMS41MjYsIDU2MCwgXCJ4TWluWU1pblwiXSxcbiAgb3ZlcmxlZnRoYXJwb29uOiBbW1wibGVmdGhhcnBvb25cIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIHhsZWZ0aGFycG9vbnVwOiBbW1wibGVmdGhhcnBvb25cIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIHhsZWZ0aGFycG9vbmRvd246IFtbXCJsZWZ0aGFycG9vbmRvd25cIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIG92ZXJyaWdodGhhcnBvb246IFtbXCJyaWdodGhhcnBvb25cIl0sIDAuODg4LCA1MjIsIFwieE1heFlNaW5cIl0sXG4gIHhyaWdodGhhcnBvb251cDogW1tcInJpZ2h0aGFycG9vblwiXSwgMC44ODgsIDUyMiwgXCJ4TWF4WU1pblwiXSxcbiAgeHJpZ2h0aGFycG9vbmRvd246IFtbXCJyaWdodGhhcnBvb25kb3duXCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICB4bG9uZ2VxdWFsOiBbW1wibG9uZ2VxdWFsXCJdLCAwLjg4OCwgMzM0LCBcInhNaW5ZTWluXCJdLFxuICB4dHdvaGVhZGxlZnRhcnJvdzogW1tcInR3b2hlYWRsZWZ0YXJyb3dcIl0sIDAuODg4LCAzMzQsIFwieE1pbllNaW5cIl0sXG4gIHh0d29oZWFkcmlnaHRhcnJvdzogW1tcInR3b2hlYWRyaWdodGFycm93XCJdLCAwLjg4OCwgMzM0LCBcInhNYXhZTWluXCJdLFxuICBvdmVybGVmdHJpZ2h0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIiwgXCJyaWdodGFycm93XCJdLCAwLjg4OCwgNTIyXSxcbiAgb3ZlcmJyYWNlOiBbW1wibGVmdGJyYWNlXCIsIFwibWlkYnJhY2VcIiwgXCJyaWdodGJyYWNlXCJdLCAxLjYsIDU0OF0sXG4gIHVuZGVyYnJhY2U6IFtbXCJsZWZ0YnJhY2V1bmRlclwiLCBcIm1pZGJyYWNldW5kZXJcIiwgXCJyaWdodGJyYWNldW5kZXJcIl0sIDEuNiwgNTQ4XSxcbiAgdW5kZXJsZWZ0cmlnaHRhcnJvdzogW1tcImxlZnRhcnJvd1wiLCBcInJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1MjJdLFxuICB4bGVmdHJpZ2h0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIiwgXCJyaWdodGFycm93XCJdLCAxLjc1LCA1MjJdLFxuICB4TGVmdHJpZ2h0YXJyb3c6IFtbXCJkb3VibGVsZWZ0YXJyb3dcIiwgXCJkb3VibGVyaWdodGFycm93XCJdLCAxLjc1LCA1NjBdLFxuICB4cmlnaHRsZWZ0aGFycG9vbnM6IFtbXCJsZWZ0aGFycG9vbmRvd25wbHVzXCIsIFwicmlnaHRoYXJwb29ucGx1c1wiXSwgMS43NSwgNzE2XSxcbiAgeGxlZnRyaWdodGhhcnBvb25zOiBbW1wibGVmdGhhcnBvb25wbHVzXCIsIFwicmlnaHRoYXJwb29uZG93bnBsdXNcIl0sIDEuNzUsIDcxNl0sXG4gIHhob29rbGVmdGFycm93OiBbW1wibGVmdGFycm93XCIsIFwicmlnaHRob29rXCJdLCAxLjA4LCA1MjJdLFxuICB4aG9va3JpZ2h0YXJyb3c6IFtbXCJsZWZ0aG9va1wiLCBcInJpZ2h0YXJyb3dcIl0sIDEuMDgsIDUyMl0sXG4gIG92ZXJsaW5lc2VnbWVudDogW1tcImxlZnRsaW5lc2VnbWVudFwiLCBcInJpZ2h0bGluZXNlZ21lbnRcIl0sIDAuODg4LCA1MjJdLFxuICB1bmRlcmxpbmVzZWdtZW50OiBbW1wibGVmdGxpbmVzZWdtZW50XCIsIFwicmlnaHRsaW5lc2VnbWVudFwiXSwgMC44ODgsIDUyMl0sXG4gIG92ZXJncm91cDogW1tcImxlZnRncm91cFwiLCBcInJpZ2h0Z3JvdXBcIl0sIDAuODg4LCAzNDJdLFxuICB1bmRlcmdyb3VwOiBbW1wibGVmdGdyb3VwdW5kZXJcIiwgXCJyaWdodGdyb3VwdW5kZXJcIl0sIDAuODg4LCAzNDJdLFxuICB4bWFwc3RvOiBbW1wibGVmdG1hcHN0b1wiLCBcInJpZ2h0YXJyb3dcIl0sIDEuNSwgNTIyXSxcbiAgeHRvZnJvbTogW1tcImxlZnRUb0Zyb21cIiwgXCJyaWdodFRvRnJvbVwiXSwgMS43NSwgNTI4XSxcbiAgLy8gVGhlIG5leHQgdGhyZWUgYXJyb3dzIGFyZSBmcm9tIHRoZSBtaGNoZW0gcGFja2FnZS5cbiAgLy8gSW4gbWhjaGVtLnN0eSwgbWluLWxlbmd0aCBpcyAyLjBlbS4gQnV0IHRoZXNlIGFycm93cyBtaWdodCBhcHBlYXIgaW4gdGhlXG4gIC8vIGRvY3VtZW50IGFzIFxceHJpZ2h0YXJyb3cgb3IgXFx4cmlnaHRsZWZ0aGFycG9vbnMuIFRob3NlIGhhdmVcbiAgLy8gbWluLWxlbmd0aCA9IDEuNzVlbSwgc28gd2Ugc2V0IG1pbi1sZW5ndGggb24gdGhlc2UgbmV4dCB0aHJlZSB0byBtYXRjaC5cbiAgeHJpZ2h0bGVmdGFycm93czogW1tcImJhcmFib3ZlbGVmdGFycm93XCIsIFwicmlnaHRhcnJvd2Fib3ZlYmFyXCJdLCAxLjc1LCA5MDFdLFxuICB4cmlnaHRlcXVpbGlicml1bTogW1tcImJhcmFib3Zlc2hvcnRsZWZ0aGFycG9vblwiLCBcInJpZ2h0aGFycG9vbmFib3Zlc2hvcnRiYXJcIl0sIDEuNzUsIDcxNl0sXG4gIHhsZWZ0ZXF1aWxpYnJpdW06IFtbXCJzaG9ydGJhcmFib3ZlbGVmdGhhcnBvb25cIiwgXCJzaG9ydHJpZ2h0aGFycG9vbmFib3ZlYmFyXCJdLCAxLjc1LCA3MTZdXG59O1xuXG52YXIgZ3JvdXBMZW5ndGggPSBmdW5jdGlvbiBncm91cExlbmd0aChhcmcpIHtcbiAgaWYgKGFyZy50eXBlID09PSBcIm9yZGdyb3VwXCIpIHtcbiAgICByZXR1cm4gYXJnLmJvZHkubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59O1xuXG52YXIgc3RyZXRjaHlfc3ZnU3BhbiA9IGZ1bmN0aW9uIHN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpIHtcbiAgLy8gQ3JlYXRlIGEgc3BhbiB3aXRoIGlubGluZSBTVkcgZm9yIHRoZSBlbGVtZW50LlxuICBmdW5jdGlvbiBidWlsZFN2Z1NwYW5fKCkge1xuICAgIHZhciB2aWV3Qm94V2lkdGggPSA0MDAwMDA7IC8vIGRlZmF1bHRcblxuICAgIHZhciBsYWJlbCA9IGdyb3VwLmxhYmVsLnN1YnN0cigxKTtcblxuICAgIGlmICh1dGlscy5jb250YWlucyhbXCJ3aWRlaGF0XCIsIFwid2lkZWNoZWNrXCIsIFwid2lkZXRpbGRlXCIsIFwidXRpbGRlXCJdLCBsYWJlbCkpIHtcbiAgICAgIC8vIEVhY2ggdHlwZSBpbiB0aGUgYGlmYCBzdGF0ZW1lbnQgY29ycmVzcG9uZHMgdG8gb25lIG9mIHRoZSBQYXJzZU5vZGVcbiAgICAgIC8vIHR5cGVzIGJlbG93LiBUaGlzIG5hcnJvd2luZyBpcyByZXF1aXJlZCB0byBhY2Nlc3MgYGdycC5iYXNlYC5cbiAgICAgIHZhciBncnAgPSBncm91cDsgLy8gVGhlcmUgYXJlIGZvdXIgU1ZHIGltYWdlcyBhdmFpbGFibGUgZm9yIGVhY2ggZnVuY3Rpb24uXG4gICAgICAvLyBDaG9vc2UgYSB0YWxsZXIgaW1hZ2Ugd2hlbiB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0ZXJzLlxuXG4gICAgICB2YXIgbnVtQ2hhcnMgPSBncm91cExlbmd0aChncnAuYmFzZSk7XG4gICAgICB2YXIgdmlld0JveEhlaWdodDtcbiAgICAgIHZhciBwYXRoTmFtZTtcblxuICAgICAgdmFyIF9oZWlnaHQ7XG5cbiAgICAgIGlmIChudW1DaGFycyA+IDUpIHtcbiAgICAgICAgaWYgKGxhYmVsID09PSBcIndpZGVoYXRcIiB8fCBsYWJlbCA9PT0gXCJ3aWRlY2hlY2tcIikge1xuICAgICAgICAgIHZpZXdCb3hIZWlnaHQgPSA0MjA7XG4gICAgICAgICAgdmlld0JveFdpZHRoID0gMjM2NDtcbiAgICAgICAgICBfaGVpZ2h0ID0gMC40MjtcbiAgICAgICAgICBwYXRoTmFtZSA9IGxhYmVsICsgXCI0XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlld0JveEhlaWdodCA9IDMxMjtcbiAgICAgICAgICB2aWV3Qm94V2lkdGggPSAyMzQwO1xuICAgICAgICAgIF9oZWlnaHQgPSAwLjM0O1xuICAgICAgICAgIHBhdGhOYW1lID0gXCJ0aWxkZTRcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGltZ0luZGV4ID0gWzEsIDEsIDIsIDIsIDMsIDNdW251bUNoYXJzXTtcblxuICAgICAgICBpZiAobGFiZWwgPT09IFwid2lkZWhhdFwiIHx8IGxhYmVsID09PSBcIndpZGVjaGVja1wiKSB7XG4gICAgICAgICAgdmlld0JveFdpZHRoID0gWzAsIDEwNjIsIDIzNjQsIDIzNjQsIDIzNjRdW2ltZ0luZGV4XTtcbiAgICAgICAgICB2aWV3Qm94SGVpZ2h0ID0gWzAsIDIzOSwgMzAwLCAzNjAsIDQyMF1baW1nSW5kZXhdO1xuICAgICAgICAgIF9oZWlnaHQgPSBbMCwgMC4yNCwgMC4zLCAwLjMsIDAuMzYsIDAuNDJdW2ltZ0luZGV4XTtcbiAgICAgICAgICBwYXRoTmFtZSA9IGxhYmVsICsgaW1nSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlld0JveFdpZHRoID0gWzAsIDYwMCwgMTAzMywgMjMzOSwgMjM0MF1baW1nSW5kZXhdO1xuICAgICAgICAgIHZpZXdCb3hIZWlnaHQgPSBbMCwgMjYwLCAyODYsIDMwNiwgMzEyXVtpbWdJbmRleF07XG4gICAgICAgICAgX2hlaWdodCA9IFswLCAwLjI2LCAwLjI4NiwgMC4zLCAwLjMwNiwgMC4zNF1baW1nSW5kZXhdO1xuICAgICAgICAgIHBhdGhOYW1lID0gXCJ0aWxkZVwiICsgaW1nSW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHBhdGggPSBuZXcgZG9tVHJlZV9QYXRoTm9kZShwYXRoTmFtZSk7XG4gICAgICB2YXIgc3ZnTm9kZSA9IG5ldyBTdmdOb2RlKFtwYXRoXSwge1xuICAgICAgICBcIndpZHRoXCI6IFwiMTAwJVwiLFxuICAgICAgICBcImhlaWdodFwiOiBfaGVpZ2h0ICsgXCJlbVwiLFxuICAgICAgICBcInZpZXdCb3hcIjogXCIwIDAgXCIgKyB2aWV3Qm94V2lkdGggKyBcIiBcIiArIHZpZXdCb3hIZWlnaHQsXG4gICAgICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBcIm5vbmVcIlxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzcGFuOiBidWlsZENvbW1vbi5tYWtlU3ZnU3BhbihbXSwgW3N2Z05vZGVdLCBvcHRpb25zKSxcbiAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogX2hlaWdodFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHNwYW5zID0gW107XG4gICAgICB2YXIgZGF0YSA9IGthdGV4SW1hZ2VzRGF0YVtsYWJlbF07XG4gICAgICB2YXIgcGF0aHMgPSBkYXRhWzBdLFxuICAgICAgICAgIF9taW5XaWR0aCA9IGRhdGFbMV0sXG4gICAgICAgICAgX3ZpZXdCb3hIZWlnaHQgPSBkYXRhWzJdO1xuXG4gICAgICB2YXIgX2hlaWdodDIgPSBfdmlld0JveEhlaWdodCAvIDEwMDA7XG5cbiAgICAgIHZhciBudW1TdmdDaGlsZHJlbiA9IHBhdGhzLmxlbmd0aDtcbiAgICAgIHZhciB3aWR0aENsYXNzZXM7XG4gICAgICB2YXIgYWxpZ25zO1xuXG4gICAgICBpZiAobnVtU3ZnQ2hpbGRyZW4gPT09IDEpIHtcbiAgICAgICAgLy8gJEZsb3dGaXhNZTogQWxsIHRoZXNlIGNhc2VzIG11c3QgYmUgb2YgdGhlIDQtdHVwbGUgdHlwZS5cbiAgICAgICAgdmFyIGFsaWduMSA9IGRhdGFbM107XG4gICAgICAgIHdpZHRoQ2xhc3NlcyA9IFtcImhpZGUtdGFpbFwiXTtcbiAgICAgICAgYWxpZ25zID0gW2FsaWduMV07XG4gICAgICB9IGVsc2UgaWYgKG51bVN2Z0NoaWxkcmVuID09PSAyKSB7XG4gICAgICAgIHdpZHRoQ2xhc3NlcyA9IFtcImhhbGZhcnJvdy1sZWZ0XCIsIFwiaGFsZmFycm93LXJpZ2h0XCJdO1xuICAgICAgICBhbGlnbnMgPSBbXCJ4TWluWU1pblwiLCBcInhNYXhZTWluXCJdO1xuICAgICAgfSBlbHNlIGlmIChudW1TdmdDaGlsZHJlbiA9PT0gMykge1xuICAgICAgICB3aWR0aENsYXNzZXMgPSBbXCJicmFjZS1sZWZ0XCIsIFwiYnJhY2UtY2VudGVyXCIsIFwiYnJhY2UtcmlnaHRcIl07XG4gICAgICAgIGFsaWducyA9IFtcInhNaW5ZTWluXCIsIFwieE1pZFlNaW5cIiwgXCJ4TWF4WU1pblwiXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvcnJlY3Qga2F0ZXhJbWFnZXNEYXRhIG9yIHVwZGF0ZSBjb2RlIGhlcmUgdG8gc3VwcG9ydFxcbiAgICAgICAgICAgICAgICAgICAgXCIgKyBudW1TdmdDaGlsZHJlbiArIFwiIGNoaWxkcmVuLlwiKTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1TdmdDaGlsZHJlbjsgaSsrKSB7XG4gICAgICAgIHZhciBfcGF0aCA9IG5ldyBkb21UcmVlX1BhdGhOb2RlKHBhdGhzW2ldKTtcblxuICAgICAgICB2YXIgX3N2Z05vZGUgPSBuZXcgU3ZnTm9kZShbX3BhdGhdLCB7XG4gICAgICAgICAgXCJ3aWR0aFwiOiBcIjQwMGVtXCIsXG4gICAgICAgICAgXCJoZWlnaHRcIjogX2hlaWdodDIgKyBcImVtXCIsXG4gICAgICAgICAgXCJ2aWV3Qm94XCI6IFwiMCAwIFwiICsgdmlld0JveFdpZHRoICsgXCIgXCIgKyBfdmlld0JveEhlaWdodCxcbiAgICAgICAgICBcInByZXNlcnZlQXNwZWN0UmF0aW9cIjogYWxpZ25zW2ldICsgXCIgc2xpY2VcIlxuICAgICAgICB9KTtcblxuICAgICAgICB2YXIgX3NwYW4gPSBidWlsZENvbW1vbi5tYWtlU3ZnU3Bhbihbd2lkdGhDbGFzc2VzW2ldXSwgW19zdmdOb2RlXSwgb3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKG51bVN2Z0NoaWxkcmVuID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNwYW46IF9zcGFuLFxuICAgICAgICAgICAgbWluV2lkdGg6IF9taW5XaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogX2hlaWdodDJcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF9zcGFuLnN0eWxlLmhlaWdodCA9IF9oZWlnaHQyICsgXCJlbVwiO1xuICAgICAgICAgIHNwYW5zLnB1c2goX3NwYW4pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNwYW46IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcInN0cmV0Y2h5XCJdLCBzcGFucywgb3B0aW9ucyksXG4gICAgICAgIG1pbldpZHRoOiBfbWluV2lkdGgsXG4gICAgICAgIGhlaWdodDogX2hlaWdodDJcbiAgICAgIH07XG4gICAgfVxuICB9IC8vIGJ1aWxkU3ZnU3Bhbl8oKVxuXG5cbiAgdmFyIF9idWlsZFN2Z1NwYW5fID0gYnVpbGRTdmdTcGFuXygpLFxuICAgICAgc3BhbiA9IF9idWlsZFN2Z1NwYW5fLnNwYW4sXG4gICAgICBtaW5XaWR0aCA9IF9idWlsZFN2Z1NwYW5fLm1pbldpZHRoLFxuICAgICAgaGVpZ2h0ID0gX2J1aWxkU3ZnU3Bhbl8uaGVpZ2h0OyAvLyBOb3RlIHRoYXQgd2UgYXJlIHJldHVybmluZyBzcGFuLmRlcHRoID0gMC5cbiAgLy8gQW55IGFkanVzdG1lbnRzIHJlbGF0aXZlIHRvIHRoZSBiYXNlbGluZSBtdXN0IGJlIGRvbmUgaW4gYnVpbGRIVE1MLlxuXG5cbiAgc3Bhbi5oZWlnaHQgPSBoZWlnaHQ7XG4gIHNwYW4uc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgXCJlbVwiO1xuXG4gIGlmIChtaW5XaWR0aCA+IDApIHtcbiAgICBzcGFuLnN0eWxlLm1pbldpZHRoID0gbWluV2lkdGggKyBcImVtXCI7XG4gIH1cblxuICByZXR1cm4gc3Bhbjtcbn07XG5cbnZhciBzdHJldGNoeV9lbmNsb3NlU3BhbiA9IGZ1bmN0aW9uIGVuY2xvc2VTcGFuKGlubmVyLCBsYWJlbCwgcGFkLCBvcHRpb25zKSB7XG4gIC8vIFJldHVybiBhbiBpbWFnZSBzcGFuIGZvciBcXGNhbmNlbCwgXFxiY2FuY2VsLCBcXHhjYW5jZWwsIG9yIFxcZmJveFxuICB2YXIgaW1nO1xuICB2YXIgdG90YWxIZWlnaHQgPSBpbm5lci5oZWlnaHQgKyBpbm5lci5kZXB0aCArIDIgKiBwYWQ7XG5cbiAgaWYgKC9mYm94fGNvbG9yLy50ZXN0KGxhYmVsKSkge1xuICAgIGltZyA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcInN0cmV0Y2h5XCIsIGxhYmVsXSwgW10sIG9wdGlvbnMpO1xuXG4gICAgaWYgKGxhYmVsID09PSBcImZib3hcIikge1xuICAgICAgdmFyIGNvbG9yID0gb3B0aW9ucy5jb2xvciAmJiBvcHRpb25zLmdldENvbG9yKCk7XG5cbiAgICAgIGlmIChjb2xvcikge1xuICAgICAgICBpbWcuc3R5bGUuYm9yZGVyQ29sb3IgPSBjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gXFxjYW5jZWwsIFxcYmNhbmNlbCwgb3IgXFx4Y2FuY2VsXG4gICAgLy8gU2luY2UgXFxjYW5jZWwncyBTVkcgaXMgaW5saW5lIGFuZCBpdCBvbWl0cyB0aGUgdmlld0JveCBhdHRyaWJ1dGUsXG4gICAgLy8gaXRzIHN0cm9rZS13aWR0aCB3aWxsIG5vdCB2YXJ5IHdpdGggc3BhbiBhcmVhLlxuICAgIHZhciBsaW5lcyA9IFtdO1xuXG4gICAgaWYgKC9eW2J4XWNhbmNlbCQvLnRlc3QobGFiZWwpKSB7XG4gICAgICBsaW5lcy5wdXNoKG5ldyBMaW5lTm9kZSh7XG4gICAgICAgIFwieDFcIjogXCIwXCIsXG4gICAgICAgIFwieTFcIjogXCIwXCIsXG4gICAgICAgIFwieDJcIjogXCIxMDAlXCIsXG4gICAgICAgIFwieTJcIjogXCIxMDAlXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMC4wNDZlbVwiXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKC9eeD9jYW5jZWwkLy50ZXN0KGxhYmVsKSkge1xuICAgICAgbGluZXMucHVzaChuZXcgTGluZU5vZGUoe1xuICAgICAgICBcIngxXCI6IFwiMFwiLFxuICAgICAgICBcInkxXCI6IFwiMTAwJVwiLFxuICAgICAgICBcIngyXCI6IFwiMTAwJVwiLFxuICAgICAgICBcInkyXCI6IFwiMFwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjAuMDQ2ZW1cIlxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHZhciBzdmdOb2RlID0gbmV3IFN2Z05vZGUobGluZXMsIHtcbiAgICAgIFwid2lkdGhcIjogXCIxMDAlXCIsXG4gICAgICBcImhlaWdodFwiOiB0b3RhbEhlaWdodCArIFwiZW1cIlxuICAgIH0pO1xuICAgIGltZyA9IGJ1aWxkQ29tbW9uLm1ha2VTdmdTcGFuKFtdLCBbc3ZnTm9kZV0sIG9wdGlvbnMpO1xuICB9XG5cbiAgaW1nLmhlaWdodCA9IHRvdGFsSGVpZ2h0O1xuICBpbWcuc3R5bGUuaGVpZ2h0ID0gdG90YWxIZWlnaHQgKyBcImVtXCI7XG4gIHJldHVybiBpbWc7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzdHJldGNoeSA9ICh7XG4gIGVuY2xvc2VTcGFuOiBzdHJldGNoeV9lbmNsb3NlU3BhbixcbiAgbWF0aE1Mbm9kZTogc3RyZXRjaHlfbWF0aE1Mbm9kZSxcbiAgc3ZnU3Bhbjogc3RyZXRjaHlfc3ZnU3BhblxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvYWNjZW50LmpzXG5cblxuXG5cblxuXG5cblxuXG4vLyBOT1RFOiBVbmxpa2UgbW9zdCBgaHRtbEJ1aWxkZXJgcywgdGhpcyBvbmUgaGFuZGxlcyBub3Qgb25seSBcImFjY2VudFwiLCBidXRcbnZhciBhY2NlbnRfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncnAsIG9wdGlvbnMpIHtcbiAgLy8gQWNjZW50cyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZy4gNDQzLCBydWxlIDEyLlxuICB2YXIgYmFzZTtcbiAgdmFyIGdyb3VwO1xuICB2YXIgc3VwU3ViID0gY2hlY2tOb2RlVHlwZShncnAsIFwic3Vwc3ViXCIpO1xuICB2YXIgc3VwU3ViR3JvdXA7XG5cbiAgaWYgKHN1cFN1Yikge1xuICAgIC8vIElmIG91ciBiYXNlIGlzIGEgY2hhcmFjdGVyIGJveCwgYW5kIHdlIGhhdmUgc3VwZXJzY3JpcHRzIGFuZFxuICAgIC8vIHN1YnNjcmlwdHMsIHRoZSBzdXBzdWIgd2lsbCBkZWZlciB0byB1cy4gSW4gcGFydGljdWxhciwgd2Ugd2FudFxuICAgIC8vIHRvIGF0dGFjaCB0aGUgc3VwZXJzY3JpcHRzIGFuZCBzdWJzY3JpcHRzIHRvIHRoZSBpbm5lciBib2R5IChzb1xuICAgIC8vIHRoYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgd29uJ3QgYmVcbiAgICAvLyBhZmZlY3RlZCBieSB0aGUgaGVpZ2h0IG9mIHRoZSBhY2NlbnQpLiBXZSBhY2NvbXBsaXNoIHRoaXMgYnlcbiAgICAvLyBzdGlja2luZyB0aGUgYmFzZSBvZiB0aGUgYWNjZW50IGludG8gdGhlIGJhc2Ugb2YgdGhlIHN1cHN1YiwgYW5kXG4gICAgLy8gcmVuZGVyaW5nIHRoYXQsIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2Ygd2hlcmUgdGhlIGFjY2VudCBpcy5cbiAgICAvLyBUaGUgcmVhbCBhY2NlbnQgZ3JvdXAgaXMgdGhlIGJhc2Ugb2YgdGhlIHN1cHN1YiBncm91cFxuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoc3VwU3ViLmJhc2UsIFwiYWNjZW50XCIpOyAvLyBUaGUgY2hhcmFjdGVyIGJveCBpcyB0aGUgYmFzZSBvZiB0aGUgYWNjZW50IGdyb3VwXG5cbiAgICBiYXNlID0gZ3JvdXAuYmFzZTsgLy8gU3RpY2sgdGhlIGNoYXJhY3RlciBib3ggaW50byB0aGUgYmFzZSBvZiB0aGUgc3Vwc3ViIGdyb3VwXG5cbiAgICBzdXBTdWIuYmFzZSA9IGJhc2U7IC8vIFJlcmVuZGVyIHRoZSBzdXBzdWIgZ3JvdXAgd2l0aCBpdHMgbmV3IGJhc2UsIGFuZCBzdG9yZSB0aGF0XG4gICAgLy8gcmVzdWx0LlxuXG4gICAgc3VwU3ViR3JvdXAgPSBhc3NlcnRTcGFuKGJ1aWxkSFRNTF9idWlsZEdyb3VwKHN1cFN1Yiwgb3B0aW9ucykpOyAvLyByZXNldCBvcmlnaW5hbCBiYXNlXG5cbiAgICBzdXBTdWIuYmFzZSA9IGdyb3VwO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcImFjY2VudFwiKTtcbiAgICBiYXNlID0gZ3JvdXAuYmFzZTtcbiAgfSAvLyBCdWlsZCB0aGUgYmFzZSBncm91cFxuXG5cbiAgdmFyIGJvZHkgPSBidWlsZEhUTUxfYnVpbGRHcm91cChiYXNlLCBvcHRpb25zLmhhdmluZ0NyYW1wZWRTdHlsZSgpKTsgLy8gRG9lcyB0aGUgYWNjZW50IG5lZWQgdG8gc2hpZnQgZm9yIHRoZSBza2V3IG9mIGEgY2hhcmFjdGVyP1xuXG4gIHZhciBtdXN0U2hpZnQgPSBncm91cC5pc1NoaWZ0eSAmJiB1dGlscy5pc0NoYXJhY3RlckJveChiYXNlKTsgLy8gQ2FsY3VsYXRlIHRoZSBza2V3IG9mIHRoZSBhY2NlbnQuIFRoaXMgaXMgYmFzZWQgb24gdGhlIGxpbmUgXCJJZiB0aGVcbiAgLy8gbnVjbGV1cyBpcyBub3QgYSBzaW5nbGUgY2hhcmFjdGVyLCBsZXQgcyA9IDA7IG90aGVyd2lzZSBzZXQgcyB0byB0aGVcbiAgLy8ga2VybiBhbW91bnQgZm9yIHRoZSBudWNsZXVzIGZvbGxvd2VkIGJ5IHRoZSBcXHNrZXdjaGFyIG9mIGl0cyBmb250LlwiXG4gIC8vIE5vdGUgdGhhdCBvdXIgc2tldyBtZXRyaWNzIGFyZSBqdXN0IHRoZSBrZXJuIGJldHdlZW4gZWFjaCBjaGFyYWN0ZXJcbiAgLy8gYW5kIHRoZSBza2V3Y2hhci5cblxuICB2YXIgc2tldyA9IDA7XG5cbiAgaWYgKG11c3RTaGlmdCkge1xuICAgIC8vIElmIHRoZSBiYXNlIGlzIGEgY2hhcmFjdGVyIGJveCwgdGhlbiB3ZSB3YW50IHRoZSBza2V3IG9mIHRoZVxuICAgIC8vIGlubmVybW9zdCBjaGFyYWN0ZXIuIFRvIGRvIHRoYXQsIHdlIGZpbmQgdGhlIGlubmVybW9zdCBjaGFyYWN0ZXI6XG4gICAgdmFyIGJhc2VDaGFyID0gdXRpbHMuZ2V0QmFzZUVsZW0oYmFzZSk7IC8vIFRoZW4sIHdlIHJlbmRlciBpdHMgZ3JvdXAgdG8gZ2V0IHRoZSBzeW1ib2wgaW5zaWRlIGl0XG5cbiAgICB2YXIgYmFzZUdyb3VwID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoYmFzZUNoYXIsIG9wdGlvbnMuaGF2aW5nQ3JhbXBlZFN0eWxlKCkpOyAvLyBGaW5hbGx5LCB3ZSBwdWxsIHRoZSBza2V3IG9mZiBvZiB0aGUgc3ltYm9sLlxuXG4gICAgc2tldyA9IGFzc2VydFN5bWJvbERvbU5vZGUoYmFzZUdyb3VwKS5za2V3OyAvLyBOb3RlIHRoYXQgd2Ugbm93IHRocm93IGF3YXkgYmFzZUdyb3VwLCBiZWNhdXNlIHRoZSBsYXllcnMgd2VcbiAgICAvLyByZW1vdmVkIHdpdGggZ2V0QmFzZUVsZW0gbWlnaHQgY29udGFpbiB0aGluZ3MgbGlrZSBcXGNvbG9yIHdoaWNoXG4gICAgLy8gd2UgY2FuJ3QgZ2V0IHJpZCBvZi5cbiAgICAvLyBUT0RPKGVtaWx5KTogRmluZCBhIGJldHRlciB3YXkgdG8gZ2V0IHRoZSBza2V3XG4gIH0gLy8gY2FsY3VsYXRlIHRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgYm9keSBhbmQgdGhlIGFjY2VudFxuXG5cbiAgdmFyIGNsZWFyYW5jZSA9IE1hdGgubWluKGJvZHkuaGVpZ2h0LCBvcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodCk7IC8vIEJ1aWxkIHRoZSBhY2NlbnRcblxuICB2YXIgYWNjZW50Qm9keTtcblxuICBpZiAoIWdyb3VwLmlzU3RyZXRjaHkpIHtcbiAgICB2YXIgYWNjZW50O1xuICAgIHZhciB3aWR0aDtcblxuICAgIGlmIChncm91cC5sYWJlbCA9PT0gXCJcXFxcdmVjXCIpIHtcbiAgICAgIC8vIEJlZm9yZSB2ZXJzaW9uIDAuOSwgXFx2ZWMgdXNlZCB0aGUgY29tYmluaW5nIGZvbnQgZ2x5cGggVSsyMEQ3LlxuICAgICAgLy8gQnV0IGJyb3dzZXJzLCBlc3BlY2lhbGx5IFNhZmFyaSwgYXJlIG5vdCBjb25zaXN0ZW50IGluIGhvdyB0aGV5XG4gICAgICAvLyByZW5kZXIgY29tYmluaW5nIGNoYXJhY3RlcnMgd2hlbiBub3QgcHJlY2VkZWQgYnkgYSBjaGFyYWN0ZXIuXG4gICAgICAvLyBTbyBub3cgd2UgdXNlIGFuIFNWRy5cbiAgICAgIC8vIElmIFNhZmFyaSByZWZvcm1zLCB3ZSBzaG91bGQgY29uc2lkZXIgcmV2ZXJ0aW5nIHRvIHRoZSBnbHlwaC5cbiAgICAgIGFjY2VudCA9IGJ1aWxkQ29tbW9uLnN0YXRpY1N2ZyhcInZlY1wiLCBvcHRpb25zKTtcbiAgICAgIHdpZHRoID0gYnVpbGRDb21tb24uc3ZnRGF0YS52ZWNbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjY2VudCA9IGJ1aWxkQ29tbW9uLm1ha2VPcmQoe1xuICAgICAgICBtb2RlOiBncm91cC5tb2RlLFxuICAgICAgICB0ZXh0OiBncm91cC5sYWJlbFxuICAgICAgfSwgb3B0aW9ucywgXCJ0ZXh0b3JkXCIpO1xuICAgICAgYWNjZW50ID0gYXNzZXJ0U3ltYm9sRG9tTm9kZShhY2NlbnQpOyAvLyBSZW1vdmUgdGhlIGl0YWxpYyBjb3JyZWN0aW9uIG9mIHRoZSBhY2NlbnQsIGJlY2F1c2UgaXQgb25seSBzZXJ2ZXMgdG9cbiAgICAgIC8vIHNoaWZ0IHRoZSBhY2NlbnQgb3ZlciB0byBhIHBsYWNlIHdlIGRvbid0IHdhbnQuXG5cbiAgICAgIGFjY2VudC5pdGFsaWMgPSAwO1xuICAgICAgd2lkdGggPSBhY2NlbnQud2lkdGg7XG4gICAgfVxuXG4gICAgYWNjZW50Qm9keSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImFjY2VudC1ib2R5XCJdLCBbYWNjZW50XSk7IC8vIFwiRnVsbFwiIGFjY2VudHMgZXhwYW5kIHRoZSB3aWR0aCBvZiB0aGUgcmVzdWx0aW5nIHN5bWJvbCB0byBiZVxuICAgIC8vIGF0IGxlYXN0IHRoZSB3aWR0aCBvZiB0aGUgYWNjZW50LCBhbmQgb3ZlcmxhcCBkaXJlY3RseSBvbnRvIHRoZVxuICAgIC8vIGNoYXJhY3RlciB3aXRob3V0IGFueSB2ZXJ0aWNhbCBvZmZzZXQuXG5cbiAgICB2YXIgYWNjZW50RnVsbCA9IGdyb3VwLmxhYmVsID09PSBcIlxcXFx0ZXh0Y2lyY2xlZFwiO1xuXG4gICAgaWYgKGFjY2VudEZ1bGwpIHtcbiAgICAgIGFjY2VudEJvZHkuY2xhc3Nlcy5wdXNoKCdhY2NlbnQtZnVsbCcpO1xuICAgICAgY2xlYXJhbmNlID0gYm9keS5oZWlnaHQ7XG4gICAgfSAvLyBTaGlmdCB0aGUgYWNjZW50IG92ZXIgYnkgdGhlIHNrZXcuXG5cblxuICAgIHZhciBsZWZ0ID0gc2tldzsgLy8gQ1NTIGRlZmluZXMgYC5rYXRleCAuYWNjZW50IC5hY2NlbnQtYm9keTpub3QoLmFjY2VudC1mdWxsKSB7IHdpZHRoOiAwIH1gXG4gICAgLy8gc28gdGhhdCB0aGUgYWNjZW50IGRvZXNuJ3QgY29udHJpYnV0ZSB0byB0aGUgYm91bmRpbmcgYm94LlxuICAgIC8vIFdlIG5lZWQgdG8gc2hpZnQgdGhlIGNoYXJhY3RlciBieSBpdHMgd2lkdGggKGVmZmVjdGl2ZWx5IGhhbGZcbiAgICAvLyBpdHMgd2lkdGgpIHRvIGNvbXBlbnNhdGUuXG5cbiAgICBpZiAoIWFjY2VudEZ1bGwpIHtcbiAgICAgIGxlZnQgLT0gd2lkdGggLyAyO1xuICAgIH1cblxuICAgIGFjY2VudEJvZHkuc3R5bGUubGVmdCA9IGxlZnQgKyBcImVtXCI7IC8vIFxcdGV4dGNpcmNsZWQgdXNlcyB0aGUgXFxiaWdjaXJjIGdseXBoLCBzbyBpdCBuZWVkcyBzb21lXG4gICAgLy8gdmVydGljYWwgYWRqdXN0bWVudCB0byBtYXRjaCBMYVRlWC5cblxuICAgIGlmIChncm91cC5sYWJlbCA9PT0gXCJcXFxcdGV4dGNpcmNsZWRcIikge1xuICAgICAgYWNjZW50Qm9keS5zdHlsZS50b3AgPSBcIi4yZW1cIjtcbiAgICB9XG5cbiAgICBhY2NlbnRCb2R5ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJmaXJzdEJhc2VsaW5lXCIsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJvZHlcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IC1jbGVhcmFuY2VcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGFjY2VudEJvZHlcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgYWNjZW50Qm9keSA9IHN0cmV0Y2h5LnN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpO1xuICAgIGFjY2VudEJvZHkgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYm9keVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYWNjZW50Qm9keSxcbiAgICAgICAgd3JhcHBlckNsYXNzZXM6IFtcInN2Zy1hbGlnblwiXSxcbiAgICAgICAgd3JhcHBlclN0eWxlOiBza2V3ID4gMCA/IHtcbiAgICAgICAgICB3aWR0aDogXCJjYWxjKDEwMCUgLSBcIiArIDIgKiBza2V3ICsgXCJlbSlcIixcbiAgICAgICAgICBtYXJnaW5MZWZ0OiAyICogc2tldyArIFwiZW1cIlxuICAgICAgICB9IDogdW5kZWZpbmVkXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9XG5cbiAgdmFyIGFjY2VudFdyYXAgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwiYWNjZW50XCJdLCBbYWNjZW50Qm9keV0sIG9wdGlvbnMpO1xuXG4gIGlmIChzdXBTdWJHcm91cCkge1xuICAgIC8vIEhlcmUsIHdlIHJlcGxhY2UgdGhlIFwiYmFzZVwiIGNoaWxkIG9mIHRoZSBzdXBzdWIgd2l0aCBvdXIgbmV3bHlcbiAgICAvLyBnZW5lcmF0ZWQgYWNjZW50LlxuICAgIHN1cFN1Ykdyb3VwLmNoaWxkcmVuWzBdID0gYWNjZW50V3JhcDsgLy8gU2luY2Ugd2UgZG9uJ3QgcmVydW4gdGhlIGhlaWdodCBjYWxjdWxhdGlvbiBhZnRlciByZXBsYWNpbmcgdGhlXG4gICAgLy8gYWNjZW50LCB3ZSBtYW51YWxseSByZWNhbGN1bGF0ZSBoZWlnaHQuXG5cbiAgICBzdXBTdWJHcm91cC5oZWlnaHQgPSBNYXRoLm1heChhY2NlbnRXcmFwLmhlaWdodCwgc3VwU3ViR3JvdXAuaGVpZ2h0KTsgLy8gQWNjZW50cyBzaG91bGQgYWx3YXlzIGJlIG9yZHMsIGV2ZW4gd2hlbiB0aGVpciBpbm5hcmRzIGFyZSBub3QuXG5cbiAgICBzdXBTdWJHcm91cC5jbGFzc2VzWzBdID0gXCJtb3JkXCI7XG4gICAgcmV0dXJuIHN1cFN1Ykdyb3VwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhY2NlbnRXcmFwO1xuICB9XG59O1xuXG52YXIgYWNjZW50X21hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBhY2NlbnROb2RlID0gZ3JvdXAuaXNTdHJldGNoeSA/IHN0cmV0Y2h5Lm1hdGhNTG5vZGUoZ3JvdXAubGFiZWwpIDogbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAubGFiZWwsIGdyb3VwLm1vZGUpXSk7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb3ZlclwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5iYXNlLCBvcHRpb25zKSwgYWNjZW50Tm9kZV0pO1xuICBub2RlLnNldEF0dHJpYnV0ZShcImFjY2VudFwiLCBcInRydWVcIik7XG4gIHJldHVybiBub2RlO1xufTtcblxudmFyIE5PTl9TVFJFVENIWV9BQ0NFTlRfUkVHRVggPSBuZXcgUmVnRXhwKFtcIlxcXFxhY3V0ZVwiLCBcIlxcXFxncmF2ZVwiLCBcIlxcXFxkZG90XCIsIFwiXFxcXHRpbGRlXCIsIFwiXFxcXGJhclwiLCBcIlxcXFxicmV2ZVwiLCBcIlxcXFxjaGVja1wiLCBcIlxcXFxoYXRcIiwgXCJcXFxcdmVjXCIsIFwiXFxcXGRvdFwiLCBcIlxcXFxtYXRocmluZ1wiXS5tYXAoZnVuY3Rpb24gKGFjY2VudCkge1xuICByZXR1cm4gXCJcXFxcXCIgKyBhY2NlbnQ7XG59KS5qb2luKFwifFwiKSk7IC8vIEFjY2VudHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImFjY2VudFwiLFxuICBuYW1lczogW1wiXFxcXGFjdXRlXCIsIFwiXFxcXGdyYXZlXCIsIFwiXFxcXGRkb3RcIiwgXCJcXFxcdGlsZGVcIiwgXCJcXFxcYmFyXCIsIFwiXFxcXGJyZXZlXCIsIFwiXFxcXGNoZWNrXCIsIFwiXFxcXGhhdFwiLCBcIlxcXFx2ZWNcIiwgXCJcXFxcZG90XCIsIFwiXFxcXG1hdGhyaW5nXCIsIFwiXFxcXHdpZGVjaGVja1wiLCBcIlxcXFx3aWRlaGF0XCIsIFwiXFxcXHdpZGV0aWxkZVwiLCBcIlxcXFxvdmVycmlnaHRhcnJvd1wiLCBcIlxcXFxvdmVybGVmdGFycm93XCIsIFwiXFxcXE92ZXJyaWdodGFycm93XCIsIFwiXFxcXG92ZXJsZWZ0cmlnaHRhcnJvd1wiLCBcIlxcXFxvdmVyZ3JvdXBcIiwgXCJcXFxcb3ZlcmxpbmVzZWdtZW50XCIsIFwiXFxcXG92ZXJsZWZ0aGFycG9vblwiLCBcIlxcXFxvdmVycmlnaHRoYXJwb29uXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIGJhc2UgPSBhcmdzWzBdO1xuICAgIHZhciBpc1N0cmV0Y2h5ID0gIU5PTl9TVFJFVENIWV9BQ0NFTlRfUkVHRVgudGVzdChjb250ZXh0LmZ1bmNOYW1lKTtcbiAgICB2YXIgaXNTaGlmdHkgPSAhaXNTdHJldGNoeSB8fCBjb250ZXh0LmZ1bmNOYW1lID09PSBcIlxcXFx3aWRlaGF0XCIgfHwgY29udGV4dC5mdW5jTmFtZSA9PT0gXCJcXFxcd2lkZXRpbGRlXCIgfHwgY29udGV4dC5mdW5jTmFtZSA9PT0gXCJcXFxcd2lkZWNoZWNrXCI7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiYWNjZW50XCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGNvbnRleHQuZnVuY05hbWUsXG4gICAgICBpc1N0cmV0Y2h5OiBpc1N0cmV0Y2h5LFxuICAgICAgaXNTaGlmdHk6IGlzU2hpZnR5LFxuICAgICAgYmFzZTogYmFzZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhY2NlbnRfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFjY2VudF9tYXRobWxCdWlsZGVyXG59KTsgLy8gVGV4dC1tb2RlIGFjY2VudHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImFjY2VudFwiLFxuICBuYW1lczogW1wiXFxcXCdcIiwgXCJcXFxcYFwiLCBcIlxcXFxeXCIsIFwiXFxcXH5cIiwgXCJcXFxcPVwiLCBcIlxcXFx1XCIsIFwiXFxcXC5cIiwgJ1xcXFxcIicsIFwiXFxcXHJcIiwgXCJcXFxcSFwiLCBcIlxcXFx2XCIsIFwiXFxcXHRleHRjaXJjbGVkXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBhbGxvd2VkSW5NYXRoOiBmYWxzZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB2YXIgYmFzZSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiYWNjZW50XCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGNvbnRleHQuZnVuY05hbWUsXG4gICAgICBpc1N0cmV0Y2h5OiBmYWxzZSxcbiAgICAgIGlzU2hpZnR5OiB0cnVlLFxuICAgICAgYmFzZTogYmFzZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhY2NlbnRfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFjY2VudF9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9hY2NlbnR1bmRlci5qc1xuLy8gSG9yaXpvbnRhbCBvdmVybGFwIGZ1bmN0aW9uc1xuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImFjY2VudFVuZGVyXCIsXG4gIG5hbWVzOiBbXCJcXFxcdW5kZXJsZWZ0YXJyb3dcIiwgXCJcXFxcdW5kZXJyaWdodGFycm93XCIsIFwiXFxcXHVuZGVybGVmdHJpZ2h0YXJyb3dcIiwgXCJcXFxcdW5kZXJncm91cFwiLCBcIlxcXFx1bmRlcmxpbmVzZWdtZW50XCIsIFwiXFxcXHV0aWxkZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBiYXNlID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJhY2NlbnRVbmRlclwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBsYWJlbDogZnVuY05hbWUsXG4gICAgICBiYXNlOiBiYXNlXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gVHJlYXQgdW5kZXIgYWNjZW50cyBtdWNoIGxpa2UgdW5kZXJsaW5lcy5cbiAgICB2YXIgaW5uZXJHcm91cCA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpO1xuICAgIHZhciBhY2NlbnRCb2R5ID0gc3RyZXRjaHkuc3ZnU3Bhbihncm91cCwgb3B0aW9ucyk7XG4gICAgdmFyIGtlcm4gPSBncm91cC5sYWJlbCA9PT0gXCJcXFxcdXRpbGRlXCIgPyAwLjEyIDogMDsgLy8gR2VuZXJhdGUgdGhlIHZsaXN0LCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBrZXJuc1xuXG4gICAgdmFyIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgIHBvc2l0aW9uRGF0YTogYWNjZW50Qm9keS5oZWlnaHQgKyBrZXJuLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBhY2NlbnRCb2R5LFxuICAgICAgICB3cmFwcGVyQ2xhc3NlczogW1wic3ZnLWFsaWduXCJdXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBrZXJuXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lckdyb3VwXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwiYWNjZW50dW5kZXJcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGFjY2VudE5vZGUgPSBzdHJldGNoeS5tYXRoTUxub2RlKGdyb3VwLmxhYmVsKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXVuZGVyXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpLCBhY2NlbnROb2RlXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhY2NlbnR1bmRlclwiLCBcInRydWVcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2Fycm93LmpzXG5cblxuXG5cblxuXG5cbi8vIEhlbHBlciBmdW5jdGlvblxudmFyIGFycm93X3BhZGRlZE5vZGUgPSBmdW5jdGlvbiBwYWRkZWROb2RlKGdyb3VwKSB7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGFkZGVkXCIsIGdyb3VwID8gW2dyb3VwXSA6IFtdKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIiswLjZlbVwiKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgXCIwLjNlbVwiKTtcbiAgcmV0dXJuIG5vZGU7XG59OyAvLyBTdHJldGNoeSBhcnJvd3Mgd2l0aCBhbiBvcHRpb25hbCBhcmd1bWVudFxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ4QXJyb3dcIixcbiAgbmFtZXM6IFtcIlxcXFx4bGVmdGFycm93XCIsIFwiXFxcXHhyaWdodGFycm93XCIsIFwiXFxcXHhMZWZ0YXJyb3dcIiwgXCJcXFxceFJpZ2h0YXJyb3dcIiwgXCJcXFxceGxlZnRyaWdodGFycm93XCIsIFwiXFxcXHhMZWZ0cmlnaHRhcnJvd1wiLCBcIlxcXFx4aG9va2xlZnRhcnJvd1wiLCBcIlxcXFx4aG9va3JpZ2h0YXJyb3dcIiwgXCJcXFxceG1hcHN0b1wiLCBcIlxcXFx4cmlnaHRoYXJwb29uZG93blwiLCBcIlxcXFx4cmlnaHRoYXJwb29udXBcIiwgXCJcXFxceGxlZnRoYXJwb29uZG93blwiLCBcIlxcXFx4bGVmdGhhcnBvb251cFwiLCBcIlxcXFx4cmlnaHRsZWZ0aGFycG9vbnNcIiwgXCJcXFxceGxlZnRyaWdodGhhcnBvb25zXCIsIFwiXFxcXHhsb25nZXF1YWxcIiwgXCJcXFxceHR3b2hlYWRyaWdodGFycm93XCIsIFwiXFxcXHh0d29oZWFkbGVmdGFycm93XCIsIFwiXFxcXHh0b2Zyb21cIiwgLy8gVGhlIG5leHQgMyBmdW5jdGlvbnMgYXJlIGhlcmUgdG8gc3VwcG9ydCB0aGUgbWhjaGVtIGV4dGVuc2lvbi5cbiAgLy8gRGlyZWN0IHVzZSBvZiB0aGVzZSBmdW5jdGlvbnMgaXMgZGlzY291cmFnZWQgYW5kIG1heSBicmVhayBzb21lZGF5LlxuICBcIlxcXFx4cmlnaHRsZWZ0YXJyb3dzXCIsIFwiXFxcXHhyaWdodGVxdWlsaWJyaXVtXCIsIFwiXFxcXHhsZWZ0ZXF1aWxpYnJpdW1cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwieEFycm93XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGJvZHk6IGFyZ3NbMF0sXG4gICAgICBiZWxvdzogb3B0QXJnc1swXVxuICAgIH07XG4gIH0sXG4gIC8vIEZsb3cgaXMgdW5hYmxlIHRvIGNvcnJlY3RseSBpbmZlciB0aGUgdHlwZSBvZiBgZ3JvdXBgLCBldmVuIHRob3VnaCBpdCdzXG4gIC8vIHVuYW1pYmlndW91c2x5IGRldGVybWluZWQgZnJvbSB0aGUgcGFzc2VkLWluIGB0eXBlYCBhYm92ZS5cbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHN0eWxlID0gb3B0aW9ucy5zdHlsZTsgLy8gQnVpbGQgdGhlIGFyZ3VtZW50IGdyb3VwcyBpbiB0aGUgYXBwcm9wcmlhdGUgc3R5bGUuXG4gICAgLy8gUmVmOiBhbXNtYXRoLmR0eDogICBcXGhib3h7JFxcc2NyaXB0c3R5bGVcXG1rZXJuIzNtdXsjNn1cXG1rZXJuIzRtdSR9JVxuICAgIC8vIFNvbWUgZ3JvdXBzIGNhbiByZXR1cm4gZG9jdW1lbnQgZnJhZ21lbnRzLiAgSGFuZGxlIHRob3NlIGJ5IHdyYXBwaW5nXG4gICAgLy8gdGhlbSBpbiBhIHNwYW4uXG5cbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUuc3VwKCkpO1xuICAgIHZhciB1cHBlckdyb3VwID0gYnVpbGRDb21tb24ud3JhcEZyYWdtZW50KGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG5ld09wdGlvbnMsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB1cHBlckdyb3VwLmNsYXNzZXMucHVzaChcIngtYXJyb3ctcGFkXCIpO1xuICAgIHZhciBsb3dlckdyb3VwO1xuXG4gICAgaWYgKGdyb3VwLmJlbG93KSB7XG4gICAgICAvLyBCdWlsZCB0aGUgbG93ZXIgZ3JvdXBcbiAgICAgIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1YigpKTtcbiAgICAgIGxvd2VyR3JvdXAgPSBidWlsZENvbW1vbi53cmFwRnJhZ21lbnQoYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYmVsb3csIG5ld09wdGlvbnMsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICAgIGxvd2VyR3JvdXAuY2xhc3Nlcy5wdXNoKFwieC1hcnJvdy1wYWRcIik7XG4gICAgfVxuXG4gICAgdmFyIGFycm93Qm9keSA9IHN0cmV0Y2h5LnN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpOyAvLyBSZSBzaGlmdDogTm90ZSB0aGF0IHN0cmV0Y2h5LnN2Z1NwYW4gcmV0dXJuZWQgYXJyb3dCb2R5LmRlcHRoID0gMC5cbiAgICAvLyBUaGUgcG9pbnQgd2Ugd2FudCBvbiB0aGUgbWF0aCBheGlzIGlzIGF0IDAuNSAqIGFycm93Qm9keS5oZWlnaHQuXG5cbiAgICB2YXIgYXJyb3dTaGlmdCA9IC1vcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodCArIDAuNSAqIGFycm93Qm9keS5oZWlnaHQ7IC8vIDIgbXUga2Vybi4gUmVmOiBhbXNtYXRoLmR0eDogIzdcXGlmMCMyXFxlbHNlXFxta2VybiMybXVcXGZpXG5cbiAgICB2YXIgdXBwZXJTaGlmdCA9IC1vcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodCAtIDAuNSAqIGFycm93Qm9keS5oZWlnaHQgLSAwLjExMTsgLy8gMC4xMTEgZW0gPSAyIG11XG5cbiAgICBpZiAodXBwZXJHcm91cC5kZXB0aCA+IDAuMjUgfHwgZ3JvdXAubGFiZWwgPT09IFwiXFxcXHhsZWZ0ZXF1aWxpYnJpdW1cIikge1xuICAgICAgdXBwZXJTaGlmdCAtPSB1cHBlckdyb3VwLmRlcHRoOyAvLyBzaGlmdCB1cCBpZiBkZXB0aCBlbmNyb2FjaGVzXG4gICAgfSAvLyBHZW5lcmF0ZSB0aGUgdmxpc3RcblxuXG4gICAgdmFyIHZsaXN0O1xuXG4gICAgaWYgKGxvd2VyR3JvdXApIHtcbiAgICAgIHZhciBsb3dlclNoaWZ0ID0gLW9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0ICsgbG93ZXJHcm91cC5oZWlnaHQgKyAwLjUgKiBhcnJvd0JvZHkuaGVpZ2h0ICsgMC4xMTE7XG4gICAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogdXBwZXJHcm91cCxcbiAgICAgICAgICBzaGlmdDogdXBwZXJTaGlmdFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogYXJyb3dCb2R5LFxuICAgICAgICAgIHNoaWZ0OiBhcnJvd1NoaWZ0XG4gICAgICAgIH0sIHtcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiBsb3dlckdyb3VwLFxuICAgICAgICAgIHNoaWZ0OiBsb3dlclNoaWZ0XG4gICAgICAgIH1dXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IHVwcGVyR3JvdXAsXG4gICAgICAgICAgc2hpZnQ6IHVwcGVyU2hpZnRcbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IGFycm93Qm9keSxcbiAgICAgICAgICBzaGlmdDogYXJyb3dTaGlmdFxuICAgICAgICB9XVxuICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfSAvLyAkRmxvd0ZpeE1lOiBSZXBsYWNlIHRoaXMgd2l0aCBwYXNzaW5nIFwic3ZnLWFsaWduXCIgaW50byBtYWtlVkxpc3QuXG5cblxuICAgIHZsaXN0LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzFdLmNsYXNzZXMucHVzaChcInN2Zy1hbGlnblwiKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXJlbFwiLCBcIngtYXJyb3dcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGFycm93Tm9kZSA9IHN0cmV0Y2h5Lm1hdGhNTG5vZGUoZ3JvdXAubGFiZWwpO1xuICAgIHZhciBub2RlO1xuXG4gICAgaWYgKGdyb3VwLmJvZHkpIHtcbiAgICAgIHZhciB1cHBlck5vZGUgPSBhcnJvd19wYWRkZWROb2RlKGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucykpO1xuXG4gICAgICBpZiAoZ3JvdXAuYmVsb3cpIHtcbiAgICAgICAgdmFyIGxvd2VyTm9kZSA9IGFycm93X3BhZGRlZE5vZGUoYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5iZWxvdywgb3B0aW9ucykpO1xuICAgICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdW5kZXJvdmVyXCIsIFthcnJvd05vZGUsIGxvd2VyTm9kZSwgdXBwZXJOb2RlXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb3ZlclwiLCBbYXJyb3dOb2RlLCB1cHBlck5vZGVdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGdyb3VwLmJlbG93KSB7XG4gICAgICB2YXIgX2xvd2VyTm9kZSA9IGFycm93X3BhZGRlZE5vZGUoYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5iZWxvdywgb3B0aW9ucykpO1xuXG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdW5kZXJcIiwgW2Fycm93Tm9kZSwgX2xvd2VyTm9kZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAvLyBQYXJzZXIuanMgdGhyb3dzIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIGFyZ3VtZW50LlxuICAgICAgbm9kZSA9IGFycm93X3BhZGRlZE5vZGUoKTtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vdmVyXCIsIFthcnJvd05vZGUsIG5vZGVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvY2hhci5qc1xuXG5cbiAvLyBcXEBjaGFyIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBncm91cGVkIGRlY2ltYWwgYXJndW1lbnQgbGlrZVxuLy8gezEyM30gYW5kIGNvbnZlcnRzIGludG8gc3ltYm9sIHdpdGggY29kZSAxMjMuICBJdCBpcyB1c2VkIGJ5IHRoZSAqbWFjcm8qXG4vLyBcXGNoYXIgZGVmaW5lZCBpbiBtYWNyb3MuanMuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gIG5hbWVzOiBbXCJcXFxcQGNoYXJcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYXJnID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJvcmRncm91cFwiKTtcbiAgICB2YXIgZ3JvdXAgPSBhcmcuYm9keTtcbiAgICB2YXIgbnVtYmVyID0gXCJcIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gYXNzZXJ0Tm9kZVR5cGUoZ3JvdXBbaV0sIFwidGV4dG9yZFwiKTtcbiAgICAgIG51bWJlciArPSBub2RlLnRleHQ7XG4gICAgfVxuXG4gICAgdmFyIGNvZGUgPSBwYXJzZUludChudW1iZXIpO1xuXG4gICAgaWYgKGlzTmFOKGNvZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcQGNoYXIgaGFzIG5vbi1udW1lcmljIGFyZ3VtZW50IFwiICsgbnVtYmVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIHRleHQ6IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbiAgICB9O1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9jb2xvci5qc1xuXG5cblxuXG5cblxuXG52YXIgY29sb3JfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgZWxlbWVudHMgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMud2l0aENvbG9yKGdyb3VwLmNvbG9yKSwgZmFsc2UpOyAvLyBcXGNvbG9yIGlzbid0IHN1cHBvc2VkIHRvIGFmZmVjdCB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudHMgaXQgY29udGFpbnMuXG4gIC8vIFRvIGFjY29tcGxpc2ggdGhpcywgd2Ugd3JhcCB0aGUgcmVzdWx0cyBpbiBhIGZyYWdtZW50LCBzbyB0aGUgaW5uZXJcbiAgLy8gZWxlbWVudHMgd2lsbCBiZSBhYmxlIHRvIGRpcmVjdGx5IGludGVyYWN0IHdpdGggdGhlaXIgbmVpZ2hib3JzLiBGb3JcbiAgLy8gZXhhbXBsZSwgYFxcY29sb3J7cmVkfXsyICt9IDNgIGhhcyB0aGUgc2FtZSBzcGFjaW5nIGFzIGAyICsgM2BcblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUZyYWdtZW50KGVsZW1lbnRzKTtcbn07XG5cbnZhciBjb2xvcl9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgaW5uZXIgPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucy53aXRoQ29sb3IoZ3JvdXAuY29sb3IpKTtcbiAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1zdHlsZVwiLCBpbm5lcik7XG4gIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aGNvbG9yXCIsIGdyb3VwLmNvbG9yKTtcbiAgcmV0dXJuIG5vZGU7XG59O1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiY29sb3JcIixcbiAgbmFtZXM6IFtcIlxcXFx0ZXh0Y29sb3JcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgIGdyZWVkaW5lc3M6IDMsXG4gICAgYXJnVHlwZXM6IFtcImNvbG9yXCIsIFwib3JpZ2luYWxcIl1cbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHZhciBjb2xvciA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwiY29sb3ItdG9rZW5cIikuY29sb3I7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzFdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImNvbG9yXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGNvbG9yOiBjb2xvcixcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGNvbG9yX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBjb2xvcl9tYXRobWxCdWlsZGVyXG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJjb2xvclwiLFxuICBuYW1lczogW1wiXFxcXGNvbG9yXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBncmVlZGluZXNzOiAzLFxuICAgIGFyZ1R5cGVzOiBbXCJjb2xvclwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcixcbiAgICAgICAgYnJlYWtPblRva2VuVGV4dCA9IF9yZWYyLmJyZWFrT25Ub2tlblRleHQ7XG4gICAgdmFyIGNvbG9yID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJjb2xvci10b2tlblwiKS5jb2xvcjsgLy8gU2V0IG1hY3JvIFxcY3VycmVudEBjb2xvciBpbiBjdXJyZW50IG5hbWVzcGFjZSB0byBzdG9yZSB0aGUgY3VycmVudFxuICAgIC8vIGNvbG9yLCBtaW1pY2tpbmcgdGhlIGJlaGF2aW9yIG9mIGNvbG9yLnN0eS5cbiAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGp1c3QgdG8gY29ycmVjdGx5IGNvbG9yIGEgXFxyaWdodFxuICAgIC8vIHRoYXQgZm9sbG93cyBhIFxcY29sb3IgY29tbWFuZC5cblxuICAgIHBhcnNlci5ndWxsZXQubWFjcm9zLnNldChcIlxcXFxjdXJyZW50QGNvbG9yXCIsIGNvbG9yKTsgLy8gUGFyc2Ugb3V0IHRoZSBpbXBsaWNpdCBib2R5IHRoYXQgc2hvdWxkIGJlIGNvbG9yZWQuXG5cbiAgICB2YXIgYm9keSA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24odHJ1ZSwgYnJlYWtPblRva2VuVGV4dCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiY29sb3JcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgY29sb3I6IGNvbG9yLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBjb2xvcl9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogY29sb3JfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvY3IuanNcbi8vIFJvdyBicmVha3Mgd2l0aGluIHRhYnVsYXIgZW52aXJvbm1lbnRzLCBhbmQgbGluZSBicmVha3MgYXQgdG9wIGxldmVsXG5cblxuXG5cblxuIC8vIFxcXFwgaXMgYSBtYWNybyBtYXBwaW5nIHRvIGVpdGhlciBcXGNyIG9yIFxcbmV3bGluZS4gIEJlY2F1c2UgdGhleSBoYXZlIHRoZVxuLy8gc2FtZSBzaWduYXR1cmUsIHdlIGltcGxlbWVudCB0aGVtIGFzIG9uZSBtZWdhZnVuY3Rpb24sIHdpdGggbmV3Um93XG4vLyBpbmRpY2F0aW5nIHdoZXRoZXIgd2UncmUgaW4gdGhlIFxcY3IgY2FzZSwgYW5kIG5ld0xpbmUgaW5kaWNhdGluZyB3aGV0aGVyXG4vLyB0byBicmVhayB0aGUgbGluZSBpbiB0aGUgXFxuZXdsaW5lIGNhc2UuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJjclwiLFxuICBuYW1lczogW1wiXFxcXGNyXCIsIFwiXFxcXG5ld2xpbmVcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgc2l6ZSA9IG9wdEFyZ3NbMF07XG4gICAgdmFyIG5ld1JvdyA9IGZ1bmNOYW1lID09PSBcIlxcXFxjclwiO1xuICAgIHZhciBuZXdMaW5lID0gZmFsc2U7XG5cbiAgICBpZiAoIW5ld1Jvdykge1xuICAgICAgaWYgKHBhcnNlci5zZXR0aW5ncy5kaXNwbGF5TW9kZSAmJiBwYXJzZXIuc2V0dGluZ3MudXNlU3RyaWN0QmVoYXZpb3IoXCJuZXdMaW5lSW5EaXNwbGF5TW9kZVwiLCBcIkluIExhVGVYLCBcXFxcXFxcXCBvciBcXFxcbmV3bGluZSBcIiArIFwiZG9lcyBub3RoaW5nIGluIGRpc3BsYXkgbW9kZVwiKSkge1xuICAgICAgICBuZXdMaW5lID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdMaW5lID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJjclwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBuZXdMaW5lOiBuZXdMaW5lLFxuICAgICAgbmV3Um93OiBuZXdSb3csXG4gICAgICBzaXplOiBzaXplICYmIGFzc2VydE5vZGVUeXBlKHNpemUsIFwic2l6ZVwiKS52YWx1ZVxuICAgIH07XG4gIH0sXG4gIC8vIFRoZSBmb2xsb3dpbmcgYnVpbGRlcnMgYXJlIGNhbGxlZCBvbmx5IGF0IHRoZSB0b3AgbGV2ZWwsXG4gIC8vIG5vdCB3aXRoaW4gdGFidWxhci9hcnJheSBlbnZpcm9ubWVudHMuXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIGlmIChncm91cC5uZXdSb3cpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxjciB2YWxpZCBvbmx5IHdpdGhpbiBhIHRhYnVsYXIvYXJyYXkgZW52aXJvbm1lbnRcIik7XG4gICAgfVxuXG4gICAgdmFyIHNwYW4gPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtc3BhY2VcIl0sIFtdLCBvcHRpb25zKTtcblxuICAgIGlmIChncm91cC5uZXdMaW5lKSB7XG4gICAgICBzcGFuLmNsYXNzZXMucHVzaChcIm5ld2xpbmVcIik7XG5cbiAgICAgIGlmIChncm91cC5zaXplKSB7XG4gICAgICAgIHNwYW4uc3R5bGUubWFyZ2luVG9wID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5zaXplLCBvcHRpb25zKSArIFwiZW1cIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3BhbjtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3BhY2VcIik7XG5cbiAgICBpZiAoZ3JvdXAubmV3TGluZSkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsaW5lYnJlYWtcIiwgXCJuZXdsaW5lXCIpO1xuXG4gICAgICBpZiAoZ3JvdXAuc2l6ZSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLnNpemUsIG9wdGlvbnMpICsgXCJlbVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9kZWxpbWl0ZXIuanNcbi8qKlxuICogVGhpcyBmaWxlIGRlYWxzIHdpdGggY3JlYXRpbmcgZGVsaW1pdGVycyBvZiB2YXJpb3VzIHNpemVzLiBUaGUgVGVYYm9va1xuICogZGlzY3Vzc2VzIHRoZXNlIHJvdXRpbmVzIG9uIHBhZ2UgNDQxLTQ0MiwgaW4gdGhlIFwiQW5vdGhlciBzdWJyb3V0aW5lIHNldHMgYm94XG4gKiB4IHRvIGEgc3BlY2lmaWVkIHZhcmlhYmxlIGRlbGltaXRlclwiIHBhcmFncmFwaC5cbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUgbWFpbiByb3V0aW5lcyBoZXJlLiBgbWFrZVNtYWxsRGVsaW1gIG1ha2VzIGEgZGVsaW1pdGVyIGluIHRoZVxuICogbm9ybWFsIGZvbnQsIGJ1dCBpbiBlaXRoZXIgdGV4dCwgc2NyaXB0LCBvciBzY3JpcHRzY3JpcHQgc3R5bGUuXG4gKiBgbWFrZUxhcmdlRGVsaW1gIG1ha2VzIGEgZGVsaW1pdGVyIGluIHRleHRzdHlsZSwgYnV0IGluIG9uZSBvZiB0aGUgU2l6ZTEsXG4gKiBTaXplMiwgU2l6ZTMsIG9yIFNpemU0IGZvbnRzLiBgbWFrZVN0YWNrZWREZWxpbWAgbWFrZXMgYSBkZWxpbWl0ZXIgb3V0IG9mXG4gKiBzbWFsbGVyIHBpZWNlcyB0aGF0IGFyZSBzdGFja2VkIG9uIHRvcCBvZiBvbmUgYW5vdGhlci5cbiAqXG4gKiBUaGUgZnVuY3Rpb25zIHRha2UgYSBwYXJhbWV0ZXIgYGNlbnRlcmAsIHdoaWNoIGRldGVybWluZXMgaWYgdGhlIGRlbGltaXRlclxuICogc2hvdWxkIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgYXhpcy5cbiAqXG4gKiBUaGVuLCB0aGVyZSBhcmUgdGhyZWUgZXhwb3NlZCBmdW5jdGlvbnMuIGBzaXplZERlbGltYCBtYWtlcyBhIGRlbGltaXRlciBpblxuICogb25lIG9mIHRoZSBnaXZlbiBzaXplcy4gVGhpcyBpcyB1c2VkIGZvciB0aGluZ3MgbGlrZSBgXFxiaWdsYC5cbiAqIGBjdXN0b21TaXplZERlbGltYCBtYWtlcyBhIGRlbGltaXRlciB3aXRoIGEgZ2l2ZW4gdG90YWwgaGVpZ2h0K2RlcHRoLiBJdCBpc1xuICogY2FsbGVkIGluIHBsYWNlcyBsaWtlIGBcXHNxcnRgLiBgbGVmdFJpZ2h0RGVsaW1gIG1ha2VzIGFuIGFwcHJvcHJpYXRlXG4gKiBkZWxpbWl0ZXIgd2hpY2ggc3Vycm91bmRzIGFuIGV4cHJlc3Npb24gb2YgYSBnaXZlbiBoZWlnaHQgYW4gZGVwdGguIEl0IGlzXG4gKiB1c2VkIGluIGBcXGxlZnRgIGFuZCBgXFxyaWdodGAuXG4gKi9cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogR2V0IHRoZSBtZXRyaWNzIGZvciBhIGdpdmVuIHN5bWJvbCBhbmQgZm9udCwgYWZ0ZXIgdHJhbnNmb3JtYXRpb24gKGkuZS5cbiAqIGFmdGVyIGZvbGxvd2luZyByZXBsYWNlbWVudCBmcm9tIHN5bWJvbHMuanMpXG4gKi9cbnZhciBkZWxpbWl0ZXJfZ2V0TWV0cmljcyA9IGZ1bmN0aW9uIGdldE1ldHJpY3Moc3ltYm9sLCBmb250LCBtb2RlKSB7XG4gIHZhciByZXBsYWNlID0gc3JjX3N5bWJvbHMubWF0aFtzeW1ib2xdICYmIHNyY19zeW1ib2xzLm1hdGhbc3ltYm9sXS5yZXBsYWNlO1xuICB2YXIgbWV0cmljcyA9IGdldENoYXJhY3Rlck1ldHJpY3MocmVwbGFjZSB8fCBzeW1ib2wsIGZvbnQsIG1vZGUpO1xuXG4gIGlmICghbWV0cmljcykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHN5bWJvbCBcIiArIHN5bWJvbCArIFwiIGFuZCBmb250IHNpemUgXCIgKyBmb250ICsgXCIuXCIpO1xuICB9XG5cbiAgcmV0dXJuIG1ldHJpY3M7XG59O1xuLyoqXG4gKiBQdXRzIGEgZGVsaW1pdGVyIHNwYW4gaW4gYSBnaXZlbiBzdHlsZSwgYW5kIGFkZHMgYXBwcm9wcmlhdGUgaGVpZ2h0LCBkZXB0aCxcbiAqIGFuZCBtYXhGb250U2l6ZXMuXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX3N0eWxlV3JhcCA9IGZ1bmN0aW9uIHN0eWxlV3JhcChkZWxpbSwgdG9TdHlsZSwgb3B0aW9ucywgY2xhc3Nlcykge1xuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKHRvU3R5bGUpO1xuICB2YXIgc3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKGNsYXNzZXMuY29uY2F0KG5ld09wdGlvbnMuc2l6aW5nQ2xhc3NlcyhvcHRpb25zKSksIFtkZWxpbV0sIG9wdGlvbnMpO1xuICB2YXIgZGVsaW1TaXplTXVsdGlwbGllciA9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICBzcGFuLmhlaWdodCAqPSBkZWxpbVNpemVNdWx0aXBsaWVyO1xuICBzcGFuLmRlcHRoICo9IGRlbGltU2l6ZU11bHRpcGxpZXI7XG4gIHNwYW4ubWF4Rm9udFNpemUgPSBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICByZXR1cm4gc3Bhbjtcbn07XG5cbnZhciBjZW50ZXJTcGFuID0gZnVuY3Rpb24gY2VudGVyU3BhbihzcGFuLCBvcHRpb25zLCBzdHlsZSkge1xuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKHN0eWxlKTtcbiAgdmFyIHNoaWZ0ID0gKDEgLSBvcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllcikgKiBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDtcbiAgc3Bhbi5jbGFzc2VzLnB1c2goXCJkZWxpbWNlbnRlclwiKTtcbiAgc3Bhbi5zdHlsZS50b3AgPSBzaGlmdCArIFwiZW1cIjtcbiAgc3Bhbi5oZWlnaHQgLT0gc2hpZnQ7XG4gIHNwYW4uZGVwdGggKz0gc2hpZnQ7XG59O1xuLyoqXG4gKiBNYWtlcyBhIHNtYWxsIGRlbGltaXRlci4gVGhpcyBpcyBhIGRlbGltaXRlciB0aGF0IGNvbWVzIGluIHRoZSBNYWluLVJlZ3VsYXJcbiAqIGZvbnQsIGJ1dCBpcyByZXN0eWxlZCB0byBlaXRoZXIgYmUgaW4gdGV4dHN0eWxlLCBzY3JpcHRzdHlsZSwgb3JcbiAqIHNjcmlwdHNjcmlwdHN0eWxlLlxuICovXG5cblxudmFyIGRlbGltaXRlcl9tYWtlU21hbGxEZWxpbSA9IGZ1bmN0aW9uIG1ha2VTbWFsbERlbGltKGRlbGltLCBzdHlsZSwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKSB7XG4gIHZhciB0ZXh0ID0gYnVpbGRDb21tb24ubWFrZVN5bWJvbChkZWxpbSwgXCJNYWluLVJlZ3VsYXJcIiwgbW9kZSwgb3B0aW9ucyk7XG4gIHZhciBzcGFuID0gZGVsaW1pdGVyX3N0eWxlV3JhcCh0ZXh0LCBzdHlsZSwgb3B0aW9ucywgY2xhc3Nlcyk7XG5cbiAgaWYgKGNlbnRlcikge1xuICAgIGNlbnRlclNwYW4oc3Bhbiwgb3B0aW9ucywgc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIHNwYW47XG59O1xuLyoqXG4gKiBCdWlsZHMgYSBzeW1ib2wgaW4gdGhlIGdpdmVuIGZvbnQgc2l6ZSAobm90ZSBzaXplIGlzIGFuIGludGVnZXIpXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21hdGhybVNpemUgPSBmdW5jdGlvbiBtYXRocm1TaXplKHZhbHVlLCBzaXplLCBtb2RlLCBvcHRpb25zKSB7XG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3ltYm9sKHZhbHVlLCBcIlNpemVcIiArIHNpemUgKyBcIi1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMpO1xufTtcbi8qKlxuICogTWFrZXMgYSBsYXJnZSBkZWxpbWl0ZXIuIFRoaXMgaXMgYSBkZWxpbWl0ZXIgdGhhdCBjb21lcyBpbiB0aGUgU2l6ZTEsIFNpemUyLFxuICogU2l6ZTMsIG9yIFNpemU0IGZvbnRzLiBJdCBpcyBhbHdheXMgcmVuZGVyZWQgaW4gdGV4dHN0eWxlLlxuICovXG5cblxudmFyIGRlbGltaXRlcl9tYWtlTGFyZ2VEZWxpbSA9IGZ1bmN0aW9uIG1ha2VMYXJnZURlbGltKGRlbGltLCBzaXplLCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgdmFyIGlubmVyID0gZGVsaW1pdGVyX21hdGhybVNpemUoZGVsaW0sIHNpemUsIG1vZGUsIG9wdGlvbnMpO1xuICB2YXIgc3BhbiA9IGRlbGltaXRlcl9zdHlsZVdyYXAoYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiZGVsaW1zaXppbmdcIiwgXCJzaXplXCIgKyBzaXplXSwgW2lubmVyXSwgb3B0aW9ucyksIHNyY19TdHlsZS5URVhULCBvcHRpb25zLCBjbGFzc2VzKTtcblxuICBpZiAoY2VudGVyKSB7XG4gICAgY2VudGVyU3BhbihzcGFuLCBvcHRpb25zLCBzcmNfU3R5bGUuVEVYVCk7XG4gIH1cblxuICByZXR1cm4gc3Bhbjtcbn07XG4vKipcbiAqIE1ha2UgYW4gaW5uZXIgc3BhbiB3aXRoIHRoZSBnaXZlbiBvZmZzZXQgYW5kIGluIHRoZSBnaXZlbiBmb250LiBUaGlzIGlzIHVzZWRcbiAqIGluIGBtYWtlU3RhY2tlZERlbGltYCB0byBtYWtlIHRoZSBzdGFja2luZyBwaWVjZXMgZm9yIHRoZSBkZWxpbWl0ZXIuXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21ha2VJbm5lciA9IGZ1bmN0aW9uIG1ha2VJbm5lcihzeW1ib2wsIGZvbnQsIG1vZGUpIHtcbiAgdmFyIHNpemVDbGFzczsgLy8gQXBwbHkgdGhlIGNvcnJlY3QgQ1NTIGNsYXNzIHRvIGNob29zZSB0aGUgcmlnaHQgZm9udC5cblxuICBpZiAoZm9udCA9PT0gXCJTaXplMS1SZWd1bGFyXCIpIHtcbiAgICBzaXplQ2xhc3MgPSBcImRlbGltLXNpemUxXCI7XG4gIH0gZWxzZVxuICAgIC8qIGlmIChmb250ID09PSBcIlNpemU0LVJlZ3VsYXJcIikgKi9cbiAgICB7XG4gICAgICBzaXplQ2xhc3MgPSBcImRlbGltLXNpemU0XCI7XG4gICAgfVxuXG4gIHZhciBpbm5lciA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImRlbGltc2l6aW5naW5uZXJcIiwgc2l6ZUNsYXNzXSwgW2J1aWxkQ29tbW9uLm1ha2VTcGFuKFtdLCBbYnVpbGRDb21tb24ubWFrZVN5bWJvbChzeW1ib2wsIGZvbnQsIG1vZGUpXSldKTsgLy8gU2luY2UgdGhpcyB3aWxsIGJlIHBhc3NlZCBpbnRvIGBtYWtlVkxpc3RgIGluIHRoZSBlbmQsIHdyYXAgdGhlIGVsZW1lbnRcbiAgLy8gaW4gdGhlIGFwcHJvcHJpYXRlIHRhZyB0aGF0IFZMaXN0IHVzZXMuXG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcImVsZW1cIixcbiAgICBlbGVtOiBpbm5lclxuICB9O1xufTsgLy8gSGVscGVyIGZvciBtYWtlU3RhY2tlZERlbGltXG5cblxudmFyIGxhcCA9IHtcbiAgdHlwZTogXCJrZXJuXCIsXG4gIHNpemU6IC0wLjAwNVxufTtcbi8qKlxuICogTWFrZSBhIHN0YWNrZWQgZGVsaW1pdGVyIG91dCBvZiBhIGdpdmVuIGRlbGltaXRlciwgd2l0aCB0aGUgdG90YWwgaGVpZ2h0IGF0XG4gKiBsZWFzdCBgaGVpZ2h0VG90YWxgLiBUaGlzIHJvdXRpbmUgaXMgbWVudGlvbmVkIG9uIHBhZ2UgNDQyIG9mIHRoZSBUZVhib29rLlxuICovXG5cbnZhciBkZWxpbWl0ZXJfbWFrZVN0YWNrZWREZWxpbSA9IGZ1bmN0aW9uIG1ha2VTdGFja2VkRGVsaW0oZGVsaW0sIGhlaWdodFRvdGFsLCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgLy8gVGhlcmUgYXJlIGZvdXIgcGFydHMsIHRoZSB0b3AsIGFuIG9wdGlvbmFsIG1pZGRsZSwgYSByZXBlYXRlZCBwYXJ0LCBhbmQgYVxuICAvLyBib3R0b20uXG4gIHZhciB0b3A7XG4gIHZhciBtaWRkbGU7XG4gIHZhciByZXBlYXQ7XG4gIHZhciBib3R0b207XG4gIHRvcCA9IHJlcGVhdCA9IGJvdHRvbSA9IGRlbGltO1xuICBtaWRkbGUgPSBudWxsOyAvLyBBbHNvIGtlZXAgdHJhY2sgb2Ygd2hhdCBmb250IHRoZSBkZWxpbWl0ZXJzIGFyZSBpblxuXG4gIHZhciBmb250ID0gXCJTaXplMS1SZWd1bGFyXCI7IC8vIFdlIHNldCB0aGUgcGFydHMgYW5kIGZvbnQgYmFzZWQgb24gdGhlIHN5bWJvbC4gTm90ZSB0aGF0IHdlIHVzZVxuICAvLyAnXFx1MjNkMCcgaW5zdGVhZCBvZiAnfCcgYW5kICdcXHUyMDE2JyBpbnN0ZWFkIG9mICdcXFxcfCcgZm9yIHRoZVxuICAvLyByZXBlYXRzIG9mIHRoZSBhcnJvd3NcblxuICBpZiAoZGVsaW0gPT09IFwiXFxcXHVwYXJyb3dcIikge1xuICAgIHJlcGVhdCA9IGJvdHRvbSA9IFwiXFx1MjNEMFwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxVcGFycm93XCIpIHtcbiAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIwMTZcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcZG93bmFycm93XCIpIHtcbiAgICB0b3AgPSByZXBlYXQgPSBcIlxcdTIzRDBcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcRG93bmFycm93XCIpIHtcbiAgICB0b3AgPSByZXBlYXQgPSBcIlxcdTIwMTZcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcdXBkb3duYXJyb3dcIikge1xuICAgIHRvcCA9IFwiXFxcXHVwYXJyb3dcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzRDBcIjtcbiAgICBib3R0b20gPSBcIlxcXFxkb3duYXJyb3dcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcVXBkb3duYXJyb3dcIikge1xuICAgIHRvcCA9IFwiXFxcXFVwYXJyb3dcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIwMTZcIjtcbiAgICBib3R0b20gPSBcIlxcXFxEb3duYXJyb3dcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJbXCIgfHwgZGVsaW0gPT09IFwiXFxcXGxicmFja1wiKSB7XG4gICAgdG9wID0gXCJcXHUyM0ExXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0EyXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0EzXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIl1cIiB8fCBkZWxpbSA9PT0gXCJcXFxccmJyYWNrXCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTRcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzQTVcIjtcbiAgICBib3R0b20gPSBcIlxcdTIzQTZcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXGxmbG9vclwiIHx8IGRlbGltID09PSBcIlxcdTIzMEFcIikge1xuICAgIHJlcGVhdCA9IHRvcCA9IFwiXFx1MjNBMlwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBM1wiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcbGNlaWxcIiB8fCBkZWxpbSA9PT0gXCJcXHUyMzA4XCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTFcIjtcbiAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIzQTJcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXHJmbG9vclwiIHx8IGRlbGltID09PSBcIlxcdTIzMEJcIikge1xuICAgIHJlcGVhdCA9IHRvcCA9IFwiXFx1MjNBNVwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBNlwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxccmNlaWxcIiB8fCBkZWxpbSA9PT0gXCJcXHUyMzA5XCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTRcIjtcbiAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIzQTVcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiKFwiIHx8IGRlbGltID09PSBcIlxcXFxscGFyZW5cIikge1xuICAgIHRvcCA9IFwiXFx1MjM5QlwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjM5Q1wiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjM5RFwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCIpXCIgfHwgZGVsaW0gPT09IFwiXFxcXHJwYXJlblwiKSB7XG4gICAgdG9wID0gXCJcXHUyMzlFXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyMzlGXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0EwXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFx7XCIgfHwgZGVsaW0gPT09IFwiXFxcXGxicmFjZVwiKSB7XG4gICAgdG9wID0gXCJcXHUyM0E3XCI7XG4gICAgbWlkZGxlID0gXCJcXHUyM0E4XCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0E5XCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFx9XCIgfHwgZGVsaW0gPT09IFwiXFxcXHJicmFjZVwiKSB7XG4gICAgdG9wID0gXCJcXHUyM0FCXCI7XG4gICAgbWlkZGxlID0gXCJcXHUyM0FDXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0FEXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxsZ3JvdXBcIiB8fCBkZWxpbSA9PT0gXCJcXHUyN0VFXCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTdcIjtcbiAgICBib3R0b20gPSBcIlxcdTIzQTlcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzQUFcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXHJncm91cFwiIHx8IGRlbGltID09PSBcIlxcdTI3RUZcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBQlwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBRFwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcbG1vdXN0YWNoZVwiIHx8IGRlbGltID09PSBcIlxcdTIzQjBcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBN1wiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBRFwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxccm1vdXN0YWNoZVwiIHx8IGRlbGltID09PSBcIlxcdTIzQjFcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBQlwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBOVwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSAvLyBHZXQgdGhlIG1ldHJpY3Mgb2YgdGhlIGZvdXIgc2VjdGlvbnNcblxuXG4gIHZhciB0b3BNZXRyaWNzID0gZGVsaW1pdGVyX2dldE1ldHJpY3ModG9wLCBmb250LCBtb2RlKTtcbiAgdmFyIHRvcEhlaWdodFRvdGFsID0gdG9wTWV0cmljcy5oZWlnaHQgKyB0b3BNZXRyaWNzLmRlcHRoO1xuICB2YXIgcmVwZWF0TWV0cmljcyA9IGRlbGltaXRlcl9nZXRNZXRyaWNzKHJlcGVhdCwgZm9udCwgbW9kZSk7XG4gIHZhciByZXBlYXRIZWlnaHRUb3RhbCA9IHJlcGVhdE1ldHJpY3MuaGVpZ2h0ICsgcmVwZWF0TWV0cmljcy5kZXB0aDtcbiAgdmFyIGJvdHRvbU1ldHJpY3MgPSBkZWxpbWl0ZXJfZ2V0TWV0cmljcyhib3R0b20sIGZvbnQsIG1vZGUpO1xuICB2YXIgYm90dG9tSGVpZ2h0VG90YWwgPSBib3R0b21NZXRyaWNzLmhlaWdodCArIGJvdHRvbU1ldHJpY3MuZGVwdGg7XG4gIHZhciBtaWRkbGVIZWlnaHRUb3RhbCA9IDA7XG4gIHZhciBtaWRkbGVGYWN0b3IgPSAxO1xuXG4gIGlmIChtaWRkbGUgIT09IG51bGwpIHtcbiAgICB2YXIgbWlkZGxlTWV0cmljcyA9IGRlbGltaXRlcl9nZXRNZXRyaWNzKG1pZGRsZSwgZm9udCwgbW9kZSk7XG4gICAgbWlkZGxlSGVpZ2h0VG90YWwgPSBtaWRkbGVNZXRyaWNzLmhlaWdodCArIG1pZGRsZU1ldHJpY3MuZGVwdGg7XG4gICAgbWlkZGxlRmFjdG9yID0gMjsgLy8gcmVwZWF0IHN5bW1ldHJpY2FsbHkgYWJvdmUgYW5kIGJlbG93IG1pZGRsZVxuICB9IC8vIENhbGN1YXRlIHRoZSBtaW5pbWFsIGhlaWdodCB0aGF0IHRoZSBkZWxpbWl0ZXIgY2FuIGhhdmUuXG4gIC8vIEl0IGlzIGF0IGxlYXN0IHRoZSBzaXplIG9mIHRoZSB0b3AsIGJvdHRvbSwgYW5kIG9wdGlvbmFsIG1pZGRsZSBjb21iaW5lZC5cblxuXG4gIHZhciBtaW5IZWlnaHQgPSB0b3BIZWlnaHRUb3RhbCArIGJvdHRvbUhlaWdodFRvdGFsICsgbWlkZGxlSGVpZ2h0VG90YWw7IC8vIENvbXB1dGUgdGhlIG51bWJlciBvZiBjb3BpZXMgb2YgdGhlIHJlcGVhdCBzeW1ib2wgd2Ugd2lsbCBuZWVkXG5cbiAgdmFyIHJlcGVhdENvdW50ID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKChoZWlnaHRUb3RhbCAtIG1pbkhlaWdodCkgLyAobWlkZGxlRmFjdG9yICogcmVwZWF0SGVpZ2h0VG90YWwpKSk7IC8vIENvbXB1dGUgdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgZGVsaW1pdGVyIGluY2x1ZGluZyBhbGwgdGhlIHN5bWJvbHNcblxuICB2YXIgcmVhbEhlaWdodFRvdGFsID0gbWluSGVpZ2h0ICsgcmVwZWF0Q291bnQgKiBtaWRkbGVGYWN0b3IgKiByZXBlYXRIZWlnaHRUb3RhbDsgLy8gVGhlIGNlbnRlciBvZiB0aGUgZGVsaW1pdGVyIGlzIHBsYWNlZCBhdCB0aGUgY2VudGVyIG9mIHRoZSBheGlzLiBOb3RlXG4gIC8vIHRoYXQgaW4gdGhpcyBjb250ZXh0LCBcImNlbnRlclwiIG1lYW5zIHRoYXQgdGhlIGRlbGltaXRlciBzaG91bGQgYmVcbiAgLy8gY2VudGVyZWQgYXJvdW5kIHRoZSBheGlzIGluIHRoZSBjdXJyZW50IHN0eWxlLCB3aGlsZSBub3JtYWxseSBpdCBpc1xuICAvLyBjZW50ZXJlZCBhcm91bmQgdGhlIGF4aXMgaW4gdGV4dHN0eWxlLlxuXG4gIHZhciBheGlzSGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQ7XG5cbiAgaWYgKGNlbnRlcikge1xuICAgIGF4aXNIZWlnaHQgKj0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgfSAvLyBDYWxjdWxhdGUgdGhlIGRlcHRoXG5cblxuICB2YXIgZGVwdGggPSByZWFsSGVpZ2h0VG90YWwgLyAyIC0gYXhpc0hlaWdodDsgLy8gVGhpcyBmdW5jdGlvbiBkaWZmZXJzIGZyb20gdGhlIFRlWCBwcm9jZWR1cmUgaW4gb25lIHdheS5cbiAgLy8gV2Ugc2hpZnQgZWFjaCByZXBlYXQgZWxlbWVudCBkb3dud2FyZHMgYnkgMC4wMDVlbSwgdG8gcHJldmVudCBhIGdhcFxuICAvLyBkdWUgdG8gYnJvd3NlciBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvci5cbiAgLy8gVGhlbiwgYXQgdGhlIGxhc3QgZWxlbWVudC10byBlbGVtZW50IGpvaW50LCB3ZSBhZGQgb25lIGV4dHJhIHJlcGVhdFxuICAvLyBlbGVtZW50IHRvIGNvdmVyIHRoZSBnYXAgY3JlYXRlZCBieSB0aGUgc2hpZnRzLlxuICAvLyBGaW5kIHRoZSBzaGlmdCBuZWVkZWQgdG8gYWxpZ24gdGhlIHVwcGVyIGVuZCBvZiB0aGUgZXh0cmEgZWxlbWVudCBhdCBhIHBvaW50XG4gIC8vIDAuMDA1ZW0gYWJvdmUgdGhlIGxvd2VyIGVuZCBvZiB0aGUgdG9wIGVsZW1lbnQuXG5cbiAgdmFyIHNoaWZ0T2ZFeHRyYUVsZW1lbnQgPSAocmVwZWF0Q291bnQgKyAxKSAqIDAuMDA1IC0gcmVwZWF0SGVpZ2h0VG90YWw7IC8vIE5vdywgd2Ugc3RhcnQgYnVpbGRpbmcgdGhlIHBpZWNlcyB0aGF0IHdpbGwgZ28gaW50byB0aGUgdmxpc3RcbiAgLy8gS2VlcCBhIGxpc3Qgb2YgdGhlIGlubmVyIHBpZWNlc1xuXG4gIHZhciBpbm5lcnMgPSBbXTsgLy8gQWRkIHRoZSBib3R0b20gc3ltYm9sXG5cbiAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihib3R0b20sIGZvbnQsIG1vZGUpKTtcblxuICBpZiAobWlkZGxlID09PSBudWxsKSB7XG4gICAgLy8gQWRkIHRoYXQgbWFueSBzeW1ib2xzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXBlYXRDb3VudDsgaSsrKSB7XG4gICAgICBpbm5lcnMucHVzaChsYXApOyAvLyBvdmVybGFwXG5cbiAgICAgIGlubmVycy5wdXNoKGRlbGltaXRlcl9tYWtlSW5uZXIocmVwZWF0LCBmb250LCBtb2RlKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFdoZW4gdGhlcmUgaXMgYSBtaWRkbGUgYml0LCB3ZSBuZWVkIHRoZSBtaWRkbGUgcGFydCBhbmQgdHdvIHJlcGVhdGVkXG4gICAgLy8gc2VjdGlvbnNcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcmVwZWF0Q291bnQ7IF9pKyspIHtcbiAgICAgIGlubmVycy5wdXNoKGxhcCk7XG4gICAgICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKHJlcGVhdCwgZm9udCwgbW9kZSkpO1xuICAgIH0gLy8gSW5zZXJ0IG9uZSBleHRyYSByZXBlYXQgZWxlbWVudC5cblxuXG4gICAgaW5uZXJzLnB1c2goe1xuICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICBzaXplOiBzaGlmdE9mRXh0cmFFbGVtZW50XG4gICAgfSk7XG4gICAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihyZXBlYXQsIGZvbnQsIG1vZGUpKTtcbiAgICBpbm5lcnMucHVzaChsYXApOyAvLyBOb3cgaW5zZXJ0IHRoZSBtaWRkbGUgb2YgdGhlIGJyYWNlLlxuXG4gICAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihtaWRkbGUsIGZvbnQsIG1vZGUpKTtcblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHJlcGVhdENvdW50OyBfaTIrKykge1xuICAgICAgaW5uZXJzLnB1c2gobGFwKTtcbiAgICAgIGlubmVycy5wdXNoKGRlbGltaXRlcl9tYWtlSW5uZXIocmVwZWF0LCBmb250LCBtb2RlKSk7XG4gICAgfVxuICB9IC8vIFRvIGNvdmVyIHRoZSBnYXAgY3JlYXRlIGJ5IHRoZSBvdmVybGFwcywgaW5zZXJ0IG9uZSBtb3JlIHJlcGVhdCBlbGVtZW50LFxuICAvLyBhdCBhIHBvc2l0aW9uIHRoYXQganV0cyAwLjAwNSBhYm92ZSB0aGUgYm90dG9tIG9mIHRoZSB0b3AgZWxlbWVudC5cblxuXG4gIGlubmVycy5wdXNoKHtcbiAgICB0eXBlOiBcImtlcm5cIixcbiAgICBzaXplOiBzaGlmdE9mRXh0cmFFbGVtZW50XG4gIH0pO1xuICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKHJlcGVhdCwgZm9udCwgbW9kZSkpO1xuICBpbm5lcnMucHVzaChsYXApOyAvLyBBZGQgdGhlIHRvcCBzeW1ib2xcblxuICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKHRvcCwgZm9udCwgbW9kZSkpOyAvLyBGaW5hbGx5LCBidWlsZCB0aGUgdmxpc3RcblxuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKHNyY19TdHlsZS5URVhUKTtcbiAgdmFyIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICBwb3NpdGlvblR5cGU6IFwiYm90dG9tXCIsXG4gICAgcG9zaXRpb25EYXRhOiBkZXB0aCxcbiAgICBjaGlsZHJlbjogaW5uZXJzXG4gIH0sIG5ld09wdGlvbnMpO1xuICByZXR1cm4gZGVsaW1pdGVyX3N0eWxlV3JhcChidWlsZENvbW1vbi5tYWtlU3BhbihbXCJkZWxpbXNpemluZ1wiLCBcIm11bHRcIl0sIFtpbm5lcl0sIG5ld09wdGlvbnMpLCBzcmNfU3R5bGUuVEVYVCwgb3B0aW9ucywgY2xhc3Nlcyk7XG59OyAvLyBBbGwgc3VyZHMgaGF2ZSAwLjA4ZW0gcGFkZGluZyBhYm92ZSB0aGUgdmluaWN1bHVtIGluc2lkZSB0aGUgU1ZHLlxuLy8gVGhhdCBrZWVwcyBicm93c2VyIHNwYW4gaGVpZ2h0IHJvdW5kaW5nIGVycm9yIGZyb20gcGluY2hpbmcgdGhlIGxpbmUuXG5cblxudmFyIHZiUGFkID0gODA7IC8vIHBhZGRpbmcgYWJvdmUgdGhlIHN1cmQsIG1lYXN1cmVkIGluc2lkZSB0aGUgdmlld0JveC5cblxudmFyIGVtUGFkID0gMC4wODsgLy8gcGFkZGluZywgaW4gZW1zLCBtZWFzdXJlZCBpbiB0aGUgZG9jdW1lbnQuXG5cbnZhciBkZWxpbWl0ZXJfc3FydFN2ZyA9IGZ1bmN0aW9uIHNxcnRTdmcoc3FydE5hbWUsIGhlaWdodCwgdmlld0JveEhlaWdodCwgZXh0cmFWaW5pY3VsdW0sIG9wdGlvbnMpIHtcbiAgdmFyIHBhdGggPSBzcXJ0UGF0aChzcXJ0TmFtZSwgZXh0cmFWaW5pY3VsdW0sIHZpZXdCb3hIZWlnaHQpO1xuICB2YXIgcGF0aE5vZGUgPSBuZXcgZG9tVHJlZV9QYXRoTm9kZShzcXJ0TmFtZSwgcGF0aCk7XG4gIHZhciBzdmcgPSBuZXcgU3ZnTm9kZShbcGF0aE5vZGVdLCB7XG4gICAgLy8gTm90ZTogMTAwMDoxIHJhdGlvIG9mIHZpZXdCb3ggdG8gZG9jdW1lbnQgZW0gd2lkdGguXG4gICAgXCJ3aWR0aFwiOiBcIjQwMGVtXCIsXG4gICAgXCJoZWlnaHRcIjogaGVpZ2h0ICsgXCJlbVwiLFxuICAgIFwidmlld0JveFwiOiBcIjAgMCA0MDAwMDAgXCIgKyB2aWV3Qm94SGVpZ2h0LFxuICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBcInhNaW5ZTWluIHNsaWNlXCJcbiAgfSk7XG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3ZnU3BhbihbXCJoaWRlLXRhaWxcIl0sIFtzdmddLCBvcHRpb25zKTtcbn07XG4vKipcbiAqIE1ha2UgYSBzcXJ0IGltYWdlIG9mIHRoZSBnaXZlbiBoZWlnaHQsXG4gKi9cblxuXG52YXIgbWFrZVNxcnRJbWFnZSA9IGZ1bmN0aW9uIG1ha2VTcXJ0SW1hZ2UoaGVpZ2h0LCBvcHRpb25zKSB7XG4gIC8vIERlZmluZSBhIG5ld09wdGlvbnMgdGhhdCByZW1vdmVzIHRoZSBlZmZlY3Qgb2Ygc2l6ZSBjaGFuZ2VzIHN1Y2ggYXMgXFxIdWdlLlxuICAvLyBXZSBkb24ndCBwaWNrIGRpZmZlcmVudCBhIGhlaWdodCBzdXJkIGZvciBcXEh1Z2UuIEZvciBpdCwgd2Ugc2NhbGUgdXAuXG4gIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdCYXNlU2l6aW5nKCk7IC8vIFBpY2sgdGhlIGRlc2lyZWQgc3VyZCBnbHlwaCBmcm9tIGEgc2VxdWVuY2Ugb2Ygc3VyZHMuXG5cbiAgdmFyIGRlbGltID0gdHJhdmVyc2VTZXF1ZW5jZShcIlxcXFxzdXJkXCIsIGhlaWdodCAqIG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIsIHN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZSwgbmV3T3B0aW9ucyk7XG4gIHZhciBzaXplTXVsdGlwbGllciA9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXI7IC8vIGRlZmF1bHRcbiAgLy8gVGhlIHN0YW5kYXJkIHNxcnQgU1ZHcyBlYWNoIGhhdmUgYSAwLjA0ZW0gdGhpY2sgdmluaWN1bHVtLlxuICAvLyBJZiBTZXR0aW5ncy5taW5SdWxlVGhpY2tuZXNzIGlzIGxhcmdlciB0aGFuIHRoYXQsIHdlIGFkZCBleHRyYVZpbmljdWx1bS5cblxuICB2YXIgZXh0cmFWaW5pY3VsdW0gPSBNYXRoLm1heCgwLCBvcHRpb25zLm1pblJ1bGVUaGlja25lc3MgLSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuc3FydFJ1bGVUaGlja25lc3MpOyAvLyBDcmVhdGUgYSBzcGFuIGNvbnRhaW5pbmcgYW4gU1ZHIGltYWdlIG9mIGEgc3FydCBzeW1ib2wuXG5cbiAgdmFyIHNwYW47XG4gIHZhciBzcGFuSGVpZ2h0ID0gMDtcbiAgdmFyIHRleEhlaWdodCA9IDA7XG4gIHZhciB2aWV3Qm94SGVpZ2h0ID0gMDtcbiAgdmFyIGFkdmFuY2VXaWR0aDsgLy8gV2UgY3JlYXRlIHZpZXdCb3hlcyB3aXRoIDgwIHVuaXRzIG9mIFwicGFkZGluZ1wiIGFib3ZlIGVhY2ggc3VyZC5cbiAgLy8gVGhlbiBicm93c2VyIHJvdW5kaW5nIGVycm9yIG9uIHRoZSBwYXJlbnQgc3BhbiBoZWlnaHQgd2lsbCBub3RcbiAgLy8gZW5jcm9hY2ggb24gdGhlIGluayBvZiB0aGUgdmluaWN1bHVtLiBCdXQgdGhhdCBwYWRkaW5nIGlzIG5vdFxuICAvLyBpbmNsdWRlZCBpbiB0aGUgVGVYLWxpa2UgYGhlaWdodGAgdXNlZCBmb3IgY2FsY3VsYXRpb24gb2ZcbiAgLy8gdmVydGljYWwgYWxpZ25tZW50LiBTbyB0ZXhIZWlnaHQgPSBzcGFuLmhlaWdodCA8IHNwYW4uc3R5bGUuaGVpZ2h0LlxuXG4gIGlmIChkZWxpbS50eXBlID09PSBcInNtYWxsXCIpIHtcbiAgICAvLyBHZXQgYW4gU1ZHIHRoYXQgaXMgZGVyaXZlZCBmcm9tIGdseXBoIFUrMjIxQSBpbiBmb250IEthVGVYLU1haW4uXG4gICAgLy8gMTAwMCB1bml0IG5vcm1hbCBnbHlwaCBoZWlnaHQuXG4gICAgdmlld0JveEhlaWdodCA9IDEwMDAgKyAxMDAwICogZXh0cmFWaW5pY3VsdW0gKyB2YlBhZDtcblxuICAgIGlmIChoZWlnaHQgPCAxLjApIHtcbiAgICAgIHNpemVNdWx0aXBsaWVyID0gMS4wOyAvLyBtaW1pYyBhIFxcdGV4dGZvbnQgcmFkaWNhbFxuICAgIH0gZWxzZSBpZiAoaGVpZ2h0IDwgMS40KSB7XG4gICAgICBzaXplTXVsdGlwbGllciA9IDAuNzsgLy8gbWltaWMgYSBcXHNjcmlwdGZvbnQgcmFkaWNhbFxuICAgIH1cblxuICAgIHNwYW5IZWlnaHQgPSAoMS4wICsgZXh0cmFWaW5pY3VsdW0gKyBlbVBhZCkgLyBzaXplTXVsdGlwbGllcjtcbiAgICB0ZXhIZWlnaHQgPSAoMS4wMCArIGV4dHJhVmluaWN1bHVtKSAvIHNpemVNdWx0aXBsaWVyO1xuICAgIHNwYW4gPSBkZWxpbWl0ZXJfc3FydFN2ZyhcInNxcnRNYWluXCIsIHNwYW5IZWlnaHQsIHZpZXdCb3hIZWlnaHQsIGV4dHJhVmluaWN1bHVtLCBvcHRpb25zKTtcbiAgICBzcGFuLnN0eWxlLm1pbldpZHRoID0gXCIwLjg1M2VtXCI7XG4gICAgYWR2YW5jZVdpZHRoID0gMC44MzMgLyBzaXplTXVsdGlwbGllcjsgLy8gZnJvbSB0aGUgZm9udC5cbiAgfSBlbHNlIGlmIChkZWxpbS50eXBlID09PSBcImxhcmdlXCIpIHtcbiAgICAvLyBUaGVzZSBTVkdzIGNvbWUgZnJvbSBmb250czogS2FUZVhfU2l6ZTEsIF9TaXplMiwgZXRjLlxuICAgIHZpZXdCb3hIZWlnaHQgPSAoMTAwMCArIHZiUGFkKSAqIHNpemVUb01heEhlaWdodFtkZWxpbS5zaXplXTtcbiAgICB0ZXhIZWlnaHQgPSAoc2l6ZVRvTWF4SGVpZ2h0W2RlbGltLnNpemVdICsgZXh0cmFWaW5pY3VsdW0pIC8gc2l6ZU11bHRpcGxpZXI7XG4gICAgc3BhbkhlaWdodCA9IChzaXplVG9NYXhIZWlnaHRbZGVsaW0uc2l6ZV0gKyBleHRyYVZpbmljdWx1bSArIGVtUGFkKSAvIHNpemVNdWx0aXBsaWVyO1xuICAgIHNwYW4gPSBkZWxpbWl0ZXJfc3FydFN2ZyhcInNxcnRTaXplXCIgKyBkZWxpbS5zaXplLCBzcGFuSGVpZ2h0LCB2aWV3Qm94SGVpZ2h0LCBleHRyYVZpbmljdWx1bSwgb3B0aW9ucyk7XG4gICAgc3Bhbi5zdHlsZS5taW5XaWR0aCA9IFwiMS4wMmVtXCI7XG4gICAgYWR2YW5jZVdpZHRoID0gMS4wIC8gc2l6ZU11bHRpcGxpZXI7IC8vIDEuMCBmcm9tIHRoZSBmb250LlxuICB9IGVsc2Uge1xuICAgIC8vIFRhbGwgc3FydC4gSW4gVGVYLCB0aGlzIHdvdWxkIGJlIHN0YWNrZWQgdXNpbmcgbXVsdGlwbGUgZ2x5cGhzLlxuICAgIC8vIFdlJ2xsIHVzZSBhIHNpbmdsZSBTVkcgdG8gYWNjb21wbGlzaCB0aGUgc2FtZSB0aGluZy5cbiAgICBzcGFuSGVpZ2h0ID0gaGVpZ2h0ICsgZXh0cmFWaW5pY3VsdW0gKyBlbVBhZDtcbiAgICB0ZXhIZWlnaHQgPSBoZWlnaHQgKyBleHRyYVZpbmljdWx1bTtcbiAgICB2aWV3Qm94SGVpZ2h0ID0gTWF0aC5mbG9vcigxMDAwICogaGVpZ2h0ICsgZXh0cmFWaW5pY3VsdW0pICsgdmJQYWQ7XG4gICAgc3BhbiA9IGRlbGltaXRlcl9zcXJ0U3ZnKFwic3FydFRhbGxcIiwgc3BhbkhlaWdodCwgdmlld0JveEhlaWdodCwgZXh0cmFWaW5pY3VsdW0sIG9wdGlvbnMpO1xuICAgIHNwYW4uc3R5bGUubWluV2lkdGggPSBcIjAuNzQyZW1cIjtcbiAgICBhZHZhbmNlV2lkdGggPSAxLjA1NjtcbiAgfVxuXG4gIHNwYW4uaGVpZ2h0ID0gdGV4SGVpZ2h0O1xuICBzcGFuLnN0eWxlLmhlaWdodCA9IHNwYW5IZWlnaHQgKyBcImVtXCI7XG4gIHJldHVybiB7XG4gICAgc3Bhbjogc3BhbixcbiAgICBhZHZhbmNlV2lkdGg6IGFkdmFuY2VXaWR0aCxcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGFjdHVhbCBsaW5lIHdpZHRoLlxuICAgIC8vIFRoaXMgYWN0dWFsbHkgc2hvdWxkIGRlcGVuZCBvbiB0aGUgY2hvc2VuIGZvbnQgLS0gZS5nLiBcXGJvbGRtYXRoXG4gICAgLy8gc2hvdWxkIHVzZSB0aGUgdGhpY2tlciBzdXJkIHN5bWJvbHMgZnJvbSBlLmcuIEthVGVYX01haW4tQm9sZCwgYW5kXG4gICAgLy8gaGF2ZSB0aGlja2VyIHJ1bGVzLlxuICAgIHJ1bGVXaWR0aDogKG9wdGlvbnMuZm9udE1ldHJpY3MoKS5zcXJ0UnVsZVRoaWNrbmVzcyArIGV4dHJhVmluaWN1bHVtKSAqIHNpemVNdWx0aXBsaWVyXG4gIH07XG59OyAvLyBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgZGVsaW1pdGVycywgZGVsaW1pdGVycyB0aGF0IHN0YWNrIHdoZW4gdGhleSBiZWNvbWVcbi8vIHRvbyBsYXJnZVxuXG5cbnZhciBzdGFja0xhcmdlRGVsaW1pdGVycyA9IFtcIihcIiwgXCJcXFxcbHBhcmVuXCIsIFwiKVwiLCBcIlxcXFxycGFyZW5cIiwgXCJbXCIsIFwiXFxcXGxicmFja1wiLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIsIFwiXFxcXHtcIiwgXCJcXFxcbGJyYWNlXCIsIFwiXFxcXH1cIiwgXCJcXFxccmJyYWNlXCIsIFwiXFxcXGxmbG9vclwiLCBcIlxcXFxyZmxvb3JcIiwgXCJcXHUyMzBBXCIsIFwiXFx1MjMwQlwiLCBcIlxcXFxsY2VpbFwiLCBcIlxcXFxyY2VpbFwiLCBcIlxcdTIzMDhcIiwgXCJcXHUyMzA5XCIsIFwiXFxcXHN1cmRcIl07IC8vIGRlbGltaXRlcnMgdGhhdCBhbHdheXMgc3RhY2tcblxudmFyIHN0YWNrQWx3YXlzRGVsaW1pdGVycyA9IFtcIlxcXFx1cGFycm93XCIsIFwiXFxcXGRvd25hcnJvd1wiLCBcIlxcXFx1cGRvd25hcnJvd1wiLCBcIlxcXFxVcGFycm93XCIsIFwiXFxcXERvd25hcnJvd1wiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCBcInxcIiwgXCJcXFxcfFwiLCBcIlxcXFx2ZXJ0XCIsIFwiXFxcXFZlcnRcIiwgXCJcXFxcbHZlcnRcIiwgXCJcXFxccnZlcnRcIiwgXCJcXFxcbFZlcnRcIiwgXCJcXFxcclZlcnRcIiwgXCJcXFxcbGdyb3VwXCIsIFwiXFxcXHJncm91cFwiLCBcIlxcdTI3RUVcIiwgXCJcXHUyN0VGXCIsIFwiXFxcXGxtb3VzdGFjaGVcIiwgXCJcXFxccm1vdXN0YWNoZVwiLCBcIlxcdTIzQjBcIiwgXCJcXHUyM0IxXCJdOyAvLyBhbmQgZGVsaW1pdGVycyB0aGF0IG5ldmVyIHN0YWNrXG5cbnZhciBzdGFja05ldmVyRGVsaW1pdGVycyA9IFtcIjxcIiwgXCI+XCIsIFwiXFxcXGxhbmdsZVwiLCBcIlxcXFxyYW5nbGVcIiwgXCIvXCIsIFwiXFxcXGJhY2tzbGFzaFwiLCBcIlxcXFxsdFwiLCBcIlxcXFxndFwiXTsgLy8gTWV0cmljcyBvZiB0aGUgZGlmZmVyZW50IHNpemVzLiBGb3VuZCBieSBsb29raW5nIGF0IFRlWCdzIG91dHB1dCBvZlxuLy8gJFxcYmlnbHwgLy8gXFxCaWdsfCBcXGJpZ2dsfCBcXEJpZ2dsfCBcXHNob3dsaXN0cyRcbi8vIFVzZWQgdG8gY3JlYXRlIHN0YWNrZWQgZGVsaW1pdGVycyBvZiBhcHByb3ByaWF0ZSBzaXplcyBpbiBtYWtlU2l6ZWREZWxpbS5cblxudmFyIHNpemVUb01heEhlaWdodCA9IFswLCAxLjIsIDEuOCwgMi40LCAzLjBdO1xuLyoqXG4gKiBVc2VkIHRvIGNyZWF0ZSBhIGRlbGltaXRlciBvZiBhIHNwZWNpZmljIHNpemUsIHdoZXJlIGBzaXplYCBpcyAxLCAyLCAzLCBvciA0LlxuICovXG5cbnZhciBkZWxpbWl0ZXJfbWFrZVNpemVkRGVsaW0gPSBmdW5jdGlvbiBtYWtlU2l6ZWREZWxpbShkZWxpbSwgc2l6ZSwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICAvLyA8IGFuZCA+IHR1cm4gaW50byBcXGxhbmdsZSBhbmQgXFxyYW5nbGUgaW4gZGVsaW1pdGVyc1xuICBpZiAoZGVsaW0gPT09IFwiPFwiIHx8IGRlbGltID09PSBcIlxcXFxsdFwiIHx8IGRlbGltID09PSBcIlxcdTI3RThcIikge1xuICAgIGRlbGltID0gXCJcXFxcbGFuZ2xlXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiPlwiIHx8IGRlbGltID09PSBcIlxcXFxndFwiIHx8IGRlbGltID09PSBcIlxcdTI3RTlcIikge1xuICAgIGRlbGltID0gXCJcXFxccmFuZ2xlXCI7XG4gIH0gLy8gU2l6ZWQgZGVsaW1pdGVycyBhcmUgbmV2ZXIgY2VudGVyZWQuXG5cblxuICBpZiAodXRpbHMuY29udGFpbnMoc3RhY2tMYXJnZURlbGltaXRlcnMsIGRlbGltKSB8fCB1dGlscy5jb250YWlucyhzdGFja05ldmVyRGVsaW1pdGVycywgZGVsaW0pKSB7XG4gICAgcmV0dXJuIGRlbGltaXRlcl9tYWtlTGFyZ2VEZWxpbShkZWxpbSwgc2l6ZSwgZmFsc2UsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xuICB9IGVsc2UgaWYgKHV0aWxzLmNvbnRhaW5zKHN0YWNrQWx3YXlzRGVsaW1pdGVycywgZGVsaW0pKSB7XG4gICAgcmV0dXJuIGRlbGltaXRlcl9tYWtlU3RhY2tlZERlbGltKGRlbGltLCBzaXplVG9NYXhIZWlnaHRbc2l6ZV0sIGZhbHNlLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbGxlZ2FsIGRlbGltaXRlcjogJ1wiICsgZGVsaW0gKyBcIidcIik7XG4gIH1cbn07XG4vKipcbiAqIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgc2VxdWVuY2VzIG9mIGRlbGltaXRlciBzaXplcyB0aGF0IHRoZSBkZWxpbWl0ZXJzXG4gKiBmb2xsb3cgZGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mIGRlbGltaXRlci4gVGhpcyBpcyB1c2VkIHdoZW4gY3JlYXRpbmcgY3VzdG9tXG4gKiBzaXplZCBkZWxpbWl0ZXJzIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGNyZWF0ZSBhIHNtYWxsLCBsYXJnZSwgb3Igc3RhY2tlZFxuICogZGVsaW1pdGVyLlxuICpcbiAqIEluIHJlYWwgVGVYLCB0aGVzZSBzZXF1ZW5jZXMgYXJlbid0IGV4cGxpY2l0bHkgZGVmaW5lZCwgYnV0IGFyZSBpbnN0ZWFkXG4gKiBkZWZpbmVkIGluc2lkZSB0aGUgZm9udCBtZXRyaWNzLiBTaW5jZSB0aGVyZSBhcmUgb25seSB0aHJlZSBzZXF1ZW5jZXMgdGhhdFxuICogYXJlIHBvc3NpYmxlIGZvciB0aGUgZGVsaW1pdGVycyB0aGF0IFRlWCBkZWZpbmVzLCBpdCBpcyBlYXNpZXIgdG8ganVzdCBlbmNvZGVcbiAqIHRoZW0gZXhwbGljaXRseSBoZXJlLlxuICovXG5cblxuLy8gRGVsaW1pdGVycyB0aGF0IG5ldmVyIHN0YWNrIHRyeSBzbWFsbCBkZWxpbWl0ZXJzIGFuZCBsYXJnZSBkZWxpbWl0ZXJzIG9ubHlcbnZhciBzdGFja05ldmVyRGVsaW1pdGVyU2VxdWVuY2UgPSBbe1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUXG59LCB7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlRFWFRcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiAxXG59LCB7XG4gIHR5cGU6IFwibGFyZ2VcIixcbiAgc2l6ZTogMlxufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDNcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiA0XG59XTsgLy8gRGVsaW1pdGVycyB0aGF0IGFsd2F5cyBzdGFjayB0cnkgdGhlIHNtYWxsIGRlbGltaXRlcnMgZmlyc3QsIHRoZW4gc3RhY2tcblxudmFyIHN0YWNrQWx3YXlzRGVsaW1pdGVyU2VxdWVuY2UgPSBbe1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUXG59LCB7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlRFWFRcbn0sIHtcbiAgdHlwZTogXCJzdGFja1wiXG59XTsgLy8gRGVsaW1pdGVycyB0aGF0IHN0YWNrIHdoZW4gbGFyZ2UgdHJ5IHRoZSBzbWFsbCBhbmQgdGhlbiBsYXJnZSBkZWxpbWl0ZXJzLCBhbmRcbi8vIHN0YWNrIGFmdGVyd2FyZHNcblxudmFyIHN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZSA9IFt7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRTQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlNDUklQVFxufSwge1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuVEVYVFxufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDFcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiAyXG59LCB7XG4gIHR5cGU6IFwibGFyZ2VcIixcbiAgc2l6ZTogM1xufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDRcbn0sIHtcbiAgdHlwZTogXCJzdGFja1wiXG59XTtcbi8qKlxuICogR2V0IHRoZSBmb250IHVzZWQgaW4gYSBkZWxpbWl0ZXIgYmFzZWQgb24gd2hhdCBraW5kIG9mIGRlbGltaXRlciBpdCBpcy5cbiAqIFRPRE8oIzk2MykgVXNlIG1vcmUgc3BlY2lmaWMgZm9udCBmYW1pbHkgcmV0dXJuIHR5cGUgb25jZSB0aGF0IGlzIGludHJvZHVjZWQuXG4gKi9cblxudmFyIGRlbGltVHlwZVRvRm9udCA9IGZ1bmN0aW9uIGRlbGltVHlwZVRvRm9udCh0eXBlKSB7XG4gIGlmICh0eXBlLnR5cGUgPT09IFwic21hbGxcIikge1xuICAgIHJldHVybiBcIk1haW4tUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKHR5cGUudHlwZSA9PT0gXCJsYXJnZVwiKSB7XG4gICAgcmV0dXJuIFwiU2l6ZVwiICsgdHlwZS5zaXplICsgXCItUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKHR5cGUudHlwZSA9PT0gXCJzdGFja1wiKSB7XG4gICAgcmV0dXJuIFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkFkZCBzdXBwb3J0IGZvciBkZWxpbSB0eXBlICdcIiArIHR5cGUudHlwZSArIFwiJyBoZXJlLlwiKTtcbiAgfVxufTtcbi8qKlxuICogVHJhdmVyc2UgYSBzZXF1ZW5jZSBvZiB0eXBlcyBvZiBkZWxpbWl0ZXJzIHRvIGRlY2lkZSB3aGF0IGtpbmQgb2YgZGVsaW1pdGVyXG4gKiBzaG91bGQgYmUgdXNlZCB0byBjcmVhdGUgYSBkZWxpbWl0ZXIgb2YgdGhlIGdpdmVuIGhlaWdodCtkZXB0aC5cbiAqL1xuXG5cbnZhciB0cmF2ZXJzZVNlcXVlbmNlID0gZnVuY3Rpb24gdHJhdmVyc2VTZXF1ZW5jZShkZWxpbSwgaGVpZ2h0LCBzZXF1ZW5jZSwgb3B0aW9ucykge1xuICAvLyBIZXJlLCB3ZSBjaG9vc2UgdGhlIGluZGV4IHdlIHNob3VsZCBzdGFydCBhdCBpbiB0aGUgc2VxdWVuY2VzLiBJbiBzbWFsbGVyXG4gIC8vIHNpemVzICh3aGljaCBjb3JyZXNwb25kIHRvIGxhcmdlciBudW1iZXJzIGluIHN0eWxlLnNpemUpIHdlIHN0YXJ0IGVhcmxpZXJcbiAgLy8gaW4gdGhlIHNlcXVlbmNlLiBUaHVzLCBzY3JpcHRzY3JpcHQgc3RhcnRzIGF0IGluZGV4IDMtMz0wLCBzY3JpcHQgc3RhcnRzXG4gIC8vIGF0IGluZGV4IDMtMj0xLCB0ZXh0IHN0YXJ0cyBhdCAzLTE9MiwgYW5kIGRpc3BsYXkgc3RhcnRzIGF0IG1pbigyLDMtMCk9MlxuICB2YXIgc3RhcnQgPSBNYXRoLm1pbigyLCAzIC0gb3B0aW9ucy5zdHlsZS5zaXplKTtcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBzZXF1ZW5jZS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzZXF1ZW5jZVtpXS50eXBlID09PSBcInN0YWNrXCIpIHtcbiAgICAgIC8vIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IGRlbGltaXRlciwgc28gd2UganVzdCBicmVhayB0aGUgbG9vcCBub3cuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICB2YXIgbWV0cmljcyA9IGRlbGltaXRlcl9nZXRNZXRyaWNzKGRlbGltLCBkZWxpbVR5cGVUb0ZvbnQoc2VxdWVuY2VbaV0pLCBcIm1hdGhcIik7XG4gICAgdmFyIGhlaWdodERlcHRoID0gbWV0cmljcy5oZWlnaHQgKyBtZXRyaWNzLmRlcHRoOyAvLyBTbWFsbCBkZWxpbWl0ZXJzIGFyZSBzY2FsZWQgZG93biB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBmb250LCBzbyB3ZVxuICAgIC8vIGFjY291bnQgZm9yIHRoZSBzdHlsZSBjaGFuZ2Ugc2l6ZS5cblxuICAgIGlmIChzZXF1ZW5jZVtpXS50eXBlID09PSBcInNtYWxsXCIpIHtcbiAgICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUoc2VxdWVuY2VbaV0uc3R5bGUpO1xuICAgICAgaGVpZ2h0RGVwdGggKj0gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICB9IC8vIENoZWNrIGlmIHRoZSBkZWxpbWl0ZXIgYXQgdGhpcyBzaXplIHdvcmtzIGZvciB0aGUgZ2l2ZW4gaGVpZ2h0LlxuXG5cbiAgICBpZiAoaGVpZ2h0RGVwdGggPiBoZWlnaHQpIHtcbiAgICAgIHJldHVybiBzZXF1ZW5jZVtpXTtcbiAgICB9XG4gIH0gLy8gSWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSwgcmV0dXJuIHRoZSBsYXN0IHNlcXVlbmNlIGVsZW1lbnQuXG5cblxuICByZXR1cm4gc2VxdWVuY2Vbc2VxdWVuY2UubGVuZ3RoIC0gMV07XG59O1xuLyoqXG4gKiBNYWtlIGEgZGVsaW1pdGVyIG9mIGEgZ2l2ZW4gaGVpZ2h0K2RlcHRoLCB3aXRoIG9wdGlvbmFsIGNlbnRlcmluZy4gSGVyZSwgd2VcbiAqIHRyYXZlcnNlIHRoZSBzZXF1ZW5jZXMsIGFuZCBjcmVhdGUgYSBkZWxpbWl0ZXIgdGhhdCB0aGUgc2VxdWVuY2UgdGVsbHMgdXMgdG8uXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21ha2VDdXN0b21TaXplZERlbGltID0gZnVuY3Rpb24gbWFrZUN1c3RvbVNpemVkRGVsaW0oZGVsaW0sIGhlaWdodCwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKSB7XG4gIGlmIChkZWxpbSA9PT0gXCI8XCIgfHwgZGVsaW0gPT09IFwiXFxcXGx0XCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFOFwiKSB7XG4gICAgZGVsaW0gPSBcIlxcXFxsYW5nbGVcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCI+XCIgfHwgZGVsaW0gPT09IFwiXFxcXGd0XCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFOVwiKSB7XG4gICAgZGVsaW0gPSBcIlxcXFxyYW5nbGVcIjtcbiAgfSAvLyBEZWNpZGUgd2hhdCBzZXF1ZW5jZSB0byB1c2VcblxuXG4gIHZhciBzZXF1ZW5jZTtcblxuICBpZiAodXRpbHMuY29udGFpbnMoc3RhY2tOZXZlckRlbGltaXRlcnMsIGRlbGltKSkge1xuICAgIHNlcXVlbmNlID0gc3RhY2tOZXZlckRlbGltaXRlclNlcXVlbmNlO1xuICB9IGVsc2UgaWYgKHV0aWxzLmNvbnRhaW5zKHN0YWNrTGFyZ2VEZWxpbWl0ZXJzLCBkZWxpbSkpIHtcbiAgICBzZXF1ZW5jZSA9IHN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZTtcbiAgfSBlbHNlIHtcbiAgICBzZXF1ZW5jZSA9IHN0YWNrQWx3YXlzRGVsaW1pdGVyU2VxdWVuY2U7XG4gIH0gLy8gTG9vayB0aHJvdWdoIHRoZSBzZXF1ZW5jZVxuXG5cbiAgdmFyIGRlbGltVHlwZSA9IHRyYXZlcnNlU2VxdWVuY2UoZGVsaW0sIGhlaWdodCwgc2VxdWVuY2UsIG9wdGlvbnMpOyAvLyBHZXQgdGhlIGRlbGltaXRlciBmcm9tIGZvbnQgZ2x5cGhzLlxuICAvLyBEZXBlbmRpbmcgb24gdGhlIHNlcXVlbmNlIGVsZW1lbnQgd2UgZGVjaWRlZCBvbiwgY2FsbCB0aGVcbiAgLy8gYXBwcm9wcmlhdGUgZnVuY3Rpb24uXG5cbiAgaWYgKGRlbGltVHlwZS50eXBlID09PSBcInNtYWxsXCIpIHtcbiAgICByZXR1cm4gZGVsaW1pdGVyX21ha2VTbWFsbERlbGltKGRlbGltLCBkZWxpbVR5cGUuc3R5bGUsIGNlbnRlciwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcyk7XG4gIH0gZWxzZSBpZiAoZGVsaW1UeXBlLnR5cGUgPT09IFwibGFyZ2VcIikge1xuICAgIHJldHVybiBkZWxpbWl0ZXJfbWFrZUxhcmdlRGVsaW0oZGVsaW0sIGRlbGltVHlwZS5zaXplLCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xuICB9IGVsc2VcbiAgICAvKiBpZiAoZGVsaW1UeXBlLnR5cGUgPT09IFwic3RhY2tcIikgKi9cbiAgICB7XG4gICAgICByZXR1cm4gZGVsaW1pdGVyX21ha2VTdGFja2VkRGVsaW0oZGVsaW0sIGhlaWdodCwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKTtcbiAgICB9XG59O1xuLyoqXG4gKiBNYWtlIGEgZGVsaW1pdGVyIGZvciB1c2Ugd2l0aCBgXFxsZWZ0YCBhbmQgYFxccmlnaHRgLCBnaXZlbiBhIGhlaWdodCBhbmQgZGVwdGhcbiAqIG9mIGFuIGV4cHJlc3Npb24gdGhhdCB0aGUgZGVsaW1pdGVycyBzdXJyb3VuZC5cbiAqL1xuXG5cbnZhciBtYWtlTGVmdFJpZ2h0RGVsaW0gPSBmdW5jdGlvbiBtYWtlTGVmdFJpZ2h0RGVsaW0oZGVsaW0sIGhlaWdodCwgZGVwdGgsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgLy8gV2UgYWx3YXlzIGNlbnRlciBcXGxlZnQvXFxyaWdodCBkZWxpbWl0ZXJzLCBzbyB0aGUgYXhpcyBpcyBhbHdheXMgc2hpZnRlZFxuICB2YXIgYXhpc0hlaWdodCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0ICogb3B0aW9ucy5zaXplTXVsdGlwbGllcjsgLy8gVGFrZW4gZnJvbSBUZVggc291cmNlLCB0ZXgud2ViLCBmdW5jdGlvbiBtYWtlX2xlZnRfcmlnaHRcblxuICB2YXIgZGVsaW1pdGVyRmFjdG9yID0gOTAxO1xuICB2YXIgZGVsaW1pdGVyRXh0ZW5kID0gNS4wIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG4gIHZhciBtYXhEaXN0RnJvbUF4aXMgPSBNYXRoLm1heChoZWlnaHQgLSBheGlzSGVpZ2h0LCBkZXB0aCArIGF4aXNIZWlnaHQpO1xuICB2YXIgdG90YWxIZWlnaHQgPSBNYXRoLm1heCggLy8gSW4gcmVhbCBUZVgsIGNhbGN1bGF0aW9ucyBhcmUgZG9uZSB1c2luZyBpbnRlZ3JhbCB2YWx1ZXMgd2hpY2ggYXJlXG4gIC8vIDY1NTM2IHBlciBwdCwgb3IgNjU1MzYwIHBlciBlbS4gU28sIHRoZSBkaXZpc2lvbiBoZXJlIHRydW5jYXRlcyBpblxuICAvLyBUZVggYnV0IGRvZXNuJ3QgaGVyZSwgcHJvZHVjaW5nIGRpZmZlcmVudCByZXN1bHRzLiBJZiB3ZSB3YW50ZWQgdG9cbiAgLy8gZXhhY3RseSBtYXRjaCBUZVgncyBjYWxjdWxhdGlvbiwgd2UgY291bGQgZG9cbiAgLy8gICBNYXRoLmZsb29yKDY1NTM2MCAqIG1heERpc3RGcm9tQXhpcyAvIDUwMCkgKlxuICAvLyAgICBkZWxpbWl0ZXJGYWN0b3IgLyA2NTUzNjBcbiAgLy8gKFRvIHNlZSB0aGUgZGlmZmVyZW5jZSwgY29tcGFyZVxuICAvLyAgICB4Xnt4XntcXGxlZnQoXFxydWxlezAuMWVtfXswLjY4ZW19XFxyaWdodCl9fVxuICAvLyBpbiBUZVggYW5kIEthVGVYKVxuICBtYXhEaXN0RnJvbUF4aXMgLyA1MDAgKiBkZWxpbWl0ZXJGYWN0b3IsIDIgKiBtYXhEaXN0RnJvbUF4aXMgLSBkZWxpbWl0ZXJFeHRlbmQpOyAvLyBGaW5hbGx5LCB3ZSBkZWZlciB0byBgbWFrZUN1c3RvbVNpemVkRGVsaW1gIHdpdGggb3VyIGNhbGN1bGF0ZWQgdG90YWxcbiAgLy8gaGVpZ2h0XG5cbiAgcmV0dXJuIGRlbGltaXRlcl9tYWtlQ3VzdG9tU2l6ZWREZWxpbShkZWxpbSwgdG90YWxIZWlnaHQsIHRydWUsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZGVsaW1pdGVyID0gKHtcbiAgc3FydEltYWdlOiBtYWtlU3FydEltYWdlLFxuICBzaXplZERlbGltOiBkZWxpbWl0ZXJfbWFrZVNpemVkRGVsaW0sXG4gIGN1c3RvbVNpemVkRGVsaW06IGRlbGltaXRlcl9tYWtlQ3VzdG9tU2l6ZWREZWxpbSxcbiAgbGVmdFJpZ2h0RGVsaW06IG1ha2VMZWZ0UmlnaHREZWxpbVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvZGVsaW1zaXppbmcuanNcblxuXG5cblxuXG5cblxuXG5cbi8vIEV4dHJhIGRhdGEgbmVlZGVkIGZvciB0aGUgZGVsaW1pdGVyIGhhbmRsZXIgZG93biBiZWxvd1xudmFyIGRlbGltaXRlclNpemVzID0ge1xuICBcIlxcXFxiaWdsXCI6IHtcbiAgICBtY2xhc3M6IFwibW9wZW5cIixcbiAgICBzaXplOiAxXG4gIH0sXG4gIFwiXFxcXEJpZ2xcIjoge1xuICAgIG1jbGFzczogXCJtb3BlblwiLFxuICAgIHNpemU6IDJcbiAgfSxcbiAgXCJcXFxcYmlnZ2xcIjoge1xuICAgIG1jbGFzczogXCJtb3BlblwiLFxuICAgIHNpemU6IDNcbiAgfSxcbiAgXCJcXFxcQmlnZ2xcIjoge1xuICAgIG1jbGFzczogXCJtb3BlblwiLFxuICAgIHNpemU6IDRcbiAgfSxcbiAgXCJcXFxcYmlnclwiOiB7XG4gICAgbWNsYXNzOiBcIm1jbG9zZVwiLFxuICAgIHNpemU6IDFcbiAgfSxcbiAgXCJcXFxcQmlnclwiOiB7XG4gICAgbWNsYXNzOiBcIm1jbG9zZVwiLFxuICAgIHNpemU6IDJcbiAgfSxcbiAgXCJcXFxcYmlnZ3JcIjoge1xuICAgIG1jbGFzczogXCJtY2xvc2VcIixcbiAgICBzaXplOiAzXG4gIH0sXG4gIFwiXFxcXEJpZ2dyXCI6IHtcbiAgICBtY2xhc3M6IFwibWNsb3NlXCIsXG4gICAgc2l6ZTogNFxuICB9LFxuICBcIlxcXFxiaWdtXCI6IHtcbiAgICBtY2xhc3M6IFwibXJlbFwiLFxuICAgIHNpemU6IDFcbiAgfSxcbiAgXCJcXFxcQmlnbVwiOiB7XG4gICAgbWNsYXNzOiBcIm1yZWxcIixcbiAgICBzaXplOiAyXG4gIH0sXG4gIFwiXFxcXGJpZ2dtXCI6IHtcbiAgICBtY2xhc3M6IFwibXJlbFwiLFxuICAgIHNpemU6IDNcbiAgfSxcbiAgXCJcXFxcQmlnZ21cIjoge1xuICAgIG1jbGFzczogXCJtcmVsXCIsXG4gICAgc2l6ZTogNFxuICB9LFxuICBcIlxcXFxiaWdcIjoge1xuICAgIG1jbGFzczogXCJtb3JkXCIsXG4gICAgc2l6ZTogMVxuICB9LFxuICBcIlxcXFxCaWdcIjoge1xuICAgIG1jbGFzczogXCJtb3JkXCIsXG4gICAgc2l6ZTogMlxuICB9LFxuICBcIlxcXFxiaWdnXCI6IHtcbiAgICBtY2xhc3M6IFwibW9yZFwiLFxuICAgIHNpemU6IDNcbiAgfSxcbiAgXCJcXFxcQmlnZ1wiOiB7XG4gICAgbWNsYXNzOiBcIm1vcmRcIixcbiAgICBzaXplOiA0XG4gIH1cbn07XG52YXIgZGVsaW1pdGVycyA9IFtcIihcIiwgXCJcXFxcbHBhcmVuXCIsIFwiKVwiLCBcIlxcXFxycGFyZW5cIiwgXCJbXCIsIFwiXFxcXGxicmFja1wiLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIsIFwiXFxcXHtcIiwgXCJcXFxcbGJyYWNlXCIsIFwiXFxcXH1cIiwgXCJcXFxccmJyYWNlXCIsIFwiXFxcXGxmbG9vclwiLCBcIlxcXFxyZmxvb3JcIiwgXCJcXHUyMzBBXCIsIFwiXFx1MjMwQlwiLCBcIlxcXFxsY2VpbFwiLCBcIlxcXFxyY2VpbFwiLCBcIlxcdTIzMDhcIiwgXCJcXHUyMzA5XCIsIFwiPFwiLCBcIj5cIiwgXCJcXFxcbGFuZ2xlXCIsIFwiXFx1MjdFOFwiLCBcIlxcXFxyYW5nbGVcIiwgXCJcXHUyN0U5XCIsIFwiXFxcXGx0XCIsIFwiXFxcXGd0XCIsIFwiXFxcXGx2ZXJ0XCIsIFwiXFxcXHJ2ZXJ0XCIsIFwiXFxcXGxWZXJ0XCIsIFwiXFxcXHJWZXJ0XCIsIFwiXFxcXGxncm91cFwiLCBcIlxcXFxyZ3JvdXBcIiwgXCJcXHUyN0VFXCIsIFwiXFx1MjdFRlwiLCBcIlxcXFxsbW91c3RhY2hlXCIsIFwiXFxcXHJtb3VzdGFjaGVcIiwgXCJcXHUyM0IwXCIsIFwiXFx1MjNCMVwiLCBcIi9cIiwgXCJcXFxcYmFja3NsYXNoXCIsIFwifFwiLCBcIlxcXFx2ZXJ0XCIsIFwiXFxcXHxcIiwgXCJcXFxcVmVydFwiLCBcIlxcXFx1cGFycm93XCIsIFwiXFxcXFVwYXJyb3dcIiwgXCJcXFxcZG93bmFycm93XCIsIFwiXFxcXERvd25hcnJvd1wiLCBcIlxcXFx1cGRvd25hcnJvd1wiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCBcIi5cIl07XG5cbi8vIERlbGltaXRlciBmdW5jdGlvbnNcbmZ1bmN0aW9uIGNoZWNrRGVsaW1pdGVyKGRlbGltLCBjb250ZXh0KSB7XG4gIHZhciBzeW1EZWxpbSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUoZGVsaW0pO1xuXG4gIGlmIChzeW1EZWxpbSAmJiB1dGlscy5jb250YWlucyhkZWxpbWl0ZXJzLCBzeW1EZWxpbS50ZXh0KSkge1xuICAgIHJldHVybiBzeW1EZWxpbTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGRlbGltaXRlcjogJ1wiICsgKHN5bURlbGltID8gc3ltRGVsaW0udGV4dCA6IEpTT04uc3RyaW5naWZ5KGRlbGltKSkgKyBcIicgYWZ0ZXIgJ1wiICsgY29udGV4dC5mdW5jTmFtZSArIFwiJ1wiLCBkZWxpbSk7XG4gIH1cbn1cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImRlbGltc2l6aW5nXCIsXG4gIG5hbWVzOiBbXCJcXFxcYmlnbFwiLCBcIlxcXFxCaWdsXCIsIFwiXFxcXGJpZ2dsXCIsIFwiXFxcXEJpZ2dsXCIsIFwiXFxcXGJpZ3JcIiwgXCJcXFxcQmlnclwiLCBcIlxcXFxiaWdnclwiLCBcIlxcXFxCaWdnclwiLCBcIlxcXFxiaWdtXCIsIFwiXFxcXEJpZ21cIiwgXCJcXFxcYmlnZ21cIiwgXCJcXFxcQmlnZ21cIiwgXCJcXFxcYmlnXCIsIFwiXFxcXEJpZ1wiLCBcIlxcXFxiaWdnXCIsIFwiXFxcXEJpZ2dcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB2YXIgZGVsaW0gPSBjaGVja0RlbGltaXRlcihhcmdzWzBdLCBjb250ZXh0KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJkZWxpbXNpemluZ1wiLFxuICAgICAgbW9kZTogY29udGV4dC5wYXJzZXIubW9kZSxcbiAgICAgIHNpemU6IGRlbGltaXRlclNpemVzW2NvbnRleHQuZnVuY05hbWVdLnNpemUsXG4gICAgICBtY2xhc3M6IGRlbGltaXRlclNpemVzW2NvbnRleHQuZnVuY05hbWVdLm1jbGFzcyxcbiAgICAgIGRlbGltOiBkZWxpbS50ZXh0XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgaWYgKGdyb3VwLmRlbGltID09PSBcIi5cIikge1xuICAgICAgLy8gRW1wdHkgZGVsaW1pdGVycyBzdGlsbCBjb3VudCBhcyBlbGVtZW50cywgZXZlbiB0aG91Z2ggdGhleSBkb24ndFxuICAgICAgLy8gc2hvdyBhbnl0aGluZy5cbiAgICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbZ3JvdXAubWNsYXNzXSk7XG4gICAgfSAvLyBVc2UgZGVsaW1pdGVyLnNpemVkRGVsaW0gdG8gZ2VuZXJhdGUgdGhlIGRlbGltaXRlci5cblxuXG4gICAgcmV0dXJuIGRlbGltaXRlci5zaXplZERlbGltKGdyb3VwLmRlbGltLCBncm91cC5zaXplLCBvcHRpb25zLCBncm91cC5tb2RlLCBbZ3JvdXAubWNsYXNzXSk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXApIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBbXTtcblxuICAgIGlmIChncm91cC5kZWxpbSAhPT0gXCIuXCIpIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAuZGVsaW0sIGdyb3VwLm1vZGUpKTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgY2hpbGRyZW4pO1xuXG4gICAgaWYgKGdyb3VwLm1jbGFzcyA9PT0gXCJtb3BlblwiIHx8IGdyb3VwLm1jbGFzcyA9PT0gXCJtY2xvc2VcIikge1xuICAgICAgLy8gT25seSBzb21lIG9mIHRoZSBkZWxpbXNpemluZyBmdW5jdGlvbnMgYWN0IGFzIGZlbmNlcywgYW5kIHRoZXlcbiAgICAgIC8vIHJldHVybiBcIm1vcGVuXCIgb3IgXCJtY2xvc2VcIiBtY2xhc3MuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRXhwbGljaXRseSBkaXNhYmxlIGZlbmNpbmcgaWYgaXQncyBub3QgYSBmZW5jZSwgdG8gb3ZlcnJpZGUgdGhlXG4gICAgICAvLyBkZWZhdWx0cy5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmVuY2VcIiwgXCJmYWxzZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGFzc2VydFBhcnNlZChncm91cCkge1xuICBpZiAoIWdyb3VwLmJvZHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCdWc6IFRoZSBsZWZ0cmlnaHQgUGFyc2VOb2RlIHdhc24ndCBmdWxseSBwYXJzZWQuXCIpO1xuICB9XG59XG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJsZWZ0cmlnaHQtcmlnaHRcIixcbiAgbmFtZXM6IFtcIlxcXFxyaWdodFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIC8vIFxcbGVmdCBjYXNlIGJlbG93IHRyaWdnZXJzIHBhcnNpbmcgb2YgXFxyaWdodCBpblxuICAgIC8vICAgYGNvbnN0IHJpZ2h0ID0gcGFyc2VyLnBhcnNlRnVuY3Rpb24oKTtgXG4gICAgLy8gdXNlcyB0aGlzIHJldHVybiB2YWx1ZS5cbiAgICB2YXIgY29sb3IgPSBjb250ZXh0LnBhcnNlci5ndWxsZXQubWFjcm9zLmdldChcIlxcXFxjdXJyZW50QGNvbG9yXCIpO1xuXG4gICAgaWYgKGNvbG9yICYmIHR5cGVvZiBjb2xvciAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXGN1cnJlbnRAY29sb3Igc2V0IHRvIG5vbi1zdHJpbmcgaW4gXFxcXHJpZ2h0XCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImxlZnRyaWdodC1yaWdodFwiLFxuICAgICAgbW9kZTogY29udGV4dC5wYXJzZXIubW9kZSxcbiAgICAgIGRlbGltOiBjaGVja0RlbGltaXRlcihhcmdzWzBdLCBjb250ZXh0KS50ZXh0LFxuICAgICAgY29sb3I6IGNvbG9yIC8vIHVuZGVmaW5lZCBpZiBub3Qgc2V0IHZpYSBcXGNvbG9yXG5cbiAgICB9O1xuICB9XG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJsZWZ0cmlnaHRcIixcbiAgbmFtZXM6IFtcIlxcXFxsZWZ0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIGRlbGltID0gY2hlY2tEZWxpbWl0ZXIoYXJnc1swXSwgY29udGV4dCk7XG4gICAgdmFyIHBhcnNlciA9IGNvbnRleHQucGFyc2VyOyAvLyBQYXJzZSBvdXQgdGhlIGltcGxpY2l0IGJvZHlcblxuICAgICsrcGFyc2VyLmxlZnRyaWdodERlcHRoOyAvLyBwYXJzZUV4cHJlc3Npb24gc3RvcHMgYmVmb3JlICdcXFxccmlnaHQnXG5cbiAgICB2YXIgYm9keSA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24oZmFsc2UpO1xuICAgIC0tcGFyc2VyLmxlZnRyaWdodERlcHRoOyAvLyBDaGVjayB0aGUgbmV4dCB0b2tlblxuXG4gICAgcGFyc2VyLmV4cGVjdChcIlxcXFxyaWdodFwiLCBmYWxzZSk7XG4gICAgdmFyIHJpZ2h0ID0gYXNzZXJ0Tm9kZVR5cGUocGFyc2VyLnBhcnNlRnVuY3Rpb24oKSwgXCJsZWZ0cmlnaHQtcmlnaHRcIik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibGVmdHJpZ2h0XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGJvZHksXG4gICAgICBsZWZ0OiBkZWxpbS50ZXh0LFxuICAgICAgcmlnaHQ6IHJpZ2h0LmRlbGltLFxuICAgICAgcmlnaHRDb2xvcjogcmlnaHQuY29sb3JcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBhc3NlcnRQYXJzZWQoZ3JvdXApOyAvLyBCdWlsZCB0aGUgaW5uZXIgZXhwcmVzc2lvblxuXG4gICAgdmFyIGlubmVyID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlLCBbXCJtb3BlblwiLCBcIm1jbG9zZVwiXSk7XG4gICAgdmFyIGlubmVySGVpZ2h0ID0gMDtcbiAgICB2YXIgaW5uZXJEZXB0aCA9IDA7XG4gICAgdmFyIGhhZE1pZGRsZSA9IGZhbHNlOyAvLyBDYWxjdWxhdGUgaXRzIGhlaWdodCBhbmQgZGVwdGhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIFByb3BlcnR5IGBpc01pZGRsZWAgbm90IGRlZmluZWQgb24gYHNwYW5gLiBTZWUgY29tbWVudCBpblxuICAgICAgLy8gXCJtaWRkbGVcIidzIGh0bWxCdWlsZGVyLlxuICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgaWYgKGlubmVyW2ldLmlzTWlkZGxlKSB7XG4gICAgICAgIGhhZE1pZGRsZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbm5lckhlaWdodCA9IE1hdGgubWF4KGlubmVyW2ldLmhlaWdodCwgaW5uZXJIZWlnaHQpO1xuICAgICAgICBpbm5lckRlcHRoID0gTWF0aC5tYXgoaW5uZXJbaV0uZGVwdGgsIGlubmVyRGVwdGgpO1xuICAgICAgfVxuICAgIH0gLy8gVGhlIHNpemUgb2YgZGVsaW1pdGVycyBpcyB0aGUgc2FtZSwgcmVnYXJkbGVzcyBvZiB3aGF0IHN0eWxlIHdlIGFyZVxuICAgIC8vIGluLiBUaHVzLCB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIHRoZSBzaXplIG9mIGRlbGltaXRlciB3ZSBuZWVkIGFyb3VuZFxuICAgIC8vIGEgZ3JvdXAsIHdlIHNjYWxlIGRvd24gdGhlIGlubmVyIHNpemUgYmFzZWQgb24gdGhlIHNpemUuXG5cblxuICAgIGlubmVySGVpZ2h0ICo9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgaW5uZXJEZXB0aCAqPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIHZhciBsZWZ0RGVsaW07XG5cbiAgICBpZiAoZ3JvdXAubGVmdCA9PT0gXCIuXCIpIHtcbiAgICAgIC8vIEVtcHR5IGRlbGltaXRlcnMgaW4gXFxsZWZ0IGFuZCBcXHJpZ2h0IG1ha2UgbnVsbCBkZWxpbWl0ZXIgc3BhY2VzLlxuICAgICAgbGVmdERlbGltID0gbWFrZU51bGxEZWxpbWl0ZXIob3B0aW9ucywgW1wibW9wZW5cIl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIHVzZSBsZWZ0UmlnaHREZWxpbSB0byBnZW5lcmF0ZSB0aGUgY29ycmVjdCBzaXplZFxuICAgICAgLy8gZGVsaW1pdGVyLlxuICAgICAgbGVmdERlbGltID0gZGVsaW1pdGVyLmxlZnRSaWdodERlbGltKGdyb3VwLmxlZnQsIGlubmVySGVpZ2h0LCBpbm5lckRlcHRoLCBvcHRpb25zLCBncm91cC5tb2RlLCBbXCJtb3BlblwiXSk7XG4gICAgfSAvLyBBZGQgaXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZXhwcmVzc2lvblxuXG5cbiAgICBpbm5lci51bnNoaWZ0KGxlZnREZWxpbSk7IC8vIEhhbmRsZSBtaWRkbGUgZGVsaW1pdGVyc1xuXG4gICAgaWYgKGhhZE1pZGRsZSkge1xuICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGlubmVyLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgbWlkZGxlRGVsaW0gPSBpbm5lcltfaV07IC8vIFByb3BlcnR5IGBpc01pZGRsZWAgbm90IGRlZmluZWQgb24gYHNwYW5gLiBTZWUgY29tbWVudCBpblxuICAgICAgICAvLyBcIm1pZGRsZVwiJ3MgaHRtbEJ1aWxkZXIuXG4gICAgICAgIC8vICRGbG93Rml4TWVcblxuICAgICAgICB2YXIgaXNNaWRkbGUgPSBtaWRkbGVEZWxpbS5pc01pZGRsZTtcblxuICAgICAgICBpZiAoaXNNaWRkbGUpIHtcbiAgICAgICAgICAvLyBBcHBseSB0aGUgb3B0aW9ucyB0aGF0IHdlcmUgYWN0aXZlIHdoZW4gXFxtaWRkbGUgd2FzIGNhbGxlZFxuICAgICAgICAgIGlubmVyW19pXSA9IGRlbGltaXRlci5sZWZ0UmlnaHREZWxpbShpc01pZGRsZS5kZWxpbSwgaW5uZXJIZWlnaHQsIGlubmVyRGVwdGgsIGlzTWlkZGxlLm9wdGlvbnMsIGdyb3VwLm1vZGUsIFtdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByaWdodERlbGltOyAvLyBTYW1lIGZvciB0aGUgcmlnaHQgZGVsaW1pdGVyLCBidXQgdXNpbmcgY29sb3Igc3BlY2lmaWVkIGJ5IFxcY29sb3JcblxuICAgIGlmIChncm91cC5yaWdodCA9PT0gXCIuXCIpIHtcbiAgICAgIHJpZ2h0RGVsaW0gPSBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBbXCJtY2xvc2VcIl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29sb3JPcHRpb25zID0gZ3JvdXAucmlnaHRDb2xvciA/IG9wdGlvbnMud2l0aENvbG9yKGdyb3VwLnJpZ2h0Q29sb3IpIDogb3B0aW9ucztcbiAgICAgIHJpZ2h0RGVsaW0gPSBkZWxpbWl0ZXIubGVmdFJpZ2h0RGVsaW0oZ3JvdXAucmlnaHQsIGlubmVySGVpZ2h0LCBpbm5lckRlcHRoLCBjb2xvck9wdGlvbnMsIGdyb3VwLm1vZGUsIFtcIm1jbG9zZVwiXSk7XG4gICAgfSAvLyBBZGQgaXQgdG8gdGhlIGVuZCBvZiB0aGUgZXhwcmVzc2lvbi5cblxuXG4gICAgaW5uZXIucHVzaChyaWdodERlbGltKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibWlubmVyXCJdLCBpbm5lciwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBhc3NlcnRQYXJzZWQoZ3JvdXApO1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zKTtcblxuICAgIGlmIChncm91cC5sZWZ0ICE9PSBcIi5cIikge1xuICAgICAgdmFyIGxlZnROb2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAubGVmdCwgZ3JvdXAubW9kZSldKTtcbiAgICAgIGxlZnROb2RlLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICAgIGlubmVyLnVuc2hpZnQobGVmdE5vZGUpO1xuICAgIH1cblxuICAgIGlmIChncm91cC5yaWdodCAhPT0gXCIuXCIpIHtcbiAgICAgIHZhciByaWdodE5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC5yaWdodCwgZ3JvdXAubW9kZSldKTtcbiAgICAgIHJpZ2h0Tm9kZS5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcInRydWVcIik7XG5cbiAgICAgIGlmIChncm91cC5yaWdodENvbG9yKSB7XG4gICAgICAgIHJpZ2h0Tm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRoY29sb3JcIiwgZ3JvdXAucmlnaHRDb2xvcik7XG4gICAgICB9XG5cbiAgICAgIGlubmVyLnB1c2gocmlnaHROb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRNYXRoTUxfbWFrZVJvdyhpbm5lcik7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1pZGRsZVwiLFxuICBuYW1lczogW1wiXFxcXG1pZGRsZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIHZhciBkZWxpbSA9IGNoZWNrRGVsaW1pdGVyKGFyZ3NbMF0sIGNvbnRleHQpO1xuXG4gICAgaWYgKCFjb250ZXh0LnBhcnNlci5sZWZ0cmlnaHREZXB0aCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXG1pZGRsZSB3aXRob3V0IHByZWNlZGluZyBcXFxcbGVmdFwiLCBkZWxpbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibWlkZGxlXCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgZGVsaW06IGRlbGltLnRleHRcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbWlkZGxlRGVsaW07XG5cbiAgICBpZiAoZ3JvdXAuZGVsaW0gPT09IFwiLlwiKSB7XG4gICAgICBtaWRkbGVEZWxpbSA9IG1ha2VOdWxsRGVsaW1pdGVyKG9wdGlvbnMsIFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWlkZGxlRGVsaW0gPSBkZWxpbWl0ZXIuc2l6ZWREZWxpbShncm91cC5kZWxpbSwgMSwgb3B0aW9ucywgZ3JvdXAubW9kZSwgW10pO1xuICAgICAgdmFyIGlzTWlkZGxlID0ge1xuICAgICAgICBkZWxpbTogZ3JvdXAuZGVsaW0sXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgIH07IC8vIFByb3BlcnR5IGBpc01pZGRsZWAgbm90IGRlZmluZWQgb24gYHNwYW5gLiBJdCBpcyBvbmx5IHVzZWQgaW5cbiAgICAgIC8vIHRoaXMgZmlsZSBhYm92ZS5cbiAgICAgIC8vIFRPRE86IEZpeCB0aGlzIHZpb2xhdGlvbiBvZiB0aGUgYHNwYW5gIHR5cGUgYW5kIHBvc3NpYmx5IHJlbmFtZVxuICAgICAgLy8gdGhpbmdzIHNpbmNlIGBpc01pZGRsZWAgc291bmRzIGxpa2UgYSBib29sZWFuLCBidXQgaXMgYSBzdHJ1Y3QuXG4gICAgICAvLyAkRmxvd0ZpeE1lXG5cbiAgICAgIG1pZGRsZURlbGltLmlzTWlkZGxlID0gaXNNaWRkbGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pZGRsZURlbGltO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gQSBGaXJlZm94IFxcbWlkZGxlIHdpbGwgc3RyZWNoIGEgY2hhcmFjdGVyIHZlcnRpY2FsbHkgb25seSBpZiBpdFxuICAgIC8vIGlzIGluIHRoZSBmZW5jZSBwYXJ0IG9mIHRoZSBvcGVyYXRvciBkaWN0aW9uYXJ5IGF0OlxuICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9NYXRoTUwzL2FwcGVuZGl4Yy5odG1sLlxuICAgIC8vIFNvIHdlIG5lZWQgdG8gYXZvaWQgVSsyMjIzIGFuZCB1c2UgcGxhaW4gXCJ8XCIgaW5zdGVhZC5cbiAgICB2YXIgdGV4dE5vZGUgPSBncm91cC5kZWxpbSA9PT0gXCJcXFxcdmVydFwiIHx8IGdyb3VwLmRlbGltID09PSBcInxcIiA/IGJ1aWxkTWF0aE1MX21ha2VUZXh0KFwifFwiLCBcInRleHRcIikgOiBidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC5kZWxpbSwgZ3JvdXAubW9kZSk7XG4gICAgdmFyIG1pZGRsZU5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFt0ZXh0Tm9kZV0pO1xuICAgIG1pZGRsZU5vZGUuc2V0QXR0cmlidXRlKFwiZmVuY2VcIiwgXCJ0cnVlXCIpOyAvLyBNYXRoTUwgZ2l2ZXMgNS8xOGVtIHNwYWNpbmcgdG8gZWFjaCA8bW8+IGVsZW1lbnQuXG4gICAgLy8gXFxtaWRkbGUgc2hvdWxkIGdldCBkZWxpbWl0ZXIgc3BhY2luZyBpbnN0ZWFkLlxuXG4gICAgbWlkZGxlTm9kZS5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgXCIwLjA1ZW1cIik7XG4gICAgbWlkZGxlTm9kZS5zZXRBdHRyaWJ1dGUoXCJyc3BhY2VcIiwgXCIwLjA1ZW1cIik7XG4gICAgcmV0dXJuIG1pZGRsZU5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2VuY2xvc2UuanNcblxuXG5cblxuXG5cblxuXG5cbnZhciBlbmNsb3NlX2h0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgLy8gXFxjYW5jZWwsIFxcYmNhbmNlbCwgXFx4Y2FuY2VsLCBcXHNvdXQsIFxcZmJveCwgXFxjb2xvcmJveCwgXFxmY29sb3Jib3hcbiAgLy8gU29tZSBncm91cHMgY2FuIHJldHVybiBkb2N1bWVudCBmcmFnbWVudHMuICBIYW5kbGUgdGhvc2UgYnkgd3JhcHBpbmdcbiAgLy8gdGhlbSBpbiBhIHNwYW4uXG4gIHZhciBpbm5lciA9IGJ1aWxkQ29tbW9uLndyYXBGcmFnbWVudChidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gIHZhciBsYWJlbCA9IGdyb3VwLmxhYmVsLnN1YnN0cigxKTtcbiAgdmFyIHNjYWxlID0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgdmFyIGltZztcbiAgdmFyIGltZ1NoaWZ0ID0gMDsgLy8gSW4gdGhlIExhVGVYIGNhbmNlbCBwYWNrYWdlLCBsaW5lIGdlb21ldHJ5IGlzIHNsaWdodGx5IGRpZmZlcmVudFxuICAvLyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgc3ViamVjdCBpcyB3aWRlciB0aGFuIGl0IGlzIHRhbGwsIG9yIHZpY2UgdmVyc2EuXG4gIC8vIFdlIGRvbid0IGtub3cgdGhlIHdpZHRoIG9mIGEgZ3JvdXAsIHNvIGFzIGEgcHJveHksIHdlIHRlc3QgaWZcbiAgLy8gdGhlIHN1YmplY3QgaXMgYSBzaW5nbGUgY2hhcmFjdGVyLiBUaGlzIGNhcHR1cmVzIG1vc3Qgb2YgdGhlXG4gIC8vIHN1YmplY3RzIHRoYXQgc2hvdWxkIGdldCB0aGUgXCJ0YWxsXCIgdHJlYXRtZW50LlxuXG4gIHZhciBpc1NpbmdsZUNoYXIgPSB1dGlscy5pc0NoYXJhY3RlckJveChncm91cC5ib2R5KTtcblxuICBpZiAobGFiZWwgPT09IFwic291dFwiKSB7XG4gICAgaW1nID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wic3RyZXRjaHlcIiwgXCJzb3V0XCJdKTtcbiAgICBpbWcuaGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRlZmF1bHRSdWxlVGhpY2tuZXNzIC8gc2NhbGU7XG4gICAgaW1nU2hpZnQgPSAtMC41ICogb3B0aW9ucy5mb250TWV0cmljcygpLnhIZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgLy8gQWRkIGhvcml6b250YWwgcGFkZGluZ1xuICAgIGlmICgvY2FuY2VsLy50ZXN0KGxhYmVsKSkge1xuICAgICAgaWYgKCFpc1NpbmdsZUNoYXIpIHtcbiAgICAgICAgaW5uZXIuY2xhc3Nlcy5wdXNoKFwiY2FuY2VsLXBhZFwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5uZXIuY2xhc3Nlcy5wdXNoKFwiYm94cGFkXCIpO1xuICAgIH0gLy8gQWRkIHZlcnRpY2FsIHBhZGRpbmdcblxuXG4gICAgdmFyIHZlcnRQYWQgPSAwO1xuICAgIHZhciBydWxlVGhpY2tuZXNzID0gMDsgLy8gcmVmOiBjYW5jZWwgcGFja2FnZTogXFxhZHZhbmNlXFx0b3RhbGhlaWdodDJcXHBAICUgXCIrMlwiXG5cbiAgICBpZiAoL2JveC8udGVzdChsYWJlbCkpIHtcbiAgICAgIHJ1bGVUaGlja25lc3MgPSBNYXRoLm1heChvcHRpb25zLmZvbnRNZXRyaWNzKCkuZmJveHJ1bGUsIC8vIGRlZmF1bHRcbiAgICAgIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyAvLyBVc2VyIG92ZXJyaWRlLlxuICAgICAgKTtcbiAgICAgIHZlcnRQYWQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZmJveHNlcCArIChsYWJlbCA9PT0gXCJjb2xvcmJveFwiID8gMCA6IHJ1bGVUaGlja25lc3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2ZXJ0UGFkID0gaXNTaW5nbGVDaGFyID8gMC4yIDogMDtcbiAgICB9XG5cbiAgICBpbWcgPSBzdHJldGNoeS5lbmNsb3NlU3Bhbihpbm5lciwgbGFiZWwsIHZlcnRQYWQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKC9mYm94fGJveGVkfGZjb2xvcmJveC8udGVzdChsYWJlbCkpIHtcbiAgICAgIGltZy5zdHlsZS5ib3JkZXJTdHlsZSA9IFwic29saWRcIjtcbiAgICAgIGltZy5zdHlsZS5ib3JkZXJXaWR0aCA9IHJ1bGVUaGlja25lc3MgKyBcImVtXCI7XG4gICAgfVxuXG4gICAgaW1nU2hpZnQgPSBpbm5lci5kZXB0aCArIHZlcnRQYWQ7XG5cbiAgICBpZiAoZ3JvdXAuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBpbWcuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gZ3JvdXAuYmFja2dyb3VuZENvbG9yO1xuXG4gICAgICBpZiAoZ3JvdXAuYm9yZGVyQ29sb3IpIHtcbiAgICAgICAgaW1nLnN0eWxlLmJvcmRlckNvbG9yID0gZ3JvdXAuYm9yZGVyQ29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIHZsaXN0O1xuXG4gIGlmIChncm91cC5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICBjaGlsZHJlbjogWy8vIFB1dCB0aGUgY29sb3IgYmFja2dyb3VuZCBiZWhpbmQgaW5uZXI7XG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbWcsXG4gICAgICAgIHNoaWZ0OiBpbWdTaGlmdFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW5uZXIsXG4gICAgICAgIHNoaWZ0OiAwXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiBbLy8gV3JpdGUgdGhlIFxcY2FuY2VsIHN0cm9rZSBvbiB0b3Agb2YgaW5uZXIuXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lcixcbiAgICAgICAgc2hpZnQ6IDBcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGltZyxcbiAgICAgICAgc2hpZnQ6IGltZ1NoaWZ0LFxuICAgICAgICB3cmFwcGVyQ2xhc3NlczogL2NhbmNlbC8udGVzdChsYWJlbCkgPyBbXCJzdmctYWxpZ25cIl0gOiBbXVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfVxuXG4gIGlmICgvY2FuY2VsLy50ZXN0KGxhYmVsKSkge1xuICAgIC8vIFRoZSBjYW5jZWwgcGFja2FnZSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBjYW5jZWwgbGluZXMgYWRkIHRoZWlyIGhlaWdodFxuICAgIC8vIHRvIHRoZSBleHByZXNzaW9uLCBidXQgdGVzdHMgc2hvdyB0aGF0IGlzbid0IGhvdyBpdCBhY3R1YWxseSB3b3Jrcy5cbiAgICB2bGlzdC5oZWlnaHQgPSBpbm5lci5oZWlnaHQ7XG4gICAgdmxpc3QuZGVwdGggPSBpbm5lci5kZXB0aDtcbiAgfVxuXG4gIGlmICgvY2FuY2VsLy50ZXN0KGxhYmVsKSAmJiAhaXNTaW5nbGVDaGFyKSB7XG4gICAgLy8gY2FuY2VsIGRvZXMgbm90IGNyZWF0ZSBob3JpeiBzcGFjZSBmb3IgaXRzIGxpbmUgZXh0ZW5zaW9uLlxuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwiY2FuY2VsLWxhcFwiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICB9XG59O1xuXG52YXIgZW5jbG9zZV9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgZmJveHNlcCA9IDA7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoZ3JvdXAubGFiZWwuaW5kZXhPZihcImNvbG9yYm94XCIpID4gLTEgPyBcIm1wYWRkZWRcIiA6IFwibWVuY2xvc2VcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICBzd2l0Y2ggKGdyb3VwLmxhYmVsKSB7XG4gICAgY2FzZSBcIlxcXFxjYW5jZWxcIjpcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJ1cGRpYWdvbmFsc3RyaWtlXCIpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwiXFxcXGJjYW5jZWxcIjpcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJkb3duZGlhZ29uYWxzdHJpa2VcIik7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJcXFxcc291dFwiOlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcImhvcml6b250YWxzdHJpa2VcIik7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJcXFxcZmJveFwiOlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcImJveFwiKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcIlxcXFxmY29sb3Jib3hcIjpcbiAgICBjYXNlIFwiXFxcXGNvbG9yYm94XCI6XG4gICAgICAvLyA8bWVuY2xvc2U+IGRvZXNuJ3QgaGF2ZSBhIGdvb2Qgbm90YXRpb24gb3B0aW9uLiBTbyB1c2UgPG1wYWRkZWQ+XG4gICAgICAvLyBpbnN0ZWFkLiBTZXQgc29tZSBhdHRyaWJ1dGVzIHRoYXQgY29tZSBpbmNsdWRlZCB3aXRoIDxtZW5jbG9zZT4uXG4gICAgICBmYm94c2VwID0gb3B0aW9ucy5mb250TWV0cmljcygpLmZib3hzZXAgKiBvcHRpb25zLmZvbnRNZXRyaWNzKCkucHRQZXJFbTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgXCIrXCIgKyAyICogZmJveHNlcCArIFwicHRcIik7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBcIitcIiArIDIgKiBmYm94c2VwICsgXCJwdFwiKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibHNwYWNlXCIsIGZib3hzZXAgKyBcInB0XCIpOyAvL1xuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcInZvZmZzZXRcIiwgZmJveHNlcCArIFwicHRcIik7XG5cbiAgICAgIGlmIChncm91cC5sYWJlbCA9PT0gXCJcXFxcZmNvbG9yYm94XCIpIHtcbiAgICAgICAgdmFyIHRoayA9IE1hdGgubWF4KG9wdGlvbnMuZm9udE1ldHJpY3MoKS5mYm94cnVsZSwgLy8gZGVmYXVsdFxuICAgICAgICBvcHRpb25zLm1pblJ1bGVUaGlja25lc3MgLy8gdXNlciBvdmVycmlkZVxuICAgICAgICApO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsIFwiYm9yZGVyOiBcIiArIHRoayArIFwiZW0gc29saWQgXCIgKyBTdHJpbmcoZ3JvdXAuYm9yZGVyQ29sb3IpKTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwiXFxcXHhjYW5jZWxcIjpcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJ1cGRpYWdvbmFsc3RyaWtlIGRvd25kaWFnb25hbHN0cmlrZVwiKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGdyb3VwLmJhY2tncm91bmRDb2xvcikge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aGJhY2tncm91bmRcIiwgZ3JvdXAuYmFja2dyb3VuZENvbG9yKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImVuY2xvc2VcIixcbiAgbmFtZXM6IFtcIlxcXFxjb2xvcmJveFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgZ3JlZWRpbmVzczogMyxcbiAgICBhcmdUeXBlczogW1wiY29sb3JcIiwgXCJ0ZXh0XCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBjb2xvciA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwiY29sb3ItdG9rZW5cIikuY29sb3I7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzFdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVuY2xvc2VcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGZ1bmNOYW1lLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcixcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZW5jbG9zZV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogZW5jbG9zZV9tYXRobWxCdWlsZGVyXG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJlbmNsb3NlXCIsXG4gIG5hbWVzOiBbXCJcXFxcZmNvbG9yYm94XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDMsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBncmVlZGluZXNzOiAzLFxuICAgIGFyZ1R5cGVzOiBbXCJjb2xvclwiLCBcImNvbG9yXCIsIFwidGV4dFwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmMi5mdW5jTmFtZTtcbiAgICB2YXIgYm9yZGVyQ29sb3IgPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcImNvbG9yLXRva2VuXCIpLmNvbG9yO1xuICAgIHZhciBiYWNrZ3JvdW5kQ29sb3IgPSBhc3NlcnROb2RlVHlwZShhcmdzWzFdLCBcImNvbG9yLXRva2VuXCIpLmNvbG9yO1xuICAgIHZhciBib2R5ID0gYXJnc1syXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlbmNsb3NlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLFxuICAgICAgYm9yZGVyQ29sb3I6IGJvcmRlckNvbG9yLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBlbmNsb3NlX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBlbmNsb3NlX21hdGhtbEJ1aWxkZXJcbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImVuY2xvc2VcIixcbiAgbmFtZXM6IFtcIlxcXFxmYm94XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcImhib3hcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYzLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYzLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlbmNsb3NlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBcIlxcXFxmYm94XCIsXG4gICAgICBib2R5OiBhcmdzWzBdXG4gICAgfTtcbiAgfVxufSk7XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZW5jbG9zZVwiLFxuICBuYW1lczogW1wiXFxcXGNhbmNlbFwiLCBcIlxcXFxiY2FuY2VsXCIsIFwiXFxcXHhjYW5jZWxcIiwgXCJcXFxcc291dFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjQsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjQucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWY0LmZ1bmNOYW1lO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlbmNsb3NlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZW5jbG9zZV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogZW5jbG9zZV9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RlZmluZUVudmlyb25tZW50LmpzXG5cblxuLyoqXG4gKiBBbGwgcmVnaXN0ZXJlZCBlbnZpcm9ubWVudHMuXG4gKiBgZW52aXJvbm1lbnRzLmpzYCBleHBvcnRzIHRoaXMgc2FtZSBkaWN0aW9uYXJ5IGFnYWluIGFuZCBtYWtlcyBpdCBwdWJsaWMuXG4gKiBgUGFyc2VyLmpzYCByZXF1aXJlcyB0aGlzIGRpY3Rpb25hcnkgdmlhIGBlbnZpcm9ubWVudHMuanNgLlxuICovXG52YXIgX2Vudmlyb25tZW50cyA9IHt9O1xuZnVuY3Rpb24gZGVmaW5lRW52aXJvbm1lbnQoX3JlZikge1xuICB2YXIgdHlwZSA9IF9yZWYudHlwZSxcbiAgICAgIG5hbWVzID0gX3JlZi5uYW1lcyxcbiAgICAgIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgIGhhbmRsZXIgPSBfcmVmLmhhbmRsZXIsXG4gICAgICBodG1sQnVpbGRlciA9IF9yZWYuaHRtbEJ1aWxkZXIsXG4gICAgICBtYXRobWxCdWlsZGVyID0gX3JlZi5tYXRobWxCdWlsZGVyO1xuICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXMgb2YgZW52aXJvbm1lbnRzLlxuICB2YXIgZGF0YSA9IHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIG51bUFyZ3M6IHByb3BzLm51bUFyZ3MgfHwgMCxcbiAgICBncmVlZGluZXNzOiAxLFxuICAgIGFsbG93ZWRJblRleHQ6IGZhbHNlLFxuICAgIG51bU9wdGlvbmFsQXJnczogMCxcbiAgICBoYW5kbGVyOiBoYW5kbGVyXG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuICAgIC8vIFRPRE86IFRoZSB2YWx1ZSB0eXBlIG9mIF9lbnZpcm9ubWVudHMgc2hvdWxkIGJlIGEgdHlwZSB1bmlvbiBvZiBhbGxcbiAgICAvLyBwb3NzaWJsZSBgRW52U3BlYzw+YCBwb3NzaWJpbGl0aWVzIGluc3RlYWQgb2YgYEVudlNwZWM8Kj5gLCB3aGljaCBpc1xuICAgIC8vIGFuIGV4aXN0ZW50aWFsIHR5cGUuXG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIF9lbnZpcm9ubWVudHNbbmFtZXNbaV1dID0gZGF0YTtcbiAgfVxuXG4gIGlmIChodG1sQnVpbGRlcikge1xuICAgIF9odG1sR3JvdXBCdWlsZGVyc1t0eXBlXSA9IGh0bWxCdWlsZGVyO1xuICB9XG5cbiAgaWYgKG1hdGhtbEJ1aWxkZXIpIHtcbiAgICBfbWF0aG1sR3JvdXBCdWlsZGVyc1t0eXBlXSA9IG1hdGhtbEJ1aWxkZXI7XG4gIH1cbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Vudmlyb25tZW50cy9hcnJheS5qc1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5mdW5jdGlvbiBnZXRITGluZXMocGFyc2VyKSB7XG4gIC8vIFJldHVybiBhbiBhcnJheS4gVGhlIGFycmF5IGxlbmd0aCA9IG51bWJlciBvZiBobGluZXMuXG4gIC8vIEVhY2ggZWxlbWVudCBpbiB0aGUgYXJyYXkgdGVsbHMgaWYgdGhlIGxpbmUgaXMgZGFzaGVkLlxuICB2YXIgaGxpbmVJbmZvID0gW107XG4gIHBhcnNlci5jb25zdW1lU3BhY2VzKCk7XG4gIHZhciBueHQgPSBwYXJzZXIuZmV0Y2goKS50ZXh0O1xuXG4gIHdoaWxlIChueHQgPT09IFwiXFxcXGhsaW5lXCIgfHwgbnh0ID09PSBcIlxcXFxoZGFzaGxpbmVcIikge1xuICAgIHBhcnNlci5jb25zdW1lKCk7XG4gICAgaGxpbmVJbmZvLnB1c2gobnh0ID09PSBcIlxcXFxoZGFzaGxpbmVcIik7XG4gICAgcGFyc2VyLmNvbnN1bWVTcGFjZXMoKTtcbiAgICBueHQgPSBwYXJzZXIuZmV0Y2goKS50ZXh0O1xuICB9XG5cbiAgcmV0dXJuIGhsaW5lSW5mbztcbn1cbi8qKlxuICogUGFyc2UgdGhlIGJvZHkgb2YgdGhlIGVudmlyb25tZW50LCB3aXRoIHJvd3MgZGVsaW1pdGVkIGJ5IFxcXFwgYW5kXG4gKiBjb2x1bW5zIGRlbGltaXRlZCBieSAmLCBhbmQgY3JlYXRlIGEgbmVzdGVkIGxpc3QgaW4gcm93LW1ham9yIG9yZGVyXG4gKiB3aXRoIG9uZSBncm91cCBwZXIgY2VsbC4gIElmIGdpdmVuIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHN0eWxlXG4gKiAoXCJ0ZXh0XCIsIFwiZGlzcGxheVwiLCBldGMuKSwgdGhlbiBlYWNoIGNlbGwgaXMgY2FzdCBpbnRvIHRoYXQgc3R5bGUuXG4gKi9cblxuXG5mdW5jdGlvbiBwYXJzZUFycmF5KHBhcnNlciwgX3JlZiwgc3R5bGUpIHtcbiAgdmFyIGhza2lwQmVmb3JlQW5kQWZ0ZXIgPSBfcmVmLmhza2lwQmVmb3JlQW5kQWZ0ZXIsXG4gICAgICBhZGRKb3QgPSBfcmVmLmFkZEpvdCxcbiAgICAgIGNvbHMgPSBfcmVmLmNvbHMsXG4gICAgICBhcnJheXN0cmV0Y2ggPSBfcmVmLmFycmF5c3RyZXRjaCxcbiAgICAgIGNvbFNlcGFyYXRpb25UeXBlID0gX3JlZi5jb2xTZXBhcmF0aW9uVHlwZTtcbiAgLy8gUGFyc2UgYm9keSBvZiBhcnJheSB3aXRoIFxcXFwgdGVtcG9yYXJpbHkgbWFwcGVkIHRvIFxcY3JcbiAgcGFyc2VyLmd1bGxldC5iZWdpbkdyb3VwKCk7XG4gIHBhcnNlci5ndWxsZXQubWFjcm9zLnNldChcIlxcXFxcXFxcXCIsIFwiXFxcXGNyXCIpOyAvLyBHZXQgY3VycmVudCBhcnJheXN0cmV0Y2ggaWYgaXQncyBub3Qgc2V0IGJ5IHRoZSBlbnZpcm9ubWVudFxuXG4gIGlmICghYXJyYXlzdHJldGNoKSB7XG4gICAgdmFyIHN0cmV0Y2ggPSBwYXJzZXIuZ3VsbGV0LmV4cGFuZE1hY3JvQXNUZXh0KFwiXFxcXGFycmF5c3RyZXRjaFwiKTtcblxuICAgIGlmIChzdHJldGNoID09IG51bGwpIHtcbiAgICAgIC8vIERlZmF1bHQgXFxhcnJheXN0cmV0Y2ggZnJvbSBsdHRhYi5kdHhcbiAgICAgIGFycmF5c3RyZXRjaCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFycmF5c3RyZXRjaCA9IHBhcnNlRmxvYXQoc3RyZXRjaCk7XG5cbiAgICAgIGlmICghYXJyYXlzdHJldGNoIHx8IGFycmF5c3RyZXRjaCA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBcXFxcYXJyYXlzdHJldGNoOiBcIiArIHN0cmV0Y2gpO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBTdGFydCBncm91cCBmb3IgZmlyc3QgY2VsbFxuXG5cbiAgcGFyc2VyLmd1bGxldC5iZWdpbkdyb3VwKCk7XG4gIHZhciByb3cgPSBbXTtcbiAgdmFyIGJvZHkgPSBbcm93XTtcbiAgdmFyIHJvd0dhcHMgPSBbXTtcbiAgdmFyIGhMaW5lc0JlZm9yZVJvdyA9IFtdOyAvLyBUZXN0IGZvciBcXGhsaW5lIGF0IHRoZSB0b3Agb2YgdGhlIGFycmF5LlxuXG4gIGhMaW5lc0JlZm9yZVJvdy5wdXNoKGdldEhMaW5lcyhwYXJzZXIpKTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgLy8gUGFyc2UgZWFjaCBjZWxsIGluIGl0cyBvd24gZ3JvdXAgKG5hbWVzcGFjZSlcbiAgICB2YXIgY2VsbCA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24oZmFsc2UsIFwiXFxcXGNyXCIpO1xuICAgIHBhcnNlci5ndWxsZXQuZW5kR3JvdXAoKTtcbiAgICBwYXJzZXIuZ3VsbGV0LmJlZ2luR3JvdXAoKTtcbiAgICBjZWxsID0ge1xuICAgICAgdHlwZTogXCJvcmRncm91cFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBjZWxsXG4gICAgfTtcblxuICAgIGlmIChzdHlsZSkge1xuICAgICAgY2VsbCA9IHtcbiAgICAgICAgdHlwZTogXCJzdHlsaW5nXCIsXG4gICAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIGJvZHk6IFtjZWxsXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByb3cucHVzaChjZWxsKTtcbiAgICB2YXIgbmV4dCA9IHBhcnNlci5mZXRjaCgpLnRleHQ7XG5cbiAgICBpZiAobmV4dCA9PT0gXCImXCIpIHtcbiAgICAgIHBhcnNlci5jb25zdW1lKCk7XG4gICAgfSBlbHNlIGlmIChuZXh0ID09PSBcIlxcXFxlbmRcIikge1xuICAgICAgLy8gQXJyYXlzIHRlcm1pbmF0ZSBuZXdsaW5lcyB3aXRoIGBcXGNyY3JgIHdoaWNoIGNvbnN1bWVzIGEgYFxcY3JgIGlmXG4gICAgICAvLyB0aGUgbGFzdCBsaW5lIGlzIGVtcHR5LlxuICAgICAgLy8gTk9URTogQ3VycmVudGx5LCBgY2VsbGAgaXMgdGhlIGxhc3QgaXRlbSBhZGRlZCBpbnRvIGByb3dgLlxuICAgICAgaWYgKHJvdy5sZW5ndGggPT09IDEgJiYgY2VsbC50eXBlID09PSBcInN0eWxpbmdcIiAmJiBjZWxsLmJvZHlbMF0uYm9keS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgYm9keS5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhMaW5lc0JlZm9yZVJvdy5sZW5ndGggPCBib2R5Lmxlbmd0aCArIDEpIHtcbiAgICAgICAgaExpbmVzQmVmb3JlUm93LnB1c2goW10pO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKG5leHQgPT09IFwiXFxcXGNyXCIpIHtcbiAgICAgIHZhciBjciA9IGFzc2VydE5vZGVUeXBlKHBhcnNlci5wYXJzZUZ1bmN0aW9uKCksIFwiY3JcIik7XG4gICAgICByb3dHYXBzLnB1c2goY3Iuc2l6ZSk7IC8vIGNoZWNrIGZvciBcXGhsaW5lKHMpIGZvbGxvd2luZyB0aGUgcm93IHNlcGFyYXRvclxuXG4gICAgICBoTGluZXNCZWZvcmVSb3cucHVzaChnZXRITGluZXMocGFyc2VyKSk7XG4gICAgICByb3cgPSBbXTtcbiAgICAgIGJvZHkucHVzaChyb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJFeHBlY3RlZCAmIG9yIFxcXFxcXFxcIG9yIFxcXFxjciBvciBcXFxcZW5kXCIsIHBhcnNlci5uZXh0VG9rZW4pO1xuICAgIH1cbiAgfSAvLyBFbmQgY2VsbCBncm91cFxuXG5cbiAgcGFyc2VyLmd1bGxldC5lbmRHcm91cCgpOyAvLyBFbmQgYXJyYXkgZ3JvdXAgZGVmaW5pbmcgXFxcXFxuXG4gIHBhcnNlci5ndWxsZXQuZW5kR3JvdXAoKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgYWRkSm90OiBhZGRKb3QsXG4gICAgYXJyYXlzdHJldGNoOiBhcnJheXN0cmV0Y2gsXG4gICAgYm9keTogYm9keSxcbiAgICBjb2xzOiBjb2xzLFxuICAgIHJvd0dhcHM6IHJvd0dhcHMsXG4gICAgaHNraXBCZWZvcmVBbmRBZnRlcjogaHNraXBCZWZvcmVBbmRBZnRlcixcbiAgICBoTGluZXNCZWZvcmVSb3c6IGhMaW5lc0JlZm9yZVJvdyxcbiAgICBjb2xTZXBhcmF0aW9uVHlwZTogY29sU2VwYXJhdGlvblR5cGVcbiAgfTtcbn0gLy8gRGVjaWRlcyBvbiBhIHN0eWxlIGZvciBjZWxscyBpbiBhbiBhcnJheSBhY2NvcmRpbmcgdG8gd2hldGhlciB0aGUgZ2l2ZW5cbi8vIGVudmlyb25tZW50IG5hbWUgc3RhcnRzIHdpdGggdGhlIGxldHRlciAnZCcuXG5cblxuZnVuY3Rpb24gZENlbGxTdHlsZShlbnZOYW1lKSB7XG4gIGlmIChlbnZOYW1lLnN1YnN0cigwLCAxKSA9PT0gXCJkXCIpIHtcbiAgICByZXR1cm4gXCJkaXNwbGF5XCI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwidGV4dFwiO1xuICB9XG59XG5cbnZhciBhcnJheV9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciByO1xuICB2YXIgYztcbiAgdmFyIG5yID0gZ3JvdXAuYm9keS5sZW5ndGg7XG4gIHZhciBoTGluZXNCZWZvcmVSb3cgPSBncm91cC5oTGluZXNCZWZvcmVSb3c7XG4gIHZhciBuYyA9IDA7XG4gIHZhciBib2R5ID0gbmV3IEFycmF5KG5yKTtcbiAgdmFyIGhsaW5lcyA9IFtdO1xuICB2YXIgcnVsZVRoaWNrbmVzcyA9IE1hdGgubWF4KCAvLyBGcm9tIExhVGVYIFxcc2hvd3RoZVxcYXJyYXlydWxld2lkdGguIEVxdWFscyAwLjA0IGVtLlxuICBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXJyYXlSdWxlV2lkdGgsIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyAvLyBVc2VyIG92ZXJyaWRlLlxuICApOyAvLyBIb3Jpem9udGFsIHNwYWNpbmdcblxuICB2YXIgcHQgPSAxIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG4gIHZhciBhcnJheWNvbHNlcCA9IDUgKiBwdDsgLy8gZGVmYXVsdCB2YWx1ZSwgaS5lLiBcXGFycmF5Y29sc2VwIGluIGFydGljbGUuY2xzXG5cbiAgaWYgKGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlICYmIGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlID09PSBcInNtYWxsXCIpIHtcbiAgICAvLyBXZSdyZSBpbiBhIHtzbWFsbG1hdHJpeH0uIERlZmF1bHQgY29sdW1uIHNwYWNlIGlzIFxcdGhpY2tzcGFjZSxcbiAgICAvLyBpLmUuIDUvMThlbSA9IDAuMjc3OGVtLCBwZXIgYW1zbWF0aC5kdHggZm9yIHtzbWFsbG1hdHJpeH0uXG4gICAgLy8gQnV0IHRoYXQgbmVlZHMgYWRqdXN0bWVudCBiZWNhdXNlIExhVGVYIGFwcGxpZXMgXFxzY3JpcHRzdHlsZSB0byB0aGVcbiAgICAvLyBlbnRpcmUgYXJyYXksIGluY2x1ZGluZyB0aGUgY29sc3BhY2UsIGJ1dCB0aGlzIGZ1bmN0aW9uIGFwcGxpZXNcbiAgICAvLyBcXHNjcmlwdHN0eWxlIG9ubHkgaW5zaWRlIGVhY2ggZWxlbWVudC5cbiAgICB2YXIgbG9jYWxNdWx0aXBsaWVyID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzcmNfU3R5bGUuU0NSSVBUKS5zaXplTXVsdGlwbGllcjtcbiAgICBhcnJheWNvbHNlcCA9IDAuMjc3OCAqIChsb2NhbE11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyKTtcbiAgfSAvLyBWZXJ0aWNhbCBzcGFjaW5nXG5cblxuICB2YXIgYmFzZWxpbmVza2lwID0gMTIgKiBwdDsgLy8gc2VlIHNpemUxMC5jbG9cbiAgLy8gRGVmYXVsdCBcXGpvdCBmcm9tIGx0bWF0aC5kdHhcbiAgLy8gVE9ETyhlZGVtYWluZSk6IGFsbG93IG92ZXJyaWRpbmcgXFxqb3QgdmlhIFxcc2V0bGVuZ3RoICgjNjg3KVxuXG4gIHZhciBqb3QgPSAzICogcHQ7XG4gIHZhciBhcnJheXNraXAgPSBncm91cC5hcnJheXN0cmV0Y2ggKiBiYXNlbGluZXNraXA7XG4gIHZhciBhcnN0cnV0SGVpZ2h0ID0gMC43ICogYXJyYXlza2lwOyAvLyBcXHN0cnV0Ym94IGluIGx0ZnNzdHJjLmR0eCBhbmRcblxuICB2YXIgYXJzdHJ1dERlcHRoID0gMC4zICogYXJyYXlza2lwOyAvLyBcXEBhcnN0cnV0Ym94IGluIGx0dGFiLmR0eFxuXG4gIHZhciB0b3RhbEhlaWdodCA9IDA7IC8vIFNldCBhIHBvc2l0aW9uIGZvciBcXGhsaW5lKHMpIGF0IHRoZSB0b3Agb2YgdGhlIGFycmF5LCBpZiBhbnkuXG5cbiAgZnVuY3Rpb24gc2V0SExpbmVQb3MoaGxpbmVzSW5HYXApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhsaW5lc0luR2FwLmxlbmd0aDsgKytpKSB7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgdG90YWxIZWlnaHQgKz0gMC4yNTtcbiAgICAgIH1cblxuICAgICAgaGxpbmVzLnB1c2goe1xuICAgICAgICBwb3M6IHRvdGFsSGVpZ2h0LFxuICAgICAgICBpc0Rhc2hlZDogaGxpbmVzSW5HYXBbaV1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldEhMaW5lUG9zKGhMaW5lc0JlZm9yZVJvd1swXSk7XG5cbiAgZm9yIChyID0gMDsgciA8IGdyb3VwLmJvZHkubGVuZ3RoOyArK3IpIHtcbiAgICB2YXIgaW5yb3cgPSBncm91cC5ib2R5W3JdO1xuICAgIHZhciBoZWlnaHQgPSBhcnN0cnV0SGVpZ2h0OyAvLyBcXEBhcnJheSBhZGRzIGFuIFxcQGFyc3RydXRcblxuICAgIHZhciBkZXB0aCA9IGFyc3RydXREZXB0aDsgLy8gdG8gZWFjaCB0b3cgKHZpYSB0aGUgdGVtcGxhdGUpXG5cbiAgICBpZiAobmMgPCBpbnJvdy5sZW5ndGgpIHtcbiAgICAgIG5jID0gaW5yb3cubGVuZ3RoO1xuICAgIH1cblxuICAgIHZhciBvdXRyb3cgPSBuZXcgQXJyYXkoaW5yb3cubGVuZ3RoKTtcblxuICAgIGZvciAoYyA9IDA7IGMgPCBpbnJvdy5sZW5ndGg7ICsrYykge1xuICAgICAgdmFyIGVsdCA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGlucm93W2NdLCBvcHRpb25zKTtcblxuICAgICAgaWYgKGRlcHRoIDwgZWx0LmRlcHRoKSB7XG4gICAgICAgIGRlcHRoID0gZWx0LmRlcHRoO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGVpZ2h0IDwgZWx0LmhlaWdodCkge1xuICAgICAgICBoZWlnaHQgPSBlbHQuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBvdXRyb3dbY10gPSBlbHQ7XG4gICAgfVxuXG4gICAgdmFyIHJvd0dhcCA9IGdyb3VwLnJvd0dhcHNbcl07XG4gICAgdmFyIGdhcCA9IDA7XG5cbiAgICBpZiAocm93R2FwKSB7XG4gICAgICBnYXAgPSB1bml0c19jYWxjdWxhdGVTaXplKHJvd0dhcCwgb3B0aW9ucyk7XG5cbiAgICAgIGlmIChnYXAgPiAwKSB7XG4gICAgICAgIC8vIFxcQGFyZ2FycmF5Y3JcbiAgICAgICAgZ2FwICs9IGFyc3RydXREZXB0aDtcblxuICAgICAgICBpZiAoZGVwdGggPCBnYXApIHtcbiAgICAgICAgICBkZXB0aCA9IGdhcDsgLy8gXFxAeGFyZ2FycmF5Y3JcbiAgICAgICAgfVxuXG4gICAgICAgIGdhcCA9IDA7XG4gICAgICB9XG4gICAgfSAvLyBJbiBBTVMgbXVsdGlsaW5lIGVudmlyb25tZW50cyBzdWNoIGFzIGFsaWduZWQgYW5kIGdhdGhlcmVkLCByb3dzXG4gICAgLy8gY29ycmVzcG9uZCB0byBsaW5lcyB0aGF0IGhhdmUgYWRkaXRpb25hbCBcXGpvdCBhZGRlZCB0byB0aGVcbiAgICAvLyBcXGJhc2VsaW5lc2tpcCB2aWEgXFxvcGVudXAuXG5cblxuICAgIGlmIChncm91cC5hZGRKb3QpIHtcbiAgICAgIGRlcHRoICs9IGpvdDtcbiAgICB9XG5cbiAgICBvdXRyb3cuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIG91dHJvdy5kZXB0aCA9IGRlcHRoO1xuICAgIHRvdGFsSGVpZ2h0ICs9IGhlaWdodDtcbiAgICBvdXRyb3cucG9zID0gdG90YWxIZWlnaHQ7XG4gICAgdG90YWxIZWlnaHQgKz0gZGVwdGggKyBnYXA7IC8vIFxcQHlhcmdhcnJheWNyXG5cbiAgICBib2R5W3JdID0gb3V0cm93OyAvLyBTZXQgYSBwb3NpdGlvbiBmb3IgXFxobGluZShzKSwgaWYgYW55LlxuXG4gICAgc2V0SExpbmVQb3MoaExpbmVzQmVmb3JlUm93W3IgKyAxXSk7XG4gIH1cblxuICB2YXIgb2Zmc2V0ID0gdG90YWxIZWlnaHQgLyAyICsgb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQ7XG4gIHZhciBjb2xEZXNjcmlwdGlvbnMgPSBncm91cC5jb2xzIHx8IFtdO1xuICB2YXIgY29scyA9IFtdO1xuICB2YXIgY29sU2VwO1xuICB2YXIgY29sRGVzY3JOdW07XG5cbiAgZm9yIChjID0gMCwgY29sRGVzY3JOdW0gPSAwOyAvLyBDb250aW51ZSB3aGlsZSBlaXRoZXIgdGhlcmUgYXJlIG1vcmUgY29sdW1ucyBvciBtb3JlIGNvbHVtblxuICAvLyBkZXNjcmlwdGlvbnMsIHNvIHRyYWlsaW5nIHNlcGFyYXRvcnMgZG9uJ3QgZ2V0IGxvc3QuXG4gIGMgPCBuYyB8fCBjb2xEZXNjck51bSA8IGNvbERlc2NyaXB0aW9ucy5sZW5ndGg7ICsrYywgKytjb2xEZXNjck51bSkge1xuICAgIHZhciBjb2xEZXNjciA9IGNvbERlc2NyaXB0aW9uc1tjb2xEZXNjck51bV0gfHwge307XG4gICAgdmFyIGZpcnN0U2VwYXJhdG9yID0gdHJ1ZTtcblxuICAgIHdoaWxlIChjb2xEZXNjci50eXBlID09PSBcInNlcGFyYXRvclwiKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHNlcGFyYXRvciBpbiBhIHJvdywgYWRkIGEgc3BhY2VcbiAgICAgIC8vIGJldHdlZW4gdGhlbS5cbiAgICAgIGlmICghZmlyc3RTZXBhcmF0b3IpIHtcbiAgICAgICAgY29sU2VwID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiYXJyYXljb2xzZXBcIl0sIFtdKTtcbiAgICAgICAgY29sU2VwLnN0eWxlLndpZHRoID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRvdWJsZVJ1bGVTZXAgKyBcImVtXCI7XG4gICAgICAgIGNvbHMucHVzaChjb2xTZXApO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29sRGVzY3Iuc2VwYXJhdG9yID09PSBcInxcIiB8fCBjb2xEZXNjci5zZXBhcmF0b3IgPT09IFwiOlwiKSB7XG4gICAgICAgIHZhciBsaW5lVHlwZSA9IGNvbERlc2NyLnNlcGFyYXRvciA9PT0gXCJ8XCIgPyBcInNvbGlkXCIgOiBcImRhc2hlZFwiO1xuICAgICAgICB2YXIgc2VwYXJhdG9yID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1widmVydGljYWwtc2VwYXJhdG9yXCJdLCBbXSwgb3B0aW9ucyk7XG4gICAgICAgIHNlcGFyYXRvci5zdHlsZS5oZWlnaHQgPSB0b3RhbEhlaWdodCArIFwiZW1cIjtcbiAgICAgICAgc2VwYXJhdG9yLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGggPSBydWxlVGhpY2tuZXNzICsgXCJlbVwiO1xuICAgICAgICBzZXBhcmF0b3Iuc3R5bGUuYm9yZGVyUmlnaHRTdHlsZSA9IGxpbmVUeXBlO1xuICAgICAgICBzZXBhcmF0b3Iuc3R5bGUubWFyZ2luID0gXCIwIC1cIiArIHJ1bGVUaGlja25lc3MgLyAyICsgXCJlbVwiO1xuICAgICAgICBzZXBhcmF0b3Iuc3R5bGUudmVydGljYWxBbGlnbiA9IC0odG90YWxIZWlnaHQgLSBvZmZzZXQpICsgXCJlbVwiO1xuICAgICAgICBjb2xzLnB1c2goc2VwYXJhdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgc2VwYXJhdG9yIHR5cGU6IFwiICsgY29sRGVzY3Iuc2VwYXJhdG9yKTtcbiAgICAgIH1cblxuICAgICAgY29sRGVzY3JOdW0rKztcbiAgICAgIGNvbERlc2NyID0gY29sRGVzY3JpcHRpb25zW2NvbERlc2NyTnVtXSB8fCB7fTtcbiAgICAgIGZpcnN0U2VwYXJhdG9yID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGMgPj0gbmMpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBzZXB3aWR0aCA9IHZvaWQgMDtcblxuICAgIGlmIChjID4gMCB8fCBncm91cC5oc2tpcEJlZm9yZUFuZEFmdGVyKSB7XG4gICAgICBzZXB3aWR0aCA9IHV0aWxzLmRlZmx0KGNvbERlc2NyLnByZWdhcCwgYXJyYXljb2xzZXApO1xuXG4gICAgICBpZiAoc2Vwd2lkdGggIT09IDApIHtcbiAgICAgICAgY29sU2VwID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiYXJyYXljb2xzZXBcIl0sIFtdKTtcbiAgICAgICAgY29sU2VwLnN0eWxlLndpZHRoID0gc2Vwd2lkdGggKyBcImVtXCI7XG4gICAgICAgIGNvbHMucHVzaChjb2xTZXApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb2wgPSBbXTtcblxuICAgIGZvciAociA9IDA7IHIgPCBucjsgKytyKSB7XG4gICAgICB2YXIgcm93ID0gYm9keVtyXTtcbiAgICAgIHZhciBlbGVtID0gcm93W2NdO1xuXG4gICAgICBpZiAoIWVsZW0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBzaGlmdCA9IHJvdy5wb3MgLSBvZmZzZXQ7XG4gICAgICBlbGVtLmRlcHRoID0gcm93LmRlcHRoO1xuICAgICAgZWxlbS5oZWlnaHQgPSByb3cuaGVpZ2h0O1xuICAgICAgY29sLnB1c2goe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogZWxlbSxcbiAgICAgICAgc2hpZnQ6IHNoaWZ0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb2wgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgY2hpbGRyZW46IGNvbFxuICAgIH0sIG9wdGlvbnMpO1xuICAgIGNvbCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImNvbC1hbGlnbi1cIiArIChjb2xEZXNjci5hbGlnbiB8fCBcImNcIildLCBbY29sXSk7XG4gICAgY29scy5wdXNoKGNvbCk7XG5cbiAgICBpZiAoYyA8IG5jIC0gMSB8fCBncm91cC5oc2tpcEJlZm9yZUFuZEFmdGVyKSB7XG4gICAgICBzZXB3aWR0aCA9IHV0aWxzLmRlZmx0KGNvbERlc2NyLnBvc3RnYXAsIGFycmF5Y29sc2VwKTtcblxuICAgICAgaWYgKHNlcHdpZHRoICE9PSAwKSB7XG4gICAgICAgIGNvbFNlcCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImFycmF5Y29sc2VwXCJdLCBbXSk7XG4gICAgICAgIGNvbFNlcC5zdHlsZS53aWR0aCA9IHNlcHdpZHRoICsgXCJlbVwiO1xuICAgICAgICBjb2xzLnB1c2goY29sU2VwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBib2R5ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXRhYmxlXCJdLCBjb2xzKTsgLy8gQWRkIFxcaGxpbmUocyksIGlmIGFueS5cblxuICBpZiAoaGxpbmVzLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgbGluZSA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcImhsaW5lXCIsIG9wdGlvbnMsIHJ1bGVUaGlja25lc3MpO1xuICAgIHZhciBkYXNoZXMgPSBidWlsZENvbW1vbi5tYWtlTGluZVNwYW4oXCJoZGFzaGxpbmVcIiwgb3B0aW9ucywgcnVsZVRoaWNrbmVzcyk7XG4gICAgdmFyIHZMaXN0RWxlbXMgPSBbe1xuICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICBlbGVtOiBib2R5LFxuICAgICAgc2hpZnQ6IDBcbiAgICB9XTtcblxuICAgIHdoaWxlIChobGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGhsaW5lID0gaGxpbmVzLnBvcCgpO1xuICAgICAgdmFyIGxpbmVTaGlmdCA9IGhsaW5lLnBvcyAtIG9mZnNldDtcblxuICAgICAgaWYgKGhsaW5lLmlzRGFzaGVkKSB7XG4gICAgICAgIHZMaXN0RWxlbXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogZGFzaGVzLFxuICAgICAgICAgIHNoaWZ0OiBsaW5lU2hpZnRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2TGlzdEVsZW1zLnB1c2goe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IGxpbmUsXG4gICAgICAgICAgc2hpZnQ6IGxpbmVTaGlmdFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBib2R5ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiB2TGlzdEVsZW1zXG4gICAgfSwgb3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXSwgW2JvZHldLCBvcHRpb25zKTtcbn07XG5cbnZhciBhbGlnbk1hcCA9IHtcbiAgYzogXCJjZW50ZXIgXCIsXG4gIGw6IFwibGVmdCBcIixcbiAgcjogXCJyaWdodCBcIlxufTtcblxudmFyIGFycmF5X21hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciB0YWJsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRhYmxlXCIsIGdyb3VwLmJvZHkubWFwKGZ1bmN0aW9uIChyb3cpIHtcbiAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdHJcIiwgcm93Lm1hcChmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRkXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGNlbGwsIG9wdGlvbnMpXSk7XG4gICAgfSkpO1xuICB9KSk7IC8vIFNldCBjb2x1bW4gYWxpZ25tZW50LCByb3cgc3BhY2luZywgY29sdW1uIHNwYWNpbmcsIGFuZFxuICAvLyBhcnJheSBsaW5lcyBieSBzZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhlIHRhYmxlIGVsZW1lbnQuXG4gIC8vIFNldCB0aGUgcm93IHNwYWNpbmcuIEluIE1hdGhNTCwgd2Ugc3BlY2lmeSBhIGdhcCBkaXN0YW5jZS5cbiAgLy8gV2UgZG8gbm90IHVzZSByb3dHYXBbXSBiZWNhdXNlIE1hdGhNTCBhdXRvbWF0aWNhbGx5IGluY3JlYXNlc1xuICAvLyBjZWxsIGhlaWdodCB3aXRoIHRoZSBoZWlnaHQvZGVwdGggb2YgdGhlIGVsZW1lbnQgY29udGVudC5cbiAgLy8gTGFUZVggXFxhcnJheXN0cmV0Y2ggbXVsdGlwbGllcyB0aGUgcm93IGJhc2VsaW5lLXRvLWJhc2VsaW5lIGRpc3RhbmNlLlxuICAvLyBXZSBzaW11bGF0ZSB0aGlzIGJ5IGFkZGluZyAoYXJyYXlzdHJldGNoIC0gMSllbSB0byB0aGUgZ2FwLiBUaGlzXG4gIC8vIGRvZXMgYSByZWFzb25hYmxlIGpvYiBvZiBhZGp1c3RpbmcgYXJyYXlzIGNvbnRhaW5pbmcgMSBlbSB0YWxsIGNvbnRlbnQuXG4gIC8vIFRoZSAwLjE2IGFuZCAwLjA5IHZhbHVlcyBhcmUgZm91bmQgZW1wcmljYWxseS4gVGhleSBwcm9kdWNlIGFuIGFycmF5XG4gIC8vIHNpbWlsYXIgdG8gTGFUZVggYW5kIGluIHdoaWNoIGNvbnRlbnQgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggXFxoaW5lcy5cblxuICB2YXIgZ2FwID0gZ3JvdXAuYXJyYXlzdHJldGNoID09PSAwLjUgPyAwLjEgLy8ge3NtYWxsbWF0cml4fSwge3N1YmFycmF5fVxuICA6IDAuMTYgKyBncm91cC5hcnJheXN0cmV0Y2ggLSAxICsgKGdyb3VwLmFkZEpvdCA/IDAuMDkgOiAwKTtcbiAgdGFibGUuc2V0QXR0cmlidXRlKFwicm93c3BhY2luZ1wiLCBnYXAgKyBcImVtXCIpOyAvLyBNYXRoTUwgdGFibGUgbGluZXMgZ28gb25seSBiZXR3ZWVuIGNlbGxzLlxuICAvLyBUbyBwbGFjZSBhIGxpbmUgb24gYW4gZWRnZSB3ZSdsbCB1c2UgPG1lbmNsb3NlPiwgaWYgbmVjZXNzYXJ5LlxuXG4gIHZhciBtZW5jbG9zZSA9IFwiXCI7XG4gIHZhciBhbGlnbiA9IFwiXCI7XG5cbiAgaWYgKGdyb3VwLmNvbHMpIHtcbiAgICAvLyBGaW5kIGNvbHVtbiBhbGlnbm1lbnQsIGNvbHVtbiBzcGFjaW5nLCBhbmQgIHZlcnRpY2FsIGxpbmVzLlxuICAgIHZhciBjb2xzID0gZ3JvdXAuY29scztcbiAgICB2YXIgY29sdW1uTGluZXMgPSBcIlwiO1xuICAgIHZhciBwcmV2VHlwZVdhc0FsaWduID0gZmFsc2U7XG4gICAgdmFyIGlTdGFydCA9IDA7XG4gICAgdmFyIGlFbmQgPSBjb2xzLmxlbmd0aDtcblxuICAgIGlmIChjb2xzWzBdLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgIG1lbmNsb3NlICs9IFwidG9wIFwiO1xuICAgICAgaVN0YXJ0ID0gMTtcbiAgICB9XG5cbiAgICBpZiAoY29sc1tjb2xzLmxlbmd0aCAtIDFdLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgIG1lbmNsb3NlICs9IFwiYm90dG9tIFwiO1xuICAgICAgaUVuZCAtPSAxO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSBpU3RhcnQ7IGkgPCBpRW5kOyBpKyspIHtcbiAgICAgIGlmIChjb2xzW2ldLnR5cGUgPT09IFwiYWxpZ25cIikge1xuICAgICAgICBhbGlnbiArPSBhbGlnbk1hcFtjb2xzW2ldLmFsaWduXTtcblxuICAgICAgICBpZiAocHJldlR5cGVXYXNBbGlnbikge1xuICAgICAgICAgIGNvbHVtbkxpbmVzICs9IFwibm9uZSBcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZUeXBlV2FzQWxpZ24gPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChjb2xzW2ldLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgICAgLy8gTWF0aE1MIGFjY2VwdHMgb25seSBzaW5nbGUgbGluZXMgYmV0d2VlbiBjZWxscy5cbiAgICAgICAgLy8gU28gd2UgcmVhZCBvbmx5IHRoZSBmaXJzdCBvZiBjb25zZWN1dGl2ZSBzZXBhcmF0b3JzLlxuICAgICAgICBpZiAocHJldlR5cGVXYXNBbGlnbikge1xuICAgICAgICAgIGNvbHVtbkxpbmVzICs9IGNvbHNbaV0uc2VwYXJhdG9yID09PSBcInxcIiA/IFwic29saWQgXCIgOiBcImRhc2hlZCBcIjtcbiAgICAgICAgICBwcmV2VHlwZVdhc0FsaWduID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJjb2x1bW5hbGlnblwiLCBhbGlnbi50cmltKCkpO1xuXG4gICAgaWYgKC9bc2RdLy50ZXN0KGNvbHVtbkxpbmVzKSkge1xuICAgICAgdGFibGUuc2V0QXR0cmlidXRlKFwiY29sdW1ubGluZXNcIiwgY29sdW1uTGluZXMudHJpbSgpKTtcbiAgICB9XG4gIH0gLy8gU2V0IGNvbHVtbiBzcGFjaW5nLlxuXG5cbiAgaWYgKGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlID09PSBcImFsaWduXCIpIHtcbiAgICB2YXIgX2NvbHMgPSBncm91cC5jb2xzIHx8IFtdO1xuXG4gICAgdmFyIHNwYWNpbmcgPSBcIlwiO1xuXG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IF9jb2xzLmxlbmd0aDsgX2krKykge1xuICAgICAgc3BhY2luZyArPSBfaSAlIDIgPyBcIjBlbSBcIiA6IFwiMWVtIFwiO1xuICAgIH1cblxuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbnNwYWNpbmdcIiwgc3BhY2luZy50cmltKCkpO1xuICB9IGVsc2UgaWYgKGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlID09PSBcImFsaWduYXRcIikge1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbnNwYWNpbmdcIiwgXCIwZW1cIik7XG4gIH0gZWxzZSBpZiAoZ3JvdXAuY29sU2VwYXJhdGlvblR5cGUgPT09IFwic21hbGxcIikge1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbnNwYWNpbmdcIiwgXCIwLjI3NzhlbVwiKTtcbiAgfSBlbHNlIHtcbiAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJjb2x1bW5zcGFjaW5nXCIsIFwiMWVtXCIpO1xuICB9IC8vIEFkZHJlc3MgXFxobGluZSBhbmQgXFxoZGFzaGxpbmVcblxuXG4gIHZhciByb3dMaW5lcyA9IFwiXCI7XG4gIHZhciBobGluZXMgPSBncm91cC5oTGluZXNCZWZvcmVSb3c7XG4gIG1lbmNsb3NlICs9IGhsaW5lc1swXS5sZW5ndGggPiAwID8gXCJsZWZ0IFwiIDogXCJcIjtcbiAgbWVuY2xvc2UgKz0gaGxpbmVzW2hsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggPiAwID8gXCJyaWdodCBcIiA6IFwiXCI7XG5cbiAgZm9yICh2YXIgX2kyID0gMTsgX2kyIDwgaGxpbmVzLmxlbmd0aCAtIDE7IF9pMisrKSB7XG4gICAgcm93TGluZXMgKz0gaGxpbmVzW19pMl0ubGVuZ3RoID09PSAwID8gXCJub25lIFwiIC8vIE1hdGhNTCBhY2NlcHRzIG9ubHkgYSBzaW5nbGUgbGluZSBiZXR3ZWVuIHJvd3MuIFJlYWQgb25lIGVsZW1lbnQuXG4gICAgOiBobGluZXNbX2kyXVswXSA/IFwiZGFzaGVkIFwiIDogXCJzb2xpZCBcIjtcbiAgfVxuXG4gIGlmICgvW3NkXS8udGVzdChyb3dMaW5lcykpIHtcbiAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJyb3dsaW5lc1wiLCByb3dMaW5lcy50cmltKCkpO1xuICB9XG5cbiAgaWYgKG1lbmNsb3NlICE9PSBcIlwiKSB7XG4gICAgdGFibGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1lbmNsb3NlXCIsIFt0YWJsZV0pO1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcIm5vdGF0aW9uXCIsIG1lbmNsb3NlLnRyaW0oKSk7XG4gIH1cblxuICBpZiAoZ3JvdXAuYXJyYXlzdHJldGNoICYmIGdyb3VwLmFycmF5c3RyZXRjaCA8IDEpIHtcbiAgICAvLyBBIHNtYWxsIGFycmF5LiBXcmFwIGluIHNjcmlwdHN0eWxlIHNvIHJvdyBnYXAgaXMgbm90IHRvbyBsYXJnZS5cbiAgICB0YWJsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXN0eWxlXCIsIFt0YWJsZV0pO1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcInNjcmlwdGxldmVsXCIsIFwiMVwiKTtcbiAgfVxuXG4gIHJldHVybiB0YWJsZTtcbn07IC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBhbGlnbmVkIGFuZCBhbGlnbmVkYXQgZW52aXJvbm1lbnRzLlxuXG5cbnZhciBhcnJheV9hbGlnbmVkSGFuZGxlciA9IGZ1bmN0aW9uIGFsaWduZWRIYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgdmFyIGNvbHMgPSBbXTtcbiAgdmFyIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHtcbiAgICBjb2xzOiBjb2xzLFxuICAgIGFkZEpvdDogdHJ1ZVxuICB9LCBcImRpc3BsYXlcIik7IC8vIERldGVybWluaW5nIG51bWJlciBvZiBjb2x1bW5zLlxuICAvLyAxLiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgZ2l2ZW4sIHdlIHVzZSBpdCBhcyBhIG51bWJlciBvZiBjb2x1bW5zLFxuICAvLyAgICBhbmQgbWFrZXMgc3VyZSB0aGF0IGVhY2ggcm93IGRvZXNuJ3QgZXhjZWVkIHRoYXQgbnVtYmVyLlxuICAvLyAyLiBPdGhlcndpc2UsIGp1c3QgY291bnQgbnVtYmVyIG9mIGNvbHVtbnMgPSBtYXhpbXVtIG51bWJlclxuICAvLyAgICBvZiBjZWxscyBpbiBlYWNoIHJvdyAoXCJhbGlnbmVkXCIgbW9kZSAtLSBpc0FsaWduZWQgd2lsbCBiZSB0cnVlKS5cbiAgLy9cbiAgLy8gQXQgdGhlIHNhbWUgdGltZSwgcHJlcGVuZCBlbXB0eSBncm91cCB7fSBhdCBiZWdpbm5pbmcgb2YgZXZlcnkgc2Vjb25kXG4gIC8vIGNlbGwgaW4gZWFjaCByb3cgKHN0YXJ0aW5nIHdpdGggc2Vjb25kIGNlbGwpIHNvIHRoYXQgb3BlcmF0b3JzIGJlY29tZVxuICAvLyBiaW5hcnkuICBUaGlzIGJlaGF2aW9yIGlzIGltcGxlbWVudGVkIGluIGFtc21hdGgncyBcXHN0YXJ0QGFsaWduZWQuXG5cbiAgdmFyIG51bU1hdGhzO1xuICB2YXIgbnVtQ29scyA9IDA7XG4gIHZhciBlbXB0eUdyb3VwID0ge1xuICAgIHR5cGU6IFwib3JkZ3JvdXBcIixcbiAgICBtb2RlOiBjb250ZXh0Lm1vZGUsXG4gICAgYm9keTogW11cbiAgfTtcbiAgdmFyIG9yZGdyb3VwID0gY2hlY2tOb2RlVHlwZShhcmdzWzBdLCBcIm9yZGdyb3VwXCIpO1xuXG4gIGlmIChvcmRncm91cCkge1xuICAgIHZhciBhcmcwID0gXCJcIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZ3JvdXAuYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRleHRvcmQgPSBhc3NlcnROb2RlVHlwZShvcmRncm91cC5ib2R5W2ldLCBcInRleHRvcmRcIik7XG4gICAgICBhcmcwICs9IHRleHRvcmQudGV4dDtcbiAgICB9XG5cbiAgICBudW1NYXRocyA9IE51bWJlcihhcmcwKTtcbiAgICBudW1Db2xzID0gbnVtTWF0aHMgKiAyO1xuICB9XG5cbiAgdmFyIGlzQWxpZ25lZCA9ICFudW1Db2xzO1xuICByZXMuYm9keS5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICBmb3IgKHZhciBfaTMgPSAxOyBfaTMgPCByb3cubGVuZ3RoOyBfaTMgKz0gMikge1xuICAgICAgLy8gTW9kaWZ5IG9yZGdyb3VwIG5vZGUgd2l0aGluIHN0eWxpbmcgbm9kZVxuICAgICAgdmFyIHN0eWxpbmcgPSBhc3NlcnROb2RlVHlwZShyb3dbX2kzXSwgXCJzdHlsaW5nXCIpO1xuXG4gICAgICB2YXIgX29yZGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoc3R5bGluZy5ib2R5WzBdLCBcIm9yZGdyb3VwXCIpO1xuXG4gICAgICBfb3JkZ3JvdXAuYm9keS51bnNoaWZ0KGVtcHR5R3JvdXApO1xuICAgIH1cblxuICAgIGlmICghaXNBbGlnbmVkKSB7XG4gICAgICAvLyBDYXNlIDFcbiAgICAgIHZhciBjdXJNYXRocyA9IHJvdy5sZW5ndGggLyAyO1xuXG4gICAgICBpZiAobnVtTWF0aHMgPCBjdXJNYXRocykge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJUb28gbWFueSBtYXRoIGluIGEgcm93OiBcIiArIChcImV4cGVjdGVkIFwiICsgbnVtTWF0aHMgKyBcIiwgYnV0IGdvdCBcIiArIGN1ck1hdGhzKSwgcm93WzBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG51bUNvbHMgPCByb3cubGVuZ3RoKSB7XG4gICAgICAvLyBDYXNlIDJcbiAgICAgIG51bUNvbHMgPSByb3cubGVuZ3RoO1xuICAgIH1cbiAgfSk7IC8vIEFkanVzdGluZyBhbGlnbm1lbnQuXG4gIC8vIEluIGFsaWduZWQgbW9kZSwgd2UgYWRkIG9uZSBcXHFxdWFkIGJldHdlZW4gY29sdW1ucztcbiAgLy8gb3RoZXJ3aXNlIHdlIGFkZCBub3RoaW5nLlxuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG51bUNvbHM7ICsrX2k0KSB7XG4gICAgdmFyIGFsaWduID0gXCJyXCI7XG4gICAgdmFyIHByZWdhcCA9IDA7XG5cbiAgICBpZiAoX2k0ICUgMiA9PT0gMSkge1xuICAgICAgYWxpZ24gPSBcImxcIjtcbiAgICB9IGVsc2UgaWYgKF9pNCA+IDAgJiYgaXNBbGlnbmVkKSB7XG4gICAgICAvLyBcImFsaWduZWRcIiBtb2RlLlxuICAgICAgcHJlZ2FwID0gMTsgLy8gYWRkIG9uZSBcXHF1YWRcbiAgICB9XG5cbiAgICBjb2xzW19pNF0gPSB7XG4gICAgICB0eXBlOiBcImFsaWduXCIsXG4gICAgICBhbGlnbjogYWxpZ24sXG4gICAgICBwcmVnYXA6IHByZWdhcCxcbiAgICAgIHBvc3RnYXA6IDBcbiAgICB9O1xuICB9XG5cbiAgcmVzLmNvbFNlcGFyYXRpb25UeXBlID0gaXNBbGlnbmVkID8gXCJhbGlnblwiIDogXCJhbGlnbmF0XCI7XG4gIHJldHVybiByZXM7XG59OyAvLyBBcnJheXMgYXJlIHBhcnQgb2YgTGFUZVgsIGRlZmluZWQgaW4gbHR0YWIuZHR4IHNvIGl0cyBkb2N1bWVudGF0aW9uXG4vLyBpcyBwYXJ0IG9mIHRoZSBzb3VyY2UyZS5wZGYgZmlsZSBvZiBMYVRlWDJlIHNvdXJjZSBkb2N1bWVudGF0aW9uLlxuLy8ge2RhcnJheX0gaXMgYW4ge2FycmF5fSBlbnZpcm9ubWVudCB3aGVyZSBjZWxscyBhcmUgc2V0IGluIFxcZGlzcGxheXN0eWxlLFxuLy8gYXMgZGVmaW5lZCBpbiBuY2NtYXRoLnN0eS5cblxuXG5kZWZpbmVFbnZpcm9ubWVudCh7XG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgbmFtZXM6IFtcImFycmF5XCIsIFwiZGFycmF5XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgLy8gU2luY2Ugbm8gdHlwZXMgYXJlIHNwZWNpZmllZCBhYm92ZSwgdGhlIHR3byBwb3NzaWJpbGl0aWVzIGFyZVxuICAgIC8vIC0gVGhlIGFyZ3VtZW50IGlzIHdyYXBwZWQgaW4ge30gb3IgW10sIGluIHdoaWNoIGNhc2UgUGFyc2VyJ3NcbiAgICAvLyAgIHBhcnNlR3JvdXAoKSByZXR1cm5zIGFuIFwib3JkZ3JvdXBcIiB3cmFwcGluZyBzb21lIHN5bWJvbCBub2RlLlxuICAgIC8vIC0gVGhlIGFyZ3VtZW50IGlzIGEgYmFyZSBzeW1ib2wgbm9kZS5cbiAgICB2YXIgc3ltTm9kZSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUoYXJnc1swXSk7XG4gICAgdmFyIGNvbGFsaWduID0gc3ltTm9kZSA/IFthcmdzWzBdXSA6IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwib3JkZ3JvdXBcIikuYm9keTtcbiAgICB2YXIgY29scyA9IGNvbGFsaWduLm1hcChmdW5jdGlvbiAobmRlKSB7XG4gICAgICB2YXIgbm9kZSA9IGFzc2VydFN5bWJvbE5vZGVUeXBlKG5kZSk7XG4gICAgICB2YXIgY2EgPSBub2RlLnRleHQ7XG5cbiAgICAgIGlmIChcImxjclwiLmluZGV4T2YoY2EpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiYWxpZ25cIixcbiAgICAgICAgICBhbGlnbjogY2FcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoY2EgPT09IFwifFwiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJzZXBhcmF0b3JcIixcbiAgICAgICAgICBzZXBhcmF0b3I6IFwifFwiXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGNhID09PSBcIjpcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgICAgc2VwYXJhdG9yOiBcIjpcIlxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmtub3duIGNvbHVtbiBhbGlnbm1lbnQ6IFwiICsgY2EsIG5kZSk7XG4gICAgfSk7XG4gICAgdmFyIHJlcyA9IHtcbiAgICAgIGNvbHM6IGNvbHMsXG4gICAgICBoc2tpcEJlZm9yZUFuZEFmdGVyOiB0cnVlIC8vIFxcQHByZWFtYmxlIGluIGx0dGFiLmR0eFxuXG4gICAgfTtcbiAgICByZXR1cm4gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBkQ2VsbFN0eWxlKGNvbnRleHQuZW52TmFtZSkpO1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBUaGUgbWF0cml4IGVudmlyb25tZW50cyBvZiBhbXNtYXRoIGJ1aWxkcyBvbiB0aGUgYXJyYXkgZW52aXJvbm1lbnRcbi8vIG9mIExhVGVYLCB3aGljaCBpcyBkaXNjdXNzZWQgYWJvdmUuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wibWF0cml4XCIsIFwicG1hdHJpeFwiLCBcImJtYXRyaXhcIiwgXCJCbWF0cml4XCIsIFwidm1hdHJpeFwiLCBcIlZtYXRyaXhcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQpIHtcbiAgICB2YXIgZGVsaW1pdGVycyA9IHtcbiAgICAgIFwibWF0cml4XCI6IG51bGwsXG4gICAgICBcInBtYXRyaXhcIjogW1wiKFwiLCBcIilcIl0sXG4gICAgICBcImJtYXRyaXhcIjogW1wiW1wiLCBcIl1cIl0sXG4gICAgICBcIkJtYXRyaXhcIjogW1wiXFxcXHtcIiwgXCJcXFxcfVwiXSxcbiAgICAgIFwidm1hdHJpeFwiOiBbXCJ8XCIsIFwifFwiXSxcbiAgICAgIFwiVm1hdHJpeFwiOiBbXCJcXFxcVmVydFwiLCBcIlxcXFxWZXJ0XCJdXG4gICAgfVtjb250ZXh0LmVudk5hbWVdOyAvLyBcXGhza2lwIC1cXGFycmF5Y29sc2VwIGluIGFtc21hdGhcblxuICAgIHZhciBwYXlsb2FkID0ge1xuICAgICAgaHNraXBCZWZvcmVBbmRBZnRlcjogZmFsc2VcbiAgICB9O1xuICAgIHZhciByZXMgPSBwYXJzZUFycmF5KGNvbnRleHQucGFyc2VyLCBwYXlsb2FkLCBkQ2VsbFN0eWxlKGNvbnRleHQuZW52TmFtZSkpO1xuICAgIHJldHVybiBkZWxpbWl0ZXJzID8ge1xuICAgICAgdHlwZTogXCJsZWZ0cmlnaHRcIixcbiAgICAgIG1vZGU6IGNvbnRleHQubW9kZSxcbiAgICAgIGJvZHk6IFtyZXNdLFxuICAgICAgbGVmdDogZGVsaW1pdGVyc1swXSxcbiAgICAgIHJpZ2h0OiBkZWxpbWl0ZXJzWzFdLFxuICAgICAgcmlnaHRDb2xvcjogdW5kZWZpbmVkIC8vIFxccmlnaHQgdW5pbmZsdWVuY2VkIGJ5IFxcY29sb3IgaW4gYXJyYXlcblxuICAgIH0gOiByZXM7XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7XG5kZWZpbmVFbnZpcm9ubWVudCh7XG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgbmFtZXM6IFtcInNtYWxsbWF0cml4XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0KSB7XG4gICAgdmFyIHBheWxvYWQgPSB7XG4gICAgICBhcnJheXN0cmV0Y2g6IDAuNVxuICAgIH07XG4gICAgdmFyIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHBheWxvYWQsIFwic2NyaXB0XCIpO1xuICAgIHJlcy5jb2xTZXBhcmF0aW9uVHlwZSA9IFwic21hbGxcIjtcbiAgICByZXR1cm4gcmVzO1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pO1xuZGVmaW5lRW52aXJvbm1lbnQoe1xuICB0eXBlOiBcImFycmF5XCIsXG4gIG5hbWVzOiBbXCJzdWJhcnJheVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIC8vIFBhcnNpbmcgb2Yge3N1YmFycmF5fSBpcyBzaW1pbGFyIHRvIHthcnJheX1cbiAgICB2YXIgc3ltTm9kZSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUoYXJnc1swXSk7XG4gICAgdmFyIGNvbGFsaWduID0gc3ltTm9kZSA/IFthcmdzWzBdXSA6IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwib3JkZ3JvdXBcIikuYm9keTtcbiAgICB2YXIgY29scyA9IGNvbGFsaWduLm1hcChmdW5jdGlvbiAobmRlKSB7XG4gICAgICB2YXIgbm9kZSA9IGFzc2VydFN5bWJvbE5vZGVUeXBlKG5kZSk7XG4gICAgICB2YXIgY2EgPSBub2RlLnRleHQ7IC8vIHtzdWJhcnJheX0gb25seSByZWNvZ25pemVzIFwibFwiICYgXCJjXCJcblxuICAgICAgaWYgKFwibGNcIi5pbmRleE9mKGNhKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcImFsaWduXCIsXG4gICAgICAgICAgYWxpZ246IGNhXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVua25vd24gY29sdW1uIGFsaWdubWVudDogXCIgKyBjYSwgbmRlKTtcbiAgICB9KTtcblxuICAgIGlmIChjb2xzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIntzdWJhcnJheX0gY2FuIGNvbnRhaW4gb25seSBvbmUgY29sdW1uXCIpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB7XG4gICAgICBjb2xzOiBjb2xzLFxuICAgICAgaHNraXBCZWZvcmVBbmRBZnRlcjogZmFsc2UsXG4gICAgICBhcnJheXN0cmV0Y2g6IDAuNVxuICAgIH07XG4gICAgcmVzID0gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBcInNjcmlwdFwiKTtcblxuICAgIGlmIChyZXMuYm9keVswXS5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJ7c3ViYXJyYXl9IGNhbiBjb250YWluIG9ubHkgb25lIGNvbHVtblwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBBIGNhc2VzIGVudmlyb25tZW50IChpbiBhbXNtYXRoLnN0eSkgaXMgYWxtb3N0IGVxdWl2YWxlbnQgdG9cbi8vIFxcZGVmXFxhcnJheXN0cmV0Y2h7MS4yfSVcbi8vIFxcbGVmdFxce1xcYmVnaW57YXJyYXl9e0B7fWxAe1xccXVhZH1sQHt9fSDigKYgXFxlbmR7YXJyYXl9XFxyaWdodC5cbi8vIHtkY2FzZXN9IGlzIGEge2Nhc2VzfSBlbnZpcm9ubWVudCB3aGVyZSBjZWxscyBhcmUgc2V0IGluIFxcZGlzcGxheXN0eWxlLFxuLy8gYXMgZGVmaW5lZCBpbiBtYXRodG9vbHMuc3R5LlxuXG5kZWZpbmVFbnZpcm9ubWVudCh7XG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgbmFtZXM6IFtcImNhc2VzXCIsIFwiZGNhc2VzXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0KSB7XG4gICAgdmFyIHBheWxvYWQgPSB7XG4gICAgICBhcnJheXN0cmV0Y2g6IDEuMixcbiAgICAgIGNvbHM6IFt7XG4gICAgICAgIHR5cGU6IFwiYWxpZ25cIixcbiAgICAgICAgYWxpZ246IFwibFwiLFxuICAgICAgICBwcmVnYXA6IDAsXG4gICAgICAgIC8vIFRPRE8oa2V2aW5iKSBnZXQgdGhlIGN1cnJlbnQgc3R5bGUuXG4gICAgICAgIC8vIEZvciBub3cgd2UgdXNlIHRoZSBtZXRyaWNzIGZvciBURVhUIHN0eWxlIHdoaWNoIGlzIHdoYXQgd2Ugd2VyZVxuICAgICAgICAvLyBkb2luZyBiZWZvcmUuICBCZWZvcmUgYXR0ZW1wdGluZyB0byBnZXQgdGhlIGN1cnJlbnQgc3R5bGUgd2VcbiAgICAgICAgLy8gc2hvdWxkIGxvb2sgYXQgVGVYJ3MgYmVoYXZpb3IgZXNwZWNpYWxseSBmb3IgXFxvdmVyIGFuZCBtYXRyaWNlcy5cbiAgICAgICAgcG9zdGdhcDogMS4wXG4gICAgICAgIC8qIDFlbSBxdWFkICovXG5cbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICBhbGlnbjogXCJsXCIsXG4gICAgICAgIHByZWdhcDogMCxcbiAgICAgICAgcG9zdGdhcDogMFxuICAgICAgfV1cbiAgICB9O1xuICAgIHZhciByZXMgPSBwYXJzZUFycmF5KGNvbnRleHQucGFyc2VyLCBwYXlsb2FkLCBkQ2VsbFN0eWxlKGNvbnRleHQuZW52TmFtZSkpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImxlZnRyaWdodFwiLFxuICAgICAgbW9kZTogY29udGV4dC5tb2RlLFxuICAgICAgYm9keTogW3Jlc10sXG4gICAgICBsZWZ0OiBcIlxcXFx7XCIsXG4gICAgICByaWdodDogXCIuXCIsXG4gICAgICByaWdodENvbG9yOiB1bmRlZmluZWRcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBBbiBhbGlnbmVkIGVudmlyb25tZW50IGlzIGxpa2UgdGhlIGFsaWduKiBlbnZpcm9ubWVudFxuLy8gZXhjZXB0IGl0IG9wZXJhdGVzIHdpdGhpbiBtYXRoIG1vZGUuXG4vLyBOb3RlIHRoYXQgd2UgYXNzdW1lIFxcbm9tYWxsaW5lc2tpcGxpbWl0IHRvIGJlIHplcm8sXG4vLyBzbyB0aGF0IFxcc3RydXRAIGlzIHRoZSBzYW1lIGFzIFxcc3RydXQuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiYWxpZ25lZFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwXG4gIH0sXG4gIGhhbmRsZXI6IGFycmF5X2FsaWduZWRIYW5kbGVyLFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBBIGdhdGhlcmVkIGVudmlyb25tZW50IGlzIGxpa2UgYW4gYXJyYXkgZW52aXJvbm1lbnQgd2l0aCBvbmUgY2VudGVyZWRcbi8vIGNvbHVtbiwgYnV0IHdoZXJlIHJvd3MgYXJlIGNvbnNpZGVyZWQgbGluZXMgc28gZ2V0IFxcam90IGxpbmUgc3BhY2luZ1xuLy8gYW5kIGNvbnRlbnRzIGFyZSBzZXQgaW4gXFxkaXNwbGF5c3R5bGUuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiZ2F0aGVyZWRcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQpIHtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgY29sczogW3tcbiAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICBhbGlnbjogXCJjXCJcbiAgICAgIH1dLFxuICAgICAgYWRkSm90OiB0cnVlXG4gICAgfTtcbiAgICByZXR1cm4gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBcImRpc3BsYXlcIik7XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7IC8vIGFsaWduYXQgZW52aXJvbm1lbnQgaXMgbGlrZSBhbiBhbGlnbiBlbnZpcm9ubWVudCwgYnV0IG9uZSBtdXN0IGV4cGxpY2l0bHlcbi8vIHNwZWNpZnkgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyBpbiBlYWNoIHJvdywgYW5kIGNhbiBhZGp1c3Qgc3BhY2luZyBiZXR3ZWVuXG4vLyBlYWNoIGNvbHVtbnMuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiYWxpZ25lZGF0XCJdLFxuICAvLyBPbmUgZm9yIG51bWJlcmVkIGFuZCBmb3IgdW5udW1iZXJlZDtcbiAgLy8gYnV0LCBLYVRlWCBkb2Vzbid0IHN1cHBvcnRzIG1hdGggbnVtYmVyaW5nIHlldCxcbiAgLy8gdGhleSBtYWtlIG5vIGRpZmZlcmVuY2UgZm9yIG5vdy5cbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGFycmF5X2FsaWduZWRIYW5kbGVyLFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBDYXRjaCBcXGhsaW5lIG91dHNpZGUgYXJyYXkgZW52aXJvbm1lbnRcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInRleHRcIixcbiAgLy8gRG9lc24ndCBtYXR0ZXIgd2hhdCB0aGlzIGlzLlxuICBuYW1lczogW1wiXFxcXGhsaW5lXCIsIFwiXFxcXGhkYXNobGluZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgYWxsb3dlZEluTWF0aDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoY29udGV4dC5mdW5jTmFtZSArIFwiIHZhbGlkIG9ubHkgd2l0aGluIGFycmF5IGVudmlyb25tZW50XCIpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Vudmlyb25tZW50cy5qc1xuXG52YXIgZW52aXJvbm1lbnRzID0gX2Vudmlyb25tZW50cztcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19lbnZpcm9ubWVudHMgPSAoZW52aXJvbm1lbnRzKTsgLy8gQWxsIGVudmlyb25tZW50IGRlZmluaXRpb25zIHNob3VsZCBiZSBpbXBvcnRlZCBiZWxvd1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9lbnZpcm9ubWVudC5qc1xuXG5cblxuIC8vIEVudmlyb25tZW50IGRlbGltaXRlcnMuIEhUTUwvTWF0aE1MIHJlbmRlcmluZyBpcyBkZWZpbmVkIGluIHRoZSBjb3JyZXNwb25kaW5nXG4vLyBkZWZpbmVFbnZpcm9ubWVudCBkZWZpbml0aW9ucy5cbi8vICRGbG93Rml4TWUsIFwiZW52aXJvbm1lbnRcIiBoYW5kbGVyIHJldHVybnMgYW4gZW52aXJvbm1lbnQgUGFyc2VOb2RlXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJlbnZpcm9ubWVudFwiLFxuICBuYW1lczogW1wiXFxcXGJlZ2luXCIsIFwiXFxcXGVuZFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIGFyZ1R5cGVzOiBbXCJ0ZXh0XCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBuYW1lR3JvdXAgPSBhcmdzWzBdO1xuXG4gICAgaWYgKG5hbWVHcm91cC50eXBlICE9PSBcIm9yZGdyb3VwXCIpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgZW52aXJvbm1lbnQgbmFtZVwiLCBuYW1lR3JvdXApO1xuICAgIH1cblxuICAgIHZhciBlbnZOYW1lID0gXCJcIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZUdyb3VwLmJvZHkubGVuZ3RoOyArK2kpIHtcbiAgICAgIGVudk5hbWUgKz0gYXNzZXJ0Tm9kZVR5cGUobmFtZUdyb3VwLmJvZHlbaV0sIFwidGV4dG9yZFwiKS50ZXh0O1xuICAgIH1cblxuICAgIGlmIChmdW5jTmFtZSA9PT0gXCJcXFxcYmVnaW5cIikge1xuICAgICAgLy8gYmVnaW4uLi5lbmQgaXMgc2ltaWxhciB0byBsZWZ0Li4ucmlnaHRcbiAgICAgIGlmICghc3JjX2Vudmlyb25tZW50cy5oYXNPd25Qcm9wZXJ0eShlbnZOYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJObyBzdWNoIGVudmlyb25tZW50OiBcIiArIGVudk5hbWUsIG5hbWVHcm91cCk7XG4gICAgICB9IC8vIEJ1aWxkIHRoZSBlbnZpcm9ubWVudCBvYmplY3QuIEFyZ3VtZW50cyBhbmQgb3RoZXIgaW5mb3JtYXRpb24gd2lsbFxuICAgICAgLy8gYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGJlZ2luIGFuZCBlbmQgbWV0aG9kcyB1c2luZyBwcm9wZXJ0aWVzLlxuXG5cbiAgICAgIHZhciBlbnYgPSBzcmNfZW52aXJvbm1lbnRzW2Vudk5hbWVdO1xuXG4gICAgICB2YXIgX3BhcnNlciRwYXJzZUFyZ3VtZW50ID0gcGFyc2VyLnBhcnNlQXJndW1lbnRzKFwiXFxcXGJlZ2lue1wiICsgZW52TmFtZSArIFwifVwiLCBlbnYpLFxuICAgICAgICAgIF9hcmdzID0gX3BhcnNlciRwYXJzZUFyZ3VtZW50LmFyZ3MsXG4gICAgICAgICAgb3B0QXJncyA9IF9wYXJzZXIkcGFyc2VBcmd1bWVudC5vcHRBcmdzO1xuXG4gICAgICB2YXIgY29udGV4dCA9IHtcbiAgICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICAgIGVudk5hbWU6IGVudk5hbWUsXG4gICAgICAgIHBhcnNlcjogcGFyc2VyXG4gICAgICB9O1xuICAgICAgdmFyIHJlc3VsdCA9IGVudi5oYW5kbGVyKGNvbnRleHQsIF9hcmdzLCBvcHRBcmdzKTtcbiAgICAgIHBhcnNlci5leHBlY3QoXCJcXFxcZW5kXCIsIGZhbHNlKTtcbiAgICAgIHZhciBlbmROYW1lVG9rZW4gPSBwYXJzZXIubmV4dFRva2VuO1xuICAgICAgdmFyIGVuZCA9IGFzc2VydE5vZGVUeXBlKHBhcnNlci5wYXJzZUZ1bmN0aW9uKCksIFwiZW52aXJvbm1lbnRcIik7XG5cbiAgICAgIGlmIChlbmQubmFtZSAhPT0gZW52TmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJNaXNtYXRjaDogXFxcXGJlZ2lue1wiICsgZW52TmFtZSArIFwifSBtYXRjaGVkIGJ5IFxcXFxlbmR7XCIgKyBlbmQubmFtZSArIFwifVwiLCBlbmROYW1lVG9rZW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVudmlyb25tZW50XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG5hbWU6IGVudk5hbWUsXG4gICAgICBuYW1lR3JvdXA6IG5hbWVHcm91cFxuICAgIH07XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL21jbGFzcy5qc1xuXG5cblxuXG5cblxudmFyIG1jbGFzc19tYWtlU3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuO1xuXG5mdW5jdGlvbiBtY2xhc3NfaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnRzID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlKTtcbiAgcmV0dXJuIG1jbGFzc19tYWtlU3BhbihbZ3JvdXAubWNsYXNzXSwgZWxlbWVudHMsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBtY2xhc3NfbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgbm9kZTtcbiAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMpO1xuXG4gIGlmIChncm91cC5tY2xhc3MgPT09IFwibWlubmVyXCIpIHtcbiAgICByZXR1cm4gbWF0aE1MVHJlZS5uZXdEb2N1bWVudEZyYWdtZW50KGlubmVyKTtcbiAgfSBlbHNlIGlmIChncm91cC5tY2xhc3MgPT09IFwibW9yZFwiKSB7XG4gICAgaWYgKGdyb3VwLmlzQ2hhcmFjdGVyQm94KSB7XG4gICAgICBub2RlID0gaW5uZXJbMF07XG4gICAgICBub2RlLnR5cGUgPSBcIm1pXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1pXCIsIGlubmVyKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGdyb3VwLmlzQ2hhcmFjdGVyQm94KSB7XG4gICAgICBub2RlID0gaW5uZXJbMF07XG4gICAgICBub2RlLnR5cGUgPSBcIm1vXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIGlubmVyKTtcbiAgICB9IC8vIFNldCBzcGFjaW5nIGJhc2VkIG9uIHdoYXQgaXMgdGhlIG1vc3QgbGlrZWx5IGFkamFjZW50IGF0b20gdHlwZS5cbiAgICAvLyBTZWUgVGVYYm9vayBwMTcwLlxuXG5cbiAgICBpZiAoZ3JvdXAubWNsYXNzID09PSBcIm1iaW5cIikge1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzLmxzcGFjZSA9IFwiMC4yMmVtXCI7IC8vIG1lZGl1bSBzcGFjZVxuXG4gICAgICBub2RlLmF0dHJpYnV0ZXMucnNwYWNlID0gXCIwLjIyZW1cIjtcbiAgICB9IGVsc2UgaWYgKGdyb3VwLm1jbGFzcyA9PT0gXCJtcHVuY3RcIikge1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzLmxzcGFjZSA9IFwiMGVtXCI7XG4gICAgICBub2RlLmF0dHJpYnV0ZXMucnNwYWNlID0gXCIwLjE3ZW1cIjsgLy8gdGhpbnNwYWNlXG4gICAgfSBlbHNlIGlmIChncm91cC5tY2xhc3MgPT09IFwibW9wZW5cIiB8fCBncm91cC5tY2xhc3MgPT09IFwibWNsb3NlXCIpIHtcbiAgICAgIG5vZGUuYXR0cmlidXRlcy5sc3BhY2UgPSBcIjBlbVwiO1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzLnJzcGFjZSA9IFwiMGVtXCI7XG4gICAgfSAvLyBNYXRoTUwgPG1vPiBkZWZhdWx0IHNwYWNlIGlzIDUvMTggZW0sIHNvIDxtcmVsPiBuZWVkcyBubyBhY3Rpb24uXG4gICAgLy8gUmVmOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9NYXRoTUwvRWxlbWVudC9tb1xuXG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0gLy8gTWF0aCBjbGFzcyBjb21tYW5kcyBleGNlcHQgXFxtYXRob3BcblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwibWNsYXNzXCIsXG4gIG5hbWVzOiBbXCJcXFxcbWF0aG9yZFwiLCBcIlxcXFxtYXRoYmluXCIsIFwiXFxcXG1hdGhyZWxcIiwgXCJcXFxcbWF0aG9wZW5cIiwgXCJcXFxcbWF0aGNsb3NlXCIsIFwiXFxcXG1hdGhwdW5jdFwiLCBcIlxcXFxtYXRoaW5uZXJcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibWNsYXNzXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG1jbGFzczogXCJtXCIgKyBmdW5jTmFtZS5zdWJzdHIoNSksXG4gICAgICAvLyBUT0RPKGtldmluYik6IGRvbid0IHByZWZpeCB3aXRoICdtJ1xuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSksXG4gICAgICBpc0NoYXJhY3RlckJveDogdXRpbHMuaXNDaGFyYWN0ZXJCb3goYm9keSlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogbWNsYXNzX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBtY2xhc3NfbWF0aG1sQnVpbGRlclxufSk7XG52YXIgYmlucmVsQ2xhc3MgPSBmdW5jdGlvbiBiaW5yZWxDbGFzcyhhcmcpIHtcbiAgLy8gXFxiaW5yZWxAIHNwYWNpbmcgdmFyaWVzIHdpdGggKGJpbnxyZWx8b3JkKSBvZiB0aGUgYXRvbSBpbiB0aGUgYXJndW1lbnQuXG4gIC8vIChieSByZW5kZXJpbmcgc2VwYXJhdGVseSBhbmQgd2l0aCB7fXMgYmVmb3JlIGFuZCBhZnRlciwgYW5kIG1lYXN1cmluZ1xuICAvLyB0aGUgY2hhbmdlIGluIHNwYWNpbmcpLiAgV2UnbGwgZG8gcm91Z2hseSB0aGUgc2FtZSBieSBkZXRlY3RpbmcgdGhlXG4gIC8vIGF0b20gdHlwZSBkaXJlY3RseS5cbiAgdmFyIGF0b20gPSBhcmcudHlwZSA9PT0gXCJvcmRncm91cFwiICYmIGFyZy5ib2R5Lmxlbmd0aCA/IGFyZy5ib2R5WzBdIDogYXJnO1xuXG4gIGlmIChhdG9tLnR5cGUgPT09IFwiYXRvbVwiICYmIChhdG9tLmZhbWlseSA9PT0gXCJiaW5cIiB8fCBhdG9tLmZhbWlseSA9PT0gXCJyZWxcIikpIHtcbiAgICByZXR1cm4gXCJtXCIgKyBhdG9tLmZhbWlseTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJtb3JkXCI7XG4gIH1cbn07IC8vIFxcQGJpbnJlbHt4fXt5fSByZW5kZXJzIGxpa2UgeSBidXQgYXMgbWJpbi9tcmVsL21vcmQgaWYgeCBpcyBtYmluL21yZWwvbW9yZC5cbi8vIFRoaXMgaXMgZXF1aXZhbGVudCB0byBcXGJpbnJlbEB7eH1cXGJpbnJlbEBAe3l9IGluIEFNU1RlWC5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1jbGFzc1wiLFxuICBuYW1lczogW1wiXFxcXEBiaW5yZWxcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMlxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJtY2xhc3NcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbWNsYXNzOiBiaW5yZWxDbGFzcyhhcmdzWzBdKSxcbiAgICAgIGJvZHk6IFthcmdzWzFdXSxcbiAgICAgIGlzQ2hhcmFjdGVyQm94OiB1dGlscy5pc0NoYXJhY3RlckJveChhcmdzWzFdKVxuICAgIH07XG4gIH1cbn0pOyAvLyBCdWlsZCBhIHJlbGF0aW9uIG9yIHN0YWNrZWQgb3AgYnkgcGxhY2luZyBvbmUgc3ltYm9sIG9uIHRvcCBvZiBhbm90aGVyXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJtY2xhc3NcIixcbiAgbmFtZXM6IFtcIlxcXFxzdGFja3JlbFwiLCBcIlxcXFxvdmVyc2V0XCIsIFwiXFxcXHVuZGVyc2V0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDJcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMywgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMy5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjMuZnVuY05hbWU7XG4gICAgdmFyIGJhc2VBcmcgPSBhcmdzWzFdO1xuICAgIHZhciBzaGlmdGVkQXJnID0gYXJnc1swXTtcbiAgICB2YXIgbWNsYXNzO1xuXG4gICAgaWYgKGZ1bmNOYW1lICE9PSBcIlxcXFxzdGFja3JlbFwiKSB7XG4gICAgICAvLyBMYVRlWCBhcHBsaWVzIFxcYmlucmVsIHNwYWNpbmcgdG8gXFxvdmVyc2V0IGFuZCBcXHVuZGVyc2V0LlxuICAgICAgbWNsYXNzID0gYmlucmVsQ2xhc3MoYmFzZUFyZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1jbGFzcyA9IFwibXJlbFwiOyAvLyBmb3IgXFxzdGFja3JlbFxuICAgIH1cblxuICAgIHZhciBiYXNlT3AgPSB7XG4gICAgICB0eXBlOiBcIm9wXCIsXG4gICAgICBtb2RlOiBiYXNlQXJnLm1vZGUsXG4gICAgICBsaW1pdHM6IHRydWUsXG4gICAgICBhbHdheXNIYW5kbGVTdXBTdWI6IHRydWUsXG4gICAgICBwYXJlbnRJc1N1cFN1YjogZmFsc2UsXG4gICAgICBzeW1ib2w6IGZhbHNlLFxuICAgICAgc3VwcHJlc3NCYXNlU2hpZnQ6IGZ1bmNOYW1lICE9PSBcIlxcXFxzdGFja3JlbFwiLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYmFzZUFyZylcbiAgICB9O1xuICAgIHZhciBzdXBzdWIgPSB7XG4gICAgICB0eXBlOiBcInN1cHN1YlwiLFxuICAgICAgbW9kZTogc2hpZnRlZEFyZy5tb2RlLFxuICAgICAgYmFzZTogYmFzZU9wLFxuICAgICAgc3VwOiBmdW5jTmFtZSA9PT0gXCJcXFxcdW5kZXJzZXRcIiA/IG51bGwgOiBzaGlmdGVkQXJnLFxuICAgICAgc3ViOiBmdW5jTmFtZSA9PT0gXCJcXFxcdW5kZXJzZXRcIiA/IHNoaWZ0ZWRBcmcgOiBudWxsXG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJtY2xhc3NcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbWNsYXNzOiBtY2xhc3MsXG4gICAgICBib2R5OiBbc3Vwc3ViXSxcbiAgICAgIGlzQ2hhcmFjdGVyQm94OiB1dGlscy5pc0NoYXJhY3RlckJveChzdXBzdWIpXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IG1jbGFzc19odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogbWNsYXNzX21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2ZvbnQuanNcbi8vIFRPRE8oa2V2aW5iKTogaW1wbGVtZW50IFxcXFxzbCBhbmQgXFxcXHNjXG5cblxuXG5cblxuXG52YXIgZm9udF9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBmb250ID0gZ3JvdXAuZm9udDtcbiAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLndpdGhGb250KGZvbnQpO1xuICByZXR1cm4gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgbmV3T3B0aW9ucyk7XG59O1xuXG52YXIgZm9udF9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgZm9udCA9IGdyb3VwLmZvbnQ7XG4gIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy53aXRoRm9udChmb250KTtcbiAgcmV0dXJuIGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgbmV3T3B0aW9ucyk7XG59O1xuXG52YXIgZm9udEFsaWFzZXMgPSB7XG4gIFwiXFxcXEJiYlwiOiBcIlxcXFxtYXRoYmJcIixcbiAgXCJcXFxcYm9sZFwiOiBcIlxcXFxtYXRoYmZcIixcbiAgXCJcXFxcZnJha1wiOiBcIlxcXFxtYXRoZnJha1wiLFxuICBcIlxcXFxibVwiOiBcIlxcXFxib2xkc3ltYm9sXCJcbn07XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZm9udFwiLFxuICBuYW1lczogWy8vIHN0eWxlcywgZXhjZXB0IFxcYm9sZHN5bWJvbCBkZWZpbmVkIGJlbG93XG4gIFwiXFxcXG1hdGhybVwiLCBcIlxcXFxtYXRoaXRcIiwgXCJcXFxcbWF0aGJmXCIsIFwiXFxcXG1hdGhub3JtYWxcIiwgLy8gZmFtaWxpZXNcbiAgXCJcXFxcbWF0aGJiXCIsIFwiXFxcXG1hdGhjYWxcIiwgXCJcXFxcbWF0aGZyYWtcIiwgXCJcXFxcbWF0aHNjclwiLCBcIlxcXFxtYXRoc2ZcIiwgXCJcXFxcbWF0aHR0XCIsIC8vIGFsaWFzZXMsIGV4Y2VwdCBcXGJtIGRlZmluZWQgYmVsb3dcbiAgXCJcXFxcQmJiXCIsIFwiXFxcXGJvbGRcIiwgXCJcXFxcZnJha1wiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIGdyZWVkaW5lc3M6IDJcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHZhciBmdW5jID0gZnVuY05hbWU7XG5cbiAgICBpZiAoZnVuYyBpbiBmb250QWxpYXNlcykge1xuICAgICAgZnVuYyA9IGZvbnRBbGlhc2VzW2Z1bmNdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImZvbnRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZm9udDogZnVuYy5zbGljZSgxKSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZm9udF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogZm9udF9tYXRobWxCdWlsZGVyXG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJtY2xhc3NcIixcbiAgbmFtZXM6IFtcIlxcXFxib2xkc3ltYm9sXCIsIFwiXFxcXGJtXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgZ3JlZWRpbmVzczogMlxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgdmFyIGlzQ2hhcmFjdGVyQm94ID0gdXRpbHMuaXNDaGFyYWN0ZXJCb3goYm9keSk7IC8vIGFtc2JzeS5zdHkncyBcXGJvbGRzeW1ib2wgdXNlcyBcXGJpbnJlbCBzcGFjaW5nIHRvIGluaGVyaXQgdGhlXG4gICAgLy8gYXJndW1lbnQncyBiaW58cmVsfG9yZCBzdGF0dXNcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm1jbGFzc1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBtY2xhc3M6IGJpbnJlbENsYXNzKGJvZHkpLFxuICAgICAgYm9keTogW3tcbiAgICAgICAgdHlwZTogXCJmb250XCIsXG4gICAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgICBmb250OiBcImJvbGRzeW1ib2xcIixcbiAgICAgICAgYm9keTogYm9keVxuICAgICAgfV0sXG4gICAgICBpc0NoYXJhY3RlckJveDogaXNDaGFyYWN0ZXJCb3hcbiAgICB9O1xuICB9XG59KTsgLy8gT2xkIGZvbnQgY2hhbmdpbmcgZnVuY3Rpb25zXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJmb250XCIsXG4gIG5hbWVzOiBbXCJcXFxccm1cIiwgXCJcXFxcc2ZcIiwgXCJcXFxcdHRcIiwgXCJcXFxcYmZcIiwgXCJcXFxcaXRcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjMsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjMucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYzLmZ1bmNOYW1lLFxuICAgICAgICBicmVha09uVG9rZW5UZXh0ID0gX3JlZjMuYnJlYWtPblRva2VuVGV4dDtcbiAgICB2YXIgbW9kZSA9IHBhcnNlci5tb2RlO1xuICAgIHZhciBib2R5ID0gcGFyc2VyLnBhcnNlRXhwcmVzc2lvbih0cnVlLCBicmVha09uVG9rZW5UZXh0KTtcbiAgICB2YXIgc3R5bGUgPSBcIm1hdGhcIiArIGZ1bmNOYW1lLnNsaWNlKDEpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImZvbnRcIixcbiAgICAgIG1vZGU6IG1vZGUsXG4gICAgICBmb250OiBzdHlsZSxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgdHlwZTogXCJvcmRncm91cFwiLFxuICAgICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgICAgYm9keTogYm9keVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmb250X2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBmb250X21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2dlbmZyYWMuanNcblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgZ2VuZnJhY19hZGp1c3RTdHlsZSA9IGZ1bmN0aW9uIGFkanVzdFN0eWxlKHNpemUsIG9yaWdpbmFsU3R5bGUpIHtcbiAgLy8gRmlndXJlIG91dCB3aGF0IHN0eWxlIHRoaXMgZnJhY3Rpb24gc2hvdWxkIGJlIGluIGJhc2VkIG9uIHRoZVxuICAvLyBmdW5jdGlvbiB1c2VkXG4gIHZhciBzdHlsZSA9IG9yaWdpbmFsU3R5bGU7XG5cbiAgaWYgKHNpemUgPT09IFwiZGlzcGxheVwiKSB7XG4gICAgLy8gR2V0IGRpc3BsYXkgc3R5bGUgYXMgYSBkZWZhdWx0LlxuICAgIC8vIElmIGluY29taW5nIHN0eWxlIGlzIHN1Yi9zdXAsIHVzZSBzdHlsZS50ZXh0KCkgdG8gZ2V0IGNvcnJlY3Qgc2l6ZS5cbiAgICBzdHlsZSA9IHN0eWxlLmlkID49IHNyY19TdHlsZS5TQ1JJUFQuaWQgPyBzdHlsZS50ZXh0KCkgOiBzcmNfU3R5bGUuRElTUExBWTtcbiAgfSBlbHNlIGlmIChzaXplID09PSBcInRleHRcIiAmJiBzdHlsZS5zaXplID09PSBzcmNfU3R5bGUuRElTUExBWS5zaXplKSB7XG4gICAgLy8gV2UncmUgaW4gYSBcXHRmcmFjIGJ1dCBpbmNvbWluZyBzdHlsZSBpcyBkaXNwbGF5c3R5bGUsIHNvOlxuICAgIHN0eWxlID0gc3JjX1N0eWxlLlRFWFQ7XG4gIH0gZWxzZSBpZiAoc2l6ZSA9PT0gXCJzY3JpcHRcIikge1xuICAgIHN0eWxlID0gc3JjX1N0eWxlLlNDUklQVDtcbiAgfSBlbHNlIGlmIChzaXplID09PSBcInNjcmlwdHNjcmlwdFwiKSB7XG4gICAgc3R5bGUgPSBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufTtcblxudmFyIGdlbmZyYWNfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAvLyBGcmFjdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgb24gcGFnZXMgNDQ0LTQ0NSwgcnVsZXMgMTUoYS1lKS5cbiAgdmFyIHN0eWxlID0gZ2VuZnJhY19hZGp1c3RTdHlsZShncm91cC5zaXplLCBvcHRpb25zLnN0eWxlKTtcbiAgdmFyIG5zdHlsZSA9IHN0eWxlLmZyYWNOdW0oKTtcbiAgdmFyIGRzdHlsZSA9IHN0eWxlLmZyYWNEZW4oKTtcbiAgdmFyIG5ld09wdGlvbnM7XG4gIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG5zdHlsZSk7XG4gIHZhciBudW1lcm0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5udW1lciwgbmV3T3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgaWYgKGdyb3VwLmNvbnRpbnVlZCkge1xuICAgIC8vIFxcY2ZyYWMgaW5zZXJ0cyBhIFxcc3RydXQgaW50byB0aGUgbnVtZXJhdG9yLlxuICAgIC8vIEdldCBcXHN0cnV0IGRpbWVuc2lvbnMgZnJvbSBUZVhib29rIHBhZ2UgMzUzLlxuICAgIHZhciBoU3RydXQgPSA4LjUgLyBvcHRpb25zLmZvbnRNZXRyaWNzKCkucHRQZXJFbTtcbiAgICB2YXIgZFN0cnV0ID0gMy41IC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG4gICAgbnVtZXJtLmhlaWdodCA9IG51bWVybS5oZWlnaHQgPCBoU3RydXQgPyBoU3RydXQgOiBudW1lcm0uaGVpZ2h0O1xuICAgIG51bWVybS5kZXB0aCA9IG51bWVybS5kZXB0aCA8IGRTdHJ1dCA/IGRTdHJ1dCA6IG51bWVybS5kZXB0aDtcbiAgfVxuXG4gIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKGRzdHlsZSk7XG4gIHZhciBkZW5vbW0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5kZW5vbSwgbmV3T3B0aW9ucywgb3B0aW9ucyk7XG4gIHZhciBydWxlO1xuICB2YXIgcnVsZVdpZHRoO1xuICB2YXIgcnVsZVNwYWNpbmc7XG5cbiAgaWYgKGdyb3VwLmhhc0JhckxpbmUpIHtcbiAgICBpZiAoZ3JvdXAuYmFyU2l6ZSkge1xuICAgICAgcnVsZVdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5iYXJTaXplLCBvcHRpb25zKTtcbiAgICAgIHJ1bGUgPSBidWlsZENvbW1vbi5tYWtlTGluZVNwYW4oXCJmcmFjLWxpbmVcIiwgb3B0aW9ucywgcnVsZVdpZHRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcnVsZSA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcImZyYWMtbGluZVwiLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBydWxlV2lkdGggPSBydWxlLmhlaWdodDtcbiAgICBydWxlU3BhY2luZyA9IHJ1bGUuaGVpZ2h0O1xuICB9IGVsc2Uge1xuICAgIHJ1bGUgPSBudWxsO1xuICAgIHJ1bGVXaWR0aCA9IDA7XG4gICAgcnVsZVNwYWNpbmcgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVmYXVsdFJ1bGVUaGlja25lc3M7XG4gIH0gLy8gUnVsZSAxNWJcblxuXG4gIHZhciBudW1TaGlmdDtcbiAgdmFyIGNsZWFyYW5jZTtcbiAgdmFyIGRlbm9tU2hpZnQ7XG5cbiAgaWYgKHN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUgfHwgZ3JvdXAuc2l6ZSA9PT0gXCJkaXNwbGF5XCIpIHtcbiAgICBudW1TaGlmdCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5udW0xO1xuXG4gICAgaWYgKHJ1bGVXaWR0aCA+IDApIHtcbiAgICAgIGNsZWFyYW5jZSA9IDMgKiBydWxlU3BhY2luZztcbiAgICB9IGVsc2Uge1xuICAgICAgY2xlYXJhbmNlID0gNyAqIHJ1bGVTcGFjaW5nO1xuICAgIH1cblxuICAgIGRlbm9tU2hpZnQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVub20xO1xuICB9IGVsc2Uge1xuICAgIGlmIChydWxlV2lkdGggPiAwKSB7XG4gICAgICBudW1TaGlmdCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5udW0yO1xuICAgICAgY2xlYXJhbmNlID0gcnVsZVNwYWNpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG51bVNoaWZ0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLm51bTM7XG4gICAgICBjbGVhcmFuY2UgPSAzICogcnVsZVNwYWNpbmc7XG4gICAgfVxuXG4gICAgZGVub21TaGlmdCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZW5vbTI7XG4gIH1cblxuICB2YXIgZnJhYztcblxuICBpZiAoIXJ1bGUpIHtcbiAgICAvLyBSdWxlIDE1Y1xuICAgIHZhciBjYW5kaWRhdGVDbGVhcmFuY2UgPSBudW1TaGlmdCAtIG51bWVybS5kZXB0aCAtIChkZW5vbW0uaGVpZ2h0IC0gZGVub21TaGlmdCk7XG5cbiAgICBpZiAoY2FuZGlkYXRlQ2xlYXJhbmNlIDwgY2xlYXJhbmNlKSB7XG4gICAgICBudW1TaGlmdCArPSAwLjUgKiAoY2xlYXJhbmNlIC0gY2FuZGlkYXRlQ2xlYXJhbmNlKTtcbiAgICAgIGRlbm9tU2hpZnQgKz0gMC41ICogKGNsZWFyYW5jZSAtIGNhbmRpZGF0ZUNsZWFyYW5jZSk7XG4gICAgfVxuXG4gICAgZnJhYyA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGRlbm9tbSxcbiAgICAgICAgc2hpZnQ6IGRlbm9tU2hpZnRcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IG51bWVybSxcbiAgICAgICAgc2hpZnQ6IC1udW1TaGlmdFxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBSdWxlIDE1ZFxuICAgIHZhciBheGlzSGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQ7XG5cbiAgICBpZiAobnVtU2hpZnQgLSBudW1lcm0uZGVwdGggLSAoYXhpc0hlaWdodCArIDAuNSAqIHJ1bGVXaWR0aCkgPCBjbGVhcmFuY2UpIHtcbiAgICAgIG51bVNoaWZ0ICs9IGNsZWFyYW5jZSAtIChudW1TaGlmdCAtIG51bWVybS5kZXB0aCAtIChheGlzSGVpZ2h0ICsgMC41ICogcnVsZVdpZHRoKSk7XG4gICAgfVxuXG4gICAgaWYgKGF4aXNIZWlnaHQgLSAwLjUgKiBydWxlV2lkdGggLSAoZGVub21tLmhlaWdodCAtIGRlbm9tU2hpZnQpIDwgY2xlYXJhbmNlKSB7XG4gICAgICBkZW5vbVNoaWZ0ICs9IGNsZWFyYW5jZSAtIChheGlzSGVpZ2h0IC0gMC41ICogcnVsZVdpZHRoIC0gKGRlbm9tbS5oZWlnaHQgLSBkZW5vbVNoaWZ0KSk7XG4gICAgfVxuXG4gICAgdmFyIG1pZFNoaWZ0ID0gLShheGlzSGVpZ2h0IC0gMC41ICogcnVsZVdpZHRoKTtcbiAgICBmcmFjID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogZGVub21tLFxuICAgICAgICBzaGlmdDogZGVub21TaGlmdFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogcnVsZSxcbiAgICAgICAgc2hpZnQ6IG1pZFNoaWZ0XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBudW1lcm0sXG4gICAgICAgIHNoaWZ0OiAtbnVtU2hpZnRcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gLy8gU2luY2Ugd2UgbWFudWFsbHkgY2hhbmdlIHRoZSBzdHlsZSBzb21ldGltZXMgKHdpdGggXFxkZnJhYyBvciBcXHRmcmFjKSxcbiAgLy8gYWNjb3VudCBmb3IgdGhlIHBvc3NpYmxlIHNpemUgY2hhbmdlIGhlcmUuXG5cblxuICBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZSk7XG4gIGZyYWMuaGVpZ2h0ICo9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICBmcmFjLmRlcHRoICo9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyOyAvLyBSdWxlIDE1ZVxuXG4gIHZhciBkZWxpbVNpemU7XG5cbiAgaWYgKHN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUpIHtcbiAgICBkZWxpbVNpemUgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVsaW0xO1xuICB9IGVsc2Uge1xuICAgIGRlbGltU2l6ZSA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWxpbTI7XG4gIH1cblxuICB2YXIgbGVmdERlbGltO1xuICB2YXIgcmlnaHREZWxpbTtcblxuICBpZiAoZ3JvdXAubGVmdERlbGltID09IG51bGwpIHtcbiAgICBsZWZ0RGVsaW0gPSBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBbXCJtb3BlblwiXSk7XG4gIH0gZWxzZSB7XG4gICAgbGVmdERlbGltID0gZGVsaW1pdGVyLmN1c3RvbVNpemVkRGVsaW0oZ3JvdXAubGVmdERlbGltLCBkZWxpbVNpemUsIHRydWUsIG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUpLCBncm91cC5tb2RlLCBbXCJtb3BlblwiXSk7XG4gIH1cblxuICBpZiAoZ3JvdXAuY29udGludWVkKSB7XG4gICAgcmlnaHREZWxpbSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtdKTsgLy8gemVybyB3aWR0aCBmb3IgXFxjZnJhY1xuICB9IGVsc2UgaWYgKGdyb3VwLnJpZ2h0RGVsaW0gPT0gbnVsbCkge1xuICAgIHJpZ2h0RGVsaW0gPSBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBbXCJtY2xvc2VcIl0pO1xuICB9IGVsc2Uge1xuICAgIHJpZ2h0RGVsaW0gPSBkZWxpbWl0ZXIuY3VzdG9tU2l6ZWREZWxpbShncm91cC5yaWdodERlbGltLCBkZWxpbVNpemUsIHRydWUsIG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUpLCBncm91cC5tb2RlLCBbXCJtY2xvc2VcIl0pO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0uY29uY2F0KG5ld09wdGlvbnMuc2l6aW5nQ2xhc3NlcyhvcHRpb25zKSksIFtsZWZ0RGVsaW0sIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1mcmFjXCJdLCBbZnJhY10pLCByaWdodERlbGltXSwgb3B0aW9ucyk7XG59O1xuXG52YXIgZ2VuZnJhY19tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibWZyYWNcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAubnVtZXIsIG9wdGlvbnMpLCBidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmRlbm9tLCBvcHRpb25zKV0pO1xuXG4gIGlmICghZ3JvdXAuaGFzQmFyTGluZSkge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibGluZXRoaWNrbmVzc1wiLCBcIjBweFwiKTtcbiAgfSBlbHNlIGlmIChncm91cC5iYXJTaXplKSB7XG4gICAgdmFyIHJ1bGVXaWR0aCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuYmFyU2l6ZSwgb3B0aW9ucyk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsaW5ldGhpY2tuZXNzXCIsIHJ1bGVXaWR0aCArIFwiZW1cIik7XG4gIH1cblxuICB2YXIgc3R5bGUgPSBnZW5mcmFjX2FkanVzdFN0eWxlKGdyb3VwLnNpemUsIG9wdGlvbnMuc3R5bGUpO1xuXG4gIGlmIChzdHlsZS5zaXplICE9PSBvcHRpb25zLnN0eWxlLnNpemUpIHtcbiAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3R5bGVcIiwgW25vZGVdKTtcbiAgICB2YXIgaXNEaXNwbGF5ID0gc3R5bGUuc2l6ZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkuc2l6ZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZGlzcGxheXN0eWxlXCIsIGlzRGlzcGxheSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzY3JpcHRsZXZlbFwiLCBcIjBcIik7XG4gIH1cblxuICBpZiAoZ3JvdXAubGVmdERlbGltICE9IG51bGwgfHwgZ3JvdXAucmlnaHREZWxpbSAhPSBudWxsKSB7XG4gICAgdmFyIHdpdGhEZWxpbXMgPSBbXTtcblxuICAgIGlmIChncm91cC5sZWZ0RGVsaW0gIT0gbnVsbCkge1xuICAgICAgdmFyIGxlZnRPcCA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKGdyb3VwLmxlZnREZWxpbS5yZXBsYWNlKFwiXFxcXFwiLCBcIlwiKSldKTtcbiAgICAgIGxlZnRPcC5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcInRydWVcIik7XG4gICAgICB3aXRoRGVsaW1zLnB1c2gobGVmdE9wKTtcbiAgICB9XG5cbiAgICB3aXRoRGVsaW1zLnB1c2gobm9kZSk7XG5cbiAgICBpZiAoZ3JvdXAucmlnaHREZWxpbSAhPSBudWxsKSB7XG4gICAgICB2YXIgcmlnaHRPcCA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKGdyb3VwLnJpZ2h0RGVsaW0ucmVwbGFjZShcIlxcXFxcIiwgXCJcIikpXSk7XG4gICAgICByaWdodE9wLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICAgIHdpdGhEZWxpbXMucHVzaChyaWdodE9wKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRNYXRoTUxfbWFrZVJvdyh3aXRoRGVsaW1zKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImdlbmZyYWNcIixcbiAgbmFtZXM6IFtcIlxcXFxjZnJhY1wiLCBcIlxcXFxkZnJhY1wiLCBcIlxcXFxmcmFjXCIsIFwiXFxcXHRmcmFjXCIsIFwiXFxcXGRiaW5vbVwiLCBcIlxcXFxiaW5vbVwiLCBcIlxcXFx0Ymlub21cIiwgXCJcXFxcXFxcXGF0b3BmcmFjXCIsIC8vIGNhbuKAmXQgYmUgZW50ZXJlZCBkaXJlY3RseVxuICBcIlxcXFxcXFxcYnJhY2VmcmFjXCIsIFwiXFxcXFxcXFxicmFja2ZyYWNcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBncmVlZGluZXNzOiAyXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBudW1lciA9IGFyZ3NbMF07XG4gICAgdmFyIGRlbm9tID0gYXJnc1sxXTtcbiAgICB2YXIgaGFzQmFyTGluZTtcbiAgICB2YXIgbGVmdERlbGltID0gbnVsbDtcbiAgICB2YXIgcmlnaHREZWxpbSA9IG51bGw7XG4gICAgdmFyIHNpemUgPSBcImF1dG9cIjtcblxuICAgIHN3aXRjaCAoZnVuY05hbWUpIHtcbiAgICAgIGNhc2UgXCJcXFxcY2ZyYWNcIjpcbiAgICAgIGNhc2UgXCJcXFxcZGZyYWNcIjpcbiAgICAgIGNhc2UgXCJcXFxcZnJhY1wiOlxuICAgICAgY2FzZSBcIlxcXFx0ZnJhY1wiOlxuICAgICAgICBoYXNCYXJMaW5lID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJcXFxcXFxcXGF0b3BmcmFjXCI6XG4gICAgICAgIGhhc0JhckxpbmUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJcXFxcZGJpbm9tXCI6XG4gICAgICBjYXNlIFwiXFxcXGJpbm9tXCI6XG4gICAgICBjYXNlIFwiXFxcXHRiaW5vbVwiOlxuICAgICAgICBoYXNCYXJMaW5lID0gZmFsc2U7XG4gICAgICAgIGxlZnREZWxpbSA9IFwiKFwiO1xuICAgICAgICByaWdodERlbGltID0gXCIpXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXFxcXFxicmFjZWZyYWNcIjpcbiAgICAgICAgaGFzQmFyTGluZSA9IGZhbHNlO1xuICAgICAgICBsZWZ0RGVsaW0gPSBcIlxcXFx7XCI7XG4gICAgICAgIHJpZ2h0RGVsaW0gPSBcIlxcXFx9XCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXFxcXFxicmFja2ZyYWNcIjpcbiAgICAgICAgaGFzQmFyTGluZSA9IGZhbHNlO1xuICAgICAgICBsZWZ0RGVsaW0gPSBcIltcIjtcbiAgICAgICAgcmlnaHREZWxpbSA9IFwiXVwiO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIGdlbmZyYWMgY29tbWFuZFwiKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZ1bmNOYW1lKSB7XG4gICAgICBjYXNlIFwiXFxcXGNmcmFjXCI6XG4gICAgICBjYXNlIFwiXFxcXGRmcmFjXCI6XG4gICAgICBjYXNlIFwiXFxcXGRiaW5vbVwiOlxuICAgICAgICBzaXplID0gXCJkaXNwbGF5XCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXHRmcmFjXCI6XG4gICAgICBjYXNlIFwiXFxcXHRiaW5vbVwiOlxuICAgICAgICBzaXplID0gXCJ0ZXh0XCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImdlbmZyYWNcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgY29udGludWVkOiBmdW5jTmFtZSA9PT0gXCJcXFxcY2ZyYWNcIixcbiAgICAgIG51bWVyOiBudW1lcixcbiAgICAgIGRlbm9tOiBkZW5vbSxcbiAgICAgIGhhc0JhckxpbmU6IGhhc0JhckxpbmUsXG4gICAgICBsZWZ0RGVsaW06IGxlZnREZWxpbSxcbiAgICAgIHJpZ2h0RGVsaW06IHJpZ2h0RGVsaW0sXG4gICAgICBzaXplOiBzaXplLFxuICAgICAgYmFyU2l6ZTogbnVsbFxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBnZW5mcmFjX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBnZW5mcmFjX21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBJbmZpeCBnZW5lcmFsaXplZCBmcmFjdGlvbnMgLS0gdGhlc2UgYXJlIG5vdCByZW5kZXJlZCBkaXJlY3RseSwgYnV0IHJlcGxhY2VkXG4vLyBpbW1lZGlhdGVseSBieSBvbmUgb2YgdGhlIHZhcmlhbnRzIGFib3ZlLlxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiaW5maXhcIixcbiAgbmFtZXM6IFtcIlxcXFxvdmVyXCIsIFwiXFxcXGNob29zZVwiLCBcIlxcXFxhdG9wXCIsIFwiXFxcXGJyYWNlXCIsIFwiXFxcXGJyYWNrXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDAsXG4gICAgaW5maXg6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMikge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjIuZnVuY05hbWUsXG4gICAgICAgIHRva2VuID0gX3JlZjIudG9rZW47XG4gICAgdmFyIHJlcGxhY2VXaXRoO1xuXG4gICAgc3dpdGNoIChmdW5jTmFtZSkge1xuICAgICAgY2FzZSBcIlxcXFxvdmVyXCI6XG4gICAgICAgIHJlcGxhY2VXaXRoID0gXCJcXFxcZnJhY1wiO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxjaG9vc2VcIjpcbiAgICAgICAgcmVwbGFjZVdpdGggPSBcIlxcXFxiaW5vbVwiO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxhdG9wXCI6XG4gICAgICAgIHJlcGxhY2VXaXRoID0gXCJcXFxcXFxcXGF0b3BmcmFjXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXGJyYWNlXCI6XG4gICAgICAgIHJlcGxhY2VXaXRoID0gXCJcXFxcXFxcXGJyYWNlZnJhY1wiO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxicmFja1wiOlxuICAgICAgICByZXBsYWNlV2l0aCA9IFwiXFxcXFxcXFxicmFja2ZyYWNcIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCBpbmZpeCBnZW5mcmFjIGNvbW1hbmRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaW5maXhcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgcmVwbGFjZVdpdGg6IHJlcGxhY2VXaXRoLFxuICAgICAgdG9rZW46IHRva2VuXG4gICAgfTtcbiAgfVxufSk7XG52YXIgc3R5bEFycmF5ID0gW1wiZGlzcGxheVwiLCBcInRleHRcIiwgXCJzY3JpcHRcIiwgXCJzY3JpcHRzY3JpcHRcIl07XG5cbnZhciBkZWxpbUZyb21WYWx1ZSA9IGZ1bmN0aW9uIGRlbGltRnJvbVZhbHVlKGRlbGltU3RyaW5nKSB7XG4gIHZhciBkZWxpbSA9IG51bGw7XG5cbiAgaWYgKGRlbGltU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICBkZWxpbSA9IGRlbGltU3RyaW5nO1xuICAgIGRlbGltID0gZGVsaW0gPT09IFwiLlwiID8gbnVsbCA6IGRlbGltO1xuICB9XG5cbiAgcmV0dXJuIGRlbGltO1xufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImdlbmZyYWNcIixcbiAgbmFtZXM6IFtcIlxcXFxnZW5mcmFjXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDYsXG4gICAgZ3JlZWRpbmVzczogNixcbiAgICBhcmdUeXBlczogW1wibWF0aFwiLCBcIm1hdGhcIiwgXCJzaXplXCIsIFwidGV4dFwiLCBcIm1hdGhcIiwgXCJtYXRoXCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjMsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjMucGFyc2VyO1xuICAgIHZhciBudW1lciA9IGFyZ3NbNF07XG4gICAgdmFyIGRlbm9tID0gYXJnc1s1XTsgLy8gTG9vayBpbnRvIHRoZSBwYXJzZSBub2RlcyB0byBnZXQgdGhlIGRlc2lyZWQgZGVsaW1pdGVycy5cblxuICAgIHZhciBsZWZ0Tm9kZSA9IGNoZWNrTm9kZVR5cGUoYXJnc1swXSwgXCJhdG9tXCIpO1xuXG4gICAgaWYgKGxlZnROb2RlKSB7XG4gICAgICBsZWZ0Tm9kZSA9IGFzc2VydEF0b21GYW1pbHkoYXJnc1swXSwgXCJvcGVuXCIpO1xuICAgIH1cblxuICAgIHZhciBsZWZ0RGVsaW0gPSBsZWZ0Tm9kZSA/IGRlbGltRnJvbVZhbHVlKGxlZnROb2RlLnRleHQpIDogbnVsbDtcbiAgICB2YXIgcmlnaHROb2RlID0gY2hlY2tOb2RlVHlwZShhcmdzWzFdLCBcImF0b21cIik7XG5cbiAgICBpZiAocmlnaHROb2RlKSB7XG4gICAgICByaWdodE5vZGUgPSBhc3NlcnRBdG9tRmFtaWx5KGFyZ3NbMV0sIFwiY2xvc2VcIik7XG4gICAgfVxuXG4gICAgdmFyIHJpZ2h0RGVsaW0gPSByaWdodE5vZGUgPyBkZWxpbUZyb21WYWx1ZShyaWdodE5vZGUudGV4dCkgOiBudWxsO1xuICAgIHZhciBiYXJOb2RlID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1syXSwgXCJzaXplXCIpO1xuICAgIHZhciBoYXNCYXJMaW5lO1xuICAgIHZhciBiYXJTaXplID0gbnVsbDtcblxuICAgIGlmIChiYXJOb2RlLmlzQmxhbmspIHtcbiAgICAgIC8vIFxcZ2VuZnJhYyBhY3RzIGRpZmZlcmVudGx5IHRoYW4gXFxhYm92ZS5cbiAgICAgIC8vIFxcZ2VuZnJhYyB0cmVhdHMgYW4gZW1wdHkgc2l6ZSBncm91cCBhcyBhIHNpZ25hbCB0byB1c2UgYVxuICAgICAgLy8gc3RhbmRhcmQgYmFyIHNpemUuIFxcYWJvdmUgd291bGQgc2VlIHNpemUgPSAwIGFuZCBvbWl0IHRoZSBiYXIuXG4gICAgICBoYXNCYXJMaW5lID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmFyU2l6ZSA9IGJhck5vZGUudmFsdWU7XG4gICAgICBoYXNCYXJMaW5lID0gYmFyU2l6ZS5udW1iZXIgPiAwO1xuICAgIH0gLy8gRmluZCBvdXQgaWYgd2Ugd2FudCBkaXNwbGF5c3R5bGUsIHRleHRzdHlsZSwgZXRjLlxuXG5cbiAgICB2YXIgc2l6ZSA9IFwiYXV0b1wiO1xuICAgIHZhciBzdHlsID0gY2hlY2tOb2RlVHlwZShhcmdzWzNdLCBcIm9yZGdyb3VwXCIpO1xuXG4gICAgaWYgKHN0eWwpIHtcbiAgICAgIGlmIChzdHlsLmJvZHkubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgdGV4dE9yZCA9IGFzc2VydE5vZGVUeXBlKHN0eWwuYm9keVswXSwgXCJ0ZXh0b3JkXCIpO1xuICAgICAgICBzaXplID0gc3R5bEFycmF5W051bWJlcih0ZXh0T3JkLnRleHQpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bCA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbM10sIFwidGV4dG9yZFwiKTtcbiAgICAgIHNpemUgPSBzdHlsQXJyYXlbTnVtYmVyKHN0eWwudGV4dCldO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImdlbmZyYWNcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbnVtZXI6IG51bWVyLFxuICAgICAgZGVub206IGRlbm9tLFxuICAgICAgY29udGludWVkOiBmYWxzZSxcbiAgICAgIGhhc0JhckxpbmU6IGhhc0JhckxpbmUsXG4gICAgICBiYXJTaXplOiBiYXJTaXplLFxuICAgICAgbGVmdERlbGltOiBsZWZ0RGVsaW0sXG4gICAgICByaWdodERlbGltOiByaWdodERlbGltLFxuICAgICAgc2l6ZTogc2l6ZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBnZW5mcmFjX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBnZW5mcmFjX21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBcXGFib3ZlIGlzIGFuIGluZml4IGZyYWN0aW9uIHRoYXQgYWxzbyBkZWZpbmVzIGEgZnJhY3Rpb24gYmFyIHNpemUuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJpbmZpeFwiLFxuICBuYW1lczogW1wiXFxcXGFib3ZlXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIl0sXG4gICAgaW5maXg6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmNCwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmNC5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjQuZnVuY05hbWUsXG4gICAgICAgIHRva2VuID0gX3JlZjQudG9rZW47XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaW5maXhcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgcmVwbGFjZVdpdGg6IFwiXFxcXFxcXFxhYm92ZWZyYWNcIixcbiAgICAgIHNpemU6IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwic2l6ZVwiKS52YWx1ZSxcbiAgICAgIHRva2VuOiB0b2tlblxuICAgIH07XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImdlbmZyYWNcIixcbiAgbmFtZXM6IFtcIlxcXFxcXFxcYWJvdmVmcmFjXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDMsXG4gICAgYXJnVHlwZXM6IFtcIm1hdGhcIiwgXCJzaXplXCIsIFwibWF0aFwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWY1LCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWY1LnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmNS5mdW5jTmFtZTtcbiAgICB2YXIgbnVtZXIgPSBhcmdzWzBdO1xuICAgIHZhciBiYXJTaXplID0gYXNzZXJ0KGFzc2VydE5vZGVUeXBlKGFyZ3NbMV0sIFwiaW5maXhcIikuc2l6ZSk7XG4gICAgdmFyIGRlbm9tID0gYXJnc1syXTtcbiAgICB2YXIgaGFzQmFyTGluZSA9IGJhclNpemUubnVtYmVyID4gMDtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJnZW5mcmFjXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG51bWVyOiBudW1lcixcbiAgICAgIGRlbm9tOiBkZW5vbSxcbiAgICAgIGNvbnRpbnVlZDogZmFsc2UsXG4gICAgICBoYXNCYXJMaW5lOiBoYXNCYXJMaW5lLFxuICAgICAgYmFyU2l6ZTogYmFyU2l6ZSxcbiAgICAgIGxlZnREZWxpbTogbnVsbCxcbiAgICAgIHJpZ2h0RGVsaW06IG51bGwsXG4gICAgICBzaXplOiBcImF1dG9cIlxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBnZW5mcmFjX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBnZW5mcmFjX21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2hvcml6QnJhY2UuanNcblxuXG5cblxuXG5cblxuXG4vLyBOT1RFOiBVbmxpa2UgbW9zdCBgaHRtbEJ1aWxkZXJgcywgdGhpcyBvbmUgaGFuZGxlcyBub3Qgb25seSBcImhvcml6QnJhY2VcIiwgYnV0XG52YXIgaG9yaXpCcmFjZV9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdycCwgb3B0aW9ucykge1xuICB2YXIgc3R5bGUgPSBvcHRpb25zLnN0eWxlOyAvLyBQdWxsIG91dCB0aGUgYFBhcnNlTm9kZTxcImhvcml6QnJhY2VcIj5gIGlmIGBncnBgIGlzIGEgXCJzdXBzdWJcIiBub2RlLlxuXG4gIHZhciBzdXBTdWJHcm91cDtcbiAgdmFyIGdyb3VwO1xuICB2YXIgc3VwU3ViID0gY2hlY2tOb2RlVHlwZShncnAsIFwic3Vwc3ViXCIpO1xuXG4gIGlmIChzdXBTdWIpIHtcbiAgICAvLyBSZWY6IExhVGVYIHNvdXJjZTJlOiB9fX19XFxsaW1pdHN9XG4gICAgLy8gaS5lLiBMYVRlWCB0cmVhdHMgdGhlIGJyYWNlIHNpbWlsYXIgdG8gYW4gb3AgYW5kIHBhc3NlcyBpdFxuICAgIC8vIHdpdGggXFxsaW1pdHMsIHNvIHdlIG5lZWQgdG8gYXNzaWduIHN1cHN1YiBzdHlsZS5cbiAgICBzdXBTdWJHcm91cCA9IHN1cFN1Yi5zdXAgPyBidWlsZEhUTUxfYnVpbGRHcm91cChzdXBTdWIuc3VwLCBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1cCgpKSwgb3B0aW9ucykgOiBidWlsZEhUTUxfYnVpbGRHcm91cChzdXBTdWIuc3ViLCBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1YigpKSwgb3B0aW9ucyk7XG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShzdXBTdWIuYmFzZSwgXCJob3JpekJyYWNlXCIpO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcImhvcml6QnJhY2VcIik7XG4gIH0gLy8gQnVpbGQgdGhlIGJhc2UgZ3JvdXBcblxuXG4gIHZhciBib2R5ID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYmFzZSwgb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUoc3JjX1N0eWxlLkRJU1BMQVkpKTsgLy8gQ3JlYXRlIHRoZSBzdHJldGNoeSBlbGVtZW50XG5cbiAgdmFyIGJyYWNlQm9keSA9IHN0cmV0Y2h5LnN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpOyAvLyBHZW5lcmF0ZSB0aGUgdmxpc3QsIHdpdGggdGhlIGFwcHJvcHJpYXRlIGtlcm5zICAgICAgICDilI/ilIHilIHilIHilIHilIHilIHilIHilIHilJNcbiAgLy8gVGhpcyBmaXJzdCB2bGlzdCBjb250YWlucyB0aGUgY29udGVudCBhbmQgdGhlIGJyYWNlOiAgIGVxdWF0aW9uXG5cbiAgdmFyIHZsaXN0O1xuXG4gIGlmIChncm91cC5pc092ZXIpIHtcbiAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBib2R5XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiAwLjFcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJyYWNlQm9keVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTsgLy8gJEZsb3dGaXhNZTogUmVwbGFjZSB0aGlzIHdpdGggcGFzc2luZyBcInN2Zy1hbGlnblwiIGludG8gbWFrZVZMaXN0LlxuXG4gICAgdmxpc3QuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uY2xhc3Nlcy5wdXNoKFwic3ZnLWFsaWduXCIpO1xuICB9IGVsc2Uge1xuICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgIHBvc2l0aW9uRGF0YTogYm9keS5kZXB0aCArIDAuMSArIGJyYWNlQm9keS5oZWlnaHQsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJyYWNlQm9keVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogMC4xXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBib2R5XG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyAkRmxvd0ZpeE1lOiBSZXBsYWNlIHRoaXMgd2l0aCBwYXNzaW5nIFwic3ZnLWFsaWduXCIgaW50byBtYWtlVkxpc3QuXG5cbiAgICB2bGlzdC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5jaGlsZHJlblswXS5jbGFzc2VzLnB1c2goXCJzdmctYWxpZ25cIik7XG4gIH1cblxuICBpZiAoc3VwU3ViR3JvdXApIHtcbiAgICAvLyBUbyB3cml0ZSB0aGUgc3Vwc3ViLCB3cmFwIHRoZSBmaXJzdCB2bGlzdCBpbiBhbm90aGVyIHZsaXN0OlxuICAgIC8vIFRoZXkgY2FuJ3QgYWxsIGdvIGluIHRoZSBzYW1lIHZsaXN0LCBiZWNhdXNlIHRoZSBub3RlIG1pZ2h0IGJlXG4gICAgLy8gd2lkZXIgdGhhbiB0aGUgZXF1YXRpb24uIFdlIHdhbnQgdGhlIGVxdWF0aW9uIHRvIGNvbnRyb2wgdGhlXG4gICAgLy8gYnJhY2Ugd2lkdGguXG4gICAgLy8gICAgICBub3RlICAgICAgICAgIGxvbmcgbm90ZSAgICAgICAgICAgbG9uZyBub3RlXG4gICAgLy8gICDilI/ilIHilIHilIHilIHilIHilIHilIHilIHilJMgICBvciAgICDilI/ilIHilIHilIHilJMgICAgIG5vdCAgICDilI/ilIHilIHilIHilIHilIHilIHilIHilIHilIHilJNcbiAgICAvLyAgICBlcXVhdGlvbiAgICAgICAgICAgZXFuICAgICAgICAgICAgICAgICBlcW5cbiAgICB2YXIgdlNwYW4gPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIGdyb3VwLmlzT3ZlciA/IFwibW92ZXJcIiA6IFwibXVuZGVyXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcblxuICAgIGlmIChncm91cC5pc092ZXIpIHtcbiAgICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogdlNwYW5cbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICAgIHNpemU6IDAuMlxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogc3VwU3ViR3JvdXBcbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiB2U3Bhbi5kZXB0aCArIDAuMiArIHN1cFN1Ykdyb3VwLmhlaWdodCArIHN1cFN1Ykdyb3VwLmRlcHRoLFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiBzdXBTdWJHcm91cFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgICAgc2l6ZTogMC4yXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiB2U3BhblxuICAgICAgICB9XVxuICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgZ3JvdXAuaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xufTtcblxudmFyIGhvcml6QnJhY2VfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIGFjY2VudE5vZGUgPSBzdHJldGNoeS5tYXRoTUxub2RlKGdyb3VwLmxhYmVsKTtcbiAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKGdyb3VwLmlzT3ZlciA/IFwibW92ZXJcIiA6IFwibXVuZGVyXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpLCBhY2NlbnROb2RlXSk7XG59OyAvLyBIb3Jpem9udGFsIHN0cmV0Y2h5IGJyYWNlc1xuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJob3JpekJyYWNlXCIsXG4gIG5hbWVzOiBbXCJcXFxcb3ZlcmJyYWNlXCIsIFwiXFxcXHVuZGVyYnJhY2VcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJob3JpekJyYWNlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGlzT3ZlcjogL15cXFxcb3Zlci8udGVzdChmdW5jTmFtZSksXG4gICAgICBiYXNlOiBhcmdzWzBdXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGhvcml6QnJhY2VfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGhvcml6QnJhY2VfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvaHJlZi5qc1xuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImhyZWZcIixcbiAgbmFtZXM6IFtcIlxcXFxocmVmXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDIsXG4gICAgYXJnVHlwZXM6IFtcInVybFwiLCBcIm9yaWdpbmFsXCJdLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1sxXTtcbiAgICB2YXIgaHJlZiA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwidXJsXCIpLnVybDtcblxuICAgIGlmICghcGFyc2VyLnNldHRpbmdzLmlzVHJ1c3RlZCh7XG4gICAgICBjb21tYW5kOiBcIlxcXFxocmVmXCIsXG4gICAgICB1cmw6IGhyZWZcbiAgICB9KSkge1xuICAgICAgcmV0dXJuIHBhcnNlci5mb3JtYXRVbnN1cHBvcnRlZENtZChcIlxcXFxocmVmXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImhyZWZcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgaHJlZjogaHJlZixcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGVsZW1lbnRzID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCBmYWxzZSk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VBbmNob3IoZ3JvdXAuaHJlZiwgW10sIGVsZW1lbnRzLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBtYXRoID0gYnVpbGRFeHByZXNzaW9uUm93KGdyb3VwLmJvZHksIG9wdGlvbnMpO1xuXG4gICAgaWYgKCEobWF0aCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfTWF0aE5vZGUpKSB7XG4gICAgICBtYXRoID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtcm93XCIsIFttYXRoXSk7XG4gICAgfVxuXG4gICAgbWF0aC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGdyb3VwLmhyZWYpO1xuICAgIHJldHVybiBtYXRoO1xuICB9XG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJocmVmXCIsXG4gIG5hbWVzOiBbXCJcXFxcdXJsXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInVybFwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyO1xuICAgIHZhciBocmVmID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJ1cmxcIikudXJsO1xuXG4gICAgaWYgKCFwYXJzZXIuc2V0dGluZ3MuaXNUcnVzdGVkKHtcbiAgICAgIGNvbW1hbmQ6IFwiXFxcXHVybFwiLFxuICAgICAgdXJsOiBocmVmXG4gICAgfSkpIHtcbiAgICAgIHJldHVybiBwYXJzZXIuZm9ybWF0VW5zdXBwb3J0ZWRDbWQoXCJcXFxcdXJsXCIpO1xuICAgIH1cblxuICAgIHZhciBjaGFycyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBocmVmLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IGhyZWZbaV07XG5cbiAgICAgIGlmIChjID09PSBcIn5cIikge1xuICAgICAgICBjID0gXCJcXFxcdGV4dGFzY2lpdGlsZGVcIjtcbiAgICAgIH1cblxuICAgICAgY2hhcnMucHVzaCh7XG4gICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICBtb2RlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogY1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGJvZHkgPSB7XG4gICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZm9udDogXCJcXFxcdGV4dHR0XCIsXG4gICAgICBib2R5OiBjaGFyc1xuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaHJlZlwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBocmVmOiBocmVmLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSlcbiAgICB9O1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9odG1sbWF0aG1sLmpzXG5cblxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJodG1sbWF0aG1sXCIsXG4gIG5hbWVzOiBbXCJcXFxcaHRtbEBtYXRobWxcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJodG1sbWF0aG1sXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGh0bWw6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGFyZ3NbMF0pLFxuICAgICAgbWF0aG1sOiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChhcmdzWzFdKVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBlbGVtZW50cyA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuaHRtbCwgb3B0aW9ucywgZmFsc2UpO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlRnJhZ21lbnQoZWxlbWVudHMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkRXhwcmVzc2lvblJvdyhncm91cC5tYXRobWwsIG9wdGlvbnMpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9pbmNsdWRlZ3JhcGhpY3MuanNcblxuXG5cblxuXG5cblxudmFyIGluY2x1ZGVncmFwaGljc19zaXplRGF0YSA9IGZ1bmN0aW9uIHNpemVEYXRhKHN0cikge1xuICBpZiAoL15bLStdPyAqKFxcZCsoXFwuXFxkKik/fFxcLlxcZCspJC8udGVzdChzdHIpKSB7XG4gICAgLy8gc3RyIGlzIGEgbnVtYmVyIHdpdGggbm8gdW5pdCBzcGVjaWZpZWQuXG4gICAgLy8gZGVmYXVsdCB1bml0IGlzIGJwLCBwZXIgZ3JhcGhpeCBwYWNrYWdlLlxuICAgIHJldHVybiB7XG4gICAgICBudW1iZXI6ICtzdHIsXG4gICAgICB1bml0OiBcImJwXCJcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHZhciBtYXRjaCA9IC8oWy0rXT8pICooXFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSAqKFthLXpdezJ9KS8uZXhlYyhzdHIpO1xuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBzaXplOiAnXCIgKyBzdHIgKyBcIicgaW4gXFxcXGluY2x1ZGVncmFwaGljc1wiKTtcbiAgICB9XG5cbiAgICB2YXIgZGF0YSA9IHtcbiAgICAgIG51bWJlcjogKyhtYXRjaFsxXSArIG1hdGNoWzJdKSxcbiAgICAgIC8vIHNpZ24gKyBtYWduaXR1ZGUsIGNhc3QgdG8gbnVtYmVyXG4gICAgICB1bml0OiBtYXRjaFszXVxuICAgIH07XG5cbiAgICBpZiAoIXZhbGlkVW5pdChkYXRhKSkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCB1bml0OiAnXCIgKyBkYXRhLnVuaXQgKyBcIicgaW4gXFxcXGluY2x1ZGVncmFwaGljcy5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbn07XG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJpbmNsdWRlZ3JhcGhpY3NcIixcbiAgbmFtZXM6IFtcIlxcXFxpbmNsdWRlZ3JhcGhpY3NcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInJhd1wiLCBcInVybFwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiBmYWxzZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIHdpZHRoID0ge1xuICAgICAgbnVtYmVyOiAwLFxuICAgICAgdW5pdDogXCJlbVwiXG4gICAgfTtcbiAgICB2YXIgaGVpZ2h0ID0ge1xuICAgICAgbnVtYmVyOiAwLjksXG4gICAgICB1bml0OiBcImVtXCJcbiAgICB9OyAvLyBzb3J0YSBjaGFyYWN0ZXIgc2l6ZWQuXG5cbiAgICB2YXIgdG90YWxoZWlnaHQgPSB7XG4gICAgICBudW1iZXI6IDAsXG4gICAgICB1bml0OiBcImVtXCJcbiAgICB9O1xuICAgIHZhciBhbHQgPSBcIlwiO1xuXG4gICAgaWYgKG9wdEFyZ3NbMF0pIHtcbiAgICAgIHZhciBhdHRyaWJ1dGVTdHIgPSBhc3NlcnROb2RlVHlwZShvcHRBcmdzWzBdLCBcInJhd1wiKS5zdHJpbmc7IC8vIFBhcnNlci5qcyBkb2VzIG5vdCBwYXJzZSBrZXkvdmFsdWUgcGFpcnMuIFdlIGdldCBhIHN0cmluZy5cblxuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTdHIuc3BsaXQoXCIsXCIpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGtleVZhbCA9IGF0dHJpYnV0ZXNbaV0uc3BsaXQoXCI9XCIpO1xuXG4gICAgICAgIGlmIChrZXlWYWwubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgdmFyIHN0ciA9IGtleVZhbFsxXS50cmltKCk7XG5cbiAgICAgICAgICBzd2l0Y2ggKGtleVZhbFswXS50cmltKCkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJhbHRcIjpcbiAgICAgICAgICAgICAgYWx0ID0gc3RyO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcIndpZHRoXCI6XG4gICAgICAgICAgICAgIHdpZHRoID0gaW5jbHVkZWdyYXBoaWNzX3NpemVEYXRhKHN0cik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFwiaGVpZ2h0XCI6XG4gICAgICAgICAgICAgIGhlaWdodCA9IGluY2x1ZGVncmFwaGljc19zaXplRGF0YShzdHIpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcInRvdGFsaGVpZ2h0XCI6XG4gICAgICAgICAgICAgIHRvdGFsaGVpZ2h0ID0gaW5jbHVkZWdyYXBoaWNzX3NpemVEYXRhKHN0cik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGtleTogJ1wiICsga2V5VmFsWzBdICsgXCInIGluIFxcXFxpbmNsdWRlZ3JhcGhpY3MuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzcmMgPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcInVybFwiKS51cmw7XG5cbiAgICBpZiAoYWx0ID09PSBcIlwiKSB7XG4gICAgICAvLyBObyBhbHQgZ2l2ZW4uIFVzZSB0aGUgZmlsZSBuYW1lLiBTdHJpcCBhd2F5IHRoZSBwYXRoLlxuICAgICAgYWx0ID0gc3JjO1xuICAgICAgYWx0ID0gYWx0LnJlcGxhY2UoL14uKltcXFxcL10vLCAnJyk7XG4gICAgICBhbHQgPSBhbHQuc3Vic3RyaW5nKDAsIGFsdC5sYXN0SW5kZXhPZignLicpKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhcnNlci5zZXR0aW5ncy5pc1RydXN0ZWQoe1xuICAgICAgY29tbWFuZDogXCJcXFxcaW5jbHVkZWdyYXBoaWNzXCIsXG4gICAgICB1cmw6IHNyY1xuICAgIH0pKSB7XG4gICAgICByZXR1cm4gcGFyc2VyLmZvcm1hdFVuc3VwcG9ydGVkQ21kKFwiXFxcXGluY2x1ZGVncmFwaGljc1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJpbmNsdWRlZ3JhcGhpY3NcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYWx0OiBhbHQsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHRvdGFsaGVpZ2h0OiB0b3RhbGhlaWdodCxcbiAgICAgIHNyYzogc3JjXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGhlaWdodCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuaGVpZ2h0LCBvcHRpb25zKTtcbiAgICB2YXIgZGVwdGggPSAwO1xuXG4gICAgaWYgKGdyb3VwLnRvdGFsaGVpZ2h0Lm51bWJlciA+IDApIHtcbiAgICAgIGRlcHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC50b3RhbGhlaWdodCwgb3B0aW9ucykgLSBoZWlnaHQ7XG4gICAgICBkZXB0aCA9IE51bWJlcihkZXB0aC50b0ZpeGVkKDIpKTtcbiAgICB9XG5cbiAgICB2YXIgd2lkdGggPSAwO1xuXG4gICAgaWYgKGdyb3VwLndpZHRoLm51bWJlciA+IDApIHtcbiAgICAgIHdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC53aWR0aCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlID0ge1xuICAgICAgaGVpZ2h0OiBoZWlnaHQgKyBkZXB0aCArIFwiZW1cIlxuICAgIH07XG5cbiAgICBpZiAod2lkdGggPiAwKSB7XG4gICAgICBzdHlsZS53aWR0aCA9IHdpZHRoICsgXCJlbVwiO1xuICAgIH1cblxuICAgIGlmIChkZXB0aCA+IDApIHtcbiAgICAgIHN0eWxlLnZlcnRpY2FsQWxpZ24gPSAtZGVwdGggKyBcImVtXCI7XG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSBuZXcgZG9tVHJlZV9JbWcoZ3JvdXAuc3JjLCBncm91cC5hbHQsIHN0eWxlKTtcbiAgICBub2RlLmhlaWdodCA9IGhlaWdodDtcbiAgICBub2RlLmRlcHRoID0gZGVwdGg7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibWdseXBoXCIsIFtdKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImFsdFwiLCBncm91cC5hbHQpO1xuICAgIHZhciBoZWlnaHQgPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLmhlaWdodCwgb3B0aW9ucyk7XG4gICAgdmFyIGRlcHRoID0gMDtcblxuICAgIGlmIChncm91cC50b3RhbGhlaWdodC5udW1iZXIgPiAwKSB7XG4gICAgICBkZXB0aCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAudG90YWxoZWlnaHQsIG9wdGlvbnMpIC0gaGVpZ2h0O1xuICAgICAgZGVwdGggPSBkZXB0aC50b0ZpeGVkKDIpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ2YWxpZ25cIiwgXCItXCIgKyBkZXB0aCArIFwiZW1cIik7XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgaGVpZ2h0ICsgZGVwdGggKyBcImVtXCIpO1xuXG4gICAgaWYgKGdyb3VwLndpZHRoLm51bWJlciA+IDApIHtcbiAgICAgIHZhciB3aWR0aCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAud2lkdGgsIG9wdGlvbnMpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCB3aWR0aCArIFwiZW1cIik7XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgZ3JvdXAuc3JjKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMva2Vybi5qc1xuLy8gSG9yaXpvbnRhbCBzcGFjaW5nIGNvbW1hbmRzXG5cblxuXG5cbiAvLyBUT0RPOiBcXGhza2lwIGFuZCBcXG1za2lwIHNob3VsZCBzdXBwb3J0IHBsdXMgYW5kIG1pbnVzIGluIGxlbmd0aHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImtlcm5cIixcbiAgbmFtZXM6IFtcIlxcXFxrZXJuXCIsIFwiXFxcXG1rZXJuXCIsIFwiXFxcXGhza2lwXCIsIFwiXFxcXG1za2lwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgc2l6ZSA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwic2l6ZVwiKTtcblxuICAgIGlmIChwYXJzZXIuc2V0dGluZ3Muc3RyaWN0KSB7XG4gICAgICB2YXIgbWF0aEZ1bmN0aW9uID0gZnVuY05hbWVbMV0gPT09ICdtJzsgLy8gXFxta2VybiwgXFxtc2tpcFxuXG4gICAgICB2YXIgbXVVbml0ID0gc2l6ZS52YWx1ZS51bml0ID09PSAnbXUnO1xuXG4gICAgICBpZiAobWF0aEZ1bmN0aW9uKSB7XG4gICAgICAgIGlmICghbXVVbml0KSB7XG4gICAgICAgICAgcGFyc2VyLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcIm1hdGhWc1RleHRVbml0c1wiLCBcIkxhVGVYJ3MgXCIgKyBmdW5jTmFtZSArIFwiIHN1cHBvcnRzIG9ubHkgbXUgdW5pdHMsIFwiICsgKFwibm90IFwiICsgc2l6ZS52YWx1ZS51bml0ICsgXCIgdW5pdHNcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcnNlci5tb2RlICE9PSBcIm1hdGhcIikge1xuICAgICAgICAgIHBhcnNlci5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJtYXRoVnNUZXh0VW5pdHNcIiwgXCJMYVRlWCdzIFwiICsgZnVuY05hbWUgKyBcIiB3b3JrcyBvbmx5IGluIG1hdGggbW9kZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gIW1hdGhGdW5jdGlvblxuICAgICAgICBpZiAobXVVbml0KSB7XG4gICAgICAgICAgcGFyc2VyLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcIm1hdGhWc1RleHRVbml0c1wiLCBcIkxhVGVYJ3MgXCIgKyBmdW5jTmFtZSArIFwiIGRvZXNuJ3Qgc3VwcG9ydCBtdSB1bml0c1wiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZGltZW5zaW9uOiBzaXplLnZhbHVlXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VHbHVlKGdyb3VwLmRpbWVuc2lvbiwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgZGltZW5zaW9uID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5kaW1lbnNpb24sIG9wdGlvbnMpO1xuICAgIHJldHVybiBuZXcgbWF0aE1MVHJlZS5TcGFjZU5vZGUoZGltZW5zaW9uKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvbGFwLmpzXG4vLyBIb3Jpem9udGFsIG92ZXJsYXAgZnVuY3Rpb25zXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImxhcFwiLFxuICBuYW1lczogW1wiXFxcXG1hdGhsbGFwXCIsIFwiXFxcXG1hdGhybGFwXCIsIFwiXFxcXG1hdGhjbGFwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibGFwXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGFsaWdubWVudDogZnVuY05hbWUuc2xpY2UoNSksXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gbWF0aGxsYXAsIG1hdGhybGFwLCBtYXRoY2xhcFxuICAgIHZhciBpbm5lcjtcblxuICAgIGlmIChncm91cC5hbGlnbm1lbnQgPT09IFwiY2xhcFwiKSB7XG4gICAgICAvLyByZWY6IGh0dHBzOi8vd3d3Lm1hdGgubHN1LmVkdS9+YXBlcmxpcy9wdWJsaWNhdGlvbnMvbWF0aGNsYXAvXG4gICAgICBpbm5lciA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtdLCBbYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTsgLy8gd3JhcCwgc2luY2UgQ1NTIHdpbGwgY2VudGVyIGEgLmNsYXAgPiAuaW5uZXIgPiBzcGFuXG5cbiAgICAgIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiaW5uZXJcIl0sIFtpbm5lcl0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbm5lciA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImlubmVyXCJdLCBbYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcbiAgICB9XG5cbiAgICB2YXIgZml4ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiZml4XCJdLCBbXSk7XG4gICAgdmFyIG5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbZ3JvdXAuYWxpZ25tZW50XSwgW2lubmVyLCBmaXhdLCBvcHRpb25zKTsgLy8gQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBjb3JyZWN0bHkgc2V0IGhvcml6b250YWwgYWxpZ25tZW50IG9mIHRoZVxuICAgIC8vIHR3byBpdGVtcyBpbnZvbHZlZCBpbiB0aGUgbGFwLlxuICAgIC8vIE5leHQsIHVzZSBhIHN0cnV0IHRvIHNldCB0aGUgaGVpZ2h0IG9mIHRoZSBIVE1MIGJvdW5kaW5nIGJveC5cbiAgICAvLyBPdGhlcndpc2UsIGEgdGFsbCBhcmd1bWVudCBtYXkgYmUgbWlzcGxhY2VkLlxuXG4gICAgdmFyIHN0cnV0ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wic3RydXRcIl0pO1xuICAgIHN0cnV0LnN0eWxlLmhlaWdodCA9IG5vZGUuaGVpZ2h0ICsgbm9kZS5kZXB0aCArIFwiZW1cIjtcbiAgICBzdHJ1dC5zdHlsZS52ZXJ0aWNhbEFsaWduID0gLW5vZGUuZGVwdGggKyBcImVtXCI7XG4gICAgbm9kZS5jaGlsZHJlbi51bnNoaWZ0KHN0cnV0KTsgLy8gTmV4dCwgcHJldmVudCB2ZXJ0aWNhbCBtaXNwbGFjZW1lbnQgd2hlbiBuZXh0IHRvIHNvbWV0aGluZyB0YWxsLlxuXG4gICAgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBub2RlXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyBHZXQgdGhlIGhvcml6b250YWwgc3BhY2luZyBjb3JyZWN0IHJlbGF0aXZlIHRvIGFkamFjZW50IGl0ZW1zLlxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFtub2RlXSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBtYXRobGxhcCwgbWF0aHJsYXAsIG1hdGhjbGFwXG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICAgIGlmIChncm91cC5hbGlnbm1lbnQgIT09IFwicmxhcFwiKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gZ3JvdXAuYWxpZ25tZW50ID09PSBcImxsYXBcIiA/IFwiLTFcIiA6IFwiLTAuNVwiO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgb2Zmc2V0ICsgXCJ3aWR0aFwiKTtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiMHB4XCIpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9tYXRoLmpzXG5cbiAvLyBTd2l0Y2hpbmcgZnJvbSB0ZXh0IG1vZGUgYmFjayB0byBtYXRoIG1vZGVcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInN0eWxpbmdcIixcbiAgbmFtZXM6IFtcIlxcXFwoXCIsIFwiJFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgYWxsb3dlZEluTWF0aDogZmFsc2VcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZSxcbiAgICAgICAgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIG91dGVyTW9kZSA9IHBhcnNlci5tb2RlO1xuICAgIHBhcnNlci5zd2l0Y2hNb2RlKFwibWF0aFwiKTtcbiAgICB2YXIgY2xvc2UgPSBmdW5jTmFtZSA9PT0gXCJcXFxcKFwiID8gXCJcXFxcKVwiIDogXCIkXCI7XG4gICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKGZhbHNlLCBjbG9zZSk7XG4gICAgcGFyc2VyLmV4cGVjdChjbG9zZSk7XG4gICAgcGFyc2VyLnN3aXRjaE1vZGUob3V0ZXJNb2RlKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzdHlsaW5nXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIHN0eWxlOiBcInRleHRcIixcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9XG59KTsgLy8gQ2hlY2sgZm9yIGV4dHJhIGNsb3NpbmcgbWF0aCBkZWxpbWl0ZXJzXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ0ZXh0XCIsXG4gIC8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhpcyBpcy5cbiAgbmFtZXM6IFtcIlxcXFwpXCIsIFwiXFxcXF1cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgIGFsbG93ZWRJbk1hdGg6IGZhbHNlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIk1pc21hdGNoZWQgXCIgKyBjb250ZXh0LmZ1bmNOYW1lKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvbWF0aGNob2ljZS5qc1xuXG5cblxuXG5cblxudmFyIG1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlID0gZnVuY3Rpb24gY2hvb3NlTWF0aFN0eWxlKGdyb3VwLCBvcHRpb25zKSB7XG4gIHN3aXRjaCAob3B0aW9ucy5zdHlsZS5zaXplKSB7XG4gICAgY2FzZSBzcmNfU3R5bGUuRElTUExBWS5zaXplOlxuICAgICAgcmV0dXJuIGdyb3VwLmRpc3BsYXk7XG5cbiAgICBjYXNlIHNyY19TdHlsZS5URVhULnNpemU6XG4gICAgICByZXR1cm4gZ3JvdXAudGV4dDtcblxuICAgIGNhc2Ugc3JjX1N0eWxlLlNDUklQVC5zaXplOlxuICAgICAgcmV0dXJuIGdyb3VwLnNjcmlwdDtcblxuICAgIGNhc2Ugc3JjX1N0eWxlLlNDUklQVFNDUklQVC5zaXplOlxuICAgICAgcmV0dXJuIGdyb3VwLnNjcmlwdHNjcmlwdDtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZ3JvdXAudGV4dDtcbiAgfVxufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1hdGhjaG9pY2VcIixcbiAgbmFtZXM6IFtcIlxcXFxtYXRoY2hvaWNlXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDRcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm1hdGhjaG9pY2VcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZGlzcGxheTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYXJnc1swXSksXG4gICAgICB0ZXh0OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChhcmdzWzFdKSxcbiAgICAgIHNjcmlwdDogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYXJnc1syXSksXG4gICAgICBzY3JpcHRzY3JpcHQ6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGFyZ3NbM10pXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGJvZHkgPSBtYXRoY2hvaWNlX2Nob29zZU1hdGhTdHlsZShncm91cCwgb3B0aW9ucyk7XG4gICAgdmFyIGVsZW1lbnRzID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihib2R5LCBvcHRpb25zLCBmYWxzZSk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VGcmFnbWVudChlbGVtZW50cyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgYm9keSA9IG1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlKGdyb3VwLCBvcHRpb25zKTtcbiAgICByZXR1cm4gYnVpbGRFeHByZXNzaW9uUm93KGJvZHksIG9wdGlvbnMpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy91dGlscy9hc3NlbWJsZVN1cFN1Yi5qc1xuXG5cbi8vIEZvciBhbiBvcGVyYXRvciB3aXRoIGxpbWl0cywgYXNzZW1ibGUgdGhlIGJhc2UsIHN1cCwgYW5kIHN1YiBpbnRvIGEgc3Bhbi5cbnZhciBhc3NlbWJsZVN1cFN1Yl9hc3NlbWJsZVN1cFN1YiA9IGZ1bmN0aW9uIGFzc2VtYmxlU3VwU3ViKGJhc2UsIHN1cEdyb3VwLCBzdWJHcm91cCwgb3B0aW9ucywgc3R5bGUsIHNsYW50LCBiYXNlU2hpZnQpIHtcbiAgLy8gSUUgOCBjbGlwcyBcXGludCBpZiBpdCBpcyBpbiBhIGRpc3BsYXk6IGlubGluZS1ibG9jay4gV2Ugd3JhcCBpdFxuICAvLyBpbiBhIG5ldyBzcGFuIHNvIGl0IGlzIGFuIGlubGluZSwgYW5kIHdvcmtzLlxuICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW10sIFtiYXNlXSk7XG4gIHZhciBzdWI7XG4gIHZhciBzdXA7IC8vIFdlIG1hbnVhbGx5IGhhdmUgdG8gaGFuZGxlIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMuIFRoaXMsXG4gIC8vIGFzaWRlIGZyb20gdGhlIGtlcm4gY2FsY3VsYXRpb25zLCBpcyBjb3BpZWQgZnJvbSBzdXBzdWIuXG5cbiAgaWYgKHN1cEdyb3VwKSB7XG4gICAgdmFyIGVsZW0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChzdXBHcm91cCwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdXAoKSksIG9wdGlvbnMpO1xuICAgIHN1cCA9IHtcbiAgICAgIGVsZW06IGVsZW0sXG4gICAgICBrZXJuOiBNYXRoLm1heChvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nMSwgb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzMgLSBlbGVtLmRlcHRoKVxuICAgIH07XG4gIH1cblxuICBpZiAoc3ViR3JvdXApIHtcbiAgICB2YXIgX2VsZW0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChzdWJHcm91cCwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdWIoKSksIG9wdGlvbnMpO1xuXG4gICAgc3ViID0ge1xuICAgICAgZWxlbTogX2VsZW0sXG4gICAgICBrZXJuOiBNYXRoLm1heChvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nMiwgb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzQgLSBfZWxlbS5oZWlnaHQpXG4gICAgfTtcbiAgfSAvLyBCdWlsZCB0aGUgZmluYWwgZ3JvdXAgYXMgYSB2bGlzdCBvZiB0aGUgcG9zc2libGUgc3Vic2NyaXB0LCBiYXNlLFxuICAvLyBhbmQgcG9zc2libGUgc3VwZXJzY3JpcHQuXG5cblxuICB2YXIgZmluYWxHcm91cDtcblxuICBpZiAoc3VwICYmIHN1Yikge1xuICAgIHZhciBib3R0b20gPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nNSArIHN1Yi5lbGVtLmhlaWdodCArIHN1Yi5lbGVtLmRlcHRoICsgc3ViLmtlcm4gKyBiYXNlLmRlcHRoICsgYmFzZVNoaWZ0O1xuICAgIGZpbmFsR3JvdXAgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBib3R0b20sXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5iaWdPcFNwYWNpbmc1XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBzdWIuZWxlbSxcbiAgICAgICAgbWFyZ2luTGVmdDogLXNsYW50ICsgXCJlbVwiXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBzdWIua2VyblxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYmFzZVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogc3VwLmtlcm5cbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1cC5lbGVtLFxuICAgICAgICBtYXJnaW5MZWZ0OiBzbGFudCArIFwiZW1cIlxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzVcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3ViKSB7XG4gICAgdmFyIHRvcCA9IGJhc2UuaGVpZ2h0IC0gYmFzZVNoaWZ0OyAvLyBTaGlmdCB0aGUgbGltaXRzIGJ5IHRoZSBzbGFudCBvZiB0aGUgc3ltYm9sLiBOb3RlXG4gICAgLy8gdGhhdCB3ZSBhcmUgc3VwcG9zZWQgdG8gc2hpZnQgdGhlIGxpbWl0cyBieSAxLzIgb2YgdGhlIHNsYW50LFxuICAgIC8vIGJ1dCBzaW5jZSB3ZSBhcmUgY2VudGVyaW5nIHRoZSBsaW1pdHMgYWRkaW5nIGEgZnVsbCBzbGFudCBvZlxuICAgIC8vIG1hcmdpbiB3aWxsIHNoaWZ0IGJ5IDEvMiB0aGF0LlxuXG4gICAgZmluYWxHcm91cCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwidG9wXCIsXG4gICAgICBwb3NpdGlvbkRhdGE6IHRvcCxcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzVcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1Yi5lbGVtLFxuICAgICAgICBtYXJnaW5MZWZ0OiAtc2xhbnQgKyBcImVtXCJcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IHN1Yi5rZXJuXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBiYXNlXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKHN1cCkge1xuICAgIHZhciBfYm90dG9tID0gYmFzZS5kZXB0aCArIGJhc2VTaGlmdDtcblxuICAgIGZpbmFsR3JvdXAgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBfYm90dG9tLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBiYXNlXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBzdXAua2VyblxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogc3VwLmVsZW0sXG4gICAgICAgIG1hcmdpbkxlZnQ6IHNsYW50ICsgXCJlbVwiXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nNVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIGNhc2UgcHJvYmFibHkgc2hvdWxkbid0IG9jY3VyICh0aGlzIHdvdWxkIG1lYW4gdGhlXG4gICAgLy8gc3Vwc3ViIHdhcyBzZW5kaW5nIHVzIGEgZ3JvdXAgd2l0aCBubyBzdXBlcnNjcmlwdCBvclxuICAgIC8vIHN1YnNjcmlwdCkgYnV0IGJlIHNhZmUuXG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCIsIFwib3AtbGltaXRzXCJdLCBbZmluYWxHcm91cF0sIG9wdGlvbnMpO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9vcC5qc1xuLy8gTGltaXRzLCBzeW1ib2xzXG5cblxuXG5cblxuXG5cblxuXG5cbi8vIE1vc3Qgb3BlcmF0b3JzIGhhdmUgYSBsYXJnZSBzdWNjZXNzb3Igc3ltYm9sLCBidXQgdGhlc2UgZG9uJ3QuXG52YXIgbm9TdWNjZXNzb3IgPSBbXCJcXFxcc21hbGxpbnRcIl07IC8vIE5PVEU6IFVubGlrZSBtb3N0IGBodG1sQnVpbGRlcmBzLCB0aGlzIG9uZSBoYW5kbGVzIG5vdCBvbmx5IFwib3BcIiwgYnV0IGFsc29cbi8vIFwic3Vwc3ViXCIgc2luY2Ugc29tZSBvZiB0aGVtIChsaWtlIFxcaW50KSBjYW4gYWZmZWN0IHN1cGVyL3N1YnNjcmlwdGluZy5cblxudmFyIG9wX2h0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JwLCBvcHRpb25zKSB7XG4gIC8vIE9wZXJhdG9ycyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZy4gNDQzLTQ0NCwgcnVsZSAxMyhhKS5cbiAgdmFyIHN1cEdyb3VwO1xuICB2YXIgc3ViR3JvdXA7XG4gIHZhciBoYXNMaW1pdHMgPSBmYWxzZTtcbiAgdmFyIGdyb3VwO1xuICB2YXIgc3VwU3ViID0gY2hlY2tOb2RlVHlwZShncnAsIFwic3Vwc3ViXCIpO1xuXG4gIGlmIChzdXBTdWIpIHtcbiAgICAvLyBJZiB3ZSBoYXZlIGxpbWl0cywgc3Vwc3ViIHdpbGwgcGFzcyB1cyBpdHMgZ3JvdXAgdG8gaGFuZGxlLiBQdWxsXG4gICAgLy8gb3V0IHRoZSBzdXBlcnNjcmlwdCBhbmQgc3Vic2NyaXB0IGFuZCBzZXQgdGhlIGdyb3VwIHRvIHRoZSBvcCBpblxuICAgIC8vIGl0cyBiYXNlLlxuICAgIHN1cEdyb3VwID0gc3VwU3ViLnN1cDtcbiAgICBzdWJHcm91cCA9IHN1cFN1Yi5zdWI7XG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShzdXBTdWIuYmFzZSwgXCJvcFwiKTtcbiAgICBoYXNMaW1pdHMgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcIm9wXCIpO1xuICB9XG5cbiAgdmFyIHN0eWxlID0gb3B0aW9ucy5zdHlsZTtcbiAgdmFyIGxhcmdlID0gZmFsc2U7XG5cbiAgaWYgKHN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUgJiYgZ3JvdXAuc3ltYm9sICYmICF1dGlscy5jb250YWlucyhub1N1Y2Nlc3NvciwgZ3JvdXAubmFtZSkpIHtcbiAgICAvLyBNb3N0IHN5bWJvbCBvcGVyYXRvcnMgZ2V0IGxhcmdlciBpbiBkaXNwbGF5c3R5bGUgKHJ1bGUgMTMpXG4gICAgbGFyZ2UgPSB0cnVlO1xuICB9XG5cbiAgdmFyIGJhc2U7XG5cbiAgaWYgKGdyb3VwLnN5bWJvbCkge1xuICAgIC8vIElmIHRoaXMgaXMgYSBzeW1ib2wsIGNyZWF0ZSB0aGUgc3ltYm9sLlxuICAgIHZhciBmb250TmFtZSA9IGxhcmdlID8gXCJTaXplMi1SZWd1bGFyXCIgOiBcIlNpemUxLVJlZ3VsYXJcIjtcbiAgICB2YXIgc3Rhc2ggPSBcIlwiO1xuXG4gICAgaWYgKGdyb3VwLm5hbWUgPT09IFwiXFxcXG9paW50XCIgfHwgZ3JvdXAubmFtZSA9PT0gXCJcXFxcb2lpaW50XCIpIHtcbiAgICAgIC8vIE5vIGZvbnQgZ2x5cGhzIHlldCwgc28gdXNlIGEgZ2x5cGggdy9vIHRoZSBvdmFsLlxuICAgICAgLy8gVE9ETzogV2hlbiBmb250IGdseXBocyBhcmUgYXZhaWxhYmxlLCBkZWxldGUgdGhpcyBjb2RlLlxuICAgICAgc3Rhc2ggPSBncm91cC5uYW1lLnN1YnN0cigxKTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgICBncm91cC5uYW1lID0gc3Rhc2ggPT09IFwib2lpbnRcIiA/IFwiXFxcXGlpbnRcIiA6IFwiXFxcXGlpaW50XCI7XG4gICAgfVxuXG4gICAgYmFzZSA9IGJ1aWxkQ29tbW9uLm1ha2VTeW1ib2woZ3JvdXAubmFtZSwgZm9udE5hbWUsIFwibWF0aFwiLCBvcHRpb25zLCBbXCJtb3BcIiwgXCJvcC1zeW1ib2xcIiwgbGFyZ2UgPyBcImxhcmdlLW9wXCIgOiBcInNtYWxsLW9wXCJdKTtcblxuICAgIGlmIChzdGFzaC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBXZSdyZSBpbiBcXG9paW50IG9yIFxcb2lpaW50LiBPdmVybGF5IHRoZSBvdmFsLlxuICAgICAgLy8gVE9ETzogV2hlbiBmb250IGdseXBocyBhcmUgYXZhaWxhYmxlLCBkZWxldGUgdGhpcyBjb2RlLlxuICAgICAgdmFyIGl0YWxpYyA9IGJhc2UuaXRhbGljO1xuICAgICAgdmFyIG92YWwgPSBidWlsZENvbW1vbi5zdGF0aWNTdmcoc3Rhc2ggKyBcIlNpemVcIiArIChsYXJnZSA/IFwiMlwiIDogXCIxXCIpLCBvcHRpb25zKTtcbiAgICAgIGJhc2UgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IGJhc2UsXG4gICAgICAgICAgc2hpZnQ6IDBcbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IG92YWwsXG4gICAgICAgICAgc2hpZnQ6IGxhcmdlID8gMC4wOCA6IDBcbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpOyAvLyAkRmxvd0ZpeE1lXG5cbiAgICAgIGdyb3VwLm5hbWUgPSBcIlxcXFxcIiArIHN0YXNoO1xuICAgICAgYmFzZS5jbGFzc2VzLnVuc2hpZnQoXCJtb3BcIik7IC8vICRGbG93Rml4TWVcblxuICAgICAgYmFzZS5pdGFsaWMgPSBpdGFsaWM7XG4gICAgfVxuICB9IGVsc2UgaWYgKGdyb3VwLmJvZHkpIHtcbiAgICAvLyBJZiB0aGlzIGlzIGEgbGlzdCwgY29tcG9zZSB0aGF0IGxpc3QuXG4gICAgdmFyIGlubmVyID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlKTtcblxuICAgIGlmIChpbm5lci5sZW5ndGggPT09IDEgJiYgaW5uZXJbMF0gaW5zdGFuY2VvZiBkb21UcmVlX1N5bWJvbE5vZGUpIHtcbiAgICAgIGJhc2UgPSBpbm5lclswXTtcbiAgICAgIGJhc2UuY2xhc3Nlc1swXSA9IFwibW9wXCI7IC8vIHJlcGxhY2Ugb2xkIG1jbGFzc1xuICAgIH0gZWxzZSB7XG4gICAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCJdLCBidWlsZENvbW1vbi50cnlDb21iaW5lQ2hhcnMoaW5uZXIpLCBvcHRpb25zKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCB0aGlzIGlzIGEgdGV4dCBvcGVyYXRvci4gQnVpbGQgdGhlIHRleHQgZnJvbSB0aGVcbiAgICAvLyBvcGVyYXRvcidzIG5hbWUuXG4gICAgLy8gVE9ETyhlbWlseSk6IEFkZCBhIHNwYWNlIGluIHRoZSBtaWRkbGUgb2Ygc29tZSBvZiB0aGVzZVxuICAgIC8vIG9wZXJhdG9ycywgbGlrZSBcXGxpbXN1cFxuICAgIHZhciBvdXRwdXQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZ3JvdXAubmFtZS5sZW5ndGg7IGkrKykge1xuICAgICAgb3V0cHV0LnB1c2goYnVpbGRDb21tb24ubWF0aHN5bShncm91cC5uYW1lW2ldLCBncm91cC5tb2RlLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgYmFzZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcFwiXSwgb3V0cHV0LCBvcHRpb25zKTtcbiAgfSAvLyBJZiBjb250ZW50IG9mIG9wIGlzIGEgc2luZ2xlIHN5bWJvbCwgc2hpZnQgaXQgdmVydGljYWxseS5cblxuXG4gIHZhciBiYXNlU2hpZnQgPSAwO1xuICB2YXIgc2xhbnQgPSAwO1xuXG4gIGlmICgoYmFzZSBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSB8fCBncm91cC5uYW1lID09PSBcIlxcXFxvaWludFwiIHx8IGdyb3VwLm5hbWUgPT09IFwiXFxcXG9paWludFwiKSAmJiAhZ3JvdXAuc3VwcHJlc3NCYXNlU2hpZnQpIHtcbiAgICAvLyBXZSBzdXBwcmVzcyB0aGUgc2hpZnQgb2YgdGhlIGJhc2Ugb2YgXFxvdmVyc2V0IGFuZCBcXHVuZGVyc2V0LiBPdGhlcndpc2UsXG4gICAgLy8gc2hpZnQgdGhlIHN5bWJvbCBzbyBpdHMgY2VudGVyIGxpZXMgb24gdGhlIGF4aXMgKHJ1bGUgMTMpLiBJdFxuICAgIC8vIGFwcGVhcnMgdGhhdCBvdXIgZm9udHMgaGF2ZSB0aGUgY2VudGVycyBvZiB0aGUgc3ltYm9scyBhbHJlYWR5XG4gICAgLy8gYWxtb3N0IG9uIHRoZSBheGlzLCBzbyB0aGVzZSBudW1iZXJzIGFyZSB2ZXJ5IHNtYWxsLiBOb3RlIHdlXG4gICAgLy8gZG9uJ3QgYWN0dWFsbHkgYXBwbHkgdGhpcyBoZXJlLCBidXQgaW5zdGVhZCBpdCBpcyB1c2VkIGVpdGhlciBpblxuICAgIC8vIHRoZSB2bGlzdCBjcmVhdGlvbiBvciBzZXBhcmF0ZWx5IHdoZW4gdGhlcmUgYXJlIG5vIGxpbWl0cy5cbiAgICBiYXNlU2hpZnQgPSAoYmFzZS5oZWlnaHQgLSBiYXNlLmRlcHRoKSAvIDIgLSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDsgLy8gVGhlIHNsYW50IG9mIHRoZSBzeW1ib2wgaXMganVzdCBpdHMgaXRhbGljIGNvcnJlY3Rpb24uXG4gICAgLy8gJEZsb3dGaXhNZVxuXG4gICAgc2xhbnQgPSBiYXNlLml0YWxpYztcbiAgfVxuXG4gIGlmIChoYXNMaW1pdHMpIHtcbiAgICByZXR1cm4gYXNzZW1ibGVTdXBTdWJfYXNzZW1ibGVTdXBTdWIoYmFzZSwgc3VwR3JvdXAsIHN1Ykdyb3VwLCBvcHRpb25zLCBzdHlsZSwgc2xhbnQsIGJhc2VTaGlmdCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJhc2VTaGlmdCkge1xuICAgICAgYmFzZS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcbiAgICAgIGJhc2Uuc3R5bGUudG9wID0gYmFzZVNoaWZ0ICsgXCJlbVwiO1xuICAgIH1cblxuICAgIHJldHVybiBiYXNlO1xuICB9XG59O1xuXG52YXIgb3BfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIG5vZGU7XG5cbiAgaWYgKGdyb3VwLnN5bWJvbCkge1xuICAgIC8vIFRoaXMgaXMgYSBzeW1ib2wuIEp1c3QgYWRkIHRoZSBzeW1ib2wuXG4gICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlX01hdGhOb2RlKFwibW9cIiwgW2J1aWxkTWF0aE1MX21ha2VUZXh0KGdyb3VwLm5hbWUsIGdyb3VwLm1vZGUpXSk7XG5cbiAgICBpZiAodXRpbHMuY29udGFpbnMobm9TdWNjZXNzb3IsIGdyb3VwLm5hbWUpKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImxhcmdlb3BcIiwgXCJmYWxzZVwiKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZ3JvdXAuYm9keSkge1xuICAgIC8vIFRoaXMgaXMgYW4gb3BlcmF0b3Igd2l0aCBjaGlsZHJlbi4gQWRkIHRoZW0uXG4gICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlX01hdGhOb2RlKFwibW9cIiwgYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMpKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIGlzIGEgdGV4dCBvcGVyYXRvci4gQWRkIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBmcm9tIHRoZVxuICAgIC8vIG9wZXJhdG9yJ3MgbmFtZS5cbiAgICBub2RlID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtaVwiLCBbbmV3IG1hdGhNTFRyZWVfVGV4dE5vZGUoZ3JvdXAubmFtZS5zbGljZSgxKSldKTsgLy8gQXBwZW5kIGFuIDxtbz4mQXBwbHlGdW5jdGlvbjs8L21vPi5cbiAgICAvLyByZWY6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9SRUMtTWF0aE1ML2NoYXAzXzIuaHRtbCNzZWMzLjIuNFxuXG4gICAgdmFyIG9wZXJhdG9yID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoXCJcXHUyMDYxXCIsIFwidGV4dFwiKV0pO1xuXG4gICAgaWYgKGdyb3VwLnBhcmVudElzU3VwU3ViKSB7XG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtb1wiLCBbbm9kZSwgb3BlcmF0b3JdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IG5ld0RvY3VtZW50RnJhZ21lbnQoW25vZGUsIG9wZXJhdG9yXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG52YXIgc2luZ2xlQ2hhckJpZ09wcyA9IHtcbiAgXCJcXHUyMjBGXCI6IFwiXFxcXHByb2RcIixcbiAgXCJcXHUyMjEwXCI6IFwiXFxcXGNvcHJvZFwiLFxuICBcIlxcdTIyMTFcIjogXCJcXFxcc3VtXCIsXG4gIFwiXFx1MjJDMFwiOiBcIlxcXFxiaWd3ZWRnZVwiLFxuICBcIlxcdTIyQzFcIjogXCJcXFxcYmlndmVlXCIsXG4gIFwiXFx1MjJDMlwiOiBcIlxcXFxiaWdjYXBcIixcbiAgXCJcXHUyMkMzXCI6IFwiXFxcXGJpZ2N1cFwiLFxuICBcIlxcdTJBMDBcIjogXCJcXFxcYmlnb2RvdFwiLFxuICBcIlxcdTJBMDFcIjogXCJcXFxcYmlnb3BsdXNcIixcbiAgXCJcXHUyQTAyXCI6IFwiXFxcXGJpZ290aW1lc1wiLFxuICBcIlxcdTJBMDRcIjogXCJcXFxcYmlndXBsdXNcIixcbiAgXCJcXHUyQTA2XCI6IFwiXFxcXGJpZ3NxY3VwXCJcbn07XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BcIixcbiAgbmFtZXM6IFtcIlxcXFxjb3Byb2RcIiwgXCJcXFxcYmlndmVlXCIsIFwiXFxcXGJpZ3dlZGdlXCIsIFwiXFxcXGJpZ3VwbHVzXCIsIFwiXFxcXGJpZ2NhcFwiLCBcIlxcXFxiaWdjdXBcIiwgXCJcXFxcaW50b3BcIiwgXCJcXFxccHJvZFwiLCBcIlxcXFxzdW1cIiwgXCJcXFxcYmlnb3RpbWVzXCIsIFwiXFxcXGJpZ29wbHVzXCIsIFwiXFxcXGJpZ29kb3RcIiwgXCJcXFxcYmlnc3FjdXBcIiwgXCJcXFxcc21hbGxpbnRcIiwgXCJcXHUyMjBGXCIsIFwiXFx1MjIxMFwiLCBcIlxcdTIyMTFcIiwgXCJcXHUyMkMwXCIsIFwiXFx1MjJDMVwiLCBcIlxcdTIyQzJcIiwgXCJcXHUyMkMzXCIsIFwiXFx1MkEwMFwiLCBcIlxcdTJBMDFcIiwgXCJcXHUyQTAyXCIsIFwiXFx1MkEwNFwiLCBcIlxcdTJBMDZcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgZk5hbWUgPSBmdW5jTmFtZTtcblxuICAgIGlmIChmTmFtZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGZOYW1lID0gc2luZ2xlQ2hhckJpZ09wc1tmTmFtZV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiB0cnVlLFxuICAgICAgcGFyZW50SXNTdXBTdWI6IGZhbHNlLFxuICAgICAgc3ltYm9sOiB0cnVlLFxuICAgICAgbmFtZTogZk5hbWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogb3BfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IG9wX21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBOb3RlOiBjYWxsaW5nIGRlZmluZUZ1bmN0aW9uIHdpdGggYSB0eXBlIHRoYXQncyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBvbmx5XG4vLyB3b3JrcyBiZWNhdXNlIHRoZSBzYW1lIGh0bWxCdWlsZGVyIGFuZCBtYXRobWxCdWlsZGVyIGFyZSBiZWluZyB1c2VkLlxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BcIixcbiAgbmFtZXM6IFtcIlxcXFxtYXRob3BcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZSxcbiAgICAgIHN5bWJvbDogZmFsc2UsXG4gICAgICBib2R5OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChib2R5KVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BfbWF0aG1sQnVpbGRlclxufSk7IC8vIFRoZXJlIGFyZSAyIGZsYWdzIGZvciBvcGVyYXRvcnM7IHdoZXRoZXIgdGhleSBwcm9kdWNlIGxpbWl0cyBpblxuLy8gZGlzcGxheXN0eWxlLCBhbmQgd2hldGhlciB0aGV5IGFyZSBzeW1ib2xzIGFuZCBzaG91bGQgZ3JvdyBpblxuLy8gZGlzcGxheXN0eWxlLiBUaGVzZSBmb3VyIGdyb3VwcyBjb3ZlciB0aGUgZm91ciBwb3NzaWJsZSBjaG9pY2VzLlxuXG52YXIgc2luZ2xlQ2hhckludGVncmFscyA9IHtcbiAgXCJcXHUyMjJCXCI6IFwiXFxcXGludFwiLFxuICBcIlxcdTIyMkNcIjogXCJcXFxcaWludFwiLFxuICBcIlxcdTIyMkRcIjogXCJcXFxcaWlpbnRcIixcbiAgXCJcXHUyMjJFXCI6IFwiXFxcXG9pbnRcIixcbiAgXCJcXHUyMjJGXCI6IFwiXFxcXG9paW50XCIsXG4gIFwiXFx1MjIzMFwiOiBcIlxcXFxvaWlpbnRcIlxufTsgLy8gTm8gbGltaXRzLCBub3Qgc3ltYm9sc1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BcIixcbiAgbmFtZXM6IFtcIlxcXFxhcmNzaW5cIiwgXCJcXFxcYXJjY29zXCIsIFwiXFxcXGFyY3RhblwiLCBcIlxcXFxhcmN0Z1wiLCBcIlxcXFxhcmNjdGdcIiwgXCJcXFxcYXJnXCIsIFwiXFxcXGNoXCIsIFwiXFxcXGNvc1wiLCBcIlxcXFxjb3NlY1wiLCBcIlxcXFxjb3NoXCIsIFwiXFxcXGNvdFwiLCBcIlxcXFxjb3RnXCIsIFwiXFxcXGNvdGhcIiwgXCJcXFxcY3NjXCIsIFwiXFxcXGN0Z1wiLCBcIlxcXFxjdGhcIiwgXCJcXFxcZGVnXCIsIFwiXFxcXGRpbVwiLCBcIlxcXFxleHBcIiwgXCJcXFxcaG9tXCIsIFwiXFxcXGtlclwiLCBcIlxcXFxsZ1wiLCBcIlxcXFxsblwiLCBcIlxcXFxsb2dcIiwgXCJcXFxcc2VjXCIsIFwiXFxcXHNpblwiLCBcIlxcXFxzaW5oXCIsIFwiXFxcXHNoXCIsIFwiXFxcXHRhblwiLCBcIlxcXFx0YW5oXCIsIFwiXFxcXHRnXCIsIFwiXFxcXHRoXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMy5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjMuZnVuY05hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZSxcbiAgICAgIHN5bWJvbDogZmFsc2UsXG4gICAgICBuYW1lOiBmdW5jTmFtZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BfbWF0aG1sQnVpbGRlclxufSk7IC8vIExpbWl0cywgbm90IHN5bWJvbHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm9wXCIsXG4gIG5hbWVzOiBbXCJcXFxcZGV0XCIsIFwiXFxcXGdjZFwiLCBcIlxcXFxpbmZcIiwgXCJcXFxcbGltXCIsIFwiXFxcXG1heFwiLCBcIlxcXFxtaW5cIiwgXCJcXFxcUHJcIiwgXCJcXFxcc3VwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmNCkge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmNC5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjQuZnVuY05hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiB0cnVlLFxuICAgICAgcGFyZW50SXNTdXBTdWI6IGZhbHNlLFxuICAgICAgc3ltYm9sOiBmYWxzZSxcbiAgICAgIG5hbWU6IGZ1bmNOYW1lXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IG9wX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBvcF9tYXRobWxCdWlsZGVyXG59KTsgLy8gTm8gbGltaXRzLCBzeW1ib2xzXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJvcFwiLFxuICBuYW1lczogW1wiXFxcXGludFwiLCBcIlxcXFxpaW50XCIsIFwiXFxcXGlpaW50XCIsIFwiXFxcXG9pbnRcIiwgXCJcXFxcb2lpbnRcIiwgXCJcXFxcb2lpaW50XCIsIFwiXFx1MjIyQlwiLCBcIlxcdTIyMkNcIiwgXCJcXHUyMjJEXCIsIFwiXFx1MjIyRVwiLCBcIlxcdTIyMkZcIiwgXCJcXHUyMjMwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmNSkge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmNS5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjUuZnVuY05hbWU7XG4gICAgdmFyIGZOYW1lID0gZnVuY05hbWU7XG5cbiAgICBpZiAoZk5hbWUubGVuZ3RoID09PSAxKSB7XG4gICAgICBmTmFtZSA9IHNpbmdsZUNoYXJJbnRlZ3JhbHNbZk5hbWVdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm9wXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxpbWl0czogZmFsc2UsXG4gICAgICBwYXJlbnRJc1N1cFN1YjogZmFsc2UsXG4gICAgICBzeW1ib2w6IHRydWUsXG4gICAgICBuYW1lOiBmTmFtZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvb3BlcmF0b3JuYW1lLmpzXG5cblxuXG5cblxuXG5cblxuLy8gTk9URTogVW5saWtlIG1vc3QgYGh0bWxCdWlsZGVyYHMsIHRoaXMgb25lIGhhbmRsZXMgbm90IG9ubHlcbi8vIFwib3BlcmF0b3JuYW1lXCIsIGJ1dCBhbHNvICBcInN1cHN1YlwiIHNpbmNlIFxcb3BlcmF0b3JuYW1lKiBjYW5cbnZhciBvcGVyYXRvcm5hbWVfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncnAsIG9wdGlvbnMpIHtcbiAgLy8gT3BlcmF0b3JzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIHBnLiA0NDMtNDQ0LCBydWxlIDEzKGEpLlxuICB2YXIgc3VwR3JvdXA7XG4gIHZhciBzdWJHcm91cDtcbiAgdmFyIGhhc0xpbWl0cyA9IGZhbHNlO1xuICB2YXIgZ3JvdXA7XG4gIHZhciBzdXBTdWIgPSBjaGVja05vZGVUeXBlKGdycCwgXCJzdXBzdWJcIik7XG5cbiAgaWYgKHN1cFN1Yikge1xuICAgIC8vIElmIHdlIGhhdmUgbGltaXRzLCBzdXBzdWIgd2lsbCBwYXNzIHVzIGl0cyBncm91cCB0byBoYW5kbGUuIFB1bGxcbiAgICAvLyBvdXQgdGhlIHN1cGVyc2NyaXB0IGFuZCBzdWJzY3JpcHQgYW5kIHNldCB0aGUgZ3JvdXAgdG8gdGhlIG9wIGluXG4gICAgLy8gaXRzIGJhc2UuXG4gICAgc3VwR3JvdXAgPSBzdXBTdWIuc3VwO1xuICAgIHN1Ykdyb3VwID0gc3VwU3ViLnN1YjtcbiAgICBncm91cCA9IGFzc2VydE5vZGVUeXBlKHN1cFN1Yi5iYXNlLCBcIm9wZXJhdG9ybmFtZVwiKTtcbiAgICBoYXNMaW1pdHMgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcIm9wZXJhdG9ybmFtZVwiKTtcbiAgfVxuXG4gIHZhciBiYXNlO1xuXG4gIGlmIChncm91cC5ib2R5Lmxlbmd0aCA+IDApIHtcbiAgICB2YXIgYm9keSA9IGdyb3VwLmJvZHkubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgLy8gJEZsb3dGaXhNZTogQ2hlY2sgaWYgdGhlIG5vZGUgaGFzIGEgc3RyaW5nIGB0ZXh0YCBwcm9wZXJ0eS5cbiAgICAgIHZhciBjaGlsZFRleHQgPSBjaGlsZC50ZXh0O1xuXG4gICAgICBpZiAodHlwZW9mIGNoaWxkVGV4dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICAgIG1vZGU6IGNoaWxkLm1vZGUsXG4gICAgICAgICAgdGV4dDogY2hpbGRUZXh0XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICB9XG4gICAgfSk7IC8vIENvbnNvbGlkYXRlIGZ1bmN0aW9uIG5hbWVzIGludG8gc3ltYm9sIGNoYXJhY3RlcnMuXG5cbiAgICB2YXIgZXhwcmVzc2lvbiA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oYm9keSwgb3B0aW9ucy53aXRoRm9udChcIm1hdGhybVwiKSwgdHJ1ZSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb24ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IGV4cHJlc3Npb25baV07XG5cbiAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSkge1xuICAgICAgICAvLyBQZXIgYW1zb3BuIHBhY2thZ2UsXG4gICAgICAgIC8vIGNoYW5nZSBtaW51cyB0byBoeXBoZW4gYW5kIFxcYXN0IHRvIGFzdGVyaXNrXG4gICAgICAgIGNoaWxkLnRleHQgPSBjaGlsZC50ZXh0LnJlcGxhY2UoL1xcdTIyMTIvLCBcIi1cIikucmVwbGFjZSgvXFx1MjIxNy8sIFwiKlwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCJdLCBleHByZXNzaW9uLCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCJdLCBbXSwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAoaGFzTGltaXRzKSB7XG4gICAgcmV0dXJuIGFzc2VtYmxlU3VwU3ViX2Fzc2VtYmxlU3VwU3ViKGJhc2UsIHN1cEdyb3VwLCBzdWJHcm91cCwgb3B0aW9ucywgb3B0aW9ucy5zdHlsZSwgMCwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cbn07XG5cbnZhciBvcGVyYXRvcm5hbWVfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgLy8gVGhlIHN0ZXBzIHRha2VuIGhlcmUgYXJlIHNpbWlsYXIgdG8gdGhlIGh0bWwgdmVyc2lvbi5cbiAgdmFyIGV4cHJlc3Npb24gPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucy53aXRoRm9udChcIm1hdGhybVwiKSk7IC8vIElzIGV4cHJlc3Npb24gYSBzdHJpbmcgb3IgaGFzIGl0IHNvbWV0aGluZyBsaWtlIGEgZnJhY3Rpb24/XG5cbiAgdmFyIGlzQWxsU3RyaW5nID0gdHJ1ZTsgLy8gZGVmYXVsdFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlID0gZXhwcmVzc2lvbltpXTtcblxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgbWF0aE1MVHJlZS5TcGFjZU5vZGUpIHsvLyBEbyBub3RoaW5nXG4gICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgbWF0aE1MVHJlZS5NYXRoTm9kZSkge1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIm1pXCI6XG4gICAgICAgIGNhc2UgXCJtblwiOlxuICAgICAgICBjYXNlIFwibXNcIjpcbiAgICAgICAgY2FzZSBcIm1zcGFjZVwiOlxuICAgICAgICBjYXNlIFwibXRleHRcIjpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gRG8gbm90aGluZyB5ZXQuXG5cbiAgICAgICAgY2FzZSBcIm1vXCI6XG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gbm9kZS5jaGlsZHJlblswXTtcblxuICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGNoaWxkIGluc3RhbmNlb2YgbWF0aE1MVHJlZS5UZXh0Tm9kZSkge1xuICAgICAgICAgICAgICBjaGlsZC50ZXh0ID0gY2hpbGQudGV4dC5yZXBsYWNlKC9cXHUyMjEyLywgXCItXCIpLnJlcGxhY2UoL1xcdTIyMTcvLCBcIipcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpc0FsbFN0cmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpc0FsbFN0cmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpc0FsbFN0cmluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc0FsbFN0cmluZykge1xuICAgIC8vIFdyaXRlIGEgc2luZ2xlIFRleHROb2RlIGluc3RlYWQgb2YgbXVsdGlwbGUgbmVzdGVkIHRhZ3MuXG4gICAgdmFyIHdvcmQgPSBleHByZXNzaW9uLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudG9UZXh0KCk7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgICBleHByZXNzaW9uID0gW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKHdvcmQpXTtcbiAgfVxuXG4gIHZhciBpZGVudGlmaWVyID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtaVwiLCBleHByZXNzaW9uKTtcbiAgaWRlbnRpZmllci5zZXRBdHRyaWJ1dGUoXCJtYXRodmFyaWFudFwiLCBcIm5vcm1hbFwiKTsgLy8gXFx1MjA2MSBpcyB0aGUgc2FtZSBhcyAmQXBwbHlGdW5jdGlvbjtcbiAgLy8gcmVmOiBodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2NoYXJzZXRzL3JlZl9odG1sX2VudGl0aWVzX2EuYXNwXG5cbiAgdmFyIG9wZXJhdG9yID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoXCJcXHUyMDYxXCIsIFwidGV4dFwiKV0pO1xuXG4gIGlmIChncm91cC5wYXJlbnRJc1N1cFN1Yikge1xuICAgIHJldHVybiBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtpZGVudGlmaWVyLCBvcGVyYXRvcl0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBtYXRoTUxUcmVlLm5ld0RvY3VtZW50RnJhZ21lbnQoW2lkZW50aWZpZXIsIG9wZXJhdG9yXSk7XG4gIH1cbn07IC8vIFxcb3BlcmF0b3JuYW1lXG4vLyBhbXNvcG4uZHR4OiBcXG1hdGhvcHsjMVxca2VyblxcekBcXG9wZXJhdG9yQGZvbnQjM31cXG5ld21jb2Rlc0BcblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BlcmF0b3JuYW1lXCIsXG4gIG5hbWVzOiBbXCJcXFxcb3BlcmF0b3JuYW1lXCIsIFwiXFxcXG9wZXJhdG9ybmFtZSpcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BlcmF0b3JuYW1lXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpLFxuICAgICAgYWx3YXlzSGFuZGxlU3VwU3ViOiBmdW5jTmFtZSA9PT0gXCJcXFxcb3BlcmF0b3JuYW1lKlwiLFxuICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcGVyYXRvcm5hbWVfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IG9wZXJhdG9ybmFtZV9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9vcmRncm91cC5qc1xuXG5cblxuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJvcmRncm91cFwiLFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBpZiAoZ3JvdXAuc2VtaXNpbXBsZSkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VGcmFnbWVudChidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMsIGZhbHNlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucywgdHJ1ZSksIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkRXhwcmVzc2lvblJvdyhncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvb3ZlcmxpbmUuanNcblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3ZlcmxpbmVcIixcbiAgbmFtZXM6IFtcIlxcXFxvdmVybGluZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3ZlcmxpbmVcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIE92ZXJsaW5lcyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZyA0NDMsIFJ1bGUgOS5cbiAgICAvLyBCdWlsZCB0aGUgaW5uZXIgZ3JvdXAgaW4gdGhlIGNyYW1wZWQgc3R5bGUuXG4gICAgdmFyIGlubmVyR3JvdXAgPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zLmhhdmluZ0NyYW1wZWRTdHlsZSgpKTsgLy8gQ3JlYXRlIHRoZSBsaW5lIGFib3ZlIHRoZSBib2R5XG5cbiAgICB2YXIgbGluZSA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcIm92ZXJsaW5lLWxpbmVcIiwgb3B0aW9ucyk7IC8vIEdlbmVyYXRlIHRoZSB2bGlzdCwgd2l0aCB0aGUgYXBwcm9wcmlhdGUga2VybnNcblxuICAgIHZhciBkZWZhdWx0UnVsZVRoaWNrbmVzcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWZhdWx0UnVsZVRoaWNrbmVzcztcbiAgICB2YXIgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW5uZXJHcm91cFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogMyAqIGRlZmF1bHRSdWxlVGhpY2tuZXNzXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBsaW5lXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBkZWZhdWx0UnVsZVRoaWNrbmVzc1xuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcIm92ZXJsaW5lXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBvcGVyYXRvciA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKFwiXFx1MjAzRVwiKV0pO1xuICAgIG9wZXJhdG9yLnNldEF0dHJpYnV0ZShcInN0cmV0Y2h5XCIsIFwidHJ1ZVwiKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW92ZXJcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyksIG9wZXJhdG9yXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhY2NlbnRcIiwgXCJ0cnVlXCIpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9waGFudG9tLmpzXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInBoYW50b21cIixcbiAgbmFtZXM6IFtcIlxcXFxwaGFudG9tXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInBoYW50b21cIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgZWxlbWVudHMgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMud2l0aFBoYW50b20oKSwgZmFsc2UpOyAvLyBcXHBoYW50b20gaXNuJ3Qgc3VwcG9zZWQgdG8gYWZmZWN0IHRoZSBlbGVtZW50cyBpdCBjb250YWlucy5cbiAgICAvLyBTZWUgXCJjb2xvclwiIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUZyYWdtZW50KGVsZW1lbnRzKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGhhbnRvbVwiLCBpbm5lcik7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImhwaGFudG9tXCIsXG4gIG5hbWVzOiBbXCJcXFxcaHBoYW50b21cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJocGhhbnRvbVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXSwgW2J1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMud2l0aFBoYW50b20oKSldKTtcbiAgICBub2RlLmhlaWdodCA9IDA7XG4gICAgbm9kZS5kZXB0aCA9IDA7XG5cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG5vZGUuY2hpbGRyZW5baV0uaGVpZ2h0ID0gMDtcbiAgICAgICAgbm9kZS5jaGlsZHJlbltpXS5kZXB0aCA9IDA7XG4gICAgICB9XG4gICAgfSAvLyBTZWUgc21hc2ggZm9yIGNvbW1lbnQgcmU6IHVzZSBvZiBtYWtlVkxpc3RcblxuXG4gICAgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBub2RlXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyBGb3Igc3BhY2luZywgVGVYIHRyZWF0cyBcXHNtYXNoIGFzIGEgbWF0aCBncm91cCAoc2FtZSBzcGFjaW5nIGFzIG9yZCkuXG5cbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXSwgW25vZGVdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChncm91cC5ib2R5KSwgb3B0aW9ucyk7XG4gICAgdmFyIHBoYW50b20gPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1waGFudG9tXCIsIGlubmVyKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBhZGRlZFwiLCBbcGhhbnRvbV0pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIFwiMHB4XCIpO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZGVwdGhcIiwgXCIwcHhcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInZwaGFudG9tXCIsXG4gIG5hbWVzOiBbXCJcXFxcdnBoYW50b21cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjMsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjMucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ2cGhhbnRvbVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiaW5uZXJcIl0sIFtidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zLndpdGhQaGFudG9tKCkpXSk7XG4gICAgdmFyIGZpeCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImZpeFwiXSwgW10pO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwicmxhcFwiXSwgW2lubmVyLCBmaXhdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChncm91cC5ib2R5KSwgb3B0aW9ucyk7XG4gICAgdmFyIHBoYW50b20gPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1waGFudG9tXCIsIGlubmVyKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBhZGRlZFwiLCBbcGhhbnRvbV0pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgXCIwcHhcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3JhaXNlYm94LmpzXG5cblxuXG5cblxuXG4gLy8gQm94IG1hbmlwdWxhdGlvblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwicmFpc2Vib3hcIixcbiAgbmFtZXM6IFtcIlxcXFxyYWlzZWJveFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyLFxuICAgIGFyZ1R5cGVzOiBbXCJzaXplXCIsIFwiaGJveFwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYW1vdW50ID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJzaXplXCIpLnZhbHVlO1xuICAgIHZhciBib2R5ID0gYXJnc1sxXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJyYWlzZWJveFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBkeTogYW1vdW50LFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBib2R5ID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyk7XG4gICAgdmFyIGR5ID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5keSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgIHBvc2l0aW9uRGF0YTogLWR5LFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBib2R5XG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcbiAgICB2YXIgZHkgPSBncm91cC5keS5udW1iZXIgKyBncm91cC5keS51bml0O1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwidm9mZnNldFwiLCBkeSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3J1bGUuanNcblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwicnVsZVwiLFxuICBuYW1lczogW1wiXFxcXHJ1bGVcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIiwgXCJzaXplXCIsIFwic2l6ZVwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIHNoaWZ0ID0gb3B0QXJnc1swXTtcbiAgICB2YXIgd2lkdGggPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcInNpemVcIik7XG4gICAgdmFyIGhlaWdodCA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMV0sIFwic2l6ZVwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJydWxlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIHNoaWZ0OiBzaGlmdCAmJiBhc3NlcnROb2RlVHlwZShzaGlmdCwgXCJzaXplXCIpLnZhbHVlLFxuICAgICAgd2lkdGg6IHdpZHRoLnZhbHVlLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQudmFsdWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBNYWtlIGFuIGVtcHR5IHNwYW4gZm9yIHRoZSBydWxlXG4gICAgdmFyIHJ1bGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwicnVsZVwiXSwgW10sIG9wdGlvbnMpOyAvLyBDYWxjdWxhdGUgdGhlIHNoaWZ0LCB3aWR0aCwgYW5kIGhlaWdodCBvZiB0aGUgcnVsZSwgYW5kIGFjY291bnQgZm9yIHVuaXRzXG5cbiAgICB2YXIgd2lkdGggPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLndpZHRoLCBvcHRpb25zKTtcbiAgICB2YXIgaGVpZ2h0ID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5oZWlnaHQsIG9wdGlvbnMpO1xuICAgIHZhciBzaGlmdCA9IGdyb3VwLnNoaWZ0ID8gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5zaGlmdCwgb3B0aW9ucykgOiAwOyAvLyBTdHlsZSB0aGUgcnVsZSB0byB0aGUgcmlnaHQgc2l6ZVxuXG4gICAgcnVsZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoID0gd2lkdGggKyBcImVtXCI7XG4gICAgcnVsZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCA9IGhlaWdodCArIFwiZW1cIjtcbiAgICBydWxlLnN0eWxlLmJvdHRvbSA9IHNoaWZ0ICsgXCJlbVwiOyAvLyBSZWNvcmQgdGhlIGhlaWdodCBhbmQgd2lkdGhcblxuICAgIHJ1bGUud2lkdGggPSB3aWR0aDtcbiAgICBydWxlLmhlaWdodCA9IGhlaWdodCArIHNoaWZ0O1xuICAgIHJ1bGUuZGVwdGggPSAtc2hpZnQ7IC8vIEZvbnQgc2l6ZSBpcyB0aGUgbnVtYmVyIGxhcmdlIGVub3VnaCB0aGF0IHRoZSBicm93c2VyIHdpbGxcbiAgICAvLyByZXNlcnZlIGF0IGxlYXN0IGBhYnNIZWlnaHRgIHNwYWNlIGFib3ZlIHRoZSBiYXNlbGluZS5cbiAgICAvLyBUaGUgMS4xMjUgZmFjdG9yIHdhcyBlbXBpcmljYWxseSBkZXRlcm1pbmVkXG5cbiAgICBydWxlLm1heEZvbnRTaXplID0gaGVpZ2h0ICogMS4xMjUgKiBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIHJldHVybiBydWxlO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC53aWR0aCwgb3B0aW9ucyk7XG4gICAgdmFyIGhlaWdodCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuaGVpZ2h0LCBvcHRpb25zKTtcbiAgICB2YXIgc2hpZnQgPSBncm91cC5zaGlmdCA/IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuc2hpZnQsIG9wdGlvbnMpIDogMDtcbiAgICB2YXIgY29sb3IgPSBvcHRpb25zLmNvbG9yICYmIG9wdGlvbnMuZ2V0Q29sb3IoKSB8fCBcImJsYWNrXCI7XG4gICAgdmFyIHJ1bGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1zcGFjZVwiKTtcbiAgICBydWxlLnNldEF0dHJpYnV0ZShcIm1hdGhiYWNrZ3JvdW5kXCIsIGNvbG9yKTtcbiAgICBydWxlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIHdpZHRoICsgXCJlbVwiKTtcbiAgICBydWxlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBoZWlnaHQgKyBcImVtXCIpO1xuICAgIHZhciB3cmFwcGVyID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGFkZGVkXCIsIFtydWxlXSk7XG5cbiAgICBpZiAoc2hpZnQgPj0gMCkge1xuICAgICAgd3JhcHBlci5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgXCIrXCIgKyBzaGlmdCArIFwiZW1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIHNoaWZ0ICsgXCJlbVwiKTtcbiAgICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKFwiZGVwdGhcIiwgXCIrXCIgKyAtc2hpZnQgKyBcImVtXCIpO1xuICAgIH1cblxuICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKFwidm9mZnNldFwiLCBzaGlmdCArIFwiZW1cIik7XG4gICAgcmV0dXJuIHdyYXBwZXI7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3NpemluZy5qc1xuXG5cblxuXG5cbmZ1bmN0aW9uIHNpemluZ0dyb3VwKHZhbHVlLCBvcHRpb25zLCBiYXNlT3B0aW9ucykge1xuICB2YXIgaW5uZXIgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKHZhbHVlLCBvcHRpb25zLCBmYWxzZSk7XG4gIHZhciBtdWx0aXBsaWVyID0gb3B0aW9ucy5zaXplTXVsdGlwbGllciAvIGJhc2VPcHRpb25zLnNpemVNdWx0aXBsaWVyOyAvLyBBZGQgc2l6ZS1yZXNldHRpbmcgY2xhc3NlcyB0byB0aGUgaW5uZXIgbGlzdCBhbmQgc2V0IG1heEZvbnRTaXplXG4gIC8vIG1hbnVhbGx5LiBIYW5kbGUgbmVzdGVkIHNpemUgY2hhbmdlcy5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGlubmVyLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBvcyA9IGlubmVyW2ldLmNsYXNzZXMuaW5kZXhPZihcInNpemluZ1wiKTtcblxuICAgIGlmIChwb3MgPCAwKSB7XG4gICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShpbm5lcltpXS5jbGFzc2VzLCBvcHRpb25zLnNpemluZ0NsYXNzZXMoYmFzZU9wdGlvbnMpKTtcbiAgICB9IGVsc2UgaWYgKGlubmVyW2ldLmNsYXNzZXNbcG9zICsgMV0gPT09IFwicmVzZXQtc2l6ZVwiICsgb3B0aW9ucy5zaXplKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgbmVzdGVkIHNpemUgY2hhbmdlOiBlLmcuLCBpbm5lcltpXSBpcyB0aGUgXCJiXCIgaW5cbiAgICAgIC8vIGBcXEh1Z2UgYSBcXHNtYWxsIGJgLiBPdmVycmlkZSB0aGUgb2xkIHNpemUgKHRoZSBgcmVzZXQtYCBjbGFzcylcbiAgICAgIC8vIGJ1dCBub3QgdGhlIG5ldyBzaXplLlxuICAgICAgaW5uZXJbaV0uY2xhc3Nlc1twb3MgKyAxXSA9IFwicmVzZXQtc2l6ZVwiICsgYmFzZU9wdGlvbnMuc2l6ZTtcbiAgICB9XG5cbiAgICBpbm5lcltpXS5oZWlnaHQgKj0gbXVsdGlwbGllcjtcbiAgICBpbm5lcltpXS5kZXB0aCAqPSBtdWx0aXBsaWVyO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VGcmFnbWVudChpbm5lcik7XG59XG52YXIgc2l6ZUZ1bmNzID0gW1wiXFxcXHRpbnlcIiwgXCJcXFxcc2l4cHRzaXplXCIsIFwiXFxcXHNjcmlwdHNpemVcIiwgXCJcXFxcZm9vdG5vdGVzaXplXCIsIFwiXFxcXHNtYWxsXCIsIFwiXFxcXG5vcm1hbHNpemVcIiwgXCJcXFxcbGFyZ2VcIiwgXCJcXFxcTGFyZ2VcIiwgXCJcXFxcTEFSR0VcIiwgXCJcXFxcaHVnZVwiLCBcIlxcXFxIdWdlXCJdO1xudmFyIHNpemluZ19odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIC8vIEhhbmRsZSBzaXppbmcgb3BlcmF0b3JzIGxpa2UgXFxIdWdlLiBSZWFsIFRlWCBkb2Vzbid0IGFjdHVhbGx5IGFsbG93XG4gIC8vIHRoZXNlIGZ1bmN0aW9ucyBpbnNpZGUgb2YgbWF0aCBleHByZXNzaW9ucywgc28gd2UgZG8gc29tZSBzcGVjaWFsXG4gIC8vIGhhbmRsaW5nLlxuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU2l6ZShncm91cC5zaXplKTtcbiAgcmV0dXJuIHNpemluZ0dyb3VwKGdyb3VwLmJvZHksIG5ld09wdGlvbnMsIG9wdGlvbnMpO1xufTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJzaXppbmdcIixcbiAgbmFtZXM6IHNpemVGdW5jcyxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIGJyZWFrT25Ub2tlblRleHQgPSBfcmVmLmJyZWFrT25Ub2tlblRleHQsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZSxcbiAgICAgICAgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKGZhbHNlLCBicmVha09uVG9rZW5UZXh0KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzaXppbmdcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHNpemUgdG8gdXNlIGJhc2VkIG9uIHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyBhYm92ZVxuICAgICAgc2l6ZTogc2l6ZUZ1bmNzLmluZGV4T2YoZnVuY05hbWUpICsgMSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogc2l6aW5nX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1NpemUoZ3JvdXAuc2l6ZSk7XG4gICAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG5ld09wdGlvbnMpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3R5bGVcIiwgaW5uZXIpOyAvLyBUT0RPKGVtaWx5KTogVGhpcyBkb2Vzbid0IHByb2R1Y2UgdGhlIGNvcnJlY3Qgc2l6ZSBmb3IgbmVzdGVkIHNpemVcbiAgICAvLyBjaGFuZ2VzLCBiZWNhdXNlIHdlIGRvbid0IGtlZXAgc3RhdGUgb2Ygd2hhdCBzdHlsZSB3ZSdyZSBjdXJyZW50bHlcbiAgICAvLyBpbiwgc28gd2UgY2FuJ3QgcmVzZXQgdGhlIHNpemUgdG8gbm9ybWFsIGJlZm9yZSBjaGFuZ2luZyBpdC4gIE5vd1xuICAgIC8vIHRoYXQgd2UncmUgcGFzc2luZyBhbiBvcHRpb25zIHBhcmFtZXRlciB3ZSBzaG91bGQgYmUgYWJsZSB0byBmaXhcbiAgICAvLyB0aGlzLlxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRoc2l6ZVwiLCBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyICsgXCJlbVwiKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvc21hc2guanNcbi8vIHNtYXNoLCB3aXRoIG9wdGlvbmFsIFt0Yl0sIGFzIGluIEFNU1xuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInNtYXNoXCIsXG4gIG5hbWVzOiBbXCJcXFxcc21hc2hcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIHNtYXNoSGVpZ2h0ID0gZmFsc2U7XG4gICAgdmFyIHNtYXNoRGVwdGggPSBmYWxzZTtcbiAgICB2YXIgdGJBcmcgPSBvcHRBcmdzWzBdICYmIGFzc2VydE5vZGVUeXBlKG9wdEFyZ3NbMF0sIFwib3JkZ3JvdXBcIik7XG5cbiAgICBpZiAodGJBcmcpIHtcbiAgICAgIC8vIE9wdGlvbmFsIFt0Yl0gYXJndW1lbnQgaXMgZW5nYWdlZC5cbiAgICAgIC8vIHJlZjogYW1zbWF0aDogXFxyZW5ld2NvbW1hbmR7XFxzbWFzaH1bMV1bdGJdeyVcbiAgICAgIC8vICAgICAgICAgICAgICAgZGVmXFxtYkB0e1xcaHR9XFxkZWZcXG1iQGJ7XFxkcH1cXGRlZlxcbWJAdGJ7XFxodFxcekBcXHpAXFxkcH0lXG4gICAgICB2YXIgbGV0dGVyID0gXCJcIjtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YkFyZy5ib2R5Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBub2RlID0gdGJBcmcuYm9keVtpXTsgLy8gJEZsb3dGaXhNZTogTm90IGV2ZXJ5IG5vZGUgdHlwZSBoYXMgYSBgdGV4dGAgcHJvcGVydHkuXG5cbiAgICAgICAgbGV0dGVyID0gbm9kZS50ZXh0O1xuXG4gICAgICAgIGlmIChsZXR0ZXIgPT09IFwidFwiKSB7XG4gICAgICAgICAgc21hc2hIZWlnaHQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGxldHRlciA9PT0gXCJiXCIpIHtcbiAgICAgICAgICBzbWFzaERlcHRoID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzbWFzaEhlaWdodCA9IGZhbHNlO1xuICAgICAgICAgIHNtYXNoRGVwdGggPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzbWFzaEhlaWdodCA9IHRydWU7XG4gICAgICBzbWFzaERlcHRoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwic21hc2hcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYm9keSxcbiAgICAgIHNtYXNoSGVpZ2h0OiBzbWFzaEhlaWdodCxcbiAgICAgIHNtYXNoRGVwdGg6IHNtYXNoRGVwdGhcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtdLCBbYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICAgIGlmICghZ3JvdXAuc21hc2hIZWlnaHQgJiYgIWdyb3VwLnNtYXNoRGVwdGgpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIGlmIChncm91cC5zbWFzaEhlaWdodCkge1xuICAgICAgbm9kZS5oZWlnaHQgPSAwOyAvLyBJbiBvcmRlciB0byBpbmZsdWVuY2UgbWFrZVZMaXN0LCB3ZSBoYXZlIHRvIHJlc2V0IHRoZSBjaGlsZHJlbi5cblxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbltpXS5oZWlnaHQgPSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnNtYXNoRGVwdGgpIHtcbiAgICAgIG5vZGUuZGVwdGggPSAwO1xuXG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICBub2RlLmNoaWxkcmVuW19pXS5kZXB0aCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIEF0IHRoaXMgcG9pbnQsIHdlJ3ZlIHJlc2V0IHRoZSBUZVgtbGlrZSBoZWlnaHQgYW5kIGRlcHRoIHZhbHVlcy5cbiAgICAvLyBCdXQgdGhlIHNwYW4gc3RpbGwgaGFzIGFuIEhUTUwgbGluZSBoZWlnaHQuXG4gICAgLy8gbWFrZVZMaXN0IGFwcGxpZXMgXCJkaXNwbGF5OiB0YWJsZS1jZWxsXCIsIHdoaWNoIHByZXZlbnRzIHRoZSBicm93c2VyXG4gICAgLy8gZnJvbSBhY3Rpbmcgb24gdGhhdCBsaW5lIGhlaWdodC4gU28gd2UnbGwgY2FsbCBtYWtlVkxpc3Qgbm93LlxuXG5cbiAgICB2YXIgc21hc2hlZE5vZGUgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogbm9kZVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTsgLy8gRm9yIHNwYWNpbmcsIFRlWCB0cmVhdHMgXFxocGhhbnRvbSBhcyBhIG1hdGggZ3JvdXAgKHNhbWUgc3BhY2luZyBhcyBvcmQpLlxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFtzbWFzaGVkTm9kZV0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICAgIGlmIChncm91cC5zbWFzaEhlaWdodCkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgXCIwcHhcIik7XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnNtYXNoRGVwdGgpIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZGVwdGhcIiwgXCIwcHhcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3NxcnQuanNcblxuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInNxcnRcIixcbiAgbmFtZXM6IFtcIlxcXFxzcXJ0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgbnVtT3B0aW9uYWxBcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgaW5kZXggPSBvcHRBcmdzWzBdO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzcXJ0XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGJvZHksXG4gICAgICBpbmRleDogaW5kZXhcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBTcXVhcmUgcm9vdHMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgcGcuIDQ0MywgUnVsZSAxMS5cbiAgICAvLyBGaXJzdCwgd2UgZG8gdGhlIHNhbWUgc3RlcHMgYXMgaW4gb3ZlcmxpbmUgdG8gYnVpbGQgdGhlIGlubmVyIGdyb3VwXG4gICAgLy8gYW5kIGxpbmVcbiAgICB2YXIgaW5uZXIgPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zLmhhdmluZ0NyYW1wZWRTdHlsZSgpKTtcblxuICAgIGlmIChpbm5lci5oZWlnaHQgPT09IDApIHtcbiAgICAgIC8vIFJlbmRlciBhIHNtYWxsIHN1cmQuXG4gICAgICBpbm5lci5oZWlnaHQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodDtcbiAgICB9IC8vIFNvbWUgZ3JvdXBzIGNhbiByZXR1cm4gZG9jdW1lbnQgZnJhZ21lbnRzLiAgSGFuZGxlIHRob3NlIGJ5IHdyYXBwaW5nXG4gICAgLy8gdGhlbSBpbiBhIHNwYW4uXG5cblxuICAgIGlubmVyID0gYnVpbGRDb21tb24ud3JhcEZyYWdtZW50KGlubmVyLCBvcHRpb25zKTsgLy8gQ2FsY3VsYXRlIHRoZSBtaW5pbXVtIHNpemUgZm9yIHRoZSBcXHN1cmQgZGVsaW1pdGVyXG5cbiAgICB2YXIgbWV0cmljcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKTtcbiAgICB2YXIgdGhldGEgPSBtZXRyaWNzLmRlZmF1bHRSdWxlVGhpY2tuZXNzO1xuICAgIHZhciBwaGkgPSB0aGV0YTtcblxuICAgIGlmIChvcHRpb25zLnN0eWxlLmlkIDwgc3JjX1N0eWxlLlRFWFQuaWQpIHtcbiAgICAgIHBoaSA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS54SGVpZ2h0O1xuICAgIH0gLy8gQ2FsY3VsYXRlIHRoZSBjbGVhcmFuY2UgYmV0d2VlbiB0aGUgYm9keSBhbmQgbGluZVxuXG5cbiAgICB2YXIgbGluZUNsZWFyYW5jZSA9IHRoZXRhICsgcGhpIC8gNDtcbiAgICB2YXIgbWluRGVsaW1pdGVySGVpZ2h0ID0gaW5uZXIuaGVpZ2h0ICsgaW5uZXIuZGVwdGggKyBsaW5lQ2xlYXJhbmNlICsgdGhldGE7IC8vIENyZWF0ZSBhIHNxcnQgU1ZHIG9mIHRoZSByZXF1aXJlZCBtaW5pbXVtIHNpemVcblxuICAgIHZhciBfZGVsaW1pdGVyJHNxcnRJbWFnZSA9IGRlbGltaXRlci5zcXJ0SW1hZ2UobWluRGVsaW1pdGVySGVpZ2h0LCBvcHRpb25zKSxcbiAgICAgICAgaW1nID0gX2RlbGltaXRlciRzcXJ0SW1hZ2Uuc3BhbixcbiAgICAgICAgcnVsZVdpZHRoID0gX2RlbGltaXRlciRzcXJ0SW1hZ2UucnVsZVdpZHRoLFxuICAgICAgICBhZHZhbmNlV2lkdGggPSBfZGVsaW1pdGVyJHNxcnRJbWFnZS5hZHZhbmNlV2lkdGg7XG5cbiAgICB2YXIgZGVsaW1EZXB0aCA9IGltZy5oZWlnaHQgLSBydWxlV2lkdGg7IC8vIEFkanVzdCB0aGUgY2xlYXJhbmNlIGJhc2VkIG9uIHRoZSBkZWxpbWl0ZXIgc2l6ZVxuXG4gICAgaWYgKGRlbGltRGVwdGggPiBpbm5lci5oZWlnaHQgKyBpbm5lci5kZXB0aCArIGxpbmVDbGVhcmFuY2UpIHtcbiAgICAgIGxpbmVDbGVhcmFuY2UgPSAobGluZUNsZWFyYW5jZSArIGRlbGltRGVwdGggLSBpbm5lci5oZWlnaHQgLSBpbm5lci5kZXB0aCkgLyAyO1xuICAgIH0gLy8gU2hpZnQgdGhlIHNxcnQgaW1hZ2VcblxuXG4gICAgdmFyIGltZ1NoaWZ0ID0gaW1nLmhlaWdodCAtIGlubmVyLmhlaWdodCAtIGxpbmVDbGVhcmFuY2UgLSBydWxlV2lkdGg7XG4gICAgaW5uZXIuc3R5bGUucGFkZGluZ0xlZnQgPSBhZHZhbmNlV2lkdGggKyBcImVtXCI7IC8vIE92ZXJsYXkgdGhlIGltYWdlIGFuZCB0aGUgYXJndW1lbnQuXG5cbiAgICB2YXIgYm9keSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lcixcbiAgICAgICAgd3JhcHBlckNsYXNzZXM6IFtcInN2Zy1hbGlnblwiXVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogLShpbm5lci5oZWlnaHQgKyBpbWdTaGlmdClcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGltZ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogcnVsZVdpZHRoXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFncm91cC5pbmRleCkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJzcXJ0XCJdLCBbYm9keV0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgdGhlIG9wdGlvbmFsIHJvb3QgaW5kZXhcbiAgICAgIC8vIFRoZSBpbmRleCBpcyBhbHdheXMgaW4gc2NyaXB0c2NyaXB0IHN0eWxlXG4gICAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoc3JjX1N0eWxlLlNDUklQVFNDUklQVCk7XG4gICAgICB2YXIgcm9vdG0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5pbmRleCwgbmV3T3B0aW9ucywgb3B0aW9ucyk7IC8vIFRoZSBhbW91bnQgdGhlIGluZGV4IGlzIHNoaWZ0ZWQgYnkuIFRoaXMgaXMgdGFrZW4gZnJvbSB0aGUgVGVYXG4gICAgICAvLyBzb3VyY2UsIGluIHRoZSBkZWZpbml0aW9uIG9mIGBcXHJAQHRgLlxuXG4gICAgICB2YXIgdG9TaGlmdCA9IDAuNiAqIChib2R5LmhlaWdodCAtIGJvZHkuZGVwdGgpOyAvLyBCdWlsZCBhIFZMaXN0IHdpdGggdGhlIHN1cGVyc2NyaXB0IHNoaWZ0ZWQgdXAgY29ycmVjdGx5XG5cbiAgICAgIHZhciByb290Vkxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiAtdG9TaGlmdCxcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogcm9vdG1cbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpOyAvLyBBZGQgYSBjbGFzcyBzdXJyb3VuZGluZyBpdCBzbyB3ZSBjYW4gYWRkIG9uIHRoZSBhcHByb3ByaWF0ZVxuICAgICAgLy8ga2VybmluZ1xuXG4gICAgICB2YXIgcm9vdFZMaXN0V3JhcCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcInJvb3RcIl0sIFtyb290Vkxpc3RdKTtcbiAgICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwic3FydFwiXSwgW3Jvb3RWTGlzdFdyYXAsIGJvZHldLCBvcHRpb25zKTtcbiAgICB9XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgYm9keSA9IGdyb3VwLmJvZHksXG4gICAgICAgIGluZGV4ID0gZ3JvdXAuaW5kZXg7XG4gICAgcmV0dXJuIGluZGV4ID8gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcm9vdFwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChib2R5LCBvcHRpb25zKSwgYnVpbGRNYXRoTUxfYnVpbGRHcm91cChpbmRleCwgb3B0aW9ucyldKSA6IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXNxcnRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoYm9keSwgb3B0aW9ucyldKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvc3R5bGluZy5qc1xuXG5cblxuXG5cbnZhciBzdHlsaW5nX3N0eWxlTWFwID0ge1xuICBcImRpc3BsYXlcIjogc3JjX1N0eWxlLkRJU1BMQVksXG4gIFwidGV4dFwiOiBzcmNfU3R5bGUuVEVYVCxcbiAgXCJzY3JpcHRcIjogc3JjX1N0eWxlLlNDUklQVCxcbiAgXCJzY3JpcHRzY3JpcHRcIjogc3JjX1N0eWxlLlNDUklQVFNDUklQVFxufTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJzdHlsaW5nXCIsXG4gIG5hbWVzOiBbXCJcXFxcZGlzcGxheXN0eWxlXCIsIFwiXFxcXHRleHRzdHlsZVwiLCBcIlxcXFxzY3JpcHRzdHlsZVwiLCBcIlxcXFxzY3JpcHRzY3JpcHRzdHlsZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIGJyZWFrT25Ub2tlblRleHQgPSBfcmVmLmJyZWFrT25Ub2tlblRleHQsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZSxcbiAgICAgICAgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgLy8gcGFyc2Ugb3V0IHRoZSBpbXBsaWNpdCBib2R5XG4gICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKHRydWUsIGJyZWFrT25Ub2tlblRleHQpOyAvLyBUT0RPOiBSZWZhY3RvciB0byBhdm9pZCBkdXBsaWNhdGluZyBzdHlsZU1hcCBpbiBtdWx0aXBsZSBwbGFjZXMgKGUuZy5cbiAgICAvLyBoZXJlIGFuZCBpbiBidWlsZEhUTUwgYW5kIGRlLWR1cGUgdGhlIGVudW1lcmF0aW9uIG9mIGFsbCB0aGUgc3R5bGVzKS5cbiAgICAvLyAkRmxvd0ZpeE1lOiBUaGUgbmFtZXMgYWJvdmUgZXhhY3RseSBtYXRjaCB0aGUgc3R5bGVzLlxuXG4gICAgdmFyIHN0eWxlID0gZnVuY05hbWUuc2xpY2UoMSwgZnVuY05hbWUubGVuZ3RoIC0gNSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwic3R5bGluZ1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgc3R5bGUgdG8gdXNlIGJ5IHB1bGxpbmcgb3V0IHRoZSBzdHlsZSBmcm9tXG4gICAgICAvLyB0aGUgZnVuY3Rpb24gbmFtZVxuICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIFN0eWxlIGNoYW5nZXMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgb24gcGcuIDQ0MiwgUnVsZSAzLlxuICAgIHZhciBuZXdTdHlsZSA9IHN0eWxpbmdfc3R5bGVNYXBbZ3JvdXAuc3R5bGVdO1xuICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShuZXdTdHlsZSkud2l0aEZvbnQoJycpO1xuICAgIHJldHVybiBzaXppbmdHcm91cChncm91cC5ib2R5LCBuZXdPcHRpb25zLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBzdHlsZSB3ZSdyZSBjaGFuZ2luZyB0by5cbiAgICB2YXIgbmV3U3R5bGUgPSBzdHlsaW5nX3N0eWxlTWFwW2dyb3VwLnN0eWxlXTtcbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUobmV3U3R5bGUpO1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBuZXdPcHRpb25zKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXN0eWxlXCIsIGlubmVyKTtcbiAgICB2YXIgc3R5bGVBdHRyaWJ1dGVzID0ge1xuICAgICAgXCJkaXNwbGF5XCI6IFtcIjBcIiwgXCJ0cnVlXCJdLFxuICAgICAgXCJ0ZXh0XCI6IFtcIjBcIiwgXCJmYWxzZVwiXSxcbiAgICAgIFwic2NyaXB0XCI6IFtcIjFcIiwgXCJmYWxzZVwiXSxcbiAgICAgIFwic2NyaXB0c2NyaXB0XCI6IFtcIjJcIiwgXCJmYWxzZVwiXVxuICAgIH07XG4gICAgdmFyIGF0dHIgPSBzdHlsZUF0dHJpYnV0ZXNbZ3JvdXAuc3R5bGVdO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic2NyaXB0bGV2ZWxcIiwgYXR0clswXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkaXNwbGF5c3R5bGVcIiwgYXR0clsxXSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3N1cHN1Yi5qc1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogU29tZXRpbWVzLCBncm91cHMgcGVyZm9ybSBzcGVjaWFsIHJ1bGVzIHdoZW4gdGhleSBoYXZlIHN1cGVyc2NyaXB0cyBvclxuICogc3Vic2NyaXB0cyBhdHRhY2hlZCB0byB0aGVtLiBUaGlzIGZ1bmN0aW9uIGxldHMgdGhlIGBzdXBzdWJgIGdyb3VwIGtub3cgdGhhdFxuICogU29tZXRpbWVzLCBncm91cHMgcGVyZm9ybSBzcGVjaWFsIHJ1bGVzIHdoZW4gdGhleSBoYXZlIHN1cGVyc2NyaXB0cyBvclxuICogaXRzIGlubmVyIGVsZW1lbnQgc2hvdWxkIGhhbmRsZSB0aGUgc3VwZXJzY3JpcHRzIGFuZCBzdWJzY3JpcHRzIGluc3RlYWQgb2ZcbiAqIGhhbmRsaW5nIHRoZW0gaXRzZWxmLlxuICovXG52YXIgc3Vwc3ViX2h0bWxCdWlsZGVyRGVsZWdhdGUgPSBmdW5jdGlvbiBodG1sQnVpbGRlckRlbGVnYXRlKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBiYXNlID0gZ3JvdXAuYmFzZTtcblxuICBpZiAoIWJhc2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmIChiYXNlLnR5cGUgPT09IFwib3BcIikge1xuICAgIC8vIE9wZXJhdG9ycyBoYW5kbGUgc3Vwc3VicyBkaWZmZXJlbnRseSB3aGVuIHRoZXkgaGF2ZSBsaW1pdHNcbiAgICAvLyAoZS5nLiBgXFxkaXNwbGF5c3R5bGVcXHN1bV8yXjNgKVxuICAgIHZhciBkZWxlZ2F0ZSA9IGJhc2UubGltaXRzICYmIChvcHRpb25zLnN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUgfHwgYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIpO1xuICAgIHJldHVybiBkZWxlZ2F0ZSA/IG9wX2h0bWxCdWlsZGVyIDogbnVsbDtcbiAgfSBlbHNlIGlmIChiYXNlLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIpIHtcbiAgICB2YXIgX2RlbGVnYXRlID0gYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIgJiYgKG9wdGlvbnMuc3R5bGUuc2l6ZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkuc2l6ZSB8fCBiYXNlLmxpbWl0cyk7XG5cbiAgICByZXR1cm4gX2RlbGVnYXRlID8gb3BlcmF0b3JuYW1lX2h0bWxCdWlsZGVyIDogbnVsbDtcbiAgfSBlbHNlIGlmIChiYXNlLnR5cGUgPT09IFwiYWNjZW50XCIpIHtcbiAgICByZXR1cm4gdXRpbHMuaXNDaGFyYWN0ZXJCb3goYmFzZS5iYXNlKSA/IGFjY2VudF9odG1sQnVpbGRlciA6IG51bGw7XG4gIH0gZWxzZSBpZiAoYmFzZS50eXBlID09PSBcImhvcml6QnJhY2VcIikge1xuICAgIHZhciBpc1N1cCA9ICFncm91cC5zdWI7XG4gICAgcmV0dXJuIGlzU3VwID09PSBiYXNlLmlzT3ZlciA/IGhvcml6QnJhY2VfaHRtbEJ1aWxkZXIgOiBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59OyAvLyBTdXBlciBzY3JpcHRzIGFuZCBzdWJzY3JpcHRzLCB3aG9zZSBwcmVjaXNlIHBsYWNlbWVudCBjYW4gZGVwZW5kIG9uIG90aGVyXG4vLyBmdW5jdGlvbnMgdGhhdCBwcmVjZWRlIHRoZW0uXG5cblxuZGVmaW5lRnVuY3Rpb25CdWlsZGVycyh7XG4gIHR5cGU6IFwic3Vwc3ViXCIsXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIFN1cGVyc2NyaXB0IGFuZCBzdWJzY3JpcHRzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIG9uIHBhZ2VcbiAgICAvLyA0NDUtNDQ2LCBydWxlcyAxOChhLWYpLlxuICAgIC8vIEhlcmUgaXMgd2hlcmUgd2UgZGVmZXIgdG8gdGhlIGlubmVyIGdyb3VwIGlmIGl0IHNob3VsZCBoYW5kbGVcbiAgICAvLyBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgaXRzZWxmLlxuICAgIHZhciBidWlsZGVyRGVsZWdhdGUgPSBzdXBzdWJfaHRtbEJ1aWxkZXJEZWxlZ2F0ZShncm91cCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoYnVpbGRlckRlbGVnYXRlKSB7XG4gICAgICByZXR1cm4gYnVpbGRlckRlbGVnYXRlKGdyb3VwLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVCYXNlID0gZ3JvdXAuYmFzZSxcbiAgICAgICAgdmFsdWVTdXAgPSBncm91cC5zdXAsXG4gICAgICAgIHZhbHVlU3ViID0gZ3JvdXAuc3ViO1xuICAgIHZhciBiYXNlID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAodmFsdWVCYXNlLCBvcHRpb25zKTtcbiAgICB2YXIgc3VwbTtcbiAgICB2YXIgc3VibTtcbiAgICB2YXIgbWV0cmljcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKTsgLy8gUnVsZSAxOGFcblxuICAgIHZhciBzdXBTaGlmdCA9IDA7XG4gICAgdmFyIHN1YlNoaWZ0ID0gMDtcbiAgICB2YXIgaXNDaGFyYWN0ZXJCb3ggPSB2YWx1ZUJhc2UgJiYgdXRpbHMuaXNDaGFyYWN0ZXJCb3godmFsdWVCYXNlKTtcblxuICAgIGlmICh2YWx1ZVN1cCkge1xuICAgICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG9wdGlvbnMuc3R5bGUuc3VwKCkpO1xuICAgICAgc3VwbSA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKHZhbHVlU3VwLCBuZXdPcHRpb25zLCBvcHRpb25zKTtcblxuICAgICAgaWYgKCFpc0NoYXJhY3RlckJveCkge1xuICAgICAgICBzdXBTaGlmdCA9IGJhc2UuaGVpZ2h0IC0gbmV3T3B0aW9ucy5mb250TWV0cmljcygpLnN1cERyb3AgKiBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWVTdWIpIHtcbiAgICAgIHZhciBfbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUob3B0aW9ucy5zdHlsZS5zdWIoKSk7XG5cbiAgICAgIHN1Ym0gPSBidWlsZEhUTUxfYnVpbGRHcm91cCh2YWx1ZVN1YiwgX25ld09wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAoIWlzQ2hhcmFjdGVyQm94KSB7XG4gICAgICAgIHN1YlNoaWZ0ID0gYmFzZS5kZXB0aCArIF9uZXdPcHRpb25zLmZvbnRNZXRyaWNzKCkuc3ViRHJvcCAqIF9uZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICAgIH1cbiAgICB9IC8vIFJ1bGUgMThjXG5cblxuICAgIHZhciBtaW5TdXBTaGlmdDtcblxuICAgIGlmIChvcHRpb25zLnN0eWxlID09PSBzcmNfU3R5bGUuRElTUExBWSkge1xuICAgICAgbWluU3VwU2hpZnQgPSBtZXRyaWNzLnN1cDE7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLnN0eWxlLmNyYW1wZWQpIHtcbiAgICAgIG1pblN1cFNoaWZ0ID0gbWV0cmljcy5zdXAzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtaW5TdXBTaGlmdCA9IG1ldHJpY3Muc3VwMjtcbiAgICB9IC8vIHNjcmlwdHNwYWNlIGlzIGEgZm9udC1zaXplLWluZGVwZW5kZW50IHNpemUsIHNvIHNjYWxlIGl0XG4gICAgLy8gYXBwcm9wcmlhdGVseSBmb3IgdXNlIGFzIHRoZSBtYXJnaW5SaWdodC5cblxuXG4gICAgdmFyIG11bHRpcGxpZXIgPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIHZhciBtYXJnaW5SaWdodCA9IDAuNSAvIG1ldHJpY3MucHRQZXJFbSAvIG11bHRpcGxpZXIgKyBcImVtXCI7XG4gICAgdmFyIG1hcmdpbkxlZnQgPSBudWxsO1xuXG4gICAgaWYgKHN1Ym0pIHtcbiAgICAgIC8vIFN1YnNjcmlwdHMgc2hvdWxkbid0IGJlIHNoaWZ0ZWQgYnkgdGhlIGJhc2UncyBpdGFsaWMgY29ycmVjdGlvbi5cbiAgICAgIC8vIEFjY291bnQgZm9yIHRoYXQgYnkgc2hpZnRpbmcgdGhlIHN1YnNjcmlwdCBiYWNrIHRoZSBhcHByb3ByaWF0ZVxuICAgICAgLy8gYW1vdW50LiBOb3RlIHdlIG9ubHkgZG8gdGhpcyB3aGVuIHRoZSBiYXNlIGlzIGEgc2luZ2xlIHN5bWJvbC5cbiAgICAgIHZhciBpc09paW50ID0gZ3JvdXAuYmFzZSAmJiBncm91cC5iYXNlLnR5cGUgPT09IFwib3BcIiAmJiBncm91cC5iYXNlLm5hbWUgJiYgKGdyb3VwLmJhc2UubmFtZSA9PT0gXCJcXFxcb2lpbnRcIiB8fCBncm91cC5iYXNlLm5hbWUgPT09IFwiXFxcXG9paWludFwiKTtcblxuICAgICAgaWYgKGJhc2UgaW5zdGFuY2VvZiBkb21UcmVlX1N5bWJvbE5vZGUgfHwgaXNPaWludCkge1xuICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgIG1hcmdpbkxlZnQgPSAtYmFzZS5pdGFsaWMgKyBcImVtXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHN1cHN1YjtcblxuICAgIGlmIChzdXBtICYmIHN1Ym0pIHtcbiAgICAgIHN1cFNoaWZ0ID0gTWF0aC5tYXgoc3VwU2hpZnQsIG1pblN1cFNoaWZ0LCBzdXBtLmRlcHRoICsgMC4yNSAqIG1ldHJpY3MueEhlaWdodCk7XG4gICAgICBzdWJTaGlmdCA9IE1hdGgubWF4KHN1YlNoaWZ0LCBtZXRyaWNzLnN1YjIpO1xuICAgICAgdmFyIHJ1bGVXaWR0aCA9IG1ldHJpY3MuZGVmYXVsdFJ1bGVUaGlja25lc3M7IC8vIFJ1bGUgMThlXG5cbiAgICAgIHZhciBtYXhXaWR0aCA9IDQgKiBydWxlV2lkdGg7XG5cbiAgICAgIGlmIChzdXBTaGlmdCAtIHN1cG0uZGVwdGggLSAoc3VibS5oZWlnaHQgLSBzdWJTaGlmdCkgPCBtYXhXaWR0aCkge1xuICAgICAgICBzdWJTaGlmdCA9IG1heFdpZHRoIC0gKHN1cFNoaWZ0IC0gc3VwbS5kZXB0aCkgKyBzdWJtLmhlaWdodDtcbiAgICAgICAgdmFyIHBzaSA9IDAuOCAqIG1ldHJpY3MueEhlaWdodCAtIChzdXBTaGlmdCAtIHN1cG0uZGVwdGgpO1xuXG4gICAgICAgIGlmIChwc2kgPiAwKSB7XG4gICAgICAgICAgc3VwU2hpZnQgKz0gcHNpO1xuICAgICAgICAgIHN1YlNoaWZ0IC09IHBzaTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgdmxpc3RFbGVtID0gW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1Ym0sXG4gICAgICAgIHNoaWZ0OiBzdWJTaGlmdCxcbiAgICAgICAgbWFyZ2luUmlnaHQ6IG1hcmdpblJpZ2h0LFxuICAgICAgICBtYXJnaW5MZWZ0OiBtYXJnaW5MZWZ0XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBzdXBtLFxuICAgICAgICBzaGlmdDogLXN1cFNoaWZ0LFxuICAgICAgICBtYXJnaW5SaWdodDogbWFyZ2luUmlnaHRcbiAgICAgIH1dO1xuICAgICAgc3Vwc3ViID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgICBjaGlsZHJlbjogdmxpc3RFbGVtXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHN1Ym0pIHtcbiAgICAgIC8vIFJ1bGUgMThiXG4gICAgICBzdWJTaGlmdCA9IE1hdGgubWF4KHN1YlNoaWZ0LCBtZXRyaWNzLnN1YjEsIHN1Ym0uaGVpZ2h0IC0gMC44ICogbWV0cmljcy54SGVpZ2h0KTtcbiAgICAgIHZhciBfdmxpc3RFbGVtID0gW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1Ym0sXG4gICAgICAgIG1hcmdpbkxlZnQ6IG1hcmdpbkxlZnQsXG4gICAgICAgIG1hcmdpblJpZ2h0OiBtYXJnaW5SaWdodFxuICAgICAgfV07XG4gICAgICBzdXBzdWIgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiBzdWJTaGlmdCxcbiAgICAgICAgY2hpbGRyZW46IF92bGlzdEVsZW1cbiAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAoc3VwbSkge1xuICAgICAgLy8gUnVsZSAxOGMsIGRcbiAgICAgIHN1cFNoaWZ0ID0gTWF0aC5tYXgoc3VwU2hpZnQsIG1pblN1cFNoaWZ0LCBzdXBtLmRlcHRoICsgMC4yNSAqIG1ldHJpY3MueEhlaWdodCk7XG4gICAgICBzdXBzdWIgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiAtc3VwU2hpZnQsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IHN1cG0sXG4gICAgICAgICAgbWFyZ2luUmlnaHQ6IG1hcmdpblJpZ2h0XG4gICAgICAgIH1dXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3Vwc3ViIG11c3QgaGF2ZSBlaXRoZXIgc3VwIG9yIHN1Yi5cIik7XG4gICAgfSAvLyBXcmFwIHRoZSBzdXBzdWIgdmxpc3QgaW4gYSBzcGFuLm1zdXBzdWIgdG8gcmVzZXQgdGV4dC1hbGlnbi5cblxuXG4gICAgdmFyIG1jbGFzcyA9IGdldFR5cGVPZkRvbVRyZWUoYmFzZSwgXCJyaWdodFwiKSB8fCBcIm1vcmRcIjtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW21jbGFzc10sIFtiYXNlLCBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtc3Vwc3ViXCJdLCBbc3Vwc3ViXSldLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIElzIHRoZSBpbm5lciBncm91cCBhIHJlbGV2YW50IGhvcml6b25hbCBicmFjZT9cbiAgICB2YXIgaXNCcmFjZSA9IGZhbHNlO1xuICAgIHZhciBpc092ZXI7XG4gICAgdmFyIGlzU3VwO1xuICAgIHZhciBob3JpekJyYWNlID0gY2hlY2tOb2RlVHlwZShncm91cC5iYXNlLCBcImhvcml6QnJhY2VcIik7XG5cbiAgICBpZiAoaG9yaXpCcmFjZSkge1xuICAgICAgaXNTdXAgPSAhIWdyb3VwLnN1cDtcblxuICAgICAgaWYgKGlzU3VwID09PSBob3JpekJyYWNlLmlzT3Zlcikge1xuICAgICAgICBpc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgaXNPdmVyID0gaG9yaXpCcmFjZS5pc092ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLmJhc2UgJiYgKGdyb3VwLmJhc2UudHlwZSA9PT0gXCJvcFwiIHx8IGdyb3VwLmJhc2UudHlwZSA9PT0gXCJvcGVyYXRvcm5hbWVcIikpIHtcbiAgICAgIGdyb3VwLmJhc2UucGFyZW50SXNTdXBTdWIgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpXTtcblxuICAgIGlmIChncm91cC5zdWIpIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5zdWIsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAuc3VwKSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuc3VwLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgdmFyIG5vZGVUeXBlO1xuXG4gICAgaWYgKGlzQnJhY2UpIHtcbiAgICAgIG5vZGVUeXBlID0gaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIjtcbiAgICB9IGVsc2UgaWYgKCFncm91cC5zdWIpIHtcbiAgICAgIHZhciBiYXNlID0gZ3JvdXAuYmFzZTtcblxuICAgICAgaWYgKGJhc2UgJiYgYmFzZS50eXBlID09PSBcIm9wXCIgJiYgYmFzZS5saW1pdHMgJiYgKG9wdGlvbnMuc3R5bGUgPT09IHNyY19TdHlsZS5ESVNQTEFZIHx8IGJhc2UuYWx3YXlzSGFuZGxlU3VwU3ViKSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibW92ZXJcIjtcbiAgICAgIH0gZWxzZSBpZiAoYmFzZSAmJiBiYXNlLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIgJiYgYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIgJiYgKGJhc2UubGltaXRzIHx8IG9wdGlvbnMuc3R5bGUgPT09IHNyY19TdHlsZS5ESVNQTEFZKSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibW92ZXJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtc3VwXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghZ3JvdXAuc3VwKSB7XG4gICAgICB2YXIgX2Jhc2UgPSBncm91cC5iYXNlO1xuXG4gICAgICBpZiAoX2Jhc2UgJiYgX2Jhc2UudHlwZSA9PT0gXCJvcFwiICYmIF9iYXNlLmxpbWl0cyAmJiAob3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkgfHwgX2Jhc2UuYWx3YXlzSGFuZGxlU3VwU3ViKSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibXVuZGVyXCI7XG4gICAgICB9IGVsc2UgaWYgKF9iYXNlICYmIF9iYXNlLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIgJiYgX2Jhc2UuYWx3YXlzSGFuZGxlU3VwU3ViICYmIChfYmFzZS5saW1pdHMgfHwgb3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkpKSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtdW5kZXJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtc3ViXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfYmFzZTIgPSBncm91cC5iYXNlO1xuXG4gICAgICBpZiAoX2Jhc2UyICYmIF9iYXNlMi50eXBlID09PSBcIm9wXCIgJiYgX2Jhc2UyLmxpbWl0cyAmJiBvcHRpb25zLnN0eWxlID09PSBzcmNfU3R5bGUuRElTUExBWSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibXVuZGVyb3ZlclwiO1xuICAgICAgfSBlbHNlIGlmIChfYmFzZTIgJiYgX2Jhc2UyLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIgJiYgX2Jhc2UyLmFsd2F5c0hhbmRsZVN1cFN1YiAmJiAob3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkgfHwgX2Jhc2UyLmxpbWl0cykpIHtcbiAgICAgICAgbm9kZVR5cGUgPSBcIm11bmRlcm92ZXJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtc3Vic3VwXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShub2RlVHlwZSwgY2hpbGRyZW4pO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zeW1ib2xzT3AuanNcblxuXG5cbiAvLyBPcGVyYXRvciBQYXJzZU5vZGVzIGNyZWF0ZWQgaW4gUGFyc2VyLmpzIGZyb20gc3ltYm9sIEdyb3VwcyBpbiBzcmMvc3ltYm9scy5qcy5cblxuZGVmaW5lRnVuY3Rpb25CdWlsZGVycyh7XG4gIHR5cGU6IFwiYXRvbVwiLFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWF0aHN5bShncm91cC50ZXh0LCBncm91cC5tb2RlLCBvcHRpb25zLCBbXCJtXCIgKyBncm91cC5mYW1pbHldKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAudGV4dCwgZ3JvdXAubW9kZSldKTtcblxuICAgIGlmIChncm91cC5mYW1pbHkgPT09IFwiYmluXCIpIHtcbiAgICAgIHZhciB2YXJpYW50ID0gYnVpbGRNYXRoTUxfZ2V0VmFyaWFudChncm91cCwgb3B0aW9ucyk7XG5cbiAgICAgIGlmICh2YXJpYW50ID09PSBcImJvbGQtaXRhbGljXCIpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRodmFyaWFudFwiLCB2YXJpYW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGdyb3VwLmZhbWlseSA9PT0gXCJwdW5jdFwiKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcInNlcGFyYXRvclwiLCBcInRydWVcIik7XG4gICAgfSBlbHNlIGlmIChncm91cC5mYW1pbHkgPT09IFwib3BlblwiIHx8IGdyb3VwLmZhbWlseSA9PT0gXCJjbG9zZVwiKSB7XG4gICAgICAvLyBEZWxpbXMgYnVpbHQgaGVyZSBzaG91bGQgbm90IHN0cmV0Y2ggdmVydGljYWxseS5cbiAgICAgIC8vIFNlZSBkZWxpbXNpemluZy5qcyBmb3Igc3RyZXRjaHkgZGVsaW1zLlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcImZhbHNlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zeW1ib2xzT3JkLmpzXG5cblxuXG5cbi8vIFwibWF0aG9yZFwiIGFuZCBcInRleHRvcmRcIiBQYXJzZU5vZGVzIGNyZWF0ZWQgaW4gUGFyc2VyLmpzIGZyb20gc3ltYm9sIEdyb3VwcyBpblxudmFyIGRlZmF1bHRWYXJpYW50ID0ge1xuICBcIm1pXCI6IFwiaXRhbGljXCIsXG4gIFwibW5cIjogXCJub3JtYWxcIixcbiAgXCJtdGV4dFwiOiBcIm5vcm1hbFwiXG59O1xuZGVmaW5lRnVuY3Rpb25CdWlsZGVycyh7XG4gIHR5cGU6IFwibWF0aG9yZFwiLFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZU9yZChncm91cCwgb3B0aW9ucywgXCJtYXRob3JkXCIpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1pXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC50ZXh0LCBncm91cC5tb2RlLCBvcHRpb25zKV0pO1xuICAgIHZhciB2YXJpYW50ID0gYnVpbGRNYXRoTUxfZ2V0VmFyaWFudChncm91cCwgb3B0aW9ucykgfHwgXCJpdGFsaWNcIjtcblxuICAgIGlmICh2YXJpYW50ICE9PSBkZWZhdWx0VmFyaWFudFtub2RlLnR5cGVdKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm1hdGh2YXJpYW50XCIsIHZhcmlhbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbmRlZmluZUZ1bmN0aW9uQnVpbGRlcnMoe1xuICB0eXBlOiBcInRleHRvcmRcIixcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VPcmQoZ3JvdXAsIG9wdGlvbnMsIFwidGV4dG9yZFwiKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciB0ZXh0ID0gYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAudGV4dCwgZ3JvdXAubW9kZSwgb3B0aW9ucyk7XG4gICAgdmFyIHZhcmlhbnQgPSBidWlsZE1hdGhNTF9nZXRWYXJpYW50KGdyb3VwLCBvcHRpb25zKSB8fCBcIm5vcm1hbFwiO1xuICAgIHZhciBub2RlO1xuXG4gICAgaWYgKGdyb3VwLm1vZGUgPT09ICd0ZXh0Jykge1xuICAgICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRleHRcIiwgW3RleHRdKTtcbiAgICB9IGVsc2UgaWYgKC9bMC05XS8udGVzdChncm91cC50ZXh0KSkge1xuICAgICAgLy8gVE9ETyhrZXZpbmIpIG1lcmdlIGFkamFjZW50IDxtbj4gbm9kZXNcbiAgICAgIC8vIGRvIGl0IGFzIGEgcG9zdCBwcm9jZXNzaW5nIHN0ZXBcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1uXCIsIFt0ZXh0XSk7XG4gICAgfSBlbHNlIGlmIChncm91cC50ZXh0ID09PSBcIlxcXFxwcmltZVwiKSB7XG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbdGV4dF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtaVwiLCBbdGV4dF0pO1xuICAgIH1cblxuICAgIGlmICh2YXJpYW50ICE9PSBkZWZhdWx0VmFyaWFudFtub2RlLnR5cGVdKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm1hdGh2YXJpYW50XCIsIHZhcmlhbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zeW1ib2xzU3BhY2luZy5qc1xuXG5cblxuIC8vIEEgbWFwIG9mIENTUy1iYXNlZCBzcGFjaW5nIGZ1bmN0aW9ucyB0byB0aGVpciBDU1MgY2xhc3MuXG5cbnZhciBjc3NTcGFjZSA9IHtcbiAgXCJcXFxcbm9icmVha1wiOiBcIm5vYnJlYWtcIixcbiAgXCJcXFxcYWxsb3dicmVha1wiOiBcImFsbG93YnJlYWtcIlxufTsgLy8gQSBsb29rdXAgdGFibGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzcGFjaW5nIGZ1bmN0aW9uL3N5bWJvbCBzaG91bGQgYmVcbi8vIHRyZWF0ZWQgbGlrZSBhIHJlZ3VsYXIgc3BhY2UgY2hhcmFjdGVyLiAgSWYgYSBzeW1ib2wgb3IgY29tbWFuZCBpcyBhIGtleVxuLy8gaW4gdGhpcyB0YWJsZSwgdGhlbiBpdCBzaG91bGQgYmUgYSByZWd1bGFyIHNwYWNlIGNoYXJhY3Rlci4gIEZ1cnRoZXJtb3JlLFxuLy8gdGhlIGFzc29jaWF0ZWQgdmFsdWUgbWF5IGhhdmUgYSBgY2xhc3NOYW1lYCBzcGVjaWZ5aW5nIGFuIGV4dHJhIENTUyBjbGFzc1xuLy8gdG8gYWRkIHRvIHRoZSBjcmVhdGVkIGBzcGFuYC5cblxudmFyIHJlZ3VsYXJTcGFjZSA9IHtcbiAgXCIgXCI6IHt9LFxuICBcIlxcXFwgXCI6IHt9LFxuICBcIn5cIjoge1xuICAgIGNsYXNzTmFtZTogXCJub2JyZWFrXCJcbiAgfSxcbiAgXCJcXFxcc3BhY2VcIjoge30sXG4gIFwiXFxcXG5vYnJlYWtzcGFjZVwiOiB7XG4gICAgY2xhc3NOYW1lOiBcIm5vYnJlYWtcIlxuICB9XG59OyAvLyBQYXJzZU5vZGU8XCJzcGFjaW5nXCI+IGNyZWF0ZWQgaW4gUGFyc2VyLmpzIGZyb20gdGhlIFwic3BhY2luZ1wiIHN5bWJvbCBHcm91cHMgaW5cbi8vIHNyYy9zeW1ib2xzLmpzLlxuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJzcGFjaW5nXCIsXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIGlmIChyZWd1bGFyU3BhY2UuaGFzT3duUHJvcGVydHkoZ3JvdXAudGV4dCkpIHtcbiAgICAgIHZhciBjbGFzc05hbWUgPSByZWd1bGFyU3BhY2VbZ3JvdXAudGV4dF0uY2xhc3NOYW1lIHx8IFwiXCI7IC8vIFNwYWNlcyBhcmUgZ2VuZXJhdGVkIGJ5IGFkZGluZyBhbiBhY3R1YWwgc3BhY2UuIEVhY2ggb2YgdGhlc2VcbiAgICAgIC8vIHRoaW5ncyBoYXMgYW4gZW50cnkgaW4gdGhlIHN5bWJvbHMgdGFibGUsIHNvIHRoZXNlIHdpbGwgYmUgdHVybmVkXG4gICAgICAvLyBpbnRvIGFwcHJvcHJpYXRlIG91dHB1dHMuXG5cbiAgICAgIGlmIChncm91cC5tb2RlID09PSBcInRleHRcIikge1xuICAgICAgICB2YXIgb3JkID0gYnVpbGRDb21tb24ubWFrZU9yZChncm91cCwgb3B0aW9ucywgXCJ0ZXh0b3JkXCIpO1xuICAgICAgICBvcmQuY2xhc3Nlcy5wdXNoKGNsYXNzTmFtZSk7XG4gICAgICAgIHJldHVybiBvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXNwYWNlXCIsIGNsYXNzTmFtZV0sIFtidWlsZENvbW1vbi5tYXRoc3ltKGdyb3VwLnRleHQsIGdyb3VwLm1vZGUsIG9wdGlvbnMpXSwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjc3NTcGFjZS5oYXNPd25Qcm9wZXJ0eShncm91cC50ZXh0KSkge1xuICAgICAgLy8gU3BhY2VzIGJhc2VkIG9uIGp1c3QgYSBDU1MgY2xhc3MuXG4gICAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXNwYWNlXCIsIGNzc1NwYWNlW2dyb3VwLnRleHRdXSwgW10sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmtub3duIHR5cGUgb2Ygc3BhY2UgXFxcIlwiICsgZ3JvdXAudGV4dCArIFwiXFxcIlwiKTtcbiAgICB9XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZTtcblxuICAgIGlmIChyZWd1bGFyU3BhY2UuaGFzT3duUHJvcGVydHkoZ3JvdXAudGV4dCkpIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10ZXh0XCIsIFtuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZShcIlxceEEwXCIpXSk7XG4gICAgfSBlbHNlIGlmIChjc3NTcGFjZS5oYXNPd25Qcm9wZXJ0eShncm91cC50ZXh0KSkge1xuICAgICAgLy8gQ1NTLWJhc2VkIE1hdGhNTCBzcGFjZXMgKFxcbm9icmVhaywgXFxhbGxvd2JyZWFrKSBhcmUgaWdub3JlZFxuICAgICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXNwYWNlXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmtub3duIHR5cGUgb2Ygc3BhY2UgXFxcIlwiICsgZ3JvdXAudGV4dCArIFwiXFxcIlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdGFnLmpzXG5cblxuXG5cbnZhciB0YWdfcGFkID0gZnVuY3Rpb24gcGFkKCkge1xuICB2YXIgcGFkTm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRkXCIsIFtdKTtcbiAgcGFkTm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIjUwJVwiKTtcbiAgcmV0dXJuIHBhZE5vZGU7XG59O1xuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJ0YWdcIixcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciB0YWJsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRhYmxlXCIsIFtuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10clwiLCBbdGFnX3BhZCgpLCBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10ZFwiLCBbYnVpbGRFeHByZXNzaW9uUm93KGdyb3VwLmJvZHksIG9wdGlvbnMpXSksIHRhZ19wYWQoKSwgbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGRcIiwgW2J1aWxkRXhwcmVzc2lvblJvdyhncm91cC50YWcsIG9wdGlvbnMpXSldKV0pO1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICByZXR1cm4gdGFibGU7IC8vIFRPRE86IExlZnQtYWxpZ25lZCB0YWdzLlxuICAgIC8vIEN1cnJlbnRseSwgdGhlIGdyb3VwIGFuZCBvcHRpb25zIHBhc3NlZCBoZXJlIGRvIG5vdCBjb250YWluXG4gICAgLy8gZW5vdWdoIGluZm8gdG8gc2V0IHRhZyBhbGlnbm1lbnQuIGBsZXFub2AgaXMgaW4gU2V0dGluZ3MgYnV0IGl0IGlzXG4gICAgLy8gbm90IHBhc3NlZCB0byBPcHRpb25zLiBPbiB0aGUgSFRNTCBzaWRlLCBsZXFubyBpc1xuICAgIC8vIHNldCBieSBhIENTUyBjbGFzcyBhcHBsaWVkIGluIGJ1aWxkVHJlZS5qcy4gVGhhdCB3b3VsZCBoYXZlIHdvcmtlZFxuICAgIC8vIGluIE1hdGhNTCBpZiBicm93c2VycyBzdXBwb3J0ZWQgPG1sYWJlbGVkdHI+LiBTaW5jZSB0aGV5IGRvbid0LCB3ZVxuICAgIC8vIG5lZWQgdG8gcmV3cml0ZSB0aGUgd2F5IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLlxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy90ZXh0LmpzXG5cblxuXG4gLy8gTm9uLW1hdGh5IHRleHQsIHBvc3NpYmx5IGluIGEgZm9udFxuXG52YXIgdGV4dEZvbnRGYW1pbGllcyA9IHtcbiAgXCJcXFxcdGV4dFwiOiB1bmRlZmluZWQsXG4gIFwiXFxcXHRleHRybVwiOiBcInRleHRybVwiLFxuICBcIlxcXFx0ZXh0c2ZcIjogXCJ0ZXh0c2ZcIixcbiAgXCJcXFxcdGV4dHR0XCI6IFwidGV4dHR0XCIsXG4gIFwiXFxcXHRleHRub3JtYWxcIjogXCJ0ZXh0cm1cIlxufTtcbnZhciB0ZXh0Rm9udFdlaWdodHMgPSB7XG4gIFwiXFxcXHRleHRiZlwiOiBcInRleHRiZlwiLFxuICBcIlxcXFx0ZXh0bWRcIjogXCJ0ZXh0bWRcIlxufTtcbnZhciB0ZXh0Rm9udFNoYXBlcyA9IHtcbiAgXCJcXFxcdGV4dGl0XCI6IFwidGV4dGl0XCIsXG4gIFwiXFxcXHRleHR1cFwiOiBcInRleHR1cFwiXG59O1xuXG52YXIgb3B0aW9uc1dpdGhGb250ID0gZnVuY3Rpb24gb3B0aW9uc1dpdGhGb250KGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBmb250ID0gZ3JvdXAuZm9udDsgLy8gQ2hlY2tzIGlmIHRoZSBhcmd1bWVudCBpcyBhIGZvbnQgZmFtaWx5IG9yIGEgZm9udCBzdHlsZS5cblxuICBpZiAoIWZvbnQpIHtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfSBlbHNlIGlmICh0ZXh0Rm9udEZhbWlsaWVzW2ZvbnRdKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMud2l0aFRleHRGb250RmFtaWx5KHRleHRGb250RmFtaWxpZXNbZm9udF0pO1xuICB9IGVsc2UgaWYgKHRleHRGb250V2VpZ2h0c1tmb250XSkge1xuICAgIHJldHVybiBvcHRpb25zLndpdGhUZXh0Rm9udFdlaWdodCh0ZXh0Rm9udFdlaWdodHNbZm9udF0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvcHRpb25zLndpdGhUZXh0Rm9udFNoYXBlKHRleHRGb250U2hhcGVzW2ZvbnRdKTtcbiAgfVxufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInRleHRcIixcbiAgbmFtZXM6IFsvLyBGb250IGZhbWlsaWVzXG4gIFwiXFxcXHRleHRcIiwgXCJcXFxcdGV4dHJtXCIsIFwiXFxcXHRleHRzZlwiLCBcIlxcXFx0ZXh0dHRcIiwgXCJcXFxcdGV4dG5vcm1hbFwiLCAvLyBGb250IHdlaWdodHNcbiAgXCJcXFxcdGV4dGJmXCIsIFwiXFxcXHRleHRtZFwiLCAvLyBGb250IFNoYXBlc1xuICBcIlxcXFx0ZXh0aXRcIiwgXCJcXFxcdGV4dHVwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInRleHRcIl0sXG4gICAgZ3JlZWRpbmVzczogMixcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpLFxuICAgICAgZm9udDogZnVuY05hbWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnNXaXRoRm9udChncm91cCwgb3B0aW9ucyk7XG4gICAgdmFyIGlubmVyID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBuZXdPcHRpb25zLCB0cnVlKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcInRleHRcIl0sIGJ1aWxkQ29tbW9uLnRyeUNvbWJpbmVDaGFycyhpbm5lciksIG5ld09wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zV2l0aEZvbnQoZ3JvdXAsIG9wdGlvbnMpO1xuICAgIHJldHVybiBidWlsZEV4cHJlc3Npb25Sb3coZ3JvdXAuYm9keSwgbmV3T3B0aW9ucyk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3VuZGVybGluZS5qc1xuXG5cblxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ1bmRlcmxpbmVcIixcbiAgbmFtZXM6IFtcIlxcXFx1bmRlcmxpbmVcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ1bmRlcmxpbmVcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYXJnc1swXVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIFVuZGVybGluZXMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgcGcgNDQzLCBSdWxlIDEwLlxuICAgIC8vIEJ1aWxkIHRoZSBpbm5lciBncm91cC5cbiAgICB2YXIgaW5uZXJHcm91cCA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMpOyAvLyBDcmVhdGUgdGhlIGxpbmUgdG8gZ28gYmVsb3cgdGhlIGJvZHlcblxuICAgIHZhciBsaW5lID0gYnVpbGRDb21tb24ubWFrZUxpbmVTcGFuKFwidW5kZXJsaW5lLWxpbmVcIiwgb3B0aW9ucyk7IC8vIEdlbmVyYXRlIHRoZSB2bGlzdCwgd2l0aCB0aGUgYXBwcm9wcmlhdGUga2VybnNcblxuICAgIHZhciBkZWZhdWx0UnVsZVRoaWNrbmVzcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWZhdWx0UnVsZVRoaWNrbmVzcztcbiAgICB2YXIgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcInRvcFwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBpbm5lckdyb3VwLmhlaWdodCxcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogZGVmYXVsdFJ1bGVUaGlja25lc3NcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGxpbmVcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IDMgKiBkZWZhdWx0UnVsZVRoaWNrbmVzc1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW5uZXJHcm91cFxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcInVuZGVybGluZVwiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3BlcmF0b3IgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZShcIlxcdTIwM0VcIildKTtcbiAgICBvcGVyYXRvci5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcInRydWVcIik7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm11bmRlclwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKSwgb3BlcmF0b3JdKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImFjY2VudHVuZGVyXCIsIFwidHJ1ZVwiKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdmVyYi5qc1xuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwidmVyYlwiLFxuICBuYW1lczogW1wiXFxcXHZlcmJcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncykge1xuICAgIC8vIFxcdmVyYiBhbmQgXFx2ZXJiKiBhcmUgZGVhbHQgd2l0aCBkaXJlY3RseSBpbiBQYXJzZXIuanMuXG4gICAgLy8gSWYgd2UgZW5kIHVwIGhlcmUsIGl0J3MgYmVjYXVzZSBvZiBhIGZhaWx1cmUgdG8gbWF0Y2ggdGhlIHR3byBkZWxpbWl0ZXJzXG4gICAgLy8gaW4gdGhlIHJlZ2V4IGluIExleGVyLmpzLiAgTGFUZVggcmFpc2VzIHRoZSBmb2xsb3dpbmcgZXJyb3Igd2hlbiBcXHZlcmIgaXNcbiAgICAvLyB0ZXJtaW5hdGVkIGJ5IGVuZCBvZiBsaW5lIChvciBmaWxlKS5cbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcdmVyYiBlbmRlZCBieSBlbmQgb2YgbGluZSBpbnN0ZWFkIG9mIG1hdGNoaW5nIGRlbGltaXRlclwiKTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHRleHQgPSBtYWtlVmVyYihncm91cCk7XG4gICAgdmFyIGJvZHkgPSBbXTsgLy8gXFx2ZXJiIGVudGVycyB0ZXh0IG1vZGUgYW5kIHRoZXJlZm9yZSBpcyBzaXplZCBsaWtlIFxcdGV4dHN0eWxlXG5cbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUob3B0aW9ucy5zdHlsZS50ZXh0KCkpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHRleHRbaV07XG5cbiAgICAgIGlmIChjID09PSAnficpIHtcbiAgICAgICAgYyA9ICdcXFxcdGV4dGFzY2lpdGlsZGUnO1xuICAgICAgfVxuXG4gICAgICBib2R5LnB1c2goYnVpbGRDb21tb24ubWFrZVN5bWJvbChjLCBcIlR5cGV3cml0ZXItUmVndWxhclwiLCBncm91cC5tb2RlLCBuZXdPcHRpb25zLCBbXCJtb3JkXCIsIFwidGV4dHR0XCJdKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJ0ZXh0XCJdLmNvbmNhdChuZXdPcHRpb25zLnNpemluZ0NsYXNzZXMob3B0aW9ucykpLCBidWlsZENvbW1vbi50cnlDb21iaW5lQ2hhcnMoYm9keSksIG5ld09wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHRleHQgPSBuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZShtYWtlVmVyYihncm91cCkpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGV4dFwiLCBbdGV4dF0pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aHZhcmlhbnRcIiwgXCJtb25vc3BhY2VcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLyoqXG4gKiBDb252ZXJ0cyB2ZXJiIGdyb3VwIGludG8gYm9keSBzdHJpbmcuXG4gKlxuICogXFx2ZXJiKiByZXBsYWNlcyBlYWNoIHNwYWNlIHdpdGggYW4gb3BlbiBib3ggXFx1MjQyM1xuICogXFx2ZXJiIHJlcGxhY2VzIGVhY2ggc3BhY2Ugd2l0aCBhIG5vLWJyZWFrIHNwYWNlIFxceEEwXG4gKi9cblxudmFyIG1ha2VWZXJiID0gZnVuY3Rpb24gbWFrZVZlcmIoZ3JvdXApIHtcbiAgcmV0dXJuIGdyb3VwLmJvZHkucmVwbGFjZSgvIC9nLCBncm91cC5zdGFyID8gXCJcXHUyNDIzXCIgOiAnXFx4QTAnKTtcbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMuanNcbi8qKiBJbmNsdWRlIHRoaXMgdG8gZW5zdXJlIHRoYXQgYWxsIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gKi9cblxudmFyIGZ1bmN0aW9ucyA9IF9mdW5jdGlvbnM7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfZnVuY3Rpb25zID0gKGZ1bmN0aW9ucyk7IC8vIFRPRE8oa2V2aW5iKTogaGF2ZSBmdW5jdGlvbnMgcmV0dXJuIGFuIG9iamVjdCBhbmQgY2FsbCBkZWZpbmVGdW5jdGlvbiB3aXRoXG4vLyB0aGF0IG9iamVjdCBpbiB0aGlzIGZpbGUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHNpZGUtZWZmZWN0cy5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvTGV4ZXIuanNcbi8qKlxuICogVGhlIExleGVyIGNsYXNzIGhhbmRsZXMgdG9rZW5pemluZyB0aGUgaW5wdXQgaW4gdmFyaW91cyB3YXlzLiBTaW5jZSBvdXJcbiAqIHBhcnNlciBleHBlY3RzIHVzIHRvIGJlIGFibGUgdG8gYmFja3RyYWNrLCB0aGUgbGV4ZXIgYWxsb3dzIGxleGluZyBmcm9tIGFueVxuICogZ2l2ZW4gc3RhcnRpbmcgcG9pbnQuXG4gKlxuICogSXRzIG1haW4gZXhwb3NlZCBmdW5jdGlvbiBpcyB0aGUgYGxleGAgZnVuY3Rpb24sIHdoaWNoIHRha2VzIGEgcG9zaXRpb24gdG9cbiAqIGxleCBmcm9tIGFuZCBhIHR5cGUgb2YgdG9rZW4gdG8gbGV4LiBJdCBkZWZlcnMgdG8gdGhlIGFwcHJvcHJpYXRlIGBfaW5uZXJMZXhgXG4gKiBmdW5jdGlvbi5cbiAqXG4gKiBUaGUgdmFyaW91cyBgX2lubmVyTGV4YCBmdW5jdGlvbnMgcGVyZm9ybSB0aGUgYWN0dWFsIGxleGluZyBvZiBkaWZmZXJlbnRcbiAqIGtpbmRzLlxuICovXG5cblxuXG5cbi8qIFRoZSBmb2xsb3dpbmcgdG9rZW5SZWdleFxuICogLSBtYXRjaGVzIHR5cGljYWwgd2hpdGVzcGFjZSAoYnV0IG5vdCBOQlNQIGV0Yy4pIHVzaW5nIGl0cyBmaXJzdCBncm91cFxuICogLSBkb2VzIG5vdCBtYXRjaCBhbnkgY29udHJvbCBjaGFyYWN0ZXIgXFx4MDAtXFx4MWYgZXhjZXB0IHdoaXRlc3BhY2VcbiAqIC0gZG9lcyBub3QgbWF0Y2ggYSBiYXJlIGJhY2tzbGFzaFxuICogLSBtYXRjaGVzIGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0IHRob3NlIGp1c3QgbWVudGlvbmVkXG4gKiAtIGRvZXMgbm90IG1hdGNoIHRoZSBCTVAgcHJpdmF0ZSB1c2UgYXJlYSBcXHVFMDAwLVxcdUY4RkZcbiAqIC0gZG9lcyBub3QgbWF0Y2ggYmFyZSBzdXJyb2dhdGUgY29kZSB1bml0c1xuICogLSBtYXRjaGVzIGFueSBCTVAgY2hhcmFjdGVyIGV4Y2VwdCBmb3IgdGhvc2UganVzdCBkZXNjcmliZWRcbiAqIC0gbWF0Y2hlcyBhbnkgdmFsaWQgVW5pY29kZSBzdXJyb2dhdGUgcGFpclxuICogLSBtYXRjaGVzIGEgYmFja3NsYXNoIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGxldHRlcnNcbiAqIC0gbWF0Y2hlcyBhIGJhY2tzbGFzaCBmb2xsb3dlZCBieSBhbnkgQk1QIGNoYXJhY3RlciwgaW5jbHVkaW5nIG5ld2xpbmVcbiAqIEp1c3QgYmVjYXVzZSB0aGUgTGV4ZXIgbWF0Y2hlcyBzb21ldGhpbmcgZG9lc24ndCBtZWFuIGl0J3MgdmFsaWQgaW5wdXQ6XG4gKiBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBmdW5jdGlvbiBvciBzeW1ib2wgZGVmaW5pdGlvbiwgdGhlIFBhcnNlciB3aWxsXG4gKiBzdGlsbCByZWplY3QgdGhlIGlucHV0LlxuICovXG52YXIgc3BhY2VSZWdleFN0cmluZyA9IFwiWyBcXHJcXG5cXHRdXCI7XG52YXIgY29udHJvbFdvcmRSZWdleFN0cmluZyA9IFwiXFxcXFxcXFxbYS16QS1aQF0rXCI7XG52YXIgY29udHJvbFN5bWJvbFJlZ2V4U3RyaW5nID0gXCJcXFxcXFxcXFteXFx1RDgwMC1cXHVERkZGXVwiO1xudmFyIGNvbnRyb2xXb3JkV2hpdGVzcGFjZVJlZ2V4U3RyaW5nID0gXCJcIiArIGNvbnRyb2xXb3JkUmVnZXhTdHJpbmcgKyBzcGFjZVJlZ2V4U3RyaW5nICsgXCIqXCI7XG52YXIgY29udHJvbFdvcmRXaGl0ZXNwYWNlUmVnZXggPSBuZXcgUmVnRXhwKFwiXihcIiArIGNvbnRyb2xXb3JkUmVnZXhTdHJpbmcgKyBcIilcIiArIHNwYWNlUmVnZXhTdHJpbmcgKyBcIiokXCIpO1xudmFyIGNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyA9IFwiW1xcdTAzMDAtXFx1MDM2Rl1cIjtcbnZhciBjb21iaW5pbmdEaWFjcml0aWNhbE1hcmtzRW5kUmVnZXggPSBuZXcgUmVnRXhwKGNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyArIFwiKyRcIik7XG52YXIgdG9rZW5SZWdleFN0cmluZyA9IFwiKFwiICsgc3BhY2VSZWdleFN0cmluZyArIFwiKyl8XCIgKyAvLyB3aGl0ZXNwYWNlXG5cIihbIS1cXFxcW1xcXFxdLVxcdTIwMjdcXHUyMDJBLVxcdUQ3RkZcXHVGOTAwLVxcdUZGRkZdXCIgKyAoIC8vIHNpbmdsZSBjb2RlcG9pbnRcbmNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyArIFwiKlwiKSArIC8vIC4uLnBsdXMgYWNjZW50c1xuXCJ8W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXVwiICsgKCAvLyBzdXJyb2dhdGUgcGFpclxuY29tYmluaW5nRGlhY3JpdGljYWxNYXJrU3RyaW5nICsgXCIqXCIpICsgLy8gLi4ucGx1cyBhY2NlbnRzXG5cInxcXFxcXFxcXHZlcmJcXFxcKihbXl0pLio/XFxcXDNcIiArIC8vIFxcdmVyYipcblwifFxcXFxcXFxcdmVyYihbXiphLXpBLVpdKS4qP1xcXFw0XCIgKyAvLyBcXHZlcmIgdW5zdGFycmVkXG5cInxcXFxcXFxcXG9wZXJhdG9ybmFtZVxcXFwqXCIgKyAoIC8vIFxcb3BlcmF0b3JuYW1lKlxuXCJ8XCIgKyBjb250cm9sV29yZFdoaXRlc3BhY2VSZWdleFN0cmluZykgKyAoIC8vIFxcbWFjcm9OYW1lICsgc3BhY2VzXG5cInxcIiArIGNvbnRyb2xTeW1ib2xSZWdleFN0cmluZyArIFwiKVwiKTsgLy8gXFxcXCwgXFwnLCBldGMuXG5cbi8qKiBNYWluIExleGVyIGNsYXNzICovXG5cbnZhciBMZXhlcl9MZXhlciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIC8vIGNhdGVnb3J5IGNvZGVzLCBvbmx5IHN1cHBvcnRzIGNvbW1lbnQgY2hhcmFjdGVycyAoMTQpIGZvciBub3dcbiAgZnVuY3Rpb24gTGV4ZXIoaW5wdXQsIHNldHRpbmdzKSB7XG4gICAgdGhpcy5pbnB1dCA9IHZvaWQgMDtcbiAgICB0aGlzLnNldHRpbmdzID0gdm9pZCAwO1xuICAgIHRoaXMudG9rZW5SZWdleCA9IHZvaWQgMDtcbiAgICB0aGlzLmNhdGNvZGVzID0gdm9pZCAwO1xuICAgIC8vIFNlcGFyYXRlIGFjY2VudHMgZnJvbSBjaGFyYWN0ZXJzXG4gICAgdGhpcy5pbnB1dCA9IGlucHV0O1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB0aGlzLnRva2VuUmVnZXggPSBuZXcgUmVnRXhwKHRva2VuUmVnZXhTdHJpbmcsICdnJyk7XG4gICAgdGhpcy5jYXRjb2RlcyA9IHtcbiAgICAgIFwiJVwiOiAxNCAvLyBjb21tZW50IGNoYXJhY3RlclxuXG4gICAgfTtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBMZXhlci5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnNldENhdGNvZGUgPSBmdW5jdGlvbiBzZXRDYXRjb2RlKGNoYXIsIGNvZGUpIHtcbiAgICB0aGlzLmNhdGNvZGVzW2NoYXJdID0gY29kZTtcbiAgfVxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBsZXhlcyBhIHNpbmdsZSB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ubGV4ID0gZnVuY3Rpb24gbGV4KCkge1xuICAgIHZhciBpbnB1dCA9IHRoaXMuaW5wdXQ7XG4gICAgdmFyIHBvcyA9IHRoaXMudG9rZW5SZWdleC5sYXN0SW5kZXg7XG5cbiAgICBpZiAocG9zID09PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgVG9rZW5fVG9rZW4oXCJFT0ZcIiwgbmV3IFNvdXJjZUxvY2F0aW9uKHRoaXMsIHBvcywgcG9zKSk7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoID0gdGhpcy50b2tlblJlZ2V4LmV4ZWMoaW5wdXQpO1xuXG4gICAgaWYgKG1hdGNoID09PSBudWxsIHx8IG1hdGNoLmluZGV4ICE9PSBwb3MpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyOiAnXCIgKyBpbnB1dFtwb3NdICsgXCInXCIsIG5ldyBUb2tlbl9Ub2tlbihpbnB1dFtwb3NdLCBuZXcgU291cmNlTG9jYXRpb24odGhpcywgcG9zLCBwb3MgKyAxKSkpO1xuICAgIH1cblxuICAgIHZhciB0ZXh0ID0gbWF0Y2hbMl0gfHwgXCIgXCI7XG5cbiAgICBpZiAodGhpcy5jYXRjb2Rlc1t0ZXh0XSA9PT0gMTQpIHtcbiAgICAgIC8vIGNvbW1lbnQgY2hhcmFjdGVyXG4gICAgICB2YXIgbmxJbmRleCA9IGlucHV0LmluZGV4T2YoJ1xcbicsIHRoaXMudG9rZW5SZWdleC5sYXN0SW5kZXgpO1xuXG4gICAgICBpZiAobmxJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy50b2tlblJlZ2V4Lmxhc3RJbmRleCA9IGlucHV0Lmxlbmd0aDsgLy8gRU9GXG5cbiAgICAgICAgdGhpcy5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJjb21tZW50QXRFbmRcIiwgXCIlIGNvbW1lbnQgaGFzIG5vIHRlcm1pbmF0aW5nIG5ld2xpbmU7IExhVGVYIHdvdWxkIFwiICsgXCJmYWlsIGJlY2F1c2Ugb2YgY29tbWVudGluZyB0aGUgZW5kIG9mIG1hdGggbW9kZSAoZS5nLiAkKVwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9rZW5SZWdleC5sYXN0SW5kZXggPSBubEluZGV4ICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgfSAvLyBUcmltIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gY29udHJvbCB3b3JkIG1hdGNoXG5cblxuICAgIHZhciBjb250cm9sTWF0Y2ggPSB0ZXh0Lm1hdGNoKGNvbnRyb2xXb3JkV2hpdGVzcGFjZVJlZ2V4KTtcblxuICAgIGlmIChjb250cm9sTWF0Y2gpIHtcbiAgICAgIHRleHQgPSBjb250cm9sTWF0Y2hbMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBUb2tlbl9Ub2tlbih0ZXh0LCBuZXcgU291cmNlTG9jYXRpb24odGhpcywgcG9zLCB0aGlzLnRva2VuUmVnZXgubGFzdEluZGV4KSk7XG4gIH07XG5cbiAgcmV0dXJuIExleGVyO1xufSgpO1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL05hbWVzcGFjZS5qc1xuLyoqXG4gKiBBIGBOYW1lc3BhY2VgIHJlZmVycyB0byBhIHNwYWNlIG9mIG5hbWVhYmxlIHRoaW5ncyBsaWtlIG1hY3JvcyBvciBsZW5ndGhzLFxuICogd2hpY2ggY2FuIGJlIGBzZXRgIGVpdGhlciBnbG9iYWxseSBvciBsb2NhbCB0byBhIG5lc3RlZCBncm91cCwgdXNpbmcgYW5cbiAqIHVuZG8gc3RhY2sgc2ltaWxhciB0byBob3cgVGVYIGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbmFsaXR5LlxuICogUGVyZm9ybWFuY2Utd2lzZSwgYGdldGAgYW5kIGxvY2FsIGBzZXRgIHRha2UgY29uc3RhbnQgdGltZSwgd2hpbGUgZ2xvYmFsXG4gKiBgc2V0YCB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byB0aGUgZGVwdGggb2YgZ3JvdXAgbmVzdGluZy5cbiAqL1xuXG5cbnZhciBOYW1lc3BhY2VfTmFtZXNwYWNlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEJvdGggYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBvYmplY3Qgb2ZcbiAgICogYnVpbHQtaW4gbWFwcGluZ3Mgd2hpY2ggbmV2ZXIgY2hhbmdlLiAgVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhbiBvYmplY3RcbiAgICogb2YgaW5pdGlhbCAoZ2xvYmFsLWxldmVsKSBtYXBwaW5ncywgd2hpY2ggd2lsbCBjb25zdGFudGx5IGNoYW5nZVxuICAgKiBhY2NvcmRpbmcgdG8gYW55IGdsb2JhbC90b3AtbGV2ZWwgYHNldGBzIGRvbmUuXG4gICAqL1xuICBmdW5jdGlvbiBOYW1lc3BhY2UoYnVpbHRpbnMsIGdsb2JhbE1hY3Jvcykge1xuICAgIGlmIChidWlsdGlucyA9PT0gdm9pZCAwKSB7XG4gICAgICBidWlsdGlucyA9IHt9O1xuICAgIH1cblxuICAgIGlmIChnbG9iYWxNYWNyb3MgPT09IHZvaWQgMCkge1xuICAgICAgZ2xvYmFsTWFjcm9zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50ID0gdm9pZCAwO1xuICAgIHRoaXMuYnVpbHRpbnMgPSB2b2lkIDA7XG4gICAgdGhpcy51bmRlZlN0YWNrID0gdm9pZCAwO1xuICAgIHRoaXMuY3VycmVudCA9IGdsb2JhbE1hY3JvcztcbiAgICB0aGlzLmJ1aWx0aW5zID0gYnVpbHRpbnM7XG4gICAgdGhpcy51bmRlZlN0YWNrID0gW107XG4gIH1cbiAgLyoqXG4gICAqIFN0YXJ0IGEgbmV3IG5lc3RlZCBncm91cCwgYWZmZWN0aW5nIGZ1dHVyZSBsb2NhbCBgc2V0YHMuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IE5hbWVzcGFjZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmJlZ2luR3JvdXAgPSBmdW5jdGlvbiBiZWdpbkdyb3VwKCkge1xuICAgIHRoaXMudW5kZWZTdGFjay5wdXNoKHt9KTtcbiAgfVxuICAvKipcbiAgICogRW5kIGN1cnJlbnQgbmVzdGVkIGdyb3VwLCByZXN0b3JpbmcgdmFsdWVzIGJlZm9yZSB0aGUgZ3JvdXAgYmVnYW4uXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmVuZEdyb3VwID0gZnVuY3Rpb24gZW5kR3JvdXAoKSB7XG4gICAgaWYgKHRoaXMudW5kZWZTdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVuYmFsYW5jZWQgbmFtZXNwYWNlIGRlc3RydWN0aW9uOiBhdHRlbXB0IFwiICsgXCJ0byBwb3AgZ2xvYmFsIG5hbWVzcGFjZTsgcGxlYXNlIHJlcG9ydCB0aGlzIGFzIGEgYnVnXCIpO1xuICAgIH1cblxuICAgIHZhciB1bmRlZnMgPSB0aGlzLnVuZGVmU3RhY2sucG9wKCk7XG5cbiAgICBmb3IgKHZhciB1bmRlZiBpbiB1bmRlZnMpIHtcbiAgICAgIGlmICh1bmRlZnMuaGFzT3duUHJvcGVydHkodW5kZWYpKSB7XG4gICAgICAgIGlmICh1bmRlZnNbdW5kZWZdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50W3VuZGVmXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRbdW5kZWZdID0gdW5kZWZzW3VuZGVmXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogRGV0ZWN0IHdoZXRoZXIgYG5hbWVgIGhhcyBhIGRlZmluaXRpb24uICBFcXVpdmFsZW50IHRvXG4gICAqIGBnZXQobmFtZSkgIT0gbnVsbGAuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhcyA9IGZ1bmN0aW9uIGhhcyhuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudC5oYXNPd25Qcm9wZXJ0eShuYW1lKSB8fCB0aGlzLmJ1aWx0aW5zLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBuYW1lLCBvciBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBubyB2YWx1ZS5cbiAgICpcbiAgICogTm90ZTogRG8gbm90IHVzZSBgaWYgKG5hbWVzcGFjZS5nZXQoLi4uKSlgIHRvIGRldGVjdCB3aGV0aGVyIGEgbWFjcm9cbiAgICogaXMgZGVmaW5lZCwgYXMgdGhlIGRlZmluaXRpb24gbWF5IGJlIHRoZSBlbXB0eSBzdHJpbmcgd2hpY2ggZXZhbHVhdGVzXG4gICAqIHRvIGBmYWxzZWAgaW4gSmF2YVNjcmlwdC4gIFVzZSBgaWYgKG5hbWVzcGFjZS5nZXQoLi4uKSAhPSBudWxsKWAgb3JcbiAgICogYGlmIChuYW1lc3BhY2UuaGFzKC4uLikpYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZ2V0ID0gZnVuY3Rpb24gZ2V0KG5hbWUpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50Lmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50W25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsdGluc1tuYW1lXTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIG5hbWUsIGFuZCBvcHRpb25hbGx5IHNldCBpdCBnbG9iYWxseSB0b28uXG4gICAqIExvY2FsIHNldCgpIHNldHMgdGhlIGN1cnJlbnQgdmFsdWUgYW5kICh3aGVuIGFwcHJvcHJpYXRlKSBhZGRzIGFuIHVuZG9cbiAgICogb3BlcmF0aW9uIHRvIHRoZSB1bmRvIHN0YWNrLiAgR2xvYmFsIHNldCgpIG1heSBjaGFuZ2UgdGhlIHVuZG9cbiAgICogb3BlcmF0aW9uIGF0IGV2ZXJ5IGxldmVsLCBzbyB0YWtlcyB0aW1lIGxpbmVhciBpbiB0aGVpciBudW1iZXIuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnNldCA9IGZ1bmN0aW9uIHNldChuYW1lLCB2YWx1ZSwgZ2xvYmFsKSB7XG4gICAgaWYgKGdsb2JhbCA9PT0gdm9pZCAwKSB7XG4gICAgICBnbG9iYWwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZ2xvYmFsKSB7XG4gICAgICAvLyBHbG9iYWwgc2V0IGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBpbiBhbGwgZ3JvdXBzLiAgU2ltdWxhdGUgdGhpc1xuICAgICAgLy8gYnkgZGVzdHJveWluZyBhbnkgdW5kb3MgY3VycmVudGx5IHNjaGVkdWxlZCBmb3IgdGhpcyBuYW1lLFxuICAgICAgLy8gYW5kIGFkZGluZyBhbiB1bmRvIHdpdGggdGhlICpuZXcqIHZhbHVlIChpbiBjYXNlIGl0IGxhdGVyIGdldHNcbiAgICAgIC8vIGxvY2FsbHkgcmVzZXQgd2l0aGluIHRoaXMgZW52aXJvbm1lbnQpLlxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnVuZGVmU3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZGVsZXRlIHRoaXMudW5kZWZTdGFja1tpXVtuYW1lXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudW5kZWZTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudW5kZWZTdGFja1t0aGlzLnVuZGVmU3RhY2subGVuZ3RoIC0gMV1bbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVW5kbyB0aGlzIHNldCBhdCBlbmQgb2YgdGhpcyBncm91cCAocG9zc2libHkgdG8gYHVuZGVmaW5lZGApLFxuICAgICAgLy8gdW5sZXNzIGFuIHVuZG8gaXMgYWxyZWFkeSBpbiBwbGFjZSwgaW4gd2hpY2ggY2FzZSB0aGF0IG9sZGVyXG4gICAgICAvLyB2YWx1ZSBpcyB0aGUgY29ycmVjdCBvbmUuXG4gICAgICB2YXIgdG9wID0gdGhpcy51bmRlZlN0YWNrW3RoaXMudW5kZWZTdGFjay5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKHRvcCAmJiAhdG9wLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIHRvcFtuYW1lXSA9IHRoaXMuY3VycmVudFtuYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRbbmFtZV0gPSB2YWx1ZTtcbiAgfTtcblxuICByZXR1cm4gTmFtZXNwYWNlO1xufSgpO1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL21hY3Jvcy5qc1xuLyoqXG4gKiBQcmVkZWZpbmVkIG1hY3JvcyBmb3IgS2FUZVguXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBzb21lIGNvbW1hbmRzIGluIHRlcm1zIG9mIG90aGVycy5cbiAqL1xuXG5cblxuXG5cbnZhciBidWlsdGluTWFjcm9zID0ge307XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtYWNyb3MgPSAoYnVpbHRpbk1hY3Jvcyk7IC8vIFRoaXMgZnVuY3Rpb24gbWlnaHQgb25lIGRheSBhY2NlcHQgYW4gYWRkaXRpb25hbCBhcmd1bWVudCBhbmQgZG8gbW9yZSB0aGluZ3MuXG5cbmZ1bmN0aW9uIGRlZmluZU1hY3JvKG5hbWUsIGJvZHkpIHtcbiAgYnVpbHRpbk1hY3Jvc1tuYW1lXSA9IGJvZHk7XG59IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIG1hY3JvIHRvb2xzXG4vLyBMYVRlWCdzIFxcQGZpcnN0b2Z0d297IzF9eyMyfSBleHBhbmRzIHRvICMxLCBza2lwcGluZyAjMlxuLy8gVGVYIHNvdXJjZTogXFxsb25nXFxkZWZcXEBmaXJzdG9mdHdvIzEjMnsjMX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQGZpcnN0b2Z0d29cIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIGFyZ3MgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDIpO1xuICByZXR1cm4ge1xuICAgIHRva2VuczogYXJnc1swXSxcbiAgICBudW1BcmdzOiAwXG4gIH07XG59KTsgLy8gTGFUZVgncyBcXEBzZWNvbmRvZnR3b3sjMX17IzJ9IGV4cGFuZHMgdG8gIzIsIHNraXBwaW5nICMxXG4vLyBUZVggc291cmNlOiBcXGxvbmdcXGRlZlxcQHNlY29uZG9mdHdvIzEjMnsjMn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQHNlY29uZG9mdHdvXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBhcmdzID0gY29udGV4dC5jb25zdW1lQXJncygyKTtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbnM6IGFyZ3NbMV0sXG4gICAgbnVtQXJnczogMFxuICB9O1xufSk7IC8vIExhVGVYJ3MgXFxAaWZuZXh0Y2hhcnsjMX17IzJ9eyMzfSBsb29rcyBhaGVhZCB0byB0aGUgbmV4dCAodW5leHBhbmRlZClcbi8vIHN5bWJvbC4gIElmIGl0IG1hdGNoZXMgIzEsIHRoZW4gdGhlIG1hY3JvIGV4cGFuZHMgdG8gIzI7IG90aGVyd2lzZSwgIzMuXG4vLyBOb3RlLCBob3dldmVyLCB0aGF0IGl0IGRvZXMgbm90IGNvbnN1bWUgdGhlIG5leHQgc3ltYm9sIGluIGVpdGhlciBjYXNlLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxAaWZuZXh0Y2hhclwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgYXJncyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMyk7IC8vIHN5bWJvbCwgaWYsIGVsc2VcblxuICB2YXIgbmV4dFRva2VuID0gY29udGV4dC5mdXR1cmUoKTtcblxuICBpZiAoYXJnc1swXS5sZW5ndGggPT09IDEgJiYgYXJnc1swXVswXS50ZXh0ID09PSBuZXh0VG9rZW4udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbnM6IGFyZ3NbMV0sXG4gICAgICBudW1BcmdzOiAwXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW5zOiBhcmdzWzJdLFxuICAgICAgbnVtQXJnczogMFxuICAgIH07XG4gIH1cbn0pOyAvLyBMYVRlWCdzIFxcQGlmc3RhcnsjMX17IzJ9IGxvb2tzIGFoZWFkIHRvIHRoZSBuZXh0ICh1bmV4cGFuZGVkKSBzeW1ib2wuXG4vLyBJZiBpdCBpcyBgKmAsIHRoZW4gaXQgY29uc3VtZXMgdGhlIHN5bWJvbCwgYW5kIHRoZSBtYWNybyBleHBhbmRzIHRvICMxO1xuLy8gb3RoZXJ3aXNlLCB0aGUgbWFjcm8gZXhwYW5kcyB0byAjMiAod2l0aG91dCBjb25zdW1pbmcgdGhlIHN5bWJvbCkuXG4vLyBUZVggc291cmNlOiBcXGRlZlxcQGlmc3RhciMxe1xcQGlmbmV4dGNoYXIgKntcXEBmaXJzdG9mdHdveyMxfX19XG5cbmRlZmluZU1hY3JvKFwiXFxcXEBpZnN0YXJcIiwgXCJcXFxcQGlmbmV4dGNoYXIgKntcXFxcQGZpcnN0b2Z0d297IzF9fVwiKTsgLy8gTGFUZVgncyBcXFRleHRPck1hdGh7IzF9eyMyfSBleHBhbmRzIHRvICMxIGluIHRleHQgbW9kZSwgIzIgaW4gbWF0aCBtb2RlXG5cbmRlZmluZU1hY3JvKFwiXFxcXFRleHRPck1hdGhcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIGFyZ3MgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDIpO1xuXG4gIGlmIChjb250ZXh0Lm1vZGUgPT09ICd0ZXh0Jykge1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbnM6IGFyZ3NbMF0sXG4gICAgICBudW1BcmdzOiAwXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW5zOiBhcmdzWzFdLFxuICAgICAgbnVtQXJnczogMFxuICAgIH07XG4gIH1cbn0pOyAvLyBMb29rdXAgdGFibGUgZm9yIHBhcnNpbmcgbnVtYmVycyBpbiBiYXNlIDggdGhyb3VnaCAxNlxuXG52YXIgZGlnaXRUb051bWJlciA9IHtcbiAgXCIwXCI6IDAsXG4gIFwiMVwiOiAxLFxuICBcIjJcIjogMixcbiAgXCIzXCI6IDMsXG4gIFwiNFwiOiA0LFxuICBcIjVcIjogNSxcbiAgXCI2XCI6IDYsXG4gIFwiN1wiOiA3LFxuICBcIjhcIjogOCxcbiAgXCI5XCI6IDksXG4gIFwiYVwiOiAxMCxcbiAgXCJBXCI6IDEwLFxuICBcImJcIjogMTEsXG4gIFwiQlwiOiAxMSxcbiAgXCJjXCI6IDEyLFxuICBcIkNcIjogMTIsXG4gIFwiZFwiOiAxMyxcbiAgXCJEXCI6IDEzLFxuICBcImVcIjogMTQsXG4gIFwiRVwiOiAxNCxcbiAgXCJmXCI6IDE1LFxuICBcIkZcIjogMTVcbn07IC8vIFRlWCBcXGNoYXIgbWFrZXMgYSBsaXRlcmFsIGNoYXJhY3RlciAoY2F0Y29kZSAxMikgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3Jtczpcbi8vIChzZWUgVGhlIFRlWEJvb2ssIHAuIDQzKVxuLy8gICBcXGNoYXIxMjMgIC0tIGRlY2ltYWxcbi8vICAgXFxjaGFyJzEyMyAtLSBvY3RhbFxuLy8gICBcXGNoYXJcIjEyMyAtLSBoZXhcbi8vICAgXFxjaGFyYHggICAtLSBjaGFyYWN0ZXIgdGhhdCBjYW4gYmUgd3JpdHRlbiAoaS5lLiBpc24ndCBhY3RpdmUpXG4vLyAgIFxcY2hhcmBcXHggIC0tIGNoYXJhY3RlciB0aGF0IGNhbm5vdCBiZSB3cml0dGVuIChlLmcuICUpXG4vLyBUaGVzZSBhbGwgcmVmZXIgdG8gY2hhcmFjdGVycyBmcm9tIHRoZSBmb250LCBzbyB3ZSB0dXJuIHRoZW0gaW50byBzcGVjaWFsXG4vLyBjYWxscyB0byBhIGZ1bmN0aW9uIFxcQGNoYXIgZGVhbHQgd2l0aCBpbiB0aGUgUGFyc2VyLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxjaGFyXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciB0b2tlbiA9IGNvbnRleHQucG9wVG9rZW4oKTtcbiAgdmFyIGJhc2U7XG4gIHZhciBudW1iZXIgPSAnJztcblxuICBpZiAodG9rZW4udGV4dCA9PT0gXCInXCIpIHtcbiAgICBiYXNlID0gODtcbiAgICB0b2tlbiA9IGNvbnRleHQucG9wVG9rZW4oKTtcbiAgfSBlbHNlIGlmICh0b2tlbi50ZXh0ID09PSAnXCInKSB7XG4gICAgYmFzZSA9IDE2O1xuICAgIHRva2VuID0gY29udGV4dC5wb3BUb2tlbigpO1xuICB9IGVsc2UgaWYgKHRva2VuLnRleHQgPT09IFwiYFwiKSB7XG4gICAgdG9rZW4gPSBjb250ZXh0LnBvcFRva2VuKCk7XG5cbiAgICBpZiAodG9rZW4udGV4dFswXSA9PT0gXCJcXFxcXCIpIHtcbiAgICAgIG51bWJlciA9IHRva2VuLnRleHQuY2hhckNvZGVBdCgxKTtcbiAgICB9IGVsc2UgaWYgKHRva2VuLnRleHQgPT09IFwiRU9GXCIpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxjaGFyYCBtaXNzaW5nIGFyZ3VtZW50XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBudW1iZXIgPSB0b2tlbi50ZXh0LmNoYXJDb2RlQXQoMCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJhc2UgPSAxMDtcbiAgfVxuXG4gIGlmIChiYXNlKSB7XG4gICAgLy8gUGFyc2UgYSBudW1iZXIgaW4gdGhlIGdpdmVuIGJhc2UsIHN0YXJ0aW5nIHdpdGggZmlyc3QgYHRva2VuYC5cbiAgICBudW1iZXIgPSBkaWdpdFRvTnVtYmVyW3Rva2VuLnRleHRdO1xuXG4gICAgaWYgKG51bWJlciA9PSBudWxsIHx8IG51bWJlciA+PSBiYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGJhc2UtXCIgKyBiYXNlICsgXCIgZGlnaXQgXCIgKyB0b2tlbi50ZXh0KTtcbiAgICB9XG5cbiAgICB2YXIgZGlnaXQ7XG5cbiAgICB3aGlsZSAoKGRpZ2l0ID0gZGlnaXRUb051bWJlcltjb250ZXh0LmZ1dHVyZSgpLnRleHRdKSAhPSBudWxsICYmIGRpZ2l0IDwgYmFzZSkge1xuICAgICAgbnVtYmVyICo9IGJhc2U7XG4gICAgICBudW1iZXIgKz0gZGlnaXQ7XG4gICAgICBjb250ZXh0LnBvcFRva2VuKCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFwiXFxcXEBjaGFye1wiICsgbnVtYmVyICsgXCJ9XCI7XG59KTsgLy8gQmFzaWMgc3VwcG9ydCBmb3IgbWFjcm8gZGVmaW5pdGlvbnM6XG4vLyAgICAgXFxkZWZcXG1hY3Jve2V4cGFuc2lvbn1cbi8vICAgICBcXGRlZlxcbWFjcm8jMXtleHBhbnNpb259XG4vLyAgICAgXFxkZWZcXG1hY3JvIzEjMntleHBhbnNpb259XG4vLyAgICAgXFxkZWZcXG1hY3JvIzEjMiMzIzQjNSM2IzcjOCM5e2V4cGFuc2lvbn1cbi8vIEFsc28gdGhlIFxcZ2RlZiBhbmQgXFxnbG9iYWxcXGRlZiBlcXVpdmFsZW50c1xuXG52YXIgbWFjcm9zX2RlZiA9IGZ1bmN0aW9uIGRlZihjb250ZXh0LCBnbG9iYWwpIHtcbiAgdmFyIGFyZyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgaWYgKGFyZy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcZ2RlZidzIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBtYWNybyBuYW1lXCIpO1xuICB9XG5cbiAgdmFyIG5hbWUgPSBhcmdbMF0udGV4dDsgLy8gQ291bnQgYXJndW1lbnQgc3BlY2lmaWVycywgYW5kIGNoZWNrIHRoZXkgYXJlIGluIHRoZSBvcmRlciAjMSAjMiAuLi5cblxuICB2YXIgbnVtQXJncyA9IDA7XG4gIGFyZyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgd2hpbGUgKGFyZy5sZW5ndGggPT09IDEgJiYgYXJnWzBdLnRleHQgPT09IFwiI1wiKSB7XG4gICAgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcblxuICAgIGlmIChhcmcubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50IG51bWJlciBsZW5ndGggXFxcIlwiICsgYXJnLmxlbmd0aCArIFwiXFxcIlwiKTtcbiAgICB9XG5cbiAgICBpZiAoIS9eWzEtOV0kLy50ZXN0KGFyZ1swXS50ZXh0KSkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBhcmd1bWVudCBudW1iZXIgXFxcIlwiICsgYXJnWzBdLnRleHQgKyBcIlxcXCJcIik7XG4gICAgfVxuXG4gICAgbnVtQXJncysrO1xuXG4gICAgaWYgKHBhcnNlSW50KGFyZ1swXS50ZXh0KSAhPT0gbnVtQXJncykge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiQXJndW1lbnQgbnVtYmVyIFxcXCJcIiArIGFyZ1swXS50ZXh0ICsgXCJcXFwiIG91dCBvZiBvcmRlclwiKTtcbiAgICB9XG5cbiAgICBhcmcgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDEpWzBdO1xuICB9IC8vIEZpbmFsIGFyZyBpcyB0aGUgZXhwYW5zaW9uIG9mIHRoZSBtYWNyb1xuXG5cbiAgY29udGV4dC5tYWNyb3Muc2V0KG5hbWUsIHtcbiAgICB0b2tlbnM6IGFyZyxcbiAgICBudW1BcmdzOiBudW1BcmdzXG4gIH0sIGdsb2JhbCk7XG4gIHJldHVybiAnJztcbn07XG5cbmRlZmluZU1hY3JvKFwiXFxcXGdkZWZcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIG1hY3Jvc19kZWYoY29udGV4dCwgdHJ1ZSk7XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGRlZlwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4gbWFjcm9zX2RlZihjb250ZXh0LCBmYWxzZSk7XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGdsb2JhbFwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgbmV4dCA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgaWYgKG5leHQubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBjb21tYW5kIGFmdGVyIFxcXFxnbG9iYWxcIik7XG4gIH1cblxuICB2YXIgY29tbWFuZCA9IG5leHRbMF0udGV4dDsgLy8gVE9ETzogU2hvdWxkIGV4cGFuZCBjb21tYW5kXG5cbiAgaWYgKGNvbW1hbmQgPT09IFwiXFxcXGRlZlwiKSB7XG4gICAgLy8gXFxnbG9iYWxcXGRlZiBpcyBlcXVpdmFsZW50IHRvIFxcZ2RlZlxuICAgIHJldHVybiBtYWNyb3NfZGVmKGNvbnRleHQsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgY29tbWFuZCAnXCIgKyBjb21tYW5kICsgXCInIGFmdGVyIFxcXFxnbG9iYWxcIik7XG4gIH1cbn0pOyAvLyBcXG5ld2NvbW1hbmR7XFxtYWNyb31bYXJnc117ZGVmaW5pdGlvbn1cbi8vIFxccmVuZXdjb21tYW5ke1xcbWFjcm99W2FyZ3Nde2RlZmluaXRpb259XG4vLyBUT0RPOiBPcHRpb25hbCBhcmd1bWVudHM6IFxcbmV3Y29tbWFuZHtcXG1hY3JvfVthcmdzXVtkZWZhdWx0XXtkZWZpbml0aW9ufVxuXG52YXIgbWFjcm9zX25ld2NvbW1hbmQgPSBmdW5jdGlvbiBuZXdjb21tYW5kKGNvbnRleHQsIGV4aXN0c09LLCBub25leGlzdHNPSykge1xuICB2YXIgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcblxuICBpZiAoYXJnLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxuZXdjb21tYW5kJ3MgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIG1hY3JvIG5hbWVcIik7XG4gIH1cblxuICB2YXIgbmFtZSA9IGFyZ1swXS50ZXh0O1xuICB2YXIgZXhpc3RzID0gY29udGV4dC5pc0RlZmluZWQobmFtZSk7XG5cbiAgaWYgKGV4aXN0cyAmJiAhZXhpc3RzT0spIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcbmV3Y29tbWFuZHtcIiArIG5hbWUgKyBcIn0gYXR0ZW1wdGluZyB0byByZWRlZmluZSBcIiArIChuYW1lICsgXCI7IHVzZSBcXFxccmVuZXdjb21tYW5kXCIpKTtcbiAgfVxuXG4gIGlmICghZXhpc3RzICYmICFub25leGlzdHNPSykge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxyZW5ld2NvbW1hbmR7XCIgKyBuYW1lICsgXCJ9IHdoZW4gY29tbWFuZCBcIiArIG5hbWUgKyBcIiBcIiArIFwiZG9lcyBub3QgeWV0IGV4aXN0OyB1c2UgXFxcXG5ld2NvbW1hbmRcIik7XG4gIH1cblxuICB2YXIgbnVtQXJncyA9IDA7XG4gIGFyZyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgaWYgKGFyZy5sZW5ndGggPT09IDEgJiYgYXJnWzBdLnRleHQgPT09IFwiW1wiKSB7XG4gICAgdmFyIGFyZ1RleHQgPSAnJztcbiAgICB2YXIgdG9rZW4gPSBjb250ZXh0LmV4cGFuZE5leHRUb2tlbigpO1xuXG4gICAgd2hpbGUgKHRva2VuLnRleHQgIT09IFwiXVwiICYmIHRva2VuLnRleHQgIT09IFwiRU9GXCIpIHtcbiAgICAgIC8vIFRPRE86IFNob3VsZCBwcm9wZXJseSBleHBhbmQgYXJnLCBlLmcuLCBpZ25vcmUge31zXG4gICAgICBhcmdUZXh0ICs9IHRva2VuLnRleHQ7XG4gICAgICB0b2tlbiA9IGNvbnRleHQuZXhwYW5kTmV4dFRva2VuKCk7XG4gICAgfVxuXG4gICAgaWYgKCFhcmdUZXh0Lm1hdGNoKC9eXFxzKlswLTldK1xccyokLykpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50czogXCIgKyBhcmdUZXh0KTtcbiAgICB9XG5cbiAgICBudW1BcmdzID0gcGFyc2VJbnQoYXJnVGV4dCk7XG4gICAgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcbiAgfSAvLyBGaW5hbCBhcmcgaXMgdGhlIGV4cGFuc2lvbiBvZiB0aGUgbWFjcm9cblxuXG4gIGNvbnRleHQubWFjcm9zLnNldChuYW1lLCB7XG4gICAgdG9rZW5zOiBhcmcsXG4gICAgbnVtQXJnczogbnVtQXJnc1xuICB9KTtcbiAgcmV0dXJuICcnO1xufTtcblxuZGVmaW5lTWFjcm8oXCJcXFxcbmV3Y29tbWFuZFwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4gbWFjcm9zX25ld2NvbW1hbmQoY29udGV4dCwgZmFsc2UsIHRydWUpO1xufSk7XG5kZWZpbmVNYWNybyhcIlxcXFxyZW5ld2NvbW1hbmRcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIG1hY3Jvc19uZXdjb21tYW5kKGNvbnRleHQsIHRydWUsIGZhbHNlKTtcbn0pO1xuZGVmaW5lTWFjcm8oXCJcXFxccHJvdmlkZWNvbW1hbmRcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIG1hY3Jvc19uZXdjb21tYW5kKGNvbnRleHQsIHRydWUsIHRydWUpO1xufSk7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdyb3VwaW5nXG4vLyBcXGxldFxcYmdyb3VwPXsgXFxsZXRcXGVncm91cD19XG5cbmRlZmluZU1hY3JvKFwiXFxcXGJncm91cFwiLCBcIntcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxlZ3JvdXBcIiwgXCJ9XCIpOyAvLyBTeW1ib2xzIGZyb20gbGF0ZXgubHR4OlxuLy8gXFxkZWZcXGxxe2B9XG4vLyBcXGRlZlxccnF7J31cbi8vIFxcZGVmIFxcYWEge1xcciBhfVxuLy8gXFxkZWYgXFxBQSB7XFxyIEF9XG5cbmRlZmluZU1hY3JvKFwiXFxcXGxxXCIsIFwiYFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJxXCIsIFwiJ1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFhXCIsIFwiXFxcXHIgYVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEFBXCIsIFwiXFxcXHIgQVwiKTsgLy8gQ29weXJpZ2h0IChDKSBhbmQgcmVnaXN0ZXJlZCAoUikgc3ltYm9scy4gVXNlIHJhdyBzeW1ib2wgaW4gTWF0aE1MLlxuLy8gXFxEZWNsYXJlVGV4dENvbW1hbmREZWZhdWx0e1xcdGV4dGNvcHlyaWdodH17XFx0ZXh0Y2lyY2xlZHtjfX1cbi8vIFxcRGVjbGFyZVRleHRDb21tYW5kRGVmYXVsdHtcXHRleHRyZWdpc3RlcmVkfXtcXHRleHRjaXJjbGVkeyVcbi8vICAgICAgXFxjaGVja0BtYXRoZm9udHNcXGZvbnRzaXplXFxzZkBzaXplXFx6QFxcbWF0aEBmb250c2ZhbHNlXFxzZWxlY3Rmb250IFJ9fVxuLy8gXFxEZWNsYXJlUm9idXN0Q29tbWFuZHtcXGNvcHlyaWdodH17JVxuLy8gICAgXFxpZm1tb2Rle1xcbmZzc0B0ZXh0e1xcdGV4dGNvcHlyaWdodH19XFxlbHNlXFx0ZXh0Y29weXJpZ2h0XFxmaX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcdGV4dGNvcHlyaWdodFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcdGV4dGNpcmNsZWR7Y319e1xcXFxjaGFyYMKpfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvcHlyaWdodFwiLCBcIlxcXFxUZXh0T3JNYXRoe1xcXFx0ZXh0Y29weXJpZ2h0fXtcXFxcdGV4dHtcXFxcdGV4dGNvcHlyaWdodH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGV4dHJlZ2lzdGVyZWRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXHRleHRjaXJjbGVke1xcXFxzY3JpcHRzaXplIFJ9fXtcXFxcY2hhcmDCrn1cIik7IC8vIENoYXJhY3RlcnMgb21pdHRlZCBmcm9tIFVuaWNvZGUgcmFuZ2UgMUQ0MDDigJMxRDdGRlxuXG5kZWZpbmVNYWNybyhcIlxcdTIxMkNcIiwgXCJcXFxcbWF0aHNjcntCfVwiKTsgLy8gc2NyaXB0XG5cbmRlZmluZU1hY3JvKFwiXFx1MjEzMFwiLCBcIlxcXFxtYXRoc2Nye0V9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTMxXCIsIFwiXFxcXG1hdGhzY3J7Rn1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMEJcIiwgXCJcXFxcbWF0aHNjcntIfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjExMFwiLCBcIlxcXFxtYXRoc2Nye0l9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTEyXCIsIFwiXFxcXG1hdGhzY3J7TH1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMzNcIiwgXCJcXFxcbWF0aHNjcntNfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjExQlwiLCBcIlxcXFxtYXRoc2Nye1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTJEXCIsIFwiXFxcXG1hdGhmcmFre0N9XCIpOyAvLyBGcmFrdHVyXG5cbmRlZmluZU1hY3JvKFwiXFx1MjEwQ1wiLCBcIlxcXFxtYXRoZnJha3tIfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjEyOFwiLCBcIlxcXFxtYXRoZnJha3tafVwiKTsgLy8gRGVmaW5lIFxcQmJiayB3aXRoIGEgbWFjcm8gdGhhdCB3b3JrcyBpbiBib3RoIEhUTUwgYW5kIE1hdGhNTC5cblxuZGVmaW5lTWFjcm8oXCJcXFxcQmJia1wiLCBcIlxcXFxCYmJ7a31cIik7IC8vIFVuaWNvZGUgbWlkZGxlIGRvdFxuLy8gVGhlIEthVGVYIGZvbnRzIGRvIG5vdCBjb250YWluIFUrMDBCNy4gSW5zdGVhZCwgXFxjZG90cCBkaXNwbGF5c1xuLy8gdGhlIGRvdCBhdCBVKzIyQzUgYW5kIGdpdmVzIGl0IHB1bmN0IHNwYWNpbmcuXG5cbmRlZmluZU1hY3JvKFwiXFx4QjdcIiwgXCJcXFxcY2RvdHBcIik7IC8vIFxcbGxhcCBhbmQgXFxybGFwIHJlbmRlciB0aGVpciBjb250ZW50cyBpbiB0ZXh0IG1vZGVcblxuZGVmaW5lTWFjcm8oXCJcXFxcbGxhcFwiLCBcIlxcXFxtYXRobGxhcHtcXFxcdGV4dHJteyMxfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxybGFwXCIsIFwiXFxcXG1hdGhybGFwe1xcXFx0ZXh0cm17IzF9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNsYXBcIiwgXCJcXFxcbWF0aGNsYXB7XFxcXHRleHRybXsjMX19XCIpOyAvLyBcXG5vdCBpcyBkZWZpbmVkIGJ5IGJhc2UvZm9udG1hdGgubHR4IHZpYVxuLy8gXFxEZWNsYXJlTWF0aFN5bWJvbHtcXG5vdH17XFxtYXRocmVsfXtzeW1ib2xzfXtcIjM2fVxuLy8gSXQncyB0aHVzIHRyZWF0ZWQgbGlrZSBhIFxcbWF0aHJlbCwgYnV0IGRlZmluZWQgYnkgYSBzeW1ib2wgdGhhdCBoYXMgemVyb1xuLy8gd2lkdGggYnV0IGV4dGVuZHMgdG8gdGhlIHJpZ2h0LiAgV2UgdXNlIFxccmxhcCB0byBnZXQgdGhhdCBzcGFjaW5nLlxuLy8gRm9yIE1hdGhNTCB3ZSB3cml0ZSBVKzAzMzggaGVyZS4gYnVpbGRNYXRoTUwuanMgd2lsbCB0aGVuIGRvIHRoZSBvdmVybGF5LlxuXG5kZWZpbmVNYWNybyhcIlxcXFxub3RcIiwgJ1xcXFxodG1sQG1hdGhtbHtcXFxcbWF0aHJlbHtcXFxcbWF0aHJsYXBcXFxcQG5vdH19e1xcXFxjaGFyXCIzMzh9Jyk7IC8vIE5lZ2F0ZWQgc3ltYm9scyBmcm9tIGJhc2UvZm9udG1hdGgubHR4OlxuLy8gXFxkZWZcXG5lcXtcXG5vdD19IFxcbGV0XFxuZT1cXG5lcVxuLy8gXFxEZWNsYXJlUm9idXN0Q29tbWFuZFxuLy8gICBcXG5vdGlue1xcbWF0aHJlbHtcXG1AdGhcXG1hdGhwYWxldHRlXFxjQG5jZWxcXGlufX1cbi8vIFxcZGVmXFxjQG5jZWwjMSMye1xcbUB0aFxcb29hbGlnbnskXFxoZmlsIzFcXG1rZXJuMW11L1xcaGZpbCRcXGNyY3IkIzEjMiR9fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxuZXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXG1hdGhyZWx7XFxcXG5vdD19fXtcXFxcbWF0aHJlbHtcXFxcY2hhcmDiiaB9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5lXCIsIFwiXFxcXG5lcVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjI2MFwiLCBcIlxcXFxuZXFcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxub3RpblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcbWF0aHJlbHt7XFxcXGlufVxcXFxtYXRobGxhcHsvXFxcXG1za2lwMW11fX19XCIgKyBcIntcXFxcbWF0aHJlbHtcXFxcY2hhcmDiiIl9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjIwOVwiLCBcIlxcXFxub3RpblwiKTsgLy8gVW5pY29kZSBzdGFja2VkIHJlbGF0aW9uc1xuXG5kZWZpbmVNYWNybyhcIlxcdTIyNThcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVsez1cXFxca2VybnstMWVtfVxcXFxyYWlzZWJveHswLjRlbX17JFxcXFxzY3JpcHRzaXplXFxcXGZyb3duJH19XCIgKyBcIn17XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1OH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjU5XCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueVxcXFx3ZWRnZX17PX19e1xcXFxtYXRocmVse1xcXFxjaGFyYFxcdTIyNTh9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjI1QVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcc3RhY2tyZWx7XFxcXHRpbnlcXFxcdmVlfXs9fX17XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1QX19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVCXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcc2NyaXB0c2l6ZVxcXFxzdGFyfXs9fX1cIiArIFwie1xcXFxtYXRocmVse1xcXFxjaGFyYFxcdTIyNUJ9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjI1RFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcc3RhY2tyZWx7XFxcXHRpbnlcXFxcbWF0aHJte2RlZn19ez19fVwiICsgXCJ7XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1RH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVFXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueVxcXFxtYXRocm17bX19ez19fVwiICsgXCJ7XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1RX19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVGXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueT99ez19fXtcXFxcbWF0aHJlbHtcXFxcY2hhcmBcXHUyMjVGfX1cIik7IC8vIE1pc2MgVW5pY29kZVxuXG5kZWZpbmVNYWNybyhcIlxcdTI3QzJcIiwgXCJcXFxccGVycFwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjAzQ1wiLCBcIlxcXFxtYXRoY2xvc2V7IVxcXFxta2Vybi0wLjhtdSF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjBDXCIsIFwiXFxcXG5vdG5pXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFDXCIsIFwiXFxcXHVsY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFEXCIsIFwiXFxcXHVyY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFFXCIsIFwiXFxcXGxsY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFGXCIsIFwiXFxcXGxyY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHhBOVwiLCBcIlxcXFxjb3B5cmlnaHRcIik7XG5kZWZpbmVNYWNybyhcIlxceEFFXCIsIFwiXFxcXHRleHRyZWdpc3RlcmVkXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHVGRTBGXCIsIFwiXFxcXHRleHRyZWdpc3RlcmVkXCIpOyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMYVRlWF8yzrVcbi8vIFxcdmRvdHN7XFx2Ym94e1xcYmFzZWxpbmVza2lwNFxccEAgIFxcbGluZXNraXBsaW1pdFxcekBcbi8vIFxca2VybjZcXHBAXFxoYm94ey59XFxoYm94ey59XFxoYm94ey59fX1cbi8vIFdlJ2xsIGNhbGwgXFx2YXJ2ZG90cywgd2hpY2ggZ2V0cyBhIGdseXBoIGZyb20gc3ltYm9scy5qcy5cbi8vIFRoZSB6ZXJvLXdpZHRoIHJ1bGUgZ2V0cyB1cyBhbiBlcXVpdmFsZW50IHRvIHRoZSB2ZXJ0aWNhbCA2cHQga2Vybi5cblxuZGVmaW5lTWFjcm8oXCJcXFxcdmRvdHNcIiwgXCJcXFxcbWF0aG9yZHtcXFxcdmFydmRvdHNcXFxccnVsZXswcHR9ezE1cHR9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjJFRVwiLCBcIlxcXFx2ZG90c1wiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gYW1zbWF0aC5zdHlcbi8vIGh0dHA6Ly9taXJyb3JzLmNvbmNlcnRwYXNzLmNvbS90ZXgtYXJjaGl2ZS9tYWNyb3MvbGF0ZXgvcmVxdWlyZWQvYW1zbWF0aC9hbXNtYXRoLnBkZlxuLy8gSXRhbGljIEdyZWVrIGNhcGl0YWwgbGV0dGVycy4gIEFNUyBkZWZpbmVzIHRoZXNlIHdpdGggXFxEZWNsYXJlTWF0aFN5bWJvbCxcbi8vIGJ1dCB0aGV5IGFyZSBlcXVpdmFsZW50IHRvIFxcbWF0aGl0e1xcTGV0dGVyfS5cblxuZGVmaW5lTWFjcm8oXCJcXFxcdmFyR2FtbWFcIiwgXCJcXFxcbWF0aGl0e1xcXFxHYW1tYX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJEZWx0YVwiLCBcIlxcXFxtYXRoaXR7XFxcXERlbHRhfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclRoZXRhXCIsIFwiXFxcXG1hdGhpdHtcXFxcVGhldGF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyTGFtYmRhXCIsIFwiXFxcXG1hdGhpdHtcXFxcTGFtYmRhfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclhpXCIsIFwiXFxcXG1hdGhpdHtcXFxcWGl9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyUGlcIiwgXCJcXFxcbWF0aGl0e1xcXFxQaX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJTaWdtYVwiLCBcIlxcXFxtYXRoaXR7XFxcXFNpZ21hfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclVwc2lsb25cIiwgXCJcXFxcbWF0aGl0e1xcXFxVcHNpbG9ufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclBoaVwiLCBcIlxcXFxtYXRoaXR7XFxcXFBoaX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJQc2lcIiwgXCJcXFxcbWF0aGl0e1xcXFxQc2l9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyT21lZ2FcIiwgXCJcXFxcbWF0aGl0e1xcXFxPbWVnYX1cIik7IC8vXFxuZXdjb21tYW5ke1xcc3Vic3RhY2t9WzFde1xcc3ViYXJyYXl7Y30jMVxcZW5kc3ViYXJyYXl9XG5cbmRlZmluZU1hY3JvKFwiXFxcXHN1YnN0YWNrXCIsIFwiXFxcXGJlZ2lue3N1YmFycmF5fXtjfSMxXFxcXGVuZHtzdWJhcnJheX1cIik7IC8vIFxccmVuZXdjb21tYW5ke1xcY29sb259e1xcbm9icmVha1xcbXNraXAybXVcXG1hdGhwdW5jdHt9XFxub25zY3JpcHRcbi8vIFxcbWtlcm4tXFx0aGlubXVza2lwezp9XFxtc2tpcDZtdXBsdXMxbXVcXHJlbGF4fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvblwiLCBcIlxcXFxub2JyZWFrXFxcXG1za2lwMm11XFxcXG1hdGhwdW5jdHt9XCIgKyBcIlxcXFxtYXRoY2hvaWNle1xcXFxta2Vybi0zbXV9e1xcXFxta2Vybi0zbXV9e317fXs6fVxcXFxtc2tpcDZtdVwiKTsgLy8gXFxuZXdjb21tYW5ke1xcYm94ZWR9WzFde1xcZmJveHtcXG1AdGgkXFxkaXNwbGF5c3R5bGUjMSR9fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxib3hlZFwiLCBcIlxcXFxmYm94eyRcXFxcZGlzcGxheXN0eWxleyMxfSR9XCIpOyAvLyBcXGRlZlxcaWZme1xcRE9UU0JcXDtcXExvbmdsZWZ0cmlnaHRhcnJvd1xcO31cbi8vIFxcZGVmXFxpbXBsaWVze1xcRE9UU0JcXDtcXExvbmdyaWdodGFycm93XFw7fVxuLy8gXFxkZWZcXGltcGxpZWRieXtcXERPVFNCXFw7XFxMb25nbGVmdGFycm93XFw7fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxpZmZcIiwgXCJcXFxcRE9UU0JcXFxcO1xcXFxMb25nbGVmdHJpZ2h0YXJyb3dcXFxcO1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGltcGxpZXNcIiwgXCJcXFxcRE9UU0JcXFxcO1xcXFxMb25ncmlnaHRhcnJvd1xcXFw7XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaW1wbGllZGJ5XCIsIFwiXFxcXERPVFNCXFxcXDtcXFxcTG9uZ2xlZnRhcnJvd1xcXFw7XCIpOyAvLyBBTVNNYXRoJ3MgYXV0b21hdGljIFxcZG90cywgYmFzZWQgb24gXFxtZG90c0BAIG1hY3JvLlxuXG52YXIgZG90c0J5VG9rZW4gPSB7XG4gICcsJzogJ1xcXFxkb3RzYycsXG4gICdcXFxcbm90JzogJ1xcXFxkb3RzYicsXG4gIC8vIFxca2V5YmluQCBjaGVja3MgZm9yIHRoZSBmb2xsb3dpbmc6XG4gICcrJzogJ1xcXFxkb3RzYicsXG4gICc9JzogJ1xcXFxkb3RzYicsXG4gICc8JzogJ1xcXFxkb3RzYicsXG4gICc+JzogJ1xcXFxkb3RzYicsXG4gICctJzogJ1xcXFxkb3RzYicsXG4gICcqJzogJ1xcXFxkb3RzYicsXG4gICc6JzogJ1xcXFxkb3RzYicsXG4gIC8vIFN5bWJvbHMgd2hvc2UgZGVmaW5pdGlvbiBzdGFydHMgd2l0aCBcXERPVFNCOlxuICAnXFxcXERPVFNCJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcY29wcm9kJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcYmlndmVlJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcYmlnd2VkZ2UnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWd1cGx1cyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ2NhcCc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ2N1cCc6ICdcXFxcZG90c2InLFxuICAnXFxcXHByb2QnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxzdW0nOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWdvdGltZXMnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWdvcGx1cyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ29kb3QnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWdzcWN1cCc6ICdcXFxcZG90c2InLFxuICAnXFxcXEFuZCc6ICdcXFxcZG90c2InLFxuICAnXFxcXGxvbmdyaWdodGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxcTG9uZ3JpZ2h0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxsb25nbGVmdGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxcTG9uZ2xlZnRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGxvbmdsZWZ0cmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXExvbmdsZWZ0cmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXG1hcHN0byc6ICdcXFxcZG90c2InLFxuICAnXFxcXGxvbmdtYXBzdG8nOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxob29rcmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGRvdGVxJzogJ1xcXFxkb3RzYicsXG4gIC8vIFN5bWJvbHMgd2hvc2UgZGVmaW5pdGlvbiBzdGFydHMgd2l0aCBcXG1hdGhiaW46XG4gICdcXFxcbWF0aGJpbic6ICdcXFxcZG90c2InLFxuICAvLyBTeW1ib2xzIHdob3NlIGRlZmluaXRpb24gc3RhcnRzIHdpdGggXFxtYXRocmVsOlxuICAnXFxcXG1hdGhyZWwnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxyZWxiYXInOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxSZWxiYXInOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFx4cmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXHhsZWZ0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgLy8gU3ltYm9scyB3aG9zZSBkZWZpbml0aW9uIHN0YXJ0cyB3aXRoIFxcRE9UU0k6XG4gICdcXFxcRE9UU0knOiAnXFxcXGRvdHNpJyxcbiAgJ1xcXFxpbnQnOiAnXFxcXGRvdHNpJyxcbiAgJ1xcXFxvaW50JzogJ1xcXFxkb3RzaScsXG4gICdcXFxcaWludCc6ICdcXFxcZG90c2knLFxuICAnXFxcXGlpaW50JzogJ1xcXFxkb3RzaScsXG4gICdcXFxcaWlpaW50JzogJ1xcXFxkb3RzaScsXG4gICdcXFxcaWRvdHNpbnQnOiAnXFxcXGRvdHNpJyxcbiAgLy8gU3ltYm9scyB3aG9zZSBkZWZpbml0aW9uIHN0YXJ0cyB3aXRoIFxcRE9UU1g6XG4gICdcXFxcRE9UU1gnOiAnXFxcXGRvdHN4J1xufTtcbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgLy8gVE9ETzogSWYgdXNlZCBpbiB0ZXh0IG1vZGUsIHNob3VsZCBleHBhbmQgdG8gXFx0ZXh0ZWxsaXBzaXMuXG4gIC8vIEhvd2V2ZXIsIGluIEthVGVYLCBcXHRleHRlbGxpcHNpcyBhbmQgXFxsZG90cyBiZWhhdmUgdGhlIHNhbWVcbiAgLy8gKGluIHRleHQgbW9kZSksIGFuZCBpdCdzIHVubGlrZWx5IHdlJ2Qgc2VlIGFueSBvZiB0aGUgbWF0aCBjb21tYW5kc1xuICAvLyB0aGF0IGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgXFxkb3RzIHdoZW4gaW4gdGV4dCBtb2RlLiAgU28gZmluZSBmb3Igbm93XG4gIC8vICh1bnRpbCB3ZSBzdXBwb3J0IFxcaWZtbW9kZSAuLi4gXFxlbHNlIC4uLiBcXGZpKS5cbiAgdmFyIHRoZWRvdHMgPSAnXFxcXGRvdHNvJztcbiAgdmFyIG5leHQgPSBjb250ZXh0LmV4cGFuZEFmdGVyRnV0dXJlKCkudGV4dDtcblxuICBpZiAobmV4dCBpbiBkb3RzQnlUb2tlbikge1xuICAgIHRoZWRvdHMgPSBkb3RzQnlUb2tlbltuZXh0XTtcbiAgfSBlbHNlIGlmIChuZXh0LnN1YnN0cigwLCA0KSA9PT0gJ1xcXFxub3QnKSB7XG4gICAgdGhlZG90cyA9ICdcXFxcZG90c2InO1xuICB9IGVsc2UgaWYgKG5leHQgaW4gc3JjX3N5bWJvbHMubWF0aCkge1xuICAgIGlmICh1dGlscy5jb250YWlucyhbJ2JpbicsICdyZWwnXSwgc3JjX3N5bWJvbHMubWF0aFtuZXh0XS5ncm91cCkpIHtcbiAgICAgIHRoZWRvdHMgPSAnXFxcXGRvdHNiJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhlZG90cztcbn0pO1xudmFyIHNwYWNlQWZ0ZXJEb3RzID0ge1xuICAvLyBcXHJpZ2h0ZGVsaW1AIGNoZWNrcyBmb3IgdGhlIGZvbGxvd2luZzpcbiAgJyknOiB0cnVlLFxuICAnXSc6IHRydWUsXG4gICdcXFxccmJyYWNrJzogdHJ1ZSxcbiAgJ1xcXFx9JzogdHJ1ZSxcbiAgJ1xcXFxyYnJhY2UnOiB0cnVlLFxuICAnXFxcXHJhbmdsZSc6IHRydWUsXG4gICdcXFxccmNlaWwnOiB0cnVlLFxuICAnXFxcXHJmbG9vcic6IHRydWUsXG4gICdcXFxccmdyb3VwJzogdHJ1ZSxcbiAgJ1xcXFxybW91c3RhY2hlJzogdHJ1ZSxcbiAgJ1xcXFxyaWdodCc6IHRydWUsXG4gICdcXFxcYmlncic6IHRydWUsXG4gICdcXFxcYmlnZ3InOiB0cnVlLFxuICAnXFxcXEJpZ3InOiB0cnVlLFxuICAnXFxcXEJpZ2dyJzogdHJ1ZSxcbiAgLy8gXFxleHRyYUAgYWxzbyB0ZXN0cyBmb3IgdGhlIGZvbGxvd2luZzpcbiAgJyQnOiB0cnVlLFxuICAvLyBcXGV4dHJhcEAgY2hlY2tzIGZvciB0aGUgZm9sbG93aW5nOlxuICAnOyc6IHRydWUsXG4gICcuJzogdHJ1ZSxcbiAgJywnOiB0cnVlXG59O1xuZGVmaW5lTWFjcm8oXCJcXFxcZG90c29cIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIG5leHQgPSBjb250ZXh0LmZ1dHVyZSgpLnRleHQ7XG5cbiAgaWYgKG5leHQgaW4gc3BhY2VBZnRlckRvdHMpIHtcbiAgICByZXR1cm4gXCJcXFxcbGRvdHNcXFxcLFwiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBcIlxcXFxsZG90c1wiO1xuICB9XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNjXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBuZXh0ID0gY29udGV4dC5mdXR1cmUoKS50ZXh0OyAvLyBcXGRvdHNjIHVzZXMgXFxleHRyYUAgYnV0IG5vdCBcXGV4dHJhcEAsIGluc3RlYWQgc3BlY2lhbGx5IGNoZWNraW5nIGZvclxuICAvLyAnOycgYW5kICcuJywgYnV0IGRvZXNuJ3QgY2hlY2sgZm9yICcsJy5cblxuICBpZiAobmV4dCBpbiBzcGFjZUFmdGVyRG90cyAmJiBuZXh0ICE9PSAnLCcpIHtcbiAgICByZXR1cm4gXCJcXFxcbGRvdHNcXFxcLFwiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBcIlxcXFxsZG90c1wiO1xuICB9XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGNkb3RzXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBuZXh0ID0gY29udGV4dC5mdXR1cmUoKS50ZXh0O1xuXG4gIGlmIChuZXh0IGluIHNwYWNlQWZ0ZXJEb3RzKSB7XG4gICAgcmV0dXJuIFwiXFxcXEBjZG90c1xcXFwsXCI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwiXFxcXEBjZG90c1wiO1xuICB9XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNiXCIsIFwiXFxcXGNkb3RzXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZG90c21cIiwgXCJcXFxcY2RvdHNcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxkb3RzaVwiLCBcIlxcXFwhXFxcXGNkb3RzXCIpOyAvLyBhbXNtYXRoIGRvZXNuJ3QgYWN0dWFsbHkgZGVmaW5lIFxcZG90c3gsIGJ1dCBcXGRvdHMgZm9sbG93ZWQgYnkgYSBtYWNyb1xuLy8gc3RhcnRpbmcgd2l0aCBcXERPVFNYIGltcGxpZXMgXFxkb3RzbywgYW5kIHRoZW4gXFxleHRyYUAgZGV0ZWN0cyB0aGlzIGNhc2Vcbi8vIGFuZCBmb3JjZXMgdGhlIGFkZGVkIGBcXCxgLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxkb3RzeFwiLCBcIlxcXFxsZG90c1xcXFwsXCIpOyAvLyBcXGxldFxcRE9UU0lcXHJlbGF4XG4vLyBcXGxldFxcRE9UU0JcXHJlbGF4XG4vLyBcXGxldFxcRE9UU1hcXHJlbGF4XG5cbmRlZmluZU1hY3JvKFwiXFxcXERPVFNJXCIsIFwiXFxcXHJlbGF4XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcRE9UU0JcIiwgXCJcXFxccmVsYXhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxET1RTWFwiLCBcIlxcXFxyZWxheFwiKTsgLy8gU3BhY2luZywgYmFzZWQgb24gYW1zbWF0aC5zdHkncyBvdmVycmlkZSBvZiBMYVRlWCBkZWZhdWx0c1xuLy8gXFxEZWNsYXJlUm9idXN0Q29tbWFuZHtcXHRtc3BhY2V9WzNdeyVcbi8vICAgXFxpZm1tb2RlXFxtc2tpcCMxIzJcXGVsc2VcXGtlcm4jMSMzXFxmaVxccmVsYXh9XG5cbmRlZmluZU1hY3JvKFwiXFxcXHRtc3BhY2VcIiwgXCJcXFxcVGV4dE9yTWF0aHtcXFxca2VybiMxIzN9e1xcXFxtc2tpcCMxIzJ9XFxcXHJlbGF4XCIpOyAvLyBcXHJlbmV3Y29tbWFuZHtcXCx9e1xcdG1zcGFjZStcXHRoaW5tdXNraXB7LjE2NjdlbX19XG4vLyBUT0RPOiBtYXRoIG1vZGUgc2hvdWxkIHVzZSBcXHRoaW5tdXNraXBcblxuZGVmaW5lTWFjcm8oXCJcXFxcLFwiLCBcIlxcXFx0bXNwYWNlK3szbXV9ey4xNjY3ZW19XCIpOyAvLyBcXGxldFxcdGhpbnNwYWNlXFwsXG5cbmRlZmluZU1hY3JvKFwiXFxcXHRoaW5zcGFjZVwiLCBcIlxcXFwsXCIpOyAvLyBcXGRlZlxcPntcXG1za2lwXFxtZWRtdXNraXB9XG4vLyBcXHJlbmV3Y29tbWFuZHtcXDp9e1xcdG1zcGFjZStcXG1lZG11c2tpcHsuMjIyMmVtfX1cbi8vIFRPRE86IFxcPiBhbmQgbWF0aCBtb2RlIG9mIFxcOiBzaG91bGQgdXNlIFxcbWVkbXVza2lwID0gNG11IHBsdXMgMm11IG1pbnVzIDRtdVxuXG5kZWZpbmVNYWNybyhcIlxcXFw+XCIsIFwiXFxcXG1za2lwezRtdX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFw6XCIsIFwiXFxcXHRtc3BhY2UrezRtdX17LjIyMjJlbX1cIik7IC8vIFxcbGV0XFxtZWRzcGFjZVxcOlxuXG5kZWZpbmVNYWNybyhcIlxcXFxtZWRzcGFjZVwiLCBcIlxcXFw6XCIpOyAvLyBcXHJlbmV3Y29tbWFuZHtcXDt9e1xcdG1zcGFjZStcXHRoaWNrbXVza2lwey4yNzc3ZW19fVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFx0aGlja211c2tpcCA9IDVtdSBwbHVzIDVtdVxuXG5kZWZpbmVNYWNybyhcIlxcXFw7XCIsIFwiXFxcXHRtc3BhY2UrezVtdX17LjI3NzdlbX1cIik7IC8vIFxcbGV0XFx0aGlja3NwYWNlXFw7XG5cbmRlZmluZU1hY3JvKFwiXFxcXHRoaWNrc3BhY2VcIiwgXCJcXFxcO1wiKTsgLy8gXFxyZW5ld2NvbW1hbmR7XFwhfXtcXHRtc3BhY2UtXFx0aGlubXVza2lwey4xNjY3ZW19fVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFx0aGlubXVza2lwXG5cbmRlZmluZU1hY3JvKFwiXFxcXCFcIiwgXCJcXFxcdG1zcGFjZS17M211fXsuMTY2N2VtfVwiKTsgLy8gXFxsZXRcXG5lZ3RoaW5zcGFjZVxcIVxuXG5kZWZpbmVNYWNybyhcIlxcXFxuZWd0aGluc3BhY2VcIiwgXCJcXFxcIVwiKTsgLy8gXFxuZXdjb21tYW5ke1xcbmVnbWVkc3BhY2V9e1xcdG1zcGFjZS1cXG1lZG11c2tpcHsuMjIyMmVtfX1cbi8vIFRPRE86IG1hdGggbW9kZSBzaG91bGQgdXNlIFxcbWVkbXVza2lwXG5cbmRlZmluZU1hY3JvKFwiXFxcXG5lZ21lZHNwYWNlXCIsIFwiXFxcXHRtc3BhY2UtezRtdX17LjIyMjJlbX1cIik7IC8vIFxcbmV3Y29tbWFuZHtcXG5lZ3RoaWNrc3BhY2V9e1xcdG1zcGFjZS1cXHRoaWNrbXVza2lwey4yNzc3ZW19fVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFx0aGlja211c2tpcFxuXG5kZWZpbmVNYWNybyhcIlxcXFxuZWd0aGlja3NwYWNlXCIsIFwiXFxcXHRtc3BhY2UtezVtdX17LjI3N2VtfVwiKTsgLy8gXFxkZWZcXGVuc3BhY2V7XFxrZXJuLjVlbSB9XG5cbmRlZmluZU1hY3JvKFwiXFxcXGVuc3BhY2VcIiwgXCJcXFxca2Vybi41ZW0gXCIpOyAvLyBcXGRlZlxcZW5za2lwe1xcaHNraXAuNWVtXFxyZWxheH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcZW5za2lwXCIsIFwiXFxcXGhza2lwLjVlbVxcXFxyZWxheFwiKTsgLy8gXFxkZWZcXHF1YWR7XFxoc2tpcDFlbVxccmVsYXh9XG5cbmRlZmluZU1hY3JvKFwiXFxcXHF1YWRcIiwgXCJcXFxcaHNraXAxZW1cXFxccmVsYXhcIik7IC8vIFxcZGVmXFxxcXVhZHtcXGhza2lwMmVtXFxyZWxheH1cblxuZGVmaW5lTWFjcm8oXCJcXFxccXF1YWRcIiwgXCJcXFxcaHNraXAyZW1cXFxccmVsYXhcIik7IC8vIFxcdGFnQGluQGRpc3BsYXkgZm9ybSBvZiBcXHRhZ1xuXG5kZWZpbmVNYWNybyhcIlxcXFx0YWdcIiwgXCJcXFxcQGlmc3RhclxcXFx0YWdAbGl0ZXJhbFxcXFx0YWdAcGFyZW5cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0YWdAcGFyZW5cIiwgXCJcXFxcdGFnQGxpdGVyYWx7KHsjMX0pfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHRhZ0BsaXRlcmFsXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0Lm1hY3Jvcy5nZXQoXCJcXFxcZGZAdGFnXCIpKSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTXVsdGlwbGUgXFxcXHRhZ1wiKTtcbiAgfVxuXG4gIHJldHVybiBcIlxcXFxnZGVmXFxcXGRmQHRhZ3tcXFxcdGV4dHsjMX19XCI7XG59KTsgLy8gXFxyZW5ld2NvbW1hbmR7XFxibW9kfXtcXG5vbnNjcmlwdFxcbXNraXAtXFxtZWRtdXNraXBcXG1rZXJuNW11XFxtYXRoYmluXG4vLyAgIHtcXG9wZXJhdG9yQGZvbnQgbW9kfVxccGVuYWx0eTkwMFxuLy8gICBcXG1rZXJuNW11XFxub25zY3JpcHRcXG1za2lwLVxcbWVkbXVza2lwfVxuLy8gXFxuZXdjb21tYW5ke1xccG9kfVsxXXtcXGFsbG93YnJlYWtcbi8vICAgXFxpZkBkaXNwbGF5XFxta2VybjE4bXVcXGVsc2VcXG1rZXJuOG11XFxmaSgjMSl9XG4vLyBcXHJlbmV3Y29tbWFuZHtcXHBtb2R9WzFde1xccG9ke3tcXG9wZXJhdG9yQGZvbnQgbW9kfVxcbWtlcm42bXUjMX19XG4vLyBcXG5ld2NvbW1hbmR7XFxtb2R9WzFde1xcYWxsb3dicmVha1xcaWZAZGlzcGxheVxcbWtlcm4xOG11XG4vLyAgIFxcZWxzZVxcbWtlcm4xMm11XFxmaXtcXG9wZXJhdG9yQGZvbnQgbW9kfVxcLFxcLCMxfVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFxtZWRtdXNraXAgPSA0bXUgcGx1cyAybXUgbWludXMgNG11XG5cbmRlZmluZU1hY3JvKFwiXFxcXGJtb2RcIiwgXCJcXFxcbWF0aGNob2ljZXtcXFxcbXNraXAxbXV9e1xcXFxtc2tpcDFtdX17XFxcXG1za2lwNW11fXtcXFxcbXNraXA1bXV9XCIgKyBcIlxcXFxtYXRoYmlue1xcXFxybSBtb2R9XCIgKyBcIlxcXFxtYXRoY2hvaWNle1xcXFxtc2tpcDFtdX17XFxcXG1za2lwMW11fXtcXFxcbXNraXA1bXV9e1xcXFxtc2tpcDVtdX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwb2RcIiwgXCJcXFxcYWxsb3dicmVha1wiICsgXCJcXFxcbWF0aGNob2ljZXtcXFxcbWtlcm4xOG11fXtcXFxcbWtlcm44bXV9e1xcXFxta2VybjhtdX17XFxcXG1rZXJuOG11fSgjMSlcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwbW9kXCIsIFwiXFxcXHBvZHt7XFxcXHJtIG1vZH1cXFxcbWtlcm42bXUjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtb2RcIiwgXCJcXFxcYWxsb3dicmVha1wiICsgXCJcXFxcbWF0aGNob2ljZXtcXFxcbWtlcm4xOG11fXtcXFxcbWtlcm4xMm11fXtcXFxcbWtlcm4xMm11fXtcXFxcbWtlcm4xMm11fVwiICsgXCJ7XFxcXHJtIG1vZH1cXFxcLFxcXFwsIzFcIik7IC8vIFxccG1iICAgIC0tICAgQSBzaW11bGF0aW9uIG9mIGJvbGQuXG4vLyBUaGUgdmVyc2lvbiBpbiBhbWJzeS5zdHkgd29ya3MgYnkgdHlwZXNldHRpbmcgdGhyZWUgY29waWVzIG9mIHRoZSBhcmd1bWVudFxuLy8gd2l0aCBzbWFsbCBvZmZzZXRzLiBXZSB1c2UgdHdvIGNvcGllcy4gV2Ugb21pdCB0aGUgdmVydGljYWwgb2Zmc2V0IGJlY2F1c2Vcbi8vIG9mIHJlbmRlcmluZyBwcm9ibGVtcyB0aGF0IG1ha2VWTGlzdCBlbmNvdW50ZXJzIGluIFNhZmFyaS5cblxuZGVmaW5lTWFjcm8oXCJcXFxccG1iXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcQGJpbnJlbHsjMX17XFxcXG1hdGhybGFweyMxfVxcXFxrZXJuMC41cHgjMX19XCIgKyBcIntcXFxcbWF0aGJmeyMxfX1cIik7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIExhVGVYIHNvdXJjZTJlXG4vLyBcXFxcIGRlZmF1bHRzIHRvIFxcbmV3bGluZSwgYnV0IGNoYW5nZXMgdG8gXFxjciB3aXRoaW4gYXJyYXkgZW52aXJvbm1lbnRcblxuZGVmaW5lTWFjcm8oXCJcXFxcXFxcXFwiLCBcIlxcXFxuZXdsaW5lXCIpOyAvLyBcXGRlZlxcVGVYe1RcXGtlcm4tLjE2NjdlbVxcbG93ZXIuNWV4XFxoYm94e0V9XFxrZXJuLS4xMjVlbVhcXEB9XG4vLyBUT0RPOiBEb2Vzbid0IG5vcm1hbGx5IHdvcmsgaW4gbWF0aCBtb2RlIGJlY2F1c2UgXFxAIGZhaWxzLiAgS2FUZVggZG9lc24ndFxuLy8gc3VwcG9ydCBcXEAgeWV0LCBzbyB0aGF0J3Mgb21pdHRlZCwgYW5kIHdlIGFkZCBcXHRleHQgc28gdGhhdCB0aGUgcmVzdWx0XG4vLyBkb2Vzbid0IGxvb2sgZnVubnkgaW4gbWF0aCBtb2RlLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxUZVhcIiwgXCJcXFxcdGV4dHJte1xcXFxodG1sQG1hdGhtbHtcIiArIFwiVFxcXFxrZXJuLS4xNjY3ZW1cXFxccmFpc2Vib3h7LS41ZXh9e0V9XFxcXGtlcm4tLjEyNWVtWFwiICsgXCJ9e1RlWH19XCIpOyAvLyBcXERlY2xhcmVSb2J1c3RDb21tYW5ke1xcTGFUZVh9e0xcXGtlcm4tLjM2ZW0lXG4vLyAgICAgICAgIHtcXHNib3hcXHpAIFQlXG4vLyAgICAgICAgICBcXHZib3ggdG9cXGh0XFx6QHtcXGhib3h7XFxjaGVja0BtYXRoZm9udHNcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcZm9udHNpemVcXHNmQHNpemVcXHpAXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXG1hdGhAZm9udHNmYWxzZVxcc2VsZWN0Zm9udFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQX0lXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICBcXHZzc30lXG4vLyAgICAgICAgIH0lXG4vLyAgICAgICAgIFxca2Vybi0uMTVlbSVcbi8vICAgICAgICAgXFxUZVh9XG4vLyBUaGlzIGNvZGUgYWxpZ25zIHRoZSB0b3Agb2YgdGhlIEEgd2l0aCB0aGUgVCAoZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgVGVYJ3Ncbi8vIGJveGVzLCB0aG91Z2ggdmlzdWFsbHkgdGhlIEEgYXBwZWFycyB0byBleHRlbmQgYWJvdmUgc2xpZ2h0bHkpLlxuLy8gV2UgY29tcHV0ZSB0aGUgY29ycmVzcG9uZGluZyBcXHJhaXNlYm94IHdoZW4gQSBpcyByZW5kZXJlZCBpbiBcXG5vcm1hbHNpemVcbi8vIFxcc2NyaXB0c3R5bGUsIHdoaWNoIGhhcyBhIHNjYWxlIGZhY3RvciBvZiAwLjcgKHNlZSBPcHRpb25zLmpzKS5cblxudmFyIGxhdGV4UmFpc2VBID0gZm9udE1ldHJpY3NEYXRhWydNYWluLVJlZ3VsYXInXVtcIlRcIi5jaGFyQ29kZUF0KDApXVsxXSAtIDAuNyAqIGZvbnRNZXRyaWNzRGF0YVsnTWFpbi1SZWd1bGFyJ11bXCJBXCIuY2hhckNvZGVBdCgwKV1bMV0gKyBcImVtXCI7XG5kZWZpbmVNYWNybyhcIlxcXFxMYVRlWFwiLCBcIlxcXFx0ZXh0cm17XFxcXGh0bWxAbWF0aG1se1wiICsgKFwiTFxcXFxrZXJuLS4zNmVtXFxcXHJhaXNlYm94e1wiICsgbGF0ZXhSYWlzZUEgKyBcIn17XFxcXHNjcmlwdHN0eWxlIEF9XCIpICsgXCJcXFxca2Vybi0uMTVlbVxcXFxUZVh9e0xhVGVYfX1cIik7IC8vIE5ldyBLYVRlWCBsb2dvIGJhc2VkIG9uIHR3ZWFraW5nIExhVGVYIGxvZ29cblxuZGVmaW5lTWFjcm8oXCJcXFxcS2FUZVhcIiwgXCJcXFxcdGV4dHJte1xcXFxodG1sQG1hdGhtbHtcIiArIChcIktcXFxca2Vybi0uMTdlbVxcXFxyYWlzZWJveHtcIiArIGxhdGV4UmFpc2VBICsgXCJ9e1xcXFxzY3JpcHRzdHlsZSBBfVwiKSArIFwiXFxcXGtlcm4tLjE1ZW1cXFxcVGVYfXtLYVRlWH19XCIpOyAvLyBcXERlY2xhcmVSb2J1c3RDb21tYW5kXFxoc3BhY2V7XFxAaWZzdGFyXFxAaHNwYWNlclxcQGhzcGFjZX1cbi8vIFxcZGVmXFxAaHNwYWNlIzF7XFxoc2tpcCAgIzFcXHJlbGF4fVxuLy8gXFxkZWZcXEBoc3BhY2VyIzF7XFx2cnVsZSBcXEB3aWR0aFxcekBcXG5vYnJlYWtcbi8vICAgICAgICAgICAgICAgICBcXGhza2lwICMxXFxoc2tpcCBcXHpAc2tpcH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcaHNwYWNlXCIsIFwiXFxcXEBpZnN0YXJcXFxcQGhzcGFjZXJcXFxcQGhzcGFjZVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEBoc3BhY2VcIiwgXCJcXFxcaHNraXAgIzFcXFxccmVsYXhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxAaHNwYWNlclwiLCBcIlxcXFxydWxlezBwdH17MHB0fVxcXFxoc2tpcCAjMVxcXFxyZWxheFwiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gbWF0aHRvb2xzLnN0eVxuLy9cXHByb3ZpZGVjb21tYW5kXFxvcmRpbmFyeWNvbG9uezp9XG5cbmRlZmluZU1hY3JvKFwiXFxcXG9yZGluYXJ5Y29sb25cIiwgXCI6XCIpOyAvL1xcZGVmXFx2Y2VudGNvbG9ue1xcbWF0aHJlbHtcXG1hdGhvcFxcb3JkaW5hcnljb2xvbn19XG4vL1RPRE8oZWRlbWFpbmUpOiBOb3QgeWV0IGNlbnRlcmVkLiBGaXggdmlhIFxccmFpc2Vib3ggb3IgIzcyNlxuXG5kZWZpbmVNYWNybyhcIlxcXFx2Y2VudGNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXG1hdGhvcFxcXFxvcmRpbmFyeWNvbG9ufVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGRibGNvbG9ue1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLS45bXV9XFx2Y2VudGNvbG9ufVxuXG5kZWZpbmVNYWNybyhcIlxcXFxkYmxjb2xvblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tLjltdX1cXFxcdmNlbnRjb2xvbn19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjIyMzd9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGNvbG9uZXFxe1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fT19XG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uZXFxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHtcXFxcdmNlbnRjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX09fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjI1NH19XCIpOyAvLyDiiZRcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxDb2xvbmVxcXtcXGRibGNvbG9uXFxtYXRocmVse1xcbWtlcm4tMS4ybXV9PX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25lcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFxkYmxjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX09fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIzN1xcXFxjaGFyXFxcIjNkfX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxjb2xvbmVxe1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcbWF0aHJlbHstfX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25lcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXG1hdGhyZWx7LX19fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIzYVxcXFxjaGFyXFxcIjIyMTJ9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXENvbG9uZXF7XFxkYmxjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcbWF0aHJlbHstfX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25lcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXGRibGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxtYXRocmVsey19fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIzN1xcXFxjaGFyXFxcIjIyMTJ9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGVxcWNvbG9uez1cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXHZjZW50Y29sb259XG5cbmRlZmluZU1hY3JvKFwiXFxcXGVxcWNvbG9uXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHs9XFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFx2Y2VudGNvbG9ufX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjI1NX19XCIpOyAvLyDiiZVcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxFcXFjb2xvbns9XFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxkYmxjb2xvbn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcRXFxY29sb25cIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVsez1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGRibGNvbG9ufX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiM2RcXFxcY2hhclxcXCIyMjM3fX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxlcWNvbG9ue1xcbWF0aHJlbHstfVxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcdmNlbnRjb2xvbn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcZXFjb2xvblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXG1hdGhyZWx7LX1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHZjZW50Y29sb259fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjM5fX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxFcWNvbG9ue1xcbWF0aHJlbHstfVxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcZGJsY29sb259XG5cbmRlZmluZU1hY3JvKFwiXFxcXEVxY29sb25cIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFxtYXRocmVsey19XFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxkYmxjb2xvbn19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjIyMTJcXFxcY2hhclxcXCIyMjM3fX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxjb2xvbmFwcHJveHtcXHZjZW50Y29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXGFwcHJveH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25hcHByb3hcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFx2Y2VudGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxhcHByb3h9fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIzYVxcXFxjaGFyXFxcIjIyNDh9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXENvbG9uYXBwcm94e1xcZGJsY29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXGFwcHJveH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25hcHByb3hcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFxkYmxjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcYXBwcm94fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIzN1xcXFxjaGFyXFxcIjIyNDh9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGNvbG9uc2lte1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcc2ltfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbnNpbVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHNpbX19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjNhXFxcXGNoYXJcXFwiMjIzY319XCIpOyAvLyBcXHByb3ZpZGVjb21tYW5kKlxcQ29sb25zaW17XFxkYmxjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcc2ltfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxDb2xvbnNpbVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXGRibGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxzaW19fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjM3XFxcXGNoYXJcXFwiMjIzY319XCIpOyAvLyBTb21lIFVuaWNvZGUgY2hhcmFjdGVycyBhcmUgaW1wbGVtZW50ZWQgd2l0aCBtYWNyb3MgdG8gbWF0aHRvb2xzIGZ1bmN0aW9ucy5cblxuZGVmaW5lTWFjcm8oXCJcXHUyMjM3XCIsIFwiXFxcXGRibGNvbG9uXCIpOyAvLyA6OlxuXG5kZWZpbmVNYWNybyhcIlxcdTIyMzlcIiwgXCJcXFxcZXFjb2xvblwiKTsgLy8gLTpcblxuZGVmaW5lTWFjcm8oXCJcXHUyMjU0XCIsIFwiXFxcXGNvbG9uZXFxXCIpOyAvLyA6PVxuXG5kZWZpbmVNYWNybyhcIlxcdTIyNTVcIiwgXCJcXFxcZXFxY29sb25cIik7IC8vID06XG5cbmRlZmluZU1hY3JvKFwiXFx1MkE3NFwiLCBcIlxcXFxDb2xvbmVxcVwiKTsgLy8gOjo9XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBjb2xvbmVxdWFscy5zdHlcbi8vIEFsdGVybmF0ZSBuYW1lcyBmb3IgbWF0aHRvb2xzJ3MgbWFjcm9zOlxuXG5kZWZpbmVNYWNybyhcIlxcXFxyYXRpb1wiLCBcIlxcXFx2Y2VudGNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25jb2xvblwiLCBcIlxcXFxkYmxjb2xvblwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uZXF1YWxzXCIsIFwiXFxcXGNvbG9uZXFxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25jb2xvbmVxdWFsc1wiLCBcIlxcXFxDb2xvbmVxcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGVxdWFsc2NvbG9uXCIsIFwiXFxcXGVxcWNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZXF1YWxzY29sb25jb2xvblwiLCBcIlxcXFxFcXFjb2xvblwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9ubWludXNcIiwgXCJcXFxcY29sb25lcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uY29sb25taW51c1wiLCBcIlxcXFxDb2xvbmVxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWludXNjb2xvblwiLCBcIlxcXFxlcWNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWludXNjb2xvbmNvbG9uXCIsIFwiXFxcXEVxY29sb25cIik7IC8vIFxcY29sb25hcHByb3ggbmFtZSBpcyBzYW1lIGluIG1hdGh0b29scyBhbmQgY29sb25lcXVhbHMuXG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uY29sb25hcHByb3hcIiwgXCJcXFxcQ29sb25hcHByb3hcIik7IC8vIFxcY29sb25zaW0gbmFtZSBpcyBzYW1lIGluIG1hdGh0b29scyBhbmQgY29sb25lcXVhbHMuXG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uY29sb25zaW1cIiwgXCJcXFxcQ29sb25zaW1cIik7IC8vIEFkZGl0aW9uYWwgbWFjcm9zLCBpbXBsZW1lbnRlZCBieSBhbmFsb2d5IHdpdGggbWF0aHRvb2xzIGRlZmluaXRpb25zOlxuXG5kZWZpbmVNYWNybyhcIlxcXFxzaW1jb2xvblwiLCBcIlxcXFxtYXRocmVse1xcXFxzaW1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHZjZW50Y29sb259XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc2ltY29sb25jb2xvblwiLCBcIlxcXFxtYXRocmVse1xcXFxzaW1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGRibGNvbG9ufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFwcHJveGNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXGFwcHJveFxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcdmNlbnRjb2xvbn1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxhcHByb3hjb2xvbmNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXGFwcHJveFxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcZGJsY29sb259XCIpOyAvLyBQcmVzZW50IGluIG5ld3R4bWF0aCwgcHhmb250cyBhbmQgdHhmb250c1xuXG5kZWZpbmVNYWNybyhcIlxcXFxub3RuaVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcbm90XFxcXG5pfXtcXFxcbWF0aHJlbHtcXFxcY2hhcmBcXHUyMjBDfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsaW1zdXBcIiwgXCJcXFxcRE9UU0JcXFxcb3BlcmF0b3JuYW1lKntsaW1cXFxcLHN1cH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsaW1pbmZcIiwgXCJcXFxcRE9UU0JcXFxcb3BlcmF0b3JuYW1lKntsaW1cXFxcLGluZn1cIik7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1hdGhNTCBhbHRlcm5hdGVzIGZvciBLYVRlWCBnbHlwaHMgaW4gdGhlIFVuaWNvZGUgcHJpdmF0ZSBhcmVhXG5cbmRlZmluZU1hY3JvKFwiXFxcXGd2ZXJ0bmVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQGd2ZXJ0bmVxcX17XFx1MjI2OX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsdmVydG5lcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBsdmVydG5lcXF9e1xcdTIyNjh9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbmdlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuZ2VxcX17XFx1MjI3MX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxuZ2Vxc2xhbnRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuZ2Vxc2xhbnR9e1xcdTIyNzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbmxlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBubGVxcX17XFx1MjI3MH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxubGVxc2xhbnRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBubGVxc2xhbnR9e1xcdTIyNzB9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbnNob3J0bWlkXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxAbnNob3J0bWlkfXviiKR9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbnNob3J0cGFyYWxsZWxcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuc2hvcnRwYXJhbGxlbH174oimfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5zdWJzZXRlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuc3Vic2V0ZXFxfXtcXHUyMjg4fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5zdXBzZXRlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuc3Vwc2V0ZXFxfXtcXHUyMjg5fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhcnN1YnNldG5lcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQHZhcnN1YnNldG5lcX174oqKfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhcnN1YnNldG5lcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEB2YXJzdWJzZXRuZXFxfXviq4t9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyc3Vwc2V0bmVxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxAdmFyc3Vwc2V0bmVxfXviiot9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyc3Vwc2V0bmVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQHZhcnN1cHNldG5lcXF9e+KrjH1cIik7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIHN0bWFyeXJkIGFuZCBzZW1hbnRpY1xuLy8gVGhlIHN0bWFyeXJkIGFuZCBzZW1hbnRpYyBwYWNrYWdlcyByZW5kZXIgdGhlIG5leHQgZm91ciBpdGVtcyBieSBjYWxsaW5nIGFcbi8vIGdseXBoLiBUaG9zZSBnbHlwaHMgZG8gbm90IGV4aXN0IGluIHRoZSBLYVRlWCBmb250cy4gSGVuY2UgdGhlIG1hY3Jvcy5cblxuZGVmaW5lTWFjcm8oXCJcXFxcbGxicmFja2V0XCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aG9wZW57W1xcXFxta2Vybi0zLjJtdVt9fVwiICsgXCJ7XFxcXG1hdGhvcGVue1xcXFxjaGFyYFxcdTI3RTZ9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJyYnJhY2tldFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhjbG9zZXtdXFxcXG1rZXJuLTMuMm11XX19XCIgKyBcIntcXFxcbWF0aGNsb3Nle1xcXFxjaGFyYFxcdTI3RTd9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjdFNlwiLCBcIlxcXFxsbGJyYWNrZXRcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCBbXG5cbmRlZmluZU1hY3JvKFwiXFx1MjdFN1wiLCBcIlxcXFxycmJyYWNrZXRcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCBdXG5cbmRlZmluZU1hY3JvKFwiXFxcXGxCcmFjZVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhvcGVue1xcXFx7XFxcXG1rZXJuLTMuMm11W319XCIgKyBcIntcXFxcbWF0aG9wZW57XFxcXGNoYXJgXFx1Mjk4M319XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcckJyYWNlXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aGNsb3Nle11cXFxcbWtlcm4tMy4ybXVcXFxcfX19XCIgKyBcIntcXFxcbWF0aGNsb3Nle1xcXFxjaGFyYFxcdTI5ODR9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1Mjk4M1wiLCBcIlxcXFxsQnJhY2VcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCB7XG5cbmRlZmluZU1hY3JvKFwiXFx1Mjk4NFwiLCBcIlxcXFxyQnJhY2VcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCB9XG4vLyBUT0RPOiBDcmVhdGUgdmFyaWFibGUgc2l6ZWQgdmVyc2lvbnMgb2YgdGhlIGxhc3QgdHdvIGl0ZW1zLiBJIGJlbGlldmUgdGhhdFxuLy8gd2lsbCByZXF1aXJlIG5ldyBmb250IGdseXBocy5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIHRleHZjLnN0eVxuLy8gVGhlIHRleHZjIHBhY2thZ2UgY29udGFpbnMgbWFjcm9zIGF2YWlsYWJsZSBpbiBtZWRpYXdpa2kgcGFnZXMuXG4vLyBXZSBvbWl0IHRoZSBmdW5jdGlvbnMgZGVwcmVjYXRlZCBhdFxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVscDpEaXNwbGF5aW5nX2FfZm9ybXVsYSNEZXByZWNhdGVkX3N5bnRheFxuLy8gV2UgYWxzbyBvbWl0IHRleHZjJ3MgXFxPLCB3aGljaCBjb25mbGljdHMgd2l0aCBcXHRleHR7XFxPfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxkYXJyXCIsIFwiXFxcXGRvd25hcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGRBcnJcIiwgXCJcXFxcRG93bmFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcRGFyclwiLCBcIlxcXFxEb3duYXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsYW5nXCIsIFwiXFxcXGxhbmdsZVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJhbmdcIiwgXCJcXFxccmFuZ2xlXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdWFyclwiLCBcIlxcXFx1cGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdUFyclwiLCBcIlxcXFxVcGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcVWFyclwiLCBcIlxcXFxVcGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcTlwiLCBcIlxcXFxtYXRoYmJ7Tn1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxSXCIsIFwiXFxcXG1hdGhiYntSfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXFpcIiwgXCJcXFxcbWF0aGJie1p9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYWxlZlwiLCBcIlxcXFxhbGVwaFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFsZWZzeW1cIiwgXCJcXFxcYWxlcGhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxBbHBoYVwiLCBcIlxcXFxtYXRocm17QX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxCZXRhXCIsIFwiXFxcXG1hdGhybXtCfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJ1bGxcIiwgXCJcXFxcYnVsbGV0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcQ2hpXCIsIFwiXFxcXG1hdGhybXtYfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNsdWJzXCIsIFwiXFxcXGNsdWJzdWl0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY251bXNcIiwgXCJcXFxcbWF0aGJie0N9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcQ29tcGxleFwiLCBcIlxcXFxtYXRoYmJ7Q31cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxEYWdnZXJcIiwgXCJcXFxcZGRhZ2dlclwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGRpYW1vbmRzXCIsIFwiXFxcXGRpYW1vbmRzdWl0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZW1wdHlcIiwgXCJcXFxcZW1wdHlzZXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxFcHNpbG9uXCIsIFwiXFxcXG1hdGhybXtFfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEV0YVwiLCBcIlxcXFxtYXRocm17SH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxleGlzdFwiLCBcIlxcXFxleGlzdHNcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxoYXJyXCIsIFwiXFxcXGxlZnRyaWdodGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaEFyclwiLCBcIlxcXFxMZWZ0cmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEhhcnJcIiwgXCJcXFxcTGVmdHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxoZWFydHNcIiwgXCJcXFxcaGVhcnRzdWl0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaW1hZ2VcIiwgXCJcXFxcSW1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxpbmZpblwiLCBcIlxcXFxpbmZ0eVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXElvdGFcIiwgXCJcXFxcbWF0aHJte0l9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaXNpblwiLCBcIlxcXFxpblwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEthcHBhXCIsIFwiXFxcXG1hdGhybXtLfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGxhcnJcIiwgXCJcXFxcbGVmdGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbEFyclwiLCBcIlxcXFxMZWZ0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxMYXJyXCIsIFwiXFxcXExlZnRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGxyYXJyXCIsIFwiXFxcXGxlZnRyaWdodGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbHJBcnJcIiwgXCJcXFxcTGVmdHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxMcmFyclwiLCBcIlxcXFxMZWZ0cmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXE11XCIsIFwiXFxcXG1hdGhybXtNfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5hdG51bXNcIiwgXCJcXFxcbWF0aGJie059XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcTnVcIiwgXCJcXFxcbWF0aHJte059XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcT21pY3JvblwiLCBcIlxcXFxtYXRocm17T31cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwbHVzbW5cIiwgXCJcXFxccG1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyYXJyXCIsIFwiXFxcXHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyQXJyXCIsIFwiXFxcXFJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxSYXJyXCIsIFwiXFxcXFJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWFsXCIsIFwiXFxcXFJlXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVhbHNcIiwgXCJcXFxcbWF0aGJie1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcUmVhbHNcIiwgXCJcXFxcbWF0aGJie1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcUmhvXCIsIFwiXFxcXG1hdGhybXtQfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHNkb3RcIiwgXCJcXFxcY2RvdFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHNlY3RcIiwgXCJcXFxcU1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHNwYWRlc1wiLCBcIlxcXFxzcGFkZXN1aXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxzdWJcIiwgXCJcXFxcc3Vic2V0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc3ViZVwiLCBcIlxcXFxzdWJzZXRlcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHN1cGVcIiwgXCJcXFxcc3Vwc2V0ZXFcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxUYXVcIiwgXCJcXFxcbWF0aHJte1R9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGhldGFzeW1cIiwgXCJcXFxcdmFydGhldGFcIik7IC8vIFRPRE86IGRlZmluZU1hY3JvKFwiXFxcXHZhcmNvcHBhXCIsIFwiXFxcXFxcbWJveHtcXFxcY29wcGF9XCIpO1xuXG5kZWZpbmVNYWNybyhcIlxcXFx3ZWllcnBcIiwgXCJcXFxcd3BcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxaZXRhXCIsIFwiXFxcXG1hdGhybXtafVwiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gc3RhdG1hdGguc3R5XG4vLyBodHRwczovL2N0YW4ubWF0aC5pbGxpbm9pcy5lZHUvbWFjcm9zL2xhdGV4L2NvbnRyaWIvc3RhdG1hdGgvc3RhdG1hdGgucGRmXG5cbmRlZmluZU1hY3JvKFwiXFxcXGFyZ21pblwiLCBcIlxcXFxET1RTQlxcXFxvcGVyYXRvcm5hbWUqe2FyZ1xcXFwsbWlufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFyZ21heFwiLCBcIlxcXFxET1RTQlxcXFxvcGVyYXRvcm5hbWUqe2FyZ1xcXFwsbWF4fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHBsaW1cIiwgXCJcXFxcRE9UU0JcXFxcbWF0aG9we1xcXFxvcGVyYXRvcm5hbWV7cGxpbX19XFxcXGxpbWl0c1wiKTsgLy8gQ3VzdG9tIEtoYW4gQWNhZGVteSBjb2xvcnMsIHNob3VsZCBiZSBtb3ZlZCB0byBhbiBvcHRpb25hbCBwYWNrYWdlXG5cbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjNjQ5NWVkfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxvcmFuZ2VcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmZhNTAwfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwaW5rXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmMDBhZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVkXCIsIFwiXFxcXHRleHRjb2xvcnsjI2RmMDAzMH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JlZW5cIiwgXCJcXFxcdGV4dGNvbG9yeyMjMjhhZTdifXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5XCIsIFwiXFxcXHRleHRjb2xvcntncmF5fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwdXJwbGVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjOWQzOGJkfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxibHVlQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNjY2ZhZmZ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVCXCIsIFwiXFxcXHRleHRjb2xvcnsjIzgwZjZmZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYmx1ZUNcIiwgXCJcXFxcdGV4dGNvbG9yeyMjNjNkOWVhfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxibHVlRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMxMWFjY2R9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVFXCIsIFwiXFxcXHRleHRjb2xvcnsjIzBjN2Y5OX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGVhbEFcIiwgXCJcXFxcdGV4dGNvbG9yeyMjOTRmZmY1fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0ZWFsQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMyNmVkZDV9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHRlYWxDXCIsIFwiXFxcXHRleHRjb2xvcnsjIzAxZDFjMX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGVhbERcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMDFhOTk1fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0ZWFsRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMyMDgxNzB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNiNmZmYjB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM4YWYyODF9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyM3NGNmNzB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMxZmFiNTR9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMwZDkyM2Z9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdvbGRBXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmZDBhOX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ29sZEJcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmZiYjcxfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxnb2xkQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmZjljMzl9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdvbGREXCIsIFwiXFxcXHRleHRjb2xvcnsjI2UwN2QxMH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ29sZEVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjYTc1YTA1fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWRBXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZjYTlhOX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVkQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmZjg0ODJ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJlZENcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZjk2ODVkfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWREXCIsIFwiXFxcXHRleHRjb2xvcnsjI2U4NGQzOX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVkRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNiYzI2MTJ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1hcm9vbkFcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmZiZGUwfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtYXJvb25CXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmOTJjNn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWFyb29uQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyNlZDVmYTZ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1hcm9vbkRcIiwgXCJcXFxcdGV4dGNvbG9yeyMjY2EzMzdjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtYXJvb25FXCIsIFwiXFxcXHRleHRjb2xvcnsjIzllMDM0ZX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccHVycGxlQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNkZGQ3ZmZ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHB1cnBsZUJcIiwgXCJcXFxcdGV4dGNvbG9yeyMjYzZiOWZjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwdXJwbGVDXCIsIFwiXFxcXHRleHRjb2xvcnsjI2FhODdmZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccHVycGxlRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM3ODU0YWJ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHB1cnBsZUVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjNTQzYjc4fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtaW50QVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmNWY5ZTh9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1pbnRCXCIsIFwiXFxcXHRleHRjb2xvcnsjI2VkZjJkZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWludENcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZTBlNWNjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5QVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmNmY3Zjd9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlCXCIsIFwiXFxcXHRleHRjb2xvcnsjI2YwZjFmMn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUNcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZTNlNWU2fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5RFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNkNmQ4ZGF9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlFXCIsIFwiXFxcXHRleHRjb2xvcnsjI2JhYmVjMn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUZcIiwgXCJcXFxcdGV4dGNvbG9yeyMjODg4ZDkzfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5R1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyM2MjY1Njl9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlIXCIsIFwiXFxcXHRleHRjb2xvcnsjIzNiM2U0MH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUlcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMjEyNDJjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxrYUJsdWVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMzE0NDUzfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxrYUdyZWVuXCIsIFwiXFxcXHRleHRjb2xvcnsjIzcxQjMwN317IzF9XCIpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvTWFjcm9FeHBhbmRlci5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIOKAnGd1bGxldOKAnSB3aGVyZSBtYWNyb3MgYXJlIGV4cGFuZGVkXG4gKiB1bnRpbCBvbmx5IG5vbi1tYWNybyB0b2tlbnMgcmVtYWluLlxuICovXG5cblxuXG5cblxuXG5cbi8vIExpc3Qgb2YgY29tbWFuZHMgdGhhdCBhY3QgbGlrZSBtYWNyb3MgYnV0IGFyZW4ndCBkZWZpbmVkIGFzIGEgbWFjcm8sXG4vLyBmdW5jdGlvbiwgb3Igc3ltYm9sLiAgVXNlZCBpbiBgaXNEZWZpbmVkYC5cbnZhciBpbXBsaWNpdENvbW1hbmRzID0ge1xuICBcIlxcXFxyZWxheFwiOiB0cnVlLFxuICAvLyBNYWNyb0V4cGFuZGVyLmpzXG4gIFwiXlwiOiB0cnVlLFxuICAvLyBQYXJzZXIuanNcbiAgXCJfXCI6IHRydWUsXG4gIC8vIFBhcnNlci5qc1xuICBcIlxcXFxsaW1pdHNcIjogdHJ1ZSxcbiAgLy8gUGFyc2VyLmpzXG4gIFwiXFxcXG5vbGltaXRzXCI6IHRydWUgLy8gUGFyc2VyLmpzXG5cbn07XG5cbnZhciBNYWNyb0V4cGFuZGVyX01hY3JvRXhwYW5kZXIgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNYWNyb0V4cGFuZGVyKGlucHV0LCBzZXR0aW5ncywgbW9kZSkge1xuICAgIHRoaXMuc2V0dGluZ3MgPSB2b2lkIDA7XG4gICAgdGhpcy5leHBhbnNpb25Db3VudCA9IHZvaWQgMDtcbiAgICB0aGlzLmxleGVyID0gdm9pZCAwO1xuICAgIHRoaXMubWFjcm9zID0gdm9pZCAwO1xuICAgIHRoaXMuc3RhY2sgPSB2b2lkIDA7XG4gICAgdGhpcy5tb2RlID0gdm9pZCAwO1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB0aGlzLmV4cGFuc2lvbkNvdW50ID0gMDtcbiAgICB0aGlzLmZlZWQoaW5wdXQpOyAvLyBNYWtlIG5ldyBnbG9iYWwgbmFtZXNwYWNlXG5cbiAgICB0aGlzLm1hY3JvcyA9IG5ldyBOYW1lc3BhY2VfTmFtZXNwYWNlKG1hY3Jvcywgc2V0dGluZ3MubWFjcm9zKTtcbiAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICAgIHRoaXMuc3RhY2sgPSBbXTsgLy8gY29udGFpbnMgdG9rZW5zIGluIFJFVkVSU0Ugb3JkZXJcbiAgfVxuICAvKipcbiAgICogRmVlZCBhIG5ldyBpbnB1dCBzdHJpbmcgdG8gdGhlIHNhbWUgTWFjcm9FeHBhbmRlclxuICAgKiAod2l0aCBleGlzdGluZyBtYWNyb3MgZXRjLikuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IE1hY3JvRXhwYW5kZXIucHJvdG90eXBlO1xuXG4gIF9wcm90by5mZWVkID0gZnVuY3Rpb24gZmVlZChpbnB1dCkge1xuICAgIHRoaXMubGV4ZXIgPSBuZXcgTGV4ZXJfTGV4ZXIoaW5wdXQsIHRoaXMuc2V0dGluZ3MpO1xuICB9XG4gIC8qKlxuICAgKiBTd2l0Y2hlcyBiZXR3ZWVuIFwidGV4dFwiIGFuZCBcIm1hdGhcIiBtb2Rlcy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uc3dpdGNoTW9kZSA9IGZ1bmN0aW9uIHN3aXRjaE1vZGUobmV3TW9kZSkge1xuICAgIHRoaXMubW9kZSA9IG5ld01vZGU7XG4gIH1cbiAgLyoqXG4gICAqIFN0YXJ0IGEgbmV3IGdyb3VwIG5lc3Rpbmcgd2l0aGluIGFsbCBuYW1lc3BhY2VzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5iZWdpbkdyb3VwID0gZnVuY3Rpb24gYmVnaW5Hcm91cCgpIHtcbiAgICB0aGlzLm1hY3Jvcy5iZWdpbkdyb3VwKCk7XG4gIH1cbiAgLyoqXG4gICAqIEVuZCBjdXJyZW50IGdyb3VwIG5lc3Rpbmcgd2l0aGluIGFsbCBuYW1lc3BhY2VzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5lbmRHcm91cCA9IGZ1bmN0aW9uIGVuZEdyb3VwKCkge1xuICAgIHRoaXMubWFjcm9zLmVuZEdyb3VwKCk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRvcG1vc3QgdG9rZW4gb24gdGhlIHN0YWNrLCB3aXRob3V0IGV4cGFuZGluZyBpdC5cbiAgICogU2ltaWxhciBpbiBiZWhhdmlvciB0byBUZVgncyBgXFxmdXR1cmVsZXRgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mdXR1cmUgPSBmdW5jdGlvbiBmdXR1cmUoKSB7XG4gICAgaWYgKHRoaXMuc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnB1c2hUb2tlbih0aGlzLmxleGVyLmxleCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgYW5kIHJldHVybiB0aGUgbmV4dCB1bmV4cGFuZGVkIHRva2VuLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wb3BUb2tlbiA9IGZ1bmN0aW9uIHBvcFRva2VuKCkge1xuICAgIHRoaXMuZnV0dXJlKCk7IC8vIGVuc3VyZSBub24tZW1wdHkgc3RhY2tcblxuICAgIHJldHVybiB0aGlzLnN0YWNrLnBvcCgpO1xuICB9XG4gIC8qKlxuICAgKiBBZGQgYSBnaXZlbiB0b2tlbiB0byB0aGUgdG9rZW4gc3RhY2suICBJbiBwYXJ0aWN1bGFyLCB0aGlzIGdldCBiZSB1c2VkXG4gICAqIHRvIHB1dCBiYWNrIGEgdG9rZW4gcmV0dXJuZWQgZnJvbSBvbmUgb2YgdGhlIG90aGVyIG1ldGhvZHMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnB1c2hUb2tlbiA9IGZ1bmN0aW9uIHB1c2hUb2tlbih0b2tlbikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0b2tlbik7XG4gIH1cbiAgLyoqXG4gICAqIEFwcGVuZCBhbiBhcnJheSBvZiB0b2tlbnMgdG8gdGhlIHRva2VuIHN0YWNrLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wdXNoVG9rZW5zID0gZnVuY3Rpb24gcHVzaFRva2Vucyh0b2tlbnMpIHtcbiAgICB2YXIgX3RoaXMkc3RhY2s7XG5cbiAgICAoX3RoaXMkc3RhY2sgPSB0aGlzLnN0YWNrKS5wdXNoLmFwcGx5KF90aGlzJHN0YWNrLCB0b2tlbnMpO1xuICB9XG4gIC8qKlxuICAgKiBDb25zdW1lIGFsbCBmb2xsb3dpbmcgc3BhY2UgdG9rZW5zLCB3aXRob3V0IGV4cGFuc2lvbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZVNwYWNlcyA9IGZ1bmN0aW9uIGNvbnN1bWVTcGFjZXMoKSB7XG4gICAgZm9yICg7Oykge1xuICAgICAgdmFyIHRva2VuID0gdGhpcy5mdXR1cmUoKTtcblxuICAgICAgaWYgKHRva2VuLnRleHQgPT09IFwiIFwiKSB7XG4gICAgICAgIHRoaXMuc3RhY2sucG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIENvbnN1bWUgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYXJndW1lbnRzIGZyb20gdGhlIHRva2VuIHN0cmVhbSxcbiAgICogYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZUFyZ3MgPSBmdW5jdGlvbiBjb25zdW1lQXJncyhudW1BcmdzKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTsgLy8gb2J0YWluIGFyZ3VtZW50cywgZWl0aGVyIHNpbmdsZSB0b2tlbiBvciBiYWxhbmNlZCB74oCmfSBncm91cFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpIHtcbiAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpOyAvLyBpZ25vcmUgc3BhY2VzIGJlZm9yZSBlYWNoIGFyZ3VtZW50XG5cbiAgICAgIHZhciBzdGFydE9mQXJnID0gdGhpcy5wb3BUb2tlbigpO1xuXG4gICAgICBpZiAoc3RhcnRPZkFyZy50ZXh0ID09PSBcIntcIikge1xuICAgICAgICB2YXIgYXJnID0gW107XG4gICAgICAgIHZhciBkZXB0aCA9IDE7XG5cbiAgICAgICAgd2hpbGUgKGRlcHRoICE9PSAwKSB7XG4gICAgICAgICAgdmFyIHRvayA9IHRoaXMucG9wVG9rZW4oKTtcbiAgICAgICAgICBhcmcucHVzaCh0b2spO1xuXG4gICAgICAgICAgaWYgKHRvay50ZXh0ID09PSBcIntcIikge1xuICAgICAgICAgICAgKytkZXB0aDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRvay50ZXh0ID09PSBcIn1cIikge1xuICAgICAgICAgICAgLS1kZXB0aDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRvay50ZXh0ID09PSBcIkVPRlwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJFbmQgb2YgaW5wdXQgaW4gbWFjcm8gYXJndW1lbnRcIiwgc3RhcnRPZkFyZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXJnLnBvcCgpOyAvLyByZW1vdmUgbGFzdCB9XG5cbiAgICAgICAgYXJnLnJldmVyc2UoKTsgLy8gbGlrZSBhYm92ZSwgdG8gZml0IGluIHdpdGggc3RhY2sgb3JkZXJcblxuICAgICAgICBhcmdzW2ldID0gYXJnO1xuICAgICAgfSBlbHNlIGlmIChzdGFydE9mQXJnLnRleHQgPT09IFwiRU9GXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRW5kIG9mIGlucHV0IGV4cGVjdGluZyBtYWNybyBhcmd1bWVudFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyZ3NbaV0gPSBbc3RhcnRPZkFyZ107XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3M7XG4gIH1cbiAgLyoqXG4gICAqIEV4cGFuZCB0aGUgbmV4dCB0b2tlbiBvbmx5IG9uY2UgaWYgcG9zc2libGUuXG4gICAqXG4gICAqIElmIHRoZSB0b2tlbiBpcyBleHBhbmRlZCwgdGhlIHJlc3VsdGluZyB0b2tlbnMgd2lsbCBiZSBwdXNoZWQgb250b1xuICAgKiB0aGUgc3RhY2sgaW4gcmV2ZXJzZSBvcmRlciBhbmQgd2lsbCBiZSByZXR1cm5lZCBhcyBhbiBhcnJheSxcbiAgICogYWxzbyBpbiByZXZlcnNlIG9yZGVyLlxuICAgKlxuICAgKiBJZiBub3QsIHRoZSBuZXh0IHRva2VuIHdpbGwgYmUgcmV0dXJuZWQgd2l0aG91dCByZW1vdmluZyBpdFxuICAgKiBmcm9tIHRoZSBzdGFjay4gIFRoaXMgY2FzZSBjYW4gYmUgZGV0ZWN0ZWQgYnkgYSBgVG9rZW5gIHJldHVybiB2YWx1ZVxuICAgKiBpbnN0ZWFkIG9mIGFuIGBBcnJheWAgcmV0dXJuIHZhbHVlLlxuICAgKlxuICAgKiBJbiBlaXRoZXIgY2FzZSwgdGhlIG5leHQgdG9rZW4gd2lsbCBiZSBvbiB0aGUgdG9wIG9mIHRoZSBzdGFjayxcbiAgICogb3IgdGhlIHN0YWNrIHdpbGwgYmUgZW1wdHkuXG4gICAqXG4gICAqIFVzZWQgdG8gaW1wbGVtZW50IGBleHBhbmRBZnRlckZ1dHVyZWAgYW5kIGBleHBhbmROZXh0VG9rZW5gLlxuICAgKlxuICAgKiBBdCB0aGUgbW9tZW50LCBtYWNybyBleHBhbnNpb24gZG9lc24ndCBoYW5kbGUgZGVsaW1pdGVkIG1hY3JvcyxcbiAgICogaS5lLiB0aGluZ3MgbGlrZSB0aG9zZSBkZWZpbmVkIGJ5IFxcZGVmXFxmb28jMVxcZW5ke+KApn0uXG4gICAqIFNlZSB0aGUgVGVYIGJvb2sgcGFnZSAyMDJmZi4gZm9yIGRldGFpbHMgb24gaG93IHRob3NlIHNob3VsZCBiZWhhdmUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmV4cGFuZE9uY2UgPSBmdW5jdGlvbiBleHBhbmRPbmNlKCkge1xuICAgIHZhciB0b3BUb2tlbiA9IHRoaXMucG9wVG9rZW4oKTtcbiAgICB2YXIgbmFtZSA9IHRvcFRva2VuLnRleHQ7XG5cbiAgICB2YXIgZXhwYW5zaW9uID0gdGhpcy5fZ2V0RXhwYW5zaW9uKG5hbWUpO1xuXG4gICAgaWYgKGV4cGFuc2lvbiA9PSBudWxsKSB7XG4gICAgICAvLyBtYWlubHkgY2hlY2tpbmcgZm9yIHVuZGVmaW5lZCBoZXJlXG4gICAgICAvLyBGdWxseSBleHBhbmRlZFxuICAgICAgdGhpcy5wdXNoVG9rZW4odG9wVG9rZW4pO1xuICAgICAgcmV0dXJuIHRvcFRva2VuO1xuICAgIH1cblxuICAgIHRoaXMuZXhwYW5zaW9uQ291bnQrKztcblxuICAgIGlmICh0aGlzLmV4cGFuc2lvbkNvdW50ID4gdGhpcy5zZXR0aW5ncy5tYXhFeHBhbmQpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlRvbyBtYW55IGV4cGFuc2lvbnM6IGluZmluaXRlIGxvb3Agb3IgXCIgKyBcIm5lZWQgdG8gaW5jcmVhc2UgbWF4RXhwYW5kIHNldHRpbmdcIik7XG4gICAgfVxuXG4gICAgdmFyIHRva2VucyA9IGV4cGFuc2lvbi50b2tlbnM7XG5cbiAgICBpZiAoZXhwYW5zaW9uLm51bUFyZ3MpIHtcbiAgICAgIHZhciBhcmdzID0gdGhpcy5jb25zdW1lQXJncyhleHBhbnNpb24ubnVtQXJncyk7IC8vIHBhc3RlIGFyZ3VtZW50cyBpbiBwbGFjZSBvZiB0aGUgcGxhY2Vob2xkZXJzXG5cbiAgICAgIHRva2VucyA9IHRva2Vucy5zbGljZSgpOyAvLyBtYWtlIGEgc2hhbGxvdyBjb3B5XG5cbiAgICAgIGZvciAodmFyIGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHRvayA9IHRva2Vuc1tpXTtcblxuICAgICAgICBpZiAodG9rLnRleHQgPT09IFwiI1wiKSB7XG4gICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkluY29tcGxldGUgcGxhY2Vob2xkZXIgYXQgZW5kIG9mIG1hY3JvIGJvZHlcIiwgdG9rKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0b2sgPSB0b2tlbnNbLS1pXTsgLy8gbmV4dCB0b2tlbiBvbiBzdGFja1xuXG4gICAgICAgICAgaWYgKHRvay50ZXh0ID09PSBcIiNcIikge1xuICAgICAgICAgICAgLy8gIyMg4oaSICNcbiAgICAgICAgICAgIHRva2Vucy5zcGxpY2UoaSArIDEsIDEpOyAvLyBkcm9wIGZpcnN0ICNcbiAgICAgICAgICB9IGVsc2UgaWYgKC9eWzEtOV0kLy50ZXN0KHRvay50ZXh0KSkge1xuICAgICAgICAgICAgdmFyIF90b2tlbnM7XG5cbiAgICAgICAgICAgIC8vIHJlcGxhY2UgdGhlIHBsYWNlaG9sZGVyIHdpdGggdGhlIGluZGljYXRlZCBhcmd1bWVudFxuICAgICAgICAgICAgKF90b2tlbnMgPSB0b2tlbnMpLnNwbGljZS5hcHBseShfdG9rZW5zLCBbaSwgMl0uY29uY2F0KGFyZ3NbK3Rvay50ZXh0IC0gMV0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTm90IGEgdmFsaWQgYXJndW1lbnQgbnVtYmVyXCIsIHRvayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBDb25jYXRlbmF0ZSBleHBhbnNpb24gb250byB0b3Agb2Ygc3RhY2suXG5cblxuICAgIHRoaXMucHVzaFRva2Vucyh0b2tlbnMpO1xuICAgIHJldHVybiB0b2tlbnM7XG4gIH1cbiAgLyoqXG4gICAqIEV4cGFuZCB0aGUgbmV4dCB0b2tlbiBvbmx5IG9uY2UgKGlmIHBvc3NpYmxlKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nXG4gICAqIHRvcCB0b2tlbiBvbiB0aGUgc3RhY2sgKHdpdGhvdXQgcmVtb3ZpbmcgYW55dGhpbmcgZnJvbSB0aGUgc3RhY2spLlxuICAgKiBTaW1pbGFyIGluIGJlaGF2aW9yIHRvIFRlWCdzIGBcXGV4cGFuZGFmdGVyXFxmdXR1cmVsZXRgLlxuICAgKiBFcXVpdmFsZW50IHRvIGV4cGFuZE9uY2UoKSBmb2xsb3dlZCBieSBmdXR1cmUoKS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZXhwYW5kQWZ0ZXJGdXR1cmUgPSBmdW5jdGlvbiBleHBhbmRBZnRlckZ1dHVyZSgpIHtcbiAgICB0aGlzLmV4cGFuZE9uY2UoKTtcbiAgICByZXR1cm4gdGhpcy5mdXR1cmUoKTtcbiAgfVxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgZXhwYW5kIGZpcnN0IHRva2VuLCB0aGVuIHJldHVybiBmaXJzdCBub24tZXhwYW5kYWJsZSB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZXhwYW5kTmV4dFRva2VuID0gZnVuY3Rpb24gZXhwYW5kTmV4dFRva2VuKCkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIHZhciBleHBhbmRlZCA9IHRoaXMuZXhwYW5kT25jZSgpOyAvLyBleHBhbmRPbmNlIHJldHVybnMgVG9rZW4gaWYgYW5kIG9ubHkgaWYgaXQncyBmdWxseSBleHBhbmRlZC5cblxuICAgICAgaWYgKGV4cGFuZGVkIGluc3RhbmNlb2YgVG9rZW5fVG9rZW4pIHtcbiAgICAgICAgLy8gXFxyZWxheCBzdG9wcyB0aGUgZXhwYW5zaW9uLCBidXQgc2hvdWxkbid0IGdldCByZXR1cm5lZCAoYVxuICAgICAgICAvLyBudWxsIHJldHVybiB2YWx1ZSBjb3VsZG4ndCBnZXQgaW1wbGVtZW50ZWQgYXMgYSBmdW5jdGlvbikuXG4gICAgICAgIGlmIChleHBhbmRlZC50ZXh0ID09PSBcIlxcXFxyZWxheFwiKSB7XG4gICAgICAgICAgdGhpcy5zdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5wb3AoKTsgLy8gPT09IGV4cGFuZGVkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIEZsb3cgdW5hYmxlIHRvIGZpZ3VyZSBvdXQgdGhhdCB0aGlzIHBhdGh3YXkgaXMgaW1wb3NzaWJsZS5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNDgwOFxuXG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnJlYWNoYWJsZVxuICB9XG4gIC8qKlxuICAgKiBGdWxseSBleHBhbmQgdGhlIGdpdmVuIG1hY3JvIG5hbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGxpc3Qgb2ZcbiAgICogdG9rZW5zLCBvciByZXR1cm4gYHVuZGVmaW5lZGAgaWYgbm8gc3VjaCBtYWNybyBpcyBkZWZpbmVkLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5leHBhbmRNYWNybyA9IGZ1bmN0aW9uIGV4cGFuZE1hY3JvKG5hbWUpIHtcbiAgICBpZiAoIXRoaXMubWFjcm9zLmdldChuYW1lKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgdmFyIG9sZFN0YWNrTGVuZ3RoID0gdGhpcy5zdGFjay5sZW5ndGg7XG4gICAgdGhpcy5wdXNoVG9rZW4obmV3IFRva2VuX1Rva2VuKG5hbWUpKTtcblxuICAgIHdoaWxlICh0aGlzLnN0YWNrLmxlbmd0aCA+IG9sZFN0YWNrTGVuZ3RoKSB7XG4gICAgICB2YXIgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZE9uY2UoKTsgLy8gZXhwYW5kT25jZSByZXR1cm5zIFRva2VuIGlmIGFuZCBvbmx5IGlmIGl0J3MgZnVsbHkgZXhwYW5kZWQuXG5cbiAgICAgIGlmIChleHBhbmRlZCBpbnN0YW5jZW9mIFRva2VuX1Rva2VuKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHRoaXMuc3RhY2sucG9wKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cbiAgLyoqXG4gICAqIEZ1bGx5IGV4cGFuZCB0aGUgZ2l2ZW4gbWFjcm8gbmFtZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBzdHJpbmcsXG4gICAqIG9yIHJldHVybiBgdW5kZWZpbmVkYCBpZiBubyBzdWNoIG1hY3JvIGlzIGRlZmluZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmV4cGFuZE1hY3JvQXNUZXh0ID0gZnVuY3Rpb24gZXhwYW5kTWFjcm9Bc1RleHQobmFtZSkge1xuICAgIHZhciB0b2tlbnMgPSB0aGlzLmV4cGFuZE1hY3JvKG5hbWUpO1xuXG4gICAgaWYgKHRva2Vucykge1xuICAgICAgcmV0dXJuIHRva2Vucy5tYXAoZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgIHJldHVybiB0b2tlbi50ZXh0O1xuICAgICAgfSkuam9pbihcIlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRva2VucztcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGV4cGFuZGVkIG1hY3JvIGFzIGEgcmV2ZXJzZWQgYXJyYXkgb2YgdG9rZW5zIGFuZCBhIG1hY3JvXG4gICAqIGFyZ3VtZW50IGNvdW50LiAgT3IgcmV0dXJucyBgbnVsbGAgaWYgbm8gc3VjaCBtYWNyby5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uX2dldEV4cGFuc2lvbiA9IGZ1bmN0aW9uIF9nZXRFeHBhbnNpb24obmFtZSkge1xuICAgIHZhciBkZWZpbml0aW9uID0gdGhpcy5tYWNyb3MuZ2V0KG5hbWUpO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT0gbnVsbCkge1xuICAgICAgLy8gbWFpbmx5IGNoZWNraW5nIGZvciB1bmRlZmluZWQgaGVyZVxuICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgfVxuXG4gICAgdmFyIGV4cGFuc2lvbiA9IHR5cGVvZiBkZWZpbml0aW9uID09PSBcImZ1bmN0aW9uXCIgPyBkZWZpbml0aW9uKHRoaXMpIDogZGVmaW5pdGlvbjtcblxuICAgIGlmICh0eXBlb2YgZXhwYW5zaW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB2YXIgbnVtQXJncyA9IDA7XG5cbiAgICAgIGlmIChleHBhbnNpb24uaW5kZXhPZihcIiNcIikgIT09IC0xKSB7XG4gICAgICAgIHZhciBzdHJpcHBlZCA9IGV4cGFuc2lvbi5yZXBsYWNlKC8jIy9nLCBcIlwiKTtcblxuICAgICAgICB3aGlsZSAoc3RyaXBwZWQuaW5kZXhPZihcIiNcIiArIChudW1BcmdzICsgMSkpICE9PSAtMSkge1xuICAgICAgICAgICsrbnVtQXJncztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgYm9keUxleGVyID0gbmV3IExleGVyX0xleGVyKGV4cGFuc2lvbiwgdGhpcy5zZXR0aW5ncyk7XG4gICAgICB2YXIgdG9rZW5zID0gW107XG4gICAgICB2YXIgdG9rID0gYm9keUxleGVyLmxleCgpO1xuXG4gICAgICB3aGlsZSAodG9rLnRleHQgIT09IFwiRU9GXCIpIHtcbiAgICAgICAgdG9rZW5zLnB1c2godG9rKTtcbiAgICAgICAgdG9rID0gYm9keUxleGVyLmxleCgpO1xuICAgICAgfVxuXG4gICAgICB0b2tlbnMucmV2ZXJzZSgpOyAvLyB0byBmaXQgaW4gd2l0aCBzdGFjayB1c2luZyBwdXNoIGFuZCBwb3BcblxuICAgICAgdmFyIGV4cGFuZGVkID0ge1xuICAgICAgICB0b2tlbnM6IHRva2VucyxcbiAgICAgICAgbnVtQXJnczogbnVtQXJnc1xuICAgICAgfTtcbiAgICAgIHJldHVybiBleHBhbmRlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhwYW5zaW9uO1xuICB9XG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhIGNvbW1hbmQgaXMgY3VycmVudGx5IFwiZGVmaW5lZFwiIChoYXMgc29tZVxuICAgKiBmdW5jdGlvbmFsaXR5KSwgbWVhbmluZyB0aGF0IGl0J3MgYSBtYWNybyAoaW4gdGhlIGN1cnJlbnQgZ3JvdXApLFxuICAgKiBhIGZ1bmN0aW9uLCBhIHN5bWJvbCwgb3Igb25lIG9mIHRoZSBzcGVjaWFsIGNvbW1hbmRzIGxpc3RlZCBpblxuICAgKiBgaW1wbGljaXRDb21tYW5kc2AuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmlzRGVmaW5lZCA9IGZ1bmN0aW9uIGlzRGVmaW5lZChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFjcm9zLmhhcyhuYW1lKSB8fCBzcmNfZnVuY3Rpb25zLmhhc093blByb3BlcnR5KG5hbWUpIHx8IHNyY19zeW1ib2xzLm1hdGguaGFzT3duUHJvcGVydHkobmFtZSkgfHwgc3JjX3N5bWJvbHMudGV4dC5oYXNPd25Qcm9wZXJ0eShuYW1lKSB8fCBpbXBsaWNpdENvbW1hbmRzLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9O1xuXG4gIHJldHVybiBNYWNyb0V4cGFuZGVyO1xufSgpO1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3VuaWNvZGVBY2NlbnRzLmpzXG4vLyBNYXBwaW5nIG9mIFVuaWNvZGUgYWNjZW50IGNoYXJhY3RlcnMgdG8gdGhlaXIgTGFUZVggZXF1aXZhbGVudCBpbiB0ZXh0IGFuZFxuLy8gbWF0aCBtb2RlICh3aGVuIHRoZXkgZXhpc3QpLlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdW5pY29kZUFjY2VudHMgPSAoe1xuICBcIlxcdTAzMDFcIjoge1xuICAgIHRleHQ6IFwiXFxcXCdcIixcbiAgICBtYXRoOiAnXFxcXGFjdXRlJ1xuICB9LFxuICBcIlxcdTAzMDBcIjoge1xuICAgIHRleHQ6ICdcXFxcYCcsXG4gICAgbWF0aDogJ1xcXFxncmF2ZSdcbiAgfSxcbiAgXCJcXHUwMzA4XCI6IHtcbiAgICB0ZXh0OiAnXFxcXFwiJyxcbiAgICBtYXRoOiAnXFxcXGRkb3QnXG4gIH0sXG4gIFwiXFx1MDMwM1wiOiB7XG4gICAgdGV4dDogJ1xcXFx+JyxcbiAgICBtYXRoOiAnXFxcXHRpbGRlJ1xuICB9LFxuICBcIlxcdTAzMDRcIjoge1xuICAgIHRleHQ6ICdcXFxcPScsXG4gICAgbWF0aDogJ1xcXFxiYXInXG4gIH0sXG4gIFwiXFx1MDMwNlwiOiB7XG4gICAgdGV4dDogXCJcXFxcdVwiLFxuICAgIG1hdGg6ICdcXFxcYnJldmUnXG4gIH0sXG4gIFwiXFx1MDMwQ1wiOiB7XG4gICAgdGV4dDogJ1xcXFx2JyxcbiAgICBtYXRoOiAnXFxcXGNoZWNrJ1xuICB9LFxuICBcIlxcdTAzMDJcIjoge1xuICAgIHRleHQ6ICdcXFxcXicsXG4gICAgbWF0aDogJ1xcXFxoYXQnXG4gIH0sXG4gIFwiXFx1MDMwN1wiOiB7XG4gICAgdGV4dDogJ1xcXFwuJyxcbiAgICBtYXRoOiAnXFxcXGRvdCdcbiAgfSxcbiAgXCJcXHUwMzBBXCI6IHtcbiAgICB0ZXh0OiAnXFxcXHInLFxuICAgIG1hdGg6ICdcXFxcbWF0aHJpbmcnXG4gIH0sXG4gIFwiXFx1MDMwQlwiOiB7XG4gICAgdGV4dDogJ1xcXFxIJ1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3VuaWNvZGVTeW1ib2xzLmpzXG4vLyBUaGlzIGZpbGUgaXMgR0VORVJBVEVEIGJ5IHVuaWNvZGVNYWtlLmpzLiBETyBOT1QgTU9ESUZZLlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdW5pY29kZVN5bWJvbHMgPSAoe1xuICBcIlxceEUxXCI6IFwiYVxcdTAzMDFcIixcbiAgLy8gw6EgPSBcXCd7YX1cbiAgXCJcXHhFMFwiOiBcImFcXHUwMzAwXCIsXG4gIC8vIMOgID0gXFxge2F9XG4gIFwiXFx4RTRcIjogXCJhXFx1MDMwOFwiLFxuICAvLyDDpCA9IFxcXCJ7YX1cbiAgXCJcXHUwMURGXCI6IFwiYVxcdTAzMDhcXHUwMzA0XCIsXG4gIC8vIMefID0gXFxcIlxcPXthfVxuICBcIlxceEUzXCI6IFwiYVxcdTAzMDNcIixcbiAgLy8gw6MgPSBcXH57YX1cbiAgXCJcXHUwMTAxXCI6IFwiYVxcdTAzMDRcIixcbiAgLy8gxIEgPSBcXD17YX1cbiAgXCJcXHUwMTAzXCI6IFwiYVxcdTAzMDZcIixcbiAgLy8gxIMgPSBcXHV7YX1cbiAgXCJcXHUxRUFGXCI6IFwiYVxcdTAzMDZcXHUwMzAxXCIsXG4gIC8vIOG6ryA9IFxcdVxcJ3thfVxuICBcIlxcdTFFQjFcIjogXCJhXFx1MDMwNlxcdTAzMDBcIixcbiAgLy8g4bqxID0gXFx1XFxge2F9XG4gIFwiXFx1MUVCNVwiOiBcImFcXHUwMzA2XFx1MDMwM1wiLFxuICAvLyDhurUgPSBcXHVcXH57YX1cbiAgXCJcXHUwMUNFXCI6IFwiYVxcdTAzMENcIixcbiAgLy8gx44gPSBcXHZ7YX1cbiAgXCJcXHhFMlwiOiBcImFcXHUwMzAyXCIsXG4gIC8vIMOiID0gXFxee2F9XG4gIFwiXFx1MUVBNVwiOiBcImFcXHUwMzAyXFx1MDMwMVwiLFxuICAvLyDhuqUgPSBcXF5cXCd7YX1cbiAgXCJcXHUxRUE3XCI6IFwiYVxcdTAzMDJcXHUwMzAwXCIsXG4gIC8vIOG6pyA9IFxcXlxcYHthfVxuICBcIlxcdTFFQUJcIjogXCJhXFx1MDMwMlxcdTAzMDNcIixcbiAgLy8g4bqrID0gXFxeXFx+e2F9XG4gIFwiXFx1MDIyN1wiOiBcImFcXHUwMzA3XCIsXG4gIC8vIMinID0gXFwue2F9XG4gIFwiXFx1MDFFMVwiOiBcImFcXHUwMzA3XFx1MDMwNFwiLFxuICAvLyDHoSA9IFxcLlxcPXthfVxuICBcIlxceEU1XCI6IFwiYVxcdTAzMEFcIixcbiAgLy8gw6UgPSBcXHJ7YX1cbiAgXCJcXHUwMUZCXCI6IFwiYVxcdTAzMEFcXHUwMzAxXCIsXG4gIC8vIMe7ID0gXFxyXFwne2F9XG4gIFwiXFx1MUUwM1wiOiBcImJcXHUwMzA3XCIsXG4gIC8vIOG4gyA9IFxcLntifVxuICBcIlxcdTAxMDdcIjogXCJjXFx1MDMwMVwiLFxuICAvLyDEhyA9IFxcJ3tjfVxuICBcIlxcdTAxMERcIjogXCJjXFx1MDMwQ1wiLFxuICAvLyDEjSA9IFxcdntjfVxuICBcIlxcdTAxMDlcIjogXCJjXFx1MDMwMlwiLFxuICAvLyDEiSA9IFxcXntjfVxuICBcIlxcdTAxMEJcIjogXCJjXFx1MDMwN1wiLFxuICAvLyDEiyA9IFxcLntjfVxuICBcIlxcdTAxMEZcIjogXCJkXFx1MDMwQ1wiLFxuICAvLyDEjyA9IFxcdntkfVxuICBcIlxcdTFFMEJcIjogXCJkXFx1MDMwN1wiLFxuICAvLyDhuIsgPSBcXC57ZH1cbiAgXCJcXHhFOVwiOiBcImVcXHUwMzAxXCIsXG4gIC8vIMOpID0gXFwne2V9XG4gIFwiXFx4RThcIjogXCJlXFx1MDMwMFwiLFxuICAvLyDDqCA9IFxcYHtlfVxuICBcIlxceEVCXCI6IFwiZVxcdTAzMDhcIixcbiAgLy8gw6sgPSBcXFwie2V9XG4gIFwiXFx1MUVCRFwiOiBcImVcXHUwMzAzXCIsXG4gIC8vIOG6vSA9IFxcfntlfVxuICBcIlxcdTAxMTNcIjogXCJlXFx1MDMwNFwiLFxuICAvLyDEkyA9IFxcPXtlfVxuICBcIlxcdTFFMTdcIjogXCJlXFx1MDMwNFxcdTAzMDFcIixcbiAgLy8g4biXID0gXFw9XFwne2V9XG4gIFwiXFx1MUUxNVwiOiBcImVcXHUwMzA0XFx1MDMwMFwiLFxuICAvLyDhuJUgPSBcXD1cXGB7ZX1cbiAgXCJcXHUwMTE1XCI6IFwiZVxcdTAzMDZcIixcbiAgLy8gxJUgPSBcXHV7ZX1cbiAgXCJcXHUwMTFCXCI6IFwiZVxcdTAzMENcIixcbiAgLy8gxJsgPSBcXHZ7ZX1cbiAgXCJcXHhFQVwiOiBcImVcXHUwMzAyXCIsXG4gIC8vIMOqID0gXFxee2V9XG4gIFwiXFx1MUVCRlwiOiBcImVcXHUwMzAyXFx1MDMwMVwiLFxuICAvLyDhur8gPSBcXF5cXCd7ZX1cbiAgXCJcXHUxRUMxXCI6IFwiZVxcdTAzMDJcXHUwMzAwXCIsXG4gIC8vIOG7gSA9IFxcXlxcYHtlfVxuICBcIlxcdTFFQzVcIjogXCJlXFx1MDMwMlxcdTAzMDNcIixcbiAgLy8g4buFID0gXFxeXFx+e2V9XG4gIFwiXFx1MDExN1wiOiBcImVcXHUwMzA3XCIsXG4gIC8vIMSXID0gXFwue2V9XG4gIFwiXFx1MUUxRlwiOiBcImZcXHUwMzA3XCIsXG4gIC8vIOG4nyA9IFxcLntmfVxuICBcIlxcdTAxRjVcIjogXCJnXFx1MDMwMVwiLFxuICAvLyDHtSA9IFxcJ3tnfVxuICBcIlxcdTFFMjFcIjogXCJnXFx1MDMwNFwiLFxuICAvLyDhuKEgPSBcXD17Z31cbiAgXCJcXHUwMTFGXCI6IFwiZ1xcdTAzMDZcIixcbiAgLy8gxJ8gPSBcXHV7Z31cbiAgXCJcXHUwMUU3XCI6IFwiZ1xcdTAzMENcIixcbiAgLy8gx6cgPSBcXHZ7Z31cbiAgXCJcXHUwMTFEXCI6IFwiZ1xcdTAzMDJcIixcbiAgLy8gxJ0gPSBcXF57Z31cbiAgXCJcXHUwMTIxXCI6IFwiZ1xcdTAzMDdcIixcbiAgLy8gxKEgPSBcXC57Z31cbiAgXCJcXHUxRTI3XCI6IFwiaFxcdTAzMDhcIixcbiAgLy8g4binID0gXFxcIntofVxuICBcIlxcdTAyMUZcIjogXCJoXFx1MDMwQ1wiLFxuICAvLyDInyA9IFxcdntofVxuICBcIlxcdTAxMjVcIjogXCJoXFx1MDMwMlwiLFxuICAvLyDEpSA9IFxcXntofVxuICBcIlxcdTFFMjNcIjogXCJoXFx1MDMwN1wiLFxuICAvLyDhuKMgPSBcXC57aH1cbiAgXCJcXHhFRFwiOiBcImlcXHUwMzAxXCIsXG4gIC8vIMOtID0gXFwne2l9XG4gIFwiXFx4RUNcIjogXCJpXFx1MDMwMFwiLFxuICAvLyDDrCA9IFxcYHtpfVxuICBcIlxceEVGXCI6IFwiaVxcdTAzMDhcIixcbiAgLy8gw68gPSBcXFwie2l9XG4gIFwiXFx1MUUyRlwiOiBcImlcXHUwMzA4XFx1MDMwMVwiLFxuICAvLyDhuK8gPSBcXFwiXFwne2l9XG4gIFwiXFx1MDEyOVwiOiBcImlcXHUwMzAzXCIsXG4gIC8vIMSpID0gXFx+e2l9XG4gIFwiXFx1MDEyQlwiOiBcImlcXHUwMzA0XCIsXG4gIC8vIMSrID0gXFw9e2l9XG4gIFwiXFx1MDEyRFwiOiBcImlcXHUwMzA2XCIsXG4gIC8vIMStID0gXFx1e2l9XG4gIFwiXFx1MDFEMFwiOiBcImlcXHUwMzBDXCIsXG4gIC8vIMeQID0gXFx2e2l9XG4gIFwiXFx4RUVcIjogXCJpXFx1MDMwMlwiLFxuICAvLyDDriA9IFxcXntpfVxuICBcIlxcdTAxRjBcIjogXCJqXFx1MDMwQ1wiLFxuICAvLyDHsCA9IFxcdntqfVxuICBcIlxcdTAxMzVcIjogXCJqXFx1MDMwMlwiLFxuICAvLyDEtSA9IFxcXntqfVxuICBcIlxcdTFFMzFcIjogXCJrXFx1MDMwMVwiLFxuICAvLyDhuLEgPSBcXCd7a31cbiAgXCJcXHUwMUU5XCI6IFwia1xcdTAzMENcIixcbiAgLy8gx6kgPSBcXHZ7a31cbiAgXCJcXHUwMTNBXCI6IFwibFxcdTAzMDFcIixcbiAgLy8gxLogPSBcXCd7bH1cbiAgXCJcXHUwMTNFXCI6IFwibFxcdTAzMENcIixcbiAgLy8gxL4gPSBcXHZ7bH1cbiAgXCJcXHUxRTNGXCI6IFwibVxcdTAzMDFcIixcbiAgLy8g4bi/ID0gXFwne219XG4gIFwiXFx1MUU0MVwiOiBcIm1cXHUwMzA3XCIsXG4gIC8vIOG5gSA9IFxcLnttfVxuICBcIlxcdTAxNDRcIjogXCJuXFx1MDMwMVwiLFxuICAvLyDFhCA9IFxcJ3tufVxuICBcIlxcdTAxRjlcIjogXCJuXFx1MDMwMFwiLFxuICAvLyDHuSA9IFxcYHtufVxuICBcIlxceEYxXCI6IFwiblxcdTAzMDNcIixcbiAgLy8gw7EgPSBcXH57bn1cbiAgXCJcXHUwMTQ4XCI6IFwiblxcdTAzMENcIixcbiAgLy8gxYggPSBcXHZ7bn1cbiAgXCJcXHUxRTQ1XCI6IFwiblxcdTAzMDdcIixcbiAgLy8g4bmFID0gXFwue259XG4gIFwiXFx4RjNcIjogXCJvXFx1MDMwMVwiLFxuICAvLyDDsyA9IFxcJ3tvfVxuICBcIlxceEYyXCI6IFwib1xcdTAzMDBcIixcbiAgLy8gw7IgPSBcXGB7b31cbiAgXCJcXHhGNlwiOiBcIm9cXHUwMzA4XCIsXG4gIC8vIMO2ID0gXFxcIntvfVxuICBcIlxcdTAyMkJcIjogXCJvXFx1MDMwOFxcdTAzMDRcIixcbiAgLy8gyKsgPSBcXFwiXFw9e299XG4gIFwiXFx4RjVcIjogXCJvXFx1MDMwM1wiLFxuICAvLyDDtSA9IFxcfntvfVxuICBcIlxcdTFFNERcIjogXCJvXFx1MDMwM1xcdTAzMDFcIixcbiAgLy8g4bmNID0gXFx+XFwne299XG4gIFwiXFx1MUU0RlwiOiBcIm9cXHUwMzAzXFx1MDMwOFwiLFxuICAvLyDhuY8gPSBcXH5cXFwie299XG4gIFwiXFx1MDIyRFwiOiBcIm9cXHUwMzAzXFx1MDMwNFwiLFxuICAvLyDIrSA9IFxcflxcPXtvfVxuICBcIlxcdTAxNERcIjogXCJvXFx1MDMwNFwiLFxuICAvLyDFjSA9IFxcPXtvfVxuICBcIlxcdTFFNTNcIjogXCJvXFx1MDMwNFxcdTAzMDFcIixcbiAgLy8g4bmTID0gXFw9XFwne299XG4gIFwiXFx1MUU1MVwiOiBcIm9cXHUwMzA0XFx1MDMwMFwiLFxuICAvLyDhuZEgPSBcXD1cXGB7b31cbiAgXCJcXHUwMTRGXCI6IFwib1xcdTAzMDZcIixcbiAgLy8gxY8gPSBcXHV7b31cbiAgXCJcXHUwMUQyXCI6IFwib1xcdTAzMENcIixcbiAgLy8gx5IgPSBcXHZ7b31cbiAgXCJcXHhGNFwiOiBcIm9cXHUwMzAyXCIsXG4gIC8vIMO0ID0gXFxee299XG4gIFwiXFx1MUVEMVwiOiBcIm9cXHUwMzAyXFx1MDMwMVwiLFxuICAvLyDhu5EgPSBcXF5cXCd7b31cbiAgXCJcXHUxRUQzXCI6IFwib1xcdTAzMDJcXHUwMzAwXCIsXG4gIC8vIOG7kyA9IFxcXlxcYHtvfVxuICBcIlxcdTFFRDdcIjogXCJvXFx1MDMwMlxcdTAzMDNcIixcbiAgLy8g4buXID0gXFxeXFx+e299XG4gIFwiXFx1MDIyRlwiOiBcIm9cXHUwMzA3XCIsXG4gIC8vIMivID0gXFwue299XG4gIFwiXFx1MDIzMVwiOiBcIm9cXHUwMzA3XFx1MDMwNFwiLFxuICAvLyDIsSA9IFxcLlxcPXtvfVxuICBcIlxcdTAxNTFcIjogXCJvXFx1MDMwQlwiLFxuICAvLyDFkSA9IFxcSHtvfVxuICBcIlxcdTFFNTVcIjogXCJwXFx1MDMwMVwiLFxuICAvLyDhuZUgPSBcXCd7cH1cbiAgXCJcXHUxRTU3XCI6IFwicFxcdTAzMDdcIixcbiAgLy8g4bmXID0gXFwue3B9XG4gIFwiXFx1MDE1NVwiOiBcInJcXHUwMzAxXCIsXG4gIC8vIMWVID0gXFwne3J9XG4gIFwiXFx1MDE1OVwiOiBcInJcXHUwMzBDXCIsXG4gIC8vIMWZID0gXFx2e3J9XG4gIFwiXFx1MUU1OVwiOiBcInJcXHUwMzA3XCIsXG4gIC8vIOG5mSA9IFxcLntyfVxuICBcIlxcdTAxNUJcIjogXCJzXFx1MDMwMVwiLFxuICAvLyDFmyA9IFxcJ3tzfVxuICBcIlxcdTFFNjVcIjogXCJzXFx1MDMwMVxcdTAzMDdcIixcbiAgLy8g4bmlID0gXFwnXFwue3N9XG4gIFwiXFx1MDE2MVwiOiBcInNcXHUwMzBDXCIsXG4gIC8vIMWhID0gXFx2e3N9XG4gIFwiXFx1MUU2N1wiOiBcInNcXHUwMzBDXFx1MDMwN1wiLFxuICAvLyDhuacgPSBcXHZcXC57c31cbiAgXCJcXHUwMTVEXCI6IFwic1xcdTAzMDJcIixcbiAgLy8gxZ0gPSBcXF57c31cbiAgXCJcXHUxRTYxXCI6IFwic1xcdTAzMDdcIixcbiAgLy8g4bmhID0gXFwue3N9XG4gIFwiXFx1MUU5N1wiOiBcInRcXHUwMzA4XCIsXG4gIC8vIOG6lyA9IFxcXCJ7dH1cbiAgXCJcXHUwMTY1XCI6IFwidFxcdTAzMENcIixcbiAgLy8gxaUgPSBcXHZ7dH1cbiAgXCJcXHUxRTZCXCI6IFwidFxcdTAzMDdcIixcbiAgLy8g4bmrID0gXFwue3R9XG4gIFwiXFx4RkFcIjogXCJ1XFx1MDMwMVwiLFxuICAvLyDDuiA9IFxcJ3t1fVxuICBcIlxceEY5XCI6IFwidVxcdTAzMDBcIixcbiAgLy8gw7kgPSBcXGB7dX1cbiAgXCJcXHhGQ1wiOiBcInVcXHUwMzA4XCIsXG4gIC8vIMO8ID0gXFxcInt1fVxuICBcIlxcdTAxRDhcIjogXCJ1XFx1MDMwOFxcdTAzMDFcIixcbiAgLy8gx5ggPSBcXFwiXFwne3V9XG4gIFwiXFx1MDFEQ1wiOiBcInVcXHUwMzA4XFx1MDMwMFwiLFxuICAvLyDHnCA9IFxcXCJcXGB7dX1cbiAgXCJcXHUwMUQ2XCI6IFwidVxcdTAzMDhcXHUwMzA0XCIsXG4gIC8vIMeWID0gXFxcIlxcPXt1fVxuICBcIlxcdTAxREFcIjogXCJ1XFx1MDMwOFxcdTAzMENcIixcbiAgLy8gx5ogPSBcXFwiXFx2e3V9XG4gIFwiXFx1MDE2OVwiOiBcInVcXHUwMzAzXCIsXG4gIC8vIMWpID0gXFx+e3V9XG4gIFwiXFx1MUU3OVwiOiBcInVcXHUwMzAzXFx1MDMwMVwiLFxuICAvLyDhubkgPSBcXH5cXCd7dX1cbiAgXCJcXHUwMTZCXCI6IFwidVxcdTAzMDRcIixcbiAgLy8gxasgPSBcXD17dX1cbiAgXCJcXHUxRTdCXCI6IFwidVxcdTAzMDRcXHUwMzA4XCIsXG4gIC8vIOG5uyA9IFxcPVxcXCJ7dX1cbiAgXCJcXHUwMTZEXCI6IFwidVxcdTAzMDZcIixcbiAgLy8gxa0gPSBcXHV7dX1cbiAgXCJcXHUwMUQ0XCI6IFwidVxcdTAzMENcIixcbiAgLy8gx5QgPSBcXHZ7dX1cbiAgXCJcXHhGQlwiOiBcInVcXHUwMzAyXCIsXG4gIC8vIMO7ID0gXFxee3V9XG4gIFwiXFx1MDE2RlwiOiBcInVcXHUwMzBBXCIsXG4gIC8vIMWvID0gXFxye3V9XG4gIFwiXFx1MDE3MVwiOiBcInVcXHUwMzBCXCIsXG4gIC8vIMWxID0gXFxIe3V9XG4gIFwiXFx1MUU3RFwiOiBcInZcXHUwMzAzXCIsXG4gIC8vIOG5vSA9IFxcfnt2fVxuICBcIlxcdTFFODNcIjogXCJ3XFx1MDMwMVwiLFxuICAvLyDhuoMgPSBcXCd7d31cbiAgXCJcXHUxRTgxXCI6IFwid1xcdTAzMDBcIixcbiAgLy8g4bqBID0gXFxge3d9XG4gIFwiXFx1MUU4NVwiOiBcIndcXHUwMzA4XCIsXG4gIC8vIOG6hSA9IFxcXCJ7d31cbiAgXCJcXHUwMTc1XCI6IFwid1xcdTAzMDJcIixcbiAgLy8gxbUgPSBcXF57d31cbiAgXCJcXHUxRTg3XCI6IFwid1xcdTAzMDdcIixcbiAgLy8g4bqHID0gXFwue3d9XG4gIFwiXFx1MUU5OFwiOiBcIndcXHUwMzBBXCIsXG4gIC8vIOG6mCA9IFxccnt3fVxuICBcIlxcdTFFOERcIjogXCJ4XFx1MDMwOFwiLFxuICAvLyDhuo0gPSBcXFwie3h9XG4gIFwiXFx1MUU4QlwiOiBcInhcXHUwMzA3XCIsXG4gIC8vIOG6iyA9IFxcLnt4fVxuICBcIlxceEZEXCI6IFwieVxcdTAzMDFcIixcbiAgLy8gw70gPSBcXCd7eX1cbiAgXCJcXHUxRUYzXCI6IFwieVxcdTAzMDBcIixcbiAgLy8g4buzID0gXFxge3l9XG4gIFwiXFx4RkZcIjogXCJ5XFx1MDMwOFwiLFxuICAvLyDDvyA9IFxcXCJ7eX1cbiAgXCJcXHUxRUY5XCI6IFwieVxcdTAzMDNcIixcbiAgLy8g4bu5ID0gXFx+e3l9XG4gIFwiXFx1MDIzM1wiOiBcInlcXHUwMzA0XCIsXG4gIC8vIMizID0gXFw9e3l9XG4gIFwiXFx1MDE3N1wiOiBcInlcXHUwMzAyXCIsXG4gIC8vIMW3ID0gXFxee3l9XG4gIFwiXFx1MUU4RlwiOiBcInlcXHUwMzA3XCIsXG4gIC8vIOG6jyA9IFxcLnt5fVxuICBcIlxcdTFFOTlcIjogXCJ5XFx1MDMwQVwiLFxuICAvLyDhupkgPSBcXHJ7eX1cbiAgXCJcXHUwMTdBXCI6IFwielxcdTAzMDFcIixcbiAgLy8gxbogPSBcXCd7en1cbiAgXCJcXHUwMTdFXCI6IFwielxcdTAzMENcIixcbiAgLy8gxb4gPSBcXHZ7en1cbiAgXCJcXHUxRTkxXCI6IFwielxcdTAzMDJcIixcbiAgLy8g4bqRID0gXFxee3p9XG4gIFwiXFx1MDE3Q1wiOiBcInpcXHUwMzA3XCIsXG4gIC8vIMW8ID0gXFwue3p9XG4gIFwiXFx4QzFcIjogXCJBXFx1MDMwMVwiLFxuICAvLyDDgSA9IFxcJ3tBfVxuICBcIlxceEMwXCI6IFwiQVxcdTAzMDBcIixcbiAgLy8gw4AgPSBcXGB7QX1cbiAgXCJcXHhDNFwiOiBcIkFcXHUwMzA4XCIsXG4gIC8vIMOEID0gXFxcIntBfVxuICBcIlxcdTAxREVcIjogXCJBXFx1MDMwOFxcdTAzMDRcIixcbiAgLy8gx54gPSBcXFwiXFw9e0F9XG4gIFwiXFx4QzNcIjogXCJBXFx1MDMwM1wiLFxuICAvLyDDgyA9IFxcfntBfVxuICBcIlxcdTAxMDBcIjogXCJBXFx1MDMwNFwiLFxuICAvLyDEgCA9IFxcPXtBfVxuICBcIlxcdTAxMDJcIjogXCJBXFx1MDMwNlwiLFxuICAvLyDEgiA9IFxcdXtBfVxuICBcIlxcdTFFQUVcIjogXCJBXFx1MDMwNlxcdTAzMDFcIixcbiAgLy8g4bquID0gXFx1XFwne0F9XG4gIFwiXFx1MUVCMFwiOiBcIkFcXHUwMzA2XFx1MDMwMFwiLFxuICAvLyDhurAgPSBcXHVcXGB7QX1cbiAgXCJcXHUxRUI0XCI6IFwiQVxcdTAzMDZcXHUwMzAzXCIsXG4gIC8vIOG6tCA9IFxcdVxcfntBfVxuICBcIlxcdTAxQ0RcIjogXCJBXFx1MDMwQ1wiLFxuICAvLyDHjSA9IFxcdntBfVxuICBcIlxceEMyXCI6IFwiQVxcdTAzMDJcIixcbiAgLy8gw4IgPSBcXF57QX1cbiAgXCJcXHUxRUE0XCI6IFwiQVxcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG6pCA9IFxcXlxcJ3tBfVxuICBcIlxcdTFFQTZcIjogXCJBXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4bqmID0gXFxeXFxge0F9XG4gIFwiXFx1MUVBQVwiOiBcIkFcXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhuqogPSBcXF5cXH57QX1cbiAgXCJcXHUwMjI2XCI6IFwiQVxcdTAzMDdcIixcbiAgLy8gyKYgPSBcXC57QX1cbiAgXCJcXHUwMUUwXCI6IFwiQVxcdTAzMDdcXHUwMzA0XCIsXG4gIC8vIMegID0gXFwuXFw9e0F9XG4gIFwiXFx4QzVcIjogXCJBXFx1MDMwQVwiLFxuICAvLyDDhSA9IFxccntBfVxuICBcIlxcdTAxRkFcIjogXCJBXFx1MDMwQVxcdTAzMDFcIixcbiAgLy8gx7ogPSBcXHJcXCd7QX1cbiAgXCJcXHUxRTAyXCI6IFwiQlxcdTAzMDdcIixcbiAgLy8g4biCID0gXFwue0J9XG4gIFwiXFx1MDEwNlwiOiBcIkNcXHUwMzAxXCIsXG4gIC8vIMSGID0gXFwne0N9XG4gIFwiXFx1MDEwQ1wiOiBcIkNcXHUwMzBDXCIsXG4gIC8vIMSMID0gXFx2e0N9XG4gIFwiXFx1MDEwOFwiOiBcIkNcXHUwMzAyXCIsXG4gIC8vIMSIID0gXFxee0N9XG4gIFwiXFx1MDEwQVwiOiBcIkNcXHUwMzA3XCIsXG4gIC8vIMSKID0gXFwue0N9XG4gIFwiXFx1MDEwRVwiOiBcIkRcXHUwMzBDXCIsXG4gIC8vIMSOID0gXFx2e0R9XG4gIFwiXFx1MUUwQVwiOiBcIkRcXHUwMzA3XCIsXG4gIC8vIOG4iiA9IFxcLntEfVxuICBcIlxceEM5XCI6IFwiRVxcdTAzMDFcIixcbiAgLy8gw4kgPSBcXCd7RX1cbiAgXCJcXHhDOFwiOiBcIkVcXHUwMzAwXCIsXG4gIC8vIMOIID0gXFxge0V9XG4gIFwiXFx4Q0JcIjogXCJFXFx1MDMwOFwiLFxuICAvLyDDiyA9IFxcXCJ7RX1cbiAgXCJcXHUxRUJDXCI6IFwiRVxcdTAzMDNcIixcbiAgLy8g4bq8ID0gXFx+e0V9XG4gIFwiXFx1MDExMlwiOiBcIkVcXHUwMzA0XCIsXG4gIC8vIMSSID0gXFw9e0V9XG4gIFwiXFx1MUUxNlwiOiBcIkVcXHUwMzA0XFx1MDMwMVwiLFxuICAvLyDhuJYgPSBcXD1cXCd7RX1cbiAgXCJcXHUxRTE0XCI6IFwiRVxcdTAzMDRcXHUwMzAwXCIsXG4gIC8vIOG4lCA9IFxcPVxcYHtFfVxuICBcIlxcdTAxMTRcIjogXCJFXFx1MDMwNlwiLFxuICAvLyDElCA9IFxcdXtFfVxuICBcIlxcdTAxMUFcIjogXCJFXFx1MDMwQ1wiLFxuICAvLyDEmiA9IFxcdntFfVxuICBcIlxceENBXCI6IFwiRVxcdTAzMDJcIixcbiAgLy8gw4ogPSBcXF57RX1cbiAgXCJcXHUxRUJFXCI6IFwiRVxcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG6viA9IFxcXlxcJ3tFfVxuICBcIlxcdTFFQzBcIjogXCJFXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4buAID0gXFxeXFxge0V9XG4gIFwiXFx1MUVDNFwiOiBcIkVcXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhu4QgPSBcXF5cXH57RX1cbiAgXCJcXHUwMTE2XCI6IFwiRVxcdTAzMDdcIixcbiAgLy8gxJYgPSBcXC57RX1cbiAgXCJcXHUxRTFFXCI6IFwiRlxcdTAzMDdcIixcbiAgLy8g4bieID0gXFwue0Z9XG4gIFwiXFx1MDFGNFwiOiBcIkdcXHUwMzAxXCIsXG4gIC8vIMe0ID0gXFwne0d9XG4gIFwiXFx1MUUyMFwiOiBcIkdcXHUwMzA0XCIsXG4gIC8vIOG4oCA9IFxcPXtHfVxuICBcIlxcdTAxMUVcIjogXCJHXFx1MDMwNlwiLFxuICAvLyDEniA9IFxcdXtHfVxuICBcIlxcdTAxRTZcIjogXCJHXFx1MDMwQ1wiLFxuICAvLyDHpiA9IFxcdntHfVxuICBcIlxcdTAxMUNcIjogXCJHXFx1MDMwMlwiLFxuICAvLyDEnCA9IFxcXntHfVxuICBcIlxcdTAxMjBcIjogXCJHXFx1MDMwN1wiLFxuICAvLyDEoCA9IFxcLntHfVxuICBcIlxcdTFFMjZcIjogXCJIXFx1MDMwOFwiLFxuICAvLyDhuKYgPSBcXFwie0h9XG4gIFwiXFx1MDIxRVwiOiBcIkhcXHUwMzBDXCIsXG4gIC8vIMieID0gXFx2e0h9XG4gIFwiXFx1MDEyNFwiOiBcIkhcXHUwMzAyXCIsXG4gIC8vIMSkID0gXFxee0h9XG4gIFwiXFx1MUUyMlwiOiBcIkhcXHUwMzA3XCIsXG4gIC8vIOG4oiA9IFxcLntIfVxuICBcIlxceENEXCI6IFwiSVxcdTAzMDFcIixcbiAgLy8gw40gPSBcXCd7SX1cbiAgXCJcXHhDQ1wiOiBcIklcXHUwMzAwXCIsXG4gIC8vIMOMID0gXFxge0l9XG4gIFwiXFx4Q0ZcIjogXCJJXFx1MDMwOFwiLFxuICAvLyDDjyA9IFxcXCJ7SX1cbiAgXCJcXHUxRTJFXCI6IFwiSVxcdTAzMDhcXHUwMzAxXCIsXG4gIC8vIOG4riA9IFxcXCJcXCd7SX1cbiAgXCJcXHUwMTI4XCI6IFwiSVxcdTAzMDNcIixcbiAgLy8gxKggPSBcXH57SX1cbiAgXCJcXHUwMTJBXCI6IFwiSVxcdTAzMDRcIixcbiAgLy8gxKogPSBcXD17SX1cbiAgXCJcXHUwMTJDXCI6IFwiSVxcdTAzMDZcIixcbiAgLy8gxKwgPSBcXHV7SX1cbiAgXCJcXHUwMUNGXCI6IFwiSVxcdTAzMENcIixcbiAgLy8gx48gPSBcXHZ7SX1cbiAgXCJcXHhDRVwiOiBcIklcXHUwMzAyXCIsXG4gIC8vIMOOID0gXFxee0l9XG4gIFwiXFx1MDEzMFwiOiBcIklcXHUwMzA3XCIsXG4gIC8vIMSwID0gXFwue0l9XG4gIFwiXFx1MDEzNFwiOiBcIkpcXHUwMzAyXCIsXG4gIC8vIMS0ID0gXFxee0p9XG4gIFwiXFx1MUUzMFwiOiBcIktcXHUwMzAxXCIsXG4gIC8vIOG4sCA9IFxcJ3tLfVxuICBcIlxcdTAxRThcIjogXCJLXFx1MDMwQ1wiLFxuICAvLyDHqCA9IFxcdntLfVxuICBcIlxcdTAxMzlcIjogXCJMXFx1MDMwMVwiLFxuICAvLyDEuSA9IFxcJ3tMfVxuICBcIlxcdTAxM0RcIjogXCJMXFx1MDMwQ1wiLFxuICAvLyDEvSA9IFxcdntMfVxuICBcIlxcdTFFM0VcIjogXCJNXFx1MDMwMVwiLFxuICAvLyDhuL4gPSBcXCd7TX1cbiAgXCJcXHUxRTQwXCI6IFwiTVxcdTAzMDdcIixcbiAgLy8g4bmAID0gXFwue019XG4gIFwiXFx1MDE0M1wiOiBcIk5cXHUwMzAxXCIsXG4gIC8vIMWDID0gXFwne059XG4gIFwiXFx1MDFGOFwiOiBcIk5cXHUwMzAwXCIsXG4gIC8vIMe4ID0gXFxge059XG4gIFwiXFx4RDFcIjogXCJOXFx1MDMwM1wiLFxuICAvLyDDkSA9IFxcfntOfVxuICBcIlxcdTAxNDdcIjogXCJOXFx1MDMwQ1wiLFxuICAvLyDFhyA9IFxcdntOfVxuICBcIlxcdTFFNDRcIjogXCJOXFx1MDMwN1wiLFxuICAvLyDhuYQgPSBcXC57Tn1cbiAgXCJcXHhEM1wiOiBcIk9cXHUwMzAxXCIsXG4gIC8vIMOTID0gXFwne099XG4gIFwiXFx4RDJcIjogXCJPXFx1MDMwMFwiLFxuICAvLyDDkiA9IFxcYHtPfVxuICBcIlxceEQ2XCI6IFwiT1xcdTAzMDhcIixcbiAgLy8gw5YgPSBcXFwie099XG4gIFwiXFx1MDIyQVwiOiBcIk9cXHUwMzA4XFx1MDMwNFwiLFxuICAvLyDIqiA9IFxcXCJcXD17T31cbiAgXCJcXHhENVwiOiBcIk9cXHUwMzAzXCIsXG4gIC8vIMOVID0gXFx+e099XG4gIFwiXFx1MUU0Q1wiOiBcIk9cXHUwMzAzXFx1MDMwMVwiLFxuICAvLyDhuYwgPSBcXH5cXCd7T31cbiAgXCJcXHUxRTRFXCI6IFwiT1xcdTAzMDNcXHUwMzA4XCIsXG4gIC8vIOG5jiA9IFxcflxcXCJ7T31cbiAgXCJcXHUwMjJDXCI6IFwiT1xcdTAzMDNcXHUwMzA0XCIsXG4gIC8vIMisID0gXFx+XFw9e099XG4gIFwiXFx1MDE0Q1wiOiBcIk9cXHUwMzA0XCIsXG4gIC8vIMWMID0gXFw9e099XG4gIFwiXFx1MUU1MlwiOiBcIk9cXHUwMzA0XFx1MDMwMVwiLFxuICAvLyDhuZIgPSBcXD1cXCd7T31cbiAgXCJcXHUxRTUwXCI6IFwiT1xcdTAzMDRcXHUwMzAwXCIsXG4gIC8vIOG5kCA9IFxcPVxcYHtPfVxuICBcIlxcdTAxNEVcIjogXCJPXFx1MDMwNlwiLFxuICAvLyDFjiA9IFxcdXtPfVxuICBcIlxcdTAxRDFcIjogXCJPXFx1MDMwQ1wiLFxuICAvLyDHkSA9IFxcdntPfVxuICBcIlxceEQ0XCI6IFwiT1xcdTAzMDJcIixcbiAgLy8gw5QgPSBcXF57T31cbiAgXCJcXHUxRUQwXCI6IFwiT1xcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG7kCA9IFxcXlxcJ3tPfVxuICBcIlxcdTFFRDJcIjogXCJPXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4buSID0gXFxeXFxge099XG4gIFwiXFx1MUVENlwiOiBcIk9cXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhu5YgPSBcXF5cXH57T31cbiAgXCJcXHUwMjJFXCI6IFwiT1xcdTAzMDdcIixcbiAgLy8gyK4gPSBcXC57T31cbiAgXCJcXHUwMjMwXCI6IFwiT1xcdTAzMDdcXHUwMzA0XCIsXG4gIC8vIMiwID0gXFwuXFw9e099XG4gIFwiXFx1MDE1MFwiOiBcIk9cXHUwMzBCXCIsXG4gIC8vIMWQID0gXFxIe099XG4gIFwiXFx1MUU1NFwiOiBcIlBcXHUwMzAxXCIsXG4gIC8vIOG5lCA9IFxcJ3tQfVxuICBcIlxcdTFFNTZcIjogXCJQXFx1MDMwN1wiLFxuICAvLyDhuZYgPSBcXC57UH1cbiAgXCJcXHUwMTU0XCI6IFwiUlxcdTAzMDFcIixcbiAgLy8gxZQgPSBcXCd7Un1cbiAgXCJcXHUwMTU4XCI6IFwiUlxcdTAzMENcIixcbiAgLy8gxZggPSBcXHZ7Un1cbiAgXCJcXHUxRTU4XCI6IFwiUlxcdTAzMDdcIixcbiAgLy8g4bmYID0gXFwue1J9XG4gIFwiXFx1MDE1QVwiOiBcIlNcXHUwMzAxXCIsXG4gIC8vIMWaID0gXFwne1N9XG4gIFwiXFx1MUU2NFwiOiBcIlNcXHUwMzAxXFx1MDMwN1wiLFxuICAvLyDhuaQgPSBcXCdcXC57U31cbiAgXCJcXHUwMTYwXCI6IFwiU1xcdTAzMENcIixcbiAgLy8gxaAgPSBcXHZ7U31cbiAgXCJcXHUxRTY2XCI6IFwiU1xcdTAzMENcXHUwMzA3XCIsXG4gIC8vIOG5piA9IFxcdlxcLntTfVxuICBcIlxcdTAxNUNcIjogXCJTXFx1MDMwMlwiLFxuICAvLyDFnCA9IFxcXntTfVxuICBcIlxcdTFFNjBcIjogXCJTXFx1MDMwN1wiLFxuICAvLyDhuaAgPSBcXC57U31cbiAgXCJcXHUwMTY0XCI6IFwiVFxcdTAzMENcIixcbiAgLy8gxaQgPSBcXHZ7VH1cbiAgXCJcXHUxRTZBXCI6IFwiVFxcdTAzMDdcIixcbiAgLy8g4bmqID0gXFwue1R9XG4gIFwiXFx4REFcIjogXCJVXFx1MDMwMVwiLFxuICAvLyDDmiA9IFxcJ3tVfVxuICBcIlxceEQ5XCI6IFwiVVxcdTAzMDBcIixcbiAgLy8gw5kgPSBcXGB7VX1cbiAgXCJcXHhEQ1wiOiBcIlVcXHUwMzA4XCIsXG4gIC8vIMOcID0gXFxcIntVfVxuICBcIlxcdTAxRDdcIjogXCJVXFx1MDMwOFxcdTAzMDFcIixcbiAgLy8gx5cgPSBcXFwiXFwne1V9XG4gIFwiXFx1MDFEQlwiOiBcIlVcXHUwMzA4XFx1MDMwMFwiLFxuICAvLyDHmyA9IFxcXCJcXGB7VX1cbiAgXCJcXHUwMUQ1XCI6IFwiVVxcdTAzMDhcXHUwMzA0XCIsXG4gIC8vIMeVID0gXFxcIlxcPXtVfVxuICBcIlxcdTAxRDlcIjogXCJVXFx1MDMwOFxcdTAzMENcIixcbiAgLy8gx5kgPSBcXFwiXFx2e1V9XG4gIFwiXFx1MDE2OFwiOiBcIlVcXHUwMzAzXCIsXG4gIC8vIMWoID0gXFx+e1V9XG4gIFwiXFx1MUU3OFwiOiBcIlVcXHUwMzAzXFx1MDMwMVwiLFxuICAvLyDhubggPSBcXH5cXCd7VX1cbiAgXCJcXHUwMTZBXCI6IFwiVVxcdTAzMDRcIixcbiAgLy8gxaogPSBcXD17VX1cbiAgXCJcXHUxRTdBXCI6IFwiVVxcdTAzMDRcXHUwMzA4XCIsXG4gIC8vIOG5uiA9IFxcPVxcXCJ7VX1cbiAgXCJcXHUwMTZDXCI6IFwiVVxcdTAzMDZcIixcbiAgLy8gxawgPSBcXHV7VX1cbiAgXCJcXHUwMUQzXCI6IFwiVVxcdTAzMENcIixcbiAgLy8gx5MgPSBcXHZ7VX1cbiAgXCJcXHhEQlwiOiBcIlVcXHUwMzAyXCIsXG4gIC8vIMObID0gXFxee1V9XG4gIFwiXFx1MDE2RVwiOiBcIlVcXHUwMzBBXCIsXG4gIC8vIMWuID0gXFxye1V9XG4gIFwiXFx1MDE3MFwiOiBcIlVcXHUwMzBCXCIsXG4gIC8vIMWwID0gXFxIe1V9XG4gIFwiXFx1MUU3Q1wiOiBcIlZcXHUwMzAzXCIsXG4gIC8vIOG5vCA9IFxcfntWfVxuICBcIlxcdTFFODJcIjogXCJXXFx1MDMwMVwiLFxuICAvLyDhuoIgPSBcXCd7V31cbiAgXCJcXHUxRTgwXCI6IFwiV1xcdTAzMDBcIixcbiAgLy8g4bqAID0gXFxge1d9XG4gIFwiXFx1MUU4NFwiOiBcIldcXHUwMzA4XCIsXG4gIC8vIOG6hCA9IFxcXCJ7V31cbiAgXCJcXHUwMTc0XCI6IFwiV1xcdTAzMDJcIixcbiAgLy8gxbQgPSBcXF57V31cbiAgXCJcXHUxRTg2XCI6IFwiV1xcdTAzMDdcIixcbiAgLy8g4bqGID0gXFwue1d9XG4gIFwiXFx1MUU4Q1wiOiBcIlhcXHUwMzA4XCIsXG4gIC8vIOG6jCA9IFxcXCJ7WH1cbiAgXCJcXHUxRThBXCI6IFwiWFxcdTAzMDdcIixcbiAgLy8g4bqKID0gXFwue1h9XG4gIFwiXFx4RERcIjogXCJZXFx1MDMwMVwiLFxuICAvLyDDnSA9IFxcJ3tZfVxuICBcIlxcdTFFRjJcIjogXCJZXFx1MDMwMFwiLFxuICAvLyDhu7IgPSBcXGB7WX1cbiAgXCJcXHUwMTc4XCI6IFwiWVxcdTAzMDhcIixcbiAgLy8gxbggPSBcXFwie1l9XG4gIFwiXFx1MUVGOFwiOiBcIllcXHUwMzAzXCIsXG4gIC8vIOG7uCA9IFxcfntZfVxuICBcIlxcdTAyMzJcIjogXCJZXFx1MDMwNFwiLFxuICAvLyDIsiA9IFxcPXtZfVxuICBcIlxcdTAxNzZcIjogXCJZXFx1MDMwMlwiLFxuICAvLyDFtiA9IFxcXntZfVxuICBcIlxcdTFFOEVcIjogXCJZXFx1MDMwN1wiLFxuICAvLyDhuo4gPSBcXC57WX1cbiAgXCJcXHUwMTc5XCI6IFwiWlxcdTAzMDFcIixcbiAgLy8gxbkgPSBcXCd7Wn1cbiAgXCJcXHUwMTdEXCI6IFwiWlxcdTAzMENcIixcbiAgLy8gxb0gPSBcXHZ7Wn1cbiAgXCJcXHUxRTkwXCI6IFwiWlxcdTAzMDJcIixcbiAgLy8g4bqQID0gXFxee1p9XG4gIFwiXFx1MDE3QlwiOiBcIlpcXHUwMzA3XCIsXG4gIC8vIMW7ID0gXFwue1p9XG4gIFwiXFx1MDNBQ1wiOiBcIlxcdTAzQjFcXHUwMzAxXCIsXG4gIC8vIM6sID0gXFwne86xfVxuICBcIlxcdTFGNzBcIjogXCJcXHUwM0IxXFx1MDMwMFwiLFxuICAvLyDhvbAgPSBcXGB7zrF9XG4gIFwiXFx1MUZCMVwiOiBcIlxcdTAzQjFcXHUwMzA0XCIsXG4gIC8vIOG+sSA9IFxcPXvOsX1cbiAgXCJcXHUxRkIwXCI6IFwiXFx1MDNCMVxcdTAzMDZcIixcbiAgLy8g4b6wID0gXFx1e86xfVxuICBcIlxcdTAzQURcIjogXCJcXHUwM0I1XFx1MDMwMVwiLFxuICAvLyDOrSA9IFxcJ3vOtX1cbiAgXCJcXHUxRjcyXCI6IFwiXFx1MDNCNVxcdTAzMDBcIixcbiAgLy8g4b2yID0gXFxge861fVxuICBcIlxcdTAzQUVcIjogXCJcXHUwM0I3XFx1MDMwMVwiLFxuICAvLyDOriA9IFxcJ3vOt31cbiAgXCJcXHUxRjc0XCI6IFwiXFx1MDNCN1xcdTAzMDBcIixcbiAgLy8g4b20ID0gXFxge863fVxuICBcIlxcdTAzQUZcIjogXCJcXHUwM0I5XFx1MDMwMVwiLFxuICAvLyDOryA9IFxcJ3vOuX1cbiAgXCJcXHUxRjc2XCI6IFwiXFx1MDNCOVxcdTAzMDBcIixcbiAgLy8g4b22ID0gXFxge865fVxuICBcIlxcdTAzQ0FcIjogXCJcXHUwM0I5XFx1MDMwOFwiLFxuICAvLyDPiiA9IFxcXCJ7zrl9XG4gIFwiXFx1MDM5MFwiOiBcIlxcdTAzQjlcXHUwMzA4XFx1MDMwMVwiLFxuICAvLyDOkCA9IFxcXCJcXCd7zrl9XG4gIFwiXFx1MUZEMlwiOiBcIlxcdTAzQjlcXHUwMzA4XFx1MDMwMFwiLFxuICAvLyDhv5IgPSBcXFwiXFxge865fVxuICBcIlxcdTFGRDFcIjogXCJcXHUwM0I5XFx1MDMwNFwiLFxuICAvLyDhv5EgPSBcXD17zrl9XG4gIFwiXFx1MUZEMFwiOiBcIlxcdTAzQjlcXHUwMzA2XCIsXG4gIC8vIOG/kCA9IFxcdXvOuX1cbiAgXCJcXHUwM0NDXCI6IFwiXFx1MDNCRlxcdTAzMDFcIixcbiAgLy8gz4wgPSBcXCd7zr99XG4gIFwiXFx1MUY3OFwiOiBcIlxcdTAzQkZcXHUwMzAwXCIsXG4gIC8vIOG9uCA9IFxcYHvOv31cbiAgXCJcXHUwM0NEXCI6IFwiXFx1MDNDNVxcdTAzMDFcIixcbiAgLy8gz40gPSBcXCd7z4V9XG4gIFwiXFx1MUY3QVwiOiBcIlxcdTAzQzVcXHUwMzAwXCIsXG4gIC8vIOG9uiA9IFxcYHvPhX1cbiAgXCJcXHUwM0NCXCI6IFwiXFx1MDNDNVxcdTAzMDhcIixcbiAgLy8gz4sgPSBcXFwie8+FfVxuICBcIlxcdTAzQjBcIjogXCJcXHUwM0M1XFx1MDMwOFxcdTAzMDFcIixcbiAgLy8gzrAgPSBcXFwiXFwne8+FfVxuICBcIlxcdTFGRTJcIjogXCJcXHUwM0M1XFx1MDMwOFxcdTAzMDBcIixcbiAgLy8g4b+iID0gXFxcIlxcYHvPhX1cbiAgXCJcXHUxRkUxXCI6IFwiXFx1MDNDNVxcdTAzMDRcIixcbiAgLy8g4b+hID0gXFw9e8+FfVxuICBcIlxcdTFGRTBcIjogXCJcXHUwM0M1XFx1MDMwNlwiLFxuICAvLyDhv6AgPSBcXHV7z4V9XG4gIFwiXFx1MDNDRVwiOiBcIlxcdTAzQzlcXHUwMzAxXCIsXG4gIC8vIM+OID0gXFwne8+JfVxuICBcIlxcdTFGN0NcIjogXCJcXHUwM0M5XFx1MDMwMFwiLFxuICAvLyDhvbwgPSBcXGB7z4l9XG4gIFwiXFx1MDM4RVwiOiBcIlxcdTAzQTVcXHUwMzAxXCIsXG4gIC8vIM6OID0gXFwne86lfVxuICBcIlxcdTFGRUFcIjogXCJcXHUwM0E1XFx1MDMwMFwiLFxuICAvLyDhv6ogPSBcXGB7zqV9XG4gIFwiXFx1MDNBQlwiOiBcIlxcdTAzQTVcXHUwMzA4XCIsXG4gIC8vIM6rID0gXFxcInvOpX1cbiAgXCJcXHUxRkU5XCI6IFwiXFx1MDNBNVxcdTAzMDRcIixcbiAgLy8g4b+pID0gXFw9e86lfVxuICBcIlxcdTFGRThcIjogXCJcXHUwM0E1XFx1MDMwNlwiLFxuICAvLyDhv6ggPSBcXHV7zqV9XG4gIFwiXFx1MDM4RlwiOiBcIlxcdTAzQTlcXHUwMzAxXCIsXG4gIC8vIM6PID0gXFwne86pfVxuICBcIlxcdTFGRkFcIjogXCJcXHUwM0E5XFx1MDMwMFwiIC8vIOG/uiA9IFxcYHvOqX1cblxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9QYXJzZXIuanNcbi8qIGVzbGludCBuby1jb25zdGFudC1jb25kaXRpb246MCAqL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBwYXJzZXIgdXNlZCB0byBwYXJzZSBvdXQgYSBUZVggZXhwcmVzc2lvbiBmcm9tIHRoZVxuICogaW5wdXQuIFNpbmNlIFRlWCBpc24ndCBjb250ZXh0LWZyZWUsIHN0YW5kYXJkIHBhcnNlcnMgZG9uJ3Qgd29yayBwYXJ0aWN1bGFybHlcbiAqIHdlbGwuXG4gKlxuICogVGhlIHN0cmF0ZWd5IG9mIHRoaXMgcGFyc2VyIGlzIGFzIHN1Y2g6XG4gKlxuICogVGhlIG1haW4gZnVuY3Rpb25zICh0aGUgYC5wYXJzZS4uLmAgb25lcykgdGFrZSBhIHBvc2l0aW9uIGluIHRoZSBjdXJyZW50XG4gKiBwYXJzZSBzdHJpbmcgdG8gcGFyc2UgdG9rZW5zIGZyb20uIFRoZSBsZXhlciAoZm91bmQgaW4gTGV4ZXIuanMsIHN0b3JlZCBhdFxuICogdGhpcy5ndWxsZXQubGV4ZXIpIGFsc28gc3VwcG9ydHMgcHVsbGluZyBvdXQgdG9rZW5zIGF0IGFyYml0cmFyeSBwbGFjZXMuIFdoZW5cbiAqIGluZGl2aWR1YWwgdG9rZW5zIGFyZSBuZWVkZWQgYXQgYSBwb3NpdGlvbiwgdGhlIGxleGVyIGlzIGNhbGxlZCB0byBwdWxsIG91dCBhXG4gKiB0b2tlbiwgd2hpY2ggaXMgdGhlbiB1c2VkLlxuICpcbiAqIFRoZSBwYXJzZXIgaGFzIGEgcHJvcGVydHkgY2FsbGVkIFwibW9kZVwiIGluZGljYXRpbmcgdGhlIG1vZGUgdGhhdFxuICogdGhlIHBhcnNlciBpcyBjdXJyZW50bHkgaW4uIEN1cnJlbnRseSBpdCBoYXMgdG8gYmUgb25lIG9mIFwibWF0aFwiIG9yXG4gKiBcInRleHRcIiwgd2hpY2ggZGVub3RlcyB3aGV0aGVyIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIGEgbWF0aC15XG4gKiBvbmUgb3IgYSB0ZXh0LXkgb25lIChlLmcuIGluc2lkZSBcXHRleHQpLiBDdXJyZW50bHksIHRoaXMgc2VydmVzIHRvXG4gKiBsaW1pdCB0aGUgZnVuY3Rpb25zIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRleHQgbW9kZS5cbiAqXG4gKiBUaGUgbWFpbiBmdW5jdGlvbnMgdGhlbiByZXR1cm4gYW4gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIHRoZSB1c2VmdWwgZGF0YSB0aGF0XG4gKiB3YXMgcGFyc2VkIGF0IGl0cyBnaXZlbiBwb2ludCwgYW5kIGEgbmV3IHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YgdGhlIHBhcnNlZFxuICogZGF0YS4gVGhlIG1haW4gZnVuY3Rpb25zIGNhbiBjYWxsIGVhY2ggb3RoZXIgYW5kIGNvbnRpbnVlIHRoZSBwYXJzaW5nIGJ5XG4gKiB1c2luZyB0aGUgcmV0dXJuZWQgcG9zaXRpb24gYXMgYSBuZXcgc3RhcnRpbmcgcG9pbnQuXG4gKlxuICogVGhlcmUgYXJlIGFsc28gZXh0cmEgYC5oYW5kbGUuLi5gIGZ1bmN0aW9ucywgd2hpY2ggcHVsbCBvdXQgc29tZSByZXVzZWRcbiAqIGZ1bmN0aW9uYWxpdHkgaW50byBzZWxmLWNvbnRhaW5lZCBmdW5jdGlvbnMuXG4gKlxuICogVGhlIGZ1bmN0aW9ucyByZXR1cm4gUGFyc2VOb2Rlcy5cbiAqL1xudmFyIFBhcnNlcl9QYXJzZXIgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQYXJzZXIoaW5wdXQsIHNldHRpbmdzKSB7XG4gICAgdGhpcy5tb2RlID0gdm9pZCAwO1xuICAgIHRoaXMuZ3VsbGV0ID0gdm9pZCAwO1xuICAgIHRoaXMuc2V0dGluZ3MgPSB2b2lkIDA7XG4gICAgdGhpcy5sZWZ0cmlnaHREZXB0aCA9IHZvaWQgMDtcbiAgICB0aGlzLm5leHRUb2tlbiA9IHZvaWQgMDtcbiAgICAvLyBTdGFydCBpbiBtYXRoIG1vZGVcbiAgICB0aGlzLm1vZGUgPSBcIm1hdGhcIjsgLy8gQ3JlYXRlIGEgbmV3IG1hY3JvIGV4cGFuZGVyIChndWxsZXQpIGFuZCAoaW5kaXJlY3RseSB2aWEgdGhhdCkgYWxzbyBhXG4gICAgLy8gbmV3IGxleGVyIChtb3V0aCkgZm9yIHRoaXMgcGFyc2VyIChzdG9tYWNoLCBpbiB0aGUgbGFuZ3VhZ2Ugb2YgVGVYKVxuXG4gICAgdGhpcy5ndWxsZXQgPSBuZXcgTWFjcm9FeHBhbmRlcl9NYWNyb0V4cGFuZGVyKGlucHV0LCBzZXR0aW5ncywgdGhpcy5tb2RlKTsgLy8gU3RvcmUgdGhlIHNldHRpbmdzIGZvciB1c2UgaW4gcGFyc2luZ1xuXG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzOyAvLyBDb3VudCBsZWZ0cmlnaHQgZGVwdGggKGZvciBcXG1pZGRsZSBlcnJvcnMpXG5cbiAgICB0aGlzLmxlZnRyaWdodERlcHRoID0gMDtcbiAgfVxuICAvKipcbiAgICogQ2hlY2tzIGEgcmVzdWx0IHRvIG1ha2Ugc3VyZSBpdCBoYXMgdGhlIHJpZ2h0IHR5cGUsIGFuZCB0aHJvd3MgYW5cbiAgICogYXBwcm9wcmlhdGUgZXJyb3Igb3RoZXJ3aXNlLlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBQYXJzZXIucHJvdG90eXBlO1xuXG4gIF9wcm90by5leHBlY3QgPSBmdW5jdGlvbiBleHBlY3QodGV4dCwgY29uc3VtZSkge1xuICAgIGlmIChjb25zdW1lID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnN1bWUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZldGNoKCkudGV4dCAhPT0gdGV4dCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRXhwZWN0ZWQgJ1wiICsgdGV4dCArIFwiJywgZ290ICdcIiArIHRoaXMuZmV0Y2goKS50ZXh0ICsgXCInXCIsIHRoaXMuZmV0Y2goKSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnN1bWUpIHtcbiAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogRGlzY2FyZHMgdGhlIGN1cnJlbnQgbG9va2FoZWFkIHRva2VuLCBjb25zaWRlcmluZyBpdCBjb25zdW1lZC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZSA9IGZ1bmN0aW9uIGNvbnN1bWUoKSB7XG4gICAgdGhpcy5uZXh0VG9rZW4gPSBudWxsO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgbG9va2FoZWFkIHRva2VuLCBvciBpZiB0aGVyZSBpc24ndCBvbmUgKGF0IHRoZVxuICAgKiBiZWdpbm5pbmcsIG9yIGlmIHRoZSBwcmV2aW91cyBsb29rYWhlYWQgdG9rZW4gd2FzIGNvbnN1bWUoKWQpLFxuICAgKiBmZXRjaCB0aGUgbmV4dCB0b2tlbiBhcyB0aGUgbmV3IGxvb2thaGVhZCB0b2tlbiBhbmQgcmV0dXJuIGl0LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mZXRjaCA9IGZ1bmN0aW9uIGZldGNoKCkge1xuICAgIGlmICh0aGlzLm5leHRUb2tlbiA9PSBudWxsKSB7XG4gICAgICB0aGlzLm5leHRUb2tlbiA9IHRoaXMuZ3VsbGV0LmV4cGFuZE5leHRUb2tlbigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5leHRUb2tlbjtcbiAgfVxuICAvKipcbiAgICogU3dpdGNoZXMgYmV0d2VlbiBcInRleHRcIiBhbmQgXCJtYXRoXCIgbW9kZXMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnN3aXRjaE1vZGUgPSBmdW5jdGlvbiBzd2l0Y2hNb2RlKG5ld01vZGUpIHtcbiAgICB0aGlzLm1vZGUgPSBuZXdNb2RlO1xuICAgIHRoaXMuZ3VsbGV0LnN3aXRjaE1vZGUobmV3TW9kZSk7XG4gIH1cbiAgLyoqXG4gICAqIE1haW4gcGFyc2luZyBmdW5jdGlvbiwgd2hpY2ggcGFyc2VzIGFuIGVudGlyZSBpbnB1dC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2UgPSBmdW5jdGlvbiBwYXJzZSgpIHtcbiAgICAvLyBDcmVhdGUgYSBncm91cCBuYW1lc3BhY2UgZm9yIHRoZSBtYXRoIGV4cHJlc3Npb24uXG4gICAgLy8gKExhVGVYIGNyZWF0ZXMgYSBuZXcgZ3JvdXAgZm9yIGV2ZXJ5ICQuLi4kLCAkJC4uLiQkLCBcXFsuLi5cXF0uKVxuICAgIHRoaXMuZ3VsbGV0LmJlZ2luR3JvdXAoKTsgLy8gVXNlIG9sZCBcXGNvbG9yIGJlaGF2aW9yIChzYW1lIGFzIExhVGVYJ3MgXFx0ZXh0Y29sb3IpIGlmIHJlcXVlc3RlZC5cbiAgICAvLyBXZSBkbyB0aGlzIHdpdGhpbiB0aGUgZ3JvdXAgZm9yIHRoZSBtYXRoIGV4cHJlc3Npb24sIHNvIGl0IGRvZXNuJ3RcbiAgICAvLyBwb2xsdXRlIHNldHRpbmdzLm1hY3Jvcy5cblxuICAgIGlmICh0aGlzLnNldHRpbmdzLmNvbG9ySXNUZXh0Q29sb3IpIHtcbiAgICAgIHRoaXMuZ3VsbGV0Lm1hY3Jvcy5zZXQoXCJcXFxcY29sb3JcIiwgXCJcXFxcdGV4dGNvbG9yXCIpO1xuICAgIH0gLy8gVHJ5IHRvIHBhcnNlIHRoZSBpbnB1dFxuXG5cbiAgICB2YXIgcGFyc2UgPSB0aGlzLnBhcnNlRXhwcmVzc2lvbihmYWxzZSk7IC8vIElmIHdlIHN1Y2NlZWRlZCwgbWFrZSBzdXJlIHRoZXJlJ3MgYW4gRU9GIGF0IHRoZSBlbmRcblxuICAgIHRoaXMuZXhwZWN0KFwiRU9GXCIpOyAvLyBFbmQgdGhlIGdyb3VwIG5hbWVzcGFjZSBmb3IgdGhlIGV4cHJlc3Npb25cblxuICAgIHRoaXMuZ3VsbGV0LmVuZEdyb3VwKCk7XG4gICAgcmV0dXJuIHBhcnNlO1xuICB9O1xuXG4gIF9wcm90by5wYXJzZUV4cHJlc3Npb24gPSBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oYnJlYWtPbkluZml4LCBicmVha09uVG9rZW5UZXh0KSB7XG4gICAgdmFyIGJvZHkgPSBbXTsgLy8gS2VlcCBhZGRpbmcgYXRvbXMgdG8gdGhlIGJvZHkgdW50aWwgd2UgY2FuJ3QgcGFyc2UgYW55IG1vcmUgYXRvbXMgKGVpdGhlclxuICAgIC8vIHdlIHJlYWNoZWQgdGhlIGVuZCwgYSB9LCBvciBhIFxccmlnaHQpXG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgLy8gSWdub3JlIHNwYWNlcyBpbiBtYXRoIG1vZGVcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09IFwibWF0aFwiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGV4ID0gdGhpcy5mZXRjaCgpO1xuXG4gICAgICBpZiAoUGFyc2VyLmVuZE9mRXhwcmVzc2lvbi5pbmRleE9mKGxleC50ZXh0KSAhPT0gLTEpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChicmVha09uVG9rZW5UZXh0ICYmIGxleC50ZXh0ID09PSBicmVha09uVG9rZW5UZXh0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoYnJlYWtPbkluZml4ICYmIHNyY19mdW5jdGlvbnNbbGV4LnRleHRdICYmIHNyY19mdW5jdGlvbnNbbGV4LnRleHRdLmluZml4KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgYXRvbSA9IHRoaXMucGFyc2VBdG9tKGJyZWFrT25Ub2tlblRleHQpO1xuXG4gICAgICBpZiAoIWF0b20pIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGJvZHkucHVzaChhdG9tKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSBcInRleHRcIikge1xuICAgICAgdGhpcy5mb3JtTGlnYXR1cmVzKGJvZHkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmhhbmRsZUluZml4Tm9kZXMoYm9keSk7XG4gIH1cbiAgLyoqXG4gICAqIFJld3JpdGVzIGluZml4IG9wZXJhdG9ycyBzdWNoIGFzIFxcb3ZlciB3aXRoIGNvcnJlc3BvbmRpbmcgY29tbWFuZHMgc3VjaFxuICAgKiBhcyBcXGZyYWMuXG4gICAqXG4gICAqIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBpbmZpeCBvcGVyYXRvciBwZXIgZ3JvdXAuICBJZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmVcbiAgICogdGhlbiB0aGUgZXhwcmVzc2lvbiBpcyBhbWJpZ3VvdXMuICBUaGlzIGNhbiBiZSByZXNvbHZlZCBieSBhZGRpbmcge30uXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhbmRsZUluZml4Tm9kZXMgPSBmdW5jdGlvbiBoYW5kbGVJbmZpeE5vZGVzKGJvZHkpIHtcbiAgICB2YXIgb3ZlckluZGV4ID0gLTE7XG4gICAgdmFyIGZ1bmNOYW1lO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib2R5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IGNoZWNrTm9kZVR5cGUoYm9keVtpXSwgXCJpbmZpeFwiKTtcblxuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgaWYgKG92ZXJJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJvbmx5IG9uZSBpbmZpeCBvcGVyYXRvciBwZXIgZ3JvdXBcIiwgbm9kZS50b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBvdmVySW5kZXggPSBpO1xuICAgICAgICBmdW5jTmFtZSA9IG5vZGUucmVwbGFjZVdpdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG92ZXJJbmRleCAhPT0gLTEgJiYgZnVuY05hbWUpIHtcbiAgICAgIHZhciBudW1lck5vZGU7XG4gICAgICB2YXIgZGVub21Ob2RlO1xuICAgICAgdmFyIG51bWVyQm9keSA9IGJvZHkuc2xpY2UoMCwgb3ZlckluZGV4KTtcbiAgICAgIHZhciBkZW5vbUJvZHkgPSBib2R5LnNsaWNlKG92ZXJJbmRleCArIDEpO1xuXG4gICAgICBpZiAobnVtZXJCb2R5Lmxlbmd0aCA9PT0gMSAmJiBudW1lckJvZHlbMF0udHlwZSA9PT0gXCJvcmRncm91cFwiKSB7XG4gICAgICAgIG51bWVyTm9kZSA9IG51bWVyQm9keVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG51bWVyTm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIGJvZHk6IG51bWVyQm9keVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVub21Cb2R5Lmxlbmd0aCA9PT0gMSAmJiBkZW5vbUJvZHlbMF0udHlwZSA9PT0gXCJvcmRncm91cFwiKSB7XG4gICAgICAgIGRlbm9tTm9kZSA9IGRlbm9tQm9keVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbm9tTm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIGJvZHk6IGRlbm9tQm9keVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgX25vZGU7XG5cbiAgICAgIGlmIChmdW5jTmFtZSA9PT0gXCJcXFxcXFxcXGFib3ZlZnJhY1wiKSB7XG4gICAgICAgIF9ub2RlID0gdGhpcy5jYWxsRnVuY3Rpb24oZnVuY05hbWUsIFtudW1lck5vZGUsIGJvZHlbb3ZlckluZGV4XSwgZGVub21Ob2RlXSwgW10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX25vZGUgPSB0aGlzLmNhbGxGdW5jdGlvbihmdW5jTmFtZSwgW251bWVyTm9kZSwgZGVub21Ob2RlXSwgW10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW19ub2RlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJvZHk7XG4gICAgfVxuICB9IC8vIFRoZSBncmVlZGluZXNzIG9mIGEgc3VwZXJzY3JpcHQgb3Igc3Vic2NyaXB0XG4gIDtcblxuICAvKipcbiAgICogSGFuZGxlIGEgc3Vic2NyaXB0IG9yIHN1cGVyc2NyaXB0IHdpdGggbmljZSBlcnJvcnMuXG4gICAqL1xuICBfcHJvdG8uaGFuZGxlU3VwU3Vic2NyaXB0ID0gZnVuY3Rpb24gaGFuZGxlU3VwU3Vic2NyaXB0KG5hbWUpIHtcbiAgICB2YXIgc3ltYm9sVG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIHN5bWJvbCA9IHN5bWJvbFRva2VuLnRleHQ7XG4gICAgdGhpcy5jb25zdW1lKCk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5wYXJzZUdyb3VwKG5hbWUsIGZhbHNlLCBQYXJzZXIuU1VQU1VCX0dSRUVESU5FU1MsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTsgLy8gaWdub3JlIHNwYWNlcyBiZWZvcmUgc3VwL3N1YnNjcmlwdCBhcmd1bWVudFxuXG4gICAgaWYgKCFncm91cCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRXhwZWN0ZWQgZ3JvdXAgYWZ0ZXIgJ1wiICsgc3ltYm9sICsgXCInXCIsIHN5bWJvbFRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JvdXA7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSB0ZXh0dWFsIGlucHV0IG9mIGFuIHVuc3VwcG9ydGVkIGNvbW1hbmQgaW50byBhIHRleHQgbm9kZVxuICAgKiBjb250YWluZWQgd2l0aGluIGEgY29sb3Igbm9kZSB3aG9zZSBjb2xvciBpcyBkZXRlcm1pbmVkIGJ5IGVycm9yQ29sb3JcbiAgICovXG4gIDtcblxuICBfcHJvdG8uZm9ybWF0VW5zdXBwb3J0ZWRDbWQgPSBmdW5jdGlvbiBmb3JtYXRVbnN1cHBvcnRlZENtZCh0ZXh0KSB7XG4gICAgdmFyIHRleHRvcmRBcnJheSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB0ZXh0b3JkQXJyYXkucHVzaCh7XG4gICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICBtb2RlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogdGV4dFtpXVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIHRleHROb2RlID0ge1xuICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBib2R5OiB0ZXh0b3JkQXJyYXlcbiAgICB9O1xuICAgIHZhciBjb2xvck5vZGUgPSB7XG4gICAgICB0eXBlOiBcImNvbG9yXCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBjb2xvcjogdGhpcy5zZXR0aW5ncy5lcnJvckNvbG9yLFxuICAgICAgYm9keTogW3RleHROb2RlXVxuICAgIH07XG4gICAgcmV0dXJuIGNvbG9yTm9kZTtcbiAgfVxuICAvKipcbiAgICogUGFyc2VzIGEgZ3JvdXAgd2l0aCBvcHRpb25hbCBzdXBlci9zdWJzY3JpcHRzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUF0b20gPSBmdW5jdGlvbiBwYXJzZUF0b20oYnJlYWtPblRva2VuVGV4dCkge1xuICAgIC8vIFRoZSBib2R5IG9mIGFuIGF0b20gaXMgYW4gaW1wbGljaXQgZ3JvdXAsIHNvIHRoYXQgdGhpbmdzIGxpa2VcbiAgICAvLyBcXGxlZnQoeFxccmlnaHQpXjIgd29yayBjb3JyZWN0bHkuXG4gICAgdmFyIGJhc2UgPSB0aGlzLnBhcnNlR3JvdXAoXCJhdG9tXCIsIGZhbHNlLCBudWxsLCBicmVha09uVG9rZW5UZXh0KTsgLy8gSW4gdGV4dCBtb2RlLCB3ZSBkb24ndCBoYXZlIHN1cGVyc2NyaXB0cyBvciBzdWJzY3JpcHRzXG5cbiAgICBpZiAodGhpcy5tb2RlID09PSBcInRleHRcIikge1xuICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfSAvLyBOb3RlIHRoYXQgYmFzZSBtYXkgYmUgZW1wdHkgKGkuZS4gbnVsbCkgYXQgdGhpcyBwb2ludC5cblxuXG4gICAgdmFyIHN1cGVyc2NyaXB0O1xuICAgIHZhciBzdWJzY3JpcHQ7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgLy8gR3VhcmFudGVlZCBpbiBtYXRoIG1vZGUsIHNvIGVhdCBhbnkgc3BhY2VzIGZpcnN0LlxuICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7IC8vIExleCB0aGUgZmlyc3QgdG9rZW5cblxuICAgICAgdmFyIGxleCA9IHRoaXMuZmV0Y2goKTtcblxuICAgICAgaWYgKGxleC50ZXh0ID09PSBcIlxcXFxsaW1pdHNcIiB8fCBsZXgudGV4dCA9PT0gXCJcXFxcbm9saW1pdHNcIikge1xuICAgICAgICAvLyBXZSBnb3QgYSBsaW1pdCBjb250cm9sXG4gICAgICAgIHZhciBvcE5vZGUgPSBjaGVja05vZGVUeXBlKGJhc2UsIFwib3BcIik7XG5cbiAgICAgICAgaWYgKG9wTm9kZSkge1xuICAgICAgICAgIHZhciBsaW1pdHMgPSBsZXgudGV4dCA9PT0gXCJcXFxcbGltaXRzXCI7XG4gICAgICAgICAgb3BOb2RlLmxpbWl0cyA9IGxpbWl0cztcbiAgICAgICAgICBvcE5vZGUuYWx3YXlzSGFuZGxlU3VwU3ViID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcE5vZGUgPSBjaGVja05vZGVUeXBlKGJhc2UsIFwib3BlcmF0b3JuYW1lXCIpO1xuXG4gICAgICAgICAgaWYgKG9wTm9kZSAmJiBvcE5vZGUuYWx3YXlzSGFuZGxlU3VwU3ViKSB7XG4gICAgICAgICAgICB2YXIgX2xpbWl0cyA9IGxleC50ZXh0ID09PSBcIlxcXFxsaW1pdHNcIjtcblxuICAgICAgICAgICAgb3BOb2RlLmxpbWl0cyA9IF9saW1pdHM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkxpbWl0IGNvbnRyb2xzIG11c3QgZm9sbG93IGEgbWF0aCBvcGVyYXRvclwiLCBsZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfSBlbHNlIGlmIChsZXgudGV4dCA9PT0gXCJeXCIpIHtcbiAgICAgICAgLy8gV2UgZ290IGEgc3VwZXJzY3JpcHQgc3RhcnRcbiAgICAgICAgaWYgKHN1cGVyc2NyaXB0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRG91YmxlIHN1cGVyc2NyaXB0XCIsIGxleCk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlcnNjcmlwdCA9IHRoaXMuaGFuZGxlU3VwU3Vic2NyaXB0KFwic3VwZXJzY3JpcHRcIik7XG4gICAgICB9IGVsc2UgaWYgKGxleC50ZXh0ID09PSBcIl9cIikge1xuICAgICAgICAvLyBXZSBnb3QgYSBzdWJzY3JpcHQgc3RhcnRcbiAgICAgICAgaWYgKHN1YnNjcmlwdCkge1xuICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkRvdWJsZSBzdWJzY3JpcHRcIiwgbGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnNjcmlwdCA9IHRoaXMuaGFuZGxlU3VwU3Vic2NyaXB0KFwic3Vic2NyaXB0XCIpO1xuICAgICAgfSBlbHNlIGlmIChsZXgudGV4dCA9PT0gXCInXCIpIHtcbiAgICAgICAgLy8gV2UgZ290IGEgcHJpbWVcbiAgICAgICAgaWYgKHN1cGVyc2NyaXB0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRG91YmxlIHN1cGVyc2NyaXB0XCIsIGxleCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcHJpbWUgPSB7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIHRleHQ6IFwiXFxcXHByaW1lXCJcbiAgICAgICAgfTsgLy8gTWFueSBwcmltZXMgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIsIHNvIHdlIGhhbmRsZSB0aGlzIGhlcmVcblxuICAgICAgICB2YXIgcHJpbWVzID0gW3ByaW1lXTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7IC8vIEtlZXAgbGV4aW5nIHRva2VucyB1bnRpbCB3ZSBnZXQgc29tZXRoaW5nIHRoYXQncyBub3QgYSBwcmltZVxuXG4gICAgICAgIHdoaWxlICh0aGlzLmZldGNoKCkudGV4dCA9PT0gXCInXCIpIHtcbiAgICAgICAgICAvLyBGb3IgZWFjaCBvbmUsIGFkZCBhbm90aGVyIHByaW1lIHRvIHRoZSBsaXN0XG4gICAgICAgICAgcHJpbWVzLnB1c2gocHJpbWUpO1xuICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB9IC8vIElmIHRoZXJlJ3MgYSBzdXBlcnNjcmlwdCBmb2xsb3dpbmcgdGhlIHByaW1lcywgY29tYmluZSB0aGF0XG4gICAgICAgIC8vIHN1cGVyc2NyaXB0IGluIHdpdGggdGhlIHByaW1lcy5cblxuXG4gICAgICAgIGlmICh0aGlzLmZldGNoKCkudGV4dCA9PT0gXCJeXCIpIHtcbiAgICAgICAgICBwcmltZXMucHVzaCh0aGlzLmhhbmRsZVN1cFN1YnNjcmlwdChcInN1cGVyc2NyaXB0XCIpKTtcbiAgICAgICAgfSAvLyBQdXQgZXZlcnl0aGluZyBpbnRvIGFuIG9yZGdyb3VwIGFzIHRoZSBzdXBlcnNjcmlwdFxuXG5cbiAgICAgICAgc3VwZXJzY3JpcHQgPSB7XG4gICAgICAgICAgdHlwZTogXCJvcmRncm91cFwiLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBib2R5OiBwcmltZXNcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIGl0IHdhc24ndCBeLCBfLCBvciAnLCBzdG9wIHBhcnNpbmcgc3VwZXIvc3Vic2NyaXB0c1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IC8vIEJhc2UgbXVzdCBiZSBzZXQgaWYgc3VwZXJzY3JpcHQgb3Igc3Vic2NyaXB0IGFyZSBzZXQgcGVyIGxvZ2ljIGFib3ZlLFxuICAgIC8vIGJ1dCBuZWVkIHRvIGNoZWNrIGhlcmUgZm9yIHR5cGUgY2hlY2sgdG8gcGFzcy5cblxuXG4gICAgaWYgKHN1cGVyc2NyaXB0IHx8IHN1YnNjcmlwdCkge1xuICAgICAgLy8gSWYgd2UgZ290IGVpdGhlciBhIHN1cGVyc2NyaXB0IG9yIHN1YnNjcmlwdCwgY3JlYXRlIGEgc3Vwc3ViXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInN1cHN1YlwiLFxuICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgIGJhc2U6IGJhc2UsXG4gICAgICAgIHN1cDogc3VwZXJzY3JpcHQsXG4gICAgICAgIHN1Yjogc3Vic2NyaXB0XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UgcmV0dXJuIHRoZSBvcmlnaW5hbCBib2R5XG4gICAgICByZXR1cm4gYmFzZTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBlbnRpcmUgZnVuY3Rpb24sIGluY2x1ZGluZyBpdHMgYmFzZSBhbmQgYWxsIG9mIGl0cyBhcmd1bWVudHMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlRnVuY3Rpb24gPSBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uKGJyZWFrT25Ub2tlblRleHQsIG5hbWUsIC8vIEZvciBlcnJvciByZXBvcnRpbmcuXG4gIGdyZWVkaW5lc3MpIHtcbiAgICB2YXIgdG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIGZ1bmMgPSB0b2tlbi50ZXh0O1xuICAgIHZhciBmdW5jRGF0YSA9IHNyY19mdW5jdGlvbnNbZnVuY107XG5cbiAgICBpZiAoIWZ1bmNEYXRhKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnN1bWUoKTsgLy8gY29uc3VtZSBjb21tYW5kIHRva2VuXG5cbiAgICBpZiAoZ3JlZWRpbmVzcyAhPSBudWxsICYmIGZ1bmNEYXRhLmdyZWVkaW5lc3MgPD0gZ3JlZWRpbmVzcykge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiR290IGZ1bmN0aW9uICdcIiArIGZ1bmMgKyBcIicgd2l0aCBubyBhcmd1bWVudHNcIiArIChuYW1lID8gXCIgYXMgXCIgKyBuYW1lIDogXCJcIiksIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gXCJ0ZXh0XCIgJiYgIWZ1bmNEYXRhLmFsbG93ZWRJblRleHQpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkNhbid0IHVzZSBmdW5jdGlvbiAnXCIgKyBmdW5jICsgXCInIGluIHRleHQgbW9kZVwiLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09IFwibWF0aFwiICYmIGZ1bmNEYXRhLmFsbG93ZWRJbk1hdGggPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJDYW4ndCB1c2UgZnVuY3Rpb24gJ1wiICsgZnVuYyArIFwiJyBpbiBtYXRoIG1vZGVcIiwgdG9rZW4pO1xuICAgIH1cblxuICAgIHZhciBfdGhpcyRwYXJzZUFyZ3VtZW50cyA9IHRoaXMucGFyc2VBcmd1bWVudHMoZnVuYywgZnVuY0RhdGEpLFxuICAgICAgICBhcmdzID0gX3RoaXMkcGFyc2VBcmd1bWVudHMuYXJncyxcbiAgICAgICAgb3B0QXJncyA9IF90aGlzJHBhcnNlQXJndW1lbnRzLm9wdEFyZ3M7XG5cbiAgICByZXR1cm4gdGhpcy5jYWxsRnVuY3Rpb24oZnVuYywgYXJncywgb3B0QXJncywgdG9rZW4sIGJyZWFrT25Ub2tlblRleHQpO1xuICB9XG4gIC8qKlxuICAgKiBDYWxsIGEgZnVuY3Rpb24gaGFuZGxlciB3aXRoIGEgc3VpdGFibGUgY29udGV4dCBhbmQgYXJndW1lbnRzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5jYWxsRnVuY3Rpb24gPSBmdW5jdGlvbiBjYWxsRnVuY3Rpb24obmFtZSwgYXJncywgb3B0QXJncywgdG9rZW4sIGJyZWFrT25Ub2tlblRleHQpIHtcbiAgICB2YXIgY29udGV4dCA9IHtcbiAgICAgIGZ1bmNOYW1lOiBuYW1lLFxuICAgICAgcGFyc2VyOiB0aGlzLFxuICAgICAgdG9rZW46IHRva2VuLFxuICAgICAgYnJlYWtPblRva2VuVGV4dDogYnJlYWtPblRva2VuVGV4dFxuICAgIH07XG4gICAgdmFyIGZ1bmMgPSBzcmNfZnVuY3Rpb25zW25hbWVdO1xuXG4gICAgaWYgKGZ1bmMgJiYgZnVuYy5oYW5kbGVyKSB7XG4gICAgICByZXR1cm4gZnVuYy5oYW5kbGVyKGNvbnRleHQsIGFyZ3MsIG9wdEFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJObyBmdW5jdGlvbiBoYW5kbGVyIGZvciBcIiArIG5hbWUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogUGFyc2VzIHRoZSBhcmd1bWVudHMgb2YgYSBmdW5jdGlvbiBvciBlbnZpcm9ubWVudFxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUFyZ3VtZW50cyA9IGZ1bmN0aW9uIHBhcnNlQXJndW1lbnRzKGZ1bmMsIC8vIFNob3VsZCBsb29rIGxpa2UgXCJcXG5hbWVcIiBvciBcIlxcYmVnaW57bmFtZX1cIi5cbiAgZnVuY0RhdGEpIHtcbiAgICB2YXIgdG90YWxBcmdzID0gZnVuY0RhdGEubnVtQXJncyArIGZ1bmNEYXRhLm51bU9wdGlvbmFsQXJncztcblxuICAgIGlmICh0b3RhbEFyZ3MgPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFyZ3M6IFtdLFxuICAgICAgICBvcHRBcmdzOiBbXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgYmFzZUdyZWVkaW5lc3MgPSBmdW5jRGF0YS5ncmVlZGluZXNzO1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIG9wdEFyZ3MgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG90YWxBcmdzOyBpKyspIHtcbiAgICAgIHZhciBhcmdUeXBlID0gZnVuY0RhdGEuYXJnVHlwZXMgJiYgZnVuY0RhdGEuYXJnVHlwZXNbaV07XG4gICAgICB2YXIgaXNPcHRpb25hbCA9IGkgPCBmdW5jRGF0YS5udW1PcHRpb25hbEFyZ3M7IC8vIElnbm9yZSBzcGFjZXMgYmV0d2VlbiBhcmd1bWVudHMuICBBcyB0aGUgVGVYYm9vayBzYXlzOlxuICAgICAgLy8gXCJBZnRlciB5b3UgaGF2ZSBzYWlkIOKAmFxcZGVmXFxyb3cjMSMyey4uLn3igJksIHlvdSBhcmUgYWxsb3dlZCB0b1xuICAgICAgLy8gIHB1dCBzcGFjZXMgYmV0d2VlbiB0aGUgYXJndW1lbnRzIChlLmcuLCDigJhcXHJvdyB4IG7igJkpLCBiZWNhdXNlXG4gICAgICAvLyAgVGVYIGRvZXNu4oCZdCB1c2Ugc2luZ2xlIHNwYWNlcyBhcyB1bmRlbGltaXRlZCBhcmd1bWVudHMuXCJcblxuICAgICAgdmFyIGNvbnN1bWVTcGFjZXMgPSBpID4gMCAmJiAhaXNPcHRpb25hbCB8fCAvLyBBbHNvIGNvbnN1bWUgbGVhZGluZyBzcGFjZXMgaW4gbWF0aCBtb2RlLCBhcyBwYXJzZVN5bWJvbFxuICAgICAgLy8gd29uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggdGhlbS4gIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGhcbiAgICAgIC8vIG1hY3JvcywgZS5nLiBcXGZyYWNcXGZvb1xcZm9vIHdoZXJlIFxcZm9vIGV4cGFuZHMgdG8gYSBzcGFjZSBzeW1ib2wuXG4gICAgICAvLyBJbiBMYVRlWCwgdGhlIFxcZm9vJ3MgZ2V0IHRyZWF0ZWQgYXMgKGJsYW5rKSBhcmd1bWVudHMuXG4gICAgICAvLyBJbiBLYVRlWCwgZm9yIG5vdywgYm90aCBzcGFjZXMgd2lsbCBnZXQgY29uc3VtZWQuXG4gICAgICAvLyBUT0RPKGVkZW1haW5lKVxuICAgICAgaSA9PT0gMCAmJiAhaXNPcHRpb25hbCAmJiB0aGlzLm1vZGUgPT09IFwibWF0aFwiO1xuICAgICAgdmFyIGFyZyA9IHRoaXMucGFyc2VHcm91cE9mVHlwZShcImFyZ3VtZW50IHRvICdcIiArIGZ1bmMgKyBcIidcIiwgYXJnVHlwZSwgaXNPcHRpb25hbCwgYmFzZUdyZWVkaW5lc3MsIGNvbnN1bWVTcGFjZXMpO1xuXG4gICAgICBpZiAoIWFyZykge1xuICAgICAgICBpZiAoaXNPcHRpb25hbCkge1xuICAgICAgICAgIG9wdEFyZ3MucHVzaChudWxsKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkV4cGVjdGVkIGdyb3VwIGFmdGVyICdcIiArIGZ1bmMgKyBcIidcIiwgdGhpcy5mZXRjaCgpKTtcbiAgICAgIH1cblxuICAgICAgKGlzT3B0aW9uYWwgPyBvcHRBcmdzIDogYXJncykucHVzaChhcmcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhcmdzOiBhcmdzLFxuICAgICAgb3B0QXJnczogb3B0QXJnc1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhIGdyb3VwIHdoZW4gdGhlIG1vZGUgaXMgY2hhbmdpbmcuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlR3JvdXBPZlR5cGUgPSBmdW5jdGlvbiBwYXJzZUdyb3VwT2ZUeXBlKG5hbWUsIHR5cGUsIG9wdGlvbmFsLCBncmVlZGluZXNzLCBjb25zdW1lU3BhY2VzKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiY29sb3JcIjpcbiAgICAgICAgaWYgKGNvbnN1bWVTcGFjZXMpIHtcbiAgICAgICAgICB0aGlzLmNvbnN1bWVTcGFjZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlQ29sb3JHcm91cChvcHRpb25hbCk7XG5cbiAgICAgIGNhc2UgXCJzaXplXCI6XG4gICAgICAgIGlmIChjb25zdW1lU3BhY2VzKSB7XG4gICAgICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVNpemVHcm91cChvcHRpb25hbCk7XG5cbiAgICAgIGNhc2UgXCJ1cmxcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VVcmxHcm91cChvcHRpb25hbCwgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgIGNhc2UgXCJtYXRoXCI6XG4gICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUdyb3VwKG5hbWUsIG9wdGlvbmFsLCBncmVlZGluZXNzLCB1bmRlZmluZWQsIHR5cGUsIGNvbnN1bWVTcGFjZXMpO1xuXG4gICAgICBjYXNlIFwiaGJveFwiOlxuICAgICAgICB7XG4gICAgICAgICAgLy8gaGJveCBhcmd1bWVudCB0eXBlIHdyYXBzIHRoZSBhcmd1bWVudCBpbiB0aGUgZXF1aXZhbGVudCBvZlxuICAgICAgICAgIC8vIFxcaGJveCwgd2hpY2ggaXMgbGlrZSBcXHRleHQgYnV0IHN3aXRjaGluZyB0byBcXHRleHRzdHlsZSBzaXplLlxuICAgICAgICAgIHZhciBncm91cCA9IHRoaXMucGFyc2VHcm91cChuYW1lLCBvcHRpb25hbCwgZ3JlZWRpbmVzcywgdW5kZWZpbmVkLCBcInRleHRcIiwgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgICAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHN0eWxlZEdyb3VwID0ge1xuICAgICAgICAgICAgdHlwZTogXCJzdHlsaW5nXCIsXG4gICAgICAgICAgICBtb2RlOiBncm91cC5tb2RlLFxuICAgICAgICAgICAgYm9keTogW2dyb3VwXSxcbiAgICAgICAgICAgIHN0eWxlOiBcInRleHRcIiAvLyBzaW11bGF0ZSBcXHRleHRzdHlsZVxuXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gc3R5bGVkR3JvdXA7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBcInJhd1wiOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKGNvbnN1bWVTcGFjZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvcHRpb25hbCAmJiB0aGlzLmZldGNoKCkudGV4dCA9PT0gXCJ7XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB0b2tlbiA9IHRoaXMucGFyc2VTdHJpbmdHcm91cChcInJhd1wiLCBvcHRpb25hbCwgdHJ1ZSk7XG5cbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwicmF3XCIsXG4gICAgICAgICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICBzdHJpbmc6IHRva2VuLnRleHRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkV4cGVjdGVkIHJhdyBncm91cFwiLCB0aGlzLmZldGNoKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFwib3JpZ2luYWxcIjpcbiAgICAgIGNhc2UgbnVsbDpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUdyb3VwKG5hbWUsIG9wdGlvbmFsLCBncmVlZGluZXNzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVua25vd24gZ3JvdXAgdHlwZSBhcyBcIiArIG5hbWUsIHRoaXMuZmV0Y2goKSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBEaXNjYXJkIGFueSBzcGFjZSB0b2tlbnMsIGZldGNoaW5nIHRoZSBuZXh0IG5vbi1zcGFjZSB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZVNwYWNlcyA9IGZ1bmN0aW9uIGNvbnN1bWVTcGFjZXMoKSB7XG4gICAgd2hpbGUgKHRoaXMuZmV0Y2goKS50ZXh0ID09PSBcIiBcIikge1xuICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBQYXJzZXMgYSBncm91cCwgZXNzZW50aWFsbHkgcmV0dXJuaW5nIHRoZSBzdHJpbmcgZm9ybWVkIGJ5IHRoZVxuICAgKiBicmFjZS1lbmNsb3NlZCB0b2tlbnMgcGx1cyBzb21lIHBvc2l0aW9uIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVN0cmluZ0dyb3VwID0gZnVuY3Rpb24gcGFyc2VTdHJpbmdHcm91cChtb2RlTmFtZSwgLy8gVXNlZCB0byBkZXNjcmliZSB0aGUgbW9kZSBpbiBlcnJvciBtZXNzYWdlcy5cbiAgb3B0aW9uYWwsIHJhdykge1xuICAgIHZhciBncm91cEJlZ2luID0gb3B0aW9uYWwgPyBcIltcIiA6IFwie1wiO1xuICAgIHZhciBncm91cEVuZCA9IG9wdGlvbmFsID8gXCJdXCIgOiBcIn1cIjtcbiAgICB2YXIgYmVnaW5Ub2tlbiA9IHRoaXMuZmV0Y2goKTtcblxuICAgIGlmIChiZWdpblRva2VuLnRleHQgIT09IGdyb3VwQmVnaW4pIHtcbiAgICAgIGlmIChvcHRpb25hbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAocmF3ICYmIGJlZ2luVG9rZW4udGV4dCAhPT0gXCJFT0ZcIiAmJiAvW157fVtcXF1dLy50ZXN0KGJlZ2luVG9rZW4udGV4dCkpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHJldHVybiBiZWdpblRva2VuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBvdXRlck1vZGUgPSB0aGlzLm1vZGU7XG4gICAgdGhpcy5tb2RlID0gXCJ0ZXh0XCI7XG4gICAgdGhpcy5leHBlY3QoZ3JvdXBCZWdpbik7XG4gICAgdmFyIHN0ciA9IFwiXCI7XG4gICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIG5lc3RlZCA9IDA7IC8vIGFsbG93IG5lc3RlZCBicmFjZXMgaW4gcmF3IHN0cmluZyBncm91cFxuXG4gICAgdmFyIGxhc3RUb2tlbiA9IGZpcnN0VG9rZW47XG4gICAgdmFyIG5leHRUb2tlbjtcblxuICAgIHdoaWxlICgobmV4dFRva2VuID0gdGhpcy5mZXRjaCgpKS50ZXh0ICE9PSBncm91cEVuZCB8fCByYXcgJiYgbmVzdGVkID4gMCkge1xuICAgICAgc3dpdGNoIChuZXh0VG9rZW4udGV4dCkge1xuICAgICAgICBjYXNlIFwiRU9GXCI6XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgaW4gXCIgKyBtb2RlTmFtZSwgZmlyc3RUb2tlbi5yYW5nZShsYXN0VG9rZW4sIHN0cikpO1xuXG4gICAgICAgIGNhc2UgZ3JvdXBCZWdpbjpcbiAgICAgICAgICBuZXN0ZWQrKztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIGdyb3VwRW5kOlxuICAgICAgICAgIG5lc3RlZC0tO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBsYXN0VG9rZW4gPSBuZXh0VG9rZW47XG4gICAgICBzdHIgKz0gbGFzdFRva2VuLnRleHQ7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmV4cGVjdChncm91cEVuZCk7XG4gICAgdGhpcy5tb2RlID0gb3V0ZXJNb2RlO1xuICAgIHJldHVybiBmaXJzdFRva2VuLnJhbmdlKGxhc3RUb2tlbiwgc3RyKTtcbiAgfVxuICAvKipcbiAgICogUGFyc2VzIGEgcmVnZXgtZGVsaW1pdGVkIGdyb3VwOiB0aGUgbGFyZ2VzdCBzZXF1ZW5jZSBvZiB0b2tlbnNcbiAgICogd2hvc2UgY29uY2F0ZW5hdGVkIHN0cmluZ3MgbWF0Y2ggYHJlZ2V4YC4gUmV0dXJucyB0aGUgc3RyaW5nXG4gICAqIGZvcm1lZCBieSB0aGUgdG9rZW5zIHBsdXMgc29tZSBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VSZWdleEdyb3VwID0gZnVuY3Rpb24gcGFyc2VSZWdleEdyb3VwKHJlZ2V4LCBtb2RlTmFtZSkge1xuICAgIHZhciBvdXRlck1vZGUgPSB0aGlzLm1vZGU7XG4gICAgdGhpcy5tb2RlID0gXCJ0ZXh0XCI7XG4gICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIGxhc3RUb2tlbiA9IGZpcnN0VG9rZW47XG4gICAgdmFyIHN0ciA9IFwiXCI7XG4gICAgdmFyIG5leHRUb2tlbjtcblxuICAgIHdoaWxlICgobmV4dFRva2VuID0gdGhpcy5mZXRjaCgpKS50ZXh0ICE9PSBcIkVPRlwiICYmIHJlZ2V4LnRlc3Qoc3RyICsgbmV4dFRva2VuLnRleHQpKSB7XG4gICAgICBsYXN0VG9rZW4gPSBuZXh0VG9rZW47XG4gICAgICBzdHIgKz0gbGFzdFRva2VuLnRleHQ7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICBpZiAoc3RyID09PSBcIlwiKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIFwiICsgbW9kZU5hbWUgKyBcIjogJ1wiICsgZmlyc3RUb2tlbi50ZXh0ICsgXCInXCIsIGZpcnN0VG9rZW4pO1xuICAgIH1cblxuICAgIHRoaXMubW9kZSA9IG91dGVyTW9kZTtcbiAgICByZXR1cm4gZmlyc3RUb2tlbi5yYW5nZShsYXN0VG9rZW4sIHN0cik7XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhIGNvbG9yIGRlc2NyaXB0aW9uLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUNvbG9yR3JvdXAgPSBmdW5jdGlvbiBwYXJzZUNvbG9yR3JvdXAob3B0aW9uYWwpIHtcbiAgICB2YXIgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwiY29sb3JcIiwgb3B0aW9uYWwpO1xuXG4gICAgaWYgKCFyZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBtYXRjaCA9IC9eKCNbYS1mMC05XXszfXwjP1thLWYwLTldezZ9fFthLXpdKykkL2kuZXhlYyhyZXMudGV4dCk7XG5cbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGNvbG9yOiAnXCIgKyByZXMudGV4dCArIFwiJ1wiLCByZXMpO1xuICAgIH1cblxuICAgIHZhciBjb2xvciA9IG1hdGNoWzBdO1xuXG4gICAgaWYgKC9eWzAtOWEtZl17Nn0kL2kudGVzdChjb2xvcikpIHtcbiAgICAgIC8vIFdlIGFsbG93IGEgNi1kaWdpdCBIVE1MIGNvbG9yIHNwZWMgd2l0aG91dCBhIGxlYWRpbmcgXCIjXCIuXG4gICAgICAvLyBUaGlzIGZvbGxvd3MgdGhlIHhjb2xvciBwYWNrYWdlJ3MgSFRNTCBjb2xvciBtb2RlbC5cbiAgICAgIC8vIFByZWRlZmluZWQgY29sb3IgbmFtZXMgYXJlIGFsbCBtaXNzZWQgYnkgdGhpcyBSZWdFeCBwYXR0ZXJuLlxuICAgICAgY29sb3IgPSBcIiNcIiArIGNvbG9yO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImNvbG9yLXRva2VuXCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBjb2xvcjogY29sb3JcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBQYXJzZXMgYSBzaXplIHNwZWNpZmljYXRpb24sIGNvbnNpc3Rpbmcgb2YgbWFnbml0dWRlIGFuZCB1bml0LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVNpemVHcm91cCA9IGZ1bmN0aW9uIHBhcnNlU2l6ZUdyb3VwKG9wdGlvbmFsKSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgaXNCbGFuayA9IGZhbHNlO1xuXG4gICAgaWYgKCFvcHRpb25hbCAmJiB0aGlzLmZldGNoKCkudGV4dCAhPT0gXCJ7XCIpIHtcbiAgICAgIHJlcyA9IHRoaXMucGFyc2VSZWdleEdyb3VwKC9eWy0rXT8gKig/OiR8XFxkK3xcXGQrXFwuXFxkKnxcXC5cXGQqKSAqW2Etel17MCwyfSAqJC8sIFwic2l6ZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwic2l6ZVwiLCBvcHRpb25hbCk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghb3B0aW9uYWwgJiYgcmVzLnRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBCZWNhdXNlIHdlJ3ZlIHRlc3RlZCBmb3Igd2hhdCBpcyAhb3B0aW9uYWwsIHRoaXMgYmxvY2sgd29uJ3RcbiAgICAgIC8vIGFmZmVjdCBcXGtlcm4sIFxcaHNwYWNlLCBldGMuIEl0IHdpbGwgY2FwdHVyZSB0aGUgbWFuZGF0b3J5IGFyZ3VtZW50c1xuICAgICAgLy8gdG8gXFxnZW5mcmFjIGFuZCBcXGFib3ZlLlxuICAgICAgcmVzLnRleHQgPSBcIjBwdFwiOyAvLyBFbmFibGUgXFxhYm92ZXt9XG5cbiAgICAgIGlzQmxhbmsgPSB0cnVlOyAvLyBUaGlzIGlzIGhlcmUgc3BlY2lmaWNhbGx5IGZvciBcXGdlbmZyYWNcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2ggPSAvKFstK10/KSAqKFxcZCsoPzpcXC5cXGQqKT98XFwuXFxkKykgKihbYS16XXsyfSkvLmV4ZWMocmVzLnRleHQpO1xuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBzaXplOiAnXCIgKyByZXMudGV4dCArIFwiJ1wiLCByZXMpO1xuICAgIH1cblxuICAgIHZhciBkYXRhID0ge1xuICAgICAgbnVtYmVyOiArKG1hdGNoWzFdICsgbWF0Y2hbMl0pLFxuICAgICAgLy8gc2lnbiArIG1hZ25pdHVkZSwgY2FzdCB0byBudW1iZXJcbiAgICAgIHVuaXQ6IG1hdGNoWzNdXG4gICAgfTtcblxuICAgIGlmICghdmFsaWRVbml0KGRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIHVuaXQ6ICdcIiArIGRhdGEudW5pdCArIFwiJ1wiLCByZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInNpemVcIixcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgaXNCbGFuazogaXNCbGFua1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBVUkwsIGNoZWNraW5nIGVzY2FwZWQgbGV0dGVycyBhbmQgYWxsb3dlZCBwcm90b2NvbHMsXG4gICAqIGFuZCBzZXR0aW5nIHRoZSBjYXRjb2RlIG9mICUgYXMgYW4gYWN0aXZlIGNoYXJhY3RlciAoYXMgaW4gXFxoeXBlcnJlZikuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlVXJsR3JvdXAgPSBmdW5jdGlvbiBwYXJzZVVybEdyb3VwKG9wdGlvbmFsLCBjb25zdW1lU3BhY2VzKSB7XG4gICAgdGhpcy5ndWxsZXQubGV4ZXIuc2V0Q2F0Y29kZShcIiVcIiwgMTMpOyAvLyBhY3RpdmUgY2hhcmFjdGVyXG5cbiAgICB2YXIgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwidXJsXCIsIG9wdGlvbmFsLCB0cnVlKTsgLy8gZ2V0IHJhdyBzdHJpbmdcblxuICAgIHRoaXMuZ3VsbGV0LmxleGVyLnNldENhdGNvZGUoXCIlXCIsIDE0KTsgLy8gY29tbWVudCBjaGFyYWN0ZXJcblxuICAgIGlmICghcmVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIGh5cGVycmVmIHBhY2thZ2UgYWxsb3dzIGJhY2tzbGFzaGVzIGFsb25lIGluIGhyZWYsIGJ1dCBkb2Vzbid0XG4gICAgLy8gZ2VuZXJhdGUgdmFsaWQgbGlua3MgaW4gc3VjaCBjYXNlczsgd2UgaW50ZXJwcmV0IHRoaXMgYXNcbiAgICAvLyBcInVuZGVmaW5lZFwiIGJlaGF2aW91ciwgYW5kIGtlZXAgdGhlbSBhcy1pcy4gU29tZSBicm93c2VyIHdpbGxcbiAgICAvLyByZXBsYWNlIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLlxuXG5cbiAgICB2YXIgdXJsID0gcmVzLnRleHQucmVwbGFjZSgvXFxcXChbIyQlJn5fXnt9XSkvZywgJyQxJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidXJsXCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICB1cmw6IHVybFxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIElmIGBvcHRpb25hbGAgaXMgZmFsc2Ugb3IgYWJzZW50LCB0aGlzIHBhcnNlcyBhbiBvcmRpbmFyeSBncm91cCxcbiAgICogd2hpY2ggaXMgZWl0aGVyIGEgc2luZ2xlIG51Y2xldXMgKGxpa2UgXCJ4XCIpIG9yIGFuIGV4cHJlc3Npb25cbiAgICogaW4gYnJhY2VzIChsaWtlIFwie3greX1cIikgb3IgYW4gaW1wbGljaXQgZ3JvdXAsIGEgZ3JvdXAgdGhhdCBzdGFydHNcbiAgICogYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24sIGFuZCBlbmRzIHJpZ2h0IGJlZm9yZSBhIGhpZ2hlciBleHBsaWNpdFxuICAgKiBncm91cCBlbmRzLCBvciBhdCBFT0YuXG4gICAqIElmIGBvcHRpb25hbGAgaXMgdHJ1ZSwgaXQgcGFyc2VzIGVpdGhlciBhIGJyYWNrZXQtZGVsaW1pdGVkIGV4cHJlc3Npb25cbiAgICogKGxpa2UgXCJbeCt5XVwiKSBvciByZXR1cm5zIG51bGwgdG8gaW5kaWNhdGUgdGhlIGFic2VuY2Ugb2YgYVxuICAgKiBicmFja2V0LWVuY2xvc2VkIGdyb3VwLlxuICAgKiBJZiBgbW9kZWAgaXMgcHJlc2VudCwgc3dpdGNoZXMgdG8gdGhhdCBtb2RlIHdoaWxlIHBhcnNpbmcgdGhlIGdyb3VwLFxuICAgKiBhbmQgc3dpdGNoZXMgYmFjayBhZnRlci5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VHcm91cCA9IGZ1bmN0aW9uIHBhcnNlR3JvdXAobmFtZSwgLy8gRm9yIGVycm9yIHJlcG9ydGluZy5cbiAgb3B0aW9uYWwsIGdyZWVkaW5lc3MsIGJyZWFrT25Ub2tlblRleHQsIG1vZGUsIGNvbnN1bWVTcGFjZXMpIHtcbiAgICAvLyBTd2l0Y2ggdG8gc3BlY2lmaWVkIG1vZGVcbiAgICB2YXIgb3V0ZXJNb2RlID0gdGhpcy5tb2RlO1xuXG4gICAgaWYgKG1vZGUpIHtcbiAgICAgIHRoaXMuc3dpdGNoTW9kZShtb2RlKTtcbiAgICB9IC8vIENvbnN1bWUgc3BhY2VzIGlmIHJlcXVlc3RlZCwgY3J1Y2lhbGx5ICphZnRlciogd2Ugc3dpdGNoIG1vZGVzLFxuICAgIC8vIHNvIHRoYXQgdGhlIG5leHQgbm9uLXNwYWNlIHRva2VuIGlzIHBhcnNlZCBpbiB0aGUgY29ycmVjdCBtb2RlLlxuXG5cbiAgICBpZiAoY29uc3VtZVNwYWNlcykge1xuICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7XG4gICAgfSAvLyBHZXQgZmlyc3QgdG9rZW5cblxuXG4gICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIHRleHQgPSBmaXJzdFRva2VuLnRleHQ7XG4gICAgdmFyIHJlc3VsdDsgLy8gVHJ5IHRvIHBhcnNlIGFuIG9wZW4gYnJhY2Ugb3IgXFxiZWdpbmdyb3VwXG5cbiAgICBpZiAob3B0aW9uYWwgPyB0ZXh0ID09PSBcIltcIiA6IHRleHQgPT09IFwie1wiIHx8IHRleHQgPT09IFwiXFxcXGJlZ2luZ3JvdXBcIikge1xuICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB2YXIgZ3JvdXBFbmQgPSBQYXJzZXIuZW5kT2ZHcm91cFt0ZXh0XTsgLy8gU3RhcnQgYSBuZXcgZ3JvdXAgbmFtZXNwYWNlXG5cbiAgICAgIHRoaXMuZ3VsbGV0LmJlZ2luR3JvdXAoKTsgLy8gSWYgd2UgZ2V0IGEgYnJhY2UsIHBhcnNlIGFuIGV4cHJlc3Npb25cblxuICAgICAgdmFyIGV4cHJlc3Npb24gPSB0aGlzLnBhcnNlRXhwcmVzc2lvbihmYWxzZSwgZ3JvdXBFbmQpO1xuICAgICAgdmFyIGxhc3RUb2tlbiA9IHRoaXMuZmV0Y2goKTsgLy8gQ2hlY2sgdGhhdCB3ZSBnb3QgYSBtYXRjaGluZyBjbG9zaW5nIGJyYWNlXG5cbiAgICAgIHRoaXMuZXhwZWN0KGdyb3VwRW5kKTsgLy8gRW5kIGdyb3VwIG5hbWVzcGFjZVxuXG4gICAgICB0aGlzLmd1bGxldC5lbmRHcm91cCgpO1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgbG9jOiBTb3VyY2VMb2NhdGlvbi5yYW5nZShmaXJzdFRva2VuLCBsYXN0VG9rZW4pLFxuICAgICAgICBib2R5OiBleHByZXNzaW9uLFxuICAgICAgICAvLyBBIGdyb3VwIGZvcm1lZCBieSBcXGJlZ2luZ3JvdXAuLi5cXGVuZGdyb3VwIGlzIGEgc2VtaS1zaW1wbGUgZ3JvdXBcbiAgICAgICAgLy8gd2hpY2ggZG9lc24ndCBhZmZlY3Qgc3BhY2luZyBpbiBtYXRoIG1vZGUsIGkuZS4sIGlzIHRyYW5zcGFyZW50LlxuICAgICAgICAvLyBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTkzMC93aGVuLXNob3VsZC1vbmUtXG4gICAgICAgIC8vIHVzZS1iZWdpbmdyb3VwLWluc3RlYWQtb2YtYmdyb3VwXG4gICAgICAgIHNlbWlzaW1wbGU6IHRleHQgPT09IFwiXFxcXGJlZ2luZ3JvdXBcIiB8fCB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChvcHRpb25hbCkge1xuICAgICAgLy8gUmV0dXJuIG5vdGhpbmcgZm9yIGFuIG9wdGlvbmFsIGdyb3VwXG4gICAgICByZXN1bHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGVyZSBleGlzdHMgYSBmdW5jdGlvbiB3aXRoIHRoaXMgbmFtZSwgcGFyc2UgdGhlIGZ1bmN0aW9uLlxuICAgICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHJldHVybiBhIG51Y2xldXNcbiAgICAgIHJlc3VsdCA9IHRoaXMucGFyc2VGdW5jdGlvbihicmVha09uVG9rZW5UZXh0LCBuYW1lLCBncmVlZGluZXNzKSB8fCB0aGlzLnBhcnNlU3ltYm9sKCk7XG5cbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCAmJiB0ZXh0WzBdID09PSBcIlxcXFxcIiAmJiAhaW1wbGljaXRDb21tYW5kcy5oYXNPd25Qcm9wZXJ0eSh0ZXh0KSkge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy50aHJvd09uRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmRlZmluZWQgY29udHJvbCBzZXF1ZW5jZTogXCIgKyB0ZXh0LCBmaXJzdFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZm9ybWF0VW5zdXBwb3J0ZWRDbWQodGV4dCk7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfVxuICAgIH0gLy8gU3dpdGNoIG1vZGUgYmFja1xuXG5cbiAgICBpZiAobW9kZSkge1xuICAgICAgdGhpcy5zd2l0Y2hNb2RlKG91dGVyTW9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICogRm9ybSBsaWdhdHVyZS1saWtlIGNvbWJpbmF0aW9ucyBvZiBjaGFyYWN0ZXJzIGZvciB0ZXh0IG1vZGUuXG4gICAqIFRoaXMgaW5jbHVkZXMgaW5wdXRzIGxpa2UgXCItLVwiLCBcIi0tLVwiLCBcImBgXCIgYW5kIFwiJydcIi5cbiAgICogVGhlIHJlc3VsdCB3aWxsIHNpbXBseSByZXBsYWNlIG11bHRpcGxlIHRleHRvcmQgbm9kZXMgd2l0aCBhIHNpbmdsZVxuICAgKiBjaGFyYWN0ZXIgaW4gZWFjaCB2YWx1ZSBieSBhIHNpbmdsZSB0ZXh0b3JkIG5vZGUgaGF2aW5nIG11bHRpcGxlXG4gICAqIGNoYXJhY3RlcnMgaW4gaXRzIHZhbHVlLiAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIHN0aWxsIEFTQ0lJIHNvdXJjZS5cbiAgICogVGhlIGdyb3VwIHdpbGwgYmUgbW9kaWZpZWQgaW4gcGxhY2UuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmZvcm1MaWdhdHVyZXMgPSBmdW5jdGlvbiBmb3JtTGlnYXR1cmVzKGdyb3VwKSB7XG4gICAgdmFyIG4gPSBncm91cC5sZW5ndGggLSAxO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciBhID0gZ3JvdXBbaV07IC8vICRGbG93Rml4TWU6IE5vdCBldmVyeSBub2RlIHR5cGUgaGFzIGEgYHRleHRgIHByb3BlcnR5LlxuXG4gICAgICB2YXIgdiA9IGEudGV4dDtcblxuICAgICAgaWYgKHYgPT09IFwiLVwiICYmIGdyb3VwW2kgKyAxXS50ZXh0ID09PSBcIi1cIikge1xuICAgICAgICBpZiAoaSArIDEgPCBuICYmIGdyb3VwW2kgKyAyXS50ZXh0ID09PSBcIi1cIikge1xuICAgICAgICAgIGdyb3VwLnNwbGljZShpLCAzLCB7XG4gICAgICAgICAgICB0eXBlOiBcInRleHRvcmRcIixcbiAgICAgICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgbG9jOiBTb3VyY2VMb2NhdGlvbi5yYW5nZShhLCBncm91cFtpICsgMl0pLFxuICAgICAgICAgICAgdGV4dDogXCItLS1cIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG4gLT0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cC5zcGxpY2UoaSwgMiwge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgICAgICBtb2RlOiBcInRleHRcIixcbiAgICAgICAgICAgIGxvYzogU291cmNlTG9jYXRpb24ucmFuZ2UoYSwgZ3JvdXBbaSArIDFdKSxcbiAgICAgICAgICAgIHRleHQ6IFwiLS1cIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG4gLT0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoKHYgPT09IFwiJ1wiIHx8IHYgPT09IFwiYFwiKSAmJiBncm91cFtpICsgMV0udGV4dCA9PT0gdikge1xuICAgICAgICBncm91cC5zcGxpY2UoaSwgMiwge1xuICAgICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICAgIGxvYzogU291cmNlTG9jYXRpb24ucmFuZ2UoYSwgZ3JvdXBbaSArIDFdKSxcbiAgICAgICAgICB0ZXh0OiB2ICsgdlxuICAgICAgICB9KTtcbiAgICAgICAgbiAtPSAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogUGFyc2UgYSBzaW5nbGUgc3ltYm9sIG91dCBvZiB0aGUgc3RyaW5nLiBIZXJlLCB3ZSBoYW5kbGUgc2luZ2xlIGNoYXJhY3RlclxuICAgKiBzeW1ib2xzIGFuZCBzcGVjaWFsIGZ1bmN0aW9ucyBsaWtlIFxcdmVyYi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VTeW1ib2wgPSBmdW5jdGlvbiBwYXJzZVN5bWJvbCgpIHtcbiAgICB2YXIgbnVjbGV1cyA9IHRoaXMuZmV0Y2goKTtcbiAgICB2YXIgdGV4dCA9IG51Y2xldXMudGV4dDtcblxuICAgIGlmICgvXlxcXFx2ZXJiW15hLXpBLVpdLy50ZXN0KHRleHQpKSB7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgIHZhciBhcmcgPSB0ZXh0LnNsaWNlKDUpO1xuICAgICAgdmFyIHN0YXIgPSBhcmcuY2hhckF0KDApID09PSBcIipcIjtcblxuICAgICAgaWYgKHN0YXIpIHtcbiAgICAgICAgYXJnID0gYXJnLnNsaWNlKDEpO1xuICAgICAgfSAvLyBMZXhlcidzIHRva2VuUmVnZXggaXMgY29uc3RydWN0ZWQgdG8gYWx3YXlzIGhhdmUgbWF0Y2hpbmdcbiAgICAgIC8vIGZpcnN0L2xhc3QgY2hhcmFjdGVycy5cblxuXG4gICAgICBpZiAoYXJnLmxlbmd0aCA8IDIgfHwgYXJnLmNoYXJBdCgwKSAhPT0gYXJnLnNsaWNlKC0xKSkge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcdmVyYiBhc3NlcnRpb24gZmFpbGVkIC0tXFxuICAgICAgICAgICAgICAgICAgICBwbGVhc2UgcmVwb3J0IHdoYXQgaW5wdXQgY2F1c2VkIHRoaXMgYnVnXCIpO1xuICAgICAgfVxuXG4gICAgICBhcmcgPSBhcmcuc2xpY2UoMSwgLTEpOyAvLyByZW1vdmUgZmlyc3QgYW5kIGxhc3QgY2hhclxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInZlcmJcIixcbiAgICAgICAgbW9kZTogXCJ0ZXh0XCIsXG4gICAgICAgIGJvZHk6IGFyZyxcbiAgICAgICAgc3Rhcjogc3RhclxuICAgICAgfTtcbiAgICB9IC8vIEF0IHRoaXMgcG9pbnQsIHdlIHNob3VsZCBoYXZlIGEgc3ltYm9sLCBwb3NzaWJseSB3aXRoIGFjY2VudHMuXG4gICAgLy8gRmlyc3QgZXhwYW5kIGFueSBhY2NlbnRlZCBiYXNlIHN5bWJvbCBhY2NvcmRpbmcgdG8gdW5pY29kZVN5bWJvbHMuXG5cblxuICAgIGlmICh1bmljb2RlU3ltYm9scy5oYXNPd25Qcm9wZXJ0eSh0ZXh0WzBdKSAmJiAhc3JjX3N5bWJvbHNbdGhpcy5tb2RlXVt0ZXh0WzBdXSkge1xuICAgICAgLy8gVGhpcyBiZWhhdmlvciBpcyBub3Qgc3RyaWN0IChYZVRlWC1jb21wYXRpYmxlKSBpbiBtYXRoIG1vZGUuXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5zdHJpY3QgJiYgdGhpcy5tb2RlID09PSBcIm1hdGhcIikge1xuICAgICAgICB0aGlzLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcInVuaWNvZGVUZXh0SW5NYXRoTW9kZVwiLCBcIkFjY2VudGVkIFVuaWNvZGUgdGV4dCBjaGFyYWN0ZXIgXFxcIlwiICsgdGV4dFswXSArIFwiXFxcIiB1c2VkIGluIFwiICsgXCJtYXRoIG1vZGVcIiwgbnVjbGV1cyk7XG4gICAgICB9XG5cbiAgICAgIHRleHQgPSB1bmljb2RlU3ltYm9sc1t0ZXh0WzBdXSArIHRleHQuc3Vic3RyKDEpO1xuICAgIH0gLy8gU3RyaXAgb2ZmIGFueSBjb21iaW5pbmcgY2hhcmFjdGVyc1xuXG5cbiAgICB2YXIgbWF0Y2ggPSBjb21iaW5pbmdEaWFjcml0aWNhbE1hcmtzRW5kUmVnZXguZXhlYyh0ZXh0KTtcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KTtcblxuICAgICAgaWYgKHRleHQgPT09ICdpJykge1xuICAgICAgICB0ZXh0ID0gXCJcXHUwMTMxXCI7IC8vIGRvdGxlc3MgaSwgaW4gbWF0aCBhbmQgdGV4dCBtb2RlXG4gICAgICB9IGVsc2UgaWYgKHRleHQgPT09ICdqJykge1xuICAgICAgICB0ZXh0ID0gXCJcXHUwMjM3XCI7IC8vIGRvdGxlc3MgaiwgaW4gbWF0aCBhbmQgdGV4dCBtb2RlXG4gICAgICB9XG4gICAgfSAvLyBSZWNvZ25pemUgYmFzZSBzeW1ib2xcblxuXG4gICAgdmFyIHN5bWJvbDtcblxuICAgIGlmIChzcmNfc3ltYm9sc1t0aGlzLm1vZGVdW3RleHRdKSB7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5zdHJpY3QgJiYgdGhpcy5tb2RlID09PSAnbWF0aCcgJiYgZXh0cmFMYXRpbi5pbmRleE9mKHRleHQpID49IDApIHtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJ1bmljb2RlVGV4dEluTWF0aE1vZGVcIiwgXCJMYXRpbi0xL1VuaWNvZGUgdGV4dCBjaGFyYWN0ZXIgXFxcIlwiICsgdGV4dFswXSArIFwiXFxcIiB1c2VkIGluIFwiICsgXCJtYXRoIG1vZGVcIiwgbnVjbGV1cyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBncm91cCA9IHNyY19zeW1ib2xzW3RoaXMubW9kZV1bdGV4dF0uZ3JvdXA7XG4gICAgICB2YXIgbG9jID0gU291cmNlTG9jYXRpb24ucmFuZ2UobnVjbGV1cyk7XG4gICAgICB2YXIgcztcblxuICAgICAgaWYgKEFUT01TLmhhc093blByb3BlcnR5KGdyb3VwKSkge1xuICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgIHZhciBmYW1pbHkgPSBncm91cDtcbiAgICAgICAgcyA9IHtcbiAgICAgICAgICB0eXBlOiBcImF0b21cIixcbiAgICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgICAgZmFtaWx5OiBmYW1pbHksXG4gICAgICAgICAgbG9jOiBsb2MsXG4gICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgICBzID0ge1xuICAgICAgICAgIHR5cGU6IGdyb3VwLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBsb2M6IGxvYyxcbiAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHN5bWJvbCA9IHM7XG4gICAgfSBlbHNlIGlmICh0ZXh0LmNoYXJDb2RlQXQoMCkgPj0gMHg4MCkge1xuICAgICAgLy8gbm8gc3ltYm9sIGZvciBlLmcuIF5cbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLnN0cmljdCkge1xuICAgICAgICBpZiAoIXN1cHBvcnRlZENvZGVwb2ludCh0ZXh0LmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJ1bmtub3duU3ltYm9sXCIsIFwiVW5yZWNvZ25pemVkIFVuaWNvZGUgY2hhcmFjdGVyIFxcXCJcIiArIHRleHRbMF0gKyBcIlxcXCJcIiArIChcIiAoXCIgKyB0ZXh0LmNoYXJDb2RlQXQoMCkgKyBcIilcIiksIG51Y2xldXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gXCJtYXRoXCIpIHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcInVuaWNvZGVUZXh0SW5NYXRoTW9kZVwiLCBcIlVuaWNvZGUgdGV4dCBjaGFyYWN0ZXIgXFxcIlwiICsgdGV4dFswXSArIFwiXFxcIiB1c2VkIGluIG1hdGggbW9kZVwiLCBudWNsZXVzKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBBbGwgbm9ubWF0aGVtYXRpY2FsIFVuaWNvZGUgY2hhcmFjdGVycyBhcmUgcmVuZGVyZWQgYXMgaWYgdGhleVxuICAgICAgLy8gYXJlIGluIHRleHQgbW9kZSAod3JhcHBlZCBpbiBcXHRleHQpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaXRcbiAgICAgIC8vIHRha2VzIHRvIHJlbmRlciB0aGVtIGluIExhVGVYLiAgU2V0dGluZyBgbW9kZTogdGhpcy5tb2RlYCBpc1xuICAgICAgLy8gYW5vdGhlciBuYXR1cmFsIGNob2ljZSAodGhlIHVzZXIgcmVxdWVzdGVkIG1hdGggbW9kZSksIGJ1dFxuICAgICAgLy8gdGhpcyBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCBmb3IgZ2V0Q2hhcmFjdGVyTWV0cmljcygpIHRvXG4gICAgICAvLyBkaXN0aW5ndWlzaCBVbmljb2RlIGNoYXJhY3RlcnMgd2l0aG91dCBtZXRyaWNzIGFuZCB0aG9zZSBmb3JcbiAgICAgIC8vIHdoaWNoIHdlIHdhbnQgdG8gc2ltdWxhdGUgdGhlIGxldHRlciBNLlxuXG5cbiAgICAgIHN5bWJvbCA9IHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICBsb2M6IFNvdXJjZUxvY2F0aW9uLnJhbmdlKG51Y2xldXMpLFxuICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDsgLy8gRU9GLCBeLCBfLCB7LCB9LCBldGMuXG4gICAgfVxuXG4gICAgdGhpcy5jb25zdW1lKCk7IC8vIFRyYW5zZm9ybSBjb21iaW5pbmcgY2hhcmFjdGVycyBpbnRvIGFjY2VudHNcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaFswXS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYWNjZW50ID0gbWF0Y2hbMF1baV07XG5cbiAgICAgICAgaWYgKCF1bmljb2RlQWNjZW50c1thY2NlbnRdKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5rbm93biBhY2NlbnQgJyBcIiArIGFjY2VudCArIFwiJ1wiLCBudWNsZXVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb21tYW5kID0gdW5pY29kZUFjY2VudHNbYWNjZW50XVt0aGlzLm1vZGVdO1xuXG4gICAgICAgIGlmICghY29tbWFuZCkge1xuICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkFjY2VudCBcIiArIGFjY2VudCArIFwiIHVuc3VwcG9ydGVkIGluIFwiICsgdGhpcy5tb2RlICsgXCIgbW9kZVwiLCBudWNsZXVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN5bWJvbCA9IHtcbiAgICAgICAgICB0eXBlOiBcImFjY2VudFwiLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBsb2M6IFNvdXJjZUxvY2F0aW9uLnJhbmdlKG51Y2xldXMpLFxuICAgICAgICAgIGxhYmVsOiBjb21tYW5kLFxuICAgICAgICAgIGlzU3RyZXRjaHk6IGZhbHNlLFxuICAgICAgICAgIGlzU2hpZnR5OiB0cnVlLFxuICAgICAgICAgIGJhc2U6IHN5bWJvbFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzeW1ib2w7XG4gIH07XG5cbiAgcmV0dXJuIFBhcnNlcjtcbn0oKTtcblxuUGFyc2VyX1BhcnNlci5lbmRPZkV4cHJlc3Npb24gPSBbXCJ9XCIsIFwiXFxcXGVuZGdyb3VwXCIsIFwiXFxcXGVuZFwiLCBcIlxcXFxyaWdodFwiLCBcIiZcIl07XG5QYXJzZXJfUGFyc2VyLmVuZE9mR3JvdXAgPSB7XG4gIFwiW1wiOiBcIl1cIixcbiAgXCJ7XCI6IFwifVwiLFxuICBcIlxcXFxiZWdpbmdyb3VwXCI6IFwiXFxcXGVuZGdyb3VwXCJcbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBcImV4cHJlc3Npb25cIiwgd2hpY2ggaXMgYSBsaXN0IG9mIGF0b21zLlxuICAgKlxuICAgKiBgYnJlYWtPbkluZml4YDogU2hvdWxkIHRoZSBwYXJzaW5nIHN0b3Agd2hlbiB3ZSBoaXQgaW5maXggbm9kZXM/IFRoaXNcbiAgICogICAgICAgICAgICAgICAgIGhhcHBlbnMgd2hlbiBmdW5jdGlvbnMgaGF2ZSBoaWdoZXIgcHJlY2VuZGVuY2UgaGFuIGluZml4XG4gICAqICAgICAgICAgICAgICAgICBub2RlcyBpbiBpbXBsaWNpdCBwYXJzZXMuXG4gICAqXG4gICAqIGBicmVha09uVG9rZW5UZXh0YDogVGhlIHRleHQgb2YgdGhlIHRva2VuIHRoYXQgdGhlIGV4cHJlc3Npb24gc2hvdWxkIGVuZFxuICAgKiAgICAgICAgICAgICAgICAgICAgIHdpdGgsIG9yIGBudWxsYCBpZiBzb21ldGhpbmcgZWxzZSBzaG91bGQgZW5kIHRoZVxuICAgKiAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24uXG4gICAqL1xuXG59O1xuUGFyc2VyX1BhcnNlci5TVVBTVUJfR1JFRURJTkVTUyA9IDE7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3BhcnNlVHJlZS5qc1xuLyoqXG4gKiBQcm92aWRlcyBhIHNpbmdsZSBmdW5jdGlvbiBmb3IgcGFyc2luZyBhbiBleHByZXNzaW9uIHVzaW5nIGEgUGFyc2VyXG4gKiBUT0RPKGVtaWx5KTogUmVtb3ZlIHRoaXNcbiAqL1xuXG5cblxuLyoqXG4gKiBQYXJzZXMgYW4gZXhwcmVzc2lvbiB1c2luZyBhIFBhcnNlciwgdGhlbiByZXR1cm5zIHRoZSBwYXJzZWQgcmVzdWx0LlxuICovXG52YXIgcGFyc2VUcmVlX3BhcnNlVHJlZSA9IGZ1bmN0aW9uIHBhcnNlVHJlZSh0b1BhcnNlLCBzZXR0aW5ncykge1xuICBpZiAoISh0eXBlb2YgdG9QYXJzZSA9PT0gJ3N0cmluZycgfHwgdG9QYXJzZSBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdLYVRlWCBjYW4gb25seSBwYXJzZSBzdHJpbmcgdHlwZWQgZXhwcmVzc2lvbicpO1xuICB9XG5cbiAgdmFyIHBhcnNlciA9IG5ldyBQYXJzZXJfUGFyc2VyKHRvUGFyc2UsIHNldHRpbmdzKTsgLy8gQmxhbmsgb3V0IGFueSBcXGRmQHRhZyB0byBhdm9pZCBzcHVyaW91cyBcIkR1cGxpY2F0ZSBcXHRhZ1wiIGVycm9yc1xuXG4gIGRlbGV0ZSBwYXJzZXIuZ3VsbGV0Lm1hY3Jvcy5jdXJyZW50W1wiXFxcXGRmQHRhZ1wiXTtcbiAgdmFyIHRyZWUgPSBwYXJzZXIucGFyc2UoKTsgLy8gSWYgdGhlIGlucHV0IHVzZWQgXFx0YWcsIGl0IHdpbGwgc2V0IHRoZSBcXGRmQHRhZyBtYWNybyB0byB0aGUgdGFnLlxuICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNlcGFyYXRlbHkgcGFyc2UgdGhlIHRhZyBhbmQgd3JhcCB0aGUgdHJlZS5cblxuICBpZiAocGFyc2VyLmd1bGxldC5tYWNyb3MuZ2V0KFwiXFxcXGRmQHRhZ1wiKSkge1xuICAgIGlmICghc2V0dGluZ3MuZGlzcGxheU1vZGUpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFx0YWcgd29ya3Mgb25seSBpbiBkaXNwbGF5IGVxdWF0aW9uc1wiKTtcbiAgICB9XG5cbiAgICBwYXJzZXIuZ3VsbGV0LmZlZWQoXCJcXFxcZGZAdGFnXCIpO1xuICAgIHRyZWUgPSBbe1xuICAgICAgdHlwZTogXCJ0YWdcIixcbiAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgYm9keTogdHJlZSxcbiAgICAgIHRhZzogcGFyc2VyLnBhcnNlKClcbiAgICB9XTtcbiAgfVxuXG4gIHJldHVybiB0cmVlO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3BhcnNlVHJlZSA9IChwYXJzZVRyZWVfcGFyc2VUcmVlKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4va2F0ZXguanNcbi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cblxuLyoqXG4gKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBLYVRlWC4gSGVyZSwgd2UgZXhwb3NlIGZ1bmN0aW9ucyBmb3JcbiAqIHJlbmRlcmluZyBleHByZXNzaW9ucyBlaXRoZXIgdG8gRE9NIG5vZGVzIG9yIHRvIG1hcmt1cCBzdHJpbmdzLlxuICpcbiAqIFdlIGFsc28gZXhwb3NlIHRoZSBQYXJzZUVycm9yIGNsYXNzIHRvIGNoZWNrIGlmIGVycm9ycyB0aHJvd24gZnJvbSBLYVRlWCBhcmVcbiAqIGVycm9ycyBpbiB0aGUgZXhwcmVzc2lvbiwgb3IgZXJyb3JzIGluIGphdmFzY3JpcHQgaGFuZGxpbmcuXG4gKi9cblxuXG5cblxuXG5cblxuXG5cblxuLyoqXG4gKiBQYXJzZSBhbmQgYnVpbGQgYW4gZXhwcmVzc2lvbiwgYW5kIHBsYWNlIHRoYXQgZXhwcmVzc2lvbiBpbiB0aGUgRE9NIG5vZGVcbiAqIGdpdmVuLlxuICovXG52YXIga2F0ZXhfcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKGV4cHJlc3Npb24sIGJhc2VOb2RlLCBvcHRpb25zKSB7XG4gIGJhc2VOb2RlLnRleHRDb250ZW50ID0gXCJcIjtcbiAgdmFyIG5vZGUgPSBrYXRleF9yZW5kZXJUb0RvbVRyZWUoZXhwcmVzc2lvbiwgb3B0aW9ucykudG9Ob2RlKCk7XG4gIGJhc2VOb2RlLmFwcGVuZENoaWxkKG5vZGUpO1xufTsgLy8gS2FUZVgncyBzdHlsZXMgZG9uJ3Qgd29yayBwcm9wZXJseSBpbiBxdWlya3MgbW9kZS4gUHJpbnQgb3V0IGFuIGVycm9yLCBhbmRcbi8vIGRpc2FibGUgcmVuZGVyaW5nLlxuXG5cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgaWYgKGRvY3VtZW50LmNvbXBhdE1vZGUgIT09IFwiQ1NTMUNvbXBhdFwiKSB7XG4gICAgdHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS53YXJuKFwiV2FybmluZzogS2FUZVggZG9lc24ndCB3b3JrIGluIHF1aXJrcyBtb2RlLiBNYWtlIHN1cmUgeW91ciBcIiArIFwid2Vic2l0ZSBoYXMgYSBzdWl0YWJsZSBkb2N0eXBlLlwiKTtcblxuICAgIGthdGV4X3JlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkthVGVYIGRvZXNuJ3Qgd29yayBpbiBxdWlya3MgbW9kZS5cIik7XG4gICAgfTtcbiAgfVxufVxuLyoqXG4gKiBQYXJzZSBhbmQgYnVpbGQgYW4gZXhwcmVzc2lvbiwgYW5kIHJldHVybiB0aGUgbWFya3VwIGZvciB0aGF0LlxuICovXG5cblxudmFyIHJlbmRlclRvU3RyaW5nID0gZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmcoZXhwcmVzc2lvbiwgb3B0aW9ucykge1xuICB2YXIgbWFya3VwID0ga2F0ZXhfcmVuZGVyVG9Eb21UcmVlKGV4cHJlc3Npb24sIG9wdGlvbnMpLnRvTWFya3VwKCk7XG4gIHJldHVybiBtYXJrdXA7XG59O1xuLyoqXG4gKiBQYXJzZSBhbiBleHByZXNzaW9uIGFuZCByZXR1cm4gdGhlIHBhcnNlIHRyZWUuXG4gKi9cblxuXG52YXIga2F0ZXhfZ2VuZXJhdGVQYXJzZVRyZWUgPSBmdW5jdGlvbiBnZW5lcmF0ZVBhcnNlVHJlZShleHByZXNzaW9uLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG5ldyBTZXR0aW5nc19TZXR0aW5ncyhvcHRpb25zKTtcbiAgcmV0dXJuIHNyY19wYXJzZVRyZWUoZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xufTtcbi8qKlxuICogSWYgdGhlIGdpdmVuIGVycm9yIGlzIGEgS2FUZVggUGFyc2VFcnJvciBhbmQgb3B0aW9ucy50aHJvd09uRXJyb3IgaXMgZmFsc2UsXG4gKiByZW5kZXJzIHRoZSBpbnZhbGlkIExhVGVYIGFzIGEgc3BhbiB3aXRoIGhvdmVyIHRpdGxlIGdpdmluZyB0aGUgS2FUZVhcbiAqIGVycm9yIG1lc3NhZ2UuICBPdGhlcndpc2UsIHNpbXBseSB0aHJvd3MgdGhlIGVycm9yLlxuICovXG5cblxudmFyIGthdGV4X3JlbmRlckVycm9yID0gZnVuY3Rpb24gcmVuZGVyRXJyb3IoZXJyb3IsIGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudGhyb3dPbkVycm9yIHx8ICEoZXJyb3IgaW5zdGFuY2VvZiBzcmNfUGFyc2VFcnJvcikpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIHZhciBub2RlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wia2F0ZXgtZXJyb3JcIl0sIFtuZXcgZG9tVHJlZV9TeW1ib2xOb2RlKGV4cHJlc3Npb24pXSk7XG4gIG5vZGUuc2V0QXR0cmlidXRlKFwidGl0bGVcIiwgZXJyb3IudG9TdHJpbmcoKSk7XG4gIG5vZGUuc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgXCJjb2xvcjpcIiArIG9wdGlvbnMuZXJyb3JDb2xvcik7XG4gIHJldHVybiBub2RlO1xufTtcbi8qKlxuICogR2VuZXJhdGVzIGFuZCByZXR1cm5zIHRoZSBrYXRleCBidWlsZCB0cmVlLiBUaGlzIGlzIHVzZWQgZm9yIGFkdmFuY2VkXG4gKiB1c2UgY2FzZXMgKGxpa2UgcmVuZGVyaW5nIHRvIGN1c3RvbSBvdXRwdXQpLlxuICovXG5cblxudmFyIGthdGV4X3JlbmRlclRvRG9tVHJlZSA9IGZ1bmN0aW9uIHJlbmRlclRvRG9tVHJlZShleHByZXNzaW9uLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG5ldyBTZXR0aW5nc19TZXR0aW5ncyhvcHRpb25zKTtcblxuICB0cnkge1xuICAgIHZhciB0cmVlID0gc3JjX3BhcnNlVHJlZShleHByZXNzaW9uLCBzZXR0aW5ncyk7XG4gICAgcmV0dXJuIGJ1aWxkVHJlZV9idWlsZFRyZWUodHJlZSwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBrYXRleF9yZW5kZXJFcnJvcihlcnJvciwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9XG59O1xuLyoqXG4gKiBHZW5lcmF0ZXMgYW5kIHJldHVybnMgdGhlIGthdGV4IGJ1aWxkIHRyZWUsIHdpdGgganVzdCBIVE1MIChubyBNYXRoTUwpLlxuICogVGhpcyBpcyB1c2VkIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMgKGxpa2UgcmVuZGVyaW5nIHRvIGN1c3RvbSBvdXRwdXQpLlxuICovXG5cblxudmFyIGthdGV4X3JlbmRlclRvSFRNTFRyZWUgPSBmdW5jdGlvbiByZW5kZXJUb0hUTUxUcmVlKGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gbmV3IFNldHRpbmdzX1NldHRpbmdzKG9wdGlvbnMpO1xuXG4gIHRyeSB7XG4gICAgdmFyIHRyZWUgPSBzcmNfcGFyc2VUcmVlKGV4cHJlc3Npb24sIHNldHRpbmdzKTtcbiAgICByZXR1cm4gYnVpbGRUcmVlX2J1aWxkSFRNTFRyZWUodHJlZSwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBrYXRleF9yZW5kZXJFcnJvcihlcnJvciwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBrYXRleF8wID0gKHtcbiAgLyoqXG4gICAqIEN1cnJlbnQgS2FUZVggdmVyc2lvblxuICAgKi9cbiAgdmVyc2lvbjogXCIwLjExLjFcIixcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZ2l2ZW4gTGFUZVggaW50byBhbiBIVE1MK01hdGhNTCBjb21iaW5hdGlvbiwgYW5kIGFkZHNcbiAgICogaXQgYXMgYSBjaGlsZCB0byB0aGUgc3BlY2lmaWVkIERPTSBub2RlLlxuICAgKi9cbiAgcmVuZGVyOiBrYXRleF9yZW5kZXIsXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCtNYXRoTUwgY29tYmluYXRpb24gc3RyaW5nLFxuICAgKiBmb3Igc2VuZGluZyB0byB0aGUgY2xpZW50LlxuICAgKi9cbiAgcmVuZGVyVG9TdHJpbmc6IHJlbmRlclRvU3RyaW5nLFxuXG4gIC8qKlxuICAgKiBLYVRlWCBlcnJvciwgdXN1YWxseSBkdXJpbmcgcGFyc2luZy5cbiAgICovXG4gIFBhcnNlRXJyb3I6IHNyY19QYXJzZUVycm9yLFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIExhVGVYIGludG8gS2FUZVgncyBpbnRlcm5hbCBwYXJzZSB0cmVlIHN0cnVjdHVyZSxcbiAgICogd2l0aG91dCByZW5kZXJpbmcgdG8gSFRNTCBvciBNYXRoTUwuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHB1YmxpYyB1c2UuXG4gICAqIFRoZSBpbnRlcm5hbCB0cmVlIHJlcHJlc2VudGF0aW9uIGlzIHVuc3RhYmxlIGFuZCBpcyB2ZXJ5IGxpa2VseVxuICAgKiB0byBjaGFuZ2UuIFVzZSBhdCB5b3VyIG93biByaXNrLlxuICAgKi9cbiAgX19wYXJzZToga2F0ZXhfZ2VuZXJhdGVQYXJzZVRyZWUsXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCtNYXRoTUwgaW50ZXJuYWwgRE9NIHRyZWVcbiAgICogcmVwcmVzZW50YXRpb24sIHdpdGhvdXQgZmxhdHRlbmluZyB0aGF0IHJlcHJlc2VudGF0aW9uIHRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBOT1RFOiBUaGlzIG1ldGhvZCBpcyBub3QgY3VycmVudGx5IHJlY29tbWVuZGVkIGZvciBwdWJsaWMgdXNlLlxuICAgKiBUaGUgaW50ZXJuYWwgdHJlZSByZXByZXNlbnRhdGlvbiBpcyB1bnN0YWJsZSBhbmQgaXMgdmVyeSBsaWtlbHlcbiAgICogdG8gY2hhbmdlLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICovXG4gIF9fcmVuZGVyVG9Eb21UcmVlOiBrYXRleF9yZW5kZXJUb0RvbVRyZWUsXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCBpbnRlcm5hbCBET00gdHJlZSByZXByZXNlbnRhdGlvbixcbiAgICogd2l0aG91dCBNYXRoTUwgYW5kIHdpdGhvdXQgZmxhdHRlbmluZyB0aGF0IHJlcHJlc2VudGF0aW9uIHRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBOT1RFOiBUaGlzIG1ldGhvZCBpcyBub3QgY3VycmVudGx5IHJlY29tbWVuZGVkIGZvciBwdWJsaWMgdXNlLlxuICAgKiBUaGUgaW50ZXJuYWwgdHJlZSByZXByZXNlbnRhdGlvbiBpcyB1bnN0YWJsZSBhbmQgaXMgdmVyeSBsaWtlbHlcbiAgICogdG8gY2hhbmdlLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICovXG4gIF9fcmVuZGVyVG9IVE1MVHJlZToga2F0ZXhfcmVuZGVyVG9IVE1MVHJlZSxcblxuICAvKipcbiAgICogZXh0ZW5kcyBpbnRlcm5hbCBmb250IG1ldHJpY3Mgb2JqZWN0IHdpdGggYSBuZXcgb2JqZWN0XG4gICAqIGVhY2gga2V5IGluIHRoZSBuZXcgb2JqZWN0IHJlcHJlc2VudHMgYSBmb250IG5hbWVcbiAgKi9cbiAgX19zZXRGb250TWV0cmljczogc2V0Rm9udE1ldHJpY3MsXG5cbiAgLyoqXG4gICAqIGFkZHMgYSBuZXcgc3ltYm9sIHRvIGJ1aWx0aW4gc3ltYm9scyB0YWJsZVxuICAgKi9cbiAgX19kZWZpbmVTeW1ib2w6IGRlZmluZVN5bWJvbCxcblxuICAvKipcbiAgICogYWRkcyBhIG5ldyBtYWNybyB0byBidWlsdGluIG1hY3JvIGxpc3RcbiAgICovXG4gIF9fZGVmaW5lTWFjcm86IGRlZmluZU1hY3JvLFxuXG4gIC8qKlxuICAgKiBFeHBvc2UgdGhlIGRvbSB0cmVlIG5vZGUgdHlwZXMsIHdoaWNoIGNhbiBiZSB1c2VmdWwgZm9yIHR5cGUgY2hlY2tpbmcgbm9kZXMuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHB1YmxpYyB1c2UuXG4gICAqIFRoZSBpbnRlcm5hbCB0cmVlIHJlcHJlc2VudGF0aW9uIGlzIHVuc3RhYmxlIGFuZCBpcyB2ZXJ5IGxpa2VseVxuICAgKiB0byBjaGFuZ2UuIFVzZSBhdCB5b3VyIG93biByaXNrLlxuICAgKi9cbiAgX19kb21UcmVlOiB7XG4gICAgU3BhbjogZG9tVHJlZV9TcGFuLFxuICAgIEFuY2hvcjogZG9tVHJlZV9BbmNob3IsXG4gICAgU3ltYm9sTm9kZTogZG9tVHJlZV9TeW1ib2xOb2RlLFxuICAgIFN2Z05vZGU6IFN2Z05vZGUsXG4gICAgUGF0aE5vZGU6IGRvbVRyZWVfUGF0aE5vZGUsXG4gICAgTGluZU5vZGU6IExpbmVOb2RlXG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9rYXRleC53ZWJwYWNrLmpzXG4vKipcbiAqIFRoaXMgaXMgdGhlIHdlYnBhY2sgZW50cnkgcG9pbnQgZm9yIEthVGVYLiBBcyBFQ01BU2NyaXB0LCBmbG93WzFdIGFuZCBqZXN0WzJdXG4gKiBkb2Vzbid0IHN1cHBvcnQgQ1NTIG1vZHVsZXMgbmF0aXZlbHksIGEgc2VwYXJhdGUgZW50cnkgcG9pbnQgaXMgdXNlZCBhbmRcbiAqIGl0IGlzIG5vdCBmbG93dHlwZWQuXG4gKlxuICogWzFdIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2xhbWJkYWhhbmRzL2QxOWUwZGE5NjI4NWI3NDlmMGVmXG4gKiBbMl0gaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vamVzdC9kb2NzL2VuL3dlYnBhY2suaHRtbFxuICovXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIga2F0ZXhfd2VicGFjayA9IF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKGthdGV4XzApO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSlbXCJkZWZhdWx0XCJdO1xufSk7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBpc0FycmF5ID0gZnVuY3Rpb24gaXNBcnJheShhcnIpIHtcblx0aWYgKHR5cGVvZiBBcnJheS5pc0FycmF5ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyKTtcblx0fVxuXG5cdHJldHVybiB0b1N0ci5jYWxsKGFycikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuXG52YXIgaXNQbGFpbk9iamVjdCA9IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG5cdGlmICghb2JqIHx8IHRvU3RyLmNhbGwob2JqKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHR2YXIgaGFzT3duQ29uc3RydWN0b3IgPSBoYXNPd24uY2FsbChvYmosICdjb25zdHJ1Y3RvcicpO1xuXHR2YXIgaGFzSXNQcm90b3R5cGVPZiA9IG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IucHJvdG90eXBlICYmIGhhc093bi5jYWxsKG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsICdpc1Byb3RvdHlwZU9mJyk7XG5cdC8vIE5vdCBvd24gY29uc3RydWN0b3IgcHJvcGVydHkgbXVzdCBiZSBPYmplY3Rcblx0aWYgKG9iai5jb25zdHJ1Y3RvciAmJiAhaGFzT3duQ29uc3RydWN0b3IgJiYgIWhhc0lzUHJvdG90eXBlT2YpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBPd24gcHJvcGVydGllcyBhcmUgZW51bWVyYXRlZCBmaXJzdGx5LCBzbyB0byBzcGVlZCB1cCxcblx0Ly8gaWYgbGFzdCBvbmUgaXMgb3duLCB0aGVuIGFsbCBwcm9wZXJ0aWVzIGFyZSBvd24uXG5cdHZhciBrZXk7XG5cdGZvciAoa2V5IGluIG9iaikgeyAvKiovIH1cblxuXHRyZXR1cm4gdHlwZW9mIGtleSA9PT0gJ3VuZGVmaW5lZCcgfHwgaGFzT3duLmNhbGwob2JqLCBrZXkpO1xufTtcblxuLy8gSWYgbmFtZSBpcyAnX19wcm90b19fJywgYW5kIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBpcyBhdmFpbGFibGUsIGRlZmluZSBfX3Byb3RvX18gYXMgYW4gb3duIHByb3BlcnR5IG9uIHRhcmdldFxudmFyIHNldFByb3BlcnR5ID0gZnVuY3Rpb24gc2V0UHJvcGVydHkodGFyZ2V0LCBvcHRpb25zKSB7XG5cdGlmIChkZWZpbmVQcm9wZXJ0eSAmJiBvcHRpb25zLm5hbWUgPT09ICdfX3Byb3RvX18nKSB7XG5cdFx0ZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBvcHRpb25zLm5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHR2YWx1ZTogb3B0aW9ucy5uZXdWYWx1ZSxcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0dGFyZ2V0W29wdGlvbnMubmFtZV0gPSBvcHRpb25zLm5ld1ZhbHVlO1xuXHR9XG59O1xuXG4vLyBSZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgX19wcm90b19fIGlmICdfX3Byb3RvX18nIGlzIG5vdCBhbiBvd24gcHJvcGVydHlcbnZhciBnZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uIGdldFByb3BlcnR5KG9iaiwgbmFtZSkge1xuXHRpZiAobmFtZSA9PT0gJ19fcHJvdG9fXycpIHtcblx0XHRpZiAoIWhhc093bi5jYWxsKG9iaiwgbmFtZSkpIHtcblx0XHRcdHJldHVybiB2b2lkIDA7XG5cdFx0fSBlbHNlIGlmIChnT1BEKSB7XG5cdFx0XHQvLyBJbiBlYXJseSB2ZXJzaW9ucyBvZiBub2RlLCBvYmpbJ19fcHJvdG9fXyddIGlzIGJ1Z2d5IHdoZW4gb2JqIGhhc1xuXHRcdFx0Ly8gX19wcm90b19fIGFzIGFuIG93biBwcm9wZXJ0eS4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHdvcmtzLlxuXHRcdFx0cmV0dXJuIGdPUEQob2JqLCBuYW1lKS52YWx1ZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb2JqW25hbWVdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBleHRlbmQoKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZTtcblx0dmFyIHRhcmdldCA9IGFyZ3VtZW50c1swXTtcblx0dmFyIGkgPSAxO1xuXHR2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcblx0dmFyIGRlZXAgPSBmYWxzZTtcblxuXHQvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uXG5cdGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnYm9vbGVhbicpIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sxXSB8fCB7fTtcblx0XHQvLyBza2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0aSA9IDI7XG5cdH1cblx0aWYgKHRhcmdldCA9PSBudWxsIHx8ICh0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nKSkge1xuXHRcdHRhcmdldCA9IHt9O1xuXHR9XG5cblx0Zm9yICg7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdG9wdGlvbnMgPSBhcmd1bWVudHNbaV07XG5cdFx0Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuXHRcdGlmIChvcHRpb25zICE9IG51bGwpIHtcblx0XHRcdC8vIEV4dGVuZCB0aGUgYmFzZSBvYmplY3Rcblx0XHRcdGZvciAobmFtZSBpbiBvcHRpb25zKSB7XG5cdFx0XHRcdHNyYyA9IGdldFByb3BlcnR5KHRhcmdldCwgbmFtZSk7XG5cdFx0XHRcdGNvcHkgPSBnZXRQcm9wZXJ0eShvcHRpb25zLCBuYW1lKTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICh0YXJnZXQgIT09IGNvcHkpIHtcblx0XHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0XHRpZiAoZGVlcCAmJiBjb3B5ICYmIChpc1BsYWluT2JqZWN0KGNvcHkpIHx8IChjb3B5SXNBcnJheSA9IGlzQXJyYXkoY29weSkpKSkge1xuXHRcdFx0XHRcdFx0aWYgKGNvcHlJc0FycmF5KSB7XG5cdFx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGlzQXJyYXkoc3JjKSA/IHNyYyA6IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgaXNQbGFpbk9iamVjdChzcmMpID8gc3JjIDoge307XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdFx0c2V0UHJvcGVydHkodGFyZ2V0LCB7IG5hbWU6IG5hbWUsIG5ld1ZhbHVlOiBleHRlbmQoZGVlcCwgY2xvbmUsIGNvcHkpIH0pO1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGNvcHkgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdFx0XHRzZXRQcm9wZXJ0eSh0YXJnZXQsIHsgbmFtZTogbmFtZSwgbmV3VmFsdWU6IGNvcHkgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3Rcblx0cmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBiYWlsXG5cbmZ1bmN0aW9uIGJhaWwoZXJyKSB7XG4gIGlmIChlcnIpIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ2lmeVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHtcbiAgLy8gTm90aGluZy5cbiAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBOb2RlLlxuICBpZiAob3duLmNhbGwodmFsdWUsICdwb3NpdGlvbicpIHx8IG93bi5jYWxsKHZhbHVlLCAndHlwZScpKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uKHZhbHVlLnBvc2l0aW9uKVxuICB9XG5cbiAgLy8gUG9zaXRpb24uXG4gIGlmIChvd24uY2FsbCh2YWx1ZSwgJ3N0YXJ0JykgfHwgb3duLmNhbGwodmFsdWUsICdlbmQnKSkge1xuICAgIHJldHVybiBwb3NpdGlvbih2YWx1ZSlcbiAgfVxuXG4gIC8vIFBvaW50LlxuICBpZiAob3duLmNhbGwodmFsdWUsICdsaW5lJykgfHwgb3duLmNhbGwodmFsdWUsICdjb2x1bW4nKSkge1xuICAgIHJldHVybiBwb2ludCh2YWx1ZSlcbiAgfVxuXG4gIC8vID9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIHBvaW50KHBvaW50KSB7XG4gIGlmICghcG9pbnQgfHwgdHlwZW9mIHBvaW50ICE9PSAnb2JqZWN0Jykge1xuICAgIHBvaW50ID0ge31cbiAgfVxuXG4gIHJldHVybiBpbmRleChwb2ludC5saW5lKSArICc6JyArIGluZGV4KHBvaW50LmNvbHVtbilcbn1cblxuZnVuY3Rpb24gcG9zaXRpb24ocG9zKSB7XG4gIGlmICghcG9zIHx8IHR5cGVvZiBwb3MgIT09ICdvYmplY3QnKSB7XG4gICAgcG9zID0ge31cbiAgfVxuXG4gIHJldHVybiBwb2ludChwb3Muc3RhcnQpICsgJy0nICsgcG9pbnQocG9zLmVuZClcbn1cblxuZnVuY3Rpb24gaW5kZXgodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IDFcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgc3RyaW5naWZ5ID0gcmVxdWlyZSgndW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZNZXNzYWdlXG5cbi8vIEluaGVyaXQgZnJvbSBgRXJyb3IjYC5cbmZ1bmN0aW9uIFZNZXNzYWdlUHJvdG90eXBlKCkge31cblZNZXNzYWdlUHJvdG90eXBlLnByb3RvdHlwZSA9IEVycm9yLnByb3RvdHlwZVxuVk1lc3NhZ2UucHJvdG90eXBlID0gbmV3IFZNZXNzYWdlUHJvdG90eXBlKClcblxuLy8gTWVzc2FnZSBwcm9wZXJ0aWVzLlxudmFyIHByb3RvID0gVk1lc3NhZ2UucHJvdG90eXBlXG5cbnByb3RvLmZpbGUgPSAnJ1xucHJvdG8ubmFtZSA9ICcnXG5wcm90by5yZWFzb24gPSAnJ1xucHJvdG8ubWVzc2FnZSA9ICcnXG5wcm90by5zdGFjayA9ICcnXG5wcm90by5mYXRhbCA9IG51bGxcbnByb3RvLmNvbHVtbiA9IG51bGxcbnByb3RvLmxpbmUgPSBudWxsXG5cbi8vIENvbnN0cnVjdCBhIG5ldyBWTWVzc2FnZS5cbi8vXG4vLyBOb3RlOiBXZSBjYW5ub3QgaW52b2tlIGBFcnJvcmAgb24gdGhlIGNyZWF0ZWQgY29udGV4dCwgYXMgdGhhdCBhZGRzIHJlYWRvbmx5XG4vLyBgbGluZWAgYW5kIGBjb2x1bW5gIGF0dHJpYnV0ZXMgb24gU2FmYXJpIDksIHRodXMgdGhyb3dpbmcgYW5kIGZhaWxpbmcgdGhlXG4vLyBkYXRhLlxuZnVuY3Rpb24gVk1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbiwgb3JpZ2luKSB7XG4gIHZhciBwYXJ0c1xuICB2YXIgcmFuZ2VcbiAgdmFyIGxvY2F0aW9uXG5cbiAgaWYgKHR5cGVvZiBwb3NpdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICBvcmlnaW4gPSBwb3NpdGlvblxuICAgIHBvc2l0aW9uID0gbnVsbFxuICB9XG5cbiAgcGFydHMgPSBwYXJzZU9yaWdpbihvcmlnaW4pXG4gIHJhbmdlID0gc3RyaW5naWZ5KHBvc2l0aW9uKSB8fCAnMToxJ1xuXG4gIGxvY2F0aW9uID0ge1xuICAgIHN0YXJ0OiB7bGluZTogbnVsbCwgY29sdW1uOiBudWxsfSxcbiAgICBlbmQ6IHtsaW5lOiBudWxsLCBjb2x1bW46IG51bGx9XG4gIH1cblxuICAvLyBOb2RlLlxuICBpZiAocG9zaXRpb24gJiYgcG9zaXRpb24ucG9zaXRpb24pIHtcbiAgICBwb3NpdGlvbiA9IHBvc2l0aW9uLnBvc2l0aW9uXG4gIH1cblxuICBpZiAocG9zaXRpb24pIHtcbiAgICAvLyBQb3NpdGlvbi5cbiAgICBpZiAocG9zaXRpb24uc3RhcnQpIHtcbiAgICAgIGxvY2F0aW9uID0gcG9zaXRpb25cbiAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24uc3RhcnRcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUG9pbnQuXG4gICAgICBsb2NhdGlvbi5zdGFydCA9IHBvc2l0aW9uXG4gICAgfVxuICB9XG5cbiAgaWYgKHJlYXNvbi5zdGFjaykge1xuICAgIHRoaXMuc3RhY2sgPSByZWFzb24uc3RhY2tcbiAgICByZWFzb24gPSByZWFzb24ubWVzc2FnZVxuICB9XG5cbiAgdGhpcy5tZXNzYWdlID0gcmVhc29uXG4gIHRoaXMubmFtZSA9IHJhbmdlXG4gIHRoaXMucmVhc29uID0gcmVhc29uXG4gIHRoaXMubGluZSA9IHBvc2l0aW9uID8gcG9zaXRpb24ubGluZSA6IG51bGxcbiAgdGhpcy5jb2x1bW4gPSBwb3NpdGlvbiA/IHBvc2l0aW9uLmNvbHVtbiA6IG51bGxcbiAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uXG4gIHRoaXMuc291cmNlID0gcGFydHNbMF1cbiAgdGhpcy5ydWxlSWQgPSBwYXJ0c1sxXVxufVxuXG5mdW5jdGlvbiBwYXJzZU9yaWdpbihvcmlnaW4pIHtcbiAgdmFyIHJlc3VsdCA9IFtudWxsLCBudWxsXVxuICB2YXIgaW5kZXhcblxuICBpZiAodHlwZW9mIG9yaWdpbiA9PT0gJ3N0cmluZycpIHtcbiAgICBpbmRleCA9IG9yaWdpbi5pbmRleE9mKCc6JylcblxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJlc3VsdFsxXSA9IG9yaWdpblxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbMF0gPSBvcmlnaW4uc2xpY2UoMCwgaW5kZXgpXG4gICAgICByZXN1bHRbMV0gPSBvcmlnaW4uc2xpY2UoaW5kZXggKyAxKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsImV4cG9ydCBkZWZhdWx0ICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDpcbiAgICAgICAgICAgIHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6XG4gICAgICAgICAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pO1xuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG4vLyBiYXNlZCBvZmYgaHR0cHM6Ly9naXRodWIuY29tL2RlZnVuY3R6b21iaWUvbm9kZS1wcm9jZXNzL2Jsb2IvbWFzdGVyL2Jyb3dzZXIuanNcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG52YXIgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbmlmICh0eXBlb2YgZ2xvYmFsLnNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbn1cbmlmICh0eXBlb2YgZ2xvYmFsLmNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbn1cblxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5leHRUaWNrKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59XG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xuZXhwb3J0IHZhciB0aXRsZSA9ICdicm93c2VyJztcbmV4cG9ydCB2YXIgcGxhdGZvcm0gPSAnYnJvd3Nlcic7XG5leHBvcnQgdmFyIGJyb3dzZXIgPSB0cnVlO1xuZXhwb3J0IHZhciBlbnYgPSB7fTtcbmV4cG9ydCB2YXIgYXJndiA9IFtdO1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5leHBvcnQgdmFyIHZlcnNpb25zID0ge307XG5leHBvcnQgdmFyIHJlbGVhc2UgPSB7fTtcbmV4cG9ydCB2YXIgY29uZmlnID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5leHBvcnQgdmFyIG9uID0gbm9vcDtcbmV4cG9ydCB2YXIgYWRkTGlzdGVuZXIgPSBub29wO1xuZXhwb3J0IHZhciBvbmNlID0gbm9vcDtcbmV4cG9ydCB2YXIgb2ZmID0gbm9vcDtcbmV4cG9ydCB2YXIgcmVtb3ZlTGlzdGVuZXIgPSBub29wO1xuZXhwb3J0IHZhciByZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xuZXhwb3J0IHZhciBlbWl0ID0gbm9vcDtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmcobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN3ZCAoKSB7IHJldHVybiAnLycgfVxuZXhwb3J0IGZ1bmN0aW9uIGNoZGlyIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiB1bWFzaygpIHsgcmV0dXJuIDA7IH1cblxuLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20va3VtYXZpcy9icm93c2VyLXByb2Nlc3MtaHJ0aW1lL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG52YXIgcGVyZm9ybWFuY2UgPSBnbG9iYWwucGVyZm9ybWFuY2UgfHwge31cbnZhciBwZXJmb3JtYW5jZU5vdyA9XG4gIHBlcmZvcm1hbmNlLm5vdyAgICAgICAgfHxcbiAgcGVyZm9ybWFuY2UubW96Tm93ICAgICB8fFxuICBwZXJmb3JtYW5jZS5tc05vdyAgICAgIHx8XG4gIHBlcmZvcm1hbmNlLm9Ob3cgICAgICAgfHxcbiAgcGVyZm9ybWFuY2Uud2Via2l0Tm93ICB8fFxuICBmdW5jdGlvbigpeyByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSB9XG5cbi8vIGdlbmVyYXRlIHRpbWVzdGFtcCBvciBkZWx0YVxuLy8gc2VlIGh0dHA6Ly9ub2RlanMub3JnL2FwaS9wcm9jZXNzLmh0bWwjcHJvY2Vzc19wcm9jZXNzX2hydGltZVxuZXhwb3J0IGZ1bmN0aW9uIGhydGltZShwcmV2aW91c1RpbWVzdGFtcCl7XG4gIHZhciBjbG9ja3RpbWUgPSBwZXJmb3JtYW5jZU5vdy5jYWxsKHBlcmZvcm1hbmNlKSoxZS0zXG4gIHZhciBzZWNvbmRzID0gTWF0aC5mbG9vcihjbG9ja3RpbWUpXG4gIHZhciBuYW5vc2Vjb25kcyA9IE1hdGguZmxvb3IoKGNsb2NrdGltZSUxKSoxZTkpXG4gIGlmIChwcmV2aW91c1RpbWVzdGFtcCkge1xuICAgIHNlY29uZHMgPSBzZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMF1cbiAgICBuYW5vc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMV1cbiAgICBpZiAobmFub3NlY29uZHM8MCkge1xuICAgICAgc2Vjb25kcy0tXG4gICAgICBuYW5vc2Vjb25kcyArPSAxZTlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtzZWNvbmRzLG5hbm9zZWNvbmRzXVxufVxuXG52YXIgc3RhcnRUaW1lID0gbmV3IERhdGUoKTtcbmV4cG9ydCBmdW5jdGlvbiB1cHRpbWUoKSB7XG4gIHZhciBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gIHZhciBkaWYgPSBjdXJyZW50VGltZSAtIHN0YXJ0VGltZTtcbiAgcmV0dXJuIGRpZiAvIDEwMDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmV4dFRpY2s6IG5leHRUaWNrLFxuICB0aXRsZTogdGl0bGUsXG4gIGJyb3dzZXI6IGJyb3dzZXIsXG4gIGVudjogZW52LFxuICBhcmd2OiBhcmd2LFxuICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICB2ZXJzaW9uczogdmVyc2lvbnMsXG4gIG9uOiBvbixcbiAgYWRkTGlzdGVuZXI6IGFkZExpc3RlbmVyLFxuICBvbmNlOiBvbmNlLFxuICBvZmY6IG9mZixcbiAgcmVtb3ZlTGlzdGVuZXI6IHJlbW92ZUxpc3RlbmVyLFxuICByZW1vdmVBbGxMaXN0ZW5lcnM6IHJlbW92ZUFsbExpc3RlbmVycyxcbiAgZW1pdDogZW1pdCxcbiAgYmluZGluZzogYmluZGluZyxcbiAgY3dkOiBjd2QsXG4gIGNoZGlyOiBjaGRpcixcbiAgdW1hc2s6IHVtYXNrLFxuICBocnRpbWU6IGhydGltZSxcbiAgcGxhdGZvcm06IHBsYXRmb3JtLFxuICByZWxlYXNlOiByZWxlYXNlLFxuICBjb25maWc6IGNvbmZpZyxcbiAgdXB0aW1lOiB1cHRpbWVcbn07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gcmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlXG4vLyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6XFwpIGluIHRoZSBhcnJheVxuLy8gKHNvIGFsc28gbm8gbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcyAtIGl0IGRvZXMgbm90IGRpc3Rpbmd1aXNoXG4vLyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMpXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheShwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHtcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxhc3QgPSBwYXJ0c1tpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzO1xufVxuXG4vLyBTcGxpdCBhIGZpbGVuYW1lIGludG8gW3Jvb3QsIGRpciwgYmFzZW5hbWUsIGV4dF0sIHVuaXggdmVyc2lvblxuLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy5cbnZhciBzcGxpdFBhdGhSZSA9XG4gICAgL14oXFwvP3wpKFtcXHNcXFNdKj8pKCg/OlxcLnsxLDJ9fFteXFwvXSs/fCkoXFwuW14uXFwvXSp8KSkoPzpbXFwvXSopJC87XG52YXIgc3BsaXRQYXRoID0gZnVuY3Rpb24oZmlsZW5hbWUpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aFJlLmV4ZWMoZmlsZW5hbWUpLnNsaWNlKDEpO1xufTtcblxuLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoKSB7XG4gIHZhciByZXNvbHZlZFBhdGggPSAnJyxcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIHZhciBwYXRoID0gKGkgPj0gMCkgPyBhcmd1bWVudHNbaV0gOiAnLyc7XG5cbiAgICAvLyBTa2lwIGVtcHR5IGFuZCBpbnZhbGlkIGVudHJpZXNcbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH0gZWxzZSBpZiAoIXBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IHBhdGguY2hhckF0KDApID09PSAnLyc7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gIC8vIGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocmVzb2x2ZWRQYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICByZXR1cm4gKChyZXNvbHZlZEFic29sdXRlID8gJy8nIDogJycpICsgcmVzb2x2ZWRQYXRoKSB8fCAnLic7XG59O1xuXG4vLyBwYXRoLm5vcm1hbGl6ZShwYXRoKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoKSB7XG4gIHZhciBpc1BhdGhBYnNvbHV0ZSA9IGlzQWJzb2x1dGUocGF0aCksXG4gICAgICB0cmFpbGluZ1NsYXNoID0gc3Vic3RyKHBhdGgsIC0xKSA9PT0gJy8nO1xuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICBwYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHBhdGguc3BsaXQoJy8nKSwgZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiAhIXA7XG4gIH0pLCAhaXNQYXRoQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICBpZiAoIXBhdGggJiYgIWlzUGF0aEFic29sdXRlKSB7XG4gICAgcGF0aCA9ICcuJztcbiAgfVxuICBpZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7XG4gICAgcGF0aCArPSAnLyc7XG4gIH1cblxuICByZXR1cm4gKGlzUGF0aEFic29sdXRlID8gJy8nIDogJycpICsgcGF0aDtcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGguY2hhckF0KDApID09PSAnLyc7XG59XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydCBmdW5jdGlvbiBqb2luKCkge1xuICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICByZXR1cm4gbm9ybWFsaXplKGZpbHRlcihwYXRocywgZnVuY3Rpb24ocCwgaW5kZXgpIHtcbiAgICBpZiAodHlwZW9mIHAgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5qb2luIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH1cbiAgICByZXR1cm4gcDtcbiAgfSkuam9pbignLycpKTtcbn1cblxuXG4vLyBwYXRoLnJlbGF0aXZlKGZyb20sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGF0aXZlKGZyb20sIHRvKSB7XG4gIGZyb20gPSByZXNvbHZlKGZyb20pLnN1YnN0cigxKTtcbiAgdG8gPSByZXNvbHZlKHRvKS5zdWJzdHIoMSk7XG5cbiAgZnVuY3Rpb24gdHJpbShhcnIpIHtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0KyspIHtcbiAgICAgIGlmIChhcnJbc3RhcnRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIGVuZCA9IGFyci5sZW5ndGggLSAxO1xuICAgIGZvciAoOyBlbmQgPj0gMDsgZW5kLS0pIHtcbiAgICAgIGlmIChhcnJbZW5kXSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA+IGVuZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7XG4gIH1cblxuICB2YXIgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KCcvJykpO1xuICB2YXIgdG9QYXJ0cyA9IHRyaW0odG8uc3BsaXQoJy8nKSk7XG5cbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsIHRvUGFydHMubGVuZ3RoKTtcbiAgdmFyIHNhbWVQYXJ0c0xlbmd0aCA9IGxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmIChmcm9tUGFydHNbaV0gIT09IHRvUGFydHNbaV0pIHtcbiAgICAgIHNhbWVQYXJ0c0xlbmd0aCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgb3V0cHV0UGFydHMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IHNhbWVQYXJ0c0xlbmd0aDsgaSA8IGZyb21QYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFBhcnRzLnB1c2goJy4uJyk7XG4gIH1cblxuICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpO1xuXG4gIHJldHVybiBvdXRwdXRQYXJ0cy5qb2luKCcvJyk7XG59XG5cbmV4cG9ydCB2YXIgc2VwID0gJy8nO1xuZXhwb3J0IHZhciBkZWxpbWl0ZXIgPSAnOic7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHtcbiAgdmFyIHJlc3VsdCA9IHNwbGl0UGF0aChwYXRoKSxcbiAgICAgIHJvb3QgPSByZXN1bHRbMF0sXG4gICAgICBkaXIgPSByZXN1bHRbMV07XG5cbiAgaWYgKCFyb290ICYmICFkaXIpIHtcbiAgICAvLyBObyBkaXJuYW1lIHdoYXRzb2V2ZXJcbiAgICByZXR1cm4gJy4nO1xuICB9XG5cbiAgaWYgKGRpcikge1xuICAgIC8vIEl0IGhhcyBhIGRpcm5hbWUsIHN0cmlwIHRyYWlsaW5nIHNsYXNoXG4gICAgZGlyID0gZGlyLnN1YnN0cigwLCBkaXIubGVuZ3RoIC0gMSk7XG4gIH1cblxuICByZXR1cm4gcm9vdCArIGRpcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhc2VuYW1lKHBhdGgsIGV4dCkge1xuICB2YXIgZiA9IHNwbGl0UGF0aChwYXRoKVsyXTtcbiAgLy8gVE9ETzogbWFrZSB0aGlzIGNvbXBhcmlzb24gY2FzZS1pbnNlbnNpdGl2ZSBvbiB3aW5kb3dzP1xuICBpZiAoZXh0ICYmIGYuc3Vic3RyKC0xICogZXh0Lmxlbmd0aCkgPT09IGV4dCkge1xuICAgIGYgPSBmLnN1YnN0cigwLCBmLmxlbmd0aCAtIGV4dC5sZW5ndGgpO1xuICB9XG4gIHJldHVybiBmO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRuYW1lKHBhdGgpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aChwYXRoKVszXTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZXh0bmFtZTogZXh0bmFtZSxcbiAgYmFzZW5hbWU6IGJhc2VuYW1lLFxuICBkaXJuYW1lOiBkaXJuYW1lLFxuICBzZXA6IHNlcCxcbiAgZGVsaW1pdGVyOiBkZWxpbWl0ZXIsXG4gIHJlbGF0aXZlOiByZWxhdGl2ZSxcbiAgam9pbjogam9pbixcbiAgaXNBYnNvbHV0ZTogaXNBYnNvbHV0ZSxcbiAgbm9ybWFsaXplOiBub3JtYWxpemUsXG4gIHJlc29sdmU6IHJlc29sdmVcbn07XG5mdW5jdGlvbiBmaWx0ZXIgKHhzLCBmKSB7XG4gICAgaWYgKHhzLmZpbHRlcikgcmV0dXJuIHhzLmZpbHRlcihmKTtcbiAgICB2YXIgcmVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZih4c1tpXSwgaSwgeHMpKSByZXMucHVzaCh4c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbi8vIFN0cmluZy5wcm90b3R5cGUuc3Vic3RyIC0gbmVnYXRpdmUgaW5kZXggZG9uJ3Qgd29yayBpbiBJRThcbnZhciBzdWJzdHIgPSAnYWInLnN1YnN0cigtMSkgPT09ICdiJyA/XG4gICAgZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikgeyByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKSB9IDpcbiAgICBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7XG4gICAgICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gc3RyLmxlbmd0aCArIHN0YXJ0O1xuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKTtcbiAgICB9XG47XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG5mdW5jdGlvbiByZXBsYWNlRXh0KG5wYXRoLCBleHQpIHtcbiAgaWYgKHR5cGVvZiBucGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnBhdGg7XG4gIH1cblxuICBpZiAobnBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG5wYXRoO1xuICB9XG5cbiAgdmFyIG5GaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUobnBhdGgsIHBhdGguZXh0bmFtZShucGF0aCkpICsgZXh0O1xuICByZXR1cm4gcGF0aC5qb2luKHBhdGguZGlybmFtZShucGF0aCksIG5GaWxlTmFtZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVwbGFjZUV4dDtcbiIsIi8qIVxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEJ1ZmZlclxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IgIT0gbnVsbCAmJlxuICAgIHR5cGVvZiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iailcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxudmFyIHJlcGxhY2UgPSByZXF1aXJlKCdyZXBsYWNlLWV4dCcpXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnaXMtYnVmZmVyJylcblxubW9kdWxlLmV4cG9ydHMgPSBWRmlsZVxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcbnZhciBwcm90byA9IFZGaWxlLnByb3RvdHlwZVxuXG4vLyBPcmRlciBvZiBzZXR0aW5nIChsZWFzdCBzcGVjaWZpYyB0byBtb3N0KSwgd2UgbmVlZCB0aGlzIGJlY2F1c2Ugb3RoZXJ3aXNlXG4vLyBge3N0ZW06ICdhJywgcGF0aDogJ34vYi5qcyd9YCB3b3VsZCB0aHJvdywgYXMgYSBwYXRoIGlzIG5lZWRlZCBiZWZvcmUgYVxuLy8gc3RlbSBjYW4gYmUgc2V0LlxudmFyIG9yZGVyID0gWydoaXN0b3J5JywgJ3BhdGgnLCAnYmFzZW5hbWUnLCAnc3RlbScsICdleHRuYW1lJywgJ2Rpcm5hbWUnXVxuXG5wcm90by50b1N0cmluZyA9IHRvU3RyaW5nXG5cbi8vIEFjY2VzcyBmdWxsIHBhdGggKGB+L2luZGV4Lm1pbi5qc2ApLlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAncGF0aCcsIHtnZXQ6IGdldFBhdGgsIHNldDogc2V0UGF0aH0pXG5cbi8vIEFjY2VzcyBwYXJlbnQgcGF0aCAoYH5gKS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgJ2Rpcm5hbWUnLCB7Z2V0OiBnZXREaXJuYW1lLCBzZXQ6IHNldERpcm5hbWV9KVxuXG4vLyBBY2Nlc3MgYmFzZW5hbWUgKGBpbmRleC5taW4uanNgKS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgJ2Jhc2VuYW1lJywge2dldDogZ2V0QmFzZW5hbWUsIHNldDogc2V0QmFzZW5hbWV9KVxuXG4vLyBBY2Nlc3MgZXh0bmFtZSAoYC5qc2ApLlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAnZXh0bmFtZScsIHtnZXQ6IGdldEV4dG5hbWUsIHNldDogc2V0RXh0bmFtZX0pXG5cbi8vIEFjY2VzcyBzdGVtIChgaW5kZXgubWluYCkuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sICdzdGVtJywge2dldDogZ2V0U3RlbSwgc2V0OiBzZXRTdGVtfSlcblxuLy8gQ29uc3RydWN0IGEgbmV3IGZpbGUuXG5mdW5jdGlvbiBWRmlsZShvcHRpb25zKSB7XG4gIHZhciBwcm9wXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnIHx8IGJ1ZmZlcihvcHRpb25zKSkge1xuICAgIG9wdGlvbnMgPSB7Y29udGVudHM6IG9wdGlvbnN9XG4gIH0gZWxzZSBpZiAoJ21lc3NhZ2UnIGluIG9wdGlvbnMgJiYgJ21lc3NhZ2VzJyBpbiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgfVxuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBWRmlsZSkpIHtcbiAgICByZXR1cm4gbmV3IFZGaWxlKG9wdGlvbnMpXG4gIH1cblxuICB0aGlzLmRhdGEgPSB7fVxuICB0aGlzLm1lc3NhZ2VzID0gW11cbiAgdGhpcy5oaXN0b3J5ID0gW11cbiAgdGhpcy5jd2QgPSBwcm9jZXNzLmN3ZCgpXG5cbiAgLy8gU2V0IHBhdGggcmVsYXRlZCBwcm9wZXJ0aWVzIGluIHRoZSBjb3JyZWN0IG9yZGVyLlxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IG9yZGVyLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcHJvcCA9IG9yZGVyW2luZGV4XVxuXG4gICAgaWYgKG93bi5jYWxsKG9wdGlvbnMsIHByb3ApKSB7XG4gICAgICB0aGlzW3Byb3BdID0gb3B0aW9uc1twcm9wXVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBub24tcGF0aCByZWxhdGVkIHByb3BlcnRpZXMuXG4gIGZvciAocHJvcCBpbiBvcHRpb25zKSB7XG4gICAgaWYgKG9yZGVyLmluZGV4T2YocHJvcCkgPT09IC0xKSB7XG4gICAgICB0aGlzW3Byb3BdID0gb3B0aW9uc1twcm9wXVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQYXRoKCkge1xuICByZXR1cm4gdGhpcy5oaXN0b3J5W3RoaXMuaGlzdG9yeS5sZW5ndGggLSAxXVxufVxuXG5mdW5jdGlvbiBzZXRQYXRoKHBhdGgpIHtcbiAgYXNzZXJ0Tm9uRW1wdHkocGF0aCwgJ3BhdGgnKVxuXG4gIGlmIChwYXRoICE9PSB0aGlzLnBhdGgpIHtcbiAgICB0aGlzLmhpc3RvcnkucHVzaChwYXRoKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldERpcm5hbWUoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguZGlybmFtZSh0aGlzLnBhdGgpIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNldERpcm5hbWUoZGlybmFtZSkge1xuICBhc3NlcnRQYXRoKHRoaXMucGF0aCwgJ2Rpcm5hbWUnKVxuICB0aGlzLnBhdGggPSBwYXRoLmpvaW4oZGlybmFtZSB8fCAnJywgdGhpcy5iYXNlbmFtZSlcbn1cblxuZnVuY3Rpb24gZ2V0QmFzZW5hbWUoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguYmFzZW5hbWUodGhpcy5wYXRoKSA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBzZXRCYXNlbmFtZShiYXNlbmFtZSkge1xuICBhc3NlcnROb25FbXB0eShiYXNlbmFtZSwgJ2Jhc2VuYW1lJylcbiAgYXNzZXJ0UGFydChiYXNlbmFtZSwgJ2Jhc2VuYW1lJylcbiAgdGhpcy5wYXRoID0gcGF0aC5qb2luKHRoaXMuZGlybmFtZSB8fCAnJywgYmFzZW5hbWUpXG59XG5cbmZ1bmN0aW9uIGdldEV4dG5hbWUoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguZXh0bmFtZSh0aGlzLnBhdGgpIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNldEV4dG5hbWUoZXh0bmFtZSkge1xuICB2YXIgZXh0ID0gZXh0bmFtZSB8fCAnJ1xuXG4gIGFzc2VydFBhcnQoZXh0LCAnZXh0bmFtZScpXG4gIGFzc2VydFBhdGgodGhpcy5wYXRoLCAnZXh0bmFtZScpXG5cbiAgaWYgKGV4dCkge1xuICAgIGlmIChleHQuY2hhckF0KDApICE9PSAnLicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYGV4dG5hbWVgIG11c3Qgc3RhcnQgd2l0aCBgLmAnKVxuICAgIH1cblxuICAgIGlmIChleHQuaW5kZXhPZignLicsIDEpICE9PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgZXh0bmFtZWAgY2Fubm90IGNvbnRhaW4gbXVsdGlwbGUgZG90cycpXG4gICAgfVxuICB9XG5cbiAgdGhpcy5wYXRoID0gcmVwbGFjZSh0aGlzLnBhdGgsIGV4dClcbn1cblxuZnVuY3Rpb24gZ2V0U3RlbSgpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnXG4gICAgPyBwYXRoLmJhc2VuYW1lKHRoaXMucGF0aCwgdGhpcy5leHRuYW1lKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNldFN0ZW0oc3RlbSkge1xuICBhc3NlcnROb25FbXB0eShzdGVtLCAnc3RlbScpXG4gIGFzc2VydFBhcnQoc3RlbSwgJ3N0ZW0nKVxuICB0aGlzLnBhdGggPSBwYXRoLmpvaW4odGhpcy5kaXJuYW1lIHx8ICcnLCBzdGVtICsgKHRoaXMuZXh0bmFtZSB8fCAnJykpXG59XG5cbi8vIEdldCB0aGUgdmFsdWUgb2YgdGhlIGZpbGUuXG5mdW5jdGlvbiB0b1N0cmluZyhlbmNvZGluZykge1xuICB2YXIgdmFsdWUgPSB0aGlzLmNvbnRlbnRzIHx8ICcnXG4gIHJldHVybiBidWZmZXIodmFsdWUpID8gdmFsdWUudG9TdHJpbmcoZW5jb2RpbmcpIDogU3RyaW5nKHZhbHVlKVxufVxuXG4vLyBBc3NlcnQgdGhhdCBgcGFydGAgaXMgbm90IGEgcGF0aCAoaS5lLiwgZG9lcyBub3QgY29udGFpbiBgcGF0aC5zZXBgKS5cbmZ1bmN0aW9uIGFzc2VydFBhcnQocGFydCwgbmFtZSkge1xuICBpZiAocGFydC5pbmRleE9mKHBhdGguc2VwKSAhPT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnYCcgKyBuYW1lICsgJ2AgY2Fubm90IGJlIGEgcGF0aDogZGlkIG5vdCBleHBlY3QgYCcgKyBwYXRoLnNlcCArICdgJ1xuICAgIClcbiAgfVxufVxuXG4vLyBBc3NlcnQgdGhhdCBgcGFydGAgaXMgbm90IGVtcHR5LlxuZnVuY3Rpb24gYXNzZXJ0Tm9uRW1wdHkocGFydCwgbmFtZSkge1xuICBpZiAoIXBhcnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2AnICsgbmFtZSArICdgIGNhbm5vdCBiZSBlbXB0eScpXG4gIH1cbn1cblxuLy8gQXNzZXJ0IGBwYXRoYCBleGlzdHMuXG5mdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGgsIG5hbWUpIHtcbiAgaWYgKCFwYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTZXR0aW5nIGAnICsgbmFtZSArICdgIHJlcXVpcmVzIGBwYXRoYCB0byBiZSBzZXQgdG9vJylcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBWTWVzc2FnZSA9IHJlcXVpcmUoJ3ZmaWxlLW1lc3NhZ2UnKVxudmFyIFZGaWxlID0gcmVxdWlyZSgnLi9jb3JlLmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBWRmlsZVxuXG52YXIgcHJvdG8gPSBWRmlsZS5wcm90b3R5cGVcblxucHJvdG8ubWVzc2FnZSA9IG1lc3NhZ2VcbnByb3RvLmluZm8gPSBpbmZvXG5wcm90by5mYWlsID0gZmFpbFxuXG4vLyBDcmVhdGUgYSBtZXNzYWdlIHdpdGggYHJlYXNvbmAgYXQgYHBvc2l0aW9uYC5cbi8vIFdoZW4gYW4gZXJyb3IgaXMgcGFzc2VkIGluIGFzIGByZWFzb25gLCBjb3BpZXMgdGhlIHN0YWNrLlxuZnVuY3Rpb24gbWVzc2FnZShyZWFzb24sIHBvc2l0aW9uLCBvcmlnaW4pIHtcbiAgdmFyIGZpbGVQYXRoID0gdGhpcy5wYXRoXG4gIHZhciBtZXNzYWdlID0gbmV3IFZNZXNzYWdlKHJlYXNvbiwgcG9zaXRpb24sIG9yaWdpbilcblxuICBpZiAoZmlsZVBhdGgpIHtcbiAgICBtZXNzYWdlLm5hbWUgPSBmaWxlUGF0aCArICc6JyArIG1lc3NhZ2UubmFtZVxuICAgIG1lc3NhZ2UuZmlsZSA9IGZpbGVQYXRoXG4gIH1cblxuICBtZXNzYWdlLmZhdGFsID0gZmFsc2VcblxuICB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSlcblxuICByZXR1cm4gbWVzc2FnZVxufVxuXG4vLyBGYWlsOiBjcmVhdGVzIGEgdm1lc3NhZ2UsIGFzc29jaWF0ZXMgaXQgd2l0aCB0aGUgZmlsZSwgYW5kIHRocm93cyBpdC5cbmZ1bmN0aW9uIGZhaWwoKSB7XG4gIHZhciBtZXNzYWdlID0gdGhpcy5tZXNzYWdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcblxuICBtZXNzYWdlLmZhdGFsID0gdHJ1ZVxuXG4gIHRocm93IG1lc3NhZ2Vcbn1cblxuLy8gSW5mbzogY3JlYXRlcyBhIHZtZXNzYWdlLCBhc3NvY2lhdGVzIGl0IHdpdGggdGhlIGZpbGUsIGFuZCBtYXJrcyB0aGUgZmF0YWxpdHlcbi8vIGFzIG51bGwuXG5mdW5jdGlvbiBpbmZvKCkge1xuICB2YXIgbWVzc2FnZSA9IHRoaXMubWVzc2FnZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG5cbiAgbWVzc2FnZS5mYXRhbCA9IG51bGxcblxuICByZXR1cm4gbWVzc2FnZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBzbGljZSA9IFtdLnNsaWNlXG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcFxuXG4vLyBXcmFwIGBmbmAuXG4vLyBDYW4gYmUgc3luYyBvciBhc3luYzsgcmV0dXJuIGEgcHJvbWlzZSwgcmVjZWl2ZSBhIGNvbXBsZXRpb24gaGFuZGxlciwgcmV0dXJuXG4vLyBuZXcgdmFsdWVzIGFuZCBlcnJvcnMuXG5mdW5jdGlvbiB3cmFwKGZuLCBjYWxsYmFjaykge1xuICB2YXIgaW52b2tlZFxuXG4gIHJldHVybiB3cmFwcGVkXG5cbiAgZnVuY3Rpb24gd3JhcHBlZCgpIHtcbiAgICB2YXIgcGFyYW1zID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDApXG4gICAgdmFyIGNhbGxiYWNrID0gZm4ubGVuZ3RoID4gcGFyYW1zLmxlbmd0aFxuICAgIHZhciByZXN1bHRcblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgcGFyYW1zLnB1c2goZG9uZSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gZm4uYXBwbHkobnVsbCwgcGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBXZWxsLCB0aGlzIGlzIHF1aXRlIHRoZSBwaWNrbGUuXG4gICAgICAvLyBgZm5gIHJlY2VpdmVkIGEgY2FsbGJhY2sgYW5kIGludm9rZWQgaXQgKHRodXMgY29udGludWluZyB0aGUgcGlwZWxpbmUpLFxuICAgICAgLy8gYnV0IGxhdGVyIGFsc28gdGhyZXcgYW4gZXJyb3IuXG4gICAgICAvLyBXZeKAmXJlIG5vdCBhYm91dCB0byByZXN0YXJ0IHRoZSBwaXBlbGluZSBhZ2Fpbiwgc28gdGhlIG9ubHkgdGhpbmcgbGVmdFxuICAgICAgLy8gdG8gZG8gaXMgdG8gdGhyb3cgdGhlIHRoaW5nIGluc3RlYWQuXG4gICAgICBpZiAoY2FsbGJhY2sgJiYgaW52b2tlZCkge1xuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZG9uZShlcnJvcilcbiAgICB9XG5cbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXN1bHQudGhlbih0aGVuLCBkb25lKVxuICAgICAgfSBlbHNlIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBkb25lKHJlc3VsdClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoZW4ocmVzdWx0KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEludm9rZSBgbmV4dGAsIG9ubHkgb25jZS5cbiAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICBpZiAoIWludm9rZWQpIHtcbiAgICAgIGludm9rZWQgPSB0cnVlXG5cbiAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cblxuICAvLyBJbnZva2UgYGRvbmVgIHdpdGggb25lIHZhbHVlLlxuICAvLyBUcmFja3MgaWYgYW4gZXJyb3IgaXMgcGFzc2VkLCB0b28uXG4gIGZ1bmN0aW9uIHRoZW4odmFsdWUpIHtcbiAgICBkb25lKG51bGwsIHZhbHVlKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdyYXAgPSByZXF1aXJlKCcuL3dyYXAuanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRyb3VnaFxuXG50cm91Z2gud3JhcCA9IHdyYXBcblxudmFyIHNsaWNlID0gW10uc2xpY2VcblxuLy8gQ3JlYXRlIG5ldyBtaWRkbGV3YXJlLlxuZnVuY3Rpb24gdHJvdWdoKCkge1xuICB2YXIgZm5zID0gW11cbiAgdmFyIG1pZGRsZXdhcmUgPSB7fVxuXG4gIG1pZGRsZXdhcmUucnVuID0gcnVuXG4gIG1pZGRsZXdhcmUudXNlID0gdXNlXG5cbiAgcmV0dXJuIG1pZGRsZXdhcmVcblxuICAvLyBSdW4gYGZuc2AuICBMYXN0IGFyZ3VtZW50IG11c3QgYmUgYSBjb21wbGV0aW9uIGhhbmRsZXIuXG4gIGZ1bmN0aW9uIHJ1bigpIHtcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciBpbnB1dCA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAwLCAtMSlcbiAgICB2YXIgZG9uZSA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV1cblxuICAgIGlmICh0eXBlb2YgZG9uZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiBhcyBsYXN0IGFyZ3VtZW50LCBub3QgJyArIGRvbmUpXG4gICAgfVxuXG4gICAgbmV4dC5hcHBseShudWxsLCBbbnVsbF0uY29uY2F0KGlucHV0KSlcblxuICAgIC8vIFJ1biB0aGUgbmV4dCBgZm5gLCBpZiBhbnkuXG4gICAgZnVuY3Rpb24gbmV4dChlcnIpIHtcbiAgICAgIHZhciBmbiA9IGZuc1srK2luZGV4XVxuICAgICAgdmFyIHBhcmFtcyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKVxuICAgICAgdmFyIHZhbHVlcyA9IHBhcmFtcy5zbGljZSgxKVxuICAgICAgdmFyIGxlbmd0aCA9IGlucHV0Lmxlbmd0aFxuICAgICAgdmFyIHBvcyA9IC0xXG5cbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgZG9uZShlcnIpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDb3B5IG5vbi1udWxseSBpbnB1dCBpbnRvIHZhbHVlcy5cbiAgICAgIHdoaWxlICgrK3BvcyA8IGxlbmd0aCkge1xuICAgICAgICBpZiAodmFsdWVzW3Bvc10gPT09IG51bGwgfHwgdmFsdWVzW3Bvc10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhbHVlc1twb3NdID0gaW5wdXRbcG9zXVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlucHV0ID0gdmFsdWVzXG5cbiAgICAgIC8vIE5leHQgb3IgZG9uZS5cbiAgICAgIGlmIChmbikge1xuICAgICAgICB3cmFwKGZuLCBuZXh0KS5hcHBseShudWxsLCBpbnB1dClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvbmUuYXBwbHkobnVsbCwgW251bGxdLmNvbmNhdChpbnB1dCkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGBmbmAgdG8gdGhlIGxpc3QuXG4gIGZ1bmN0aW9uIHVzZShmbikge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYGZuYCB0byBiZSBhIGZ1bmN0aW9uLCBub3QgJyArIGZuKVxuICAgIH1cblxuICAgIGZucy5wdXNoKGZuKVxuXG4gICAgcmV0dXJuIG1pZGRsZXdhcmVcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlID0+IHtcblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcblx0cmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZih7fSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBleHRlbmQgPSByZXF1aXJlKCdleHRlbmQnKVxudmFyIGJhaWwgPSByZXF1aXJlKCdiYWlsJylcbnZhciB2ZmlsZSA9IHJlcXVpcmUoJ3ZmaWxlJylcbnZhciB0cm91Z2ggPSByZXF1aXJlKCd0cm91Z2gnKVxudmFyIHBsYWluID0gcmVxdWlyZSgnaXMtcGxhaW4tb2JqJylcblxuLy8gRXhwb3NlIGEgZnJvemVuIHByb2Nlc3Nvci5cbm1vZHVsZS5leHBvcnRzID0gdW5pZmllZCgpLmZyZWV6ZSgpXG5cbnZhciBzbGljZSA9IFtdLnNsaWNlXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gUHJvY2VzcyBwaXBlbGluZS5cbnZhciBwaXBlbGluZSA9IHRyb3VnaCgpXG4gIC51c2UocGlwZWxpbmVQYXJzZSlcbiAgLnVzZShwaXBlbGluZVJ1bilcbiAgLnVzZShwaXBlbGluZVN0cmluZ2lmeSlcblxuZnVuY3Rpb24gcGlwZWxpbmVQYXJzZShwLCBjdHgpIHtcbiAgY3R4LnRyZWUgPSBwLnBhcnNlKGN0eC5maWxlKVxufVxuXG5mdW5jdGlvbiBwaXBlbGluZVJ1bihwLCBjdHgsIG5leHQpIHtcbiAgcC5ydW4oY3R4LnRyZWUsIGN0eC5maWxlLCBkb25lKVxuXG4gIGZ1bmN0aW9uIGRvbmUoZXJyLCB0cmVlLCBmaWxlKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgbmV4dChlcnIpXG4gICAgfSBlbHNlIHtcbiAgICAgIGN0eC50cmVlID0gdHJlZVxuICAgICAgY3R4LmZpbGUgPSBmaWxlXG4gICAgICBuZXh0KClcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcGlwZWxpbmVTdHJpbmdpZnkocCwgY3R4KSB7XG4gIGN0eC5maWxlLmNvbnRlbnRzID0gcC5zdHJpbmdpZnkoY3R4LnRyZWUsIGN0eC5maWxlKVxufVxuXG4vLyBGdW5jdGlvbiB0byBjcmVhdGUgdGhlIGZpcnN0IHByb2Nlc3Nvci5cbmZ1bmN0aW9uIHVuaWZpZWQoKSB7XG4gIHZhciBhdHRhY2hlcnMgPSBbXVxuICB2YXIgdHJhbnNmb3JtZXJzID0gdHJvdWdoKClcbiAgdmFyIG5hbWVzcGFjZSA9IHt9XG4gIHZhciBmcm96ZW4gPSBmYWxzZVxuICB2YXIgZnJlZXplSW5kZXggPSAtMVxuXG4gIC8vIERhdGEgbWFuYWdlbWVudC5cbiAgcHJvY2Vzc29yLmRhdGEgPSBkYXRhXG5cbiAgLy8gTG9jay5cbiAgcHJvY2Vzc29yLmZyZWV6ZSA9IGZyZWV6ZVxuXG4gIC8vIFBsdWdpbnMuXG4gIHByb2Nlc3Nvci5hdHRhY2hlcnMgPSBhdHRhY2hlcnNcbiAgcHJvY2Vzc29yLnVzZSA9IHVzZVxuXG4gIC8vIEFQSS5cbiAgcHJvY2Vzc29yLnBhcnNlID0gcGFyc2VcbiAgcHJvY2Vzc29yLnN0cmluZ2lmeSA9IHN0cmluZ2lmeVxuICBwcm9jZXNzb3IucnVuID0gcnVuXG4gIHByb2Nlc3Nvci5ydW5TeW5jID0gcnVuU3luY1xuICBwcm9jZXNzb3IucHJvY2VzcyA9IHByb2Nlc3NcbiAgcHJvY2Vzc29yLnByb2Nlc3NTeW5jID0gcHJvY2Vzc1N5bmNcblxuICAvLyBFeHBvc2UuXG4gIHJldHVybiBwcm9jZXNzb3JcblxuICAvLyBDcmVhdGUgYSBuZXcgcHJvY2Vzc29yIGJhc2VkIG9uIHRoZSBwcm9jZXNzb3IgaW4gdGhlIGN1cnJlbnQgc2NvcGUuXG4gIGZ1bmN0aW9uIHByb2Nlc3NvcigpIHtcbiAgICB2YXIgZGVzdGluYXRpb24gPSB1bmlmaWVkKClcbiAgICB2YXIgbGVuZ3RoID0gYXR0YWNoZXJzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgZGVzdGluYXRpb24udXNlLmFwcGx5KG51bGwsIGF0dGFjaGVyc1tpbmRleF0pXG4gICAgfVxuXG4gICAgZGVzdGluYXRpb24uZGF0YShleHRlbmQodHJ1ZSwge30sIG5hbWVzcGFjZSkpXG5cbiAgICByZXR1cm4gZGVzdGluYXRpb25cbiAgfVxuXG4gIC8vIEZyZWV6ZTogdXNlZCB0byBzaWduYWwgYSBwcm9jZXNzb3IgdGhhdCBoYXMgZmluaXNoZWQgY29uZmlndXJhdGlvbi5cbiAgLy9cbiAgLy8gRm9yIGV4YW1wbGUsIHRha2UgdW5pZmllZCBpdHNlbGY6IGl04oCZcyBmcm96ZW4uXG4gIC8vIFBsdWdpbnMgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byBpdC5cbiAgLy8gUmF0aGVyLCBpdCBzaG91bGQgYmUgZXh0ZW5kZWQsIGJ5IGludm9raW5nIGl0LCBiZWZvcmUgbW9kaWZ5aW5nIGl0LlxuICAvL1xuICAvLyBJbiBlc3NlbmNlLCBhbHdheXMgaW52b2tlIHRoaXMgd2hlbiBleHBvcnRpbmcgYSBwcm9jZXNzb3IuXG4gIGZ1bmN0aW9uIGZyZWV6ZSgpIHtcbiAgICB2YXIgdmFsdWVzXG4gICAgdmFyIHBsdWdpblxuICAgIHZhciBvcHRpb25zXG4gICAgdmFyIHRyYW5zZm9ybWVyXG5cbiAgICBpZiAoZnJvemVuKSB7XG4gICAgICByZXR1cm4gcHJvY2Vzc29yXG4gICAgfVxuXG4gICAgd2hpbGUgKCsrZnJlZXplSW5kZXggPCBhdHRhY2hlcnMubGVuZ3RoKSB7XG4gICAgICB2YWx1ZXMgPSBhdHRhY2hlcnNbZnJlZXplSW5kZXhdXG4gICAgICBwbHVnaW4gPSB2YWx1ZXNbMF1cbiAgICAgIG9wdGlvbnMgPSB2YWx1ZXNbMV1cbiAgICAgIHRyYW5zZm9ybWVyID0gbnVsbFxuXG4gICAgICBpZiAob3B0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMgPT09IHRydWUpIHtcbiAgICAgICAgdmFsdWVzWzFdID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIHRyYW5zZm9ybWVyID0gcGx1Z2luLmFwcGx5KHByb2Nlc3NvciwgdmFsdWVzLnNsaWNlKDEpKVxuXG4gICAgICBpZiAodHlwZW9mIHRyYW5zZm9ybWVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRyYW5zZm9ybWVycy51c2UodHJhbnNmb3JtZXIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnJvemVuID0gdHJ1ZVxuICAgIGZyZWV6ZUluZGV4ID0gSW5maW5pdHlcblxuICAgIHJldHVybiBwcm9jZXNzb3JcbiAgfVxuXG4gIC8vIERhdGEgbWFuYWdlbWVudC5cbiAgLy8gR2V0dGVyIC8gc2V0dGVyIGZvciBwcm9jZXNzb3Itc3BlY2lmaWMgaW5mb3JtdGlvbi5cbiAgZnVuY3Rpb24gZGF0YShrZXksIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBTZXQgYGtleWAuXG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBhc3NlcnRVbmZyb3plbignZGF0YScsIGZyb3plbilcblxuICAgICAgICBuYW1lc3BhY2Vba2V5XSA9IHZhbHVlXG5cbiAgICAgICAgcmV0dXJuIHByb2Nlc3NvclxuICAgICAgfVxuXG4gICAgICAvLyBHZXQgYGtleWAuXG4gICAgICByZXR1cm4gKG93bi5jYWxsKG5hbWVzcGFjZSwga2V5KSAmJiBuYW1lc3BhY2Vba2V5XSkgfHwgbnVsbFxuICAgIH1cblxuICAgIC8vIFNldCBzcGFjZS5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBhc3NlcnRVbmZyb3plbignZGF0YScsIGZyb3plbilcbiAgICAgIG5hbWVzcGFjZSA9IGtleVxuICAgICAgcmV0dXJuIHByb2Nlc3NvclxuICAgIH1cblxuICAgIC8vIEdldCBzcGFjZS5cbiAgICByZXR1cm4gbmFtZXNwYWNlXG4gIH1cblxuICAvLyBQbHVnaW4gbWFuYWdlbWVudC5cbiAgLy9cbiAgLy8gUGFzcyBpdDpcbiAgLy8gKiAgIGFuIGF0dGFjaGVyIGFuZCBvcHRpb25zLFxuICAvLyAqICAgYSBwcmVzZXQsXG4gIC8vICogICBhIGxpc3Qgb2YgcHJlc2V0cywgYXR0YWNoZXJzLCBhbmQgYXJndW1lbnRzIChsaXN0IG9mIGF0dGFjaGVycyBhbmRcbiAgLy8gICAgIG9wdGlvbnMpLlxuICBmdW5jdGlvbiB1c2UodmFsdWUpIHtcbiAgICB2YXIgc2V0dGluZ3NcblxuICAgIGFzc2VydFVuZnJvemVuKCd1c2UnLCBmcm96ZW4pXG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gRW1wdHkuXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGFkZFBsdWdpbi5hcHBseShudWxsLCBhcmd1bWVudHMpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoJ2xlbmd0aCcgaW4gdmFsdWUpIHtcbiAgICAgICAgYWRkTGlzdCh2YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZFByZXNldCh2YWx1ZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgJyArIHZhbHVlICsgJ2AnKVxuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgbmFtZXNwYWNlLnNldHRpbmdzID0gZXh0ZW5kKG5hbWVzcGFjZS5zZXR0aW5ncyB8fCB7fSwgc2V0dGluZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2Nlc3NvclxuXG4gICAgZnVuY3Rpb24gYWRkUHJlc2V0KHJlc3VsdCkge1xuICAgICAgYWRkTGlzdChyZXN1bHQucGx1Z2lucylcblxuICAgICAgaWYgKHJlc3VsdC5zZXR0aW5ncykge1xuICAgICAgICBzZXR0aW5ncyA9IGV4dGVuZChzZXR0aW5ncyB8fCB7fSwgcmVzdWx0LnNldHRpbmdzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBhZGRQbHVnaW4odmFsdWUpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKCdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgICAgICAgYWRkUGx1Z2luLmFwcGx5KG51bGwsIHZhbHVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZFByZXNldCh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgJyArIHZhbHVlICsgJ2AnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZExpc3QocGx1Z2lucykge1xuICAgICAgdmFyIGxlbmd0aFxuICAgICAgdmFyIGluZGV4XG5cbiAgICAgIGlmIChwbHVnaW5zID09PSBudWxsIHx8IHBsdWdpbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBFbXB0eS5cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbnMgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHBsdWdpbnMpIHtcbiAgICAgICAgbGVuZ3RoID0gcGx1Z2lucy5sZW5ndGhcbiAgICAgICAgaW5kZXggPSAtMVxuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYWRkKHBsdWdpbnNbaW5kZXhdKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgbGlzdCBvZiBwbHVnaW5zLCBub3QgYCcgKyBwbHVnaW5zICsgJ2AnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFBsdWdpbihwbHVnaW4sIHZhbHVlKSB7XG4gICAgICB2YXIgZW50cnkgPSBmaW5kKHBsdWdpbilcblxuICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIGlmIChwbGFpbihlbnRyeVsxXSkgJiYgcGxhaW4odmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUgPSBleHRlbmQoZW50cnlbMV0sIHZhbHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgZW50cnlbMV0gPSB2YWx1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXR0YWNoZXJzLnB1c2goc2xpY2UuY2FsbChhcmd1bWVudHMpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmQocGx1Z2luKSB7XG4gICAgdmFyIGxlbmd0aCA9IGF0dGFjaGVycy5sZW5ndGhcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciBlbnRyeVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gYXR0YWNoZXJzW2luZGV4XVxuXG4gICAgICBpZiAoZW50cnlbMF0gPT09IHBsdWdpbikge1xuICAgICAgICByZXR1cm4gZW50cnlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZSBhIGZpbGUgKGluIHN0cmluZyBvciB2ZmlsZSByZXByZXNlbnRhdGlvbikgaW50byBhIHVuaXN0IG5vZGUgdXNpbmdcbiAgLy8gdGhlIGBQYXJzZXJgIG9uIHRoZSBwcm9jZXNzb3IuXG4gIGZ1bmN0aW9uIHBhcnNlKGRvYykge1xuICAgIHZhciBmaWxlID0gdmZpbGUoZG9jKVxuICAgIHZhciBQYXJzZXJcblxuICAgIGZyZWV6ZSgpXG4gICAgUGFyc2VyID0gcHJvY2Vzc29yLlBhcnNlclxuICAgIGFzc2VydFBhcnNlcigncGFyc2UnLCBQYXJzZXIpXG5cbiAgICBpZiAobmV3YWJsZShQYXJzZXIsICdwYXJzZScpKSB7XG4gICAgICByZXR1cm4gbmV3IFBhcnNlcihTdHJpbmcoZmlsZSksIGZpbGUpLnBhcnNlKClcbiAgICB9XG5cbiAgICByZXR1cm4gUGFyc2VyKFN0cmluZyhmaWxlKSwgZmlsZSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG4gIH1cblxuICAvLyBSdW4gdHJhbnNmb3JtcyBvbiBhIHVuaXN0IG5vZGUgcmVwcmVzZW50YXRpb24gb2YgYSBmaWxlIChpbiBzdHJpbmcgb3JcbiAgLy8gdmZpbGUgcmVwcmVzZW50YXRpb24pLCBhc3luYy5cbiAgZnVuY3Rpb24gcnVuKG5vZGUsIGZpbGUsIGNiKSB7XG4gICAgYXNzZXJ0Tm9kZShub2RlKVxuICAgIGZyZWV6ZSgpXG5cbiAgICBpZiAoIWNiICYmIHR5cGVvZiBmaWxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYiA9IGZpbGVcbiAgICAgIGZpbGUgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKCFjYikge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGV4ZWN1dG9yKVxuICAgIH1cblxuICAgIGV4ZWN1dG9yKG51bGwsIGNiKVxuXG4gICAgZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB0cmFuc2Zvcm1lcnMucnVuKG5vZGUsIHZmaWxlKGZpbGUpLCBkb25lKVxuXG4gICAgICBmdW5jdGlvbiBkb25lKGVyciwgdHJlZSwgZmlsZSkge1xuICAgICAgICB0cmVlID0gdHJlZSB8fCBub2RlXG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmUpIHtcbiAgICAgICAgICByZXNvbHZlKHRyZWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2IobnVsbCwgdHJlZSwgZmlsZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJ1biB0cmFuc2Zvcm1zIG9uIGEgdW5pc3Qgbm9kZSByZXByZXNlbnRhdGlvbiBvZiBhIGZpbGUgKGluIHN0cmluZyBvclxuICAvLyB2ZmlsZSByZXByZXNlbnRhdGlvbiksIHN5bmMuXG4gIGZ1bmN0aW9uIHJ1blN5bmMobm9kZSwgZmlsZSkge1xuICAgIHZhciBjb21wbGV0ZSA9IGZhbHNlXG4gICAgdmFyIHJlc3VsdFxuXG4gICAgcnVuKG5vZGUsIGZpbGUsIGRvbmUpXG5cbiAgICBhc3NlcnREb25lKCdydW5TeW5jJywgJ3J1bicsIGNvbXBsZXRlKVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuXG4gICAgZnVuY3Rpb24gZG9uZShlcnIsIHRyZWUpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYmFpbChlcnIpXG4gICAgICByZXN1bHQgPSB0cmVlXG4gICAgfVxuICB9XG5cbiAgLy8gU3RyaW5naWZ5IGEgdW5pc3Qgbm9kZSByZXByZXNlbnRhdGlvbiBvZiBhIGZpbGUgKGluIHN0cmluZyBvciB2ZmlsZVxuICAvLyByZXByZXNlbnRhdGlvbikgaW50byBhIHN0cmluZyB1c2luZyB0aGUgYENvbXBpbGVyYCBvbiB0aGUgcHJvY2Vzc29yLlxuICBmdW5jdGlvbiBzdHJpbmdpZnkobm9kZSwgZG9jKSB7XG4gICAgdmFyIGZpbGUgPSB2ZmlsZShkb2MpXG4gICAgdmFyIENvbXBpbGVyXG5cbiAgICBmcmVlemUoKVxuICAgIENvbXBpbGVyID0gcHJvY2Vzc29yLkNvbXBpbGVyXG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3N0cmluZ2lmeScsIENvbXBpbGVyKVxuICAgIGFzc2VydE5vZGUobm9kZSlcblxuICAgIGlmIChuZXdhYmxlKENvbXBpbGVyLCAnY29tcGlsZScpKSB7XG4gICAgICByZXR1cm4gbmV3IENvbXBpbGVyKG5vZGUsIGZpbGUpLmNvbXBpbGUoKVxuICAgIH1cblxuICAgIHJldHVybiBDb21waWxlcihub2RlLCBmaWxlKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcbiAgfVxuXG4gIC8vIFBhcnNlIGEgZmlsZSAoaW4gc3RyaW5nIG9yIHZmaWxlIHJlcHJlc2VudGF0aW9uKSBpbnRvIGEgdW5pc3Qgbm9kZSB1c2luZ1xuICAvLyB0aGUgYFBhcnNlcmAgb24gdGhlIHByb2Nlc3NvciwgdGhlbiBydW4gdHJhbnNmb3JtcyBvbiB0aGF0IG5vZGUsIGFuZFxuICAvLyBjb21waWxlIHRoZSByZXN1bHRpbmcgbm9kZSB1c2luZyB0aGUgYENvbXBpbGVyYCBvbiB0aGUgcHJvY2Vzc29yLCBhbmRcbiAgLy8gc3RvcmUgdGhhdCByZXN1bHQgb24gdGhlIHZmaWxlLlxuICBmdW5jdGlvbiBwcm9jZXNzKGRvYywgY2IpIHtcbiAgICBmcmVlemUoKVxuICAgIGFzc2VydFBhcnNlcigncHJvY2VzcycsIHByb2Nlc3Nvci5QYXJzZXIpXG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3Byb2Nlc3MnLCBwcm9jZXNzb3IuQ29tcGlsZXIpXG5cbiAgICBpZiAoIWNiKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZXhlY3V0b3IpXG4gICAgfVxuXG4gICAgZXhlY3V0b3IobnVsbCwgY2IpXG5cbiAgICBmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBmaWxlID0gdmZpbGUoZG9jKVxuXG4gICAgICBwaXBlbGluZS5ydW4ocHJvY2Vzc29yLCB7ZmlsZTogZmlsZX0sIGRvbmUpXG5cbiAgICAgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmUpIHtcbiAgICAgICAgICByZXNvbHZlKGZpbGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2IobnVsbCwgZmlsZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByb2Nlc3MgdGhlIGdpdmVuIGRvY3VtZW50IChpbiBzdHJpbmcgb3IgdmZpbGUgcmVwcmVzZW50YXRpb24pLCBzeW5jLlxuICBmdW5jdGlvbiBwcm9jZXNzU3luYyhkb2MpIHtcbiAgICB2YXIgY29tcGxldGUgPSBmYWxzZVxuICAgIHZhciBmaWxlXG5cbiAgICBmcmVlemUoKVxuICAgIGFzc2VydFBhcnNlcigncHJvY2Vzc1N5bmMnLCBwcm9jZXNzb3IuUGFyc2VyKVxuICAgIGFzc2VydENvbXBpbGVyKCdwcm9jZXNzU3luYycsIHByb2Nlc3Nvci5Db21waWxlcilcbiAgICBmaWxlID0gdmZpbGUoZG9jKVxuXG4gICAgcHJvY2VzcyhmaWxlLCBkb25lKVxuXG4gICAgYXNzZXJ0RG9uZSgncHJvY2Vzc1N5bmMnLCAncHJvY2VzcycsIGNvbXBsZXRlKVxuXG4gICAgcmV0dXJuIGZpbGVcblxuICAgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7XG4gICAgICBjb21wbGV0ZSA9IHRydWVcbiAgICAgIGJhaWwoZXJyKVxuICAgIH1cbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgdmFsdWVgIGlzIGEgY29uc3RydWN0b3IuXG5mdW5jdGlvbiBuZXdhYmxlKHZhbHVlLCBuYW1lKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmXG4gICAgdmFsdWUucHJvdG90eXBlICYmXG4gICAgLy8gQSBmdW5jdGlvbiB3aXRoIGtleXMgaW4gaXRzIHByb3RvdHlwZSBpcyBwcm9iYWJseSBhIGNvbnN0cnVjdG9yLlxuICAgIC8vIENsYXNzZXPigJkgcHJvdG90eXBlIG1ldGhvZHMgYXJlIG5vdCBlbnVtZXJhYmxlLCBzbyB3ZSBjaGVjayBpZiBzb21lIHZhbHVlXG4gICAgLy8gZXhpc3RzIGluIHRoZSBwcm90b3R5cGUuXG4gICAgKGtleXModmFsdWUucHJvdG90eXBlKSB8fCBuYW1lIGluIHZhbHVlLnByb3RvdHlwZSlcbiAgKVxufVxuXG4vLyBDaGVjayBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCB3aXRoIGtleXMuXG5mdW5jdGlvbiBrZXlzKHZhbHVlKSB7XG4gIHZhciBrZXlcbiAgZm9yIChrZXkgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIEFzc2VydCBhIHBhcnNlciBpcyBhdmFpbGFibGUuXG5mdW5jdGlvbiBhc3NlcnRQYXJzZXIobmFtZSwgUGFyc2VyKSB7XG4gIGlmICh0eXBlb2YgUGFyc2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYCcgKyBuYW1lICsgJ2Agd2l0aG91dCBgUGFyc2VyYCcpXG4gIH1cbn1cblxuLy8gQXNzZXJ0IGEgY29tcGlsZXIgaXMgYXZhaWxhYmxlLlxuZnVuY3Rpb24gYXNzZXJ0Q29tcGlsZXIobmFtZSwgQ29tcGlsZXIpIHtcbiAgaWYgKHR5cGVvZiBDb21waWxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGAnICsgbmFtZSArICdgIHdpdGhvdXQgYENvbXBpbGVyYCcpXG4gIH1cbn1cblxuLy8gQXNzZXJ0IHRoZSBwcm9jZXNzb3IgaXMgbm90IGZyb3plbi5cbmZ1bmN0aW9uIGFzc2VydFVuZnJvemVuKG5hbWUsIGZyb3plbikge1xuICBpZiAoZnJvemVuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBpbnZva2UgYCcgK1xuICAgICAgICBuYW1lICtcbiAgICAgICAgJ2Agb24gYSBmcm96ZW4gcHJvY2Vzc29yLlxcbkNyZWF0ZSBhIG5ldyBwcm9jZXNzb3IgZmlyc3QsIGJ5IGludm9raW5nIGl0OiB1c2UgYHByb2Nlc3NvcigpYCBpbnN0ZWFkIG9mIGBwcm9jZXNzb3JgLidcbiAgICApXG4gIH1cbn1cblxuLy8gQXNzZXJ0IGBub2RlYCBpcyBhIHVuaXN0IG5vZGUuXG5mdW5jdGlvbiBhc3NlcnROb2RlKG5vZGUpIHtcbiAgaWYgKCFub2RlIHx8IHR5cGVvZiBub2RlLnR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBub2RlLCBnb3QgYCcgKyBub2RlICsgJ2AnKVxuICB9XG59XG5cbi8vIEFzc2VydCB0aGF0IGBjb21wbGV0ZWAgaXMgYHRydWVgLlxuZnVuY3Rpb24gYXNzZXJ0RG9uZShuYW1lLCBhc3luY05hbWUsIGNvbXBsZXRlKSB7XG4gIGlmICghY29tcGxldGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnYCcgKyBuYW1lICsgJ2AgZmluaXNoZWQgYXN5bmMuIFVzZSBgJyArIGFzeW5jTmFtZSArICdgIGluc3RlYWQnXG4gICAgKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGZyb21QYXJzZTUgPSByZXF1aXJlKCdoYXN0LXV0aWwtZnJvbS1wYXJzZTUnKVxudmFyIFBhcnNlcjUgPSByZXF1aXJlKCdwYXJzZTUvbGliL3BhcnNlcicpXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgZXJyb3JzID0gcmVxdWlyZSgnLi9lcnJvcnMuanNvbicpXG5cbnZhciBiYXNlID0gJ2h0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwYXJzZS1lcnJvci0nXG5cbnZhciBmYXRhbGl0aWVzID0gezI6IHRydWUsIDE6IGZhbHNlLCAwOiBudWxsfVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlXG5cbmZ1bmN0aW9uIHBhcnNlKG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0geHRlbmQob3B0aW9ucywgdGhpcy5kYXRhKCdzZXR0aW5ncycpKVxuICB2YXIgcG9zaXRpb24gPSBzZXR0aW5ncy5wb3NpdGlvblxuXG4gIHBvc2l0aW9uID0gdHlwZW9mIHBvc2l0aW9uID09PSAnYm9vbGVhbicgPyBwb3NpdGlvbiA6IHRydWVcblxuICB0aGlzLlBhcnNlciA9IHBhcnNlclxuXG4gIGZ1bmN0aW9uIHBhcnNlcihkb2MsIGZpbGUpIHtcbiAgICB2YXIgZm4gPSBzZXR0aW5ncy5mcmFnbWVudCA/ICdwYXJzZUZyYWdtZW50JyA6ICdwYXJzZSdcbiAgICB2YXIgb25QYXJzZUVycm9yID0gc2V0dGluZ3MuZW1pdFBhcnNlRXJyb3JzID8gb25lcnJvciA6IG51bGxcbiAgICB2YXIgcGFyc2U1ID0gbmV3IFBhcnNlcjUoe1xuICAgICAgc291cmNlQ29kZUxvY2F0aW9uSW5mbzogcG9zaXRpb24sXG4gICAgICBvblBhcnNlRXJyb3I6IG9uUGFyc2VFcnJvcixcbiAgICAgIHNjcmlwdGluZ0VuYWJsZWQ6IGZhbHNlXG4gICAgfSlcblxuICAgIHJldHVybiBmcm9tUGFyc2U1KHBhcnNlNVtmbl0oZG9jKSwge1xuICAgICAgc3BhY2U6IHNldHRpbmdzLnNwYWNlLFxuICAgICAgZmlsZTogZmlsZSxcbiAgICAgIHZlcmJvc2U6IHNldHRpbmdzLnZlcmJvc2VcbiAgICB9KVxuXG4gICAgZnVuY3Rpb24gb25lcnJvcihlcnIpIHtcbiAgICAgIHZhciBjb2RlID0gZXJyLmNvZGVcbiAgICAgIHZhciBuYW1lID0gY2FtZWxjYXNlKGNvZGUpXG4gICAgICB2YXIgc2V0dGluZyA9IHNldHRpbmdzW25hbWVdXG4gICAgICB2YXIgY29uZmlnID0gc2V0dGluZyA9PT0gdW5kZWZpbmVkIHx8IHNldHRpbmcgPT09IG51bGwgPyB0cnVlIDogc2V0dGluZ1xuICAgICAgdmFyIGxldmVsID0gdHlwZW9mIGNvbmZpZyA9PT0gJ251bWJlcicgPyBjb25maWcgOiBjb25maWcgPyAxIDogMFxuICAgICAgdmFyIHN0YXJ0ID0ge1xuICAgICAgICBsaW5lOiBlcnIuc3RhcnRMaW5lLFxuICAgICAgICBjb2x1bW46IGVyci5zdGFydENvbCxcbiAgICAgICAgb2Zmc2V0OiBlcnIuc3RhcnRPZmZzZXRcbiAgICAgIH1cbiAgICAgIHZhciBlbmQgPSB7bGluZTogZXJyLmVuZExpbmUsIGNvbHVtbjogZXJyLmVuZENvbCwgb2Zmc2V0OiBlcnIuZW5kT2Zmc2V0fVxuICAgICAgdmFyIGluZm9cbiAgICAgIHZhciBtZXNzYWdlXG5cbiAgICAgIGlmIChsZXZlbCkge1xuICAgICAgICBpbmZvID0gZXJyb3JzW25hbWVdIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHtcbiAgICAgICAgICByZWFzb246ICcnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJ1xuICAgICAgICB9XG5cbiAgICAgICAgbWVzc2FnZSA9IGZpbGUubWVzc2FnZShmb3JtYXQoaW5mby5yZWFzb24pLCB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZH0pXG4gICAgICAgIG1lc3NhZ2Uuc291cmNlID0gJ3BhcnNlLWVycm9yJ1xuICAgICAgICBtZXNzYWdlLnJ1bGVJZCA9IGNvZGVcbiAgICAgICAgbWVzc2FnZS5mYXRhbCA9IGZhdGFsaXRpZXNbbGV2ZWxdXG4gICAgICAgIG1lc3NhZ2Uubm90ZSA9IGZvcm1hdChpbmZvLmRlc2NyaXB0aW9uKVxuICAgICAgICBtZXNzYWdlLnVybCA9IGluZm8udXJsID09PSBmYWxzZSA/IG51bGwgOiBiYXNlICsgY29kZVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBmb3JtYXQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyVjKD86LShcXGQrKSk/L2csIGNoYXIpLnJlcGxhY2UoLyV4L2csIGVuY29kZWRDaGFyKVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjaGFyKCQwLCAkMSkge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gJDEgPyAtcGFyc2VJbnQoJDEsIDEwKSA6IDBcbiAgICAgICAgdmFyIGNoYXIgPSBkb2MuY2hhckF0KGVyci5zdGFydE9mZnNldCArIG9mZnNldClcbiAgICAgICAgcmV0dXJuIGNoYXIgPT09ICdgJyA/ICdgIGAgYCcgOiBjaGFyXG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGVuY29kZWRDaGFyKCkge1xuICAgICAgICB2YXIgY2hhciA9IGRvY1xuICAgICAgICAgIC5jaGFyQ29kZUF0KGVyci5zdGFydE9mZnNldClcbiAgICAgICAgICAudG9TdHJpbmcoMTYpXG4gICAgICAgICAgLnRvVXBwZXJDYXNlKClcblxuICAgICAgICByZXR1cm4gJzB4JyArIGNoYXJcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtZWxjYXNlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8tW2Etel0vZywgcmVwbGFjZXIpXG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VyKCQwKSB7XG4gIHJldHVybiAkMC5jaGFyQXQoMSkudG9VcHBlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaXNFbGVtZW50XG5cbi8vIENoZWNrIGlmIGlmIGBub2RlYCBpcyBhbiBgZWxlbWVudGAgYW5kLCBpZiBgdGFnTmFtZXNgIGlzIGdpdmVuLCBgbm9kZWBcbi8vIG1hdGNoZXMgdGhlbSBgdGFnTmFtZXNgLlxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUsIHRhZ05hbWVzKSB7XG4gIHZhciBuYW1lXG5cbiAgaWYgKFxuICAgICEoXG4gICAgICB0YWdOYW1lcyA9PT0gbnVsbCB8fFxuICAgICAgdGFnTmFtZXMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdHlwZW9mIHRhZ05hbWVzID09PSAnc3RyaW5nJyB8fFxuICAgICAgKHR5cGVvZiB0YWdOYW1lcyA9PT0gJ29iamVjdCcgJiYgdGFnTmFtZXMubGVuZ3RoICE9PSAwKVxuICAgIClcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0V4cGVjdGVkIGBzdHJpbmdgIG9yIGBBcnJheS48c3RyaW5nPmAgZm9yIGB0YWdOYW1lc2AsIG5vdCBgJyArXG4gICAgICAgIHRhZ05hbWVzICtcbiAgICAgICAgJ2AnXG4gICAgKVxuICB9XG5cbiAgaWYgKFxuICAgICFub2RlIHx8XG4gICAgdHlwZW9mIG5vZGUgIT09ICdvYmplY3QnIHx8XG4gICAgbm9kZS50eXBlICE9PSAnZWxlbWVudCcgfHxcbiAgICB0eXBlb2Ygbm9kZS50YWdOYW1lICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh0YWdOYW1lcyA9PT0gbnVsbCB8fCB0YWdOYW1lcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5hbWUgPSBub2RlLnRhZ05hbWVcblxuICBpZiAodHlwZW9mIHRhZ05hbWVzID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBuYW1lID09PSB0YWdOYW1lc1xuICB9XG5cbiAgcmV0dXJuIHRhZ05hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRBZnRlclxuXG5mdW5jdGlvbiBmaW5kQWZ0ZXIocGFyZW50LCBpbmRleCwgdGVzdCkge1xuICB2YXIgaXMgPSBjb252ZXJ0KHRlc3QpXG4gIHZhciBjaGlsZHJlblxuICB2YXIgY2hpbGRcbiAgdmFyIGxlbmd0aFxuXG4gIGlmICghcGFyZW50IHx8ICFwYXJlbnQudHlwZSB8fCAhcGFyZW50LmNoaWxkcmVuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBwYXJlbnQgbm9kZScpXG4gIH1cblxuICBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlblxuICBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICBpZiAoaW5kZXggJiYgaW5kZXgudHlwZSkge1xuICAgIGluZGV4ID0gY2hpbGRyZW4uaW5kZXhPZihpbmRleClcbiAgfVxuXG4gIGlmIChpc05hTihpbmRleCkgfHwgaW5kZXggPCAwIHx8IGluZGV4ID09PSBJbmZpbml0eSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgcG9zaXRpdmUgZmluaXRlIGluZGV4IG9yIGNoaWxkIG5vZGUnKVxuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGlsZCA9IGNoaWxkcmVuW2luZGV4XVxuXG4gICAgaWYgKGlzKGNoaWxkLCBpbmRleCwgcGFyZW50KSkge1xuICAgICAgcmV0dXJuIGNoaWxkXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpXG52YXIgaXMgPSByZXF1aXJlKCdoYXN0LXV0aWwtaXMtZWxlbWVudCcpXG52YXIgZmluZEFmdGVyID0gcmVxdWlyZSgndW5pc3QtdXRpbC1maW5kLWFmdGVyJylcblxubW9kdWxlLmV4cG9ydHMgPSB0b1RleHRcblxuLy8gTWV0aG9kcy5cbnZhciBtaW4gPSBNYXRoLm1pblxudmFyIG1heCA9IE1hdGgubWF4XG5cbi8vIFdoaXRlIHNwYWNlIGNvZGVzLlxudmFyIHRhYiA9IDB4OVxudmFyIHNwYWNlID0gMHgyMFxudmFyIHplcm9XaWR0aFNwYWNlID0gMHgyMDBiXG5cbi8vIEJpZGkgY29udHJvbCBjaGFyYWN0ZXJzIGNvZGVzLlxudmFyIGFsbSA9IDB4NjFjXG52YXIgbHRyID0gMHgyMDBlXG52YXIgcnRsID0gMHgyMDBmXG52YXIgbHJlID0gMHgyMDJhXG52YXIgcmxlID0gMHgyMDJiXG52YXIgcGRmID0gMHgyMDJjXG52YXIgbHJvID0gMHgyMDJkXG52YXIgcmxvID0gMHgyMDJlXG52YXIgbHJpID0gMHgyMDY2XG52YXIgcmxpID0gMHgyMDY3XG52YXIgZnNpID0gMHgyMDY4XG52YXIgcGRpID0gMHgyMDY5XG5cbi8vIENoYXJhY3RlcnMuXG52YXIgdGFiQ2hhciA9ICdcXHQnXG52YXIgbGluZUZlZWRDaGFyID0gJ1xcbidcbnZhciBzcGFjZUNoYXIgPSAnICdcblxuLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIGBpbm5lclRleHRgIGdldHRlcjpcbi8vIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtaW5uZXJ0ZXh0LWlkbC1hdHRyaWJ1dGU+XG4vLyBOb3RlIHRoYXQgd2UgYWN0IGFzIGlmIGBub2RlYCBpcyBiZWluZyByZW5kZXJlZCwgYW5kIGFzIGlmIHdl4oCZcmUgYVxuLy8gQ1NTLXN1cHBvcnRpbmcgdXNlciBhZ2VudC5cbmZ1bmN0aW9uIHRvVGV4dChub2RlKSB7XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gfHwgW11cbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuICB2YXIgYmxvY2sgPSBibG9ja09yQ2FwdGlvbihub2RlKVxuICB2YXIgd2hpdGVTcGFjZSA9IGluZmVyV2hpdGVTcGFjZShub2RlLCB7fSlcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHJlc3VsdHNcbiAgdmFyIGN1cnJlbnRcbiAgdmFyIHJlc3VsdFxuICB2YXIgdmFsdWVcbiAgdmFyIGNvdW50XG5cbiAgLy8gVHJlYXQgYHRleHRgIGFuZCBgY29tbWVudGAgYXMgaGF2aW5nIG5vcm1hbCB3aGl0ZS1zcGFjZS5cbiAgLy8gVGhpcyBkZXZpYXRlcyBmcm9tIHRoZSBzcGVjIGFzIGluIHRoZSBET00gdGhlIG5vZGXigJlzIGAuZGF0YWAgaGFzIHRvIGJlXG4gIC8vIHJldHVybmVkLlxuICAvLyBJZiB5b3Ugd2FudCB0aGF0IGJlaGF2aW9yIHVzZSBgaGFzdC11dGlsLXRvLXN0cmluZ2AuXG4gIC8vIEFsbCBvdGhlciBub2RlcyBhcmUgbGF0ZXIgaGFuZGxlZCBhcyBpZiB0aGV5IGFyZSBgZWxlbWVudGBzIChzbyB0aGVcbiAgLy8gYWxnb3JpdGhtIGFsc28gd29ya3Mgb24gYSBgcm9vdGApLlxuICAvLyBOb2RlcyB3aXRob3V0IGNoaWxkcmVuIGFyZSB0cmVhdGVkIGFzIGEgdm9pZCBlbGVtZW50LCBzbyBgZG9jdHlwZWAgaXMgdGh1c1xuICAvLyBpZ25vcmVkLlxuICBpZiAobm9kZS50eXBlID09PSAndGV4dCcgfHwgbm9kZS50eXBlID09PSAnY29tbWVudCcpIHtcbiAgICByZXR1cm4gY29sbGVjdFRleHQobm9kZSwge1xuICAgICAgd2hpdGVTcGFjZTogd2hpdGVTcGFjZSxcbiAgICAgIGJyZWFrQmVmb3JlOiB0cnVlLFxuICAgICAgYnJlYWtBZnRlcjogdHJ1ZVxuICAgIH0pXG4gIH1cblxuICAvLyAxLiAgSWYgdGhpcyBlbGVtZW50IGlzIG5vdCBiZWluZyByZW5kZXJlZCwgb3IgaWYgdGhlIHVzZXIgYWdlbnQgaXMgYVxuICAvLyAgICAgbm9uLUNTUyB1c2VyIGFnZW50LCB0aGVuIHJldHVybiB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGV4dENvbnRlbnQgSURMXG4gIC8vICAgICBhdHRyaWJ1dGUgb24gdGhpcyBlbGVtZW50LlxuICAvL1xuICAvLyAgICAgTm90ZTogd2XigJlyZSBub3Qgc3VwcG9ydGluZyBzdHlsZXNoZWV0cyBzbyB3ZeKAmXJlIGFjdGluZyBhcyBpZiB0aGUgbm9kZVxuICAvLyAgICAgaXMgcmVuZGVyZWQuXG4gIC8vXG4gIC8vICAgICBJZiB5b3Ugd2FudCB0aGF0IGJlaGF2aW9yIHVzZSBgaGFzdC11dGlsLXRvLXN0cmluZ2AuXG4gIC8vICAgICBJbXBvcnRhbnQ6IHdl4oCZbGwgaGF2ZSB0byBhY2NvdW50IGZvciB0aGlzIGxhdGVyIHRob3VnaC5cblxuICAvLyAyLiAgTGV0IHJlc3VsdHMgYmUgYSBuZXcgZW1wdHkgbGlzdC5cbiAgcmVzdWx0cyA9IFtdXG5cbiAgLy8gMy4gIEZvciBlYWNoIGNoaWxkIG5vZGUgbm9kZSBvZiB0aGlzIGVsZW1lbnQ6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgLy8gMy4xLiBMZXQgY3VycmVudCBiZSB0aGUgbGlzdCByZXN1bHRpbmcgaW4gcnVubmluZyB0aGUgaW5uZXIgdGV4dFxuICAgIC8vICAgICAgY29sbGVjdGlvbiBzdGVwcyB3aXRoIG5vZGUuXG4gICAgLy8gICAgICBFYWNoIGl0ZW0gaW4gcmVzdWx0cyB3aWxsIGVpdGhlciBiZSBhIEphdmFTY3JpcHQgc3RyaW5nIG9yIGFcbiAgICAvLyAgICAgIHBvc2l0aXZlIGludGVnZXIgKGEgcmVxdWlyZWQgbGluZSBicmVhayBjb3VudCkuXG4gICAgY3VycmVudCA9IGlubmVyVGV4dENvbGxlY3Rpb24oY2hpbGRyZW5baW5kZXhdLCBpbmRleCwgbm9kZSwge1xuICAgICAgd2hpdGVTcGFjZTogd2hpdGVTcGFjZSxcbiAgICAgIGJyZWFrQmVmb3JlOiBpbmRleCA9PT0gMCA/IGJsb2NrIDogZmFsc2UsXG4gICAgICBicmVha0FmdGVyOiBpbmRleCA9PT0gbGVuZ3RoIC0gMSA/IGJsb2NrIDogaXMoY2hpbGRyZW5baW5kZXggKyAxXSwgJ2JyJylcbiAgICB9KVxuXG4gICAgLy8gMy4yLiBGb3IgZWFjaCBpdGVtIGl0ZW0gaW4gY3VycmVudCwgYXBwZW5kIGl0ZW0gdG8gcmVzdWx0cy5cbiAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoY3VycmVudClcbiAgfVxuXG4gIC8vIDQuICBSZW1vdmUgYW55IGl0ZW1zIGZyb20gcmVzdWx0cyB0aGF0IGFyZSB0aGUgZW1wdHkgc3RyaW5nLlxuICAvLyA1LiAgUmVtb3ZlIGFueSBydW5zIG9mIGNvbnNlY3V0aXZlIHJlcXVpcmVkIGxpbmUgYnJlYWsgY291bnQgaXRlbXMgYXQgdGhlXG4gIC8vICAgICBzdGFydCBvciBlbmQgb2YgcmVzdWx0cy5cbiAgLy8gNi4gIFJlcGxhY2UgZWFjaCByZW1haW5pbmcgcnVuIG9mIGNvbnNlY3V0aXZlIHJlcXVpcmVkIGxpbmUgYnJlYWsgY291bnRcbiAgLy8gICAgIGl0ZW1zIHdpdGggYSBzdHJpbmcgY29uc2lzdGluZyBvZiBhcyBtYW55IFUrMDAwQSBMSU5FIEZFRUQgKExGKVxuICAvLyAgICAgY2hhcmFjdGVycyBhcyB0aGUgbWF4aW11bSBvZiB0aGUgdmFsdWVzIGluIHRoZSByZXF1aXJlZCBsaW5lIGJyZWFrXG4gIC8vICAgICBjb3VudCBpdGVtcy5cbiAgaW5kZXggPSAtMVxuICBsZW5ndGggPSByZXN1bHRzLmxlbmd0aFxuICByZXN1bHQgPSBbXVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFsdWUgPSByZXN1bHRzW2luZGV4XVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmIChjb3VudCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlID4gY291bnQpIHtcbiAgICAgICAgY291bnQgPSB2YWx1ZVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWUgIT09ICcnKSB7XG4gICAgICBpZiAoY291bnQpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gocmVwZWF0KGxpbmVGZWVkQ2hhciwgY291bnQpKVxuICAgICAgfVxuXG4gICAgICBjb3VudCA9IDBcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIC8vIDcuICBSZXR1cm4gdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyBpdGVtcyBpbiByZXN1bHRzLlxuICByZXR1cm4gcmVzdWx0LmpvaW4oJycpXG59XG5cbi8vIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNpbm5lci10ZXh0LWNvbGxlY3Rpb24tc3RlcHM+XG5mdW5jdGlvbiBpbm5lclRleHRDb2xsZWN0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQsIG9wdGlvbnMpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgcmV0dXJuIGNvbGxlY3RFbGVtZW50KG5vZGUsIGluZGV4LCBwYXJlbnQsIG9wdGlvbnMpXG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSAndGV4dCcpIHtcbiAgICByZXR1cm4gW1xuICAgICAgb3B0aW9ucy53aGl0ZVNwYWNlID09PSAnbm9ybWFsJ1xuICAgICAgICA/IGNvbGxlY3RUZXh0KG5vZGUsIG9wdGlvbnMpXG4gICAgICAgIDogY29sbGVjdFByZVRleHQobm9kZSwgb3B0aW9ucylcbiAgICBdXG4gIH1cblxuICByZXR1cm4gW11cbn1cblxuLy8gQ29sbGVjdCBhbiBlbGVtZW50LlxuZnVuY3Rpb24gY29sbGVjdEVsZW1lbnQobm9kZSwgaW5kZXgsIHBhcmVudCwgb3B0aW9ucykge1xuICAvLyBGaXJzdCB3ZSBpbmZlciB0aGUgYHdoaXRlLXNwYWNlYCBwcm9wZXJ0eS5cbiAgdmFyIHdoaXRlU3BhY2UgPSBpbmZlcldoaXRlU3BhY2Uobm9kZSwgb3B0aW9ucylcbiAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbiB8fCBbXVxuICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG4gIHZhciBvZmZzZXQgPSAtMVxuICB2YXIgaXRlbXMgPSBbXVxuICB2YXIgY3VycmVudFxuICB2YXIgcHJlZml4XG4gIHZhciBzdWZmaXhcblxuICAvLyBXZeKAmXJlIGlnbm9yaW5nIHBvaW50IDMsIGFuZCBleGl0aW5nIHdpdGhvdXQgYW55IGNvbnRlbnQgaGVyZSwgYmVjYXVzZSB3ZVxuICAvLyBkZXZpYXRlZCBmcm9tIHRoZSBzcGVjIGluIGB0b1RleHRgIGF0IHN0ZXAgMy5cbiAgaWYgKG5vdFJlbmRlcmVkKG5vZGUpKSB7XG4gICAgcmV0dXJuIGl0ZW1zXG4gIH1cblxuICAvLyBOb3RlOiB3ZSBmaXJzdCBkZXRlY3QgaWYgdGhlcmUgaXMgZ29pbmcgdG8gYmUgYSBicmVhayBiZWZvcmUgb3IgYWZ0ZXIgdGhlXG4gIC8vIGNvbnRlbnRzLCBhcyB0aGF0IGNoYW5nZXMgdGhlIHdoaXRlLXNwYWNlIGhhbmRsaW5nLlxuXG4gIC8vIDIuICBJZiBub2Rl4oCZcyBjb21wdXRlZCB2YWx1ZSBvZiBgdmlzaWJpbGl0eWAgaXMgbm90IGB2aXNpYmxlYCwgdGhlbiByZXR1cm5cbiAgLy8gICAgIGl0ZW1zLlxuICAvL1xuICAvLyAgICAgTm90ZTogSWdub3JlZCwgYXMgZXZlcnl0aGluZyBpcyB2aXNpYmxlIGJ5IGRlZmF1bHQgdXNlciBhZ2VudCBzdHlsZXMuXG5cbiAgLy8gMy4gIElmIG5vZGUgaXMgbm90IGJlaW5nIHJlbmRlcmVkLCB0aGVuIHJldHVybiBpdGVtcy4gWy4uLl1cbiAgLy9cbiAgLy8gICAgIE5vdGU6IFdlIGFscmVhZHkgZGlkIHRoaXMgYWJvdmUuXG5cbiAgLy8gU2VlIGBjb2xsZWN0VGV4dGAgZm9yIHN0ZXAgNC5cblxuICAvLyA1LiAgSWYgbm9kZSBpcyBhIGA8YnI+YCBlbGVtZW50LCB0aGVuIGFwcGVuZCBhIHN0cmluZyBjb250YWluaW5nIGEgc2luZ2xlXG4gIC8vICAgICBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyIHRvIGl0ZW1zLlxuICBpZiAoaXMobm9kZSwgJ2JyJykpIHtcbiAgICBzdWZmaXggPSBsaW5lRmVlZENoYXJcbiAgfVxuXG4gIC8vIDcuICBJZiBub2Rl4oCZcyBjb21wdXRlZCB2YWx1ZSBvZiBgZGlzcGxheWAgaXMgYHRhYmxlLXJvd2AsIGFuZCBub2Rl4oCZcyBDU1NcbiAgLy8gICAgIGJveCBpcyBub3QgdGhlIGxhc3QgYHRhYmxlLXJvd2AgYm94IG9mIHRoZSBuZWFyZXN0IGFuY2VzdG9yIGB0YWJsZWBcbiAgLy8gICAgIGJveCwgdGhlbiBhcHBlbmQgYSBzdHJpbmcgY29udGFpbmluZyBhIHNpbmdsZSBVKzAwMEEgTElORSBGRUVEIChMRilcbiAgLy8gICAgIGNoYXJhY3RlciB0byBpdGVtcy5cbiAgLy9cbiAgLy8gICAgIFNlZTogPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RhYmxlcy0yPlxuICAvLyAgICAgTm90ZTogbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFzIHRoaXMgZG9lcyBub3QgYWNjb3VudCBmb3IgaW1wbGljaXRcbiAgLy8gICAgIHJvd3MuXG4gIGVsc2UgaWYgKHJvdyhub2RlKSAmJiBmaW5kQWZ0ZXIocGFyZW50LCBub2RlLCByb3cpKSB7XG4gICAgc3VmZml4ID0gbGluZUZlZWRDaGFyXG4gIH1cblxuICAvLyA4LiAgSWYgbm9kZSBpcyBhIGA8cD5gIGVsZW1lbnQsIHRoZW4gYXBwZW5kIDIgKGEgcmVxdWlyZWQgbGluZSBicmVhayBjb3VudClcbiAgLy8gICAgIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBpdGVtcy5cbiAgZWxzZSBpZiAoaXMobm9kZSwgJ3AnKSkge1xuICAgIHByZWZpeCA9IDJcbiAgICBzdWZmaXggPSAyXG4gIH1cblxuICAvLyA5LiAgSWYgbm9kZeKAmXMgdXNlZCB2YWx1ZSBvZiBgZGlzcGxheWAgaXMgYmxvY2stbGV2ZWwgb3IgYHRhYmxlLWNhcHRpb25gLFxuICAvLyAgICAgdGhlbiBhcHBlbmQgMSAoYSByZXF1aXJlZCBsaW5lIGJyZWFrIGNvdW50KSBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2ZcbiAgLy8gICAgIGl0ZW1zLlxuICBlbHNlIGlmIChibG9ja09yQ2FwdGlvbihub2RlKSkge1xuICAgIHByZWZpeCA9IDFcbiAgICBzdWZmaXggPSAxXG4gIH1cblxuICAvLyAxLiAgTGV0IGl0ZW1zIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGUgaW5uZXIgdGV4dCBjb2xsZWN0aW9uIHN0ZXBzIHdpdGhcbiAgLy8gICAgIGVhY2ggY2hpbGQgbm9kZSBvZiBub2RlIGluIHRyZWUgb3JkZXIsIGFuZCB0aGVuIGNvbmNhdGVuYXRpbmcgdGhlXG4gIC8vICAgICByZXN1bHRzIHRvIGEgc2luZ2xlIGxpc3QuXG4gIHdoaWxlICgrK29mZnNldCA8IGxlbmd0aCkge1xuICAgIGN1cnJlbnQgPSBpbm5lclRleHRDb2xsZWN0aW9uKGNoaWxkcmVuW29mZnNldF0sIG9mZnNldCwgbm9kZSwge1xuICAgICAgd2hpdGVTcGFjZTogd2hpdGVTcGFjZSxcbiAgICAgIGJyZWFrQmVmb3JlOiBvZmZzZXQgPT09IDAgPyBwcmVmaXggOiBmYWxzZSxcbiAgICAgIGJyZWFrQWZ0ZXI6XG4gICAgICAgIG9mZnNldCA9PT0gbGVuZ3RoIC0gMSA/IHN1ZmZpeCA6IGlzKGNoaWxkcmVuW29mZnNldCArIDFdLCAnYnInKVxuICAgIH0pXG5cbiAgICBpdGVtcyA9IGl0ZW1zLmNvbmNhdChjdXJyZW50KVxuICB9XG5cbiAgLy8gNi4gIElmIG5vZGXigJlzIGNvbXB1dGVkIHZhbHVlIG9mIGBkaXNwbGF5YCBpcyBgdGFibGUtY2VsbGAsIGFuZCBub2Rl4oCZcyBDU1NcbiAgLy8gICAgIGJveCBpcyBub3QgdGhlIGxhc3QgYHRhYmxlLWNlbGxgIGJveCBvZiBpdHMgZW5jbG9zaW5nIGB0YWJsZS1yb3dgIGJveCxcbiAgLy8gICAgIHRoZW4gYXBwZW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBzaW5nbGUgVSswMDA5IENIQVJBQ1RFUiBUQUJVTEFUSU9OXG4gIC8vICAgICAodGFiKSBjaGFyYWN0ZXIgdG8gaXRlbXMuXG4gIC8vXG4gIC8vICAgICBTZWU6IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0YWJsZXMtMj5cbiAgaWYgKGNlbGwobm9kZSkgJiYgZmluZEFmdGVyKHBhcmVudCwgbm9kZSwgY2VsbCkpIHtcbiAgICBpdGVtcy5wdXNoKHRhYkNoYXIpXG4gIH1cblxuICAvLyBBZGQgdGhlIHByZS0gYW5kIHN1ZmZpeC5cbiAgaWYgKHByZWZpeCkge1xuICAgIGl0ZW1zLnVuc2hpZnQocHJlZml4KVxuICB9XG5cbiAgaWYgKHN1ZmZpeCkge1xuICAgIGl0ZW1zLnB1c2goc3VmZml4KVxuICB9XG5cbiAgcmV0dXJuIGl0ZW1zXG59XG5cbi8vIDQuICBJZiBub2RlIGlzIGEgVGV4dCBub2RlLCB0aGVuIGZvciBlYWNoIENTUyB0ZXh0IGJveCBwcm9kdWNlZCBieSBub2RlLFxuLy8gICAgIGluIGNvbnRlbnQgb3JkZXIsIGNvbXB1dGUgdGhlIHRleHQgb2YgdGhlIGJveCBhZnRlciBhcHBsaWNhdGlvbiBvZiB0aGVcbi8vICAgICBDU1MgYHdoaXRlLXNwYWNlYCBwcm9jZXNzaW5nIHJ1bGVzIGFuZCBgdGV4dC10cmFuc2Zvcm1gIHJ1bGVzLCBzZXRcbi8vICAgICBpdGVtcyB0byB0aGUgbGlzdCBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZ3MsIGFuZCByZXR1cm4gaXRlbXMuXG4vLyAgICAgVGhlIENTUyBgd2hpdGUtc3BhY2VgIHByb2Nlc3NpbmcgcnVsZXMgYXJlIHNsaWdodGx5IG1vZGlmaWVkOlxuLy8gICAgIGNvbGxhcHNpYmxlIHNwYWNlcyBhdCB0aGUgZW5kIG9mIGxpbmVzIGFyZSBhbHdheXMgY29sbGFwc2VkLCBidXQgdGhleVxuLy8gICAgIGFyZSBvbmx5IHJlbW92ZWQgaWYgdGhlIGxpbmUgaXMgdGhlIGxhc3QgbGluZSBvZiB0aGUgYmxvY2ssIG9yIGl0IGVuZHNcbi8vICAgICB3aXRoIGEgYnIgZWxlbWVudC5cbi8vICAgICBTb2Z0IGh5cGhlbnMgc2hvdWxkIGJlIHByZXNlcnZlZC5cbi8vXG4vLyAgICAgTm90ZTogU2VlIGBjb2xsZWN0VGV4dGAgYW5kIGBjb2xsZWN0UHJlVGV4dGAuXG4vLyAgICAgTm90ZTogd2UgZG9u4oCZdCBkZWFsIHdpdGggYHRleHQtdHJhbnNmb3JtYCwgbm8gZWxlbWVudCBoYXMgdGhhdCBieVxuLy8gICAgIGRlZmF1bHQuXG4vL1xuLy8gU2VlOiA8aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LyN3aGl0ZS1zcGFjZS1waGFzZS0xPlxuZnVuY3Rpb24gY29sbGVjdFRleHQobm9kZSwgb3B0aW9ucykge1xuICB2YXIgYnJlYWtCZWZvcmUgPSBvcHRpb25zLmJyZWFrQmVmb3JlXG4gIHZhciBicmVha0FmdGVyID0gb3B0aW9ucy5icmVha0FmdGVyXG4gIHZhciB2YWx1ZSA9IFN0cmluZyhub2RlLnZhbHVlKVxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBsaW5lcyA9IFtdXG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgbGluZVN0YXJ0XG4gIHZhciBsaW5lRW5kXG4gIHZhciBsaW5lXG4gIHZhciBuZXh0TGluZVxuICB2YXIgcXVldWVcblxuICBsaW5lU3RhcnQgPSAwXG4gIGxpbmVFbmQgPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkQ2hhcilcbiAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gdmFsdWUubGVuZ3RoIDogbGluZUVuZFxuXG4gIHdoaWxlIChsaW5lRW5kICE9PSAtMSkge1xuICAgIGxpbmUgPSB2YWx1ZS5zbGljZShsaW5lU3RhcnQsIGxpbmVFbmQpXG5cbiAgICAvLyBbLi4uXSBpZ25vcmluZyBiaWRpIGZvcm1hdHRpbmcgY2hhcmFjdGVycyAoY2hhcmFjdGVycyB3aXRoIHRoZVxuICAgIC8vIEJpZGlfQ29udHJvbCBwcm9wZXJ0eSBbVUFYOV0pIGFzIGlmIHRoZXkgd2VyZSBub3QgdGhlcmUuXG4gICAgbGluZSA9IHJlbW92ZUJpZGlDb250cm9sQ2hhcmFjdGVycyhsaW5lKVxuXG4gICAgLy8gQW55IHNlcXVlbmNlIG9mIGNvbGxhcHNpYmxlIHNwYWNlcyBhbmQgdGFicyBpbW1lZGlhdGVseSBwcmVjZWRpbmcgb3JcbiAgICAvLyBmb2xsb3dpbmcgYSBzZWdtZW50IGJyZWFrIGlzIHJlbW92ZWQuXG4gICAgbGluZSA9IHRyaW1BbmRjb2xsYXBzZVNwYWNlc0FuZFRhYnMobGluZSwgYnJlYWtCZWZvcmUsIGJyZWFrQWZ0ZXIpXG5cbiAgICAvLyBBZGQgdGhlIGxpbmUuXG4gICAgbGluZXMucHVzaChsaW5lKVxuXG4gICAgLy8gU3RvcC5cbiAgICBpZiAobGluZUVuZCA9PT0gdmFsdWUubGVuZ3RoKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGxpbmVTdGFydCA9IGxpbmVFbmQgKyAxXG4gICAgbGluZUVuZCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWRDaGFyLCBsaW5lU3RhcnQpXG4gICAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gdmFsdWUubGVuZ3RoIDogbGluZUVuZFxuICB9XG5cbiAgaW5kZXggPSAtMVxuICBsZW5ndGggPSBsaW5lcy5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuXG4gIC8vIENvbGxhcHNpYmxlIHNlZ21lbnQgYnJlYWtzIGFyZSB0cmFuc2Zvcm1lZCBmb3IgcmVuZGVyaW5nIGFjY29yZGluZyB0byB0aGVcbiAgLy8gc2VnbWVudCBicmVhayB0cmFuc2Zvcm1hdGlvbiBydWxlcy5cbiAgLy8gU28gaGVyZSB3ZSBqdW1wIHRvIDQuMS4yIG9mIFtDU1NURVhUXTpcbiAgLy8gQW55IGNvbGxhcHNpYmxlIHNlZ21lbnQgYnJlYWsgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGFub3RoZXIgY29sbGFwc2libGVcbiAgLy8gc2VnbWVudCBicmVhayBpcyByZW1vdmVkXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgbGluZSA9IGxpbmVzW2luZGV4XVxuICAgIG5leHRMaW5lID0gbGluZXNbaW5kZXggKyAxXSB8fCAnJ1xuXG4gICAgLy8gKiAgIElmIHRoZSBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIG9yIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzZWdtZW50XG4gICAgLy8gICAgIGJyZWFrIGlzIHRoZSB6ZXJvLXdpZHRoIHNwYWNlIGNoYXJhY3RlciAoVSsyMDBCKSwgdGhlbiB0aGUgYnJlYWsgaXNcbiAgICAvLyAgICAgcmVtb3ZlZCwgbGVhdmluZyBiZWhpbmQgdGhlIHplcm8td2lkdGggc3BhY2UuXG4gICAgaWYgKFxuICAgICAgbGluZS5jaGFyQ29kZUF0KGxpbmUubGVuZ3RoIC0gMSkgPT09IHplcm9XaWR0aFNwYWNlIHx8XG4gICAgICBuZXh0TGluZS5jaGFyQ29kZUF0KDApID09PSB6ZXJvV2lkdGhTcGFjZVxuICAgICkge1xuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICAgIHF1ZXVlID0gJydcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gKiAgIE90aGVyd2lzZSwgaWYgdGhlIEVhc3QgQXNpYW4gV2lkdGggcHJvcGVydHkgW1VBWDExXSBvZiBib3RoIHRoZVxuICAgIC8vICAgICBjaGFyYWN0ZXIgYmVmb3JlIGFuZCBhZnRlciB0aGUgc2VnbWVudCBicmVhayBpcyBGdWxsd2lkdGgsIFdpZGUsIG9yXG4gICAgLy8gICAgIEhhbGZ3aWR0aCAobm90IEFtYmlndW91cyksIGFuZCBuZWl0aGVyIHNpZGUgaXMgSGFuZ3VsLCB0aGVuIHRoZVxuICAgIC8vICAgICBzZWdtZW50IGJyZWFrIGlzIHJlbW92ZWQuXG4gICAgLy9cbiAgICAvLyAgICAgTm90ZTogaWdub3JlZC5cblxuICAgIC8vICogICBPdGhlcndpc2UsIGlmIHRoZSB3cml0aW5nIHN5c3RlbSBvZiB0aGUgc2VnbWVudCBicmVhayBpcyBDaGluZXNlLFxuICAgIC8vICAgICBKYXBhbmVzZSwgb3IgWWksIGFuZCB0aGUgY2hhcmFjdGVyIGJlZm9yZSBvciBhZnRlciB0aGUgc2VnbWVudCBicmVha1xuICAgIC8vICAgICBpcyBwdW5jdHVhdGlvbiBvciBhIHN5bWJvbCAoVW5pY29kZSBnZW5lcmFsIGNhdGVnb3J5IFAqIG9yIFMqKSBhbmRcbiAgICAvLyAgICAgaGFzIGFuIEVhc3QgQXNpYW4gV2lkdGggcHJvcGVydHkgb2YgQW1iaWd1b3VzLCBhbmQgdGhlIGNoYXJhY3RlciBvblxuICAgIC8vICAgICB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgc2VnbWVudCBicmVhayBpcyBGdWxsd2lkdGgsIFdpZGUsIG9yIEhhbGZ3aWR0aCxcbiAgICAvLyAgICAgYW5kIG5vdCBIYW5ndWwsIHRoZW4gdGhlIHNlZ21lbnQgYnJlYWsgaXMgcmVtb3ZlZC5cbiAgICAvL1xuICAgIC8vICAgICBOb3RlOiBpZ25vcmVkLlxuXG4gICAgLy8gKiAgIE90aGVyd2lzZSwgdGhlIHNlZ21lbnQgYnJlYWsgaXMgY29udmVydGVkIHRvIGEgc3BhY2UgKFUrMDAyMCkuXG4gICAgaWYgKGxpbmUpIHtcbiAgICAgIGlmIChxdWV1ZSkge1xuICAgICAgICByZXN1bHQucHVzaChxdWV1ZSlcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICAgIHF1ZXVlID0gc3BhY2VDaGFyXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBjb2xsZWN0UHJlVGV4dChub2RlKSB7XG4gIHJldHVybiBTdHJpbmcobm9kZS52YWx1ZSlcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQmlkaUNvbnRyb2xDaGFyYWN0ZXJzKHZhbHVlKSB7XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHJlc3VsdCA9ICcnXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXNCaWRpQ29udHJvbENoYXJhY3Rlcih2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgcmVzdWx0ICs9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLy8gMy4gIEV2ZXJ5IGNvbGxhcHNpYmxlIHRhYiBpcyBjb252ZXJ0ZWQgdG8gYSBjb2xsYXBzaWJsZSBzcGFjZSAoVSswMDIwKS5cbi8vIDQuICBBbnkgY29sbGFwc2libGUgc3BhY2UgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGFub3RoZXIgY29sbGFwc2libGVcbi8vICAgICBzcGFjZeKAlGV2ZW4gb25lIG91dHNpZGUgdGhlIGJvdW5kYXJ5IG9mIHRoZSBpbmxpbmUgY29udGFpbmluZyB0aGF0XG4vLyAgICAgc3BhY2UsIHByb3ZpZGVkIGJvdGggc3BhY2VzIGFyZSB3aXRoaW4gdGhlIHNhbWUgaW5saW5lIGZvcm1hdHRpbmdcbi8vICAgICBjb250ZXh04oCUaXMgY29sbGFwc2VkIHRvIGhhdmUgemVybyBhZHZhbmNlIHdpZHRoLiAoSXQgaXMgaW52aXNpYmxlLFxuLy8gICAgIGJ1dCByZXRhaW5zIGl0cyBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHksIGlmIGFueS4pXG5mdW5jdGlvbiB0cmltQW5kY29sbGFwc2VTcGFjZXNBbmRUYWJzKHZhbHVlLCBicmVha0JlZm9yZSwgYnJlYWtBZnRlcikge1xuICB2YXIgc3RhcnQgPSAwXG4gIHZhciBlbmRcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGNoYXJcblxuICAvLyBNb3ZlIGZvcndhcmQgcGFzdCBpbml0aWFsIHdoaXRlIHNwYWNlLlxuICB3aGlsZSAoc3RhcnQgPD0gbGVuZ3RoKSB7XG4gICAgY2hhciA9IHZhbHVlLmNoYXJDb2RlQXQoc3RhcnQpXG5cbiAgICBpZiAoY2hhciAhPT0gc3BhY2UgJiYgY2hhciAhPT0gdGFiKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN0YXJ0KytcbiAgfVxuXG4gIC8vIElmIHdl4oCZcmUgbm90IGRpcmVjdGx5IGFmdGVyIGEgc2VnbWVudCBicmVhaywgYnV0IHRoZXJlIHdhcyB3aGl0ZSBzcGFjZSxcbiAgLy8gYWRkIGFuIGVtcHR5IHZhbHVlIHRoYXQgd2lsbCBiZSB0dXJuZWQgaW50byBhIHNwYWNlLlxuICBpZiAoc3RhcnQgIT09IDAgJiYgIWJyZWFrQmVmb3JlKSB7XG4gICAgcmVzdWx0LnB1c2goJycpXG4gIH1cblxuICBlbmQgPSBuZXh0KHN0YXJ0IC0gMSlcblxuICB3aGlsZSAoc3RhcnQgPCBsZW5ndGgpIHtcbiAgICBlbmQgPSBlbmQgPT09IC0xID8gbGVuZ3RoIDogZW5kXG4gICAgcmVzdWx0LnB1c2godmFsdWUuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gICAgc3RhcnQgPSBlbmRcblxuICAgIHdoaWxlIChzdGFydCA8PSBsZW5ndGgpIHtcbiAgICAgIGNoYXIgPSB2YWx1ZS5jaGFyQ29kZUF0KHN0YXJ0KVxuXG4gICAgICBpZiAoY2hhciAhPT0gc3BhY2UgJiYgY2hhciAhPT0gdGFiKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHN0YXJ0KytcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSByZWFjaGVkIHRoZSBlbmQsIHRoZXJlIHdhcyB0cmFpbGluZyB3aGl0ZSBzcGFjZSwgYW5kIHRoZXJl4oCZcyBub1xuICAgIC8vIHNlZ21lbnQgYnJlYWsgYWZ0ZXIgdGhpcyBub2RlLCBhZGQgYW4gZW1wdHkgdmFsdWUgdGhhdCB3aWxsIGJlIHR1cm5lZFxuICAgIC8vIGludG8gYSBzcGFjZS5cbiAgICBpZiAoc3RhcnQgPT09IGxlbmd0aCAmJiBzdGFydCAhPT0gZW5kICYmICFicmVha0FmdGVyKSB7XG4gICAgICByZXN1bHQucHVzaCgnJylcbiAgICB9XG5cbiAgICBlbmQgPSBuZXh0KHN0YXJ0KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJylcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4KSB7XG4gICAgdmFyIHNwYWNlSW5kZXggPSB2YWx1ZS5pbmRleE9mKHNwYWNlQ2hhciwgaW5kZXggKyAxKVxuICAgIHZhciB0YWJJbmRleCA9IHZhbHVlLmluZGV4T2YodGFiQ2hhciwgaW5kZXggKyAxKVxuICAgIHZhciBmbiA9IHNwYWNlSW5kZXggPT09IC0xIHx8IHRhYkluZGV4ID09PSAtMSA/IG1heCA6IG1pblxuICAgIHJldHVybiBmbihzcGFjZUluZGV4LCB0YWJJbmRleClcbiAgfVxufVxuXG4vLyBXZSBkb27igJl0IHN1cHBvcnQgdm9pZCBlbGVtZW50cyBoZXJlIChzbyBgbm9iciB3YnJgIC0+IGBub3JtYWxgIGlzIGlnbm9yZWQpLlxuZnVuY3Rpb24gaW5mZXJXaGl0ZVNwYWNlKG5vZGUsIG9wdGlvbnMpIHtcbiAgdmFyIHByb3BzID0gbm9kZS5wcm9wZXJ0aWVzIHx8IHt9XG4gIHZhciBpbmhlcml0ID0gb3B0aW9ucy53aGl0ZVNwYWNlIHx8ICdub3JtYWwnXG5cbiAgc3dpdGNoIChub2RlLnRhZ05hbWUpIHtcbiAgICBjYXNlICdsaXN0aW5nJzpcbiAgICBjYXNlICdwbGFpbnRleHQnOlxuICAgIGNhc2UgJ3htcCc6XG4gICAgICByZXR1cm4gJ3ByZSdcbiAgICBjYXNlICdub2JyJzpcbiAgICAgIHJldHVybiAnbm93cmFwJ1xuICAgIGNhc2UgJ3ByZSc6XG4gICAgICByZXR1cm4gcHJvcHMud3JhcCA/ICdwcmUtd3JhcCcgOiAncHJlJ1xuICAgIGNhc2UgJ3RkJzpcbiAgICBjYXNlICd0aCc6XG4gICAgICByZXR1cm4gcHJvcHMubm9XcmFwID8gJ25vd3JhcCcgOiBpbmhlcml0XG4gICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgcmV0dXJuICdwcmUtd3JhcCdcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGluaGVyaXRcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0JpZGlDb250cm9sQ2hhcmFjdGVyKGNoYXIpIHtcbiAgc3dpdGNoIChjaGFyKSB7XG4gICAgY2FzZSBhbG06XG4gICAgY2FzZSBsdHI6XG4gICAgY2FzZSBydGw6XG4gICAgY2FzZSBscmU6XG4gICAgY2FzZSBybGU6XG4gICAgY2FzZSBwZGY6XG4gICAgY2FzZSBscm86XG4gICAgY2FzZSBybG86XG4gICAgY2FzZSBscmk6XG4gICAgY2FzZSBybGk6XG4gICAgY2FzZSBmc2k6XG4gICAgY2FzZSBwZGk6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBjZWxsKG5vZGUpIHtcbiAgcmV0dXJuIGlzKG5vZGUsIFsndGgnLCAndGQnXSlcbn1cblxuZnVuY3Rpb24gcm93KG5vZGUpIHtcbiAgcmV0dXJuIGlzKG5vZGUsIFsndHInXSlcbn1cblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdGhlLWNzcy11c2VyLWFnZW50LXN0eWxlLXNoZWV0LWFuZC1wcmVzZW50YXRpb25hbC1oaW50cz5cbmZ1bmN0aW9uIGJsb2NrT3JDYXB0aW9uKG5vZGUpIHtcbiAgcmV0dXJuIGlzKG5vZGUsIFtcbiAgICAnY2FwdGlvbicsIC8vIGB0YWJsZS1jYXB0aW9uYFxuICAgIC8vIFBhZ2VcbiAgICAnaHRtbCcsXG4gICAgJ2JvZHknLFxuICAgIC8vIEZsb3cgY29udGVudFxuICAgICdhZGRyZXNzJyxcbiAgICAnYmxvY2txdW90ZScsXG4gICAgJ2NlbnRlcicsIC8vIExlZ2FjeVxuICAgICdkaWFsb2cnLFxuICAgICdkaXYnLFxuICAgICdmaWd1cmUnLFxuICAgICdmaWdjYXB0aW9uJyxcbiAgICAnZm9vdGVyJyxcbiAgICAnZm9ybSwnLFxuICAgICdoZWFkZXInLFxuICAgICdocicsXG4gICAgJ2xlZ2VuZCcsXG4gICAgJ2xpc3RpbmcnLCAvLyBMZWdhY3lcbiAgICAnbWFpbicsXG4gICAgJ3AnLFxuICAgICdwbGFpbnRleHQnLCAvLyBMZWdhY3lcbiAgICAncHJlJyxcbiAgICAneG1wJywgLy8gTGVnYWN5XG4gICAgLy8gU2VjdGlvbnMgYW5kIGhlYWRpbmdzXG4gICAgJ2FydGljbGUnLFxuICAgICdhc2lkZScsXG4gICAgJ2gxJyxcbiAgICAnaDInLFxuICAgICdoMycsXG4gICAgJ2g0JyxcbiAgICAnaDUnLFxuICAgICdoNicsXG4gICAgJ2hncm91cCcsXG4gICAgJ25hdicsXG4gICAgJ3NlY3Rpb24nLFxuICAgIC8vIExpc3RzXG4gICAgJ2RpcicsIC8vIExlZ2FjeVxuICAgICdkZCcsXG4gICAgJ2RsJyxcbiAgICAnZHQnLFxuICAgICdtZW51JyxcbiAgICAnb2wnLFxuICAgICd1bCdcbiAgXSlcbn1cblxuLy8gTm90ZSB0aGF0IHdlIGRvbuKAmXQgbmVlZCB0byBpbmNsdWRlIHZvaWQgZWxlbWVudHMgaGVyZSBhcyB0aGV5IGRvbuKAmXQgaGF2ZSB0ZXh0LlxuLy9cbi8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS93b29vcm0vaHRtbC12b2lkLWVsZW1lbnRzPlxuZnVuY3Rpb24gbm90UmVuZGVyZWQobm9kZSkge1xuICB2YXIgcHJvcGVydGllcyA9IG5vZGUucHJvcGVydGllcyB8fCB7fVxuXG4gIHJldHVybiAoXG4gICAgLy8gTGlzdCBmcm9tOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jaGlkZGVuLWVsZW1lbnRzPlxuICAgIGlzKG5vZGUsIFtcbiAgICAgICdkYXRhbGlzdCcsXG4gICAgICAnaGVhZCcsXG4gICAgICAnbm9lbWJlZCcsXG4gICAgICAnbm9mcmFtZXMnLFxuICAgICAgJ3JwJyxcbiAgICAgICdzY3JpcHQnLFxuICAgICAgJ3N0eWxlJyxcbiAgICAgICd0ZW1wbGF0ZScsXG4gICAgICAndGl0bGUnLFxuICAgICAgLy8gQWN0IGFzIGlmIHdlIHN1cHBvcnQgc2NyaXB0aW5nLlxuICAgICAgJ25vc2NyaXB0J1xuICAgIF0pIHx8XG4gICAgLy8gSGlkZGVuIGF0dHJpYnV0ZS5cbiAgICBwcm9wZXJ0aWVzLmhpZGRlbiB8fFxuICAgIC8vIEZyb206IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNmbG93LWNvbnRlbnQtMz5cbiAgICAoaXMobm9kZSwgJ2RpYWxvZycpICYmICFwcm9wZXJ0aWVzLm9wZW4pXG4gIClcbn1cbiIsImNvbnN0IHZpc2l0ID0gcmVxdWlyZSgndW5pc3QtdXRpbC12aXNpdCcpXG5jb25zdCBrYXRleCA9IHJlcXVpcmUoJ2thdGV4JykucmVuZGVyVG9TdHJpbmdcbmNvbnN0IHVuaWZpZWQgPSByZXF1aXJlKCd1bmlmaWVkJylcbmNvbnN0IHBhcnNlID0gcmVxdWlyZSgncmVoeXBlLXBhcnNlJylcbmNvbnN0IHRvVGV4dCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC10by10ZXh0JylcblxubW9kdWxlLmV4cG9ydHMgPSByZWh5cGVLYXRleFxuXG5jb25zdCBhc3NpZ24gPSBPYmplY3QuYXNzaWduXG5cbmNvbnN0IHBhcnNlSHRtbCA9IHVuaWZpZWQoKS51c2UocGFyc2UsIHtmcmFnbWVudDogdHJ1ZSwgcG9zaXRpb246IGZhbHNlfSlcblxuY29uc3Qgc291cmNlID0gJ3JlaHlwZS1rYXRleCdcblxuZnVuY3Rpb24gcmVoeXBlS2F0ZXgob3B0aW9ucykge1xuICBjb25zdCBvcHRzID0gb3B0aW9ucyB8fCB7fVxuICBjb25zdCB0aHJvd09uRXJyb3IgPSBvcHRzLnRocm93T25FcnJvciB8fCBmYWxzZVxuXG4gIHJldHVybiB0cmFuc2Zvcm1NYXRoXG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtTWF0aCh0cmVlLCBmaWxlKSB7XG4gICAgdmlzaXQodHJlZSwgJ2VsZW1lbnQnLCBvbmVsZW1lbnQpXG5cbiAgICBmdW5jdGlvbiBvbmVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgY29uc3QgY2xhc3NlcyA9IGVsZW1lbnQucHJvcGVydGllcy5jbGFzc05hbWUgfHwgW11cbiAgICAgIGNvbnN0IGlubGluZSA9IGNsYXNzZXMuaW5jbHVkZXMoJ21hdGgtaW5saW5lJylcbiAgICAgIGNvbnN0IGRpc3BsYXlNb2RlID0gY2xhc3Nlcy5pbmNsdWRlcygnbWF0aC1kaXNwbGF5JylcblxuICAgICAgaWYgKCFpbmxpbmUgJiYgIWRpc3BsYXlNb2RlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZSA9IHRvVGV4dChlbGVtZW50KVxuXG4gICAgICBsZXQgcmVzdWx0XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGthdGV4KFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGFzc2lnbih7fSwgb3B0aW9ucywge2Rpc3BsYXlNb2RlOiBkaXNwbGF5TW9kZSwgdGhyb3dPbkVycm9yOiB0cnVlfSlcbiAgICAgICAgKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZm4gPSB0aHJvd09uRXJyb3IgPyAnZmFpbCcgOiAnbWVzc2FnZSdcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gW3NvdXJjZSwgZXJyb3IubmFtZS50b0xvd2VyQ2FzZSgpXS5qb2luKCc6JylcblxuICAgICAgICBmaWxlW2ZuXShlcnJvci5tZXNzYWdlLCBlbGVtZW50LnBvc2l0aW9uLCBvcmlnaW4pXG5cbiAgICAgICAgcmVzdWx0ID0ga2F0ZXgoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgYXNzaWduKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICBkaXNwbGF5TW9kZTogZGlzcGxheU1vZGUsXG4gICAgICAgICAgICB0aHJvd09uRXJyb3I6IGZhbHNlLFxuICAgICAgICAgICAgc3RyaWN0OiAnaWdub3JlJ1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgZWxlbWVudC5jaGlsZHJlbiA9IHBhcnNlSHRtbC5wYXJzZShyZXN1bHQpLmNoaWxkcmVuXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBpbnRlckVsZW1lbnRXaGl0ZVNwYWNlXG5cbi8vIEhUTUwgd2hpdGUtc3BhY2UgZXhwcmVzc2lvbi5cbi8vIFNlZSA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3BhY2UtY2hhcmFjdGVyPi5cbnZhciByZSA9IC9bIFxcdFxcblxcZlxccl0vZ1xuXG5mdW5jdGlvbiBpbnRlckVsZW1lbnRXaGl0ZVNwYWNlKG5vZGUpIHtcbiAgdmFyIHZhbHVlXG5cbiAgaWYgKG5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGUudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgdmFsdWUgPSBub2RlLnZhbHVlIHx8ICcnXG4gIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBub2RlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdmFsdWUucmVwbGFjZShyZSwgJycpID09PSAnJ1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZVNwYWNlID0gcmVxdWlyZSgnaGFzdC11dGlsLXdoaXRlc3BhY2UnKVxuXG5leHBvcnRzLmJlZm9yZSA9IHNpYmxpbmdzKC0xKVxuZXhwb3J0cy5hZnRlciA9IHNpYmxpbmdzKDEpXG5cbi8vIEZhY3RvcnkgdG8gY2hlY2sgc2libGluZ3MgaW4gYSBkaXJlY3Rpb24uXG5mdW5jdGlvbiBzaWJsaW5ncyhpbmNyZW1lbnQpIHtcbiAgcmV0dXJuIHNpYmxpbmdcblxuICAvLyBGaW5kIGFwcGxpY2FibGUgc2libGluZ3MgaW4gYSBkaXJlY3Rpb24uXG4gIGZ1bmN0aW9uIHNpYmxpbmcocGFyZW50LCBpbmRleCwgaW5jbHVkZVdoaXRlU3BhY2UpIHtcbiAgICB2YXIgc2libGluZ3MgPSBwYXJlbnQgJiYgcGFyZW50LmNoaWxkcmVuXG4gICAgdmFyIG5leHRcblxuICAgIGluZGV4ICs9IGluY3JlbWVudFxuICAgIG5leHQgPSBzaWJsaW5ncyAmJiBzaWJsaW5nc1tpbmRleF1cblxuICAgIGlmICghaW5jbHVkZVdoaXRlU3BhY2UpIHtcbiAgICAgIHdoaWxlIChuZXh0ICYmIHdoaXRlU3BhY2UobmV4dCkpIHtcbiAgICAgICAgaW5kZXggKz0gaW5jcmVtZW50XG4gICAgICAgIG5leHQgPSBzaWJsaW5nc1tpbmRleF1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dFxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGFmdGVyID0gcmVxdWlyZSgnLi9zaWJsaW5ncycpLmFmdGVyXG5cbm1vZHVsZS5leHBvcnRzID0gZmlyc3RcblxuLy8gR2V0IHRoZSBmaXJzdCBjaGlsZCBpbiBgcGFyZW50YC5cbmZ1bmN0aW9uIGZpcnN0KHBhcmVudCwgaW5jbHVkZVdoaXRlU3BhY2UpIHtcbiAgcmV0dXJuIGFmdGVyKHBhcmVudCwgLTEsIGluY2x1ZGVXaGl0ZVNwYWNlKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gcGxhY2VcblxuLy8gR2V0IHRoZSBwb3NpdGlvbiBvZiBgbm9kZWAgaW4gYHBhcmVudGAuXG5mdW5jdGlvbiBwbGFjZShwYXJlbnQsIGNoaWxkKSB7XG4gIHJldHVybiBwYXJlbnQgJiYgcGFyZW50LmNoaWxkcmVuICYmIHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGNoaWxkKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjb252ZXJ0ID0gcmVxdWlyZSgndW5pc3QtdXRpbC1pcy9jb252ZXJ0JylcbnZhciB3aGl0ZVNwYWNlID0gcmVxdWlyZSgnaGFzdC11dGlsLXdoaXRlc3BhY2UnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdoaXRlU3BhY2VMZWZ0XG5cbnZhciBpc1RleHQgPSBjb252ZXJ0KCd0ZXh0JylcblxuLy8gQ2hlY2sgaWYgYG5vZGVgIHN0YXJ0cyB3aXRoIHdoaXRlLXNwYWNlLlxuZnVuY3Rpb24gd2hpdGVTcGFjZUxlZnQobm9kZSkge1xuICByZXR1cm4gaXNUZXh0KG5vZGUpICYmIHdoaXRlU3BhY2Uobm9kZS52YWx1ZS5jaGFyQXQoMCkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBvbWlzc2lvblxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gRmFjdG9yeSB0byBjaGVjayBpZiBhIGdpdmVuIG5vZGUgY2FuIGhhdmUgYSB0YWcgb21pdHRlZC5cbmZ1bmN0aW9uIG9taXNzaW9uKGhhbmRsZXJzKSB7XG4gIHJldHVybiBvbWl0XG5cbiAgLy8gQ2hlY2sgaWYgYSBnaXZlbiBub2RlIGNhbiBoYXZlIGEgdGFnIG9taXR0ZWQuXG4gIGZ1bmN0aW9uIG9taXQobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICAgIHZhciBuYW1lID0gbm9kZS50YWdOYW1lXG4gICAgdmFyIGZuID0gb3duLmNhbGwoaGFuZGxlcnMsIG5hbWUpID8gaGFuZGxlcnNbbmFtZV0gOiBmYWxzZVxuXG4gICAgcmV0dXJuIGZuID8gZm4obm9kZSwgaW5kZXgsIHBhcmVudCkgOiBmYWxzZVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxudmFyIGVsZW1lbnQgPSByZXF1aXJlKCdoYXN0LXV0aWwtaXMtZWxlbWVudCcpXG52YXIgd2hpdGVTcGFjZUxlZnQgPSByZXF1aXJlKCcuL3V0aWwvd2hpdGUtc3BhY2UtbGVmdCcpXG52YXIgYWZ0ZXIgPSByZXF1aXJlKCcuL3V0aWwvc2libGluZ3MnKS5hZnRlclxudmFyIG9taXNzaW9uID0gcmVxdWlyZSgnLi9vbWlzc2lvbicpXG5cbnZhciBpc0NvbW1lbnQgPSBjb252ZXJ0KCdjb21tZW50JylcblxudmFyIG9wdGlvbkdyb3VwID0gJ29wdGdyb3VwJ1xudmFyIG9wdGlvbnMgPSBbJ29wdGlvbiddLmNvbmNhdChvcHRpb25Hcm91cClcbnZhciBkYXRhTGlzdEl0ZW0gPSBbJ2R0JywgJ2RkJ11cbnZhciBsaXN0SXRlbSA9ICdsaSdcbnZhciBtZW51Q29udGVudCA9IFsnbWVudWl0ZW0nLCAnaHInLCAnbWVudSddXG52YXIgcnVieSA9IFsncnAnLCAncnQnXVxudmFyIHRhYmxlQ29udGFpbmVyID0gWyd0Ym9keScsICd0Zm9vdCddXG52YXIgdGFibGVSb3cgPSAndHInXG52YXIgdGFibGVDZWxsID0gWyd0ZCcsICd0aCddXG5cbnZhciBjb25mdXNpbmdQYXJhZ3JhcGhQYXJlbnQgPSBbXG4gICdhJyxcbiAgJ2F1ZGlvJyxcbiAgJ2RlbCcsXG4gICdpbnMnLFxuICAnbWFwJyxcbiAgJ25vc2NyaXB0JyxcbiAgJ3ZpZGVvJ1xuXVxuXG52YXIgY2xlYXJQYXJhZ3JhcGhTaWJsaW5nID0gW1xuICAnYWRkcmVzcycsXG4gICdhcnRpY2xlJyxcbiAgJ2FzaWRlJyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnZGV0YWlscycsXG4gICdkaXYnLFxuICAnZGwnLFxuICAnZmllbGRzZXQnLFxuICAnZmlnY2FwdGlvbicsXG4gICdmaWd1cmUnLFxuICAnZm9vdGVyJyxcbiAgJ2Zvcm0nLFxuICAnaDEnLFxuICAnaDInLFxuICAnaDMnLFxuICAnaDQnLFxuICAnaDUnLFxuICAnaDYnLFxuICAnaGVhZGVyJyxcbiAgJ2hncm91cCcsXG4gICdocicsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbmF2JyxcbiAgJ29sJyxcbiAgJ3AnLFxuICAncHJlJyxcbiAgJ3NlY3Rpb24nLFxuICAndGFibGUnLFxuICAndWwnXG5dXG5cbm1vZHVsZS5leHBvcnRzID0gb21pc3Npb24oe1xuICBodG1sOiBodG1sLFxuICBoZWFkOiBoZWFkT3JDb2xncm91cE9yQ2FwdGlvbixcbiAgYm9keTogYm9keSxcbiAgcDogcCxcbiAgbGk6IGxpLFxuICBkdDogZHQsXG4gIGRkOiBkZCxcbiAgcnQ6IHJ1YnlFbGVtZW50LFxuICBycDogcnVieUVsZW1lbnQsXG4gIG9wdGdyb3VwOiBvcHRncm91cCxcbiAgb3B0aW9uOiBvcHRpb24sXG4gIG1lbnVpdGVtOiBtZW51aXRlbSxcbiAgY29sZ3JvdXA6IGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uLFxuICBjYXB0aW9uOiBoZWFkT3JDb2xncm91cE9yQ2FwdGlvbixcbiAgdGhlYWQ6IHRoZWFkLFxuICB0Ym9keTogdGJvZHksXG4gIHRmb290OiB0Zm9vdCxcbiAgdHI6IHRyLFxuICB0ZDogY2VsbHMsXG4gIHRoOiBjZWxsc1xufSlcblxuLy8gTWFjcm8gZm9yIGA8L2hlYWQ+YCwgYDwvY29sZ3JvdXA+YCwgYW5kIGA8L2NhcHRpb24+YC5cbmZ1bmN0aW9uIGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4LCB0cnVlKVxuICByZXR1cm4gIW5leHQgfHwgKCFpc0NvbW1lbnQobmV4dCkgJiYgIXdoaXRlU3BhY2VMZWZ0KG5leHQpKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvaHRtbD5gLlxuZnVuY3Rpb24gaHRtbChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuICFuZXh0IHx8ICFpc0NvbW1lbnQobmV4dClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L2JvZHk+YC5cbmZ1bmN0aW9uIGJvZHkobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCAhaXNDb21tZW50KG5leHQpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC9wPmAuXG5mdW5jdGlvbiBwKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gbmV4dFxuICAgID8gZWxlbWVudChuZXh0LCBjbGVhclBhcmFncmFwaFNpYmxpbmcpXG4gICAgOiAhcGFyZW50IHx8ICFlbGVtZW50KHBhcmVudCwgY29uZnVzaW5nUGFyYWdyYXBoUGFyZW50KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvbGk+YC5cbmZ1bmN0aW9uIGxpKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBsaXN0SXRlbSlcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L2R0PmAuXG5mdW5jdGlvbiBkdChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuIG5leHQgJiYgZWxlbWVudChuZXh0LCBkYXRhTGlzdEl0ZW0pXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC9kZD5gLlxuZnVuY3Rpb24gZGQobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIGRhdGFMaXN0SXRlbSlcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3J0PmAgb3IgYDwvcnA+YC5cbmZ1bmN0aW9uIHJ1YnlFbGVtZW50KG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBydWJ5KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvb3B0Z3JvdXA+YC5cbmZ1bmN0aW9uIG9wdGdyb3VwKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBvcHRpb25Hcm91cClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L29wdGlvbj5gLlxuZnVuY3Rpb24gb3B0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBvcHRpb25zKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvbWVudWl0ZW0+YC5cbmZ1bmN0aW9uIG1lbnVpdGVtKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBtZW51Q29udGVudClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3RoZWFkPmAuXG5mdW5jdGlvbiB0aGVhZChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuIG5leHQgJiYgZWxlbWVudChuZXh0LCB0YWJsZUNvbnRhaW5lcilcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3Rib2R5PmAuXG5mdW5jdGlvbiB0Ym9keShub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuICFuZXh0IHx8IGVsZW1lbnQobmV4dCwgdGFibGVDb250YWluZXIpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC90Zm9vdD5gLlxuZnVuY3Rpb24gdGZvb3Qobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICByZXR1cm4gIWFmdGVyKHBhcmVudCwgaW5kZXgpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC90cj5gLlxuZnVuY3Rpb24gdHIobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIHRhYmxlUm93KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvdGQ+YCBvciBgPC90aD5gLlxuZnVuY3Rpb24gY2VsbHMobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIHRhYmxlQ2VsbClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgY29udmVydCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtaXMvY29udmVydCcpXG52YXIgZWxlbWVudCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1pcy1lbGVtZW50JylcbnZhciBiZWZvcmUgPSByZXF1aXJlKCcuL3V0aWwvc2libGluZ3MnKS5iZWZvcmVcbnZhciBmaXJzdCA9IHJlcXVpcmUoJy4vdXRpbC9maXJzdCcpXG52YXIgcGxhY2UgPSByZXF1aXJlKCcuL3V0aWwvcGxhY2UnKVxudmFyIHdoaXRlU3BhY2VMZWZ0ID0gcmVxdWlyZSgnLi91dGlsL3doaXRlLXNwYWNlLWxlZnQnKVxudmFyIGNsb3NpbmcgPSByZXF1aXJlKCcuL2Nsb3NpbmcnKVxudmFyIG9taXNzaW9uID0gcmVxdWlyZSgnLi9vbWlzc2lvbicpXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG52YXIgaXNDb21tZW50ID0gY29udmVydCgnY29tbWVudCcpXG5cbnZhciB1bmlxdWVIZWFkTWV0YWRhdGEgPSBbJ3RpdGxlJywgJ2Jhc2UnXVxudmFyIG1ldGEgPSBbJ21ldGEnLCAnbGluaycsICdzY3JpcHQnLCAnc3R5bGUnLCAndGVtcGxhdGUnXVxudmFyIHRhYmxlQ29udGFpbmVycyA9IFsndGhlYWQnLCAndGJvZHknXVxudmFyIHRhYmxlUm93ID0gJ3RyJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9taXNzaW9uKHtcbiAgaHRtbDogaHRtbCxcbiAgaGVhZDogaGVhZCxcbiAgYm9keTogYm9keSxcbiAgY29sZ3JvdXA6IGNvbGdyb3VwLFxuICB0Ym9keTogdGJvZHlcbn0pXG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPGh0bWw+YC5cbmZ1bmN0aW9uIGh0bWwobm9kZSkge1xuICB2YXIgaGVhZCA9IGZpcnN0KG5vZGUpXG4gIHJldHVybiAhaGVhZCB8fCAhaXNDb21tZW50KGhlYWQpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPGhlYWQ+YC5cbmZ1bmN0aW9uIGhlYWQobm9kZSkge1xuICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuXG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcbiAgdmFyIG1hcCA9IHt9XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBjaGlsZFxuICB2YXIgbmFtZVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hpbGQgPSBjaGlsZHJlbltpbmRleF1cbiAgICBuYW1lID0gY2hpbGQudGFnTmFtZVxuXG4gICAgaWYgKGVsZW1lbnQoY2hpbGQsIHVuaXF1ZUhlYWRNZXRhZGF0YSkpIHtcbiAgICAgIGlmIChvd24uY2FsbChtYXAsIG5hbWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICBtYXBbbmFtZV0gPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIEJvb2xlYW4obGVuZ3RoKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDxib2R5PmAuXG5mdW5jdGlvbiBib2R5KG5vZGUpIHtcbiAgdmFyIGhlYWQgPSBmaXJzdChub2RlLCB0cnVlKVxuXG4gIHJldHVybiAoXG4gICAgIWhlYWQgfHwgKCFpc0NvbW1lbnQoaGVhZCkgJiYgIXdoaXRlU3BhY2VMZWZ0KGhlYWQpICYmICFlbGVtZW50KGhlYWQsIG1ldGEpKVxuICApXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPGNvbGdyb3VwPmAuXG4vLyBUaGUgc3BlYyBkZXNjcmliZXMgc29tZSBsb2dpYyBmb3IgdGhlIG9wZW5pbmcgdGFnLCBidXQgaXTigJlzIGVhc2llciB0b1xuLy8gaW1wbGVtZW50IGluIHRoZSBjbG9zaW5nIHRhZywgdG8gdGhlIHNhbWUgZWZmZWN0LCBzbyB3ZSBoYW5kbGUgaXQgdGhlcmVcbi8vIGluc3RlYWQuXG5mdW5jdGlvbiBjb2xncm91cChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBwcmV2ID0gYmVmb3JlKHBhcmVudCwgaW5kZXgpXG4gIHZhciBoZWFkID0gZmlyc3Qobm9kZSwgdHJ1ZSlcblxuICAvLyBQcmV2aW91cyBjb2xncm91cCB3YXMgYWxyZWFkeSBvbWl0dGVkLlxuICBpZiAoZWxlbWVudChwcmV2LCAnY29sZ3JvdXAnKSAmJiBjbG9zaW5nKHByZXYsIHBsYWNlKHBhcmVudCwgcHJldiksIHBhcmVudCkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBoZWFkICYmIGVsZW1lbnQoaGVhZCwgJ2NvbCcpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPHRib2R5PmAuXG5mdW5jdGlvbiB0Ym9keShub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBwcmV2ID0gYmVmb3JlKHBhcmVudCwgaW5kZXgpXG4gIHZhciBoZWFkID0gZmlyc3Qobm9kZSlcblxuICAvLyBQcmV2aW91cyB0YWJsZSBzZWN0aW9uIHdhcyBhbHJlYWR5IG9taXR0ZWQuXG4gIGlmIChcbiAgICBlbGVtZW50KHByZXYsIHRhYmxlQ29udGFpbmVycykgJiZcbiAgICBjbG9zaW5nKHByZXYsIHBsYWNlKHBhcmVudCwgcHJldiksIHBhcmVudClcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gaGVhZCAmJiBlbGVtZW50KGhlYWQsIHRhYmxlUm93KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5leHBvcnRzLm9wZW5pbmcgPSByZXF1aXJlKCcuL29wZW5pbmcnKVxuZXhwb3J0cy5jbG9zaW5nID0gcmVxdWlyZSgnLi9jbG9zaW5nJylcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgb25lID0gcmVxdWlyZSgnLi9vbmUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFsbFxuXG4vLyBTdHJpbmdpZnkgYWxsIGNoaWxkcmVuIG9mIGBwYXJlbnRgLlxuZnVuY3Rpb24gYWxsKGN0eCwgcGFyZW50KSB7XG4gIHZhciBjaGlsZHJlbiA9IHBhcmVudCAmJiBwYXJlbnQuY2hpbGRyZW5cbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcmVzdWx0cyA9IFtdXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRzW2luZGV4XSA9IG9uZShjdHgsIGNoaWxkcmVuW2luZGV4XSwgaW5kZXgsIHBhcmVudClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJycpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBoZXhhZGVjaW1hbFxuXG4vLyBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXIgY29kZSBhdCB0aGUgZmlyc3Rcbi8vIGNoYXJhY3RlciwgaXMgaGV4YWRlY2ltYWwuXG5mdW5jdGlvbiBoZXhhZGVjaW1hbChjaGFyYWN0ZXIpIHtcbiAgdmFyIGNvZGUgPSB0eXBlb2YgY2hhcmFjdGVyID09PSAnc3RyaW5nJyA/IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApIDogY2hhcmFjdGVyXG5cbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSA5NyAvKiBhICovICYmIGNvZGUgPD0gMTAyKSAvKiB6ICovIHx8XG4gICAgKGNvZGUgPj0gNjUgLyogQSAqLyAmJiBjb2RlIDw9IDcwKSAvKiBaICovIHx8XG4gICAgKGNvZGUgPj0gNDggLyogQSAqLyAmJiBjb2RlIDw9IDU3KSAvKiBaICovXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY2ltYWxcblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyIGNvZGUgYXQgdGhlIGZpcnN0XG4vLyBjaGFyYWN0ZXIsIGlzIGRlY2ltYWwuXG5mdW5jdGlvbiBkZWNpbWFsKGNoYXJhY3Rlcikge1xuICB2YXIgY29kZSA9IHR5cGVvZiBjaGFyYWN0ZXIgPT09ICdzdHJpbmcnID8gY2hhcmFjdGVyLmNoYXJDb2RlQXQoMCkgOiBjaGFyYWN0ZXJcblxuICByZXR1cm4gY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3IC8qIDAtOSAqL1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYWxwaGFiZXRpY2FsXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhbHBoYWJldGljYWwuXG5mdW5jdGlvbiBhbHBoYWJldGljYWwoY2hhcmFjdGVyKSB7XG4gIHZhciBjb2RlID0gdHlwZW9mIGNoYXJhY3RlciA9PT0gJ3N0cmluZycgPyBjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKSA6IGNoYXJhY3RlclxuXG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMjIpIC8qIGEteiAqLyB8fFxuICAgIChjb2RlID49IDY1ICYmIGNvZGUgPD0gOTApIC8qIEEtWiAqL1xuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGFscGhhYmV0aWNhbCA9IHJlcXVpcmUoJ2lzLWFscGhhYmV0aWNhbCcpXG52YXIgZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWRlY2ltYWwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFscGhhbnVtZXJpY2FsXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhbHBoYW51bWVyaWNhbC5cbmZ1bmN0aW9uIGFscGhhbnVtZXJpY2FsKGNoYXJhY3Rlcikge1xuICByZXR1cm4gYWxwaGFiZXRpY2FsKGNoYXJhY3RlcikgfHwgZGVjaW1hbChjaGFyYWN0ZXIpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGVudGl0aWVzID0gcmVxdWlyZSgnY2hhcmFjdGVyLWVudGl0aWVzLWh0bWw0JylcbnZhciBsZWdhY3kgPSByZXF1aXJlKCdjaGFyYWN0ZXItZW50aXRpZXMtbGVnYWN5JylcbnZhciBoZXhhZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWhleGFkZWNpbWFsJylcbnZhciBkZWNpbWFsID0gcmVxdWlyZSgnaXMtZGVjaW1hbCcpXG52YXIgYWxwaGFudW1lcmljYWwgPSByZXF1aXJlKCdpcy1hbHBoYW51bWVyaWNhbCcpXG52YXIgZGFuZ2Vyb3VzID0gcmVxdWlyZSgnLi9kYW5nZXJvdXMuanNvbicpXG5cbm1vZHVsZS5leHBvcnRzID0gZW5jb2RlXG5lbmNvZGUuZXNjYXBlID0gZXNjYXBlXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBMaXN0IG9mIGVuZm9yY2VkIGVzY2FwZXMuXG52YXIgZXNjYXBlcyA9IFsnXCInLCBcIidcIiwgJzwnLCAnPicsICcmJywgJ2AnXVxuXG4vLyBNYXAgb2YgY2hhcmFjdGVycyB0byBuYW1lcy5cbnZhciBjaGFyYWN0ZXJzID0gY29uc3RydWN0KClcblxuLy8gRGVmYXVsdCBlc2NhcGVzLlxudmFyIGRlZmF1bHRFc2NhcGVzID0gdG9FeHByZXNzaW9uKGVzY2FwZXMpXG5cbi8vIFN1cnJvZ2F0ZSBwYWlycy5cbnZhciBzdXJyb2dhdGVQYWlyID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl0vZ1xuXG4vLyBOb24tQVNDSUkgY2hhcmFjdGVycy5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4LCB1bmljb3JuL25vLWhleC1lc2NhcGVcbnZhciBibXAgPSAvW1xceDAxLVxcdFxceDBCXFxmXFx4MEUtXFx4MUZcXHg3RlxceDgxXFx4OERcXHg4RlxceDkwXFx4OURcXHhBMC1cXHVGRkZGXS9nXG5cbi8vIEVuY29kZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYHZhbHVlYC5cbmZ1bmN0aW9uIGVuY29kZSh2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBzdWJzZXQgPSBzZXR0aW5ncy5zdWJzZXRcbiAgdmFyIHNldCA9IHN1YnNldCA/IHRvRXhwcmVzc2lvbihzdWJzZXQpIDogZGVmYXVsdEVzY2FwZXNcbiAgdmFyIGVzY2FwZU9ubHkgPSBzZXR0aW5ncy5lc2NhcGVPbmx5XG4gIHZhciBvbWl0ID0gc2V0dGluZ3Mub21pdE9wdGlvbmFsU2VtaWNvbG9uc1xuXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShzZXQsIHJlcGxhY2UpXG5cbiAgaWYgKHN1YnNldCB8fCBlc2NhcGVPbmx5KSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByZXR1cm4gdmFsdWVcbiAgICAucmVwbGFjZShzdXJyb2dhdGVQYWlyLCByZXBsYWNlU3Vycm9nYXRlUGFpcilcbiAgICAucmVwbGFjZShibXAsIHJlcGxhY2UpXG5cbiAgZnVuY3Rpb24gcmVwbGFjZVN1cnJvZ2F0ZVBhaXIocGFpciwgcG9zLCB2YWwpIHtcbiAgICByZXR1cm4gdG9IZXhSZWZlcmVuY2UoXG4gICAgICAocGFpci5jaGFyQ29kZUF0KDApIC0gMHhkODAwKSAqIDB4NDAwICtcbiAgICAgICAgcGFpci5jaGFyQ29kZUF0KDEpIC1cbiAgICAgICAgMHhkYzAwICtcbiAgICAgICAgMHgxMDAwMCxcbiAgICAgIHZhbC5jaGFyQXQocG9zICsgMiksXG4gICAgICBvbWl0XG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZShjaGFyLCBwb3MsIHZhbCkge1xuICAgIHJldHVybiBvbmUoY2hhciwgdmFsLmNoYXJBdChwb3MgKyAxKSwgc2V0dGluZ3MpXG4gIH1cbn1cblxuLy8gU2hvcnRjdXQgdG8gZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBIVE1MLlxuZnVuY3Rpb24gZXNjYXBlKHZhbHVlKSB7XG4gIHJldHVybiBlbmNvZGUodmFsdWUsIHtlc2NhcGVPbmx5OiB0cnVlLCB1c2VOYW1lZFJlZmVyZW5jZXM6IHRydWV9KVxufVxuXG4vLyBFbmNvZGUgYGNoYXJgIGFjY29yZGluZyB0byBgb3B0aW9uc2AuXG5mdW5jdGlvbiBvbmUoY2hhciwgbmV4dCwgb3B0aW9ucykge1xuICB2YXIgc2hvcnRlc3QgPSBvcHRpb25zLnVzZVNob3J0ZXN0UmVmZXJlbmNlc1xuICB2YXIgb21pdCA9IG9wdGlvbnMub21pdE9wdGlvbmFsU2VtaWNvbG9uc1xuICB2YXIgbmFtZWRcbiAgdmFyIGNvZGVcbiAgdmFyIG51bWVyaWNcbiAgdmFyIGRlY2ltYWxcblxuICBpZiAoKHNob3J0ZXN0IHx8IG9wdGlvbnMudXNlTmFtZWRSZWZlcmVuY2VzKSAmJiBvd24uY2FsbChjaGFyYWN0ZXJzLCBjaGFyKSkge1xuICAgIG5hbWVkID0gdG9OYW1lZChjaGFyYWN0ZXJzW2NoYXJdLCBuZXh0LCBvbWl0LCBvcHRpb25zLmF0dHJpYnV0ZSlcbiAgfVxuXG4gIGlmIChzaG9ydGVzdCB8fCAhbmFtZWQpIHtcbiAgICBjb2RlID0gY2hhci5jaGFyQ29kZUF0KDApXG4gICAgbnVtZXJpYyA9IHRvSGV4UmVmZXJlbmNlKGNvZGUsIG5leHQsIG9taXQpXG5cbiAgICAvLyBVc2UgdGhlIHNob3J0ZXN0IG51bWVyaWMgcmVmZXJlbmNlIHdoZW4gcmVxdWVzdGVkLlxuICAgIC8vIEEgc2ltcGxlIGFsZ29yaXRobSB3b3VsZCB1c2UgZGVjaW1hbCBmb3IgYWxsIGNvZGUgcG9pbnRzIHVuZGVyIDEwMCwgYXNcbiAgICAvLyB0aG9zZSBhcmUgc2hvcnRlciB0aGFuIGhleGFkZWNpbWFsOlxuICAgIC8vXG4gICAgLy8gKiBgJiM5OTtgIHZzIGAmI3g2MztgIChkZWNpbWFsIHNob3J0ZXIpXG4gICAgLy8gKiBgJiMxMDA7YCB2cyBgJiN4NjQ7YCAoZXF1YWwpXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCBiZWNhdXNlIHdlIHRha2UgYG5leHRgIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGBvbWl0YCBpcyB1c2VkLFxuICAgIC8vIEFuZCBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0aGF0IGRlY2ltYWxzIGFyZSBzaG9ydGVyIG9uIGJpZ2dlciB2YWx1ZXMgYXNcbiAgICAvLyB3ZWxsIGlmIGBuZXh0YCBpcyBoZXhhZGVjaW1hbCBidXQgbm90IGRlY2ltYWwsIHdlIGluc3RlYWQgY29tcGFyZSBib3RoLlxuICAgIGlmIChzaG9ydGVzdCkge1xuICAgICAgZGVjaW1hbCA9IHRvRGVjaW1hbFJlZmVyZW5jZShjb2RlLCBuZXh0LCBvbWl0KVxuXG4gICAgICBpZiAoZGVjaW1hbC5sZW5ndGggPCBudW1lcmljLmxlbmd0aCkge1xuICAgICAgICBudW1lcmljID0gZGVjaW1hbFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChuYW1lZCAmJiAoIXNob3J0ZXN0IHx8IG5hbWVkLmxlbmd0aCA8IG51bWVyaWMubGVuZ3RoKSkge1xuICAgIHJldHVybiBuYW1lZFxuICB9XG5cbiAgcmV0dXJuIG51bWVyaWNcbn1cblxuLy8gVHJhbnNmb3JtIGBjb2RlYCBpbnRvIGFuIGVudGl0eS5cbmZ1bmN0aW9uIHRvTmFtZWQobmFtZSwgbmV4dCwgb21pdCwgYXR0cmlidXRlKSB7XG4gIHZhciB2YWx1ZSA9ICcmJyArIG5hbWVcblxuICBpZiAoXG4gICAgb21pdCAmJlxuICAgIG93bi5jYWxsKGxlZ2FjeSwgbmFtZSkgJiZcbiAgICBkYW5nZXJvdXMuaW5kZXhPZihuYW1lKSA9PT0gLTEgJiZcbiAgICAoIWF0dHJpYnV0ZSB8fCAobmV4dCAmJiBuZXh0ICE9PSAnPScgJiYgIWFscGhhbnVtZXJpY2FsKG5leHQpKSlcbiAgKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByZXR1cm4gdmFsdWUgKyAnOydcbn1cblxuLy8gVHJhbnNmb3JtIGBjb2RlYCBpbnRvIGEgaGV4YWRlY2ltYWwgY2hhcmFjdGVyIHJlZmVyZW5jZS5cbmZ1bmN0aW9uIHRvSGV4UmVmZXJlbmNlKGNvZGUsIG5leHQsIG9taXQpIHtcbiAgdmFyIHZhbHVlID0gJyYjeCcgKyBjb2RlLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBvbWl0ICYmIG5leHQgJiYgIWhleGFkZWNpbWFsKG5leHQpID8gdmFsdWUgOiB2YWx1ZSArICc7J1xufVxuXG4vLyBUcmFuc2Zvcm0gYGNvZGVgIGludG8gYSBkZWNpbWFsIGNoYXJhY3RlciByZWZlcmVuY2UuXG5mdW5jdGlvbiB0b0RlY2ltYWxSZWZlcmVuY2UoY29kZSwgbmV4dCwgb21pdCkge1xuICB2YXIgdmFsdWUgPSAnJiMnICsgU3RyaW5nKGNvZGUpXG4gIHJldHVybiBvbWl0ICYmIG5leHQgJiYgIWRlY2ltYWwobmV4dCkgPyB2YWx1ZSA6IHZhbHVlICsgJzsnXG59XG5cbi8vIENyZWF0ZSBhbiBleHByZXNzaW9uIGZvciBgY2hhcmFjdGVyc2AuXG5mdW5jdGlvbiB0b0V4cHJlc3Npb24oY2hhcmFjdGVycykge1xuICByZXR1cm4gbmV3IFJlZ0V4cCgnWycgKyBjaGFyYWN0ZXJzLmpvaW4oJycpICsgJ10nLCAnZycpXG59XG5cbi8vIENvbnN0cnVjdCB0aGUgbWFwLlxuZnVuY3Rpb24gY29uc3RydWN0KCkge1xuICB2YXIgY2hhcnMgPSB7fVxuICB2YXIgbmFtZVxuXG4gIGZvciAobmFtZSBpbiBlbnRpdGllcykge1xuICAgIGNoYXJzW2VudGl0aWVzW25hbWVdXSA9IG5hbWVcbiAgfVxuXG4gIHJldHVybiBjaGFyc1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJ3N0cmluZ2lmeS1lbnRpdGllcycpXG5cbm1vZHVsZS5leHBvcnRzID0gdGV4dFxuXG4vLyBTdHJpbmdpZnkgYHRleHRgLlxuZnVuY3Rpb24gdGV4dChjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHZhbHVlID0gbm9kZS52YWx1ZVxuXG4gIHJldHVybiBpc0xpdGVyYWwocGFyZW50KVxuICAgID8gdmFsdWVcbiAgICA6IGVudGl0aWVzKHZhbHVlLCB4dGVuZChjdHguZW50aXRpZXMsIHtzdWJzZXQ6IFsnPCcsICcmJ119KSlcbn1cblxuLy8gQ2hlY2sgaWYgY29udGVudCBvZiBgbm9kZWAgc2hvdWxkIGJlIGVzY2FwZWQuXG5mdW5jdGlvbiBpc0xpdGVyYWwobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiAobm9kZS50YWdOYW1lID09PSAnc2NyaXB0JyB8fCBub2RlLnRhZ05hbWUgPT09ICdzdHlsZScpXG59XG4iLCIndXNlIHN0cmljdCdcblxuLy8gQ2hhcmFjdGVycy5cbnZhciBuaWwgPSAnXFwwJ1xudmFyIGFtcGVyc2FuZCA9ICcmJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgdGFiID0gJ1xcdCdcbnZhciBncmF2ZUFjY2VudCA9ICdgJ1xudmFyIHF1b3RhdGlvbk1hcmsgPSAnXCInXG52YXIgYXBvc3Ryb3BoZSA9IFwiJ1wiXG52YXIgZXF1YWxzVG8gPSAnPSdcbnZhciBsZXNzVGhhbiA9ICc8J1xudmFyIGdyZWF0ZXJUaGFuID0gJz4nXG52YXIgc2xhc2ggPSAnLydcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgY2FycmlhZ2VSZXR1cm4gPSAnXFxyJ1xudmFyIGZvcm1GZWVkID0gJ1xcZidcblxudmFyIHdoaXRlc3BhY2UgPSBbc3BhY2UsIHRhYiwgbGluZUZlZWQsIGNhcnJpYWdlUmV0dXJuLCBmb3JtRmVlZF1cblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLW5hbWUtc3RhdGU+LlxudmFyIG5hbWUgPSB3aGl0ZXNwYWNlLmNvbmNhdChhbXBlcnNhbmQsIHNsYXNoLCBncmVhdGVyVGhhbiwgZXF1YWxzVG8pXG5cbi8vIFNlZTogPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2F0dHJpYnV0ZS12YWx1ZS0odW5xdW90ZWQpLXN0YXRlPi5cbnZhciB1bnF1b3RlZCA9IHdoaXRlc3BhY2UuY29uY2F0KGFtcGVyc2FuZCwgZ3JlYXRlclRoYW4pXG52YXIgdW5xdW90ZWRTYWZlID0gdW5xdW90ZWQuY29uY2F0KFxuICBuaWwsXG4gIHF1b3RhdGlvbk1hcmssXG4gIGFwb3N0cm9waGUsXG4gIGxlc3NUaGFuLFxuICBlcXVhbHNUbyxcbiAgZ3JhdmVBY2NlbnRcbilcblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLXZhbHVlLShzaW5nbGUtcXVvdGVkKS1zdGF0ZT4uXG52YXIgc2luZ2xlUXVvdGVkID0gW2FtcGVyc2FuZCwgYXBvc3Ryb3BoZV1cblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLXZhbHVlLShkb3VibGUtcXVvdGVkKS1zdGF0ZT4uXG52YXIgZG91YmxlUXVvdGVkID0gW2FtcGVyc2FuZCwgcXVvdGF0aW9uTWFya11cblxuLy8gTWFwcyBvZiBzdWJzZXRzLlxuLy8gRWFjaCB2YWx1ZSBpcyBhIG1hdHJpeCBvZiB0dXBsZXMuXG4vLyBUaGUgZmlyc3QgdmFsdWUgY2F1c2VzIHBhcnNlIGVycm9ycywgdGhlIHNlY29uZCBpcyB2YWxpZC5cbi8vIE9mIGJvdGggdmFsdWVzLCB0aGUgZmlyc3QgdmFsdWUgaXMgdW5zYWZlLCBhbmQgdGhlIHNlY29uZCBpcyBzYWZlLlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG5hbWU6IFtcbiAgICBbbmFtZSwgbmFtZS5jb25jYXQocXVvdGF0aW9uTWFyaywgYXBvc3Ryb3BoZSwgZ3JhdmVBY2NlbnQpXSxcbiAgICBbXG4gICAgICBuYW1lLmNvbmNhdChuaWwsIHF1b3RhdGlvbk1hcmssIGFwb3N0cm9waGUsIGxlc3NUaGFuKSxcbiAgICAgIG5hbWUuY29uY2F0KG5pbCwgcXVvdGF0aW9uTWFyaywgYXBvc3Ryb3BoZSwgbGVzc1RoYW4sIGdyYXZlQWNjZW50KVxuICAgIF1cbiAgXSxcbiAgdW5xdW90ZWQ6IFtbdW5xdW90ZWQsIHVucXVvdGVkU2FmZV0sIFt1bnF1b3RlZFNhZmUsIHVucXVvdGVkU2FmZV1dLFxuICBzaW5nbGU6IFtcbiAgICBbc2luZ2xlUXVvdGVkLCBzaW5nbGVRdW90ZWQuY29uY2F0KHF1b3RhdGlvbk1hcmssIGdyYXZlQWNjZW50KV0sXG4gICAgW1xuICAgICAgc2luZ2xlUXVvdGVkLmNvbmNhdChuaWwpLFxuICAgICAgc2luZ2xlUXVvdGVkLmNvbmNhdChuaWwsIHF1b3RhdGlvbk1hcmssIGdyYXZlQWNjZW50KVxuICAgIF1cbiAgXSxcbiAgZG91YmxlOiBbXG4gICAgW2RvdWJsZVF1b3RlZCwgZG91YmxlUXVvdGVkLmNvbmNhdChhcG9zdHJvcGhlLCBncmF2ZUFjY2VudCldLFxuICAgIFtcbiAgICAgIGRvdWJsZVF1b3RlZC5jb25jYXQobmlsKSxcbiAgICAgIGRvdWJsZVF1b3RlZC5jb25jYXQobmlsLCBhcG9zdHJvcGhlLCBncmF2ZUFjY2VudClcbiAgICBdXG4gIF1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgc3ZnID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vc3ZnJylcbnZhciBmaW5kID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vZmluZCcpXG52YXIgc3BhY2VzID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpLnN0cmluZ2lmeVxudmFyIGNvbW1hcyA9IHJlcXVpcmUoJ2NvbW1hLXNlcGFyYXRlZC10b2tlbnMnKS5zdHJpbmdpZnlcbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJ3N0cmluZ2lmeS1lbnRpdGllcycpXG52YXIgY2NvdW50ID0gcmVxdWlyZSgnY2NvdW50JylcbnZhciBhbGwgPSByZXF1aXJlKCcuL2FsbCcpXG52YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVsZW1lbnRcblxudmFyIHNwYWNlID0gJyAnXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcbnZhciBlcXVhbHNUbyA9ICc9J1xudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBzbGFzaCA9ICcvJ1xuXG4vLyBTdHJpbmdpZnkgYW4gZWxlbWVudCBgbm9kZWAuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZnVuY3Rpb24gZWxlbWVudChjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHBhcmVudFNjaGVtYSA9IGN0eC5zY2hlbWFcbiAgdmFyIG5hbWUgPSBub2RlLnRhZ05hbWVcbiAgdmFyIHZhbHVlID0gJydcbiAgdmFyIHNlbGZDbG9zaW5nXG4gIHZhciBjbG9zZVxuICB2YXIgb21pdFxuICB2YXIgcm9vdCA9IG5vZGVcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGF0dHJzXG4gIHZhciBsYXN0XG5cbiAgaWYgKHBhcmVudFNjaGVtYS5zcGFjZSA9PT0gJ2h0bWwnICYmIG5hbWUgPT09ICdzdmcnKSB7XG4gICAgY3R4LnNjaGVtYSA9IHN2Z1xuICB9XG5cbiAgYXR0cnMgPSBhdHRyaWJ1dGVzKGN0eCwgbm9kZS5wcm9wZXJ0aWVzKVxuXG4gIGlmIChjdHguc2NoZW1hLnNwYWNlID09PSAnc3ZnJykge1xuICAgIG9taXQgPSBmYWxzZVxuICAgIGNsb3NlID0gdHJ1ZVxuICAgIHNlbGZDbG9zaW5nID0gY3R4LmNsb3NlRW1wdHlcbiAgfSBlbHNlIHtcbiAgICBvbWl0ID0gY3R4Lm9taXRcbiAgICBjbG9zZSA9IGN0eC5jbG9zZVxuICAgIHNlbGZDbG9zaW5nID0gY3R4LnZvaWRzLmluZGV4T2YobmFtZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTFcblxuICAgIGlmIChuYW1lID09PSAndGVtcGxhdGUnKSB7XG4gICAgICByb290ID0gbm9kZS5jb250ZW50XG4gICAgfVxuICB9XG5cbiAgY29udGVudCA9IGFsbChjdHgsIHJvb3QpXG5cbiAgLy8gSWYgdGhlIG5vZGUgaXMgY2F0ZWdvcmlzZWQgYXMgdm9pZCwgYnV0IGl0IGhhcyBjaGlsZHJlbiwgcmVtb3ZlIHRoZVxuICAvLyBjYXRlZ29yaXNhdGlvbi5cbiAgLy8gVGhpcyBlbmFibGVzIGZvciBleGFtcGxlIGBtZW51aXRlbWBzLCB3aGljaCBhcmUgdm9pZCBpbiBXM0MgSFRNTCBidXQgbm90XG4gIC8vIHZvaWQgaW4gV0hBVFdHIEhUTUwsIHRvIGJlIHN0cmluZ2lmaWVkIHByb3Blcmx5LlxuICBzZWxmQ2xvc2luZyA9IGNvbnRlbnQgPyBmYWxzZSA6IHNlbGZDbG9zaW5nXG5cbiAgaWYgKGF0dHJzIHx8ICFvbWl0IHx8ICFvbWl0Lm9wZW5pbmcobm9kZSwgaW5kZXgsIHBhcmVudCkpIHtcbiAgICB2YWx1ZSA9IGxlc3NUaGFuICsgbmFtZSArIChhdHRycyA/IHNwYWNlICsgYXR0cnMgOiAnJylcblxuICAgIGlmIChzZWxmQ2xvc2luZyAmJiBjbG9zZSkge1xuICAgICAgbGFzdCA9IGF0dHJzLmNoYXJBdChhdHRycy5sZW5ndGggLSAxKVxuICAgICAgaWYgKFxuICAgICAgICAhY3R4LnRpZ2h0Q2xvc2UgfHxcbiAgICAgICAgbGFzdCA9PT0gc2xhc2ggfHxcbiAgICAgICAgKGN0eC5zY2hlbWEuc3BhY2UgPT09ICdzdmcnICYmXG4gICAgICAgICAgbGFzdCAmJlxuICAgICAgICAgIGxhc3QgIT09IHF1b3RhdGlvbk1hcmsgJiZcbiAgICAgICAgICBsYXN0ICE9PSBhcG9zdHJvcGhlKVxuICAgICAgKSB7XG4gICAgICAgIHZhbHVlICs9IHNwYWNlXG4gICAgICB9XG5cbiAgICAgIHZhbHVlICs9IHNsYXNoXG4gICAgfVxuXG4gICAgdmFsdWUgKz0gZ3JlYXRlclRoYW5cbiAgfVxuXG4gIHZhbHVlICs9IGNvbnRlbnRcblxuICBpZiAoIXNlbGZDbG9zaW5nICYmICghb21pdCB8fCAhb21pdC5jbG9zaW5nKG5vZGUsIGluZGV4LCBwYXJlbnQpKSkge1xuICAgIHZhbHVlICs9IGxlc3NUaGFuICsgc2xhc2ggKyBuYW1lICsgZ3JlYXRlclRoYW5cbiAgfVxuXG4gIGN0eC5zY2hlbWEgPSBwYXJlbnRTY2hlbWFcblxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gU3RyaW5naWZ5IGFsbCBhdHRyaWJ1dGVzLlxuZnVuY3Rpb24gYXR0cmlidXRlcyhjdHgsIHByb3BzKSB7XG4gIHZhciB2YWx1ZXMgPSBbXVxuICB2YXIga2V5XG4gIHZhciB2YWx1ZVxuICB2YXIgcmVzdWx0XG4gIHZhciBsZW5ndGhcbiAgdmFyIGluZGV4XG4gIHZhciBsYXN0XG5cbiAgZm9yIChrZXkgaW4gcHJvcHMpIHtcbiAgICB2YWx1ZSA9IHByb3BzW2tleV1cblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHJlc3VsdCA9IGF0dHJpYnV0ZShjdHgsIGtleSwgdmFsdWUpXG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICB2YWx1ZXMucHVzaChyZXN1bHQpXG4gICAgfVxuICB9XG5cbiAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aFxuICBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHQgPSB2YWx1ZXNbaW5kZXhdXG4gICAgbGFzdCA9IG51bGxcblxuICAgIGlmIChjdHgudGlnaHQpIHtcbiAgICAgIGxhc3QgPSByZXN1bHQuY2hhckF0KHJlc3VsdC5sZW5ndGggLSAxKVxuICAgIH1cblxuICAgIC8vIEluIHRpZ2h0IG1vZGUsIGRvbuKAmXQgYWRkIGEgc3BhY2UgYWZ0ZXIgcXVvdGVkIGF0dHJpYnV0ZXMuXG4gICAgaWYgKGluZGV4ICE9PSBsZW5ndGggLSAxICYmIGxhc3QgIT09IHF1b3RhdGlvbk1hcmsgJiYgbGFzdCAhPT0gYXBvc3Ryb3BoZSkge1xuICAgICAgdmFsdWVzW2luZGV4XSA9IHJlc3VsdCArIHNwYWNlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlcy5qb2luKCcnKVxufVxuXG4vLyBTdHJpbmdpZnkgb25lIGF0dHJpYnV0ZS5cbmZ1bmN0aW9uIGF0dHJpYnV0ZShjdHgsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHNjaGVtYSA9IGN0eC5zY2hlbWFcbiAgdmFyIGluZm8gPSBmaW5kKHNjaGVtYSwga2V5KVxuICB2YXIgbmFtZSA9IGluZm8uYXR0cmlidXRlXG5cbiAgaWYgKGluZm8ub3ZlcmxvYWRlZEJvb2xlYW4gJiYgKHZhbHVlID09PSBuYW1lIHx8IHZhbHVlID09PSAnJykpIHtcbiAgICB2YWx1ZSA9IHRydWVcbiAgfSBlbHNlIGlmIChcbiAgICBpbmZvLmJvb2xlYW4gfHxcbiAgICAoaW5mby5vdmVybG9hZGVkQm9vbGVhbiAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKVxuICApIHtcbiAgICB2YWx1ZSA9IEJvb2xlYW4odmFsdWUpXG4gIH1cblxuICBpZiAoXG4gICAgdmFsdWUgPT0gbnVsbCB8fFxuICAgIHZhbHVlID09PSBmYWxzZSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzTmFOKHZhbHVlKSlcbiAgKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBuYW1lID0gYXR0cmlidXRlTmFtZShjdHgsIG5hbWUpXG5cbiAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgLy8gVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIGJvb2xlYW4gcHJvcGVydHkgaW4gU1ZHOiBgW2Rvd25sb2FkXWAgb25cbiAgICAvLyBgPGE+YC5cbiAgICAvLyBUaGlzIHByb3BlcnR5IGRvZXMgbm90IHNlZW0gdG8gd29yayBpbiBicm93c2VycyAoRkYsIFNhLCBDaCksIHNvIEkgY2Fu4oCZdFxuICAgIC8vIHRlc3QgaWYgZHJvcHBpbmcgdGhlIHZhbHVlIHdvcmtzLlxuICAgIC8vIEJ1dCBJIGFzc3VtZSB0aGF0IGl0IHNob3VsZDpcbiAgICAvL1xuICAgIC8vIGBgYGh0bWxcbiAgICAvLyA8IWRvY3R5cGUgaHRtbD5cbiAgICAvLyA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiPlxuICAgIC8vICAgPGEgaHJlZj1odHRwczovL2V4YW1wbGUuY29tIGRvd25sb2FkPlxuICAgIC8vICAgICA8Y2lyY2xlIGN4PTUwIGN5PTQwIHI9MzUgLz5cbiAgICAvLyAgIDwvYT5cbiAgICAvLyA8L3N2Zz5cbiAgICAvLyBgYGBcbiAgICAvL1xuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS93b29vcm0vcHJvcGVydHktaW5mb3JtYXRpb24vYmxvYi9tYXN0ZXIvbGliL3N2Zy5qcz5cbiAgICByZXR1cm4gbmFtZVxuICB9XG5cbiAgcmV0dXJuIG5hbWUgKyBhdHRyaWJ1dGVWYWx1ZShjdHgsIGtleSwgdmFsdWUsIGluZm8pXG59XG5cbi8vIFN0cmluZ2lmeSB0aGUgYXR0cmlidXRlIG5hbWUuXG5mdW5jdGlvbiBhdHRyaWJ1dGVOYW1lKGN0eCwgbmFtZSkge1xuICAvLyBBbHdheXMgZW5jb2RlIHdpdGhvdXQgcGFyc2UgZXJyb3JzIGluIG5vbi1IVE1MLlxuICB2YXIgdmFsaWQgPSBjdHguc2NoZW1hLnNwYWNlID09PSAnaHRtbCcgPyBjdHgudmFsaWQgOiAxXG4gIHZhciBzdWJzZXQgPSBjb25zdGFudHMubmFtZVt2YWxpZF1bY3R4LnNhZmVdXG5cbiAgcmV0dXJuIGVudGl0aWVzKG5hbWUsIHh0ZW5kKGN0eC5lbnRpdGllcywge3N1YnNldDogc3Vic2V0fSkpXG59XG5cbi8vIFN0cmluZ2lmeSB0aGUgYXR0cmlidXRlIHZhbHVlLlxuZnVuY3Rpb24gYXR0cmlidXRlVmFsdWUoY3R4LCBrZXksIHZhbHVlLCBpbmZvKSB7XG4gIHZhciBvcHRpb25zID0gY3R4LmVudGl0aWVzXG4gIHZhciBxdW90ZSA9IGN0eC5xdW90ZVxuICB2YXIgYWx0ZXJuYXRpdmUgPSBjdHguYWx0ZXJuYXRpdmVcbiAgdmFyIHVucXVvdGVkXG4gIHZhciBzdWJzZXRcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgIC8vIGBzcGFjZXNgIGRvZXNu4oCZdCBhY2NlcHQgYSBzZWNvbmQgYXJndW1lbnQsIGJ1dCBpdOKAmXMgZ2l2ZW4gaGVyZSBqdXN0IHRvXG4gICAgLy8ga2VlcCB0aGUgY29kZSBjbGVhbmVyLlxuICAgIHZhbHVlID0gKGluZm8uY29tbWFTZXBhcmF0ZWQgPyBjb21tYXMgOiBzcGFjZXMpKHZhbHVlLCB7XG4gICAgICBwYWRMZWZ0OiAhY3R4LnRpZ2h0TGlzdHNcbiAgICB9KVxuICB9XG5cbiAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG5cbiAgaWYgKHZhbHVlIHx8ICFjdHguY29sbGFwc2VFbXB0eSkge1xuICAgIHVucXVvdGVkID0gdmFsdWVcblxuICAgIC8vIENoZWNrIHVucXVvdGVkIHZhbHVlLlxuICAgIGlmIChjdHgudW5xdW90ZWQpIHtcbiAgICAgIHN1YnNldCA9IGNvbnN0YW50cy51bnF1b3RlZFtjdHgudmFsaWRdW2N0eC5zYWZlXVxuICAgICAgdW5xdW90ZWQgPSBlbnRpdGllcyhcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHh0ZW5kKG9wdGlvbnMsIHtzdWJzZXQ6IHN1YnNldCwgYXR0cmlidXRlOiB0cnVlfSlcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBJZiBgdmFsdWVgIGNvbnRhaW5zIGVudGl0aWVzIHdoZW4gdW5xdW90ZWTigKZcbiAgICBpZiAoIWN0eC51bnF1b3RlZCB8fCB1bnF1b3RlZCAhPT0gdmFsdWUpIHtcbiAgICAgIC8vIElmIHRoZSBhbHRlcm5hdGl2ZSBpcyBsZXNzIGNvbW1vbiB0aGFuIGBxdW90ZWAsIHN3aXRjaC5cbiAgICAgIGlmIChhbHRlcm5hdGl2ZSAmJiBjY291bnQodmFsdWUsIHF1b3RlKSA+IGNjb3VudCh2YWx1ZSwgYWx0ZXJuYXRpdmUpKSB7XG4gICAgICAgIHF1b3RlID0gYWx0ZXJuYXRpdmVcbiAgICAgIH1cblxuICAgICAgc3Vic2V0ID0gcXVvdGUgPT09IGFwb3N0cm9waGUgPyBjb25zdGFudHMuc2luZ2xlIDogY29uc3RhbnRzLmRvdWJsZVxuICAgICAgLy8gQWx3YXlzIGVuY29kZSB3aXRob3V0IHBhcnNlIGVycm9ycyBpbiBub24tSFRNTC5cbiAgICAgIHN1YnNldCA9IHN1YnNldFtjdHguc2NoZW1hLnNwYWNlID09PSAnaHRtbCcgPyBjdHgudmFsaWQgOiAxXVtjdHguc2FmZV1cblxuICAgICAgdmFsdWUgPSBlbnRpdGllcyh2YWx1ZSwgeHRlbmQob3B0aW9ucywge3N1YnNldDogc3Vic2V0LCBhdHRyaWJ1dGU6IHRydWV9KSlcblxuICAgICAgdmFsdWUgPSBxdW90ZSArIHZhbHVlICsgcXVvdGVcbiAgICB9XG5cbiAgICAvLyBEb27igJl0IGFkZCBhIGA9YCBmb3IgdW5xdW90ZWQgZW1wdGllcy5cbiAgICB2YWx1ZSA9IHZhbHVlID8gZXF1YWxzVG8gKyB2YWx1ZSA6IHZhbHVlXG4gIH1cblxuICByZXR1cm4gdmFsdWVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRvY3R5cGVcblxuLy8gU3RyaW5naWZ5IGEgZG9jdHlwZSBgbm9kZWAuXG5mdW5jdGlvbiBkb2N0eXBlKGN0eCwgbm9kZSkge1xuICB2YXIgc2VwID0gY3R4LnRpZ2h0RG9jdHlwZSA/ICcnIDogJyAnXG4gIHZhciBuYW1lID0gbm9kZS5uYW1lXG4gIHZhciBwdWIgPSBub2RlLnB1YmxpY1xuICB2YXIgc3lzID0gbm9kZS5zeXN0ZW1cbiAgdmFyIHZhbCA9IFsnPCFkb2N0eXBlJ11cblxuICBpZiAobmFtZSkge1xuICAgIHZhbC5wdXNoKHNlcCwgbmFtZSlcblxuICAgIGlmIChwdWIgIT0gbnVsbCkge1xuICAgICAgdmFsLnB1c2goJyBwdWJsaWMnLCBzZXAsIHNtYXJ0KHB1YikpXG4gICAgfSBlbHNlIGlmIChzeXMgIT0gbnVsbCkge1xuICAgICAgdmFsLnB1c2goJyBzeXN0ZW0nKVxuICAgIH1cblxuICAgIGlmIChzeXMgIT0gbnVsbCkge1xuICAgICAgdmFsLnB1c2goc2VwLCBzbWFydChzeXMpKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWwuam9pbignJykgKyAnPidcbn1cblxuZnVuY3Rpb24gc21hcnQodmFsdWUpIHtcbiAgdmFyIHF1b3RlID0gdmFsdWUuaW5kZXhPZignXCInKSA9PT0gLTEgPyAnXCInIDogXCInXCJcbiAgcmV0dXJuIHF1b3RlICsgdmFsdWUgKyBxdW90ZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY29tbWVudFxuXG4vLyBTdHJpbmdpZnkgYSBjb21tZW50IGBub2RlYC5cbmZ1bmN0aW9uIGNvbW1lbnQoY3R4LCBub2RlKSB7XG4gIHJldHVybiAnPCEtLScgKyBub2RlLnZhbHVlICsgJy0tPidcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdGV4dCA9IHJlcXVpcmUoJy4vdGV4dCcpXG5cbm1vZHVsZS5leHBvcnRzID0gcmF3XG5cbi8vIFN0cmluZ2lmeSBgcmF3YC5cbmZ1bmN0aW9uIHJhdyhjdHgsIG5vZGUpIHtcbiAgcmV0dXJuIGN0eC5kYW5nZXJvdXMgPyBub2RlLnZhbHVlIDogdGV4dChjdHgsIG5vZGUpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBvbmVcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbnZhciBoYW5kbGVycyA9IHt9XG5cbmhhbmRsZXJzLnJvb3QgPSByZXF1aXJlKCcuL2FsbCcpXG5oYW5kbGVycy50ZXh0ID0gcmVxdWlyZSgnLi90ZXh0JylcbmhhbmRsZXJzLmVsZW1lbnQgPSByZXF1aXJlKCcuL2VsZW1lbnQnKVxuaGFuZGxlcnMuZG9jdHlwZSA9IHJlcXVpcmUoJy4vZG9jdHlwZScpXG5oYW5kbGVycy5jb21tZW50ID0gcmVxdWlyZSgnLi9jb21tZW50JylcbmhhbmRsZXJzLnJhdyA9IHJlcXVpcmUoJy4vcmF3JylcblxuLy8gU3RyaW5naWZ5IGBub2RlYC5cbmZ1bmN0aW9uIG9uZShjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHR5cGUgPSBub2RlICYmIG5vZGUudHlwZVxuXG4gIGlmICghdHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgbm9kZSwgbm90IGAnICsgbm9kZSArICdgJylcbiAgfVxuXG4gIGlmICghb3duLmNhbGwoaGFuZGxlcnMsIHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29tcGlsZSB1bmtub3duIG5vZGUgYCcgKyB0eXBlICsgJ2AnKVxuICB9XG5cbiAgcmV0dXJuIGhhbmRsZXJzW3R5cGVdKGN0eCwgbm9kZSwgaW5kZXgsIHBhcmVudClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgaHRtbCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2h0bWwnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgdm9pZHMgPSByZXF1aXJlKCdodG1sLXZvaWQtZWxlbWVudHMnKVxudmFyIG9taXNzaW9uID0gcmVxdWlyZSgnLi9vbWlzc2lvbicpXG52YXIgb25lID0gcmVxdWlyZSgnLi9vbmUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvSHRtbFxuXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcblxuLy8gU3RyaW5naWZ5IHRoZSBnaXZlbiBoYXN0IG5vZGUuXG5mdW5jdGlvbiB0b0h0bWwobm9kZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBxdW90ZSA9IHNldHRpbmdzLnF1b3RlIHx8IHF1b3RhdGlvbk1hcmtcbiAgdmFyIGFsdGVybmF0aXZlID0gcXVvdGUgPT09IHF1b3RhdGlvbk1hcmsgPyBhcG9zdHJvcGhlIDogcXVvdGF0aW9uTWFya1xuICB2YXIgc21hcnQgPSBzZXR0aW5ncy5xdW90ZVNtYXJ0XG5cbiAgaWYgKHF1b3RlICE9PSBxdW90YXRpb25NYXJrICYmIHF1b3RlICE9PSBhcG9zdHJvcGhlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0ludmFsaWQgcXVvdGUgYCcgK1xuICAgICAgICBxdW90ZSArXG4gICAgICAgICdgLCBleHBlY3RlZCBgJyArXG4gICAgICAgIGFwb3N0cm9waGUgK1xuICAgICAgICAnYCBvciBgJyArXG4gICAgICAgIHF1b3RhdGlvbk1hcmsgK1xuICAgICAgICAnYCdcbiAgICApXG4gIH1cblxuICByZXR1cm4gb25lKFxuICAgIHtcbiAgICAgIHZhbGlkOiBzZXR0aW5ncy5hbGxvd1BhcnNlRXJyb3JzID8gMCA6IDEsXG4gICAgICBzYWZlOiBzZXR0aW5ncy5hbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnMgPyAwIDogMSxcbiAgICAgIHNjaGVtYTogc2V0dGluZ3Muc3BhY2UgPT09ICdzdmcnID8gc3ZnIDogaHRtbCxcbiAgICAgIG9taXQ6IHNldHRpbmdzLm9taXRPcHRpb25hbFRhZ3MgJiYgb21pc3Npb24sXG4gICAgICBxdW90ZTogcXVvdGUsXG4gICAgICBhbHRlcm5hdGl2ZTogc21hcnQgPyBhbHRlcm5hdGl2ZSA6IG51bGwsXG4gICAgICB1bnF1b3RlZDogQm9vbGVhbihzZXR0aW5ncy5wcmVmZXJVbnF1b3RlZCksXG4gICAgICB0aWdodDogc2V0dGluZ3MudGlnaHRBdHRyaWJ1dGVzLFxuICAgICAgdGlnaHREb2N0eXBlOiBCb29sZWFuKHNldHRpbmdzLnRpZ2h0RG9jdHlwZSksXG4gICAgICB0aWdodExpc3RzOiBzZXR0aW5ncy50aWdodENvbW1hU2VwYXJhdGVkTGlzdHMsXG4gICAgICB0aWdodENsb3NlOiBzZXR0aW5ncy50aWdodFNlbGZDbG9zaW5nLFxuICAgICAgY29sbGFwc2VFbXB0eTogc2V0dGluZ3MuY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXMsXG4gICAgICBkYW5nZXJvdXM6IHNldHRpbmdzLmFsbG93RGFuZ2Vyb3VzSFRNTCxcbiAgICAgIHZvaWRzOiBzZXR0aW5ncy52b2lkcyB8fCB2b2lkcy5jb25jYXQoKSxcbiAgICAgIGVudGl0aWVzOiBzZXR0aW5ncy5lbnRpdGllcyB8fCB7fSxcbiAgICAgIGNsb3NlOiBzZXR0aW5ncy5jbG9zZVNlbGZDbG9zaW5nLFxuICAgICAgY2xvc2VFbXB0eTogc2V0dGluZ3MuY2xvc2VFbXB0eUVsZW1lbnRzXG4gICAgfSxcbiAgICBub2RlXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYicpXG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIHRvSFRNTCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC10by1odG1sJylcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdpZnlcblxuZnVuY3Rpb24gc3RyaW5naWZ5KGNvbmZpZykge1xuICB2YXIgc2V0dGluZ3MgPSB4dGVuZChjb25maWcsIHRoaXMuZGF0YSgnc2V0dGluZ3MnKSlcblxuICB0aGlzLkNvbXBpbGVyID0gY29tcGlsZXJcblxuICBmdW5jdGlvbiBjb21waWxlcih0cmVlKSB7XG4gICAgcmV0dXJuIHRvSFRNTCh0cmVlLCBzZXR0aW5ncylcbiAgfVxufVxuIiwiaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaGVyaXRcblxuLy8gQ3JlYXRlIGEgY3VzdG9tIGNvbnN0cnVjdG9yIHdoaWNoIGNhbiBiZSBtb2RpZmllZCB3aXRob3V0IGFmZmVjdGluZyB0aGVcbi8vIG9yaWdpbmFsIGNsYXNzLlxuZnVuY3Rpb24gdW5oZXJpdChTdXBlcikge1xuICB2YXIgcmVzdWx0XG4gIHZhciBrZXlcbiAgdmFyIHZhbHVlXG5cbiAgaW5oZXJpdHMoT2YsIFN1cGVyKVxuICBpbmhlcml0cyhGcm9tLCBPZilcblxuICAvLyBDbG9uZSB2YWx1ZXMuXG4gIHJlc3VsdCA9IE9mLnByb3RvdHlwZVxuXG4gIGZvciAoa2V5IGluIHJlc3VsdCkge1xuICAgIHZhbHVlID0gcmVzdWx0W2tleV1cblxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXN1bHRba2V5XSA9ICdjb25jYXQnIGluIHZhbHVlID8gdmFsdWUuY29uY2F0KCkgOiB4dGVuZCh2YWx1ZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gT2ZcblxuICAvLyBDb25zdHJ1Y3RvciBhY2NlcHRpbmcgYSBzaW5nbGUgYXJndW1lbnQsIHdoaWNoIGl0c2VsZiBpcyBhbiBgYXJndW1lbnRzYFxuICAvLyBvYmplY3QuXG4gIGZ1bmN0aW9uIEZyb20ocGFyYW1ldGVycykge1xuICAgIHJldHVybiBTdXBlci5hcHBseSh0aGlzLCBwYXJhbWV0ZXJzKVxuICB9XG5cbiAgLy8gQ29uc3RydWN0b3IgYWNjZXB0aW5nIHZhcmlhZGljIGFyZ3VtZW50cy5cbiAgZnVuY3Rpb24gT2YoKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIE9mKSkge1xuICAgICAgcmV0dXJuIG5ldyBGcm9tKGFyZ3VtZW50cylcbiAgICB9XG5cbiAgICByZXR1cm4gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG5cbi8vIENvbnN0cnVjdCBhIHN0YXRlIGB0b2dnbGVyYDogYSBmdW5jdGlvbiB3aGljaCBpbnZlcnNlcyBgcHJvcGVydHlgIGluIGNvbnRleHRcbi8vIGJhc2VkIG9uIGl0cyBjdXJyZW50IHZhbHVlLlxuLy8gVGhlIGJ5IGB0b2dnbGVyYCByZXR1cm5lZCBmdW5jdGlvbiByZXN0b3JlcyB0aGF0IHZhbHVlLlxuZnVuY3Rpb24gZmFjdG9yeShrZXksIHN0YXRlLCBjdHgpIHtcbiAgcmV0dXJuIGVudGVyXG5cbiAgZnVuY3Rpb24gZW50ZXIoKSB7XG4gICAgdmFyIGNvbnRleHQgPSBjdHggfHwgdGhpc1xuICAgIHZhciBjdXJyZW50ID0gY29udGV4dFtrZXldXG5cbiAgICBjb250ZXh0W2tleV0gPSAhc3RhdGVcblxuICAgIHJldHVybiBleGl0XG5cbiAgICBmdW5jdGlvbiBleGl0KCkge1xuICAgICAgY29udGV4dFtrZXldID0gY3VycmVudFxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeVxuXG5mdW5jdGlvbiBmYWN0b3J5KGZpbGUpIHtcbiAgdmFyIGNvbnRlbnRzID0gaW5kaWNlcyhTdHJpbmcoZmlsZSkpXG5cbiAgcmV0dXJuIHtcbiAgICB0b1Bvc2l0aW9uOiBvZmZzZXRUb1Bvc2l0aW9uRmFjdG9yeShjb250ZW50cyksXG4gICAgdG9PZmZzZXQ6IHBvc2l0aW9uVG9PZmZzZXRGYWN0b3J5KGNvbnRlbnRzKVxuICB9XG59XG5cbi8vIEZhY3RvcnkgdG8gZ2V0IHRoZSBsaW5lIGFuZCBjb2x1bW4tYmFzZWQgYHBvc2l0aW9uYCBmb3IgYG9mZnNldGAgaW4gdGhlIGJvdW5kXG4vLyBpbmRpY2VzLlxuZnVuY3Rpb24gb2Zmc2V0VG9Qb3NpdGlvbkZhY3RvcnkoaW5kaWNlcykge1xuICByZXR1cm4gb2Zmc2V0VG9Qb3NpdGlvblxuXG4gIC8vIEdldCB0aGUgbGluZSBhbmQgY29sdW1uLWJhc2VkIGBwb3NpdGlvbmAgZm9yIGBvZmZzZXRgIGluIHRoZSBib3VuZCBpbmRpY2VzLlxuICBmdW5jdGlvbiBvZmZzZXRUb1Bvc2l0aW9uKG9mZnNldCkge1xuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIGxlbmd0aCA9IGluZGljZXMubGVuZ3RoXG5cbiAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChpbmRpY2VzW2luZGV4XSA+IG9mZnNldCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IGluZGV4ICsgMSxcbiAgICAgICAgICBjb2x1bW46IG9mZnNldCAtIChpbmRpY2VzW2luZGV4IC0gMV0gfHwgMCkgKyAxLFxuICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG4vLyBGYWN0b3J5IHRvIGdldCB0aGUgYG9mZnNldGAgZm9yIGEgbGluZSBhbmQgY29sdW1uLWJhc2VkIGBwb3NpdGlvbmAgaW4gdGhlXG4vLyBib3VuZCBpbmRpY2VzLlxuZnVuY3Rpb24gcG9zaXRpb25Ub09mZnNldEZhY3RvcnkoaW5kaWNlcykge1xuICByZXR1cm4gcG9zaXRpb25Ub09mZnNldFxuXG4gIC8vIEdldCB0aGUgYG9mZnNldGAgZm9yIGEgbGluZSBhbmQgY29sdW1uLWJhc2VkIGBwb3NpdGlvbmAgaW4gdGhlIGJvdW5kXG4gIC8vIGluZGljZXMuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uVG9PZmZzZXQocG9zaXRpb24pIHtcbiAgICB2YXIgbGluZSA9IHBvc2l0aW9uICYmIHBvc2l0aW9uLmxpbmVcbiAgICB2YXIgY29sdW1uID0gcG9zaXRpb24gJiYgcG9zaXRpb24uY29sdW1uXG5cbiAgICBpZiAoIWlzTmFOKGxpbmUpICYmICFpc05hTihjb2x1bW4pICYmIGxpbmUgLSAxIGluIGluZGljZXMpIHtcbiAgICAgIHJldHVybiAoaW5kaWNlc1tsaW5lIC0gMl0gfHwgMCkgKyBjb2x1bW4gLSAxIHx8IDBcbiAgICB9XG5cbiAgICByZXR1cm4gLTFcbiAgfVxufVxuXG4vLyBHZXQgaW5kaWNlcyBvZiBsaW5lLWJyZWFrcyBpbiBgdmFsdWVgLlxuZnVuY3Rpb24gaW5kaWNlcyh2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZignXFxuJylcblxuICB3aGlsZSAoaW5kZXggIT09IC0xKSB7XG4gICAgcmVzdWx0LnB1c2goaW5kZXggKyAxKVxuICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZignXFxuJywgaW5kZXggKyAxKVxuICB9XG5cbiAgcmVzdWx0LnB1c2godmFsdWUubGVuZ3RoICsgMSlcblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG5cbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcblxuLy8gRmFjdG9yeSB0byBkZS1lc2NhcGUgYSB2YWx1ZSwgYmFzZWQgb24gYSBsaXN0IGF0IGBrZXlgIGluIGBjdHhgLlxuZnVuY3Rpb24gZmFjdG9yeShjdHgsIGtleSkge1xuICByZXR1cm4gdW5lc2NhcGVcblxuICAvLyBEZS1lc2NhcGUgYSBzdHJpbmcgdXNpbmcgdGhlIGV4cHJlc3Npb24gYXQgYGtleWAgaW4gYGN0eGAuXG4gIGZ1bmN0aW9uIHVuZXNjYXBlKHZhbHVlKSB7XG4gICAgdmFyIHByZXYgPSAwXG4gICAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZihiYWNrc2xhc2gpXG4gICAgdmFyIGVzY2FwZSA9IGN0eFtrZXldXG4gICAgdmFyIHF1ZXVlID0gW11cbiAgICB2YXIgY2hhcmFjdGVyXG5cbiAgICB3aGlsZSAoaW5kZXggIT09IC0xKSB7XG4gICAgICBxdWV1ZS5wdXNoKHZhbHVlLnNsaWNlKHByZXYsIGluZGV4KSlcbiAgICAgIHByZXYgPSBpbmRleCArIDFcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChwcmV2KVxuXG4gICAgICAvLyBJZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpcyBub3QgYSB2YWxpZCBlc2NhcGUsIGFkZCB0aGUgc2xhc2guXG4gICAgICBpZiAoIWNoYXJhY3RlciB8fCBlc2NhcGUuaW5kZXhPZihjaGFyYWN0ZXIpID09PSAtMSkge1xuICAgICAgICBxdWV1ZS5wdXNoKGJhY2tzbGFzaClcbiAgICAgIH1cblxuICAgICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGJhY2tzbGFzaCwgcHJldiArIDEpXG4gICAgfVxuXG4gICAgcXVldWUucHVzaCh2YWx1ZS5zbGljZShwcmV2KSlcblxuICAgIHJldHVybiBxdWV1ZS5qb2luKCcnKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxuLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbnZhciBlbFxuXG52YXIgc2VtaWNvbG9uID0gNTkgLy8gICc7J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29kZUVudGl0eVxuXG5mdW5jdGlvbiBkZWNvZGVFbnRpdHkoY2hhcmFjdGVycykge1xuICB2YXIgZW50aXR5ID0gJyYnICsgY2hhcmFjdGVycyArICc7J1xuICB2YXIgY2hhclxuXG4gIGVsID0gZWwgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpXG4gIGVsLmlubmVySFRNTCA9IGVudGl0eVxuICBjaGFyID0gZWwudGV4dENvbnRlbnRcblxuICAvLyBTb21lIGVudGl0aWVzIGRvIG5vdCByZXF1aXJlIHRoZSBjbG9zaW5nIHNlbWljb2xvbiAoYCZub3RgIC0gZm9yIGluc3RhbmNlKSxcbiAgLy8gd2hpY2ggbGVhZHMgdG8gc2l0dWF0aW9ucyB3aGVyZSBwYXJzaW5nIHRoZSBhc3N1bWVkIGVudGl0eSBvZiAmbm90aXQ7IHdpbGxcbiAgLy8gcmVzdWx0IGluIHRoZSBzdHJpbmcgYMKsaXQ7YC4gIFdoZW4gd2UgZW5jb3VudGVyIGEgdHJhaWxpbmcgc2VtaWNvbG9uIGFmdGVyXG4gIC8vIHBhcnNpbmcgYW5kIHRoZSBlbnRpdHkgdG8gZGVjb2RlIHdhcyBub3QgYSBzZW1pY29sb24gKGAmc2VtaTtgKSwgd2UgY2FuXG4gIC8vIGFzc3VtZSB0aGF0IHRoZSBtYXRjaGluZyB3YXMgaW5jb21wbGV0ZVxuICBpZiAoY2hhci5jaGFyQ29kZUF0KGNoYXIubGVuZ3RoIC0gMSkgPT09IHNlbWljb2xvbiAmJiBjaGFyYWN0ZXJzICE9PSAnc2VtaScpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIElmIHRoZSBkZWNvZGVkIHN0cmluZyBpcyBlcXVhbCB0byB0aGUgaW5wdXQsIHRoZSBlbnRpdHkgd2FzIG5vdCB2YWxpZFxuICByZXR1cm4gY2hhciA9PT0gZW50aXR5ID8gZmFsc2UgOiBjaGFyXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGxlZ2FjeSA9IHJlcXVpcmUoJ2NoYXJhY3Rlci1lbnRpdGllcy1sZWdhY3knKVxudmFyIGludmFsaWQgPSByZXF1aXJlKCdjaGFyYWN0ZXItcmVmZXJlbmNlLWludmFsaWQnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBoZXhhZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWhleGFkZWNpbWFsJylcbnZhciBhbHBoYW51bWVyaWNhbCA9IHJlcXVpcmUoJ2lzLWFscGhhbnVtZXJpY2FsJylcbnZhciBkZWNvZGVFbnRpdHkgPSByZXF1aXJlKCcuL2RlY29kZS1lbnRpdHknKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlRW50aXRpZXNcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZVxudmFyIG5vb3AgPSBGdW5jdGlvbi5wcm90b3R5cGVcblxuLy8gRGVmYXVsdCBzZXR0aW5ncy5cbnZhciBkZWZhdWx0cyA9IHtcbiAgd2FybmluZzogbnVsbCxcbiAgcmVmZXJlbmNlOiBudWxsLFxuICB0ZXh0OiBudWxsLFxuICB3YXJuaW5nQ29udGV4dDogbnVsbCxcbiAgcmVmZXJlbmNlQ29udGV4dDogbnVsbCxcbiAgdGV4dENvbnRleHQ6IG51bGwsXG4gIHBvc2l0aW9uOiB7fSxcbiAgYWRkaXRpb25hbDogbnVsbCxcbiAgYXR0cmlidXRlOiBmYWxzZSxcbiAgbm9uVGVybWluYXRlZDogdHJ1ZVxufVxuXG4vLyBDaGFyYWN0ZXJzLlxudmFyIHRhYiA9IDkgLy8gJ1xcdCdcbnZhciBsaW5lRmVlZCA9IDEwIC8vICdcXG4nXG52YXIgZm9ybUZlZWQgPSAxMiAvLyAgJ1xcZidcbnZhciBzcGFjZSA9IDMyIC8vICcgJ1xudmFyIGFtcGVyc2FuZCA9IDM4IC8vICAnJidcbnZhciBzZW1pY29sb24gPSA1OSAvLyAgJzsnXG52YXIgbGVzc1RoYW4gPSA2MCAvLyAgJzwnXG52YXIgZXF1YWxzVG8gPSA2MSAvLyAgJz0nXG52YXIgbnVtYmVyU2lnbiA9IDM1IC8vICAnIydcbnZhciB1cHBlcmNhc2VYID0gODggLy8gICdYJ1xudmFyIGxvd2VyY2FzZVggPSAxMjAgLy8gICd4J1xudmFyIHJlcGxhY2VtZW50Q2hhcmFjdGVyID0gNjU1MzMgLy8gJ++/vSdcblxuLy8gUmVmZXJlbmNlIHR5cGVzLlxudmFyIG5hbWUgPSAnbmFtZWQnXG52YXIgaGV4YSA9ICdoZXhhZGVjaW1hbCdcbnZhciBkZWNpID0gJ2RlY2ltYWwnXG5cbi8vIE1hcCBvZiBiYXNlcy5cbnZhciBiYXNlcyA9IHt9XG5cbmJhc2VzW2hleGFdID0gMTZcbmJhc2VzW2RlY2ldID0gMTBcblxuLy8gTWFwIG9mIHR5cGVzIHRvIHRlc3RzLlxuLy8gRWFjaCB0eXBlIG9mIGNoYXJhY3RlciByZWZlcmVuY2UgYWNjZXB0cyBkaWZmZXJlbnQgY2hhcmFjdGVycy5cbi8vIFRoaXMgdGVzdCBpcyB1c2VkIHRvIGRldGVjdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGhhcyBlbmRlZCAoYXMgdGhlIHNlbWljb2xvblxuLy8gaXMgbm90IHN0cmljdGx5IG5lZWRlZCkuXG52YXIgdGVzdHMgPSB7fVxuXG50ZXN0c1tuYW1lXSA9IGFscGhhbnVtZXJpY2FsXG50ZXN0c1tkZWNpXSA9IGRlY2ltYWxcbnRlc3RzW2hleGFdID0gaGV4YWRlY2ltYWxcblxuLy8gV2FybmluZyB0eXBlcy5cbnZhciBuYW1lZE5vdFRlcm1pbmF0ZWQgPSAxXG52YXIgbnVtZXJpY05vdFRlcm1pbmF0ZWQgPSAyXG52YXIgbmFtZWRFbXB0eSA9IDNcbnZhciBudW1lcmljRW1wdHkgPSA0XG52YXIgbmFtZWRVbmtub3duID0gNVxudmFyIG51bWVyaWNEaXNhbGxvd2VkID0gNlxudmFyIG51bWVyaWNQcm9oaWJpdGVkID0gN1xuXG4vLyBXYXJuaW5nIG1lc3NhZ2VzLlxudmFyIG1lc3NhZ2VzID0ge31cblxubWVzc2FnZXNbbmFtZWROb3RUZXJtaW5hdGVkXSA9XG4gICdOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgYSBzZW1pY29sb24nXG5tZXNzYWdlc1tudW1lcmljTm90VGVybWluYXRlZF0gPVxuICAnTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgYSBzZW1pY29sb24nXG5tZXNzYWdlc1tuYW1lZEVtcHR5XSA9ICdOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgZW1wdHknXG5tZXNzYWdlc1tudW1lcmljRW1wdHldID0gJ051bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIGVtcHR5J1xubWVzc2FnZXNbbmFtZWRVbmtub3duXSA9ICdOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIGtub3duJ1xubWVzc2FnZXNbbnVtZXJpY0Rpc2FsbG93ZWRdID1cbiAgJ051bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIGRpc2FsbG93ZWQnXG5tZXNzYWdlc1tudW1lcmljUHJvaGliaXRlZF0gPVxuICAnTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgb3V0c2lkZSB0aGUgcGVybWlzc2libGUgVW5pY29kZSByYW5nZSdcblxuLy8gV3JhcCB0byBlbnN1cmUgY2xlYW4gcGFyYW1ldGVycyBhcmUgZ2l2ZW4gdG8gYHBhcnNlYC5cbmZ1bmN0aW9uIHBhcnNlRW50aXRpZXModmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0ge31cbiAgdmFyIG9wdGlvblxuICB2YXIga2V5XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICBmb3IgKGtleSBpbiBkZWZhdWx0cykge1xuICAgIG9wdGlvbiA9IG9wdGlvbnNba2V5XVxuICAgIHNldHRpbmdzW2tleV0gPVxuICAgICAgb3B0aW9uID09PSBudWxsIHx8IG9wdGlvbiA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdHNba2V5XSA6IG9wdGlvblxuICB9XG5cbiAgaWYgKHNldHRpbmdzLnBvc2l0aW9uLmluZGVudCB8fCBzZXR0aW5ncy5wb3NpdGlvbi5zdGFydCkge1xuICAgIHNldHRpbmdzLmluZGVudCA9IHNldHRpbmdzLnBvc2l0aW9uLmluZGVudCB8fCBbXVxuICAgIHNldHRpbmdzLnBvc2l0aW9uID0gc2V0dGluZ3MucG9zaXRpb24uc3RhcnRcbiAgfVxuXG4gIHJldHVybiBwYXJzZSh2YWx1ZSwgc2V0dGluZ3MpXG59XG5cbi8vIFBhcnNlIGVudGl0aWVzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmZ1bmN0aW9uIHBhcnNlKHZhbHVlLCBzZXR0aW5ncykge1xuICB2YXIgYWRkaXRpb25hbCA9IHNldHRpbmdzLmFkZGl0aW9uYWxcbiAgdmFyIG5vblRlcm1pbmF0ZWQgPSBzZXR0aW5ncy5ub25UZXJtaW5hdGVkXG4gIHZhciBoYW5kbGVUZXh0ID0gc2V0dGluZ3MudGV4dFxuICB2YXIgaGFuZGxlUmVmZXJlbmNlID0gc2V0dGluZ3MucmVmZXJlbmNlXG4gIHZhciBoYW5kbGVXYXJuaW5nID0gc2V0dGluZ3Mud2FybmluZ1xuICB2YXIgdGV4dENvbnRleHQgPSBzZXR0aW5ncy50ZXh0Q29udGV4dFxuICB2YXIgcmVmZXJlbmNlQ29udGV4dCA9IHNldHRpbmdzLnJlZmVyZW5jZUNvbnRleHRcbiAgdmFyIHdhcm5pbmdDb250ZXh0ID0gc2V0dGluZ3Mud2FybmluZ0NvbnRleHRcbiAgdmFyIHBvcyA9IHNldHRpbmdzLnBvc2l0aW9uXG4gIHZhciBpbmRlbnQgPSBzZXR0aW5ncy5pbmRlbnQgfHwgW11cbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsaW5lcyA9IC0xXG4gIHZhciBjb2x1bW4gPSBwb3MuY29sdW1uIHx8IDFcbiAgdmFyIGxpbmUgPSBwb3MubGluZSB8fCAxXG4gIHZhciBxdWV1ZSA9ICcnXG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgZW50aXR5Q2hhcmFjdGVyc1xuICB2YXIgbmFtZWRFbnRpdHlcbiAgdmFyIHRlcm1pbmF0ZWRcbiAgdmFyIGNoYXJhY3RlcnNcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgcmVmZXJlbmNlXG4gIHZhciBmb2xsb3dpbmdcbiAgdmFyIHdhcm5pbmdcbiAgdmFyIHJlYXNvblxuICB2YXIgb3V0cHV0XG4gIHZhciBlbnRpdHlcbiAgdmFyIGJlZ2luXG4gIHZhciBzdGFydFxuICB2YXIgdHlwZVxuICB2YXIgdGVzdFxuICB2YXIgcHJldlxuICB2YXIgbmV4dFxuICB2YXIgZGlmZlxuICB2YXIgZW5kXG5cbiAgaWYgKHR5cGVvZiBhZGRpdGlvbmFsID09PSAnc3RyaW5nJykge1xuICAgIGFkZGl0aW9uYWwgPSBhZGRpdGlvbmFsLmNoYXJDb2RlQXQoMClcbiAgfVxuXG4gIC8vIENhY2hlIHRoZSBjdXJyZW50IHBvaW50LlxuICBwcmV2ID0gbm93KClcblxuICAvLyBXcmFwIGBoYW5kbGVXYXJuaW5nYC5cbiAgd2FybmluZyA9IGhhbmRsZVdhcm5pbmcgPyBwYXJzZUVycm9yIDogbm9vcFxuXG4gIC8vIEVuc3VyZSB0aGUgYWxnb3JpdGhtIHdhbGtzIG92ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgdGhlIGVuZCAoaW5jbHVzaXZlKS5cbiAgaW5kZXgtLVxuICBsZW5ndGgrK1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgLy8gSWYgdGhlIHByZXZpb3VzIGNoYXJhY3RlciB3YXMgYSBuZXdsaW5lLlxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBjb2x1bW4gPSBpbmRlbnRbbGluZXNdIHx8IDFcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gYW1wZXJzYW5kKSB7XG4gICAgICBmb2xsb3dpbmcgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4ICsgMSlcblxuICAgICAgLy8gVGhlIGJlaGF2aW91ciBkZXBlbmRzIG9uIHRoZSBpZGVudGl0eSBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICBpZiAoXG4gICAgICAgIGZvbGxvd2luZyA9PT0gdGFiIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gbGluZUZlZWQgfHxcbiAgICAgICAgZm9sbG93aW5nID09PSBmb3JtRmVlZCB8fFxuICAgICAgICBmb2xsb3dpbmcgPT09IHNwYWNlIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gYW1wZXJzYW5kIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gbGVzc1RoYW4gfHxcbiAgICAgICAgZm9sbG93aW5nICE9PSBmb2xsb3dpbmcgfHxcbiAgICAgICAgKGFkZGl0aW9uYWwgJiYgZm9sbG93aW5nID09PSBhZGRpdGlvbmFsKVxuICAgICAgKSB7XG4gICAgICAgIC8vIE5vdCBhIGNoYXJhY3RlciByZWZlcmVuY2UuXG4gICAgICAgIC8vIE5vIGNoYXJhY3RlcnMgYXJlIGNvbnN1bWVkLCBhbmQgbm90aGluZyBpcyByZXR1cm5lZC5cbiAgICAgICAgLy8gVGhpcyBpcyBub3QgYW4gZXJyb3IsIGVpdGhlci5cbiAgICAgICAgcXVldWUgKz0gZnJvbUNoYXJDb2RlKGNoYXJhY3RlcilcbiAgICAgICAgY29sdW1uKytcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBzdGFydCA9IGluZGV4ICsgMVxuICAgICAgYmVnaW4gPSBzdGFydFxuICAgICAgZW5kID0gc3RhcnRcblxuICAgICAgaWYgKGZvbGxvd2luZyA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgICAvLyBOdW1lcmljYWwgZW50aXR5LlxuICAgICAgICBlbmQgPSArK2JlZ2luXG5cbiAgICAgICAgLy8gVGhlIGJlaGF2aW91ciBmdXJ0aGVyIGRlcGVuZHMgb24gdGhlIG5leHQgY2hhcmFjdGVyLlxuICAgICAgICBmb2xsb3dpbmcgPSB2YWx1ZS5jaGFyQ29kZUF0KGVuZClcblxuICAgICAgICBpZiAoZm9sbG93aW5nID09PSB1cHBlcmNhc2VYIHx8IGZvbGxvd2luZyA9PT0gbG93ZXJjYXNlWCkge1xuICAgICAgICAgIC8vIEFTQ0lJIGhleCBkaWdpdHMuXG4gICAgICAgICAgdHlwZSA9IGhleGFcbiAgICAgICAgICBlbmQgPSArK2JlZ2luXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQVNDSUkgZGlnaXRzLlxuICAgICAgICAgIHR5cGUgPSBkZWNpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5hbWVkIGVudGl0eS5cbiAgICAgICAgdHlwZSA9IG5hbWVcbiAgICAgIH1cblxuICAgICAgZW50aXR5Q2hhcmFjdGVycyA9ICcnXG4gICAgICBlbnRpdHkgPSAnJ1xuICAgICAgY2hhcmFjdGVycyA9ICcnXG4gICAgICB0ZXN0ID0gdGVzdHNbdHlwZV1cbiAgICAgIGVuZC0tXG5cbiAgICAgIHdoaWxlICgrK2VuZCA8IGxlbmd0aCkge1xuICAgICAgICBmb2xsb3dpbmcgPSB2YWx1ZS5jaGFyQ29kZUF0KGVuZClcblxuICAgICAgICBpZiAoIXRlc3QoZm9sbG93aW5nKSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBjaGFyYWN0ZXJzICs9IGZyb21DaGFyQ29kZShmb2xsb3dpbmcpXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgd2UgY2FuIG1hdGNoIGEgbGVnYWN5IG5hbWVkIHJlZmVyZW5jZS5cbiAgICAgICAgLy8gSWYgc28sIHdlIGNhY2hlIHRoYXQgYXMgdGhlIGxhc3QgdmlhYmxlIG5hbWVkIHJlZmVyZW5jZS5cbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHdlIGRvIG5vdCBuZWVkIHRvIHdhbGsgYmFja3dhcmRzIGxhdGVyLlxuICAgICAgICBpZiAodHlwZSA9PT0gbmFtZSAmJiBvd24uY2FsbChsZWdhY3ksIGNoYXJhY3RlcnMpKSB7XG4gICAgICAgICAgZW50aXR5Q2hhcmFjdGVycyA9IGNoYXJhY3RlcnNcbiAgICAgICAgICBlbnRpdHkgPSBsZWdhY3lbY2hhcmFjdGVyc11cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0ZXJtaW5hdGVkID0gdmFsdWUuY2hhckNvZGVBdChlbmQpID09PSBzZW1pY29sb25cblxuICAgICAgaWYgKHRlcm1pbmF0ZWQpIHtcbiAgICAgICAgZW5kKytcblxuICAgICAgICBuYW1lZEVudGl0eSA9IHR5cGUgPT09IG5hbWUgPyBkZWNvZGVFbnRpdHkoY2hhcmFjdGVycykgOiBmYWxzZVxuXG4gICAgICAgIGlmIChuYW1lZEVudGl0eSkge1xuICAgICAgICAgIGVudGl0eUNoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzXG4gICAgICAgICAgZW50aXR5ID0gbmFtZWRFbnRpdHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkaWZmID0gMSArIGVuZCAtIHN0YXJ0XG5cbiAgICAgIGlmICghdGVybWluYXRlZCAmJiAhbm9uVGVybWluYXRlZCkge1xuICAgICAgICAvLyBFbXB0eS5cbiAgICAgIH0gZWxzZSBpZiAoIWNoYXJhY3RlcnMpIHtcbiAgICAgICAgLy8gQW4gZW1wdHkgKHBvc3NpYmxlKSBlbnRpdHkgaXMgdmFsaWQsIHVubGVzcyBpdOKAmXMgbnVtZXJpYyAodGh1cyBhblxuICAgICAgICAvLyBhbXBlcnNhbmQgZm9sbG93ZWQgYnkgYW4gb2N0b3Rob3JwKS5cbiAgICAgICAgaWYgKHR5cGUgIT09IG5hbWUpIHtcbiAgICAgICAgICB3YXJuaW5nKG51bWVyaWNFbXB0eSwgZGlmZilcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBuYW1lKSB7XG4gICAgICAgIC8vIEFuIGFtcGVyc2FuZCBmb2xsb3dlZCBieSBhbnl0aGluZyB1bmtub3duLCBhbmQgbm90IHRlcm1pbmF0ZWQsIGlzXG4gICAgICAgIC8vIGludmFsaWQuXG4gICAgICAgIGlmICh0ZXJtaW5hdGVkICYmICFlbnRpdHkpIHtcbiAgICAgICAgICB3YXJuaW5nKG5hbWVkVW5rbm93biwgMSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiB0aGVyZXMgc29tZXRoaW5nIGFmdGVyIGFuIGVudGl0eSBuYW1lIHdoaWNoIGlzIG5vdCBrbm93biwgY2FwXG4gICAgICAgICAgLy8gdGhlIHJlZmVyZW5jZS5cbiAgICAgICAgICBpZiAoZW50aXR5Q2hhcmFjdGVycyAhPT0gY2hhcmFjdGVycykge1xuICAgICAgICAgICAgZW5kID0gYmVnaW4gKyBlbnRpdHlDaGFyYWN0ZXJzLmxlbmd0aFxuICAgICAgICAgICAgZGlmZiA9IDEgKyBlbmQgLSBiZWdpblxuICAgICAgICAgICAgdGVybWluYXRlZCA9IGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBub3QgdGVybWluYXRlZCwgd2Fybi5cbiAgICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHtcbiAgICAgICAgICAgIHJlYXNvbiA9IGVudGl0eUNoYXJhY3RlcnMgPyBuYW1lZE5vdFRlcm1pbmF0ZWQgOiBuYW1lZEVtcHR5XG5cbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgZm9sbG93aW5nID0gdmFsdWUuY2hhckNvZGVBdChlbmQpXG5cbiAgICAgICAgICAgICAgaWYgKGZvbGxvd2luZyA9PT0gZXF1YWxzVG8pIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nKHJlYXNvbiwgZGlmZilcbiAgICAgICAgICAgICAgICBlbnRpdHkgPSBudWxsXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxwaGFudW1lcmljYWwoZm9sbG93aW5nKSkge1xuICAgICAgICAgICAgICAgIGVudGl0eSA9IG51bGxcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nKHJlYXNvbiwgZGlmZilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgd2FybmluZyhyZWFzb24sIGRpZmYpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmVmZXJlbmNlID0gZW50aXR5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHtcbiAgICAgICAgICAvLyBBbGwgbm9uLXRlcm1pbmF0ZWQgbnVtZXJpYyBlbnRpdGllcyBhcmUgbm90IHJlbmRlcmVkLCBhbmQgdHJpZ2dlciBhXG4gICAgICAgICAgLy8gd2FybmluZy5cbiAgICAgICAgICB3YXJuaW5nKG51bWVyaWNOb3RUZXJtaW5hdGVkLCBkaWZmKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiB0ZXJtaW5hdGVkIGFuZCBudW1iZXIsIHBhcnNlIGFzIGVpdGhlciBoZXhhZGVjaW1hbCBvciBkZWNpbWFsLlxuICAgICAgICByZWZlcmVuY2UgPSBwYXJzZUludChjaGFyYWN0ZXJzLCBiYXNlc1t0eXBlXSlcblxuICAgICAgICAvLyBUcmlnZ2VyIGEgd2FybmluZyB3aGVuIHRoZSBwYXJzZWQgbnVtYmVyIGlzIHByb2hpYml0ZWQsIGFuZCByZXBsYWNlXG4gICAgICAgIC8vIHdpdGggcmVwbGFjZW1lbnQgY2hhcmFjdGVyLlxuICAgICAgICBpZiAocHJvaGliaXRlZChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgd2FybmluZyhudW1lcmljUHJvaGliaXRlZCwgZGlmZilcbiAgICAgICAgICByZWZlcmVuY2UgPSBmcm9tQ2hhckNvZGUocmVwbGFjZW1lbnRDaGFyYWN0ZXIpXG4gICAgICAgIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluIGludmFsaWQpIHtcbiAgICAgICAgICAvLyBUcmlnZ2VyIGEgd2FybmluZyB3aGVuIHRoZSBwYXJzZWQgbnVtYmVyIGlzIGRpc2FsbG93ZWQsIGFuZCByZXBsYWNlXG4gICAgICAgICAgLy8gYnkgYW4gYWx0ZXJuYXRpdmUuXG4gICAgICAgICAgd2FybmluZyhudW1lcmljRGlzYWxsb3dlZCwgZGlmZilcbiAgICAgICAgICByZWZlcmVuY2UgPSBpbnZhbGlkW3JlZmVyZW5jZV1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBQYXJzZSB0aGUgbnVtYmVyLlxuICAgICAgICAgIG91dHB1dCA9ICcnXG5cbiAgICAgICAgICAvLyBUcmlnZ2VyIGEgd2FybmluZyB3aGVuIHRoZSBwYXJzZWQgbnVtYmVyIHNob3VsZCBub3QgYmUgdXNlZC5cbiAgICAgICAgICBpZiAoZGlzYWxsb3dlZChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICB3YXJuaW5nKG51bWVyaWNEaXNhbGxvd2VkLCBkaWZmKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFN0cmluZ2lmeSB0aGUgbnVtYmVyLlxuICAgICAgICAgIGlmIChyZWZlcmVuY2UgPiAweGZmZmYpIHtcbiAgICAgICAgICAgIHJlZmVyZW5jZSAtPSAweDEwMDAwXG4gICAgICAgICAgICBvdXRwdXQgKz0gZnJvbUNoYXJDb2RlKChyZWZlcmVuY2UgPj4+ICgxMCAmIDB4M2ZmKSkgfCAweGQ4MDApXG4gICAgICAgICAgICByZWZlcmVuY2UgPSAweGRjMDAgfCAocmVmZXJlbmNlICYgMHgzZmYpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVmZXJlbmNlID0gb3V0cHV0ICsgZnJvbUNoYXJDb2RlKHJlZmVyZW5jZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBGb3VuZCBpdCFcbiAgICAgIC8vIEZpcnN0IGVhdCB0aGUgcXVldWVkIGNoYXJhY3RlcnMgYXMgbm9ybWFsIHRleHQsIHRoZW4gZWF0IGFuIGVudGl0eS5cbiAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgZmx1c2goKVxuXG4gICAgICAgIHByZXYgPSBub3coKVxuICAgICAgICBpbmRleCA9IGVuZCAtIDFcbiAgICAgICAgY29sdW1uICs9IGVuZCAtIHN0YXJ0ICsgMVxuICAgICAgICByZXN1bHQucHVzaChyZWZlcmVuY2UpXG4gICAgICAgIG5leHQgPSBub3coKVxuICAgICAgICBuZXh0Lm9mZnNldCsrXG5cbiAgICAgICAgaWYgKGhhbmRsZVJlZmVyZW5jZSkge1xuICAgICAgICAgIGhhbmRsZVJlZmVyZW5jZS5jYWxsKFxuICAgICAgICAgICAgcmVmZXJlbmNlQ29udGV4dCxcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIHtzdGFydDogcHJldiwgZW5kOiBuZXh0fSxcbiAgICAgICAgICAgIHZhbHVlLnNsaWNlKHN0YXJ0IC0gMSwgZW5kKVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXYgPSBuZXh0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB3ZSBjb3VsZCBub3QgZmluZCBhIHJlZmVyZW5jZSwgcXVldWUgdGhlIGNoZWNrZWQgY2hhcmFjdGVycyAoYXNcbiAgICAgICAgLy8gbm9ybWFsIGNoYXJhY3RlcnMpLCBhbmQgbW92ZSB0aGUgcG9pbnRlciB0byB0aGVpciBlbmQuXG4gICAgICAgIC8vIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSB3ZSBjYW4gYmUgY2VydGFpbiBuZWl0aGVyIG5ld2xpbmVzIG5vclxuICAgICAgICAvLyBhbXBlcnNhbmRzIGFyZSBpbmNsdWRlZC5cbiAgICAgICAgY2hhcmFjdGVycyA9IHZhbHVlLnNsaWNlKHN0YXJ0IC0gMSwgZW5kKVxuICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJzXG4gICAgICAgIGNvbHVtbiArPSBjaGFyYWN0ZXJzLmxlbmd0aFxuICAgICAgICBpbmRleCA9IGVuZCAtIDFcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIGFueXRoaW5nIG90aGVyIHRoYW4gYW4gYW1wZXJzYW5kLCBpbmNsdWRpbmcgbmV3bGluZXMgYW5kIEVPRi5cbiAgICAgIGlmIChcbiAgICAgICAgY2hhcmFjdGVyID09PSAxMCAvLyBMaW5lIGZlZWRcbiAgICAgICkge1xuICAgICAgICBsaW5lKytcbiAgICAgICAgbGluZXMrK1xuICAgICAgICBjb2x1bW4gPSAwXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGNoYXJhY3Rlcikge1xuICAgICAgICBxdWV1ZSArPSBmcm9tQ2hhckNvZGUoY2hhcmFjdGVyKVxuICAgICAgICBjb2x1bW4rK1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmx1c2goKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgcmVkdWNlZCBub2RlcywgYW5kIGFueSBwb3NzaWJsZSB3YXJuaW5ncy5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKVxuXG4gIC8vIEdldCBjdXJyZW50IHBvc2l0aW9uLlxuICBmdW5jdGlvbiBub3coKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IGxpbmUsXG4gICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgIG9mZnNldDogaW5kZXggKyAocG9zLm9mZnNldCB8fCAwKVxuICAgIH1cbiAgfVxuXG4gIC8vIOKAnFRocm934oCdIGEgcGFyc2UtZXJyb3I6IGEgd2FybmluZy5cbiAgZnVuY3Rpb24gcGFyc2VFcnJvcihjb2RlLCBvZmZzZXQpIHtcbiAgICB2YXIgcG9zaXRpb24gPSBub3coKVxuXG4gICAgcG9zaXRpb24uY29sdW1uICs9IG9mZnNldFxuICAgIHBvc2l0aW9uLm9mZnNldCArPSBvZmZzZXRcblxuICAgIGhhbmRsZVdhcm5pbmcuY2FsbCh3YXJuaW5nQ29udGV4dCwgbWVzc2FnZXNbY29kZV0sIHBvc2l0aW9uLCBjb2RlKVxuICB9XG5cbiAgLy8gRmx1c2ggYHF1ZXVlYCAobm9ybWFsIHRleHQpLlxuICAvLyBNYWNybyBpbnZva2VkIGJlZm9yZSBlYWNoIGVudGl0eSBhbmQgYXQgdGhlIGVuZCBvZiBgdmFsdWVgLlxuICAvLyBEb2VzIG5vdGhpbmcgd2hlbiBgcXVldWVgIGlzIGVtcHR5LlxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICBpZiAocXVldWUpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHF1ZXVlKVxuXG4gICAgICBpZiAoaGFuZGxlVGV4dCkge1xuICAgICAgICBoYW5kbGVUZXh0LmNhbGwodGV4dENvbnRleHQsIHF1ZXVlLCB7c3RhcnQ6IHByZXYsIGVuZDogbm93KCl9KVxuICAgICAgfVxuXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrIGlmIGBjaGFyYWN0ZXJgIGlzIG91dHNpZGUgdGhlIHBlcm1pc3NpYmxlIHVuaWNvZGUgcmFuZ2UuXG5mdW5jdGlvbiBwcm9oaWJpdGVkKGNvZGUpIHtcbiAgcmV0dXJuIChjb2RlID49IDB4ZDgwMCAmJiBjb2RlIDw9IDB4ZGZmZikgfHwgY29kZSA+IDB4MTBmZmZmXG59XG5cbi8vIENoZWNrIGlmIGBjaGFyYWN0ZXJgIGlzIGRpc2FsbG93ZWQuXG5mdW5jdGlvbiBkaXNhbGxvd2VkKGNvZGUpIHtcbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSAweDAwMDEgJiYgY29kZSA8PSAweDAwMDgpIHx8XG4gICAgY29kZSA9PT0gMHgwMDBiIHx8XG4gICAgKGNvZGUgPj0gMHgwMDBkICYmIGNvZGUgPD0gMHgwMDFmKSB8fFxuICAgIChjb2RlID49IDB4MDA3ZiAmJiBjb2RlIDw9IDB4MDA5ZikgfHxcbiAgICAoY29kZSA+PSAweGZkZDAgJiYgY29kZSA8PSAweGZkZWYpIHx8XG4gICAgKGNvZGUgJiAweGZmZmYpID09PSAweGZmZmYgfHxcbiAgICAoY29kZSAmIDB4ZmZmZikgPT09IDB4ZmZmZVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGVudGl0aWVzID0gcmVxdWlyZSgncGFyc2UtZW50aXRpZXMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLy8gRmFjdG9yeSB0byBjcmVhdGUgYW4gZW50aXR5IGRlY29kZXIuXG5mdW5jdGlvbiBmYWN0b3J5KGN0eCkge1xuICBkZWNvZGVyLnJhdyA9IGRlY29kZVJhd1xuXG4gIHJldHVybiBkZWNvZGVyXG5cbiAgLy8gTm9ybWFsaXplIGBwb3NpdGlvbmAgdG8gYWRkIGFuIGBpbmRlbnRgLlxuICBmdW5jdGlvbiBub3JtYWxpemUocG9zaXRpb24pIHtcbiAgICB2YXIgb2Zmc2V0cyA9IGN0eC5vZmZzZXRcbiAgICB2YXIgbGluZSA9IHBvc2l0aW9uLmxpbmVcbiAgICB2YXIgcmVzdWx0ID0gW11cblxuICAgIHdoaWxlICgrK2xpbmUpIHtcbiAgICAgIGlmICghKGxpbmUgaW4gb2Zmc2V0cykpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LnB1c2goKG9mZnNldHNbbGluZV0gfHwgMCkgKyAxKVxuICAgIH1cblxuICAgIHJldHVybiB7c3RhcnQ6IHBvc2l0aW9uLCBpbmRlbnQ6IHJlc3VsdH1cbiAgfVxuXG4gIC8vIERlY29kZSBgdmFsdWVgIChhdCBgcG9zaXRpb25gKSBpbnRvIHRleHQtbm9kZXMuXG4gIGZ1bmN0aW9uIGRlY29kZXIodmFsdWUsIHBvc2l0aW9uLCBoYW5kbGVyKSB7XG4gICAgZW50aXRpZXModmFsdWUsIHtcbiAgICAgIHBvc2l0aW9uOiBub3JtYWxpemUocG9zaXRpb24pLFxuICAgICAgd2FybmluZzogaGFuZGxlV2FybmluZyxcbiAgICAgIHRleHQ6IGhhbmRsZXIsXG4gICAgICByZWZlcmVuY2U6IGhhbmRsZXIsXG4gICAgICB0ZXh0Q29udGV4dDogY3R4LFxuICAgICAgcmVmZXJlbmNlQ29udGV4dDogY3R4XG4gICAgfSlcbiAgfVxuXG4gIC8vIERlY29kZSBgdmFsdWVgIChhdCBgcG9zaXRpb25gKSBpbnRvIGEgc3RyaW5nLlxuICBmdW5jdGlvbiBkZWNvZGVSYXcodmFsdWUsIHBvc2l0aW9uLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGVudGl0aWVzKFxuICAgICAgdmFsdWUsXG4gICAgICB4dGVuZChvcHRpb25zLCB7cG9zaXRpb246IG5vcm1hbGl6ZShwb3NpdGlvbiksIHdhcm5pbmc6IGhhbmRsZVdhcm5pbmd9KVxuICAgIClcbiAgfVxuXG4gIC8vIEhhbmRsZSBhIHdhcm5pbmcuXG4gIC8vIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9wYXJzZS1lbnRpdGllcz4gZm9yIHRoZSB3YXJuaW5ncy5cbiAgZnVuY3Rpb24gaGFuZGxlV2FybmluZyhyZWFzb24sIHBvc2l0aW9uLCBjb2RlKSB7XG4gICAgaWYgKGNvZGUgIT09IDMpIHtcbiAgICAgIGN0eC5maWxlLm1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbilcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLy8gQ29uc3RydWN0IGEgdG9rZW5pemVyLiAgVGhpcyBjcmVhdGVzIGJvdGggYHRva2VuaXplSW5saW5lYCBhbmQgYHRva2VuaXplQmxvY2tgLlxuZnVuY3Rpb24gZmFjdG9yeSh0eXBlKSB7XG4gIHJldHVybiB0b2tlbml6ZVxuXG4gIC8vIFRva2VuaXplciBmb3IgYSBib3VuZCBgdHlwZWAuXG4gIGZ1bmN0aW9uIHRva2VuaXplKHZhbHVlLCBsb2NhdGlvbikge1xuICAgIHZhciBzZWxmID0gdGhpc1xuICAgIHZhciBvZmZzZXQgPSBzZWxmLm9mZnNldFxuICAgIHZhciB0b2tlbnMgPSBbXVxuICAgIHZhciBtZXRob2RzID0gc2VsZlt0eXBlICsgJ01ldGhvZHMnXVxuICAgIHZhciB0b2tlbml6ZXJzID0gc2VsZlt0eXBlICsgJ1Rva2VuaXplcnMnXVxuICAgIHZhciBsaW5lID0gbG9jYXRpb24ubGluZVxuICAgIHZhciBjb2x1bW4gPSBsb2NhdGlvbi5jb2x1bW5cbiAgICB2YXIgaW5kZXhcbiAgICB2YXIgbGVuZ3RoXG4gICAgdmFyIG1ldGhvZFxuICAgIHZhciBuYW1lXG4gICAgdmFyIG1hdGNoZWRcbiAgICB2YXIgdmFsdWVMZW5ndGhcblxuICAgIC8vIFRyaW0gd2hpdGUgc3BhY2Ugb25seSBsaW5lcy5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gdG9rZW5zXG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIG9uIGBlYXRgLlxuICAgIGVhdC5ub3cgPSBub3dcbiAgICBlYXQuZmlsZSA9IHNlbGYuZmlsZVxuXG4gICAgLy8gU3luYyBpbml0aWFsIG9mZnNldC5cbiAgICB1cGRhdGVQb3NpdGlvbignJylcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciBgdmFsdWVgLCBhbmQgaXRlcmF0ZSBvdmVyIGFsbCB0b2tlbml6ZXJzLiAgV2hlbiBvbmUgZWF0c1xuICAgIC8vIHNvbWV0aGluZywgcmUtaXRlcmF0ZSB3aXRoIHRoZSByZW1haW5pbmcgdmFsdWUuICBJZiBubyB0b2tlbml6ZXIgZWF0cyxcbiAgICAvLyBzb21ldGhpbmcgZmFpbGVkIChzaG91bGQgbm90IGhhcHBlbikgYW5kIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG4gICAgd2hpbGUgKHZhbHVlKSB7XG4gICAgICBpbmRleCA9IC0xXG4gICAgICBsZW5ndGggPSBtZXRob2RzLmxlbmd0aFxuICAgICAgbWF0Y2hlZCA9IGZhbHNlXG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG5hbWUgPSBtZXRob2RzW2luZGV4XVxuICAgICAgICBtZXRob2QgPSB0b2tlbml6ZXJzW25hbWVdXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1ldGhvZCAmJlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovICghbWV0aG9kLm9ubHlBdFN0YXJ0IHx8IHNlbGYuYXRTdGFydCkgJiZcbiAgICAgICAgICAoIW1ldGhvZC5ub3RJbkxpc3QgfHwgIXNlbGYuaW5MaXN0KSAmJlxuICAgICAgICAgICghbWV0aG9kLm5vdEluQmxvY2sgfHwgIXNlbGYuaW5CbG9jaykgJiZcbiAgICAgICAgICAoIW1ldGhvZC5ub3RJbkxpbmsgfHwgIXNlbGYuaW5MaW5rKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuXG4gICAgICAgICAgbWV0aG9kLmFwcGx5KHNlbGYsIFtlYXQsIHZhbHVlXSlcblxuICAgICAgICAgIG1hdGNoZWQgPSB2YWx1ZUxlbmd0aCAhPT0gdmFsdWUubGVuZ3RoXG5cbiAgICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIW1hdGNoZWQpIHtcbiAgICAgICAgc2VsZi5maWxlLmZhaWwobmV3IEVycm9yKCdJbmZpbml0ZSBsb29wJyksIGVhdC5ub3coKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxmLmVvZiA9IG5vdygpXG5cbiAgICByZXR1cm4gdG9rZW5zXG5cbiAgICAvLyBVcGRhdGUgbGluZSwgY29sdW1uLCBhbmQgb2Zmc2V0IGJhc2VkIG9uIGB2YWx1ZWAuXG4gICAgZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24oc3VidmFsdWUpIHtcbiAgICAgIHZhciBsYXN0SW5kZXggPSAtMVxuICAgICAgdmFyIGluZGV4ID0gc3VidmFsdWUuaW5kZXhPZignXFxuJylcblxuICAgICAgd2hpbGUgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaW5lKytcbiAgICAgICAgbGFzdEluZGV4ID0gaW5kZXhcbiAgICAgICAgaW5kZXggPSBzdWJ2YWx1ZS5pbmRleE9mKCdcXG4nLCBpbmRleCArIDEpXG4gICAgICB9XG5cbiAgICAgIGlmIChsYXN0SW5kZXggPT09IC0xKSB7XG4gICAgICAgIGNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbHVtbiA9IHN1YnZhbHVlLmxlbmd0aCAtIGxhc3RJbmRleFxuICAgICAgfVxuXG4gICAgICBpZiAobGluZSBpbiBvZmZzZXQpIHtcbiAgICAgICAgaWYgKGxhc3RJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBjb2x1bW4gKz0gb2Zmc2V0W2xpbmVdXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uIDw9IG9mZnNldFtsaW5lXSkge1xuICAgICAgICAgIGNvbHVtbiA9IG9mZnNldFtsaW5lXSArIDFcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCBvZmZzZXQuICBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgZWF0ZW4gdG8gcmV0cmlldmUgdGhlXG4gICAgLy8gcmFuZ2XigJlzIG9mZnNldHMuXG4gICAgZnVuY3Rpb24gZ2V0T2Zmc2V0KCkge1xuICAgICAgdmFyIGluZGVudGF0aW9uID0gW11cbiAgICAgIHZhciBwb3MgPSBsaW5lICsgMVxuXG4gICAgICAvLyBEb25lLiAgQ2FsbGVkIHdoZW4gdGhlIGxhc3QgY2hhcmFjdGVyIGlzIGVhdGVuIHRvIHJldHJpZXZlIHRoZSByYW5nZeKAmXNcbiAgICAgIC8vIG9mZnNldHMuXG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBsYXN0ID0gbGluZSArIDFcblxuICAgICAgICB3aGlsZSAocG9zIDwgbGFzdCkge1xuICAgICAgICAgIGluZGVudGF0aW9uLnB1c2goKG9mZnNldFtwb3NdIHx8IDApICsgMSlcblxuICAgICAgICAgIHBvcysrXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZW50YXRpb25cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uXG4gICAgZnVuY3Rpb24gbm93KCkge1xuICAgICAgdmFyIHBvcyA9IHtsaW5lOiBsaW5lLCBjb2x1bW46IGNvbHVtbn1cblxuICAgICAgcG9zLm9mZnNldCA9IHNlbGYudG9PZmZzZXQocG9zKVxuXG4gICAgICByZXR1cm4gcG9zXG4gICAgfVxuXG4gICAgLy8gU3RvcmUgcG9zaXRpb24gaW5mb3JtYXRpb24gZm9yIGEgbm9kZS5cbiAgICBmdW5jdGlvbiBQb3NpdGlvbihzdGFydCkge1xuICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0XG4gICAgICB0aGlzLmVuZCA9IG5vdygpXG4gICAgfVxuXG4gICAgLy8gVGhyb3cgd2hlbiBhIHZhbHVlIGlzIGluY29ycmVjdGx5IGVhdGVuLiAgVGhpcyBzaG91bGRu4oCZdCBoYXBwZW4gYnV0IHdpbGxcbiAgICAvLyB0aHJvdyBvbiBuZXcsIGluY29ycmVjdCBydWxlcy5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZUVhdChzdWJ2YWx1ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAodmFsdWUuc2xpY2UoMCwgc3VidmFsdWUubGVuZ3RoKSAhPT0gc3VidmFsdWUpIHtcbiAgICAgICAgLy8gQ2FwdHVyZSBzdGFjay10cmFjZS5cbiAgICAgICAgc2VsZi5maWxlLmZhaWwoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ0luY29ycmVjdGx5IGVhdGVuIHZhbHVlOiBwbGVhc2UgcmVwb3J0IHRoaXMgd2FybmluZyBvbiBodHRwczovL2dpdC5pby92ZzVGdCdcbiAgICAgICAgICApLFxuICAgICAgICAgIG5vdygpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYXJrIHBvc2l0aW9uIGFuZCBwYXRjaCBgbm9kZS5wb3NpdGlvbmAuXG4gICAgZnVuY3Rpb24gcG9zaXRpb24oKSB7XG4gICAgICB2YXIgYmVmb3JlID0gbm93KClcblxuICAgICAgcmV0dXJuIHVwZGF0ZVxuXG4gICAgICAvLyBBZGQgdGhlIHBvc2l0aW9uIHRvIGEgbm9kZS5cbiAgICAgIGZ1bmN0aW9uIHVwZGF0ZShub2RlLCBpbmRlbnQpIHtcbiAgICAgICAgdmFyIHByZXYgPSBub2RlLnBvc2l0aW9uXG4gICAgICAgIHZhciBzdGFydCA9IHByZXYgPyBwcmV2LnN0YXJ0IDogYmVmb3JlXG4gICAgICAgIHZhciBjb21iaW5lZCA9IFtdXG4gICAgICAgIHZhciBuID0gcHJldiAmJiBwcmV2LmVuZC5saW5lXG4gICAgICAgIHZhciBsID0gYmVmb3JlLmxpbmVcblxuICAgICAgICBub2RlLnBvc2l0aW9uID0gbmV3IFBvc2l0aW9uKHN0YXJ0KVxuXG4gICAgICAgIC8vIElmIHRoZXJlIHdhcyBhbHJlYWR5IGEgYHBvc2l0aW9uYCwgdGhpcyBub2RlIHdhcyBtZXJnZWQuICBGaXhpbmdcbiAgICAgICAgLy8gYHN0YXJ0YCB3YXNu4oCZdCBoYXJkLCBidXQgdGhlIGluZGVudCBpcyBkaWZmZXJlbnQuICBFc3BlY2lhbGx5XG4gICAgICAgIC8vIGJlY2F1c2Ugc29tZSBpbmZvcm1hdGlvbiwgdGhlIGluZGVudCBiZXR3ZWVuIGBuYCBhbmQgYGxgIHdhc27igJl0XG4gICAgICAgIC8vIHRyYWNrZWQuICBMdWNraWx5LCB0aGF0IHNwYWNlIGlzIChzaG91bGQgYmU/KSBlbXB0eSwgc28gd2UgY2FuXG4gICAgICAgIC8vIHNhZmVseSBjaGVjayBmb3IgaXQgbm93LlxuICAgICAgICBpZiAocHJldiAmJiBpbmRlbnQgJiYgcHJldi5pbmRlbnQpIHtcbiAgICAgICAgICBjb21iaW5lZCA9IHByZXYuaW5kZW50XG5cbiAgICAgICAgICBpZiAobiA8IGwpIHtcbiAgICAgICAgICAgIHdoaWxlICgrK24gPCBsKSB7XG4gICAgICAgICAgICAgIGNvbWJpbmVkLnB1c2goKG9mZnNldFtuXSB8fCAwKSArIDEpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbWJpbmVkLnB1c2goYmVmb3JlLmNvbHVtbilcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpbmRlbnQgPSBjb21iaW5lZC5jb25jYXQoaW5kZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5wb3NpdGlvbi5pbmRlbnQgPSBpbmRlbnQgfHwgW11cblxuICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBgbm9kZWAgdG8gYHBhcmVudGBzIGNoaWxkcmVuIG9yIHRvIGB0b2tlbnNgLiAgUGVyZm9ybXMgbWVyZ2VzIHdoZXJlXG4gICAgLy8gcG9zc2libGUuXG4gICAgZnVuY3Rpb24gYWRkKG5vZGUsIHBhcmVudCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50ID8gcGFyZW50LmNoaWxkcmVuIDogdG9rZW5zXG4gICAgICB2YXIgcHJldiA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgICB2YXIgZm5cblxuICAgICAgaWYgKFxuICAgICAgICBwcmV2ICYmXG4gICAgICAgIG5vZGUudHlwZSA9PT0gcHJldi50eXBlICYmXG4gICAgICAgIChub2RlLnR5cGUgPT09ICd0ZXh0JyB8fCBub2RlLnR5cGUgPT09ICdibG9ja3F1b3RlJykgJiZcbiAgICAgICAgbWVyZ2VhYmxlKHByZXYpICYmXG4gICAgICAgIG1lcmdlYWJsZShub2RlKVxuICAgICAgKSB7XG4gICAgICAgIGZuID0gbm9kZS50eXBlID09PSAndGV4dCcgPyBtZXJnZVRleHQgOiBtZXJnZUJsb2NrcXVvdGVcbiAgICAgICAgbm9kZSA9IGZuLmNhbGwoc2VsZiwgcHJldiwgbm9kZSlcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUgIT09IHByZXYpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChub2RlKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZi5hdFN0YXJ0ICYmIHRva2Vucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgc2VsZi5leGl0U3RhcnQoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBgc3VidmFsdWVgIGZyb20gYHZhbHVlYC4gIGBzdWJ2YWx1ZWAgbXVzdCBiZSBhdCB0aGUgc3RhcnQgb2ZcbiAgICAvLyBgdmFsdWVgLlxuICAgIGZ1bmN0aW9uIGVhdChzdWJ2YWx1ZSkge1xuICAgICAgdmFyIGluZGVudCA9IGdldE9mZnNldCgpXG4gICAgICB2YXIgcG9zID0gcG9zaXRpb24oKVxuICAgICAgdmFyIGN1cnJlbnQgPSBub3coKVxuXG4gICAgICB2YWxpZGF0ZUVhdChzdWJ2YWx1ZSlcblxuICAgICAgYXBwbHkucmVzZXQgPSByZXNldFxuICAgICAgcmVzZXQudGVzdCA9IHRlc3RcbiAgICAgIGFwcGx5LnRlc3QgPSB0ZXN0XG5cbiAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2Uoc3VidmFsdWUubGVuZ3RoKVxuXG4gICAgICB1cGRhdGVQb3NpdGlvbihzdWJ2YWx1ZSlcblxuICAgICAgaW5kZW50ID0gaW5kZW50KClcblxuICAgICAgcmV0dXJuIGFwcGx5XG5cbiAgICAgIC8vIEFkZCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhZGQgYHBvc2l0aW9uYCB0byB0aGUgcmV0dXJuZWQgbm9kZSwgYW5kXG4gICAgICAvLyByZXR1cm4gdGhlIG5vZGUuXG4gICAgICBmdW5jdGlvbiBhcHBseShub2RlLCBwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHBvcyhhZGQocG9zKG5vZGUpLCBwYXJlbnQpLCBpbmRlbnQpXG4gICAgICB9XG5cbiAgICAgIC8vIEZ1bmN0aW9ucyBqdXN0IGxpa2UgYXBwbHksIGJ1dCByZXNldHMgdGhlIGNvbnRlbnQ6IHRoZSBsaW5lIGFuZFxuICAgICAgLy8gY29sdW1uIGFyZSByZXZlcnNlZCwgYW5kIHRoZSBlYXRlbiB2YWx1ZSBpcyByZS1hZGRlZC4gICBUaGlzIGlzXG4gICAgICAvLyB1c2VmdWwgZm9yIG5vZGVzIHdpdGggYSBzaW5nbGUgdHlwZSBvZiBjb250ZW50LCBzdWNoIGFzIGxpc3RzIGFuZFxuICAgICAgLy8gdGFibGVzLiAgU2VlIGBhcHBseWAgYWJvdmUgZm9yIHdoYXQgcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuXG4gICAgICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBhcHBseS5hcHBseShudWxsLCBhcmd1bWVudHMpXG5cbiAgICAgICAgbGluZSA9IGN1cnJlbnQubGluZVxuICAgICAgICBjb2x1bW4gPSBjdXJyZW50LmNvbHVtblxuICAgICAgICB2YWx1ZSA9IHN1YnZhbHVlICsgdmFsdWVcblxuICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgfVxuXG4gICAgICAvLyBUZXN0IHRoZSBwb3NpdGlvbiwgYWZ0ZXIgZWF0aW5nLCBhbmQgcmV2ZXJzZSB0byBhIG5vdC1lYXRlbiBzdGF0ZS5cbiAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBwb3Moe30pXG5cbiAgICAgICAgbGluZSA9IGN1cnJlbnQubGluZVxuICAgICAgICBjb2x1bW4gPSBjdXJyZW50LmNvbHVtblxuICAgICAgICB2YWx1ZSA9IHN1YnZhbHVlICsgdmFsdWVcblxuICAgICAgICByZXR1cm4gcmVzdWx0LnBvc2l0aW9uXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrIHdoZXRoZXIgYSBub2RlIGlzIG1lcmdlYWJsZSB3aXRoIGFkamFjZW50IG5vZGVzLlxuZnVuY3Rpb24gbWVyZ2VhYmxlKG5vZGUpIHtcbiAgdmFyIHN0YXJ0XG4gIHZhciBlbmRcblxuICBpZiAobm9kZS50eXBlICE9PSAndGV4dCcgfHwgIW5vZGUucG9zaXRpb24pIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgc3RhcnQgPSBub2RlLnBvc2l0aW9uLnN0YXJ0XG4gIGVuZCA9IG5vZGUucG9zaXRpb24uZW5kXG5cbiAgLy8gT25seSBtZXJnZSBub2RlcyB3aGljaCBvY2N1cHkgdGhlIHNhbWUgc2l6ZSBhcyB0aGVpciBgdmFsdWVgLlxuICByZXR1cm4gKFxuICAgIHN0YXJ0LmxpbmUgIT09IGVuZC5saW5lIHx8IGVuZC5jb2x1bW4gLSBzdGFydC5jb2x1bW4gPT09IG5vZGUudmFsdWUubGVuZ3RoXG4gIClcbn1cblxuLy8gTWVyZ2UgdHdvIHRleHQgbm9kZXM6IGBub2RlYCBpbnRvIGBwcmV2YC5cbmZ1bmN0aW9uIG1lcmdlVGV4dChwcmV2LCBub2RlKSB7XG4gIHByZXYudmFsdWUgKz0gbm9kZS52YWx1ZVxuXG4gIHJldHVybiBwcmV2XG59XG5cbi8vIE1lcmdlIHR3byBibG9ja3F1b3RlczogYG5vZGVgIGludG8gYHByZXZgLCB1bmxlc3MgaW4gQ29tbW9uTWFyayBvciBnZm0gbW9kZXMuXG5mdW5jdGlvbiBtZXJnZUJsb2NrcXVvdGUocHJldiwgbm9kZSkge1xuICBpZiAodGhpcy5vcHRpb25zLmNvbW1vbm1hcmsgfHwgdGhpcy5vcHRpb25zLmdmbSkge1xuICAgIHJldHVybiBub2RlXG4gIH1cblxuICBwcmV2LmNoaWxkcmVuID0gcHJldi5jaGlsZHJlbi5jb25jYXQobm9kZS5jaGlsZHJlbilcblxuICByZXR1cm4gcHJldlxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZXNjYXBlc1xuXG52YXIgZGVmYXVsdHMgPSBbXG4gICdcXFxcJyxcbiAgJ2AnLFxuICAnKicsXG4gICd7JyxcbiAgJ30nLFxuICAnWycsXG4gICddJyxcbiAgJygnLFxuICAnKScsXG4gICcjJyxcbiAgJysnLFxuICAnLScsXG4gICcuJyxcbiAgJyEnLFxuICAnXycsXG4gICc+J1xuXVxuXG52YXIgZ2ZtID0gZGVmYXVsdHMuY29uY2F0KFsnficsICd8J10pXG5cbnZhciBjb21tb25tYXJrID0gZ2ZtLmNvbmNhdChbXG4gICdcXG4nLFxuICAnXCInLFxuICAnJCcsXG4gICclJyxcbiAgJyYnLFxuICBcIidcIixcbiAgJywnLFxuICAnLycsXG4gICc6JyxcbiAgJzsnLFxuICAnPCcsXG4gICc9JyxcbiAgJz8nLFxuICAnQCcsXG4gICdeJ1xuXSlcblxuZXNjYXBlcy5kZWZhdWx0ID0gZGVmYXVsdHNcbmVzY2FwZXMuZ2ZtID0gZ2ZtXG5lc2NhcGVzLmNvbW1vbm1hcmsgPSBjb21tb25tYXJrXG5cbi8vIEdldCBtYXJrZG93biBlc2NhcGVzLlxuZnVuY3Rpb24gZXNjYXBlcyhvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cblxuICBpZiAoc2V0dGluZ3MuY29tbW9ubWFyaykge1xuICAgIHJldHVybiBjb21tb25tYXJrXG4gIH1cblxuICByZXR1cm4gc2V0dGluZ3MuZ2ZtID8gZ2ZtIDogZGVmYXVsdHNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdiYXNlJyxcbiAgJ2Jhc2Vmb250JyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdjYXB0aW9uJyxcbiAgJ2NlbnRlcicsXG4gICdjb2wnLFxuICAnY29sZ3JvdXAnLFxuICAnZGQnLFxuICAnZGV0YWlscycsXG4gICdkaWFsb2cnLFxuICAnZGlyJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdmcmFtZScsXG4gICdmcmFtZXNldCcsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkJyxcbiAgJ2hlYWRlcicsXG4gICdoZ3JvdXAnLFxuICAnaHInLFxuICAnaHRtbCcsXG4gICdpZnJhbWUnLFxuICAnbGVnZW5kJyxcbiAgJ2xpJyxcbiAgJ2xpbmsnLFxuICAnbWFpbicsXG4gICdtZW51JyxcbiAgJ21lbnVpdGVtJyxcbiAgJ21ldGEnLFxuICAnbmF2JyxcbiAgJ25vZnJhbWVzJyxcbiAgJ29sJyxcbiAgJ29wdGdyb3VwJyxcbiAgJ29wdGlvbicsXG4gICdwJyxcbiAgJ3BhcmFtJyxcbiAgJ3ByZScsXG4gICdzZWN0aW9uJyxcbiAgJ3NvdXJjZScsXG4gICd0aXRsZScsXG4gICdzdW1tYXJ5JyxcbiAgJ3RhYmxlJyxcbiAgJ3Rib2R5JyxcbiAgJ3RkJyxcbiAgJ3Rmb290JyxcbiAgJ3RoJyxcbiAgJ3RoZWFkJyxcbiAgJ3RpdGxlJyxcbiAgJ3RyJyxcbiAgJ3RyYWNrJyxcbiAgJ3VsJ1xuXVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwb3NpdGlvbjogdHJ1ZSxcbiAgZ2ZtOiB0cnVlLFxuICBjb21tb25tYXJrOiBmYWxzZSxcbiAgZm9vdG5vdGVzOiBmYWxzZSxcbiAgcGVkYW50aWM6IGZhbHNlLFxuICBibG9ja3M6IHJlcXVpcmUoJy4vYmxvY2stZWxlbWVudHMnKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBlc2NhcGVzID0gcmVxdWlyZSgnbWFya2Rvd24tZXNjYXBlcycpXG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJylcblxubW9kdWxlLmV4cG9ydHMgPSBzZXRPcHRpb25zXG5cbmZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGN1cnJlbnQgPSBzZWxmLm9wdGlvbnNcbiAgdmFyIGtleVxuICB2YXIgdmFsdWVcblxuICBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucyA9IHh0ZW5kKG9wdGlvbnMpXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGAnICsgb3B0aW9ucyArICdgIGZvciBzZXR0aW5nIGBvcHRpb25zYCcpXG4gIH1cblxuICBmb3IgKGtleSBpbiBkZWZhdWx0cykge1xuICAgIHZhbHVlID0gb3B0aW9uc1trZXldXG5cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSBjdXJyZW50W2tleV1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAoa2V5ICE9PSAnYmxvY2tzJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgfHxcbiAgICAgIChrZXkgPT09ICdibG9ja3MnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJbnZhbGlkIHZhbHVlIGAnICsgdmFsdWUgKyAnYCBmb3Igc2V0dGluZyBgb3B0aW9ucy4nICsga2V5ICsgJ2AnXG4gICAgICApXG4gICAgfVxuXG4gICAgb3B0aW9uc1trZXldID0gdmFsdWVcbiAgfVxuXG4gIHNlbGYub3B0aW9ucyA9IG9wdGlvbnNcbiAgc2VsZi5lc2NhcGUgPSBlc2NhcGVzKG9wdGlvbnMpXG5cbiAgcmV0dXJuIHNlbGZcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcblxubW9kdWxlLmV4cG9ydHMgPSByZW1vdmVQb3NpdGlvblxuXG5mdW5jdGlvbiByZW1vdmVQb3NpdGlvbihub2RlLCBmb3JjZSkge1xuICB2aXNpdChub2RlLCBmb3JjZSA/IGhhcmQgOiBzb2Z0KVxuICByZXR1cm4gbm9kZVxufVxuXG5mdW5jdGlvbiBoYXJkKG5vZGUpIHtcbiAgZGVsZXRlIG5vZGUucG9zaXRpb25cbn1cblxuZnVuY3Rpb24gc29mdChub2RlKSB7XG4gIG5vZGUucG9zaXRpb24gPSB1bmRlZmluZWRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgcmVtb3ZlUG9zaXRpb24gPSByZXF1aXJlKCd1bmlzdC11dGlsLXJlbW92ZS1wb3NpdGlvbicpXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBsaW5lQnJlYWtzRXhwcmVzc2lvbiA9IC9cXHJcXG58XFxyL2dcblxuLy8gUGFyc2UgdGhlIGJvdW5kIGZpbGUuXG5mdW5jdGlvbiBwYXJzZSgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciB2YWx1ZSA9IFN0cmluZyhzZWxmLmZpbGUpXG4gIHZhciBzdGFydCA9IHtsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMH1cbiAgdmFyIGNvbnRlbnQgPSB4dGVuZChzdGFydClcbiAgdmFyIG5vZGVcblxuICAvLyBDbGVhbiBub24tdW5peCBuZXdsaW5lczogYFxcclxcbmAgYW5kIGBcXHJgIGFyZSBhbGwgY2hhbmdlZCB0byBgXFxuYC5cbiAgLy8gVGhpcyBzaG91bGQgbm90IGFmZmVjdCBwb3NpdGlvbmFsIGluZm9ybWF0aW9uLlxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UobGluZUJyZWFrc0V4cHJlc3Npb24sIGxpbmVGZWVkKVxuXG4gIC8vIEJPTS5cbiAgaWYgKHZhbHVlLmNoYXJDb2RlQXQoMCkgPT09IDB4ZmVmZikge1xuICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSlcblxuICAgIGNvbnRlbnQuY29sdW1uKytcbiAgICBjb250ZW50Lm9mZnNldCsrXG4gIH1cblxuICBub2RlID0ge1xuICAgIHR5cGU6ICdyb290JyxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUJsb2NrKHZhbHVlLCBjb250ZW50KSxcbiAgICBwb3NpdGlvbjoge3N0YXJ0OiBzdGFydCwgZW5kOiBzZWxmLmVvZiB8fCB4dGVuZChzdGFydCl9XG4gIH1cblxuICBpZiAoIXNlbGYub3B0aW9ucy5wb3NpdGlvbikge1xuICAgIHJlbW92ZVBvc2l0aW9uKG5vZGUsIHRydWUpXG4gIH1cblxuICByZXR1cm4gbm9kZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ld2xpbmVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcblxuZnVuY3Rpb24gbmV3bGluZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgwKVxuICB2YXIgbGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgcXVldWVcbiAgdmFyIGluZGV4XG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpbmRleCA9IDFcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHN1YnZhbHVlID0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGVhdChzdWJ2YWx1ZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRyaW1UcmFpbGluZ0xpbmVzXG5cbnZhciBsaW5lID0gJ1xcbidcblxuLy8gUmVtb3ZlIGZpbmFsIG5ld2xpbmUgY2hhcmFjdGVycyBmcm9tIGB2YWx1ZWAuXG5mdW5jdGlvbiB0cmltVHJhaWxpbmdMaW5lcyh2YWx1ZSkge1xuICB2YXIgdmFsID0gU3RyaW5nKHZhbHVlKVxuICB2YXIgaW5kZXggPSB2YWwubGVuZ3RoXG5cbiAgd2hpbGUgKHZhbC5jaGFyQXQoLS1pbmRleCkgPT09IGxpbmUpIHtcbiAgICAvLyBFbXB0eVxuICB9XG5cbiAgcmV0dXJuIHZhbC5zbGljZSgwLCBpbmRleCArIDEpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKVxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltLXRyYWlsaW5nLWxpbmVzJylcblxubW9kdWxlLmV4cG9ydHMgPSBpbmRlbnRlZENvZGVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG5cbnZhciB0YWJTaXplID0gNFxudmFyIGNvZGVJbmRlbnQgPSByZXBlYXQoc3BhY2UsIHRhYlNpemUpXG5cbmZ1bmN0aW9uIGluZGVudGVkQ29kZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgY29udGVudCA9ICcnXG4gIHZhciBzdWJ2YWx1ZVF1ZXVlID0gJydcbiAgdmFyIGNvbnRlbnRRdWV1ZSA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGJsYW5rUXVldWVcbiAgdmFyIGluZGVudFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGluZGVudCkge1xuICAgICAgaW5kZW50ID0gZmFsc2VcblxuICAgICAgc3VidmFsdWUgKz0gc3VidmFsdWVRdWV1ZVxuICAgICAgY29udGVudCArPSBjb250ZW50UXVldWVcbiAgICAgIHN1YnZhbHVlUXVldWUgPSAnJ1xuICAgICAgY29udGVudFF1ZXVlID0gJydcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgc3VidmFsdWVRdWV1ZSA9IGNoYXJhY3RlclxuICAgICAgICBjb250ZW50UXVldWUgPSBjaGFyYWN0ZXJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgICBjb250ZW50ICs9IGNoYXJhY3RlclxuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgICAgaWYgKCFjaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgICAgICAgY29udGVudFF1ZXVlID0gY2hhcmFjdGVyXG4gICAgICAgICAgICBzdWJ2YWx1ZVF1ZXVlID0gY2hhcmFjdGVyXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSBzcGFjZSAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IGNoYXJhY3RlciAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMikgPT09IGNoYXJhY3RlciAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMykgPT09IGNoYXJhY3RlclxuICAgICkge1xuICAgICAgc3VidmFsdWVRdWV1ZSArPSBjb2RlSW5kZW50XG4gICAgICBpbmRleCArPSAzXG4gICAgICBpbmRlbnQgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgc3VidmFsdWVRdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGVudCA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgYmxhbmtRdWV1ZSA9ICcnXG5cbiAgICAgIHdoaWxlIChjaGFyYWN0ZXIgPT09IHRhYiB8fCBjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICAgIGJsYW5rUXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBzdWJ2YWx1ZVF1ZXVlICs9IGJsYW5rUXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIGNvbnRlbnRRdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICB9XG4gIH1cblxuICBpZiAoY29udGVudCkge1xuICAgIGlmIChzaWxlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgICAgdHlwZTogJ2NvZGUnLFxuICAgICAgbGFuZzogbnVsbCxcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgICB2YWx1ZTogdHJpbShjb250ZW50KVxuICAgIH0pXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZlbmNlZENvZGVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgdGlsZGUgPSAnfidcbnZhciBncmF2ZUFjY2VudCA9ICdgJ1xuXG52YXIgbWluRmVuY2VDb3VudCA9IDNcbnZhciB0YWJTaXplID0gNFxuXG5mdW5jdGlvbiBmZW5jZWRDb2RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGdmbSA9IHNlbGYub3B0aW9ucy5nZm1cbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCArIDFcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgZmVuY2VDb3VudFxuICB2YXIgbWFya2VyXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGZsYWdcbiAgdmFyIGxhbmdcbiAgdmFyIG1ldGFcbiAgdmFyIHF1ZXVlXG4gIHZhciBjb250ZW50XG4gIHZhciBleGRlbnRlZENvbnRlbnRcbiAgdmFyIGNsb3NpbmdcbiAgdmFyIGV4ZGVudGVkQ2xvc2luZ1xuICB2YXIgaW5kZW50XG4gIHZhciBub3dcblxuICBpZiAoIWdmbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gRWF0IGluaXRpYWwgc3BhY2luZy5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaW5kZW50ID0gaW5kZXhcblxuICAvLyBFYXQgdGhlIGZlbmNlLlxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gdGlsZGUgJiYgY2hhcmFjdGVyICE9PSBncmF2ZUFjY2VudCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgZmVuY2VDb3VudCA9IDFcbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gbWFya2VyKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGZlbmNlQ291bnQrK1xuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChmZW5jZUNvdW50IDwgbWluRmVuY2VDb3VudCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gRWF0IHNwYWNpbmcgYmVmb3JlIGZsYWcuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gdGFiKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIC8vIEVhdCBmbGFnLlxuICBmbGFnID0gJydcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChcbiAgICAgIGNoYXJhY3RlciA9PT0gbGluZUZlZWQgfHxcbiAgICAgIChtYXJrZXIgPT09IGdyYXZlQWNjZW50ICYmIGNoYXJhY3RlciA9PT0gbWFya2VyKVxuICAgICkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBzcGFjZSB8fCBjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWcgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIHF1ZXVlID0gJydcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5vdyA9IGVhdC5ub3coKVxuICBub3cuY29sdW1uICs9IHN1YnZhbHVlLmxlbmd0aFxuICBub3cub2Zmc2V0ICs9IHN1YnZhbHVlLmxlbmd0aFxuXG4gIHN1YnZhbHVlICs9IGZsYWdcbiAgZmxhZyA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKGZsYWcpLCBub3cpXG5cbiAgaWYgKHF1ZXVlKSB7XG4gICAgc3VidmFsdWUgKz0gcXVldWVcbiAgfVxuXG4gIHF1ZXVlID0gJydcbiAgY2xvc2luZyA9ICcnXG4gIGV4ZGVudGVkQ2xvc2luZyA9ICcnXG4gIGNvbnRlbnQgPSAnJ1xuICBleGRlbnRlZENvbnRlbnQgPSAnJ1xuICB2YXIgc2tpcCA9IHRydWVcblxuICAvLyBFYXQgY29udGVudC5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgIGNvbnRlbnQgKz0gY2xvc2luZ1xuICAgIGV4ZGVudGVkQ29udGVudCArPSBleGRlbnRlZENsb3NpbmdcbiAgICBjbG9zaW5nID0gJydcbiAgICBleGRlbnRlZENsb3NpbmcgPSAnJ1xuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyXG4gICAgICBleGRlbnRlZENsb3NpbmcgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIFRoZSBmaXJzdCBsaW5lIGZlZWQgaXMgaWdub3JlZC4gT3RoZXJzIGFyZW7igJl0LlxuICAgIGlmIChza2lwKSB7XG4gICAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIHNraXAgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICBjbG9zaW5nICs9IGNoYXJhY3RlclxuICAgICAgZXhkZW50ZWRDbG9zaW5nICs9IGNoYXJhY3RlclxuICAgIH1cblxuICAgIHF1ZXVlID0gJydcbiAgICBpbmRleCsrXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgY2xvc2luZyArPSBxdWV1ZVxuICAgIGV4ZGVudGVkQ2xvc2luZyArPSBxdWV1ZS5zbGljZShpbmRlbnQpXG5cbiAgICBpZiAocXVldWUubGVuZ3RoID49IHRhYlNpemUpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgcXVldWUgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjbG9zaW5nICs9IHF1ZXVlXG4gICAgZXhkZW50ZWRDbG9zaW5nICs9IHF1ZXVlXG5cbiAgICBpZiAocXVldWUubGVuZ3RoIDwgZmVuY2VDb3VudCkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBxdWV1ZSA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2xvc2luZyArPSBjaGFyYWN0ZXJcbiAgICAgIGV4ZGVudGVkQ2xvc2luZyArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlICs9IGNvbnRlbnQgKyBjbG9zaW5nXG5cbiAgLy8gR2V0IGxhbmcgYW5kIG1ldGEgZnJvbSB0aGUgZmxhZy5cbiAgaW5kZXggPSAtMVxuICBsZW5ndGggPSBmbGFnLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gZmxhZy5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBzcGFjZSB8fCBjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgaWYgKCFsYW5nKSB7XG4gICAgICAgIGxhbmcgPSBmbGFnLnNsaWNlKDAsIGluZGV4KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGFuZykge1xuICAgICAgbWV0YSA9IGZsYWcuc2xpY2UoaW5kZXgpXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnY29kZScsXG4gICAgbGFuZzogbGFuZyB8fCBmbGFnIHx8IG51bGwsXG4gICAgbWV0YTogbWV0YSB8fCBudWxsLFxuICAgIHZhbHVlOiBleGRlbnRlZENvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGludGVycnVwdFxuXG5mdW5jdGlvbiBpbnRlcnJ1cHQoaW50ZXJydXB0b3JzLCB0b2tlbml6ZXJzLCBjdHgsIHBhcmFtcykge1xuICB2YXIgbGVuZ3RoID0gaW50ZXJydXB0b3JzLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgaW50ZXJydXB0b3JcbiAgdmFyIGNvbmZpZ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaW50ZXJydXB0b3IgPSBpbnRlcnJ1cHRvcnNbaW5kZXhdXG4gICAgY29uZmlnID0gaW50ZXJydXB0b3JbMV0gfHwge31cblxuICAgIGlmIChcbiAgICAgIGNvbmZpZy5wZWRhbnRpYyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBjb25maWcucGVkYW50aWMgIT09IGN0eC5vcHRpb25zLnBlZGFudGljXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNvbmZpZy5jb21tb25tYXJrICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGNvbmZpZy5jb21tb25tYXJrICE9PSBjdHgub3B0aW9ucy5jb21tb25tYXJrXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmICh0b2tlbml6ZXJzW2ludGVycnVwdG9yWzBdXS5hcHBseShjdHgsIHBhcmFtcykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciBpbnRlcnJ1cHQgPSByZXF1aXJlKCcuLi91dGlsL2ludGVycnVwdCcpXG5cbm1vZHVsZS5leHBvcnRzID0gYmxvY2txdW90ZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcbnZhciBncmVhdGVyVGhhbiA9ICc+J1xuXG5mdW5jdGlvbiBibG9ja3F1b3RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIG9mZnNldHMgPSBzZWxmLm9mZnNldFxuICB2YXIgdG9rZW5pemVycyA9IHNlbGYuYmxvY2tUb2tlbml6ZXJzXG4gIHZhciBpbnRlcnJ1cHRvcnMgPSBzZWxmLmludGVycnVwdEJsb2NrcXVvdGVcbiAgdmFyIG5vdyA9IGVhdC5ub3coKVxuICB2YXIgY3VycmVudExpbmUgPSBub3cubGluZVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciB2YWx1ZXMgPSBbXVxuICB2YXIgY29udGVudHMgPSBbXVxuICB2YXIgaW5kZW50cyA9IFtdXG4gIHZhciBhZGRcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciByZXN0XG4gIHZhciBuZXh0SW5kZXhcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGxpbmVcbiAgdmFyIHN0YXJ0SW5kZXhcbiAgdmFyIHByZWZpeGVkXG4gIHZhciBleGl0XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGluZGV4ID0gMFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIG5leHRJbmRleCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQsIGluZGV4KVxuICAgIHN0YXJ0SW5kZXggPSBpbmRleFxuICAgIHByZWZpeGVkID0gZmFsc2VcblxuICAgIGlmIChuZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBsZW5ndGhcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBncmVhdGVyVGhhbikge1xuICAgICAgaW5kZXgrK1xuICAgICAgcHJlZml4ZWQgPSB0cnVlXG5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBzcGFjZSkge1xuICAgICAgICBpbmRleCsrXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgIH1cblxuICAgIGNvbnRlbnQgPSB2YWx1ZS5zbGljZShpbmRleCwgbmV4dEluZGV4KVxuXG4gICAgaWYgKCFwcmVmaXhlZCAmJiAhdHJpbShjb250ZW50KSkge1xuICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGlmICghcHJlZml4ZWQpIHtcbiAgICAgIHJlc3QgPSB2YWx1ZS5zbGljZShpbmRleClcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZvbGxvd2luZyBjb2RlIGNvbnRhaW5zIGEgcG9zc2libGUgYmxvY2suXG4gICAgICBpZiAoaW50ZXJydXB0KGludGVycnVwdG9ycywgdG9rZW5pemVycywgc2VsZiwgW2VhdCwgcmVzdCwgdHJ1ZV0pKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGluZSA9IHN0YXJ0SW5kZXggPT09IGluZGV4ID8gY29udGVudCA6IHZhbHVlLnNsaWNlKHN0YXJ0SW5kZXgsIG5leHRJbmRleClcblxuICAgIGluZGVudHMucHVzaChpbmRleCAtIHN0YXJ0SW5kZXgpXG4gICAgdmFsdWVzLnB1c2gobGluZSlcbiAgICBjb250ZW50cy5wdXNoKGNvbnRlbnQpXG5cbiAgICBpbmRleCA9IG5leHRJbmRleCArIDFcbiAgfVxuXG4gIGluZGV4ID0gLTFcbiAgbGVuZ3RoID0gaW5kZW50cy5sZW5ndGhcbiAgYWRkID0gZWF0KHZhbHVlcy5qb2luKGxpbmVGZWVkKSlcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIG9mZnNldHNbY3VycmVudExpbmVdID0gKG9mZnNldHNbY3VycmVudExpbmVdIHx8IDApICsgaW5kZW50c1tpbmRleF1cbiAgICBjdXJyZW50TGluZSsrXG4gIH1cblxuICBleGl0ID0gc2VsZi5lbnRlckJsb2NrKClcbiAgY29udGVudHMgPSBzZWxmLnRva2VuaXplQmxvY2soY29udGVudHMuam9pbihsaW5lRmVlZCksIG5vdylcbiAgZXhpdCgpXG5cbiAgcmV0dXJuIGFkZCh7dHlwZTogJ2Jsb2NrcXVvdGUnLCBjaGlsZHJlbjogY29udGVudHN9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYXR4SGVhZGluZ1xuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcbnZhciBudW1iZXJTaWduID0gJyMnXG5cbnZhciBtYXhGZW5jZUNvdW50ID0gNlxuXG5mdW5jdGlvbiBhdHhIZWFkaW5nKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHBlZGFudGljID0gc2VsZi5vcHRpb25zLnBlZGFudGljXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBub3cgPSBlYXQubm93KClcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGNvbnRlbnQgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBxdWV1ZVxuICB2YXIgZGVwdGhcblxuICAvLyBFYXQgaW5pdGlhbCBzcGFjaW5nLlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gdGFiKSB7XG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICB9XG5cbiAgLy8gRWF0IGhhc2hlcy5cbiAgZGVwdGggPSAwXG5cbiAgd2hpbGUgKCsraW5kZXggPD0gbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gbnVtYmVyU2lnbikge1xuICAgICAgaW5kZXgtLVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICBkZXB0aCsrXG4gIH1cblxuICBpZiAoZGVwdGggPiBtYXhGZW5jZUNvdW50KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIWRlcHRoIHx8ICghcGVkYW50aWMgJiYgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IG51bWJlclNpZ24pKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxXG5cbiAgLy8gRWF0IGludGVybWVkaWF0ZSB3aGl0ZS1zcGFjZS5cbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICAvLyBFeGl0IHdoZW4gbm90IGluIHBlZGFudGljIG1vZGUgd2l0aG91dCBzcGFjaW5nLlxuICBpZiAoIXBlZGFudGljICYmIHF1ZXVlLmxlbmd0aCA9PT0gMCAmJiBjaGFyYWN0ZXIgJiYgY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBFYXQgY29udGVudC5cbiAgc3VidmFsdWUgKz0gcXVldWVcbiAgcXVldWUgPSAnJ1xuICBjb250ZW50ID0gJydcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICghY2hhcmFjdGVyIHx8IGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIgJiYgY2hhcmFjdGVyICE9PSBudW1iZXJTaWduKSB7XG4gICAgICBjb250ZW50ICs9IHF1ZXVlICsgY2hhcmFjdGVyXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHdoaWxlIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgIH1cblxuICAgIC8vIGAjYCB3aXRob3V0IGEgcXVldWUgaXMgcGFydCBvZiB0aGUgY29udGVudC5cbiAgICBpZiAoIXBlZGFudGljICYmIGNvbnRlbnQgJiYgIXF1ZXVlICYmIGNoYXJhY3RlciA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgY29udGVudCArPSBjaGFyYWN0ZXJcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgd2hpbGUgKGNoYXJhY3RlciA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICB3aGlsZSAoY2hhcmFjdGVyID09PSBzcGFjZSB8fCBjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICBpbmRleC0tXG4gIH1cblxuICBub3cuY29sdW1uICs9IHN1YnZhbHVlLmxlbmd0aFxuICBub3cub2Zmc2V0ICs9IHN1YnZhbHVlLmxlbmd0aFxuICBzdWJ2YWx1ZSArPSBjb250ZW50ICsgcXVldWVcblxuICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7XG4gICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgIGRlcHRoOiBkZXB0aCxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShjb250ZW50LCBub3cpXG4gIH0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0aGVtYXRpY0JyZWFrXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGFzdGVyaXNrID0gJyonXG52YXIgZGFzaCA9ICctJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcblxudmFyIG1heENvdW50ID0gM1xuXG5mdW5jdGlvbiB0aGVtYXRpY0JyZWFrKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoICsgMVxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBtYXJrZXJcbiAgdmFyIG1hcmtlckNvdW50XG4gIHZhciBxdWV1ZVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICBpZiAoXG4gICAgY2hhcmFjdGVyICE9PSBhc3RlcmlzayAmJlxuICAgIGNoYXJhY3RlciAhPT0gZGFzaCAmJlxuICAgIGNoYXJhY3RlciAhPT0gdW5kZXJzY29yZVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIG1hcmtlciA9IGNoYXJhY3RlclxuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgbWFya2VyQ291bnQgPSAxXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IG1hcmtlcikge1xuICAgICAgbWFya2VyQ291bnQrK1xuICAgICAgc3VidmFsdWUgKz0gcXVldWUgKyBtYXJrZXJcbiAgICAgIHF1ZXVlID0gJydcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBtYXJrZXJDb3VudCA+PSBtYXhDb3VudCAmJlxuICAgICAgKCFjaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09PSBsaW5lRmVlZClcbiAgICApIHtcbiAgICAgIHN1YnZhbHVlICs9IHF1ZXVlXG5cbiAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe3R5cGU6ICd0aGVtYXRpY0JyZWFrJ30pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaW5kZW50YXRpb25cblxudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcblxudmFyIHNwYWNlU2l6ZSA9IDFcbnZhciB0YWJTaXplID0gNFxuXG4vLyBHZXRzIGluZGVudGF0aW9uIGluZm9ybWF0aW9uIGZvciBhIGxpbmUuXG5mdW5jdGlvbiBpbmRlbnRhdGlvbih2YWx1ZSkge1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBpbmRlbnQgPSAwXG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHZhciBzdG9wcyA9IHt9XG4gIHZhciBzaXplXG5cbiAgd2hpbGUgKGNoYXJhY3RlciA9PT0gdGFiIHx8IGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICBzaXplID0gY2hhcmFjdGVyID09PSB0YWIgPyB0YWJTaXplIDogc3BhY2VTaXplXG5cbiAgICBpbmRlbnQgKz0gc2l6ZVxuXG4gICAgaWYgKHNpemUgPiAxKSB7XG4gICAgICBpbmRlbnQgPSBNYXRoLmZsb29yKGluZGVudCAvIHNpemUpICogc2l6ZVxuICAgIH1cblxuICAgIHN0b3BzW2luZGVudF0gPSBpbmRleFxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICB9XG5cbiAgcmV0dXJuIHtpbmRlbnQ6IGluZGVudCwgc3RvcHM6IHN0b3BzfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpXG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpXG52YXIgZ2V0SW5kZW50ID0gcmVxdWlyZSgnLi9nZXQtaW5kZW50YXRpb24nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluZGVudGF0aW9uXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGV4Y2xhbWF0aW9uTWFyayA9ICchJ1xuXG4vLyBSZW1vdmUgdGhlIG1pbmltdW0gaW5kZW50IGZyb20gZXZlcnkgbGluZSBpbiBgdmFsdWVgLiAgU3VwcG9ydHMgYm90aCB0YWIsXG4vLyBzcGFjZWQsIGFuZCBtaXhlZCBpbmRlbnRhdGlvbiAoYXMgd2VsbCBhcyBwb3NzaWJsZSkuXG5mdW5jdGlvbiBpbmRlbnRhdGlvbih2YWx1ZSwgbWF4aW11bSkge1xuICB2YXIgdmFsdWVzID0gdmFsdWUuc3BsaXQobGluZUZlZWQpXG4gIHZhciBwb3NpdGlvbiA9IHZhbHVlcy5sZW5ndGggKyAxXG4gIHZhciBtaW5JbmRlbnQgPSBJbmZpbml0eVxuICB2YXIgbWF0cml4ID0gW11cbiAgdmFyIGluZGV4XG4gIHZhciBpbmRlbnRhdGlvblxuICB2YXIgc3RvcHNcbiAgdmFyIHBhZGRpbmdcblxuICB2YWx1ZXMudW5zaGlmdChyZXBlYXQoc3BhY2UsIG1heGltdW0pICsgZXhjbGFtYXRpb25NYXJrKVxuXG4gIHdoaWxlIChwb3NpdGlvbi0tKSB7XG4gICAgaW5kZW50YXRpb24gPSBnZXRJbmRlbnQodmFsdWVzW3Bvc2l0aW9uXSlcblxuICAgIG1hdHJpeFtwb3NpdGlvbl0gPSBpbmRlbnRhdGlvbi5zdG9wc1xuXG4gICAgaWYgKHRyaW0odmFsdWVzW3Bvc2l0aW9uXSkubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChpbmRlbnRhdGlvbi5pbmRlbnQpIHtcbiAgICAgIGlmIChpbmRlbnRhdGlvbi5pbmRlbnQgPiAwICYmIGluZGVudGF0aW9uLmluZGVudCA8IG1pbkluZGVudCkge1xuICAgICAgICBtaW5JbmRlbnQgPSBpbmRlbnRhdGlvbi5pbmRlbnRcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWluSW5kZW50ID0gSW5maW5pdHlcblxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAobWluSW5kZW50ICE9PSBJbmZpbml0eSkge1xuICAgIHBvc2l0aW9uID0gdmFsdWVzLmxlbmd0aFxuXG4gICAgd2hpbGUgKHBvc2l0aW9uLS0pIHtcbiAgICAgIHN0b3BzID0gbWF0cml4W3Bvc2l0aW9uXVxuICAgICAgaW5kZXggPSBtaW5JbmRlbnRcblxuICAgICAgd2hpbGUgKGluZGV4ICYmICEoaW5kZXggaW4gc3RvcHMpKSB7XG4gICAgICAgIGluZGV4LS1cbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0cmltKHZhbHVlc1twb3NpdGlvbl0pLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgICBtaW5JbmRlbnQgJiZcbiAgICAgICAgaW5kZXggIT09IG1pbkluZGVudFxuICAgICAgKSB7XG4gICAgICAgIHBhZGRpbmcgPSB0YWJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhZGRpbmcgPSAnJ1xuICAgICAgfVxuXG4gICAgICB2YWx1ZXNbcG9zaXRpb25dID1cbiAgICAgICAgcGFkZGluZyArIHZhbHVlc1twb3NpdGlvbl0uc2xpY2UoaW5kZXggaW4gc3RvcHMgPyBzdG9wc1tpbmRleF0gKyAxIDogMClcbiAgICB9XG4gIH1cblxuICB2YWx1ZXMuc2hpZnQoKVxuXG4gIHJldHVybiB2YWx1ZXMuam9pbihsaW5lRmVlZClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBnZXRJbmRlbnQgPSByZXF1aXJlKCcuLi91dGlsL2dldC1pbmRlbnRhdGlvbicpXG52YXIgcmVtb3ZlSW5kZW50ID0gcmVxdWlyZSgnLi4vdXRpbC9yZW1vdmUtaW5kZW50YXRpb24nKVxudmFyIGludGVycnVwdCA9IHJlcXVpcmUoJy4uL3V0aWwvaW50ZXJydXB0JylcblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0XG5cbnZhciBhc3RlcmlzayA9ICcqJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcbnZhciBwbHVzU2lnbiA9ICcrJ1xudmFyIGRhc2ggPSAnLSdcbnZhciBkb3QgPSAnLidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHJpZ2h0UGFyZW50aGVzaXMgPSAnKSdcbnZhciBsb3dlcmNhc2VYID0gJ3gnXG5cbnZhciB0YWJTaXplID0gNFxudmFyIGxvb3NlTGlzdEl0ZW1FeHByZXNzaW9uID0gL1xcblxcbig/IVxccyokKS9cbnZhciB0YXNrSXRlbUV4cHJlc3Npb24gPSAvXlxcWyhbIFxcdF18eHxYKV1bIFxcdF0vXG52YXIgYnVsbGV0RXhwcmVzc2lvbiA9IC9eKFsgXFx0XSopKFsqKy1dfFxcZCtbLildKSggezEsNH0oPyEgKXwgfFxcdHwkfCg/PVxcbikpKFteXFxuXSopL1xudmFyIHBlZGFudGljQnVsbGV0RXhwcmVzc2lvbiA9IC9eKFsgXFx0XSopKFsqKy1dfFxcZCtbLildKShbIFxcdF0rKS9cbnZhciBpbml0aWFsSW5kZW50RXhwcmVzc2lvbiA9IC9eKCB7MSw0fXxcXHQpPy9nbVxuXG5mdW5jdGlvbiBsaXN0KGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZWxmLm9wdGlvbnMuY29tbW9ubWFya1xuICB2YXIgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgdmFyIHRva2VuaXplcnMgPSBzZWxmLmJsb2NrVG9rZW5pemVyc1xuICB2YXIgaW50ZXJ1cHRvcnMgPSBzZWxmLmludGVycnVwdExpc3RcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBzdGFydCA9IG51bGxcbiAgdmFyIHNpemUgPSAwXG4gIHZhciBxdWV1ZVxuICB2YXIgb3JkZXJlZFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBtYXJrZXJcbiAgdmFyIG5leHRJbmRleFxuICB2YXIgc3RhcnRJbmRleFxuICB2YXIgcHJlZml4ZWRcbiAgdmFyIGN1cnJlbnRNYXJrZXJcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGxpbmVcbiAgdmFyIHByZXZFbXB0eVxuICB2YXIgZW1wdHlcbiAgdmFyIGl0ZW1zXG4gIHZhciBhbGxMaW5lc1xuICB2YXIgZW1wdHlMaW5lc1xuICB2YXIgaXRlbVxuICB2YXIgZW50ZXJUb3BcbiAgdmFyIGV4aXRCbG9ja3F1b3RlXG4gIHZhciBzcHJlYWQgPSBmYWxzZVxuICB2YXIgbm9kZVxuICB2YXIgbm93XG4gIHZhciBlbmRcbiAgdmFyIGluZGVudGVkXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBzaXplICs9IHRhYlNpemUgLSAoc2l6ZSAlIHRhYlNpemUpXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICBzaXplKytcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoc2l6ZSA+PSB0YWJTaXplKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gYXN0ZXJpc2sgfHwgY2hhcmFjdGVyID09PSBwbHVzU2lnbiB8fCBjaGFyYWN0ZXIgPT09IGRhc2gpIHtcbiAgICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgICBvcmRlcmVkID0gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICBvcmRlcmVkID0gdHJ1ZVxuICAgIHF1ZXVlID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoIWRlY2ltYWwoY2hhcmFjdGVyKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICAhcXVldWUgfHxcbiAgICAgICEoY2hhcmFjdGVyID09PSBkb3QgfHwgKGNvbW1vbm1hcmsgJiYgY2hhcmFjdGVyID09PSByaWdodFBhcmVudGhlc2lzKSlcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHN0YXJ0ID0gcGFyc2VJbnQocXVldWUsIDEwKVxuICAgIG1hcmtlciA9IGNoYXJhY3RlclxuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG5cbiAgaWYgKFxuICAgIGNoYXJhY3RlciAhPT0gc3BhY2UgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHRhYiAmJlxuICAgIChwZWRhbnRpYyB8fCAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCAmJiBjaGFyYWN0ZXIgIT09ICcnKSlcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGluZGV4ID0gMFxuICBpdGVtcyA9IFtdXG4gIGFsbExpbmVzID0gW11cbiAgZW1wdHlMaW5lcyA9IFtdXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgbmV4dEluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXgpXG4gICAgc3RhcnRJbmRleCA9IGluZGV4XG4gICAgcHJlZml4ZWQgPSBmYWxzZVxuICAgIGluZGVudGVkID0gZmFsc2VcblxuICAgIGlmIChuZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBsZW5ndGhcbiAgICB9XG5cbiAgICBlbmQgPSBpbmRleCArIHRhYlNpemVcbiAgICBzaXplID0gMFxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgICBzaXplICs9IHRhYlNpemUgLSAoc2l6ZSAlIHRhYlNpemUpXG4gICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgICAgc2l6ZSsrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaWYgKHNpemUgPj0gdGFiU2l6ZSkge1xuICAgICAgaW5kZW50ZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKGl0ZW0gJiYgc2l6ZSA+PSBpdGVtLmluZGVudCkge1xuICAgICAgaW5kZW50ZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgIGN1cnJlbnRNYXJrZXIgPSBudWxsXG5cbiAgICBpZiAoIWluZGVudGVkKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGNoYXJhY3RlciA9PT0gYXN0ZXJpc2sgfHxcbiAgICAgICAgY2hhcmFjdGVyID09PSBwbHVzU2lnbiB8fFxuICAgICAgICBjaGFyYWN0ZXIgPT09IGRhc2hcbiAgICAgICkge1xuICAgICAgICBjdXJyZW50TWFya2VyID0gY2hhcmFjdGVyXG4gICAgICAgIGluZGV4KytcbiAgICAgICAgc2l6ZSsrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZSA9ICcnXG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgICAgaWYgKCFkZWNpbWFsKGNoYXJhY3RlcikpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG5cbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgICAgICBpbmRleCsrXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHF1ZXVlICYmXG4gICAgICAgICAgKGNoYXJhY3RlciA9PT0gZG90IHx8IChjb21tb25tYXJrICYmIGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcykpXG4gICAgICAgICkge1xuICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBjaGFyYWN0ZXJcbiAgICAgICAgICBzaXplICs9IHF1ZXVlLmxlbmd0aCArIDFcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY3VycmVudE1hcmtlcikge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICAgICAgc2l6ZSArPSB0YWJTaXplIC0gKHNpemUgJSB0YWJTaXplKVxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICAgICAgZW5kID0gaW5kZXggKyB0YWJTaXplXG5cbiAgICAgICAgICB3aGlsZSAoaW5kZXggPCBlbmQpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBzcGFjZSkge1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbmRleCsrXG4gICAgICAgICAgICBzaXplKytcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaW5kZXggPT09IGVuZCAmJiB2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBzcGFjZSkge1xuICAgICAgICAgICAgaW5kZXggLT0gdGFiU2l6ZSAtIDFcbiAgICAgICAgICAgIHNpemUgLT0gdGFiU2l6ZSAtIDFcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCAmJiBjaGFyYWN0ZXIgIT09ICcnKSB7XG4gICAgICAgICAgY3VycmVudE1hcmtlciA9IG51bGxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50TWFya2VyKSB7XG4gICAgICBpZiAoIXBlZGFudGljICYmIG1hcmtlciAhPT0gY3VycmVudE1hcmtlcikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBwcmVmaXhlZCA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjb21tb25tYXJrICYmICFpbmRlbnRlZCAmJiB2YWx1ZS5jaGFyQXQoc3RhcnRJbmRleCkgPT09IHNwYWNlKSB7XG4gICAgICAgIGluZGVudGVkID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChjb21tb25tYXJrICYmIGl0ZW0pIHtcbiAgICAgICAgaW5kZW50ZWQgPSBzaXplID49IGl0ZW0uaW5kZW50IHx8IHNpemUgPiB0YWJTaXplXG4gICAgICB9XG5cbiAgICAgIHByZWZpeGVkID0gZmFsc2VcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgIH1cblxuICAgIGxpbmUgPSB2YWx1ZS5zbGljZShzdGFydEluZGV4LCBuZXh0SW5kZXgpXG4gICAgY29udGVudCA9IHN0YXJ0SW5kZXggPT09IGluZGV4ID8gbGluZSA6IHZhbHVlLnNsaWNlKGluZGV4LCBuZXh0SW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50TWFya2VyID09PSBhc3RlcmlzayB8fFxuICAgICAgY3VycmVudE1hcmtlciA9PT0gdW5kZXJzY29yZSB8fFxuICAgICAgY3VycmVudE1hcmtlciA9PT0gZGFzaFxuICAgICkge1xuICAgICAgaWYgKHRva2VuaXplcnMudGhlbWF0aWNCcmVhay5jYWxsKHNlbGYsIGVhdCwgbGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcmV2RW1wdHkgPSBlbXB0eVxuICAgIGVtcHR5ID0gIXByZWZpeGVkICYmICF0cmltKGNvbnRlbnQpLmxlbmd0aFxuXG4gICAgaWYgKGluZGVudGVkICYmIGl0ZW0pIHtcbiAgICAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH0gZWxzZSBpZiAocHJlZml4ZWQpIHtcbiAgICAgIGlmIChlbXB0eUxpbmVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBzcHJlYWQgPSB0cnVlXG4gICAgICAgIGl0ZW0udmFsdWUucHVzaCgnJylcbiAgICAgICAgaXRlbS50cmFpbCA9IGVtcHR5TGluZXMuY29uY2F0KClcbiAgICAgIH1cblxuICAgICAgaXRlbSA9IHtcbiAgICAgICAgdmFsdWU6IFtsaW5lXSxcbiAgICAgICAgaW5kZW50OiBzaXplLFxuICAgICAgICB0cmFpbDogW11cbiAgICAgIH1cblxuICAgICAgaXRlbXMucHVzaChpdGVtKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH0gZWxzZSBpZiAoZW1wdHkpIHtcbiAgICAgIGlmIChwcmV2RW1wdHkgJiYgIWNvbW1vbm1hcmspIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgZW1wdHlMaW5lcy5wdXNoKGxpbmUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcmV2RW1wdHkpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGludGVycnVwdChpbnRlcnVwdG9ycywgdG9rZW5pemVycywgc2VsZiwgW2VhdCwgbGluZSwgdHJ1ZV0pKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH1cblxuICAgIGluZGV4ID0gbmV4dEluZGV4ICsgMVxuICB9XG5cbiAgbm9kZSA9IGVhdChhbGxMaW5lcy5qb2luKGxpbmVGZWVkKSkucmVzZXQoe1xuICAgIHR5cGU6ICdsaXN0JyxcbiAgICBvcmRlcmVkOiBvcmRlcmVkLFxuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBzcHJlYWQ6IHNwcmVhZCxcbiAgICBjaGlsZHJlbjogW11cbiAgfSlcblxuICBlbnRlclRvcCA9IHNlbGYuZW50ZXJMaXN0KClcbiAgZXhpdEJsb2NrcXVvdGUgPSBzZWxmLmVudGVyQmxvY2soKVxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IGl0ZW1zLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaXRlbSA9IGl0ZW1zW2luZGV4XS52YWx1ZS5qb2luKGxpbmVGZWVkKVxuICAgIG5vdyA9IGVhdC5ub3coKVxuXG4gICAgZWF0KGl0ZW0pKGxpc3RJdGVtKHNlbGYsIGl0ZW0sIG5vdyksIG5vZGUpXG5cbiAgICBpdGVtID0gaXRlbXNbaW5kZXhdLnRyYWlsLmpvaW4obGluZUZlZWQpXG5cbiAgICBpZiAoaW5kZXggIT09IGxlbmd0aCAtIDEpIHtcbiAgICAgIGl0ZW0gKz0gbGluZUZlZWRcbiAgICB9XG5cbiAgICBlYXQoaXRlbSlcbiAgfVxuXG4gIGVudGVyVG9wKClcbiAgZXhpdEJsb2NrcXVvdGUoKVxuXG4gIHJldHVybiBub2RlXG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtKGN0eCwgdmFsdWUsIHBvc2l0aW9uKSB7XG4gIHZhciBvZmZzZXRzID0gY3R4Lm9mZnNldFxuICB2YXIgZm4gPSBjdHgub3B0aW9ucy5wZWRhbnRpYyA/IHBlZGFudGljTGlzdEl0ZW0gOiBub3JtYWxMaXN0SXRlbVxuICB2YXIgY2hlY2tlZCA9IG51bGxcbiAgdmFyIHRhc2tcbiAgdmFyIGluZGVudFxuXG4gIHZhbHVlID0gZm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKVxuXG4gIGlmIChjdHgub3B0aW9ucy5nZm0pIHtcbiAgICB0YXNrID0gdmFsdWUubWF0Y2godGFza0l0ZW1FeHByZXNzaW9uKVxuXG4gICAgaWYgKHRhc2spIHtcbiAgICAgIGluZGVudCA9IHRhc2tbMF0ubGVuZ3RoXG4gICAgICBjaGVja2VkID0gdGFza1sxXS50b0xvd2VyQ2FzZSgpID09PSBsb3dlcmNhc2VYXG4gICAgICBvZmZzZXRzW3Bvc2l0aW9uLmxpbmVdICs9IGluZGVudFxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShpbmRlbnQpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnbGlzdEl0ZW0nLFxuICAgIHNwcmVhZDogbG9vc2VMaXN0SXRlbUV4cHJlc3Npb24udGVzdCh2YWx1ZSksXG4gICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICBjaGlsZHJlbjogY3R4LnRva2VuaXplQmxvY2sodmFsdWUsIHBvc2l0aW9uKVxuICB9XG59XG5cbi8vIENyZWF0ZSBhIGxpc3QtaXRlbSB1c2luZyBvdmVybHkgc2ltcGxlIG1lY2hhbmljcy5cbmZ1bmN0aW9uIHBlZGFudGljTGlzdEl0ZW0oY3R4LCB2YWx1ZSwgcG9zaXRpb24pIHtcbiAgdmFyIG9mZnNldHMgPSBjdHgub2Zmc2V0XG4gIHZhciBsaW5lID0gcG9zaXRpb24ubGluZVxuXG4gIC8vIFJlbW92ZSB0aGUgbGlzdC1pdGVt4oCZcyBidWxsZXQuXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShwZWRhbnRpY0J1bGxldEV4cHJlc3Npb24sIHJlcGxhY2VyKVxuXG4gIC8vIFRoZSBpbml0aWFsIGxpbmUgd2FzIGFsc28gbWF0Y2hlZCBieSB0aGUgYmVsb3csIHNvIHdlIHJlc2V0IHRoZSBgbGluZWAuXG4gIGxpbmUgPSBwb3NpdGlvbi5saW5lXG5cbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoaW5pdGlhbEluZGVudEV4cHJlc3Npb24sIHJlcGxhY2VyKVxuXG4gIC8vIEEgc2ltcGxlIHJlcGxhY2VyIHdoaWNoIHJlbW92ZWQgYWxsIG1hdGNoZXMsIGFuZCBhZGRzIHRoZWlyIGxlbmd0aCB0b1xuICAvLyBgb2Zmc2V0YC5cbiAgZnVuY3Rpb24gcmVwbGFjZXIoJDApIHtcbiAgICBvZmZzZXRzW2xpbmVdID0gKG9mZnNldHNbbGluZV0gfHwgMCkgKyAkMC5sZW5ndGhcbiAgICBsaW5lKytcblxuICAgIHJldHVybiAnJ1xuICB9XG59XG5cbi8vIENyZWF0ZSBhIGxpc3QtaXRlbSB1c2luZyBzYW5lIG1lY2hhbmljcy5cbmZ1bmN0aW9uIG5vcm1hbExpc3RJdGVtKGN0eCwgdmFsdWUsIHBvc2l0aW9uKSB7XG4gIHZhciBvZmZzZXRzID0gY3R4Lm9mZnNldFxuICB2YXIgbGluZSA9IHBvc2l0aW9uLmxpbmVcbiAgdmFyIG1heFxuICB2YXIgYnVsbGV0XG4gIHZhciByZXN0XG4gIHZhciBsaW5lc1xuICB2YXIgdHJpbW1lZExpbmVzXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG5cbiAgLy8gUmVtb3ZlIHRoZSBsaXN0LWl0ZW3igJlzIGJ1bGxldC5cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGJ1bGxldEV4cHJlc3Npb24sIHJlcGxhY2VyKVxuXG4gIGxpbmVzID0gdmFsdWUuc3BsaXQobGluZUZlZWQpXG5cbiAgdHJpbW1lZExpbmVzID0gcmVtb3ZlSW5kZW50KHZhbHVlLCBnZXRJbmRlbnQobWF4KS5pbmRlbnQpLnNwbGl0KGxpbmVGZWVkKVxuXG4gIC8vIFdlIHJlcGxhY2VkIHRoZSBpbml0aWFsIGJ1bGxldCB3aXRoIHNvbWV0aGluZyBlbHNlIGFib3ZlLCB3aGljaCB3YXMgdXNlZFxuICAvLyB0byB0cmljayBgcmVtb3ZlSW5kZW50YXRpb25gIGludG8gcmVtb3Zpbmcgc29tZSBtb3JlIGNoYXJhY3RlcnMgd2hlblxuICAvLyBwb3NzaWJsZS4gIEhvd2V2ZXIsIHRoYXQgY291bGQgcmVzdWx0IGluIHRoZSBpbml0aWFsIGxpbmUgdG8gYmUgc3RyaXBwZWRcbiAgLy8gbW9yZSB0aGFuIGl0IHNob3VsZCBiZS5cbiAgdHJpbW1lZExpbmVzWzBdID0gcmVzdFxuXG4gIG9mZnNldHNbbGluZV0gPSAob2Zmc2V0c1tsaW5lXSB8fCAwKSArIGJ1bGxldC5sZW5ndGhcbiAgbGluZSsrXG5cbiAgaW5kZXggPSAwXG4gIGxlbmd0aCA9IGxpbmVzLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgb2Zmc2V0c1tsaW5lXSA9XG4gICAgICAob2Zmc2V0c1tsaW5lXSB8fCAwKSArIGxpbmVzW2luZGV4XS5sZW5ndGggLSB0cmltbWVkTGluZXNbaW5kZXhdLmxlbmd0aFxuICAgIGxpbmUrK1xuICB9XG5cbiAgcmV0dXJuIHRyaW1tZWRMaW5lcy5qb2luKGxpbmVGZWVkKVxuXG4gIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VyKCQwLCAkMSwgJDIsICQzLCAkNCkge1xuICAgIGJ1bGxldCA9ICQxICsgJDIgKyAkM1xuICAgIHJlc3QgPSAkNFxuXG4gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IG5pbmUgbnVtYmVyZWQgbGlzdCBpdGVtcyBjYW4gaW5kZW50IHdpdGggYW5cbiAgICAvLyBleHRyYSBzcGFjZS4gIFRoYXQgaXMsIHdoZW4gdGhlIGJ1bGxldCBkaWQgbm90IHJlY2VpdmUgYW4gZXh0cmEgZmluYWxcbiAgICAvLyBzcGFjZS5cbiAgICBpZiAoTnVtYmVyKCQyKSA8IDEwICYmIGJ1bGxldC5sZW5ndGggJSAyID09PSAxKSB7XG4gICAgICAkMiA9IHNwYWNlICsgJDJcbiAgICB9XG5cbiAgICBtYXggPSAkMSArIHJlcGVhdChzcGFjZSwgJDIubGVuZ3RoKSArICQzXG5cbiAgICByZXR1cm4gbWF4ICsgcmVzdFxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBzZXRleHRIZWFkaW5nXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGVxdWFsc1RvID0gJz0nXG52YXIgZGFzaCA9ICctJ1xuXG52YXIgbWF4SW5kZW50ID0gM1xuXG52YXIgZXF1YWxzVG9EZXB0aCA9IDFcbnZhciBkYXNoRGVwdGggPSAyXG5cbmZ1bmN0aW9uIHNldGV4dEhlYWRpbmcoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgbm93ID0gZWF0Lm5vdygpXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIHF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG1hcmtlclxuICB2YXIgZGVwdGhcblxuICAvLyBFYXQgaW5pdGlhbCBpbmRlbnRhdGlvbi5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSB8fCBpbmRleCA+PSBtYXhJbmRlbnQpIHtcbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICAvLyBFYXQgY29udGVudC5cbiAgY29udGVudCA9ICcnXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cbiAgfVxuXG4gIG5vdy5jb2x1bW4gKz0gc3VidmFsdWUubGVuZ3RoXG4gIG5vdy5vZmZzZXQgKz0gc3VidmFsdWUubGVuZ3RoXG4gIHN1YnZhbHVlICs9IGNvbnRlbnQgKyBxdWV1ZVxuXG4gIC8vIEVuc3VyZSB0aGUgY29udGVudCBpcyBmb2xsb3dlZCBieSBhIG5ld2xpbmUgYW5kIGEgdmFsaWQgbWFya2VyLlxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgbWFya2VyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQgfHwgKG1hcmtlciAhPT0gZXF1YWxzVG8gJiYgbWFya2VyICE9PSBkYXNoKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG5cbiAgLy8gRWF0IFNldGV4dC1saW5lLlxuICBxdWV1ZSA9IG1hcmtlclxuICBkZXB0aCA9IG1hcmtlciA9PT0gZXF1YWxzVG8gPyBlcXVhbHNUb0RlcHRoIDogZGFzaERlcHRoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gZWF0KHN1YnZhbHVlICsgcXVldWUpKHtcbiAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgZGVwdGg6IGRlcHRoLFxuICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYXR0cmlidXRlTmFtZSA9ICdbYS16QS1aXzpdW2EtekEtWjAtOTouXy1dKidcbnZhciB1bnF1b3RlZCA9ICdbXlwiXFwnPTw+YFxcXFx1MDAwMC1cXFxcdTAwMjBdKydcbnZhciBzaW5nbGVRdW90ZWQgPSBcIidbXiddKidcIlxudmFyIGRvdWJsZVF1b3RlZCA9ICdcIlteXCJdKlwiJ1xudmFyIGF0dHJpYnV0ZVZhbHVlID1cbiAgJyg/OicgKyB1bnF1b3RlZCArICd8JyArIHNpbmdsZVF1b3RlZCArICd8JyArIGRvdWJsZVF1b3RlZCArICcpJ1xudmFyIGF0dHJpYnV0ZSA9XG4gICcoPzpcXFxccysnICsgYXR0cmlidXRlTmFtZSArICcoPzpcXFxccyo9XFxcXHMqJyArIGF0dHJpYnV0ZVZhbHVlICsgJyk/KSdcbnZhciBvcGVuVGFnID0gJzxbQS1aYS16XVtBLVphLXowLTlcXFxcLV0qJyArIGF0dHJpYnV0ZSArICcqXFxcXHMqXFxcXC8/PidcbnZhciBjbG9zZVRhZyA9ICc8XFxcXC9bQS1aYS16XVtBLVphLXowLTlcXFxcLV0qXFxcXHMqPidcbnZhciBjb21tZW50ID0gJzwhLS0tLT58PCEtLSg/Oi0/W14+LV0pKD86LT9bXi1dKSotLT4nXG52YXIgcHJvY2Vzc2luZyA9ICc8Wz9dLio/Wz9dPidcbnZhciBkZWNsYXJhdGlvbiA9ICc8IVtBLVphLXpdK1xcXFxzK1tePl0qPidcbnZhciBjZGF0YSA9ICc8IVxcXFxbQ0RBVEFcXFxcW1tcXFxcc1xcXFxTXSo/XFxcXF1cXFxcXT4nXG5cbmV4cG9ydHMub3BlbkNsb3NlVGFnID0gbmV3IFJlZ0V4cCgnXig/OicgKyBvcGVuVGFnICsgJ3wnICsgY2xvc2VUYWcgKyAnKScpXG5cbmV4cG9ydHMudGFnID0gbmV3IFJlZ0V4cChcbiAgJ14oPzonICtcbiAgICBvcGVuVGFnICtcbiAgICAnfCcgK1xuICAgIGNsb3NlVGFnICtcbiAgICAnfCcgK1xuICAgIGNvbW1lbnQgK1xuICAgICd8JyArXG4gICAgcHJvY2Vzc2luZyArXG4gICAgJ3wnICtcbiAgICBkZWNsYXJhdGlvbiArXG4gICAgJ3wnICtcbiAgICBjZGF0YSArXG4gICAgJyknXG4pXG4iLCIndXNlIHN0cmljdCdcblxudmFyIG9wZW5DbG9zZVRhZyA9IHJlcXVpcmUoJy4uL3V0aWwvaHRtbCcpLm9wZW5DbG9zZVRhZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJsb2NrSHRtbFxuXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBsZXNzVGhhbiA9ICc8J1xuXG52YXIgcmF3T3BlbkV4cHJlc3Npb24gPSAvXjwoc2NyaXB0fHByZXxzdHlsZSkoPz0oXFxzfD58JCkpL2lcbnZhciByYXdDbG9zZUV4cHJlc3Npb24gPSAvPFxcLyhzY3JpcHR8cHJlfHN0eWxlKT4vaVxudmFyIGNvbW1lbnRPcGVuRXhwcmVzc2lvbiA9IC9ePCEtLS9cbnZhciBjb21tZW50Q2xvc2VFeHByZXNzaW9uID0gLy0tPi9cbnZhciBpbnN0cnVjdGlvbk9wZW5FeHByZXNzaW9uID0gL148XFw/L1xudmFyIGluc3RydWN0aW9uQ2xvc2VFeHByZXNzaW9uID0gL1xcPz4vXG52YXIgZGlyZWN0aXZlT3BlbkV4cHJlc3Npb24gPSAvXjwhW0EtWmEtel0vXG52YXIgZGlyZWN0aXZlQ2xvc2VFeHByZXNzaW9uID0gLz4vXG52YXIgY2RhdGFPcGVuRXhwcmVzc2lvbiA9IC9ePCFcXFtDREFUQVxcWy9cbnZhciBjZGF0YUNsb3NlRXhwcmVzc2lvbiA9IC9cXF1cXF0+L1xudmFyIGVsZW1lbnRDbG9zZUV4cHJlc3Npb24gPSAvXiQvXG52YXIgb3RoZXJFbGVtZW50T3BlbkV4cHJlc3Npb24gPSBuZXcgUmVnRXhwKG9wZW5DbG9zZVRhZy5zb3VyY2UgKyAnXFxcXHMqJCcpXG5cbmZ1bmN0aW9uIGJsb2NrSHRtbChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBibG9ja3MgPSBzZWxmLm9wdGlvbnMuYmxvY2tzLmpvaW4oJ3wnKVxuICB2YXIgZWxlbWVudE9wZW5FeHByZXNzaW9uID0gbmV3IFJlZ0V4cChcbiAgICAnXjwvPygnICsgYmxvY2tzICsgJykoPz0oXFxcXHN8Lz8+fCQpKScsXG4gICAgJ2knXG4gIClcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBuZXh0XG4gIHZhciBsaW5lXG4gIHZhciBvZmZzZXRcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgY291bnRcbiAgdmFyIHNlcXVlbmNlXG4gIHZhciBzdWJ2YWx1ZVxuXG4gIHZhciBzZXF1ZW5jZXMgPSBbXG4gICAgW3Jhd09wZW5FeHByZXNzaW9uLCByYXdDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtjb21tZW50T3BlbkV4cHJlc3Npb24sIGNvbW1lbnRDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtpbnN0cnVjdGlvbk9wZW5FeHByZXNzaW9uLCBpbnN0cnVjdGlvbkNsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2RpcmVjdGl2ZU9wZW5FeHByZXNzaW9uLCBkaXJlY3RpdmVDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtjZGF0YU9wZW5FeHByZXNzaW9uLCBjZGF0YUNsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2VsZW1lbnRPcGVuRXhwcmVzc2lvbiwgZWxlbWVudENsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW290aGVyRWxlbWVudE9wZW5FeHByZXNzaW9uLCBlbGVtZW50Q2xvc2VFeHByZXNzaW9uLCBmYWxzZV1cbiAgXVxuXG4gIC8vIEVhdCBpbml0aWFsIHNwYWNpbmcuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBsZXNzVGhhbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgbmV4dCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQsIGluZGV4ICsgMSlcbiAgbmV4dCA9IG5leHQgPT09IC0xID8gbGVuZ3RoIDogbmV4dFxuICBsaW5lID0gdmFsdWUuc2xpY2UoaW5kZXgsIG5leHQpXG4gIG9mZnNldCA9IC0xXG4gIGNvdW50ID0gc2VxdWVuY2VzLmxlbmd0aFxuXG4gIHdoaWxlICgrK29mZnNldCA8IGNvdW50KSB7XG4gICAgaWYgKHNlcXVlbmNlc1tvZmZzZXRdWzBdLnRlc3QobGluZSkpIHtcbiAgICAgIHNlcXVlbmNlID0gc2VxdWVuY2VzW29mZnNldF1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKCFzZXF1ZW5jZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiBzZXF1ZW5jZVsyXVxuICB9XG5cbiAgaW5kZXggPSBuZXh0XG5cbiAgaWYgKCFzZXF1ZW5jZVsxXS50ZXN0KGxpbmUpKSB7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBuZXh0ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuICAgICAgbmV4dCA9IG5leHQgPT09IC0xID8gbGVuZ3RoIDogbmV4dFxuICAgICAgbGluZSA9IHZhbHVlLnNsaWNlKGluZGV4ICsgMSwgbmV4dClcblxuICAgICAgaWYgKHNlcXVlbmNlWzFdLnRlc3QobGluZSkpIHtcbiAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICBpbmRleCA9IG5leHRcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gbmV4dFxuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgaW5kZXgpXG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe3R5cGU6ICdodG1sJywgdmFsdWU6IHN1YnZhbHVlfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgY29sbGFwc2VXaGl0ZVNwYWNlID0gcmVxdWlyZSgnY29sbGFwc2Utd2hpdGUtc3BhY2UnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5vcm1hbGl6ZVxuXG4vLyBOb3JtYWxpemUgYW4gaWRlbnRpZmllci4gIENvbGxhcHNlcyBtdWx0aXBsZSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzIGludG8gYVxuLy8gc2luZ2xlIHNwYWNlLCBhbmQgcmVtb3ZlcyBjYXNpbmcuXG5mdW5jdGlvbiBub3JtYWxpemUodmFsdWUpIHtcbiAgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSh2YWx1ZSkudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uL3V0aWwvbm9ybWFsaXplJylcblxubW9kdWxlLmV4cG9ydHMgPSBmb290bm90ZURlZmluaXRpb25cbmZvb3Rub3RlRGVmaW5pdGlvbi5ub3RJbkxpc3QgPSB0cnVlXG5mb290bm90ZURlZmluaXRpb24ubm90SW5CbG9jayA9IHRydWVcblxudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgbGVmdFNxdWFyZUJyYWNrZXQgPSAnWydcbnZhciByaWdodFNxdWFyZUJyYWNrZXQgPSAnXSdcbnZhciBjYXJldCA9ICdeJ1xudmFyIGNvbG9uID0gJzonXG5cbnZhciBFWFBSRVNTSU9OX0lOSVRJQUxfVEFCID0gL14oIHs0fXxcXHQpPy9nbVxuXG5mdW5jdGlvbiBmb290bm90ZURlZmluaXRpb24oZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgb2Zmc2V0cyA9IHNlbGYub2Zmc2V0XG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgbm93XG4gIHZhciBjdXJyZW50TGluZVxuICB2YXIgY29udGVudFxuICB2YXIgcXVldWVcbiAgdmFyIHN1YnF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGlkZW50aWZpZXJcbiAgdmFyIGFkZFxuICB2YXIgZXhpdFxuXG4gIGlmICghc2VsZi5vcHRpb25zLmZvb3Rub3Rlcykge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXggPSAwXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICBzdWJ2YWx1ZSA9ICcnXG4gIG5vdyA9IGVhdC5ub3coKVxuICBjdXJyZW50TGluZSA9IG5vdy5saW5lXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCkgIT09IGxlZnRTcXVhcmVCcmFja2V0IHx8XG4gICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgIT09IGNhcmV0XG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gbGVmdFNxdWFyZUJyYWNrZXQgKyBjYXJldFxuICBpbmRleCA9IHN1YnZhbHVlLmxlbmd0aFxuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBicmVha1xuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChcbiAgICAhcXVldWUgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSByaWdodFNxdWFyZUJyYWNrZXQgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSAhPT0gY29sb25cbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlkZW50aWZpZXIgPSBxdWV1ZVxuICBzdWJ2YWx1ZSArPSBxdWV1ZSArIHJpZ2h0U3F1YXJlQnJhY2tldCArIGNvbG9uXG4gIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgbm93LmNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgbm93Lm9mZnNldCArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuICBjb250ZW50ID0gJydcbiAgc3VicXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBzdWJxdWV1ZSA9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICBpbmRleCsrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IHN1YnF1ZXVlXG4gICAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgc3VicXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgaWYgKHN1YnF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBzdWJxdWV1ZVxuICAgIH1cblxuICAgIGlmIChxdWV1ZSkge1xuICAgICAgY29udGVudCArPSBxdWV1ZVxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cblxuICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgc3VidmFsdWUgKz0gY29udGVudFxuXG4gIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoRVhQUkVTU0lPTl9JTklUSUFMX1RBQiwgZnVuY3Rpb24obGluZSkge1xuICAgIG9mZnNldHNbY3VycmVudExpbmVdID0gKG9mZnNldHNbY3VycmVudExpbmVdIHx8IDApICsgbGluZS5sZW5ndGhcbiAgICBjdXJyZW50TGluZSsrXG5cbiAgICByZXR1cm4gJydcbiAgfSlcblxuICBhZGQgPSBlYXQoc3VidmFsdWUpXG5cbiAgZXhpdCA9IHNlbGYuZW50ZXJCbG9jaygpXG4gIGNvbnRlbnQgPSBzZWxmLnRva2VuaXplQmxvY2soY29udGVudCwgbm93KVxuICBleGl0KClcblxuICByZXR1cm4gYWRkKHtcbiAgICB0eXBlOiAnZm9vdG5vdGVEZWZpbml0aW9uJyxcbiAgICBpZGVudGlmaWVyOiBub3JtYWxpemUoaWRlbnRpZmllciksXG4gICAgbGFiZWw6IGlkZW50aWZpZXIsXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCcuLi91dGlsL25vcm1hbGl6ZScpXG5cbm1vZHVsZS5leHBvcnRzID0gZGVmaW5pdGlvblxuXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxlZnRTcXVhcmVCcmFja2V0ID0gJ1snXG52YXIgcmlnaHRTcXVhcmVCcmFja2V0ID0gJ10nXG52YXIgbGVmdFBhcmVudGhlc2lzID0gJygnXG52YXIgcmlnaHRQYXJlbnRoZXNpcyA9ICcpJ1xudmFyIGNvbG9uID0gJzonXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBncmVhdGVyVGhhbiA9ICc+J1xuXG5mdW5jdGlvbiBkZWZpbml0aW9uKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZWxmLm9wdGlvbnMuY29tbW9ubWFya1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGJlZm9yZVVSTFxuICB2YXIgYmVmb3JlVGl0bGVcbiAgdmFyIHF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHRlc3RcbiAgdmFyIGlkZW50aWZpZXJcbiAgdmFyIHVybFxuICB2YXIgdGl0bGVcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGluZGV4KytcbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGJyZWFrXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKFxuICAgICFxdWV1ZSB8fFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCkgIT09IHJpZ2h0U3F1YXJlQnJhY2tldCB8fFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBjb2xvblxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlkZW50aWZpZXIgPSBxdWV1ZVxuICBzdWJ2YWx1ZSArPSBxdWV1ZSArIHJpZ2h0U3F1YXJlQnJhY2tldCArIGNvbG9uXG4gIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSB0YWIgJiYgY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgcXVldWUgPSAnJ1xuICBiZWZvcmVVUkwgPSBzdWJ2YWx1ZVxuXG4gIGlmIChjaGFyYWN0ZXIgPT09IGxlc3NUaGFuKSB7XG4gICAgaW5kZXgrK1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmICghaXNFbmNsb3NlZFVSTENoYXJhY3RlcihjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGlzRW5jbG9zZWRVUkxDaGFyYWN0ZXIuZGVsaW1pdGVyKSB7XG4gICAgICBzdWJ2YWx1ZSArPSBsZXNzVGhhbiArIHF1ZXVlICsgY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb21tb25tYXJrKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpbmRleCAtPSBxdWV1ZS5sZW5ndGggKyAxXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgfVxuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoIWlzVW5jbG9zZWRVUkxDaGFyYWN0ZXIoY2hhcmFjdGVyKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdXJsID0gcXVldWVcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB0ZXN0ID0gbnVsbFxuXG4gIGlmIChjaGFyYWN0ZXIgPT09IHF1b3RhdGlvbk1hcmspIHtcbiAgICB0ZXN0ID0gcXVvdGF0aW9uTWFya1xuICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gYXBvc3Ryb3BoZSkge1xuICAgIHRlc3QgPSBhcG9zdHJvcGhlXG4gIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMpIHtcbiAgICB0ZXN0ID0gcmlnaHRQYXJlbnRoZXNpc1xuICB9XG5cbiAgaWYgKCF0ZXN0KSB7XG4gICAgcXVldWUgPSAnJ1xuICAgIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gIH0gZWxzZSBpZiAocXVldWUpIHtcbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gICAgcXVldWUgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IHRlc3QpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQgfHwgY2hhcmFjdGVyID09PSB0ZXN0KSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZSArPSBsaW5lRmVlZFxuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSB0ZXN0KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiZWZvcmVUaXRsZSA9IHN1YnZhbHVlXG4gICAgc3VidmFsdWUgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gICAgdGl0bGUgPSBxdWV1ZVxuICAgIHF1ZXVlID0gJydcbiAgfSBlbHNlIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgaWYgKHNpbGVudCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBiZWZvcmVVUkwgPSBlYXQoYmVmb3JlVVJMKS50ZXN0KCkuZW5kXG4gICAgdXJsID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUodXJsKSwgYmVmb3JlVVJMLCB7bm9uVGVybWluYXRlZDogZmFsc2V9KVxuXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICBiZWZvcmVUaXRsZSA9IGVhdChiZWZvcmVUaXRsZSkudGVzdCgpLmVuZFxuICAgICAgdGl0bGUgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZSh0aXRsZSksIGJlZm9yZVRpdGxlKVxuICAgIH1cblxuICAgIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICAgIHR5cGU6ICdkZWZpbml0aW9uJyxcbiAgICAgIGlkZW50aWZpZXI6IG5vcm1hbGl6ZShpZGVudGlmaWVyKSxcbiAgICAgIGxhYmVsOiBpZGVudGlmaWVyLFxuICAgICAgdGl0bGU6IHRpdGxlIHx8IG51bGwsXG4gICAgICB1cmw6IHVybFxuICAgIH0pXG4gIH1cbn1cblxuLy8gQ2hlY2sgaWYgYGNoYXJhY3RlcmAgY2FuIGJlIGluc2lkZSBhbiBlbmNsb3NlZCBVUkkuXG5mdW5jdGlvbiBpc0VuY2xvc2VkVVJMQ2hhcmFjdGVyKGNoYXJhY3Rlcikge1xuICByZXR1cm4gKFxuICAgIGNoYXJhY3RlciAhPT0gZ3JlYXRlclRoYW4gJiZcbiAgICBjaGFyYWN0ZXIgIT09IGxlZnRTcXVhcmVCcmFja2V0ICYmXG4gICAgY2hhcmFjdGVyICE9PSByaWdodFNxdWFyZUJyYWNrZXRcbiAgKVxufVxuXG5pc0VuY2xvc2VkVVJMQ2hhcmFjdGVyLmRlbGltaXRlciA9IGdyZWF0ZXJUaGFuXG5cbi8vIENoZWNrIGlmIGBjaGFyYWN0ZXJgIGNhbiBiZSBpbnNpZGUgYW4gdW5jbG9zZWQgVVJJLlxuZnVuY3Rpb24gaXNVbmNsb3NlZFVSTENoYXJhY3RlcihjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIChcbiAgICBjaGFyYWN0ZXIgIT09IGxlZnRTcXVhcmVCcmFja2V0ICYmXG4gICAgY2hhcmFjdGVyICE9PSByaWdodFNxdWFyZUJyYWNrZXQgJiZcbiAgICAhd2hpdGVzcGFjZShjaGFyYWN0ZXIpXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcblxubW9kdWxlLmV4cG9ydHMgPSB0YWJsZVxuXG52YXIgdGFiID0gJ1xcdCdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgc3BhY2UgPSAnICdcbnZhciBkYXNoID0gJy0nXG52YXIgY29sb24gPSAnOidcbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcbnZhciB2ZXJ0aWNhbEJhciA9ICd8J1xuXG52YXIgbWluQ29sdW1ucyA9IDFcbnZhciBtaW5Sb3dzID0gMlxuXG52YXIgbGVmdCA9ICdsZWZ0J1xudmFyIGNlbnRlciA9ICdjZW50ZXInXG52YXIgcmlnaHQgPSAncmlnaHQnXG5cbmZ1bmN0aW9uIHRhYmxlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGluZGV4XG4gIHZhciBhbGlnbm1lbnRzXG4gIHZhciBhbGlnbm1lbnRcbiAgdmFyIHN1YnZhbHVlXG4gIHZhciByb3dcbiAgdmFyIGxlbmd0aFxuICB2YXIgbGluZXNcbiAgdmFyIHF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGhhc0Rhc2hcbiAgdmFyIGFsaWduXG4gIHZhciBjZWxsXG4gIHZhciBwcmVhbWJsZVxuICB2YXIgbm93XG4gIHZhciBwb3NpdGlvblxuICB2YXIgbGluZUNvdW50XG4gIHZhciBsaW5lXG4gIHZhciByb3dzXG4gIHZhciB0YWJsZVxuICB2YXIgbGluZUluZGV4XG4gIHZhciBwaXBlSW5kZXhcbiAgdmFyIGZpcnN0XG5cbiAgLy8gRXhpdCB3aGVuIG5vdCBpbiBnZm0tbW9kZS5cbiAgaWYgKCFzZWxmLm9wdGlvbnMuZ2ZtKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBHZXQgdGhlIHJvd3MuXG4gIC8vIERldGVjdGluZyB0YWJsZXMgc29vbiBpcyBoYXJkLCBzbyB0aGVyZSBhcmUgc29tZSBjaGVja3MgZm9yIHBlcmZvcm1hbmNlXG4gIC8vIGhlcmUsIHN1Y2ggYXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIHJvd3MsIGFuZCBhbGxvd2VkIGNoYXJhY3RlcnMgaW4gdGhlXG4gIC8vIGFsaWdubWVudCByb3cuXG4gIGluZGV4ID0gMFxuICBsaW5lQ291bnQgPSAwXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCArIDFcbiAgbGluZXMgPSBbXVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGxpbmVJbmRleCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQsIGluZGV4KVxuICAgIHBpcGVJbmRleCA9IHZhbHVlLmluZGV4T2YodmVydGljYWxCYXIsIGluZGV4ICsgMSlcblxuICAgIGlmIChsaW5lSW5kZXggPT09IC0xKSB7XG4gICAgICBsaW5lSW5kZXggPSB2YWx1ZS5sZW5ndGhcbiAgICB9XG5cbiAgICBpZiAocGlwZUluZGV4ID09PSAtMSB8fCBwaXBlSW5kZXggPiBsaW5lSW5kZXgpIHtcbiAgICAgIGlmIChsaW5lQ291bnQgPCBtaW5Sb3dzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGxpbmVzLnB1c2godmFsdWUuc2xpY2UoaW5kZXgsIGxpbmVJbmRleCkpXG4gICAgbGluZUNvdW50KytcbiAgICBpbmRleCA9IGxpbmVJbmRleCArIDFcbiAgfVxuXG4gIC8vIFBhcnNlIHRoZSBhbGlnbm1lbnQgcm93LlxuICBzdWJ2YWx1ZSA9IGxpbmVzLmpvaW4obGluZUZlZWQpXG4gIGFsaWdubWVudHMgPSBsaW5lcy5zcGxpY2UoMSwgMSlbMF0gfHwgW11cbiAgaW5kZXggPSAwXG4gIGxlbmd0aCA9IGFsaWdubWVudHMubGVuZ3RoXG4gIGxpbmVDb3VudC0tXG4gIGFsaWdubWVudCA9IGZhbHNlXG4gIGFsaWduID0gW11cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSBhbGlnbm1lbnRzLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHZlcnRpY2FsQmFyKSB7XG4gICAgICBoYXNEYXNoID0gbnVsbFxuXG4gICAgICBpZiAoYWxpZ25tZW50ID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZmlyc3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsaWduLnB1c2goYWxpZ25tZW50KVxuICAgICAgICBhbGlnbm1lbnQgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBmaXJzdCA9IGZhbHNlXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGRhc2gpIHtcbiAgICAgIGhhc0Rhc2ggPSB0cnVlXG4gICAgICBhbGlnbm1lbnQgPSBhbGlnbm1lbnQgfHwgbnVsbFxuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBjb2xvbikge1xuICAgICAgaWYgKGFsaWdubWVudCA9PT0gbGVmdCkge1xuICAgICAgICBhbGlnbm1lbnQgPSBjZW50ZXJcbiAgICAgIH0gZWxzZSBpZiAoaGFzRGFzaCAmJiBhbGlnbm1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgYWxpZ25tZW50ID0gcmlnaHRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsaWdubWVudCA9IGxlZnRcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChhbGlnbm1lbnQgIT09IGZhbHNlKSB7XG4gICAgYWxpZ24ucHVzaChhbGlnbm1lbnQpXG4gIH1cblxuICAvLyBFeGl0IHdoZW4gd2l0aG91dCBlbm91Z2ggY29sdW1ucy5cbiAgaWYgKGFsaWduLmxlbmd0aCA8IG1pbkNvbHVtbnMpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBQYXJzZSB0aGUgcm93cy5cbiAgcG9zaXRpb24gPSAtMVxuICByb3dzID0gW11cblxuICB0YWJsZSA9IGVhdChzdWJ2YWx1ZSkucmVzZXQoe3R5cGU6ICd0YWJsZScsIGFsaWduOiBhbGlnbiwgY2hpbGRyZW46IHJvd3N9KVxuXG4gIHdoaWxlICgrK3Bvc2l0aW9uIDwgbGluZUNvdW50KSB7XG4gICAgbGluZSA9IGxpbmVzW3Bvc2l0aW9uXVxuICAgIHJvdyA9IHt0eXBlOiAndGFibGVSb3cnLCBjaGlsZHJlbjogW119XG5cbiAgICAvLyBFYXQgYSBuZXdsaW5lIGNoYXJhY3RlciB3aGVuIHRoaXMgaXMgbm90IHRoZSBmaXJzdCByb3cuXG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBlYXQobGluZUZlZWQpXG4gICAgfVxuXG4gICAgLy8gRWF0IHRoZSByb3cuXG4gICAgZWF0KGxpbmUpLnJlc2V0KHJvdywgdGFibGUpXG5cbiAgICBsZW5ndGggPSBsaW5lLmxlbmd0aCArIDFcbiAgICBpbmRleCA9IDBcbiAgICBxdWV1ZSA9ICcnXG4gICAgY2VsbCA9ICcnXG4gICAgcHJlYW1ibGUgPSB0cnVlXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IGxpbmUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSB0YWIgfHwgY2hhcmFjdGVyID09PSBzcGFjZSkge1xuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVhdChjaGFyYWN0ZXIpXG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09ICcnIHx8IGNoYXJhY3RlciA9PT0gdmVydGljYWxCYXIpIHtcbiAgICAgICAgaWYgKHByZWFtYmxlKSB7XG4gICAgICAgICAgZWF0KGNoYXJhY3RlcilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoKGNlbGwgfHwgY2hhcmFjdGVyKSAmJiAhcHJlYW1ibGUpIHtcbiAgICAgICAgICAgIHN1YnZhbHVlID0gY2VsbFxuXG4gICAgICAgICAgICBpZiAocXVldWUubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyKSB7XG4gICAgICAgICAgICAgICAgc3VidmFsdWUgKz0gcXVldWUuc2xpY2UoMCwgcXVldWUubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICBxdWV1ZSA9IHF1ZXVlLmNoYXJBdChxdWV1ZS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1YnZhbHVlICs9IHF1ZXVlXG4gICAgICAgICAgICAgICAgcXVldWUgPSAnJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5vdyA9IGVhdC5ub3coKVxuXG4gICAgICAgICAgICBlYXQoc3VidmFsdWUpKFxuICAgICAgICAgICAgICB7dHlwZTogJ3RhYmxlQ2VsbCcsIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKGNlbGwsIG5vdyl9LFxuICAgICAgICAgICAgICByb3dcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlYXQocXVldWUgKyBjaGFyYWN0ZXIpXG5cbiAgICAgICAgICBxdWV1ZSA9ICcnXG4gICAgICAgICAgY2VsbCA9ICcnXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChxdWV1ZSkge1xuICAgICAgICAgIGNlbGwgKz0gcXVldWVcbiAgICAgICAgICBxdWV1ZSA9ICcnXG4gICAgICAgIH1cblxuICAgICAgICBjZWxsICs9IGNoYXJhY3RlclxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCAmJiBpbmRleCAhPT0gbGVuZ3RoIC0gMikge1xuICAgICAgICAgIGNlbGwgKz0gbGluZS5jaGFyQXQoaW5kZXggKyAxKVxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcmVhbWJsZSA9IGZhbHNlXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgLy8gRWF0IHRoZSBhbGlnbm1lbnQgcm93LlxuICAgIGlmICghcG9zaXRpb24pIHtcbiAgICAgIGVhdChsaW5lRmVlZCArIGFsaWdubWVudHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhYmxlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciBkZWNpbWFsID0gcmVxdWlyZSgnaXMtZGVjaW1hbCcpXG52YXIgdHJpbVRyYWlsaW5nTGluZXMgPSByZXF1aXJlKCd0cmltLXRyYWlsaW5nLWxpbmVzJylcbnZhciBpbnRlcnJ1cHQgPSByZXF1aXJlKCcuLi91dGlsL2ludGVycnVwdCcpXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyYWdyYXBoXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBzcGFjZSA9ICcgJ1xuXG52YXIgdGFiU2l6ZSA9IDRcblxuLy8gVG9rZW5pc2UgcGFyYWdyYXBoLlxuZnVuY3Rpb24gcGFyYWdyYXBoKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHNldHRpbmdzID0gc2VsZi5vcHRpb25zXG4gIHZhciBjb21tb25tYXJrID0gc2V0dGluZ3MuY29tbW9ubWFya1xuICB2YXIgZ2ZtID0gc2V0dGluZ3MuZ2ZtXG4gIHZhciB0b2tlbml6ZXJzID0gc2VsZi5ibG9ja1Rva2VuaXplcnNcbiAgdmFyIGludGVycnVwdG9ycyA9IHNlbGYuaW50ZXJydXB0UGFyYWdyYXBoXG4gIHZhciBpbmRleCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQpXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHBvc2l0aW9uXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBzaXplXG4gIHZhciBub3dcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAvLyBFYXQgZXZlcnl0aGluZyBpZiB0aGVyZeKAmXMgbm8gZm9sbG93aW5nIG5ld2xpbmUuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgaW5kZXggPSBsZW5ndGhcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gU3RvcCBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgTkVXTElORS5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IGxpbmVGZWVkKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIC8vIEluIGNvbW1vbm1hcmstbW9kZSwgZm9sbG93aW5nIGluZGVudGVkIGxpbmVzIGFyZSBwYXJ0IG9mIHRoZSBwYXJhZ3JhcGguXG4gICAgaWYgKGNvbW1vbm1hcmspIHtcbiAgICAgIHNpemUgPSAwXG4gICAgICBwb3NpdGlvbiA9IGluZGV4ICsgMVxuXG4gICAgICB3aGlsZSAocG9zaXRpb24gPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KHBvc2l0aW9uKVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgICAgIHNpemUgPSB0YWJTaXplXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICAgICAgc2l6ZSsrXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvc2l0aW9uKytcbiAgICAgIH1cblxuICAgICAgaWYgKHNpemUgPj0gdGFiU2l6ZSAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoaW5kZXggKyAxKVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZvbGxvd2luZyBjb2RlIGNvbnRhaW5zIGEgcG9zc2libGUgYmxvY2suXG4gICAgaWYgKGludGVycnVwdChpbnRlcnJ1cHRvcnMsIHRva2VuaXplcnMsIHNlbGYsIFtlYXQsIHN1YnZhbHVlLCB0cnVlXSkpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gQnJlYWsgaWYgdGhlIGZvbGxvd2luZyBsaW5lIHN0YXJ0cyBhIGxpc3QsIHdoZW4gYWxyZWFkeSBpbiBhIGxpc3QsIG9yXG4gICAgLy8gd2hlbiBpbiBjb21tb25tYXJrLCBvciB3aGVuIGluIGdmbSBtb2RlIGFuZCB0aGUgYnVsbGV0IGlzICpub3QqIG51bWVyaWMuXG4gICAgaWYgKFxuICAgICAgdG9rZW5pemVycy5saXN0LmNhbGwoc2VsZiwgZWF0LCBzdWJ2YWx1ZSwgdHJ1ZSkgJiZcbiAgICAgIChzZWxmLmluTGlzdCB8fFxuICAgICAgICBjb21tb25tYXJrIHx8XG4gICAgICAgIChnZm0gJiYgIWRlY2ltYWwodHJpbS5sZWZ0KHN1YnZhbHVlKS5jaGFyQXQoMCkpKSlcbiAgICApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcG9zaXRpb24gPSBpbmRleFxuICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuXG4gICAgaWYgKGluZGV4ICE9PSAtMSAmJiB0cmltKHZhbHVlLnNsaWNlKHBvc2l0aW9uLCBpbmRleCkpID09PSAnJykge1xuICAgICAgaW5kZXggPSBwb3NpdGlvblxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBzdWJ2YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIGluZGV4KVxuXG4gIGlmICh0cmltKHN1YnZhbHVlKSA9PT0gJycpIHtcbiAgICBlYXQoc3VidmFsdWUpXG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5vdyA9IGVhdC5ub3coKVxuICBzdWJ2YWx1ZSA9IHRyaW1UcmFpbGluZ0xpbmVzKHN1YnZhbHVlKVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KVxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZS5pbmRleE9mKCdcXFxcJywgZnJvbUluZGV4KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvZXNjYXBlJylcblxubW9kdWxlLmV4cG9ydHMgPSBlc2NhcGVcbmVzY2FwZS5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG5cbmZ1bmN0aW9uIGVzY2FwZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG5vZGVcblxuICBpZiAodmFsdWUuY2hhckF0KDApID09PSBiYWNrc2xhc2gpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMSlcblxuICAgIGlmIChzZWxmLmVzY2FwZS5pbmRleE9mKGNoYXJhY3RlcikgIT09IC0xKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgIG5vZGUgPSB7dHlwZTogJ2JyZWFrJ31cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUgPSB7dHlwZTogJ3RleHQnLCB2YWx1ZTogY2hhcmFjdGVyfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWF0KGJhY2tzbGFzaCArIGNoYXJhY3Rlcikobm9kZSlcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUuaW5kZXhPZignPCcsIGZyb21JbmRleClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBkZWNvZGUgPSByZXF1aXJlKCdwYXJzZS1lbnRpdGllcycpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL3RhZycpXG5cbm1vZHVsZS5leHBvcnRzID0gYXV0b0xpbmtcbmF1dG9MaW5rLmxvY2F0b3IgPSBsb2NhdGVcbmF1dG9MaW5rLm5vdEluTGluayA9IHRydWVcblxudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBhdFNpZ24gPSAnQCdcbnZhciBzbGFzaCA9ICcvJ1xudmFyIG1haWx0byA9ICdtYWlsdG86J1xudmFyIG1haWx0b0xlbmd0aCA9IG1haWx0by5sZW5ndGhcblxuZnVuY3Rpb24gYXV0b0xpbmsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIHF1ZXVlID0gJydcbiAgdmFyIGhhc0F0Q2hhcmFjdGVyID0gZmFsc2VcbiAgdmFyIGxpbmsgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBub3dcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIHRva2VuaXplcnNcbiAgdmFyIGV4aXRcblxuICBpZiAodmFsdWUuY2hhckF0KDApICE9PSBsZXNzVGhhbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBzdWJ2YWx1ZSA9IGxlc3NUaGFuXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKFxuICAgICAgd2hpdGVzcGFjZShjaGFyYWN0ZXIpIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGdyZWF0ZXJUaGFuIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGF0U2lnbiB8fFxuICAgICAgKGNoYXJhY3RlciA9PT0gJzonICYmIHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBzbGFzaClcbiAgICApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbGluayArPSBxdWV1ZVxuICBxdWV1ZSA9ICcnXG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICBsaW5rICs9IGNoYXJhY3RlclxuICBpbmRleCsrXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gYXRTaWduKSB7XG4gICAgaGFzQXRDaGFyYWN0ZXIgPSB0cnVlXG4gIH0gZWxzZSB7XG4gICAgaWYgKGNoYXJhY3RlciAhPT0gJzonIHx8IHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBzbGFzaCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGluayArPSBzbGFzaFxuICAgIGluZGV4KytcbiAgfVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09PSBncmVhdGVyVGhhbikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKCFxdWV1ZSB8fCBjaGFyYWN0ZXIgIT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbGluayArPSBxdWV1ZVxuICBjb250ZW50ID0gbGlua1xuICBzdWJ2YWx1ZSArPSBsaW5rICsgY2hhcmFjdGVyXG4gIG5vdyA9IGVhdC5ub3coKVxuICBub3cuY29sdW1uKytcbiAgbm93Lm9mZnNldCsrXG5cbiAgaWYgKGhhc0F0Q2hhcmFjdGVyKSB7XG4gICAgaWYgKGxpbmsuc2xpY2UoMCwgbWFpbHRvTGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBtYWlsdG8pIHtcbiAgICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKG1haWx0b0xlbmd0aClcbiAgICAgIG5vdy5jb2x1bW4gKz0gbWFpbHRvTGVuZ3RoXG4gICAgICBub3cub2Zmc2V0ICs9IG1haWx0b0xlbmd0aFxuICAgIH0gZWxzZSB7XG4gICAgICBsaW5rID0gbWFpbHRvICsgbGlua1xuICAgIH1cbiAgfVxuXG4gIC8vIFRlbXBvcmFyaWx5IHJlbW92ZSBhbGwgdG9rZW5pemVycyBleGNlcHQgdGV4dCBpbiBhdXRvbGlua3MuXG4gIHRva2VuaXplcnMgPSBzZWxmLmlubGluZVRva2VuaXplcnNcbiAgc2VsZi5pbmxpbmVUb2tlbml6ZXJzID0ge3RleHQ6IHRva2VuaXplcnMudGV4dH1cblxuICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuXG4gIGNvbnRlbnQgPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcblxuICBzZWxmLmlubGluZVRva2VuaXplcnMgPSB0b2tlbml6ZXJzXG4gIGV4aXQoKVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnbGluaycsXG4gICAgdGl0bGU6IG51bGwsXG4gICAgdXJsOiBkZWNvZGUobGluaywge25vblRlcm1pbmF0ZWQ6IGZhbHNlfSksXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG52YXIgcHJvdG9jb2xzID0gWydodHRwczovLycsICdodHRwOi8vJywgJ21haWx0bzonXVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgbGVuZ3RoID0gcHJvdG9jb2xzLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbWluID0gLTFcbiAgdmFyIHBvc2l0aW9uXG5cbiAgaWYgKCF0aGlzLm9wdGlvbnMuZ2ZtKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHBvc2l0aW9uID0gdmFsdWUuaW5kZXhPZihwcm90b2NvbHNbaW5kZXhdLCBmcm9tSW5kZXgpXG5cbiAgICBpZiAocG9zaXRpb24gIT09IC0xICYmIChwb3NpdGlvbiA8IG1pbiB8fCBtaW4gPT09IC0xKSkge1xuICAgICAgbWluID0gcG9zaXRpb25cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWluXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGRlY29kZSA9IHJlcXVpcmUoJ3BhcnNlLWVudGl0aWVzJylcbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS91cmwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVybFxudXJsLmxvY2F0b3IgPSBsb2NhdGVcbnVybC5ub3RJbkxpbmsgPSB0cnVlXG5cbnZhciBxdW90YXRpb25NYXJrID0gJ1wiJ1xudmFyIGFwb3N0cm9waGUgPSBcIidcIlxudmFyIGxlZnRQYXJlbnRoZXNpcyA9ICcoJ1xudmFyIHJpZ2h0UGFyZW50aGVzaXMgPSAnKSdcbnZhciBjb21tYSA9ICcsJ1xudmFyIGRvdCA9ICcuJ1xudmFyIGNvbG9uID0gJzonXG52YXIgc2VtaWNvbG9uID0gJzsnXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBhdFNpZ24gPSAnQCdcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xuXG52YXIgaHR0cCA9ICdodHRwOi8vJ1xudmFyIGh0dHBzID0gJ2h0dHBzOi8vJ1xudmFyIG1haWx0byA9ICdtYWlsdG86J1xuXG52YXIgcHJvdG9jb2xzID0gW2h0dHAsIGh0dHBzLCBtYWlsdG9dXG5cbnZhciBwcm90b2NvbHNMZW5ndGggPSBwcm90b2NvbHMubGVuZ3RoXG5cbmZ1bmN0aW9uIHVybChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgY29udGVudFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBpbmRleFxuICB2YXIgcG9zaXRpb25cbiAgdmFyIHByb3RvY29sXG4gIHZhciBtYXRjaFxuICB2YXIgbGVuZ3RoXG4gIHZhciBxdWV1ZVxuICB2YXIgcGFyZW5Db3VudFxuICB2YXIgbmV4dENoYXJhY3RlclxuICB2YXIgdG9rZW5pemVyc1xuICB2YXIgZXhpdFxuXG4gIGlmICghc2VsZi5vcHRpb25zLmdmbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgPSAnJ1xuICBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBwcm90b2NvbHNMZW5ndGgpIHtcbiAgICBwcm90b2NvbCA9IHByb3RvY29sc1tpbmRleF1cbiAgICBtYXRjaCA9IHZhbHVlLnNsaWNlKDAsIHByb3RvY29sLmxlbmd0aClcblxuICAgIGlmIChtYXRjaC50b0xvd2VyQ2FzZSgpID09PSBwcm90b2NvbCkge1xuICAgICAgc3VidmFsdWUgPSBtYXRjaFxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoIXN1YnZhbHVlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCA9IHN1YnZhbHVlLmxlbmd0aFxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuICBwYXJlbkNvdW50ID0gMFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09PSBsZXNzVGhhbikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IGRvdCB8fFxuICAgICAgY2hhcmFjdGVyID09PSBjb21tYSB8fFxuICAgICAgY2hhcmFjdGVyID09PSBjb2xvbiB8fFxuICAgICAgY2hhcmFjdGVyID09PSBzZW1pY29sb24gfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gcXVvdGF0aW9uTWFyayB8fFxuICAgICAgY2hhcmFjdGVyID09PSBhcG9zdHJvcGhlIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IHJpZ2h0UGFyZW50aGVzaXMgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0XG4gICAgKSB7XG4gICAgICBuZXh0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4ICsgMSlcblxuICAgICAgaWYgKCFuZXh0Q2hhcmFjdGVyIHx8IHdoaXRlc3BhY2UobmV4dENoYXJhY3RlcikpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMgfHwgY2hhcmFjdGVyID09PSBsZWZ0U3F1YXJlQnJhY2tldCkge1xuICAgICAgcGFyZW5Db3VudCsrXG4gICAgfVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcyB8fCBjaGFyYWN0ZXIgPT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgICAgcGFyZW5Db3VudC0tXG5cbiAgICAgIGlmIChwYXJlbkNvdW50IDwgMCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmICghcXVldWUpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHN1YnZhbHVlICs9IHF1ZXVlXG4gIGNvbnRlbnQgPSBzdWJ2YWx1ZVxuXG4gIGlmIChwcm90b2NvbCA9PT0gbWFpbHRvKSB7XG4gICAgcG9zaXRpb24gPSBxdWV1ZS5pbmRleE9mKGF0U2lnbilcblxuICAgIGlmIChwb3NpdGlvbiA9PT0gLTEgfHwgcG9zaXRpb24gPT09IGxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKG1haWx0by5sZW5ndGgpXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZXhpdCA9IHNlbGYuZW50ZXJMaW5rKClcblxuICAvLyBUZW1wb3JhcmlseSByZW1vdmUgYWxsIHRva2VuaXplcnMgZXhjZXB0IHRleHQgaW4gdXJsLlxuICB0b2tlbml6ZXJzID0gc2VsZi5pbmxpbmVUb2tlbml6ZXJzXG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHt0ZXh0OiB0b2tlbml6ZXJzLnRleHR9XG5cbiAgY29udGVudCA9IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgZWF0Lm5vdygpKVxuXG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHRva2VuaXplcnNcbiAgZXhpdCgpXG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgIHR5cGU6ICdsaW5rJyxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB1cmw6IGRlY29kZShzdWJ2YWx1ZSwge25vblRlcm1pbmF0ZWQ6IGZhbHNlfSksXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYWxwaGFiZXRpY2FsID0gcmVxdWlyZSgnaXMtYWxwaGFiZXRpY2FsJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvdGFnJylcbnZhciB0YWcgPSByZXF1aXJlKCcuLi91dGlsL2h0bWwnKS50YWdcblxubW9kdWxlLmV4cG9ydHMgPSBpbmxpbmVIVE1MXG5pbmxpbmVIVE1MLmxvY2F0b3IgPSBsb2NhdGVcblxudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgcXVlc3Rpb25NYXJrID0gJz8nXG52YXIgZXhjbGFtYXRpb25NYXJrID0gJyEnXG52YXIgc2xhc2ggPSAnLydcblxudmFyIGh0bWxMaW5rT3BlbkV4cHJlc3Npb24gPSAvXjxhIC9pXG52YXIgaHRtbExpbmtDbG9zZUV4cHJlc3Npb24gPSAvXjxcXC9hPi9pXG5cbmZ1bmN0aW9uIGlubGluZUhUTUwoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHN1YnZhbHVlXG5cbiAgaWYgKHZhbHVlLmNoYXJBdCgwKSAhPT0gbGVzc1RoYW4gfHwgbGVuZ3RoIDwgMykge1xuICAgIHJldHVyblxuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDEpXG5cbiAgaWYgKFxuICAgICFhbHBoYWJldGljYWwoY2hhcmFjdGVyKSAmJlxuICAgIGNoYXJhY3RlciAhPT0gcXVlc3Rpb25NYXJrICYmXG4gICAgY2hhcmFjdGVyICE9PSBleGNsYW1hdGlvbk1hcmsgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHNsYXNoXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5tYXRjaCh0YWcpXG5cbiAgaWYgKCFzdWJ2YWx1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbm90IHVzZWQgeWV0LiAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHN1YnZhbHVlID0gc3VidmFsdWVbMF1cblxuICBpZiAoIXNlbGYuaW5MaW5rICYmIGh0bWxMaW5rT3BlbkV4cHJlc3Npb24udGVzdChzdWJ2YWx1ZSkpIHtcbiAgICBzZWxmLmluTGluayA9IHRydWVcbiAgfSBlbHNlIGlmIChzZWxmLmluTGluayAmJiBodG1sTGlua0Nsb3NlRXhwcmVzc2lvbi50ZXN0KHN1YnZhbHVlKSkge1xuICAgIHNlbGYuaW5MaW5rID0gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHt0eXBlOiAnaHRtbCcsIHZhbHVlOiBzdWJ2YWx1ZX0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGxpbmsgPSB2YWx1ZS5pbmRleE9mKCdbJywgZnJvbUluZGV4KVxuICB2YXIgaW1hZ2UgPSB2YWx1ZS5pbmRleE9mKCchWycsIGZyb21JbmRleClcblxuICBpZiAoaW1hZ2UgPT09IC0xKSB7XG4gICAgcmV0dXJuIGxpbmtcbiAgfVxuXG4gIC8vIExpbmsgY2FuIG5ldmVyIGJlIGAtMWAgaWYgYW4gaW1hZ2UgaXMgZm91bmQsIHNvIHdlIGRvbuKAmXQgbmVlZCB0byBjaGVja1xuICAvLyBmb3IgdGhhdCA6KVxuICByZXR1cm4gbGluayA8IGltYWdlID8gbGluayA6IGltYWdlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2xpbmsnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpbmtcbmxpbmsubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIGV4Y2xhbWF0aW9uTWFyayA9ICchJ1xudmFyIHF1b3RhdGlvbk1hcmsgPSAnXCInXG52YXIgYXBvc3Ryb3BoZSA9IFwiJ1wiXG52YXIgbGVmdFBhcmVudGhlc2lzID0gJygnXG52YXIgcmlnaHRQYXJlbnRoZXNpcyA9ICcpJ1xudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xudmFyIGdyYXZlQWNjZW50ID0gJ2AnXG5cbmZ1bmN0aW9uIGxpbmsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMClcbiAgdmFyIHBlZGFudGljID0gc2VsZi5vcHRpb25zLnBlZGFudGljXG4gIHZhciBjb21tb25tYXJrID0gc2VsZi5vcHRpb25zLmNvbW1vbm1hcmtcbiAgdmFyIGdmbSA9IHNlbGYub3B0aW9ucy5nZm1cbiAgdmFyIGNsb3NlZFxuICB2YXIgY291bnRcbiAgdmFyIG9wZW5pbmdcbiAgdmFyIGJlZm9yZVVSTFxuICB2YXIgYmVmb3JlVGl0bGVcbiAgdmFyIHN1YnF1ZXVlXG4gIHZhciBoYXNNYXJrZXJcbiAgdmFyIGlzSW1hZ2VcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIG1hcmtlclxuICB2YXIgbGVuZ3RoXG4gIHZhciB0aXRsZVxuICB2YXIgZGVwdGhcbiAgdmFyIHF1ZXVlXG4gIHZhciB1cmxcbiAgdmFyIG5vd1xuICB2YXIgZXhpdFxuICB2YXIgbm9kZVxuXG4gIC8vIERldGVjdCB3aGV0aGVyIHRoaXMgaXMgYW4gaW1hZ2UuXG4gIGlmIChjaGFyYWN0ZXIgPT09IGV4Y2xhbWF0aW9uTWFyaykge1xuICAgIGlzSW1hZ2UgPSB0cnVlXG4gICAgc3VidmFsdWUgPSBjaGFyYWN0ZXJcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgfVxuXG4gIC8vIEVhdCB0aGUgb3BlbmluZy5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIEV4aXQgd2hlbiB0aGlzIGlzIGEgbGluayBhbmQgd2XigJlyZSBhbHJlYWR5IGluc2lkZSBhIGxpbmsuXG4gIGlmICghaXNJbWFnZSAmJiBzZWxmLmluTGluaykge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcbiAgaW5kZXgrK1xuXG4gIC8vIEVhdCB0aGUgY29udGVudC5cbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIG5vdyA9IGVhdC5ub3coKVxuICBkZXB0aCA9IDBcblxuICBub3cuY29sdW1uICs9IGluZGV4XG4gIG5vdy5vZmZzZXQgKz0gaW5kZXhcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgc3VicXVldWUgPSBjaGFyYWN0ZXJcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGdyYXZlQWNjZW50KSB7XG4gICAgICAvLyBJbmxpbmUtY29kZSBpbiBsaW5rIGNvbnRlbnQuXG4gICAgICBjb3VudCA9IDFcblxuICAgICAgd2hpbGUgKHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBncmF2ZUFjY2VudCkge1xuICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBjb3VudCsrXG4gICAgICB9XG5cbiAgICAgIGlmICghb3BlbmluZykge1xuICAgICAgICBvcGVuaW5nID0gY291bnRcbiAgICAgIH0gZWxzZSBpZiAoY291bnQgPj0gb3BlbmluZykge1xuICAgICAgICBvcGVuaW5nID0gMFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIC8vIEFsbG93IGJyYWNrZXRzIHRvIGJlIGVzY2FwZWQuXG4gICAgICBpbmRleCsrXG4gICAgICBzdWJxdWV1ZSArPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgfSBlbHNlIGlmICgoIW9wZW5pbmcgfHwgZ2ZtKSAmJiBjaGFyYWN0ZXIgPT09IGxlZnRTcXVhcmVCcmFja2V0KSB7XG4gICAgICAvLyBJbiBHRk0gbW9kZSwgYnJhY2tldHMgaW4gY29kZSBzdGlsbCBjb3VudC4gIEluIGFsbCBvdGhlciBtb2RlcyxcbiAgICAgIC8vIHRoZXkgZG9u4oCZdC5cbiAgICAgIGRlcHRoKytcbiAgICB9IGVsc2UgaWYgKCghb3BlbmluZyB8fCBnZm0pICYmIGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBpZiAoZGVwdGgpIHtcbiAgICAgICAgZGVwdGgtLVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQWxsb3cgd2hpdGUtc3BhY2UgYmV0d2VlbiBjb250ZW50IGFuZCB1cmwgaW4gR0ZNIG1vZGUuXG4gICAgICAgIGlmICghcGVkYW50aWMpIHtcbiAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCArIDEpXG5cbiAgICAgICAgICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICAgICAgaW5kZXgrK1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSAhPT0gbGVmdFBhcmVudGhlc2lzKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBzdWJxdWV1ZSArPSBsZWZ0UGFyZW50aGVzaXNcbiAgICAgICAgY2xvc2VkID0gdHJ1ZVxuICAgICAgICBpbmRleCsrXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBxdWV1ZSArPSBzdWJxdWV1ZVxuICAgIHN1YnF1ZXVlID0gJydcbiAgICBpbmRleCsrXG4gIH1cblxuICAvLyBFYXQgdGhlIGNvbnRlbnQgY2xvc2luZy5cbiAgaWYgKCFjbG9zZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnRlbnQgPSBxdWV1ZVxuICBzdWJ2YWx1ZSArPSBxdWV1ZSArIHN1YnF1ZXVlXG4gIGluZGV4KytcblxuICAvLyBFYXQgd2hpdGUtc3BhY2UuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIC8vIEVhdCB0aGUgVVJMLlxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHF1ZXVlID0gJydcbiAgYmVmb3JlVVJMID0gc3VidmFsdWVcblxuICBpZiAoY2hhcmFjdGVyID09PSBsZXNzVGhhbikge1xuICAgIGluZGV4KytcbiAgICBiZWZvcmVVUkwgKz0gbGVzc1RoYW5cblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSBncmVhdGVyVGhhbikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tbW9ubWFyayAmJiBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4KSAhPT0gZ3JlYXRlclRoYW4pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGxlc3NUaGFuICsgcXVldWUgKyBncmVhdGVyVGhhblxuICAgIHVybCA9IHF1ZXVlXG4gICAgaW5kZXgrK1xuICB9IGVsc2Uge1xuICAgIGNoYXJhY3RlciA9IG51bGxcbiAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKFxuICAgICAgICBzdWJxdWV1ZSAmJlxuICAgICAgICAoY2hhcmFjdGVyID09PSBxdW90YXRpb25NYXJrIHx8XG4gICAgICAgICAgY2hhcmFjdGVyID09PSBhcG9zdHJvcGhlIHx8XG4gICAgICAgICAgKGNvbW1vbm1hcmsgJiYgY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMpKVxuICAgICAgKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgICAgaWYgKCFwZWRhbnRpYykge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcykge1xuICAgICAgICAgIGRlcHRoKytcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHJpZ2h0UGFyZW50aGVzaXMpIHtcbiAgICAgICAgICBpZiAoZGVwdGggPT09IDApIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVwdGgtLVxuICAgICAgICB9XG5cbiAgICAgICAgcXVldWUgKz0gc3VicXVldWVcbiAgICAgICAgc3VicXVldWUgPSAnJ1xuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgICAgIHF1ZXVlICs9IGJhY2tzbGFzaFxuICAgICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICAgIHVybCA9IHF1ZXVlXG4gICAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgfVxuXG4gIC8vIEVhdCB3aGl0ZS1zcGFjZS5cbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgc3VidmFsdWUgKz0gcXVldWVcblxuICAvLyBFYXQgdGhlIHRpdGxlLlxuICBpZiAoXG4gICAgcXVldWUgJiZcbiAgICAoY2hhcmFjdGVyID09PSBxdW90YXRpb25NYXJrIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGFwb3N0cm9waGUgfHxcbiAgICAgIChjb21tb25tYXJrICYmIGNoYXJhY3RlciA9PT0gbGVmdFBhcmVudGhlc2lzKSlcbiAgKSB7XG4gICAgaW5kZXgrK1xuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIHF1ZXVlID0gJydcbiAgICBtYXJrZXIgPSBjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcyA/IHJpZ2h0UGFyZW50aGVzaXMgOiBjaGFyYWN0ZXJcbiAgICBiZWZvcmVUaXRsZSA9IHN1YnZhbHVlXG5cbiAgICAvLyBJbiBjb21tb25tYXJrLW1vZGUsIHRoaW5ncyBhcmUgcHJldHR5IGVhc3k6IHRoZSBtYXJrZXIgY2Fubm90IG9jY3VyXG4gICAgLy8gaW5zaWRlIHRoZSB0aXRsZS4gIE5vbi1jb21tb25tYXJrIGRvZXMsIGhvd2V2ZXIsIHN1cHBvcnQgbmVzdGVkXG4gICAgLy8gZGVsaW1pdGVycy5cbiAgICBpZiAoY29tbW9ubWFyaykge1xuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBtYXJrZXIpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICAgICAgcXVldWUgKz0gYmFja3NsYXNoXG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrXG4gICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgfVxuXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGl0bGUgPSBxdWV1ZVxuICAgICAgc3VidmFsdWUgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbWFya2VyKSB7XG4gICAgICAgICAgaWYgKGhhc01hcmtlcikge1xuICAgICAgICAgICAgcXVldWUgKz0gbWFya2VyICsgc3VicXVldWVcbiAgICAgICAgICAgIHN1YnF1ZXVlID0gJydcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBoYXNNYXJrZXIgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc01hcmtlcikge1xuICAgICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcykge1xuICAgICAgICAgIHN1YnZhbHVlICs9IHF1ZXVlICsgbWFya2VyICsgc3VicXVldWVcbiAgICAgICAgICB0aXRsZSA9IHF1ZXVlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfSBlbHNlIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBxdWV1ZSArPSBtYXJrZXIgKyBzdWJxdWV1ZSArIGNoYXJhY3RlclxuICAgICAgICAgIHN1YnF1ZXVlID0gJydcbiAgICAgICAgICBoYXNNYXJrZXIgPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSByaWdodFBhcmVudGhlc2lzKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgc3VidmFsdWUgKz0gcmlnaHRQYXJlbnRoZXNpc1xuXG4gIHVybCA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKHVybCksIGVhdChiZWZvcmVVUkwpLnRlc3QoKS5lbmQsIHtcbiAgICBub25UZXJtaW5hdGVkOiBmYWxzZVxuICB9KVxuXG4gIGlmICh0aXRsZSkge1xuICAgIGJlZm9yZVRpdGxlID0gZWF0KGJlZm9yZVRpdGxlKS50ZXN0KCkuZW5kXG4gICAgdGl0bGUgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZSh0aXRsZSksIGJlZm9yZVRpdGxlKVxuICB9XG5cbiAgbm9kZSA9IHtcbiAgICB0eXBlOiBpc0ltYWdlID8gJ2ltYWdlJyA6ICdsaW5rJyxcbiAgICB0aXRsZTogdGl0bGUgfHwgbnVsbCxcbiAgICB1cmw6IHVybFxuICB9XG5cbiAgaWYgKGlzSW1hZ2UpIHtcbiAgICBub2RlLmFsdCA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKGNvbnRlbnQpLCBub3cpIHx8IG51bGxcbiAgfSBlbHNlIHtcbiAgICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuICAgIG5vZGUuY2hpbGRyZW4gPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgICBleGl0KClcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKG5vZGUpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2xpbmsnKVxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uL3V0aWwvbm9ybWFsaXplJylcblxubW9kdWxlLmV4cG9ydHMgPSByZWZlcmVuY2VcbnJlZmVyZW5jZS5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBsaW5rID0gJ2xpbmsnXG52YXIgaW1hZ2UgPSAnaW1hZ2UnXG52YXIgZm9vdG5vdGUgPSAnZm9vdG5vdGUnXG52YXIgc2hvcnRjdXQgPSAnc2hvcnRjdXQnXG52YXIgY29sbGFwc2VkID0gJ2NvbGxhcHNlZCdcbnZhciBmdWxsID0gJ2Z1bGwnXG52YXIgc3BhY2UgPSAnICdcbnZhciBleGNsYW1hdGlvbk1hcmsgPSAnISdcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xudmFyIGNhcmV0ID0gJ14nXG5cbmZ1bmN0aW9uIHJlZmVyZW5jZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBjb21tb25tYXJrID0gc2VsZi5vcHRpb25zLmNvbW1vbm1hcmtcbiAgdmFyIGZvb3Rub3RlcyA9IHNlbGYub3B0aW9ucy5mb290bm90ZXNcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgwKVxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGludHJvID0gJydcbiAgdmFyIHR5cGUgPSBsaW5rXG4gIHZhciByZWZlcmVuY2VUeXBlID0gc2hvcnRjdXRcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGlkZW50aWZpZXJcbiAgdmFyIG5vd1xuICB2YXIgbm9kZVxuICB2YXIgZXhpdFxuICB2YXIgcXVldWVcbiAgdmFyIGJyYWNrZXRlZFxuICB2YXIgZGVwdGhcblxuICAvLyBDaGVjayB3aGV0aGVyIHdl4oCZcmUgZWF0aW5nIGFuIGltYWdlLlxuICBpZiAoY2hhcmFjdGVyID09PSBleGNsYW1hdGlvbk1hcmspIHtcbiAgICB0eXBlID0gaW1hZ2VcbiAgICBpbnRybyA9IGNoYXJhY3RlclxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICB9XG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGluZGV4KytcbiAgaW50cm8gKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICAvLyBDaGVjayB3aGV0aGVyIHdl4oCZcmUgZWF0aW5nIGEgZm9vdG5vdGUuXG4gIGlmIChmb290bm90ZXMgJiYgdmFsdWUuY2hhckF0KGluZGV4KSA9PT0gY2FyZXQpIHtcbiAgICAvLyBFeGl0IGlmIGAhW15gIGlzIGZvdW5kLCBzbyB0aGUgYCFgIHdpbGwgYmUgc2VlbiBhcyB0ZXh0IGFmdGVyIHRoaXMsXG4gICAgLy8gYW5kIHdl4oCZbGwgZW50ZXIgdGhpcyBmdW5jdGlvbiBhZ2FpbiB3aGVuIGBbXmAgaXMgZm91bmQuXG4gICAgaWYgKHR5cGUgPT09IGltYWdlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpbnRybyArPSBjYXJldFxuICAgIGluZGV4KytcbiAgICB0eXBlID0gZm9vdG5vdGVcbiAgfVxuXG4gIC8vIEVhdCB0aGUgdGV4dC5cbiAgZGVwdGggPSAwXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGJyYWNrZXRlZCA9IHRydWVcbiAgICAgIGRlcHRoKytcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBpZiAoIWRlcHRoKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGRlcHRoLS1cbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIHF1ZXVlICs9IGJhY2tzbGFzaFxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgc3VidmFsdWUgPSBxdWV1ZVxuICBjb250ZW50ID0gcXVldWVcbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gIGlmIChjaGFyYWN0ZXIgIT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgcXVldWUgPSAnJ1xuXG4gIGlmICghY29tbW9ubWFyaykge1xuICAgIC8vIFRoZSBvcmlnaW5hbCBtYXJrZG93biBzeW50YXggZGVmaW5pdGlvbiBleHBsaWNpdGx5IGFsbG93cyBmb3Igd2hpdGVzcGFjZVxuICAgIC8vIGJldHdlZW4gdGhlIGxpbmsgdGV4dCBhbmQgbGluayBsYWJlbDsgY29tbW9ubWFyayBkZXBhcnRzIGZyb20gdGhpcywgaW5cbiAgICAvLyBwYXJ0IHRvIGltcHJvdmUgc3VwcG9ydCBmb3Igc2hvcnRjdXQgcmVmZXJlbmNlIGxpbmtzXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAvLyBJbmxpbmUgZm9vdG5vdGVzIGNhbm5vdCBoYXZlIGEgbGFiZWwuXG4gIC8vIElmIGZvb3Rub3RlcyBhcmUgZW5hYmxlZCwgbGluayBsYWJlbHMgY2Fubm90IHN0YXJ0IHdpdGggYSBjYXJldC5cbiAgaWYgKFxuICAgIHR5cGUgIT09IGZvb3Rub3RlICYmXG4gICAgY2hhcmFjdGVyID09PSBsZWZ0U3F1YXJlQnJhY2tldCAmJlxuICAgICghZm9vdG5vdGVzIHx8IHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBjYXJldClcbiAgKSB7XG4gICAgaWRlbnRpZmllciA9ICcnXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGxlZnRTcXVhcmVCcmFja2V0IHx8IGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgICBpZGVudGlmaWVyICs9IGJhY2tzbGFzaFxuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICAgIH1cblxuICAgICAgaWRlbnRpZmllciArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIHJlZmVyZW5jZVR5cGUgPSBpZGVudGlmaWVyID8gZnVsbCA6IGNvbGxhcHNlZFxuICAgICAgcXVldWUgKz0gaWRlbnRpZmllciArIGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH0gZWxzZSB7XG4gICAgICBpZGVudGlmaWVyID0gJydcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICAgIHF1ZXVlID0gJydcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlkZW50aWZpZXIgPSBjb250ZW50XG4gIH1cblxuICAvLyBCcmFja2V0cyBjYW5ub3QgYmUgaW5zaWRlIHRoZSBpZGVudGlmaWVyLlxuICBpZiAocmVmZXJlbmNlVHlwZSAhPT0gZnVsbCAmJiBicmFja2V0ZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHN1YnZhbHVlID0gaW50cm8gKyBzdWJ2YWx1ZVxuXG4gIGlmICh0eXBlID09PSBsaW5rICYmIHNlbGYuaW5MaW5rKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodHlwZSA9PT0gZm9vdG5vdGUgJiYgY29udGVudC5pbmRleE9mKHNwYWNlKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7XG4gICAgICB0eXBlOiBmb290bm90ZSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIGVhdC5ub3coKSlcbiAgICB9KVxuICB9XG5cbiAgbm93ID0gZWF0Lm5vdygpXG4gIG5vdy5jb2x1bW4gKz0gaW50cm8ubGVuZ3RoXG4gIG5vdy5vZmZzZXQgKz0gaW50cm8ubGVuZ3RoXG4gIGlkZW50aWZpZXIgPSByZWZlcmVuY2VUeXBlID09PSBmdWxsID8gaWRlbnRpZmllciA6IGNvbnRlbnRcblxuICBub2RlID0ge1xuICAgIHR5cGU6IHR5cGUgKyAnUmVmZXJlbmNlJyxcbiAgICBpZGVudGlmaWVyOiBub3JtYWxpemUoaWRlbnRpZmllciksXG4gICAgbGFiZWw6IGlkZW50aWZpZXJcbiAgfVxuXG4gIGlmICh0eXBlID09PSBsaW5rIHx8IHR5cGUgPT09IGltYWdlKSB7XG4gICAgbm9kZS5yZWZlcmVuY2VUeXBlID0gcmVmZXJlbmNlVHlwZVxuICB9XG5cbiAgaWYgKHR5cGUgPT09IGxpbmspIHtcbiAgICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuICAgIG5vZGUuY2hpbGRyZW4gPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgICBleGl0KClcbiAgfSBlbHNlIGlmICh0eXBlID09PSBpbWFnZSkge1xuICAgIG5vZGUuYWx0ID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUoY29udGVudCksIG5vdykgfHwgbnVsbFxuICB9XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkobm9kZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgYXN0ZXJpc2sgPSB2YWx1ZS5pbmRleE9mKCcqKicsIGZyb21JbmRleClcbiAgdmFyIHVuZGVyc2NvcmUgPSB2YWx1ZS5pbmRleE9mKCdfXycsIGZyb21JbmRleClcblxuICBpZiAodW5kZXJzY29yZSA9PT0gLTEpIHtcbiAgICByZXR1cm4gYXN0ZXJpc2tcbiAgfVxuXG4gIGlmIChhc3RlcmlzayA9PT0gLTEpIHtcbiAgICByZXR1cm4gdW5kZXJzY29yZVxuICB9XG5cbiAgcmV0dXJuIHVuZGVyc2NvcmUgPCBhc3RlcmlzayA/IHVuZGVyc2NvcmUgOiBhc3Rlcmlza1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvc3Ryb25nJylcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJvbmdcbnN0cm9uZy5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcbnZhciBhc3RlcmlzayA9ICcqJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcblxuZnVuY3Rpb24gc3Ryb25nKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB2YXIgbm93XG4gIHZhciBwZWRhbnRpY1xuICB2YXIgbWFya2VyXG4gIHZhciBxdWV1ZVxuICB2YXIgc3VidmFsdWVcbiAgdmFyIGxlbmd0aFxuICB2YXIgcHJldlxuXG4gIGlmIChcbiAgICAoY2hhcmFjdGVyICE9PSBhc3RlcmlzayAmJiBjaGFyYWN0ZXIgIT09IHVuZGVyc2NvcmUpIHx8XG4gICAgdmFsdWUuY2hhckF0KCsraW5kZXgpICE9PSBjaGFyYWN0ZXJcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBwZWRhbnRpYyA9IHNlbGYub3B0aW9ucy5wZWRhbnRpY1xuICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgc3VidmFsdWUgPSBtYXJrZXIgKyBtYXJrZXJcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIGluZGV4KytcbiAgcXVldWUgPSAnJ1xuICBjaGFyYWN0ZXIgPSAnJ1xuXG4gIGlmIChwZWRhbnRpYyAmJiB3aGl0ZXNwYWNlKHZhbHVlLmNoYXJBdChpbmRleCkpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBwcmV2ID0gY2hhcmFjdGVyXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSBtYXJrZXIgJiZcbiAgICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBtYXJrZXIgJiZcbiAgICAgICghcGVkYW50aWMgfHwgIXdoaXRlc3BhY2UocHJldikpXG4gICAgKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXggKyAyKVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgICAgaWYgKCF0cmltKHF1ZXVlKSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIG5vdyA9IGVhdC5ub3coKVxuICAgICAgICBub3cuY29sdW1uICs9IDJcbiAgICAgICAgbm93Lm9mZnNldCArPSAyXG5cbiAgICAgICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSArIHF1ZXVlICsgc3VidmFsdWUpKHtcbiAgICAgICAgICB0eXBlOiAnc3Ryb25nJyxcbiAgICAgICAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShxdWV1ZSwgbm93KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcGVkYW50aWMgJiYgY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB3b3JkQ2hhcmFjdGVyXG5cbnZhciBmcm9tQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGVcbnZhciByZSA9IC9cXHcvXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhIHdvcmQgY2hhcmFjdGVyLlxuZnVuY3Rpb24gd29yZENoYXJhY3RlcihjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIHJlLnRlc3QoXG4gICAgdHlwZW9mIGNoYXJhY3RlciA9PT0gJ251bWJlcicgPyBmcm9tQ29kZShjaGFyYWN0ZXIpIDogY2hhcmFjdGVyLmNoYXJBdCgwKVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGFzdGVyaXNrID0gdmFsdWUuaW5kZXhPZignKicsIGZyb21JbmRleClcbiAgdmFyIHVuZGVyc2NvcmUgPSB2YWx1ZS5pbmRleE9mKCdfJywgZnJvbUluZGV4KVxuXG4gIGlmICh1bmRlcnNjb3JlID09PSAtMSkge1xuICAgIHJldHVybiBhc3Rlcmlza1xuICB9XG5cbiAgaWYgKGFzdGVyaXNrID09PSAtMSkge1xuICAgIHJldHVybiB1bmRlcnNjb3JlXG4gIH1cblxuICByZXR1cm4gdW5kZXJzY29yZSA8IGFzdGVyaXNrID8gdW5kZXJzY29yZSA6IGFzdGVyaXNrXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciB3b3JkID0gcmVxdWlyZSgnaXMtd29yZC1jaGFyYWN0ZXInKVxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2VtcGhhc2lzJylcblxubW9kdWxlLmV4cG9ydHMgPSBlbXBoYXNpc1xuZW1waGFzaXMubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgYXN0ZXJpc2sgPSAnKidcbnZhciB1bmRlcnNjb3JlID0gJ18nXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG5cbmZ1bmN0aW9uIGVtcGhhc2lzKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB2YXIgbm93XG4gIHZhciBwZWRhbnRpY1xuICB2YXIgbWFya2VyXG4gIHZhciBxdWV1ZVxuICB2YXIgc3VidmFsdWVcbiAgdmFyIGxlbmd0aFxuICB2YXIgcHJldlxuXG4gIGlmIChjaGFyYWN0ZXIgIT09IGFzdGVyaXNrICYmIGNoYXJhY3RlciAhPT0gdW5kZXJzY29yZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgc3VidmFsdWUgPSBjaGFyYWN0ZXJcbiAgbWFya2VyID0gY2hhcmFjdGVyXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICBpbmRleCsrXG4gIHF1ZXVlID0gJydcbiAgY2hhcmFjdGVyID0gJydcblxuICBpZiAocGVkYW50aWMgJiYgd2hpdGVzcGFjZSh2YWx1ZS5jaGFyQXQoaW5kZXgpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgcHJldiA9IGNoYXJhY3RlclxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IG1hcmtlciAmJiAoIXBlZGFudGljIHx8ICF3aGl0ZXNwYWNlKHByZXYpKSkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICBpZiAoIXRyaW0ocXVldWUpIHx8IHByZXYgPT09IG1hcmtlcikge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwZWRhbnRpYyAmJiBtYXJrZXIgPT09IHVuZGVyc2NvcmUgJiYgd29yZChjaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgcXVldWUgKz0gbWFya2VyXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBub3cgPSBlYXQubm93KClcbiAgICAgICAgbm93LmNvbHVtbisrXG4gICAgICAgIG5vdy5vZmZzZXQrK1xuXG4gICAgICAgIHJldHVybiBlYXQoc3VidmFsdWUgKyBxdWV1ZSArIG1hcmtlcikoe1xuICAgICAgICAgIHR5cGU6ICdlbXBoYXNpcycsXG4gICAgICAgICAgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUocXVldWUsIG5vdylcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gbWFya2VyXG4gICAgfVxuXG4gICAgaWYgKCFwZWRhbnRpYyAmJiBjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUuaW5kZXhPZignfn4nLCBmcm9tSW5kZXgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2RlbGV0ZScpXG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaWtldGhyb3VnaFxuc3RyaWtldGhyb3VnaC5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciB0aWxkZSA9ICd+J1xudmFyIGZlbmNlID0gJ35+J1xuXG5mdW5jdGlvbiBzdHJpa2V0aHJvdWdoKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNoYXJhY3RlciA9ICcnXG4gIHZhciBwcmV2aW91cyA9ICcnXG4gIHZhciBwcmVjZWRpbmcgPSAnJ1xuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgaW5kZXhcbiAgdmFyIGxlbmd0aFxuICB2YXIgbm93XG5cbiAgaWYgKFxuICAgICFzZWxmLm9wdGlvbnMuZ2ZtIHx8XG4gICAgdmFsdWUuY2hhckF0KDApICE9PSB0aWxkZSB8fFxuICAgIHZhbHVlLmNoYXJBdCgxKSAhPT0gdGlsZGUgfHxcbiAgICB3aGl0ZXNwYWNlKHZhbHVlLmNoYXJBdCgyKSlcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCA9IDFcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIG5vdyA9IGVhdC5ub3coKVxuICBub3cuY29sdW1uICs9IDJcbiAgbm93Lm9mZnNldCArPSAyXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IHRpbGRlICYmXG4gICAgICBwcmV2aW91cyA9PT0gdGlsZGUgJiZcbiAgICAgICghcHJlY2VkaW5nIHx8ICF3aGl0ZXNwYWNlKHByZWNlZGluZykpXG4gICAgKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlYXQoZmVuY2UgKyBzdWJ2YWx1ZSArIGZlbmNlKSh7XG4gICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBwcmV2aW91c1xuICAgIHByZWNlZGluZyA9IHByZXZpb3VzXG4gICAgcHJldmlvdXMgPSBjaGFyYWN0ZXJcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZS5pbmRleE9mKCdgJywgZnJvbUluZGV4KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvY29kZS1pbmxpbmUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlubGluZUNvZGVcbmlubGluZUNvZGUubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgbGluZUZlZWQgPSAxMCAvLyAgJ1xcbidcbnZhciBzcGFjZSA9IDMyIC8vICcgJ1xudmFyIGdyYXZlQWNjZW50ID0gOTYgLy8gICdgJ1xuXG5mdW5jdGlvbiBpbmxpbmVDb2RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIG9wZW5pbmdGZW5jZUVuZFxuICB2YXIgY2xvc2luZ0ZlbmNlU3RhcnRcbiAgdmFyIGNsb3NpbmdGZW5jZUVuZFxuICB2YXIgY29kZVxuICB2YXIgbmV4dFxuICB2YXIgZm91bmRcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgIT09IGdyYXZlQWNjZW50KSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChpbmRleCA9PT0gMCB8fCBpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBvcGVuaW5nRmVuY2VFbmQgPSBpbmRleFxuICBuZXh0ID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gbmV4dFxuICAgIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4ICsgMSlcblxuICAgIGlmIChjb2RlID09PSBncmF2ZUFjY2VudCkge1xuICAgICAgaWYgKGNsb3NpbmdGZW5jZVN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xvc2luZ0ZlbmNlU3RhcnQgPSBpbmRleFxuICAgICAgfVxuXG4gICAgICBjbG9zaW5nRmVuY2VFbmQgPSBpbmRleCArIDFcblxuICAgICAgaWYgKFxuICAgICAgICBuZXh0ICE9PSBncmF2ZUFjY2VudCAmJlxuICAgICAgICBjbG9zaW5nRmVuY2VFbmQgLSBjbG9zaW5nRmVuY2VTdGFydCA9PT0gb3BlbmluZ0ZlbmNlRW5kXG4gICAgICApIHtcbiAgICAgICAgZm91bmQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjbG9zaW5nRmVuY2VTdGFydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbG9zaW5nRmVuY2VTdGFydCA9IHVuZGVmaW5lZFxuICAgICAgY2xvc2luZ0ZlbmNlRW5kID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKCFmb3VuZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgaW5pdGlhbCBhbmQgZmluYWwgc3BhY2UgKG9yIGxpbmUgZmVlZCksIGlmZiB0aGV5IGV4aXN0IGFuZCB0aGVyZVxuICAvLyBhcmUgbm9uLXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIGNvbnRlbnQuXG4gIGluZGV4ID0gb3BlbmluZ0ZlbmNlRW5kXG4gIGxlbmd0aCA9IGNsb3NpbmdGZW5jZVN0YXJ0XG4gIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuICBuZXh0ID0gdmFsdWUuY2hhckNvZGVBdChsZW5ndGggLSAxKVxuICBmb3VuZCA9IGZhbHNlXG5cbiAgaWYgKFxuICAgIGxlbmd0aCAtIGluZGV4ID4gMiAmJlxuICAgIChjb2RlID09PSBzcGFjZSB8fCBjb2RlID09PSBsaW5lRmVlZCkgJiZcbiAgICAobmV4dCA9PT0gc3BhY2UgfHwgbmV4dCA9PT0gbGluZUZlZWQpXG4gICkge1xuICAgIGluZGV4KytcbiAgICBsZW5ndGgtLVxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgICAgaWYgKGNvZGUgIT09IHNwYWNlICYmIGNvZGUgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaWYgKGZvdW5kID09PSB0cnVlKSB7XG4gICAgICBvcGVuaW5nRmVuY2VFbmQrK1xuICAgICAgY2xvc2luZ0ZlbmNlU3RhcnQtLVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlYXQodmFsdWUuc2xpY2UoMCwgY2xvc2luZ0ZlbmNlRW5kKSkoe1xuICAgIHR5cGU6ICdpbmxpbmVDb2RlJyxcbiAgICB2YWx1ZTogdmFsdWUuc2xpY2Uob3BlbmluZ0ZlbmNlRW5kLCBjbG9zaW5nRmVuY2VTdGFydClcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKCdcXG4nLCBmcm9tSW5kZXgpXG5cbiAgd2hpbGUgKGluZGV4ID4gZnJvbUluZGV4KSB7XG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCAtIDEpICE9PSAnICcpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaW5kZXgtLVxuICB9XG5cbiAgcmV0dXJuIGluZGV4XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9icmVhaycpXG5cbm1vZHVsZS5leHBvcnRzID0gaGFyZEJyZWFrXG5oYXJkQnJlYWsubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgc3BhY2UgPSAnICdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgbWluQnJlYWtMZW5ndGggPSAyXG5cbmZ1bmN0aW9uIGhhcmRCcmVhayhlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcXVldWUgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgaWYgKGluZGV4IDwgbWluQnJlYWtMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG5cbiAgICAgIHJldHVybiBlYXQocXVldWUpKHt0eXBlOiAnYnJlYWsnfSlcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRleHRcblxuZnVuY3Rpb24gdGV4dChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBtZXRob2RzXG4gIHZhciB0b2tlbml6ZXJzXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgcG9zaXRpb25cbiAgdmFyIHRva2VuaXplclxuICB2YXIgbmFtZVxuICB2YXIgbWluXG4gIHZhciBub3dcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbWV0aG9kcyA9IHNlbGYuaW5saW5lTWV0aG9kc1xuICBsZW5ndGggPSBtZXRob2RzLmxlbmd0aFxuICB0b2tlbml6ZXJzID0gc2VsZi5pbmxpbmVUb2tlbml6ZXJzXG4gIGluZGV4ID0gLTFcbiAgbWluID0gdmFsdWUubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBuYW1lID0gbWV0aG9kc1tpbmRleF1cblxuICAgIGlmIChuYW1lID09PSAndGV4dCcgfHwgIXRva2VuaXplcnNbbmFtZV0pIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdG9rZW5pemVyID0gdG9rZW5pemVyc1tuYW1lXS5sb2NhdG9yXG5cbiAgICBpZiAoIXRva2VuaXplcikge1xuICAgICAgZWF0LmZpbGUuZmFpbCgnTWlzc2luZyBsb2NhdG9yOiBgJyArIG5hbWUgKyAnYCcpXG4gICAgfVxuXG4gICAgcG9zaXRpb24gPSB0b2tlbml6ZXIuY2FsbChzZWxmLCB2YWx1ZSwgMSlcblxuICAgIGlmIChwb3NpdGlvbiAhPT0gLTEgJiYgcG9zaXRpb24gPCBtaW4pIHtcbiAgICAgIG1pbiA9IHBvc2l0aW9uXG4gICAgfVxuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5zbGljZSgwLCBtaW4pXG4gIG5vdyA9IGVhdC5ub3coKVxuXG4gIHNlbGYuZGVjb2RlKHN1YnZhbHVlLCBub3csIGhhbmRsZXIpXG5cbiAgZnVuY3Rpb24gaGFuZGxlcihjb250ZW50LCBwb3NpdGlvbiwgc291cmNlKSB7XG4gICAgZWF0KHNvdXJjZSB8fCBjb250ZW50KSh7dHlwZTogJ3RleHQnLCB2YWx1ZTogY29udGVudH0pXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgdG9nZ2xlID0gcmVxdWlyZSgnc3RhdGUtdG9nZ2xlJylcbnZhciB2ZmlsZUxvY2F0aW9uID0gcmVxdWlyZSgndmZpbGUtbG9jYXRpb24nKVxudmFyIHVuZXNjYXBlID0gcmVxdWlyZSgnLi91bmVzY2FwZScpXG52YXIgZGVjb2RlID0gcmVxdWlyZSgnLi9kZWNvZGUnKVxudmFyIHRva2VuaXplciA9IHJlcXVpcmUoJy4vdG9rZW5pemVyJylcblxubW9kdWxlLmV4cG9ydHMgPSBQYXJzZXJcblxuZnVuY3Rpb24gUGFyc2VyKGRvYywgZmlsZSkge1xuICB0aGlzLmZpbGUgPSBmaWxlXG4gIHRoaXMub2Zmc2V0ID0ge31cbiAgdGhpcy5vcHRpb25zID0geHRlbmQodGhpcy5vcHRpb25zKVxuICB0aGlzLnNldE9wdGlvbnMoe30pXG5cbiAgdGhpcy5pbkxpc3QgPSBmYWxzZVxuICB0aGlzLmluQmxvY2sgPSBmYWxzZVxuICB0aGlzLmluTGluayA9IGZhbHNlXG4gIHRoaXMuYXRTdGFydCA9IHRydWVcblxuICB0aGlzLnRvT2Zmc2V0ID0gdmZpbGVMb2NhdGlvbihmaWxlKS50b09mZnNldFxuICB0aGlzLnVuZXNjYXBlID0gdW5lc2NhcGUodGhpcywgJ2VzY2FwZScpXG4gIHRoaXMuZGVjb2RlID0gZGVjb2RlKHRoaXMpXG59XG5cbnZhciBwcm90byA9IFBhcnNlci5wcm90b3R5cGVcblxuLy8gRXhwb3NlIGNvcmUuXG5wcm90by5zZXRPcHRpb25zID0gcmVxdWlyZSgnLi9zZXQtb3B0aW9ucycpXG5wcm90by5wYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKVxuXG4vLyBFeHBvc2UgYGRlZmF1bHRzYC5cbnByb3RvLm9wdGlvbnMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJylcblxuLy8gRW50ZXIgYW5kIGV4aXQgaGVscGVycy5cbnByb3RvLmV4aXRTdGFydCA9IHRvZ2dsZSgnYXRTdGFydCcsIHRydWUpXG5wcm90by5lbnRlckxpc3QgPSB0b2dnbGUoJ2luTGlzdCcsIGZhbHNlKVxucHJvdG8uZW50ZXJMaW5rID0gdG9nZ2xlKCdpbkxpbmsnLCBmYWxzZSlcbnByb3RvLmVudGVyQmxvY2sgPSB0b2dnbGUoJ2luQmxvY2snLCBmYWxzZSlcblxuLy8gTm9kZXMgdGhhdCBjYW4gaW50ZXJ1cHQgYSBwYXJhZ3JhcGg6XG4vL1xuLy8gYGBgbWFya2Rvd25cbi8vIEEgcGFyYWdyYXBoLCBmb2xsb3dlZCBieSBhIHRoZW1hdGljIGJyZWFrLlxuLy8gX19fXG4vLyBgYGBcbi8vXG4vLyBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIHRoZW1hdGljIGJyZWFrIOKAnGludGVydXB0c+KAnSB0aGUgcGFyYWdyYXBoLlxucHJvdG8uaW50ZXJydXB0UGFyYWdyYXBoID0gW1xuICBbJ3RoZW1hdGljQnJlYWsnXSxcbiAgWydhdHhIZWFkaW5nJ10sXG4gIFsnZmVuY2VkQ29kZSddLFxuICBbJ2Jsb2NrcXVvdGUnXSxcbiAgWydodG1sJ10sXG4gIFsnc2V0ZXh0SGVhZGluZycsIHtjb21tb25tYXJrOiBmYWxzZX1dLFxuICBbJ2RlZmluaXRpb24nLCB7Y29tbW9ubWFyazogZmFsc2V9XSxcbiAgWydmb290bm90ZScsIHtjb21tb25tYXJrOiBmYWxzZX1dXG5dXG5cbi8vIE5vZGVzIHRoYXQgY2FuIGludGVydXB0IGEgbGlzdDpcbi8vXG4vLyBgYGBtYXJrZG93blxuLy8gLSBPbmVcbi8vIF9fX1xuLy8gYGBgXG4vL1xuLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSB0aGVtYXRpYyBicmVhayDigJxpbnRlcnVwdHPigJ0gdGhlIGxpc3QuXG5wcm90by5pbnRlcnJ1cHRMaXN0ID0gW1xuICBbJ2F0eEhlYWRpbmcnLCB7cGVkYW50aWM6IGZhbHNlfV0sXG4gIFsnZmVuY2VkQ29kZScsIHtwZWRhbnRpYzogZmFsc2V9XSxcbiAgWyd0aGVtYXRpY0JyZWFrJywge3BlZGFudGljOiBmYWxzZX1dLFxuICBbJ2RlZmluaXRpb24nLCB7Y29tbW9ubWFyazogZmFsc2V9XSxcbiAgWydmb290bm90ZScsIHtjb21tb25tYXJrOiBmYWxzZX1dXG5dXG5cbi8vIE5vZGVzIHRoYXQgY2FuIGludGVydXB0IGEgYmxvY2txdW90ZTpcbi8vXG4vLyBgYGBtYXJrZG93blxuLy8gPiBBIHBhcmFncmFwaC5cbi8vIF9fX1xuLy8gYGBgXG4vL1xuLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSB0aGVtYXRpYyBicmVhayDigJxpbnRlcnVwdHPigJ0gdGhlIGJsb2NrcXVvdGUuXG5wcm90by5pbnRlcnJ1cHRCbG9ja3F1b3RlID0gW1xuICBbJ2luZGVudGVkQ29kZScsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnZmVuY2VkQ29kZScsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnYXR4SGVhZGluZycsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnc2V0ZXh0SGVhZGluZycsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsndGhlbWF0aWNCcmVhaycsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnaHRtbCcsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnbGlzdCcsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnZGVmaW5pdGlvbicsIHtjb21tb25tYXJrOiBmYWxzZX1dLFxuICBbJ2Zvb3Rub3RlJywge2NvbW1vbm1hcms6IGZhbHNlfV1cbl1cblxuLy8gSGFuZGxlcnMuXG5wcm90by5ibG9ja1Rva2VuaXplcnMgPSB7XG4gIG5ld2xpbmU6IHJlcXVpcmUoJy4vdG9rZW5pemUvbmV3bGluZScpLFxuICBpbmRlbnRlZENvZGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvY29kZS1pbmRlbnRlZCcpLFxuICBmZW5jZWRDb2RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2NvZGUtZmVuY2VkJyksXG4gIGJsb2NrcXVvdGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvYmxvY2txdW90ZScpLFxuICBhdHhIZWFkaW5nOiByZXF1aXJlKCcuL3Rva2VuaXplL2hlYWRpbmctYXR4JyksXG4gIHRoZW1hdGljQnJlYWs6IHJlcXVpcmUoJy4vdG9rZW5pemUvdGhlbWF0aWMtYnJlYWsnKSxcbiAgbGlzdDogcmVxdWlyZSgnLi90b2tlbml6ZS9saXN0JyksXG4gIHNldGV4dEhlYWRpbmc6IHJlcXVpcmUoJy4vdG9rZW5pemUvaGVhZGluZy1zZXRleHQnKSxcbiAgaHRtbDogcmVxdWlyZSgnLi90b2tlbml6ZS9odG1sLWJsb2NrJyksXG4gIGZvb3Rub3RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2Zvb3Rub3RlLWRlZmluaXRpb24nKSxcbiAgZGVmaW5pdGlvbjogcmVxdWlyZSgnLi90b2tlbml6ZS9kZWZpbml0aW9uJyksXG4gIHRhYmxlOiByZXF1aXJlKCcuL3Rva2VuaXplL3RhYmxlJyksXG4gIHBhcmFncmFwaDogcmVxdWlyZSgnLi90b2tlbml6ZS9wYXJhZ3JhcGgnKVxufVxuXG5wcm90by5pbmxpbmVUb2tlbml6ZXJzID0ge1xuICBlc2NhcGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvZXNjYXBlJyksXG4gIGF1dG9MaW5rOiByZXF1aXJlKCcuL3Rva2VuaXplL2F1dG8tbGluaycpLFxuICB1cmw6IHJlcXVpcmUoJy4vdG9rZW5pemUvdXJsJyksXG4gIGh0bWw6IHJlcXVpcmUoJy4vdG9rZW5pemUvaHRtbC1pbmxpbmUnKSxcbiAgbGluazogcmVxdWlyZSgnLi90b2tlbml6ZS9saW5rJyksXG4gIHJlZmVyZW5jZTogcmVxdWlyZSgnLi90b2tlbml6ZS9yZWZlcmVuY2UnKSxcbiAgc3Ryb25nOiByZXF1aXJlKCcuL3Rva2VuaXplL3N0cm9uZycpLFxuICBlbXBoYXNpczogcmVxdWlyZSgnLi90b2tlbml6ZS9lbXBoYXNpcycpLFxuICBkZWxldGlvbjogcmVxdWlyZSgnLi90b2tlbml6ZS9kZWxldGUnKSxcbiAgY29kZTogcmVxdWlyZSgnLi90b2tlbml6ZS9jb2RlLWlubGluZScpLFxuICBicmVhazogcmVxdWlyZSgnLi90b2tlbml6ZS9icmVhaycpLFxuICB0ZXh0OiByZXF1aXJlKCcuL3Rva2VuaXplL3RleHQnKVxufVxuXG4vLyBFeHBvc2UgcHJlY2VkZW5jZS5cbnByb3RvLmJsb2NrTWV0aG9kcyA9IGtleXMocHJvdG8uYmxvY2tUb2tlbml6ZXJzKVxucHJvdG8uaW5saW5lTWV0aG9kcyA9IGtleXMocHJvdG8uaW5saW5lVG9rZW5pemVycylcblxuLy8gVG9rZW5pemVycy5cbnByb3RvLnRva2VuaXplQmxvY2sgPSB0b2tlbml6ZXIoJ2Jsb2NrJylcbnByb3RvLnRva2VuaXplSW5saW5lID0gdG9rZW5pemVyKCdpbmxpbmUnKVxucHJvdG8udG9rZW5pemVGYWN0b3J5ID0gdG9rZW5pemVyXG5cbi8vIEdldCBhbGwga2V5cyBpbiBgdmFsdWVgLlxuZnVuY3Rpb24ga2V5cyh2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGtleVxuXG4gIGZvciAoa2V5IGluIHZhbHVlKSB7XG4gICAgcmVzdWx0LnB1c2goa2V5KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB1bmhlcml0ID0gcmVxdWlyZSgndW5oZXJpdCcpXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgUGFyc2VyID0gcmVxdWlyZSgnLi9saWIvcGFyc2VyLmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVxucGFyc2UuUGFyc2VyID0gUGFyc2VyXG5cbmZ1bmN0aW9uIHBhcnNlKG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gdGhpcy5kYXRhKCdzZXR0aW5ncycpXG4gIHZhciBMb2NhbCA9IHVuaGVyaXQoUGFyc2VyKVxuXG4gIExvY2FsLnByb3RvdHlwZS5vcHRpb25zID0geHRlbmQoTG9jYWwucHJvdG90eXBlLm9wdGlvbnMsIHNldHRpbmdzLCBvcHRpb25zKVxuXG4gIHRoaXMuUGFyc2VyID0gTG9jYWxcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpdGVyKSA9PT0gXCJbb2JqZWN0IEFyZ3VtZW50c11cIikgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gfVxuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX2UgPSB1bmRlZmluZWQ7IHRyeSB7IGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cblxudmFyIHNwYWNlU2VwYXJhdGVkID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpO1xuXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiWy1bXFxcXF17fSgpKis/LlxcXFxcXFxcXiR8L11cIiwgJ2cnKSwgJ1xcXFwkJicpO1xufVxuXG52YXIgQ19ORVdMSU5FID0gJ1xcbic7XG52YXIgQ19GRU5DRSA9ICd8JztcblxuZnVuY3Rpb24gY29tcGlsZXJGYWN0b3J5KG5vZGVUeXBlKSB7XG4gIHZhciB0ZXh0O1xuICB2YXIgdGl0bGU7XG4gIHJldHVybiB7XG4gICAgYmxvY2tIZWFkaW5nOiBmdW5jdGlvbiBibG9ja0hlYWRpbmcobm9kZSkge1xuICAgICAgdGl0bGUgPSB0aGlzLmFsbChub2RlKS5qb2luKCcnKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9LFxuICAgIGJsb2NrQm9keTogZnVuY3Rpb24gYmxvY2tCb2R5KG5vZGUpIHtcbiAgICAgIHRleHQgPSB0aGlzLmFsbChub2RlKS5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXFxuL2csICdcXG58ICcpO1xuICAgICAgfSkuam9pbignXFxufFxcbnwgJyk7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9LFxuICAgIGJsb2NrOiBmdW5jdGlvbiBibG9jayhub2RlKSB7XG4gICAgICB0ZXh0ID0gJyc7XG4gICAgICB0aXRsZSA9ICcnO1xuICAgICAgdGhpcy5hbGwobm9kZSk7XG5cbiAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICByZXR1cm4gXCJbW1wiLmNvbmNhdChub2RlVHlwZSwgXCIgfCBcIikuY29uY2F0KHRpdGxlLCBcIl1dXFxufCBcIikuY29uY2F0KHRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiW1tcIi5jb25jYXQobm9kZVR5cGUsIFwiXV1cXG58IFwiKS5jb25jYXQodGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJsb2NrUGx1Z2luKCkge1xuICB2YXIgYXZhaWxhYmxlQmxvY2tzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgdmFyIHBhdHRlcm4gPSBPYmplY3Qua2V5cyhhdmFpbGFibGVCbG9ja3MpLm1hcChlc2NhcGVSZWdFeHApLmpvaW4oJ3wnKTtcblxuICBpZiAoIXBhdHRlcm4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbWFyay1jdXN0b20tYmxvY2tzIG5lZWRzIHRvIGJlIHBhc3NlZCBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGFzIG9wdGlvbicpO1xuICB9XG5cbiAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChcIlxcXFxbXFxcXFsoXCIuY29uY2F0KHBhdHRlcm4sIFwiKSg/OiAqXFxcXHwgKiguKikpP1xcXFxdXFxcXF1cXG5cIikpO1xuXG4gIGZ1bmN0aW9uIGJsb2NrVG9rZW5pemVyKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICAgIHZhciBub3cgPSBlYXQubm93KCk7XG4gICAgdmFyIGtlZXAgPSByZWdleC5leGVjKHZhbHVlKTtcbiAgICBpZiAoIWtlZXApIHJldHVybjtcbiAgICBpZiAoa2VlcC5pbmRleCAhPT0gMCkgcmV0dXJuO1xuXG4gICAgdmFyIF9rZWVwID0gX3NsaWNlZFRvQXJyYXkoa2VlcCwgMyksXG4gICAgICAgIGVhdGVuID0gX2tlZXBbMF0sXG4gICAgICAgIGJsb2NrVHlwZSA9IF9rZWVwWzFdLFxuICAgICAgICBibG9ja1RpdGxlID0gX2tlZXBbMl07XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuXG5cbiAgICBpZiAoc2lsZW50KSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgbGluZXNUb0VhdCA9IFtdO1xuICAgIHZhciBjb250ZW50ID0gW107XG4gICAgdmFyIGlkeCA9IDA7XG5cbiAgICB3aGlsZSAoKGlkeCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FKSkgIT09IC0xKSB7XG4gICAgICB2YXIgbmV4dCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FLCBpZHggKyAxKTsgLy8gZWl0aGVyIHNsaWNlIHVudGlsIG5leHQgTkVXTElORSBvciBzbGljZSB1bnRpbCBlbmQgb2Ygc3RyaW5nXG5cbiAgICAgIHZhciBsaW5lVG9FYXQgPSBuZXh0ICE9PSAtMSA/IHZhbHVlLnNsaWNlKGlkeCArIDEsIG5leHQpIDogdmFsdWUuc2xpY2UoaWR4ICsgMSk7XG4gICAgICBpZiAobGluZVRvRWF0WzBdICE9PSBDX0ZFTkNFKSBicmVhazsgLy8gcmVtb3ZlIGxlYWRpbmcgYEZFTkNFIGAgb3IgbGVhZGluZyBgRkVOQ0VgXG5cbiAgICAgIHZhciBsaW5lID0gbGluZVRvRWF0LnNsaWNlKGxpbmVUb0VhdC5zdGFydHNXaXRoKFwiXCIuY29uY2F0KENfRkVOQ0UsIFwiIFwiKSkgPyAyIDogMSk7XG4gICAgICBsaW5lc1RvRWF0LnB1c2gobGluZVRvRWF0KTtcbiAgICAgIGNvbnRlbnQucHVzaChsaW5lKTtcbiAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoaWR4ICsgMSk7XG4gICAgfVxuXG4gICAgdmFyIGNvbnRlbnRTdHJpbmcgPSBjb250ZW50LmpvaW4oQ19ORVdMSU5FKTtcbiAgICB2YXIgc3RyaW5nVG9FYXQgPSBlYXRlbiArIGxpbmVzVG9FYXQuam9pbihDX05FV0xJTkUpO1xuICAgIHZhciBwb3RlbnRpYWxCbG9jayA9IGF2YWlsYWJsZUJsb2Nrc1tibG9ja1R5cGVdO1xuICAgIHZhciB0aXRsZUFsbG93ZWQgPSBwb3RlbnRpYWxCbG9jay50aXRsZSAmJiBbJ29wdGlvbmFsJywgJ3JlcXVpcmVkJ10uaW5jbHVkZXMocG90ZW50aWFsQmxvY2sudGl0bGUpO1xuICAgIHZhciB0aXRsZVJlcXVpcmVkID0gcG90ZW50aWFsQmxvY2sudGl0bGUgJiYgcG90ZW50aWFsQmxvY2sudGl0bGUgPT09ICdyZXF1aXJlZCc7XG4gICAgaWYgKHRpdGxlUmVxdWlyZWQgJiYgIWJsb2NrVGl0bGUpIHJldHVybjtcbiAgICBpZiAoIXRpdGxlQWxsb3dlZCAmJiBibG9ja1RpdGxlKSByZXR1cm47XG4gICAgdmFyIGFkZCA9IGVhdChzdHJpbmdUb0VhdCk7XG4gICAgdmFyIGV4aXQgPSB0aGlzLmVudGVyQmxvY2soKTtcbiAgICB2YXIgY29udGVudHMgPSB7XG4gICAgICB0eXBlOiBcIlwiLmNvbmNhdChibG9ja1R5cGUsIFwiQ3VzdG9tQmxvY2tCb2R5XCIpLFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogJ2RpdicsXG4gICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnY3VzdG9tLWJsb2NrLWJvZHknXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogdGhpcy50b2tlbml6ZUJsb2NrKGNvbnRlbnRTdHJpbmcsIG5vdylcbiAgICB9O1xuICAgIGV4aXQoKTtcbiAgICB2YXIgYmxvY2tDaGlsZHJlbiA9IFtjb250ZW50c107XG5cbiAgICBpZiAodGl0bGVBbGxvd2VkICYmIGJsb2NrVGl0bGUpIHtcbiAgICAgIHZhciB0aXRsZU5vZGUgPSB7XG4gICAgICAgIHR5cGU6IFwiXCIuY29uY2F0KGJsb2NrVHlwZSwgXCJDdXN0b21CbG9ja0hlYWRpbmdcIiksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoTmFtZTogcG90ZW50aWFsQmxvY2suZGV0YWlscyA/ICdzdW1tYXJ5JyA6ICdkaXYnLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdjdXN0b20tYmxvY2staGVhZGluZydcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiB0aGlzLnRva2VuaXplSW5saW5lKGJsb2NrVGl0bGUsIG5vdylcbiAgICAgIH07XG4gICAgICBibG9ja0NoaWxkcmVuLnVuc2hpZnQodGl0bGVOb2RlKTtcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NMaXN0ID0gc3BhY2VTZXBhcmF0ZWQucGFyc2UocG90ZW50aWFsQmxvY2suY2xhc3NlcyB8fCAnJyk7XG4gICAgcmV0dXJuIGFkZCh7XG4gICAgICB0eXBlOiBcIlwiLmNvbmNhdChibG9ja1R5cGUsIFwiQ3VzdG9tQmxvY2tcIiksXG4gICAgICBjaGlsZHJlbjogYmxvY2tDaGlsZHJlbixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaE5hbWU6IHBvdGVudGlhbEJsb2NrLmRldGFpbHMgPyAnZGV0YWlscycgOiAnZGl2JyxcbiAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6IFsnY3VzdG9tLWJsb2NrJ10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShjbGFzc0xpc3QpKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBibG9ja1Rva2VuaXplclxuXG4gIHZhciBibG9ja1Rva2VuaXplcnMgPSBQYXJzZXIucHJvdG90eXBlLmJsb2NrVG9rZW5pemVycztcbiAgdmFyIGJsb2NrTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tNZXRob2RzO1xuICBibG9ja1Rva2VuaXplcnMuY3VzdG9tQmxvY2tzID0gYmxvY2tUb2tlbml6ZXI7XG4gIGJsb2NrTWV0aG9kcy5zcGxpY2UoYmxvY2tNZXRob2RzLmluZGV4T2YoJ2ZlbmNlZENvZGUnKSArIDEsIDAsICdjdXN0b21CbG9ja3MnKTtcbiAgdmFyIENvbXBpbGVyID0gdGhpcy5Db21waWxlcjtcblxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICB2YXIgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnM7XG4gICAgaWYgKCF2aXNpdG9ycykgcmV0dXJuO1xuICAgIE9iamVjdC5rZXlzKGF2YWlsYWJsZUJsb2NrcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgY29tcGlsZXIgPSBjb21waWxlckZhY3Rvcnkoa2V5KTtcbiAgICAgIHZpc2l0b3JzW1wiXCIuY29uY2F0KGtleSwgXCJDdXN0b21CbG9ja1wiKV0gPSBjb21waWxlci5ibG9jaztcbiAgICAgIHZpc2l0b3JzW1wiXCIuY29uY2F0KGtleSwgXCJDdXN0b21CbG9ja0hlYWRpbmdcIildID0gY29tcGlsZXIuYmxvY2tIZWFkaW5nO1xuICAgICAgdmlzaXRvcnNbXCJcIi5jb25jYXQoa2V5LCBcIkN1c3RvbUJsb2NrQm9keVwiKV0gPSBjb21waWxlci5ibG9ja0JvZHk7XG4gICAgfSk7XG4gIH0gLy8gSW5qZWN0IGludG8gaW50ZXJydXB0IHJ1bGVzXG5cblxuICB2YXIgaW50ZXJydXB0UGFyYWdyYXBoID0gUGFyc2VyLnByb3RvdHlwZS5pbnRlcnJ1cHRQYXJhZ3JhcGg7XG4gIHZhciBpbnRlcnJ1cHRMaXN0ID0gUGFyc2VyLnByb3RvdHlwZS5pbnRlcnJ1cHRMaXN0O1xuICB2YXIgaW50ZXJydXB0QmxvY2txdW90ZSA9IFBhcnNlci5wcm90b3R5cGUuaW50ZXJydXB0QmxvY2txdW90ZTtcbiAgaW50ZXJydXB0UGFyYWdyYXBoLnNwbGljZShpbnRlcnJ1cHRQYXJhZ3JhcGguaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydjdXN0b21CbG9ja3MnXSk7XG4gIGludGVycnVwdExpc3Quc3BsaWNlKGludGVycnVwdExpc3QuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydjdXN0b21CbG9ja3MnXSk7XG4gIGludGVycnVwdEJsb2NrcXVvdGUuc3BsaWNlKGludGVycnVwdEJsb2NrcXVvdGUuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydjdXN0b21CbG9ja3MnXSk7XG59OyIsIi8qISBodHRwczovL210aHMuYmUvcHVueWNvZGUgdjEuNC4xIGJ5IEBtYXRoaWFzICovXG5cblxuLyoqIEhpZ2hlc3QgcG9zaXRpdmUgc2lnbmVkIDMyLWJpdCBmbG9hdCB2YWx1ZSAqL1xudmFyIG1heEludCA9IDIxNDc0ODM2NDc7IC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcblxuLyoqIEJvb3RzdHJpbmcgcGFyYW1ldGVycyAqL1xudmFyIGJhc2UgPSAzNjtcbnZhciB0TWluID0gMTtcbnZhciB0TWF4ID0gMjY7XG52YXIgc2tldyA9IDM4O1xudmFyIGRhbXAgPSA3MDA7XG52YXIgaW5pdGlhbEJpYXMgPSA3MjtcbnZhciBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxudmFyIGRlbGltaXRlciA9ICctJzsgLy8gJ1xceDJEJ1xuXG4vKiogUmVndWxhciBleHByZXNzaW9ucyAqL1xudmFyIHJlZ2V4UHVueWNvZGUgPSAvXnhuLS0vO1xudmFyIHJlZ2V4Tm9uQVNDSUkgPSAvW15cXHgyMC1cXHg3RV0vOyAvLyB1bnByaW50YWJsZSBBU0NJSSBjaGFycyArIG5vbi1BU0NJSSBjaGFyc1xudmFyIHJlZ2V4U2VwYXJhdG9ycyA9IC9bXFx4MkVcXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2c7IC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcblxuLyoqIEVycm9yIG1lc3NhZ2VzICovXG52YXIgZXJyb3JzID0ge1xuICAnb3ZlcmZsb3cnOiAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnLFxuICAnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuICAnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xufTtcblxuLyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xudmFyIGJhc2VNaW51c1RNaW4gPSBiYXNlIC0gdE1pbjtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgc3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgVGhlIGVycm9yIHR5cGUuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGVycm9yKHR5cGUpIHtcbiAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcbn1cblxuLyoqXG4gKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG4gKiBpdGVtLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgcmVzdWx0W2xlbmd0aF0gPSBmbihhcnJheVtsZW5ndGhdKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEEgc2ltcGxlIGBBcnJheSNtYXBgLWxpa2Ugd3JhcHBlciB0byB3b3JrIHdpdGggZG9tYWluIG5hbWUgc3RyaW5ncyBvciBlbWFpbFxuICogYWRkcmVzc2VzLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnlcbiAqIGNoYXJhY3Rlci5cbiAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG4gKiBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcbiAgdmFyIHBhcnRzID0gc3RyaW5nLnNwbGl0KCdAJyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAvLyBJbiBlbWFpbCBhZGRyZXNzZXMsIG9ubHkgdGhlIGRvbWFpbiBuYW1lIHNob3VsZCBiZSBwdW55Y29kZWQuIExlYXZlXG4gICAgLy8gdGhlIGxvY2FsIHBhcnQgKGkuZS4gZXZlcnl0aGluZyB1cCB0byBgQGApIGludGFjdC5cbiAgICByZXN1bHQgPSBwYXJ0c1swXSArICdAJztcbiAgICBzdHJpbmcgPSBwYXJ0c1sxXTtcbiAgfVxuICAvLyBBdm9pZCBgc3BsaXQocmVnZXgpYCBmb3IgSUU4IGNvbXBhdGliaWxpdHkuIFNlZSAjMTcuXG4gIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xceDJFJyk7XG4gIHZhciBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcbiAgdmFyIGVuY29kZWQgPSBtYXAobGFiZWxzLCBmbikuam9pbignLicpO1xuICByZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG4gKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG4gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG4gKiBtYXRjaGluZyBVVEYtMTYuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcbiAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGRlY29kZVxuICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgVW5pY29kZSBpbnB1dCBzdHJpbmcgKFVDUy0yKS5cbiAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cbiAqL1xuZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcbiAgdmFyIG91dHB1dCA9IFtdLFxuICAgIGNvdW50ZXIgPSAwLFxuICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG4gICAgdmFsdWUsXG4gICAgZXh0cmE7XG4gIHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgdmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuICAgIGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgIC8vIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3RlclxuICAgICAgZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuICAgICAgaWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7IC8vIGxvdyBzdXJyb2dhdGVcbiAgICAgICAgb3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZSBuZXh0XG4gICAgICAgIC8vIGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpclxuICAgICAgICBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgICAgIGNvdW50ZXItLTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdHJpbmcgYmFzZWQgb24gYW4gYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZGVjb2RlYFxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGVuY29kZVxuICogQHBhcmFtIHtBcnJheX0gY29kZVBvaW50cyBUaGUgYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBuZXcgVW5pY29kZSBzdHJpbmcgKFVDUy0yKS5cbiAqL1xuZnVuY3Rpb24gdWNzMmVuY29kZShhcnJheSkge1xuICByZXR1cm4gbWFwKGFycmF5LCBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciBvdXRwdXQgPSAnJztcbiAgICBpZiAodmFsdWUgPiAweEZGRkYpIHtcbiAgICAgIHZhbHVlIC09IDB4MTAwMDA7XG4gICAgICBvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKTtcbiAgICAgIHZhbHVlID0gMHhEQzAwIHwgdmFsdWUgJiAweDNGRjtcbiAgICB9XG4gICAgb3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSk7XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfSkuam9pbignJyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBiYXNpYyBjb2RlIHBvaW50IGludG8gYSBkaWdpdC9pbnRlZ2VyLlxuICogQHNlZSBgZGlnaXRUb0Jhc2ljKClgXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVQb2ludCBUaGUgYmFzaWMgbnVtZXJpYyBjb2RlIHBvaW50IHZhbHVlLlxuICogQHJldHVybnMge051bWJlcn0gVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50IChmb3IgdXNlIGluXG4gKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGluIHRoZSByYW5nZSBgMGAgdG8gYGJhc2UgLSAxYCwgb3IgYGJhc2VgIGlmXG4gKiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzaWNUb0RpZ2l0KGNvZGVQb2ludCkge1xuICBpZiAoY29kZVBvaW50IC0gNDggPCAxMCkge1xuICAgIHJldHVybiBjb2RlUG9pbnQgLSAyMjtcbiAgfVxuICBpZiAoY29kZVBvaW50IC0gNjUgPCAyNikge1xuICAgIHJldHVybiBjb2RlUG9pbnQgLSA2NTtcbiAgfVxuICBpZiAoY29kZVBvaW50IC0gOTcgPCAyNikge1xuICAgIHJldHVybiBjb2RlUG9pbnQgLSA5NztcbiAgfVxuICByZXR1cm4gYmFzZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3JcbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG4gKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcbiAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG4gKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuICovXG5mdW5jdGlvbiBkaWdpdFRvQmFzaWMoZGlnaXQsIGZsYWcpIHtcbiAgLy8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcbiAgLy8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG4gIHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNikgLSAoKGZsYWcgIT0gMCkgPDwgNSk7XG59XG5cbi8qKlxuICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBhZGFwdChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcbiAgdmFyIGsgPSAwO1xuICBkZWx0YSA9IGZpcnN0VGltZSA/IGZsb29yKGRlbHRhIC8gZGFtcCkgOiBkZWx0YSA+PiAxO1xuICBkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG4gIGZvciAoIC8qIG5vIGluaXRpYWxpemF0aW9uICovIDsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcbiAgICBkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG4gIH1cbiAgcmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzIHRvIGEgc3RyaW5nIG9mIFVuaWNvZGVcbiAqIHN5bWJvbHMuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZShpbnB1dCkge1xuICAvLyBEb24ndCB1c2UgVUNTLTJcbiAgdmFyIG91dHB1dCA9IFtdLFxuICAgIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoLFxuICAgIG91dCxcbiAgICBpID0gMCxcbiAgICBuID0gaW5pdGlhbE4sXG4gICAgYmlhcyA9IGluaXRpYWxCaWFzLFxuICAgIGJhc2ljLFxuICAgIGosXG4gICAgaW5kZXgsXG4gICAgb2xkaSxcbiAgICB3LFxuICAgIGssXG4gICAgZGlnaXQsXG4gICAgdCxcbiAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cbiAgICBiYXNlTWludXNUO1xuXG4gIC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuICAvLyBwb2ludHMgYmVmb3JlIHRoZSBsYXN0IGRlbGltaXRlciwgb3IgYDBgIGlmIHRoZXJlIGlzIG5vbmUsIHRoZW4gY29weVxuICAvLyB0aGUgZmlyc3QgYmFzaWMgY29kZSBwb2ludHMgdG8gdGhlIG91dHB1dC5cblxuICBiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG4gIGlmIChiYXNpYyA8IDApIHtcbiAgICBiYXNpYyA9IDA7XG4gIH1cblxuICBmb3IgKGogPSAwOyBqIDwgYmFzaWM7ICsraikge1xuICAgIC8vIGlmIGl0J3Mgbm90IGEgYmFzaWMgY29kZSBwb2ludFxuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KGopID49IDB4ODApIHtcbiAgICAgIGVycm9yKCdub3QtYmFzaWMnKTtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goaW5wdXQuY2hhckNvZGVBdChqKSk7XG4gIH1cblxuICAvLyBNYWluIGRlY29kaW5nIGxvb3A6IHN0YXJ0IGp1c3QgYWZ0ZXIgdGhlIGxhc3QgZGVsaW1pdGVyIGlmIGFueSBiYXNpYyBjb2RlXG4gIC8vIHBvaW50cyB3ZXJlIGNvcGllZDsgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvdGhlcndpc2UuXG5cbiAgZm9yIChpbmRleCA9IGJhc2ljID4gMCA/IGJhc2ljICsgMSA6IDA7IGluZGV4IDwgaW5wdXRMZW5ndGg7IC8qIG5vIGZpbmFsIGV4cHJlc3Npb24gKi8gKSB7XG5cbiAgICAvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG4gICAgLy8gRGVjb2RlIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIgaW50byBgZGVsdGFgLFxuICAgIC8vIHdoaWNoIGdldHMgYWRkZWQgdG8gYGlgLiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgZWFzaWVyXG4gICAgLy8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcbiAgICAvLyB2YWx1ZSBhdCB0aGUgZW5kIHRvIG9idGFpbiBgZGVsdGFgLlxuICAgIGZvciAob2xkaSA9IGksIHcgPSAxLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovIDsgayArPSBiYXNlKSB7XG5cbiAgICAgIGlmIChpbmRleCA+PSBpbnB1dExlbmd0aCkge1xuICAgICAgICBlcnJvcignaW52YWxpZC1pbnB1dCcpO1xuICAgICAgfVxuXG4gICAgICBkaWdpdCA9IGJhc2ljVG9EaWdpdChpbnB1dC5jaGFyQ29kZUF0KGluZGV4KyspKTtcblxuICAgICAgaWYgKGRpZ2l0ID49IGJhc2UgfHwgZGlnaXQgPiBmbG9vcigobWF4SW50IC0gaSkgLyB3KSkge1xuICAgICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICAgIH1cblxuICAgICAgaSArPSBkaWdpdCAqIHc7XG4gICAgICB0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblxuICAgICAgaWYgKGRpZ2l0IDwgdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuICAgICAgaWYgKHcgPiBmbG9vcihtYXhJbnQgLyBiYXNlTWludXNUKSkge1xuICAgICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICAgIH1cblxuICAgICAgdyAqPSBiYXNlTWludXNUO1xuXG4gICAgfVxuXG4gICAgb3V0ID0gb3V0cHV0Lmxlbmd0aCArIDE7XG4gICAgYmlhcyA9IGFkYXB0KGkgLSBvbGRpLCBvdXQsIG9sZGkgPT0gMCk7XG5cbiAgICAvLyBgaWAgd2FzIHN1cHBvc2VkIHRvIHdyYXAgYXJvdW5kIGZyb20gYG91dGAgdG8gYDBgLFxuICAgIC8vIGluY3JlbWVudGluZyBgbmAgZWFjaCB0aW1lLCBzbyB3ZSdsbCBmaXggdGhhdCBub3c6XG4gICAgaWYgKGZsb29yKGkgLyBvdXQpID4gbWF4SW50IC0gbikge1xuICAgICAgZXJyb3IoJ292ZXJmbG93Jyk7XG4gICAgfVxuXG4gICAgbiArPSBmbG9vcihpIC8gb3V0KTtcbiAgICBpICU9IG91dDtcblxuICAgIC8vIEluc2VydCBgbmAgYXQgcG9zaXRpb24gYGlgIG9mIHRoZSBvdXRwdXRcbiAgICBvdXRwdXQuc3BsaWNlKGkrKywgMCwgbik7XG5cbiAgfVxuXG4gIHJldHVybiB1Y3MyZW5jb2RlKG91dHB1dCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzIChlLmcuIGEgZG9tYWluIG5hbWUgbGFiZWwpIHRvIGFcbiAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZShpbnB1dCkge1xuICB2YXIgbixcbiAgICBkZWx0YSxcbiAgICBoYW5kbGVkQ1BDb3VudCxcbiAgICBiYXNpY0xlbmd0aCxcbiAgICBiaWFzLFxuICAgIGosXG4gICAgbSxcbiAgICBxLFxuICAgIGssXG4gICAgdCxcbiAgICBjdXJyZW50VmFsdWUsXG4gICAgb3V0cHV0ID0gW10sXG4gICAgLyoqIGBpbnB1dExlbmd0aGAgd2lsbCBob2xkIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gYGlucHV0YC4gKi9cbiAgICBpbnB1dExlbmd0aCxcbiAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cbiAgICBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsXG4gICAgYmFzZU1pbnVzVCxcbiAgICBxTWludXNUO1xuXG4gIC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIFVuaWNvZGVcbiAgaW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcblxuICAvLyBDYWNoZSB0aGUgbGVuZ3RoXG4gIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG4gIG4gPSBpbml0aWFsTjtcbiAgZGVsdGEgPSAwO1xuICBiaWFzID0gaW5pdGlhbEJpYXM7XG5cbiAgLy8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50c1xuICBmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuICAgIGlmIChjdXJyZW50VmFsdWUgPCAweDgwKSB7XG4gICAgICBvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoY3VycmVudFZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cbiAgLy8gYGhhbmRsZWRDUENvdW50YCBpcyB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG4gIC8vIGBiYXNpY0xlbmd0aGAgaXMgdGhlIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cblxuICAvLyBGaW5pc2ggdGhlIGJhc2ljIHN0cmluZyAtIGlmIGl0IGlzIG5vdCBlbXB0eSAtIHdpdGggYSBkZWxpbWl0ZXJcbiAgaWYgKGJhc2ljTGVuZ3RoKSB7XG4gICAgb3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcbiAgfVxuXG4gIC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcbiAgd2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcblxuICAgIC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcbiAgICAvLyBsYXJnZXIgb25lOlxuICAgIGZvciAobSA9IG1heEludCwgaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG4gICAgICAgIG0gPSBjdXJyZW50VmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5jcmVhc2UgYGRlbHRhYCBlbm91Z2ggdG8gYWR2YW5jZSB0aGUgZGVjb2RlcidzIDxuLGk+IHN0YXRlIHRvIDxtLDA+LFxuICAgIC8vIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93XG4gICAgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuICAgIGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG4gICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICB9XG5cbiAgICBkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuICAgIG4gPSBtO1xuXG4gICAgZm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXG4gICAgICBpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG4gICAgICAgIGVycm9yKCdvdmVyZmxvdycpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY3VycmVudFZhbHVlID09IG4pIHtcbiAgICAgICAgLy8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXJcbiAgICAgICAgZm9yIChxID0gZGVsdGEsIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi8gOyBrICs9IGJhc2UpIHtcbiAgICAgICAgICB0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcbiAgICAgICAgICBpZiAocSA8IHQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBxTWludXNUID0gcSAtIHQ7XG4gICAgICAgICAgYmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuICAgICAgICAgIG91dHB1dC5wdXNoKFxuICAgICAgICAgICAgc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyh0ICsgcU1pbnVzVCAlIGJhc2VNaW51c1QsIDApKVxuICAgICAgICAgICk7XG4gICAgICAgICAgcSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSwgMCkpKTtcbiAgICAgICAgYmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcbiAgICAgICAgZGVsdGEgPSAwO1xuICAgICAgICArK2hhbmRsZWRDUENvdW50O1xuICAgICAgfVxuICAgIH1cblxuICAgICsrZGVsdGE7XG4gICAgKytuO1xuXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG4gKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG4gKiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCBvbiBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW5cbiAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlZCBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvXG4gKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcbiAqIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvVW5pY29kZShpbnB1dCkge1xuICByZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVnZXhQdW55Y29kZS50ZXN0KHN0cmluZykgP1xuICAgICAgZGVjb2RlKHN0cmluZy5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKSA6XG4gICAgICBzdHJpbmc7XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuICogUHVueWNvZGUuIE9ubHkgdGhlIG5vbi1BU0NJSSBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgd2lsbCBiZSBjb252ZXJ0ZWQsXG4gKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cbiAqIEFTQ0lJLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuICogVW5pY29kZSBzdHJpbmcuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgUHVueWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvbWFpbiBuYW1lIG9yXG4gKiBlbWFpbCBhZGRyZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9BU0NJSShpbnB1dCkge1xuICByZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVnZXhOb25BU0NJSS50ZXN0KHN0cmluZykgP1xuICAgICAgJ3huLS0nICsgZW5jb2RlKHN0cmluZykgOlxuICAgICAgc3RyaW5nO1xuICB9KTtcbn1cbmV4cG9ydCB2YXIgdmVyc2lvbiA9ICcxLjQuMSc7XG4vKipcbiAqIEFuIG9iamVjdCBvZiBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKYXZhU2NyaXB0J3MgaW50ZXJuYWwgY2hhcmFjdGVyXG4gKiByZXByZXNlbnRhdGlvbiAoVUNTLTIpIHRvIFVuaWNvZGUgY29kZSBwb2ludHMsIGFuZCBiYWNrLlxuICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEB0eXBlIE9iamVjdFxuICovXG5cbmV4cG9ydCB2YXIgdWNzMiA9IHtcbiAgZGVjb2RlOiB1Y3MyZGVjb2RlLFxuICBlbmNvZGU6IHVjczJlbmNvZGVcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHZlcnNpb246IHZlcnNpb24sXG4gIHVjczI6IHVjczIsXG4gIHRvQVNDSUk6IHRvQVNDSUksXG4gIHRvVW5pY29kZTogdG9Vbmljb2RlLFxuICBlbmNvZGU6IGVuY29kZSxcbiAgZGVjb2RlOiBkZWNvZGVcbn1cbiIsIlxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcbnZhciBpbml0ZWQgPSBmYWxzZTtcbmZ1bmN0aW9uIGluaXQgKCkge1xuICBpbml0ZWQgPSB0cnVlO1xuICB2YXIgY29kZSA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgICByZXZMb29rdXBbY29kZS5jaGFyQ29kZUF0KGkpXSA9IGlcbiAgfVxuXG4gIHJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxuICByZXZMb29rdXBbJ18nLmNoYXJDb2RlQXQoMCldID0gNjNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQnl0ZUFycmF5IChiNjQpIHtcbiAgaWYgKCFpbml0ZWQpIHtcbiAgICBpbml0KCk7XG4gIH1cbiAgdmFyIGksIGosIGwsIHRtcCwgcGxhY2VIb2xkZXJzLCBhcnJcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcblxuICBpZiAobGVuICUgNCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKVxuICB9XG5cbiAgLy8gdGhlIG51bWJlciBvZiBlcXVhbCBzaWducyAocGxhY2UgaG9sZGVycylcbiAgLy8gaWYgdGhlcmUgYXJlIHR3byBwbGFjZWhvbGRlcnMsIHRoYW4gdGhlIHR3byBjaGFyYWN0ZXJzIGJlZm9yZSBpdFxuICAvLyByZXByZXNlbnQgb25lIGJ5dGVcbiAgLy8gaWYgdGhlcmUgaXMgb25seSBvbmUsIHRoZW4gdGhlIHRocmVlIGNoYXJhY3RlcnMgYmVmb3JlIGl0IHJlcHJlc2VudCAyIGJ5dGVzXG4gIC8vIHRoaXMgaXMganVzdCBhIGNoZWFwIGhhY2sgdG8gbm90IGRvIGluZGV4T2YgdHdpY2VcbiAgcGxhY2VIb2xkZXJzID0gYjY0W2xlbiAtIDJdID09PSAnPScgPyAyIDogYjY0W2xlbiAtIDFdID09PSAnPScgPyAxIDogMFxuXG4gIC8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YVxuICBhcnIgPSBuZXcgQXJyKGxlbiAqIDMgLyA0IC0gcGxhY2VIb2xkZXJzKVxuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgbCA9IHBsYWNlSG9sZGVycyA+IDAgPyBsZW4gLSA0IDogbGVuXG5cbiAgdmFyIEwgPSAwXG5cbiAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBsOyBpICs9IDQsIGogKz0gMykge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDE4KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfCByZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDMpXVxuICAgIGFycltMKytdID0gKHRtcCA+PiAxNikgJiAweEZGXG4gICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVycyA9PT0gMikge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW0wrK10gPSB0bXAgJiAweEZGXG4gIH0gZWxzZSBpZiAocGxhY2VIb2xkZXJzID09PSAxKSB7XG4gICAgdG1wID0gKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTApIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICsgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICsgbG9va3VwW251bSA+PiA2ICYgMHgzRl0gKyBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID0gKHVpbnQ4W2ldIDw8IDE2KSArICh1aW50OFtpICsgMV0gPDwgOCkgKyAodWludDhbaSArIDJdKVxuICAgIG91dHB1dC5wdXNoKHRyaXBsZXRUb0Jhc2U2NCh0bXApKVxuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIGlmICghaW5pdGVkKSB7XG4gICAgaW5pdCgpO1xuICB9XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIG91dHB1dCA9ICcnXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBvdXRwdXQgKz0gbG9va3VwW3RtcCA+PiAyXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9ICc9PSdcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgKHVpbnQ4W2xlbiAtIDFdKVxuICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDEwXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl1cbiAgICBvdXRwdXQgKz0gJz0nXG4gIH1cblxuICBwYXJ0cy5wdXNoKG91dHB1dClcblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIlxuZXhwb3J0IGZ1bmN0aW9uIHJlYWQgKGJ1ZmZlciwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG1cbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBuQml0cyA9IC03XG4gIHZhciBpID0gaXNMRSA/IChuQnl0ZXMgLSAxKSA6IDBcbiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxXG4gIHZhciBzID0gYnVmZmVyW29mZnNldCArIGldXG5cbiAgaSArPSBkXG5cbiAgZSA9IHMgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgcyA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gZUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gZSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IG0gKiAyNTYgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXNcbiAgfSBlbHNlIGlmIChlID09PSBlTWF4KSB7XG4gICAgcmV0dXJuIG0gPyBOYU4gOiAoKHMgPyAtMSA6IDEpICogSW5maW5pdHkpXG4gIH0gZWxzZSB7XG4gICAgbSA9IG0gKyBNYXRoLnBvdygyLCBtTGVuKVxuICAgIGUgPSBlIC0gZUJpYXNcbiAgfVxuICByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIE1hdGgucG93KDIsIGUgLSBtTGVuKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtLCBjXG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgcnQgPSAobUxlbiA9PT0gMjMgPyBNYXRoLnBvdygyLCAtMjQpIC0gTWF0aC5wb3coMiwgLTc3KSA6IDApXG4gIHZhciBpID0gaXNMRSA/IDAgOiAobkJ5dGVzIC0gMSlcbiAgdmFyIGQgPSBpc0xFID8gMSA6IC0xXG4gIHZhciBzID0gdmFsdWUgPCAwIHx8ICh2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwKSA/IDEgOiAwXG5cbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSlcblxuICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIG0gPSBpc05hTih2YWx1ZSkgPyAxIDogMFxuICAgIGUgPSBlTWF4XG4gIH0gZWxzZSB7XG4gICAgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpIC8gTWF0aC5MTjIpXG4gICAgaWYgKHZhbHVlICogKGMgPSBNYXRoLnBvdygyLCAtZSkpIDwgMSkge1xuICAgICAgZS0tXG4gICAgICBjICo9IDJcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgKz0gcnQgKiBNYXRoLnBvdygyLCAxIC0gZUJpYXMpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrXG4gICAgICBjIC89IDJcbiAgICB9XG5cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwXG4gICAgICBlID0gZU1heFxuICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIG0gPSAodmFsdWUgKiBjIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG5cbmltcG9ydCAqIGFzIGJhc2U2NCBmcm9tICcuL2Jhc2U2NCdcbmltcG9ydCAqIGFzIGllZWU3NTQgZnJvbSAnLi9pZWVlNzU0J1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5J1xuXG5leHBvcnQgdmFyIElOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgVXNlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogRHVlIHRvIHZhcmlvdXMgYnJvd3NlciBidWdzLCBzb21ldGltZXMgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHVzZWQgZXZlblxuICogd2hlbiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0eXBlZCBhcnJheXMuXG4gKlxuICogTm90ZTpcbiAqXG4gKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLFxuICogICAgIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4LlxuICpcbiAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLlxuICpcbiAqICAgLSBJRTEwIGhhcyBhIGJyb2tlbiBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYXJyYXlzIG9mXG4gKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuXG5cbiAqIFdlIGRldGVjdCB0aGVzZSBidWdneSBicm93c2VycyBhbmQgc2V0IGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGAgdG8gYGZhbHNlYCBzbyB0aGV5XG4gKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVCAhPT0gdW5kZWZpbmVkXG4gID8gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgOiB0cnVlXG5cbi8qXG4gKiBFeHBvcnQga01heExlbmd0aCBhZnRlciB0eXBlZCBhcnJheSBzdXBwb3J0IGlzIGRldGVybWluZWQuXG4gKi9cbnZhciBfa01heExlbmd0aCA9IGtNYXhMZW5ndGgoKVxuZXhwb3J0IHtfa01heExlbmd0aCBhcyBrTWF4TGVuZ3RofTtcbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgcmV0dXJuIHRydWU7XG4gIC8vIHJvbGx1cCBpc3N1ZXNcbiAgLy8gdHJ5IHtcbiAgLy8gICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgLy8gICBhcnIuX19wcm90b19fID0ge1xuICAvLyAgICAgX19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSxcbiAgLy8gICAgIGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfVxuICAvLyAgIH1cbiAgLy8gICByZXR1cm4gYXJyLmZvbygpID09PSA0MiAmJiAvLyB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZFxuICAvLyAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAvLyAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICAvLyB9IGNhdGNoIChlKSB7XG4gIC8vICAgcmV0dXJuIGZhbHNlXG4gIC8vIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoa01heExlbmd0aCgpIDwgbGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJylcbiAgfVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICBpZiAodGhhdCA9PT0gbnVsbCkge1xuICAgICAgdGhhdCA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuICAgIH1cbiAgICB0aGF0Lmxlbmd0aCA9IGxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXJcbiAqIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBCdWZmZXIucHJvdG90eXBlYC4gRnVydGhlcm1vcmUsIGBCdWZmZXJgIGlzIGEgc3ViY2xhc3Mgb2ZcbiAqIGBVaW50OEFycmF5YCwgc28gdGhlIHJldHVybmVkIGluc3RhbmNlcyB3aWxsIGhhdmUgYWxsIHRoZSBub2RlIGBCdWZmZXJgIG1ldGhvZHNcbiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0XG4gKiByZXR1cm5zIGEgc2luZ2xlIG9jdGV0LlxuICpcbiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmICEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIENvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nT3JPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZydcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKHRoaXMsIGFyZylcbiAgfVxuICByZXR1cm4gZnJvbSh0aGlzLCBhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbi8vIFRPRE86IExlZ2FjeSwgbm90IG5lZWRlZCBhbnltb3JlLiBSZW1vdmUgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLlxuQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikge1xuICBhcnIuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIGZyb20gKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZyb21TdHJpbmcodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG4gIH1cblxuICByZXR1cm4gZnJvbU9iamVjdCh0aGF0LCB2YWx1ZSlcbn1cblxuLyoqXG4gKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvclxuICogaWYgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBCdWZmZXIuZnJvbShzdHJbLCBlbmNvZGluZ10pXG4gKiBCdWZmZXIuZnJvbShhcnJheSlcbiAqIEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAqIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyWywgYnl0ZU9mZnNldFssIGxlbmd0aF1dKVxuICoqL1xuQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gZnJvbShudWxsLCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnNwZWNpZXMgJiZcbiAgICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikge1xuICAgIC8vIEZpeCBzdWJhcnJheSgpIGluIEVTMjAxNi4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzk3XG4gICAgLy8gT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICAvLyAgIHZhbHVlOiBudWxsLFxuICAgIC8vICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgLy8gfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHRoYXQsIHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAodGhhdCwgc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZW5jb2RpbmdcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJylcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcblxuICB2YXIgYWN0dWFsID0gdGhhdC53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgdGhhdCA9IHRoYXQuc2xpY2UoMCwgYWN0dWFsKVxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAodGhhdCwgYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBhcnJheS5ieXRlTGVuZ3RoIC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXJcblxuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnb2Zmc2V0XFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdsZW5ndGhcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IGFycmF5XG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tQXJyYXlMaWtlKHRoYXQsIGFycmF5KVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikge1xuICBpZiAoaW50ZXJuYWxJc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW4pXG5cbiAgICBpZiAodGhhdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGF0XG4gICAgfVxuXG4gICAgb2JqLmNvcHkodGhhdCwgMCwgMCwgbGVuKVxuICAgIHJldHVybiB0aGF0XG4gIH1cblxuICBpZiAob2JqKSB7XG4gICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIG9iai5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgfHwgJ2xlbmd0aCcgaW4gb2JqKSB7XG4gICAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IGlzbmFuKG9iai5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMClcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iailcbiAgICB9XG5cbiAgICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSlcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJylcbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IGtNYXhMZW5ndGgoKWAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBrTWF4TGVuZ3RoKCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cbkJ1ZmZlci5pc0J1ZmZlciA9IGlzQnVmZmVyO1xuZnVuY3Rpb24gaW50ZXJuYWxJc0J1ZmZlciAoYikge1xuICByZXR1cm4gISEoYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyKVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGEpIHx8ICFpbnRlcm5hbElzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycycpXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoXG4gIHZhciB5ID0gYi5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXVxuICAgICAgeSA9IGJbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG5CdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd1dGYtOCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAnYmluYXJ5JzpcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFpc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpXG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGxlbmd0aCA9IDBcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoIWludGVybmFsSXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9XG4gICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgcG9zICs9IGJ1Zi5sZW5ndGhcbiAgfVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKGludGVybmFsSXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IHN0cmluZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkge1xuICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nXG4gIH1cblxuICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAobGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJzaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIGFuZCBgaXMtYnVmZmVyYCAoaW4gU2FmYXJpIDUtNykgdG8gZGV0ZWN0XG4vLyBCdWZmZXIgaW5zdGFuY2VzLlxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgdmFyIGkgPSBiW25dXG4gIGJbbl0gPSBiW21dXG4gIGJbbV0gPSBpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2ID0gZnVuY3Rpb24gc3dhcDE2ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAodGhpcywgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDBcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gSU5TUEVDVF9NQVhfQllURVNcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICB9XG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0ICAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAoaXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKGludGVybmFsSXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiZcbiAgICAgICAgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgdmFyIGluZGV4U2l6ZSA9IDFcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGRpcikge1xuICAgIHZhciBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGhleCBzdHJpbmcnKVxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gbGF0aW4xV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggfCAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgLy8gbGVnYWN5IHdyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKSAtIHJlbW92ZSBpbiB2MC4xM1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gICAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyArK2kpIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgc3RhcnQgKyBsZW4pLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKGNvZGUgPCAyNTYpIHtcbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gaW50ZXJuYWxJc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxudmFyIElOVkFMSURfQkFTRTY0X1JFID0gL1teK1xcLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0cmluZ3RyaW0oc3RyKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiBzdHJpbmd0cmltIChzdHIpIHtcbiAgaWYgKHN0ci50cmltKSByZXR1cm4gc3RyLnRyaW0oKVxuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKVxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgdmFyIGNvZGVQb2ludFxuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgdmFyIGJ5dGVzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsb1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gaXNuYW4gKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSB2YWwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cblxuXG4vLyB0aGUgZm9sbG93aW5nIGlzIGZyb20gaXMtYnVmZmVyLCBhbHNvIGJ5IEZlcm9zcyBBYm91a2hhZGlqZWggYW5kIHdpdGggc2FtZSBsaXNlbmNlXG4vLyBUaGUgX2lzQnVmZmVyIGNoZWNrIGlzIGZvciBTYWZhcmkgNS03IHN1cHBvcnQsIGJlY2F1c2UgaXQncyBtaXNzaW5nXG4vLyBPYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yLiBSZW1vdmUgdGhpcyBldmVudHVhbGx5XG5leHBvcnQgZnVuY3Rpb24gaXNCdWZmZXIob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiAoISFvYmouX2lzQnVmZmVyIHx8IGlzRmFzdEJ1ZmZlcihvYmopIHx8IGlzU2xvd0J1ZmZlcihvYmopKVxufVxuXG5mdW5jdGlvbiBpc0Zhc3RCdWZmZXIgKG9iaikge1xuICByZXR1cm4gISFvYmouY29uc3RydWN0b3IgJiYgdHlwZW9mIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKVxufVxuXG4vLyBGb3IgTm9kZSB2MC4xMCBzdXBwb3J0LiBSZW1vdmUgdGhpcyBldmVudHVhbGx5LlxuZnVuY3Rpb24gaXNTbG93QnVmZmVyIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmoucmVhZEZsb2F0TEUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5zbGljZSA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0Zhc3RCdWZmZXIob2JqLnNsaWNlKDAsIDApKVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdwcm9jZXNzJztcbnZhciBmb3JtYXRSZWdFeHAgPSAvJVtzZGolXS9nO1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChmKSB7XG4gIGlmICghaXNTdHJpbmcoZikpIHtcbiAgICB2YXIgb2JqZWN0cyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvYmplY3RzLnB1c2goaW5zcGVjdChhcmd1bWVudHNbaV0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdHMuam9pbignICcpO1xuICB9XG5cbiAgdmFyIGkgPSAxO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbih4KSB7XG4gICAgaWYgKHggPT09ICclJScpIHJldHVybiAnJSc7XG4gICAgaWYgKGkgPj0gbGVuKSByZXR1cm4geDtcbiAgICBzd2l0Y2ggKHgpIHtcbiAgICAgIGNhc2UgJyVzJzogcmV0dXJuIFN0cmluZyhhcmdzW2krK10pO1xuICAgICAgY2FzZSAnJWQnOiByZXR1cm4gTnVtYmVyKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclaic6XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3NbaSsrXSk7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG4gIH0pO1xuICBmb3IgKHZhciB4ID0gYXJnc1tpXTsgaSA8IGxlbjsgeCA9IGFyZ3NbKytpXSkge1xuICAgIGlmIChpc051bGwoeCkgfHwgIWlzT2JqZWN0KHgpKSB7XG4gICAgICBzdHIgKz0gJyAnICsgeDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyICs9ICcgJyArIGluc3BlY3QoeCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHI7XG59O1xuXG5cbi8vIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4vLyBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuLy8gSWYgLS1uby1kZXByZWNhdGlvbiBpcyBzZXQsIHRoZW4gaXQgaXMgYSBuby1vcC5cbmV4cG9ydCBmdW5jdGlvbiBkZXByZWNhdGUoZm4sIG1zZykge1xuICAvLyBBbGxvdyBmb3IgZGVwcmVjYXRpbmcgdGhpbmdzIGluIHRoZSBwcm9jZXNzIG9mIHN0YXJ0aW5nIHVwLlxuICBpZiAoaXNVbmRlZmluZWQoZ2xvYmFsLnByb2Nlc3MpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBkZXByZWNhdGVkKCkge1xuICAgIGlmICghd2FybmVkKSB7XG4gICAgICBpZiAocHJvY2Vzcy50aHJvd0RlcHJlY2F0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gZGVwcmVjYXRlZDtcbn07XG5cblxudmFyIGRlYnVncyA9IHt9O1xudmFyIGRlYnVnRW52aXJvbjtcbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z2xvZyhzZXQpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKGRlYnVnRW52aXJvbikpXG4gICAgZGVidWdFbnZpcm9uID0gcHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyB8fCAnJztcbiAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7XG4gIGlmICghZGVidWdzW3NldF0pIHtcbiAgICBpZiAobmV3IFJlZ0V4cCgnXFxcXGInICsgc2V0ICsgJ1xcXFxiJywgJ2knKS50ZXN0KGRlYnVnRW52aXJvbikpIHtcbiAgICAgIHZhciBwaWQgPSAwO1xuICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG1zZyA9IGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCclcyAlZDogJXMnLCBzZXQsIHBpZCwgbXNnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlYnVnc1tzZXRdO1xufTtcblxuXG4vKipcbiAqIEVjaG9zIHRoZSB2YWx1ZSBvZiBhIHZhbHVlLiBUcnlzIHRvIHByaW50IHRoZSB2YWx1ZSBvdXRcbiAqIGluIHRoZSBiZXN0IHdheSBwb3NzaWJsZSBnaXZlbiB0aGUgZGlmZmVyZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBwcmludCBvdXQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25hbCBvcHRpb25zIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgb3V0cHV0LlxuICovXG4vKiBsZWdhY3k6IG9iaiwgc2hvd0hpZGRlbiwgZGVwdGgsIGNvbG9ycyovXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvYmosIG9wdHMpIHtcbiAgLy8gZGVmYXVsdCBvcHRpb25zXG4gIHZhciBjdHggPSB7XG4gICAgc2VlbjogW10sXG4gICAgc3R5bGl6ZTogc3R5bGl6ZU5vQ29sb3JcbiAgfTtcbiAgLy8gbGVnYWN5Li4uXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDMpIGN0eC5kZXB0aCA9IGFyZ3VtZW50c1syXTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkgY3R4LmNvbG9ycyA9IGFyZ3VtZW50c1szXTtcbiAgaWYgKGlzQm9vbGVhbihvcHRzKSkge1xuICAgIC8vIGxlZ2FjeS4uLlxuICAgIGN0eC5zaG93SGlkZGVuID0gb3B0cztcbiAgfSBlbHNlIGlmIChvcHRzKSB7XG4gICAgLy8gZ290IGFuIFwib3B0aW9uc1wiIG9iamVjdFxuICAgIF9leHRlbmQoY3R4LCBvcHRzKTtcbiAgfVxuICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zXG4gIGlmIChpc1VuZGVmaW5lZChjdHguc2hvd0hpZGRlbikpIGN0eC5zaG93SGlkZGVuID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguZGVwdGgpKSBjdHguZGVwdGggPSAyO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmNvbG9ycykpIGN0eC5jb2xvcnMgPSBmYWxzZTtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jdXN0b21JbnNwZWN0KSkgY3R4LmN1c3RvbUluc3BlY3QgPSB0cnVlO1xuICBpZiAoY3R4LmNvbG9ycykgY3R4LnN0eWxpemUgPSBzdHlsaXplV2l0aENvbG9yO1xuICByZXR1cm4gZm9ybWF0VmFsdWUoY3R4LCBvYmosIGN0eC5kZXB0aCk7XG59XG5cbi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSNncmFwaGljc1xuaW5zcGVjdC5jb2xvcnMgPSB7XG4gICdib2xkJyA6IFsxLCAyMl0sXG4gICdpdGFsaWMnIDogWzMsIDIzXSxcbiAgJ3VuZGVybGluZScgOiBbNCwgMjRdLFxuICAnaW52ZXJzZScgOiBbNywgMjddLFxuICAnd2hpdGUnIDogWzM3LCAzOV0sXG4gICdncmV5JyA6IFs5MCwgMzldLFxuICAnYmxhY2snIDogWzMwLCAzOV0sXG4gICdibHVlJyA6IFszNCwgMzldLFxuICAnY3lhbicgOiBbMzYsIDM5XSxcbiAgJ2dyZWVuJyA6IFszMiwgMzldLFxuICAnbWFnZW50YScgOiBbMzUsIDM5XSxcbiAgJ3JlZCcgOiBbMzEsIDM5XSxcbiAgJ3llbGxvdycgOiBbMzMsIDM5XVxufTtcblxuLy8gRG9uJ3QgdXNlICdibHVlJyBub3QgdmlzaWJsZSBvbiBjbWQuZXhlXG5pbnNwZWN0LnN0eWxlcyA9IHtcbiAgJ3NwZWNpYWwnOiAnY3lhbicsXG4gICdudW1iZXInOiAneWVsbG93JyxcbiAgJ2Jvb2xlYW4nOiAneWVsbG93JyxcbiAgJ3VuZGVmaW5lZCc6ICdncmV5JyxcbiAgJ251bGwnOiAnYm9sZCcsXG4gICdzdHJpbmcnOiAnZ3JlZW4nLFxuICAnZGF0ZSc6ICdtYWdlbnRhJyxcbiAgLy8gXCJuYW1lXCI6IGludGVudGlvbmFsbHkgbm90IHN0eWxpbmdcbiAgJ3JlZ2V4cCc6ICdyZWQnXG59O1xuXG5cbmZ1bmN0aW9uIHN0eWxpemVXaXRoQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHtcbiAgdmFyIHN0eWxlID0gaW5zcGVjdC5zdHlsZXNbc3R5bGVUeXBlXTtcblxuICBpZiAoc3R5bGUpIHtcbiAgICByZXR1cm4gJ1xcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVswXSArICdtJyArIHN0ciArXG4gICAgICAgICAgICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMV0gKyAnbSc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHN0eWxpemVOb0NvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHJldHVybiBzdHI7XG59XG5cblxuZnVuY3Rpb24gYXJyYXlUb0hhc2goYXJyYXkpIHtcbiAgdmFyIGhhc2ggPSB7fTtcblxuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHZhbCwgaWR4KSB7XG4gICAgaGFzaFt2YWxdID0gdHJ1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGhhc2g7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0VmFsdWUoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzKSB7XG4gIC8vIFByb3ZpZGUgYSBob29rIGZvciB1c2VyLXNwZWNpZmllZCBpbnNwZWN0IGZ1bmN0aW9ucy5cbiAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBhbiBpbnNwZWN0IGZ1bmN0aW9uIG9uIGl0XG4gIGlmIChjdHguY3VzdG9tSW5zcGVjdCAmJlxuICAgICAgdmFsdWUgJiZcbiAgICAgIGlzRnVuY3Rpb24odmFsdWUuaW5zcGVjdCkgJiZcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHV0aWwgbW9kdWxlLCBpdCdzIGluc3BlY3QgZnVuY3Rpb24gaXMgc3BlY2lhbFxuICAgICAgdmFsdWUuaW5zcGVjdCAhPT0gaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzLCBjdHgpO1xuICAgIGlmICghaXNTdHJpbmcocmV0KSkge1xuICAgICAgcmV0ID0gZm9ybWF0VmFsdWUoY3R4LCByZXQsIHJlY3Vyc2VUaW1lcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllc1xuICB2YXIgcHJpbWl0aXZlID0gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpO1xuICBpZiAocHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIHZhciB2aXNpYmxlS2V5cyA9IGFycmF5VG9IYXNoKGtleXMpO1xuXG4gIGlmIChjdHguc2hvd0hpZGRlbikge1xuICAgIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWx1ZSk7XG4gIH1cblxuICAvLyBJRSBkb2Vzbid0IG1ha2UgZXJyb3IgZmllbGRzIG5vbi1lbnVtZXJhYmxlXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4XG4gIGlmIChpc0Vycm9yKHZhbHVlKVxuICAgICAgJiYgKGtleXMuaW5kZXhPZignbWVzc2FnZScpID49IDAgfHwga2V5cy5pbmRleE9mKCdkZXNjcmlwdGlvbicpID49IDApKSB7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZSArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpO1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFyIHNpbXBsZSA9ICdcXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL15cInxcIiQvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKHNpbXBsZSwgJ3N0cmluZycpO1xuICB9XG4gIGlmIChpc051bWJlcih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdudW1iZXInKTtcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7XG4gIC8vIEZvciBzb21lIHJlYXNvbiB0eXBlb2YgbnVsbCBpcyBcIm9iamVjdFwiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS5cbiAgaWYgKGlzTnVsbCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCdudWxsJywgJ251bGwnKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgU3RyaW5nKGkpKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBTdHJpbmcoaSksIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKCFrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIGtleSwgdHJ1ZSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSkge1xuICB2YXIgbmFtZSwgc3RyLCBkZXNjO1xuICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KSB8fCB7IHZhbHVlOiB2YWx1ZVtrZXldIH07XG4gIGlmIChkZXNjLmdldCkge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXIvU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tTZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2aXNpYmxlS2V5cywga2V5KSkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZihkZXNjLnZhbHVlKSA8IDApIHtcbiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHIuaW5kZXhPZignXFxuJykgPiAtMSkge1xuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJykuc3Vic3RyKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ciA9ICdcXG4nICsgc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0NpcmN1bGFyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmIChpc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBuYW1lID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpO1xuICAgIGlmIChuYW1lLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBcIidcIik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ3N0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICsgJzogJyArIHN0cjtcbn1cblxuXG5mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcykge1xuICB2YXIgbnVtTGluZXNFc3QgPSAwO1xuICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHtcbiAgICBudW1MaW5lc0VzdCsrO1xuICAgIGlmIChjdXIuaW5kZXhPZignXFxuJykgPj0gMCkgbnVtTGluZXNFc3QrKztcbiAgICByZXR1cm4gcHJldiArIGN1ci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZywgJycpLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkoYXIpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gaXNPYmplY3QocmUpICYmIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBpc09iamVjdChkKSAmJiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiBpc09iamVjdChlKSAmJlxuICAgICAgKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWZmZXIobWF5YmVCdWYpIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihtYXliZUJ1Zik7XG59XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydCBmdW5jdGlvbiBsb2coKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcbn1cblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuaW1wb3J0IGluaGVyaXRzIGZyb20gJy4vaW5oZXJpdHMnO1xuZXhwb3J0IHtpbmhlcml0c31cblxuZXhwb3J0IGZ1bmN0aW9uIF9leHRlbmQob3JpZ2luLCBhZGQpIHtcbiAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgYWRkIGlzbid0IGFuIG9iamVjdFxuICBpZiAoIWFkZCB8fCAhaXNPYmplY3QoYWRkKSkgcmV0dXJuIG9yaWdpbjtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFkZCk7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBvcmlnaW5ba2V5c1tpXV0gPSBhZGRba2V5c1tpXV07XG4gIH1cbiAgcmV0dXJuIG9yaWdpbjtcbn07XG5cbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaW5oZXJpdHM6IGluaGVyaXRzLFxuICBfZXh0ZW5kOiBfZXh0ZW5kLFxuICBsb2c6IGxvZyxcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc1ByaW1pdGl2ZTogaXNQcmltaXRpdmUsXG4gIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24sXG4gIGlzRXJyb3I6IGlzRXJyb3IsXG4gIGlzRGF0ZTogaXNEYXRlLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzUmVnRXhwOiBpc1JlZ0V4cCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc1N5bWJvbDogaXNTeW1ib2wsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc051bGxPclVuZGVmaW5lZDogaXNOdWxsT3JVbmRlZmluZWQsXG4gIGlzTnVsbDogaXNOdWxsLFxuICBpc0Jvb2xlYW46IGlzQm9vbGVhbixcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaW5zcGVjdDogaW5zcGVjdCxcbiAgZGVwcmVjYXRlOiBkZXByZWNhdGUsXG4gIGZvcm1hdDogZm9ybWF0LFxuICBkZWJ1Z2xvZzogZGVidWdsb2dcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5cbi8vIElmIG9iai5oYXNPd25Qcm9wZXJ0eSBoYXMgYmVlbiBvdmVycmlkZGVuLCB0aGVuIGNhbGxpbmdcbi8vIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSB3aWxsIGJyZWFrLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vam95ZW50L25vZGUvaXNzdWVzLzE3MDdcbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHhzKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeHMpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcbmZ1bmN0aW9uIHN0cmluZ2lmeVByaW1pdGl2ZSh2KSB7XG4gIHN3aXRjaCAodHlwZW9mIHYpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIHY7XG5cbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHJldHVybiB2ID8gJ3RydWUnIDogJ2ZhbHNlJztcblxuICAgIGNhc2UgJ251bWJlcic6XG4gICAgICByZXR1cm4gaXNGaW5pdGUodikgPyB2IDogJyc7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkgKG9iaiwgc2VwLCBlcSwgbmFtZSkge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgIG9iaiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBtYXAob2JqZWN0S2V5cyhvYmopLCBmdW5jdGlvbihrKSB7XG4gICAgICB2YXIga3MgPSBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKGspKSArIGVxO1xuICAgICAgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgICByZXR1cm4gbWFwKG9ialtrXSwgZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiBrcyArIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUodikpO1xuICAgICAgICB9KS5qb2luKHNlcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga3MgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG9ialtrXSkpO1xuICAgICAgfVxuICAgIH0pLmpvaW4oc2VwKTtcblxuICB9XG5cbiAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG5hbWUpKSArIGVxICtcbiAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUob2JqKSk7XG59O1xuXG5mdW5jdGlvbiBtYXAgKHhzLCBmKSB7XG4gIGlmICh4cy5tYXApIHJldHVybiB4cy5tYXAoZik7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgIHJlcy5wdXNoKGYoeHNbaV0sIGkpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHJlcy5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShxcywgc2VwLCBlcSwgb3B0aW9ucykge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgdmFyIG9iaiA9IHt9O1xuXG4gIGlmICh0eXBlb2YgcXMgIT09ICdzdHJpbmcnIHx8IHFzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgcmVnZXhwID0gL1xcKy9nO1xuICBxcyA9IHFzLnNwbGl0KHNlcCk7XG5cbiAgdmFyIG1heEtleXMgPSAxMDAwO1xuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5tYXhLZXlzID09PSAnbnVtYmVyJykge1xuICAgIG1heEtleXMgPSBvcHRpb25zLm1heEtleXM7XG4gIH1cblxuICB2YXIgbGVuID0gcXMubGVuZ3RoO1xuICAvLyBtYXhLZXlzIDw9IDAgbWVhbnMgdGhhdCB3ZSBzaG91bGQgbm90IGxpbWl0IGtleXMgY291bnRcbiAgaWYgKG1heEtleXMgPiAwICYmIGxlbiA+IG1heEtleXMpIHtcbiAgICBsZW4gPSBtYXhLZXlzO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIHZhciB4ID0gcXNbaV0ucmVwbGFjZShyZWdleHAsICclMjAnKSxcbiAgICAgICAgaWR4ID0geC5pbmRleE9mKGVxKSxcbiAgICAgICAga3N0ciwgdnN0ciwgaywgdjtcblxuICAgIGlmIChpZHggPj0gMCkge1xuICAgICAga3N0ciA9IHguc3Vic3RyKDAsIGlkeCk7XG4gICAgICB2c3RyID0geC5zdWJzdHIoaWR4ICsgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtzdHIgPSB4O1xuICAgICAgdnN0ciA9ICcnO1xuICAgIH1cblxuICAgIGsgPSBkZWNvZGVVUklDb21wb25lbnQoa3N0cik7XG4gICAgdiA9IGRlY29kZVVSSUNvbXBvbmVudCh2c3RyKTtcblxuICAgIGlmICghaGFzT3duUHJvcGVydHkob2JqLCBrKSkge1xuICAgICAgb2JqW2tdID0gdjtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgb2JqW2tdLnB1c2godik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ialtrXSA9IFtvYmpba10sIHZdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBlbmNvZGU6IHN0cmluZ2lmeSxcbiAgc3RyaW5naWZ5OiBzdHJpbmdpZnksXG4gIGRlY29kZTogcGFyc2UsXG4gIHBhcnNlOiBwYXJzZVxufVxuZXhwb3J0IHtzdHJpbmdpZnkgYXMgZW5jb2RlLCBwYXJzZSBhcyBkZWNvZGV9O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cblxuaW1wb3J0IHt0b0FTQ0lJfSBmcm9tICdwdW55Y29kZSc7XG5pbXBvcnQge2lzT2JqZWN0LGlzU3RyaW5nLGlzTnVsbE9yVW5kZWZpbmVkLGlzTnVsbH0gZnJvbSAndXRpbCc7XG5pbXBvcnQge3BhcnNlIGFzIHFzUGFyc2Usc3RyaW5naWZ5IGFzIHFzU3RyaW5naWZ5fSBmcm9tICdxdWVyeXN0cmluZyc7XG5leHBvcnQge1xuICB1cmxQYXJzZSBhcyBwYXJzZSxcbiAgdXJsUmVzb2x2ZSBhcyByZXNvbHZlLFxuICB1cmxSZXNvbHZlT2JqZWN0IGFzIHJlc29sdmVPYmplY3QsXG4gIHVybEZvcm1hdCBhcyBmb3JtYXRcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHBhcnNlOiB1cmxQYXJzZSxcbiAgcmVzb2x2ZTogdXJsUmVzb2x2ZSxcbiAgcmVzb2x2ZU9iamVjdDogdXJsUmVzb2x2ZU9iamVjdCxcbiAgZm9ybWF0OiB1cmxGb3JtYXQsXG4gIFVybDogVXJsXG59XG5leHBvcnQgZnVuY3Rpb24gVXJsKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbDtcbiAgdGhpcy5zbGFzaGVzID0gbnVsbDtcbiAgdGhpcy5hdXRoID0gbnVsbDtcbiAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgdGhpcy5ob3N0bmFtZSA9IG51bGw7XG4gIHRoaXMuaGFzaCA9IG51bGw7XG4gIHRoaXMuc2VhcmNoID0gbnVsbDtcbiAgdGhpcy5xdWVyeSA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xuICB0aGlzLnBhdGggPSBudWxsO1xuICB0aGlzLmhyZWYgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gIHBvcnRQYXR0ZXJuID0gLzpbMC05XSokLyxcblxuICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2ltcGxlIHBhdGggVVJMXG4gIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXlxcP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyByZXNlcnZlZCBmb3IgZGVsaW1pdGluZyBVUkxzLlxuICAvLyBXZSBhY3R1YWxseSBqdXN0IGF1dG8tZXNjYXBlIHRoZXNlLlxuICBkZWxpbXMgPSBbJzwnLCAnPicsICdcIicsICdgJywgJyAnLCAnXFxyJywgJ1xcbicsICdcXHQnXSxcblxuICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyBub3QgYWxsb3dlZCBmb3IgdmFyaW91cyByZWFzb25zLlxuICB1bndpc2UgPSBbJ3snLCAnfScsICd8JywgJ1xcXFwnLCAnXicsICdgJ10uY29uY2F0KGRlbGltcyksXG5cbiAgLy8gQWxsb3dlZCBieSBSRkNzLCBidXQgY2F1c2Ugb2YgWFNTIGF0dGFja3MuICBBbHdheXMgZXNjYXBlIHRoZXNlLlxuICBhdXRvRXNjYXBlID0gWydcXCcnXS5jb25jYXQodW53aXNlKSxcbiAgLy8gQ2hhcmFjdGVycyB0aGF0IGFyZSBuZXZlciBldmVyIGFsbG93ZWQgaW4gYSBob3N0bmFtZS5cbiAgLy8gTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAvLyBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgKmV4cGVjdGVkKiB0byBiZSBzZWVuLCBzbyB3ZSBmYXN0LXBhdGhcbiAgLy8gdGhlbS5cbiAgbm9uSG9zdENoYXJzID0gWyclJywgJy8nLCAnPycsICc7JywgJyMnXS5jb25jYXQoYXV0b0VzY2FwZSksXG4gIGhvc3RFbmRpbmdDaGFycyA9IFsnLycsICc/JywgJyMnXSxcbiAgaG9zdG5hbWVNYXhMZW4gPSAyNTUsXG4gIGhvc3RuYW1lUGFydFBhdHRlcm4gPSAvXlsrYS16MC05QS1aXy1dezAsNjN9JC8sXG4gIGhvc3RuYW1lUGFydFN0YXJ0ID0gL14oWythLXowLTlBLVpfLV17MCw2M30pKC4qKSQvLFxuICAvLyBwcm90b2NvbHMgdGhhdCBjYW4gYWxsb3cgXCJ1bnNhZmVcIiBhbmQgXCJ1bndpc2VcIiBjaGFycy5cbiAgdW5zYWZlUHJvdG9jb2wgPSB7XG4gICAgJ2phdmFzY3JpcHQnOiB0cnVlLFxuICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgfSxcbiAgLy8gcHJvdG9jb2xzIHRoYXQgbmV2ZXIgaGF2ZSBhIGhvc3RuYW1lLlxuICBob3N0bGVzc1Byb3RvY29sID0ge1xuICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gIH0sXG4gIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICBzbGFzaGVkUHJvdG9jb2wgPSB7XG4gICAgJ2h0dHAnOiB0cnVlLFxuICAgICdodHRwcyc6IHRydWUsXG4gICAgJ2Z0cCc6IHRydWUsXG4gICAgJ2dvcGhlcic6IHRydWUsXG4gICAgJ2ZpbGUnOiB0cnVlLFxuICAgICdodHRwOic6IHRydWUsXG4gICAgJ2h0dHBzOic6IHRydWUsXG4gICAgJ2Z0cDonOiB0cnVlLFxuICAgICdnb3BoZXI6JzogdHJ1ZSxcbiAgICAnZmlsZTonOiB0cnVlXG4gIH07XG5cbmZ1bmN0aW9uIHVybFBhcnNlKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiBpc09iamVjdCh1cmwpICYmIHVybCBpbnN0YW5jZW9mIFVybCkgcmV0dXJuIHVybDtcblxuICB2YXIgdSA9IG5ldyBVcmw7XG4gIHUucGFyc2UodXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCk7XG4gIHJldHVybiB1O1xufVxuVXJsLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgcmV0dXJuIHBhcnNlKHRoaXMsIHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpO1xufVxuXG5mdW5jdGlvbiBwYXJzZShzZWxmLCB1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICghaXNTdHJpbmcodXJsKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BhcmFtZXRlciBcXCd1cmxcXCcgbXVzdCBiZSBhIHN0cmluZywgbm90ICcgKyB0eXBlb2YgdXJsKTtcbiAgfVxuXG4gIC8vIENvcHkgY2hyb21lLCBJRSwgb3BlcmEgYmFja3NsYXNoLWhhbmRsaW5nIGJlaGF2aW9yLlxuICAvLyBCYWNrIHNsYXNoZXMgYmVmb3JlIHRoZSBxdWVyeSBzdHJpbmcgZ2V0IGNvbnZlcnRlZCB0byBmb3J3YXJkIHNsYXNoZXNcbiAgLy8gU2VlOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MjU5MTZcbiAgdmFyIHF1ZXJ5SW5kZXggPSB1cmwuaW5kZXhPZignPycpLFxuICAgIHNwbGl0dGVyID1cbiAgICAocXVlcnlJbmRleCAhPT0gLTEgJiYgcXVlcnlJbmRleCA8IHVybC5pbmRleE9mKCcjJykpID8gJz8nIDogJyMnLFxuICAgIHVTcGxpdCA9IHVybC5zcGxpdChzcGxpdHRlciksXG4gICAgc2xhc2hSZWdleCA9IC9cXFxcL2c7XG4gIHVTcGxpdFswXSA9IHVTcGxpdFswXS5yZXBsYWNlKHNsYXNoUmVnZXgsICcvJyk7XG4gIHVybCA9IHVTcGxpdC5qb2luKHNwbGl0dGVyKTtcblxuICB2YXIgcmVzdCA9IHVybDtcblxuICAvLyB0cmltIGJlZm9yZSBwcm9jZWVkaW5nLlxuICAvLyBUaGlzIGlzIHRvIHN1cHBvcnQgcGFyc2Ugc3R1ZmYgbGlrZSBcIiAgaHR0cDovL2Zvby5jb20gIFxcblwiXG4gIHJlc3QgPSByZXN0LnRyaW0oKTtcblxuICBpZiAoIXNsYXNoZXNEZW5vdGVIb3N0ICYmIHVybC5zcGxpdCgnIycpLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIFRyeSBmYXN0IHBhdGggcmVnZXhwXG4gICAgdmFyIHNpbXBsZVBhdGggPSBzaW1wbGVQYXRoUGF0dGVybi5leGVjKHJlc3QpO1xuICAgIGlmIChzaW1wbGVQYXRoKSB7XG4gICAgICBzZWxmLnBhdGggPSByZXN0O1xuICAgICAgc2VsZi5ocmVmID0gcmVzdDtcbiAgICAgIHNlbGYucGF0aG5hbWUgPSBzaW1wbGVQYXRoWzFdO1xuICAgICAgaWYgKHNpbXBsZVBhdGhbMl0pIHtcbiAgICAgICAgc2VsZi5zZWFyY2ggPSBzaW1wbGVQYXRoWzJdO1xuICAgICAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICAgIHNlbGYucXVlcnkgPSBxc1BhcnNlKHNlbGYuc2VhcmNoLnN1YnN0cigxKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi5xdWVyeSA9IHNlbGYuc2VhcmNoLnN1YnN0cigxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIHNlbGYuc2VhcmNoID0gJyc7XG4gICAgICAgIHNlbGYucXVlcnkgPSB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwcm90byA9IHByb3RvY29sUGF0dGVybi5leGVjKHJlc3QpO1xuICBpZiAocHJvdG8pIHtcbiAgICBwcm90byA9IHByb3RvWzBdO1xuICAgIHZhciBsb3dlclByb3RvID0gcHJvdG8udG9Mb3dlckNhc2UoKTtcbiAgICBzZWxmLnByb3RvY29sID0gbG93ZXJQcm90bztcbiAgICByZXN0ID0gcmVzdC5zdWJzdHIocHJvdG8ubGVuZ3RoKTtcbiAgfVxuXG4gIC8vIGZpZ3VyZSBvdXQgaWYgaXQncyBnb3QgYSBob3N0XG4gIC8vIHVzZXJAc2VydmVyIGlzICphbHdheXMqIGludGVycHJldGVkIGFzIGEgaG9zdG5hbWUsIGFuZCB1cmxcbiAgLy8gcmVzb2x1dGlvbiB3aWxsIHRyZWF0IC8vZm9vL2JhciBhcyBob3N0PWZvbyxwYXRoPWJhciBiZWNhdXNlIHRoYXQnc1xuICAvLyBob3cgdGhlIGJyb3dzZXIgcmVzb2x2ZXMgcmVsYXRpdmUgVVJMcy5cbiAgaWYgKHNsYXNoZXNEZW5vdGVIb3N0IHx8IHByb3RvIHx8IHJlc3QubWF0Y2goL15cXC9cXC9bXkBcXC9dK0BbXkBcXC9dKy8pKSB7XG4gICAgdmFyIHNsYXNoZXMgPSByZXN0LnN1YnN0cigwLCAyKSA9PT0gJy8vJztcbiAgICBpZiAoc2xhc2hlcyAmJiAhKHByb3RvICYmIGhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dKSkge1xuICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDIpO1xuICAgICAgc2VsZi5zbGFzaGVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgdmFyIGksIGhlYywgbCwgcDtcbiAgaWYgKCFob3N0bGVzc1Byb3RvY29sW3Byb3RvXSAmJlxuICAgIChzbGFzaGVzIHx8IChwcm90byAmJiAhc2xhc2hlZFByb3RvY29sW3Byb3RvXSkpKSB7XG5cbiAgICAvLyB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAvLyB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgIC8vIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgLy8gVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgIC8vXG4gICAgLy8gZXg6XG4gICAgLy8gaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAvLyBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG5cbiAgICAvLyB2MC4xMiBUT0RPKGlzYWFjcyk6IFRoaXMgaXMgbm90IHF1aXRlIGhvdyBDaHJvbWUgZG9lcyB0aGluZ3MuXG4gICAgLy8gUmV2aWV3IG91ciB0ZXN0IGNhc2UgYWdhaW5zdCBicm93c2VycyBtb3JlIGNvbXByZWhlbnNpdmVseS5cblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGFueSBob3N0RW5kaW5nQ2hhcnNcbiAgICB2YXIgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IDA7IGkgPCBob3N0RW5kaW5nQ2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihob3N0RW5kaW5nQ2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cblxuICAgIC8vIGF0IHRoaXMgcG9pbnQsIGVpdGhlciB3ZSBoYXZlIGFuIGV4cGxpY2l0IHBvaW50IHdoZXJlIHRoZVxuICAgIC8vIGF1dGggcG9ydGlvbiBjYW5ub3QgZ28gcGFzdCwgb3IgdGhlIGxhc3QgQCBjaGFyIGlzIHRoZSBkZWNpZGVyLlxuICAgIHZhciBhdXRoLCBhdFNpZ247XG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7XG4gICAgICAvLyBhdFNpZ24gY2FuIGJlIGFueXdoZXJlLlxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhdFNpZ24gbXVzdCBiZSBpbiBhdXRoIHBvcnRpb24uXG4gICAgICAvLyBodHRwOi8vYUBiL2NAZCA9PiBob3N0OmIgYXV0aDphIHBhdGg6L2NAZFxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcsIGhvc3RFbmQpO1xuICAgIH1cblxuICAgIC8vIE5vdyB3ZSBoYXZlIGEgcG9ydGlvbiB3aGljaCBpcyBkZWZpbml0ZWx5IHRoZSBhdXRoLlxuICAgIC8vIFB1bGwgdGhhdCBvZmYuXG4gICAgaWYgKGF0U2lnbiAhPT0gLTEpIHtcbiAgICAgIGF1dGggPSByZXN0LnNsaWNlKDAsIGF0U2lnbik7XG4gICAgICByZXN0ID0gcmVzdC5zbGljZShhdFNpZ24gKyAxKTtcbiAgICAgIHNlbGYuYXV0aCA9IGRlY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICB9XG5cbiAgICAvLyB0aGUgaG9zdCBpcyB0aGUgcmVtYWluaW5nIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBub24taG9zdCBjaGFyXG4gICAgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IDA7IGkgPCBub25Ib3N0Q2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihub25Ib3N0Q2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cbiAgICAvLyBpZiB3ZSBzdGlsbCBoYXZlIG5vdCBoaXQgaXQsIHRoZW4gdGhlIGVudGlyZSB0aGluZyBpcyBhIGhvc3QuXG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKVxuICAgICAgaG9zdEVuZCA9IHJlc3QubGVuZ3RoO1xuXG4gICAgc2VsZi5ob3N0ID0gcmVzdC5zbGljZSgwLCBob3N0RW5kKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZShob3N0RW5kKTtcblxuICAgIC8vIHB1bGwgb3V0IHBvcnQuXG4gICAgcGFyc2VIb3N0KHNlbGYpO1xuXG4gICAgLy8gd2UndmUgaW5kaWNhdGVkIHRoYXQgdGhlcmUgaXMgYSBob3N0bmFtZSxcbiAgICAvLyBzbyBldmVuIGlmIGl0J3MgZW1wdHksIGl0IGhhcyB0byBiZSBwcmVzZW50LlxuICAgIHNlbGYuaG9zdG5hbWUgPSBzZWxmLmhvc3RuYW1lIHx8ICcnO1xuXG4gICAgLy8gaWYgaG9zdG5hbWUgYmVnaW5zIHdpdGggWyBhbmQgZW5kcyB3aXRoIF1cbiAgICAvLyBhc3N1bWUgdGhhdCBpdCdzIGFuIElQdjYgYWRkcmVzcy5cbiAgICB2YXIgaXB2Nkhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZVswXSA9PT0gJ1snICYmXG4gICAgICBzZWxmLmhvc3RuYW1lW3NlbGYuaG9zdG5hbWUubGVuZ3RoIC0gMV0gPT09ICddJztcblxuICAgIC8vIHZhbGlkYXRlIGEgbGl0dGxlLlxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB2YXIgaG9zdHBhcnRzID0gc2VsZi5ob3N0bmFtZS5zcGxpdCgvXFwuLyk7XG4gICAgICBmb3IgKGkgPSAwLCBsID0gaG9zdHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB2YXIgcGFydCA9IGhvc3RwYXJ0c1tpXTtcbiAgICAgICAgaWYgKCFwYXJ0KSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgdmFyIG5ld3BhcnQgPSAnJztcbiAgICAgICAgICBmb3IgKHZhciBqID0gMCwgayA9IHBhcnQubGVuZ3RoOyBqIDwgazsgaisrKSB7XG4gICAgICAgICAgICBpZiAocGFydC5jaGFyQ29kZUF0KGopID4gMTI3KSB7XG4gICAgICAgICAgICAgIC8vIHdlIHJlcGxhY2Ugbm9uLUFTQ0lJIGNoYXIgd2l0aCBhIHRlbXBvcmFyeSBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRoaXMgdG8gbWFrZSBzdXJlIHNpemUgb2YgaG9zdG5hbWUgaXMgbm90XG4gICAgICAgICAgICAgIC8vIGJyb2tlbiBieSByZXBsYWNpbmcgbm9uLUFTQ0lJIGJ5IG5vdGhpbmdcbiAgICAgICAgICAgICAgbmV3cGFydCArPSAneCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9IHBhcnRbal07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHdlIHRlc3QgYWdhaW4gd2l0aCBBU0NJSSBjaGFyIG9ubHlcbiAgICAgICAgICBpZiAoIW5ld3BhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICAgIHZhciB2YWxpZFBhcnRzID0gaG9zdHBhcnRzLnNsaWNlKDAsIGkpO1xuICAgICAgICAgICAgdmFyIG5vdEhvc3QgPSBob3N0cGFydHMuc2xpY2UoaSArIDEpO1xuICAgICAgICAgICAgdmFyIGJpdCA9IHBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0U3RhcnQpO1xuICAgICAgICAgICAgaWYgKGJpdCkge1xuICAgICAgICAgICAgICB2YWxpZFBhcnRzLnB1c2goYml0WzFdKTtcbiAgICAgICAgICAgICAgbm90SG9zdC51bnNoaWZ0KGJpdFsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm90SG9zdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmVzdCA9ICcvJyArIG5vdEhvc3Quam9pbignLicpICsgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuaG9zdG5hbWUgPSB2YWxpZFBhcnRzLmpvaW4oJy4nKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzZWxmLmhvc3RuYW1lLmxlbmd0aCA+IGhvc3RuYW1lTWF4TGVuKSB7XG4gICAgICBzZWxmLmhvc3RuYW1lID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhvc3RuYW1lcyBhcmUgYWx3YXlzIGxvd2VyIGNhc2UuXG4gICAgICBzZWxmLmhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICAvLyBJRE5BIFN1cHBvcnQ6IFJldHVybnMgYSBwdW55Y29kZWQgcmVwcmVzZW50YXRpb24gb2YgXCJkb21haW5cIi5cbiAgICAgIC8vIEl0IG9ubHkgY29udmVydHMgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHRoYXRcbiAgICAgIC8vIGhhdmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWZcbiAgICAgIC8vIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCBhbHJlYWR5IGlzIEFTQ0lJLW9ubHkuXG4gICAgICBzZWxmLmhvc3RuYW1lID0gdG9BU0NJSShzZWxmLmhvc3RuYW1lKTtcbiAgICB9XG5cbiAgICBwID0gc2VsZi5wb3J0ID8gJzonICsgc2VsZi5wb3J0IDogJyc7XG4gICAgdmFyIGggPSBzZWxmLmhvc3RuYW1lIHx8ICcnO1xuICAgIHNlbGYuaG9zdCA9IGggKyBwO1xuICAgIHNlbGYuaHJlZiArPSBzZWxmLmhvc3Q7XG5cbiAgICAvLyBzdHJpcCBbIGFuZCBdIGZyb20gdGhlIGhvc3RuYW1lXG4gICAgLy8gdGhlIGhvc3QgZmllbGQgc3RpbGwgcmV0YWlucyB0aGVtLCB0aG91Z2hcbiAgICBpZiAoaXB2Nkhvc3RuYW1lKSB7XG4gICAgICBzZWxmLmhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZS5zdWJzdHIoMSwgc2VsZi5ob3N0bmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIGlmIChyZXN0WzBdICE9PSAnLycpIHtcbiAgICAgICAgcmVzdCA9ICcvJyArIHJlc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gbm93IHJlc3QgaXMgc2V0IHRvIHRoZSBwb3N0LWhvc3Qgc3R1ZmYuXG4gIC8vIGNob3Agb2ZmIGFueSBkZWxpbSBjaGFycy5cbiAgaWYgKCF1bnNhZmVQcm90b2NvbFtsb3dlclByb3RvXSkge1xuXG4gICAgLy8gRmlyc3QsIG1ha2UgMTAwJSBzdXJlIHRoYXQgYW55IFwiYXV0b0VzY2FwZVwiIGNoYXJzIGdldFxuICAgIC8vIGVzY2FwZWQsIGV2ZW4gaWYgZW5jb2RlVVJJQ29tcG9uZW50IGRvZXNuJ3QgdGhpbmsgdGhleVxuICAgIC8vIG5lZWQgdG8gYmUuXG4gICAgZm9yIChpID0gMCwgbCA9IGF1dG9Fc2NhcGUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYWUgPSBhdXRvRXNjYXBlW2ldO1xuICAgICAgaWYgKHJlc3QuaW5kZXhPZihhZSkgPT09IC0xKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIHZhciBlc2MgPSBlbmNvZGVVUklDb21wb25lbnQoYWUpO1xuICAgICAgaWYgKGVzYyA9PT0gYWUpIHtcbiAgICAgICAgZXNjID0gZXNjYXBlKGFlKTtcbiAgICAgIH1cbiAgICAgIHJlc3QgPSByZXN0LnNwbGl0KGFlKS5qb2luKGVzYyk7XG4gICAgfVxuICB9XG5cblxuICAvLyBjaG9wIG9mZiBmcm9tIHRoZSB0YWlsIGZpcnN0LlxuICB2YXIgaGFzaCA9IHJlc3QuaW5kZXhPZignIycpO1xuICBpZiAoaGFzaCAhPT0gLTEpIHtcbiAgICAvLyBnb3QgYSBmcmFnbWVudCBzdHJpbmcuXG4gICAgc2VsZi5oYXNoID0gcmVzdC5zdWJzdHIoaGFzaCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgaGFzaCk7XG4gIH1cbiAgdmFyIHFtID0gcmVzdC5pbmRleE9mKCc/Jyk7XG4gIGlmIChxbSAhPT0gLTEpIHtcbiAgICBzZWxmLnNlYXJjaCA9IHJlc3Quc3Vic3RyKHFtKTtcbiAgICBzZWxmLnF1ZXJ5ID0gcmVzdC5zdWJzdHIocW0gKyAxKTtcbiAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgc2VsZi5xdWVyeSA9IHFzUGFyc2Uoc2VsZi5xdWVyeSk7XG4gICAgfVxuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIHFtKTtcbiAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgLy8gbm8gcXVlcnkgc3RyaW5nLCBidXQgcGFyc2VRdWVyeVN0cmluZyBzdGlsbCByZXF1ZXN0ZWRcbiAgICBzZWxmLnNlYXJjaCA9ICcnO1xuICAgIHNlbGYucXVlcnkgPSB7fTtcbiAgfVxuICBpZiAocmVzdCkgc2VsZi5wYXRobmFtZSA9IHJlc3Q7XG4gIGlmIChzbGFzaGVkUHJvdG9jb2xbbG93ZXJQcm90b10gJiZcbiAgICBzZWxmLmhvc3RuYW1lICYmICFzZWxmLnBhdGhuYW1lKSB7XG4gICAgc2VsZi5wYXRobmFtZSA9ICcvJztcbiAgfVxuXG4gIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgaWYgKHNlbGYucGF0aG5hbWUgfHwgc2VsZi5zZWFyY2gpIHtcbiAgICBwID0gc2VsZi5wYXRobmFtZSB8fCAnJztcbiAgICB2YXIgcyA9IHNlbGYuc2VhcmNoIHx8ICcnO1xuICAgIHNlbGYucGF0aCA9IHAgKyBzO1xuICB9XG5cbiAgLy8gZmluYWxseSwgcmVjb25zdHJ1Y3QgdGhlIGhyZWYgYmFzZWQgb24gd2hhdCBoYXMgYmVlbiB2YWxpZGF0ZWQuXG4gIHNlbGYuaHJlZiA9IGZvcm1hdChzZWxmKTtcbiAgcmV0dXJuIHNlbGY7XG59XG5cbi8vIGZvcm1hdCBhIHBhcnNlZCBvYmplY3QgaW50byBhIHVybCBzdHJpbmdcbmZ1bmN0aW9uIHVybEZvcm1hdChvYmopIHtcbiAgLy8gZW5zdXJlIGl0J3MgYW4gb2JqZWN0LCBhbmQgbm90IGEgc3RyaW5nIHVybC5cbiAgLy8gSWYgaXQncyBhbiBvYmosIHRoaXMgaXMgYSBuby1vcC5cbiAgLy8gdGhpcyB3YXksIHlvdSBjYW4gY2FsbCB1cmxfZm9ybWF0KCkgb24gc3RyaW5nc1xuICAvLyB0byBjbGVhbiB1cCBwb3RlbnRpYWxseSB3b25reSB1cmxzLlxuICBpZiAoaXNTdHJpbmcob2JqKSkgb2JqID0gcGFyc2Uoe30sIG9iaik7XG4gIHJldHVybiBmb3JtYXQob2JqKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0KHNlbGYpIHtcbiAgdmFyIGF1dGggPSBzZWxmLmF1dGggfHwgJyc7XG4gIGlmIChhdXRoKSB7XG4gICAgYXV0aCA9IGVuY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICBhdXRoID0gYXV0aC5yZXBsYWNlKC8lM0EvaSwgJzonKTtcbiAgICBhdXRoICs9ICdAJztcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHNlbGYucHJvdG9jb2wgfHwgJycsXG4gICAgcGF0aG5hbWUgPSBzZWxmLnBhdGhuYW1lIHx8ICcnLFxuICAgIGhhc2ggPSBzZWxmLmhhc2ggfHwgJycsXG4gICAgaG9zdCA9IGZhbHNlLFxuICAgIHF1ZXJ5ID0gJyc7XG5cbiAgaWYgKHNlbGYuaG9zdCkge1xuICAgIGhvc3QgPSBhdXRoICsgc2VsZi5ob3N0O1xuICB9IGVsc2UgaWYgKHNlbGYuaG9zdG5hbWUpIHtcbiAgICBob3N0ID0gYXV0aCArIChzZWxmLmhvc3RuYW1lLmluZGV4T2YoJzonKSA9PT0gLTEgP1xuICAgICAgc2VsZi5ob3N0bmFtZSA6XG4gICAgICAnWycgKyB0aGlzLmhvc3RuYW1lICsgJ10nKTtcbiAgICBpZiAoc2VsZi5wb3J0KSB7XG4gICAgICBob3N0ICs9ICc6JyArIHNlbGYucG9ydDtcbiAgICB9XG4gIH1cblxuICBpZiAoc2VsZi5xdWVyeSAmJlxuICAgIGlzT2JqZWN0KHNlbGYucXVlcnkpICYmXG4gICAgT2JqZWN0LmtleXMoc2VsZi5xdWVyeSkubGVuZ3RoKSB7XG4gICAgcXVlcnkgPSBxc1N0cmluZ2lmeShzZWxmLnF1ZXJ5KTtcbiAgfVxuXG4gIHZhciBzZWFyY2ggPSBzZWxmLnNlYXJjaCB8fCAocXVlcnkgJiYgKCc/JyArIHF1ZXJ5KSkgfHwgJyc7XG5cbiAgaWYgKHByb3RvY29sICYmIHByb3RvY29sLnN1YnN0cigtMSkgIT09ICc6JykgcHJvdG9jb2wgKz0gJzonO1xuXG4gIC8vIG9ubHkgdGhlIHNsYXNoZWRQcm90b2NvbHMgZ2V0IHRoZSAvLy4gIE5vdCBtYWlsdG86LCB4bXBwOiwgZXRjLlxuICAvLyB1bmxlc3MgdGhleSBoYWQgdGhlbSB0byBiZWdpbiB3aXRoLlxuICBpZiAoc2VsZi5zbGFzaGVzIHx8XG4gICAgKCFwcm90b2NvbCB8fCBzbGFzaGVkUHJvdG9jb2xbcHJvdG9jb2xdKSAmJiBob3N0ICE9PSBmYWxzZSkge1xuICAgIGhvc3QgPSAnLy8nICsgKGhvc3QgfHwgJycpO1xuICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykgcGF0aG5hbWUgPSAnLycgKyBwYXRobmFtZTtcbiAgfSBlbHNlIGlmICghaG9zdCkge1xuICAgIGhvc3QgPSAnJztcbiAgfVxuXG4gIGlmIChoYXNoICYmIGhhc2guY2hhckF0KDApICE9PSAnIycpIGhhc2ggPSAnIycgKyBoYXNoO1xuICBpZiAoc2VhcmNoICYmIHNlYXJjaC5jaGFyQXQoMCkgIT09ICc/Jykgc2VhcmNoID0gJz8nICsgc2VhcmNoO1xuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQobWF0Y2gpO1xuICB9KTtcbiAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoJyMnLCAnJTIzJyk7XG5cbiAgcmV0dXJuIHByb3RvY29sICsgaG9zdCArIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbn1cblxuVXJsLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGZvcm1hdCh0aGlzKTtcbn1cblxuZnVuY3Rpb24gdXJsUmVzb2x2ZShzb3VyY2UsIHJlbGF0aXZlKSB7XG4gIHJldHVybiB1cmxQYXJzZShzb3VyY2UsIGZhbHNlLCB0cnVlKS5yZXNvbHZlKHJlbGF0aXZlKTtcbn1cblxuVXJsLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24ocmVsYXRpdmUpIHtcbiAgcmV0dXJuIHRoaXMucmVzb2x2ZU9iamVjdCh1cmxQYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpKS5mb3JtYXQoKTtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmVPYmplY3Qoc291cmNlLCByZWxhdGl2ZSkge1xuICBpZiAoIXNvdXJjZSkgcmV0dXJuIHJlbGF0aXZlO1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZU9iamVjdChyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZU9iamVjdCA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIGlmIChpc1N0cmluZyhyZWxhdGl2ZSkpIHtcbiAgICB2YXIgcmVsID0gbmV3IFVybCgpO1xuICAgIHJlbC5wYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpO1xuICAgIHJlbGF0aXZlID0gcmVsO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyBVcmwoKTtcbiAgdmFyIHRrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG4gIGZvciAodmFyIHRrID0gMDsgdGsgPCB0a2V5cy5sZW5ndGg7IHRrKyspIHtcbiAgICB2YXIgdGtleSA9IHRrZXlzW3RrXTtcbiAgICByZXN1bHRbdGtleV0gPSB0aGlzW3RrZXldO1xuICB9XG5cbiAgLy8gaGFzaCBpcyBhbHdheXMgb3ZlcnJpZGRlbiwgbm8gbWF0dGVyIHdoYXQuXG4gIC8vIGV2ZW4gaHJlZj1cIlwiIHdpbGwgcmVtb3ZlIGl0LlxuICByZXN1bHQuaGFzaCA9IHJlbGF0aXZlLmhhc2g7XG5cbiAgLy8gaWYgdGhlIHJlbGF0aXZlIHVybCBpcyBlbXB0eSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkbyBoZXJlLlxuICBpZiAocmVsYXRpdmUuaHJlZiA9PT0gJycpIHtcbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaHJlZnMgbGlrZSAvL2Zvby9iYXIgYWx3YXlzIGN1dCB0byB0aGUgcHJvdG9jb2wuXG4gIGlmIChyZWxhdGl2ZS5zbGFzaGVzICYmICFyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgIC8vIHRha2UgZXZlcnl0aGluZyBleGNlcHQgdGhlIHByb3RvY29sIGZyb20gcmVsYXRpdmVcbiAgICB2YXIgcmtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgZm9yICh2YXIgcmsgPSAwOyByayA8IHJrZXlzLmxlbmd0aDsgcmsrKykge1xuICAgICAgdmFyIHJrZXkgPSBya2V5c1tya107XG4gICAgICBpZiAocmtleSAhPT0gJ3Byb3RvY29sJylcbiAgICAgICAgcmVzdWx0W3JrZXldID0gcmVsYXRpdmVbcmtleV07XG4gICAgfVxuXG4gICAgLy91cmxQYXJzZSBhcHBlbmRzIHRyYWlsaW5nIC8gdG8gdXJscyBsaWtlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb21cbiAgICBpZiAoc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF0gJiZcbiAgICAgIHJlc3VsdC5ob3N0bmFtZSAmJiAhcmVzdWx0LnBhdGhuYW1lKSB7XG4gICAgICByZXN1bHQucGF0aCA9IHJlc3VsdC5wYXRobmFtZSA9ICcvJztcbiAgICB9XG5cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHZhciByZWxQYXRoO1xuICBpZiAocmVsYXRpdmUucHJvdG9jb2wgJiYgcmVsYXRpdmUucHJvdG9jb2wgIT09IHJlc3VsdC5wcm90b2NvbCkge1xuICAgIC8vIGlmIGl0J3MgYSBrbm93biB1cmwgcHJvdG9jb2wsIHRoZW4gY2hhbmdpbmdcbiAgICAvLyB0aGUgcHJvdG9jb2wgZG9lcyB3ZWlyZCB0aGluZ3NcbiAgICAvLyBmaXJzdCwgaWYgaXQncyBub3QgZmlsZTosIHRoZW4gd2UgTVVTVCBoYXZlIGEgaG9zdCxcbiAgICAvLyBhbmQgaWYgdGhlcmUgd2FzIGEgcGF0aFxuICAgIC8vIHRvIGJlZ2luIHdpdGgsIHRoZW4gd2UgTVVTVCBoYXZlIGEgcGF0aC5cbiAgICAvLyBpZiBpdCBpcyBmaWxlOiwgdGhlbiB0aGUgaG9zdCBpcyBkcm9wcGVkLFxuICAgIC8vIGJlY2F1c2UgdGhhdCdzIGtub3duIHRvIGJlIGhvc3RsZXNzLlxuICAgIC8vIGFueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhYnNvbHV0ZS5cbiAgICBpZiAoIXNsYXNoZWRQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgICAgIHZhciBrID0ga2V5c1t2XTtcbiAgICAgICAgcmVzdWx0W2tdID0gcmVsYXRpdmVba107XG4gICAgICB9XG4gICAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0LnByb3RvY29sID0gcmVsYXRpdmUucHJvdG9jb2w7XG4gICAgaWYgKCFyZWxhdGl2ZS5ob3N0ICYmICFob3N0bGVzc1Byb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgcmVsUGF0aCA9IChyZWxhdGl2ZS5wYXRobmFtZSB8fCAnJykuc3BsaXQoJy8nKTtcbiAgICAgIHdoaWxlIChyZWxQYXRoLmxlbmd0aCAmJiAhKHJlbGF0aXZlLmhvc3QgPSByZWxQYXRoLnNoaWZ0KCkpKTtcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdCkgcmVsYXRpdmUuaG9zdCA9ICcnO1xuICAgICAgaWYgKCFyZWxhdGl2ZS5ob3N0bmFtZSkgcmVsYXRpdmUuaG9zdG5hbWUgPSAnJztcbiAgICAgIGlmIChyZWxQYXRoWzBdICE9PSAnJykgcmVsUGF0aC51bnNoaWZ0KCcnKTtcbiAgICAgIGlmIChyZWxQYXRoLmxlbmd0aCA8IDIpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICByZXN1bHQucGF0aG5hbWUgPSByZWxQYXRoLmpvaW4oJy8nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsYXRpdmUucGF0aG5hbWU7XG4gICAgfVxuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgcmVzdWx0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0IHx8ICcnO1xuICAgIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZWxhdGl2ZS5ob3N0bmFtZSB8fCByZWxhdGl2ZS5ob3N0O1xuICAgIHJlc3VsdC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAvLyB0byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQucGF0aG5hbWUgfHwgcmVzdWx0LnNlYXJjaCkge1xuICAgICAgdmFyIHAgPSByZXN1bHQucGF0aG5hbWUgfHwgJyc7XG4gICAgICB2YXIgcyA9IHJlc3VsdC5zZWFyY2ggfHwgJyc7XG4gICAgICByZXN1bHQucGF0aCA9IHAgKyBzO1xuICAgIH1cbiAgICByZXN1bHQuc2xhc2hlcyA9IHJlc3VsdC5zbGFzaGVzIHx8IHJlbGF0aXZlLnNsYXNoZXM7XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBpc1NvdXJjZUFicyA9IChyZXN1bHQucGF0aG5hbWUgJiYgcmVzdWx0LnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSxcbiAgICBpc1JlbEFicyA9IChcbiAgICAgIHJlbGF0aXZlLmhvc3QgfHxcbiAgICAgIHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nXG4gICAgKSxcbiAgICBtdXN0RW5kQWJzID0gKGlzUmVsQWJzIHx8IGlzU291cmNlQWJzIHx8XG4gICAgICAocmVzdWx0Lmhvc3QgJiYgcmVsYXRpdmUucGF0aG5hbWUpKSxcbiAgICByZW1vdmVBbGxEb3RzID0gbXVzdEVuZEFicyxcbiAgICBzcmNQYXRoID0gcmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgIHBzeWNob3RpYyA9IHJlc3VsdC5wcm90b2NvbCAmJiAhc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF07XG4gIHJlbFBhdGggPSByZWxhdGl2ZS5wYXRobmFtZSAmJiByZWxhdGl2ZS5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdO1xuICAvLyBpZiB0aGUgdXJsIGlzIGEgbm9uLXNsYXNoZWQgdXJsLCB0aGVuIHJlbGF0aXZlXG4gIC8vIGxpbmtzIGxpa2UgLi4vLi4gc2hvdWxkIGJlIGFibGVcbiAgLy8gdG8gY3Jhd2wgdXAgdG8gdGhlIGhvc3RuYW1lLCBhcyB3ZWxsLiAgVGhpcyBpcyBzdHJhbmdlLlxuICAvLyByZXN1bHQucHJvdG9jb2wgaGFzIGFscmVhZHkgYmVlbiBzZXQgYnkgbm93LlxuICAvLyBMYXRlciBvbiwgcHV0IHRoZSBmaXJzdCBwYXRoIHBhcnQgaW50byB0aGUgaG9zdCBmaWVsZC5cbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9ICcnO1xuICAgIHJlc3VsdC5wb3J0ID0gbnVsbDtcbiAgICBpZiAocmVzdWx0Lmhvc3QpIHtcbiAgICAgIGlmIChzcmNQYXRoWzBdID09PSAnJykgc3JjUGF0aFswXSA9IHJlc3VsdC5ob3N0O1xuICAgICAgZWxzZSBzcmNQYXRoLnVuc2hpZnQocmVzdWx0Lmhvc3QpO1xuICAgIH1cbiAgICByZXN1bHQuaG9zdCA9ICcnO1xuICAgIGlmIChyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgPSBudWxsO1xuICAgICAgcmVsYXRpdmUucG9ydCA9IG51bGw7XG4gICAgICBpZiAocmVsYXRpdmUuaG9zdCkge1xuICAgICAgICBpZiAocmVsUGF0aFswXSA9PT0gJycpIHJlbFBhdGhbMF0gPSByZWxhdGl2ZS5ob3N0O1xuICAgICAgICBlbHNlIHJlbFBhdGgudW5zaGlmdChyZWxhdGl2ZS5ob3N0KTtcbiAgICAgIH1cbiAgICAgIHJlbGF0aXZlLmhvc3QgPSBudWxsO1xuICAgIH1cbiAgICBtdXN0RW5kQWJzID0gbXVzdEVuZEFicyAmJiAocmVsUGF0aFswXSA9PT0gJycgfHwgc3JjUGF0aFswXSA9PT0gJycpO1xuICB9XG4gIHZhciBhdXRoSW5Ib3N0O1xuICBpZiAoaXNSZWxBYnMpIHtcbiAgICAvLyBpdCdzIGFic29sdXRlLlxuICAgIHJlc3VsdC5ob3N0ID0gKHJlbGF0aXZlLmhvc3QgfHwgcmVsYXRpdmUuaG9zdCA9PT0gJycpID9cbiAgICAgIHJlbGF0aXZlLmhvc3QgOiByZXN1bHQuaG9zdDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAocmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdG5hbWUgPT09ICcnKSA/XG4gICAgICByZWxhdGl2ZS5ob3N0bmFtZSA6IHJlc3VsdC5ob3N0bmFtZTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHNyY1BhdGggPSByZWxQYXRoO1xuICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgZG90LWhhbmRsaW5nIGJlbG93LlxuICB9IGVsc2UgaWYgKHJlbFBhdGgubGVuZ3RoKSB7XG4gICAgLy8gaXQncyByZWxhdGl2ZVxuICAgIC8vIHRocm93IGF3YXkgdGhlIGV4aXN0aW5nIGZpbGUsIGFuZCB0YWtlIHRoZSBuZXcgcGF0aCBpbnN0ZWFkLlxuICAgIGlmICghc3JjUGF0aCkgc3JjUGF0aCA9IFtdO1xuICAgIHNyY1BhdGgucG9wKCk7XG4gICAgc3JjUGF0aCA9IHNyY1BhdGguY29uY2F0KHJlbFBhdGgpO1xuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gIH0gZWxzZSBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHJlbGF0aXZlLnNlYXJjaCkpIHtcbiAgICAvLyBqdXN0IHB1bGwgb3V0IHRoZSBzZWFyY2guXG4gICAgLy8gbGlrZSBocmVmPSc/Zm9vJy5cbiAgICAvLyBQdXQgdGhpcyBhZnRlciB0aGUgb3RoZXIgdHdvIGNhc2VzIGJlY2F1c2UgaXQgc2ltcGxpZmllcyB0aGUgYm9vbGVhbnNcbiAgICBpZiAocHN5Y2hvdGljKSB7XG4gICAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IHNyY1BhdGguc2hpZnQoKTtcbiAgICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgICAgLy91cmwucmVzb2x2ZU9iamVjdCgnbWFpbHRvOmxvY2FsMUBkb21haW4xJywgJ2xvY2FsMkBkb21haW4yJylcbiAgICAgIGF1dGhJbkhvc3QgPSByZXN1bHQuaG9zdCAmJiByZXN1bHQuaG9zdC5pbmRleE9mKCdAJykgPiAwID9cbiAgICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgICAgaWYgKGF1dGhJbkhvc3QpIHtcbiAgICAgICAgcmVzdWx0LmF1dGggPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAoIWlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICFpc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gKHJlc3VsdC5wYXRobmFtZSA/IHJlc3VsdC5wYXRobmFtZSA6ICcnKSArXG4gICAgICAgIChyZXN1bHQuc2VhcmNoID8gcmVzdWx0LnNlYXJjaCA6ICcnKTtcbiAgICB9XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlmICghc3JjUGF0aC5sZW5ndGgpIHtcbiAgICAvLyBubyBwYXRoIGF0IGFsbC4gIGVhc3kuXG4gICAgLy8gd2UndmUgYWxyZWFkeSBoYW5kbGVkIHRoZSBvdGhlciBzdHVmZiBhYm92ZS5cbiAgICByZXN1bHQucGF0aG5hbWUgPSBudWxsO1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnNlYXJjaCkge1xuICAgICAgcmVzdWx0LnBhdGggPSAnLycgKyByZXN1bHQuc2VhcmNoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucGF0aCA9IG51bGw7XG4gICAgfVxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBpZiBhIHVybCBFTkRzIGluIC4gb3IgLi4sIHRoZW4gaXQgbXVzdCBnZXQgYSB0cmFpbGluZyBzbGFzaC5cbiAgLy8gaG93ZXZlciwgaWYgaXQgZW5kcyBpbiBhbnl0aGluZyBlbHNlIG5vbi1zbGFzaHksXG4gIC8vIHRoZW4gaXQgbXVzdCBOT1QgZ2V0IGEgdHJhaWxpbmcgc2xhc2guXG4gIHZhciBsYXN0ID0gc3JjUGF0aC5zbGljZSgtMSlbMF07XG4gIHZhciBoYXNUcmFpbGluZ1NsYXNoID0gKFxuICAgIChyZXN1bHQuaG9zdCB8fCByZWxhdGl2ZS5ob3N0IHx8IHNyY1BhdGgubGVuZ3RoID4gMSkgJiZcbiAgICAobGFzdCA9PT0gJy4nIHx8IGxhc3QgPT09ICcuLicpIHx8IGxhc3QgPT09ICcnKTtcblxuICAvLyBzdHJpcCBzaW5nbGUgZG90cywgcmVzb2x2ZSBkb3VibGUgZG90cyB0byBwYXJlbnQgZGlyXG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBzcmNQYXRoLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBsYXN0ID0gc3JjUGF0aFtpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoIW11c3RFbmRBYnMgJiYgIXJlbW92ZUFsbERvdHMpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHNyY1BhdGgudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAobXVzdEVuZEFicyAmJiBzcmNQYXRoWzBdICE9PSAnJyAmJlxuICAgICghc3JjUGF0aFswXSB8fCBzcmNQYXRoWzBdLmNoYXJBdCgwKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgudW5zaGlmdCgnJyk7XG4gIH1cblxuICBpZiAoaGFzVHJhaWxpbmdTbGFzaCAmJiAoc3JjUGF0aC5qb2luKCcvJykuc3Vic3RyKC0xKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgucHVzaCgnJyk7XG4gIH1cblxuICB2YXIgaXNBYnNvbHV0ZSA9IHNyY1BhdGhbMF0gPT09ICcnIHx8XG4gICAgKHNyY1BhdGhbMF0gJiYgc3JjUGF0aFswXS5jaGFyQXQoMCkgPT09ICcvJyk7XG5cbiAgLy8gcHV0IHRoZSBob3N0IGJhY2tcbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9IHJlc3VsdC5ob3N0ID0gaXNBYnNvbHV0ZSA/ICcnIDpcbiAgICAgIHNyY1BhdGgubGVuZ3RoID8gc3JjUGF0aC5zaGlmdCgpIDogJyc7XG4gICAgLy9vY2NhdGlvbmFseSB0aGUgYXV0aCBjYW4gZ2V0IHN0dWNrIG9ubHkgaW4gaG9zdFxuICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgIC8vdXJsLnJlc29sdmVPYmplY3QoJ21haWx0bzpsb2NhbDFAZG9tYWluMScsICdsb2NhbDJAZG9tYWluMicpXG4gICAgYXV0aEluSG9zdCA9IHJlc3VsdC5ob3N0ICYmIHJlc3VsdC5ob3N0LmluZGV4T2YoJ0AnKSA+IDAgP1xuICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICByZXN1bHQuYXV0aCA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgIH1cbiAgfVxuXG4gIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzIHx8IChyZXN1bHQuaG9zdCAmJiBzcmNQYXRoLmxlbmd0aCk7XG5cbiAgaWYgKG11c3RFbmRBYnMgJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBzcmNQYXRoLnVuc2hpZnQoJycpO1xuICB9XG5cbiAgaWYgKCFzcmNQYXRoLmxlbmd0aCkge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IG51bGw7XG4gICAgcmVzdWx0LnBhdGggPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IHNyY1BhdGguam9pbignLycpO1xuICB9XG5cbiAgLy90byBzdXBwb3J0IHJlcXVlc3QuaHR0cFxuICBpZiAoIWlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICFpc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICB9XG4gIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aCB8fCByZXN1bHQuYXV0aDtcbiAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwYXJzZUhvc3QodGhpcyk7XG59O1xuXG5mdW5jdGlvbiBwYXJzZUhvc3Qoc2VsZikge1xuICB2YXIgaG9zdCA9IHNlbGYuaG9zdDtcbiAgdmFyIHBvcnQgPSBwb3J0UGF0dGVybi5leGVjKGhvc3QpO1xuICBpZiAocG9ydCkge1xuICAgIHBvcnQgPSBwb3J0WzBdO1xuICAgIGlmIChwb3J0ICE9PSAnOicpIHtcbiAgICAgIHNlbGYucG9ydCA9IHBvcnQuc3Vic3RyKDEpO1xuICAgIH1cbiAgICBob3N0ID0gaG9zdC5zdWJzdHIoMCwgaG9zdC5sZW5ndGggLSBwb3J0Lmxlbmd0aCk7XG4gIH1cbiAgaWYgKGhvc3QpIHNlbGYuaG9zdG5hbWUgPSBob3N0O1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCd1cmwnKSxcbiAgICBmb3JtYXQgPSBfcmVxdWlyZS5mb3JtYXQsXG4gICAgcGFyc2UgPSBfcmVxdWlyZS5wYXJzZSxcbiAgICBVUkxTZWFyY2hQYXJhbXMgPSBfcmVxdWlyZS5VUkxTZWFyY2hQYXJhbXM7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGx1Z2luKG9wdHMpIHtcbiAgaWYgKF90eXBlb2Yob3B0cykgIT09ICdvYmplY3QnIHx8ICFPYmplY3Qua2V5cyhvcHRzKS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbWFyay1pZnJhbWVzIG5lZWRzIHRvIGJlIHBhc3NlZCBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGFzIG9wdGlvbicpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGV0ZWN0UHJvdmlkZXIodXJsKSB7XG4gICAgdmFyIGhvc3RuYW1lID0gcGFyc2UodXJsKS5ob3N0bmFtZTtcbiAgICByZXR1cm4gb3B0c1tob3N0bmFtZV07XG4gIH1cblxuICBmdW5jdGlvbiBibG9ja1Rva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoJyEoaHR0cCcpKSByZXR1cm47XG4gICAgdmFyIGVhdGVuVmFsdWUgPSAnJztcbiAgICB2YXIgdXJsID0gJyc7XG4gICAgdmFyIHNwZWNpYWxDaGFycyA9IFsnIScsICcoJywgJyknXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoICYmIHZhbHVlW2kgLSAxXSAhPT0gJyknOyBpKyspIHtcbiAgICAgIGVhdGVuVmFsdWUgKz0gdmFsdWVbaV07XG5cbiAgICAgIGlmICghc3BlY2lhbENoYXJzLmluY2x1ZGVzKHZhbHVlW2ldKSkge1xuICAgICAgICB1cmwgKz0gdmFsdWVbaV07XG4gICAgICB9XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cblxuXG4gICAgaWYgKHNpbGVudCkgcmV0dXJuIHRydWU7XG4gICAgdmFyIHByb3ZpZGVyID0gZGV0ZWN0UHJvdmlkZXIodXJsKTtcblxuICAgIGlmICghcHJvdmlkZXIgfHwgcHJvdmlkZXIuZGlzYWJsZWQgPT09IHRydWUgfHwgcHJvdmlkZXIubWF0Y2ggJiYgcHJvdmlkZXIubWF0Y2ggaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXByb3ZpZGVyLm1hdGNoLnRlc3QodXJsKSkge1xuICAgICAgcmV0dXJuIGVhdChlYXRlblZhbHVlKSh7XG4gICAgICAgIHR5cGU6ICdwYXJhZ3JhcGgnLFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdmFsdWU6IGVhdGVuVmFsdWVcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmaW5hbFVybCA9IGNvbXB1dGVGaW5hbFVybChwcm92aWRlciwgdXJsKTtcbiAgICB2YXIgdGh1bWJuYWlsID0gY29tcHV0ZVRodW1ibmFpbChwcm92aWRlciwgZmluYWxVcmwpO1xuICAgIGVhdChlYXRlblZhbHVlKSh7XG4gICAgICB0eXBlOiAnaWZyYW1lJyxcbiAgICAgIHNyYzogdXJsLFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogcHJvdmlkZXIudGFnLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIHNyYzogZmluYWxVcmwsXG4gICAgICAgICAgd2lkdGg6IHByb3ZpZGVyLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogcHJvdmlkZXIuaGVpZ2h0LFxuICAgICAgICAgIGFsbG93ZnVsbHNjcmVlbjogdHJ1ZSxcbiAgICAgICAgICBmcmFtZWJvcmRlcjogJzAnXG4gICAgICAgIH0sXG4gICAgICAgIHRodW1ibmFpbDogdGh1bWJuYWlsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBibG9ja1Rva2VuaXplclxuXG4gIHZhciBibG9ja1Rva2VuaXplcnMgPSBQYXJzZXIucHJvdG90eXBlLmJsb2NrVG9rZW5pemVycztcbiAgdmFyIGJsb2NrTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tNZXRob2RzO1xuICBibG9ja1Rva2VuaXplcnMuaWZyYW1lcyA9IGJsb2NrVG9rZW5pemVyO1xuICBibG9ja01ldGhvZHMuc3BsaWNlKGJsb2NrTWV0aG9kcy5pbmRleE9mKCdibG9ja3F1b3RlJykgKyAxLCAwLCAnaWZyYW1lcycpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyO1xuXG4gIGlmIChDb21waWxlcikge1xuICAgIHZhciB2aXNpdG9ycyA9IENvbXBpbGVyLnByb3RvdHlwZS52aXNpdG9ycztcbiAgICBpZiAoIXZpc2l0b3JzKSByZXR1cm47XG5cbiAgICB2aXNpdG9ycy5pZnJhbWUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIFwiIShcIi5jb25jYXQobm9kZS5zcmMsIFwiKVwiKTtcbiAgICB9O1xuICB9XG59O1xuXG5mdW5jdGlvbiBjb21wdXRlRmluYWxVcmwocHJvdmlkZXIsIHVybCkge1xuICB2YXIgZmluYWxVcmwgPSB1cmw7XG4gIHZhciBwYXJzZWQgPSBwYXJzZShmaW5hbFVybCk7XG5cbiAgaWYgKHByb3ZpZGVyLmRyb3BwZWRRdWVyeVBhcmFtZXRlcnMgJiYgcGFyc2VkLnNlYXJjaCkge1xuICAgIHZhciBzZWFyY2ggPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcnNlZC5zZWFyY2gpO1xuICAgIHByb3ZpZGVyLmRyb3BwZWRRdWVyeVBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbiAoaWdub3JlZCkge1xuICAgICAgcmV0dXJuIHNlYXJjaFtcImRlbGV0ZVwiXShpZ25vcmVkKTtcbiAgICB9KTtcbiAgICBwYXJzZWQuc2VhcmNoID0gc2VhcmNoLnRvU3RyaW5nKCk7XG4gICAgZmluYWxVcmwgPSBmb3JtYXQocGFyc2VkKTtcbiAgfVxuXG4gIGlmIChwcm92aWRlci5yZXBsYWNlICYmIHByb3ZpZGVyLnJlcGxhY2UubGVuZ3RoKSB7XG4gICAgcHJvdmlkZXIucmVwbGFjZS5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICB2YXIgX3J1bGUgPSBfc2xpY2VkVG9BcnJheShydWxlLCAyKSxcbiAgICAgICAgICBmcm9tID0gX3J1bGVbMF0sXG4gICAgICAgICAgdG8gPSBfcnVsZVsxXTtcblxuICAgICAgaWYgKGZyb20gJiYgdG8pIGZpbmFsVXJsID0gZmluYWxVcmwucmVwbGFjZShmcm9tLCB0byk7XG4gICAgICBwYXJzZWQgPSBwYXJzZShmaW5hbFVybCk7XG4gICAgfSk7XG4gICAgZmluYWxVcmwgPSBmb3JtYXQocGFyc2VkKTtcbiAgfVxuXG4gIGlmIChwcm92aWRlci5yZW1vdmVGaWxlTmFtZSkge1xuICAgIHBhcnNlZC5wYXRobmFtZSA9IHBhcnNlZC5wYXRobmFtZS5zdWJzdHJpbmcoMCwgcGFyc2VkLnBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJykpO1xuICAgIGZpbmFsVXJsID0gZm9ybWF0KHBhcnNlZCk7XG4gIH1cblxuICBpZiAocHJvdmlkZXIucmVtb3ZlQWZ0ZXIgJiYgZmluYWxVcmwuaW5jbHVkZXMocHJvdmlkZXIucmVtb3ZlQWZ0ZXIpKSB7XG4gICAgZmluYWxVcmwgPSBmaW5hbFVybC5zdWJzdHJpbmcoMCwgZmluYWxVcmwuaW5kZXhPZihwcm92aWRlci5yZW1vdmVBZnRlcikpO1xuICB9XG5cbiAgaWYgKHByb3ZpZGVyLmFwcGVuZCkge1xuICAgIGZpbmFsVXJsICs9IHByb3ZpZGVyLmFwcGVuZDtcbiAgfVxuXG4gIHJldHVybiBmaW5hbFVybDtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVRodW1ibmFpbChwcm92aWRlciwgdXJsKSB7XG4gIHZhciB0aHVtYm5haWxVUkwgPSAnJztcbiAgdmFyIHRodW1ibmFpbENvbmZpZyA9IHByb3ZpZGVyLnRodW1ibmFpbDtcblxuICBpZiAodGh1bWJuYWlsQ29uZmlnICYmIHRodW1ibmFpbENvbmZpZy5mb3JtYXQpIHtcbiAgICB0aHVtYm5haWxVUkwgPSB0aHVtYm5haWxDb25maWcuZm9ybWF0O1xuICAgIE9iamVjdC5rZXlzKHRodW1ibmFpbENvbmZpZykuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBrZXkgIT09ICdmb3JtYXQnO1xuICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIHNlYXJjaCA9IG5ldyBSZWdFeHAoXCJ7XCIuY29uY2F0KGtleSwgXCJ9XCIpLCAnZycpO1xuICAgICAgdmFyIHJlcGxhY2UgPSBuZXcgUmVnRXhwKHRodW1ibmFpbENvbmZpZ1trZXldKS5leGVjKHVybCk7XG4gICAgICBpZiAocmVwbGFjZSkgdGh1bWJuYWlsVVJMID0gdGh1bWJuYWlsVVJMLnJlcGxhY2Uoc2VhcmNoLCByZXBsYWNlWzFdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0aHVtYm5haWxVUkw7XG59IiwiJ3VzZS1zdHJpY3QnO1xuXG4vKiBUT0RPIDogU2VuZCB0aGUgcmVzdWx0IG9mIGd1aWRlIDpcbiAgY29uc3QgZ3VpZGUgPSByZXF1aXJlKCdyZW1hcmstcHJlc2V0LWxpbnQtbWFya2Rvd24tc3R5bGUtZ3VpZGUnKTtcbiovXG5cbmNvbnN0IGh0bWwgPSByZXF1aXJlKCdyZW1hcmstcmVoeXBlJyk7XG5jb25zdCBrYmQgPSByZXF1aXJlKCdyZW1hcmsta2JkJyk7XG5jb25zdCBtYXRoID0gcmVxdWlyZSgncmVtYXJrLW1hdGgnKTtcbmNvbnN0IGhpZ2hsaWdodCA9IHJlcXVpcmUoJ3JlbWFyay1oaWdobGlnaHQuanMnKTtcbmNvbnN0IG11bHRpQ2hvaWNlID0gcmVxdWlyZSgncmVtYXJrLW11bHRpcGxlLWNob2ljZScpO1xuY29uc3QgbGluZUlucHV0ID0gcmVxdWlyZSgncmVtYXJrLWxpbmUtaW5wdXQnKTtcbmNvbnN0IHNlbGVjdCA9IHJlcXVpcmUoJ3JlbWFyay1zZWxlY3QnKTtcbmNvbnN0IHRleHRJbnB1dCA9IHJlcXVpcmUoJ3JlbWFyay10ZXh0LWlucHV0Jyk7XG5jb25zdCByYXcgPSByZXF1aXJlKCdyZWh5cGUtcmF3Jyk7XG5jb25zdCByZWh5cGVLYXRleCA9IHJlcXVpcmUoJ3JlaHlwZS1rYXRleCcpO1xuY29uc3QgcmVoeXBlU3RyaW5naWZ5ID0gcmVxdWlyZSgncmVoeXBlLXN0cmluZ2lmeScpO1xuY29uc3QgdW5pZmllZCA9IHJlcXVpcmUoJ3VuaWZpZWQnKTtcbmNvbnN0IHJlbWFyayA9IHJlcXVpcmUoJ3JlbWFyay1wYXJzZScpO1xuY29uc3QgY3VzdG9tQmxvY2tzID0gcmVxdWlyZSgncmVtYXJrLWN1c3RvbS1ibG9ja3MnKTtcbmNvbnN0IGlmcmFtZXMgPSByZXF1aXJlKCdyZW1hcmstaWZyYW1lcycpO1xuXG5mdW5jdGlvbiB0b0hUTUwoZGF0YSwgZm5jKSB7XG4gIHVuaWZpZWQoKVxuICAgIC51c2UocmVtYXJrKVxuICAgIC51c2UobGluZUlucHV0KVxuICAgIC51c2UodGV4dElucHV0KVxuICAgIC51c2Uoc2VsZWN0KVxuICAgIC51c2UobXVsdGlDaG9pY2UpXG4gICAgLnVzZShtYXRoKVxuICAgIC51c2Uoa2JkKVxuICAgIC51c2UoY3VzdG9tQmxvY2tzLCB7XG4gICAgICBpbmZvcm1hdGlvbjoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggaW5mb3JtYXRpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBjb21tZW50OiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBjb21tZW50JyxcbiAgICAgICAgdGl0bGU6ICdvcHRpb25hbCcsXG4gICAgICB9LFxuICAgICAgYXR0ZW50aW9uOiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBhdHRlbnRpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBxdWVzdGlvbjoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggcXVlc3Rpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBnb29kOiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBnb29kJyxcbiAgICAgIH0sXG4gICAgICBzZWNyZXQ6IHtcbiAgICAgICAgY2xhc3NlczogJ3NwZWNpYWwtYm94IHNlY3JldCcsXG4gICAgICAgIHRpdGxlOiAnb3B0aW9uYWwnLFxuICAgICAgfSxcbiAgICAgIGJhZDoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggYmFkJyxcbiAgICAgIH19KVxuICAgIC51c2UoaGlnaGxpZ2h0KVxuICAgIC51c2UoaWZyYW1lcywge1xuICAgICAgLy8gVGhpcyBrZXkgY29ycmVzcG9uZHMgdG8gdGhlIGhvc3RuYW1lOiAhKGh0dHA6Ly9ob3N0bmFtZS9mb28pXG4gICAgICAvLyB0aGUgY29uZmlnIGFzc29jaWF0ZWQgdG8gdGhpcyBob3N0bmFtZSB3aWxsIGFwcGx5IHRvIGFueSBpZnJhbWVcbiAgICAgIC8vIHdpdGggYSBtYXRjaGluZyBob3N0bmFtZVxuICAgICAgJ3d3dy55b3V0dWJlLmNvbSc6IHtcbiAgICAgICAgdGFnOiAnSUZSQU1FJyxcbiAgICAgICAgd2lkdGg6IDU2MCxcbiAgICAgICAgaGVpZ2h0OiAzMTUsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgcmVwbGFjZTogW1xuICAgICAgICAgIFsnd2F0Y2g/dj0nLCAnZW1iZWQvJ10sXG4gICAgICAgICAgWydodHRwOi8vJywgJ2h0dHBzOi8vJ10sXG4gICAgICAgIF0sXG4gICAgICAgIHRodW1ibmFpbDoge1xuICAgICAgICAgIGZvcm1hdDogJ2h0dHA6Ly9pbWcueW91dHViZS5jb20vdmkve2lkfS8wLmpwZycsXG4gICAgICAgICAgaWQ6ICcuKy8oLispJCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlQWZ0ZXI6ICcmJ1xuICAgICAgfVxuICAgIH0pXG4gICAgLnVzZShodG1sLCB7YWxsb3dEYW5nZXJvdXNIVE1MOiB0cnVlfSlcbiAgICAudXNlKHJlaHlwZUthdGV4KVxuICAgIC51c2UocmF3KVxuICAgIC51c2UocmVoeXBlU3RyaW5naWZ5KVxuXG4gICAgLnByb2Nlc3MoZGF0YSwgZm5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0hUTUw7XG4iXSwibmFtZXMiOlsidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsInByb3RvdHlwZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BJc0VudW1lcmFibGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImFzc2lnbiIsInRlc3QxIiwiU3RyaW5nIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInRlc3QyIiwiZnJvbUNoYXJDb2RlIiwibWFwIiwibiIsImpvaW4iLCJ0ZXN0MyIsInNwbGl0IiwiZm9yRWFjaCIsImxldHRlciIsImtleXMiLCJlcnIiLCJzaG91bGRVc2VOYXRpdmUiLCJmcm9tIiwic3ltYm9scyIsInRvIiwidmFsIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwidG9PYmplY3QiLCJzIiwidHlwZSIsInByb3BzIiwidmFsdWUiLCJub2RlIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGRyZW4iLCJjb252ZXJ0IiwidGVzdCIsIkJvb2xlYW4iLCJ0eXBlRmFjdG9yeSIsIm9rIiwidGVzdHMiLCJjaGVja3MiLCJyZXN1bHRzIiwiaW5kZXgiLCJjb252ZXJ0QWxsIiwiYXBwbHkiLCJ0aGlzIiwiRXJyb3IiLCJ2aXNpdFBhcmVudHMiLCJDT05USU5VRSIsIlNLSVAiLCJFWElUIiwidHJlZSIsInZpc2l0b3IiLCJyZXZlcnNlIiwiaXMiLCJvbmUiLCJwYXJlbnRzIiwic3VicmVzdWx0IiwicmVzdWx0IiwidG9SZXN1bHQiLCJzdGVwIiwiYWxsIiwiY29uY2F0IiwidmlzaXQiLCJwYXJlbnQiLCJpbmRleE9mIiwicG9zaXRpb24iLCJleHBvcnRzIiwiZmFjdG9yeSIsInBvaW50IiwiZGlzcGxheU5hbWUiLCJsaW5lIiwiY29sdW1uIiwib2Zmc2V0IiwiaXNOYU4iLCJzdGFydCIsImVuZCIsIm9wdGlvbmFsIiwib3B0aW9ucyIsImNhY2hlIiwiaWRlbnRpZmllciIsImlkIiwibm9ybWFsaXNlIiwib3duIiwiZ2V0dGVyRmFjdG9yeSIsImNvbW1vbm1hcmsiLCJkZWZpbml0aW9uIiwiZ2F0aGVyIiwidG9VcHBlckNhc2UiLCJtb2R1bGUiLCJzdHIiLCJyZXBsYWNlIiwiaCIsImhlYWQiLCJub2RlcyIsInZhbHVlcyIsInRyaW0iLCJsZWZ0IiwiZm4iLCJoYW5kbGVycyIsImRhdGEiLCJ0ZXh0IiwiYXVnbWVudCIsInUiLCJsb29zZSIsInB1c2giLCJpdGVtcyIsIm5hbWUiLCJvcmRlcmVkIiwicHJvcGVydGllcyIsImNsYXNzTmFtZSIsIndyYXAiLCJkZWYiLCJiYWNrUmVmZXJlbmNlIiwiY29udGVudCIsInRhaWwiLCJmb290bm90ZUJ5SWQiLCJmb290bm90ZU9yZGVyIiwibGlzdEl0ZW1zIiwidXJsIiwiaFByb3BlcnRpZXMiLCJ0aGVtYXRpY0JyZWFrIiwibGlzdCIsInJlcyIsIm51bSIsIm1heCIsInN1YnN0ciIsInNpemUiLCJjb2RlIiwiYWRkIiwic3RyaW5nIiwidGFiU2l6ZSIsImNoYXJDb2RlQXQiLCJ0YWIiLCJzbGljZSIsInJlcGVhdCIsImxpbmVGZWVkIiwiY2FycmlhZ2VSZXR1cm4iLCJkZXRhYiIsImxhbmciLCJtYXRjaCIsImhyZWYiLCJsYWJlbCIsImZvb3Rub3RlUmVmZXJlbmNlIiwiZGVwdGgiLCJkYW5nZXJvdXMiLCJlbmNvZGVDYWNoZSIsImVuY29kZSIsImV4Y2x1ZGUiLCJrZWVwRXNjYXBlZCIsImwiLCJuZXh0Q29kZSIsImRlZmF1bHRDaGFycyIsImNoIiwidG9TdHJpbmciLCJnZXRFbmNvZGVDYWNoZSIsImVuY29kZVVSSUNvbXBvbmVudCIsImNvbXBvbmVudENoYXJzIiwiY29udGVudHMiLCJzdWJ0eXBlIiwicmVmZXJlbmNlVHlwZSIsInN1ZmZpeCIsImFsdCIsInVuc2hpZnQiLCJsaXN0SXRlbUxvb3NlIiwic3ByZWFkIiwid3MiLCJuZXdsaW5lIiwiYmxvY2txdW90ZSIsInJlcXVpcmUkJDAiLCJicmVhayIsInJlcXVpcmUkJDEiLCJyZXF1aXJlJCQyIiwiZGVsZXRlIiwicmVxdWlyZSQkMyIsImVtcGhhc2lzIiwicmVxdWlyZSQkNCIsInJlcXVpcmUkJDUiLCJmb290bm90ZSIsInJlcXVpcmUkJDYiLCJoZWFkaW5nIiwicmVxdWlyZSQkNyIsImh0bWwiLCJyZXF1aXJlJCQ4IiwiaW1hZ2VSZWZlcmVuY2UiLCJyZXZlcnQiLCJzcmMiLCJub3JtYWxpemUiLCJ0aXRsZSIsImltYWdlIiwiaW5saW5lQ29kZSIsImNvbGxhcHNlIiwibGlua1JlZmVyZW5jZSIsImxpbmsiLCJsaXN0SXRlbSIsImNvbnRhaW5lciIsImNoaWxkIiwicmF3IiwibGlzdExvb3NlIiwidGFnTmFtZSIsImNoZWNrZWQiLCJkaXNhYmxlZCIsInJlcXVpcmUkJDE1IiwicGFyYWdyYXBoIiwicm9vdCIsInN0cm9uZyIsInRhYmxlIiwicG9zIiwicm93Iiwib3V0IiwiY2VsbCIsInJvd3MiLCJhbGlnbiIsImFsaWduTGVuZ3RoIiwidHJpbUxpbmVzIiwicmVxdWlyZSQkMjEiLCJ0b21sIiwiaWdub3JlIiwieWFtbCIsImZvb3Rub3RlRGVmaW5pdGlvbiIsInNldHRpbmdzIiwiYWxsb3dEYW5nZXJvdXNIVE1MIiwiZGVmaW5pdGlvbnMiLCJ4dGVuZCIsInJpZ2h0IiwiY3R4IiwiaE5hbWUiLCJoQ2hpbGRyZW4iLCJnZW5lcmF0ZWQiLCJmb290IiwiZm9vdGVyIiwiZGVzdGluYXRpb24iLCJwcm9jZXNzIiwiZmlsZSIsIm5leHQiLCJydW4iLCJtZGFzdDJoYXN0IiwiYnJpZGdlIiwibXV0YXRlIiwiY2hhcmFjdGVyIiwicmUiLCJmcm9tQ29kZSIsImNoYXJBdCIsIkNfUElQRSIsIkRPVUJMRSIsImxvY2F0b3IiLCJmcm9tSW5kZXgiLCJpbmxpbmVUb2tlbml6ZXIiLCJlYXQiLCJzaWxlbnQiLCJnZm0iLCJ3aGl0ZXNwYWNlIiwicHJldmlvdXMiLCJwcmVjZWRpbmciLCJzdWJ2YWx1ZSIsIm5vdyIsInRva2VuaXplSW5saW5lIiwiUGFyc2VyIiwiaW5saW5lVG9rZW5pemVycyIsImlubGluZU1ldGhvZHMiLCJrYmQiLCJzcGxpY2UiLCJDb21waWxlciIsInZpc2l0b3JzIiwicGFyc2VyIiwiYmxvY2tUb2tlbml6ZXJzIiwiY29tcGlsZXIiLCJ1dGlsIiwiaXNSZW1hcmtQYXJzZXIiLCJwcm90byIsIm1hdGhJbmxpbmVUb2tlbml6ZXIiLCJwcmV2IiwiY29udGVudFN0YXJ0IiwiY29udGVudEVuZCIsInZhbHVlRW5kIiwiZG91YmxlIiwiZXNjYXBlZCIsImJhY2tzbGFzaCIsImRvbGxhclNpZ24iLCJzcGFjZSIsImRpZ2l0MCIsImRpZ2l0OSIsImNsYXNzTGlzdCIsImlubGluZU1hdGhEb3VibGUiLCJtYXRoRGlzcGxheSIsIm1hdGgiLCJhdHRhY2hQYXJzZXIiLCJpc1JlbWFya0NvbXBpbGVyIiwiaW5saW5lTWF0aCIsImZlbmNlIiwiaW5jbHVkZXMiLCJhdHRhY2hDb21waWxlciIsImJsb2NrTWV0aG9kcyIsImludGVycnVwdFBhcmFncmFwaCIsImludGVycnVwdExpc3QiLCJpbnRlcnJ1cHRCbG9ja3F1b3RlIiwibGluZUVuZCIsImxpbmVJbmRleCIsIm9wZW5pbmdGZW5jZUluZGVudFNpemUiLCJvcGVuaW5nRmVuY2VTaXplIiwib3BlbmluZ0ZlbmNlQ29udGVudFN0YXJ0IiwiY2xvc2luZ0ZlbmNlIiwiY2xvc2luZ0ZlbmNlU2l6ZSIsImxpbmVDb250ZW50U3RhcnQiLCJsaW5lQ29udGVudEVuZCIsIm1pbkZlbmNlQ291bnQiLCJsaW5lRmVlZENoYXIiLCJkb2xsYXJTaWduQ2hhciIsIm9wdHMiLCJibG9ja1BsdWdpbiIsImlubGluZVBsdWdpbiIsImdsb2JhbE9iamVjdCIsImhsanMiLCJBUElfUkVQTEFDRVMiLCJBcnJheVByb3RvIiwib2JqZWN0S2V5cyIsImxhbmd1YWdlcyIsImFsaWFzZXMiLCJub0hpZ2hsaWdodFJlIiwibGFuZ3VhZ2VQcmVmaXhSZSIsImZpeE1hcmt1cFJlIiwic3BhbkVuZFRhZyIsImNsYXNzUHJlZml4IiwidGFiUmVwbGFjZSIsInVzZUJSIiwiQ09NTU9OX0tFWVdPUkRTIiwiZXNjYXBlIiwidGFnIiwibm9kZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsImlzTm90SGlnaGxpZ2h0ZWQiLCJsYW5ndWFnZSIsImluaGVyaXQiLCJvYmplY3RzIiwib2JqIiwibm9kZVN0cmVhbSIsIl9ub2RlU3RyZWFtIiwiZmlyc3RDaGlsZCIsIm5leHRTaWJsaW5nIiwibm9kZVR5cGUiLCJub2RlVmFsdWUiLCJldmVudCIsImV4cGFuZF9vcl9jbG9uZV9tb2RlIiwibW9kZSIsInZhcmlhbnRzIiwiY2FjaGVkX3ZhcmlhbnRzIiwidmFyaWFudCIsImRlcGVuZGVuY3lPblBhcmVudCIsImVuZHNXaXRoUGFyZW50Iiwic3RhcnRzIiwicmVzdG9yZUxhbmd1YWdlQXBpIiwibGFuZ0FwaVJlc3RvcmVkIiwiY29udGFpbnMiLCJjb21waWxlS2V5d29yZHMiLCJyYXdLZXl3b3JkcyIsImNhc2VfaW5zZW5zaXRpdmUiLCJjb21waWxlZF9rZXl3b3JkcyIsInNwbGl0QW5kQ29tcGlsZSIsImtleXdvcmQiLCJwYWlyIiwicHJvdmlkZWRTY29yZSIsIk51bWJlciIsIndvcmQiLCJzY29yZUZvcktleXdvcmQiLCJjb21waWxlTGFuZ3VhZ2UiLCJyZVN0ciIsImxhbmdSZSIsImdsb2JhbCIsIlJlZ0V4cCIsImJ1aWxkTW9kZVJlZ2V4IiwibWF0Y2hlclJlIiwidGVybSIsIm1hdGNoSW5kZXhlcyIsInJlZ2V4ZXMiLCJtYXRjaGVyIiwibWF0Y2hBdCIsImFkZFJ1bGUiLCJydWxlIiwicmVnZXgiLCJleGVjIiwiYmVnaW5LZXl3b3JkcyIsImJlZ2luIiwidGVybWluYXRvcl9lbmQiLCJpbGxlZ2FsIiwidGVybWluYXRvcnMiLCJlbCIsInJlZ2V4cHMiLCJzZXBhcmF0b3IiLCJiYWNrcmVmZXJlbmNlUmUiLCJudW1DYXB0dXJlcyIsInJldCIsInN1YnN0cmluZyIsImpvaW5SZSIsImxhc3RJbmRleCIsImV4dHJhIiwiY29tcGlsZU1vZGUiLCJjb21waWxlZCIsImtleXdvcmRzIiwibGV4ZW1lc1JlIiwibGV4ZW1lcyIsImJlZ2luUmUiLCJlbmRTYW1lQXNCZWdpbiIsImVuZFJlIiwiaWxsZWdhbFJlIiwicmVsZXZhbmNlIiwiYyIsImhpZ2hsaWdodCIsImlnbm9yZV9pbGxlZ2FscyIsImNvbnRpbnVhdGlvbiIsImtleXdvcmRNYXRjaCIsIm1hdGNoX3N0ciIsImJ1aWxkU3BhbiIsImNsYXNzbmFtZSIsImluc2lkZVNwYW4iLCJsZWF2ZU9wZW4iLCJub1ByZWZpeCIsIm9wZW5TcGFuIiwicHJvY2Vzc0J1ZmZlciIsInRvcCIsInN1Ykxhbmd1YWdlIiwiZXhwbGljaXQiLCJtb2RlX2J1ZmZlciIsImNvbnRpbnVhdGlvbnMiLCJoaWdobGlnaHRBdXRvIiwicHJvY2Vzc1N1Ykxhbmd1YWdlIiwia2V5d29yZF9tYXRjaCIsImxhc3RfaW5kZXgiLCJwcm9jZXNzS2V5d29yZHMiLCJzdGFydE5ld01vZGUiLCJjcmVhdGUiLCJkb0JlZ2luTWF0Y2giLCJsZXhlbWUiLCJuZXdfbW9kZSIsInNraXAiLCJleGNsdWRlQmVnaW4iLCJyZXR1cm5CZWdpbiIsImRvRW5kTWF0Y2giLCJlbmRfbW9kZSIsImVuZE9mTW9kZSIsInRlc3RSZSIsImVuZHNQYXJlbnQiLCJvcmlnaW4iLCJyZXR1cm5FbmQiLCJleGNsdWRlRW5kIiwibGFzdE1hdGNoIiwicHJvY2Vzc0xleGVtZSIsInRleHRfYmVmb3JlX21hdGNoIiwicHJvY2Vzc2VkIiwiZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50IiwiY291bnQiLCJlIiwibWVzc2FnZSIsImxhbmd1YWdlU3Vic2V0Iiwic2Vjb25kX2Jlc3QiLCJmaWx0ZXIiLCJhdXRvRGV0ZWN0aW9uIiwiZml4TWFya3VwIiwicDEiLCJoaWdobGlnaHRCbG9jayIsImJsb2NrIiwib3JpZ2luYWxTdHJlYW0iLCJyZXN1bHROb2RlIiwiX2NsYXNzIiwiY2xhc3NlcyIsInBhcmVudE5vZGUiLCJibG9ja0xhbmd1YWdlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50TlMiLCJpbm5lckhUTUwiLCJ0ZXh0Q29udGVudCIsIm9yaWdpbmFsIiwiaGlnaGxpZ2h0ZWQiLCJub2RlU3RhY2siLCJzZWxlY3RTdHJlYW0iLCJvcGVuIiwiYXR0cmlidXRlcyIsImEiLCJjbG9zZSIsInJlbmRlciIsInN0cmVhbSIsInBvcCIsIm1lcmdlU3RyZWFtcyIsInByZXZDbGFzc05hbWUiLCJjdXJyZW50TGFuZyIsInJlc3VsdExhbmciLCJidWlsZENsYXNzTmFtZSIsImluaXRIaWdobGlnaHRpbmciLCJjYWxsZWQiLCJibG9ja3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZGlzYWJsZUF1dG9kZXRlY3QiLCJjb25maWd1cmUiLCJ1c2VyX29wdGlvbnMiLCJpbml0SGlnaGxpZ2h0aW5nT25Mb2FkIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlZ2lzdGVyTGFuZ3VhZ2UiLCJyYXdEZWZpbml0aW9uIiwiYmluZCIsImFsaWFzIiwibGlzdExhbmd1YWdlcyIsIklERU5UX1JFIiwiVU5ERVJTQ09SRV9JREVOVF9SRSIsIk5VTUJFUl9SRSIsIkNfTlVNQkVSX1JFIiwiQklOQVJZX05VTUJFUl9SRSIsIlJFX1NUQVJURVJTX1JFIiwiQkFDS1NMQVNIX0VTQ0FQRSIsIkFQT1NfU1RSSU5HX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsIlBIUkFTQUxfV09SRFNfTU9ERSIsIkNPTU1FTlQiLCJpbmhlcml0cyIsIkNfTElORV9DT01NRU5UX01PREUiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkhBU0hfQ09NTUVOVF9NT0RFIiwiTlVNQkVSX01PREUiLCJDX05VTUJFUl9NT0RFIiwiQklOQVJZX05VTUJFUl9NT0RFIiwiQ1NTX05VTUJFUl9NT0RFIiwiUkVHRVhQX01PREUiLCJUSVRMRV9NT0RFIiwiVU5ERVJTQ09SRV9USVRMRV9NT0RFIiwiTUVUSE9EX0dVQVJEIiwid2luZG93Iiwic2VsZiIsIm5hbWVzcGFjZSIsImZvcm1hdCIsImZtdCIsImFyZyIsInRtcCIsInByZWNpc2lvbiIsImFyZ0luZGV4IiwiYXJncyIsImxlYWRpbmdaZXJvIiwibmV4dEFyZyIsInNsdXJwTnVtYmVyIiwiZGlnaXRzIiwicGFyc2VJbnQiLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2c3ByaW50ZiIsInJlcGxhY2VtZW50cyIsImNvbnNvbGUiLCJsb2ciLCJwcmludGYiLCJmYXVsdCIsIkVDb25zdHJ1Y3RvciIsIkZvcm1hdHRlZEVycm9yIiwiZm9ybWF0dGVyIiwiSGlnaCIsImV2YWwiLCJFdmFsRXJyb3IiLCJyYW5nZSIsIlJhbmdlRXJyb3IiLCJyZWZlcmVuY2UiLCJSZWZlcmVuY2VFcnJvciIsInN5bnRheCIsIlN5bnRheEVycm9yIiwidXJpIiwiVVJJRXJyb3IiLCJoaWdoIiwibG93IiwicHJlZml4IiwiZGVmYXVsdFByZWZpeCIsImNvcmVIaWdobGlnaHQiLCJhdXRvSGlnaGxpZ2h0IiwibGFuZ3VhZ2VOYW1lcyIsInJlZ2lzdGVyQWxpYXMiLCJrZXlJbnNlbnNpdGl2ZSIsImtleUNhY2hlZFZhcmlhbnRzIiwia2V5VGVybWluYXRvckVuZCIsInZlcnRpY2FsQmFyIiwicGFyZW5PcGVuIiwicGFyZW5DbG9zZSIsImNvbW1vbktleXdvcmRzIiwic2Vjb25kQmVzdCIsInN1YnNldCIsImN1cnJlbnRDaGlsZHJlbiIsInN0YWNrIiwibW9kZUJ1ZmZlciIsImNhc2VJbnNlbnNpdGl2ZSIsImZsYXR0ZW4iLCJjb250YWluZWQiLCJleHBhbmRPckNsb25lTW9kZSIsImNvbXBpbGVDb250YWlucyIsImV4cHJlc3Npb24iLCJpbmRpY2VzIiwiY2FwdHVyZXMiLCJlcnJvciIsImFkZFRleHQiLCJuZXdNb2RlIiwiYWRkU2libGluZ3MiLCJtYXRjaFBsdXNSZW1haW5kZXIiLCJlbmRNb2RlIiwidGV4dEJlZm9yZU1hdGNoIiwiYnVpbGQiLCJidWlsZFRleHQiLCJzdWJtYXRjaCIsInNpYmxpbmdzIiwic2libGluZyIsImF0dGFjaGVyIiwiaW5jbHVkZSIsImFzdCIsIktFWVdPUkQiLCJ2N19rZXl3b3JkcyIsIkxJVEVSQUwiLCJOVU1CRVJTIiwiU1RSSU5HUyIsIkRBVEUiLCJDT01NRU5UUyIsImJ1aWx0X2luIiwidjdfc3lzdGVtX2NvbnN0YW50cyIsImNsYXNzIiwidjhfc3lzdGVtX3NldHNfb2ZfdmFsdWVzIiwidjhfc2hhcmVkX29iamVjdCIsImxpdGVyYWwiLCJtZXRhLWtleXdvcmQiLCJ2N19tZXRhX2tleXdvcmRzIiwiY29tbWVudE1vZGUiLCJydWxlRGVjbGFyYXRpb25Nb2RlIiwiSFRUUF9WRVJCUyIsIkFTM19SRVNUX0FSR19NT0RFIiwiSURfUkVHRVgiLCJWQVJfREVDTFMiLCJidWlsdEluVHlwZU1vZGUiLCJvYmplY3RIYW5kbGVNb2RlIiwiZ2VuZXJpY01vZGUiLCJOVU1CRVIiLCJub21hcmt1cCIsIlNUUklORyIsIlBBUkFNUyIsIkNPTU1FTlRfTU9ERV8xIiwiS0VZV09SRFMiLCJTVUJTVCIsIlRFTVBMQVRFX1NUUklORyIsIlBBUkFNU19DT05UQUlOUyIsIkNQUF9QUklNSVRJVkVfVFlQRVMiLCJQUkVQUk9DRVNTT1IiLCJGVU5DVElPTl9USVRMRSIsIkNQUF9LRVlXT1JEUyIsIkVYUFJFU1NJT05fQ09OVEFJTlMiLCJwcmVwcm9jZXNzb3IiLCJzdHJpbmdzIiwiQVJEVUlOT19LVyIsIkFSRFVJTk8iLCJrd3MiLCJtZXRhIiwiVEFHX0lOVEVSTkFMUyIsIkJBQ0tUSUNLX0VTQ0FQRSIsIlZBUklBQkxFIiwiVkFSIiwiUVVPVEVfU1RSSU5HIiwiXyIsIkNPTU1FTlRfTU9ERVMiLCJDSEFSX1NUUklORyIsIlBST0NFRFVSRSIsIk9CSkVDVCIsIkVYUFJFU1NJT05TIiwiU1lNQk9MX1JFIiwiU1lNQk9MIiwiQ09MTEVDVElPTiIsIkhJTlQiLCJISU5UX0NPTCIsIktFWSIsIkxJU1QiLCJCT0RZIiwiTkFNRSIsImJ1aWx0aW4tbmFtZSIsIkRFRkFVTFRfQ09OVEFJTlMiLCJKU19JREVOVF9SRSIsIlRJVExFIiwiQ09NTUFORFMiLCJJTlRfU1VGRklYIiwiQ1JZU1RBTF9NRVRIT0RfUkUiLCJDUllTVEFMX1BBVEhfUkUiLCJDUllTVEFMX0tFWVdPUkRTIiwiRVhQQU5TSU9OIiwicmVjdXJzaXZlUGFyZW4iLCJRX1NUUklORyIsIlJFR0VYUCIsIkNSWVNUQUxfREVGQVVMVF9DT05UQUlOUyIsIlZFUkJBVElNX1NUUklORyIsIlZFUkJBVElNX1NUUklOR19OT19MRiIsIlNVQlNUX05PX0xGIiwiSU5URVJQT0xBVEVEX1NUUklORyIsIklOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkciLCJJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HX05PX0xGIiwiVFlQRV9JREVOVF9SRSIsIlJVTEUiLCJpbnRlZ2VyX3JlIiwiZXNjYXBlX3NlcXVlbmNlX3JlIiwiRF9JTlRFR0VSX01PREUiLCJEX0ZMT0FUX01PREUiLCJEX0NIQVJBQ1RFUl9NT0RFIiwiRF9TVFJJTkdfTU9ERSIsIkRfTkVTVElOR19DT01NRU5UX01PREUiLCJCUkFDRURfU1VCU1QiLCJESVJFQ1RJVkUiLCJDTEFTUyIsIkZVTkNUSU9OIiwiRklMVEVSIiwiRFRTX1JFRkVSRU5DRSIsIkRUU19LRVlXT1JEIiwiRFRTX0xBQkVMIiwiRFRTX0NFTExfUFJPUEVSVFkiLCJEVFNfTk9ERSIsIkVMSVhJUl9JREVOVF9SRSIsIkVMSVhJUl9LRVlXT1JEUyIsIkVMSVhJUl9ERUZBVUxUX0NPTlRBSU5TIiwiQ09OU1RSVUNUT1IiLCJSVUJZX01FVEhPRF9SRSIsIlJVQllfS0VZV09SRFMiLCJZQVJET0NUQUciLCJJUkJfT0JKRUNUIiwiUlVCWV9ERUZBVUxUX0NPTlRBSU5TIiwiSVJCX0RFRkFVTFQiLCJCQVNJQ19BVE9NX1JFIiwiRlVOQ1RJT05fTkFNRV9SRSIsIkVSTEFOR19SRVNFUlZFRCIsIk5BTUVEX0ZVTiIsIkZVTkNUSU9OX0NBTEwiLCJUVVBMRSIsIlZBUjEiLCJWQVIyIiwiUkVDT1JEX0FDQ0VTUyIsIkJMT0NLX1NUQVRFTUVOVFMiLCJCQVNJQ19NT0RFUyIsIk1FVEhPRCIsIlRZUEVQQVJBTSIsImJ1aWx0LWluIiwiU1lNQk9MUyIsIlFTVFIiLCJBU1NJR05NRU5UIiwiREVTQ1RFWFQiLCJBVF9DT01NRU5UX01PREUiLCJTVFJVQ1RfVFlQRSIsIlBBUlNFX1BBUkFNUyIsIkZVTkNUSU9OX0RFRiIsIkRFRklOSVRJT04iLCJCVUlMVF9JTl9SRUYiLCJTVFJJTkdfUkVGIiwiRlVOQ1RJT05fUkVGIiwiRlVOQ1RJT05fUkVGX1BBUkFNUyIsIkdDT0RFX0NPREUiLCJzeW1ib2wiLCJHT19LRVlXT1JEUyIsIkJVSUxUX0lOUyIsIklERU5USUZJRVJfUExBSU5fT1JfUVVPVEVEIiwiRVhQUkVTU0lPTl9PUl9IRUxQRVJfQ0FMTCIsIkJMT0NLX01VU1RBQ0hFX0NPTlRFTlRTIiwiQkFTSUNfTVVTVEFDSEVfQ09OVEVOVFMiLCJQUkFHTUEiLCJUQUdfSU5OQVJEUyIsIlZFUlNJT04iLCJET0NUQUdTIiwiQ09OU1RBTlRTIiwiTUVUSE9EUyIsIlRZUEVTIiwiVkFSSUFCTEVTIiwiRlVOQ1RJT05fTkFNRV9JREVOVF9SRSIsIkpBVkFfTlVNQkVSX01PREUiLCJIVE1MX1RFTVBMQVRFIiwiQ1NTX1RFTVBMQVRFIiwiUEFSQU1TQkxPQ0siLCJMSVRFUkFMUyIsIkFMTE9XRURfQ09NTUVOVFMiLCJWQUxVRV9DT05UQUlORVIiLCJBUlJBWSIsIlZBUklBQkxFX05BTUVfUkUiLCJERUZBVUxUIiwiSU5URVJQT0xBVElPTiIsIklOVEVSUE9MQVRFRF9WQVJJQUJMRSIsIkNPTU1BTkQiLCJNQUNST0NBTEwiLCJMQUJFTCIsIkFOTk9UQVRJT05fVVNFX1NJVEUiLCJBTk5PVEFUSU9OIiwiS09UTElOX05VTUJFUl9NT0RFIiwiS09UTElOX05FU1RFRF9DT01NRU5UIiwiS09UTElOX1BBUkVOX1RZUEUiLCJLT1RMSU5fUEFSRU5fVFlQRTIiLCJMQVNTT19DTE9TRV9SRSIsIkxBU1NPX0tFWVdPUkRTIiwiSFRNTF9DT01NRU5UIiwiTEFTU09fTk9QUk9DRVNTIiwiTEFTU09fU1RBUlQiLCJMQVNTT19EQVRBTUVNQkVSIiwiTEFTU09fQ09ERSIsIkxBU1NPX0lERU5UX1JFIiwiSU5URVJQX0lERU5UX1JFIiwiUlVMRVMiLCJWQUxVRSIsIlNUUklOR19NT0RFIiwiSURFTlRfTU9ERSIsIlBBUkVOU19NT0RFIiwiVkFMVUVfV0lUSF9SVUxFU0VUUyIsIk1JWElOX0dVQVJEX01PREUiLCJSVUxFX01PREUiLCJBVF9SVUxFX01PREUiLCJWQVJfUlVMRV9NT0RFIiwiU0VMRUNUT1JfTU9ERSIsIkxJU1BfSURFTlRfUkUiLCJMSVNQX1NJTVBMRV9OVU1CRVJfUkUiLCJJREVOVCIsIk1FQyIsIlFVT1RFRCIsIlFVT1RFRF9BVE9NIiwiVElUTEUxIiwiVElUTEUyIiwiU1VCU1RfU0lNUExFIiwiTFNMX1NUUklOR1MiLCJMU0xfTlVNQkVSUyIsIkxPTkdfQlJBQ0tFVFMiLCJGVU5DIiwiVkFSX0FTU0lHIiwiVEFSR0VUIiwiVFJBTlNQT1NFIiwiQVRPTSIsIlBFUkxfS0VZV09SRFMiLCJTVFJJTkdfQ09OVEFJTlMiLCJQRVJMX0RFRkFVTFRfQ09OVEFJTlMiLCJOSVhfS0VZV09SRFMiLCJBTlRJUVVPVEUiLCJERUZJTkVTIiwiTEFOR1VBR0VTIiwiTEVYRU1FUyIsIkNMQVNTX0tFWVdPUkRTIiwiU1BFQ0lBTF9WQVJTIiwiRlVOQ1RJT05TIiwiT1hZR0VORV9LRVlXT1JEUyIsIkNVUkxZX0NPTU1FTlQiLCJQQVJFTl9DT01NRU5UIiwiQ1VSTFlfU1VCQ09NTUVOVCIsIkNPTU1FTlRfTU9ERSIsIlRZUEVTX1JFIiwiRlVOQ1RJT05TX1JFIiwiU1FMX0tXIiwiU1FMX0JJIiwiUFNfQ09NTUVOVCIsIlBBUkVOVEVEIiwiTElORV9DT01NRU5UIiwiQkFDS1RJQ0tfU1RSSU5HIiwiaW5uZXIiLCJXUzAiLCJERUxJTSIsIktFWV9PVEhFUiIsIkRFTElNX0FORF9WQUxVRSIsIlBST01QVCIsIkxJVEVSQUxfQlJBQ0tFVCIsIlFNTF9JREVOVF9SRSIsIklEX0lEIiwiUU1MX0FUVFJJQlVURSIsIlFNTF9PQkpFQ1QiLCJSRV9JREVOVCIsIlJFX01PRFVMRV9JREVOVCIsIlJFX09QRVJBVE9SIiwib3AiLCJjaGFyIiwiUkVfT1BFUkFUT1JfU1BBQ0VEIiwiUkVfTlVNQkVSIiwiT1BFUkFUT1JfTU9ERSIsIkxJU1RfQ09OVEVOVFNfTU9ERVMiLCJNT0RVTEVfQUNDRVNTX0NPTlRFTlRTIiwiUEFSQU1TX0NPTlRFTlRTIiwiRlVOQ1RJT05fQkxPQ0tfTU9ERSIsIkNPTlNUUlVDVE9SX01PREUiLCJQQVRURVJOX01BVENIX0JMT0NLX01PREUiLCJNT0RVTEVfQUNDRVNTX01PREUiLCJJREVOVElGSUVSIiwiUFJPUEVSVFkiLCJTVEFURU1FTlRTIiwiQVBPU19TVFJJTkciLCJOVU1fU1VGRklYIiwiQlVJTFRJTlMiLCJUWVBFIiwiU0NIRU1FX0lERU5UX1JFIiwiU0NIRU1FX1NJTVBMRV9OVU1CRVJfUkUiLCJRVU9URURfSURFTlQiLCJRVU9URURfTElTVCIsIkNPTU1PTl9DT05UQUlOUyIsIkhFWENPTE9SIiwic21hbGlfaW5zdHJfbG93X3ByaW8iLCJDSEFSIiwiVkFSX0lERU5UX1JFIiwic2VsZWN0b3ItdGFnIiwiSEVYX0NPTE9SIiwiU1dJRlRfS0VZV09SRFMiLCJCTE9DS19DT01NRU5UIiwiVFBJRCIsIlRQTEFCRUwiLCJGVU5DVElPTl9OQU1FUyIsIlRBR1MiLCJ0IiwiREVDT1JBVE9SIiwiQVJHUyIsIlhMX0tFWVdPUkRTIiwiRE9VQkxFX1FVT1RFX1RFWFQiLCJJTVBPUlQiLCJGVU5DVElPTl9ERUZJTklUSU9OIiwidkZpbGUiLCJuYk1DIiwiaXNNdWx0aXBsZUNob2lzZSIsIm5iUSIsIm5vZGVDIiwieCIsImZvciIsImxpc3RDaGlsZCIsImRlYWxMYWJlbENoaWxkcmVuIiwib25jbGljayIsInZpc2l0TGlzdCIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJfZGVmaW5lUHJvcGVydHkiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwibm90aGluZ0hhcHBlbmQiLCJwcm9wIiwiZWF0ZW4iLCJkZWZhdWx0Q29uZmlnIiwiZGVmYXVsdFZhbHVlIiwiaW5kZXhOZXh0IiwidXNlckNvbmZpZyIsImxldHNFYXQiLCJzdG9wT25CcmFjZSIsImVycm9yRGV0ZWN0ZWQiLCJjb25maWciLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9vYmplY3RTcHJlYWQiLCJsYWJlbFNlY29uZCIsImxhYmVsRmlyc3QiLCJzaG91bGRTdG9wIiwiY2hhcnMiLCJlYXRVbnRpbCIsImVhdE9uZSIsInNraXBTdG9wQ2hlY2siLCJlYXRRdW90ZSIsInEiLCJxdW90ZSIsImVhdEluUXVvdGUiLCJpZFNldEJ5S2V5IiwiYWRkQXR0cmlidXRlIiwiX3JldCIsIlNUQVJUIiwiRU5EIiwic3RhcnRzV2l0aCIsInBhcnNlQXR0ciIsInBsYWNlaG9sZGVyIiwiaW5wdXQiLCJsaW5laW5wdXQiLCJFTkRfUkdYIiwidW50cmltIiwic2VsZWN0IiwibGluZXNlbGVjdCIsImJsb2NrVG9rZW5pemVyIiwic2VhcmNoIiwidGV4dGlucHV0IiwiVU5ERUZJTkVEX0NPREVfUE9JTlRTIiwiRU9GIiwiTlVMTCIsIlRBQlVMQVRJT04iLCJDQVJSSUFHRV9SRVRVUk4iLCJMSU5FX0ZFRUQiLCJGT1JNX0ZFRUQiLCJTUEFDRSIsIkVYQ0xBTUFUSU9OX01BUksiLCJRVU9UQVRJT05fTUFSSyIsIk5VTUJFUl9TSUdOIiwiQU1QRVJTQU5EIiwiQVBPU1RST1BIRSIsIkhZUEhFTl9NSU5VUyIsIlNPTElEVVMiLCJESUdJVF8wIiwiRElHSVRfOSIsIlNFTUlDT0xPTiIsIkxFU1NfVEhBTl9TSUdOIiwiRVFVQUxTX1NJR04iLCJHUkVBVEVSX1RIQU5fU0lHTiIsIlFVRVNUSU9OX01BUksiLCJMQVRJTl9DQVBJVEFMX0EiLCJMQVRJTl9DQVBJVEFMX0YiLCJMQVRJTl9DQVBJVEFMX1giLCJMQVRJTl9DQVBJVEFMX1oiLCJSSUdIVF9TUVVBUkVfQlJBQ0tFVCIsIkdSQVZFX0FDQ0VOVCIsIkxBVElOX1NNQUxMX0EiLCJMQVRJTl9TTUFMTF9GIiwiTEFUSU5fU01BTExfWCIsIkxBVElOX1NNQUxMX1oiLCJSRVBMQUNFTUVOVF9DSEFSQUNURVIiLCJEQVNIX0RBU0hfU1RSSU5HIiwiRE9DVFlQRV9TVFJJTkciLCJDREFUQV9TVEFSVF9TVFJJTkciLCJTQ1JJUFRfU1RSSU5HIiwiUFVCTElDX1NUUklORyIsIlNZU1RFTV9TVFJJTkciLCJjcCIsImNwMSIsImNwMiIsImNvbnRyb2xDaGFyYWN0ZXJJbklucHV0U3RyZWFtIiwibm9uY2hhcmFjdGVySW5JbnB1dFN0cmVhbSIsInN1cnJvZ2F0ZUluSW5wdXRTdHJlYW0iLCJub25Wb2lkSHRtbEVsZW1lbnRTdGFydFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMiLCJlbmRUYWdXaXRoQXR0cmlidXRlcyIsImVuZFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMiLCJ1bmV4cGVjdGVkU29saWR1c0luVGFnIiwidW5leHBlY3RlZE51bGxDaGFyYWN0ZXIiLCJ1bmV4cGVjdGVkUXVlc3Rpb25NYXJrSW5zdGVhZE9mVGFnTmFtZSIsImludmFsaWRGaXJzdENoYXJhY3Rlck9mVGFnTmFtZSIsInVuZXhwZWN0ZWRFcXVhbHNTaWduQmVmb3JlQXR0cmlidXRlTmFtZSIsIm1pc3NpbmdFbmRUYWdOYW1lIiwidW5leHBlY3RlZENoYXJhY3RlckluQXR0cmlidXRlTmFtZSIsInVua25vd25OYW1lZENoYXJhY3RlclJlZmVyZW5jZSIsIm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSIsInVuZXhwZWN0ZWRDaGFyYWN0ZXJBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwidW5leHBlY3RlZENoYXJhY3RlckluVW5xdW90ZWRBdHRyaWJ1dGVWYWx1ZSIsImVvZkJlZm9yZVRhZ05hbWUiLCJlb2ZJblRhZyIsIm1pc3NpbmdBdHRyaWJ1dGVWYWx1ZSIsIm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkF0dHJpYnV0ZXMiLCJtaXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQiLCJtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5Eb2N0eXBlUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnMiLCJtaXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVN5c3RlbUtleXdvcmQiLCJtaXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllciIsIm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwibWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyIiwibWlzc2luZ0RvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwiYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIiLCJhYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllciIsImNkYXRhSW5IdG1sQ29udGVudCIsImluY29ycmVjdGx5T3BlbmVkQ29tbWVudCIsImVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCIsImVvZkluRG9jdHlwZSIsIm5lc3RlZENvbW1lbnQiLCJhYnJ1cHRDbG9zaW5nT2ZFbXB0eUNvbW1lbnQiLCJlb2ZJbkNvbW1lbnQiLCJpbmNvcnJlY3RseUNsb3NlZENvbW1lbnQiLCJlb2ZJbkNkYXRhIiwiYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlIiwibnVsbENoYXJhY3RlclJlZmVyZW5jZSIsInN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZSIsImNoYXJhY3RlclJlZmVyZW5jZU91dHNpZGVVbmljb2RlUmFuZ2UiLCJjb250cm9sQ2hhcmFjdGVyUmVmZXJlbmNlIiwibm9uY2hhcmFjdGVyQ2hhcmFjdGVyUmVmZXJlbmNlIiwibWlzc2luZ1doaXRlc3BhY2VCZWZvcmVEb2N0eXBlTmFtZSIsIm1pc3NpbmdEb2N0eXBlTmFtZSIsImludmFsaWRDaGFyYWN0ZXJTZXF1ZW5jZUFmdGVyRG9jdHlwZU5hbWUiLCJkdXBsaWNhdGVBdHRyaWJ1dGUiLCJub25Db25mb3JtaW5nRG9jdHlwZSIsIm1pc3NpbmdEb2N0eXBlIiwibWlzcGxhY2VkRG9jdHlwZSIsImVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50IiwiY2xvc2luZ09mRWxlbWVudFdpdGhPcGVuQ2hpbGRFbGVtZW50cyIsImRpc2FsbG93ZWRDb250ZW50SW5Ob3NjcmlwdEluSGVhZCIsIm9wZW5FbGVtZW50c0xlZnRBZnRlckVvZiIsImFiYW5kb25lZEhlYWRFbGVtZW50Q2hpbGQiLCJtaXNwbGFjZWRTdGFydFRhZ0ZvckhlYWRFbGVtZW50IiwibmVzdGVkTm9zY3JpcHRJbkhlYWQiLCJlb2ZJbkVsZW1lbnRUaGF0Q2FuQ29udGFpbk9ubHlUZXh0IiwiJCIsInVuaWNvZGUiLCJDT0RFX1BPSU5UUyIsIkRFRkFVTFRfQlVGRkVSX1dBVEVSTElORSIsIltvYmplY3QgT2JqZWN0XSIsImxhc3RHYXBQb3MiLCJsYXN0Q2hhclBvcyIsImdhcFN0YWNrIiwic2tpcE5leHROZXdMaW5lIiwibGFzdENodW5rV3JpdHRlbiIsImVuZE9mQ2h1bmtIaXQiLCJidWZmZXJXYXRlcmxpbmUiLCJuZXh0Q3AiLCJpc1N1cnJvZ2F0ZVBhaXIiLCJfYWRkR2FwIiwiZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludCIsIl9lcnIiLCJFUlIiLCJjaHVuayIsImlzTGFzdENodW5rIiwiYWR2YW5jZSIsImlzU3Vycm9nYXRlIiwiX3Byb2Nlc3NTdXJyb2dhdGUiLCJfY2hlY2tGb3JQcm9ibGVtYXRpY0NoYXJhY3RlcnMiLCJpc0NvbnRyb2xDb2RlUG9pbnQiLCJpc1VuZGVmaW5lZENvZGVQb2ludCIsIlVpbnQxNkFycmF5IiwiJCQiLCJDT0RFX1BPSU5UX1NFUVVFTkNFUyIsIkMxX0NPTlRST0xTX1JFRkVSRU5DRV9SRVBMQUNFTUVOVFMiLCIxMjgiLCIxMzAiLCIxMzEiLCIxMzIiLCIxMzMiLCIxMzQiLCIxMzUiLCIxMzYiLCIxMzciLCIxMzgiLCIxMzkiLCIxNDAiLCIxNDIiLCIxNDUiLCIxNDYiLCIxNDciLCIxNDgiLCIxNDkiLCIxNTAiLCIxNTEiLCIxNTIiLCIxNTMiLCIxNTQiLCIxNTUiLCIxNTYiLCIxNTgiLCIxNTkiLCJIQVNfREFUQV9GTEFHIiwiREFUQV9EVVBMRVRfRkxBRyIsIkhBU19CUkFOQ0hFU19GTEFHIiwiTUFYX0JSQU5DSF9NQVJLRVJfVkFMVUUiLCJEQVRBX1NUQVRFIiwiUkNEQVRBX1NUQVRFIiwiUkFXVEVYVF9TVEFURSIsIlNDUklQVF9EQVRBX1NUQVRFIiwiUExBSU5URVhUX1NUQVRFIiwiVEFHX09QRU5fU1RBVEUiLCJFTkRfVEFHX09QRU5fU1RBVEUiLCJUQUdfTkFNRV9TVEFURSIsIlJDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlJDREFUQV9FTkRfVEFHX09QRU5fU1RBVEUiLCJSQ0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFIiwiUkFXVEVYVF9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlJBV1RFWFRfRU5EX1RBR19PUEVOX1NUQVRFIiwiUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUiLCJTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlNDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURSIsIlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRV9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEUiLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX1NUQVJUX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUiLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEUiLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURSIsIkJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSIsIkFUVFJJQlVURV9OQU1FX1NUQVRFIiwiQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUiLCJCRUZPUkVfQVRUUklCVVRFX1ZBTFVFX1NUQVRFIiwiQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURfU1RBVEUiLCJBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSIsIkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRF9TVEFURSIsIkFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURfU1RBVEUiLCJTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFIiwiQk9HVVNfQ09NTUVOVF9TVEFURSIsIk1BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFIiwiQ09NTUVOVF9TVEFSVF9TVEFURSIsIkNPTU1FTlRfU1RBUlRfREFTSF9TVEFURSIsIkNPTU1FTlRfU1RBVEUiLCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX1NUQVRFIiwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX1NUQVRFIiwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfU1RBVEUiLCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9EQVNIX1NUQVRFIiwiQ09NTUVOVF9FTkRfREFTSF9TVEFURSIsIkNPTU1FTlRfRU5EX1NUQVRFIiwiQ09NTUVOVF9FTkRfQkFOR19TVEFURSIsIkRPQ1RZUEVfU1RBVEUiLCJCRUZPUkVfRE9DVFlQRV9OQU1FX1NUQVRFIiwiRE9DVFlQRV9OQU1FX1NUQVRFIiwiQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFIiwiQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRF9TVEFURSIsIkJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFIiwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFIiwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFIiwiQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURSIsIkJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSU19TVEFURSIsIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkRfU1RBVEUiLCJCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSIsIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURSIsIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURSIsIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEUiLCJCT0dVU19ET0NUWVBFX1NUQVRFIiwiQ0RBVEFfU0VDVElPTl9TVEFURSIsIkNEQVRBX1NFQ1RJT05fQlJBQ0tFVF9TVEFURSIsIkNEQVRBX1NFQ1RJT05fRU5EX1NUQVRFIiwiQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSIsIk5BTUVEX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUiLCJBTUJJR1VPVVNfQU1QRVJTQU5EX1NUQVRFIiwiTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFIiwiSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSIsIkRFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSIsIkhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUiLCJERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUiLCJOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFIiwiaXNXaGl0ZXNwYWNlIiwiaXNBc2NpaURpZ2l0IiwiaXNBc2NpaVVwcGVyIiwiaXNBc2NpaUxvd2VyIiwiaXNBc2NpaUxldHRlciIsImlzQXNjaWlBbHBoYU51bWVyaWMiLCJpc0FzY2lpVXBwZXJIZXhEaWdpdCIsImlzQXNjaWlMb3dlckhleERpZ2l0IiwidG9Bc2NpaUxvd2VyQ29kZVBvaW50IiwidG9DaGFyIiwidG9Bc2NpaUxvd2VyQ2hhciIsImZpbmROYW1lZEVudGl0eVRyZWVCcmFuY2giLCJub2RlSXgiLCJicmFuY2hDb3VudCIsIm5lVHJlZSIsImxvIiwiaGkiLCJtaWQiLCJtaWRDcCIsIlRva2VuaXplciIsIlByZXByb2Nlc3NvciIsInRva2VuUXVldWUiLCJhbGxvd0NEQVRBIiwic3RhdGUiLCJyZXR1cm5TdGF0ZSIsImNoYXJSZWZDb2RlIiwidGVtcEJ1ZmYiLCJsYXN0U3RhcnRUYWdOYW1lIiwiY29uc3VtZWRBZnRlclNuYXBzaG90IiwiYWN0aXZlIiwiY3VycmVudENoYXJhY3RlclRva2VuIiwiY3VycmVudFRva2VuIiwiY3VycmVudEF0dHIiLCJfY29uc3VtZSIsIl91bmNvbnN1bWUiLCJfZW5zdXJlSGliZXJuYXRpb24iLCJzaGlmdCIsIndyaXRlIiwiaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyIsInJldHJlYXQiLCJISUJFUk5BVElPTl9UT0tFTiIsInBhdHRlcm4iLCJzdGFydENwIiwiY2FzZVNlbnNpdGl2ZSIsImNvbnN1bWVkQ291bnQiLCJpc01hdGNoIiwicGF0dGVybkxlbmd0aCIsInBhdHRlcm5Qb3MiLCJwYXR0ZXJuQ3AiLCJTVEFSVF9UQUdfVE9LRU4iLCJzZWxmQ2xvc2luZyIsImFja1NlbGZDbG9zaW5nIiwiYXR0cnMiLCJFTkRfVEFHX1RPS0VOIiwiQ09NTUVOVF9UT0tFTiIsImluaXRpYWxOYW1lIiwiRE9DVFlQRV9UT0tFTiIsImZvcmNlUXVpcmtzIiwicHVibGljSWQiLCJzeXN0ZW1JZCIsIkVPRl9UT0tFTiIsImF0dHJOYW1lRmlyc3RDaCIsInRvU3RhdGUiLCJnZXRUb2tlbkF0dHIiLCJfZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbiIsImN0IiwiX2NyZWF0ZUVPRlRva2VuIiwiX2VtaXRDdXJyZW50VG9rZW4iLCJfY3JlYXRlQ2hhcmFjdGVyVG9rZW4iLCJDSEFSQUNURVJfVE9LRU4iLCJXSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTiIsIk5VTExfQ0hBUkFDVEVSX1RPS0VOIiwiX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbiIsImNvZGVQb2ludHMiLCJfZW1pdENvZGVQb2ludCIsImV4Y2VzcyIsImluTm9kZSIsIndpdGhTZW1pY29sb24iLCJfaXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSIsIl9lbWl0U2V2ZXJhbENvZGVQb2ludHMiLCJkcm9wUGFyc2VkQ2h1bmsiLCJfZW1pdEVPRlRva2VuIiwiX2VtaXRDaGFycyIsIl9jcmVhdGVTdGFydFRhZ1Rva2VuIiwiX3JlY29uc3VtZUluU3RhdGUiLCJfY3JlYXRlQ29tbWVudFRva2VuIiwiX2NyZWF0ZUVuZFRhZ1Rva2VuIiwiX2lzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmciLCJfY3JlYXRlQXR0ciIsIl9sZWF2ZUF0dHJOYW1lIiwiX2xlYXZlQXR0clZhbHVlIiwiX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2giLCJfY3JlYXRlRG9jdHlwZVRva2VuIiwiX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UiLCJtYXRjaFJlc3VsdCIsIl9tYXRjaE5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlIiwiX2lzQ2hhcmFjdGVyUmVmZXJlbmNlQXR0cmlidXRlUXVpcmsiLCJfZXJyT25OZXh0Q29kZVBvaW50IiwiaXNBc2NpaUhleERpZ2l0IiwicmVwbGFjZW1lbnQiLCJNT0RFIiwiREFUQSIsIlJDREFUQSIsIlJBV1RFWFQiLCJTQ1JJUFRfREFUQSIsIlBMQUlOVEVYVCIsInRva2VuIiwiYXR0ck5hbWUiLCJOUyIsIkhUTUwiLCJNQVRITUwiLCJTVkciLCJYTElOSyIsIlhNTCIsIlhNTE5TIiwiQUNUSU9OIiwiRU5DT0RJTkciLCJDT0xPUiIsIkZBQ0UiLCJTSVpFIiwiTk9fUVVJUktTIiwiUVVJUktTIiwiTElNSVRFRF9RVUlSS1MiLCJBIiwiQUREUkVTUyIsIkFOTk9UQVRJT05fWE1MIiwiQVBQTEVUIiwiQVJFQSIsIkFSVElDTEUiLCJBU0lERSIsIkIiLCJCQVNFIiwiQkFTRUZPTlQiLCJCR1NPVU5EIiwiQklHIiwiQkxPQ0tRVU9URSIsIkJSIiwiQlVUVE9OIiwiQ0FQVElPTiIsIkNFTlRFUiIsIkNPREUiLCJDT0wiLCJDT0xHUk9VUCIsIkREIiwiREVTQyIsIkRFVEFJTFMiLCJESUFMT0ciLCJESVIiLCJESVYiLCJETCIsIkRUIiwiRU0iLCJFTUJFRCIsIkZJRUxEU0VUIiwiRklHQ0FQVElPTiIsIkZJR1VSRSIsIkZPTlQiLCJGT09URVIiLCJGT1JFSUdOX09CSkVDVCIsIkZPUk0iLCJGUkFNRSIsIkZSQU1FU0VUIiwiSDEiLCJIMiIsIkgzIiwiSDQiLCJINSIsIkg2IiwiSEVBRCIsIkhFQURFUiIsIkhHUk9VUCIsIkhSIiwiSSIsIklNRyIsIklNQUdFIiwiSU5QVVQiLCJJRlJBTUUiLCJLRVlHRU4iLCJMSSIsIkxJTksiLCJMSVNUSU5HIiwiTUFJTiIsIk1BTElHTk1BUksiLCJNQVJRVUVFIiwiTUFUSCIsIk1FTlUiLCJNRVRBIiwiTUdMWVBIIiwiTUkiLCJNTyIsIk1OIiwiTVMiLCJNVEVYVCIsIk5BViIsIk5PQlIiLCJOT0ZSQU1FUyIsIk5PRU1CRUQiLCJOT1NDUklQVCIsIk9MIiwiT1BUR1JPVVAiLCJPUFRJT04iLCJQIiwiUEFSQU0iLCJQUkUiLCJSQiIsIlJQIiwiUlQiLCJSVEMiLCJSVUJZIiwiUyIsIlNDUklQVCIsIlNFQ1RJT04iLCJTRUxFQ1QiLCJTT1VSQ0UiLCJTTUFMTCIsIlNQQU4iLCJTVFJJS0UiLCJTVFJPTkciLCJTVFlMRSIsIlNVQiIsIlNVTU1BUlkiLCJTVVAiLCJUQUJMRSIsIlRCT0RZIiwiVEVNUExBVEUiLCJURVhUQVJFQSIsIlRGT09UIiwiVEQiLCJUSCIsIlRIRUFEIiwiVFIiLCJUUkFDSyIsIlRUIiwiVSIsIlVMIiwiV0JSIiwiWE1QIiwiVEFHX05BTUVTIiwiTkFNRVNQQUNFUyIsImlzSW1wbGllZEVuZFRhZ1JlcXVpcmVkIiwidG4iLCJpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZFRob3JvdWdobHkiLCJpc1Njb3BpbmdFbGVtZW50IiwibnMiLCJ0cmVlQWRhcHRlciIsInN0YWNrVG9wIiwiY3VycmVudFRhZ05hbWUiLCJjdXJyZW50VG1wbENvbnRlbnQiLCJ0bXBsQ291bnQiLCJlbGVtZW50IiwiaWR4IiwiZ2V0TmFtZXNwYWNlVVJJIiwiZ2V0VGFnTmFtZSIsIl9pc0luVGVtcGxhdGUiLCJnZXRUZW1wbGF0ZUNvbnRlbnQiLCJfdXBkYXRlQ3VycmVudEVsZW1lbnQiLCJvbGRFbGVtZW50IiwibmV3RWxlbWVudCIsIl9pbmRleE9mIiwicmVmZXJlbmNlRWxlbWVudCIsImluc2VydGlvbklkeCIsInBvcHBlZEVsZW1lbnQiLCJlbGVtZW50SWR4IiwiZXhjbHVzaW9uVGFnTmFtZSIsIk5PQUhfQVJLX0NBUEFDSVRZIiwiRm9ybWF0dGluZ0VsZW1lbnRMaXN0IiwiZW50cmllcyIsImJvb2ttYXJrIiwiY2FuZGlkYXRlcyIsIm5lQXR0cnNMZW5ndGgiLCJnZXRBdHRyTGlzdCIsIm5lVGFnTmFtZSIsIm5lTmFtZXNwYWNlVVJJIiwiZW50cnkiLCJNQVJLRVJfRU5UUlkiLCJlbGVtZW50QXR0cnMiLCJfZ2V0Tm9haEFya0NvbmRpdGlvbkNhbmRpZGF0ZXMiLCJjTGVuZ3RoIiwibmVBdHRycyIsIm5lQXR0cnNNYXAiLCJuZUF0dHIiLCJqIiwiY0F0dHIiLCJfZW5zdXJlTm9haEFya0NvbmRpdGlvbiIsIkVMRU1FTlRfRU5UUlkiLCJib29rbWFya0lkeCIsIk1peGluIiwiaG9zdCIsIm9yaWdpbmFsTWV0aG9kcyIsIm92ZXJyaWRkZW5NZXRob2RzIiwiX2dldE92ZXJyaWRkZW5NZXRob2RzIiwiaW5zdGFsbCIsIkN0b3IiLCJfX21peGlucyIsImNvbnN0cnVjdG9yIiwibWl4aW4iLCJzdXBlciIsImlzRW9sIiwibGluZVN0YXJ0UG9zIiwiZHJvcHBlZEJ1ZmZlclNpemUiLCJjb2wiLCJteG4iLCJvcmlnIiwicHJldlBvcyIsInJlZHVjdGlvbiIsInRva2VuaXplciIsInBvc1RyYWNrZXIiLCJQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW4iLCJjdXJyZW50QXR0ckxvY2F0aW9uIiwiY3RMb2MiLCJzdGFydExpbmUiLCJzdGFydENvbCIsInN0YXJ0T2Zmc2V0IiwiZW5kTGluZSIsImVuZENvbCIsImVuZE9mZnNldCIsImxvY2F0aW9uIiwibWV0aG9kcyIsIl9nZXRDdXJyZW50TG9jYXRpb24iLCJfYXR0YWNoQ3VycmVudEF0dHJMb2NhdGlvbkluZm8iLCJtb2RlTmFtZSIsIm9uSXRlbVBvcCIsInBvcEFsbFVwVG9IdG1sRWxlbWVudCIsInJlbW92ZSIsImxhc3RTdGFydFRhZ1Rva2VuIiwibGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uIiwibG9jIiwic3RhcnRUYWciLCJzZXROb2RlU291cmNlQ29kZUxvY2F0aW9uIiwiY2xvc2luZ1Rva2VuIiwiZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbiIsImVuZFRhZyIsImZyYWdtZW50Q29udGV4dCIsIl9ib290c3RyYXAiLCJ0b2tlbml6ZXJNaXhpbiIsIkxvY2F0aW9uSW5mb1Rva2VuaXplck1peGluIiwib3BlbkVsZW1lbnRzIiwiTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluIiwiX3NldEVuZExvY2F0aW9uIiwic2NyaXB0SGFuZGxlciIsIl9ydW5QYXJzaW5nTG9vcCIsIl9wcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50IiwiX3Byb2Nlc3NUb2tlbiIsImhhc0luU2NvcGUiLCJfc2V0RG9jdW1lbnRUeXBlIiwiZG9jdW1lbnRDaGlsZHJlbiIsImdldENoaWxkTm9kZXMiLCJjbkxlbmd0aCIsImlzRG9jdW1lbnRUeXBlTm9kZSIsIl9zZXRTdGFydExvY2F0aW9uIiwiX2F0dGFjaEVsZW1lbnRUb1RyZWUiLCJuYW1lc3BhY2VVUkkiLCJfYXBwZW5kRWxlbWVudCIsIl9pbnNlcnRFbGVtZW50IiwiX2luc2VydFRlbXBsYXRlIiwidG1wbENvbnRlbnQiLCJfaW5zZXJ0RmFrZVJvb3RFbGVtZW50IiwiX2FwcGVuZENvbW1lbnROb2RlIiwiY29tbWVudE5vZGUiLCJfZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uIiwiX2luc2VydENoYXJhY3RlcnMiLCJoYXNGb3N0ZXJQYXJlbnQiLCJfc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24iLCJ0ZXh0Tm9kZSIsImJlZm9yZUVsZW1lbnQiLCJ0bkxvYyIsIm9uUGFyc2VFcnJvciIsIl9zZXRFcnJvckxvY2F0aW9uIiwiX3JlcG9ydEVycm9yIiwiRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2UiLCJsYXN0RXJyT2Zmc2V0IiwicHJlcHJvY2Vzc29yTWl4aW4iLCJFcnJvclJlcG9ydGluZ1ByZXByb2Nlc3Nvck1peGluIiwibG9jQmVmb3JlVG9rZW4iLCJFcnJvclJlcG9ydGluZ1Rva2VuaXplck1peGluIiwiX3Byb2Nlc3NJbnB1dFRva2VuIiwiYmVmb3JlVG9rZW4iLCJET0NVTUVOVF9NT0RFIiwiY2hpbGROb2RlcyIsImNyZWF0ZVRleHROb2RlIiwiYXBwZW5kQ2hpbGQiLCJuZXdOb2RlIiwiaW5zZXJ0QmVmb3JlIiwicmVmZXJlbmNlTm9kZSIsInRlbXBsYXRlRWxlbWVudCIsImNvbnRlbnRFbGVtZW50IiwiZG9jdHlwZU5vZGUiLCJwcmV2Tm9kZSIsInJlY2lwaWVudCIsInJlY2lwaWVudEF0dHJzTWFwIiwic291cmNlQ29kZUxvY2F0aW9uIiwiZGVmYXVsdHMiLCJyZWR1Y2UiLCJtZXJnZWQiLCJvcHRPYmoiLCJRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMiLCJRVUlSS1NfTU9ERV9OT19TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTIiwiUVVJUktTX01PREVfUFVCTElDX0lEUyIsIkxJTUlURURfUVVJUktTX1BVQkxJQ19JRF9QUkVGSVhFUyIsIkxJTUlURURfUVVJUktTX1dJVEhfU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyIsImVucXVvdGVEb2N0eXBlSWQiLCJoYXNQcmVmaXgiLCJwcmVmaXhlcyIsIkFUVFJTIiwiTUlNRV9UWVBFUyIsIlRFWFRfSFRNTCIsIkFQUExJQ0FUSU9OX1hNTCIsIlNWR19BVFRSU19BREpVU1RNRU5UX01BUCIsImF0dHJpYnV0ZW5hbWUiLCJhdHRyaWJ1dGV0eXBlIiwiYmFzZWZyZXF1ZW5jeSIsImJhc2Vwcm9maWxlIiwiY2FsY21vZGUiLCJjbGlwcGF0aHVuaXRzIiwiZGlmZnVzZWNvbnN0YW50IiwiZWRnZW1vZGUiLCJmaWx0ZXJ1bml0cyIsImdseXBocmVmIiwiZ3JhZGllbnR0cmFuc2Zvcm0iLCJncmFkaWVudHVuaXRzIiwia2VybmVsbWF0cml4Iiwia2VybmVsdW5pdGxlbmd0aCIsImtleXBvaW50cyIsImtleXNwbGluZXMiLCJrZXl0aW1lcyIsImxlbmd0aGFkanVzdCIsImxpbWl0aW5nY29uZWFuZ2xlIiwibWFya2VyaGVpZ2h0IiwibWFya2VydW5pdHMiLCJtYXJrZXJ3aWR0aCIsIm1hc2tjb250ZW50dW5pdHMiLCJtYXNrdW5pdHMiLCJudW1vY3RhdmVzIiwicGF0aGxlbmd0aCIsInBhdHRlcm5jb250ZW50dW5pdHMiLCJwYXR0ZXJudHJhbnNmb3JtIiwicGF0dGVybnVuaXRzIiwicG9pbnRzYXR4IiwicG9pbnRzYXR5IiwicG9pbnRzYXR6IiwicHJlc2VydmVhbHBoYSIsInByZXNlcnZlYXNwZWN0cmF0aW8iLCJwcmltaXRpdmV1bml0cyIsInJlZngiLCJyZWZ5IiwicmVwZWF0Y291bnQiLCJyZXBlYXRkdXIiLCJyZXF1aXJlZGV4dGVuc2lvbnMiLCJyZXF1aXJlZGZlYXR1cmVzIiwic3BlY3VsYXJjb25zdGFudCIsInNwZWN1bGFyZXhwb25lbnQiLCJzcHJlYWRtZXRob2QiLCJzdGFydG9mZnNldCIsInN0ZGRldmlhdGlvbiIsInN0aXRjaHRpbGVzIiwic3VyZmFjZXNjYWxlIiwic3lzdGVtbGFuZ3VhZ2UiLCJ0YWJsZXZhbHVlcyIsInRhcmdldHgiLCJ0YXJnZXR5IiwidGV4dGxlbmd0aCIsInZpZXdib3giLCJ2aWV3dGFyZ2V0IiwieGNoYW5uZWxzZWxlY3RvciIsInljaGFubmVsc2VsZWN0b3IiLCJ6b29tYW5kcGFuIiwiWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQIiwieGxpbms6YWN0dWF0ZSIsInhsaW5rOmFyY3JvbGUiLCJ4bGluazpocmVmIiwieGxpbms6cm9sZSIsInhsaW5rOnNob3ciLCJ4bGluazp0aXRsZSIsInhsaW5rOnR5cGUiLCJ4bWw6YmFzZSIsInhtbDpsYW5nIiwieG1sOnNwYWNlIiwieG1sbnMiLCJ4bWxuczp4bGluayIsIlNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAiLCJhbHRnbHlwaCIsImFsdGdseXBoZGVmIiwiYWx0Z2x5cGhpdGVtIiwiYW5pbWF0ZWNvbG9yIiwiYW5pbWF0ZW1vdGlvbiIsImFuaW1hdGV0cmFuc2Zvcm0iLCJjbGlwcGF0aCIsImZlYmxlbmQiLCJmZWNvbG9ybWF0cml4IiwiZmVjb21wb25lbnR0cmFuc2ZlciIsImZlY29tcG9zaXRlIiwiZmVjb252b2x2ZW1hdHJpeCIsImZlZGlmZnVzZWxpZ2h0aW5nIiwiZmVkaXNwbGFjZW1lbnRtYXAiLCJmZWRpc3RhbnRsaWdodCIsImZlZmxvb2QiLCJmZWZ1bmNhIiwiZmVmdW5jYiIsImZlZnVuY2ciLCJmZWZ1bmNyIiwiZmVnYXVzc2lhbmJsdXIiLCJmZWltYWdlIiwiZmVtZXJnZSIsImZlbWVyZ2Vub2RlIiwiZmVtb3JwaG9sb2d5IiwiZmVvZmZzZXQiLCJmZXBvaW50bGlnaHQiLCJmZXNwZWN1bGFybGlnaHRpbmciLCJmZXNwb3RsaWdodCIsImZldGlsZSIsImZldHVyYnVsZW5jZSIsImZvcmVpZ25vYmplY3QiLCJsaW5lYXJncmFkaWVudCIsInJhZGlhbGdyYWRpZW50IiwidGV4dHBhdGgiLCJFWElUU19GT1JFSUdOX0NPTlRFTlQiLCJzdGFydFRhZ1Rva2VuIiwiYWRqdXN0ZWRBdHRyTmFtZSIsImFkanVzdGVkQXR0ckVudHJ5IiwiYWRqdXN0ZWRUYWdOYW1lIiwiZm9yZWlnbk5TIiwiaXNIdG1sSW50ZWdyYXRpb25Qb2ludCIsImlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQiLCJERUZBVUxUX09QVElPTlMiLCJzY3JpcHRpbmdFbmFibGVkIiwic291cmNlQ29kZUxvY2F0aW9uSW5mbyIsImRlZmF1bHRUcmVlQWRhcHRlciIsIkhJRERFTl9JTlBVVF9UWVBFIiwiQUFfT1VURVJfTE9PUF9JVEVSIiwiQUFfSU5ORVJfTE9PUF9JVEVSIiwiSU5JVElBTF9NT0RFIiwiQkVGT1JFX0hUTUxfTU9ERSIsIkJFRk9SRV9IRUFEX01PREUiLCJJTl9IRUFEX01PREUiLCJJTl9IRUFEX05PX1NDUklQVF9NT0RFIiwiQUZURVJfSEVBRF9NT0RFIiwiSU5fQk9EWV9NT0RFIiwiVEVYVF9NT0RFIiwiSU5fVEFCTEVfTU9ERSIsIklOX1RBQkxFX1RFWFRfTU9ERSIsIklOX0NBUFRJT05fTU9ERSIsIklOX0NPTFVNTl9HUk9VUF9NT0RFIiwiSU5fVEFCTEVfQk9EWV9NT0RFIiwiSU5fUk9XX01PREUiLCJJTl9DRUxMX01PREUiLCJJTl9TRUxFQ1RfTU9ERSIsIklOX1NFTEVDVF9JTl9UQUJMRV9NT0RFIiwiSU5fVEVNUExBVEVfTU9ERSIsIkFGVEVSX0JPRFlfTU9ERSIsIklOX0ZSQU1FU0VUX01PREUiLCJBRlRFUl9GUkFNRVNFVF9NT0RFIiwiQUZURVJfQUZURVJfQk9EWV9NT0RFIiwiQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERSIsIklOU0VSVElPTl9NT0RFX1JFU0VUX01BUCIsIlRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVAiLCJUT0tFTl9IQU5ETEVSUyIsInRva2VuSW5Jbml0aWFsTW9kZSIsImlnbm9yZVRva2VuIiwiYXBwZW5kQ29tbWVudCIsInAiLCJkb2N0eXBlIiwiZ2V0RG9jdW1lbnRNb2RlIiwiaXNDb25mb3JtaW5nIiwic2V0RG9jdW1lbnRNb2RlIiwiaW5zZXJ0aW9uTW9kZSIsInRva2VuQmVmb3JlSHRtbCIsInRva2VuQmVmb3JlSGVhZCIsInN0YXJ0VGFnSW5Cb2R5IiwiaGVhZEVsZW1lbnQiLCJ0b2tlbkluSGVhZCIsImluc2VydENoYXJhY3RlcnMiLCJzdGFydFRhZ0luSGVhZCIsImVuZFRhZ0luSGVhZCIsInRva2VuSW5IZWFkTm9TY3JpcHQiLCJ0b2tlbkFmdGVySGVhZCIsImZyYW1lc2V0T2siLCJjaGFyYWN0ZXJJbkJvZHkiLCJ3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5IiwiZW5kVGFnSW5Cb2R5IiwiZW9mSW5Cb2R5IiwicGVuZGluZ1NjcmlwdCIsIm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSIsImNoYXJhY3RlckluVGFibGUiLCJzdGFydFRhZ0luVGFibGUiLCJlbmRUYWdJblRhYmxlIiwicGVuZGluZ0NoYXJhY3RlclRva2VucyIsImhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4iLCJ0b2tlbkluVGFibGVUZXh0IiwiaGFzSW5UYWJsZVNjb3BlIiwiZ2VuZXJhdGVJbXBsaWVkRW5kVGFncyIsInBvcFVudGlsVGFnTmFtZVBvcHBlZCIsImFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cyIsImNsZWFyVG9MYXN0TWFya2VyIiwidG9rZW5JbkNvbHVtbkdyb3VwIiwiY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0IiwiX2luc2VydEZha2VFbGVtZW50IiwiaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSIsImNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0IiwiaW5zZXJ0TWFya2VyIiwiX2Nsb3NlVGFibGVDZWxsIiwic3RhcnRUYWdJblNlbGVjdCIsImVuZFRhZ0luU2VsZWN0IiwiX3Jlc2V0SW5zZXJ0aW9uTW9kZSIsIm5ld0luc2VydGlvbk1vZGUiLCJfcG9wVG1wbEluc2VydGlvbk1vZGUiLCJfcHVzaFRtcGxJbnNlcnRpb25Nb2RlIiwiZW9mSW5UZW1wbGF0ZSIsInRva2VuQWZ0ZXJCb2R5Iiwic3RvcFBhcnNpbmciLCJpc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQiLCJ0b2tlbkFmdGVyQWZ0ZXJCb2R5IiwiYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQiLCJtZXJnZU9wdGlvbnMiLCJMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiIsIkVycm9yUmVwb3J0aW5nUGFyc2VyTWl4aW4iLCJjcmVhdGVEb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJkb2N1bWVudE1vY2siLCJfaW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZyIsIl9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0Iiwicm9vdEVsZW1lbnQiLCJnZXRGaXJzdENoaWxkIiwiZnJhZ21lbnQiLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwiX2Fkb3B0Tm9kZXMiLCJzdG9wcGVkIiwiZm9ybUVsZW1lbnQiLCJPcGVuRWxlbWVudFN0YWNrIiwidG1wbEluc2VydGlvbk1vZGVTdGFjayIsInRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AiLCJjdXJyZW50VG1wbEluc2VydGlvbk1vZGUiLCJmb3N0ZXJQYXJlbnRpbmdFbmFibGVkIiwiX3NldHVwVG9rZW5pemVyQ0RBVEFNb2RlIiwiZ2V0TmV4dFRva2VuIiwid3JpdGVDYWxsYmFjayIsInNjcmlwdCIsIl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50IiwiX2lzSW50ZWdyYXRpb25Qb2ludCIsIm5leHRUb2tlbml6ZXJTdGF0ZSIsImdldFBhcmVudE5vZGUiLCJzZXREb2N1bWVudFR5cGUiLCJfZm9zdGVyUGFyZW50RWxlbWVudCIsInRtcGwiLCJzZXRUZW1wbGF0ZUNvbnRlbnQiLCJjcmVhdGVDb21tZW50Tm9kZSIsIl9mb3N0ZXJQYXJlbnRUZXh0IiwiaW5zZXJ0VGV4dCIsImRvbm9yIiwiZGV0YWNoTm9kZSIsImlzQ2hhcmFjdGVyVG9rZW4iLCJjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50IiwibnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQiLCJmb3JlaWduQ29udGVudCIsImNhdXNlc0V4aXQiLCJjdXJyZW50TnMiLCJhZGp1c3RUb2tlbk1hdGhNTEF0dHJzIiwiYWRqdXN0VG9rZW5TVkdUYWdOYW1lIiwiYWRqdXN0VG9rZW5TVkdBdHRycyIsImFkanVzdFRva2VuWE1MQXR0cnMiLCJzdGFydFRhZ0luRm9yZWlnbkNvbnRlbnQiLCJwb3BVbnRpbEVsZW1lbnRQb3BwZWQiLCJlbmRUYWdJbkZvcmVpZ25Db250ZW50IiwiX3Nob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQiLCJpc0ludGVncmF0aW9uUG9pbnQiLCJsaXN0TGVuZ3RoIiwidW5vcGVuSWR4IiwicG9wVW50aWxUYWJsZUNlbGxQb3BwZWQiLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbiIsImxhc3QiLCJfcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0Iiwic2VsZWN0SWR4IiwiYW5jZXN0b3IiLCJfaXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nIiwib3BlbkVsZW1lbnQiLCJpbnNlcnRUZXh0QmVmb3JlIiwiU1BFQ0lBTF9FTEVNRU5UUyIsImFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeSIsImZvcm1hdHRpbmdFbGVtZW50RW50cnkiLCJnZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUiLCJyZW1vdmVFbnRyeSIsImdlbmVyaWNFbmRUYWdJbkJvZHkiLCJhYU9idGFpbkZ1cnRoZXN0QmxvY2siLCJmdXJ0aGVzdEJsb2NrIiwiX2lzU3BlY2lhbEVsZW1lbnQiLCJhYUlubmVyTG9vcCIsImZvcm1hdHRpbmdFbGVtZW50IiwibGFzdEVsZW1lbnQiLCJuZXh0RWxlbWVudCIsImdldENvbW1vbkFuY2VzdG9yIiwiZWxlbWVudEVudHJ5IiwiZ2V0RWxlbWVudEVudHJ5IiwiY291bnRlck92ZXJmbG93IiwiYWFSZWNyZWF0ZUVsZW1lbnRGcm9tRW50cnkiLCJhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvciIsImNvbW1vbkFuY2VzdG9yIiwiYWFSZXBsYWNlRm9ybWF0dGluZ0VsZW1lbnQiLCJpbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayIsImluc2VydEFmdGVyIiwiY2FsbEFkb3B0aW9uQWdlbmN5IiwiX3N3aXRjaFRvVGV4dFBhcnNpbmciLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzVGhvcm91Z2hseSIsImVyckNvZGUiLCJfcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMiLCJhZGRyZXNzU3RhcnRUYWdJbkJvZHkiLCJoYXNJbkJ1dHRvblNjb3BlIiwiX2Nsb3NlUEVsZW1lbnQiLCJwcmVTdGFydFRhZ0luQm9keSIsImJTdGFydFRhZ0luQm9keSIsInB1c2hFbGVtZW50IiwiYXBwbGV0U3RhcnRUYWdJbkJvZHkiLCJhcmVhU3RhcnRUYWdJbkJvZHkiLCJwYXJhbVN0YXJ0VGFnSW5Cb2R5Iiwibm9lbWJlZFN0YXJ0VGFnSW5Cb2R5Iiwib3B0Z3JvdXBTdGFydFRhZ0luQm9keSIsInJiU3RhcnRUYWdJbkJvZHkiLCJnZW5lcmljU3RhcnRUYWdJbkJvZHkiLCJhY3RpdmVFbGVtZW50RW50cnkiLCJhU3RhcnRUYWdJbkJvZHkiLCJudW1iZXJlZEhlYWRlclN0YXJ0VGFnSW5Cb2R5IiwiZWxlbWVudFRuIiwiY2xvc2VUbiIsImxpc3RJdGVtU3RhcnRUYWdJbkJvZHkiLCJoclN0YXJ0VGFnSW5Cb2R5IiwicnRTdGFydFRhZ0luQm9keSIsInhtcFN0YXJ0VGFnSW5Cb2R5Iiwic3ZnU3RhcnRUYWdJbkJvZHkiLCJhZG9wdEF0dHJpYnV0ZXMiLCJodG1sU3RhcnRUYWdJbkJvZHkiLCJib2R5RWxlbWVudCIsInRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50IiwiYm9keVN0YXJ0VGFnSW5Cb2R5IiwiaW5UZW1wbGF0ZSIsImZvcm1TdGFydFRhZ0luQm9keSIsIm5vYnJTdGFydFRhZ0luQm9keSIsIm1hdGhTdGFydFRhZ0luQm9keSIsIm1lbnVTdGFydFRhZ0luQm9keSIsInRhYmxlU3RhcnRUYWdJbkJvZHkiLCJpbnB1dFR5cGUiLCJpbnB1dFN0YXJ0VGFnSW5Cb2R5IiwiaW1hZ2VTdGFydFRhZ0luQm9keSIsImJ1dHRvblN0YXJ0VGFnSW5Cb2R5IiwiaWZyYW1lU3RhcnRUYWdJbkJvZHkiLCJzZWxlY3RTdGFydFRhZ0luQm9keSIsImZyYW1lc2V0U3RhcnRUYWdJbkJvZHkiLCJ0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5IiwicGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkiLCJhZGRyZXNzRW5kVGFnSW5Cb2R5IiwiYXBwbGV0RW5kVGFnSW5Cb2R5IiwicEVuZFRhZ0luQm9keSIsImhhc0luTGlzdEl0ZW1TY29wZSIsImxpRW5kVGFnSW5Cb2R5IiwiZGRFbmRUYWdJbkJvZHkiLCJoYXNOdW1iZXJlZEhlYWRlckluU2NvcGUiLCJwb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkIiwibnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkiLCJickVuZFRhZ0luQm9keSIsImJvZHlFbmRUYWdJbkJvZHkiLCJodG1sRW5kVGFnSW5Cb2R5IiwiZm9ybUVuZFRhZ0luQm9keSIsImN1clRuIiwidG9rZW5JblRhYmxlIiwiY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQiLCJ0ZFN0YXJ0VGFnSW5UYWJsZSIsImNvbFN0YXJ0VGFnSW5UYWJsZSIsImZvcm1TdGFydFRhZ0luVGFibGUiLCJ0YWJsZVN0YXJ0VGFnSW5UYWJsZSIsInRib2R5U3RhcnRUYWdJblRhYmxlIiwiaW5wdXRTdGFydFRhZ0luVGFibGUiLCJjYXB0aW9uU3RhcnRUYWdJblRhYmxlIiwiY29sZ3JvdXBTdGFydFRhZ0luVGFibGUiLCJzYXZlZEZvc3RlclBhcmVudGluZ1N0YXRlIiwiX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUiLCJoYXNJblNlbGVjdFNjb3BlIiwicHJldk9wZW5FbGVtZW50IiwicHJldk9wZW5FbGVtZW50VG4iLCJTY2hlbWEiLCJwcm9wZXJ0eSIsIm5vcm1hbCIsImluZm8iLCJJbmZvIiwiYXR0cmlidXRlIiwiYm9vbGVhbiIsImJvb2xlYW5pc2giLCJvdmVybG9hZGVkQm9vbGVhbiIsIm51bWJlciIsImNvbW1hU2VwYXJhdGVkIiwic3BhY2VTZXBhcmF0ZWQiLCJjb21tYU9yU3BhY2VTZXBhcmF0ZWQiLCJtdXN0VXNlUHJvcGVydHkiLCJkZWZpbmVkIiwicG93ZXJzIiwiaW5jcmVtZW50IiwiTWF0aCIsInBvdyIsIkRlZmluZWRJbmZvIiwiY2hlY2tzTGVuZ3RoIiwibWFzayIsImNoZWNrIiwibWFyayIsInR5cGVzIiwidHJhbnNmb3JtIiwieExpbmtBY3R1YXRlIiwieExpbmtBcmNSb2xlIiwieExpbmtIcmVmIiwieExpbmtSb2xlIiwieExpbmtTaG93IiwieExpbmtUaXRsZSIsInhMaW5rVHlwZSIsInhtbExhbmciLCJ4bWxCYXNlIiwieG1sU3BhY2UiLCJjYXNlU2Vuc2l0aXZlVHJhbnNmb3JtIiwieG1sbnN4bGluayIsImNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybSIsInhtbG5zWExpbmsiLCJhcmlhQWN0aXZlRGVzY2VuZGFudCIsImFyaWFBdG9taWMiLCJhcmlhQXV0b0NvbXBsZXRlIiwiYXJpYUJ1c3kiLCJhcmlhQ2hlY2tlZCIsImFyaWFDb2xDb3VudCIsImFyaWFDb2xJbmRleCIsImFyaWFDb2xTcGFuIiwiYXJpYUNvbnRyb2xzIiwiYXJpYUN1cnJlbnQiLCJhcmlhRGVzY3JpYmVkQnkiLCJhcmlhRGV0YWlscyIsImFyaWFEaXNhYmxlZCIsImFyaWFEcm9wRWZmZWN0IiwiYXJpYUVycm9yTWVzc2FnZSIsImFyaWFFeHBhbmRlZCIsImFyaWFGbG93VG8iLCJhcmlhR3JhYmJlZCIsImFyaWFIYXNQb3B1cCIsImFyaWFIaWRkZW4iLCJhcmlhSW52YWxpZCIsImFyaWFLZXlTaG9ydGN1dHMiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsImFyaWFMZXZlbCIsImFyaWFMaXZlIiwiYXJpYU1vZGFsIiwiYXJpYU11bHRpTGluZSIsImFyaWFNdWx0aVNlbGVjdGFibGUiLCJhcmlhT3JpZW50YXRpb24iLCJhcmlhT3ducyIsImFyaWFQbGFjZWhvbGRlciIsImFyaWFQb3NJblNldCIsImFyaWFQcmVzc2VkIiwiYXJpYVJlYWRPbmx5IiwiYXJpYVJlbGV2YW50IiwiYXJpYVJlcXVpcmVkIiwiYXJpYVJvbGVEZXNjcmlwdGlvbiIsImFyaWFSb3dDb3VudCIsImFyaWFSb3dJbmRleCIsImFyaWFSb3dTcGFuIiwiYXJpYVNlbGVjdGVkIiwiYXJpYVNldFNpemUiLCJhcmlhU29ydCIsImFyaWFWYWx1ZU1heCIsImFyaWFWYWx1ZU1pbiIsImFyaWFWYWx1ZU5vdyIsImFyaWFWYWx1ZVRleHQiLCJyb2xlIiwibWVyZ2UiLCJ4bWwiLCJ4bGluayIsImFyaWEiLCJhY2NlcHRjaGFyc2V0IiwiaHRtbGZvciIsImh0dHBlcXVpdiIsImFiYnIiLCJhY2NlcHQiLCJhY2NlcHRDaGFyc2V0IiwiYWNjZXNzS2V5IiwiYWN0aW9uIiwiYWxsb3ciLCJhbGxvd0Z1bGxTY3JlZW4iLCJhbGxvd1BheW1lbnRSZXF1ZXN0IiwiYWxsb3dVc2VyTWVkaWEiLCJhcyIsImFzeW5jIiwiYXV0b0NhcGl0YWxpemUiLCJhdXRvQ29tcGxldGUiLCJhdXRvRm9jdXMiLCJhdXRvUGxheSIsImNhcHR1cmUiLCJjaGFyU2V0IiwiY2l0ZSIsImNvbHMiLCJjb2xTcGFuIiwiY29udGVudEVkaXRhYmxlIiwiY29udHJvbHMiLCJjb250cm9sc0xpc3QiLCJjb29yZHMiLCJjcm9zc09yaWdpbiIsImRhdGVUaW1lIiwiZGVjb2RpbmciLCJkZWZhdWx0IiwiZGVmZXIiLCJkaXIiLCJkaXJOYW1lIiwiZG93bmxvYWQiLCJkcmFnZ2FibGUiLCJlbmNUeXBlIiwiZW50ZXJLZXlIaW50IiwiZm9ybSIsImZvcm1BY3Rpb24iLCJmb3JtRW5jVHlwZSIsImZvcm1NZXRob2QiLCJmb3JtTm9WYWxpZGF0ZSIsImZvcm1UYXJnZXQiLCJoZWFkZXJzIiwiaGVpZ2h0IiwiaGlkZGVuIiwiaHJlZkxhbmciLCJodG1sRm9yIiwiaHR0cEVxdWl2IiwiaW1hZ2VTaXplcyIsImltYWdlU3JjU2V0IiwiaW5wdXRNb2RlIiwiaW50ZWdyaXR5IiwiaXNNYXAiLCJpdGVtSWQiLCJpdGVtUHJvcCIsIml0ZW1SZWYiLCJpdGVtU2NvcGUiLCJpdGVtVHlwZSIsImtpbmQiLCJsb29wIiwibWFuaWZlc3QiLCJtYXhMZW5ndGgiLCJtZWRpYSIsIm1ldGhvZCIsIm1pbiIsIm1pbkxlbmd0aCIsIm11bHRpcGxlIiwibXV0ZWQiLCJub25jZSIsIm5vTW9kdWxlIiwibm9WYWxpZGF0ZSIsIm9uQWJvcnQiLCJvbkFmdGVyUHJpbnQiLCJvbkF1eENsaWNrIiwib25CZWZvcmVQcmludCIsIm9uQmVmb3JlVW5sb2FkIiwib25CbHVyIiwib25DYW5jZWwiLCJvbkNhblBsYXkiLCJvbkNhblBsYXlUaHJvdWdoIiwib25DaGFuZ2UiLCJvbkNsaWNrIiwib25DbG9zZSIsIm9uQ29udGV4dE1lbnUiLCJvbkNvcHkiLCJvbkN1ZUNoYW5nZSIsIm9uQ3V0Iiwib25EYmxDbGljayIsIm9uRHJhZyIsIm9uRHJhZ0VuZCIsIm9uRHJhZ0VudGVyIiwib25EcmFnRXhpdCIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJhZ1N0YXJ0Iiwib25Ecm9wIiwib25EdXJhdGlvbkNoYW5nZSIsIm9uRW1wdGllZCIsIm9uRW5kZWQiLCJvbkVycm9yIiwib25Gb2N1cyIsIm9uRm9ybURhdGEiLCJvbkhhc2hDaGFuZ2UiLCJvbklucHV0Iiwib25JbnZhbGlkIiwib25LZXlEb3duIiwib25LZXlQcmVzcyIsIm9uS2V5VXAiLCJvbkxhbmd1YWdlQ2hhbmdlIiwib25Mb2FkIiwib25Mb2FkZWREYXRhIiwib25Mb2FkZWRNZXRhZGF0YSIsIm9uTG9hZEVuZCIsIm9uTG9hZFN0YXJ0Iiwib25NZXNzYWdlIiwib25NZXNzYWdlRXJyb3IiLCJvbk1vdXNlRG93biIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsIm9uTW91c2VNb3ZlIiwib25Nb3VzZU91dCIsIm9uTW91c2VPdmVyIiwib25Nb3VzZVVwIiwib25PZmZsaW5lIiwib25PbmxpbmUiLCJvblBhZ2VIaWRlIiwib25QYWdlU2hvdyIsIm9uUGFzdGUiLCJvblBhdXNlIiwib25QbGF5Iiwib25QbGF5aW5nIiwib25Qb3BTdGF0ZSIsIm9uUHJvZ3Jlc3MiLCJvblJhdGVDaGFuZ2UiLCJvblJlamVjdGlvbkhhbmRsZWQiLCJvblJlc2V0Iiwib25SZXNpemUiLCJvblNjcm9sbCIsIm9uU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24iLCJvblNlZWtlZCIsIm9uU2Vla2luZyIsIm9uU2VsZWN0Iiwib25TdGFsbGVkIiwib25TdG9yYWdlIiwib25TdWJtaXQiLCJvblN1c3BlbmQiLCJvblRpbWVVcGRhdGUiLCJvblRvZ2dsZSIsIm9uVW5oYW5kbGVkUmVqZWN0aW9uIiwib25VbmxvYWQiLCJvblZvbHVtZUNoYW5nZSIsIm9uV2FpdGluZyIsIm9uV2hlZWwiLCJvcHRpbXVtIiwicGluZyIsInBsYXlzSW5saW5lIiwicG9zdGVyIiwicHJlbG9hZCIsInJlYWRPbmx5IiwicmVmZXJyZXJQb2xpY3kiLCJyZWwiLCJyZXF1aXJlZCIsInJldmVyc2VkIiwicm93U3BhbiIsInNhbmRib3giLCJzY29wZSIsInNjb3BlZCIsInNlYW1sZXNzIiwic2VsZWN0ZWQiLCJzaGFwZSIsInNpemVzIiwic2xvdCIsInNwYW4iLCJzcGVsbENoZWNrIiwic3JjRG9jIiwic3JjTGFuZyIsInNyY1NldCIsInN0eWxlIiwidGFiSW5kZXgiLCJ0cmFuc2xhdGUiLCJ0eXBlTXVzdE1hdGNoIiwidXNlTWFwIiwid2lkdGgiLCJhTGluayIsImFyY2hpdmUiLCJheGlzIiwiYmFja2dyb3VuZCIsImJnQ29sb3IiLCJib3JkZXIiLCJib3JkZXJDb2xvciIsImJvdHRvbU1hcmdpbiIsImNlbGxQYWRkaW5nIiwiY2VsbFNwYWNpbmciLCJjaGFyT2ZmIiwiY2xhc3NJZCIsImNsZWFyIiwiY29kZUJhc2UiLCJjb2RlVHlwZSIsImNvbG9yIiwiY29tcGFjdCIsImRlY2xhcmUiLCJmYWNlIiwiZnJhbWUiLCJmcmFtZUJvcmRlciIsImhTcGFjZSIsImxlZnRNYXJnaW4iLCJsb25nRGVzYyIsImxvd1NyYyIsIm1hcmdpbkhlaWdodCIsIm1hcmdpbldpZHRoIiwibm9SZXNpemUiLCJub0hyZWYiLCJub1NoYWRlIiwibm9XcmFwIiwicHJvZmlsZSIsInByb21wdCIsInJldiIsInJpZ2h0TWFyZ2luIiwicnVsZXMiLCJzY2hlbWUiLCJzY3JvbGxpbmciLCJzdGFuZGJ5Iiwic3VtbWFyeSIsInRvcE1hcmdpbiIsInZhbHVlVHlwZSIsInZlcnNpb24iLCJ2QWxpZ24iLCJ2TGluayIsInZTcGFjZSIsImFsbG93VHJhbnNwYXJlbmN5IiwiYXV0b0NvcnJlY3QiLCJhdXRvU2F2ZSIsImRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIiwic2VjdXJpdHkiLCJ1bnNlbGVjdGFibGUiLCJhY2NlbnRIZWlnaHQiLCJhbGlnbm1lbnRCYXNlbGluZSIsImFyYWJpY0Zvcm0iLCJiYXNlbGluZVNoaWZ0IiwiY2FwSGVpZ2h0IiwiY2xpcFBhdGgiLCJjbGlwUnVsZSIsImNvbG9ySW50ZXJwb2xhdGlvbiIsImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMiLCJjb2xvclByb2ZpbGUiLCJjb2xvclJlbmRlcmluZyIsImRhdGFUeXBlIiwiZG9taW5hbnRCYXNlbGluZSIsImVuYWJsZUJhY2tncm91bmQiLCJmaWxsT3BhY2l0eSIsImZpbGxSdWxlIiwiZmxvb2RDb2xvciIsImZsb29kT3BhY2l0eSIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImZvbnRTaXplQWRqdXN0IiwiZm9udFN0cmV0Y2giLCJmb250U3R5bGUiLCJmb250VmFyaWFudCIsImZvbnRXZWlnaHQiLCJnbHlwaE5hbWUiLCJnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCIsImdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCIsImhvcml6QWR2WCIsImhvcml6T3JpZ2luWCIsImhvcml6T3JpZ2luWSIsImltYWdlUmVuZGVyaW5nIiwibGV0dGVyU3BhY2luZyIsImxpZ2h0aW5nQ29sb3IiLCJtYXJrZXJFbmQiLCJtYXJrZXJNaWQiLCJtYXJrZXJTdGFydCIsIm5hdkRvd24iLCJuYXZEb3duTGVmdCIsIm5hdkRvd25SaWdodCIsIm5hdkxlZnQiLCJuYXZOZXh0IiwibmF2UHJldiIsIm5hdlJpZ2h0IiwibmF2VXAiLCJuYXZVcExlZnQiLCJuYXZVcFJpZ2h0Iiwib25BY3RpdmF0ZSIsIm9uQmVnaW4iLCJvbkVuZCIsIm9uRm9jdXNJbiIsIm9uRm9jdXNPdXQiLCJvbk1vdXNlV2hlZWwiLCJvblJlcGVhdCIsIm9uU2hvdyIsIm9uWm9vbSIsIm92ZXJsaW5lUG9zaXRpb24iLCJvdmVybGluZVRoaWNrbmVzcyIsInBhaW50T3JkZXIiLCJwYW5vc2UxIiwicG9pbnRlckV2ZW50cyIsInJlbmRlcmluZ0ludGVudCIsInNoYXBlUmVuZGVyaW5nIiwic3RvcENvbG9yIiwic3RvcE9wYWNpdHkiLCJzdHJpa2V0aHJvdWdoUG9zaXRpb24iLCJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzIiwic3Ryb2tlRGFzaEFycmF5Iiwic3Ryb2tlRGFzaE9mZnNldCIsInN0cm9rZUxpbmVDYXAiLCJzdHJva2VMaW5lSm9pbiIsInN0cm9rZU1pdGVyTGltaXQiLCJzdHJva2VPcGFjaXR5Iiwic3Ryb2tlV2lkdGgiLCJ0ZXh0QW5jaG9yIiwidGV4dERlY29yYXRpb24iLCJ0ZXh0UmVuZGVyaW5nIiwidHlwZU9mIiwidW5kZXJsaW5lUG9zaXRpb24iLCJ1bmRlcmxpbmVUaGlja25lc3MiLCJ1bmljb2RlQmlkaSIsInVuaWNvZGVSYW5nZSIsInVuaXRzUGVyRW0iLCJ2QWxwaGFiZXRpYyIsInZIYW5naW5nIiwidklkZW9ncmFwaGljIiwidk1hdGhlbWF0aWNhbCIsInZlY3RvckVmZmVjdCIsInZlcnRBZHZZIiwidmVydE9yaWdpblgiLCJ2ZXJ0T3JpZ2luWSIsIndvcmRTcGFjaW5nIiwid3JpdGluZ01vZGUiLCJ4SGVpZ2h0IiwicGxheWJhY2tPcmRlciIsInRpbWVsaW5lQmVnaW4iLCJhYm91dCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFscGhhYmV0aWMiLCJhbXBsaXR1ZGUiLCJhc2NlbnQiLCJhdHRyaWJ1dGVOYW1lIiwiYXR0cmlidXRlVHlwZSIsImF6aW11dGgiLCJiYW5kd2lkdGgiLCJiYXNlRnJlcXVlbmN5IiwiYmFzZVByb2ZpbGUiLCJiYm94IiwiYmlhcyIsImJ5IiwiY2FsY01vZGUiLCJjbGlwIiwiY2xpcFBhdGhVbml0cyIsImNvbnRlbnRTY3JpcHRUeXBlIiwiY29udGVudFN0eWxlVHlwZSIsImN1cnNvciIsImN4IiwiY3kiLCJkIiwiZGVmYXVsdEFjdGlvbiIsImRlc2NlbnQiLCJkaWZmdXNlQ29uc3RhbnQiLCJkaXJlY3Rpb24iLCJkaXNwbGF5IiwiZHVyIiwiZGl2aXNvciIsImR4IiwiZHkiLCJlZGdlTW9kZSIsImVkaXRhYmxlIiwiZWxldmF0aW9uIiwiZXhwb25lbnQiLCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwiZmlsbCIsImZpbHRlclJlcyIsImZpbHRlclVuaXRzIiwiZm9jdXNhYmxlIiwiZm9jdXNIaWdobGlnaHQiLCJmciIsImZ4IiwiZnkiLCJnMSIsImcyIiwiZ2x5cGhSZWYiLCJncmFkaWVudFRyYW5zZm9ybSIsImdyYWRpZW50VW5pdHMiLCJoYW5kbGVyIiwiaGFuZ2luZyIsImhhdGNoQ29udGVudFVuaXRzIiwiaGF0Y2hVbml0cyIsImlkZW9ncmFwaGljIiwiaW5pdGlhbFZpc2liaWxpdHkiLCJpbiIsImluMiIsImludGVyY2VwdCIsImsiLCJrMSIsImsyIiwiazMiLCJrNCIsImtlcm5lbE1hdHJpeCIsImtlcm5lbFVuaXRMZW5ndGgiLCJrZXlQb2ludHMiLCJrZXlTcGxpbmVzIiwia2V5VGltZXMiLCJrZXJuaW5nIiwibGVuZ3RoQWRqdXN0IiwibGltaXRpbmdDb25lQW5nbGUiLCJsb2NhbCIsIm1hcmtlckhlaWdodCIsIm1hcmtlclVuaXRzIiwibWFya2VyV2lkdGgiLCJtYXNrQ29udGVudFVuaXRzIiwibWFza1VuaXRzIiwibWF0aGVtYXRpY2FsIiwibWVkaWFDaGFyYWN0ZXJFbmNvZGluZyIsIm1lZGlhQ29udGVudEVuY29kaW5ncyIsIm1lZGlhU2l6ZSIsIm1lZGlhVGltZSIsIm51bU9jdGF2ZXMiLCJvYnNlcnZlciIsIm9wYWNpdHkiLCJvcGVyYXRvciIsIm9yZGVyIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvdmVyZmxvdyIsIm92ZXJsYXkiLCJwYXRoIiwicGF0aExlbmd0aCIsInBhdHRlcm5Db250ZW50VW5pdHMiLCJwYXR0ZXJuVHJhbnNmb3JtIiwicGF0dGVyblVuaXRzIiwicGhhc2UiLCJwaXRjaCIsInBvaW50cyIsInBvaW50c0F0WCIsInBvaW50c0F0WSIsInBvaW50c0F0WiIsInByZXNlcnZlQWxwaGEiLCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwicHJpbWl0aXZlVW5pdHMiLCJwcm9wYWdhdGUiLCJyIiwicmFkaXVzIiwicmVmWCIsInJlZlkiLCJyZXBlYXRDb3VudCIsInJlcGVhdER1ciIsInJlcXVpcmVkRXh0ZW5zaW9ucyIsInJlcXVpcmVkRmVhdHVyZXMiLCJyZXF1aXJlZEZvbnRzIiwicmVxdWlyZWRGb3JtYXRzIiwicmVzb3VyY2UiLCJyZXN0YXJ0Iiwicm90YXRlIiwicngiLCJyeSIsInNjYWxlIiwic2VlZCIsInNpZGUiLCJzbG9wZSIsInNuYXBzaG90VGltZSIsInNwZWN1bGFyQ29uc3RhbnQiLCJzcGVjdWxhckV4cG9uZW50Iiwic3ByZWFkTWV0aG9kIiwic3BhY2luZyIsInN0ZERldmlhdGlvbiIsInN0ZW1oIiwic3RlbXYiLCJzdGl0Y2hUaWxlcyIsInN0cm9rZSIsInN1cmZhY2VTY2FsZSIsInN5bmNCZWhhdmlvciIsInN5bmNCZWhhdmlvckRlZmF1bHQiLCJzeW5jTWFzdGVyIiwic3luY1RvbGVyYW5jZSIsInN5bmNUb2xlcmFuY2VEZWZhdWx0Iiwic3lzdGVtTGFuZ3VhZ2UiLCJ0YWJsZVZhbHVlcyIsInRhcmdldFgiLCJ0YXJnZXRZIiwidGV4dExlbmd0aCIsInRyYW5zZm9ybUJlaGF2aW9yIiwidTEiLCJ1MiIsInZpZXdCb3giLCJ2aWV3VGFyZ2V0IiwidmlzaWJpbGl0eSIsIndpZHRocyIsIngxIiwieDIiLCJ4Q2hhbm5lbFNlbGVjdG9yIiwieSIsInkxIiwieTIiLCJ5Q2hhbm5lbFNlbGVjdG9yIiwieiIsInpvb21BbmRQYW4iLCJzY2hlbWEiLCJUeXBlIiwidmFsaWQiLCJkYXNoIiwiY2FtZWxjYXNlIiwiZGF0YXNldFRvUHJvcGVydHkiLCJjYXAiLCJrZWJhYiIsImRhdGFzZXRUb0F0dHJpYnV0ZSIsIiQwIiwic2VsZWN0b3IiLCJkZWZhdWx0VGFnTmFtZSIsImRvdCIsIm51bWJlclNpZ24iLCJlbXB0eSIsIndoaXRlU3BhY2UiLCJjb21tYSIsInBhZExlZnQiLCJwYWRSaWdodCIsInNwYWNlcyIsInBhcnNlIiwiY29tbWFzIiwiYWRqdXN0IiwiY3JlYXRlQWRqdXN0TWFwIiwicGFyc2VTZWxlY3RvciIsImlzTm9kZSIsImlzQ2hpbGRyZW4iLCJhZGRQcm9wZXJ0eSIsImFkZENoaWxkIiwiZmluZCIsInBhcnNlUHJpbWl0aXZlIiwicGFyc2VQcmltaXRpdmVzIiwicG9zaXRpdmVOdW1iZXIiLCJzdmciLCJtZXNzYWdlcyIsInZlcmJvc2UiLCIjZG9jdW1lbnQiLCIjZG9jdW1lbnQtZnJhZ21lbnQiLCIjdGV4dCIsIiNjb21tZW50IiwiI2RvY3VtZW50VHlwZSIsInB1YmxpYyIsInN5c3RlbSIsIm9wZW5pbmciLCJjbG9zaW5nIiwiZG9jIiwicXVpcmtzTW9kZSIsImxhc3RJbmRleE9mIiwiQ09NTUVOVF9SRUdFWCIsIk5FV0xJTkVfUkVHRVgiLCJXSElURVNQQUNFX1JFR0VYIiwiUFJPUEVSVFlfUkVHRVgiLCJDT0xPTl9SRUdFWCIsIlZBTFVFX1JFR0VYIiwiU0VNSUNPTE9OX1JFR0VYIiwiVFJJTV9SRUdFWCIsIk5FV0xJTkUiLCJGT1JXQVJEX1NMQVNIIiwiQVNURVJJU0siLCJFTVBUWV9TVFJJTkciLCJUWVBFX0NPTU1FTlQiLCJUWVBFX0RFQ0xBUkFUSU9OIiwibGluZW5vIiwidXBkYXRlUG9zaXRpb24iLCJsaW5lcyIsIlBvc2l0aW9uIiwibXNnIiwicmVhc29uIiwiZmlsZW5hbWUiLCJtIiwiY29tbWVudHMiLCJjb21tZW50IiwiZGVjbGFyYXRpb24iLCJkZWNsIiwiZGVjbHMiLCJkZWNsYXJhdGlvbnMiLCJpdGVyYXRvciIsIm91dHB1dCIsImhhc0l0ZXJhdG9yIiwibGVuIiwiZGFzaGVzIiwidiIsInZkIiwicmVhY3QiLCJjb250ZXh0IiwiX2lzVnVlIiwidnVlIiwidmRvbSIsInRvSCIsInBhcmVudFNjaGVtYSIsImVsZW1lbnRzIiwic3R5bGVSZXBsYWNlciIsInN0eWxlQ2FzZSIsInBhcnNlU3R5bGUiLCJoeXBlcnNjcmlwdCIsImNsZWFudXAiLCJzdWJwcm9wIiwiaHlwZXJsaWtlIiwiaGFzdFRvUmVhY3QiLCIkMSIsImludmFsaWQiLCJ1bmtub3duIiwibm9vcCIsIkZ1bmN0aW9uIiwiaWdub3JlZFNwYWNlcyIsInp3aXRjaCIsInBhdGNoIiwicDUiLCJzaGFsbG93IiwiYXR0ciIsImxvY2F0aW9uVHJhY2tlciIsInBhcnNlT3B0aW9ucyIsInZvaWRzIiwiY3JlYXRlUGFyc2U1TG9jYXRpb24iLCJ0b1BhcnNlNSIsImVuZFRhZ1Rva2VuIiwiZGF0YVN0YXRlIiwiY2hhcmFjdGVyVG9rZW4iLCJjb21tZW50VG9rZW4iLCJkb2N0eXBlVG9rZW4iLCJmcm9tUGFyc2U1IiwibW9jayIsImluVGVtcGxhdGVNb2RlIiwibW9kdWxlcyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJnZXR0ZXIiLCJvIiwiZ2V0IiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJfX2VzTW9kdWxlIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIlNvdXJjZUxvY2F0aW9uIiwibGV4ZXIiLCJmaXJzdCIsInNlY29uZCIsIlRva2VuX1Rva2VuIiwiVG9rZW4iLCJlbmRUb2tlbiIsIlBhcnNlRXJyb3IiLCJ1bmRlcmxpbmVkIiwiX19wcm90b19fIiwic3JjX1BhcnNlRXJyb3IiLCJ1cHBlcmNhc2UiLCJFU0NBUEVfTE9PS1VQIiwiJiIsIj4iLCI8IiwiXCIiLCInIiwiRVNDQVBFX1JFR0VYIiwiZ2V0QmFzZUVsZW0iLCJncm91cCIsImJvZHkiLCJ1dGlscyIsImVsZW0iLCJkZWZsdCIsInNldHRpbmciLCJkZWZhdWx0SWZVbmRlZmluZWQiLCJoeXBoZW5hdGUiLCJpc0NoYXJhY3RlckJveCIsImJhc2VFbGVtIiwicHJvdG9jb2xGcm9tVXJsIiwicHJvdG9jb2wiLCJTZXR0aW5nc19TZXR0aW5ncyIsIlNldHRpbmdzIiwiZGlzcGxheU1vZGUiLCJsZXFubyIsImZsZXFuIiwidGhyb3dPbkVycm9yIiwiZXJyb3JDb2xvciIsIm1hY3JvcyIsIm1pblJ1bGVUaGlja25lc3MiLCJjb2xvcklzVGV4dENvbG9yIiwic3RyaWN0IiwidHJ1c3QiLCJtYXhTaXplIiwibWF4RXhwYW5kIiwiSW5maW5pdHkiLCJfcHJvdG8iLCJyZXBvcnROb25zdHJpY3QiLCJlcnJvckNvZGUiLCJlcnJvck1zZyIsIndhcm4iLCJ1c2VTdHJpY3RCZWhhdmlvciIsImlzVHJ1c3RlZCIsIlN0eWxlIiwiY3JhbXBlZCIsInN1cCIsIlN0eWxlX3N0eWxlcyIsIl9zdXAiLCJzdWIiLCJfc3ViIiwiZnJhY051bSIsIl9mcmFjTnVtIiwiZnJhY0RlbiIsIl9mcmFjRGVuIiwiY3JhbXAiLCJfY3JhbXAiLCJfdGV4dCIsImlzVGlnaHQiLCJzcmNfU3R5bGUiLCJESVNQTEFZIiwiVEVYVCIsIlNDUklQVFNDUklQVCIsInNjcmlwdERhdGEiLCJhbGxCbG9ja3MiLCJzdXBwb3J0ZWRDb2RlcG9pbnQiLCJjb2RlcG9pbnQiLCJiIiwic3ZnR2VvbWV0cnlfcGF0aCIsImRvdWJsZWxlZnRhcnJvdyIsImRvdWJsZXJpZ2h0YXJyb3ciLCJsZWZ0YXJyb3ciLCJsZWZ0YnJhY2UiLCJsZWZ0YnJhY2V1bmRlciIsImxlZnRncm91cCIsImxlZnRncm91cHVuZGVyIiwibGVmdGhhcnBvb24iLCJsZWZ0aGFycG9vbnBsdXMiLCJsZWZ0aGFycG9vbmRvd24iLCJsZWZ0aGFycG9vbmRvd25wbHVzIiwibGVmdGhvb2siLCJsZWZ0bGluZXNlZ21lbnQiLCJsZWZ0bWFwc3RvIiwibGVmdFRvRnJvbSIsImxvbmdlcXVhbCIsIm1pZGJyYWNlIiwibWlkYnJhY2V1bmRlciIsIm9paW50U2l6ZTEiLCJvaWludFNpemUyIiwib2lpaW50U2l6ZTEiLCJvaWlpbnRTaXplMiIsInJpZ2h0YXJyb3ciLCJyaWdodGJyYWNlIiwicmlnaHRicmFjZXVuZGVyIiwicmlnaHRncm91cCIsInJpZ2h0Z3JvdXB1bmRlciIsInJpZ2h0aGFycG9vbiIsInJpZ2h0aGFycG9vbnBsdXMiLCJyaWdodGhhcnBvb25kb3duIiwicmlnaHRoYXJwb29uZG93bnBsdXMiLCJyaWdodGhvb2siLCJyaWdodGxpbmVzZWdtZW50IiwicmlnaHRUb0Zyb20iLCJ0d29oZWFkbGVmdGFycm93IiwidHdvaGVhZHJpZ2h0YXJyb3ciLCJ0aWxkZTEiLCJ0aWxkZTIiLCJ0aWxkZTMiLCJ0aWxkZTQiLCJ2ZWMiLCJ3aWRlaGF0MSIsIndpZGVoYXQyIiwid2lkZWhhdDMiLCJ3aWRlaGF0NCIsIndpZGVjaGVjazEiLCJ3aWRlY2hlY2syIiwid2lkZWNoZWNrMyIsIndpZGVjaGVjazQiLCJiYXJhYm92ZWxlZnRhcnJvdyIsInJpZ2h0YXJyb3dhYm92ZWJhciIsImJhcmFib3Zlc2hvcnRsZWZ0aGFycG9vbiIsInJpZ2h0aGFycG9vbmFib3Zlc2hvcnRiYXIiLCJzaG9ydGJhcmFib3ZlbGVmdGhhcnBvb24iLCJzaG9ydHJpZ2h0aGFycG9vbmFib3ZlYmFyIiwidHJlZV9Eb2N1bWVudEZyYWdtZW50IiwiRG9jdW1lbnRGcmFnbWVudCIsIm1heEZvbnRTaXplIiwiaGFzQ2xhc3MiLCJ0b05vZGUiLCJmcmFnIiwidG9NYXJrdXAiLCJtYXJrdXAiLCJ0b1RleHQiLCJjcmVhdGVDbGFzcyIsImNscyIsImluaXROb2RlIiwiZ2V0Q29sb3IiLCJfdG9Ob2RlIiwic2V0QXR0cmlidXRlIiwiX3RvTWFya3VwIiwic3R5bGVzIiwiZG9tVHJlZV9TcGFuIiwiU3BhbiIsImRvbVRyZWVfQW5jaG9yIiwiQW5jaG9yIiwiX3Byb3RvMiIsImRvbVRyZWVfSW1nIiwiSW1nIiwiX3Byb3RvMyIsImlDb21iaW5hdGlvbnMiLCLDriIsIsOvIiwiw60iLCLDrCIsImRvbVRyZWVfU3ltYm9sTm9kZSIsIlN5bWJvbE5vZGUiLCJpdGFsaWMiLCJza2V3IiwiX2kiLCJzY3JpcHRGcm9tQ29kZXBvaW50IiwiX3Byb3RvNCIsIm1hcmdpblJpZ2h0IiwibmVlZHNTcGFuIiwiU3ZnTm9kZSIsIl9wcm90bzUiLCJkb21UcmVlX1BhdGhOb2RlIiwiUGF0aE5vZGUiLCJwYXRoTmFtZSIsImFsdGVybmF0ZSIsIl9wcm90bzYiLCJMaW5lTm9kZSIsIl9wcm90bzciLCJhc3NlcnRTeW1ib2xEb21Ob2RlIiwiZm9udE1ldHJpY3NEYXRhIiwiQU1TLVJlZ3VsYXIiLCI2NSIsIjY2IiwiNjciLCI2OCIsIjY5IiwiNzAiLCI3MSIsIjcyIiwiNzMiLCI3NCIsIjc1IiwiNzYiLCI3NyIsIjc4IiwiNzkiLCI4MCIsIjgxIiwiODIiLCI4MyIsIjg0IiwiODUiLCI4NiIsIjg3IiwiODgiLCI4OSIsIjkwIiwiMTA3IiwiMTY1IiwiMTc0IiwiMjQwIiwiMjk1IiwiNzEwIiwiNzMyIiwiNzcwIiwiNzcxIiwiOTg5IiwiMTAwOCIsIjgyNDUiLCI4NDYzIiwiODQ4NyIsIjg0OTgiLCI4NTAyIiwiODUwMyIsIjg1MDQiLCI4NTEzIiwiODU5MiIsIjg1OTQiLCI4NjAyIiwiODYwMyIsIjg2MDYiLCI4NjA4IiwiODYxMCIsIjg2MTEiLCI4NjE5IiwiODYyMCIsIjg2MjEiLCI4NjIyIiwiODYyNCIsIjg2MjUiLCI4NjMwIiwiODYzMSIsIjg2MzQiLCI4NjM1IiwiODYzOCIsIjg2MzkiLCI4NjQyIiwiODY0MyIsIjg2NDQiLCI4NjQ2IiwiODY0NyIsIjg2NDgiLCI4NjQ5IiwiODY1MCIsIjg2NTEiLCI4NjUyIiwiODY1MyIsIjg2NTQiLCI4NjU1IiwiODY2NiIsIjg2NjciLCI4NjY5IiwiODY3MiIsIjg2NzQiLCI4NzA1IiwiODcwOCIsIjg3MDkiLCI4NzE3IiwiODcyMiIsIjg3MjQiLCI4NzI2IiwiODczMyIsIjg3MzYiLCI4NzM3IiwiODczOCIsIjg3MzkiLCI4NzQwIiwiODc0MSIsIjg3NDIiLCI4NzU2IiwiODc1NyIsIjg3NjQiLCI4NzY1IiwiODc2OSIsIjg3NzAiLCI4Nzc0IiwiODc3NiIsIjg3NzgiLCI4NzgyIiwiODc4MyIsIjg3ODUiLCI4Nzg2IiwiODc4NyIsIjg3OTAiLCI4NzkxIiwiODc5NiIsIjg4MDYiLCI4ODA3IiwiODgwOCIsIjg4MDkiLCI4ODEyIiwiODgxNCIsIjg4MTUiLCI4ODE2IiwiODgxNyIsIjg4MTgiLCI4ODE5IiwiODgyMiIsIjg4MjMiLCI4ODI4IiwiODgyOSIsIjg4MzAiLCI4ODMxIiwiODgzMiIsIjg4MzMiLCI4ODQwIiwiODg0MSIsIjg4NDIiLCI4ODQzIiwiODg0NyIsIjg4NDgiLCI4ODU4IiwiODg1OSIsIjg4NjEiLCI4ODYyIiwiODg2MyIsIjg4NjQiLCI4ODY1IiwiODg3MiIsIjg4NzMiLCI4ODc0IiwiODg3NiIsIjg4NzciLCI4ODc4IiwiODg3OSIsIjg4ODIiLCI4ODgzIiwiODg4NCIsIjg4ODUiLCI4ODg4IiwiODg5MCIsIjg4OTEiLCI4ODkyIiwiODkwMSIsIjg5MDMiLCI4OTA1IiwiODkwNiIsIjg5MDciLCI4OTA4IiwiODkwOSIsIjg5MTAiLCI4OTExIiwiODkxMiIsIjg5MTMiLCI4OTE0IiwiODkxNSIsIjg5MTYiLCI4OTE4IiwiODkxOSIsIjg5MjAiLCI4OTIxIiwiODkyMiIsIjg5MjMiLCI4OTI2IiwiODkyNyIsIjg5MjgiLCI4OTI5IiwiODkzNCIsIjg5MzUiLCI4OTM2IiwiODkzNyIsIjg5MzgiLCI4OTM5IiwiODk0MCIsIjg5NDEiLCI4OTk0IiwiODk5NSIsIjk0MTYiLCI5NDg0IiwiOTQ4OCIsIjk0OTIiLCI5NDk2IiwiOTU4NSIsIjk1ODYiLCI5NjMyIiwiOTYzMyIsIjk2NTAiLCI5NjUxIiwiOTY1NCIsIjk2NjAiLCI5NjYxIiwiOTY2NCIsIjk2NzQiLCI5NzMzIiwiMTAwMDMiLCIxMDAxNiIsIjEwNzMxIiwiMTA4NDYiLCIxMDg3NyIsIjEwODc4IiwiMTA4ODUiLCIxMDg4NiIsIjEwODg3IiwiMTA4ODgiLCIxMDg4OSIsIjEwODkwIiwiMTA4OTEiLCIxMDg5MiIsIjEwOTAxIiwiMTA5MDIiLCIxMDkzMyIsIjEwOTM0IiwiMTA5MzUiLCIxMDkzNiIsIjEwOTM3IiwiMTA5MzgiLCIxMDk0OSIsIjEwOTUwIiwiMTA5NTUiLCIxMDk1NiIsIjU3MzUwIiwiNTczNTEiLCI1NzM1MiIsIjU3MzUzIiwiNTczNTYiLCI1NzM1NyIsIjU3MzU4IiwiNTczNTkiLCI1NzM2MCIsIjU3MzYxIiwiNTczNjYiLCI1NzM2NyIsIjU3MzY4IiwiNTczNjkiLCI1NzM3MCIsIjU3MzcxIiwiQ2FsaWdyYXBoaWMtUmVndWxhciIsIjQ4IiwiNDkiLCI1MCIsIjUxIiwiNTIiLCI1MyIsIjU0IiwiNTUiLCI1NiIsIjU3IiwiRnJha3R1ci1SZWd1bGFyIiwiMzMiLCIzNCIsIjM4IiwiMzkiLCI0MCIsIjQxIiwiNDIiLCI0MyIsIjQ0IiwiNDUiLCI0NiIsIjQ3IiwiNTgiLCI1OSIsIjYxIiwiNjMiLCI5MSIsIjkzIiwiOTQiLCI5NyIsIjk4IiwiOTkiLCIxMDAiLCIxMDEiLCIxMDIiLCIxMDMiLCIxMDQiLCIxMDUiLCIxMDYiLCIxMDgiLCIxMDkiLCIxMTAiLCIxMTEiLCIxMTIiLCIxMTMiLCIxMTQiLCIxMTUiLCIxMTYiLCIxMTciLCIxMTgiLCIxMTkiLCIxMjAiLCIxMjEiLCIxMjIiLCI4MjE2IiwiODIxNyIsIjU4MTEyIiwiNTgxMTMiLCI1ODExNCIsIjU4MTE1IiwiNTgxMTYiLCI1ODExNyIsIjU4MTE4IiwiNTgxMTkiLCJNYWluLUJvbGQiLCIzNSIsIjM2IiwiMzciLCI2MCIsIjYyIiwiNjQiLCI5MiIsIjk1IiwiMTIzIiwiMTI0IiwiMTI1IiwiMTI2IiwiMTY4IiwiMTcyIiwiMTc2IiwiMTc3IiwiMTg0IiwiMTk4IiwiMjE1IiwiMjE2IiwiMjIzIiwiMjMwIiwiMjQ3IiwiMjQ4IiwiMzA1IiwiMzM4IiwiMzM5IiwiNTY3IiwiNzExIiwiNzEzIiwiNzE0IiwiNzE1IiwiNzI4IiwiNzI5IiwiNzMwIiwiNzMzIiwiOTE1IiwiOTE2IiwiOTIwIiwiOTIzIiwiOTI2IiwiOTI4IiwiOTMxIiwiOTMzIiwiOTM0IiwiOTM2IiwiOTM3IiwiODIxMSIsIjgyMTIiLCI4MjIwIiwiODIyMSIsIjgyMjQiLCI4MjI1IiwiODI0MiIsIjg0MDciLCI4NDY1IiwiODQ2NyIsIjg0NzIiLCI4NDc2IiwiODUwMSIsIjg1OTMiLCI4NTk1IiwiODU5NiIsIjg1OTciLCI4NTk4IiwiODU5OSIsIjg2MDAiLCI4NjAxIiwiODYzNiIsIjg2MzciLCI4NjQwIiwiODY0MSIsIjg2NTYiLCI4NjU3IiwiODY1OCIsIjg2NTkiLCI4NjYwIiwiODY2MSIsIjg3MDQiLCI4NzA2IiwiODcwNyIsIjg3MTEiLCI4NzEyIiwiODcxNSIsIjg3MjMiLCI4NzI1IiwiODcyNyIsIjg3MjgiLCI4NzI5IiwiODczMCIsIjg3MzQiLCI4NzQzIiwiODc0NCIsIjg3NDUiLCI4NzQ2IiwiODc0NyIsIjg3NjgiLCI4NzcxIiwiODc4MSIsIjg4MDEiLCI4ODA0IiwiODgwNSIsIjg4MTAiLCI4ODExIiwiODgyNiIsIjg4MjciLCI4ODM0IiwiODgzNSIsIjg4MzgiLCI4ODM5IiwiODg0NiIsIjg4NDkiLCI4ODUwIiwiODg1MSIsIjg4NTIiLCI4ODUzIiwiODg1NCIsIjg4NTUiLCI4ODU2IiwiODg1NyIsIjg4NjYiLCI4ODY3IiwiODg2OCIsIjg4NjkiLCI4OTAwIiwiODkwMiIsIjg5NjgiLCI4OTY5IiwiODk3MCIsIjg5NzEiLCI5NjU3IiwiOTY2NyIsIjk3MTEiLCI5ODI0IiwiOTgyNSIsIjk4MjYiLCI5ODI3IiwiOTgzNyIsIjk4MzgiLCI5ODM5IiwiMTAyMTYiLCIxMDIxNyIsIjEwODE1IiwiMTA5MjciLCIxMDkyOCIsIjU3Mzc2IiwiTWFpbi1Cb2xkSXRhbGljIiwiMTYzIiwiTWFpbi1JdGFsaWMiLCJNYWluLVJlZ3VsYXIiLCIzMiIsIjE2MCIsIjE2NyIsIjE4MiIsIjgyMzAiLCI4NjE0IiwiODYxNyIsIjg2MTgiLCI4NzczIiwiODc4NCIsIjg5MDQiLCI4OTQyIiwiODk0MyIsIjg5NDUiLCI5MTM2IiwiOTEzNyIsIjEwMjIyIiwiMTAyMjMiLCIxMDIyOSIsIjEwMjMwIiwiMTAyMzEiLCIxMDIzMiIsIjEwMjMzIiwiMTAyMzQiLCIxMDIzNiIsIk1hdGgtQm9sZEl0YWxpYyIsIjk0NSIsIjk0NiIsIjk0NyIsIjk0OCIsIjk0OSIsIjk1MCIsIjk1MSIsIjk1MiIsIjk1MyIsIjk1NCIsIjk1NSIsIjk1NiIsIjk1NyIsIjk1OCIsIjk1OSIsIjk2MCIsIjk2MSIsIjk2MiIsIjk2MyIsIjk2NCIsIjk2NSIsIjk2NiIsIjk2NyIsIjk2OCIsIjk2OSIsIjk3NyIsIjk4MSIsIjk4MiIsIjEwMDkiLCIxMDEzIiwiTWF0aC1JdGFsaWMiLCJNYXRoLVJlZ3VsYXIiLCJTYW5zU2VyaWYtQm9sZCIsIjE4MCIsIlNhbnNTZXJpZi1JdGFsaWMiLCJTYW5zU2VyaWYtUmVndWxhciIsIlNjcmlwdC1SZWd1bGFyIiwiU2l6ZTEtUmVndWxhciIsIjgyMTQiLCI4NzE5IiwiODcyMCIsIjg3MjEiLCI4NzQ4IiwiODc0OSIsIjg3NTAiLCI4ODk2IiwiODg5NyIsIjg4OTgiLCI4ODk5IiwiOTE2OCIsIjEwNzUyIiwiMTA3NTMiLCIxMDc1NCIsIjEwNzU2IiwiMTA3NTgiLCJTaXplMi1SZWd1bGFyIiwiU2l6ZTMtUmVndWxhciIsIlNpemU0LVJlZ3VsYXIiLCI5MTE1IiwiOTExNiIsIjkxMTciLCI5MTE4IiwiOTExOSIsIjkxMjAiLCI5MTIxIiwiOTEyMiIsIjkxMjMiLCI5MTI0IiwiOTEyNSIsIjkxMjYiLCI5MTI3IiwiOTEyOCIsIjkxMjkiLCI5MTMwIiwiOTEzMSIsIjkxMzIiLCI5MTMzIiwiOTE0MyIsIjU3MzQ0IiwiNTczNDUiLCI1NzY4MCIsIjU3NjgxIiwiNTc2ODIiLCI1NzY4MyIsIlR5cGV3cml0ZXItUmVndWxhciIsIjk2IiwiMTI3IiwiNzc2IiwiOTI1MSIsInNpZ21hc0FuZFhpcyIsInNsYW50Iiwic3RyZXRjaCIsInNocmluayIsInF1YWQiLCJleHRyYVNwYWNlIiwibnVtMSIsIm51bTIiLCJudW0zIiwiZGVub20xIiwiZGVub20yIiwic3VwMSIsInN1cDIiLCJzdXAzIiwic3ViMSIsInN1YjIiLCJzdXBEcm9wIiwic3ViRHJvcCIsImRlbGltMSIsImRlbGltMiIsImF4aXNIZWlnaHQiLCJkZWZhdWx0UnVsZVRoaWNrbmVzcyIsImJpZ09wU3BhY2luZzEiLCJiaWdPcFNwYWNpbmcyIiwiYmlnT3BTcGFjaW5nMyIsImJpZ09wU3BhY2luZzQiLCJiaWdPcFNwYWNpbmc1Iiwic3FydFJ1bGVUaGlja25lc3MiLCJwdFBlckVtIiwiZG91YmxlUnVsZVNlcCIsImFycmF5UnVsZVdpZHRoIiwiZmJveHNlcCIsImZib3hydWxlIiwiZXh0cmFDaGFyYWN0ZXJNYXAiLCLDhSIsIsOHIiwiw5AiLCLDniIsIsOlIiwiw6ciLCLDsCIsIsO+Iiwi0JAiLCLQkSIsItCSIiwi0JMiLCLQlCIsItCVIiwi0JYiLCLQlyIsItCYIiwi0JkiLCLQmiIsItCbIiwi0JwiLCLQnSIsItCeIiwi0J8iLCLQoCIsItChIiwi0KIiLCLQoyIsItCkIiwi0KUiLCLQpiIsItCnIiwi0KgiLCLQqSIsItCqIiwi0KsiLCLQrCIsItCtIiwi0K4iLCLQryIsItCwIiwi0LEiLCLQsiIsItCzIiwi0LQiLCLQtSIsItC2Iiwi0LciLCLQuCIsItC5Iiwi0LoiLCLQuyIsItC8Iiwi0L0iLCLQviIsItC/Iiwi0YAiLCLRgSIsItGCIiwi0YMiLCLRhCIsItGFIiwi0YYiLCLRhyIsItGIIiwi0YkiLCLRiiIsItGLIiwi0YwiLCLRjSIsItGOIiwi0Y8iLCJnZXRDaGFyYWN0ZXJNZXRyaWNzIiwiZm9udCIsIm1ldHJpY3MiLCJmb250TWV0cmljc0J5U2l6ZUluZGV4IiwiQVRPTVMiLCJiaW4iLCJwdW5jdCIsIk5PTl9BVE9NUyIsImFjY2VudC10b2tlbiIsIm1hdGhvcmQiLCJvcC10b2tlbiIsInRleHRvcmQiLCJzcmNfc3ltYm9scyIsImRlZmluZVN5bWJvbCIsImFjY2VwdFVuaWNvZGVDaGFyIiwibWFpbiIsImFtcyIsImxpZ2F0dXJlcyIsIi0tIiwiLS0tIiwiYGAiLCInJyIsInN5bWJvbHNfaSIsInN5bWJvbHNfY2giLCJzcmNfc3ltYm9sc19pIiwiX2NoIiwibGV0dGVycyIsInN5bWJvbHNfaTIiLCJfY2gyIiwic3ltYm9sc193aWRlQ2hhciIsInN5bWJvbHNfaTMiLCJfY2gzIiwic3ltYm9sc19pNCIsIl9jaDQiLCJfaTUiLCJfY2g1Iiwid2lkZUxhdGluTGV0dGVyRGF0YSIsIndpZGVOdW1lcmFsRGF0YSIsInNpemVTdHlsZU1hcCIsInNpemVNdWx0aXBsaWVycyIsInNpemVBdFN0eWxlIiwiT3B0aW9uc19PcHRpb25zIiwiT3B0aW9ucyIsInRleHRTaXplIiwicGhhbnRvbSIsImZvbnRTaGFwZSIsInNpemVNdWx0aXBsaWVyIiwiX2ZvbnRNZXRyaWNzIiwiQkFTRVNJWkUiLCJleHRlbmQiLCJleHRlbnNpb24iLCJoYXZpbmdTdHlsZSIsImhhdmluZ0NyYW1wZWRTdHlsZSIsImhhdmluZ1NpemUiLCJoYXZpbmdCYXNlU3R5bGUiLCJ3YW50U2l6ZSIsImhhdmluZ0Jhc2VTaXppbmciLCJ3aXRoQ29sb3IiLCJ3aXRoUGhhbnRvbSIsIndpdGhGb250Iiwid2l0aFRleHRGb250RmFtaWx5Iiwid2l0aFRleHRGb250V2VpZ2h0Iiwid2l0aFRleHRGb250U2hhcGUiLCJzaXppbmdDbGFzc2VzIiwib2xkT3B0aW9ucyIsImJhc2VTaXppbmdDbGFzc2VzIiwiZm9udE1ldHJpY3MiLCJzaXplSW5kZXgiLCJjc3NFbVBlck11IiwiZ2V0R2xvYmFsTWV0cmljcyIsInNyY19PcHRpb25zIiwicHRQZXJVbml0IiwicHQiLCJtbSIsImNtIiwiYnAiLCJwYyIsImRkIiwiY2MiLCJuZCIsIm5jIiwic3AiLCJweCIsInJlbGF0aXZlVW5pdCIsImV4IiwiZW0iLCJtdSIsInZhbGlkVW5pdCIsInVuaXQiLCJ1bml0c19jYWxjdWxhdGVTaXplIiwic2l6ZVZhbHVlIiwidW5pdE9wdGlvbnMiLCJtYXRoaXRMZXR0ZXJzIiwiYnVpbGRDb21tb25fbG9va3VwU3ltYm9sIiwiZm9udE5hbWUiLCJidWlsZENvbW1vbl9tYWtlU3ltYm9sIiwic3ltYm9sTm9kZSIsImxvb2t1cCIsImJ1aWxkQ29tbW9uX2NhbkNvbWJpbmUiLCJfc3R5bGUiLCJzaXplRWxlbWVudEZyb21DaGlsZHJlbiIsImJ1aWxkQ29tbW9uX21ha2VTcGFuIiwiYnVpbGRDb21tb25fbWFrZVN2Z1NwYW4iLCJidWlsZENvbW1vbl9tYWtlRnJhZ21lbnQiLCJyZXRyaWV2ZVRleHRGb250TmFtZSIsImJhc2VGb250TmFtZSIsImZvbnRNYXAiLCJtYXRoYmYiLCJtYXRocm0iLCJ0ZXh0aXQiLCJtYXRoaXQiLCJtYXRoYmIiLCJtYXRoY2FsIiwibWF0aGZyYWsiLCJtYXRoc2NyIiwibWF0aHNmIiwibWF0aHR0Iiwic3ZnRGF0YSIsImJ1aWxkQ29tbW9uIiwibWFrZVN5bWJvbCIsIm1hdGhzeW0iLCJtYWtlU3BhbiIsIm1ha2VTdmdTcGFuIiwibWFrZUxpbmVTcGFuIiwidGhpY2tuZXNzIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJtYWtlQW5jaG9yIiwiYW5jaG9yIiwibWFrZUZyYWdtZW50Iiwid3JhcEZyYWdtZW50IiwibWFrZVZMaXN0IiwicGFyYW1zIiwiX2dldFZMaXN0Q2hpbGRyZW5BbmREIiwicG9zaXRpb25UeXBlIiwib2xkQ2hpbGRyZW4iLCJfZGVwdGgiLCJjdXJyUG9zIiwiZGlmZiIsImJvdHRvbSIsInBvc2l0aW9uRGF0YSIsImdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aCIsInBzdHJ1dFNpemUiLCJwc3RydXQiLCJyZWFsQ2hpbGRyZW4iLCJtaW5Qb3MiLCJtYXhQb3MiLCJfaTIiLCJfY2hpbGQiLCJfZWxlbSIsIndyYXBwZXJDbGFzc2VzIiwid3JhcHBlclN0eWxlIiwiY2hpbGRXcmFwIiwibWFyZ2luTGVmdCIsInZsaXN0IiwiZW1wdHlTcGFuIiwiZGVwdGhTdHJ1dCIsInRvcFN0cnV0IiwidnRhYmxlIiwibWFrZU9yZCIsImlzRm9udCIsImZvbnRPckZhbWlseSIsIl93aWRlQ2hhcmFjdGVyRm9udCIsIndpZGVDaGFyIiwiY29kZVBvaW50IiwiZmxvb3IiLCJ3aWRlX2NoYXJhY3Rlcl93aWRlQ2hhcmFjdGVyRm9udCIsIndpZGVGb250TmFtZSIsIndpZGVGb250Q2xhc3MiLCJmb250Q2xhc3NlcyIsImZvbnREYXRhIiwiZm9udENsYXNzIiwiYm9sZHN5bWJvbCIsInBhcnRzIiwiZm9udExvb2t1cCIsImJ1aWxkQ29tbW9uX21hdGhkZWZhdWx0IiwiX2ZvbnROYW1lIiwiX2ZvbnROYW1lMyIsIl9mb250TmFtZTIiLCJtYWtlR2x1ZSIsIm1lYXN1cmVtZW50Iiwic3RhdGljU3ZnIiwiX3N2Z0RhdGEkdmFsdWUiLCJzdmdOb2RlIiwidHJ5Q29tYmluZUNoYXJzIiwiYXNzZXJ0Tm9kZVR5cGUiLCJ0eXBlZE5vZGUiLCJjaGVja05vZGVUeXBlIiwiYXNzZXJ0QXRvbUZhbWlseSIsImZhbWlseSIsImNoZWNrQXRvbUZhbWlseSIsImFzc2VydFN5bWJvbE5vZGVUeXBlIiwiY2hlY2tTeW1ib2xOb2RlVHlwZSIsInRoaW5zcGFjZSIsIm1lZGl1bXNwYWNlIiwidGhpY2tzcGFjZSIsInNwYWNpbmdzIiwibW9yZCIsIm1vcCIsIm1iaW4iLCJtcmVsIiwibWlubmVyIiwibW9wZW4iLCJtY2xvc2UiLCJtcHVuY3QiLCJ0aWdodFNwYWNpbmdzIiwiX2Z1bmN0aW9ucyIsIl9odG1sR3JvdXBCdWlsZGVycyIsIl9tYXRobWxHcm91cEJ1aWxkZXJzIiwiZGVmaW5lRnVuY3Rpb24iLCJfcmVmIiwibmFtZXMiLCJodG1sQnVpbGRlciIsIm1hdGhtbEJ1aWxkZXIiLCJudW1BcmdzIiwiYXJnVHlwZXMiLCJncmVlZGluZXNzIiwiYWxsb3dlZEluVGV4dCIsImFsbG93ZWRJbk1hdGgiLCJudW1PcHRpb25hbEFyZ3MiLCJpbmZpeCIsImRlZmluZUZ1bmN0aW9uQnVpbGRlcnMiLCJfcmVmMiIsImRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50IiwiYnVpbGRIVE1MX21ha2VTcGFuIiwiYmluTGVmdENhbmNlbGxlciIsImJpblJpZ2h0Q2FuY2VsbGVyIiwic3R5bGVNYXAiLCJzY3JpcHRzY3JpcHQiLCJEb21FbnVtIiwiYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbiIsImlzUmVhbEdyb3VwIiwic3Vycm91bmRpbmciLCJncm91cHMiLCJidWlsZEhUTUxfYnVpbGRHcm91cCIsImdsdWVPcHRpb25zIiwiZHVtbXlQcmV2IiwiZHVtbXlOZXh0IiwidHJhdmVyc2VOb25TcGFjZU5vZGVzIiwicHJldlR5cGUiLCJnZXRUeXBlT2ZEb21UcmVlIiwiY2FsbGJhY2siLCJwYXJ0aWFsR3JvdXAiLCJidWlsZEhUTUxfY2hlY2tQYXJ0aWFsR3JvdXAiLCJnZXRPdXRlcm1vc3ROb2RlIiwibWFrZU51bGxEZWxpbWl0ZXIiLCJtb3JlQ2xhc3NlcyIsImJhc2VPcHRpb25zIiwiZ3JvdXBOb2RlIiwibXVsdGlwbGllciIsImJ1aWxkSFRNTFVuYnJlYWthYmxlIiwic3RydXQiLCJ2ZXJ0aWNhbEFsaWduIiwiYnVpbGRIVE1MIiwidGFnQ2hpbGQiLCJub2JyZWFrIiwiaHRtbE5vZGUiLCJuZXdEb2N1bWVudEZyYWdtZW50IiwibWF0aE1MVHJlZV9NYXRoTm9kZSIsIk1hdGhOb2RlIiwiZ2V0QXR0cmlidXRlIiwibWF0aE1MVHJlZV9UZXh0Tm9kZSIsIlRleHROb2RlIiwibWF0aE1MVHJlZSIsIlNwYWNlTm9kZSIsImJ1aWxkTWF0aE1MX21ha2VUZXh0IiwiYnVpbGRNYXRoTUxfbWFrZVJvdyIsImJ1aWxkTWF0aE1MX2dldFZhcmlhbnQiLCJidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24iLCJpc09yZGdyb3VwIiwiYnVpbGRNYXRoTUxfYnVpbGRHcm91cCIsImxhc3RHcm91cCIsIl9ncm91cCIsIl9sYXN0R3JvdXAkY2hpbGRyZW4iLCJfbGFzdEdyb3VwJGNoaWxkcmVuMiIsIl9sYXN0R3JvdXAkY2hpbGRyZW4zIiwibGFzdENoaWxkIiwiYnVpbGRFeHByZXNzaW9uUm93IiwiYnVpbGRNYXRoTUwiLCJ0ZXhFeHByZXNzaW9uIiwiZm9yTWF0aG1sT25seSIsIndyYXBwZXIiLCJhbm5vdGF0aW9uIiwic2VtYW50aWNzIiwid3JhcHBlckNsYXNzIiwiYnVpbGRUcmVlX29wdGlvbnNGcm9tU2V0dGluZ3MiLCJidWlsZFRyZWVfZGlzcGxheVdyYXAiLCJzdHJldGNoeUNvZGVQb2ludCIsIndpZGVoYXQiLCJ3aWRlY2hlY2siLCJ3aWRldGlsZGUiLCJ1dGlsZGUiLCJvdmVybGVmdGFycm93IiwidW5kZXJsZWZ0YXJyb3ciLCJ4bGVmdGFycm93Iiwib3ZlcnJpZ2h0YXJyb3ciLCJ1bmRlcnJpZ2h0YXJyb3ciLCJ4cmlnaHRhcnJvdyIsInVuZGVyYnJhY2UiLCJvdmVyYnJhY2UiLCJvdmVyZ3JvdXAiLCJ1bmRlcmdyb3VwIiwib3ZlcmxlZnRyaWdodGFycm93IiwidW5kZXJsZWZ0cmlnaHRhcnJvdyIsInhsZWZ0cmlnaHRhcnJvdyIsIk92ZXJyaWdodGFycm93IiwieFJpZ2h0YXJyb3ciLCJvdmVybGVmdGhhcnBvb24iLCJ4bGVmdGhhcnBvb251cCIsIm92ZXJyaWdodGhhcnBvb24iLCJ4cmlnaHRoYXJwb29udXAiLCJ4TGVmdGFycm93IiwieExlZnRyaWdodGFycm93IiwieGhvb2tsZWZ0YXJyb3ciLCJ4aG9va3JpZ2h0YXJyb3ciLCJ4bWFwc3RvIiwieHJpZ2h0aGFycG9vbmRvd24iLCJ4bGVmdGhhcnBvb25kb3duIiwieHJpZ2h0bGVmdGhhcnBvb25zIiwieGxlZnRyaWdodGhhcnBvb25zIiwieHR3b2hlYWRsZWZ0YXJyb3ciLCJ4dHdvaGVhZHJpZ2h0YXJyb3ciLCJ4bG9uZ2VxdWFsIiwieHRvZnJvbSIsInhyaWdodGxlZnRhcnJvd3MiLCJ4cmlnaHRlcXVpbGlicml1bSIsInhsZWZ0ZXF1aWxpYnJpdW0iLCJrYXRleEltYWdlc0RhdGEiLCJvdmVybGluZXNlZ21lbnQiLCJ1bmRlcmxpbmVzZWdtZW50IiwiZ3JvdXBMZW5ndGgiLCJzdHJldGNoeSIsInBhZCIsImltZyIsInRvdGFsSGVpZ2h0Iiwic3Ryb2tlLXdpZHRoIiwiX2J1aWxkU3ZnU3Bhbl8iLCJ2aWV3Qm94V2lkdGgiLCJ2aWV3Qm94SGVpZ2h0IiwiX2hlaWdodCIsIm51bUNoYXJzIiwiYmFzZSIsImltZ0luZGV4IiwibWluV2lkdGgiLCJ3aWR0aENsYXNzZXMiLCJhbGlnbnMiLCJzcGFucyIsInBhdGhzIiwiX21pbldpZHRoIiwiX3ZpZXdCb3hIZWlnaHQiLCJfaGVpZ2h0MiIsIm51bVN2Z0NoaWxkcmVuIiwiX3BhdGgiLCJfc3ZnTm9kZSIsIl9zcGFuIiwiYnVpbGRTdmdTcGFuXyIsImFjY2VudF9odG1sQnVpbGRlciIsImdycCIsInN1cFN1Ykdyb3VwIiwic3VwU3ViIiwiYXNzZXJ0U3BhbiIsImlzU2hpZnR5IiwiYmFzZUNoYXIiLCJhY2NlbnRCb2R5IiwiY2xlYXJhbmNlIiwiaXNTdHJldGNoeSIsImFjY2VudCIsImFjY2VudEZ1bGwiLCJhY2NlbnRXcmFwIiwiYWNjZW50X21hdGhtbEJ1aWxkZXIiLCJhY2NlbnROb2RlIiwiTk9OX1NUUkVUQ0hZX0FDQ0VOVF9SRUdFWCIsImZ1bmNOYW1lIiwiaW5uZXJHcm91cCIsImtlcm4iLCJhcnJvd19wYWRkZWROb2RlIiwib3B0QXJncyIsImJlbG93IiwibG93ZXJHcm91cCIsIm5ld09wdGlvbnMiLCJ1cHBlckdyb3VwIiwiYXJyb3dCb2R5IiwiYXJyb3dTaGlmdCIsInVwcGVyU2hpZnQiLCJsb3dlclNoaWZ0IiwiYXJyb3dOb2RlIiwidXBwZXJOb2RlIiwibG93ZXJOb2RlIiwiX2xvd2VyTm9kZSIsImNvbG9yX2h0bWxCdWlsZGVyIiwiY29sb3JfbWF0aG1sQnVpbGRlciIsImJyZWFrT25Ub2tlblRleHQiLCJndWxsZXQiLCJzZXQiLCJwYXJzZUV4cHJlc3Npb24iLCJuZXdSb3ciLCJuZXdMaW5lIiwibWFyZ2luVG9wIiwiZGVsaW1pdGVyX2dldE1ldHJpY3MiLCJkZWxpbWl0ZXJfc3R5bGVXcmFwIiwiZGVsaW0iLCJ0b1N0eWxlIiwiZGVsaW1TaXplTXVsdGlwbGllciIsImNlbnRlclNwYW4iLCJkZWxpbWl0ZXJfbWFrZUxhcmdlRGVsaW0iLCJjZW50ZXIiLCJkZWxpbWl0ZXJfbWF0aHJtU2l6ZSIsImRlbGltaXRlcl9tYWtlSW5uZXIiLCJzaXplQ2xhc3MiLCJsYXAiLCJkZWxpbWl0ZXJfbWFrZVN0YWNrZWREZWxpbSIsImhlaWdodFRvdGFsIiwibWlkZGxlIiwidG9wTWV0cmljcyIsInRvcEhlaWdodFRvdGFsIiwicmVwZWF0TWV0cmljcyIsInJlcGVhdEhlaWdodFRvdGFsIiwiYm90dG9tTWV0cmljcyIsImJvdHRvbUhlaWdodFRvdGFsIiwibWlkZGxlSGVpZ2h0VG90YWwiLCJtaWRkbGVGYWN0b3IiLCJtaWRkbGVNZXRyaWNzIiwibWluSGVpZ2h0IiwiY2VpbCIsInJlYWxIZWlnaHRUb3RhbCIsInNoaWZ0T2ZFeHRyYUVsZW1lbnQiLCJpbm5lcnMiLCJkZWxpbWl0ZXJfc3FydFN2ZyIsInNxcnROYW1lIiwiZXh0cmFWaW5pY3VsdW0iLCJoTGluZVBhZCIsInNxcnRNYWluIiwic3FydFNpemUxIiwic3FydFNpemUyIiwic3FydFNpemUzIiwic3FydFNpemU0Iiwic3FydFRhbGwiLCJzcXJ0UGF0aCIsInBhdGhOb2RlIiwic3RhY2tMYXJnZURlbGltaXRlcnMiLCJzdGFja0Fsd2F5c0RlbGltaXRlcnMiLCJzdGFja05ldmVyRGVsaW1pdGVycyIsInNpemVUb01heEhlaWdodCIsInN0YWNrTmV2ZXJEZWxpbWl0ZXJTZXF1ZW5jZSIsInN0YWNrQWx3YXlzRGVsaW1pdGVyU2VxdWVuY2UiLCJzdGFja0xhcmdlRGVsaW1pdGVyU2VxdWVuY2UiLCJkZWxpbVR5cGVUb0ZvbnQiLCJ0cmF2ZXJzZVNlcXVlbmNlIiwic2VxdWVuY2UiLCJoZWlnaHREZXB0aCIsImRlbGltaXRlcl9tYWtlQ3VzdG9tU2l6ZWREZWxpbSIsImRlbGltVHlwZSIsImRlbGltaXRlcl9tYWtlU21hbGxEZWxpbSIsImRlbGltaXRlciIsImFkdmFuY2VXaWR0aCIsInNwYW5IZWlnaHQiLCJ0ZXhIZWlnaHQiLCJydWxlV2lkdGgiLCJkZWxpbWl0ZXJFeHRlbmQiLCJtYXhEaXN0RnJvbUF4aXMiLCJkZWxpbWl0ZXJTaXplcyIsIlxcYmlnbCIsIm1jbGFzcyIsIlxcQmlnbCIsIlxcYmlnZ2wiLCJcXEJpZ2dsIiwiXFxiaWdyIiwiXFxCaWdyIiwiXFxiaWdnciIsIlxcQmlnZ3IiLCJcXGJpZ20iLCJcXEJpZ20iLCJcXGJpZ2dtIiwiXFxCaWdnbSIsIlxcYmlnIiwiXFxCaWciLCJcXGJpZ2ciLCJcXEJpZ2ciLCJkZWxpbWl0ZXJzIiwiY2hlY2tEZWxpbWl0ZXIiLCJzeW1EZWxpbSIsImFzc2VydFBhcnNlZCIsImxlZnRyaWdodERlcHRoIiwiZXhwZWN0IiwicGFyc2VGdW5jdGlvbiIsInJpZ2h0Q29sb3IiLCJsZWZ0RGVsaW0iLCJyaWdodERlbGltIiwiaW5uZXJIZWlnaHQiLCJpbm5lckRlcHRoIiwiaGFkTWlkZGxlIiwiaXNNaWRkbGUiLCJjb2xvck9wdGlvbnMiLCJsZWZ0Tm9kZSIsInJpZ2h0Tm9kZSIsIm1pZGRsZURlbGltIiwibWlkZGxlTm9kZSIsImVuY2xvc2VfaHRtbEJ1aWxkZXIiLCJpbWdTaGlmdCIsImlzU2luZ2xlQ2hhciIsInZlcnRQYWQiLCJydWxlVGhpY2tuZXNzIiwiYm9yZGVyU3R5bGUiLCJib3JkZXJXaWR0aCIsImJhY2tncm91bmRDb2xvciIsImVuY2xvc2VfbWF0aG1sQnVpbGRlciIsInRoayIsIl9yZWYzIiwiX3JlZjQiLCJfZW52aXJvbm1lbnRzIiwiZGVmaW5lRW52aXJvbm1lbnQiLCJnZXRITGluZXMiLCJobGluZUluZm8iLCJjb25zdW1lU3BhY2VzIiwibnh0IiwiZmV0Y2giLCJjb25zdW1lIiwicGFyc2VBcnJheSIsImhza2lwQmVmb3JlQW5kQWZ0ZXIiLCJhZGRKb3QiLCJhcnJheXN0cmV0Y2giLCJjb2xTZXBhcmF0aW9uVHlwZSIsImJlZ2luR3JvdXAiLCJleHBhbmRNYWNyb0FzVGV4dCIsInJvd0dhcHMiLCJoTGluZXNCZWZvcmVSb3ciLCJlbmRHcm91cCIsIm5leHRUb2tlbiIsImNyIiwiZENlbGxTdHlsZSIsImVudk5hbWUiLCJhcnJheV9odG1sQnVpbGRlciIsIm5yIiwiaGxpbmVzIiwiYXJyYXljb2xzZXAiLCJiYXNlbGluZXNraXAiLCJqb3QiLCJhcnJheXNraXAiLCJhcnN0cnV0SGVpZ2h0IiwiYXJzdHJ1dERlcHRoIiwic2V0SExpbmVQb3MiLCJobGluZXNJbkdhcCIsImlzRGFzaGVkIiwiaW5yb3ciLCJvdXRyb3ciLCJlbHQiLCJyb3dHYXAiLCJnYXAiLCJjb2xTZXAiLCJjb2xEZXNjck51bSIsImNvbERlc2NyaXB0aW9ucyIsImNvbERlc2NyIiwiZmlyc3RTZXBhcmF0b3IiLCJsaW5lVHlwZSIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJSaWdodFN0eWxlIiwibWFyZ2luIiwic2Vwd2lkdGgiLCJwcmVnYXAiLCJwb3N0Z2FwIiwidkxpc3RFbGVtcyIsImhsaW5lIiwibGluZVNoaWZ0IiwiYWxpZ25NYXAiLCJhcnJheV9tYXRobWxCdWlsZGVyIiwibWVuY2xvc2UiLCJjb2x1bW5MaW5lcyIsInByZXZUeXBlV2FzQWxpZ24iLCJpU3RhcnQiLCJpRW5kIiwiX2NvbHMiLCJyb3dMaW5lcyIsImFycmF5X2FsaWduZWRIYW5kbGVyIiwibnVtTWF0aHMiLCJudW1Db2xzIiwiZW1wdHlHcm91cCIsIm9yZGdyb3VwIiwiYXJnMCIsImlzQWxpZ25lZCIsIl9pMyIsImN1ck1hdGhzIiwiX2k0IiwibmRlIiwiY2EiLCJtYXRyaXgiLCJwbWF0cml4IiwiYm1hdHJpeCIsIkJtYXRyaXgiLCJ2bWF0cml4IiwiVm1hdHJpeCIsInNyY19lbnZpcm9ubWVudHMiLCJuYW1lR3JvdXAiLCJlbnYiLCJfcGFyc2VyJHBhcnNlQXJndW1lbnQiLCJwYXJzZUFyZ3VtZW50cyIsIl9hcmdzIiwiZW5kTmFtZVRva2VuIiwibWNsYXNzX21ha2VTcGFuIiwibWNsYXNzX2h0bWxCdWlsZGVyIiwibWNsYXNzX21hdGhtbEJ1aWxkZXIiLCJsc3BhY2UiLCJyc3BhY2UiLCJiaW5yZWxDbGFzcyIsImF0b20iLCJiYXNlQXJnIiwic2hpZnRlZEFyZyIsImJhc2VPcCIsImxpbWl0cyIsImFsd2F5c0hhbmRsZVN1cFN1YiIsInBhcmVudElzU3VwU3ViIiwic3VwcHJlc3NCYXNlU2hpZnQiLCJzdXBzdWIiLCJmb250X2h0bWxCdWlsZGVyIiwiZm9udF9tYXRobWxCdWlsZGVyIiwiZm9udEFsaWFzZXMiLCJcXEJiYiIsIlxcYm9sZCIsIlxcZnJhayIsIlxcYm0iLCJmdW5jIiwiZ2VuZnJhY19hZGp1c3RTdHlsZSIsIm9yaWdpbmFsU3R5bGUiLCJnZW5mcmFjX2h0bWxCdWlsZGVyIiwibnN0eWxlIiwiZHN0eWxlIiwibnVtZXJtIiwibnVtZXIiLCJjb250aW51ZWQiLCJoU3RydXQiLCJkU3RydXQiLCJydWxlU3BhY2luZyIsIm51bVNoaWZ0IiwiZGVub21TaGlmdCIsImZyYWMiLCJkZWxpbVNpemUiLCJkZW5vbW0iLCJkZW5vbSIsImhhc0JhckxpbmUiLCJiYXJTaXplIiwibWlkU2hpZnQiLCJjYW5kaWRhdGVDbGVhcmFuY2UiLCJnZW5mcmFjX21hdGhtbEJ1aWxkZXIiLCJpc0Rpc3BsYXkiLCJ3aXRoRGVsaW1zIiwibGVmdE9wIiwicmlnaHRPcCIsInJlcGxhY2VXaXRoIiwic3R5bEFycmF5IiwiZGVsaW1Gcm9tVmFsdWUiLCJkZWxpbVN0cmluZyIsImJhck5vZGUiLCJpc0JsYW5rIiwic3R5bCIsInRleHRPcmQiLCJfcmVmNSIsImFzc2VydCIsImhvcml6QnJhY2VfaHRtbEJ1aWxkZXIiLCJicmFjZUJvZHkiLCJpc092ZXIiLCJ2U3BhbiIsImNvbW1hbmQiLCJmb3JtYXRVbnN1cHBvcnRlZENtZCIsIm1hdGhtbCIsImluY2x1ZGVncmFwaGljc19zaXplRGF0YSIsInRvdGFsaGVpZ2h0Iiwia2V5VmFsIiwibWF0aEZ1bmN0aW9uIiwibXVVbml0IiwiZGltZW5zaW9uIiwiYWxpZ25tZW50IiwiZml4Iiwib3V0ZXJNb2RlIiwic3dpdGNoTW9kZSIsIm1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlIiwiYXNzZW1ibGVTdXBTdWJfYXNzZW1ibGVTdXBTdWIiLCJzdXBHcm91cCIsInN1Ykdyb3VwIiwiYmFzZVNoaWZ0IiwiZmluYWxHcm91cCIsIl9ib3R0b20iLCJub1N1Y2Nlc3NvciIsIm9wX2h0bWxCdWlsZGVyIiwiaGFzTGltaXRzIiwibGFyZ2UiLCJzdGFzaCIsIm92YWwiLCJvcF9tYXRobWxCdWlsZGVyIiwic2luZ2xlQ2hhckJpZ09wcyIsIuKIjyIsIuKIkCIsIuKIkSIsIuKLgCIsIuKLgSIsIuKLgiIsIuKLgyIsIuKogCIsIuKogSIsIuKogiIsIuKohCIsIuKohiIsImZOYW1lIiwic2luZ2xlQ2hhckludGVncmFscyIsIuKIqyIsIuKIrCIsIuKIrSIsIuKIriIsIuKIryIsIuKIsCIsIm9wZXJhdG9ybmFtZV9odG1sQnVpbGRlciIsImNoaWxkVGV4dCIsInNpemluZ0dyb3VwIiwiaXNBbGxTdHJpbmciLCJzZW1pc2ltcGxlIiwiYW1vdW50IiwiYm9yZGVyVG9wV2lkdGgiLCJzaXplRnVuY3MiLCJzbWFzaEhlaWdodCIsInNtYXNoRGVwdGgiLCJ0YkFyZyIsInNtYXNoZWROb2RlIiwidGhldGEiLCJwaGkiLCJsaW5lQ2xlYXJhbmNlIiwibWluRGVsaW1pdGVySGVpZ2h0IiwiX2RlbGltaXRlciRzcXJ0SW1hZ2UiLCJkZWxpbURlcHRoIiwicGFkZGluZ0xlZnQiLCJyb290bSIsInRvU2hpZnQiLCJyb290Vkxpc3QiLCJyb290Vkxpc3RXcmFwIiwic3R5bGluZ19zdHlsZU1hcCIsIm5ld1N0eWxlIiwiYnVpbGRlckRlbGVnYXRlIiwic3Vwc3ViX2h0bWxCdWlsZGVyRGVsZWdhdGUiLCJzdXBtIiwic3VibSIsIm1pblN1cFNoaWZ0IiwidmFsdWVCYXNlIiwidmFsdWVTdXAiLCJ2YWx1ZVN1YiIsInN1cFNoaWZ0Iiwic3ViU2hpZnQiLCJfbmV3T3B0aW9ucyIsImlzT2lpbnQiLCJtYXhXaWR0aCIsInBzaSIsInZsaXN0RWxlbSIsIl92bGlzdEVsZW0iLCJpc0JyYWNlIiwiaG9yaXpCcmFjZSIsIl9iYXNlMiIsIl9iYXNlIiwiZGVmYXVsdFZhcmlhbnQiLCJtaSIsIm1uIiwibXRleHQiLCJjc3NTcGFjZSIsIlxcbm9icmVhayIsIlxcYWxsb3dicmVhayIsInJlZ3VsYXJTcGFjZSIsIiAiLCJcXCAiLCJ+IiwiXFxzcGFjZSIsIlxcbm9icmVha3NwYWNlIiwib3JkIiwidGFnX3BhZCIsInBhZE5vZGUiLCJ0ZXh0Rm9udEZhbWlsaWVzIiwiXFx0ZXh0IiwiXFx0ZXh0cm0iLCJcXHRleHRzZiIsIlxcdGV4dHR0IiwiXFx0ZXh0bm9ybWFsIiwidGV4dEZvbnRXZWlnaHRzIiwiXFx0ZXh0YmYiLCJcXHRleHRtZCIsInRleHRGb250U2hhcGVzIiwiXFx0ZXh0aXQiLCJcXHRleHR1cCIsIm9wdGlvbnNXaXRoRm9udCIsIm1ha2VWZXJiIiwic3RhciIsInNyY19mdW5jdGlvbnMiLCJjb250cm9sV29yZFdoaXRlc3BhY2VSZWdleCIsImNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya3NFbmRSZWdleCIsImNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyIsInRva2VuUmVnZXhTdHJpbmciLCJMZXhlcl9MZXhlciIsIkxleGVyIiwidG9rZW5SZWdleCIsImNhdGNvZGVzIiwiJSIsInNldENhdGNvZGUiLCJsZXgiLCJubEluZGV4IiwiY29udHJvbE1hdGNoIiwiTmFtZXNwYWNlX05hbWVzcGFjZSIsIk5hbWVzcGFjZSIsImJ1aWx0aW5zIiwiZ2xvYmFsTWFjcm9zIiwidW5kZWZTdGFjayIsInVuZGVmcyIsInVuZGVmIiwiaGFzIiwiYnVpbHRpbk1hY3JvcyIsImRlZmluZU1hY3JvIiwidG9rZW5zIiwiY29uc3VtZUFyZ3MiLCJmdXR1cmUiLCJkaWdpdFRvTnVtYmVyIiwiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkMiLCJEIiwiRSIsImYiLCJGIiwicG9wVG9rZW4iLCJkaWdpdCIsIm1hY3Jvc19kZWYiLCJtYWNyb3NfbmV3Y29tbWFuZCIsImV4aXN0c09LIiwibm9uZXhpc3RzT0siLCJleGlzdHMiLCJpc0RlZmluZWQiLCJhcmdUZXh0IiwiZXhwYW5kTmV4dFRva2VuIiwiZG90c0J5VG9rZW4iLCIsIiwiXFxub3QiLCIrIiwiPSIsIi0iLCIqIiwiOiIsIlxcRE9UU0IiLCJcXGNvcHJvZCIsIlxcYmlndmVlIiwiXFxiaWd3ZWRnZSIsIlxcYmlndXBsdXMiLCJcXGJpZ2NhcCIsIlxcYmlnY3VwIiwiXFxwcm9kIiwiXFxzdW0iLCJcXGJpZ290aW1lcyIsIlxcYmlnb3BsdXMiLCJcXGJpZ29kb3QiLCJcXGJpZ3NxY3VwIiwiXFxBbmQiLCJcXGxvbmdyaWdodGFycm93IiwiXFxMb25ncmlnaHRhcnJvdyIsIlxcbG9uZ2xlZnRhcnJvdyIsIlxcTG9uZ2xlZnRhcnJvdyIsIlxcbG9uZ2xlZnRyaWdodGFycm93IiwiXFxMb25nbGVmdHJpZ2h0YXJyb3ciLCJcXG1hcHN0byIsIlxcbG9uZ21hcHN0byIsIlxcaG9va3JpZ2h0YXJyb3ciLCJcXGRvdGVxIiwiXFxtYXRoYmluIiwiXFxtYXRocmVsIiwiXFxyZWxiYXIiLCJcXFJlbGJhciIsIlxceHJpZ2h0YXJyb3ciLCJcXHhsZWZ0YXJyb3ciLCJcXERPVFNJIiwiXFxpbnQiLCJcXG9pbnQiLCJcXGlpbnQiLCJcXGlpaW50IiwiXFxpaWlpbnQiLCJcXGlkb3RzaW50IiwiXFxET1RTWCIsInRoZWRvdHMiLCJleHBhbmRBZnRlckZ1dHVyZSIsInNwYWNlQWZ0ZXJEb3RzIiwiKSIsIl0iLCJcXHJicmFjayIsIlxcfSIsIlxccmJyYWNlIiwiXFxyYW5nbGUiLCJcXHJjZWlsIiwiXFxyZmxvb3IiLCJcXHJncm91cCIsIlxccm1vdXN0YWNoZSIsIlxccmlnaHQiLCI7IiwiLiIsImxhdGV4UmFpc2VBIiwiaW1wbGljaXRDb21tYW5kcyIsIlxccmVsYXgiLCJeIiwiXFxsaW1pdHMiLCJcXG5vbGltaXRzIiwiTWFjcm9FeHBhbmRlcl9NYWNyb0V4cGFuZGVyIiwiTWFjcm9FeHBhbmRlciIsImV4cGFuc2lvbkNvdW50IiwiZmVlZCIsInB1c2hUb2tlbiIsInB1c2hUb2tlbnMiLCJfdGhpcyRzdGFjayIsInN0YXJ0T2ZBcmciLCJ0b2siLCJleHBhbmRPbmNlIiwidG9wVG9rZW4iLCJleHBhbnNpb24iLCJfZ2V0RXhwYW5zaW9uIiwiX3Rva2VucyIsImV4cGFuZGVkIiwiZXhwYW5kTWFjcm8iLCJvbGRTdGFja0xlbmd0aCIsInN0cmlwcGVkIiwiYm9keUxleGVyIiwidW5pY29kZUFjY2VudHMiLCLMgSIsIsyAIiwizIgiLCLMgyIsIsyEIiwizIYiLCLMjCIsIsyCIiwizIciLCLMiiIsIsyLIiwidW5pY29kZVN5bWJvbHMiLCLDoSIsIsOgIiwiw6QiLCLHnyIsIsOjIiwixIEiLCLEgyIsIuG6ryIsIuG6sSIsIuG6tSIsIseOIiwiw6IiLCLhuqUiLCLhuqciLCLhuqsiLCLIpyIsIsehIiwix7siLCLhuIMiLCLEhyIsIsSNIiwixIkiLCLEiyIsIsSPIiwi4biLIiwiw6kiLCLDqCIsIsOrIiwi4bq9IiwixJMiLCLhuJciLCLhuJUiLCLElSIsIsSbIiwiw6oiLCLhur8iLCLhu4EiLCLhu4UiLCLElyIsIuG4nyIsIse1Iiwi4bihIiwixJ8iLCLHpyIsIsSdIiwixKEiLCLhuKciLCLInyIsIsSlIiwi4bijIiwi4bivIiwixKkiLCLEqyIsIsStIiwix5AiLCLHsCIsIsS1Iiwi4bixIiwix6kiLCLEuiIsIsS+Iiwi4bi/Iiwi4bmBIiwixYQiLCLHuSIsIsOxIiwixYgiLCLhuYUiLCLDsyIsIsOyIiwiw7YiLCLIqyIsIsO1Iiwi4bmNIiwi4bmPIiwiyK0iLCLFjSIsIuG5kyIsIuG5kSIsIsWPIiwix5IiLCLDtCIsIuG7kSIsIuG7kyIsIuG7lyIsIsivIiwiyLEiLCLFkSIsIuG5lSIsIuG5lyIsIsWVIiwixZkiLCLhuZkiLCLFmyIsIuG5pSIsIsWhIiwi4bmnIiwixZ0iLCLhuaEiLCLhupciLCLFpSIsIuG5qyIsIsO6Iiwiw7kiLCLDvCIsIseYIiwix5wiLCLHliIsIseaIiwixakiLCLhubkiLCLFqyIsIuG5uyIsIsWtIiwix5QiLCLDuyIsIsWvIiwixbEiLCLhub0iLCLhuoMiLCLhuoEiLCLhuoUiLCLFtSIsIuG6hyIsIuG6mCIsIuG6jSIsIuG6iyIsIsO9Iiwi4buzIiwiw78iLCLhu7kiLCLIsyIsIsW3Iiwi4bqPIiwi4bqZIiwixboiLCLFviIsIuG6kSIsIsW8Iiwiw4EiLCLDgCIsIsOEIiwix54iLCLDgyIsIsSAIiwixIIiLCLhuq4iLCLhurAiLCLhurQiLCLHjSIsIsOCIiwi4bqkIiwi4bqmIiwi4bqqIiwiyKYiLCLHoCIsIse6Iiwi4biCIiwixIYiLCLEjCIsIsSIIiwixIoiLCLEjiIsIuG4iiIsIsOJIiwiw4giLCLDiyIsIuG6vCIsIsSSIiwi4biWIiwi4biUIiwixJQiLCLEmiIsIsOKIiwi4bq+Iiwi4buAIiwi4buEIiwixJYiLCLhuJ4iLCLHtCIsIuG4oCIsIsSeIiwix6YiLCLEnCIsIsSgIiwi4bimIiwiyJ4iLCLEpCIsIuG4oiIsIsONIiwiw4wiLCLDjyIsIuG4riIsIsSoIiwixKoiLCLErCIsIsePIiwiw44iLCLEsCIsIsS0Iiwi4biwIiwix6giLCLEuSIsIsS9Iiwi4bi+Iiwi4bmAIiwixYMiLCLHuCIsIsORIiwixYciLCLhuYQiLCLDkyIsIsOSIiwiw5YiLCLIqiIsIsOVIiwi4bmMIiwi4bmOIiwiyKwiLCLFjCIsIuG5kiIsIuG5kCIsIsWOIiwix5EiLCLDlCIsIuG7kCIsIuG7kiIsIuG7liIsIsiuIiwiyLAiLCLFkCIsIuG5lCIsIuG5liIsIsWUIiwixZgiLCLhuZgiLCLFmiIsIuG5pCIsIsWgIiwi4bmmIiwixZwiLCLhuaAiLCLFpCIsIuG5qiIsIsOaIiwiw5kiLCLDnCIsIseXIiwix5siLCLHlSIsIseZIiwixagiLCLhubgiLCLFqiIsIuG5uiIsIsWsIiwix5MiLCLDmyIsIsWuIiwixbAiLCLhubwiLCLhuoIiLCLhuoAiLCLhuoQiLCLFtCIsIuG6hiIsIuG6jCIsIuG6iiIsIsOdIiwi4buyIiwixbgiLCLhu7giLCLIsiIsIsW2Iiwi4bqOIiwixbkiLCLFvSIsIuG6kCIsIsW7IiwizqwiLCLhvbAiLCLhvrEiLCLhvrAiLCLOrSIsIuG9siIsIs6uIiwi4b20Iiwizq8iLCLhvbYiLCLPiiIsIs6QIiwi4b+SIiwi4b+RIiwi4b+QIiwiz4wiLCLhvbgiLCLPjSIsIuG9uiIsIs+LIiwizrAiLCLhv6IiLCLhv6EiLCLhv6AiLCLPjiIsIuG9vCIsIs6OIiwi4b+qIiwizqsiLCLhv6kiLCLhv6giLCLOjyIsIuG/uiIsIlBhcnNlcl9QYXJzZXIiLCJicmVha09uSW5maXgiLCJlbmRPZkV4cHJlc3Npb24iLCJwYXJzZUF0b20iLCJmb3JtTGlnYXR1cmVzIiwiaGFuZGxlSW5maXhOb2RlcyIsIm92ZXJJbmRleCIsIm51bWVyTm9kZSIsImRlbm9tTm9kZSIsIm51bWVyQm9keSIsImRlbm9tQm9keSIsImNhbGxGdW5jdGlvbiIsImhhbmRsZVN1cFN1YnNjcmlwdCIsInN5bWJvbFRva2VuIiwicGFyc2VHcm91cCIsIlNVUFNVQl9HUkVFRElORVNTIiwidGV4dG9yZEFycmF5Iiwic3VwZXJzY3JpcHQiLCJzdWJzY3JpcHQiLCJvcE5vZGUiLCJfbGltaXRzIiwicHJpbWUiLCJwcmltZXMiLCJmdW5jRGF0YSIsIl90aGlzJHBhcnNlQXJndW1lbnRzIiwidG90YWxBcmdzIiwiYmFzZUdyZWVkaW5lc3MiLCJhcmdUeXBlIiwiaXNPcHRpb25hbCIsInBhcnNlR3JvdXBPZlR5cGUiLCJwYXJzZUNvbG9yR3JvdXAiLCJwYXJzZVNpemVHcm91cCIsInBhcnNlVXJsR3JvdXAiLCJwYXJzZVN0cmluZ0dyb3VwIiwiZ3JvdXBCZWdpbiIsImdyb3VwRW5kIiwiYmVnaW5Ub2tlbiIsImZpcnN0VG9rZW4iLCJuZXN0ZWQiLCJsYXN0VG9rZW4iLCJwYXJzZVJlZ2V4R3JvdXAiLCJlbmRPZkdyb3VwIiwicGFyc2VTeW1ib2wiLCJudWNsZXVzIiwiWyIsInsiLCJcXGJlZ2luZ3JvdXAiLCJzcmNfcGFyc2VUcmVlIiwidG9QYXJzZSIsImthdGV4X3JlbmRlciIsImJhc2VOb2RlIiwia2F0ZXhfcmVuZGVyVG9Eb21UcmVlIiwiY29tcGF0TW9kZSIsImthdGV4X3JlbmRlckVycm9yIiwia2F0ZXhOb2RlIiwibWF0aE1MTm9kZSIsIl9odG1sTm9kZSIsImJ1aWxkVHJlZV9idWlsZFRyZWUiLCJrYXRleF8wIiwicmVuZGVyVG9TdHJpbmciLCJfX3BhcnNlIiwiX19yZW5kZXJUb0RvbVRyZWUiLCJfX3JlbmRlclRvSFRNTFRyZWUiLCJidWlsZFRyZWVfYnVpbGRIVE1MVHJlZSIsIl9fc2V0Rm9udE1ldHJpY3MiLCJfX2RlZmluZVN5bWJvbCIsIl9fZGVmaW5lTWFjcm8iLCJfX2RvbVRyZWUiLCJoYXNPd24iLCJ0b1N0ciIsImdPUEQiLCJhcnIiLCJpc1BsYWluT2JqZWN0IiwiaGFzT3duQ29uc3RydWN0b3IiLCJoYXNJc1Byb3RvdHlwZU9mIiwic2V0UHJvcGVydHkiLCJuZXdWYWx1ZSIsImdldFByb3BlcnR5IiwiY29weSIsImNvcHlJc0FycmF5IiwiY2xvbmUiLCJkZWVwIiwiVk1lc3NhZ2UiLCJWTWVzc2FnZVByb3RvdHlwZSIsInBhcnNlT3JpZ2luIiwicnVsZUlkIiwiZmF0YWwiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENsZWFyVGltZW91dCIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsImN1cnJlbnRRdWV1ZSIsInF1ZXVlIiwiZHJhaW5pbmciLCJxdWV1ZUluZGV4IiwiY2xlYW5VcE5leHRUaWNrIiwiZHJhaW5RdWV1ZSIsInRpbWVvdXQiLCJtYXJrZXIiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwiYXJyYXkiLCJvbiIsImFkZExpc3RlbmVyIiwib25jZSIsIm9mZiIsInJlbW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZW1pdCIsInBlcmZvcm1hbmNlIiwicGVyZm9ybWFuY2VOb3ciLCJtb3pOb3ciLCJtc05vdyIsIm9Ob3ciLCJ3ZWJraXROb3ciLCJEYXRlIiwiZ2V0VGltZSIsInN0YXJ0VGltZSIsIm5leHRUaWNrIiwiYnJvd3NlciIsImFyZ3YiLCJ2ZXJzaW9ucyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsInVtYXNrIiwiaHJ0aW1lIiwicHJldmlvdXNUaW1lc3RhbXAiLCJjbG9ja3RpbWUiLCJzZWNvbmRzIiwibmFub3NlY29uZHMiLCJwbGF0Zm9ybSIsInJlbGVhc2UiLCJ1cHRpbWUiLCJub3JtYWxpemVBcnJheSIsImFsbG93QWJvdmVSb290IiwidXAiLCJzcGxpdFBhdGhSZSIsInNwbGl0UGF0aCIsInJlc29sdmUiLCJyZXNvbHZlZFBhdGgiLCJyZXNvbHZlZEFic29sdXRlIiwiaXNQYXRoQWJzb2x1dGUiLCJpc0Fic29sdXRlIiwidHJhaWxpbmdTbGFzaCIsImV4dG5hbWUiLCJiYXNlbmFtZSIsImV4dCIsImRpcm5hbWUiLCJzZXAiLCJyZWxhdGl2ZSIsImZyb21QYXJ0cyIsInRvUGFydHMiLCJzYW1lUGFydHNMZW5ndGgiLCJvdXRwdXRQYXJ0cyIsInhzIiwibnBhdGgiLCJuRmlsZU5hbWUiLCJpc0J1ZmZlciIsIlZGaWxlIiwiYnVmZmVyIiwiaGlzdG9yeSIsImFzc2VydFBhcnQiLCJwYXJ0IiwiYXNzZXJ0Tm9uRW1wdHkiLCJhc3NlcnRQYXRoIiwiZW5jb2RpbmciLCJzdGVtIiwiZmlsZVBhdGgiLCJmYWlsIiwiaW52b2tlZCIsImRvbmUiLCJ0aGVuIiwidHJvdWdoIiwiZm5zIiwibWlkZGxld2FyZSIsInVzZSIsImdldFByb3RvdHlwZU9mIiwidW5pZmllZCIsImF0dGFjaGVycyIsInRyYW5zZm9ybWVycyIsImZyb3plbiIsImZyZWV6ZUluZGV4IiwicHJvY2Vzc29yIiwiYXNzZXJ0VW5mcm96ZW4iLCJmcmVlemUiLCJhZGRQbHVnaW4iLCJhZGRMaXN0IiwiYWRkUHJlc2V0IiwicGx1Z2lucyIsInBsdWdpbiIsInBsYWluIiwidmZpbGUiLCJhc3NlcnRQYXJzZXIiLCJuZXdhYmxlIiwiYXNzZXJ0Q29tcGlsZXIiLCJhc3NlcnROb2RlIiwiY29tcGlsZSIsInJ1blN5bmMiLCJjb21wbGV0ZSIsImJhaWwiLCJhc3NlcnREb25lIiwicHJvY2Vzc1N5bmMiLCJ0cmFuc2Zvcm1lciIsImNiIiwiUHJvbWlzZSIsImV4ZWN1dG9yIiwicmVqZWN0IiwicGlwZWxpbmUiLCJhc3luY05hbWUiLCJmYXRhbGl0aWVzIiwiZW1pdFBhcnNlRXJyb3JzIiwicmVwbGFjZXIiLCJsZXZlbCIsImVycm9ycyIsImRlc2NyaXB0aW9uIiwibm90ZSIsImVuY29kZWRDaGFyIiwicGFyc2U1IiwiUGFyc2VyNSIsInRhZ05hbWVzIiwiYmxvY2tPckNhcHRpb24iLCJpbmZlcldoaXRlU3BhY2UiLCJjb2xsZWN0VGV4dCIsImJyZWFrQmVmb3JlIiwiYnJlYWtBZnRlciIsImlubmVyVGV4dENvbGxlY3Rpb24iLCJ6ZXJvV2lkdGhTcGFjZSIsImFsbSIsImx0ciIsInJ0bCIsImxyZSIsInJsZSIsInBkZiIsImxybyIsInJsbyIsImxyaSIsInJsaSIsImZzaSIsInBkaSIsInRhYkNoYXIiLCJzcGFjZUNoYXIiLCJub3RSZW5kZXJlZCIsImZpbmRBZnRlciIsImNvbGxlY3RFbGVtZW50IiwiY29sbGVjdFByZVRleHQiLCJsaW5lU3RhcnQiLCJuZXh0TGluZSIsInRyaW1BbmRjb2xsYXBzZVNwYWNlc0FuZFRhYnMiLCJyZW1vdmVCaWRpQ29udHJvbENoYXJhY3RlcnMiLCJpc0JpZGlDb250cm9sQ2hhcmFjdGVyIiwic3BhY2VJbmRleCIsImthdGV4IiwiaW5saW5lIiwicGFyc2VIdG1sIiwiaW5jbHVkZVdoaXRlU3BhY2UiLCJhZnRlciIsImlzVGV4dCIsImlzQ29tbWVudCIsIm9wdGlvbkdyb3VwIiwiZGF0YUxpc3RJdGVtIiwibWVudUNvbnRlbnQiLCJydWJ5IiwidGFibGVDb250YWluZXIiLCJ0YWJsZVJvdyIsInRhYmxlQ2VsbCIsImNvbmZ1c2luZ1BhcmFncmFwaFBhcmVudCIsImNsZWFyUGFyYWdyYXBoU2libGluZyIsIm9taXNzaW9uIiwiaGVhZE9yQ29sZ3JvdXBPckNhcHRpb24iLCJsaSIsImR0IiwicnQiLCJydWJ5RWxlbWVudCIsInJwIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJtZW51aXRlbSIsImNvbGdyb3VwIiwiY2FwdGlvbiIsInRoZWFkIiwidGJvZHkiLCJ0Zm9vdCIsInRyIiwidGQiLCJjZWxscyIsInRoIiwid2hpdGVTcGFjZUxlZnQiLCJiZWZvcmUiLCJ1bmlxdWVIZWFkTWV0YWRhdGEiLCJ0YWJsZUNvbnRhaW5lcnMiLCJwbGFjZSIsImFscGhhYmV0aWNhbCIsImRlY2ltYWwiLCJlc2NhcGVPbmx5IiwidXNlTmFtZWRSZWZlcmVuY2VzIiwiY2hhcmFjdGVycyIsImVudGl0aWVzIiwiY29uc3RydWN0IiwiZGVmYXVsdEVzY2FwZXMiLCJ0b0V4cHJlc3Npb24iLCJzdXJyb2dhdGVQYWlyIiwiYm1wIiwib21pdCIsIm9taXRPcHRpb25hbFNlbWljb2xvbnMiLCJ0b0hleFJlZmVyZW5jZSIsIm5hbWVkIiwibnVtZXJpYyIsInNob3J0ZXN0IiwidXNlU2hvcnRlc3RSZWZlcmVuY2VzIiwibGVnYWN5IiwiYWxwaGFudW1lcmljYWwiLCJ0b05hbWVkIiwidG9EZWNpbWFsUmVmZXJlbmNlIiwiaGV4YWRlY2ltYWwiLCJpc0xpdGVyYWwiLCJ1bnF1b3RlZCIsInVucXVvdGVkU2FmZSIsInNpbmdsZVF1b3RlZCIsImRvdWJsZVF1b3RlZCIsInNpbmdsZSIsInRpZ2h0IiwicXVvdGF0aW9uTWFyayIsImFwb3N0cm9waGUiLCJjbG9zZUVtcHR5IiwibGVzc1RoYW4iLCJ0aWdodENsb3NlIiwic2xhc2giLCJncmVhdGVyVGhhbiIsImVxdWFsc1RvIiwiY29uc3RhbnRzIiwic2FmZSIsImFsdGVybmF0aXZlIiwidGlnaHRMaXN0cyIsImNvbGxhcHNlRW1wdHkiLCJjY291bnQiLCJhdHRyaWJ1dGVWYWx1ZSIsInRpZ2h0RG9jdHlwZSIsInB1YiIsInN5cyIsInNtYXJ0IiwicXVvdGVTbWFydCIsImFsbG93UGFyc2VFcnJvcnMiLCJhbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnMiLCJvbWl0T3B0aW9uYWxUYWdzIiwicHJlZmVyVW5xdW90ZWQiLCJ0aWdodEF0dHJpYnV0ZXMiLCJ0aWdodENvbW1hU2VwYXJhdGVkTGlzdHMiLCJ0aWdodFNlbGZDbG9zaW5nIiwiY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXMiLCJjbG9zZVNlbGZDbG9zaW5nIiwiY2xvc2VFbXB0eUVsZW1lbnRzIiwidG9IVE1MIiwiY3RvciIsInN1cGVyQ3RvciIsInN1cGVyXyIsIlRlbXBDdG9yIiwiU3VwZXIiLCJPZiIsIkZyb20iLCJwYXJhbWV0ZXJzIiwidG9Qb3NpdGlvbiIsIm9mZnNldFRvUG9zaXRpb25GYWN0b3J5IiwidG9PZmZzZXQiLCJwb3NpdGlvblRvT2Zmc2V0RmFjdG9yeSIsInNlbWljb2xvbiIsImVudGl0eSIsImluZGVudCIsImVudGl0eUNoYXJhY3RlcnMiLCJuYW1lZEVudGl0eSIsInRlcm1pbmF0ZWQiLCJmb2xsb3dpbmciLCJ3YXJuaW5nIiwiYWRkaXRpb25hbCIsIm5vblRlcm1pbmF0ZWQiLCJoYW5kbGVUZXh0IiwiaGFuZGxlUmVmZXJlbmNlIiwiaGFuZGxlV2FybmluZyIsInRleHRDb250ZXh0IiwicmVmZXJlbmNlQ29udGV4dCIsIndhcm5pbmdDb250ZXh0IiwiYW1wZXJzYW5kIiwiZm9ybUZlZWQiLCJ1cHBlcmNhc2VYIiwibG93ZXJjYXNlWCIsImhleGEiLCJkZWNpIiwiZGVjb2RlRW50aXR5IiwibmFtZWRVbmtub3duIiwibmFtZWROb3RUZXJtaW5hdGVkIiwibmFtZWRFbXB0eSIsIm51bWVyaWNOb3RUZXJtaW5hdGVkIiwiYmFzZXMiLCJudW1lcmljUHJvaGliaXRlZCIsInJlcGxhY2VtZW50Q2hhcmFjdGVyIiwibnVtZXJpY0Rpc2FsbG93ZWQiLCJkaXNhbGxvd2VkIiwibnVtZXJpY0VtcHR5IiwiZmx1c2giLCJkZWNvZGVyIiwib2Zmc2V0cyIsIm1hdGNoZWQiLCJ2YWx1ZUxlbmd0aCIsInRva2VuaXplcnMiLCJvbmx5QXRTdGFydCIsImF0U3RhcnQiLCJub3RJbkxpc3QiLCJpbkxpc3QiLCJub3RJbkJsb2NrIiwiaW5CbG9jayIsIm5vdEluTGluayIsImluTGluayIsImVvZiIsImNvbWJpbmVkIiwiaW5kZW50YXRpb24iLCJnZXRPZmZzZXQiLCJ2YWxpZGF0ZUVhdCIsInJlc2V0IiwibWVyZ2VhYmxlIiwibWVyZ2VUZXh0IiwibWVyZ2VCbG9ja3F1b3RlIiwiZXhpdFN0YXJ0IiwiZXNjYXBlcyIsImZvb3Rub3RlcyIsInBlZGFudGljIiwiZm9yY2UiLCJoYXJkIiwic29mdCIsImxpbmVCcmVha3NFeHByZXNzaW9uIiwidG9rZW5pemVCbG9jayIsInJlbW92ZVBvc2l0aW9uIiwiYmxhbmtRdWV1ZSIsInN1YnZhbHVlUXVldWUiLCJjb250ZW50UXVldWUiLCJjb2RlSW5kZW50IiwiZmVuY2VDb3VudCIsImZsYWciLCJleGRlbnRlZENvbnRlbnQiLCJleGRlbnRlZENsb3NpbmciLCJ0aWxkZSIsImdyYXZlQWNjZW50IiwiZGVjb2RlIiwidW5lc2NhcGUiLCJpbnRlcnJ1cHRvcnMiLCJpbnRlcnJ1cHRvciIsInJlc3QiLCJuZXh0SW5kZXgiLCJzdGFydEluZGV4IiwicHJlZml4ZWQiLCJleGl0IiwiY3VycmVudExpbmUiLCJpbmRlbnRzIiwiaW50ZXJydXB0IiwiZW50ZXJCbG9jayIsIm1heEZlbmNlQ291bnQiLCJtYXJrZXJDb3VudCIsImFzdGVyaXNrIiwidW5kZXJzY29yZSIsIm1heENvdW50Iiwic3RvcHMiLCJzcGFjZVNpemUiLCJtYXhpbXVtIiwicGFkZGluZyIsIm1pbkluZGVudCIsImV4Y2xhbWF0aW9uTWFyayIsImdldEluZGVudCIsImN1cnJlbnRNYXJrZXIiLCJwcmV2RW1wdHkiLCJhbGxMaW5lcyIsImVtcHR5TGluZXMiLCJpdGVtIiwiZW50ZXJUb3AiLCJleGl0QmxvY2txdW90ZSIsImluZGVudGVkIiwiaW50ZXJ1cHRvcnMiLCJwbHVzU2lnbiIsInJpZ2h0UGFyZW50aGVzaXMiLCJ0cmFpbCIsImVudGVyTGlzdCIsImxvb3NlTGlzdEl0ZW1FeHByZXNzaW9uIiwidGFza0l0ZW1FeHByZXNzaW9uIiwiYnVsbGV0RXhwcmVzc2lvbiIsInBlZGFudGljQnVsbGV0RXhwcmVzc2lvbiIsImluaXRpYWxJbmRlbnRFeHByZXNzaW9uIiwidGFzayIsInBlZGFudGljTGlzdEl0ZW0iLCJub3JtYWxMaXN0SXRlbSIsImJ1bGxldCIsInRyaW1tZWRMaW5lcyIsIiQyIiwiJDMiLCIkNCIsInJlbW92ZUluZGVudCIsIm1heEluZGVudCIsImVxdWFsc1RvRGVwdGgiLCJkYXNoRGVwdGgiLCJvcGVuVGFnIiwiY2xvc2VUYWciLCJlbGVtZW50T3BlbkV4cHJlc3Npb24iLCJzZXF1ZW5jZXMiLCJyYXdPcGVuRXhwcmVzc2lvbiIsInJhd0Nsb3NlRXhwcmVzc2lvbiIsImNvbW1lbnRPcGVuRXhwcmVzc2lvbiIsImNvbW1lbnRDbG9zZUV4cHJlc3Npb24iLCJpbnN0cnVjdGlvbk9wZW5FeHByZXNzaW9uIiwiaW5zdHJ1Y3Rpb25DbG9zZUV4cHJlc3Npb24iLCJkaXJlY3RpdmVPcGVuRXhwcmVzc2lvbiIsImRpcmVjdGl2ZUNsb3NlRXhwcmVzc2lvbiIsImNkYXRhT3BlbkV4cHJlc3Npb24iLCJjZGF0YUNsb3NlRXhwcmVzc2lvbiIsImVsZW1lbnRDbG9zZUV4cHJlc3Npb24iLCJvdGhlckVsZW1lbnRPcGVuRXhwcmVzc2lvbiIsIm9wZW5DbG9zZVRhZyIsImNvbGxhcHNlV2hpdGVTcGFjZSIsImxlZnRTcXVhcmVCcmFja2V0IiwicmlnaHRTcXVhcmVCcmFja2V0IiwiY2FyZXQiLCJjb2xvbiIsIkVYUFJFU1NJT05fSU5JVElBTF9UQUIiLCJzdWJxdWV1ZSIsImJlZm9yZVVSTCIsImJlZm9yZVRpdGxlIiwiaXNFbmNsb3NlZFVSTENoYXJhY3RlciIsImlzVW5jbG9zZWRVUkxDaGFyYWN0ZXIiLCJsZWZ0UGFyZW50aGVzaXMiLCJhbGlnbm1lbnRzIiwiaGFzRGFzaCIsInByZWFtYmxlIiwibGluZUNvdW50IiwicGlwZUluZGV4IiwibWluUm93cyIsIm1pbkNvbHVtbnMiLCJ0cmltVHJhaWxpbmdMaW5lcyIsImxvY2F0ZSIsImF1dG9MaW5rIiwiYXRTaWduIiwibWFpbHRvIiwibWFpbHRvTGVuZ3RoIiwiaGFzQXRDaGFyYWN0ZXIiLCJlbnRlckxpbmsiLCJwcm90b2NvbHMiLCJwcm90b2NvbHNMZW5ndGgiLCJwYXJlbkNvdW50IiwibmV4dENoYXJhY3RlciIsImlubGluZUhUTUwiLCJxdWVzdGlvbk1hcmsiLCJodG1sTGlua09wZW5FeHByZXNzaW9uIiwiaHRtbExpbmtDbG9zZUV4cHJlc3Npb24iLCJjbG9zZWQiLCJoYXNNYXJrZXIiLCJpc0ltYWdlIiwic2hvcnRjdXQiLCJjb2xsYXBzZWQiLCJmdWxsIiwiYnJhY2tldGVkIiwiaW50cm8iLCJzdHJpa2V0aHJvdWdoIiwib3BlbmluZ0ZlbmNlRW5kIiwiY2xvc2luZ0ZlbmNlU3RhcnQiLCJjbG9zaW5nRmVuY2VFbmQiLCJmb3VuZCIsImhhcmRCcmVhayIsIm1pbkJyZWFrTGVuZ3RoIiwic2V0T3B0aW9ucyIsInZmaWxlTG9jYXRpb24iLCJ0b2dnbGUiLCJpbmRlbnRlZENvZGUiLCJmZW5jZWRDb2RlIiwiYXR4SGVhZGluZyIsInJlcXVpcmUkJDkiLCJzZXRleHRIZWFkaW5nIiwicmVxdWlyZSQkMTAiLCJyZXF1aXJlJCQxMSIsInJlcXVpcmUkJDEyIiwicmVxdWlyZSQkMTMiLCJyZXF1aXJlJCQxNCIsInJlcXVpcmUkJDE2IiwicmVxdWlyZSQkMTciLCJyZXF1aXJlJCQxOCIsInJlcXVpcmUkJDE5IiwicmVxdWlyZSQkMjAiLCJyZXF1aXJlJCQyMiIsInJlcXVpcmUkJDIzIiwiZGVsZXRpb24iLCJyZXF1aXJlJCQyNCIsInJlcXVpcmUkJDI1IiwicmVxdWlyZSQkMjYiLCJyZXF1aXJlJCQyNyIsInRva2VuaXplRmFjdG9yeSIsIkxvY2FsIiwidW5oZXJpdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImFycjIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJpdGVyIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2FyciIsIl9uIiwiX2QiLCJfZSIsIl9zIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsImVzY2FwZVJlZ0V4cCIsIkNfTkVXTElORSIsIkNfRkVOQ0UiLCJhdmFpbGFibGVCbG9ja3MiLCJjdXN0b21CbG9ja3MiLCJrZWVwIiwiX2tlZXAiLCJibG9ja1R5cGUiLCJibG9ja1RpdGxlIiwibGluZXNUb0VhdCIsImxpbmVUb0VhdCIsImNvbnRlbnRTdHJpbmciLCJzdHJpbmdUb0VhdCIsInBvdGVudGlhbEJsb2NrIiwidGl0bGVBbGxvd2VkIiwiYmxvY2tDaGlsZHJlbiIsInRpdGxlTm9kZSIsImRldGFpbHMiLCJibG9ja0hlYWRpbmciLCJibG9ja0JvZHkiLCJtYXhJbnQiLCJ0TWluIiwidE1heCIsImRhbXAiLCJpbml0aWFsQmlhcyIsImluaXRpYWxOIiwicmVnZXhOb25BU0NJSSIsInJlZ2V4U2VwYXJhdG9ycyIsIm5vdC1iYXNpYyIsImludmFsaWQtaW5wdXQiLCJiYXNlTWludXNUTWluIiwic3RyaW5nRnJvbUNoYXJDb2RlIiwiZGlnaXRUb0Jhc2ljIiwiYWRhcHQiLCJkZWx0YSIsIm51bVBvaW50cyIsImZpcnN0VGltZSIsInRvQVNDSUkiLCJlbmNvZGVkIiwibWFwRG9tYWluIiwiaGFuZGxlZENQQ291bnQiLCJiYXNpY0xlbmd0aCIsImN1cnJlbnRWYWx1ZSIsImlucHV0TGVuZ3RoIiwiaGFuZGxlZENQQ291bnRQbHVzT25lIiwiYmFzZU1pbnVzVCIsInFNaW51c1QiLCJjb3VudGVyIiwidWNzMmRlY29kZSIsInJldkxvb2t1cCIsIkFyciIsIlVpbnQ4QXJyYXkiLCJpbml0ZWQiLCJpbml0IiwiZW5jb2RlQ2h1bmsiLCJ1aW50OCIsImZyb21CeXRlQXJyYXkiLCJleHRyYUJ5dGVzIiwibGVuMiIsInJlYWQiLCJpc0xFIiwibUxlbiIsIm5CeXRlcyIsImVMZW4iLCJlTWF4IiwiZUJpYXMiLCJuQml0cyIsIk5hTiIsImFicyIsIkxOMiIsImtNYXhMZW5ndGgiLCJCdWZmZXIiLCJUWVBFRF9BUlJBWV9TVVBQT1JUIiwiY3JlYXRlQnVmZmVyIiwidGhhdCIsImVuY29kaW5nT3JPZmZzZXQiLCJhbGxvY1Vuc2FmZSIsIkFycmF5QnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJmcm9tQXJyYXlMaWtlIiwiZnJvbUFycmF5QnVmZmVyIiwiaXNFbmNvZGluZyIsImFjdHVhbCIsImZyb21TdHJpbmciLCJpbnRlcm5hbElzQnVmZmVyIiwiZnJvbU9iamVjdCIsImFzc2VydFNpemUiLCJfaXNCdWZmZXIiLCJpc1ZpZXciLCJsb3dlcmVkQ2FzZSIsInV0ZjhUb0J5dGVzIiwiYmFzZTY0VG9CeXRlcyIsInN3YXAiLCJiaWRpcmVjdGlvbmFsSW5kZXhPZiIsImFycmF5SW5kZXhPZiIsImluZGV4U2l6ZSIsImFyckxlbmd0aCIsInZhbExlbmd0aCIsImJ1ZiIsInJlYWRVSW50MTZCRSIsImZvdW5kSW5kZXgiLCJoZXhXcml0ZSIsInJlbWFpbmluZyIsInN0ckxlbiIsInBhcnNlZCIsInV0ZjhXcml0ZSIsImJsaXRCdWZmZXIiLCJhc2NpaVdyaXRlIiwiYnl0ZUFycmF5IiwiYXNjaWlUb0J5dGVzIiwibGF0aW4xV3JpdGUiLCJiYXNlNjRXcml0ZSIsInVjczJXcml0ZSIsInVuaXRzIiwidXRmMTZsZVRvQnl0ZXMiLCJiYXNlNjRTbGljZSIsImJhc2U2NC5mcm9tQnl0ZUFycmF5IiwidXRmOFNsaWNlIiwic2Vjb25kQnl0ZSIsInRoaXJkQnl0ZSIsImZvdXJ0aEJ5dGUiLCJ0ZW1wQ29kZVBvaW50IiwiZmlyc3RCeXRlIiwiYnl0ZXNQZXJTZXF1ZW5jZSIsIk1BWF9BUkdVTUVOVFNfTEVOR1RIIiwiZGVjb2RlQ29kZVBvaW50c0FycmF5IiwicG9vbFNpemUiLCJfYXVnbWVudCIsImFsbG9jIiwiYWxsb2NVbnNhZmVTbG93IiwiaXNGYXN0QnVmZmVyIiwicmVhZEZsb2F0TEUiLCJpc1Nsb3dCdWZmZXIiLCJjb21wYXJlIiwic3dhcDE2Iiwic3dhcDMyIiwic3dhcDY0IiwiaGV4U2xpY2UiLCJhc2NpaVNsaWNlIiwibGF0aW4xU2xpY2UiLCJ1dGYxNmxlU2xpY2UiLCJlcXVhbHMiLCJpbnNwZWN0IiwidGhpc1N0YXJ0IiwidGhpc0VuZCIsInRoaXNDb3B5IiwidGFyZ2V0Q29weSIsImlzRmluaXRlIiwidG9KU09OIiwidG9IZXgiLCJieXRlcyIsImNoZWNrT2Zmc2V0IiwiY2hlY2tJbnQiLCJvYmplY3RXcml0ZVVJbnQxNiIsImxpdHRsZUVuZGlhbiIsIm9iamVjdFdyaXRlVUludDMyIiwiY2hlY2tJRUVFNzU0Iiwid3JpdGVGbG9hdCIsIm5vQXNzZXJ0IiwiaWVlZTc1NC53cml0ZSIsIndyaXRlRG91YmxlIiwibmV3QnVmIiwic3ViYXJyYXkiLCJzbGljZUxlbiIsInJlYWRVSW50TEUiLCJtdWwiLCJyZWFkVUludEJFIiwicmVhZFVJbnQ4IiwicmVhZFVJbnQxNkxFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEludExFIiwicmVhZEludEJFIiwicmVhZEludDgiLCJyZWFkSW50MTZMRSIsInJlYWRJbnQxNkJFIiwicmVhZEludDMyTEUiLCJyZWFkSW50MzJCRSIsImllZWU3NTQucmVhZCIsInJlYWRGbG9hdEJFIiwicmVhZERvdWJsZUxFIiwicmVhZERvdWJsZUJFIiwid3JpdGVVSW50TEUiLCJ3cml0ZVVJbnRCRSIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkxFIiwid3JpdGVVSW50MTZCRSIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQzMkJFIiwid3JpdGVJbnRMRSIsImxpbWl0Iiwid3JpdGVJbnRCRSIsIndyaXRlSW50OCIsIndyaXRlSW50MTZMRSIsIndyaXRlSW50MTZCRSIsIndyaXRlSW50MzJMRSIsIndyaXRlSW50MzJCRSIsIndyaXRlRmxvYXRMRSIsIndyaXRlRmxvYXRCRSIsIndyaXRlRG91YmxlTEUiLCJ3cml0ZURvdWJsZUJFIiwidGFyZ2V0U3RhcnQiLCJJTlZBTElEX0JBU0U2NF9SRSIsImxlYWRTdXJyb2dhdGUiLCJiNjQiLCJwbGFjZUhvbGRlcnMiLCJMIiwiYmFzZTY0LnRvQnl0ZUFycmF5Iiwic3RyaW5ndHJpbSIsImJhc2U2NGNsZWFuIiwiZHN0IiwiaXNOdWxsIiwiaXNTdHJpbmciLCJpc09iamVjdCIsInN0cmluZ2lmeVByaW1pdGl2ZSIsInFzIiwiZXEiLCJyZWdleHAiLCJtYXhLZXlzIiwia3N0ciIsInZzdHIiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ1cmxQYXJzZSIsInJlc29sdmVPYmplY3QiLCJVcmwiLCJzbGFzaGVzIiwiYXV0aCIsInBvcnQiLCJob3N0bmFtZSIsImhhc2giLCJxdWVyeSIsInBhdGhuYW1lIiwicHJvdG9jb2xQYXR0ZXJuIiwicG9ydFBhdHRlcm4iLCJzaW1wbGVQYXRoUGF0dGVybiIsInVud2lzZSIsImF1dG9Fc2NhcGUiLCJub25Ib3N0Q2hhcnMiLCJob3N0RW5kaW5nQ2hhcnMiLCJob3N0bmFtZU1heExlbiIsImhvc3RuYW1lUGFydFBhdHRlcm4iLCJob3N0bmFtZVBhcnRTdGFydCIsInVuc2FmZVByb3RvY29sIiwiamF2YXNjcmlwdCIsImphdmFzY3JpcHQ6IiwiaG9zdGxlc3NQcm90b2NvbCIsInNsYXNoZWRQcm90b2NvbCIsImh0dHAiLCJodHRwcyIsImZ0cCIsImdvcGhlciIsImh0dHA6IiwiaHR0cHM6IiwiZnRwOiIsImdvcGhlcjoiLCJmaWxlOiIsInBhcnNlUXVlcnlTdHJpbmciLCJzbGFzaGVzRGVub3RlSG9zdCIsInF1ZXJ5SW5kZXgiLCJzcGxpdHRlciIsInVTcGxpdCIsInNpbXBsZVBhdGgiLCJxc1BhcnNlIiwiaGVjIiwibG93ZXJQcm90byIsImhvc3RFbmQiLCJwYXJzZUhvc3QiLCJpcHY2SG9zdG5hbWUiLCJob3N0cGFydHMiLCJuZXdwYXJ0IiwidmFsaWRQYXJ0cyIsIm5vdEhvc3QiLCJiaXQiLCJhZSIsImVzYyIsInFtIiwia3MiLCJfdHlwZW9mIiwicmVsUGF0aCIsInRrZXlzIiwidGsiLCJ0a2V5IiwicmtleXMiLCJyayIsInJrZXkiLCJhdXRoSW5Ib3N0IiwiaXNTb3VyY2VBYnMiLCJpc1JlbEFicyIsIm11c3RFbmRBYnMiLCJyZW1vdmVBbGxEb3RzIiwic3JjUGF0aCIsInBzeWNob3RpYyIsImhhc1RyYWlsaW5nU2xhc2giLCJfcmVxdWlyZSIsIlVSTFNlYXJjaFBhcmFtcyIsImlmcmFtZXMiLCJlYXRlblZhbHVlIiwic3BlY2lhbENoYXJzIiwicHJvdmlkZXIiLCJkZXRlY3RQcm92aWRlciIsImZpbmFsVXJsIiwiZHJvcHBlZFF1ZXJ5UGFyYW1ldGVycyIsImlnbm9yZWQiLCJfcnVsZSIsInJlbW92ZUZpbGVOYW1lIiwicmVtb3ZlQWZ0ZXIiLCJhcHBlbmQiLCJjb21wdXRlRmluYWxVcmwiLCJ0aHVtYm5haWwiLCJ0aHVtYm5haWxVUkwiLCJ0aHVtYm5haWxDb25maWciLCJjb21wdXRlVGh1bWJuYWlsIiwiYWxsb3dmdWxsc2NyZWVuIiwiZnJhbWVib3JkZXIiLCJpZnJhbWUiLCJmbmMiLCJyZW1hcmsiLCJsaW5lSW5wdXQiLCJ0ZXh0SW5wdXQiLCJtdWx0aUNob2ljZSIsImluZm9ybWF0aW9uIiwiYXR0ZW50aW9uIiwicXVlc3Rpb24iLCJnb29kIiwic2VjcmV0IiwiYmFkIiwid3d3LnlvdXR1YmUuY29tIiwicmVoeXBlS2F0ZXgiLCJyZWh5cGVTdHJpbmdpZnkiXSwibWFwcGluZ3MiOiJnQ0FBQSxNQUlBLFdBR0ksSUFGQSxJQUFJQSxLQUVLQyxFQUFJLEVBQUdBLEVBQUlDLFVBQVVDLE9BQVFGLElBQUssQ0FDdkMsSUFBSUcsRUFBU0YsVUFBVUQsR0FFdkIsSUFBSyxJQUFJSSxLQUFPRCxFQUNSRSxFQUFlQyxLQUFLSCxFQUFRQyxLQUM1QkwsRUFBT0ssR0FBT0QsRUFBT0MsSUFLakMsT0FBT0wsR0FmUE0sRUFBaUJFLE9BQU9DLFVBQVVILGVDTXRDLElBQUlJLEVBQXdCRixPQUFPRSxzQkFDL0JKLEVBQWlCRSxPQUFPQyxVQUFVSCxlQUNsQ0ssRUFBbUJILE9BQU9DLFVBQVVHLHFCQXNEeEMsTUE1Q0EsV0FDQyxJQUNDLElBQUtKLE9BQU9LLE9BQ1gsT0FBTyxFQU1SLElBQUlDLEVBQVEsSUFBSUMsT0FBTyxPQUV2QixHQURBRCxFQUFNLEdBQUssS0FDa0MsTUFBekNOLE9BQU9RLG9CQUFvQkYsR0FBTyxHQUNyQyxPQUFPLEVBS1IsSUFEQSxJQUFJRyxLQUNLaEIsRUFBSSxFQUFHQSxFQUFJLEdBQUlBLElBQ3ZCZ0IsRUFBTSxJQUFNRixPQUFPRyxhQUFhakIsSUFBTUEsRUFLdkMsR0FBd0IsZUFIWE8sT0FBT1Esb0JBQW9CQyxHQUFPRSxJQUFJLFNBQVVDLEdBQzVELE9BQU9ILEVBQU1HLEtBRUhDLEtBQUssSUFDZixPQUFPLEVBSVIsSUFBSUMsS0FJSixNQUhBLHVCQUF1QkMsTUFBTSxJQUFJQyxRQUFRLFNBQVVDLEdBQ2xESCxFQUFNRyxHQUFVQSxJQUdmLHlCQURFakIsT0FBT2tCLEtBQUtsQixPQUFPSyxVQUFXUyxJQUFRRCxLQUFLLElBTTlDLE1BQU9NLEdBRVIsT0FBTyxHQUlRQyxHQUFvQnBCLE9BQU9LLE9BQVMsU0FBVWIsRUFBUUksR0FLdEUsSUFKQSxJQUFJeUIsRUFFQUMsRUFEQUMsRUF0REwsU0FBa0JDLEdBQ2pCLEdBQVksT0FBUkEsUUFBd0JDLElBQVJELEVBQ25CLE1BQU0sSUFBSUUsVUFBVSx5REFHckIsT0FBTzFCLE9BQU93QixHQWlETEcsQ0FBU25DLEdBR1RvQyxFQUFJLEVBQUdBLEVBQUlsQyxVQUFVQyxPQUFRaUMsSUFBSyxDQUcxQyxJQUFLLElBQUkvQixLQUZUd0IsRUFBT3JCLE9BQU9OLFVBQVVrQyxJQUduQjlCLEVBQWVDLEtBQUtzQixFQUFNeEIsS0FDN0IwQixFQUFHMUIsR0FBT3dCLEVBQUt4QixJQUlqQixHQUFJSyxFQUF1QixDQUMxQm9CLEVBQVVwQixFQUFzQm1CLEdBQ2hDLElBQUssSUFBSTVCLEVBQUksRUFBR0EsRUFBSTZCLEVBQVEzQixPQUFRRixJQUMvQlUsRUFBaUJKLEtBQUtzQixFQUFNQyxFQUFRN0IsTUFDdkM4QixFQUFHRCxFQUFRN0IsSUFBTTRCLEVBQUtDLEVBQVE3QixNQU1sQyxPQUFPOEIsS0NsRlIsU0FBV00sRUFBTUMsRUFBT0MsR0FDdEIsSUFBSUMsRUFHUyxPQUFWRCxRQUE0Qk4sSUFBVk0sR0FDRCxpQkFBVkQsSUFBc0JHLE1BQU1DLFFBQVFKLEtBRTVDQyxFQUFRRCxFQUNSQSxNQUdGRSxFQUFPM0IsR0FBUXdCLEtBQU10QixPQUFPc0IsSUFBUUMsR0FFaENHLE1BQU1DLFFBQVFILEdBQ2hCQyxFQUFLRyxTQUFXSixFQUNHLE9BQVZBLFFBQTRCTixJQUFWTSxJQUMzQkMsRUFBS0QsTUFBUXhCLE9BQU93QixJQUd0QixPQUFPQyxHQ3ZCVCxNQUFpQkksRUFFakIsU0FBU0EsRUFBUUMsR0FDZixHQUFvQixpQkFBVEEsRUFDVCxPQXFFSixTQUFxQkEsR0FDbkIsT0FFQSxTQUFjTCxHQUNaLE9BQU9NLFFBQVFOLEdBQVFBLEVBQUtILE9BQVNRLElBekU5QkUsQ0FBWUYsR0FHckIsR0FBYSxPQUFUQSxRQUEwQlosSUFBVFksRUFDbkIsT0FBT0csRUFHVCxHQUFvQixpQkFBVEgsRUFDVCxPQUFRLFdBQVlBLEVBd0N4QixTQUFvQkksR0FDbEIsSUFBSUMsRUEvQk4sU0FBb0JELEdBQ2xCLElBQUlFLEtBQ0FoRCxFQUFTOEMsRUFBTTlDLE9BQ2ZpRCxHQUFTLEVBRWIsT0FBU0EsRUFBUWpELEdBQ2ZnRCxFQUFRQyxHQUFTUixFQUFRSyxFQUFNRyxJQUdqQyxPQUFPRCxFQXNCTUUsQ0FBV0osR0FDcEI5QyxFQUFTK0MsRUFBTy9DLE9BRXBCLE9BRUEsV0FDRSxJQUFJaUQsR0FBUyxFQUViLE9BQVNBLEVBQVFqRCxHQUNmLEdBQUkrQyxFQUFPRSxHQUFPRSxNQUFNQyxLQUFNckQsV0FDNUIsT0FBTyxFQUlYLE9BQU8sSUEvQlgsU0FBd0IyQyxHQUN0QixPQUVBLFNBQWlCTCxHQUNmLElBQUluQyxFQUVKLElBQUtBLEtBQU93QyxFQUNWLEdBQUlMLEVBQUtuQyxLQUFTd0MsRUFBS3hDLEdBQ3JCLE9BQU8sRUFJWCxPQUFPLEtBcENpRHdDLEdBRzFELEdBQW9CLG1CQUFUQSxFQUNULE9BQU9BLEVBR1QsTUFBTSxJQUFJVyxNQUFNLGdEQStEbEIsU0FBU1IsSUFDUCxPQUFPLEVDbkZULE1BQWlCUyxFQUliQyxHQUFXLEVBQ1hDLEVBQU8sT0FDUEMsR0FBTyxFQU1YLFNBQVNILEVBQWFJLEVBQU1oQixFQUFNaUIsRUFBU0MsR0FDekMsSUFBSUMsRUFhSixTQUFTQyxFQUFJekIsRUFBTVksRUFBT2MsR0FDeEIsSUFDSUMsRUFEQUMsS0FHSixPQUFLdkIsSUFBUW1CLEVBQUd4QixFQUFNWSxFQUFPYyxFQUFRQSxFQUFRL0QsT0FBUyxJQUFNLFFBQzFEaUUsRUFBU0MsRUFBU1AsRUFBUXRCLEVBQU0wQixLQUVyQixLQUFPTixJQUtoQnBCLEVBQUtHLFVBQVl5QixFQUFPLEtBQU9ULElBQ2pDUSxFQUFZRSxFQVFoQixTQUFhMUIsRUFBVXVCLEdBQ3JCLElBR0lFLEVBRkFFLEVBQU9QLEdBQVcsRUFBSSxFQUN0QlgsR0FBU1csRUFBVXBCLEVBQVN4QyxRQUZ0QixHQUVzQ21FLEVBR2hELEtBQU9sQixHQUxHLEdBS1lBLEVBQVFULEVBQVN4QyxRQUFRLENBRzdDLElBRkFpRSxFQUFTSCxFQUFJdEIsRUFBU1MsR0FBUUEsRUFBT2MsSUFFMUIsS0FBT04sRUFDaEIsT0FBT1EsRUFHVGhCLEVBQTZCLGlCQUFkZ0IsRUFBTyxHQUFrQkEsRUFBTyxHQUFLaEIsRUFBUWtCLEdBckJ2Q0MsQ0FBSS9CLEVBQUtHLFNBQVV1QixFQUFRTSxPQUFPaEMsTUFDdEMsS0FBT29CLEVBQU9PLEVBTnRCQyxFQW5CTyxtQkFBVHZCLEdBQTBDLG1CQUFaaUIsSUFDdkNDLEVBQVVELEVBQ1ZBLEVBQVVqQixFQUNWQSxFQUFPLE1BR1RtQixFQUFLcEIsRUFBUUMsR0FFYm9CLEVBQUlKLEVBQU0sU0EwQ1osU0FBU1EsRUFBUzlCLEdBQ2hCLE9BQWMsT0FBVkEsR0FBbUMsaUJBQVZBLEdBQXNCLFdBQVlBLEVBQ3REQSxFQUdZLGlCQUFWQSxHQUNEbUIsRUFBVW5CLElBR1pBLEdBbEVWa0IsRUFBYUMsU0FBV0EsRUFDeEJELEVBQWFFLEtBQU9BLEVBQ3BCRixFQUFhRyxLQUFPQSxFQ1ZwQixNQUFpQmEsRUFJYmYsRUFBV0QsRUFBYUMsU0FDeEJDLEVBQU9GLEVBQWFFLEtBQ3BCQyxFQUFPSCxFQUFhRyxLQU14QixTQUFTYSxFQUFNWixFQUFNaEIsRUFBTWlCLEVBQVNDLEdBQ2QsbUJBQVRsQixHQUEwQyxtQkFBWmlCLElBQ3ZDQyxFQUFVRCxFQUNWQSxFQUFVakIsRUFDVkEsRUFBTyxNQUdUWSxFQUFhSSxFQUFNaEIsRUFFbkIsU0FBa0JMLEVBQU0wQixHQUN0QixJQUFJUSxFQUFTUixFQUFRQSxFQUFRL0QsT0FBUyxHQUNsQ2lELEVBQVFzQixFQUFTQSxFQUFPL0IsU0FBU2dDLFFBQVFuQyxHQUFRLEtBQ3JELE9BQU9zQixFQUFRdEIsRUFBTVksRUFBT3NCLElBTEtYLEdBWHJDVSxFQUFNZixTQUFXQSxFQUNqQmUsRUFBTWQsS0FBT0EsRUFDYmMsRUFBTWIsS0FBT0EsdVFDVmIsSUFBSWdCLEVBQVdDLEVBS2YsU0FBU0MsRUFBUXpDLEdBR2YsT0FGQTBDLEVBQU1DLFlBQWMzQyxFQUViMEMsRUFFUCxTQUFTQSxFQUFNdkMsR0FDYixJQUFJdUMsRUFBU3ZDLEdBQVFBLEVBQUtvQyxVQUFZcEMsRUFBS29DLFNBQVN2QyxPQUVwRCxPQUNFNEMsS0FBTUYsRUFBTUUsTUFBUSxLQUNwQkMsT0FBUUgsRUFBTUcsUUFBVSxLQUN4QkMsT0FBUUMsTUFBTUwsRUFBTUksUUFBVSxLQUFPSixFQUFNSSxTQWRqRFAsRUFBU1MsTUFBUVAsRUFBUSxTQUN6QkYsRUFBU1UsSUFBTVIsRUFBUSxXQ0R2QixTQUFtQnRDLEdBQ2pCLElBQUlvQyxFQUFXVyxFQUFTQSxFQUFTL0MsR0FBTW9DLFVBQ25DUyxFQUFRRSxFQUFTWCxFQUFTUyxPQUMxQkMsRUFBTUMsRUFBU1gsRUFBU1UsS0FFNUIsUUFBUUQsRUFBTUosTUFBU0ksRUFBTUgsUUFBV0ksRUFBSUwsTUFBU0ssRUFBSUosU0FHM0QsU0FBU0ssRUFBU2hELEdBQ2hCLE9BQU9BLEdBQTBCLGlCQUFWQSxFQUFxQkEsS0NUOUMsTUFLQSxTQUE4QkMsRUFBTWdELEdBQ2xDLE9BNEJGLFNBQXVCQyxHQUNyQixPQUdBLFNBQWdCQyxHQUNkLElBQUlDLEVBQUtELEdBQWNFLEVBQVVGLEdBQ2pDLE9BQU9DLEdBQU1FLEVBQUl0RixLQUFLa0YsRUFBT0UsR0FBTUYsRUFBTUUsR0FBTSxNQWxDMUNHLENBSVQsU0FBZ0J0RCxFQUFNZ0QsR0FDcEIsSUFBSUMsS0FFSixJQUFLakQsSUFBU0EsRUFBS0gsS0FDakIsTUFBTSxJQUFJbUIsTUFBTSx3Q0FLbEIsT0FGQWlCLEVBQU1qQyxFQUFNLGFBQWNnRCxHQUFXQSxFQUFRTyxXQUk3QyxTQUFvQkMsR0FDbEIsSUFBSUwsRUFBS0MsRUFBVUksRUFBV04sWUFDekJHLEVBQUl0RixLQUFLa0YsRUFBT0UsS0FDbkJGLEVBQU1FLEdBQU1LLElBSWhCLFNBQWdCQSxHQUNkUCxFQUFNRyxFQUFVSSxFQUFXTixhQUFlTSxJQVZyQ1AsRUFiY1EsQ0FBT3pELEVBQU1nRCxLQUpoQ0ssS0FBU3ZGLGVBMENiLFNBQVNzRixFQUFVRixHQUNqQixPQUFPQSxFQUFXUSxxQ0NoRHBCckIsRUFBVXNCLFVBRVYsU0FBY0MsR0FDWixPQUFPQSxFQUFJQyxRQUFRLGFBQWMsV0FHcEIsU0FBU0QsR0FDdEIsT0FBT0EsRUFBSUMsUUFBUSxPQUFRLEtBRzdCeEIsUUFBZ0IsU0FBU3VCLEdBQ3ZCLE9BQU9BLEVBQUlDLFFBQVEsT0FBUSx5QkNMN0IsU0FBYUMsRUFBRzVCLEdBQ2QsSUFJSU4sRUFDQW1DLEVBTEFDLEVBQVE5QixFQUFPL0IsYUFDZnhDLEVBQVNxRyxFQUFNckcsT0FDZnNHLEtBQ0FyRCxHQUFTLEVBSWIsT0FBU0EsRUFBUWpELElBQ2ZpRSxFQUFTSCxFQUFJcUMsRUFBR0UsRUFBTXBELEdBQVFzQixNQUd4QnRCLEdBQW1DLFVBQTFCb0QsRUFBTXBELEVBQVEsR0FBR2YsT0FDeEIrQixFQUFPN0IsUUFDVDZCLEVBQU83QixNQUFRbUUsRUFBS0MsS0FBS3ZDLEVBQU83QixTQUdsQ2dFLEVBQU9uQyxFQUFPekIsVUFBWXlCLEVBQU96QixTQUFTLEtBRTlCNEQsRUFBS2hFLFFBQ2ZnRSxFQUFLaEUsTUFBUW1FLEVBQUtDLEtBQUtKLEVBQUtoRSxTQUloQ2tFLEVBQVNBLEVBQU9qQyxPQUFPSixJQUkzQixPQUFPcUMsSUNqQ1QsTUFpQkEsU0FBYUgsRUFBRzlELEVBQU1rQyxHQUNwQixJQUFJckMsRUFBT0csR0FBUUEsRUFBS0gsS0FDcEJ1RSxFQUFLZixFQUFJdEYsS0FBSytGLEVBQUVPLFNBQVV4RSxHQUFRaUUsRUFBRU8sU0FBU3hFLEdBQVEsS0FHekQsSUFBS0EsRUFDSCxNQUFNLElBQUltQixNQUFNLHVCQUF5QmhCLEVBQU8sS0FHbEQsT0FBc0IsbUJBQVBvRSxFQUFvQkEsRUFsQnJDLFNBQWlCTixFQUFHOUQsR0FDbEIsR0FxQkYsU0FBY0EsR0FDWixJQUFJc0UsRUFBT3RFLEVBQUtzRSxTQUVoQixHQUNFakIsRUFBSXRGLEtBQUt1RyxFQUFNLFVBQ2ZqQixFQUFJdEYsS0FBS3VHLEVBQU0sZ0JBQ2ZqQixFQUFJdEYsS0FBS3VHLEVBQU0sYUFFZixPQUFPLEVBR1QsTUFBTyxVQUFXdEUsRUFoQ2R1RSxDQUFLdkUsR0FDUCxPQUFPOEQsRUFBRVUsUUFBUXhFLEVBQU15RSxFQUFFLE9BQVF6RSxFQUFLRCxRQUd4QyxPQUFPK0QsRUFBRTlELEVBQU0sTUFBTytCLEVBQUkrQixFQUFHOUQsTUFhb0I4RCxFQUFHOUQsRUFBTWtDLElBckJ4RG1CLEtBQVN2RixlQ0xiLE1BRUEsU0FBdUJnRyxFQUFHOUQsR0FDeEIsT0FBTzhELEVBQUU5RCxFQUFNLE9DSGpCLE1BTUEsU0FBY2dFLEVBQU9VLEdBQ25CLElBQUk5QyxLQUNBaEIsR0FBUyxFQUNUakQsRUFBU3FHLEVBQU1yRyxPQUVmK0csR0FDRjlDLEVBQU8rQyxLQUFLRixFQUFFLE9BQVEsT0FHeEIsT0FBUzdELEVBQVFqRCxHQUNYaUQsR0FDRmdCLEVBQU8rQyxLQUFLRixFQUFFLE9BQVEsT0FHeEI3QyxFQUFPK0MsS0FBS1gsRUFBTXBELElBR2hCOEQsR0FBMEIsSUFBakJWLEVBQU1yRyxRQUNqQmlFLEVBQU8rQyxLQUFLRixFQUFFLE9BQVEsT0FHeEIsT0FBTzdDLEdDM0JULE1BS0EsU0FBY2tDLEVBQUc5RCxHQUNmLElBRUk0RSxFQUVBakgsRUFKQW1DLEtBQ0ErRSxFQUFPN0UsRUFBSzhFLFFBQVUsS0FBTyxLQUU3QmxFLEdBQVMsRUFHYSxpQkFBZlosRUFBSzZDLE9BQXFDLElBQWY3QyxFQUFLNkMsUUFDekMvQyxFQUFNK0MsTUFBUTdDLEVBQUs2QyxPQUdyQitCLEVBQVE3QyxFQUFJK0IsRUFBRzlELEdBQ2ZyQyxFQUFTaUgsRUFBTWpILE9BR2YsT0FBU2lELEVBQVFqRCxHQUNmLEdBQ0VpSCxFQUFNaEUsR0FBT21FLFdBQVdDLFlBQ3lDLElBQWpFSixFQUFNaEUsR0FBT21FLFdBQVdDLFVBQVU3QyxRQUFRLGtCQUMxQyxDQUNBckMsRUFBTWtGLFdBQWEsc0JBQ25CLE1BSUosT0FBT2xCLEVBQUU5RCxFQUFNNkUsRUFBTS9FLEVBQU9tRixFQUFLTCxHQUFPLEtDOUIxQyxNQU1BLFNBQTJCZCxHQUN6QixJQUtJb0IsRUFDQUMsRUFDQUMsRUFDQUMsRUFSQUMsRUFBZXhCLEVBQUV3QixhQUNqQkMsRUFBZ0J6QixFQUFFeUIsY0FDbEI1SCxFQUFTNEgsRUFBYzVILE9BQ3ZCaUQsR0FBUyxFQUNUNEUsS0FNSixPQUFTNUUsRUFBUWpELElBQ2Z1SCxFQUFNSSxFQUFhQyxFQUFjM0UsR0FBTzhDLGtCQU14QzBCLEVBQVVGLEVBQUkvRSxTQUFTNkIsU0FDdkJxRCxFQUFPRCxFQUFRQSxFQUFRekgsT0FBUyxHQUNoQ3dILEdBQ0V0RixLQUFNLE9BQ040RixJQUFLLFVBQVlQLEVBQUloQyxXQUNyQm9CLE1BQU9vQixhQUFjVixXQUFZLHNCQUNqQzdFLFdBQVlOLEtBQU0sT0FBUUUsTUFBTyxPQUc5QnNGLEdBQXNCLGNBQWRBLEVBQUt4RixPQUNoQndGLEdBQVF4RixLQUFNLFlBQWFNLGFBQzNCaUYsRUFBUVQsS0FBS1UsSUFHZkEsRUFBS2xGLFNBQVN3RSxLQUFLUSxHQUVuQkssRUFBVWIsTUFDUjlFLEtBQU0sV0FDTnlFLE1BQU9vQixhQUFjdkMsR0FBSSxNQUFRK0IsRUFBSWhDLGFBQ3JDL0MsU0FBVWlGLEVBQ1ZoRCxTQUFVOEMsRUFBSTlDLFlBSWxCLEdBQXlCLElBQXJCb0QsRUFBVTdILE9BQ1osT0FBTyxLQUdULE9BQU9tRyxFQUNMLEtBQ0EsT0FDQ2tCLFdBQVksY0FDYkMsR0FFSVUsRUFBYzdCLEdBQ2Q4QixFQUFLOUIsR0FBSWpFLEtBQU0sT0FBUWlGLFNBQVMsRUFBTTNFLFNBQVVxRixNQUVsRCxLQzdETixNQUtBLFNBQW9CMUIsRUFBRzlELEdBQ3JCLE9BQU84RCxFQUFFOUQsRUFBTSxhQUFjaUYsRUFBS2xELEVBQUkrQixFQUFHOUQsSUFBTyxLQ05sRCxNQUlBLFNBQW1COEQsRUFBRzlELEdBQ3BCLE9BQVE4RCxFQUFFOUQsRUFBTSxNQUFPeUUsRUFBRSxPQUFRLFFDTW5DLElBQ0l4QixFQURBNEMsRUFBTSxLQTJCVixTQUFnQmpDLEVBQUtrQyxHQUNuQixHQUFtQixpQkFBUmxDLEVBQ1QsTUFBTSxJQUFJbEUsVUFBVSxxQkFJdEIsR0FBWSxJQUFSb0csRUFBVyxPQUFPbEMsRUFDdEIsR0FBWSxJQUFSa0MsRUFBVyxPQUFPbEMsRUFBTUEsRUFFNUIsSUFBSW1DLEVBQU1uQyxFQUFJakcsT0FBU21JLEVBQ3ZCLEdBQUk3QyxJQUFVVyxRQUF3QixJQUFWWCxFQUMxQkEsRUFBUVcsRUFDUmlDLEVBQU0sUUFDRCxHQUFJQSxFQUFJbEksUUFBVW9JLEVBQ3ZCLE9BQU9GLEVBQUlHLE9BQU8sRUFBR0QsR0FHdkIsS0FBT0EsRUFBTUYsRUFBSWxJLFFBQVVtSSxFQUFNLEdBQ3JCLEVBQU5BLElBQ0ZELEdBQU9qQyxHQUdUa0MsSUFBUSxFQUNSbEMsR0FBT0EsRUFLVCxPQURBaUMsR0FEQUEsR0FBT2pDLEdBQ0dvQyxPQUFPLEVBQUdELElDakV0QixNQVVBLFNBQWVoRyxFQUFPa0csR0FDcEIsSUFPSUMsRUFDQUMsRUFSQUMsRUFBMEIsaUJBQVZyRyxFQUNoQnBDLEVBQVN5SSxHQUFVckcsRUFBTXBDLE9BQ3pCa0YsRUFBUSxFQUNSakMsR0FBUyxFQUNUOEIsR0FBVSxFQUNWMkQsRUFBVUosR0FBUSxFQUNsQnRGLEtBSUosSUFBS3lGLEVBQ0gsTUFBTSxJQUFJcEYsTUFBTSx5QkFHbEIsT0FBU0osRUFBUWpELElBQ2Z1SSxFQUFPbkcsRUFBTXVHLFdBQVcxRixNQUVYMkYsR0FFWDdELEdBREF5RCxFQUFNRSxHQUFZM0QsRUFBUyxHQUFLMkQsRUFFaEMxRixFQUFRZ0UsS0FBSzVFLEVBQU15RyxNQUFNM0QsRUFBT2pDLEdBQVM2RixFQUFPLElBQUtOLElBQ3JEdEQsRUFBUWpDLEVBQVEsR0FDUHNGLElBQVNRLEdBQVlSLElBQVNTLEVBQ3ZDakUsR0FBVSxFQUVWQSxJQU1KLE9BRkEvQixFQUFRZ0UsS0FBSzVFLEVBQU15RyxNQUFNM0QsSUFFbEJsQyxFQUFROUIsS0FBSyxLQXRDbEIwSCxFQUFNLEVBQ05HLEVBQVcsR0FDWEMsRUFBaUIsR0NOckIsTUFLQSxTQUFjN0MsRUFBRzlELEdBQ2YsSUFBSUQsRUFBUUMsRUFBS0QsTUFBUTZHLEVBQU01RyxFQUFLRCxNQUFRLE1BQVEsR0FDaEQ4RyxFQUFPN0csRUFBSzZHLE1BQVE3RyxFQUFLNkcsS0FBS0MsTUFBTSx1QkFDcENoSCxLQUVBK0csSUFDRi9HLEVBQU1rRixXQUFhLFlBQWM2QixJQUduQyxPQUFPL0MsRUFBRTlELEVBQUtvQyxTQUFVLE9BQVEwQixFQUFFOUQsRUFBTSxPQUFRRixHQUFRMkUsRUFBRSxPQUFRMUUsUUNkcEUsTUFJQSxTQUF1QitELEVBQUc5RCxHQUN4QixPQUFPOEQsRUFBRTlELEVBQU0sTUFBTytCLEVBQUkrQixFQUFHOUQsS0NML0IsTUFJQSxTQUFrQjhELEVBQUc5RCxHQUNuQixPQUFPOEQsRUFBRTlELEVBQU0sS0FBTStCLEVBQUkrQixFQUFHOUQsS0NMOUIsTUFJQSxTQUEyQjhELEVBQUc5RCxHQUM1QixJQUFJdUYsRUFBZ0J6QixFQUFFeUIsY0FDbEJyQyxFQUFhM0UsT0FBT3lCLEVBQUtrRCxhQUVjLElBQXZDcUMsRUFBY3BELFFBQVFlLElBQ3hCcUMsRUFBY1osS0FBS3pCLEdBR3JCLE9BQU9ZLEVBQUU5RCxFQUFLb0MsU0FBVSxPQUFRZSxHQUFJLFNBQVdELElBQzdDWSxFQUFFOUQsRUFBTSxLQUFNK0csS0FBTSxPQUFTN0QsRUFBWThCLFdBQVksa0JBQ25EUCxFQUFFLE9BQVF6RSxFQUFLZ0gsT0FBUzlELFFDZDlCLE1BSUEsU0FBa0JZLEVBQUc5RCxHQUNuQixJQUFJc0YsRUFBZXhCLEVBQUV3QixhQUNqQkMsRUFBZ0J6QixFQUFFeUIsY0FDbEJyQyxFQUFhLEVBRWpCLEtBQU9BLEtBQWNvQyxHQUNuQnBDLElBZ0JGLE9BYkFBLEVBQWEzRSxPQUFPMkUsR0FJcEJxQyxFQUFjWixLQUFLekIsR0FFbkJvQyxFQUFhcEMsSUFDWHJELEtBQU0scUJBQ05xRCxXQUFZQSxFQUNaL0MsV0FBWU4sS0FBTSxZQUFhTSxTQUFVSCxFQUFLRyxXQUM5Q2lDLFNBQVVwQyxFQUFLb0MsVUFHVjZFLEVBQWtCbkQsR0FDdkJqRSxLQUFNLG9CQUNOcUQsV0FBWUEsRUFDWmQsU0FBVXBDLEVBQUtvQyxZQzdCbkIsTUFJQSxTQUFpQjBCLEVBQUc5RCxHQUNsQixPQUFPOEQsRUFBRTlELEVBQU0sSUFBTUEsRUFBS2tILE1BQU9uRixFQUFJK0IsRUFBRzlELEtDTDFDLE1BS0EsU0FBYzhELEVBQUc5RCxHQUNmLE9BQU84RCxFQUFFcUQsVUFBWXJELEVBQUVVLFFBQVF4RSxFQUFNeUUsRUFBRSxNQUFPekUsRUFBS0QsUUFBVSxNQ0ovRCxJQUFJcUgsS0FzQ0osU0FBU0MsR0FBT2pCLEVBQVFrQixFQUFTQyxHQUMvQixJQUFJOUosRUFBRytKLEVBQUd0QixFQUFNdUIsRUFBVXhFLEVBQ3RCckIsRUFBUyxHQWNiLElBWnVCLGlCQUFaMEYsSUFFVEMsRUFBZUQsRUFDZkEsRUFBVUQsR0FBT0ssbUJBR1EsSUFBaEJILElBQ1RBLEdBQWMsR0FHaEJ0RSxFQTlDRixTQUF3QnFFLEdBQ3RCLElBQUk3SixFQUFHa0ssRUFBSTFFLEVBQVFtRSxFQUFZRSxHQUMvQixHQUFJckUsRUFBUyxPQUFPQSxFQUlwQixJQUZBQSxFQUFRbUUsRUFBWUUsTUFFZjdKLEVBQUksRUFBR0EsRUFBSSxJQUFLQSxJQUNuQmtLLEVBQUtwSixPQUFPRyxhQUFhakIsR0FFckIsY0FBYzRDLEtBQUtzSCxHQUVyQjFFLEVBQU0wQixLQUFLZ0QsR0FFWDFFLEVBQU0wQixLQUFLLEtBQU8sSUFBTWxILEVBQUVtSyxTQUFTLElBQUlsRSxlQUFlOEMsT0FBTyxJQUlqRSxJQUFLL0ksRUFBSSxFQUFHQSxFQUFJNkosRUFBUTNKLE9BQVFGLElBQzlCd0YsRUFBTXFFLEVBQVFoQixXQUFXN0ksSUFBTTZKLEVBQVE3SixHQUd6QyxPQUFPd0YsRUF5QkM0RSxDQUFlUCxHQUVsQjdKLEVBQUksRUFBRytKLEVBQUlwQixFQUFPekksT0FBUUYsRUFBSStKLEVBQUcvSixJQUdwQyxHQUZBeUksRUFBT0UsRUFBT0UsV0FBVzdJLEdBRXJCOEosR0FBd0IsS0FBVHJCLEdBQXlCekksRUFBSSxFQUFJK0osR0FDOUMsaUJBQWlCbkgsS0FBSytGLEVBQU9JLE1BQU0vSSxFQUFJLEVBQUdBLEVBQUksSUFDaERtRSxHQUFVd0UsRUFBT0ksTUFBTS9JLEVBQUdBLEVBQUksR0FDOUJBLEdBQUssT0FLVCxHQUFJeUksRUFBTyxJQUNUdEUsR0FBVXFCLEVBQU1pRCxRQUlsQixHQUFJQSxHQUFRLE9BQVVBLEdBQVEsTUFBOUIsQ0FDRSxHQUFJQSxHQUFRLE9BQVVBLEdBQVEsT0FBVXpJLEVBQUksRUFBSStKLElBQzlDQyxFQUFXckIsRUFBT0UsV0FBVzdJLEVBQUksS0FDakIsT0FBVWdLLEdBQVksTUFBUSxDQUM1QzdGLEdBQVVrRyxtQkFBbUIxQixFQUFPM0ksR0FBSzJJLEVBQU8zSSxFQUFJLElBQ3BEQSxJQUNBLFNBR0ptRSxHQUFVLGlCQUlaQSxHQUFVa0csbUJBQW1CMUIsRUFBTzNJLElBR3RDLE9BQU9tRSxFQUdUeUYsR0FBT0ssYUFBaUIsdUJBQ3hCTCxHQUFPVSxlQUFpQixZQUd4QixPQUFpQlYsTUN6RmpCLFNBQWdCdkQsRUFBRzlELEdBQ2pCLElBRUlnSSxFQUNBakUsRUFDQXNCLEVBSkE0QyxFQUFVakksRUFBS2tJLGNBQ2ZDLEVBQVMsSUFLRyxjQUFaRixFQUNGRSxHQUFVLEtBQ1csU0FBWkYsSUFDVEUsR0FBVSxLQUFPbkksRUFBS2dILE9BQVNoSCxFQUFLa0QsWUFBYyxLQUdwRCxHQUFrQixtQkFBZGxELEVBQUtILEtBQ1AsT0FBTzRFLEVBQUUsT0FBUSxLQUFPekUsRUFBS29JLElBQU1ELEdBR3JDSCxFQUFXakcsRUFBSStCLEVBQUc5RCxJQUNsQitELEVBQU9pRSxFQUFTLEtBRVUsU0FBZGpFLEVBQUtsRSxLQUNma0UsRUFBS2hFLE1BQVEsSUFBTWdFLEVBQUtoRSxNQUV4QmlJLEVBQVNLLFFBQVE1RCxFQUFFLE9BQVEsT0FHN0JZLEVBQU8yQyxFQUFTQSxFQUFTckssT0FBUyxLQUVSLFNBQWQwSCxFQUFLeEYsS0FDZndGLEVBQUt0RixPQUFTb0ksRUFFZEgsRUFBU3JELEtBQUtGLEVBQUUsT0FBUTBELElBRzFCLE9BQU9ILEdDeENULE9BR0EsU0FBa0JqSSxHQUNoQixPQUFPeEIsT0FBT3dCLEdBQU84RCxRQUFRLE9BQVEsTUM2RXZDLFNBQVN5RSxHQUFjdEksR0FDckIsSUFBSXVJLEVBQVN2SSxFQUFLdUksT0FFbEIsWUFBa0I5SSxJQUFYOEksR0FBbUMsT0FBWEEsRUFDM0J2SSxFQUFLRyxTQUFTeEMsT0FBUyxFQUN2QjRLLEVDdEZOLE9BS0EsU0FBbUJ4SSxHQUNqQixPQUFPeEIsT0FBT3dCLEdBQU84RCxRQUFRMkUsR0FBSUMsS0FKL0JELEdBQUssbUJBQ0xDLEdBQVUsS0NIZCxRQUNFQyxXQUFZQyxFQUNaQyxNQUFPQyxFQUNQM0MsS0FBTTRDLEVBQ05DLE9BQVFDLEVBQ1JDLFNBQVVDLEVBQ1ZqQyxrQkFBbUJrQyxFQUNuQkMsU0FBVUMsRUFDVkMsUUFBU0MsRUFDVEMsS0FBTUMsRUFDTkMsZUNMRixTQUF3QjVGLEVBQUc5RCxHQUN6QixJQUNJRixFQURBb0YsRUFBTXBCLEVBQUVOLFdBQVd4RCxFQUFLa0QsWUFHNUIsSUFBS2dDLEVBQ0gsT0FBT3lFLEdBQU83RixFQUFHOUQsR0FHbkJGLEdBQVM4SixJQUFLQyxHQUFVM0UsRUFBSU8sS0FBTyxJQUFLMkMsSUFBS3BJLEVBQUtvSSxLQUVoQyxPQUFkbEQsRUFBSTRFLFlBQWdDckssSUFBZHlGLEVBQUk0RSxRQUM1QmhLLEVBQU1nSyxNQUFRNUUsRUFBSTRFLE9BR3BCLE9BQU9oRyxFQUFFOUQsRUFBTSxNQUFPRixJRFJ0QmlLLE1FUEYsU0FBZWpHLEVBQUc5RCxHQUNoQixJQUFJRixHQUFTOEosSUFBS0MsR0FBVTdKLEVBQUt5RixLQUFNMkMsSUFBS3BJLEVBQUtvSSxLQUU5QixPQUFmcEksRUFBSzhKLFlBQWlDckssSUFBZk8sRUFBSzhKLFFBQzlCaEssRUFBTWdLLE1BQVE5SixFQUFLOEosT0FHckIsT0FBT2hHLEVBQUU5RCxFQUFNLE1BQU9GLElGQ3RCa0ssV0dQRixTQUFvQmxHLEVBQUc5RCxHQUNyQixPQUFPOEQsRUFBRTlELEVBQU0sUUFBU3lFLEVBQUUsT0FBUXdGLEdBQVNqSyxFQUFLRCxXSE9oRG1LLGNJUEYsU0FBdUJwRyxFQUFHOUQsR0FDeEIsSUFDSUYsRUFEQW9GLEVBQU1wQixFQUFFTixXQUFXeEQsRUFBS2tELFlBRzVCLElBQUtnQyxFQUNILE9BQU95RSxHQUFPN0YsRUFBRzlELEdBR25CRixHQUFTaUgsS0FBTThDLEdBQVUzRSxFQUFJTyxLQUFPLEtBRWxCLE9BQWRQLEVBQUk0RSxZQUFnQ3JLLElBQWR5RixFQUFJNEUsUUFDNUJoSyxFQUFNZ0ssTUFBUTVFLEVBQUk0RSxPQUdwQixPQUFPaEcsRUFBRTlELEVBQU0sSUFBS0YsRUFBT2lDLEVBQUkrQixFQUFHOUQsS0pObENtSyxLS1RGLFNBQWNyRyxFQUFHOUQsR0FDZixJQUFJRixHQUFTaUgsS0FBTThDLEdBQVU3SixFQUFLeUYsTUFFZixPQUFmekYsRUFBSzhKLFlBQWlDckssSUFBZk8sRUFBSzhKLFFBQzlCaEssRUFBTWdLLE1BQVE5SixFQUFLOEosT0FHckIsT0FBT2hHLEVBQUU5RCxFQUFNLElBQUtGLEVBQU9pQyxFQUFJK0IsRUFBRzlELEtMR2xDb0ssU0ZURixTQUFrQnRHLEVBQUc5RCxFQUFNa0MsR0FDekIsSUFLSU4sRUFDQXlJLEVBQ0F6SixFQUNBakQsRUFDQTJNLEVBUkF2RyxFQURXL0QsRUFBS0csU0FDQSxHQUNoQm9LLEVBQU14SSxFQUFJK0IsRUFBRzlELEdBQ2IwRSxFQUFReEMsRUEwRGQsU0FBbUJsQyxHQUNqQixJQUFJMEUsRUFBUTFFLEVBQUt1SSxPQUNicEksRUFBV0gsRUFBS0csU0FDaEJ4QyxFQUFTd0MsRUFBU3hDLE9BQ2xCaUQsR0FBUyxFQUViLE1BQVE4RCxLQUFXOUQsRUFBUWpELEdBQ3pCK0csRUFBUTRELEdBQWNuSSxFQUFTUyxJQUdqQyxPQUFPOEQsRUFwRWM4RixDQUFVdEksR0FBVW9HLEdBQWN0SSxHQUNuREYsS0FRSixHQUFJNEUsRUFDRjlDLEVBQVMySSxPQU1ULElBSkEzSSxLQUNBakUsRUFBUzRNLEVBQUk1TSxPQUNiaUQsR0FBUyxJQUVBQSxFQUFRakQsR0FHTyxPQUZ0QjJNLEVBQVFDLEVBQUkzSixJQUVGNkosUUFDUjdJLEVBQVNBLEVBQU9JLE9BQU9zSSxFQUFNbkssVUFFN0J5QixFQUFPK0MsS0FBSzJGLEdBS1Usa0JBQWpCdEssRUFBSzBLLFdBQ1ZoRyxHQUFXWCxHQUFzQixjQUFkQSxFQUFLbEUsTUFDMUIrQixFQUFPeUcsUUFBUXZFLEVBQUUsS0FBTSxTQUtBLEtBRnpCdUcsRUFBWTNGLEVBQVE5QyxFQUFPLEdBQUd6QixTQUFXeUIsR0FFM0JqRSxRQUNaME0sRUFBVWhDLFFBQVE1RCxFQUFFLE9BQVEsTUFHOUI0RixFQUFVaEMsUUFDUnZFLEVBQUUsS0FBTSxTQUNOakUsS0FBTSxXQUNONkssUUFBUzFLLEVBQUswSyxRQUNkQyxVQUFVLEtBTWQ3SyxFQUFNa0YsV0FBYSxtQkFHakJOLEdBQTJCLElBQWxCOUMsRUFBT2pFLFNBQ2xCaUUsRUFBU3FELEVBQUtyRCxHQUFRLElBR3hCLE9BQU9rQyxFQUFFOUQsRUFBTSxLQUFNRixFQUFPOEIsSUVqRDVCZ0UsS0FBTWdGLEVBQ05DLFVNYkYsU0FBbUIvRyxFQUFHOUQsR0FDcEIsT0FBTzhELEVBQUU5RCxFQUFNLElBQUsrQixFQUFJK0IsRUFBRzlELEtOYTNCOEssS09aRixTQUFjaEgsRUFBRzlELEdBQ2YsT0FBTzhELEVBQUVVLFFBQVF4RSxFQUFNeUUsRUFBRSxPQUFRUSxFQUFLbEQsRUFBSStCLEVBQUc5RCxPUFk3QytLLE9RZkYsU0FBZ0JqSCxFQUFHOUQsR0FDakIsT0FBTzhELEVBQUU5RCxFQUFNLFNBQVUrQixFQUFJK0IsRUFBRzlELEtSZWhDZ0wsTVNkRixTQUFlbEgsRUFBRzlELEdBQ2hCLElBS0lpTCxFQUNBQyxFQUNBQyxFQUNBdEcsRUFDQXVHLEVBVEFDLEVBQU9yTCxFQUFLRyxTQUNaUyxFQUFReUssRUFBSzFOLE9BQ2IyTixFQUFRdEwsRUFBS3NMLE1BQ2JDLEVBQWNELEVBQU0zTixPQUNwQmlFLEtBT0osS0FBT2hCLEtBQVMsQ0FNZCxJQUxBc0ssRUFBTUcsRUFBS3pLLEdBQU9ULFNBQ2xCMEUsRUFBaUIsSUFBVmpFLEVBQWMsS0FBTyxLQUM1QnFLLEVBQU1NLEVBQ05KLEtBRU9GLEtBQ0xHLEVBQU9GLEVBQUlELEdBQ1hFLEVBQUlGLEdBQU9uSCxFQUFFc0gsRUFBTXZHLEdBQU95RyxNQUFPQSxFQUFNTCxJQUFPRyxFQUFPckosRUFBSStCLEVBQUdzSCxPQUc5RHhKLEVBQU9oQixHQUFTa0QsRUFBRXVILEVBQUt6SyxHQUFRLEtBQU1xRSxFQUFLa0csR0FBSyxJQUdqRCxPQUFPckgsRUFDTDlELEVBQ0EsUUFDQWlGLEdBRUluQixFQUFFbEMsRUFBTyxHQUFHUSxTQUFVLFFBQVM2QyxHQUFNckQsRUFBTyxLQUFLLElBQ2pEa0MsR0FFSWpCLE1BQU9ULEVBQVNTLE1BQU1qQixFQUFPLElBQzdCa0IsSUFBS1YsRUFBU1UsSUFBSWxCLEVBQU9BLEVBQU9qRSxPQUFTLEtBRTNDLFFBQ0FzSCxFQUFLckQsRUFBTzRFLE1BQU0sSUFBSSxNQUcxQixLVDFCSmpDLEtVaEJGLFNBQWNULEVBQUc5RCxHQUNmLE9BQU84RCxFQUFFVSxRQUFReEUsRUFBTXlFLEVBQUUsT0FBUStHLEdBQVV4TCxFQUFLRCxVVmdCaEQ0RixjQUFlOEYsRUFDZkMsS0FBTUMsR0FDTkMsS0FBTUQsR0FDTm5JLFdBQVltSSxHQUNaRSxtQkFBb0JGLElBSXRCLFNBQVNBLEtBQ1AsT0FBTyxLVy9CVCxPQWdHQSxTQUFnQnRLLEVBQU0yQixHQUNwQixJQUFJYyxFQWxGTixTQUFpQnpDLEVBQU0yQixHQUNyQixJQUFJOEksRUFBVzlJLE1BQ1htRSxFQUFZMkUsRUFBU0MsbUJBQ3JCekcsS0FXSixPQVRBeEIsRUFBRXFELFVBQVlBLEVBQ2RyRCxFQUFFTixXQUFhd0ksRUFBWTNLLEVBQU15SyxHQUNqQ2hJLEVBQUV3QixhQUFlQSxFQUNqQnhCLEVBQUV5QixpQkFDRnpCLEVBQUVVLFFBQVVBLEVBQ1pWLEVBQUVPLFNBQVc0SCxFQUFNNUgsR0FBVXlILEVBQVN6SCxjQUV0Q3BDLEVBQU1aLEVBQU0scUJBeURaLFNBQThCbUMsR0FDNUIsSUFBSUwsRUFBSzVFLE9BQU9pRixFQUFXTixZQUFZUSxjQUlsQ0wsR0FBSXRGLEtBQUt1SCxFQUFjbkMsS0FDMUJtQyxFQUFhbkMsR0FBTUssS0E3RGhCTSxFQUdQLFNBQVNVLEVBQVFMLEVBQU0rSCxHQUNyQixJQUFJNUgsRUFDQTZILEVBNEJKLE9BekJJaEksR0FBUSxTQUFVQSxJQUNwQkcsRUFBT0gsRUFBS0csS0FFTyxZQUFmNEgsRUFBTXJNLE1BQXNCeUUsRUFBSzhILFFBQ25DRixFQUFNekIsUUFBVW5HLEVBQUs4SCxPQUdKLFlBQWZGLEVBQU1yTSxNQUFzQnlFLEVBQUtvQixjQUNuQ3dHLEVBQU1uSCxXQUFha0gsRUFBTUMsRUFBTW5ILFdBQVlULEVBQUtvQixjQUc5Q3dHLEVBQU0vTCxVQUFZbUUsRUFBSytILFlBQ3pCSCxFQUFNL0wsU0FBV21FLEVBQUsrSCxZQUkxQkYsRUFBTWhJLEdBQVFBLEVBQUsvQixTQUFXK0IsR0FBUS9CLFNBQVUrQixHQUUzQ21JLEVBQVVILEtBQ2JELEVBQU05SixVQUNKUyxNQUFPVCxFQUFTUyxNQUFNc0osR0FDdEJySixJQUFLVixFQUFTVSxJQUFJcUosS0FJZkQsRUFJVCxTQUFTcEksRUFBRTlELEVBQU15SyxFQUFTM0ssRUFBT0ssR0FVL0IsWUFSZ0JWLElBQWJVLEdBQXVDLE9BQWJBLElBQ1YsaUJBQVZMLEdBQ1AsV0FBWUEsSUFFWkssRUFBV0wsRUFDWEEsTUFHSzBFLEVBQVF4RSxHQUNiSCxLQUFNLFVBQ040SyxRQUFTQSxFQUNUMUYsV0FBWWpGLE1BQ1pLLFNBQVVBLFNBaUJObUMsQ0FBUWpCLEVBQU0yQixHQUNsQmhELEVBQU95QixFQUFJcUMsRUFBR3pDLEdBQ2RrTCxFQUFPQyxFQUFPMUksR0FFZHlJLElBQ0Z2TSxFQUFLRyxTQUFXSCxFQUFLRyxTQUFTNkIsT0FBT3lDLEVBQUUsT0FBUSxNQUFPOEgsSUFHeEQsT0FBT3ZNLEdBN0ZMcUQsTUFBU3ZGLGVDYmIsT0FBaUI2SyxNQ1VqQixTQUF1QjhELEVBQWF6SixHQUM5QnlKLElBQWdCQSxFQUFZQyxVQUM5QjFKLEVBQVV5SixFQUNWQSxFQUFjLE1BR2hCLE9BQU9BLEVBS1QsU0FBZ0JBLEVBQWF6SixHQUMzQixPQUVBLFNBQXFCaEQsRUFBTTJNLEVBQU1DLEdBQy9CSCxFQUFZSSxJQUFJQyxHQUFXOU0sRUFBTWdELEdBQVUySixFQUUzQyxTQUFjeE4sR0FDWnlOLEVBQUt6TixNQVpZNE4sQ0FBT04sRUFBYXpKLEdBbUIzQyxTQUFnQkEsR0FDZCxPQUVBLFNBQXFCaEQsR0FDbkIsT0FBTzhNLEdBQVc5TSxFQUFNZ0QsSUF2QjBCZ0ssQ0FBT2hLLElDZjdELE9BT0EsU0FBb0JpSyxHQUNsQixPQUFPQyxHQUFHN00sS0FDYSxpQkFBZDRNLEVBQXlCRSxHQUFTRixHQUFhQSxFQUFVRyxPQUFPLEtBUHZFRCxHQUFXNU8sT0FBT0csYUFDbEJ3TyxHQUFLLEtDRFQsSUFBSUcsR0FBUyxJQUNUQyxHQUFTLEtBRWIsU0FBU0MsR0FBUXhOLEVBQU95TixHQUV0QixPQURZek4sRUFBTW9DLFFBQVFtTCxHQUFRRSxHQTJEcEMsT0F2REEsV0FDRSxTQUFTQyxFQUFnQkMsRUFBSzNOLEVBQU80TixHQUNuQyxHQUFLNU0sS0FBS2lDLFFBQVE0SyxLQUFPN04sRUFBTWlHLE9BQU8sRUFBRyxLQUFPc0gsSUFBVXZOLEVBQU1pRyxPQUFPLEVBQUcsS0FBT3NILEdBQVNBLEtBQVVPLEdBQVc5TixFQUFNcU4sT0FBTyxJQUE1SCxDQUlBLElBQUlILEVBQVksR0FDWmEsRUFBVyxHQUNYQyxFQUFZLEdBQ1pDLEVBQVcsR0FDWHBOLEVBQVEsRUFDUmpELEVBQVNvQyxFQUFNcEMsT0FDZnNRLEVBQU1QLEVBQUlPLE1BSWQsSUFIQUEsRUFBSXZMLFFBQVUsRUFDZHVMLEVBQUl0TCxRQUFVLElBRUwvQixFQUFRakQsR0FBUSxDQUd2QixNQUZBc1AsRUFBWWxOLEVBQU1xTixPQUFPeE0sTUFFUHlNLElBQVVTLElBQWFULElBQVlVLEdBQWNGLEdBQVdFLElBRTVFLFFBQUlKLEdBQ0dELEVBQUlKLEdBQVNVLEVBQVdWLEdBQXhCSSxFQUNMN04sS0FBTSxNQUNOTSxTQUFVWSxLQUFLbU4sZUFBZUYsRUFBVUMsR0FDeEMzSixNQUNFOEgsTUFBTyxTQUtiNEIsR0FBWUYsRUFDWkMsRUFBWUQsRUFDWkEsRUFBV2IsSUFJZlEsRUFBZ0JGLFFBQVVBLEdBQzFCLElBQUlZLEVBQVNwTixLQUFLb04sT0FFZEMsRUFBbUJELEVBQU9sUSxVQUFVbVEsaUJBQ3BDQyxFQUFnQkYsRUFBT2xRLFVBQVVvUSxjQUNyQ0QsRUFBaUJFLElBQU1iLEVBQ3ZCWSxFQUFjRSxPQUFPRixFQUFjbE0sUUFBUSxRQUFTLEVBQUcsT0FDdkQsSUFBSXFNLEVBQVd6TixLQUFLeU4sU0FFaEJBLElBQ2FBLEVBQVN2USxVQUFVd1EsU0FFekJILElBQU0sU0FBVXRPLEdBQ3ZCLE1BQU8sS0FBS2dDLE9BQU9qQixLQUFLZ0IsSUFBSS9CLEdBQU1uQixLQUFLLElBQUssZ0NDM0RsRCxTQUF3QjZQLEdBQ3RCLE9BQU9wTyxRQUFRb08sR0FBVUEsRUFBT3pRLFdBQWF5USxFQUFPelEsVUFBVTBRLG1DQUdoRSxTQUEwQkMsR0FDeEIsT0FBT3RPLFFBQVFzTyxHQUFZQSxFQUFTM1EsV0FBYTJRLEVBQVMzUSxVQUFVd1EsZUNNdEUsU0FBb0J6TCxHQUNsQixNQUFNMEwsRUFBUzNOLEtBQUtvTixPQUNkUyxFQUFXN04sS0FBS3lOLFNBRWxCSyxHQUFLQyxlQUFlSixJQVMxQixTQUFzQkEsRUFBUTFMLEdBQzVCLE1BQU0rTCxFQUFRTCxFQUFPelEsVUFDZm9RLEVBQWdCVSxFQUFNVixjQVk1QixTQUFTVyxFQUFvQnRCLEVBQUszTixFQUFPNE4sR0FDdkMsTUFBTWhRLEVBQVNvQyxFQUFNcEMsT0FDckIsSUFHSXNSLEVBQ0EvSSxFQUNBMEcsRUFDQXNDLEVBQ0FDLEVBQ0FDLEVBQ0FoSyxFQVRBaUssR0FBUyxFQUNUQyxHQUFVLEVBQ1YxTyxFQUFRLEVBY1osR0FMSWIsRUFBTXVHLFdBQVcxRixLQUFXMk8sS0FDOUJELEdBQVUsRUFDVjFPLEtBR0ViLEVBQU11RyxXQUFXMUYsS0FBVzRPLEdBQWhDLENBT0EsR0FIQTVPLElBR0kwTyxFQUVGLFFBQUkzQixHQUlHRCxFQUFJM04sRUFBTXlHLE1BQU0sRUFBRzVGLEdBQW5COE0sRUFBNEI3TixLQUFNLE9BQVFFLE1BQU8sTUFXMUQsR0FSSUEsRUFBTXVHLFdBQVcxRixLQUFXNE8sS0FDOUJILEdBQVMsRUFDVHpPLE1BR0ZnTSxFQUFPN00sRUFBTXVHLFdBQVcxRixNQUdYNk8sSUFBUzdDLElBQVNyRyxHQUEvQixDQU1BLElBRkEySSxFQUFldE8sRUFFUkEsRUFBUWpELEdBQVEsQ0FJckIsR0FIQXVJLEVBQU8wRyxFQUNQQSxFQUFPN00sRUFBTXVHLFdBQVcxRixFQUFRLEdBRTVCc0YsSUFBU3NKLElBT1gsSUFOQVAsRUFBT2xQLEVBQU11RyxXQUFXMUYsRUFBUSxNQU9yQjZPLElBQ1RSLElBQVMxSSxLQUVScUcsR0FBU0EsR0FBUUEsRUFBTzhDLElBQVU5QyxFQUFPK0MsT0FDeENOLEdBQVV6QyxJQUFTNEMsSUFDckIsQ0FDQUwsRUFBYXZPLEVBQVEsRUFFckJBLElBRUl5TyxHQUNGek8sSUFHRndPLEVBQVd4TyxFQUNYLFlBRU9zRixJQUFTcUosS0FDbEIzTyxJQUNBZ00sRUFBTzdNLEVBQU11RyxXQUFXMUYsRUFBUSxJQUdsQ0EsSUFHRixRQUFpQm5CLElBQWIyUCxFQUtKLFFBQUl6QixJQUlKdkksRUFBVXJGLEVBQU15RyxNQUFNMEksRUFBY0MsRUFBYSxHQUUxQ3pCLEVBQUkzTixFQUFNeUcsTUFBTSxFQUFHNEksR0FBbkIxQixFQUNMN04sS0FBTSxhQUNORSxNQUFPcUYsRUFDUGQsTUFDRThILE1BQU8sT0FDUDFHLGFBQ0VWLFVBQVc0SyxHQUFVNU4sT0FDbkJxTixHQUFVck0sRUFBUTZNLGtCQUFvQkMsU0FHMUN6RCxZQUFheE0sS0FBTSxPQUFRRSxNQUFPcUYsVUFwSHhDNEosRUFBb0J6QixRQU1wQixTQUFpQnhOLEVBQU95TixHQUN0QixPQUFPek4sRUFBTW9DLFFBQVEsSUFBS3FMLElBTDVCdUIsRUFBTVgsaUJBQWlCMkIsS0FBT2YsRUFFOUJYLEVBQWNFLE9BQU9GLEVBQWNsTSxRQUFRLFFBQVMsRUFBRyxRQWhCckQ2TixDQUFhdEIsRUFBUTFMLEdBR25CNkwsR0FBS29CLGlCQUFpQnJCLElBbUk1QixTQUF3QkEsR0FDUkEsRUFBUzNRLFVBRWpCd1EsU0FBU3lCLFdBRWYsU0FBMkJsUSxHQUN6QixJQUFJbVEsRUFBUSxLQUVUblEsRUFBS3NFLE1BQVF0RSxFQUFLc0UsS0FBS29CLGFBQWUxRixFQUFLc0UsS0FBS29CLFlBQVlWLGVBR25Eb0wsU0FBU04sTUFDbkJLLEVBQVEsTUFHVixPQUFPQSxFQUFRblEsRUFBS0QsTUFBUW9RLEdBako1QkUsQ0FBZXpCLElBbkJuQixNQUFNckksR0FBTSxFQUNOa0osR0FBUSxHQUNSRCxHQUFhLEdBQ2JFLEdBQVMsR0FDVEMsR0FBUyxHQUNUSixHQUFZLEdBRVpLLElBQWEsT0FBUSxlQUNyQkUsR0FBYyxlQ1ZwQixPQWFBLFdBQ0UsTUFBTXBCLEVBQVMzTixLQUFLb04sT0FDZFMsRUFBVzdOLEtBQUt5TixTQUVsQkssR0FBS0MsZUFBZUosSUFTMUIsU0FBc0JBLEdBQ3BCLE1BQU1LLEVBQVFMLEVBQU96USxVQUNmcVMsRUFBZXZCLEVBQU11QixhQUNyQkMsRUFBcUJ4QixFQUFNd0IsbUJBQzNCQyxFQUFnQnpCLEVBQU15QixjQUN0QkMsRUFBc0IxQixFQUFNMEIsb0JBRWxDMUIsRUFBTUosZ0JBQWdCb0IsS0FhdEIsU0FBNEJyQyxFQUFLM04sRUFBTzROLEdBQ3RDLElBQUloUSxFQUFTb0MsRUFBTXBDLE9BQ2ZpRCxFQUFRLEVBQ1osSUFBSXNGLEVBQ0FkLEVBQ0FzTCxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUdKLEtBQU90USxFQUFRakQsR0FBVW9DLEVBQU11RyxXQUFXMUYsS0FBVzZPLElBQ25EN08sSUFHRmdRLEVBQXlCaFEsRUFHekIsS0FBT0EsRUFBUWpELEdBQVVvQyxFQUFNdUcsV0FBVzFGLEtBQVc0TyxJQUNuRDVPLElBTUYsSUFIQWlRLEVBQW1CalEsRUFBUWdRLEdBR0pPLEdBQ3JCLE9BSUYsS0FBT3ZRLEVBQVFqRCxHQUFVb0MsRUFBTXVHLFdBQVcxRixLQUFXNk8sSUFDbkQ3TyxJQUdGa1EsRUFBMkJsUSxFQUczQixLQUFPQSxFQUFRakQsR0FBUSxDQUtyQixJQUpBdUksRUFBT25HLEVBQU11RyxXQUFXMUYsTUFJWDRPLEdBQ1gsT0FHRixHQUFJdEosSUFBU1EsR0FDWCxNQUdGOUYsSUFHRixHQUFJYixFQUFNdUcsV0FBVzFGLEtBQVc4RixHQUM5QixPQUdGLEdBQUlpSCxFQUNGLE9BQU8sRUFHVHZJLEtBRUkwTCxJQUE2QmxRLEdBQy9Cd0UsRUFBUVQsS0FBSzVFLEVBQU15RyxNQUFNc0ssRUFBMEJsUSxJQUdyREEsSUFFQThQLEdBQXVCLEtBRHZCQSxFQUFVM1EsRUFBTW9DLFFBQVFpUCxHQUFjeFEsRUFBUSxJQUNuQmpELEVBQVMrUyxFQUVwQyxLQUFPOVAsRUFBUWpELEdBQVEsQ0FTckIsSUFSQW9ULEdBQWUsRUFDZkUsRUFBbUJyUSxFQUNuQnNRLEVBQWlCUixFQUNqQkMsRUFBWUQsRUFDWk0sRUFBbUIsRUFLakJMLEVBQVlNLEdBQ1psUixFQUFNdUcsV0FBV3FLLEVBQVksS0FBT2xCLElBRXBDa0IsSUFJRixLQUNFQSxFQUFZTSxHQUNabFIsRUFBTXVHLFdBQVdxSyxFQUFZLEtBQU9uQixJQUVwQ3dCLElBQ0FMLElBY0YsSUFURUUsR0FBb0JHLEdBQ3BCalIsRUFBTW9DLFFBQVFrUCxHQUFnQkosS0FBc0JOLElBRXBESSxHQUFlLEVBQ2ZHLEVBQWlCUCxHQU1qQk0sR0FBb0JDLEdBQ3BCRCxFQUFtQnJRLEVBQVFnUSxHQUMzQjdRLEVBQU11RyxXQUFXMkssS0FBc0J4QixJQUV2Q3dCLElBSUYsR0FBSUYsRUFDRixLQUNFRyxFQUFpQkQsR0FDakJsUixFQUFNdUcsV0FBVzRLLEVBQWlCLEtBQU96QixJQUV6Q3lCLElBU0osR0FKS0gsR0FBZ0JFLElBQXFCQyxHQUN4QzlMLEVBQVFULEtBQUs1RSxFQUFNeUcsTUFBTXlLLEVBQWtCQyxJQUd6Q0gsRUFDRixNQUdGblEsRUFBUThQLEVBQVUsRUFFbEJBLEdBQXVCLEtBRHZCQSxFQUFVM1EsRUFBTW9DLFFBQVFpUCxHQUFjeFEsRUFBUSxJQUNuQmpELEVBQVMrUyxFQUt0QyxPQUZBdEwsRUFBVUEsRUFBUXZHLEtBQUssTUFFaEI2TyxFQUFJM04sRUFBTXlHLE1BQU0sRUFBR2tLLEdBQW5CaEQsRUFDTDdOLEtBQU0sT0FDTkUsTUFBT3FGLEVBQ1BkLE1BQ0U4SCxNQUFPLE1BQ1AxRyxhQUFjVixVQUFXNEssR0FBVTVOLFVBQ25DcUssWUFBYXhNLEtBQU0sT0FBUUUsTUFBT3FGLFFBbkt4Q2tMLEVBQWEvQixPQUFPK0IsRUFBYW5PLFFBQVEsY0FBZ0IsRUFBRyxFQUFHLFFBRy9Eb08sRUFBbUJoQyxPQUFPZ0MsRUFBbUJwTyxRQUFRLGNBQWdCLEVBQUcsR0FDdEUsU0FFRnFPLEVBQWNqQyxPQUFPaUMsRUFBY3JPLFFBQVEsY0FBZ0IsRUFBRyxHQUFJLFNBQ2xFc08sRUFBb0JsQyxPQUFPa0MsRUFBb0J0TyxRQUFRLGNBQWdCLEVBQUcsR0FDeEUsU0F6QkE2TixDQUFhdEIsR0FHWEcsR0FBS29CLGlCQUFpQnJCLElBdUw1QixTQUF3QkEsR0FDUkEsRUFBUzNRLFVBRWpCd1EsU0FBU3NCLEtBRWYsU0FBMEIvUCxHQUN4QixNQUFPLE9BQVNBLEVBQUtELE1BQVEsUUE1TDdCc1EsQ0FBZXpCLElBcEJuQixNQUFNbEksR0FBVyxHQUNYK0ksR0FBUSxHQUNSRCxHQUFhLEdBRWI0QixHQUFlLEtBQ2ZDLEdBQWlCLElBRWpCRixHQUFnQixFQUVoQnZCLElBQWEsT0FBUSxnQkNWM0IsT0FFQSxTQUFjMEIsR0FDQSxNQUFSQSxJQUFjQSxNQUNsQkMsR0FBWXhULEtBQUtnRCxLQUFNdVEsR0FDdkJFLEdBQWF6VCxLQUFLZ0QsS0FBTXVRLDJCQ0h6QixJQUFTaFAsRUFHSm1QLEVBSEluUCxFQXdCUixTQUFTb1AsR0FFVCxJQWNJQyxFQWRBQyxLQUNBQyxFQUFhN1QsT0FBT2tCLEtBR3BCNFMsS0FDQUMsS0FHQUMsRUFBbUIsZ0NBQ25CQyxFQUFtQiw4QkFDbkJDLEVBQW1CLCtCQU1uQkMsRUFBYSxVQUliblAsR0FDRm9QLFlBQWEsUUFDYkMsV0FBWSxLQUNaQyxPQUFPLEVBQ1BSLGVBQVdyUyxHQUlUOFMsRUFBa0IsK0JBQStCeFQsTUFBTSxLQUszRCxTQUFTeVQsRUFBT3pTLEdBQ2QsT0FBT0EsRUFBTThELFFBQVEsS0FBTSxTQUFTQSxRQUFRLEtBQU0sUUFBUUEsUUFBUSxLQUFNLFFBRzFFLFNBQVM0TyxFQUFJelMsR0FDWCxPQUFPQSxFQUFLMFMsU0FBU0MsY0FRdkIsU0FBU0MsRUFBaUJDLEdBQ3hCLE9BQU9iLEVBQWMzUixLQUFLd1MsR0EwQjVCLFNBQVNDLEVBQVE1USxHQUNmLElBQUlyRSxFQUNBK0QsS0FDQW1SLEVBQVU5UyxNQUFNaEMsVUFBVXVJLE1BQU16SSxLQUFLTCxVQUFXLEdBRXBELElBQUtHLEtBQU9xRSxFQUNWTixFQUFPL0QsR0FBT3FFLEVBQU9yRSxHQUt2QixPQUpBa1YsRUFBUS9ULFFBQVEsU0FBU2dVLEdBQ3ZCLElBQUtuVixLQUFPbVYsRUFDVnBSLEVBQU8vRCxHQUFPbVYsRUFBSW5WLEtBRWYrRCxFQUtULFNBQVNxUixFQUFXalQsR0FDbEIsSUFBSTRCLEtBMEJKLE9BekJBLFNBQVVzUixFQUFZbFQsRUFBTTJDLEdBQzFCLElBQUssSUFBSTJILEVBQVF0SyxFQUFLbVQsV0FBWTdJLEVBQU9BLEVBQVFBLEVBQU04SSxZQUM5QixJQUFuQjlJLEVBQU0rSSxTQUNSMVEsR0FBVTJILEVBQU1nSixVQUFVM1YsT0FDQSxJQUFuQjJNLEVBQU0rSSxXQUNielIsRUFBTytDLE1BQ0w0TyxNQUFPLFFBQ1A1USxPQUFRQSxFQUNSM0MsS0FBTXNLLElBRVIzSCxFQUFTdVEsRUFBWTVJLEVBQU8zSCxHQUl2QjhQLEVBQUluSSxHQUFPeEQsTUFBTSxvQkFDcEJsRixFQUFPK0MsTUFDTDRPLE1BQU8sT0FDUDVRLE9BQVFBLEVBQ1IzQyxLQUFNc0ssS0FLZCxPQUFPM0gsRUF2QlQsQ0F3QkczQyxFQUFNLEdBQ0Y0QixFQW9GVCxTQUFTNFIsRUFBcUJDLEdBVTVCLE9BVElBLEVBQUtDLFdBQWFELEVBQUtFLGtCQUN6QkYsRUFBS0UsZ0JBQWtCRixFQUFLQyxTQUFTL1UsSUFBSSxTQUFTaVYsR0FDaEQsT0FBT2QsRUFBUVcsR0FBT0MsU0FBVSxNQUFPRSxNQU92Q0gsRUFBS0UsZ0JBQ0FGLEVBQUtFLGdCQWpCaEIsU0FBU0UsRUFBbUJKLEdBQzFCLFFBQUtBLElBRUVBLEVBQUtLLGdCQUFrQkQsRUFBbUJKLEVBQUtNLFNBb0JsREYsQ0FBbUJKLElBQ2JYLEVBQVFXLEdBQVFNLE9BQVFOLEVBQUtNLE9BQVNqQixFQUFRVyxFQUFLTSxRQUFVLFNBRy9ETixHQUdWLFNBQVNPLEVBQW1CaEIsR0FDMUIsR0FBR3JCLElBQWlCcUIsRUFBSWlCLGdCQUFpQixDQUV2QyxJQUFJLElBQUlwVyxLQURSbVYsRUFBSWlCLGlCQUFrQixFQUNQdEMsRUFDYnFCLEVBQUluVixLQUFTbVYsRUFBSXJCLEVBQWE5VCxJQUFRbVYsRUFBSW5WLEtBQzNDbVYsRUFBSWtCLGNBQWdCbFMsT0FBT2dSLEVBQUlVLGNBQWdCMVUsUUFBUWdWLElBSTVELFNBQVNHLEVBQWdCQyxFQUFhQyxHQUNsQyxJQUFJQyxLQVNOLE1BUDZCLGlCQUFoQkYsRUFDVEcsRUFBZ0IsVUFBV0gsR0FFM0J2QyxFQUFXdUMsR0FBYXBWLFFBQVEsU0FBVWdHLEdBQ3hDdVAsRUFBZ0J2UCxFQUFXb1AsRUFBWXBQLE1BR3RDc1AsRUFJUCxTQUFTQyxFQUFnQnZQLEVBQVdwQixHQUM5QnlRLElBQ0Z6USxFQUFNQSxFQUFJK08sZUFFWi9PLEVBQUk3RSxNQUFNLEtBQUtDLFFBQVEsU0FBU3dWLEdBQzlCLElBQUlDLEVBQU9ELEVBQVF6VixNQUFNLEtBQ3pCdVYsRUFBa0JHLEVBQUssS0FBT3pQLEVBS3BDLFNBQXlCd1AsRUFBU0UsR0FHaEMsT0FBSUEsRUFDS0MsT0FBT0QsSUFLS0UsRUFIQUosR0FJa0MsR0FBaERqQyxFQUFnQnBRLFFBQVF5UyxFQUFLakMsZUFKSixFQUFJLEdBR3RDLElBQXVCaUMsRUFkd0JDLENBQWdCSixFQUFLLEdBQUlBLEVBQUssUUFrQjdFLFNBQVNLLEVBQWdCakMsR0FFdkIsU0FBU2tDLEVBQU03SCxHQUNYLE9BQVFBLEdBQU1BLEVBQUd0UCxRQUFXc1AsRUFHaEMsU0FBUzhILEVBQU9qVixFQUFPa1YsR0FDckIsT0FBTyxJQUFJQyxPQUNUSCxFQUFNaFYsR0FDTixLQUFPOFMsRUFBU3dCLGlCQUFtQixJQUFNLEtBQU9ZLEVBQVMsSUFBTSxLQXVEbkUsU0FBU0UsRUFBZTFCLEdBRXRCLElBQ0kyQixFQVdBQyxFQVpBQyxLQUVBQyxLQUNBQyxLQUNBQyxFQUFVLEVBRWQsU0FBU0MsRUFBUUMsRUFBTUMsR0FDckJOLEVBQWFHLEdBQVdFLEVBQ3hCSixFQUFRNVEsTUFBTWdSLEVBQU1DLElBQ3BCSCxHQTdESyxJQUFLUCxPQTZEb0JVLEVBN0RWaE8sV0FBYSxLQUFNaU8sS0FBSyxJQUFJbFksT0FBUyxFQTZEbEIsRUFJekMsSUFBSyxJQUFJRixFQUFFLEVBQUdBLEVBQUlnVyxFQUFLUyxTQUFTdlcsT0FBUUYsSUFBSyxDQVEzQ2lZLEVBTkFMLEVBQU81QixFQUFLUyxTQUFTelcsR0FDakI0WCxFQUFLUyxjQUNGLFVBQVlULEVBQUtVLE1BQVEsUUFFekJWLEVBQUtVLE9BSVZ0QyxFQUFLdUMsZ0JBQ1BOLEVBQVEsTUFBT2pDLEVBQUt1QyxnQkFDbEJ2QyxFQUFLd0MsU0FDUFAsRUFBUSxVQUFXakMsRUFBS3dDLFNBRTFCLElBQUlDLEVBQWNYLEVBQVE1VyxJQUFJLFNBQVN3WCxHQUFNLE9BQU9BLEVBQUcsS0ErQnZELE9BOUJBZixFQUFZSixFQXpFZCxTQUFnQm9CLEVBQVNDLEdBV3ZCLElBSEEsSUFBSUMsRUFBa0IsaURBQ2xCQyxFQUFjLEVBQ2RDLEVBQU0sR0FDRC9ZLEVBQUksRUFBR0EsRUFBSTJZLEVBQVF6WSxPQUFRRixJQUFLLENBRXZDLElBQUlrRixFQURKNFQsR0FBZSxFQUVYckosRUFBSzZILEVBQU1xQixFQUFRM1ksSUFLdkIsSUFKSUEsRUFBSSxJQUNOK1ksR0FBT0gsR0FFVEcsR0FBTyxJQUNBdEosRUFBR3ZQLE9BQVMsR0FBRyxDQUNwQixJQUFJbUosRUFBUXdQLEVBQWdCVCxLQUFLM0ksR0FDakMsR0FBYSxNQUFUcEcsRUFBZSxDQUNqQjBQLEdBQU90SixFQUNQLE1BRUZzSixHQUFPdEosRUFBR3VKLFVBQVUsRUFBRzNQLEVBQU1sRyxPQUM3QnNNLEVBQUtBLEVBQUd1SixVQUFVM1AsRUFBTWxHLE1BQVFrRyxFQUFNLEdBQUduSixRQUN0QixNQUFmbUosRUFBTSxHQUFHLElBQWNBLEVBQU0sR0FFL0IwUCxHQUFPLEtBQU9qWSxPQUFPb1csT0FBTzdOLEVBQU0sSUFBTW5FLElBRXhDNlQsR0FBTzFQLEVBQU0sR0FDRyxLQUFaQSxFQUFNLElBQ1J5UCxLQUlOQyxHQUFPLElBRVQsT0FBT0EsRUFrQ1lFLENBQU9SLEVBQWEsTUFBTSxHQUU3Q1YsRUFBUW1CLFVBQVksRUFDcEJuQixFQUFRSyxLQUFPLFNBQVNqVyxHQUN0QixJQUFJK1YsRUFFSixHQUF1QixJQUFuQkosRUFBUTVYLE9BQWMsT0FBTyxLQUVqQ3lYLEVBQVV1QixVQUFZbkIsRUFBUW1CLFVBQzlCLElBQUk3UCxFQUFRc08sRUFBVVMsS0FBS2pXLEdBQzNCLElBQUtrSCxFQUFTLE9BQU8sS0FFckIsSUFBSSxJQUFJckosRUFBSSxFQUFHQSxFQUFFcUosRUFBTW5KLE9BQVFGLElBQzdCLFFBQWdCZ0MsR0FBWnFILEVBQU1ySixTQUEwQ2dDLEdBQXZCNlYsRUFBYSxHQUFJN1gsR0FBa0IsQ0FDOURrWSxFQUFPTCxFQUFhLEdBQUc3WCxHQUN2QixNQVlKLE1BUG9CLGlCQUFUa1ksR0FDVDdPLEVBQU1qSCxLQUFPOFYsRUFDYjdPLEVBQU04UCxPQUFTbkQsRUFBS3dDLFFBQVN4QyxFQUFLdUMsa0JBRWxDbFAsRUFBTWpILEtBQU8sUUFDYmlILEVBQU02TyxLQUFPQSxHQUVSN08sR0FHRjBPLEdBR1QsU0FBU3FCLEVBQVlwRCxFQUFNdlIsR0FDckJ1UixFQUFLcUQsV0FFVHJELEVBQUtxRCxVQUFXLEVBRWhCckQsRUFBS3NELFNBQVd0RCxFQUFLc0QsVUFBWXRELEVBQUtxQyxjQUNsQ3JDLEVBQUtzRCxXQUNQdEQsRUFBS3NELFNBQVc1QyxFQUFnQlYsRUFBS3NELFNBQVVsRSxFQUFTd0IsbUJBRTFEWixFQUFLdUQsVUFBWWhDLEVBQU92QixFQUFLd0QsU0FBVyxPQUFPLEdBRTNDL1UsSUFDRXVSLEVBQUtxQyxnQkFDUHJDLEVBQUtzQyxNQUFRLE9BQVN0QyxFQUFLcUMsY0FBYy9XLE1BQU0sS0FBS0YsS0FBSyxLQUFPLFFBRTdENFUsRUFBS3NDLFFBQ1J0QyxFQUFLc0MsTUFBUSxTQUNmdEMsRUFBS3lELFFBQVVsQyxFQUFPdkIsRUFBS3NDLE9BQ3ZCdEMsRUFBSzBELGlCQUNQMUQsRUFBSzNRLElBQU0yUSxFQUFLc0MsT0FDYnRDLEVBQUszUSxLQUFRMlEsRUFBS0ssaUJBQ3JCTCxFQUFLM1EsSUFBTSxTQUNUMlEsRUFBSzNRLE1BQ1AyUSxFQUFLMkQsTUFBUXBDLEVBQU92QixFQUFLM1EsTUFDM0IyUSxFQUFLdUMsZUFBaUJqQixFQUFNdEIsRUFBSzNRLE1BQVEsR0FDckMyUSxFQUFLSyxnQkFBa0I1UixFQUFPOFQsaUJBQ2hDdkMsRUFBS3VDLGlCQUFtQnZDLEVBQUszUSxJQUFNLElBQU0sSUFBTVosRUFBTzhULGlCQUV0RHZDLEVBQUt3QyxVQUNQeEMsRUFBSzRELFVBQVlyQyxFQUFPdkIsRUFBS3dDLFVBQ1QsTUFBbEJ4QyxFQUFLNkQsWUFDUDdELEVBQUs2RCxVQUFZLEdBQ2Q3RCxFQUFLUyxXQUNSVCxFQUFLUyxhQUVQVCxFQUFLUyxTQUFXalUsTUFBTWhDLFVBQVUrRCxPQUFPbEIsU0FBVTJTLEVBQUtTLFNBQVN2VixJQUFJLFNBQVM0WSxHQUMxRSxPQUFPL0QsRUFBMkIsU0FBTitELEVBQWU5RCxFQUFPOEQsTUFFcEQ5RCxFQUFLUyxTQUFTbFYsUUFBUSxTQUFTdVksR0FBSVYsRUFBWVUsRUFBRzlELEtBRTlDQSxFQUFLTSxRQUNQOEMsRUFBWXBELEVBQUtNLE9BQVE3UixHQUczQnVSLEVBQUt5QyxZQUFjZixFQUFlMUIsSUFHcENvRCxDQUFZaEUsR0FZZCxTQUFTMkUsRUFBVTNTLEVBQU05RSxFQUFPMFgsRUFBaUJDLEdBa0IvQyxTQUFTQyxFQUFhbEUsRUFBTTNNLEdBQzFCLElBQUk4USxFQUFZL0UsRUFBU3dCLGlCQUFtQnZOLEVBQU0sR0FBRzZMLGNBQWdCN0wsRUFBTSxHQUMzRSxPQUFPMk0sRUFBS3NELFNBQVNqWixlQUFlOFosSUFBY25FLEVBQUtzRCxTQUFTYSxHQUdsRSxTQUFTQyxFQUFVQyxFQUFXQyxFQUFZQyxFQUFXQyxHQUNuRCxJQUFLRCxHQUE0QixLQUFmRCxFQUFtQixNQUFPLEdBQzVDLElBQUtELEVBQVcsT0FBT0MsRUFFdkIsSUFDSUcsRUFBYyxpQkFEQUQsRUFBVyxHQUFLalYsRUFBUW9QLGFBTTFDLE9BRkE4RixHQUFZSixFQUFZLE1BRU5DLEdBSkFDLEVBQVksR0FBSzdGLEdBd0RyQyxTQUFTZ0csSUFDUHZXLEdBQThCLE1BQW5Cd1csRUFBSUMsWUF4QmpCLFdBQ0UsSUFBSUMsRUFBc0MsaUJBQXBCRixFQUFJQyxZQUMxQixHQUFJQyxJQUFheEcsRUFBVXNHLEVBQUlDLGFBQzdCLE9BQU83RixFQUFPK0YsR0FHaEIsSUFBSTNXLEVBQVMwVyxFQUNBZCxFQUFVWSxFQUFJQyxZQUFhRSxHQUFhLEVBQU1DLEVBQWNKLEVBQUlDLGNBQ2hFSSxFQUFjRixFQUFhSCxFQUFJQyxZQUFZMWEsT0FBU3lhLEVBQUlDLGlCQUFjNVksR0FZbkYsT0FOSTJZLEVBQUlkLFVBQVksSUFDbEJBLEdBQWExVixFQUFPMFYsV0FFbEJnQixJQUNGRSxFQUFjSixFQUFJQyxhQUFlelcsRUFBT3dXLEtBRW5DUCxFQUFValcsRUFBT2lSLFNBQVVqUixFQUFPN0IsT0FBTyxHQUFPLEdBSWxCMlksR0FsRHZDLFdBQ0UsSUFBSUMsRUFBZUMsRUFBWTlSLEVBQU9sRixFQUV0QyxJQUFLd1csRUFBSXJCLFNBQ1AsT0FBT3ZFLEVBQU8rRixHQU9oQixJQUxBM1csRUFBUyxHQUNUZ1gsRUFBYSxFQUNiUixFQUFJcEIsVUFBVUwsVUFBWSxFQUMxQjdQLEVBQVFzUixFQUFJcEIsVUFBVW5CLEtBQUswQyxHQUVwQnpSLEdBQ0xsRixHQUFVNFEsRUFBTytGLEVBQVk5QixVQUFVbUMsRUFBWTlSLEVBQU1sRyxTQUN6RCtYLEVBQWdCaEIsRUFBYVMsRUFBS3RSLEtBRWhDd1EsR0FBYXFCLEVBQWMsR0FDM0IvVyxHQUFVaVcsRUFBVWMsRUFBYyxHQUFJbkcsRUFBTzFMLEVBQU0sTUFFbkRsRixHQUFVNFEsRUFBTzFMLEVBQU0sSUFFekI4UixFQUFhUixFQUFJcEIsVUFBVUwsVUFDM0I3UCxFQUFRc1IsRUFBSXBCLFVBQVVuQixLQUFLMEMsR0FFN0IsT0FBTzNXLEVBQVM0USxFQUFPK0YsRUFBWXZTLE9BQU80UyxJQTJCa0JDLEdBQzVETixFQUFjLEdBR2hCLFNBQVNPLEVBQWFyRixHQUNwQjdSLEdBQVU2UixFQUFLek8sVUFBVzZTLEVBQVVwRSxFQUFLek8sVUFBVyxJQUFJLEdBQU8sR0FDL0RvVCxFQUFNcGEsT0FBTythLE9BQU90RixHQUFPdlIsUUFBU25DLE1BQU9xWSxLQUk3QyxTQUFTWSxFQUFhbFMsR0FDcEIsSUFBSW1TLEVBQVNuUyxFQUFNLEdBQ2ZvUyxFQUFXcFMsRUFBTTZPLEtBa0JyQixPQWhCSXVELEdBQVlBLEVBQVMvQixpQkFDdkIrQixFQUFTOUIsTUFsR0osSUFBSWxDLE9Ba0drQitELEVBbEdMcFYsUUFBUSx5QkFBMEIsUUFBUyxNQXFHL0RxVixFQUFTQyxLQUNYWixHQUFlVSxHQUVYQyxFQUFTRSxlQUNYYixHQUFlVSxHQUVqQmQsSUFDS2UsRUFBU0csYUFBZ0JILEVBQVNFLGVBQ3JDYixFQUFjVSxJQUdsQkgsRUFBYUksR0FDTkEsRUFBU0csWUFBYyxFQUFJSixFQUFPdGIsT0FHM0MsU0FBUzJiLEVBQVd4UyxHQUNsQixJQUFJbVMsRUFBU25TLEVBQU0sR0FDZnlTLEVBbkhOLFNBQVNDLEVBQVUvRixFQUFNd0YsR0FDdkIsR0F4YUosU0FBZ0IvTCxFQUFJK0wsR0FDbEIsSUFBSW5TLEVBQVFvRyxHQUFNQSxFQUFHMkksS0FBS29ELEdBQzFCLE9BQU9uUyxHQUF5QixJQUFoQkEsRUFBTWxHLE1Bc2FoQjZZLENBQU9oRyxFQUFLMkQsTUFBTzZCLEdBQVMsQ0FDOUIsS0FBT3hGLEVBQUtpRyxZQUFjakcsRUFBS3ZSLFFBQzdCdVIsRUFBT0EsRUFBS3ZSLE9BRWQsT0FBT3VSLEVBRVQsR0FBSUEsRUFBS0ssZUFDUCxPQUFPMEYsRUFBVS9GLEVBQUt2UixPQUFRK1csR0EyR2pCTyxDQUFVcEIsRUFBS2EsR0FDOUIsR0FBS00sRUFBTCxDQUVBLElBQUlJLEVBQVN2QixFQUNUdUIsRUFBT1IsS0FDVFosR0FBZVUsR0FFVFUsRUFBT0MsV0FBYUQsRUFBT0UsYUFDL0J0QixHQUFlVSxHQUVqQmQsSUFDSXdCLEVBQU9FLGFBQ1R0QixFQUFjVSxJQUdsQixHQUNNYixFQUFJcFQsWUFDTnBELEdBQVV1USxHQUVQaUcsRUFBSWUsTUFBU2YsRUFBSUMsY0FDcEJmLEdBQWFjLEVBQUlkLFdBRW5CYyxFQUFNQSxFQUFJbFcsYUFDSGtXLElBQVFtQixFQUFTclgsUUFPMUIsT0FOSXFYLEVBQVN4RixTQUNQd0YsRUFBU3BDLGlCQUNYb0MsRUFBU3hGLE9BQU9xRCxNQUFRbUMsRUFBU25DLE9BRW5DMEIsRUFBYVMsRUFBU3hGLFNBRWpCNEYsRUFBT0MsVUFBWSxFQUFJWCxFQUFPdGIsUUFHdkMsSUFBSW1jLEtBQ0osU0FBU0MsRUFBY0MsRUFBbUJsVCxHQUV4QyxJQUFJbVMsRUFBU25TLEdBQVNBLEVBQU0sR0FLNUIsR0FGQXlSLEdBQWV5QixFQUVELE1BQVZmLEVBRUYsT0FEQWQsSUFDTyxFQU9ULEdBQW9CLFNBQWhCMkIsRUFBVWphLE1BQTZCLE9BQVppSCxFQUFNakgsTUFBZWlhLEVBQVVsWixPQUFTa0csRUFBTWxHLE9BQW9CLEtBQVhxWSxFQUdwRixPQURBVixHQUFleFksRUFBTXlHLE1BQU1NLEVBQU1sRyxNQUFPa0csRUFBTWxHLE1BQVEsR0FDL0MsRUFJVCxHQUZBa1osRUFBWWhULEVBRUssVUFBYkEsRUFBTWpILEtBQ1IsT0FBT21aLEVBQWFsUyxHQUNmLEdBQWlCLFlBQWJBLEVBQU1qSCxPQUFxQjRYLEVBRXBDLE1BQU0sSUFBSXpXLE1BQU0sbUJBQXFCaVksRUFBUyxnQkFBa0JiLEVBQUlwVCxXQUFhLGFBQWUsS0FDM0YsR0FBaUIsUUFBYjhCLEVBQU1qSCxLQUFjLENBQzdCLElBQUlvYSxFQUFZWCxFQUFXeFMsR0FDM0IsUUFBaUJySCxHQUFid2EsRUFDRixPQUFPQSxFQWdCWCxPQURBMUIsR0FBZVUsRUFDUkEsRUFBT3RiLE9BR2hCLElBQUlrVixFQUFXcUgsRUFBWXJWLEdBQzNCLElBQUtnTyxFQUNILE1BQU0sSUFBSTdSLE1BQU0sc0JBQXdCNkQsRUFBTyxLQUdqRGlRLEVBQWdCakMsR0FDaEIsSUFFaUJzSCxFQUZiL0IsRUFBTVYsR0FBZ0I3RSxFQUN0QjJGLEtBQ0E1VyxFQUFTLEdBQ2IsSUFBSXVZLEVBQVUvQixFQUFLK0IsSUFBWXRILEVBQVVzSCxFQUFVQSxFQUFRalksT0FDckRpWSxFQUFRblYsWUFDVnBELEVBQVNpVyxFQUFVc0MsRUFBUW5WLFVBQVcsSUFBSSxHQUFRcEQsR0FHdEQsSUFBSTJXLEVBQWMsR0FDZGpCLEVBQVksRUFDaEIsSUFFRSxJQURBLElBQUl4USxFQUFPc1QsRUFBT3haLEVBQVEsRUFFeEJ3WCxFQUFJbEMsWUFBWVMsVUFBWS9WLEVBQzVCa0csRUFBUXNSLEVBQUlsQyxZQUFZTCxLQUFLOVYsSUFHN0JxYSxFQUFRTCxFQUFjaGEsRUFBTTBXLFVBQVU3VixFQUFPa0csRUFBTWxHLE9BQVFrRyxHQUMzRGxHLEVBQVFrRyxFQUFNbEcsTUFBUXdaLEVBR3hCLElBREFMLEVBQWNoYSxFQUFNaUcsT0FBT3BGLElBQ3ZCdVosRUFBVS9CLEVBQUsrQixFQUFRalksT0FBUWlZLEVBQVVBLEVBQVFqWSxPQUMvQ2lZLEVBQVFuVixZQUNWcEQsR0FBVXVRLEdBR2QsT0FDRW1GLFVBQVdBLEVBQ1h2WCxNQUFPNkIsRUFDUHFVLFNBQVEsRUFDUnBELFNBQVVoTyxFQUNWdVQsSUFBS0EsR0FFUCxNQUFPaUMsR0FDUCxHQUFJQSxFQUFFQyxVQUE2QyxJQUFsQ0QsRUFBRUMsUUFBUW5ZLFFBQVEsV0FDakMsT0FDRThULFNBQVMsRUFDVHFCLFVBQVcsRUFDWHZYLE1BQU95UyxFQUFPelMsSUFHaEIsTUFBTXNhLEdBZ0JaLFNBQVM1QixFQUFjbFUsRUFBTWdXLEdBQzNCQSxFQUFpQkEsR0FBa0J2WCxFQUFROE8sV0FBYUQsRUFBV0MsR0FDbkUsSUFBSWxRLEdBQ0YwVixVQUFXLEVBQ1h2WCxNQUFPeVMsRUFBT2pPLElBRVppVyxFQUFjNVksRUFlbEIsT0FkQTJZLEVBQWVFLE9BQU9QLEdBQWFPLE9BQU9DLEdBQWUxYixRQUFRLFNBQVM2RixHQUN4RSxJQUFJc1YsRUFBVTNDLEVBQVUzUyxFQUFNTixHQUFNLEdBQ3BDNFYsRUFBUXRILFNBQVdoTyxFQUNmc1YsRUFBUTdDLFVBQVlrRCxFQUFZbEQsWUFDbENrRCxFQUFjTCxHQUVaQSxFQUFRN0MsVUFBWTFWLEVBQU8wVixZQUM3QmtELEVBQWM1WSxFQUNkQSxFQUFTdVksS0FHVEssRUFBWTNILFdBQ2RqUixFQUFPNFksWUFBY0EsR0FFaEI1WSxFQVVULFNBQVMrWSxFQUFVNWEsR0FDakIsT0FBU2lELEVBQVFxUCxZQUFjclAsRUFBUXNQLE1BRW5DdlMsRUFBTThELFFBQVFxTyxFQUFhLFNBQVNwTCxFQUFPOFQsR0FDekMsT0FBSTVYLEVBQVFzUCxPQUFtQixPQUFWeEwsRUFDWixPQUNFOUQsRUFBUXFQLFdBQ1Z1SSxFQUFHL1csUUFBUSxNQUFPYixFQUFRcVAsWUFFNUIsS0FQVHRTLEVBOEJOLFNBQVM4YSxFQUFlQyxHQUN0QixJQUFJOWEsRUFBTSthLEVBQWdCblosRUFBUW9aLEVBQVl6VyxFQUMxQ3NPLEVBcnVCTixTQUF1QmlJLEdBQ3JCLElBQUlyZCxFQUFHcUosRUFBT25KLEVBQVFzZCxFQUNsQkMsRUFBVUosRUFBTTlWLFVBQVksSUFNaEMsR0FKQWtXLEdBQVdKLEVBQU1LLFdBQWFMLEVBQU1LLFdBQVduVyxVQUFZLEdBRzNEOEIsRUFBUW1MLEVBQWlCNEQsS0FBS3FGLEdBRTVCLE9BQU9oQixFQUFZcFQsRUFBTSxJQUFNQSxFQUFNLEdBQUssZUFLNUMsSUFBS3JKLEVBQUksRUFBR0UsR0FGWnVkLEVBQVVBLEVBQVFuYyxNQUFNLFFBRUtwQixPQUFRRixFQUFJRSxFQUFRRixJQUcvQyxHQUFJbVYsRUFGSnFJLEVBQVNDLEVBQVF6ZCxLQUVleWMsRUFBWWUsR0FDMUMsT0FBT0EsRUFtdEJJRyxDQUFjTixHQUV6QmxJLEVBQWlCQyxLQUdqQjdQLEVBQVFzUCxPQUNWdFMsRUFBT3FiLFNBQVNDLGdCQUFnQiwrQkFBZ0MsUUFDM0RDLFVBQVlULEVBQU1TLFVBQVUxWCxRQUFRLE1BQU8sSUFBSUEsUUFBUSxjQUFlLE1BRTNFN0QsRUFBTzhhLEVBRVR2VyxFQUFPdkUsRUFBS3diLFlBQ1o1WixFQUFTaVIsRUFBVzJFLEVBQVUzRSxFQUFVdE8sR0FBTSxHQUFRa1UsRUFBY2xVLElBRXBFd1csRUFBaUI5SCxFQUFXalQsSUFDVHJDLFVBQ2pCcWQsRUFBYUssU0FBU0MsZ0JBQWdCLCtCQUFnQyxRQUMzREMsVUFBWTNaLEVBQU83QixNQUM5QjZCLEVBQU83QixNQWxyQlgsU0FBc0IwYixFQUFVQyxFQUFhM2IsR0FDM0MsSUFBSWthLEVBQVksRUFDWnJZLEVBQVMsR0FDVCtaLEtBRUosU0FBU0MsSUFDUCxPQUFLSCxFQUFTOWQsUUFBVytkLEVBQVkvZCxPQUdqQzhkLEVBQVMsR0FBRzlZLFNBQVcrWSxFQUFZLEdBQUcvWSxPQUNoQzhZLEVBQVMsR0FBRzlZLE9BQVMrWSxFQUFZLEdBQUcvWSxPQUFVOFksRUFBV0MsRUFrQm5DLFVBQXpCQSxFQUFZLEdBQUduSSxNQUFvQmtJLEVBQVdDLEVBckI1Q0QsRUFBUzlkLE9BQVM4ZCxFQUFXQyxFQXdCeEMsU0FBU0csRUFBSzdiLEdBRVo0QixHQUFVLElBQU02USxFQUFJelMsR0FBUTRSLEVBQVdqVCxJQUFJWixLQUFLaUMsRUFBSzhiLFdBRHJELFNBQWtCQyxHQUFJLE1BQU8sSUFBTUEsRUFBRXJKLFNBQVcsS0FBT0YsRUFBT3VKLEVBQUVoYyxPQUFPOEQsUUFBUSxJQUFLLFVBQVksTUFDckJoRixLQUFLLElBQU0sSUFHeEYsU0FBU21kLEVBQU1oYyxHQUNiNEIsR0FBVSxLQUFPNlEsRUFBSXpTLEdBQVEsSUFHL0IsU0FBU2ljLEVBQU8xSSxJQUNHLFVBQWhCQSxFQUFNQSxNQUFvQnNJLEVBQU9HLEdBQU96SSxFQUFNdlQsTUFHakQsS0FBT3liLEVBQVM5ZCxRQUFVK2QsRUFBWS9kLFFBQVEsQ0FDNUMsSUFBSXVlLEVBQVNOLElBR2IsR0FGQWhhLEdBQVU0USxFQUFPelMsRUFBTTBXLFVBQVV3RCxFQUFXaUMsRUFBTyxHQUFHdlosU0FDdERzWCxFQUFZaUMsRUFBTyxHQUFHdlosT0FDbEJ1WixJQUFXVCxFQUFVLENBT3ZCRSxFQUFVcGEsVUFBVXZDLFFBQVFnZCxHQUM1QixHQUNFQyxFQUFPQyxFQUFPM04sT0FBTyxFQUFHLEdBQUcsSUFDM0IyTixFQUFTTixVQUNGTSxJQUFXVCxHQUFZUyxFQUFPdmUsUUFBVXVlLEVBQU8sR0FBR3ZaLFNBQVdzWCxHQUN0RTBCLEVBQVVwYSxVQUFVdkMsUUFBUTZjLE9BRUosVUFBcEJLLEVBQU8sR0FBRzNJLE1BQ1pvSSxFQUFVaFgsS0FBS3VYLEVBQU8sR0FBR2xjLE1BRXpCMmIsRUFBVVEsTUFFWkYsRUFBT0MsRUFBTzNOLE9BQU8sRUFBRyxHQUFHLElBRy9CLE9BQU8zTSxFQUFTNFEsRUFBT3pTLEVBQU1pRyxPQUFPaVUsSUE0bUJuQm1DLENBQWFyQixFQUFnQjlILEVBQVcrSCxHQUFhelcsSUFFdEUzQyxFQUFPN0IsTUFBUTRhLEVBQVUvWSxFQUFPN0IsT0FFaEMrYSxFQUFNUyxVQUFZM1osRUFBTzdCLE1BQ3pCK2EsRUFBTTlWLFVBNUNSLFNBQXdCcVgsRUFBZUMsRUFBYUMsR0FDbEQsSUFBSTFKLEVBQVd5SixFQUFjdkssRUFBUXVLLEdBQWVDLEVBQ2hEM2EsR0FBWXlhLEVBQWNuWSxRQVU5QixPQVJLbVksRUFBY3ZWLE1BQU0sYUFDdkJsRixFQUFPK0MsS0FBSyxTQUcyQixJQUFyQzBYLEVBQWNsYSxRQUFRMFEsSUFDeEJqUixFQUFPK0MsS0FBS2tPLEdBR1BqUixFQUFPL0MsS0FBSyxLQUFLcUYsT0FnQ05zWSxDQUFlMUIsRUFBTTlWLFVBQVc2TixFQUFValIsRUFBT2lSLFVBQ25FaUksRUFBTWxaLFFBQ0ppUixTQUFValIsRUFBT2lSLFNBQ2pCM0YsR0FBSXRMLEVBQU8wVixXQUVUMVYsRUFBTzRZLGNBQ1RNLEVBQU1OLGFBQ0ozSCxTQUFValIsRUFBTzRZLFlBQVkzSCxTQUM3QjNGLEdBQUl0TCxFQUFPNFksWUFBWWxELGFBZTdCLFNBQVNtRixJQUNQLElBQUlBLEVBQWlCQyxPQUFyQixDQUVBRCxFQUFpQkMsUUFBUyxFQUUxQixJQUFJQyxFQUFTdEIsU0FBU3VCLGlCQUFpQixZQUN2Q2hMLEVBQVc1UyxRQUFRakIsS0FBSzRlLEVBQVE5QixJQXlCbEMsU0FBU1gsRUFBWXJWLEdBRW5CLE9BREFBLEdBQVFBLEdBQVEsSUFBSThOLGNBQ2JiLEVBQVVqTixJQUFTaU4sRUFBVUMsRUFBUWxOLElBRzlDLFNBQVM2VixFQUFjN1YsR0FDckIsSUFBSWdDLEVBQU9xVCxFQUFZclYsR0FDdkIsT0FBT2dDLElBQVNBLEVBQUtnVyxrQkEwSHZCLE9BckhBbkwsRUFBSzhGLFVBQVlBLEVBQ2pCOUYsRUFBSytHLGNBQWdCQSxFQUNyQi9HLEVBQUtpSixVQUFZQSxFQUNqQmpKLEVBQUttSixlQUFpQkEsRUFDdEJuSixFQUFLb0wsVUF0REwsU0FBbUJDLEdBQ2pCL1osRUFBVThQLEVBQVE5UCxFQUFTK1osSUFzRDdCckwsRUFBSytLLGlCQUFtQkEsRUFDeEIvSyxFQUFLc0wsdUJBckNMLFdBQ0VDLGlCQUFpQixtQkFBb0JSLEdBQWtCLEdBQ3ZEUSxpQkFBaUIsT0FBUVIsR0FBa0IsSUFvQzdDL0ssRUFBS3dMLGlCQWpDTCxTQUEwQnJZLEVBQU1nTyxHQUM5QixJQUFJaE0sRUFBT2lMLEVBQVVqTixHQUFRZ08sRUFBU25CLEdBQ3RDc0MsRUFBbUJuTixHQUNuQkEsRUFBS3NXLGNBQWdCdEssRUFBU3VLLEtBQUssS0FBSzFMLEdBRXBDN0ssRUFBS2tMLFNBQ1BsTCxFQUFLa0wsUUFBUS9TLFFBQVEsU0FBU3FlLEdBQVF0TCxFQUFRc0wsR0FBU3hZLEtBNEIzRDZNLEVBQUs0TCxjQXhCTCxXQUNFLE9BQU96TCxFQUFXQyxJQXdCcEJKLEVBQUt3SSxZQUFjQSxFQUNuQnhJLEVBQUtnSixjQUFnQkEsRUFDckJoSixFQUFLb0IsUUFBVUEsRUFHZnBCLEVBQUs2TCxTQUFXLGVBQ2hCN0wsRUFBSzhMLG9CQUFzQixnQkFDM0I5TCxFQUFLK0wsVUFBWSxvQkFDakIvTCxFQUFLZ00sWUFBYyx5RUFDbkJoTSxFQUFLaU0saUJBQW1CLGVBQ3hCak0sRUFBS2tNLGVBQWlCLCtJQUd0QmxNLEVBQUttTSxrQkFDSDlILE1BQU8sZUFBZ0J1QixVQUFXLEdBRXBDNUYsRUFBS29NLGtCQUNIOVksVUFBVyxTQUNYK1EsTUFBTyxJQUFNalQsSUFBSyxJQUNsQm1ULFFBQVMsTUFDVC9CLFVBQVd4QyxFQUFLbU0sbUJBRWxCbk0sRUFBS3FNLG1CQUNIL1ksVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm1ULFFBQVMsTUFDVC9CLFVBQVd4QyxFQUFLbU0sbUJBRWxCbk0sRUFBS3NNLG9CQUNIakksTUFBTyw4SUFFVHJFLEVBQUt1TSxRQUFVLFNBQVVsSSxFQUFPalQsRUFBS29iLEdBQ25DLElBQUl6SyxFQUFPL0IsRUFBS29CLFNBRVo5TixVQUFXLFVBQ1grUSxNQUFPQSxFQUFPalQsSUFBS0EsRUFDbkJvUixhQUVGZ0ssT0FRRixPQU5BekssRUFBS1MsU0FBU3ZQLEtBQUsrTSxFQUFLc00sb0JBQ3hCdkssRUFBS1MsU0FBU3ZQLE1BQ1pLLFVBQVcsU0FDWCtRLE1BQU8sK0JBQ1B1QixVQUFXLElBRU43RCxHQUVUL0IsRUFBS3lNLG9CQUFzQnpNLEVBQUt1TSxRQUFRLEtBQU0sS0FDOUN2TSxFQUFLME0scUJBQXVCMU0sRUFBS3VNLFFBQVEsT0FBUSxRQUNqRHZNLEVBQUsyTSxrQkFBb0IzTSxFQUFLdU0sUUFBUSxJQUFLLEtBQzNDdk0sRUFBSzRNLGFBQ0h0WixVQUFXLFNBQ1grUSxNQUFPckUsRUFBSytMLFVBQ1puRyxVQUFXLEdBRWI1RixFQUFLNk0sZUFDSHZaLFVBQVcsU0FDWCtRLE1BQU9yRSxFQUFLZ00sWUFDWnBHLFVBQVcsR0FFYjVGLEVBQUs4TSxvQkFDSHhaLFVBQVcsU0FDWCtRLE1BQU9yRSxFQUFLaU0saUJBQ1pyRyxVQUFXLEdBRWI1RixFQUFLK00saUJBQ0h6WixVQUFXLFNBQ1grUSxNQUFPckUsRUFBSytMLFVBQVksa0dBU3hCbkcsVUFBVyxHQUViNUYsRUFBS2dOLGFBQ0gxWixVQUFXLFNBQ1grUSxNQUFPLEtBQU1qVCxJQUFLLGFBQ2xCbVQsUUFBUyxLQUNUL0IsVUFDRXhDLEVBQUttTSxrQkFFSDlILE1BQU8sS0FBTWpULElBQUssS0FDbEJ3VSxVQUFXLEVBQ1hwRCxVQUFXeEMsRUFBS21NLHFCQUl0Qm5NLEVBQUtpTixZQUNIM1osVUFBVyxRQUNYK1EsTUFBT3JFLEVBQUs2TCxTQUNaakcsVUFBVyxHQUViNUYsRUFBS2tOLHVCQUNINVosVUFBVyxRQUNYK1EsTUFBT3JFLEVBQUs4TCxvQkFDWmxHLFVBQVcsR0FFYjVGLEVBQUttTixjQUVIOUksTUFBTyxVQUFZckUsRUFBSzhMLG9CQUN4QmxHLFVBQVcsR0FHTjVGLEdBNS9CSEQsRUFBaUMsaUJBQVhxTixRQUF1QkEsUUFDZCxpQkFBVEMsTUFBcUJBLEtBS1QxYyxFQUFRZ1IsU0FFcEM1QixJQUdSQSxFQUFhQyxLQUFPcFAsT0FKcEJBLEVBQVFELHVCQ0pWLFdBR0EsSUFBSTJjLEVBNEJKLFNBQVNDLEVBQU9DLEdBc0JkLElBckJBLElBS0kzSCxFQUVBNEgsRUFDQUMsRUFFQUMsRUFWQUMsRUFBVyxFQUNYQyxLQUFVL1ksTUFBTXpJLEtBQUtMLFdBQ3JCRCxFQUFJLEVBQ0ptQixFQUFJc2dCLEVBQUl2aEIsT0FDUmlFLEVBQVMsR0FFVDBOLEdBQVUsRUFHVmtRLEdBQWMsRUFFZEMsRUFBVSxXQUFhLE9BQU9GLEVBQUtELE1BQ25DSSxFQUFjLFdBRVosSUFEQSxJQUFJQyxFQUFTLEdBQ04sS0FBS3RmLEtBQUs2ZSxFQUFJemhCLEtBQ25Ca2lCLEdBQVVULEVBQUl6aEIsS0FDZDhaLEVBQUkySCxFQUFJemhCLEdBRVYsT0FBT2tpQixFQUFPaGlCLE9BQVMsRUFBSWlpQixTQUFTRCxHQUFVLE1BRzdDbGlCLEVBQUltQixJQUFLbkIsRUFFZCxHQURBOFosRUFBSTJILEVBQUl6aEIsR0FDSjZSLEVBZUYsT0FkQUEsR0FBVSxFQUNELEtBQUxpSSxHQUNGaUksR0FBYyxFQUNkakksRUFBSTJILElBQU16aEIsSUFFRSxLQUFMOFosR0FBMEIsS0FBZDJILEVBQUl6aEIsRUFBSSxJQUMzQitoQixHQUFjLEVBRWRqSSxFQUFJMkgsRUFESnpoQixHQUFLLElBSUwraEIsR0FBYyxFQUVoQkgsRUFBWUssSUFDSm5JLEdBQ1IsSUFBSyxJQUNIM1YsR0FBVWdlLFNBQVNILElBQVcsSUFBSTdYLFNBQVMsR0FDM0MsTUFDRixJQUFLLElBRWdCLGlCQURuQnVYLEVBQU1NLE1BQ3lCTixhQUFlNWdCLE9BQzVDcUQsR0FBVXVkLEVBRVZ2ZCxHQUFVckQsT0FBT0csYUFBYWtoQixTQUFTVCxFQUFLLEtBQzlDLE1BQ0YsSUFBSyxJQUNIdmQsR0FBVWdlLFNBQVNILElBQVcsSUFDOUIsTUFDRixJQUFLLElBQ0hMLEVBQU03Z0IsT0FBT3NoQixXQUFXSixLQUFXSyxRQUFRVCxHQUFhLElBQ3hEemQsR0FBVTRkLEVBQWNKLEVBQU1BLEVBQUl2YixRQUFRLEtBQU0sSUFDaEQsTUFDRixJQUFLLElBQ0hqQyxHQUFVbWUsS0FBS0MsVUFBVVAsS0FDekIsTUFDRixJQUFLLElBQ0g3ZCxHQUFVLElBQU1nZSxTQUFTSCxJQUFXLElBQUk3WCxTQUFTLEdBQ2pELE1BQ0YsSUFBSyxJQUNIaEcsR0FBVTZkLElBQ1YsTUFDRixJQUFLLElBQ0g3ZCxHQUFVLEtBQU9nZSxTQUFTSCxJQUFXLElBQUk3WCxTQUFTLElBQ2xELE1BQ0YsSUFBSyxJQUNIaEcsR0FBVSxLQUFPZ2UsU0FBU0gsSUFBVyxJQUFJN1gsU0FBUyxJQUFJbEUsY0FDdEQsTUFDRixRQUNFOUIsR0FBVTJWLE1BR0csTUFBTkEsRUFDVGpJLEdBQVUsRUFFVjFOLEdBQVUyVixFQUdkLE9BQU8zVixHQTFHUG9kLEVBQVlyYixVQUFpQnNiLEdBU3JCQSxPQUFTQSxFQUNuQkQsRUFBVWlCLFNBVVYsU0FBa0JmLEVBQUtnQixHQUNyQixPQUFPakIsRUFBT25lLE1BQU0sTUFBT29lLEdBQUtsZCxPQUFPa2UsS0FUbEIsb0JBQVpDLFNBQWtELG1CQUFoQkEsUUFBUUMsTUFDbkRwQixFQUFVcUIsT0FHWixXQUNFRixRQUFRQyxJQUFJbkIsRUFBT25lLE1BQU0sS0FBTXBELGNBeEJsQyxLQ1BHNGlCLEdBQVF2SCxHQUFPL1gsVUFFRnNmLEdBWWpCLFNBQVN2SCxHQUFPd0gsR0FHZCxPQUZBQyxFQUFlaGUsWUFBYytkLEVBQWEvZCxhQUFlK2QsRUFBYTFiLEtBRS9EMmIsRUFFUCxTQUFTQSxFQUFldkIsR0FLdEIsT0FKSUEsSUFDRkEsRUFBU3dCLEdBQVUzZixNQUFNLEtBQU1wRCxZQUcxQixJQUFJNmlCLEVBQWF0QixJQ3BCNUIsU0FBU3lCLE1EQVRKLEdBQU1LLEtBQU81SCxHQUFPNkgsV0FDcEJOLEdBQU1PLE1BQVE5SCxHQUFPK0gsWUFDckJSLEdBQU1TLFVBQVloSSxHQUFPaUksZ0JBQ3pCVixHQUFNVyxPQUFTbEksR0FBT21JLGFBQ3RCWixHQUFNemdCLEtBQU9rWixHQUFPclosV0FDcEI0Z0IsR0FBTWEsSUFBTXBJLEdBQU9xSSxVQUVuQmQsR0FBTXZILE9BQVNBLEdDTGYySCxHQUFLemlCLFVBQVlvakIsR0FHakIsSUFBSUMsR0FBTSxJQUFJWixNQUVHWSxHQUVqQkEsR0FBSTlKLFVBc0ZKLFNBQW1CM0UsRUFBVTlTLEVBQU9pRCxHQUNsQyxJQUNJdWUsR0FEV3ZlLE9BQ091ZSxPQUVQLE9BQVhBLFFBQThCOWhCLElBQVg4aEIsSUFDckJBLEVBQVNDLElBR1gsT0FBTzNYLEdBQVU0WCxHQUFjNU8sRUFBVTlTLEdBQU8sRUFBTXdoQixLQTdGeERELEdBQUk3SSxjQUFnQmlKLEdBQ3BCSixHQUFJcEUsaUJBZ0dKLFNBQTBCclksRUFBTW9jLEdBQzlCLElBQUlwYSxFQUFPb2EsRUFBT0ssSUFFbEJ6YSxFQUFLc1csY0FBZ0I4RCxFQUFPN0QsS0FBSyxLQUFNa0UsSUFFdkN4UCxHQUFVak4sR0FBUWdDLEVBRWxCOGEsR0FBY2hkLEtBQUtFLEdBRWZnQyxFQUFLa0wsU0FDUDZQLEdBQWMvYyxFQUFNZ0MsRUFBS2tMLFVBekc3QnVQLEdBQUloRSxjQThHSixXQUNFLE9BQU9xRSxHQUFjM2YsVUE5R3ZCc2YsR0FBSU0sY0FBZ0JBLEdBQ3BCTixHQUFJcEgsWUFBY0EsR0FFbEIsSUFBSXBILEdBQVV1TyxHQUFLdk8sUUFDZnpQLE1BQVN2RixlQUVUMGpCLEdBQWdCLFFBQ2hCSyxHQUFpQixtQkFDakJDLEdBQW9CLGtCQUNwQkMsR0FBbUIsaUJBQ25CdFMsR0FBUSxJQUNSdVMsR0FBYyxJQUNkQyxHQUFZLElBQ1pDLEdBQWEsSUFDYjNTLEdBQVksS0FDWjRTLElBQWtCLEtBQU0sTUFBTyxNQUFPLEtBQU0sTUFBTyxLQUFNLEtBQU0sUUFHL0RSLE1BQ0E3UCxNQUNBQyxNQVdKLFNBQVMyUCxHQUFjM2hCLEVBQU9pRCxHQUM1QixJQUtJcEIsRUFDQXdnQixFQUNBakksRUFDQXRWLEVBUkFpSCxFQUFXOUksTUFDWHFmLEVBQVN2VyxFQUFTdVcsUUFBVVYsR0FDNUJKLEVBQVN6VixFQUFTeVYsT0FDbEI1akIsRUFBUzBrQixFQUFPMWtCLE9BQ2hCaUQsR0FBUyxFQVViLEdBSmUsT0FBWDJnQixRQUE4QjloQixJQUFYOGhCLElBQ3JCQSxFQUFTQyxJQUdVLGlCQUFWemhCLEVBQ1QsTUFBTXVnQixHQUFNLHdDQUF5Q3ZnQixHQU12RCxJQUhBcWlCLEVBQWF2WSxPQUNiakksRUFBU2lJLFNBRUFqSixFQUFRakQsR0FHVnVjLEdBRkxyVixFQUFPd2QsRUFBT3poQixPQU1kdVosRUFBVXRRLEdBQVU0WCxHQUFjNWMsRUFBTTlFLEdBQU8sRUFBT3doQixLQUU5QzFPLFNBQVdoTyxFQUVmc1YsRUFBUTdDLFVBQVk4SyxFQUFXOUssWUFDakM4SyxFQUFhakksR0FHWEEsRUFBUTdDLFVBQVkxVixFQUFPMFYsWUFDN0I4SyxFQUFheGdCLEVBQ2JBLEVBQVN1WSxJQVFiLE9BSklpSSxFQUFXdlAsV0FDYmpSLEVBQU93Z0IsV0FBYUEsR0FHZnhnQixFQW9DVCxTQUFTZ2dCLEdBQWMvYyxFQUFNd1ksR0FDM0IsSUFDSXhmLEVBQ0ErSCxFQUNBakksRUFDQWlELEVBSkFqQyxFQUFNa0csRUFXVixJQUFLaEgsS0FMRHdmLEtBQ0YxZSxNQUNJa0csR0FBUXdZLEdBR0YxZSxFQU1WLElBSEFoQixHQURBaUksRUFBdUIsaUJBRHZCQSxFQUFPakgsRUFBSWQsS0FDd0IrSCxHQUFRQSxHQUM3QmpJLE9BQ2RpRCxHQUFTLElBRUFBLEVBQVFqRCxHQUNmb1UsR0FBUW5NLEVBQUtoRixJQUFVL0MsRUFTN0IsU0FBUzRqQixHQUFjNWMsRUFBTTlFLEVBQU80TCxFQUFRNFYsRUFBUTdKLEdBQ2xELElBS0k3RSxFQUNBdUYsRUFDQStCLEVBQ0FtSSxFQUNBM2YsRUFDQXlYLEVBQ0F0VCxFQUNBM0csRUFaQTJaLEtBQ0F0QixLQUNBK0osS0FDQUMsRUFBYSxHQUNibEwsRUFBWSxFQVVoQixHQUFvQixpQkFBVHpTLEVBQ1QsTUFBTXliLEdBQU0sdUNBQXdDemIsR0FHdEQsR0FBcUIsaUJBQVY5RSxFQUNULE1BQU11Z0IsR0FBTSx3Q0FBeUN2Z0IsR0FVdkQsR0FQQThTLEVBQVdxSCxHQUFZclYsR0FJdkJzVixFQUhBL0IsRUFBTVYsR0FBZ0I3RSxFQUl0QnlQLEVBSEFuaUIsTUFLSzBTLEVBQ0gsTUFBTXlOLEdBQU0sMkNBQTRDemIsSUF5WTVELFNBQXlCZ08sR0FJdkIsU0FBU2dFLEVBQVlwRCxFQUFNdlIsR0FDckJ1UixFQUFLcUQsV0FJVHJELEVBQUtxRCxVQUFXLEVBRWhCckQsRUFBS3NELFNBQVd0RCxFQUFLc0QsVUFBWXRELEVBQUtxQyxjQUVsQ3JDLEVBQUtzRCxXQUNQdEQsRUFBS3NELFNBd09YLFNBQXlCOVMsRUFBUXdlLEdBQy9CLElBQ0k1a0IsRUFEQWlaLEtBR0osR0FBc0IsaUJBQVg3UyxFQUNUeWUsRUFBUSxVQUFXemUsUUFFbkIsSUFBS3BHLEtBQU9vRyxFQUNWeWUsRUFBUTdrQixFQUFLb0csRUFBT3BHLElBSXhCLE9BQU9pWixFQUVQLFNBQVM0TCxFQUFRN2tCLEVBQUtrQyxHQUNwQixJQUFJUCxFQUFNaWpCLEVBQWtCMWlCLEVBQU00UyxjQUFnQjVTLEdBSXBELFNBQWFsQyxFQUFLb0csR0FDaEIsSUFFSXdRLEVBRkE5VyxFQUFTc0csRUFBT3RHLE9BQ2hCaUQsR0FBUyxFQUdiLE9BQVNBLEVBQVFqRCxHQUNmOFcsRUFBT3hRLEVBQU9yRCxHQUFPN0IsTUFBTWlqQixJQUMzQmxMLEVBQVNyQyxFQUFLLEtBQU81VyxFQUFLOFcsT0FBT0YsRUFBSyxNQUs1QjFVLEVBTDBDMFUsRUFBSyxJQU1MLElBQWpEME4sR0FBZWhnQixRQUFRcEMsRUFBTTRTLGdCQU4rQixFQUFJLEdBS3pFLElBQWdCNVMsRUFmWmdDLENBQUlsRSxFQUFLMkIsRUFBSVQsTUFBTTBRLE1BeFBEMEUsQ0FBZ0JWLEVBQUtzRCxTQUFVbEUsRUFBU2dQLE1BRzFEcE8sRUFBS3VELFVBQVloQyxFQUFPdkIsRUFBS3dELFNBQVcsT0FBTyxHQUUzQy9VLElBQ0V1UixFQUFLcUMsZ0JBQ1ByQyxFQUFLc0MsTUFDSCxPQUFTdEMsRUFBS3FDLGNBQWMvVyxNQUFNMFEsSUFBTzVRLEtBQUttakIsSUFBZSxRQUc1RHZPLEVBQUtzQyxRQUNSdEMsRUFBS3NDLE1BQVEsU0FHZnRDLEVBQUt5RCxRQUFVbEMsRUFBT3ZCLEVBQUtzQyxPQUV2QnRDLEVBQUswRCxpQkFDUDFELEVBQUszUSxJQUFNMlEsRUFBS3NDLE9BR2J0QyxFQUFLM1EsS0FBUTJRLEVBQUtLLGlCQUNyQkwsRUFBSzNRLElBQU0sU0FHVDJRLEVBQUszUSxNQUNQMlEsRUFBSzJELE1BQVFwQyxFQUFPdkIsRUFBSzNRLE1BRzNCMlEsRUFBS3NPLElBQW9CbmtCLEVBQU82VixFQUFLM1EsTUFBUSxHQUV6QzJRLEVBQUtLLGdCQUFrQjVSLEVBQU82ZixNQUNoQ3RPLEVBQUtzTyxNQUNGdE8sRUFBSzNRLElBQU1rZixHQUFjLElBQU05ZixFQUFPNmYsTUFJekN0TyxFQUFLd0MsVUFDUHhDLEVBQUs0RCxVQUFZckMsRUFBT3ZCLEVBQUt3QyxlQUdSeFcsSUFBbkJnVSxFQUFLNkQsWUFDUDdELEVBQUs2RCxVQUFZLEdBR25CN0QsRUFBS1MsU0FTUCxTQUF5QkEsRUFBVVQsR0FDakMsSUFHSWtQLEVBSEEvZ0IsS0FDQWpFLEVBQVN1VyxFQUFTdlcsT0FDbEJpRCxHQUFTLEVBR2IsT0FBU0EsRUFBUWpELEdBQ2ZnbEIsRUFBWXpPLEVBQVN0VCxHQUNyQmdCLEVBQVNBLEVBQU9JLE9BQ2Q0Z0IsR0FBZ0MsU0FBZEQsRUFBdUJsUCxFQUFPa1AsSUFJcERobEIsRUFBU2lFLEVBQU9qRSxPQUNoQmlELEdBQVMsRUFFVCxPQUFTQSxFQUFRakQsR0FDZmtaLEVBQVlqVixFQUFPaEIsR0FBUTZTLEdBRzdCLE9BQU83UixFQTdCU2loQixDQUFnQnBQLEVBQUtTLGFBQWdCVCxHQUVqREEsRUFBS00sUUFDUDhDLEVBQVlwRCxFQUFLTSxPQUFRN1IsR0FHM0J1UixFQUFLeUMsWUEwQlAsU0FBd0J6QyxHQUN0QixJQUNJcVAsRUFJQXpOLEVBTEEwTixLQUVBeE4sS0FDQUMsS0FDQUMsRUFBVSxFQUVWeFIsRUFBU3dQLEVBQUtTLFNBQ2R2VyxFQUFTc0csRUFBT3RHLE9BQ2hCaUQsR0FBUyxFQUNUc1YsS0FFSixPQUFTdFYsRUFBUWpELEdBR2YrWCxFQUZBTCxFQUFPcFIsRUFBT3JELEdBSVp5VSxFQUFLUyxjQUFnQixVQUFZVCxFQUFLVSxNQUFRLFFBQVVWLEVBQUtVLE9BSTdEdEMsRUFBS3NPLEtBQ1ByTSxFQUFRLE1BQU9qQyxFQUFLc08sS0FHbEJ0TyxFQUFLd0MsU0FDUFAsRUFBUSxVQUFXakMsRUFBS3dDLFNBRzFCdFksRUFBUzRYLEVBQVE1WCxPQUNqQmlELEdBQVMsRUFFVCxPQUFTQSxFQUFRakQsR0FDZnVZLEVBQVl0VixHQUFTMlUsRUFBUTNVLEdBQU8sR0FPdEMsT0FKQWtpQixFQUFhOU4sRUFxRGYsU0FBZ0JPLEVBQVNjLEdBV3ZCLElBVkEsSUFLSVQsRUFDQWpULEVBQ0FtZ0IsRUFDQWhjLEVBUkF3UCxFQUFrQiw4Q0FDbEIwTSxFQUFXLEVBQ1hwaEIsRUFBUyxHQUNUakUsRUFBUzRYLEVBQVE1WCxPQUNqQmlELEdBQVMsSUFNSkEsRUFBUWpELEdBQVEsQ0FZdkIsSUFYQWlZLEVBQVFMLEVBQVEzVSxHQUNoQmtpQixFQUFhbGxCLEVBQU9nWSxHQUVwQmpULEVBREFxZ0IsR0FBWSxFQUdFLElBQVZwaUIsSUFDRmdCLEdBQVV5VSxHQUdaelUsR0FBVXFnQixHQUVIYSxFQUFXbmxCLE9BQVMsR0FBRyxDQUc1QixHQUFjLFFBRmRtSixFQUFRd1AsRUFBZ0JULEtBQUtpTixJQUVULENBQ2xCbGhCLEdBQVVraEIsRUFDVixNQUdGbGhCLEdBQVVraEIsRUFBV3RjLE1BQU0sRUFBR00sRUFBTWxHLE9BQ3BDa2lCLEVBQWFBLEVBQVd0YyxNQUFNTSxFQUFNbEcsTUFBUWtHLEVBQU0sR0FBR25KLFFBRWpEbUosRUFBTSxHQUFHLEtBQU95SSxJQUFhekksRUFBTSxHQUVyQ2xGLEdBQVUyTixHQUFZaFIsT0FBT29XLE9BQU83TixFQUFNLElBQU1uRSxJQUVoRGYsR0FBVWtGLEVBQU0sR0FFWkEsRUFBTSxLQUFPbWIsSUFDZmUsS0FLTnBoQixHQUFVc2dCLEdBR1osT0FBT3RnQixFQXRHYThVLENBQU9SLEVBQWE4TCxLQUFjLEdBRXREeE0sR0FBV21CLFVBQVcsRUFBR2QsS0FJekIsU0FBYzlWLEdBQ1osSUFBSXBDLEVBQ0FpRCxFQUNBK1UsRUFDQTdPLEVBR0osR0FBdUIsSUFBbkJ5TyxFQUFRNVgsT0FBYyxPQUFPLEtBS2pDLEdBSEFtbEIsRUFBV25NLFVBQVluQixFQUFRbUIsWUFDL0I3UCxFQUFRZ2MsRUFBV2pOLEtBQUs5VixJQUd0QixPQUFPLEtBTVQsSUFIQXBDLEVBQVNtSixFQUFNbkosT0FDZmlELEdBQVMsSUFFQUEsRUFBUWpELEdBR2YsUUFBaUI4QixJQUZOcUgsRUFBTWxHLFNBRWdDbkIsSUFBbkJzakIsRUFBUW5pQixHQUFzQixDQUMxRCtVLEVBQU9vTixFQUFRbmlCLEdBQ2YsTUFhSixNQVJvQixpQkFBVCtVLEdBQ1Q3TyxFQUFNakgsS0FBTzhWLEVBQ2I3TyxFQUFNOFAsT0FBU25ELEVBQUt3QyxRQUFTeEMsRUFBS3VDLGtCQUVsQ2xQLEVBQU1qSCxLQUFPLFFBQ2JpSCxFQUFNNk8sS0FBT0EsR0FHUjdPLElBR1QsU0FBUzRPLEVBQVFDLEVBQU1DLEdBQ3JCbU4sRUFBUXROLEdBQVdFLEVBQ25CSixFQUFRNVEsTUFBTWdSLEVBQU1DLElBQ3BCSCxHQUFXLElBQUlQLE9BQU9VLEVBQU1oTyxXQUFhb2EsSUFBYW5NLEtBQUssSUFBSWxZLFFBL0c5Q3dYLENBQWUxQixJQXdLcEMsU0FBU3VCLEVBQU9qVixFQUFPa1YsR0FDckIsT0FBTyxJQUFJQyxPQUNUdFgsRUFBT21DLEdBQ1AsS0FBTzhTLEVBQVNnUCxJQUFrQixJQUFNLEtBQU81TSxFQUFTLElBQU0sS0FLbEUsU0FBU3JYLEVBQU9zUCxHQUNkLE9BQVFBLEdBQU1BLEVBQUd0UCxRQUFXc1AsRUFqUDlCMkosRUFBWWhFLEdBdllaaUMsQ0FBZ0JqQyxHQUVoQixJQUtFLElBSkF1RixFQUFJbEMsWUFBWVMsVUFBWSxFQUM1QmhVLEVBQVMsRUFDVG1FLEVBQVFzUixFQUFJbEMsWUFBWUwsS0FBSzlWLEdBRXRCK0csR0FDTHNULEVBQVFMLEVBQWNoYSxFQUFNeUcsTUFBTTdELEVBQVFtRSxFQUFNbEcsT0FBUWtHLEdBQ3hEbkUsRUFBU21FLEVBQU1sRyxNQUFRd1osRUFDdkJoQyxFQUFJbEMsWUFBWVMsVUFBWWhVLEVBQzVCbUUsRUFBUXNSLEVBQUlsQyxZQUFZTCxLQUFLOVYsR0FNL0IsSUFIQWdhLEVBQWNoYSxFQUFNeUcsTUFBTTdELElBQzFCd1gsRUFBVS9CLEVBRUgrQixFQUFRalksUUFDVGlZLEVBQVFuVixXQUNWbVgsSUFHRmhDLEVBQVVBLEVBQVFqWSxPQUdwQixPQUNFb1YsVUFBV0EsRUFDWHZYLE1BQU91aUIsRUFDUHJNLFNBQVMsRUFDVHBELFNBQVVoTyxFQUNWdVQsSUFBS0EsR0FFUCxNQUFPNkssR0FFUCxJQUEwQyxJQUF0Q0EsRUFBTTNJLFFBQVFuWSxRQUFRLFdBQ3hCLE1BQU04Z0IsRUFHUixPQUFRM0wsVUFBVyxFQUFHckIsU0FBUyxFQUFNbFcsTUFBT21qQixFQUFRbmpCLE9BT3RELFNBQVNpWixFQUFhbFMsR0FDcEIsSUFBSW1TLEVBQVNuUyxFQUFNLEdBQ2ZxYyxFQUFVcmMsRUFBTTZPLEtBc0JwQixPQXBCSXdOLEdBQVdBLEVBQVFoTSxpQkFDckJnTSxFQUFRL0wsTUFSSCxJQUFJbEMsT0FRZ0IrRCxFQVJIcFYsUUFBUSx3QkFBeUIsUUFBUyxNQVc5RHNmLEVBQVFoSyxLQUNWcUosR0FBY3ZKLEdBRVZrSyxFQUFRL0osZUFDVm9KLEdBQWN2SixHQUdoQm1LLEVBQVlqTCxJQUFpQm1LLEdBRXhCYSxFQUFROUosYUFBZ0I4SixFQUFRL0osZUFDbkNvSixFQUFhdkosSUFJakJILEVBQWFxSyxHQUVOQSxFQUFROUosWUFBYyxFQUFJSixFQUFPdGIsT0FHMUMsU0FBUzJiLEVBQVd4UyxHQUNsQixJQUFJbVMsRUFBU25TLEVBQU0sR0FDZnVjLEVBQXFCdGpCLEVBQU15RyxNQUFNTSxFQUFNbEcsT0FDdkMwaUIsRUFxU04sU0FBUzlKLEVBQVUvRixFQUFNd0YsR0FDdkIsR0F5VkosU0FBYzZKLEVBQVk3SixHQUN4QixJQUFJblMsRUFBUWdjLEdBQWNBLEVBQVdqTixLQUFLb0QsR0FDMUMsT0FBT25TLEdBQXlCLElBQWhCQSxFQUFNbEcsTUEzVmhCUCxDQUFLb1QsRUFBSzJELE1BQU82QixHQUFTLENBQzVCLEtBQU94RixFQUFLaUcsWUFBY2pHLEVBQUt2UixRQUM3QnVSLEVBQU9BLEVBQUt2UixPQUdkLE9BQU91UixFQUdULEdBQUlBLEVBQUtLLGVBQ1AsT0FBTzBGLEVBQVUvRixFQUFLdlIsT0FBUStXLEdBL1NsQk8sQ0FBVXBCLEVBQUtpTCxHQUU3QixHQUFLQyxFQUFMLENBSUEsSUFBSTNKLEVBQVN2QixFQUVUdUIsRUFBT1IsS0FDVHFKLEdBQWN2SixHQUVSVSxFQUFPQyxXQUFhRCxFQUFPRSxhQUMvQjJJLEdBQWN2SixHQUdoQm1LLEVBQVlqTCxJQUFpQm1LLEdBRXpCM0ksRUFBT0UsYUFDVDJJLEVBQWF2SixJQUlqQixHQUNNYixFQUFJcFQsV0FDTm1YLElBR0cvRCxFQUFJZSxNQUFTZixFQUFJQyxjQUNwQmYsR0FBYWMsRUFBSWQsV0FHbkJjLEVBQU1BLEVBQUlsVyxhQUNIa1csSUFBUWtMLEVBQVFwaEIsUUFXekIsT0FUSW9oQixFQUFRdlAsU0FFTnVQLEVBQVFuTSxpQkFDVm1NLEVBQVF2UCxPQUFPcUQsTUFBUWtNLEVBQVFsTSxPQUdqQzBCLEVBQWF3SyxFQUFRdlAsU0FHaEI0RixFQUFPQyxVQUFZLEVBQUlYLEVBQU90YixRQUd2QyxTQUFTb2MsRUFBY3dKLEVBQWlCemMsR0FDdEMsSUFDSW1ULEVBREFoQixFQUFTblMsR0FBU0EsRUFBTSxHQU01QixHQUZBMGIsR0FBY2UsT0FFQzlqQixJQUFYd1osRUFFRixPQURBbUssRUFBWWpMLElBQWlCbUssR0FDdEIsRUFRVCxHQUNxQixVQUFuQnhJLEVBQVVqYSxNQUNLLFFBQWZpSCxFQUFNakgsTUFDTmlhLEVBQVVsWixRQUFVa0csRUFBTWxHLE9BQ2YsS0FBWHFZLEVBSUEsT0FEQXVKLEdBQWN6aUIsRUFBTXlHLE1BQU1NLEVBQU1sRyxNQUFPa0csRUFBTWxHLE1BQVEsR0FDOUMsRUFLVCxHQUZBa1osRUFBWWhULEVBRU8sVUFBZkEsRUFBTWpILEtBQ1IsT0FBT21aLEVBQWFsUyxHQUd0QixHQUFtQixRQUFmQSxFQUFNakgsV0FHVUosS0FGbEJ3YSxFQUFZWCxFQUFXeFMsSUFHckIsT0FBT21ULEVBSVgsR0FBbUIsWUFBZm5ULEVBQU1qSCxPQUF1QjhMLEVBRS9CLE1BQU0yVSxHQUNKLG9DQUNBckgsRUFDQWIsRUFBSXBULFdBQWEsYUFtQnJCLE9BRkF3ZCxHQUFjdkosRUFFUEEsRUFBT3RiLE9BSWhCLFNBQVNtYixFQUFhckYsR0FDcEIsSUFBSXpULEVBRUF5VCxFQUFLek8sWUFDUGhGLEVBQU93akIsRUFBTS9QLEVBQUt6TyxlQUloQmhGLElBQ0ZzaUIsRUFBZ0IzZCxLQUFLM0UsR0FDckJ1aUIsRUFBTTVkLEtBQUsyZCxHQUNYQSxFQUFrQnRpQixFQUFLRyxVQUd6QmlZLEVBQU1wYSxPQUFPK2EsT0FBT3RGLEdBQU92UixRQUFTbkMsTUFBT3FZLEtBSTdDLFNBQVNELElBQ1AsSUFBSXZXLEVBQVN3VyxFQUFJQyxZQU1uQixXQUNFLElBQ0lySyxFQURBc0ssRUFBc0MsaUJBQXBCRixFQUFJQyxZQUkxQixHQUFJQyxJQUFheEcsR0FBVXNHLEVBQUlDLGFBQzdCLE9BQU82SyxFQUFRVixNQUlmeFUsRUFERXNLLEVBQ1NtSixHQUNUckosRUFBSUMsWUFDSm1LLEdBQ0EsRUFDQWpCLEVBQ0EvSSxFQUFjSixFQUFJQyxjQUdUcUosR0FBY2MsR0FDdkJILE9BQW1DLElBQTNCakssRUFBSUMsWUFBWTFhLFlBQWU4QixFQUFZMlksRUFBSUMsWUFDdkRrSixPQUFRQSxJQU1aLElBQUt2VCxFQUFTNkUsU0FDWixPQUFRNFEsRUFBVWpCLElBT2hCcEssRUFBSWQsVUFBWSxJQUNsQkEsR0FBYXRKLEVBQVNzSixXQUdwQmdCLElBQ0ZFLEVBQWNKLEVBQUlDLGFBQWVySyxFQUFTb0ssS0FHNUMsT0FBUW9MLEVBQU14VixFQUFTNkUsU0FBVTdFLEVBQVNqTyxPQUFPLElBaERsQjJZLEdBb0RqQyxXQUNFLElBQ0kvQixFQUNBbkMsRUFDQXhVLEVBQ0EwakIsRUFKQTFmLEtBTUosSUFBS29VLEVBQUlyQixTQUNQLE9BQU9tTSxFQUFRVixFQUFZeGUsR0FHN0IyUyxFQUFZLEVBRVp5QixFQUFJcEIsVUFBVUwsVUFBWSxFQUUxQm5DLEVBQVU0RCxFQUFJcEIsVUFBVW5CLEtBQUsyTSxHQUU3QixLQUFPaE8sR0FDTDBPLEVBQVFWLEVBQVdoYyxNQUFNbVEsRUFBV25DLEVBQVE1VCxPQUFRb0QsSUFFcEQwZixFQUFXL0wsRUFBYVMsRUFBSzVELEtBRzNCOEMsR0FBYW9NLEVBQVMsR0FFdEIxakIsRUFBT3dqQixFQUFNRSxFQUFTLE9BRXRCMWYsRUFBTVcsS0FBSzNFLEdBRVhrakIsRUFBUTFPLEVBQVEsR0FBSXhVLEVBQUtHLFdBRXpCK2lCLEVBQVExTyxFQUFRLEdBQUl4USxHQUd0QjJTLEVBQVl5QixFQUFJcEIsVUFBVUwsVUFDMUJuQyxFQUFVNEQsRUFBSXBCLFVBQVVuQixLQUFLMk0sR0FLL0IsT0FGQVUsRUFBUVYsRUFBV2hjLE1BQU1tUSxHQUFZM1MsR0FFOUJBLEVBNUYrQzZVLEdBRXRELE9BREEySixFQUFhLEdBQ041Z0IsRUE4RlQsU0FBU3doQixFQUFZTyxFQUFVM2YsR0FLN0IsSUFKQSxJQUVJNGYsRUFGQWptQixFQUFTZ21CLEVBQVNobUIsT0FDbEJpRCxHQUFTLElBR0pBLEVBQVFqRCxHQUdNLFVBRnJCaW1CLEVBQVVELEVBQVMvaUIsSUFFUGYsS0FDVnFqQixFQUFRVSxFQUFRN2pCLE1BQU9pRSxHQUV2QkEsRUFBTVcsS0FBS2lmLEdBTWpCLFNBQVNWLEVBQVFuakIsRUFBT2lFLEdBQ3RCLElBQUlxQixFQVlKLE9BVkl0RixLQUNGc0YsRUFBT3JCLEVBQU1BLEVBQU1yRyxPQUFTLEtBRUYsU0FBZDBILEVBQUt4RixLQUNmd0YsRUFBS3RGLE9BQVNBLEVBRWRpRSxFQUFNVyxLQUFLOGUsRUFBVTFqQixLQUlsQmlFLEVBSVQsU0FBU3lmLEVBQVUxakIsR0FDakIsT0FBUUYsS0FBTSxPQUFRRSxNQUFPQSxHQUkvQixTQUFTeWpCLEVBQU0zZSxFQUFNbUQsRUFBVWlRLEdBQzdCLE9BQ0VwWSxLQUFNLFVBQ040SyxRQUFTLE9BQ1QxRixZQUNFQyxZQUFhaVQsRUFBVyxHQUFLc0osR0FBVTFjLElBRXpDMUUsU0FBVTZILEdBS2QsU0FBUzJQLEVBQWFsRSxFQUFNc0QsR0FDMUIsSUFBSXZDLEVBQVV1QyxFQUFTLEdBTXZCLE9BSklsRSxFQUFTZ1AsTUFDWHJOLEVBQVVBLEVBQVE3QixlQUdidFAsR0FBSXRGLEtBQUswVixFQUFLc0QsU0FBVXZDLElBQVlmLEVBQUtzRCxTQUFTdkMsR0FtQjNELFNBQVMySCxJQUVQbUcsRUFBa0JDLEVBQU1wRyxPQUFTaGMsR0E4UnJDLFNBQVN5aUIsR0FBa0JuUCxHQUN6QixJQUFJOVYsRUFDQWlELEVBQ0E4UyxFQUNBOVIsRUFFSixHQUFJNlIsRUFBS0MsV0FBYUQsRUFBS3FPLElBQW9CLENBTTdDLElBSkFua0IsR0FEQStWLEVBQVdELEVBQUtDLFVBQ0UvVixPQUNsQmlELEdBQVMsRUFDVGdCLE9BRVNoQixFQUFRakQsR0FDZmlFLEVBQU9oQixHQUFTa1MsR0FBUVcsR0FBT0MsU0FBVSxNQUFPQSxFQUFTOVMsSUFHM0Q2UyxFQUFLcU8sSUFBcUJsZ0IsRUFJNUIsT0FBSTZSLEVBQUtFLGdCQUF3QkYsRUFBS0UsZ0JBU3hDLFNBQVNFLEVBQW1CSixHQUMxQixRQUFPQSxJQUFPQSxFQUFLSyxnQkFBa0JELEVBQW1CSixFQUFLTSxTQVB6REYsQ0FBbUJKLElBQ2JYLEdBQVFXLEdBQU9NLE9BQVFOLEVBQUtNLE9BQVNqQixHQUFRVyxFQUFLTSxRQUFVLFNBRTlETixHQVFWLFNBQVM1SixHQUFVakksR0FDakIsT0FDRTBWLFVBQVcxVixFQUFPMFYsV0FBYSxFQUMvQnpFLFNBQVVqUixFQUFPaVIsVUFBWSxLQUM3QjlTLE1BQU82QixFQUFPN0IsV0FXbEIsU0FBU21hLEdBQVlyVixHQUduQixPQUZBQSxFQUFPQSxFQUFLOE4sY0FFTGIsR0FBVWpOLElBQVNpTixHQUFVQyxHQUFRbE4sSUN4NUI5QyxPQ0lpQnljLEdDREYsU0FBU3VDLElBQVNDLFFBQUNBLEVBQU94YyxRQUFFQSxPQUN6QyxPQUFPeWMsR0FBTzloQixFQUFNOGhCLEVBQUssT0FBUXppQixHQUVqQyxTQUFTQSxFQUFRdEIsR0FDZixJQUFJNkcsS0FBQ0EsRUFBSXZDLEtBQUVBLEdBQVF0RSxHQUdoQjZHLEdBQ0FpZCxJQUFzQyxJQUEzQkEsRUFBUTNoQixRQUFRMEUsSUFDM0JTLElBQXNDLElBQTNCQSxFQUFRbkYsUUFBUTBFLEtBS3pCdkMsSUFDSEEsS0FDQXRFLEVBQUtzRSxLQUFPQSxHQUdUQSxFQUFLb0IsY0FDUnBCLEVBQUtvQixnQkFHUHBCLEVBQUsrSCxVQUFZaVYsR0FBSTlKLFVBQVUzUSxFQUFNN0csRUFBS0QsT0FBT0EsTUFDakR1RSxFQUFLb0IsWUFBWVYsV0FDZixVQUNJVixFQUFLb0IsWUFBWVYsY0FDckIsWUFBYzZCLFFEeEJoQnFXLGlCQUFpQixLRE5KLFNBQVN4TCxHQUd4QixJQUFJOEwsRUFBc0IseUNBWXRCd0csRUFBVUMsa05BNllWQyxFQUFVLGdDQUdWQyxFQUFVelMsRUFBS29CLFFBQVFwQixFQUFLNE0sYUFHNUI4RixHQUNGcGYsVUFBVyxTQUNYK1EsTUFBTyxRQUFTalQsSUFBSyxNQUNyQm9SLFdBQVk2QixNQUFPLFFBSWpCc08sR0FDRnRPLE1BQU8sSUFBS2pULElBQUssSUFBS3NXLGNBQWMsRUFBTVMsWUFBWSxFQUN0RDNGLFdBRUlsUCxVQUFXLFNBQ1grUSxNQUFPLHNDQU1UdU8sRUFBVzVTLEVBQUtvQixRQUFRcEIsRUFBS3lNLHFCQW9EakMsT0FDRTlKLGtCQUFrQixFQUNsQjRDLFFBQVN1RyxFQUNUekcsVUFDRXZDLFFBQVN3UCxFQUNUTyxTQWxXSkMsaWtVQW1XSUMsTUExSkpDLHlwWkEySkk3a0IsS0F2Rko4a0IsKzVIQXdGSUMsUUFBU1YsR0FFWGhRLFdBMURBbFAsVUFBVyxPQUNYaVMsUUFBU3VHLEVBQ1R6SCxNQUFPLE1BQU9qVCxJQUFLLElBQ25CaVUsVUFBVzhOLGVBQWdCYixFQS9aWGMsc1VBZ2FoQjVRLFVBQ0VvUSxLQVlGdGYsVUFBVyxXQUNYaVMsUUFBU3VHLEVBQ1Q5SixXQUNHcUMsTUFBTyxvQkFBcUJqVCxJQUFLLE1BQU9pVSxTQUFVLHNCQUNsRGhCLE1BQU8sOEJBQStCZ0IsU0FBVSxnQ0FFbkQ3QyxXQUVJNkIsTUFBTyxNQUFPalQsSUFBSyxNQUFPNFcsWUFBYSxFQUN2Q3hGLFdBRUlsUCxVQUFXLFNBQ1hpUyxRQUFTdUcsRUFDVHpILE1BQU95SCxFQUFxQjFhLElBQUssSUFBSytXLFlBQVksRUFBTS9GLGdCQUFnQixFQUN4RWlELFVBQ0V2QyxRQUFTLE9BQ1RvUSxRQUFTVixHQUVYaFEsVUFDRWlRLEVBQ0FDLEVBQ0FDLElBR0pDLElBR0o1UyxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUFhNUksTUFBT3lILE1BaUJ0QzhHLEdBbERGdGYsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxNQUFPK1csWUFBWSxHQW1EbENzSyxFQUNBQyxFQUNBQyxTQ2xmRm5ILGlCQUFpQixPRVBKLFNBQVN4TCxHQUN0QixJQUFJNkQsRUFDaUIseUJBRGpCQSxFQUVpQixtQkFzQmpCd1AsRUFBY3JULEVBQUt1TSxRQUFRLElBQUssS0FzQmhDK0csR0FDQWhnQixVQUFXLFlBQ1grUSxNQUFPUixFQUEwQixhQUdyQyxPQUNFVSxRQUFTVixFQUNUd0IsVUEvQ0UsUUFDQSxNQUNBLE9BQ0EsS0FDQSxPQUNBLE1BQ0EsUUFDQSxTQUNBLFNBQ0EsT0FDQSxLQUNBLE9BQ0EsUUFDQSxLQUNBLFFBQ0EsT0FnQ2lCbFksS0FBSyxLQUN4QnFWLFVBQ0k4USxFQUNBRCxHQTdCRi9mLFVBQVcsU0FDWCtRLE1BQU8sdUNBSVAvUSxVQUFXLFNBQ1grUSxNQUFPLHVDQUlQL1EsVUFBVyxTQUNYK1EsTUFBTyxnREFJUC9RLFVBQVcsU0FDWCtRLE1BQU8sU0FrQkxyRSxFQUFLcU0sa0JBQ0xyTSxFQUFLNE0sbUJGdkRYcEIsaUJBQ0YsWUdUZSxTQUFTeEwsR0FFeEIsSUFBSXVULEdBQ0YsTUFBTyxPQUFRLE9BQVEsTUFBTyxTQUFVLFVBQVcsVUFBVyxRQUFTLFNBRXpFLE9BQ0UvUSxXQUdJbFAsVUFBVyxTQUNYK1EsTUFBTyw0REFDUHVCLFVBQVUsSUFJVnRTLFVBQVcsU0FDWCtRLE1BQU8sYUFDUHVCLFVBQVcsSUFJWHRTLFVBQVcsU0FDWCtRLE1BQU8sS0FBT2tQLEVBQVdwbUIsS0FBSyxLQUFPLElBQUtpRSxJQUFLLElBQy9DaVUsU0FBVWtPLEVBQVdwbUIsS0FBSyxLQUMxQm9YLFFBQVMsTUFDVHFCLFVBQVcsRUFDWHBELFdBQ0U2QixNQUFPLGtCQUNQdUIsVUFBVSxNQUtadFMsVUFBVyxTQUlYK1EsTUFBTyxvQkFDUEUsUUFBUyxNQUNUcUIsVUFBVyxJQUdYdFMsVUFBVyxTQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxLQUNsQm1ULFFBQVMsTUFDVHFCLFVBQVcsSUFJWHRTLFVBQVcsU0FDWCtRLE1BQU8seUJBQTJCalQsSUFBSyxJQUN2Q21ULFFBQVMsTUFDVHFCLFVBQVcsSUFJWHRTLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJtVCxRQUFTLE1BQ1RxQixVQUFXLFVIL0NmNEYsaUJBQ0YsZUliZSxTQUFTeEwsR0FDeEIsSUFHSXdULEdBQ0ZsZ0IsVUFBVyxXQUNYK1EsTUFBTyxTQUFValQsSUFMSiwyQkFNYndVLFVBQVcsSUFHYixPQUNFdkYsU0FBVSxNQUNWZ0YsVUFDRXZDLFFBQVMsbVVBS1RvUSxRQUFTLDZCQUVYMVEsVUFDRXhDLEVBQUtvTSxpQkFDTHBNLEVBQUtxTSxrQkFDTHJNLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTDFNLEVBQUs2TSxlQUVIdlosVUFBVyxRQUNYOFEsY0FBZSxVQUFXaFQsSUFBSyxJQUMvQm9SLFVBQVd4QyxFQUFLaU4sY0FHaEIzWixVQUFXLFFBQ1g4USxjQUFlLGtCQUFtQmhULElBQUssSUFBSytXLFlBQVksRUFDeEQzRixXQUVJNEIsY0FBZSxzQkFFakJwRSxFQUFLaU4sY0FJUDNaLFVBQVcsT0FDWDhRLGNBQWUsaUJBQWtCaFQsSUFBSyxJQUN0Q2lVLFVBQVc4TixlQUFnQixvQkFHM0I3ZixVQUFXLFdBQ1g4USxjQUFlLFdBQVloVCxJQUFLLE9BQVErVyxZQUFZLEVBQ3BENUQsUUFBUyxNQUNUL0IsVUFDRXhDLEVBQUtpTixZQUVIM1osVUFBVyxTQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxNQUNuQm9SLFVBQ0V4QyxFQUFLb00saUJBQ0xwTSxFQUFLcU0sa0JBQ0xyTSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0w4RyxLQUlGblAsTUFBTyx5Q0FJYnJFLEVBQUttTixjQUVQNUksUUFBUyxVSnREVGlILGlCQUFpQixNS05yQixTQUFTeEwsR0FLTCxJQVdJeVQsRUFBVyw0QkFNWGIsRUFBVzVTLEVBQUt1TSxRQUFRLEtBQU0sS0FLOUJtSCxHQUlBclAsTUFBTyxZQUFhalQsSUFBSyxzQkFHekJtVCxRQWZZLFlBZ0JaL0IsV0FJUTRCLGNBQWUsMEJBQ2Y0RCxZQUFZLElBSVoxVSxVQUFXLFVBQ1g4USxjQUFlLHlFQUdmOVEsVUFBVyxPQUNYK1EsTUFBT29QLEVBQ1B6TCxZQUFZLEVBQ1pwQyxVQUFXLEtBS3ZCLE9BQ0lqRCxrQkFBa0IsRUFDbEIwQyxVQUNJdkMsUUFDSSw0YkFPSm9RLFFBQ0ksY0FFUjFRLFVBQ0lvUSxHQUdJdGYsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFdBQVk2QixNQUFPLEtBQU11QixVQUFXLE1BS3BDdFMsVUFBVyxTQUNYK1EsTUFBTyxRQUlQL1EsVUFBVyxTQUNYK1EsTUExRUksOEdBMkVKdUIsVUFBVyxJQUlYdFMsVUFBVyxTQUNYK1EsTUFBTyxJQUFNb1AsSUFJYm5nQixVQUFXLFFBQ1grUSxNQUFPLDhEQUErRGpULElBQUssU0FDM0VpVSxTQUFVLGVBQ1ZxQyxjQUFjLEVBQ2RTLFlBQVksRUFDWjVELFFBbkZJLGNBd0ZKRixNQUFPLHlEQUEwRGpULElBQUssc0NBQ3RFaVUsU0FBVSx1REFHVnNDLGFBQWEsRUFDYm5GLFVBRUlvUSxHQUdJdGYsVUFBVyxRQUNYK1EsTUFBTyw0Q0FDUGpULElBQUssZUFDTHNXLGNBQWMsRUFDZFMsWUFBWSxFQUNaNUQsUUF2R0osYUEyR0FtUCxHQUdJcGdCLFVBQVcsT0FDWCtRLE1BQU8sZ0JBQWlCalQsSUFBSyxhQUM3QmlVLFNBQVUsU0FDVnFDLGNBQWMsRUFDZFMsWUFBWSxFQUVaSCxZQUFZLEVBQ1p6RCxRQXJISixnQkE2SEpqUixVQUFXLE9BQ1grUSxNQUFPLG9CQUFxQmpULElBQUssT0FDakNpVSxTQUFVLE9BQ1ZxQyxjQUFjLEVBQ2RuRCxRQWpJSSxhQXFJUm1QLFNMakpSbEksaUJBQ0YsY01sQmUsU0FBU3hMLEdBQ3hCLElBQUkyVCxHQUNGcmdCLFVBQVcsV0FDWCtRLE1BQU8sMkhBR0x1UCxHQUNGdGdCLFVBQVcsU0FDWCtRLE1BQU8sa0JBR0x3UCxHQUNGdmdCLFVBQVcsVUFDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUFZbVIsRUFBaUJDLElBTS9CLE9BSEFELEVBQWdCblIsVUFBYXFSLEdBQzdCRCxFQUFpQnBSLFVBQWFxUixJQUc1QnhULFNBQVcsT0FFWGdGLFNBQ0UsMlNBTUZkLFFBQVMscURBRVQvQixXQUVJbFAsVUFBVyxTQUNYK1EsTUFBTyxJQUFNalQsSUFBSyxJQUNsQm1ULFFBQVMsTUFDVC9CLFVBQVl4QyxFQUFLbU0sa0JBQ2pCdkcsVUFBVyxJQUlYdFMsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm1ULFFBQVMsTUFDVC9CLFVBQVl4QyxFQUFLbU0sa0JBQ2pCdkcsVUFBVyxJQUtYdFMsVUFBVyxTQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxPQUdyQjRPLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxzQkFHSHRJLGNBQWUsc0JBQXVCaFQsSUFBSyxJQUMzQ21ULFFBQVMsVUFDVC9CLFdBRUlsUCxVQUFXLFNBQ1grUSxNQUFPLG9CQU1YRCxjQUFlLFFBQVNoVCxJQUFLLElBQzdCbVQsUUFBUyxVQUNUL0IsV0FFSWxQLFVBQVcsU0FDWCtRLE1BQU8sZ0JBQ1A3QixXQUVJNkIsTUFBTyxXQUNQN0IsV0FFSWxQLFVBQVcsU0FDWCtRLE1BQU8sdUJBU3JCc1AsRUFDQUMsR0FHRXRnQixVQUFXLFVBQ1grUSxNQUFPLHlCQUlQL1EsVUFBVyxTQUNYK1EsTUFBTyx1Rk5oRlhtSCxpQkFBaUIsU09yQkosU0FBU3hMLEdBQ3hCLElBQUk4VCxHQUFVeGdCLFVBQVcsU0FBVStRLE1BQU8sY0FDMUMsT0FDRWhFLFNBQVUsY0FDVnNDLGtCQUFrQixFQUNsQkgsVUFDRXhDLEVBQUsyTSxtQkFDSnJaLFVBQVcsVUFBVytRLE1BQU8sTUFBT2pULElBQUssTUFFeENrQyxVQUFXLFlBQ1grUSxNQUFPLE1BQ1B1QixVQUFXLEVBR1hQLFVBQ0UwTyxTQUNFLDhKQUlKMVIsUUFDRWpSLElBQUssSUFDTHdVLFVBQVcsRUFDWFAsVUFDRTZOLFFBQVMsY0FFWDFRLFdBRUlsUCxVQUFXLE9BQ1grUSxNQUFPLFNBQVVqVCxJQUFLLFNBR3RCa0MsVUFBVyxXQUNYK1EsTUFBTyxZQUFhalQsSUFBSyxNQUN6Qm9SLFVBQVcsT0FBUXNSLElBRXJCQSxFQUNBOVQsRUFBS3FNLHNCQUtiOUgsUUFBUyxXUHBCVGlILGlCQUNGLGNRdkJlLFNBQVN4TCxHQUN4QixJQUFJZ1UsRUFBU2hVLEVBQUtvQixRQUFRcEIsRUFBS3FNLG1CQUFvQjlILFFBQVMsS0FDeEQwUCxHQUNGM2dCLFVBQVcsU0FDWCtRLE1BQU8sTUFBT2pULElBQUssTUFDbkJvUixVQUFXLE9BQVF4QyxFQUFLNk0sY0FBZW1ILElBRXJDRSxFQUFpQmxVLEVBQUt1TSxRQUFRLEtBQU0sS0FRcENxRyxHQUNGc0IsRUFSbUJsVSxFQUFLdU0sUUFDeEIsU0FDQSxVQUVFL0osVUFBVyxPQUFRMFIsS0FNckJsVSxFQUFLMk0sbUJBR1AsT0FDRXRNLFNBQVUsYUFDVmdGLFVBQ0V2QyxRQUNFLDBpQkFVRm9RLFFBQ0UsbUVBQ0ZMLFNBQ0Usc1VBUUpyUSxVQUNFd1IsRUFDQWhVLEVBQUs2TSxlQUVIdlosVUFBVyxXQUNYK1EsTUFDRSxtY0FXRi9RLFVBQVcsVUFDWCtRLE1BQ0UsbUVBR0YvUSxVQUFXLFVBQ1grUSxNQUNFLHNTQU9GRCxjQUFlLEtBQ2ZHLFFBQVMsWUFDVC9CLFVBQVd4QyxFQUFLa04sc0JBQXVCK0csS0FFekMzakIsT0FBT3NpQixHQUNUck8sUUFBUyx3QlJ4RFRpSCxpQkFBaUIsU1MxQkosU0FBU3hMLEdBQ3hCLElBQUk2TCxFQUFXLHlCQUNYc0ksR0FDRnJSLFFBQ0UsMERBQ0ZvUSxRQUNFLHNIQUNGTCxTQUNFLHdpQ0FpQkFpQixHQUNGeGdCLFVBQVcsU0FDWDBPLFdBQ0lxQyxNQUFPLG9CQUNQQSxNQUFPLHFCQUNQQSxNQUFPckUsRUFBS2dNLGNBRWhCcEcsVUFBVyxHQUVUd08sR0FDRjlnQixVQUFXLFFBQ1grUSxNQUFPLFNBQVVqVCxJQUFLLE1BQ3RCaVUsU0FBVThPLEVBQ1YzUixhQUVFNlIsR0FDRi9nQixVQUFXLFNBQ1grUSxNQUFPLElBQUtqVCxJQUFLLElBQ2pCb1IsVUFDRXhDLEVBQUttTSxpQkFDTGlJLElBR0pBLEVBQU01UixVQUNKeEMsRUFBS29NLGlCQUNMcE0sRUFBS3FNLGtCQUNMZ0ksRUFDQVAsRUFDQTlULEVBQUtnTixhQUVQLElBQUlzSCxFQUFrQkYsRUFBTTVSLFNBQVNsUyxRQUNuQzBQLEVBQUswTSxxQkFDTDFNLEVBQUt5TSxzQkFHUCxPQUNFcE0sU0FBVSxVQUNWZ0YsU0FBVThPLEVBQ1YzUixVQUNFeEMsRUFBS29NLGlCQUNMcE0sRUFBS3FNLGtCQUNMZ0ksRUFDQXJVLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxzQkE5Q1BwWixVQUFXLFNBQ1grUSxNQUFPLDRHQStDTHlQLEdBRUV6UCxNQUFPLFVBQVd1QixVQUFXLEVBQzdCcEQsV0FFSTZCLE1BQU93SCxFQUFXLFFBQVNsRSxhQUFhLEVBQ3hDL0IsVUFBVyxFQUNYcEQsV0FBWWxQLFVBQVcsT0FBUStRLE1BQU93SCxFQUFVakcsVUFBVyxRQUsvRHZCLE1BQU8sSUFBTXJFLEVBQUtrTSxlQUFpQix1QkFDbkM3RyxTQUFVLFNBQ1Y3QyxVQUNFeEMsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMMU0sRUFBS2dOLGFBRUgxWixVQUFXLFdBQ1grUSxNQUFPLGNBQWdCd0gsRUFBVyxVQUFXbEUsYUFBYSxFQUMxRHZXLElBQUssU0FDTG9SLFdBRUlsUCxVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBT3dILElBR1B4SCxNQUFPLFlBR1BBLE1BQU8sS0FBTWpULElBQUssS0FDbEJzVyxjQUFjLEVBQU1TLFlBQVksRUFDaEM5QyxTQUFVOE8sRUFDVjNSLFNBQVU4UixRQU90QjFPLFVBQVcsSUFHWHRTLFVBQVcsV0FDWDhRLGNBQWUsV0FBWWhULElBQUssS0FBTStXLFlBQVksRUFDbEQzRixVQUNFeEMsRUFBS29CLFFBQVFwQixFQUFLaU4sWUFBYTVJLE1BQU93SCxLQUVwQ3ZZLFVBQVcsU0FDWCtRLE1BQU8sS0FBTWpULElBQUssS0FDbEJzVyxjQUFjLEVBQ2RTLFlBQVksRUFDWjNGLFNBQVU4UixJQUdkL1AsUUFBUyxTQUdURixNQUFPLFdBR1hFLFFBQVMsZVQzR1RpSCxpQkFBaUIsTVUzQkosU0FBU3hMLEdBQ3hCLElBQUl1VSxHQUNGamhCLFVBQVcsVUFDWCtRLE1BQU8sc0JBTUxxTyxHQUNGcGYsVUFBVyxTQUNYME8sV0FFSXFDLE1BQU8sY0FBZWpULElBQUssSUFDM0JtVCxRQUFTLE1BQ1QvQixVQUFXeEMsRUFBS21NLG9CQUdoQjlILE1BQU8sc0VBQTZDalQsSUFBSyxJQUN6RG1ULFFBQVMsTUFFVEYsTUFBTyxxREFJVG9PLEdBQ0ZuZixVQUFXLFNBQ1gwTyxXQUNJcUMsTUFBTyxrQkFDUEEsTUFBTyxvRUFDUEEsTUFBTyx3RkFFWHVCLFVBQVcsR0FHVDRPLEdBQ0ZsaEIsVUFBVyxPQUNYK1EsTUFBTyxlQUFnQmpULElBQUssSUFDNUJpVSxVQUNFOE4sZUFDRSxrRkFHSjNRLFdBRUk2QixNQUFPLE9BQVF1QixVQUFXLEdBRTVCNUYsRUFBS29CLFFBQVFzUixHQUFVcGYsVUFBVyxpQkFFaENBLFVBQVcsY0FDWCtRLE1BQU8sWUFBYWpULElBQUssSUFDekJtVCxRQUFTLE9BRVh2RSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0sdUJBSUwrSCxFQUFpQnpVLEVBQUs2TCxTQUFXLFVBRWpDNkksR0FDRjVSLFFBQVMsZ3dCQVlUK1AsU0FBVSwyd0JBU1ZLLFFBQVMsMkJBR1B5QixHQUNGSixFQUNBdlUsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMK0YsRUFDQUMsR0FHRixPQUNFclMsU0FBVSxJQUFLLEtBQU0sSUFBSyxNQUFPLE1BQU8sTUFBTyxLQUFNLE1BQU8sT0FDNURnRixTQUFVcVAsRUFDVm5RLFFBQVMsS0FDVC9CLFNBQVVtUyxFQUFvQnJrQixRQUM1QmtrQixHQUVFblEsTUFBTyxtSkFBb0pqVCxJQUFLLElBQ2hLaVUsU0FBVXFQLEVBQ1ZsUyxVQUFXLE9BQVErUixLQUduQmxRLE1BQU9yRSxFQUFLNkwsU0FBVyxLQUN2QnhHLFNBQVVxUCxJQU1WMVMsV0FDR3FDLE1BQU8sSUFBS2pULElBQUssTUFDakJpVCxNQUFPLEtBQU1qVCxJQUFLLE9BQ2xCZ1QsY0FBZSx3QkFBeUJoVCxJQUFLLE1BRWhEaVUsU0FBVXFQLEVBQ1ZsUyxTQUFVbVMsRUFBb0Jya0IsU0FFMUIrVCxNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCaVUsU0FBVXFQLEVBQ1ZsUyxTQUFVbVMsRUFBb0Jya0IsUUFBUSxTQUN0Q3NWLFVBQVcsS0FHZkEsVUFBVyxJQUdYdFMsVUFBVyxXQUNYK1EsTUFBTyxJQUFNckUsRUFBSzZMLFNBQVcsZUFBaUI0SSxFQUM5QzlNLGFBQWEsRUFBTXZXLElBQUssUUFDeEIrVyxZQUFZLEVBQ1o5QyxTQUFVcVAsRUFDVm5RLFFBQVMsYUFDVC9CLFdBRUk2QixNQUFPb1EsRUFBZ0I5TSxhQUFhLEVBQ3BDbkYsVUFBV3hDLEVBQUtpTixZQUNoQnJILFVBQVcsSUFHWHRTLFVBQVcsU0FDWCtRLE1BQU8sS0FBTWpULElBQUssS0FDbEJpVSxTQUFVcVAsRUFDVjlPLFVBQVcsRUFDWHBELFVBQ0V4QyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0xnRyxFQUNBRCxFQUNBOEIsR0FHRWxRLE1BQU8sS0FBTWpULElBQUssS0FDbEJpVSxTQUFVcVAsRUFDVjlPLFVBQVcsRUFDWHBELFVBQ0UsT0FDQXhDLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTGdHLEVBQ0FELEVBQ0E4QixNQUtSdlUsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMOEgsS0FJRmxoQixVQUFXLFFBQ1g4USxjQUFlLGVBQWdCaFQsSUFBSyxRQUNwQ29SLFdBQ0c2QixNQUFPLElBQUtqVCxJQUFLLElBQUtvUixVQUFXLFNBQ2xDeEMsRUFBS2lOLGVBSVh0YyxTQUNFaWtCLGFBQWNKLEVBQ2RLLFFBQVNuQyxFQUNUck4sU0FBVXFQLFNWN0pabEosaUJBQWlCLFVXNUJKLFNBQVN4TCxHQUV6QixJQUFJOFUsRUFFRywyQkFGSEEsRUFJRywyeEdBSkhBLEVBK0VHLHFOQU9GQyxFQUFVL1UsRUFBS3dJLFlBQVksT0FBT2lELGdCQUVsQ3VKLEVBQU1ELEVBQVExUCxTQU1sQixPQUpBMlAsRUFBSWxTLFNBQVcsSUFBTWdTLEVBQ3JCRSxFQUFJOUIsU0FBVyxJQUFNNEIsRUFDckJFLEVBQUluQyxVQUFZLElBQU1pQyxFQUVmQyxPWG5FTHZKLGlCQUFpQixTWTdCSixTQUFTeEwsR0FFeEIsT0FDRTJDLGtCQUFrQixFQUNsQnRDLFNBQVUsT0FDVmtGLFFBQVMsT0FBU3ZGLEVBQUs2TCxTQUN2QnhHLFVBQ0U0UCxLQUVFLDZ0QkFHRnBDLFNBQ0UsMjFCQW1CSnJRLFdBRUlsUCxVQUFXLFVBQ1grUSxNQUFPLHN0QkFpQlBqVCxJQUFLLE9BRVA0TyxFQUFLdU0sUUFBUSxPQUFRLEtBQU0zRyxVQUFXLElBQ3RDNUYsRUFBSzBNLHFCQUNMMU0sRUFBS3FNLG1CQUVIL1ksVUFBVyxTQUNYK1EsTUFBTyxJQUNQalQsSUFBSyxXQUNMd1UsVUFBVyxJQUdYdFMsVUFBVyxRQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxNQUNuQm1ULFFBQVMsTUFDVHFCLFVBQVcsSUFHWHRTLFVBQVcsU0FDWDBPLFdBQ0txQyxNQUFPLHNCQUNQQSxNQUFPLGtCQUNQQSxNQUFPLGNBQ1BBLE1BQU8sWUFFWnVCLFVBQVcsSUFHWHRTLFVBQVcsU0FDWDBPLFdBQ0txQyxNQUFPLGtDQUNQQSxNQUFPLHVDQUNQQSxNQUFPLGFBRVp1QixVQUFXLFVaeERmNEYsaUJBQWlCLE1hOUJKLFNBQVN4TCxHQUN4QixJQUNJa1YsR0FDRjlTLGdCQUFnQixFQUNoQm1DLFFBQVMsSUFDVHFCLFVBQVcsRUFDWHBELFdBRUlsUCxVQUFXLE9BQ1grUSxNQVJhLHFCQVNidUIsVUFBVyxJQUdYdkIsTUFBTyxPQUNQdUIsVUFBVyxFQUNYcEQsV0FFSWxQLFVBQVcsU0FDWDBVLFlBQVksRUFDWmhHLFdBQ0dxQyxNQUFPLElBQUtqVCxJQUFLLE1BQ2pCaVQsTUFBTyxJQUFLalQsSUFBSyxNQUNqQmlULE1BQU8sc0JBT3BCLE9BQ0VoRSxTQUFVLE9BQVEsUUFBUyxNQUFPLE9BQVEsTUFBTyxNQUFPLE1BQU8sUUFBUyxNQUFPLE9BQy9Fc0Msa0JBQWtCLEVBQ2xCSCxXQUVJbFAsVUFBVyxPQUNYK1EsTUFBTyxZQUFhalQsSUFBSyxJQUN6QndVLFVBQVcsR0FDWHBELFdBQVk2QixNQUFPLE1BQU9qVCxJQUFLLFNBRWpDNE8sRUFBS3VNLFFBQ0gsVUFDQSxVQUVFM0csVUFBVyxNQUlidkIsTUFBTyxrQkFBbUJqVCxJQUFLLFVBQy9Cd1UsVUFBVyxLQUdYdFMsVUFBVyxPQUNYK1EsTUFBTyxTQUFValQsSUFBSyxNQUFPd1UsVUFBVyxLQUd4Q3ZCLE1BQU8sWUFBYWpULElBQUssTUFDekJ1VixZQUFhLE1BQ2JuRSxXQUdHNkIsTUFBTyxPQUFRalQsSUFBSyxPQUFRcVcsTUFBTSxJQUNsQ3BELE1BQU8sS0FBTWpULElBQUssSUFBS3FXLE1BQU0sSUFDN0JwRCxNQUFPLEtBQU9qVCxJQUFLLElBQU1xVyxNQUFNLEdBQ2hDekgsRUFBS29CLFFBQVFwQixFQUFLb00sa0JBQW1CN0gsUUFBUyxLQUFNalIsVUFBVyxLQUFNa1AsU0FBVSxLQUFNaUYsTUFBTSxJQUMzRnpILEVBQUtvQixRQUFRcEIsRUFBS3FNLG1CQUFvQjlILFFBQVMsS0FBTWpSLFVBQVcsS0FBTWtQLFNBQVUsS0FBTWlGLE1BQU0sT0FJOUZuVSxVQUFXLE1BT1grUSxNQUFPLGtCQUFtQmpULElBQUssSUFDL0JpVSxVQUFXbFMsS0FBTSxTQUNqQnFQLFVBQVcwUyxHQUNYN1MsUUFDRWpSLElBQUssV0FBWThXLFdBQVcsRUFDNUJ2QixhQUFjLE1BQU8sVUFJdkJyVCxVQUFXLE1BRVgrUSxNQUFPLG1CQUFvQmpULElBQUssSUFDaENpVSxVQUFXbFMsS0FBTSxVQUNqQnFQLFVBQVcwUyxHQUNYN1MsUUFDRWpSLElBQUssYUFBZ0I4VyxXQUFXLEVBQ2hDdkIsYUFBYyxlQUFnQixhQUFjLGFBQWMsVUFJNURyVCxVQUFXLE1BQ1grUSxNQUFPLE1BQU9qVCxJQUFLLE1BQ25Cb1IsV0FFSWxQLFVBQVcsT0FBUStRLE1BQU8sYUFBY3VCLFVBQVcsR0FFckRzUCxXYnRFTjFKLGlCQUFpQixXYy9CSixTQUFTeEwsR0FDeEIsT0FDRUssU0FBVSxRQUNWbUMsVUFFRXhDLEVBQUt1TSxRQUNILFlBQ0EsYUFLRTNHLFVBQVcsS0FJZjVGLEVBQUt1TSxRQUNILE1BQ0EsS0FFRTNHLFVBQVcsS0FLYnRTLFVBQVcsUUFDWCtRLE1BQU8sZUFJUEEsTUFBTyxpQkFDUGpULElBQUssa0JBQ0x3VSxVQUFXLEtBSVh0UyxVQUFXLFVBQ1hzUyxVQUFXLEdBQ1g1RCxXQUNHcUMsTUFBTywwQkFDUEEsTUFBTywyQ0FLVi9RLFVBQVcsT0FDWCtRLE1BQU8sU0FDUGpULElBQUssTUFDTCtXLFlBQVksRUFDWnZDLFVBQVcsS0FJWHRTLFVBQVcsT0FDWCtRLE1BQU8sY0FDUHVCLFVBQVcsSUFJWHRTLFVBQVcsUUFDWCtRLE1BQU8sWUFDUGpULElBQUssWUFDTHdVLFVBQVcsS0FJWHRTLFVBQVcsT0FDWCtRLE1BQU8sbUJBQ1BqVCxJQUFLLG1CQUNMd1UsVUFBVyxLQUlYdkIsTUFBTyxjQUNQalQsSUFBSyxjQUNMb1IsV0FFSTZCLE1BQU8sSUFBS2pULElBQUssSUFDakJ1VixZQUFhLE1BQ2JmLFVBQVcsSUFHZkEsVUFBVyxLQUlYdFMsVUFBVyxTQUNYK1EsTUFBTyxxQ0FJUC9RLFVBQVcsU0FDWCtRLE1BQU8sNkNBQ1B1QixVQUFXLEtBSVh0UyxVQUFXLFNBRVgrUSxNQUFPLHFCQUNQalQsSUFBSyxlQUVMb1IsV0FFSTZCLE1BQU8sV0FDUHVCLFVBQVcsTUFNZnRTLFVBQVcsV0FFWCtRLE1BQU8saUJBQ1BqVCxJQUFLLGFBRUxvUixXQUVJNkIsTUFBTyxXQUNQdUIsVUFBVyxJQUdmQSxVQUFXLElBSVh0UyxVQUFXLFdBRVgrUSxNQUFPLGNBQ1BqVCxJQUFLLGFBQ0x3VSxVQUFXLElBSVh0UyxVQUFXLFNBQ1gwTyxXQUNHcUMsTUFBTyxZQUNQQSxNQUFPLFlBS1YvUSxVQUFXLE9BQ1grUSxNQUFPLG9CQUNQdUIsVUFBVyxJQUlYdFMsVUFBVyxPQUNYK1EsTUFBTyxVQUNQalQsSUFBSyxJQUNMd1UsVUFBVyxJQUlYdkIsTUFBTyxpQkFDUHVCLFVBQVcsS0FJWHZCLE1BQU8sMERBQ1BzRCxhQUFhLEVBQ2JuRixXQUVJNkIsTUFBTyxrQkFDUHVCLFVBQVcsSUFHWHRTLFVBQVcsT0FDWCtRLE1BQU8sTUFDUGpULElBQUssVUFDTHdVLFVBQVcsSUFHWHRTLFVBQVcsU0FDWCtRLE1BQU8sTUFDUGpULElBQUssTUFDTHNXLGNBQWMsRUFDZFMsWUFBWSxFQUNadkMsVUFBVyxJQUdmQSxVQUFXLFdkdEpmNEYsaUJBQWlCLFVlaENKLFNBQVV4TCxHQUN6QixJQUFJbVUsRUFDRixxb0JBU0YsT0FDRTlPLFNBQVc4TyxFQUNYNVAsUUFBVSxRQUNWL0IsVUFDRXhDLEVBQUt1TSxRQUNILFVBQ0EsUUFFRTNHLFVBQVksRUFDWnBELFdBR0k2QixNQUFPLE9BQVF1QixVQUFXLElBRzFCdFMsVUFBWSxTQUNaK1EsTUFBUSxpQkFLaEJyRSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLb00saUJBQ0xwTSxFQUFLcU0sbUJBRUgvWSxVQUFZLFFBQ1o4USxjQUFnQixTQUNoQmhULElBQU0sUUFDTitXLFlBQWEsRUFDYjVELFFBQVUsWUFDVi9CLFdBRUk0QixjQUFnQix5RkFFbEJwRSxFQUFLa04sdUJBRUg3SSxNQUFRLFdBQ1JqVCxJQUFNLE9BQ05pVSxTQUFXOE8sRUFBVyxxQkFDdEJoTSxZQUFhLE1BS2pCN1UsVUFBWSxRQUNaOFEsY0FBZ0Isa0JBQ2hCaFQsSUFBTSxRQUNOK1csWUFBYSxFQUNidkMsVUFBVyxFQUNYUCxTQUFXLGtCQUNYZCxRQUFVLFdBQ1YvQixXQUNHNEIsY0FBZ0Isc0JBQ2pCcEUsRUFBS2tOLHlCQUtQOUksY0FBZ0Isa0RBQ2hCaFQsSUFBTSxNQUNOK1csWUFBYSxFQUNiNUQsUUFBVSxVQUNWL0IsV0FFSTZCLE1BQVFyRSxFQUFLOEwsb0JBQXNCLFVBQ25DbkUsYUFBYyxFQUNkbkYsVUFBWXhDLEVBQUtrTiwyQkFLckI3SSxNQUFRLE1BQ1JzRCxhQUFjLEVBQ2R2VyxJQUFNLE9BQ053VSxVQUFXLEVBQ1h1QyxZQUFhLEVBQ2I5QyxTQUFXOE8sRUFDWDVQLFFBQVUsVUFDVi9CLFdBRUk2QixNQUFRckUsRUFBSzhMLG9CQUFzQixVQUNuQ3pHLFNBQVc4TyxFQUFXLHFCQUN0QnZPLFVBQVcsR0FFYjVGLEVBQUtxTSxxQkFLUGpJLGNBQWdCLFlBQ2hCd0IsVUFBWSxJQUladFMsVUFBWSxXQUNaK1EsTUFBUSwyREFDUnNELGFBQWMsRUFDZHZXLElBQU0sUUFDTmlVLFNBQVc4TyxFQUNYaE0sWUFBYSxFQUNiM0YsV0FFSTZCLE1BQVFyRSxFQUFLOEwsb0JBQXNCLFVBQ25DbkUsYUFBYyxFQUNkL0IsVUFBVyxFQUNYcEQsVUFBWXhDLEVBQUtrTix5QkFHakI1WixVQUFZLFNBQ1orUSxNQUFRLEtBQU1qVCxJQUFNLEtBQ3BCd1UsVUFBVyxFQUNYUCxTQUFXOE8sRUFDWDNSLFVBQ0V4QyxFQUFLb00saUJBQ0xwTSxFQUFLcU0sa0JBQ0xyTSxFQUFLNk0sY0FDTDdNLEVBQUswTSx1QkFHVDFNLEVBQUt5TSxvQkFDTHpNLEVBQUswTSx1QkFHVDFNLEVBQUs2TSxlQUdIdlosVUFBWSxPQUNaK1EsTUFBUSxxQmYxR1ptSCxpQkFDRixhZ0JsQ2UsU0FBU3hMLEdBQ3hCLElBQUltVixHQUNGOVEsTUFBTyxhQUdULE9BQ0UxQixrQkFBa0IsRUFDbEJ0QyxTQUFXLE9BQ1hnRixVQUNFdkMsUUFBUyx1S0FDVG9RLFFBQVMsd0JBQ1RMLFNBQVUsNkNBRVpyUSxVQUNFMlMsRUFDQW5WLEVBQUtvQixRQUFRcEIsRUFBS3FNLG1CQUFvQjdKLFVBQVcyUyxLQUNqRG5WLEVBQUt1TSxRQUFRLElBQUssS0FBTTNHLFVBQVcsSUFDbkM1RixFQUFLME0sc0JBRUhwWixVQUFXLFNBQ1grUSxNQUFPckUsRUFBSytMLFVBQ1puRyxVQUFXLElBR1h0UyxVQUFXLFdBQ1grUSxNQUFPLHVCQUdQL1EsVUFBVyxXQUNYK1EsTUFBTyx1QkFJUC9RLFVBQVcsUUFFWDBPLFdBQ0dxQyxNQUFPLHNCQUNQQSxNQUFPLG1CQUFvQnVCLFVBQVcsTUFLekN0UyxVQUFXLE9BQ1grUSxNQUFPLGFBQWNqVCxJQUFJLElBQ3pCd1UsVUFBVyxJQUdYdFMsVUFBVyxXQUNYK1EsTUFBTyxtQkFJUEEsTUFBTyxpQmhCZlhtSCxpQkFBaUIsU2lCckNKLFNBQVN4TCxHQUN0QixJQVdJdU0sR0FDSXZLLFVBQ0VoQyxFQUFLdU0sUUFBUSxJQUFLLEtBQU0zRyxVQUFXLElBQ25DNUYsRUFBS3VNLFFBQVEsTUFBTyxPQUNwQnZNLEVBQUt1TSxRQUFRLGtCQUFtQixtQkFJdEM2SSxHQUNJL1EsTUFBTyxpQkFHWDJQLEdBQ0kxZ0IsVUFBVyxTQUNYME8sV0FDSXFDLE1BQU8sSUFDUGpULElBQUssSUFDTG9SLFdBQ0k2QixNQUFPLEtBQ1B1QixVQUFXLE1BR2Z2QixNQUFPLElBQ1BqVCxJQUFLLElBQ0xvUixXQUNJNkIsTUFBTyxLQUNQdUIsVUFBVyxPQUt2QmtPLEdBQ0k5UixVQUFXaEMsRUFBSzhNLG1CQUFvQjlNLEVBQUs2TSxnQkF3RWpELE9BQ0lsSyxrQkFBa0IsRUFDbEI0QixRQUFTLE9BQ1RjLFVBQ0l2QyxRQXZITyxvUEF3SFArUCxTQS9HRixrNEpBZ0hFSyxRQW5ITSw4QkFxSFYxUSxVQUNJK0osRUFDQTZJLEVBQ0FwQixFQUNBRixHQWhGQXhnQixVQUFXLE9BQ1grUSxNQUFPLElBQ1BqVCxJQUFLLElBQ0xpVSxVQUFXOE4sZUFBZ0IsOEZBQzNCM1EsV0FDUTZCLE1BQU8sT0FDUHVCLFVBQVcsSUFFWHhCLGNBQWUsVUFDZmlCLFVBQVc4TixlQUFnQixXQUMzQi9oQixJQUFLLElBQ0xvUixVQUNJd1IsR0FDSTFnQixVQUFXLGNBQ1gwTyxXQUNJcUMsTUFBTyxJQUNQalQsSUFBSyxNQUVMaVQsTUFBTyxJQUNQalQsSUFBSyxJQUNMb1IsV0FDSTZCLE1BQU8sS0FDUHVCLFVBQVcsTUFHZnZCLE1BQU8sSUFDUGpULElBQUssSUFDTG9SLFdBQ0k2QixNQUFPLEtBQ1B1QixVQUFXLFNBTS9Cb08sRUFDQXpILEtBS0pqWixVQUFXLFNBS1grUSxNQUFPLGdCQUlQL1EsVUFBVyxXQUNYOFEsY0FBZSxPQUNmaFQsSUFBSyxJQUNMbVQsUUFBUyxZQUNUL0IsVUFDSXhDLEVBQUtrTix1QkFDRDVaLFVBQVcsU0FDWCtRLE1BQU8sTUFDUGpULElBQUssTUFDTG9SLFVBQ0k0UyxFQUNBcEIsRUFDQUYsYWpCeEVwQnRJLGlCQUFpQixTa0J0Q0osU0FBU3hMLEdBQ3hCLE9BQ0UyQyxrQkFBa0IsRUFDbEI0QyxRQUFTLE9BQVN2RixFQUFLNkwsU0FDdkJ4RyxVQUNFdkMsUUFFRSxtZ0JBT0YrUCxTQUVFLDZ4QkFXRm9DLEtBQ0Usc0hBR0p6UyxVQUNFeEMsRUFBSzBNLHFCQUNMMU0sRUFBS3VNLFFBQ0gsSUFDQSxLQUVFM0csVUFBVyxJQUdmNUYsRUFBSzZNLGNBQ0w3TSxFQUFLOE0sb0JBRUh4WixVQUFXLFNBQ1grUSxNQUFPLGlDQUVUckUsRUFBS3FNLG1CQUVIL1ksVUFBVyxTQUNYK1EsTUFBTyxJQUFNalQsSUFBSyxXQUNsQm1ULFFBQVMsZ0JBRVZqUixVQUFXLFNBQVcrUSxNQUFPLHNCQUM3Qi9RLFVBQVcsT0FBUStRLE1BQU8sSUFBS2pULElBQUssTUFFbkNrQyxVQUFXLFFBQ1grUSxNQUFPLGtCbEJqQlhtSCxpQkFBaUIsTW1CdkNKLFNBQVN4TCxHQXVDeEIsT0FDQXFGLFVBQ0V2QyxRQWpDYSwrRkFtQ2JOLFdBekNBbFAsVUFBVyxXQUNYME8sV0FDR3FDLE1BQU8sdUJBQ1BBLE1BQU8saUJBS1YvUSxVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGtCQUNoQm5LLFdBRUlxQyxNQUFPLGNBQWVqVCxJQUFLLE1BQzNCd1UsVUFBVyxLQUdYdkIsTUFBTyxjQUFlalQsSUFBSyxNQUMzQndVLFVBQVcsS0FHWHZCLE1BQU8sWUFBYWpULElBQUssSUFDekJ3VSxVQUFXLEtBR1h2QixNQUFPLFlBQWFqVCxJQUFLLElBQ3pCd1UsVUFBVyxLQUdYdkIsTUFBTyxVQUFXalQsSUFBSyxNQUd2QmlULE1BQU8sVUFBV2pULElBQUssS0FFekI0TyxFQUFLb00saUJBQ0xwTSxFQUFLcU0sb0JBVUxyTSxFQUFLZ04sWUFDTGhOLEVBQUsyTSxrQkFDTDNNLEVBQUs0TSxtQm5CUlBwQixpQkFBaUIsU29CeENKLFNBQVN4TCxHQUN4QixPQUNFcUYsU0FBVSxtYUFNVjdDLFVBQ0V4QyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLb00saUJBQ0xwTSxFQUFLcU0sa0JBQ0xyTSxFQUFLNk0sZUFFSHZaLFVBQVcsT0FDWCtRLE1BQU8sSUFBS2pULElBQUssTUFHakJrQyxVQUFXLFFBQ1g4USxjQUFlLGtCQUFtQmhULElBQUssSUFBSytXLFlBQVksRUFDeEQ1RCxRQUFTLElBQ1QvQixXQUNHNEIsY0FBZSxzQkFDaEJwRSxFQUFLa04sK0JwQmlCWDFCLGlCQUFpQixPcUJ6Q0osU0FBU3hMLEdBQ3hCLElBQUlxVixHQUNGL2hCLFVBQVcsV0FDWDBPLFdBQ0dxQyxNQUFPLHVCQUNQQSxNQUFPLGdCQUdSaVIsR0FDRmhpQixVQUFXLFNBQ1grUSxNQUFPLElBQUtqVCxJQUFLLElBQ2pCb1IsVUFDRXhDLEVBQUttTSxpQkFDTGtKLEdBRUUvaEIsVUFBVyxXQUNYK1EsTUFBTyxPQUFRalQsSUFBSyxLQUNwQm9SLFVBQVd4QyxFQUFLbU0scUJBY3RCLE9BQ0U5TCxTQUFVLEtBQU0sT0FDaEJrRixRQUFTLGtCQUNURixVQUNFdkMsUUFDRSwrREFDRm9RLFFBQ0UsYUFDRkwsU0FHRSw0dUJBY0YwQyxFQUNFLHFDQUVKL1MsV0FFSWxQLFVBQVcsT0FDWCtRLE1BQU8sa0JBQ1B1QixVQUFXLEtBR1h0UyxVQUFXLFdBQ1grUSxNQUFPLDRCQUNQc0QsYUFBYSxFQUNibkYsVUFBV3hDLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUFPLGdCQUNqRHVCLFVBQVcsR0FFYjVGLEVBQUsyTSxrQkFDTDJJLEdBbkRGaGlCLFVBQVcsR0FDWCtRLE1BQU8sUUFJUC9RLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssS0FnRGZpa0IsU3JCbENGN0osaUJBQWlCLFFzQjFDSixTQUFTeEwsR0FDeEIsT0FDRTJDLGtCQUFrQixFQUNsQjRCLFFBQVMsS0FFVGdCLFFBQVMsNEJBQ1RGLFVBQ0l2QyxRQUNFLHM4QkFhTk4sVUFDRXhDLEVBQUtxTSxrQkFDTHJNLEVBQUt1TSxRQUFRLE1BQU8sS0FBTTNHLFVBQVcsS0FDckM1RixFQUFLdU0sUUFBUSxJQUFNLEtBQU0zRyxVQUFXLEtBR2xDdFMsVUFBVyxTQUNYK1EsTUFBTyxXQUNQdUIsVUFBVyxLQUlYdFMsVUFBVyxTQUNYK1EsTUFBTyw4QkFDUHVCLFVBQVcsSUFJWHRTLFVBQVcsU0FDWCtRLE1BQU8sNEJBSVAvUSxVQUFXLFNBQ1grUSxNQUFPLDRCdEJGWG1ILGlCQUFpQixNdUIzQ0osU0FBU3hMLEdBQ3hCLE9BQ0V3QyxXQUdJbFAsVUFBVyxZQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxNQUlqQmlULE1BQU8sTUFDUGhDLFFBQ0VqUixJQUFLLElBQ0xvUixXQUVJNkIsTUFBTyxJQUFLalQsSUFBSyxLQUduQjRPLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTDFNLEVBQUtvTSxpQkFDTHBNLEVBQUtxTSw0QnZCdUJiYixpQkFDRixZd0I3Q2UsU0FBU3hMLEdBQ3hCLElBQUl3UyxHQUNGbGYsVUFBVyxVQUNYK1EsTUFBTyxXQUNQdUIsVUFBVyxHQUViLE9BQ0V2RixTQUFVLE1BQ1ZtQyxVQUNFeEMsRUFBS3VNLFFBQ0gsNkJBQ0EsNkJBRUVyRSxXQUFXLEVBQ1h0QyxVQUFXLEtBSWJ0UyxVQUFXLFFBQ1grUSxNQUFPLFdBQ1B1QixVQUFXLElBR1h0UyxVQUFXLFNBQ1grUSxNQUFPLFNBQ1B1QixVQUFXLElBSVh2QixNQUFPLGdCQUNQN0IsVUFBV2dRLElBRWJBLFN4QmdCRmhILGlCQUFpQixNeUJoREosU0FBU3hMLEdBQ3hCLElBQUltVSxFQUNGLHlIQUdFcUIsR0FDRnhWLEVBQUt5TSxvQkFDTHpNLEVBQUt1TSxRQUNILEtBQ0EsTUFFRTNHLFVBQVcsSUFHZjVGLEVBQUt1TSxRQUNILE9BQ0EsUUFFRTNHLFVBQVcsTUFJYm9PLEdBQ0YxZ0IsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFdBQVk2QixNQUFPLFFBRWpCb1IsR0FDRm5pQixVQUFXLFNBQVUrUSxNQUFPLFdBYTFCcVIsR0FDRnBpQixVQUFXLFdBQ1g4USxjQUFlLFlBQWFoVCxJQUFLLE9BQ2pDaVUsU0FBVSxlQUNWN0MsVUFDRXhDLEVBQUtpTixZQUVIM1osVUFBVyxTQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxLQUNsQmlVLFNBQVU4TyxFQUNWM1IsVUFBV3dSLEVBQVF5QixLQUVyQm5sQixPQUFPa2xCLElBR1BHLEdBQ0ZyaUIsVUFBVyxRQUNYK1EsTUFBTyxnR0FDUHNELGFBQWEsRUFDYm5GLFVBQ0V4QyxFQUFLaU4sV0FDSHlJLElBSU4sT0FDRS9TLGtCQUFrQixFQUNsQjBDLFVBQVl2QyxRQUFTcVIsRUFBVWpCLFFBaEVsQixjQWlFYjNPLFFBQVMsT0FDVC9CLFVBQ0V3UixFQUFReUIsR0F4Q1JuaUIsVUFBVyxTQUNYK1EsTUFBTyw0QkFDUHVCLFVBQVcsSUFHWHRTLFVBQVcsU0FDWCtRLE1BQU8sSUFDUGpULElBQUssS0FtQ0w0TyxFQUFLNE0sWUFDTCtJLEVBQ0FELFN6QjFCRmxLLGlCQUNGLFkwQmxEZSxTQUFTeEwsR0FDeEIsT0FDRUssU0FBVSxTQUNWZ0YsVUFDRXZDLFFBQ0Usc0dBQ0YrUCxTQUNFLDZIQUVGSyxRQUNFLGNBRUoxUSxVQUNFeEMsRUFBS3FNLGtCQUNMck0sRUFBSzRNLFlBQ0w1TSxFQUFLMk0sbUJBRUhyWixVQUFXLE9BQ1grUSxNQUFPLGlCQUNQRSxRQUFTLE9BR1RqUixVQUFXLFNBQ1grUSxNQUFPLFdBR1AvUSxVQUFXLFFBQ1g4USxjQUFlLGNBQWVoVCxJQUFLLEtBQ25DbVQsUUFBUyxLQUNUL0IsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQ2hCNUssUUFBU0QsZ0JBQWdCLEVBQU0rRixZQUFZLFFBSy9DN1UsVUFBVyxRQUNYOFEsY0FBZSxZQUFhaFQsSUFBSyxLQUNqQ21ULFFBQVMsS0FDVC9CLFVBQ0V4QyxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUNoQjVLLFFBQVNELGdCQUFnQixFQUFNK0YsWUFBWSxjMUJZbkRxRCxpQkFBaUIsUzJCckRKLFNBQVN4TCxHQUV4QixJQUFJbVUsRUFDRixpUkFXRUMsR0FDRjlnQixVQUFXLFFBQVNvVSxjQUFjLEVBQU1TLFlBQVksRUFDcEQ5RCxNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCaVUsU0FBVThPLEVBQ1Z2TyxVQUFXLElBRVRnUSxJQUdBdGlCLFVBQVcsU0FDWCtRLE1BQU8sTUFDUGpULElBQUssTUFDTHdVLFVBQVcsS0FJWHRTLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUFXNFIsS0FJWDlnQixVQUFXLFNBQ1grUSxNQUFPLElBQ1BqVCxJQUFLLE1BSUxrQyxVQUFXLFNBQ1grUSxNQUFPLGdGQUNQdUIsVUFBVyxJQUtmLE9BRkF3TyxFQUFNNVIsU0FBV29ULEdBR2Z2USxVQUNFdkMsUUFBU3FSLEVBQVcsdUhBQ3BCYyxLQXZDRixvQ0F5Q0ExUSxRQUFTLHlCQUNUL0IsVUFDRXhDLEVBQUt5TSxvQkFDTHpNLEVBQUt1TSxRQUFRLE9BQVEsUUFBUy9KLFVBQVcsV0FHdkNsUCxVQUFXLE9BQ1grUSxNQUFPLDhCQUVUL1QsT0FBT3NsQixTM0JUVHBLLGlCQUFpQixRNEJ0REosU0FBU3hMLEdBQ3hCLE9BQ0VLLFNBQVUsUUFBUSxNQUFNLE9BQ3hCZ0YsVUFDRXZDLFFBQ0UsNk1BSUYrUCxTQUNFLHFCQUNGSyxRQUNFLGNBRUoxUSxVQUVFeEMsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMMU0sRUFBS29NLGlCQUNMcE0sRUFBS3FNLGtCQUNMck0sRUFBSzZNLGVBRUp4SSxNQUFPLHFENUJpQ1ZtSCxpQkFBaUIsVTZCdkRKLFNBQVN4TCxHQUN4QixJQWlDSTZWLEVBQVksd0RBR1pDLEdBQ0Z6UixNQUFPd1IsRUFDUGpRLFVBQVcsR0FFVGtPLEdBQ0Z4Z0IsVUFBVyxTQUFVK1EsTUFQQSxzQkFRckJ1QixVQUFXLEdBRVRvTyxFQUFTaFUsRUFBS29CLFFBQVFwQixFQUFLcU0sbUJBQW9COUgsUUFBUyxPQUN4RGdJLEVBQVV2TSxFQUFLdU0sUUFDakIsSUFDQSxLQUVFM0csVUFBVyxJQUdYNE0sR0FDRmxmLFVBQVcsVUFDWCtRLE1BQU8sd0JBRUwwUixHQUNGMVIsTUFBTyxXQUFZalQsSUFBSyxZQUV0QjRrQixHQUNGMWlCLFVBQVcsVUFDWCtRLE1BQU8sTUFBUXdSLEdBRWJJLEVBQVdqVyxFQUFLdU0sUUFBUSxTQUFVLE9BQ2xDMkosR0FDRjVpQixVQUFXLFNBQ1grUSxNQUFPLFdBQWF3UixHQUVsQk0sR0FDRjlSLE1BQU8sTUFBT2pULElBQUssT0FFakJnbEIsR0FDRmhVLGdCQUFnQixFQUNoQndELFVBQVcsR0FFVHlRLEdBQ0ZoUixVQTNFQWlSLGVBRUUsbWpGQTBFRi9RLFFBQVNzUSxFQUNUdmlCLFVBQVcsT0FBUStRLE1BQU93UixFQUMxQnhULE9BQVErVCxHQUVORyxHQUFvQkosRUFBTW5DLEVBQVFnQyxFQUFNQyxFQUFVMUosRUFBUzJKLEVBQUtILEVBQVlqQyxFQUFRdEIsRUFBU3NELEdBT2pHLE9BTEFLLEVBQUszVCxVQUFZeEMsRUFBS3VNLFFBQVEsVUFBVyxJQUFLOEosRUFBTUQsR0FDcERBLEVBQUs1VCxTQUFXK1QsRUFDaEJSLEVBQVd2VCxTQUFXK1QsRUFDdEJOLEVBQVN6VCxVQUFZdVQsSUFHbkIxVixTQUFVLE9BQ1ZrRSxRQUFTLEtBQ1QvQixVQUFXMlQsRUFBTW5DLEVBQVFnQyxFQUFNQyxFQUFVMUosRUFBUzJKLEVBQUtILEVBQVlqQyxFQUFRdEIsUzdCcEMzRWhILGlCQUNGLGU4QnpEZSxTQUFTeEwsR0FDeEIsT0FDRXdDLFdBRUlsUCxVQUFXLE9BQ1grUSxNQUFPLHNCQUNQaEMsUUFDRWpSLElBQUssSUFDTHVWLFlBQWEsbUI5Qm9EbkI2RSxpQkFBaUIsUStCNURKLFNBQVN4TCxHQUN4QixPQUNFSyxTQUFVLFlBQ1ZzQyxrQkFBa0IsRUFDbEIwQyxVQUNFdkMsUUFFRSx3b0VBa0NKTixXQUVJbFAsVUFBVyxXQUNYK1EsTUFBTyxPQUFRalQsSUFBSyxLQUV0QjRPLEVBQUsyTSxrQkFDTDNNLEVBQUtxTSxrQkFDTHJNLEVBQUs0TSxtQi9CYVBwQixpQkFDRixlZ0M5RGUsU0FBU3hMLEdBQ3hCLElBQUltVSxHQUNGclIsUUFFRSwrTkFJRm9RLFFBRUUsMENBR0ZMLFNBQ0UsMkRBRUEyRCxFQUFjLDJCQUNkcEMsR0FDRjlnQixVQUFXLFFBQ1grUSxNQUFPLE1BQU9qVCxJQUFLLElBQ25CaVUsU0FBVThPLEdBRVJ5QixHQUNGNVYsRUFBSzhNLG1CQUNMOU0sRUFBS29CLFFBQVFwQixFQUFLNk0sZUFBZ0J4SyxRQUFTalIsSUFBSyxXQUFZd1UsVUFBVyxNQUVyRXRTLFVBQVcsU0FDWDBPLFdBRUlxQyxNQUFPLE1BQU9qVCxJQUFLLE1BQ25Cb1IsVUFBV3hDLEVBQUttTSxvQkFHaEI5SCxNQUFPLElBQUtqVCxJQUFLLElBQ2pCb1IsVUFBV3hDLEVBQUttTSxvQkFHaEI5SCxNQUFPLE1BQU9qVCxJQUFLLE1BQ25Cb1IsVUFBV3hDLEVBQUttTSxpQkFBa0JpSSxLQUdsQy9QLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUFXeEMsRUFBS21NLGlCQUFrQmlJLE9BS3RDOWdCLFVBQVcsU0FDWDBPLFdBRUlxQyxNQUFPLE1BQU9qVCxJQUFLLE1BQ25Cb1IsVUFBVzRSLEVBQU9wVSxFQUFLMk0scUJBR3ZCdEksTUFBTyxXQUNQdUIsVUFBVyxJQUtYdkIsTUFBTyx5Q0FLWEEsTUFBTyxJQUFNbVMsSUFHYjdQLFlBQWEsYUFDYmUsY0FBYyxFQUFNUyxZQUFZLEVBQ2hDbkcsV0FFSXFDLE1BQU8sTUFBT2pULElBQUssUUFHbkJpVCxNQUFPLElBQUtqVCxJQUFLLFFBS3pCZ2pCLEVBQU01UixTQUFXb1QsRUFFakIsSUFBSWEsRUFBUXpXLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUFPbVMsSUFFOUN2QyxHQUNGM2dCLFVBQVcsU0FDWCtRLE1BQU8sWUFBYXNELGFBQWEsRUFHakNuRixXQUNFNkIsTUFBTyxLQUFNalQsSUFBSyxLQUNsQmlVLFNBQVU4TyxFQUNWM1IsVUFBVyxRQUFRbFMsT0FBT3NsQixNQUk5QixPQUNFdlYsU0FBVSxTQUFVLE9BQVEsUUFDNUJnRixTQUFVOE8sRUFDVjVQLFFBQVMsT0FDVC9CLFNBQVVvVCxFQUFZdGxCLFFBQ3BCMFAsRUFBS3VNLFFBQVEsTUFBTyxPQUNwQnZNLEVBQUsyTSxtQkFFSHJaLFVBQVcsV0FDWCtRLE1BQU8sUUFBVW1TLEVBQWMsbUNBQXlCcGxCLElBQUssUUFDN0R1VyxhQUFhLEVBQ2JuRixVQUFXaVUsRUFBT3hDLEtBSWxCNVAsTUFBTyxhQUNQdUIsVUFBVyxFQUNYcEQsV0FFSWxQLFVBQVcsV0FDWCtRLE1BakNNLDBCQWlDWWpULElBQUssUUFDdkJ1VyxhQUFhLEVBQ2JuRixVQUFXeVIsT0FLZjNnQixVQUFXLFFBQ1g4USxjQUFlLFFBQ2ZoVCxJQUFLLElBQ0xtVCxRQUFTLFlBQ1QvQixXQUVJNEIsY0FBZSxVQUNmaEMsZ0JBQWdCLEVBQ2hCbUMsUUFBUyxZQUNUL0IsVUFBV2lVLElBRWJBLEtBSUZwUyxNQUFPbVMsRUFBYyxJQUFLcGxCLElBQUssSUFDL0J1VyxhQUFhLEVBQU1PLFdBQVcsRUFDOUJ0QyxVQUFXLFdoQzNFZjRGLGlCQUFpQixNaUNqRUosU0FBU3hMLEdBQ3hCLE9BQ0VxRixVQUNFdkMsUUFDRSxxdkRBeUJGK1AsU0FDRSx5NUNBc0JKclEsVUFDRXhDLEVBQUtxTSxrQkFDTHJNLEVBQUt1TSxRQUFRLFNBQVUsVUFDdkJ2TSxFQUFLNk0sZUFFSHZaLFVBQVcsT0FDWG9VLGNBQWMsRUFDZHJELE1BQU8sVUFDUGpULElBQUssU0FFTmlULE1BQU8sZ0JqQ0lWbUgsaUJBQWlCLE1rQ2xFSixTQUFjeEwsR0FvRTdCLE9BQ0UyQyxrQkFBa0IsRUFDbEJ0QyxTQUFVLE1BQU8sT0FDakJnRixTQWhEQSxnYkFpREE3QyxXQXZEQWxQLFVBQVcsU0FDWCtRLE1BQU8sOEJBQ1B1QixVQUFXLElBaEJYdFMsVUFBVyxTQUNYME8sV0FFSXFDLE1BQU8sSUFDUGpULElBQUssSUFDTG9SLFdBQ0U2QixNQUFPLEtBQ1B1QixVQUFXLE9BaUVmNUYsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHNCQUVIcFosVUFBVyxVQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQndVLFVBQVcsSUFHWHRTLFVBQVcsV0FDWCtRLE1BQU8sK0JBR1AvUSxVQUFXLFdBQ1grUSxNQUFPLG9CQUdQL1EsVUFBVyxXQUNYK1EsTUFBTyx5QkFHUC9RLFVBQVcsU0FDWCtRLE1BQU8sc0JBR1AvUSxVQUFXLFVBQ1grUSxNQUFPLGlDQU1QQSxNQUFPLFNBQWFqVCxJQUFLLEtBQ3pCc1csY0FBYyxFQUFNUyxZQUFZLEVBQ2hDeEIsWUFBYSxRQUdidEMsTUFBTyw0QkFBNkJqVCxJQUFLLElBQ3pDc1csY0FBYyxFQUFNUyxZQUFZLEVBQ2hDeEIsWUFBYSxlQUlidEMsTUFBTyxhQUFjalQsSUFBSyxRQUMxQnVWLFlBQWEsY2xDbkRqQjZFLGlCQUFpQixRbUNuRUosU0FBU3hMLEdBQ3hCLElBRUkwVyxFQUFXLHFIQWdCZixPQUNFclcsU0FBVSxNQUFPLFFBQ2pCc0Msa0JBQWtCLEVBQ2xCMEMsVUFDRXZDLFFBQVNxUiw2TUFDVGpCLFFBUFcsNkVBU2IxUSxVQUNFeEMsRUFBSzJNLG1CQUVIdkksY0FBZSxPQUNmL0IsUUFDRWpSLElBQUssbUJBQ0xpUixRQUNFL08sVUFBVyxRQUNYbEMsSUFBSyw0QkFLVGdULGNBdENVLHlCQXVDVi9CLFFBQ0UvTyxVQUFXLFFBQ1hsQyxJQUFLLHdCQUNMaVIsUUFDRWpSLElBQUssK0JBS1RpVCxNQUFPLE9BQVNxUyxFQUFTcnBCLE1BQU0sS0FBS0YsS0FBSyxLQUFPLFFBQ2hEa1ksU0FBVXFSLEVBQ1ZyVSxRQUNFL08sVUFBVyxRQUNYbEMsSUFBSyx1QkFJUGdULGNBbERjLG9DQW1EZC9CLFFBQ0UvTyxVQUFXLFFBQ1hsQyxJQUFLLHFCQUdUNE8sRUFBS3FNLG1CQUVIL1ksVUFBVyxPQUNYK1EsTUFBTyxzQ0FDUHVCLFVBQVcsSUFHWHRTLFVBQVcsU0FDWCtRLE1BQU8sK0JBQ1B1QixVQUFXLElBR1h0UyxVQUFXLFVBQ1grUSxNQUFPLHFCQUNQdUIsVUFBVyxJQUdYdFMsVUFBVyxPQUNYK1EsTUFBTywwQkFDUHVCLFVBQVcsSUFHWHRTLFVBQVcsTUFDWCtRLE1BQU8sTUFDUGpULElBQUssTUFDTHdVLFVBQVcsVW5DcEJmNEYsaUJBQWlCLFVvQ3BFSixTQUFTeEwsR0FDeEIsSUFBSTJXLEVBQWEsNEJBR2JDLEVBQW9CLGtIQUNwQkMsRUFBa0IsbUNBQ2xCQyxHQUNGaFUsUUFDRSx5WUFJRm9RLFFBQVMsa0JBRVBrQixHQUNGOWdCLFVBQVcsUUFDWCtRLE1BQU8sS0FBTWpULElBQUssSUFDbEJpVSxTQUFVeVIsR0FFUkMsR0FDRnpqQixVQUFXLG9CQUNYME8sV0FDR3FDLE1BQU8sU0FBVWpULElBQUssV0FDdEJpVCxNQUFPLE9BQVFqVCxJQUFLLFNBRXZCaVUsU0FBVXlSLEdBR1osU0FBU0UsRUFBZTNTLEVBQU9qVCxHQUM3QixJQUNBb1IsSUFBYTZCLE1BQU9BLEVBQU9qVCxJQUFLQSxJQUVoQyxPQURBb1IsRUFBUyxHQUFHQSxTQUFXQSxFQUNoQkEsRUFFVCxJQUFJd1IsR0FDRjFnQixVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGlCQUFrQmlJLEdBQ2xDcFMsV0FDR3FDLE1BQU8sSUFBS2pULElBQUssTUFDakJpVCxNQUFPLElBQUtqVCxJQUFLLE1BQ2pCaVQsTUFBTyxJQUFLalQsSUFBSyxNQUNqQmlULE1BQU8sYUFBY2pULElBQUssTUFBT29SLFNBQVV3VSxFQUFlLE1BQU8sU0FDakUzUyxNQUFPLGFBQWNqVCxJQUFLLE1BQU9vUixTQUFVd1UsRUFBZSxNQUFPLFNBQ2pFM1MsTUFBTyxXQUFZalQsSUFBSyxJQUFLb1IsU0FBVXdVLEVBQWUsSUFBSyxPQUMzRDNTLE1BQU8sV0FBWWpULElBQUssSUFBS29SLFNBQVV3VSxFQUFlLElBQUssT0FDM0QzUyxNQUFPLGFBQWNqVCxJQUFLLFFBQzFCaVQsTUFBTyxVQUFXalQsSUFBSyxhQUUxQndVLFVBQVcsR0FFVHFSLEdBQ0YzakIsVUFBVyxTQUNYME8sV0FDR3FDLE1BQU8sUUFBU2pULElBQUssTUFBT29SLFNBQVV3VSxFQUFlLE1BQU8sU0FDNUQzUyxNQUFPLFFBQVNqVCxJQUFLLE1BQU9vUixTQUFVd1UsRUFBZSxNQUFPLFNBQzVEM1MsTUFBTyxNQUFPalQsSUFBSyxJQUFLb1IsU0FBVXdVLEVBQWUsSUFBSyxPQUN0RDNTLE1BQU8sTUFBT2pULElBQUssSUFBS29SLFNBQVV3VSxFQUFlLElBQUssT0FDdEQzUyxNQUFPLFFBQVNqVCxJQUFLLFFBQ3JCaVQsTUFBTyxZQUFhalQsSUFBSyxhQUU1QndVLFVBQVcsR0FFVHNSLEdBQ0Y3UyxNQUFPLFVBQVlyRSxFQUFLa00sZUFBaUIsMkRBQ3pDN0csU0FBVSx5Q0FDVjdDLFdBRUlsUCxVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGlCQUFrQmlJLEdBQ2xDcFMsV0FDR3FDLE1BQU8sV0FBWXVCLFVBQVcsSUFDOUJ2QixNQUFPLFdBQVlqVCxJQUFLLGNBSS9Cd1UsVUFBVyxHQXFCVHVSLEdBQ0ZKLEVBQ0EvQyxFQUNBaUQsR0FyQkEzakIsVUFBVyxTQUNYa1AsVUFBV3hDLEVBQUttTSxpQkFBa0JpSSxHQUNsQ3BTLFdBQ0dxQyxNQUFPLFFBQVNqVCxJQUFLLE1BQU9vUixTQUFVd1UsRUFBZSxNQUFPLFNBQzVEM1MsTUFBTyxRQUFTalQsSUFBSyxNQUFPb1IsU0FBVXdVLEVBQWUsTUFBTyxTQUM1RDNTLE1BQU8sTUFBT2pULElBQUssSUFBS29SLFNBQVV3VSxFQUFlLElBQUssT0FDdEQzUyxNQUFPLE1BQU9qVCxJQUFLLElBQUtvUixTQUFVd1UsRUFBZSxJQUFLLE9BQ3REM1MsTUFBTyxRQUFTalQsSUFBSyxRQUV4QndVLFVBQVcsR0FjWHNSLEdBWEE1akIsVUFBVyxPQUNYK1EsTUFBTyxPQUFRalQsSUFBSyxNQUNwQm9SLFVBQ0V4QyxFQUFLb0IsUUFBUXBCLEVBQUtxTSxtQkFBb0IvWSxVQUFXLGtCQVVuRDBNLEVBQUsyTSxtQkFFSHJaLFVBQVcsUUFDWDhRLGNBQWUsc0JBQXVCaFQsSUFBSyxNQUMzQ21ULFFBQVMsSUFDVC9CLFVBQ0V4QyxFQUFLMk0sa0JBQ0wzTSxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUFhNUksTUFBT3dTLEtBQ3JDeFMsTUFBTyxRQUlWL1EsVUFBVyxRQUNYOFEsY0FBZSxpQkFBa0JoVCxJQUFLLE1BQ3RDbVQsUUFBUyxJQUNUL0IsVUFDRXhDLEVBQUsyTSxrQkFDTDNNLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUFPd1MsS0FFeENqUixVQUFXLEtBR1h4QixjQUFlLGFBQWNoVCxJQUFLLE1BQ2xDbVQsUUFBUyxJQUNUL0IsVUFDRXhDLEVBQUsyTSxrQkFDTDNNLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUFPd1MsS0FFeENqUixVQUFXLEtBR1h0UyxVQUFXLFdBQ1g4USxjQUFlLE1BQU9oVCxJQUFLLE9BQzNCb1IsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQ2hCNUksTUFBT3VTLEVBQ1A1TyxZQUFZLE9BS2hCMVUsVUFBVyxXQUNYOFEsY0FBZSxZQUFhaFQsSUFBSyxPQUNqQ29SLFVBQ0V4QyxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUNoQjVJLE1BQU91UyxFQUNQNU8sWUFBWSxLQUdoQnBDLFVBQVcsSUFHWHRTLFVBQVcsU0FDWCtRLE1BQU9yRSxFQUFLOEwsb0JBQXNCLGNBQ2xDbEcsVUFBVyxJQUdYdFMsVUFBVyxTQUNYK1EsTUFBTyxJQUNQN0IsVUFBV3dSLEdBQVMzUCxNQUFPdVMsSUFDM0JoUixVQUFXLElBR1h0UyxVQUFXLFNBQ1gwTyxXQUNJcUMsTUFBTyxnQkFBa0JzUyxJQUN6QnRTLE1BQU8saUJBQW1Cc1MsSUFDMUJ0UyxNQUFPLHVCQUF5QnNTLElBQ2hDdFMsTUFBTywwRkFDUEEsTUFBTyxzQkFBd0JzUyxJQUVuQy9RLFVBQVcsSUFNZixPQUhBd08sRUFBTTVSLFNBQVcyVSxFQUNqQkosRUFBVXZVLFNBQVcyVSxFQUF5QnJpQixNQUFNLElBR2xEdUwsU0FBVSxNQUNWa0YsUUFuTHFCLHNCQW9MckJGLFNBQVV5UixFQUNWdFUsU0FBVTJVLFFwQ25IVjNMLGlCQUFpQixLcUNyRUosU0FBU3hMLEdBQ3hCLElBQUltVSxHQUNGclIsUUFFRSx3bUJBU0ZvUSxRQUNFLG1CQUVBVCxHQUNGbmYsVUFBVyxTQUNYME8sV0FDSXFDLE1BQU8sa0JBQ1BBLE1BQU8sb0VBQ1BBLE1BQU8sd0ZBRVh1QixVQUFXLEdBRVR3UixHQUNGOWpCLFVBQVcsU0FDWCtRLE1BQU8sS0FBTWpULElBQUssSUFDbEJvUixXQUFZNkIsTUFBTyxRQUVqQmdULEVBQXdCclgsRUFBS29CLFFBQVFnVyxHQUFrQjdTLFFBQVMsT0FDaEU2UCxHQUNGOWdCLFVBQVcsUUFDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJpVSxTQUFVOE8sR0FFUm1ELEVBQWN0WCxFQUFLb0IsUUFBUWdULEdBQVE3UCxRQUFTLE9BQzVDZ1QsR0FDRmprQixVQUFXLFNBQ1grUSxNQUFPLE1BQU9qVCxJQUFLLElBQ25CbVQsUUFBUyxLQUNUL0IsV0FBWTZCLE1BQU8sT0FBUUEsTUFBTyxNQUFPckUsRUFBS21NLGlCQUFrQm1MLElBRTlERSxHQUNGbGtCLFVBQVcsU0FDWCtRLE1BQU8sT0FBUWpULElBQUssSUFDcEJvUixXQUFZNkIsTUFBTyxPQUFRQSxNQUFPLE9BQVFBLE1BQU8sTUFBTytQLElBRXREcUQsRUFBcUN6WCxFQUFLb0IsUUFBUW9XLEdBQ3BEalQsUUFBUyxLQUNUL0IsV0FBWTZCLE1BQU8sT0FBUUEsTUFBTyxPQUFRQSxNQUFPLE1BQU9pVCxLQUUxRGxELEVBQU01UixVQUNKZ1YsRUFDQUQsRUFDQUgsRUFDQXBYLEVBQUtvTSxpQkFDTHBNLEVBQUtxTSxrQkFDTG9HLEVBQ0F6UyxFQUFLME0sc0JBRVA0SyxFQUFZOVUsVUFDVmlWLEVBQ0FGLEVBQ0FGLEVBQ0FyWCxFQUFLb00saUJBQ0xwTSxFQUFLcU0sa0JBQ0xvRyxFQUNBelMsRUFBS29CLFFBQVFwQixFQUFLME0sc0JBQXVCbkksUUFBUyxRQUVwRCxJQUFJeVAsR0FDRmhTLFVBQ0V3VixFQUNBRCxFQUNBSCxFQUNBcFgsRUFBS29NLGlCQUNMcE0sRUFBS3FNLG9CQUlMcUwsRUFBZ0IxWCxFQUFLNkwsU0FBVyxLQUFPN0wsRUFBSzZMLFNBQVcsYUFBZTdMLEVBQUs2TCxTQUFXLGlCQUUxRixPQUNFeEwsU0FBVSxTQUFVLE1BQ3BCZ0YsU0FBVThPLEVBQ1Y1UCxRQUFTLEtBQ1QvQixVQUNFeEMsRUFBS3VNLFFBQ0gsTUFDQSxLQUVFNUUsYUFBYSxFQUNibkYsV0FFSWxQLFVBQVcsU0FDWDBPLFdBRUlxQyxNQUFPLE1BQU91QixVQUFXLElBR3pCdkIsTUFBTyxtQkFHUEEsTUFBTyxNQUFPalQsSUFBSyxVQU8vQjRPLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxzQkFFSHBaLFVBQVcsT0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJpVSxVQUNFOE4sZUFBZ0Isd0ZBR3BCYSxFQUNBdkIsR0FFRXJPLGNBQWUsa0JBQW1CaFQsSUFBSyxRQUN2Q21ULFFBQVMsVUFDVC9CLFVBQ0V4QyxFQUFLaU4sV0FDTGpOLEVBQUt5TSxvQkFDTHpNLEVBQUswTSx3QkFJUHRJLGNBQWUsWUFBYWhULElBQUssUUFDakNtVCxRQUFTLFNBQ1QvQixVQUNFeEMsRUFBS29CLFFBQVFwQixFQUFLaU4sWUFBYTVJLE1BQU8sdUJBQ3RDckUsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHdCQUtQcFosVUFBVyxPQUNYK1EsTUFBTyxXQUFZcUQsY0FBYyxFQUFNdFcsSUFBSyxNQUFPK1csWUFBWSxFQUMvRDNGLFdBQ0dsUCxVQUFXLGNBQWUrUSxNQUFPLElBQUtqVCxJQUFLLFFBTTlDZ1QsY0FBZSw4QkFDZndCLFVBQVcsSUFHWHRTLFVBQVcsV0FDWCtRLE1BQU8sSUFBTXFULEVBQWdCLFNBQVcxWCxFQUFLNkwsU0FBVyxVQUFXbEUsYUFBYSxFQUNoRnZXLElBQUssV0FBWStXLFlBQVksRUFDN0I5QyxTQUFVOE8sRUFDVjNSLFdBRUk2QixNQUFPckUsRUFBSzZMLFNBQVcsVUFBV2xFLGFBQWEsRUFDL0NuRixVQUFXeEMsRUFBS2lOLFlBQ2hCckgsVUFBVyxJQUdYdFMsVUFBVyxTQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxLQUNsQnNXLGNBQWMsRUFDZFMsWUFBWSxFQUNaOUMsU0FBVThPLEVBQ1Z2TyxVQUFXLEVBQ1hwRCxVQUNFd1IsRUFDQXZCLEVBQ0F6UyxFQUFLME0sdUJBR1QxTSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0sOEJyQzVHWGxCLGlCQUFpQixNc0N0RUosU0FBU3hMLEdBQ3hCLE9BQ0UyQyxrQkFBa0IsRUFDbEI0QyxRQUFTLHlCQUNURixVQUNFdkMsUUFBUywrS0FJWE4sV0FFRWxQLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssTUFHakJrQyxVQUFXLFlBQ1grUSxNQUFPLFdBQVlqVCxJQUFLLElBQUsrVyxZQUFZLFV0Q3VEM0NxRCxpQkFBaUIsTXVDdkVKLFNBQVN4TCxHQUN4QixJQUNJMlgsR0FDRnRULE1BQU8sd0NBQXlDc0QsYUFBYSxFQUFNdlcsSUFBSyxJQUFLZ1IsZ0JBQWdCLEVBQzdGSSxXQUVJbFAsVUFBVyxZQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxJQUFLK1csWUFBWSxFQUNuQzlGLFFBQ0VELGdCQUFnQixFQUFNK0YsWUFBWSxFQUNsQzNGLFdBRUk2QixNQUFPLFdBQVlzRCxhQUFhLEVBQ2hDbkYsV0FFSWxQLFVBQVcsV0FDWCtRLE1BQU8sV0FHUEEsTUFBTyxLQUFNalQsSUFBSyxLQUNsQm9SLFVBQ0V4QyxFQUFLb00saUJBQ0xwTSxFQUFLcU0sc0JBS2JyTSxFQUFLK00sZ0JBQ0wvTSxFQUFLcU0sa0JBQ0xyTSxFQUFLb00saUJBQ0xwTSxFQUFLME0sc0JBRUhwWixVQUFXLFNBQVUrUSxNQUFPLGtCQUc1Qi9RLFVBQVcsT0FBUStRLE1BQU8sbUJBUXRDLE9BQ0UxQixrQkFBa0IsRUFDbEI0QixRQUFTLFlBQ1QvQixVQUNFeEMsRUFBSzBNLHNCQUVIcFosVUFBVyxjQUFlK1EsTUFBTyxvQkFHakMvUSxVQUFXLGlCQUFrQitRLE1BQU8scUJBR3BDL1EsVUFBVyxnQkFDWCtRLE1BQU8sS0FBTWpULElBQUssS0FDbEJtVCxRQUFTLE1BR1RqUixVQUFXLGtCQUNYK1EsTUFBTyxtQ0FHUEEsTUFBTyxvQkFDUGtCLFFBQVMsVUFDVEYsU0FBVSxtQkFHVmhCLE1BQU8sSUFBS2pULElBQUssT0FJakJtVCxRQUFTLElBQ1QvQixXQUVJbFAsVUFBVyxVQUNYK1EsTUFBTyxRQUdQQSxNQUFPLEtBQU1qQyxnQkFBZ0IsRUFBTStGLFlBQVksRUFDL0N2QyxVQUFXLEVBQ1hwRCxVQUNFeEMsRUFBS29NLGlCQUFrQnBNLEVBQUtxTSxrQkFDNUJyTSxFQUFLK00scUJBTVh6WixVQUFXLGVBQWdCK1EsTUF6RmxCLDBCQTBGVHVCLFVBQVcsSUFHWHZCLE1BQU8sSUFBS2pULElBQUssSUFDakJtVCxRQUFTLEtBQ1QvQixVQUNFeEMsRUFBSzBNLHFCQUNMaUwsV3ZDMUJObk0saUJBQWlCLEl3Q3hEckIsU0FBU3hMLEdBTVAsSUF1Q0U0WCxFQUFhLDJGQWdCWEMsRUFBcUIseUdBY3JCQyxHQUNGeGtCLFVBQVcsU0FDVCtRLE1BQU8sTUFBUXVULEVBQWEsdUJBQzVCaFMsVUFBVyxHQU9YbVMsR0FDRnprQixVQUFXLFNBQ1grUSxNQUFPLDhmQUVIdVQsRUFBYSxnQkFFakJoUyxVQUFXLEdBUVRvUyxHQUNGMWtCLFVBQVcsU0FDWCtRLE1BQU8sS0FBUXdULEVBQXFCLE1BQU96bUIsSUFBSyxJQUNoRG1ULFFBQVMsS0FrQlAwVCxHQUNGM2tCLFVBQVcsU0FDWCtRLE1BQU8sSUFDUDdCLFdBWkE2QixNQUFPd1QsRUFDUGpTLFVBQVcsSUFZWHhVLElBQUssV0F1Rkg4bUIsRUFBeUJsWSxFQUFLdU0sUUFDaEMsU0FDQSxVQUVFL0osVUFBVyxRQUNYb0QsVUFBVyxLQUlmLE9BQ0VMLFFBQVN2RixFQUFLOEwsb0JBQ2R6RyxVQXZOQXZDLFFBQ0UsNm1CQVFGK1AsU0FDRSwyS0FHRkssUUFDRSxtQkEwTUYxUSxVQUNFeEMsRUFBS3lNLG9CQUNIek0sRUFBSzBNLHFCQUNMd0wsR0F0RUo1a0IsVUFBVyxTQUNYK1EsTUFBTyxpQ0FDUHVCLFVBQVcsSUFzRVBxUyxHQS9GSjNrQixVQUFXLFNBQ1grUSxNQUFPLFFBQ1BqVCxJQUFLLFVBQ0x3VSxVQUFXLElBU1h0UyxVQUFXLFNBQ1grUSxNQUFPLElBQ1BqVCxJQUFLLFlBb0JMa0MsVUFBVyxTQUNYK1EsTUFBTyxRQUNQalQsSUFBSyxRQStERDJtQixFQUNBRCxFQUNBRSxHQXhESjFrQixVQUFXLE9BQ1grUSxNQUFPLE1BQ1BqVCxJQUFLLElBQ0x3VSxVQUFXLElBU1h0UyxVQUFXLE9BQ1grUSxNQUFPLFVBQ1BqVCxJQUFLLElBQ0x3VSxVQUFXLElBU1h0UyxVQUFXLFVBQ1grUSxNQUFPLGtDeENsSlBtSCxpQkFBaUIsV3lDekVKLFNBQVN4TCxHQUN4QixPQUNFSyxTQUFVLEtBQU0sU0FBVSxPQUMxQm1DLFdBR0lsUCxVQUFXLFVBQ1gwTyxXQUNJcUMsTUFBTyxVQUFXalQsSUFBSyxNQUN2QmlULE1BQU8sdUJBS1hBLE1BQU8sSUFBS2pULElBQUssSUFDakJ1VixZQUFhLE1BQ2JmLFVBQVcsSUFJWHRTLFVBQVcsU0FDWCtRLE1BQU8sK0JBSVAvUSxVQUFXLFNBQ1grUSxNQUFPLHNCQUlQL1EsVUFBVyxXQUNYME8sV0FDSXFDLE1BQU8sY0FDUEEsTUFBTyxRQUNQdUIsVUFBVyxNQU1mdFMsVUFBVyxRQUNYK1EsTUFBTyxTQUFValQsSUFBSyxNQUl0QmtDLFVBQVcsT0FDWDBPLFdBRUlxQyxNQUFPLGdCQUFpQmpULElBQUssY0FHN0JpVCxNQUFPLFVBR1BBLE1BQU8sY0FBZWpULElBQUssSUFDM0J3VSxVQUFXLE1BTWZ2QixNQUFPLGNBQWVqVCxJQUFLLE1BSTNCaVQsTUFBTywrQkFDUHNELGFBQWEsRUFDYm5GLFdBRUlsUCxVQUFXLFNBQ1grUSxNQUFPLE1BQU9qVCxJQUFLLE1BQ25Cc1csY0FBYyxFQUNkUSxXQUFXLEVBQ1h0QyxVQUFXLElBR1h0UyxVQUFXLE9BQ1grUSxNQUFPLFNBQVVqVCxJQUFLLE1BQ3RCc1csY0FBYyxFQUFNUyxZQUFZLElBR2hDN1UsVUFBVyxTQUNYK1EsTUFBTyxTQUFValQsSUFBSyxNQUN0QnNXLGNBQWMsRUFBTVMsWUFBWSxJQUdwQ3ZDLFVBQVcsS0FHWHZCLE1BQU8sZUFDUHNELGFBQWEsRUFDYm5GLFdBRUlsUCxVQUFXLFNBQ1grUSxNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCc1csY0FBYyxFQUFNUyxZQUFZLElBR2hDN1UsVUFBVyxPQUNYK1EsTUFBTyxPQUFRalQsSUFBSyxJQUNwQnNXLGNBQWMsWXpDMUJ0QjhELGlCQUFpQixPMEMxRUosU0FBU3hMLEdBQ3hCLElBQUlvVSxHQUNGOWdCLFVBQVcsUUFDWDBPLFdBQ0VxQyxNQUFPLHNCQUlQOFQsR0FDRjdrQixVQUFXLFFBQ1gwTyxXQUNFcUMsTUFBTyxPQUNQalQsSUFBSyxNQUVQaVUsU0FBVSxxQ0FHUjJPLEdBQ0YxZ0IsVUFBVyxTQUNYME8sV0FDSXFDLE1BQU8sT0FDUGpULElBQUssUUFHTGlULE1BQU8sT0FDUGpULElBQUssUUFHTGlULE1BQU8sS0FDUGpULElBQUssSUFDTG1ULFFBQVMsUUFHVEYsTUFBTyxLQUNQalQsSUFBSyxJQUNMbVQsUUFBUyxRQUdURixNQUFPLE1BQ1BqVCxJQUFLLE1BQ0xvUixVQUFXeEMsRUFBS21NLGlCQUFrQmlJLEVBQU8rRCxLQUd6QzlULE1BQU8sTUFDUGpULElBQUssTUFDTG9SLFVBQVd4QyxFQUFLbU0saUJBQWtCaUksRUFBTytELEtBR3pDOVQsTUFBTyxJQUNQalQsSUFBSyxJQUNMbVQsUUFBUyxNQUNUL0IsVUFBV3hDLEVBQUttTSxpQkFBa0JpSSxFQUFPK0QsS0FHekM5VCxNQUFPLElBQ1BqVCxJQUFLLElBQ0xtVCxRQUFTLE1BQ1QvQixVQUFXeEMsRUFBS21NLGlCQUFrQmlJLEVBQU8rRCxNQUkvQ0EsRUFBYTNWLFVBQ1h4QyxFQUFLNk0sY0FBZW1ILEdBZ0J0QixPQUNFM08sVUFiQXZDLFFBQVMsK1hBSVQrUCxTQUVFLHVRQVFGclEsVUFDRXdSLEVBQ0FoVSxFQUFLdU0sUUFDSCxVQUNBLFFBQ0U1RixZQUFhLGFBR2pCM0csRUFBS3VNLFFBQ0gsV0FDQSxLQUNFL0osV0FDRW1FLFlBQWEsV0FDYnRDLE1BQU8sSUFDUGpULElBQUssUUFJWDRPLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxzQkFFSHBaLFVBQVcsUUFDWDhRLGNBQWUsa0JBQ2ZoVCxJQUFLLElBQ0wrVyxZQUFZLEVBQ1ozRixXQUNJNEIsY0FBZSxzQkFFakJwRSxFQUFLa04sd0JBR1RsTixFQUFLNk0sZUFFSHZaLFVBQVcsT0FDWCtRLE1BQU8sZUFHUEEsTUFBTyxhMUMxQ1htSCxpQkFBaUIsUzJDM0VKLFNBQVN4TCxHQUN4QixJQUFJbVUsRUFDRiwyNkJBV0VxQixHQUNGeFYsRUFBS3lNLG9CQUNMek0sRUFBS3VNLFFBQVEsS0FBTSxNQUFPM0csVUFBVyxJQUNyQzVGLEVBQUt1TSxRQUFRLE9BQVEsUUFBUzNHLFVBQVcsTUFFdkN3UyxHQUNGOWtCLFVBQVcsT0FDWDBPLFdBQ0dxQyxNQUFPLE9BQVFqVCxJQUFLLE9BQ3BCaVQsTUFBTyxTQUFValQsSUFBSyxVQUd2QjRpQixHQUNGMWdCLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixXQUFZNkIsTUFBTyxRQUVqQm9SLEdBQ0ZuaUIsVUFBVyxTQUFVK1EsTUFBTyxXQUUxQmdVLEdBQ0ZoVSxNQUFPckUsRUFBSzZMLFNBQVcsd0JBQXlCbEUsYUFBYSxFQUM3RG5GLFVBQ0V4QyxFQUFLaU4sYUFHTHFMLEdBQ0ZobEIsVUFBVyxXQUNYOFEsY0FBZSw0Q0FBNkNoVCxJQUFLLE9BQ2pFaVUsU0FBVSxxREFDVjdDLFVBQ0V4QyxFQUFLaU4sWUFFSDNaLFVBQVcsU0FDWCtRLE1BQU8sS0FBTWpULElBQUssS0FDbEJpVSxTQUFVOE8sRUFDVjNSLFVBQVd3UixFQUFReUIsRUFBYTJDLEdBQVc5bkIsT0FBT2tsQixJQUVwRDRDLEdBQ0E5bkIsT0FBT2tsQixJQUVYLE9BQ0VuVixTQUFVLE1BQU8sTUFBTyxNQUFPLFNBQVUsYUFBYyxVQUFXLE1BQU8sT0FDekVzQyxrQkFBa0IsRUFDbEIwQyxTQUFVOE8sRUFDVjVQLFFBQVMsMkJBQ1QvQixVQUNFd1IsRUFBUXlCLEVBQ1J6VixFQUFLNE0sWUFDTHlMLEVBQ0FDLEVBQ0FGLEdBQ0E5bkIsT0FBT2tsQixTM0NXVGhLLGlCQUFpQixPNEM1RUosU0FBU3hMLEdBQ3hCLE9BQ0VLLFNBQVUsU0FDVm1DLFdBRUlsUCxVQUFXLE9BQ1hzUyxVQUFXLEdBQ1g1RCxXQUNHcUMsTUFBTyxtQ0FDUEEsTUFBTyxnQ0FDUEEsTUFBTyxrQ0FJVi9RLFVBQVcsVUFDWDBPLFdBQ0dxQyxNQUFPLFVBQVdqVCxJQUFLLE1BQ3ZCaVQsTUFBTyxRQUFTalQsSUFBSyxNQUNyQmlULE1BQU8sU0FBVWpULElBQUssTUFDdEJpVCxNQUFPLFVBQVdqVCxJQUFLLE1BQ3ZCaVQsTUFBTyxTQUFValQsSUFBSyxNQUN0QmlULE1BQU8sZUFJVi9RLFVBQVcsV0FDWCtRLE1BQU8sT0FBUWpULElBQUssTUFHcEJrQyxVQUFXLFdBQ1grUSxNQUFPLE9BQVFqVCxJQUFLLE1BR3BCa0MsVUFBVyxXQUNYK1EsTUFBTyxPQUFRalQsSUFBSyxZNUMyQ3hCb2EsaUJBQWlCLFM2QzdFSixTQUFTeEwsR0FDeEIsSUFBSXVZLEdBQ0ZsVSxNQUFPLGdCQUNQZ0IsVUFDRWxTLEtBQ0UsNGtCQVNKcVAsVUFDRXhDLEVBQUtxTSxrQkFDTHJNLEVBQUtvTSxtQkFJVCxPQUNFL0wsU0FBVSxTQUNWc0Msa0JBQWtCLEVBQ2xCZ0UsWUFBYSxNQUNibkUsVUFDRXhDLEVBQUt1TSxRQUFRLHFCQUFzQix5QkFDbkN2TSxFQUFLdU0sUUFBUSxNQUFPLE9BRWxCalosVUFBVyxlQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxLQUNuQm9SLFdBRUlsUCxVQUFXLE9BQ1grUSxNQUFPLE1BQ1BnQixVQUNFbFMsS0FDRSxpbUJBVUprUCxRQUNFRCxnQkFBZ0IsRUFDaEJpRCxTQUFVLFdBQ1Y3QyxVQUFXK1YsR0FDWDNTLFVBQVcsT0FNakJ0UyxVQUFXLG9CQUNYK1EsTUFBTyxPQUFRalQsSUFBSyxLQUNwQm9SLFVBQVcrVixXN0NvQmYvTSxpQkFBaUIsTThDOUVKLFNBQVN4TCxHQUN4QixPQUNFSyxTQUFVLE9BQVEsUUFDbEJnRixVQUNFdkMsUUFDRSwyTEFHSk4sVUFDRXhDLEVBQUt1TSxRQUFRLElBQUssS0FBTTNHLFVBQVcsS0FFakN0UyxVQUFXLE9BQ1grUSxNQUFPLHVDQUlQL1EsVUFBVyxTQUNYK1EsTUFBTyxnbkNBSVAvUSxVQUFXLFNBQ1grUSxNQUFPLCtGQUVUckUsRUFBS29CLFFBQVFwQixFQUFLNE0sYUFBY3ZJLE1BQU8sd0I5Q3VEekNtSCxpQkFDRixhK0NoRmUsU0FBU3hMLEdBQ3hCLE9BQ0VLLFNBQVUsVUFDVnNDLGtCQUFrQixFQUNsQjBDLFNBQVUseURBQ1Y3QyxVQUNFeEMsRUFBSzJNLGtCQUNMM00sRUFBS29NLGlCQUNMcE0sRUFBS3FNLGtCQUNMck0sRUFBSzRNLGFBRUh4SSxjQUFlLHFFQUNmL0IsUUFDRWpSLElBQUssU0FDTHVWLFlBQWEsVUFJbkJwQyxRQUFTLFcvQ2lFVGlILGlCQUFpQixNZ0RuRkosU0FBU3hMLEdBQ3hCLElBQUl1TSxFQUFVdk0sRUFBS3VNLFFBQ2pCLGNBQWUsS0FFYjNHLFVBQVcsS0FRZixPQUNFdkYsU0FBVSxNQUFPLE9BQ2pCc0Msa0JBQWtCLEVBQ2xCNEIsUUFBUyxPQUNUYyxVQUNFdkMsUUFDRSx3RkFFRitQLFNBQ0UsbWZBVUpyUSxXQUVJbFAsVUFBVyxXQUFZK1EsTUFBTyw2QkFHOUIvUSxVQUFXLFdBQ1grUSxNQTVCRyxtREE0QmlCalQsSUFBSyxXQUN6Qm9SLFVBQ0V4QyxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUFhNUksTUFBTyxzREFDdENrSSxLQUlGalosVUFBVyxTQUFVK1EsTUFBTyxVQUM1QnVCLFVBQVcsR0FFYjJHLFNoRHFDRmYsaUJBQWlCLFdpRHBGSixTQUFTeEwsR0FvQnhCLE9BQ0VxRixTQUFVLFdBQ1Y3QyxXQUVJbFAsVUFBVyxVQUNYK1EsTUFBTyxZQUFhalQsSUFBSyxNQUFPK1csWUFBWSxFQUM1Q3ZDLFVBQVcsS0FHWHRTLFVBQVcsV0FDWCtRLE1BQU8sc0NBQXVDalQsSUFBSyxNQUFPK1csWUFBWSxFQUN0RTVELFFBQVMsYUFDVHFCLFVBQVcsS0FHWHRTLFVBQVcsV0FDWCtRLE1BQU8sV0FBWWpULElBQUssTUFBTytXLFlBQVksSUFsQy9DN1UsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxNQUdqQmtDLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssTUFHakJrQyxVQUFXLFNBQ1grUSxNQUFPLGdCQUFpQmpULElBQUssTUFDN0J3VSxVQUFXLElBR1h0UyxVQUFXLFNBQ1grUSxNQUFPLGFBQWNqVCxJQUFLLE1BQzFCd1UsVUFBVyxHQXlCVDVGLEVBQUsyTSx5QmpEMkNQbkIsaUJBQWlCLE1rRHJGSixTQUFTeEwsR0FDeEIsSUFBSTBTLEdBQ0ZwZixVQUFXLFNBQ1gwTyxVQUNFaEMsRUFBS29CLFFBQVFwQixFQUFLcU0sbUJBQXFCaEksTUFBTyxtQkFFNUNBLE1BQU8sYUFBY2pULElBQUssSUFDMUJvUixVQUFXeEMsRUFBS21NLG9CQUdoQjlILE1BQU8sVUFBWWpULElBQUssSUFDeEJtVCxRQUFTLE9BS1hrTyxHQUNGbmYsVUFBVyxTQUNYME8sV0FDSXFDLE1BQU8sbURBQ1BBLE1BQU9yRSxFQUFLZ00sY0FFaEJwRyxVQUFXLEdBR1Q0TyxHQUNGbGhCLFVBQVcsT0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJpVSxVQUFXOE4sZUFBZ0IsZ0RBQzNCM1EsV0FFSTZCLE1BQU8sT0FBUXVCLFVBQVcsSUFHMUJ4QixjQUFlLFVBQVdoVCxJQUFLLElBQy9CaVUsVUFBVzhOLGVBQWdCLFdBQzNCM1EsVUFDRXhDLEVBQUtvQixRQUFRc1IsR0FBVXBmLFVBQVcsaUJBRWhDQSxVQUFXLGNBQ1grUSxNQUFPLElBQUtqVCxJQUFLLElBQ2pCbVQsUUFBUyxTQUlmbU8sRUFDQTFTLEVBQUt5TSxvQkFDTHpNLEVBQUswTSx1QkFJTDhMLEdBQ0ZsbEIsVUFBVyxXQUNYK1EsTUFBTyxvQkFHTG9VLEdBQ0ZubEIsVUFBVyxlQUNYK1EsTUFBTyxxQkFHTHFVLEdBQ0ZwbEIsVUFBVyxTQUNYK1EsTUFBTyxnQ0FHTHNVLEdBQ0ZybEIsVUFBVyxTQUNYK1EsTUFBTyxJQUNQalQsSUFBSyxJQUNMb1IsVUFDRWlRLEVBQ0ErRixJQUlBSSxHQUNGdGxCLFVBQVcsUUFDWCtRLE1BQU8sNEJBQ1BqVCxJQUFLLFFBQ0x1VyxhQUFhLEVBQ2JRLFlBQVksR0FxQmQsT0FDRTlDLFNBQVUsR0FDVjdDLFdBbkJBbFAsVUFBVyxRQUNYK1EsTUFBTyxTQUNQalQsSUFBSyxLQUNMd1UsVUFBVyxHQUNYcEQsVUFDRWdXLEVBQ0FDLEVBQ0FDLEVBQ0FFLEVBQ0FELEVBQ0EzWSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wrRixFQUNBQyxJQVFBOEYsRUFDQUMsRUFDQUMsRUFDQUUsRUFDQUQsRUFDQTNZLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTCtGLEVBQ0FDLEVBQ0E4QixHQUVFblEsTUFBT3JFLEVBQUs2TCxTQUFXLEtBQ3ZCeEcsU0FBVSxXbERoQ2RtRyxpQkFBaUIsT21EdEZKLFNBQVN4TCxHQUV4QixPQUNFSyxTQUFVLE9BQ1ZzQyxrQkFBa0IsRUFDbEJnRSxZQUFhLE1BQ2JuRSxXQUVJbFAsVUFBVyxlQUNYK1EsTUFBTyxVQUFXalQsSUFBSyxLQUFNbVQsUUFBUyxJQUN0Qy9CLFdBRUlsUCxVQUFXLE9BQ1grUSxNQUFPLGVBQ1BoQyxRQUNFRCxnQkFBZ0IsRUFBTXdELFVBQVcsRUFDakNwRCxVQUNFeEMsRUFBS3FNLHdCQU9iL1ksVUFBVyxvQkFDWCtRLE1BQU8sS0FBTWpULElBQUssS0FBTW1ULFFBQVMsSUFDakNjLFNBekJvQix5RG5Ec0Z4Qm1HLGlCQUFpQixPb0R2RkosU0FBU3hMLEdBQ3RCLElBQUlxVCxFQUFjclQsRUFBS3VNLFFBQVEsT0FBUSxRQXNCdkMsT0FDSWhJLFFBQVMsS0FDVC9CLFVBQ0k2USxHQXRCSi9mLFVBQVcsWUFDWCtRLE1BQU8sc0RBU1BBLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUNJNlEsR0FQSi9mLFVBQVcsT0FDWCtRLE1BQU8sVUFTSHJFLEVBQUtvTSxpQkFBa0JwTSxFQUFLcU0sMkJwRHFFcENiLGlCQUFpQixTcUR4RkosU0FBU3hMLEdBQ3hCLElBQUk2WSxFQUFrQixvQ0FFbEJDLEVBQ0Ysc01BR0UxRSxHQUNGOWdCLFVBQVcsUUFDWCtRLE1BQU8sT0FBUWpULElBQUssSUFDcEJtVSxRQUFTc1QsRUFDVHhULFNBQVV5VCxHQUVSOUUsR0FDRjFnQixVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGlCQUFrQmlJLEdBQ2xDcFMsV0FFSXFDLE1BQU8sSUFBS2pULElBQUssTUFHakJpVCxNQUFPLElBQUtqVCxJQUFLLE9BSW5Ca25CLEdBQ0ZobEIsVUFBVyxXQUNYOFEsY0FBZSxvQkFBcUJoVCxJQUFLLE9BQ3pDb1IsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQ2hCNUksTUFBT3dVLEVBQ1A3USxZQUFZLE1BSWRxUSxFQUFRclksRUFBS29CLFFBQVFrWCxHQUN2QmhsQixVQUFXLFFBQ1g4USxjQUFlLDBDQUEyQ2hULElBQUssZUFFN0QybkIsR0FDRi9FLEVBQ0FoVSxFQUFLMk0sa0JBQ0wwTCxFQUNBQyxHQUVFalUsTUFBTyxPQUdQL1EsVUFBVyxTQUNYK1EsTUFBTyxjQUNQN0IsVUFBV3dSLEdBQVMzUCxNQWhERCx1RkFpRG5CdUIsVUFBVyxJQUdYdFMsVUFBVyxTQUNYK1EsTUFBT3dVLEVBQWtCLFNBQ3pCalQsVUFBVyxJQUdYdFMsVUFBVyxTQUNYK1EsTUFBTyxxR0FDUHVCLFVBQVcsSUFHWHRTLFVBQVcsV0FDWCtRLE1BQU8sbUNBR1BBLE1BQU8sT0FHUEEsTUFBTyxJQUFNckUsRUFBS2tNLGVBQWlCLFFBQ25DMUosVUFDRXhDLEVBQUsyTSxtQkFFSHJaLFVBQVcsU0FDWGlSLFFBQVMsTUFDVC9CLFVBQVd4QyxFQUFLbU0saUJBQWtCaUksR0FDbENwUyxXQUVJcUMsTUFBTyxJQUFLalQsSUFBSyxZQUdqQmlULE1BQU8sUUFBU2pULElBQUssZ0JBSzdCd1UsVUFBVyxJQUtmLE9BRkF3TyxFQUFNNVIsU0FBV3VXLEdBR2Z4VCxRQUFTc1QsRUFDVHhULFNBQVV5VCxFQUNWdFcsU0FBVXVXLFFyRFBWdk4saUJBQWlCLE1zRHpGSixTQUFTeEwsR0FDeEIsSUFBSXVNLEdBQ0Z2SyxVQUNFaEMsRUFBS3VNLFFBQVEsS0FBTSxLQUNuQnZNLEVBQUt1TSxRQUNILEtBQ0EsTUFFRS9KLFVBQVcsWUFNZndXLEdBQ0YxbEIsVUFBVyxPQUNYK1EsTUFBTyxrQkFDUHVCLFVBQVcsR0FHVHVRLEdBQ0Y5UixNQUFPLE1BQU9qVCxJQUFLLE1BQ25CbVQsUUFBUyxJQUNUL0IsV0FDR2xQLFVBQVcsT0FBUStRLE1BQU8sMENBQzNCa0ksSUFlSixPQUNFbEgsU0FDRSw4SEFFRjdDLFdBS0k0QixjQUFlLHFCQUFzQmhULElBQUssV0FDMUNpVSxTQUFVLHlEQUNWN0MsVUFBVzJULEVBQU01SixHQUNqQmhJLFFBQVMsYUFHVEYsTUFBTyxTQUFValQsSUFBSyxJQUN0QmlVLFNBQVUscUJBQ1Y3QyxVQUFXMlQsRUFBTTVKLEdBQ2pCaEksUUFBUyxhQUdURixNQUFPLE9BQVFqVCxJQUFLLElBQ3BCaVUsU0FBVSxhQUNWN0MsVUFBV3dXLEVBQWE3QyxHQWpDNUI5UixNQUFPLElBQUtqVCxJQUFLLElBQ2pCb1IsU0FBVTJULEVBQUszVCxVQWdDMkIrSixLQUd0Q25JLGNBQWUsc0JBQXVCaFQsSUFBSyxJQUMzQ29SLFVBQVd4QyxFQUFLNk0sY0FBZU4sS0FHL0JsSSxNQUFPLE9BQVFqVCxJQUFLLElBQ3BCaVUsU0FBVSxPQUNWN0MsVUFBVytKLEtBckNmalosVUFBVyxTQUNYK1EsTUFBTyxVQUFZalQsSUFBSyxJQUN4Qm1ULFFBQVMsS0F5Q1B2RSxFQUFLcU0sa0JBQ0xyTSxFQUFLNk0sY0FDTG1NLEVBQ0FoWixFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUFhNUksTUFBTyxtQkFDdENrSSxHQUVDbEksTUFBTyxVQUVWRSxRQUFTLFV0RElUaUgsaUJBQWlCLE91RDFGSixTQUFTeEwsR0FDeEIsSUFBSWlaLEVBQWlCLHFGQUNqQkMsR0FDRnBXLFFBQ0UsOE9BR0ZvUSxRQUNFLGtCQUVBaUcsR0FDRjdsQixVQUFXLFNBQ1grUSxNQUFPLGNBRUwrVSxHQUNGL1UsTUFBTyxLQUFNalQsSUFBSyxLQUVoQm9rQixHQUNGeFYsRUFBS3VNLFFBQ0gsSUFDQSxLQUVFL0osVUFBVzJXLEtBR2ZuWixFQUFLdU0sUUFDSCxZQUNBLFdBRUUvSixVQUFXMlcsR0FDWHZULFVBQVcsS0FHZjVGLEVBQUt1TSxRQUFRLFdBQVksU0FFdkI2SCxHQUNGOWdCLFVBQVcsUUFDWCtRLE1BQU8sT0FBUWpULElBQUssSUFDcEJpVSxTQUFVNlQsR0FFUmxGLEdBQ0YxZ0IsVUFBVyxTQUNYa1AsVUFBV3hDLEVBQUttTSxpQkFBa0JpSSxHQUNsQ3BTLFdBQ0dxQyxNQUFPLElBQUtqVCxJQUFLLE1BQ2pCaVQsTUFBTyxJQUFLalQsSUFBSyxNQUNqQmlULE1BQU8sSUFBS2pULElBQUssTUFDakJpVCxNQUFPLGVBQWdCalQsSUFBSyxRQUM1QmlULE1BQU8sZUFBZ0JqVCxJQUFLLFFBQzVCaVQsTUFBTyxhQUFjalQsSUFBSyxNQUMxQmlULE1BQU8sYUFBY2pULElBQUssTUFDMUJpVCxNQUFPLGFBQWNqVCxJQUFLLE1BQzFCaVQsTUFBTyxhQUFjalQsSUFBSyxNQUMxQmlULE1BQU8sYUFBY2pULElBQUssTUFDMUJpVCxNQUFPLGVBQWdCalQsSUFBSyxRQUkzQmlULE1BQU8sa0VBR1BBLE1BQU8sb0NBQ1BzRCxhQUFhLEVBQ2JuRixXQUNJNkIsTUFBTyxjQUNQQSxNQUFPLE1BQ1BvQixnQkFBZ0IsRUFDaEJqRCxVQUFXeEMsRUFBS21NLGlCQUFrQmlJLFFBTXhDSCxHQUNGM2dCLFVBQVcsU0FDWCtRLE1BQU8sTUFBT2pULElBQUssTUFBTzRXLFlBQVksRUFDdEMzQyxTQUFVNlQsR0FHUkcsR0FDRnJGLEVBQ0FvRixHQUVFOWxCLFVBQVcsUUFDWDhRLGNBQWUsZUFBZ0JoVCxJQUFLLE1BQ3BDbVQsUUFBUyxJQUNUL0IsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUFPLHNDQUVwQ0EsTUFBTyxRQUNQN0IsV0FDRTZCLE1BQU8sSUFBTXJFLEVBQUs2TCxTQUFXLE9BQVM3TCxFQUFLNkwsYUFHL0N2YixPQUFPa2xCLEtBR1RsaUIsVUFBVyxXQUNYOFEsY0FBZSxNQUFPaFQsSUFBSyxNQUMzQm9SLFVBQ0V4QyxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUFhNUksTUFBTzRVLElBQ3RDaEYsR0FDQTNqQixPQUFPa2xCLEtBSVRuUixNQUFPckUsRUFBSzZMLFNBQVcsT0FHdkJ2WSxVQUFXLFNBQ1grUSxNQUFPckUsRUFBSzhMLG9CQUFzQixjQUNsQ2xHLFVBQVcsSUFHWHRTLFVBQVcsU0FDWCtRLE1BQU8sV0FDUDdCLFVBQVd3UixHQUFTM1AsTUFBTzRVLElBQzNCclQsVUFBVyxJQUdYdFMsVUFBVyxTQUNYK1EsTUFBTyw0RUFDUHVCLFVBQVcsSUFHWHZCLE1BQU8sbUNBR1AvUSxVQUFXLFNBQ1grUSxNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCaVUsU0FBVTZULElBR1Y3VSxNQUFPLElBQU1yRSxFQUFLa00sZUFBaUIsZUFDbkM3RyxTQUFVLFNBQ1Y3QyxVQUNFNFcsR0FFRTlsQixVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGlCQUFrQmlJLEdBQ2xDN1AsUUFBUyxLQUNUdkMsV0FDR3FDLE1BQU8sSUFBS2pULElBQUssWUFDakJpVCxNQUFPLE1BQU9qVCxJQUFLLFlBQ25CaVQsTUFBTyxRQUFTalQsSUFBSyxjQUNyQmlULE1BQU8sTUFBT2pULElBQUssWUFDbkJpVCxNQUFPLFFBQVNqVCxJQUFLLGdCQUcxQmQsT0FBT2tsQixHQUNUNVAsVUFBVyxJQUVidFYsT0FBT2tsQixHQUVUcEIsRUFBTTVSLFNBQVc2VyxFQUNqQnBGLEVBQU96UixTQUFXNlcsRUFFbEIsSUFJSUMsSUFFQWpWLE1BQU8sU0FDUGhDLFFBQ0VqUixJQUFLLElBQUtvUixTQUFVNlcsS0FJdEIvbEIsVUFBVyxPQUNYK1EsTUFBTyxnRkFDUGhDLFFBQ0VqUixJQUFLLElBQUtvUixTQUFVNlcsS0FLMUIsT0FDRWhaLFNBQVUsS0FBTSxVQUFXLFVBQVcsT0FBUSxPQUM5Q2dGLFNBQVU2VCxFQUNWM1UsUUFBUyxPQUNUL0IsU0FBVWdULEVBQWNsbEIsT0FBT2dwQixHQUFhaHBCLE9BQU8rb0IsU3ZEMUZuRDdOLGlCQUFpQixNd0QzRkosU0FBU3hMLEdBQ3hCLE9BQ0UyRyxZQUFhLE1BQ2JuRSxVQUNFeEMsRUFBS3VNLFFBQVEsTUFBTyxPQUVsQmxJLE1BQU8sV0FBWWpULElBQUssVUFDeEJ1VixZQUFhLE9BQ2JlLGNBQWMsRUFDZFMsWUFBWSxVeERtRmhCcUQsaUJBQ0YsY3lEN0ZlLFNBQVN4TCxHQUN4QixPQUNFcUYsVUFDRXdOLFNBQ0Usd0JBQ0YvUCxRQUNFLCtJQUdKTixXQUVJbFAsVUFBVyxPQUFRK1EsTUFBTyxZQUMxQnVCLFVBQVcsSUFFYjVGLEVBQUt1TSxRQUFRLElBQUssTUFFaEJqWixVQUFXLFNBQ1grUSxNQUFPLHdEQUNQdUIsVUFBVyxHQUViNUYsRUFBS29NLGlCQUNMcE0sRUFBS3FNLG1CQUVIaEksTUFBTyw4QkFHUEEsTUFBTyxPQUdQQSxNQUFPLE9BR1BBLE1BQU8sTUFHUEEsTUFBTywyRUFDUHVCLFVBQVcsSUFHWHZCLE1BQU8sc0JBQ1B1QixVQUFXLFV6RHdEZjRGLGlCQUFpQixTMERoR0osU0FBU3hMLEdBQ3hCLElBQUl1WixFQUFnQix1QkFDaEJDLEVBQW1CLElBQU1ELEVBQWdCLElBQU1BLEVBQWdCLElBQU1BLEVBQWdCLElBQ3JGRSxHQUNGM1csUUFDRSwySUFFRm9RLFFBQ0UsY0FHQTNHLEVBQVV2TSxFQUFLdU0sUUFBUSxJQUFLLEtBQzVCdUgsR0FDRnhnQixVQUFXLFNBQ1grUSxNQUFPLHdEQUNQdUIsVUFBVyxHQUVUOFQsR0FDRnJWLE1BQU8sVUFBWWtWLEVBQWdCLFNBRWpDSSxHQUNGdFYsTUFBT21WLEVBQW1CLE1BQU9wb0IsSUFBSyxNQUN0Q3VXLGFBQWEsRUFDYi9CLFVBQVcsRUFDWHBELFdBRUk2QixNQUFPbVYsRUFBa0I1VCxVQUFXLElBR3BDdkIsTUFBTyxNQUFPalQsSUFBSyxNQUFPZ1IsZ0JBQWdCLEVBQzFDOEYsV0FBVyxFQUNYdEMsVUFBVyxLQUtiZ1UsR0FDRnZWLE1BQU8sSUFBS2pULElBQUssSUFDakJ3VSxVQUFXLEdBR1RpVSxHQUNGeFYsTUFBTyw0QkFDUHVCLFVBQVcsR0FFVGtVLEdBQ0Z6VixNQUFPLHFCQUNQdUIsVUFBVyxHQUVUbVUsR0FDRjFWLE1BQU8sSUFBTXJFLEVBQUs4TCxvQkFDbEJsRyxVQUFXLEVBQ1grQixhQUFhLEVBQ2JuRixXQUVJNkIsTUFBTyxJQUFNckUsRUFBSzhMLG9CQUNsQmxHLFVBQVcsSUFHWHZCLE1BQU8sSUFBS2pULElBQUssSUFDakJ3VSxVQUFXLEtBTWJvVSxHQUNGNVYsY0FBZSwwQkFBMkJoVCxJQUFLLE1BQy9DaVUsU0FBVW9VLEdBRVpPLEVBQWlCeFgsVUFDZitKLEVBQ0FtTixFQUNBMVosRUFBS29CLFFBQVFwQixFQUFLb00sa0JBQW1COVksVUFBVyxLQUNoRDBtQixFQUNBTCxFQUNBM1osRUFBS3FNLGtCQUNMeUgsRUFDQThGLEVBQ0FDLEVBQU1DLEVBQ05DLEdBR0YsSUFBSUUsR0FDRjFOLEVBQ0FtTixFQUNBTSxFQUNBTCxFQUNBM1osRUFBS3FNLGtCQUNMeUgsRUFDQThGLEVBQ0FDLEVBQU1DLEVBQ05DLEdBRUZKLEVBQWNuWCxTQUFTLEdBQUdBLFNBQVd5WCxFQUNyQ0wsRUFBTXBYLFNBQVd5WCxFQUNqQkYsRUFBY3ZYLFNBQVMsR0FBR0EsU0FBV3lYLEVBRXJDLElBQUloRyxHQUNGM2dCLFVBQVcsU0FDWCtRLE1BQU8sTUFBT2pULElBQUssTUFDbkJvUixTQUFVeVgsR0FFWixPQUNFNVosU0FBVSxPQUNWZ0YsU0FBVW9VLEVBQ1ZsVixRQUFTLDRDQUNUL0IsV0FFSWxQLFVBQVcsV0FDWCtRLE1BQU8sSUFBTWtWLEVBQWdCLFVBQVdub0IsSUFBSyxLQUM3Q3VXLGFBQWEsRUFDYnBELFFBQVMseUJBQ1QvQixVQUNFeVIsRUFDQWpVLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUFPa1YsS0FFeENsWCxRQUNFalIsSUFBSyxRQUNMaVUsU0FBVW9VLEVBQ1ZqWCxTQUFVeVgsSUFHZDFOLEdBRUVsSSxNQUFPLEtBQU1qVCxJQUFLLE1BQ2xCd1UsVUFBVyxFQUNYdUMsWUFBWSxFQUNaUixhQUFhLEVBQ2JwQyxRQUFTLElBQU12RixFQUFLNkwsU0FDcEJ4RyxTQUNFLDBLQUdGN0MsVUFBV3lSLElBRWJILEVBQ0E5VCxFQUFLcU0sa0JBQ0wwTixFQUNBRixFQUFNQyxFQUNORixHQUNDdlYsTUFBTyxjMUQ1Q1ZtSCxpQkFBaUIsUTJEakdKLFNBQVN4TCxHQUN4QixPQUNFSyxTQUFVLE9BQVEsT0FDbEJzQyxrQkFBa0IsRUFDbEI0QyxRQUFTLGtCQUVURixVQUNJd04sU0FBVSxrcUhBRWRyUSxXQUdJNkIsTUFBTyxLQUNQalQsSUFBSyxPQUFROFcsV0FBVyxFQUFNM0QsUUFBUyxJQUN2Q3FCLFVBQVcsS0FLWHRTLFVBQVcsU0FDWCtRLE1BQU8sb0JBQ1BqVCxJQUFLLFFBQVMrVyxZQUFZLEVBQzFCdkMsVUFBVyxJQUlYdFMsVUFBVyxTQUNYK1EsTUFBTyw4QkFDUHVCLFVBQVcsR0FFYjVGLEVBQUttTSxpQkFDTG5NLEVBQUtxTSxtQkFFSC9ZLFVBQVcsU0FDWCtRLE1BQU9yRSxFQUFLK0wsVUFBWSxPQUN4Qm5HLFVBQVcsR0FHYjVGLEVBQUt1TSxRQUFRLFFBQVEsTUFFbkI3RSxjQUFjLEVBQ2RTLFlBQVksRUFDWjVELFFBQVMsYzNEd0RiaUgsaUJBQWlCLE00RGxHSixTQUFTeEwsR0FDeEIsT0FDRXdDLFdBRUU2QixNQUFPLG1CQUNQalQsSUFBSyxpQkFDTCtXLFlBQVksRUFDWlIsYUFBYSxFQUNiTyxXQUFXLEVBQ1gxRixXQUVFNkIsTUFBTyxzQkFDUGpULElBQUssdUJBQ0w4VyxXQUFXLEVBQ1hQLGFBQWEsRUFDYnJVLFVBQVcsU0FHWCtRLE1BQU8sSUFDUGpULElBQUssbUJBQ0wrVyxZQUFZLEVBQ1pULGNBQWMsRUFDZHBVLFVBQVcsYUFHZnFQLGtCQUFrQixRNUQwRWxCNkksaUJBQWlCLE82RG5HSixTQUFVeEwsR0FFdkIsSUFtQklrYSxHQUNBNW1CLFVBQVcsV0FDWDhRLGNBQWUsTUFDZmhULElBQUssY0FDTCtXLFlBQVksRUFDWjNGLFdBVEFsUCxVQUFXLFFBQ1grUSxNQUFPLG9GQVdYLE9BQ0lnQixVQUNJNk4sUUFBUyxhQUNUcFEsUUFBUyx1R0FFYk4sVUFDSXhDLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxzQkFqQ1RwWixVQUFXLFNBQ1grUSxNQUFPLCtCQUlQL1EsVUFBVyxTQUNYME8sV0FFUXFDLE1BQU8sSUFBS2pULElBQUssT0E0QnJCOG9CLEVBQ0FsYSxFQUFLNk0scUI3RDREYnJCLGlCQUFpQixVOERwR0osU0FBU3hMLEdBK0N4QixPQUNFMkMsa0JBQWtCLEVBQ2xCdEMsU0FBVSxNQUFPLE9BQ2pCZ0YsVUEzQ0E2TixRQUFTLGlCQUNUcFEsUUFBUyx1dURBb0JUK1AsU0FBVSxpOURBdUJWdE8sUUFBUyxPQUNUL0IsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS29NLGtCQUFtQjlZLFVBQVcsU0FBVXNTLFVBQVcsSUFDckU1RixFQUFLb0IsUUFBUXBCLEVBQUtxTSxtQkFBb0IvWSxVQUFXLFNBQVVzUyxVQUFXLEtBRXBFdFMsVUFBVyxXQUNYOFEsY0FBZSw4QkFDZkcsUUFBUyxXQUNUL0IsVUFBV3hDLEVBQUtrTix1QkF6RHBCNVosVUFBVyxTQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxTQTBEakI0TyxFQUFLdU0sUUFBUSxJQUFLLEtBQU0zRyxVQUFXLEtBRWpDdFMsVUFBVyxTQUNYK1EsTUFBTyxrRkFDUHVCLFVBQVcsVTlEb0NmNEYsaUJBQWlCLFMrRHJHSixTQUFTeEwsR0FDeEIsSUFBSW1hLEdBQ0Y5VixNQUFPLElBQUtqVCxJQUFLLElBQ2pCb1IsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUFPLHFCQUkxQyxPQUNFaEUsU0FBVSxNQUNWZ0YsU0FDRSx3WEFNRmQsUUFBUyxPQUNUL0IsV0FHSWxQLFVBQVcsVUFDWCtRLE1BQU8sNkJBR1AvUSxVQUFXLFNBQ1grUSxNQUFPLEtBQU1qVCxJQUFLLElBQ2xCb1IsV0FBWTZCLE1BQU8sU0FHbkIvUSxVQUFXLFNBQ1grUSxNQUFPLE1BQU9qVCxJQUFLLE9BRXJCNE8sRUFBS3VNLFFBQVEsU0FBVSxXQUVyQmpaLFVBQVcsUUFDWDhRLGNBQWUsT0FBUWhULElBQUssVUFBVytXLFlBQVksRUFDbkQzRixVQUNFeEMsRUFBS2tOLHNCQUNMaU4sS0FJRjdtQixVQUFXLE9BQ1grUSxNQUFPLE9BQVFqVCxJQUFLLE9BQ3BCd1UsVUFBVyxLQUdYdFMsVUFBVyxTQUNYK1EsTUFBTyxvQkFDUDdCLFVBQVd4QyxFQUFLbU0sbUJBRWxCbk0sRUFBS3lNLG9CQUNMek0sRUFBS29CLFFBQVFwQixFQUFLcU0sbUJBQW9COUgsUUFBUyxPQUMvQ3ZFLEVBQUs2TSxxQi9EZ0RQckIsaUJBQWlCLE9nRXRHSixTQUFVeEwsR0FDekIsSUFBSW1VLEdBQ0ZyUixRQUNFLG9WQUtGb1EsUUFBVyxhQUNYa0gsV0FDRSx1M0JBcUJBQyxHQUNGL21CLFVBQVcsU0FDWDBPLFdBQ0dxQyxNQUFPLGdCQUNQQSxNQUFPLFFBR1JpVyxHQUNGaG5CLFVBQVcsVUFDWDBPLFdBQ0dxQyxNQUFPLElBQU1qVCxJQUFLLE1BQ2xCaVQsTUFBTyxJQUFLalQsSUFBSyxNQUVwQm1ULFFBQVMsTUFDVC9CLFVBQVd4QyxFQUFLbU0sbUJBRWRvTyxHQUNGbFcsTUFBTyxJQUNQalQsSUFBSyxJQUNMaVUsU0FBVThPLEVBQ1YzUixVQUNFOFgsRUFDQXRhLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTDFNLEVBQUtxTSxrQkFDTHJNLEVBQUtvTSxpQkFDTHBNLEVBQUs2TSxnQkFHTDJOLEdBQ0ZuVyxNQUFPLDJDQUNQcUQsY0FBYyxFQUNkdFcsSUFBSyxJQUNMZ1IsZ0JBQWdCLEVBQ2hCSSxVQUNFOFgsRUFDQUMsR0FFRWpuQixVQUFXLFVBQ1grUSxNQUFPLGdEQUNQdUIsVUFBVyxLQUtqQixPQUNFdkYsU0FBVSxPQUNWc0Msa0JBQWtCLEVBQ2xCMEMsU0FBVThPLEVBQ1YzUixVQUNFeEMsRUFBS3VNLFFBQVEsWUFBYSxlQUV4QmpaLFVBQVcsT0FDWCtRLE1BQU8sZ0JBQ1BqVCxJQUFLLElBQ0x1VyxhQUFhLEVBQ2JuRixXQUVJbFAsVUFBVyxlQUNYK1EsTUFBTyxtQkFJYnJFLEVBQUt1TSxRQUFRLE9BQVEsS0FDckJ2TSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLcU0sa0JBQ0xyTSxFQUFLb00sa0JBR0hoSSxjQUNFLHFGQUVGaFQsSUFBSyxJQUNMb1IsVUFDRXhDLEVBQUt1TSxRQUFRLE9BQVEsS0FDckJ2TSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLcU0sa0JBQ0xyTSxFQUFLb00saUJBQ0xtTyxFQUNBQyxLQUlGcFcsY0FBZSxRQUNmaFQsSUFBSyxJQUNMdVcsYUFBYSxFQUNibkYsV0FFSTRCLGNBQWUsUUFDZmhULElBQUssSUFDTG9SLFVBQVdnWSxJQUVieGEsRUFBS3VNLFFBQVEsT0FBUSxLQUNyQnZNLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTDFNLEVBQUtxTSxrQkFDTHJNLEVBQUtvTSxpQkFDTHBNLEVBQUs2TSxpQkFNUHZaLFVBQVcsV0FDWCtRLE1BQU8saUNBQ1BzRCxhQUFhLEVBQ2JuRixXQUVRbFAsVUFBVyxRQUNYK1EsTUFBTyxnQkFwSG5CL1EsVUFBVyxTQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxLQUNsQnNXLGNBQWMsRUFDZFMsWUFBWSxHQW9IRmtTLElBR1JyYSxFQUFLNk0sY0FDTHdOLFNoRTlDRjdPLGlCQUFpQixRaUV2R0osU0FBU3hMLEdBQ3hCLElBQUltVSxHQUNGclIsUUFBVSwwdkJBVVYrUCxTQUFVLDQwU0FxRlZLLFFBQVMsOGRBUVB1SCxFQUFrQnphLEVBQUt1TSxRQUFRLElBQUssS0FFcENpSSxHQUVGbGhCLFVBQVcsT0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJpVSxVQUFXOE4sZUFBZ0IsNkhBQzNCM1EsV0FFSTZCLE1BQU8sT0FBUXVCLFVBQVcsSUFHMUJ4QixjQUFlLFVBQVdoVCxJQUFLLElBQy9CaVUsVUFBVzhOLGVBQWdCLFdBQzNCM1EsV0FFSWxQLFVBQVcsY0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJtVCxRQUFTLFNBSWZ2RSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wrTixJQUlBQyxHQUVGclcsTUFBTyxjQUNQalQsSUFBSyxLQUNMaVUsU0FBVSxTQUNWN0MsV0FFSWxQLFVBQVcsT0FDWCtRLE1BQU9yRSxFQUFLOEwsb0JBQ1psRyxVQUFXLEtBTWIrVSxJQUVBcm5CLFVBQVcsU0FDWCtRLE1BQU8sS0FBTWpULElBQUssS0FDbEJzVyxjQUFjLEVBQ2RTLFlBQVksRUFDWi9GLGdCQUFnQixFQUNoQndELFVBQVcsRUFDWHBELFdBRUlsUCxVQUFXLFVBQ1grUSxNQUFPLFVBRVRyRSxFQUFLNk0sY0FDTDdNLEVBQUswTSxxQkFDTCtOLEVBQ0FDLEtBS0ZFLEdBRUZ0bkIsVUFBVyxRQUNYK1EsTUFBT3JFLEVBQUs4TCxvQkFDWmxHLFVBQVcsR0FHVGlWLEVBQWEsU0FBVXpXLEVBQWVoVCxFQUFLb2IsR0FDN0MsSUFBSXpLLEVBQU8vQixFQUFLb0IsU0FFWjlOLFVBQVcsV0FDWDhRLGNBQWVBLEVBQ2ZoVCxJQUFLQSxFQUNMK1csWUFBWSxFQUNaM0YsWUFBYWxTLE9BQU9xcUIsSUFFdEJuTyxPQU1GLE9BSkF6SyxFQUFLUyxTQUFTdlAsS0FBSzJuQixHQUNuQjdZLEVBQUtTLFNBQVN2UCxLQUFLK00sRUFBSzZNLGVBQ3hCOUssRUFBS1MsU0FBU3ZQLEtBQUsrTSxFQUFLME0sc0JBQ3hCM0ssRUFBS1MsU0FBU3ZQLEtBQUt3bkIsR0FDWjFZLEdBR0wrWSxHQUVGeG5CLFVBQVcsV0FDWCtRLE1BQU8sT0FBUzhQLEVBQVN0QixTQUFTeGxCLE1BQU0sS0FBS0YsS0FBSyxLQUFPLFFBR3ZENHRCLEdBRUZ6bkIsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFVBQVd4QyxFQUFLbU0sa0JBQ2hCdkcsVUFBVyxHQUdUb1YsR0FHRjNXLE1BQU9yRSxFQUFLOEwsb0JBQXNCLFVBQ2xDbkUsYUFBYSxFQUNidEMsU0FBVThPLEVBQ1Z2TyxVQUFXLEVBQ1hwRCxXQUVJNEIsY0FBZStQLEVBQVNyUixTQUUxQmdZLEdBRUV4bkIsVUFBVyxXQUNYK1EsTUFBT3JFLEVBQUs4TCxvQkFDWmxHLFVBQVcsS0FLYnFWLEdBR0Y1VyxNQUFPLEtBQ1BqVCxJQUFLLEtBQ0x3VSxVQUFXLEVBQ1hQLFVBQVl3TixTQUFVc0IsRUFBU3RCLFNBQVVLLFFBQVNpQixFQUFTakIsU0FDM0QxUSxVQUNFeEMsRUFBSzZNLGNBQ0w3TSxFQUFLME0scUJBQ0wrTixFQUNBSyxFQUNBRSxFQUNBRCxFQUNBLFNBTUosT0FGQUMsRUFBYXhZLFNBQVN2UCxLQUFLZ29CLElBR3pCNWEsU0FBVSxPQUNWc0Msa0JBQWtCLEVBQ2xCMEMsU0FBVThPLEVBQ1Y1UCxRQUFTLHVCQUNUL0IsVUFDRXhDLEVBQUs2TSxjQUNMN00sRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMK04sRUFDQU0sRUFDQXZHLEdBRUVsaEIsVUFBVyxVQUNYK1EsTUFBTyx5RUFFVHdXLEVBQVcsZUFBZ0IsS0FDM0JBLEVBQVcsS0FBTSxNQUVmelcsY0FBZSxnQkFDZmhULElBQUssSUFFTHdVLFVBQVcsRUFDWHBELFVBQ0V4QyxFQUFLME0scUJBQ0wrTixFQUNBUSxLQUtGalosV0FDSXFDLE1BQU9yRSxFQUFLOEwsb0JBQXNCLE1BQVE5TCxFQUFLOEwsc0JBQy9DekgsTUFBT3JFLEVBQUs4TCxvQkFBc0IsVUFFdENsRyxVQUFXLEdBRWJvVixFQUNBTixTakV0TEZsUCxpQkFBaUIsUWtFeEdKLFNBQVN4TCxHQUN0QixJQVNJa2IsR0FDQWxiLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTDFNLEVBQUt1TSxRQUFRLEtBQU0sTUFDbkJ2TSxFQUFLb0IsUUFBUXBCLEVBQUs2TSxlQUFnQnhJLE1BQU8saUNBQW1DckUsRUFBS2dNLGNBQ2pGaE0sRUFBS29CLFFBQVFwQixFQUFLb00sa0JBQW1CN0gsUUFBUyxPQUM5Q3ZFLEVBQUtvQixRQUFRcEIsRUFBS3FNLG1CQUFvQjlILFFBQVMsUUFFM0NqUixVQUFXLE9BQ1grUSxNQUFPLDRCQUdQL1EsVUFBVyxPQUNYK1EsTUFBTyw0QkFHUC9RLFVBQVcsT0FDWCtRLE1BQU8sWUFDUGpULElBQUssV0FHTGtDLFVBQVcsT0FDWCtRLE1BQU8sd0JBR1AvUSxVQUFXLFdBQ1grUSxNQUFPLDZEQUNQalQsSUFBSyx1Q0FHTGtDLFVBQVcsU0FDWDBPLFdBRVFxQyxNQUFPLElBQUtqVCxJQUFLLE9BQ2pCbVQsUUFBUyxVQU16QixPQUNJbEUsU0FBVSxNQUdWc0Msa0JBQWtCLEVBQ2xCNEMsUUF0RGlCLG9CQXVEakJGLFNBcERGLDRGQXFERTdDLFdBRVFsUCxVQUFXLE9BQ1grUSxNQTFEUyxRQUtqQi9RLFVBQVcsT0FDWCtRLE1BQU8sa0JBdURML1QsT0FBTzRxQixTbEUwQ2IxUCxpQkFBaUIsVW1FekdKLFNBQVV4TCxHQUN6QixPQUNFSyxTQUFVLFdBQ1ZnRixTQUFVLGtJQUNWN0MsV0FFSWxQLFVBQVcsU0FDWCtRLE1BQU8sTUFDUHVCLFVBQVcsSUFHWHRTLFVBQVcsT0FDWCtRLE1BQU8sY0FHUEEsTUFBTyxNQUFPalQsSUFBSyxXQUNuQm9SLFdBRUlsUCxVQUFXLFNBQ1grUSxNQUFPLFlBS1gvUSxVQUFXLFdBQ1grUSxNQUFPLElBQUtqVCxJQUFLLEtBRW5CNE8sRUFBSzJNLG1CQUVIclosVUFBVyxTQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxPQUVyQjRPLEVBQUtxTSx5Qm5FMEVQYixpQkFBaUIsT29FMUdKLFNBQVN4TCxHQUN4QixPQUNFcUYsVUFDRXZDLFFBRUUsaWdDQWFGM1UsS0FDRSx1d0NBZUYwa0IsU0FFRSx5bkxBa0VGSyxRQUFTLGNBRVgzTyxRQUFTLElBQ1QvQixVQUNFeEMsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMMU0sRUFBSzZNLGVBRUh2WixVQUFXLE9BQ1grUSxNQUFPLElBQUtqVCxJQUFLLFlwRUpyQm9hLGlCQUFpQixNcUUzR0osU0FBU3hMLEdBMDFCeEIsT0FDRUssU0FBVSxNQUFPLE9BQ2pCc0Msa0JBQWtCLEVBQ2xCMEMsVUEzMUJBQSxTQUFVLDJLQUdWd04sU0FBVSxvc2xDQStsQlZLLFFBQVMsK29YQTRNVGlJLE9BQVEsNjBFQStDUjNZLFVBQ0V4QyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLb00saUJBQ0xwTSxFQUFLcU0sa0JBQ0xyTSxFQUFLNk0scUJyRXh2QlByQixpQkFBaUIsS3NFNUdKLFNBQVN4TCxHQUN4QixJQUFJb2IsR0FDRnRZLFFBQ0UsMFJBSUZvUSxRQUNHLHNCQUNITCxTQUNFLDJGQUVKLE9BQ0V4UyxTQUFVLFVBQ1ZnRixTQUFVK1YsRUFDVjdXLFFBQVMsS0FDVC9CLFVBQ0V4QyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0sc0JBRUhwWixVQUFXLFNBQ1gwTyxVQUNFaEMsRUFBS3FNLG1CQUNKaEksTUFBTyxJQUFNalQsSUFBSyxhQUNsQmlULE1BQU8sSUFBS2pULElBQUssUUFJcEJrQyxVQUFXLFNBQ1gwTyxXQUNHcUMsTUFBT3JFLEVBQUtnTSxZQUFjLE1BQU9wRyxVQUFXLEdBQzdDNUYsRUFBSzZNLGlCQUlQeEksTUFBTyxPQUdQL1EsVUFBVyxXQUNYOFEsY0FBZSxPQUFRaFQsSUFBSyxjQUFlK1csWUFBWSxFQUN2RDNGLFVBQ0V4QyxFQUFLaU4sWUFFSDNaLFVBQVcsU0FDWCtRLE1BQU8sS0FBTWpULElBQUssS0FDbEJpVSxTQUFVK1YsRUFDVjdXLFFBQVMsaUJ0RStEakJpSCxpQkFBaUIsT3VFN0dKLFNBQVN4TCxHQUN0QixPQUNFcUYsVUFDRXZDLFFBQ0UsMFRBS0ZvUSxRQUNFLG1CQUVKMVEsVUFDRXhDLEVBQUsyTSxrQkFDTDNNLEVBQUtxTSxrQkFDTHJNLEVBQUs2TSxlQUVIdlosVUFBVyxPQUFRK1EsTUFBTyxxQnZFNkZoQ21ILGlCQUFpQixTd0U5R0osU0FBU3hMLEdBQ3hCLE9BQ0UyQyxrQkFBa0IsRUFDbEIwQyxVQUNFdkMsUUFDRSxteENBa0JKTixVQUNFeEMsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMMU0sRUFBS29NLGlCQUNMcE0sRUFBS3FNLGtCQUNMck0sRUFBSzRNLFlBQ0w1TSxFQUFLZ04sbUJ4RWtGUHhCLGlCQUFpQixTeUUvR0osU0FBU3hMLEdBQ3RCLE9BQ0lxRixVQUNJNk4sUUFBVSxrQkFDVnBRLFFBQ0Esd1VBU0pOLFVBQ0l4QyxFQUFLdU0sUUFDRCxVQUNBLFFBRUkzRyxVQUFZLEVBQ1pwRCxXQUdNNkIsTUFBTyxPQUFRdUIsVUFBVyxJQUcxQnRTLFVBQVksU0FDWitRLE1BQVEsaUJBS3RCckUsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHNCQUVEcFosVUFBVyxTQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxRQUduQmtDLFVBQVcsU0FDWCtRLE1BQU8sTUFBT2pULElBQUssUUFHbkJrQyxVQUFXLFNBQ1grUSxNQUFPLE9BQVFqVCxJQUFLLE9BQ3BCd1UsVUFBVyxJQUVmNUYsRUFBS29NLGtCQUVEOVksVUFBVyxTQUNYK1EsTUFBTyxpQkFDUDdCLFVBQ0l4QyxFQUFLbU0sbUJBR2JuTSxFQUFLcU0sbUJBRUQvWSxVQUFXLE9BQ1grUSxNQUFPLGtCQUFtQmpULElBQUssSUFDL0JtVCxRQUFTLE1BRWJ2RSxFQUFLOE0sb0JBRUR4WixVQUFXLFFBQ1g4USxjQUFlLDZCQUE4QmhULElBQUssSUFDbERtVCxRQUFTLElBQ1QvQixXQUNLNEIsY0FBZSxzQkFDaEJwRSxFQUFLa04sd0JBR2JsTixFQUFLNk0sZUFFRHZaLFVBQVcsT0FBUStRLE1BQU8sZUFJMUIvUSxVQUFXLFNBQVUrUSxNQUFPLDhCQUs1QkEsTUFBTyxLQUFNalQsSUFBSyxPQUlsQmtDLFVBQVcsU0FBVStRLE1BQU8sdUJBQzVCdUIsVUFBVyxJQUduQnJCLFFBQVMsY3pFc0JiaUgsaUJBQWlCLE8wRS9HckIsU0FBU3hMLEdBQ1AsT0FDRTJDLGtCQUFrQixFQUNsQkgsV0FFSWxQLFVBQVcsT0FDWCtRLE1BQU8sZ0VBQ1B1QixVQUFXLElBR2I1RixFQUFLdU0sUUFDSCx5QkFDQSxHQUVFM0csVUFBVyxLQUlidkIsTUFBTyxxQkFDUGhDLFFBQ0VqUixJQUFLLE1BQ0x1VixZQUFhLFVBSWZyVCxVQUFXLE1BQ1grUSxNQUFPLFNBQ1A3QixXQUVJbFAsVUFBVyxlQUNYK1EsTUFBTyxTQUdQL1EsVUFBVyxjQUNYK1EsTUFBTyxhQUdQL1EsVUFBVyxpQkFDWCtRLE1BQU8sZUFHUEEsTUFBTyxRQUNQalQsSUFBSyxRQUNMb1IsV0FFSTZCLE1BQU8sY0FDUGpULElBQUssUUFDTHVXLGFBQWEsRUFDYnZGLGdCQUFnQixFQUNoQkksV0FFSWxQLFVBQVcsT0FDWCtRLE1BQU8sU0FFVHJFLEVBQUtvTSxpQkFDTHBNLEVBQUtxTSxtQkFFSGhJLE1BQU8sT0FDUHVCLFVBQVcsUUFPbkJ2QixNQUFPLFVBQ1BqVCxJQUFLLFVBQ0wrVyxZQUFZLEVBQ1ozRixXQUVJNkIsTUFBTyxZQUNQalQsSUFBSyxPQUNMdVcsYUFBYSxFQUNidkYsZ0JBQWdCLEVBQ2hCSSxXQUVJbFAsVUFBVyxPQUNYK1EsTUFBTyxPQUNQdUIsVUFBVyxHQUViNUYsRUFBS29NLGlCQUNMcE0sRUFBS3FNLG1CQUVIaEksTUFBTyxPQUNQdUIsVUFBVyxVQVN2QnZCLE1BQU8sa0JBR1BBLE1BQU8sS0FDUGhDLFFBQ0VqUixJQUFLLElBQ0x1VixZQUFhLGdCMUVhbkI2RSxpQkFDRixhMkVsSGUsU0FBVXhMLEdBQ3pCLElBQUlxYixHQUFhL0UsZUFBZ0IsaUhBRTdCZ0YsR0FDRmpYLE1BQU8sMkJBR0xrWCxFQUE0QnZiLEVBQUtvQixRQUFRa2EsR0FDM0NqVyxTQUFVZ1csRUFDVmhaLFFBRUVELGdCQUFnQixFQUNoQndELFVBQVcsRUFDWHBELFVBQVd4QyxFQUFLb0IsUUFBUWthLEdBQTZCMVYsVUFBVyxRQUloRTRWLEVBQTBCeGIsRUFBS29CLFFBQVFtYSxHQUN6Q2pvQixVQUFXLFNBR1Rtb0IsRUFBMEJ6YixFQUFLb0IsUUFBUW1hLEdBRXpDM1YsVUFBVyxJQU1iLE9BQ0V2RixTQUFVLE1BQU8sV0FBWSxtQkFDN0JzQyxrQkFBa0IsRUFDbEJnRSxZQUFhLE1BQ2JuRSxXQVArQzZCLE1BQU8sU0FBVW9ELE1BQU0sSUFDaEJwRCxNQUFPLGVBQWdCb0QsTUFBTSxHQVNqRnpILEVBQUt1TSxRQUFRLFVBQVcsVUFDeEJ2TSxFQUFLdU0sUUFBUSxRQUFTLFNBR3BCalosVUFBVyxlQUNYK1EsTUFBTyxpQkFBa0JqVCxJQUFLLFdBQzlCb1IsVUFBV2daLEdBQ1huWixRQUFTalIsSUFBSyxhQUFjOFcsV0FBVyxFQUFNdkIsWUFBYSxTQUkxRHJULFVBQVcsZUFDWCtRLE1BQU8sYUFBY2pULElBQUssV0FDMUJvUixVQUFXZ1osS0FJWGxvQixVQUFXLGVBQ1grUSxNQUFPLFlBQWFqVCxJQUFLLE9BQ3pCb1IsVUFBV2daLEtBSVhsb0IsVUFBVyxvQkFDWCtRLE1BQU8sU0FBVWpULElBQUssU0FDdEJpVSxTQUFVZ1csRUFDVjdZLFVBQVdpWixLQUlYbm9CLFVBQVcsb0JBQ1grUSxNQUFPLE9BQVFqVCxJQUFLLE9BQ3BCaVUsU0FBVWdXLEVBQ1Y3WSxVQUFXaVosVzNFZ0RmalEsaUJBQWlCLFU0RXJISixTQUFTeEwsR0FDeEIsSUFBSXVNLEdBQ0Z2SyxVQUNFaEMsRUFBS3VNLFFBQVEsS0FBTSxLQUNuQnZNLEVBQUt1TSxRQUNILEtBQ0EsTUFFRS9KLFVBQVcsWUFNZmtaLEdBQ0Zwb0IsVUFBVyxPQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxPQUdqQm9qQixHQUNGbGhCLFVBQVcsT0FDWCtRLE1BQU8sS0FBTWpULElBQUssS0FHaEI0bkIsR0FDRjFsQixVQUFXLE9BQ1grUSxNQUFPLGtCQUNQdUIsVUFBVyxHQUdUdVEsR0FDRjlSLE1BQU8sTUFBT2pULElBQUssTUFDbkJtVCxRQUFTLElBQ1QvQixVQUNFa1osRUFDQWxILEdBQ0NsaEIsVUFBVyxPQUFRK1EsTUFBTywwQ0FDM0JyRSxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUFhNUksTUFBTyxrQkFDdENrSSxJQVNKLE9BQ0VsTSxTQUFVLE1BQ1ZnRixTQUNFLHdPQUlGN0MsV0FLSTRCLGNBQWUsU0FBVWhULElBQUssUUFDOUJpVSxTQUFVLGVBQ1Y3QyxVQUFXMlQsRUFBTTVKLEdBQ2pCaEksUUFBUyxhQUdURixNQUFPLGVBQWdCalQsSUFBSyxJQUM1QmlVLFNBQVUsNkJBQ1Y3QyxVQUFXMlQsRUFBTTVKLEdBQ2pCaEksUUFBUyxhQUlUalIsVUFBVyxRQUNYK1EsTUFBTyw4QkFBK0JqVCxJQUFLLFFBQzNDaVUsU0FBVSw4QkFDVjdDLFVBQVd3VyxFQUFhN0MsRUFBTTVKLEtBRzlCalosVUFBVyxRQUNYK1EsTUFBTywwQkFBMkJqVCxJQUFLLElBQ3ZDaVUsU0FBVSxvQ0FDVjdDLFVBQVdrWixFQUFRMUMsRUFBYTdDLEdBdENwQzlSLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixTQUFVMlQsRUFBSzNULFVBcUNtQytKLEtBRzlDbkksY0FBZSxVQUFXaFQsSUFBSyxJQUMvQm9SLFVBQVd3VyxFQUFhN0MsRUFBTTVKLEtBRzlCbkksY0FBZSxzQkFBdUJoVCxJQUFLLElBQzNDb1IsVUFBV3hDLEVBQUs2TSxjQUFlTixLQUcvQmxJLE1BQU8sZ0JBQWlCalQsSUFBSyxJQUM3QmlVLFNBQVUsdUVBRVY3QyxVQUFXd1csRUFBYWhaLEVBQUtxTSxrQkFBbUJFLEtBR2hEalosVUFBVyxPQUNYK1EsTUFBTyxrQ0FBb0NqVCxJQUFLLEtBS2xEc3FCLEVBQ0FsSCxFQUtBeFUsRUFBS3FNLGtCQUNMck0sRUFBSzZNLGNBQ0xtTSxFQUNBaFosRUFBS29CLFFBQVFwQixFQUFLaU4sWUFBYTVJLE1BQU8sbUJBRXRDa0ksR0FFQ2xJLE1BQU8sZ0I1RUNWbUgsaUJBQWlCLE82RXRISixTQUFTeEwsR0FNeEIsT0FDRUssU0FBVSxNQUNWZ0YsVUFDRXZDLFFBQVMsdVJBSVQrUCxTQUNFLGFBQ0ZLLFFBQ0UscUJBRUoxUSxXQUNJbFAsVUFBVyxTQUNYK1EsTUFBTyxJQUFNalQsSUFBSyxJQUNsQm9SLFVBQ0V4QyxFQUFLbU0sa0JBQ0g3WSxVQUFXLFFBQ1grUSxNQUFPLFNBQVVqVCxJQUFLLFFBRXRCa0MsVUFBVyxRQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxVQUl6QjRPLEVBQUtxTSxrQkFDTHJNLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTDFNLEVBQUs2TSxlQUNIdlosVUFBVyxPQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxNQUVsQmtDLFVBQVcsT0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJpVSxVQUFXOE4sZUFBZ0IsOEJBRTNCN2YsVUFBVyxPQUNYK1EsTUFBTyxVQUFXalQsSUFBSyx1QkFDdkJzVyxjQUFjLEVBQU1TLFlBQVksRUFDaEN2QyxVQUFXLElBRVh0UyxVQUFXLE9BQ1grUSxNQUFPLFVBQVdqVCxJQUFLLE1BQ3ZCc1csY0FBYyxFQUFNUyxZQUFZLElBRWhDN1UsVUFBVyxPQUNYK1EsTUFBTyxRQUFTalQsSUFBSyxNQUNyQnNXLGNBQWMsRUFBTVMsWUFBWSxJQUVoQzdVLFVBQVcsUUFDWDhRLGNBQWUsT0FBUWhULElBQUssTUFDNUJvUixVQUNFeEMsRUFBS2lOLGNBR1AzWixVQUFXLFFBQ1g4USxjQUFlLFdBQVloVCxJQUFLLFNBQ2hDb1IsV0FDSWxQLFVBQVcsT0FDWCtRLE1BQU8sTUFBT2pULElBQUssTUFDbkJzVyxjQUFjLEVBQU1TLFlBQVksSUFFaEM3VSxVQUFXLE9BQ1grUSxNQUFPLFNBQVVqVCxJQUFLLE1BQ3RCc1csY0FBYyxFQUFNUyxZQUFZLElBRWhDN1UsVUFBVyxPQUNYK1EsTUFBTyxPQUFRalQsSUFBSyxNQUNwQnNXLGNBQWMsRUFBTVMsWUFBWSxHQUVsQ25JLEVBQUtpTixZQUVQNUgsVUFDRXZDLFFBQVMsc0JBR1h4UCxVQUFXLFFBQ1grUSxNQUFPLHlCQUEwQmpULElBQUssU0FBVytXLFlBQVksRUFDN0Q5QyxTQUFVLGtCQUNWN0MsV0FDSWxQLFVBQVcsVUFDWCtRLE1BQU8sNEJBQ1BnQixTQUFVLHFCQUNWN0MsV0FFSWxQLFVBQVcsT0FDWCtRLE1BQU9yRSxFQUFLNkwsU0FDWmpHLFVBQVcsS0FJakI1RixFQUFLaU4sY0FHUDNaLFVBQVcsV0FDWDhRLGNBQWUsV0FBWWhULElBQUssTUFBTytXLFlBQVksRUFDbkQ1RCxRQUFTLE1BQ1QvQixVQUNFeEMsRUFBS2lOLGNBSVgxSSxRQUFTLFk3RVdUaUgsaUJBQWlCLE04RXZISixTQUFTeEwsR0FDeEIsT0FDRTJDLGtCQUFrQixFQUNsQjRDLFFBQVMsV0FDVEYsU0FBVSwyL0VBQ1Y3QyxVQUNFeEMsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMMU0sRUFBS3FNLGtCQUNMck0sRUFBS29NLGtCQUlIOVksVUFBVyxTQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxLQUNsQm9SLFVBQVd4QyxFQUFLbU0sbUJBR2xCbk0sRUFBS3VNLFFBQVEsSUFBSyxLQUFNM0csVUFBVyxLQUlqQ3RTLFVBQVcsT0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJpVSxVQUFXOE4sZUFBZ0IsbU5BQzNCM1EsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS3FNLG1CQUFvQi9ZLFVBQVcsZ0JBQ2pEME0sRUFBSzRNLFlBQ0w1TSxFQUFLNk0sY0FDTDdNLEVBQUt5TSxvQkFDTHpNLEVBQUswTSx3QkFNUHBaLFVBQVcsU0FDWCtRLE1BQU8sZ0JBR1RyRSxFQUFLNE0sWUFDTDVNLEVBQUs2TSxxQjlFK0VQckIsaUJBQWlCLFcrRXhISixTQUFTeEwsR0FDeEIsSUFBSXFiLEVBQVksaUxBK0JaTSxHQVBNM2IsRUFBS3FNLG1CQVFiakssZ0JBQWdCLEVBQU13RCxVQUFXLEVBQ2pDUCxVQUFXdkMsUUFBUyxLQUFNK1AsU0FBVXdJLEdBQ3BDN1ksVUFDRXhDLEVBQUtxTSxtQkFoQ1A5SCxRQUFTLE9BQ1RGLE1BQU8saUJBQ1BzRCxhQUFhLEVBQ2IvQixVQUFXLEVBQ1hwRCxXQUVJbFAsVUFBVyxPQUFRK1EsTUFBTyxtQkE0QjVCckUsRUFBSzRNLGVBSVQsT0FDRWpLLGtCQUFrQixFQUNsQmdFLFlBQWEsTUFDYm5FLFVBQ0V4QyxFQUFLdU0sUUFBUSxXQUFZLFlBRXZCalosVUFBVyxlQUNYK1EsTUFBTyxZQUFhalQsSUFBSyxPQUN6Qm9SLFdBRUlsUCxVQUFXLE9BQ1grUSxNQUFPLGdCQUNQZ0IsVUFBV2lSLGVBQWdCK0UsR0FDM0JoWixPQUFRc1osTUFLWnJvQixVQUFXLG9CQUNYK1EsTUFBTywwQkFBMkJqVCxJQUFLLE9BQ3ZDaVUsVUFBV3ZDLFFBQVMsS0FBTStQLFNBQVV3SSxHQUNwQzdZLFVBQ0V4QyxFQUFLcU0sMkIvRXlEWGIsaUJBQWlCLE9nRnpISixTQUFTeEwsR0FDeEIsSUFBSTRiLEVBQVUsaUJBQ2QsT0FDRXZiLFNBQVUsU0FDVmtFLFFBQVMsTUFDVC9CLFdBRUk2QixNQUFPLElBQU11WCxFQUFTeHFCLElBQUssSUFDM0JvUixXQUFZbFAsVUFBVyxTQUFVK1EsTUFBTyxtQkFHeENBLE1BQU8saUJBQW1CdVgsRUFBVSxJQUFLalUsYUFBYSxFQUFNdlcsSUFBSyxJQUNqRW9SLFdBRUlsUCxVQUFXLFNBQ1grUSxNQUFPLElBQUtqVCxJQUFLLElBQ2pCc1csY0FBYyxFQUFNUyxZQUFZLElBR2hDOUQsTUFBT3VYLElBR1B0b0IsVUFBVyxVQUNYK1EsTUFBTyxhQUtYL1EsVUFBVyxZQUNYK1EsTUFBTyxPQUFRalQsSUFBSyxLQUFNK1csWUFBWSxFQUN0QzVELFFBQVMsWUFDVGxDLFFBQVNqUixJQUFLLElBQUt3VSxVQUFXLEtBRzlCdkIsTUFBTyxTQUNQaEMsUUFBU3NFLGVBQWlCdkUsZ0JBQWdCLFdoRnVGOUNvSixpQkFBaUIsS2lGMUhKLFNBQVN4TCxHQUN4QixJQW1DSTZWLEVBQVksd0RBUVpDLEdBQ0Z6UixNQUFPd1IsRUFDUGpRLFVBQVcsR0FFVGtPLEdBQ0Z4Z0IsVUFBVyxTQUFVK1EsTUFaQSxzQkFhckJ1QixVQUFXLEdBRVRvTyxFQUFTaFUsRUFBS29CLFFBQVFwQixFQUFLcU0sbUJBQW9COUgsUUFBUyxPQUN4RGdJLEVBQVV2TSxFQUFLdU0sUUFDakIsSUFDQSxLQUVFM0csVUFBVyxJQUdYNE0sR0FDRmxmLFVBQVcsVUFDWCtRLE1BQU8sbUNBRUwwUixHQUNGMVIsTUFBTyxXQUFZalQsSUFBSyxZQUV0QjRrQixHQUNGMWlCLFVBQVcsVUFDWCtRLE1BQU8sTUFBUXdSLEdBRWJJLEVBQVdqVyxFQUFLdU0sUUFBUSxTQUFVLE9BQ2xDMkosR0FDRjVpQixVQUFXLFNBQ1grUSxNQUFPLFdBQWF3UixHQUVsQk0sR0FDRjlSLE1BQU8sTUFBT2pULElBQUssT0FFakJnbEIsR0FDRmhVLGdCQUFnQixFQUNoQndELFVBQVcsR0FFVHlRLEdBQ0ZoUixVQWxGQWlSLGVBRUUsb2tFQWlGRi9RLFFBQVNzUSxFQUNUdmlCLFVBQVcsT0FBUStRLE1BQU93UixFQUMxQnhULE9BQVErVCxHQUVORyxHQUFvQkosRUFBTW5DLEVBQVFnQyxFQUFNQyxFQUFVMUosRUFBUzJKLEVBQUtILEVBQVlqQyxFQUFRdEIsRUFBU3NELEdBTWpHLE9BSkFLLEVBQUszVCxVQUFZeEMsRUFBS3VNLFFBQVEsVUFBVyxJQUFLOEosRUFBTUQsR0FDcERBLEVBQUs1VCxTQUFXK1QsRUFDaEJSLEVBQVd2VCxTQUFXK1QsR0FHcEJsVyxTQUFVLFVBQ1ZrRSxRQUFTLEtBQ1QvQixXQTFEQWxQLFVBQVcsT0FDWCtRLE1BQU8sTUFBT2pULElBQUssS0F5REMra0IsRUFBTW5DLEVBQVFnQyxFQUFNQyxFQUFVMUosRUFBUzJKLEVBQUtILEVBQVlqQyxFQUFRdEIsU2pGeUJwRmhILGlCQUFpQixVa0YzSEosU0FBU3hMLEdBR3hCLE9BQ0VLLFNBQVUsTUFDVnNDLGtCQUFrQixFQUNsQjBDLFVBRUV2QyxRQUVFLG9KQVNKTixXQUVJbFAsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQndVLFVBQVcsRUFDWHBELFdBRUlsUCxVQUFXLFFBQ1grUSxNQTFCVSxNQTBCWWpULElBekJkLFVBOEJaa0MsVUFBVyxVQUNYK1EsTUFBTyw4Q0FDUGpULElBQUssTUFLTGlULE1BQU8sbUVBQ1BqVCxJQUFLLElBQ0xvUixXQUdJNkIsTUFBTyxVQUFXalQsSUFBSyxVQUszQmtDLFVBQVcsVUFDWCtRLE1BakRjLE1BaURRalQsSUFoRFYsTUFpRFpvUixVQUFXLGdCbEZ5RWZnSixpQkFBaUIsTW1GNUhKLFNBQVN4TCxHQUN4QixJQUFJZ1UsR0FDRjFnQixVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGtCQUNoQm5LLFdBRUlxQyxNQUFPLE1BQU9qVCxJQUFLLE1BQ25Cd1UsVUFBVyxLQUVYdkIsTUFBTyxNQUFPalQsSUFBSyxNQUNuQndVLFVBQVcsS0FFWHZCLE1BQU8sSUFBS2pULElBQUssTUFFakJpVCxNQUFPLElBQUtqVCxJQUFLLE9BSXZCLE9BQ0VpUCxTQUFVLFFBQ1ZzQyxrQkFBa0IsRUFDbEI0QixRQUFTLEtBQ1QvQixVQUNFeEMsRUFBS3VNLFFBQVEsSUFBSyxLQUNsQnZNLEVBQUsyTSxtQkFFSHJaLFVBQVcsVUFDWCtRLE1BQU8sVUFBV2pULElBQUssUUFHdkJpVCxNQUFPLDRCQUE2QmpULElBQUssSUFDekN1VyxhQUFhLEVBQ2JuRixXQUVJbFAsVUFBVyxPQUNYK1EsTUFBTyxzQkFHUEEsTUFBTyxJQUFLakMsZ0JBQWdCLEVBQzVCd0QsVUFBVyxFQUNYcEQsVUFDRXhDLEVBQUt1TSxRQUFRLElBQUssS0FDbEJ2TSxFQUFLMk0sbUJBRUhyWixVQUFXLFVBQ1grUSxNQUFPLGlDQUdQL1EsVUFBVyxXQUNYME8sV0FDR3FDLE1BQU8sc0JBQ1BBLE1BQU8sZ0JBR1oyUCxHQUVFMWdCLFVBQVcsU0FDWCtRLE1BQU8sMEJBRVRyRSxFQUFLNE0sdUJuRmtFZnBCLGlCQUFpQixTb0Y3SEosU0FBU3hMLEdBb0R4QixPQUNFMkMsa0JBQWtCLEVBQ2xCMEMsVUEvQ0E2TixRQUFTLGlCQUNUcFEsUUFBUyxvNkRBdUJUK1AsU0FBVSxvK0RBd0JWdE8sUUFBUyxPQUNUL0IsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS29NLGtCQUFtQjlZLFVBQVcsU0FBVXNTLFVBQVcsSUFDckU1RixFQUFLb0IsUUFBUXBCLEVBQUtxTSxtQkFBb0IvWSxVQUFXLFNBQVVzUyxVQUFXLEtBRXBFdFMsVUFBVyxXQUNYOFEsY0FBZSw4QkFDZkcsUUFBUyxXQUNUL0IsVUFBV3hDLEVBQUtrTix1QkE3RHBCNVosVUFBVyxTQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxTQThEakI0TyxFQUFLdU0sUUFBUSxJQUFLLEtBQU0zRyxVQUFXLElBQ25DNUYsRUFBS3VNLFFBQVEsWUFBYSxXQUFZM0csVUFBVyxNQUUvQ3RTLFVBQVcsU0FDWCtRLE1BQU8sa0ZBQ1B1QixVQUFXLFVwRndEZjRGLGlCQUFpQixPcUY5SEosU0FBU3hMLEdBRXhCLElBQUk4TCxFQUFzQiwwQ0EyK0Z0QjJHLEdBQ0ZuZixVQUFXLFNBQ1grUSxNQUFPckUsRUFBSytMLFVBQ1puRyxVQUFXLEdBSVQ4TSxHQUNGcGYsVUFBVyxTQUNYME8sV0FBYXFDLE1BQU8sSUFBS2pULElBQUssTUFBU2lULE1BQU8sSUFBS2pULElBQUssT0FJdER5cUIsR0FDRnZvQixVQUFXLFNBQ1grUSxNQUFPLDREQUNQdUIsVUFBVyxHQXNCVGdOLEdBQ0Y1USxXQWxCQTFPLFVBQVcsVUFDWCtRLE1BQU8sS0FDUGpULElBQUssSUFDTHdVLFVBQVcsRUFDWHBELFVBQVd4QyxFQUFLc00sbUJBQW9CdVAsS0FLcEN2b0IsVUFBVyxVQUNYK1EsTUFBTyxPQUNQalQsSUFBSyxPQUNMd1UsVUFBVyxFQUNYcEQsVUFBV3hDLEVBQUtzTSxtQkFBb0J1UCxNQVNsQzFILEdBQ0ZyUixRQWhoR0EsNktBaWhHQStQLFNBdERZaUosZ3d3REF1RFovSSxNQWhXQSxtZkFpV0FHLFFBbERZLHdCQXNEVjZJLEdBQ0YxWCxNQUFPLFVBQVlyRSxFQUFLOEwsb0JBQ3hCekcsU0FBVThPLEVBQ1Z2TyxVQUFXLEdBSVRvVyxHQUNGMW9CLFVBQVcsT0FDWCtRLE1BQU8sWUE5VFAscXJIQThUZ0M3UixPQUFPTCxRQUFRLE1BQU8sS0FBTyxJQUM3RGYsSUFBSyxXQUNMK1csWUFBWSxHQUlWOFQsR0FDRjNvQixVQUFXLFdBQ1hpUyxRQUFTdUcsRUFDVHpHLFNBQVU4TyxFQUNWOVAsTUFBT3lILEVBQ1BsRyxVQUFXLEVBQ1hwRCxVQUFXd1osRUFBT0QsSUE4QnBCLE9BQ0UxYixTQUFVLFFBQ1ZzQyxrQkFBa0IsRUFDbEI0QyxRQUFTdUcsRUFDVHpHLFNBQVU4TyxFQUNWNVAsUUFBUywwQkFDVC9CLFdBaEJBbFAsVUFBVyxXQUNYK1EsTUFqQm1CNlgsNENBa0JuQjlxQixJQUFLLE9BQ0x1VyxhQUFhLEVBQ2JwQyxRQUFTdUcsRUFDVHpHLFNBQVU4TyxFQUNWNVAsUUFBUyx5QkFDVC9CLFdBcEJBbFAsVUFBVyxRQUNYaVMsUUFBU3VHLEVBQ1R6RyxVQUNFd04sU0F2ekJGLGsrS0F5ekJBeE8sTUFSbUI2WCw0Q0FTbkI5cUIsSUFBSyxNQUNMdVcsYUFBYSxFQUNiUSxZQUFZLEdBWVc0VCxFQUFTRSxFQUFXdkosRUFBU0QsRUFBU0csSUFXM0RvSixFQUNBRCxFQUNBRSxFQUNBdkosRUFDQUQsRUFDQUcsU3JGaitGRnBILGlCQUFpQixPc0YvSEosU0FBU3hMLEdBQ3hCLElBRUltVSxFQUNGLGlXQXFCRWdJLEdBQ0Y3b0IsVUFBVyxTQUNYK1EsTUFoQm1CLHVOQWlCbkJ1QixVQUFXLEdBR2IsT0FDRXZGLFNBQVUsT0FDVmdGLFNBQVU4TyxFQUNWNVAsUUFBUyxRQUNUL0IsVUFDRXhDLEVBQUt1TSxRQUNILFVBQ0EsUUFFRTNHLFVBQVksRUFDWnBELFdBR0k2QixNQUFPLE9BQVF1QixVQUFXLElBRzFCdFMsVUFBWSxTQUNaK1EsTUFBUSxpQkFLaEJyRSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLb00saUJBQ0xwTSxFQUFLcU0sbUJBRUgvWSxVQUFXLFFBQ1g4USxjQUFlLGtCQUFtQmhULElBQUssUUFBUytXLFlBQVksRUFDNUQ5QyxTQUFVLGtCQUNWZCxRQUFTLFdBQ1QvQixXQUNHNEIsY0FBZSxzQkFDaEJwRSxFQUFLa04seUJBTVA5SSxjQUFlLHdCQUNmd0IsVUFBVyxJQUdYdFMsVUFBVyxXQUNYK1EsTUFBTyxxSEFBb0NyRSxFQUFLOEwsb0JBQXNCLFVBQVduRSxhQUFhLEVBQU12VyxJQUFLLFFBQ3pHK1csWUFBWSxFQUNaOUMsU0FBVThPLEVBQ1YzUixXQUVJNkIsTUFBT3JFLEVBQUs4TCxvQkFBc0IsVUFBV25FLGFBQWEsRUFDMUQvQixVQUFXLEVBQ1hwRCxVQUFXeEMsRUFBS2tOLHlCQUdoQjVaLFVBQVcsU0FDWCtRLE1BQU8sS0FBTWpULElBQUssS0FDbEJpVSxTQUFVOE8sRUFDVnZPLFVBQVcsRUFDWHBELFVBQ0V4QyxFQUFLb00saUJBQ0xwTSxFQUFLcU0sa0JBQ0xyTSxFQUFLNk0sY0FDTDdNLEVBQUswTSx1QkFHVDFNLEVBQUt5TSxvQkFDTHpNLEVBQUswTSx1QkFHVHlQLEdBRUU3b0IsVUFBVyxPQUFRK1EsTUFBTyxxQnRGMEI5Qm1ILGlCQUNGLGF1RmpJZSxTQUFTeEwsR0FDeEIsSUFBSTZMLEVBQVcsMkJBQ1hzSSxHQUNGclIsUUFDRSxtT0FNRm9RLFFBQ0UseUNBQ0ZMLFNBQ0UsMmdCQVNBaUIsR0FDRnhnQixVQUFXLFNBQ1gwTyxXQUNJcUMsTUFBTyxzQkFDUEEsTUFBTyx1QkFDUEEsTUFBT3JFLEVBQUtnTSxZQUFjLE9BRTlCcEcsVUFBVyxHQUVUd08sR0FDRjlnQixVQUFXLFFBQ1grUSxNQUFPLFNBQVVqVCxJQUFLLE1BQ3RCaVUsU0FBVThPLEVBQ1YzUixhQUVFNFosR0FDRi9YLE1BQU8sUUFBU2pULElBQUssR0FDckJpUixRQUNFalIsSUFBSyxJQUFLOFcsV0FBVyxFQUNyQjFGLFVBQ0V4QyxFQUFLbU0saUJBQ0xpSSxHQUVGek4sWUFBYSxRQUdiMFYsR0FDRmhZLE1BQU8sT0FBUWpULElBQUssR0FDcEJpUixRQUNFalIsSUFBSyxJQUFLOFcsV0FBVyxFQUNyQjFGLFVBQ0V4QyxFQUFLbU0saUJBQ0xpSSxHQUVGek4sWUFBYSxRQUdiME4sR0FDRi9nQixVQUFXLFNBQ1grUSxNQUFPLElBQUtqVCxJQUFLLElBQ2pCb1IsVUFDRXhDLEVBQUttTSxpQkFDTGlJLElBR0pBLEVBQU01UixVQUNKeEMsRUFBS29NLGlCQUNMcE0sRUFBS3FNLGtCQUNMK1AsRUFDQUMsRUFDQWhJLEVBQ0FQLEVBQ0E5VCxFQUFLZ04sYUFFUCxJQUFJc0gsRUFBa0JGLEVBQU01UixTQUFTbFMsUUFDbkMwUCxFQUFLME0scUJBQ0wxTSxFQUFLeU0sc0JBR1AsT0FDRXBNLFNBQVUsS0FBTSxPQUNoQmdGLFNBQVU4TyxFQUNWM1IsV0FFSWxQLFVBQVcsT0FDWHNTLFVBQVcsR0FDWHZCLE1BQU8saUNBR1AvUSxVQUFXLE9BQ1grUSxNQUFPLE1BQU9qVCxJQUFLLEtBRXJCNE8sRUFBS29NLGlCQUNMcE0sRUFBS3FNLGtCQUNMK1AsRUFDQUMsRUFDQWhJLEVBQ0FyVSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0xvSCxHQUVFelAsTUFBTyxZQUFhdUIsVUFBVyxFQUMvQnBELFdBRUk2QixNQUFPd0gsRUFBVyxRQUFTbEUsYUFBYSxFQUN4Qy9CLFVBQVcsRUFDWHBELFdBQVlsUCxVQUFXLE9BQVErUSxNQUFPd0gsRUFBVWpHLFVBQVcsUUFLL0R2QixNQUFPLElBQU1yRSxFQUFLa00sZUFBaUIsa0NBQ25DN0csU0FBVSxvQkFDVjdDLFVBQ0V4QyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLZ04sYUFFSDFaLFVBQVcsV0FDWCtRLE1BQU8sY0FBZ0J3SCxFQUFXLFVBQVdsRSxhQUFhLEVBQzFEdlcsSUFBSyxTQUNMb1IsV0FFSWxQLFVBQVcsU0FDWDBPLFdBRUlxQyxNQUFPd0gsSUFHUHhILE1BQU8sWUFHUEEsTUFBTyxLQUFNalQsSUFBSyxLQUNsQnNXLGNBQWMsRUFBTVMsWUFBWSxFQUNoQzlDLFNBQVU4TyxFQUNWM1IsU0FBVThSLFFBT2xCaGhCLFVBQVcsR0FDWCtRLE1BQU8sS0FDUGpULElBQUssTUFDTHFXLE1BQU0sSUFHTnBELE1BQU8sSUFBS2pULElBQUssK0NBQ2pCdVYsWUFBYSxNQUNibkUsV0FDSTZCLE1BQU8sNEJBQTZCb0QsTUFBTSxJQUUxQ3BELE1BQU8sc0JBQXVCalQsSUFBSywrQ0FBZ0RxVyxNQUFNLEVBQ3pGakYsV0FDSTZCLE1BQU8sNEJBQTZCb0QsTUFBTSxHQUM1QyxZQU1WN0IsVUFBVyxJQUdYdFMsVUFBVyxXQUNYOFEsY0FBZSxXQUFZaFQsSUFBSyxLQUFNK1csWUFBWSxFQUNsRDNGLFVBQ0V4QyxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUFhNUksTUFBT3dILEtBRXBDdlksVUFBVyxTQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxLQUNsQnNXLGNBQWMsRUFDZFMsWUFBWSxFQUNaM0YsU0FBVThSLElBR2QvUCxRQUFTLFNBR1RGLE1BQU8sVUFFVHJFLEVBQUttTixjQUVIN1osVUFBVyxRQUNYOFEsY0FBZSxRQUFTaFQsSUFBSyxRQUFTK1csWUFBWSxFQUNsRDVELFFBQVMsV0FDVC9CLFdBQ0c0QixjQUFlLFdBQ2hCcEUsRUFBS2tOLHlCQUlQOUksY0FBZSxzQkFBdUJoVCxJQUFLLEtBQU0rVyxZQUFZLElBR2pFNUQsUUFBUyxldkZsRVRpSCxpQkFDRixZd0ZySWUsU0FBVXhMLEdBQ3pCLElBS0lzYyxHQUNGaHBCLFVBQVcsU0FDWCtRLE1BQU8sS0FDUGpULElBQUssS0FDTG9SLFdBUkE2QixNQUFPLFlBQWFzRCxhQUFhLEVBQ2pDL0IsVUFBVyxFQUNYcEQsV0FBWWxQLFVBQVcsT0FBUStRLE1BQU8sYUFPdEN1QixVQUFZLEdBZWQsT0FDRXZGLFNBQVUsZUFDVmtGLFFBQVMsVUFDVEYsVUFDRXZDLFFBQVMsc1ZBSVRvUSxRQUFTLGNBRVgxUSxVQUNFeEMsRUFBSzJNLGtCQUNMM00sRUFBS3FNLG1CQWZQL1ksVUFBVyxTQUNYK1EsTUFBTyxpQkFWUC9RLFVBQVcsV0FDWCtRLE1BQU8sWUFDUHVCLFVBQVcsSUFHWHRTLFVBQVcsU0FDWCtRLE1BQU8sMkJBc0JMaVksU3hGOEZGOVEsaUJBQWlCLE95RnhJSixTQUFTeEwsR0FDeEIsSUFBSXVjLEdBQVlySixRQUFTLG1CQUNyQnNKLEdBQ0Z4YyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0sc0JBRUhzUCxHQUNGaGMsRUFBS3FNLGtCQUNMck0sRUFBSzZNLGVBRUg0UCxHQUNGcnJCLElBQUssSUFBS2dSLGdCQUFnQixFQUFNK0YsWUFBWSxFQUM1QzNGLFNBQVV3WixFQUNWM1csU0FBVWtYLEdBRVI1RyxHQUNGdFIsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFdBRUlsUCxVQUFXLE9BQ1grUSxNQUFPLElBQUtqVCxJQUFLLElBQ2pCb1IsVUFBV3hDLEVBQUttTSxrQkFDaEI1SCxRQUFTLE9BRVh2RSxFQUFLb0IsUUFBUXFiLEdBQWtCcFksTUFBTyxPQUN0Qy9ULE9BQU9rc0IsR0FDVGpZLFFBQVMsT0FFUG1ZLEdBQ0ZyWSxNQUFPLE1BQU9qVCxJQUFLLE1BQ25Cb1IsVUFBV3hDLEVBQUtvQixRQUFRcWIsSUFDeEJsWSxRQUFTLE9BTVgsT0FKQXlYLEVBQU0vb0IsS0FBSzBpQixFQUFRK0csR0FDbkJGLEVBQWlCbHZCLFFBQVEsU0FBUzJXLEdBQ2hDK1gsRUFBTS9vQixLQUFLZ1IsTUFHWHpCLFNBQVV3WixFQUNWM1csU0FBVWtYLEVBQ1ZoWSxRQUFTLFl6RmlHVGlILGlCQUFpQixRMEZ6SUosU0FBU3hMLEdBTXhCLElBQUltVSxHQVFGclIsUUFDRSxzUEFpQkZvUSxRQUNFLHVWQWVGTCxTQUNFLHloRkEyQkE4SixFQUFtQix1REFHbkJDLEdBQ0ZyWCxRQUFTb1gsRUFBa0J0WCxTQUFVOE8sRUFBVTVQLFFBQVMsT0FzQnREc1ksR0FDRnZwQixVQUFXLFFBQ1grUSxNQUFPLE9BQVFqVCxJQUFLLEtBQ3BCaVUsU0FBVThPLEdBR1IySSxHQUNGeHBCLFVBQVcsV0FDWCtRLE1BQU8sTUFBUXNZLEdBSWIzSSxHQUNGMWdCLFVBQVcsU0FDWGtQLFVBQVd4QyxFQUFLbU0saUJBQWtCMFEsRUFBZUMsR0FDakQ5YSxXQUNJcUMsTUFBTyxTQUFValQsSUFBSyxTQUFVd1UsVUFBVyxLQUMzQ3ZCLE1BQU8sT0FBUWpULElBQUssVUFJdEIyckIsR0FDRnpwQixVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGlCQUFrQjBRLEVBQWVDLEdBQ2pEelksTUFBTyxJQUFLalQsSUFBSyxLQUdmNHJCLEdBQ0YxcEIsVUFBVyxPQUNYK1EsTUFBTyxJQUFNc1ksR0E0QmYsT0FqQkFDLEVBQVFwYSxXQXpETmxQLFVBQVcsU0FRWCtRLE1BQU8scUlBQ1B1QixVQUFXLElBSVh0UyxVQUFXLFNBQ1grUSxNQUFPLDhCQThDUDJQLEVBQ0ErSSxFQUNBQyxHQVpBMXBCLFVBQVcsVUFDWDBPLFdBQ0lxQyxNQUFPLEtBQU1qVCxJQUFLLEtBQU13VSxVQUFXLEtBQ25DdkIsTUFBTyxJQUFLalQsSUFBSyxPQVdyQjRPLEVBQUsyTSxtQkFFSHJaLFVBQVcsVUFDWCtRLE1BQ0UsZ0VBRUhBLE1BQU8sT0FFVndZLEVBQWNyYSxTQUFXb2EsRUFBUXBhLFNBRTFCb2EsTzFGckJMcFIsaUJBQ0YsYTJGM0llLFNBQVN4TCxHQUN4QixPQUNFd0MsV0FFSWxQLFVBQVcsT0FDWCtRLE1BQU8sVUFDUHVCLFVBQVcsR0FDWHZELFFBR0VqUixJQUFLLGNBQ0x1VixZQUFhLFNBT2pCdEcsU0FBVSxxQjNGNEhabUwsaUJBQWlCLFM0RjlJSixTQUFTeEwsR0FDeEIsSUFBSW1VLEdBQ0ZyUixRQUNFLGdiQU9GK1AsU0FDRSxrRUFDRkssUUFDRSxtQkFjQStKLEdBQ0YzcEIsVUFBVyxTQUFVK1EsTUFBT3JFLEVBQUs4TCxvQkFBc0IsS0FJckRzSSxHQUNGOWdCLFVBQVcsUUFDWCtRLE1BQU8sT0FBUWpULElBQUssSUFBS29SLFVBQVd4QyxFQUFLNk0sZ0JBRXZDdUksR0FDRjloQixVQUFXLFdBQVkrUSxNQUFPLE1BQVFyRSxFQUFLOEwscUJBRXpDa0ksR0FDRjFnQixVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBTyxNQUFPalQsSUFBSyxNQUNuQm9SLFVBQVc0UyxFQUFVaEIsS0FNckIvUCxNQUFPLElBQU1qVCxJQUFLLElBQ2xCbVQsUUFBUyxLQUNUL0IsVUFBV3hDLEVBQUttTSxvQkFHaEI5SCxNQUFPLElBQUtqVCxJQUFLLElBQ2pCbVQsUUFBUyxLQUNUL0IsVUFBV3hDLEVBQUttTSxpQkFBa0JpSixFQUFVaEIsTUFJbERBLEVBQU01UixTQUFTdlAsS0FBSytnQixHQUVwQixJQUFJa0osR0FDRjVwQixVQUFXLE9BQVErUSxNQUFPLGdGQUFrRnJFLEVBQUs4TCxvQkFBc0IsTUFFcklxUixHQUNGN3BCLFVBQVcsT0FBUStRLE1BQU8sSUFBTXJFLEVBQUs4TCxvQkFDckN0SixXQUVJNkIsTUFBTyxLQUFNalQsSUFBSyxLQUNsQm9SLFVBQ0V4QyxFQUFLb0IsUUFBUTRTLEdBQVMxZ0IsVUFBVyxvQkF1QnJDOHBCLEdBQ0Y5cEIsVUFBVyxTQUNYK1EsTUFoQnFCLHVOQWlCckJ1QixVQUFXLEdBRVR5WCxFQUF3QnJkLEVBQUt1TSxRQUMvQixPQUFRLFFBQ04vSixVQUFZeEMsRUFBSzBNLHdCQUVqQjRRLEdBQ0Z0YixXQUNDMU8sVUFBVyxPQUNYK1EsTUFBT3JFLEVBQUs4TCxzQkFFWnpILE1BQU8sS0FBTWpULElBQUssS0FDbEJvUixlQUlDK2EsRUFBcUJELEVBSXpCLE9BSEFDLEVBQW1CdmIsU0FBUyxHQUFHUSxVQUFhOGEsR0FDNUNBLEVBQWtCdGIsU0FBUyxHQUFHUSxVQUFhK2EsSUFHekNsZCxTQUFVLE1BQ1ZnRixTQUFVOE8sRUFDVjNSLFVBQ0V4QyxFQUFLdU0sUUFDSCxVQUNBLFFBRUUzRyxVQUFZLEVBQ1pwRCxXQUNFbFAsVUFBWSxTQUNaK1EsTUFBUSxpQkFJZHJFLEVBQUt5TSxvQkFDTDRRLEdBdEhGL3BCLFVBQVcsVUFDWCtRLE1BQU8sbUNBQ1BoQyxRQUNFRyxXQUVJbFAsVUFBVyxTQUNYK1EsTUFBTyxXQWtIWDRZLEVBQ0FDLEVBQ0FDLEdBRUU3cEIsVUFBVyxXQUNYOFEsY0FBZSxNQUFPaFQsSUFBSyxRQUMzQnVXLGFBQWEsRUFDYlEsWUFBWSxFQUNaOUMsU0FBVThPLEVBQ1Y1UCxRQUFTLHlDQUNUcUIsVUFBVyxFQUNYcEQsV0FFSTZCLE1BQU9yRSxFQUFLOEwsb0JBQXNCLFVBQVduRSxhQUFhLEVBQzFEL0IsVUFBVyxFQUNYcEQsVUFBV3hDLEVBQUtrTix5QkFHaEI1WixVQUFXLE9BQ1grUSxNQUFPLElBQUtqVCxJQUFLLElBQUtpVSxTQUFVLFVBQ2hDTyxVQUFXLElBR1h0UyxVQUFXLFNBQ1grUSxNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCNFcsWUFBWSxFQUNaM0MsU0FBVThPLEVBQ1Z2TyxVQUFXLEVBQ1hwRCxXQUVJNkIsTUFBTyxJQUFLalQsSUFBSyxTQUFVZ1IsZ0JBQWdCLEVBQzNDSSxVQUNFOGEsRUFDQXRkLEVBQUt5TSxvQkFDTDRRLEdBRUZ6WCxVQUFXLEdBRWI1RixFQUFLeU0sb0JBQ0w0USxFQUNBSCxFQUNBQyxFQUNBbkosRUFDQWhVLEVBQUs2TSxnQkFHVHdRLEtBSUYvcEIsVUFBVyxRQUNYOFEsY0FBZSx3QkFBeUJoVCxJQUFLLFdBQzdDK1csWUFBWSxFQUNaNUQsUUFBUyxxQkFDVC9CLFdBQ0c0QixjQUFlLGlEQUNoQnBFLEVBQUtrTix1QkFFSDVaLFVBQVcsT0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFBS3NXLGNBQWMsRUFBTVMsWUFBWSxFQUN0RHZDLFVBQVcsSUFHWHRTLFVBQVcsT0FDWCtRLE1BQU8sVUFBV2pULElBQUssV0FBWXNXLGNBQWMsRUFBTVEsV0FBVyxHQUVwRWdWLEVBQ0FDLElBR0puSixHQUVFMWdCLFVBQVcsT0FDWCtRLE1BQU8sa0JBQW1CalQsSUFBSyxJQUMvQm1ULFFBQVMsTUFFWDZZLFM1RnJFRjVSLGlCQUFpQixRNkYvSUosU0FBU3hMLEdBQ3hCLElBRUl3ZCxFQUFpQixXQUNqQkMsR0FDRnZLLFFBQ0UsdUdBRUZMLFNBQ0UseU1BR0YvUCxRQUNFLDJoQ0FrQkE0YSxFQUFlMWQsRUFBS3VNLFFBQ3RCLFVBQ0EsVUFFRTNHLFVBQVcsSUFHWCtYLEdBQ0ZycUIsVUFBVyxPQUNYK1EsTUFBTyxrQkFDUGhDLFFBQ0VqUixJQUFLLG1CQUNMOFcsV0FBVyxFQUNYMUYsVUFBV2tiLEtBR1hFLEdBQ0Z0cUIsVUFBVyxPQUNYK1EsTUFBTyx3Q0FFTHdaLEdBQ0Z2cUIsVUFBVyxTQUNYK1EsTUFBTyxzQkFFTHlaLEdBQ0Y5ZCxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLb0IsUUFBUXBCLEVBQUs2TSxlQUFnQnhJLE1BQU9yRSxFQUFLZ00sWUFBYyx5QkFDNURoTSxFQUFLb0IsUUFBUXBCLEVBQUtvTSxrQkFBbUI3SCxRQUFTLE9BQzlDdkUsRUFBS29CLFFBQVFwQixFQUFLcU0sbUJBQW9COUgsUUFBUyxRQUU3Q2pSLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssTUFHakI0USxXQUVJcUMsTUFBTyx5QkFHUEEsTUFBTyxJQUFLalQsSUFBSyxPQUNqQm1ULFFBQVMsVUFLYmpSLFVBQVcsT0FDWCtRLE1BQU8sU0FBVWpULElBN0VBLG1CQThFakJtVCxRQUFTLFFBR1RqUixVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBTyxnQ0FDUHVCLFVBQVcsSUFHWHZCLE1BQU8sa0JBS1hBLE1BQU8sYUFDUHVCLFVBQVcsRUFDWHBELFVBQVdxYixLQUdYdnFCLFVBQVcsUUFDWDhRLGNBQWUsU0FDZjhELFdBQVcsRUFBTTlXLElBQUssU0FDdEJvUixVQUNFeEMsRUFBS29CLFFBQVFwQixFQUFLaU4sWUFBYTVJLE1BQU8wWiw4Q0FJNUMsT0FDRTFkLFNBQVUsS0FBTSxlQUNoQnNDLGtCQUFrQixFQUNsQjRDLFFBQVN3WSwyQkFDVDFZLFNBQVVvWSxFQUNWamIsV0FFSWxQLFVBQVcsT0FDWCtRLE1BQU9tWixFQUNQNVgsVUFBVyxFQUNYdkQsUUFDRWpSLElBQUssNkJBQ0w4VyxXQUFXLEVBQ1h0QyxVQUFXLEVBQ1hwRCxVQUFXa2IsS0FHZkMsRUFDQUMsR0FFRXRxQixVQUFXLE9BQ1grUSxNQUFPLHdCQUNQaEMsUUFDRWpSLElBQUssNEJBQ0xtVSxRQUFTd1ksMkJBQ1QxWSxTQUFVb1ksRUFDVmpiLFdBRUlsUCxVQUFXLE9BQ1grUSxNQUFPbVosRUFDUDVYLFVBQVcsRUFDWHZELFFBQ0VqUixJQUFLLHlDQUNMOFcsV0FBVyxFQUNYMUYsVUFBV2tiLEtBR2ZDLEVBQ0FDLEdBQ0F0dEIsT0FBT3d0QixNQUlYeHFCLFVBQVcsT0FDWCtRLE1BQU8sTUFDUHVCLFVBQVcsSUFHWHRTLFVBQVcsT0FDWCtRLE1BQU8sTUFBT2pULElBQUksVUFDbEJ3VSxVQUFXLEtBRWJ0VixPQUFPd3RCLFM3RmZUdFMsaUJBQWlCLE84RmhKSixTQUFTeEwsR0FDeEIsT0FDRXdDLFdBRUlsUCxVQUFXLFlBQ1grUSxNQUFPLE1BQU9qVCxJQUFLLEtBQU0rVyxZQUFZLEVBQ3JDOUYsUUFBU2pSLElBQUssSUFBS3dVLFVBQVcsR0FDOUJBLFVBQVcsS0FHWHRTLFVBQVcsWUFDWCtRLE1BQU8sT0FBUWpULElBQUssS0FBTStXLFlBQVksRUFDdEM5RixRQUFTalIsSUFBSyxJQUFLd1UsVUFBVyxLQUc5QnRTLFVBQVcsVUFDWCtRLE1BQU8sS0FBTWpULElBQUssS0FFcEI0TyxFQUFLMk0seUI5RitIUG5CLGlCQUFpQixPK0ZqSkosU0FBVXhMLEdBQ3pCLE9BQ0V3QyxXQUVJbFAsVUFBVyxXQUNYK1EsTUFBTyxxQkFDUGpULElBQUksS0FDSnVXLGFBQWEsRUFDYlEsWUFBWSxFQUNaM0YsV0FFSWxQLFVBQVcsVUFDWCtRLE1BQU8sT0FHUC9RLFVBQVcsUUFDWCtRLE1BQU8sMkJBR1AvUSxVQUFXLFNBQ1grUSxNQUFPLE1BQU9qVCxJQUFLLE1BQ25CNFcsWUFBWSxFQUNaeEYsV0FFSWxQLFVBQVcsU0FDWCtRLE1BQU8sSUFDUGpULElBQUssTUFHTGtDLFVBQVcsV0FDWCtRLE1BQU8scUMvRm9IbkJtSCxpQkFBaUIsT2dHbEpKLFNBQVN4TCxHQUN4QixJQUNJZ2UsRUFBa0IsdUJBSWxCQyxLQUFZQyxLQUVaQyxFQUFjLFNBQVN0WSxHQUFLLE9BRTlCdlMsVUFBVyxTQUFVK1EsTUFBTyxLQUFPd0IsRUFBSSxNQUFRQSxJQUc3Q3VZLEVBQWEsU0FBU2pyQixFQUFNa1IsRUFBT3VCLEdBQWEsT0FDbER0UyxVQUFXSCxFQUFNa1IsTUFBT0EsRUFBT3VCLFVBQVdBLElBR3hDeVksR0FFRmhhLE1BQU8sTUFBT2pULElBQUssTUFBT29SLFNBQVUwYixFQUFPdFksVUFBVyxHQUl4RHNZLEVBQU1qckIsS0FDSitNLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTHlSLEVBQVksS0FDWkEsRUFBWSxLQUNabmUsRUFBSytNLGlCQUVIMUksTUFBTyxvQkFDUGhDLFFBQVMvTyxVQUFXLFNBQVVsQyxJQUFLLFdBQVkrVyxZQUFZLElBRTdEaVcsRUFBVyxTQUFVLG9CQUNyQkMsRUFDQUQsRUFBVyxXQUFZLGFBQWtCLElBQ3pDQSxFQUFXLFdBQVksY0FDdkJBLEVBQVcsV0FBWSxlQUVyQjlxQixVQUFXLFlBQWErUSxNQUFPd0gsZUFBb0J6YSxJQUFLLElBQUt1VyxhQUFhLEVBQU1RLFlBQVksSUFHNUY3VSxVQUFXLE9BQ1grUSxNQUFPLGVBSVgsSUFBSWlhLEVBQXNCSixFQUFNNXRCLFFBQzlCK1QsTUFBTyxJQUFLalQsSUFBSyxJQUFLb1IsU0FBVXliLElBRzlCTSxHQUNGbmEsY0FBZSxPQUFRaEMsZ0JBQWdCLEVBQ3ZDSSxXQUFZNEIsY0FBZSxZQUFZOVQsT0FBTzR0QixJQUs1Q00sR0FDRm5hLE1BQU8yWixFQUFrQixRQUFTclcsYUFBYSxFQUFNdlcsSUFBSyxPQUMxRHdVLFVBQVcsRUFDWHBELFdBRUlsUCxVQUFXLFlBQ1grUSxNQUFPMlosRUFBaUI1c0IsSUFBSyxJQUFLK1csWUFBWSxFQUM5QzlGLFFBQ0VELGdCQUFnQixFQUFNbUMsUUFBUyxRQUMvQnFCLFVBQVcsRUFDWHBELFNBQVUwYixNQU1kTyxHQUNGbnJCLFVBQVcsVUFDWCtRLE1BQU8sMkdBQ1BoQyxRQUFTalIsSUFBSyxRQUFTOFcsV0FBVyxFQUFNMUYsU0FBVTBiLEVBQU90WSxVQUFXLElBSWxFOFksR0FDRnByQixVQUFXLFdBQ1gwTyxXQUtHcUMsTUFBTyxnQkFBMEJ1QixVQUFXLEtBQzVDdkIsTUFBTyxhQUVWaEMsUUFBU2pSLElBQUssT0FBUThXLFdBQVcsRUFBTTFGLFNBQVU4YixJQUcvQ0ssR0FJRjNjLFdBQ0VxQyxNQUFPLGVBQWdCalQsSUFBSyxVQUU1QmlULE1BQU8yWixFQUFpQjVzQixJQUFLLE1BRS9CdVcsYUFBYSxFQUNiTyxXQUFhLEVBQ2IzRCxRQUFTLFdBQ1RxQixVQUFXLEVBQ1hwRCxVQUNFeEMsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMNlIsRUFDQUgsRUFBVyxVQUFZLFVBQ3ZCQSxFQUFXLFdBQVksY0FDdkJBLEVBQVcsZUFBaUJKLEVBQWtCLEtBQU0sR0FDcERJLEVBQVcsY0FBZSxJQUFNSixHQUNoQ0ksRUFBVyxpQkFBa0IsTUFBUUosRUFBaUIsR0FDdERJLEVBQVcsZUFBaUIsSUFBSyxJQUNoQzlxQixVQUFXLGdCQUFpQitRLE1BQU8sTUFBT2pULElBQUssUUFDL0NrQyxVQUFXLGtCQUFtQitRLE1BQU8sbUNBQ3JDQSxNQUFPLE1BQU9qVCxJQUFLLE1BQU9vUixTQUFVOGIsSUFDcENqYSxNQUFPLGdCQWFaLE9BVEE0WixFQUFNaHJCLEtBQ0orTSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wrUixFQUNBQyxFQUNBRixFQUNBRyxJQUlBaGMsa0JBQWtCLEVBQ2xCNEIsUUFBUyxjQUNUL0IsU0FBVXliLFFoR1dWelMsaUJBQWlCLE9pR25KSixTQUFTeEwsR0FDeEIsSUFBSTRlLEVBQWdCLGdGQUVoQkMsRUFBd0IseUVBS3hCck0sR0FDRmxmLFVBQVcsVUFDWCtRLE1BQU8sb0JBRUx5UCxHQUNGeGdCLFVBQVcsU0FDWDBPLFdBQ0dxQyxNQUFPd2EsRUFBdUJqWixVQUFXLElBQ3pDdkIsTUFBTywyQkFDUEEsTUFBTywyQkFDUEEsTUFBTyx1Q0FDUEEsTUFBTyxZQUFjd2EsRUFBd0IsS0FBT0EsRUFBdUJ6dEIsSUFBSyxTQUdqRjRpQixFQUFTaFUsRUFBS29CLFFBQVFwQixFQUFLcU0sbUJBQW9COUgsUUFBUyxPQUN4RGdJLEVBQVV2TSxFQUFLdU0sUUFDakIsSUFBSyxLQUVIM0csVUFBVyxJQUdYd1AsR0FDRi9RLE1BQU8sTUFBT2pULElBQUssT0FFakJraEIsR0FDRmhmLFVBQVcsU0FDWCtRLE1BQU8sT0FBU3VhLEdBRWRFLEdBQ0Z6YSxNQUFPdWEsRUFDUGhaLFVBQVcsR0FFVG1aLEdBQ0YxYSxNQXZDVyxlQTZDVDJhLEdBQ0Z4YyxVQUFXc1IsRUFBUUUsRUFBUW9CLEVBQVU5QyxHQUpyQ2pPLE1BQU8sTUFBT2pULElBQUssTUFDbkJvUixVQUFXLE9BQVFnUSxFQUFTd0IsRUFBUUYsRUFBUWdMLElBR2VBLEdBQzNEOWMsV0FFSXFDLE1BQU8sVUFBWWpULElBQUssUUFHeEJpVCxNQUFPLFlBQWFqVCxJQUFLLE1BQ3pCaVUsVUFBV2xTLEtBQU0sV0FHakJrUixNQUFPLGtCQUlUNGEsR0FDRmpkLFdBQ0dxQyxNQUFPLElBQU91YSxJQUNkdmEsTUFBTyxLQUFRdWEsRUFBZ0IsTUFBUUEsRUFBZ0IsUUFHeER6SSxHQUNGOVIsTUFBTyxVQUFXalQsSUFBSyxPQUVyQmdsQixHQUNGaFUsZ0JBQWdCLEVBQ2hCd0QsVUFBVyxHQWNiLE9BWkF1USxFQUFLM1QsV0FFRGxQLFVBQVcsT0FDWDBPLFdBQ0dxQyxNQUFPdWEsSUFDUHZhLE1BOUVNLGlCQWlGWCtSLEdBRUZBLEVBQUs1VCxVQUFZd2MsRUFBUUMsRUFBYTlJLEVBQU0zRCxFQUFTc0IsRUFBUUUsRUFBUXpILEVBQVM2SSxFQUFVOUMsRUFBU3lNLEVBQUtELElBR3BHdmEsUUFBUyxLQUNUL0IsVUFDRXNSLEdBckZGeGdCLFVBQVcsT0FDWCtRLE1BQU8sTUFBT2pULElBQUssS0FzRmpCb2hCLEVBQ0F3QixFQUNBekgsRUFDQXlTLEVBQ0FDLEVBQ0E5SSxFQUNBMkksU2pHa0RGdFQsaUJBQ0YsaUJrR3JKZSxTQUFTeEwsR0FDeEIsSUFBSW9WLEdBQ0Y5aEIsVUFBVyxXQUNYME8sV0FDR3FDLE1BQU8sd0RBQ1BBLE1BQU8sZUFFVnVCLFVBQVcsR0FFVDRQLEdBQ0Z4VixFQUFLME0scUJBQ0wxTSxFQUFLMk0sa0JBQ0wzTSxFQUFLdU0sUUFBUSxLQUFNLEtBQ25Cdk0sRUFBS3VNLFFBQVEsU0FBVSxNQUVyQjJTLEVBQVNsZixFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUM3QmpMLFdBQ0dxQyxNQUFPLG1DQUNQQSxNQUFPLHVCQUdSOGEsRUFBU25mLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUFPLDZCQUNuRCxPQUNFMUIsa0JBQWtCLEVBQ2xCMEMsVUFDRXZDLFFBQ0UsNC9CQVlGb1EsUUFDRSxnZkFNRkwsU0FDRSxvNEtBcURKclEsVUFDRTRTLEdBRUU5aEIsVUFBVyxVQUNYK1EsTUFBTyxtQkFHUC9RLFVBQVcsV0FDWDhRLGNBQWUsV0FBWWhULElBQUssSUFDaENvUixVQUNFNFMsRUFDQStKLEVBQ0FuZixFQUFLb00saUJBQ0xwTSxFQUFLcU0sa0JBQ0xyTSxFQUFLOE0sbUJBQ0w5TSxFQUFLNk0sY0FDTHFTLEtBSUY1ckIsVUFBVyxXQUNYK1EsTUFBTyxhQUFjalQsSUFBSyxJQUMxQmlVLFNBQVUsTUFDVjdDLFVBQ0UyYyxFQUNBRCxHQUVGdFosVUFBVyxJQUdYeEIsY0FBZSxhQUFjaFQsSUFBSyxJQUNsQ29SLFVBQ0U0UyxFQUNBK0osRUFDQW5mLEVBQUtvTSxpQkFDTHBNLEVBQUtxTSxrQkFDTHJNLEVBQUs4TSxtQkFDTDlNLEVBQUs2TSxjQUNMcVMsS0FJRjVyQixVQUFXLE9BQ1gwTyxXQUVJcUMsTUFBTyx3QkFDUHVCLFVBQVcsS0FFWHZCLE1BQU8sU0FDUEEsTUFBTyxVQUdickUsRUFBS29NLGlCQUNMcE0sRUFBS3FNLGtCQUNMck0sRUFBSzhNLG1CQUNMOU0sRUFBSzZNLGNBQ0xxUyxHQUNBNXVCLE9BQU9rbEIsR0FDVGpSLFFBQVMsdUJsR0xUaUgsaUJBQ0YsYW1HekplLFNBQVN4TCxHQUN4QixJQUFJbVUsR0FDRnJSLFFBRUUsdVhBTUZvUSxRQUVFLHVEQUdGTCxTQUNFLDJEQUVBMkQsRUFBYyw4Q0FDZEMsRUFBUXpXLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUFPbVMsSUFDOUNwQyxHQUNGOWdCLFVBQVcsUUFDWCtRLE1BQU8sTUFBT2pULElBQUssSUFDbkJpVSxTQUFVOE8sR0FFUmlMLEdBQ0Y5ckIsVUFBVyxRQUNYK1EsTUFBTyxjQUFlalQsSUFBSyxxQ0FDM0JpVSxTQUFVOE8sR0FFUnlCLEdBQ0Y1VixFQUFLOE0sb0JBRUh4WixVQUFXLFNBQ1grUSxNQUFPLDBHQUNQdUIsVUFBVyxFQUNYdkQsUUFBU2pSLElBQUssV0FBWXdVLFVBQVcsS0FHckN0UyxVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBTyxNQUFPalQsSUFBSyxNQUNuQm9SLFVBQVd4QyxFQUFLbU0sb0JBR2hCOUgsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFVBQVd4QyxFQUFLbU0sb0JBR2hCOUgsTUFBTyxNQUFPalQsSUFBSyxNQUNuQm9SLFVBQVd4QyxFQUFLbU0saUJBQWtCaUksRUFBT2dMLEtBR3pDL2EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFVBQVd4QyxFQUFLbU0saUJBQWtCaUksRUFBT2dMLEtBR3pDL2EsTUFBTyxLQUFNalQsSUFBSyxTQUNsQitXLFlBQVksTUFLaEI3VSxVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBTyxLQUFNalQsSUFBSyxXQUNsQm9SLFVBQVc0UixFQUFPcFUsRUFBSzJNLHFCQUt2QnRJLE1BQU8seUNBS1hBLE1BQU8sSUFBTW1TLElBR2JuUyxNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCc1csY0FBYyxFQUFNUyxZQUFZLEVBQ2hDeEIsWUFBYSxlQUdqQnlOLEVBQU01UixTQUFXb1QsRUFFakIsSUFBSTNCLEdBQ0YzZ0IsVUFBVyxTQUNYK1EsTUFBTyxNQUFPc0QsYUFBYSxFQUczQm5GLFdBRUk2QixNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCaVUsU0FBVThPLEVBQ1YzUixVQUFXLFFBQVFsUyxPQUFPc2xCLE1BU2hDLE9BQ0V2VixTQUFVLE1BQ1ZnRixTQUFVOE8sRUFDVjVQLFFBQVMsT0FDVC9CLFNBQVVvVCxFQUFZdGxCLFFBQ3BCMFAsRUFBS3VNLFFBQVEsU0FBVSxVQUN2QnZNLEVBQUsyTSxtQkFUUHRJLE1BQU8sOEJBWUgvUSxVQUFXLFdBQ1hrUCxVQUFXaVUsRUFBT3hDLEdBQ2xCdE0sYUFBYSxFQUNiM0YsV0FFSXFDLE1BQU8sSUFBTW1TLEVBQWMsK0NBQWdEcGxCLElBQUssYUFHaEZpVCxNQUFPLElBQU1tUyxFQUFjLHVEQUF3RHBsQixJQUFLLG1CQUd4RmlULE1BQU8sSUFBTW1TLEVBQWMsdURBQXdEcGxCLElBQUssdUJBSzVGa0MsVUFBVyxRQUNYOFEsY0FBZSxRQUNmaFQsSUFBSyxJQUNMbVQsUUFBUyxZQUNUL0IsV0FFSTRCLGNBQWUsVUFDZmhDLGdCQUFnQixFQUNoQm1DLFFBQVMsWUFDVC9CLFVBQVdpVSxJQUViQSxLQUlGcFMsTUFBT21TLEVBQWMsSUFBS3BsQixJQUFLLElBQy9CdVcsYUFBYSxFQUFNTyxXQUFXLEVBQzlCdEMsVUFBVyxXbkdRZjRGLGlCQUFpQixPb0c1SkosU0FBU3hMLEdBQ3hCLElBQUl4TyxFQUFhLDRCQUNqQixPQUVFNlQsU0FDRSx5c0RBcUNGN0MsV0FFSWxQLFVBQVcsVUFDWCtRLE1BQU8sU0FFVHJFLEVBQUt1TSxRQUNILElBQUssT0FBUTNHLFVBQVcsSUFHMUI1RixFQUFLcU0sbUJBRUgvWSxVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBTyxJQUFLalQsSUFBSyxhQUVyQndVLFVBQVcsSUFHWHRTLFVBQVcsUUFDWDBPLFdBQ0lxQyxNQUFPLElBQU03UyxJQUNiNlMsTUFBTyxVQUNQQSxNQUFPLElBQU03UyxJQUNiNlMsTUFBTyxRQUFVN1MsTUFJckI4QixVQUFXLFNBQ1gwTyxXQUNJcUMsTUFBTyxJQUFNN1MsSUFDYjZTLE1BQU8sVUFDUEEsTUFBTyxZQUlYL1EsVUFBVyxTQUNYME8sV0FDTXFDLE1BQU8sc0JBQ1BBLE1BQU8scURBRWJ1QixVQUFXLFVwRzBFZjRGLGlCQUFpQixNcUc3SkosU0FBU3hMLEdBRXRCLElBS0lxZixHQUNBL3JCLFVBQVcsU0FDWCtRLE1BQU8sSUFDUGpULElBQUssSUFDTG9SLFdBUkFsUCxVQUFXLFFBQ1grUSxNQUFPLGVBWVBpYixHQUNBaHNCLFVBQVcsU0FDWCtRLE1BQU9yRSxFQUFLZ00sYUFnQ2hCLE9BQ0l6SCxRQUFTLElBQ1QvQixVQUNJNmMsR0FFSS9yQixVQUFXLFVBQ1gwTyxVQUNJaEMsRUFBS3VNLFFBQVEsS0FBTSxLQUNuQnZNLEVBQUt1TSxRQUFRLE9BQVEsU0FFekIzRyxVQUFXLEdBRWYwWixHQUVJaHNCLFVBQVcsVUFDWDBPLFdBRVFxQyxNQUFPLDRCQUdQQSxNQUFPLDBYQXhCdkIvUSxVQUFXLFdBQ1grUSxNQUFPLGlpSUF6QlAvUSxVQUFXLFVBQ1gwTyxXQUVRcUMsTUFBTyw4REFHUEEsTUFBTyx5M05BR1BBLE1BQU8seUJBR1BBLE1BQU8sNEJBR1BBLE1BQU8saUxBR1BBLE1BQU8sOERBcUNQL1EsVUFBVyxPQUNYK1EsTUFBTyw2RXJHZ0ZuQm1ILGlCQUFpQixNc0c5SkosU0FBU3hMLEdBQ3hCLElBRUl1ZixHQUNGbGIsTUFIeUIsV0FHSWpULElBRkosV0FHekJvUixVQUFXLFNBRVRvUSxHQUNGNVMsRUFBS3VNLFFBQVEsaUJBQXNDLEtBQ25Edk0sRUFBS3VNLFFBQ0gsYUFSdUIsWUFXckIvSixVQUFXK2MsR0FDWDNaLFVBQVcsTUFJakIsT0FDRUwsUUFBU3ZGLEVBQUs4TCxvQkFDZHpHLFVBQ0U2TixRQUFTLGlCQUNUcFEsUUFBUywwRkFDVCtQLFNBRUUscWxDQWVKclEsU0FBVW9RLEVBQVN0aUIsU0FFZmdELFVBQVcsV0FDWDhRLGNBQWUsV0FBWWhULElBQUssTUFDaENvUixVQUNFeEMsRUFBS29CLFFBQVFwQixFQUFLaU4sWUFBYTVJLE1BQU8sdURBRXBDL1EsVUFBVyxTQUNYK1EsTUFBTyxNQUFPakMsZ0JBQWdCLEVBQzlCSSxTQUFVb1EsSUFFWnRpQixPQUFPc2lCLElBRVg1UyxFQUFLNk0sY0FDTDdNLEVBQUtvTSxpQkFDTHBNLEVBQUtxTSxtQkFFSC9ZLFVBQVcsU0FDWCtRLE1BekRxQixXQXlEUWpULElBeERSLFdBeURyQm9SLFVBQVcrYyxHQUNYM1osVUFBVyxXdEdtR2Y0RixpQkFBaUIsV3VHL0pKLFNBQVN4TCxHQUV4QixJQUFJb1YsR0FDRjloQixVQUFXLFdBQ1gwTyxXQUVJcUMsTUFBTyxTQUFXckUsRUFBSzhMLG9CQUFzQixNQUM3Q3RKLFVBQVd4QyxFQUFLbU0sb0JBR2hCOUgsTUFBTyxvQkFLVGlSLEdBQ0ZoaUIsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFVBQ0V4QyxFQUFLbU0saUJBQ0xpSixJQUlBb0ssR0FDRmxzQixVQUFXLFdBQ1grUSxNQUFPLGVBQWdCalQsSUFBSyxLQUM1QmlVLFVBQ0V3TixTQUNFLGtQQUtKclEsVUFDRTRTLElBSUFxSyxHQUNGcGIsTUFBTyxJQUFNckUsRUFBSzhMLG9CQUFzQixjQUN4Q3ZILFFBQVMsTUFDVG9ELGFBQWEsRUFDYm5GLFdBRUk2QixNQUFPLElBQU1yRSxFQUFLOEwsb0JBQXFCMWEsSUFBSyxVQUM1QytXLFlBQVksS0FZZHVYLEdBQ0Zwc0IsVUFBVyxVQUNYK1EsTUFBTyxXQUFZalQsSUFBSyxJQUN4Qm9SLFVBQVc0UyxJQUViLE9BQ0UvVSxTQUFVLEtBQU0sT0FDaEJnRixTQUNFLDRIQUVGRSxRQUFTLFNBQ1QvQyxVQUNFeEMsRUFBSzJNLGtCQUNMeUksRUFDQUUsRUFDQWtLLEVBQ0FDLEdBdEJGbnNCLFVBQVcsT0FDWCtRLE1BQU8sWUFBYWpULElBQUssSUFDekJpVSxVQUFXOE4sZUFBZ0IsVUFDM0I1TixRQUFTLFdBcUJQbWEsU3ZHb0ZGbFUsaUJBQ0YsY3dHaktlLFNBQVN4TCxHQUN4QixPQUNFSyxTQUFVLE1BQU8sTUFDakJrRixRQUFTLFlBQWN2RixFQUFLNkwsU0FBVyxNQVd2Q3hHLFNBQVUsd202RkEyQlY3QyxVQUNFeEMsRUFBS3VNLFFBQVEsU0FBVSxVQUFXL0osVUFBVyxVQUM3Q3hDLEVBQUtxTSxrQkFDTHJNLEVBQUs2TSxxQnhHd0hQckIsaUJBQWlCLFN5R2hLckIsU0FBU3hMLEdBRVAsSUFDSTJmLEdBQ0YvWixVQUFXLEVBQ1hwRCxXQUNJNkIsTUFKYSxlQVFuQixPQUNFZ0IsVUFDRXZDLFFBQ0UsMEtBRUYrUCxTQUNFLGt3Q0FpQkp0TyxRQUFTLDBCQUNUL0IsV0FFSWxQLFVBQVcsV0FDWDhRLGNBQWUsV0FBWWhULElBQUssSUFDaENvUixVQUNFeEMsRUFBS2tOLHVCQUVINVosVUFBVyxTQUNYME8sV0FDR3FDLE1BQU8sTUFBT2pULElBQUssUUFDbkJpVCxNQUFPLE1BQU9qVCxJQUFLLFlBTTFCa0MsVUFBVyxXQUNYK1EsTUFBTyxhQUNQdUIsVUFBVyxFQUNYdkQsT0FBUXNkLElBR1J0YixNQUFPLGlDQUNQdUIsVUFBVyxJQUdYdFMsVUFBVyxTQUNYK1EsTUFBT3JFLEVBQUtnTSxZQUNacEcsVUFBVyxFQUNYdkQsT0FBUXNkLElBR1Jyc0IsVUFBVyxTQUNYK1EsTUFBTyxJQUFNalQsSUFBSyxJQUNsQm9SLFVBQ0V4QyxFQUFLbU0sa0JBQ0o5SCxNQUFPLFNBR1ZBLE1BQU8sVUFDUHVCLFVBQVcsRUFDWHZELE9BQVFzZCxJQUdScnNCLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUNFeEMsRUFBS21NLGtCQUNKOUgsTUFBTyxPQUVWaEMsT0FBUXNkLEdBRVYzZixFQUFLdU0sUUFBUSxtQkFBb0Isb0JBQ2pDdk0sRUFBS3VNLFFBQVEsTUFBTyxZekcwRXRCZixpQkFBaUIsUzBHcktKLFNBQVN4TCxHQXVXeEIsT0FDRXVGLFFBQVMsMkJBQ1RGLFVBQ0V2QyxRQXpXVyxrRUEwV1hvUSxRQXpXVyw0REEwV1hMLFNBeFdFLDAzMkJBeVdGc0ksT0FSVSxpQkFVWjNZLFdBRUlsUCxVQUFXLFVBQ1grUSxNQUFPLE9BQ1BqVCxJQUFLLE9BQ0xvUixVQUFXLFNBRWJ4QyxFQUFLcU0sbUJBRUgvWSxVQUFXLFNBQ1hzUyxVQUFXLEVBQ1g1RCxXQUlJcUMsTUFBTywwREFJUEEsTUFBTyx3REFDUHVCLFVBQVcsS0FLWHZCLE1BQU8sZ0NBS1BBLE1BQU8scUNBS2ZFLFFBQVMsVTFHNU9UaUgsaUJBQWlCLE0yR3RLSixTQUFTeEwsR0FDeEIsT0FDRXFGLFNBQ0UsbzBmQTJNRmQsUUFBUyxLQUNUL0IsVUFDRXhDLEVBQUs2TSxjQUNMN00sRUFBS29NLGlCQUNMcE0sRUFBS3FNLG1CQUVIL1ksVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFVBQVd4QyxFQUFLbU0sb0JBR2hCOUgsTUFBTyx1REFFVHJFLEVBQUt5TSxvQkFDTHpNLEVBQUswTSw0QjNHckRQbEIsaUJBQWlCLFU0R3ZLSixTQUFTeEwsR0FDeEIsSUE2Qkl1TSxFQUFVdk0sRUFBS3VNLFFBQVEsSUFBSyxLQU81QnFULEVBQU81ZixFQUFLb0IsUUFBUXBCLEVBQUtvTSxrQkFBbUJ4RyxVQUFXLElBQ3ZEb08sRUFBU2hVLEVBQUtvQixRQUFRcEIsRUFBS3FNLG1CQUFvQnpHLFVBQVcsSUFNOURvTyxFQUFPeFIsU0FBU3ZQLE1BSmRLLFVBQVcsUUFDWCtRLE1BQU8sd0VBQ1B1QixVQUFXLElBdUJiLE9BQ0V2RixTQUFVLElBQUssT0FDZmdGLFVBakVBdkMsUUFDRSxvZEFPRm1TLEtBRUUsZ3JCQWFGcEMsU0FDRSxxSUEwQ0ZyUSxXQXJCQWxQLFVBQVcsV0FDWDBPLFdBQ0dxQyxNQUFPLFFBQ1BBLE1BQU8sS0FBTXVCLFVBQVcsSUFDeEJ2QixNQUFPLEtBQU11QixVQUFXLElBQ3hCdkIsTUFBTyxVQUNQQSxNQUFPLFlBS1YvUSxVQUFXLFdBQ1gwTyxXQUNHcUMsTUFBTyxnQkFDUEEsTUFBTyxJQUFLdUIsVUFBVyxLQVV4QjJHLEVBQ0F2TSxFQUFLME0sc0JBdkNQcFosVUFBVyxTQUNYK1EsTUFBTyw0QkF3Q0xyRSxFQUFLNE0sWUFDTGdULEVBQ0E1TCxHQUNDM1AsTUFBTyxPQUNQQSxNQUFPLGM1RzBGVm1ILGlCQUFpQixVNkd4S0osU0FBU3hMLEdBRXhCLE9BQ0UyQyxrQkFBa0IsRUFDbEJ0QyxTQUFVLFFBQ1ZrRixRQUFTLE9BQVN2RixFQUFLNkwsU0FDdkJ4RyxVQUNFNFAsS0FFRSw2T0FDRnBDLFNBQ0Usb3BCQVlKclEsV0FFSWxQLFVBQVcsVUFDWCtRLE1BQU8sNnpCQXFCUGpULElBQUssT0FHUDRPLEVBQUt1TSxRQUFRLGNBQWdCLEtBQzdCdk0sRUFBSzBNLHFCQUNMMU0sRUFBS3FNLG1CQUVIL1ksVUFBVyxTQUNYK1EsTUFBTyxJQUNQalQsSUFBSyxXQUNMd1UsVUFBVyxJQUdYdFMsVUFBVyxRQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxNQUNuQm1ULFFBQVMsTUFDVHFCLFVBQVcsSUFHWHRTLFVBQVcsU0FDWDBPLFdBQ0txQyxNQUFPLGdCQUNQQSxNQUFPLGNBRVp1QixVQUFXLElBR1h0UyxVQUFXLFNBQ1gwTyxXQUNLcUMsTUFBTyx1Q0FDUEEsTUFBTyxpQkFDUEEsTUFBTyxlQUVadUIsVUFBVyxJQUdmckIsUUFBUyxVN0dzRlRpSCxpQkFBaUIsUThHektKLFNBQVN4TCxHQUN4QixPQUNFcUYsU0FDRSx5bEJBVUY3QyxVQUNFeEMsRUFBS3VNLFFBQVEsS0FBTSxZOUc0SnJCZixpQkFBaUIsTytHMUtKLFNBQVN4TCxHQUN4QixJQUFJNmYsRUFBZ0IsMmlEQW1CaEJ6TCxHQUNGOWdCLFVBQVcsUUFDWCtRLE1BQU8sVUFBV2pULElBQUssTUFDdkJpVSxTQUFVd2EsR0FFUjNGLEdBQ0Y3VixNQUFPLE1BQU9qVCxJQUFLLEtBR2pCaWtCLEdBQ0ZyVCxXQUNHcUMsTUFBTyxTQUNQQSxNQUFPLGtEQUNQQSxNQUFPLGlCQUFrQnVCLFVBQVcsS0FHckNrYSxHQUFtQjlmLEVBQUttTSxpQkFBa0JpSSxFQUFPaUIsR0FDakQwSyxHQUNGMUssRUFDQXJWLEVBQUsyTSxrQkFDTDNNLEVBQUt1TSxRQUNILFVBQ0EsVUFFRW5LLGdCQUFnQixJQUdwQjhYLEdBRUU1bUIsVUFBVyxTQUNYa1AsU0FBVXNkLEVBQ1Y5ZCxXQUVJcUMsTUFBTyxrQkFBbUJqVCxJQUFLLE1BQy9Cd1UsVUFBVyxJQUdYdkIsTUFBTyxrQkFBbUJqVCxJQUFLLE1BQy9Cd1UsVUFBVyxJQUdYdkIsTUFBTyxrQkFBbUJqVCxJQUFLLE1BQy9Cd1UsVUFBVyxJQUdYdkIsTUFBTyxrQkFBbUJqVCxJQUFLLE1BQy9Cd1UsVUFBVyxJQUdYdkIsTUFBTyxrQkFBbUJqVCxJQUFLLE1BQy9Cd1UsVUFBVyxJQUdYdkIsTUFBTyxVQUFXalQsSUFBSyxJQUN2QndVLFVBQVcsSUFHWHZCLE1BQU8sSUFBTWpULElBQUssSUFDbEJvUixVQUFXeEMsRUFBS21NLG9CQUdoQjlILE1BQU8sSUFBS2pULElBQUssTUFHakJpVCxNQUFPLElBQUtqVCxJQUFLLElBQ2pCb1IsVUFBV3hDLEVBQUttTSxvQkFHaEI5SCxNQUFPLFNBQ1A3QixZQUNBb0QsVUFBVyxJQUdYdkIsTUFBTyxtQkFDUDdCLFlBQ0FvRCxVQUFXLE1BS2Z0UyxVQUFXLFNBQ1grUSxNQUFPLDRFQUNQdUIsVUFBVyxJQUdYdkIsTUFBTyxXQUFhckUsRUFBS2tNLGVBQWlCLGdEQUMxQzdHLFNBQVUsa0NBQ1ZPLFVBQVcsRUFDWHBELFVBQ0V4QyxFQUFLMk0sbUJBRUhyWixVQUFXLFNBQ1grUSxNQUFPLDhDQUNQdUIsVUFBVyxLQUdYdFMsVUFBVyxTQUNYK1EsTUFBTyxXQUFZalQsSUFBSyxVQUN4Qm9SLFVBQVd4QyxFQUFLbU0sa0JBQ2hCdkcsVUFBVyxNQUtmdFMsVUFBVyxXQUNYOFEsY0FBZSxNQUFPaFQsSUFBSyx1QkFBd0IrVyxZQUFZLEVBQy9EdkMsVUFBVyxFQUNYcEQsVUFBV3hDLEVBQUtpTixjQUdoQjVJLE1BQU8sVUFDUHVCLFVBQVcsSUFHWHZCLE1BQU8sYUFDUGpULElBQUssWUFDTHVWLFlBQWEsY0FDYm5FLFdBRU02QixNQUFPLFFBQ1BqVCxJQUFLLElBQ0xrQyxVQUFXLGNBUXJCLE9BSEE4Z0IsRUFBTTVSLFNBQVd1ZCxFQUNqQjdGLEVBQU8xWCxTQUFXdWQsR0FHaEIxZixTQUFVLEtBQU0sTUFDaEJrRixRQUFTLFVBQ1RGLFNBQVV3YSxFQUNWcmQsU0FBVXVkLFEvR2tCVnZVLGlCQUNGLGNnSDVLZSxTQUFTeEwsR0FDeEIsT0FDRTJHLFlBQWEsTUFDYm5FLFdBRUlsUCxVQUFXLE9BQ1grUSxNQUFPLHFCQUlQQSxNQUFPLG9CQUFxQmpULElBQUssSUFDakN1VixZQUFhLFNBSWJ0QyxNQUFPLGdCQUNQalQsSUFBSyxXQUNMdVYsWUFBYSxPQUNiZSxjQUFjLEVBQ2RTLFlBQVksVWhINEpoQnFELGlCQUFpQixTaUgvS0osU0FBU3hMLEdBQ3hCLElBQUk4VCxHQUNGeGdCLFVBQVcsU0FBVXNTLFVBQVcsRUFDaEM1RCxXQUVJcUMsTUFBTyxtQkFFVHJFLEVBQUs0TSxjQUlULE9BQ0VqSyxrQkFBa0IsRUFDbEIwQyxVQUNFdkMsUUFBUyxxUEFLVCtQLFNBQVUsdU1BR1ZLLFFBQVMsc0NBRVgzTyxRQUFTLE9BQ1QvQixVQUNFeEMsRUFBS3VNLFFBQVEsT0FBUSxRQUNyQnZNLEVBQUt1TSxRQUNILElBQ0EsS0FFRTNHLFVBQVcsS0FJYnRTLFVBQVcsV0FDWDhRLGNBQWUsa0JBQW1CaFQsSUFBSyxVQUN2Q21ULFFBQVMsS0FDVC9CLFVBQ0V4QyxFQUFLa04seUJBSVA1WixVQUFXLFFBQ1g4USxjQUFlLGtCQUFtQmhULElBQUssSUFDdkNvUixXQUVJNEIsY0FBZSxzQkFFakJwRSxFQUFLa04seUJBSVA1WixVQUFXLFdBQ1grUSxNQUFPLHVCQUdQL1EsVUFBVyxPQUNYK1EsTUFBTyxRQUFTalQsSUFBSyxJQUNyQmlVLFVBQVc4TixlQUFnQixtQ0FHM0I3ZixVQUFXLE9BQ1grUSxNQUFPLG1CQUdQRCxjQUFlLFFBQVNoVCxJQUFLLElBQzdCb1IsVUFBV3hDLEVBQUtrTix3QkFFbEJsTixFQUFLcU0sa0JBQ0x5SCxTakgwR0Z0SSxpQkFDRixha0hqTGUsU0FBU3hMLEdBQ3hCLElBQUltVSxHQUNGclIsUUFFRSw2SUFFRm9RLFFBQ0UsaUJBQ0ZMLFNBQ0UscVJBS0EyRCxFQUFjLDJCQUNkcEMsR0FDRjlnQixVQUFXLFFBQ1grUSxNQUFPLE1BQU9qVCxJQUFLLElBQ25CaVUsU0FBVThPLEdBRVJ5QixHQUNGNVYsRUFBS29CLFFBQVFwQixFQUFLNk0sZUFDZnhLLFFBQVNqUixJQUFLLFdBQVl3VSxVQUFXLE1BRXRDdFMsVUFBVyxTQUNYME8sV0FFSXFDLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUFXeEMsRUFBS21NLG9CQUdoQjlILE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUFXeEMsRUFBS21NLGlCQUFrQmlJLE9BS3RDOWdCLFVBQVcsV0FDWCtRLE1BQU8sTUFBUXJFLEVBQUs2TCxXQUdwQnhILE1BQU8sSUFBTXJFLEVBQUs2TCxXQUdsQnhILE1BQU9yRSxFQUFLNkwsU0FBVyxPQUFTN0wsRUFBSzZMLFdBR3pDdUksRUFBTTVSLFNBQVdvVCxFQUVqQixJQUFJYSxFQUFRelcsRUFBS29CLFFBQVFwQixFQUFLaU4sWUFBYTVJLE1BQU9tUyxJQUU5Q3ZDLEdBQ0YzZ0IsVUFBVyxTQUNYK1EsTUFBTyxZQUFhc0QsYUFBYSxFQUdqQ25GLFdBQ0U2QixNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCaVUsU0FBVThPLEVBQ1YzUixVQUFXLFFBQVFsUyxPQUFPc2xCLE1BSTlCLE9BQ0V2VixTQUFVLFFBQ1ZnRixTQUFVOE8sRUFDVjVQLFFBQVMsT0FDVC9CLFNBQVVvVCxFQUFZdGxCLFFBQ3BCMFAsRUFBS3VNLFFBQVEsS0FBTSxNQUVqQmpaLFVBQVcsV0FDWCtRLE1BQU8sUUFBVW1TLEVBQWMsbUNBQXlCcGxCLElBQUssUUFDN0R1VyxhQUFhLEVBQ2JuRixVQUFXaVUsRUFBT3hDLEtBR2xCNVAsTUFBTyxhQUNQdUIsVUFBVyxFQUNYcEQsV0FFSWxQLFVBQVcsV0FDWCtRLE1BL0JNLDBCQStCWWpULElBQUssUUFDdkJ1VyxhQUFhLEVBQ2JuRixVQUFXeVIsT0FLZjNnQixVQUFXLFFBQ1g4USxjQUFlLFFBQ2ZoVCxJQUFLLElBQ0xtVCxRQUFTLFlBQ1QvQixXQUVJNEIsY0FBZSxVQUNmaEMsZ0JBQWdCLEVBQ2hCbUMsUUFBUyxZQUNUL0IsVUFBV2lVLElBRWJBLEtBSUZuakIsVUFBVyxPQUNYK1EsTUFBT21TLEVBQWMsSUFBS3BsQixJQUFLLElBQy9CdVcsYUFBYSxFQUFNTyxXQUFXLEVBQzlCdEMsVUFBVyxXbEgwRWY0RixpQkFBaUIsT21IcExKLFNBQVN4TCxHQUN4QixPQUNFMkMsa0JBQWtCLEVBQ2xCSCxXQUVJNEIsY0FDRSwrRkFDRmhULElBQUssSUFBS2dSLGdCQUFnQixFQUMxQmlELFVBRUV2QyxRQUNFLGdrQ0FhRm9RLFFBQ0UsNEJBRUZMLFNBQ0UsbXhDQWFKclEsV0FFSWxQLFVBQVcsU0FDWCtRLE1BQU8sSUFBTWpULElBQUssSUFDbEJvUixVQUFXeEMsRUFBS21NLGtCQUNoQnZHLFVBQVcsSUFHWHRTLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUFXeEMsRUFBS21NLGtCQUNoQnZHLFVBQVcsSUFHWHRTLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUFXeEMsRUFBS21NLGtCQUNoQnZHLFVBQVcsR0FFYjVGLEVBQUs2TSxjQUNMN00sRUFBSzBNLHVCQUdUMU0sRUFBSzBNLDRCbkhxSFBsQixpQkFBaUIsUW9IckxKLFNBQVN4TCxHQUN4QixJQUFJcVYsR0FDRi9oQixVQUFXLFdBQ1gwTyxXQUNHcUMsTUFBTyxVQUNQQSxNQUFPLE9BQVFqVCxJQUFLLE1BQ3BCaVQsTUFBTyxXQUFhckUsRUFBSzhMLHVCQUcxQjhRLEdBQ0Z4YSxnQkFBZ0IsRUFDaEJtRCxRQUFTLFdBQ1RGLFVBQ0U2TixRQUNFLGtKQUdKdE4sVUFBVyxFQUNYckIsUUFBUyxLQUNUL0IsVUFDRXhDLEVBQUsyTSxtQkFFSHJaLFVBQVcsU0FDWGtQLFVBQVd4QyxFQUFLbU0saUJBQWtCa0osR0FDbENyVCxXQUNHcUMsTUFBTyxJQUFLalQsSUFBSyxNQUNqQmlULE1BQU8sSUFBS2pULElBQUssUUFLcEJpVCxNQUFPLGFBQWNqVCxJQUFLLE1BQU9nUixnQkFBZ0IsRUFBTStGLFlBQVksRUFDbkUzRixVQUFXNlMsS0FHWC9oQixVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGlCQUFrQmtKLEdBQ2xDclQsV0FDR3FDLE1BQU8sU0FBVWpULElBQUssVUFBVzhXLFdBQVcsSUFFNUM3RCxNQUFPLFlBQWFqVCxJQUFLLFVBQVc4VyxXQUFXLElBRS9DN0QsTUFBTyx1QkFFUEEsTUFBTyx5QkFLVi9RLFVBQVcsU0FDWCtRLE1BQU8sZ0VBSVAvUSxVQUFXLFNBQ1grUSxNQUFPLDRCQUNQdUIsVUFBVyxHQUVieVAsSUFJSixPQUNFaFYsU0FBVSxhQUNWbUMsVUFDRXhDLEVBQUsyTSxtQkFFSHRJLE1BQU9yRSxFQUFLOEwsb0JBQXNCLFFBQVNuRSxhQUFhLEVBQ3hEdlcsSUFBSyxJQUNMb1IsV0FFSWxQLFVBQVcsVUFDWCtRLE1BQU9yRSxFQUFLOEwsc0JBR2hCbEcsVUFBVyxJQUdYdkIsTUFBT3JFLEVBQUs4TCxvQkFBc0IsTUFBTzFhLElBQUssTUFBT3VXLGFBQWEsRUFDbEVuRixXQUVJbFAsVUFBVyxZQUNYK1EsTUFBT3JFLEVBQUs4TCxvQkFDWnpKLE9BQVF1YSxJQUdaaFgsVUFBVyxJQUdmckIsUUFBUyxrQnBINkZUaUgsaUJBQWlCLFNxSHRMSixTQUFTeEwsR0FDeEIsT0FDRUssU0FBVSxPQUNWZ0YsVUFDRXZDLFFBQ0UsZ1hBTUZvUSxRQUNFLHVEQUNGTCxTQUNFLDRUQU1KclEsV0FDSWxQLFVBQVcsT0FDWCtRLE1BQU8sTUFDUGpULElBQUssTUFDTHdVLFVBQVcsS0FFWHRTLFVBQVcsU0FDWCtRLE1BQU8sZUFDUGpULElBQUssSUFDTG9SLFdBQVk2QixNQUFPLFNBRW5CL1EsVUFBVyxTQUNYK1EsTUFBTyxvQkFDUGpULElBQUssT0FFUDRPLEVBQUtxTSxtQkFFSC9ZLFVBQVcsT0FDWCtRLE1BQU8sZUFDUHVCLFVBQVcsSUFFWHRTLFVBQVcsU0FDWHNTLFVBQVcsRUFDWDVELFdBQ0dxQyxNQUFPLDZEQUNQQSxNQUFPLGdEQUNQQSxNQUFPLGtEQUNQQSxNQUFPLDJDQUdackUsRUFBSzJNLHlCckhxSVBuQixpQkFBaUIsTXNIdkxKLFNBQVN4TCxHQUN4QixJQUFJZ2dCLEdBQ0ZsZCxRQUNFLDhDQUNGb1EsUUFDRSx5QkFDRkwsU0FDRSwyRkFHQW9OLEdBQ0Yzc0IsVUFBVyxRQUNYK1EsTUFBTyxPQUNQalQsSUFBSyxJQUNMaVUsU0FBVTJhLEdBWVJoTSxHQUNGMWdCLFVBQVcsU0FDWGtQLFVBQVd5ZCxHQUNYamUsV0FDR3FDLE1BQU8sS0FBTWpULElBQUssT0FDbEJpVCxNQUFPLElBQUtqVCxJQUFLLE9BR2xCd2tCLEdBQ0Y1VixFQUFLNE0sWUFDTDVNLEVBQUsyTSxrQkFDTDNNLEVBQUswTSxxQkFDTHNILEdBckJBM1AsTUFBTyx1QkFBd0JzRCxhQUFhLEVBQzVDL0IsVUFBVyxFQUNYcEQsV0FFSWxQLFVBQVcsT0FDWCtRLE1BQU8sVUFvQmIsT0FEQTRiLEVBQVV6ZCxTQUFXb1QsR0FFbkJ2VixTQUFVLFNBQ1ZnRixTQUFVMmEsRUFDVnhkLFNBQVVvVCxRdEgySVZwSyxpQkFBaUIsT3VIeExKLFNBQVN4TCxHQUN4QixJQUtJa2dCLEdBRUY1c0IsVUFBVyxXQUNYK1EsTUFBTyxrQkFHTDRYLEdBRUYzb0IsVUFBVyxXQUNYK1EsTUFBTyxTQUNQRSxRQUFTLFVBR1A0YixHQUVGN3NCLFVBQVcsV0FDWCtRLE1BQU8sc0JBMkJIMlAsR0FDRjFnQixVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBTyxJQUFLalQsSUFBSyxNQUdqQmlULE1BQU8sSUFBTWpULElBQUssTUFHbEJpVCxNQUFPLElBQUtqVCxJQUFLLE1BR3JCbVQsUUFBUyxLQUNUL0IsV0F4QkZsUCxVQUFXLE9BQ1grUSxNQUFPLG1CQXRDUC9RLFVBQVcsV0FDWCtRLE1BQU8sd2JBK0RINmIsRUFDQWpFLEVBQ0FrRSxJQUlOLE9BQ0V4ZCxrQkFBa0IsRUFDbEIwQyxVQUNFdkMsUUFDQSw2OEVBQ0FvUSxRQUNBLGtZQUVGMVEsVUFDRXhDLEVBQUsyTSxrQkFDTDNNLEVBQUswTSxxQkFDTDFNLEVBQUt1TSxRQUNILElBQ0EsS0FFRTNHLFVBQVcsS0FJYnRTLFVBQVcsV0FDWDhRLGNBQWUsdUNBQXdDaFQsSUFBSyxLQUU5RDRpQixHQTdERjFnQixVQUFXLFVBQ1grUSxNQUFPLDZSQThETDZiLEVBQ0FqRSxFQUNBa0UsR0F2RUY3c0IsVUFBVyxTQUNYK1EsTUFBTyxzcEJBaUJQL1EsVUFBVyxRQUNYK1EsTUFBTyxjQXVETHJFLEVBQUs0TSxtQnZIb0ZQcEIsaUJBQ0YsYXdIMUxlLFNBQVN4TCxHQUN4QixJQWlDSW9nQixFQUFVLHlCQUNWQyxFQUFpQiw4Q0FDckIsT0FDRWhnQixTQUFVLEtBQU0sT0FBUSxTQUN4QmdGLFVBaENBdkMsUUFDRSxndUNBc0JGb1EsUUFDRSx3Q0FDRkwsU0FDRSxvRkFPRnROLFFBQVM2YSxFQUNUN2IsUUFBUyxLQUNUL0IsV0F2Q0FsUCxVQUFXLFdBQ1grUSxNQUFPLHdFQXdDTHJFLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTDFNLEVBQUs2TSxjQUNMN00sRUFBS3FNLG1CQUVIL1ksVUFBVyxTQUNYME8sV0FFSXFDLE1BQU8sS0FBTWpULElBQUssSUFDbEJtVCxRQUFTLE1BQ1QvQixVQUFXeEMsRUFBS21NLG9CQUdoQjlILE1BQU8sSUFBTWpULElBQUssV0FDbEJtVCxRQUFTLGtCQUtialIsVUFBVyxPQUNYK1EsTUFBTyxJQUNQalQsSUFBSyxJQUNMb1IsV0FFSWxQLFVBQVcsY0FDWDBPLFdBQ0lxQyxNQUFPLElBQU1qVCxJQUFLLE1BQ2xCaVQsTUFBTyxJQUFLalQsSUFBSyxVQU16QmtDLFVBQVcsUUFDWCtRLE1BQU8sSUFBTWdjLEVBQWVoekIsTUFBTSxLQUFLRixLQUFLLEtBQU8sT0FBUWlFLElBQUssUUFBUytXLFlBQVksRUFDckY5QyxTQUFVZ2IsRUFBZ0I5YSxRQUFTNmEsRUFDbkM1ZCxVQUNFeEMsRUFBS2tOLHlCQUlQN0ksTUFBTyxNQUFNckUsRUFBSzhMLG9CQUNsQmxHLFVBQVcsVXhId0dmNEYsaUJBQWlCLFF5SDdMSixTQUFTeEwsR0FFeEIsT0FDRUssU0FBVSxNQUNWZ0YsVUFDRXZDLFFBQ0Usc1ZBT0YrUCxTQUVFLHFIQUdGSyxRQUNFLGNBRUozTyxRQUFTLFVBQ1RnQixRQUFTLGVBQ1QvQyxXQUVJbFAsVUFBVyxVQUNYK1EsTUFBTyx5QkFDUHVCLFVBQVcsR0FFYjVGLEVBQUt1TSxRQUNILFNBQ0EsVUFFRS9KLFVBQVcsV0FJYmxQLFVBQVcsU0FDWCtRLE1BQU8sMkJBSVAvUSxVQUFXLE9BQ1grUSxNQUFPLGtCQUdQL1EsVUFBVyxPQUNYK1EsTUFBTyxrQkFDUHVCLFVBQVcsSUFHWHZCLE1BQU8scUJBQXdCdUIsVUFBVyxHQUU1QzVGLEVBQUtvQixRQUFRcEIsRUFBS29NLGtCQUFtQjlZLFVBQVcsU0FBVXNTLFVBQVcsSUFDckU1RixFQUFLb0IsUUFBUXBCLEVBQUtxTSxtQkFBb0I5SCxRQUFTLFFBRTdDalIsVUFBVyxTQUNYK1EsTUFDRSwySEFJRnVCLFVBQVcsSUFHWHZCLE1BQU8sZ0J6SDZIWG1ILGlCQUFpQixXMEg5TEosU0FBU3hMLEdBQ3pCLElBQUlzZ0IsR0FDSGh0QixVQUFXLFVBQ1grUSxNQUFPLGtDQU1Sb08sR0FDQ25mLFVBQVcsU0FDWCtRLE1BQU8sOEJBQ1B1QixVQUFXLEdBRVpvTyxFQUFTaFUsRUFBS29CLFFBQVFwQixFQUFLcU0sbUJBQW1COUgsUUFBUyxPQWdCdkRnYyxHQUNDanRCLFVBQVcsV0FDWDhRLGNBQWUsa0JBQ2ZoVCxJQUFLLFVBQ0xvUixXQVpBbFAsVUFBVyxTQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxNQUNuQm9SLFVBQVcsT0FBUWlRLEVBQVN1QixFQUFRc00sR0FsQnBDaHRCLFVBQVcsVUFDWCtRLE1BQU8seUJBMkJZckUsRUFBS2tOLHdCQUd6QixPQUNDN00sU0FBVSxRQUNWZ0YsVUFDQ3ZDLFFBQVMsK0RBQ1RvUSxRQUFTLHNCQUNUTCxTQUFVLHVkQUVYclEsVUFDQ3hDLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTCtGLEdBL0JEbmYsVUFBVyxPQUNYK1IsVUFBVzhOLGVBQWdCLGVBQzNCOU8sTUFBTyxnQkFDUGpULElBQUssS0E4Qko0aUIsRUFDQXNNLEdBdkJEamMsTUFBTyxTQUNQdUIsVUFBVyxHQXdCVjJhLFMxSDJJQy9VLGlCQUFpQixVMkgvTEosU0FBU3hMLEdBQ3hCLElBQUl3Z0IsRUFBbUIsOGxDQVFuQkMsRUFBaUJ6Z0IsRUFBS3VNLFFBQ3hCLElBQ0EsS0FFRTNHLFVBQVcsSUFHWDhhLEVBQWdCMWdCLEVBQUt1TSxRQUN2QixTQUNBLFVBRUUzRyxVQUFXLEtBR1hvTyxHQUNGMWdCLFVBQVcsU0FDWCtRLE1BQU8sSUFBTWpULElBQUssSUFDbEJvUixXQUFZNkIsTUFBTyxRQUVqQm9SLEdBQ0ZuaUIsVUFBVyxTQUFVK1EsTUFBTyxZQUUxQmlVLEdBQ0ZobEIsVUFBVyxXQUNYOFEsY0FBZSxtREFBb0RoVCxJQUFLLE9BQ3hFaVUsU0FBVSwrREFDVjdDLFVBQ0V4QyxFQUFLaU4sWUFFSDNaLFVBQVcsU0FDWCtRLE1BQU8sTUFBT2pULElBQUssTUFDbkJpVSxTQUFVbWIsRUFDVmhlLFVBQVd3UixFQUFReUIsSUFFckJnTCxFQUFlQyxJQUduQixPQUNFL2Qsa0JBQWtCLEVBQ2xCNEMsUUFBUyxTQUNURixTQUFVbWIsRUFDVmpjLFFBQVMsa0NBQ1QvQixVQUNFaWUsRUFBZUMsRUFBZTFnQixFQUFLeU0sb0JBQ25DdUgsRUFBUXlCLEVBQ1J6VixFQUFLNE0sWUFDTDBMLEdBRUVobEIsVUFBVyxRQUNYK1EsTUFBTyxlQUFnQmpULElBQUssT0FDNUJpVSxTQUFVbWIsRUFDVmhlLFVBQ0V3UixFQUFReUIsRUFDUmdMLEVBQWVDLEVBQWUxZ0IsRUFBS3lNLG9CQUNuQzZMLFczSGlJTjlNLGlCQUFpQixVNEhoTUosU0FBU3hMLEdBQ3hCLElBQUkyZ0IsRUFBbUIzZ0IsRUFBS3VNLFFBQzFCLElBQ0EsS0FFRS9KLFVBQVcsVUFHZixPQUNFbUUsWUFBYSxNQUFPZixVQUFXLEVBQy9CcEQsVUFDRXhDLEVBQUt1TSxRQUFRLEtBQU0sS0FDbkJ2TSxFQUFLdU0sUUFDSCxVQUNBLEtBRUUzRyxVQUFXLEdBQ1hwRCxVQUNFbWUsTUFLSnJ0QixVQUFXLE9BQ1grUSxNQUFPLGdDQUNQdUIsVUFBVyxLQUdYdFMsVUFBVyxRQUNYK1EsTUFBTyw2REFHUC9RLFVBQVcsV0FDWCtRLE1BQU8sK0JBR1AvUSxVQUFXLFVBQ1grUSxNQUFPLHVCQUdQL1EsVUFBVyxTQUNYK1EsTUFBTyxvQkFFVHJFLEVBQUs2TSxxQjVIc0pQckIsaUJBQWlCLEs2SGpNSixTQUFTeEwsR0FjeEIsT0FDRUssU0FBVSxXQUNWa0YsUUFBUyxnQkFDVEYsVUFDRXdOLFNBR0Usd0RBQ0YvUCxRQUNFLG15QkFnQkZvUSxRQUNFLHNEQUVKMVEsVUFDRXhDLEVBQUsyTSxrQkFDTDNNLEVBQUs0TSxZQUNMNU0sRUFBS3FNLG1CQTNDUC9ZLFVBQVcsV0FDWCtRLE1BQU8sdUJBR1AvUSxVQUFXLFdBQ1grUSxNQUFPLFVBQVdqVCxJQUFLLFk3SDJMdkJvYSxpQkFBaUIsUThIbE1KLFNBQVN4TCxHQUN4QixJQUFJNGdCLEVBQWU1Z0IsRUFBS3VNLFFBQVEsS0FBTSxLQTREbEN5UCxFQUVGLGd4QkFpQkU2RSxFQUNGN0UsRUFBTXhwQixPQUNBbkYsTUFBTSxLQUNOSixJQUFLLFNBQVNhLEdBQU8sT0FBT0EsRUFBSVQsTUFBTSxLQUFLLEtBQzNDRixLQUFLLEtBdUxQMnpCLEVBekZKLG11SUEwRll0dUIsT0FDQW5GLE1BQU0sS0FDTkosSUFBSyxTQUFTYSxHQUFPLE9BQU9BLEVBQUlULE1BQU0sS0FBSyxLQUMzQ0YsS0FBSyxLQUVqQixPQUNJa1QsU0FBVSxXQUFXLGNBQ3JCc0Msa0JBQWtCLEVBQ2xCMEMsVUFDRXZDLFFBQ0VpZSxzdEZBQ0ZsTyxTQUNFbU8saTJNQUlKemMsUUFBUywyREFDVC9CLFdBR0lsUCxVQUFXLFVBQ1gwTyxXQUNJcUMsTUFBTyxzQkFDUEEsTUFBTyw0Q0FDUEEsTUFBTyw0Q0FDUEEsTUFBTyxpREFDUEEsTUFBTyxzQ0FDUEEsTUFBTyw2QkFDUEEsTUFBTyx3QkFDUEEsTUFBTywrQkFDUEEsTUFBTywyQ0FDUEEsTUFBTyxpQ0FDUEEsTUFBTyx1Q0FDUEEsTUFBTyxrRkFDUEEsTUFBTyx3QkFDUEEsTUFBTyx3QkFDUEEsTUFBTyxnQ0FDUEEsTUFBTyxzQkFDUEEsTUFBTyx3QkFDUEEsTUFBTywrREFDUEEsTUFBTyw4QkFDUEEsTUFBTyxpREFDUEEsTUFBTyxxQ0FDUEEsTUFBTyxzQ0FDUEEsTUFBTyx5Q0FDUEEsTUFBTyw4QkFDUEEsTUFBTyx5QkFDUEEsTUFBTyx5Q0FDUEEsTUFBTyw0QkFDUEEsTUFBTyw2QkFDUEEsTUFBTyxvQ0FDUEEsTUFBTyxnQ0FDUEEsTUFBTywrQkFDUEEsTUFBTywwQ0FDUEEsTUFBTyxzQ0FDUEEsTUFBTyx3Q0FDUEEsTUFBTywyQ0FDUEEsTUFBTyx5QkFDUEEsTUFBTyxxQkFDUEEsTUFBTyw4QkFDUEEsTUFBTyxvQ0FDUEEsTUFBTyx1Q0FDUEEsTUFBTyx3R0FDUEEsTUFBTyx1RUFLWEEsTUFBTyxtQ0FLUEEsTUFBTyxpQkFDUGdCLFNBQVUsWUFJVmhCLE1BQU8sc0RBS1BBLE1BQU8sOE1BS1BBLE1BQU8sc0NBQ1B1QixVQUFXLEtBSVh2QixNQUFPLGlCQUNQalQsSUFBSyxXQUNMOFcsV0FBVyxFQUNYN0MsVUFFRWxYLEtBQVUsNEtBT1prVyxNQUFPLG1DQUNQZ0IsVUFFRXZDLFFBQVUsVUFLWnVCLE1BQU8sc0RBQ1BnQixVQUVFdkMsUUFBVSxzQkFPWnNCLGNBQWUsb0NBQ2ZoVCxJQUFLNE8sRUFBS2dNLFlBQ1Y5RCxXQUFXLEVBQ1g3QyxTQUFVLHlDQUlWL1IsVUFBVyxPQUNYK1EsTUFBTyxxQ0FJUC9RLFVBQVcsT0FDWCtRLE1BQU8sNEZBSVBBLE1BQU8sa0dBQ1BnQixVQUNFdkMsUUFBUyxVQUNUM1UsS0FBTSxxRkFLUmtXLE1BQU8sT0FBU3ljLEVBQWUsYUFLL0J6YyxNQUFPLE9BQVN3YyxFQUFXLFNBRzNCeGMsTUFBTyxPQUFTd2MsRUFBVyxlQUMzQnhiLFVBQ0V2QyxRQUFTLE9BQ1QzVSxLQUFNNnRCLEVBQU03cEIsUUFBUSxRQUFRLE9BSTlCbUIsVUFBVyxPQUNYK1EsTUFBTyxPQUFTd2MsRUFBVyxTQUkzQnZ0QixVQUFXLFNBQ1grUSxNQUFPLElBQU1qVCxJQUFLLElBQ2xCb1IsV0FBWTZCLE1BQU8sU0FHbkIvUSxVQUFXLFNBQ1grUSxNQUFPLGVBQWlCalQsSUFBSyxJQUM3Qm9SLFdBQVk2QixNQUFPLFVBQ25CdUIsVUFBVyxLQUdYdkIsTUE1YlUsNENBNmJWb0IsZ0JBQWdCLEVBQ2hCakQsV0FJSW1FLGFBQWMsUUFBUSxPQUFPLFNBQVMsTUFBTSxJQUFJLE1BQU0sT0FBTyxNQUFNLE9BQU8sT0FBTyxTQUFTLE1BQU0sUUFDaEd2RSxnQkFBZ0IsTUFNcEJpQyxNQUFPLElBQUtqVCxJQUFLLElBQ2pCb1IsV0FBWTZCLE1BQU8sUUFHckJyRSxFQUFLNk0sY0FFTDdNLEVBQUswTSxxQkFDTGtVLEdBSUV0dEIsVUFBVyxPQUNYME8sV0FDR3FDLE1BQU8sY0FBZXVCLFVBQVcsS0FDakN2QixNQUFPLFlBQ1BBLE1BQU8sUUFBU2pULElBQUssUUFLeEJrQyxVQUFXLFNBQ1grUSxNQTdkRSxzQ0E4ZEZ1QixVQUFXLFc5SC9SbkI0RixpQkFBaUIsTStIbk1KLFNBQVN4TCxHQUN4QixJQUFJb1YsR0FDRi9RLE1BQU8sb0NBRUxtUSxHQUNGbGhCLFVBQVcsT0FBUStRLE1BQU8saUJBRXhCMlAsR0FDRjFnQixVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGlCQUFrQnFJLEdBQ2xDeFMsV0FFSXFDLE1BQU8sS0FBTWpULElBQUssTUFHbEJpVCxNQUFPLEtBQU9qVCxJQUFLLEtBRXJCNE8sRUFBS29CLFFBQVFwQixFQUFLb00sa0JBQW1CN0gsUUFBUyxPQUM5Q3ZFLEVBQUtvQixRQUFRcEIsRUFBS3FNLG1CQUFvQjlILFFBQVMsU0FHL0N1UCxHQUFVOVIsVUFBV2hDLEVBQUs4TSxtQkFBb0I5TSxFQUFLNk0sZ0JBQ3ZELE9BQ0V4TSxTQUFVLE1BQU8sT0FBUSxPQUFRLE9BQVEsT0FBUSxRQUNqRHNDLGtCQUFrQixFQUNsQjBDLFNBQ0Usa2dCQVFGN0MsVUFDRXhDLEVBQUsyTSxrQkFDTDNNLEVBQUt1TSxRQUFRLEtBQU0sS0FBTS9KLFVBQVdnUyxLQUNwQ3hVLEVBQUt1TSxRQUNILE9BQ0EsUUFFRS9KLFdBRUlsUCxVQUFXLFNBQ1grUSxNQUFPLGlCQUtmckUsRUFBS3VNLFFBQ0gsdUJBQ0EsR0FFRW5LLGdCQUFnQixFQUNoQmlELFNBQVUsa0JBQ1ZFLFFBQVN2RixFQUFLOEwsdUJBSWhCeFksVUFBVyxTQUNYK1EsTUFBTyxvQkFBcUJqVCxJQUFLLFVBQ2pDb1IsVUFDRXhDLEVBQUttTSxrQkFFSDdZLFVBQVcsUUFDWDBPLFdBQ0dxQyxNQUFPLFVBQ1BBLE1BQU8sT0FBUWpULElBQUssVUFLN0JvakIsR0FFRWxoQixVQUFXLFVBQVcrUSxNQUFPLFlBRS9CK1EsR0FHRS9RLE1BQU8scURBR1AvUSxVQUFXLFdBQ1g4USxjQUFlLFdBQVloVCxJQUFLLE9BQVErVyxZQUFZLEVBQ3BENUQsUUFBUyxZQUNUL0IsVUFDRXhDLEVBQUtrTix1QkFFSDVaLFVBQVcsU0FDWCtRLE1BQU8sTUFBT2pULElBQUssTUFDbkJvUixVQUNFLE9BQ0E0UyxFQUNBcFYsRUFBSzBNLHFCQUNMc0gsRUFDQUYsT0FNTnhnQixVQUFXLFFBQ1g4USxjQUFlLGtCQUFtQmhULElBQUssSUFBSytXLFlBQVksRUFDeEQ1RCxRQUFTLFdBQ1QvQixXQUNHNEIsY0FBZSxzQkFDaEJwRSxFQUFLa04seUJBSVA5SSxjQUFlLFlBQWFoVCxJQUFLLElBQ2pDbVQsUUFBUyxRQUNUL0IsVUFBV3hDLEVBQUtrTix5QkFHaEI5SSxjQUFlLE1BQU9oVCxJQUFLLElBQzNCb1IsVUFBV3hDLEVBQUtrTix5QkFHaEI3SSxNQUFPLE1BRVQyUCxFQUNBRixTL0gwRUZ0SSxpQkFDRixZZ0lyTWUsU0FBU3hMLEdBQ3RCLE9BQ0ltTCxtQkFBbUIsUWhJc012QkssaUJBQWlCLE9pSXhNSixTQUFTeEwsR0E0RHhCLE9BQ0VxRixVQTNEQXZDLFFBQ0UsaVRBS0ZtUyxLQUNFLDBCQUNGL0IsUUFDRSxtQkFtREYxUSxXQTVCQWxQLFVBQVcsT0FDWCtRLE1BQU8sbUJBQ1B1QixVQUFXLElBckJYdFMsVUFBVyxTQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxNQUNuQndVLFVBQVcsS0FJWHRTLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUFXeEMsRUFBS21NLG9CQUloQjdZLFVBQVcsU0FDWCtRLE1BQU8sSUFBTWpULElBQUssSUFDbEJvUixVQUFXeEMsRUFBS21NLGtCQUNoQnZHLFVBQVcsSUFVWHZCLE1BQU9yRSxFQUFLNkwsU0FBVyxJQUFNakcsVUFBVyxJQUl4Q3RTLFVBQVcsU0FDWCtRLE1BQU8sK0ZBQ1B1QixVQUFXLEdBdUJUNUYsRUFBS3lNLG9CQUNMek0sRUFBSzBNLDRCakltSVBsQixpQkFDRixha0kxTWUsU0FBU3hMLEdBQ3hCLElBQUltVixHQUNGOVEsTUFBTyxZQUNQdUIsVUFBVyxHQUVUeVAsR0FDRi9oQixVQUFXLFdBQ1gwTyxXQUFhcUMsTUFBTyx1QkFNbEJpUixHQUNGaGlCLFVBQVcsU0FDWDBPLFdBQWFxQyxNQUFPLElBQUtqVCxJQUFLLE1BQVNpVCxNQUFPLEtBQU1qVCxJQUFLLFFBQ3pEb1IsVUFDRTJTLEVBQ0FFLEdBRUUvaEIsVUFBVyxXQUNYK1EsTUFBTyxVQUNQalQsSUFBSyxZQXVCUDZ2QixFQUFhamhCLEVBQUtvQixRQUFRcEIsRUFBS3VNLFFBQVEsS0FBTSxPQUMvQ3ZLLFdBRUlxQyxNQUFPLElBQUtqVCxJQUFLLE1BRWpCaVQsTUFBTyxLQUFNalQsSUFBSyxPQUV0Qm9SLFdBcEJBbFAsVUFBVyxTQUNYME8sV0FJSXFDLE1BQU8sNEZBSVBBLE1BQU8sc0dBY2IsT0FDRWhFLFNBQVUsS0FBTSxPQUNoQmtGLFFBQVMsZUFDVDVDLGtCQUFrQixFQUNsQjBDLFVBQ0V2QyxRQUNFLG9YQUdGK1AsU0FDRSw0aDZCQWdNRmtCLFNBQ0UsMkdBRUp2UixVQUNFMlMsRUFDQW5WLEVBQUs0TSxZQUNMMEksR0E1T0ZoaUIsVUFBVyxTQUNYME8sV0FBYXFDLE1BQU8sSUFBS2pULElBQUssTUFBU2lULE1BQU8sS0FBTWpULElBQUssVUFsQnpEa0MsVUFBVyxVQUNYK1EsTUFBTyx5QkErUExnUixFQUNBNEwsU2xJOURGelYsaUJBQ0YsYW1JOU1lLFNBQVN4TCxHQUN4QixPQUNFcUYsVUFDRXZDLFFBQVMsNmlCQVFUb1EsUUFBUywyQ0FDVDlhLE1BQU8sYUFDUHlhLFNBQVUsd3RFQXlCWnJRLFVBQ0V4QyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLb00saUJBQ0xwTSxFQUFLcU0sa0JBQ0xyTSxFQUFLNk0scUJuSXNLUHJCLGlCQUFpQixVb0lqTkosU0FBU3hMLEdBQ3hCLE9BQ0V3QyxVQUNFeEMsRUFBSzZNLGVBRUh4SSxNQUFPLDZDQUE4Q2pULElBQUssSUFDMUQrVyxZQUFZLElBR1o5RCxNQUFPLDJCQUE0QmpULElBQUssSUFDeENpVSxTQUFVLHdDQUNWTyxVQUFXLEtBR1h2QixNQUFPLGlCQUFrQmpULElBQUssSUFDOUJvUixVQUFXeEMsRUFBSzZNLGVBQ2hCakgsVUFBVyxJQUViNUYsRUFBS29NLGlCQUNMcE0sRUFBS3FNLG1CQUVIL1ksVUFBVyxTQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxPQUNuQnNXLGNBQWMsRUFBTVMsWUFBWSxFQUNoQ3ZDLFVBQVcsVXBJMExmNEYsaUJBQWlCLFNxSWxOSixTQUFTeEwsR0FFeEIsSUFnQklraEIsR0FFRjdjLE1BQU8sS0FDUGpULElBQUssS0FDTHdVLFVBQVcsR0FHVHVRLEdBRUY5UixNQUFPLEtBQ1BqVCxJQUFLLE1BR0grdkIsR0FFRjd0QixVQUFXLFVBQ1grUSxNQUFPLElBQUtqVCxJQUFLLElBQ2pCb1IsVUFBV3hDLEVBQUtzTSxxQkFHZDhVLEdBRUY5dEIsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFVBQVd4QyxFQUFLbU0sbUJBbUJka1YsSUF6REZoZCxNQUFPLHFCQUNQdUIsVUFBVyxJQUtYdFMsVUFBVyxTQUNYME8sV0FDR3FDLE1BQU8sdUJBQ1BBLE1BQU8sbUJBRVZ1QixVQUFXLEdBa0RYc2IsR0FQQTdjLE1BQU8sTUFTUDhSLEVBQ0FnTCxFQUNBbmhCLEVBQUswTSxxQkFDTDFNLEVBQUtxTSxrQkFDTHJNLEVBQUtvTSxpQkFDTGdWLEdBekJBOXRCLFVBQVcsU0FDWCtRLE1BQU8sZ0JBS1AvUSxVQUFXLFNBQ1grUSxNQUFPLFVBcUJQckUsRUFBSzZNLGVBTVAsT0FIQXFVLEVBQVMxZSxTQUFXNmUsRUFDcEJsTCxFQUFLM1QsU0FBVzZlLEdBR2Q3ZSxTQUFVNmUsRUFBTS93QixTQUNiK1QsTUFBTyxlcklnSVZtSCxpQkFDRixhc0lwTmUsU0FBU3hMLEdBR3hCLElBQUlzaEIsRUFBTSxhQUdOQyxFQUFRLElBQU1ELEVBQUksT0FBT0EsRUFBSyxlQUU5QkUsRUFBWSwrQkFFWkMsR0FFSXJ3QixJQUFLbXdCLEVBQ0wzYixVQUFXLEVBQ1h2RCxRQUVFL08sVUFBVyxTQUNYbEMsSUFBSyxJQUNMd1UsVUFBVyxFQUNYcEQsV0FDSTZCLE1BQU8sY0FLckIsT0FDRTFCLGtCQUFrQixFQUNsQjRCLFFBQVMsS0FDVC9CLFVBQ0V4QyxFQUFLdU0sUUFBUSxZQUFhLE1BSXhCbEksTUExQmEsa0NBMEJTa2QsRUFDdEI1WixhQUFhLEVBQ2JuRixXQUVJbFAsVUFBVyxPQUNYK1EsTUEvQlMsa0NBZ0NUMkQsWUFBWSxFQUNacEMsVUFBVyxJQUdmdkQsT0FBUW9mLElBSVJwZCxNQUFPbWQsRUFBWUQsRUFDbkI1WixhQUFhLEVBQ2IvQixVQUFXLEVBQ1hwRCxXQUVJbFAsVUFBVyxPQUNYK1EsTUFBT21kLEVBQ1B4WixZQUFZLEVBQ1pwQyxVQUFXLElBR2Z2RCxPQUFRb2YsSUFJUm51QixVQUFXLE9BQ1hzUyxVQUFXLEVBQ1h2QixNQUFPbWQsRUFBWUYsRUFBTSxZdEl1SjdCOVYsaUJBQWlCLFd1SXZOSixTQUFTeEwsR0FDeEIsT0FDRXFGLFVBQ0V2QyxRQUFTLCtEQUNUK1AsU0FBVSwyR0FFVkssUUFBUyxjQUVYMVEsVUFDRXhDLEVBQUtxTSxrQkFDTHJNLEVBQUs0TSxZQUNMNU0sRUFBS3lNLHFCQUVIblosVUFBVyxRQUNYOFEsY0FBZSx1QkFBd0JoVCxJQUFLLEtBQzVDbVQsUUFBUyxLQUNUL0IsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQ2hCNUssUUFBU0QsZ0JBQWdCLEVBQU0rRixZQUFZLFFBSy9DN1UsVUFBVyxXQUNYOFEsY0FBZSxNQUNmaFQsSUFBSyxJQUFLK1csWUFBWSxFQUN0QjlDLFNBQVUsZ0JBR1ZoQixNQUFPLGNBQ1BqVCxJQUFLLE9BQVErVyxZQUFZLFV2STBMN0JxRCxpQkFBaUIsU3dJeE5KLFNBQVN4TCxHQUV4QixJQXFDSXVNLEVBQVV2TSxFQUFLdU0sUUFBUSxJQUFLLEtBSTVCa0ssRUFBUXpXLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUY1Qiw0QkFJWCtRLEdBQVk5aEIsVUFBVyxXQUFZK1EsTUFBTyw4QkFFMUMyUCxHQUNGMWdCLFVBQVcsU0FDWGtQLFVBQVd4QyxFQUFLbU0saUJBQWtCaUosR0FDbENwVCxXQUNHcUMsTUFBTyxJQUFLalQsSUFBSyxNQUNqQmlULE1BQU8sSUFBS2pULElBQUssT0FJdEIsT0FDRWlQLFNBQVUsTUFDVm1DLFVBQ0UrSixFQUNBNkksRUFDQXBCLEdBRUU1UCxjQUFlLFFBQVNoVCxJQUFLLFFBQzdCbVQsUUFBUyxJQUNUL0IsVUFBV2lVLEVBQU9sSyxLQUdsQm5JLGNBQWUsU0FBVWhULElBQUssS0FDOUJvUixXQUVJbFAsVUFBVyxVQUFXK1EsTUFBT3JFLEVBQUs2TCxTQUFVN0QsWUFBWSxNQUs1RDNELE1BQU9yRSxFQUFLNkwsU0FBVyxVQUFXbEUsYUFBYSxFQUMvQ3ZXLElBQUssS0FDTG9SLFdBRUlsUCxVQUFXLFVBQ1grUSxNQUFPckUsRUFBSzZMLFdBR1p4SCxNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCaVUsVUFsRlJ2QyxRQUVFLDJHQUNGb1EsUUFFRSwweERBaUJGTCxTQUVFLCtzQ0EyRE1qTixVQUFXLEVBQ1hwRCxVQUNFd1IsRUFDQXpILEdBRUVsSSxNQUFNLG1CQUNOc0QsYUFBYSxFQUFNdlcsSUFBSyxLQUN4Qm9SLFdBRUlsUCxVQUFXLE9BQ1grUSxNQUFPckUsRUFBSzZMLGFBS2hCdlksVUFBVyxTQUNYK1EsTUFBTyw0RUFDUHVCLFVBQVcsR0FFYndQLEtBSU54UCxVQUFXLFV4STRHZjRGLGlCQUNGLFl5SXhORixTQUFTeEwsR0FZUCxPQUNFSyxTQUFVLEtBQU0sT0FDaEJnRixTQUVFLDZpQ0FlRjdDLFVBRUV4QyxFQUFLdU0sUUFBUSxJQUFLLEtBQU0zRyxVQUFXLEtBR2pDdFMsVUFBVyxXQUNYK1EsTUFBTyx5Q0FDUGpULElBQUssTUFDTCtXLFlBQVksRUFDWlIsYUFBYSxFQUNibkYsV0FFSWxQLFVBQVcsVUFDWCtRLE1BQU8sbUNBQ1A4RCxZQUFZLElBR1o3VSxVQUFXLE9BQ1grUSxNQUFPLFdBR1RyRSxFQUFLa04seUJBbERYNVosVUFBVyxTQUNYK1EsTUFBTyxRQUFTalQsSUFBSyxJQUNyQm1ULFFBQVMsUUFJVGpSLFVBQVcsU0FDWCtRLE1BQU8sNkJ6SWtOUG1ILGlCQUFpQixTMEk3TkosU0FBU3hMLEdBQ3hCLElBQUltVSxHQUNGclIsUUFDRSw4TEFHRitQLFNBQ0UsMEJBQ0ZLLFFBQVMsbUJBRVB3TyxHQUNGcHVCLFVBQVcsT0FBUytRLE1BQU8sa0JBRXpCK1AsR0FDRjlnQixVQUFXLFFBQ1grUSxNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCaVUsU0FBVThPLEVBQ1Y1UCxRQUFTLEtBRVBvZCxHQUNGdGQsTUFBTyxPQUNQdUIsVUFBVyxHQUVUb08sR0FDRjFnQixVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGtCQUNoQm5LLFdBRUlxQyxNQUFPLGNBQWVqVCxJQUFLLE1BQzNCb1IsVUFBV3hDLEVBQUttTSxpQkFBa0J1VixHQUNsQzliLFVBQVcsS0FHWHZCLE1BQU8sY0FBZWpULElBQUssTUFDM0JvUixVQUFXeEMsRUFBS21NLGlCQUFrQnVWLEdBQ2xDOWIsVUFBVyxLQUdYdkIsTUFBTyxlQUFnQmpULElBQUssTUFDNUJvUixVQUFXeEMsRUFBS21NLGlCQUFrQnVWLEVBQVFDLEVBQWlCdk4sS0FHM0QvUCxNQUFPLGVBQWdCalQsSUFBSyxNQUM1Qm9SLFVBQVd4QyxFQUFLbU0saUJBQWtCdVYsRUFBUUMsRUFBaUJ2TixLQUczRC9QLE1BQU8sWUFBYWpULElBQUssSUFDekJ3VSxVQUFXLEtBR1h2QixNQUFPLFlBQWFqVCxJQUFLLElBQ3pCd1UsVUFBVyxLQUdYdkIsTUFBTyxVQUFXalQsSUFBSyxNQUd2QmlULE1BQU8sVUFBV2pULElBQUssTUFHdkJpVCxNQUFPLGFBQWNqVCxJQUFLLElBQzFCb1IsVUFBV3hDLEVBQUttTSxpQkFBa0J3VixFQUFpQnZOLEtBR25EL1AsTUFBTyxhQUFjalQsSUFBSyxJQUMxQm9SLFVBQVd4QyxFQUFLbU0saUJBQWtCd1YsRUFBaUJ2TixJQUVyRHBVLEVBQUtvTSxpQkFDTHBNLEVBQUtxTSxvQkFHTHlILEdBQ0Z4Z0IsVUFBVyxTQUFVc1MsVUFBVyxFQUNoQzVELFdBQ0dxQyxNQUFPckUsRUFBS2lNLGlCQUFtQixZQUMvQjVILE1BQU8seUJBQ1BBLE1BQU9yRSxFQUFLZ00sWUFBYyxhQUczQmlJLEdBQ0YzZ0IsVUFBVyxTQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxLQUNsQm9SLFVBQVcsT0FBUWtmLEVBQVE1TixFQUFRRSxFQUFRaFUsRUFBSzJNLG9CQUdsRCxPQURBeUgsRUFBTTVSLFVBQVl3UixFQUFRRixFQUFRNE4sSUFFaENyaEIsU0FBVSxLQUFNLE1BQU8sV0FDdkJnRixTQUFVOE8sRUFDVjVQLFFBQVMsaUJBQ1QvQixVQUNFa2YsRUFDQTVOLEVBQ0FFLEVBQ0FoVSxFQUFLMk0sbUJBRUgzSyxXQUNHMU8sVUFBVyxXQUFZOFEsY0FBZSxRQUN0QzlRLFVBQVcsUUFBUzhRLGNBQWUsVUFFdENoVCxJQUFLLElBQ0xtVCxRQUFTLFlBQ1QvQixVQUNFeEMsRUFBS2tOLHNCQUNMK0csR0FFRTVQLE1BQU8sS0FBTWpDLGdCQUFnQixFQUM3QmlELFNBQVUsV0FLZC9SLFVBQVcsT0FDWCtRLE1BQU8sV0FBWWpULElBQUssTUFHeEJpVCxNQUFPLDJCMUkyR1htSCxpQkFBaUIsSTJJOU5KLFNBQVN4TCxHQVd4QixPQUNBSyxTQUFTLElBQUssT0FDZGdGLFVBWEF2QyxRQUNFLHdDQUNGb1EsUUFDRSxRQUNGTCxTQUNFLHF0QkFDRjFrQixLQUNFLDhJQUtGb1gsUUFBUyxzQkFDVC9DLFVBQ0F4QyxFQUFLeU0sb0JBQ0h6TSxFQUFLcU0sa0JBQ0xyTSxFQUFLNk0scUIzSTZNTHJCLGlCQUFpQixNNEkvTkosU0FBU3hMLEdBQ3hCLElBcUJJNGhCLEVBQWUsNEJBNEJmQyxHQUNBdnVCLFVBQVcsWUFDWCtRLE1BQU8sYUFDUGhDLFFBQ0UvTyxVQUFXLFNBQ1hsQyxJQUFLd3dCLEVBQ0wxWixXQUFXLElBUWI0WixHQUNGemQsTUFBT3VkLEVBQWUsUUFDdEJqYSxhQUFhLEVBQ2JuRixXQUVJbFAsVUFBVyxZQUNYK1EsTUFBT3VkLEVBQ1B4d0IsSUFBSyxRQUNMK1csWUFBWSxFQUNadkMsVUFBVyxJQUdmQSxVQUFXLEdBS1RtYyxHQUNGMWQsTUFBT3VkLEVBQWUsUUFBU3h3QixJQUFLLElBQ3BDdVcsYUFBYSxFQUNiL0IsVUFBVyxFQUNYcEQsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS2lOLFlBQWE1SSxNQUFPdWQsTUFJMUMsT0FDRXZoQixTQUFVLE1BQ1ZzQyxrQkFBa0IsRUFDbEIwQyxVQTNGRXZDLFFBQ0UsdU5BR0ZvUSxRQUNFLHlDQUNGTCxTQUNFLDhzQkFxRkpyUSxXQUVJbFAsVUFBVyxPQUNYK1EsTUFBTyxnQ0FFVHJFLEVBQUtvTSxpQkFDTHBNLEVBQUtxTSxtQkFFSC9ZLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUNFeEMsRUFBS21NLGtCQUVIN1ksVUFBVyxRQUNYK1EsTUFBTyxTQUFValQsSUFBSyxTQUk1QjRPLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxzQkFFSHBaLFVBQVcsU0FDWDBPLFdBQ0lxQyxNQUFPLG9CQUNQQSxNQUFPLHFCQUNQQSxNQUFPckUsRUFBS2dNLGNBRWhCcEcsVUFBVyxJQUdYdkIsTUFBTyxJQUFNckUsRUFBS2tNLGVBQWlCLGtDQUNuQzdHLFNBQVUsb0JBQ1Y3QyxVQUNFeEMsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMMU0sRUFBS2dOLGFBRUgzSSxNQUFPLElBQUtqVCxJQUFLLGFBQ2pCd1UsVUFBVyxFQUNYZSxZQUFhLFFBR2pCZixVQUFXLElBakdidFMsVUFBVyxVQUNYK1EsTUFBTyxlQUNQaEMsUUFDRS9PLFVBQVcsU0FDWGxDLElBQUssMEJBQ0w4VyxXQUFXLEtBakJiNVUsVUFBVyxVQUNYK1EsTUFBTyxpQkFDUGhDLFFBQ0UvTyxVQUFXLFNBQ1hsQyxJQUFLLHNCQUNMOFcsV0FBVyxLQTZHWDVVLFVBQVcsV0FDWDhRLGNBQWUsV0FBWWhULElBQUssS0FBTStXLFlBQVksRUFDbEQzRixVQUNFeEMsRUFBS29CLFFBQVFwQixFQUFLaU4sWUFBYTVJLE1BQU8sOEJBRXBDL1EsVUFBVyxTQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxLQUNsQnNXLGNBQWMsRUFDZFMsWUFBWSxFQUNaM0YsVUFDRXhDLEVBQUt5TSxvQkFDTHpNLEVBQUswTSx3QkFJWG5JLFFBQVMsU0FHVEYsTUFBTyxNQUFRckUsRUFBSzZMLFNBQVVqRyxVQUFXLEdBRTNDaWMsRUFDQUMsRUFDQUMsR0FFRnhkLFFBQVMsVTVJMkRUaUgsaUJBQWlCLEk2SWhPSixTQUFTeEwsR0FDeEIsSUFBSTZMLEVBQVcsd0NBRWYsT0FDRXJKLFVBQ0V4QyxFQUFLMk0sbUJBRUh0SSxNQUFPd0gsRUFDUHRHLFFBQVNzRyxFQUNUeEcsVUFDRXZDLFFBQ0UsaUxBR0ZvUSxRQUNFLDZGQUdKdE4sVUFBVyxJQUlYdFMsVUFBVyxTQUNYK1EsTUFBTyw0QkFDUHVCLFVBQVcsSUFJWHRTLFVBQVcsU0FDWCtRLE1BQU8sK0JBQ1B1QixVQUFXLElBSVh0UyxVQUFXLFNBQ1grUSxNQUFPLDBCQUNQdUIsVUFBVyxJQUlYdFMsVUFBVyxTQUNYK1EsTUFBTyw0Q0FDUHVCLFVBQVcsSUFJWHRTLFVBQVcsU0FDWCtRLE1BQU8sbUNBQ1B1QixVQUFXLElBS1h2QixNQUFPLElBQ1BqVCxJQUFLLElBQ0x3VSxVQUFXLElBSVh0UyxVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGtCQUNoQm5LLFdBQ0dxQyxNQUFPLElBQUtqVCxJQUFLLE1BQ2pCaVQsTUFBTyxJQUFLalQsSUFBSyxjN0lrS3hCb2EsaUJBQWlCLFc4SWpPSixTQUFTeEwsR0FjeEIsSUFBSWdpQixFQUFXLDBCQUNYQyxFQUFrQiwwQkFLbEJDLEVBQWMsS0FBa0IsS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLElBQUssSUFBSyxLQUFNLEtBQU0sTUFBTyxNQWpCNUZqMUIsSUFBSSxTQUFTazFCLEdBQ1osT0FBT0EsRUFDSjkwQixNQUFNLElBQ05KLElBQUksU0FBU20xQixHQUNaLE1BQU8sS0FBT0EsSUFFZmoxQixLQUFLLE1BRVRBLEtBQUssS0FTZ0csV0FDcEdrMUIsRUFBcUIsT0FBU0gsRUFBYyxPQUU1Qy9OLEdBQ0ZyUixRQUNFLDhTQUlGK1AsU0FDRSwrRkFDRkssUUFDRSxjQUdBb1AsRUFBWSwySEFLWjFWLEdBQ0Z0WixVQUFXLFNBQ1hzUyxVQUFXLEVBQ1g1RCxXQUVJcUMsTUFBT2llLElBR1BqZSxNQUFPLFNBQVdpZSxFQUFZLFNBS2hDQyxHQUNGanZCLFVBQVcsV0FDWHNTLFVBQVcsRUFDWHZCLE1BQU82ZCxHQUVMTSxJQUVBbHZCLFVBQVcsYUFDWHNTLFVBQVcsRUFDWHZCLE1BQU8yZCxHQUVUTyxFQUNBM1YsR0FHRTZWLEdBQ0Z6aUIsRUFBS3FNLGtCQUNMa1csR0FFRWp2QixVQUFXLFNBQ1grUSxNQUFPLE1BQVE0ZCxFQUFpQnRhLGFBQWEsRUFDN0N2VyxJQUFLLElBQ0xvUixXQUVJbFAsVUFBVyxhQUNYK1EsTUFBTzRkLEVBQ1ByYyxVQUFXLE1BTWY4YyxJQUVBcHZCLFVBQVcsU0FDWCtRLE1BQU8sTUFBUTRkLEVBQWlCdGEsYUFBYSxFQUM3Q3ZXLElBQUssSUFDTHdVLFVBQVcsRUFDWHBELFdBRUlsUCxVQUFXLGFBQ1grUSxNQUFPNGQsRUFDUHJjLFVBQVcsTUF1QmYrYyxHQUNGcnZCLFVBQVcsV0FDWHNTLFVBQVcsRUFDWFAsU0FBVThPLEVBQ1ZuUyxXQUVJcUMsTUFBTyxxQkFBdUIyZCxFQUFXLFVBQ3pDNXdCLElBQUssU0FDTHVXLGFBQWEsRUFDYi9CLFVBQVcsRUFDWHBELFdBRUlsUCxVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBTzJkLElBR1AzZCxNQXJIQzJkLG9NQXdIRDNkLE1BQU8sZ0JBT2ZBLE1BQU8sOEJBQ1BqVCxJQUFLLFFBQ0x1VyxhQUFhLEVBQ2IvQixVQUFXLEVBQ1hwRCxXQUVJbFAsVUFBVyxTQUNYc1MsVUFBVyxFQUNYNUQsV0FwRFJxQyxNQUFPMmQsRUFDUDV3QixJQUFLLGNBQ0x3VSxVQUFXLEVBQ1hwRCxVQUNFK2YsR0FFRWp2QixVQUFXLFNBQ1grUSxNQUFPLElBQ1BqVCxJQUFLLFVBQ0x1VyxhQUFhLEVBQ2IvQixVQUFXLEVBQ1hwRCxTQUFVa2dCLFVBZ0RWcmUsTUFBTyxZQUFjMmQsRUFBVyxlQUl0Q1MsRUFBdUJ4dkIsS0FBSzB2QixHQUU1QixJQUFJQyxHQUNGdHZCLFVBQVcsY0FDWCtRLE1BQU80ZCxFQUFrQixNQUN6Qjd3QixJQUFLLE1BQ0xtVCxRQUFTLE1BQ1RjLFNBQVU4TyxFQUNWM1IsVUFDRXhDLEVBQUtxTSxrQkFDTGtXLEdBRUVqdkIsVUFBVyxTQUNYK1EsTUFBTyxNQUFRMmQsS0FLakJhLEdBQ0Z2dkIsVUFBVyxnQkFDWCtRLE1BQU8sTUFDUHNELGFBQWEsRUFDYnRDLFNBQVU4TyxFQUNWL2lCLElBQUssS0FDTHdVLFVBQVcsRUFDWHBELFVBQ0VvZ0IsRUFDQUwsR0FFRTNjLFVBQVcsRUFDWHRTLFVBQVcsY0FDWCtRLE1BQU80ZCxLQUtUYSxHQUNGeHZCLFVBQVcsZ0JBQ1grUixTQUFVOE8sRUFDVnhNLGFBQWEsRUFDYjNGLFdBRUlxQyxNQUFPLE9BQVM0ZCxFQUFrQixRQUFVRCxJQUc1QzNkLE1BQU8sT0FBUzRkLEVBQWtCLFdBQ2xDN3dCLElBQUssTUFDTHVXLGFBQWEsRUFDYm5GLFVBQ0VtZ0IsR0FFRXRlLE1BQU8sTUFDUGpULElBQUssTUFDTHFXLE1BQU0sSUFFUm5YLE9BQU9teUIsS0FHVHBlLE1BQU8sT0FBUzRkLEVBQWtCLFNBQ2xDN3dCLElBQUssTUFHVG9SLFNBQVVpZ0IsR0FLWixPQUZBQyxFQUFnQnp2QixLQUFLNnZCLElBR25CemlCLFNBQVUsTUFDVmdGLFNBQVU4TyxFQUNWNVAsUUFBUyxzQkFDVC9CLFVBQ0V4QyxFQUFLdU0sUUFBUSxPQUFRLFFBQVVoSSxRQUFTLG1CQUV0Q2pSLFVBQVcsWUFDWCtRLE1BQU8scUJBQ1BFLFFBQVMsTUFDVHFCLFVBQVcsR0FFYjVGLEVBQUtxTSxtQkFFSC9ZLFVBQVcsVUFDWCtRLE1BQU8sU0FDUHVCLFVBQVcsSUFHWHRTLFVBQVcsVUFDWCtRLE1BQU8sU0FDUGpULElBQUssU0FDTHdVLFVBQVksRUFDWnBELFNBQVVnZ0IsSUFHVmx2QixVQUFXLFVBQ1grUSxNQUFPLE1BQ1BqVCxJQUFLLE1BQ0x3VSxVQUFXLEVBQ1hwRCxTQUFVZ2dCLEdBRVpJLEdBRUV0dkIsVUFBVyxXQUNYK1EsTUFBT2dlLEVBQ1A5ZCxRQUFTLFVBQ1RxQixVQUFXLEdBRWJnSCxFQUNBNU0sRUFBS3lNLG9CQUNMb1csRUFDQUYsR0FFRXJ2QixVQUFXLGFBQ1grUSxNQUFPLGdCQUFrQjJkLEVBQVcsT0FBU0MsRUFBa0IsYUFDL0Q3d0IsSUFBSyxJQUNMdVcsYUFBYSxFQUNidEMsU0FBVThPLEVBQ1Z2TyxVQUFXLEVBQ1hwRCxXQUVJbFAsVUFBVyxTQUNYc1MsVUFBVyxFQUNYdkIsTUFBTzRkLElBR1A1ZCxNQUFPLElBQ1BqVCxJQUFLLElBQ0xxVyxNQUFNLElBRVJuWCxPQUFPbXlCLElBRVhLLFM5SXJFRnRYLGlCQUFpQixNK0lsT0osU0FBU3hMLEdBQ3hCLE9BQ0VxRixTQUNFLGtsQ0FjRmQsUUFBUyxLQUNUL0IsVUFDRXhDLEVBQUsyTSxrQkFDTDNNLEVBQUs2TSxjQUNMN00sRUFBS29NLGlCQUNMcE0sRUFBS3FNLHlCL0k2TVBiLGlCQUFpQixXZ0puT0osU0FBU3hMLEdBQ3hCLElBQUkraUIsRUFBYSx3QkFFYkMsR0FDRjF2QixVQUFXLFlBQ1grUSxNQUFPLGNBQWVqVCxJQUFLLE9BQVErVyxZQUFZLEVBQy9DOUYsUUFDRWpSLElBQUssSUFDTHdVLFVBQVcsRUFDWHBELFdBRUlsUCxVQUFXLFdBQ1grUSxNQUFPLGtCQUdQL1EsVUFBVyxVQUNYK1EsTUFBTyxtQkFNZixPQUNFaEUsU0FBVSxRQUFTLGFBQ25Cc0Msa0JBQWtCLEVBQ2xCMEMsU0FBVSxTQUNWN0MsV0FHSTZCLE1BQU8sVUFBWTBlLEVBQ25CM3hCLElBQUssSUFDTGlVLFNBQVUsUUFDVjdDLFVBQ0V3Z0IsRUFDQWhqQixFQUFLMk0scUJBTVB0SSxNQUFPLG9CQUFzQjBlLEVBQzdCM3hCLElBQUssSUFDTGlVLFNBQVUsK0RBQ1ZkLFFBQVMsS0FDVC9CLFVBQ0UsT0FDQXdnQixFQUNBaGpCLEVBQUsyTSxxQkFNUHRJLE1BQU8sSUFBTTBlLEVBQ2IzeEIsSUFBSyxJQUNMb1IsVUFDRXdnQixFQUNBaGpCLEVBQUsyTSxvQkFLVDNNLEVBQUsyTSx5QmhKc0tQbkIsaUJBQWlCLFdpSjlOckIsU0FBU3hMLEdBRVAsSUFBSWlqQixFQUFhLG1FQVFiMUcsRUFBVyxxQ0FhWGxILEdBQ0YvaEIsVUFBVyxXQUNYME8sV0FDR3FDLE1BQU8sdUJBQ1BBLE1BQU8sZ0JBSVJpUixHQUNGaGlCLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUNFeEMsRUFBS21NLGlCQUNMa0osR0FFRS9oQixVQUFXLFdBQ1grUSxNQUFPLE9BQVFqVCxJQUFLLEtBQ3BCb1IsVUFBV3hDLEVBQUttTSxxQkFLbEIrVyxHQUNGNXZCLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssS0FNbkIsT0FDRWlQLFNBQVUsV0FBWSxZQUN0QnNDLGtCQUFrQixFQUNsQjRDLFFBQVMsV0FDVEYsVUFDRTZOLFFBQVNxSixFQUNUelosUUFBU21nQixFQUFhLEtBQU9BLEVBQVc1MUIsTUFBTSxLQUFLRixLQUFLLE1BQVEsS0F0RDlDLG1LQXNEcUVFLE1BQU0sS0FBS0YsS0FBSyxPQUV6R3FWLFdBRUlSLFdBQ0lxQyxNQUFPLEtBQU1qVCxJQUFLLE1BQ2xCaVQsTUFBTyxPQUFRalQsSUFBSyxTQUNwQmlULE1BQU8sS0FBTWpULElBQUssTUFDbEJpVCxNQUFPLEtBQU1qVCxJQUFLLE1BQ2xCaVQsTUFBTyxnQkFBaUJqVCxJQUFLLE1BQzdCaVQsTUFBTyxPQUFRalQsSUFBSyxNQUNwQmlULE1BQU8sUUFBU2pULElBQUssVUFDckJpVCxNQUFPLE1BQU9qVCxJQUFLLE1BQ25CaVQsTUFBTyxVQUFXalQsSUFBSyxPQUN2QmlULE1BQU8sa0JBQW1CalQsSUFBSyxNQUVuQ21ULFFBQVMsS0FFWHZFLEVBQUt1TSxRQUFRLEtBQU0sS0FDbkIrSSxFQUNBNE4sRUFDQTdOLEdBRUVoUixNQUFPLCtCQUNQdUIsVUFBVyxFQUNYK0IsYUFBYSxFQUNibkYsV0FFSWxQLFVBQVcsWUFDWCtRLE1BQU8sVUFHUEEsTUFBTyxJQUNQakMsZ0JBQWlCLEVBQ2pCd0QsVUFBVyxFQUNYcEQsVUFDRThTLEVBQ0E0TixFQUNBN04sR0FFRS9oQixVQUFXLFVBQ1grUSxNQUFPLE9BQVNrWSxFQUFTbHZCLE1BQU0sS0FBS0YsS0FBSyxLQUFPLFNBbUJoRGtYLE1BQU8saUNBUWYvUSxVQUFXLFNBQ1grUSxNQUFPLG1CQUlQQSxNQUFPLE9BNUhTLHdGQTRIZ0JoWCxNQUFNLEtBQUtGLEtBQUssS0FBTyxlQUN2RHdhLGFBQWEsRUFDYm5GLFdBRUlsUCxVQUFXLGVBQ1grUSxNQUFPLFVBTVgvUSxVQUFXLFdBQ1gwTyxXQUNHcUMsTUFBTyxvQkFySUYsbzdCQXFJZ0NoWCxNQUFNLEtBQUtGLEtBQUssS0FBTyxXQUFXeVksVUFBVyxLQUNsRnZCLE1BQU8saUJqSjZFZG1ILGlCQUFpQixNa0pyT0osU0FBU3hMLEdBQ3hCLE9BQ0VxRixVQUNFdkMsUUFDRSwyRkFDRitQLFNBQ0UsMmlCQVFKdE8sUUFBUyxLQUNUL0IsVUFDRXhDLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTDFNLEVBQUtxTSxrQkFDTHJNLEVBQUtvTSxpQkFDTHBNLEVBQUs2TSxlQUVIdlosVUFBVyxPQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxNQUdqQmtDLFVBQVcsUUFDWDhRLGNBQWUsMkNBQTRDaFQsSUFBSyxRQUdoRWdULGNBQWUsZ0NBQWlDaFQsSUFBSyxjbEp3TXpEb2EsaUJBQ0YsZ0JtSnZPZSxTQUFTeEwsR0FDeEIsT0FDRXFGLFVBQ0d2QyxRQUFTLHkvRkFtQ1QrUCxTQUFVLG9jQU1iclEsVUFDRXhDLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTDFNLEVBQUtvTSxpQkFDTHBNLEVBQUtxTSxrQkFDTHJNLEVBQUs2TSxlQUVIdlosVUFBVyxVQUNYME8sV0FDR3FDLE1BQU8sdUJBQXdCdUIsVUFBVyxJQUMxQ3ZCLE1BQU8sNkJuSm9MZG1ILGlCQUFpQixPb0oxT0osU0FBU3hMLEdBQ3hCLElBQUltakIsRUFBYSx3Q0FNYkMsRUFFRix1cEJBa0JGLE9BQ0UvaUIsU0FBVSxNQUNWZ0YsVUFDRXZDLFFBM0JGLDJSQTZCRW9RLFFBQ0UsOEJBQ0ZMLFNBQ0V1USxHQUVKN2QsUUFBU3ZGLEVBQUs2TCxTQUFXLEtBQ3pCdEgsUUFBUyxLQUNUL0IsVUFDRXhDLEVBQUt5TSxvQkFDTHpNLEVBQUt1TSxRQUFRLE9BQVEsUUFBUy9KLFVBQVcsVUFDekN4QyxFQUFLb0IsUUFBUXBCLEVBQUtxTSxtQkFBb0JoSSxNQUFPLE1BQU9FLFFBQVMsUUFFM0RqUixVQUFXLFNBQ1gwTyxXQUNLcUMsTUFBTywyQkFDUEEsTUFBTyxzQ0FJWi9RLFVBQVcsU0FDWCtRLE1BQU8sNEJBR1AvUSxVQUFXLFNBQ1gwTyxXQUNJcUMsTUFBTyxnQkFBa0I4ZSxJQUN6QjllLE1BQU8saUJBQW1COGUsSUFDMUI5ZSxNQUFPLHVCQUF5QjhlLElBQ2hDOWUsTUFBTyxrREFDQThlLElBR1h2ZCxVQUFXLElBR1h0UyxVQUFXLFdBQ1g4USxjQUFlLEtBQU1oVCxJQUFLLFVBQVcrVyxZQUFZLEVBQ2pEM0YsVUFBV3hDLEVBQUtrTix5QkFHaEI1WixVQUFXLE9BQ1grUSxNQUFPLFdBQVlqVCxJQUFLLE1BQ3hCb1IsV0FFSWxQLFVBQVcsY0FDWCtRLE1BQU8sSUFBS2pULElBQUssUUFLckJrQyxVQUFXLFFBQ1g4USxjQUFlLE9BQVFoVCxJQUFLLElBQzVCb1IsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS2tOLHVCQUF3QmxGLFlBQVksS0FFeER6RCxRQUFTLFFBR1RqUixVQUFXLFFBQ1g4USxjQUFlLDBCQUEyQmhULElBQUssSUFDL0NvUixVQUNFeEMsRUFBS29CLFFBQVFwQixFQUFLa04sdUJBQXdCbEYsWUFBWSxLQUV4RHpELFFBQVMsYUFHVEYsTUFBT3JFLEVBQUs2TCxTQUFXLEtBQ3ZCeEcsVUFBV3dOLFNBQVV1USxLQUdyQi9lLE1BQU8sYXBKcUlYbUgsaUJBQWlCLE1xSjNPSixTQUFTeEwsR0F5RXRCLE9BQ0lLLFNBQVUsTUFBTyxPQUNqQnNDLGtCQUFrQixFQUNsQjBDLFVBQ0k2TixRQUNJLGtHQUVKK0IsS0E3RVcseXJCQWdGZnpTLFdBR1FsUCxVQUFXLFVBQ1grUSxNQUFPLDRDQUlQL1EsVUFBVyxXQUNYK1EsTUFBTyxrQ0FJUC9RLFVBQVcsV0FDWCtRLE1BQU8seUJBQ1BqVCxJQUFLLGNBR0xrQyxVQUFXLFdBQ1grUSxNQUFPLGlaQUlQL1EsVUFBVyxPQUNYK1EsTUFBTyw0QkFHUC9RLFVBQVcsT0FDWCtRLE1BQU8sMDJEQUdQL1EsVUFBVyxTQUNYME8sVUFDSWhDLEVBQUtvTSxpQkFDTHBNLEVBQUtxTSxvQkFHYnJNLEVBQUt1TSxRQUFRLE1BQU8sS0FDcEJ2TSxFQUFLME0sNEJySm1IYmxCLGlCQUFpQixRc0o1T0osU0FBU3hMLEdBRXhCLElBR0lvVSxHQUNGOWdCLFVBQVcsUUFDWDBPLFdBQ0dxQyxNQUFPLHFCQUNQQSxNQUFPLE9BQVFqVCxJQUFLLE9BSXJCNGlCLEdBQ0YxZ0IsVUFBVyxTQUNYME8sV0FFSXFDLE1BQU8sSUFBS2pULElBQUssSUFDakJtVCxRQUFTLE1BQ1QvQixVQUFXeEMsRUFBS21NLG9CQUdoQjlILE1BQU8sTUFBT2pULElBQUssTUFDbkJ3VSxVQUFXLEtBR1h2QixNQUFPLFVBQVdqVCxJQUFLLElBQ3ZCbVQsUUFBUyxNQUNUL0IsVUFBV3hDLEVBQUttTSxpQkFBa0JpSSxLQUdsQzlnQixVQUFXLFNBQ1grUSxNQUFPLFlBQWFqVCxJQUFLLE1BQ3pCb1IsVUFBVzRSLEdBQ1h4TyxVQUFXLE1BV2J5ZCxHQUNGL3ZCLFVBQVcsT0FDWCtRLE1BQU8sd0JBQ1B1QixVQUFXLEdBR1R5USxHQUNGL2lCLFVBQVcsUUFDWCtRLE1BQU8saUZBQ1B1QixVQUFXLEdBR1R5UyxHQUNGL2tCLFVBQVcsUUFDWDhRLGNBQWUsMEJBQ2ZoVCxJQUFLLGFBQ0wrVyxZQUFZLEVBQ1ozRixXQUVJNEIsY0FBZSxlQUNmd0IsVUFBVyxLQUdYdkIsTUFBTyxLQUNQalQsSUFBSyxLQUNMc1csY0FBYyxFQUNkUyxZQUFZLEVBQ1p2QyxVQUFXLEVBQ1hwRCxVQUFXNmdCLEtBR1gvdkIsVUFBVyxTQUNYK1EsTUFBTyxLQUNQalQsSUFBSyxLQUNMc1csY0FBYyxFQUNkUyxZQUFZLEVBQ1p2QyxVQUFXLEVBQ1hwRCxVQUFXNmdCLElBRWJoTixJQUlBNkQsR0FDRjVtQixVQUFXLFdBQ1g4USxjQUFlLE1BQ2ZoVCxJQUFLLGNBQ0wrVyxZQUFZLEVBQ1ozRixVQUFXNlQsSUFHYixPQUNFaFIsVUFDRTZOLFFBQVMsa0JBQ1RwUSxRQUFTLHlQQUVYTixVQUNFeEMsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMc0gsR0EvREYxZ0IsVUFBVyxTQUNYK1EsTUFBTyx1QkFnRUxnZixFQUNBbkosRUFDQTdCLEVBQ0FyWSxFQUFLNk0sZUEzR1V2WixVQUFXLE9BQVErUSxNQUFPLHFCdEoyTzNDbUgsaUJBQWlCLFN1SjdPSixTQUFTeEwsR0FDeEIsSUFBSXNqQixFQUFrQix3Q0E4Q2xCOVEsR0FDRmxmLFVBQVcsVUFDWCtRLE1BQU8sZUFBaUJpZixFQUFrQixZQUd4Q3hQLEdBQ0Z4Z0IsVUFBVyxTQUNYME8sV0FDSXFDLE1BckR3Qiw0QkFxRFF1QixVQUFXLElBQzNDdkIsTUFyRHlCa2YsNERBcURRM2QsVUFBVyxJQUM1Q3ZCLE1BQU8sdUJBQ1BBLE1BQU8sdUJBQ1BBLE1BQU8sOEJBSVQyUCxFQUFTaFUsRUFBS3FNLGtCQVFkbUosR0FDRnhWLEVBQUt1TSxRQUNILElBQ0EsS0FFRTNHLFVBQVcsSUFHZjVGLEVBQUt1TSxRQUFRLE9BQVEsU0FHbkJ1UyxHQUNGemEsTUFBT2lmLEVBQ1AxZCxVQUFXLEdBR1Q0ZCxHQUNGbHdCLFVBQVcsU0FDWCtRLE1BQU8sSUFBT2lmLEdBR1psTixHQUNGaFUsZ0JBQWdCLEVBQ2hCd0QsVUFBVyxHQUdUNmQsR0FDRnpoQixXQUNJcUMsTUFBTyxNQUNQQSxNQUFPLE1BRVg3QixXQUVJNkIsTUFBTyxNQUFPalQsSUFBSyxNQUNuQm9SLFVBQVcsT0FBUWdRLEVBQVN3QixFQUFRRixFQUFRZ0wsRUFBTzBFLE1BS3JEbk4sR0FDRi9pQixVQUFXLE9BQ1grUSxNQUFPaWYsRUFDUC9kLFFBQVMrZCxFQUNUamUsVUE3R0FpUixlQUNFLHFvRUEwSEFILEdBQ0ZuVSxXQUNJcUMsTUFBTyxNQUFPalQsSUFBSyxRQUNuQmlULE1BQU8sTUFBT2pULElBQUssUUFFdkJvUixXQWZBNkIsTUFBTyxTQUFVakMsZ0JBQWdCLEVBQU11RixhQUFhLEVBQ3BEbkYsVUFDRTZULEdBRUVoUyxNQUFPLEtBQU1qVCxJQUFLLEtBQU00VyxZQUFZLEVBQ3BDeEYsVUFBV3NjLE1BVUl6SSxFQUFNRCxJQUszQixPQUZBQSxFQUFLNVQsVUFBWWdRLEVBQVNzQixFQUFRRSxFQUFROEssRUFBTzBFLEVBQWNDLEVBQWF0TixHQUFNN2xCLE9BQU9rbEIsSUFHdkZqUixRQUFTLEtBQ1QvQixXQWxHQWxQLFVBQVcsT0FDWCtRLE1BQU8sTUFDUGpULElBQUssS0FnR2UwaUIsRUFBUUUsRUFBUXdQLEVBQWNDLEVBQWF0TixHQUFNN2xCLE9BQU9rbEIsU3ZKa0c1RWhLLGlCQUFpQixTd0o5T0osU0FBU3hMLEdBRXhCLElBQUkwakIsR0FDRjFqQixFQUFLNk0sZUFFSHZaLFVBQVcsU0FDWCtRLE1BQU8sT0FBU2pULElBQUssT0FDckJvUixVQUFXeEMsRUFBS21NLGtCQUFtQjlILE1BQU8sU0FJOUMsT0FDRWhFLFNBQVUsT0FDVmtGLFFBQVMsUUFDVEYsVUFDRXZDLFFBQVMsd0lBRVRvUSxRQUNFLDZDQUNGTCxTQUNDLDRiQU9IdE8sUUFBUyx1QkFDVC9CLFdBRUlsUCxVQUFXLFdBQ1g4USxjQUFlLFdBQVloVCxJQUFLLElBQ2hDb1IsVUFDRXhDLEVBQUtrTix1QkFFSDVaLFVBQVcsU0FDWCtRLE1BQU8sTUFBT2pULElBQUssVUFLdkJpVCxNQUFPLDRDQUFnRGpULElBQUssR0FDNUR3VSxVQUFXLElBR1h2QixNQUFPLE1BQU9qVCxJQUFLLGVBQ25Cd1UsVUFBVyxFQUNYcEQsU0FBVWtoQixHQUVaMWpCLEVBQUt1TSxRQUFRLEtBQU0sTUFDbkJqYyxPQUFPb3pCLFN4SjZMVGxZLGlCQUFpQixPeUovT0osU0FBU3hMLEdBQ3hCLElBQ0lvVixHQUNGOWhCLFVBQVcsV0FDWCtRLE1BQU8sbUNBRUxzZixHQUNGcndCLFVBQVcsU0FBVStRLE1BQU8saUJBV3hCckUsRUFBSytNLGdCQUNML00sRUFBS3FNLGtCQUNMck0sRUFBS29NLGlCQUNMcE0sRUFBSzBNLHFCQU9YLE9BQ0UvSixrQkFBa0IsRUFDbEI0QixRQUFTLFNBQ1QvQixVQUNFeEMsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHNCQUVIcFosVUFBVyxjQUFlK1EsTUFBTyxvQkFDakN1QixVQUFXLElBR1h0UyxVQUFXLGlCQUFrQitRLE1BQU8sb0JBQ3BDdUIsVUFBVyxJQUdYdFMsVUFBVyxnQkFBaUIrUSxNQUFPLE1BQU9qVCxJQUFLLE1BQy9DbVQsUUFBUyxNQUdUalIsVUFBVyxlQUNYK1EsTUFBTyxpa0JBQ1B1QixVQUFXLElBR1h2QixNQUFPLHdXQUdQQSxNQUFPLDZGQUVUK1EsR0FFRTloQixVQUFXLFlBQ1grUSxNQUFPLHN1RkFDUEUsUUFBUyxXQUdURixNQUFPLCtvQ0FHUEEsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFVBQ0U0UyxFQUNBdU8sRUFDQTNqQixFQUFLK00sZ0JBQ0wvTSxFQUFLcU0sa0JBQ0xyTSxFQUFLb00sa0JBRUg5WSxVQUFXLE9BQVErUSxNQUFPLGlCQUs5QkEsTUFBTyxJQUFLalQsSUFBSyxPQUNqQmlVLFNBQVUsK0dBQ1Y3QyxVQUNFNFMsRUFDQXBWLEVBQUtxTSxrQkFDTHJNLEVBQUtvTSxpQkFDTHVYLEVBQ0EzakIsRUFBSytNLGlCQUVIMUksTUFBTyxxQkFDUHVCLFVBQVcsWXpKc0puQjRGLGlCQUFpQixRMEpoUEosU0FBU3hMLEdBQ3hCLE9BQ0VLLFNBQVUsV0FDVm1DLFdBRUlsUCxVQUFXLE9BQ1grUSxNQUFPLHNDQUNQaEMsUUFDRWpSLElBQUssSUFBS3VWLFlBQWEsZ0IxSnlPN0I2RSxpQkFBaUIsUTJKalBKLFNBQVN4TCxHQUN4QixJQUFJNGpCLEdBQXdCLE1BQU8sTUFBTyxNQUFPLE9BQVEsT0FBUSxRQUFTLE1BQU8sU0FBVSxRQUFTLE9BQVEsS0FBTSxNQUFPLE9BQVEsT0FBUSxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sS0FBTSxNQUFPLFNBQVUsTUFBTyxNQUFPLE9BQVEsTUFBTyxRQUFTLE9BQVEsT0FHalAsT0FDRXZqQixTQUFVLFNBQ1ZtQyxXQUVJbFAsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQndVLFVBQVcsR0FFYjVGLEVBQUt1TSxRQUNILElBQ0EsS0FFRTNHLFVBQVcsS0FJYnRTLFVBQVcsVUFDWDBPLFdBQ0dxQyxNQUFPLDhCQUNQQSxNQUFPLG9CQUFxQnVCLFVBQVcsSUFDdkN2QixNQUFPLG9CQUFxQnVCLFVBQVcsSUFDdkN2QixNQUFPLFFBdEJNLFlBQWEsY0FBZSxXQUFZLFFBQVMsWUFBYSxTQUFVLFVBQVcsWUFBYSxTQUFVLFNBQVUsVUFzQmxHbFgsS0FBSyxLQUFPLFFBSTlDbUcsVUFBVyxXQUNYME8sV0FFSXFDLE1BQU8sT0FBT3VmLEVBQXFCejJCLEtBQUssS0FBSyxTQUc3Q2tYLE1BQU8sT0FBT3VmLEVBQXFCejJCLEtBQUssS0FBSyw2QkFDN0N5WSxVQUFXLEtBR1h2QixNQUFPLFFBckNZLE9BQVEsT0FBUSxRQUFTLFFBQVMsVUFBVyxPQUFRLFNBQVUsVUFBVyxVQUFXLE9BQVEsV0FBWSxTQUFVLE9BQVEsVUFBVyxTQUFVLE9BQVEsVUFxQ3ZJbFgsS0FBSyxLQUFLLDZCQUM5Q3lZLFVBQVcsT0FLZnRTLFVBQVcsUUFDWCtRLE1BQU8sY0FDUHVCLFVBQVcsSUFHWHZCLE1BQU8scUIzSmdNWG1ILGlCQUNGLFk0Sm5QZSxTQUFTeEwsR0FDeEIsSUFDSTZqQixHQUNGdndCLFVBQVcsU0FDWCtRLE1BQU8sV0FFTHlSLEdBQ0Z4aUIsVUFBVyxTQUNYK1EsTUFBTyxJQUFNckUsRUFBSzhMLHFCQUVwQixPQUNFekwsU0FBVSxNQUNWZ0YsU0FBVSx3Q0FDVjdDLFVBQ0V4QyxFQUFLdU0sUUFBUSxJQUFLLEtBQ2xCdk0sRUFBS29NLGtCQUVIOVksVUFBVyxPQUNYK1EsTUFBTyx3QkFDUHVCLFVBQVcsSUFHWHZCLE1BQU95ZixzQkFDUGxlLFVBQVcsR0FFYjVGLEVBQUs2TSxjQUNMaUosRUFDQStOLEdBS0V4ZixNQUFPLDREQUNQc0QsYUFBYSxFQUFNdlcsSUFBSyxLQUN4Qm1ULFFBQVMsS0FDVC9CLFdBQVk2QixNQUFPLG1DQUduQkEsTUFBTyxTQUFValQsSUFBSyxNQUN0Qm9SLFVBQ0V4QyxFQUFLb00saUJBQ0x5WCxFQUNBN2pCLEVBQUs2TSxjQUNMaUosVzVKMk1OdEssaUJBQWlCLE02SnRQSixTQUFTeEwsR0FDeEIsT0FDRUssU0FBVSxNQUNWZ0YsVUFDRXZDLFFBRUUsaVBBSUYrUCxTQUVFLHVGQUNGSyxRQUNFLCtDQUVKM08sUUFBUyxVQUNUZ0IsUUFBUyxlQUNUL0MsV0FFSWxQLFVBQVcsVUFDWCtRLE1BQU8sbUJBQ1B1QixVQUFXLEdBRWI1RixFQUFLdU0sUUFDSCxTQUNBLFVBRUUvSixVQUFXLFdBSWJsUCxVQUFXLFNBQ1grUSxNQUFPLDJCQUlQL1EsVUFBVyxPQUNYK1EsTUFBTyxrQkFHUC9RLFVBQVcsT0FDWCtRLE1BQU8sa0JBQ1B1QixVQUFXLElBR1h2QixNQUFPLHNCQUVUckUsRUFBS29CLFFBQVFwQixFQUFLb00sa0JBQW1COVksVUFBVyxTQUFVc1MsVUFBVyxJQUNyRTVGLEVBQUtvQixRQUFRcEIsRUFBS3FNLG1CQUFvQjlILFFBQVMsUUFFN0NqUixVQUFXLFNBQ1grUSxNQUNFLDJIQUlGdUIsVUFBVyxJQUdYdkIsTUFBTyxnQjdKMkxYbUgsaUJBQWlCLE04SnZQSixTQUFTeEwsR0FFeEIsSUFjSTBTLEdBQ0ZwZixVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBTyxJQUNQalQsSUFBSyxJQUNMb1IsV0FBWTZCLE1BQU8sS0FBTXVCLFVBQVcsTUFHcEN2QixNQUFPLElBQ1BqVCxJQUFLLElBQ0xvUixXQUFZNkIsTUFBTyxLQUFRdUIsVUFBVyxPQU94QzRPLEdBQ0ZsaEIsVUFBVyxPQUNYK1EsTUFBTyxlQUFnQmpULElBQUssSUFDNUJpVSxVQUNFOE4sZUFDRSxnREFFSjNRLFdBRUk2QixNQUFPLE9BQVF1QixVQUFXLEdBRTVCNUYsRUFBS29CLFFBQVFzUixHQUFVcGYsVUFBVyxpQkFFaENBLFVBQVcsY0FDWCtRLE1BQU8sWUFBYWpULElBQUssSUFDekJtVCxRQUFTLE9BRVh2RSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0sdUJBSVQsT0FDRXJNLFNBQVUsT0FDVnNDLGtCQUFrQixFQUNsQjBDLFVBQ0V2QyxRQUNFLHFIQUVGK1AsU0FDRSw0MThCQXlWRkssUUFDRSw4T0FJSjFRLFVBQ0V4QyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLNE0sYUE5WlB0WixVQUFXLFdBQ1grUSxNQUFPLHFCQU1QL1EsVUFBVyxRQUNYK1EsTUFBTyxnQ0F5WkxxTyxFQUNBOEIsR0FFRmpRLFFBQVMsZTlKL0tUaUgsaUJBQWlCLE0rSnhQSixTQUFTeEwsR0FDeEIsSUFBSTRnQixFQUFlNWdCLEVBQUt1TSxRQUFRLEtBQU0sS0FDdEMsT0FDRTVKLGtCQUFrQixFQUNsQjRCLFFBQVMsVUFDVC9CLFdBRUk0QixjQUNFLGdZQUtGaFQsSUFBSyxJQUFLZ1IsZ0JBQWdCLEVBQzFCbUQsUUFBUyxVQUNURixVQUNFdkMsUUFDRSx1eVZBOEdGb1EsUUFDRSwwQkFDRkwsU0FDRSwwTkFHSnJRLFdBRUlsUCxVQUFXLFNBQ1grUSxNQUFPLElBQU1qVCxJQUFLLElBQ2xCb1IsVUFBV3hDLEVBQUttTSxrQkFBbUI5SCxNQUFPLFNBRzFDL1EsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFVBQVd4QyxFQUFLbU0sa0JBQW1COUgsTUFBTyxTQUcxQy9RLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJvUixVQUFXeEMsRUFBS21NLG1CQUVsQm5NLEVBQUs2TSxjQUNMN00sRUFBSzBNLHFCQUNMa1UsRUFDQTVnQixFQUFLMk0sb0JBR1QzTSxFQUFLME0scUJBQ0xrVSxFQUNBNWdCLEVBQUsyTSx5Qi9KNEZQbkIsaUJBQWlCLE9nS3pQSixTQUFTeEwsR0FDeEIsT0FDRXdDLFVBQ0V4QyxFQUFLMk0sa0JBQ0wzTSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0sc0JBRUhySSxNQUFPckUsRUFBSzhMLG9CQUNadkcsUUFBU3ZGLEVBQUs4TCxvQkFDZHpHLFVBRUVsUyxLQUNFLHlDQUlGZ29CLE9BQ0Usc21CQVlGNEksZUFDRSxpSkFJRjNyQixNQUNFLG1FQUVGOGEsUUFDRSxjQUVKdE4sVUFBVyxJQUtYdFMsVUFBVyxTQUNYK1EsTUFBTyw0QkFDUHVCLFVBQVcsSUFJWHRTLFVBQVcsU0FDWCtRLE1BQU8sNEJBQ1B1QixVQUFXLElBSVh0UyxVQUFXLFNBQ1grUSxNQUFPLCtCQUNQdUIsVUFBVyxJQUlYdFMsVUFBVyxTQUNYK1EsTUFBTywwQkFDUHVCLFVBQVcsSUFJWHRTLFVBQVcsU0FDWCtRLE1BQU8sNENBQ1B1QixVQUFXLElBSVh0UyxVQUFXLFNBQ1grUSxNQUFPLG1DQUNQdUIsVUFBVyxVaEs2S2Y0RixpQkFBaUIsUWlLdFByQixTQUFTeEwsR0FDUCxPQUNFSyxTQUFVLEtBQU0sT0FDaEJzQyxrQkFBa0IsRUFDbEIwQyxTQUFVLDQvY0FDTjdDLFdBRUFsUCxVQUFXLFNBQ1grUSxNQUFPLG9CQUdQL1EsVUFBVyxXQUNYK1EsTUFBTywwQkFHUC9RLFVBQVcsU0FDWDBPLFdBQ0dxQyxNQUFPLG1CQUNQQSxNQUFPLGtCQUtWL1EsVUFBVyxXQUNYME8sV0FFSXFDLE1BQU8scTVDQUtickUsRUFBS3VNLFFBQVEsaUJBQWlCLEdBQzlCdk0sRUFBS3lNLG9CQUNMek0sRUFBSzBNLDRCaktzTlBsQixpQkFBaUIsU2tLM1BKLFNBQVN4TCxHQWdCeEIsT0FDRUssU0FBVSxNQUFPLE9BQVEsT0FDekJzQyxrQkFBa0IsRUFDbEI0QyxRQWxCb0Isb0JBbUJwQkYsVUFqQkF2QyxRQUFTLHNCQWtCVE4sV0FmQWxQLFVBQVcsT0FDWCtRLE1BQU8sZ0JBQ1B1QixVQUFXLEtBR1h0UyxVQUFXLE9BQ1grUSxNQUFPLG9CQUNQdUIsVUFBVyxJQVdUNUYsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMMU0sRUFBS3VNLFFBQVEsV0FBWSxRQUN6QnZNLEVBQUs2TSxjQUNMN00sRUFBS29CLFFBQVFwQixFQUFLb00sa0JBQW1CN0gsUUFBUyxPQUM5Q3ZFLEVBQUtvQixRQUFRcEIsRUFBS3FNLG1CQUFvQjlILFFBQVMsUUFFN0NqUixVQUFXLFNBQ1grUSxNQUFPLElBQUtqVCxJQUFLLE1BR2pCa0MsVUFBVyxTQUNYME8sV0FFSXFDLE1BQU8sSUFBS2pULElBQUssT0FDakJtVCxRQUFTLGdCbEtxTmpCaUgsaUJBQWlCLFNtSzVQSixTQUFTeEwsR0FFeEIsSUFBSW9WLEdBQ0Y5aEIsVUFBVyxXQUNYK1EsTUFBTyxNQUFRckUsRUFBSzZMLFVBR2xCbVksR0FDRjF3QixVQUFXLFNBQ1grUSxNQUFPLG9DQTBVVCxPQUNFaEUsU0FBVSxRQUNWc0Msa0JBQWtCLEVBQ2xCMEMsU0FBVSxpQkFDVmQsUUFBUyxLQWpCVCxNQUNBLGlCQUNBLGNBQ0EsY0FDQSxjQUNBLElBQ0EsT0FDQSxTQUNBLFNBQ0EsTUFDQSxLQU91QnBYLEtBQUssS0FBTyxJQUNuQ3FWLFVBR0V4QyxFQUFLcU0sa0JBQ0xyTSxFQUFLb00saUJBR0xwTSxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBR0xzWCxHQUlFM2YsTUFBTyxrREFDUC9RLFVBQVcsbUJBS1grUSxNQUFPLGtEQUNQL1EsVUFBVyxnQkFLWCtRLE1BQU8sUUF4VVgsSUFDQSxPQUNBLFVBQ0EsVUFDQSxRQUNBLFFBQ0EsSUFDQSxhQUNBLE9BQ0EsU0FDQSxTQUNBLFVBQ0EsT0FDQSxPQUNBLEtBQ0EsTUFDQSxVQUNBLE1BQ0EsTUFDQSxLQUNBLEtBQ0EsS0FDQSxXQUNBLGFBQ0EsU0FDQSxTQUNBLE9BQ0EsS0FDQSxLQUNBLEtBQ0EsS0FDQSxLQUNBLEtBQ0EsU0FDQSxTQUNBLE9BQ0EsSUFDQSxTQUNBLE1BQ0EsUUFDQSxNQUNBLE1BQ0EsUUFDQSxTQUNBLEtBQ0EsT0FDQSxPQUNBLE1BQ0EsU0FDQSxLQUNBLElBQ0EsSUFDQSxRQUNBLE9BQ0EsVUFDQSxPQUNBLFNBQ0EsVUFDQSxNQUNBLFFBQ0EsUUFDQSxLQUNBLFdBQ0EsUUFDQSxLQUNBLFFBQ0EsT0FDQSxLQUNBLEtBQ0EsTUFDQSxTQWtReUJsWCxLQUFLLEtBQU8sMEJBQ2pDbUcsVUFBVyxpQkFLWCtRLE1BQU8sYUE1VlgsUUFDQSxTQUNBLGVBQ0EsYUFDQSxTQUNBLGNBQ0EsUUFDQSxRQUNBLE9BQ0EsT0FDQSxXQWtWMENsWCxLQUFLLEtBQU8sNEJBS2xEa1gsTUFBTyxNQWpYWCxVQUNBLE1BQ0EsUUFDQSxTQUNBLFlBQ0EsTUFDQSxTQUNBLFVBQ0EsUUFDQSxRQUNBLE9BQ0EsT0FDQSxTQXFXK0JsWCxLQUFLLEtBQU8sUUFJekNpb0IsRUFHQXBWLEVBQUsrTSxnQkFHTC9NLEVBQUs0TSxhQUtIdFosVUFBVyxXQUNYK1EsTUFBTyxrQ0FDUEUsUUFBUyxRQUNUb0QsYUFBYSxFQUNibkYsV0FDR2xQLFVBQVcsUUFBUytRLE1BQU8sOEJBRTFCL1EsVUFBVyxTQUNYK1EsTUFBTyxLQUNQalQsSUFBSyxLQUNMb1IsVUFDRXdoQixFQUNBNU8sRUFDQXBWLEVBQUtvTSxpQkFDTHBNLEVBQUsrTSxnQkFDTC9NLEVBQUs0TSxZQUNMNU0sRUFBS3FNLHVCQVVYL1ksVUFBVyxZQUNYK1EsTUFBTyxRQWpUWCxnQkFDQSxjQUNBLGFBQ0EsWUFDQSxrQkFDQSxzQkFDQSxxQkFDQSxzQkFDQSw0QkFDQSxpQkFDQSx1QkFDQSw0QkFDQSxPQUNBLHNCQUNBLGFBQ0Esd0JBQ0Esa0JBQ0EsbUJBQ0EsbUJBQ0Esb0JBQ0Esc0JBQ0Esb0JBQ0Esa0JBQ0EsU0FDQSxnQkFDQSxzQkFDQSw0QkFDQSw2QkFDQSxzQkFDQSxzQkFDQSxrQkFDQSxlQUNBLGVBQ0Esc0JBQ0Esc0JBQ0EscUJBQ0Esc0JBQ0EscUJBQ0EsY0FDQSxvQkFDQSxvQkFDQSxvQkFDQSxnQkFDQSxlQUNBLHFCQUNBLHFCQUNBLHFCQUNBLGlCQUNBLGVBQ0EsYUFDQSxtQkFDQSx5QkFDQSwwQkFDQSxtQkFDQSxtQkFDQSxlQUNBLFNBQ0EsdUJBQ0EsYUFDQSxhQUNBLGNBQ0EsZUFDQSxlQUNBLGVBQ0EsUUFDQSxPQUNBLFlBQ0EsUUFDQSxlQUNBLGNBQ0EsYUFDQSxjQUNBLG9CQUNBLG9CQUNBLG9CQUNBLGNBQ0EsZUFDQSxVQUNBLFVBQ0Esb0JBQ0EsZ0JBQ0EsU0FDQSxZQUNBLFVBQ0EsY0FDQSxTQUNBLE9BQ0EsYUFDQSxpQkFDQSxZQUNBLFlBQ0EsY0FDQSxZQUNBLFFBQ0EsT0FDQSxjQUNBLHdCQUNBLGVBQ0EseUJBQ0EsWUFDQSxtQkFDQSxlQUNBLGFBQ0EsZUFDQSx5QkFDQSxjQUNBLFNBQ0EsVUFDQSxPQUNBLG9CQUNBLGtCQUNBLG1CQUNBLFdBQ0EsVUFDQSxVQUNBLGtCQUNBLE9BQ0EsaUJBQ0EsY0FDQSxhQUNBLG1CQUNBLHNCQUNBLGtCQUNBLFNBQ0EsZ0JBQ0EsY0FDQSxlQUNBLGFBQ0EsUUFDQSxPQUNBLGFBQ0EsWUFDQSxhQUNBLFlBQ0EsV0FDQSxZQUNBLFdBQ0EsWUFDQSxTQUNBLE9BQ0EsU0FDQSxhQUNBLGtCQUNBLFVBQ0EsUUFDQSxVQUNBLFVBQ0EsZ0JBQ0EsaUJBQ0EsZ0JBQ0EsZ0JBQ0EsV0FDQSxnQkFDQSxhQUNBLGFBQ0EsVUFDQSxpQkFDQSxlQUNBLGdCQUNBLGNBQ0EsbUJBQ0Esb0JBQ0Esb0JBQ0EsY0FDQSxxQkFDQSxpQkFDQSxXQUNBLFNBQ0EsU0FDQSxRQUNBLFdBQ0EsZUFDQSxhQUNBLGtCQUNBLGtCQUNBLHdCQUNBLHVCQUNBLHdCQUNBLGNBQ0EsZ0JBQ0EsaUJBQ0EsY0FDQSxpQkFDQSwwQkFDQSxNQUNBLFlBQ0EsbUJBQ0Esa0JBQ0EsYUFDQSxtQkFDQSxzQkFDQSxzQkFDQSw2QkFDQSxlQUNBLGlCQUNBLGFBQ0EsY0FDQSxTQUNBLFFBQ0EsYUFDQSxlQUNBLFlBQ0EsV0F1RytCeFUsVUFBVTFDLEtBQUssS0FBTyxPQUNqRGtWLFFBRUVqUixJQUFLLE1BQ0xvUixVQUNFd2hCLEVBQ0E1TyxFQUNBcFYsRUFBS29NLGlCQUNMcE0sRUFBS3FNLGtCQUNMck0sRUFBSytNLGdCQUNML00sRUFBSzRNLFlBQ0w1TSxFQUFLME0sc0JBRVBuSSxRQUFTLEtBQ1RxQixVQUFXLFduS3pMakI0RixpQkFBaUIsVW9LN1BKLFNBQVN4TCxHQXVCeEIsT0FDRTJDLGtCQUFrQixFQUNsQkgsV0F2QkFsUCxVQUFXLFNBQ1grUSxNQUFPLG9CQUFxQmpULElBQUssVUFHakNrQyxVQUFXLFNBQ1grUSxNQUFPLHlEQUdQL1EsVUFBVyxTQUNYK1EsTUFBTyxnQkFHUC9RLFVBQVcsVUFDWHNTLFVBQVcsR0FDWDVELFdBQ0lxQyxNQUFPLHlGQUNQQSxNQUFPLG9DQUNQQSxNQUFPLFdBQ1BBLE1BQU8sbUJwSzBPWG1ILGlCQUFpQixRcUs5UEosU0FBU3hMLEdBQ3hCLElBQUlpa0IsR0FDQW5oQixRQUFTLGd2QkFVVG9RLFFBQVMsaUJBQ1RMLFNBQVUsK2tDQTJCVnFSLEVBQWdCbGtCLEVBQUt1TSxRQUN2QixPQUNBLFFBRUUvSixVQUFXLFVBR1g0UixHQUNGOWdCLFVBQVcsUUFDWCtRLE1BQU8sT0FBUWpULElBQUssTUFDcEJpVSxTQUFVNGUsRUFDVnpoQixhQUVFd1IsR0FDRjFnQixVQUFXLFNBQ1hrUCxVQUFXeEMsRUFBS21NLGlCQUFrQmlJLEdBQ2xDcFMsV0FDR3FDLE1BQU8sTUFBT2pULElBQUssUUFDbkJpVCxNQUFPLElBQUtqVCxJQUFLLE9BR2xCcWhCLEdBQ0FuZixVQUFXLFNBQ1grUSxNQUFPLHdGQUNQdUIsVUFBVyxHQUlmLE9BRkF3TyxFQUFNNVIsVUFBWWlRLElBR2hCcE4sU0FBVTRlLEVBQ1Z6aEIsVUFDRXdSLEVBQ0FoVSxFQUFLeU0sb0JBQ0x5WCxHQXBDRjV3QixVQUFXLE9BQ1grUSxNQUFPLDJCQVBQL1EsVUFBVyxPQUNYK1EsTUFBTyxxQkFDUHVCLFVBQVcsR0EyQ1Q2TSxHQUVFbmYsVUFBVyxXQUNYOFEsY0FBZSxPQUFRaFQsSUFBSyxJQUFLK1csWUFBWSxFQUM3QzNGLFVBQ0V4QyxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUNoQjVJLE1BQU8sOEJBR1BBLE1BQU8sSUFBS2pULElBQUssTUFHakJrQyxVQUFXLFNBQ1grUSxNQUFPLEtBQU1qVCxJQUFLLEtBQU00VyxZQUFZLEVBQ3BDM0MsU0FBVTRlLEVBQ1Z6aEIsVUFDRSxPQUNBaVEsRUFDQXVCLEVBQ0FoVSxFQUFLME0sc0JBQ0pySSxNQUFPLE1BRVZFLFFBQVMsU0FHYkEsUUFBUyxTQUdUalIsVUFBVyxRQUNYOFEsY0FBZSx1Q0FDZmlCLFNBQVU0ZSxFQUNWN3lCLElBQUssTUFDTCtXLFlBQVksRUFDWjNGLFVBQ0V4QyxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUFhNUksTUFBTyw2Q0FJeEMvUSxVQUFXLE9BQ1grUSxNQUFPLGdWQVNQRCxjQUFlLFNBQVVoVCxJQUFLLElBQzlCb1IsVUFBV3hDLEVBQUt5TSxvQkFBcUJ5WCxXcktrSXpDMVksaUJBQ0YsZXNLaFFlLFNBQVN4TCxHQWtDeEIsT0FDRXdDLFdBaENBbFAsVUFBVyxVQUNYK1EsTUFBTyxXQUNQalQsSUFBSyxLQUNMb1IsV0FDRTZCLE1BQU8sS0FDUGpULElBQUssS0FDTG9SLFVBQVcsUUFDVDZCLE1BQU8sVUFHWHVCLFVBQVcsS0FJWHRTLFVBQVcsVUFDWCtRLE1BQU8sa0NBQ1BqVCxJQUFLLEtBQ0wrVyxZQUFZLElBSVo3VSxVQUFXLFdBQ1grUSxNQUFPLGtCQUNQalQsSUFBSyxNQUlMa0MsVUFBVyxTQUNYK1EsTUFBTyxjdEtvT1BtSCxpQkFBaUIsT3VLblFKLFNBQVN4TCxHQUN4QixJQXNCSWdVLEdBQ0YxZ0IsVUFBVyxTQUNYc1MsVUFBVyxFQUNYNUQsV0FDR3FDLE1BQU8sSUFBS2pULElBQUssTUFDakJpVCxNQUFPLElBQUtqVCxJQUFLLE1BQ2pCaVQsTUFBTyxRQUVWN0IsVUFDRXhDLEVBQUttTSxrQkFmUDdZLFVBQVcsb0JBQ1gwTyxXQUNJcUMsTUFBTyxLQUFRalQsSUFBSyxPQUNwQmlULE1BQU8sS0FBT2pULElBQUssU0FpQnpCLE9BQ0V1UixrQkFBa0IsRUFDbEJ0QyxTQUFVLE1BQU8sT0FBUSxRQUN6Qm1DLFdBaENBbFAsVUFBVyxPQUNYME8sV0FDSXFDLE1BQU8saUNBQ1BBLE1BQU8sbUNBQ1BBLE1BQU8scUNBK0JQL1EsVUFBVyxPQUNYK1EsTUFBTyxVQUNQdUIsVUFBVyxLQU9YdFMsVUFBVyxTQUNYK1EsTUFBTyw4REFHUEEsTUFBTyxXQUFZalQsSUFBSyxVQUN4QnVWLFlBQWEsT0FDYmUsY0FBYyxFQUNkUyxZQUFZLEVBQ1p2QyxVQUFXLElBR1h0UyxVQUFXLE9BQ1grUSxNQUFPLElBQU1yRSxFQUFLOEwsc0JBR2xCeFksVUFBVyxPQUNYK1EsTUFBTyxLQUFPckUsRUFBSzhMLHNCQUduQnhZLFVBQVcsT0FDWCtRLE1BQU8sSUFBTXJFLEVBQUs4TCxvQkFBc0IsTUFHeEN4WSxVQUFXLE9BQ1grUSxNQUFPLE1BQVFyRSxFQUFLOEwsb0JBQXNCLE1BRzFDeFksVUFBVyxTQUViK1EsTUFBTyxlQUNMdUIsVUFBVyxHQUViNUYsRUFBSzJNLG1CQUVIdkksY0FyRlMseUJBc0ZUaUIsVUFBVzZOLFFBdEZGLDRCQTJGVDVmLFVBQVcsU0FDWCtRLE1BQU9yRSxFQUFLZ00sWUFBYyxPQUU1QmdJLFN2S3FLRnhJLGlCQUFpQixNd0twUUosU0FBU3hMLEdBQ3hCLE9BQ0UyQyxrQkFBa0IsRUFDbEJILFVBQ0V4QyxFQUFLMk0sbUJBR0hyWixVQUFXLE9BQ1gwTyxXQUNJcUMsTUFBTyx5QkFDUEEsTUFBTyxzQkFLWEEsTUFBTyxZQUFjalQsSUFBSyxhQUMxQnVWLFlBQWEsT0FDYmYsVUFBVyxJQUlYdFMsVUFBVyxTQUNYK1EsTUFBTyxhQUlQL1EsVUFBVyxTQUNYME8sV0FDSXFDLE1BQU8sUUFDUEEsTUFBTyxvQnhLd09mbUgsaUJBQWlCLE15S3JRSixTQUFTeEwsR0FDeEIsT0FDRUssU0FBVSxNQUNWZ0YsU0FBVSwrNkJBWVY3QyxVQUNFeEMsRUFBS3VNLFFBQVEsWUFBYSxLQUMxQnZNLEVBQUt1TSxRQUFRLFlBQWEsTUFFeEJuSSxjQUFlLE9BQ2ZoVCxJQUFLLFFBQ0wrVyxZQUFZLEVBQ1ozRixXQUVJbFAsVUFBVyxRQUNYK1EsTUFBTyxrREFDUGpULElBQUssZUFDTGdSLGdCQUFnQixFQUNoQitGLFlBQVksTUFLaEJBLFlBQVksRUFDWm5HLFdBRUlxQyxNQUFPLG1FQUNQalQsSUFBSyx3QkFHTGlULE1BQU8sOENBQ1BqVCxJQUFLLGdDQUtUa0MsVUFBVyxTQUNYa1AsVUFBV3hDLEVBQUttTSxrQkFDaEJuSyxVQUNFaEMsRUFBS29CLFFBQVFwQixFQUFLcU0sbUJBQW9COUgsUUFBUyxVQUlqRGpSLFVBQVcsU0FDWDBPLFVBQVdoQyxFQUFLOE0sbUJBQW9COU0sRUFBSzZNLHVCektnTjdDckIsaUJBQWlCLE0wS3RRSixTQUFTeEwsR0FDeEIsSUFBSStjLEdBQ0Z6cEIsVUFBVyxNQUNYK1EsTUFBTyxLQUNQdUIsVUFBVyxFQUNYcEQsV0FFSWxQLFVBQVcsT0FDWDBPLFdBQ0dxQyxNQUFPLDRDQUNQQSxNQUFPLDJDQUVWaEMsUUFDRUQsZ0JBQWdCLEVBQ2hCd0QsVUFBVyxFQUNYcEQsV0FFSWxQLFVBQVcsU0FDWDBPLFdBQ0dxQyxNQUFPLEtBQU1qVCxJQUFLLE9BQ2xCaVQsTUFBTyxLQUFNalQsSUFBSyxTQUlyQmlULE1BQU8sVUFBV2pDLGdCQUFnQixFQUNsQ3dELFVBQVcsRUFDWHBELFdBRUlsUCxVQUFXLFNBQ1grUSxNQUFPLG1EQVV2QixPQUNFN0IsVUFDRXVhLEdBRUV6cEIsVUFBVyxVQUNYa1AsVUFBV3VhLEdBQ1huWCxVQUFXLEVBQ1g1RCxXQUNHcUMsTUFBTyxPQUFRalQsSUFBSyxTQUNwQmlULE1BQU8sS0FBTWpULElBQUssUUFHdkI0TyxFQUFLdU0sUUFDSCxJQUNBLEtBRUUzRyxVQUFXLFcxS2dOakI0RixpQkFBaUIsUzJLdlFKLFNBQVN4TCxHQUV4QixPQUNFcUYsVUFDRXZDLFFBQ0UsbUdBQ0YrUCxTQUxpQiw2Q0FPakJLLFFBQ0UsY0FFSjFRLFVBQ0V4QyxFQUFLcU0sa0JBQ0xyTSxFQUFLNE0sWUFDTDVNLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxzQkFFSHBaLFVBQVcsUUFDWDhRLGNBQWUsZ0NBQWlDaFQsSUFBSyxLQUNyRG1ULFFBQVMsS0FDVC9CLFVBQ0V4QyxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUNoQjVLLFFBQVNELGdCQUFnQixFQUFNK0YsWUFBWSxRQUsvQzlELE1BQU8seUJBQTBCalQsSUFBSyxJQUN0Q2lVLFNBM0JlLDZDQTRCZjdDLFVBQVcsZ0IzSzJPZmdKLGlCQUFpQixLNEt4UUosU0FBU3hMLEdBQ3hCLElBQUlta0IsR0FDRjd3QixVQUFXLFNBQ1grUSxNQUFPLGNBQ1B1QixVQUFXLEdBRVR3ZSxHQUNGOXdCLFVBQVcsU0FDWCtRLE1BQU8sWUF1QlQsT0FDRWdCLFVBQ0V2QyxRQUNFLDJYQU1Gb1EsUUFDRSw4REFFSjFRLFdBaENBbFAsVUFBVyxXQUNYK1EsTUFBTywySEFDb0RqVCxJQUFLLE1BQ2hFb1IsVUFDRSxPQUNBMmhCLEVBQ0FDLEtBSUY5d0IsVUFBVyxXQUNYK1EsTUFBTyw2Q0FBOENqVCxJQUFLLE1BQzFEb1IsVUFDRSxPQUNBMmhCLEVBQ0Fua0IsRUFBS3FNLGtCQUNMK1gsS0FvQkU5d0IsVUFBVyxVQUNYK1EsTUFBTywrQkFJUC9RLFVBQVcsVUFDWCtRLE1BQU8sa0NBS1AvUSxVQUFXLFVBQ1grUSxNQUFPLDBEQUlQL1EsVUFBVyxTQUNYK1EsTUFBTyw2REFDUHVCLFVBQVcsR0FFYjVGLEVBQUt1TSxRQUFRLEtBQU0sUUFDbkJ2TSxFQUFLdU0sUUFBUSxJQUFLLFFBQ2xCdk0sRUFBS3VNLFFBQVEsUUFBUyxLQUN0QnZNLEVBQUtxTSxtQkFFSC9ZLFVBQVcsU0FDWCtRLE1BQU8sSUFBTWpULElBQUssS0FFcEI0TyxFQUFLNk0sZUFFSHZaLFVBQVcsV0FDWCtRLE1BQU8sMkI1SzJMWG1ILGlCQUFpQixPNkt6UUosU0FBU3hMLEdBQ3hCLElBS0lxa0IsRUFBaUIsMkdBR2pCOUQsR0FDRm5jLGNBQWVpZ0IsRUFDZmhmLFVBQVdsUyxLQUFNa3hCLEdBQ2pCemUsVUFBVyxFQUNYcEQsV0FYQWxQLFVBQVcsU0FDWCtRLE1BQU8sTUFBT2pULElBQUssU0FlakJtbkIsR0FDRmxVLE1BQU8saUJBQ1BnQixTQUNFLDRTQUlGN0MsVUFDRStkLElBSUErRCxFQUFPLGlJQUtYLE9BRkFBLEVBQU9BLEVBQU8sSUFBTUEsRUFBS2ozQixNQUFNLEtBQUtKLElBQUksU0FBU3MzQixHQUFHLE1BQU8sTUFBUUEsSUFBSXAzQixLQUFLLE1BRzFFa1QsU0FBVSxZQUNWc0Msa0JBQWtCLEVBQ2xCZ0UsWUFBYSxNQUNibkUsVUFDRXhDLEVBQUt1TSxRQUFRLE1BQU8sT0FFbEJqWixVQUFXLGVBQ1grUSxNQUFPLE1BQU9qVCxJQUFLLEtBQ25Cb1IsV0FFSWxQLFVBQVcsT0FDWCtRLE1BQU8sTUFDUGdCLFNBQVVpZixFQUNWamlCLFFBQ0VELGdCQUFnQixFQUNoQkksVUFBVytWLEVBQVFnSSxHQUNuQjNhLFVBQVcsT0FNakJ0UyxVQUFXLG9CQUNYK1EsTUFBTyxPQUFRalQsSUFBSyxLQUNwQm9SLFVBQVcsT0FBUStWLEVBQVFnSSxXN0s4TS9CL1UsaUJBQ0YsYThLM1FlLFNBQVN4TCxHQUN4QixJQUNJbVUsR0FDRnJSLFFBQ0UsbVRBS0ZvUSxRQUNFLHlDQUNGTCxTQUNFLDZmQVNBMlIsR0FDRmx4QixVQUFXLE9BQ1grUSxNQUFPLDZCQUdMb2dCLEdBRUZwZ0IsTUFBTyxNQUNQalQsSUFBSyxLQUNMaVUsU0FBVThPLEVBQ1YzUixVQUNFLE9BQ0F4QyxFQUFLcU0sa0JBQ0xyTSxFQUFLb00saUJBQ0xwTSxFQUFLNE0sY0FJTHFILEdBQ0YzZ0IsVUFBVyxTQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxLQUNsQnNXLGNBQWMsRUFDZFMsWUFBWSxFQUNaOUMsU0FBVThPLEVBQ1YzUixVQUNFeEMsRUFBS3lNLG9CQUNMek0sRUFBSzBNLHFCQUNMOFgsRUFDQUMsSUFHQTNRLEdBQ0Z4Z0IsVUFBVyxTQUNYME8sV0FDSXFDLE1BQU8sc0JBQ1BBLE1BQU8sdUJBQ1BBLE1BQU9yRSxFQUFLZ00sWUFBYyxPQUU5QnBHLFVBQVcsR0FFVHdPLEdBQ0Y5Z0IsVUFBVyxRQUNYK1EsTUFBTyxTQUFValQsSUFBSyxNQUN0QmlVLFNBQVU4TyxFQUNWM1IsYUFFRTRaLEdBQ0YvWCxNQUFPLFFBQVNqVCxJQUFLLEdBQ3JCaVIsUUFDRWpSLElBQUssSUFBSzhXLFdBQVcsRUFDckIxRixVQUNFeEMsRUFBS21NLGlCQUNMaUksR0FFRnpOLFlBQWEsUUFHYjBWLEdBQ0ZoWSxNQUFPLE9BQVFqVCxJQUFLLEdBQ3BCaVIsUUFDRWpSLElBQUssSUFBSzhXLFdBQVcsRUFDckIxRixVQUNFeEMsRUFBS21NLGlCQUNMaUksR0FFRnpOLFlBQWEsUUFHYjBOLEdBQ0YvZ0IsVUFBVyxTQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQm9SLFVBQ0V4QyxFQUFLbU0saUJBQ0xpSSxJQWVKLE9BWkFBLEVBQU01UixVQUNKeEMsRUFBS29NLGlCQUNMcE0sRUFBS3FNLGtCQUNMK1AsRUFDQUMsRUFDQWhJLEVBQ0FQLEVBQ0E5VCxFQUFLZ04sY0FNTDNNLFNBQVUsTUFDVmdGLFNBQVU4TyxFQUNWM1IsV0FFSWxQLFVBQVcsT0FDWCtRLE1BQU8sMEJBRVRyRSxFQUFLb00saUJBQ0xwTSxFQUFLcU0sa0JBQ0wrUCxFQUNBQyxFQUNBaEksRUFDQXJVLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxxQkFDTG9ILEdBRUV6UCxNQUFPLElBQU1yRSxFQUFLa00sZUFBaUIsa0NBQ25DN0csU0FBVSxvQkFDVjdDLFVBQ0V4QyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0wxTSxFQUFLZ04sYUFFSDFaLFVBQVcsV0FDWCtRLE1BQU8sY0FBZ0JyRSxFQUFLNkwsU0FBVyxVQUFXbEUsYUFBYSxFQUMvRHZXLElBQUssU0FDTG9SLFdBRUlsUCxVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBT3JFLEVBQUs2TCxXQUdaeEgsTUFBTyxZQUdQQSxNQUFPLEtBQU1qVCxJQUFLLEtBQ2xCc1csY0FBYyxFQUFNUyxZQUFZLEVBQ2hDOUMsU0FBVThPLEVBQ1YzUixVQUNFLE9BQ0F4QyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0sNEJBUW5COUcsVUFBVyxJQUdYdFMsVUFBVyxXQUNYOFEsY0FBZSxXQUFZaFQsSUFBSyxRQUFTK1csWUFBWSxFQUNyRDlDLFNBQVU4TyxFQUNWM1IsVUFDRSxPQUNBeEMsRUFBS29CLFFBQVFwQixFQUFLaU4sWUFBYzVJLE1BeEt0Qiw2QkF5S1Y0UCxHQUVGMVAsUUFBUyxJQUNUcUIsVUFBVyxJQUdYeEIsY0FBZSxjQUFlaFQsSUFBSyxRQUFTK1csWUFBWSxFQUN4RDNGLFVBQ0UsT0FDQXlSLEtBSUY1UCxNQUFPLFdBQ1BnQixVQUFZd04sU0FBVSxVQUN0QmpOLFVBQVcsSUFHWHhCLGNBQWUsU0FBVWhULElBQUssS0FBTStXLFlBQVksSUFHaEQvRCxjQUFlLFlBQWFoVCxJQUFLLEtBQU0rVyxZQUFZLEVBQ25EOUMsU0FBVSxzQkFHVmhCLE1BQU8sV0FHUEEsTUFBTyxNQUFRckUsRUFBSzZMLFNBQVVqRyxVQUFXLEdBRTNDNGUsRUFDQUMsUzlLcUVGalosaUJBQWlCLE8rSzlRSixTQUFTeEwsR0FDeEIsT0FDRXFGLFVBQ0V2QyxRQUVFLHFZQVlGK1AsU0FDRSx1Q0FDRkssUUFDRSxtQkFFSjFRLFdBRUlsUCxVQUFXLFFBQ1g4USxjQUFlLDRCQUE2QmhULElBQUssSUFBSytXLFlBQVksRUFDbEU1RCxRQUFTLGlCQUNUL0IsVUFDRXhDLEVBQUtrTix3QkFHVGxOLEVBQUt5TSxvQkFDTHpNLEVBQUswTSxzQkFFSHBaLFVBQVcsU0FDWCtRLE1BQU8sTUFBT2pULElBQUssTUFDbkJ3VSxVQUFXLEdBRWI1RixFQUFLb00saUJBQ0xwTSxFQUFLcU0sa0JBQ0xyTSxFQUFLNk0sZUFFSHZaLFVBQVcsT0FDWCtRLE1BQU8sS0FBTWpULElBQUssSUFDbEJ3VSxVQUFXLFUvS21PZjRGLGlCQUFpQixRZ0wvUUosU0FBU3hMLEdBQ3hCLE9BQ0VLLFNBQVUsTUFDVnNDLGtCQUFrQixFQUNsQjBDLFVBQ0V2QyxRQUNFLHE3QkFXRitQLFNBQ0UsaVBBR0ZLLFFBQ0Usc0JBRUozTyxRQUFTLHdDQUNUL0IsVUFDRXhDLEVBQUtvQixRQUFRcEIsRUFBS3FNLG1CQUFvQjdKLFdBQVk2QixNQUFPLFNBQ3pEckUsRUFBS3VNLFFBQ0gsSUFDQSxLQUVFNUUsYUFBYSxFQUNibkYsV0FFSWxQLFVBQVcsU0FDWCtRLE1BQU8scUJBQ1A3QixVQUFXeEMsRUFBS3NNLHNCQUdoQmhaLFVBQVcsU0FDWCtRLE1BQU8sTUFBT2pULElBQUssSUFDbkJvUixVQUFXeEMsRUFBS3NNLHdCQUt4QnRNLEVBQUs2TSxlQUVIdlosVUFBVyxPQUNYK1EsTUFBTyxJQUFLalQsSUFBSyxJQUNqQmlVLFVBQVc4TixlQUFnQixvRGhMOE4vQjNILGlCQUFpQixXaUxoUkosU0FBU3hMLEdBQ3hCLE9BQ0VLLFNBQVUsT0FDVnNDLGtCQUFrQixFQUNsQjBDLFVBQ0V2QyxRQUNFLG1WQUlGK1AsU0FDRSxtd0JBVUZLLFFBQ0UsaUNBRUozTyxRQUFTLEtBQ1QvQixVQUNFeEMsRUFBS29CLFFBQVFwQixFQUFLcU0sbUJBQW9CN0osV0FBWTZCLE1BQU8sU0FDekRyRSxFQUFLdU0sUUFDSCxJQUNBLEtBRUUzRyxVQUFXLElBR2Y1RixFQUFLNk0scUJqTCtPUHJCLGlCQUNGLGdCa0xsUmUsU0FBU3hMLEdBQ3hCLE9BQ0UyRyxZQUFhLE1BQ2JuRSxXQUVJNkIsTUFBTyxLQUFNalQsSUFBSyxLQUNsQnVWLFlBQWEsbUJsTCtRakI2RSxpQkFBaUIsVW1MclJKLFNBQVN4TCxHQTREeEIsT0FDRUssU0FBVSxJQUFLLEtBQU0sT0FDckJzQyxrQkFBa0IsRUFDbEIwQyxVQTdEQXZDLFFBQ0UsODNEQXdCRm9RLFFBQ0UsT0FDRkwsU0FDRSw4aEVBaUNxQnROLFFBQVMsVUFDaEMvQyxVQUNFeEMsRUFBSzBNLHFCQUNMMU0sRUFBS3lNLG9CQUNMek0sRUFBS3FNLG1CQUVIL1ksVUFBVyxTQUNYa1AsVUFBV3hDLEVBQUttTSxrQkFDaEJuSyxXQUNHcUMsTUFBTyxtREFDUEEsTUFBTywrQ0FDUEEsTUFBTyxlQUFnQnVCLFVBQVcsTUFLckN0UyxVQUFXLFdBQ1gwTyxXQUNHcUMsTUFBTywyQkFDUEEsTUFBTyxVQUFXdUIsVUFBVyxNQUloQ3RTLFVBQVcsT0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFDakJpVSxVQUFXOE4sZUFBZ0IscU9BSzNCdk4sVUFBVyxVbkx5TGY0RixpQkFBaUIsT29MdFJKLFNBQVN4TCxHQWF4QixPQUNFMkMsa0JBQWtCLEVBQ2xCMEMsVUFDRXZDLFFBQ0UsNHZCQVNGK1AsU0FDRSw2U0FNRkssUUFDRSw4REFHSjNPLFFBQVMsSUFDVC9CLFVBQ0V4QyxFQUFLME0scUJBQ0wxTSxFQUFLdU0sUUFBUSxLQUFNLEtBQ25Cdk0sRUFBS3FNLG1CQUVIL1ksVUFBVyxTQUNYK1EsTUFqQ1UsOEdBa0NWdUIsVUFBVyxJQUdYdFMsVUFBVyxTQUNYK1EsTUFBTyx3QkFDUDdCLFVBQVd4QyxFQUFLbU0sb0JBR2hCN1ksVUFBVyxTQUNYK1EsTUFBTyw0QkFDUDdCLFVBQVd4QyxFQUFLbU0sMEJwTGdPcEJYLGlCQUFpQixNcUx2UkosU0FBU3hMLEdBQ3hCLE9BQ0V1RixRQUFTLFdBQ1RGLFVBQ0V2QyxRQUVFLG13TEFrQkYrUCxTQUNFLCtuRUFvQ0p0TyxRQUFTLElBQ1QvQixVQUNFeEMsRUFBSzRNLGFBRUh0WixVQUFXLFNBQ1grUSxNQUFPLElBQU1qVCxJQUFLLElBQ2xCbVQsUUFBUyxRQWNUalIsVUFBVyxTQUNYK1EsTUFBTyx3QkFFVHJFLEVBQUt1TSxRQUFRLElBQUssTUFHaEJqWixVQUFXLFdBQ1grUSxNQUFPLHdCQUdQL1EsVUFBVyxXQUNYOFEsY0FBZSxxQkFBc0JoVCxJQUFLLElBQzFDd1UsVUFBVyxFQUNYcEQsVUFDRXhDLEVBQUtpTixZQUVIM1osVUFBVyxTQUNYK1EsTUFBTyxNQUFPalQsSUFBSyxVQUt2QmtDLFVBQVcsU0FDWCtRLE1BQU8sbUJyTGdMWG1ILGlCQUFpQixTc0x4UkosU0FBU3hMLEdBQ3hCLE9BQ0UyQyxrQkFBa0IsRUFDbEI0QyxRQUFTLFFBQVV2RixFQUFLNkwsU0FDeEJ4RyxVQUNFdkMsUUFDRSxxdGVBRUYrUCxTQUVFLGk1Q0F5Q0ZvQyxLQUNFLDAvQkFjSnpTLFVBQ0V4QyxFQUFLdU0sUUFDSCxJQUNBLEtBRUUzRyxVQUFXLEtBSWJ0UyxVQUFXLFNBQ1gwTyxXQUdJcUMsTUFBTyxxSEFFUHVCLFVBQVcsSUFJWHZCLE1BQU8sdUJBQXdCdUIsVUFBVyxJQUcxQ3ZCLE1BQU8scUdBR1BBLE1BQU8sK0VBSWJyRSxFQUFLcU0sbUJBRUgvWSxVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBTyxJQUFNalQsSUFBSyxhQUVsQmlULE1BQU8sSUFBS2pULElBQUssYUFFckJ3VSxVQUFXLElBR1h0UyxVQUFXLFNBQ1gwTyxXQUVJcUMsTUFBTyxxREFFUEEsTUFBTyxnQ0FFWHVCLFVBQVcsSUFJWHRTLFVBQVcsUUFDWCtRLE1BQU8sVUFDUHVCLFVBQVcsSUFJWHRTLFVBQVcsUUFDWCtRLE1BQU8sT0FDUHVCLFVBQVcsSUFHWHRTLFVBQVcsT0FDWCtRLE1BQU8sd0J0THVKWG1ILGlCQUFpQixLdUx6UkosU0FBU3hMLEdBQ3hCLElBSUkwa0IsR0FDRjVoQixRQUNFLDJKQUVGb1EsUUFDRSxpQkFDRkwsU0FDRSw4dkJBWUE4UixHQUNGcnhCLFVBQVcsU0FDWCtRLE1BQU8sSUFBS2pULElBQUssSUFBS21ULFFBQVMsT0FjN0JxZ0IsR0FDRnhnQixjQUFlLFNBQVVoVCxJQUFLLElBQzlCaVUsU0FBVXFmLEVBQ1ZsaUIsVUFBV21pQixJQUVURSxHQUNGdnhCLFVBQVcsV0FDWCtRLE1BQU8sZ0JBQWlCc0QsYUFBYSxFQUFNdlcsSUFBSyxLQUNoRG9SLFVBQ0V4QyxFQUFLb0IsUUFBUXBCLEVBQUtpTixZQUFhNUssUUFDN0JELGdCQUFnQixFQUNoQmlELFNBQVVxZixPQUloQixPQUNFcmtCLFNBQVUsT0FDVmtGLFFBQVMseUJBQ1RGLFNBQVVxZixFQUNWbGlCLFVBQ0F4QyxFQUFLeU0sb0JBQ0x6TSxFQUFLME0scUJBQ0xpWSxHQWpDQXJ4QixVQUFXLFNBQ1grUSxNQUFPLElBQU1qVCxJQUFLLElBQU1tVCxRQUFTLFFBR2pDalIsVUFBVyxTQUNYK1EsTUFBTyxLQUFNalQsSUFBSyxNQStCbEJ5ekIsRUFDQUQsR0E3QkF0eEIsVUFBVyxTQUNYK1EsTUFBTywwREE4QlByRSxFQUFLNE0sbUJ2THNOTHBCLGlCQUFpQixTd0wxUkosU0FBU3hMLEdBNEp4QixPQUNFSyxTQUFVLFFBQVMsTUFDbkJzQyxrQkFBa0IsRUFDbEI0QyxRQUFTLDZCQUNUaEIsUUFBUywwQ0FDVGMsVUFDRXZDLFFBaEtXLDB1QkFpS1gzVSxLQXZKTyxvc0JBd0pQK2tCLFFBckpVLGdNQXVKWjFRLFdBckdBbFAsVUFBVyxXQUNYK1EsTUFBTyxnQkE3Q1AvUSxVQUFXLFdBQ1gwTyxXQUNFcUMsTUFBTyxZQUNQalQsSUFBSyxpSkFFTGlULE1BQU8sVUFDUGpULElBQUssdUVBRUxpVCxNQUFPLFdBQ1BqVCxJQUFLLDZFQUVMaVQsTUFBTyxTQUNQalQsSUFBSyxLQUNMK1csWUFBWSxJQUVaOUQsTUFBTyxTQUNQalQsSUFBSyxLQUNMK1csWUFBWSxJQUlaOUQsTUFBTywyOURBRVBBLE1BQU8sWUFDUGpULElBQUssS0FDTCtXLFlBQVksSUFFWjlELE1BQU8sVUFDUGpULElBQUssMEVBRUxpVCxNQUFPLHdDQUNQalQsSUFBSyxLQUNMK1csWUFBWSxNQXVCZDdVLFVBQVcsU0FDWDBPLFdBQ0lxQyxNQUFPLElBQ1BqVCxJQUFLLElBQ0xvUixXQUNFNkIsTUFBTyxLQUNQdUIsVUFBVyxNQUlidkIsTUFBTyxJQUNQalQsSUFBSyxJQUNMb1IsV0FDRTZCLE1BQU8sS0FDUHVCLFVBQVcsUUFwQmpCdFMsVUFBVyxTQUNYK1EsTUFBTyw0RUFDUHVCLFVBQVcsSUE4Qlh0UyxVQUFXLFVBQ1grUSxNQUFPLE9BQ1BqVCxJQUFLLE9BQ0x3VSxVQUFXLEdBQ1hwRCxXQUNFbFAsVUFBVyxTQUNYK1EsTUFBTyxZQVhUL1EsVUFBVyxPQUNYK1EsTUFBTyxhQXZDUC9RLFVBQVcsUUFDWCtRLE1BQU8scURBQ1BqVCxJQUFLLE1BdURMZ1QsY0FBZSw0REFDZmhULElBQUssSUFDTCtXLFlBQVksSUFLVjlELE1BQU8seUNBQ1BqVCxJQUFLLG1CQUNMdVYsWUFBYSxNQUNibkUsV0FDRTZCLE1BQU8sSUFDUGpULElBQUssSUFDTHVWLFlBQWEsVUFDWixnQnhMeUpMNkUsaUJBQWlCLFN5TDNSSixTQUFTeEwsR0FDeEIsSUFBSWdVLEdBQ0YxZ0IsVUFBVyxTQUNYa1AsVUFBV3hDLEVBQUttTSxrQkFDaEJuSyxXQUVJcUMsTUFBTyxLQUFNalQsSUFBSyxNQUdsQmlULE1BQU8sS0FBT2pULElBQUssS0FFckI0TyxFQUFLb0IsUUFBUXBCLEVBQUtvTSxrQkFBbUI3SCxRQUFTLE9BQzlDdkUsRUFBS29CLFFBQVFwQixFQUFLcU0sbUJBQW9COUgsUUFBUyxTQUcvQ3VQLEdBQVU5UixVQUFXaEMsRUFBSzhNLG1CQUFvQjlNLEVBQUs2TSxnQkFDdkQsT0FDRXhNLFNBQVUsT0FDVnNDLGtCQUFrQixFQUNsQjBDLFNBQ0UscWxCQVNGN0MsVUFDRXhDLEVBQUt5TSxvQkFDTHpNLEVBQUsyTSxrQkFDTDNNLEVBQUt1TSxRQUNILE9BQ0EsUUFFRS9KLFdBRUlsUCxVQUFXLFNBQ1grUSxNQUFPLGlCQUtmckUsRUFBS3VNLFFBQ0gsdUJBQ0EsR0FFRW5LLGdCQUFnQixFQUNoQmlELFNBQVUsa0JBQ1ZFLFFBQVN2RixFQUFLOEwsdUJBSWhCeFksVUFBVyxTQUNYK1EsTUFBTyx1QkFBd0JqVCxJQUFLLFNBQ3BDb1IsVUFBV3hDLEVBQUttTSxvQkFJaEI5SCxNQUFPLHFEQUdQL1EsVUFBVyxXQUNYOFEsY0FBZSxXQUFZaFQsSUFBSyxPQUFRK1csWUFBWSxFQUNwRDVELFFBQVMsWUFDVC9CLFVBQ0V4QyxFQUFLa04sdUJBRUg1WixVQUFXLFNBQ1grUSxNQUFPLE1BQU9qVCxJQUFLLE1BQ25Cb1IsVUFDRSxPQUNBeEMsRUFBSzBNLHFCQUNMc0gsRUFDQUYsT0FNTnhnQixVQUFXLFFBQ1g4USxjQUFlLGtCQUFtQmhULElBQUssSUFBSytXLFlBQVksRUFDeEQ1RCxRQUFTLFdBQ1QvQixXQUNHNEIsY0FBZSxzQkFDaEJwRSxFQUFLa04seUJBSVA5SSxjQUFlLFlBQWFoVCxJQUFLLElBQ2pDbVQsUUFBUyxRQUNUL0IsVUFBV3hDLEVBQUtrTix5QkFHaEI5SSxjQUFlLE1BQU9oVCxJQUFLLElBQzNCb1IsVUFBV3hDLEVBQUtrTix5QkFHaEI3SSxNQUFPLE1BRVQyUCxFQUNBRixNQ3FDTixPQWxCQSxXQU9FLE9BQU8sU0FBVXpCLEVBQUt5UyxFQUFPNXBCLEdBRzNCLE9BOUdKLFNBQW1CbVgsR0FDakIsSUFBSTBTLEVBQU8sRUFDSngwQixFQUFNOGhCLEVBQUssT0FBUS9qQixJQUN4QixJQUFJMDJCLEdBQW1CLEVBQ25CQyxFQUFNLEVBQ1YsTUFBTXB3QixLQW1GTixPQWpGQXRHLE1BQU1aLEtBQUtXLEVBQUtHLFVBQVVuQixRQUFRNDNCLElBQzVCQSxFQUFNejJCLFVBQXVDLGNBQTNCeTJCLEVBQU16MkIsU0FBUyxHQUFHTixNQUNsQysyQixFQUFNejJCLFNBQVMsR0FBR0EsVUFBWXkyQixFQUFNejJCLFNBQVMsR0FBR0EsU0FBUyxHQUFHSixNQUMxRCxNQUFNb0MsUUFBUXkwQixFQUFNejJCLFNBQVMsR0FBR0EsU0FBUyxHQUFHSixNQUFNLElBQU0sSUFDMUQyMkIsR0FBbUIsR0FNdkJBLEdBQW1CLElBR25CQSxJQUNGejJCLE1BQU1aLEtBQUtXLEVBQUtHLFVBQVVuQixRQUFRNDNCLElBQ0QsY0FBM0JBLEVBQU16MkIsU0FBUyxHQUFHTixPQUMyQixNQUEzQysyQixFQUFNejJCLFNBQVMsR0FBR0EsU0FBUyxHQUFHSixNQUFNLEdBQ3RDd0csRUFBSTVCLEtBQUssSUFDMkMsTUFBM0NpeUIsRUFBTXoyQixTQUFTLEdBQUdBLFNBQVMsR0FBR0osTUFBTSxHQUM3Q3dHLEVBQUk1QixLQUFLLEdBRVQ0QixFQUFJNUIsS0FBSyxHQUVYaXlCLEVBQU16MkIsU0FBUyxHQUFHQSxTQUFTLEdBQUdKLFNBQVc2MkIsRUFBTXoyQixTQUFTLEdBQUdBLFNBQVMsR0FBR0osTUFBTXlHLE1BQU0sVUFHdkZ4RyxFQUFLSCxLQUFPLEtBQ1pHLEVBQUtzRSxNQUNIOEgsTUFBTyxXQUNQMUcsYUFDRVYsVUFBVyxXQUNYN0IsU0FBVXN6QixNQUdkejJCLEVBQUtHLFdBQ0hOLEtBQU0sZUFDTnlFLE1BQ0U4SCxNQUFPLE1BRVRqTSxTQUFVSCxFQUFLRyxTQUFTeEIsSUFBSWs0QixLQUFPaDNCLEtBQU0sa0JBQ3ZDeUUsTUFDRThILE1BQU8sTUFFVGpNLFdBQ0dOLEtBQU0sbUJBQ0x5RSxNQUNFOEgsTUFBTyxRQUNQMUcsYUFDRWdGLFFBQVNtc0IsRUFBRW5zQixRQUNYN0ssS0FBTSxXQUNOc0QsU0FBVXN6QixLQUFRRSxJQUNsQjN4QixVQUFXLE1BQWlCLEVBQVh1QixFQUFJb3dCLFFBSXpCOTJCLEtBQU0sbUJBQ055RSxNQUNFOEgsTUFBTyxRQUNQMUcsYUFDRW94QixVQUFXTCxLQUFRRSxRQUd2QngyQixTQXhGZCxTQUEyQjQyQixHQUN6QixJQUFJZCxLQWVKLE1BZDBCLGNBQXRCYyxFQUFVLEdBQUdsM0IsT0FDZm8yQixFQUFJYyxFQUFVLEdBQUc1MkIsVUFFbkI4MUIsRUFBRSxHQUFHbDJCLE1BQVFrMkIsRUFBRSxHQUFHbDJCLE1BQU1tRSxPQUNxQixlQUF6QzZ5QixFQUFVQSxFQUFVcDVCLE9BQVMsR0FBR2tDLE9BQ2xDazNCLEVBQVVBLEVBQVVwNUIsT0FBUyxHQUFHa0MsS0FBTyxNQUN2Q2szQixFQUFVQSxFQUFVcDVCLE9BQVMsR0FBRzJHLE1BQzlCOEgsTUFBTyxhQUNQMUcsYUFDRVYsVUFBVyx1QkFJakJpeEIsRUFBSUEsRUFBRWowQixPQUFPKzBCLEVBQVV2d0IsTUFBTSxJQXlFUHd3QixDQUFrQkgsRUFBRTEyQixpQkFLcENOLEtBQU0sZUFDTnlFLE1BQ0U4SCxNQUFPLFFBQ1AxRyxhQUNFdXhCLHFCQUFzQlIsT0FBVWw0QixPQUFPZ0ksT0FDdkN4RyxNQUFPLFdBQ1BGLEtBQU0sYUFNWjQyQixLQUVLejJCLElBb0JQazNCLENBQVVuVCxHQUVVLG1CQUFUblgsRUFDRkEsRUFBSyxLQUFNbVgsRUFBS3lTLEdBR2xCelMsSUNwSVgsU0FBU29ULEdBQVFDLEVBQVFDLEdBQWtCLElBQUluNEIsRUFBT2xCLE9BQU9rQixLQUFLazRCLEdBQVMsR0FBSXA1QixPQUFPRSxzQkFBdUIsQ0FBRSxJQUFJb0IsRUFBVXRCLE9BQU9FLHNCQUFzQms1QixHQUFhQyxJQUFnQi8zQixFQUFVQSxFQUFRbWIsT0FBTyxTQUFVNmMsR0FBTyxPQUFPdDVCLE9BQU91NUIseUJBQXlCSCxFQUFRRSxHQUFLRSxjQUFnQnQ0QixFQUFLeUYsS0FBSzdELE1BQU01QixFQUFNSSxHQUFZLE9BQU9KLEVBSTlVLFNBQVN1NEIsR0FBZ0J6a0IsRUFBS25WLEVBQUtrQyxHQUFpSyxPQUFwSmxDLEtBQU9tVixFQUFPaFYsT0FBTzA1QixlQUFlMWtCLEVBQUtuVixHQUFPa0MsTUFBT0EsRUFBT3kzQixZQUFZLEVBQU1HLGNBQWMsRUFBTUMsVUFBVSxJQUFrQjVrQixFQUFJblYsR0FBT2tDLEVBQWdCaVQsRUFFM00sSUFBSTZrQixJQUNGQyxRQUNBQyxNQUFPLElBRUxDLElBQ0ZDLGFBQWMsY0F1U2hCLE9BalNBLFNBQWVsNEIsRUFBT200QixFQUFXQyxHQUUvQixJQUFJQyxFQUFVLEdBQ1ZDLEdBQWMsRUFDZEMsR0FBZ0IsRUFFaEJDLEVBckJOLFNBQXVCLzZCLEdBQVUsSUFBSyxJQUFJQyxFQUFJLEVBQUdBLEVBQUlDLFVBQVVDLE9BQVFGLElBQUssQ0FBRSxJQUFJRyxFQUF5QixNQUFoQkYsVUFBVUQsR0FBYUMsVUFBVUQsTUFBYUEsRUFBSSxFQUFLMDVCLEdBQVF2NUIsR0FBUSxHQUFNb0IsUUFBUSxTQUFVbkIsR0FBTzQ1QixHQUFnQmo2QixFQUFRSyxFQUFLRCxFQUFPQyxNQUFzQkcsT0FBT3c2QiwwQkFBNkJ4NkIsT0FBT3k2QixpQkFBaUJqN0IsRUFBUVEsT0FBT3c2QiwwQkFBMEI1NkIsSUFBbUJ1NUIsR0FBUXY1QixHQUFRb0IsUUFBUSxTQUFVbkIsR0FBT0csT0FBTzA1QixlQUFlbDZCLEVBQVFLLEVBQUtHLE9BQU91NUIseUJBQXlCMzVCLEVBQVFDLE1BQWUsT0FBT0wsRUFxQjllazdCLElBQWtCVixNQUFtQkcsR0FHbEQsR0FBbUMsbUJBQXhCSSxFQUFPTixhQUE2QixDQUM3QyxJQUFJQSxFQUFlTSxFQUFPTixhQUUxQk0sRUFBT04sYUFBZSxXQUNwQixPQUFPQSxHQUlYLElBT0lVLEVBY0E5NEIsRUFyQkFpNEIsS0FNQWMsRUFBYSxRQUdDbjVCLElBQWR5NEIsSUFDRkEsRUFBWSxHQVlkLElBRUlXLEVBQWEsV0FDZixPQUFJWCxHQUFhbjRCLEVBQU1wQyxRQUhBLFNBRzZCd0UsUUFBUXBDLEVBQU1tNEIsS0FBZSxHQUMzRUcsR0FBb0MsTUFBckJ0NEIsRUFBTW00QixLQUN2QkksR0FBZ0IsSUFHWCxHQUdtQixNQUFyQnY0QixFQUFNbTRCLElBQXNCRyxHQUdqQ04sRUFBUSxHQUdScnFCLEVBQU0sU0FBYW9yQixHQUdyQixJQUZBZixFQUFRLEdBRURHLEVBQVluNEIsRUFBTXBDLFFBcEJGLFNBb0IrQndFLFFBQVFwQyxFQUFNcU4sT0FBTzhxQixJQUFjLEdBQUtZLEVBQU0zMkIsUUFBUXBDLEVBQU1xTixPQUFPOHFCLEtBQWUsR0FDdElFLEdBQVdyNEIsRUFBTXFOLE9BQU84cUIsR0FDeEJILEdBQVNoNEIsRUFBTXFOLE9BQU84cUIsR0FDdEJBLElBR0YsT0FBT1csS0FHTEUsRUFBVyxTQUFrQkQsR0FHL0IsSUFGQWYsRUFBUSxHQUVERyxFQUFZbjRCLEVBQU1wQyxRQWhDRixTQWdDK0J3RSxRQUFRcEMsRUFBTXFOLE9BQU84cUIsSUFBYyxHQUFLWSxFQUFNMzJCLFFBQVFwQyxFQUFNcU4sT0FBTzhxQixJQUFjLEdBQ3JJRSxHQUFXcjRCLEVBQU1xTixPQUFPOHFCLEdBQ3hCSCxHQUFTaDRCLEVBQU1xTixPQUFPOHFCLEdBQ3RCQSxJQVdGLE9BTklVLEVBQ0ZELEVBQWNaLEVBRWRhLEVBQWFiLEVBR1JjLEtBb0NMRyxFQUFTLFNBQWdCemhCLEVBQUcwaEIsR0FJOUIsT0FGQWIsR0FBVzdnQixFQUNYMmdCLEtBQ09lLEdBQXdCSixLQUk3QkssRUFBVyxTQUFrQkMsR0FJL0IsT0FIQUgsRUFBT0csR0FBRyxHQXhDSyxTQUFvQkMsR0FHbkMsR0FGQXJCLEVBQVEsR0FFSmg0QixFQUFNbTRCLEtBQWVrQixFQUF6QixDQUlBLEtBQU9sQixFQUFZbjRCLEVBQU1wQyxTQUFZeTdCLElBQVVyNUIsRUFBTW00QixJQUF1QyxPQUF6Qm40QixFQUFNbTRCLEVBQVksS0FBcUMsT0FBckJuNEIsRUFBTW00QixJQUE0QyxPQUFyQm40QixFQUFNbTRCLElBQ3RJRSxHQUFXcjRCLEVBQU1xTixPQUFPOHFCLEdBQ3hCSCxHQUFTaDRCLEVBQU1xTixPQUFPOHFCLEdBQ3RCQSxJQUt1QixPQUFyQm40QixFQUFNbTRCLElBQTRDLE9BQXJCbjRCLEVBQU1tNEIsSUFBdUJBLEdBQWFuNEIsRUFBTXBDLE9BQy9FMjZCLEdBQWdCLEdBS2RNLEVBQ0ZELEVBQWNaLEVBQU1sMEIsUUFBUSxPQUFRLEtBRXBDKzBCLEVBQWFiLEVBQU1sMEIsUUFBUSxPQUFRLEtBRzlCZzFCLE1BY1BRLENBQVdGLEdBRVBwNUIsRUFBTXFOLE9BQU84cUIsS0FBZWlCLEVBQ3ZCdEIsR0FHTG1CLEVBQU9HLElBQ0QsT0FEVixHQUtFRyxHQUFhLEVBRWJDLEVBQWUsV0FDakIsT0FBUTE1QixHQUNOLElBQUssS0FFQ3k1QixHQUNGeEIsRUFBSzMwQixHQUFLeTFCLEVBQ1ZVLEdBQWEsR0FFYnhCLEVBQUszMEIsR0FBSzIwQixFQUFLMzBCLElBQU15MUIsRUFHdkIsTUFFRixJQUFLLFFBQ0VkLEVBQVksUUFDZkEsRUFBWSxVQUdWQSxFQUFZLE1BQUUzMUIsUUFBUXkyQixHQUFjLEdBQ3RDZCxFQUFZLE1BQUVuekIsS0FBS2kwQixHQUdyQixNQUVGLElBQUssTUFDSCxJQUFLQSxFQUNILE9BQU9mLEdBR0hlLEtBQWNkLEVBWU0sVUFBZmMsR0FBMEJ0NEIsUUFBUXE0QixJQUMzQ2IsRUFBWSxNQUFFbnpCLEtBQUtnMEIsSUFUakJiLEVBQUtjLFFBSGFuNUIsSUFBaEJrNUIsRUFHaUJKLEVBQU9OLGFBQWFXLEdBRUwsVUFBZkEsR0FBMEJELEdBQWVBLEVBRzNDLE9BQWZDLElBQ0ZVLEdBQWEsSUFXckJ6NUIsT0FBT0osRUFDUG01QixFQUFhLEdBQ2JELE9BQWNsNUIsR0FhaEIsSUFQQWlPLEVBQUksU0FFcUIsTUFBckIzTixFQUFNbTRCLEtBQ1JjLEVBQU8sS0FDUFgsR0FBYyxJQUdSUSxNQUVGbnJCLEVBQUksVUFGWSxDQU1wQixHQUFnQyxNQUE1QjNOLEVBQU1xTixPQUFPOHFCLElBSWYsR0FGQXI0QixFQUFPLFFBRUhtNUIsRUFBTyxLQUFNLENBQ2ZWLEdBQWdCLEVBQ2hCLFlBRUcsR0FBZ0MsTUFBNUJ2NEIsRUFBTXFOLE9BQU84cUIsSUFJdEIsR0FGQXI0QixFQUFPLEtBRUhtNUIsRUFBTyxLQUFNLENBQ2ZWLEdBQWdCLEVBQ2hCLFlBSUZ6NEIsRUFBTyxNQUlULEdBQUlrNUIsRUFBUyxlQUFpQkgsRUFDNUIsTUFHRixHQUFnQyxNQUE1Qjc0QixFQUFNcU4sT0FBTzhxQixJQUErQixRQUFUcjRCLEVBQWdCLENBRXJELEdBQUltNUIsRUFBTyxLQUNULE1BR0YsR0FBZ0MsTUFBNUJqNUIsRUFBTXFOLE9BQU84cUIsR0FBb0IsQ0FDbkMsSUFBSTFoQixFQUFNMGlCLEVBQVMsS0FFbkIsSUFBYSxJQUFUMWlCLEVBQ0YsTUFDSyxHQUFJQSxJQUFRcWhCLEdBQ2pCLE9BQU9BLFFBRUosR0FBZ0MsTUFBNUI5M0IsRUFBTXFOLE9BQU84cUIsR0FBcUIsQ0FDM0MsSUFBSXNCLEVBQU9OLEVBQVMsS0FFcEIsSUFBYyxJQUFWTSxFQUNGLE1BQ0ssR0FBSUEsSUFBUzNCLEdBQ2xCLE9BQU9BLFFBRUosR0FBSWtCLEVBQVMsZUFDbEIsTUFLSlEsSUFLRixHQUZBQSxJQUVJbEIsRUFBYSxDQUNmLEtBQUlILEVBQVluNEIsRUFBTXBDLFFBQStCLE1BQXJCb0MsRUFBTW00QixJQUlwQyxPQUFPTCxHQUhQUSxHQUFjLEVBQ2RXLEVBQU8sS0FNWCxPQUFPVixFQUFnQlQsSUFDckJDLEtBQU1BLEVBQ05DLE1BQU9LLElDN1NQcUIsR0FBUSxNQUNSQyxHQUFNLE1BS1YsU0FBU25zQixHQUFReE4sRUFBT3lOLEdBRXRCLE9BRFl6TixFQUFNb0MsUUFBUXMzQixHQUFPanNCLEdBa0ZuQyxPQTVFQSxXQUVFLFNBQVNDLEVBQWdCQyxFQUFLM04sR0FDNUIsR0FBS0EsRUFBTTQ1QixXQUFXRixJQUF0QixDQVNBLElBTEEsSUFBSXpyQixFQUFXLEdBQ1hwTixFQUFRNjRCLEdBQU05N0IsT0FDZEEsRUFBU29DLEVBQU1wQyxRQUdYb0MsRUFBTTQ1QixXQUFXRCxHQUFLOTRCLElBQVVBLEVBQVFqRCxHQUFRLENBR3RELEdBRkFxUSxHQUFZak8sRUFBTXFOLE9BQU94TSxHQUVHLE9BQXhCYixFQUFNcU4sT0FBT3hNLEdBQ2YsT0FBTyxFQUdUQSxJQUdGLElBQUl3M0IsRUFBVSxHQUNWTixLQUtKLEdBQXlDLE1BQXJDLzNCLEVBQU1xTixPQUFPeE0sRUFBUTg0QixHQUFJLzdCLFFBQWlCLENBQzVDLElBQUlrSSxFQUFNK3pCLEdBQVU3NUIsRUFBT2EsRUFBUTg0QixHQUFJLzdCLFFBQ3ZDeTZCLEVBQVV2eUIsRUFBSWt5QixNQUNkRCxFQUFPanlCLEVBQUlpeUIsS0FhYixNQVJrQixhQUFkQSxFQUFLajRCLE9BQ1BpNEIsRUFBS2o0QixLQUFPLFFBS2RpNEIsRUFBSytCLFlBQWM3ckIsRUFBU25LLFFBQVEsT0FBUSxJQUFJQSxRQUFRLE9BQVEsVUFBT3BFLElBRW5FbUIsRUFBUWpELElBQ0grUCxFQUFJK3JCLEdBQVF6ckIsRUFBVzByQixHQUFNdEIsRUFBN0IxcUIsRUFDTDdOLEtBQU0sYUFDTk0sWUFDQW1FLE1BQ0U4SCxNQUFPLFFBQ1AxRyxZQUFhb3lCLE1BUXJCcnFCLEVBQWdCRixRQUFVQSxHQUMxQixJQUFJWSxFQUFTcE4sS0FBS29OLE9BRWRDLEVBQW1CRCxFQUFPbFEsVUFBVW1RLGlCQUNwQ0MsRUFBZ0JGLEVBQU9sUSxVQUFVb1EsY0FDckNELEVBQWlCMHJCLE1BQVFyc0IsRUFDekJZLEVBQWNFLE9BQU9GLEVBQWNsTSxRQUFRLE9BQVEsRUFBRyxTQUN0RCxJQUFJcU0sRUFBV3pOLEtBQUt5TixTQUVoQkEsSUFDYUEsRUFBU3ZRLFVBQVV3USxTQUV6QnNyQixVQUFZLFNBQVUvNUIsR0FDN0IsTUFBTyxNQUFNZ0MsT0FBT2pCLEtBQUtnQixJQUFJL0IsR0FBTW5CLEtBQUssSUFBSyxVQ3RGbkQsTUFBTTQ2QixHQUFRLElBQ1JPLEdBQVUsMkJBUWhCLFNBQVN6c0IsR0FBUXhOLEVBQU95TixHQUV0QixPQURjek4sRUFBTW9DLFFBQVFzM0IsR0FBT2pzQixHQTBHckMsT0FwR0EsV0FDRSxJQUFJa3NCLEVBQU0sTUFHVixTQUFTanNCLEVBQWdCQyxFQUFLM04sR0FDNUIsSUFBS2dCLEtBQUtpQyxRQUFRNEssTUFBUTdOLEVBQU00NUIsV0FBV0YsSUFDekMsT0FHRixJQUFJenJCLEVBQVcsR0FDWHBOLEVBQVEsRUFDWixNQUFNakQsT0FDSkEsR0FDRW9DLEVBR0VrTyxFQUFNUCxFQUFJTyxNQUNoQkEsRUFBSXZMLFFBQVUsRUFDZHVMLEVBQUl0TCxRQUFVLEVBRWQsSUFBSTZULEVBQU0sS0FFVixNQUFLQSxFQUFNelcsRUFBTWlHLE9BQU8sR0FBR2MsTUFBTWt6QixNQUFhcDVCLEVBQVFqRCxHQUtwRCxPQUpBcVEsR0FBWWpPLEVBQU1pRyxPQUFPLEVBQUd3USxFQUFJNVYsT0FDaEM4NEIsRUFBTWxqQixFQUFJLEdBQ1Y1VixHQUFTNFYsRUFBSTVWLE1BQVE4NEIsRUFBSS83QixPQU0zQixJQUFJeTZCLEVBQVUsR0FDVk4sS0FJSixHQUE0QixNQUF4Qi8zQixFQUFNcU4sT0FBT3hNLEdBQWdCLENBQy9CLE1BQU1pRixFQUFNK3pCLEdBQVU3NUIsRUFBT2EsR0FFN0JBLElBREF3M0IsRUFBVXZ5QixFQUFJa3lCLE9BQ0dwNkIsT0FDakJtNkIsRUFBT2p5QixFQUFJaXlCLEtBSWIsUUFBSWwzQixHQUFTakQsSUFDSitQLEVBQUkrckIsR0FBUXpyQixFQUFXMHJCLEVBQU10QixFQUE3QjFxQixFQUNMN04sS0FBTSxTQUNOTSxZQUNBbUUsTUFDRThILE1BQU8sU0FDUDFHLFlBQWFveUIsRUFDYnpyQixVQUFXMkIsRUFBU2pQLE1BQU0sS0FBSzBiLE9BQU9vYyxHQUFLQSxHQUFHbDRCLElBQUlzN0IsSUFDaEQsTUFBTTExQixFQUFPMDFCLEVBQU8vMUIsT0FDcEIsT0FDRXJFLEtBQU0sVUFDTjRLLFFBQVMsU0FDVDFGLFlBQ0VoRixNQUFPd0UsR0FFVHBFLFdBQ0VOLEtBQU0sT0FDTkUsTUFBT3dFLFVBV3JCa0osRUFBZ0JGLFFBQVVBLEdBQzFCLE1BQU1ZLE9BQ0pBLEdBQ0VwTixNQUVFcU4saUJBQ0pBLEdBQ0VELEVBQU9sUSxXQUNMb1EsY0FDSkEsR0FDRUYsRUFBT2xRLFVBQ1htUSxFQUFpQjhyQixPQUFTenNCLEVBQzFCWSxFQUFjRSxPQUFPRixFQUFjbE0sUUFBUSxPQUFRLEVBQUcsVUFDdEQsTUFBTXFNLFNBQ0pBLEdBQ0V6TixLQUVKLEdBQUl5TixFQUFVLENBQ1osTUFBTUMsU0FDSkEsR0FDRUQsRUFBU3ZRLFVBRWJ3USxFQUFTMHJCLFdBQWEsU0FBVW42QixHQUM5QixPQUFPeTVCLEdBQVExNEIsS0FBS2dCLElBQUkvQixHQUFNbkIsS0FBSyxJQUFNNjZCLEtDL0cvQyxNQUFNRCxHQUFRLGFBQ1JDLEdBQU0sU0FJWixTQUFTbnNCLEdBQVF4TixFQUFPeU4sR0FFdEIsT0FEY3pOLEVBQU1vQyxRQUFRczNCLEdBQU9qc0IsR0EyRXJDLE9BdkVBLFdBQ0UsU0FBUzRzQixFQUFlMXNCLEVBQUszTixHQUMzQixJQUFLZ0IsS0FBS2lDLFFBQVE0SyxLQUErQixJQUF4QjdOLEVBQU1zNkIsT0FBT1osSUFDcEMsT0FHRixJQUFJM0IsR0FDRnJULFdBQU9obEIsRUFHUDBELFFBQUkxRCxHQUVGczRCLEVBQVEsR0FFWixHQUFJaDRCLEVBQU1zNkIsT0FBT1gsSUFBTyxFQUFHLENBQ3pCLEdBQUkzNUIsRUFBTXM2QixPQUFPWCxJQUFPMzVCLEVBQU0rRyxNQUFNNHlCLElBQUssR0FBRy83QixPQUFTb0MsRUFBTXBDLFFBQTJFLE1BQWpFb0MsRUFBTXFOLE9BQU9yTixFQUFNczZCLE9BQU9YLElBQU8zNUIsRUFBTStHLE1BQU00eUIsSUFBSyxHQUFHLzdCLFFBQWlCLENBQ3pJLE1BQU1rSSxFQUFNK3pCLEdBQVU3NUIsRUFBT0EsRUFBTXM2QixPQUFPWCxJQUFPMzVCLEVBQU0rRyxNQUFNNHlCLElBQUssR0FBRy83QixRQUNyRW82QixFQUFRbHlCLEVBQUlreUIsTUFDWkQsRUFBT2p5QixFQUFJaXlCLEtBR2IsSUFBSWgxQixFQUFNL0MsRUFBTXM2QixPQUFPWCxJQWlCdkIsT0FmSTUyQixJQUFRL0MsRUFBTStHLE1BQU0yeUIsSUFBTyxHQUFHOTdCLFNBQ2hDbUYsR0FBTyxHQUdDNEssRUFBSTNOLEVBQU15RyxNQUFNLEVBQUd6RyxFQUFNczZCLE9BQU9YLElBQU8zNUIsRUFBTStHLE1BQU00eUIsSUFBSyxHQUFHLzdCLFFBQVVvNkIsRUFBckVycUIsRUFDUjdOLEtBQU0sV0FDTnlFLE1BQ0U4SCxNQUFPLFdBQ1AxRyxZQUFhb3lCLEVBQ2J6ckIsWUFDRXhNLEtBQU0sT0FDTkUsTUFBT0EsRUFBTXlHLE1BQU16RyxFQUFNK0csTUFBTTJ5QixJQUFPLEdBQUc5N0IsT0FBUW1GLFFBT3pELE9BQU8sRUFHVHMzQixFQUFlN3NCLFFBQVVBLEdBQ3pCLE1BQU1ZLE9BQ0pBLEdBQ0VwTixNQUNFNE4sZ0JBQ0pBLEdBQ0VSLEVBQU9sUSxXQUNMcVMsYUFDSkEsR0FDRW5DLEVBQU9sUSxVQUNYMFEsRUFBZ0IyckIsVUFBWUYsRUFDNUI5cEIsRUFBYS9CLE9BQU8rQixFQUFhbk8sUUFBUSxjQUFnQixFQUFHLEVBQUcsYUFDL0QsTUFBTXFNLFNBQ0pBLEdBQ0V6TixLQUVKLEdBQUl5TixFQUFVLENBQ1osTUFBTUMsU0FDSkEsR0FDRUQsRUFBU3ZRLFVBRWJ3USxFQUFTNnJCLFVBQVksU0FBVXQ2QixHQUM3QixZQUFhZSxLQUFLZ0IsSUFBSS9CLEdBQU1uQixLQUFLLFlDNUV2QyxNQUFNMDdCLElBQ0YsTUFDQSxNQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsUUFDQSxRQUNBLFFBQ0EsU0FHSiw4QkFBZ0MsaUJBRzVCQyxLQUFNLEVBQ05DLEtBQU0sRUFDTkMsV0FBWSxFQUNaQyxnQkFBaUIsR0FDakJDLFVBQVcsR0FDWEMsVUFBVyxHQUNYQyxNQUFPLEdBQ1BDLGlCQUFrQixHQUNsQkMsZUFBZ0IsR0FDaEJDLFlBQWEsR0FDYkMsVUFBVyxHQUNYQyxXQUFZLEdBQ1pDLGFBQWMsR0FDZEMsUUFBUyxHQUNUQyxRQUFTLEdBQ1RDLFFBQVMsR0FDVEMsVUFBVyxHQUNYQyxlQUFnQixHQUNoQkMsWUFBYSxHQUNiQyxrQkFBbUIsR0FDbkJDLGNBQWUsR0FDZkMsZ0JBQWlCLEdBQ2pCQyxnQkFBaUIsR0FDakJDLGdCQUFpQixHQUNqQkMsZ0JBQWlCLEdBQ2pCQyxxQkFBc0IsR0FDdEJDLGFBQWMsR0FDZEMsY0FBZSxHQUNmQyxjQUFlLElBQ2ZDLGNBQWUsSUFDZkMsY0FBZSxJQUNmQyxzQkFBdUIsNkJBSXZCQyxrQkFBbUIsR0FBTSxJQUN6QkMsZ0JBQWlCLEdBQU0sR0FBTSxHQUFNLEdBQU0sR0FBTSxHQUFNLElBQ3JEQyxvQkFBcUIsR0FBTSxHQUFNLEdBQU0sR0FBTSxHQUFNLEdBQU0sSUFDekRDLGVBQWdCLElBQU0sR0FBTSxJQUFNLElBQU0sSUFBTSxLQUM5Q0MsZUFBZ0IsR0FBTSxHQUFNLEdBQU0sR0FBTSxHQUFNLElBQzlDQyxlQUFnQixHQUFNLEdBQU0sR0FBTSxHQUFNLEdBQU0saUJBSTVCLFNBQVNDLEdBQzNCLE9BQU9BLEdBQU0sT0FBVUEsR0FBTSx1QkFHUCxTQUFTQSxHQUMvQixPQUFPQSxHQUFNLE9BQVVBLEdBQU0saUNBR0csU0FBU0MsRUFBS0MsR0FDOUMsT0FBd0IsTUFBaEJELEVBQU0sT0FBa0IsS0FBU0Msc0JBSWhCLFNBQVNGLEdBQ2xDLE9BQ1ksS0FBUEEsR0FBc0IsS0FBUEEsR0FBc0IsS0FBUEEsR0FBc0IsSUFBUEEsR0FBc0IsS0FBUEEsR0FBZUEsR0FBTSxHQUFRQSxHQUFNLElBQy9GQSxHQUFNLEtBQVFBLEdBQU0sMEJBSUUsU0FBU0EsR0FDcEMsT0FBUUEsR0FBTSxPQUFVQSxHQUFNLE9BQVd2QyxHQUFzQnA0QixRQUFRMjZCLElBQU8sUUN4RzlFRyw4QkFBK0Isb0NBQy9CQywwQkFBMkIsK0JBQzNCQyx1QkFBd0IsNEJBQ3hCQyw4Q0FBK0Msd0RBQy9DQyxxQkFBc0IsMEJBQ3RCQywwQkFBMkIsZ0NBQzNCQyx1QkFBd0IsNEJBQ3hCQyx3QkFBeUIsNEJBQ3pCQyx1Q0FBd0MsK0NBQ3hDQywrQkFBZ0Msc0NBQ2hDQyx3Q0FBeUMsK0NBQ3pDQyxrQkFBbUIsdUJBQ25CQyxtQ0FBb0MseUNBQ3BDQywrQkFBZ0Msb0NBQ2hDQyx3Q0FBeUMsOENBQ3pDQyxnREFBaUQsdURBQ2pEQyw0Q0FBNkMsbURBQzdDQyxpQkFBa0Isc0JBQ2xCQyxTQUFVLGFBQ1ZDLHNCQUF1QiwwQkFDdkJDLG1DQUFvQyx3Q0FDcENDLDJDQUE0QyxrREFDNUNDLDBEQUNJLG1FQUNKQywyQ0FBNEMsa0RBQzVDQywwQ0FBMkMsaURBQzNDQywwQ0FBMkMsaURBQzNDQywrQkFBZ0Msb0NBQ2hDQywrQkFBZ0Msb0NBQ2hDQyw4QkFBK0IsbUNBQy9CQyw4QkFBK0IsbUNBQy9CQyxtQkFBb0Isd0JBQ3BCQyx5QkFBMEIsNkJBQzFCQywrQkFBZ0MsdUNBQ2hDQyxhQUFjLGlCQUNkQyxjQUFlLGlCQUNmQyw0QkFBNkIsa0NBQzdCQyxhQUFjLGlCQUNkQyx5QkFBMEIsNkJBQzFCQyxXQUFZLGVBQ1pDLDJDQUE0QyxtREFDNUNDLHVCQUF3QiwyQkFDeEJDLDRCQUE2QixnQ0FDN0JDLHNDQUF1Qyw0Q0FDdkNDLDBCQUEyQiw4QkFDM0JDLCtCQUFnQyxtQ0FDaENDLG1DQUFvQyx5Q0FDcENDLG1CQUFvQix1QkFDcEJDLHlDQUEwQyxnREFDMUNDLG1CQUFvQixzQkFDcEJDLHFCQUFzQix5QkFDdEJDLGVBQWdCLGtCQUNoQkMsaUJBQWtCLG9CQUNsQkMsaUNBQWtDLHdDQUNsQ0Msc0NBQXVDLDhDQUN2Q0Msa0NBQW1DLHlDQUNuQ0MseUJBQTBCLCtCQUMxQkMsMEJBQTJCLCtCQUMzQkMsZ0NBQWlDLHVDQUNqQ0MscUJBQXNCLDBCQUN0QkMsbUNBQW9DLDZDQ3pEeEMsTUFBTUMsR0FBSUMsR0FBUUMsWUFHWkMsR0FBMkIsTUFxSmpDLGFBL0lJQyxjQUNJbGdDLEtBQUt5SSxLQUFPLEtBRVp6SSxLQUFLa0ssS0FBTyxFQUNabEssS0FBS21nQyxZQUFjLEVBQ25CbmdDLEtBQUtvZ0MsYUFBZSxFQUVwQnBnQyxLQUFLcWdDLFlBRUxyZ0MsS0FBS3NnQyxpQkFBa0IsRUFFdkJ0Z0MsS0FBS3VnQyxrQkFBbUIsRUFDeEJ2Z0MsS0FBS3dnQyxlQUFnQixFQUNyQnhnQyxLQUFLeWdDLGdCQUFrQlIsR0FHM0JDLFFBSUFBLFVBQ0lsZ0MsS0FBS3FnQyxTQUFTejhCLEtBQUs1RCxLQUFLbWdDLFlBQ3hCbmdDLEtBQUttZ0MsV0FBYW5nQyxLQUFLa0ssSUFHM0JnMkIsa0JBQWtCbkUsR0FFZCxHQUFJLzdCLEtBQUtrSyxNQUFRbEssS0FBS29nQyxZQUFhLENBQy9CLE1BQU1NLEVBQVMxZ0MsS0FBS3lJLEtBQUtsRCxXQUFXdkYsS0FBS2tLLElBQU0sR0FFL0MsR0FBSTYxQixHQUFRWSxnQkFBZ0JELEdBT3hCLE9BTEExZ0MsS0FBS2tLLE1BR0xsSyxLQUFLNGdDLFVBRUViLEdBQVFjLDBCQUEwQjlFLEVBQUkyRSxRQUtoRCxJQUFLMWdDLEtBQUt1Z0MsaUJBRVgsT0FEQXZnQyxLQUFLd2dDLGVBQWdCLEVBQ2RWLEdBQUVyRyxJQU1iLE9BRkF6NUIsS0FBSzhnQyxLQUFLQyxHQUFJM0Usd0JBRVBMLEVBR1htRSxrQkFDUWxnQyxLQUFLa0ssSUFBTWxLLEtBQUt5Z0Msa0JBQ2hCemdDLEtBQUtvZ0MsYUFBZXBnQyxLQUFLa0ssSUFDekJsSyxLQUFLeUksS0FBT3pJLEtBQUt5SSxLQUFLaU4sVUFBVTFWLEtBQUtrSyxLQUNyQ2xLLEtBQUtrSyxJQUFNLEVBQ1hsSyxLQUFLbWdDLFlBQWMsRUFDbkJuZ0MsS0FBS3FnQyxhQUliSCxNQUFNYyxFQUFPQyxHQUNMamhDLEtBQUt5SSxLQUNMekksS0FBS3lJLE1BQVF1NEIsRUFFYmhoQyxLQUFLeUksS0FBT3U0QixFQUdoQmhoQyxLQUFLb2dDLFlBQWNwZ0MsS0FBS3lJLEtBQUs3TCxPQUFTLEVBQ3RDb0QsS0FBS3dnQyxlQUFnQixFQUNyQnhnQyxLQUFLdWdDLGlCQUFtQlUsRUFHNUJmLHVCQUF1QmMsR0FDbkJoaEMsS0FBS3lJLEtBQU96SSxLQUFLeUksS0FBS2lOLFVBQVUsRUFBRzFWLEtBQUtrSyxJQUFNLEdBQUs4MkIsRUFBUWhoQyxLQUFLeUksS0FBS2lOLFVBQVUxVixLQUFLa0ssSUFBTSxFQUFHbEssS0FBS3lJLEtBQUs3TCxRQUV2R29ELEtBQUtvZ0MsWUFBY3BnQyxLQUFLeUksS0FBSzdMLE9BQVMsRUFDdENvRCxLQUFLd2dDLGVBQWdCLEVBR3pCTixVQUdJLEdBRkFsZ0MsS0FBS2tLLE1BRURsSyxLQUFLa0ssSUFBTWxLLEtBQUtvZ0MsWUFFaEIsT0FEQXBnQyxLQUFLd2dDLGVBQWlCeGdDLEtBQUt1Z0MsaUJBQ3BCVCxHQUFFckcsSUFHYixJQUFJc0MsRUFBSy83QixLQUFLeUksS0FBS2xELFdBQVd2RixLQUFLa0ssS0FJbkMsT0FBSWxLLEtBQUtzZ0MsaUJBQW1CdkUsSUFBTytELEdBQUVqRyxXQUNqQzc1QixLQUFLc2dDLGlCQUFrQixFQUN2QnRnQyxLQUFLNGdDLFVBQ0U1Z0MsS0FBS2toQyxXQUlabkYsSUFBTytELEdBQUVsRyxpQkFDVDU1QixLQUFLc2dDLGlCQUFrQixFQUNoQlIsR0FBRWpHLFlBR2I3NUIsS0FBS3NnQyxpQkFBa0IsRUFFbkJQLEdBQVFvQixZQUFZcEYsS0FDcEJBLEVBQUsvN0IsS0FBS29oQyxrQkFBa0JyRixJQU8zQkEsRUFBSyxJQUFRQSxFQUFLLEtBQVNBLElBQU8rRCxHQUFFakcsV0FBYWtDLElBQU8rRCxHQUFFbEcsaUJBQW9CbUMsRUFBSyxLQUFRQSxFQUFLLE9BR2pHLzdCLEtBQUtxaEMsK0JBQStCdEYsR0FHakNBLEdBR1htRSwrQkFBK0JuRSxHQUN2QmdFLEdBQVF1QixtQkFBbUJ2RixHQUMzQi83QixLQUFLOGdDLEtBQUtDLEdBQUk3RSwrQkFDUDZELEdBQVF3QixxQkFBcUJ4RixJQUNwQy83QixLQUFLOGdDLEtBQUtDLEdBQUk1RSwyQkFJdEIrRCxVQUNRbGdDLEtBQUtrSyxNQUFRbEssS0FBS21nQyxhQUNsQm5nQyxLQUFLbWdDLFdBQWFuZ0MsS0FBS3FnQyxTQUFTamxCLE1BQ2hDcGIsS0FBS2tLLE9BR1RsSyxLQUFLa0ssV0N0SkksSUFBSXMzQixhQUFhLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sS0FBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxF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QUFJbUssR0FDL0JDLGVBQ0VDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEdBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxLQUFPLEtBQU8sRUFBRyxLQUM1QkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLEtBQU8sRUFBRyxFQUFHLFNBQ3hCQyxLQUFRLEVBQUcsR0FBSyxFQUFHLEVBQUcsU0FDdEJDLEtBQVEsRUFBRyxLQUFPLEVBQUcsRUFBRyxTQUN4QkMsS0FBUSxFQUFHLEdBQUssRUFBRyxFQUFHLFNBQ3RCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsR0FDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxHQUMzQkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsR0FDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxHQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxNQUFRLEtBQU8sRUFBRyxFQUFHLEdBQzlCQyxNQUFTLE1BQVEsS0FBTyxFQUFHLEVBQUcsR0FDOUJDLE1BQVMsTUFBUSxLQUFPLEVBQUcsRUFBRyxHQUM5QkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE1BQVEsS0FBTyxFQUFHLEVBQUcsR0FDOUJDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE9BQVUsS0FBTyxLQUFPLEVBQUcsRUFBRyxPQUM5QkMsT0FBVSxLQUFPLEtBQU8sRUFBRyxFQUFHLE9BQzlCQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsSUFDekJDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsTUFBUSxLQUFPLEVBQUcsRUFBRyxRQUM5QkMsTUFBUyxNQUFRLEtBQU8sRUFBRyxFQUFHLFFBQzlCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN6QkMsTUFBUyxFQUFHLEtBQU8sRUFBRyxFQUFHLFFBQ3pCQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxRQUMvQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN6QkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUM1QkMsT0FBVSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzVCQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FFcENDLHVCQUNFQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDL0J6USxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLE9BQVMsT0FBUyxNQUFRLE9BQVMsUUFDMUNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDM0NDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLE9BQy9CQyxJQUFPLEVBQUcsT0FBUyxLQUFPLE9BQVMsUUFDbkNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3JDQyxJQUFPLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDM0NDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxTQUV2Q2lQLG1CQUNFQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CdEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekIxUixJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxP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QVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUN6QnRCLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I2QyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I1QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM2QyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I1QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE9BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QjZDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUN6QjVDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCNEMsSUFBTyxJQUFNLE9BQVMsT0FBUyxFQUFHLE1BQ2xDM0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLE1BQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDN1EsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCOFEsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQm9CLEtBQVEsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzFCQyxLQUFRLElBQU0sSUFBTSxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsSUFBTSxPQUFTLEVBQUcsRUFBRyxNQUM3QkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsRUFBRyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDOVQsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCK1QsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCcFUsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCcVUsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDakMzRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQjJELE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDakNsVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JtVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQmhWLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ2lWLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNqQ2hWLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ2lWLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNqQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsTUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCN1QsTUFBUyxPQUFTLElBQU0sRUFBRyxFQUFHLE1BQzlCOFQsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQzlULE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQytULE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzNCOVQsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzNCK1QsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNsQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCalUsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCa1UsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQzNCalUsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCRyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JFLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMzQjZULE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3ZDN1QsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDOFQsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakMxVCxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakMyVCxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDNVIsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDNlIsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JqUSxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ1csTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDc1AsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDblAsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDb1AsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLElBQU0sRUFBRyxFQUFHLFFBQ3hCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsT0FBVSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzVCQyxPQUFVLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDNUJDLE9BQVUsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUM1QkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUVwQ0MsbUJBQ0V6TSxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnNELElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0UsSUFBTyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsSUFBTSxPQUFTLEVBQUcsUUFDNUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CdEIsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CYyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I2QyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDN0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLElBQU8sSUFBTSxJQUFNLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsUUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEtBQU8sRUFBRyxRQUM5QkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLElBQ3RDQyxLQUFRLE9BQVMsT0FBUyxLQUFPLEVBQUcsUUFDcENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxNQUFRLEVBQUcsUUFDckM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsS0FBTyxFQUFHLFFBQ3BDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEtBQU8sRUFBRyxRQUNwQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsS0FBUSxJQUFNLE9BQVMsT0FBUyxFQUFHLFFBQ25Dd0ksS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdkksS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJFLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2hDRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxNQUN0Q0MsS0FBUSxFQUFHLE9BQVMsS0FBTyxFQUFHLFFBQzlCRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2hDQyxLQUFRLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDOUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxNQUN0QzlULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQytULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ3FVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDL0JDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUVuQ2tHLGVBQ0UzTSxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnNELElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0UsSUFBTyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsSUFBTSxPQUFTLEVBQUcsUUFDNUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CdEIsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CYyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNwQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUI2QyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLElBQU8sSUFBTSxJQUFNLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsUUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLEtBQy9CQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsS0FDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsTUFBUSxFQUFHLFFBQy9CQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsS0FDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLEtBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsS0FBUSxJQUFNLE9BQVMsT0FBUyxFQUFHLFFBQ25Dd0ksS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdkksS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJFLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxLQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0QzlULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQytULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ3FVLEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxNQUFTLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQzlVLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUU3QmliLGdCQUNFQyxJQUFPLEVBQUcsRUFBRyxFQUFHLEVBQUcsS0FDbkI3TSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QnNELElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLElBQzVCQyxJQUFPLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUJ2RCxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxJQUFNLEVBQUcsRUFBRyxJQUN0QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDekJ0QixJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJjLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CNkMsSUFBTyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQzdCNUMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDNkMsSUFBTyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQzdCNUMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCNkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCdlUsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLEtBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsS0FBTyxFQUFHLEtBQzdCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJrUSxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDekI1QyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QjRDLElBQU8sSUFBTSxPQUFTLE9BQVMsRUFBRyxJQUNsQzNDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzdRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQjhRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJvQixLQUFRLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLElBQzFCQyxLQUFRLElBQU0sT0FBUyxFQUFHLEVBQUcsSUFDN0I0SSxLQUFRLEVBQUcsRUFBRyxFQUFHLEVBQUcsS0FDcEJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzVJLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzBJLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ3pJLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM5VCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUIrVCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJwVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJxVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxHQUNqQzNELE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCMkQsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDc0csTUFBUyxFQUFHLElBQU0sRUFBRyxFQUFHLE9BQ3hCckcsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzNCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDakNsVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JtVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3ZDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQmhWLE9BQVUsT0FBUyxPQUFTLEVBQUcs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LE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsR0FDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxHQUMvQkMsTUFBUyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQy9CQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxRQUMvQkMsTUFBUyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQy9CQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IxUyxNQUFTLEtBQU8sSUFBTSxFQUFHLEVBQUcsTUFDNUIyUyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDbEM1UixPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbEM2UixPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDbENtQyxNQUFTLEtBQU8sS0FBTyxFQUFHLEVBQUcsSUFDN0JDLE1BQVMsSUFBTSxHQUFLLEVBQUcsRUFBRyxNQUMxQkMsT0FBVSxJQUFNLElBQU0sRUFBRyxFQUFHLE9BQzVCQyxPQUFVLEdBQUssSUFBTSxFQUFHLEVBQUcsT0FDM0JyQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JqUSxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNsQ21TLE1BQVMsS0FBTyxLQUFPLEVBQUcsRUFBRyxNQUM3QkMsTUFBUyxLQUFPLEtBQU8sRUFBRyxFQUFHLE1BQzdCelIsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDc1AsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2xDblAsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDb1AsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLElBQU0sRUFBRyxFQUFHLFFBQ3hCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsT0FBVSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzVCQyxPQUFVLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDNUJ5QixPQUFVLEtBQU8sS0FBTyxFQUFHLEVBQUcsTUFDOUJDLE9BQVUsS0FBTyxLQUFPLEVBQUcsRUFBRyxNQUM5QkMsT0FBVSxLQUFPLEtBQU8sRUFBRyxFQUFHLE9BQzlCQyxPQUFVLEtBQU8sS0FBTyxFQUFHLEVBQUcsT0FDOUJDLE9BQVUsS0FBTyxLQUFPLEVBQUcsRUFBRyxPQUM5QkMsT0FBVSxLQUFPLEtBQU8sRUFBRyxFQUFHLE9BQzlCQyxPQUFVLEtBQU8sS0FBTyxFQUFHLEVBQUcsT0FDOUJDLE9BQVUsS0FBTyxLQUFPLEVBQUcsRUFBRyxPQUM5QkMsT0FBVSxLQUFPLEtBQU8sRUFBRyxFQUFHLE9BQzlCaEMsT0FBVSxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzVCQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBRXBDOEIsbUJBQ0VqZixJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnFRLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxPQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDMUJDLEtBQVEsT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNyQzdRLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQzhRLEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENnRCxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ2tJLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE9BQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsT0FDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxNQUNoQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLE9BQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FFN0JDLGVBQ0VoaEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLEtBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNxUSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDZ0QsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsSUFBTSxPQUFTLFFBQ25DQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDdENrSSxLQUFRLEVBQUcsT0FBUyxNQUFRLE9BQVMsT0FDckNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLE9BQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxPQUM1Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE1BQVEsT0FBUyxRQUNyQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN2Q0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBRW5DRSxnQkFDRWpoQixJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsS0FDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxPQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ3FRLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0QzdRLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQzhRLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENnRCxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxJQUFNLE9BQVMsUUFDbkNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxPQUN0Q2tJLEtBQVEsRUFBRyxPQUFTLE1BQVEsT0FBUyxPQUNyQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsT0FDNUNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLE9BQzVDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsTUFBUSxPQUFTLFFBQ3JDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3ZDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFFbkNHLGtCQUNFdlEsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJzRCxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxJQUFNLEVBQUcsRUFBRyxLQUM1QkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLFNBQzVCdkQsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsSUFBTSxFQUFHLEVBQUcsS0FDdEJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLEtBQ3pCdEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsS0FDbEMzQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsS0FDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI4USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdUIsS0FBUSxJQUFNLE9BQVMsRUFBRyxFQUFHLEtBQzdCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQm1NLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQmpNLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMxQlEsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCRyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM5VCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUIrVCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkcsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQnFVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IyRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUU3QmdLLG9CQUNFelEsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JzRCxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sT0FBUyxJQUFNLE9BQVMsRUFBRyxJQUNsQ0MsSUFBTyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsSUFBTSxPQUFTLEVBQUcsSUFDNUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxLQUFPLE9BQVMsRUFBRyxFQUFHLFFBQzdCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLElBQy9CdEIsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CYyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sS0FBTyxPQUFTLE9BQVMsRUFBRyxRQUNuQ0MsS0FBUSxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I2QyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sS0FBTyxPQUFTLE9BQVMsRUFBRyxRQUNuQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQy9CQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsSUFDOUI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsSUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsSUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENDLEtBQVEsT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNyQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsS0FBUSxJQUFNLE9BQVMsT0FBUyxFQUFHLElBQ25DQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkUsS0FBUSxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCUSxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENHLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0QzlULEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxJQUMvQitULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ3FVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLEdBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUVuQ2lLLHFCQUNFMVEsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJzRCxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxJQUFNLEVBQUcsRUFBRyxJQUM1QkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzVCdkQsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsSUFBTSxFQUFHLEVBQUcsSUFDdEJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxLQUFPLE9BQVMsRUFBRyxFQUFHLFFBQzdCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLElBQ3pCdEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sS0FBTyxPQUFTLEVBQUcsRUFBRyxRQUM3QkMsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzFCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sS0FBTyxPQUFTLEVBQUcsRUFBRyxRQUM3QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE9BQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDN0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsSUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsSUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI4USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdUIsS0FBUSxJQUFNLE9BQVMsRUFBRyxFQUFHLElBQzdCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkUsS0FBUSxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCUSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJHLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzlULEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQitULEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQnFVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLEdBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IyRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUU3QmtLLGtCQUNFdGhCLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxNQUFRLEVBQUcsUUFDMUJDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sT0FBUyxHQUFLLE9BQVMsRUFBRyxTQUNqQ0MsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxTQUMzQkMsSUFBTyxFQUFHLEdBQUssTUFBUSxFQUFHLE9BQzFCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxTQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsS0FDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFD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LElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDL0I2QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM1QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM2QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM1QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmtRLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQjZDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQjVDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCNEMsSUFBTyxPQUFTLEVBQUcsRUFBRyxFQUFHLE1BQ3pCOFAsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCelMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDN1EsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCOFEsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQm9CLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQjJQLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQi9HLEtBQVEsRUFBRyxFQUFHLEVBQUcsRUFBRyxNQUNwQnpJLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkUsS0FBUSxPQUFTLEVBQUcsRUFBRyxFQUFHLE1BQzFCUSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJHLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcs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QUFZLDZCQUN4QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxZQUFhLDZCQWV6QixJQUFJNkYs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QVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWcnFELElBQVEsS0FFUkMsSUFBUSxLQUVSRixJQUFRLEtBRVJ1cUQsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVY1cUQsSUFBUSxLQUVSNnFELElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxNQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWM29DLElBQVEsS0FFUjRvQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxL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
diff --git a/tohtml.js b/tohtml.js
index 7811113..e6d5fee 100644
--- a/tohtml.js
+++ b/tohtml.js
@@ -58,7 +58,7 @@ function toHTML(data, fnc) {
}})
.use(highlight)
.use(iframes, {
- // this key corresponds to the hostname: !(http://hostname/foo)
+ // This key corresponds to the hostname: !(http://hostname/foo)
// the config associated to this hostname will apply to any iframe
// with a matching hostname
'www.youtube.com': {